Skip to content

Instantly share code, notes, and snippets.

@rskvp93
Created July 18, 2024 15:27
Show Gist options
  • Save rskvp93/0ea92e6028903cbc8bfacf37f6bd9f66 to your computer and use it in GitHub Desktop.
Save rskvp93/0ea92e6028903cbc8bfacf37f6bd9f66 to your computer and use it in GitHub Desktop.
Substack_base-6fd039df.js
This file has been truncated, but you can view the full file.
var vf = Object.defineProperty,
xf = Object.defineProperties;
var yf = Object.getOwnPropertyDescriptors;
var Ts = Object.getOwnPropertySymbols;
var Ni = Object.prototype.hasOwnProperty,
Mi = Object.prototype.propertyIsEnumerable;
var Xa = Math.pow,
Ii = (t, e, n) => e in t ? vf(t, e, {
enumerable: !0,
configurable: !0,
writable: !0,
value: n
}) : t[e] = n,
S = (t, e) => {
for (var n in e || (e = {})) Ni.call(e, n) && Ii(t, n, e[n]);
if (Ts)
for (var n of Ts(e)) Mi.call(e, n) && Ii(t, n, e[n]);
return t
},
P = (t, e) => xf(t, yf(e));
var st = (t, e) => {
var n = {};
for (var s in t) Ni.call(t, s) && e.indexOf(s) < 0 && (n[s] = t[s]);
if (t != null && Ts)
for (var s of Ts(t)) e.indexOf(s) < 0 && Mi.call(t, s) && (n[s] = t[s]);
return n
};
var N = (t, e, n) => new Promise((s, a) => {
var o = c => {
try {
i(n.next(c))
} catch (l) {
a(l)
}
},
r = c => {
try {
i(n.throw(c))
} catch (l) {
a(l)
}
},
i = c => c.done ? s(c.value) : Promise.resolve(c.value).then(o, r);
i((n = n.apply(t, e)).next())
});
import {
dO as wf,
p as U,
H as J,
b0 as de,
aA as we,
bO as ge,
h as z,
ck as In,
c1 as kf,
eT as cr,
i_ as Un,
e8 as ya,
cQ as Nt,
eP as _f,
bt as wa,
eM as Cf,
bq as lr,
y as p,
t as se,
E as ae,
i$ as Ef,
j0 as Af,
g5 as Sf,
fj as Tf,
cP as it,
bn as Ue,
dY as ur,
j1 as Fl,
j as rt,
gs as jl,
gt as pr,
h5 as Df,
fZ as ka,
j2 as lt,
j3 as $l,
j4 as Ul,
i as yt,
c as qe,
U as Ut,
ah as Kn,
Y as q,
g_ as Oi,
hh as Li,
R as If,
bC as Vl,
dh as Hl,
df as Nf,
j5 as Gl,
j6 as Mf,
j7 as Of,
bh as dr,
fc as ce,
O as _n,
G as Cn,
j8 as Wl,
$ as Jl,
iZ as Yl,
j9 as Kl,
fC as Lf,
ja as Rf,
ge as mr,
a8 as Xl,
jb as Zl,
jc as Pf,
e$ as Bf,
fA as fr,
ga as zf,
f_ as Ri,
jd as Ds,
hZ as hr,
je as Ql,
hX as Is,
fi as qf,
jf as Ff,
h_ as Bo,
h$ as zo,
dS as Ks,
M as eu,
F as En,
jg as os,
cs as tu,
fP as jf,
jh as Ns,
J as Ft,
A as be,
g3 as Za,
bM as Xs,
m as nu,
cc as _a,
ji as $f,
jj as Uf,
jk as Vf,
bz as Xn,
c3 as Hf,
V as Gf,
e as su,
dA as au,
jl as Wf,
eA as Jf,
d as Yf,
jm as Pi,
jn as Kf,
jo as Xf,
di as Zf,
gQ as Zs,
eZ as Qf,
jp as Qs,
aY as eh,
l as Bi,
bJ as th,
u as ou,
hz as ru,
it as nh,
bW as Qa,
_ as sh,
jq as ah,
cS as oh,
bR as zi,
jr as rh,
js as ih,
jt as ch,
g0 as lh,
v as qi
} from "./tracking-5779d19a.js";
import {
N as Qt,
m as en,
t as uh,
c as Ee,
d as Je,
n as iu,
M as cu,
e as gr,
f as qo,
h as wt,
b as Ca,
F as Kt,
i as lu,
j as uu,
k as Ea,
l as Pe,
R as kt,
o as _t,
p as Fo,
q as ph,
r as pu,
s as du,
v as jo,
w as dh,
x as mh,
y as fh,
z as St,
C as hh,
G as gh,
H as eo,
I as bh,
J as vh,
K as xh,
L as yh,
O as gt,
Q as wh,
U as ea,
V as kh,
W as _h,
X as Ch,
D as mu,
P as fu,
T as hu,
Y as Eh,
Z as Ah,
_ as gu,
$ as Sh,
A as Th,
a0 as Dh,
a1 as Ih,
a2 as Nh,
a3 as Mh,
a4 as Fi,
a5 as Ms,
a6 as ji,
a7 as Oh,
a8 as Lh,
E as Rh,
a9 as Ph
} from "./autocomplete_results-829164f2.js";
import {
u as ue,
l as bu,
F as Y,
f as ta,
j as br,
T as X,
a as ne,
S as vr,
B as Aa,
c as fe,
h as ft,
O as Ae,
i as vu,
b as xe,
k as Bh,
w as zh,
n as qh,
M as mn
} from "./FlexBox-8b7f0d6c.js";
import {
n as Fh,
i as $i
} from "./share_dialog-f2ebc006.js";
import {
M as $t
} from "./mousetrap-6acb8cb1.js";
import {
u as jh,
r as Ui,
H as xu,
h as $h
} from "./index-5fa16c7e.js";
import {
r as he,
j as Uh,
M as ds
} from "./sortBy-53166f8e.js";
import {
D as yu,
z as wu,
B as Vh,
G as Hh,
I as Gh,
J as ku,
K as Wh,
L as bt,
A as An,
N as xr,
c as Jh,
O as Yh,
Q as Me,
V as Kh,
W as Xh,
X as Zh,
Y as _u,
i as Qh,
Z as eg
} from "./post-72fb30bd.js";
import {
B as Vs
} from "./button-8ee58a9a.js";
import "./_sentry-release-injection-file-9254565a.js";
import {
t as Cu,
a as Sa,
b as ms,
M as fs,
s as tg
} from "./Modal-83447875.js";
import {
P as Eu
} from "./modal-3f58ef3d.js";
import {
L as ng,
T as sg
} from "./TrashIcon-618c7548.js";
import {
T as Vi
} from "./textarea-718e4ef4.js";
import {
_ as Z,
d as ag,
u as $o,
R as og
} from "./responsive_img-3c51e57a.js";
import {
e as Uo
} from "./encodeHtmlEntities-35ab9c34.js";
import {
a as Fe,
T as rg
} from "./util-typed-d6d3f2ff.js";
import {
c as pe,
X as yr
} from "./x-933ea65f.js";
import {
c as ig
} from "./_arrayIncludesWith-27de2814.js";
import {
_ as cg
} from "./toNumber-f902633e.js";
import {
as as Vo,
at as Hi,
au as mt,
av as lg,
aw as ug,
T as Au,
q as Gi,
I as Ho,
ax as Vt,
ay as Jn,
aq as fn,
e as Su,
u as pg,
c as dg,
az as mg,
aA as fg,
aB as Wi,
aC as Ji,
aD as hg
} from "./Attachments-26bf7580.js";
import {
b as Tu,
H as gg,
u as Du,
d as bg,
c as vg
} from "./AlertDialog-f1c63885.js";
import {
d as wr
} from "./debounce-c95d884c.js";
import {
p as na
} from "./pick-971b5e11.js";
import {
V as Ta,
U as Iu,
M as xg,
P as yg,
b as wg,
l as kg,
c as _g,
d as Cg,
e as Eg,
f as Ag,
g as Sg,
h as Tg
} from "./video_editor-b834fb32.js";
import {
A as Dg
} from "./AuditionPlayer-59a31fcb.js";
import {
F as Nu
} from "./FilePicker-c9d24a53.js";
import {
M as vn,
a as Mt,
b as to,
S as Ig
} from "./Menu-8ddb0f91.js";
import {
S as Sn
} from "./Progress-d3ff4e14.js";
import {
S as Ng,
U as Mg,
c as hn
} from "./VideoVerticalMenu-e627c680.js";
import {
D as Mu
} from "./download-dea01c9e.js";
import {
M as Og
} from "./menu-46e3f3ec.js";
import {
c as Lg
} from "./tiktok-27b6efdb.js";
import {
a as kr,
B as Ou,
b as _r,
C as Lu,
c as Ru,
I as Pu,
L as Bu,
O as Cr,
S as zu
} from "./index-2d69285b.js";
import {
H as qu
} from "./index-e42bf16e.js";
import {
m as Rg,
t as Er,
bd as Pg,
aJ as Bg,
bA as zg,
a as qg,
d as Fg
} from "./homepage_hooks-258e84da.js";
import {
M as jg,
m as $g
} from "./mention-a2befbf1.js";
import {
H as Ug,
u as Vg,
a as Yi,
C as sa
} from "./HoverCard-92fb7948.js";
import {
D as Hg,
a as Gg
} from "./Divider-a2a4ef65.js";
import {
I as Wg
} from "./ChooseGeneratedImageModal-21455ba2.js";
import {
T as Pt
} from "./Tooltip-2b2b71ff.js";
import {
P as Jg
} from "./PubAccentTheme-7a3e2ba8.js";
import {
q as Ki
} from "./transition-d7aff1cb.js";
import {
a as Yg
} from "./user-76406467.js";
import "./Divider.module-10da8075.js";
import {
k as Xi
} from "./keyBy-15cc8c09.js";
import {
o as Kg
} from "./omit-7d67b4d6.js";
import {
T as rs
} from "./TextInput-f605802a.js";
import {
S as Xg
} from "./Select-169c9194.js";
import {
B as Zg,
I as Qg,
S as eb,
L as tb,
T as nb
} from "./index-6384ea2c.js";
import {
L as Fu
} from "./link-e8367f9e.js";
import {
L as sb
} from "./list-5d68e69a.js";
import {
C as Ar
} from "./chevron-down-0a2aacdb.js";
import {
S as ab
} from "./Portal-64a61d16.js";
import {
C as ob
} from "./candlestick-chart-3c1cfe3a.js";
import {
a as ju,
M as $u
} from "./MathJax-f8068bcc.js";
import {
S as rb
} from "./square-pen-04312085.js";
import {
P as Zi
} from "./Popover-e1be8edd.js";
import {
ImageViewerModal as ib
} from "./ImageViewerModal-93648707.js";
import {
I as cb
} from "./info-4fcf7ea1.js";
import {
R as Uu
} from "./Recipe-d18f4761.js";
(function() {
try {
var t = typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : {},
e = new Error().stack;
e && (t._sentryDebugIds = t._sentryDebugIds || {}, t._sentryDebugIds[e] = "713640c8-09c6-4372-9ff7-1f3e5ac332af", t._sentryDebugIdIdentifier = "sentry-dbid-713640c8-09c6-4372-9ff7-1f3e5ac332af")
} catch (n) {}
})();
/**
* @license lucide-preact v0.323.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/
const lb = pe("AlignCenter", [
["line", {
x1: "21",
x2: "3",
y1: "6",
y2: "6",
key: "1fp77t"
}],
["line", {
x1: "17",
x2: "7",
y1: "12",
y2: "12",
key: "rsh8ii"
}],
["line", {
x1: "19",
x2: "5",
y1: "18",
y2: "18",
key: "1t0tuv"
}]
]);
/**
* @license lucide-preact v0.323.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/
const ub = pe("AlignRight", [
["line", {
x1: "21",
x2: "3",
y1: "6",
y2: "6",
key: "1fp77t"
}],
["line", {
x1: "21",
x2: "9",
y1: "12",
y2: "12",
key: "1uyos4"
}],
["line", {
x1: "21",
x2: "7",
y1: "18",
y2: "18",
key: "1g9eri"
}]
]);
/**
* @license lucide-preact v0.323.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/
const pb = pe("Asterisk", [
["path", {
d: "M12 6v12",
key: "1vza4d"
}],
["path", {
d: "M17.196 9 6.804 15",
key: "1ah31z"
}],
["path", {
d: "m6.804 9 10.392 6",
key: "1b6pxd"
}]
]);
/**
* @license lucide-preact v0.323.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/
const db = pe("CodeSquare", [
["rect", {
width: "18",
height: "18",
x: "3",
y: "3",
rx: "2",
key: "afitv7"
}],
["path", {
d: "m10 10-2 2 2 2",
key: "p6et6i"
}],
["path", {
d: "m14 14 2-2-2-2",
key: "m075q2"
}]
]);
/**
* @license lucide-preact v0.323.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/
const mb = pe("Croissant", [
["path", {
d: "m4.6 13.11 5.79-3.21c1.89-1.05 4.79 1.78 3.71 3.71l-3.22 5.81C8.8 23.16.79 15.23 4.6 13.11Z",
key: "1ozxlb"
}],
["path", {
d: "m10.5 9.5-1-2.29C9.2 6.48 8.8 6 8 6H4.5C2.79 6 2 6.5 2 8.5a7.71 7.71 0 0 0 2 4.83",
key: "ffuyb5"
}],
["path", {
d: "M8 6c0-1.55.24-4-2-4-2 0-2.5 2.17-2.5 4",
key: "osnpzi"
}],
["path", {
d: "m14.5 13.5 2.29 1c.73.3 1.21.7 1.21 1.5v3.5c0 1.71-.5 2.5-2.5 2.5a7.71 7.71 0 0 1-4.83-2",
key: "1vubaw"
}],
["path", {
d: "M18 16c1.55 0 4-.24 4 2 0 2-2.17 2.5-4 2.5",
key: "wxr772"
}]
]);
/**
* @license lucide-preact v0.323.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/
const fb = pe("DollarSign", [
["line", {
x1: "12",
x2: "12",
y1: "2",
y2: "22",
key: "7eqyqh"
}],
["path", {
d: "M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6",
key: "1b0p4s"
}]
]);
/**
* @license lucide-preact v0.323.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/
const hb = pe("Expand", [
["path", {
d: "m21 21-6-6m6 6v-4.8m0 4.8h-4.8",
key: "1c15vz"
}],
["path", {
d: "M3 16.2V21m0 0h4.8M3 21l6-6",
key: "1fsnz2"
}],
["path", {
d: "M21 7.8V3m0 0h-4.8M21 3l-6 6",
key: "hawz9i"
}],
["path", {
d: "M3 7.8V3m0 0h4.8M3 3l6 6",
key: "u9ee12"
}]
]);
/**
* @license lucide-preact v0.323.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/
const gb = pe("Feather", [
["path", {
d: "M20.24 12.24a6 6 0 0 0-8.49-8.49L5 10.5V19h8.5z",
key: "u4sw5n"
}],
["line", {
x1: "16",
x2: "2",
y1: "8",
y2: "22",
key: "1c47m2"
}],
["line", {
x1: "17.5",
x2: "9",
y1: "15",
y2: "15",
key: "2fj3pr"
}]
]);
/**
* @license lucide-preact v0.323.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/
const bb = pe("Heading1", [
["path", {
d: "M4 12h8",
key: "17cfdx"
}],
["path", {
d: "M4 18V6",
key: "1rz3zl"
}],
["path", {
d: "M12 18V6",
key: "zqpxq5"
}],
["path", {
d: "m17 12 3-2v8",
key: "1hhhft"
}]
]);
/**
* @license lucide-preact v0.323.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/
const vb = pe("Heading2", [
["path", {
d: "M4 12h8",
key: "17cfdx"
}],
["path", {
d: "M4 18V6",
key: "1rz3zl"
}],
["path", {
d: "M12 18V6",
key: "zqpxq5"
}],
["path", {
d: "M21 18h-4c0-4 4-3 4-6 0-1.5-2-2.5-4-1",
key: "9jr5yi"
}]
]);
/**
* @license lucide-preact v0.323.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/
const xb = pe("Heading3", [
["path", {
d: "M4 12h8",
key: "17cfdx"
}],
["path", {
d: "M4 18V6",
key: "1rz3zl"
}],
["path", {
d: "M12 18V6",
key: "zqpxq5"
}],
["path", {
d: "M17.5 10.5c1.7-1 3.5 0 3.5 1.5a2 2 0 0 1-2 2",
key: "68ncm8"
}],
["path", {
d: "M17 17.5c2 1.5 4 .3 4-1.5a2 2 0 0 0-2-2",
key: "1ejuhz"
}]
]);
/**
* @license lucide-preact v0.323.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/
const yb = pe("Heading4", [
["path", {
d: "M4 12h8",
key: "17cfdx"
}],
["path", {
d: "M4 18V6",
key: "1rz3zl"
}],
["path", {
d: "M12 18V6",
key: "zqpxq5"
}],
["path", {
d: "M17 10v4h4",
key: "13sv97"
}],
["path", {
d: "M21 10v8",
key: "1kdml4"
}]
]);
/**
* @license lucide-preact v0.323.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/
const wb = pe("Heading5", [
["path", {
d: "M4 12h8",
key: "17cfdx"
}],
["path", {
d: "M4 18V6",
key: "1rz3zl"
}],
["path", {
d: "M12 18V6",
key: "zqpxq5"
}],
["path", {
d: "M17 13v-3h4",
key: "1nvgqp"
}],
["path", {
d: "M17 17.7c.4.2.8.3 1.3.3 1.5 0 2.7-1.1 2.7-2.5S19.8 13 18.3 13H17",
key: "2nebdn"
}]
]);
/**
* @license lucide-preact v0.323.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/
const kb = pe("Heading6", [
["path", {
d: "M4 12h8",
key: "17cfdx"
}],
["path", {
d: "M4 18V6",
key: "1rz3zl"
}],
["path", {
d: "M12 18V6",
key: "zqpxq5"
}],
["circle", {
cx: "19",
cy: "16",
r: "2",
key: "15mx69"
}],
["path", {
d: "M20 10c-2 2-3 3.5-3 6",
key: "f35dl0"
}]
]);
/**
* @license lucide-preact v0.323.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/
const _b = pe("Heading", [
["path", {
d: "M6 12h12",
key: "8npq4p"
}],
["path", {
d: "M6 20V4",
key: "1w1bmo"
}],
["path", {
d: "M18 20V4",
key: "o2hl4u"
}]
]);
/**
* @license lucide-preact v0.323.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/
const Cb = pe("HelpCircle", [
["circle", {
cx: "12",
cy: "12",
r: "10",
key: "1mglay"
}],
["path", {
d: "M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",
key: "1u773s"
}],
["path", {
d: "M12 17h.01",
key: "p32p05"
}]
]);
/**
* @license lucide-preact v0.323.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/
const Eb = pe("ImageOff", [
["line", {
x1: "2",
x2: "22",
y1: "2",
y2: "22",
key: "a6p6uj"
}],
["path", {
d: "M10.41 10.41a2 2 0 1 1-2.83-2.83",
key: "1bzlo9"
}],
["line", {
x1: "13.5",
x2: "6",
y1: "13.5",
y2: "21",
key: "1q0aeu"
}],
["line", {
x1: "18",
x2: "21",
y1: "12",
y2: "15",
key: "5mozeu"
}],
["path", {
d: "M3.59 3.59A1.99 1.99 0 0 0 3 5v14a2 2 0 0 0 2 2h14c.55 0 1.052-.22 1.41-.59",
key: "mmje98"
}],
["path", {
d: "M21 15V5a2 2 0 0 0-2-2H9",
key: "43el77"
}]
]);
/**
* @license lucide-preact v0.323.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/
const Qi = pe("Indent", [
["polyline", {
points: "3 8 7 12 3 16",
key: "f3rxhf"
}],
["line", {
x1: "21",
x2: "11",
y1: "12",
y2: "12",
key: "1fxxak"
}],
["line", {
x1: "21",
x2: "11",
y1: "6",
y2: "6",
key: "asgu94"
}],
["line", {
x1: "21",
x2: "11",
y1: "18",
y2: "18",
key: "13dsj7"
}]
]);
/**
* @license lucide-preact v0.323.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/
const Ab = pe("Maximize2", [
["polyline", {
points: "15 3 21 3 21 9",
key: "mznyad"
}],
["polyline", {
points: "9 21 3 21 3 15",
key: "1avn1i"
}],
["line", {
x1: "21",
x2: "14",
y1: "3",
y2: "10",
key: "ota7mn"
}],
["line", {
x1: "3",
x2: "10",
y1: "21",
y2: "14",
key: "1atl0r"
}]
]);
/**
* @license lucide-preact v0.323.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/
const Sb = pe("MessageSquareQuote", [
["path", {
d: "M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",
key: "1lielz"
}],
["path", {
d: "M8 12a2 2 0 0 0 2-2V8H8",
key: "1jfesj"
}],
["path", {
d: "M14 12a2 2 0 0 0 2-2V8h-2",
key: "1dq9mh"
}]
]);
/**
* @license lucide-preact v0.323.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/
const Go = pe("Mic", [
["path", {
d: "M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z",
key: "131961"
}],
["path", {
d: "M19 10v2a7 7 0 0 1-14 0v-2",
key: "1vc78b"
}],
["line", {
x1: "12",
x2: "12",
y1: "19",
y2: "22",
key: "x3vr5v"
}]
]);
/**
* @license lucide-preact v0.323.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/
const Tb = pe("MoveDiagonal2", [
["polyline", {
points: "5 11 5 5 11 5",
key: "ncfzxk"
}],
["polyline", {
points: "19 13 19 19 13 19",
key: "1mk7hk"
}],
["line", {
x1: "5",
x2: "19",
y1: "5",
y2: "19",
key: "mcyte3"
}]
]);
/**
* @license lucide-preact v0.323.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/
const Db = pe("Pilcrow", [
["path", {
d: "M13 4v16",
key: "8vvj80"
}],
["path", {
d: "M17 4v16",
key: "7dpous"
}],
["path", {
d: "M19 4H9.5a4.5 4.5 0 0 0 0 9H13",
key: "sh4n9v"
}]
]);
/**
* @license lucide-preact v0.323.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/
const Ib = pe("PlaySquare", [
["rect", {
width: "18",
height: "18",
x: "3",
y: "3",
rx: "2",
key: "afitv7"
}],
["path", {
d: "m9 8 6 4-6 4Z",
key: "f1r3lt"
}]
]);
/**
* @license lucide-preact v0.323.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/
const Nb = pe("Redo", [
["path", {
d: "M21 7v6h-6",
key: "3ptur4"
}],
["path", {
d: "M3 17a9 9 0 0 1 9-9 9 9 0 0 1 6 2.3l3 2.7",
key: "1kgawr"
}]
]);
/**
* @license lucide-preact v0.323.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/
const Mb = pe("Sigma", [
["path", {
d: "M18 7V4H6l6 8-6 8h12v-3",
key: "zis8ev"
}]
]);
/**
* @license lucide-preact v0.323.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/
const Ob = pe("Undo", [
["path", {
d: "M3 7v6h6",
key: "1v2h90"
}],
["path", {
d: "M21 17a9 9 0 0 0-9-9 9 9 0 0 0-6 2.3L3 13",
key: "1r6uu6"
}]
]);
/**
* @license lucide-preact v0.323.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/
const Lb = pe("Wand", [
["path", {
d: "M15 4V2",
key: "z1p9b7"
}],
["path", {
d: "M15 16v-2",
key: "px0unx"
}],
["path", {
d: "M8 9h2",
key: "1g203m"
}],
["path", {
d: "M20 9h2",
key: "19tzq7"
}],
["path", {
d: "M17.8 11.8 19 13",
key: "yihg8r"
}],
["path", {
d: "M15 9h0",
key: "kg5t1u"
}],
["path", {
d: "M17.8 6.2 19 5",
key: "fd4us0"
}],
["path", {
d: "m3 21 9-9",
key: "1jfql5"
}],
["path", {
d: "M12.2 6.2 11 5",
key: "i3da3b"
}]
]);
function Rb() {
for (var t = arguments.length, e = new Array(t), n = 0; n < t; n++) e[n] = arguments[n];
return de(() => s => {
e.forEach(a => a(s))
}, e)
}
const Da = typeof window != "undefined" && typeof window.document != "undefined" && typeof window.document.createElement != "undefined";
function Nn(t) {
const e = Object.prototype.toString.call(t);
return e === "[object Window]" || e === "[object global]"
}
function Sr(t) {
return "nodeType" in t
}
function je(t) {
var e, n;
return t ? Nn(t) ? t : Sr(t) && (e = (n = t.ownerDocument) == null ? void 0 : n.defaultView) != null ? e : window : window
}
function Tr(t) {
const {
Document: e
} = je(t);
return t instanceof e
}
function hs(t) {
return Nn(t) ? !1 : t instanceof je(t).HTMLElement
}
function Pb(t) {
return t instanceof je(t).SVGElement
}
function Mn(t) {
return t ? Nn(t) ? t.document : Sr(t) ? Tr(t) ? t : hs(t) ? t.ownerDocument : document : document : document
}
const Qe = Da ? wf : U;
function Ia(t) {
const e = J(t);
return Qe(() => {
e.current = t
}), we(function() {
for (var n = arguments.length, s = new Array(n), a = 0; a < n; a++) s[a] = arguments[a];
return e.current == null ? void 0 : e.current(...s)
}, [])
}
function Bb() {
const t = J(null),
e = we((s, a) => {
t.current = setInterval(s, a)
}, []),
n = we(() => {
t.current !== null && (clearInterval(t.current), t.current = null)
}, []);
return [e, n]
}
function is(t, e) {
e === void 0 && (e = [t]);
const n = J(t);
return Qe(() => {
n.current !== t && (n.current = t)
}, e), n
}
function gs(t, e) {
const n = J();
return de(() => {
const s = t(n.current);
return n.current = s, s
}, [...e])
}
function aa(t) {
const e = Ia(t),
n = J(null),
s = we(a => {
a !== n.current && (e == null || e(a, n.current)), n.current = a
}, []);
return [n, s]
}
function oa(t) {
const e = J();
return U(() => {
e.current = t
}, [t]), e.current
}
let no = {};
function bs(t, e) {
return de(() => {
if (e) return e;
const n = no[t] == null ? 0 : no[t] + 1;
return no[t] = n, t + "-" + n
}, [t, e])
}
function Vu(t) {
return function(e) {
for (var n = arguments.length, s = new Array(n > 1 ? n - 1 : 0), a = 1; a < n; a++) s[a - 1] = arguments[a];
return s.reduce((o, r) => {
const i = Object.entries(r);
for (const [c, l] of i) {
const u = o[c];
u != null && (o[c] = u + t * l)
}
return o
}, S({}, e))
}
}
const xn = Vu(1),
cs = Vu(-1);
function zb(t) {
return "clientX" in t && "clientY" in t
}
function Na(t) {
if (!t) return !1;
const {
KeyboardEvent: e
} = je(t.target);
return e && t instanceof e
}
function qb(t) {
if (!t) return !1;
const {
TouchEvent: e
} = je(t.target);
return e && t instanceof e
}
function ra(t) {
if (qb(t)) {
if (t.touches && t.touches.length) {
const {
clientX: e,
clientY: n
} = t.touches[0];
return {
x: e,
y: n
}
} else if (t.changedTouches && t.changedTouches.length) {
const {
clientX: e,
clientY: n
} = t.changedTouches[0];
return {
x: e,
y: n
}
}
}
return zb(t) ? {
x: t.clientX,
y: t.clientY
} : null
}
const Ht = Object.freeze({
Translate: {
toString(t) {
if (!t) return;
const {
x: e,
y: n
} = t;
return "translate3d(" + (e ? Math.round(e) : 0) + "px, " + (n ? Math.round(n) : 0) + "px, 0)"
}
},
Scale: {
toString(t) {
if (!t) return;
const {
scaleX: e,
scaleY: n
} = t;
return "scaleX(" + e + ") scaleY(" + n + ")"
}
},
Transform: {
toString(t) {
if (t) return [Ht.Translate.toString(t), Ht.Scale.toString(t)].join(" ")
}
},
Transition: {
toString(t) {
let {
property: e,
duration: n,
easing: s
} = t;
return e + " " + n + "ms " + s
}
}
}),
ec = "a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";
function Fb(t) {
return t.matches(ec) ? t : t.querySelector(ec)
}
const jb = {
display: "none"
};
function $b(t) {
let {
id: e,
value: n
} = t;
return ge.createElement("div", {
id: e,
style: jb
}, n)
}
const Ub = {
position: "fixed",
width: 1,
height: 1,
margin: -1,
border: 0,
padding: 0,
overflow: "hidden",
clip: "rect(0 0 0 0)",
clipPath: "inset(100%)",
whiteSpace: "nowrap"
};
function Vb(t) {
let {
id: e,
announcement: n
} = t;
return ge.createElement("div", {
id: e,
style: Ub,
role: "status",
"aria-live": "assertive",
"aria-atomic": !0
}, n)
}
function Hb() {
const [t, e] = z("");
return {
announce: we(s => {
s != null && e(s)
}, []),
announcement: t
}
}
const Hu = In(null);
function Gb(t) {
const e = Nt(Hu);
U(() => {
if (!e) throw new Error("useDndMonitor must be used within a children of <DndContext>");
return e(t)
}, [t, e])
}
function Wb() {
const [t] = z(() => new Set), e = we(s => (t.add(s), () => t.delete(s)), [t]);
return [we(s => {
let {
type: a,
event: o
} = s;
t.forEach(r => {
var i;
return (i = r[a]) == null ? void 0 : i.call(r, o)
})
}, [t]), e]
}
const Jb = {
draggable: `
To pick up a draggable item, press the space bar.
While dragging, use the arrow keys to move the item.
Press space again to drop the item in its new position, or press escape to cancel.
`
},
Yb = {
onDragStart(t) {
let {
active: e
} = t;
return "Picked up draggable item " + e.id + "."
},
onDragOver(t) {
let {
active: e,
over: n
} = t;
return n ? "Draggable item " + e.id + " was moved over droppable area " + n.id + "." : "Draggable item " + e.id + " is no longer over a droppable area."
},
onDragEnd(t) {
let {
active: e,
over: n
} = t;
return n ? "Draggable item " + e.id + " was dropped over droppable area " + n.id : "Draggable item " + e.id + " was dropped."
},
onDragCancel(t) {
let {
active: e
} = t;
return "Dragging was cancelled. Draggable item " + e.id + " was dropped."
}
};
function Kb(t) {
let {
announcements: e = Yb,
container: n,
hiddenTextDescribedById: s,
screenReaderInstructions: a = Jb
} = t;
const {
announce: o,
announcement: r
} = Hb(), i = bs("DndLiveRegion"), [c, l] = z(!1);
if (U(() => {
l(!0)
}, []), Gb(de(() => ({
onDragStart(d) {
let {
active: m
} = d;
o(e.onDragStart({
active: m
}))
},
onDragMove(d) {
let {
active: m,
over: f
} = d;
e.onDragMove && o(e.onDragMove({
active: m,
over: f
}))
},
onDragOver(d) {
let {
active: m,
over: f
} = d;
o(e.onDragOver({
active: m,
over: f
}))
},
onDragEnd(d) {
let {
active: m,
over: f
} = d;
o(e.onDragEnd({
active: m,
over: f
}))
},
onDragCancel(d) {
let {
active: m,
over: f
} = d;
o(e.onDragCancel({
active: m,
over: f
}))
}
}), [o, e])), !c) return null;
const u = ge.createElement(ge.Fragment, null, ge.createElement($b, {
id: s,
value: a.draggable
}), ge.createElement(Vb, {
id: i,
announcement: r
}));
return n ? ya(u, n) : u
}
var Ce;
(function(t) {
t.DragStart = "dragStart", t.DragMove = "dragMove", t.DragEnd = "dragEnd", t.DragCancel = "dragCancel", t.DragOver = "dragOver", t.RegisterDroppable = "registerDroppable", t.SetDroppableDisabled = "setDroppableDisabled", t.UnregisterDroppable = "unregisterDroppable"
})(Ce || (Ce = {}));
function ia() {}
function tc(t, e) {
return de(() => ({
sensor: t,
options: e != null ? e : {}
}), [t, e])
}
function Xb() {
for (var t = arguments.length, e = new Array(t), n = 0; n < t; n++) e[n] = arguments[n];
return de(() => [...e].filter(s => s != null), [...e])
}
const ct = Object.freeze({
x: 0,
y: 0
});
function Gu(t, e) {
return Math.sqrt(Math.pow(t.x - e.x, 2) + Math.pow(t.y - e.y, 2))
}
function Zb(t, e) {
const n = ra(t);
if (!n) return "0 0";
const s = {
x: (n.x - e.left) / e.width * 100,
y: (n.y - e.top) / e.height * 100
};
return s.x + "% " + s.y + "%"
}
function Wu(t, e) {
let {
data: {
value: n
}
} = t, {
data: {
value: s
}
} = e;
return n - s
}
function Qb(t, e) {
let {
data: {
value: n
}
} = t, {
data: {
value: s
}
} = e;
return s - n
}
function nc(t) {
let {
left: e,
top: n,
height: s,
width: a
} = t;
return [{
x: e,
y: n
}, {
x: e + a,
y: n
}, {
x: e,
y: n + s
}, {
x: e + a,
y: n + s
}]
}
function Ju(t, e) {
if (!t || t.length === 0) return null;
const [n] = t;
return e ? n[e] : n
}
function sc(t, e, n) {
return e === void 0 && (e = t.left), n === void 0 && (n = t.top), {
x: e + t.width * .5,
y: n + t.height * .5
}
}
const ev = t => {
let {
collisionRect: e,
droppableRects: n,
droppableContainers: s
} = t;
const a = sc(e, e.left, e.top),
o = [];
for (const r of s) {
const {
id: i
} = r, c = n.get(i);
if (c) {
const l = Gu(sc(c), a);
o.push({
id: i,
data: {
droppableContainer: r,
value: l
}
})
}
}
return o.sort(Wu)
},
tv = t => {
let {
collisionRect: e,
droppableRects: n,
droppableContainers: s
} = t;
const a = nc(e),
o = [];
for (const r of s) {
const {
id: i
} = r, c = n.get(i);
if (c) {
const l = nc(c),
u = a.reduce((m, f, h) => m + Gu(l[h], f), 0),
d = Number((u / 4).toFixed(4));
o.push({
id: i,
data: {
droppableContainer: r,
value: d
}
})
}
}
return o.sort(Wu)
};
function nv(t, e) {
const n = Math.max(e.top, t.top),
s = Math.max(e.left, t.left),
a = Math.min(e.left + e.width, t.left + t.width),
o = Math.min(e.top + e.height, t.top + t.height),
r = a - s,
i = o - n;
if (s < a && n < o) {
const c = e.width * e.height,
l = t.width * t.height,
u = r * i,
d = u / (c + l - u);
return Number(d.toFixed(4))
}
return 0
}
const sv = t => {
let {
collisionRect: e,
droppableRects: n,
droppableContainers: s
} = t;
const a = [];
for (const o of s) {
const {
id: r
} = o, i = n.get(r);
if (i) {
const c = nv(i, e);
c > 0 && a.push({
id: r,
data: {
droppableContainer: o,
value: c
}
})
}
}
return a.sort(Qb)
};
function av(t, e, n) {
return P(S({}, t), {
scaleX: e && n ? e.width / n.width : 1,
scaleY: e && n ? e.height / n.height : 1
})
}
function Yu(t, e) {
return t && e ? {
x: t.left - e.left,
y: t.top - e.top
} : ct
}
function ov(t) {
return function(n) {
for (var s = arguments.length, a = new Array(s > 1 ? s - 1 : 0), o = 1; o < s; o++) a[o - 1] = arguments[o];
return a.reduce((r, i) => P(S({}, r), {
top: r.top + t * i.y,
bottom: r.bottom + t * i.y,
left: r.left + t * i.x,
right: r.right + t * i.x
}), S({}, n))
}
}
const rv = ov(1);
function Ku(t) {
if (t.startsWith("matrix3d(")) {
const e = t.slice(9, -1).split(/, /);
return {
x: +e[12],
y: +e[13],
scaleX: +e[0],
scaleY: +e[5]
}
} else if (t.startsWith("matrix(")) {
const e = t.slice(7, -1).split(/, /);
return {
x: +e[4],
y: +e[5],
scaleX: +e[0],
scaleY: +e[3]
}
}
return null
}
function iv(t, e, n) {
const s = Ku(e);
if (!s) return t;
const {
scaleX: a,
scaleY: o,
x: r,
y: i
} = s, c = t.left - r - (1 - a) * parseFloat(n), l = t.top - i - (1 - o) * parseFloat(n.slice(n.indexOf(" ") + 1)), u = a ? t.width / a : t.width, d = o ? t.height / o : t.height;
return {
width: u,
height: d,
top: l,
right: c + u,
bottom: l + d,
left: c
}
}
const cv = {
ignoreTransform: !1
};
function On(t, e) {
e === void 0 && (e = cv);
let n = t.getBoundingClientRect();
if (e.ignoreTransform) {
const {
getComputedStyle: l
} = je(t), {
transform: u,
transformOrigin: d
} = l(t);
u && (n = iv(n, u, d))
}
const {
top: s,
left: a,
width: o,
height: r,
bottom: i,
right: c
} = n;
return {
top: s,
left: a,
width: o,
height: r,
bottom: i,
right: c
}
}
function ac(t) {
return On(t, {
ignoreTransform: !0
})
}
function lv(t) {
const e = t.innerWidth,
n = t.innerHeight;
return {
top: 0,
left: 0,
right: e,
bottom: n,
width: e,
height: n
}
}
function uv(t, e) {
return e === void 0 && (e = je(t).getComputedStyle(t)), e.position === "fixed"
}
function pv(t, e) {
e === void 0 && (e = je(t).getComputedStyle(t));
const n = /(auto|scroll|overlay)/;
return ["overflow", "overflowX", "overflowY"].some(a => {
const o = e[a];
return typeof o == "string" ? n.test(o) : !1
})
}
function Ma(t, e) {
const n = [];
function s(a) {
if (e != null && n.length >= e || !a) return n;
if (Tr(a) && a.scrollingElement != null && !n.includes(a.scrollingElement)) return n.push(a.scrollingElement), n;
if (!hs(a) || Pb(a) || n.includes(a)) return n;
const {
getComputedStyle: o
} = je(a), r = o(a);
return a !== t && pv(a, r) && n.push(a), uv(a, r) ? n : s(a.parentNode)
}
return t ? s(t) : n
}
function Xu(t) {
const [e] = Ma(t, 1);
return e != null ? e : null
}
function so(t) {
return !Da || !t ? null : Nn(t) ? t : Sr(t) ? Tr(t) || t === Mn(t).scrollingElement ? window : hs(t) ? t : null : null
}
function Zu(t) {
return Nn(t) ? t.scrollX : t.scrollLeft
}
function Qu(t) {
return Nn(t) ? t.scrollY : t.scrollTop
}
function Wo(t) {
return {
x: Zu(t),
y: Qu(t)
}
}
var Ie;
(function(t) {
t[t.Forward = 1] = "Forward", t[t.Backward = -1] = "Backward"
})(Ie || (Ie = {}));
function ep(t) {
return !Da || !t ? !1 : t === document.scrollingElement
}
function tp(t) {
const e = {
x: 0,
y: 0
},
n = ep(t) ? {
height: window.innerHeight,
width: window.innerWidth
} : {
height: t.clientHeight,
width: t.clientWidth
},
s = {
x: t.scrollWidth - n.width,
y: t.scrollHeight - n.height
},
a = t.scrollTop <= e.y,
o = t.scrollLeft <= e.x,
r = t.scrollTop >= s.y,
i = t.scrollLeft >= s.x;
return {
isTop: a,
isLeft: o,
isBottom: r,
isRight: i,
maxScroll: s,
minScroll: e
}
}
const dv = {
x: .2,
y: .2
};
function mv(t, e, n, s, a) {
let {
top: o,
left: r,
right: i,
bottom: c
} = n;
s === void 0 && (s = 10), a === void 0 && (a = dv);
const {
isTop: l,
isBottom: u,
isLeft: d,
isRight: m
} = tp(t), f = {
x: 0,
y: 0
}, h = {
x: 0,
y: 0
}, g = {
height: e.height * a.y,
width: e.width * a.x
};
return !l && o <= e.top + g.height ? (f.y = Ie.Backward, h.y = s * Math.abs((e.top + g.height - o) / g.height)) : !u && c >= e.bottom - g.height && (f.y = Ie.Forward, h.y = s * Math.abs((e.bottom - g.height - c) / g.height)), !m && i >= e.right - g.width ? (f.x = Ie.Forward, h.x = s * Math.abs((e.right - g.width - i) / g.width)) : !d && r <= e.left + g.width && (f.x = Ie.Backward, h.x = s * Math.abs((e.left + g.width - r) / g.width)), {
direction: f,
speed: h
}
}
function fv(t) {
if (t === document.scrollingElement) {
const {
innerWidth: o,
innerHeight: r
} = window;
return {
top: 0,
left: 0,
right: o,
bottom: r,
width: o,
height: r
}
}
const {
top: e,
left: n,
right: s,
bottom: a
} = t.getBoundingClientRect();
return {
top: e,
left: n,
right: s,
bottom: a,
width: t.clientWidth,
height: t.clientHeight
}
}
function np(t) {
return t.reduce((e, n) => xn(e, Wo(n)), ct)
}
function hv(t) {
return t.reduce((e, n) => e + Zu(n), 0)
}
function gv(t) {
return t.reduce((e, n) => e + Qu(n), 0)
}
function sp(t, e) {
if (e === void 0 && (e = On), !t) return;
const {
top: n,
left: s,
bottom: a,
right: o
} = e(t);
Xu(t) && (a <= 0 || o <= 0 || n >= window.innerHeight || s >= window.innerWidth) && t.scrollIntoView({
block: "center",
inline: "center"
})
}
const bv = [
["x", ["left", "right"], hv],
["y", ["top", "bottom"], gv]
];
class Dr {
constructor(e, n) {
this.rect = void 0, this.width = void 0, this.height = void 0, this.top = void 0, this.bottom = void 0, this.right = void 0, this.left = void 0;
const s = Ma(n),
a = np(s);
this.rect = S({}, e), this.width = e.width, this.height = e.height;
for (const [o, r, i] of bv)
for (const c of r) Object.defineProperty(this, c, {
get: () => {
const l = i(s),
u = a[o] - l;
return this.rect[c] + u
},
enumerable: !0
});
Object.defineProperty(this, "rect", {
enumerable: !1
})
}
}
class Zn {
constructor(e) {
this.target = void 0, this.listeners = [], this.removeAll = () => {
this.listeners.forEach(n => {
var s;
return (s = this.target) == null ? void 0 : s.removeEventListener(...n)
})
}, this.target = e
}
add(e, n, s) {
var a;
(a = this.target) == null || a.addEventListener(e, n, s), this.listeners.push([e, n, s])
}
}
function vv(t) {
const {
EventTarget: e
} = je(t);
return t instanceof e ? t : Mn(t)
}
function ao(t, e) {
const n = Math.abs(t.x),
s = Math.abs(t.y);
return typeof e == "number" ? Math.sqrt(Xa(n, 2) + Xa(s, 2)) > e : "x" in e && "y" in e ? n > e.x && s > e.y : "x" in e ? n > e.x : "y" in e ? s > e.y : !1
}
var Ze;
(function(t) {
t.Click = "click", t.DragStart = "dragstart", t.Keydown = "keydown", t.ContextMenu = "contextmenu", t.Resize = "resize", t.SelectionChange = "selectionchange", t.VisibilityChange = "visibilitychange"
})(Ze || (Ze = {}));
function oc(t) {
t.preventDefault()
}
function xv(t) {
t.stopPropagation()
}
var te;
(function(t) {
t.Space = "Space", t.Down = "ArrowDown", t.Right = "ArrowRight", t.Left = "ArrowLeft", t.Up = "ArrowUp", t.Esc = "Escape", t.Enter = "Enter"
})(te || (te = {}));
const ap = {
start: [te.Space, te.Enter],
cancel: [te.Esc],
end: [te.Space, te.Enter]
},
yv = (t, e) => {
let {
currentCoordinates: n
} = e;
switch (t.code) {
case te.Right:
return P(S({}, n), {
x: n.x + 25
});
case te.Left:
return P(S({}, n), {
x: n.x - 25
});
case te.Down:
return P(S({}, n), {
y: n.y + 25
});
case te.Up:
return P(S({}, n), {
y: n.y - 25
})
}
};
class Ir {
constructor(e) {
this.props = void 0, this.autoScrollEnabled = !1, this.referenceCoordinates = void 0, this.listeners = void 0, this.windowListeners = void 0, this.props = e;
const {
event: {
target: n
}
} = e;
this.props = e, this.listeners = new Zn(Mn(n)), this.windowListeners = new Zn(je(n)), this.handleKeyDown = this.handleKeyDown.bind(this), this.handleCancel = this.handleCancel.bind(this), this.attach()
}
attach() {
this.handleStart(), this.windowListeners.add(Ze.Resize, this.handleCancel), this.windowListeners.add(Ze.VisibilityChange, this.handleCancel), setTimeout(() => this.listeners.add(Ze.Keydown, this.handleKeyDown))
}
handleStart() {
const {
activeNode: e,
onStart: n
} = this.props, s = e.node.current;
s && sp(s), n(ct)
}
handleKeyDown(e) {
if (Na(e)) {
const {
active: n,
context: s,
options: a
} = this.props, {
keyboardCodes: o = ap,
coordinateGetter: r = yv,
scrollBehavior: i = "smooth"
} = a, {
code: c
} = e;
if (o.end.includes(c)) {
this.handleEnd(e);
return
}
if (o.cancel.includes(c)) {
this.handleCancel(e);
return
}
const {
collisionRect: l
} = s.current, u = l ? {
x: l.left,
y: l.top
} : ct;
this.referenceCoordinates || (this.referenceCoordinates = u);
const d = r(e, {
active: n,
context: s.current,
currentCoordinates: u
});
if (d) {
const m = cs(d, u),
f = {
x: 0,
y: 0
},
{
scrollableAncestors: h
} = s.current;
for (const g of h) {
const b = e.code,
{
isTop: x,
isRight: v,
isLeft: w,
isBottom: E,
maxScroll: _,
minScroll: k
} = tp(g),
M = fv(g),
y = {
x: Math.min(b === te.Right ? M.right - M.width / 2 : M.right, Math.max(b === te.Right ? M.left : M.left + M.width / 2, d.x)),
y: Math.min(b === te.Down ? M.bottom - M.height / 2 : M.bottom, Math.max(b === te.Down ? M.top : M.top + M.height / 2, d.y))
},
T = b === te.Right && !v || b === te.Left && !w,
D = b === te.Down && !E || b === te.Up && !x;
if (T && y.x !== d.x) {
const C = g.scrollLeft + m.x,
L = b === te.Right && C <= _.x || b === te.Left && C >= k.x;
if (L && !m.y) {
g.scrollTo({
left: C,
behavior: i
});
return
}
L ? f.x = g.scrollLeft - C : f.x = b === te.Right ? g.scrollLeft - _.x : g.scrollLeft - k.x, f.x && g.scrollBy({
left: -f.x,
behavior: i
});
break
} else if (D && y.y !== d.y) {
const C = g.scrollTop + m.y,
L = b === te.Down && C <= _.y || b === te.Up && C >= k.y;
if (L && !m.x) {
g.scrollTo({
top: C,
behavior: i
});
return
}
L ? f.y = g.scrollTop - C : f.y = b === te.Down ? g.scrollTop - _.y : g.scrollTop - k.y, f.y && g.scrollBy({
top: -f.y,
behavior: i
});
break
}
}
this.handleMove(e, xn(cs(d, this.referenceCoordinates), f))
}
}
}
handleMove(e, n) {
const {
onMove: s
} = this.props;
e.preventDefault(), s(n)
}
handleEnd(e) {
const {
onEnd: n
} = this.props;
e.preventDefault(), this.detach(), n()
}
handleCancel(e) {
const {
onCancel: n
} = this.props;
e.preventDefault(), this.detach(), n()
}
detach() {
this.listeners.removeAll(), this.windowListeners.removeAll()
}
}
Ir.activators = [{
eventName: "onKeyDown",
handler: (t, e, n) => {
let {
keyboardCodes: s = ap,
onActivation: a
} = e, {
active: o
} = n;
const {
code: r
} = t.nativeEvent;
if (s.start.includes(r)) {
const i = o.activatorNode.current;
return i && t.target !== i ? !1 : (t.preventDefault(), a == null || a({
event: t.nativeEvent
}), !0)
}
return !1
}
}];
function rc(t) {
return !!(t && "distance" in t)
}
function ic(t) {
return !!(t && "delay" in t)
}
class Nr {
constructor(e, n, s) {
var a;
s === void 0 && (s = vv(e.event.target)), this.props = void 0, this.events = void 0, this.autoScrollEnabled = !0, this.document = void 0, this.activated = !1, this.initialCoordinates = void 0, this.timeoutId = null, this.listeners = void 0, this.documentListeners = void 0, this.windowListeners = void 0, this.props = e, this.events = n;
const {
event: o
} = e, {
target: r
} = o;
this.props = e, this.events = n, this.document = Mn(r), this.documentListeners = new Zn(this.document), this.listeners = new Zn(s), this.windowListeners = new Zn(je(r)), this.initialCoordinates = (a = ra(o)) != null ? a : ct, this.handleStart = this.handleStart.bind(this), this.handleMove = this.handleMove.bind(this), this.handleEnd = this.handleEnd.bind(this), this.handleCancel = this.handleCancel.bind(this), this.handleKeydown = this.handleKeydown.bind(this), this.removeTextSelection = this.removeTextSelection.bind(this), this.attach()
}
attach() {
const {
events: e,
props: {
options: {
activationConstraint: n
}
}
} = this;
if (this.listeners.add(e.move.name, this.handleMove, {
passive: !1
}), this.listeners.add(e.end.name, this.handleEnd), this.windowListeners.add(Ze.Resize, this.handleCancel), this.windowListeners.add(Ze.DragStart, oc), this.windowListeners.add(Ze.VisibilityChange, this.handleCancel), this.windowListeners.add(Ze.ContextMenu, oc), this.documentListeners.add(Ze.Keydown, this.handleKeydown), n) {
if (rc(n)) return;
if (ic(n)) {
this.timeoutId = setTimeout(this.handleStart, n.delay);
return
}
}
this.handleStart()
}
detach() {
this.listeners.removeAll(), this.windowListeners.removeAll(), setTimeout(this.documentListeners.removeAll, 50), this.timeoutId !== null && (clearTimeout(this.timeoutId), this.timeoutId = null)
}
handleStart() {
const {
initialCoordinates: e
} = this, {
onStart: n
} = this.props;
e && (this.activated = !0, this.documentListeners.add(Ze.Click, xv, {
capture: !0
}), this.removeTextSelection(), this.documentListeners.add(Ze.SelectionChange, this.removeTextSelection), n(e))
}
handleMove(e) {
var n;
const {
activated: s,
initialCoordinates: a,
props: o
} = this, {
onMove: r,
options: {
activationConstraint: i
}
} = o;
if (!a) return;
const c = (n = ra(e)) != null ? n : ct,
l = cs(a, c);
if (!s && i) {
if (ic(i)) return ao(l, i.tolerance) ? this.handleCancel() : void 0;
if (rc(i)) return i.tolerance != null && ao(l, i.tolerance) ? this.handleCancel() : ao(l, i.distance) ? this.handleStart() : void 0
}
e.cancelable && e.preventDefault(), r(c)
}
handleEnd() {
const {
onEnd: e
} = this.props;
this.detach(), e()
}
handleCancel() {
const {
onCancel: e
} = this.props;
this.detach(), e()
}
handleKeydown(e) {
e.code === te.Esc && this.handleCancel()
}
removeTextSelection() {
var e;
(e = this.document.getSelection()) == null || e.removeAllRanges()
}
}
const wv = {
move: {
name: "pointermove"
},
end: {
name: "pointerup"
}
};
class Mr extends Nr {
constructor(e) {
const {
event: n
} = e, s = Mn(n.target);
super(e, wv, s)
}
}
Mr.activators = [{
eventName: "onPointerDown",
handler: (t, e) => {
let {
nativeEvent: n
} = t, {
onActivation: s
} = e;
return !n.isPrimary || n.button !== 0 ? !1 : (s == null || s({
event: n
}), !0)
}
}];
const kv = {
move: {
name: "mousemove"
},
end: {
name: "mouseup"
}
};
var Jo;
(function(t) {
t[t.RightClick = 2] = "RightClick"
})(Jo || (Jo = {}));
class _v extends Nr {
constructor(e) {
super(e, kv, Mn(e.event.target))
}
}
_v.activators = [{
eventName: "onMouseDown",
handler: (t, e) => {
let {
nativeEvent: n
} = t, {
onActivation: s
} = e;
return n.button === Jo.RightClick ? !1 : (s == null || s({
event: n
}), !0)
}
}];
const oo = {
move: {
name: "touchmove"
},
end: {
name: "touchend"
}
};
class Cv extends Nr {
constructor(e) {
super(e, oo)
}
static setup() {
return window.addEventListener(oo.move.name, e, {
capture: !1,
passive: !1
}),
function() {
window.removeEventListener(oo.move.name, e)
};
function e() {}
}
}
Cv.activators = [{
eventName: "onTouchStart",
handler: (t, e) => {
let {
nativeEvent: n
} = t, {
onActivation: s
} = e;
const {
touches: a
} = n;
return a.length > 1 ? !1 : (s == null || s({
event: n
}), !0)
}
}];
var Qn;
(function(t) {
t[t.Pointer = 0] = "Pointer", t[t.DraggableRect = 1] = "DraggableRect"
})(Qn || (Qn = {}));
var ca;
(function(t) {
t[t.TreeOrder = 0] = "TreeOrder", t[t.ReversedTreeOrder = 1] = "ReversedTreeOrder"
})(ca || (ca = {}));
function Ev(t) {
let {
acceleration: e,
activator: n = Qn.Pointer,
canScroll: s,
draggingRect: a,
enabled: o,
interval: r = 5,
order: i = ca.TreeOrder,
pointerCoordinates: c,
scrollableAncestors: l,
scrollableAncestorRects: u,
delta: d,
threshold: m
} = t;
const f = Sv({
delta: d,
disabled: !o
}),
[h, g] = Bb(),
b = J({
x: 0,
y: 0
}),
x = J({
x: 0,
y: 0
}),
v = de(() => {
switch (n) {
case Qn.Pointer:
return c ? {
top: c.y,
bottom: c.y,
left: c.x,
right: c.x
} : null;
case Qn.DraggableRect:
return a
}
}, [n, a, c]),
w = J(null),
E = we(() => {
const k = w.current;
if (!k) return;
const M = b.current.x * x.current.x,
y = b.current.y * x.current.y;
k.scrollBy(M, y)
}, []),
_ = de(() => i === ca.TreeOrder ? [...l].reverse() : l, [i, l]);
U(() => {
if (!o || !l.length || !v) {
g();
return
}
for (const k of _) {
if ((s == null ? void 0 : s(k)) === !1) continue;
const M = l.indexOf(k),
y = u[M];
if (!y) continue;
const {
direction: T,
speed: D
} = mv(k, y, v, e, m);
for (const C of ["x", "y"]) f[C][T[C]] || (D[C] = 0, T[C] = 0);
if (D.x > 0 || D.y > 0) {
g(), w.current = k, h(E, r), b.current = D, x.current = T;
return
}
}
b.current = {
x: 0,
y: 0
}, x.current = {
x: 0,
y: 0
}, g()
}, [e, E, s, g, o, r, JSON.stringify(v), JSON.stringify(f), h, l, _, u, JSON.stringify(m)])
}
const Av = {
x: {
[Ie.Backward]: !1,
[Ie.Forward]: !1
},
y: {
[Ie.Backward]: !1,
[Ie.Forward]: !1
}
};
function Sv(t) {
let {
delta: e,
disabled: n
} = t;
const s = oa(e);
return gs(a => {
if (n || !s || !a) return Av;
const o = {
x: Math.sign(e.x - s.x),
y: Math.sign(e.y - s.y)
};
return {
x: {
[Ie.Backward]: a.x[Ie.Backward] || o.x === -1,
[Ie.Forward]: a.x[Ie.Forward] || o.x === 1
},
y: {
[Ie.Backward]: a.y[Ie.Backward] || o.y === -1,
[Ie.Forward]: a.y[Ie.Forward] || o.y === 1
}
}
}, [n, e, s])
}
function Tv(t, e) {
const n = e !== null ? t.get(e) : void 0,
s = n ? n.node.current : null;
return gs(a => {
var o;
return e === null ? null : (o = s != null ? s : a) != null ? o : null
}, [s, e])
}
function Dv(t, e) {
return de(() => t.reduce((n, s) => {
const {
sensor: a
} = s, o = a.activators.map(r => ({
eventName: r.eventName,
handler: e(r.handler, s)
}));
return [...n, ...o]
}, []), [t, e])
}
var ls;
(function(t) {
t[t.Always = 0] = "Always", t[t.BeforeDragging = 1] = "BeforeDragging", t[t.WhileDragging = 2] = "WhileDragging"
})(ls || (ls = {}));
var Yo;
(function(t) {
t.Optimized = "optimized"
})(Yo || (Yo = {}));
const cc = new Map;
function Iv(t, e) {
let {
dragging: n,
dependencies: s,
config: a
} = e;
const [o, r] = z(null), i = o != null, {
frequency: c,
measure: l,
strategy: u
} = a, d = J(t), m = x(), f = is(m), h = we(function(v) {
v === void 0 && (v = []), !f.current && r(w => w ? w.concat(v) : v)
}, [f]), g = J(null), b = gs(v => {
if (m && !n) return cc;
const w = o;
if (!v || v === cc || d.current !== t || w != null) {
const E = new Map;
for (let _ of t) {
if (!_) continue;
if (w && w.length > 0 && !w.includes(_.id) && _.rect.current) {
E.set(_.id, _.rect.current);
continue
}
const k = _.node.current,
M = k ? new Dr(l(k), k) : null;
_.rect.current = M, M && E.set(_.id, M)
}
return E
}
return v
}, [t, o, n, m, l]);
return U(() => {
d.current = t
}, [t]), U(() => {
m || requestAnimationFrame(() => h())
}, [n, m]), U(() => {
i && r(null)
}, [i]), U(() => {
m || typeof c != "number" || g.current !== null || (g.current = setTimeout(() => {
h(), g.current = null
}, c))
}, [c, m, h, ...s]), {
droppableRects: b,
measureDroppableContainers: h,
measuringScheduled: i
};
function x() {
switch (u) {
case ls.Always:
return !1;
case ls.BeforeDragging:
return n;
default:
return !n
}
}
}
function Or(t, e) {
return gs(n => t ? n || (typeof e == "function" ? e(t) : t) : null, [e, t])
}
function Nv(t, e) {
return Or(t, e)
}
function Mv(t) {
let {
callback: e,
disabled: n
} = t;
const s = Ia(e),
a = de(() => {
if (n || typeof window == "undefined" || typeof window.MutationObserver == "undefined") return;
const {
MutationObserver: o
} = window;
return new o(s)
}, [s, n]);
return U(() => () => a == null ? void 0 : a.disconnect(), [a]), a
}
function Oa(t) {
let {
callback: e,
disabled: n
} = t;
const s = Ia(e),
a = de(() => {
if (n || typeof window == "undefined" || typeof window.ResizeObserver == "undefined") return;
const {
ResizeObserver: o
} = window;
return new o(s)
}, [n]);
return U(() => () => a == null ? void 0 : a.disconnect(), [a]), a
}
function Ov(t) {
return new Dr(On(t), t)
}
function lc(t, e, n) {
e === void 0 && (e = Ov);
const [s, a] = cr(i, null), o = Mv({
callback(c) {
if (t)
for (const l of c) {
const {
type: u,
target: d
} = l;
if (u === "childList" && d instanceof HTMLElement && d.contains(t)) {
a();
break
}
}
}
}), r = Oa({
callback: a
});
return Qe(() => {
a(), t ? (r == null || r.observe(t), o == null || o.observe(document.body, {
childList: !0,
subtree: !0
})) : (r == null || r.disconnect(), o == null || o.disconnect())
}, [t]), s;
function i(c) {
if (!t) return null;
if (t.isConnected === !1) {
var l;
return (l = c != null ? c : n) != null ? l : null
}
const u = e(t);
return JSON.stringify(c) === JSON.stringify(u) ? c : u
}
}
function Lv(t) {
const e = Or(t);
return Yu(t, e)
}
const uc = [];
function Rv(t) {
const e = J(t),
n = gs(s => t ? s && s !== uc && t && e.current && t.parentNode === e.current.parentNode ? s : Ma(t) : uc, [t]);
return U(() => {
e.current = t
}, [t]), n
}
function Pv(t) {
const [e, n] = z(null), s = J(t), a = we(o => {
const r = so(o.target);
r && n(i => i ? (i.set(r, Wo(r)), new Map(i)) : null)
}, []);
return U(() => {
const o = s.current;
if (t !== o) {
r(o);
const i = t.map(c => {
const l = so(c);
return l ? (l.addEventListener("scroll", a, {
passive: !0
}), [l, Wo(l)]) : null
}).filter(c => c != null);
n(i.length ? new Map(i) : null), s.current = t
}
return () => {
r(t), r(o)
};
function r(i) {
i.forEach(c => {
const l = so(c);
l == null || l.removeEventListener("scroll", a)
})
}
}, [a, t]), de(() => t.length ? e ? Array.from(e.values()).reduce((o, r) => xn(o, r), ct) : np(t) : ct, [t, e])
}
function pc(t, e) {
e === void 0 && (e = []);
const n = J(null);
return U(() => {
n.current = null
}, e), U(() => {
const s = t !== ct;
s && !n.current && (n.current = t), !s && n.current && (n.current = null)
}, [t]), n.current ? cs(t, n.current) : ct
}
function Bv(t) {
U(() => {
if (!Da) return;
const e = t.map(n => {
let {
sensor: s
} = n;
return s.setup == null ? void 0 : s.setup()
});
return () => {
for (const n of e) n == null || n()
}
}, t.map(e => {
let {
sensor: n
} = e;
return n
}))
}
function zv(t, e) {
return de(() => t.reduce((n, s) => {
let {
eventName: a,
handler: o
} = s;
return n[a] = r => {
o(r, e)
}, n
}, {}), [t, e])
}
function op(t) {
return de(() => t ? lv(t) : null, [t])
}
const ro = [];
function qv(t, e) {
e === void 0 && (e = On);
const [n] = t, s = op(n ? je(n) : null), [a, o] = cr(i, ro), r = Oa({
callback: o
});
return t.length > 0 && a === ro && o(), Qe(() => {
t.length ? t.forEach(c => r == null ? void 0 : r.observe(c)) : (r == null || r.disconnect(), o())
}, [t]), a;
function i() {
return t.length ? t.map(c => ep(c) ? s : new Dr(e(c), c)) : ro
}
}
function rp(t) {
if (!t) return null;
if (t.children.length > 1) return t;
const e = t.children[0];
return hs(e) ? e : t
}
function Fv(t) {
let {
measure: e
} = t;
const [n, s] = z(null), a = we(l => {
for (const {
target: u
} of l)
if (hs(u)) {
s(d => {
const m = e(u);
return d ? P(S({}, d), {
width: m.width,
height: m.height
}) : m
});
break
}
}, [e]), o = Oa({
callback: a
}), r = we(l => {
const u = rp(l);
o == null || o.disconnect(), u && (o == null || o.observe(u)), s(u ? e(u) : null)
}, [e, o]), [i, c] = aa(r);
return de(() => ({
nodeRef: i,
rect: n,
setRef: c
}), [n, i, c])
}
const jv = [{
sensor: Mr,
options: {}
}, {
sensor: Ir,
options: {}
}],
$v = {
current: {}
},
Hs = {
draggable: {
measure: ac
},
droppable: {
measure: ac,
strategy: ls.WhileDragging,
frequency: Yo.Optimized
},
dragOverlay: {
measure: On
}
};
class es extends Map {
get(e) {
var n;
return e != null && (n = super.get(e)) != null ? n : void 0
}
toArray() {
return Array.from(this.values())
}
getEnabled() {
return this.toArray().filter(e => {
let {
disabled: n
} = e;
return !n
})
}
getNodeFor(e) {
var n, s;
return (n = (s = this.get(e)) == null ? void 0 : s.node.current) != null ? n : void 0
}
}
const Uv = {
activatorEvent: null,
active: null,
activeNode: null,
activeNodeRect: null,
collisions: null,
containerNodeRect: null,
draggableNodes: new Map,
droppableRects: new Map,
droppableContainers: new es,
over: null,
dragOverlay: {
nodeRef: {
current: null
},
rect: null,
setRef: ia
},
scrollableAncestors: [],
scrollableAncestorRects: [],
measuringConfiguration: Hs,
measureDroppableContainers: ia,
windowRect: null,
measuringScheduled: !1
},
ip = {
activatorEvent: null,
activators: [],
active: null,
activeNodeRect: null,
ariaDescribedById: {
draggable: ""
},
dispatch: ia,
draggableNodes: new Map,
over: null,
measureDroppableContainers: ia
},
vs = In(ip),
cp = In(Uv);
function Vv() {
return {
draggable: {
active: null,
initialCoordinates: {
x: 0,
y: 0
},
nodes: new Map,
translate: {
x: 0,
y: 0
}
},
droppable: {
containers: new es
}
}
}
function Hv(t, e) {
switch (e.type) {
case Ce.DragStart:
return P(S({}, t), {
draggable: P(S({}, t.draggable), {
initialCoordinates: e.initialCoordinates,
active: e.active
})
});
case Ce.DragMove:
return t.draggable.active ? P(S({}, t), {
draggable: P(S({}, t.draggable), {
translate: {
x: e.coordinates.x - t.draggable.initialCoordinates.x,
y: e.coordinates.y - t.draggable.initialCoordinates.y
}
})
}) : t;
case Ce.DragEnd:
case Ce.DragCancel:
return P(S({}, t), {
draggable: P(S({}, t.draggable), {
active: null,
initialCoordinates: {
x: 0,
y: 0
},
translate: {
x: 0,
y: 0
}
})
});
case Ce.RegisterDroppable:
{
const {
element: n
} = e,
{
id: s
} = n,
a = new es(t.droppable.containers);
return a.set(s, n),
P(S({}, t), {
droppable: P(S({}, t.droppable), {
containers: a
})
})
}
case Ce.SetDroppableDisabled:
{
const {
id: n,
key: s,
disabled: a
} = e,
o = t.droppable.containers.get(n);
if (!o || s !== o.key) return t;
const r = new es(t.droppable.containers);
return r.set(n, P(S({}, o), {
disabled: a
})),
P(S({}, t), {
droppable: P(S({}, t.droppable), {
containers: r
})
})
}
case Ce.UnregisterDroppable:
{
const {
id: n,
key: s
} = e,
a = t.droppable.containers.get(n);
if (!a || s !== a.key) return t;
const o = new es(t.droppable.containers);
return o.delete(n),
P(S({}, t), {
droppable: P(S({}, t.droppable), {
containers: o
})
})
}
default:
return t
}
}
function Gv(t) {
let {
disabled: e
} = t;
const {
active: n,
activatorEvent: s,
draggableNodes: a
} = Nt(vs), o = oa(s), r = oa(n == null ? void 0 : n.id);
return U(() => {
if (!e && !s && o && r != null) {
if (!Na(o) || document.activeElement === o.target) return;
const i = a.get(r);
if (!i) return;
const {
activatorNode: c,
node: l
} = i;
if (!c.current && !l.current) return;
requestAnimationFrame(() => {
for (const u of [c.current, l.current]) {
if (!u) continue;
const d = Fb(u);
if (d) {
d.focus();
break
}
}
})
}
}, [s, e, a, r, o]), null
}
function lp(t, e) {
let a = e,
{
transform: n
} = a,
s = st(a, ["transform"]);
return t != null && t.length ? t.reduce((o, r) => r(S({
transform: o
}, s)), n) : n
}
function Wv(t) {
return de(() => ({
draggable: S(S({}, Hs.draggable), t == null ? void 0 : t.draggable),
droppable: S(S({}, Hs.droppable), t == null ? void 0 : t.droppable),
dragOverlay: S(S({}, Hs.dragOverlay), t == null ? void 0 : t.dragOverlay)
}), [t == null ? void 0 : t.draggable, t == null ? void 0 : t.droppable, t == null ? void 0 : t.dragOverlay])
}
function Jv(t) {
let {
activeNode: e,
measure: n,
initialRect: s,
config: a = !0
} = t;
const o = J(!1),
{
x: r,
y: i
} = typeof a == "boolean" ? {
x: a,
y: a
} : a;
Qe(() => {
if (!r && !i || !e) {
o.current = !1;
return
}
if (o.current || !s) return;
const l = e == null ? void 0 : e.node.current;
if (!l || l.isConnected === !1) return;
const u = n(l),
d = Yu(u, s);
if (r || (d.x = 0), i || (d.y = 0), o.current = !0, Math.abs(d.x) > 0 || Math.abs(d.y) > 0) {
const m = Xu(l);
m && m.scrollBy({
top: d.y,
left: d.x
})
}
}, [e, r, i, s, n])
}
const La = In(P(S({}, ct), {
scaleX: 1,
scaleY: 1
}));
var Bt;
(function(t) {
t[t.Uninitialized = 0] = "Uninitialized", t[t.Initializing = 1] = "Initializing", t[t.Initialized = 2] = "Initialized"
})(Bt || (Bt = {}));
const Yv = kf(function(e) {
var n, s, a, o;
let Ti = e,
{
id: r,
accessibility: i,
autoScroll: c = !0,
children: l,
sensors: u = jv,
collisionDetection: d = sv,
measuring: m,
modifiers: f
} = Ti,
h = st(Ti, ["id", "accessibility", "autoScroll", "children", "sensors", "collisionDetection", "measuring", "modifiers"]);
const g = cr(Hv, void 0, Vv),
[b, x] = g,
[v, w] = Wb(),
[E, _] = z(Bt.Uninitialized),
k = E === Bt.Initialized,
{
draggable: {
active: M,
nodes: y,
translate: T
},
droppable: {
containers: D
}
} = b,
C = M ? y.get(M) : null,
L = J({
initial: null,
translated: null
}),
R = de(() => {
var Ne;
return M != null ? {
id: M,
data: (Ne = C == null ? void 0 : C.data) != null ? Ne : $v,
rect: L
} : null
}, [M, C]),
A = J(null),
[I, O] = z(null),
[B, j] = z(null),
G = is(h, Object.values(h)),
ke = bs("DndDescribedBy", r),
Re = de(() => D.getEnabled(), [D]),
ve = Wv(m),
{
droppableRects: _e,
measureDroppableContainers: W,
measuringScheduled: le
} = Iv(Re, {
dragging: k,
dependencies: [T.x, T.y],
config: ve.droppable
}),
K = Tv(y, M),
H = de(() => B ? ra(B) : null, [B]),
me = bf(),
V = Nv(K, ve.draggable.measure);
Jv({
activeNode: M ? y.get(M) : null,
config: me.layoutShiftCompensation,
initialRect: V,
measure: ve.draggable.measure
});
const $ = lc(K, ve.draggable.measure, V),
He = lc(K ? K.parentElement : null),
pt = J({
activatorEvent: null,
active: null,
activeNode: K,
collisionRect: null,
collisions: null,
droppableRects: _e,
draggableNodes: y,
draggingNode: null,
draggingNodeRect: null,
droppableContainers: D,
over: null,
scrollableAncestors: [],
scrollAdjustedTranslate: null
}),
sn = D.getNodeFor((n = pt.current.over) == null ? void 0 : n.id),
At = Fv({
measure: ve.dragOverlay.measure
}),
an = (s = At.nodeRef.current) != null ? s : K,
on = k ? (a = At.rect) != null ? a : $ : null,
yi = !!(At.nodeRef.current && At.rect),
wi = Lv(yi ? null : $),
Ya = op(an ? je(an) : null),
Ot = Rv(k ? sn != null ? sn : K : null),
Cs = qv(Ot),
Es = lp(f, {
transform: {
x: T.x - wi.x,
y: T.y - wi.y,
scaleX: 1,
scaleY: 1
},
activatorEvent: B,
active: R,
activeNodeRect: $,
containerNodeRect: He,
draggingNodeRect: on,
over: pt.current.over,
overlayNodeRect: At.rect,
scrollableAncestors: Ot,
scrollableAncestorRects: Cs,
windowRect: Ya
}),
ki = H ? xn(H, T) : null,
_i = Pv(Ot),
uf = pc(_i),
pf = pc(_i, [$]),
rn = xn(Es, uf),
cn = on ? rv(on, Es) : null,
zn = R && cn ? d({
active: R,
collisionRect: cn,
droppableRects: _e,
droppableContainers: Re,
pointerCoordinates: ki
}) : null,
Ci = Ju(zn, "id"),
[Lt, Ei] = z(null),
df = yi ? Es : xn(Es, pf),
mf = av(df, (o = Lt == null ? void 0 : Lt.rect) != null ? o : null, $),
Ai = we((Ne, Ge) => {
let {
sensor: We,
options: Rt
} = Ge;
if (A.current == null) return;
const Xe = y.get(A.current);
if (!Xe) return;
const tt = Ne.nativeEvent,
dt = new We({
active: A.current,
activeNode: Xe,
event: tt,
options: Rt,
context: pt,
onStart(nt) {
const qn = A.current;
if (qn == null) return;
const Fn = y.get(qn);
if (!Fn) return;
const {
onDragStart: As
} = G.current, Ss = {
active: {
id: qn,
data: Fn.data,
rect: L
}
};
Un(() => {
As == null || As(Ss), _(Bt.Initializing), x({
type: Ce.DragStart,
initialCoordinates: nt,
active: qn
}), v({
type: "onDragStart",
event: Ss
})
})
},
onMove(nt) {
x({
type: Ce.DragMove,
coordinates: nt
})
},
onEnd: ln(Ce.DragEnd),
onCancel: ln(Ce.DragCancel)
});
Un(() => {
O(dt), j(Ne.nativeEvent)
});
function ln(nt) {
return function() {
return N(this, null, function*() {
const {
active: Fn,
collisions: As,
over: Ss,
scrollAdjustedTranslate: Di
} = pt.current;
let jn = null;
if (Fn && Di) {
const {
cancelDrop: $n
} = G.current;
jn = {
activatorEvent: tt,
active: Fn,
collisions: As,
delta: Di,
over: Ss
}, nt === Ce.DragEnd && typeof $n == "function" && (yield Promise.resolve($n(jn))) && (nt = Ce.DragCancel)
}
A.current = null, Un(() => {
x({
type: nt
}), _(Bt.Uninitialized), Ei(null), O(null), j(null);
const $n = nt === Ce.DragEnd ? "onDragEnd" : "onDragCancel";
if (jn) {
const Ka = G.current[$n];
Ka == null || Ka(jn), v({
type: $n,
event: jn
})
}
})
})
}
}
}, [y]),
ff = we((Ne, Ge) => (We, Rt) => {
const Xe = We.nativeEvent,
tt = y.get(Rt);
if (A.current !== null || !tt || Xe.dndKit || Xe.defaultPrevented) return;
const dt = {
active: tt
};
Ne(We, Ge.options, dt) === !0 && (Xe.dndKit = {
capturedBy: Ge.sensor
}, A.current = Rt, Ai(We, Ge))
}, [y, Ai]),
Si = Dv(u, ff);
Bv(u), Qe(() => {
$ && E === Bt.Initializing && _(Bt.Initialized)
}, [$, E]), U(() => {
const {
onDragMove: Ne
} = G.current, {
active: Ge,
activatorEvent: We,
collisions: Rt,
over: Xe
} = pt.current;
if (!Ge || !We) return;
const tt = {
active: Ge,
activatorEvent: We,
collisions: Rt,
delta: {
x: rn.x,
y: rn.y
},
over: Xe
};
Un(() => {
Ne == null || Ne(tt), v({
type: "onDragMove",
event: tt
})
})
}, [rn.x, rn.y]), U(() => {
const {
active: Ne,
activatorEvent: Ge,
collisions: We,
droppableContainers: Rt,
scrollAdjustedTranslate: Xe
} = pt.current;
if (!Ne || A.current == null || !Ge || !Xe) return;
const {
onDragOver: tt
} = G.current, dt = Rt.get(Ci), ln = dt && dt.rect.current ? {
id: dt.id,
rect: dt.rect.current,
data: dt.data,
disabled: dt.disabled
} : null, nt = {
active: Ne,
activatorEvent: Ge,
collisions: We,
delta: {
x: Xe.x,
y: Xe.y
},
over: ln
};
Un(() => {
Ei(ln), tt == null || tt(nt), v({
type: "onDragOver",
event: nt
})
})
}, [Ci]), Qe(() => {
pt.current = {
activatorEvent: B,
active: R,
activeNode: K,
collisionRect: cn,
collisions: zn,
droppableRects: _e,
draggableNodes: y,
draggingNode: an,
draggingNodeRect: on,
droppableContainers: D,
over: Lt,
scrollableAncestors: Ot,
scrollAdjustedTranslate: rn
}, L.current = {
initial: on,
translated: cn
}
}, [R, K, zn, cn, y, an, on, _e, D, Lt, Ot, rn]), Ev(P(S({}, me), {
delta: T,
draggingRect: cn,
pointerCoordinates: ki,
scrollableAncestors: Ot,
scrollableAncestorRects: Cs
}));
const hf = de(() => ({
active: R,
activeNode: K,
activeNodeRect: $,
activatorEvent: B,
collisions: zn,
containerNodeRect: He,
dragOverlay: At,
draggableNodes: y,
droppableContainers: D,
droppableRects: _e,
over: Lt,
measureDroppableContainers: W,
scrollableAncestors: Ot,
scrollableAncestorRects: Cs,
measuringConfiguration: ve,
measuringScheduled: le,
windowRect: Ya
}), [R, K, $, B, zn, He, At, y, D, _e, Lt, W, Ot, Cs, ve, le, Ya]),
gf = de(() => ({
activatorEvent: B,
activators: Si,
active: R,
activeNodeRect: $,
ariaDescribedById: {
draggable: ke
},
dispatch: x,
draggableNodes: y,
over: Lt,
measureDroppableContainers: W
}), [B, Si, R, $, x, ke, y, Lt, W]);
return ge.createElement(Hu.Provider, {
value: w
}, ge.createElement(vs.Provider, {
value: gf
}, ge.createElement(cp.Provider, {
value: hf
}, ge.createElement(La.Provider, {
value: mf
}, l)), ge.createElement(Gv, {
disabled: (i == null ? void 0 : i.restoreFocus) === !1
})), ge.createElement(Kb, P(S({}, i), {
hiddenTextDescribedById: ke
})));
function bf() {
const Ne = (I == null ? void 0 : I.autoScrollEnabled) === !1,
Ge = typeof c == "object" ? c.enabled === !1 : c === !1,
We = k && !Ne && !Ge;
return typeof c == "object" ? P(S({}, c), {
enabled: We
}) : {
enabled: We
}
}
}),
Kv = In(null),
dc = "button",
Xv = "Droppable";
function Zv(t) {
let {
id: e,
data: n,
disabled: s = !1,
attributes: a
} = t;
const o = bs(Xv),
{
activators: r,
activatorEvent: i,
active: c,
activeNodeRect: l,
ariaDescribedById: u,
draggableNodes: d,
over: m
} = Nt(vs),
{
role: f = dc,
roleDescription: h = "draggable",
tabIndex: g = 0
} = a != null ? a : {},
b = (c == null ? void 0 : c.id) === e,
x = Nt(b ? La : Kv),
[v, w] = aa(),
[E, _] = aa(),
k = zv(r, e),
M = is(n);
Qe(() => (d.set(e, {
id: e,
key: o,
node: v,
activatorNode: E,
data: M
}), () => {
const T = d.get(e);
T && T.key === o && d.delete(e)
}), [d, e]);
const y = de(() => ({
role: f,
tabIndex: g,
"aria-disabled": s,
"aria-pressed": b && f === dc ? !0 : void 0,
"aria-roledescription": h,
"aria-describedby": u.draggable
}), [s, f, g, b, h, u.draggable]);
return {
active: c,
activatorEvent: i,
activeNodeRect: l,
attributes: y,
isDragging: b,
listeners: s ? void 0 : k,
node: v,
over: m,
setNodeRef: w,
setActivatorNodeRef: _,
transform: x
}
}
function up() {
return Nt(cp)
}
const Qv = "Droppable",
ex = {
timeout: 25
};
function tx(t) {
let {
data: e,
disabled: n = !1,
id: s,
resizeObserverConfig: a
} = t;
const o = bs(Qv),
{
active: r,
dispatch: i,
over: c,
measureDroppableContainers: l
} = Nt(vs),
u = J({
disabled: n
}),
d = J(!1),
m = J(null),
f = J(null),
{
disabled: h,
updateMeasurementsFor: g,
timeout: b
} = S(S({}, ex), a),
x = is(g != null ? g : s),
v = we(() => {
if (!d.current) {
d.current = !0;
return
}
f.current != null && clearTimeout(f.current), f.current = setTimeout(() => {
l(Array.isArray(x.current) ? x.current : [x.current]), f.current = null
}, b)
}, [b]),
w = Oa({
callback: v,
disabled: h || !r
}),
E = we((y, T) => {
w && (T && (w.unobserve(T), d.current = !1), y && w.observe(y))
}, [w]),
[_, k] = aa(E),
M = is(e);
return U(() => {
!w || !_.current || (w.disconnect(), d.current = !1, w.observe(_.current))
}, [_, w]), Qe(() => (i({
type: Ce.RegisterDroppable,
element: {
id: s,
key: o,
disabled: n,
node: _,
rect: m,
data: M
}
}), () => i({
type: Ce.UnregisterDroppable,
key: o,
id: s
})), [s]), U(() => {
n !== u.current.disabled && (i({
type: Ce.SetDroppableDisabled,
id: s,
key: o,
disabled: n
}), u.current.disabled = n)
}, [s, o, n, i]), {
active: r,
rect: m,
isOver: (c == null ? void 0 : c.id) === s,
node: _,
over: c,
setNodeRef: k
}
}
function nx(t) {
let {
animation: e,
children: n
} = t;
const [s, a] = z(null), [o, r] = z(null), i = oa(n);
return !n && !s && i && a(i), Qe(() => {
if (!o) return;
const c = s == null ? void 0 : s.key,
l = s == null ? void 0 : s.props.id;
if (c == null || l == null) {
a(null);
return
}
Promise.resolve(e(l, o)).then(() => {
a(null)
})
}, [e, s, o]), ge.createElement(ge.Fragment, null, n, s ? _f(s, {
ref: r
}) : null)
}
const sx = {
x: 0,
y: 0,
scaleX: 1,
scaleY: 1
};
function ax(t) {
let {
children: e
} = t;
return ge.createElement(vs.Provider, {
value: ip
}, ge.createElement(La.Provider, {
value: sx
}, e))
}
const ox = {
position: "fixed",
touchAction: "none"
},
rx = t => Na(t) ? "transform 250ms ease" : void 0,
ix = wa((t, e) => {
let {
as: n,
activatorEvent: s,
adjustScale: a,
children: o,
className: r,
rect: i,
style: c,
transform: l,
transition: u = rx
} = t;
if (!i) return null;
const d = a ? l : P(S({}, l), {
scaleX: 1,
scaleY: 1
}),
m = S(P(S({}, ox), {
width: i.width,
height: i.height,
top: i.top,
left: i.left,
transform: Ht.Transform.toString(d),
transformOrigin: a && s ? Zb(s, i) : void 0,
transition: typeof u == "function" ? u(s) : u
}), c);
return ge.createElement(n, {
className: r,
style: m,
ref: e
}, o)
}),
cx = t => e => {
let {
active: n,
dragOverlay: s
} = e;
const a = {},
{
styles: o,
className: r
} = t;
if (o != null && o.active)
for (const [i, c] of Object.entries(o.active)) c !== void 0 && (a[i] = n.node.style.getPropertyValue(i), n.node.style.setProperty(i, c));
if (o != null && o.dragOverlay)
for (const [i, c] of Object.entries(o.dragOverlay)) c !== void 0 && s.node.style.setProperty(i, c);
return r != null && r.active && n.node.classList.add(r.active), r != null && r.dragOverlay && s.node.classList.add(r.dragOverlay),
function() {
for (const [c, l] of Object.entries(a)) n.node.style.setProperty(c, l);
r != null && r.active && n.node.classList.remove(r.active)
}
},
lx = t => {
let {
transform: {
initial: e,
final: n
}
} = t;
return [{
transform: Ht.Transform.toString(e)
}, {
transform: Ht.Transform.toString(n)
}]
},
ux = {
duration: 250,
easing: "ease",
keyframes: lx,
sideEffects: cx({
styles: {
active: {
opacity: "0"
}
}
})
};
function px(t) {
let {
config: e,
draggableNodes: n,
droppableContainers: s,
measuringConfiguration: a
} = t;
return Ia((o, r) => {
if (e === null) return;
const i = n.get(o);
if (!i) return;
const c = i.node.current;
if (!c) return;
const l = rp(r);
if (!l) return;
const {
transform: u
} = je(r).getComputedStyle(r), d = Ku(u);
if (!d) return;
const m = typeof e == "function" ? e : dx(e);
return sp(c, a.draggable.measure), m({
active: {
id: o,
data: i.data,
node: c,
rect: a.draggable.measure(c)
},
draggableNodes: n,
dragOverlay: {
node: r,
rect: a.dragOverlay.measure(l)
},
droppableContainers: s,
measuringConfiguration: a,
transform: d
})
})
}
function dx(t) {
const {
duration: e,
easing: n,
sideEffects: s,
keyframes: a
} = S(S({}, ux), t);
return o => {
let v = o,
{
active: r,
dragOverlay: i,
transform: c
} = v,
l = st(v, ["active", "dragOverlay", "transform"]);
if (!e) return;
const u = {
x: i.rect.left - r.rect.left,
y: i.rect.top - r.rect.top
},
d = {
scaleX: c.scaleX !== 1 ? r.rect.width * c.scaleX / i.rect.width : 1,
scaleY: c.scaleY !== 1 ? r.rect.height * c.scaleY / i.rect.height : 1
},
m = S({
x: c.x - u.x,
y: c.y - u.y
}, d),
f = a(P(S({}, l), {
active: r,
dragOverlay: i,
transform: {
initial: c,
final: m
}
})),
[h] = f,
g = f[f.length - 1];
if (JSON.stringify(h) === JSON.stringify(g)) return;
const b = s == null ? void 0 : s(S({
active: r,
dragOverlay: i
}, l)),
x = i.node.animate(f, {
duration: e,
easing: n,
fill: "forwards"
});
return new Promise(w => {
x.onfinish = () => {
b == null || b(), w()
}
})
}
}
let mc = 0;
function mx(t) {
return de(() => {
if (t != null) return mc++, mc
}, [t])
}
const sle = ge.memo(t => {
let {
adjustScale: e = !1,
children: n,
dropAnimation: s,
style: a,
transition: o,
modifiers: r,
wrapperElement: i = "div",
className: c,
zIndex: l = 999
} = t;
const {
activatorEvent: u,
active: d,
activeNodeRect: m,
containerNodeRect: f,
draggableNodes: h,
droppableContainers: g,
dragOverlay: b,
over: x,
measuringConfiguration: v,
scrollableAncestors: w,
scrollableAncestorRects: E,
windowRect: _
} = up(), k = Nt(La), M = mx(d == null ? void 0 : d.id), y = lp(r, {
activatorEvent: u,
active: d,
activeNodeRect: m,
containerNodeRect: f,
draggingNodeRect: b.rect,
over: x,
overlayNodeRect: b.rect,
scrollableAncestors: w,
scrollableAncestorRects: E,
transform: k,
windowRect: _
}), T = Or(m), D = px({
config: s,
draggableNodes: h,
droppableContainers: g,
measuringConfiguration: v
}), C = T ? b.setRef : void 0;
return ge.createElement(ax, null, ge.createElement(nx, {
animation: D
}, d && M ? ge.createElement(ix, {
key: M,
id: d.id,
ref: C,
as: i,
activatorEvent: u,
adjustScale: e,
className: c,
transition: o,
rect: T,
style: S({
zIndex: l
}, a),
transform: y
}, n) : null))
});
function Lr(t, e, n) {
const s = t.slice();
return s.splice(n < 0 ? s.length + n : n, 0, s.splice(e, 1)[0]), s
}
function fx(t, e) {
return t.reduce((n, s, a) => {
const o = e.get(s);
return o && (n[a] = o), n
}, Array(t.length))
}
function Os(t) {
return t !== null && t >= 0
}
function hx(t, e) {
if (t === e) return !0;
if (t.length !== e.length) return !1;
for (let n = 0; n < t.length; n++)
if (t[n] !== e[n]) return !1;
return !0
}
function gx(t) {
return typeof t == "boolean" ? {
draggable: t,
droppable: t
} : t
}
const Rr = t => {
let {
rects: e,
activeIndex: n,
overIndex: s,
index: a
} = t;
const o = Lr(e, s, n),
r = e[a],
i = o[a];
return !i || !r ? null : {
x: i.left - r.left,
y: i.top - r.top,
scaleX: i.width / r.width,
scaleY: i.height / r.height
}
},
Ls = {
scaleX: 1,
scaleY: 1
},
ale = t => {
var e;
let {
activeIndex: n,
activeNodeRect: s,
index: a,
rects: o,
overIndex: r
} = t;
const i = (e = o[n]) != null ? e : s;
if (!i) return null;
if (a === n) {
const l = o[r];
return l ? S({
x: 0,
y: n < r ? l.top + l.height - (i.top + i.height) : l.top - i.top
}, Ls) : null
}
const c = bx(o, a, n);
return a > n && a <= r ? S({
x: 0,
y: -i.height - c
}, Ls) : a < n && a >= r ? S({
x: 0,
y: i.height + c
}, Ls) : S({
x: 0,
y: 0
}, Ls)
};
function bx(t, e, n) {
const s = t[e],
a = t[e - 1],
o = t[e + 1];
return s ? n < e ? a ? s.top - (a.top + a.height) : o ? o.top - (s.top + s.height) : 0 : o ? o.top - (s.top + s.height) : a ? s.top - (a.top + a.height) : 0 : 0
}
const pp = "Sortable",
dp = ge.createContext({
activeIndex: -1,
containerId: pp,
disableTransforms: !1,
items: [],
overIndex: -1,
useDragOverlay: !1,
sortedRects: [],
strategy: Rr,
disabled: {
draggable: !1,
droppable: !1
}
});
function vx(t) {
let {
children: e,
id: n,
items: s,
strategy: a = Rr,
disabled: o = !1
} = t;
const {
active: r,
dragOverlay: i,
droppableRects: c,
over: l,
measureDroppableContainers: u,
measuringScheduled: d
} = up(), m = bs(pp, n), f = i.rect !== null, h = de(() => s.map(M => typeof M == "object" && "id" in M ? M.id : M), [s]), g = r != null, b = r ? h.indexOf(r.id) : -1, x = l ? h.indexOf(l.id) : -1, v = J(h), w = !hx(h, v.current), E = x !== -1 && b === -1 || w, _ = gx(o);
Qe(() => {
w && g && !d && u(h)
}, [w, h, g, u, d]), U(() => {
v.current = h
}, [h]);
const k = de(() => ({
activeIndex: b,
containerId: m,
disabled: _,
disableTransforms: E,
items: h,
overIndex: x,
useDragOverlay: f,
sortedRects: fx(h, c),
strategy: a
}), [b, m, _.draggable, _.droppable, E, h, x, c, f, a]);
return ge.createElement(dp.Provider, {
value: k
}, e)
}
const xx = t => {
let {
id: e,
items: n,
activeIndex: s,
overIndex: a
} = t;
return Lr(n, s, a).indexOf(e)
},
yx = t => {
let {
containerId: e,
isSorting: n,
wasDragging: s,
index: a,
items: o,
newIndex: r,
previousItems: i,
previousContainerId: c,
transition: l
} = t;
return !l || !s || i !== o && a === r ? !1 : n ? !0 : r !== a && e === c
},
wx = {
duration: 200,
easing: "ease"
},
mp = "transform",
kx = Ht.Transition.toString({
property: mp,
duration: 0,
easing: "linear"
}),
_x = {
roleDescription: "sortable"
};
function Cx(t) {
let {
disabled: e,
index: n,
node: s,
rect: a
} = t;
const [o, r] = z(null), i = J(n);
return Qe(() => {
if (!e && n !== i.current && s.current) {
const c = a.current;
if (c) {
const l = On(s.current, {
ignoreTransform: !0
}),
u = {
x: c.left - l.left,
y: c.top - l.top,
scaleX: c.width / l.width,
scaleY: c.height / l.height
};
(u.x || u.y) && r(u)
}
}
n !== i.current && (i.current = n)
}, [e, n, s, a]), U(() => {
o && requestAnimationFrame(() => {
r(null)
})
}, [o]), o
}
function Ex(t) {
let {
animateLayoutChanges: e = yx,
attributes: n,
disabled: s,
data: a,
getNewIndex: o = xx,
id: r,
strategy: i,
resizeObserverConfig: c,
transition: l = wx
} = t;
const {
items: u,
containerId: d,
activeIndex: m,
disabled: f,
disableTransforms: h,
sortedRects: g,
overIndex: b,
useDragOverlay: x,
strategy: v
} = Nt(dp), w = Ax(s, f), E = u.indexOf(r), _ = de(() => S({
sortable: {
containerId: d,
index: E,
items: u
}
}, a), [d, a, E, u]), k = de(() => u.slice(u.indexOf(r)), [u, r]), {
rect: M,
node: y,
isOver: T,
setNodeRef: D
} = tx({
id: r,
data: _,
disabled: w.droppable,
resizeObserverConfig: S({
updateMeasurementsFor: k
}, c)
}), {
active: C,
activatorEvent: L,
activeNodeRect: R,
attributes: A,
setNodeRef: I,
listeners: O,
isDragging: B,
over: j,
setActivatorNodeRef: G,
transform: ke
} = Zv({
id: r,
data: _,
attributes: S(S({}, _x), n),
disabled: w.draggable
}), Re = Rb(D, I), ve = !!C, _e = ve && !h && Os(m) && Os(b), W = !x && B, le = W && _e ? ke : null, K = i != null ? i : v, H = _e ? le != null ? le : K({
rects: g,
activeNodeRect: R,
activeIndex: m,
overIndex: b,
index: E
}) : null, me = Os(m) && Os(b) ? o({
id: r,
items: u,
activeIndex: m,
overIndex: b
}) : E, V = C == null ? void 0 : C.id, $ = J({
activeId: V,
items: u,
newIndex: me,
containerId: d
}), He = u !== $.current.items, pt = e({
active: C,
containerId: d,
isDragging: B,
isSorting: ve,
id: r,
index: E,
items: u,
newIndex: $.current.newIndex,
previousItems: $.current.items,
previousContainerId: $.current.containerId,
transition: l,
wasDragging: $.current.activeId != null
}), sn = Cx({
disabled: !pt,
index: E,
node: y,
rect: M
});
return U(() => {
ve && $.current.newIndex !== me && ($.current.newIndex = me), d !== $.current.containerId && ($.current.containerId = d), u !== $.current.items && ($.current.items = u)
}, [ve, me, d, u]), U(() => {
if (V === $.current.activeId) return;
if (V && !$.current.activeId) {
$.current.activeId = V;
return
}
const an = setTimeout(() => {
$.current.activeId = V
}, 50);
return () => clearTimeout(an)
}, [V]), {
active: C,
activeIndex: m,
attributes: A,
data: _,
rect: M,
index: E,
newIndex: me,
items: u,
isOver: T,
isSorting: ve,
isDragging: B,
listeners: O,
node: y,
overIndex: b,
over: j,
setNodeRef: Re,
setActivatorNodeRef: G,
setDroppableNodeRef: D,
setDraggableNodeRef: I,
transform: sn != null ? sn : H,
transition: At()
};
function At() {
if (sn || He && $.current.newIndex === E) return kx;
if (!(W && !Na(L) || !l) && (ve || pt)) return Ht.Transition.toString(P(S({}, l), {
property: mp
}))
}
}
function Ax(t, e) {
var n, s;
return typeof t == "boolean" ? {
draggable: t,
droppable: !1
} : {
draggable: (n = t == null ? void 0 : t.draggable) != null ? n : e.draggable,
droppable: (s = t == null ? void 0 : t.droppable) != null ? s : e.droppable
}
}
function la(t) {
if (!t) return !1;
const e = t.data.current;
return !!(e && "sortable" in e && typeof e.sortable == "object" && "containerId" in e.sortable && "items" in e.sortable && "index" in e.sortable)
}
const Sx = [te.Down, te.Right, te.Up, te.Left],
Tx = (t, e) => {
let {
context: {
active: n,
collisionRect: s,
droppableRects: a,
droppableContainers: o,
over: r,
scrollableAncestors: i
}
} = e;
if (Sx.includes(t.code)) {
if (t.preventDefault(), !n || !s) return;
const c = [];
o.getEnabled().forEach(d => {
if (!d || d != null && d.disabled) return;
const m = a.get(d.id);
if (m) switch (t.code) {
case te.Down:
s.top < m.top && c.push(d);
break;
case te.Up:
s.top > m.top && c.push(d);
break;
case te.Left:
s.left > m.left && c.push(d);
break;
case te.Right:
s.left < m.left && c.push(d);
break
}
});
const l = tv({
active: n,
collisionRect: s,
droppableRects: a,
droppableContainers: c,
pointerCoordinates: null
});
let u = Ju(l, "id");
if (u === (r == null ? void 0 : r.id) && l.length > 1 && (u = l[1].id), u != null) {
const d = o.get(n.id),
m = o.get(u),
f = m ? a.get(m.id) : null,
h = m == null ? void 0 : m.node.current;
if (h && f && d && m) {
const b = Ma(h).some((k, M) => i[M] !== k),
x = fp(d, m),
v = Dx(d, m),
w = b || !x ? {
x: 0,
y: 0
} : {
x: v ? s.width - f.width : 0,
y: v ? s.height - f.height : 0
},
E = {
x: f.left,
y: f.top
};
return w.x && w.y ? E : cs(E, w)
}
}
}
};
function fp(t, e) {
return !la(t) || !la(e) ? !1 : t.data.current.sortable.containerId === e.data.current.sortable.containerId
}
function Dx(t, e) {
return !la(t) || !la(e) || !fp(t, e) ? !1 : t.data.current.sortable.index < e.data.current.sortable.index
}
const hp = Qt.create({
name: "heading",
addOptions() {
return {
levels: [1, 2, 3, 4, 5, 6],
HTMLAttributes: {}
}
},
content: "inline*",
group: "block",
defining: !0,
addAttributes() {
return {
level: {
default: 1,
rendered: !1
}
}
},
parseHTML() {
return this.options.levels.map(t => ({
tag: `h${t}`,
attrs: {
level: t
}
}))
},
renderHTML({
node: t,
HTMLAttributes: e
}) {
return [`h${this.options.levels.includes(t.attrs.level)?t.attrs.level:this.options.levels[0]}`, en(this.options.HTMLAttributes, e), 0]
},
addCommands() {
return {
setHeading: t => ({
commands: e
}) => this.options.levels.includes(t.level) ? e.setNode(this.name, t) : !1,
toggleHeading: t => ({
commands: e
}) => this.options.levels.includes(t.level) ? e.toggleNode(this.name, "paragraph", t) : !1
}
},
addKeyboardShortcuts() {
return this.options.levels.reduce((t, e) => P(S({}, t), {
[`Mod-Alt-${e}`]: () => this.editor.commands.toggleHeading({
level: e
})
}), {})
},
addInputRules() {
return this.options.levels.map(t => uh({
find: new RegExp(`^(#{1,${t}})\\s$`),
type: this.type,
getAttributes: {
level: t
}
}))
}
}),
Pr = Qt.create({
name: "horizontalRule",
addOptions() {
return {
HTMLAttributes: {}
}
},
group: "block",
parseHTML() {
return [{
tag: "hr"
}]
},
renderHTML({
HTMLAttributes: t
}) {
return ["hr", en(this.options.HTMLAttributes, t)]
},
addCommands() {
return {
setHorizontalRule: () => ({
chain: t,
state: e
}) => {
const {
$to: n
} = e.selection, s = t();
return n.parentOffset === 0 ? s.insertContentAt(Math.max(n.pos - 2, 0), {
type: this.name
}) : s.insertContent({
type: this.name
}), s.command(({
tr: a,
dispatch: o
}) => {
var r;
if (o) {
const {
$to: i
} = a.selection, c = i.end();
if (i.nodeAfter) i.nodeAfter.isTextblock ? a.setSelection(Ee.create(a.doc, i.pos + 1)) : i.nodeAfter.isBlock ? a.setSelection(Je.create(a.doc, i.pos)) : a.setSelection(Ee.create(a.doc, i.pos));
else {
const l = (r = i.parent.type.contentMatch.defaultType) === null || r === void 0 ? void 0 : r.create();
l && (a.insert(c, l), a.setSelection(Ee.create(a.doc, c + 1)))
}
a.scrollIntoView()
}
return !0
}).run()
}
}
},
addInputRules() {
return [iu({
find: /^(?:---|—-|___\s|\*\*\*\s)$/,
type: this.type
})]
}
}),
gp = cu.create({
name: "subscript",
addOptions() {
return {
HTMLAttributes: {}
}
},
parseHTML() {
return [{
tag: "sub"
}, {
style: "vertical-align",
getAttrs(t) {
return t !== "sub" ? !1 : null
}
}]
},
renderHTML({
HTMLAttributes: t
}) {
return ["sub", en(this.options.HTMLAttributes, t), 0]
},
addCommands() {
return {
setSubscript: () => ({
commands: t
}) => t.setMark(this.name),
toggleSubscript: () => ({
commands: t
}) => t.toggleMark(this.name),
unsetSubscript: () => ({
commands: t
}) => t.unsetMark(this.name)
}
},
addKeyboardShortcuts() {
return {
"Mod-,": () => this.editor.commands.toggleSubscript()
}
}
}),
bp = cu.create({
name: "superscript",
addOptions() {
return {
HTMLAttributes: {}
}
},
parseHTML() {
return [{
tag: "sup"
}, {
style: "vertical-align",
getAttrs(t) {
return t !== "super" ? !1 : null
}
}]
},
renderHTML({
HTMLAttributes: t
}) {
return ["sup", en(this.options.HTMLAttributes, t), 0]
},
addCommands() {
return {
setSuperscript: () => ({
commands: t
}) => t.setMark(this.name),
toggleSuperscript: () => ({
commands: t
}) => t.toggleMark(this.name),
unsetSuperscript: () => ({
commands: t
}) => t.unsetMark(this.name)
}
},
addKeyboardShortcuts() {
return {
"Mod-.": () => this.editor.commands.toggleSuperscript()
}
}
});
var oe = {};
const Ix = "Á",
Nx = "á",
Mx = "Ă",
Ox = "ă",
Lx = "∾",
Rx = "∿",
Px = "∾̳",
Bx = "Â",
zx = "â",
qx = "´",
Fx = "А",
jx = "а",
$x = "Æ",
Ux = "æ",
Vx = "⁡",
Hx = "𝔄",
Gx = "𝔞",
Wx = "À",
Jx = "à",
Yx = "ℵ",
Kx = "ℵ",
Xx = "Α",
Zx = "α",
Qx = "Ā",
ey = "ā",
ty = "⨿",
ny = "&",
sy = "&",
ay = "⩕",
oy = "⩓",
ry = "∧",
iy = "⩜",
cy = "⩘",
ly = "⩚",
uy = "∠",
py = "⦤",
dy = "∠",
my = "⦨",
fy = "⦩",
hy = "⦪",
gy = "⦫",
by = "⦬",
vy = "⦭",
xy = "⦮",
yy = "⦯",
wy = "∡",
ky = "∟",
_y = "⊾",
Cy = "⦝",
Ey = "∢",
Ay = "Å",
Sy = "⍼",
Ty = "Ą",
Dy = "ą",
Iy = "𝔸",
Ny = "𝕒",
My = "⩯",
Oy = "≈",
Ly = "⩰",
Ry = "≊",
Py = "≋",
By = "'",
zy = "⁡",
qy = "≈",
Fy = "≊",
jy = "Å",
$y = "å",
Uy = "𝒜",
Vy = "𝒶",
Hy = "≔",
Gy = "*",
Wy = "≈",
Jy = "≍",
Yy = "Ã",
Ky = "ã",
Xy = "Ä",
Zy = "ä",
Qy = "∳",
ew = "⨑",
tw = "≌",
nw = "϶",
sw = "‵",
aw = "∽",
ow = "⋍",
rw = "∖",
iw = "⫧",
cw = "⊽",
lw = "⌅",
uw = "⌆",
pw = "⌅",
dw = "⎵",
mw = "⎶",
fw = "≌",
hw = "Б",
gw = "б",
bw = "„",
vw = "∵",
xw = "∵",
yw = "∵",
ww = "⦰",
kw = "϶",
_w = "ℬ",
Cw = "ℬ",
Ew = "Β",
Aw = "β",
Sw = "ℶ",
Tw = "≬",
Dw = "𝔅",
Iw = "𝔟",
Nw = "⋂",
Mw = "◯",
Ow = "⋃",
Lw = "⨀",
Rw = "⨁",
Pw = "⨂",
Bw = "⨆",
zw = "★",
qw = "▽",
Fw = "△",
jw = "⨄",
$w = "⋁",
Uw = "⋀",
Vw = "⤍",
Hw = "⧫",
Gw = "▪",
Ww = "▴",
Jw = "▾",
Yw = "◂",
Kw = "▸",
Xw = "␣",
Zw = "▒",
Qw = "░",
ek = "▓",
tk = "█",
nk = "=⃥",
sk = "≡⃥",
ak = "⫭",
ok = "⌐",
rk = "𝔹",
ik = "𝕓",
ck = "⊥",
lk = "⊥",
uk = "⋈",
pk = "⧉",
dk = "┐",
mk = "╕",
fk = "╖",
hk = "╗",
gk = "┌",
bk = "╒",
vk = "╓",
xk = "╔",
yk = "─",
wk = "═",
kk = "┬",
_k = "╤",
Ck = "╥",
Ek = "╦",
Ak = "┴",
Sk = "╧",
Tk = "╨",
Dk = "╩",
Ik = "⊟",
Nk = "⊞",
Mk = "⊠",
Ok = "┘",
Lk = "╛",
Rk = "╜",
Pk = "╝",
Bk = "└",
zk = "╘",
qk = "╙",
Fk = "╚",
jk = "│",
$k = "║",
Uk = "┼",
Vk = "╪",
Hk = "╫",
Gk = "╬",
Wk = "┤",
Jk = "╡",
Yk = "╢",
Kk = "╣",
Xk = "├",
Zk = "╞",
Qk = "╟",
e0 = "╠",
t0 = "‵",
n0 = "˘",
s0 = "˘",
a0 = "¦",
o0 = "𝒷",
r0 = "ℬ",
i0 = "⁏",
c0 = "∽",
l0 = "⋍",
u0 = "⧅",
p0 = "\\",
d0 = "⟈",
m0 = "•",
f0 = "•",
h0 = "≎",
g0 = "⪮",
b0 = "≏",
v0 = "≎",
x0 = "≏",
y0 = "Ć",
w0 = "ć",
k0 = "⩄",
_0 = "⩉",
C0 = "⩋",
E0 = "∩",
A0 = "⋒",
S0 = "⩇",
T0 = "⩀",
D0 = "ⅅ",
I0 = "∩︀",
N0 = "⁁",
M0 = "ˇ",
O0 = "ℭ",
L0 = "⩍",
R0 = "Č",
P0 = "č",
B0 = "Ç",
z0 = "ç",
q0 = "Ĉ",
F0 = "ĉ",
j0 = "∰",
$0 = "⩌",
U0 = "⩐",
V0 = "Ċ",
H0 = "ċ",
G0 = "¸",
W0 = "¸",
J0 = "⦲",
Y0 = "¢",
K0 = "·",
X0 = "·",
Z0 = "𝔠",
Q0 = "ℭ",
e_ = "Ч",
t_ = "ч",
n_ = "✓",
s_ = "✓",
a_ = "Χ",
o_ = "χ",
r_ = "ˆ",
i_ = "≗",
c_ = "↺",
l_ = "↻",
u_ = "⊛",
p_ = "⊚",
d_ = "⊝",
m_ = "⊙",
f_ = "®",
h_ = "Ⓢ",
g_ = "⊖",
b_ = "⊕",
v_ = "⊗",
x_ = "○",
y_ = "⧃",
w_ = "≗",
k_ = "⨐",
__ = "⫯",
C_ = "⧂",
E_ = "∲",
A_ = "”",
S_ = "’",
T_ = "♣",
D_ = "♣",
I_ = ":",
N_ = "∷",
M_ = "⩴",
O_ = "≔",
L_ = "≔",
R_ = ",",
P_ = "@",
B_ = "∁",
z_ = "∘",
q_ = "∁",
F_ = "ℂ",
j_ = "≅",
$_ = "⩭",
U_ = "≡",
V_ = "∮",
H_ = "∯",
G_ = "∮",
W_ = "𝕔",
J_ = "ℂ",
Y_ = "∐",
K_ = "∐",
X_ = "©",
Z_ = "©",
Q_ = "℗",
e1 = "∳",
t1 = "↵",
n1 = "✗",
s1 = "⨯",
a1 = "𝒞",
o1 = "𝒸",
r1 = "⫏",
i1 = "⫑",
c1 = "⫐",
l1 = "⫒",
u1 = "⋯",
p1 = "⤸",
d1 = "⤵",
m1 = "⋞",
f1 = "⋟",
h1 = "↶",
g1 = "⤽",
b1 = "⩈",
v1 = "⩆",
x1 = "≍",
y1 = "∪",
w1 = "⋓",
k1 = "⩊",
_1 = "⊍",
C1 = "⩅",
E1 = "∪︀",
A1 = "↷",
S1 = "⤼",
T1 = "⋞",
D1 = "⋟",
I1 = "⋎",
N1 = "⋏",
M1 = "¤",
O1 = "↶",
L1 = "↷",
R1 = "⋎",
P1 = "⋏",
B1 = "∲",
z1 = "∱",
q1 = "⌭",
F1 = "†",
j1 = "‡",
$1 = "ℸ",
U1 = "↓",
V1 = "↡",
H1 = "⇓",
G1 = "‐",
W1 = "⫤",
J1 = "⊣",
Y1 = "⤏",
K1 = "˝",
X1 = "Ď",
Z1 = "ď",
Q1 = "Д",
eC = "д",
tC = "‡",
nC = "⇊",
sC = "ⅅ",
aC = "ⅆ",
oC = "⤑",
rC = "⩷",
iC = "°",
cC = "∇",
lC = "Δ",
uC = "δ",
pC = "⦱",
dC = "⥿",
mC = "𝔇",
fC = "𝔡",
hC = "⥥",
gC = "⇃",
bC = "⇂",
vC = "´",
xC = "˙",
yC = "˝",
wC = "`",
kC = "˜",
_C = "⋄",
CC = "⋄",
EC = "⋄",
AC = "♦",
SC = "♦",
TC = "¨",
DC = "ⅆ",
IC = "ϝ",
NC = "⋲",
MC = "÷",
OC = "÷",
LC = "⋇",
RC = "⋇",
PC = "Ђ",
BC = "ђ",
zC = "⌞",
qC = "⌍",
FC = "$",
jC = "𝔻",
$C = "𝕕",
UC = "¨",
VC = "˙",
HC = "⃜",
GC = "≐",
WC = "≑",
JC = "≐",
YC = "∸",
KC = "∔",
XC = "⊡",
ZC = "⌆",
QC = "∯",
eE = "¨",
tE = "⇓",
nE = "⇐",
sE = "⇔",
aE = "⫤",
oE = "⟸",
rE = "⟺",
iE = "⟹",
cE = "⇒",
lE = "⊨",
uE = "⇑",
pE = "⇕",
dE = "∥",
mE = "⤓",
fE = "↓",
hE = "↓",
gE = "⇓",
bE = "⇵",
vE = "̑",
xE = "⇊",
yE = "⇃",
wE = "⇂",
kE = "⥐",
_E = "⥞",
CE = "⥖",
EE = "↽",
AE = "⥟",
SE = "⥗",
TE = "⇁",
DE = "↧",
IE = "⊤",
NE = "⤐",
ME = "⌟",
OE = "⌌",
LE = "𝒟",
RE = "𝒹",
PE = "Ѕ",
BE = "ѕ",
zE = "⧶",
qE = "Đ",
FE = "đ",
jE = "⋱",
$E = "▿",
UE = "▾",
VE = "⇵",
HE = "⥯",
GE = "⦦",
WE = "Џ",
JE = "џ",
YE = "⟿",
KE = "É",
XE = "é",
ZE = "⩮",
QE = "Ě",
eA = "ě",
tA = "Ê",
nA = "ê",
sA = "≖",
aA = "≕",
oA = "Э",
rA = "э",
iA = "⩷",
cA = "Ė",
lA = "ė",
uA = "≑",
pA = "ⅇ",
dA = "≒",
mA = "𝔈",
fA = "𝔢",
hA = "⪚",
gA = "È",
bA = "è",
vA = "⪖",
xA = "⪘",
yA = "⪙",
wA = "∈",
kA = "⏧",
_A = "ℓ",
CA = "⪕",
EA = "⪗",
AA = "Ē",
SA = "ē",
TA = "∅",
DA = "∅",
IA = "◻",
NA = "∅",
MA = "▫",
OA = " ",
LA = " ",
RA = " ",
PA = "Ŋ",
BA = "ŋ",
zA = " ",
qA = "Ę",
FA = "ę",
jA = "𝔼",
$A = "𝕖",
UA = "⋕",
VA = "⧣",
HA = "⩱",
GA = "ε",
WA = "Ε",
JA = "ε",
YA = "ϵ",
KA = "≖",
XA = "≕",
ZA = "≂",
QA = "⪖",
eS = "⪕",
tS = "⩵",
nS = "=",
sS = "≂",
aS = "≟",
oS = "⇌",
rS = "≡",
iS = "⩸",
cS = "⧥",
lS = "⥱",
uS = "≓",
pS = "ℯ",
dS = "ℰ",
mS = "≐",
fS = "⩳",
hS = "≂",
gS = "Η",
bS = "η",
vS = "Ð",
xS = "ð",
yS = "Ë",
wS = "ë",
kS = "€",
_S = "!",
CS = "∃",
ES = "∃",
AS = "ℰ",
SS = "ⅇ",
TS = "ⅇ",
DS = "≒",
IS = "Ф",
NS = "ф",
MS = "♀",
OS = "ffi",
LS = "ff",
RS = "ffl",
PS = "𝔉",
BS = "𝔣",
zS = "fi",
qS = "◼",
FS = "▪",
jS = "fj",
$S = "♭",
US = "fl",
VS = "▱",
HS = "ƒ",
GS = "𝔽",
WS = "𝕗",
JS = "∀",
YS = "∀",
KS = "⋔",
XS = "⫙",
ZS = "ℱ",
QS = "⨍",
eT = "½",
tT = "⅓",
nT = "¼",
sT = "⅕",
aT = "⅙",
oT = "⅛",
rT = "⅔",
iT = "⅖",
cT = "¾",
lT = "⅗",
uT = "⅜",
pT = "⅘",
dT = "⅚",
mT = "⅝",
fT = "⅞",
hT = "⁄",
gT = "⌢",
bT = "𝒻",
vT = "ℱ",
xT = "ǵ",
yT = "Γ",
wT = "γ",
kT = "Ϝ",
_T = "ϝ",
CT = "⪆",
ET = "Ğ",
AT = "ğ",
ST = "Ģ",
TT = "Ĝ",
DT = "ĝ",
IT = "Г",
NT = "г",
MT = "Ġ",
OT = "ġ",
LT = "≥",
RT = "≧",
PT = "⪌",
BT = "⋛",
zT = "≥",
qT = "≧",
FT = "⩾",
jT = "⪩",
$T = "⩾",
UT = "⪀",
VT = "⪂",
HT = "⪄",
GT = "⋛︀",
WT = "⪔",
JT = "𝔊",
YT = "𝔤",
KT = "≫",
XT = "⋙",
ZT = "⋙",
QT = "ℷ",
e2 = "Ѓ",
t2 = "ѓ",
n2 = "⪥",
s2 = "≷",
a2 = "⪒",
o2 = "⪤",
r2 = "⪊",
i2 = "⪊",
c2 = "⪈",
l2 = "≩",
u2 = "⪈",
p2 = "≩",
d2 = "⋧",
m2 = "𝔾",
f2 = "𝕘",
h2 = "`",
g2 = "≥",
b2 = "⋛",
v2 = "≧",
x2 = "⪢",
y2 = "≷",
w2 = "⩾",
k2 = "≳",
_2 = "𝒢",
C2 = "ℊ",
E2 = "≳",
A2 = "⪎",
S2 = "⪐",
T2 = "⪧",
D2 = "⩺",
I2 = ">",
N2 = ">",
M2 = "≫",
O2 = "⋗",
L2 = "⦕",
R2 = "⩼",
P2 = "⪆",
B2 = "⥸",
z2 = "⋗",
q2 = "⋛",
F2 = "⪌",
j2 = "≷",
$2 = "≳",
U2 = "≩︀",
V2 = "≩︀",
H2 = "ˇ",
G2 = " ",
W2 = "½",
J2 = "ℋ",
Y2 = "Ъ",
K2 = "ъ",
X2 = "⥈",
Z2 = "↔",
Q2 = "⇔",
eD = "↭",
tD = "^",
nD = "ℏ",
sD = "Ĥ",
aD = "ĥ",
oD = "♥",
rD = "♥",
iD = "…",
cD = "⊹",
lD = "𝔥",
uD = "ℌ",
pD = "ℋ",
dD = "⤥",
mD = "⤦",
fD = "⇿",
hD = "∻",
gD = "↩",
bD = "↪",
vD = "𝕙",
xD = "ℍ",
yD = "―",
wD = "─",
kD = "𝒽",
_D = "ℋ",
CD = "ℏ",
ED = "Ħ",
AD = "ħ",
SD = "≎",
TD = "≏",
DD = "⁃",
ID = "‐",
ND = "Í",
MD = "í",
OD = "⁣",
LD = "Î",
RD = "î",
PD = "И",
BD = "и",
zD = "İ",
qD = "Е",
FD = "е",
jD = "¡",
$D = "⇔",
UD = "𝔦",
VD = "ℑ",
HD = "Ì",
GD = "ì",
WD = "ⅈ",
JD = "⨌",
YD = "∭",
KD = "⧜",
XD = "℩",
ZD = "IJ",
QD = "ij",
eI = "Ī",
tI = "ī",
nI = "ℑ",
sI = "ⅈ",
aI = "ℐ",
oI = "ℑ",
rI = "ı",
iI = "ℑ",
cI = "⊷",
lI = "Ƶ",
uI = "⇒",
pI = "℅",
dI = "∞",
mI = "⧝",
fI = "ı",
hI = "⊺",
gI = "∫",
bI = "∬",
vI = "ℤ",
xI = "∫",
yI = "⊺",
wI = "⋂",
kI = "⨗",
_I = "⨼",
CI = "⁣",
EI = "⁢",
AI = "Ё",
SI = "ё",
TI = "Į",
DI = "į",
II = "𝕀",
NI = "𝕚",
MI = "Ι",
OI = "ι",
LI = "⨼",
RI = "¿",
PI = "𝒾",
BI = "ℐ",
zI = "∈",
qI = "⋵",
FI = "⋹",
jI = "⋴",
$I = "⋳",
UI = "∈",
VI = "⁢",
HI = "Ĩ",
GI = "ĩ",
WI = "І",
JI = "і",
YI = "Ï",
KI = "ï",
XI = "Ĵ",
ZI = "ĵ",
QI = "Й",
eN = "й",
tN = "𝔍",
nN = "𝔧",
sN = "ȷ",
aN = "𝕁",
oN = "𝕛",
rN = "𝒥",
iN = "𝒿",
cN = "Ј",
lN = "ј",
uN = "Є",
pN = "є",
dN = "Κ",
mN = "κ",
fN = "ϰ",
hN = "Ķ",
gN = "ķ",
bN = "К",
vN = "к",
xN = "𝔎",
yN = "𝔨",
wN = "ĸ",
kN = "Х",
_N = "х",
CN = "Ќ",
EN = "ќ",
AN = "𝕂",
SN = "𝕜",
TN = "𝒦",
DN = "𝓀",
IN = "⇚",
NN = "Ĺ",
MN = "ĺ",
ON = "⦴",
LN = "ℒ",
RN = "Λ",
PN = "λ",
BN = "⟨",
zN = "⟪",
qN = "⦑",
FN = "⟨",
jN = "⪅",
$N = "ℒ",
UN = "«",
VN = "⇤",
HN = "⤟",
GN = "←",
WN = "↞",
JN = "⇐",
YN = "⤝",
KN = "↩",
XN = "↫",
ZN = "⤹",
QN = "⥳",
eM = "↢",
tM = "⤙",
nM = "⤛",
sM = "⪫",
aM = "⪭",
oM = "⪭︀",
rM = "⤌",
iM = "⤎",
cM = "❲",
lM = "{",
uM = "[",
pM = "⦋",
dM = "⦏",
mM = "⦍",
fM = "Ľ",
hM = "ľ",
gM = "Ļ",
bM = "ļ",
vM = "⌈",
xM = "{",
yM = "Л",
wM = "л",
kM = "⤶",
_M = "“",
CM = "„",
EM = "⥧",
AM = "⥋",
SM = "↲",
TM = "≤",
DM = "≦",
IM = "⟨",
NM = "⇤",
MM = "←",
OM = "←",
LM = "⇐",
RM = "⇆",
PM = "↢",
BM = "⌈",
zM = "⟦",
qM = "⥡",
FM = "⥙",
jM = "⇃",
$M = "⌊",
UM = "↽",
VM = "↼",
HM = "⇇",
GM = "↔",
WM = "↔",
JM = "⇔",
YM = "⇆",
KM = "⇋",
XM = "↭",
ZM = "⥎",
QM = "↤",
eO = "⊣",
tO = "⥚",
nO = "⋋",
sO = "⧏",
aO = "⊲",
oO = "⊴",
rO = "⥑",
iO = "⥠",
cO = "⥘",
lO = "↿",
uO = "⥒",
pO = "↼",
dO = "⪋",
mO = "⋚",
fO = "≤",
hO = "≦",
gO = "⩽",
bO = "⪨",
vO = "⩽",
xO = "⩿",
yO = "⪁",
wO = "⪃",
kO = "⋚︀",
_O = "⪓",
CO = "⪅",
EO = "⋖",
AO = "⋚",
SO = "⪋",
TO = "⋚",
DO = "≦",
IO = "≶",
NO = "≶",
MO = "⪡",
OO = "≲",
LO = "⩽",
RO = "≲",
PO = "⥼",
BO = "⌊",
zO = "𝔏",
qO = "𝔩",
FO = "≶",
jO = "⪑",
$O = "⥢",
UO = "↽",
VO = "↼",
HO = "⥪",
GO = "▄",
WO = "Љ",
JO = "љ",
YO = "⇇",
KO = "≪",
XO = "⋘",
ZO = "⌞",
QO = "⇚",
eL = "⥫",
tL = "◺",
nL = "Ŀ",
sL = "ŀ",
aL = "⎰",
oL = "⎰",
rL = "⪉",
iL = "⪉",
cL = "⪇",
lL = "≨",
uL = "⪇",
pL = "≨",
dL = "⋦",
mL = "⟬",
fL = "⇽",
hL = "⟦",
gL = "⟵",
bL = "⟵",
vL = "⟸",
xL = "⟷",
yL = "⟷",
wL = "⟺",
kL = "⟼",
_L = "⟶",
CL = "⟶",
EL = "⟹",
AL = "↫",
SL = "↬",
TL = "⦅",
DL = "𝕃",
IL = "𝕝",
NL = "⨭",
ML = "⨴",
OL = "∗",
LL = "_",
RL = "↙",
PL = "↘",
BL = "◊",
zL = "◊",
qL = "⧫",
FL = "(",
jL = "⦓",
$L = "⇆",
UL = "⌟",
VL = "⇋",
HL = "⥭",
GL = "‎",
WL = "⊿",
JL = "‹",
YL = "𝓁",
KL = "ℒ",
XL = "↰",
ZL = "↰",
QL = "≲",
e3 = "⪍",
t3 = "⪏",
n3 = "[",
s3 = "‘",
a3 = "‚",
o3 = "Ł",
r3 = "ł",
i3 = "⪦",
c3 = "⩹",
l3 = "<",
u3 = "<",
p3 = "≪",
d3 = "⋖",
m3 = "⋋",
f3 = "⋉",
h3 = "⥶",
g3 = "⩻",
b3 = "◃",
v3 = "⊴",
x3 = "◂",
y3 = "⦖",
w3 = "⥊",
k3 = "⥦",
_3 = "≨︀",
C3 = "≨︀",
E3 = "¯",
A3 = "♂",
S3 = "✠",
T3 = "✠",
D3 = "↦",
I3 = "↦",
N3 = "↧",
M3 = "↤",
O3 = "↥",
L3 = "▮",
R3 = "⨩",
P3 = "М",
B3 = "м",
z3 = "—",
q3 = "∺",
F3 = "∡",
j3 = " ",
$3 = "ℳ",
U3 = "𝔐",
V3 = "𝔪",
H3 = "℧",
G3 = "µ",
W3 = "*",
J3 = "⫰",
Y3 = "∣",
K3 = "·",
X3 = "⊟",
Z3 = "−",
Q3 = "∸",
eR = "⨪",
tR = "∓",
nR = "⫛",
sR = "…",
aR = "∓",
oR = "⊧",
rR = "𝕄",
iR = "𝕞",
cR = "∓",
lR = "𝓂",
uR = "ℳ",
pR = "∾",
dR = "Μ",
mR = "μ",
fR = "⊸",
hR = "⊸",
gR = "∇",
bR = "Ń",
vR = "ń",
xR = "∠⃒",
yR = "≉",
wR = "⩰̸",
kR = "≋̸",
_R = "ʼn",
CR = "≉",
ER = "♮",
AR = "ℕ",
SR = "♮",
TR = " ",
DR = "≎̸",
IR = "≏̸",
NR = "⩃",
MR = "Ň",
OR = "ň",
LR = "Ņ",
RR = "ņ",
PR = "≇",
BR = "⩭̸",
zR = "⩂",
qR = "Н",
FR = "н",
jR = "–",
$R = "⤤",
UR = "↗",
VR = "⇗",
HR = "↗",
GR = "≠",
WR = "≐̸",
JR = "​",
YR = "​",
KR = "​",
XR = "​",
ZR = "≢",
QR = "⤨",
eP = "≂̸",
tP = "≫",
nP = "≪",
sP = `
`,
aP = "∄",
oP = "∄",
rP = "𝔑",
iP = "𝔫",
cP = "≧̸",
lP = "≱",
uP = "≱",
pP = "≧̸",
dP = "⩾̸",
mP = "⩾̸",
fP = "⋙̸",
hP = "≵",
gP = "≫⃒",
bP = "≯",
vP = "≯",
xP = "≫̸",
yP = "↮",
wP = "⇎",
kP = "⫲",
_P = "∋",
CP = "⋼",
EP = "⋺",
AP = "∋",
SP = "Њ",
TP = "њ",
DP = "↚",
IP = "⇍",
NP = "‥",
MP = "≦̸",
OP = "≰",
LP = "↚",
RP = "⇍",
PP = "↮",
BP = "⇎",
zP = "≰",
qP = "≦̸",
FP = "⩽̸",
jP = "⩽̸",
$P = "≮",
UP = "⋘̸",
VP = "≴",
HP = "≪⃒",
GP = "≮",
WP = "⋪",
JP = "⋬",
YP = "≪̸",
KP = "∤",
XP = "⁠",
ZP = " ",
QP = "𝕟",
e4 = "ℕ",
t4 = "⫬",
n4 = "¬",
s4 = "≢",
a4 = "≭",
o4 = "∦",
r4 = "∉",
i4 = "≠",
c4 = "≂̸",
l4 = "∄",
u4 = "≯",
p4 = "≱",
d4 = "≧̸",
m4 = "≫̸",
f4 = "≹",
h4 = "⩾̸",
g4 = "≵",
b4 = "≎̸",
v4 = "≏̸",
x4 = "∉",
y4 = "⋵̸",
w4 = "⋹̸",
k4 = "∉",
_4 = "⋷",
C4 = "⋶",
E4 = "⧏̸",
A4 = "⋪",
S4 = "⋬",
T4 = "≮",
D4 = "≰",
I4 = "≸",
N4 = "≪̸",
M4 = "⩽̸",
O4 = "≴",
L4 = "⪢̸",
R4 = "⪡̸",
P4 = "∌",
B4 = "∌",
z4 = "⋾",
q4 = "⋽",
F4 = "⊀",
j4 = "⪯̸",
$4 = "⋠",
U4 = "∌",
V4 = "⧐̸",
H4 = "⋫",
G4 = "⋭",
W4 = "⊏̸",
J4 = "⋢",
Y4 = "⊐̸",
K4 = "⋣",
X4 = "⊂⃒",
Z4 = "⊈",
Q4 = "⊁",
e6 = "⪰̸",
t6 = "⋡",
n6 = "≿̸",
s6 = "⊃⃒",
a6 = "⊉",
o6 = "≁",
r6 = "≄",
i6 = "≇",
c6 = "≉",
l6 = "∤",
u6 = "∦",
p6 = "∦",
d6 = "⫽⃥",
m6 = "∂̸",
f6 = "⨔",
h6 = "⊀",
g6 = "⋠",
b6 = "⊀",
v6 = "⪯̸",
x6 = "⪯̸",
y6 = "⤳̸",
w6 = "↛",
k6 = "⇏",
_6 = "↝̸",
C6 = "↛",
E6 = "⇏",
A6 = "⋫",
S6 = "⋭",
T6 = "⊁",
D6 = "⋡",
I6 = "⪰̸",
N6 = "𝒩",
M6 = "𝓃",
O6 = "∤",
L6 = "∦",
R6 = "≁",
P6 = "≄",
B6 = "≄",
z6 = "∤",
q6 = "∦",
F6 = "⋢",
j6 = "⋣",
$6 = "⊄",
U6 = "⫅̸",
V6 = "⊈",
H6 = "⊂⃒",
G6 = "⊈",
W6 = "⫅̸",
J6 = "⊁",
Y6 = "⪰̸",
K6 = "⊅",
X6 = "⫆̸",
Z6 = "⊉",
Q6 = "⊃⃒",
eB = "⊉",
tB = "⫆̸",
nB = "≹",
sB = "Ñ",
aB = "ñ",
oB = "≸",
rB = "⋪",
iB = "⋬",
cB = "⋫",
lB = "⋭",
uB = "Ν",
pB = "ν",
dB = "#",
mB = "№",
fB = " ",
hB = "≍⃒",
gB = "⊬",
bB = "⊭",
vB = "⊮",
xB = "⊯",
yB = "≥⃒",
wB = ">⃒",
kB = "⤄",
_B = "⧞",
CB = "⤂",
EB = "≤⃒",
AB = "<⃒",
SB = "⊴⃒",
TB = "⤃",
DB = "⊵⃒",
IB = "∼⃒",
NB = "⤣",
MB = "↖",
OB = "⇖",
LB = "↖",
RB = "⤧",
PB = "Ó",
BB = "ó",
zB = "⊛",
qB = "Ô",
FB = "ô",
jB = "⊚",
$B = "О",
UB = "о",
VB = "⊝",
HB = "Ő",
GB = "ő",
WB = "⨸",
JB = "⊙",
YB = "⦼",
KB = "Œ",
XB = "œ",
ZB = "⦿",
QB = "𝔒",
e5 = "𝔬",
t5 = "˛",
n5 = "Ò",
s5 = "ò",
a5 = "⧁",
o5 = "⦵",
r5 = "Ω",
i5 = "∮",
c5 = "↺",
l5 = "⦾",
u5 = "⦻",
p5 = "‾",
d5 = "⧀",
m5 = "Ō",
f5 = "ō",
h5 = "Ω",
g5 = "ω",
b5 = "Ο",
v5 = "ο",
x5 = "⦶",
y5 = "⊖",
w5 = "𝕆",
k5 = "𝕠",
_5 = "⦷",
C5 = "“",
E5 = "‘",
A5 = "⦹",
S5 = "⊕",
T5 = "↻",
D5 = "⩔",
I5 = "∨",
N5 = "⩝",
M5 = "ℴ",
O5 = "ℴ",
L5 = "ª",
R5 = "º",
P5 = "⊶",
B5 = "⩖",
z5 = "⩗",
q5 = "⩛",
F5 = "Ⓢ",
j5 = "𝒪",
$5 = "ℴ",
U5 = "Ø",
V5 = "ø",
H5 = "⊘",
G5 = "Õ",
W5 = "õ",
J5 = "⨶",
Y5 = "⨷",
K5 = "⊗",
X5 = "Ö",
Z5 = "ö",
Q5 = "⌽",
ez = "‾",
tz = "⏞",
nz = "⎴",
sz = "⏜",
az = "¶",
oz = "∥",
rz = "∥",
iz = "⫳",
cz = "⫽",
lz = "∂",
uz = "∂",
pz = "П",
dz = "п",
mz = "%",
fz = ".",
hz = "‰",
gz = "⊥",
bz = "‱",
vz = "𝔓",
xz = "𝔭",
yz = "Φ",
wz = "φ",
kz = "ϕ",
_z = "ℳ",
Cz = "☎",
Ez = "Π",
Az = "π",
Sz = "⋔",
Tz = "ϖ",
Dz = "ℏ",
Iz = "ℎ",
Nz = "ℏ",
Mz = "⨣",
Oz = "⊞",
Lz = "⨢",
Rz = "+",
Pz = "∔",
Bz = "⨥",
zz = "⩲",
qz = "±",
Fz = "±",
jz = "⨦",
$z = "⨧",
Uz = "±",
Vz = "ℌ",
Hz = "⨕",
Gz = "𝕡",
Wz = "ℙ",
Jz = "£",
Yz = "⪷",
Kz = "⪻",
Xz = "≺",
Zz = "≼",
Qz = "⪷",
eq = "≺",
tq = "≼",
nq = "≺",
sq = "⪯",
aq = "≼",
oq = "≾",
rq = "⪯",
iq = "⪹",
cq = "⪵",
lq = "⋨",
uq = "⪯",
pq = "⪳",
dq = "≾",
mq = "′",
fq = "″",
hq = "ℙ",
gq = "⪹",
bq = "⪵",
vq = "⋨",
xq = "∏",
yq = "∏",
wq = "⌮",
kq = "⌒",
_q = "⌓",
Cq = "∝",
Eq = "∝",
Aq = "∷",
Sq = "∝",
Tq = "≾",
Dq = "⊰",
Iq = "𝒫",
Nq = "𝓅",
Mq = "Ψ",
Oq = "ψ",
Lq = " ",
Rq = "𝔔",
Pq = "𝔮",
Bq = "⨌",
zq = "𝕢",
qq = "ℚ",
Fq = "⁗",
jq = "𝒬",
$q = "𝓆",
Uq = "ℍ",
Vq = "⨖",
Hq = "?",
Gq = "≟",
Wq = '"',
Jq = '"',
Yq = "⇛",
Kq = "∽̱",
Xq = "Ŕ",
Zq = "ŕ",
Qq = "√",
e8 = "⦳",
t8 = "⟩",
n8 = "⟫",
s8 = "⦒",
a8 = "⦥",
o8 = "⟩",
r8 = "»",
i8 = "⥵",
c8 = "⇥",
l8 = "⤠",
u8 = "⤳",
p8 = "→",
d8 = "↠",
m8 = "⇒",
f8 = "⤞",
h8 = "↪",
g8 = "↬",
b8 = "⥅",
v8 = "⥴",
x8 = "⤖",
y8 = "↣",
w8 = "↝",
k8 = "⤚",
_8 = "⤜",
C8 = "∶",
E8 = "ℚ",
A8 = "⤍",
S8 = "⤏",
T8 = "⤐",
D8 = "❳",
I8 = "}",
N8 = "]",
M8 = "⦌",
O8 = "⦎",
L8 = "⦐",
R8 = "Ř",
P8 = "ř",
B8 = "Ŗ",
z8 = "ŗ",
q8 = "⌉",
F8 = "}",
j8 = "Р",
$8 = "р",
U8 = "⤷",
V8 = "⥩",
H8 = "”",
G8 = "”",
W8 = "↳",
J8 = "ℜ",
Y8 = "ℛ",
K8 = "ℜ",
X8 = "ℝ",
Z8 = "ℜ",
Q8 = "▭",
eF = "®",
tF = "®",
nF = "∋",
sF = "⇋",
aF = "⥯",
oF = "⥽",
rF = "⌋",
iF = "𝔯",
cF = "ℜ",
lF = "⥤",
uF = "⇁",
pF = "⇀",
dF = "⥬",
mF = "Ρ",
fF = "ρ",
hF = "ϱ",
gF = "⟩",
bF = "⇥",
vF = "→",
xF = "→",
yF = "⇒",
wF = "⇄",
kF = "↣",
_F = "⌉",
CF = "⟧",
EF = "⥝",
AF = "⥕",
SF = "⇂",
TF = "⌋",
DF = "⇁",
IF = "⇀",
NF = "⇄",
MF = "⇌",
OF = "⇉",
LF = "↝",
RF = "↦",
PF = "⊢",
BF = "⥛",
zF = "⋌",
qF = "⧐",
FF = "⊳",
jF = "⊵",
$F = "⥏",
UF = "⥜",
VF = "⥔",
HF = "↾",
GF = "⥓",
WF = "⇀",
JF = "˚",
YF = "≓",
KF = "⇄",
XF = "⇌",
ZF = "‏",
QF = "⎱",
e7 = "⎱",
t7 = "⫮",
n7 = "⟭",
s7 = "⇾",
a7 = "⟧",
o7 = "⦆",
r7 = "𝕣",
i7 = "ℝ",
c7 = "⨮",
l7 = "⨵",
u7 = "⥰",
p7 = ")",
d7 = "⦔",
m7 = "⨒",
f7 = "⇉",
h7 = "⇛",
g7 = "›",
b7 = "𝓇",
v7 = "ℛ",
x7 = "↱",
y7 = "↱",
w7 = "]",
k7 = "’",
_7 = "’",
C7 = "⋌",
E7 = "⋊",
A7 = "▹",
S7 = "⊵",
T7 = "▸",
D7 = "⧎",
I7 = "⧴",
N7 = "⥨",
M7 = "℞",
O7 = "Ś",
L7 = "ś",
R7 = "‚",
P7 = "⪸",
B7 = "Š",
z7 = "š",
q7 = "⪼",
F7 = "≻",
j7 = "≽",
$7 = "⪰",
U7 = "⪴",
V7 = "Ş",
H7 = "ş",
G7 = "Ŝ",
W7 = "ŝ",
J7 = "⪺",
Y7 = "⪶",
K7 = "⋩",
X7 = "⨓",
Z7 = "≿",
Q7 = "С",
ej = "с",
tj = "⊡",
nj = "⋅",
sj = "⩦",
aj = "⤥",
oj = "↘",
rj = "⇘",
ij = "↘",
cj = "§",
lj = ";",
uj = "⤩",
pj = "∖",
dj = "∖",
mj = "✶",
fj = "𝔖",
hj = "𝔰",
gj = "⌢",
bj = "♯",
vj = "Щ",
xj = "щ",
yj = "Ш",
wj = "ш",
kj = "↓",
_j = "←",
Cj = "∣",
Ej = "∥",
Aj = "→",
Sj = "↑",
Tj = "­",
Dj = "Σ",
Ij = "σ",
Nj = "ς",
Mj = "ς",
Oj = "∼",
Lj = "⩪",
Rj = "≃",
Pj = "≃",
Bj = "⪞",
zj = "⪠",
qj = "⪝",
Fj = "⪟",
jj = "≆",
$j = "⨤",
Uj = "⥲",
Vj = "←",
Hj = "∘",
Gj = "∖",
Wj = "⨳",
Jj = "⧤",
Yj = "∣",
Kj = "⌣",
Xj = "⪪",
Zj = "⪬",
Qj = "⪬︀",
e9 = "Ь",
t9 = "ь",
n9 = "⌿",
s9 = "⧄",
a9 = "/",
o9 = "𝕊",
r9 = "𝕤",
i9 = "♠",
c9 = "♠",
l9 = "∥",
u9 = "⊓",
p9 = "⊓︀",
d9 = "⊔",
m9 = "⊔︀",
f9 = "√",
h9 = "⊏",
g9 = "⊑",
b9 = "⊏",
v9 = "⊑",
x9 = "⊐",
y9 = "⊒",
w9 = "⊐",
k9 = "⊒",
_9 = "□",
C9 = "□",
E9 = "⊓",
A9 = "⊏",
S9 = "⊑",
T9 = "⊐",
D9 = "⊒",
I9 = "⊔",
N9 = "▪",
M9 = "□",
O9 = "▪",
L9 = "→",
R9 = "𝒮",
P9 = "𝓈",
B9 = "∖",
z9 = "⌣",
q9 = "⋆",
F9 = "⋆",
j9 = "☆",
$9 = "★",
U9 = "ϵ",
V9 = "ϕ",
H9 = "¯",
G9 = "⊂",
W9 = "⋐",
J9 = "⪽",
Y9 = "⫅",
K9 = "⊆",
X9 = "⫃",
Z9 = "⫁",
Q9 = "⫋",
e$ = "⊊",
t$ = "⪿",
n$ = "⥹",
s$ = "⊂",
a$ = "⋐",
o$ = "⊆",
r$ = "⫅",
i$ = "⊆",
c$ = "⊊",
l$ = "⫋",
u$ = "⫇",
p$ = "⫕",
d$ = "⫓",
m$ = "⪸",
f$ = "≻",
h$ = "≽",
g$ = "≻",
b$ = "⪰",
v$ = "≽",
x$ = "≿",
y$ = "⪰",
w$ = "⪺",
k$ = "⪶",
_$ = "⋩",
C$ = "≿",
E$ = "∋",
A$ = "∑",
S$ = "∑",
T$ = "♪",
D$ = "¹",
I$ = "²",
N$ = "³",
M$ = "⊃",
O$ = "⋑",
L$ = "⪾",
R$ = "⫘",
P$ = "⫆",
B$ = "⊇",
z$ = "⫄",
q$ = "⊃",
F$ = "⊇",
j$ = "⟉",
$$ = "⫗",
U$ = "⥻",
V$ = "⫂",
H$ = "⫌",
G$ = "⊋",
W$ = "⫀",
J$ = "⊃",
Y$ = "⋑",
K$ = "⊇",
X$ = "⫆",
Z$ = "⊋",
Q$ = "⫌",
eU = "⫈",
tU = "⫔",
nU = "⫖",
sU = "⤦",
aU = "↙",
oU = "⇙",
rU = "↙",
iU = "⤪",
cU = "ß",
lU = " ",
uU = "⌖",
pU = "Τ",
dU = "τ",
mU = "⎴",
fU = "Ť",
hU = "ť",
gU = "Ţ",
bU = "ţ",
vU = "Т",
xU = "т",
yU = "⃛",
wU = "⌕",
kU = "𝔗",
_U = "𝔱",
CU = "∴",
EU = "∴",
AU = "∴",
SU = "Θ",
TU = "θ",
DU = "ϑ",
IU = "ϑ",
NU = "≈",
MU = "∼",
OU = "  ",
LU = " ",
RU = " ",
PU = "≈",
BU = "∼",
zU = "Þ",
qU = "þ",
FU = "˜",
jU = "∼",
$U = "≃",
UU = "≅",
VU = "≈",
HU = "⨱",
GU = "⊠",
WU = "×",
JU = "⨰",
YU = "∭",
KU = "⤨",
XU = "⌶",
ZU = "⫱",
QU = "⊤",
eV = "𝕋",
tV = "𝕥",
nV = "⫚",
sV = "⤩",
aV = "‴",
oV = "™",
rV = "™",
iV = "▵",
cV = "▿",
lV = "◃",
uV = "⊴",
pV = "≜",
dV = "▹",
mV = "⊵",
fV = "◬",
hV = "≜",
gV = "⨺",
bV = "⃛",
vV = "⨹",
xV = "⧍",
yV = "⨻",
wV = "⏢",
kV = "𝒯",
_V = "𝓉",
CV = "Ц",
EV = "ц",
AV = "Ћ",
SV = "ћ",
TV = "Ŧ",
DV = "ŧ",
IV = "≬",
NV = "↞",
MV = "↠",
OV = "Ú",
LV = "ú",
RV = "↑",
PV = "↟",
BV = "⇑",
zV = "⥉",
qV = "Ў",
FV = "ў",
jV = "Ŭ",
$V = "ŭ",
UV = "Û",
VV = "û",
HV = "У",
GV = "у",
WV = "⇅",
JV = "Ű",
YV = "ű",
KV = "⥮",
XV = "⥾",
ZV = "𝔘",
QV = "𝔲",
eH = "Ù",
tH = "ù",
nH = "⥣",
sH = "↿",
aH = "↾",
oH = "▀",
rH = "⌜",
iH = "⌜",
cH = "⌏",
lH = "◸",
uH = "Ū",
pH = "ū",
dH = "¨",
mH = "_",
fH = "⏟",
hH = "⎵",
gH = "⏝",
bH = "⋃",
vH = "⊎",
xH = "Ų",
yH = "ų",
wH = "𝕌",
kH = "𝕦",
_H = "⤒",
CH = "↑",
EH = "↑",
AH = "⇑",
SH = "⇅",
TH = "↕",
DH = "↕",
IH = "⇕",
NH = "⥮",
MH = "↿",
OH = "↾",
LH = "⊎",
RH = "↖",
PH = "↗",
BH = "υ",
zH = "ϒ",
qH = "ϒ",
FH = "Υ",
jH = "υ",
$H = "↥",
UH = "⊥",
VH = "⇈",
HH = "⌝",
GH = "⌝",
WH = "⌎",
JH = "Ů",
YH = "ů",
KH = "◹",
XH = "𝒰",
ZH = "𝓊",
QH = "⋰",
eG = "Ũ",
tG = "ũ",
nG = "▵",
sG = "▴",
aG = "⇈",
oG = "Ü",
rG = "ü",
iG = "⦧",
cG = "⦜",
lG = "ϵ",
uG = "ϰ",
pG = "∅",
dG = "ϕ",
mG = "ϖ",
fG = "∝",
hG = "↕",
gG = "⇕",
bG = "ϱ",
vG = "ς",
xG = "⊊︀",
yG = "⫋︀",
wG = "⊋︀",
kG = "⫌︀",
_G = "ϑ",
CG = "⊲",
EG = "⊳",
AG = "⫨",
SG = "⫫",
TG = "⫩",
DG = "В",
IG = "в",
NG = "⊢",
MG = "⊨",
OG = "⊩",
LG = "⊫",
RG = "⫦",
PG = "⊻",
BG = "∨",
zG = "⋁",
qG = "≚",
FG = "⋮",
jG = "|",
$G = "‖",
UG = "|",
VG = "‖",
HG = "∣",
GG = "|",
WG = "❘",
JG = "≀",
YG = " ",
KG = "𝔙",
XG = "𝔳",
ZG = "⊲",
QG = "⊂⃒",
eW = "⊃⃒",
tW = "𝕍",
nW = "𝕧",
sW = "∝",
aW = "⊳",
oW = "𝒱",
rW = "𝓋",
iW = "⫋︀",
cW = "⊊︀",
lW = "⫌︀",
uW = "⊋︀",
pW = "⊪",
dW = "⦚",
mW = "Ŵ",
fW = "ŵ",
hW = "⩟",
gW = "∧",
bW = "⋀",
vW = "≙",
xW = "℘",
yW = "𝔚",
wW = "𝔴",
kW = "𝕎",
_W = "𝕨",
CW = "℘",
EW = "≀",
AW = "≀",
SW = "𝒲",
TW = "𝓌",
DW = "⋂",
IW = "◯",
NW = "⋃",
MW = "▽",
OW = "𝔛",
LW = "𝔵",
RW = "⟷",
PW = "⟺",
BW = "Ξ",
zW = "ξ",
qW = "⟵",
FW = "⟸",
jW = "⟼",
$W = "⋻",
UW = "⨀",
VW = "𝕏",
HW = "𝕩",
GW = "⨁",
WW = "⨂",
JW = "⟶",
YW = "⟹",
KW = "𝒳",
XW = "𝓍",
ZW = "⨆",
QW = "⨄",
eJ = "△",
tJ = "⋁",
nJ = "⋀",
sJ = "Ý",
aJ = "ý",
oJ = "Я",
rJ = "я",
iJ = "Ŷ",
cJ = "ŷ",
lJ = "Ы",
uJ = "ы",
pJ = "¥",
dJ = "𝔜",
mJ = "𝔶",
fJ = "Ї",
hJ = "ї",
gJ = "𝕐",
bJ = "𝕪",
vJ = "𝒴",
xJ = "𝓎",
yJ = "Ю",
wJ = "ю",
kJ = "ÿ",
_J = "Ÿ",
CJ = "Ź",
EJ = "ź",
AJ = "Ž",
SJ = "ž",
TJ = "З",
DJ = "з",
IJ = "Ż",
NJ = "ż",
MJ = "ℨ",
OJ = "​",
LJ = "Ζ",
RJ = "ζ",
PJ = "𝔷",
BJ = "ℨ",
zJ = "Ж",
qJ = "ж",
FJ = "⇝",
jJ = "𝕫",
$J = "ℤ",
UJ = "𝒵",
VJ = "𝓏",
HJ = "‍",
GJ = "‌",
WJ = {
Aacute: Ix,
aacute: Nx,
Abreve: Mx,
abreve: Ox,
ac: Lx,
acd: Rx,
acE: Px,
Acirc: Bx,
acirc: zx,
acute: qx,
Acy: Fx,
acy: jx,
AElig: $x,
aelig: Ux,
af: Vx,
Afr: Hx,
afr: Gx,
Agrave: Wx,
agrave: Jx,
alefsym: Yx,
aleph: Kx,
Alpha: Xx,
alpha: Zx,
Amacr: Qx,
amacr: ey,
amalg: ty,
amp: ny,
AMP: sy,
andand: ay,
And: oy,
and: ry,
andd: iy,
andslope: cy,
andv: ly,
ang: uy,
ange: py,
angle: dy,
angmsdaa: my,
angmsdab: fy,
angmsdac: hy,
angmsdad: gy,
angmsdae: by,
angmsdaf: vy,
angmsdag: xy,
angmsdah: yy,
angmsd: wy,
angrt: ky,
angrtvb: _y,
angrtvbd: Cy,
angsph: Ey,
angst: Ay,
angzarr: Sy,
Aogon: Ty,
aogon: Dy,
Aopf: Iy,
aopf: Ny,
apacir: My,
ap: Oy,
apE: Ly,
ape: Ry,
apid: Py,
apos: By,
ApplyFunction: zy,
approx: qy,
approxeq: Fy,
Aring: jy,
aring: $y,
Ascr: Uy,
ascr: Vy,
Assign: Hy,
ast: Gy,
asymp: Wy,
asympeq: Jy,
Atilde: Yy,
atilde: Ky,
Auml: Xy,
auml: Zy,
awconint: Qy,
awint: ew,
backcong: tw,
backepsilon: nw,
backprime: sw,
backsim: aw,
backsimeq: ow,
Backslash: rw,
Barv: iw,
barvee: cw,
barwed: lw,
Barwed: uw,
barwedge: pw,
bbrk: dw,
bbrktbrk: mw,
bcong: fw,
Bcy: hw,
bcy: gw,
bdquo: bw,
becaus: vw,
because: xw,
Because: yw,
bemptyv: ww,
bepsi: kw,
bernou: _w,
Bernoullis: Cw,
Beta: Ew,
beta: Aw,
beth: Sw,
between: Tw,
Bfr: Dw,
bfr: Iw,
bigcap: Nw,
bigcirc: Mw,
bigcup: Ow,
bigodot: Lw,
bigoplus: Rw,
bigotimes: Pw,
bigsqcup: Bw,
bigstar: zw,
bigtriangledown: qw,
bigtriangleup: Fw,
biguplus: jw,
bigvee: $w,
bigwedge: Uw,
bkarow: Vw,
blacklozenge: Hw,
blacksquare: Gw,
blacktriangle: Ww,
blacktriangledown: Jw,
blacktriangleleft: Yw,
blacktriangleright: Kw,
blank: Xw,
blk12: Zw,
blk14: Qw,
blk34: ek,
block: tk,
bne: nk,
bnequiv: sk,
bNot: ak,
bnot: ok,
Bopf: rk,
bopf: ik,
bot: ck,
bottom: lk,
bowtie: uk,
boxbox: pk,
boxdl: dk,
boxdL: mk,
boxDl: fk,
boxDL: hk,
boxdr: gk,
boxdR: bk,
boxDr: vk,
boxDR: xk,
boxh: yk,
boxH: wk,
boxhd: kk,
boxHd: _k,
boxhD: Ck,
boxHD: Ek,
boxhu: Ak,
boxHu: Sk,
boxhU: Tk,
boxHU: Dk,
boxminus: Ik,
boxplus: Nk,
boxtimes: Mk,
boxul: Ok,
boxuL: Lk,
boxUl: Rk,
boxUL: Pk,
boxur: Bk,
boxuR: zk,
boxUr: qk,
boxUR: Fk,
boxv: jk,
boxV: $k,
boxvh: Uk,
boxvH: Vk,
boxVh: Hk,
boxVH: Gk,
boxvl: Wk,
boxvL: Jk,
boxVl: Yk,
boxVL: Kk,
boxvr: Xk,
boxvR: Zk,
boxVr: Qk,
boxVR: e0,
bprime: t0,
breve: n0,
Breve: s0,
brvbar: a0,
bscr: o0,
Bscr: r0,
bsemi: i0,
bsim: c0,
bsime: l0,
bsolb: u0,
bsol: p0,
bsolhsub: d0,
bull: m0,
bullet: f0,
bump: h0,
bumpE: g0,
bumpe: b0,
Bumpeq: v0,
bumpeq: x0,
Cacute: y0,
cacute: w0,
capand: k0,
capbrcup: _0,
capcap: C0,
cap: E0,
Cap: A0,
capcup: S0,
capdot: T0,
CapitalDifferentialD: D0,
caps: I0,
caret: N0,
caron: M0,
Cayleys: O0,
ccaps: L0,
Ccaron: R0,
ccaron: P0,
Ccedil: B0,
ccedil: z0,
Ccirc: q0,
ccirc: F0,
Cconint: j0,
ccups: $0,
ccupssm: U0,
Cdot: V0,
cdot: H0,
cedil: G0,
Cedilla: W0,
cemptyv: J0,
cent: Y0,
centerdot: K0,
CenterDot: X0,
cfr: Z0,
Cfr: Q0,
CHcy: e_,
chcy: t_,
check: n_,
checkmark: s_,
Chi: a_,
chi: o_,
circ: r_,
circeq: i_,
circlearrowleft: c_,
circlearrowright: l_,
circledast: u_,
circledcirc: p_,
circleddash: d_,
CircleDot: m_,
circledR: f_,
circledS: h_,
CircleMinus: g_,
CirclePlus: b_,
CircleTimes: v_,
cir: x_,
cirE: y_,
cire: w_,
cirfnint: k_,
cirmid: __,
cirscir: C_,
ClockwiseContourIntegral: E_,
CloseCurlyDoubleQuote: A_,
CloseCurlyQuote: S_,
clubs: T_,
clubsuit: D_,
colon: I_,
Colon: N_,
Colone: M_,
colone: O_,
coloneq: L_,
comma: R_,
commat: P_,
comp: B_,
compfn: z_,
complement: q_,
complexes: F_,
cong: j_,
congdot: $_,
Congruent: U_,
conint: V_,
Conint: H_,
ContourIntegral: G_,
copf: W_,
Copf: J_,
coprod: Y_,
Coproduct: K_,
copy: X_,
COPY: Z_,
copysr: Q_,
CounterClockwiseContourIntegral: e1,
crarr: t1,
cross: n1,
Cross: s1,
Cscr: a1,
cscr: o1,
csub: r1,
csube: i1,
csup: c1,
csupe: l1,
ctdot: u1,
cudarrl: p1,
cudarrr: d1,
cuepr: m1,
cuesc: f1,
cularr: h1,
cularrp: g1,
cupbrcap: b1,
cupcap: v1,
CupCap: x1,
cup: y1,
Cup: w1,
cupcup: k1,
cupdot: _1,
cupor: C1,
cups: E1,
curarr: A1,
curarrm: S1,
curlyeqprec: T1,
curlyeqsucc: D1,
curlyvee: I1,
curlywedge: N1,
curren: M1,
curvearrowleft: O1,
curvearrowright: L1,
cuvee: R1,
cuwed: P1,
cwconint: B1,
cwint: z1,
cylcty: q1,
dagger: F1,
Dagger: j1,
daleth: $1,
darr: U1,
Darr: V1,
dArr: H1,
dash: G1,
Dashv: W1,
dashv: J1,
dbkarow: Y1,
dblac: K1,
Dcaron: X1,
dcaron: Z1,
Dcy: Q1,
dcy: eC,
ddagger: tC,
ddarr: nC,
DD: sC,
dd: aC,
DDotrahd: oC,
ddotseq: rC,
deg: iC,
Del: cC,
Delta: lC,
delta: uC,
demptyv: pC,
dfisht: dC,
Dfr: mC,
dfr: fC,
dHar: hC,
dharl: gC,
dharr: bC,
DiacriticalAcute: vC,
DiacriticalDot: xC,
DiacriticalDoubleAcute: yC,
DiacriticalGrave: wC,
DiacriticalTilde: kC,
diam: _C,
diamond: CC,
Diamond: EC,
diamondsuit: AC,
diams: SC,
die: TC,
DifferentialD: DC,
digamma: IC,
disin: NC,
div: MC,
divide: OC,
divideontimes: LC,
divonx: RC,
DJcy: PC,
djcy: BC,
dlcorn: zC,
dlcrop: qC,
dollar: FC,
Dopf: jC,
dopf: $C,
Dot: UC,
dot: VC,
DotDot: HC,
doteq: GC,
doteqdot: WC,
DotEqual: JC,
dotminus: YC,
dotplus: KC,
dotsquare: XC,
doublebarwedge: ZC,
DoubleContourIntegral: QC,
DoubleDot: eE,
DoubleDownArrow: tE,
DoubleLeftArrow: nE,
DoubleLeftRightArrow: sE,
DoubleLeftTee: aE,
DoubleLongLeftArrow: oE,
DoubleLongLeftRightArrow: rE,
DoubleLongRightArrow: iE,
DoubleRightArrow: cE,
DoubleRightTee: lE,
DoubleUpArrow: uE,
DoubleUpDownArrow: pE,
DoubleVerticalBar: dE,
DownArrowBar: mE,
downarrow: fE,
DownArrow: hE,
Downarrow: gE,
DownArrowUpArrow: bE,
DownBreve: vE,
downdownarrows: xE,
downharpoonleft: yE,
downharpoonright: wE,
DownLeftRightVector: kE,
DownLeftTeeVector: _E,
DownLeftVectorBar: CE,
DownLeftVector: EE,
DownRightTeeVector: AE,
DownRightVectorBar: SE,
DownRightVector: TE,
DownTeeArrow: DE,
DownTee: IE,
drbkarow: NE,
drcorn: ME,
drcrop: OE,
Dscr: LE,
dscr: RE,
DScy: PE,
dscy: BE,
dsol: zE,
Dstrok: qE,
dstrok: FE,
dtdot: jE,
dtri: $E,
dtrif: UE,
duarr: VE,
duhar: HE,
dwangle: GE,
DZcy: WE,
dzcy: JE,
dzigrarr: YE,
Eacute: KE,
eacute: XE,
easter: ZE,
Ecaron: QE,
ecaron: eA,
Ecirc: tA,
ecirc: nA,
ecir: sA,
ecolon: aA,
Ecy: oA,
ecy: rA,
eDDot: iA,
Edot: cA,
edot: lA,
eDot: uA,
ee: pA,
efDot: dA,
Efr: mA,
efr: fA,
eg: hA,
Egrave: gA,
egrave: bA,
egs: vA,
egsdot: xA,
el: yA,
Element: wA,
elinters: kA,
ell: _A,
els: CA,
elsdot: EA,
Emacr: AA,
emacr: SA,
empty: TA,
emptyset: DA,
EmptySmallSquare: IA,
emptyv: NA,
EmptyVerySmallSquare: MA,
emsp13: OA,
emsp14: LA,
emsp: RA,
ENG: PA,
eng: BA,
ensp: zA,
Eogon: qA,
eogon: FA,
Eopf: jA,
eopf: $A,
epar: UA,
eparsl: VA,
eplus: HA,
epsi: GA,
Epsilon: WA,
epsilon: JA,
epsiv: YA,
eqcirc: KA,
eqcolon: XA,
eqsim: ZA,
eqslantgtr: QA,
eqslantless: eS,
Equal: tS,
equals: nS,
EqualTilde: sS,
equest: aS,
Equilibrium: oS,
equiv: rS,
equivDD: iS,
eqvparsl: cS,
erarr: lS,
erDot: uS,
escr: pS,
Escr: dS,
esdot: mS,
Esim: fS,
esim: hS,
Eta: gS,
eta: bS,
ETH: vS,
eth: xS,
Euml: yS,
euml: wS,
euro: kS,
excl: _S,
exist: CS,
Exists: ES,
expectation: AS,
exponentiale: SS,
ExponentialE: TS,
fallingdotseq: DS,
Fcy: IS,
fcy: NS,
female: MS,
ffilig: OS,
fflig: LS,
ffllig: RS,
Ffr: PS,
ffr: BS,
filig: zS,
FilledSmallSquare: qS,
FilledVerySmallSquare: FS,
fjlig: jS,
flat: $S,
fllig: US,
fltns: VS,
fnof: HS,
Fopf: GS,
fopf: WS,
forall: JS,
ForAll: YS,
fork: KS,
forkv: XS,
Fouriertrf: ZS,
fpartint: QS,
frac12: eT,
frac13: tT,
frac14: nT,
frac15: sT,
frac16: aT,
frac18: oT,
frac23: rT,
frac25: iT,
frac34: cT,
frac35: lT,
frac38: uT,
frac45: pT,
frac56: dT,
frac58: mT,
frac78: fT,
frasl: hT,
frown: gT,
fscr: bT,
Fscr: vT,
gacute: xT,
Gamma: yT,
gamma: wT,
Gammad: kT,
gammad: _T,
gap: CT,
Gbreve: ET,
gbreve: AT,
Gcedil: ST,
Gcirc: TT,
gcirc: DT,
Gcy: IT,
gcy: NT,
Gdot: MT,
gdot: OT,
ge: LT,
gE: RT,
gEl: PT,
gel: BT,
geq: zT,
geqq: qT,
geqslant: FT,
gescc: jT,
ges: $T,
gesdot: UT,
gesdoto: VT,
gesdotol: HT,
gesl: GT,
gesles: WT,
Gfr: JT,
gfr: YT,
gg: KT,
Gg: XT,
ggg: ZT,
gimel: QT,
GJcy: e2,
gjcy: t2,
gla: n2,
gl: s2,
glE: a2,
glj: o2,
gnap: r2,
gnapprox: i2,
gne: c2,
gnE: l2,
gneq: u2,
gneqq: p2,
gnsim: d2,
Gopf: m2,
gopf: f2,
grave: h2,
GreaterEqual: g2,
GreaterEqualLess: b2,
GreaterFullEqual: v2,
GreaterGreater: x2,
GreaterLess: y2,
GreaterSlantEqual: w2,
GreaterTilde: k2,
Gscr: _2,
gscr: C2,
gsim: E2,
gsime: A2,
gsiml: S2,
gtcc: T2,
gtcir: D2,
gt: I2,
GT: N2,
Gt: M2,
gtdot: O2,
gtlPar: L2,
gtquest: R2,
gtrapprox: P2,
gtrarr: B2,
gtrdot: z2,
gtreqless: q2,
gtreqqless: F2,
gtrless: j2,
gtrsim: $2,
gvertneqq: U2,
gvnE: V2,
Hacek: H2,
hairsp: G2,
half: W2,
hamilt: J2,
HARDcy: Y2,
hardcy: K2,
harrcir: X2,
harr: Z2,
hArr: Q2,
harrw: eD,
Hat: tD,
hbar: nD,
Hcirc: sD,
hcirc: aD,
hearts: oD,
heartsuit: rD,
hellip: iD,
hercon: cD,
hfr: lD,
Hfr: uD,
HilbertSpace: pD,
hksearow: dD,
hkswarow: mD,
hoarr: fD,
homtht: hD,
hookleftarrow: gD,
hookrightarrow: bD,
hopf: vD,
Hopf: xD,
horbar: yD,
HorizontalLine: wD,
hscr: kD,
Hscr: _D,
hslash: CD,
Hstrok: ED,
hstrok: AD,
HumpDownHump: SD,
HumpEqual: TD,
hybull: DD,
hyphen: ID,
Iacute: ND,
iacute: MD,
ic: OD,
Icirc: LD,
icirc: RD,
Icy: PD,
icy: BD,
Idot: zD,
IEcy: qD,
iecy: FD,
iexcl: jD,
iff: $D,
ifr: UD,
Ifr: VD,
Igrave: HD,
igrave: GD,
ii: WD,
iiiint: JD,
iiint: YD,
iinfin: KD,
iiota: XD,
IJlig: ZD,
ijlig: QD,
Imacr: eI,
imacr: tI,
image: nI,
ImaginaryI: sI,
imagline: aI,
imagpart: oI,
imath: rI,
Im: iI,
imof: cI,
imped: lI,
Implies: uI,
incare: pI,
in: "∈",
infin: dI,
infintie: mI,
inodot: fI,
intcal: hI,
int: gI,
Int: bI,
integers: vI,
Integral: xI,
intercal: yI,
Intersection: wI,
intlarhk: kI,
intprod: _I,
InvisibleComma: CI,
InvisibleTimes: EI,
IOcy: AI,
iocy: SI,
Iogon: TI,
iogon: DI,
Iopf: II,
iopf: NI,
Iota: MI,
iota: OI,
iprod: LI,
iquest: RI,
iscr: PI,
Iscr: BI,
isin: zI,
isindot: qI,
isinE: FI,
isins: jI,
isinsv: $I,
isinv: UI,
it: VI,
Itilde: HI,
itilde: GI,
Iukcy: WI,
iukcy: JI,
Iuml: YI,
iuml: KI,
Jcirc: XI,
jcirc: ZI,
Jcy: QI,
jcy: eN,
Jfr: tN,
jfr: nN,
jmath: sN,
Jopf: aN,
jopf: oN,
Jscr: rN,
jscr: iN,
Jsercy: cN,
jsercy: lN,
Jukcy: uN,
jukcy: pN,
Kappa: dN,
kappa: mN,
kappav: fN,
Kcedil: hN,
kcedil: gN,
Kcy: bN,
kcy: vN,
Kfr: xN,
kfr: yN,
kgreen: wN,
KHcy: kN,
khcy: _N,
KJcy: CN,
kjcy: EN,
Kopf: AN,
kopf: SN,
Kscr: TN,
kscr: DN,
lAarr: IN,
Lacute: NN,
lacute: MN,
laemptyv: ON,
lagran: LN,
Lambda: RN,
lambda: PN,
lang: BN,
Lang: zN,
langd: qN,
langle: FN,
lap: jN,
Laplacetrf: $N,
laquo: UN,
larrb: VN,
larrbfs: HN,
larr: GN,
Larr: WN,
lArr: JN,
larrfs: YN,
larrhk: KN,
larrlp: XN,
larrpl: ZN,
larrsim: QN,
larrtl: eM,
latail: tM,
lAtail: nM,
lat: sM,
late: aM,
lates: oM,
lbarr: rM,
lBarr: iM,
lbbrk: cM,
lbrace: lM,
lbrack: uM,
lbrke: pM,
lbrksld: dM,
lbrkslu: mM,
Lcaron: fM,
lcaron: hM,
Lcedil: gM,
lcedil: bM,
lceil: vM,
lcub: xM,
Lcy: yM,
lcy: wM,
ldca: kM,
ldquo: _M,
ldquor: CM,
ldrdhar: EM,
ldrushar: AM,
ldsh: SM,
le: TM,
lE: DM,
LeftAngleBracket: IM,
LeftArrowBar: NM,
leftarrow: MM,
LeftArrow: OM,
Leftarrow: LM,
LeftArrowRightArrow: RM,
leftarrowtail: PM,
LeftCeiling: BM,
LeftDoubleBracket: zM,
LeftDownTeeVector: qM,
LeftDownVectorBar: FM,
LeftDownVector: jM,
LeftFloor: $M,
leftharpoondown: UM,
leftharpoonup: VM,
leftleftarrows: HM,
leftrightarrow: GM,
LeftRightArrow: WM,
Leftrightarrow: JM,
leftrightarrows: YM,
leftrightharpoons: KM,
leftrightsquigarrow: XM,
LeftRightVector: ZM,
LeftTeeArrow: QM,
LeftTee: eO,
LeftTeeVector: tO,
leftthreetimes: nO,
LeftTriangleBar: sO,
LeftTriangle: aO,
LeftTriangleEqual: oO,
LeftUpDownVector: rO,
LeftUpTeeVector: iO,
LeftUpVectorBar: cO,
LeftUpVector: lO,
LeftVectorBar: uO,
LeftVector: pO,
lEg: dO,
leg: mO,
leq: fO,
leqq: hO,
leqslant: gO,
lescc: bO,
les: vO,
lesdot: xO,
lesdoto: yO,
lesdotor: wO,
lesg: kO,
lesges: _O,
lessapprox: CO,
lessdot: EO,
lesseqgtr: AO,
lesseqqgtr: SO,
LessEqualGreater: TO,
LessFullEqual: DO,
LessGreater: IO,
lessgtr: NO,
LessLess: MO,
lesssim: OO,
LessSlantEqual: LO,
LessTilde: RO,
lfisht: PO,
lfloor: BO,
Lfr: zO,
lfr: qO,
lg: FO,
lgE: jO,
lHar: $O,
lhard: UO,
lharu: VO,
lharul: HO,
lhblk: GO,
LJcy: WO,
ljcy: JO,
llarr: YO,
ll: KO,
Ll: XO,
llcorner: ZO,
Lleftarrow: QO,
llhard: eL,
lltri: tL,
Lmidot: nL,
lmidot: sL,
lmoustache: aL,
lmoust: oL,
lnap: rL,
lnapprox: iL,
lne: cL,
lnE: lL,
lneq: uL,
lneqq: pL,
lnsim: dL,
loang: mL,
loarr: fL,
lobrk: hL,
longleftarrow: gL,
LongLeftArrow: bL,
Longleftarrow: vL,
longleftrightarrow: xL,
LongLeftRightArrow: yL,
Longleftrightarrow: wL,
longmapsto: kL,
longrightarrow: _L,
LongRightArrow: CL,
Longrightarrow: EL,
looparrowleft: AL,
looparrowright: SL,
lopar: TL,
Lopf: DL,
lopf: IL,
loplus: NL,
lotimes: ML,
lowast: OL,
lowbar: LL,
LowerLeftArrow: RL,
LowerRightArrow: PL,
loz: BL,
lozenge: zL,
lozf: qL,
lpar: FL,
lparlt: jL,
lrarr: $L,
lrcorner: UL,
lrhar: VL,
lrhard: HL,
lrm: GL,
lrtri: WL,
lsaquo: JL,
lscr: YL,
Lscr: KL,
lsh: XL,
Lsh: ZL,
lsim: QL,
lsime: e3,
lsimg: t3,
lsqb: n3,
lsquo: s3,
lsquor: a3,
Lstrok: o3,
lstrok: r3,
ltcc: i3,
ltcir: c3,
lt: l3,
LT: u3,
Lt: p3,
ltdot: d3,
lthree: m3,
ltimes: f3,
ltlarr: h3,
ltquest: g3,
ltri: b3,
ltrie: v3,
ltrif: x3,
ltrPar: y3,
lurdshar: w3,
luruhar: k3,
lvertneqq: _3,
lvnE: C3,
macr: E3,
male: A3,
malt: S3,
maltese: T3,
Map: "⤅",
map: D3,
mapsto: I3,
mapstodown: N3,
mapstoleft: M3,
mapstoup: O3,
marker: L3,
mcomma: R3,
Mcy: P3,
mcy: B3,
mdash: z3,
mDDot: q3,
measuredangle: F3,
MediumSpace: j3,
Mellintrf: $3,
Mfr: U3,
mfr: V3,
mho: H3,
micro: G3,
midast: W3,
midcir: J3,
mid: Y3,
middot: K3,
minusb: X3,
minus: Z3,
minusd: Q3,
minusdu: eR,
MinusPlus: tR,
mlcp: nR,
mldr: sR,
mnplus: aR,
models: oR,
Mopf: rR,
mopf: iR,
mp: cR,
mscr: lR,
Mscr: uR,
mstpos: pR,
Mu: dR,
mu: mR,
multimap: fR,
mumap: hR,
nabla: gR,
Nacute: bR,
nacute: vR,
nang: xR,
nap: yR,
napE: wR,
napid: kR,
napos: _R,
napprox: CR,
natural: ER,
naturals: AR,
natur: SR,
nbsp: TR,
nbump: DR,
nbumpe: IR,
ncap: NR,
Ncaron: MR,
ncaron: OR,
Ncedil: LR,
ncedil: RR,
ncong: PR,
ncongdot: BR,
ncup: zR,
Ncy: qR,
ncy: FR,
ndash: jR,
nearhk: $R,
nearr: UR,
neArr: VR,
nearrow: HR,
ne: GR,
nedot: WR,
NegativeMediumSpace: JR,
NegativeThickSpace: YR,
NegativeThinSpace: KR,
NegativeVeryThinSpace: XR,
nequiv: ZR,
nesear: QR,
nesim: eP,
NestedGreaterGreater: tP,
NestedLessLess: nP,
NewLine: sP,
nexist: aP,
nexists: oP,
Nfr: rP,
nfr: iP,
ngE: cP,
nge: lP,
ngeq: uP,
ngeqq: pP,
ngeqslant: dP,
nges: mP,
nGg: fP,
ngsim: hP,
nGt: gP,
ngt: bP,
ngtr: vP,
nGtv: xP,
nharr: yP,
nhArr: wP,
nhpar: kP,
ni: _P,
nis: CP,
nisd: EP,
niv: AP,
NJcy: SP,
njcy: TP,
nlarr: DP,
nlArr: IP,
nldr: NP,
nlE: MP,
nle: OP,
nleftarrow: LP,
nLeftarrow: RP,
nleftrightarrow: PP,
nLeftrightarrow: BP,
nleq: zP,
nleqq: qP,
nleqslant: FP,
nles: jP,
nless: $P,
nLl: UP,
nlsim: VP,
nLt: HP,
nlt: GP,
nltri: WP,
nltrie: JP,
nLtv: YP,
nmid: KP,
NoBreak: XP,
NonBreakingSpace: ZP,
nopf: QP,
Nopf: e4,
Not: t4,
not: n4,
NotCongruent: s4,
NotCupCap: a4,
NotDoubleVerticalBar: o4,
NotElement: r4,
NotEqual: i4,
NotEqualTilde: c4,
NotExists: l4,
NotGreater: u4,
NotGreaterEqual: p4,
NotGreaterFullEqual: d4,
NotGreaterGreater: m4,
NotGreaterLess: f4,
NotGreaterSlantEqual: h4,
NotGreaterTilde: g4,
NotHumpDownHump: b4,
NotHumpEqual: v4,
notin: x4,
notindot: y4,
notinE: w4,
notinva: k4,
notinvb: _4,
notinvc: C4,
NotLeftTriangleBar: E4,
NotLeftTriangle: A4,
NotLeftTriangleEqual: S4,
NotLess: T4,
NotLessEqual: D4,
NotLessGreater: I4,
NotLessLess: N4,
NotLessSlantEqual: M4,
NotLessTilde: O4,
NotNestedGreaterGreater: L4,
NotNestedLessLess: R4,
notni: P4,
notniva: B4,
notnivb: z4,
notnivc: q4,
NotPrecedes: F4,
NotPrecedesEqual: j4,
NotPrecedesSlantEqual: $4,
NotReverseElement: U4,
NotRightTriangleBar: V4,
NotRightTriangle: H4,
NotRightTriangleEqual: G4,
NotSquareSubset: W4,
NotSquareSubsetEqual: J4,
NotSquareSuperset: Y4,
NotSquareSupersetEqual: K4,
NotSubset: X4,
NotSubsetEqual: Z4,
NotSucceeds: Q4,
NotSucceedsEqual: e6,
NotSucceedsSlantEqual: t6,
NotSucceedsTilde: n6,
NotSuperset: s6,
NotSupersetEqual: a6,
NotTilde: o6,
NotTildeEqual: r6,
NotTildeFullEqual: i6,
NotTildeTilde: c6,
NotVerticalBar: l6,
nparallel: u6,
npar: p6,
nparsl: d6,
npart: m6,
npolint: f6,
npr: h6,
nprcue: g6,
nprec: b6,
npreceq: v6,
npre: x6,
nrarrc: y6,
nrarr: w6,
nrArr: k6,
nrarrw: _6,
nrightarrow: C6,
nRightarrow: E6,
nrtri: A6,
nrtrie: S6,
nsc: T6,
nsccue: D6,
nsce: I6,
Nscr: N6,
nscr: M6,
nshortmid: O6,
nshortparallel: L6,
nsim: R6,
nsime: P6,
nsimeq: B6,
nsmid: z6,
nspar: q6,
nsqsube: F6,
nsqsupe: j6,
nsub: $6,
nsubE: U6,
nsube: V6,
nsubset: H6,
nsubseteq: G6,
nsubseteqq: W6,
nsucc: J6,
nsucceq: Y6,
nsup: K6,
nsupE: X6,
nsupe: Z6,
nsupset: Q6,
nsupseteq: eB,
nsupseteqq: tB,
ntgl: nB,
Ntilde: sB,
ntilde: aB,
ntlg: oB,
ntriangleleft: rB,
ntrianglelefteq: iB,
ntriangleright: cB,
ntrianglerighteq: lB,
Nu: uB,
nu: pB,
num: dB,
numero: mB,
numsp: fB,
nvap: hB,
nvdash: gB,
nvDash: bB,
nVdash: vB,
nVDash: xB,
nvge: yB,
nvgt: wB,
nvHarr: kB,
nvinfin: _B,
nvlArr: CB,
nvle: EB,
nvlt: AB,
nvltrie: SB,
nvrArr: TB,
nvrtrie: DB,
nvsim: IB,
nwarhk: NB,
nwarr: MB,
nwArr: OB,
nwarrow: LB,
nwnear: RB,
Oacute: PB,
oacute: BB,
oast: zB,
Ocirc: qB,
ocirc: FB,
ocir: jB,
Ocy: $B,
ocy: UB,
odash: VB,
Odblac: HB,
odblac: GB,
odiv: WB,
odot: JB,
odsold: YB,
OElig: KB,
oelig: XB,
ofcir: ZB,
Ofr: QB,
ofr: e5,
ogon: t5,
Ograve: n5,
ograve: s5,
ogt: a5,
ohbar: o5,
ohm: r5,
oint: i5,
olarr: c5,
olcir: l5,
olcross: u5,
oline: p5,
olt: d5,
Omacr: m5,
omacr: f5,
Omega: h5,
omega: g5,
Omicron: b5,
omicron: v5,
omid: x5,
ominus: y5,
Oopf: w5,
oopf: k5,
opar: _5,
OpenCurlyDoubleQuote: C5,
OpenCurlyQuote: E5,
operp: A5,
oplus: S5,
orarr: T5,
Or: D5,
or: I5,
ord: N5,
order: M5,
orderof: O5,
ordf: L5,
ordm: R5,
origof: P5,
oror: B5,
orslope: z5,
orv: q5,
oS: F5,
Oscr: j5,
oscr: $5,
Oslash: U5,
oslash: V5,
osol: H5,
Otilde: G5,
otilde: W5,
otimesas: J5,
Otimes: Y5,
otimes: K5,
Ouml: X5,
ouml: Z5,
ovbar: Q5,
OverBar: ez,
OverBrace: tz,
OverBracket: nz,
OverParenthesis: sz,
para: az,
parallel: oz,
par: rz,
parsim: iz,
parsl: cz,
part: lz,
PartialD: uz,
Pcy: pz,
pcy: dz,
percnt: mz,
period: fz,
permil: hz,
perp: gz,
pertenk: bz,
Pfr: vz,
pfr: xz,
Phi: yz,
phi: wz,
phiv: kz,
phmmat: _z,
phone: Cz,
Pi: Ez,
pi: Az,
pitchfork: Sz,
piv: Tz,
planck: Dz,
planckh: Iz,
plankv: Nz,
plusacir: Mz,
plusb: Oz,
pluscir: Lz,
plus: Rz,
plusdo: Pz,
plusdu: Bz,
pluse: zz,
PlusMinus: qz,
plusmn: Fz,
plussim: jz,
plustwo: $z,
pm: Uz,
Poincareplane: Vz,
pointint: Hz,
popf: Gz,
Popf: Wz,
pound: Jz,
prap: Yz,
Pr: Kz,
pr: Xz,
prcue: Zz,
precapprox: Qz,
prec: eq,
preccurlyeq: tq,
Precedes: nq,
PrecedesEqual: sq,
PrecedesSlantEqual: aq,
PrecedesTilde: oq,
preceq: rq,
precnapprox: iq,
precneqq: cq,
precnsim: lq,
pre: uq,
prE: pq,
precsim: dq,
prime: mq,
Prime: fq,
primes: hq,
prnap: gq,
prnE: bq,
prnsim: vq,
prod: xq,
Product: yq,
profalar: wq,
profline: kq,
profsurf: _q,
prop: Cq,
Proportional: Eq,
Proportion: Aq,
propto: Sq,
prsim: Tq,
prurel: Dq,
Pscr: Iq,
pscr: Nq,
Psi: Mq,
psi: Oq,
puncsp: Lq,
Qfr: Rq,
qfr: Pq,
qint: Bq,
qopf: zq,
Qopf: qq,
qprime: Fq,
Qscr: jq,
qscr: $q,
quaternions: Uq,
quatint: Vq,
quest: Hq,
questeq: Gq,
quot: Wq,
QUOT: Jq,
rAarr: Yq,
race: Kq,
Racute: Xq,
racute: Zq,
radic: Qq,
raemptyv: e8,
rang: t8,
Rang: n8,
rangd: s8,
range: a8,
rangle: o8,
raquo: r8,
rarrap: i8,
rarrb: c8,
rarrbfs: l8,
rarrc: u8,
rarr: p8,
Rarr: d8,
rArr: m8,
rarrfs: f8,
rarrhk: h8,
rarrlp: g8,
rarrpl: b8,
rarrsim: v8,
Rarrtl: x8,
rarrtl: y8,
rarrw: w8,
ratail: k8,
rAtail: _8,
ratio: C8,
rationals: E8,
rbarr: A8,
rBarr: S8,
RBarr: T8,
rbbrk: D8,
rbrace: I8,
rbrack: N8,
rbrke: M8,
rbrksld: O8,
rbrkslu: L8,
Rcaron: R8,
rcaron: P8,
Rcedil: B8,
rcedil: z8,
rceil: q8,
rcub: F8,
Rcy: j8,
rcy: $8,
rdca: U8,
rdldhar: V8,
rdquo: H8,
rdquor: G8,
rdsh: W8,
real: J8,
realine: Y8,
realpart: K8,
reals: X8,
Re: Z8,
rect: Q8,
reg: eF,
REG: tF,
ReverseElement: nF,
ReverseEquilibrium: sF,
ReverseUpEquilibrium: aF,
rfisht: oF,
rfloor: rF,
rfr: iF,
Rfr: cF,
rHar: lF,
rhard: uF,
rharu: pF,
rharul: dF,
Rho: mF,
rho: fF,
rhov: hF,
RightAngleBracket: gF,
RightArrowBar: bF,
rightarrow: vF,
RightArrow: xF,
Rightarrow: yF,
RightArrowLeftArrow: wF,
rightarrowtail: kF,
RightCeiling: _F,
RightDoubleBracket: CF,
RightDownTeeVector: EF,
RightDownVectorBar: AF,
RightDownVector: SF,
RightFloor: TF,
rightharpoondown: DF,
rightharpoonup: IF,
rightleftarrows: NF,
rightleftharpoons: MF,
rightrightarrows: OF,
rightsquigarrow: LF,
RightTeeArrow: RF,
RightTee: PF,
RightTeeVector: BF,
rightthreetimes: zF,
RightTriangleBar: qF,
RightTriangle: FF,
RightTriangleEqual: jF,
RightUpDownVector: $F,
RightUpTeeVector: UF,
RightUpVectorBar: VF,
RightUpVector: HF,
RightVectorBar: GF,
RightVector: WF,
ring: JF,
risingdotseq: YF,
rlarr: KF,
rlhar: XF,
rlm: ZF,
rmoustache: QF,
rmoust: e7,
rnmid: t7,
roang: n7,
roarr: s7,
robrk: a7,
ropar: o7,
ropf: r7,
Ropf: i7,
roplus: c7,
rotimes: l7,
RoundImplies: u7,
rpar: p7,
rpargt: d7,
rppolint: m7,
rrarr: f7,
Rrightarrow: h7,
rsaquo: g7,
rscr: b7,
Rscr: v7,
rsh: x7,
Rsh: y7,
rsqb: w7,
rsquo: k7,
rsquor: _7,
rthree: C7,
rtimes: E7,
rtri: A7,
rtrie: S7,
rtrif: T7,
rtriltri: D7,
RuleDelayed: I7,
ruluhar: N7,
rx: M7,
Sacute: O7,
sacute: L7,
sbquo: R7,
scap: P7,
Scaron: B7,
scaron: z7,
Sc: q7,
sc: F7,
sccue: j7,
sce: $7,
scE: U7,
Scedil: V7,
scedil: H7,
Scirc: G7,
scirc: W7,
scnap: J7,
scnE: Y7,
scnsim: K7,
scpolint: X7,
scsim: Z7,
Scy: Q7,
scy: ej,
sdotb: tj,
sdot: nj,
sdote: sj,
searhk: aj,
searr: oj,
seArr: rj,
searrow: ij,
sect: cj,
semi: lj,
seswar: uj,
setminus: pj,
setmn: dj,
sext: mj,
Sfr: fj,
sfr: hj,
sfrown: gj,
sharp: bj,
SHCHcy: vj,
shchcy: xj,
SHcy: yj,
shcy: wj,
ShortDownArrow: kj,
ShortLeftArrow: _j,
shortmid: Cj,
shortparallel: Ej,
ShortRightArrow: Aj,
ShortUpArrow: Sj,
shy: Tj,
Sigma: Dj,
sigma: Ij,
sigmaf: Nj,
sigmav: Mj,
sim: Oj,
simdot: Lj,
sime: Rj,
simeq: Pj,
simg: Bj,
simgE: zj,
siml: qj,
simlE: Fj,
simne: jj,
simplus: $j,
simrarr: Uj,
slarr: Vj,
SmallCircle: Hj,
smallsetminus: Gj,
smashp: Wj,
smeparsl: Jj,
smid: Yj,
smile: Kj,
smt: Xj,
smte: Zj,
smtes: Qj,
SOFTcy: e9,
softcy: t9,
solbar: n9,
solb: s9,
sol: a9,
Sopf: o9,
sopf: r9,
spades: i9,
spadesuit: c9,
spar: l9,
sqcap: u9,
sqcaps: p9,
sqcup: d9,
sqcups: m9,
Sqrt: f9,
sqsub: h9,
sqsube: g9,
sqsubset: b9,
sqsubseteq: v9,
sqsup: x9,
sqsupe: y9,
sqsupset: w9,
sqsupseteq: k9,
square: _9,
Square: C9,
SquareIntersection: E9,
SquareSubset: A9,
SquareSubsetEqual: S9,
SquareSuperset: T9,
SquareSupersetEqual: D9,
SquareUnion: I9,
squarf: N9,
squ: M9,
squf: O9,
srarr: L9,
Sscr: R9,
sscr: P9,
ssetmn: B9,
ssmile: z9,
sstarf: q9,
Star: F9,
star: j9,
starf: $9,
straightepsilon: U9,
straightphi: V9,
strns: H9,
sub: G9,
Sub: W9,
subdot: J9,
subE: Y9,
sube: K9,
subedot: X9,
submult: Z9,
subnE: Q9,
subne: e$,
subplus: t$,
subrarr: n$,
subset: s$,
Subset: a$,
subseteq: o$,
subseteqq: r$,
SubsetEqual: i$,
subsetneq: c$,
subsetneqq: l$,
subsim: u$,
subsub: p$,
subsup: d$,
succapprox: m$,
succ: f$,
succcurlyeq: h$,
Succeeds: g$,
SucceedsEqual: b$,
SucceedsSlantEqual: v$,
SucceedsTilde: x$,
succeq: y$,
succnapprox: w$,
succneqq: k$,
succnsim: _$,
succsim: C$,
SuchThat: E$,
sum: A$,
Sum: S$,
sung: T$,
sup1: D$,
sup2: I$,
sup3: N$,
sup: M$,
Sup: O$,
supdot: L$,
supdsub: R$,
supE: P$,
supe: B$,
supedot: z$,
Superset: q$,
SupersetEqual: F$,
suphsol: j$,
suphsub: $$,
suplarr: U$,
supmult: V$,
supnE: H$,
supne: G$,
supplus: W$,
supset: J$,
Supset: Y$,
supseteq: K$,
supseteqq: X$,
supsetneq: Z$,
supsetneqq: Q$,
supsim: eU,
supsub: tU,
supsup: nU,
swarhk: sU,
swarr: aU,
swArr: oU,
swarrow: rU,
swnwar: iU,
szlig: cU,
Tab: lU,
target: uU,
Tau: pU,
tau: dU,
tbrk: mU,
Tcaron: fU,
tcaron: hU,
Tcedil: gU,
tcedil: bU,
Tcy: vU,
tcy: xU,
tdot: yU,
telrec: wU,
Tfr: kU,
tfr: _U,
there4: CU,
therefore: EU,
Therefore: AU,
Theta: SU,
theta: TU,
thetasym: DU,
thetav: IU,
thickapprox: NU,
thicksim: MU,
ThickSpace: OU,
ThinSpace: LU,
thinsp: RU,
thkap: PU,
thksim: BU,
THORN: zU,
thorn: qU,
tilde: FU,
Tilde: jU,
TildeEqual: $U,
TildeFullEqual: UU,
TildeTilde: VU,
timesbar: HU,
timesb: GU,
times: WU,
timesd: JU,
tint: YU,
toea: KU,
topbot: XU,
topcir: ZU,
top: QU,
Topf: eV,
topf: tV,
topfork: nV,
tosa: sV,
tprime: aV,
trade: oV,
TRADE: rV,
triangle: iV,
triangledown: cV,
triangleleft: lV,
trianglelefteq: uV,
triangleq: pV,
triangleright: dV,
trianglerighteq: mV,
tridot: fV,
trie: hV,
triminus: gV,
TripleDot: bV,
triplus: vV,
trisb: xV,
tritime: yV,
trpezium: wV,
Tscr: kV,
tscr: _V,
TScy: CV,
tscy: EV,
TSHcy: AV,
tshcy: SV,
Tstrok: TV,
tstrok: DV,
twixt: IV,
twoheadleftarrow: NV,
twoheadrightarrow: MV,
Uacute: OV,
uacute: LV,
uarr: RV,
Uarr: PV,
uArr: BV,
Uarrocir: zV,
Ubrcy: qV,
ubrcy: FV,
Ubreve: jV,
ubreve: $V,
Ucirc: UV,
ucirc: VV,
Ucy: HV,
ucy: GV,
udarr: WV,
Udblac: JV,
udblac: YV,
udhar: KV,
ufisht: XV,
Ufr: ZV,
ufr: QV,
Ugrave: eH,
ugrave: tH,
uHar: nH,
uharl: sH,
uharr: aH,
uhblk: oH,
ulcorn: rH,
ulcorner: iH,
ulcrop: cH,
ultri: lH,
Umacr: uH,
umacr: pH,
uml: dH,
UnderBar: mH,
UnderBrace: fH,
UnderBracket: hH,
UnderParenthesis: gH,
Union: bH,
UnionPlus: vH,
Uogon: xH,
uogon: yH,
Uopf: wH,
uopf: kH,
UpArrowBar: _H,
uparrow: CH,
UpArrow: EH,
Uparrow: AH,
UpArrowDownArrow: SH,
updownarrow: TH,
UpDownArrow: DH,
Updownarrow: IH,
UpEquilibrium: NH,
upharpoonleft: MH,
upharpoonright: OH,
uplus: LH,
UpperLeftArrow: RH,
UpperRightArrow: PH,
upsi: BH,
Upsi: zH,
upsih: qH,
Upsilon: FH,
upsilon: jH,
UpTeeArrow: $H,
UpTee: UH,
upuparrows: VH,
urcorn: HH,
urcorner: GH,
urcrop: WH,
Uring: JH,
uring: YH,
urtri: KH,
Uscr: XH,
uscr: ZH,
utdot: QH,
Utilde: eG,
utilde: tG,
utri: nG,
utrif: sG,
uuarr: aG,
Uuml: oG,
uuml: rG,
uwangle: iG,
vangrt: cG,
varepsilon: lG,
varkappa: uG,
varnothing: pG,
varphi: dG,
varpi: mG,
varpropto: fG,
varr: hG,
vArr: gG,
varrho: bG,
varsigma: vG,
varsubsetneq: xG,
varsubsetneqq: yG,
varsupsetneq: wG,
varsupsetneqq: kG,
vartheta: _G,
vartriangleleft: CG,
vartriangleright: EG,
vBar: AG,
Vbar: SG,
vBarv: TG,
Vcy: DG,
vcy: IG,
vdash: NG,
vDash: MG,
Vdash: OG,
VDash: LG,
Vdashl: RG,
veebar: PG,
vee: BG,
Vee: zG,
veeeq: qG,
vellip: FG,
verbar: jG,
Verbar: $G,
vert: UG,
Vert: VG,
VerticalBar: HG,
VerticalLine: GG,
VerticalSeparator: WG,
VerticalTilde: JG,
VeryThinSpace: YG,
Vfr: KG,
vfr: XG,
vltri: ZG,
vnsub: QG,
vnsup: eW,
Vopf: tW,
vopf: nW,
vprop: sW,
vrtri: aW,
Vscr: oW,
vscr: rW,
vsubnE: iW,
vsubne: cW,
vsupnE: lW,
vsupne: uW,
Vvdash: pW,
vzigzag: dW,
Wcirc: mW,
wcirc: fW,
wedbar: hW,
wedge: gW,
Wedge: bW,
wedgeq: vW,
weierp: xW,
Wfr: yW,
wfr: wW,
Wopf: kW,
wopf: _W,
wp: CW,
wr: EW,
wreath: AW,
Wscr: SW,
wscr: TW,
xcap: DW,
xcirc: IW,
xcup: NW,
xdtri: MW,
Xfr: OW,
xfr: LW,
xharr: RW,
xhArr: PW,
Xi: BW,
xi: zW,
xlarr: qW,
xlArr: FW,
xmap: jW,
xnis: $W,
xodot: UW,
Xopf: VW,
xopf: HW,
xoplus: GW,
xotime: WW,
xrarr: JW,
xrArr: YW,
Xscr: KW,
xscr: XW,
xsqcup: ZW,
xuplus: QW,
xutri: eJ,
xvee: tJ,
xwedge: nJ,
Yacute: sJ,
yacute: aJ,
YAcy: oJ,
yacy: rJ,
Ycirc: iJ,
ycirc: cJ,
Ycy: lJ,
ycy: uJ,
yen: pJ,
Yfr: dJ,
yfr: mJ,
YIcy: fJ,
yicy: hJ,
Yopf: gJ,
yopf: bJ,
Yscr: vJ,
yscr: xJ,
YUcy: yJ,
yucy: wJ,
yuml: kJ,
Yuml: _J,
Zacute: CJ,
zacute: EJ,
Zcaron: AJ,
zcaron: SJ,
Zcy: TJ,
zcy: DJ,
Zdot: IJ,
zdot: NJ,
zeetrf: MJ,
ZeroWidthSpace: OJ,
Zeta: LJ,
zeta: RJ,
zfr: PJ,
Zfr: BJ,
ZHcy: zJ,
zhcy: qJ,
zigrarr: FJ,
zopf: jJ,
Zopf: $J,
Zscr: UJ,
zscr: VJ,
zwj: HJ,
zwnj: GJ
};
var vp = WJ,
Br = /[!-#%-\*,-\/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4E\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDF55-\uDF59]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDF3C-\uDF3E]|\uD806[\uDC3B\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDE97-\uDE9A]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]/,
Ln = {},
fc = {};
function JJ(t) {
var e, n, s = fc[t];
if (s) return s;
for (s = fc[t] = [], e = 0; e < 128; e++) n = String.fromCharCode(e), /^[0-9a-z]$/i.test(n) ? s.push(n) : s.push("%" + ("0" + e.toString(16).toUpperCase()).slice(-2));
for (e = 0; e < t.length; e++) s[t.charCodeAt(e)] = t[e];
return s
}
function Ra(t, e, n) {
var s, a, o, r, i, c = "";
for (typeof e != "string" && (n = e, e = Ra.defaultChars), typeof n == "undefined" && (n = !0), i = JJ(e), s = 0, a = t.length; s < a; s++) {
if (o = t.charCodeAt(s), n && o === 37 && s + 2 < a && /^[0-9a-f]{2}$/i.test(t.slice(s + 1, s + 3))) {
c += t.slice(s, s + 3), s += 2;
continue
}
if (o < 128) {
c += i[o];
continue
}
if (o >= 55296 && o <= 57343) {
if (o >= 55296 && o <= 56319 && s + 1 < a && (r = t.charCodeAt(s + 1), r >= 56320 && r <= 57343)) {
c += encodeURIComponent(t[s] + t[s + 1]), s++;
continue
}
c += "%EF%BF%BD";
continue
}
c += encodeURIComponent(t[s])
}
return c
}
Ra.defaultChars = ";/?:@&=+$,-_.!~*'()#";
Ra.componentChars = "-_.!~*'()";
var YJ = Ra,
hc = {};
function KJ(t) {
var e, n, s = hc[t];
if (s) return s;
for (s = hc[t] = [], e = 0; e < 128; e++) n = String.fromCharCode(e), s.push(n);
for (e = 0; e < t.length; e++) n = t.charCodeAt(e), s[n] = "%" + ("0" + n.toString(16).toUpperCase()).slice(-2);
return s
}
function Pa(t, e) {
var n;
return typeof e != "string" && (e = Pa.defaultChars), n = KJ(e), t.replace(/(%[a-f0-9]{2})+/gi, function(s) {
var a, o, r, i, c, l, u, d = "";
for (a = 0, o = s.length; a < o; a += 3) {
if (r = parseInt(s.slice(a + 1, a + 3), 16), r < 128) {
d += n[r];
continue
}
if ((r & 224) === 192 && a + 3 < o && (i = parseInt(s.slice(a + 4, a + 6), 16), (i & 192) === 128)) {
u = r << 6 & 1984 | i & 63, u < 128 ? d += "��" : d += String.fromCharCode(u), a += 3;
continue
}
if ((r & 240) === 224 && a + 6 < o && (i = parseInt(s.slice(a + 4, a + 6), 16), c = parseInt(s.slice(a + 7, a + 9), 16), (i & 192) === 128 && (c & 192) === 128)) {
u = r << 12 & 61440 | i << 6 & 4032 | c & 63, u < 2048 || u >= 55296 && u <= 57343 ? d += "���" : d += String.fromCharCode(u), a += 6;
continue
}
if ((r & 248) === 240 && a + 9 < o && (i = parseInt(s.slice(a + 4, a + 6), 16), c = parseInt(s.slice(a + 7, a + 9), 16), l = parseInt(s.slice(a + 10, a + 12), 16), (i & 192) === 128 && (c & 192) === 128 && (l & 192) === 128)) {
u = r << 18 & 1835008 | i << 12 & 258048 | c << 6 & 4032 | l & 63, u < 65536 || u > 1114111 ? d += "����" : (u -= 65536, d += String.fromCharCode(55296 + (u >> 10), 56320 + (u & 1023))), a += 9;
continue
}
d += "�"
}
return d
})
}
Pa.defaultChars = ";/?:@&=+$,#";
Pa.componentChars = "";
var XJ = Pa,
ZJ = function(e) {
var n = "";
return n += e.protocol || "", n += e.slashes ? "//" : "", n += e.auth ? e.auth + "@" : "", e.hostname && e.hostname.indexOf(":") !== -1 ? n += "[" + e.hostname + "]" : n += e.hostname || "", n += e.port ? ":" + e.port : "", n += e.pathname || "", n += e.search || "", n += e.hash || "", n
};
function ua() {
this.protocol = null, this.slashes = null, this.auth = null, this.port = null, this.hostname = null, this.hash = null, this.search = null, this.pathname = null
}
var QJ = /^([a-z0-9.+-]+:)/i,
eY = /:[0-9]*$/,
tY = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,
nY = ["<", ">", '"', "`", " ", "\r", `
`, " "],
sY = ["{", "}", "|", "\\", "^", "`"].concat(nY),
aY = ["'"].concat(sY),
gc = ["%", "/", "?", ";", "#"].concat(aY),
bc = ["/", "?", "#"],
oY = 255,
vc = /^[+a-z0-9A-Z_-]{0,63}$/,
rY = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,
xc = {
javascript: !0,
"javascript:": !0
},
yc = {
http: !0,
https: !0,
ftp: !0,
gopher: !0,
file: !0,
"http:": !0,
"https:": !0,
"ftp:": !0,
"gopher:": !0,
"file:": !0
};
function iY(t, e) {
if (t && t instanceof ua) return t;
var n = new ua;
return n.parse(t, e), n
}
ua.prototype.parse = function(t, e) {
var n, s, a, o, r, i = t;
if (i = i.trim(), !e && t.split("#").length === 1) {
var c = tY.exec(i);
if (c) return this.pathname = c[1], c[2] && (this.search = c[2]), this
}
var l = QJ.exec(i);
if (l && (l = l[0], a = l.toLowerCase(), this.protocol = l, i = i.substr(l.length)), (e || l || i.match(/^\/\/[^@\/]+@[^@\/]+/)) && (r = i.substr(0, 2) === "//", r && !(l && xc[l]) && (i = i.substr(2), this.slashes = !0)), !xc[l] && (r || l && !yc[l])) {
var u = -1;
for (n = 0; n < bc.length; n++) o = i.indexOf(bc[n]), o !== -1 && (u === -1 || o < u) && (u = o);
var d, m;
for (u === -1 ? m = i.lastIndexOf("@") : m = i.lastIndexOf("@", u), m !== -1 && (d = i.slice(0, m), i = i.slice(m + 1), this.auth = d), u = -1, n = 0; n < gc.length; n++) o = i.indexOf(gc[n]), o !== -1 && (u === -1 || o < u) && (u = o);
u === -1 && (u = i.length), i[u - 1] === ":" && u--;
var f = i.slice(0, u);
i = i.slice(u), this.parseHost(f), this.hostname = this.hostname || "";
var h = this.hostname[0] === "[" && this.hostname[this.hostname.length - 1] === "]";
if (!h) {
var g = this.hostname.split(/\./);
for (n = 0, s = g.length; n < s; n++) {
var b = g[n];
if (b && !b.match(vc)) {
for (var x = "", v = 0, w = b.length; v < w; v++) b.charCodeAt(v) > 127 ? x += "x" : x += b[v];
if (!x.match(vc)) {
var E = g.slice(0, n),
_ = g.slice(n + 1),
k = b.match(rY);
k && (E.push(k[1]), _.unshift(k[2])), _.length && (i = _.join(".") + i), this.hostname = E.join(".");
break
}
}
}
}
this.hostname.length > oY && (this.hostname = ""), h && (this.hostname = this.hostname.substr(1, this.hostname.length - 2))
}
var M = i.indexOf("#");
M !== -1 && (this.hash = i.substr(M), i = i.slice(0, M));
var y = i.indexOf("?");
return y !== -1 && (this.search = i.substr(y), i = i.slice(0, y)), i && (this.pathname = i), yc[a] && this.hostname && !this.pathname && (this.pathname = ""), this
};
ua.prototype.parseHost = function(t) {
var e = eY.exec(t);
e && (e = e[0], e !== ":" && (this.port = e.substr(1)), t = t.substr(0, t.length - e.length)), t && (this.hostname = t)
};
var cY = iY;
Ln.encode = YJ;
Ln.decode = XJ;
Ln.format = ZJ;
Ln.parse = cY;
var Gt = {},
io, wc;
function xp() {
return wc || (wc = 1, io = /[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/), io
}
var co, kc;
function yp() {
return kc || (kc = 1, co = /[\0-\x1F\x7F-\x9F]/), co
}
var lo, _c;
function lY() {
return _c || (_c = 1, lo = /[\xAD\u0600-\u0605\u061C\u06DD\u070F\u08E2\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB]|\uD804[\uDCBD\uDCCD]|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]/), lo
}
var uo, Cc;
function wp() {
return Cc || (Cc = 1, uo = /[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/), uo
}
var Ec;
function uY() {
return Ec || (Ec = 1, Gt.Any = xp(), Gt.Cc = yp(), Gt.Cf = lY(), Gt.P = Br, Gt.Z = wp()), Gt
}(function(t) {
function e(A) {
return Object.prototype.toString.call(A)
}
function n(A) {
return e(A) === "[object String]"
}
var s = Object.prototype.hasOwnProperty;
function a(A, I) {
return s.call(A, I)
}
function o(A) {
var I = Array.prototype.slice.call(arguments, 1);
return I.forEach(function(O) {
if (O) {
if (typeof O != "object") throw new TypeError(O + "must be object");
Object.keys(O).forEach(function(B) {
A[B] = O[B]
})
}
}), A
}
function r(A, I, O) {
return [].concat(A.slice(0, I), O, A.slice(I + 1))
}
function i(A) {
return !(A >= 55296 && A <= 57343 || A >= 64976 && A <= 65007 || (A & 65535) === 65535 || (A & 65535) === 65534 || A >= 0 && A <= 8 || A === 11 || A >= 14 && A <= 31 || A >= 127 && A <= 159 || A > 1114111)
}
function c(A) {
if (A > 65535) {
A -= 65536;
var I = 55296 + (A >> 10),
O = 56320 + (A & 1023);
return String.fromCharCode(I, O)
}
return String.fromCharCode(A)
}
var l = /\\([!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~])/g,
u = /&([a-z#][a-z0-9]{1,31});/gi,
d = new RegExp(l.source + "|" + u.source, "gi"),
m = /^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i,
f = vp;
function h(A, I) {
var O = 0;
return a(f, I) ? f[I] : I.charCodeAt(0) === 35 && m.test(I) && (O = I[1].toLowerCase() === "x" ? parseInt(I.slice(2), 16) : parseInt(I.slice(1), 10), i(O)) ? c(O) : A
}
function g(A) {
return A.indexOf("\\") < 0 ? A : A.replace(l, "$1")
}
function b(A) {
return A.indexOf("\\") < 0 && A.indexOf("&") < 0 ? A : A.replace(d, function(I, O, B) {
return O || h(I, B)
})
}
var x = /[&<>"]/,
v = /[&<>"]/g,
w = {
"&": "&amp;",
"<": "&lt;",
">": "&gt;",
'"': "&quot;"
};
function E(A) {
return w[A]
}
function _(A) {
return x.test(A) ? A.replace(v, E) : A
}
var k = /[.?*+^$[\]\\(){}|-]/g;
function M(A) {
return A.replace(k, "\\$&")
}
function y(A) {
switch (A) {
case 9:
case 32:
return !0
}
return !1
}
function T(A) {
if (A >= 8192 && A <= 8202) return !0;
switch (A) {
case 9:
case 10:
case 11:
case 12:
case 13:
case 32:
case 160:
case 5760:
case 8239:
case 8287:
case 12288:
return !0
}
return !1
}
var D = Br;
function C(A) {
return D.test(A)
}
function L(A) {
switch (A) {
case 33:
case 34:
case 35:
case 36:
case 37:
case 38:
case 39:
case 40:
case 41:
case 42:
case 43:
case 44:
case 45:
case 46:
case 47:
case 58:
case 59:
case 60:
case 61:
case 62:
case 63:
case 64:
case 91:
case 92:
case 93:
case 94:
case 95:
case 96:
case 123:
case 124:
case 125:
case 126:
return !0;
default:
return !1
}
}
function R(A) {
return A = A.trim().replace(/\s+/g, " "), "ẞ".toLowerCase() === "Ṿ" && (A = A.replace(/ẞ/g, "ß")), A.toLowerCase().toUpperCase()
}
t.lib = {}, t.lib.mdurl = Ln, t.lib.ucmicro = uY(), t.assign = o, t.isString = n, t.has = a, t.unescapeMd = g, t.unescapeAll = b, t.isValidEntityCode = i, t.fromCodePoint = c, t.escapeHtml = _, t.arrayReplaceAt = r, t.isSpace = y, t.isWhiteSpace = T, t.isMdAsciiPunct = L, t.isPunctChar = C, t.escapeRE = M, t.normalizeReference = R
})(oe);
var Ba = {},
pY = function(e, n, s) {
var a, o, r, i, c = -1,
l = e.posMax,
u = e.pos;
for (e.pos = n + 1, a = 1; e.pos < l;) {
if (r = e.src.charCodeAt(e.pos), r === 93 && (a--, a === 0)) {
o = !0;
break
}
if (i = e.pos, e.md.inline.skipToken(e), r === 91) {
if (i === e.pos - 1) a++;
else if (s) return e.pos = u, -1
}
}
return o && (c = e.pos), e.pos = u, c
},
Ac = oe.unescapeAll,
dY = function(e, n, s) {
var a, o, r = 0,
i = n,
c = {
ok: !1,
pos: 0,
lines: 0,
str: ""
};
if (e.charCodeAt(n) === 60) {
for (n++; n < s;) {
if (a = e.charCodeAt(n), a === 10 || a === 60) return c;
if (a === 62) return c.pos = n + 1, c.str = Ac(e.slice(i + 1, n)), c.ok = !0, c;
if (a === 92 && n + 1 < s) {
n += 2;
continue
}
n++
}
return c
}
for (o = 0; n < s && (a = e.charCodeAt(n), !(a === 32 || a < 32 || a === 127));) {
if (a === 92 && n + 1 < s) {
if (e.charCodeAt(n + 1) === 32) break;
n += 2;
continue
}
if (a === 40 && (o++, o > 32)) return c;
if (a === 41) {
if (o === 0) break;
o--
}
n++
}
return i === n || o !== 0 || (c.str = Ac(e.slice(i, n)), c.lines = r, c.pos = n, c.ok = !0), c
},
mY = oe.unescapeAll,
fY = function(e, n, s) {
var a, o, r = 0,
i = n,
c = {
ok: !1,
pos: 0,
lines: 0,
str: ""
};
if (n >= s || (o = e.charCodeAt(n), o !== 34 && o !== 39 && o !== 40)) return c;
for (n++, o === 40 && (o = 41); n < s;) {
if (a = e.charCodeAt(n), a === o) return c.pos = n + 1, c.lines = r, c.str = mY(e.slice(i + 1, n)), c.ok = !0, c;
if (a === 40 && o === 41) return c;
a === 10 ? r++ : a === 92 && n + 1 < s && (n++, e.charCodeAt(n) === 10 && r++), n++
}
return c
};
Ba.parseLinkLabel = pY;
Ba.parseLinkDestination = dY;
Ba.parseLinkTitle = fY;
var hY = oe.assign,
gY = oe.unescapeAll,
Xt = oe.escapeHtml,
Ct = {};
Ct.code_inline = function(t, e, n, s, a) {
var o = t[e];
return "<code" + a.renderAttrs(o) + ">" + Xt(t[e].content) + "</code>"
};
Ct.code_block = function(t, e, n, s, a) {
var o = t[e];
return "<pre" + a.renderAttrs(o) + "><code>" + Xt(t[e].content) + `</code></pre>
`
};
Ct.fence = function(t, e, n, s, a) {
var o = t[e],
r = o.info ? gY(o.info).trim() : "",
i = "",
c = "",
l, u, d, m, f;
return r && (d = r.split(/(\s+)/g), i = d[0], c = d.slice(2).join("")), n.highlight ? l = n.highlight(o.content, i, c) || Xt(o.content) : l = Xt(o.content), l.indexOf("<pre") === 0 ? l + `
` : r ? (u = o.attrIndex("class"), m = o.attrs ? o.attrs.slice() : [], u < 0 ? m.push(["class", n.langPrefix + i]) : (m[u] = m[u].slice(), m[u][1] += " " + n.langPrefix + i), f = {
attrs: m
}, "<pre><code" + a.renderAttrs(f) + ">" + l + `</code></pre>
`) : "<pre><code" + a.renderAttrs(o) + ">" + l + `</code></pre>
`
};
Ct.image = function(t, e, n, s, a) {
var o = t[e];
return o.attrs[o.attrIndex("alt")][1] = a.renderInlineAsText(o.children, n, s), a.renderToken(t, e, n)
};
Ct.hardbreak = function(t, e, n) {
return n.xhtmlOut ? `<br />
` : `<br>
`
};
Ct.softbreak = function(t, e, n) {
return n.breaks ? n.xhtmlOut ? `<br />
` : `<br>
` : `
`
};
Ct.text = function(t, e) {
return Xt(t[e].content)
};
Ct.html_block = function(t, e) {
return t[e].content
};
Ct.html_inline = function(t, e) {
return t[e].content
};
function Rn() {
this.rules = hY({}, Ct)
}
Rn.prototype.renderAttrs = function(e) {
var n, s, a;
if (!e.attrs) return "";
for (a = "", n = 0, s = e.attrs.length; n < s; n++) a += " " + Xt(e.attrs[n][0]) + '="' + Xt(e.attrs[n][1]) + '"';
return a
};
Rn.prototype.renderToken = function(e, n, s) {
var a, o = "",
r = !1,
i = e[n];
return i.hidden ? "" : (i.block && i.nesting !== -1 && n && e[n - 1].hidden && (o += `
`), o += (i.nesting === -1 ? "</" : "<") + i.tag, o += this.renderAttrs(i), i.nesting === 0 && s.xhtmlOut && (o += " /"), i.block && (r = !0, i.nesting === 1 && n + 1 < e.length && (a = e[n + 1], (a.type === "inline" || a.hidden || a.nesting === -1 && a.tag === i.tag) && (r = !1))), o += r ? `>
` : ">", o)
};
Rn.prototype.renderInline = function(t, e, n) {
for (var s, a = "", o = this.rules, r = 0, i = t.length; r < i; r++) s = t[r].type, typeof o[s] != "undefined" ? a += o[s](t, r, e, n, this) : a += this.renderToken(t, r, e);
return a
};
Rn.prototype.renderInlineAsText = function(t, e, n) {
for (var s = "", a = 0, o = t.length; a < o; a++) t[a].type === "text" ? s += t[a].content : t[a].type === "image" ? s += this.renderInlineAsText(t[a].children, e, n) : t[a].type === "softbreak" && (s += `
`);
return s
};
Rn.prototype.render = function(t, e, n) {
var s, a, o, r = "",
i = this.rules;
for (s = 0, a = t.length; s < a; s++) o = t[s].type, o === "inline" ? r += this.renderInline(t[s].children, e, n) : typeof i[o] != "undefined" ? r += i[t[s].type](t, s, e, n, this) : r += this.renderToken(t, s, e, n);
return r
};
var bY = Rn;
function ut() {
this.__rules__ = [], this.__cache__ = null
}
ut.prototype.__find__ = function(t) {
for (var e = 0; e < this.__rules__.length; e++)
if (this.__rules__[e].name === t) return e;
return -1
};
ut.prototype.__compile__ = function() {
var t = this,
e = [""];
t.__rules__.forEach(function(n) {
n.enabled && n.alt.forEach(function(s) {
e.indexOf(s) < 0 && e.push(s)
})
}), t.__cache__ = {}, e.forEach(function(n) {
t.__cache__[n] = [], t.__rules__.forEach(function(s) {
s.enabled && (n && s.alt.indexOf(n) < 0 || t.__cache__[n].push(s.fn))
})
})
};
ut.prototype.at = function(t, e, n) {
var s = this.__find__(t),
a = n || {};
if (s === -1) throw new Error("Parser rule not found: " + t);
this.__rules__[s].fn = e, this.__rules__[s].alt = a.alt || [], this.__cache__ = null
};
ut.prototype.before = function(t, e, n, s) {
var a = this.__find__(t),
o = s || {};
if (a === -1) throw new Error("Parser rule not found: " + t);
this.__rules__.splice(a, 0, {
name: e,
enabled: !0,
fn: n,
alt: o.alt || []
}), this.__cache__ = null
};
ut.prototype.after = function(t, e, n, s) {
var a = this.__find__(t),
o = s || {};
if (a === -1) throw new Error("Parser rule not found: " + t);
this.__rules__.splice(a + 1, 0, {
name: e,
enabled: !0,
fn: n,
alt: o.alt || []
}), this.__cache__ = null
};
ut.prototype.push = function(t, e, n) {
var s = n || {};
this.__rules__.push({
name: t,
enabled: !0,
fn: e,
alt: s.alt || []
}), this.__cache__ = null
};
ut.prototype.enable = function(t, e) {
Array.isArray(t) || (t = [t]);
var n = [];
return t.forEach(function(s) {
var a = this.__find__(s);
if (a < 0) {
if (e) return;
throw new Error("Rules manager: invalid rule name " + s)
}
this.__rules__[a].enabled = !0, n.push(s)
}, this), this.__cache__ = null, n
};
ut.prototype.enableOnly = function(t, e) {
Array.isArray(t) || (t = [t]), this.__rules__.forEach(function(n) {
n.enabled = !1
}), this.enable(t, e)
};
ut.prototype.disable = function(t, e) {
Array.isArray(t) || (t = [t]);
var n = [];
return t.forEach(function(s) {
var a = this.__find__(s);
if (a < 0) {
if (e) return;
throw new Error("Rules manager: invalid rule name " + s)
}
this.__rules__[a].enabled = !1, n.push(s)
}, this), this.__cache__ = null, n
};
ut.prototype.getRules = function(t) {
return this.__cache__ === null && this.__compile__(), this.__cache__[t] || []
};
var zr = ut,
vY = /\r\n?|\n/g,
xY = /\0/g,
yY = function(e) {
var n;
n = e.src.replace(vY, `
`), n = n.replace(xY, "�"), e.src = n
},
wY = function(e) {
var n;
e.inlineMode ? (n = new e.Token("inline", "", 0), n.content = e.src, n.map = [0, 1], n.children = [], e.tokens.push(n)) : e.md.block.parse(e.src, e.md, e.env, e.tokens)
},
kY = function(e) {
var n = e.tokens,
s, a, o;
for (a = 0, o = n.length; a < o; a++) s = n[a], s.type === "inline" && e.md.inline.parse(s.content, e.md, e.env, s.children)
},
_Y = oe.arrayReplaceAt;
function CY(t) {
return /^<a[>\s]/i.test(t)
}
function EY(t) {
return /^<\/a\s*>/i.test(t)
}
var AY = function(e) {
var n, s, a, o, r, i, c, l, u, d, m, f, h, g, b, x, v = e.tokens,
w;
if (e.md.options.linkify) {
for (s = 0, a = v.length; s < a; s++)
if (!(v[s].type !== "inline" || !e.md.linkify.pretest(v[s].content)))
for (o = v[s].children, h = 0, n = o.length - 1; n >= 0; n--) {
if (i = o[n], i.type === "link_close") {
for (n--; o[n].level !== i.level && o[n].type !== "link_open";) n--;
continue
}
if (i.type === "html_inline" && (CY(i.content) && h > 0 && h--, EY(i.content) && h++), !(h > 0) && i.type === "text" && e.md.linkify.test(i.content)) {
for (u = i.content, w = e.md.linkify.match(u), c = [], f = i.level, m = 0, w.length > 0 && w[0].index === 0 && n > 0 && o[n - 1].type === "text_special" && (w = w.slice(1)), l = 0; l < w.length; l++) g = w[l].url, b = e.md.normalizeLink(g), e.md.validateLink(b) && (x = w[l].text, w[l].schema ? w[l].schema === "mailto:" && !/^mailto:/i.test(x) ? x = e.md.normalizeLinkText("mailto:" + x).replace(/^mailto:/, "") : x = e.md.normalizeLinkText(x) : x = e.md.normalizeLinkText("http://" + x).replace(/^http:\/\//, ""), d = w[l].index, d > m && (r = new e.Token("text", "", 0), r.content = u.slice(m, d), r.level = f, c.push(r)), r = new e.Token("link_open", "a", 1), r.attrs = [
["href", b]
], r.level = f++, r.markup = "linkify", r.info = "auto", c.push(r), r = new e.Token("text", "", 0), r.content = x, r.level = f, c.push(r), r = new e.Token("link_close", "a", -1), r.level = --f, r.markup = "linkify", r.info = "auto", c.push(r), m = w[l].lastIndex);
m < u.length && (r = new e.Token("text", "", 0), r.content = u.slice(m), r.level = f, c.push(r)), v[s].children = o = _Y(o, n, c)
}
}
}
},
kp = /\+-|\.\.|\?\?\?\?|!!!!|,,|--/,
SY = /\((c|tm|r)\)/i,
TY = /\((c|tm|r)\)/ig,
DY = {
c: "©",
r: "®",
tm: "™"
};
function IY(t, e) {
return DY[e.toLowerCase()]
}
function NY(t) {
var e, n, s = 0;
for (e = t.length - 1; e >= 0; e--) n = t[e], n.type === "text" && !s && (n.content = n.content.replace(TY, IY)), n.type === "link_open" && n.info === "auto" && s--, n.type === "link_close" && n.info === "auto" && s++
}
function MY(t) {
var e, n, s = 0;
for (e = t.length - 1; e >= 0; e--) n = t[e], n.type === "text" && !s && kp.test(n.content) && (n.content = n.content.replace(/\+-/g, "±").replace(/\.{2,}/g, "…").replace(/([?!])…/g, "$1..").replace(/([?!]){4,}/g, "$1$1$1").replace(/,{2,}/g, ",").replace(/(^|[^-])---(?=[^-]|$)/mg, "$1—").replace(/(^|\s)--(?=\s|$)/mg, "$1–").replace(/(^|[^-\s])--(?=[^-\s]|$)/mg, "$1–")), n.type === "link_open" && n.info === "auto" && s--, n.type === "link_close" && n.info === "auto" && s++
}
var OY = function(e) {
var n;
if (e.md.options.typographer)
for (n = e.tokens.length - 1; n >= 0; n--) e.tokens[n].type === "inline" && (SY.test(e.tokens[n].content) && NY(e.tokens[n].children), kp.test(e.tokens[n].content) && MY(e.tokens[n].children))
},
Sc = oe.isWhiteSpace,
Tc = oe.isPunctChar,
Dc = oe.isMdAsciiPunct,
LY = /['"]/,
Ic = /['"]/g,
Nc = "’";
function Rs(t, e, n) {
return t.slice(0, e) + n + t.slice(e + 1)
}
function RY(t, e) {
var n, s, a, o, r, i, c, l, u, d, m, f, h, g, b, x, v, w, E, _, k;
for (E = [], n = 0; n < t.length; n++) {
for (s = t[n], c = t[n].level, v = E.length - 1; v >= 0 && !(E[v].level <= c); v--);
if (E.length = v + 1, s.type === "text") {
a = s.content, r = 0, i = a.length;
e: for (; r < i && (Ic.lastIndex = r, o = Ic.exec(a), !!o);) {
if (b = x = !0, r = o.index + 1, w = o[0] === "'", u = 32, o.index - 1 >= 0) u = a.charCodeAt(o.index - 1);
else
for (v = n - 1; v >= 0 && !(t[v].type === "softbreak" || t[v].type === "hardbreak"); v--)
if (t[v].content) {
u = t[v].content.charCodeAt(t[v].content.length - 1);
break
} if (d = 32, r < i) d = a.charCodeAt(r);
else
for (v = n + 1; v < t.length && !(t[v].type === "softbreak" || t[v].type === "hardbreak"); v++)
if (t[v].content) {
d = t[v].content.charCodeAt(0);
break
} if (m = Dc(u) || Tc(String.fromCharCode(u)), f = Dc(d) || Tc(String.fromCharCode(d)), h = Sc(u), g = Sc(d), g ? b = !1 : f && (h || m || (b = !1)), h ? x = !1 : m && (g || f || (x = !1)), d === 34 && o[0] === '"' && u >= 48 && u <= 57 && (x = b = !1), b && x && (b = m, x = f), !b && !x) {
w && (s.content = Rs(s.content, o.index, Nc));
continue
}
if (x) {
for (v = E.length - 1; v >= 0 && (l = E[v], !(E[v].level < c)); v--)
if (l.single === w && E[v].level === c) {
l = E[v], w ? (_ = e.md.options.quotes[2], k = e.md.options.quotes[3]) : (_ = e.md.options.quotes[0], k = e.md.options.quotes[1]), s.content = Rs(s.content, o.index, k), t[l.token].content = Rs(t[l.token].content, l.pos, _), r += k.length - 1, l.token === n && (r += _.length - 1), a = s.content, i = a.length, E.length = v;
continue e
}
}
b ? E.push({
token: n,
pos: o.index,
single: w,
level: c
}) : x && w && (s.content = Rs(s.content, o.index, Nc))
}
}
}
}
var PY = function(e) {
var n;
if (e.md.options.typographer)
for (n = e.tokens.length - 1; n >= 0; n--) e.tokens[n].type !== "inline" || !LY.test(e.tokens[n].content) || RY(e.tokens[n].children, e)
},
BY = function(e) {
var n, s, a, o, r, i, c = e.tokens;
for (n = 0, s = c.length; n < s; n++)
if (c[n].type === "inline") {
for (a = c[n].children, r = a.length, o = 0; o < r; o++) a[o].type === "text_special" && (a[o].type = "text");
for (o = i = 0; o < r; o++) a[o].type === "text" && o + 1 < r && a[o + 1].type === "text" ? a[o + 1].content = a[o].content + a[o + 1].content : (o !== i && (a[i] = a[o]), i++);
o !== i && (a.length = i)
}
};
function Pn(t, e, n) {
this.type = t, this.tag = e, this.attrs = null, this.map = null, this.nesting = n, this.level = 0, this.children = null, this.content = "", this.markup = "", this.info = "", this.meta = null, this.block = !1, this.hidden = !1
}
Pn.prototype.attrIndex = function(e) {
var n, s, a;
if (!this.attrs) return -1;
for (n = this.attrs, s = 0, a = n.length; s < a; s++)
if (n[s][0] === e) return s;
return -1
};
Pn.prototype.attrPush = function(e) {
this.attrs ? this.attrs.push(e) : this.attrs = [e]
};
Pn.prototype.attrSet = function(e, n) {
var s = this.attrIndex(e),
a = [e, n];
s < 0 ? this.attrPush(a) : this.attrs[s] = a
};
Pn.prototype.attrGet = function(e) {
var n = this.attrIndex(e),
s = null;
return n >= 0 && (s = this.attrs[n][1]), s
};
Pn.prototype.attrJoin = function(e, n) {
var s = this.attrIndex(e);
s < 0 ? this.attrPush([e, n]) : this.attrs[s][1] = this.attrs[s][1] + " " + n
};
var qr = Pn,
zY = qr;
function _p(t, e, n) {
this.src = t, this.env = n, this.tokens = [], this.inlineMode = !1, this.md = e
}
_p.prototype.Token = zY;
var qY = _p,
FY = zr,
po = [
["normalize", yY],
["block", wY],
["inline", kY],
["linkify", AY],
["replacements", OY],
["smartquotes", PY],
["text_join", BY]
];
function Fr() {
this.ruler = new FY;
for (var t = 0; t < po.length; t++) this.ruler.push(po[t][0], po[t][1])
}
Fr.prototype.process = function(t) {
var e, n, s;
for (s = this.ruler.getRules(""), e = 0, n = s.length; e < n; e++) s[e](t)
};
Fr.prototype.State = qY;
var jY = Fr,
mo = oe.isSpace;
function fo(t, e) {
var n = t.bMarks[e] + t.tShift[e],
s = t.eMarks[e];
return t.src.slice(n, s)
}
function Mc(t) {
var e = [],
n = 0,
s = t.length,
a, o = !1,
r = 0,
i = "";
for (a = t.charCodeAt(n); n < s;) a === 124 && (o ? (i += t.substring(r, n - 1), r = n) : (e.push(i + t.substring(r, n)), i = "", r = n + 1)), o = a === 92, n++, a = t.charCodeAt(n);
return e.push(i + t.substring(r)), e
}
var $Y = function(e, n, s, a) {
var o, r, i, c, l, u, d, m, f, h, g, b, x, v, w, E, _, k;
if (n + 2 > s || (u = n + 1, e.sCount[u] < e.blkIndent) || e.sCount[u] - e.blkIndent >= 4 || (i = e.bMarks[u] + e.tShift[u], i >= e.eMarks[u]) || (_ = e.src.charCodeAt(i++), _ !== 124 && _ !== 45 && _ !== 58) || i >= e.eMarks[u] || (k = e.src.charCodeAt(i++), k !== 124 && k !== 45 && k !== 58 && !mo(k)) || _ === 45 && mo(k)) return !1;
for (; i < e.eMarks[u];) {
if (o = e.src.charCodeAt(i), o !== 124 && o !== 45 && o !== 58 && !mo(o)) return !1;
i++
}
for (r = fo(e, n + 1), d = r.split("|"), h = [], c = 0; c < d.length; c++) {
if (g = d[c].trim(), !g) {
if (c === 0 || c === d.length - 1) continue;
return !1
}
if (!/^:?-+:?$/.test(g)) return !1;
g.charCodeAt(g.length - 1) === 58 ? h.push(g.charCodeAt(0) === 58 ? "center" : "right") : g.charCodeAt(0) === 58 ? h.push("left") : h.push("")
}
if (r = fo(e, n).trim(), r.indexOf("|") === -1 || e.sCount[n] - e.blkIndent >= 4 || (d = Mc(r), d.length && d[0] === "" && d.shift(), d.length && d[d.length - 1] === "" && d.pop(), m = d.length, m === 0 || m !== h.length)) return !1;
if (a) return !0;
for (v = e.parentType, e.parentType = "table", E = e.md.block.ruler.getRules("blockquote"), f = e.push("table_open", "table", 1), f.map = b = [n, 0], f = e.push("thead_open", "thead", 1), f.map = [n, n + 1], f = e.push("tr_open", "tr", 1), f.map = [n, n + 1], c = 0; c < d.length; c++) f = e.push("th_open", "th", 1), h[c] && (f.attrs = [
["style", "text-align:" + h[c]]
]), f = e.push("inline", "", 0), f.content = d[c].trim(), f.children = [], f = e.push("th_close", "th", -1);
for (f = e.push("tr_close", "tr", -1), f = e.push("thead_close", "thead", -1), u = n + 2; u < s && !(e.sCount[u] < e.blkIndent); u++) {
for (w = !1, c = 0, l = E.length; c < l; c++)
if (E[c](e, u, s, !0)) {
w = !0;
break
}
if (w || (r = fo(e, u).trim(), !r) || e.sCount[u] - e.blkIndent >= 4) break;
for (d = Mc(r), d.length && d[0] === "" && d.shift(), d.length && d[d.length - 1] === "" && d.pop(), u === n + 2 && (f = e.push("tbody_open", "tbody", 1), f.map = x = [n + 2, 0]), f = e.push("tr_open", "tr", 1), f.map = [u, u + 1], c = 0; c < m; c++) f = e.push("td_open", "td", 1), h[c] && (f.attrs = [
["style", "text-align:" + h[c]]
]), f = e.push("inline", "", 0), f.content = d[c] ? d[c].trim() : "", f.children = [], f = e.push("td_close", "td", -1);
f = e.push("tr_close", "tr", -1)
}
return x && (f = e.push("tbody_close", "tbody", -1), x[1] = u), f = e.push("table_close", "table", -1), b[1] = u, e.parentType = v, e.line = u, !0
},
UY = function(e, n, s) {
var a, o, r;
if (e.sCount[n] - e.blkIndent < 4) return !1;
for (o = a = n + 1; a < s;) {
if (e.isEmpty(a)) {
a++;
continue
}
if (e.sCount[a] - e.blkIndent >= 4) {
a++, o = a;
continue
}
break
}
return e.line = o, r = e.push("code_block", "code", 0), r.content = e.getLines(n, o, 4 + e.blkIndent, !1) + `
`, r.map = [n, e.line], !0
},
VY = function(e, n, s, a) {
var o, r, i, c, l, u, d, m = !1,
f = e.bMarks[n] + e.tShift[n],
h = e.eMarks[n];
if (e.sCount[n] - e.blkIndent >= 4 || f + 3 > h || (o = e.src.charCodeAt(f), o !== 126 && o !== 96) || (l = f, f = e.skipChars(f, o), r = f - l, r < 3) || (d = e.src.slice(l, f), i = e.src.slice(f, h), o === 96 && i.indexOf(String.fromCharCode(o)) >= 0)) return !1;
if (a) return !0;
for (c = n; c++, !(c >= s || (f = l = e.bMarks[c] + e.tShift[c], h = e.eMarks[c], f < h && e.sCount[c] < e.blkIndent));)
if (e.src.charCodeAt(f) === o && !(e.sCount[c] - e.blkIndent >= 4) && (f = e.skipChars(f, o), !(f - l < r) && (f = e.skipSpaces(f), !(f < h)))) {
m = !0;
break
}
return r = e.sCount[n], e.line = c + (m ? 1 : 0), u = e.push("fence", "code", 0), u.info = i, u.content = e.getLines(n + 1, c, r, !0), u.markup = d, u.map = [n, e.line], !0
},
Oc = oe.isSpace,
HY = function(e, n, s, a) {
var o, r, i, c, l, u, d, m, f, h, g, b, x, v, w, E, _, k, M, y, T = e.lineMax,
D = e.bMarks[n] + e.tShift[n],
C = e.eMarks[n];
if (e.sCount[n] - e.blkIndent >= 4 || e.src.charCodeAt(D++) !== 62) return !1;
if (a) return !0;
for (c = f = e.sCount[n] + 1, e.src.charCodeAt(D) === 32 ? (D++, c++, f++, o = !1, E = !0) : e.src.charCodeAt(D) === 9 ? (E = !0, (e.bsCount[n] + f) % 4 === 3 ? (D++, c++, f++, o = !1) : o = !0) : E = !1, h = [e.bMarks[n]], e.bMarks[n] = D; D < C && (r = e.src.charCodeAt(D), Oc(r));) {
r === 9 ? f += 4 - (f + e.bsCount[n] + (o ? 1 : 0)) % 4 : f++;
D++
}
for (g = [e.bsCount[n]], e.bsCount[n] = e.sCount[n] + 1 + (E ? 1 : 0), u = D >= C, v = [e.sCount[n]], e.sCount[n] = f - c, w = [e.tShift[n]], e.tShift[n] = D - e.bMarks[n], k = e.md.block.ruler.getRules("blockquote"), x = e.parentType, e.parentType = "blockquote", m = n + 1; m < s && (y = e.sCount[m] < e.blkIndent, D = e.bMarks[m] + e.tShift[m], C = e.eMarks[m], !(D >= C)); m++) {
if (e.src.charCodeAt(D++) === 62 && !y) {
for (c = f = e.sCount[m] + 1, e.src.charCodeAt(D) === 32 ? (D++, c++, f++, o = !1, E = !0) : e.src.charCodeAt(D) === 9 ? (E = !0, (e.bsCount[m] + f) % 4 === 3 ? (D++, c++, f++, o = !1) : o = !0) : E = !1, h.push(e.bMarks[m]), e.bMarks[m] = D; D < C && (r = e.src.charCodeAt(D), Oc(r));) {
r === 9 ? f += 4 - (f + e.bsCount[m] + (o ? 1 : 0)) % 4 : f++;
D++
}
u = D >= C, g.push(e.bsCount[m]), e.bsCount[m] = e.sCount[m] + 1 + (E ? 1 : 0), v.push(e.sCount[m]), e.sCount[m] = f - c, w.push(e.tShift[m]), e.tShift[m] = D - e.bMarks[m];
continue
}
if (u) break;
for (_ = !1, i = 0, l = k.length; i < l; i++)
if (k[i](e, m, s, !0)) {
_ = !0;
break
}
if (_) {
e.lineMax = m, e.blkIndent !== 0 && (h.push(e.bMarks[m]), g.push(e.bsCount[m]), w.push(e.tShift[m]), v.push(e.sCount[m]), e.sCount[m] -= e.blkIndent);
break
}
h.push(e.bMarks[m]), g.push(e.bsCount[m]), w.push(e.tShift[m]), v.push(e.sCount[m]), e.sCount[m] = -1
}
for (b = e.blkIndent, e.blkIndent = 0, M = e.push("blockquote_open", "blockquote", 1), M.markup = ">", M.map = d = [n, 0], e.md.block.tokenize(e, n, m), M = e.push("blockquote_close", "blockquote", -1), M.markup = ">", e.lineMax = T, e.parentType = x, d[1] = e.line, i = 0; i < w.length; i++) e.bMarks[i + n] = h[i], e.tShift[i + n] = w[i], e.sCount[i + n] = v[i], e.bsCount[i + n] = g[i];
return e.blkIndent = b, !0
},
GY = oe.isSpace,
WY = function(e, n, s, a) {
var o, r, i, c, l = e.bMarks[n] + e.tShift[n],
u = e.eMarks[n];
if (e.sCount[n] - e.blkIndent >= 4 || (o = e.src.charCodeAt(l++), o !== 42 && o !== 45 && o !== 95)) return !1;
for (r = 1; l < u;) {
if (i = e.src.charCodeAt(l++), i !== o && !GY(i)) return !1;
i === o && r++
}
return r < 3 ? !1 : (a || (e.line = n + 1, c = e.push("hr", "hr", 0), c.map = [n, e.line], c.markup = Array(r + 1).join(String.fromCharCode(o))), !0)
},
Cp = oe.isSpace;
function Lc(t, e) {
var n, s, a, o;
return s = t.bMarks[e] + t.tShift[e], a = t.eMarks[e], n = t.src.charCodeAt(s++), n !== 42 && n !== 45 && n !== 43 || s < a && (o = t.src.charCodeAt(s), !Cp(o)) ? -1 : s
}
function Rc(t, e) {
var n, s = t.bMarks[e] + t.tShift[e],
a = s,
o = t.eMarks[e];
if (a + 1 >= o || (n = t.src.charCodeAt(a++), n < 48 || n > 57)) return -1;
for (;;) {
if (a >= o) return -1;
if (n = t.src.charCodeAt(a++), n >= 48 && n <= 57) {
if (a - s >= 10) return -1;
continue
}
if (n === 41 || n === 46) break;
return -1
}
return a < o && (n = t.src.charCodeAt(a), !Cp(n)) ? -1 : a
}
function JY(t, e) {
var n, s, a = t.level + 2;
for (n = e + 2, s = t.tokens.length - 2; n < s; n++) t.tokens[n].level === a && t.tokens[n].type === "paragraph_open" && (t.tokens[n + 2].hidden = !0, t.tokens[n].hidden = !0, n += 2)
}
var YY = function(e, n, s, a) {
var o, r, i, c, l, u, d, m, f, h, g, b, x, v, w, E, _, k, M, y, T, D, C, L, R, A, I, O, B = !1,
j = !0;
if (e.sCount[n] - e.blkIndent >= 4 || e.listIndent >= 0 && e.sCount[n] - e.listIndent >= 4 && e.sCount[n] < e.blkIndent) return !1;
if (a && e.parentType === "paragraph" && e.sCount[n] >= e.blkIndent && (B = !0), (C = Rc(e, n)) >= 0) {
if (d = !0, R = e.bMarks[n] + e.tShift[n], x = Number(e.src.slice(R, C - 1)), B && x !== 1) return !1
} else if ((C = Lc(e, n)) >= 0) d = !1;
else return !1;
if (B && e.skipSpaces(C) >= e.eMarks[n]) return !1;
if (b = e.src.charCodeAt(C - 1), a) return !0;
for (g = e.tokens.length, d ? (O = e.push("ordered_list_open", "ol", 1), x !== 1 && (O.attrs = [
["start", x]
])) : O = e.push("bullet_list_open", "ul", 1), O.map = h = [n, 0], O.markup = String.fromCharCode(b), w = n, L = !1, I = e.md.block.ruler.getRules("list"), k = e.parentType, e.parentType = "list"; w < s;) {
for (D = C, v = e.eMarks[w], u = E = e.sCount[w] + C - (e.bMarks[n] + e.tShift[n]); D < v;) {
if (o = e.src.charCodeAt(D), o === 9) E += 4 - (E + e.bsCount[w]) % 4;
else if (o === 32) E++;
else break;
D++
}
if (r = D, r >= v ? l = 1 : l = E - u, l > 4 && (l = 1), c = u + l, O = e.push("list_item_open", "li", 1), O.markup = String.fromCharCode(b), O.map = m = [n, 0], d && (O.info = e.src.slice(R, C - 1)), T = e.tight, y = e.tShift[n], M = e.sCount[n], _ = e.listIndent, e.listIndent = e.blkIndent, e.blkIndent = c, e.tight = !0, e.tShift[n] = r - e.bMarks[n], e.sCount[n] = E, r >= v && e.isEmpty(n + 1) ? e.line = Math.min(e.line + 2, s) : e.md.block.tokenize(e, n, s, !0), (!e.tight || L) && (j = !1), L = e.line - n > 1 && e.isEmpty(e.line - 1), e.blkIndent = e.listIndent, e.listIndent = _, e.tShift[n] = y, e.sCount[n] = M, e.tight = T, O = e.push("list_item_close", "li", -1), O.markup = String.fromCharCode(b), w = n = e.line, m[1] = w, r = e.bMarks[n], w >= s || e.sCount[w] < e.blkIndent || e.sCount[n] - e.blkIndent >= 4) break;
for (A = !1, i = 0, f = I.length; i < f; i++)
if (I[i](e, w, s, !0)) {
A = !0;
break
}
if (A) break;
if (d) {
if (C = Rc(e, w), C < 0) break;
R = e.bMarks[w] + e.tShift[w]
} else if (C = Lc(e, w), C < 0) break;
if (b !== e.src.charCodeAt(C - 1)) break
}
return d ? O = e.push("ordered_list_close", "ol", -1) : O = e.push("bullet_list_close", "ul", -1), O.markup = String.fromCharCode(b), h[1] = w, e.line = w, e.parentType = k, j && JY(e, g), !0
},
KY = oe.normalizeReference,
Ps = oe.isSpace,
XY = function(e, n, s, a) {
var o, r, i, c, l, u, d, m, f, h, g, b, x, v, w, E, _ = 0,
k = e.bMarks[n] + e.tShift[n],
M = e.eMarks[n],
y = n + 1;
if (e.sCount[n] - e.blkIndent >= 4 || e.src.charCodeAt(k) !== 91) return !1;
for (; ++k < M;)
if (e.src.charCodeAt(k) === 93 && e.src.charCodeAt(k - 1) !== 92) {
if (k + 1 === M || e.src.charCodeAt(k + 1) !== 58) return !1;
break
}
for (c = e.lineMax, w = e.md.block.ruler.getRules("reference"), h = e.parentType, e.parentType = "reference"; y < c && !e.isEmpty(y); y++)
if (!(e.sCount[y] - e.blkIndent > 3) && !(e.sCount[y] < 0)) {
for (v = !1, u = 0, d = w.length; u < d; u++)
if (w[u](e, y, c, !0)) {
v = !0;
break
}
if (v) break
}
for (x = e.getLines(n, y, e.blkIndent, !1).trim(), M = x.length, k = 1; k < M; k++) {
if (o = x.charCodeAt(k), o === 91) return !1;
if (o === 93) {
f = k;
break
} else o === 10 ? _++ : o === 92 && (k++, k < M && x.charCodeAt(k) === 10 && _++)
}
if (f < 0 || x.charCodeAt(f + 1) !== 58) return !1;
for (k = f + 2; k < M; k++)
if (o = x.charCodeAt(k), o === 10) _++;
else if (!Ps(o)) break;
if (g = e.md.helpers.parseLinkDestination(x, k, M), !g.ok || (l = e.md.normalizeLink(g.str), !e.md.validateLink(l))) return !1;
for (k = g.pos, _ += g.lines, r = k, i = _, b = k; k < M; k++)
if (o = x.charCodeAt(k), o === 10) _++;
else if (!Ps(o)) break;
for (g = e.md.helpers.parseLinkTitle(x, k, M), k < M && b !== k && g.ok ? (E = g.str, k = g.pos, _ += g.lines) : (E = "", k = r, _ = i); k < M && (o = x.charCodeAt(k), !!Ps(o));) k++;
if (k < M && x.charCodeAt(k) !== 10 && E)
for (E = "", k = r, _ = i; k < M && (o = x.charCodeAt(k), !!Ps(o));) k++;
return k < M && x.charCodeAt(k) !== 10 || (m = KY(x.slice(1, f)), !m) ? !1 : (a || (typeof e.env.references == "undefined" && (e.env.references = {}), typeof e.env.references[m] == "undefined" && (e.env.references[m] = {
title: E,
href: l
}), e.parentType = h, e.line = n + _ + 1), !0)
},
ZY = ["address", "article", "aside", "base", "basefont", "blockquote", "body", "caption", "center", "col", "colgroup", "dd", "details", "dialog", "dir", "div", "dl", "dt", "fieldset", "figcaption", "figure", "footer", "form", "frame", "frameset", "h1", "h2", "h3", "h4", "h5", "h6", "head", "header", "hr", "html", "iframe", "legend", "li", "link", "main", "menu", "menuitem", "nav", "noframes", "ol", "optgroup", "option", "p", "param", "section", "source", "summary", "table", "tbody", "td", "tfoot", "th", "thead", "title", "tr", "track", "ul"],
za = {},
QY = "[a-zA-Z_:][a-zA-Z0-9:._-]*",
eK = "[^\"'=<>`\\x00-\\x20]+",
tK = "'[^']*'",
nK = '"[^"]*"',
sK = "(?:" + eK + "|" + tK + "|" + nK + ")",
aK = "(?:\\s+" + QY + "(?:\\s*=\\s*" + sK + ")?)",
Ep = "<[A-Za-z][A-Za-z0-9\\-]*" + aK + "*\\s*\\/?>",
Ap = "<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>",
oK = "<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->",
rK = "<[?][\\s\\S]*?[?]>",
iK = "<![A-Z]+\\s+[^>]*>",
cK = "<!\\[CDATA\\[[\\s\\S]*?\\]\\]>",
lK = new RegExp("^(?:" + Ep + "|" + Ap + "|" + oK + "|" + rK + "|" + iK + "|" + cK + ")"),
uK = new RegExp("^(?:" + Ep + "|" + Ap + ")");
za.HTML_TAG_RE = lK;
za.HTML_OPEN_CLOSE_TAG_RE = uK;
var pK = ZY,
dK = za.HTML_OPEN_CLOSE_TAG_RE,
un = [
[/^<(script|pre|style|textarea)(?=(\s|>|$))/i, /<\/(script|pre|style|textarea)>/i, !0],
[/^<!--/, /-->/, !0],
[/^<\?/, /\?>/, !0],
[/^<![A-Z]/, />/, !0],
[/^<!\[CDATA\[/, /\]\]>/, !0],
[new RegExp("^</?(" + pK.join("|") + ")(?=(\\s|/?>|$))", "i"), /^$/, !0],
[new RegExp(dK.source + "\\s*$"), /^$/, !1]
],
mK = function(e, n, s, a) {
var o, r, i, c, l = e.bMarks[n] + e.tShift[n],
u = e.eMarks[n];
if (e.sCount[n] - e.blkIndent >= 4 || !e.md.options.html || e.src.charCodeAt(l) !== 60) return !1;
for (c = e.src.slice(l, u), o = 0; o < un.length && !un[o][0].test(c); o++);
if (o === un.length) return !1;
if (a) return un[o][2];
if (r = n + 1, !un[o][1].test(c)) {
for (; r < s && !(e.sCount[r] < e.blkIndent); r++)
if (l = e.bMarks[r] + e.tShift[r], u = e.eMarks[r], c = e.src.slice(l, u), un[o][1].test(c)) {
c.length !== 0 && r++;
break
}
}
return e.line = r, i = e.push("html_block", "", 0), i.map = [n, r], i.content = e.getLines(n, r, e.blkIndent, !0), !0
},
Pc = oe.isSpace,
fK = function(e, n, s, a) {
var o, r, i, c, l = e.bMarks[n] + e.tShift[n],
u = e.eMarks[n];
if (e.sCount[n] - e.blkIndent >= 4 || (o = e.src.charCodeAt(l), o !== 35 || l >= u)) return !1;
for (r = 1, o = e.src.charCodeAt(++l); o === 35 && l < u && r <= 6;) r++, o = e.src.charCodeAt(++l);
return r > 6 || l < u && !Pc(o) ? !1 : (a || (u = e.skipSpacesBack(u, l), i = e.skipCharsBack(u, 35, l), i > l && Pc(e.src.charCodeAt(i - 1)) && (u = i), e.line = n + 1, c = e.push("heading_open", "h" + String(r), 1), c.markup = "########".slice(0, r), c.map = [n, e.line], c = e.push("inline", "", 0), c.content = e.src.slice(l, u).trim(), c.map = [n, e.line], c.children = [], c = e.push("heading_close", "h" + String(r), -1), c.markup = "########".slice(0, r)), !0)
},
hK = function(e, n, s) {
var a, o, r, i, c, l, u, d, m, f = n + 1,
h, g = e.md.block.ruler.getRules("paragraph");
if (e.sCount[n] - e.blkIndent >= 4) return !1;
for (h = e.parentType, e.parentType = "paragraph"; f < s && !e.isEmpty(f); f++)
if (!(e.sCount[f] - e.blkIndent > 3)) {
if (e.sCount[f] >= e.blkIndent && (l = e.bMarks[f] + e.tShift[f], u = e.eMarks[f], l < u && (m = e.src.charCodeAt(l), (m === 45 || m === 61) && (l = e.skipChars(l, m), l = e.skipSpaces(l), l >= u)))) {
d = m === 61 ? 1 : 2;
break
}
if (!(e.sCount[f] < 0)) {
for (o = !1, r = 0, i = g.length; r < i; r++)
if (g[r](e, f, s, !0)) {
o = !0;
break
}
if (o) break
}
}
return d ? (a = e.getLines(n, f, e.blkIndent, !1).trim(), e.line = f + 1, c = e.push("heading_open", "h" + String(d), 1), c.markup = String.fromCharCode(m), c.map = [n, e.line], c = e.push("inline", "", 0), c.content = a, c.map = [n, e.line - 1], c.children = [], c = e.push("heading_close", "h" + String(d), -1), c.markup = String.fromCharCode(m), e.parentType = h, !0) : !1
},
gK = function(e, n) {
var s, a, o, r, i, c, l = n + 1,
u = e.md.block.ruler.getRules("paragraph"),
d = e.lineMax;
for (c = e.parentType, e.parentType = "paragraph"; l < d && !e.isEmpty(l); l++)
if (!(e.sCount[l] - e.blkIndent > 3) && !(e.sCount[l] < 0)) {
for (a = !1, o = 0, r = u.length; o < r; o++)
if (u[o](e, l, d, !0)) {
a = !0;
break
}
if (a) break
}
return s = e.getLines(n, l, e.blkIndent, !1).trim(), e.line = l, i = e.push("paragraph_open", "p", 1), i.map = [n, e.line], i = e.push("inline", "", 0), i.content = s, i.map = [n, e.line], i.children = [], i = e.push("paragraph_close", "p", -1), e.parentType = c, !0
},
Sp = qr,
qa = oe.isSpace;
function Et(t, e, n, s) {
var a, o, r, i, c, l, u, d;
for (this.src = t, this.md = e, this.env = n, this.tokens = s, this.bMarks = [], this.eMarks = [], this.tShift = [], this.sCount = [], this.bsCount = [], this.blkIndent = 0, this.line = 0, this.lineMax = 0, this.tight = !1, this.ddIndent = -1, this.listIndent = -1, this.parentType = "root", this.level = 0, this.result = "", o = this.src, d = !1, r = i = l = u = 0, c = o.length; i < c; i++) {
if (a = o.charCodeAt(i), !d)
if (qa(a)) {
l++, a === 9 ? u += 4 - u % 4 : u++;
continue
} else d = !0;
(a === 10 || i === c - 1) && (a !== 10 && i++, this.bMarks.push(r), this.eMarks.push(i), this.tShift.push(l), this.sCount.push(u), this.bsCount.push(0), d = !1, l = 0, u = 0, r = i + 1)
}
this.bMarks.push(o.length), this.eMarks.push(o.length), this.tShift.push(0), this.sCount.push(0), this.bsCount.push(0), this.lineMax = this.bMarks.length - 1
}
Et.prototype.push = function(t, e, n) {
var s = new Sp(t, e, n);
return s.block = !0, n < 0 && this.level--, s.level = this.level, n > 0 && this.level++, this.tokens.push(s), s
};
Et.prototype.isEmpty = function(e) {
return this.bMarks[e] + this.tShift[e] >= this.eMarks[e]
};
Et.prototype.skipEmptyLines = function(e) {
for (var n = this.lineMax; e < n && !(this.bMarks[e] + this.tShift[e] < this.eMarks[e]); e++);
return e
};
Et.prototype.skipSpaces = function(e) {
for (var n, s = this.src.length; e < s && (n = this.src.charCodeAt(e), !!qa(n)); e++);
return e
};
Et.prototype.skipSpacesBack = function(e, n) {
if (e <= n) return e;
for (; e > n;)
if (!qa(this.src.charCodeAt(--e))) return e + 1;
return e
};
Et.prototype.skipChars = function(e, n) {
for (var s = this.src.length; e < s && this.src.charCodeAt(e) === n; e++);
return e
};
Et.prototype.skipCharsBack = function(e, n, s) {
if (e <= s) return e;
for (; e > s;)
if (n !== this.src.charCodeAt(--e)) return e + 1;
return e
};
Et.prototype.getLines = function(e, n, s, a) {
var o, r, i, c, l, u, d, m = e;
if (e >= n) return "";
for (u = new Array(n - e), o = 0; m < n; m++, o++) {
for (r = 0, d = c = this.bMarks[m], m + 1 < n || a ? l = this.eMarks[m] + 1 : l = this.eMarks[m]; c < l && r < s;) {
if (i = this.src.charCodeAt(c), qa(i)) i === 9 ? r += 4 - (r + this.bsCount[m]) % 4 : r++;
else if (c - d < this.tShift[m]) r++;
else break;
c++
}
r > s ? u[o] = new Array(r - s + 1).join(" ") + this.src.slice(c, l) : u[o] = this.src.slice(c, l)
}
return u.join("")
};
Et.prototype.Token = Sp;
var bK = Et,
vK = zr,
Bs = [
["table", $Y, ["paragraph", "reference"]],
["code", UY],
["fence", VY, ["paragraph", "reference", "blockquote", "list"]],
["blockquote", HY, ["paragraph", "reference", "blockquote", "list"]],
["hr", WY, ["paragraph", "reference", "blockquote", "list"]],
["list", YY, ["paragraph", "reference", "blockquote"]],
["reference", XY],
["html_block", mK, ["paragraph", "reference", "blockquote"]],
["heading", fK, ["paragraph", "reference", "blockquote"]],
["lheading", hK],
["paragraph", gK]
];
function Fa() {
this.ruler = new vK;
for (var t = 0; t < Bs.length; t++) this.ruler.push(Bs[t][0], Bs[t][1], {
alt: (Bs[t][2] || []).slice()
})
}
Fa.prototype.tokenize = function(t, e, n) {
for (var s, a, o = this.ruler.getRules(""), r = o.length, i = e, c = !1, l = t.md.options.maxNesting; i < n && (t.line = i = t.skipEmptyLines(i), !(i >= n || t.sCount[i] < t.blkIndent));) {
if (t.level >= l) {
t.line = n;
break
}
for (a = 0; a < r && (s = o[a](t, i, n, !1), !s); a++);
t.tight = !c, t.isEmpty(t.line - 1) && (c = !0), i = t.line, i < n && t.isEmpty(i) && (c = !0, i++, t.line = i)
}
};
Fa.prototype.parse = function(t, e, n, s) {
var a;
t && (a = new this.State(t, e, n, s), this.tokenize(a, a.line, a.lineMax))
};
Fa.prototype.State = bK;
var xK = Fa;
function yK(t) {
switch (t) {
case 10:
case 33:
case 35:
case 36:
case 37:
case 38:
case 42:
case 43:
case 45:
case 58:
case 60:
case 61:
case 62:
case 64:
case 91:
case 92:
case 93:
case 94:
case 95:
case 96:
case 123:
case 125:
case 126:
return !0;
default:
return !1
}
}
var wK = function(e, n) {
for (var s = e.pos; s < e.posMax && !yK(e.src.charCodeAt(s));) s++;
return s === e.pos ? !1 : (n || (e.pending += e.src.slice(e.pos, s)), e.pos = s, !0)
},
kK = /(?:^|[^a-z0-9.+-])([a-z][a-z0-9.+-]*)$/i,
_K = function(e, n) {
var s, a, o, r, i, c, l, u;
return !e.md.options.linkify || e.linkLevel > 0 || (s = e.pos, a = e.posMax, s + 3 > a) || e.src.charCodeAt(s) !== 58 || e.src.charCodeAt(s + 1) !== 47 || e.src.charCodeAt(s + 2) !== 47 || (o = e.pending.match(kK), !o) || (r = o[1], i = e.md.linkify.matchAtStart(e.src.slice(s - r.length)), !i) || (c = i.url, c = c.replace(/\*+$/, ""), l = e.md.normalizeLink(c), !e.md.validateLink(l)) ? !1 : (n || (e.pending = e.pending.slice(0, -r.length), u = e.push("link_open", "a", 1), u.attrs = [
["href", l]
], u.markup = "linkify", u.info = "auto", u = e.push("text", "", 0), u.content = e.md.normalizeLinkText(c), u = e.push("link_close", "a", -1), u.markup = "linkify", u.info = "auto"), e.pos += c.length - r.length, !0)
},
CK = oe.isSpace,
EK = function(e, n) {
var s, a, o, r = e.pos;
if (e.src.charCodeAt(r) !== 10) return !1;
if (s = e.pending.length - 1, a = e.posMax, !n)
if (s >= 0 && e.pending.charCodeAt(s) === 32)
if (s >= 1 && e.pending.charCodeAt(s - 1) === 32) {
for (o = s - 1; o >= 1 && e.pending.charCodeAt(o - 1) === 32;) o--;
e.pending = e.pending.slice(0, o), e.push("hardbreak", "br", 0)
} else e.pending = e.pending.slice(0, -1), e.push("softbreak", "br", 0);
else e.push("softbreak", "br", 0);
for (r++; r < a && CK(e.src.charCodeAt(r));) r++;
return e.pos = r, !0
},
AK = oe.isSpace,
jr = [];
for (var Bc = 0; Bc < 256; Bc++) jr.push(0);
"\\!\"#$%&'()*+,./:;<=>?@[]^_`{|}~-".split("").forEach(function(t) {
jr[t.charCodeAt(0)] = 1
});
var SK = function(e, n) {
var s, a, o, r, i, c = e.pos,
l = e.posMax;
if (e.src.charCodeAt(c) !== 92 || (c++, c >= l)) return !1;
if (s = e.src.charCodeAt(c), s === 10) {
for (n || e.push("hardbreak", "br", 0), c++; c < l && (s = e.src.charCodeAt(c), !!AK(s));) c++;
return e.pos = c, !0
}
return r = e.src[c], s >= 55296 && s <= 56319 && c + 1 < l && (a = e.src.charCodeAt(c + 1), a >= 56320 && a <= 57343 && (r += e.src[c + 1], c++)), o = "\\" + r, n || (i = e.push("text_special", "", 0), s < 256 && jr[s] !== 0 ? i.content = r : i.content = o, i.markup = o, i.info = "escape"), e.pos = c + 1, !0
},
TK = function(e, n) {
var s, a, o, r, i, c, l, u, d = e.pos,
m = e.src.charCodeAt(d);
if (m !== 96) return !1;
for (s = d, d++, a = e.posMax; d < a && e.src.charCodeAt(d) === 96;) d++;
if (o = e.src.slice(s, d), l = o.length, e.backticksScanned && (e.backticks[l] || 0) <= s) return n || (e.pending += o), e.pos += l, !0;
for (i = c = d;
(i = e.src.indexOf("`", c)) !== -1;) {
for (c = i + 1; c < a && e.src.charCodeAt(c) === 96;) c++;
if (u = c - i, u === l) return n || (r = e.push("code_inline", "code", 0), r.markup = o, r.content = e.src.slice(d, i).replace(/\n/g, " ").replace(/^ (.+) $/, "$1")), e.pos = c, !0;
e.backticks[u] = i
}
return e.backticksScanned = !0, n || (e.pending += o), e.pos += l, !0
},
ja = {};
ja.tokenize = function(e, n) {
var s, a, o, r, i, c = e.pos,
l = e.src.charCodeAt(c);
if (n || l !== 126 || (a = e.scanDelims(e.pos, !0), r = a.length, i = String.fromCharCode(l), r < 2)) return !1;
for (r % 2 && (o = e.push("text", "", 0), o.content = i, r--), s = 0; s < r; s += 2) o = e.push("text", "", 0), o.content = i + i, e.delimiters.push({
marker: l,
length: 0,
token: e.tokens.length - 1,
end: -1,
open: a.can_open,
close: a.can_close
});
return e.pos += a.length, !0
};
function zc(t, e) {
var n, s, a, o, r, i = [],
c = e.length;
for (n = 0; n < c; n++) a = e[n], a.marker === 126 && a.end !== -1 && (o = e[a.end], r = t.tokens[a.token], r.type = "s_open", r.tag = "s", r.nesting = 1, r.markup = "~~", r.content = "", r = t.tokens[o.token], r.type = "s_close", r.tag = "s", r.nesting = -1, r.markup = "~~", r.content = "", t.tokens[o.token - 1].type === "text" && t.tokens[o.token - 1].content === "~" && i.push(o.token - 1));
for (; i.length;) {
for (n = i.pop(), s = n + 1; s < t.tokens.length && t.tokens[s].type === "s_close";) s++;
s--, n !== s && (r = t.tokens[s], t.tokens[s] = t.tokens[n], t.tokens[n] = r)
}
}
ja.postProcess = function(e) {
var n, s = e.tokens_meta,
a = e.tokens_meta.length;
for (zc(e, e.delimiters), n = 0; n < a; n++) s[n] && s[n].delimiters && zc(e, s[n].delimiters)
};
var $a = {};
$a.tokenize = function(e, n) {
var s, a, o, r = e.pos,
i = e.src.charCodeAt(r);
if (n || i !== 95 && i !== 42) return !1;
for (a = e.scanDelims(e.pos, i === 42), s = 0; s < a.length; s++) o = e.push("text", "", 0), o.content = String.fromCharCode(i), e.delimiters.push({
marker: i,
length: a.length,
token: e.tokens.length - 1,
end: -1,
open: a.can_open,
close: a.can_close
});
return e.pos += a.length, !0
};
function qc(t, e) {
var n, s, a, o, r, i, c = e.length;
for (n = c - 1; n >= 0; n--) s = e[n], !(s.marker !== 95 && s.marker !== 42) && s.end !== -1 && (a = e[s.end], i = n > 0 && e[n - 1].end === s.end + 1 && e[n - 1].marker === s.marker && e[n - 1].token === s.token - 1 && e[s.end + 1].token === a.token + 1, r = String.fromCharCode(s.marker), o = t.tokens[s.token], o.type = i ? "strong_open" : "em_open", o.tag = i ? "strong" : "em", o.nesting = 1, o.markup = i ? r + r : r, o.content = "", o = t.tokens[a.token], o.type = i ? "strong_close" : "em_close", o.tag = i ? "strong" : "em", o.nesting = -1, o.markup = i ? r + r : r, o.content = "", i && (t.tokens[e[n - 1].token].content = "", t.tokens[e[s.end + 1].token].content = "", n--))
}
$a.postProcess = function(e) {
var n, s = e.tokens_meta,
a = e.tokens_meta.length;
for (qc(e, e.delimiters), n = 0; n < a; n++) s[n] && s[n].delimiters && qc(e, s[n].delimiters)
};
var DK = oe.normalizeReference,
ho = oe.isSpace,
IK = function(e, n) {
var s, a, o, r, i, c, l, u, d, m = "",
f = "",
h = e.pos,
g = e.posMax,
b = e.pos,
x = !0;
if (e.src.charCodeAt(e.pos) !== 91 || (i = e.pos + 1, r = e.md.helpers.parseLinkLabel(e, e.pos, !0), r < 0)) return !1;
if (c = r + 1, c < g && e.src.charCodeAt(c) === 40) {
for (x = !1, c++; c < g && (a = e.src.charCodeAt(c), !(!ho(a) && a !== 10)); c++);
if (c >= g) return !1;
if (b = c, l = e.md.helpers.parseLinkDestination(e.src, c, e.posMax), l.ok) {
for (m = e.md.normalizeLink(l.str), e.md.validateLink(m) ? c = l.pos : m = "", b = c; c < g && (a = e.src.charCodeAt(c), !(!ho(a) && a !== 10)); c++);
if (l = e.md.helpers.parseLinkTitle(e.src, c, e.posMax), c < g && b !== c && l.ok)
for (f = l.str, c = l.pos; c < g && (a = e.src.charCodeAt(c), !(!ho(a) && a !== 10)); c++);
}(c >= g || e.src.charCodeAt(c) !== 41) && (x = !0), c++
}
if (x) {
if (typeof e.env.references == "undefined") return !1;
if (c < g && e.src.charCodeAt(c) === 91 ? (b = c + 1, c = e.md.helpers.parseLinkLabel(e, c), c >= 0 ? o = e.src.slice(b, c++) : c = r + 1) : c = r + 1, o || (o = e.src.slice(i, r)), u = e.env.references[DK(o)], !u) return e.pos = h, !1;
m = u.href, f = u.title
}
return n || (e.pos = i, e.posMax = r, d = e.push("link_open", "a", 1), d.attrs = s = [
["href", m]
], f && s.push(["title", f]), e.linkLevel++, e.md.inline.tokenize(e), e.linkLevel--, d = e.push("link_close", "a", -1)), e.pos = c, e.posMax = g, !0
},
NK = oe.normalizeReference,
go = oe.isSpace,
MK = function(e, n) {
var s, a, o, r, i, c, l, u, d, m, f, h, g, b = "",
x = e.pos,
v = e.posMax;
if (e.src.charCodeAt(e.pos) !== 33 || e.src.charCodeAt(e.pos + 1) !== 91 || (c = e.pos + 2, i = e.md.helpers.parseLinkLabel(e, e.pos + 1, !1), i < 0)) return !1;
if (l = i + 1, l < v && e.src.charCodeAt(l) === 40) {
for (l++; l < v && (a = e.src.charCodeAt(l), !(!go(a) && a !== 10)); l++);
if (l >= v) return !1;
for (g = l, d = e.md.helpers.parseLinkDestination(e.src, l, e.posMax), d.ok && (b = e.md.normalizeLink(d.str), e.md.validateLink(b) ? l = d.pos : b = ""), g = l; l < v && (a = e.src.charCodeAt(l), !(!go(a) && a !== 10)); l++);
if (d = e.md.helpers.parseLinkTitle(e.src, l, e.posMax), l < v && g !== l && d.ok)
for (m = d.str, l = d.pos; l < v && (a = e.src.charCodeAt(l), !(!go(a) && a !== 10)); l++);
else m = "";
if (l >= v || e.src.charCodeAt(l) !== 41) return e.pos = x, !1;
l++
} else {
if (typeof e.env.references == "undefined") return !1;
if (l < v && e.src.charCodeAt(l) === 91 ? (g = l + 1, l = e.md.helpers.parseLinkLabel(e, l), l >= 0 ? r = e.src.slice(g, l++) : l = i + 1) : l = i + 1, r || (r = e.src.slice(c, i)), u = e.env.references[NK(r)], !u) return e.pos = x, !1;
b = u.href, m = u.title
}
return n || (o = e.src.slice(c, i), e.md.inline.parse(o, e.md, e.env, h = []), f = e.push("image", "img", 0), f.attrs = s = [
["src", b],
["alt", ""]
], f.children = h, f.content = o, m && s.push(["title", m])), e.pos = l, e.posMax = v, !0
},
OK = /^([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)$/,
LK = /^([a-zA-Z][a-zA-Z0-9+.\-]{1,31}):([^<>\x00-\x20]*)$/,
RK = function(e, n) {
var s, a, o, r, i, c, l = e.pos;
if (e.src.charCodeAt(l) !== 60) return !1;
for (i = e.pos, c = e.posMax;;) {
if (++l >= c || (r = e.src.charCodeAt(l), r === 60)) return !1;
if (r === 62) break
}
return s = e.src.slice(i + 1, l), LK.test(s) ? (a = e.md.normalizeLink(s), e.md.validateLink(a) ? (n || (o = e.push("link_open", "a", 1), o.attrs = [
["href", a]
], o.markup = "autolink", o.info = "auto", o = e.push("text", "", 0), o.content = e.md.normalizeLinkText(s), o = e.push("link_close", "a", -1), o.markup = "autolink", o.info = "auto"), e.pos += s.length + 2, !0) : !1) : OK.test(s) ? (a = e.md.normalizeLink("mailto:" + s), e.md.validateLink(a) ? (n || (o = e.push("link_open", "a", 1), o.attrs = [
["href", a]
], o.markup = "autolink", o.info = "auto", o = e.push("text", "", 0), o.content = e.md.normalizeLinkText(s), o = e.push("link_close", "a", -1), o.markup = "autolink", o.info = "auto"), e.pos += s.length + 2, !0) : !1) : !1
},
PK = za.HTML_TAG_RE;
function BK(t) {
return /^<a[>\s]/i.test(t)
}
function zK(t) {
return /^<\/a\s*>/i.test(t)
}
function qK(t) {
var e = t | 32;
return e >= 97 && e <= 122
}
var FK = function(e, n) {
var s, a, o, r, i = e.pos;
return !e.md.options.html || (o = e.posMax, e.src.charCodeAt(i) !== 60 || i + 2 >= o) || (s = e.src.charCodeAt(i + 1), s !== 33 && s !== 63 && s !== 47 && !qK(s)) || (a = e.src.slice(i).match(PK), !a) ? !1 : (n || (r = e.push("html_inline", "", 0), r.content = e.src.slice(i, i + a[0].length), BK(r.content) && e.linkLevel++, zK(r.content) && e.linkLevel--), e.pos += a[0].length, !0)
},
Fc = vp,
jK = oe.has,
$K = oe.isValidEntityCode,
jc = oe.fromCodePoint,
UK = /^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i,
VK = /^&([a-z][a-z0-9]{1,31});/i,
HK = function(e, n) {
var s, a, o, r, i = e.pos,
c = e.posMax;
if (e.src.charCodeAt(i) !== 38 || i + 1 >= c) return !1;
if (s = e.src.charCodeAt(i + 1), s === 35) {
if (o = e.src.slice(i).match(UK), o) return n || (a = o[1][0].toLowerCase() === "x" ? parseInt(o[1].slice(1), 16) : parseInt(o[1], 10), r = e.push("text_special", "", 0), r.content = $K(a) ? jc(a) : jc(65533), r.markup = o[0], r.info = "entity"), e.pos += o[0].length, !0
} else if (o = e.src.slice(i).match(VK), o && jK(Fc, o[1])) return n || (r = e.push("text_special", "", 0), r.content = Fc[o[1]], r.markup = o[0], r.info = "entity"), e.pos += o[0].length, !0;
return !1
};
function $c(t, e) {
var n, s, a, o, r, i, c, l, u = {},
d = e.length;
if (d) {
var m = 0,
f = -2,
h = [];
for (n = 0; n < d; n++)
if (a = e[n], h.push(0), (e[m].marker !== a.marker || f !== a.token - 1) && (m = n), f = a.token, a.length = a.length || 0, !!a.close) {
for (u.hasOwnProperty(a.marker) || (u[a.marker] = [-1, -1, -1, -1, -1, -1]), r = u[a.marker][(a.open ? 3 : 0) + a.length % 3], s = m - h[m] - 1, i = s; s > r; s -= h[s] + 1)
if (o = e[s], o.marker === a.marker && o.open && o.end < 0 && (c = !1, (o.close || a.open) && (o.length + a.length) % 3 === 0 && (o.length % 3 !== 0 || a.length % 3 !== 0) && (c = !0), !c)) {
l = s > 0 && !e[s - 1].open ? h[s - 1] + 1 : 0, h[n] = n - s + l, h[s] = l, a.open = !1, o.end = n, o.close = !1, i = -1, f = -2;
break
}
i !== -1 && (u[a.marker][(a.open ? 3 : 0) + (a.length || 0) % 3] = i)
}
}
}
var GK = function(e) {
var n, s = e.tokens_meta,
a = e.tokens_meta.length;
for ($c(e, e.delimiters), n = 0; n < a; n++) s[n] && s[n].delimiters && $c(e, s[n].delimiters)
},
WK = function(e) {
var n, s, a = 0,
o = e.tokens,
r = e.tokens.length;
for (n = s = 0; n < r; n++) o[n].nesting < 0 && a--, o[n].level = a, o[n].nesting > 0 && a++, o[n].type === "text" && n + 1 < r && o[n + 1].type === "text" ? o[n + 1].content = o[n].content + o[n + 1].content : (n !== s && (o[s] = o[n]), s++);
n !== s && (o.length = s)
},
$r = qr,
Uc = oe.isWhiteSpace,
Vc = oe.isPunctChar,
Hc = oe.isMdAsciiPunct;
function xs(t, e, n, s) {
this.src = t, this.env = n, this.md = e, this.tokens = s, this.tokens_meta = Array(s.length), this.pos = 0, this.posMax = this.src.length, this.level = 0, this.pending = "", this.pendingLevel = 0, this.cache = {}, this.delimiters = [], this._prev_delimiters = [], this.backticks = {}, this.backticksScanned = !1, this.linkLevel = 0
}
xs.prototype.pushPending = function() {
var t = new $r("text", "", 0);
return t.content = this.pending, t.level = this.pendingLevel, this.tokens.push(t), this.pending = "", t
};
xs.prototype.push = function(t, e, n) {
this.pending && this.pushPending();
var s = new $r(t, e, n),
a = null;
return n < 0 && (this.level--, this.delimiters = this._prev_delimiters.pop()), s.level = this.level, n > 0 && (this.level++, this._prev_delimiters.push(this.delimiters), this.delimiters = [], a = {
delimiters: this.delimiters
}), this.pendingLevel = this.level, this.tokens.push(s), this.tokens_meta.push(a), s
};
xs.prototype.scanDelims = function(t, e) {
var n = t,
s, a, o, r, i, c, l, u, d, m = !0,
f = !0,
h = this.posMax,
g = this.src.charCodeAt(t);
for (s = t > 0 ? this.src.charCodeAt(t - 1) : 32; n < h && this.src.charCodeAt(n) === g;) n++;
return o = n - t, a = n < h ? this.src.charCodeAt(n) : 32, l = Hc(s) || Vc(String.fromCharCode(s)), d = Hc(a) || Vc(String.fromCharCode(a)), c = Uc(s), u = Uc(a), u ? m = !1 : d && (c || l || (m = !1)), c ? f = !1 : l && (u || d || (f = !1)), e ? (r = m, i = f) : (r = m && (!f || l), i = f && (!m || d)), {
can_open: r,
can_close: i,
length: o
}
};
xs.prototype.Token = $r;
var JK = xs,
Gc = zr,
bo = [
["text", wK],
["linkify", _K],
["newline", EK],
["escape", SK],
["backticks", TK],
["strikethrough", ja.tokenize],
["emphasis", $a.tokenize],
["link", IK],
["image", MK],
["autolink", RK],
["html_inline", FK],
["entity", HK]
],
vo = [
["balance_pairs", GK],
["strikethrough", ja.postProcess],
["emphasis", $a.postProcess],
["fragments_join", WK]
];
function ys() {
var t;
for (this.ruler = new Gc, t = 0; t < bo.length; t++) this.ruler.push(bo[t][0], bo[t][1]);
for (this.ruler2 = new Gc, t = 0; t < vo.length; t++) this.ruler2.push(vo[t][0], vo[t][1])
}
ys.prototype.skipToken = function(t) {
var e, n, s = t.pos,
a = this.ruler.getRules(""),
o = a.length,
r = t.md.options.maxNesting,
i = t.cache;
if (typeof i[s] != "undefined") {
t.pos = i[s];
return
}
if (t.level < r)
for (n = 0; n < o && (t.level++, e = a[n](t, !0), t.level--, !e); n++);
else t.pos = t.posMax;
e || t.pos++, i[s] = t.pos
};
ys.prototype.tokenize = function(t) {
for (var e, n, s = this.ruler.getRules(""), a = s.length, o = t.posMax, r = t.md.options.maxNesting; t.pos < o;) {
if (t.level < r)
for (n = 0; n < a && (e = s[n](t, !1), !e); n++);
if (e) {
if (t.pos >= o) break;
continue
}
t.pending += t.src[t.pos++]
}
t.pending && t.pushPending()
};
ys.prototype.parse = function(t, e, n, s) {
var a, o, r, i = new this.State(t, e, n, s);
for (this.tokenize(i), o = this.ruler2.getRules(""), r = o.length, a = 0; a < r; a++) o[a](i)
};
ys.prototype.State = JK;
var YK = ys,
xo, Wc;
function KK() {
return Wc || (Wc = 1, xo = function(t) {
var e = {};
t = t || {}, e.src_Any = xp().source, e.src_Cc = yp().source, e.src_Z = wp().source, e.src_P = Br.source, e.src_ZPCc = [e.src_Z, e.src_P, e.src_Cc].join("|"), e.src_ZCc = [e.src_Z, e.src_Cc].join("|");
var n = "[><|]";
return e.src_pseudo_letter = "(?:(?!" + n + "|" + e.src_ZPCc + ")" + e.src_Any + ")", e.src_ip4 = "(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)", e.src_auth = "(?:(?:(?!" + e.src_ZCc + "|[@/\\[\\]()]).)+@)?", e.src_port = "(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?", e.src_host_terminator = "(?=$|" + n + "|" + e.src_ZPCc + ")(?!" + (t["---"] ? "-(?!--)|" : "-|") + "_|:\\d|\\.-|\\.(?!$|" + e.src_ZPCc + "))", e.src_path = "(?:[/?#](?:(?!" + e.src_ZCc + "|" + n + `|[()[\\]{}.,"'?!\\-;]).|\\[(?:(?!` + e.src_ZCc + "|\\]).)*\\]|\\((?:(?!" + e.src_ZCc + "|[)]).)*\\)|\\{(?:(?!" + e.src_ZCc + '|[}]).)*\\}|\\"(?:(?!' + e.src_ZCc + `|["]).)+\\"|\\'(?:(?!` + e.src_ZCc + "|[']).)+\\'|\\'(?=" + e.src_pseudo_letter + "|[-])|\\.{2,}[a-zA-Z0-9%/&]|\\.(?!" + e.src_ZCc + "|[.]|$)|" + (t["---"] ? "\\-(?!--(?:[^-]|$))(?:-*)|" : "\\-+|") + ",(?!" + e.src_ZCc + "|$)|;(?!" + e.src_ZCc + "|$)|\\!+(?!" + e.src_ZCc + "|[!]|$)|\\?(?!" + e.src_ZCc + "|[?]|$))+|\\/)?", e.src_email_name = '[\\-;:&=\\+\\$,\\.a-zA-Z0-9_][\\-;:&=\\+\\$,\\"\\.a-zA-Z0-9_]*', e.src_xn = "xn--[a-z0-9\\-]{1,59}", e.src_domain_root = "(?:" + e.src_xn + "|" + e.src_pseudo_letter + "{1,63})", e.src_domain = "(?:" + e.src_xn + "|(?:" + e.src_pseudo_letter + ")|(?:" + e.src_pseudo_letter + "(?:-|" + e.src_pseudo_letter + "){0,61}" + e.src_pseudo_letter + "))", e.src_host = "(?:(?:(?:(?:" + e.src_domain + ")\\.)*" + e.src_domain + "))", e.tpl_host_fuzzy = "(?:" + e.src_ip4 + "|(?:(?:(?:" + e.src_domain + ")\\.)+(?:%TLDS%)))", e.tpl_host_no_ip_fuzzy = "(?:(?:(?:" + e.src_domain + ")\\.)+(?:%TLDS%))", e.src_host_strict = e.src_host + e.src_host_terminator, e.tpl_host_fuzzy_strict = e.tpl_host_fuzzy + e.src_host_terminator, e.src_host_port_strict = e.src_host + e.src_port + e.src_host_terminator, e.tpl_host_port_fuzzy_strict = e.tpl_host_fuzzy + e.src_port + e.src_host_terminator, e.tpl_host_port_no_ip_fuzzy_strict = e.tpl_host_no_ip_fuzzy + e.src_port + e.src_host_terminator, e.tpl_host_fuzzy_test = "localhost|www\\.|\\.\\d{1,3}\\.|(?:\\.(?:%TLDS%)(?:" + e.src_ZPCc + "|>|$))", e.tpl_email_fuzzy = "(^|" + n + '|"|\\(|' + e.src_ZCc + ")(" + e.src_email_name + "@" + e.tpl_host_fuzzy_strict + ")", e.tpl_link_fuzzy = "(^|(?![.:/\\-_@])(?:[$+<=>^`||]|" + e.src_ZPCc + "))((?![$+<=>^`||])" + e.tpl_host_port_fuzzy_strict + e.src_path + ")", e.tpl_link_no_ip_fuzzy = "(^|(?![.:/\\-_@])(?:[$+<=>^`||]|" + e.src_ZPCc + "))((?![$+<=>^`||])" + e.tpl_host_port_no_ip_fuzzy_strict + e.src_path + ")", e
}), xo
}
function Ko(t) {
var e = Array.prototype.slice.call(arguments, 1);
return e.forEach(function(n) {
n && Object.keys(n).forEach(function(s) {
t[s] = n[s]
})
}), t
}
function Ua(t) {
return Object.prototype.toString.call(t)
}
function XK(t) {
return Ua(t) === "[object String]"
}
function ZK(t) {
return Ua(t) === "[object Object]"
}
function QK(t) {
return Ua(t) === "[object RegExp]"
}
function Jc(t) {
return Ua(t) === "[object Function]"
}
function eX(t) {
return t.replace(/[.?*+^$[\]\\(){}|-]/g, "\\$&")
}
var Tp = {
fuzzyLink: !0,
fuzzyEmail: !0,
fuzzyIP: !1
};
function tX(t) {
return Object.keys(t || {}).reduce(function(e, n) {
return e || Tp.hasOwnProperty(n)
}, !1)
}
var nX = {
"http:": {
validate: function(t, e, n) {
var s = t.slice(e);
return n.re.http || (n.re.http = new RegExp("^\\/\\/" + n.re.src_auth + n.re.src_host_port_strict + n.re.src_path, "i")), n.re.http.test(s) ? s.match(n.re.http)[0].length : 0
}
},
"https:": "http:",
"ftp:": "http:",
"//": {
validate: function(t, e, n) {
var s = t.slice(e);
return n.re.no_http || (n.re.no_http = new RegExp("^" + n.re.src_auth + "(?:localhost|(?:(?:" + n.re.src_domain + ")\\.)+" + n.re.src_domain_root + ")" + n.re.src_port + n.re.src_host_terminator + n.re.src_path, "i")), n.re.no_http.test(s) ? e >= 3 && t[e - 3] === ":" || e >= 3 && t[e - 3] === "/" ? 0 : s.match(n.re.no_http)[0].length : 0
}
},
"mailto:": {
validate: function(t, e, n) {
var s = t.slice(e);
return n.re.mailto || (n.re.mailto = new RegExp("^" + n.re.src_email_name + "@" + n.re.src_host_strict, "i")), n.re.mailto.test(s) ? s.match(n.re.mailto)[0].length : 0
}
}
},
sX = "a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]",
aX = "biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф".split("|");
function oX(t) {
t.__index__ = -1, t.__text_cache__ = ""
}
function rX(t) {
return function(e, n) {
var s = e.slice(n);
return t.test(s) ? s.match(t)[0].length : 0
}
}
function Yc() {
return function(t, e) {
e.normalize(t)
}
}
function pa(t) {
var e = t.re = KK()(t.__opts__),
n = t.__tlds__.slice();
t.onCompile(), t.__tlds_replaced__ || n.push(sX), n.push(e.src_xn), e.src_tlds = n.join("|");
function s(i) {
return i.replace("%TLDS%", e.src_tlds)
}
e.email_fuzzy = RegExp(s(e.tpl_email_fuzzy), "i"), e.link_fuzzy = RegExp(s(e.tpl_link_fuzzy), "i"), e.link_no_ip_fuzzy = RegExp(s(e.tpl_link_no_ip_fuzzy), "i"), e.host_fuzzy_test = RegExp(s(e.tpl_host_fuzzy_test), "i");
var a = [];
t.__compiled__ = {};
function o(i, c) {
throw new Error('(LinkifyIt) Invalid schema "' + i + '": ' + c)
}
Object.keys(t.__schemas__).forEach(function(i) {
var c = t.__schemas__[i];
if (c !== null) {
var l = {
validate: null,
link: null
};
if (t.__compiled__[i] = l, ZK(c)) {
QK(c.validate) ? l.validate = rX(c.validate) : Jc(c.validate) ? l.validate = c.validate : o(i, c), Jc(c.normalize) ? l.normalize = c.normalize : c.normalize ? o(i, c) : l.normalize = Yc();
return
}
if (XK(c)) {
a.push(i);
return
}
o(i, c)
}
}), a.forEach(function(i) {
t.__compiled__[t.__schemas__[i]] && (t.__compiled__[i].validate = t.__compiled__[t.__schemas__[i]].validate, t.__compiled__[i].normalize = t.__compiled__[t.__schemas__[i]].normalize)
}), t.__compiled__[""] = {
validate: null,
normalize: Yc()
};
var r = Object.keys(t.__compiled__).filter(function(i) {
return i.length > 0 && t.__compiled__[i]
}).map(eX).join("|");
t.re.schema_test = RegExp("(^|(?!_)(?:[><|]|" + e.src_ZPCc + "))(" + r + ")", "i"), t.re.schema_search = RegExp("(^|(?!_)(?:[><|]|" + e.src_ZPCc + "))(" + r + ")", "ig"), t.re.schema_at_start = RegExp("^" + t.re.schema_search.source, "i"), t.re.pretest = RegExp("(" + t.re.schema_test.source + ")|(" + t.re.host_fuzzy_test.source + ")|@", "i"), oX(t)
}
function iX(t, e) {
var n = t.__index__,
s = t.__last_index__,
a = t.__text_cache__.slice(n, s);
this.schema = t.__schema__.toLowerCase(), this.index = n + e, this.lastIndex = s + e, this.raw = a, this.text = a, this.url = a
}
function Xo(t, e) {
var n = new iX(t, e);
return t.__compiled__[n.schema].normalize(n, t), n
}
function Ke(t, e) {
if (!(this instanceof Ke)) return new Ke(t, e);
e || tX(t) && (e = t, t = {}), this.__opts__ = Ko({}, Tp, e), this.__index__ = -1, this.__last_index__ = -1, this.__schema__ = "", this.__text_cache__ = "", this.__schemas__ = Ko({}, nX, t), this.__compiled__ = {}, this.__tlds__ = aX, this.__tlds_replaced__ = !1, this.re = {}, pa(this)
}
Ke.prototype.add = function(e, n) {
return this.__schemas__[e] = n, pa(this), this
};
Ke.prototype.set = function(e) {
return this.__opts__ = Ko(this.__opts__, e), this
};
Ke.prototype.test = function(e) {
if (this.__text_cache__ = e, this.__index__ = -1, !e.length) return !1;
var n, s, a, o, r, i, c, l, u;
if (this.re.schema_test.test(e)) {
for (c = this.re.schema_search, c.lastIndex = 0;
(n = c.exec(e)) !== null;)
if (o = this.testSchemaAt(e, n[2], c.lastIndex), o) {
this.__schema__ = n[2], this.__index__ = n.index + n[1].length, this.__last_index__ = n.index + n[0].length + o;
break
}
}
return this.__opts__.fuzzyLink && this.__compiled__["http:"] && (l = e.search(this.re.host_fuzzy_test), l >= 0 && (this.__index__ < 0 || l < this.__index__) && (s = e.match(this.__opts__.fuzzyIP ? this.re.link_fuzzy : this.re.link_no_ip_fuzzy)) !== null && (r = s.index + s[1].length, (this.__index__ < 0 || r < this.__index__) && (this.__schema__ = "", this.__index__ = r, this.__last_index__ = s.index + s[0].length))), this.__opts__.fuzzyEmail && this.__compiled__["mailto:"] && (u = e.indexOf("@"), u >= 0 && (a = e.match(this.re.email_fuzzy)) !== null && (r = a.index + a[1].length, i = a.index + a[0].length, (this.__index__ < 0 || r < this.__index__ || r === this.__index__ && i > this.__last_index__) && (this.__schema__ = "mailto:", this.__index__ = r, this.__last_index__ = i))), this.__index__ >= 0
};
Ke.prototype.pretest = function(e) {
return this.re.pretest.test(e)
};
Ke.prototype.testSchemaAt = function(e, n, s) {
return this.__compiled__[n.toLowerCase()] ? this.__compiled__[n.toLowerCase()].validate(e, s, this) : 0
};
Ke.prototype.match = function(e) {
var n = 0,
s = [];
this.__index__ >= 0 && this.__text_cache__ === e && (s.push(Xo(this, n)), n = this.__last_index__);
for (var a = n ? e.slice(n) : e; this.test(a);) s.push(Xo(this, n)), a = a.slice(this.__last_index__), n += this.__last_index__;
return s.length ? s : null
};
Ke.prototype.matchAtStart = function(e) {
if (this.__text_cache__ = e, this.__index__ = -1, !e.length) return null;
var n = this.re.schema_at_start.exec(e);
if (!n) return null;
var s = this.testSchemaAt(e, n[2], n[0].length);
return s ? (this.__schema__ = n[2], this.__index__ = n.index + n[1].length, this.__last_index__ = n.index + n[0].length + s, Xo(this, 0)) : null
};
Ke.prototype.tlds = function(e, n) {
return e = Array.isArray(e) ? e : [e], n ? (this.__tlds__ = this.__tlds__.concat(e).sort().filter(function(s, a, o) {
return s !== o[a - 1]
}).reverse(), pa(this), this) : (this.__tlds__ = e.slice(), this.__tlds_replaced__ = !0, pa(this), this)
};
Ke.prototype.normalize = function(e) {
e.schema || (e.url = "http://" + e.url), e.schema === "mailto:" && !/^mailto:/i.test(e.url) && (e.url = "mailto:" + e.url)
};
Ke.prototype.onCompile = function() {};
var cX = Ke;
const yn = 2147483647,
vt = 36,
Ur = 1,
us = 26,
lX = 38,
uX = 700,
Dp = 72,
Ip = 128,
Np = "-",
pX = /^xn--/,
dX = /[^\0-\x7F]/,
mX = /[\x2E\u3002\uFF0E\uFF61]/g,
fX = {
overflow: "Overflow: input needs wider integers to process",
"not-basic": "Illegal input >= 0x80 (not a basic code point)",
"invalid-input": "Invalid input"
},
yo = vt - Ur,
xt = Math.floor,
wo = String.fromCharCode;
function zt(t) {
throw new RangeError(fX[t])
}
function hX(t, e) {
const n = [];
let s = t.length;
for (; s--;) n[s] = e(t[s]);
return n
}
function Mp(t, e) {
const n = t.split("@");
let s = "";
n.length > 1 && (s = n[0] + "@", t = n[1]), t = t.replace(mX, ".");
const a = t.split("."),
o = hX(a, e).join(".");
return s + o
}
function Vr(t) {
const e = [];
let n = 0;
const s = t.length;
for (; n < s;) {
const a = t.charCodeAt(n++);
if (a >= 55296 && a <= 56319 && n < s) {
const o = t.charCodeAt(n++);
(o & 64512) == 56320 ? e.push(((a & 1023) << 10) + (o & 1023) + 65536) : (e.push(a), n--)
} else e.push(a)
}
return e
}
const Op = t => String.fromCodePoint(...t),
gX = function(t) {
return t >= 48 && t < 58 ? 26 + (t - 48) : t >= 65 && t < 91 ? t - 65 : t >= 97 && t < 123 ? t - 97 : vt
},
Kc = function(t, e) {
return t + 22 + 75 * (t < 26) - ((e != 0) << 5)
},
Lp = function(t, e, n) {
let s = 0;
for (t = n ? xt(t / uX) : t >> 1, t += xt(t / e); t > yo * us >> 1; s += vt) t = xt(t / yo);
return xt(s + (yo + 1) * t / (t + lX))
},
Hr = function(t) {
const e = [],
n = t.length;
let s = 0,
a = Ip,
o = Dp,
r = t.lastIndexOf(Np);
r < 0 && (r = 0);
for (let i = 0; i < r; ++i) t.charCodeAt(i) >= 128 && zt("not-basic"), e.push(t.charCodeAt(i));
for (let i = r > 0 ? r + 1 : 0; i < n;) {
const c = s;
for (let u = 1, d = vt;; d += vt) {
i >= n && zt("invalid-input");
const m = gX(t.charCodeAt(i++));
m >= vt && zt("invalid-input"), m > xt((yn - s) / u) && zt("overflow"), s += m * u;
const f = d <= o ? Ur : d >= o + us ? us : d - o;
if (m < f) break;
const h = vt - f;
u > xt(yn / h) && zt("overflow"), u *= h
}
const l = e.length + 1;
o = Lp(s - c, l, c == 0), xt(s / l) > yn - a && zt("overflow"), a += xt(s / l), s %= l, e.splice(s++, 0, a)
}
return String.fromCodePoint(...e)
},
Gr = function(t) {
const e = [];
t = Vr(t);
const n = t.length;
let s = Ip,
a = 0,
o = Dp;
for (const c of t) c < 128 && e.push(wo(c));
const r = e.length;
let i = r;
for (r && e.push(Np); i < n;) {
let c = yn;
for (const u of t) u >= s && u < c && (c = u);
const l = i + 1;
c - s > xt((yn - a) / l) && zt("overflow"), a += (c - s) * l, s = c;
for (const u of t)
if (u < s && ++a > yn && zt("overflow"), u === s) {
let d = a;
for (let m = vt;; m += vt) {
const f = m <= o ? Ur : m >= o + us ? us : m - o;
if (d < f) break;
const h = d - f,
g = vt - f;
e.push(wo(Kc(f + h % g, 0))), d = xt(h / g)
}
e.push(wo(Kc(d, 0))), o = Lp(a, l, i === r), a = 0, ++i
}++a, ++s
}
return e.join("")
},
Rp = function(t) {
return Mp(t, function(e) {
return pX.test(e) ? Hr(e.slice(4).toLowerCase()) : e
})
},
Pp = function(t) {
return Mp(t, function(e) {
return dX.test(e) ? "xn--" + Gr(e) : e
})
},
bX = {
version: "2.3.1",
ucs2: {
decode: Vr,
encode: Op
},
decode: Hr,
encode: Gr,
toASCII: Pp,
toUnicode: Rp
},
vX = Object.freeze(Object.defineProperty({
__proto__: null,
decode: Hr,
default: bX,
encode: Gr,
toASCII: Pp,
toUnicode: Rp,
ucs2decode: Vr,
ucs2encode: Op
}, Symbol.toStringTag, {
value: "Module"
})),
xX = Cf(vX);
var yX = {
options: {
html: !1,
xhtmlOut: !1,
breaks: !1,
langPrefix: "language-",
linkify: !1,
typographer: !1,
quotes: "“”‘’",
highlight: null,
maxNesting: 100
},
components: {
core: {},
block: {},
inline: {}
}
},
wX = {
options: {
html: !1,
xhtmlOut: !1,
breaks: !1,
langPrefix: "language-",
linkify: !1,
typographer: !1,
quotes: "“”‘’",
highlight: null,
maxNesting: 20
},
components: {
core: {
rules: ["normalize", "block", "inline", "text_join"]
},
block: {
rules: ["paragraph"]
},
inline: {
rules: ["text"],
rules2: ["balance_pairs", "fragments_join"]
}
}
},
kX = {
options: {
html: !0,
xhtmlOut: !0,
breaks: !1,
langPrefix: "language-",
linkify: !1,
typographer: !1,
quotes: "“”‘’",
highlight: null,
maxNesting: 20
},
components: {
core: {
rules: ["normalize", "block", "inline", "text_join"]
},
block: {
rules: ["blockquote", "code", "fence", "heading", "hr", "html_block", "lheading", "list", "reference", "paragraph"]
},
inline: {
rules: ["autolink", "backticks", "emphasis", "entity", "escape", "html_inline", "image", "link", "newline", "text"],
rules2: ["balance_pairs", "emphasis", "fragments_join"]
}
}
},
ts = oe,
_X = Ba,
CX = bY,
EX = jY,
AX = xK,
SX = YK,
TX = cX,
Yt = Ln,
Bp = xX,
DX = {
default: yX,
zero: wX,
commonmark: kX
},
IX = /^(vbscript|javascript|file|data):/,
NX = /^data:image\/(gif|png|jpeg|webp);/;
function MX(t) {
var e = t.trim().toLowerCase();
return IX.test(e) ? !!NX.test(e) : !0
}
var zp = ["http:", "https:", "mailto:"];
function OX(t) {
var e = Yt.parse(t, !0);
if (e.hostname && (!e.protocol || zp.indexOf(e.protocol) >= 0)) try {
e.hostname = Bp.toASCII(e.hostname)
} catch (n) {}
return Yt.encode(Yt.format(e))
}
function LX(t) {
var e = Yt.parse(t, !0);
if (e.hostname && (!e.protocol || zp.indexOf(e.protocol) >= 0)) try {
e.hostname = Bp.toUnicode(e.hostname)
} catch (n) {}
return Yt.decode(Yt.format(e), Yt.decode.defaultChars + "%")
}
function et(t, e) {
if (!(this instanceof et)) return new et(t, e);
e || ts.isString(t) || (e = t || {}, t = "default"), this.inline = new SX, this.block = new AX, this.core = new EX, this.renderer = new CX, this.linkify = new TX, this.validateLink = MX, this.normalizeLink = OX, this.normalizeLinkText = LX, this.utils = ts, this.helpers = ts.assign({}, _X), this.options = {}, this.configure(t), e && this.set(e)
}
et.prototype.set = function(t) {
return ts.assign(this.options, t), this
};
et.prototype.configure = function(t) {
var e = this,
n;
if (ts.isString(t) && (n = t, t = DX[n], !t)) throw new Error('Wrong `markdown-it` preset "' + n + '", check name');
if (!t) throw new Error("Wrong `markdown-it` preset, can't be empty");
return t.options && e.set(t.options), t.components && Object.keys(t.components).forEach(function(s) {
t.components[s].rules && e[s].ruler.enableOnly(t.components[s].rules), t.components[s].rules2 && e[s].ruler2.enableOnly(t.components[s].rules2)
}), this
};
et.prototype.enable = function(t, e) {
var n = [];
Array.isArray(t) || (t = [t]), ["core", "block", "inline"].forEach(function(a) {
n = n.concat(this[a].ruler.enable(t, !0))
}, this), n = n.concat(this.inline.ruler2.enable(t, !0));
var s = t.filter(function(a) {
return n.indexOf(a) < 0
});
if (s.length && !e) throw new Error("MarkdownIt. Failed to enable unknown rule(s): " + s);
return this
};
et.prototype.disable = function(t, e) {
var n = [];
Array.isArray(t) || (t = [t]), ["core", "block", "inline"].forEach(function(a) {
n = n.concat(this[a].ruler.disable(t, !0))
}, this), n = n.concat(this.inline.ruler2.disable(t, !0));
var s = t.filter(function(a) {
return n.indexOf(a) < 0
});
if (s.length && !e) throw new Error("MarkdownIt. Failed to disable unknown rule(s): " + s);
return this
};
et.prototype.use = function(t) {
var e = [this].concat(Array.prototype.slice.call(arguments, 1));
return t.apply(t, e), this
};
et.prototype.parse = function(t, e) {
if (typeof t != "string") throw new Error("Input data should be a String");
var n = new this.core.State(t, this, e);
return this.core.process(n), n.tokens
};
et.prototype.render = function(t, e) {
return e = e || {}, this.renderer.render(this.parse(t, e), this.options, e)
};
et.prototype.parseInline = function(t, e) {
var n = new this.core.State(t, this, e);
return n.inlineMode = !0, this.core.process(n), n.tokens
};
et.prototype.renderInline = function(t, e) {
return e = e || {}, this.renderer.render(this.parseInline(t, e), this.options, e)
};
var RX = et,
PX = RX;
const BX = lr(PX),
Wr = new gr({
nodes: {
doc: {
content: "block+"
},
paragraph: {
content: "inline*",
group: "block",
parseDOM: [{
tag: "p"
}],
toDOM() {
return ["p", 0]
}
},
blockquote: {
content: "block+",
group: "block",
parseDOM: [{
tag: "blockquote"
}],
toDOM() {
return ["blockquote", 0]
}
},
horizontal_rule: {
group: "block",
parseDOM: [{
tag: "hr"
}],
toDOM() {
return ["div", ["hr"]]
}
},
heading: {
attrs: {
level: {
default: 1
}
},
content: "(text | image)*",
group: "block",
defining: !0,
parseDOM: [{
tag: "h1",
attrs: {
level: 1
}
}, {
tag: "h2",
attrs: {
level: 2
}
}, {
tag: "h3",
attrs: {
level: 3
}
}, {
tag: "h4",
attrs: {
level: 4
}
}, {
tag: "h5",
attrs: {
level: 5
}
}, {
tag: "h6",
attrs: {
level: 6
}
}],
toDOM(t) {
return ["h" + t.attrs.level, 0]
}
},
code_block: {
content: "text*",
group: "block",
code: !0,
defining: !0,
marks: "",
attrs: {
params: {
default: ""
}
},
parseDOM: [{
tag: "pre",
preserveWhitespace: "full",
getAttrs: t => ({
params: t.getAttribute("data-params") || ""
})
}],
toDOM(t) {
return ["pre", t.attrs.params ? {
"data-params": t.attrs.params
} : {},
["code", 0]
]
}
},
ordered_list: {
content: "list_item+",
group: "block",
attrs: {
order: {
default: 1
},
tight: {
default: !1
}
},
parseDOM: [{
tag: "ol",
getAttrs(t) {
return {
order: t.hasAttribute("start") ? +t.getAttribute("start") : 1,
tight: t.hasAttribute("data-tight")
}
}
}],
toDOM(t) {
return ["ol", {
start: t.attrs.order == 1 ? null : t.attrs.order,
"data-tight": t.attrs.tight ? "true" : null
}, 0]
}
},
bullet_list: {
content: "list_item+",
group: "block",
attrs: {
tight: {
default: !1
}
},
parseDOM: [{
tag: "ul",
getAttrs: t => ({
tight: t.hasAttribute("data-tight")
})
}],
toDOM(t) {
return ["ul", {
"data-tight": t.attrs.tight ? "true" : null
}, 0]
}
},
list_item: {
content: "paragraph block*",
defining: !0,
parseDOM: [{
tag: "li"
}],
toDOM() {
return ["li", 0]
}
},
text: {
group: "inline"
},
image: {
inline: !0,
attrs: {
src: {},
alt: {
default: null
},
title: {
default: null
}
},
group: "inline",
draggable: !0,
parseDOM: [{
tag: "img[src]",
getAttrs(t) {
return {
src: t.getAttribute("src"),
title: t.getAttribute("title"),
alt: t.getAttribute("alt")
}
}
}],
toDOM(t) {
return ["img", t.attrs]
}
},
hard_break: {
inline: !0,
group: "inline",
selectable: !1,
parseDOM: [{
tag: "br"
}],
toDOM() {
return ["br"]
}
}
},
marks: {
em: {
parseDOM: [{
tag: "i"
}, {
tag: "em"
}, {
style: "font-style",
getAttrs: t => t == "italic" && null
}],
toDOM() {
return ["em"]
}
},
strong: {
parseDOM: [{
tag: "b"
}, {
tag: "strong"
}, {
style: "font-weight",
getAttrs: t => /^(bold(er)?|[5-9]\d{2,})$/.test(t) && null
}],
toDOM() {
return ["strong"]
}
},
link: {
attrs: {
href: {},
title: {
default: null
}
},
inclusive: !1,
parseDOM: [{
tag: "a[href]",
getAttrs(t) {
return {
href: t.getAttribute("href"),
title: t.getAttribute("title")
}
}
}],
toDOM(t) {
return ["a", t.attrs]
}
},
code: {
parseDOM: [{
tag: "code"
}],
toDOM() {
return ["code"]
}
}
}
});
function zX(t, e) {
if (t.isText && e.isText && qo.sameSet(t.marks, e.marks)) return t.withText(t.text + e.text)
}
class qX {
constructor(e, n) {
this.schema = e, this.tokenHandlers = n, this.stack = [{
type: e.topNodeType,
attrs: null,
content: [],
marks: qo.none
}]
}
top() {
return this.stack[this.stack.length - 1]
}
push(e) {
this.stack.length && this.top().content.push(e)
}
addText(e) {
if (!e) return;
let n = this.top(),
s = n.content,
a = s[s.length - 1],
o = this.schema.text(e, n.marks),
r;
a && (r = zX(a, o)) ? s[s.length - 1] = r : s.push(o)
}
openMark(e) {
let n = this.top();
n.marks = e.addToSet(n.marks)
}
closeMark(e) {
let n = this.top();
n.marks = e.removeFromSet(n.marks)
}
parseTokens(e) {
for (let n = 0; n < e.length; n++) {
let s = e[n],
a = this.tokenHandlers[s.type];
if (!a) throw new Error("Token type `" + s.type + "` not supported by Markdown parser");
a(this, s, e, n)
}
}
addNode(e, n, s) {
let a = this.top(),
o = e.createAndFill(n, s, a ? a.marks : []);
return o ? (this.push(o), o) : null
}
openNode(e, n) {
this.stack.push({
type: e,
attrs: n,
content: [],
marks: qo.none
})
}
closeNode() {
let e = this.stack.pop();
return this.addNode(e.type, e.attrs, e.content)
}
}
function Vn(t, e, n, s) {
return t.getAttrs ? t.getAttrs(e, n, s) : t.attrs instanceof Function ? t.attrs(e) : t.attrs
}
function ko(t, e) {
return t.noCloseToken || e == "code_inline" || e == "code_block" || e == "fence"
}
function Xc(t) {
return t[t.length - 1] == `
` ? t.slice(0, t.length - 1) : t
}
function _o() {}
function FX(t, e) {
let n = Object.create(null);
for (let s in e) {
let a = e[s];
if (a.block) {
let o = t.nodeType(a.block);
ko(a, s) ? n[s] = (r, i, c, l) => {
r.openNode(o, Vn(a, i, c, l)), r.addText(Xc(i.content)), r.closeNode()
} : (n[s + "_open"] = (r, i, c, l) => r.openNode(o, Vn(a, i, c, l)), n[s + "_close"] = r => r.closeNode())
} else if (a.node) {
let o = t.nodeType(a.node);
n[s] = (r, i, c, l) => r.addNode(o, Vn(a, i, c, l))
} else if (a.mark) {
let o = t.marks[a.mark];
ko(a, s) ? n[s] = (r, i, c, l) => {
r.openMark(o.create(Vn(a, i, c, l))), r.addText(Xc(i.content)), r.closeMark(o)
} : (n[s + "_open"] = (r, i, c, l) => r.openMark(o.create(Vn(a, i, c, l))), n[s + "_close"] = r => r.closeMark(o))
} else if (a.ignore) ko(a, s) ? n[s] = _o : (n[s + "_open"] = _o, n[s + "_close"] = _o);
else throw new RangeError("Unrecognized parsing spec " + JSON.stringify(a))
}
return n.text = (s, a) => s.addText(a.content), n.inline = (s, a) => s.parseTokens(a.children), n.softbreak = n.softbreak || (s => s.addText(`
`)), n
}
class jX {
constructor(e, n, s) {
this.schema = e, this.tokenizer = n, this.tokens = s, this.tokenHandlers = FX(e, s)
}
parse(e, n = {}) {
let s = new qX(this.schema, this.tokenHandlers),
a;
s.parseTokens(this.tokenizer.parse(e, n));
do a = s.closeNode(); while (s.stack.length);
return a || this.schema.topNodeType.createAndFill()
}
}
function Zc(t, e) {
for (; ++e < t.length;)
if (t[e].type != "list_item_open") return t[e].hidden;
return !1
}
const $X = new jX(Wr, BX("commonmark", {
html: !1
}), {
blockquote: {
block: "blockquote"
},
paragraph: {
block: "paragraph"
},
list_item: {
block: "list_item"
},
bullet_list: {
block: "bullet_list",
getAttrs: (t, e, n) => ({
tight: Zc(e, n)
})
},
ordered_list: {
block: "ordered_list",
getAttrs: (t, e, n) => ({
order: +t.attrGet("start") || 1,
tight: Zc(e, n)
})
},
heading: {
block: "heading",
getAttrs: t => ({
level: +t.tag.slice(1)
})
},
code_block: {
block: "code_block",
noCloseToken: !0
},
fence: {
block: "code_block",
getAttrs: t => ({
params: t.info || ""
}),
noCloseToken: !0
},
hr: {
node: "horizontal_rule"
},
image: {
node: "image",
getAttrs: t => ({
src: t.attrGet("src"),
title: t.attrGet("title") || null,
alt: t.children[0] && t.children[0].content || null
})
},
hardbreak: {
node: "hard_break"
},
em: {
mark: "em"
},
strong: {
mark: "strong"
},
link: {
mark: "link",
getAttrs: t => ({
href: t.attrGet("href"),
title: t.attrGet("title") || null
})
},
code_inline: {
mark: "code",
noCloseToken: !0
}
}),
qp = ({
node: t
}) => {
const e = t.attrs,
{
iTemplate: n
} = ue();
return p(wt, {
className: "directMessage",
"data-drag-handle": ""
}, p(bu, null, p(Y, {
alignItems: "center",
justifyContent: "center",
flex: "grow",
style: {
marginBottom: "20px"
}
}, p(ta, {
priority: "primary",
leading: p(Rg, {
size: 20
})
}, n `Message ${e.userName}`))))
},
Fp = ({
attrs: t
}) => {
const e = {};
for (const [n, s] of Object.entries(t)) e[n] = na(s, ["default"]);
return e
},
UX = "_blockContainer_19kps_1",
VX = "_blockTitleContainer_19kps_13",
HX = "_blockTitle_19kps_13",
GX = "_blockSubTitle_19kps_34",
WX = "_inlineContainer_19kps_48",
JX = "_inlineText_19kps_58",
gn = {
blockContainer: UX,
blockTitleContainer: VX,
blockTitle: HX,
blockSubTitle: GX,
inlineContainer: WX,
inlineText: JX
};
function Oe({
msg: t,
node: e,
err: n,
group: s
}) {
se(ae.EDITOR_NODE_RENDER_FAILED, {
nodeType: e.type.name,
nodeAttrs: e.attrs,
errMsg: n == null ? void 0 : n.message
});
const a = t != null ? t : "Something went wrong";
return s === "block" ? YX({
msg: a
}) : KX({
msg: a
})
}
function jp({
size: t
}) {
const e = "http://www.w3.org/2000/svg",
n = document.createElementNS(e, "svg");
n.setAttribute("width", `${t}`), n.setAttribute("height", `${t}`), n.setAttribute("viewBox", "0 0 24 24"), n.setAttribute("fill", "none"), n.setAttribute("stroke", "#363737"), n.setAttribute("stroke-width", "2"), n.setAttribute("stroke-linecap", "round"), n.setAttribute("stroke-linejoin", "round");
const s = document.createElementNS(e, "circle");
s.setAttribute("d", "M12 8V12M12 16H12.01M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z"), s.setAttribute("cx", "12"), s.setAttribute("cy", "12"), s.setAttribute("r", "10");
const a = document.createElementNS(e, "line");
a.setAttribute("x1", "12"), a.setAttribute("x2", "12"), a.setAttribute("y1", "8"), a.setAttribute("y2", "12");
const o = document.createElementNS(e, "line");
return o.setAttribute("x1", "12"), o.setAttribute("x2", "12.01"), o.setAttribute("y1", "16"), o.setAttribute("y2", "16"), n.appendChild(s), n.appendChild(a), n.appendChild(o), n
}
function YX({
msg: t
}) {
const e = document.createElement("div");
e.className = gn.blockContainer;
const n = document.createElement("div");
n.textContent = t, n.className = gn.blockTitle;
const s = document.createElement("div");
s.textContent = "Try refreshing the page or try again later.", s.className = gn.blockSubTitle;
const a = document.createElement("div");
return a.className = gn.blockTitleContainer, a.appendChild(n), a.appendChild(s), e.appendChild(jp({
size: 24
})), e.appendChild(a), e
}
function KX({
msg: t
}) {
const e = document.createElement("span");
e.className = gn.inlineContainer;
const n = document.createElement("span");
return n.className = gn.inlineText, n.textContent = t, e.appendChild(jp({
size: 10
})), e.appendChild(n), e
}
var XX = ig;
function ZX(t, e) {
for (var n = t.length; n-- && XX(e, t[n], 0) > -1;);
return n
}
var QX = ZX,
eZ = Ef,
tZ = Af,
nZ = QX,
Qc = Sf,
sZ = Tf,
aZ = cg;
function oZ(t, e, n) {
if (t = sZ(t), t && (n || e === void 0)) return t.slice(0, aZ(t) + 1);
if (!t || !(e = eZ(e))) return t;
var s = Qc(t),
a = nZ(s, Qc(e)) + 1;
return tZ(s, 0, a).join("")
}
var rZ = oZ;
const iZ = lr(rZ),
$p = [
["list_item", "listItem"],
["bullet_list", "bulletList"],
["ordered_list", "orderedList"],
["hard_break", "hardBreak"],
["horizontal_rule", "horizontalRule"],
["code_block", "codeBlock"]
],
Up = [
["em", "italic"],
["strong", "bold"],
["strikethrough", "strike"]
],
el = {
image2: 1,
image: 0,
horizontal_rule: 0,
youtube: 0,
youtube2: 0,
vimeo: 0,
opensea: 0,
twitter: 0,
twitter2: 0,
spotify: 0,
spotify2: 0,
soundcloud: 0,
bandcamp: 0,
kindle: 0,
tiktok: 0,
prediction_market: 0,
lichess: 0,
datawrapper: 0,
recipe: 0
},
cZ = 100,
lZ = (t, {
maxLength: e = 356,
getAfterCutoff: n = !1,
withEllipsis: s = !1
} = {}) => {
let a = "",
o = !1;
const r = {},
i = Zp(t);
let c = !1;
const l = Tn(t, u => {
var f;
if (o) return n;
if (u.type === "paywall") return o = !0, !1;
if (i) return !0;
const d = (f = u.type) != null ? f : "undefined";
if (r[d] = (r[d] || 0) + 1, u.type && u.type in el && r[d] > el[u.type]) return o = !0, n;
const m = e - a.length;
if (m <= 0 && !i) return n;
if (m > 0) {
if (n) {
if (u.type === "text" && u.text)
if (a += u.text, e - a.length <= 0) u.text = u.text.substring(u.text.length + e - a.length - 1, u.text.length);
else return !1
} else if (u.type === "text" && u.text) {
a += u.text;
const h = u.text;
u.text = it(h, m), c = h !== u.text
}
} else return n;
return !0
});
if (l && s && !c) {
const u = uZ(l);
let d = null,
m = null;
for (let g = u.length - 1; g >= 0 && !(d && m); g--) {
const b = u[g];
d === null && b.type === "text" && (d = g), m === null && b.type !== "text" && b.type !== "paragraph" && (m = g)
}
const f = d !== null ? u[d] : null,
h = f && m !== null && d !== null && m > d;
f && !h && (f.text = hZ(f.text))
}
return l
};
function Tn(t, e) {
if (!t || (Vo(t) || Hi(t)) && !e(t)) return null;
if (Vo(t) && t.content && t.content.length > 0) {
const n = e;
if (t.content = t.content.filter(s => Tn(s, n)), t.content.length === 0) return null
} else if (Hi(t)) {
const n = mt({
fragment: t.content
}),
s = e;
if (n.length > 0) {
const a = n.filter(o => Tn(o, s));
if (a.length === 0) return null;
lg({
fragment: t.content,
content: a
})
}
}
return t
}
function uZ(t) {
var s;
const e = [],
n = [t];
for (; n.length;) {
const a = n.pop();
if (!a) break;
if (a.content && ((s = a.content) == null ? void 0 : s.length) > 0)
for (let o = a.content.length - 1; o >= 0; o--) n.push(a.content[o]);
else e.push(a)
}
return e
}
const Vp = (t, e) => {
let n = [];
if (t && (e(t) && n.push(t), t.content))
for (const s of t.content) n = n.concat(Vp(s, e));
return n
},
Bn = (t, e) => {
if (t) {
if (e(t)) return t;
if (t.content)
for (const n of t.content) {
const s = Bn(n, e);
if (s) return s
}
}
return null
},
pZ = t => {
const e = [];
return t.nodesBetween(0, t.content.size, n => {
var s;
((s = n.type) == null ? void 0 : s.name) === "cashtag" && e.push(n.attrs.symbol)
}, 0), e
},
dZ = new Set(["caption", "footnote", "captionedImage", "image", "image2"]),
mZ = new Set(["bullet_list", "bulletList", "ordered_list", "orderedList", "blockquote"]),
Zo = "x_li_start_placeholder_x",
tl = (t, e) => {
var n, s, a, o;
if (((n = t.type) == null ? void 0 : n.name) === "list_item" || ((s = t.type) == null ? void 0 : s.name) === "listItem") return {
open: Zo,
close: ""
};
if (((a = t.type) == null ? void 0 : a.name) === "paragraph" || t.isBlock && t.textContent.length > 0 && !mZ.has((o = t.type) == null ? void 0 : o.name)) {
let r = "<p>";
return (e.length > 0 ? e[e.length - 1] : null) === Zo && (e.pop(), r += "* "), {
open: r,
close: "</p>"
}
}
return null
},
Hp = ({
node: t,
recursiveDepth: e,
tokens: n
}) => {
var a, o;
if (e > cZ) return console.warn("Reached max recursive depth while converting document to HTML for podcast"), !1;
let s = !0;
if (dZ.has((a = t.type) == null ? void 0 : a.name)) s = !1;
else if (t.isText) {
if (t.text && t.text.length > 0) {
const r = t.marks.filter(u => u.type.name === "link" && u.attrs.href)[0],
i = t.marks.filter(u => u.type.name === "em")[0],
c = t.marks.filter(u => u.type.name === "strong")[0],
l = t.text;
i ? n.push(`<em>${l}</em>`) : c ? n.push(`<strong>${l}</strong>`) : r ? n.push(`<a target="_blank" href="${Uo(r.attrs.href)}">${l}</a>`) : n.push(l)
}
} else if (tl(t, [])) {
const r = tl(t, n);
r && n.push(r.open), t.descendants(i => Hp({
node: i,
recursiveDepth: e + 1,
tokens: n
})), r && n.push(r.close), s = !1
} else((o = t.type) == null ? void 0 : o.name) === "cashtag" && n.push(`${t.attrs.symbol} `);
return s
},
fZ = t => {
const e = [];
return t.descendants(n => Hp({
node: n,
recursiveDepth: 1,
tokens: e
})), e.filter(n => n !== Zo).join("").trim()
},
Gp = (t, {
withLinks: e = !0,
withCaptionsAndFootnotes: n = !1,
forPodcast: s = !1,
truncateAt: a = null,
truncateTo: o = a,
truncateEllipsis: r = "…",
truncateExtension: i = null
} = {}) => {
let c = "",
l = "",
u = "",
d = !0;
return t.nodesBetween(0, t.content.size, m => {
var f, h, g, b;
if (!n && ["caption", "footnote"].includes((f = m.type) == null ? void 0 : f.name)) return !1;
if (m.isText) {
if (m.text && m.text.length > 0) {
d = !1;
let x;
!Ue(o) && c.length < o && c.length + m.text.length >= o && (x = it(m.text, o - c.length, {
ellipsis: r,
extension: i
}));
const v = m.marks.filter(k => k.type.name === "link" && k.attrs.href)[0],
w = m.marks.filter(k => k.type.name === "em")[0],
E = m.marks.filter(k => k.type.name === "strong")[0];
let _ = m.text;
c += _, w && s && (x && (x = `<em>${x}</em>`), _ = `<em>${_}</em>`), E && s && (x && (x = `<strong>${x}</strong>`), _ = `<strong>${_}</strong>`), !v || !e ? (x && (u = l + x), l += _) : s ? (x && (u = `${l}<a target="_blank" href="${Uo(v.attrs.href)}">${x}</a>`), l += `<a target="_blank" href="${Uo(v.attrs.href)}">${_}</a>`) : (x && (u = `${l}${x} [ ${v.attrs.href} ]`), l += `${_} [ ${v.attrs.href} ]`)
}
} else !d && ["hard_break", "hardBreak"].includes((h = m.type) == null ? void 0 : h.name) ? (d = !0, c += `
`, s ? l += "<br/>" : l += `
`) : !d && m.isBlock ? (d = !0, c += `
`, s ? l += "<br/><br/>" : l += `
`) : ((g = m.type) == null ? void 0 : g.name) === "cashtag" ? l += `${m.attrs.symbol} ` : ((b = m.type) == null ? void 0 : b.name) === "substack_mentions" && (l += `${m.attrs.name} `)
}, 0), !Ue(a) && c.length > a && u && (l = u), l = l.trim(), s && (l = l.replace(/\s*(<br\/>)+$/, "").trim()), l
},
hZ = t => `${iZ(t,".")}...`,
gZ = (t, e) => P(S({
name: t
}, e), {
addAttributes() {
return e.attrs || {}
},
parseHTML() {
return e.parseDOM
},
renderHTML({
node: n
}) {
return e.toDOM ? e.toDOM(n) : (console.warn("trying to create TipTapNode, no toDOM found for node", t), ["span"])
}
}),
bZ = (t, e) => {
let n, s, a;
if (t.doc.nodesBetween(t.selection.from, t.selection.to, (o, r) => {
if (n || s) return !1;
const i = o.marks.find(c => c.type === e);
i && (n = o, s = i, a = {
from: r,
to: r + o.nodeSize
})
}), !!n) return {
node: n,
mark: s,
pos: a
}
},
Qo = (t, e) => {
var o, r;
let n, s, a;
if (t.doc.nodesBetween(t.selection.from, t.selection.to, (i, c) => {
if (n || s) return !1;
if (c <= t.selection.from && t.selection.to <= c + i.nodeSize) {
const l = i.marks.find(u => u.type === e);
l && (n = i, s = l, a = {
from: c,
to: c + i.nodeSize
})
} else return !1
}), !n) {
if (t.selection.empty) {
const i = t.doc.resolve(t.selection.from),
c = i.nodeBefore && i.nodeBefore.marks.find(u => u.type === e),
l = i.nodeAfter && i.nodeAfter.marks.find(u => u.type === e);
(c || l) && (n = l ? i.nodeAfter : i.nodeBefore, s = l || c, a = l ? {
from: i.pos,
to: i.pos + i.nodeAfter.nodeSize
} : {
from: i.pos - ((r = (o = i.nodeBefore) == null ? void 0 : o.nodeSize) != null ? r : 0),
to: i.pos
})
}
if (!n) return
}
return {
node: n,
mark: s,
pos: a
}
},
vZ = (t, {
allowedMarks: e = []
} = {}) => t.selection.empty ? !0 : Wp(t, t.selection.from, t.selection.to, {
allowedMarks: e
}),
Wp = (t, e, n, {
allowedMarks: s = []
} = {}) => {
let a = !0,
o = !1;
return t.doc.nodesBetween(e, n, r => {
if (!a) return !1;
r.type !== t.schema.nodes.text ? o ? a = !1 : o = !0 : r.marks.find(i => !s.includes(i.type)) && (a = !1)
}), a
},
er = (t, e) => {
var s;
if (t.selection.empty) return !1;
const n = Array.isArray(e) ? e : [e];
if ("node" in t.selection) {
const a = t.selection;
return n.includes((s = a.node) == null ? void 0 : s.type)
}
return xZ(t, t.selection.from, t.selection.to, n)
},
xZ = (t, e, n, s) => {
let a = null;
return t.doc.nodesBetween(e, n, o => {
if (a !== !1 && s.includes(o.type)) a = !0;
else return a = !1, !1
}), a || !1
},
da = t => t.selection.empty ? null : yZ(t, t.selection.from, t.selection.to),
yZ = (t, e, n) => {
let s = null;
return t.doc.nodesBetween(e, n, a => {
if (s) return !1;
if (a.type === t.schema.nodes.image2) return s = a.attrs.href, !1;
a.type === t.schema.nodes.image3 && (s = a.attrs.href)
}), s || null
},
Jp = (t, e, n) => {
t.selection.empty || wZ(t, e, t.selection.from, t.selection.to, n)
},
wZ = (t, e, n, s, a) => {
t.doc.nodesBetween(n, s, (o, r) => {
(o.type === t.schema.nodes.image2 || o.type === t.schema.nodes.image3) && e.setNodeMarkup(r, o.type, Object.assign({}, o.attrs, {
href: a
}), o.marks)
})
},
tr = t => ({
top: t.top + window.scrollY,
bottom: t.bottom + window.scrollY,
left: t.left + window.scrollX,
right: t.right + window.scrollX
}),
Yp = (t, e, n, s) => {
const a = document.body,
o = window.innerWidth <= 481,
i = kZ(t, e.from, e.to, m => [t.state.schema.nodes.image, t.state.schema.nodes.image2].includes(m.type)) ? -44 : 8,
c = tr(t.coordsAtPos(e.from)),
l = tr(t.coordsAtPos(e.to));
n.style.position = "fixed";
const u = l.bottom + (o ? a.scrollTop : 0),
d = a.clientHeight - n.clientHeight - 96 - i;
c.top < l.top ? (s && (s.style.left = "10px"), n.style.right = "", n.style.left = `${Math.min(c.left,l.left)}px`) : a.clientWidth - c.left > n.clientWidth ? (s && (s.style.left = "10px"), n.style.right = "", n.style.left = `${c.left}px`) : (s && (s.style.left = `${c.left-a.clientWidth+n.clientWidth}px`), n.style.right = "10px", n.style.left = ""), o || u < d ? (s && (s.style.top = "-9px", s.style.bottom = "auto", s.style.transform = ""), n.style.top = `${u+i}px`) : (s && (s.style.top = "auto", s.style.bottom = "-9px", s.style.transform = "rotate(180deg)"), n.style.top = `${d+i}px`)
},
kZ = (t, e, n, s) => {
let a = !1;
return t.state.doc.nodesBetween(e, n, o => {
if (a) return !1;
a = s(o)
}), a
},
Wt = (t, e) => N(void 0, null, function*() {
return Ca.maxOpen(yield Kp(t.content, e))
}),
Kp = (t, e, n) => N(void 0, null, function*() {
let s = [];
for (let a = 0; a < t.childCount; a++) {
let o = t.child(a);
o.content.childCount && (o = o.copy(yield Kp(o.content, e, o))), o = yield e(o, a, n), Array.isArray(o) || (o = [o]), s = s.concat(br(o))
}
return s = yield Promise.all(s), s = s.map(a => {
if (!(a != null && a.content.childCount)) return [a];
const o = [];
let r = [];
for (let i = 0; i < a.content.childCount; i++) {
const c = a.content.child(i);
CZ(a, c) ? r.push(c) : (o.push(a.copy(Kt.fromArray(r))), r = [], o.push(c))
}
return r.length && o.push(a.copy(Kt.fromArray(r))), o
}).reduce((a, o) => a.concat(o), []), s = s.filter(a => a && !(a.type.name === "text" && !a.text) && !(a.type.name === "paragraph" && !a.content.childCount)), Kt.fromArray(s)
}),
nl = (t, e, n) => Ca.maxOpen(Xp(t.content, e, n)),
Xp = (t, e, n) => {
n = n || (o => o);
const s = [];
let a;
for (let o = 0; o < t.childCount; o++) {
let r = t.child(o);
if (e(r)) a = a || [], a.push(r);
else {
if (a) {
const [i, ...c] = n(a);
s.push(sl(i, ...c)), a = null
}
r.content.childCount && (r = r.copy(Xp(r.content, e, n))), s.push(r)
}
}
if (a) {
const [o, ...r] = n(a);
s.push(sl(o, ...r)), a = null
}
return Kt.fromArray(s)
},
sl = (t, ...e) => {
let n = t.content;
for (const s of e) n = n.append(s.content);
return t.copy(n)
},
_Z = t => {
if (!t) return !0;
let e;
if (typeof t == "string") try {
e = JSON.parse(t)
} catch (n) {
return console.error("Could not parse doc", t), !1
} else e = t;
if (!e || e.type !== "doc" || !Array.isArray(e.content)) return console.error("Could not parse doc", e), !1;
for (const n of e.content) {
if (!n || typeof n != "object") return console.error("Could not parse doc", e), !1;
if (n.type !== "paragraph") return !1;
if (n.content) {
if (!Array.isArray(n.content)) return console.error("Could not parse doc", e), !1;
if (n.type !== "text" || n.text && n.text.trim()) return !1
}
}
return !0
},
CZ = (t, e) => {
const n = ["list_item", "listItem"].includes(t.type.name),
s = ["bullet_list", "bulletList", "ordered_list", "orderedList"].includes(e.type.name);
return n && s ? !0 : !!t.type.contentMatch && !!t.type.contentMatch.matchType(e.type)
},
EZ = t => t.doc.resolve(t.selection.from).node(1),
AZ = (t, e) => {
var n;
return e.includes((n = EZ(t)) == null ? void 0 : n.type)
},
ie = (t, e) => {
var r, i, c;
const n = t.tr,
s = n.selection instanceof Ee,
o = s && ((c = (i = (r = n.selection.$from) == null ? void 0 : r.parent) == null ? void 0 : i.content) == null ? void 0 : c.size) === 0 ? t.selection.to - 1 : t.selection.to;
if (Array.isArray(e))
for (const l of e.slice().reverse()) n.insert(o, l);
else n.insert(o, e);
return s || n.setSelection(Je.near(n.doc.resolve(o))), n
},
SZ = (t, e) => {
const n = t.tr;
return n.replaceSelectionWith(e), n
},
Le = (t, e) => {
const n = t.selection.$from;
for (let s = n.depth; s >= 0; s--) {
const a = n.index(s);
if (n.node(s).canReplaceWith(a, a, e)) return !0
}
return !1
},
Zp = t => !!Bn(t, e => e.type === "paywall"),
TZ = ({
attrs: t
}) => {
var n;
const e = {};
if (!t) return e;
for (const [s, a] of Object.entries(t)) e[s] = {
default: (n = a.default) != null ? n : null,
keepOnSplit: !1
};
return e
},
F = ({
name: t,
nodeSpec: e,
addNodeView: n,
addCommands: s
}) => Qt.create({
name: t,
content: e.content,
marks: e.marks,
group: e.group,
inline: e.inline,
atom: e.atom,
selectable: e.selectable,
draggable: e.draggable,
code: e.code,
whitespace: e.whitespace,
defining: e.defining,
isolating: e.isolating,
addNodeView: n,
addCommands: s,
renderHTML(a) {
return this.options.isStatic && e.toDOMStatic ? e.toDOMStatic(a.node) : e.toDOM(a.node)
},
parseHTML() {
return e.parseDOM
},
addAttributes() {
return TZ({
attrs: e.attrs
})
}
}),
DZ = ({
doc: t,
extensions: e,
customDocument: n
}) => {
const s = lu(e),
a = uu.fromJSON(s, t),
o = document.createElement("div");
return Ea.fromSchema(s).serializeFragment(a.content, {
document: n
}, o), o.innerHTML
},
re = t => {
try {
if (typeof t != "string") {
const e = t.getAttribute("data-attrs");
if (e) return JSON.parse(e)
}
} catch (e) {
return !1
}
return !1
},
IZ = () => ({
userId: {
default: null,
keepOnSplit: !1
},
userName: {
default: null,
keepOnSplit: !1
},
canDm: {
default: null,
keepOnSplit: !1
},
dmUpgradeOptions: {
default: null,
keepOnSplit: !1
},
isEditorNode: {
default: !1,
keepOnSplit: !1
}
}),
zs = "directMessage",
Qp = {
name: zs,
group: "block",
selectable: !0,
inline: !1,
draggable: !0,
atom: !0,
attrs: Fp({
attrs: IZ()
}),
parseDOM: [{
tag: "div.directMessage",
getAttrs: t => {
try {
if (t instanceof HTMLElement) {
const e = t.getAttribute("data-attrs");
if (e) return JSON.parse(e)
}
} catch (e) {
return !1
}
return !1
}
}],
toDOM: t => {
if (typeof window != "undefined" && t.attrs.isEditorNode) try {
t.attrs.isEditor = !0;
const n = document.createElement("div");
return n.className = zs, n.setAttribute("data-attrs", JSON.stringify(t.attrs)), Fe(p(qp, {
node: S({}, t)
}), n), n
} catch (n) {
return console.error("Error rendering DirectMessageEditor", n), Oe({
msg: null,
node: t,
err: n,
group: "block"
})
}
return ["div", {
class: `${zs} button`,
"data-attrs": JSON.stringify(S({}, t.attrs)),
"data-component-name": "DirectMessageToDOM"
}]
},
toDOMStatic: t => ["div", {
class: zs,
"data-attrs": JSON.stringify(P(S({}, t.attrs), {
isEmail: !0
})),
"data-component-name": "DirectMessageToDOMStatic"
}]
},
ed = Pe.create({
name: "directMessageExtension",
addCommands() {
return {
insertDirectMessage: t => ({
dispatch: e,
state: n
}) => {
const {
user: s
} = t, a = {
userName: s.name,
userId: s.id,
isEditorNode: !0
};
return e && e(ie(n, n.schema.nodes.directMessage.create(a))), !0
}
}
}
}),
NZ = F({
name: "directMessage",
nodeSpec: Qp,
addCommands: ed.addCommands,
addNodeView() {
return kt(qp)
}
});
class Ve {
constructor(e, n) {
this.match = e, this.match = e, this.handler = typeof n == "string" ? MZ(n) : n
}
}
function MZ(t) {
return function(e, n, s, a) {
let o = t;
if (n[1]) {
let r = n[0].lastIndexOf(n[1]);
o += n[0].slice(r + n[1].length), s += r;
let i = s - a;
i > 0 && (o = n[0].slice(r - i, r) + o, s = a)
}
return e.tr.insertText(o, s, a)
}
}
const OZ = 500;
function LZ({
rules: t
}) {
let e = new _t({
state: {
init() {
return null
},
apply(n, s) {
let a = n.getMeta(this);
return a || (n.selectionSet || n.docChanged ? null : s)
}
},
props: {
handleTextInput(n, s, a, o) {
return al(n, s, a, o, t, e)
},
handleDOMEvents: {
compositionend: n => {
setTimeout(() => {
let {
$cursor: s
} = n.state.selection;
s && al(n, s.pos, s.pos, "", t, e)
})
}
}
},
isInputRules: !0
});
return e
}
function al(t, e, n, s, a, o) {
if (t.composing) return !1;
let r = t.state,
i = r.doc.resolve(e);
if (i.parent.type.spec.code) return !1;
let c = i.parent.textBetween(Math.max(0, i.parentOffset - OZ), i.parentOffset, null, "") + s;
for (let l = 0; l < a.length; l++) {
let u = a[l].match.exec(c),
d = u && a[l].handler(r, u, e - (u[0].length - s.length), n);
if (d) return t.dispatch(d.setMeta(o, {
transform: d,
from: e,
to: n,
text: s
})), !0
}
return !1
}
const RZ = (t, e) => {
let n = t.plugins;
for (let s = 0; s < n.length; s++) {
let a = n[s],
o;
if (a.spec.isInputRules && (o = a.getState(t))) {
if (e) {
let r = t.tr,
i = o.transform;
for (let c = i.steps.length - 1; c >= 0; c--) r.step(i.steps[c].invert(i.docs[c]));
if (o.text) {
let c = r.doc.resolve(o.from).marks();
r.replaceWith(o.from, o.to, t.schema.text(o.text, c))
} else r.delete(o.from, o.to);
e(r)
}
return !0
}
}
return !1
},
PZ = new Ve(/--$/, "—"),
BZ = new Ve(/\.\.\.$/, "…"),
zZ = new Ve(/(?:^|[\s\{\[\(\<'"\u2018\u201C])(")$/, "“"),
qZ = new Ve(/"$/, "”"),
FZ = new Ve(/(?:^|[\s\{\[\(\<'"\u2018\u201C])(')$/, "‘"),
jZ = new Ve(/'$/, "’"),
$Z = [zZ, qZ, FZ, jZ];
function nr(t, e, n = null, s) {
return new Ve(t, (a, o, r, i) => {
let c = n instanceof Function ? n(o) : n,
l = a.tr.delete(r, i),
u = l.doc.resolve(r),
d = u.blockRange(),
m = d && Fo(d, e, c);
if (!m) return null;
l.wrap(d, m);
let f = l.doc.resolve(r - 1).nodeBefore;
return f && f.type == e && ph(l.doc, r - 1) && (!s || s(o, f)) && l.join(r - 1), l
})
}
function ol(t, e, n = null) {
return new Ve(t, (s, a, o, r) => {
let i = s.doc.resolve(o),
c = n instanceof Function ? n(a) : n;
return i.node(-1).canReplaceWith(i.index(-1), i.indexAfter(-1), e) ? s.tr.delete(o, r).setBlockType(o, o, e, c) : null
})
}
const UZ = ({
filetype: t,
filename: e
}) => p("div", {
className: "file-embed-wrapper-editor"
}, p("div", {
className: "file-embed-aligner"
}, p("div", {
className: "file-embed-container placeholder"
}, p(td, null)))),
td = () => p("div", {
className: "embed-loader-container"
}, p("div", {
className: "embed-loader"
}), p("div", {
className: "embed-loader-text"
}, "Loading...")),
rl = new pu("substack-placeholder");
class VZ extends _t {
add(e, n, s) {
n = n || e.state.selection.from, s = s || Fl;
const a = {},
o = e.state.tr;
return o.setMeta(Ye, {
add: {
id: a,
pos: n,
url: s
}
}), e.dispatch(o), a
}
addFile(e, n, {
name: s,
type: a
}) {
n = n || e.state.selection.from;
const o = {},
r = e.state.tr;
return r.setMeta(Ye, {
addFile: {
id: o,
pos: n,
name: s,
type: a
}
}), e.dispatch(r), o
}
remove(e, n) {
const a = Ye.getState(e.state).find(null, null, o => o.id == n);
if (a.length) {
const o = a[0].from,
r = e.state.tr;
return r.setMeta(Ye, {
remove: {
id: n
}
}), e.dispatch(r), o
}
return null
}
replace(e, n, s) {
const a = this.remove(e, n);
return a !== null ? (e.dispatch(e.state.tr.insert(a - 1, s)), !0) : !1
}
}
const Ye = new VZ({
state: {
init() {
return du.empty
},
apply(t, e) {
e = e.map(t.mapping, t.doc);
const n = t.getMeta(rl);
if (n && n.add) {
const s = document.createElement("a");
s.className = "image-link placeholder", s.href = "javascript:void(0)";
const a = document.createElement("img");
a.src = n.add.url, s.appendChild(a), s.ondrop = s.ondragstart = s.onmousedown = () => !1;
const o = jo.widget(n.add.pos, s, {
id: n.add.id
});
e = e.add(t.doc, [o])
} else if (n && n.addFile) {
const {
name: s,
type: a
} = n.addFile, o = document.createElement("div");
ur(p(UZ, {
filename: s,
filetype: a
}), o);
const r = jo.widget(n.addFile.pos, o, {
id: n.addFile.id
});
e = e.add(t.doc, [r])
} else n && n.remove && (e = e.remove(e.find(void 0, void 0, s => s.id == n.remove.id)));
return e
}
},
key: rl,
props: {
decorations(t) {
return this.getState(t)
}
}
}),
Se = t => {
const e = document.createElement("div");
return e.innerHTML = t, {
dom: e.querySelector("svg")
}
},
tn = (t, e) => {
if (!t.dom) return {
dom: null
};
const n = document.createElement("div");
n.className = "dropdown-item-container";
const s = document.createElement("span");
s.innerText = e;
const a = document.createElement("div");
return a.className = "dropdown-item-svg", a.appendChild(t.dom), n.appendChild(a), n.appendChild(s), {
dom: n
}
};
Se(`
<svg class="editor-icon" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0)" fill="none">
<path d="M7.33334 4L3.33334 8L7.33334 12" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M11.3333 19H15.8182C17.2809 19 18.6837 18.4205 19.718 17.3891C20.7523 16.3576 21.3333 14.9587 21.3333 13.5C21.3333 12.0413 20.7523 10.6424 19.718 9.61091C18.6837 8.57946 17.2809 8 15.8182 8H4.33334" stroke-linecap="round" stroke-linejoin="round"/>
</g>
</svg>
`);
Se(`
<svg class="editor-icon" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0)" fill="none">
<path d="M17.3334 4L21.3334 8L17.3334 12" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M13.3334 19H8.84853C7.38582 19 5.98302 18.4205 4.94873 17.3891C3.91443 16.3576 3.33337 14.9587 3.33337 13.5C3.33337 12.0413 3.91443 10.6424 4.94873 9.61091C5.98302 8.57946 7.38582 8 8.84853 8H20.3334" stroke-linecap="round" stroke-linejoin="round"/>
</g>
</svg>
`);
Se(`
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill="none" d="M6.80005 5.60059H13.2C14.0487 5.60059 14.8627 5.93773 15.4628 6.53784C16.0629 7.13796 16.4 7.95189 16.4 8.80059C16.4 9.64928 16.0629 10.4632 15.4628 11.0633C14.8627 11.6634 14.0487 12.0006 13.2 12.0006H6.80005V5.60059Z" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
<path fill="none" d="M6.80005 12H14C14.8487 12 15.6627 12.3371 16.2628 12.9373C16.8629 13.5374 17.2 14.3513 17.2 15.2C17.2 16.0487 16.8629 16.8626 16.2628 17.4627C15.6627 18.0629 14.8487 18.4 14 18.4H6.80005V12Z" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
`);
Se(`
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0)">
<path d="M17.2671 6.10059H10.0671" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M13.2659 18.8994H6.06592" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M14.0666 6.10059L9.2666 18.9006" stroke-linecap="round" stroke-linejoin="round"/>
</g>
`);
Se(`
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0)" fill="none">
<path fill="none" d="M14.866 5.60059H9.266C8.88195 5.60038 8.50345 5.69236 8.1623 5.86878C7.82116 6.04519 7.52734 6.30091 7.30552 6.61443C7.0837 6.92796 6.94036 7.29014 6.88755 7.67055C6.83473 8.05096 6.87399 8.43849 7.00201 8.80059" stroke-linecap="round" stroke-linejoin="round"/>
<path fill="none" d="M13.2667 12C14.1154 12 14.9293 12.3371 15.5294 12.9373C16.1296 13.5374 16.4667 14.3513 16.4667 15.2C16.4667 16.0487 16.1296 16.8626 15.5294 17.4627C14.9293 18.0629 14.1154 18.4 13.2667 18.4H6.8667" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M4.1665 12L19.1665 12" stroke-linecap="round" stroke-linejoin="round"/>
</g>
</svg>
`);
Se(`
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0)" fill="none">
<path d="M17.6667 16.5L21.6667 12.5L17.6667 8.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M5.66675 8.5L1.66675 12.5L5.66675 16.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M14.1667 4.5L9.16675 20.5" stroke-linecap="round" stroke-linejoin="round"/>
</g>
`);
const HZ = Se(`
<svg class="link-item" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0)" fill="none">
<g clip-path="url(#clip1)">
<path d="M10.0671 13.3006C10.4107 13.7599 10.849 14.1399 11.3524 14.4149C11.8557 14.6899 12.4123 14.8535 12.9845 14.8944C13.5566 14.9354 14.1308 14.8529 14.6682 14.6524C15.2056 14.4519 15.6936 14.1382 16.0991 13.7326L18.4991 11.3326C19.2278 10.5781 19.6309 9.56774 19.6218 8.51895C19.6127 7.47017 19.192 6.46692 18.4504 5.72528C17.7088 4.98365 16.7055 4.56298 15.6567 4.55386C14.608 4.54475 13.5975 4.94793 12.8431 5.67656L11.4671 7.04456" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M13.2677 11.7008C12.9242 11.2415 12.4859 10.8614 11.9825 10.5864C11.4791 10.3114 10.9225 10.1479 10.3504 10.1069C9.7783 10.0659 9.20407 10.1485 8.66666 10.3489C8.12925 10.5494 7.64125 10.8631 7.23574 11.2688L4.83574 13.6688C4.10711 14.4232 3.70393 15.4336 3.71304 16.4824C3.72216 17.5312 4.14283 18.5344 4.88446 19.276C5.6261 20.0177 6.62935 20.4383 7.67813 20.4475C8.72692 20.4566 9.73733 20.0534 10.4917 19.3248L11.8597 17.9568" stroke-linecap="round" stroke-linejoin="round"/>
</g>
</g>
`);
Se(`
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0)">
<path d="M7.66675 6.5H20.6667" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M7.66675 12.5H20.6667" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M7.66675 18.5H20.6667" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M2.66675 6.5H2.67633" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M2.66675 12.5H2.67633" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M2.66675 18.5H2.67633" stroke-linecap="round" stroke-linejoin="round"/>
</g>
</svg>
`);
Se(`
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<g fill="none">
<path d="M9.66675 6.5H20.6667" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M9.66675 12.5H20.6667" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M9.66675 18.5H20.6667" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M3.66675 6.5H4.66675V10.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M3.66675 10.5H5.66675" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M5.66675 18.4999H3.66675C3.66675 17.4999 5.66675 16.4999 5.66675 15.4999C5.66675 14.4999 4.66675 13.9999 3.66675 14.4999" stroke-linecap="round" stroke-linejoin="round"/>
</g>
</svg>
`);
const GZ = Se(`
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill="none" d="M5 15.5L5 18.5C5 19.0304 5.21071 19.5391 5.58579 19.9142C5.96086 20.2893 6.46957 20.5 7 20.5L18 20.5C18.5304 20.5 19.0391 20.2893 19.4142 19.9142C19.7893 19.5391 20 19.0304 20 18.5L20 7.5C20 6.96957 19.7893 6.46086 19.4142 6.08579C19.0391 5.71071 18.5304 5.5 18 5.5L16 5.5" stroke-linecap="round" stroke-linejoin="round"/>
<path fill="none" d="M9.5 10.5L12.5 7.5L9.5 4.5" stroke-linecap="round" stroke-linejoin="round"/>
<path fill="none" d="M5.5 4.5L2.5 7.5L5.5 10.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
`),
WZ = Se(`
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M14.7143 15C14.7143 14.4696 14.9401 13.9609 15.3419 13.5858C15.7438 13.2107 16.2888 13 16.8571 13C17.4255 13 17.9705 13.2107 18.3724 13.5858C18.7742 13.9609 19 14.4696 19 15C19 15.5304 18.7742 16.0391 18.3724 16.4142C17.9705 16.7893 17.4255 17 16.8571 17C16.2888 17 15.7438 16.7893 15.3419 16.4142C14.9401 16.0391 14.7143 15.5304 14.7143 15ZM14.7143 15L16.8571 7M5.5 15C5.5 14.4696 5.72577 13.9609 6.12763 13.5858C6.52949 13.2107 7.07454 13 7.64286 13C8.21118 13 8.75622 13.2107 9.15809 13.5858C9.55995 13.9609 9.78571 14.4696 9.78571 15C9.78571 15.5304 9.55995 16.0391 9.15809 16.4142C8.75622 16.7893 8.21118 17 7.64286 17C7.07454 17 6.52949 16.7893 6.12763 16.4142C5.72577 16.0391 5.5 15.5304 5.5 15ZM5.5 15L7.64286 7" stroke-linecap="round" stroke-linejoin="round"/>
<circle cx="8" cy="15" r="1"stroke-linecap="round" stroke-linejoin="round"/>
<circle cx="17" cy="15" r="1"stroke-linecap="round" stroke-linejoin="round"/>
<circle cx="7.5" cy="15.5" r="0.5"stroke-linecap="round" stroke-linejoin="round"/>
<circle cx="16.5" cy="15.5" r="0.5"stroke-linecap="round" stroke-linejoin="round"/>
</svg>
`);
Se(`
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill="none" d="M6.66699 8L2.66699 12L6.66699 16" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M22 6H11" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M22 12L16 12" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M22 18H11" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
`);
Se(`
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill="none" d="M2.66699 8L6.66699 12L2.66699 16" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M21 12L15 12" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M21 6H10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M21 18H10" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
`);
const JZ = Se(`
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<g fill="none" clip-path="url(#clip0_6402:84637)">
<path d="M5.74356 7.80138L1.55483 19.3174" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M5.74212 7.80082L9.92942 19.3177" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M13.0703 7.80493V19.3212" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M8.35986 16.1787H3.12519" stroke-linecap="round" stroke-linejoin="round"/>
<ellipse cx="15.9501" cy="15.6565" rx="2.87907" ry="3.66427" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M21.4465 5L21.4465 10.9463" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M21.4465 5L19.3528 6.23506" stroke-linecap="round" stroke-linejoin="round"/>
</g>
</svg>
`),
YZ = Se(`
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill="none" d="M19 3H5C3.89543 3 3 3.89543 3 5V19C3 20.1046 3.89543 21 5 21H19C20.1046 21 21 20.1046 21 19V5C21 3.89543 20.1046 3 19 3Z" stroke-linecap="round" stroke-linejoin="round"/>
<path fill="none" d="M8.5 10C9.32843 10 10 9.32843 10 8.5C10 7.67157 9.32843 7 8.5 7C7.67157 7 7 7.67157 7 8.5C7 9.32843 7.67157 10 8.5 10Z" stroke-linecap="round" stroke-linejoin="round"/>
<path fill="none" d="M21 15L16 10L5 21" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
`),
KZ = Se(`
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M3 13H21" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
`),
XZ = Se(`
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12 1V23" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M17 5H9.5C8.57174 5 7.6815 5.36875 7.02513 6.02513C6.36875 6.6815 6 7.57174 6 8.5C6 9.42826 6.36875 10.3185 7.02513 10.9749C7.6815 11.6313 8.57174 12 9.5 12H12" fill="none" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M6 19H14.5C15.4283 19 16.3185 18.6313 16.9749 17.9749C17.6313 17.3185 18 16.4283 18 15.5C18 14.5717 17.6313 13.6815 16.9749 13.0251C16.3185 12.3687 15.4283 12 14.5 12H12" fill="none" stroke-linecap="round" stroke-linejoin="round"/>
</g>
</svg>
`),
ZZ = Se(`
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M18 9L18 6C18 5.46957 17.7893 4.96086 17.4142 4.58579C17.0391 4.21072 16.5304 4 16 4L5 4C4.46957 4 3.96086 4.21071 3.58579 4.58579C3.21071 4.96086 3 5.46957 3 6L3 13C3 13.5304 3.21071 14.0391 3.58578 14.4142C3.96086 14.7893 4.46957 15 5 15L7 15" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M9.03906 9.35059L14.0391 21.3506L15.8131 16.1246L21.0391 14.3506L9.03906 9.35059Z" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M16.1104 16.4214L20.3534 20.6644" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
`),
QZ = Se(`
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M19 12L12 5L15 2L22 9L19 12Z" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M13 6L5.5 7.5L2 22L16.5 18.5L18 11L13 6Z"stroke-linecap="round" stroke-linejoin="round"/>
<path d="M2 22L9.586 14.414" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M13 13C13 11.8954 12.1046 11 11 11C9.89543 11 9 11.8954 9 13C9 14.1046 9.89543 15 11 15C12.1046 15 13 14.1046 13 13Z" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
`);
tn(ZZ, "Buttons...");
tn(GZ, "Code block");
tn(JZ, "Footnote");
tn(KZ, "Divider");
tn(XZ, "Paywall");
tn(QZ, "Poetry block");
tn(WZ, "Pullquote");
function eQ() {
var t = arguments[0];
typeof t == "string" && (t = document.createElement(t));
var e = 1,
n = arguments[1];
if (n && typeof n == "object" && n.nodeType == null && !Array.isArray(n)) {
for (var s in n)
if (Object.prototype.hasOwnProperty.call(n, s)) {
var a = n[s];
typeof a == "string" ? t.setAttribute(s, a) : a != null && (t[s] = a)
}
e++
}
for (; e < arguments.length; e++) nd(t, arguments[e]);
return t
}
function nd(t, e) {
if (typeof e == "string") t.appendChild(document.createTextNode(e));
else if (e != null)
if (e.nodeType != null) t.appendChild(e);
else if (Array.isArray(e))
for (var n = 0; n < e.length; n++) nd(t, e[n]);
else throw new RangeError("Unsupported child node: " + e)
}
var ns = "http://www.w3.org/2000/svg",
tQ = "http://www.w3.org/1999/xlink",
sr = "ProseMirror-icon";
function nQ(t) {
for (var e = 0, n = 0; n < t.length; n++) e = (e << 5) - e + t.charCodeAt(n) | 0;
return e
}
function sQ(t) {
var e = document.createElement("div");
if (e.className = sr, t.path) {
var n = "pm-icon-" + nQ(t.path).toString(16);
document.getElementById(n) || aQ(n, t);
var s = e.appendChild(document.createElementNS(ns, "svg"));
s.style.width = t.width / t.height + "em";
var a = s.appendChild(document.createElementNS(ns, "use"));
a.setAttributeNS(tQ, "href", /([^#]*)/.exec(document.location)[1] + "#" + n)
} else t.dom ? e.appendChild(t.dom.cloneNode(!0)) : (e.appendChild(document.createElement("span")).textContent = t.text || "", t.css && (e.firstChild.style.cssText = t.css));
return e
}
function aQ(t, e) {
var n = document.getElementById(sr + "-collection");
n || (n = document.createElementNS(ns, "svg"), n.id = sr + "-collection", n.style.display = "none", document.body.insertBefore(n, document.body.firstChild));
var s = document.createElementNS(ns, "symbol");
s.id = t, s.setAttribute("viewBox", "0 0 " + e.width + " " + e.height);
var a = s.appendChild(document.createElementNS(ns, "path"));
a.setAttribute("d", e.path), n.appendChild(s)
}
var Co = "ProseMirror-menu",
sd = function(e) {
this.spec = e
};
sd.prototype.render = function(e) {
var n = this.spec,
s = n.render ? n.render(e) : n.icon ? sQ(n.icon) : n.label ? eQ("div", null, il(e, n.label)) : null;
if (!s) throw new RangeError("MenuItem without icon or label property");
if (n.title) {
var a = typeof n.title == "function" ? n.title(e.state) : n.title;
s.setAttribute("title", il(e, a))
}
n.class && s.classList.add(n.class), n.css && (s.style.cssText += n.css), s.addEventListener("mousedown", function(r) {
r.preventDefault(), s.classList.contains(Co + "-disabled") || n.run(e.state, e.dispatch, e, r)
});
function o(r) {
if (n.select) {
var i = n.select(r);
if (s.style.display = i ? "" : "none", !i) return !1
}
var c = !0;
if (n.enable && (c = n.enable(r) || !1, cl(s, Co + "-disabled", !c)), n.active) {
var l = c && n.active(r) || !1;
cl(s, Co + "-active", l)
}
return !0
}
return {
dom: s,
update: o
}
};
function il(t, e) {
return t._props.translate ? t._props.translate(e) : e
}
function cl(t, e, n) {
n ? t.classList.add(e) : t.classList.remove(e)
}
const oQ = 1900;
let ad = class od extends sd {
constructor(e, n) {
super(e);
const s = this.spec.run;
this.spec.run = (a, o, r, i) => (se(ae.EDITOR_MENU_ICON_CLICKED, {
button: n || this.spec.label || this.spec.title
}), s.call(this, a, o, r, i))
}
static fromMenuItem(e, n) {
const {
spec: s
} = e;
return new od(s, n)
}
};
const jt = "ProseMirror-prompt",
ar = `${jt}-visible`;
class rd {
constructor(e) {
this.options = e
}
read(e) {
return e.value
}
validate(e) {
return e = this.clean(e), !e && this.options.required ? "Required field" : this.options.validate && this.options.validate(e)
}
clean(e) {
return this.options.clean ? this.options.clean(e) : e
}
}
class Va extends rd {
render() {
const e = document.createElement("input");
return e.type = "text", e.placeholder = this.options.label, e.value = this.options.value || "", e.className = this.options.className || "", e.autocomplete = "off", e
}
}
class rQ extends rd {
render() {
const e = document.createElement("select");
e.value = this.options.value || "";
const n = document.createElement("option");
return n.textContent = this.options.label, n.value = "", e.appendChild(n), this.options.options.forEach((s, a) => {
const o = document.createElement("option");
o.textContent = s.label, o.value = String(a), e.appendChild(o)
}), this.options.onChange && e.addEventListener("change", () => {
const s = this.read(e);
this.options.onChange(s)
}, !1), e
}
read(e) {
const n = this.options.options[e.value];
return n && n.value
}
}
class iQ extends Va {
constructor(e, n, s = "en") {
const {
iString: a
} = I18N.i(s);
super({
label: a("Enter URL..."),
className: "url-input",
value: n || e && e.mark.attrs.href || "",
required: !0,
clean: o => {
let r;
return o ? (r = o.trim(), r = r.startsWith("http") || r.startsWith("mailto") || /^%%.*%%$/.test(r) ? r : `http://${r}`) : r = "", r
},
validate: o => {
if (!/^%%.*%%$/.test(o)) {
if (o.startsWith(`${rt()}/publish/post/`) && alert(a("This is a link to a post draft. Readers will not be able to access this page.")), o.length > oQ) return a("Link is too long");
try {
const r = new URL(o);
if (["http:", "https:", "mailto:"].includes(r.protocol)) return
} catch (r) {
console.error("Failed to parse URL:", r)
}
return o.startsWith("http") ? a("Invalid URL") : a("Invalid URL. Try using http://")
}
}
})
}
}
function cQ(t, e) {
const {
from: n,
$from: s,
to: a,
empty: o
} = t.selection;
return o ? !!e.isInSet(t.storedMarks || s.marks()) : t.doc.rangeHasMark(n, a, e)
}
function id(t) {
return t == null ? null : t.scrollHeight > t.clientHeight ? t : id(t.parentElement)
}
function ma(t) {
if (Jr(t)) return;
const {
iString: e
} = I18N.i(t.language || "en"), n = `${jt}-${t.parentClass}`, s = t.root || document.body, a = t.scrollParent && document.querySelector && document.querySelector(t.scrollParent) || id(s) || window, o = s.appendChild(document.createElement("div"));
o.classList.add(jt), t.className && o.classList.add(t.className), o.id = n, jl(document.body, ar);
const r = h => {
o.contains(h.target) || l()
},
i = () => {
var h;
if (t.position) t.position(o, u);
else {
const g = t.parentClass && ((h = document.querySelector) == null ? void 0 : h.call(document, `.${t.parentClass}`));
if (g) {
const b = g.getBoundingClientRect();
o.style.top = `${b.bottom+(t.offsetTop||0)}px`, o.style.left = `${b.left+(t.offsetLeft||0)}px`
} else {
const b = o.getBoundingClientRect();
o.style.top = `${(window.innerHeight-b.height)/2+(t.offsetTop||0)}px`, o.style.left = `${(window.innerWidth-b.width)/2+(t.offsetLeft||0)}px`
}
}
},
c = h => {
var b;
h && h.preventDefault();
const g = lQ((b = t.fields) != null ? b : {}, d);
g && l(g)
},
l = h => {
pr(document.body, ar), window.removeEventListener("mousedown", r), window.removeEventListener("resize", i, !1), a.removeEventListener("scroll", i, !1), o.parentNode && o.parentNode.removeChild(o), h ? (t.onSubmit && t.onSubmit(h), t.callback && t.callback(h)) : t.onCancel && t.onCancel(), t.onClose && t.onClose()
};
setTimeout(() => window.addEventListener("mousedown", r), 50), window.addEventListener("resize", i, !1), a.addEventListener("scroll", i, !1);
const u = o.appendChild(document.createElement("span"));
u.className = "head";
const d = [];
let m = 0;
for (const h in t.fields) {
m++;
const g = t.fields[h].render();
g.tabIndex = m, d.push(g)
}
const f = o.appendChild(document.createElement("form"));
if (t.title && (f.appendChild(document.createElement("h5")).textContent = t.title), d.forEach(h => {
f.appendChild(document.createElement("div")).appendChild(h)
}), !t.no_buttons) {
const h = document.createElement("button");
h.type = "submit", h.className = `${jt}-submit`, h.textContent = t.submitText || "OK", h.addEventListener("click", c);
const g = document.createElement("button");
g.type = "button", g.className = `${jt}-cancel`, g.textContent = e("Cancel"), g.addEventListener("click", () => l());
const b = f.appendChild(document.createElement("div"));
b.className = `${jt}-buttons`, b.appendChild(h), b.appendChild(document.createTextNode(" ")), b.appendChild(g)
}
if (t.footer && f.appendChild(t.footer), t.openseaEmbedFooter && f.appendChild(t.openseaEmbedFooter), i(), f.addEventListener("submit", c), t.onInput && f.addEventListener("input", h => {
var g;
(g = t.onInput) == null || g.call(t, h, o)
}), f.addEventListener("keydown", h => {
if (h.keyCode == 27) h.preventDefault(), l();
else if (h.keyCode == 13 && !(h.ctrlKey || h.metaKey || h.shiftKey)) h.preventDefault(), c();
else if (h.keyCode == 9 && (window.setTimeout(() => {
o.contains(document.activeElement) || l()
}, 500), d.length > 1)) {
for (let g = 0; g < d.length; g++)
if (document.activeElement === d[g]) {
g === 0 && h.shiftKey ? (h.preventDefault(), d[d.length - 1].focus()) : g === d.length - 1 && !h.shiftKey && (h.preventDefault(), d[0].focus());
break
}
}
}), f.elements.length > 0) {
let h = f.elements[0];
const g = Array.from(f.elements);
for (const b of g)
if (!b.value && ["INPUT", "TEXTAREA"].includes(b.nodeName)) {
h = b;
break
}
h.focus()
}
}
function Jr(t) {
var s;
const e = `${jt}-${t.parentClass}`,
n = document.getElementById(e);
if (n) {
let a;
return n.querySelector && (a = n.querySelector(`.${jt}-cancel`)), a ? a.click() : ((s = n.parentNode) == null || s.removeChild(n), pr(document.body, ar)), !0
}
}
function lQ(t, e) {
const n = {};
let s = 0;
for (const o in t) {
const r = t[o],
i = e[s++],
c = r.read(i),
l = r.validate(c);
if (l) return uQ(i, l), null;
n[o] = r.clean(c)
}
return n
}
function uQ(t, e) {
const n = t.parentNode;
if (!n) return;
const s = n.appendChild(document.createElement("div"));
s.style.left = `${t.offsetLeft+t.offsetWidth+2}px`, s.style.top = `${t.offsetTop-5}px`, s.className = "ProseMirror-invalid", s.textContent = e, setTimeout(() => n.removeChild(s), 1500)
}
function pQ(t, e) {
const n = t.selection.$from;
for (let s = n.depth; s >= 0; s--) {
const a = n.index(s);
if (n.node(s).canReplaceWith(a, a, e)) return !0
}
return !1
}
const ll = {
Enter: 13,
Backspace: 8,
Tab: 9,
Shift: 16,
Ctrl: 17,
Alt: 18,
Pause: 19,
CapsLock: 20,
Esc: 27,
Space: 32,
PageUp: 63276,
PageDown: 63277,
End: 63275,
Home: 63273,
Left: 63234,
Up: 63232,
Right: 63235,
Down: 63233,
PrintScrn: 44,
Insert: 63302,
Delete: 63272,
";": 186,
"=": 187,
Mod: 93,
"*": 106,
"-": 189,
".": 190,
"/": 191,
",": 188,
"`": 192,
"[": 219,
"\\": 220,
"]": 221,
"'": 222
};
function dQ(t) {
return ll[t] ? ll[t] : t.toUpperCase().charCodeAt(0)
}
function mQ(t, e) {
const n = e.split(/-(?!'?$)/),
s = n.indexOf("Mod") !== -1,
a = n.indexOf("Cmd") !== -1,
o = n.indexOf("Ctrl") !== -1,
r = n.indexOf("Shift") !== -1,
i = n.indexOf("Alt") !== -1,
c = n[n.length - 1],
l = dQ(c),
u = Df(),
d = new CustomEvent("keydown", {
bubbles: !0,
cancelable: !0
});
d.key = c.replace(/Space/g, " "), d.shiftKey = r, d.altKey = i, d.ctrlKey = o || !u && s, d.metaKey = a || u && s, d.keyCode = l, d.which = l, d.view = window, t.dispatchEvent(d)
}
const De = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAY4AAAB0BAMAAABgVMiEAAAAMFBMVEX////7+/vt7e3o6Ojm5ubn5+fu7u709PTs7Oz39/f19fX29vby8vLx8fHz8/Pw8PCxY+A8AAAAoklEQVR4AWJgVHYZ+sBIgEE0vXzog7JAhrZZq4Y+WJnB4A5o5w5oAAYBGAi6mcKpQgIaClhCBklz7+AM/Gjo5+Dg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODgeO7g4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4OD4Zse3dmVXfIST0/B1vh0UtMKbNF7rAAAAAElFTkSuQmCC";
function fQ(t, e) {
let n = null,
s = [],
a = [];
return (...o) => new Promise((r, i) => {
n !== null && window.clearTimeout(n), n = window.setTimeout(() => {
t(...o).then(c => {
s.forEach(l => l(c)), s = []
}).catch(c => {
a.forEach(l => l(c)), a = []
})
}, e), s.push(r), a.push(i)
})
}
const hQ = ({
node: t,
editor: e,
deleteNode: n,
updateAttributes: s,
getPos: a
}) => {
const o = t.attrs,
r = P(S({}, o), {
isEditor: !!e
});
return p(wt, {
className: "digestPostEmbed",
"data-drag-handle": ""
}, p(yu, S({}, P(S({}, r), {
isEditor: !0,
editor: e,
updateAttributes: s,
deleteNode: n,
getPos: a
}))))
},
Gs = "digest-post-embed",
cd = {
attrs: {
nodeId: {
default: null
},
caption: {
default: null
},
size: {
default: null
},
isEditorNode: {
default: !1
},
title: {
default: null
},
publishedBylines: {
default: null
},
post_date: {
default: null
},
cover_image: {
default: null
},
cover_image_alt: {
default: null
},
canonical_url: {
default: null
},
section_name: {
default: null
},
id: {
default: null
},
type: {
default: null
},
reaction_count: {
default: null
},
comment_count: {
default: null
},
publication_name: {
default: null
},
publication_logo_url: {
default: null
},
belowTheFold: {
default: !1
}
},
group: "block",
draggable: !0,
atom: !0,
selectable: !0,
isolating: !0,
defining: !0,
editable: !1,
parseDOM: [{
tag: `.${Gs}`,
getAttrs: t => {
try {
const e = JSON.parse(t.getAttribute("data-attrs"));
return P(S({}, e), {
nodeId: ka()
})
} catch (e) {
return !1
}
}
}],
toDOM: t => {
if (typeof window != "undefined" && t.attrs.isEditorNode) try {
const e = document.createElement("div");
return e.className = Gs, e.setAttribute("data-attrs", JSON.stringify(t.attrs)), Fe(p(yu, P(S({}, t.attrs), {
caption: t.attrs.caption,
size: t.attrs.size || void 0,
isEditor: !0
})), e), e
} catch (e) {
return console.error("Error rendering DigestPostEmbedWeb", e), Oe({
msg: null,
node: t,
err: e,
group: "block"
})
}
return bQ(t)
},
toDOMStatic: t => ["div", {
class: Gs,
"data-attrs": JSON.stringify(S({
isEmail: !0
}, t.attrs))
}]
},
gQ = F({
name: "digestPostEmbed",
nodeSpec: cd,
addNodeView() {
return kt(hQ)
},
addCommands() {
return {
convertDigestPostEmbedToLinkV2: ({
pos: t,
url: e
}) => ({
dispatch: n,
state: s,
chain: a
}) => {
if (n) {
const o = s.tr,
r = t,
i = r + e.length;
return a().setNodeSelection(t).deleteSelection().command(({
tr: c
}) => (c.insertText(e, r), !0)).command(({
tr: c
}) => (c.addMark(r, i + 1, s.schema.marks.link.create({
text: e,
href: e
})), !0)).setTextSelection(Ee.create(o.doc, r, i + 1)).scrollIntoView().focus(i + 2).run()
}
return !0
},
convertDigestPostEmbedToEmbeddedPostV2: ({
pos: t,
attrs: e
}) => ({
dispatch: n,
chain: s
}) => {
if (n) {
const a = {
id: e.id,
url: e.url,
title: e.title,
publication_name: e.publication_name,
publication_logo_url: e.publication_logo_url,
date: e.post_date,
comment_count: e.comment_count,
bylines: e.publishedBylines
};
return s().setNodeSelection(t).deleteCurrentNode().insertContent({
type: "embeddedPost",
attrs: a
}).run()
}
return !0
}
}
}
}),
bQ = t => ["div", {
class: Gs,
"data-attrs": JSON.stringify(t.attrs)
}],
Yr = (t, {
customSchema: e
} = {}) => {
var a, o, r, i;
if (e && !e.nodes.digestPostEmbed) return null;
const n = lt(t);
if (!n) return null;
const s = $l({
url: t,
currentSubdomain: (o = (a = window._preloads) == null ? void 0 : a.pub) == null ? void 0 : o.subdomain,
currentCustomDomain: (i = (r = window._preloads) == null ? void 0 : r.pub) == null ? void 0 : i.custom_domain
});
return n && (n.pathname.startsWith("/p/") || Ul(n)) && s ? t : null
},
ld = t => N(void 0, null, function*() {
const e = yield he.get("/api/v1/posts/digest_embed").query({
url: t.trim()
}), {
pub: n,
post: s
} = e.body, d = s, {
truncated_body_text: a
} = d, o = st(d, ["truncated_body_text"]), {
name: r,
logo_url: i
} = n, l = na(o, ["title", "publishedBylines", "post_date", "cover_image", "cover_image_alt", "canonical_url", "section_name", "id", "type", "reaction_count", "comment_count"]);
return P(S({
caption: a != null ? a : "",
size: "lg",
isEditor: !0
}, l), {
publishedBylines: l.publishedBylines.map(m => na(m, ["id", "name", "bio", "photo_url", "is_guest", "bestseller_tier", "primaryPublicationSubscribeUrl", "primaryPublicationUrl", "primaryPublicationName", "primaryPublicationId"])),
publication_name: r,
publication_logo_url: i != null ? i : ""
})
}),
vQ = `<svg width="19" height="19" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M3 18V12C3 9.61305 3.94821 7.32387 5.63604 5.63604C7.32387 3.94821 9.61305 3 12 3C14.3869 3 16.6761 3.94821 18.364 5.63604C20.0518 7.32387 21 9.61305 21 12V18"
stroke-linecap="round"
stroke-linejoin="round"
/>
<path
d="M21 19C21 19.5304 20.7893 20.0391 20.4142 20.4142C20.0391 20.7893 19.5304 21 19 21H18C17.4696 21 16.9609 20.7893 16.5858 20.4142C16.2107 20.0391 16 19.5304 16 19V16C16 15.4696 16.2107 14.9609 16.5858 14.5858C16.9609 14.2107 17.4696 14 18 14H21V19ZM3 19C3 19.5304 3.21071 20.0391 3.58579 20.4142C3.96086 20.7893 4.46957 21 5 21H6C6.53043 21 7.03914 20.7893 7.41421 20.4142C7.78929 20.0391 8 19.5304 8 19V16C8 15.4696 7.78929 14.9609 7.41421 14.5858C7.03914 14.2107 6.53043 14 6 14H3V19Z"
stroke-linecap="round"
stroke-linejoin="round"
/>
</svg>`,
xQ = `<svg width="32" height="32" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path
className="inner-triangle"
d="M10 8L16 12L10 16V8Z"
stroke-width="1.5"
stroke-linecap="round"
stroke-linejoin="round"
/>
</svg>`,
ud = {
attrs: {
id: {
default: null
},
url: {
default: null
},
publication_id: {
default: null
},
publication_name: {
default: null
},
publication_logo_url: {
default: null
},
title: {
default: null
},
truncated_body_text: {
default: null
},
date: {
default: null
},
like_count: {
default: null
},
comment_count: {
default: null
},
bylines: {
default: null
},
utm_campaign: {
default: null
},
belowTheFold: {
default: !1
},
type: {
default: null
},
language: {
default: "en"
}
},
untrackedAttrs: ["truncated_body_text", "bylines"],
inline: !1,
group: "block",
draggable: !0,
atom: !0,
selectable: !0,
isolating: !0,
defining: !0,
parseDOM: [{
tag: "div.embedded-post-wrap",
getAttrs: re
}],
toDOM: t => {
const {
publication_logo_url: e,
publication_name: n,
title: s,
truncated_body_text: a,
url: o,
bylines: r,
date: i,
like_count: c,
comment_count: l,
utm_campaign: u,
id: d,
type: m,
language: f
} = t.attrs, {
iString: h
} = I18N.i(f), g = yt(o, {
utm_source: qe.substack,
utm_campaign: u || Ut.postEmbed,
utm_medium: Kn.web
});
g === "" && console.error(`Invalid path (${o}) for post: ${d}`);
const b = document.createElement("div");
b.classList.add("embedded-post-title-icon"), b.innerHTML = vQ;
const x = document.createElement("div");
return x.classList.add("embedded-post-cta-icon"), x.innerHTML = xQ, ["div", {
class: "embedded-post-wrap",
"data-attrs": JSON.stringify(t.attrs),
"data-component-name": "EmbeddedPostToDOM"
},
["a", {
class: "embedded-post",
native: !0,
href: g
},
["div", {
class: "embedded-post-header"
}, e ? ["img", {
class: "embedded-post-publication-logo",
src: q(e, 56),
loading: t.attrs.belowTheFold ? "lazy" : null
}] : ["span", {}],
["span", {
class: "embedded-post-publication-name"
}, n || h("Failed to embed post")]
],
["div", {
class: "embedded-post-title-wrapper"
}, ...m === "podcast" ? [b] : [],
["div", {
class: "embedded-post-title"
}, s || h("Failed to embed post")]
], ...a ? [
["div", {
class: "embedded-post-body"
}, Oi(a)]
] : [],
["div", {
class: "embedded-post-cta-wrapper"
}, ...m === "podcast" ? [x] : [],
["span", {
class: "embedded-post-cta"
}, h(m === "podcast" ? "Listen now" : "Read more")]
],
["div", {
class: "embedded-post-meta"
}, Li({
date: i,
bylines: r,
like_count: c,
comment_count: l,
language: f
})]
]
]
},
toDOMStatic: t => {
const {
publication_logo_url: e,
publication_name: n,
title: s,
truncated_body_text: a,
url: o,
bylines: r,
date: i,
like_count: c,
comment_count: l,
utm_campaign: u,
type: d,
language: m
} = t.attrs, {
iString: f
} = I18N.i(m), h = yt(o, {
utm_source: qe.substack,
utm_campaign: u || Ut.postEmbed,
utm_medium: Kn.email
}), g = q("/img/podcast-headphones.svg", 19, {
format: "png"
}), b = q("/img/audio-player-play.png", 12);
return ["div", {
class: "embedded-post-wrap",
"data-component-name": "EmbeddedPostToDOMStatic"
},
["div", {
class: "embedded-post"
},
["div", {
class: "embedded-post-header"
}, e ? ["img", {
class: "embedded-post-publication-logo",
src: q(e, 56),
width: 28,
height: 28
}] : ["span", {}],
["span", {
class: "embedded-post-publication-name"
}, n || f("Failed to embed post")]
],
["div", {
class: "embedded-post-title-wrapper"
}, ...d === "podcast" ? [
["img", {
class: "embedded-post-title-icon embedded-post-title-icon-static",
src: g
}]
] : [],
["a", {
class: "embedded-post-title",
href: h || "#"
}, s || f("Failed to embed post")]
], ...a ? [
["div", {
class: "embedded-post-body"
}, Oi(a)]
] : [
["br"],
["br"]
],
["div", {
class: "embedded-post-cta-wrapper"
}, ...d === "podcast" ? [
["img", {
width: 12,
height: 12,
class: "embedded-post-cta-icon-static",
src: b
}]
] : [],
["a", {
class: "embedded-post-cta",
href: h || "#"
}, f(d === "podcast" ? "Listen now" : "Read more")]
],
["div", {
class: "embedded-post-meta"
}, Li({
date: i,
bylines: r,
like_count: c,
comment_count: l,
language: m
})]
]
]
}
},
yQ = F({
name: "embeddedPost",
nodeSpec: ud,
addCommands() {
return {
insertEmbeddedPost: t => ({
commands: e
}) => e.insertContent({
type: this.name,
attrs: t
})
}
}
}),
pd = (t, {
customSchema: e,
forceAllowOwnPub: n = !1
} = {}) => {
var r, i, c, l;
if (e && !e.nodes.embeddedPost) return null;
const s = lt(t);
if (!s) return null;
const o = $l({
url: t,
currentSubdomain: (i = (r = window._preloads) == null ? void 0 : r.pub) == null ? void 0 : i.subdomain,
currentCustomDomain: (l = (c = window._preloads) == null ? void 0 : c.pub) == null ? void 0 : l.custom_domain
}) && !n;
return s && (s.pathname.startsWith("/p/") || Ul(s)) && !o ? t : null
},
wQ = t => N(void 0, null, function*() {
const e = (yield Z(() =>
import ("./sortBy-53166f8e.js").then(n => n.c), ["assets/sortBy-53166f8e.js", "assets/x-933ea65f.js", "assets/tracking-5779d19a.js", "assets/_sentry-release-injection-file-9254565a.js", "assets/FlexBox-8b7f0d6c.js", "assets/FlexBox-644f665d.css", "assets/HoverCard-92fb7948.js", "assets/useResponsive-4f80f3bd.js", "assets/transition-d7aff1cb.js", "assets/_defineProperty-fcca2d9e.js", "assets/react-laag.esm-23de3db0.js", "assets/HoverCard-6364507e.css", "assets/responsive_img-3c51e57a.js", "assets/responsive_img-51b02764.css", "assets/sortBy-a6711bc6.css"])).default;
try {
return (yield e.get("/api/v1/posts/embed").query({
url: t.trim()
})).body
} catch (n) {
return null
}
}),
dd = (s, ...a) => N(void 0, [s, ...a], function*(t, {
customSchema: e,
language: n = "en"
} = {}) {
const r = (e ? {
schema: e
} : yield Z(() => Promise.resolve().then(() => Te), void 0)).schema,
i = yield wQ(t);
return i ? r.nodes.embeddedPost.create(P(S({}, i), {
language: n
})) : null
}),
Eo = t => t ? {
style: `background-color: ${t}`
} : {},
fa = {
attrs: {
id: {
default: null
},
name: {
default: ""
},
logo_url: {
default: null
},
base_url: {
default: null
},
hero_text: {
default: null
},
author_name: {
default: null
},
show_subscribe: {
default: !0
},
logo_bg_color: {
default: null
},
language: {
default: "en"
}
},
inline: !1,
group: "block",
draggable: !0,
atom: !0,
selectable: !0,
isolating: !0,
defining: !0,
parseDOM: [{
tag: "div.embedded-publication-wrap",
getAttrs: re
}],
toDOMWithSubscribe: t => {
const {
name: e,
logo_url: n,
base_url: s,
hero_text: a,
author_name: o,
logo_bg_color: r,
language: i
} = t.attrs, {
iString: c,
iTemplate: l
} = I18N.i(i);
return ["div", {
class: "embedded-publication-wrap",
"data-attrs": JSON.stringify(t.attrs),
"data-component-name": "EmbeddedPublicationToDOMWithSubscribe"
},
["div", {
class: "embedded-publication show-subscribe"
},
["a", {
class: "embedded-publication-link-part",
native: !0,
href: yt(s, {
utm_source: qe.substack,
utm_campaign: Ut.publicationEmbed,
utm_medium: Kn.web
})
}, ...n ? [
["img", S({
class: "embedded-publication-logo",
src: q(n),
width: 56,
height: 56
}, Eo(r))]
] : [],
["h3", {
class: "embedded-publication-name"
}, e || c("Failed to embed publication")], ...a ? [
["div", {
class: "embedded-publication-hero-text"
}, a]
] : [], ...o && !e.includes(o) ? [
["div", {
class: "embedded-publication-author-name"
}, l `By ${o}`]
] : []
],
["form", {
class: "embedded-publication-subscribe",
method: "GET",
action: If({
base_url: s
}, {
addBase: !0
})
},
["input", {
type: "hidden",
name: "source",
value: "publication-embed"
}],
["input", {
type: "hidden",
name: "autoSubmit",
value: "true"
}],
["input", {
type: "email",
class: "email-input",
name: "email",
placeholder: c("Type your email...")
}],
["input", {
type: "submit",
class: "button primary",
value: c("Subscribe")
}]
]
]
]
},
toDOMWithoutSubscribe: t => {
const {
name: e,
logo_url: n,
base_url: s,
hero_text: a,
author_name: o,
logo_bg_color: r,
language: i
} = t.attrs, {
iString: c,
iTemplate: l
} = I18N.i(i);
return ["div", {
class: "embedded-publication-wrap",
"data-attrs": JSON.stringify(t.attrs)
},
["a", {
class: "embedded-publication embedded-publication-flex",
native: !0,
href: yt(s, {
utm_source: qe.substack,
utm_campaign: Ut.publicationEmbed,
utm_medium: Kn.web
})
}, ...n ? [
["div", {
class: "embedded-publication-left"
},
["img", S({
class: "embedded-publication-logo",
src: q(n),
width: 40,
height: 40
}, Eo(r))]
]
] : [],
["div", {
class: "embedded-publication-right"
},
["h3", {
class: "embedded-publication-name"
}, e || c("Failed to embed publication")], ...a ? [
["div", {
class: "embedded-publication-hero-text"
}, a]
] : [], ...o && !e.includes(o) ? [
["div", {
class: "embedded-publication-author-name"
}, l `By ${o}`]
] : []
]
]
]
},
toDOMStatic: t => {
const {
name: e,
logo_url: n,
base_url: s,
hero_text: a,
author_name: o,
logo_bg_color: r
} = t.attrs, i = yt(s, {
utm_source: qe.substack,
utm_campaign: Ut.publicationEmbed,
utm_medium: Kn.email
});
return ["div", {
class: "embedded-publication-wrap",
"data-attrs": JSON.stringify(t.attrs),
"data-component-name": "EmbeddedPublicationToDOMStatic"
},
["table", {
class: "embedded-publication"
},
["tr", {}, ...n ? [
["td", {
class: "embedded-publication-left",
valign: "top",
width: 56
},
["img", S({
class: "embedded-publication-logo",
src: q(n),
width: 40,
height: 40
}, Eo(r))]
]
] : [],
["td", {
class: "embedded-publication-right"
},
["h3", {
class: "embedded-publication-name"
},
["a", {
href: i
}, e || "Failed to embed publication"]
], ...a ? [
["div", {
class: "embedded-publication-hero-text"
},
["a", {
href: i
}, a]
]
] : [], ...o && !e.includes(o) ? [
["div", {
class: "embedded-publication-author-name"
},
["a", {
href: i
}, `By ${o}`]
]
] : []
]
]
]
]
},
toDOM: t => t.attrs.show_subscribe ? fa.toDOMWithSubscribe(t) : fa.toDOMWithoutSubscribe(t)
},
kQ = F({
name: "embeddedPublication",
nodeSpec: fa,
addCommands() {
return {
insertEmbeddedPublication: t => ({
commands: e
}) => e.insertContent({
type: this.name,
attrs: t
})
}
}
}),
md = (t, {
customSchema: e
} = {}) => {
if (e && !e.nodes.embeddedPublication) return null;
const n = lt(t);
return n && (!n.pathname || n.pathname === "/") ? t : null
},
fd = t => N(void 0, null, function*() {
const e = (yield Z(() =>
import ("./sortBy-53166f8e.js").then(n => n.c), ["assets/sortBy-53166f8e.js", "assets/x-933ea65f.js", "assets/tracking-5779d19a.js", "assets/_sentry-release-injection-file-9254565a.js", "assets/FlexBox-8b7f0d6c.js", "assets/FlexBox-644f665d.css", "assets/HoverCard-92fb7948.js", "assets/useResponsive-4f80f3bd.js", "assets/transition-d7aff1cb.js", "assets/_defineProperty-fcca2d9e.js", "assets/react-laag.esm-23de3db0.js", "assets/HoverCard-6364507e.css", "assets/responsive_img-3c51e57a.js", "assets/responsive_img-51b02764.css", "assets/sortBy-a6711bc6.css"])).default;
try {
const n = yield e.get("/api/v1/publication/embed").query({
url: t.trim()
});
return n.body.id ? n.body : null
} catch (n) {
return null
}
}),
_Q = t => N(void 0, null, function*() {
const e = yield fd(t);
return e ? P(S({}, e), {
show_subscribe: !0
}) : null
}),
hd = (n, ...s) => N(void 0, [n, ...s], function*(t, {
customSchema: e
} = {}) {
const o = (e ? {
schema: e
} : yield Z(() => Promise.resolve().then(() => Te), void 0)).schema,
r = yield _Q(t);
return r ? o.nodes.embeddedPublication.create(r) : null
}),
gd = {
attrs: {
collection: {
default: ""
},
collection_slug: {
default: ""
},
creator: {
default: ""
},
description: {
default: ""
},
image_url: {
default: ""
},
name: {
default: ""
},
animation_url: {
default: ""
},
nft_logo_url: {
default: ""
},
permalink: {
default: ""
},
youtube_url: {
default: null
},
belowTheFold: {
default: !1
}
},
inline: !1,
group: "block",
draggable: !0,
atom: !0,
selectable: !0,
isolating: !0,
defining: !0,
parseDOM: [{
tag: "div.opensea",
getAttrs: re
}],
toDOMStatic: TQ,
toDOM: DQ
},
CQ = F({
name: "opensea",
nodeSpec: gd,
addCommands() {
return {
insertOpensea: t => ({
commands: e
}) => e.insertContent({
type: this.name,
attrs: t
})
}
}
}),
EQ = t => {
var e, n, s;
return (s = (n = (e = lt(t)) == null ? void 0 : e.pathname.match(/assets\/(ethereum\/)?(.+)/)) == null ? void 0 : n[2]) == null ? void 0 : s.split("/")[0]
},
AQ = t => {
var e, n, s;
return (s = (n = (e = lt(t)) == null ? void 0 : e.pathname.match(/assets\/(ethereum\/)?(.+)/)) == null ? void 0 : n[2]) == null ? void 0 : s.split("/")[1]
},
SQ = t => N(void 0, null, function*() {
return (yield he.get("/api/v1/opensea").query({
contract: EQ(t),
token_id: AQ(t)
})).body
}),
bd = (n, s) => N(void 0, [n, s], function*(t, {
customSchema: e
}) {
return e.nodes.opensea.create(yield SQ(t))
});
function TQ(t) {
const e = document.createElement("div");
e.className = "opensea static", e.setAttribute("data-component-name", "OpenseaToDOMStatic");
const n = document.createElement("table");
n.className = "opensea-header-table";
const s = document.createElement("tr");
s.className = "opensea-header-row";
const a = document.createElement("tr"),
o = document.createElement("td"),
r = document.createElement("a");
r.className = "opensea-title", t.attrs.permalink && r.setAttribute("href", t.attrs.permalink), r.textContent = t.attrs.name, o.appendChild(r), a.appendChild(r);
const i = document.createElement("tr"),
c = document.createElement("td"),
l = document.createElement("a");
l.className = "opensea-collection", t.attrs.collection_slug && l.setAttribute("href", `https://opensea.io/collection/${t.attrs.collection_slug}`), l.textContent = it(t.attrs.collection, 50), c.appendChild(l), i.appendChild(c);
const u = document.createElement("td"),
d = document.createElement("table");
u.className = "opensea-masthead", d.appendChild(a), d.appendChild(i), u.appendChild(d);
const m = document.createElement("td");
m.className = "nft-logo";
const f = document.createElement("a"),
h = document.createElement("img");
t.attrs.nft_logo_url && h.setAttribute("src", q(t.attrs.nft_logo_url)), t.attrs.permalink && f.setAttribute("href", t.attrs.permalink), t.attrs.belowTheFold && f.setAttribute("loading", "lazy"), f.appendChild(h), m.appendChild(f), s.appendChild(u), s.appendChild(m), n.appendChild(s);
const g = document.createElement("a");
t.attrs.permalink && g.setAttribute("href", t.attrs.permalink);
const b = document.createElement("img");
b.className = "opensea-image", t.attrs.image_url && b.setAttribute("src", q(t.attrs.image_url, 600, {
crop: "fill"
})), b.setAttribute("alt", t.attrs.name), b.setAttribute("width", "500"), t.attrs.belowTheFold && b.setAttribute("loading", "lazy"), g.appendChild(b);
const x = document.createElement("table");
x.className = "opensea-footer-table";
const v = document.createElement("tr"),
w = document.createElement("td");
w.className = "opensea-description", w.textContent = it(t.attrs.description, 200), v.appendChild(w);
const E = document.createElement("tr"),
_ = document.createElement("td"),
k = document.createElement("a");
_.className = "opensea-creator", t.attrs.creator && k.setAttribute("href", `https://opensea.io/${t.attrs.creator}?tab=created`), k.textContent = `Created by ${it(t.attrs.creator,50)}`, _.appendChild(k), E.appendChild(_);
const M = document.createElement("tr"),
y = document.createElement("td"),
T = document.createElement("a"),
D = document.createElement("table"),
C = document.createElement("tr"),
L = document.createElement("td");
return T.className = "opensea-cta-link", t.attrs.permalink && T.setAttribute("href", t.attrs.permalink), D.setAttribute("cellspacing", "16"), D.className = "opensea-cta-table", L.className = "opensea-cta", L.textContent = "View on OpenSea", C.appendChild(L), D.appendChild(C), T.appendChild(D), y.appendChild(T), M.appendChild(y), t.attrs.description && x.appendChild(v), x.appendChild(E), x.appendChild(M), e.appendChild(n), e.appendChild(g), e.appendChild(x), e.querySelectorAll && Array.prototype.forEach.call(e.querySelectorAll("a"), R => {
R.target = "_blank"
}), e
}
function DQ(t) {
const e = document.createElement("div");
e.className = "opensea", e.setAttribute("data-component-name", "OpenseaToDOM");
const n = document.createElement("a");
n.className = "opensea-title", t.attrs.permalink && n.setAttribute("href", t.attrs.permalink), n.textContent = t.attrs.name;
const s = document.createElement("a");
s.className = "opensea-collection", t.attrs.collection_slug && s.setAttribute("href", `https://opensea.io/collection/${t.attrs.collection_slug}`), s.textContent = it(t.attrs.collection, 50);
const a = document.createElement("div");
a.className = "opensea-masthead", a.appendChild(n), a.appendChild(s);
const o = document.createElement("a");
t.attrs.permalink && o.setAttribute("href", t.attrs.permalink);
const r = document.createElement("img");
t.attrs.nft_logo_url && r.setAttribute("src", q(t.attrs.nft_logo_url)), t.attrs.belowTheFold && r.setAttribute("loading", "lazy"), o.appendChild(r);
const i = document.createElement("div");
i.className = "opensea-header", i.appendChild(a), i.appendChild(o);
const c = document.createElement("a");
t.attrs.permalink && c.setAttribute("href", t.attrs.permalink), c.className = "opensea-media-link";
let l, u;
const d = ["gltf", "glb", "webm", "mp4", "m4v", "ogv", "ogg"],
f = ["mp3", "wav", "oga"].some(k => {
var M;
return (M = t.attrs.animation_url) == null ? void 0 : M.endsWith(k)
}),
h = d.some(k => {
var M;
return (M = t.attrs.animation_url) == null ? void 0 : M.endsWith(k)
}),
g = !t.attrs.animation_url,
b = t.attrs.animation_url && !f && !h;
(g || f || b || t.attrs.youtube_url) && (u = document.createElement("img"), u.className = "opensea-image", t.attrs.image_url && u.setAttribute("src", q(t.attrs.image_url, 600, {
crop: "fill"
})), t.attrs.belowTheFold && u.setAttribute("loading", "lazy"), u.setAttribute("alt", t.attrs.name), c.appendChild(u)), (f || h) && (l = document.createElement(f ? "audio" : "video"), l.className = "opensea-player", l.setAttribute("controls", !0), l.setAttribute("loop", !0), l.setAttribute("src", t.attrs.animation_url), l.setAttribute("alt", "OpenSea NFT media"), t.attrs.belowTheFold && l.setAttribute("loading", "lazy")), u && c.appendChild(u), l && c.appendChild(l);
const v = document.createElement("div");
v.className = "opensea-description", v.textContent = it(t.attrs.description, 200);
const w = document.createElement("a");
w.className = "opensea-creator", t.attrs.creator && w.setAttribute("href", `https://opensea.io/${t.attrs.creator}?tab=created`), w.textContent = `Created by ${it(t.attrs.creator,50)}`;
const E = document.createElement("a");
E.className = "opensea-cta", t.attrs.permalink && E.setAttribute("href", t.attrs.permalink), E.textContent = "View on OpenSea";
const _ = document.createElement("div");
return _.className = "opensea-footer", t.attrs.description && _.appendChild(v), _.appendChild(w), _.appendChild(E), e.appendChild(i), e.appendChild(c), e.appendChild(_), e.querySelectorAll && Array.prototype.forEach.call(e.querySelectorAll("a"), k => {
k.target = "_blank"
}), e
}
const IQ = /^https:\/\/opensea.io\/assets\/.+/,
vd = t => {
const e = IQ.exec(t);
return e && e[0]
},
xd = t => vd(t) !== null,
Kr = new Set,
NQ = wr((t, e, n) => {
const s = e.trim();
fd(s).then(a => {
a && (Kr.add(s), e === t.target.value && n.classList.add("has-substack-link"))
})
}, 250, {
maxWait: 1e3
});
function MQ(t, e) {
if ("target" in t && t.target && "className" in t.target && t.target.className === "url-input" && "value" in t.target) {
const {
value: n
} = t.target, s = n.trim();
if (Kr.has(s) || pd(s) || Yr(s)) {
e.classList.add("has-substack-link");
return
}
if (xd(s)) {
e.classList.add("has-opensea-link");
return
}
md(s) && NQ(t, n, e), e.classList.remove("has-substack-link"), e.classList.remove("has-opensea-link")
}
}
function OQ(t, {
scrollParent: e,
publication: n,
language: s
} = {}) {
const {
iString: a,
iTemplate: o
} = I18N.i(s != null ? s : "en"), r = o `Link ${Vl()}K`;
return new ad({
class: "mark-menu-item",
title: r,
icon: HZ,
active(i) {
return !!(er(i, [i.schema.nodes.image2, i.schema.nodes.image3]) ? da(i) : Qo(i, t)) || cQ(i, t)
},
enable() {
return !0
},
run(i, c, l) {
const u = Qo(i, t);
let d, m, f, h;
u ? (d = u.pos, m = u, f = Wp(i, u.pos.from, u.pos.to, {
allowedMarks: [t]
}), h = u.node.textContent) : (d = i.selection, m = bZ(i, t), f = vZ(i, {
allowedMarks: [t]
}), h = i.doc.textBetween(i.selection.from, i.selection.to));
const g = er(i, [i.schema.nodes.captionedImage, i.schema.nodes.image2, i.schema.nodes.image3, i.schema.nodes.caption].filter(Boolean)),
b = g ? da(i) : null;
f = f && !g;
const x = l.dom.parentNode,
v = {
className: "create-link-menu",
submitText: a("Link"),
parent: r,
title: a("Create a link"),
fields: {},
root: x,
scrollParent: e,
position: (C, L) => Yp(l, d, C, L),
onInput: MQ,
language: s
};
f && v.fields && (v.fields.text = new Va({
label: a("Enter text…"),
className: "text-input",
value: h,
required: !0
})), v.fields && (v.fields.href = new iQ(m, b, s)), v.onSubmit = C => {
const L = i.tr;
if (g) Jp(i, L, C.href);
else if (i.selection.empty && !u) {
const R = i.selection.from,
A = R + C.text.length;
L.insertText(C.text), L.addMark(R, A, t.create(C)), L.setSelection(Ee.create(L.doc, R, A))
} else C.text && C.text !== h ? (L.insertText(C.text, d.from), L.setSelection(Ee.create(L.doc, d.from, d.from + C.text.length)), L.deleteRange(d.from + C.text.length, d.to + C.text.length), L.addMark(d.from, d.from + C.text.length, t.create(C))) : L.addMark(d.from, d.to, t.create(C));
if (c) return l.dispatch(L), !0
}, v.onClose = () => {
l.focus()
};
const w = C => N(this, null, function*() {
C.preventDefault();
const L = document.querySelector(".create-link-menu .url-input");
if (!L) {
console.warn("could not find input for creating link menu selecting for ['.create-link-menu .url-input']");
return
}
const A = L.value.trim();
let I;
Jr(v);
const O = Ye.add(l, d.pos, De);
try {
if (se(ae.EMBED_URL_ATTEMPTED, {
url: A,
source: "link-menu"
}), xd(A)) I = yield bd(A, {
customSchema: l.state.schema
});
else if (Kr.has(A)) I = yield hd(A);
else if (Yr(A)) try {
const B = yield ld(A);
I = l.state.schema.nodes.digestPostEmbed.create(P(S({}, B), {
isEditorNode: !0,
nodeId: ka()
}))
} catch (B) {
console.error(B), alert(a("Failed to find post. Please check the link and try again."))
} else I = yield dd(A, {
customSchema: l.state.schema,
language: n == null ? void 0 : n.language
});
if (se(ae.EMBED_URL_SUCCEEDED, {
url: A,
source: "link-menu"
}), I) Ye.replace(l, O, I);
else throw Ye.remove(l, O), Error("No embed found")
} catch (B) {
se(ae.EMBED_URL_FAILED, {
url: A,
source: "link-menu"
}), alert(a("Embed failed. Please check the url and try again."))
}
}),
E = document.createElement("div");
E.className = "create-link-menu-footer";
const _ = new DocumentFragment;
_.append(document.createTextNode(o `There’s a fancier way to share Substack links with your readers:`));
const k = document.createElement("a");
k.innerText = o `Convert your link into an embed`, k.href = "#", k.addEventListener("click", w), _.append(k), E.append(_), v.footer = E;
const M = document.createElement("div");
M.className = "opensea-embed-footer";
const y = new DocumentFragment,
T = document.createElement("b");
T.textContent = "Tip: ", y.append(T), y.append(document.createTextNode("You can also "));
const D = document.createElement("a");
D.innerText = "embed your OpenSea NFT", D.href = "#", D.addEventListener("click", w), y.append(D), y.append(document.createTextNode(" to give your readers a visual preview.")), M.append(y), v.openseaEmbedFooter = M, ma(v)
}
}, "link")
}
const ul = typeof navigator != "undefined" ? /Mac/.test(navigator.platform) : !1,
LQ = (t, e) => {
const n = ["preformatted_text_block", "code_block", "codeBlock", "latex_block"],
{
$anchor: s
} = t.selection,
{
parent: a
} = s;
if (!a || !n.includes(a.type.name)) return !1;
if (!a.textContent.length && e) {
const {
tr: o
} = t;
return e(o.delete(o.selection.from - 1, o.selection.to + 1)), !0
}
return !1
};
function RQ(t) {
const e = {};
let n;
function s(a, o) {
const r = e[a];
r ? e[a] = function(i, c) {
return r(i, c) || o(i, c)
} : e[a] = o
}
if (s("Mod-z", jh), s("Shift-Mod-z", Ui), s("Backspace", RZ), s("Backspace", LQ), ul || s("Mod-y", Ui), s("Alt-ArrowUp", dh), s("Alt-ArrowDown", mh), s("Mod-BracketLeft", fh), s("Mod-k", yd(t)), (n = t.marks.strong || t.marks.bold) && (s("Mod-b", St(n)), s("Mod-B", St(n))), (n = t.marks.em || t.marks.italic) && (s("Mod-i", St(n)), s("Mod-I", St(n))), (n = t.marks.strikethrough || t.marks.strike) && (s("Shift-Mod-x", St(n)), s("Shift-Mod-X", St(n))), (n = t.marks.code) && s("Mod-`", St(n)), (n = t.nodes.blockquote) && s("Ctrl->", hh(n)), (n = t.marks.superscript) && s("Mod-.", St(n)), (n = t.marks.subscript) && s("Mod->", St(n)), n = t.nodes.hard_break || t.nodes.hardBreak) {
const a = n,
o = eo(vh, (r, i) => (i && i(r.tr.replaceSelectionWith(a.create()).scrollIntoView()), !0));
s("Mod-Enter", o), s("Shift-Enter", o), ul && s("Ctrl-Enter", o)
}
if ((n = t.nodes.list_item || t.nodes.listItem) && (s("Enter", gh(n)), s("Shift-Tab", eo(xh(n), () => !0)), s("Tab", eo(yh(n), () => !0))), n = t.nodes.heading)
for (let a = 1; a <= 6; a++) s(`Shift-Ctrl-${a}`, bh(n, {
level: a
}));
return e
}
const yd = t => (e, n, s) => {
var a, o;
return n && OQ(t.marks.link, {
scrollParent: ".editor-scroll",
language: typeof window != "undefined" ? (o = (a = window == null ? void 0 : window._preloads) == null ? void 0 : a.publication) == null ? void 0 : o.language : null
}).spec.run(e, n, s), !0
},
Ha = (t, e, n, s, {
targetUrl: a
} = {}) => {
let o = ["td", {
class: "audio-details",
"data-component-name": "AudioEmbedStatic"
},
["p", {
class: "title"
}, e],
["p", {
class: "subtitle"
}, n]
];
s && (o = [...o, ["p", {
class: "metadata"
}, s]]);
const r = ["table", {
class: "audio-embed-static",
cellspacing: "12",
"data-component-name": "AudioEmbedStaticTable"
},
["tr", {},
["td", {
class: "thumbnail-container"
},
["div", {
class: "play-container"
},
["img", {
class: "play",
src: q("/img/thumbnail-play.png", 72),
height: 36,
width: 36
}]
],
["img", {
class: "thumbnail",
src: q(t, 160),
height: 80,
width: 80
}]
], o
]
];
return a ? ["a", {
class: "audio-embed-static-outer",
href: a,
target: "_blank",
"data-component-name": "AudioEmbedStaticLink"
}, r] : r
},
PQ = t => {
const {
url: e,
isEpisode: n
} = t.attrs;
return ["div", {
class: "apple-podcast-container",
"data-component-name": "ApplePodcastToDom"
},
["iframe", {
class: `apple-podcast ${n?"":"episode-list"}`,
"data-attrs": JSON.stringify(t.attrs),
src: e,
frameborder: "0",
allow: "autoplay *; encrypted-media *;",
allowfullscreen: "true"
}]
]
},
BQ = t => {
const {
imageUrl: e,
isEpisode: n,
podcastTitle: s,
podcastByline: a,
duration: o,
numEpisodes: r,
targetUrl: i
} = t.attrs;
let c = t.attrs.title,
l = s,
u = Hl(o / 1e3);
return n || (c = s, l = a, u = Nf(r, "episode", {
zero_fallback: "No episodes"
})), Ha(e, c, l, u, {
targetUrl: i
})
},
wd = {
attrs: {
url: {
default: ""
},
isEpisode: {
default: !1
},
imageUrl: {
default: ""
},
title: {
default: ""
},
podcastTitle: {
default: ""
},
podcastByline: {
default: ""
},
duration: {
default: ""
},
numEpisodes: {
default: ""
},
targetUrl: {
default: ""
},
releaseDate: {
default: ""
}
},
inline: !1,
group: "block",
draggable: !0,
atom: !0,
selectable: !0,
isolating: !0,
defining: !0,
parseDom: [{
tag: "iframe.apple-podcast",
getAttrs: re
}],
toDOM: PQ,
toDOMStatic: BQ
},
zQ = /[<iframe]?.*[src="]?(https?:\/\/(embed\.)?podcasts\.apple\.com\/([^/]+)?\/?podcast\/([^/]+)\/?(id\d+)\??(i=(\d+))?)[\S]*/,
kd = t => {
const e = zQ.exec(t);
return e ? {
match: e[0],
embedLink: e[2],
countryCode: e[3],
slug: e[4],
podcastId: e[5].substr(2),
episodeId: e[7]
} : {
match: !1
}
},
qQ = F({
name: "applePodcast",
nodeSpec: wd,
addCommands() {
return {
insertApplePodcast: t => ({
commands: e
}) => e.insertContent({
type: this.name,
attrs: t
})
}
}
}),
FQ = (t, {
customSchema: e
} = {}) => e && !e.nodes.applePodcast ? null : kd(t).match || null,
jQ = t => N(void 0, null, function*() {
const e = kd(t),
{
slug: n,
podcastId: s,
episodeId: a,
countryCode: o
} = e,
i = (yield he.get("/api/v1/apple_podcast").query({
slug: n,
podcastId: s,
episodeId: a,
country: o
})).body;
return S({
url: UQ(e),
isEpisode: !!e.episodeId
}, i)
}),
$Q = (n, ...s) => N(void 0, [n, ...s], function*(t, {
customSchema: e
} = {}) {
return (e ? {
schema: e
} : yield Z(() => Promise.resolve().then(() => Te), void 0)).schema.nodes.applePodcast.create(yield jQ(t))
}),
UQ = ({
countryCode: t,
slug: e,
podcastId: n,
episodeId: s
}) => {
const a = t || "us",
o = s ? `?i=${s}` : "",
r = encodeURIComponent(e || "");
return `https://embed.podcasts.apple.com/${a}/podcast/${r}/id${n}${o}`
},
VQ = "_container_1ctwc_1",
HQ = "_icon_1ctwc_6",
Ao = {
container: VQ,
icon: HQ
},
_d = ({}) => {
const t = p(X.B4, {
translated: !0
}, "This may be a temporary error, please refresh the page to try again.");
return p(wt, null, p(Y, {
alignItems: "center",
justifyContent: "center",
className: Ao.container
}, p(Eb, {
className: Ao.icon
}), p(ne, {
alignItems: "center",
gap: 4
}, p(X.Meta, {
translated: !0,
color: "pub-accent"
}, "Image not found"), p(Ug, {
content: t
}, p(Cb, {
size: 12,
className: Ao.icon
})))))
},
pl = "image-asset-error",
Cd = {
attrs: {
url: {
default: ""
}
},
group: "block",
defining: !0,
parseDOM: [{
tag: `div.${pl}`,
getAttrs: re
}],
toDOM: t => {
if (typeof window != "undefined") try {
t.attrs.isEditor = !0;
const e = document.createElement("div");
return e.className = pl, e.setAttribute("data-attrs", JSON.stringify(t.attrs)), Fe(p(_d, {
node: S({}, t)
}), e), e
} catch (e) {
return console.error("Error rendering ImageAssetError", e), Oe({
msg: null,
node: t,
err: e,
group: "block"
})
}
return ["div", {
"data-attrs": JSON.stringify(S({}, t.attrs)),
"data-component-name": "AssetErrorToDOM"
},
[
["picture"],
["img", {
src: Gl,
height: Mf,
width: Of
}]
]
]
},
toDOMStatic: t => ["div", {
"data-attrs": JSON.stringify(S({}, t.attrs)),
"data-component-name": "AssetErrorToDOMStatic"
}]
},
GQ = F({
name: "assetError",
nodeSpec: Cd,
addNodeView() {
return kt(_d)
}
}),
WQ = ({
node: t
}) => p(wt, null, p(wu, {
label: t.attrs.label,
src: `/api/v1/audio/upload/${t.attrs.mediaUploadId}/src`,
duration: t.attrs.duration
})),
Ed = {
attrs: {
label: {
default: null
},
mediaUploadId: {
default: null
},
duration: {
default: null
},
isEditorNode: {
default: !1
}
},
group: "block",
draggable: !0,
atom: !0,
selectable: !0,
isolating: !0,
defining: !0,
parseDOM: [{
tag: "div.native-audio-embed",
getAttrs: re
}],
toDOM: t => {
if (typeof window != "undefined" && t.attrs.isEditorNode) try {
const e = document.createElement("div");
return e.className = "native-audio-embed", e.setAttribute("data-attrs", JSON.stringify(t.attrs)), Fe(p(wu, {
label: t.attrs.label,
src: `/api/v1/audio/upload/${t.attrs.mediaUploadId}/src`,
duration: t.attrs.duration
}), e), e
} catch (e) {
return console.error("Error rendering AudioEmbedPlayer", e), Oe({
msg: null,
node: t,
err: e,
group: "block"
})
}
return dl(t)
},
toDOMStatic: t => dl(t)
},
JQ = F({
name: "audio",
nodeSpec: Ed,
addNodeView: () => kt(WQ),
addCommands() {
return {
insertAudio: t => ({
commands: e
}) => e.insertContent({
type: this.name,
attrs: P(S({}, t), {
isEditorNode: !0
})
})
}
}
}),
dl = t => ["div", {
class: "native-audio-embed",
"data-component-name": "AudioPlaceholder",
"data-attrs": JSON.stringify(t.attrs)
}],
YQ = t => ["div", {
class: "native-audio-url-embed",
"data-attrs": JSON.stringify(t.attrs),
"data-component-name": "AudioUrlPlaceholder"
}],
Ad = {
attrs: {
label: {
default: null
},
url: {
default: null
},
duration: {
default: null
}
},
group: "block",
draggable: !0,
atom: !0,
selectable: !0,
isolating: !0,
defining: !0,
parseDOM: [{
tag: "div.native-audio-url-embed",
getAttrs: re
}],
toDOM: YQ
},
KQ = F({
name: "audioUrl",
nodeSpec: Ad
}),
Sd = {
attrs: {
request_id: {
default: null
},
url: {
default: null
},
src: {
default: null
},
type: {
default: null
}
},
untrackedAttrs: ["src"],
inline: !1,
group: "block",
draggable: !0,
atom: !0,
selectable: !0,
isolating: !0,
defining: !0,
parseDOM: [{
tag: "a.augmentation-placeholder",
getAttrs: re
}],
toDOM: t => ["a", {
class: "augmentation-placeholder image-link",
"data-attrs": JSON.stringify(t.attrs),
href: "javascript:void(0)",
"data-component-name": "AugmentationPlaceholderToDOM"
},
["img", {
src: t.attrs.src || Fl
}]
]
},
XQ = F({
name: "augmentation_placeholder",
nodeSpec: Sd,
addCommands() {
return {
insertLoadingPlaceholder: (t, e) => ({
commands: n
}) => e ? n.insertContentAt(e, {
type: this.name,
attrs: t
}) : n.insertContent({
type: this.name,
attrs: t
})
}
}
}),
ZQ = t => ["div", {
class: `bandcamp-wrap${t.attrs.is_album?" album":""}`,
"data-attrs": JSON.stringify(t.attrs),
"data-component-name": "BandcampToDOM"
},
["iframe", {
src: t.attrs.embed_url,
frameborder: "0",
gesture: "media",
scrolling: "no",
allowfullscreen: "true"
}]
],
QQ = t => {
const {
thumbnail_url: e,
author: n,
title: s,
description: a,
url: o
} = t.attrs;
return Ha(e, s, (n || "").toString(), a, {
targetUrl: o
})
},
Td = {
attrs: {
url: {
default: ""
},
title: {
default: ""
},
description: {
default: ""
},
thumbnail_url: {
default: ""
},
author: {
default: ""
},
embed_url: {
default: ""
},
is_album: {
default: ""
}
},
inline: !1,
group: "block",
draggable: !0,
atom: !0,
selectable: !0,
isolating: !0,
defining: !0,
parseDOM: [{
tag: "div.bandcamp-wrap",
getAttrs: re
}],
toDOM: ZQ,
toDOMStatic: QQ
},
eee = F({
name: "bandcamp",
nodeSpec: Td,
addCommands() {
return {
insertBandcamp: t => ({
commands: e
}) => e.insertContent({
type: this.name,
attrs: t
})
}
}
}),
Dd = /^.*(https?\:\/\/(\S+)?.bandcamp.com\/(...+)\/[^\/]+(\/[^\/]+)?(\?[\#]*)?(\#.*)?).*$/,
tee = t => {
const e = Dd.exec(t);
return e && e[1]
},
nee = t => {
const e = Dd.exec(t);
return !!e && e[3] === "album"
},
see = t => N(void 0, null, function*() {
const e = nee(t),
n = (yield Z(() =>
import ("./sortBy-53166f8e.js").then(r => r.c), ["assets/sortBy-53166f8e.js", "assets/x-933ea65f.js", "assets/tracking-5779d19a.js", "assets/_sentry-release-injection-file-9254565a.js", "assets/FlexBox-8b7f0d6c.js", "assets/FlexBox-644f665d.css", "assets/HoverCard-92fb7948.js", "assets/useResponsive-4f80f3bd.js", "assets/transition-d7aff1cb.js", "assets/_defineProperty-fcca2d9e.js", "assets/react-laag.esm-23de3db0.js", "assets/HoverCard-6364507e.css", "assets/responsive_img-3c51e57a.js", "assets/responsive_img-51b02764.css", "assets/sortBy-a6711bc6.css"])).default,
s = dr(t).theme === "dark" ? "dark" : "light",
o = (yield n.get("/api/v1/bandcamp").query({
url: t.trim(),
is_album: e,
theme: s
})).body;
return P(S({}, o), {
is_album: e
})
}),
aee = (n, ...s) => N(void 0, [n, ...s], function*(t, {
customSchema: e
} = {}) {
return (e ? {
schema: e
} : yield Z(() => Promise.resolve().then(() => Te), void 0)).schema.nodes.bandcamp.create(yield see(t))
}),
Xr = {
content: "block+",
group: "block",
parseDOM: [{
tag: "blockquote"
}, {
tag: "p",
priority: 100,
getAttrs: t => !t.style.marginLeft || t.style.marginLeft.startsWith("0") ? !1 : {}
}],
toDOM: () => ["blockquote", 0]
},
oee = kr.extend({
parseHTML() {
return Xr.parseDOM
},
addCommands() {
return {
setBlockquote: () => ({
state: t,
commands: e
}) => !gt(t, "paragraph") || gt(t, "pullquote") ? !1 : e.wrapIn(this.name),
toggleBlockquote: () => ({
state: t,
commands: e
}) => !gt(t, "paragraph") || gt(t, "pullquote") ? !1 : e.toggleWrap(this.name),
unsetBlockquote: () => ({
commands: t
}) => t.lift(this.name)
}
}
}),
Id = {
attrs: {
url: {
default: null
},
text: {
default: null
},
action: {
default: null
},
class: {
default: null
}
},
inline: !1,
atom: !0,
group: "block",
draggable: !0,
selectable: !0,
isolating: !0,
defining: !0,
parseDOM: [{
tag: "p.button-wrapper[data-attrs]",
priority: 100,
getAttrs: re
}],
toDOM: t => Zr(t)
},
ree = F({
name: "button",
nodeSpec: Id,
addCommands() {
return {
insertSubscribeButton: t => ({
commands: e
}) => {
const n = {
url: ce.CHECKOUT_URL,
text: _n(t, {
now: !0
})
};
return e.insertContent({
type: this.name,
attrs: n
})
},
insertCustomButtonEditorV2: t => ({
commands: e
}) => e.insertContent({
type: this.name,
attrs: t
}),
insertSubscribeButtonWithPreamble: t => ({
commands: e,
editor: n
}) => {
const {
iTemplate: s
} = I18N.i({
pub: t
}), a = t.payments_state !== "enabled" ? s `Thanks for reading ${t.name}! Subscribe for free to receive new posts and support my work.` : s `${t.name} is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.`, o = {
url: ce.CHECKOUT_URL,
text: _n(t),
language: t.language
};
return e.insertContent({
type: "subscribeWidget",
attrs: o,
content: [n.schema.nodes.ctaCaption.create(null, [n.schema.text(a)]).toJSON()]
})
},
insertCaptionedShareButton: t => ({
commands: e,
editor: n
}) => {
const {
iString: s,
iTemplate: a
} = I18N.i({
pub: t
}), o = a `Thank you for reading ${t.name}. This post is public so feel free to share it.`, r = {
url: ce.SHARE_URL,
text: s("Share")
};
return e.insertContent({
type: "captionedShareButton",
attrs: r,
content: [n.state.schema.nodes.ctaCaption.create(null, [n.state.schema.text(o)]).toJSON()]
})
},
insertSharePostButton: t => ({
commands: e
}) => {
const {
iString: n
} = I18N.i({
pub: t
}), s = {
url: ce.SHARE_URL,
text: n("Share")
};
return e.insertContent({
type: this.name,
attrs: s
})
},
insertSharePubButton: t => ({
commands: e
}) => {
const {
iTemplate: n
} = I18N.i({
pub: t
}), s = {
url: ce.SHARE_PUB_URL,
text: n `Share ${t.name}`
};
return e.insertContent({
type: this.name,
attrs: s
})
},
insertCommentsButton: t => ({
commands: e
}) => {
const {
iString: n
} = I18N.i({
pub: t
}), s = {
url: ce.HALF_MAGIC_COMMENTS_URL,
text: n("Leave a comment")
};
return e.insertContent({
type: this.name,
attrs: s
})
},
insertGiftButton: t => ({
commands: e
}) => {
const {
iTemplate: n
} = I18N.i({
pub: t
}), s = {
url: `${ce.CHECKOUT_URL}&gift=true`,
text: Cn(t, () => n `Give a gift subscription`, a => `Give a gift ${a.subscription}`)
};
return e.insertContent({
type: this.name,
attrs: s
})
},
insertDonateButton: t => ({
commands: e
}) => {
const {
iString: n
} = I18N.i({
pub: t
}), s = {
url: `${ce.CHECKOUT_URL}&donate=true`,
text: n("Donate Subscriptions")
};
return e.insertContent({
type: this.name,
attrs: s
})
},
insertSurveyButton: (t, e, n) => ({
commands: s
}) => {
se(ae.READER_SURVEY_LINKED_IN_POST, {
editorVersion: "2",
surveyId: e.id
});
const a = {
url: `${Wl(t,e.id)}`,
text: n
};
return s.insertContent({
type: this.name,
attrs: a
})
},
insertGroupSubscriptionButton: ({
publication: t
}) => ({
commands: e
}) => {
const {
iTemplate: n
} = I18N.i({
pub: t
}), s = t.default_group_coupon, a = {
url: `${ce.CHECKOUT_URL}group=true${s?`&coupon=${s}`:""}`,
text: Cn(t, () => s && t.default_group_coupon_percent_off ? n `Get ${t.default_group_coupon_percent_off.split(".")[0]}% off a group subscription` : n `Get a group subscription`, o => s && t.default_group_coupon_percent_off ? `Get ${t.default_group_coupon_percent_off.split(".")[0]}% off a group ${o.subscription}` : `Get a group ${o.subscription}`)
};
return e.insertContent({
type: this.name,
attrs: a
})
},
insertCoupon: (t, e, n = {}) => ({
commands: s
}) => {
const a = {
url: yt(`${t.base_url}/subscribe`, P(S({
coupon: e.id
}, e.group_only && {
group: !0
}), {
utm_content: n.postId
})),
text: `Get ${Jl(e)}`
};
return s.insertContent({
type: this.name,
attrs: a
})
},
insertReferralButton: t => ({
commands: e
}) => {
const {
iString: n
} = I18N.i({
pub: t
}), s = {
url: `${ce.LEADERBOARD_URL}&utm_source=${qe.post}`,
text: n("Refer a friend")
};
return e.insertContent({
type: this.name,
attrs: s
})
},
insertCaptionedWriterReferralButtonV2: ({
writerReferralCode: t,
publication: e,
postId: n
}) => ({
commands: s,
state: a,
dispatch: o
}) => {
if (!Le(a, a.schema.nodes.button)) return !1;
const {
iString: r,
iTemplate: i
} = I18N.i({
pub: e
}), c = i `Start writing today. Use the button below to create your Substack and connect your publication with ${e.name}`, l = {
url: `${Yl(t||"")}?utm_source=${qe.substack}&utm_context=${Kl.post}&utm_content=${n}&utm_campaign=${Ut.writerReferralButton}`,
text: r("Start a Substack")
}, u = a.schema.nodes.captionedWriterReferralButton.create(l, a.schema.nodes.ctaCaption.create(null, [a.schema.text(c)]));
return o ? s.insertContent(u.toJSON()) : !0
}
}
}
}),
Zr = t => {
const e = document.createElement("span");
e.textContent = t.attrs.text;
const n = document.createElement("a");
n.className = "button primary", t.attrs.class && (n.className += ` ${t.attrs.class}`), n.href = t.attrs.url, n.appendChild(e), n.addEventListener("click", a => {
/^.*%%.*%%/.test(n.href) && (a.preventDefault(), Lf(n.href))
});
const s = document.createElement("p");
return s.className = "button-wrapper", s.setAttribute("data-attrs", JSON.stringify(t.attrs)), s.setAttribute("data-component-name", "ButtonCreateButton"), s.appendChild(n), s
},
Nd = {
content: "text*",
group: "block",
selectable: !0,
defining: !0,
isolating: !0,
parseDOM: [{
tag: "figcaption"
}],
toDOM: () => ["figcaption", {
class: "image-caption"
}, 0]
},
iee = F({
name: "caption",
nodeSpec: Nd
}),
or = t => ({
content: "ctaCaption",
attrs: {
url: {
default: null
},
text: {
default: null
}
},
inline: !1,
group: "block",
draggable: !0,
atom: !1,
selectable: !0,
isolating: !0,
defining: !0,
parseDOM: [{
tag: "div.captioned-button-wrap",
getAttrs: re
}],
toDOM: e => {
const n = document.createElement("div");
n.className = "captioned-button-wrap", n.setAttribute("data-attrs", JSON.stringify(e.attrs)), n.setAttribute("data-component-name", "CaptionedButtonToDOM");
const s = document.createElement("div");
s.className = "preamble";
const a = Zr({
attrs: S(S({}, e.attrs), t)
});
return n.appendChild(s), n.appendChild(a), {
dom: n,
contentDOM: s
}
}
}),
Md = ({
substitutionAttrs: t,
name: e
}) => F({
name: e,
nodeSpec: or(t)
}),
cee = Md({
name: "captionedShareButton",
substitutionAttrs: {
url: ce.SHARE_URL
}
}),
lee = Md({
name: "captionedWriterReferralButton",
substitutionAttrs: {
hasDynamicSubstitutions: !1
}
}),
Od = {
content: "block caption*",
atom: !1,
selectable: !0,
isolating: !1,
defining: !0,
draggable: !0,
group: "block",
parseDOM: [{
tag: "figure"
}],
toDOM: () => ["div", {
class: "captioned-image-container"
},
["figure", 0]
],
toDOMStatic: () => ["div", {
class: "captioned-image-container-static"
},
["figure", 0]
]
},
uee = F({
name: "captionedImage",
nodeSpec: Od
}),
Ld = {
attrs: {
symbol: {
default: ""
}
},
atom: !0,
editable: !1,
selectable: !0,
isolating: !1,
defining: !0,
draggable: !1,
inline: !0,
group: "inline",
parseDOM: [{
tag: ".cashtag-wrap",
getAttrs: t => {
try {
return JSON.parse(t.getElementsByTagName("a")[0].getAttribute("data-attrs"))
} catch (e) {
return !1
}
}
}],
toDOM: t => {
if (typeof window != "undefined") try {
const e = document.createElement("span");
return e.className = "cashtag-wrap", Fe(p(Vh, {
symbol: t.attrs.symbol.trim()
}), e), e
} catch (e) {
return console.error("Error rendering Cashtag", e), Oe({
msg: null,
node: t,
err: e,
group: "inline"
})
}
return ["span", {
class: "cashtag-wrap",
"data-attrs": JSON.stringify(t.attrs),
"data-component-name": "CashtagToDOM"
}]
},
toDOMStatic: t => ["span", {
class: "cashtag-wrap",
"data-component-name": "CashtagToDOMStatic",
"data-attrs": JSON.stringify(P(S({}, t.attrs), {
prependSymbol: !0,
isStatic: !0
}))
}]
},
pee = F({
name: "cashtag",
nodeSpec: Ld
});
var Rd = {};
const dee = {
"application/1d-interleaved-parityfec": {
source: "iana"
},
"application/3gpdash-qoe-report+xml": {
source: "iana",
charset: "UTF-8",
compressible: !0
},
"application/3gpp-ims+xml": {
source: "iana",
compressible: !0
},
"application/3gpphal+json": {
source: "iana",
compressible: !0
},
"application/3gpphalforms+json": {
source: "iana",
compressible: !0
},
"application/a2l": {
source: "iana"
},
"application/ace+cbor": {
source: "iana"
},
"application/activemessage": {
source: "iana"
},
"application/activity+json": {
source: "iana",
compressible: !0
},
"application/alto-costmap+json": {
source: "iana",
compressible: !0
},
"application/alto-costmapfilter+json": {
source: "iana",
compressible: !0
},
"application/alto-directory+json": {
source: "iana",
compressible: !0
},
"application/alto-endpointcost+json": {
source: "iana",
compressible: !0
},
"application/alto-endpointcostparams+json": {
source: "iana",
compressible: !0
},
"application/alto-endpointprop+json": {
source: "iana",
compressible: !0
},
"application/alto-endpointpropparams+json": {
source: "iana",
compressible: !0
},
"application/alto-error+json": {
source: "iana",
compressible: !0
},
"application/alto-networkmap+json": {
source: "iana",
compressible: !0
},
"application/alto-networkmapfilter+json": {
source: "iana",
compressible: !0
},
"application/alto-updatestreamcontrol+json": {
source: "iana",
compressible: !0
},
"application/alto-updatestreamparams+json": {
source: "iana",
compressible: !0
},
"application/aml": {
source: "iana"
},
"application/andrew-inset": {
source: "iana",
extensions: ["ez"]
},
"application/applefile": {
source: "iana"
},
"application/applixware": {
source: "apache",
extensions: ["aw"]
},
"application/at+jwt": {
source: "iana"
},
"application/atf": {
source: "iana"
},
"application/atfx": {
source: "iana"
},
"application/atom+xml": {
source: "iana",
compressible: !0,
extensions: ["atom"]
},
"application/atomcat+xml": {
source: "iana",
compressible: !0,
extensions: ["atomcat"]
},
"application/atomdeleted+xml": {
source: "iana",
compressible: !0,
extensions: ["atomdeleted"]
},
"application/atomicmail": {
source: "iana"
},
"application/atomsvc+xml": {
source: "iana",
compressible: !0,
extensions: ["atomsvc"]
},
"application/atsc-dwd+xml": {
source: "iana",
compressible: !0,
extensions: ["dwd"]
},
"application/atsc-dynamic-event-message": {
source: "iana"
},
"application/atsc-held+xml": {
source: "iana",
compressible: !0,
extensions: ["held"]
},
"application/atsc-rdt+json": {
source: "iana",
compressible: !0
},
"application/atsc-rsat+xml": {
source: "iana",
compressible: !0,
extensions: ["rsat"]
},
"application/atxml": {
source: "iana"
},
"application/auth-policy+xml": {
source: "iana",
compressible: !0
},
"application/bacnet-xdd+zip": {
source: "iana",
compressible: !1
},
"application/batch-smtp": {
source: "iana"
},
"application/bdoc": {
compressible: !1,
extensions: ["bdoc"]
},
"application/beep+xml": {
source: "iana",
charset: "UTF-8",
compressible: !0
},
"application/calendar+json": {
source: "iana",
compressible: !0
},
"application/calendar+xml": {
source: "iana",
compressible: !0,
extensions: ["xcs"]
},
"application/call-completion": {
source: "iana"
},
"application/cals-1840": {
source: "iana"
},
"application/captive+json": {
source: "iana",
compressible: !0
},
"application/cbor": {
source: "iana"
},
"application/cbor-seq": {
source: "iana"
},
"application/cccex": {
source: "iana"
},
"application/ccmp+xml": {
source: "iana",
compressible: !0
},
"application/ccxml+xml": {
source: "iana",
compressible: !0,
extensions: ["ccxml"]
},
"application/cdfx+xml": {
source: "iana",
compressible: !0,
extensions: ["cdfx"]
},
"application/cdmi-capability": {
source: "iana",
extensions: ["cdmia"]
},
"application/cdmi-container": {
source: "iana",
extensions: ["cdmic"]
},
"application/cdmi-domain": {
source: "iana",
extensions: ["cdmid"]
},
"application/cdmi-object": {
source: "iana",
extensions: ["cdmio"]
},
"application/cdmi-queue": {
source: "iana",
extensions: ["cdmiq"]
},
"application/cdni": {
source: "iana"
},
"application/cea": {
source: "iana"
},
"application/cea-2018+xml": {
source: "iana",
compressible: !0
},
"application/cellml+xml": {
source: "iana",
compressible: !0
},
"application/cfw": {
source: "iana"
},
"application/city+json": {
source: "iana",
compressible: !0
},
"application/clr": {
source: "iana"
},
"application/clue+xml": {
source: "iana",
compressible: !0
},
"application/clue_info+xml": {
source: "iana",
compressible: !0
},
"application/cms": {
source: "iana"
},
"application/cnrp+xml": {
source: "iana",
compressible: !0
},
"application/coap-group+json": {
source: "iana",
compressible: !0
},
"application/coap-payload": {
source: "iana"
},
"application/commonground": {
source: "iana"
},
"application/conference-info+xml": {
source: "iana",
compressible: !0
},
"application/cose": {
source: "iana"
},
"application/cose-key": {
source: "iana"
},
"application/cose-key-set": {
source: "iana"
},
"application/cpl+xml": {
source: "iana",
compressible: !0,
extensions: ["cpl"]
},
"application/csrattrs": {
source: "iana"
},
"application/csta+xml": {
source: "iana",
compressible: !0
},
"application/cstadata+xml": {
source: "iana",
compressible: !0
},
"application/csvm+json": {
source: "iana",
compressible: !0
},
"application/cu-seeme": {
source: "apache",
extensions: ["cu"]
},
"application/cwt": {
source: "iana"
},
"application/cybercash": {
source: "iana"
},
"application/dart": {
compressible: !0
},
"application/dash+xml": {
source: "iana",
compressible: !0,
extensions: ["mpd"]
},
"application/dash-patch+xml": {
source: "iana",
compressible: !0,
extensions: ["mpp"]
},
"application/dashdelta": {
source: "iana"
},
"application/davmount+xml": {
source: "iana",
compressible: !0,
extensions: ["davmount"]
},
"application/dca-rft": {
source: "iana"
},
"application/dcd": {
source: "iana"
},
"application/dec-dx": {
source: "iana"
},
"application/dialog-info+xml": {
source: "iana",
compressible: !0
},
"application/dicom": {
source: "iana"
},
"application/dicom+json": {
source: "iana",
compressible: !0
},
"application/dicom+xml": {
source: "iana",
compressible: !0
},
"application/dii": {
source: "iana"
},
"application/dit": {
source: "iana"
},
"application/dns": {
source: "iana"
},
"application/dns+json": {
source: "iana",
compressible: !0
},
"application/dns-message": {
source: "iana"
},
"application/docbook+xml": {
source: "apache",
compressible: !0,
extensions: ["dbk"]
},
"application/dots+cbor": {
source: "iana"
},
"application/dskpp+xml": {
source: "iana",
compressible: !0
},
"application/dssc+der": {
source: "iana",
extensions: ["dssc"]
},
"application/dssc+xml": {
source: "iana",
compressible: !0,
extensions: ["xdssc"]
},
"application/dvcs": {
source: "iana"
},
"application/ecmascript": {
source: "iana",
compressible: !0,
extensions: ["es", "ecma"]
},
"application/edi-consent": {
source: "iana"
},
"application/edi-x12": {
source: "iana",
compressible: !1
},
"application/edifact": {
source: "iana",
compressible: !1
},
"application/efi": {
source: "iana"
},
"application/elm+json": {
source: "iana",
charset: "UTF-8",
compressible: !0
},
"application/elm+xml": {
source: "iana",
compressible: !0
},
"application/emergencycalldata.cap+xml": {
source: "iana",
charset: "UTF-8",
compressible: !0
},
"application/emergencycalldata.comment+xml": {
source: "iana",
compressible: !0
},
"application/emergencycalldata.control+xml": {
source: "iana",
compressible: !0
},
"application/emergencycalldata.deviceinfo+xml": {
source: "iana",
compressible: !0
},
"application/emergencycalldata.ecall.msd": {
source: "iana"
},
"application/emergencycalldata.providerinfo+xml": {
source: "iana",
compressible: !0
},
"application/emergencycalldata.serviceinfo+xml": {
source: "iana",
compressible: !0
},
"application/emergencycalldata.subscriberinfo+xml": {
source: "iana",
compressible: !0
},
"application/emergencycalldata.veds+xml": {
source: "iana",
compressible: !0
},
"application/emma+xml": {
source: "iana",
compressible: !0,
extensions: ["emma"]
},
"application/emotionml+xml": {
source: "iana",
compressible: !0,
extensions: ["emotionml"]
},
"application/encaprtp": {
source: "iana"
},
"application/epp+xml": {
source: "iana",
compressible: !0
},
"application/epub+zip": {
source: "iana",
compressible: !1,
extensions: ["epub"]
},
"application/eshop": {
source: "iana"
},
"application/exi": {
source: "iana",
extensions: ["exi"]
},
"application/expect-ct-report+json": {
source: "iana",
compressible: !0
},
"application/express": {
source: "iana",
extensions: ["exp"]
},
"application/fastinfoset": {
source: "iana"
},
"application/fastsoap": {
source: "iana"
},
"application/fdt+xml": {
source: "iana",
compressible: !0,
extensions: ["fdt"]
},
"application/fhir+json": {
source: "iana",
charset: "UTF-8",
compressible: !0
},
"application/fhir+xml": {
source: "iana",
charset: "UTF-8",
compressible: !0
},
"application/fido.trusted-apps+json": {
compressible: !0
},
"application/fits": {
source: "iana"
},
"application/flexfec": {
source: "iana"
},
"application/font-sfnt": {
source: "iana"
},
"application/font-tdpfr": {
source: "iana",
extensions: ["pfr"]
},
"application/font-woff": {
source: "iana",
compressible: !1
},
"application/framework-attributes+xml": {
source: "iana",
compressible: !0
},
"application/geo+json": {
source: "iana",
compressible: !0,
extensions: ["geojson"]
},
"application/geo+json-seq": {
source: "iana"
},
"application/geopackage+sqlite3": {
source: "iana"
},
"application/geoxacml+xml": {
source: "iana",
compressible: !0
},
"application/gltf-buffer": {
source: "iana"
},
"application/gml+xml": {
source: "iana",
compressible: !0,
extensions: ["gml"]
},
"application/gpx+xml": {
source: "apache",
compressible: !0,
extensions: ["gpx"]
},
"application/gxf": {
source: "apache",
extensions: ["gxf"]
},
"application/gzip": {
source: "iana",
compressible: !1,
extensions: ["gz"]
},
"application/h224": {
source: "iana"
},
"application/held+xml": {
source: "iana",
compressible: !0
},
"application/hjson": {
extensions: ["hjson"]
},
"application/http": {
source: "iana"
},
"application/hyperstudio": {
source: "iana",
extensions: ["stk"]
},
"application/ibe-key-request+xml": {
source: "iana",
compressible: !0
},
"application/ibe-pkg-reply+xml": {
source: "iana",
compressible: !0
},
"application/ibe-pp-data": {
source: "iana"
},
"application/iges": {
source: "iana"
},
"application/im-iscomposing+xml": {
source: "iana",
charset: "UTF-8",
compressible: !0
},
"application/index": {
source: "iana"
},
"application/index.cmd": {
source: "iana"
},
"application/index.obj": {
source: "iana"
},
"application/index.response": {
source: "iana"
},
"application/index.vnd": {
source: "iana"
},
"application/inkml+xml": {
source: "iana",
compressible: !0,
extensions: ["ink", "inkml"]
},
"application/iotp": {
source: "iana"
},
"application/ipfix": {
source: "iana",
extensions: ["ipfix"]
},
"application/ipp": {
source: "iana"
},
"application/isup": {
source: "iana"
},
"application/its+xml": {
source: "iana",
compressible: !0,
extensions: ["its"]
},
"application/java-archive": {
source: "apache",
compressible: !1,
extensions: ["jar", "war", "ear"]
},
"application/java-serialized-object": {
source: "apache",
compressible: !1,
extensions: ["ser"]
},
"application/java-vm": {
source: "apache",
compressible: !1,
extensions: ["class"]
},
"application/javascript": {
source: "iana",
charset: "UTF-8",
compressible: !0,
extensions: ["js", "mjs"]
},
"application/jf2feed+json": {
source: "iana",
compressible: !0
},
"application/jose": {
source: "iana"
},
"application/jose+json": {
source: "iana",
compressible: !0
},
"application/jrd+json": {
source: "iana",
compressible: !0
},
"application/jscalendar+json": {
source: "iana",
compressible: !0
},
"application/json": {
source: "iana",
charset: "UTF-8",
compressible: !0,
extensions: ["json", "map"]
},
"application/json-patch+json": {
source: "iana",
compressible: !0
},
"application/json-seq": {
source: "iana"
},
"application/json5": {
extensions: ["json5"]
},
"application/jsonml+json": {
source: "apache",
compressible: !0,
extensions: ["jsonml"]
},
"application/jwk+json": {
source: "iana",
compressible: !0
},
"application/jwk-set+json": {
source: "iana",
compressible: !0
},
"application/jwt": {
source: "iana"
},
"application/kpml-request+xml": {
source: "iana",
compressible: !0
},
"application/kpml-response+xml": {
source: "iana",
compressible: !0
},
"application/ld+json": {
source: "iana",
compressible: !0,
extensions: ["jsonld"]
},
"application/lgr+xml": {
source: "iana",
compressible: !0,
extensions: ["lgr"]
},
"application/link-format": {
source: "iana"
},
"application/load-control+xml": {
source: "iana",
compressible: !0
},
"application/lost+xml": {
source: "iana",
compressible: !0,
extensions: ["lostxml"]
},
"application/lostsync+xml": {
source: "iana",
compressible: !0
},
"application/lpf+zip": {
source: "iana",
compressible: !1
},
"application/lxf": {
source: "iana"
},
"application/mac-binhex40": {
source: "iana",
extensions: ["hqx"]
},
"application/mac-compactpro": {
source: "apache",
extensions: ["cpt"]
},
"application/macwriteii": {
source: "iana"
},
"application/mads+xml": {
source: "iana",
compressible: !0,
extensions: ["mads"]
},
"application/manifest+json": {
source: "iana",
charset: "UTF-8",
compressible: !0,
extensions: ["webmanifest"]
},
"application/marc": {
source: "iana",
extensions: ["mrc"]
},
"application/marcxml+xml": {
source: "iana",
compressible: !0,
extensions: ["mrcx"]
},
"application/mathematica": {
source: "iana",
extensions: ["ma", "nb", "mb"]
},
"application/mathml+xml": {
source: "iana",
compressible: !0,
extensions: ["mathml"]
},
"application/mathml-content+xml": {
source: "iana",
compressible: !0
},
"application/mathml-presentation+xml": {
source: "iana",
compressible: !0
},
"application/mbms-associated-procedure-description+xml": {
source: "iana",
compressible: !0
},
"application/mbms-deregister+xml": {
source: "iana",
compressible: !0
},
"application/mbms-envelope+xml": {
source: "iana",
compressible: !0
},
"application/mbms-msk+xml": {
source: "iana",
compressible: !0
},
"application/mbms-msk-response+xml": {
source: "iana",
compressible: !0
},
"application/mbms-protection-description+xml": {
source: "iana",
compressible: !0
},
"application/mbms-reception-report+xml": {
source: "iana",
compressible: !0
},
"application/mbms-register+xml": {
source: "iana",
compressible: !0
},
"application/mbms-register-response+xml": {
source: "iana",
compressible: !0
},
"application/mbms-schedule+xml": {
source: "iana",
compressible: !0
},
"application/mbms-user-service-description+xml": {
source: "iana",
compressible: !0
},
"application/mbox": {
source: "iana",
extensions: ["mbox"]
},
"application/media-policy-dataset+xml": {
source: "iana",
compressible: !0,
extensions: ["mpf"]
},
"application/media_control+xml": {
source: "iana",
compressible: !0
},
"application/mediaservercontrol+xml": {
source: "iana",
compressible: !0,
extensions: ["mscml"]
},
"application/merge-patch+json": {
source: "iana",
compressible: !0
},
"application/metalink+xml": {
source: "apache",
compressible: !0,
extensions: ["metalink"]
},
"application/metalink4+xml": {
source: "iana",
compressible: !0,
extensions: ["meta4"]
},
"application/mets+xml": {
source: "iana",
compressible: !0,
extensions: ["mets"]
},
"application/mf4": {
source: "iana"
},
"application/mikey": {
source: "iana"
},
"application/mipc": {
source: "iana"
},
"application/missing-blocks+cbor-seq": {
source: "iana"
},
"application/mmt-aei+xml": {
source: "iana",
compressible: !0,
extensions: ["maei"]
},
"application/mmt-usd+xml": {
source: "iana",
compressible: !0,
extensions: ["musd"]
},
"application/mods+xml": {
source: "iana",
compressible: !0,
extensions: ["mods"]
},
"application/moss-keys": {
source: "iana"
},
"application/moss-signature": {
source: "iana"
},
"application/mosskey-data": {
source: "iana"
},
"application/mosskey-request": {
source: "iana"
},
"application/mp21": {
source: "iana",
extensions: ["m21", "mp21"]
},
"application/mp4": {
source: "iana",
extensions: ["mp4s", "m4p"]
},
"application/mpeg4-generic": {
source: "iana"
},
"application/mpeg4-iod": {
source: "iana"
},
"application/mpeg4-iod-xmt": {
source: "iana"
},
"application/mrb-consumer+xml": {
source: "iana",
compressible: !0
},
"application/mrb-publish+xml": {
source: "iana",
compressible: !0
},
"application/msc-ivr+xml": {
source: "iana",
charset: "UTF-8",
compressible: !0
},
"application/msc-mixer+xml": {
source: "iana",
charset: "UTF-8",
compressible: !0
},
"application/msword": {
source: "iana",
compressible: !1,
extensions: ["doc", "dot"]
},
"application/mud+json": {
source: "iana",
compressible: !0
},
"application/multipart-core": {
source: "iana"
},
"application/mxf": {
source: "iana",
extensions: ["mxf"]
},
"application/n-quads": {
source: "iana",
extensions: ["nq"]
},
"application/n-triples": {
source: "iana",
extensions: ["nt"]
},
"application/nasdata": {
source: "iana"
},
"application/news-checkgroups": {
source: "iana",
charset: "US-ASCII"
},
"application/news-groupinfo": {
source: "iana",
charset: "US-ASCII"
},
"application/news-transmission": {
source: "iana"
},
"application/nlsml+xml": {
source: "iana",
compressible: !0
},
"application/node": {
source: "iana",
extensions: ["cjs"]
},
"application/nss": {
source: "iana"
},
"application/oauth-authz-req+jwt": {
source: "iana"
},
"application/oblivious-dns-message": {
source: "iana"
},
"application/ocsp-request": {
source: "iana"
},
"application/ocsp-response": {
source: "iana"
},
"application/octet-stream": {
source: "iana",
compressible: !1,
extensions: ["bin", "dms", "lrf", "mar", "so", "dist", "distz", "pkg", "bpk", "dump", "elc", "deploy", "exe", "dll", "deb", "dmg", "iso", "img", "msi", "msp", "msm", "buffer"]
},
"application/oda": {
source: "iana",
extensions: ["oda"]
},
"application/odm+xml": {
source: "iana",
compressible: !0
},
"application/odx": {
source: "iana"
},
"application/oebps-package+xml": {
source: "iana",
compressible: !0,
extensions: ["opf"]
},
"application/ogg": {
source: "iana",
compressible: !1,
extensions: ["ogx"]
},
"application/omdoc+xml": {
source: "apache",
compressible: !0,
extensions: ["omdoc"]
},
"application/onenote": {
source: "apache",
extensions: ["onetoc", "onetoc2", "onetmp", "onepkg"]
},
"application/opc-nodeset+xml": {
source: "iana",
compressible: !0
},
"application/oscore": {
source: "iana"
},
"application/oxps": {
source: "iana",
extensions: ["oxps"]
},
"application/p21": {
source: "iana"
},
"application/p21+zip": {
source: "iana",
compressible: !1
},
"application/p2p-overlay+xml": {
source: "iana",
compressible: !0,
extensions: ["relo"]
},
"application/parityfec": {
source: "iana"
},
"application/passport": {
source: "iana"
},
"application/patch-ops-error+xml": {
source: "iana",
compressible: !0,
extensions: ["xer"]
},
"application/pdf": {
source: "iana",
compressible: !1,
extensions: ["pdf"]
},
"application/pdx": {
source: "iana"
},
"application/pem-certificate-chain": {
source: "iana"
},
"application/pgp-encrypted": {
source: "iana",
compressible: !1,
extensions: ["pgp"]
},
"application/pgp-keys": {
source: "iana",
extensions: ["asc"]
},
"application/pgp-signature": {
source: "iana",
extensions: ["asc", "sig"]
},
"application/pics-rules": {
source: "apache",
extensions: ["prf"]
},
"application/pidf+xml": {
source: "iana",
charset: "UTF-8",
compressible: !0
},
"application/pidf-diff+xml": {
source: "iana",
charset: "UTF-8",
compressible: !0
},
"application/pkcs10": {
source: "iana",
extensions: ["p10"]
},
"application/pkcs12": {
source: "iana"
},
"application/pkcs7-mime": {
source: "iana",
extensions: ["p7m", "p7c"]
},
"application/pkcs7-signature": {
source: "iana",
extensions: ["p7s"]
},
"application/pkcs8": {
source: "iana",
extensions: ["p8"]
},
"application/pkcs8-encrypted": {
source: "iana"
},
"application/pkix-attr-cert": {
source: "iana",
extensions: ["ac"]
},
"application/pkix-cert": {
source: "iana",
extensions: ["cer"]
},
"application/pkix-crl": {
source: "iana",
extensions: ["crl"]
},
"application/pkix-pkipath": {
source: "iana",
extensions: ["pkipath"]
},
"application/pkixcmp": {
source: "iana",
extensions: ["pki"]
},
"application/pls+xml": {
source: "iana",
compressible: !0,
extensions: ["pls"]
},
"application/poc-settings+xml": {
source: "iana",
charset: "UTF-8",
compressible: !0
},
"application/postscript": {
source: "iana",
compressible: !0,
extensions: ["ai", "eps", "ps"]
},
"application/ppsp-tracker+json": {
source: "iana",
compressible: !0
},
"application/problem+json": {
source: "iana",
compressible: !0
},
"application/problem+xml": {
source: "iana",
compressible: !0
},
"application/provenance+xml": {
source: "iana",
compressible: !0,
extensions: ["provx"]
},
"application/prs.alvestrand.titrax-sheet": {
source: "iana"
},
"application/prs.cww": {
source: "iana",
extensions: ["cww"]
},
"application/prs.cyn": {
source: "iana",
charset: "7-BIT"
},
"application/prs.hpub+zip": {
source: "iana",
compressible: !1
},
"application/prs.nprend": {
source: "iana"
},
"application/prs.plucker": {
source: "iana"
},
"application/prs.rdf-xml-crypt": {
source: "iana"
},
"application/prs.xsf+xml": {
source: "iana",
compressible: !0
},
"application/pskc+xml": {
source: "iana",
compressible: !0,
extensions: ["pskcxml"]
},
"application/pvd+json": {
source: "iana",
compressible: !0
},
"application/qsig": {
source: "iana"
},
"application/raml+yaml": {
compressible: !0,
extensions: ["raml"]
},
"application/raptorfec": {
source: "iana"
},
"application/rdap+json": {
source: "iana",
compressible: !0
},
"application/rdf+xml": {
source: "iana",
compressible: !0,
extensions: ["rdf", "owl"]
},
"application/reginfo+xml": {
source: "iana",
compressible: !0,
extensions: ["rif"]
},
"application/relax-ng-compact-syntax": {
source: "iana",
extensions: ["rnc"]
},
"application/remote-printing": {
source: "iana"
},
"application/reputon+json": {
source: "iana",
compressible: !0
},
"application/resource-lists+xml": {
source: "iana",
compressible: !0,
extensions: ["rl"]
},
"application/resource-lists-diff+xml": {
source: "iana",
compressible: !0,
extensions: ["rld"]
},
"application/rfc+xml": {
source: "iana",
compressible: !0
},
"application/riscos": {
source: "iana"
},
"application/rlmi+xml": {
source: "iana",
compressible: !0
},
"application/rls-services+xml": {
source: "iana",
compressible: !0,
extensions: ["rs"]
},
"application/route-apd+xml": {
source: "iana",
compressible: !0,
extensions: ["rapd"]
},
"application/route-s-tsid+xml": {
source: "iana",
compressible: !0,
extensions: ["sls"]
},
"application/route-usd+xml": {
source: "iana",
compressible: !0,
extensions: ["rusd"]
},
"application/rpki-ghostbusters": {
source: "iana",
extensions: ["gbr"]
},
"application/rpki-manifest": {
source: "iana",
extensions: ["mft"]
},
"application/rpki-publication": {
source: "iana"
},
"application/rpki-roa": {
source: "iana",
extensions: ["roa"]
},
"application/rpki-updown": {
source: "iana"
},
"application/rsd+xml": {
source: "apache",
compressible: !0,
extensions: ["rsd"]
},
"application/rss+xml": {
source: "apache",
compressible: !0,
extensions: ["rss"]
},
"application/rtf": {
source: "iana",
compressible: !0,
extensions: ["rtf"]
},
"application/rtploopback": {
source: "iana"
},
"application/rtx": {
source: "iana"
},
"application/samlassertion+xml": {
source: "iana",
compressible: !0
},
"application/samlmetadata+xml": {
source: "iana",
compressible: !0
},
"application/sarif+json": {
source: "iana",
compressible: !0
},
"application/sarif-external-properties+json": {
source: "iana",
compressible: !0
},
"application/sbe": {
source: "iana"
},
"application/sbml+xml": {
source: "iana",
compressible: !0,
extensions: ["sbml"]
},
"application/scaip+xml": {
source: "iana",
compressible: !0
},
"application/scim+json": {
source: "iana",
compressible: !0
},
"application/scvp-cv-request": {
source: "iana",
extensions: ["scq"]
},
"application/scvp-cv-response": {
source: "iana",
extensions: ["scs"]
},
"application/scvp-vp-request": {
source: "iana",
extensions: ["spq"]
},
"application/scvp-vp-response": {
source: "iana",
extensions: ["spp"]
},
"application/sdp": {
source: "iana",
extensions: ["sdp"]
},
"application/secevent+jwt": {
source: "iana"
},
"application/senml+cbor": {
source: "iana"
},
"application/senml+json": {
source: "iana",
compressible: !0
},
"application/senml+xml": {
source: "iana",
compressible: !0,
extensions: ["senmlx"]
},
"application/senml-etch+cbor": {
source: "iana"
},
"application/senml-etch+json": {
source: "iana",
compressible: !0
},
"application/senml-exi": {
source: "iana"
},
"application/sensml+cbor": {
source: "iana"
},
"application/sensml+json": {
source: "iana",
compressible: !0
},
"application/sensml+xml": {
source: "iana",
compressible: !0,
extensions: ["sensmlx"]
},
"application/sensml-exi": {
source: "iana"
},
"application/sep+xml": {
source: "iana",
compressible: !0
},
"application/sep-exi": {
source: "iana"
},
"application/session-info": {
source: "iana"
},
"application/set-payment": {
source: "iana"
},
"application/set-payment-initiation": {
source: "iana",
extensions: ["setpay"]
},
"application/set-registration": {
source: "iana"
},
"application/set-registration-initiation": {
source: "iana",
extensions: ["setreg"]
},
"application/sgml": {
source: "iana"
},
"application/sgml-open-catalog": {
source: "iana"
},
"application/shf+xml": {
source: "iana",
compressible: !0,
extensions: ["shf"]
},
"application/sieve": {
source: "iana",
extensions: ["siv", "sieve"]
},
"application/simple-filter+xml": {
source: "iana",
compressible: !0
},
"application/simple-message-summary": {
source: "iana"
},
"application/simplesymbolcontainer": {
source: "iana"
},
"application/sipc": {
source: "iana"
},
"application/slate": {
source: "iana"
},
"application/smil": {
source: "iana"
},
"application/smil+xml": {
source: "iana",
compressible: !0,
extensions: ["smi", "smil"]
},
"application/smpte336m": {
source: "iana"
},
"application/soap+fastinfoset": {
source: "iana"
},
"application/soap+xml": {
source: "iana",
compressible: !0
},
"application/sparql-query": {
source: "iana",
extensions: ["rq"]
},
"application/sparql-results+xml": {
source: "iana",
compressible: !0,
extensions: ["srx"]
},
"application/spdx+json": {
source: "iana",
compressible: !0
},
"application/spirits-event+xml": {
source: "iana",
compressible: !0
},
"application/sql": {
source: "iana"
},
"application/srgs": {
source: "iana",
extensions: ["gram"]
},
"application/srgs+xml": {
source: "iana",
compressible: !0,
extensions: ["grxml"]
},
"application/sru+xml": {
source: "iana",
compressible: !0,
extensions: ["sru"]
},
"application/ssdl+xml": {
source: "apache",
compressible: !0,
extensions: ["ssdl"]
},
"application/ssml+xml": {
source: "iana",
compressible: !0,
extensions: ["ssml"]
},
"application/stix+json": {
source: "iana",
compressible: !0
},
"application/swid+xml": {
source: "iana",
compressible: !0,
extensions: ["swidtag"]
},
"application/tamp-apex-update": {
source: "iana"
},
"application/tamp-apex-update-confirm": {
source: "iana"
},
"application/tamp-community-update": {
source: "iana"
},
"application/tamp-community-update-confirm": {
source: "iana"
},
"application/tamp-error": {
source: "iana"
},
"application/tamp-sequence-adjust": {
source: "iana"
},
"application/tamp-sequence-adjust-confirm": {
source: "iana"
},
"application/tamp-status-query": {
source: "iana"
},
"application/tamp-status-response": {
source: "iana"
},
"application/tamp-update": {
source: "iana"
},
"application/tamp-update-confirm": {
source: "iana"
},
"application/tar": {
compressible: !0
},
"application/taxii+json": {
source: "iana",
compressible: !0
},
"application/td+json": {
source: "iana",
compressible: !0
},
"application/tei+xml": {
source: "iana",
compressible: !0,
extensions: ["tei", "teicorpus"]
},
"application/tetra_isi": {
source: "iana"
},
"application/thraud+xml": {
source: "iana",
compressible: !0,
extensions: ["tfi"]
},
"application/timestamp-query": {
source: "iana"
},
"application/timestamp-reply": {
source: "iana"
},
"application/timestamped-data": {
source: "iana",
extensions: ["tsd"]
},
"application/tlsrpt+gzip": {
source: "iana"
},
"application/tlsrpt+json": {
source: "iana",
compressible: !0
},
"application/tnauthlist": {
source: "iana"
},
"application/token-introspection+jwt": {
source: "iana"
},
"application/toml": {
compressible: !0,
extensions: ["toml"]
},
"application/trickle-ice-sdpfrag": {
source: "iana"
},
"application/trig": {
source: "iana",
extensions: ["trig"]
},
"application/ttml+xml": {
source: "iana",
compressible: !0,
extensions: ["ttml"]
},
"application/tve-trigger": {
source: "iana"
},
"application/tzif": {
source: "iana"
},
"application/tzif-leap": {
source: "iana"
},
"application/ubjson": {
compressible: !1,
extensions: ["ubj"]
},
"application/ulpfec": {
source: "iana"
},
"application/urc-grpsheet+xml": {
source: "iana",
compressible: !0
},
"application/urc-ressheet+xml": {
source: "iana",
compressible: !0,
extensions: ["rsheet"]
},
"application/urc-targetdesc+xml": {
source: "iana",
compressible: !0,
extensions: ["td"]
},
"application/urc-uisocketdesc+xml": {
source: "iana",
compressible: !0
},
"application/vcard+json": {
source: "iana",
compressible: !0
},
"application/vcard+xml": {
source: "iana",
compressible: !0
},
"application/vemmi": {
source: "iana"
},
"application/vividence.scriptfile": {
source: "apache"
},
"application/vnd.1000minds.decision-model+xml": {
source: "iana",
compressible: !0,
extensions: ["1km"]
},
"application/vnd.3gpp-prose+xml": {
source: "iana",
compressible: !0
},
"application/vnd.3gpp-prose-pc3ch+xml": {
source: "iana",
compressible: !0
},
"application/vnd.3gpp-v2x-local-service-information": {
source: "iana"
},
"application/vnd.3gpp.5gnas": {
source: "iana"
},
"application/vnd.3gpp.access-transfer-events+xml": {
source: "iana",
compressible: !0
},
"application/vnd.3gpp.bsf+xml": {
source: "iana",
compressible: !0
},
"application/vnd.3gpp.gmop+xml": {
source: "iana",
compressible: !0
},
"application/vnd.3gpp.gtpc": {
source: "iana"
},
"application/vnd.3gpp.interworking-data": {
source: "iana"
},
"application/vnd.3gpp.lpp": {
source: "iana"
},
"application/vnd.3gpp.mc-signalling-ear": {
source: "iana"
},
"application/vnd.3gpp.mcdata-affiliation-command+xml": {
source: "iana",
compressible: !0
},
"application/vnd.3gpp.mcdata-info+xml": {
source: "iana",
compressible: !0
},
"application/vnd.3gpp.mcdata-payload": {
source: "iana"
},
"application/vnd.3gpp.mcdata-service-config+xml": {
source: "iana",
compressible: !0
},
"application/vnd.3gpp.mcdata-signalling": {
source: "iana"
},
"application/vnd.3gpp.mcdata-ue-config+xml": {
source: "iana",
compressible: !0
},
"application/vnd.3gpp.mcdata-user-profile+xml": {
source: "iana",
compressible: !0
},
"application/vnd.3gpp.mcptt-affiliation-command+xml": {
source: "iana",
compressible: !0
},
"application/vnd.3gpp.mcptt-floor-request+xml": {
source: "iana",
compressible: !0
},
"application/vnd.3gpp.mcptt-info+xml": {
source: "iana",
compressible: !0
},
"application/vnd.3gpp.mcptt-location-info+xml": {
source: "iana",
compressible: !0
},
"application/vnd.3gpp.mcptt-mbms-usage-info+xml": {
source: "iana",
compressible: !0
},
"application/vnd.3gpp.mcptt-service-config+xml": {
source: "iana",
compressible: !0
},
"application/vnd.3gpp.mcptt-signed+xml": {
source: "iana",
compressible: !0
},
"application/vnd.3gpp.mcptt-ue-config+xml": {
source: "iana",
compressible: !0
},
"application/vnd.3gpp.mcptt-ue-init-config+xml": {
source: "iana",
compressible: !0
},
"application/vnd.3gpp.mcptt-user-profile+xml": {
source: "iana",
compressible: !0
},
"application/vnd.3gpp.mcvideo-affiliation-command+xml": {
source: "iana",
compressible: !0
},
"application/vnd.3gpp.mcvideo-affiliation-info+xml": {
source: "iana",
compressible: !0
},
"application/vnd.3gpp.mcvideo-info+xml": {
source: "iana",
compressible: !0
},
"application/vnd.3gpp.mcvideo-location-info+xml": {
source: "iana",
compressible: !0
},
"application/vnd.3gpp.mcvideo-mbms-usage-info+xml": {
source: "iana",
compressible: !0
},
"application/vnd.3gpp.mcvideo-service-config+xml": {
source: "iana",
compressible: !0
},
"application/vnd.3gpp.mcvideo-transmission-request+xml": {
source: "iana",
compressible: !0
},
"application/vnd.3gpp.mcvideo-ue-config+xml": {
source: "iana",
compressible: !0
},
"application/vnd.3gpp.mcvideo-user-profile+xml": {
source: "iana",
compressible: !0
},
"application/vnd.3gpp.mid-call+xml": {
source: "iana",
compressible: !0
},
"application/vnd.3gpp.ngap": {
source: "iana"
},
"application/vnd.3gpp.pfcp": {
source: "iana"
},
"application/vnd.3gpp.pic-bw-large": {
source: "iana",
extensions: ["plb"]
},
"application/vnd.3gpp.pic-bw-small": {
source: "iana",
extensions: ["psb"]
},
"application/vnd.3gpp.pic-bw-var": {
source: "iana",
extensions: ["pvb"]
},
"application/vnd.3gpp.s1ap": {
source: "iana"
},
"application/vnd.3gpp.sms": {
source: "iana"
},
"application/vnd.3gpp.sms+xml": {
source: "iana",
compressible: !0
},
"application/vnd.3gpp.srvcc-ext+xml": {
source: "iana",
compressible: !0
},
"application/vnd.3gpp.srvcc-info+xml": {
source: "iana",
compressible: !0
},
"application/vnd.3gpp.state-and-event-info+xml": {
source: "iana",
compressible: !0
},
"application/vnd.3gpp.ussd+xml": {
source: "iana",
compressible: !0
},
"application/vnd.3gpp2.bcmcsinfo+xml": {
source: "iana",
compressible: !0
},
"application/vnd.3gpp2.sms": {
source: "iana"
},
"application/vnd.3gpp2.tcap": {
source: "iana",
extensions: ["tcap"]
},
"application/vnd.3lightssoftware.imagescal": {
source: "iana"
},
"application/vnd.3m.post-it-notes": {
source: "iana",
extensions: ["pwn"]
},
"application/vnd.accpac.simply.aso": {
source: "iana",
extensions: ["aso"]
},
"application/vnd.accpac.simply.imp": {
source: "iana",
extensions: ["imp"]
},
"application/vnd.acucobol": {
source: "iana",
extensions: ["acu"]
},
"application/vnd.acucorp": {
source: "iana",
extensions: ["atc", "acutc"]
},
"application/vnd.adobe.air-application-installer-package+zip": {
source: "apache",
compressible: !1,
extensions: ["air"]
},
"application/vnd.adobe.flash.movie": {
source: "iana"
},
"application/vnd.adobe.formscentral.fcdt": {
source: "iana",
extensions: ["fcdt"]
},
"application/vnd.adobe.fxp": {
source: "iana",
extensions: ["fxp", "fxpl"]
},
"application/vnd.adobe.partial-upload": {
source: "iana"
},
"application/vnd.adobe.xdp+xml": {
source: "iana",
compressible: !0,
extensions: ["xdp"]
},
"application/vnd.adobe.xfdf": {
source: "iana",
extensions: ["xfdf"]
},
"application/vnd.aether.imp": {
source: "iana"
},
"application/vnd.afpc.afplinedata": {
source: "iana"
},
"application/vnd.afpc.afplinedata-pagedef": {
source: "iana"
},
"application/vnd.afpc.cmoca-cmresource": {
source: "iana"
},
"application/vnd.afpc.foca-charset": {
source: "iana"
},
"application/vnd.afpc.foca-codedfont": {
source: "iana"
},
"application/vnd.afpc.foca-codepage": {
source: "iana"
},
"application/vnd.afpc.modca": {
source: "iana"
},
"application/vnd.afpc.modca-cmtable": {
source: "iana"
},
"application/vnd.afpc.modca-formdef": {
source: "iana"
},
"application/vnd.afpc.modca-mediummap": {
source: "iana"
},
"application/vnd.afpc.modca-objectcontainer": {
source: "iana"
},
"application/vnd.afpc.modca-overlay": {
source: "iana"
},
"application/vnd.afpc.modca-pagesegment": {
source: "iana"
},
"application/vnd.age": {
source: "iana",
extensions: ["age"]
},
"application/vnd.ah-barcode": {
source: "iana"
},
"application/vnd.ahead.space": {
source: "iana",
extensions: ["ahead"]
},
"application/vnd.airzip.filesecure.azf": {
source: "iana",
extensions: ["azf"]
},
"application/vnd.airzip.filesecure.azs": {
source: "iana",
extensions: ["azs"]
},
"application/vnd.amadeus+json": {
source: "iana",
compressible: !0
},
"application/vnd.amazon.ebook": {
source: "apache",
extensions: ["azw"]
},
"application/vnd.amazon.mobi8-ebook": {
source: "iana"
},
"application/vnd.americandynamics.acc": {
source: "iana",
extensions: ["acc"]
},
"application/vnd.amiga.ami": {
source: "iana",
extensions: ["ami"]
},
"application/vnd.amundsen.maze+xml": {
source: "iana",
compressible: !0
},
"application/vnd.android.ota": {
source: "iana"
},
"application/vnd.android.package-archive": {
source: "apache",
compressible: !1,
extensions: ["apk"]
},
"application/vnd.anki": {
source: "iana"
},
"application/vnd.anser-web-certificate-issue-initiation": {
source: "iana",
extensions: ["cii"]
},
"application/vnd.anser-web-funds-transfer-initiation": {
source: "apache",
extensions: ["fti"]
},
"application/vnd.antix.game-component": {
source: "iana",
extensions: ["atx"]
},
"application/vnd.apache.arrow.file": {
source: "iana"
},
"application/vnd.apache.arrow.stream": {
source: "iana"
},
"application/vnd.apache.thrift.binary": {
source: "iana"
},
"application/vnd.apache.thrift.compact": {
source: "iana"
},
"application/vnd.apache.thrift.json": {
source: "iana"
},
"application/vnd.api+json": {
source: "iana",
compressible: !0
},
"application/vnd.aplextor.warrp+json": {
source: "iana",
compressible: !0
},
"application/vnd.apothekende.reservation+json": {
source: "iana",
compressible: !0
},
"application/vnd.apple.installer+xml": {
source: "iana",
compressible: !0,
extensions: ["mpkg"]
},
"application/vnd.apple.keynote": {
source: "iana",
extensions: ["key"]
},
"application/vnd.apple.mpegurl": {
source: "iana",
extensions: ["m3u8"]
},
"application/vnd.apple.numbers": {
source: "iana",
extensions: ["numbers"]
},
"application/vnd.apple.pages": {
source: "iana",
extensions: ["pages"]
},
"application/vnd.apple.pkpass": {
compressible: !1,
extensions: ["pkpass"]
},
"application/vnd.arastra.swi": {
source: "iana"
},
"application/vnd.aristanetworks.swi": {
source: "iana",
extensions: ["swi"]
},
"application/vnd.artisan+json": {
source: "iana",
compressible: !0
},
"application/vnd.artsquare": {
source: "iana"
},
"application/vnd.astraea-software.iota": {
source: "iana",
extensions: ["iota"]
},
"application/vnd.audiograph": {
source: "iana",
extensions: ["aep"]
},
"application/vnd.autopackage": {
source: "iana"
},
"application/vnd.avalon+json": {
source: "iana",
compressible: !0
},
"application/vnd.avistar+xml": {
source: "iana",
compressible: !0
},
"application/vnd.balsamiq.bmml+xml": {
source: "iana",
compressible: !0,
extensions: ["bmml"]
},
"application/vnd.balsamiq.bmpr": {
source: "iana"
},
"application/vnd.banana-accounting": {
source: "iana"
},
"application/vnd.bbf.usp.error": {
source: "iana"
},
"application/vnd.bbf.usp.msg": {
source: "iana"
},
"application/vnd.bbf.usp.msg+json": {
source: "iana",
compressible: !0
},
"application/vnd.bekitzur-stech+json": {
source: "iana",
compressible: !0
},
"application/vnd.bint.med-content": {
source: "iana"
},
"application/vnd.biopax.rdf+xml": {
source: "iana",
compressible: !0
},
"application/vnd.blink-idb-value-wrapper": {
source: "iana"
},
"application/vnd.blueice.multipass": {
source: "iana",
extensions: ["mpm"]
},
"application/vnd.bluetooth.ep.oob": {
source: "iana"
},
"application/vnd.bluetooth.le.oob": {
source: "iana"
},
"application/vnd.bmi": {
source: "iana",
extensions: ["bmi"]
},
"application/vnd.bpf": {
source: "iana"
},
"application/vnd.bpf3": {
source: "iana"
},
"application/vnd.businessobjects": {
source: "iana",
extensions: ["rep"]
},
"application/vnd.byu.uapi+json": {
source: "iana",
compressible: !0
},
"application/vnd.cab-jscript": {
source: "iana"
},
"application/vnd.canon-cpdl": {
source: "iana"
},
"application/vnd.canon-lips": {
source: "iana"
},
"application/vnd.capasystems-pg+json": {
source: "iana",
compressible: !0
},
"application/vnd.cendio.thinlinc.clientconf": {
source: "iana"
},
"application/vnd.century-systems.tcp_stream": {
source: "iana"
},
"application/vnd.chemdraw+xml": {
source: "iana",
compressible: !0,
extensions: ["cdxml"]
},
"application/vnd.chess-pgn": {
source: "iana"
},
"application/vnd.chipnuts.karaoke-mmd": {
source: "iana",
extensions: ["mmd"]
},
"application/vnd.ciedi": {
source: "iana"
},
"application/vnd.cinderella": {
source: "iana",
extensions: ["cdy"]
},
"application/vnd.cirpack.isdn-ext": {
source: "iana"
},
"application/vnd.citationstyles.style+xml": {
source: "iana",
compressible: !0,
extensions: ["csl"]
},
"application/vnd.claymore": {
source: "iana",
extensions: ["cla"]
},
"application/vnd.cloanto.rp9": {
source: "iana",
extensions: ["rp9"]
},
"application/vnd.clonk.c4group": {
source: "iana",
extensions: ["c4g", "c4d", "c4f", "c4p", "c4u"]
},
"application/vnd.cluetrust.cartomobile-config": {
source: "iana",
extensions: ["c11amc"]
},
"application/vnd.cluetrust.cartomobile-config-pkg": {
source: "iana",
extensions: ["c11amz"]
},
"application/vnd.coffeescript": {
source: "iana"
},
"application/vnd.collabio.xodocuments.document": {
source: "iana"
},
"application/vnd.collabio.xodocuments.document-template": {
source: "iana"
},
"application/vnd.collabio.xodocuments.presentation": {
source: "iana"
},
"application/vnd.collabio.xodocuments.presentation-template": {
source: "iana"
},
"application/vnd.collabio.xodocuments.spreadsheet": {
source: "iana"
},
"application/vnd.collabio.xodocuments.spreadsheet-template": {
source: "iana"
},
"application/vnd.collection+json": {
source: "iana",
compressible: !0
},
"application/vnd.collection.doc+json": {
source: "iana",
compressible: !0
},
"application/vnd.collection.next+json": {
source: "iana",
compressible: !0
},
"application/vnd.comicbook+zip": {
source: "iana",
compressible: !1
},
"application/vnd.comicbook-rar": {
source: "iana"
},
"application/vnd.commerce-battelle": {
source: "iana"
},
"application/vnd.commonspace": {
source: "iana",
extensions: ["csp"]
},
"application/vnd.contact.cmsg": {
source: "iana",
extensions: ["cdbcmsg"]
},
"application/vnd.coreos.ignition+json": {
source: "iana",
compressible: !0
},
"application/vnd.cosmocaller": {
source: "iana",
extensions: ["cmc"]
},
"application/vnd.crick.clicker": {
source: "iana",
extensions: ["clkx"]
},
"application/vnd.crick.clicker.keyboard": {
source: "iana",
extensions: ["clkk"]
},
"application/vnd.crick.clicker.palette": {
source: "iana",
extensions: ["clkp"]
},
"application/vnd.crick.clicker.template": {
source: "iana",
extensions: ["clkt"]
},
"application/vnd.crick.clicker.wordbank": {
source: "iana",
extensions: ["clkw"]
},
"application/vnd.criticaltools.wbs+xml": {
source: "iana",
compressible: !0,
extensions: ["wbs"]
},
"application/vnd.cryptii.pipe+json": {
source: "iana",
compressible: !0
},
"application/vnd.crypto-shade-file": {
source: "iana"
},
"application/vnd.cryptomator.encrypted": {
source: "iana"
},
"application/vnd.cryptomator.vault": {
source: "iana"
},
"application/vnd.ctc-posml": {
source: "iana",
extensions: ["pml"]
},
"application/vnd.ctct.ws+xml": {
source: "iana",
compressible: !0
},
"application/vnd.cups-pdf": {
source: "iana"
},
"application/vnd.cups-postscript": {
source: "iana"
},
"application/vnd.cups-ppd": {
source: "iana",
extensions: ["ppd"]
},
"application/vnd.cups-raster": {
source: "iana"
},
"application/vnd.cups-raw": {
source: "iana"
},
"application/vnd.curl": {
source: "iana"
},
"application/vnd.curl.car": {
source: "apache",
extensions: ["car"]
},
"application/vnd.curl.pcurl": {
source: "apache",
extensions: ["pcurl"]
},
"application/vnd.cyan.dean.root+xml": {
source: "iana",
compressible: !0
},
"application/vnd.cybank": {
source: "iana"
},
"application/vnd.cyclonedx+json": {
source: "iana",
compressible: !0
},
"application/vnd.cyclonedx+xml": {
source: "iana",
compressible: !0
},
"application/vnd.d2l.coursepackage1p0+zip": {
source: "iana",
compressible: !1
},
"application/vnd.d3m-dataset": {
source: "iana"
},
"application/vnd.d3m-problem": {
source: "iana"
},
"application/vnd.dart": {
source: "iana",
compressible: !0,
extensions: ["dart"]
},
"application/vnd.data-vision.rdz": {
source: "iana",
extensions: ["rdz"]
},
"application/vnd.datapackage+json": {
source: "iana",
compressible: !0
},
"application/vnd.dataresource+json": {
source: "iana",
compressible: !0
},
"application/vnd.dbf": {
source: "iana",
extensions: ["dbf"]
},
"application/vnd.debian.binary-package": {
source: "iana"
},
"application/vnd.dece.data": {
source: "iana",
extensions: ["uvf", "uvvf", "uvd", "uvvd"]
},
"application/vnd.dece.ttml+xml": {
source: "iana",
compressible: !0,
extensions: ["uvt", "uvvt"]
},
"application/vnd.dece.unspecified": {
source: "iana",
extensions: ["uvx", "uvvx"]
},
"application/vnd.dece.zip": {
source: "iana",
extensions: ["uvz", "uvvz"]
},
"application/vnd.denovo.fcselayout-link": {
source: "iana",
extensions: ["fe_launch"]
},
"application/vnd.desmume.movie": {
source: "iana"
},
"application/vnd.dir-bi.plate-dl-nosuffix": {
source: "iana"
},
"application/vnd.dm.delegation+xml": {
source: "iana",
compressible: !0
},
"application/vnd.dna": {
source: "iana",
extensions: ["dna"]
},
"application/vnd.document+json": {
source: "iana",
compressible: !0
},
"application/vnd.dolby.mlp": {
source: "apache",
extensions: ["mlp"]
},
"application/vnd.dolby.mobile.1": {
source: "iana"
},
"application/vnd.dolby.mobile.2": {
source: "iana"
},
"application/vnd.doremir.scorecloud-binary-document": {
source: "iana"
},
"application/vnd.dpgraph": {
source: "iana",
extensions: ["dpg"]
},
"application/vnd.dreamfactory": {
source: "iana",
extensions: ["dfac"]
},
"application/vnd.drive+json": {
source: "iana",
compressible: !0
},
"application/vnd.ds-keypoint": {
source: "apache",
extensions: ["kpxx"]
},
"application/vnd.dtg.local": {
source: "iana"
},
"application/vnd.dtg.local.flash": {
source: "iana"
},
"application/vnd.dtg.local.html": {
source: "iana"
},
"application/vnd.dvb.ait": {
source: "iana",
extensions: ["ait"]
},
"application/vnd.dvb.dvbisl+xml": {
source: "iana",
compressible: !0
},
"application/vnd.dvb.dvbj": {
source: "iana"
},
"application/vnd.dvb.esgcontainer": {
source: "iana"
},
"application/vnd.dvb.ipdcdftnotifaccess": {
source: "iana"
},
"application/vnd.dvb.ipdcesgaccess": {
source: "iana"
},
"application/vnd.dvb.ipdcesgaccess2": {
source: "iana"
},
"application/vnd.dvb.ipdcesgpdd": {
source: "iana"
},
"application/vnd.dvb.ipdcroaming": {
source: "iana"
},
"application/vnd.dvb.iptv.alfec-base": {
source: "iana"
},
"application/vnd.dvb.iptv.alfec-enhancement": {
source: "iana"
},
"application/vnd.dvb.notif-aggregate-root+xml": {
source: "iana",
compressible: !0
},
"application/vnd.dvb.notif-container+xml": {
source: "iana",
compressible: !0
},
"application/vnd.dvb.notif-generic+xml": {
source: "iana",
compressible: !0
},
"application/vnd.dvb.notif-ia-msglist+xml": {
source: "iana",
compressible: !0
},
"application/vnd.dvb.notif-ia-registration-request+xml": {
source: "iana",
compressible: !0
},
"application/vnd.dvb.notif-ia-registration-response+xml": {
source: "iana",
compressible: !0
},
"application/vnd.dvb.notif-init+xml": {
source: "iana",
compressible: !0
},
"application/vnd.dvb.pfr": {
source: "iana"
},
"application/vnd.dvb.service": {
source: "iana",
extensions: ["svc"]
},
"application/vnd.dxr": {
source: "iana"
},
"application/vnd.dynageo": {
source: "iana",
extensions: ["geo"]
},
"application/vnd.dzr": {
source: "iana"
},
"application/vnd.easykaraoke.cdgdownload": {
source: "iana"
},
"application/vnd.ecdis-update": {
source: "iana"
},
"application/vnd.ecip.rlp": {
source: "iana"
},
"application/vnd.eclipse.ditto+json": {
source: "iana",
compressible: !0
},
"application/vnd.ecowin.chart": {
source: "iana",
extensions: ["mag"]
},
"application/vnd.ecowin.filerequest": {
source: "iana"
},
"application/vnd.ecowin.fileupdate": {
source: "iana"
},
"application/vnd.ecowin.series": {
source: "iana"
},
"application/vnd.ecowin.seriesrequest": {
source: "iana"
},
"application/vnd.ecowin.seriesupdate": {
source: "iana"
},
"application/vnd.efi.img": {
source: "iana"
},
"application/vnd.efi.iso": {
source: "iana"
},
"application/vnd.emclient.accessrequest+xml": {
source: "iana",
compressible: !0
},
"application/vnd.enliven": {
source: "iana",
extensions: ["nml"]
},
"application/vnd.enphase.envoy": {
source: "iana"
},
"application/vnd.eprints.data+xml": {
source: "iana",
compressible: !0
},
"application/vnd.epson.esf": {
source: "iana",
extensions: ["esf"]
},
"application/vnd.epson.msf": {
source: "iana",
extensions: ["msf"]
},
"application/vnd.epson.quickanime": {
source: "iana",
extensions: ["qam"]
},
"application/vnd.epson.salt": {
source: "iana",
extensions: ["slt"]
},
"application/vnd.epson.ssf": {
source: "iana",
extensions: ["ssf"]
},
"application/vnd.ericsson.quickcall": {
source: "iana"
},
"application/vnd.espass-espass+zip": {
source: "iana",
compressible: !1
},
"application/vnd.eszigno3+xml": {
source: "iana",
compressible: !0,
extensions: ["es3", "et3"]
},
"application/vnd.etsi.aoc+xml": {
source: "iana",
compressible: !0
},
"application/vnd.etsi.asic-e+zip": {
source: "iana",
compressible: !1
},
"application/vnd.etsi.asic-s+zip": {
source: "iana",
compressible: !1
},
"application/vnd.etsi.cug+xml": {
source: "iana",
compressible: !0
},
"application/vnd.etsi.iptvcommand+xml": {
source: "iana",
compressible: !0
},
"application/vnd.etsi.iptvdiscovery+xml": {
source: "iana",
compressible: !0
},
"application/vnd.etsi.iptvprofile+xml": {
source: "iana",
compressible: !0
},
"application/vnd.etsi.iptvsad-bc+xml": {
source: "iana",
compressible: !0
},
"application/vnd.etsi.iptvsad-cod+xml": {
source: "iana",
compressible: !0
},
"application/vnd.etsi.iptvsad-npvr+xml": {
source: "iana",
compressible: !0
},
"application/vnd.etsi.iptvservice+xml": {
source: "iana",
compressible: !0
},
"application/vnd.etsi.iptvsync+xml": {
source: "iana",
compressible: !0
},
"application/vnd.etsi.iptvueprofile+xml": {
source: "iana",
compressible: !0
},
"application/vnd.etsi.mcid+xml": {
source: "iana",
compressible: !0
},
"application/vnd.etsi.mheg5": {
source: "iana"
},
"application/vnd.etsi.overload-control-policy-dataset+xml": {
source: "iana",
compressible: !0
},
"application/vnd.etsi.pstn+xml": {
source: "iana",
compressible: !0
},
"application/vnd.etsi.sci+xml": {
source: "iana",
compressible: !0
},
"application/vnd.etsi.simservs+xml": {
source: "iana",
compressible: !0
},
"application/vnd.etsi.timestamp-token": {
source: "iana"
},
"application/vnd.etsi.tsl+xml": {
source: "iana",
compressible: !0
},
"application/vnd.etsi.tsl.der": {
source: "iana"
},
"application/vnd.eu.kasparian.car+json": {
source: "iana",
compressible: !0
},
"application/vnd.eudora.data": {
source: "iana"
},
"application/vnd.evolv.ecig.profile": {
source: "iana"
},
"application/vnd.evolv.ecig.settings": {
source: "iana"
},
"application/vnd.evolv.ecig.theme": {
source: "iana"
},
"application/vnd.exstream-empower+zip": {
source: "iana",
compressible: !1
},
"application/vnd.exstream-package": {
source: "iana"
},
"application/vnd.ezpix-album": {
source: "iana",
extensions: ["ez2"]
},
"application/vnd.ezpix-package": {
source: "iana",
extensions: ["ez3"]
},
"application/vnd.f-secure.mobile": {
source: "iana"
},
"application/vnd.familysearch.gedcom+zip": {
source: "iana",
compressible: !1
},
"application/vnd.fastcopy-disk-image": {
source: "iana"
},
"application/vnd.fdf": {
source: "iana",
extensions: ["fdf"]
},
"application/vnd.fdsn.mseed": {
source: "iana",
extensions: ["mseed"]
},
"application/vnd.fdsn.seed": {
source: "iana",
extensions: ["seed", "dataless"]
},
"application/vnd.ffsns": {
source: "iana"
},
"application/vnd.ficlab.flb+zip": {
source: "iana",
compressible: !1
},
"application/vnd.filmit.zfc": {
source: "iana"
},
"application/vnd.fints": {
source: "iana"
},
"application/vnd.firemonkeys.cloudcell": {
source: "iana"
},
"application/vnd.flographit": {
source: "iana",
extensions: ["gph"]
},
"application/vnd.fluxtime.clip": {
source: "iana",
extensions: ["ftc"]
},
"application/vnd.font-fontforge-sfd": {
source: "iana"
},
"application/vnd.framemaker": {
source: "iana",
extensions: ["fm", "frame", "maker", "book"]
},
"application/vnd.frogans.fnc": {
source: "iana",
extensions: ["fnc"]
},
"application/vnd.frogans.ltf": {
source: "iana",
extensions: ["ltf"]
},
"application/vnd.fsc.weblaunch": {
source: "iana",
extensions: ["fsc"]
},
"application/vnd.fujifilm.fb.docuworks": {
source: "iana"
},
"application/vnd.fujifilm.fb.docuworks.binder": {
source: "iana"
},
"application/vnd.fujifilm.fb.docuworks.container": {
source: "iana"
},
"application/vnd.fujifilm.fb.jfi+xml": {
source: "iana",
compressible: !0
},
"application/vnd.fujitsu.oasys": {
source: "iana",
extensions: ["oas"]
},
"application/vnd.fujitsu.oasys2": {
source: "iana",
extensions: ["oa2"]
},
"application/vnd.fujitsu.oasys3": {
source: "iana",
extensions: ["oa3"]
},
"application/vnd.fujitsu.oasysgp": {
source: "iana",
extensions: ["fg5"]
},
"application/vnd.fujitsu.oasysprs": {
source: "iana",
extensions: ["bh2"]
},
"application/vnd.fujixerox.art-ex": {
source: "iana"
},
"application/vnd.fujixerox.art4": {
source: "iana"
},
"application/vnd.fujixerox.ddd": {
source: "iana",
extensions: ["ddd"]
},
"application/vnd.fujixerox.docuworks": {
source: "iana",
extensions: ["xdw"]
},
"application/vnd.fujixerox.docuworks.binder": {
source: "iana",
extensions: ["xbd"]
},
"application/vnd.fujixerox.docuworks.container": {
source: "iana"
},
"application/vnd.fujixerox.hbpl": {
source: "iana"
},
"application/vnd.fut-misnet": {
source: "iana"
},
"application/vnd.futoin+cbor": {
source: "iana"
},
"application/vnd.futoin+json": {
source: "iana",
compressible: !0
},
"application/vnd.fuzzysheet": {
source: "iana",
extensions: ["fzs"]
},
"application/vnd.genomatix.tuxedo": {
source: "iana",
extensions: ["txd"]
},
"application/vnd.gentics.grd+json": {
source: "iana",
compressible: !0
},
"application/vnd.geo+json": {
source: "iana",
compressible: !0
},
"application/vnd.geocube+xml": {
source: "iana",
compressible: !0
},
"application/vnd.geogebra.file": {
source: "iana",
extensions: ["ggb"]
},
"application/vnd.geogebra.slides": {
source: "iana"
},
"application/vnd.geogebra.tool": {
source: "iana",
extensions: ["ggt"]
},
"application/vnd.geometry-explorer": {
source: "iana",
extensions: ["gex", "gre"]
},
"application/vnd.geonext": {
source: "iana",
extensions: ["gxt"]
},
"application/vnd.geoplan": {
source: "iana",
extensions: ["g2w"]
},
"application/vnd.geospace": {
source: "iana",
extensions: ["g3w"]
},
"application/vnd.gerber": {
source: "iana"
},
"application/vnd.globalplatform.card-content-mgt": {
source: "iana"
},
"application/vnd.globalplatform.card-content-mgt-response": {
source: "iana"
},
"application/vnd.gmx": {
source: "iana",
extensions: ["gmx"]
},
"application/vnd.google-apps.document": {
compressible: !1,
extensions: ["gdoc"]
},
"application/vnd.google-apps.presentation": {
compressible: !1,
extensions: ["gslides"]
},
"application/vnd.google-apps.spreadsheet": {
compressible: !1,
extensions: ["gsheet"]
},
"application/vnd.google-earth.kml+xml": {
source: "iana",
compressible: !0,
extensions: ["kml"]
},
"application/vnd.google-earth.kmz": {
source: "iana",
compressible: !1,
extensions: ["kmz"]
},
"application/vnd.gov.sk.e-form+xml": {
source: "iana",
compressible: !0
},
"application/vnd.gov.sk.e-form+zip": {
source: "iana",
compressible: !1
},
"application/vnd.gov.sk.xmldatacontainer+xml": {
source: "iana",
compressible: !0
},
"application/vnd.grafeq": {
source: "iana",
extensions: ["gqf", "gqs"]
},
"application/vnd.gridmp": {
source: "iana"
},
"application/vnd.groove-account": {
source: "iana",
extensions: ["gac"]
},
"application/vnd.groove-help": {
source: "iana",
extensions: ["ghf"]
},
"application/vnd.groove-identity-message": {
source: "iana",
extensions: ["gim"]
},
"application/vnd.groove-injector": {
source: "iana",
extensions: ["grv"]
},
"application/vnd.groove-tool-message": {
source: "iana",
extensions: ["gtm"]
},
"application/vnd.groove-tool-template": {
source: "iana",
extensions: ["tpl"]
},
"application/vnd.groove-vcard": {
source: "iana",
extensions: ["vcg"]
},
"application/vnd.hal+json": {
source: "iana",
compressible: !0
},
"application/vnd.hal+xml": {
source: "iana",
compressible: !0,
extensions: ["hal"]
},
"application/vnd.handheld-entertainment+xml": {
source: "iana",
compressible: !0,
extensions: ["zmm"]
},
"application/vnd.hbci": {
source: "iana",
extensions: ["hbci"]
},
"application/vnd.hc+json": {
source: "iana",
compressible: !0
},
"application/vnd.hcl-bireports": {
source: "iana"
},
"application/vnd.hdt": {
source: "iana"
},
"application/vnd.heroku+json": {
source: "iana",
compressible: !0
},
"application/vnd.hhe.lesson-player": {
source: "iana",
extensions: ["les"]
},
"application/vnd.hl7cda+xml": {
source: "iana",
charset: "UTF-8",
compressible: !0
},
"application/vnd.hl7v2+xml": {
source: "iana",
charset: "UTF-8",
compressible: !0
},
"application/vnd.hp-hpgl": {
source: "iana",
extensions: ["hpgl"]
},
"application/vnd.hp-hpid": {
source: "iana",
extensions: ["hpid"]
},
"application/vnd.hp-hps": {
source: "iana",
extensions: ["hps"]
},
"application/vnd.hp-jlyt": {
source: "iana",
extensions: ["jlt"]
},
"application/vnd.hp-pcl": {
source: "iana",
extensions: ["pcl"]
},
"application/vnd.hp-pclxl": {
source: "iana",
extensions: ["pclxl"]
},
"application/vnd.httphone": {
source: "iana"
},
"application/vnd.hydrostatix.sof-data": {
source: "iana",
extensions: ["sfd-hdstx"]
},
"application/vnd.hyper+json": {
source: "iana",
compressible: !0
},
"application/vnd.hyper-item+json": {
source: "iana",
compressible: !0
},
"application/vnd.hyperdrive+json": {
source: "iana",
compressible: !0
},
"application/vnd.hzn-3d-crossword": {
source: "iana"
},
"application/vnd.ibm.afplinedata": {
source: "iana"
},
"application/vnd.ibm.electronic-media": {
source: "iana"
},
"application/vnd.ibm.minipay": {
source: "iana",
extensions: ["mpy"]
},
"application/vnd.ibm.modcap": {
source: "iana",
extensions: ["afp", "listafp", "list3820"]
},
"application/vnd.ibm.rights-management": {
source: "iana",
extensions: ["irm"]
},
"application/vnd.ibm.secure-container": {
source: "iana",
extensions: ["sc"]
},
"application/vnd.iccprofile": {
source: "iana",
extensions: ["icc", "icm"]
},
"application/vnd.ieee.1905": {
source: "iana"
},
"application/vnd.igloader": {
source: "iana",
extensions: ["igl"]
},
"application/vnd.imagemeter.folder+zip": {
source: "iana",
compressible: !1
},
"application/vnd.imagemeter.image+zip": {
source: "iana",
compressible: !1
},
"application/vnd.immervision-ivp": {
source: "iana",
extensions: ["ivp"]
},
"application/vnd.immervision-ivu": {
source: "iana",
extensions: ["ivu"]
},
"application/vnd.ims.imsccv1p1": {
source: "iana"
},
"application/vnd.ims.imsccv1p2": {
source: "iana"
},
"application/vnd.ims.imsccv1p3": {
source: "iana"
},
"application/vnd.ims.lis.v2.result+json": {
source: "iana",
compressible: !0
},
"application/vnd.ims.lti.v2.toolconsumerprofile+json": {
source: "iana",
compressible: !0
},
"application/vnd.ims.lti.v2.toolproxy+json": {
source: "iana",
compressible: !0
},
"application/vnd.ims.lti.v2.toolproxy.id+json": {
source: "iana",
compressible: !0
},
"application/vnd.ims.lti.v2.toolsettings+json": {
source: "iana",
compressible: !0
},
"application/vnd.ims.lti.v2.toolsettings.simple+json": {
source: "iana",
compressible: !0
},
"application/vnd.informedcontrol.rms+xml": {
source: "iana",
compressible: !0
},
"application/vnd.informix-visionary": {
source: "iana"
},
"application/vnd.infotech.project": {
source: "iana"
},
"application/vnd.infotech.project+xml": {
source: "iana",
compressible: !0
},
"application/vnd.innopath.wamp.notification": {
source: "iana"
},
"application/vnd.insors.igm": {
source: "iana",
extensions: ["igm"]
},
"application/vnd.intercon.formnet": {
source: "iana",
extensions: ["xpw", "xpx"]
},
"application/vnd.intergeo": {
source: "iana",
extensions: ["i2g"]
},
"application/vnd.intertrust.digibox": {
source: "iana"
},
"application/vnd.intertrust.nncp": {
source: "iana"
},
"application/vnd.intu.qbo": {
source: "iana",
extensions: ["qbo"]
},
"application/vnd.intu.qfx": {
source: "iana",
extensions: ["qfx"]
},
"application/vnd.iptc.g2.catalogitem+xml": {
source: "iana",
compressible: !0
},
"application/vnd.iptc.g2.conceptitem+xml": {
source: "iana",
compressible: !0
},
"application/vnd.iptc.g2.knowledgeitem+xml": {
source: "iana",
compressible: !0
},
"application/vnd.iptc.g2.newsitem+xml": {
source: "iana",
compressible: !0
},
"application/vnd.iptc.g2.newsmessage+xml": {
source: "iana",
compressible: !0
},
"application/vnd.iptc.g2.packageitem+xml": {
source: "iana",
compressible: !0
},
"application/vnd.iptc.g2.planningitem+xml": {
source: "iana",
compressible: !0
},
"application/vnd.ipunplugged.rcprofile": {
source: "iana",
extensions: ["rcprofile"]
},
"application/vnd.irepository.package+xml": {
source: "iana",
compressible: !0,
extensions: ["irp"]
},
"application/vnd.is-xpr": {
source: "iana",
extensions: ["xpr"]
},
"application/vnd.isac.fcs": {
source: "iana",
extensions: ["fcs"]
},
"application/vnd.iso11783-10+zip": {
source: "iana",
compressible: !1
},
"application/vnd.jam": {
source: "iana",
extensions: ["jam"]
},
"application/vnd.japannet-directory-service": {
source: "iana"
},
"application/vnd.japannet-jpnstore-wakeup": {
source: "iana"
},
"application/vnd.japannet-payment-wakeup": {
source: "iana"
},
"application/vnd.japannet-registration": {
source: "iana"
},
"application/vnd.japannet-registration-wakeup": {
source: "iana"
},
"application/vnd.japannet-setstore-wakeup": {
source: "iana"
},
"application/vnd.japannet-verification": {
source: "iana"
},
"application/vnd.japannet-verification-wakeup": {
source: "iana"
},
"application/vnd.jcp.javame.midlet-rms": {
source: "iana",
extensions: ["rms"]
},
"application/vnd.jisp": {
source: "iana",
extensions: ["jisp"]
},
"application/vnd.joost.joda-archive": {
source: "iana",
extensions: ["joda"]
},
"application/vnd.jsk.isdn-ngn": {
source: "iana"
},
"application/vnd.kahootz": {
source: "iana",
extensions: ["ktz", "ktr"]
},
"application/vnd.kde.karbon": {
source: "iana",
extensions: ["karbon"]
},
"application/vnd.kde.kchart": {
source: "iana",
extensions: ["chrt"]
},
"application/vnd.kde.kformula": {
source: "iana",
extensions: ["kfo"]
},
"application/vnd.kde.kivio": {
source: "iana",
extensions: ["flw"]
},
"application/vnd.kde.kontour": {
source: "iana",
extensions: ["kon"]
},
"application/vnd.kde.kpresenter": {
source: "iana",
extensions: ["kpr", "kpt"]
},
"application/vnd.kde.kspread": {
source: "iana",
extensions: ["ksp"]
},
"application/vnd.kde.kword": {
source: "iana",
extensions: ["kwd", "kwt"]
},
"application/vnd.kenameaapp": {
source: "iana",
extensions: ["htke"]
},
"application/vnd.kidspiration": {
source: "iana",
extensions: ["kia"]
},
"application/vnd.kinar": {
source: "iana",
extensions: ["kne", "knp"]
},
"application/vnd.koan": {
source: "iana",
extensions: ["skp", "skd", "skt", "skm"]
},
"application/vnd.kodak-descriptor": {
source: "iana",
extensions: ["sse"]
},
"application/vnd.las": {
source: "iana"
},
"application/vnd.las.las+json": {
source: "iana",
compressible: !0
},
"application/vnd.las.las+xml": {
source: "iana",
compressible: !0,
extensions: ["lasxml"]
},
"application/vnd.laszip": {
source: "iana"
},
"application/vnd.leap+json": {
source: "iana",
compressible: !0
},
"application/vnd.liberty-request+xml": {
source: "iana",
compressible: !0
},
"application/vnd.llamagraphics.life-balance.desktop": {
source: "iana",
extensions: ["lbd"]
},
"application/vnd.llamagraphics.life-balance.exchange+xml": {
source: "iana",
compressible: !0,
extensions: ["lbe"]
},
"application/vnd.logipipe.circuit+zip": {
source: "iana",
compressible: !1
},
"application/vnd.loom": {
source: "iana"
},
"application/vnd.lotus-1-2-3": {
source: "iana",
extensions: ["123"]
},
"application/vnd.lotus-approach": {
source: "iana",
extensions: ["apr"]
},
"application/vnd.lotus-freelance": {
source: "iana",
extensions: ["pre"]
},
"application/vnd.lotus-notes": {
source: "iana",
extensions: ["nsf"]
},
"application/vnd.lotus-organizer": {
source: "iana",
extensions: ["org"]
},
"application/vnd.lotus-screencam": {
source: "iana",
extensions: ["scm"]
},
"application/vnd.lotus-wordpro": {
source: "iana",
extensions: ["lwp"]
},
"application/vnd.macports.portpkg": {
source: "iana",
extensions: ["portpkg"]
},
"application/vnd.mapbox-vector-tile": {
source: "iana",
extensions: ["mvt"]
},
"application/vnd.marlin.drm.actiontoken+xml": {
source: "iana",
compressible: !0
},
"application/vnd.marlin.drm.conftoken+xml": {
source: "iana",
compressible: !0
},
"application/vnd.marlin.drm.license+xml": {
source: "iana",
compressible: !0
},
"application/vnd.marlin.drm.mdcf": {
source: "iana"
},
"application/vnd.mason+json": {
source: "iana",
compressible: !0
},
"application/vnd.maxar.archive.3tz+zip": {
source: "iana",
compressible: !1
},
"application/vnd.maxmind.maxmind-db": {
source: "iana"
},
"application/vnd.mcd": {
source: "iana",
extensions: ["mcd"]
},
"application/vnd.medcalcdata": {
source: "iana",
extensions: ["mc1"]
},
"application/vnd.mediastation.cdkey": {
source: "iana",
extensions: ["cdkey"]
},
"application/vnd.meridian-slingshot": {
source: "iana"
},
"application/vnd.mfer": {
source: "iana",
extensions: ["mwf"]
},
"application/vnd.mfmp": {
source: "iana",
extensions: ["mfm"]
},
"application/vnd.micro+json": {
source: "iana",
compressible: !0
},
"application/vnd.micrografx.flo": {
source: "iana",
extensions: ["flo"]
},
"application/vnd.micrografx.igx": {
source: "iana",
extensions: ["igx"]
},
"application/vnd.microsoft.portable-executable": {
source: "iana"
},
"application/vnd.microsoft.windows.thumbnail-cache": {
source: "iana"
},
"application/vnd.miele+json": {
source: "iana",
compressible: !0
},
"application/vnd.mif": {
source: "iana",
extensions: ["mif"]
},
"application/vnd.minisoft-hp3000-save": {
source: "iana"
},
"application/vnd.mitsubishi.misty-guard.trustweb": {
source: "iana"
},
"application/vnd.mobius.daf": {
source: "iana",
extensions: ["daf"]
},
"application/vnd.mobius.dis": {
source: "iana",
extensions: ["dis"]
},
"application/vnd.mobius.mbk": {
source: "iana",
extensions: ["mbk"]
},
"application/vnd.mobius.mqy": {
source: "iana",
extensions: ["mqy"]
},
"application/vnd.mobius.msl": {
source: "iana",
extensions: ["msl"]
},
"application/vnd.mobius.plc": {
source: "iana",
extensions: ["plc"]
},
"application/vnd.mobius.txf": {
source: "iana",
extensions: ["txf"]
},
"application/vnd.mophun.application": {
source: "iana",
extensions: ["mpn"]
},
"application/vnd.mophun.certificate": {
source: "iana",
extensions: ["mpc"]
},
"application/vnd.motorola.flexsuite": {
source: "iana"
},
"application/vnd.motorola.flexsuite.adsi": {
source: "iana"
},
"application/vnd.motorola.flexsuite.fis": {
source: "iana"
},
"application/vnd.motorola.flexsuite.gotap": {
source: "iana"
},
"application/vnd.motorola.flexsuite.kmr": {
source: "iana"
},
"application/vnd.motorola.flexsuite.ttc": {
source: "iana"
},
"application/vnd.motorola.flexsuite.wem": {
source: "iana"
},
"application/vnd.motorola.iprm": {
source: "iana"
},
"application/vnd.mozilla.xul+xml": {
source: "iana",
compressible: !0,
extensions: ["xul"]
},
"application/vnd.ms-3mfdocument": {
source: "iana"
},
"application/vnd.ms-artgalry": {
source: "iana",
extensions: ["cil"]
},
"application/vnd.ms-asf": {
source: "iana"
},
"application/vnd.ms-cab-compressed": {
source: "iana",
extensions: ["cab"]
},
"application/vnd.ms-color.iccprofile": {
source: "apache"
},
"application/vnd.ms-excel": {
source: "iana",
compressible: !1,
extensions: ["xls", "xlm", "xla", "xlc", "xlt", "xlw"]
},
"application/vnd.ms-excel.addin.macroenabled.12": {
source: "iana",
extensions: ["xlam"]
},
"application/vnd.ms-excel.sheet.binary.macroenabled.12": {
source: "iana",
extensions: ["xlsb"]
},
"application/vnd.ms-excel.sheet.macroenabled.12": {
source: "iana",
extensions: ["xlsm"]
},
"application/vnd.ms-excel.template.macroenabled.12": {
source: "iana",
extensions: ["xltm"]
},
"application/vnd.ms-fontobject": {
source: "iana",
compressible: !0,
extensions: ["eot"]
},
"application/vnd.ms-htmlhelp": {
source: "iana",
extensions: ["chm"]
},
"application/vnd.ms-ims": {
source: "iana",
extensions: ["ims"]
},
"application/vnd.ms-lrm": {
source: "iana",
extensions: ["lrm"]
},
"application/vnd.ms-office.activex+xml": {
source: "iana",
compressible: !0
},
"application/vnd.ms-officetheme": {
source: "iana",
extensions: ["thmx"]
},
"application/vnd.ms-opentype": {
source: "apache",
compressible: !0
},
"application/vnd.ms-outlook": {
compressible: !1,
extensions: ["msg"]
},
"application/vnd.ms-package.obfuscated-opentype": {
source: "apache"
},
"application/vnd.ms-pki.seccat": {
source: "apache",
extensions: ["cat"]
},
"application/vnd.ms-pki.stl": {
source: "apache",
extensions: ["stl"]
},
"application/vnd.ms-playready.initiator+xml": {
source: "iana",
compressible: !0
},
"application/vnd.ms-powerpoint": {
source: "iana",
compressible: !1,
extensions: ["ppt", "pps", "pot"]
},
"application/vnd.ms-powerpoint.addin.macroenabled.12": {
source: "iana",
extensions: ["ppam"]
},
"application/vnd.ms-powerpoint.presentation.macroenabled.12": {
source: "iana",
extensions: ["pptm"]
},
"application/vnd.ms-powerpoint.slide.macroenabled.12": {
source: "iana",
extensions: ["sldm"]
},
"application/vnd.ms-powerpoint.slideshow.macroenabled.12": {
source: "iana",
extensions: ["ppsm"]
},
"application/vnd.ms-powerpoint.template.macroenabled.12": {
source: "iana",
extensions: ["potm"]
},
"application/vnd.ms-printdevicecapabilities+xml": {
source: "iana",
compressible: !0
},
"application/vnd.ms-printing.printticket+xml": {
source: "apache",
compressible: !0
},
"application/vnd.ms-printschematicket+xml": {
source: "iana",
compressible: !0
},
"application/vnd.ms-project": {
source: "iana",
extensions: ["mpp", "mpt"]
},
"application/vnd.ms-tnef": {
source: "iana"
},
"application/vnd.ms-windows.devicepairing": {
source: "iana"
},
"application/vnd.ms-windows.nwprinting.oob": {
source: "iana"
},
"application/vnd.ms-windows.printerpairing": {
source: "iana"
},
"application/vnd.ms-windows.wsd.oob": {
source: "iana"
},
"application/vnd.ms-wmdrm.lic-chlg-req": {
source: "iana"
},
"application/vnd.ms-wmdrm.lic-resp": {
source: "iana"
},
"application/vnd.ms-wmdrm.meter-chlg-req": {
source: "iana"
},
"application/vnd.ms-wmdrm.meter-resp": {
source: "iana"
},
"application/vnd.ms-word.document.macroenabled.12": {
source: "iana",
extensions: ["docm"]
},
"application/vnd.ms-word.template.macroenabled.12": {
source: "iana",
extensions: ["dotm"]
},
"application/vnd.ms-works": {
source: "iana",
extensions: ["wps", "wks", "wcm", "wdb"]
},
"application/vnd.ms-wpl": {
source: "iana",
extensions: ["wpl"]
},
"application/vnd.ms-xpsdocument": {
source: "iana",
compressible: !1,
extensions: ["xps"]
},
"application/vnd.msa-disk-image": {
source: "iana"
},
"application/vnd.mseq": {
source: "iana",
extensions: ["mseq"]
},
"application/vnd.msign": {
source: "iana"
},
"application/vnd.multiad.creator": {
source: "iana"
},
"application/vnd.multiad.creator.cif": {
source: "iana"
},
"application/vnd.music-niff": {
source: "iana"
},
"application/vnd.musician": {
source: "iana",
extensions: ["mus"]
},
"application/vnd.muvee.style": {
source: "iana",
extensions: ["msty"]
},
"application/vnd.mynfc": {
source: "iana",
extensions: ["taglet"]
},
"application/vnd.nacamar.ybrid+json": {
source: "iana",
compressible: !0
},
"application/vnd.ncd.control": {
source: "iana"
},
"application/vnd.ncd.reference": {
source: "iana"
},
"application/vnd.nearst.inv+json": {
source: "iana",
compressible: !0
},
"application/vnd.nebumind.line": {
source: "iana"
},
"application/vnd.nervana": {
source: "iana"
},
"application/vnd.netfpx": {
source: "iana"
},
"application/vnd.neurolanguage.nlu": {
source: "iana",
extensions: ["nlu"]
},
"application/vnd.nimn": {
source: "iana"
},
"application/vnd.nintendo.nitro.rom": {
source: "iana"
},
"application/vnd.nintendo.snes.rom": {
source: "iana"
},
"application/vnd.nitf": {
source: "iana",
extensions: ["ntf", "nitf"]
},
"application/vnd.noblenet-directory": {
source: "iana",
extensions: ["nnd"]
},
"application/vnd.noblenet-sealer": {
source: "iana",
extensions: ["nns"]
},
"application/vnd.noblenet-web": {
source: "iana",
extensions: ["nnw"]
},
"application/vnd.nokia.catalogs": {
source: "iana"
},
"application/vnd.nokia.conml+wbxml": {
source: "iana"
},
"application/vnd.nokia.conml+xml": {
source: "iana",
compressible: !0
},
"application/vnd.nokia.iptv.config+xml": {
source: "iana",
compressible: !0
},
"application/vnd.nokia.isds-radio-presets": {
source: "iana"
},
"application/vnd.nokia.landmark+wbxml": {
source: "iana"
},
"application/vnd.nokia.landmark+xml": {
source: "iana",
compressible: !0
},
"application/vnd.nokia.landmarkcollection+xml": {
source: "iana",
compressible: !0
},
"application/vnd.nokia.n-gage.ac+xml": {
source: "iana",
compressible: !0,
extensions: ["ac"]
},
"application/vnd.nokia.n-gage.data": {
source: "iana",
extensions: ["ngdat"]
},
"application/vnd.nokia.n-gage.symbian.install": {
source: "iana",
extensions: ["n-gage"]
},
"application/vnd.nokia.ncd": {
source: "iana"
},
"application/vnd.nokia.pcd+wbxml": {
source: "iana"
},
"application/vnd.nokia.pcd+xml": {
source: "iana",
compressible: !0
},
"application/vnd.nokia.radio-preset": {
source: "iana",
extensions: ["rpst"]
},
"application/vnd.nokia.radio-presets": {
source: "iana",
extensions: ["rpss"]
},
"application/vnd.novadigm.edm": {
source: "iana",
extensions: ["edm"]
},
"application/vnd.novadigm.edx": {
source: "iana",
extensions: ["edx"]
},
"application/vnd.novadigm.ext": {
source: "iana",
extensions: ["ext"]
},
"application/vnd.ntt-local.content-share": {
source: "iana"
},
"application/vnd.ntt-local.file-transfer": {
source: "iana"
},
"application/vnd.ntt-local.ogw_remote-access": {
source: "iana"
},
"application/vnd.ntt-local.sip-ta_remote": {
source: "iana"
},
"application/vnd.ntt-local.sip-ta_tcp_stream": {
source: "iana"
},
"application/vnd.oasis.opendocument.chart": {
source: "iana",
extensions: ["odc"]
},
"application/vnd.oasis.opendocument.chart-template": {
source: "iana",
extensions: ["otc"]
},
"application/vnd.oasis.opendocument.database": {
source: "iana",
extensions: ["odb"]
},
"application/vnd.oasis.opendocument.formula": {
source: "iana",
extensions: ["odf"]
},
"application/vnd.oasis.opendocument.formula-template": {
source: "iana",
extensions: ["odft"]
},
"application/vnd.oasis.opendocument.graphics": {
source: "iana",
compressible: !1,
extensions: ["odg"]
},
"application/vnd.oasis.opendocument.graphics-template": {
source: "iana",
extensions: ["otg"]
},
"application/vnd.oasis.opendocument.image": {
source: "iana",
extensions: ["odi"]
},
"application/vnd.oasis.opendocument.image-template": {
source: "iana",
extensions: ["oti"]
},
"application/vnd.oasis.opendocument.presentation": {
source: "iana",
compressible: !1,
extensions: ["odp"]
},
"application/vnd.oasis.opendocument.presentation-template": {
source: "iana",
extensions: ["otp"]
},
"application/vnd.oasis.opendocument.spreadsheet": {
source: "iana",
compressible: !1,
extensions: ["ods"]
},
"application/vnd.oasis.opendocument.spreadsheet-template": {
source: "iana",
extensions: ["ots"]
},
"application/vnd.oasis.opendocument.text": {
source: "iana",
compressible: !1,
extensions: ["odt"]
},
"application/vnd.oasis.opendocument.text-master": {
source: "iana",
extensions: ["odm"]
},
"application/vnd.oasis.opendocument.text-template": {
source: "iana",
extensions: ["ott"]
},
"application/vnd.oasis.opendocument.text-web": {
source: "iana",
extensions: ["oth"]
},
"application/vnd.obn": {
source: "iana"
},
"application/vnd.ocf+cbor": {
source: "iana"
},
"application/vnd.oci.image.manifest.v1+json": {
source: "iana",
compressible: !0
},
"application/vnd.oftn.l10n+json": {
source: "iana",
compressible: !0
},
"application/vnd.oipf.contentaccessdownload+xml": {
source: "iana",
compressible: !0
},
"application/vnd.oipf.contentaccessstreaming+xml": {
source: "iana",
compressible: !0
},
"application/vnd.oipf.cspg-hexbinary": {
source: "iana"
},
"application/vnd.oipf.dae.svg+xml": {
source: "iana",
compressible: !0
},
"application/vnd.oipf.dae.xhtml+xml": {
source: "iana",
compressible: !0
},
"application/vnd.oipf.mippvcontrolmessage+xml": {
source: "iana",
compressible: !0
},
"application/vnd.oipf.pae.gem": {
source: "iana"
},
"application/vnd.oipf.spdiscovery+xml": {
source: "iana",
compressible: !0
},
"application/vnd.oipf.spdlist+xml": {
source: "iana",
compressible: !0
},
"application/vnd.oipf.ueprofile+xml": {
source: "iana",
compressible: !0
},
"application/vnd.oipf.userprofile+xml": {
source: "iana",
compressible: !0
},
"application/vnd.olpc-sugar": {
source: "iana",
extensions: ["xo"]
},
"application/vnd.oma-scws-config": {
source: "iana"
},
"application/vnd.oma-scws-http-request": {
source: "iana"
},
"application/vnd.oma-scws-http-response": {
source: "iana"
},
"application/vnd.oma.bcast.associated-procedure-parameter+xml": {
source: "iana",
compressible: !0
},
"application/vnd.oma.bcast.drm-trigger+xml": {
source: "iana",
compressible: !0
},
"application/vnd.oma.bcast.imd+xml": {
source: "iana",
compressible: !0
},
"application/vnd.oma.bcast.ltkm": {
source: "iana"
},
"application/vnd.oma.bcast.notification+xml": {
source: "iana",
compressible: !0
},
"application/vnd.oma.bcast.provisioningtrigger": {
source: "iana"
},
"application/vnd.oma.bcast.sgboot": {
source: "iana"
},
"application/vnd.oma.bcast.sgdd+xml": {
source: "iana",
compressible: !0
},
"application/vnd.oma.bcast.sgdu": {
source: "iana"
},
"application/vnd.oma.bcast.simple-symbol-container": {
source: "iana"
},
"application/vnd.oma.bcast.smartcard-trigger+xml": {
source: "iana",
compressible: !0
},
"application/vnd.oma.bcast.sprov+xml": {
source: "iana",
compressible: !0
},
"application/vnd.oma.bcast.stkm": {
source: "iana"
},
"application/vnd.oma.cab-address-book+xml": {
source: "iana",
compressible: !0
},
"application/vnd.oma.cab-feature-handler+xml": {
source: "iana",
compressible: !0
},
"application/vnd.oma.cab-pcc+xml": {
source: "iana",
compressible: !0
},
"application/vnd.oma.cab-subs-invite+xml": {
source: "iana",
compressible: !0
},
"application/vnd.oma.cab-user-prefs+xml": {
source: "iana",
compressible: !0
},
"application/vnd.oma.dcd": {
source: "iana"
},
"application/vnd.oma.dcdc": {
source: "iana"
},
"application/vnd.oma.dd2+xml": {
source: "iana",
compressible: !0,
extensions: ["dd2"]
},
"application/vnd.oma.drm.risd+xml": {
source: "iana",
compressible: !0
},
"application/vnd.oma.group-usage-list+xml": {
source: "iana",
compressible: !0
},
"application/vnd.oma.lwm2m+cbor": {
source: "iana"
},
"application/vnd.oma.lwm2m+json": {
source: "iana",
compressible: !0
},
"application/vnd.oma.lwm2m+tlv": {
source: "iana"
},
"application/vnd.oma.pal+xml": {
source: "iana",
compressible: !0
},
"application/vnd.oma.poc.detailed-progress-report+xml": {
source: "iana",
compressible: !0
},
"application/vnd.oma.poc.final-report+xml": {
source: "iana",
compressible: !0
},
"application/vnd.oma.poc.groups+xml": {
source: "iana",
compressible: !0
},
"application/vnd.oma.poc.invocation-descriptor+xml": {
source: "iana",
compressible: !0
},
"application/vnd.oma.poc.optimized-progress-report+xml": {
source: "iana",
compressible: !0
},
"application/vnd.oma.push": {
source: "iana"
},
"application/vnd.oma.scidm.messages+xml": {
source: "iana",
compressible: !0
},
"application/vnd.oma.xcap-directory+xml": {
source: "iana",
compressible: !0
},
"application/vnd.omads-email+xml": {
source: "iana",
charset: "UTF-8",
compressible: !0
},
"application/vnd.omads-file+xml": {
source: "iana",
charset: "UTF-8",
compressible: !0
},
"application/vnd.omads-folder+xml": {
source: "iana",
charset: "UTF-8",
compressible: !0
},
"application/vnd.omaloc-supl-init": {
source: "iana"
},
"application/vnd.onepager": {
source: "iana"
},
"application/vnd.onepagertamp": {
source: "iana"
},
"application/vnd.onepagertamx": {
source: "iana"
},
"application/vnd.onepagertat": {
source: "iana"
},
"application/vnd.onepagertatp": {
source: "iana"
},
"application/vnd.onepagertatx": {
source: "iana"
},
"application/vnd.openblox.game+xml": {
source: "iana",
compressible: !0,
extensions: ["obgx"]
},
"application/vnd.openblox.game-binary": {
source: "iana"
},
"application/vnd.openeye.oeb": {
source: "iana"
},
"application/vnd.openofficeorg.extension": {
source: "apache",
extensions: ["oxt"]
},
"application/vnd.openstreetmap.data+xml": {
source: "iana",
compressible: !0,
extensions: ["osm"]
},
"application/vnd.opentimestamps.ots": {
source: "iana"
},
"application/vnd.openxmlformats-officedocument.custom-properties+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.customxmlproperties+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.drawing+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.drawingml.chart+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.extended-properties+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.presentationml.comments+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.presentationml.presentation": {
source: "iana",
compressible: !1,
extensions: ["pptx"]
},
"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.presentationml.slide": {
source: "iana",
extensions: ["sldx"]
},
"application/vnd.openxmlformats-officedocument.presentationml.slide+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.presentationml.slideshow": {
source: "iana",
extensions: ["ppsx"]
},
"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.presentationml.tags+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.presentationml.template": {
source: "iana",
extensions: ["potx"]
},
"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": {
source: "iana",
compressible: !1,
extensions: ["xlsx"]
},
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.spreadsheetml.template": {
source: "iana",
extensions: ["xltx"]
},
"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.theme+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.themeoverride+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.vmldrawing": {
source: "iana"
},
"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.wordprocessingml.document": {
source: "iana",
compressible: !1,
extensions: ["docx"]
},
"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.wordprocessingml.template": {
source: "iana",
extensions: ["dotx"]
},
"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-package.core-properties+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml": {
source: "iana",
compressible: !0
},
"application/vnd.openxmlformats-package.relationships+xml": {
source: "iana",
compressible: !0
},
"application/vnd.oracle.resource+json": {
source: "iana",
compressible: !0
},
"application/vnd.orange.indata": {
source: "iana"
},
"application/vnd.osa.netdeploy": {
source: "iana"
},
"application/vnd.osgeo.mapguide.package": {
source: "iana",
extensions: ["mgp"]
},
"application/vnd.osgi.bundle": {
source: "iana"
},
"application/vnd.osgi.dp": {
source: "iana",
extensions: ["dp"]
},
"application/vnd.osgi.subsystem": {
source: "iana",
extensions: ["esa"]
},
"application/vnd.otps.ct-kip+xml": {
source: "iana",
compressible: !0
},
"application/vnd.oxli.countgraph": {
source: "iana"
},
"application/vnd.pagerduty+json": {
source: "iana",
compressible: !0
},
"application/vnd.palm": {
source: "iana",
extensions: ["pdb", "pqa", "oprc"]
},
"application/vnd.panoply": {
source: "iana"
},
"application/vnd.paos.xml": {
source: "iana"
},
"application/vnd.patentdive": {
source: "iana"
},
"application/vnd.patientecommsdoc": {
source: "iana"
},
"application/vnd.pawaafile": {
source: "iana",
extensions: ["paw"]
},
"application/vnd.pcos": {
source: "iana"
},
"application/vnd.pg.format": {
source: "iana",
extensions: ["str"]
},
"application/vnd.pg.osasli": {
source: "iana",
extensions: ["ei6"]
},
"application/vnd.piaccess.application-licence": {
source: "iana"
},
"application/vnd.picsel": {
source: "iana",
extensions: ["efif"]
},
"application/vnd.pmi.widget": {
source: "iana",
extensions: ["wg"]
},
"application/vnd.poc.group-advertisement+xml": {
source: "iana",
compressible: !0
},
"application/vnd.pocketlearn": {
source: "iana",
extensions: ["plf"]
},
"application/vnd.powerbuilder6": {
source: "iana",
extensions: ["pbd"]
},
"application/vnd.powerbuilder6-s": {
source: "iana"
},
"application/vnd.powerbuilder7": {
source: "iana"
},
"application/vnd.powerbuilder7-s": {
source: "iana"
},
"application/vnd.powerbuilder75": {
source: "iana"
},
"application/vnd.powerbuilder75-s": {
source: "iana"
},
"application/vnd.preminet": {
source: "iana"
},
"application/vnd.previewsystems.box": {
source: "iana",
extensions: ["box"]
},
"application/vnd.proteus.magazine": {
source: "iana",
extensions: ["mgz"]
},
"application/vnd.psfs": {
source: "iana"
},
"application/vnd.publishare-delta-tree": {
source: "iana",
extensions: ["qps"]
},
"application/vnd.pvi.ptid1": {
source: "iana",
extensions: ["ptid"]
},
"application/vnd.pwg-multiplexed": {
source: "iana"
},
"application/vnd.pwg-xhtml-print+xml": {
source: "iana",
compressible: !0
},
"application/vnd.qualcomm.brew-app-res": {
source: "iana"
},
"application/vnd.quarantainenet": {
source: "iana"
},
"application/vnd.quark.quarkxpress": {
source: "iana",
extensions: ["qxd", "qxt", "qwd", "qwt", "qxl", "qxb"]
},
"application/vnd.quobject-quoxdocument": {
source: "iana"
},
"application/vnd.radisys.moml+xml": {
source: "iana",
compressible: !0
},
"application/vnd.radisys.msml+xml": {
source: "iana",
compressible: !0
},
"application/vnd.radisys.msml-audit+xml": {
source: "iana",
compressible: !0
},
"application/vnd.radisys.msml-audit-conf+xml": {
source: "iana",
compressible: !0
},
"application/vnd.radisys.msml-audit-conn+xml": {
source: "iana",
compressible: !0
},
"application/vnd.radisys.msml-audit-dialog+xml": {
source: "iana",
compressible: !0
},
"application/vnd.radisys.msml-audit-stream+xml": {
source: "iana",
compressible: !0
},
"application/vnd.radisys.msml-conf+xml": {
source: "iana",
compressible: !0
},
"application/vnd.radisys.msml-dialog+xml": {
source: "iana",
compressible: !0
},
"application/vnd.radisys.msml-dialog-base+xml": {
source: "iana",
compressible: !0
},
"application/vnd.radisys.msml-dialog-fax-detect+xml": {
source: "iana",
compressible: !0
},
"application/vnd.radisys.msml-dialog-fax-sendrecv+xml": {
source: "iana",
compressible: !0
},
"application/vnd.radisys.msml-dialog-group+xml": {
source: "iana",
compressible: !0
},
"application/vnd.radisys.msml-dialog-speech+xml": {
source: "iana",
compressible: !0
},
"application/vnd.radisys.msml-dialog-transform+xml": {
source: "iana",
compressible: !0
},
"application/vnd.rainstor.data": {
source: "iana"
},
"application/vnd.rapid": {
source: "iana"
},
"application/vnd.rar": {
source: "iana",
extensions: ["rar"]
},
"application/vnd.realvnc.bed": {
source: "iana",
extensions: ["bed"]
},
"application/vnd.recordare.musicxml": {
source: "iana",
extensions: ["mxl"]
},
"application/vnd.recordare.musicxml+xml": {
source: "iana",
compressible: !0,
extensions: ["musicxml"]
},
"application/vnd.renlearn.rlprint": {
source: "iana"
},
"application/vnd.resilient.logic": {
source: "iana"
},
"application/vnd.restful+json": {
source: "iana",
compressible: !0
},
"application/vnd.rig.cryptonote": {
source: "iana",
extensions: ["cryptonote"]
},
"application/vnd.rim.cod": {
source: "apache",
extensions: ["cod"]
},
"application/vnd.rn-realmedia": {
source: "apache",
extensions: ["rm"]
},
"application/vnd.rn-realmedia-vbr": {
source: "apache",
extensions: ["rmvb"]
},
"application/vnd.route66.link66+xml": {
source: "iana",
compressible: !0,
extensions: ["link66"]
},
"application/vnd.rs-274x": {
source: "iana"
},
"application/vnd.ruckus.download": {
source: "iana"
},
"application/vnd.s3sms": {
source: "iana"
},
"application/vnd.sailingtracker.track": {
source: "iana",
extensions: ["st"]
},
"application/vnd.sar": {
source: "iana"
},
"application/vnd.sbm.cid": {
source: "iana"
},
"application/vnd.sbm.mid2": {
source: "iana"
},
"application/vnd.scribus": {
source: "iana"
},
"application/vnd.sealed.3df": {
source: "iana"
},
"application/vnd.sealed.csf": {
source: "iana"
},
"application/vnd.sealed.doc": {
source: "iana"
},
"application/vnd.sealed.eml": {
source: "iana"
},
"application/vnd.sealed.mht": {
source: "iana"
},
"application/vnd.sealed.net": {
source: "iana"
},
"application/vnd.sealed.ppt": {
source: "iana"
},
"application/vnd.sealed.tiff": {
source: "iana"
},
"application/vnd.sealed.xls": {
source: "iana"
},
"application/vnd.sealedmedia.softseal.html": {
source: "iana"
},
"application/vnd.sealedmedia.softseal.pdf": {
source: "iana"
},
"application/vnd.seemail": {
source: "iana",
extensions: ["see"]
},
"application/vnd.seis+json": {
source: "iana",
compressible: !0
},
"application/vnd.sema": {
source: "iana",
extensions: ["sema"]
},
"application/vnd.semd": {
source: "iana",
extensions: ["semd"]
},
"application/vnd.semf": {
source: "iana",
extensions: ["semf"]
},
"application/vnd.shade-save-file": {
source: "iana"
},
"application/vnd.shana.informed.formdata": {
source: "iana",
extensions: ["ifm"]
},
"application/vnd.shana.informed.formtemplate": {
source: "iana",
extensions: ["itp"]
},
"application/vnd.shana.informed.interchange": {
source: "iana",
extensions: ["iif"]
},
"application/vnd.shana.informed.package": {
source: "iana",
extensions: ["ipk"]
},
"application/vnd.shootproof+json": {
source: "iana",
compressible: !0
},
"application/vnd.shopkick+json": {
source: "iana",
compressible: !0
},
"application/vnd.shp": {
source: "iana"
},
"application/vnd.shx": {
source: "iana"
},
"application/vnd.sigrok.session": {
source: "iana"
},
"application/vnd.simtech-mindmapper": {
source: "iana",
extensions: ["twd", "twds"]
},
"application/vnd.siren+json": {
source: "iana",
compressible: !0
},
"application/vnd.smaf": {
source: "iana",
extensions: ["mmf"]
},
"application/vnd.smart.notebook": {
source: "iana"
},
"application/vnd.smart.teacher": {
source: "iana",
extensions: ["teacher"]
},
"application/vnd.snesdev-page-table": {
source: "iana"
},
"application/vnd.software602.filler.form+xml": {
source: "iana",
compressible: !0,
extensions: ["fo"]
},
"application/vnd.software602.filler.form-xml-zip": {
source: "iana"
},
"application/vnd.solent.sdkm+xml": {
source: "iana",
compressible: !0,
extensions: ["sdkm", "sdkd"]
},
"application/vnd.spotfire.dxp": {
source: "iana",
extensions: ["dxp"]
},
"application/vnd.spotfire.sfs": {
source: "iana",
extensions: ["sfs"]
},
"application/vnd.sqlite3": {
source: "iana"
},
"application/vnd.sss-cod": {
source: "iana"
},
"application/vnd.sss-dtf": {
source: "iana"
},
"application/vnd.sss-ntf": {
source: "iana"
},
"application/vnd.stardivision.calc": {
source: "apache",
extensions: ["sdc"]
},
"application/vnd.stardivision.draw": {
source: "apache",
extensions: ["sda"]
},
"application/vnd.stardivision.impress": {
source: "apache",
extensions: ["sdd"]
},
"application/vnd.stardivision.math": {
source: "apache",
extensions: ["smf"]
},
"application/vnd.stardivision.writer": {
source: "apache",
extensions: ["sdw", "vor"]
},
"application/vnd.stardivision.writer-global": {
source: "apache",
extensions: ["sgl"]
},
"application/vnd.stepmania.package": {
source: "iana",
extensions: ["smzip"]
},
"application/vnd.stepmania.stepchart": {
source: "iana",
extensions: ["sm"]
},
"application/vnd.street-stream": {
source: "iana"
},
"application/vnd.sun.wadl+xml": {
source: "iana",
compressible: !0,
extensions: ["wadl"]
},
"application/vnd.sun.xml.calc": {
source: "apache",
extensions: ["sxc"]
},
"application/vnd.sun.xml.calc.template": {
source: "apache",
extensions: ["stc"]
},
"application/vnd.sun.xml.draw": {
source: "apache",
extensions: ["sxd"]
},
"application/vnd.sun.xml.draw.template": {
source: "apache",
extensions: ["std"]
},
"application/vnd.sun.xml.impress": {
source: "apache",
extensions: ["sxi"]
},
"application/vnd.sun.xml.impress.template": {
source: "apache",
extensions: ["sti"]
},
"application/vnd.sun.xml.math": {
source: "apache",
extensions: ["sxm"]
},
"application/vnd.sun.xml.writer": {
source: "apache",
extensions: ["sxw"]
},
"application/vnd.sun.xml.writer.global": {
source: "apache",
extensions: ["sxg"]
},
"application/vnd.sun.xml.writer.template": {
source: "apache",
extensions: ["stw"]
},
"application/vnd.sus-calendar": {
source: "iana",
extensions: ["sus", "susp"]
},
"application/vnd.svd": {
source: "iana",
extensions: ["svd"]
},
"application/vnd.swiftview-ics": {
source: "iana"
},
"application/vnd.sycle+xml": {
source: "iana",
compressible: !0
},
"application/vnd.syft+json": {
source: "iana",
compressible: !0
},
"application/vnd.symbian.install": {
source: "apache",
extensions: ["sis", "sisx"]
},
"application/vnd.syncml+xml": {
source: "iana",
charset: "UTF-8",
compressible: !0,
extensions: ["xsm"]
},
"application/vnd.syncml.dm+wbxml": {
source: "iana",
charset: "UTF-8",
extensions: ["bdm"]
},
"application/vnd.syncml.dm+xml": {
source: "iana",
charset: "UTF-8",
compressible: !0,
extensions: ["xdm"]
},
"application/vnd.syncml.dm.notification": {
source: "iana"
},
"application/vnd.syncml.dmddf+wbxml": {
source: "iana"
},
"application/vnd.syncml.dmddf+xml": {
source: "iana",
charset: "UTF-8",
compressible: !0,
extensions: ["ddf"]
},
"application/vnd.syncml.dmtnds+wbxml": {
source: "iana"
},
"application/vnd.syncml.dmtnds+xml": {
source: "iana",
charset: "UTF-8",
compressible: !0
},
"application/vnd.syncml.ds.notification": {
source: "iana"
},
"application/vnd.tableschema+json": {
source: "iana",
compressible: !0
},
"application/vnd.tao.intent-module-archive": {
source: "iana",
extensions: ["tao"]
},
"application/vnd.tcpdump.pcap": {
source: "iana",
extensions: ["pcap", "cap", "dmp"]
},
"application/vnd.think-cell.ppttc+json": {
source: "iana",
compressible: !0
},
"application/vnd.tmd.mediaflex.api+xml": {
source: "iana",
compressible: !0
},
"application/vnd.tml": {
source: "iana"
},
"application/vnd.tmobile-livetv": {
source: "iana",
extensions: ["tmo"]
},
"application/vnd.tri.onesource": {
source: "iana"
},
"application/vnd.trid.tpt": {
source: "iana",
extensions: ["tpt"]
},
"application/vnd.triscape.mxs": {
source: "iana",
extensions: ["mxs"]
},
"application/vnd.trueapp": {
source: "iana",
extensions: ["tra"]
},
"application/vnd.truedoc": {
source: "iana"
},
"application/vnd.ubisoft.webplayer": {
source: "iana"
},
"application/vnd.ufdl": {
source: "iana",
extensions: ["ufd", "ufdl"]
},
"application/vnd.uiq.theme": {
source: "iana",
extensions: ["utz"]
},
"application/vnd.umajin": {
source: "iana",
extensions: ["umj"]
},
"application/vnd.unity": {
source: "iana",
extensions: ["unityweb"]
},
"application/vnd.uoml+xml": {
source: "iana",
compressible: !0,
extensions: ["uoml"]
},
"application/vnd.uplanet.alert": {
source: "iana"
},
"application/vnd.uplanet.alert-wbxml": {
source: "iana"
},
"application/vnd.uplanet.bearer-choice": {
source: "iana"
},
"application/vnd.uplanet.bearer-choice-wbxml": {
source: "iana"
},
"application/vnd.uplanet.cacheop": {
source: "iana"
},
"application/vnd.uplanet.cacheop-wbxml": {
source: "iana"
},
"application/vnd.uplanet.channel": {
source: "iana"
},
"application/vnd.uplanet.channel-wbxml": {
source: "iana"
},
"application/vnd.uplanet.list": {
source: "iana"
},
"application/vnd.uplanet.list-wbxml": {
source: "iana"
},
"application/vnd.uplanet.listcmd": {
source: "iana"
},
"application/vnd.uplanet.listcmd-wbxml": {
source: "iana"
},
"application/vnd.uplanet.signal": {
source: "iana"
},
"application/vnd.uri-map": {
source: "iana"
},
"application/vnd.valve.source.material": {
source: "iana"
},
"application/vnd.vcx": {
source: "iana",
extensions: ["vcx"]
},
"application/vnd.vd-study": {
source: "iana"
},
"application/vnd.vectorworks": {
source: "iana"
},
"application/vnd.vel+json": {
source: "iana",
compressible: !0
},
"application/vnd.verimatrix.vcas": {
source: "iana"
},
"application/vnd.veritone.aion+json": {
source: "iana",
compressible: !0
},
"application/vnd.veryant.thin": {
source: "iana"
},
"application/vnd.ves.encrypted": {
source: "iana"
},
"application/vnd.vidsoft.vidconference": {
source: "iana"
},
"application/vnd.visio": {
source: "iana",
extensions: ["vsd", "vst", "vss", "vsw"]
},
"application/vnd.visionary": {
source: "iana",
extensions: ["vis"]
},
"application/vnd.vividence.scriptfile": {
source: "iana"
},
"application/vnd.vsf": {
source: "iana",
extensions: ["vsf"]
},
"application/vnd.wap.sic": {
source: "iana"
},
"application/vnd.wap.slc": {
source: "iana"
},
"application/vnd.wap.wbxml": {
source: "iana",
charset: "UTF-8",
extensions: ["wbxml"]
},
"application/vnd.wap.wmlc": {
source: "iana",
extensions: ["wmlc"]
},
"application/vnd.wap.wmlscriptc": {
source: "iana",
extensions: ["wmlsc"]
},
"application/vnd.webturbo": {
source: "iana",
extensions: ["wtb"]
},
"application/vnd.wfa.dpp": {
source: "iana"
},
"application/vnd.wfa.p2p": {
source: "iana"
},
"application/vnd.wfa.wsc": {
source: "iana"
},
"application/vnd.windows.devicepairing": {
source: "iana"
},
"application/vnd.wmc": {
source: "iana"
},
"application/vnd.wmf.bootstrap": {
source: "iana"
},
"application/vnd.wolfram.mathematica": {
source: "iana"
},
"application/vnd.wolfram.mathematica.package": {
source: "iana"
},
"application/vnd.wolfram.player": {
source: "iana",
extensions: ["nbp"]
},
"application/vnd.wordperfect": {
source: "iana",
extensions: ["wpd"]
},
"application/vnd.wqd": {
source: "iana",
extensions: ["wqd"]
},
"application/vnd.wrq-hp3000-labelled": {
source: "iana"
},
"application/vnd.wt.stf": {
source: "iana",
extensions: ["stf"]
},
"application/vnd.wv.csp+wbxml": {
source: "iana"
},
"application/vnd.wv.csp+xml": {
source: "iana",
compressible: !0
},
"application/vnd.wv.ssp+xml": {
source: "iana",
compressible: !0
},
"application/vnd.xacml+json": {
source: "iana",
compressible: !0
},
"application/vnd.xara": {
source: "iana",
extensions: ["xar"]
},
"application/vnd.xfdl": {
source: "iana",
extensions: ["xfdl"]
},
"application/vnd.xfdl.webform": {
source: "iana"
},
"application/vnd.xmi+xml": {
source: "iana",
compressible: !0
},
"application/vnd.xmpie.cpkg": {
source: "iana"
},
"application/vnd.xmpie.dpkg": {
source: "iana"
},
"application/vnd.xmpie.plan": {
source: "iana"
},
"application/vnd.xmpie.ppkg": {
source: "iana"
},
"application/vnd.xmpie.xlim": {
source: "iana"
},
"application/vnd.yamaha.hv-dic": {
source: "iana",
extensions: ["hvd"]
},
"application/vnd.yamaha.hv-script": {
source: "iana",
extensions: ["hvs"]
},
"application/vnd.yamaha.hv-voice": {
source: "iana",
extensions: ["hvp"]
},
"application/vnd.yamaha.openscoreformat": {
source: "iana",
extensions: ["osf"]
},
"application/vnd.yamaha.openscoreformat.osfpvg+xml": {
source: "iana",
compressible: !0,
extensions: ["osfpvg"]
},
"application/vnd.yamaha.remote-setup": {
source: "iana"
},
"application/vnd.yamaha.smaf-audio": {
source: "iana",
extensions: ["saf"]
},
"application/vnd.yamaha.smaf-phrase": {
source: "iana",
extensions: ["spf"]
},
"application/vnd.yamaha.through-ngn": {
source: "iana"
},
"application/vnd.yamaha.tunnel-udpencap": {
source: "iana"
},
"application/vnd.yaoweme": {
source: "iana"
},
"application/vnd.yellowriver-custom-menu": {
source: "iana",
extensions: ["cmp"]
},
"application/vnd.youtube.yt": {
source: "iana"
},
"application/vnd.zul": {
source: "iana",
extensions: ["zir", "zirz"]
},
"application/vnd.zzazz.deck+xml": {
source: "iana",
compressible: !0,
extensions: ["zaz"]
},
"application/voicexml+xml": {
source: "iana",
compressible: !0,
extensions: ["vxml"]
},
"application/voucher-cms+json": {
source: "iana",
compressible: !0
},
"application/vq-rtcpxr": {
source: "iana"
},
"application/wasm": {
source: "iana",
compressible: !0,
extensions: ["wasm"]
},
"application/watcherinfo+xml": {
source: "iana",
compressible: !0,
extensions: ["wif"]
},
"application/webpush-options+json": {
source: "iana",
compressible: !0
},
"application/whoispp-query": {
source: "iana"
},
"application/whoispp-response": {
source: "iana"
},
"application/widget": {
source: "iana",
extensions: ["wgt"]
},
"application/winhlp": {
source: "apache",
extensions: ["hlp"]
},
"application/wita": {
source: "iana"
},
"application/wordperfect5.1": {
source: "iana"
},
"application/wsdl+xml": {
source: "iana",
compressible: !0,
extensions: ["wsdl"]
},
"application/wspolicy+xml": {
source: "iana",
compressible: !0,
extensions: ["wspolicy"]
},
"application/x-7z-compressed": {
source: "apache",
compressible: !1,
extensions: ["7z"]
},
"application/x-abiword": {
source: "apache",
extensions: ["abw"]
},
"application/x-ace-compressed": {
source: "apache",
extensions: ["ace"]
},
"application/x-amf": {
source: "apache"
},
"application/x-apple-diskimage": {
source: "apache",
extensions: ["dmg"]
},
"application/x-arj": {
compressible: !1,
extensions: ["arj"]
},
"application/x-authorware-bin": {
source: "apache",
extensions: ["aab", "x32", "u32", "vox"]
},
"application/x-authorware-map": {
source: "apache",
extensions: ["aam"]
},
"application/x-authorware-seg": {
source: "apache",
extensions: ["aas"]
},
"application/x-bcpio": {
source: "apache",
extensions: ["bcpio"]
},
"application/x-bdoc": {
compressible: !1,
extensions: ["bdoc"]
},
"application/x-bittorrent": {
source: "apache",
extensions: ["torrent"]
},
"application/x-blorb": {
source: "apache",
extensions: ["blb", "blorb"]
},
"application/x-bzip": {
source: "apache",
compressible: !1,
extensions: ["bz"]
},
"application/x-bzip2": {
source: "apache",
compressible: !1,
extensions: ["bz2", "boz"]
},
"application/x-cbr": {
source: "apache",
extensions: ["cbr", "cba", "cbt", "cbz", "cb7"]
},
"application/x-cdlink": {
source: "apache",
extensions: ["vcd"]
},
"application/x-cfs-compressed": {
source: "apache",
extensions: ["cfs"]
},
"application/x-chat": {
source: "apache",
extensions: ["chat"]
},
"application/x-chess-pgn": {
source: "apache",
extensions: ["pgn"]
},
"application/x-chrome-extension": {
extensions: ["crx"]
},
"application/x-cocoa": {
source: "nginx",
extensions: ["cco"]
},
"application/x-compress": {
source: "apache"
},
"application/x-conference": {
source: "apache",
extensions: ["nsc"]
},
"application/x-cpio": {
source: "apache",
extensions: ["cpio"]
},
"application/x-csh": {
source: "apache",
extensions: ["csh"]
},
"application/x-deb": {
compressible: !1
},
"application/x-debian-package": {
source: "apache",
extensions: ["deb", "udeb"]
},
"application/x-dgc-compressed": {
source: "apache",
extensions: ["dgc"]
},
"application/x-director": {
source: "apache",
extensions: ["dir", "dcr", "dxr", "cst", "cct", "cxt", "w3d", "fgd", "swa"]
},
"application/x-doom": {
source: "apache",
extensions: ["wad"]
},
"application/x-dtbncx+xml": {
source: "apache",
compressible: !0,
extensions: ["ncx"]
},
"application/x-dtbook+xml": {
source: "apache",
compressible: !0,
extensions: ["dtb"]
},
"application/x-dtbresource+xml": {
source: "apache",
compressible: !0,
extensions: ["res"]
},
"application/x-dvi": {
source: "apache",
compressible: !1,
extensions: ["dvi"]
},
"application/x-envoy": {
source: "apache",
extensions: ["evy"]
},
"application/x-eva": {
source: "apache",
extensions: ["eva"]
},
"application/x-font-bdf": {
source: "apache",
extensions: ["bdf"]
},
"application/x-font-dos": {
source: "apache"
},
"application/x-font-framemaker": {
source: "apache"
},
"application/x-font-ghostscript": {
source: "apache",
extensions: ["gsf"]
},
"application/x-font-libgrx": {
source: "apache"
},
"application/x-font-linux-psf": {
source: "apache",
extensions: ["psf"]
},
"application/x-font-pcf": {
source: "apache",
extensions: ["pcf"]
},
"application/x-font-snf": {
source: "apache",
extensions: ["snf"]
},
"application/x-font-speedo": {
source: "apache"
},
"application/x-font-sunos-news": {
source: "apache"
},
"application/x-font-type1": {
source: "apache",
extensions: ["pfa", "pfb", "pfm", "afm"]
},
"application/x-font-vfont": {
source: "apache"
},
"application/x-freearc": {
source: "apache",
extensions: ["arc"]
},
"application/x-futuresplash": {
source: "apache",
extensions: ["spl"]
},
"application/x-gca-compressed": {
source: "apache",
extensions: ["gca"]
},
"application/x-glulx": {
source: "apache",
extensions: ["ulx"]
},
"application/x-gnumeric": {
source: "apache",
extensions: ["gnumeric"]
},
"application/x-gramps-xml": {
source: "apache",
extensions: ["gramps"]
},
"application/x-gtar": {
source: "apache",
extensions: ["gtar"]
},
"application/x-gzip": {
source: "apache"
},
"application/x-hdf": {
source: "apache",
extensions: ["hdf"]
},
"application/x-httpd-php": {
compressible: !0,
extensions: ["php"]
},
"application/x-install-instructions": {
source: "apache",
extensions: ["install"]
},
"application/x-iso9660-image": {
source: "apache",
extensions: ["iso"]
},
"application/x-iwork-keynote-sffkey": {
extensions: ["key"]
},
"application/x-iwork-numbers-sffnumbers": {
extensions: ["numbers"]
},
"application/x-iwork-pages-sffpages": {
extensions: ["pages"]
},
"application/x-java-archive-diff": {
source: "nginx",
extensions: ["jardiff"]
},
"application/x-java-jnlp-file": {
source: "apache",
compressible: !1,
extensions: ["jnlp"]
},
"application/x-javascript": {
compressible: !0
},
"application/x-keepass2": {
extensions: ["kdbx"]
},
"application/x-latex": {
source: "apache",
compressible: !1,
extensions: ["latex"]
},
"application/x-lua-bytecode": {
extensions: ["luac"]
},
"application/x-lzh-compressed": {
source: "apache",
extensions: ["lzh", "lha"]
},
"application/x-makeself": {
source: "nginx",
extensions: ["run"]
},
"application/x-mie": {
source: "apache",
extensions: ["mie"]
},
"application/x-mobipocket-ebook": {
source: "apache",
extensions: ["prc", "mobi"]
},
"application/x-mpegurl": {
compressible: !1
},
"application/x-ms-application": {
source: "apache",
extensions: ["application"]
},
"application/x-ms-shortcut": {
source: "apache",
extensions: ["lnk"]
},
"application/x-ms-wmd": {
source: "apache",
extensions: ["wmd"]
},
"application/x-ms-wmz": {
source: "apache",
extensions: ["wmz"]
},
"application/x-ms-xbap": {
source: "apache",
extensions: ["xbap"]
},
"application/x-msaccess": {
source: "apache",
extensions: ["mdb"]
},
"application/x-msbinder": {
source: "apache",
extensions: ["obd"]
},
"application/x-mscardfile": {
source: "apache",
extensions: ["crd"]
},
"application/x-msclip": {
source: "apache",
extensions: ["clp"]
},
"application/x-msdos-program": {
extensions: ["exe"]
},
"application/x-msdownload": {
source: "apache",
extensions: ["exe", "dll", "com", "bat", "msi"]
},
"application/x-msmediaview": {
source: "apache",
extensions: ["mvb", "m13", "m14"]
},
"application/x-msmetafile": {
source: "apache",
extensions: ["wmf", "wmz", "emf", "emz"]
},
"application/x-msmoney": {
source: "apache",
extensions: ["mny"]
},
"application/x-mspublisher": {
source: "apache",
extensions: ["pub"]
},
"application/x-msschedule": {
source: "apache",
extensions: ["scd"]
},
"application/x-msterminal": {
source: "apache",
extensions: ["trm"]
},
"application/x-mswrite": {
source: "apache",
extensions: ["wri"]
},
"application/x-netcdf": {
source: "apache",
extensions: ["nc", "cdf"]
},
"application/x-ns-proxy-autoconfig": {
compressible: !0,
extensions: ["pac"]
},
"application/x-nzb": {
source: "apache",
extensions: ["nzb"]
},
"application/x-perl": {
source: "nginx",
extensions: ["pl", "pm"]
},
"application/x-pilot": {
source: "nginx",
extensions: ["prc", "pdb"]
},
"application/x-pkcs12": {
source: "apache",
compressible: !1,
extensions: ["p12", "pfx"]
},
"application/x-pkcs7-certificates": {
source: "apache",
extensions: ["p7b", "spc"]
},
"application/x-pkcs7-certreqresp": {
source: "apache",
extensions: ["p7r"]
},
"application/x-pki-message": {
source: "iana"
},
"application/x-rar-compressed": {
source: "apache",
compressible: !1,
extensions: ["rar"]
},
"application/x-redhat-package-manager": {
source: "nginx",
extensions: ["rpm"]
},
"application/x-research-info-systems": {
source: "apache",
extensions: ["ris"]
},
"application/x-sea": {
source: "nginx",
extensions: ["sea"]
},
"application/x-sh": {
source: "apache",
compressible: !0,
extensions: ["sh"]
},
"application/x-shar": {
source: "apache",
extensions: ["shar"]
},
"application/x-shockwave-flash": {
source: "apache",
compressible: !1,
extensions: ["swf"]
},
"application/x-silverlight-app": {
source: "apache",
extensions: ["xap"]
},
"application/x-sql": {
source: "apache",
extensions: ["sql"]
},
"application/x-stuffit": {
source: "apache",
compressible: !1,
extensions: ["sit"]
},
"application/x-stuffitx": {
source: "apache",
extensions: ["sitx"]
},
"application/x-subrip": {
source: "apache",
extensions: ["srt"]
},
"application/x-sv4cpio": {
source: "apache",
extensions: ["sv4cpio"]
},
"application/x-sv4crc": {
source: "apache",
extensions: ["sv4crc"]
},
"application/x-t3vm-image": {
source: "apache",
extensions: ["t3"]
},
"application/x-tads": {
source: "apache",
extensions: ["gam"]
},
"application/x-tar": {
source: "apache",
compressible: !0,
extensions: ["tar"]
},
"application/x-tcl": {
source: "apache",
extensions: ["tcl", "tk"]
},
"application/x-tex": {
source: "apache",
extensions: ["tex"]
},
"application/x-tex-tfm": {
source: "apache",
extensions: ["tfm"]
},
"application/x-texinfo": {
source: "apache",
extensions: ["texinfo", "texi"]
},
"application/x-tgif": {
source: "apache",
extensions: ["obj"]
},
"application/x-ustar": {
source: "apache",
extensions: ["ustar"]
},
"application/x-virtualbox-hdd": {
compressible: !0,
extensions: ["hdd"]
},
"application/x-virtualbox-ova": {
compressible: !0,
extensions: ["ova"]
},
"application/x-virtualbox-ovf": {
compressible: !0,
extensions: ["ovf"]
},
"application/x-virtualbox-vbox": {
compressible: !0,
extensions: ["vbox"]
},
"application/x-virtualbox-vbox-extpack": {
compressible: !1,
extensions: ["vbox-extpack"]
},
"application/x-virtualbox-vdi": {
compressible: !0,
extensions: ["vdi"]
},
"application/x-virtualbox-vhd": {
compressible: !0,
extensions: ["vhd"]
},
"application/x-virtualbox-vmdk": {
compressible: !0,
extensions: ["vmdk"]
},
"application/x-wais-source": {
source: "apache",
extensions: ["src"]
},
"application/x-web-app-manifest+json": {
compressible: !0,
extensions: ["webapp"]
},
"application/x-www-form-urlencoded": {
source: "iana",
compressible: !0
},
"application/x-x509-ca-cert": {
source: "iana",
extensions: ["der", "crt", "pem"]
},
"application/x-x509-ca-ra-cert": {
source: "iana"
},
"application/x-x509-next-ca-cert": {
source: "iana"
},
"application/x-xfig": {
source: "apache",
extensions: ["fig"]
},
"application/x-xliff+xml": {
source: "apache",
compressible: !0,
extensions: ["xlf"]
},
"application/x-xpinstall": {
source: "apache",
compressible: !1,
extensions: ["xpi"]
},
"application/x-xz": {
source: "apache",
extensions: ["xz"]
},
"application/x-zmachine": {
source: "apache",
extensions: ["z1", "z2", "z3", "z4", "z5", "z6", "z7", "z8"]
},
"application/x400-bp": {
source: "iana"
},
"application/xacml+xml": {
source: "iana",
compressible: !0
},
"application/xaml+xml": {
source: "apache",
compressible: !0,
extensions: ["xaml"]
},
"application/xcap-att+xml": {
source: "iana",
compressible: !0,
extensions: ["xav"]
},
"application/xcap-caps+xml": {
source: "iana",
compressible: !0,
extensions: ["xca"]
},
"application/xcap-diff+xml": {
source: "iana",
compressible: !0,
extensions: ["xdf"]
},
"application/xcap-el+xml": {
source: "iana",
compressible: !0,
extensions: ["xel"]
},
"application/xcap-error+xml": {
source: "iana",
compressible: !0
},
"application/xcap-ns+xml": {
source: "iana",
compressible: !0,
extensions: ["xns"]
},
"application/xcon-conference-info+xml": {
source: "iana",
compressible: !0
},
"application/xcon-conference-info-diff+xml": {
source: "iana",
compressible: !0
},
"application/xenc+xml": {
source: "iana",
compressible: !0,
extensions: ["xenc"]
},
"application/xhtml+xml": {
source: "iana",
compressible: !0,
extensions: ["xhtml", "xht"]
},
"application/xhtml-voice+xml": {
source: "apache",
compressible: !0
},
"application/xliff+xml": {
source: "iana",
compressible: !0,
extensions: ["xlf"]
},
"application/xml": {
source: "iana",
compressible: !0,
extensions: ["xml", "xsl", "xsd", "rng"]
},
"application/xml-dtd": {
source: "iana",
compressible: !0,
extensions: ["dtd"]
},
"application/xml-external-parsed-entity": {
source: "iana"
},
"application/xml-patch+xml": {
source: "iana",
compressible: !0
},
"application/xmpp+xml": {
source: "iana",
compressible: !0
},
"application/xop+xml": {
source: "iana",
compressible: !0,
extensions: ["xop"]
},
"application/xproc+xml": {
source: "apache",
compressible: !0,
extensions: ["xpl"]
},
"application/xslt+xml": {
source: "iana",
compressible: !0,
extensions: ["xsl", "xslt"]
},
"application/xspf+xml": {
source: "apache",
compressible: !0,
extensions: ["xspf"]
},
"application/xv+xml": {
source: "iana",
compressible: !0,
extensions: ["mxml", "xhvml", "xvml", "xvm"]
},
"application/yang": {
source: "iana",
extensions: ["yang"]
},
"application/yang-data+json": {
source: "iana",
compressible: !0
},
"application/yang-data+xml": {
source: "iana",
compressible: !0
},
"application/yang-patch+json": {
source: "iana",
compressible: !0
},
"application/yang-patch+xml": {
source: "iana",
compressible: !0
},
"application/yin+xml": {
source: "iana",
compressible: !0,
extensions: ["yin"]
},
"application/zip": {
source: "iana",
compressible: !1,
extensions: ["zip"]
},
"application/zlib": {
source: "iana"
},
"application/zstd": {
source: "iana"
},
"audio/1d-interleaved-parityfec": {
source: "iana"
},
"audio/32kadpcm": {
source: "iana"
},
"audio/3gpp": {
source: "iana",
compressible: !1,
extensions: ["3gpp"]
},
"audio/3gpp2": {
source: "iana"
},
"audio/aac": {
source: "iana"
},
"audio/ac3": {
source: "iana"
},
"audio/adpcm": {
source: "apache",
extensions: ["adp"]
},
"audio/amr": {
source: "iana",
extensions: ["amr"]
},
"audio/amr-wb": {
source: "iana"
},
"audio/amr-wb+": {
source: "iana"
},
"audio/aptx": {
source: "iana"
},
"audio/asc": {
source: "iana"
},
"audio/atrac-advanced-lossless": {
source: "iana"
},
"audio/atrac-x": {
source: "iana"
},
"audio/atrac3": {
source: "iana"
},
"audio/basic": {
source: "iana",
compressible: !1,
extensions: ["au", "snd"]
},
"audio/bv16": {
source: "iana"
},
"audio/bv32": {
source: "iana"
},
"audio/clearmode": {
source: "iana"
},
"audio/cn": {
source: "iana"
},
"audio/dat12": {
source: "iana"
},
"audio/dls": {
source: "iana"
},
"audio/dsr-es201108": {
source: "iana"
},
"audio/dsr-es202050": {
source: "iana"
},
"audio/dsr-es202211": {
source: "iana"
},
"audio/dsr-es202212": {
source: "iana"
},
"audio/dv": {
source: "iana"
},
"audio/dvi4": {
source: "iana"
},
"audio/eac3": {
source: "iana"
},
"audio/encaprtp": {
source: "iana"
},
"audio/evrc": {
source: "iana"
},
"audio/evrc-qcp": {
source: "iana"
},
"audio/evrc0": {
source: "iana"
},
"audio/evrc1": {
source: "iana"
},
"audio/evrcb": {
source: "iana"
},
"audio/evrcb0": {
source: "iana"
},
"audio/evrcb1": {
source: "iana"
},
"audio/evrcnw": {
source: "iana"
},
"audio/evrcnw0": {
source: "iana"
},
"audio/evrcnw1": {
source: "iana"
},
"audio/evrcwb": {
source: "iana"
},
"audio/evrcwb0": {
source: "iana"
},
"audio/evrcwb1": {
source: "iana"
},
"audio/evs": {
source: "iana"
},
"audio/flexfec": {
source: "iana"
},
"audio/fwdred": {
source: "iana"
},
"audio/g711-0": {
source: "iana"
},
"audio/g719": {
source: "iana"
},
"audio/g722": {
source: "iana"
},
"audio/g7221": {
source: "iana"
},
"audio/g723": {
source: "iana"
},
"audio/g726-16": {
source: "iana"
},
"audio/g726-24": {
source: "iana"
},
"audio/g726-32": {
source: "iana"
},
"audio/g726-40": {
source: "iana"
},
"audio/g728": {
source: "iana"
},
"audio/g729": {
source: "iana"
},
"audio/g7291": {
source: "iana"
},
"audio/g729d": {
source: "iana"
},
"audio/g729e": {
source: "iana"
},
"audio/gsm": {
source: "iana"
},
"audio/gsm-efr": {
source: "iana"
},
"audio/gsm-hr-08": {
source: "iana"
},
"audio/ilbc": {
source: "iana"
},
"audio/ip-mr_v2.5": {
source: "iana"
},
"audio/isac": {
source: "apache"
},
"audio/l16": {
source: "iana"
},
"audio/l20": {
source: "iana"
},
"audio/l24": {
source: "iana",
compressible: !1
},
"audio/l8": {
source: "iana"
},
"audio/lpc": {
source: "iana"
},
"audio/melp": {
source: "iana"
},
"audio/melp1200": {
source: "iana"
},
"audio/melp2400": {
source: "iana"
},
"audio/melp600": {
source: "iana"
},
"audio/mhas": {
source: "iana"
},
"audio/midi": {
source: "apache",
extensions: ["mid", "midi", "kar", "rmi"]
},
"audio/mobile-xmf": {
source: "iana",
extensions: ["mxmf"]
},
"audio/mp3": {
compressible: !1,
extensions: ["mp3"]
},
"audio/mp4": {
source: "iana",
compressible: !1,
extensions: ["m4a", "mp4a"]
},
"audio/mp4a-latm": {
source: "iana"
},
"audio/mpa": {
source: "iana"
},
"audio/mpa-robust": {
source: "iana"
},
"audio/mpeg": {
source: "iana",
compressible: !1,
extensions: ["mpga", "mp2", "mp2a", "mp3", "m2a", "m3a"]
},
"audio/mpeg4-generic": {
source: "iana"
},
"audio/musepack": {
source: "apache"
},
"audio/ogg": {
source: "iana",
compressible: !1,
extensions: ["oga", "ogg", "spx", "opus"]
},
"audio/opus": {
source: "iana"
},
"audio/parityfec": {
source: "iana"
},
"audio/pcma": {
source: "iana"
},
"audio/pcma-wb": {
source: "iana"
},
"audio/pcmu": {
source: "iana"
},
"audio/pcmu-wb": {
source: "iana"
},
"audio/prs.sid": {
source: "iana"
},
"audio/qcelp": {
source: "iana"
},
"audio/raptorfec": {
source: "iana"
},
"audio/red": {
source: "iana"
},
"audio/rtp-enc-aescm128": {
source: "iana"
},
"audio/rtp-midi": {
source: "iana"
},
"audio/rtploopback": {
source: "iana"
},
"audio/rtx": {
source: "iana"
},
"audio/s3m": {
source: "apache",
extensions: ["s3m"]
},
"audio/scip": {
source: "iana"
},
"audio/silk": {
source: "apache",
extensions: ["sil"]
},
"audio/smv": {
source: "iana"
},
"audio/smv-qcp": {
source: "iana"
},
"audio/smv0": {
source: "iana"
},
"audio/sofa": {
source: "iana"
},
"audio/sp-midi": {
source: "iana"
},
"audio/speex": {
source: "iana"
},
"audio/t140c": {
source: "iana"
},
"audio/t38": {
source: "iana"
},
"audio/telephone-event": {
source: "iana"
},
"audio/tetra_acelp": {
source: "iana"
},
"audio/tetra_acelp_bb": {
source: "iana"
},
"audio/tone": {
source: "iana"
},
"audio/tsvcis": {
source: "iana"
},
"audio/uemclip": {
source: "iana"
},
"audio/ulpfec": {
source: "iana"
},
"audio/usac": {
source: "iana"
},
"audio/vdvi": {
source: "iana"
},
"audio/vmr-wb": {
source: "iana"
},
"audio/vnd.3gpp.iufp": {
source: "iana"
},
"audio/vnd.4sb": {
source: "iana"
},
"audio/vnd.audiokoz": {
source: "iana"
},
"audio/vnd.celp": {
source: "iana"
},
"audio/vnd.cisco.nse": {
source: "iana"
},
"audio/vnd.cmles.radio-events": {
source: "iana"
},
"audio/vnd.cns.anp1": {
source: "iana"
},
"audio/vnd.cns.inf1": {
source: "iana"
},
"audio/vnd.dece.audio": {
source: "iana",
extensions: ["uva", "uvva"]
},
"audio/vnd.digital-winds": {
source: "iana",
extensions: ["eol"]
},
"audio/vnd.dlna.adts": {
source: "iana"
},
"audio/vnd.dolby.heaac.1": {
source: "iana"
},
"audio/vnd.dolby.heaac.2": {
source: "iana"
},
"audio/vnd.dolby.mlp": {
source: "iana"
},
"audio/vnd.dolby.mps": {
source: "iana"
},
"audio/vnd.dolby.pl2": {
source: "iana"
},
"audio/vnd.dolby.pl2x": {
source: "iana"
},
"audio/vnd.dolby.pl2z": {
source: "iana"
},
"audio/vnd.dolby.pulse.1": {
source: "iana"
},
"audio/vnd.dra": {
source: "iana",
extensions: ["dra"]
},
"audio/vnd.dts": {
source: "iana",
extensions: ["dts"]
},
"audio/vnd.dts.hd": {
source: "iana",
extensions: ["dtshd"]
},
"audio/vnd.dts.uhd": {
source: "iana"
},
"audio/vnd.dvb.file": {
source: "iana"
},
"audio/vnd.everad.plj": {
source: "iana"
},
"audio/vnd.hns.audio": {
source: "iana"
},
"audio/vnd.lucent.voice": {
source: "iana",
extensions: ["lvp"]
},
"audio/vnd.ms-playready.media.pya": {
source: "iana",
extensions: ["pya"]
},
"audio/vnd.nokia.mobile-xmf": {
source: "iana"
},
"audio/vnd.nortel.vbk": {
source: "iana"
},
"audio/vnd.nuera.ecelp4800": {
source: "iana",
extensions: ["ecelp4800"]
},
"audio/vnd.nuera.ecelp7470": {
source: "iana",
extensions: ["ecelp7470"]
},
"audio/vnd.nuera.ecelp9600": {
source: "iana",
extensions: ["ecelp9600"]
},
"audio/vnd.octel.sbc": {
source: "iana"
},
"audio/vnd.presonus.multitrack": {
source: "iana"
},
"audio/vnd.qcelp": {
source: "iana"
},
"audio/vnd.rhetorex.32kadpcm": {
source: "iana"
},
"audio/vnd.rip": {
source: "iana",
extensions: ["rip"]
},
"audio/vnd.rn-realaudio": {
compressible: !1
},
"audio/vnd.sealedmedia.softseal.mpeg": {
source: "iana"
},
"audio/vnd.vmx.cvsd": {
source: "iana"
},
"audio/vnd.wave": {
compressible: !1
},
"audio/vorbis": {
source: "iana",
compressible: !1
},
"audio/vorbis-config": {
source: "iana"
},
"audio/wav": {
compressible: !1,
extensions: ["wav"]
},
"audio/wave": {
compressible: !1,
extensions: ["wav"]
},
"audio/webm": {
source: "apache",
compressible: !1,
extensions: ["weba"]
},
"audio/x-aac": {
source: "apache",
compressible: !1,
extensions: ["aac"]
},
"audio/x-aiff": {
source: "apache",
extensions: ["aif", "aiff", "aifc"]
},
"audio/x-caf": {
source: "apache",
compressible: !1,
extensions: ["caf"]
},
"audio/x-flac": {
source: "apache",
extensions: ["flac"]
},
"audio/x-m4a": {
source: "nginx",
extensions: ["m4a"]
},
"audio/x-matroska": {
source: "apache",
extensions: ["mka"]
},
"audio/x-mpegurl": {
source: "apache",
extensions: ["m3u"]
},
"audio/x-ms-wax": {
source: "apache",
extensions: ["wax"]
},
"audio/x-ms-wma": {
source: "apache",
extensions: ["wma"]
},
"audio/x-pn-realaudio": {
source: "apache",
extensions: ["ram", "ra"]
},
"audio/x-pn-realaudio-plugin": {
source: "apache",
extensions: ["rmp"]
},
"audio/x-realaudio": {
source: "nginx",
extensions: ["ra"]
},
"audio/x-tta": {
source: "apache"
},
"audio/x-wav": {
source: "apache",
extensions: ["wav"]
},
"audio/xm": {
source: "apache",
extensions: ["xm"]
},
"chemical/x-cdx": {
source: "apache",
extensions: ["cdx"]
},
"chemical/x-cif": {
source: "apache",
extensions: ["cif"]
},
"chemical/x-cmdf": {
source: "apache",
extensions: ["cmdf"]
},
"chemical/x-cml": {
source: "apache",
extensions: ["cml"]
},
"chemical/x-csml": {
source: "apache",
extensions: ["csml"]
},
"chemical/x-pdb": {
source: "apache"
},
"chemical/x-xyz": {
source: "apache",
extensions: ["xyz"]
},
"font/collection": {
source: "iana",
extensions: ["ttc"]
},
"font/otf": {
source: "iana",
compressible: !0,
extensions: ["otf"]
},
"font/sfnt": {
source: "iana"
},
"font/ttf": {
source: "iana",
compressible: !0,
extensions: ["ttf"]
},
"font/woff": {
source: "iana",
extensions: ["woff"]
},
"font/woff2": {
source: "iana",
extensions: ["woff2"]
},
"image/aces": {
source: "iana",
extensions: ["exr"]
},
"image/apng": {
compressible: !1,
extensions: ["apng"]
},
"image/avci": {
source: "iana",
extensions: ["avci"]
},
"image/avcs": {
source: "iana",
extensions: ["avcs"]
},
"image/avif": {
source: "iana",
compressible: !1,
extensions: ["avif"]
},
"image/bmp": {
source: "iana",
compressible: !0,
extensions: ["bmp"]
},
"image/cgm": {
source: "iana",
extensions: ["cgm"]
},
"image/dicom-rle": {
source: "iana",
extensions: ["drle"]
},
"image/emf": {
source: "iana",
extensions: ["emf"]
},
"image/fits": {
source: "iana",
extensions: ["fits"]
},
"image/g3fax": {
source: "iana",
extensions: ["g3"]
},
"image/gif": {
source: "iana",
compressible: !1,
extensions: ["gif"]
},
"image/heic": {
source: "iana",
extensions: ["heic"]
},
"image/heic-sequence": {
source: "iana",
extensions: ["heics"]
},
"image/heif": {
source: "iana",
extensions: ["heif"]
},
"image/heif-sequence": {
source: "iana",
extensions: ["heifs"]
},
"image/hej2k": {
source: "iana",
extensions: ["hej2"]
},
"image/hsj2": {
source: "iana",
extensions: ["hsj2"]
},
"image/ief": {
source: "iana",
extensions: ["ief"]
},
"image/jls": {
source: "iana",
extensions: ["jls"]
},
"image/jp2": {
source: "iana",
compressible: !1,
extensions: ["jp2", "jpg2"]
},
"image/jpeg": {
source: "iana",
compressible: !1,
extensions: ["jpeg", "jpg", "jpe"]
},
"image/jph": {
source: "iana",
extensions: ["jph"]
},
"image/jphc": {
source: "iana",
extensions: ["jhc"]
},
"image/jpm": {
source: "iana",
compressible: !1,
extensions: ["jpm"]
},
"image/jpx": {
source: "iana",
compressible: !1,
extensions: ["jpx", "jpf"]
},
"image/jxr": {
source: "iana",
extensions: ["jxr"]
},
"image/jxra": {
source: "iana",
extensions: ["jxra"]
},
"image/jxrs": {
source: "iana",
extensions: ["jxrs"]
},
"image/jxs": {
source: "iana",
extensions: ["jxs"]
},
"image/jxsc": {
source: "iana",
extensions: ["jxsc"]
},
"image/jxsi": {
source: "iana",
extensions: ["jxsi"]
},
"image/jxss": {
source: "iana",
extensions: ["jxss"]
},
"image/ktx": {
source: "iana",
extensions: ["ktx"]
},
"image/ktx2": {
source: "iana",
extensions: ["ktx2"]
},
"image/naplps": {
source: "iana"
},
"image/pjpeg": {
compressible: !1
},
"image/png": {
source: "iana",
compressible: !1,
extensions: ["png"]
},
"image/prs.btif": {
source: "iana",
extensions: ["btif"]
},
"image/prs.pti": {
source: "iana",
extensions: ["pti"]
},
"image/pwg-raster": {
source: "iana"
},
"image/sgi": {
source: "apache",
extensions: ["sgi"]
},
"image/svg+xml": {
source: "iana",
compressible: !0,
extensions: ["svg", "svgz"]
},
"image/t38": {
source: "iana",
extensions: ["t38"]
},
"image/tiff": {
source: "iana",
compressible: !1,
extensions: ["tif", "tiff"]
},
"image/tiff-fx": {
source: "iana",
extensions: ["tfx"]
},
"image/vnd.adobe.photoshop": {
source: "iana",
compressible: !0,
extensions: ["psd"]
},
"image/vnd.airzip.accelerator.azv": {
source: "iana",
extensions: ["azv"]
},
"image/vnd.cns.inf2": {
source: "iana"
},
"image/vnd.dece.graphic": {
source: "iana",
extensions: ["uvi", "uvvi", "uvg", "uvvg"]
},
"image/vnd.djvu": {
source: "iana",
extensions: ["djvu", "djv"]
},
"image/vnd.dvb.subtitle": {
source: "iana",
extensions: ["sub"]
},
"image/vnd.dwg": {
source: "iana",
extensions: ["dwg"]
},
"image/vnd.dxf": {
source: "iana",
extensions: ["dxf"]
},
"image/vnd.fastbidsheet": {
source: "iana",
extensions: ["fbs"]
},
"image/vnd.fpx": {
source: "iana",
extensions: ["fpx"]
},
"image/vnd.fst": {
source: "iana",
extensions: ["fst"]
},
"image/vnd.fujixerox.edmics-mmr": {
source: "iana",
extensions: ["mmr"]
},
"image/vnd.fujixerox.edmics-rlc": {
source: "iana",
extensions: ["rlc"]
},
"image/vnd.globalgraphics.pgb": {
source: "iana"
},
"image/vnd.microsoft.icon": {
source: "iana",
compressible: !0,
extensions: ["ico"]
},
"image/vnd.mix": {
source: "iana"
},
"image/vnd.mozilla.apng": {
source: "iana"
},
"image/vnd.ms-dds": {
compressible: !0,
extensions: ["dds"]
},
"image/vnd.ms-modi": {
source: "iana",
extensions: ["mdi"]
},
"image/vnd.ms-photo": {
source: "apache",
extensions: ["wdp"]
},
"image/vnd.net-fpx": {
source: "iana",
extensions: ["npx"]
},
"image/vnd.pco.b16": {
source: "iana",
extensions: ["b16"]
},
"image/vnd.radiance": {
source: "iana"
},
"image/vnd.sealed.png": {
source: "iana"
},
"image/vnd.sealedmedia.softseal.gif": {
source: "iana"
},
"image/vnd.sealedmedia.softseal.jpg": {
source: "iana"
},
"image/vnd.svf": {
source: "iana"
},
"image/vnd.tencent.tap": {
source: "iana",
extensions: ["tap"]
},
"image/vnd.valve.source.texture": {
source: "iana",
extensions: ["vtf"]
},
"image/vnd.wap.wbmp": {
source: "iana",
extensions: ["wbmp"]
},
"image/vnd.xiff": {
source: "iana",
extensions: ["xif"]
},
"image/vnd.zbrush.pcx": {
source: "iana",
extensions: ["pcx"]
},
"image/webp": {
source: "apache",
extensions: ["webp"]
},
"image/wmf": {
source: "iana",
extensions: ["wmf"]
},
"image/x-3ds": {
source: "apache",
extensions: ["3ds"]
},
"image/x-cmu-raster": {
source: "apache",
extensions: ["ras"]
},
"image/x-cmx": {
source: "apache",
extensions: ["cmx"]
},
"image/x-freehand": {
source: "apache",
extensions: ["fh", "fhc", "fh4", "fh5", "fh7"]
},
"image/x-icon": {
source: "apache",
compressible: !0,
extensions: ["ico"]
},
"image/x-jng": {
source: "nginx",
extensions: ["jng"]
},
"image/x-mrsid-image": {
source: "apache",
extensions: ["sid"]
},
"image/x-ms-bmp": {
source: "nginx",
compressible: !0,
extensions: ["bmp"]
},
"image/x-pcx": {
source: "apache",
extensions: ["pcx"]
},
"image/x-pict": {
source: "apache",
extensions: ["pic", "pct"]
},
"image/x-portable-anymap": {
source: "apache",
extensions: ["pnm"]
},
"image/x-portable-bitmap": {
source: "apache",
extensions: ["pbm"]
},
"image/x-portable-graymap": {
source: "apache",
extensions: ["pgm"]
},
"image/x-portable-pixmap": {
source: "apache",
extensions: ["ppm"]
},
"image/x-rgb": {
source: "apache",
extensions: ["rgb"]
},
"image/x-tga": {
source: "apache",
extensions: ["tga"]
},
"image/x-xbitmap": {
source: "apache",
extensions: ["xbm"]
},
"image/x-xcf": {
compressible: !1
},
"image/x-xpixmap": {
source: "apache",
extensions: ["xpm"]
},
"image/x-xwindowdump": {
source: "apache",
extensions: ["xwd"]
},
"message/cpim": {
source: "iana"
},
"message/delivery-status": {
source: "iana"
},
"message/disposition-notification": {
source: "iana",
extensions: ["disposition-notification"]
},
"message/external-body": {
source: "iana"
},
"message/feedback-report": {
source: "iana"
},
"message/global": {
source: "iana",
extensions: ["u8msg"]
},
"message/global-delivery-status": {
source: "iana",
extensions: ["u8dsn"]
},
"message/global-disposition-notification": {
source: "iana",
extensions: ["u8mdn"]
},
"message/global-headers": {
source: "iana",
extensions: ["u8hdr"]
},
"message/http": {
source: "iana",
compressible: !1
},
"message/imdn+xml": {
source: "iana",
compressible: !0
},
"message/news": {
source: "iana"
},
"message/partial": {
source: "iana",
compressible: !1
},
"message/rfc822": {
source: "iana",
compressible: !0,
extensions: ["eml", "mime"]
},
"message/s-http": {
source: "iana"
},
"message/sip": {
source: "iana"
},
"message/sipfrag": {
source: "iana"
},
"message/tracking-status": {
source: "iana"
},
"message/vnd.si.simp": {
source: "iana"
},
"message/vnd.wfa.wsc": {
source: "iana",
extensions: ["wsc"]
},
"model/3mf": {
source: "iana",
extensions: ["3mf"]
},
"model/e57": {
source: "iana"
},
"model/gltf+json": {
source: "iana",
compressible: !0,
extensions: ["gltf"]
},
"model/gltf-binary": {
source: "iana",
compressible: !0,
extensions: ["glb"]
},
"model/iges": {
source: "iana",
compressible: !1,
extensions: ["igs", "iges"]
},
"model/mesh": {
source: "iana",
compressible: !1,
extensions: ["msh", "mesh", "silo"]
},
"model/mtl": {
source: "iana",
extensions: ["mtl"]
},
"model/obj": {
source: "iana",
extensions: ["obj"]
},
"model/step": {
source: "iana"
},
"model/step+xml": {
source: "iana",
compressible: !0,
extensions: ["stpx"]
},
"model/step+zip": {
source: "iana",
compressible: !1,
extensions: ["stpz"]
},
"model/step-xml+zip": {
source: "iana",
compressible: !1,
extensions: ["stpxz"]
},
"model/stl": {
source: "iana",
extensions: ["stl"]
},
"model/vnd.collada+xml": {
source: "iana",
compressible: !0,
extensions: ["dae"]
},
"model/vnd.dwf": {
source: "iana",
extensions: ["dwf"]
},
"model/vnd.flatland.3dml": {
source: "iana"
},
"model/vnd.gdl": {
source: "iana",
extensions: ["gdl"]
},
"model/vnd.gs-gdl": {
source: "apache"
},
"model/vnd.gs.gdl": {
source: "iana"
},
"model/vnd.gtw": {
source: "iana",
extensions: ["gtw"]
},
"model/vnd.moml+xml": {
source: "iana",
compressible: !0
},
"model/vnd.mts": {
source: "iana",
extensions: ["mts"]
},
"model/vnd.opengex": {
source: "iana",
extensions: ["ogex"]
},
"model/vnd.parasolid.transmit.binary": {
source: "iana",
extensions: ["x_b"]
},
"model/vnd.parasolid.transmit.text": {
source: "iana",
extensions: ["x_t"]
},
"model/vnd.pytha.pyox": {
source: "iana"
},
"model/vnd.rosette.annotated-data-model": {
source: "iana"
},
"model/vnd.sap.vds": {
source: "iana",
extensions: ["vds"]
},
"model/vnd.usdz+zip": {
source: "iana",
compressible: !1,
extensions: ["usdz"]
},
"model/vnd.valve.source.compiled-map": {
source: "iana",
extensions: ["bsp"]
},
"model/vnd.vtu": {
source: "iana",
extensions: ["vtu"]
},
"model/vrml": {
source: "iana",
compressible: !1,
extensions: ["wrl", "vrml"]
},
"model/x3d+binary": {
source: "apache",
compressible: !1,
extensions: ["x3db", "x3dbz"]
},
"model/x3d+fastinfoset": {
source: "iana",
extensions: ["x3db"]
},
"model/x3d+vrml": {
source: "apache",
compressible: !1,
extensions: ["x3dv", "x3dvz"]
},
"model/x3d+xml": {
source: "iana",
compressible: !0,
extensions: ["x3d", "x3dz"]
},
"model/x3d-vrml": {
source: "iana",
extensions: ["x3dv"]
},
"multipart/alternative": {
source: "iana",
compressible: !1
},
"multipart/appledouble": {
source: "iana"
},
"multipart/byteranges": {
source: "iana"
},
"multipart/digest": {
source: "iana"
},
"multipart/encrypted": {
source: "iana",
compressible: !1
},
"multipart/form-data": {
source: "iana",
compressible: !1
},
"multipart/header-set": {
source: "iana"
},
"multipart/mixed": {
source: "iana"
},
"multipart/multilingual": {
source: "iana"
},
"multipart/parallel": {
source: "iana"
},
"multipart/related": {
source: "iana",
compressible: !1
},
"multipart/report": {
source: "iana"
},
"multipart/signed": {
source: "iana",
compressible: !1
},
"multipart/vnd.bint.med-plus": {
source: "iana"
},
"multipart/voice-message": {
source: "iana"
},
"multipart/x-mixed-replace": {
source: "iana"
},
"text/1d-interleaved-parityfec": {
source: "iana"
},
"text/cache-manifest": {
source: "iana",
compressible: !0,
extensions: ["appcache", "manifest"]
},
"text/calendar": {
source: "iana",
extensions: ["ics", "ifb"]
},
"text/calender": {
compressible: !0
},
"text/cmd": {
compressible: !0
},
"text/coffeescript": {
extensions: ["coffee", "litcoffee"]
},
"text/cql": {
source: "iana"
},
"text/cql-expression": {
source: "iana"
},
"text/cql-identifier": {
source: "iana"
},
"text/css": {
source: "iana",
charset: "UTF-8",
compressible: !0,
extensions: ["css"]
},
"text/csv": {
source: "iana",
compressible: !0,
extensions: ["csv"]
},
"text/csv-schema": {
source: "iana"
},
"text/directory": {
source: "iana"
},
"text/dns": {
source: "iana"
},
"text/ecmascript": {
source: "iana"
},
"text/encaprtp": {
source: "iana"
},
"text/enriched": {
source: "iana"
},
"text/fhirpath": {
source: "iana"
},
"text/flexfec": {
source: "iana"
},
"text/fwdred": {
source: "iana"
},
"text/gff3": {
source: "iana"
},
"text/grammar-ref-list": {
source: "iana"
},
"text/html": {
source: "iana",
compressible: !0,
extensions: ["html", "htm", "shtml"]
},
"text/jade": {
extensions: ["jade"]
},
"text/javascript": {
source: "iana",
compressible: !0
},
"text/jcr-cnd": {
source: "iana"
},
"text/jsx": {
compressible: !0,
extensions: ["jsx"]
},
"text/less": {
compressible: !0,
extensions: ["less"]
},
"text/markdown": {
source: "iana",
compressible: !0,
extensions: ["markdown", "md"]
},
"text/mathml": {
source: "nginx",
extensions: ["mml"]
},
"text/mdx": {
compressible: !0,
extensions: ["mdx"]
},
"text/mizar": {
source: "iana"
},
"text/n3": {
source: "iana",
charset: "UTF-8",
compressible: !0,
extensions: ["n3"]
},
"text/parameters": {
source: "iana",
charset: "UTF-8"
},
"text/parityfec": {
source: "iana"
},
"text/plain": {
source: "iana",
compressible: !0,
extensions: ["txt", "text", "conf", "def", "list", "log", "in", "ini"]
},
"text/provenance-notation": {
source: "iana",
charset: "UTF-8"
},
"text/prs.fallenstein.rst": {
source: "iana"
},
"text/prs.lines.tag": {
source: "iana",
extensions: ["dsc"]
},
"text/prs.prop.logic": {
source: "iana"
},
"text/raptorfec": {
source: "iana"
},
"text/red": {
source: "iana"
},
"text/rfc822-headers": {
source: "iana"
},
"text/richtext": {
source: "iana",
compressible: !0,
extensions: ["rtx"]
},
"text/rtf": {
source: "iana",
compressible: !0,
extensions: ["rtf"]
},
"text/rtp-enc-aescm128": {
source: "iana"
},
"text/rtploopback": {
source: "iana"
},
"text/rtx": {
source: "iana"
},
"text/sgml": {
source: "iana",
extensions: ["sgml", "sgm"]
},
"text/shaclc": {
source: "iana"
},
"text/shex": {
source: "iana",
extensions: ["shex"]
},
"text/slim": {
extensions: ["slim", "slm"]
},
"text/spdx": {
source: "iana",
extensions: ["spdx"]
},
"text/strings": {
source: "iana"
},
"text/stylus": {
extensions: ["stylus", "styl"]
},
"text/t140": {
source: "iana"
},
"text/tab-separated-values": {
source: "iana",
compressible: !0,
extensions: ["tsv"]
},
"text/troff": {
source: "iana",
extensions: ["t", "tr", "roff", "man", "me", "ms"]
},
"text/turtle": {
source: "iana",
charset: "UTF-8",
extensions: ["ttl"]
},
"text/ulpfec": {
source: "iana"
},
"text/uri-list": {
source: "iana",
compressible: !0,
extensions: ["uri", "uris", "urls"]
},
"text/vcard": {
source: "iana",
compressible: !0,
extensions: ["vcard"]
},
"text/vnd.a": {
source: "iana"
},
"text/vnd.abc": {
source: "iana"
},
"text/vnd.ascii-art": {
source: "iana"
},
"text/vnd.curl": {
source: "iana",
extensions: ["curl"]
},
"text/vnd.curl.dcurl": {
source: "apache",
extensions: ["dcurl"]
},
"text/vnd.curl.mcurl": {
source: "apache",
extensions: ["mcurl"]
},
"text/vnd.curl.scurl": {
source: "apache",
extensions: ["scurl"]
},
"text/vnd.debian.copyright": {
source: "iana",
charset: "UTF-8"
},
"text/vnd.dmclientscript": {
source: "iana"
},
"text/vnd.dvb.subtitle": {
source: "iana",
extensions: ["sub"]
},
"text/vnd.esmertec.theme-descriptor": {
source: "iana",
charset: "UTF-8"
},
"text/vnd.familysearch.gedcom": {
source: "iana",
extensions: ["ged"]
},
"text/vnd.ficlab.flt": {
source: "iana"
},
"text/vnd.fly": {
source: "iana",
extensions: ["fly"]
},
"text/vnd.fmi.flexstor": {
source: "iana",
extensions: ["flx"]
},
"text/vnd.gml": {
source: "iana"
},
"text/vnd.graphviz": {
source: "iana",
extensions: ["gv"]
},
"text/vnd.hans": {
source: "iana"
},
"text/vnd.hgl": {
source: "iana"
},
"text/vnd.in3d.3dml": {
source: "iana",
extensions: ["3dml"]
},
"text/vnd.in3d.spot": {
source: "iana",
extensions: ["spot"]
},
"text/vnd.iptc.newsml": {
source: "iana"
},
"text/vnd.iptc.nitf": {
source: "iana"
},
"text/vnd.latex-z": {
source: "iana"
},
"text/vnd.motorola.reflex": {
source: "iana"
},
"text/vnd.ms-mediapackage": {
source: "iana"
},
"text/vnd.net2phone.commcenter.command": {
source: "iana"
},
"text/vnd.radisys.msml-basic-layout": {
source: "iana"
},
"text/vnd.senx.warpscript": {
source: "iana"
},
"text/vnd.si.uricatalogue": {
source: "iana"
},
"text/vnd.sosi": {
source: "iana"
},
"text/vnd.sun.j2me.app-descriptor": {
source: "iana",
charset: "UTF-8",
extensions: ["jad"]
},
"text/vnd.trolltech.linguist": {
source: "iana",
charset: "UTF-8"
},
"text/vnd.wap.si": {
source: "iana"
},
"text/vnd.wap.sl": {
source: "iana"
},
"text/vnd.wap.wml": {
source: "iana",
extensions: ["wml"]
},
"text/vnd.wap.wmlscript": {
source: "iana",
extensions: ["wmls"]
},
"text/vtt": {
source: "iana",
charset: "UTF-8",
compressible: !0,
extensions: ["vtt"]
},
"text/x-asm": {
source: "apache",
extensions: ["s", "asm"]
},
"text/x-c": {
source: "apache",
extensions: ["c", "cc", "cxx", "cpp", "h", "hh", "dic"]
},
"text/x-component": {
source: "nginx",
extensions: ["htc"]
},
"text/x-fortran": {
source: "apache",
extensions: ["f", "for", "f77", "f90"]
},
"text/x-gwt-rpc": {
compressible: !0
},
"text/x-handlebars-template": {
extensions: ["hbs"]
},
"text/x-java-source": {
source: "apache",
extensions: ["java"]
},
"text/x-jquery-tmpl": {
compressible: !0
},
"text/x-lua": {
extensions: ["lua"]
},
"text/x-markdown": {
compressible: !0,
extensions: ["mkd"]
},
"text/x-nfo": {
source: "apache",
extensions: ["nfo"]
},
"text/x-opml": {
source: "apache",
extensions: ["opml"]
},
"text/x-org": {
compressible: !0,
extensions: ["org"]
},
"text/x-pascal": {
source: "apache",
extensions: ["p", "pas"]
},
"text/x-processing": {
compressible: !0,
extensions: ["pde"]
},
"text/x-sass": {
extensions: ["sass"]
},
"text/x-scss": {
extensions: ["scss"]
},
"text/x-setext": {
source: "apache",
extensions: ["etx"]
},
"text/x-sfv": {
source: "apache",
extensions: ["sfv"]
},
"text/x-suse-ymp": {
compressible: !0,
extensions: ["ymp"]
},
"text/x-uuencode": {
source: "apache",
extensions: ["uu"]
},
"text/x-vcalendar": {
source: "apache",
extensions: ["vcs"]
},
"text/x-vcard": {
source: "apache",
extensions: ["vcf"]
},
"text/xml": {
source: "iana",
compressible: !0,
extensions: ["xml"]
},
"text/xml-external-parsed-entity": {
source: "iana"
},
"text/yaml": {
compressible: !0,
extensions: ["yaml", "yml"]
},
"video/1d-interleaved-parityfec": {
source: "iana"
},
"video/3gpp": {
source: "iana",
extensions: ["3gp", "3gpp"]
},
"video/3gpp-tt": {
source: "iana"
},
"video/3gpp2": {
source: "iana",
extensions: ["3g2"]
},
"video/av1": {
source: "iana"
},
"video/bmpeg": {
source: "iana"
},
"video/bt656": {
source: "iana"
},
"video/celb": {
source: "iana"
},
"video/dv": {
source: "iana"
},
"video/encaprtp": {
source: "iana"
},
"video/ffv1": {
source: "iana"
},
"video/flexfec": {
source: "iana"
},
"video/h261": {
source: "iana",
extensions: ["h261"]
},
"video/h263": {
source: "iana",
extensions: ["h263"]
},
"video/h263-1998": {
source: "iana"
},
"video/h263-2000": {
source: "iana"
},
"video/h264": {
source: "iana",
extensions: ["h264"]
},
"video/h264-rcdo": {
source: "iana"
},
"video/h264-svc": {
source: "iana"
},
"video/h265": {
source: "iana"
},
"video/iso.segment": {
source: "iana",
extensions: ["m4s"]
},
"video/jpeg": {
source: "iana",
extensions: ["jpgv"]
},
"video/jpeg2000": {
source: "iana"
},
"video/jpm": {
source: "apache",
extensions: ["jpm", "jpgm"]
},
"video/jxsv": {
source: "iana"
},
"video/mj2": {
source: "iana",
extensions: ["mj2", "mjp2"]
},
"video/mp1s": {
source: "iana"
},
"video/mp2p": {
source: "iana"
},
"video/mp2t": {
source: "iana",
extensions: ["ts"]
},
"video/mp4": {
source: "iana",
compressible: !1,
extensions: ["mp4", "mp4v", "mpg4"]
},
"video/mp4v-es": {
source: "iana"
},
"video/mpeg": {
source: "iana",
compressible: !1,
extensions: ["mpeg", "mpg", "mpe", "m1v", "m2v"]
},
"video/mpeg4-generic": {
source: "iana"
},
"video/mpv": {
source: "iana"
},
"video/nv": {
source: "iana"
},
"video/ogg": {
source: "iana",
compressible: !1,
extensions: ["ogv"]
},
"video/parityfec": {
source: "iana"
},
"video/pointer": {
source: "iana"
},
"video/quicktime": {
source: "iana",
compressible: !1,
extensions: ["qt", "mov"]
},
"video/raptorfec": {
source: "iana"
},
"video/raw": {
source: "iana"
},
"video/rtp-enc-aescm128": {
source: "iana"
},
"video/rtploopback": {
source: "iana"
},
"video/rtx": {
source: "iana"
},
"video/scip": {
source: "iana"
},
"video/smpte291": {
source: "iana"
},
"video/smpte292m": {
source: "iana"
},
"video/ulpfec": {
source: "iana"
},
"video/vc1": {
source: "iana"
},
"video/vc2": {
source: "iana"
},
"video/vnd.cctv": {
source: "iana"
},
"video/vnd.dece.hd": {
source: "iana",
extensions: ["uvh", "uvvh"]
},
"video/vnd.dece.mobile": {
source: "iana",
extensions: ["uvm", "uvvm"]
},
"video/vnd.dece.mp4": {
source: "iana"
},
"video/vnd.dece.pd": {
source: "iana",
extensions: ["uvp", "uvvp"]
},
"video/vnd.dece.sd": {
source: "iana",
extensions: ["uvs", "uvvs"]
},
"video/vnd.dece.video": {
source: "iana",
extensions: ["uvv", "uvvv"]
},
"video/vnd.directv.mpeg": {
source: "iana"
},
"video/vnd.directv.mpeg-tts": {
source: "iana"
},
"video/vnd.dlna.mpeg-tts": {
source: "iana"
},
"video/vnd.dvb.file": {
source: "iana",
extensions: ["dvb"]
},
"video/vnd.fvt": {
source: "iana",
extensions: ["fvt"]
},
"video/vnd.hns.video": {
source: "iana"
},
"video/vnd.iptvforum.1dparityfec-1010": {
source: "iana"
},
"video/vnd.iptvforum.1dparityfec-2005": {
source: "iana"
},
"video/vnd.iptvforum.2dparityfec-1010": {
source: "iana"
},
"video/vnd.iptvforum.2dparityfec-2005": {
source: "iana"
},
"video/vnd.iptvforum.ttsavc": {
source: "iana"
},
"video/vnd.iptvforum.ttsmpeg2": {
source: "iana"
},
"video/vnd.motorola.video": {
source: "iana"
},
"video/vnd.motorola.videop": {
source: "iana"
},
"video/vnd.mpegurl": {
source: "iana",
extensions: ["mxu", "m4u"]
},
"video/vnd.ms-playready.media.pyv": {
source: "iana",
extensions: ["pyv"]
},
"video/vnd.nokia.interleaved-multimedia": {
source: "iana"
},
"video/vnd.nokia.mp4vr": {
source: "iana"
},
"video/vnd.nokia.videovoip": {
source: "iana"
},
"video/vnd.objectvideo": {
source: "iana"
},
"video/vnd.radgamettools.bink": {
source: "iana"
},
"video/vnd.radgamettools.smacker": {
source: "iana"
},
"video/vnd.sealed.mpeg1": {
source: "iana"
},
"video/vnd.sealed.mpeg4": {
source: "iana"
},
"video/vnd.sealed.swf": {
source: "iana"
},
"video/vnd.sealedmedia.softseal.mov": {
source: "iana"
},
"video/vnd.uvvu.mp4": {
source: "iana",
extensions: ["uvu", "uvvu"]
},
"video/vnd.vivo": {
source: "iana",
extensions: ["viv"]
},
"video/vnd.youtube.yt": {
source: "iana"
},
"video/vp8": {
source: "iana"
},
"video/vp9": {
source: "iana"
},
"video/webm": {
source: "apache",
compressible: !1,
extensions: ["webm"]
},
"video/x-f4v": {
source: "apache",
extensions: ["f4v"]
},
"video/x-fli": {
source: "apache",
extensions: ["fli"]
},
"video/x-flv": {
source: "apache",
compressible: !1,
extensions: ["flv"]
},
"video/x-m4v": {
source: "apache",
extensions: ["m4v"]
},
"video/x-matroska": {
source: "apache",
compressible: !1,
extensions: ["mkv", "mk3d", "mks"]
},
"video/x-mng": {
source: "apache",
extensions: ["mng"]
},
"video/x-ms-asf": {
source: "apache",
extensions: ["asf", "asx"]
},
"video/x-ms-vob": {
source: "apache",
extensions: ["vob"]
},
"video/x-ms-wm": {
source: "apache",
extensions: ["wm"]
},
"video/x-ms-wmv": {
source: "apache",
compressible: !1,
extensions: ["wmv"]
},
"video/x-ms-wmx": {
source: "apache",
extensions: ["wmx"]
},
"video/x-ms-wvx": {
source: "apache",
extensions: ["wvx"]
},
"video/x-msvideo": {
source: "apache",
extensions: ["avi"]
},
"video/x-sgi-movie": {
source: "apache",
extensions: ["movie"]
},
"video/x-smv": {
source: "apache",
extensions: ["smv"]
},
"x-conference/x-cooltalk": {
source: "apache",
extensions: ["ice"]
},
"x-shader/x-fragment": {
compressible: !0
},
"x-shader/x-vertex": {
compressible: !0
}
};
/*!
* mime-db
* Copyright(c) 2014 Jonathan Ong
* Copyright(c) 2015-2022 Douglas Christopher Wilson
* MIT Licensed
*/
var mee = dee;
/*!
* mime-types
* Copyright(c) 2014 Jonathan Ong
* Copyright(c) 2015 Douglas Christopher Wilson
* MIT Licensed
*/
(function(t) {
var e = mee,
n = Uh.extname,
s = /^\s*([^;\s]*)(?:;|\s|$)/,
a = /^text\//i;
t.charset = o, t.charsets = {
lookup: o
}, t.contentType = r, t.extension = i, t.extensions = Object.create(null), t.lookup = c, t.types = Object.create(null), l(t.extensions, t.types);
function o(u) {
if (!u || typeof u != "string") return !1;
var d = s.exec(u),
m = d && e[d[1].toLowerCase()];
return m && m.charset ? m.charset : d && a.test(d[1]) ? "UTF-8" : !1
}
function r(u) {
if (!u || typeof u != "string") return !1;
var d = u.indexOf("/") === -1 ? t.lookup(u) : u;
if (!d) return !1;
if (d.indexOf("charset") === -1) {
var m = t.charset(d);
m && (d += "; charset=" + m.toLowerCase())
}
return d
}
function i(u) {
if (!u || typeof u != "string") return !1;
var d = s.exec(u),
m = d && t.extensions[d[1].toLowerCase()];
return !m || !m.length ? !1 : m[0]
}
function c(u) {
if (!u || typeof u != "string") return !1;
var d = n("x." + u).toLowerCase().substr(1);
return d && t.types[d] || !1
}
function l(u, d) {
var m = ["nginx", "apache", void 0, "iana"];
Object.keys(e).forEach(function(h) {
var g = e[h],
b = g.extensions;
if (!(!b || !b.length)) {
u[h] = b;
for (var x = 0; x < b.length; x++) {
var v = b[x];
if (d[v]) {
var w = m.indexOf(e[d[v]].source),
E = m.indexOf(g.source);
if (d[v] !== "application/octet-stream" && (w > E || w === E && d[v].substr(0, 12) === "application/")) continue
}
d[v] = h
}
}
})
}
})(Rd);
const Pd = lr(Rd),
Qr = {
"application/x-cbr": [
[82, 97, 114, 33, 26, 7, 0],
[82, 97, 114, 33, 26, 7, 1, 0],
[127, 69, 76, 70]
],
"application/x-cbz": [
[80, 75, 3, 4],
[80, 75, 5, 6],
[80, 75, 7, 8]
]
},
ei = {
"application/vnd.amazon.kfx": [
[75, 70, 88, 32]
],
"application/vnd.amazon.kpf": [
[80, 75, 3, 4]
],
"application/epub+zip": [
[80, 75, 3, 4]
],
"application/x-mobipocket-ebook": [
[77, 79, 66, 73]
]
},
ti = {
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": [
[80, 75, 3, 4],
[80, 75, 5, 6],
[80, 75, 7, 8]
]
},
ni = {
"application/pdf": [
[37, 80, 68, 70]
]
};
function fee() {
return [...Object.keys(Qr), ...Object.keys(ei), ...Object.keys(ti), ...Object.keys(ni)]
}
function hee({
mimeTypesToSignature: t,
substackType: e,
actionButtonAttr: n
}) {
return [{
tag: "div.file-embed-wrapper",
getAttrs: s => {
const a = {};
try {
const [o, r, i] = s.children[0].children, [c, l] = o.children, [u, d] = l.children;
a.title = u.textContent;
const [m, f] = d.textContent.split("∙");
a.filesize = Rf(m);
const h = f.split("File")[0].trim().toLowerCase();
if (!!t[h] || e === h) a.filetype = h;
else if (e === "file") a.filetype = h;
else return !1;
return c.classList.contains("file-embed-thumbnail-default") || (a.thumbnail = c.getAttribute("src")), a.description = r.innerText, a[n] = i.getAttribute("href"), a
} catch (o) {
return !1
}
}
}]
}
function So(e) {
return N(this, arguments, function*({
file: t
}) {
const n = yield vee({
file: t
});
return gee({
file: t,
bytes: n
}) ? "comic" : bee({
file: t,
bytes: n
}) ? "ebook" : ha({
bytes: n,
file: t,
mimeTypeToSignature: ti
}) ? "xlsx" : ha({
bytes: n,
file: t,
mimeTypeToSignature: ni
}) ? "pdf" : null
})
}
function gee({
file: t,
bytes: e
}) {
const n = t.name.split(".").pop();
return n && ["cbr", "cbz"].indexOf(n.toLowerCase()) >= 0 && (t.assignedType = `application/x-${n}`), ha({
bytes: e,
file: t,
mimeTypeToSignature: Qr
})
}
function bee({
file: t,
bytes: e
}) {
const n = t.name.split(".").pop();
return n && ["kpf", "kfx"].indexOf(n.toLowerCase()) >= 0 && (t.assignedType = `application/vnd.amazon.${n}`), ha({
bytes: e,
file: t,
mimeTypeToSignature: ei
})
}
function ha({
bytes: t,
mimeTypeToSignature: e,
file: n
}) {
const s = n.assignedType || n.type,
a = e[s];
return a ? a.some(o => o.every((r, i) => r === t[i])) : !1
}
function vee(e) {
return N(this, arguments, function*({
file: t
}) {
return new Uint8Array(yield t.arrayBuffer())
})
}
function xee({
filetype: t
}) {
var e, n, s, a;
return t ? ["application/vnd.amazon.kfx", "application/vnd.amazon.kpf", "application/vnd.amazon.ebook"].includes(t) ? "Kindle" : (a = (s = (n = Pd.extension(t) || ((e = t.split("/").pop()) == null ? void 0 : e.split("-").pop())) == null ? void 0 : n.toUpperCase) == null ? void 0 : s.call(n)) != null ? a : "" : ""
}
function To({
attrs: t
}) {
var e;
return `${mr((e=Number(t.filesize))!=null?e:void 0)} ∙ ${xee({filetype:t.filetype})} file`
}
const yee = t => new Promise((e, n) => {
if (!window.FileReader) {
n(new TypeError("File reader API not found"));
return
}
const s = new FileReader;
s.onerror = n, s.onload = () => {
e(s.result)
}, s.readAsDataURL(t)
});
class wee {
constructor({
fileEmbed: e,
node: n,
view: s,
getPos: a
}) {
this.fileEmbed = e, this.dom = e.buildNodeView(n, s, a)
}
update(e) {
return e.type.name === this.fileEmbed.substackType
}
stopEvent(e) {
return e.target.className === "file-embed-menu-button"
}
}
class ws {
constructor({
substackType: e,
actionButtonText: n,
actionButtonAttr: s,
mimeTypesToSignature: a
}) {
this.substackType = "file", this.actionButtonText = "Download", this.actionButtonAttr = "raw_href", e && (this.substackType = e), n && (this.actionButtonText = n), s && (this.actionButtonAttr = s), this.mimeTypesToSignature = a
}
getNodeView({
editor: e,
node: n,
getPos: s
}) {
return new wee({
fileEmbed: this,
node: n,
view: e.view,
getPos: s
})
}
get nodeSpec() {
return {
definition: this,
attrs: {
filename: {
default: null
},
filetype: {
default: null
},
filesize: {
default: null
},
href: {
default: null
},
title: {
default: null
},
description: {
default: null
},
thumbnail: {
default: null
},
fileKey: {
default: null
},
dirty: {
default: !0
},
raw_href: {
default: null
},
error: {
default: null
},
empty: {
default: !1
}
},
substackType: this.substackType,
inline: !1,
atom: !0,
group: "block",
selectable: !1,
draggable: !0,
isolating: !0,
defining: !0,
parseDOM: hee({
mimeTypesToSignature: this.mimeTypesToSignature,
substackType: this.substackType,
actionButtonAttr: this.actionButtonAttr
}),
toDOM: e => {
const n = ["div", {
class: "file-embed-wrapper",
"data-component-name": "FileToDOM"
},
["div", {
class: "file-embed-container-reader"
},
["div", {
class: "file-embed-container-top"
},
["image", {
class: `file-embed-thumbnail${e.attrs.thumbnail?"":"-default"}`,
src: e.attrs.thumbnail || q("/img/attachment_icon.svg")
}],
["div", {
class: "file-embed-details"
},
["div", {
class: "file-embed-details-h1"
}, e.attrs.title || e.attrs.filename || ""],
["div", {
class: "file-embed-details-h2"
}, To({
attrs: e.attrs
})]
],
["a", {
class: "file-embed-button wide",
href: e.attrs[this.actionButtonAttr]
},
["span", {
class: "file-embed-button-text"
}, this.actionButtonText]
]
]
]
];
return e.attrs.description && n[2].push(["div", {
class: "file-embed-description"
}, e.attrs.description]), n[2].push(["a", {
class: "file-embed-button narrow",
href: e.attrs[this.actionButtonAttr]
},
["span", {
class: "file-embed-button-text"
}, this.actionButtonText]
]), n
},
toDOMStatic: e => {
var i;
let n, s, o = ((i = e.attrs) == null ? void 0 : i.title) || "";
return e.attrs.thumbnail && e.attrs.thumbnail.indexOf("attachment_icon.svg") === -1 ? (s = !1, n = q(e.attrs.thumbnail, 100, {
aspect: "1.5",
crop: "fill",
gravity: "auto",
height: 150
})) : (s = !0, n = q("/img/attachment_icon.svg", 32, {
aspect: "1",
crop: "fill",
gravity: "auto",
height: 32
})), o && o.length > 40 && (o = `${o.substr(0,40)}...`), ["table", {
class: "static-file-embed-table",
cellspacing: "16",
"data-component-name": "FileToDOMStatic"
},
["tr", {},
["td", {
class: `static-file-embed-thumbnail-container ${s?"default":""}`
},
["img", {
class: `static-file-embed-thumbnail ${s?"default":""}`,
src: n
}]
],
["td", {
class: `static-file-embed-details ${s?"default":""}`
},
["div", {
class: "static-file-embed-details-h1"
}, o],
["div", {
class: "static-file-embed-details-h2"
}, To({
attrs: e.attrs
})]
]
], e.attrs.description ? ["tr", {},
["td", {
class: "static-file-embed-description",
colspan: "2"
},
["p", {
style: "margin: 0;"
}, e.attrs.description || ""]
]
] : null, ["tr", {},
["td", {
class: "static-file-embed-button-container",
colspan: "2"
},
["table", {
class: "static-file-embed-button",
cellspacing: "0"
},
["tr", {},
["td", {
align: "center"
},
["a", {
href: `${e.attrs[this.actionButtonAttr]}?token=${ce.FILE_DOWNLOAD_TOKEN}`,
class: "static-file-embed-anchor"
}, this.actionButtonText]
]
]
]
]
]
].filter(c => c)
}
}
}
buildNodeView(e, n, s) {
var h, g, b, x;
const a = document.createElement("div");
a.className = "file-embed-wrapper-editor";
const o = document.createElement("div");
o.className = "file-embed-container", o.dataset.attrs = JSON.stringify(e.attrs), o.appendChild(this.generateContainerTop(e)), o.appendChild(this.generateDescription(e)), o.appendChild(this.generateButton("narrow"));
const r = document.createElement("div");
r.className = "file-embed-aligner";
const {
button: i,
menu: c
} = this.generateDropdown(e, n, s);
r.appendChild(o), r.appendChild(c), a.appendChild(r);
const l = document.createElement("img");
l.src = q("/img/file_drag_default.png");
const u = document.createElement("img");
u.src = q((h = e == null ? void 0 : e.attrs) == null ? void 0 : h.thumbnail, 100, {
aspect: "1.5",
crop: "fill",
gravity: "auto",
height: 150
}), a.addEventListener("dragstart", v => {
var w;
(w = e == null ? void 0 : e.attrs) != null && w.thumbnail ? v.dataTransfer.setDragImage(u, 0, 0) : v.dataTransfer.setDragImage(l, 0, 0)
}), ((b = (g = n.state) == null ? void 0 : g.doc) == null ? void 0 : b.nodeAt(n.state.doc.nodeSize - 3)) === e && setTimeout(() => {
n.dispatch(n.state.tr.insertText("\r", n.state.doc.nodeSize - 2))
}, 0);
const m = document.createElement("div");
m.appendChild(this.generateSpinner());
const f = this.generateErrorCover(n, e);
return (x = e.attrs) != null && x.error && (i.className = "file-embed-menu-button hidden", o.className = "file-embed-container covered error", o.appendChild(f)), e.startReplacing = () => {
m.className = "file-embed-container cover", o.className = "file-embed-container covered", i.className = "file-embed-menu-button disabled", o.contains(f) && o.removeChild(f), o.appendChild(m)
}, e.stopReplacing = v => {
v ? (i.className = "file-embed-menu-button hidden", o.className = "file-embed-container covered error", o.appendChild(f)) : (o.className = "file-embed-container", i.className = "file-embed-menu-button"), o.removeChild(m)
}, a
}
getFileAttrs(e) {
return {
href: e.getAttribute("href"),
filename: e.getAttribute("filename"),
filetype: e.getAttribute("filetype"),
filesize: e.getAttribute("filesize"),
title: e.getAttribute("title"),
dirty: e.getAttribute("dirty"),
description: e.getAttribute("description"),
error: e.getAttribute("error")
}
}
generateThumbnail(e) {
const n = document.createElement("img");
return n.className = `file-embed-thumbnail${e.attrs.thumbnail?"":"-default"}`, n.setAttribute("src", e.attrs.thumbnail || q("/img/attachment_icon.svg")), e.updateThumbnail = (r, ...i) => N(this, [r, ...i], function*(s, a = 400, o = {
aspect: "1.5",
crop: "fill",
gravity: "auto",
width: 400,
height: 600
}) {
if (e.attrs.dirty = !0, !s) {
e.attrs.thumbnail = null, n.onload = () => {
n.className = "file-embed-thumbnail-default"
}, n.src = q("/img/attachment_icon.svg");
return
}
const c = yield yee(s), l = yield he.post("/api/v1/image").send({
image: c
}), u = q(l.body.url, a, o);
return e.attrs.thumbnail = u, n.onload = () => {
n.className = "file-embed-thumbnail"
}, n.src = u, u
}), n
}
generateDetails(e) {
const n = document.createElement("div");
n.className = "file-embed-details";
const s = document.createElement("div");
s.className = "file-embed-details-h1", s.innerText = e.attrs.title || e.attrs.filename;
const a = document.createElement("div");
return a.className = "file-embed-details-h2", a.innerText = To({
attrs: e.attrs
}), n.appendChild(s), n.appendChild(a), e.updateTitle = o => {
e.attrs.title = o, e.attrs.dirty = !0, s.innerText = o
}, n
}
generateButton(e) {
const n = document.createElement("button");
n.className = `file-embed-button primary mock ${e}`;
const s = document.createElement("span");
return s.className = "file-embed-button-text", s.innerText = this.actionButtonText, n.appendChild(s), n
}
generateDescription(e) {
const n = document.createElement("div");
return n.className = "file-embed-description ", n.innerText = e.attrs.description, e.updateDescription = s => {
e.attrs.dirty = !0, e.attrs.description = s ? s.trim() : null, n.innerText = s ? s.trim() : null
}, n
}
generateErrorCover(e, n) {
var l, u;
const s = document.createElement("div");
s.className = "file-embed-container cover error";
const a = document.createElement("div");
a.className = "file-embed-error-inner";
const o = document.createElement("img");
o.className = "file-embed-error-icon", o.setAttribute("src", Xl("/img/alert-circle.svg"));
const r = document.createElement("div");
r.className = "file-embed-error-message", r.innerText = (l = n.attrs.error) == null ? void 0 : l.message;
const i = document.createElement("div");
i.className = "file-embed-error-button", i.onclick = this.makeReplaceButtonClickHandler(e, n);
const c = document.createElement("span");
return c.className = "file-embed-error-button-text", c.innerText = ((u = n.attrs.error) == null ? void 0 : u.button) || "Try again", i.appendChild(c), a.appendChild(o), a.appendChild(r), a.appendChild(i), s.appendChild(a), s
}
generateSpinner() {
const e = document.createElement("div");
e.className = "embed-loader-container";
const n = document.createElement("div");
n.className = "embed-loader";
const s = document.createElement("div");
return s.innerText = "Replacing...", s.className = "embed-loader-text", e.appendChild(n), e.appendChild(s), e
}
makeReplaceButtonClickHandler(e, n) {
return s => {
const a = document.createElement("input");
a.className = "sidebar-item-hidden-file-input", a.type = "file", a.oninput = o => {
var i;
const r = (i = o.target) == null ? void 0 : i.files[0];
e.dispatchEvent({
type: "file_replace",
node: n,
file: r
})
}, document.body.appendChild(a), a.click(), document.body.removeChild(a)
}
}
generateDropdown(e, n, s) {
const a = document.createElement("div");
a.className = "post-editor-file-embed-dropdown-container dropdown-container";
const o = document.createElement("div");
o.className = "dropdown-content";
const r = document.createElement("div");
r.className = "dropdown-list", [{
label: "Edit",
icon: "edit",
onclick: l => {
n.dispatchEvent(new CustomEvent("file_edit", {
detail: {
node: e
}
}))
}
}, {
label: "Replace",
icon: "swap",
onclick: this.makeReplaceButtonClickHandler(n, e)
}, {
label: "Download",
icon: "download",
onclick: l => {
const u = document.createElement("a");
u.href = e.attrs.raw_href, u.download = e.attrs.filename, document.body.appendChild(u);
const d = window.onbeforeunload;
window.onbeforeunload = null, u.click(), window.onbeforeunload = d, document.body.removeChild(u)
}
}, {
label: "Delete",
icon: "trash",
onclick: l => {
if (typeof s != "function") return;
const u = s();
n.dispatch(n.state.tr.delete(u, u + 1))
}
}].map(l => {
const u = document.createElement("div");
u.className = "dropdown-list-item", u.onclick = l.onclick;
const d = document.createElement("div");
d.className = `dropdown-list-item-icon icon-${l.icon}`;
const m = document.createElement("span");
return m.className = "dropdown-list-item-text", m.innerText = l.label, u.appendChild(d), u.appendChild(m), u
}).forEach(l => {
r.appendChild(l)
}), o.appendChild(r);
const i = document.createElement("div");
i.className = "file-embed-menu-button";
const c = document.createElement("div");
return c.className = "dropdown-icon", c.appendChild(document.createElement("span")), c.appendChild(document.createElement("span")), c.appendChild(document.createElement("span")), c.appendChild(document.createElement("span")), i.appendChild(c), a.appendChild(i), a.appendChild(o), i.onclick = l => {
if (o.className === "dropdown-content open") return;
o.className = "dropdown-content open", c.className = "dropdown-icon open", i.className = "file-embed-menu-button open";
const u = () => {
o.className = "dropdown-content", c.className = "dropdown-icon", i.className = "file-embed-menu-button", document.removeEventListener("click", u)
};
setTimeout(() => {
document.addEventListener("click", u)
}, 0)
}, {
button: i,
menu: a
}
}
generateContainerTop(e) {
const n = document.createElement("div");
return n.className = "file-embed-container-top", n.appendChild(this.generateThumbnail(e)), n.appendChild(this.generateDetails(e)), n.appendChild(this.generateButton("wide")), n
}
}
const kee = new ws({
actionButtonText: null,
substackType: null,
actionButtonAttr: null,
mimeTypesToSignature: {}
}),
_ee = F({
name: "file",
nodeSpec: kee.nodeSpec
}),
ga = new ws({
actionButtonAttr: "href",
substackType: "comic",
mimeTypesToSignature: Qr,
actionButtonText: "Read now"
}),
Cee = F({
name: "comic",
nodeSpec: ga.nodeSpec
}),
Bd = {
attrs: {
url: {
default: ""
},
commentId: {
default: null
},
comment: {
default: null
}
},
inline: !1,
group: "block",
draggable: !0,
atom: !0,
selectable: !0,
isolating: !0,
defining: !0,
parseDOM: [{
tag: "div.comment",
getAttrs: t => {
var e;
if (t instanceof HTMLElement) try {
return JSON.parse((e = t.getAttribute("data-attrs")) != null ? e : "")
} catch (n) {
return !1
}
return !1
}
}],
toDOM: t => {
if (typeof window != "undefined") try {
const e = document.createElement("div");
return Object.assign(e, {
className: "comment",
"data-attrs": JSON.stringify(t.attrs)
}), Fe(p(Hh, {
commentId: t.attrs.commentId
}), e), e
} catch (e) {
return console.error("Error rendering CommentEmbed", e), Oe({
msg: null,
node: t,
err: e,
group: "block"
})
}
return ml(t)
},
toDOMStatic: t => ml(t)
},
Eee = F({
name: "comment",
nodeSpec: Bd,
addCommands() {
return {
insertComment: t => ({
commands: e
}) => e.insertContent({
type: this.name,
attrs: t
})
}
}
});
function ml(t) {
return ["div", {
class: "comment",
"data-attrs": JSON.stringify(t.attrs),
"data-component-name": "CommentPlaceholder"
}]
}
function Aee(t, {
customSchema: e
} = {}) {
if (e && !e.nodes.comment) return null;
const n = lt(t);
return n && Zl(n.pathname) ? t : null
}
function zd(t) {
return N(this, null, function*() {
const e = (yield Z(() =>
import ("./sortBy-53166f8e.js").then(r => r.c), ["assets/sortBy-53166f8e.js", "assets/x-933ea65f.js", "assets/tracking-5779d19a.js", "assets/_sentry-release-injection-file-9254565a.js", "assets/FlexBox-8b7f0d6c.js", "assets/FlexBox-644f665d.css", "assets/HoverCard-92fb7948.js", "assets/useResponsive-4f80f3bd.js", "assets/transition-d7aff1cb.js", "assets/_defineProperty-fcca2d9e.js", "assets/react-laag.esm-23de3db0.js", "assets/HoverCard-6364507e.css", "assets/responsive_img-3c51e57a.js", "assets/responsive_img-51b02764.css", "assets/sortBy-a6711bc6.css"])).default,
n = lt(t),
s = n && Zl(n.pathname);
if (!s) return console.warn("pathname did not match"), null;
let a;
try {
const {
body: {
item: {
comment: {
id: r,
date: i,
edited_at: c,
body: l,
body_json: u,
restacks: d,
reaction_count: m,
attachments: f,
name: h,
user_id: g,
photo_url: b,
user_bestseller_tier: x
}
}
}
} = yield e.get(`/api/v1/reader/comment/${s.id}`);
a = {
comment: {
id: r,
date: i,
edited_at: c,
body: l,
body_json: u,
restacks: d,
reaction_count: m,
attachments: f,
name: h,
user_id: g,
photo_url: b,
user_bestseller_tier: x
}
}
} catch (r) {
return console.warn(r), null
}
const o = Pf(s, {
urlParams: {
utm_source: qe.commentEmbed
}
});
return S({
url: o,
commentId: s.id
}, a)
})
}
function See(n) {
return N(this, arguments, function*(t, {
customSchema: e
} = {}) {
const a = (e ? {
schema: e
} : yield Z(() => Promise.resolve().then(() => Te), void 0)).schema,
o = yield zd(t);
return o ? a.nodes.comment.create(o) : null
})
}
function Tee(t) {
return N(this, null, function*() {
const e = (yield Z(() =>
import ("./sortBy-53166f8e.js").then(s => s.c), ["assets/sortBy-53166f8e.js", "assets/x-933ea65f.js", "assets/tracking-5779d19a.js", "assets/_sentry-release-injection-file-9254565a.js", "assets/FlexBox-8b7f0d6c.js", "assets/FlexBox-644f665d.css", "assets/HoverCard-92fb7948.js", "assets/useResponsive-4f80f3bd.js", "assets/transition-d7aff1cb.js", "assets/_defineProperty-fcca2d9e.js", "assets/react-laag.esm-23de3db0.js", "assets/HoverCard-6364507e.css", "assets/responsive_img-3c51e57a.js", "assets/responsive_img-51b02764.css", "assets/sortBy-a6711bc6.css"])).default;
let n;
try {
n = (yield e.get("/api/v1/reader/feed/last-note")).body;
const a = Bf(n);
return zd(a)
} catch (s) {
return null
}
})
}
function Dee(n) {
return N(this, arguments, function*(t, {
customSchema: e
} = {}) {
const a = (e ? {
schema: e
} : yield Z(() => Promise.resolve().then(() => Te), void 0)).schema,
o = yield Tee();
return o ? a.nodes.comment.create(o) : null
})
}
const qd = {
attrs: {
url: {
default: ""
},
subdomain: {
default: null
},
pub: {
default: null
}
},
inline: !1,
group: "block",
draggable: !0,
atom: !0,
selectable: !0,
isolating: !0,
defining: !0,
parseDOM: [{
tag: "div.community-chat",
getAttrs: t => {
var e;
if (t instanceof HTMLElement) try {
return JSON.parse((e = t.getAttribute("data-attrs")) != null ? e : "")
} catch (n) {
return !1
}
return !1
}
}],
toDOM: t => {
if (typeof window != "undefined") try {
const e = document.createElement("div");
if (Object.assign(e, {
className: "community-chat",
"data-attrs": JSON.stringify(t.attrs)
}), !t.attrs.pub || !t.attrs.subdomain) {
const n = document.createElement("div");
return n.innerText = "Could not load subscriber chat link", e.appendChild(n), e
}
return Fe(p(Gh, {
pub: t.attrs.pub,
subdomain: t.attrs.subdomain
}), e), e
} catch (e) {
return console.error("Error rendering CommunityChatEmbed", e), Oe({
msg: null,
node: t,
err: e,
group: "block"
})
}
return fl(t)
},
toDOMStatic: t => fl(t)
},
Iee = F({
name: "communityChat",
nodeSpec: qd,
addCommands() {
return {
insertCommunityChat: t => ({
commands: e
}) => e.insertContent({
type: this.name,
attrs: t
}),
insertCommunityChatEmbed: t => ({
commands: e
}) => {
const n = {
url: fr({
pubKey: t.subdomain,
utm_source: qe.chatEmbed
}),
subdomain: t.subdomain,
pub: {
id: t.id,
name: t.name,
author_name: t.author_name,
author_photo_url: t.author_photo_url
}
};
return e.insertContent({
type: this.name,
attrs: n
})
},
insertVisitThreadButton: t => ({
commands: e
}) => e.insertCommunityChatEmbed(t)
}
}
});
function fl(t) {
return ["div", {
class: "community-chat",
"data-attrs": JSON.stringify(t.attrs),
"data-component-name": "CommunityChatRenderPlaceholder"
}]
}
const Nee = /^https?:\/\/open\.substack\.com(?:\.localhost:5000)?\/pub\/([^\/]+)\/chat(\?.*)?$/,
Mee = /^https?:\/\/([^\.]+)\.substack\.com(?:\.localhost:5000)?\/chat(\?.*)?$/,
Oee = /^https?:\/\/substack\.com(?:\.localhost:5000)?\/chat\/(\d+)/;
function Lee(t, {
customSchema: e
} = {}) {
if (e && !e.nodes.communityChat) return null;
const n = lt(t);
return n && n.pathname.match(/^(\/pub\/[^\/]+)?\/chat($|\/)/) ? t : null
}
function Ree(t) {
return N(this, null, function*() {
const e = (yield Z(() =>
import ("./sortBy-53166f8e.js").then(o => o.c), ["assets/sortBy-53166f8e.js", "assets/x-933ea65f.js", "assets/tracking-5779d19a.js", "assets/_sentry-release-injection-file-9254565a.js", "assets/FlexBox-8b7f0d6c.js", "assets/FlexBox-644f665d.css", "assets/HoverCard-92fb7948.js", "assets/useResponsive-4f80f3bd.js", "assets/transition-d7aff1cb.js", "assets/_defineProperty-fcca2d9e.js", "assets/react-laag.esm-23de3db0.js", "assets/HoverCard-6364507e.css", "assets/responsive_img-3c51e57a.js", "assets/responsive_img-51b02764.css", "assets/sortBy-a6711bc6.css"])).default;
let n = Bee(t),
s = null;
try {
if (n) {
const {
body: o
} = yield e.get("/api/v1/publication/chat-embed").query({
subdomain: n,
url: t
});
s = o
} else {
const o = zee(t);
if (o) {
const r = yield e.get(`/api/v1/publication/public/${o}`);
s = r.body.pub, n = r.body.pub.subdomain
}
}
} catch (o) {}
return s ? {
url: fr({
pubKey: s.subdomain,
utm_source: qe.chatEmbed
}),
subdomain: n,
pub: s
} : null
})
}
function Pee(n) {
return N(this, arguments, function*(t, {
customSchema: e
} = {}) {
const a = (e ? {
schema: e
} : yield Z(() => Promise.resolve().then(() => Te), void 0)).schema,
o = yield Ree(t);
return o ? a.nodes.communityChat.create(o) : null
})
}
function Bee(t) {
let e = t.match(Nee);
return !e && (e = t.match(Mee), !e) ? null : e[1]
}
function zee(t) {
const e = t.match(Oee);
return e ? e[1] : null
}
const qee = ({
node: t
}) => {
const {
attrs: e
} = t;
return p(wt, null, p(ku, {
postId: e.postId
}))
},
Fd = {
attrs: {
url: {
default: ""
},
postId: {
default: null
},
communityPost: {
default: null
},
author: {
default: null
}
},
inline: !1,
group: "block",
draggable: !0,
atom: !0,
selectable: !0,
isolating: !0,
defining: !0,
parseDOM: [{
tag: "div.community-post",
getAttrs: t => {
var e;
if (t instanceof HTMLElement) try {
return JSON.parse((e = t.getAttribute("data-attrs")) != null ? e : "")
} catch (n) {
return !1
}
return !1
}
}],
toDOM: t => {
if (typeof window != "undefined") try {
const e = document.createElement("div");
return Object.assign(e, {
className: "community-post",
"data-attrs": JSON.stringify(t.attrs)
}), Fe(p(ku, {
postId: t.attrs.postId
}), e), e
} catch (e) {
return console.error("Error rendering CommunityPostEmbed", e), Oe({
msg: null,
node: t,
err: e,
group: "block"
})
}
return hl(t)
},
toDOMStatic: t => hl(t)
},
Fee = F({
name: "communityPost",
nodeSpec: Fd,
addCommands() {
return {
insertCommunityPost: t => ({
commands: e
}) => e.insertContent({
type: this.name,
attrs: t
})
}
},
addNodeView() {
return kt(qee)
}
});
function hl(t) {
return ["div", {
class: "community-post",
"data-attrs": JSON.stringify(t.attrs),
"data-component-name": "CommunityPostPlaceholder"
}]
}
const jd = /^\/chat(?:\/\d+)?\/posts?\/([-A-Fa-f0-9]+)$/;
function jee(t, {
customSchema: e
} = {}) {
if (e && !e.nodes.communityPost) return null;
const n = lt(t);
return n && n.pathname.match(jd) ? t : null
}
function $ee(t) {
return N(this, null, function*() {
var w, E;
const e = (yield Z(() =>
import ("./sortBy-53166f8e.js").then(_ => _.c), ["assets/sortBy-53166f8e.js", "assets/x-933ea65f.js", "assets/tracking-5779d19a.js", "assets/_sentry-release-injection-file-9254565a.js", "assets/FlexBox-8b7f0d6c.js", "assets/FlexBox-644f665d.css", "assets/HoverCard-92fb7948.js", "assets/useResponsive-4f80f3bd.js", "assets/transition-d7aff1cb.js", "assets/_defineProperty-fcca2d9e.js", "assets/react-laag.esm-23de3db0.js", "assets/HoverCard-6364507e.css", "assets/responsive_img-3c51e57a.js", "assets/responsive_img-51b02764.css", "assets/sortBy-a6711bc6.css"])).default,
n = lt(t),
s = n && ((w = n.pathname.match(jd)) == null ? void 0 : w[1]);
if (!s) return null;
let a;
try {
a = (yield e.get(`/api/v1/community/posts/${s}`)).body
} catch (_) {
if (_ instanceof Error) {
const k = _.response;
if (k.status === 402 && ((E = k.body) != null && E.status)) a = k == null ? void 0 : k.body;
else return null
} else return null
}
const {
user: o,
communityPost: {
id: r,
publication_id: i,
body: c,
audience: l,
type: u,
media_assets: d,
link_url: m,
threadMediaUploads: f
},
status: h
} = a;
let g = {
author: o
};
const b = f != null && f.length ? f[0].mediaUpload : null;
l === "all_subscribers" && (!h || h === "FREE_SUBSCRIPTION_REQUIRED") && (g = P(S({}, g), {
communityPost: {
id: r,
publication_id: i,
body: c,
audience: l,
type: u,
media_assets: d,
threadMediaUploads: b ? [{
mediaUpload: b
}] : [],
link_url: m ? yt(m, {
utm_source: qe.postEmbed
}) : null
}
}));
const x = zf({
postId: s,
utm_source: qe.threadEmbed
});
return S({
url: x,
postId: s
}, g)
})
}
function Uee(n) {
return N(this, arguments, function*(t, {
customSchema: e
} = {}) {
const a = (e ? {
schema: e
} : yield Z(() => Promise.resolve().then(() => Te), void 0)).schema,
o = yield $ee(t);
return o ? a.nodes.communityPost.create(o) : null
})
}
const $d = {
content: "text*",
group: "block",
draggable: !1,
selectable: !0,
isolating: !0,
defining: !0,
atom: !1,
parseDOM: [{
tag: "p.cta-caption"
}],
toDOM: () => ["p", {
class: "cta-caption"
}, 0]
},
Vee = F({
name: "ctaCaption",
nodeSpec: $d
}),
Ud = {
attrs: {
url: {
default: ""
},
thumbnail_url: {
default: ""
},
height: {
default: ""
},
title: {
default: ""
},
description: {
default: ""
}
},
inline: !1,
group: "block",
draggable: !0,
atom: !0,
selectable: !0,
isolating: !0,
defining: !0,
parseDom: [{
tag: "div.datawrapper-wrap",
getAttrs: re
}],
toDOM: t => Vd(t),
toDOMStatic: t => Xee(t)
},
Hee = F({
name: "datawrapper",
nodeSpec: Ud,
addCommands() {
return {
insertDatawrapper: t => ({
commands: e
}) => e.insertContent({
type: this.name,
attrs: t
})
}
}
}),
Gee = /^.*https?:\/\/datawrapper\.dwcdn\.net\/.*$/,
Wee = /^.*https?:\/\/(www\.)?datawrapper.de\/_\/.*$/,
Jee = t => {
const e = Gee.exec(t);
if (e) return e[0];
const n = Wee.exec(t);
return n && n[0]
},
Yee = t => N(void 0, null, function*() {
return (yield(yield Z(() =>
import ("./sortBy-53166f8e.js").then(a => a.c), ["assets/sortBy-53166f8e.js", "assets/x-933ea65f.js", "assets/tracking-5779d19a.js", "assets/_sentry-release-injection-file-9254565a.js", "assets/FlexBox-8b7f0d6c.js", "assets/FlexBox-644f665d.css", "assets/HoverCard-92fb7948.js", "assets/useResponsive-4f80f3bd.js", "assets/transition-d7aff1cb.js", "assets/_defineProperty-fcca2d9e.js", "assets/react-laag.esm-23de3db0.js", "assets/HoverCard-6364507e.css", "assets/responsive_img-3c51e57a.js", "assets/responsive_img-51b02764.css", "assets/sortBy-a6711bc6.css"])).default.get("/api/v1/datawrapper-embed").query({
url: t.trim()
})).body
}),
Kee = (n, ...s) => N(void 0, [n, ...s], function*(t, {
customSchema: e
} = {}) {
return (e ? {
schema: e
} : yield Z(() => Promise.resolve().then(() => Te), void 0)).schema.nodes.datawrapper.create(yield Yee(t))
}),
Xee = (t, {} = {}) => {
const e = document.createElement("div");
e.className = "datawrapper-wrap static", e.setAttribute("data-component-name", "DatawrapperToDOMStatic"), t.attrs.thumbnail_url;
const n = document.createElement("a");
if (n.href = t.attrs.url.replace(/embed\//, ""), n.setAttribute("target", "_blank"), t.attrs.title) {
const o = document.createElement("div");
o.className = "datawrapper-title", o.innerHTML = t.attrs.title, e.appendChild(o)
}
if (t.attrs.description) {
const o = document.createElement("div");
o.className = "datawrapper-description", o.innerHTML = t.attrs.description, e.appendChild(o)
}
const s = document.createElement("div"),
a = document.createElement("img");
return a.className = "datawrapper-wrap thumbnail", a.src = q(t.attrs.thumbnail_url, 640), a.style.backgroundImage = `url(${t.attrs.thumbnail_url})`, t.attrs.belowTheFold && a.setAttribute("loading", "lazy"), n.append(a), s.append(n), e.appendChild(s), e
},
Vd = t => {
const e = document.createElement("div");
e.id = "datawrapper-iframe", e.className = "datawrapper-wrap outer", e.dataset.attrs = JSON.stringify(t.attrs), e.setAttribute("data-component-name", "DatawrapperToDOM");
const n = document.createElement("iframe");
n.id = "iframe-datawrapper", n.className = "datawrapper-iframe", n.src = t.attrs.url, n.width = "730", n.height = t.attrs.height || "455", n.frameBorder = "0", n.scrolling = "no", t.attrs.belowTheFold && n.setAttribute("loading", "lazy"), e.appendChild(n);
const s = document.createElement("script");
return s.type = "text/javascript", s.text = Wh, e.appendChild(s), e
};
class Zee {
constructor(e) {
const n = Vd(e),
s = n.querySelector(".datawrapper-iframe"),
a = document.createElement("div");
a.className = "datawrapper-screen", a.addEventListener("dblclick", () => {
a.classList.add("sunken"), s.focus()
}), s.addEventListener("blur", () => {
a.classList.remove("sunken")
}), n.appendChild(a), this.dom = n
}
}
const si = new ws({
actionButtonAttr: null,
substackType: "ebook",
mimeTypesToSignature: ei,
actionButtonText: null
}),
Qee = F({
name: "ebook",
nodeSpec: si.nodeSpec
}),
ete = ({
label: t,
mediaUploadId: e,
duration: n
}) => (s, a) => (a && a(ie(s, s.schema.nodes.audio.create({
label: t,
mediaUploadId: e,
duration: n,
isEditorNode: !0
}))), !0),
tte = Pe.create({
name: "audioInsert",
addCommands() {
return {
insertAudio: ({
label: t,
mediaUploadId: e,
duration: n
}) => ({
state: s,
dispatch: a
}) => ete({
label: t,
mediaUploadId: e,
duration: n
})(s, a)
}
}
}),
nte = t => (e, n) => {
const {
iString: s
} = I18N.i({
pub: t
});
if (!Le(e, e.schema.nodes.button)) return !1;
const a = {
url: `${ce.CHECKOUT_URL}&donate=true`,
text: s("Donate Subscriptions")
};
return n && n(ie(e, e.schema.nodes.button.create(a))), !0
},
ste = t => (e, n) => {
const {
iString: s
} = I18N.i({
pub: t
});
if (!Le(e, e.schema.nodes.button)) return !1;
const a = {
url: `${ce.LEADERBOARD_URL}&utm_source=${qe.post}`,
text: s("Refer a friend")
};
return n && n(ie(e, e.schema.nodes.button.create(a))), !0
},
ate = ({
writerReferralCode: t,
publication: e,
postId: n
}) => (s, a) => {
const {
iString: o,
iTemplate: r
} = I18N.i({
pub: e
});
if (!Le(s, s.schema.nodes.button)) return !1;
const i = r `Start writing today. Use the button below to create your Substack and connect your publication with ${e.name}`,
c = {
url: `${Yl(t||"")}?utm_source=${qe.substack}&utm_context=${Kl.post}&utm_content=${n}&utm_campaign=${Ut.writerReferralButton}`,
text: o("Start a Substack")
},
l = s.schema.nodes.captionedWriterReferralButton.create(c, s.schema.nodes.ctaCaption.create(null, [s.schema.text(i)]));
return a && a(ie(s, l)), !0
},
ote = t => (e, n) => {
const {
iString: s
} = I18N.i({
pub: t
});
if (!Le(e, e.schema.nodes.button)) return !1;
const a = {
url: ce.HALF_MAGIC_COMMENTS_URL,
text: s("Leave a comment")
};
return n && n(ie(e, e.schema.nodes.button.create(a))), !0
},
rte = (t, e, n) => (s, a) => {
if (se(ae.READER_SURVEY_LINKED_IN_POST, {
editorVersion: "1",
surveyId: e.id
}), !Le(s, s.schema.nodes.button)) return !1;
const o = {
url: `${Wl(t,e.id)}`,
text: n
};
return a && a(ie(s, s.schema.nodes.button.create(o))), !0
},
ite = t => (e, n) => {
const {
iString: s
} = I18N.i({
pub: t
});
if (!Le(e, e.schema.nodes.button)) return !1;
const a = {
url: ce.SHARE_URL,
text: s("Share")
};
return n && n(ie(e, e.schema.nodes.button.create(a))), !0
},
cte = t => (e, n) => {
const {
iTemplate: s
} = I18N.i({
pub: t
});
if (!Le(e, e.schema.nodes.button)) return !1;
const a = {
url: ce.SHARE_PUB_URL,
text: s `Share ${t.name}`
};
return n && n(ie(e, e.schema.nodes.button.create(a))), !0
},
lte = ({
couponPub: t,
scrollParent: e,
parentClass: n,
get_coupons: s,
insert_coupon: a,
SelectField: o,
openPrompt: r,
closePrompt: i,
getNetworkErrorMessage: c
}) => (l, u, d) => {
const {
iString: m
} = I18N.i({
pub: t
});
if (!Le(l, l.schema.nodes.button)) return !1;
const f = {
parentClass: n,
root: e ? document.querySelector(`.${e}`) : d.dom.parentNode,
scrollParent: e,
offsetTop: 10
},
h = Object.assign({
title: m("Loading..."),
no_buttons: !0,
language: t.language
}, f);
return r(h), s().then(g => {
i(h);
const x = g.map(E => {
var _;
return {
label: (_ = E.name) != null ? _ : "",
value: E
}
}).concat([{
label: m("Create new offer"),
value: {
create_new: !0
}
}]),
v = {
coupon: new o({
label: m("Select offer..."),
required: !0,
options: x,
onChange: E => {
if (E && "create_new" in E && E.create_new) {
i(w);
const _ = window.open(`${rt(t)}/publish/offers/new?popup=true`, "_blank");
_ && _.addEventListener && _.addEventListener("message", ({
data: k
}) => {
k && k.coupon && a({
coupon: k.coupon,
state: l,
dispatch: u,
schema: l.schema
})
}, !1)
}
}
})
},
w = Object.assign({
title: m("Special Offer"),
fields: v,
language: t == null ? void 0 : t.language,
onSubmit: ({
coupon: E
}) => {
a({
coupon: E,
state: l,
dispatch: d.dispatch,
schema: l.schema
})
},
onClose: () => {
d.focus()
}
}, f);
r(w)
}).catch(g => {
i(h), alert(c(g))
}), !1
},
ute = ({
scrollParent: t,
parentClass: e,
TextField: n,
openPrompt: s,
publication: a
}) => (o, r, i) => {
const {
iString: c
} = I18N.i({
pub: a
});
if (!Le(o, o.schema.nodes.button)) return !1;
const l = {
parentClass: e,
title: c("Create a button"),
root: t ? document.querySelector(`.${t}`) : i.dom.parentNode,
scrollParent: t,
offsetTop: 10,
language: a == null ? void 0 : a.language,
fields: {
text: new n({
label: c("Enter text..."),
required: !0,
clean: u => (u || "").trim(),
validate: u => {
if (u.length > 40) return c("Too long")
}
}),
href: new n({
label: c("Enter URL..."),
required: !0,
clean: u => (u || "").trim(),
validate: u => {
if (!/^%%.*%%$/.test(u)) {
try {
const d = new URL(u);
if (["http:", "https:", "mailto:"].includes(d.protocol)) return
} catch (d) {
console.error("Failed to parse URL:", d)
}
return c("Invalid URL")
}
}
})
}
};
return l.onSubmit = u => {
const d = {
url: u.href,
text: u.text
};
r && i.dispatch(ie(o, o.schema.nodes.button.create(d)))
}, l.onClose = () => {
i.focus()
}, s(l), !0
},
pte = ({
publication: t
}) => (e, n) => {
const {
iTemplate: s
} = I18N.i({
pub: t
});
if (!Le(e, e.schema.nodes.button)) return !1;
const a = t.default_group_coupon,
o = {
url: `${ce.CHECKOUT_URL}group=true${a?`&coupon=${a}`:""}`,
text: Cn(t, () => a && t.default_group_coupon_percent_off ? s `Get ${t.default_group_coupon_percent_off.split(".")[0]}% off a group subscription` : s `Get a group subscription`, r => a && t.default_group_coupon_percent_off ? `Get ${t.default_group_coupon_percent_off.split(".")[0]}% off a group ${r.subscription}` : `Get a group ${r.subscription}`)
};
return n && n(ie(e, e.schema.nodes.button.create(o))), !0
},
dte = t => (e, n) => {
const {
iTemplate: s
} = I18N.i({
pub: t
});
if (!Le(e, e.schema.nodes.button)) return !1;
const a = {
url: `${ce.CHECKOUT_URL}&gift=true`,
text: Cn(t, () => s `Give a gift subscription`, o => `Give a gift ${o.subscription}`)
};
return n && n(ie(e, e.schema.nodes.button.create(a))), !0
},
mte = t => (e, n) => {
if (!Le(e, e.schema.nodes.button)) return !1;
const s = {
url: ce.CHECKOUT_URL,
text: _n(t, {
now: !0
}),
language: t.language
};
return n && n(ie(e, e.schema.nodes.button.create(s))), !0
},
fte = t => (e, n) => {
const {
iTemplate: s
} = I18N.i({
pub: t
});
if (!Le(e, e.schema.nodes.button)) return !1;
const a = t.payments_state !== "enabled" ? s `Thanks for reading ${t.name}! Subscribe for free to receive new posts and support my work.` : s `${t.name} is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.`,
o = {
url: ce.CHECKOUT_URL,
text: _n(t),
language: t.language
},
r = e.schema.nodes.subscribeWidget.create(o, [e.schema.nodes.ctaCaption.create(null, [e.schema.text(a)])]);
return n && n(ie(e, r)), !0
},
hte = t => (e, n) => {
const {
iString: s,
iTemplate: a
} = I18N.i({
pub: t
});
if (!Le(e, e.schema.nodes.button)) return !1;
const o = a `Thank you for reading ${t.name}. This post is public so feel free to share it.`,
r = {
url: ce.SHARE_URL,
text: s("Share")
},
i = e.schema.nodes.captionedShareButton.create(r, e.schema.nodes.ctaCaption.create(null, [e.schema.text(o)]));
return n && n(ie(e, i)), !0
},
ole = t => (e, n) => {
const {
tr: s
} = e, {
iTemplate: a
} = I18N.i({
pub: t
});
if (!Le(e, e.schema.nodes.button)) return !1;
const o = t.payments_state !== "enabled" ? a `Thanks for reading ${t.name}! Subscribe for free to receive new posts and support my work.` : a `${t.name} is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.`,
r = {
url: ce.CHECKOUT_URL,
text: _n(t),
language: t.language
};
let i = 0,
c = null;
return e.doc.descendants((l, u) => {
var d;
return ((d = l.type) == null ? void 0 : d.name) === "paragraph" && (i++, i === 2 && (c = u + l.nodeSize)), !1
}), i >= 5 && c !== null && s.insert(c, e.schema.nodes.subscribeWidget.create(r, [e.schema.nodes.ctaCaption.create(null, [e.schema.text(o)])])), s.insert(s.doc.content.size, e.schema.nodes.subscribeWidget.create(r, [e.schema.nodes.ctaCaption.create(null, [e.schema.text(o)])])), n && n(s), !0
};
function gte(t) {
return (e, n) => Le(e, e.schema.nodes.communityChat) ? (n && n(ie(e, e.schema.nodes.communityChat.create({
url: fr({
pubKey: t.subdomain,
utm_source: qe.chatEmbed
}),
subdomain: t.subdomain,
pub: {
id: t.id,
name: t.name,
author_name: t.author_name,
author_photo_url: t.author_photo_url
}
}))), !0) : !1
}
const bte = Pe.create({
name: "buttonCustom",
addCommands() {
return {
insertSubscribeButton: t => ({
state: e,
dispatch: n
}) => mte(t)(e, n),
insertSubscribeButtonWithPreamble: t => ({
state: e,
dispatch: n
}) => fte(t)(e, n),
insertCaptionedShareButton: t => ({
state: e,
dispatch: n
}) => hte(t)(e, n),
insertSpecialOfferButton: ({
couponPub: t,
scrollParent: e,
parentClass: n,
get_coupons: s,
insert_coupon: a,
SelectField: o,
openPrompt: r,
closePrompt: i,
getNetworkErrorMessage: c
}) => ({
state: l,
dispatch: u,
view: d
}) => lte({
couponPub: t,
scrollParent: e,
parentClass: n,
get_coupons: s,
insert_coupon: a,
SelectField: o,
openPrompt: r,
closePrompt: i,
getNetworkErrorMessage: c
})(l, u, d),
insertGroupSubscriptionButton: ({
publication: t
}) => ({
state: e,
dispatch: n
}) => pte({
publication: t
})(e, n),
insertDonateButton: t => ({
state: e,
dispatch: n
}) => nte(t)(e, n),
insertReferralButton: t => ({
state: e,
dispatch: n
}) => ste(t)(e, n),
insertCaptionedWriterReferralButton: t => ({
state: e,
dispatch: n
}) => ate({
writerReferralCode: t.writerReferralCode,
publication: t.publication,
postId: t.postId
})(e, n),
insertGiftButton: t => ({
state: e,
dispatch: n
}) => dte(t)(e, n),
insertCommentsButton: t => ({
state: e,
dispatch: n
}) => ote(t)(e, n),
insertSurveyButton: (t, e, n) => ({
state: s,
dispatch: a
}) => rte(t, e, n)(s, a),
insertSharePubButton: t => ({
state: e,
dispatch: n
}) => cte(t)(e, n),
insertSharePostButton: t => ({
state: e,
dispatch: n
}) => ite(t)(e, n),
insertCustomButton: ({
scrollParent: t,
parentClass: e,
TextField: n,
openPrompt: s,
publication: a
}) => ({
state: o,
dispatch: r,
view: i
}) => ute({
scrollParent: t,
parentClass: e,
TextField: n,
openPrompt: s,
publication: a
})(o, r, i),
insertVisitThreadButton: t => ({
state: e,
dispatch: n
}) => gte(t)(e, n)
}
}
}),
vte = t => (e, n) => {
const s = rt(t);
return n && n(ie(e, e.schema.nodes.install_substack_app.create({
logo_url: t.logo_url || `${s}/img/substack.png`,
author_name: t.author_name,
publication_subdomain: t.subdomain,
publication_name: t.name,
language: t.language
}))), !0
},
xte = Pe.create({
name: "embedContentCustom",
addCommands() {
return {
insertInstallSubstackAppEmbed: t => ({
state: e,
dispatch: n
}) => vte(t)(e, n)
}
}
}),
Hd = {
attrs: {
innerHTML: {
default: ""
},
stylesheet: {
default: ""
}
},
untrackedAttrs: ["innerHTML", "stylesheet"],
inline: !1,
group: "block",
draggable: !0,
atom: !0,
selectable: !0,
isolating: !0,
defining: !0,
parseDOM: [{
tag: "div.github-gist",
getAttrs: re
}],
toDOMStatic: t => gl(t, !0),
toDOM: t => gl(t, !1)
},
yte = F({
name: "gitgist",
nodeSpec: Hd,
addCommands() {
return {
insertGithubGist: t => ({
commands: e
}) => e.insertContent({
type: this.name,
attrs: t
})
}
}
}),
Gd = /(https?:\/\/gist.github.com\/([^\s]*\/[^\s\.#]*)([\.#][^\s]*)?)/,
wte = (t, {
customSchema: e
} = {}) => {
if (e && !e.nodes.gitgist) return null;
const n = Gd.exec(t);
return n && n[1]
},
kte = t => {
const e = t.match(Gd);
return e && e[2] ? e[2] : null
},
_te = t => N(void 0, null, function*() {
const e = kte(t);
return (yield(yield Z(() =>
import ("./sortBy-53166f8e.js").then(o => o.c), ["assets/sortBy-53166f8e.js", "assets/x-933ea65f.js", "assets/tracking-5779d19a.js", "assets/_sentry-release-injection-file-9254565a.js", "assets/FlexBox-8b7f0d6c.js", "assets/FlexBox-644f665d.css", "assets/HoverCard-92fb7948.js", "assets/useResponsive-4f80f3bd.js", "assets/transition-d7aff1cb.js", "assets/_defineProperty-fcca2d9e.js", "assets/react-laag.esm-23de3db0.js", "assets/HoverCard-6364507e.css", "assets/responsive_img-3c51e57a.js", "assets/responsive_img-51b02764.css", "assets/sortBy-a6711bc6.css"])).default.get("/api/v1/github/gist").query({
id: e
})).body
}),
Cte = (n, ...s) => N(void 0, [n, ...s], function*(t, {
customSchema: e
} = {}) {
return (e ? {
schema: e
} : yield Z(() => Promise.resolve().then(() => Te), void 0)).schema.nodes.gitgist.create(yield _te(t))
});
function gl(t, e) {
const n = document.createElement("div");
n.classList.add("github-gist"), e ? n.setAttribute("data-component-name", "GitgistToDOMStatic") : (n.dataset.attrs = JSON.stringify(t.attrs), n.setAttribute("data-component-name", "GitgistToDOM")), n.innerHTML = bt(t.attrs.innerHTML, {
allowedTags: bt.defaults.allowedTags,
allowedAttributes: Object.assign({}, bt.defaults.allowedAttributes, {
"*": ["href", "style", "id", "data-*", "itemprop", "class"]
})
});
const s = document.createElement("link");
if (s.rel = "stylesheet", s.href = t.attrs.stylesheet, n.prepend(s), e) {
n.classList.add("static");
const a = n.getElementsByTagName("td");
for (let o = 0; o < a.length; o++) {
const r = a[o];
r.dataset.lineNumber ? (r.innerHTML = r.dataset.lineNumber, r.align = "right") : (r.align = "left", r.innerHTML = `<pre>${r.innerHTML}</pre>`), r.classList.add("content"), r.height = "20px"
}
}
return n
}
const rr = t => t.attrs.fullscreen ? "full" : t.attrs.imageSize || "normal",
Wd = {
attrs: {
src: {
default: ""
},
srcNoWatermark: {
default: null
},
fullscreen: {
default: null
},
imageSize: {
default: null
},
height: {
default: null
},
width: {
default: null
},
resizeWidth: {
default: null
},
bytes: {
default: null
},
alt: {
default: null
},
title: {
default: null
},
type: {
default: null
},
href: {
default: null
},
belowTheFold: {
default: !1
},
topImage: {
default: !1
},
internalRedirect: {
default: null
}
},
inline: !1,
atom: !0,
group: "block",
draggable: !0,
selectable: !0,
isolating: !0,
defining: !0,
parseDOM: [{
tag: "p",
priority: 100,
getAttrs: t => {
if (t.textContent.trim()) return !1;
const [e] = t.getElementsByTagName("img");
return e ? Dn(e) : !1
}
}, {
tag: "img[src]",
getAttrs: t => t.getAttribute("height") && Number(t.getAttribute("height")) <= 1 || t.getAttribute("width") && Number(t.getAttribute("width")) <= 1 ? !1 : Dn(t)
}],
toDOM: t => {
try {
const e = wn(t),
n = rr(t),
s = Ri.map(v => ({
width: v,
imageSrc: wn(t, {
maxWidth: v
})
})),
a = Ri.map(v => ({
width: v,
imageSrc: wn(t, {
maxWidth: v,
imageProps: {
format: "webp"
}
})
}));
let o, r;
if (t.attrs.height && t.attrs.width) switch (o = t.attrs.height, r = t.attrs.width, t.attrs.resizeWidth ? (o = t.attrs.resizeWidth * o / r, r = t.attrs.resizeWidth) : Js(t.attrs) && r < Ds && (o *= Ds / r, r = Ds), n) {
case "full":
r = Math.min(r, hr);
break
}
const i = 240,
c = 4,
l = t.attrs.width / t.attrs.height,
u = t.attrs.resizeWidth ? t.attrs.resizeWidth / l : t.attrs.height,
d = t.attrs.resizeWidth ? t.attrs.resizeWidth / u : l;
let m = !(t.attrs.href && t.attrs.href != t.attrs.src);
m = m && t.attrs.height > i && u > i, m = m && l < c && d < c;
const f = typeof window == "undefined";
let h;
t.attrs.href ? h = Ql(t.attrs.href) ? q(t.attrs.href) : t.attrs.href : h = q(t.attrs.src);
const g = document.createElement("div"),
b = m ? "image-link is-viewable-img image2" : "image-link image2";
return m && f && (g.className = "image-link-expand", ur(p(Ab, {
size: 20
}), g)), ["a", {
class: b,
target: "_blank",
href: h,
"data-component-name": "Image2ToDOM"
},
["div", {
class: `image2-inset${n==="full"?" image2-full-screen":""}`
},
["picture", {},
["source", {
type: "image/webp",
srcset: a.map(v => `${v.imageSrc} ${v.width}w`).join(", "),
sizes: "100vw"
}],
["img", {
src: e,
width: n === "full" ? void 0 : r,
height: n === "full" ? void 0 : o,
"data-attrs": JSON.stringify(t.attrs),
class: n === "full" ? "sizing-fullscreen" : n === "large" ? "sizing-large" : "sizing-normal",
alt: t.attrs.alt || "",
title: t.attrs.title || t.attrs.alt,
srcset: s.map(v => `${v.imageSrc} ${v.width}w`).join(", "),
sizes: "100vw",
loading: t.attrs.belowTheFold ? "lazy" : null,
fetchpriority: t.attrs.topImage ? "high" : null
}]
], g
]
]
} catch (e) {
return console.error("Error rendering Maximize2", e), Oe({
msg: null,
node: t,
err: e,
group: "block"
})
}
},
toDOMStatic: t => {
const e = rr(t),
n = t.attrs.href || t.attrs.internalRedirect || q(t.attrs.src, void 0, {
quality: e === "normal" ? "auto:good" : "auto:best"
});
if (t.attrs.height && t.attrs.width && e !== "full") {
const {
width: a,
height: o
} = t.attrs;
let r = a;
t.attrs.resizeWidth ? r = t.attrs.resizeWidth : Js(t.attrs) && (r = Math.min(Math.max(a, Ds), Ff));
const i = Math.min(r, Is),
c = bl(a, o, i),
l = r > Is,
u = {
"data-attrs": JSON.stringify(t.attrs),
alt: t.attrs.alt || "",
title: t.attrs.title || t.attrs.alt,
width: i,
height: c,
class: l ? "wide-image" : "",
src: q(t.attrs.src, !Js(t.attrs) && l ? r * 2 : r, {
lossy: Ws(t.attrs)
})
};
return ["table", {
class: "image-wrapper",
width: "100%",
border: "0",
cellSpacing: "0",
cellPadding: "0",
"data-component-name": "Image2ToDOMStatic"
},
["tr", {},
["td"],
["td", {
align: "left",
class: "content",
width: r
},
["a", {
class: "image-link",
target: "_blank",
href: n
},
["img", u]
]
],
["td"]
]
]
} else if (e === "full") {
const a = q(t.attrs.src, Is * 2, {
lossy: Ws(t.attrs),
crop: "limit",
aspect: e === "full" ? "1" : void 0
});
return ["a", {
class: "image-link",
target: "_blank",
href: n
},
["img", {
src: a,
"data-attrs": JSON.stringify(t.attrs),
alt: t.attrs.alt || "",
title: t.attrs.title || t.attrs.alt,
height: t.attrs.height,
width: t.attrs.width
}]
]
}
const s = q(t.attrs.src, Is * 2, {
lossy: Ws(t.attrs)
});
return ["a", {
class: "image-link",
target: "_blank",
href: n
},
["img", {
src: s,
"data-attrs": JSON.stringify(t.attrs),
alt: t.attrs.alt || "",
title: t.attrs.title || t.attrs.alt,
width: t.attrs.resizeWidth || t.attrs.width,
height: t.attrs.resizeWidth ? bl(t.attrs.width, t.attrs.height, t.attrs.resizeWidth) : t.attrs.height
}]
]
}
},
Ete = F({
name: "image2",
nodeSpec: Wd
}),
Dn = (t, e, {
bytes: n,
internalRedirect: s
} = {}) => {
const a = t.getAttribute("data-attrs");
if (a) try {
return JSON.parse(a)
} catch (l) {}
let o;
t.getAttribute("imageSize") && (o = t.getAttribute("imageSize"));
let r, i;
const c = t.getAttribute("style");
if (c) {
const l = /max-height:\s*(\d+)px/.exec(c);
l && (r = Number(l[1]));
const u = /max-width:\s*(\d+)px/.exec(c);
u && (i = Number(u[1]))
} else t.getAttribute("width") && t.getAttribute("height") && (r = Number(t.getAttribute("height")), i = Number(t.getAttribute("width")));
return t.complete && t.naturalHeight && t.naturalWidth && (r = t.naturalHeight, i = t.naturalWidth), {
src: qf(t.getAttribute("data-medium-file") || t.getAttribute("src")),
type: e,
title: t.getAttribute("title"),
alt: t.getAttribute("alt"),
height: r,
width: i,
bytes: n,
internalRedirect: s,
imageSize: o,
href: t.getAttribute("href")
}
},
wn = (t, {
maxWidth: e = null,
imageProps: n = {}
} = {}) => {
const s = rr(t);
let a = s === "full" ? Bo * 2 : s === "large" ? zo * 2 : hr * 2;
return e && (a = Math.min(e, a)), q(t.attrs.src, a, S({
lossy: Ws(t.attrs)
}, n))
},
Ate = (t, {
customSchema: e
} = {}) => {
if (e && !e.nodes.image2) return null;
const n = /(https?:\/\/(giphy\.com\/gifs|gph.is\/g|media\d*\.giphy\.com\/media)\/[^\s]+)/.exec(t);
return n && n[1]
},
Ste = t => N(void 0, null, function*() {
const e = (yield Z(() =>
import ("./sortBy-53166f8e.js").then(o => o.c), ["assets/sortBy-53166f8e.js", "assets/x-933ea65f.js", "assets/tracking-5779d19a.js", "assets/_sentry-release-injection-file-9254565a.js", "assets/FlexBox-8b7f0d6c.js", "assets/FlexBox-644f665d.css", "assets/HoverCard-92fb7948.js", "assets/useResponsive-4f80f3bd.js", "assets/transition-d7aff1cb.js", "assets/_defineProperty-fcca2d9e.js", "assets/react-laag.esm-23de3db0.js", "assets/HoverCard-6364507e.css", "assets/responsive_img-3c51e57a.js", "assets/responsive_img-51b02764.css", "assets/sortBy-a6711bc6.css"])).default,
n = "image/gif",
s = yield e.get("/api/v1/giphy").query({
url: t
}), a = yield new Promise(o => Ks(wn({
attrs: {
type: n,
src: s.body.url
}
}), o));
return Dn(a, n, {
bytes: s.body.bytes
})
}),
Tte = (n, ...s) => N(void 0, [n, ...s], function*(t, {
customSchema: e
} = {}) {
return (e ? {
schema: e
} : yield Z(() => Promise.resolve().then(() => Te), void 0)).schema.nodes.image2.create(yield Ste(t))
});
function Ws(t) {
return Js(t) && (!t.bytes || t.bytes > 5e6)
}
function Js(t) {
return !!(t.type && t.type === "image/gif" || t.src && t.src.split("?")[0].split("#")[0].endsWith(".gif"))
}
function bl(t, e, n) {
return e * n / t
}
const Dte = /[@#][\w.]+|\n/g,
Jd = {
attrs: {
instagram_id: {
default: ""
},
title: {
default: ""
},
author_name: {
default: ""
},
thumbnail_url: {
default: ""
},
timestamp: {
default: ""
},
belowTheFold: {
default: !1
}
},
inline: !1,
group: "block",
draggable: !0,
atom: !0,
selectable: !0,
isolating: !0,
defining: !0,
parseDOM: [{
tag: "div.instagram",
getAttrs: re
}],
toDOM: t => {
const e = document.createElement("div");
e.className = "instagram", e.setAttribute("data-attrs", JSON.stringify(t.attrs)), e.setAttribute("data-component-name", "InstagramToDOM");
const n = document.createElement("div");
n.className = "instagram-top-bar", e.appendChild(n);
const s = document.createElement("a");
s.className = "instagram-author-name", s.href = Yd(t.attrs.author_name), s.target = "_blank", s.textContent = t.attrs.author_name, n.appendChild(s);
const a = document.createElement("a");
a.className = "instagram-image", a.href = Ote(t.attrs.instagram_id), a.target = "_blank", e.appendChild(a);
const o = document.createElement("img");
o.src = q(t.attrs.thumbnail_url, 640), t.attrs.belowTheFold && o.setAttribute("loading", "lazy"), a.appendChild(o);
const r = document.createElement("div");
r.className = "instagram-bottom-bar", e.appendChild(r);
const i = document.createElement("div");
if (i.className = "instagram-title", Bte(t.attrs.title, i), r.appendChild(i), t.attrs.timestamp) {
const c = document.createElement("div");
c.className = "instagram-timestamp", c.textContent = eu(t.attrs.timestamp).format("MMMM D, YYYY"), r.appendChild(c)
}
return e
}
},
Ite = F({
name: "instagram",
nodeSpec: Jd,
addCommands() {
return {
insertInstagram: t => ({
commands: e
}) => e.insertContent({
type: this.name,
attrs: t
})
}
}
}),
Nte = (t, {
customSchema: e
} = {}) => e && !e.nodes.instagram ? null : Kd(t)[1],
Mte = t => Kd(t)[0],
Ote = t => `https://instagram.com/p/${t}`,
Yd = t => `https://instagram.com/${t}`,
Lte = t => `https://instagram.com/explore/tags/${t.substr(1)}/`,
Rte = t => N(void 0, null, function*() {
return (yield(yield Z(() =>
import ("./sortBy-53166f8e.js").then(a => a.c), ["assets/sortBy-53166f8e.js", "assets/x-933ea65f.js", "assets/tracking-5779d19a.js", "assets/_sentry-release-injection-file-9254565a.js", "assets/FlexBox-8b7f0d6c.js", "assets/FlexBox-644f665d.css", "assets/HoverCard-92fb7948.js", "assets/useResponsive-4f80f3bd.js", "assets/transition-d7aff1cb.js", "assets/_defineProperty-fcca2d9e.js", "assets/react-laag.esm-23de3db0.js", "assets/HoverCard-6364507e.css", "assets/responsive_img-3c51e57a.js", "assets/responsive_img-51b02764.css", "assets/sortBy-a6711bc6.css"])).default.get(`/api/v1/instagram/post/${Mte(t)}`)).body
}),
Pte = (n, ...s) => N(void 0, [n, ...s], function*(t, {
customSchema: e
} = {}) {
return (e ? {
schema: e
} : yield Z(() => Promise.resolve().then(() => Te), void 0)).schema.nodes.instagram.create(yield Rte(t))
});
function Bte(t, e) {
if (!t) return;
let n = 0,
s, a;
for (; s = Dte.exec(t);) switch (n < s.index && e.appendChild(document.createTextNode(t.substring(n, s.index))), n = s.index + s[0].length, s[0][0]) {
case `
`:
e.appendChild(document.createElement("br"));
break;
case "@":
a = document.createElement("a"), a.href = Yd(s[0].substr(1)), a.target = "_blank", a.textContent = s[0], e.appendChild(a);
break;
case "#":
a = document.createElement("a"), a.href = Lte(s[0]), a.target = "_blank", a.textContent = s[0], e.appendChild(a);
break;
default:
e.appendChild(document.createTextNode(s[0]))
}
n < t.length && e.appendChild(document.createTextNode(t.substr(n)))
}
const Kd = t => {
const e = /(https?:\/\/(?:www\.)?(?:instagram\.com|instagr\.am)\/(?:p|reel|reels)\/([^\/\b\s\?\#]+)[^\s]*)/.exec(t);
return e ? [e[2], e[1]] : [null, null]
},
Xd = /https?:\/\/read\.amazon(?:\.co)?\.[a-z]+\/kp\/(?:embed|card)\?asin=([^&#\s\b'"]+)[^\b\s'"]*/i,
zte = new RegExp(`<iframe[^>]+src="${Xd.source}"[^>]*><\\/iframe>`, "i"),
qte = [zte, Xd],
Do = 200,
Zd = {
attrs: {
kindleId: {
default: ""
},
imageUrl: {
default: ""
}
},
inline: !1,
group: "block",
draggable: !0,
atom: !0,
selectable: !0,
isolating: !0,
defining: !0,
parseDom: [{
tag: "div.kindle-wrap",
getAttrs: re
}],
toDOM: t => {
const e = Vte(t.attrs.kindleId);
return ["div", {
class: "kindle-wrap",
"data-attrs": JSON.stringify(t.attrs),
"data-component-name": "KindleToDOM"
},
["iframe", {
src: e,
frameborder: "0",
gesture: "media",
allow: "autoplay; fullscreen",
allowautoplay: "true",
allowfullscreen: "true"
}]
]
},
toDOMStatic: t => ["table", {
class: "kindle-wrapper",
width: "100%",
border: "0",
cellSpacing: "0",
cellPadding: "0",
"data-component-name": "KindleToDOMStatic"
},
["tr", {},
["td"],
["td", {
align: "left",
class: "content",
width: Do
},
["a", {
class: "image-link",
target: "_blank",
href: Hte(t.attrs.kindleId)
},
["img", {
"data-attrs": JSON.stringify(t.attrs),
alt: "",
width: `${Do}`,
class: "wide-image",
src: q(t.attrs.imageUrl, Do * 2)
}]
]
],
["td"]
]
]
},
Fte = F({
name: "kindle",
nodeSpec: Zd,
addCommands() {
return {
insertKindle: t => ({
commands: e
}) => e.insertContent({
type: this.name,
attrs: t
})
}
}
}),
jte = t => {
for (const e of qte) {
const n = e.exec(t);
if (n) return n[0]
}
return null
},
$te = t => N(void 0, null, function*() {
return (yield(yield Z(() =>
import ("./sortBy-53166f8e.js").then(a => a.c), ["assets/sortBy-53166f8e.js", "assets/x-933ea65f.js", "assets/tracking-5779d19a.js", "assets/_sentry-release-injection-file-9254565a.js", "assets/FlexBox-8b7f0d6c.js", "assets/FlexBox-644f665d.css", "assets/HoverCard-92fb7948.js", "assets/useResponsive-4f80f3bd.js", "assets/transition-d7aff1cb.js", "assets/_defineProperty-fcca2d9e.js", "assets/react-laag.esm-23de3db0.js", "assets/HoverCard-6364507e.css", "assets/responsive_img-3c51e57a.js", "assets/responsive_img-51b02764.css", "assets/sortBy-a6711bc6.css"])).default.get("/api/v1/kindle").query({
embedText: t
})).body
}),
Ute = (n, ...s) => N(void 0, [n, ...s], function*(t, {
customSchema: e
} = {}) {
return (e ? {
schema: e
} : yield Z(() => Promise.resolve().then(() => Te), void 0)).schema.nodes.kindle.create(yield $te(t))
}),
Vte = t => yt("https://read.amazon.com/kp/card", {
asin: t,
preview: "inline",
linkCode: "kpe",
hideShare: "true"
}),
Hte = t => `https://www.amazon.com/gp/product/${t}/`,
Qd = {
attrs: {
url: {
default: ""
},
thumbnail_url: {
default: ""
}
},
inline: !1,
group: "block",
draggable: !0,
atom: !0,
selectable: !0,
isolating: !0,
defining: !0,
parseDom: [{
tag: "div.lichess-wrap",
getAttrs: re
}],
toDOM: t => em(t),
toDOMStatic: t => Xte(t)
},
Gte = F({
name: "lichess",
nodeSpec: Qd,
addCommands() {
return {
insertLichess: t => ({
commands: e
}) => e.insertContent({
type: this.name,
attrs: t
})
}
}
}),
Wte = /^.*(https?\:\/\/(\S+)?(?:(.?lichess.org\/.*).*)).*$/,
Jte = t => {
const e = Wte.exec(t);
return e && e[0]
},
Yte = t => N(void 0, null, function*() {
return (yield(yield Z(() =>
import ("./sortBy-53166f8e.js").then(a => a.c), ["assets/sortBy-53166f8e.js", "assets/x-933ea65f.js", "assets/tracking-5779d19a.js", "assets/_sentry-release-injection-file-9254565a.js", "assets/FlexBox-8b7f0d6c.js", "assets/FlexBox-644f665d.css", "assets/HoverCard-92fb7948.js", "assets/useResponsive-4f80f3bd.js", "assets/transition-d7aff1cb.js", "assets/_defineProperty-fcca2d9e.js", "assets/react-laag.esm-23de3db0.js", "assets/HoverCard-6364507e.css", "assets/responsive_img-3c51e57a.js", "assets/responsive_img-51b02764.css", "assets/sortBy-a6711bc6.css"])).default.get("/api/v1/lichess-embed").query({
url: t.trim()
})).body
}),
Kte = (n, ...s) => N(void 0, [n, ...s], function*(t, {
customSchema: e
} = {}) {
return (e ? {
schema: e
} : yield Z(() => Promise.resolve().then(() => Te), void 0)).schema.nodes.lichess.create(yield Yte(t))
}),
Xte = (t, {} = {}) => {
const e = document.createElement("div");
e.className = "lichess-wrap static", e.setAttribute("data-component-name", "LichessToDOMStatic"), t.attrs.thumbnail_url;
const n = document.createElement("a");
n.href = t.attrs.url.replace(/embed\//, ""), n.setAttribute("target", "_blank");
const s = document.createElement("img");
return s.className = "lichess-wrap thumbnail", s.src = q(t.attrs.thumbnail_url, 640), s.style.backgroundImage = `url(${t.attrs.thumbnail_url})`, t.attrs.belowTheFold && s.setAttribute("loading", "lazy"), n.append(s), e.appendChild(n), e
},
em = t => {
const e = document.createElement("div");
e.id = "lichess-iframe", e.className = "lichess-wrap outer", e.dataset.attrs = JSON.stringify(t.attrs), e.setAttribute("data-component-name", "LichessToDOM");
const n = document.createElement("iframe");
return n.id = "iframe-lichess", n.className = "lichess-iframe", n.src = t.attrs.url, n.width = "560", n.height = "405px", n.frameBorder = "0", t.attrs.belowTheFold && n.setAttribute("loading", "lazy"), e.appendChild(n), e
};
class Zte {
constructor(e) {
const n = em(e),
s = n.querySelector(".lichess-iframe"),
a = document.createElement("div");
a.className = "lichess-screen", a.addEventListener("dblclick", () => {
a.classList.add("sunken"), s.focus()
}), s.addEventListener("blur", () => {
a.classList.remove("sunken")
}), n.appendChild(a), this.dom = n
}
}
const ba = {
attrs: {
url: {
default: ""
},
thumbnail_url: {
default: ""
}
},
inline: !1,
group: "block",
draggable: !0,
atom: !0,
selectable: !0,
isolating: !0,
defining: !0,
parseDom: [{
tag: "div.prediction-market-wrap",
getAttrs: re
}],
toDOM: t => tm(t),
toDOMStatic: t => one(t)
},
Qte = F({
name: "prediction_market",
nodeSpec: ba,
addCommands() {
return {
insertPredictionMarket: t => ({
commands: e
}) => e.insertContent({
type: this.name,
attrs: t
})
}
}
}),
ene = F({
name: "manifold",
nodeSpec: ba
}),
tne = /^.*(https?\:\/\/(\S+)?(?:(.?manifold.markets|metaculus.com\/questions\/.*\/).*)).*$/,
nne = t => {
const e = tne.exec(t);
return e && e[0]
},
sne = t => N(void 0, null, function*() {
return (yield(yield Z(() =>
import ("./sortBy-53166f8e.js").then(a => a.c), ["assets/sortBy-53166f8e.js", "assets/x-933ea65f.js", "assets/tracking-5779d19a.js", "assets/_sentry-release-injection-file-9254565a.js", "assets/FlexBox-8b7f0d6c.js", "assets/FlexBox-644f665d.css", "assets/HoverCard-92fb7948.js", "assets/useResponsive-4f80f3bd.js", "assets/transition-d7aff1cb.js", "assets/_defineProperty-fcca2d9e.js", "assets/react-laag.esm-23de3db0.js", "assets/HoverCard-6364507e.css", "assets/responsive_img-3c51e57a.js", "assets/responsive_img-51b02764.css", "assets/sortBy-a6711bc6.css"])).default.get("/api/v1/prediction-embed").query({
url: t.trim()
})).body
}),
ane = (n, ...s) => N(void 0, [n, ...s], function*(t, {
customSchema: e
} = {}) {
return (e ? {
schema: e
} : yield Z(() => Promise.resolve().then(() => Te), void 0)).schema.nodes.prediction_market.create(yield sne(t))
}),
one = (t, {} = {}) => {
const e = document.createElement("div");
e.className = "prediction-market-wrap static", e.setAttribute("data-component-name", "PredictionMarketToDOMStatic"), t.attrs.thumbnail_url;
const n = document.createElement("a");
n.href = t.attrs.url.replace(/embed\//, ""), n.setAttribute("target", "_blank");
const s = document.createElement("img");
return s.className = "prediction-market thumbnail", s.src = q(t.attrs.thumbnail_url, 640), s.style.backgroundImage = `url(${t.attrs.thumbnail_url})`, t.attrs.belowTheFold && s.setAttribute("loading", "lazy"), n.append(s), e.appendChild(n), e
},
tm = t => {
t.attrs.embed_url;
const e = document.createElement("div");
e.id = "prediction-market-iframe", e.className = "prediction-market-wrap outer", e.dataset.attrs = JSON.stringify(t.attrs), e.setAttribute("data-component-name", "PredictionMarketToDOM");
const n = document.createElement("iframe");
return n.id = "iframe-prediction-market", n.className = "prediction-market-iframe", n.src = t.attrs.url, n.width = "560", n.height = "405px", n.frameBorder = "0", t.attrs.belowTheFold && n.setAttribute("loading", "lazy"), e.appendChild(n), e
};
class rne {
constructor(e) {
const n = tm(e),
s = n.querySelector(".prediction-market-iframe"),
a = document.createElement("div");
a.className = "prediction-market-screen", a.addEventListener("dblclick", () => {
a.classList.add("sunken"), s.focus()
}), s.addEventListener("blur", () => {
a.classList.remove("sunken")
}), n.appendChild(a), this.dom = n
}
}
const ine = "https://w.soundcloud.com/player/?auto_play=false&buying=false&liking=false&download=false&sharing=false&show_artwork=true&show_comments=false&show_playcount=false&show_user=true&hide_related=true&visual=false&start_track=0",
nm = {
attrs: {
url: {
default: ""
},
title: {
default: ""
},
description: {
default: ""
},
thumbnail_url: {
default: ""
},
author_name: {
default: ""
},
author_url: {
default: ""
},
targetUrl: {
default: ""
}
},
inline: !1,
group: "block",
draggable: !0,
atom: !0,
selectable: !0,
isolating: !0,
defining: !0,
parseDOM: [{
tag: "div.soundcloud-wrap",
getAttrs: re
}],
toDOM: t => ["div", {
class: "soundcloud-wrap",
"data-attrs": JSON.stringify(t.attrs),
"data-component-name": "SoundcloudToDOM"
},
["iframe", {
src: En(ine, {
url: t.attrs.url
}),
frameborder: "0",
gesture: "media",
scrolling: "no",
allowfullscreen: "true"
}]
],
toDOMStatic: t => {
const {
thumbnail_url: e,
author_name: n,
title: s,
targetUrl: a
} = t.attrs;
return Ha(e, s, n, null, {
targetUrl: a
})
}
},
cne = F({
name: "soundcloud",
nodeSpec: nm,
addCommands() {
return {
insertSoundcloud: t => ({
commands: e
}) => e.insertContent({
type: this.name,
attrs: t
})
}
}
}),
lne = (t, {
customSchema: e
} = {}) => {
if (e && !e.nodes.soundcloud) return null;
const n = /^.*(https?\:\/\/(www\.)?soundcloud.com\/[^\/]+\/[^\/]+(\/[^\/]+)?(\?[\#]*)?(\#.*)?).*$/.exec(t);
return n && n[1]
},
une = t => N(void 0, null, function*() {
const s = (yield(yield Z(() =>
import ("./sortBy-53166f8e.js").then(a => a.c), ["assets/sortBy-53166f8e.js", "assets/x-933ea65f.js", "assets/tracking-5779d19a.js", "assets/_sentry-release-injection-file-9254565a.js", "assets/FlexBox-8b7f0d6c.js", "assets/FlexBox-644f665d.css", "assets/HoverCard-92fb7948.js", "assets/useResponsive-4f80f3bd.js", "assets/transition-d7aff1cb.js", "assets/_defineProperty-fcca2d9e.js", "assets/react-laag.esm-23de3db0.js", "assets/HoverCard-6364507e.css", "assets/responsive_img-3c51e57a.js", "assets/responsive_img-51b02764.css", "assets/sortBy-a6711bc6.css"])).default.get("/api/v1/soundcloud").query({
url: t.trim()
})).body;
return S({
targetUrl: t.trim()
}, s)
}),
pne = (n, ...s) => N(void 0, [n, ...s], function*(t, {
customSchema: e
} = {}) {
return (e ? {
schema: e
} : yield Z(() => Promise.resolve().then(() => Te), void 0)).schema.nodes.soundcloud.create(yield une(t))
}),
sm = {
attrs: {
image: {
default: ""
},
title: {
default: ""
},
subtitle: {
default: ""
},
description: {
default: ""
},
url: {
default: ""
},
belowTheFold: {
default: !1
},
noScroll: {
default: !1
}
},
inline: !1,
group: "block",
draggable: !0,
atom: !0,
selectable: !0,
isolating: !0,
defining: !0,
parseDOM: [{
tag: "iframe.spotify-wrap",
getAttrs: re
}],
toDOM: t => {
let e = "spotify-wrap";
const n = ai(t.attrs.url).params;
return n != null && n.show || n != null && n.episode ? e += " podcast" : n != null && n.playlist ? e += " playlist" : n != null && n.album ? e += " album" : n != null && n.artist && (e += " artist"), ["iframe", {
class: e,
"data-attrs": JSON.stringify(t.attrs),
src: gne(t.attrs.url),
frameborder: "0",
gesture: "media",
allowfullscreen: "true",
allow: "encrypted-media",
loading: t.attrs.belowTheFold ? "lazy" : null,
"data-component-name": "Spotify2ToDOM",
scrolling: t.attrs.noScroll ? "no" : null
}]
},
toDOMStatic: t => {
const {
image: e,
title: n,
subtitle: s,
description: a,
url: o
} = t.attrs;
return Ha(e, n, s, a, {
targetUrl: o
})
}
},
dne = F({
name: "spotify2",
nodeSpec: sm,
addCommands() {
return {
insertSpotify: t => ({
commands: e
}) => e.insertContent({
type: this.name,
attrs: t
})
}
}
}),
mne = (t, {
customSchema: e
} = {}) => e && !e.nodes.spotify2 ? null : ai(t).url,
fne = t => N(void 0, null, function*() {
return (yield(yield Z(() =>
import ("./sortBy-53166f8e.js").then(a => a.c), ["assets/sortBy-53166f8e.js", "assets/x-933ea65f.js", "assets/tracking-5779d19a.js", "assets/_sentry-release-injection-file-9254565a.js", "assets/FlexBox-8b7f0d6c.js", "assets/FlexBox-644f665d.css", "assets/HoverCard-92fb7948.js", "assets/useResponsive-4f80f3bd.js", "assets/transition-d7aff1cb.js", "assets/_defineProperty-fcca2d9e.js", "assets/react-laag.esm-23de3db0.js", "assets/HoverCard-6364507e.css", "assets/responsive_img-3c51e57a.js", "assets/responsive_img-51b02764.css", "assets/sortBy-a6711bc6.css"])).default.get("/api/v1/spotify").query({
url: t
})).body
}),
hne = (n, s) => N(void 0, [n, s], function*(t, {
customSchema: e
}) {
return e.nodes.spotify2.create(yield fne(t))
}),
ai = t => {
if (t != null && t.includes("anchor.fm")) {
const a = /((?:https?:\/\/(?:www\.)?anchor\.fm\/(?:embed\/)?|anchor:)([^"'\s\b?#()]*))/.exec(t);
if (a) return {
params: {
show: "podcast"
},
url: a[1],
base: a[2],
platform: "anchor"
}
}
const e = /((?:https?:\/\/(open|podcasters)\.spotify\.com\/(?:embed\/)?|spotify:)([^"'\s\b?#()]*)(?:[?#][\S]*)?)/.exec(t);
if (!e) return {
params: null,
url: null,
base: null,
platform: null
};
const n = e[3].split(/[/:]/),
s = {};
for (let a = 1; a < n.length; a += 2) s[n[a - 1]] = n[a];
return {
params: s,
url: e[1],
base: e[2],
platform: "spotify"
}
},
gne = t => {
const {
params: e,
base: n,
platform: s
} = ai(t), a = [];
if (e) {
if (s === "anchor") return `https://anchor.fm/${n}`;
if (n === "open") e.user && e.playlist ? a.push("user", e.user, "playlist", e.playlist) : e.playlist ? a.push("playlist", e.playlist) : e.album ? a.push("album", e.album) : e.track ? a.push("track", e.track) : e.artist ? a.push("artist", e.artist) : e.show ? a.push("show", e.show) : e.pod ? a.push("pod", e.pod) : (e.episode || e.episodes) && a.push("episode", e.episode || e.episodes);
else
for (const [o, r] of Object.entries(e)) r && (a.push(o), a.push(r));
return `https://${n}.spotify.com/${n==="open"?"embed":""}/${a.join("/")}`
}
},
am = {
attrs: {
url: {
default: ""
},
title: {
default: ""
},
thumbnail_url: {
default: ""
},
author: {
default: ""
},
embed_url: {
default: ""
},
author_url: {
default: ""
},
belowTheFold: {
default: !1
}
},
inline: !1,
group: "block",
draggable: !0,
atom: !0,
selectable: !0,
isolating: !0,
defining: !0,
parseDom: [{
tag: "div.tiktok-wrap",
getAttrs: re
}],
toDOM: t => rm(t),
toDOMStatic: t => om(t)
},
bne = F({
name: "tiktok",
nodeSpec: am,
addCommands() {
return {
insertTiktok: t => ({
commands: e
}) => e.insertContent({
type: this.name,
attrs: t
})
}
}
}),
vne = /^.*(https?\:\/\/(\S+)?(?:vt.tiktok.com\/|(.?tiktok.com\/.*\/video\/).*)).*$/,
xne = t => {
const e = vne.exec(t);
return e && e[0]
},
yne = t => N(void 0, null, function*() {
return (yield(yield Z(() =>
import ("./sortBy-53166f8e.js").then(a => a.c), ["assets/sortBy-53166f8e.js", "assets/x-933ea65f.js", "assets/tracking-5779d19a.js", "assets/_sentry-release-injection-file-9254565a.js", "assets/FlexBox-8b7f0d6c.js", "assets/FlexBox-644f665d.css", "assets/HoverCard-92fb7948.js", "assets/useResponsive-4f80f3bd.js", "assets/transition-d7aff1cb.js", "assets/_defineProperty-fcca2d9e.js", "assets/react-laag.esm-23de3db0.js", "assets/HoverCard-6364507e.css", "assets/responsive_img-3c51e57a.js", "assets/responsive_img-51b02764.css", "assets/sortBy-a6711bc6.css"])).default.get("/api/v1/tiktok").query({
url: t.trim()
})).body
}),
wne = (n, ...s) => N(void 0, [n, ...s], function*(t, {
customSchema: e
} = {}) {
return (e ? {
schema: e
} : yield Z(() => Promise.resolve().then(() => Te), void 0)).schema.nodes.tiktok.create(yield yne(t))
}),
qs = t => `tiktok-${t==null?void 0:t.split("/").slice(-1)[0]}`,
om = (t, {
useTikTokUrl: e = !1
} = {}) => {
var l, u, d, m;
const n = document.createElement("div");
n.className = "tiktok-wrap static", n.setAttribute("data-component-name", "TikTokCreateStaticTikTokEmbed");
const s = `${e?t.attrs.url:`${ce.POST_URL}/#tiktok-${(l=t.attrs.embed_url)==null?void 0:l.split("/").slice(-1)[0]}`}`,
a = document.createElement("a");
a.href = s, a.setAttribute("target", "_blank");
const o = document.createElement("img");
o.className = "tiktok thumbnail", o.src = q(t.attrs.thumbnail_url, 640), o.style.backgroundImage = `url(${q(t.attrs.thumbnail_url)})`, t.attrs.belowTheFold && o.setAttribute("loading", "lazy"), a.append(o);
const r = document.createElement("div");
r.classList.add("content");
const i = document.createElement("a");
i.classList.add("author"), i.href = t.attrs.author_url, i.setAttribute("target", "_blank"), i.appendChild(document.createTextNode(((m = (d = (u = t.attrs.author_url) == null ? void 0 : u.split) == null ? void 0 : d.call(u, "/").slice(-1)) == null ? void 0 : m[0]) || t.attrs.author));
const c = document.createElement("a");
return c.classList.add("title"), c.href = s, c.setAttribute("target", "_blank"), c.appendChild(document.createTextNode(t.attrs.title)), r.appendChild(i), r.appendChild(c), n.appendChild(a), n.appendChild(r), n
},
rm = t => {
var l;
const e = t.attrs.embed_url,
n = document.createElement("div");
n.id = qs(e), n.className = "tiktok-wrap outer", n.dataset.attrs = JSON.stringify(t.attrs), n.setAttribute("data-component-name", "TikTokCreateTikTokEmbed");
const s = document.createElement("iframe");
s.id = `iframe-${qs(e)}`, s.className = "tiktok-iframe", s.src = e, s.frameBorder = "0", (l = s.setAttribute) == null || l.call(s, "allow", "autoplay; fullscreen; encrypted-media"), s.allowFullscreen = "true", s.allowautoplay = "true", s.allowfullscreen = "true", s.scrolling = "no", t.attrs.belowTheFold && s.setAttribute("loading", "lazy"), n.appendChild(s);
const a = document.createElement("iframe");
a.src = "https://team-hosted-public.s3.amazonaws.com/set-then-check-cookie.html", a.id = `third-party-iframe-${qs(e)}`, a.className = "third-party-cookie-check-iframe", a.style.display = "none", t.attrs.belowTheFold && a.setAttribute("loading", "lazy"), n.append(a);
const o = om(t, {
useTikTokUrl: !0
});
n.appendChild(o);
const r = document.createElement("div");
r.classList.add("fallback-failure"), r.id = `fallback-failure-${qs(e)}`;
const i = document.createElement("div");
i.classList.add("error-content");
const c = document.createElement("img");
return c.classList.add("error-icon"), c.src = Xl("/img/alert-circle.svg"), t.attrs.belowTheFold && c.setAttribute("loading", "lazy"), i.appendChild(c), i.appendChild(document.createTextNode("Tiktok failed to load.")), i.appendChild(document.createElement("br")), i.appendChild(document.createElement("br")), i.appendChild(document.createTextNode("Enable 3rd party cookies or use another browser")), r.appendChild(i), n.appendChild(r), n
};
class kne {
constructor(e) {
const n = rm(e),
s = n.querySelector(".tiktok-iframe"),
a = document.createElement("div");
a.className = "tiktok-screen";
const o = document.createElement("h1");
o.className = "instructions", o.innerText = "Double click to interact", a.appendChild(o), a.addEventListener("dblclick", () => {
a.classList.add("sunken"), s.focus()
}), s.addEventListener("blur", () => {
a.classList.remove("sunken")
}), n.appendChild(a), this.dom = n
}
}
const im = {
attrs: {
url: {
default: ""
},
full_text: {
default: ""
},
username: {
default: ""
},
name: {
default: ""
},
date: {
default: ""
},
photos: {
default: []
},
quoted_tweet: {
default: {}
},
retweet_count: {
default: 0
},
like_count: {
default: 0
},
expanded_url: {
default: null
},
video_url: {
default: null
},
belowTheFold: {
default: !1
}
},
untrackedAttrs: ["full_text", "photos", "quoted_tweet", "expanded_url"],
inline: !1,
group: "block",
draggable: !0,
atom: !0,
selectable: !0,
isolating: !0,
defining: !0,
parseDOM: [{
tag: "div.tweet",
getAttrs: re
}],
toDOMStatic: t => vl(t, !0),
toDOM: t => vl(t, !1)
},
_ne = F({
name: "twitter2",
nodeSpec: im,
addCommands() {
return {
insertTwitter: t => ({
commands: e
}) => e.insertContent({
type: this.name,
attrs: t
})
}
}
}),
cm = (t, {
customSchema: e
} = {}) => {
if (e && !e.nodes.twitter2) return null;
const n = /(https?:\/\/(mobile\.twitter\.com|twitter\.com|t\.co)\/.*\/status\/[^\/\s]*)/.exec(t);
return n && n[1]
},
Cne = t => N(void 0, null, function*() {
return (yield(yield Z(() =>
import ("./sortBy-53166f8e.js").then(s => s.c), ["assets/sortBy-53166f8e.js", "assets/x-933ea65f.js", "assets/tracking-5779d19a.js", "assets/_sentry-release-injection-file-9254565a.js", "assets/FlexBox-8b7f0d6c.js", "assets/FlexBox-644f665d.css", "assets/HoverCard-92fb7948.js", "assets/useResponsive-4f80f3bd.js", "assets/transition-d7aff1cb.js", "assets/_defineProperty-fcca2d9e.js", "assets/react-laag.esm-23de3db0.js", "assets/HoverCard-6364507e.css", "assets/responsive_img-3c51e57a.js", "assets/responsive_img-51b02764.css", "assets/sortBy-a6711bc6.css"])).default.get("/api/v1/tweet").query({
url: t
})).body
}),
Ene = (n, ...s) => N(void 0, [n, ...s], function*(t, {
customSchema: e
} = {}) {
return (e ? {
schema: e
} : yield Z(() => Promise.resolve().then(() => Te), void 0)).schema.nodes.twitter2.create(yield Cne(t))
});
function Hn(t, e, {
additionalClasses: n = [],
belowTheFold: s = !1
} = {}) {
const a = document.createElement("div");
a.className = `tweet-photo-wrapper ${n.join(" ")}`;
const o = document.createElement("img");
if (o.className = "tweet-photo", o.setAttribute("src", q(t.img_url, 600)), o.setAttribute("alt", t.alt_text || "Image"), s && o.setAttribute("loading", "lazy"), e) a.appendChild(o);
else {
const r = document.createElement("picture"),
i = document.createElement("source");
i.setAttribute("type", "image/webp"), i.setAttribute("srcset", q(t.img_url, 600, {
format: "webp"
})), r.appendChild(i), r.appendChild(o), a.appendChild(r)
}
return a
}
function Ane(t, e, {
belowTheFold: n = !1
} = {}) {
const s = document.createElement("div");
if (s.className = "tweet-photos-container", t.length === 1) s.appendChild(Hn(t[0], e, {
belowTheFold: n
})), s.className += " one";
else if (t.length === 2) {
s.className += " two";
for (const a of t) {
const o = document.createElement("div");
o.className = "tweet-photos-column", o.appendChild(Hn(a, e, {
belowTheFold: n
})), s.appendChild(o)
}
} else {
const a = [document.createElement("div"), document.createElement("div")];
if (a.forEach(o => {
s.appendChild(o), o.className = "tweet-photos-column"
}), t.length === 3) {
s.className += " three", a[0].appendChild(Hn(t[0], e, {
belowTheFold: n
}));
for (const o of t.slice(1)) a[1].appendChild(Hn(o, e, {
additionalClasses: ["half-height-container"],
belowTheFold: n
}))
} else s.className += " four", t.slice(0, 4).forEach((r, i) => {
a[i % 2].appendChild(Hn(r, e, {
additionalClasses: ["half-height-container"],
belowTheFold: n
}))
})
}
return s
}
const Sne = Ane;
function vl(t, e) {
var g;
const n = document.createElement("div"),
s = e ? "Twitter2ToDOMStatic" : "Twitter2ToDOM";
n.setAttribute("data-component-name", s), n.className = `${e?"tweet static":"tweet"}`, e || n.setAttribute("data-attrs", JSON.stringify(t.attrs));
const a = document.createElement("a"),
o = document.createElement("a");
a.className = "tweet-link-top", o.className = "tweet-link-bottom", a.setAttribute("href", t.attrs.url), o.setAttribute("href", t.attrs.url);
const r = document.createElement("div");
if (r.className = "tweet-text", a.setAttribute("target", "_blank"), o.setAttribute("target", "_blank"), r.innerHTML = bt(t.attrs.full_text, {
allowedTags: bt.defaults.allowedTags.concat(["img"]),
allowedAttributes: Object.assign({}, bt.defaults.allowedAttributes, {
"*": ["href", "style", "id", "data-*", "itemprop", "class", "align", "alt", "center", "bgcolor"]
})
}), n.appendChild(a), a.appendChild(r), t.attrs.video_url && !e) {
const b = document.createElement("div");
b.className = "tweet-video-wrapper", n.appendChild(b);
const x = document.createElement("video");
x.className = "tweet-video", x.setAttribute("controls", "true"), x.setAttribute("src", q(t.attrs.video_url, 600)), x.setAttribute("alt", "Video"), t.attrs.belowTheFold && x.setAttribute("loading", "lazy"), b.appendChild(x)
} else if ((g = t == null ? void 0 : t.attrs) != null && g.photos && t.attrs.photos.length > 0) {
const b = Sne(t.attrs.photos, e, {
belowTheFold: t.attrs.belowTheFold
});
a.appendChild(b)
}
if (t.attrs.quoted_tweet && t.attrs.quoted_tweet.full_text) {
const b = document.createElement("div");
b.className = "quote-tweet", b.innerHTML = bt(t.attrs.quoted_tweet.full_text, {
allowedTags: []
});
const x = document.createElement("div");
x.className = "quote-tweet-header";
const v = document.createElement("img");
v.className = "quote-tweet-header-avatar", v.src = `${os}/image/twitter_name/w_40/${t.attrs.quoted_tweet.username}.jpg`, v.setAttribute("alt", `Twitter avatar${t.attrs.quoted_tweet.username?` for @${t.attrs.quoted_tweet.username}`:""}`), t.attrs.belowTheFold && v.setAttribute("loading", "lazy"), x.appendChild(v);
const w = document.createElement("div");
w.className = "quote-tweet-header-text";
const E = document.createElement("span");
E.className = "quote-tweet-name", E.textContent = `${t.attrs.quoted_tweet.name||""} `, w.appendChild(E);
const _ = document.createElement("span");
_.className = "quote-tweet-username", _.textContent = `@${t.attrs.quoted_tweet.username}`, w.appendChild(_), x.appendChild(w), b.insertBefore(x, b.childNodes[0]), a.appendChild(b)
}
if (t.attrs.expanded_url && t.attrs.expanded_url.title) {
const b = document.createElement("a");
if (b.className = "expanded-link", b.setAttribute("href", t.attrs.expanded_url.url), t.attrs.expanded_url.image) {
const _ = t.attrs.expanded_url.image.url || t.attrs.expanded_url.image,
k = document.createElement("img");
k.setAttribute("src", q(_, 600, {
height: 314,
crop: "fill"
})), k.className = "expanded-link-img", t.attrs.belowTheFold && k.setAttribute("loading", "lazy"), b.appendChild(k)
}
const x = document.createElement("div");
x.className = "expanded-link-bottom";
const v = document.createElement("span");
v.className = "expanded-link-domain", v.textContent = t.attrs.expanded_url.domain, x.appendChild(v);
const w = document.createElement("span");
w.className = "expanded-link-title", w.textContent = it(t.attrs.expanded_url.title, 140), x.appendChild(w);
const E = document.createElement("span");
E.className = "expanded-link-description", E.textContent = t.attrs.expanded_url.description ? e ? t.attrs.expanded_url.description.slice(0, 135).concat("...") : t.attrs.expanded_url.description : "", x.appendChild(E), b.appendChild(x), a.appendChild(b)
}
const i = document.createElement("div");
i.className = "tweet-header", a.insertBefore(i, a.childNodes[0]);
const c = document.createElement("img");
c.className = "tweet-header-avatar", c.src = `${os}/image/twitter_name/w_${Cu*2}/${t.attrs.username}.jpg`, c.setAttribute("alt", `Twitter avatar${t.attrs.username?` for @${t.attrs.username}`:""}`), t.attrs.belowTheFold && c.setAttribute("loading", "lazy"), i.appendChild(c);
const l = document.createElement("div");
l.className = "tweet-header-text", i.appendChild(l);
const u = document.createElement("span");
u.className = "tweet-author-name", u.textContent = `${t.attrs.name||""} `, l.appendChild(u);
const d = document.createElement("span");
d.className = "tweet-author-handle", d.textContent = `@${t.attrs.username}`, l.appendChild(d);
const m = document.createElement("div");
m.className = "tweet-footer";
const f = "tweet-date",
h = document.createElement("span");
if (h.className = f, h.textContent = eu(t.attrs.date).format("h:mm A ∙ MMM D, YYYY"), m.appendChild(h), t.attrs.retweet_count !== 0 && t.attrs.like_count !== 0) {
const b = document.createElement("hr");
m.appendChild(b)
}
if (t.attrs.retweet_count !== 0 && t.attrs.like_count !== 0) {
const b = document.createElement("div");
if (b.className = "tweet-ufi", t.attrs.like_count > 0) {
const x = document.createElement("span"),
v = document.createElement("span");
x.setAttribute("href", `${t.attrs.url}/likes`), x.className = "likes", v.className = "like-count", v.textContent = t.attrs.like_count.toLocaleString(), x.appendChild(v), x.append(t.attrs.like_count > 1 ? "Likes" : "Like"), b.appendChild(x)
}
if (t.attrs.retweet_count > 0) {
const x = document.createElement("span"),
v = document.createElement("span");
x.setAttribute("href", `${t.attrs.url}/retweets`), x.className = "retweets", v.className = "rt-count", v.textContent = t.attrs.retweet_count.toLocaleString(), x.appendChild(v), x.append(t.attrs.retweet_count > 1 ? "Retweets" : "Retweet"), b.appendChild(x)
}
m.appendChild(b)
}
return o.appendChild(m), n.appendChild(o), a.querySelectorAll && Array.prototype.forEach.call(a.querySelectorAll("a"), b => {
b.target = "_blank"
}), o.querySelectorAll && Array.prototype.forEach.call(o.querySelectorAll("a"), b => {
b.target = "_blank"
}), n
}
const lm = {
attrs: {
videoId: {
default: ""
},
videoKey: {
default: ""
},
belowTheFold: {
default: !1
}
},
untrackedAttrs: ["videoKey"],
inline: !1,
group: "block",
draggable: !0,
atom: !0,
selectable: !0,
isolating: !0,
defining: !0,
parseDOM: [{
tag: "div.vimeo-wrap",
getAttrs: re
}],
toDOM: t => {
const e = Dne(t.attrs.videoId, t.attrs.videoKey);
return ["div", {
id: Lne(t.attrs.videoId),
class: "vimeo-wrap",
"data-attrs": JSON.stringify(t.attrs),
"data-component-name": "VimeoToDOM"
},
["div", {
class: "vimeo-inner"
},
["iframe", {
src: e,
frameborder: "0",
gesture: "media",
allow: "autoplay; fullscreen",
allowautoplay: "true",
allowfullscreen: "true",
loading: t.attrs.belowTheFold ? "lazy" : null
}]
]
]
},
toDOMStatic: t => ["a", {
href: One(t.attrs.videoId, t.attrs.videoKey),
target: "_blank",
class: "vimeo-wrap",
"data-component-name": "VimeoToDOMStatic"
},
["img", {
src: um(t.attrs.videoId, {
maxWidth: 550
})
}]
]
},
Tne = F({
name: "vimeo",
nodeSpec: lm,
addCommands() {
return {
insertVimeo: t => ({
commands: e
}) => e.insertContent({
type: this.name,
attrs: t
})
}
}
}),
Dne = (t, e = null) => `https://player.vimeo.com/video/${t}?autoplay=0${e?`&h=${e}`:""}`,
Ine = (t, {
customSchema: e
} = {}) => e && !e.nodes.vimeo ? null : pm(t)[2],
Nne = t => {
const [e, n] = pm(t);
return e ? {
videoId: e,
videoKey: n
} : null
},
Mne = (n, s) => N(void 0, [n, s], function*(t, {
customSchema: e
}) {
const a = Nne(t);
return a ? e.nodes.vimeo.create(a) : null
}),
um = (t, {
maxWidth: e = 728,
playButton: n = !0
} = {}) => `${os}/image/vimeo/w_${e},c_limit,d_video_placeholder.png${n?"/l_youtube_play_qyqt8q,w_170":""}/${t}`,
One = (t, e) => `https://vimeo.com/${t}${e?`/${e}`:""}`;
function pm(t) {
const e = /(https?:\/\/[^\s]*vimeo.com\/(?:channels\/[^/]+\/|video\/)?(\d+)(\/([0-9a-f]+))?[^\s\"\'"]*)/.exec(t);
return e ? [e[2], e[4], e[1]] : [null, null, null]
}
function Lne(t) {
return `vimeo-${t}`
}
const dm = {
attrs: {
videoId: {
default: ""
},
startTime: {
default: null
},
endTime: {
default: null
}
},
inline: !1,
group: "block",
draggable: !0,
atom: !0,
selectable: !0,
isolating: !0,
defining: !0,
parseDOM: [{
tag: "div.youtube-wrap",
getAttrs: re
}, {
tag: "iframe",
getAttrs: t => {
try {
const e = t.src && bn(t.src)[0];
return e ? {
videoId: e
} : !1
} catch (e) {
return !1
}
}
}, {
tag: "object",
getAttrs: t => {
try {
const e = t.data && bn(t.data)[0];
if (e) return {
videoId: e
};
const n = t.querySelectorAll("param");
for (const a of n) {
const o = a.value && bn(a.value)[0];
if (o) return {
videoId: o
}
}
const s = t.querySelectorAll("embed");
for (const a of s) {
const o = a.src && bn(a.src)[0];
if (o) return {
videoId: o
}
}
return !1
} catch (e) {
return !1
}
}
}],
toDOM: t => {
const e = mm(t.attrs.videoId, {
start: t.attrs.startTime,
end: t.attrs.endTime
});
return ["div", {
id: fm(t.attrs.videoId),
class: "youtube-wrap",
"data-attrs": JSON.stringify(t.attrs),
"data-component-name": "Youtube2ToDOM"
},
["div", {
class: "youtube-inner"
},
["iframe", {
src: e,
frameborder: "0",
loading: "lazy",
gesture: "media",
allow: "autoplay; fullscreen",
allowautoplay: "true",
allowfullscreen: "true",
width: "728",
height: "409"
}]
]
]
},
toDOMStatic: t => ["a", {
href: qne(t.attrs),
target: "_blank",
class: "youtube-wrap",
"data-component-name": "Youtube2ToDOMStatic"
},
["img", {
src: va(t.attrs.videoId, {
maxWidth: 550
})
}]
]
},
Rne = F({
name: "youtube2",
nodeSpec: dm,
addCommands() {
return {
insertYoutube: t => ({
commands: e
}) => e.insertContent({
type: this.name,
attrs: t
})
}
}
}),
Pne = (t, {
customSchema: e
} = {}) => e && !e.nodes.youtube2 ? null : bn(t)[1],
Bne = (n, ...s) => N(void 0, [n, ...s], function*(t, {
customSchema: e
} = {}) {
const a = e ? {
schema: e
} : yield Z(() => Promise.resolve().then(() => Te), void 0);
console.log({
schemaModule: a
});
const o = a.schema,
r = zne(t);
return r ? o.nodes.youtube2.create(r) : null
}),
zne = t => {
const e = bn(t)[0];
if (!e) return null;
const n = Fne(t);
return {
videoId: e,
startTime: n.start,
endTime: n.end
}
},
va = (t, {
maxWidth: e = 728,
playButton: n = !0
} = {}) => `${os}/image/youtube/w_${e},c_limit${n?"/l_youtube_play_qyqt8q,w_120":""}/${t}`,
qne = t => `https://www.youtube.com/watch?${tu({v:t.videoId,start:t.startTime,end:t.endTime})}`,
mm = (t, {
start: e,
end: n,
enableJsApi: s
} = {}) => `https://www.youtube-nocookie.com/embed/${t}?${tu({start:e,end:n,rel:0,autoplay:0,showinfo:0,enablejsapi:s?1:0})}`,
bn = t => {
const e = /(https?\:\/\/(www\.|m\.)?youtube\.com\/(v\/)?watch\?[^\s]+)/.exec(t);
if (e) {
const s = dr(e[1]).v || null;
if (s) return [s, e[1]]
}
const n = /(https?\:\/\/(?:youtu\.be|www\.youtube\.com\/embed|www\.youtube-nocookie\.com\/embed|www\.youtube\.com\/v|www\.youtube\.com\/shorts)\/([A-z0-9\-_]+)[^\s]*)/.exec(t);
return n ? [n[2], n[1]] : [null, null]
};
function fm(t) {
return `youtube2-${t}`
}
function Fne(t) {
const e = dr(t);
return {
start: e.start || e.t,
end: e.end
}
}
class jne {
constructor(e) {
const n = mm(e.attrs.videoId, {
start: e.attrs.startTime,
end: e.attrs.endTime,
enableJsApi: !0
}),
s = document.createElement("div");
s.id = fm(e.attrs.videoId), s.className = "youtube-wrap", s.dataset.attrs = JSON.stringify(e.attrs);
const a = document.createElement("div");
a.className = "youtube-inner", s.appendChild(a);
const o = document.createElement("iframe");
o.src = n, o.frameborder = "0", o.gesture = "media", o.allow = "autoplay; fullscreen", o.allowautoplay = "true", o.allowfullscreen = "true", a.appendChild(o);
const r = document.createElement("div");
r.className = "youtube-screen";
const i = document.createElement("h1");
i.className = "instructions", i.innerText = "Double click to interact", r.appendChild(i), r.addEventListener("dblclick", () => {
r.classList.add("sunken"), o.focus()
}), o.addEventListener("blur", () => {
r.classList.remove("sunken"), o.contentWindow.postMessage(JSON.stringify({
event: "command",
func: "pauseVideo",
args: ""
}), "*")
}), a.appendChild(r), this.dom = s
}
}
const $ne = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAjAAAAEyCAYAAADk0er5AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAooSURBVHgB7d1rbhvXGcfhw6slUYyFBHZiAwnsFcTdQZENpDtpV9A02UCbnTQraHeQ7EAGAsQ2bBiyJVIX3spDwIVhIICRD+L8Z54HoCiL+kKLHP34Ho5Or3zg119//fP26i/9fv/b7fWjAgCwH7/Uy7ZJvn/w4MHT92/ovfvk9PT05M6dO99tP/3b8fFxOTw8LMPhsAAA7MNisdhdzs/Py3q9/uf19fUPjx8/Pqu37QKmxst4PP7P0dHRk7t375Zer1cAAJpgGy+7iJnNZj/f3Nx8UyOmX2+ok5fJZPLk5OREvAAAjbJdQip1wLJdHfrTtln+Xr/We/bs2aNttJzev39fvAAAjVUnMS9evNisVqtv+tsP/5hOp+IFAGi0Ook5Pj6uwfJtfxsuX4/H4wIA0HRHR0c1ZL6t74F54mwjACDBYDCoV4/6BQAgjIABAOIIGAAgjoABAOIIGAAgjoABAOIIGAAgjoABAOIIGAAgjoABAOIIGAAgjoABAOIIGAAgjoABAOIIGAAgjoABAOIIGAAgjoABAOIIGAAgjoABAOIIGAAgjoABAOIIGAAgjoABAOIIGAAgjoABAOIIGAAgjoABAOIIGAAgjoABAOIIGAAgjoABAOIIGAAgjoABAOIIGAAgjoABAOIMC9Ap6/W6XFxclOVyWTabTUk3Ho/LZDIp/b7XY9AlnvHQITVezs7OymKxaEW8VDc3N7v7VO8b0B0CBjpkNpu1JlzeV+9TnSoB3SFgoEPqtKKt6pIY0B0CBmiFNk6WgN8nYACAOAIGAIgjYACAOAIGAIgjYACAOAIGAIgjYACAOAIGAIgjYACAOAIGAIgjYACAOAIGAIgjYACAOAIGAIgjYACAOAIGAIgjYACAOAIGAIgjYACAOAIGAIgjYACAOAIGAIgjYACAOAIGAIgjYACAOAIGAIgjYACAOAIGAIgjYACAOAIGAIgjYACAOAIGAIgjYACAOAIGAIgjYACAOAIGAIgjYACAOAIGAIgjYACAOAIGAIgjYACAOAIGAIgjYACAOAIGAIgjYACAOAIGAIgjYACAOAIGOqTX6xWANhAw0CGDwaC01Xg8LkB3CBjokOl02sopTL1Pk8mkAN0hYKBD+v1+OTk5ac20oobLcDjc3ad634DuGBagU+ov+jqJAUjmJQsAEEfAAABxBAwAEEfAAABxBAwAEEfAAABxBAwAEEfAAABxBAwAEEfAAABxBAwAEEfAAABxBAwAEEfAAABxBAwAEEfAAABxBAwAEEfAAABxBAwAEGdYoKGurq7KmzdvymKxKOv1ugC3o9/vl9FoVI6Pj8tkMinQRAKGxqmx8vLly3J9fV2A21efg/X5Vy8XFxfls88+K8OhXxc0iyUkGqUeOJ8/fy5eoCHqc/HVq1emoDSOgKFR6pLRcrksQHPc3NyU8/PzAk0iYGiMGi4OktBM9blpCkOTCBgao75ZF2imGi+Xl5cFmkLA0Bh1TA00l+VdmkTAAABxBAyN4TRNaLb6t2GgKQQMjXF4eFh6vV4Bmmk8HhdoCgFDY9S//vnJJ58UoHmm06kpKY0iYGiUepA0poZmqeFy9+7dAk0iYGiUOoW5d+9eOTg4KMD+3blzp3zxxRe75yY0iXkgjVNf7d2/f3+3B8t8Pt+dXu0PaMHtebeZY526eDFBUwkYGqvuhFsvAPAhM0EAII6AAQDiCBgAII6AAQDiCBgAII6AAQDiCBgAII6AAQDiCBgAII6AAQDiCBgAII69kOicq6urcnl5aYNIWqFuvHh4eGjTRTpHwNApdXfrGi/QFjXEZ7NZWa1WZTKZFOgKS0h0Rj3Aixfaqk4WF4tFga4QMHTG9fV1gTZbLpcFukLA0Bn1vQLQZpvNpkBXOKLTGYPBoECbjcfjAl0hYOiM0WjkTA1aqz62h0PnZdAdHu10Sj1Lo05inEZNW9Sl0Rov9VRq6BIBQ+fUg71JDEA2S0gAQBwBAwDEETAAQBwBAwDEETAAQBwBAwDEETAAQBwBAwDEETAAQBwBAwDEETAAQBx7IdE5V1dXNnOkNepmjnUjR/t70TUChk6Zz+e7eIG2qCE+m83KarXa7bYOXWEJic6oB3jxQlvVyeJisSjQFQKGzri+vi7QZsvlskBXCBg6o75XANpss9kU6ApHdDpjMBgUaLPxeFygKwQMnTEajZypQWvVx/Zw6LwMusOjnU6pZ2nUSYzTqGmLujRa46WeSg1dImDonHqwN4kByGYJCQCII2AAgDgCBgCII2AAgDgCBgCII2AAgDgCBgCII2AAgDgCBgCII2AAgDgCBgCII2AAgDgCBgCII2AAgDgCBgCII2AAgDgCBgCII2AAgDgCBgCII2AAgDgCBgCII2AAgDgCBgCII2AAgDgCBgCII2AAgDgCBgCII2AAgDgCBgCII2AAgDgCBgCII2AAgDgCBgCII2AAgDgCBgCIMyzsxdXVVTk/Py8AH2s+n+8uNMPR0VF5+PBhGY1GhdsnYPZgsVjsDkL37t0rAB/r5cuXAqZB6s/i9PS0fPXVV+Xg4KBwuywh7UE9CH366acFgGyr1aq8ePGicPsEzB4YNwK0h6nYfggYACCOgAEA4ggYACCOgAEA4ggYACCOgAEA4ggYACCOgAEA4ggYACCOgAEA4ggYACCOgAEA4ggYACCOgAEA4ggYACCOgAEA4ggYACCOgAEA4ggYACCOgAEA4ggYACCOgAEA4ggYACCOgAEA4ggYACCOgAEA4ggYACCOgAEA4ggYACCOgAEA4ggYACCOgAEA4ggYACCOgAEA4ggYACCOgAEA4ggYACCOgAEA4ggYACCOgAEA4ggYACCOgAEA4ggYACCOgAEA4giYPViv1wUA+OMEzB70+/7bAdri6OiocPv8Jt2D6XRaXr9+XQDIVl+QPnz4sHD7hoVbd3BwUAaDQfntt9921yYywMeYz+eFZqjH7Xos//zzz8toNCrcPgGzJ/UBr9oB4I/x0h8AiCNgAIA4AgYAiCNgAIA4AgYAiCNgAIA4AgYAiCNgAIA4AgYAiCNgAIA4AgYAiCNgAIA4AgYAiCNgAIA4AgYAiCNgAIA4AgYAiCNgAIA4AgYAiCNgAIA4AgYAiCNgAIA4AgYAiCNgAIA4AgYAiCNgAIA4AgYAiCNgAIA4AgYAiCNgAIA4AgYAiCNgAIA4AgYAiCNgAIA4AgYAiCNgAIA4NWCerlarAgDQdIvFol790l+v1z/N5/MCANB0/w+Y7Yd/z2azstlsCgBAU9VWOT8/3/T7/R/6X3755X+Xy+W/zs7OCgBAU719+3azncD8+ODBg6e7N/FuA+b7y8vLn9+8eWMSAwA0Sm2T7aBls10x+rk2S/1a792Np6enJ8Ph8LvRaPTX6XTa216XegEA2IdtrJTtgKVcXFxsVqvVjzVeHj9+vFsy6n34zc+ePXu0/abver3e19t/PikAAPvxtJ5stL3+qb7l5f0b/gfSCexetgOUpQAAAABJRU5ErkJggg==",
hm = [
[Ate, Tte, De],
[vd, bd, De],
[cm, Ene, Ns],
[Nte, Pte, Ns],
[Pne, Bne, De],
[Ine, Mne, De],
[mne, hne, De],
[jee, Uee, De],
[Lee, Pee, De],
[Aee, See, Ns],
[lne, pne, De],
[tee, aee, De],
[jte, Ute, De],
[wte, Cte, De],
[pd, dd, De],
[md, hd, $ne],
[FQ, $Q, De],
[Jte, Kte, De],
[Jee, Kee, De],
[(...t) => {
const e = t[0];
return e ? nne(e) : null
}, ane, De],
[(...t) => {
const e = t[0];
return e ? xne(e) : null
}, wne, De],
[t => t === ce.FIRST_NOTE_EMBED, Dee, Ns]
],
gm = (t, e, n) => {
if (e.nodes.augmentation_placeholder)
for (const [s, , a] of hm) {
const o = s(t, S({
customSchema: e
}, n));
if (o) {
const r = e.nodes.augmentation_placeholder.create({
request_id: jf(),
url: o,
src: a
});
return [o, r]
}
}
return [null, null]
},
bm = (t, e, n, s) => N(void 0, null, function*() {
const {
request_id: a,
url: o
} = t.attrs;
let r, i;
try {
for (const [c, l] of hm)
if (c(t.attrs.url, S({
customSchema: n
}, s)) && (se(ae.EMBED_URL_ATTEMPTED, {
url: o,
source: "paste"
}), r = yield l(o, {
customSchema: n
}), se(ae.EMBED_URL_SUCCEEDED, {
url: o,
source: "paste"
}), r)) break
} catch (c) {
se(ae.EMBED_URL_FAILED, {
url: o,
source: "paste"
}), console.error("Failed to process augmentation placeholder:", t.attrs, c), 400 <= c.status && c.status < 600 && (i = c)
}
if (i) {
const c = cm(t.attrs.url);
if (setTimeout(() => {
Io(a, e, n, (l, u, d) => {
c && l.replaceRangeWith(u, u + d.nodeSize, n.text(d.attrs.url, [n.marks.link.create({
title: d.attrs.url,
href: d.attrs.url
})])), l.delete(u, u + d.nodeSize)
})
}, 0), !c) throw i
} else setTimeout(r ? () => {
Io(a, e, n, (c, l, u) => {
r && c.setNodeMarkup(l, r.type, r.attrs, u.marks)
})
} : () => {
Io(a, e, n, (c, l, u) => {
c.replaceRangeWith(l, l + u.nodeSize, n.text(u.attrs.url))
})
}, 0)
}),
Io = (t, e, n, s) => {
let a = !1;
const o = e.state.tr;
return e.state.doc.descendants((r, i) => {
r.type === n.nodes.augmentation_placeholder && r.attrs.request_id === t && s(o, i, r) !== !1 && (a = !0)
}), a && e.dispatch(o), a
},
xl = t => {
t.preventDefault()
},
Une = (t, e, n) => {
const s = t.dom;
if (s) {
const a = s.querySelector(`[data-attrs*='{"nodeId":"${e}"']`);
a && (n ? a.addEventListener("dragstart", xl) : a.removeEventListener("dragstart", xl))
}
},
Vne = (t, e) => (n, s, a) => {
if (s) {
let o, r;
if (n.doc.descendants((i, c) => {
if (i.attrs.nodeId === t.nodeId) return o = i, r = c, !1
}), o) {
const i = n.tr;
return i.setNodeMarkup(r, o.type, Object.assign({}, o.attrs, t)), Une(a, t.nodeId, e), s(i), !0
}
}
return !0
},
Hne = ({
url: t
}) => (e, n) => {
if (n) {
const s = e.tr,
a = e.selection.from,
o = a + t.length;
s.deleteSelection(), s.insertText(t, a), s.addMark(a, o + 1, e.schema.marks.link.create({
text: t,
href: t
})), s.setSelection(Ee.create(s.doc, a, o + 1)), n(s)
}
return !0
},
Gne = ({
url: t
}) => (e, n, s) => {
if (n) {
const [, a] = gm(t, e.schema, {
forceAllowOwnPub: !0
});
if (!a) return !0;
bm(a, s, e.schema, {
forceAllowOwnPub: !0
}).catch(r => alert(Ft(r)));
const o = e.tr;
n(o.replaceSelectionWith(a))
}
return !0
},
Wne = () => (t, e) => (e && e(t.tr.deleteSelection()), !0),
Jne = Pe.create({
name: "digestPostEmbedExtension",
addCommands() {
return {
updateDigestPostEmbed: (t, e) => ({
state: n,
dispatch: s,
view: a
}) => Vne(t, e)(n, s, a),
convertDigestPostEmbedToLink: t => ({
state: e,
dispatch: n
}) => Hne(t)(e, n),
convertDigestPostEmbedToEmbeddedPost: t => ({
state: e,
dispatch: n,
view: s
}) => Gne(t)(e, n, s),
deleteDigestPostEmbed: () => ({
state: t,
dispatch: e
}) => Wne()(t, e)
}
}
});
function Yne(t, e) {
const n = {},
s = {};
t.doc.descendants((c, l) => {
c.type === e.nodes.footnote ? n[c.attrs.number] = [l, c.nodeSize] : c.type === e.nodes.footnoteAnchor && (s[c.attrs.number] = l)
});
const a = new Set(Object.keys(n).map(Number)),
o = new Set(Object.keys(s).map(Number)),
r = Array.from(a).filter(c => !o.has(c)).sort((c, l) => l - c),
i = Array.from(o).filter(c => !a.has(c)).sort((c, l) => l - c);
for (const c of r) {
const [l, u] = n[c];
t.delete(l, l + u)
}
for (const c of i) {
const l = s[c];
t.delete(l, l + 1)
}
}
function oi(t, e) {
let n = 1,
s = 1;
t.doc.descendants((a, o) => {
if (a.type === e.nodes.footnote) {
if (a.attrs.number !== n) {
const r = e.nodes.footnote.create({
number: n
}, a.content);
t.replaceWith(o, o + a.nodeSize, r)
}
n += 1
} else if (a.type === e.nodes.footnoteAnchor) {
if (a.attrs.number !== s) {
const r = e.nodes.footnoteAnchor.create({
number: s
});
t.replaceWith(o, o + a.nodeSize, r)
}
s += 1
}
})
}
function Kne(t, e) {
const n = [];
let s = !1;
t.doc.forEach((a, o) => {
a.type === e.nodes.footnote && (s = !0), s && a.type !== e.nodes.footnote && n.push([o, a.nodeSize])
}), n.reverse().forEach(([a, o]) => {
t.delete(a, a + o)
})
}
function vm(t, e) {
let n = 0;
t.doc.nodesBetween(0, t.selection.from, a => {
a.type === e.nodes.footnoteAnchor && (n += 1)
});
const s = [];
return t.doc.forEach((a, o) => {
a.type === e.nodes.footnote && s.push(o)
}), n < s.length ? s[n] : t.doc.resolve(0).end()
}
function xm(t) {
const {
paragraph: e,
ordered_list: n,
bullet_list: s,
blockquote: a,
orderedList: o,
bulletList: r
} = t.schema.nodes;
return AZ(t, [e, n, s, a, o, r])
}
function Xne(t, e) {
if (!xm(t)) return !1;
const {
schema: n
} = t, s = n.nodes.footnote.create({
number: 1
}, n.nodes.paragraph.create()), a = n.nodes.footnoteAnchor.create({
number: 1
}), o = t.tr, r = vm(o, n);
o.replaceWith(r, r, s), o.replaceSelectionWith(a), oi(o, n);
try {
o.setSelection(Ee.create(o.doc, r + 2, r + 2)).scrollIntoView()
} catch (i) {
return console.error("could not set footnote text selection"), !1
}
return e && e(o), !0
}
const Zne = Pe.create({
name: "footnoteCustom",
addCommands() {
return {
insertFootnote: () => ({
state: t,
dispatch: e
}) => Xne(t, e)
}
}
});
function Qne(t, {
insertImageFile: e
}) {
const n = document.createElement("input");
return n.type = "file", n.accept = "image/*,.heic,.heif", n.style.cssText = "display:none;", n.onchange = () => {
n.files && n.files.length > 0 && e(n.files[0]), n.value = ""
}, n.className = "insert-image-menu-item-input", document.body.appendChild(n), new ad({
title: "Insert image",
icon: YZ,
active() {
return !1
},
enable(s) {
return pQ(s, t)
},
run() {
setTimeout(() => {
n.click()
}, 0)
}
}, "image")
}
const ese = ({
gallery: t
}) => (e, n) => (n && n(ie(e, e.schema.nodes.imageGallery.create({
gallery: t,
isEditorNode: !0
}))), !0),
tse = ({
gallery: t
}) => (e, n) => (n && n(SZ(e, e.schema.nodes.imageGallery.create({
gallery: t,
isEditorNode: !0
}))), !0),
nse = ({
url: t,
caption: e,
width: n,
height: s
}) => (a, o) => {
if (!o) return !1;
const r = a.schema,
i = {
src: t,
imageSize: "normal",
height: s != null ? s : 512,
width: n != null ? n : 512
},
c = r.nodes.image2.create(i);
if (e) {
const l = r.nodes.caption.create(null, r.text(e)),
u = r.nodes.captionedImage.create({}, [c, l]);
o(ie(a, u))
} else o(ie(a, c));
return !0
},
sse = ({
url: t,
width: e,
height: n
}) => (s, a) => {
const o = s.schema,
r = {
alt: "TradingView chart",
src: t,
height: n,
width: e,
type: "image/jpg"
},
i = o.text("Created with "),
c = o.text("TradingView", [o.marks.link.create({
title: "TradingView",
href: "https://tradingview.com"
})]),
l = o.nodes.captionedImage.create(r, [o.nodes.image2.create(r), o.nodes.caption.create(null, [i, c])]);
return a && a(ie(s, l)), !0
},
ase = ({
url: t,
width: e,
height: n,
description: s,
userName: a,
userHref: o
}) => (r, i) => {
const c = r.schema,
l = {
alt: s,
src: t,
height: n,
width: e,
type: "image/jpg"
},
u = c.text("Photo by "),
d = c.text(a, [c.marks.link.create({
title: a,
href: o
})]),
m = c.text(" on "),
f = c.text("Unsplash", [c.marks.link.create({
title: "Unsplash",
href: "https://unsplash.com"
})]),
h = c.nodes.captionedImage.create(l, [c.nodes.image2.create(l), c.nodes.caption.create(null, [u, d, m, f])]);
return i && i(ie(r, h)), !0
},
ose = Pe.create({
name: "imageInsert",
addCommands() {
return {
insertImage: t => ({
state: e,
dispatch: n,
view: s
}) => Qne(e.schema.nodes.image2, {
insertImageFile: t
}).spec.run(e, n, s),
insertUnsplashImage: t => ({
state: e,
dispatch: n
}) => ase(t)(e, n),
insertImageGallery: t => ({
state: e,
dispatch: n
}) => ese(t)(e, n),
updateImageGallery: t => ({
state: e,
dispatch: n
}) => tse(t)(e, n),
insertImageFromUrl: ({
url: t,
caption: e,
width: n,
height: s
}) => ({
state: a,
dispatch: o
}) => nse({
url: t,
caption: e,
width: n,
height: s
})(a, o),
insertTradingViewImageFromUrl: ({
url: t,
width: e,
height: n
}) => ({
state: s,
dispatch: a
}) => sse({
url: t,
width: e,
height: n
})(s, a)
}
}
}),
rse = n => {
var s = n,
{
stroke: t = "#666666"
} = s,
e = st(s, ["stroke"]);
return p(vr, P(S({
stroke: t
}, e), {
name: "UploadIcon",
svgParams: {
width: 20,
height: 20,
viewBox: "0 0 20 20"
}
}), p("path", {
d: "M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5",
strokeWidth: "1.5",
fill: "none",
strokeLinecap: "round",
strokeLinejoin: "round"
}), p("path", {
d: "M14.1667 6.66667L10 2.5L5.83337 6.66667",
strokeWidth: "1.5",
strokeLinecap: "round",
fill: "none",
strokeLinejoin: "round"
}), p("path", {
d: "M10 2.5V12.5",
strokeWidth: "1.5",
strokeLinecap: "round",
strokeLinejoin: "round",
fill: "none"
}))
},
ise = "_animation_f1mog_1",
cse = "_offscreen_f1mog_6",
lse = "_onscreen_f1mog_10",
use = "_container_f1mog_14",
pse = "_drawer_f1mog_19",
qt = {
animation: ise,
offscreen: cse,
onscreen: lse,
container: use,
drawer: pse
};
function dse({
children: t,
wrapperId: e
}) {
let n = document.getElementById(e);
return n === null && (n = document.createElement("div"), n.setAttribute("id", e), document.body.appendChild(n)), n ? ya(t, n) : null
}
const mse = ({
isOpen: t,
wrapperId: e = "drawer-portal",
children: n,
includeTransition: s = !0,
className: a,
width: o = 400
}) => {
const r = J(null);
return U(() => {
t && r.current && r.current.focus()
}, [r, t]), p(dse, {
wrapperId: e
}, p(s ? fse : be, {
isOpen: t
}, p(Aa, {
width: o,
ref: r,
borderLeft: "detail",
shadow: "xl",
className: fe(qt.drawer, a)
}, p(Y, {
className: fe("drawer-scroll", qt.container),
bg: "primary",
overflowY: "auto",
shadow: "xl"
}, n))))
},
fse = ({
children: t,
isOpen: e
}) => p(Ki.Root, {
show: e
}, p(Ki.Child, {
as: be,
enter: qt.animation,
enterFrom: qt.offscreen,
enterTo: qt.onscreen,
leave: qt.animation,
leaveFrom: qt.onscreen,
leaveTo: qt.offscreen
}, t)),
hse = "_container_10z2l_1",
gse = {
container: hse
},
bse = ({
title: t,
onClose: e
}) => t || e ? p(Aa, {
paddingX: {
mobile: 16,
desktop: 24
},
paddingTop: 24
}, p(ne, {
alignItems: "center",
justifyContent: "space-between"
}, t && p(X.H3, {
weight: "bold"
}, t), e && p(ne, {
paddingLeft: 12,
alignItems: "center"
}, p(ft, {
size: 32,
"aria-label": "Close",
fill: "empty",
onClick: e
}, p(yr, {
"aria-hidden": "true"
}))))) : null,
ym = ({
width: t = 400,
isOpen: e,
children: n,
title: s,
onClose: a,
primaryButton: o,
secondaryButton: r,
wrapperId: i,
variant: c = "overlay",
className: l,
drawerClassName: u
}) => p(mse, {
className: u,
includeTransition: c === "overlay",
width: t,
isOpen: e,
wrapperId: i
}, p(Jg, null, p(Y, {
className: l,
flex: "fill",
overflowY: "auto"
}, p(bse, {
title: s,
onClose: a
}), p(Aa, {
className: gse.container,
paddingX: {
desktop: 24,
mobile: 16
},
paddingTop: s || a ? 24 : 0
}, n)), o && p(ne, {
gap: 8,
padding: 16,
justifyContent: "end",
borderY: "detail"
}, o, r))),
vse = Er((t, e) => {
t({
mediaUploadId: e == null ? void 0 : e.id,
duration: e == null ? void 0 : e.duration,
mediaUpload: e
})
}, 1e3, {
trailing: !1
}),
wm = () => {
const {
isDrawerOpen: t,
setIsDrawerOpen: e,
setPreventChange: n
} = ug();
return {
isVideoEmbedDrawerOpen: t("videoEmbed"),
setIsVideoEmbedDrawerOpen: s => e(P(S({}, s), {
drawerId: "videoEmbed",
variant: "overlay"
})),
setPreventChange: s => n({
preventChange: s,
preventChangeMessage: "Please wait until the video is uploaded before closing the drawer."
})
}
},
xse = ({
id: t,
editorDroppedFile: e,
mediaUploadId: n,
open: s,
pub: a,
postId: o,
onSave: r,
onClose: i,
setPostId: c
}) => {
const [l, u] = z(e != null ? e : null), [d, m] = z(null), [f, h] = z(!1), {
iString: g,
language: b
} = ue(), {
setPreventChange: x
} = wm(), {
mediaUpload: v,
loading: w,
error: E
} = Pg({
mediaUploadId: n
});
n && !d && v && m(v), U(() => {
u(e)
}, [e]);
const _ = () => {
(f || (d == null ? void 0 : d.state) === "uploaded" || (d == null ? void 0 : d.state) === "transcoded") && !confirm(g("Your video will be discarded, are you sure?")) || (se(ae.VIDEO_MODAL_CANCEL_CLICKED, {
has_media_upload: !!d
}), k())
},
k = () => {
m(null), u(null), i()
},
M = (d == null ? void 0 : d.state) !== "transcoded";
return p(ym, {
wrapperId: t,
title: g("Embed video"),
isOpen: s,
onClose: _,
primaryButton: p(Pt, {
disabled: !M,
text: g("Video needed")
}, p(Ae, {
priority: "primary-theme",
fill: "filled",
onClick: () => {
se(ae.VIDEO_MODAL_INSERT_CLICKED), vse(r, d), k()
},
disabled: M
}, g("Insert"))),
secondaryButton: p(Ae, {
priority: "secondary",
fill: "outline",
onClick: _
}, g("Cancel"))
}, E && p(X, {
color: "error"
}, E), w ? p("div", null, g("Loading...")) : p(be, null, p(X.B4, {
paddingBottom: 24,
translated: !0
}, "Upload or record a video file embedded into the text."), p(Y, {
padding: 16,
radius: "md",
border: "detail"
}, p(X.B2, {
weight: "semibold",
translated: !0,
paddingBottom: 16
}, "Create video"), p(Ta, {
language: b,
initialFile: l,
mediaType: "video",
pub: a,
videoFeature: "embed",
postId: o,
setPostId: c,
onChange: ({
mediaUpload: y
}) => {
h(!1), m(y), u(null), x(!1)
},
onUploadStarted: () => {
x(!0), h(!0)
},
onUploadCanceled: () => {
h(!1), x(!1)
},
mediaUpload: d,
mediaUploadId: d == null ? void 0 : d.id
}))))
},
yse = ({
editor: t,
pub: e,
postId: n,
setPostId: s
}) => {
const {
isVideoEmbedDrawerOpen: a,
setIsVideoEmbedDrawerOpen: o
} = wm(), [r, i] = z(null), [c, l] = z(!1), u = d => {
d.preventDefault(), l(!0)
};
return U(() => {
if (c) {
const d = t.view.state.selection.node,
{
mediaUploadId: m
} = d.attrs;
i(m), o({
isOpen: !0
})
}
}, [c, t.view.state.selection.node]), U(() => (document.addEventListener("editSelectedVideoEmbed", u), () => {
document.removeEventListener("editSelectedVideoEmbed", u)
}), []), p(be, null, p(vu, {
priority: "tertiary",
size: "sm",
onClick: () => o({
isOpen: !a
})
}, p(Tu, {
size: 20
})), p(xse, {
id: "videoEmbed",
editorDroppedFile: null,
mediaUploadId: r,
open: a,
pub: e,
postId: n,
onClose: () => {
o({
isOpen: !1,
clearPreventChange: !0
}), l(!1), i(null)
},
onSave: ({
mediaUploadId: d,
duration: m
}) => {
t.chain().focus().insertVideo({
mediaUploadId: d,
duration: m
}).run()
},
setPostId: s
}))
};
let No, km;
function wse() {
document.getElementById("technical-analysis-chart-demo") && "TradingView" in window && (km = new window.TradingView.widget({
container_id: "technical-analysis-chart-demo",
width: "100%",
height: "600",
symbol: "AAPL",
interval: "D",
timezone: "exchange",
theme: "light",
style: "1",
toolbar_bg: "#f1f3f6",
withdateranges: !0,
hide_side_toolbar: !1,
allow_symbol_change: !0,
save_image: !1,
show_popup_button: !0,
popup_width: "1000",
popup_height: "650",
locale: "en"
}))
}
function kse(t) {
return new Promise((e, n) => {
const s = new Image;
s.onload = () => e(s), s.onerror = a => n(a), s.src = t
})
}
function _se(t) {
return N(this, null, function*() {
try {
const e = yield kse(t);
return {
height: e.height,
width: e.width
}
} catch (e) {
return console.error("Error loading image:", e), {
height: null,
width: null
}
}
})
}
const Cse = () => {
const t = J(null);
return U(() => (t.current = wse, No || (No = new Promise(e => {
const n = document.createElement("script");
n.id = "tradingview-widget-loading-script", n.src = "https://s3.tradingview.com/tv.js", n.type = "text/javascript", n.onload = e, document.head.appendChild(n)
})), No.then(() => t.current && t.current()), () => t.current = null), []), p("div", {
className: "tradingview-widget-container"
}, p("div", {
id: "technical-analysis-chart-demo"
}))
},
Ese = ({
isOpen: t,
onClose: e,
onInsert: n
}) => {
const [s, a] = z(!1);
return p(ms, {
isOpen: t,
onClose: e,
width: 900
}, p(Sa, {
includeClose: !1,
title: "Financial Chart"
}), p(fs, null, p(Cse, null)), p(ds, {
primaryButton: p(Ae, {
priority: "primary-theme",
disabled: s,
onClick: () => {
a(!0), km.image(o => N(void 0, null, function*() {
const r = Ase(o),
i = yield he.post("/api/v1/image").send({
image: r
}), {
height: c,
width: l
} = yield _se(i.body.url);
n({
url: i.body.url,
height: c,
width: l
}), a(!1), e()
}))
}
}, "Insert"),
secondaryButton: p(Ae, {
priority: "secondary",
onClick: e
}, "Cancel")
}))
},
Ase = t => {
const e = t.match(/^https:\/\/\w*\.tradingview\.com\/x\/([^\/]+)/);
if (!e || !e[1]) throw new Error("Invalid URL format");
return `https://s3.tradingview.com/snapshots/${e[1].substring(0,1).toLowerCase()}/${e[1]}.png`
};
function Sse({
children: t
}) {
const e = "post-it-portal";
let n = document.getElementById(e);
return n === null && (n = document.createElement("div"), n.setAttribute("id", e), n.setAttribute("style", "position: fixed; right: 0px; bottom: 0px; z-index: 1"), document.body.appendChild(n)), n ? ya(t, n) : null
}
const Tse = ({
isOpen: t,
children: e,
className: n
}) => {
const s = J(null);
return U(() => {
t && s.current.focus()
}, [s, t]), t && p(Sse, null, p("div", {
className: fe("tw-absolute tw-bottom-0 tw-right-0 tw-mx-4 tw-mb-4 tw-w-[calc(100vw_-_2rem)] tw-rounded-lg tw-border tw-border-solid tw-border-substack-detail tw-bg-substack-bg tw-shadow-lg sm:tw-right-4 sm:tw-mx-0 sm:tw-w-[400px]", n),
ref: s
}, e))
},
Dse = Sa,
Ise = ds,
Nse = fs,
Mse = "_uploadIcon_1l1f8_1",
Ose = "_bodyContainer_1l1f8_6",
Lse = "_inputSection_1l1f8_16",
Rse = "_fileUpload_1l1f8_20",
Pse = "_compact_1l1f8_26",
Bse = "_images_1l1f8_54",
zse = "_image_1l1f8_54",
qse = "_removeImage_1l1f8_67",
Fse = "_heicConversion_1l1f8_80",
jse = "_removeIcon_1l1f8_89",
$se = "_size1_1l1f8_105",
Use = "_size2_1l1f8_106",
Vse = "_size4_1l1f8_107",
ot = {
uploadIcon: Mse,
bodyContainer: Ose,
inputSection: Lse,
fileUpload: Rse,
compact: Pse,
images: Bse,
image: zse,
removeImage: qse,
heicConversion: Fse,
removeIcon: jse,
size1: $se,
size2: Use,
size4: Vse
},
ss = 9,
yl = "image/heic",
Hse = ({
image: t,
onRemove: e
}) => {
const {
attributes: n,
listeners: s,
setNodeRef: a,
transform: o,
transition: r
} = Ex({
id: t.id
});
return p(xe, S(S({
className: ot.image,
alignItems: "center",
justifyContent: "center",
ref: a,
style: {
transform: Ht.Transform.toString(o),
transition: r
}
}, n), s), p(xe, {
padding: 12,
justifyContent: "center",
alignItems: "center",
className: ot.removeImage,
onClick: e
}, p(Au, {
size: 16,
className: ot.removeIcon
})), p("img", {
src: t.src
}))
},
Gse = (t, e) => {
const {
iString: n,
iPlural: s
} = I18N.i(e), a = ss - t;
switch (t) {
case 0:
return n("Add up to 9 images");
case ss:
return "";
default:
return s("Add up to 1 more image", "Add up to %1 more images", a)
}
},
Wse = ({
isOpen: t,
onClose: e,
onInsertGallery: n,
onUpdateGallery: s,
editor: a,
editingCurrentSelection: o,
postId: r
}) => {
const [i, c] = z([]), [l, u] = z({}), [d, m] = z(new Set), [f, h] = z([]), [g, b] = z([]), [x, v] = z(""), [w, E] = z(""), [_, k] = z(!1), [M, y] = z(!1), [T, D] = z({}), [C, L] = z(new Set), {
iString: R,
language: A
} = ue(), I = Vg(), O = Xb(tc(Mr, {
activationConstraint: {
delay: 100,
tolerance: 10
}
}), tc(Ir, {
coordinateGetter: Tx
}));
U(() => {
if (o) {
const W = a.view.state.selection.node,
{
gallery: le
} = W.attrs,
K = le.images.map(H => P(S({}, H), {
id: Za()
}));
c(K.map(H => H.type === yl ? P(S({}, H), {
src: q(H.src, 200)
}) : H)), m(new Set(K.map(H => H.id))), u(Xi(K, "id")), v(le.caption), E(le.alt)
}
}, [o]);
const B = () => {
g.forEach(W => W.abort()), f.forEach(W => W.abort()), h([]), b([]), k(!1), y(!1), j()
},
j = () => {
ve(), e()
},
G = W => {
const {
active: le,
over: K
} = W;
le.id !== K.id && c(H => {
const me = H.findIndex($ => $.id === le.id),
V = H.findIndex($ => $.id === K.id);
return Lr(H, me, V)
})
},
ke = W => N(void 0, null, function*() {
if (W.length + i.length > ss) {
I.popToast(H => p(Yi, P(S({}, H), {
text: R("Image gallery is limited to 9 images")
})));
return
}
const le = [],
K = [];
for (const H of Array.from(W)) {
if (H.type === yl) {
K.push(H);
continue
}
const me = yield Xs(H);
le.push({
file: H,
src: me,
id: Za()
})
}
if (K.length) {
y(!0);
const H = [];
for (const $ of K) {
const He = yield Xs($);
H.push(he.post("/api/v1/image").send({
image: He,
postId: r
}))
}
h(H);
const V = (yield Promise.all(H)).map(($, He) => ({
type: $.body.contentType,
src: $.body.url,
id: Za(),
file: K[He]
}));
L(new Set(V.map($ => $.id))), D(Xi(V, "id")), le.push(...V.map($ => P(S({}, $), {
src: q($.src, 200)
}))), y(!1)
}
c(H => [...H, ...le])
}),
Re = W => {
if (i.length <= 1) c([]);
else {
const le = i[W];
d.has(le.id) && u(K => Kg(K, [le.id])), c(K => [...K.slice(0, W), ...K.slice(W + 1)])
}
},
ve = () => {
b([]), c([]), m(new Set), u({}), L(new Set), D({}), v(""), E("")
},
_e = we(() => N(void 0, null, function*() {
k(!0);
try {
const W = [];
for (const H of i)
if (d.has(H.id)) {
const me = l[H.id],
{
type: V,
src: $
} = me;
W.push(Promise.resolve({
body: {
contentType: V,
url: $
}
}))
} else if (C.has(H.id)) {
const me = T[H.id],
{
type: V,
src: $
} = me;
W.push(Promise.resolve({
body: {
contentType: V,
url: $
}
}))
} else {
const me = he.post("/api/v1/image").send({
image: H.src,
postId: r
});
b(V => [...V, me]), W.push(me)
}
const K = {
images: (yield Promise.all(W)).map(H => ({
type: H.body.contentType,
src: H.body.url
})),
caption: x,
alt: w
};
if (i.length === 1) K.staticGalleryImage = K.images[0];
else {
b([]);
const H = he.post("/api/v1/image-gallery").send({
gallery: K
});
b([H]);
const {
body: me
} = yield H;
K.staticGalleryImage = {
type: me.contentType,
src: me.url
}
}
o ? s(K) : n(K), k(!1), j()
} catch (W) {
W.code !== "ABORTED" && (k(!1), I.popToast(le => p(Yi, P(S({}, le), {
text: R("Failed to upload gallery images")
}))), console.error(W))
}
}), [i, x, w]);
return p(Tse, {
isOpen: t
}, p(Dse, {
isModal: !1,
as: "h3",
title: R("Image gallery"),
description: Gse(i.length, A),
includeClose: !0,
onClose: j
}), p(Nse, null, p(Y, {
alignItems: "center",
gap: 16,
className: ot.bodyContainer
}, i.length > 0 && !M && p(xe, {
className: fe(ot.images, ot[`size${i.length}`]),
wrap: "wrap",
gap: 4,
alignItems: "start",
justifyContent: "start"
}, p(Yv, {
sensors: O,
collisionDetection: ev,
onDragEnd: G
}, p(vx, {
items: i.map(W => W.id),
strategy: Rr
}, i.map((W, le) => p(Hse, {
image: W,
key: W.id,
onRemove: () => Re(le)
}))))), i.length !== ss && p(ne, {
justifyContent: "center",
style: {
width: "100%"
},
alignItems: "center"
}, M ? p(ne, {
alignItems: "center",
justifyContent: "center",
gap: 12,
className: ot.heicConversion
}, p(X, {
color: "secondary",
translated: !0
}, "Converting HEIC images"), p(Sn, null)) : p(Nu, {
multiple: !0,
onFileSelected: ke,
dropCTA: R("Drop image files here"),
className: fe(ot.fileUpload, !!i.length && ot.compact),
addMode: !!i.length
})), !!i.length && p(be, null, p(Y, {
justifyContent: "start",
className: ot.inputSection,
gap: 8
}, p(X.H4, {
weight: "bold",
translated: !0
}, "Caption"), p(rs, {
placeholder: R("Add gallery caption"),
value: x,
onChange: W => v(W.target.value)
})), p(Y, {
justifyContent: "start",
className: ot.inputSection,
gap: 8
}, p(X.H4, {
weight: "bold",
translated: !0
}, "Alt text"), p(rs, {
placeholder: R("Describe images"),
value: w,
onChange: W => E(W.target.value)
}))))), p(Hg, {
paddingX: 16,
paddingY: 0
}), p(Ise, {
primaryButton: p(ne, {
alignItems: "center",
gap: 8
}, p(Ae, {
priority: "primary-theme",
onClick: _e,
disabled: !i.length || i.length > ss || _
}, R(o ? "Update" : "Insert"))),
secondaryButton: p(ne, {
justifyContent: _ ? "space-between" : "end",
alignItems: "center",
flex: "grow"
}, _ && p(ne, {
gap: 8,
alignItems: "center",
flex: "grow"
}, p(Sn, null), _ && p(X.Meta, {
translated: !0
}, "Loading...")), p(Ae, {
priority: "secondary",
onClick: B
}, R("Cancel")))
}))
},
Jse = t => p(vr, P(S({}, t), {
className: "filled-icon",
name: "UnsplashIcon",
svgParams: {
height: 24,
width: 24,
fill: "#1C110B"
}
}), p("path", {
d: "M15.3364 10.9703H21V21H3V10.9703H8.66362V15.9748H15.3158V10.9703H15.3364ZM15.3364 3H8.66362V8.02517H15.3158V3H15.3364Z",
strokeWidth: 0
})),
wl = 4,
kl = 15,
Yse = 540,
_m = "random",
Kse = 380,
_l = t => t && t.toLowerCase().trim() || _m,
Xse = ({
open: t,
onAfterClose: e,
onSelectStockImage: n
}) => {
const [s, a] = z(""), [o, r] = z(null), [i, c] = z({}), [l, u] = z(!1), [d, m] = z(!1), [f, h] = z(null), g = J(null), b = J(null), x = J(null), v = J(null), w = J(!1), E = f && f.screen <= Yse ? 2 : 3, _ = f ? Math.floor((f.content - wl * (E - 1)) / E) : 0, {
result: k
} = ag(() => Z(() =>
import ("./masonry-ccd45004.js").then(O => O.m), ["assets/masonry-ccd45004.js", "assets/tracking-5779d19a.js", "assets/_sentry-release-injection-file-9254565a.js"]), [], {
auto: !0
}), M = k == null ? void 0 : k.default, {
iString: y,
iTemplate: T
} = ue();
U(() => {
const O = () => {
const B = parseInt(window.getComputedStyle(b.current).getPropertyValue("width"), 10),
j = window.innerWidth;
h({
content: B,
screen: j
})
};
return t && (g.current.open(), window.addEventListener("resize", O), setTimeout(() => {
O(), b.current.focus()
}, 50)), () => {
r(null), a(""), window.removeEventListener("resize", O)
}
}, [t]);
const D = we(() => N(void 0, null, function*() {
if (!o || !o.hasMore || w.current) return;
w.current = !0;
const O = _l(s),
B = yield he.get("/api/v1/stock-photos").query({
search: O,
offset: o.results.length,
limit: kl
}), j = P(S({}, o), {
results: [...o.results, ...B.body.results],
hasMore: B.body.hasMore
});
r(j), c(G => P(S({}, G), {
[O]: j
})), w.current = !1
}), [o, s]);
U(() => {
const O = Er(j => {
const {
scrollTop: G,
clientHeight: ke,
scrollHeight: Re
} = j.target;
G > Re - ke - Kse && D()
}, 200, {
leading: !1
}),
B = x.current;
return t && (B == null || B.addEventListener("scroll", O)), () => {
B == null || B.removeEventListener("scroll", O)
}
}, [t, D]), U(() => {
var O;
!M || !o || !_ || (o.results.length === 0 || l || !t ? ((O = v.current) == null || O.destroy(), v.current = null) : v.current ? (v.current.reloadItems(), v.current.layout()) : setTimeout(() => {
v.current = new M(".insert-image-modal-images", {
itemSelector: ".insert-image-modal-item",
transitionDuration: 0,
gutter: wl
})
}, 50))
}, [o, l, _, t]);
const C = we(O => N(void 0, null, function*() {
const B = _l(O);
if (i[B]) {
u(!1), r(i[B]), x.current.scrollTop = 0;
return
}
try {
const j = yield he.get("/api/v1/stock-photos").query({
search: B,
offset: 0,
limit: kl
}), G = {
results: j.body.results,
hasMore: j.body.hasMore,
term: O
};
u(!1), r(G), c(ke => P(S({}, ke), {
[B]: G
})), x.current.scrollTop = 0
} catch (j) {
u(!0)
}
}), [i]),
L = we(wr(C, 400), [C]);
U(() => {
t && !o && C(_m)
}, [C, t, o]);
const R = O => N(void 0, null, function*() {
a(O), yield L(O)
}),
A = O => N(void 0, null, function*() {
m(!0), yield he.post("/api/v1/stock-photos").send({
downloadLocation: O.links.download_location
}), n({
url: O.urls.regular,
width: O.width,
height: O.height,
description: O.alt_description,
userName: O.user.name,
userHref: !!O.user.links.html
}), m(!1), g.current.close()
}),
I = document.querySelector(".editor");
return I ? ya(p("div", {
onMouseDown: O => {
O.stopPropagation()
}
}, p(Eu, {
ref: g,
closePill: !0,
className: "insert-media-modal insert-image-modal force-light-theme",
onClose: e
}, p("h3", {
className: "insert-media-modal-header"
}, y("Search images")), p("div", {
className: "form new-form"
}, p("input", {
className: "insert-image-modal-search",
ref: b,
type: "text",
"aria-label": y("Search"),
placeholder: y("Search..."),
value: s,
onChange: O => {
R(O.target.value)
}
})), p("div", {
className: "insert-image-modal-byline"
}, p(Jse, {
height: 14
}), " ", y("Powered by Unsplash")), p("div", {
className: "insert-image-modal-body",
ref: x
}, l ? p("div", {
className: "insert-image-modal-empty"
}, y("There was an error searching photos. Please try again later.")) : o && o.results.length > 0 ? p("div", {
className: "insert-image-modal-images"
}, o.results.map(O => p("div", {
key: O.id,
className: "insert-image-modal-item"
}, p("img", {
src: O.urls.small,
alt: O.alt_description,
width: _,
height: O.height / O.width * _
}), p("div", {
className: "insert-image-modal-item-footer"
}, p("div", {
className: "insert-image-modal-item-text"
}, p("div", {
className: "insert-image-modal-item-title"
}, O.description), p("div", {
className: "insert-image-modal-item-name"
}, O.user.name)), p(Vs, {
className: "btn btn-secondary btn-small btn-translucent-border",
disabled: d,
onClick: () => {
A(O)
}
}, p("span", null, y("Insert"))))))) : o && o.results.length === 0 ? p("div", {
className: "insert-image-modal-empty"
}, T `No results for ${`&ldquo;${o.term}&rdquo;`}`) : null))), I) : null
},
Zse = t => {
var s;
const {
iString: e
} = ue(), n = ((s = t.percentComplete) != null ? s : 0) * 100;
return p(ne, {
gap: 16,
flex: "grow"
}, p(xe, {
radius: "xs",
height: 40,
width: 40,
bg: "secondary",
alignItems: "center",
justifyContent: "center"
}, p(Iu, {
size: 24,
color: "var(--color-fg-tertiary)"
})), p(Y, {
flex: "grow",
gap: 4
}, p(ne, {
justifyContent: "space-between",
alignItems: "center"
}, p(X.B4, {
color: "primary",
weight: "semibold"
}, e("Upload audio file")), p(ne, {
cursor: "pointer",
onClick: t.onCancel
}, p(yr, {
size: 20,
color: "var(--color-fg-secondary)"
}))), p(ne, {
flex: "grow",
alignItems: "center",
gap: 32
}, p(ne, {
flex: "grow",
radius: "full",
bg: "tertiary",
style: {
height: "6px"
}
}, p(ne, {
radius: "full",
style: {
width: `${n}%`,
backgroundColor: "var(--color-fg-primary)"
}
})), p(ne, {
width: 32,
justifyContent: "end"
}, p(X.Digit, {
color: "primary"
}, n.toFixed(0), "%")))))
},
Qse = ({
accept: t,
onUploadClicked: e,
onFileSelected: n,
onRecord: s,
hideRecorder: a = !1,
hideReset: o = !0,
onResetToDefault: r
}) => {
const i = J(null),
{
iString: c
} = ue();
return p(ne, {
gap: 16
}, p(xe, {
radius: "xs",
height: 40,
width: 40,
bg: "secondary",
alignItems: "center",
justifyContent: "center"
}, p(Iu, {
size: 24,
color: "var(--color-fg-tertiary)"
})), p(Y, {
gap: 4
}, p(X.B4, {
color: "primary",
weight: "semibold"
}, c("Upload audio file")), p(ne, {
gap: 16
}, p(X.B4, {
color: "pub-accent",
weight: "semibold",
decoration: "underline",
cursor: "pointer",
onClick: () => {
i.current && (i.current.click(), e(i.current))
}
}, c("Select file")), !a && p(X.B4, {
weight: "semibold",
decoration: "underline",
cursor: "pointer",
color: "secondary",
onClick: s
}, c("Record audio")), !o && p(X.B4, {
color: "secondary",
weight: "semibold",
decoration: "underline",
cursor: "pointer",
onClick: r
}, c("Reset audio to default"))), p("input", {
style: {
display: "none"
},
ref: i,
type: "file",
accept: t,
onChange: l => {
l.target != null && n(l.target.files[0])
}
})))
};
class eae {
constructor({
channels: e = 1,
sampleRate: n = 44100,
bitRate: s = 192
} = {}) {
const {
Mp3Encoder: a
} = window.lamejs;
this.mp3encoder = new a(e, n, s), this.chunks = []
}
append(e) {
const n = this.mp3encoder.encodeBuffer(tae(e));
if (n.length > 0) return this.chunks.push(n), n
}
flush() {
if (this.chunks.length > 0) {
const e = new Blob(this.chunks, {
type: "audio/mp3"
});
return this.chunks = [], e
}
}
}
function tae(t) {
const e = t.length,
n = new Int16Array(e);
for (let s = 0; s < e; s++) n[s] = Math.max(-32768, Math.min(32768, t[s] * (t[s] < 0 ? 32768 : 32767)));
return n
}
class ee {
static get STATE() {
return {
STOPPED: "stopped",
STARTING: "starting",
STARTED: "started",
STOPPING: "stopping"
}
}
static isSupported() {
return !(typeof window == "undefined" || !window.navigator || !window.navigator.mediaDevices || !window.navigator.mediaDevices.getUserMedia || !window.AudioContext && !window.webkitAudioContext || !window.Float32Array || !window.Blob || !window.URL || !window.Worker)
}
constructor(e = {}) {
this.bufferSize = 4096, this.sampleRate = 44100, this.state = ee.STATE.STOPPED, Object.assign(this, e)
}
get duration() {
var e;
return (e = this.startedAts) != null && e.length ? this.startedAts.reduce((s, a, o) => {
if (this.endedAts[o]) {
const r = this.endedAts[o] - a;
return s + r
}
return s + (Date.now() - a)
}, 0) / 1e3 : null
}
get volume() {
if (this.state !== ee.STATE.STARTED || !this.analyser) return 0;
const e = new Uint8Array(this.analyser.frequencyBinCount);
return this.analyser.getByteFrequencyData(e), Math.max(...e) / 255
}
startMicrophone() {
return N(this, null, function*() {
if (!ee.isSupported()) return alert("Recording is not supported on this device."), !1;
if (this.microphone) try {
return yield this.microphone, !0
} catch (e) {
return !1
}
try {
this.microphone = navigator.mediaDevices.getUserMedia({
audio: !0
}), this.microphone = yield this.microphone, this.microphone.getTracks().forEach(e => {
e.addEventListener("ended", () => {
this.state === ee.STATE.STARTED && this.stop()
})
})
} catch (e) {
console.error(e), this.microphone = null
}
return this.microphone ? !0 : (alert("Unable to access the microphone! Please check your browser settings."), !1)
})
}
stopMicrophone() {
return N(this, null, function*() {
if (this.microphone) {
if (!this.microphone.getTracks) try {
yield this.microphone
} catch (e) {
return
}
if (this.state === ee.STATE.STARTED) {
yield this.stop();
return
}
this.microphone.getTracks().forEach(e => e.stop()), this.microphone = null
}
})
}
start() {
return N(this, arguments, function*({
startAt: e = null
} = {}) {
if (!ee.isSupported()) throw new Error("Recording is not supported on this device");
if (this.state === ee.STATE.STOPPING) throw new Error("Currently stopping last recording");
if ([ee.STATE.STARTING, ee.STATE.STARTED].includes(this.state)) return;
if (clearTimeout(this.startingTimeout), this.state = ee.STATE.STARTING, this.onStarting && this.onStarting(), !(yield this.startMicrophone())) {
this.state = ee.STATE.STOPPED, this.onStopped && this.onStopped();
return
}
const n = window.AudioContext || window.webkitAudioContext;
try {
if (this.audioContext = new n({
sampleRate: this.sampleRate
}), this.mp3encoder = new eae({
sampleRate: this.audioContext.sampleRate
}), this.analyser = this.audioContext.createAnalyser(), this.analyser.smoothingTimeConstant = .2, this.analyser.fftSize = 1024, this.audioContext.createJavaScriptNode) this.audioNode = this.audioContext.createJavaScriptNode(this.bufferSize, 1, 1);
else if (this.audioContext.createScriptProcessor) this.audioNode = this.audioContext.createScriptProcessor(this.bufferSize, 1, 1);
else throw new Error("Unable to construct audio node");
this.audioInput = this.audioContext.createMediaStreamSource(this.microphone), this.audioInput.connect(this.analyser), this.analyser.connect(this.audioNode), this.audioNode.connect(this.audioContext.destination), this.startingTimeout = setTimeout(() => {
this.audioNode.addEventListener("audioprocess", s => this.onAudioProcess(s)), this.state = ee.STATE.STARTED, this.startedAts = [Date.now()], this.endedAts = [], this.onStarted && this.onStarted()
}, e ? Math.max(Math.max(Date.now(), +e) - Date.now(), 0) : 2e3)
} catch (s) {
this.state = ee.STATE.STOPPED, this.onStopped && this.onStopped(), console.error("Unable to access the microphone!", s), alert("Unable to setup microphone!")
}
})
}
stop() {
return N(this, arguments, function*({
dropRecording: e = !1,
stopMicrophone: n = !0
} = {}) {
if (!ee.isSupported()) throw new Error("Recording is not supported on this device");
if ([ee.STATE.STOPPING, ee.STATE.STOPPED].includes(this.state)) return;
if (this.state === ee.STATE.STARTING) throw new Error("Currently starting new recording");
clearTimeout(this.startingTimeout), this.state = ee.STATE.STOPPING, this.onStopping && this.onStopping(), this.audioInput.disconnect(), this.analyser.disconnect(), this.audioNode.disconnect(), this.audioContext.close(), this.audioContext = null, this.analyser = null, this.audioNode = null, this.audioInput = null, n && (yield this.stopMicrophone());
const s = this.mp3encoder.flush();
this.mp3encoder = null, this.state = ee.STATE.STOPPED, this.endedAts.push(Date.now()), this.onStopped && this.onStopped(e ? null : s)
})
}
suspend() {
return N(this, null, function*() {
this.audioContext && (this.endedAts.push(Date.now()), this.audioContext.suspend())
})
}
resume() {
return N(this, null, function*() {
this.audioContext && (this.startedAts.push(Date.now()), this.audioContext.resume())
})
}
onAudioProcess(e) {
var s;
if (this.state !== ee.STATE.STARTED) return;
this.mp3encoder.append(e.inputBuffer.getChannelData(0)) && ((s = this.onChunk) == null || s.call(this))
}
}
const nae = "_outerRing_ok6e9_1",
sae = "_innerRing_ok6e9_5",
aae = "_accentRing_ok6e9_9",
oae = "_accentBackgroundRing_ok6e9_14",
rae = "_secondaryRing_ok6e9_18",
iae = "_audioRecorderControls_ok6e9_24",
cae = "_audioRecorderDuration_ok6e9_29",
lae = "_starting_ok6e9_36",
uae = "_started_ok6e9_40",
pae = "_stopping_ok6e9_41",
dae = "_audioRecorderButton_ok6e9_46",
mae = "_audioRecorderButtonVolume_ok6e9_73",
fae = "_audioRecorderButtonInner_ok6e9_86",
Tt = {
outerRing: nae,
innerRing: sae,
accentRing: aae,
accentBackgroundRing: oae,
secondaryRing: rae,
audioRecorderControls: iae,
audioRecorderDuration: cae,
starting: lae,
started: uae,
stopping: pae,
audioRecorderButton: dae,
audioRecorderButtonVolume: mae,
audioRecorderButtonInner: fae
};
class Cm extends nu {
constructor(e, n) {
super(e, n), this.onButtonClick = () => {
this.recorder.state === ee.STATE.STOPPED ? (se(ae.AUDIO_PRESS_RECORD_CLICKED, {
feature: this.props.feature
}), this.setState({
countDown: 3
}), setTimeout(() => this.setState({
countDown: 2
}), 700), setTimeout(() => this.setState({
countDown: 1
}), 1400), this.recorder.start({
startAt: Date.now() + 2100
})) : (this.recorder.state === ee.STATE.STARTING || this.recorder.state === ee.STATE.STARTED) && this.recorder.stop()
}, this.onCloseClicked = () => {
var s, a;
if (this.recorder.state === ee.STATE.STARTED) {
if (this.recorder.suspend(), !confirm("Your recording will be discarded, are you sure?")) {
this.recorder.resume();
return
}
this.recorder.stop({
dropRecording: !0
}), (a = (s = this.props).onRecorderStopped) == null || a.call(s)
} else this.recorder.state === ee.STATE.STARTING ? this.recorder.onStarted = () => this.recorder.stop({
dropRecording: !0
}) : this.recorder.state === ee.STATE.STOPPED && this.recorder.stopMicrophone();
this.props.onCancel && this.props.onCancel()
}, this.recorder = new ee({
onStarting: () => this.onRecorderChanged(),
onStarted: () => this.onRecorderStarted(),
onChunk: () => this.onRecorderChanged(),
onStopping: () => this.onRecorderChanged(),
onStopped: s => this.onRecorderChanged(s)
}), this.state = {
countDown: 3,
recorderState: this.recorder.state,
recorderDuration: this.recorder.duration,
recorderVolume: this.recorder.volume
}
}
componentDidMount() {
return N(this, null, function*() {
var e, n;
(yield this.recorder.startMicrophone()) || (n = (e = this.props).onCancel) == null || n.call(e)
})
}
componentWillUnmount() {
this.onCloseClicked()
}
onRecorderStarted() {
var e, n;
(n = (e = this.props).onRecorderStarted) == null || n.call(e), this.onRecorderChanged(null)
}
onRecorderChanged(e) {
var n, s;
this.setState({
recorderState: this.recorder.state,
recorderDuration: this.recorder.duration,
recorderVolume: this.recorder.volume
}), e && ((s = (n = this.props).onComplete) == null || s.call(n, e))
}
render({
iString: e
}, {
recorderState: n,
recorderDuration: s,
recorderVolume: a,
countDown: o
}) {
var r;
return p(ne, {
flex: "grow",
gap: 16,
alignItems: "center",
justifyContent: "space-between"
}, n === ee.STATE.STOPPED && p(xe, {
alignItems: "center",
justifyContent: "center",
gap: 16
}, p(xe, {
radius: "full",
className: fe(Tt.outerRing),
height: 30,
width: 30,
border: "detail",
onClick: this.onButtonClick,
cursor: "pointer"
}, p(xe, {
className: fe(Tt.innerRing, Tt.accentRing, Tt.accentBackgroundRing),
bg: "accent-red",
radius: "full"
})), p(X.B3, {
color: "primary",
weight: "semibold"
}, (r = e == null ? void 0 : e("Start recording")) != null ? r : "Start recording")), [ee.STATE.STARTED, ee.STATE.STARTING].includes(n) && p(xe, {
alignItems: "center",
justifyContent: "center",
gap: 16
}, p(xe, {
radius: "full",
className: fe(Tt.outerRing, Tt.accentRing),
height: 30,
width: 30,
border: "detail",
onClick: this.onButtonClick,
cursor: "pointer"
}, p(xe, {
className: fe(Tt.innerRing, Tt.accentRing, Tt.accentBackgroundRing),
bg: "accent-red"
})), n === ee.STATE.STARTING && p(X.B3, {
color: "primary",
weight: "semibold"
}, o, "..."), n === ee.STATE.STARTED && p(X.B3, {
color: "primary",
weight: "semibold"
}, Hl(s != null ? s : 0))), p(ft, {
priority: "secondary",
fill: "empty",
rounded: !0,
onClick: this.onCloseClicked
}, p(yr, null)))
}
}
Cm.contextType = Bh;
const hae = zh(Cm);
class gae extends xg {
constructor(e, n) {
var s;
super(e, n), this.state = {
recording: (s = this.props.skipToRecordStep) != null ? s : !1
}
}
trackUploadClicked() {
se(ae.UPLOAD_EPISODE_AUDIO_CLICKED)
}
render({
onRecorderStarted: e,
onRecorderStopped: n,
feature: s,
mediaUpload: a,
transcodeTimeLeft: o,
removeUpload: r,
hideRecorder: i,
hideReset: c
}, {
preuploading: l,
uploading: u,
recording: d,
percentComplete: m
}) {
var E, _, k, M;
const f = (a == null ? void 0 : a.state) === "uploaded",
h = d,
g = !h && (u || l),
b = !h && !g && !f,
{
iString: x
} = this.i18n,
v = (_ = (E = this.props.components) == null ? void 0 : E.AudioDecider) != null ? _ : Qse,
w = (M = (k = this.props.components) == null ? void 0 : k.AudioRecorder) != null ? M : hae;
return p(ne, {
flex: "grow",
border: "detail",
radius: "sm",
alignItems: "center",
paddingY: 16,
paddingX: 12,
gap: 8
}, b && p(v, P(S({}, this.props), {
accept: this.accepts,
onUploadClicked: this.onUploadClicked,
onFileSelected: this.onFileSelected,
onRecord: () => this.setState({
recording: !0
}),
hideRecorder: i,
hideReset: c,
onResetToDefault: this.props.onResetToDefault
})), h && p(w, {
feature: s,
onComplete: y => {
this.setState({
recording: !1
}), y && this.uploadToS3(y), n == null || n()
},
onCancel: () => {
this.setState({
recording: !1
})
},
onRecorderStarted: e,
onRecorderStopped: n
}), g && p(Zse, {
percentComplete: m,
onCancel: () => {
var y, T;
confirm(x("Are you sure you want to cancel the upload?")) && (this.cancelUpload(), (T = (y = this.props).onUploadCanceled) == null || T.call(y))
}
}), f && p(yg, {
onCancel: r
}))
}
}
class ri extends wg {
constructor(e, n) {
super(e, n), this.removeAudio = () => {
var s, a;
this.props.legacyPodcastUrl ? (a = (s = this.props).onRemoveLegacyUrl) == null || a.call(s) : this.removeUpload()
}, this.state = {
mediaUploadId: e.mediaUploadId,
mediaUpload: e.mediaUpload || null,
estimatedTimeLeftAt: null,
timeLeft: 0,
percentComplete: 1,
dismissedAudioErrorModal: !1
}
}
isPodcast() {
return [An.Podcast, An.PodcastPreview].includes(this.props.feature)
}
render({
onDeleteErroredUpload: e,
feature: n,
pub: s,
initialFile: a,
postId: o,
setPostId: r,
onRecorderStopped: i,
onError: c,
onRecorderStarted: l,
onUploadStarted: u,
legacyPodcastUrl: d,
onUploadCanceled: m,
skipToRecordStep: f,
hideRecorder: h,
hideReset: g,
components: b
}, {
mediaUpload: x,
timeLeft: v,
dismissedAudioErrorModal: w
}) {
var M, y;
const E = (M = b == null ? void 0 : b.AuditionPlayer) != null ? M : Dg,
_ = (y = b == null ? void 0 : b.AudioUploader) != null ? y : gae,
k = _a(x);
return d ? p(Gi, {
feature: n,
pub: s,
src: d,
render: T => p(E, P(S({}, T), {
onRemove: this.removeAudio
}))
}) : p(be, null, (!x || x.state !== "transcoded" || k) && p(_, {
feature: n,
initialFile: a,
mediaType: "audio",
postId: o,
onUpload: T => this.onMediaUpload({
mediaUpload: T
}),
setPostId: r,
onRecorderStarted: l,
onRecorderStopped: i,
onError: c,
mediaUpload: x,
removeUpload: this.removeUpload,
onUploadCanceled: m,
onUploadStarted: u,
transcodeTimeLeft: v,
skipToRecordStep: f,
language: this.props.language,
hideRecorder: h,
hideReset: g,
onResetToDefault: this.props.onResetToDefault
}), (x == null ? void 0 : x.state) === "transcoded" && p(Gi, {
feature: n,
pub: s,
src: x ? En(`/api/v1/audio/upload/${x.id}/src`) : d,
render: T => p(E, P(S({}, T), {
onRemove: this.removeAudio
})),
duration: x == null ? void 0 : x.duration,
playbackRate: 1
}), k && p(xr, {
isOpen: !w,
onDeleteAudio: () => {
e ? e({
skipConfirm: !0
}) : this.removeAudio()
},
onDismiss: () => {
this.setState({
dismissedAudioErrorModal: !0
})
}
}))
}
}
const bae = Er((t, e) => {
t({
mediaUploadId: e == null ? void 0 : e.id,
duration: e == null ? void 0 : e.duration,
mediaUpload: e
})
}, 1e3, {
trailing: !1
}),
vae = ({
id: t,
droppedFile: e,
open: n,
pub: s,
postId: a,
onSave: o,
onClose: r,
setPostId: i
}) => {
const [c, l] = z(e != null ? e : null), [u, d] = z(null), [m, f] = z(!1), {
iString: h,
language: g
} = ue();
U(() => {
l(e)
}, [e]);
const b = () => {
m && !confirm(h("Your audio will be discarded, are you sure?")) || (se(ae.AUDIO_MODAL_CANCEL_CLICKED, {
has_media_upload: !!u
}), x())
},
x = () => {
d(null), l(null), r()
},
v = (u == null ? void 0 : u.state) !== "transcoded";
return p(ym, {
wrapperId: t,
title: h(An.Embed),
isOpen: n,
onClose: b,
primaryButton: p(Pt, {
disabled: !v,
text: h("Audio needed")
}, p(Ae, {
priority: "primary-theme",
fill: "filled",
onClick: () => {
se(ae.AUDIO_MODAL_INSERT_CLICKED), bae(o, u), x()
},
disabled: v
}, h("Insert"))),
secondaryButton: p(Ae, {
priority: "secondary",
fill: "outline",
onClick: b
}, h("Cancel"))
}, p(X.B4, {
paddingBottom: 24
}, h(Jh.Embed)), p(Y, {
padding: 16,
radius: "md",
border: "detail"
}, p(X.B2, {
weight: "semibold",
translated: !0,
paddingBottom: 16
}, "Create audio"), p(ri, {
initialFile: c,
feature: An.Embed,
mediaType: "audio",
pub: s,
postId: a,
setPostId: i,
onChange: ({
mediaUpload: w
}) => {
f(!1), d(w), l(null)
},
onUploadStarted: () => {
f(!0)
},
onUploadCanceled: () => {
f(!1)
},
mediaUpload: u,
mediaUploadId: u == null ? void 0 : u.id,
onRemoveLegacyUrl: null,
language: g
})))
},
xae = "_surveyModalDropdown_6u9jk_1",
yae = {
surveyModalDropdown: xae
},
wae = ({
isOpen: t,
onInsert: e,
onClose: n,
pub: s
}) => {
var b, x;
const {
iString: a,
iTemplate: o
} = ue(), [r, i] = z(null), [c, l] = z(a("Start Survey")), {
isLoading: u,
result: d,
refetch: m
} = $o({
pathname: "/api/v1/survey",
auto: !1
}), {
isLoading: f,
result: h,
refetch: g
} = $o({
pathname: "/api/v1/survey",
auto: !1,
method: "POST",
json: {
title: (b = d == null ? void 0 : d.surveys) != null && b.length ? o `Reader Survey ${((x=d==null?void 0:d.surveys)==null?void 0:x.length)+1}` : o `Reader Survey`
}
});
return U(() => {
const v = w => {
w.data === "surveySavedInPopup" && m()
};
return t && !f && h && (window.open($f(s, h.id, {
popup: !0
}), "_blank"), window.addEventListener("message", v)), () => {
window.removeEventListener("message", v)
}
}, [t, f, h]), U(() => {
t && !d && !u && m()
}, [t, d, m, u]), p(ms, {
isOpen: t
}, p(Y, {
paddingY: 40,
paddingX: 16,
gap: 24
}, u && p(Sn, null), !u && d && p(Y, {
gap: 32
}, p(X.H3, null, "Insert a Survey"), p(Y, {
gap: 4
}, p(X.B4, {
weight: "semibold"
}, "Survey to insert"), p(Xg, {
placeholder: a("Select a reader survey"),
value: r,
onChange: v => {
if (v === "new") {
g();
return
}
i(v)
},
options: d.surveys.map(v => ({
value: v.id,
label: v.title
})).concat({
value: "new",
label: "Create new survey"
}),
buttonClassName: yae.surveyModalDropdown
})), p(Y, {
gap: 4
}, p(X.B4, {
weight: "semibold"
}, "Button text"), p(rs, {
value: c,
onChange: v => {
l(v.target.value)
}
})), p(ne, {
alignItems: "center",
justifyContent: "end",
gap: 8
}, p(Ae, {
priority: "primary-theme",
disabled: !r || f,
onClick: () => {
const v = d.surveys.find(w => w.id === r);
e(v, c)
}
}, "Insert"), p(Ae, {
disabled: f,
priority: "secondary-theme",
outline: "none",
onClick: n
}, "Cancel")))))
},
kae = (t, e, n) => {
se(ae.EDITOR_MENU_ICON_CLICKED, {
button: n
}), e(t)
};
function ii(t, e) {
return we(n => {
t && (e ? kae(n, t, e) : t(n))
}, [t, e])
}
const $e = wa((r, o) => {
var i = r,
{
trackedName: t,
testId: e,
priority: n = "tertiary",
onClick: s
} = i,
a = st(i, ["trackedName", "testId", "priority", "onClick"]);
const c = ii(s, t);
return p(vu, P(S({}, a), {
size: "sm",
"data-testId": e,
onClick: c,
ref: o,
priority: n
}))
}),
ci = wa((r, o) => {
var i = r,
{
trackedName: t,
testId: e,
priority: n = "tertiary",
onClick: s
} = i,
a = st(i, ["trackedName", "testId", "priority", "onClick"]);
const c = ii(s, t);
return p(ta, P(S({}, a), {
size: "sm",
"data-testId": e,
onClick: c,
ref: o,
priority: n
}))
}),
Q = wa((o, a) => {
var r = o,
{
trackedName: t,
testId: e,
onClick: n
} = r,
s = st(r, ["trackedName", "testId", "onClick"]);
const i = ii(n, t);
return p(vn, P(S({}, s), {
"data-testId": e,
onClick: i,
ref: a
}))
}),
Jt = () => p(Y, {
height: 32,
paddingY: 4,
sizing: "border-box"
}, p(Gg, null)),
_ae = ({
level: t
}) => {
switch (t) {
case 1:
return p(bb, {
size: 20
});
case 2:
return p(vb, {
size: 20
});
case 3:
return p(xb, {
size: 20
});
case 4:
return p(yb, {
size: 20
});
case 5:
return p(wb, {
size: 20
});
case 6:
return p(kb, {
size: 20
});
default:
return p(_b, {
size: 20
})
}
},
Cae = ({
editor: t
}) => {
const {
iString: e,
iTemplate: n
} = ue();
return p(be, null, p(Q, {
onClick: () => t == null ? void 0 : t.chain().focus().setParagraph().run(),
rightIcon: (t == null ? void 0 : t.isActive("paragraph")) && p(sa, {
size: 20
}),
icon: p(Db, {
size: 20
}),
trackedName: "paragraph"
}, e("Normal text")), [1, 2, 3, 4, 5, 6].map(s => p(Q, {
onClick: () => t == null ? void 0 : t.chain().focus().toggleHeading({
level: s
}).run(),
rightIcon: (t == null ? void 0 : t.isActive("heading", {
level: s
})) && p(sa, {
size: 20
}),
icon: p(_ae, {
level: s
})
}, n `Heading ${s}`)))
},
Eae = ({
editor: t
}) => {
const {
iString: e
} = ue();
return p(Mt, {
trigger: p(ci, {
trailing: p(Ar, {
size: 20
}),
testId: "style-picker"
}, e("Style")),
layerOptions: {
triggerOffset: 4,
placement: "bottom-start"
}
}, p(Cae, {
editor: t
}))
},
Aae = ({
editor: t,
publication: e,
postId: n,
get_coupons: s,
insert_coupon: a,
hideSharePostAndComment: o = !1,
writerReferralCode: r,
customSpecialOfferCommand: i = null,
customCustomButtonCommand: c = null,
user: l,
setIsSurveyModalOpen: u
}) => {
var E;
const {
userSettings: d
} = Yg(), {
result: m
} = $o({
pathname: "/api/v1/meetings/config",
initialResult: {
meetings: {
enabled: !1
}
},
auto: Xn("meetings_v1") && (e == null ? void 0 : e.payments_state) === "enabled",
deps: []
}), h = (d.messageRequestLevel || "nobody") !== "nobody", {
iString: g,
iTemplate: b,
language: x
} = ue(), v = Hf(e), {
getSettingFor: w
} = qh();
return p(be, null, p(Q, {
onClick: () => {
t.chain().focus().insertSubscribeButton(e).run()
},
trackedName: "button_subscribe",
testId: "insert-subscribe-button"
}, _n(e, {
now: !1,
language: x
})), p(Q, {
onClick: () => t.chain().focus().insertSubscribeButtonWithPreamble(e).run(),
trackedName: "button_subscribe_with_preamble"
}, g("Subscribe with caption")), !o && p(to, null, p(Q, {
onClick: () => t.chain().focus().insertSharePostButton(e).run(),
trackedName: "button_share_post"
}, g("Share post")), p(Q, {
onClick: () => t.chain().focus().insertCaptionedShareButton(e).run(),
trackedName: "button_share_with_preamble"
}, g("Share post with caption")), p(Q, {
onClick: () => t.chain().focus().insertSharePubButton(e).run(),
trackedName: "button_share_publication"
}, g("Share publication"))), p(to, null, !o && p(Q, {
onClick: () => t.chain().focus().insertCommentsButton(e).run(),
trackedName: "button_insert_comment"
}, g("Leave a comment")), h && l && p(Q, {
onClick: () => {
t.chain().focus().insertDirectMessage({
user: l
}).run()
},
trackedName: "button_dm_author"
}, g("Send a message")), !!(e != null && e.threads_v2_enabled) && p(Q, {
testId: "visit-thread-btn",
onClick: () => t.chain().focus().insertVisitThreadButton(e).run(),
trackedName: "button_visit_thread"
}, g("Join the chat")), p(Q, {
testId: "get-app-btn",
onClick: () => t.chain().focus().insertInstallSubstackAppEmbed(e).run(),
trackedName: "install_substack_app"
}, g("Get the app"))), p(to, null, p(Q, {
onClick: c || (() => t.chain().focus().insertCustomButton({
scrollParent: "editor",
parentClass: "more-dropdown",
TextField: Va,
openPrompt: ma,
publication: e
}).run()),
trackedName: "button_custom"
}, g("Custom...")), p(Ig, {
content: g("More...")
}, w("reader_referrals_enabled") && p(Q, {
onClick: () => t.chain().focus().insertReferralButton(e).run(),
trackedName: "button_referral"
}, g("Refer a friend")), r && p(Q, {
onClick: () => t.chain().focus().insertCaptionedWriterReferralButton({
writerReferralCode: r,
publication: e,
postId: n
}).run(),
trackedName: "button_writer_referral"
}, g("Refer a writer")), v && p(be, null, p(Q, {
onClick: i || (() => {
const _ = e;
return t.chain().focus().insertSpecialOfferButton({
couponPub: _,
scrollParent: "editor",
parentClass: "more-dropdown",
get_coupons: s,
insert_coupon: a,
SelectField: rQ,
openPrompt: ma,
closePrompt: Jr,
getNetworkErrorMessage: Ft
}).run()
}),
trackedName: "button_special_offer"
}, g("Special offer")), p(Q, {
onClick: () => t.chain().focus().insertGiftButton(e).run(),
trackedName: "button_gift"
}, Cn(e, () => b `Give a gift subscription`, _ => `Give a gift ${_.subscription}`)), p(Q, {
onClick: () => {
const _ = e;
t.chain().focus().insertGroupSubscriptionButton({
publication: _
}).run()
},
trackedName: "button_group_subscription"
}, Cn(e, () => b `Get a group subscription`, _ => `Get a group ${_.subscription}`))), p(Q, {
testId: "survey-prompt-btn",
onClick: () => u(!0),
trackedName: "survey_button"
}, g("Link to survey")), Xn("meetings_v1") && (e == null ? void 0 : e.payments_state) === "enabled" && ((E = m == null ? void 0 : m.meetings) == null ? void 0 : E.enabled) && p(Q, {
onClick: () => {
var _;
return t.chain().focus().insertMeeting({
publication: e,
meetingsConfig: m == null ? void 0 : m.meetings,
usePublicationName: (_ = Xn("meetings_embed_publication_name")) != null ? _ : !1
}).run()
},
trackedName: "button_book_meeting"
}, g("Book a meeting")))))
},
Sae = ({
editor: t,
setPostPaidForPaywall: e,
setPostId: n,
isAdhocEmail: s,
pub: a,
customInsertRuleCommand: o = void 0,
canAddPaywall: r = !0,
setFinancialChartModalOpen: i,
setIsLatexDropdownOpen: c
}) => {
const {
iString: l
} = ue(), u = Xn("recipes_enabled");
return p(be, null, p(Q, {
disabled: !(t != null && t.can().toggleCodeBlock()),
onClick: () => {
t.chain().focus().toggleCodeBlock().run()
},
icon: p(db, {
size: 20
}),
trackedName: "code_block"
}, l("Code block")), p(Q, {
onClick: o || (() => t.chain().focus().setHorizontalRule().run()),
icon: p(qg, {
size: 20
}),
trackedName: "horizontal_rule"
}, l("Divider")), p(Q, {
onClick: () => {
i(!0)
},
icon: p(ob, null),
trackedName: "financial_chart"
}, l("Financial chart")), p(Q, {
disabled: !(t != null && t.can().insertFootnote()),
onClick: () => {
t.chain().focus().insertFootnote().run()
},
icon: p(pb, {
size: 20
}),
trackedName: "footnote"
}, l("Footnote")), p(Q, {
disabled: !(t != null && t.can().insertLatex({
expression: ""
})),
onClick: () => t.chain().focus().insertLatex({
expression: ""
}).run(),
icon: p(Mb, null),
trackedName: "latex_block"
}, l("LaTeX")), u && p(Q, {
disabled: !1,
onClick: () => N(void 0, null, function*() {
const d = yield n();
if (!d) return;
const m = yield he.post("/api/v1/recipe").send({
post_id: d
});
t.chain().focus().insertRecipe({
id: m.body.id
}).run()
}),
icon: p(mb, null),
trackedName: "recipe",
testId: "add-recipe-button"
}, l("Recipe")), r && !s && p(Q, {
disabled: !(t != null && t.can().addPaywall(e)),
onClick: () => t.chain().focus().addPaywall(e).run(),
icon: p(fb, {
size: 20
}),
testId: "add-paywall-button",
trackedName: "paywall"
}, l("Paywall")), p(Q, {
disabled: !(t != null && t.can().toggleNode("preformatted_text_block", "paragraph")),
onClick: () => t.chain().focus().toggleNode("preformatted_text_block", "paragraph").run(),
icon: p(gb, {
size: 20
}),
trackedName: "preformatted_text_block"
}, l("Poetry")), p(Q, {
onClick: () => N(void 0, null, function*() {
const d = yield n();
if (!d) return;
const m = yield he.post("/api/v1/poll").send({
post_id: d
});
t.chain().focus().insertPoll({
id: m.body.id
}).run()
}),
icon: p(zg, {
size: 20
}),
trackedName: "poll"
}, l("Poll")))
},
Tae = ({
editor: t,
publication: e,
get_coupons: n,
insert_coupon: s,
hideSharePostAndComment: a = !1,
writerReferralCode: o,
postId: r,
customSpecialOfferCommand: i = null,
customCustomButtonCommand: c = null,
user: l,
setIsSurveyModalOpen: u
}) => {
const {
iString: d
} = ue();
return p(Mt, {
trigger: p(ci, {
trailing: p(Ar, {
size: 20
}),
testId: "button-picker"
}, d("Button")),
layerOptions: {
triggerOffset: 4,
placement: "bottom-start"
}
}, p(Aae, {
user: l,
editor: t,
publication: e,
get_coupons: n,
insert_coupon: s,
hideSharePostAndComment: a,
writerReferralCode: o,
postId: r,
setIsSurveyModalOpen: u,
customSpecialOfferCommand: i,
customCustomButtonCommand: c
}))
},
Dae = ({
editor: t,
setPostPaidForPaywall: e,
setPostId: n,
isAdhocEmail: s,
pub: a,
customInsertRuleCommand: o = void 0,
canAddPaywall: r = !0,
setFinancialChartModalOpen: i,
setIsLatexDropdownOpen: c
}) => {
const {
iString: l
} = ue();
return p(Mt, {
trigger: p(ci, {
trailing: p(Ar, {
size: 20
}),
testId: "more-submenu",
className: "more-dropdown"
}, l("More")),
layerOptions: {
triggerOffset: 4,
placement: "bottom-start"
}
}, p(Sae, {
isAdhocEmail: s,
editor: t,
pub: a,
setPostPaidForPaywall: e,
setPostId: n,
customInsertRuleCommand: o,
canAddPaywall: r,
setFinancialChartModalOpen: i,
setIsLatexDropdownOpen: c
}))
},
Iae = ({
editor: t,
insertImageFile: e,
publication: n,
postId: s
}) => {
const [a, o] = z(!1), [r, i] = z(!1), [c, l] = z(!1), [u, d] = z(!1), {
iString: m,
iTemplate: f
} = ue(), h = g => {
g.preventDefault(), d(!0), i(!0)
};
return U(() => (document.addEventListener("editSelectedImageGallery", h), () => {
document.removeEventListener("editSelectedImageGallery", h)
}), []), p(be, null, p(Mt, {
trigger: p($e, {
title: "Insert image"
}, p(Ho, {
size: 20
})),
layerOptions: {
triggerOffset: 4,
placement: "bottom-start"
}
}, p(Q, {
onClick: () => t.chain().focus().insertImage(e).run(),
icon: p(Fh, null),
trackedName: "image_upload"
}, m("Add image")), p(Q, {
onClick: () => i(!0),
icon: p(ng, null),
trackedName: "image_gallery"
}, m("Add gallery")), p(Q, {
onClick: () => {
o(!0)
},
icon: p(ab, {
size: 20
}),
testId: "image-unsplash",
trackedName: "image_unsplash"
}, m("Add stock photo")), p(Q, {
onClick: () => {
l(!0)
},
icon: p(Lb, null),
trackedName: "image_generate"
}, m("Generate"))), p(Xse, {
open: a,
onAfterClose: () => {
o(!1)
},
onSelectStockImage: g => {
t.chain().focus().insertUnsplashImage(g).run()
}
}), p(Wse, {
pub: n,
postId: s,
editor: t,
editingCurrentSelection: u,
isOpen: r,
onInsertGallery: g => {
t.chain().focus().insertImageGallery({
gallery: g
}).run()
},
onUpdateGallery: g => {
t.chain().focus().updateImageGallery({
gallery: g
}).run()
},
onClose: () => {
d(!1), i(!1)
}
}), p(Wg, {
open: c,
onAfterClose: () => l(!1),
onImageSelected: null,
insertionPointSelector: ".editor",
onUrlSelected: x => N(void 0, [x], function*({
url: g,
prompt: b
}) {
const v = yield he.post("/api/v1/image").send({
image: g,
postId: s != null ? s : void 0
});
t.chain().focus().insertImageFromUrl({
url: v.body.url,
caption: b || "",
width: Uf,
height: Vf
}).run(), l(!1)
})
}))
},
Nae = ({
editor: t
}) => {
const {
iString: e
} = ue();
return p(Mt, {
trigger: p($e, {
title: "Insert quote",
disabled: !(t != null && t.can().togglePullquote()) && !(t != null && t.can().toggleBlockquote())
}, p(Sb, {
size: 20
})),
layerOptions: {
triggerOffset: 4,
placement: "bottom-start"
}
}, p(Q, {
disabled: !(t != null && t.can().toggleBlockquote()),
onClick: () => t == null ? void 0 : t.chain().focus().toggleBlockquote().run(),
rightIcon: (t == null ? void 0 : t.isActive("blockquote")) && p(sa, {
size: 20
}),
trackedName: "blockquote"
}, e("Block quote")), p(Q, {
disabled: !(t != null && t.can().togglePullquote()),
onClick: () => {
t == null || t.chain().focus().togglePullquote().run()
},
rightIcon: (t == null ? void 0 : t.isActive("pullquote")) && p(sa, {
size: 20
}),
trackedName: "pullquote"
}, e("Pull quote")))
},
It = () => {
if (window) return window.LatexModalEvent || (window.LatexModalEvent = new EventTarget), window.LatexModalEvent
},
Mae = ({
editor: t,
isOpen: e,
setIsOpen: n
}) => {
var o;
const [s, a] = z(null);
return ue(), U(() => {
const r = ({
detail: i
}) => {
a(i.node), n(!0)
};
return It().addEventListener("open", r), () => {
It().removeEventListener("open", r)
}
}, [e, s]), U(() => {
const r = ({
detail: i
}) => {
i.node.attrs = P(S({}, i.node.attrs), {
persistentExpression: i.persistentExpression
}), i.node.attrs.dirty = !0, a(i.node)
};
return It().addEventListener("close", r), () => {
It().removeEventListener("close", r)
}
}, [e, s]), p(qae, {
isOpen: e,
onClose: () => {
n(!1)
},
node: s,
persistentExpression: ((o = s == null ? void 0 : s.attrs) == null ? void 0 : o.persistentExpression) || ""
})
},
Oae = ({
editor: t,
publication: e,
postId: n,
setPostId: s,
voiceoverEnabled: a,
audioEmbedsEnabled: o,
showAudioEduTooltip: r,
showingDrawerName: i,
setShowDrawer: c
}) => {
const {
iString: l
} = ue();
return p(be, null, p(Mt, {
trigger: p($e, {
title: "Insert audio"
}, p(gg, {
size: 20
})),
layerOptions: {
triggerOffset: 4,
placement: "bottom-start"
}
}, a && p(Q, {
onClick: () => {
c("voiceover")
},
trackedName: "voiceover",
icon: p(Go, {
size: 20
})
}, l("Voiceover")), o && p(Q, {
trackedName: "audio_embed",
onClick: () => {
c("audioEmbed")
},
icon: p(Ib, {
size: 20
})
}, l("Audio embed"))), p(vae, {
id: "audioEmbed",
open: i === "audioEmbed",
pub: e,
postId: n,
onClose: () => c(null),
onSave: ({
mediaUploadId: u,
duration: d
}) => {
t.chain().focus().insertAudio({
mediaUploadId: u,
duration: d
}).run()
},
setPostId: s
}))
},
Lae = ({
editor: t,
publication: e,
postId: n,
isAdhocEmail: s,
insertImageFile: a,
get_coupons: o,
insert_coupon: r,
setPostPaidForPaywall: i,
voiceoverEnabled: c,
audioEmbedsEnabled: l,
showAudioEduTooltip: u,
setPostId: d,
hideSharePostAndComment: m = !1,
showingDrawerName: f,
setShowDrawer: h,
writerReferralCode: g,
canAddPaywall: b,
user: x
}) => {
const {
iString: v,
iTemplate: w
} = ue(), [E, _] = z(!1), [k, M] = z(!1), [y, T] = z(!1);
if (!t) return;
const D = Vl(),
C = (t == null ? void 0 : t.isActive("orderedList")) || (t == null ? void 0 : t.isActive("bulletList"));
return p(bu, null, p(xe, {
paddingX: 16,
justifyContent: "center",
bg: "primary",
className: fe("tiptap-menu")
}, p(xe, {
wrap: "wrap",
gap: 12,
paddingY: 8,
alignItems: "center"
}, p(xe, {
gap: 4
}, p($e, {
onClick: () => t.chain().focus().undo().run(),
disabled: !t.can().undo(),
title: w `Undo ${D}Z`,
trackedName: "undo"
}, p(Ob, {
size: 20
})), p($e, {
onClick: () => t.chain().focus().redo().run(),
disabled: !t.can().redo(),
title: w `Redo ${D}⇧Z`,
trackedName: "redo"
}, p(Nb, {
size: 20
}))), p(Jt, null), p(xe, {
gap: 4
}, p(Eae, {
editor: t
})), p(Jt, null), p(xe, {
gap: 4
}, p($e, {
priority: t.isActive("bold") ? "secondary" : "tertiary",
onClick: () => t.chain().focus().toggleBold().run(),
disabled: !t.can().toggleBold(),
title: w `Bold ${D}B`,
trackedName: "toggle_bold"
}, p(Zg, {
size: 20
})), p($e, {
priority: t.isActive("italic") ? "secondary" : "tertiary",
onClick: () => t.chain().focus().toggleItalic().run(),
disabled: !t.can().toggleItalic(),
title: w `Italic ${D}I`,
trackedName: "toggle_italic"
}, p(Qg, {
size: 20
})), p($e, {
onClick: () => t.chain().focus().toggleStrike().run(),
disabled: !t.can().toggleStrike(),
priority: t.isActive("strike") ? "secondary" : "tertiary",
title: w `Strikethrough ${D}⇧X`,
trackedName: "toggle_strikethrough"
}, p(eb, {
size: 20
})), p($e, {
priority: t.isActive("code") ? "secondary" : "tertiary",
onClick: () => t.chain().focus().toggleCode().run(),
disabled: !t.can().toggleCode(),
title: v("Code"),
trackedName: "toggle_code_mark"
}, p(Bg, {
size: 20
}))), p(Jt, null), p(xe, {
gap: 4
}, p($e, {
onClick: () => t.chain().addLink().run(),
title: w `Link ${D}K`,
trackedName: "link"
}, p(Fu, {
size: 20
})), p(Iae, {
editor: t,
insertImageFile: a,
publication: e,
postId: n
}), !s && (c || l) && p(Oae, {
editor: t,
publication: e,
postId: n,
setPostId: d,
voiceoverEnabled: c,
audioEmbedsEnabled: l,
showAudioEduTooltip: u,
showingDrawerName: f,
setShowDrawer: h
}), !s && p(yse, {
editor: t,
pub: e,
postId: n != null ? n : null,
setPostId: d
}), p(Nae, {
editor: t
})), p(Jt, null), p(xe, {
gap: 4
}, p($e, {
priority: t != null && t.isActive("bulletList") ? "secondary" : "tertiary",
disabled: !(t != null && t.can().toggleBulletList()),
onClick: () => t.chain().focus().toggleBulletList().run(),
title: v("Bulleted list"),
trackedName: "bullet_list"
}, p(sb, {
size: 20
})), p($e, {
priority: t != null && t.isActive("orderedList") ? "secondary" : "tertiary",
disabled: !(t != null && t.can().toggleOrderedList()),
onClick: () => t.chain().focus().toggleOrderedList().run(),
title: v("Numbered list"),
trackedName: "ordered_list"
}, p(tb, {
size: 20
})), C && p(be, null, p(Jt, null), p($e, {
disabled: !(t != null && t.can().sinkListItem("listItem")),
onClick: () => t.chain().focus().sinkListItem("listItem").run(),
title: v("Indent"),
trackedName: "indent_list"
}, p(Qi, {
size: 20
})), p($e, {
disabled: !(t != null && t.can().liftListItem("listItem")),
onClick: () => t.chain().focus().liftListItem("listItem").run(),
title: v("Deindent"),
trackedName: "deindent_list"
}, p(Qi, {
size: 20,
style: {
transform: "scaleX(-1)"
}
})))), p(Jt, null), p(xe, {
gap: 4
}, p(Tae, {
user: x,
editor: t,
publication: e,
get_coupons: o,
insert_coupon: r,
hideSharePostAndComment: m,
writerReferralCode: g,
postId: n,
setIsSurveyModalOpen: _
})), p(Jt, null), p(xe, {
gap: 4
}, p(Dae, {
isAdhocEmail: s,
canAddPaywall: b,
editor: t,
setPostPaidForPaywall: i,
setPostId: d,
pub: e,
setFinancialChartModalOpen: M,
setIsLatexDropdownOpen: T
})))), e && p(wae, {
isOpen: E,
pub: e,
onClose: () => {
_(!1)
},
onInsert: (L, R) => {
t.chain().focus().insertSurveyButton(e, L, R).run(), _(!1)
}
}), p(Ese, {
isOpen: k,
onClose: () => {
M(!1)
},
onInsert: ({
url: L,
width: R,
height: A
}) => {
t.chain().focus().insertTradingViewImageFromUrl({
url: L,
height: A,
width: R
}).run()
}
}), p(Mae, {
editor: t,
isOpen: y,
setIsOpen: T
}))
},
Rae = t => {
try {
return Lae(t)
} catch (e) {
return window.Sentry && window.Sentry.captureException(e), p(be, null)
}
},
Pae = "_latexWrapper_zecxq_1",
Bae = "_latexEdit_zecxq_12",
zae = "_emptyStateWrapper_zecxq_41",
Mo = {
latexWrapper: Pae,
latexEdit: Bae,
emptyStateWrapper: zae
},
qae = ({
isOpen: t,
onClose: e,
persistentExpression: n,
node: s
}) => {
const [a, o] = z(n), {
iString: r
} = ue(), [i, c] = z(() => wr(o, 1e3));
return U(() => {
o(n)
}, [n]), p(ju, null, p(ms, {
isOpen: t,
onClose: e,
"data-test-id": "latex-modal"
}, p(fs, null, p(Y, {
paddingTop: 8,
gap: 24
}, p(Y, {
gap: 24
}, p(ne, {
justifyContent: "space-between",
alignItems: "center"
}, p(X.Meta, {
translated: !0
}, "LaTeX Editor")), p(rg, {
"data-test-id": "latex-input",
rows: 4,
maxLength: 1e3,
value: a,
name: "expression",
onChange: l => {
i(l.target.value)
}
})), a ? p(Y, {
height: 150
}, p($u, {
typesettingOptions: {
fn: "tex2chtml",
options: void 0
},
text: `${a}`,
renderMode: "pre",
inline: !1,
dynamic: !0
})) : p(Y, null, p(Y, {
radius: "md",
paddingX: 12,
paddingY: 20,
alignItems: "center"
}, p(X.B4, {
fontStyle: "italic",
translated: !0,
color: "secondary",
align: "center"
}, "Write LaTeX expressions in the above editor and they'll appear here"))))), p(ds, {
includeDivider: !1,
alignment: "default",
primaryButton: p(Ae, {
"data-test-id": "latex-save",
priority: "primary-theme",
onClick: () => {
se(ae.LATEX_BLOCK_ADDED, {
expression: a
}), It().dispatchEvent(new CustomEvent("close", {
detail: {
persistentExpression: a,
node: s
}
})), e()
}
}, r("Save")),
secondaryButton: p(Ae, {
"data-test-id": "latex-cancel",
fill: "empty",
outline: "none",
priority: "secondary",
onClick: () => {
It().dispatchEvent(new CustomEvent("close", {
detail: {
persistentExpression: n,
node: s
}
})), a !== n && o(n), e()
}
}, r("Cancel"))
})))
},
Em = ({
node: t,
id: e
}) => {
const [n, s] = z(t.attrs.persistentExpression);
return U(() => {
s(t.attrs.persistentExpression)
}, [t]), U(() => {
const a = ({
detail: o
}) => {
if (o.node.attrs.id === t.attrs.id) {
const r = o.persistentExpression;
s(r)
}
};
return It().addEventListener("close", a), () => {
It().removeEventListener("close", a)
}
}, []), p(wt, {
"data-drag-handle": ""
}, p(ju, null, p("div", {
className: "latex-block",
id: e
}, p(Y, {
className: fe(Mo.latexWrapper, t.attrs.persistentExpression || Gf() ? Mo.emptyStateWrapper : null),
radius: "md",
"data-attrs": JSON.stringify({
persistentExpression: n,
id: t.attrs.id
}),
onClick: () => {
n !== t.attrs.persistentExpression && s(t.attrs.persistentExpression), It().dispatchEvent(new CustomEvent("open", {
detail: {
persistentExpression: t.attrs.persistentExpression,
node: t
}
}))
}
}, p(ne, {
paddingY: 8,
paddingX: 16,
flex: "grow",
justifyContent: "center",
alignItems: "center"
}, n || t.attrs.persistentExpression ? p(Y, {
alignItems: "center",
justifyContent: "center"
}, p($u, {
typesettingOptions: {
fn: "tex2chtml",
options: void 0
},
text: `${n||t.attrs.persistentExpression}`,
renderMode: "pre",
inline: !1,
dynamic: !0
})) : p(Y, {
alignSelf: "center"
}, p(X.Meta, {
fontStyle: "italic",
translated: !0,
color: "secondary"
}, "Edit & enter LaTeX expressions here")), p(Y, null, p("button", {
className: Mo.latexEdit
}, p(rb, {
width: 20,
height: 20
}))))))))
},
Am = () => {
let t = "";
const e = "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
n = e.length;
for (let s = 0; s < 10; s++) t += e.charAt(Math.floor(Math.random() * n));
return t
},
Sm = {
content: "text*",
group: "block",
code: !0,
defining: !0,
isolating: !0,
attrs: {
persistentExpression: {
default: ""
},
id: {
default: ""
}
},
parseDOM: [{
tag: "pre.text",
preserveWhitespace: "full",
priority: 60
}, {
tag: "div.latexWrapper",
getAttrs: re
}],
toDOM: t => ["div", {
class: "latex-rendered",
"data-attrs": JSON.stringify(S({}, t.attrs)),
"data-component-name": "LatexBlockToDOM"
}],
toDOMStatic: t => ["div", {
class: "latex-rendered",
"data-attrs": JSON.stringify(P(S({}, t.attrs), {
isEmail: !0
})),
"data-component-name": "LatexBlockToDOMStatic"
}]
},
Fae = F({
name: "latex_block",
nodeSpec: Sm,
addCommands() {
return {
insertLatex: t => ({
commands: e
}) => e.insertContent({
type: this.name,
attrs: t
})
}
},
addNodeView() {
return kt(Em)
}
}),
jae = t => {
try {
const e = document.createElement("span");
e.className = "latex-rendered";
const n = Am(),
s = t == null ? void 0 : t.attrs.persistentExpression;
return ur(p(Em, {
persistentExpression: s,
node: t,
id: n
}), e), e
} catch (e) {
return console.error("Error rendering LatexComponent", e), Oe({
msg: null,
node: t,
err: e,
group: "block"
})
}
};
class $ae {
constructor(e) {
e.updateExpression = n => {
e.attrs = P(S({}, e.attrs), {
persistentExpression: n
}), e.attrs.dirty = !0
}, this.dom = jae(e)
}
}
const Uae = ({
expression: t
}) => (e, n) => {
const s = Am();
return n && n(ie(e, e.schema.nodes.latex_block.create({
persistentExpression: t,
id: s
}))), !0
},
Vae = Pe.create({
name: "latexInsert",
addCommands() {
return {
insertLatex: ({
expression: t
}) => ({
state: e,
dispatch: n
}) => Uae({
expression: t
})(e, n)
}
}
}),
Hae = ({
publication: t,
meetingsConfig: e,
usePublicationName: n
}) => (s, a) => {
let o = su({
id: e.user_id,
photo_url: e.user_profile_photo_url
});
return n && t.logo_url && (o = q(t.logo_url, 112)), a && a(ie(s, s.schema.nodes.meeting.create({
name: n ? t.name : e.user_name,
avatarUrl: o,
url: au(t, {
addBase: !0,
params: {
source: "embed"
}
}),
isEditorNode: !0
}))), !0
},
Gae = Pe.create({
name: "meetingInsert",
addCommands() {
return {
insertMeeting: ({
publication: t,
meetingsConfig: e,
usePublicationName: n
}) => ({
state: s,
dispatch: a
}) => Hae({
publication: t,
meetingsConfig: e,
usePublicationName: n
})(s, a)
}
}
}),
Tm = t => !Bn(t.doc.toJSON(), e => e.type === "paywall"),
Wae = t => (e, n) => {
if (!Tm(e)) return !1;
const {
schema: s,
tr: a
} = e, o = s.nodes.paywall.create();
return a.selection.anchor === 1 ? Jae(t)(e, n) : (a.insert(a.selection.anchor, o), n && (n(a), t()), !0)
},
Jae = t => (e, n) => {
if (!Tm(e)) return !1;
const {
schema: s,
tr: a
} = e, o = s.nodes.paywall.create();
let r = 0,
i = 0;
for (; r < 10 && i < 3;) {
const c = e.doc.resolve(r).nodeAfter;
if (!c) break;
r += c.nodeSize, i++
}
return a.insert(r, o), n && (n(a), t()), !0
},
Yae = Pe.create({
name: "paywallCustom",
addCommands() {
return {
addPaywall: t => ({
state: e,
dispatch: n
}) => Wae(t)(e, n)
}
}
}),
Kae = ({
id: t
}) => (e, n) => (n && n(ie(e, e.schema.nodes.poll.create({
id: t
}))), !0),
Xae = Pe.create({
name: "pollInsert",
addCommands() {
return {
insertPoll: ({
id: t
}) => ({
state: e,
dispatch: n
}) => Kae({
id: t
})(e, n)
}
}
}),
Zae = ({
id: t
}) => (e, n) => (n && n(ie(e, e.schema.nodes.recipe.create({
id: t
}))), !0),
Qae = Pe.create({
name: "recipeInsert",
addCommands() {
return {
insertRecipe: ({
id: t
}) => ({
state: e,
dispatch: n
}) => Zae({
id: t
})(e, n)
}
}
});
function Dm(t = {}) {
return new _t({
view(e) {
return new eoe(e, t)
}
})
}
class eoe {
constructor(e, n) {
this.editorView = e, this.cursorPos = null, this.element = null, this.timeout = -1, this.width = n.width || 1, this.color = n.color || "black", this.class = n.class, this.handlers = ["dragover", "dragend", "drop", "dragleave"].map(s => {
let a = o => {
this[s](o)
};
return e.dom.addEventListener(s, a), {
name: s,
handler: a
}
})
}
destroy() {
this.handlers.forEach(({
name: e,
handler: n
}) => this.editorView.dom.removeEventListener(e, n))
}
update(e, n) {
this.cursorPos != null && n.doc != e.state.doc && (this.cursorPos > e.state.doc.content.size ? this.setCursor(null) : this.updateOverlay())
}
setCursor(e) {
e != this.cursorPos && (this.cursorPos = e, e == null ? (this.element.parentNode.removeChild(this.element), this.element = null) : this.updateOverlay())
}
updateOverlay() {
let e = this.editorView.state.doc.resolve(this.cursorPos),
n = !e.parent.inlineContent,
s;
if (n) {
let i = e.nodeBefore,
c = e.nodeAfter;
if (i || c) {
let l = this.editorView.nodeDOM(this.cursorPos - (i ? i.nodeSize : 0));
if (l) {
let u = l.getBoundingClientRect(),
d = i ? u.bottom : u.top;
i && c && (d = (d + this.editorView.nodeDOM(this.cursorPos).getBoundingClientRect().top) / 2), s = {
left: u.left,
right: u.right,
top: d - this.width / 2,
bottom: d + this.width / 2
}
}
}
}
if (!s) {
let i = this.editorView.coordsAtPos(this.cursorPos);
s = {
left: i.left - this.width / 2,
right: i.left + this.width / 2,
top: i.top,
bottom: i.bottom
}
}
let a = this.editorView.dom.offsetParent;
this.element || (this.element = a.appendChild(document.createElement("div")), this.class && (this.element.className = this.class), this.element.style.cssText = "position: absolute; z-index: 50; pointer-events: none; background-color: " + this.color), this.element.classList.toggle("prosemirror-dropcursor-block", n), this.element.classList.toggle("prosemirror-dropcursor-inline", !n);
let o, r;
if (!a || a == document.body && getComputedStyle(a).position == "static") o = -pageXOffset, r = -pageYOffset;
else {
let i = a.getBoundingClientRect();
o = i.left - a.scrollLeft, r = i.top - a.scrollTop
}
this.element.style.left = s.left - o + "px", this.element.style.top = s.top - r + "px", this.element.style.width = s.right - s.left + "px", this.element.style.height = s.bottom - s.top + "px"
}
scheduleRemoval(e) {
clearTimeout(this.timeout), this.timeout = setTimeout(() => this.setCursor(null), e)
}
dragover(e) {
if (!this.editorView.editable) return;
let n = this.editorView.posAtCoords({
left: e.clientX,
top: e.clientY
}),
s = n && n.inside >= 0 && this.editorView.state.doc.nodeAt(n.inside),
a = s && s.type.spec.disableDropCursor,
o = typeof a == "function" ? a(this.editorView, n, e) : a;
if (n && !o) {
let r = n.pos;
if (this.editorView.dragging && this.editorView.dragging.slice && (r = wh(this.editorView.state.doc, r, this.editorView.dragging.slice), r == null)) return this.setCursor(null);
this.setCursor(r), this.scheduleRemoval(5e3)
}
}
dragend() {
this.scheduleRemoval(20)
}
drop() {
this.scheduleRemoval(20)
}
dragleave(e) {
(e.target == this.editorView.dom || !this.editorView.dom.contains(e.relatedTarget)) && this.setCursor(null)
}
}
const toe = Pe.create({
name: "dropCursor",
addOptions() {
return {
color: "currentColor",
width: 1,
class: void 0
}
},
addProseMirrorPlugins() {
return [Dm(this.options)]
}
});
class ye extends ea {
constructor(e) {
super(e, e)
}
map(e, n) {
let s = e.resolve(n.map(this.head));
return ye.valid(s) ? new ye(s) : ea.near(s)
}
content() {
return Ca.empty
}
eq(e) {
return e instanceof ye && e.head == this.head
}
toJSON() {
return {
type: "gapcursor",
pos: this.head
}
}
static fromJSON(e, n) {
if (typeof n.pos != "number") throw new RangeError("Invalid input for GapCursor.fromJSON");
return new ye(e.resolve(n.pos))
}
getBookmark() {
return new li(this.anchor)
}
static valid(e) {
let n = e.parent;
if (n.isTextblock || !noe(e) || !soe(e)) return !1;
let s = n.type.spec.allowGapCursor;
if (s != null) return s;
let a = n.contentMatchAt(e.index()).defaultType;
return a && a.isTextblock
}
static findGapCursorFrom(e, n, s = !1) {
e: for (;;) {
if (!s && ye.valid(e)) return e;
let a = e.pos,
o = null;
for (let r = e.depth;; r--) {
let i = e.node(r);
if (n > 0 ? e.indexAfter(r) < i.childCount : e.index(r) > 0) {
o = i.child(n > 0 ? e.indexAfter(r) : e.index(r) - 1);
break
} else if (r == 0) return null;
a += n;
let c = e.doc.resolve(a);
if (ye.valid(c)) return c
}
for (;;) {
let r = n > 0 ? o.firstChild : o.lastChild;
if (!r) {
if (o.isAtom && !o.isText && !Je.isSelectable(o)) {
e = e.doc.resolve(a + o.nodeSize * n), s = !1;
continue e
}
break
}
o = r, a += n;
let i = e.doc.resolve(a);
if (ye.valid(i)) return i
}
return null
}
}
}
ye.prototype.visible = !1;
ye.findFrom = ye.findGapCursorFrom;
ea.jsonID("gapcursor", ye);
class li {
constructor(e) {
this.pos = e
}
map(e) {
return new li(e.map(this.pos))
}
resolve(e) {
let n = e.resolve(this.pos);
return ye.valid(n) ? new ye(n) : ea.near(n)
}
}
function noe(t) {
for (let e = t.depth; e >= 0; e--) {
let n = t.index(e),
s = t.node(e);
if (n == 0) {
if (s.type.spec.isolating) return !0;
continue
}
for (let a = s.child(n - 1);; a = a.lastChild) {
if (a.childCount == 0 && !a.inlineContent || a.isAtom || a.type.spec.isolating) return !0;
if (a.inlineContent) return !1
}
}
return !0
}
function soe(t) {
for (let e = t.depth; e >= 0; e--) {
let n = t.indexAfter(e),
s = t.node(e);
if (n == s.childCount) {
if (s.type.spec.isolating) return !0;
continue
}
for (let a = s.child(n);; a = a.firstChild) {
if (a.childCount == 0 && !a.inlineContent || a.isAtom || a.type.spec.isolating) return !0;
if (a.inlineContent) return !1
}
}
return !0
}
function Im() {
return new _t({
props: {
decorations: ioe,
createSelectionBetween(t, e, n) {
return e.pos == n.pos && ye.valid(n) ? new ye(n) : null
},
handleClick: ooe,
handleKeyDown: aoe,
handleDOMEvents: {
beforeinput: roe
}
}
})
}
const aoe = kh({
ArrowLeft: Fs("horiz", -1),
ArrowRight: Fs("horiz", 1),
ArrowUp: Fs("vert", -1),
ArrowDown: Fs("vert", 1)
});
function Fs(t, e) {
const n = t == "vert" ? e > 0 ? "down" : "up" : e > 0 ? "right" : "left";
return function(s, a, o) {
let r = s.selection,
i = e > 0 ? r.$to : r.$from,
c = r.empty;
if (r instanceof Ee) {
if (!o.endOfTextblock(n) || i.depth == 0) return !1;
c = !1, i = s.doc.resolve(e > 0 ? i.after() : i.before())
}
let l = ye.findGapCursorFrom(i, e, c);
return l ? (a && a(s.tr.setSelection(new ye(l))), !0) : !1
}
}
function ooe(t, e, n) {
if (!t || !t.editable) return !1;
let s = t.state.doc.resolve(e);
if (!ye.valid(s)) return !1;
let a = t.posAtCoords({
left: n.clientX,
top: n.clientY
});
return a && a.inside > -1 && Je.isSelectable(t.state.doc.nodeAt(a.inside)) ? !1 : (t.dispatch(t.state.tr.setSelection(new ye(s))), !0)
}
function roe(t, e) {
if (e.inputType != "insertCompositionText" || !(t.state.selection instanceof ye)) return !1;
let {
$from: n
} = t.state.selection, s = n.parent.contentMatchAt(n.index()).findWrapping(t.state.schema.nodes.text);
if (!s) return !1;
let a = Kt.empty;
for (let r = s.length - 1; r >= 0; r--) a = Kt.from(s[r].createAndFill(null, a));
let o = t.state.tr.replace(n.pos, n.pos, new Ca(a, 0, 0));
return o.setSelection(Ee.near(o.doc.resolve(n.pos + 1))), t.dispatch(o), !1
}
function ioe(t) {
if (!(t.selection instanceof ye)) return null;
let e = document.createElement("div");
return e.className = "ProseMirror-gapcursor", du.create(t.doc, [jo.widget(t.selection.head, e, {
key: "gapcursor"
})])
}
const coe = Pe.create({
name: "gapCursor",
addProseMirrorPlugins() {
return [Im()]
},
extendNodeSchema(t) {
var e;
const n = {
name: t.name,
options: t.options,
storage: t.storage
};
return {
allowGapCursor: (e = _h(Ch(t, "allowGapCursor", n))) !== null && e !== void 0 ? e : null
}
}
}),
loe = Pe.create({
name: "starterKit",
addExtensions() {
var t, e, n, s, a, o, r, i, c, l, u, d, m, f, h, g, b, x;
const v = [];
return this.options.blockquote !== !1 && v.push(kr.configure((t = this.options) === null || t === void 0 ? void 0 : t.blockquote)), this.options.bold !== !1 && v.push(Ou.configure((e = this.options) === null || e === void 0 ? void 0 : e.bold)), this.options.bulletList !== !1 && v.push(_r.configure((n = this.options) === null || n === void 0 ? void 0 : n.bulletList)), this.options.code !== !1 && v.push(Lu.configure((s = this.options) === null || s === void 0 ? void 0 : s.code)), this.options.codeBlock !== !1 && v.push(Ru.configure((a = this.options) === null || a === void 0 ? void 0 : a.codeBlock)), this.options.document !== !1 && v.push(mu.configure((o = this.options) === null || o === void 0 ? void 0 : o.document)), this.options.dropcursor !== !1 && v.push(toe.configure((r = this.options) === null || r === void 0 ? void 0 : r.dropcursor)), this.options.gapcursor !== !1 && v.push(coe.configure((i = this.options) === null || i === void 0 ? void 0 : i.gapcursor)), this.options.hardBreak !== !1 && v.push(qu.configure((c = this.options) === null || c === void 0 ? void 0 : c.hardBreak)), this.options.heading !== !1 && v.push(hp.configure((l = this.options) === null || l === void 0 ? void 0 : l.heading)), this.options.history !== !1 && v.push(xu.configure((u = this.options) === null || u === void 0 ? void 0 : u.history)), this.options.horizontalRule !== !1 && v.push(Pr.configure((d = this.options) === null || d === void 0 ? void 0 : d.horizontalRule)), this.options.italic !== !1 && v.push(Pu.configure((m = this.options) === null || m === void 0 ? void 0 : m.italic)), this.options.listItem !== !1 && v.push(Bu.configure((f = this.options) === null || f === void 0 ? void 0 : f.listItem)), this.options.orderedList !== !1 && v.push(Cr.configure((h = this.options) === null || h === void 0 ? void 0 : h.orderedList)), this.options.paragraph !== !1 && v.push(fu.configure((g = this.options) === null || g === void 0 ? void 0 : g.paragraph)), this.options.strike !== !1 && v.push(zu.configure((b = this.options) === null || b === void 0 ? void 0 : b.strike)), this.options.text !== !1 && v.push(hu.configure((x = this.options) === null || x === void 0 ? void 0 : x.text)), v
}
}),
Nm = {
attrs: {
number: {
default: 1
}
},
content: "block+",
atom: !1,
selectable: !1,
isolating: !1,
defining: !0,
draggable: !1,
group: "block",
parseDOM: [{
tag: ".footnote"
}],
toDOM: t => {
const {
number: e
} = t.attrs;
return ["div", {
class: "footnote",
"data-component-name": "FootnoteToDOM"
},
["a", {
id: `footnote-${e}`,
href: `#footnote-anchor-${e}`,
class: "footnote-number",
contenteditable: !1,
target: "_self"
}, `${e}`],
["div", {
class: "footnote-content"
}, 0]
]
},
toDOMStatic: t => {
const {
number: e
} = t.attrs;
return ["div", {
class: "footnote",
"data-component-name": "FootnoteToDOMStatic"
},
["span", {
class: "footnote-number"
}, `${e}`],
["div", {
class: "footnote-content"
}, 0]
]
}
},
uoe = F({
name: "footnote",
nodeSpec: Nm,
addCommands() {
return {
insertFootnote: () => ({
state: t,
editor: e,
dispatch: n
}) => {
if (!xm(t)) return !1;
const {
schema: s
} = e, a = s.nodes.footnote.create({
number: 1
}, s.nodes.paragraph.create()), o = s.nodes.footnoteAnchor.create({
number: 1
}), r = t.tr, i = vm(r, s);
if (r.replaceWith(i, i, a), r.replaceSelectionWith(o), oi(r, s), n) {
try {
r.setSelection(Ee.create(r.doc, i + 2, i + 2)).scrollIntoView()
} catch (c) {
return console.error("could not set footnote text selection"), !1
}
n(r)
}
return !0
}
}
}
}),
Mm = {
attrs: {
number: {
default: 1
}
},
atom: !0,
selectable: !0,
isolating: !1,
defining: !0,
draggable: !0,
inline: !0,
group: "inline",
parseDOM: [{
tag: ".footnote-anchor"
}],
toDOM: t => {
const {
number: e
} = t.attrs;
return ["a", {
class: "footnote-anchor",
"data-component-name": "FootnoteAnchorToDOM",
id: `footnote-anchor-${e}`,
href: `#footnote-${e}`,
target: "_self"
}, `${e}`]
},
toDOMStatic: t => {
const {
number: e
} = t.attrs;
return ["span", {
class: "footnote-anchor-email",
"data-component-name": "FootnoteAnchorToDOMStatic"
}, `${Wf(e)}`]
}
},
poe = F({
name: "footnoteAnchor",
nodeSpec: Mm
}),
Om = {
content: "block+",
group: "block",
toDOM: () => ["div", {
"data-component-name": "FragmentNodeToDOM"
}, 0]
},
doe = F({
name: "fragmentNode",
nodeSpec: Om
}),
moe = Pr.extend({
draggable: !0
}),
Oo = 550,
Lm = {
attrs: {
src: {
default: ""
},
height: {
default: null
},
width: {
default: null
},
alt: {
default: null
},
title: {
default: null
}
},
inline: !0,
group: "inline",
draggable: !0,
toDOM: t => {
const e = q(t.attrs.src, Oo * 2);
return ["img", {
style: t.attrs.height && t.attrs.width ? `max-width:${t.attrs.width}px;max-height:${t.attrs.height}px` : "",
src: e,
alt: t.attrs.alt,
title: t.attrs.title,
"data-component-name": "ImageToDOM"
}]
},
toDOMStatic: t => {
if (t.attrs.height && t.attrs.width) {
const n = Math.min(t.attrs.width, Oo),
s = q(t.attrs.src, n);
return ["table", {
class: "image-wrapper",
width: "100%",
border: "0",
cellSpacing: "0",
cellPadding: "0",
"data-component-name": "ImageToDOMStatic"
},
["tr", {},
["td"],
["td", {
class: "content",
width: n
}],
["td"]
],
["tr", {},
["td"],
["td", {
align: "left",
class: "content",
width: n
},
["img", {
src: s,
alt: t.attrs.alt,
title: t.attrs.title
}]
],
["td"]
]
]
}
return ["img", {
src: q(t.attrs.src, Oo),
alt: t.attrs.alt,
title: t.attrs.title
}]
}
},
foe = F({
name: "image",
nodeSpec: Lm
}),
Rm = ({
node: t,
editor: e
}) => p(wt, {
className: "image-gallery-embed",
"data-drag-handle": ""
}, p(Yh, {
node: t,
editor: e
})),
kn = "image-gallery-embed",
Ys = {
attrs: {
gallery: {
default: {}
},
isEditorNode: {
default: !1
}
},
group: "block",
draggable: !0,
atom: !0,
selectable: !0,
isolating: !0,
defining: !0,
parseDOM: [{
tag: kn,
getAttrs: re
}],
toDOM: t => {
if (typeof window != "undefined" && t.attrs.isEditorNode) try {
t.attrs.isEditor = !0;
const e = document.createElement("div");
return e.className = kn, e.setAttribute("data-attrs", JSON.stringify(t.attrs)), Fe(p(Rm, {
node: S({}, t)
}), e), e
} catch (e) {
return console.error("Error rendering ImageGalleryComponent", e), Oe({
msg: null,
node: t,
err: e,
group: "block"
})
}
return hoe(t)
},
toDOMStatic: t => ["div", {
class: kn,
"data-attrs": JSON.stringify(S({
isEmail: !0
}, t.attrs))
}]
},
hoe = t => ["div", {
class: kn,
"data-attrs": JSON.stringify(t.attrs)
}],
goe = Qt.create({
name: "imageGallery",
group: Ys.group,
draggable: !0,
addAttributes() {
return {
gallery: {
default: {}
},
isEditorNode: {
default: !0
}
}
},
parseHTML() {
return [{
tag: kn
}]
},
renderHTML({
HTMLAttributes: t,
node: e
}) {
return this.options.isStatic && Ys.toDOMStatic ? Ys.toDOMStatic(e) : ["div", S({
class: kn
}, en(t))]
},
addNodeView() {
return kt(Rm)
},
addCommands() {
return {
insertImageGallery: t => ({
commands: e
}) => e.insertContent({
type: this.name,
attrs: t
}),
updateImageGallery: t => ({
commands: e
}) => e.updateAttributes(this.name, t)
}
}
}),
boe = {
normal: "large",
large: "full",
full: "normal"
};
let pn;
const voe = ({
alt: t,
onUpdateAlt: e
}) => {
const {
iString: n
} = ue();
return p(Y, {
gap: 8,
justifyContent: "center",
className: Me.mediaControlTextEditor
}, p(Y, {
gap: 8
}, p(X.B3, {
translated: !0,
font: "meta",
color: "secondary"
}, "Alt text"), p(rs, {
value: t,
onChange: s => e(s.currentTarget.value),
placeholder: n("Describe images…")
})))
},
xoe = ({
href: t,
onSave: e
}) => {
const [n, s] = z(t || ""), {
iString: a
} = ue(), o = () => {
const r = kg.find(n, "url");
r.length ? e(r[0].href.replace("http:", "https:")) : alert(a("Invalid url"))
};
return p(Y, {
gap: 8,
justifyContent: "center",
className: Me.mediaControlTextEditor
}, p(Y, {
gap: 4
}, p(X.B3, {
translated: !0,
font: "meta",
color: "secondary"
}, "URL"), p(rs, {
placeholder: "Add image link…",
value: n,
onChange: r => s(r.currentTarget.value)
})), p(ne, {
gap: 8
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment