@epic-web/workshop-app 4.22.1 → 4.22.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@epic-web/workshop-app",
3
- "version": "4.22.1",
3
+ "version": "4.22.3",
4
4
  "sideEffects": false,
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -44,8 +44,8 @@
44
44
  "@epic-web/invariant": "^1.0.0",
45
45
  "@epic-web/remember": "^1.0.2",
46
46
  "@epic-web/restore-scroll": "^1.1.1",
47
- "@epic-web/workshop-presence": "4.22.1",
48
- "@epic-web/workshop-utils": "4.22.1",
47
+ "@epic-web/workshop-presence": "4.22.3",
48
+ "@epic-web/workshop-utils": "4.22.3",
49
49
  "@mdx-js/mdx": "^3.0.1",
50
50
  "@mux/mux-player-react": "^2.6.0",
51
51
  "@nasa-gcn/remix-seo": "^2.0.1",
@@ -1,4 +0,0 @@
1
- import{j as n,n as S,l as wt,r as m}from"./index-1cKOJFpX.js";import{I as g,b as V}from"./misc-ENVX3CWf.js";import{R as qt,A as yt}from"./accordion-BroSqIct.js";import{z as l}from"./request-info-CEhUGODY.js";import{u as xt}from"./index-6GyYWV9G.js";import{u as Lt}from"./use-event-source-A_0lEOPX.js";import{S as C}from"./tooltip-BiHTe_7F.js";import{a as B}from"./components-CME-nGId.js";import{a as G,P as Et}from"./set-playground-BXHckvUG.js";function Tt({playgroundAppName:t,problemAppName:o,isUpToDate:s,allApps:c,children:r}){const e=t===o,i=e&&s?n.jsx(g,{size:"xl",name:"Linked"}):n.jsx(g,{size:"xl",name:"Unlinked",className:"animate-pulse text-foreground-danger"});let a="Click to reset Playground.";return s||(a="Playground is out of date. Click to reset Playground."),e||(a="Playground is not set to the right app. Click to set Playground."),n.jsxs("div",{className:"flex h-full w-full flex-col justify-between",children:[n.jsxs("div",{className:"flex h-14 flex-shrink-0 items-center justify-start gap-2 border-b px-3",children:[n.jsx("div",{className:"display-alt-up",children:o?n.jsx(G,{appName:o,tooltipText:a,children:i}):n.jsx(C,{content:"No problem app available for this step",children:n.jsx("div",{children:n.jsx(g,{name:"Question"})})})}),n.jsx("div",{className:"display-alt-down",children:t?n.jsx(G,{appName:t,reset:!0,tooltipText:"Reset Playground",children:n.jsx("div",{className:"flex h-7 w-7 items-center justify-center",children:n.jsx(g,{name:"Refresh"})})}):n.jsx("div",{className:"h-7 w-7"})}),n.jsx(Et,{allApps:c,playgroundAppName:t})]}),n.jsx("div",{className:"flex h-full flex-1 flex-grow items-center justify-center",children:r})]})}var K={},L={};const St="Á",Dt="á",At="Ă",kt="ă",Nt="∾",Rt="∿",jt="∾̳",Ct="Â",Ut="â",$t="´",Ht="А",Vt="а",Bt="Æ",Mt="æ",Ot="⁡",Pt="𝔄",Ft="𝔞",Gt="À",It="à",_t="ℵ",zt="ℵ",Xt="Α",Jt="α",Yt="Ā",Zt="ā",Qt="⨿",Kt="&",Wt="&",to="⩕",oo="⩓",so="∧",no="⩜",co="⩘",ro="⩚",eo="∠",ao="⦤",lo="∠",io="⦨",uo="⦩",po="⦪",fo="⦫",go="⦬",mo="⦭",ho="⦮",bo="⦯",vo="∡",wo="∟",qo="⊾",yo="⦝",xo="∢",Lo="Å",Eo="⍼",To="Ą",So="ą",Do="𝔸",Ao="𝕒",ko="⩯",No="≈",Ro="⩰",jo="≊",Co="≋",Uo="'",$o="⁡",Ho="≈",Vo="≊",Bo="Å",Mo="å",Oo="𝒜",Po="𝒶",Fo="≔",Go="*",Io="≈",_o="≍",zo="Ã",Xo="ã",Jo="Ä",Yo="ä",Zo="∳",Qo="⨑",Ko="≌",Wo="϶",ts="‵",os="∽",ss="⋍",ns="∖",cs="⫧",rs="⊽",es="⌅",as="⌆",ls="⌅",is="⎵",us="⎶",ps="≌",ds="Б",fs="б",gs="„",ms="∵",hs="∵",bs="∵",vs="⦰",ws="϶",qs="ℬ",ys="ℬ",xs="Β",Ls="β",Es="ℶ",Ts="≬",Ss="𝔅",Ds="𝔟",As="⋂",ks="◯",Ns="⋃",Rs="⨀",js="⨁",Cs="⨂",Us="⨆",$s="★",Hs="▽",Vs="△",Bs="⨄",Ms="⋁",Os="⋀",Ps="⤍",Fs="⧫",Gs="▪",Is="▴",_s="▾",zs="◂",Xs="▸",Js="␣",Ys="▒",Zs="░",Qs="▓",Ks="█",Ws="=⃥",tn="≡⃥",on="⫭",sn="⌐",nn="𝔹",cn="𝕓",rn="⊥",en="⊥",an="⋈",ln="⧉",un="┐",pn="╕",dn="╖",fn="╗",gn="┌",mn="╒",hn="╓",bn="╔",vn="─",wn="═",qn="┬",yn="╤",xn="╥",Ln="╦",En="┴",Tn="╧",Sn="╨",Dn="╩",An="⊟",kn="⊞",Nn="⊠",Rn="┘",jn="╛",Cn="╜",Un="╝",$n="└",Hn="╘",Vn="╙",Bn="╚",Mn="│",On="║",Pn="┼",Fn="╪",Gn="╫",In="╬",_n="┤",zn="╡",Xn="╢",Jn="╣",Yn="├",Zn="╞",Qn="╟",Kn="╠",Wn="‵",tc="˘",oc="˘",sc="¦",nc="𝒷",cc="ℬ",rc="⁏",ec="∽",ac="⋍",lc="⧅",ic="\\",uc="⟈",pc="•",dc="•",fc="≎",gc="⪮",mc="≏",hc="≎",bc="≏",vc="Ć",wc="ć",qc="⩄",yc="⩉",xc="⩋",Lc="∩",Ec="⋒",Tc="⩇",Sc="⩀",Dc="ⅅ",Ac="∩︀",kc="⁁",Nc="ˇ",Rc="ℭ",jc="⩍",Cc="Č",Uc="č",$c="Ç",Hc="ç",Vc="Ĉ",Bc="ĉ",Mc="∰",Oc="⩌",Pc="⩐",Fc="Ċ",Gc="ċ",Ic="¸",_c="¸",zc="⦲",Xc="¢",Jc="·",Yc="·",Zc="𝔠",Qc="ℭ",Kc="Ч",Wc="ч",tr="✓",or="✓",sr="Χ",nr="χ",cr="ˆ",rr="≗",er="↺",ar="↻",lr="⊛",ir="⊚",ur="⊝",pr="⊙",dr="®",fr="Ⓢ",gr="⊖",mr="⊕",hr="⊗",br="○",vr="⧃",wr="≗",qr="⨐",yr="⫯",xr="⧂",Lr="∲",Er="”",Tr="’",Sr="♣",Dr="♣",Ar=":",kr="∷",Nr="⩴",Rr="≔",jr="≔",Cr=",",Ur="@",$r="∁",Hr="∘",Vr="∁",Br="ℂ",Mr="≅",Or="⩭",Pr="≡",Fr="∮",Gr="∯",Ir="∮",_r="𝕔",zr="ℂ",Xr="∐",Jr="∐",Yr="©",Zr="©",Qr="℗",Kr="∳",Wr="↵",te="✗",oe="⨯",se="𝒞",ne="𝒸",ce="⫏",re="⫑",ee="⫐",ae="⫒",le="⋯",ie="⤸",ue="⤵",pe="⋞",de="⋟",fe="↶",ge="⤽",me="⩈",he="⩆",be="≍",ve="∪",we="⋓",qe="⩊",ye="⊍",xe="⩅",Le="∪︀",Ee="↷",Te="⤼",Se="⋞",De="⋟",Ae="⋎",ke="⋏",Ne="¤",Re="↶",je="↷",Ce="⋎",Ue="⋏",$e="∲",He="∱",Ve="⌭",Be="†",Me="‡",Oe="ℸ",Pe="↓",Fe="↡",Ge="⇓",Ie="‐",_e="⫤",ze="⊣",Xe="⤏",Je="˝",Ye="Ď",Ze="ď",Qe="Д",Ke="д",We="‡",ta="⇊",oa="ⅅ",sa="ⅆ",na="⤑",ca="⩷",ra="°",ea="∇",aa="Δ",la="δ",ia="⦱",ua="⥿",pa="𝔇",da="𝔡",fa="⥥",ga="⇃",ma="⇂",ha="´",ba="˙",va="˝",wa="`",qa="˜",ya="⋄",xa="⋄",La="⋄",Ea="♦",Ta="♦",Sa="¨",Da="ⅆ",Aa="ϝ",ka="⋲",Na="÷",Ra="÷",ja="⋇",Ca="⋇",Ua="Ђ",$a="ђ",Ha="⌞",Va="⌍",Ba="$",Ma="𝔻",Oa="𝕕",Pa="¨",Fa="˙",Ga="⃜",Ia="≐",_a="≑",za="≐",Xa="∸",Ja="∔",Ya="⊡",Za="⌆",Qa="∯",Ka="¨",Wa="⇓",tl="⇐",ol="⇔",sl="⫤",nl="⟸",cl="⟺",rl="⟹",el="⇒",al="⊨",ll="⇑",il="⇕",ul="∥",pl="⤓",dl="↓",fl="↓",gl="⇓",ml="⇵",hl="̑",bl="⇊",vl="⇃",wl="⇂",ql="⥐",yl="⥞",xl="⥖",Ll="↽",El="⥟",Tl="⥗",Sl="⇁",Dl="↧",Al="⊤",kl="⤐",Nl="⌟",Rl="⌌",jl="𝒟",Cl="𝒹",Ul="Ѕ",$l="ѕ",Hl="⧶",Vl="Đ",Bl="đ",Ml="⋱",Ol="▿",Pl="▾",Fl="⇵",Gl="⥯",Il="⦦",_l="Џ",zl="џ",Xl="⟿",Jl="É",Yl="é",Zl="⩮",Ql="Ě",Kl="ě",Wl="Ê",ti="ê",oi="≖",si="≕",ni="Э",ci="э",ri="⩷",ei="Ė",ai="ė",li="≑",ii="ⅇ",ui="≒",pi="𝔈",di="𝔢",fi="⪚",gi="È",mi="è",hi="⪖",bi="⪘",vi="⪙",wi="∈",qi="⏧",yi="ℓ",xi="⪕",Li="⪗",Ei="Ē",Ti="ē",Si="∅",Di="∅",Ai="◻",ki="∅",Ni="▫",Ri=" ",ji=" ",Ci=" ",Ui="Ŋ",$i="ŋ",Hi=" ",Vi="Ę",Bi="ę",Mi="𝔼",Oi="𝕖",Pi="⋕",Fi="⧣",Gi="⩱",Ii="ε",_i="Ε",zi="ε",Xi="ϵ",Ji="≖",Yi="≕",Zi="≂",Qi="⪖",Ki="⪕",Wi="⩵",tu="=",ou="≂",su="≟",nu="⇌",cu="≡",ru="⩸",eu="⧥",au="⥱",lu="≓",iu="ℯ",uu="ℰ",pu="≐",du="⩳",fu="≂",gu="Η",mu="η",hu="Ð",bu="ð",vu="Ë",wu="ë",qu="€",yu="!",xu="∃",Lu="∃",Eu="ℰ",Tu="ⅇ",Su="ⅇ",Du="≒",Au="Ф",ku="ф",Nu="♀",Ru="ffi",ju="ff",Cu="ffl",Uu="𝔉",$u="𝔣",Hu="fi",Vu="◼",Bu="▪",Mu="fj",Ou="♭",Pu="fl",Fu="▱",Gu="ƒ",Iu="𝔽",_u="𝕗",zu="∀",Xu="∀",Ju="⋔",Yu="⫙",Zu="ℱ",Qu="⨍",Ku="½",Wu="⅓",tp="¼",op="⅕",sp="⅙",np="⅛",cp="⅔",rp="⅖",ep="¾",ap="⅗",lp="⅜",ip="⅘",up="⅚",pp="⅝",dp="⅞",fp="⁄",gp="⌢",mp="𝒻",hp="ℱ",bp="ǵ",vp="Γ",wp="γ",qp="Ϝ",yp="ϝ",xp="⪆",Lp="Ğ",Ep="ğ",Tp="Ģ",Sp="Ĝ",Dp="ĝ",Ap="Г",kp="г",Np="Ġ",Rp="ġ",jp="≥",Cp="≧",Up="⪌",$p="⋛",Hp="≥",Vp="≧",Bp="⩾",Mp="⪩",Op="⩾",Pp="⪀",Fp="⪂",Gp="⪄",Ip="⋛︀",_p="⪔",zp="𝔊",Xp="𝔤",Jp="≫",Yp="⋙",Zp="⋙",Qp="ℷ",Kp="Ѓ",Wp="ѓ",td="⪥",od="≷",sd="⪒",nd="⪤",cd="⪊",rd="⪊",ed="⪈",ad="≩",ld="⪈",id="≩",ud="⋧",pd="𝔾",dd="𝕘",fd="`",gd="≥",md="⋛",hd="≧",bd="⪢",vd="≷",wd="⩾",qd="≳",yd="𝒢",xd="ℊ",Ld="≳",Ed="⪎",Td="⪐",Sd="⪧",Dd="⩺",Ad=">",kd=">",Nd="≫",Rd="⋗",jd="⦕",Cd="⩼",Ud="⪆",$d="⥸",Hd="⋗",Vd="⋛",Bd="⪌",Md="≷",Od="≳",Pd="≩︀",Fd="≩︀",Gd="ˇ",Id=" ",_d="½",zd="ℋ",Xd="Ъ",Jd="ъ",Yd="⥈",Zd="↔",Qd="⇔",Kd="↭",Wd="^",tf="ℏ",of="Ĥ",sf="ĥ",nf="♥",cf="♥",rf="…",ef="⊹",af="𝔥",lf="ℌ",uf="ℋ",pf="⤥",df="⤦",ff="⇿",gf="∻",mf="↩",hf="↪",bf="𝕙",vf="ℍ",wf="―",qf="─",yf="𝒽",xf="ℋ",Lf="ℏ",Ef="Ħ",Tf="ħ",Sf="≎",Df="≏",Af="⁃",kf="‐",Nf="Í",Rf="í",jf="⁣",Cf="Î",Uf="î",$f="И",Hf="и",Vf="İ",Bf="Е",Mf="е",Of="¡",Pf="⇔",Ff="𝔦",Gf="ℑ",If="Ì",_f="ì",zf="ⅈ",Xf="⨌",Jf="∭",Yf="⧜",Zf="℩",Qf="IJ",Kf="ij",Wf="Ī",tg="ī",og="ℑ",sg="ⅈ",ng="ℐ",cg="ℑ",rg="ı",eg="ℑ",ag="⊷",lg="Ƶ",ig="⇒",ug="℅",pg="∞",dg="⧝",fg="ı",gg="⊺",mg="∫",hg="∬",bg="ℤ",vg="∫",wg="⊺",qg="⋂",yg="⨗",xg="⨼",Lg="⁣",Eg="⁢",Tg="Ё",Sg="ё",Dg="Į",Ag="į",kg="𝕀",Ng="𝕚",Rg="Ι",jg="ι",Cg="⨼",Ug="¿",$g="𝒾",Hg="ℐ",Vg="∈",Bg="⋵",Mg="⋹",Og="⋴",Pg="⋳",Fg="∈",Gg="⁢",Ig="Ĩ",_g="ĩ",zg="І",Xg="і",Jg="Ï",Yg="ï",Zg="Ĵ",Qg="ĵ",Kg="Й",Wg="й",tm="𝔍",om="𝔧",sm="ȷ",nm="𝕁",cm="𝕛",rm="𝒥",em="𝒿",am="Ј",lm="ј",im="Є",um="є",pm="Κ",dm="κ",fm="ϰ",gm="Ķ",mm="ķ",hm="К",bm="к",vm="𝔎",wm="𝔨",qm="ĸ",ym="Х",xm="х",Lm="Ќ",Em="ќ",Tm="𝕂",Sm="𝕜",Dm="𝒦",Am="𝓀",km="⇚",Nm="Ĺ",Rm="ĺ",jm="⦴",Cm="ℒ",Um="Λ",$m="λ",Hm="⟨",Vm="⟪",Bm="⦑",Mm="⟨",Om="⪅",Pm="ℒ",Fm="«",Gm="⇤",Im="⤟",_m="←",zm="↞",Xm="⇐",Jm="⤝",Ym="↩",Zm="↫",Qm="⤹",Km="⥳",Wm="↢",th="⤙",oh="⤛",sh="⪫",nh="⪭",ch="⪭︀",rh="⤌",eh="⤎",ah="❲",lh="{",ih="[",uh="⦋",ph="⦏",dh="⦍",fh="Ľ",gh="ľ",mh="Ļ",hh="ļ",bh="⌈",vh="{",wh="Л",qh="л",yh="⤶",xh="“",Lh="„",Eh="⥧",Th="⥋",Sh="↲",Dh="≤",Ah="≦",kh="⟨",Nh="⇤",Rh="←",jh="←",Ch="⇐",Uh="⇆",$h="↢",Hh="⌈",Vh="⟦",Bh="⥡",Mh="⥙",Oh="⇃",Ph="⌊",Fh="↽",Gh="↼",Ih="⇇",_h="↔",zh="↔",Xh="⇔",Jh="⇆",Yh="⇋",Zh="↭",Qh="⥎",Kh="↤",Wh="⊣",tb="⥚",ob="⋋",sb="⧏",nb="⊲",cb="⊴",rb="⥑",eb="⥠",ab="⥘",lb="↿",ib="⥒",ub="↼",pb="⪋",db="⋚",fb="≤",gb="≦",mb="⩽",hb="⪨",bb="⩽",vb="⩿",wb="⪁",qb="⪃",yb="⋚︀",xb="⪓",Lb="⪅",Eb="⋖",Tb="⋚",Sb="⪋",Db="⋚",Ab="≦",kb="≶",Nb="≶",Rb="⪡",jb="≲",Cb="⩽",Ub="≲",$b="⥼",Hb="⌊",Vb="𝔏",Bb="𝔩",Mb="≶",Ob="⪑",Pb="⥢",Fb="↽",Gb="↼",Ib="⥪",_b="▄",zb="Љ",Xb="љ",Jb="⇇",Yb="≪",Zb="⋘",Qb="⌞",Kb="⇚",Wb="⥫",tv="◺",ov="Ŀ",sv="ŀ",nv="⎰",cv="⎰",rv="⪉",ev="⪉",av="⪇",lv="≨",iv="⪇",uv="≨",pv="⋦",dv="⟬",fv="⇽",gv="⟦",mv="⟵",hv="⟵",bv="⟸",vv="⟷",wv="⟷",qv="⟺",yv="⟼",xv="⟶",Lv="⟶",Ev="⟹",Tv="↫",Sv="↬",Dv="⦅",Av="𝕃",kv="𝕝",Nv="⨭",Rv="⨴",jv="∗",Cv="_",Uv="↙",$v="↘",Hv="◊",Vv="◊",Bv="⧫",Mv="(",Ov="⦓",Pv="⇆",Fv="⌟",Gv="⇋",Iv="⥭",_v="‎",zv="⊿",Xv="‹",Jv="𝓁",Yv="ℒ",Zv="↰",Qv="↰",Kv="≲",Wv="⪍",tw="⪏",ow="[",sw="‘",nw="‚",cw="Ł",rw="ł",ew="⪦",aw="⩹",lw="<",iw="<",uw="≪",pw="⋖",dw="⋋",fw="⋉",gw="⥶",mw="⩻",hw="◃",bw="⊴",vw="◂",ww="⦖",qw="⥊",yw="⥦",xw="≨︀",Lw="≨︀",Ew="¯",Tw="♂",Sw="✠",Dw="✠",Aw="↦",kw="↦",Nw="↧",Rw="↤",jw="↥",Cw="▮",Uw="⨩",$w="М",Hw="м",Vw="—",Bw="∺",Mw="∡",Ow=" ",Pw="ℳ",Fw="𝔐",Gw="𝔪",Iw="℧",_w="µ",zw="*",Xw="⫰",Jw="∣",Yw="·",Zw="⊟",Qw="−",Kw="∸",Ww="⨪",tq="∓",oq="⫛",sq="…",nq="∓",cq="⊧",rq="𝕄",eq="𝕞",aq="∓",lq="𝓂",iq="ℳ",uq="∾",pq="Μ",dq="μ",fq="⊸",gq="⊸",mq="∇",hq="Ń",bq="ń",vq="∠⃒",wq="≉",qq="⩰̸",yq="≋̸",xq="ʼn",Lq="≉",Eq="♮",Tq="ℕ",Sq="♮",Dq=" ",Aq="≎̸",kq="≏̸",Nq="⩃",Rq="Ň",jq="ň",Cq="Ņ",Uq="ņ",$q="≇",Hq="⩭̸",Vq="⩂",Bq="Н",Mq="н",Oq="–",Pq="⤤",Fq="↗",Gq="⇗",Iq="↗",_q="≠",zq="≐̸",Xq="​",Jq="​",Yq="​",Zq="​",Qq="≢",Kq="⤨",Wq="≂̸",ty="≫",oy="≪",sy=`
2
- `,ny="∄",cy="∄",ry="𝔑",ey="𝔫",ay="≧̸",ly="≱",iy="≱",uy="≧̸",py="⩾̸",dy="⩾̸",fy="⋙̸",gy="≵",my="≫⃒",hy="≯",by="≯",vy="≫̸",wy="↮",qy="⇎",yy="⫲",xy="∋",Ly="⋼",Ey="⋺",Ty="∋",Sy="Њ",Dy="њ",Ay="↚",ky="⇍",Ny="‥",Ry="≦̸",jy="≰",Cy="↚",Uy="⇍",$y="↮",Hy="⇎",Vy="≰",By="≦̸",My="⩽̸",Oy="⩽̸",Py="≮",Fy="⋘̸",Gy="≴",Iy="≪⃒",_y="≮",zy="⋪",Xy="⋬",Jy="≪̸",Yy="∤",Zy="⁠",Qy=" ",Ky="𝕟",Wy="ℕ",tx="⫬",ox="¬",sx="≢",nx="≭",cx="∦",rx="∉",ex="≠",ax="≂̸",lx="∄",ix="≯",ux="≱",px="≧̸",dx="≫̸",fx="≹",gx="⩾̸",mx="≵",hx="≎̸",bx="≏̸",vx="∉",wx="⋵̸",qx="⋹̸",yx="∉",xx="⋷",Lx="⋶",Ex="⧏̸",Tx="⋪",Sx="⋬",Dx="≮",Ax="≰",kx="≸",Nx="≪̸",Rx="⩽̸",jx="≴",Cx="⪢̸",Ux="⪡̸",$x="∌",Hx="∌",Vx="⋾",Bx="⋽",Mx="⊀",Ox="⪯̸",Px="⋠",Fx="∌",Gx="⧐̸",Ix="⋫",_x="⋭",zx="⊏̸",Xx="⋢",Jx="⊐̸",Yx="⋣",Zx="⊂⃒",Qx="⊈",Kx="⊁",Wx="⪰̸",tL="⋡",oL="≿̸",sL="⊃⃒",nL="⊉",cL="≁",rL="≄",eL="≇",aL="≉",lL="∤",iL="∦",uL="∦",pL="⫽⃥",dL="∂̸",fL="⨔",gL="⊀",mL="⋠",hL="⊀",bL="⪯̸",vL="⪯̸",wL="⤳̸",qL="↛",yL="⇏",xL="↝̸",LL="↛",EL="⇏",TL="⋫",SL="⋭",DL="⊁",AL="⋡",kL="⪰̸",NL="𝒩",RL="𝓃",jL="∤",CL="∦",UL="≁",$L="≄",HL="≄",VL="∤",BL="∦",ML="⋢",OL="⋣",PL="⊄",FL="⫅̸",GL="⊈",IL="⊂⃒",_L="⊈",zL="⫅̸",XL="⊁",JL="⪰̸",YL="⊅",ZL="⫆̸",QL="⊉",KL="⊃⃒",WL="⊉",tE="⫆̸",oE="≹",sE="Ñ",nE="ñ",cE="≸",rE="⋪",eE="⋬",aE="⋫",lE="⋭",iE="Ν",uE="ν",pE="#",dE="№",fE=" ",gE="≍⃒",mE="⊬",hE="⊭",bE="⊮",vE="⊯",wE="≥⃒",qE=">⃒",yE="⤄",xE="⧞",LE="⤂",EE="≤⃒",TE="<⃒",SE="⊴⃒",DE="⤃",AE="⊵⃒",kE="∼⃒",NE="⤣",RE="↖",jE="⇖",CE="↖",UE="⤧",$E="Ó",HE="ó",VE="⊛",BE="Ô",ME="ô",OE="⊚",PE="О",FE="о",GE="⊝",IE="Ő",_E="ő",zE="⨸",XE="⊙",JE="⦼",YE="Œ",ZE="œ",QE="⦿",KE="𝔒",WE="𝔬",tT="˛",oT="Ò",sT="ò",nT="⧁",cT="⦵",rT="Ω",eT="∮",aT="↺",lT="⦾",iT="⦻",uT="‾",pT="⧀",dT="Ō",fT="ō",gT="Ω",mT="ω",hT="Ο",bT="ο",vT="⦶",wT="⊖",qT="𝕆",yT="𝕠",xT="⦷",LT="“",ET="‘",TT="⦹",ST="⊕",DT="↻",AT="⩔",kT="∨",NT="⩝",RT="ℴ",jT="ℴ",CT="ª",UT="º",$T="⊶",HT="⩖",VT="⩗",BT="⩛",MT="Ⓢ",OT="𝒪",PT="ℴ",FT="Ø",GT="ø",IT="⊘",_T="Õ",zT="õ",XT="⨶",JT="⨷",YT="⊗",ZT="Ö",QT="ö",KT="⌽",WT="‾",t1="⏞",o1="⎴",s1="⏜",n1="¶",c1="∥",r1="∥",e1="⫳",a1="⫽",l1="∂",i1="∂",u1="П",p1="п",d1="%",f1=".",g1="‰",m1="⊥",h1="‱",b1="𝔓",v1="𝔭",w1="Φ",q1="φ",y1="ϕ",x1="ℳ",L1="☎",E1="Π",T1="π",S1="⋔",D1="ϖ",A1="ℏ",k1="ℎ",N1="ℏ",R1="⨣",j1="⊞",C1="⨢",U1="+",$1="∔",H1="⨥",V1="⩲",B1="±",M1="±",O1="⨦",P1="⨧",F1="±",G1="ℌ",I1="⨕",_1="𝕡",z1="ℙ",X1="£",J1="⪷",Y1="⪻",Z1="≺",Q1="≼",K1="⪷",W1="≺",tS="≼",oS="≺",sS="⪯",nS="≼",cS="≾",rS="⪯",eS="⪹",aS="⪵",lS="⋨",iS="⪯",uS="⪳",pS="≾",dS="′",fS="″",gS="ℙ",mS="⪹",hS="⪵",bS="⋨",vS="∏",wS="∏",qS="⌮",yS="⌒",xS="⌓",LS="∝",ES="∝",TS="∷",SS="∝",DS="≾",AS="⊰",kS="𝒫",NS="𝓅",RS="Ψ",jS="ψ",CS=" ",US="𝔔",$S="𝔮",HS="⨌",VS="𝕢",BS="ℚ",MS="⁗",OS="𝒬",PS="𝓆",FS="ℍ",GS="⨖",IS="?",_S="≟",zS='"',XS='"',JS="⇛",YS="∽̱",ZS="Ŕ",QS="ŕ",KS="√",WS="⦳",tD="⟩",oD="⟫",sD="⦒",nD="⦥",cD="⟩",rD="»",eD="⥵",aD="⇥",lD="⤠",iD="⤳",uD="→",pD="↠",dD="⇒",fD="⤞",gD="↪",mD="↬",hD="⥅",bD="⥴",vD="⤖",wD="↣",qD="↝",yD="⤚",xD="⤜",LD="∶",ED="ℚ",TD="⤍",SD="⤏",DD="⤐",AD="❳",kD="}",ND="]",RD="⦌",jD="⦎",CD="⦐",UD="Ř",$D="ř",HD="Ŗ",VD="ŗ",BD="⌉",MD="}",OD="Р",PD="р",FD="⤷",GD="⥩",ID="”",_D="”",zD="↳",XD="ℜ",JD="ℛ",YD="ℜ",ZD="ℝ",QD="ℜ",KD="▭",WD="®",tA="®",oA="∋",sA="⇋",nA="⥯",cA="⥽",rA="⌋",eA="𝔯",aA="ℜ",lA="⥤",iA="⇁",uA="⇀",pA="⥬",dA="Ρ",fA="ρ",gA="ϱ",mA="⟩",hA="⇥",bA="→",vA="→",wA="⇒",qA="⇄",yA="↣",xA="⌉",LA="⟧",EA="⥝",TA="⥕",SA="⇂",DA="⌋",AA="⇁",kA="⇀",NA="⇄",RA="⇌",jA="⇉",CA="↝",UA="↦",$A="⊢",HA="⥛",VA="⋌",BA="⧐",MA="⊳",OA="⊵",PA="⥏",FA="⥜",GA="⥔",IA="↾",_A="⥓",zA="⇀",XA="˚",JA="≓",YA="⇄",ZA="⇌",QA="‏",KA="⎱",WA="⎱",tk="⫮",ok="⟭",sk="⇾",nk="⟧",ck="⦆",rk="𝕣",ek="ℝ",ak="⨮",lk="⨵",ik="⥰",uk=")",pk="⦔",dk="⨒",fk="⇉",gk="⇛",mk="›",hk="𝓇",bk="ℛ",vk="↱",wk="↱",qk="]",yk="’",xk="’",Lk="⋌",Ek="⋊",Tk="▹",Sk="⊵",Dk="▸",Ak="⧎",kk="⧴",Nk="⥨",Rk="℞",jk="Ś",Ck="ś",Uk="‚",$k="⪸",Hk="Š",Vk="š",Bk="⪼",Mk="≻",Ok="≽",Pk="⪰",Fk="⪴",Gk="Ş",Ik="ş",_k="Ŝ",zk="ŝ",Xk="⪺",Jk="⪶",Yk="⋩",Zk="⨓",Qk="≿",Kk="С",Wk="с",tN="⊡",oN="⋅",sN="⩦",nN="⤥",cN="↘",rN="⇘",eN="↘",aN="§",lN=";",iN="⤩",uN="∖",pN="∖",dN="✶",fN="𝔖",gN="𝔰",mN="⌢",hN="♯",bN="Щ",vN="щ",wN="Ш",qN="ш",yN="↓",xN="←",LN="∣",EN="∥",TN="→",SN="↑",DN="­",AN="Σ",kN="σ",NN="ς",RN="ς",jN="∼",CN="⩪",UN="≃",$N="≃",HN="⪞",VN="⪠",BN="⪝",MN="⪟",ON="≆",PN="⨤",FN="⥲",GN="←",IN="∘",_N="∖",zN="⨳",XN="⧤",JN="∣",YN="⌣",ZN="⪪",QN="⪬",KN="⪬︀",WN="Ь",tR="ь",oR="⌿",sR="⧄",nR="/",cR="𝕊",rR="𝕤",eR="♠",aR="♠",lR="∥",iR="⊓",uR="⊓︀",pR="⊔",dR="⊔︀",fR="√",gR="⊏",mR="⊑",hR="⊏",bR="⊑",vR="⊐",wR="⊒",qR="⊐",yR="⊒",xR="□",LR="□",ER="⊓",TR="⊏",SR="⊑",DR="⊐",AR="⊒",kR="⊔",NR="▪",RR="□",jR="▪",CR="→",UR="𝒮",$R="𝓈",HR="∖",VR="⌣",BR="⋆",MR="⋆",OR="☆",PR="★",FR="ϵ",GR="ϕ",IR="¯",_R="⊂",zR="⋐",XR="⪽",JR="⫅",YR="⊆",ZR="⫃",QR="⫁",KR="⫋",WR="⊊",tj="⪿",oj="⥹",sj="⊂",nj="⋐",cj="⊆",rj="⫅",ej="⊆",aj="⊊",lj="⫋",ij="⫇",uj="⫕",pj="⫓",dj="⪸",fj="≻",gj="≽",mj="≻",hj="⪰",bj="≽",vj="≿",wj="⪰",qj="⪺",yj="⪶",xj="⋩",Lj="≿",Ej="∋",Tj="∑",Sj="∑",Dj="♪",Aj="¹",kj="²",Nj="³",Rj="⊃",jj="⋑",Cj="⪾",Uj="⫘",$j="⫆",Hj="⊇",Vj="⫄",Bj="⊃",Mj="⊇",Oj="⟉",Pj="⫗",Fj="⥻",Gj="⫂",Ij="⫌",_j="⊋",zj="⫀",Xj="⊃",Jj="⋑",Yj="⊇",Zj="⫆",Qj="⊋",Kj="⫌",Wj="⫈",tC="⫔",oC="⫖",sC="⤦",nC="↙",cC="⇙",rC="↙",eC="⤪",aC="ß",lC=" ",iC="⌖",uC="Τ",pC="τ",dC="⎴",fC="Ť",gC="ť",mC="Ţ",hC="ţ",bC="Т",vC="т",wC="⃛",qC="⌕",yC="𝔗",xC="𝔱",LC="∴",EC="∴",TC="∴",SC="Θ",DC="θ",AC="ϑ",kC="ϑ",NC="≈",RC="∼",jC="  ",CC=" ",UC=" ",$C="≈",HC="∼",VC="Þ",BC="þ",MC="˜",OC="∼",PC="≃",FC="≅",GC="≈",IC="⨱",_C="⊠",zC="×",XC="⨰",JC="∭",YC="⤨",ZC="⌶",QC="⫱",KC="⊤",WC="𝕋",t0="𝕥",o0="⫚",s0="⤩",n0="‴",c0="™",r0="™",e0="▵",a0="▿",l0="◃",i0="⊴",u0="≜",p0="▹",d0="⊵",f0="◬",g0="≜",m0="⨺",h0="⃛",b0="⨹",v0="⧍",w0="⨻",q0="⏢",y0="𝒯",x0="𝓉",L0="Ц",E0="ц",T0="Ћ",S0="ћ",D0="Ŧ",A0="ŧ",k0="≬",N0="↞",R0="↠",j0="Ú",C0="ú",U0="↑",$0="↟",H0="⇑",V0="⥉",B0="Ў",M0="ў",O0="Ŭ",P0="ŭ",F0="Û",G0="û",I0="У",_0="у",z0="⇅",X0="Ű",J0="ű",Y0="⥮",Z0="⥾",Q0="𝔘",K0="𝔲",W0="Ù",tU="ù",oU="⥣",sU="↿",nU="↾",cU="▀",rU="⌜",eU="⌜",aU="⌏",lU="◸",iU="Ū",uU="ū",pU="¨",dU="_",fU="⏟",gU="⎵",mU="⏝",hU="⋃",bU="⊎",vU="Ų",wU="ų",qU="𝕌",yU="𝕦",xU="⤒",LU="↑",EU="↑",TU="⇑",SU="⇅",DU="↕",AU="↕",kU="⇕",NU="⥮",RU="↿",jU="↾",CU="⊎",UU="↖",$U="↗",HU="υ",VU="ϒ",BU="ϒ",MU="Υ",OU="υ",PU="↥",FU="⊥",GU="⇈",IU="⌝",_U="⌝",zU="⌎",XU="Ů",JU="ů",YU="◹",ZU="𝒰",QU="𝓊",KU="⋰",WU="Ũ",t$="ũ",o$="▵",s$="▴",n$="⇈",c$="Ü",r$="ü",e$="⦧",a$="⦜",l$="ϵ",i$="ϰ",u$="∅",p$="ϕ",d$="ϖ",f$="∝",g$="↕",m$="⇕",h$="ϱ",b$="ς",v$="⊊︀",w$="⫋︀",q$="⊋︀",y$="⫌︀",x$="ϑ",L$="⊲",E$="⊳",T$="⫨",S$="⫫",D$="⫩",A$="В",k$="в",N$="⊢",R$="⊨",j$="⊩",C$="⊫",U$="⫦",$$="⊻",H$="∨",V$="⋁",B$="≚",M$="⋮",O$="|",P$="‖",F$="|",G$="‖",I$="∣",_$="|",z$="❘",X$="≀",J$=" ",Y$="𝔙",Z$="𝔳",Q$="⊲",K$="⊂⃒",W$="⊃⃒",tH="𝕍",oH="𝕧",sH="∝",nH="⊳",cH="𝒱",rH="𝓋",eH="⫋︀",aH="⊊︀",lH="⫌︀",iH="⊋︀",uH="⊪",pH="⦚",dH="Ŵ",fH="ŵ",gH="⩟",mH="∧",hH="⋀",bH="≙",vH="℘",wH="𝔚",qH="𝔴",yH="𝕎",xH="𝕨",LH="℘",EH="≀",TH="≀",SH="𝒲",DH="𝓌",AH="⋂",kH="◯",NH="⋃",RH="▽",jH="𝔛",CH="𝔵",UH="⟷",$H="⟺",HH="Ξ",VH="ξ",BH="⟵",MH="⟸",OH="⟼",PH="⋻",FH="⨀",GH="𝕏",IH="𝕩",_H="⨁",zH="⨂",XH="⟶",JH="⟹",YH="𝒳",ZH="𝓍",QH="⨆",KH="⨄",WH="△",tV="⋁",oV="⋀",sV="Ý",nV="ý",cV="Я",rV="я",eV="Ŷ",aV="ŷ",lV="Ы",iV="ы",uV="¥",pV="𝔜",dV="𝔶",fV="Ї",gV="ї",mV="𝕐",hV="𝕪",bV="𝒴",vV="𝓎",wV="Ю",qV="ю",yV="ÿ",xV="Ÿ",LV="Ź",EV="ź",TV="Ž",SV="ž",DV="З",AV="з",kV="Ż",NV="ż",RV="ℨ",jV="​",CV="Ζ",UV="ζ",$V="𝔷",HV="ℨ",VV="Ж",BV="ж",MV="⇝",OV="𝕫",PV="ℤ",FV="𝒵",GV="𝓏",IV="‍",_V="‌",W={Aacute:St,aacute:Dt,Abreve:At,abreve:kt,ac:Nt,acd:Rt,acE:jt,Acirc:Ct,acirc:Ut,acute:$t,Acy:Ht,acy:Vt,AElig:Bt,aelig:Mt,af:Ot,Afr:Pt,afr:Ft,Agrave:Gt,agrave:It,alefsym:_t,aleph:zt,Alpha:Xt,alpha:Jt,Amacr:Yt,amacr:Zt,amalg:Qt,amp:Kt,AMP:Wt,andand:to,And:oo,and:so,andd:no,andslope:co,andv:ro,ang:eo,ange:ao,angle:lo,angmsdaa:io,angmsdab:uo,angmsdac:po,angmsdad:fo,angmsdae:go,angmsdaf:mo,angmsdag:ho,angmsdah:bo,angmsd:vo,angrt:wo,angrtvb:qo,angrtvbd:yo,angsph:xo,angst:Lo,angzarr:Eo,Aogon:To,aogon:So,Aopf:Do,aopf:Ao,apacir:ko,ap:No,apE:Ro,ape:jo,apid:Co,apos:Uo,ApplyFunction:$o,approx:Ho,approxeq:Vo,Aring:Bo,aring:Mo,Ascr:Oo,ascr:Po,Assign:Fo,ast:Go,asymp:Io,asympeq:_o,Atilde:zo,atilde:Xo,Auml:Jo,auml:Yo,awconint:Zo,awint:Qo,backcong:Ko,backepsilon:Wo,backprime:ts,backsim:os,backsimeq:ss,Backslash:ns,Barv:cs,barvee:rs,barwed:es,Barwed:as,barwedge:ls,bbrk:is,bbrktbrk:us,bcong:ps,Bcy:ds,bcy:fs,bdquo:gs,becaus:ms,because:hs,Because:bs,bemptyv:vs,bepsi:ws,bernou:qs,Bernoullis:ys,Beta:xs,beta:Ls,beth:Es,between:Ts,Bfr:Ss,bfr:Ds,bigcap:As,bigcirc:ks,bigcup:Ns,bigodot:Rs,bigoplus:js,bigotimes:Cs,bigsqcup:Us,bigstar:$s,bigtriangledown:Hs,bigtriangleup:Vs,biguplus:Bs,bigvee:Ms,bigwedge:Os,bkarow:Ps,blacklozenge:Fs,blacksquare:Gs,blacktriangle:Is,blacktriangledown:_s,blacktriangleleft:zs,blacktriangleright:Xs,blank:Js,blk12:Ys,blk14:Zs,blk34:Qs,block:Ks,bne:Ws,bnequiv:tn,bNot:on,bnot:sn,Bopf:nn,bopf:cn,bot:rn,bottom:en,bowtie:an,boxbox:ln,boxdl:un,boxdL:pn,boxDl:dn,boxDL:fn,boxdr:gn,boxdR:mn,boxDr:hn,boxDR:bn,boxh:vn,boxH:wn,boxhd:qn,boxHd:yn,boxhD:xn,boxHD:Ln,boxhu:En,boxHu:Tn,boxhU:Sn,boxHU:Dn,boxminus:An,boxplus:kn,boxtimes:Nn,boxul:Rn,boxuL:jn,boxUl:Cn,boxUL:Un,boxur:$n,boxuR:Hn,boxUr:Vn,boxUR:Bn,boxv:Mn,boxV:On,boxvh:Pn,boxvH:Fn,boxVh:Gn,boxVH:In,boxvl:_n,boxvL:zn,boxVl:Xn,boxVL:Jn,boxvr:Yn,boxvR:Zn,boxVr:Qn,boxVR:Kn,bprime:Wn,breve:tc,Breve:oc,brvbar:sc,bscr:nc,Bscr:cc,bsemi:rc,bsim:ec,bsime:ac,bsolb:lc,bsol:ic,bsolhsub:uc,bull:pc,bullet:dc,bump:fc,bumpE:gc,bumpe:mc,Bumpeq:hc,bumpeq:bc,Cacute:vc,cacute:wc,capand:qc,capbrcup:yc,capcap:xc,cap:Lc,Cap:Ec,capcup:Tc,capdot:Sc,CapitalDifferentialD:Dc,caps:Ac,caret:kc,caron:Nc,Cayleys:Rc,ccaps:jc,Ccaron:Cc,ccaron:Uc,Ccedil:$c,ccedil:Hc,Ccirc:Vc,ccirc:Bc,Cconint:Mc,ccups:Oc,ccupssm:Pc,Cdot:Fc,cdot:Gc,cedil:Ic,Cedilla:_c,cemptyv:zc,cent:Xc,centerdot:Jc,CenterDot:Yc,cfr:Zc,Cfr:Qc,CHcy:Kc,chcy:Wc,check:tr,checkmark:or,Chi:sr,chi:nr,circ:cr,circeq:rr,circlearrowleft:er,circlearrowright:ar,circledast:lr,circledcirc:ir,circleddash:ur,CircleDot:pr,circledR:dr,circledS:fr,CircleMinus:gr,CirclePlus:mr,CircleTimes:hr,cir:br,cirE:vr,cire:wr,cirfnint:qr,cirmid:yr,cirscir:xr,ClockwiseContourIntegral:Lr,CloseCurlyDoubleQuote:Er,CloseCurlyQuote:Tr,clubs:Sr,clubsuit:Dr,colon:Ar,Colon:kr,Colone:Nr,colone:Rr,coloneq:jr,comma:Cr,commat:Ur,comp:$r,compfn:Hr,complement:Vr,complexes:Br,cong:Mr,congdot:Or,Congruent:Pr,conint:Fr,Conint:Gr,ContourIntegral:Ir,copf:_r,Copf:zr,coprod:Xr,Coproduct:Jr,copy:Yr,COPY:Zr,copysr:Qr,CounterClockwiseContourIntegral:Kr,crarr:Wr,cross:te,Cross:oe,Cscr:se,cscr:ne,csub:ce,csube:re,csup:ee,csupe:ae,ctdot:le,cudarrl:ie,cudarrr:ue,cuepr:pe,cuesc:de,cularr:fe,cularrp:ge,cupbrcap:me,cupcap:he,CupCap:be,cup:ve,Cup:we,cupcup:qe,cupdot:ye,cupor:xe,cups:Le,curarr:Ee,curarrm:Te,curlyeqprec:Se,curlyeqsucc:De,curlyvee:Ae,curlywedge:ke,curren:Ne,curvearrowleft:Re,curvearrowright:je,cuvee:Ce,cuwed:Ue,cwconint:$e,cwint:He,cylcty:Ve,dagger:Be,Dagger:Me,daleth:Oe,darr:Pe,Darr:Fe,dArr:Ge,dash:Ie,Dashv:_e,dashv:ze,dbkarow:Xe,dblac:Je,Dcaron:Ye,dcaron:Ze,Dcy:Qe,dcy:Ke,ddagger:We,ddarr:ta,DD:oa,dd:sa,DDotrahd:na,ddotseq:ca,deg:ra,Del:ea,Delta:aa,delta:la,demptyv:ia,dfisht:ua,Dfr:pa,dfr:da,dHar:fa,dharl:ga,dharr:ma,DiacriticalAcute:ha,DiacriticalDot:ba,DiacriticalDoubleAcute:va,DiacriticalGrave:wa,DiacriticalTilde:qa,diam:ya,diamond:xa,Diamond:La,diamondsuit:Ea,diams:Ta,die:Sa,DifferentialD:Da,digamma:Aa,disin:ka,div:Na,divide:Ra,divideontimes:ja,divonx:Ca,DJcy:Ua,djcy:$a,dlcorn:Ha,dlcrop:Va,dollar:Ba,Dopf:Ma,dopf:Oa,Dot:Pa,dot:Fa,DotDot:Ga,doteq:Ia,doteqdot:_a,DotEqual:za,dotminus:Xa,dotplus:Ja,dotsquare:Ya,doublebarwedge:Za,DoubleContourIntegral:Qa,DoubleDot:Ka,DoubleDownArrow:Wa,DoubleLeftArrow:tl,DoubleLeftRightArrow:ol,DoubleLeftTee:sl,DoubleLongLeftArrow:nl,DoubleLongLeftRightArrow:cl,DoubleLongRightArrow:rl,DoubleRightArrow:el,DoubleRightTee:al,DoubleUpArrow:ll,DoubleUpDownArrow:il,DoubleVerticalBar:ul,DownArrowBar:pl,downarrow:dl,DownArrow:fl,Downarrow:gl,DownArrowUpArrow:ml,DownBreve:hl,downdownarrows:bl,downharpoonleft:vl,downharpoonright:wl,DownLeftRightVector:ql,DownLeftTeeVector:yl,DownLeftVectorBar:xl,DownLeftVector:Ll,DownRightTeeVector:El,DownRightVectorBar:Tl,DownRightVector:Sl,DownTeeArrow:Dl,DownTee:Al,drbkarow:kl,drcorn:Nl,drcrop:Rl,Dscr:jl,dscr:Cl,DScy:Ul,dscy:$l,dsol:Hl,Dstrok:Vl,dstrok:Bl,dtdot:Ml,dtri:Ol,dtrif:Pl,duarr:Fl,duhar:Gl,dwangle:Il,DZcy:_l,dzcy:zl,dzigrarr:Xl,Eacute:Jl,eacute:Yl,easter:Zl,Ecaron:Ql,ecaron:Kl,Ecirc:Wl,ecirc:ti,ecir:oi,ecolon:si,Ecy:ni,ecy:ci,eDDot:ri,Edot:ei,edot:ai,eDot:li,ee:ii,efDot:ui,Efr:pi,efr:di,eg:fi,Egrave:gi,egrave:mi,egs:hi,egsdot:bi,el:vi,Element:wi,elinters:qi,ell:yi,els:xi,elsdot:Li,Emacr:Ei,emacr:Ti,empty:Si,emptyset:Di,EmptySmallSquare:Ai,emptyv:ki,EmptyVerySmallSquare:Ni,emsp13:Ri,emsp14:ji,emsp:Ci,ENG:Ui,eng:$i,ensp:Hi,Eogon:Vi,eogon:Bi,Eopf:Mi,eopf:Oi,epar:Pi,eparsl:Fi,eplus:Gi,epsi:Ii,Epsilon:_i,epsilon:zi,epsiv:Xi,eqcirc:Ji,eqcolon:Yi,eqsim:Zi,eqslantgtr:Qi,eqslantless:Ki,Equal:Wi,equals:tu,EqualTilde:ou,equest:su,Equilibrium:nu,equiv:cu,equivDD:ru,eqvparsl:eu,erarr:au,erDot:lu,escr:iu,Escr:uu,esdot:pu,Esim:du,esim:fu,Eta:gu,eta:mu,ETH:hu,eth:bu,Euml:vu,euml:wu,euro:qu,excl:yu,exist:xu,Exists:Lu,expectation:Eu,exponentiale:Tu,ExponentialE:Su,fallingdotseq:Du,Fcy:Au,fcy:ku,female:Nu,ffilig:Ru,fflig:ju,ffllig:Cu,Ffr:Uu,ffr:$u,filig:Hu,FilledSmallSquare:Vu,FilledVerySmallSquare:Bu,fjlig:Mu,flat:Ou,fllig:Pu,fltns:Fu,fnof:Gu,Fopf:Iu,fopf:_u,forall:zu,ForAll:Xu,fork:Ju,forkv:Yu,Fouriertrf:Zu,fpartint:Qu,frac12:Ku,frac13:Wu,frac14:tp,frac15:op,frac16:sp,frac18:np,frac23:cp,frac25:rp,frac34:ep,frac35:ap,frac38:lp,frac45:ip,frac56:up,frac58:pp,frac78:dp,frasl:fp,frown:gp,fscr:mp,Fscr:hp,gacute:bp,Gamma:vp,gamma:wp,Gammad:qp,gammad:yp,gap:xp,Gbreve:Lp,gbreve:Ep,Gcedil:Tp,Gcirc:Sp,gcirc:Dp,Gcy:Ap,gcy:kp,Gdot:Np,gdot:Rp,ge:jp,gE:Cp,gEl:Up,gel:$p,geq:Hp,geqq:Vp,geqslant:Bp,gescc:Mp,ges:Op,gesdot:Pp,gesdoto:Fp,gesdotol:Gp,gesl:Ip,gesles:_p,Gfr:zp,gfr:Xp,gg:Jp,Gg:Yp,ggg:Zp,gimel:Qp,GJcy:Kp,gjcy:Wp,gla:td,gl:od,glE:sd,glj:nd,gnap:cd,gnapprox:rd,gne:ed,gnE:ad,gneq:ld,gneqq:id,gnsim:ud,Gopf:pd,gopf:dd,grave:fd,GreaterEqual:gd,GreaterEqualLess:md,GreaterFullEqual:hd,GreaterGreater:bd,GreaterLess:vd,GreaterSlantEqual:wd,GreaterTilde:qd,Gscr:yd,gscr:xd,gsim:Ld,gsime:Ed,gsiml:Td,gtcc:Sd,gtcir:Dd,gt:Ad,GT:kd,Gt:Nd,gtdot:Rd,gtlPar:jd,gtquest:Cd,gtrapprox:Ud,gtrarr:$d,gtrdot:Hd,gtreqless:Vd,gtreqqless:Bd,gtrless:Md,gtrsim:Od,gvertneqq:Pd,gvnE:Fd,Hacek:Gd,hairsp:Id,half:_d,hamilt:zd,HARDcy:Xd,hardcy:Jd,harrcir:Yd,harr:Zd,hArr:Qd,harrw:Kd,Hat:Wd,hbar:tf,Hcirc:of,hcirc:sf,hearts:nf,heartsuit:cf,hellip:rf,hercon:ef,hfr:af,Hfr:lf,HilbertSpace:uf,hksearow:pf,hkswarow:df,hoarr:ff,homtht:gf,hookleftarrow:mf,hookrightarrow:hf,hopf:bf,Hopf:vf,horbar:wf,HorizontalLine:qf,hscr:yf,Hscr:xf,hslash:Lf,Hstrok:Ef,hstrok:Tf,HumpDownHump:Sf,HumpEqual:Df,hybull:Af,hyphen:kf,Iacute:Nf,iacute:Rf,ic:jf,Icirc:Cf,icirc:Uf,Icy:$f,icy:Hf,Idot:Vf,IEcy:Bf,iecy:Mf,iexcl:Of,iff:Pf,ifr:Ff,Ifr:Gf,Igrave:If,igrave:_f,ii:zf,iiiint:Xf,iiint:Jf,iinfin:Yf,iiota:Zf,IJlig:Qf,ijlig:Kf,Imacr:Wf,imacr:tg,image:og,ImaginaryI:sg,imagline:ng,imagpart:cg,imath:rg,Im:eg,imof:ag,imped:lg,Implies:ig,incare:ug,in:"∈",infin:pg,infintie:dg,inodot:fg,intcal:gg,int:mg,Int:hg,integers:bg,Integral:vg,intercal:wg,Intersection:qg,intlarhk:yg,intprod:xg,InvisibleComma:Lg,InvisibleTimes:Eg,IOcy:Tg,iocy:Sg,Iogon:Dg,iogon:Ag,Iopf:kg,iopf:Ng,Iota:Rg,iota:jg,iprod:Cg,iquest:Ug,iscr:$g,Iscr:Hg,isin:Vg,isindot:Bg,isinE:Mg,isins:Og,isinsv:Pg,isinv:Fg,it:Gg,Itilde:Ig,itilde:_g,Iukcy:zg,iukcy:Xg,Iuml:Jg,iuml:Yg,Jcirc:Zg,jcirc:Qg,Jcy:Kg,jcy:Wg,Jfr:tm,jfr:om,jmath:sm,Jopf:nm,jopf:cm,Jscr:rm,jscr:em,Jsercy:am,jsercy:lm,Jukcy:im,jukcy:um,Kappa:pm,kappa:dm,kappav:fm,Kcedil:gm,kcedil:mm,Kcy:hm,kcy:bm,Kfr:vm,kfr:wm,kgreen:qm,KHcy:ym,khcy:xm,KJcy:Lm,kjcy:Em,Kopf:Tm,kopf:Sm,Kscr:Dm,kscr:Am,lAarr:km,Lacute:Nm,lacute:Rm,laemptyv:jm,lagran:Cm,Lambda:Um,lambda:$m,lang:Hm,Lang:Vm,langd:Bm,langle:Mm,lap:Om,Laplacetrf:Pm,laquo:Fm,larrb:Gm,larrbfs:Im,larr:_m,Larr:zm,lArr:Xm,larrfs:Jm,larrhk:Ym,larrlp:Zm,larrpl:Qm,larrsim:Km,larrtl:Wm,latail:th,lAtail:oh,lat:sh,late:nh,lates:ch,lbarr:rh,lBarr:eh,lbbrk:ah,lbrace:lh,lbrack:ih,lbrke:uh,lbrksld:ph,lbrkslu:dh,Lcaron:fh,lcaron:gh,Lcedil:mh,lcedil:hh,lceil:bh,lcub:vh,Lcy:wh,lcy:qh,ldca:yh,ldquo:xh,ldquor:Lh,ldrdhar:Eh,ldrushar:Th,ldsh:Sh,le:Dh,lE:Ah,LeftAngleBracket:kh,LeftArrowBar:Nh,leftarrow:Rh,LeftArrow:jh,Leftarrow:Ch,LeftArrowRightArrow:Uh,leftarrowtail:$h,LeftCeiling:Hh,LeftDoubleBracket:Vh,LeftDownTeeVector:Bh,LeftDownVectorBar:Mh,LeftDownVector:Oh,LeftFloor:Ph,leftharpoondown:Fh,leftharpoonup:Gh,leftleftarrows:Ih,leftrightarrow:_h,LeftRightArrow:zh,Leftrightarrow:Xh,leftrightarrows:Jh,leftrightharpoons:Yh,leftrightsquigarrow:Zh,LeftRightVector:Qh,LeftTeeArrow:Kh,LeftTee:Wh,LeftTeeVector:tb,leftthreetimes:ob,LeftTriangleBar:sb,LeftTriangle:nb,LeftTriangleEqual:cb,LeftUpDownVector:rb,LeftUpTeeVector:eb,LeftUpVectorBar:ab,LeftUpVector:lb,LeftVectorBar:ib,LeftVector:ub,lEg:pb,leg:db,leq:fb,leqq:gb,leqslant:mb,lescc:hb,les:bb,lesdot:vb,lesdoto:wb,lesdotor:qb,lesg:yb,lesges:xb,lessapprox:Lb,lessdot:Eb,lesseqgtr:Tb,lesseqqgtr:Sb,LessEqualGreater:Db,LessFullEqual:Ab,LessGreater:kb,lessgtr:Nb,LessLess:Rb,lesssim:jb,LessSlantEqual:Cb,LessTilde:Ub,lfisht:$b,lfloor:Hb,Lfr:Vb,lfr:Bb,lg:Mb,lgE:Ob,lHar:Pb,lhard:Fb,lharu:Gb,lharul:Ib,lhblk:_b,LJcy:zb,ljcy:Xb,llarr:Jb,ll:Yb,Ll:Zb,llcorner:Qb,Lleftarrow:Kb,llhard:Wb,lltri:tv,Lmidot:ov,lmidot:sv,lmoustache:nv,lmoust:cv,lnap:rv,lnapprox:ev,lne:av,lnE:lv,lneq:iv,lneqq:uv,lnsim:pv,loang:dv,loarr:fv,lobrk:gv,longleftarrow:mv,LongLeftArrow:hv,Longleftarrow:bv,longleftrightarrow:vv,LongLeftRightArrow:wv,Longleftrightarrow:qv,longmapsto:yv,longrightarrow:xv,LongRightArrow:Lv,Longrightarrow:Ev,looparrowleft:Tv,looparrowright:Sv,lopar:Dv,Lopf:Av,lopf:kv,loplus:Nv,lotimes:Rv,lowast:jv,lowbar:Cv,LowerLeftArrow:Uv,LowerRightArrow:$v,loz:Hv,lozenge:Vv,lozf:Bv,lpar:Mv,lparlt:Ov,lrarr:Pv,lrcorner:Fv,lrhar:Gv,lrhard:Iv,lrm:_v,lrtri:zv,lsaquo:Xv,lscr:Jv,Lscr:Yv,lsh:Zv,Lsh:Qv,lsim:Kv,lsime:Wv,lsimg:tw,lsqb:ow,lsquo:sw,lsquor:nw,Lstrok:cw,lstrok:rw,ltcc:ew,ltcir:aw,lt:lw,LT:iw,Lt:uw,ltdot:pw,lthree:dw,ltimes:fw,ltlarr:gw,ltquest:mw,ltri:hw,ltrie:bw,ltrif:vw,ltrPar:ww,lurdshar:qw,luruhar:yw,lvertneqq:xw,lvnE:Lw,macr:Ew,male:Tw,malt:Sw,maltese:Dw,Map:"⤅",map:Aw,mapsto:kw,mapstodown:Nw,mapstoleft:Rw,mapstoup:jw,marker:Cw,mcomma:Uw,Mcy:$w,mcy:Hw,mdash:Vw,mDDot:Bw,measuredangle:Mw,MediumSpace:Ow,Mellintrf:Pw,Mfr:Fw,mfr:Gw,mho:Iw,micro:_w,midast:zw,midcir:Xw,mid:Jw,middot:Yw,minusb:Zw,minus:Qw,minusd:Kw,minusdu:Ww,MinusPlus:tq,mlcp:oq,mldr:sq,mnplus:nq,models:cq,Mopf:rq,mopf:eq,mp:aq,mscr:lq,Mscr:iq,mstpos:uq,Mu:pq,mu:dq,multimap:fq,mumap:gq,nabla:mq,Nacute:hq,nacute:bq,nang:vq,nap:wq,napE:qq,napid:yq,napos:xq,napprox:Lq,natural:Eq,naturals:Tq,natur:Sq,nbsp:Dq,nbump:Aq,nbumpe:kq,ncap:Nq,Ncaron:Rq,ncaron:jq,Ncedil:Cq,ncedil:Uq,ncong:$q,ncongdot:Hq,ncup:Vq,Ncy:Bq,ncy:Mq,ndash:Oq,nearhk:Pq,nearr:Fq,neArr:Gq,nearrow:Iq,ne:_q,nedot:zq,NegativeMediumSpace:Xq,NegativeThickSpace:Jq,NegativeThinSpace:Yq,NegativeVeryThinSpace:Zq,nequiv:Qq,nesear:Kq,nesim:Wq,NestedGreaterGreater:ty,NestedLessLess:oy,NewLine:sy,nexist:ny,nexists:cy,Nfr:ry,nfr:ey,ngE:ay,nge:ly,ngeq:iy,ngeqq:uy,ngeqslant:py,nges:dy,nGg:fy,ngsim:gy,nGt:my,ngt:hy,ngtr:by,nGtv:vy,nharr:wy,nhArr:qy,nhpar:yy,ni:xy,nis:Ly,nisd:Ey,niv:Ty,NJcy:Sy,njcy:Dy,nlarr:Ay,nlArr:ky,nldr:Ny,nlE:Ry,nle:jy,nleftarrow:Cy,nLeftarrow:Uy,nleftrightarrow:$y,nLeftrightarrow:Hy,nleq:Vy,nleqq:By,nleqslant:My,nles:Oy,nless:Py,nLl:Fy,nlsim:Gy,nLt:Iy,nlt:_y,nltri:zy,nltrie:Xy,nLtv:Jy,nmid:Yy,NoBreak:Zy,NonBreakingSpace:Qy,nopf:Ky,Nopf:Wy,Not:tx,not:ox,NotCongruent:sx,NotCupCap:nx,NotDoubleVerticalBar:cx,NotElement:rx,NotEqual:ex,NotEqualTilde:ax,NotExists:lx,NotGreater:ix,NotGreaterEqual:ux,NotGreaterFullEqual:px,NotGreaterGreater:dx,NotGreaterLess:fx,NotGreaterSlantEqual:gx,NotGreaterTilde:mx,NotHumpDownHump:hx,NotHumpEqual:bx,notin:vx,notindot:wx,notinE:qx,notinva:yx,notinvb:xx,notinvc:Lx,NotLeftTriangleBar:Ex,NotLeftTriangle:Tx,NotLeftTriangleEqual:Sx,NotLess:Dx,NotLessEqual:Ax,NotLessGreater:kx,NotLessLess:Nx,NotLessSlantEqual:Rx,NotLessTilde:jx,NotNestedGreaterGreater:Cx,NotNestedLessLess:Ux,notni:$x,notniva:Hx,notnivb:Vx,notnivc:Bx,NotPrecedes:Mx,NotPrecedesEqual:Ox,NotPrecedesSlantEqual:Px,NotReverseElement:Fx,NotRightTriangleBar:Gx,NotRightTriangle:Ix,NotRightTriangleEqual:_x,NotSquareSubset:zx,NotSquareSubsetEqual:Xx,NotSquareSuperset:Jx,NotSquareSupersetEqual:Yx,NotSubset:Zx,NotSubsetEqual:Qx,NotSucceeds:Kx,NotSucceedsEqual:Wx,NotSucceedsSlantEqual:tL,NotSucceedsTilde:oL,NotSuperset:sL,NotSupersetEqual:nL,NotTilde:cL,NotTildeEqual:rL,NotTildeFullEqual:eL,NotTildeTilde:aL,NotVerticalBar:lL,nparallel:iL,npar:uL,nparsl:pL,npart:dL,npolint:fL,npr:gL,nprcue:mL,nprec:hL,npreceq:bL,npre:vL,nrarrc:wL,nrarr:qL,nrArr:yL,nrarrw:xL,nrightarrow:LL,nRightarrow:EL,nrtri:TL,nrtrie:SL,nsc:DL,nsccue:AL,nsce:kL,Nscr:NL,nscr:RL,nshortmid:jL,nshortparallel:CL,nsim:UL,nsime:$L,nsimeq:HL,nsmid:VL,nspar:BL,nsqsube:ML,nsqsupe:OL,nsub:PL,nsubE:FL,nsube:GL,nsubset:IL,nsubseteq:_L,nsubseteqq:zL,nsucc:XL,nsucceq:JL,nsup:YL,nsupE:ZL,nsupe:QL,nsupset:KL,nsupseteq:WL,nsupseteqq:tE,ntgl:oE,Ntilde:sE,ntilde:nE,ntlg:cE,ntriangleleft:rE,ntrianglelefteq:eE,ntriangleright:aE,ntrianglerighteq:lE,Nu:iE,nu:uE,num:pE,numero:dE,numsp:fE,nvap:gE,nvdash:mE,nvDash:hE,nVdash:bE,nVDash:vE,nvge:wE,nvgt:qE,nvHarr:yE,nvinfin:xE,nvlArr:LE,nvle:EE,nvlt:TE,nvltrie:SE,nvrArr:DE,nvrtrie:AE,nvsim:kE,nwarhk:NE,nwarr:RE,nwArr:jE,nwarrow:CE,nwnear:UE,Oacute:$E,oacute:HE,oast:VE,Ocirc:BE,ocirc:ME,ocir:OE,Ocy:PE,ocy:FE,odash:GE,Odblac:IE,odblac:_E,odiv:zE,odot:XE,odsold:JE,OElig:YE,oelig:ZE,ofcir:QE,Ofr:KE,ofr:WE,ogon:tT,Ograve:oT,ograve:sT,ogt:nT,ohbar:cT,ohm:rT,oint:eT,olarr:aT,olcir:lT,olcross:iT,oline:uT,olt:pT,Omacr:dT,omacr:fT,Omega:gT,omega:mT,Omicron:hT,omicron:bT,omid:vT,ominus:wT,Oopf:qT,oopf:yT,opar:xT,OpenCurlyDoubleQuote:LT,OpenCurlyQuote:ET,operp:TT,oplus:ST,orarr:DT,Or:AT,or:kT,ord:NT,order:RT,orderof:jT,ordf:CT,ordm:UT,origof:$T,oror:HT,orslope:VT,orv:BT,oS:MT,Oscr:OT,oscr:PT,Oslash:FT,oslash:GT,osol:IT,Otilde:_T,otilde:zT,otimesas:XT,Otimes:JT,otimes:YT,Ouml:ZT,ouml:QT,ovbar:KT,OverBar:WT,OverBrace:t1,OverBracket:o1,OverParenthesis:s1,para:n1,parallel:c1,par:r1,parsim:e1,parsl:a1,part:l1,PartialD:i1,Pcy:u1,pcy:p1,percnt:d1,period:f1,permil:g1,perp:m1,pertenk:h1,Pfr:b1,pfr:v1,Phi:w1,phi:q1,phiv:y1,phmmat:x1,phone:L1,Pi:E1,pi:T1,pitchfork:S1,piv:D1,planck:A1,planckh:k1,plankv:N1,plusacir:R1,plusb:j1,pluscir:C1,plus:U1,plusdo:$1,plusdu:H1,pluse:V1,PlusMinus:B1,plusmn:M1,plussim:O1,plustwo:P1,pm:F1,Poincareplane:G1,pointint:I1,popf:_1,Popf:z1,pound:X1,prap:J1,Pr:Y1,pr:Z1,prcue:Q1,precapprox:K1,prec:W1,preccurlyeq:tS,Precedes:oS,PrecedesEqual:sS,PrecedesSlantEqual:nS,PrecedesTilde:cS,preceq:rS,precnapprox:eS,precneqq:aS,precnsim:lS,pre:iS,prE:uS,precsim:pS,prime:dS,Prime:fS,primes:gS,prnap:mS,prnE:hS,prnsim:bS,prod:vS,Product:wS,profalar:qS,profline:yS,profsurf:xS,prop:LS,Proportional:ES,Proportion:TS,propto:SS,prsim:DS,prurel:AS,Pscr:kS,pscr:NS,Psi:RS,psi:jS,puncsp:CS,Qfr:US,qfr:$S,qint:HS,qopf:VS,Qopf:BS,qprime:MS,Qscr:OS,qscr:PS,quaternions:FS,quatint:GS,quest:IS,questeq:_S,quot:zS,QUOT:XS,rAarr:JS,race:YS,Racute:ZS,racute:QS,radic:KS,raemptyv:WS,rang:tD,Rang:oD,rangd:sD,range:nD,rangle:cD,raquo:rD,rarrap:eD,rarrb:aD,rarrbfs:lD,rarrc:iD,rarr:uD,Rarr:pD,rArr:dD,rarrfs:fD,rarrhk:gD,rarrlp:mD,rarrpl:hD,rarrsim:bD,Rarrtl:vD,rarrtl:wD,rarrw:qD,ratail:yD,rAtail:xD,ratio:LD,rationals:ED,rbarr:TD,rBarr:SD,RBarr:DD,rbbrk:AD,rbrace:kD,rbrack:ND,rbrke:RD,rbrksld:jD,rbrkslu:CD,Rcaron:UD,rcaron:$D,Rcedil:HD,rcedil:VD,rceil:BD,rcub:MD,Rcy:OD,rcy:PD,rdca:FD,rdldhar:GD,rdquo:ID,rdquor:_D,rdsh:zD,real:XD,realine:JD,realpart:YD,reals:ZD,Re:QD,rect:KD,reg:WD,REG:tA,ReverseElement:oA,ReverseEquilibrium:sA,ReverseUpEquilibrium:nA,rfisht:cA,rfloor:rA,rfr:eA,Rfr:aA,rHar:lA,rhard:iA,rharu:uA,rharul:pA,Rho:dA,rho:fA,rhov:gA,RightAngleBracket:mA,RightArrowBar:hA,rightarrow:bA,RightArrow:vA,Rightarrow:wA,RightArrowLeftArrow:qA,rightarrowtail:yA,RightCeiling:xA,RightDoubleBracket:LA,RightDownTeeVector:EA,RightDownVectorBar:TA,RightDownVector:SA,RightFloor:DA,rightharpoondown:AA,rightharpoonup:kA,rightleftarrows:NA,rightleftharpoons:RA,rightrightarrows:jA,rightsquigarrow:CA,RightTeeArrow:UA,RightTee:$A,RightTeeVector:HA,rightthreetimes:VA,RightTriangleBar:BA,RightTriangle:MA,RightTriangleEqual:OA,RightUpDownVector:PA,RightUpTeeVector:FA,RightUpVectorBar:GA,RightUpVector:IA,RightVectorBar:_A,RightVector:zA,ring:XA,risingdotseq:JA,rlarr:YA,rlhar:ZA,rlm:QA,rmoustache:KA,rmoust:WA,rnmid:tk,roang:ok,roarr:sk,robrk:nk,ropar:ck,ropf:rk,Ropf:ek,roplus:ak,rotimes:lk,RoundImplies:ik,rpar:uk,rpargt:pk,rppolint:dk,rrarr:fk,Rrightarrow:gk,rsaquo:mk,rscr:hk,Rscr:bk,rsh:vk,Rsh:wk,rsqb:qk,rsquo:yk,rsquor:xk,rthree:Lk,rtimes:Ek,rtri:Tk,rtrie:Sk,rtrif:Dk,rtriltri:Ak,RuleDelayed:kk,ruluhar:Nk,rx:Rk,Sacute:jk,sacute:Ck,sbquo:Uk,scap:$k,Scaron:Hk,scaron:Vk,Sc:Bk,sc:Mk,sccue:Ok,sce:Pk,scE:Fk,Scedil:Gk,scedil:Ik,Scirc:_k,scirc:zk,scnap:Xk,scnE:Jk,scnsim:Yk,scpolint:Zk,scsim:Qk,Scy:Kk,scy:Wk,sdotb:tN,sdot:oN,sdote:sN,searhk:nN,searr:cN,seArr:rN,searrow:eN,sect:aN,semi:lN,seswar:iN,setminus:uN,setmn:pN,sext:dN,Sfr:fN,sfr:gN,sfrown:mN,sharp:hN,SHCHcy:bN,shchcy:vN,SHcy:wN,shcy:qN,ShortDownArrow:yN,ShortLeftArrow:xN,shortmid:LN,shortparallel:EN,ShortRightArrow:TN,ShortUpArrow:SN,shy:DN,Sigma:AN,sigma:kN,sigmaf:NN,sigmav:RN,sim:jN,simdot:CN,sime:UN,simeq:$N,simg:HN,simgE:VN,siml:BN,simlE:MN,simne:ON,simplus:PN,simrarr:FN,slarr:GN,SmallCircle:IN,smallsetminus:_N,smashp:zN,smeparsl:XN,smid:JN,smile:YN,smt:ZN,smte:QN,smtes:KN,SOFTcy:WN,softcy:tR,solbar:oR,solb:sR,sol:nR,Sopf:cR,sopf:rR,spades:eR,spadesuit:aR,spar:lR,sqcap:iR,sqcaps:uR,sqcup:pR,sqcups:dR,Sqrt:fR,sqsub:gR,sqsube:mR,sqsubset:hR,sqsubseteq:bR,sqsup:vR,sqsupe:wR,sqsupset:qR,sqsupseteq:yR,square:xR,Square:LR,SquareIntersection:ER,SquareSubset:TR,SquareSubsetEqual:SR,SquareSuperset:DR,SquareSupersetEqual:AR,SquareUnion:kR,squarf:NR,squ:RR,squf:jR,srarr:CR,Sscr:UR,sscr:$R,ssetmn:HR,ssmile:VR,sstarf:BR,Star:MR,star:OR,starf:PR,straightepsilon:FR,straightphi:GR,strns:IR,sub:_R,Sub:zR,subdot:XR,subE:JR,sube:YR,subedot:ZR,submult:QR,subnE:KR,subne:WR,subplus:tj,subrarr:oj,subset:sj,Subset:nj,subseteq:cj,subseteqq:rj,SubsetEqual:ej,subsetneq:aj,subsetneqq:lj,subsim:ij,subsub:uj,subsup:pj,succapprox:dj,succ:fj,succcurlyeq:gj,Succeeds:mj,SucceedsEqual:hj,SucceedsSlantEqual:bj,SucceedsTilde:vj,succeq:wj,succnapprox:qj,succneqq:yj,succnsim:xj,succsim:Lj,SuchThat:Ej,sum:Tj,Sum:Sj,sung:Dj,sup1:Aj,sup2:kj,sup3:Nj,sup:Rj,Sup:jj,supdot:Cj,supdsub:Uj,supE:$j,supe:Hj,supedot:Vj,Superset:Bj,SupersetEqual:Mj,suphsol:Oj,suphsub:Pj,suplarr:Fj,supmult:Gj,supnE:Ij,supne:_j,supplus:zj,supset:Xj,Supset:Jj,supseteq:Yj,supseteqq:Zj,supsetneq:Qj,supsetneqq:Kj,supsim:Wj,supsub:tC,supsup:oC,swarhk:sC,swarr:nC,swArr:cC,swarrow:rC,swnwar:eC,szlig:aC,Tab:lC,target:iC,Tau:uC,tau:pC,tbrk:dC,Tcaron:fC,tcaron:gC,Tcedil:mC,tcedil:hC,Tcy:bC,tcy:vC,tdot:wC,telrec:qC,Tfr:yC,tfr:xC,there4:LC,therefore:EC,Therefore:TC,Theta:SC,theta:DC,thetasym:AC,thetav:kC,thickapprox:NC,thicksim:RC,ThickSpace:jC,ThinSpace:CC,thinsp:UC,thkap:$C,thksim:HC,THORN:VC,thorn:BC,tilde:MC,Tilde:OC,TildeEqual:PC,TildeFullEqual:FC,TildeTilde:GC,timesbar:IC,timesb:_C,times:zC,timesd:XC,tint:JC,toea:YC,topbot:ZC,topcir:QC,top:KC,Topf:WC,topf:t0,topfork:o0,tosa:s0,tprime:n0,trade:c0,TRADE:r0,triangle:e0,triangledown:a0,triangleleft:l0,trianglelefteq:i0,triangleq:u0,triangleright:p0,trianglerighteq:d0,tridot:f0,trie:g0,triminus:m0,TripleDot:h0,triplus:b0,trisb:v0,tritime:w0,trpezium:q0,Tscr:y0,tscr:x0,TScy:L0,tscy:E0,TSHcy:T0,tshcy:S0,Tstrok:D0,tstrok:A0,twixt:k0,twoheadleftarrow:N0,twoheadrightarrow:R0,Uacute:j0,uacute:C0,uarr:U0,Uarr:$0,uArr:H0,Uarrocir:V0,Ubrcy:B0,ubrcy:M0,Ubreve:O0,ubreve:P0,Ucirc:F0,ucirc:G0,Ucy:I0,ucy:_0,udarr:z0,Udblac:X0,udblac:J0,udhar:Y0,ufisht:Z0,Ufr:Q0,ufr:K0,Ugrave:W0,ugrave:tU,uHar:oU,uharl:sU,uharr:nU,uhblk:cU,ulcorn:rU,ulcorner:eU,ulcrop:aU,ultri:lU,Umacr:iU,umacr:uU,uml:pU,UnderBar:dU,UnderBrace:fU,UnderBracket:gU,UnderParenthesis:mU,Union:hU,UnionPlus:bU,Uogon:vU,uogon:wU,Uopf:qU,uopf:yU,UpArrowBar:xU,uparrow:LU,UpArrow:EU,Uparrow:TU,UpArrowDownArrow:SU,updownarrow:DU,UpDownArrow:AU,Updownarrow:kU,UpEquilibrium:NU,upharpoonleft:RU,upharpoonright:jU,uplus:CU,UpperLeftArrow:UU,UpperRightArrow:$U,upsi:HU,Upsi:VU,upsih:BU,Upsilon:MU,upsilon:OU,UpTeeArrow:PU,UpTee:FU,upuparrows:GU,urcorn:IU,urcorner:_U,urcrop:zU,Uring:XU,uring:JU,urtri:YU,Uscr:ZU,uscr:QU,utdot:KU,Utilde:WU,utilde:t$,utri:o$,utrif:s$,uuarr:n$,Uuml:c$,uuml:r$,uwangle:e$,vangrt:a$,varepsilon:l$,varkappa:i$,varnothing:u$,varphi:p$,varpi:d$,varpropto:f$,varr:g$,vArr:m$,varrho:h$,varsigma:b$,varsubsetneq:v$,varsubsetneqq:w$,varsupsetneq:q$,varsupsetneqq:y$,vartheta:x$,vartriangleleft:L$,vartriangleright:E$,vBar:T$,Vbar:S$,vBarv:D$,Vcy:A$,vcy:k$,vdash:N$,vDash:R$,Vdash:j$,VDash:C$,Vdashl:U$,veebar:$$,vee:H$,Vee:V$,veeeq:B$,vellip:M$,verbar:O$,Verbar:P$,vert:F$,Vert:G$,VerticalBar:I$,VerticalLine:_$,VerticalSeparator:z$,VerticalTilde:X$,VeryThinSpace:J$,Vfr:Y$,vfr:Z$,vltri:Q$,vnsub:K$,vnsup:W$,Vopf:tH,vopf:oH,vprop:sH,vrtri:nH,Vscr:cH,vscr:rH,vsubnE:eH,vsubne:aH,vsupnE:lH,vsupne:iH,Vvdash:uH,vzigzag:pH,Wcirc:dH,wcirc:fH,wedbar:gH,wedge:mH,Wedge:hH,wedgeq:bH,weierp:vH,Wfr:wH,wfr:qH,Wopf:yH,wopf:xH,wp:LH,wr:EH,wreath:TH,Wscr:SH,wscr:DH,xcap:AH,xcirc:kH,xcup:NH,xdtri:RH,Xfr:jH,xfr:CH,xharr:UH,xhArr:$H,Xi:HH,xi:VH,xlarr:BH,xlArr:MH,xmap:OH,xnis:PH,xodot:FH,Xopf:GH,xopf:IH,xoplus:_H,xotime:zH,xrarr:XH,xrArr:JH,Xscr:YH,xscr:ZH,xsqcup:QH,xuplus:KH,xutri:WH,xvee:tV,xwedge:oV,Yacute:sV,yacute:nV,YAcy:cV,yacy:rV,Ycirc:eV,ycirc:aV,Ycy:lV,ycy:iV,yen:uV,Yfr:pV,yfr:dV,YIcy:fV,yicy:gV,Yopf:mV,yopf:hV,Yscr:bV,yscr:vV,YUcy:wV,yucy:qV,yuml:yV,Yuml:xV,Zacute:LV,zacute:EV,Zcaron:TV,zcaron:SV,Zcy:DV,zcy:AV,Zdot:kV,zdot:NV,zeetrf:RV,ZeroWidthSpace:jV,Zeta:CV,zeta:UV,zfr:$V,Zfr:HV,ZHcy:VV,zhcy:BV,zigrarr:MV,zopf:OV,Zopf:PV,Zscr:FV,zscr:GV,zwj:IV,zwnj:_V},zV="Á",XV="á",JV="Â",YV="â",ZV="´",QV="Æ",KV="æ",WV="À",tB="à",oB="&",sB="&",nB="Å",cB="å",rB="Ã",eB="ã",aB="Ä",lB="ä",iB="¦",uB="Ç",pB="ç",dB="¸",fB="¢",gB="©",mB="©",hB="¤",bB="°",vB="÷",wB="É",qB="é",yB="Ê",xB="ê",LB="È",EB="è",TB="Ð",SB="ð",DB="Ë",AB="ë",kB="½",NB="¼",RB="¾",jB=">",CB=">",UB="Í",$B="í",HB="Î",VB="î",BB="¡",MB="Ì",OB="ì",PB="¿",FB="Ï",GB="ï",IB="«",_B="<",zB="<",XB="¯",JB="µ",YB="·",ZB=" ",QB="¬",KB="Ñ",WB="ñ",tM="Ó",oM="ó",sM="Ô",nM="ô",cM="Ò",rM="ò",eM="ª",aM="º",lM="Ø",iM="ø",uM="Õ",pM="õ",dM="Ö",fM="ö",gM="¶",mM="±",hM="£",bM='"',vM='"',wM="»",qM="®",yM="®",xM="§",LM="­",EM="¹",TM="²",SM="³",DM="ß",AM="Þ",kM="þ",NM="×",RM="Ú",jM="ú",CM="Û",UM="û",$M="Ù",HM="ù",VM="¨",BM="Ü",MM="ü",OM="Ý",PM="ý",FM="¥",GM="ÿ",IM={Aacute:zV,aacute:XV,Acirc:JV,acirc:YV,acute:ZV,AElig:QV,aelig:KV,Agrave:WV,agrave:tB,amp:oB,AMP:sB,Aring:nB,aring:cB,Atilde:rB,atilde:eB,Auml:aB,auml:lB,brvbar:iB,Ccedil:uB,ccedil:pB,cedil:dB,cent:fB,copy:gB,COPY:mB,curren:hB,deg:bB,divide:vB,Eacute:wB,eacute:qB,Ecirc:yB,ecirc:xB,Egrave:LB,egrave:EB,ETH:TB,eth:SB,Euml:DB,euml:AB,frac12:kB,frac14:NB,frac34:RB,gt:jB,GT:CB,Iacute:UB,iacute:$B,Icirc:HB,icirc:VB,iexcl:BB,Igrave:MB,igrave:OB,iquest:PB,Iuml:FB,iuml:GB,laquo:IB,lt:_B,LT:zB,macr:XB,micro:JB,middot:YB,nbsp:ZB,not:QB,Ntilde:KB,ntilde:WB,Oacute:tM,oacute:oM,Ocirc:sM,ocirc:nM,Ograve:cM,ograve:rM,ordf:eM,ordm:aM,Oslash:lM,oslash:iM,Otilde:uM,otilde:pM,Ouml:dM,ouml:fM,para:gM,plusmn:mM,pound:hM,quot:bM,QUOT:vM,raquo:wM,reg:qM,REG:yM,sect:xM,shy:LM,sup1:EM,sup2:TM,sup3:SM,szlig:DM,THORN:AM,thorn:kM,times:NM,Uacute:RM,uacute:jM,Ucirc:CM,ucirc:UM,Ugrave:$M,ugrave:HM,uml:VM,Uuml:BM,uuml:MM,Yacute:OM,yacute:PM,yen:FM,yuml:GM},_M="&",zM="'",XM=">",JM="<",YM='"',tt={amp:_M,apos:zM,gt:XM,lt:JM,quot:YM};var M={};const ZM={0:65533,128:8364,130:8218,131:402,132:8222,133:8230,134:8224,135:8225,136:710,137:8240,138:352,139:8249,140:338,142:381,145:8216,146:8217,147:8220,148:8221,149:8226,150:8211,151:8212,152:732,153:8482,154:353,155:8250,156:339,158:382,159:376};var QM=S&&S.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(M,"__esModule",{value:!0});var I=QM(ZM),KM=String.fromCodePoint||function(t){var o="";return t>65535&&(t-=65536,o+=String.fromCharCode(t>>>10&1023|55296),t=56320|t&1023),o+=String.fromCharCode(t),o};function WM(t){return t>=55296&&t<=57343||t>1114111?"�":(t in I.default&&(t=I.default[t]),KM(t))}M.default=WM;var U=S&&S.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(L,"__esModule",{value:!0});L.decodeHTML=L.decodeHTMLStrict=L.decodeXML=void 0;var H=U(W),tO=U(IM),oO=U(tt),_=U(M),sO=/&(?:[a-zA-Z0-9]+|#[xX][\da-fA-F]+|#\d+);/g;L.decodeXML=ot(oO.default);L.decodeHTMLStrict=ot(H.default);function ot(t){var o=st(t);return function(s){return String(s).replace(sO,o)}}var z=function(t,o){return t<o?1:-1};L.decodeHTML=function(){for(var t=Object.keys(tO.default).sort(z),o=Object.keys(H.default).sort(z),s=0,c=0;s<o.length;s++)t[c]===o[s]?(o[s]+=";?",c++):o[s]+=";";var r=new RegExp("&(?:"+o.join("|")+"|#[xX][\\da-fA-F]+;?|#\\d+;?)","g"),e=st(H.default);function i(a){return a.substr(-1)!==";"&&(a+=";"),e(a)}return function(a){return String(a).replace(r,i)}}();function st(t){return function(s){if(s.charAt(1)==="#"){var c=s.charAt(2);return c==="X"||c==="x"?_.default(parseInt(s.substr(3),16)):_.default(parseInt(s.substr(2),10))}return t[s.slice(1,-1)]||s}}var b={},nt=S&&S.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(b,"__esModule",{value:!0});b.escapeUTF8=b.escape=b.encodeNonAsciiHTML=b.encodeHTML=b.encodeXML=void 0;var nO=nt(tt),ct=et(nO.default),rt=at(ct);b.encodeXML=ut(ct);var cO=nt(W),O=et(cO.default),rO=at(O);b.encodeHTML=aO(O,rO);b.encodeNonAsciiHTML=ut(O);function et(t){return Object.keys(t).sort().reduce(function(o,s){return o[t[s]]="&"+s+";",o},{})}function at(t){for(var o=[],s=[],c=0,r=Object.keys(t);c<r.length;c++){var e=r[c];e.length===1?o.push("\\"+e):s.push(e)}o.sort();for(var i=0;i<o.length-1;i++){for(var a=i;a<o.length-1&&o[a].charCodeAt(1)+1===o[a+1].charCodeAt(1);)a+=1;var p=1+a-i;p<3||o.splice(i,p,o[i]+"-"+o[a])}return s.unshift("["+o.join("")+"]"),new RegExp(s.join("|"),"g")}var lt=/(?:[\x80-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/g,eO=String.prototype.codePointAt!=null?function(t){return t.codePointAt(0)}:function(t){return(t.charCodeAt(0)-55296)*1024+t.charCodeAt(1)-56320+65536};function $(t){return"&#x"+(t.length>1?eO(t):t.charCodeAt(0)).toString(16).toUpperCase()+";"}function aO(t,o){return function(s){return s.replace(o,function(c){return t[c]}).replace(lt,$)}}var it=new RegExp(rt.source+"|"+lt.source,"g");function lO(t){return t.replace(it,$)}b.escape=lO;function iO(t){return t.replace(rt,$)}b.escapeUTF8=iO;function ut(t){return function(o){return o.replace(it,function(s){return t[s]||$(s)})}}(function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.decodeXMLStrict=t.decodeHTML5Strict=t.decodeHTML4Strict=t.decodeHTML5=t.decodeHTML4=t.decodeHTMLStrict=t.decodeHTML=t.decodeXML=t.encodeHTML5=t.encodeHTML4=t.escapeUTF8=t.escape=t.encodeNonAsciiHTML=t.encodeHTML=t.encodeXML=t.encode=t.decodeStrict=t.decode=void 0;var o=L,s=b;function c(p,u){return(!u||u<=0?o.decodeXML:o.decodeHTML)(p)}t.decode=c;function r(p,u){return(!u||u<=0?o.decodeXML:o.decodeHTMLStrict)(p)}t.decodeStrict=r;function e(p,u){return(!u||u<=0?s.encodeXML:s.encodeHTML)(p)}t.encode=e;var i=b;Object.defineProperty(t,"encodeXML",{enumerable:!0,get:function(){return i.encodeXML}}),Object.defineProperty(t,"encodeHTML",{enumerable:!0,get:function(){return i.encodeHTML}}),Object.defineProperty(t,"encodeNonAsciiHTML",{enumerable:!0,get:function(){return i.encodeNonAsciiHTML}}),Object.defineProperty(t,"escape",{enumerable:!0,get:function(){return i.escape}}),Object.defineProperty(t,"escapeUTF8",{enumerable:!0,get:function(){return i.escapeUTF8}}),Object.defineProperty(t,"encodeHTML4",{enumerable:!0,get:function(){return i.encodeHTML}}),Object.defineProperty(t,"encodeHTML5",{enumerable:!0,get:function(){return i.encodeHTML}});var a=L;Object.defineProperty(t,"decodeXML",{enumerable:!0,get:function(){return a.decodeXML}}),Object.defineProperty(t,"decodeHTML",{enumerable:!0,get:function(){return a.decodeHTML}}),Object.defineProperty(t,"decodeHTMLStrict",{enumerable:!0,get:function(){return a.decodeHTMLStrict}}),Object.defineProperty(t,"decodeHTML4",{enumerable:!0,get:function(){return a.decodeHTML}}),Object.defineProperty(t,"decodeHTML5",{enumerable:!0,get:function(){return a.decodeHTML}}),Object.defineProperty(t,"decodeHTML4Strict",{enumerable:!0,get:function(){return a.decodeHTMLStrict}}),Object.defineProperty(t,"decodeHTML5Strict",{enumerable:!0,get:function(){return a.decodeHTMLStrict}}),Object.defineProperty(t,"decodeXMLStrict",{enumerable:!0,get:function(){return a.decodeXML}})})(K);function uO(t,o){if(!(t instanceof o))throw new TypeError("Cannot call a class as a function")}function pO(t,o){for(var s=0;s<o.length;s++){var c=o[s];c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(t,c.key,c)}}function dO(t,o,s){return o&&pO(t.prototype,o),t}function pt(t,o){var s=typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(!s){if(Array.isArray(t)||(s=fO(t))||o){s&&(t=s);var c=0,r=function(){};return{s:r,n:function(){return c>=t.length?{done:!0}:{done:!1,value:t[c++]}},e:function(u){throw u},f:r}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
3
- In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var e=!0,i=!1,a;return{s:function(){s=s.call(t)},n:function(){var u=s.next();return e=u.done,u},e:function(u){i=!0,a=u},f:function(){try{!e&&s.return!=null&&s.return()}finally{if(i)throw a}}}}function fO(t,o){if(t){if(typeof t=="string")return X(t,o);var s=Object.prototype.toString.call(t).slice(8,-1);if(s==="Object"&&t.constructor&&(s=t.constructor.name),s==="Map"||s==="Set")return Array.from(t);if(s==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(s))return X(t,o)}}function X(t,o){(o==null||o>t.length)&&(o=t.length);for(var s=0,c=new Array(o);s<o;s++)c[s]=t[s];return c}var gO=K,J={fg:"#FFF",bg:"#000",newline:!1,escapeXML:!1,stream:!1,colors:mO()};function mO(){var t={0:"#000",1:"#A00",2:"#0A0",3:"#A50",4:"#00A",5:"#A0A",6:"#0AA",7:"#AAA",8:"#555",9:"#F55",10:"#5F5",11:"#FF5",12:"#55F",13:"#F5F",14:"#5FF",15:"#FFF"};return k(0,5).forEach(function(o){k(0,5).forEach(function(s){k(0,5).forEach(function(c){return hO(o,s,c,t)})})}),k(0,23).forEach(function(o){var s=o+232,c=dt(o*10+8);t[s]="#"+c+c+c}),t}function hO(t,o,s,c){var r=16+t*36+o*6+s,e=t>0?t*40+55:0,i=o>0?o*40+55:0,a=s>0?s*40+55:0;c[r]=bO([e,i,a])}function dt(t){for(var o=t.toString(16);o.length<2;)o="0"+o;return o}function bO(t){var o=[],s=pt(t),c;try{for(s.s();!(c=s.n()).done;){var r=c.value;o.push(dt(r))}}catch(e){s.e(e)}finally{s.f()}return"#"+o.join("")}function Y(t,o,s,c){var r;return o==="text"?r=yO(s,c):o==="display"?r=wO(t,s,c):o==="xterm256Foreground"?r=R(t,c.colors[s]):o==="xterm256Background"?r=j(t,c.colors[s]):o==="rgb"&&(r=vO(t,s)),r}function vO(t,o){o=o.substring(2).slice(0,-1);var s=+o.substr(0,2),c=o.substring(5).split(";"),r=c.map(function(e){return("0"+Number(e).toString(16)).substr(-2)}).join("");return N(t,(s===38?"color:#":"background-color:#")+r)}function wO(t,o,s){o=parseInt(o,10);var c={"-1":function(){return"<br/>"},0:function(){return t.length&&ft(t)},1:function(){return T(t,"b")},3:function(){return T(t,"i")},4:function(){return T(t,"u")},8:function(){return N(t,"display:none")},9:function(){return T(t,"strike")},22:function(){return N(t,"font-weight:normal;text-decoration:none;font-style:normal")},23:function(){return Q(t,"i")},24:function(){return Q(t,"u")},39:function(){return R(t,s.fg)},49:function(){return j(t,s.bg)},53:function(){return N(t,"text-decoration:overline")}},r;return c[o]?r=c[o]():4<o&&o<7?r=T(t,"blink"):29<o&&o<38?r=R(t,s.colors[o-30]):39<o&&o<48?r=j(t,s.colors[o-40]):89<o&&o<98?r=R(t,s.colors[8+(o-90)]):99<o&&o<108&&(r=j(t,s.colors[8+(o-100)])),r}function ft(t){var o=t.slice(0);return t.length=0,o.reverse().map(function(s){return"</"+s+">"}).join("")}function k(t,o){for(var s=[],c=t;c<=o;c++)s.push(c);return s}function qO(t){return function(o){return(t===null||o.category!==t)&&t!=="all"}}function Z(t){t=parseInt(t,10);var o=null;return t===0?o="all":t===1?o="bold":2<t&&t<5?o="underline":4<t&&t<7?o="blink":t===8?o="hide":t===9?o="strike":29<t&&t<38||t===39||89<t&&t<98?o="foreground-color":(39<t&&t<48||t===49||99<t&&t<108)&&(o="background-color"),o}function yO(t,o){return o.escapeXML?gO.encodeXML(t):t}function T(t,o,s){return s||(s=""),t.push(o),"<".concat(o).concat(s?' style="'.concat(s,'"'):"",">")}function N(t,o){return T(t,"span",o)}function R(t,o){return T(t,"span","color:"+o)}function j(t,o){return T(t,"span","background-color:"+o)}function Q(t,o){var s;if(t.slice(-1)[0]===o&&(s=t.pop()),s)return"</"+o+">"}function xO(t,o,s){var c=!1,r=3;function e(){return""}function i(w,q){return s("xterm256Foreground",q),""}function a(w,q){return s("xterm256Background",q),""}function p(w){return o.newline?s("display",-1):s("text",w),""}function u(w,q){c=!0,q.trim().length===0&&(q="0"),q=q.trimRight(";").split(";");var A=pt(q),F;try{for(A.s();!(F=A.n()).done;){var bt=F.value;s("display",bt)}}catch(vt){A.e(vt)}finally{A.f()}return""}function E(w){return s("text",w),""}function f(w){return s("rgb",w),""}var d=[{pattern:/^\x08+/,sub:e},{pattern:/^\x1b\[[012]?K/,sub:e},{pattern:/^\x1b\[\(B/,sub:e},{pattern:/^\x1b\[[34]8;2;\d+;\d+;\d+m/,sub:f},{pattern:/^\x1b\[38;5;(\d+)m/,sub:i},{pattern:/^\x1b\[48;5;(\d+)m/,sub:a},{pattern:/^\n/,sub:p},{pattern:/^\r+\n/,sub:p},{pattern:/^\r/,sub:p},{pattern:/^\x1b\[((?:\d{1,3};?)+|)m/,sub:u},{pattern:/^\x1b\[\d?J/,sub:e},{pattern:/^\x1b\[\d{0,3};\d{0,3}f/,sub:e},{pattern:/^\x1b\[?[\d;]{0,3}/,sub:e},{pattern:/^(([^\x1b\x08\r\n])+)/,sub:E}];function v(w,q){q>r&&c||(c=!1,t=t.replace(w.pattern,w.sub))}var h=[],y=t,x=y.length;t:for(;x>0;){for(var D=0,P=0,mt=d.length;P<mt;D=++P){var ht=d[D];if(v(ht,D),t.length!==x){x=t.length;continue t}}if(t.length===x)break;h.push(0),x=t.length}return h}function LO(t,o,s){return o!=="text"&&(t=t.filter(qO(Z(s))),t.push({token:o,data:s,category:Z(s)})),t}var EO=function(){function t(o){uO(this,t),o=o||{},o.colors&&(o.colors=Object.assign({},J.colors,o.colors)),this.options=Object.assign({},J,o),this.stack=[],this.stickyStack=[]}return dO(t,[{key:"toHtml",value:function(s){var c=this;s=typeof s=="string"?[s]:s;var r=this.stack,e=this.options,i=[];return this.stickyStack.forEach(function(a){var p=Y(r,a.token,a.data,e);p&&i.push(p)}),xO(s.join(""),e,function(a,p){var u=Y(r,a,p,e);u&&i.push(u),e.stream&&(c.stickyStack=LO(c.stickyStack,a,p))}),r.length&&i.push(ft(r)),i.join("")}}]),t}(),TO=EO;const SO=wt(TO);function gt(){const t=xt();return m.useMemo(()=>new SO(t==="dark"?{fg:"#d6deeb",bg:"#121318",escapeXML:!0}:{fg:"#000000",bg:"#f3f3f3",escapeXML:!0}),[t])}const DO=l.intersection(l.object({type:l.literal("epicshop:test-status-update"),timestamp:l.number()}),l.union([l.object({status:l.literal("pending")}),l.object({status:l.literal("pass")}),l.object({status:l.literal("fail"),error:l.string()})])),AO=l.object({type:l.literal("epicshop:test-step-update"),status:l.literal("pass"),title:l.string(),timestamp:l.number()}),kO=l.union([AO,DO]);function NO({pathname:t,testFile:o}){const s=gt(),c=m.useRef(null),[r,e]=m.useState(null),[i,a]=m.useState([]);m.useEffect(()=>{function f(d){var y;if(d.source!==((y=c.current)==null?void 0:y.contentWindow)||"request"in d.data)return;const v=kO.safeParse(d.data,{path:["messageEvent","data"]});if(!v.success){console.error("Invalid message from test iframe",d.data,v.error);return}const{data:h}=v;h.type==="epicshop:test-status-update"&&(h.status==="pending"&&a([]),e(h)),h.type==="epicshop:test-step-update"&&a(x=>[...x,h])}return window.addEventListener("message",f),()=>{window.removeEventListener("message",f)}},[]);const p={pending:n.jsx(V,{"aria-label":"Pending"}),pass:n.jsx(g,{name:"CheckSmall","aria-label":"Passed",className:"text-emerald-700"}),fail:n.jsx(g,{name:"Remove","aria-label":"Failed",className:"text-foreground-danger"}),unknown:n.jsx(g,{name:"Question","aria-label":"Unknown",className:"animate-pulse"})}[(r==null?void 0:r.status)??"unknown"],u=i.sort((f,d)=>f.timestamp-d.timestamp),E={pass:n.jsx(g,{name:"CheckSmall","aria-label":"Passed"}),fail:n.jsx(g,{name:"Remove","aria-label":"Failed"}),unknown:n.jsx(g,{name:"Question","aria-label":"Unknown",className:"animate-pulse"})};return n.jsx(n.Fragment,{children:n.jsx(qt,{className:"w-full",type:"multiple",children:n.jsx(yt,{icon:p,title:o,forceMount:!0,children:n.jsxs("div",{className:"not-prose",children:[n.jsxs("div",{className:"flex flex-col gap-2 p-5 pt-3",children:[n.jsx("ul",{className:"flex flex-col gap-2",children:u.map((f,d)=>n.jsx("li",{children:n.jsxs("div",{className:"flex items-baseline gap-2 text-emerald-700",children:[n.jsxs("span",{children:[d+1,"."]}),n.jsx("span",{children:E[f.status]}),n.jsx("pre",{className:"max-h-48 overflow-y-auto p-4 scrollbar-thin scrollbar-thumb-scrollbar",children:f.title})]})},f.timestamp+f.title))}),(r==null?void 0:r.status)==="fail"?n.jsxs("div",{className:"flex items-baseline gap-2 text-foreground-danger",children:[n.jsxs("span",{children:[u.length+1,"."]}),n.jsx("span",{children:E.fail}),n.jsx("pre",{className:"max-h-48 overflow-y-auto p-4 scrollbar-thin scrollbar-thumb-scrollbar",dangerouslySetInnerHTML:{__html:s.toHtml(r.error)}})]}):null,n.jsx("iframe",{ref:c,title:o,src:t+o,className:"mt-5 min-h-[420px] w-full border bg-white"})]}),n.jsxs("div",{className:"flex border-y",children:[n.jsx("button",{onClick:()=>{var f,d;return(d=(f=c.current)==null?void 0:f.contentWindow)==null?void 0:d.location.reload()},className:"border-r p-3",children:n.jsx(g,{name:"Refresh","aria-label":"Rerun Tests"})}),n.jsx("a",{href:t+o,target:"_blank",rel:"noreferrer",className:"border-r p-3",children:n.jsx(g,{name:"ExternalLink","aria-label":"Open in New Window"})})]})]})})})})}const RO=l.union([l.object({type:l.literal("init"),exitCode:l.number().nullable().optional(),isRunning:l.boolean(),output:l.array(l.object({type:l.union([l.literal("stdout"),l.literal("stderr")]),content:l.string(),timestamp:l.number()}))}),l.object({type:l.union([l.literal("stdout"),l.literal("stderr")]),data:l.string(),timestamp:l.number()}),l.object({type:l.literal("exit"),isRunning:l.literal(!1),code:l.number().nullable()})]),jO=l.array(RO);function CO(t,o){return o(t)}function UO({name:t}){const[o,s]=m.useReducer(CO,{version:0,isRunning:!1,exitCode:void 0,lines:[]}),c=gt(),{version:r,isRunning:e,exitCode:i,lines:a}=o,p=Lt(`/test?${new URLSearchParams({name:t})}&v=${r}`);return m.useEffect(()=>{if(!p)return;const u=JSON.parse(p),E=jO.safeParse(u);if(!E.success){console.error(E.error.flatten());return}for(const f of E.data)switch(f.type){case"exit":{const{isRunning:d,code:v}=f;s(h=>({...h,isRunning:d,exitCode:v}));break}case"init":{const{output:d,exitCode:v,isRunning:h}=f;s(y=>({...y,lines:d,exitCode:v,isRunning:h}));break}case"stderr":case"stdout":{const{type:d,data:v,timestamp:h}=f;s(y=>({...y,lines:[...y.lines,{type:d,content:v,timestamp:h}].sort((x,D)=>x.timestamp-D.timestamp),isRunning:!0}));break}}},[p]),n.jsxs("div",{className:"relative flex h-full w-full flex-col overflow-y-auto",children:[n.jsxs("div",{className:"flex h-12 w-full flex-shrink-0 items-center justify-between border-b",children:[n.jsxs("div",{className:"flex h-full items-center",children:[!e&&n.jsx($O,{name:t,onRun:()=>{s(u=>({...u,exitCode:void 0,lines:[],version:u.version+1}))}}),e?n.jsxs(n.Fragment,{children:[n.jsx("div",{className:"flex h-full flex-grow items-center justify-center border-r px-3.5",children:n.jsx(V,{role:"status","aria-label":"Running Tests"})}),n.jsx(VO,{name:t})]}):null]}),!e&&i!==void 0&&n.jsx("p",{className:"pr-3.5 leading-none",children:i===0?"Tests passed":`Test failed (exit code ${String(i)})`}),!e&&i!==void 0&&n.jsx(HO,{name:t,onClear:()=>{s(u=>({...u,exitCode:void 0,lines:[]}))}})]}),n.jsxs("div",{className:"flex h-full flex-col gap-5 p-5",children:[n.jsx("p",{className:"font-mono text-sm font-medium uppercase",children:"Test Output"}),n.jsx("pre",{className:"shadow-on-scrollbox flex-1 overflow-y-scroll scrollbar-thin scrollbar-thumb-scrollbar",children:a.map(u=>n.jsx("code",{"data-type":u.type,dangerouslySetInnerHTML:{__html:c.toHtml(u.content)}},u.timestamp))})]})]})}function $O({name:t,onRun:o}){const s=B(),c=m.useRef(o);return m.useEffect(()=>{c.current=o},[o]),m.useEffect(()=>{var r,e;(r=s.data)!=null&&r.success&&((e=c.current)==null||e.call(c))},[s.data]),n.jsxs(s.Form,{method:"POST",action:"/test",className:"h-full",children:[n.jsx("input",{type:"hidden",name:"name",value:t}),n.jsx(C,{content:s.state==="idle"?"Run Tests":"Running Tests...",children:n.jsx("button",{type:"submit",name:"intent",value:"run",className:"flex h-full flex-grow items-center justify-center border-r px-3.5",children:s.state==="idle"?n.jsx(g,{name:"TriangleSmall"}):n.jsx(V,{role:"status"})})})]})}function HO({name:t,onClear:o}){const s=B(),c=m.useRef(o);return m.useEffect(()=>{c.current=o},[o]),m.useEffect(()=>{var r,e;(r=s.data)!=null&&r.success&&((e=c.current)==null||e.call(c))},[s.data]),n.jsxs(s.Form,{method:"POST",action:"/test",className:"h-full",children:[n.jsx("input",{type:"hidden",name:"name",value:t}),n.jsx(C,{content:s.state==="idle"?"Clear Tests":"Clearing Tests...",children:n.jsx("button",{type:"submit",name:"intent",value:"clear",className:"flex h-full flex-grow items-center justify-center border-l px-3.5",children:s.state==="idle"?n.jsx(g,{name:"Clear"}):n.jsx(g,{name:"Clear",className:"animate-pulse",role:"status"})})})]})}function VO({name:t,onStop:o}){const s=B(),c=m.useRef(o);return m.useEffect(()=>{c.current=o},[o]),m.useEffect(()=>{var r,e;(r=s.data)!=null&&r.success&&((e=c.current)==null||e.call(c))},[s.data]),n.jsxs(s.Form,{method:"POST",action:"/test",className:"h-full",children:[n.jsx("input",{type:"hidden",name:"name",value:t}),n.jsx(C,{content:s.state==="idle"?"Stop Tests":"Stopping Tests...",children:n.jsx("button",{type:"submit",name:"intent",value:"stop",className:"flex h-full flex-grow items-center justify-center border-r px-3.5",children:s.state==="idle"?n.jsx(g,{name:"Stop"}):n.jsx(g,{name:"Stop",className:"animate-pulse",role:"status"})})})]})}function JO({appInfo:t,problemAppName:o,allApps:s,isUpToDate:c}){return n.jsx(Tt,{playgroundAppName:t==null?void 0:t.appName,problemAppName:o,allApps:s,isUpToDate:c,children:n.jsx(BO,{playgroundAppInfo:t})})}function BO({playgroundAppInfo:t}){const[o,s]=m.useState(0);if(!t)return n.jsx("div",{className:"flex h-full items-center justify-center text-lg",children:n.jsx("p",{children:"No tests here 😢 Sorry."})});if(t.test.type==="script")return n.jsx(UO,{name:t.name});if(t.test.type==="browser"){const{pathname:c}=t.test;return n.jsxs("div",{className:"flex h-full w-full flex-grow flex-col overflow-y-auto",children:[t.test.testFiles.map(r=>n.jsx("div",{children:n.jsx(NO,{pathname:c,testFile:r})},r)),n.jsx("div",{className:"px-3 py-[21px]",children:n.jsxs("button",{onClick:()=>s(r=>r+1),className:"flex items-center gap-2 font-mono text-sm uppercase leading-none",children:[n.jsx(g,{name:"Refresh","aria-hidden":!0})," Rerun All Tests"]})})]},o)}return n.jsx("div",{className:"flex h-full items-center justify-center text-lg",children:n.jsx("p",{children:"No tests here 😢 Sorry."})})}export{Tt as P,BO as T,JO as a};
4
- //# sourceMappingURL=tests-t3Udab79.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tests-t3Udab79.js","sources":["../../../app/routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/__shared/playground-window.tsx","../../../../../node_modules/entities/lib/decode_codepoint.js","../../../../../node_modules/entities/lib/decode.js","../../../../../node_modules/entities/lib/encode.js","../../../../../node_modules/entities/lib/index.js","../../../../../node_modules/ansi-to-html/lib/ansi_to_html.js","../../../app/utils/ansi-text.ts","../../../app/components/in-browser-test-runner.tsx","../../../app/routes/test.tsx","../../../app/routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/__shared/tests.tsx"],"sourcesContent":["import { Icon } from '#app/components/icons'\nimport { SimpleTooltip } from '#app/components/ui/tooltip.js'\nimport { PlaygroundChooser, SetPlayground } from '#app/routes/set-playground'\n\nexport function PlaygroundWindow({\n\tplaygroundAppName,\n\tproblemAppName,\n\tisUpToDate,\n\tallApps,\n\tchildren,\n}: {\n\tplaygroundAppName?: string\n\tproblemAppName?: string\n\tisUpToDate: boolean\n\tallApps: Array<{ name: string; displayName: string }>\n\tchildren: React.ReactNode\n}) {\n\tconst isCorrectApp = playgroundAppName === problemAppName\n\tconst playgroundLinkedUI =\n\t\tisCorrectApp && isUpToDate ? (\n\t\t\t<Icon size=\"xl\" name=\"Linked\" />\n\t\t) : (\n\t\t\t<Icon\n\t\t\t\tsize=\"xl\"\n\t\t\t\tname=\"Unlinked\"\n\t\t\t\tclassName=\"animate-pulse text-foreground-danger\"\n\t\t\t/>\n\t\t)\n\tlet setPlaygroundTooltipText = 'Click to reset Playground.'\n\tif (!isUpToDate) {\n\t\tsetPlaygroundTooltipText =\n\t\t\t'Playground is out of date. Click to reset Playground.'\n\t}\n\tif (!isCorrectApp) {\n\t\tsetPlaygroundTooltipText =\n\t\t\t'Playground is not set to the right app. Click to set Playground.'\n\t}\n\treturn (\n\t\t<div className=\"flex h-full w-full flex-col justify-between\">\n\t\t\t<div className=\"flex h-14 flex-shrink-0 items-center justify-start gap-2 border-b px-3\">\n\t\t\t\t<div className=\"display-alt-up\">\n\t\t\t\t\t{problemAppName ? (\n\t\t\t\t\t\t<SetPlayground\n\t\t\t\t\t\t\tappName={problemAppName}\n\t\t\t\t\t\t\ttooltipText={setPlaygroundTooltipText}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{playgroundLinkedUI}\n\t\t\t\t\t\t</SetPlayground>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<SimpleTooltip content=\"No problem app available for this step\">\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t<Icon name=\"Question\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</SimpleTooltip>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t<div className=\"display-alt-down\">\n\t\t\t\t\t{playgroundAppName ? (\n\t\t\t\t\t\t<SetPlayground\n\t\t\t\t\t\t\tappName={playgroundAppName}\n\t\t\t\t\t\t\treset\n\t\t\t\t\t\t\ttooltipText=\"Reset Playground\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div className=\"flex h-7 w-7 items-center justify-center\">\n\t\t\t\t\t\t\t\t<Icon name=\"Refresh\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</SetPlayground>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<div className=\"h-7 w-7\" />\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t<PlaygroundChooser\n\t\t\t\t\tallApps={allApps}\n\t\t\t\t\tplaygroundAppName={playgroundAppName}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<div className=\"flex h-full flex-1 flex-grow items-center justify-center\">\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar decode_json_1 = __importDefault(require(\"./maps/decode.json\"));\n// Adapted from https://github.com/mathiasbynens/he/blob/master/src/he.js#L94-L119\nvar fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.fromCodePoint ||\n function (codePoint) {\n var output = \"\";\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n output += String.fromCharCode(codePoint);\n return output;\n };\nfunction decodeCodePoint(codePoint) {\n if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n return \"\\uFFFD\";\n }\n if (codePoint in decode_json_1.default) {\n codePoint = decode_json_1.default[codePoint];\n }\n return fromCodePoint(codePoint);\n}\nexports.default = decodeCodePoint;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodeHTML = exports.decodeHTMLStrict = exports.decodeXML = void 0;\nvar entities_json_1 = __importDefault(require(\"./maps/entities.json\"));\nvar legacy_json_1 = __importDefault(require(\"./maps/legacy.json\"));\nvar xml_json_1 = __importDefault(require(\"./maps/xml.json\"));\nvar decode_codepoint_1 = __importDefault(require(\"./decode_codepoint\"));\nvar strictEntityRe = /&(?:[a-zA-Z0-9]+|#[xX][\\da-fA-F]+|#\\d+);/g;\nexports.decodeXML = getStrictDecoder(xml_json_1.default);\nexports.decodeHTMLStrict = getStrictDecoder(entities_json_1.default);\nfunction getStrictDecoder(map) {\n var replace = getReplacer(map);\n return function (str) { return String(str).replace(strictEntityRe, replace); };\n}\nvar sorter = function (a, b) { return (a < b ? 1 : -1); };\nexports.decodeHTML = (function () {\n var legacy = Object.keys(legacy_json_1.default).sort(sorter);\n var keys = Object.keys(entities_json_1.default).sort(sorter);\n for (var i = 0, j = 0; i < keys.length; i++) {\n if (legacy[j] === keys[i]) {\n keys[i] += \";?\";\n j++;\n }\n else {\n keys[i] += \";\";\n }\n }\n var re = new RegExp(\"&(?:\" + keys.join(\"|\") + \"|#[xX][\\\\da-fA-F]+;?|#\\\\d+;?)\", \"g\");\n var replace = getReplacer(entities_json_1.default);\n function replacer(str) {\n if (str.substr(-1) !== \";\")\n str += \";\";\n return replace(str);\n }\n // TODO consider creating a merged map\n return function (str) { return String(str).replace(re, replacer); };\n})();\nfunction getReplacer(map) {\n return function replace(str) {\n if (str.charAt(1) === \"#\") {\n var secondChar = str.charAt(2);\n if (secondChar === \"X\" || secondChar === \"x\") {\n return decode_codepoint_1.default(parseInt(str.substr(3), 16));\n }\n return decode_codepoint_1.default(parseInt(str.substr(2), 10));\n }\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n return map[str.slice(1, -1)] || str;\n };\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.escapeUTF8 = exports.escape = exports.encodeNonAsciiHTML = exports.encodeHTML = exports.encodeXML = void 0;\nvar xml_json_1 = __importDefault(require(\"./maps/xml.json\"));\nvar inverseXML = getInverseObj(xml_json_1.default);\nvar xmlReplacer = getInverseReplacer(inverseXML);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using XML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `&#xfc;`) will be used.\n */\nexports.encodeXML = getASCIIEncoder(inverseXML);\nvar entities_json_1 = __importDefault(require(\"./maps/entities.json\"));\nvar inverseHTML = getInverseObj(entities_json_1.default);\nvar htmlReplacer = getInverseReplacer(inverseHTML);\n/**\n * Encodes all entities and non-ASCII characters in the input.\n *\n * This includes characters that are valid ASCII characters in HTML documents.\n * For example `#` will be encoded as `&num;`. To get a more compact output,\n * consider using the `encodeNonAsciiHTML` function.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `&#xfc;`) will be used.\n */\nexports.encodeHTML = getInverse(inverseHTML, htmlReplacer);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in HTML\n * documents using HTML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `&#xfc;`) will be used.\n */\nexports.encodeNonAsciiHTML = getASCIIEncoder(inverseHTML);\nfunction getInverseObj(obj) {\n return Object.keys(obj)\n .sort()\n .reduce(function (inverse, name) {\n inverse[obj[name]] = \"&\" + name + \";\";\n return inverse;\n }, {});\n}\nfunction getInverseReplacer(inverse) {\n var single = [];\n var multiple = [];\n for (var _i = 0, _a = Object.keys(inverse); _i < _a.length; _i++) {\n var k = _a[_i];\n if (k.length === 1) {\n // Add value to single array\n single.push(\"\\\\\" + k);\n }\n else {\n // Add value to multiple array\n multiple.push(k);\n }\n }\n // Add ranges to single characters.\n single.sort();\n for (var start = 0; start < single.length - 1; start++) {\n // Find the end of a run of characters\n var end = start;\n while (end < single.length - 1 &&\n single[end].charCodeAt(1) + 1 === single[end + 1].charCodeAt(1)) {\n end += 1;\n }\n var count = 1 + end - start;\n // We want to replace at least three characters\n if (count < 3)\n continue;\n single.splice(start, count, single[start] + \"-\" + single[end]);\n }\n multiple.unshift(\"[\" + single.join(\"\") + \"]\");\n return new RegExp(multiple.join(\"|\"), \"g\");\n}\n// /[^\\0-\\x7F]/gu\nvar reNonASCII = /(?:[\\x80-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])/g;\nvar getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt != null\n ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n function (str) { return str.codePointAt(0); }\n : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n function (c) {\n return (c.charCodeAt(0) - 0xd800) * 0x400 +\n c.charCodeAt(1) -\n 0xdc00 +\n 0x10000;\n };\nfunction singleCharReplacer(c) {\n return \"&#x\" + (c.length > 1 ? getCodePoint(c) : c.charCodeAt(0))\n .toString(16)\n .toUpperCase() + \";\";\n}\nfunction getInverse(inverse, re) {\n return function (data) {\n return data\n .replace(re, function (name) { return inverse[name]; })\n .replace(reNonASCII, singleCharReplacer);\n };\n}\nvar reEscapeChars = new RegExp(xmlReplacer.source + \"|\" + reNonASCII.source, \"g\");\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using numeric hexadecimal reference (eg. `&#xfc;`).\n *\n * Have a look at `escapeUTF8` if you want a more concise output at the expense\n * of reduced transportability.\n *\n * @param data String to escape.\n */\nfunction escape(data) {\n return data.replace(reEscapeChars, singleCharReplacer);\n}\nexports.escape = escape;\n/**\n * Encodes all characters not valid in XML documents using numeric hexadecimal\n * reference (eg. `&#xfc;`).\n *\n * Note that the output will be character-set dependent.\n *\n * @param data String to escape.\n */\nfunction escapeUTF8(data) {\n return data.replace(xmlReplacer, singleCharReplacer);\n}\nexports.escapeUTF8 = escapeUTF8;\nfunction getASCIIEncoder(obj) {\n return function (data) {\n return data.replace(reEscapeChars, function (c) { return obj[c] || singleCharReplacer(c); });\n };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodeXMLStrict = exports.decodeHTML5Strict = exports.decodeHTML4Strict = exports.decodeHTML5 = exports.decodeHTML4 = exports.decodeHTMLStrict = exports.decodeHTML = exports.decodeXML = exports.encodeHTML5 = exports.encodeHTML4 = exports.escapeUTF8 = exports.escape = exports.encodeNonAsciiHTML = exports.encodeHTML = exports.encodeXML = exports.encode = exports.decodeStrict = exports.decode = void 0;\nvar decode_1 = require(\"./decode\");\nvar encode_1 = require(\"./encode\");\n/**\n * Decodes a string with entities.\n *\n * @param data String to decode.\n * @param level Optional level to decode at. 0 = XML, 1 = HTML. Default is 0.\n * @deprecated Use `decodeXML` or `decodeHTML` directly.\n */\nfunction decode(data, level) {\n return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTML)(data);\n}\nexports.decode = decode;\n/**\n * Decodes a string with entities. Does not allow missing trailing semicolons for entities.\n *\n * @param data String to decode.\n * @param level Optional level to decode at. 0 = XML, 1 = HTML. Default is 0.\n * @deprecated Use `decodeHTMLStrict` or `decodeXML` directly.\n */\nfunction decodeStrict(data, level) {\n return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTMLStrict)(data);\n}\nexports.decodeStrict = decodeStrict;\n/**\n * Encodes a string with entities.\n *\n * @param data String to encode.\n * @param level Optional level to encode at. 0 = XML, 1 = HTML. Default is 0.\n * @deprecated Use `encodeHTML`, `encodeXML` or `encodeNonAsciiHTML` directly.\n */\nfunction encode(data, level) {\n return (!level || level <= 0 ? encode_1.encodeXML : encode_1.encodeHTML)(data);\n}\nexports.encode = encode;\nvar encode_2 = require(\"./encode\");\nObject.defineProperty(exports, \"encodeXML\", { enumerable: true, get: function () { return encode_2.encodeXML; } });\nObject.defineProperty(exports, \"encodeHTML\", { enumerable: true, get: function () { return encode_2.encodeHTML; } });\nObject.defineProperty(exports, \"encodeNonAsciiHTML\", { enumerable: true, get: function () { return encode_2.encodeNonAsciiHTML; } });\nObject.defineProperty(exports, \"escape\", { enumerable: true, get: function () { return encode_2.escape; } });\nObject.defineProperty(exports, \"escapeUTF8\", { enumerable: true, get: function () { return encode_2.escapeUTF8; } });\n// Legacy aliases (deprecated)\nObject.defineProperty(exports, \"encodeHTML4\", { enumerable: true, get: function () { return encode_2.encodeHTML; } });\nObject.defineProperty(exports, \"encodeHTML5\", { enumerable: true, get: function () { return encode_2.encodeHTML; } });\nvar decode_2 = require(\"./decode\");\nObject.defineProperty(exports, \"decodeXML\", { enumerable: true, get: function () { return decode_2.decodeXML; } });\nObject.defineProperty(exports, \"decodeHTML\", { enumerable: true, get: function () { return decode_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTMLStrict\", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });\n// Legacy aliases (deprecated)\nObject.defineProperty(exports, \"decodeHTML4\", { enumerable: true, get: function () { return decode_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTML5\", { enumerable: true, get: function () { return decode_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTML4Strict\", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });\nObject.defineProperty(exports, \"decodeHTML5Strict\", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });\nObject.defineProperty(exports, \"decodeXMLStrict\", { enumerable: true, get: function () { return decode_2.decodeXML; } });\n","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nvar entities = require('entities');\n\nvar defaults = {\n fg: '#FFF',\n bg: '#000',\n newline: false,\n escapeXML: false,\n stream: false,\n colors: getDefaultColors()\n};\n\nfunction getDefaultColors() {\n var colors = {\n 0: '#000',\n 1: '#A00',\n 2: '#0A0',\n 3: '#A50',\n 4: '#00A',\n 5: '#A0A',\n 6: '#0AA',\n 7: '#AAA',\n 8: '#555',\n 9: '#F55',\n 10: '#5F5',\n 11: '#FF5',\n 12: '#55F',\n 13: '#F5F',\n 14: '#5FF',\n 15: '#FFF'\n };\n range(0, 5).forEach(function (red) {\n range(0, 5).forEach(function (green) {\n range(0, 5).forEach(function (blue) {\n return setStyleColor(red, green, blue, colors);\n });\n });\n });\n range(0, 23).forEach(function (gray) {\n var c = gray + 232;\n var l = toHexString(gray * 10 + 8);\n colors[c] = '#' + l + l + l;\n });\n return colors;\n}\n/**\n * @param {number} red\n * @param {number} green\n * @param {number} blue\n * @param {object} colors\n */\n\n\nfunction setStyleColor(red, green, blue, colors) {\n var c = 16 + red * 36 + green * 6 + blue;\n var r = red > 0 ? red * 40 + 55 : 0;\n var g = green > 0 ? green * 40 + 55 : 0;\n var b = blue > 0 ? blue * 40 + 55 : 0;\n colors[c] = toColorHexString([r, g, b]);\n}\n/**\n * Converts from a number like 15 to a hex string like 'F'\n * @param {number} num\n * @returns {string}\n */\n\n\nfunction toHexString(num) {\n var str = num.toString(16);\n\n while (str.length < 2) {\n str = '0' + str;\n }\n\n return str;\n}\n/**\n * Converts from an array of numbers like [15, 15, 15] to a hex string like 'FFF'\n * @param {[red, green, blue]} ref\n * @returns {string}\n */\n\n\nfunction toColorHexString(ref) {\n var results = [];\n\n var _iterator = _createForOfIteratorHelper(ref),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var r = _step.value;\n results.push(toHexString(r));\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return '#' + results.join('');\n}\n/**\n * @param {Array} stack\n * @param {string} token\n * @param {*} data\n * @param {object} options\n */\n\n\nfunction generateOutput(stack, token, data, options) {\n var result;\n\n if (token === 'text') {\n result = pushText(data, options);\n } else if (token === 'display') {\n result = handleDisplay(stack, data, options);\n } else if (token === 'xterm256Foreground') {\n result = pushForegroundColor(stack, options.colors[data]);\n } else if (token === 'xterm256Background') {\n result = pushBackgroundColor(stack, options.colors[data]);\n } else if (token === 'rgb') {\n result = handleRgb(stack, data);\n }\n\n return result;\n}\n/**\n * @param {Array} stack\n * @param {string} data\n * @returns {*}\n */\n\n\nfunction handleRgb(stack, data) {\n data = data.substring(2).slice(0, -1);\n var operation = +data.substr(0, 2);\n var color = data.substring(5).split(';');\n var rgb = color.map(function (value) {\n return ('0' + Number(value).toString(16)).substr(-2);\n }).join('');\n return pushStyle(stack, (operation === 38 ? 'color:#' : 'background-color:#') + rgb);\n}\n/**\n * @param {Array} stack\n * @param {number} code\n * @param {object} options\n * @returns {*}\n */\n\n\nfunction handleDisplay(stack, code, options) {\n code = parseInt(code, 10);\n var codeMap = {\n '-1': function _() {\n return '<br/>';\n },\n 0: function _() {\n return stack.length && resetStyles(stack);\n },\n 1: function _() {\n return pushTag(stack, 'b');\n },\n 3: function _() {\n return pushTag(stack, 'i');\n },\n 4: function _() {\n return pushTag(stack, 'u');\n },\n 8: function _() {\n return pushStyle(stack, 'display:none');\n },\n 9: function _() {\n return pushTag(stack, 'strike');\n },\n 22: function _() {\n return pushStyle(stack, 'font-weight:normal;text-decoration:none;font-style:normal');\n },\n 23: function _() {\n return closeTag(stack, 'i');\n },\n 24: function _() {\n return closeTag(stack, 'u');\n },\n 39: function _() {\n return pushForegroundColor(stack, options.fg);\n },\n 49: function _() {\n return pushBackgroundColor(stack, options.bg);\n },\n 53: function _() {\n return pushStyle(stack, 'text-decoration:overline');\n }\n };\n var result;\n\n if (codeMap[code]) {\n result = codeMap[code]();\n } else if (4 < code && code < 7) {\n result = pushTag(stack, 'blink');\n } else if (29 < code && code < 38) {\n result = pushForegroundColor(stack, options.colors[code - 30]);\n } else if (39 < code && code < 48) {\n result = pushBackgroundColor(stack, options.colors[code - 40]);\n } else if (89 < code && code < 98) {\n result = pushForegroundColor(stack, options.colors[8 + (code - 90)]);\n } else if (99 < code && code < 108) {\n result = pushBackgroundColor(stack, options.colors[8 + (code - 100)]);\n }\n\n return result;\n}\n/**\n * Clear all the styles\n * @returns {string}\n */\n\n\nfunction resetStyles(stack) {\n var stackClone = stack.slice(0);\n stack.length = 0;\n return stackClone.reverse().map(function (tag) {\n return '</' + tag + '>';\n }).join('');\n}\n/**\n * Creates an array of numbers ranging from low to high\n * @param {number} low\n * @param {number} high\n * @returns {Array}\n * @example range(3, 7); // creates [3, 4, 5, 6, 7]\n */\n\n\nfunction range(low, high) {\n var results = [];\n\n for (var j = low; j <= high; j++) {\n results.push(j);\n }\n\n return results;\n}\n/**\n * Returns a new function that is true if value is NOT the same category\n * @param {string} category\n * @returns {function}\n */\n\n\nfunction notCategory(category) {\n return function (e) {\n return (category === null || e.category !== category) && category !== 'all';\n };\n}\n/**\n * Converts a code into an ansi token type\n * @param {number} code\n * @returns {string}\n */\n\n\nfunction categoryForCode(code) {\n code = parseInt(code, 10);\n var result = null;\n\n if (code === 0) {\n result = 'all';\n } else if (code === 1) {\n result = 'bold';\n } else if (2 < code && code < 5) {\n result = 'underline';\n } else if (4 < code && code < 7) {\n result = 'blink';\n } else if (code === 8) {\n result = 'hide';\n } else if (code === 9) {\n result = 'strike';\n } else if (29 < code && code < 38 || code === 39 || 89 < code && code < 98) {\n result = 'foreground-color';\n } else if (39 < code && code < 48 || code === 49 || 99 < code && code < 108) {\n result = 'background-color';\n }\n\n return result;\n}\n/**\n * @param {string} text\n * @param {object} options\n * @returns {string}\n */\n\n\nfunction pushText(text, options) {\n if (options.escapeXML) {\n return entities.encodeXML(text);\n }\n\n return text;\n}\n/**\n * @param {Array} stack\n * @param {string} tag\n * @param {string} [style='']\n * @returns {string}\n */\n\n\nfunction pushTag(stack, tag, style) {\n if (!style) {\n style = '';\n }\n\n stack.push(tag);\n return \"<\".concat(tag).concat(style ? \" style=\\\"\".concat(style, \"\\\"\") : '', \">\");\n}\n/**\n * @param {Array} stack\n * @param {string} style\n * @returns {string}\n */\n\n\nfunction pushStyle(stack, style) {\n return pushTag(stack, 'span', style);\n}\n\nfunction pushForegroundColor(stack, color) {\n return pushTag(stack, 'span', 'color:' + color);\n}\n\nfunction pushBackgroundColor(stack, color) {\n return pushTag(stack, 'span', 'background-color:' + color);\n}\n/**\n * @param {Array} stack\n * @param {string} style\n * @returns {string}\n */\n\n\nfunction closeTag(stack, style) {\n var last;\n\n if (stack.slice(-1)[0] === style) {\n last = stack.pop();\n }\n\n if (last) {\n return '</' + style + '>';\n }\n}\n/**\n * @param {string} text\n * @param {object} options\n * @param {function} callback\n * @returns {Array}\n */\n\n\nfunction tokenize(text, options, callback) {\n var ansiMatch = false;\n var ansiHandler = 3;\n\n function remove() {\n return '';\n }\n\n function removeXterm256Foreground(m, g1) {\n callback('xterm256Foreground', g1);\n return '';\n }\n\n function removeXterm256Background(m, g1) {\n callback('xterm256Background', g1);\n return '';\n }\n\n function newline(m) {\n if (options.newline) {\n callback('display', -1);\n } else {\n callback('text', m);\n }\n\n return '';\n }\n\n function ansiMess(m, g1) {\n ansiMatch = true;\n\n if (g1.trim().length === 0) {\n g1 = '0';\n }\n\n g1 = g1.trimRight(';').split(';');\n\n var _iterator2 = _createForOfIteratorHelper(g1),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var g = _step2.value;\n callback('display', g);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n return '';\n }\n\n function realText(m) {\n callback('text', m);\n return '';\n }\n\n function rgb(m) {\n callback('rgb', m);\n return '';\n }\n /* eslint no-control-regex:0 */\n\n\n var tokens = [{\n pattern: /^\\x08+/,\n sub: remove\n }, {\n pattern: /^\\x1b\\[[012]?K/,\n sub: remove\n }, {\n pattern: /^\\x1b\\[\\(B/,\n sub: remove\n }, {\n pattern: /^\\x1b\\[[34]8;2;\\d+;\\d+;\\d+m/,\n sub: rgb\n }, {\n pattern: /^\\x1b\\[38;5;(\\d+)m/,\n sub: removeXterm256Foreground\n }, {\n pattern: /^\\x1b\\[48;5;(\\d+)m/,\n sub: removeXterm256Background\n }, {\n pattern: /^\\n/,\n sub: newline\n }, {\n pattern: /^\\r+\\n/,\n sub: newline\n }, {\n pattern: /^\\r/,\n sub: newline\n }, {\n pattern: /^\\x1b\\[((?:\\d{1,3};?)+|)m/,\n sub: ansiMess\n }, {\n // CSI n J\n // ED - Erase in Display Clears part of the screen.\n // If n is 0 (or missing), clear from cursor to end of screen.\n // If n is 1, clear from cursor to beginning of the screen.\n // If n is 2, clear entire screen (and moves cursor to upper left on DOS ANSI.SYS).\n // If n is 3, clear entire screen and delete all lines saved in the scrollback buffer\n // (this feature was added for xterm and is supported by other terminal applications).\n pattern: /^\\x1b\\[\\d?J/,\n sub: remove\n }, {\n // CSI n ; m f\n // HVP - Horizontal Vertical Position Same as CUP\n pattern: /^\\x1b\\[\\d{0,3};\\d{0,3}f/,\n sub: remove\n }, {\n // catch-all for CSI sequences?\n pattern: /^\\x1b\\[?[\\d;]{0,3}/,\n sub: remove\n }, {\n /**\n * extracts real text - not containing:\n * - `\\x1b' - ESC - escape (Ascii 27)\n * - '\\x08' - BS - backspace (Ascii 8)\n * - `\\n` - Newline - linefeed (LF) (ascii 10)\n * - `\\r` - Windows Carriage Return (CR)\n */\n pattern: /^(([^\\x1b\\x08\\r\\n])+)/,\n sub: realText\n }];\n\n function process(handler, i) {\n if (i > ansiHandler && ansiMatch) {\n return;\n }\n\n ansiMatch = false;\n text = text.replace(handler.pattern, handler.sub);\n }\n\n var results1 = [];\n var _text = text,\n length = _text.length;\n\n outer: while (length > 0) {\n for (var i = 0, o = 0, len = tokens.length; o < len; i = ++o) {\n var handler = tokens[i];\n process(handler, i);\n\n if (text.length !== length) {\n // We matched a token and removed it from the text. We need to\n // start matching *all* tokens against the new text.\n length = text.length;\n continue outer;\n }\n }\n\n if (text.length === length) {\n break;\n }\n\n results1.push(0);\n length = text.length;\n }\n\n return results1;\n}\n/**\n * If streaming, then the stack is \"sticky\"\n *\n * @param {Array} stickyStack\n * @param {string} token\n * @param {*} data\n * @returns {Array}\n */\n\n\nfunction updateStickyStack(stickyStack, token, data) {\n if (token !== 'text') {\n stickyStack = stickyStack.filter(notCategory(categoryForCode(data)));\n stickyStack.push({\n token: token,\n data: data,\n category: categoryForCode(data)\n });\n }\n\n return stickyStack;\n}\n\nvar Filter = /*#__PURE__*/function () {\n /**\n * @param {object} options\n * @param {string=} options.fg The default foreground color used when reset color codes are encountered.\n * @param {string=} options.bg The default background color used when reset color codes are encountered.\n * @param {boolean=} options.newline Convert newline characters to `<br/>`.\n * @param {boolean=} options.escapeXML Generate HTML/XML entities.\n * @param {boolean=} options.stream Save style state across invocations of `toHtml()`.\n * @param {(string[] | {[code: number]: string})=} options.colors Can override specific colors or the entire ANSI palette.\n */\n function Filter(options) {\n _classCallCheck(this, Filter);\n\n options = options || {};\n\n if (options.colors) {\n options.colors = Object.assign({}, defaults.colors, options.colors);\n }\n\n this.options = Object.assign({}, defaults, options);\n this.stack = [];\n this.stickyStack = [];\n }\n /**\n * @param {string | string[]} input\n * @returns {string}\n */\n\n\n _createClass(Filter, [{\n key: \"toHtml\",\n value: function toHtml(input) {\n var _this = this;\n\n input = typeof input === 'string' ? [input] : input;\n var stack = this.stack,\n options = this.options;\n var buf = [];\n this.stickyStack.forEach(function (element) {\n var output = generateOutput(stack, element.token, element.data, options);\n\n if (output) {\n buf.push(output);\n }\n });\n tokenize(input.join(''), options, function (token, data) {\n var output = generateOutput(stack, token, data, options);\n\n if (output) {\n buf.push(output);\n }\n\n if (options.stream) {\n _this.stickyStack = updateStickyStack(_this.stickyStack, token, data);\n }\n });\n\n if (stack.length) {\n buf.push(resetStyles(stack));\n }\n\n return buf.join('');\n }\n }]);\n\n return Filter;\n}();\n\nmodule.exports = Filter;\n//# sourceMappingURL=ansi_to_html.js.map","import AnsiToHTML from 'ansi-to-html'\nimport { useMemo } from 'react'\nimport { useTheme } from '#app/routes/theme/index.js'\n\nexport function useAnsiToHtml() {\n\tconst theme = useTheme()\n\tconst ansi = useMemo(\n\t\t() =>\n\t\t\tnew AnsiToHTML(\n\t\t\t\ttheme === 'dark'\n\t\t\t\t\t? { fg: '#d6deeb', bg: '#121318', escapeXML: true }\n\t\t\t\t\t: { fg: '#000000', bg: '#f3f3f3', escapeXML: true },\n\t\t\t),\n\t\t[theme],\n\t)\n\treturn ansi\n}\n","import * as Accordion from '@radix-ui/react-accordion'\nimport { useEffect, useRef, useState } from 'react'\nimport { z } from 'zod'\nimport AccordionComponent from '#app/components/accordion.tsx'\nimport { useAnsiToHtml } from '#app/utils/ansi-text.js'\nimport { AnimatedBars, Icon } from './icons.tsx'\n\nconst testRunnerStatusDataSchema = z.intersection(\n\tz.object({\n\t\ttype: z.literal('epicshop:test-status-update'),\n\t\ttimestamp: z.number(),\n\t}),\n\tz.union([\n\t\tz.object({ status: z.literal('pending') }),\n\t\tz.object({ status: z.literal('pass') }),\n\t\tz.object({ status: z.literal('fail'), error: z.string() }),\n\t]),\n)\n\nconst testRunnerTestStepDataSchema = z.object({\n\ttype: z.literal('epicshop:test-step-update'),\n\tstatus: z.literal('pass'),\n\ttitle: z.string(),\n\ttimestamp: z.number(),\n})\n\nconst testRunnerDataSchema = z.union([\n\ttestRunnerTestStepDataSchema,\n\ttestRunnerStatusDataSchema,\n])\n\ntype TestRunnerStatusData = z.infer<typeof testRunnerStatusDataSchema>\ntype TestRunnerTestStepData = z.infer<typeof testRunnerTestStepDataSchema>\n\nexport function InBrowserTestRunner({\n\tpathname,\n\ttestFile,\n}: {\n\tpathname: string\n\ttestFile: string\n}) {\n\tconst ansi = useAnsiToHtml()\n\tconst iframeRef = useRef<HTMLIFrameElement>(null)\n\tconst [message, setMessage] = useState<TestRunnerStatusData | null>(null)\n\tconst [testSteps, setTestSteps] = useState<Array<TestRunnerTestStepData>>([])\n\n\tuseEffect(() => {\n\t\tfunction handleMessage(messageEvent: MessageEvent) {\n\t\t\tif (messageEvent.source !== iframeRef.current?.contentWindow) return\n\t\t\tif ('request' in messageEvent.data) return\n\n\t\t\tconst result = testRunnerDataSchema.safeParse(messageEvent.data, {\n\t\t\t\tpath: ['messageEvent', 'data'],\n\t\t\t})\n\t\t\tif (!result.success) {\n\t\t\t\tconsole.error(\n\t\t\t\t\t`Invalid message from test iframe`,\n\t\t\t\t\tmessageEvent.data,\n\t\t\t\t\tresult.error,\n\t\t\t\t)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst { data } = result\n\t\t\tif (data.type === 'epicshop:test-status-update') {\n\t\t\t\tif (data.status === 'pending') {\n\t\t\t\t\tsetTestSteps([])\n\t\t\t\t}\n\t\t\t\tsetMessage(data)\n\t\t\t}\n\t\t\tif (data.type === 'epicshop:test-step-update') {\n\t\t\t\tsetTestSteps((steps) => [...steps, data])\n\t\t\t}\n\t\t}\n\t\twindow.addEventListener('message', handleMessage)\n\t\treturn () => {\n\t\t\twindow.removeEventListener('message', handleMessage)\n\t\t}\n\t}, [])\n\n\tconst statusEmoji = {\n\t\tpending: <AnimatedBars aria-label=\"Pending\" />,\n\t\tpass: (\n\t\t\t<Icon\n\t\t\t\tname=\"CheckSmall\"\n\t\t\t\taria-label=\"Passed\"\n\t\t\t\tclassName=\"text-emerald-700\"\n\t\t\t/>\n\t\t),\n\t\tfail: (\n\t\t\t<Icon\n\t\t\t\tname=\"Remove\"\n\t\t\t\taria-label=\"Failed\"\n\t\t\t\tclassName=\"text-foreground-danger\"\n\t\t\t/>\n\t\t),\n\t\tunknown: (\n\t\t\t<Icon name=\"Question\" aria-label=\"Unknown\" className=\"animate-pulse\" />\n\t\t),\n\t}[message?.status ?? 'unknown']\n\n\tconst sortedTestSteps = testSteps.sort((a, b) => a.timestamp - b.timestamp)\n\tconst testStepStatusEmojis = {\n\t\tpass: <Icon name=\"CheckSmall\" aria-label=\"Passed\" />,\n\t\tfail: <Icon name=\"Remove\" aria-label=\"Failed\" />,\n\t\tunknown: (\n\t\t\t<Icon name=\"Question\" aria-label=\"Unknown\" className=\"animate-pulse\" />\n\t\t),\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<Accordion.Root className=\"w-full\" type=\"multiple\">\n\t\t\t\t<AccordionComponent\n\t\t\t\t\ticon={statusEmoji}\n\t\t\t\t\ttitle={testFile}\n\t\t\t\t\tforceMount={true}\n\t\t\t\t>\n\t\t\t\t\t<div className=\"not-prose\">\n\t\t\t\t\t\t<div className=\"flex flex-col gap-2 p-5 pt-3\">\n\t\t\t\t\t\t\t<ul className=\"flex flex-col gap-2\">\n\t\t\t\t\t\t\t\t{sortedTestSteps.map((testStep, index) => (\n\t\t\t\t\t\t\t\t\t// sometimes the steps come in so fast that the timestamp is the same\n\t\t\t\t\t\t\t\t\t<li key={testStep.timestamp + testStep.title}>\n\t\t\t\t\t\t\t\t\t\t<div className=\"flex items-baseline gap-2 text-emerald-700\">\n\t\t\t\t\t\t\t\t\t\t\t<span>{index + 1}.</span>\n\t\t\t\t\t\t\t\t\t\t\t<span>{testStepStatusEmojis[testStep.status]}</span>\n\t\t\t\t\t\t\t\t\t\t\t<pre className=\"max-h-48 overflow-y-auto p-4 scrollbar-thin scrollbar-thumb-scrollbar\">\n\t\t\t\t\t\t\t\t\t\t\t\t{testStep.title}\n\t\t\t\t\t\t\t\t\t\t\t</pre>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t\t{message?.status === 'fail' ? (\n\t\t\t\t\t\t\t\t<div className=\"flex items-baseline gap-2 text-foreground-danger\">\n\t\t\t\t\t\t\t\t\t<span>{sortedTestSteps.length + 1}.</span>\n\t\t\t\t\t\t\t\t\t<span>{testStepStatusEmojis.fail}</span>\n\t\t\t\t\t\t\t\t\t<pre\n\t\t\t\t\t\t\t\t\t\tclassName=\"max-h-48 overflow-y-auto p-4 scrollbar-thin scrollbar-thumb-scrollbar\"\n\t\t\t\t\t\t\t\t\t\tdangerouslySetInnerHTML={{\n\t\t\t\t\t\t\t\t\t\t\t__html: ansi.toHtml(message.error),\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t<iframe\n\t\t\t\t\t\t\t\tref={iframeRef}\n\t\t\t\t\t\t\t\ttitle={testFile}\n\t\t\t\t\t\t\t\tsrc={pathname + testFile}\n\t\t\t\t\t\t\t\tclassName=\"mt-5 min-h-[420px] w-full border bg-white\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className=\"flex border-y\">\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\t\t\tiframeRef.current?.contentWindow?.location.reload()\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tclassName=\"border-r p-3\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Icon name=\"Refresh\" aria-label=\"Rerun Tests\" />\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\thref={pathname + testFile}\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\trel=\"noreferrer\"\n\t\t\t\t\t\t\t\tclassName=\"border-r p-3\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Icon name=\"ExternalLink\" aria-label=\"Open in New Window\" />\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</AccordionComponent>\n\t\t\t</Accordion.Root>\n\t\t</>\n\t)\n}\n","import { getAppByName } from '@epic-web/workshop-utils/apps.server'\nimport {\n\tclearTestProcessEntry,\n\tgetTestProcessEntry,\n\tisTestRunning,\n\trunAppTests,\n} from '@epic-web/workshop-utils/process-manager.server'\nimport {\n\tjson,\n\ttype ActionFunctionArgs,\n\ttype LoaderFunctionArgs,\n} from '@remix-run/node'\nimport { useFetcher } from '@remix-run/react'\nimport { useEffect, useReducer, useRef } from 'react'\nimport { useEventSource } from 'remix-utils/sse/react'\nimport { eventStream } from 'remix-utils/sse/server'\nimport { z } from 'zod'\nimport { AnimatedBars, Icon } from '#app/components/icons.tsx'\nimport { SimpleTooltip } from '#app/components/ui/tooltip.tsx'\nimport { useAnsiToHtml } from '#app/utils/ansi-text.js'\nimport { ensureUndeployed } from '#app/utils/misc.tsx'\n\nconst testActionSchema = z.union([\n\tz.object({\n\t\tintent: z.literal('run'),\n\t\tname: z.string(),\n\t}),\n\tz.object({\n\t\tintent: z.literal('stop'),\n\t\tname: z.string(),\n\t}),\n\tz.object({\n\t\tintent: z.literal('clear'),\n\t\tname: z.string(),\n\t}),\n])\n\nconst testEventSchema = z.union([\n\tz.object({\n\t\ttype: z.literal('init'),\n\t\texitCode: z.number().nullable().optional(),\n\t\tisRunning: z.boolean(),\n\t\toutput: z.array(\n\t\t\tz.object({\n\t\t\t\ttype: z.union([z.literal('stdout'), z.literal('stderr')]),\n\t\t\t\tcontent: z.string(),\n\t\t\t\ttimestamp: z.number(),\n\t\t\t}),\n\t\t),\n\t}),\n\tz.object({\n\t\ttype: z.union([z.literal('stdout'), z.literal('stderr')]),\n\t\tdata: z.string(),\n\t\ttimestamp: z.number(),\n\t}),\n\tz.object({\n\t\ttype: z.literal('exit'),\n\t\tisRunning: z.literal(false),\n\t\tcode: z.number().nullable(),\n\t}),\n])\nconst testEventQueueSchema = z.array(testEventSchema)\n\ntype TestEvent = z.infer<typeof testEventSchema>\ntype TestEventQueue = z.infer<typeof testEventQueueSchema>\n\nexport async function loader({ request }: LoaderFunctionArgs) {\n\tensureUndeployed()\n\tconst url = new URL(request.url)\n\tconst name = url.searchParams.get('name')\n\tif (!name) {\n\t\treturn json({ error: 'Missing name' }, { status: 400 })\n\t}\n\tconst app = await getAppByName(name)\n\tif (!app) {\n\t\treturn json({ error: 'App not found' }, { status: 404 })\n\t}\n\tconst processEntry = getTestProcessEntry(app)\n\tif (!processEntry) {\n\t\treturn json({ error: 'App is not running tests' }, { status: 404 })\n\t}\n\treturn eventStream(request.signal, function setup(send) {\n\t\t// have to batch because the client may miss events if we send too many\n\t\t// too rapidly\n\t\tlet queue: TestEventQueue = []\n\t\tfunction sendEvent(event: TestEvent) {\n\t\t\tqueue.push(event)\n\t\t}\n\t\tconst interval = setInterval(() => {\n\t\t\tif (queue.length) {\n\t\t\t\tsend({ data: JSON.stringify(queue) })\n\t\t\t\tqueue = []\n\t\t\t}\n\t\t}, 10)\n\n\t\tconst isRunning = isTestRunning(app)\n\n\t\tsendEvent({\n\t\t\ttype: 'init',\n\t\t\texitCode: processEntry.exitCode,\n\t\t\tisRunning,\n\t\t\toutput: processEntry.output.map((line) => ({\n\t\t\t\ttype: line.type,\n\t\t\t\tcontent: line.content,\n\t\t\t\ttimestamp: line.timestamp,\n\t\t\t})),\n\t\t})\n\n\t\tconst testProcess = processEntry.process\n\t\tif (!testProcess) {\n\t\t\treturn () => {}\n\t\t}\n\n\t\tfunction handleStdOutData(data: Buffer) {\n\t\t\tsendEvent({\n\t\t\t\ttype: 'stdout',\n\t\t\t\tdata: data.toString('utf-8'),\n\t\t\t\ttimestamp: Date.now(),\n\t\t\t})\n\t\t}\n\t\tfunction handleStdErrData(data: Buffer) {\n\t\t\tsendEvent({\n\t\t\t\ttype: 'stderr',\n\t\t\t\tdata: data.toString('utf-8'),\n\t\t\t\ttimestamp: Date.now(),\n\t\t\t})\n\t\t}\n\t\tfunction handleExit(code: number) {\n\t\t\ttestProcess?.stdout?.off('data', handleStdOutData)\n\t\t\ttestProcess?.stderr?.off('data', handleStdErrData)\n\t\t\ttestProcess?.off('exit', handleExit)\n\t\t\tsendEvent({ type: 'exit', isRunning: false, code })\n\t\t}\n\t\ttestProcess.stdout?.on('data', handleStdOutData)\n\t\ttestProcess.stderr?.on('data', handleStdErrData)\n\t\ttestProcess.on('exit', handleExit)\n\t\treturn function cleanup() {\n\t\t\ttestProcess.stdout?.off('data', handleStdOutData)\n\t\t\ttestProcess.stderr?.off('data', handleStdErrData)\n\t\t\ttestProcess.off('exit', handleExit)\n\t\t\tclearInterval(interval)\n\t\t}\n\t})\n}\n\nexport async function action({ request }: ActionFunctionArgs) {\n\tensureUndeployed()\n\tconst formData = await request.formData()\n\tconst result = testActionSchema.safeParse({\n\t\tintent: formData.get('intent'),\n\t\tname: formData.get('name'),\n\t})\n\tif (!result.success) {\n\t\treturn json(\n\t\t\t{ success: false, error: result.error.flatten() },\n\t\t\t{ status: 400 },\n\t\t)\n\t}\n\tconst app = await getAppByName(result.data.name)\n\tif (!app) {\n\t\treturn json({ success: false, error: 'App not found' }, { status: 404 })\n\t}\n\tswitch (result.data.intent) {\n\t\tcase 'run': {\n\t\t\tvoid runAppTests(app)\n\t\t\treturn json({ success: true })\n\t\t}\n\t\tcase 'stop': {\n\t\t\tconst processEntry = getTestProcessEntry(app)\n\t\t\tif (processEntry) {\n\t\t\t\tprocessEntry.process?.kill()\n\t\t\t}\n\t\t\treturn json({ success: true })\n\t\t}\n\t\tcase 'clear': {\n\t\t\tclearTestProcessEntry(app)\n\t\t\treturn json({ success: true })\n\t\t}\n\t}\n}\n\nfunction simpleReducer<State>(prev: State, getNext: (prev: State) => State) {\n\treturn getNext(prev)\n}\n\nexport function TestOutput({ name }: { name: string }) {\n\ttype State = {\n\t\t/** version is used to trigger an unsubscribe and resubscribe to the event source */\n\t\tversion: number\n\t\tisRunning: boolean\n\t\texitCode: number | null | undefined\n\t\tlines: Array<{\n\t\t\ttype: 'stdout' | 'stderr'\n\t\t\tcontent: string\n\t\t\ttimestamp: number\n\t\t}>\n\t}\n\tconst [state, dispatch] = useReducer(simpleReducer<State>, {\n\t\tversion: 0,\n\t\tisRunning: false,\n\t\texitCode: undefined,\n\t\tlines: [],\n\t})\n\tconst ansi = useAnsiToHtml()\n\tconst { version, isRunning, exitCode, lines } = state\n\tconst lastMessage = useEventSource(\n\t\t`/test?${new URLSearchParams({ name })}&v=${version}`,\n\t)\n\tuseEffect(() => {\n\t\tif (!lastMessage) return\n\n\t\tconst parsed = JSON.parse(lastMessage)\n\t\tconst result = testEventQueueSchema.safeParse(parsed)\n\t\tif (!result.success) {\n\t\t\tconsole.error(result.error.flatten())\n\t\t\treturn\n\t\t}\n\t\tfor (const event of result.data) {\n\t\t\tswitch (event.type) {\n\t\t\t\tcase 'exit': {\n\t\t\t\t\tconst { isRunning, code: exitCode } = event\n\t\t\t\t\tdispatch((prev) => ({ ...prev, isRunning, exitCode }))\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase 'init': {\n\t\t\t\t\tconst { output, exitCode, isRunning } = event\n\t\t\t\t\tdispatch((prev) => ({ ...prev, lines: output, exitCode, isRunning }))\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase 'stderr':\n\t\t\t\tcase 'stdout': {\n\t\t\t\t\tconst { type, data: content, timestamp } = event\n\t\t\t\t\tdispatch((prev) => ({\n\t\t\t\t\t\t...prev,\n\t\t\t\t\t\tlines: [...prev.lines, { type, content, timestamp }].sort(\n\t\t\t\t\t\t\t(a, b) => a.timestamp - b.timestamp,\n\t\t\t\t\t\t),\n\t\t\t\t\t\tisRunning: true,\n\t\t\t\t\t}))\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}, [lastMessage])\n\n\treturn (\n\t\t<div className=\"relative flex h-full w-full flex-col overflow-y-auto\">\n\t\t\t<div className=\"flex h-12 w-full flex-shrink-0 items-center justify-between border-b\">\n\t\t\t\t<div className=\"flex h-full items-center\">\n\t\t\t\t\t{!isRunning && (\n\t\t\t\t\t\t<TestRunner\n\t\t\t\t\t\t\tname={name}\n\t\t\t\t\t\t\tonRun={() => {\n\t\t\t\t\t\t\t\tdispatch((prev) => ({\n\t\t\t\t\t\t\t\t\t...prev,\n\t\t\t\t\t\t\t\t\texitCode: undefined,\n\t\t\t\t\t\t\t\t\tlines: [],\n\t\t\t\t\t\t\t\t\tversion: prev.version + 1,\n\t\t\t\t\t\t\t\t}))\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t{isRunning ? (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<div className=\"flex h-full flex-grow items-center justify-center border-r px-3.5\">\n\t\t\t\t\t\t\t\t<AnimatedBars role=\"status\" aria-label=\"Running Tests\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<StopTest name={name} />\n\t\t\t\t\t\t</>\n\t\t\t\t\t) : null}\n\t\t\t\t</div>\n\n\t\t\t\t{!isRunning && exitCode !== undefined && (\n\t\t\t\t\t<p className=\"pr-3.5 leading-none\">\n\t\t\t\t\t\t{exitCode === 0\n\t\t\t\t\t\t\t? `Tests passed`\n\t\t\t\t\t\t\t: `Test failed (exit code ${String(exitCode)})`}\n\t\t\t\t\t</p>\n\t\t\t\t)}\n\t\t\t\t{!isRunning && exitCode !== undefined && (\n\t\t\t\t\t<ClearTest\n\t\t\t\t\t\tname={name}\n\t\t\t\t\t\tonClear={() => {\n\t\t\t\t\t\t\tdispatch((prev) => ({\n\t\t\t\t\t\t\t\t...prev,\n\t\t\t\t\t\t\t\texitCode: undefined,\n\t\t\t\t\t\t\t\tlines: [],\n\t\t\t\t\t\t\t}))\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t<div className=\"flex h-full flex-col gap-5 p-5\">\n\t\t\t\t<p className=\"font-mono text-sm font-medium uppercase\">Test Output</p>\n\t\t\t\t<pre className=\"shadow-on-scrollbox flex-1 overflow-y-scroll scrollbar-thin scrollbar-thumb-scrollbar\">\n\t\t\t\t\t{lines.map((line) => (\n\t\t\t\t\t\t<code\n\t\t\t\t\t\t\tkey={line.timestamp}\n\t\t\t\t\t\t\tdata-type={line.type}\n\t\t\t\t\t\t\tdangerouslySetInnerHTML={{\n\t\t\t\t\t\t\t\t__html: ansi.toHtml(line.content),\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t))}\n\t\t\t\t</pre>\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n\nexport function TestRunner({\n\tname,\n\tonRun,\n}: {\n\tname: string\n\tonRun?: () => void\n}) {\n\tconst fetcher = useFetcher<typeof action>()\n\tconst latestOnRun = useRef(onRun)\n\tuseEffect(() => {\n\t\tlatestOnRun.current = onRun\n\t}, [onRun])\n\tuseEffect(() => {\n\t\tif (fetcher.data?.success) {\n\t\t\tlatestOnRun.current?.()\n\t\t}\n\t}, [fetcher.data])\n\treturn (\n\t\t<fetcher.Form method=\"POST\" action=\"/test\" className=\"h-full\">\n\t\t\t<input type=\"hidden\" name=\"name\" value={name} />\n\t\t\t<SimpleTooltip\n\t\t\t\tcontent={fetcher.state === 'idle' ? 'Run Tests' : 'Running Tests...'}\n\t\t\t>\n\t\t\t\t<button\n\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\tname=\"intent\"\n\t\t\t\t\tvalue=\"run\"\n\t\t\t\t\tclassName=\"flex h-full flex-grow items-center justify-center border-r px-3.5\"\n\t\t\t\t>\n\t\t\t\t\t{fetcher.state === 'idle' ? (\n\t\t\t\t\t\t<Icon name=\"TriangleSmall\" />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<AnimatedBars role=\"status\" />\n\t\t\t\t\t)}\n\t\t\t\t</button>\n\t\t\t</SimpleTooltip>\n\t\t</fetcher.Form>\n\t)\n}\n\nexport function ClearTest({\n\tname,\n\tonClear,\n}: {\n\tname: string\n\tonClear?: () => void\n}) {\n\tconst fetcher = useFetcher<typeof action>()\n\tconst latestOnClear = useRef(onClear)\n\tuseEffect(() => {\n\t\tlatestOnClear.current = onClear\n\t}, [onClear])\n\tuseEffect(() => {\n\t\tif (fetcher.data?.success) {\n\t\t\tlatestOnClear.current?.()\n\t\t}\n\t}, [fetcher.data])\n\treturn (\n\t\t<fetcher.Form method=\"POST\" action=\"/test\" className=\"h-full\">\n\t\t\t<input type=\"hidden\" name=\"name\" value={name} />\n\t\t\t<SimpleTooltip\n\t\t\t\tcontent={fetcher.state === 'idle' ? 'Clear Tests' : 'Clearing Tests...'}\n\t\t\t>\n\t\t\t\t<button\n\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\tname=\"intent\"\n\t\t\t\t\tvalue=\"clear\"\n\t\t\t\t\tclassName=\"flex h-full flex-grow items-center justify-center border-l px-3.5\"\n\t\t\t\t>\n\t\t\t\t\t{fetcher.state === 'idle' ? (\n\t\t\t\t\t\t<Icon name=\"Clear\" />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<Icon name=\"Clear\" className=\"animate-pulse\" role=\"status\" />\n\t\t\t\t\t)}\n\t\t\t\t</button>\n\t\t\t</SimpleTooltip>\n\t\t</fetcher.Form>\n\t)\n}\n\nexport function StopTest({\n\tname,\n\tonStop,\n}: {\n\tname: string\n\tonStop?: () => void\n}) {\n\tconst fetcher = useFetcher<typeof action>()\n\tconst latestOnStop = useRef(onStop)\n\tuseEffect(() => {\n\t\tlatestOnStop.current = onStop\n\t}, [onStop])\n\tuseEffect(() => {\n\t\tif (fetcher.data?.success) {\n\t\t\tlatestOnStop.current?.()\n\t\t}\n\t}, [fetcher.data])\n\treturn (\n\t\t<fetcher.Form method=\"POST\" action=\"/test\" className=\"h-full\">\n\t\t\t<input type=\"hidden\" name=\"name\" value={name} />\n\t\t\t<SimpleTooltip\n\t\t\t\tcontent={fetcher.state === 'idle' ? 'Stop Tests' : 'Stopping Tests...'}\n\t\t\t>\n\t\t\t\t<button\n\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\tname=\"intent\"\n\t\t\t\t\tvalue=\"stop\"\n\t\t\t\t\tclassName=\"flex h-full flex-grow items-center justify-center border-r px-3.5\"\n\t\t\t\t>\n\t\t\t\t\t{fetcher.state === 'idle' ? (\n\t\t\t\t\t\t<Icon name=\"Stop\" />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<Icon name=\"Stop\" className=\"animate-pulse\" role=\"status\" />\n\t\t\t\t\t)}\n\t\t\t\t</button>\n\t\t\t</SimpleTooltip>\n\t\t</fetcher.Form>\n\t)\n}\n","import { type PlaygroundApp } from '@epic-web/workshop-utils/apps.server'\nimport { useState } from 'react'\nimport { Icon } from '#app/components/icons'\nimport { InBrowserTestRunner } from '#app/components/in-browser-test-runner'\nimport { TestOutput } from '#app/routes/test'\nimport { PlaygroundWindow } from './playground-window'\n\nexport function Tests({\n\tappInfo: playgroundAppInfo,\n\tproblemAppName,\n\tallApps,\n\tisUpToDate,\n}: {\n\tappInfo: Pick<PlaygroundApp, 'appName' | 'name' | 'test'> | null\n\tproblemAppName?: string\n\tallApps: Array<{ name: string; displayName: string }>\n\tisUpToDate: boolean\n}) {\n\treturn (\n\t\t<PlaygroundWindow\n\t\t\tplaygroundAppName={playgroundAppInfo?.appName}\n\t\t\tproblemAppName={problemAppName}\n\t\t\tallApps={allApps}\n\t\t\tisUpToDate={isUpToDate}\n\t\t>\n\t\t\t<TestUI playgroundAppInfo={playgroundAppInfo} />\n\t\t</PlaygroundWindow>\n\t)\n}\n\nexport function TestUI({\n\tplaygroundAppInfo,\n}: {\n\tplaygroundAppInfo: Pick<PlaygroundApp, 'name' | 'test'> | null\n}) {\n\tconst [inBrowserTestKey, setInBrowserTestKey] = useState(0)\n\n\tif (!playgroundAppInfo) {\n\t\treturn (\n\t\t\t<div className=\"flex h-full items-center justify-center text-lg\">\n\t\t\t\t<p>No tests here 😢 Sorry.</p>\n\t\t\t</div>\n\t\t)\n\t}\n\n\tif (playgroundAppInfo.test.type === 'script') {\n\t\treturn <TestOutput name={playgroundAppInfo.name} />\n\t}\n\n\tif (playgroundAppInfo.test.type === 'browser') {\n\t\tconst { pathname } = playgroundAppInfo.test\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName=\"flex h-full w-full flex-grow flex-col overflow-y-auto\"\n\t\t\t\tkey={inBrowserTestKey}\n\t\t\t>\n\t\t\t\t{playgroundAppInfo.test.testFiles.map((testFile) => (\n\t\t\t\t\t<div key={testFile}>\n\t\t\t\t\t\t<InBrowserTestRunner pathname={pathname} testFile={testFile} />\n\t\t\t\t\t</div>\n\t\t\t\t))}\n\t\t\t\t<div className=\"px-3 py-[21px]\">\n\t\t\t\t\t<button\n\t\t\t\t\t\tonClick={() => setInBrowserTestKey((c) => c + 1)}\n\t\t\t\t\t\tclassName=\"flex items-center gap-2 font-mono text-sm uppercase leading-none\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon name=\"Refresh\" aria-hidden /> Rerun All Tests\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t)\n\t}\n\n\treturn (\n\t\t<div className=\"flex h-full items-center justify-center text-lg\">\n\t\t\t<p>No tests here 😢 Sorry.</p>\n\t\t</div>\n\t)\n}\n"],"names":["PlaygroundWindow","playgroundAppName","problemAppName","isUpToDate","allApps","children","isCorrectApp","playgroundLinkedUI","jsx","Icon","setPlaygroundTooltipText","jsxs","SetPlayground","SimpleTooltip","PlaygroundChooser","__importDefault","this","mod","decode_codepoint","decode_json_1","require$$0","fromCodePoint","codePoint","output","decodeCodePoint","decode","entities_json_1","legacy_json_1","require$$1","xml_json_1","require$$2","decode_codepoint_1","require$$3","strictEntityRe","getStrictDecoder","map","replace","getReplacer","str","sorter","a","b","legacy","keys","i","j","re","replacer","secondChar","encode","inverseXML","getInverseObj","xmlReplacer","getInverseReplacer","getASCIIEncoder","inverseHTML","htmlReplacer","getInverse","obj","inverse","name","single","multiple","_i","_a","k","start","end","count","reNonASCII","getCodePoint","c","singleCharReplacer","data","reEscapeChars","escape","escapeUTF8","exports","decode_1","encode_1","level","decodeStrict","encode_2","decode_2","_classCallCheck","instance","Constructor","_defineProperties","target","props","descriptor","_createClass","protoProps","staticProps","_createForOfIteratorHelper","o","allowArrayLike","it","_unsupportedIterableToArray","F","_e","normalCompletion","didErr","err","step","_e2","minLen","_arrayLikeToArray","n","arr","len","arr2","entities","defaults","getDefaultColors","colors","range","red","green","blue","setStyleColor","gray","l","toHexString","r","g","toColorHexString","num","ref","results","_iterator","_step","generateOutput","stack","token","options","result","pushText","handleDisplay","pushForegroundColor","pushBackgroundColor","handleRgb","operation","color","rgb","value","pushStyle","code","codeMap","resetStyles","pushTag","closeTag","stackClone","tag","low","high","notCategory","category","e","categoryForCode","text","style","last","tokenize","callback","ansiMatch","ansiHandler","remove","removeXterm256Foreground","m","g1","removeXterm256Background","newline","ansiMess","_iterator2","_step2","realText","tokens","process","handler","results1","_text","length","outer","updateStickyStack","stickyStack","Filter","input","_this","buf","element","ansi_to_html","useAnsiToHtml","theme","useTheme","useMemo","AnsiToHTML","testRunnerStatusDataSchema","z","testRunnerTestStepDataSchema","testRunnerDataSchema","InBrowserTestRunner","pathname","testFile","ansi","iframeRef","useRef","message","setMessage","useState","testSteps","setTestSteps","useEffect","handleMessage","messageEvent","steps","statusEmoji","AnimatedBars","sortedTestSteps","testStepStatusEmojis","Fragment","Accordion.Root","AccordionComponent","testStep","index","_b","testEventSchema","union","object","type","literal","exitCode","number","nullable","optional","isRunning","boolean","array","content","string","timestamp","testEventQueueSchema","simpleReducer","prev","getNext","TestOutput","state","dispatch","useReducer","version","lines","lastMessage","useEventSource","URLSearchParams","parsed","JSON","parse","safeParse","success","console","error","flatten","event","sort","className","TestRunner","onRun","role","StopTest","String","ClearTest","onClear","line","dangerouslySetInnerHTML","__html","toHtml","fetcher","useFetcher","latestOnRun","current","Form","method","action","latestOnClear","onStop","latestOnStop","Tests","playgroundAppInfo","TestUI","inBrowserTestKey","setInBrowserTestKey"],"mappings":"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","x_google_ignoreList":[1,2,3,4,5]}