@epic-web/workshop-app 4.26.1 → 4.26.2

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.
@@ -0,0 +1,4 @@
1
+ import{j as n,n as S,l as yt,r as m}from"./index-1cKOJFpX.js";import{I as g,e as V}from"./misc-Txs7O6JX.js";import{R as xt,A as Lt}from"./accordion-CKwXYK9L.js";import{z as i}from"./request-info-CEhUGODY.js";import{u as Et}from"./index-DlJAkutV.js";import{u as Tt}from"./use-event-source-A_0lEOPX.js";import{S as C}from"./tooltip-DTFU8ajx.js";import{u as B}from"./pe-CUZaIcdt.js";import{a as M}from"./components-CME-nGId.js";import{a as G,P as St}from"./set-playground-Cr0qL9N9.js";function Dt({playgroundAppName:t,problemAppName:o,isUpToDate:s,allApps:c,children:r}){const e=t===o,a=e&&s?n.jsx(g,{size:"xl",name:"Linked"}):n.jsx(g,{size:"xl",name:"Unlinked",className:"animate-pulse text-foreground-danger"});let l="Click to reset Playground.";return s||(l="Playground is out of date. Click to reset Playground."),e||(l="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:l,children:a}):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(St,{allApps:c,playgroundAppName:t})]}),n.jsx("div",{className:"flex h-full flex-1 flex-grow items-center justify-center",children:r})]})}var W={},L={};const At="Á",kt="á",Nt="Ă",Rt="ă",jt="∾",Ct="∿",Ut="∾̳",$t="Â",Ht="â",Vt="´",Bt="А",Mt="а",Ot="Æ",Pt="æ",Ft="⁡",It="𝔄",Gt="𝔞",_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="𝒜",Io="𝒶",Go="≔",_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="⋀",Is="⤍",Gs="⧫",_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="║",In="┼",Gn="╪",_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="⩌",Ic="⩐",Gc="Ċ",_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="⩭",Ir="≡",Gr="∮",_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="ℸ",Ie="↓",Ge="↡",_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="𝕕",Ia="¨",Ga="˙",_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="▿",Il="▾",Gl="⇵",_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="𝕖",Ii="⋕",Gi="⧣",_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="ф",ju="♀",Cu="ffi",Uu="ff",$u="ffl",Hu="𝔉",Vu="𝔣",Bu="fi",Mu="◼",Ou="▪",Pu="fj",Fu="♭",Iu="fl",Gu="▱",_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="⩾",Ip="⪀",Gp="⪂",_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="≳",Id="≩︀",Gd="≩︀",_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="¡",If="⇔",Gf="𝔦",_f="ℑ",zf="Ì",Xf="ì",Jf="ⅈ",Yf="⨌",Zf="∭",Qf="⧜",Kf="℩",Wf="IJ",tg="ij",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="⋴",Ig="⋳",Gg="∈",_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="⪅",Im="ℒ",Gm="«",_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="⇃",Ih="⌊",Gh="↽",_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="⪑",Ib="⥢",Gb="↽",_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="⦓",Iv="⇆",Gv="⌟",_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=" ",Iw="ℳ",Gw="𝔐",_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="⩰̸",Lq="≋̸",Eq="ʼn",Tq="≉",Sq="♮",Dq="ℕ",Aq="♮",kq=" ",Nq="≎̸",Rq="≏̸",jq="⩃",Cq="Ň",Uq="ň",$q="Ņ",Hq="ņ",Vq="≇",Bq="⩭̸",Mq="⩂",Oq="Н",Pq="н",Fq="–",Iq="⤤",Gq="↗",_q="⇗",zq="↗",Xq="≠",Jq="≐̸",Yq="​",Zq="​",Qq="​",Kq="​",Wq="≢",ty="⤨",oy="≂̸",sy="≫",ny="≪",cy=`
2
+ `,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="⩽̸",Iy="≮",Gy="⋘̸",_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="⪯̸",Ix="⋠",Gx="∌",_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="⋣",IL="⊄",GL="⫅̸",_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="⊚",IE="О",GE="о",_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="𝒪",IT="ℴ",GT="Ø",_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="⨦",I1="⨧",G1="±",_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="𝒬",IS="𝓆",GS="ℍ",_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="Р",ID="р",GD="⤷",_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="⊵",IA="⥏",GA="⥜",_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="≽",Ik="⪰",Gk="⪴",_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="≆",IN="⨤",GN="⥲",_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="☆",IR="★",GR="ϵ",_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="⟉",Ij="⫗",Gj="⥻",_j="⫂",zj="⫌",Xj="⊋",Jj="⫀",Yj="⊃",Zj="⋑",Qj="⊇",Kj="⫆",Wj="⊋",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="∼",I0="≃",G0="≅",_0="≈",z0="⨱",X0="⊠",J0="×",Y0="⨰",Z0="∭",Q0="⤨",K0="⌶",W0="⫱",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="Ŭ",IC="ŭ",GC="Û",_C="û",zC="У",XC="у",JC="⇅",YC="Ű",ZC="ű",QC="⥮",KC="⥾",WC="𝔘",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="υ",IU="↥",GU="⊥",_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$="|",I$="‖",G$="|",_$="‖",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="⟼",IH="⋻",GH="⨀",_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="𝕫",IV="ℤ",GV="𝒵",_V="𝓏",zV="‍",XV="‌",tt={Aacute:At,aacute:kt,Abreve:Nt,abreve:Rt,ac:jt,acd:Ct,acE:Ut,Acirc:$t,acirc:Ht,acute:Vt,Acy:Bt,acy:Mt,AElig:Ot,aelig:Pt,af:Ft,Afr:It,afr:Gt,Agrave:_t,agrave:zt,alefsym:Xt,aleph:Jt,Alpha:Yt,alpha:Zt,Amacr:Qt,amacr:Kt,amalg:Wt,amp:to,AMP:oo,andand:so,And:no,and:co,andd:ro,andslope:eo,andv:ao,ang:lo,ange:io,angle:uo,angmsdaa:po,angmsdab:fo,angmsdac:go,angmsdad:mo,angmsdae:ho,angmsdaf:bo,angmsdag:vo,angmsdah:wo,angmsd:qo,angrt:yo,angrtvb:xo,angrtvbd:Lo,angsph:Eo,angst:To,angzarr:So,Aogon:Do,aogon:Ao,Aopf:ko,aopf:No,apacir:Ro,ap:jo,apE:Co,ape:Uo,apid:$o,apos:Ho,ApplyFunction:Vo,approx:Bo,approxeq:Mo,Aring:Oo,aring:Po,Ascr:Fo,ascr:Io,Assign:Go,ast:_o,asymp:zo,asympeq:Xo,Atilde:Jo,atilde:Yo,Auml:Zo,auml:Qo,awconint:Ko,awint:Wo,backcong:ts,backepsilon:os,backprime:ss,backsim:ns,backsimeq:cs,Backslash:rs,Barv:es,barvee:as,barwed:ls,Barwed:is,barwedge:us,bbrk:ps,bbrktbrk:ds,bcong:fs,Bcy:gs,bcy:ms,bdquo:hs,becaus:bs,because:vs,Because:ws,bemptyv:qs,bepsi:ys,bernou:xs,Bernoullis:Ls,Beta:Es,beta:Ts,beth:Ss,between:Ds,Bfr:As,bfr:ks,bigcap:Ns,bigcirc:Rs,bigcup:js,bigodot:Cs,bigoplus:Us,bigotimes:$s,bigsqcup:Hs,bigstar:Vs,bigtriangledown:Bs,bigtriangleup:Ms,biguplus:Os,bigvee:Ps,bigwedge:Fs,bkarow:Is,blacklozenge:Gs,blacksquare:_s,blacktriangle:zs,blacktriangledown:Xs,blacktriangleleft:Js,blacktriangleright:Ys,blank:Zs,blk12:Qs,blk14:Ks,blk34:Ws,block:tn,bne:on,bnequiv:sn,bNot:nn,bnot:cn,Bopf:rn,bopf:en,bot:an,bottom:ln,bowtie:un,boxbox:pn,boxdl:dn,boxdL:fn,boxDl:gn,boxDL:mn,boxdr:hn,boxdR:bn,boxDr:vn,boxDR:wn,boxh:qn,boxH:yn,boxhd:xn,boxHd:Ln,boxhD:En,boxHD:Tn,boxhu:Sn,boxHu:Dn,boxhU:An,boxHU:kn,boxminus:Nn,boxplus:Rn,boxtimes:jn,boxul:Cn,boxuL:Un,boxUl:$n,boxUL:Hn,boxur:Vn,boxuR:Bn,boxUr:Mn,boxUR:On,boxv:Pn,boxV:Fn,boxvh:In,boxvH:Gn,boxVh:_n,boxVH:zn,boxvl:Xn,boxvL:Jn,boxVl:Yn,boxVL:Zn,boxvr:Qn,boxvR:Kn,boxVr:Wn,boxVR:tc,bprime:oc,breve:sc,Breve:nc,brvbar:cc,bscr:rc,Bscr:ec,bsemi:ac,bsim:lc,bsime:ic,bsolb:uc,bsol:pc,bsolhsub:dc,bull:fc,bullet:gc,bump:mc,bumpE:hc,bumpe:bc,Bumpeq:vc,bumpeq:wc,Cacute:qc,cacute:yc,capand:xc,capbrcup:Lc,capcap:Ec,cap:Tc,Cap:Sc,capcup:Dc,capdot:Ac,CapitalDifferentialD:kc,caps:Nc,caret:Rc,caron:jc,Cayleys:Cc,ccaps:Uc,Ccaron:$c,ccaron:Hc,Ccedil:Vc,ccedil:Bc,Ccirc:Mc,ccirc:Oc,Cconint:Pc,ccups:Fc,ccupssm:Ic,Cdot:Gc,cdot:_c,cedil:zc,Cedilla:Xc,cemptyv:Jc,cent:Yc,centerdot:Zc,CenterDot:Qc,cfr:Kc,Cfr:Wc,CHcy:tr,chcy:or,check:sr,checkmark:nr,Chi:cr,chi:rr,circ:er,circeq:ar,circlearrowleft:lr,circlearrowright:ir,circledast:ur,circledcirc:pr,circleddash:dr,CircleDot:fr,circledR:gr,circledS:mr,CircleMinus:hr,CirclePlus:br,CircleTimes:vr,cir:wr,cirE:qr,cire:yr,cirfnint:xr,cirmid:Lr,cirscir:Er,ClockwiseContourIntegral:Tr,CloseCurlyDoubleQuote:Sr,CloseCurlyQuote:Dr,clubs:Ar,clubsuit:kr,colon:Nr,Colon:Rr,Colone:jr,colone:Cr,coloneq:Ur,comma:$r,commat:Hr,comp:Vr,compfn:Br,complement:Mr,complexes:Or,cong:Pr,congdot:Fr,Congruent:Ir,conint:Gr,Conint:_r,ContourIntegral:zr,copf:Xr,Copf:Jr,coprod:Yr,Coproduct:Zr,copy:Qr,COPY:Kr,copysr:Wr,CounterClockwiseContourIntegral:te,crarr:oe,cross:se,Cross:ne,Cscr:ce,cscr:re,csub:ee,csube:ae,csup:le,csupe:ie,ctdot:ue,cudarrl:pe,cudarrr:de,cuepr:fe,cuesc:ge,cularr:me,cularrp:he,cupbrcap:be,cupcap:ve,CupCap:we,cup:qe,Cup:ye,cupcup:xe,cupdot:Le,cupor:Ee,cups:Te,curarr:Se,curarrm:De,curlyeqprec:Ae,curlyeqsucc:ke,curlyvee:Ne,curlywedge:Re,curren:je,curvearrowleft:Ce,curvearrowright:Ue,cuvee:$e,cuwed:He,cwconint:Ve,cwint:Be,cylcty:Me,dagger:Oe,Dagger:Pe,daleth:Fe,darr:Ie,Darr:Ge,dArr:_e,dash:ze,Dashv:Xe,dashv:Je,dbkarow:Ye,dblac:Ze,Dcaron:Qe,dcaron:Ke,Dcy:We,dcy:ta,ddagger:oa,ddarr:sa,DD:na,dd:ca,DDotrahd:ra,ddotseq:ea,deg:aa,Del:la,Delta:ia,delta:ua,demptyv:pa,dfisht:da,Dfr:fa,dfr:ga,dHar:ma,dharl:ha,dharr:ba,DiacriticalAcute:va,DiacriticalDot:wa,DiacriticalDoubleAcute:qa,DiacriticalGrave:ya,DiacriticalTilde:xa,diam:La,diamond:Ea,Diamond:Ta,diamondsuit:Sa,diams:Da,die:Aa,DifferentialD:ka,digamma:Na,disin:Ra,div:ja,divide:Ca,divideontimes:Ua,divonx:$a,DJcy:Ha,djcy:Va,dlcorn:Ba,dlcrop:Ma,dollar:Oa,Dopf:Pa,dopf:Fa,Dot:Ia,dot:Ga,DotDot:_a,doteq:za,doteqdot:Xa,DotEqual:Ja,dotminus:Ya,dotplus:Za,dotsquare:Qa,doublebarwedge:Ka,DoubleContourIntegral:Wa,DoubleDot:tl,DoubleDownArrow:ol,DoubleLeftArrow:sl,DoubleLeftRightArrow:nl,DoubleLeftTee:cl,DoubleLongLeftArrow:rl,DoubleLongLeftRightArrow:el,DoubleLongRightArrow:al,DoubleRightArrow:ll,DoubleRightTee:il,DoubleUpArrow:ul,DoubleUpDownArrow:pl,DoubleVerticalBar:dl,DownArrowBar:fl,downarrow:gl,DownArrow:ml,Downarrow:hl,DownArrowUpArrow:bl,DownBreve:vl,downdownarrows:wl,downharpoonleft:ql,downharpoonright:yl,DownLeftRightVector:xl,DownLeftTeeVector:Ll,DownLeftVectorBar:El,DownLeftVector:Tl,DownRightTeeVector:Sl,DownRightVectorBar:Dl,DownRightVector:Al,DownTeeArrow:kl,DownTee:Nl,drbkarow:Rl,drcorn:jl,drcrop:Cl,Dscr:Ul,dscr:$l,DScy:Hl,dscy:Vl,dsol:Bl,Dstrok:Ml,dstrok:Ol,dtdot:Pl,dtri:Fl,dtrif:Il,duarr:Gl,duhar:_l,dwangle:zl,DZcy:Xl,dzcy:Jl,dzigrarr:Yl,Eacute:Zl,eacute:Ql,easter:Kl,Ecaron:Wl,ecaron:ti,Ecirc:oi,ecirc:si,ecir:ni,ecolon:ci,Ecy:ri,ecy:ei,eDDot:ai,Edot:li,edot:ii,eDot:ui,ee:pi,efDot:di,Efr:fi,efr:gi,eg:mi,Egrave:hi,egrave:bi,egs:vi,egsdot:wi,el:qi,Element:yi,elinters:xi,ell:Li,els:Ei,elsdot:Ti,Emacr:Si,emacr:Di,empty:Ai,emptyset:ki,EmptySmallSquare:Ni,emptyv:Ri,EmptyVerySmallSquare:ji,emsp13:Ci,emsp14:Ui,emsp:$i,ENG:Hi,eng:Vi,ensp:Bi,Eogon:Mi,eogon:Oi,Eopf:Pi,eopf:Fi,epar:Ii,eparsl:Gi,eplus:_i,epsi:zi,Epsilon:Xi,epsilon:Ji,epsiv:Yi,eqcirc:Zi,eqcolon:Qi,eqsim:Ki,eqslantgtr:Wi,eqslantless:tu,Equal:ou,equals:su,EqualTilde:nu,equest:cu,Equilibrium:ru,equiv:eu,equivDD:au,eqvparsl:lu,erarr:iu,erDot:uu,escr:pu,Escr:du,esdot:fu,Esim:gu,esim:mu,Eta:hu,eta:bu,ETH:vu,eth:wu,Euml:qu,euml:yu,euro:xu,excl:Lu,exist:Eu,Exists:Tu,expectation:Su,exponentiale:Du,ExponentialE:Au,fallingdotseq:ku,Fcy:Nu,fcy:Ru,female:ju,ffilig:Cu,fflig:Uu,ffllig:$u,Ffr:Hu,ffr:Vu,filig:Bu,FilledSmallSquare:Mu,FilledVerySmallSquare:Ou,fjlig:Pu,flat:Fu,fllig:Iu,fltns:Gu,fnof:_u,Fopf:zu,fopf:Xu,forall:Ju,ForAll:Yu,fork:Zu,forkv:Qu,Fouriertrf:Ku,fpartint:Wu,frac12:tp,frac13:op,frac14:sp,frac15:np,frac16:cp,frac18:rp,frac23:ep,frac25:ap,frac34:lp,frac35:ip,frac38:up,frac45:pp,frac56:dp,frac58:fp,frac78:gp,frasl:mp,frown:hp,fscr:bp,Fscr:vp,gacute:wp,Gamma:qp,gamma:yp,Gammad:xp,gammad:Lp,gap:Ep,Gbreve:Tp,gbreve:Sp,Gcedil:Dp,Gcirc:Ap,gcirc:kp,Gcy:Np,gcy:Rp,Gdot:jp,gdot:Cp,ge:Up,gE:$p,gEl:Hp,gel:Vp,geq:Bp,geqq:Mp,geqslant:Op,gescc:Pp,ges:Fp,gesdot:Ip,gesdoto:Gp,gesdotol:_p,gesl:zp,gesles:Xp,Gfr:Jp,gfr:Yp,gg:Zp,Gg:Qp,ggg:Kp,gimel:Wp,GJcy:td,gjcy:od,gla:sd,gl:nd,glE:cd,glj:rd,gnap:ed,gnapprox:ad,gne:ld,gnE:id,gneq:ud,gneqq:pd,gnsim:dd,Gopf:fd,gopf:gd,grave:md,GreaterEqual:hd,GreaterEqualLess:bd,GreaterFullEqual:vd,GreaterGreater:wd,GreaterLess:qd,GreaterSlantEqual:yd,GreaterTilde:xd,Gscr:Ld,gscr:Ed,gsim:Td,gsime:Sd,gsiml:Dd,gtcc:Ad,gtcir:kd,gt:Nd,GT:Rd,Gt:jd,gtdot:Cd,gtlPar:Ud,gtquest:$d,gtrapprox:Hd,gtrarr:Vd,gtrdot:Bd,gtreqless:Md,gtreqqless:Od,gtrless:Pd,gtrsim:Fd,gvertneqq:Id,gvnE:Gd,Hacek:_d,hairsp:zd,half:Xd,hamilt:Jd,HARDcy:Yd,hardcy:Zd,harrcir:Qd,harr:Kd,hArr:Wd,harrw:tf,Hat:of,hbar:sf,Hcirc:nf,hcirc:cf,hearts:rf,heartsuit:ef,hellip:af,hercon:lf,hfr:uf,Hfr:pf,HilbertSpace:df,hksearow:ff,hkswarow:gf,hoarr:mf,homtht:hf,hookleftarrow:bf,hookrightarrow:vf,hopf:wf,Hopf:qf,horbar:yf,HorizontalLine:xf,hscr:Lf,Hscr:Ef,hslash:Tf,Hstrok:Sf,hstrok:Df,HumpDownHump:Af,HumpEqual:kf,hybull:Nf,hyphen:Rf,Iacute:jf,iacute:Cf,ic:Uf,Icirc:$f,icirc:Hf,Icy:Vf,icy:Bf,Idot:Mf,IEcy:Of,iecy:Pf,iexcl:Ff,iff:If,ifr:Gf,Ifr:_f,Igrave:zf,igrave:Xf,ii:Jf,iiiint:Yf,iiint:Zf,iinfin:Qf,iiota:Kf,IJlig:Wf,ijlig:tg,Imacr:og,imacr:sg,image:ng,ImaginaryI:cg,imagline:rg,imagpart:eg,imath:ag,Im:lg,imof:ig,imped:ug,Implies:pg,incare:dg,in:"∈",infin:fg,infintie:gg,inodot:mg,intcal:hg,int:bg,Int:vg,integers:wg,Integral:qg,intercal:yg,Intersection:xg,intlarhk:Lg,intprod:Eg,InvisibleComma:Tg,InvisibleTimes:Sg,IOcy:Dg,iocy:Ag,Iogon:kg,iogon:Ng,Iopf:Rg,iopf:jg,Iota:Cg,iota:Ug,iprod:$g,iquest:Hg,iscr:Vg,Iscr:Bg,isin:Mg,isindot:Og,isinE:Pg,isins:Fg,isinsv:Ig,isinv:Gg,it:_g,Itilde:zg,itilde:Xg,Iukcy:Jg,iukcy:Yg,Iuml:Zg,iuml:Qg,Jcirc:Kg,jcirc:Wg,Jcy:tm,jcy:om,Jfr:sm,jfr:nm,jmath:cm,Jopf:rm,jopf:em,Jscr:am,jscr:lm,Jsercy:im,jsercy:um,Jukcy:pm,jukcy:dm,Kappa:fm,kappa:gm,kappav:mm,Kcedil:hm,kcedil:bm,Kcy:vm,kcy:wm,Kfr:qm,kfr:ym,kgreen:xm,KHcy:Lm,khcy:Em,KJcy:Tm,kjcy:Sm,Kopf:Dm,kopf:Am,Kscr:km,kscr:Nm,lAarr:Rm,Lacute:jm,lacute:Cm,laemptyv:Um,lagran:$m,Lambda:Hm,lambda:Vm,lang:Bm,Lang:Mm,langd:Om,langle:Pm,lap:Fm,Laplacetrf:Im,laquo:Gm,larrb:_m,larrbfs:zm,larr:Xm,Larr:Jm,lArr:Ym,larrfs:Zm,larrhk:Qm,larrlp:Km,larrpl:Wm,larrsim:th,larrtl:oh,latail:sh,lAtail:nh,lat:ch,late:rh,lates:eh,lbarr:ah,lBarr:lh,lbbrk:ih,lbrace:uh,lbrack:ph,lbrke:dh,lbrksld:fh,lbrkslu:gh,Lcaron:mh,lcaron:hh,Lcedil:bh,lcedil:vh,lceil:wh,lcub:qh,Lcy:yh,lcy:xh,ldca:Lh,ldquo:Eh,ldquor:Th,ldrdhar:Sh,ldrushar:Dh,ldsh:Ah,le:kh,lE:Nh,LeftAngleBracket:Rh,LeftArrowBar:jh,leftarrow:Ch,LeftArrow:Uh,Leftarrow:$h,LeftArrowRightArrow:Hh,leftarrowtail:Vh,LeftCeiling:Bh,LeftDoubleBracket:Mh,LeftDownTeeVector:Oh,LeftDownVectorBar:Ph,LeftDownVector:Fh,LeftFloor:Ih,leftharpoondown:Gh,leftharpoonup:_h,leftleftarrows:zh,leftrightarrow:Xh,LeftRightArrow:Jh,Leftrightarrow:Yh,leftrightarrows:Zh,leftrightharpoons:Qh,leftrightsquigarrow:Kh,LeftRightVector:Wh,LeftTeeArrow:tb,LeftTee:ob,LeftTeeVector:sb,leftthreetimes:nb,LeftTriangleBar:cb,LeftTriangle:rb,LeftTriangleEqual:eb,LeftUpDownVector:ab,LeftUpTeeVector:lb,LeftUpVectorBar:ib,LeftUpVector:ub,LeftVectorBar:pb,LeftVector:db,lEg:fb,leg:gb,leq:mb,leqq:hb,leqslant:bb,lescc:vb,les:wb,lesdot:qb,lesdoto:yb,lesdotor:xb,lesg:Lb,lesges:Eb,lessapprox:Tb,lessdot:Sb,lesseqgtr:Db,lesseqqgtr:Ab,LessEqualGreater:kb,LessFullEqual:Nb,LessGreater:Rb,lessgtr:jb,LessLess:Cb,lesssim:Ub,LessSlantEqual:$b,LessTilde:Hb,lfisht:Vb,lfloor:Bb,Lfr:Mb,lfr:Ob,lg:Pb,lgE:Fb,lHar:Ib,lhard:Gb,lharu:_b,lharul:zb,lhblk:Xb,LJcy:Jb,ljcy:Yb,llarr:Zb,ll:Qb,Ll:Kb,llcorner:Wb,Lleftarrow:tv,llhard:ov,lltri:sv,Lmidot:nv,lmidot:cv,lmoustache:rv,lmoust:ev,lnap:av,lnapprox:lv,lne:iv,lnE:uv,lneq:pv,lneqq:dv,lnsim:fv,loang:gv,loarr:mv,lobrk:hv,longleftarrow:bv,LongLeftArrow:vv,Longleftarrow:wv,longleftrightarrow:qv,LongLeftRightArrow:yv,Longleftrightarrow:xv,longmapsto:Lv,longrightarrow:Ev,LongRightArrow:Tv,Longrightarrow:Sv,looparrowleft:Dv,looparrowright:Av,lopar:kv,Lopf:Nv,lopf:Rv,loplus:jv,lotimes:Cv,lowast:Uv,lowbar:$v,LowerLeftArrow:Hv,LowerRightArrow:Vv,loz:Bv,lozenge:Mv,lozf:Ov,lpar:Pv,lparlt:Fv,lrarr:Iv,lrcorner:Gv,lrhar:_v,lrhard:zv,lrm:Xv,lrtri:Jv,lsaquo:Yv,lscr:Zv,Lscr:Qv,lsh:Kv,Lsh:Wv,lsim:tw,lsime:ow,lsimg:sw,lsqb:nw,lsquo:cw,lsquor:rw,Lstrok:ew,lstrok:aw,ltcc:lw,ltcir:iw,lt:uw,LT:pw,Lt:dw,ltdot:fw,lthree:gw,ltimes:mw,ltlarr:hw,ltquest:bw,ltri:vw,ltrie:ww,ltrif:qw,ltrPar:yw,lurdshar:xw,luruhar:Lw,lvertneqq:Ew,lvnE:Tw,macr:Sw,male:Dw,malt:Aw,maltese:kw,Map:"⤅",map:Nw,mapsto:Rw,mapstodown:jw,mapstoleft:Cw,mapstoup:Uw,marker:$w,mcomma:Hw,Mcy:Vw,mcy:Bw,mdash:Mw,mDDot:Ow,measuredangle:Pw,MediumSpace:Fw,Mellintrf:Iw,Mfr:Gw,mfr:_w,mho:zw,micro:Xw,midast:Jw,midcir:Yw,mid:Zw,middot:Qw,minusb:Kw,minus:Ww,minusd:tq,minusdu:oq,MinusPlus:sq,mlcp:nq,mldr:cq,mnplus:rq,models:eq,Mopf:aq,mopf:lq,mp:iq,mscr:uq,Mscr:pq,mstpos:dq,Mu:fq,mu:gq,multimap:mq,mumap:hq,nabla:bq,Nacute:vq,nacute:wq,nang:qq,nap:yq,napE:xq,napid:Lq,napos:Eq,napprox:Tq,natural:Sq,naturals:Dq,natur:Aq,nbsp:kq,nbump:Nq,nbumpe:Rq,ncap:jq,Ncaron:Cq,ncaron:Uq,Ncedil:$q,ncedil:Hq,ncong:Vq,ncongdot:Bq,ncup:Mq,Ncy:Oq,ncy:Pq,ndash:Fq,nearhk:Iq,nearr:Gq,neArr:_q,nearrow:zq,ne:Xq,nedot:Jq,NegativeMediumSpace:Yq,NegativeThickSpace:Zq,NegativeThinSpace:Qq,NegativeVeryThinSpace:Kq,nequiv:Wq,nesear:ty,nesim:oy,NestedGreaterGreater:sy,NestedLessLess:ny,NewLine:cy,nexist:ry,nexists:ey,Nfr:ay,nfr:ly,ngE:iy,nge:uy,ngeq:py,ngeqq:dy,ngeqslant:fy,nges:gy,nGg:my,ngsim:hy,nGt:by,ngt:vy,ngtr:wy,nGtv:qy,nharr:yy,nhArr:xy,nhpar:Ly,ni:Ey,nis:Ty,nisd:Sy,niv:Dy,NJcy:Ay,njcy:ky,nlarr:Ny,nlArr:Ry,nldr:jy,nlE:Cy,nle:Uy,nleftarrow:$y,nLeftarrow:Hy,nleftrightarrow:Vy,nLeftrightarrow:By,nleq:My,nleqq:Oy,nleqslant:Py,nles:Fy,nless:Iy,nLl:Gy,nlsim:_y,nLt:zy,nlt:Xy,nltri:Jy,nltrie:Yy,nLtv:Zy,nmid:Qy,NoBreak:Ky,NonBreakingSpace:Wy,nopf:tx,Nopf:ox,Not:sx,not:nx,NotCongruent:cx,NotCupCap:rx,NotDoubleVerticalBar:ex,NotElement:ax,NotEqual:lx,NotEqualTilde:ix,NotExists:ux,NotGreater:px,NotGreaterEqual:dx,NotGreaterFullEqual:fx,NotGreaterGreater:gx,NotGreaterLess:mx,NotGreaterSlantEqual:hx,NotGreaterTilde:bx,NotHumpDownHump:vx,NotHumpEqual:wx,notin:qx,notindot:yx,notinE:xx,notinva:Lx,notinvb:Ex,notinvc:Tx,NotLeftTriangleBar:Sx,NotLeftTriangle:Dx,NotLeftTriangleEqual:Ax,NotLess:kx,NotLessEqual:Nx,NotLessGreater:Rx,NotLessLess:jx,NotLessSlantEqual:Cx,NotLessTilde:Ux,NotNestedGreaterGreater:$x,NotNestedLessLess:Hx,notni:Vx,notniva:Bx,notnivb:Mx,notnivc:Ox,NotPrecedes:Px,NotPrecedesEqual:Fx,NotPrecedesSlantEqual:Ix,NotReverseElement:Gx,NotRightTriangleBar:_x,NotRightTriangle:zx,NotRightTriangleEqual:Xx,NotSquareSubset:Jx,NotSquareSubsetEqual:Yx,NotSquareSuperset:Zx,NotSquareSupersetEqual:Qx,NotSubset:Kx,NotSubsetEqual:Wx,NotSucceeds:tL,NotSucceedsEqual:oL,NotSucceedsSlantEqual:sL,NotSucceedsTilde:nL,NotSuperset:cL,NotSupersetEqual:rL,NotTilde:eL,NotTildeEqual:aL,NotTildeFullEqual:lL,NotTildeTilde:iL,NotVerticalBar:uL,nparallel:pL,npar:dL,nparsl:fL,npart:gL,npolint:mL,npr:hL,nprcue:bL,nprec:vL,npreceq:wL,npre:qL,nrarrc:yL,nrarr:xL,nrArr:LL,nrarrw:EL,nrightarrow:TL,nRightarrow:SL,nrtri:DL,nrtrie:AL,nsc:kL,nsccue:NL,nsce:RL,Nscr:jL,nscr:CL,nshortmid:UL,nshortparallel:$L,nsim:HL,nsime:VL,nsimeq:BL,nsmid:ML,nspar:OL,nsqsube:PL,nsqsupe:FL,nsub:IL,nsubE:GL,nsube:_L,nsubset:zL,nsubseteq:XL,nsubseteqq:JL,nsucc:YL,nsucceq:ZL,nsup:QL,nsupE:KL,nsupe:WL,nsupset:tE,nsupseteq:oE,nsupseteqq:sE,ntgl:nE,Ntilde:cE,ntilde:rE,ntlg:eE,ntriangleleft:aE,ntrianglelefteq:lE,ntriangleright:iE,ntrianglerighteq:uE,Nu:pE,nu:dE,num:fE,numero:gE,numsp:mE,nvap:hE,nvdash:bE,nvDash:vE,nVdash:wE,nVDash:qE,nvge:yE,nvgt:xE,nvHarr:LE,nvinfin:EE,nvlArr:TE,nvle:SE,nvlt:DE,nvltrie:AE,nvrArr:kE,nvrtrie:NE,nvsim:RE,nwarhk:jE,nwarr:CE,nwArr:UE,nwarrow:$E,nwnear:HE,Oacute:VE,oacute:BE,oast:ME,Ocirc:OE,ocirc:PE,ocir:FE,Ocy:IE,ocy:GE,odash:_E,Odblac:zE,odblac:XE,odiv:JE,odot:YE,odsold:ZE,OElig:QE,oelig:KE,ofcir:WE,Ofr:tT,ofr:oT,ogon:sT,Ograve:nT,ograve:cT,ogt:rT,ohbar:eT,ohm:aT,oint:lT,olarr:iT,olcir:uT,olcross:pT,oline:dT,olt:fT,Omacr:gT,omacr:mT,Omega:hT,omega:bT,Omicron:vT,omicron:wT,omid:qT,ominus:yT,Oopf:xT,oopf:LT,opar:ET,OpenCurlyDoubleQuote:TT,OpenCurlyQuote:ST,operp:DT,oplus:AT,orarr:kT,Or:NT,or:RT,ord:jT,order:CT,orderof:UT,ordf:$T,ordm:HT,origof:VT,oror:BT,orslope:MT,orv:OT,oS:PT,Oscr:FT,oscr:IT,Oslash:GT,oslash:_T,osol:zT,Otilde:XT,otilde:JT,otimesas:YT,Otimes:ZT,otimes:QT,Ouml:KT,ouml:WT,ovbar:t1,OverBar:o1,OverBrace:s1,OverBracket:n1,OverParenthesis:c1,para:r1,parallel:e1,par:a1,parsim:l1,parsl:i1,part:u1,PartialD:p1,Pcy:d1,pcy:f1,percnt:g1,period:m1,permil:h1,perp:b1,pertenk:v1,Pfr:w1,pfr:q1,Phi:y1,phi:x1,phiv:L1,phmmat:E1,phone:T1,Pi:S1,pi:D1,pitchfork:A1,piv:k1,planck:N1,planckh:R1,plankv:j1,plusacir:C1,plusb:U1,pluscir:$1,plus:H1,plusdo:V1,plusdu:B1,pluse:M1,PlusMinus:O1,plusmn:P1,plussim:F1,plustwo:I1,pm:G1,Poincareplane:_1,pointint:z1,popf:X1,Popf:J1,pound:Y1,prap:Z1,Pr:Q1,pr:K1,prcue:W1,precapprox:tS,prec:oS,preccurlyeq:sS,Precedes:nS,PrecedesEqual:cS,PrecedesSlantEqual:rS,PrecedesTilde:eS,preceq:aS,precnapprox:lS,precneqq:iS,precnsim:uS,pre:pS,prE:dS,precsim:fS,prime:gS,Prime:mS,primes:hS,prnap:bS,prnE:vS,prnsim:wS,prod:qS,Product:yS,profalar:xS,profline:LS,profsurf:ES,prop:TS,Proportional:SS,Proportion:DS,propto:AS,prsim:kS,prurel:NS,Pscr:RS,pscr:jS,Psi:CS,psi:US,puncsp:$S,Qfr:HS,qfr:VS,qint:BS,qopf:MS,Qopf:OS,qprime:PS,Qscr:FS,qscr:IS,quaternions:GS,quatint:_S,quest:zS,questeq:XS,quot:JS,QUOT:YS,rAarr:ZS,race:QS,Racute:KS,racute:WS,radic:tD,raemptyv:oD,rang:sD,Rang:nD,rangd:cD,range:rD,rangle:eD,raquo:aD,rarrap:lD,rarrb:iD,rarrbfs:uD,rarrc:pD,rarr:dD,Rarr:fD,rArr:gD,rarrfs:mD,rarrhk:hD,rarrlp:bD,rarrpl:vD,rarrsim:wD,Rarrtl:qD,rarrtl:yD,rarrw:xD,ratail:LD,rAtail:ED,ratio:TD,rationals:SD,rbarr:DD,rBarr:AD,RBarr:kD,rbbrk:ND,rbrace:RD,rbrack:jD,rbrke:CD,rbrksld:UD,rbrkslu:$D,Rcaron:HD,rcaron:VD,Rcedil:BD,rcedil:MD,rceil:OD,rcub:PD,Rcy:FD,rcy:ID,rdca:GD,rdldhar:_D,rdquo:zD,rdquor:XD,rdsh:JD,real:YD,realine:ZD,realpart:QD,reals:KD,Re:WD,rect:tA,reg:oA,REG:sA,ReverseElement:nA,ReverseEquilibrium:cA,ReverseUpEquilibrium:rA,rfisht:eA,rfloor:aA,rfr:lA,Rfr:iA,rHar:uA,rhard:pA,rharu:dA,rharul:fA,Rho:gA,rho:mA,rhov:hA,RightAngleBracket:bA,RightArrowBar:vA,rightarrow:wA,RightArrow:qA,Rightarrow:yA,RightArrowLeftArrow:xA,rightarrowtail:LA,RightCeiling:EA,RightDoubleBracket:TA,RightDownTeeVector:SA,RightDownVectorBar:DA,RightDownVector:AA,RightFloor:kA,rightharpoondown:NA,rightharpoonup:RA,rightleftarrows:jA,rightleftharpoons:CA,rightrightarrows:UA,rightsquigarrow:$A,RightTeeArrow:HA,RightTee:VA,RightTeeVector:BA,rightthreetimes:MA,RightTriangleBar:OA,RightTriangle:PA,RightTriangleEqual:FA,RightUpDownVector:IA,RightUpTeeVector:GA,RightUpVectorBar:_A,RightUpVector:zA,RightVectorBar:XA,RightVector:JA,ring:YA,risingdotseq:ZA,rlarr:QA,rlhar:KA,rlm:WA,rmoustache:tk,rmoust:ok,rnmid:sk,roang:nk,roarr:ck,robrk:rk,ropar:ek,ropf:ak,Ropf:lk,roplus:ik,rotimes:uk,RoundImplies:pk,rpar:dk,rpargt:fk,rppolint:gk,rrarr:mk,Rrightarrow:hk,rsaquo:bk,rscr:vk,Rscr:wk,rsh:qk,Rsh:yk,rsqb:xk,rsquo:Lk,rsquor:Ek,rthree:Tk,rtimes:Sk,rtri:Dk,rtrie:Ak,rtrif:kk,rtriltri:Nk,RuleDelayed:Rk,ruluhar:jk,rx:Ck,Sacute:Uk,sacute:$k,sbquo:Hk,scap:Vk,Scaron:Bk,scaron:Mk,Sc:Ok,sc:Pk,sccue:Fk,sce:Ik,scE:Gk,Scedil:_k,scedil:zk,Scirc:Xk,scirc:Jk,scnap:Yk,scnE:Zk,scnsim:Qk,scpolint:Kk,scsim:Wk,Scy:tN,scy:oN,sdotb:sN,sdot:nN,sdote:cN,searhk:rN,searr:eN,seArr:aN,searrow:lN,sect:iN,semi:uN,seswar:pN,setminus:dN,setmn:fN,sext:gN,Sfr:mN,sfr:hN,sfrown:bN,sharp:vN,SHCHcy:wN,shchcy:qN,SHcy:yN,shcy:xN,ShortDownArrow:LN,ShortLeftArrow:EN,shortmid:TN,shortparallel:SN,ShortRightArrow:DN,ShortUpArrow:AN,shy:kN,Sigma:NN,sigma:RN,sigmaf:jN,sigmav:CN,sim:UN,simdot:$N,sime:HN,simeq:VN,simg:BN,simgE:MN,siml:ON,simlE:PN,simne:FN,simplus:IN,simrarr:GN,slarr:_N,SmallCircle:zN,smallsetminus:XN,smashp:JN,smeparsl:YN,smid:ZN,smile:QN,smt:KN,smte:WN,smtes:tR,SOFTcy:oR,softcy:sR,solbar:nR,solb:cR,sol:rR,Sopf:eR,sopf:aR,spades:lR,spadesuit:iR,spar:uR,sqcap:pR,sqcaps:dR,sqcup:fR,sqcups:gR,Sqrt:mR,sqsub:hR,sqsube:bR,sqsubset:vR,sqsubseteq:wR,sqsup:qR,sqsupe:yR,sqsupset:xR,sqsupseteq:LR,square:ER,Square:TR,SquareIntersection:SR,SquareSubset:DR,SquareSubsetEqual:AR,SquareSuperset:kR,SquareSupersetEqual:NR,SquareUnion:RR,squarf:jR,squ:CR,squf:UR,srarr:$R,Sscr:HR,sscr:VR,ssetmn:BR,ssmile:MR,sstarf:OR,Star:PR,star:FR,starf:IR,straightepsilon:GR,straightphi:_R,strns:zR,sub:XR,Sub:JR,subdot:YR,subE:ZR,sube:QR,subedot:KR,submult:WR,subnE:tj,subne:oj,subplus:sj,subrarr:nj,subset:cj,Subset:rj,subseteq:ej,subseteqq:aj,SubsetEqual:lj,subsetneq:ij,subsetneqq:uj,subsim:pj,subsub:dj,subsup:fj,succapprox:gj,succ:mj,succcurlyeq:hj,Succeeds:bj,SucceedsEqual:vj,SucceedsSlantEqual:wj,SucceedsTilde:qj,succeq:yj,succnapprox:xj,succneqq:Lj,succnsim:Ej,succsim:Tj,SuchThat:Sj,sum:Dj,Sum:Aj,sung:kj,sup1:Nj,sup2:Rj,sup3:jj,sup:Cj,Sup:Uj,supdot:$j,supdsub:Hj,supE:Vj,supe:Bj,supedot:Mj,Superset:Oj,SupersetEqual:Pj,suphsol:Fj,suphsub:Ij,suplarr:Gj,supmult:_j,supnE:zj,supne:Xj,supplus:Jj,supset:Yj,Supset:Zj,supseteq:Qj,supseteqq:Kj,supsetneq:Wj,supsetneqq:t0,supsim:o0,supsub:s0,supsup:n0,swarhk:c0,swarr:r0,swArr:e0,swarrow:a0,swnwar:l0,szlig:i0,Tab:u0,target:p0,Tau:d0,tau:f0,tbrk:g0,Tcaron:m0,tcaron:h0,Tcedil:b0,tcedil:v0,Tcy:w0,tcy:q0,tdot:y0,telrec:x0,Tfr:L0,tfr:E0,there4:T0,therefore:S0,Therefore:D0,Theta:A0,theta:k0,thetasym:N0,thetav:R0,thickapprox:j0,thicksim:C0,ThickSpace:U0,ThinSpace:$0,thinsp:H0,thkap:V0,thksim:B0,THORN:M0,thorn:O0,tilde:P0,Tilde:F0,TildeEqual:I0,TildeFullEqual:G0,TildeTilde:_0,timesbar:z0,timesb:X0,times:J0,timesd:Y0,tint:Z0,toea:Q0,topbot:K0,topcir:W0,top:tC,Topf:oC,topf:sC,topfork:nC,tosa:cC,tprime:rC,trade:eC,TRADE:aC,triangle:lC,triangledown:iC,triangleleft:uC,trianglelefteq:pC,triangleq:dC,triangleright:fC,trianglerighteq:gC,tridot:mC,trie:hC,triminus:bC,TripleDot:vC,triplus:wC,trisb:qC,tritime:yC,trpezium:xC,Tscr:LC,tscr:EC,TScy:TC,tscy:SC,TSHcy:DC,tshcy:AC,Tstrok:kC,tstrok:NC,twixt:RC,twoheadleftarrow:jC,twoheadrightarrow:CC,Uacute:UC,uacute:$C,uarr:HC,Uarr:VC,uArr:BC,Uarrocir:MC,Ubrcy:OC,ubrcy:PC,Ubreve:FC,ubreve:IC,Ucirc:GC,ucirc:_C,Ucy:zC,ucy:XC,udarr:JC,Udblac:YC,udblac:ZC,udhar:QC,ufisht:KC,Ufr:WC,ufr:tU,Ugrave:oU,ugrave:sU,uHar:nU,uharl:cU,uharr:rU,uhblk:eU,ulcorn:aU,ulcorner:lU,ulcrop:iU,ultri:uU,Umacr:pU,umacr:dU,uml:fU,UnderBar:gU,UnderBrace:mU,UnderBracket:hU,UnderParenthesis:bU,Union:vU,UnionPlus:wU,Uogon:qU,uogon:yU,Uopf:xU,uopf:LU,UpArrowBar:EU,uparrow:TU,UpArrow:SU,Uparrow:DU,UpArrowDownArrow:AU,updownarrow:kU,UpDownArrow:NU,Updownarrow:RU,UpEquilibrium:jU,upharpoonleft:CU,upharpoonright:UU,uplus:$U,UpperLeftArrow:HU,UpperRightArrow:VU,upsi:BU,Upsi:MU,upsih:OU,Upsilon:PU,upsilon:FU,UpTeeArrow:IU,UpTee:GU,upuparrows:_U,urcorn:zU,urcorner:XU,urcrop:JU,Uring:YU,uring:ZU,urtri:QU,Uscr:KU,uscr:WU,utdot:t$,Utilde:o$,utilde:s$,utri:n$,utrif:c$,uuarr:r$,Uuml:e$,uuml:a$,uwangle:l$,vangrt:i$,varepsilon:u$,varkappa:p$,varnothing:d$,varphi:f$,varpi:g$,varpropto:m$,varr:h$,vArr:b$,varrho:v$,varsigma:w$,varsubsetneq:q$,varsubsetneqq:y$,varsupsetneq:x$,varsupsetneqq:L$,vartheta:E$,vartriangleleft:T$,vartriangleright:S$,vBar:D$,Vbar:A$,vBarv:k$,Vcy:N$,vcy:R$,vdash:j$,vDash:C$,Vdash:U$,VDash:$$,Vdashl:H$,veebar:V$,vee:B$,Vee:M$,veeeq:O$,vellip:P$,verbar:F$,Verbar:I$,vert:G$,Vert:_$,VerticalBar:z$,VerticalLine:X$,VerticalSeparator:J$,VerticalTilde:Y$,VeryThinSpace:Z$,Vfr:Q$,vfr:K$,vltri:W$,vnsub:tH,vnsup:oH,Vopf:sH,vopf:nH,vprop:cH,vrtri:rH,Vscr:eH,vscr:aH,vsubnE:lH,vsubne:iH,vsupnE:uH,vsupne:pH,Vvdash:dH,vzigzag:fH,Wcirc:gH,wcirc:mH,wedbar:hH,wedge:bH,Wedge:vH,wedgeq:wH,weierp:qH,Wfr:yH,wfr:xH,Wopf:LH,wopf:EH,wp:TH,wr:SH,wreath:DH,Wscr:AH,wscr:kH,xcap:NH,xcirc:RH,xcup:jH,xdtri:CH,Xfr:UH,xfr:$H,xharr:HH,xhArr:VH,Xi:BH,xi:MH,xlarr:OH,xlArr:PH,xmap:FH,xnis:IH,xodot:GH,Xopf:_H,xopf:zH,xoplus:XH,xotime:JH,xrarr:YH,xrArr:ZH,Xscr:QH,xscr:KH,xsqcup:WH,xuplus:tV,xutri:oV,xvee:sV,xwedge:nV,Yacute:cV,yacute:rV,YAcy:eV,yacy:aV,Ycirc:lV,ycirc:iV,Ycy:uV,ycy:pV,yen:dV,Yfr:fV,yfr:gV,YIcy:mV,yicy:hV,Yopf:bV,yopf:vV,Yscr:wV,yscr:qV,YUcy:yV,yucy:xV,yuml:LV,Yuml:EV,Zacute:TV,zacute:SV,Zcaron:DV,zcaron:AV,Zcy:kV,zcy:NV,Zdot:RV,zdot:jV,zeetrf:CV,ZeroWidthSpace:UV,Zeta:$V,zeta:HV,zfr:VV,Zfr:BV,ZHcy:MV,zhcy:OV,zigrarr:PV,zopf:FV,Zopf:IV,Zscr:GV,zscr:_V,zwj:zV,zwnj: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="ì",IB="¿",GB="Ï",_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="Ý",IM="ý",GM="¥",_M="ÿ",zM={Aacute:JV,aacute:YV,Acirc:ZV,acirc:QV,acute:KV,AElig:WV,aelig:tB,Agrave:oB,agrave:sB,amp:nB,AMP:cB,Aring:rB,aring:eB,Atilde:aB,atilde:lB,Auml:iB,auml:uB,brvbar:pB,Ccedil:dB,ccedil:fB,cedil:gB,cent:mB,copy:hB,COPY:bB,curren:vB,deg:wB,divide:qB,Eacute:yB,eacute:xB,Ecirc:LB,ecirc:EB,Egrave:TB,egrave:SB,ETH:DB,eth:AB,Euml:kB,euml:NB,frac12:RB,frac14:jB,frac34:CB,gt:UB,GT:$B,Iacute:HB,iacute:VB,Icirc:BB,icirc:MB,iexcl:OB,Igrave:PB,igrave:FB,iquest:IB,Iuml:GB,iuml:_B,laquo:zB,lt:XB,LT:JB,macr:YB,micro:ZB,middot:QB,nbsp:KB,not:WB,Ntilde:tM,ntilde:oM,Oacute:sM,oacute:nM,Ocirc:cM,ocirc:rM,Ograve:eM,ograve:aM,ordf:lM,ordm:iM,Oslash:uM,oslash:pM,Otilde:dM,otilde:fM,Ouml:gM,ouml:mM,para:hM,plusmn:bM,pound:vM,quot:wM,QUOT:qM,raquo:yM,reg:xM,REG:LM,sect:EM,shy:TM,sup1:SM,sup2:DM,sup3:AM,szlig:kM,THORN:NM,thorn:RM,times:jM,Uacute:CM,uacute:UM,Ucirc:$M,ucirc:HM,Ugrave:VM,ugrave:BM,uml:MM,Uuml:OM,uuml:PM,Yacute:FM,yacute:IM,yen:GM,yuml:_M},XM="&",JM="'",YM=">",ZM="<",QM='"',ot={amp:XM,apos:JM,gt:YM,lt:ZM,quot:QM};var O={};const KM={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 WM=S&&S.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(O,"__esModule",{value:!0});var _=WM(KM),tO=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 oO(t){return t>=55296&&t<=57343||t>1114111?"�":(t in _.default&&(t=_.default[t]),tO(t))}O.default=oO;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(tt),sO=U(zM),nO=U(ot),z=U(O),cO=/&(?:[a-zA-Z0-9]+|#[xX][\da-fA-F]+|#\d+);/g;L.decodeXML=st(nO.default);L.decodeHTMLStrict=st(H.default);function st(t){var o=nt(t);return function(s){return String(s).replace(cO,o)}}var X=function(t,o){return t<o?1:-1};L.decodeHTML=function(){for(var t=Object.keys(sO.default).sort(X),o=Object.keys(H.default).sort(X),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=nt(H.default);function a(l){return l.substr(-1)!==";"&&(l+=";"),e(l)}return function(l){return String(l).replace(r,a)}}();function nt(t){return function(s){if(s.charAt(1)==="#"){var c=s.charAt(2);return c==="X"||c==="x"?z.default(parseInt(s.substr(3),16)):z.default(parseInt(s.substr(2),10))}return t[s.slice(1,-1)]||s}}var b={},ct=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 rO=ct(ot),rt=at(rO.default),et=lt(rt);b.encodeXML=pt(rt);var eO=ct(tt),P=at(eO.default),aO=lt(P);b.encodeHTML=iO(P,aO);b.encodeNonAsciiHTML=pt(P);function at(t){return Object.keys(t).sort().reduce(function(o,s){return o[t[s]]="&"+s+";",o},{})}function lt(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 a=0;a<o.length-1;a++){for(var l=a;l<o.length-1&&o[l].charCodeAt(1)+1===o[l+1].charCodeAt(1);)l+=1;var p=1+l-a;p<3||o.splice(a,p,o[a]+"-"+o[l])}return s.unshift("["+o.join("")+"]"),new RegExp(s.join("|"),"g")}var it=/(?:[\x80-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/g,lO=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?lO(t):t.charCodeAt(0)).toString(16).toUpperCase()+";"}function iO(t,o){return function(s){return s.replace(o,function(c){return t[c]}).replace(it,$)}}var ut=new RegExp(et.source+"|"+it.source,"g");function uO(t){return t.replace(ut,$)}b.escape=uO;function pO(t){return t.replace(et,$)}b.escapeUTF8=pO;function pt(t){return function(o){return o.replace(ut,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 a=b;Object.defineProperty(t,"encodeXML",{enumerable:!0,get:function(){return a.encodeXML}}),Object.defineProperty(t,"encodeHTML",{enumerable:!0,get:function(){return a.encodeHTML}}),Object.defineProperty(t,"encodeNonAsciiHTML",{enumerable:!0,get:function(){return a.encodeNonAsciiHTML}}),Object.defineProperty(t,"escape",{enumerable:!0,get:function(){return a.escape}}),Object.defineProperty(t,"escapeUTF8",{enumerable:!0,get:function(){return a.escapeUTF8}}),Object.defineProperty(t,"encodeHTML4",{enumerable:!0,get:function(){return a.encodeHTML}}),Object.defineProperty(t,"encodeHTML5",{enumerable:!0,get:function(){return a.encodeHTML}});var l=L;Object.defineProperty(t,"decodeXML",{enumerable:!0,get:function(){return l.decodeXML}}),Object.defineProperty(t,"decodeHTML",{enumerable:!0,get:function(){return l.decodeHTML}}),Object.defineProperty(t,"decodeHTMLStrict",{enumerable:!0,get:function(){return l.decodeHTMLStrict}}),Object.defineProperty(t,"decodeHTML4",{enumerable:!0,get:function(){return l.decodeHTML}}),Object.defineProperty(t,"decodeHTML5",{enumerable:!0,get:function(){return l.decodeHTML}}),Object.defineProperty(t,"decodeHTML4Strict",{enumerable:!0,get:function(){return l.decodeHTMLStrict}}),Object.defineProperty(t,"decodeHTML5Strict",{enumerable:!0,get:function(){return l.decodeHTMLStrict}}),Object.defineProperty(t,"decodeXMLStrict",{enumerable:!0,get:function(){return l.decodeXML}})})(W);function dO(t,o){if(!(t instanceof o))throw new TypeError("Cannot call a class as a function")}function fO(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 gO(t,o,s){return o&&fO(t.prototype,o),t}function dt(t,o){var s=typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(!s){if(Array.isArray(t)||(s=mO(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,a=!1,l;return{s:function(){s=s.call(t)},n:function(){var u=s.next();return e=u.done,u},e:function(u){a=!0,l=u},f:function(){try{!e&&s.return!=null&&s.return()}finally{if(a)throw l}}}}function mO(t,o){if(t){if(typeof t=="string")return J(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 J(t,o)}}function J(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 hO=W,Y={fg:"#FFF",bg:"#000",newline:!1,escapeXML:!1,stream:!1,colors:bO()};function bO(){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 vO(o,s,c,t)})})}),k(0,23).forEach(function(o){var s=o+232,c=ft(o*10+8);t[s]="#"+c+c+c}),t}function vO(t,o,s,c){var r=16+t*36+o*6+s,e=t>0?t*40+55:0,a=o>0?o*40+55:0,l=s>0?s*40+55:0;c[r]=wO([e,a,l])}function ft(t){for(var o=t.toString(16);o.length<2;)o="0"+o;return o}function wO(t){var o=[],s=dt(t),c;try{for(s.s();!(c=s.n()).done;){var r=c.value;o.push(ft(r))}}catch(e){s.e(e)}finally{s.f()}return"#"+o.join("")}function Z(t,o,s,c){var r;return o==="text"?r=LO(s,c):o==="display"?r=yO(t,s,c):o==="xterm256Foreground"?r=R(t,c.colors[s]):o==="xterm256Background"?r=j(t,c.colors[s]):o==="rgb"&&(r=qO(t,s)),r}function qO(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 yO(t,o,s){o=parseInt(o,10);var c={"-1":function(){return"<br/>"},0:function(){return t.length&&gt(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 K(t,"i")},24:function(){return K(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 gt(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 xO(t){return function(o){return(t===null||o.category!==t)&&t!=="all"}}function Q(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 LO(t,o){return o.escapeXML?hO.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 K(t,o){var s;if(t.slice(-1)[0]===o&&(s=t.pop()),s)return"</"+o+">"}function EO(t,o,s){var c=!1,r=3;function e(){return""}function a(w,q){return s("xterm256Foreground",q),""}function l(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=dt(q),I;try{for(A.s();!(I=A.n()).done;){var wt=I.value;s("display",wt)}}catch(qt){A.e(qt)}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:a},{pattern:/^\x1b\[48;5;(\d+)m/,sub:l},{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,F=0,bt=d.length;F<bt;D=++F){var vt=d[D];if(v(vt,D),t.length!==x){x=t.length;continue t}}if(t.length===x)break;h.push(0),x=t.length}return h}function TO(t,o,s){return o!=="text"&&(t=t.filter(xO(Q(s))),t.push({token:o,data:s,category:Q(s)})),t}var SO=function(){function t(o){dO(this,t),o=o||{},o.colors&&(o.colors=Object.assign({},Y.colors,o.colors)),this.options=Object.assign({},Y,o),this.stack=[],this.stickyStack=[]}return gO(t,[{key:"toHtml",value:function(s){var c=this;s=typeof s=="string"?[s]:s;var r=this.stack,e=this.options,a=[];return this.stickyStack.forEach(function(l){var p=Z(r,l.token,l.data,e);p&&a.push(p)}),EO(s.join(""),e,function(l,p){var u=Z(r,l,p,e);u&&a.push(u),e.stream&&(c.stickyStack=TO(c.stickyStack,l,p))}),r.length&&a.push(gt(r)),a.join("")}}]),t}(),DO=SO;const AO=yt(DO);function mt(){const t=Et();return m.useMemo(()=>new AO(t==="dark"?{fg:"#d6deeb",bg:"#121318",escapeXML:!0}:{fg:"#000000",bg:"#f3f3f3",escapeXML:!0}),[t])}function ht(t){return t.replace(/\u001b\[\d+A/g,"").replace(/\u001b\[\d+K/g,"")}const kO=i.intersection(i.object({type:i.literal("epicshop:test-status-update"),timestamp:i.number()}),i.union([i.object({status:i.literal("pending")}),i.object({status:i.literal("pass")}),i.object({status:i.literal("fail"),error:i.string()})])),NO=i.object({type:i.literal("epicshop:test-step-update"),status:i.literal("pass"),title:i.string(),timestamp:i.number()}),RO=i.union([NO,kO]);function jO({pathname:t,testFile:o}){const s=mt(),c=m.useRef(null),[r,e]=m.useState(null),[a,l]=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=RO.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"&&l([]),e(h)),h.type==="epicshop:test-step-update"&&l(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=a.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(xt,{className:"w-full",type:"multiple",children:n.jsx(Lt,{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(ht(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 CO=i.union([i.object({type:i.literal("init"),exitCode:i.number().nullable().optional(),isRunning:i.boolean(),output:i.array(i.object({type:i.union([i.literal("stdout"),i.literal("stderr")]),content:i.string(),timestamp:i.number()}))}),i.object({type:i.union([i.literal("stdout"),i.literal("stderr")]),data:i.string(),timestamp:i.number()}),i.object({type:i.literal("exit"),isRunning:i.literal(!1),code:i.number().nullable()})]),UO=i.array(CO);function $O(t,o){return o(t)}function HO({name:t}){const[o,s]=m.useReducer($O,{version:0,isRunning:!1,exitCode:void 0,lines:[]}),c=mt(),{version:r,isRunning:e,exitCode:a,lines:l}=o,p=Tt(`/test?${new URLSearchParams({name:t})}&v=${r}`);return m.useEffect(()=>{if(!p)return;const u=JSON.parse(p),E=UO.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(VO,{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(MO,{name:t})]}):null]}),!e&&a!==void 0&&n.jsx("p",{className:"pr-3.5 leading-none",children:a===0?"Tests passed":`Test failed (exit code ${String(a)})`}),!e&&a!==void 0&&n.jsx(BO,{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:l.map(u=>n.jsx("code",{"data-type":u.type,dangerouslySetInnerHTML:{__html:c.toHtml(ht(u.content))}},u.timestamp))})]})]})}function VO({name:t,onRun:o}){const s=M(),c=B(),r=m.useRef(o);return m.useEffect(()=>{r.current=o},[o]),m.useEffect(()=>{var e,a;(e=s.data)!=null&&e.success&&((a=r.current)==null||a.call(r))},[s.data]),n.jsxs(s.Form,{method:"POST",action:"/test",className:"h-full",children:[c,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 BO({name:t,onClear:o}){const s=M(),c=B(),r=m.useRef(o);return m.useEffect(()=>{r.current=o},[o]),m.useEffect(()=>{var e,a;(e=s.data)!=null&&e.success&&((a=r.current)==null||a.call(r))},[s.data]),n.jsxs(s.Form,{method:"POST",action:"/test",className:"h-full",children:[c,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 MO({name:t,onStop:o}){const s=M(),c=B(),r=m.useRef(o);return m.useEffect(()=>{r.current=o},[o]),m.useEffect(()=>{var e,a;(e=s.data)!=null&&e.success&&((a=r.current)==null||a.call(r))},[s.data]),n.jsxs(s.Form,{method:"POST",action:"/test",className:"h-full",children:[c,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 QO({appInfo:t,problemAppName:o,allApps:s,isUpToDate:c}){return n.jsx(Dt,{playgroundAppName:t==null?void 0:t.appName,problemAppName:o,allApps:s,isUpToDate:c,children:n.jsx(OO,{playgroundAppInfo:t})})}function OO({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(HO,{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(jO,{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{Dt as P,OO as T,QO as a};
4
+ //# sourceMappingURL=tests-BHsX0R-r.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tests-BHsX0R-r.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\n// remove this when this is fixed: https://github.com/rburns/ansi-to-html/issues/112\nexport function stripCursorMovements(data: string) {\n\treturn data.replace(/\\u001b\\[\\d+A/g, '').replace(/\\u001b\\[\\d+K/g, '')\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 { stripCursorMovements, 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(stripCursorMovements(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 { stripCursorMovements, useAnsiToHtml } from '#app/utils/ansi-text.js'\nimport { userHasAccessToWorkshop } from '#app/utils/epic-api.js'\nimport { ensureUndeployed } from '#app/utils/misc.tsx'\nimport { jsonWithPE, usePERedirectInput } from '#app/utils/pe.js'\nimport { createToastHeaders } from '#app/utils/toast.server.js'\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 userHasAccess = await userHasAccessToWorkshop({\n\t\trequest,\n\t})\n\tif (!userHasAccess) {\n\t\treturn jsonWithPE(\n\t\t\tformData,\n\t\t\t{\n\t\t\t\tsuccess: false,\n\t\t\t\terror:\n\t\t\t\t\t'You do not have access to this workshop. Purchase the workshop to be able to run the tests.',\n\t\t\t},\n\t\t\t{\n\t\t\t\tstatus: 403,\n\t\t\t\theaders: await createToastHeaders({\n\t\t\t\t\ttitle: 'Purchase required',\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t'You do not have access to this workshop. Purchase the workshop to be able to run the tests.',\n\t\t\t\t}),\n\t\t\t},\n\t\t)\n\t}\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 jsonWithPE(\n\t\t\tformData,\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 jsonWithPE(\n\t\t\tformData,\n\t\t\t{ success: false, error: 'App not found' },\n\t\t\t{ status: 404 },\n\t\t)\n\t}\n\tswitch (result.data.intent) {\n\t\tcase 'run': {\n\t\t\tvoid runAppTests(app)\n\t\t\treturn jsonWithPE(formData, { 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 jsonWithPE(formData, { success: true })\n\t\t}\n\t\tcase 'clear': {\n\t\t\tclearTestProcessEntry(app)\n\t\t\treturn jsonWithPE(formData, { 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(stripCursorMovements(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 peRedirectInput = usePERedirectInput()\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{peRedirectInput}\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 peRedirectInput = usePERedirectInput()\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{peRedirectInput}\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 peRedirectInput = usePERedirectInput()\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{peRedirectInput}\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","stripCursorMovements","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","peRedirectInput","usePERedirectInput","latestOnRun","current","Form","method","action","latestOnClear","onStop","latestOnStop","Tests","playgroundAppInfo","TestUI","inBrowserTestKey","setInBrowserTestKey"],"mappings":"keAIO,SAASA,GAAiB,CAChC,kBAAAC,EACA,eAAAC,EACA,WAAAC,EACA,QAAAC,EACA,SAAAC,CACD,EAMG,CACF,MAAMC,EAAeL,IAAsBC,EACrCK,EACLD,GAAgBH,EACfK,EAAA,IAACC,GAAK,KAAK,KAAK,KAAK,QAAA,CAAS,EAE9BD,EAAA,IAACC,EAAA,CACA,KAAK,KACL,KAAK,WACL,UAAU,sCAAA,CAAA,EAGb,IAAIC,EAA2B,6BAC/B,OAAKP,IAEHO,EAAA,yDAEGJ,IAEHI,EAAA,oEAGDC,EAAA,KAAC,MAAI,CAAA,UAAU,8CACd,SAAA,CAACA,EAAAA,KAAA,MAAA,CAAI,UAAU,yEACd,SAAA,CAACH,EAAA,IAAA,MAAA,CAAI,UAAU,iBACb,SACAN,EAAAM,EAAA,IAACI,EAAA,CACA,QAASV,EACT,YAAaQ,EAEZ,SAAAH,CAAA,CAAA,EAGFC,EAAAA,IAACK,EAAc,CAAA,QAAQ,yCACtB,SAAAL,EAAA,IAAC,MACA,CAAA,SAAAA,EAAA,IAACC,EAAK,CAAA,KAAK,UAAW,CAAA,CACvB,CAAA,CACD,CAAA,EAEF,EACCD,EAAA,IAAA,MAAA,CAAI,UAAU,mBACb,SACAP,EAAAO,EAAA,IAACI,EAAA,CACA,QAASX,EACT,MAAK,GACL,YAAY,mBAEZ,SAAAO,EAAAA,IAAC,OAAI,UAAU,2CACd,eAACC,EAAK,CAAA,KAAK,UAAU,CACtB,CAAA,CAAA,CAAA,EAGDD,EAAAA,IAAC,MAAI,CAAA,UAAU,UAAU,CAE3B,CAAA,EACAA,EAAA,IAACM,GAAA,CACA,QAAAV,EACA,kBAAAH,CAAA,CACD,CAAA,EACD,EACCO,EAAAA,IAAA,MAAA,CAAI,UAAU,2DACb,SAAAH,CACF,CAAA,CACD,CAAA,CAAA,CAEF;ki+BChFA,IAAIU,GAAmBC,GAAQA,EAAK,iBAAoB,SAAUC,EAAK,CACnE,OAAQA,GAAOA,EAAI,WAAcA,EAAM,CAAE,QAAWA,EACxD,EACA,OAAO,eAAeC,EAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,IAAIC,EAAgBJ,GAAgBK,EAA6B,EAE7DC,GAEJ,OAAO,eACH,SAAUC,EAAW,CACjB,IAAIC,EAAS,GACb,OAAID,EAAY,QACZA,GAAa,MACbC,GAAU,OAAO,aAAeD,IAAc,GAAM,KAAS,KAAM,EACnEA,EAAY,MAAUA,EAAY,MAEtCC,GAAU,OAAO,aAAaD,CAAS,EAChCC,CACf,EACA,SAASC,GAAgBF,EAAW,CAChC,OAAKA,GAAa,OAAUA,GAAa,OAAWA,EAAY,QACrD,KAEPA,KAAaH,EAAc,UAC3BG,EAAYH,EAAc,QAAQG,CAAS,GAExCD,GAAcC,CAAS,EAClC,CACAJ,EAAA,QAAkBM,GC5BlB,IAAIT,EAAmBC,GAAQA,EAAK,iBAAoB,SAAUC,EAAK,CACnE,OAAQA,GAAOA,EAAI,WAAcA,EAAM,CAAE,QAAWA,EACxD,EACA,OAAO,eAAeQ,EAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5DA,EAAA,WAA6CA,EAAA,6BAAuB,OACpE,IAAIC,EAAkBX,EAAgBK,EAA+B,EACjEO,GAAgBZ,EAAgBa,EAA6B,EAC7DC,GAAad,EAAgBe,EAA0B,EACvDC,EAAqBhB,EAAgBiB,CAA6B,EAClEC,GAAiB,4CACrBR,EAAA,UAAoBS,GAAiBL,GAAW,OAAO,EACvDJ,EAAA,iBAA2BS,GAAiBR,EAAgB,OAAO,EACnE,SAASQ,GAAiBC,EAAK,CAC3B,IAAIC,EAAUC,GAAYF,CAAG,EAC7B,OAAO,SAAUG,EAAK,CAAE,OAAO,OAAOA,CAAG,EAAE,QAAQL,GAAgBG,CAAO,EAC9E,CACA,IAAIG,EAAS,SAAUC,EAAGC,EAAG,CAAE,OAAQD,EAAIC,EAAI,EAAI,IACjChB,EAAA,WAAI,UAAY,CAG9B,QAFIiB,EAAS,OAAO,KAAKf,GAAc,OAAO,EAAE,KAAKY,CAAM,EACvDI,EAAO,OAAO,KAAKjB,EAAgB,OAAO,EAAE,KAAKa,CAAM,EAClDK,EAAI,EAAGC,EAAI,EAAGD,EAAID,EAAK,OAAQC,IAChCF,EAAOG,CAAC,IAAMF,EAAKC,CAAC,GACpBD,EAAKC,CAAC,GAAK,KACXC,KAGAF,EAAKC,CAAC,GAAK,IAGnB,IAAIE,EAAK,IAAI,OAAO,OAASH,EAAK,KAAK,GAAG,EAAI,gCAAiC,GAAG,EAC9EP,EAAUC,GAAYX,EAAgB,OAAO,EACjD,SAASqB,EAAST,EAAK,CACnB,OAAIA,EAAI,OAAO,EAAE,IAAM,MACnBA,GAAO,KACJF,EAAQE,CAAG,CACrB,CAED,OAAO,SAAUA,EAAK,CAAE,OAAO,OAAOA,CAAG,EAAE,QAAQQ,EAAIC,CAAQ,EACnE,IACA,SAASV,GAAYF,EAAK,CACtB,OAAO,SAAiBG,EAAK,CACzB,GAAIA,EAAI,OAAO,CAAC,IAAM,IAAK,CACvB,IAAIU,EAAaV,EAAI,OAAO,CAAC,EAC7B,OAAIU,IAAe,KAAOA,IAAe,IAC9BjB,EAAmB,QAAQ,SAASO,EAAI,OAAO,CAAC,EAAG,EAAE,CAAC,EAE1DP,EAAmB,QAAQ,SAASO,EAAI,OAAO,CAAC,EAAG,EAAE,CAAC,CAChE,CAED,OAAOH,EAAIG,EAAI,MAAM,EAAG,EAAE,CAAC,GAAKA,CACxC,CACA,UCnDIvB,GAAmBC,GAAQA,EAAK,iBAAoB,SAAUC,EAAK,CACnE,OAAQA,GAAOA,EAAI,WAAcA,EAAM,CAAE,QAAWA,EACxD,EACA,OAAO,eAAegC,EAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC1CA,EAAA,WAAiBA,EAAA,OAA6BA,EAAA,mBAAqBA,EAAA,WAAoBA,EAAA,UAAG,OAC5G,IAAIpB,GAAad,GAAgBK,EAA0B,EACvD8B,GAAaC,GAActB,GAAW,OAAO,EAC7CuB,GAAcC,GAAmBH,EAAU,EAQ/CD,EAAA,UAAoBK,GAAgBJ,EAAU,EAC9C,IAAIxB,GAAkBX,GAAgBa,EAA+B,EACjE2B,EAAcJ,GAAczB,GAAgB,OAAO,EACnD8B,GAAeH,GAAmBE,CAAW,EAWjDN,EAAA,WAAqBQ,GAAWF,EAAaC,EAAY,EAQzDP,EAAA,mBAA6BK,GAAgBC,CAAW,EACxD,SAASJ,GAAcO,EAAK,CACxB,OAAO,OAAO,KAAKA,CAAG,EACjB,KAAM,EACN,OAAO,SAAUC,EAASC,EAAM,CACjC,OAAAD,EAAQD,EAAIE,CAAI,CAAC,EAAI,IAAMA,EAAO,IAC3BD,CACV,EAAE,CAAE,CAAA,CACT,CACA,SAASN,GAAmBM,EAAS,CAGjC,QAFIE,EAAS,CAAA,EACTC,EAAW,CAAA,EACNC,EAAK,EAAGC,EAAK,OAAO,KAAKL,CAAO,EAAGI,EAAKC,EAAG,OAAQD,IAAM,CAC9D,IAAIE,EAAID,EAAGD,CAAE,EACTE,EAAE,SAAW,EAEbJ,EAAO,KAAK,KAAOI,CAAC,EAIpBH,EAAS,KAAKG,CAAC,CAEtB,CAEDJ,EAAO,KAAI,EACX,QAASK,EAAQ,EAAGA,EAAQL,EAAO,OAAS,EAAGK,IAAS,CAGpD,QADIC,EAAMD,EACHC,EAAMN,EAAO,OAAS,GACzBA,EAAOM,CAAG,EAAE,WAAW,CAAC,EAAI,IAAMN,EAAOM,EAAM,CAAC,EAAE,WAAW,CAAC,GAC9DA,GAAO,EAEX,IAAIC,EAAQ,EAAID,EAAMD,EAElBE,EAAQ,GAEZP,EAAO,OAAOK,EAAOE,EAAOP,EAAOK,CAAK,EAAI,IAAML,EAAOM,CAAG,CAAC,CAChE,CACD,OAAAL,EAAS,QAAQ,IAAMD,EAAO,KAAK,EAAE,EAAI,GAAG,EACrC,IAAI,OAAOC,EAAS,KAAK,GAAG,EAAG,GAAG,CAC7C,CAEA,IAAIO,GAAa,0IACbC,GAEJ,OAAO,UAAU,aAAe,KAExB,SAAUhC,EAAK,CAAE,OAAOA,EAAI,YAAY,CAAC,CAAI,EAE7C,SAAUiC,EAAG,CACT,OAAQA,EAAE,WAAW,CAAC,EAAI,OAAU,KAChCA,EAAE,WAAW,CAAC,EACd,MACA,KAChB,EACA,SAASC,EAAmBD,EAAG,CAC3B,MAAO,OAASA,EAAE,OAAS,EAAID,GAAaC,CAAC,EAAIA,EAAE,WAAW,CAAC,GAC1D,SAAS,EAAE,EACX,YAAW,EAAK,GACzB,CACA,SAASd,GAAWE,EAASb,EAAI,CAC7B,OAAO,SAAU2B,EAAM,CACnB,OAAOA,EACF,QAAQ3B,EAAI,SAAUc,EAAM,CAAE,OAAOD,EAAQC,CAAI,EAAI,EACrD,QAAQS,GAAYG,CAAkB,CACnD,CACA,CACA,IAAIE,GAAgB,IAAI,OAAOtB,GAAY,OAAS,IAAMiB,GAAW,OAAQ,GAAG,EAUhF,SAASM,GAAOF,EAAM,CAClB,OAAOA,EAAK,QAAQC,GAAeF,CAAkB,CACzD,CACcvB,EAAA,OAAG0B,GASjB,SAASC,GAAWH,EAAM,CACtB,OAAOA,EAAK,QAAQrB,GAAaoB,CAAkB,CACvD,CACkBvB,EAAA,WAAG2B,GACrB,SAAStB,GAAgBI,EAAK,CAC1B,OAAO,SAAUe,EAAM,CACnB,OAAOA,EAAK,QAAQC,GAAe,SAAUH,EAAG,CAAE,OAAOb,EAAIa,CAAC,GAAKC,EAAmBD,CAAC,CAAI,CAAA,CACnG,CACA,cCtIA,OAAO,eAAcM,EAAU,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5DA,EAAA,gBAA0BA,oBAA4BA,EAA4B,kBAAAA,EAAA,YAAsBA,cAAsBA,EAA2B,iBAAAA,EAAA,WAAqBA,YAAoBA,EAAsB,YAAAA,EAAA,YAAsBA,aAAqBA,EAAiB,OAAAA,EAAA,mBAA6BA,aAAqBA,EAAoB,UAAAA,EAAA,OAAiBA,eAAuBA,EAAiB,OAAA,OACnZ,IAAIC,EAAW1D,EACX2D,EAAWnD,EAQf,SAASH,EAAOgD,EAAMO,EAAO,CACzB,OAAQ,CAACA,GAASA,GAAS,EAAIF,EAAS,UAAYA,EAAS,YAAYL,CAAI,CAChF,CACDI,EAAA,OAAiBpD,EAQjB,SAASwD,EAAaR,EAAMO,EAAO,CAC/B,OAAQ,CAACA,GAASA,GAAS,EAAIF,EAAS,UAAYA,EAAS,kBAAkBL,CAAI,CACtF,CACDI,EAAA,aAAuBI,EAQvB,SAAShC,EAAOwB,EAAMO,EAAO,CACzB,OAAQ,CAACA,GAASA,GAAS,EAAID,EAAS,UAAYA,EAAS,YAAYN,CAAI,CAChF,CACDI,EAAA,OAAiB5B,EACjB,IAAIiC,EAAWtD,EACf,OAAO,eAAeiD,EAAS,YAAa,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOK,EAAS,SAAU,CAAI,CAAA,EACjH,OAAO,eAAeL,EAAS,aAAc,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOK,EAAS,UAAW,CAAI,CAAA,EACnH,OAAO,eAAeL,EAAS,qBAAsB,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOK,EAAS,kBAAmB,CAAI,CAAA,EACnI,OAAO,eAAeL,EAAS,SAAU,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOK,EAAS,MAAO,CAAI,CAAA,EAC3G,OAAO,eAAeL,EAAS,aAAc,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOK,EAAS,UAAW,CAAI,CAAA,EAEnH,OAAO,eAAeL,EAAS,cAAe,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOK,EAAS,UAAW,CAAI,CAAA,EACpH,OAAO,eAAeL,EAAS,cAAe,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOK,EAAS,UAAW,CAAI,CAAA,EACpH,IAAIC,EAAW/D,EACf,OAAO,eAAeyD,EAAS,YAAa,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOM,EAAS,SAAU,CAAI,CAAA,EACjH,OAAO,eAAeN,EAAS,aAAc,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOM,EAAS,UAAW,CAAI,CAAA,EACnH,OAAO,eAAeN,EAAS,mBAAoB,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOM,EAAS,gBAAiB,CAAI,CAAA,EAE/H,OAAO,eAAeN,EAAS,cAAe,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOM,EAAS,UAAW,CAAI,CAAA,EACpH,OAAO,eAAeN,EAAS,cAAe,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOM,EAAS,UAAW,CAAI,CAAA,EACpH,OAAO,eAAeN,EAAS,oBAAqB,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOM,EAAS,gBAAiB,CAAI,CAAA,EAChI,OAAO,eAAeN,EAAS,oBAAqB,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOM,EAAS,gBAAiB,CAAI,CAAA,EAChI,OAAO,eAAeN,EAAS,kBAAmB,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOM,EAAS,SAAU,CAAI,CAAA,OCtDvH,SAASC,GAAgBC,EAAUC,EAAa,CAAE,GAAI,EAAED,aAAoBC,GAAgB,MAAM,IAAI,UAAU,mCAAmC,CAAM,CAEzJ,SAASC,GAAkBC,EAAQC,EAAO,CAAE,QAAS7C,EAAI,EAAGA,EAAI6C,EAAM,OAAQ7C,IAAK,CAAE,IAAI8C,EAAaD,EAAM7C,CAAC,EAAG8C,EAAW,WAAaA,EAAW,YAAc,GAAOA,EAAW,aAAe,GAAU,UAAWA,IAAYA,EAAW,SAAW,IAAM,OAAO,eAAeF,EAAQE,EAAW,IAAKA,CAAU,EAAM,CAE7T,SAASC,GAAaL,EAAaM,EAAYC,EAAa,CAAE,OAAID,GAAYL,GAAkBD,EAAY,UAAWM,CAAU,EAAwEN,CAAc,CAEvN,SAASQ,GAA2BC,EAAGC,EAAgB,CAAE,IAAIC,EAAK,OAAO,OAAW,KAAeF,EAAE,OAAO,QAAQ,GAAKA,EAAE,YAAY,EAAG,GAAI,CAACE,EAAI,CAAE,GAAI,MAAM,QAAQF,CAAC,IAAME,EAAKC,GAA4BH,CAAC,IAAMC,EAAqD,CAAMC,IAAIF,EAAIE,GAAI,IAAIrD,EAAI,EAAOuD,EAAI,UAAa,CAAA,EAAI,MAAO,CAAE,EAAGA,EAAG,EAAG,UAAa,CAAE,OAAIvD,GAAKmD,EAAE,OAAe,CAAE,KAAM,EAAI,EAAW,CAAE,KAAM,GAAO,MAAOA,EAAEnD,GAAG,CAAG,CAAG,EAAE,EAAG,SAAWwD,EAAI,CAAE,MAAMA,CAAK,EAAE,EAAGD,CAAC,CAAG,CAAG,MAAM,IAAI,UAAU;AAAA,mFAAuI,CAAI,CAAC,IAAIE,EAAmB,GAAMC,EAAS,GAAOC,EAAK,MAAO,CAAE,EAAG,UAAa,CAAEN,EAAKA,EAAG,KAAKF,CAAC,GAAM,EAAG,UAAa,CAAE,IAAIS,EAAOP,EAAG,KAAI,EAAI,OAAAI,EAAmBG,EAAK,KAAaA,CAAK,EAAI,EAAG,SAAWC,EAAK,CAAEH,EAAS,GAAMC,EAAME,CAAI,EAAI,EAAG,UAAa,CAAE,GAAI,CAAM,CAACJ,GAAoBJ,EAAG,QAAa,MAAMA,EAAG,OAAW,CAAG,QAAA,CAAW,GAAIK,EAAQ,MAAMC,CAAI,CAAI,CAAA,CAAK,CAE5+B,SAASL,GAA4BH,EAAGW,EAAQ,CAAE,GAAKX,EAAW,IAAI,OAAOA,GAAM,SAAU,OAAOY,EAAkBZ,EAAGW,CAAM,EAAG,IAAIE,EAAI,OAAO,UAAU,SAAS,KAAKb,CAAC,EAAE,MAAM,EAAG,EAAE,EAAgE,GAAzDa,IAAM,UAAYb,EAAE,cAAaa,EAAIb,EAAE,YAAY,MAAUa,IAAM,OAASA,IAAM,MAAO,OAAO,MAAM,KAAKb,CAAC,EAAG,GAAIa,IAAM,aAAe,2CAA2C,KAAKA,CAAC,EAAG,OAAOD,EAAkBZ,EAAGW,CAAM,EAAI,CAEha,SAASC,EAAkBE,EAAKC,EAAK,EAAMA,GAAO,MAAQA,EAAMD,EAAI,UAAQC,EAAMD,EAAI,QAAQ,QAASjE,EAAI,EAAGmE,EAAO,IAAI,MAAMD,CAAG,EAAGlE,EAAIkE,EAAKlE,IAAOmE,EAAKnE,CAAC,EAAIiE,EAAIjE,CAAC,EAAK,OAAOmE,CAAO,CAEvL,IAAIC,GAAW5F,EAEX6F,EAAW,CACb,GAAI,OACJ,GAAI,OACJ,QAAS,GACT,UAAW,GACX,OAAQ,GACR,OAAQC,GAAkB,CAC5B,EAEA,SAASA,IAAmB,CAC1B,IAAIC,EAAS,CACX,EAAG,OACH,EAAG,OACH,EAAG,OACH,EAAG,OACH,EAAG,OACH,EAAG,OACH,EAAG,OACH,EAAG,OACH,EAAG,OACH,EAAG,OACH,GAAI,OACJ,GAAI,OACJ,GAAI,OACJ,GAAI,OACJ,GAAI,OACJ,GAAI,MACR,EACE,OAAAC,EAAM,EAAG,CAAC,EAAE,QAAQ,SAAUC,EAAK,CACjCD,EAAM,EAAG,CAAC,EAAE,QAAQ,SAAUE,EAAO,CACnCF,EAAM,EAAG,CAAC,EAAE,QAAQ,SAAUG,EAAM,CAClC,OAAOC,GAAcH,EAAKC,EAAOC,EAAMJ,CAAM,CACrD,CAAO,CACP,CAAK,CACL,CAAG,EACDC,EAAM,EAAG,EAAE,EAAE,QAAQ,SAAUK,EAAM,CACnC,IAAIlD,EAAIkD,EAAO,IACXC,EAAIC,GAAYF,EAAO,GAAK,CAAC,EACjCN,EAAO5C,CAAC,EAAI,IAAMmD,EAAIA,EAAIA,CAC9B,CAAG,EACMP,CACT,CASA,SAASK,GAAcH,EAAKC,EAAOC,EAAMJ,EAAQ,CAC/C,IAAI5C,EAAI,GAAK8C,EAAM,GAAKC,EAAQ,EAAIC,EAChCK,EAAIP,EAAM,EAAIA,EAAM,GAAK,GAAK,EAC9BQ,EAAIP,EAAQ,EAAIA,EAAQ,GAAK,GAAK,EAClC7E,EAAI8E,EAAO,EAAIA,EAAO,GAAK,GAAK,EACpCJ,EAAO5C,CAAC,EAAIuD,GAAiB,CAACF,EAAGC,EAAGpF,CAAC,CAAC,CACxC,CAQA,SAASkF,GAAYI,EAAK,CAGxB,QAFIzF,EAAMyF,EAAI,SAAS,EAAE,EAElBzF,EAAI,OAAS,GAClBA,EAAM,IAAMA,EAGd,OAAOA,CACT,CAQA,SAASwF,GAAiBE,EAAK,CAC7B,IAAIC,EAAU,CAAA,EAEVC,EAAYpC,GAA2BkC,CAAG,EAC1CG,EAEJ,GAAI,CACF,IAAKD,EAAU,EAAC,EAAI,EAAEC,EAAQD,EAAU,EAAG,GAAE,MAAO,CAClD,IAAI,EAAIC,EAAM,MACdF,EAAQ,KAAKN,GAAY,CAAC,CAAC,CAC5B,CACF,OAAQpB,EAAK,CACZ2B,EAAU,EAAE3B,CAAG,CACnB,QAAY,CACR2B,EAAU,EAAC,CACZ,CAED,MAAO,IAAMD,EAAQ,KAAK,EAAE,CAC9B,CASA,SAASG,EAAeC,EAAOC,EAAO7D,EAAM8D,EAAS,CACnD,IAAIC,EAEJ,OAAIF,IAAU,OACZE,EAASC,GAAShE,EAAM8D,CAAO,EACtBD,IAAU,UACnBE,EAASE,GAAcL,EAAO5D,EAAM8D,CAAO,EAClCD,IAAU,qBACnBE,EAASG,EAAoBN,EAAOE,EAAQ,OAAO9D,CAAI,CAAC,EAC/C6D,IAAU,qBACnBE,EAASI,EAAoBP,EAAOE,EAAQ,OAAO9D,CAAI,CAAC,EAC/C6D,IAAU,QACnBE,EAASK,GAAUR,EAAO5D,CAAI,GAGzB+D,CACT,CAQA,SAASK,GAAUR,EAAO5D,EAAM,CAC9BA,EAAOA,EAAK,UAAU,CAAC,EAAE,MAAM,EAAG,EAAE,EACpC,IAAIqE,EAAY,CAACrE,EAAK,OAAO,EAAG,CAAC,EAC7BsE,EAAQtE,EAAK,UAAU,CAAC,EAAE,MAAM,GAAG,EACnCuE,EAAMD,EAAM,IAAI,SAAUE,EAAO,CACnC,OAAQ,IAAM,OAAOA,CAAK,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,CACvD,CAAG,EAAE,KAAK,EAAE,EACV,OAAOC,EAAUb,GAAQS,IAAc,GAAK,UAAY,sBAAwBE,CAAG,CACrF,CASA,SAASN,GAAcL,EAAOc,EAAMZ,EAAS,CAC3CY,EAAO,SAASA,EAAM,EAAE,EACxB,IAAIC,EAAU,CACZ,KAAM,UAAa,CACjB,MAAO,OACR,EACD,EAAG,UAAa,CACd,OAAOf,EAAM,QAAUgB,GAAYhB,CAAK,CACzC,EACD,EAAG,UAAa,CACd,OAAOiB,EAAQjB,EAAO,GAAG,CAC1B,EACD,EAAG,UAAa,CACd,OAAOiB,EAAQjB,EAAO,GAAG,CAC1B,EACD,EAAG,UAAa,CACd,OAAOiB,EAAQjB,EAAO,GAAG,CAC1B,EACD,EAAG,UAAa,CACd,OAAOa,EAAUb,EAAO,cAAc,CACvC,EACD,EAAG,UAAa,CACd,OAAOiB,EAAQjB,EAAO,QAAQ,CAC/B,EACD,GAAI,UAAa,CACf,OAAOa,EAAUb,EAAO,2DAA2D,CACpF,EACD,GAAI,UAAa,CACf,OAAOkB,EAASlB,EAAO,GAAG,CAC3B,EACD,GAAI,UAAa,CACf,OAAOkB,EAASlB,EAAO,GAAG,CAC3B,EACD,GAAI,UAAa,CACf,OAAOM,EAAoBN,EAAOE,EAAQ,EAAE,CAC7C,EACD,GAAI,UAAa,CACf,OAAOK,EAAoBP,EAAOE,EAAQ,EAAE,CAC7C,EACD,GAAI,UAAa,CACf,OAAOW,EAAUb,EAAO,0BAA0B,CACnD,CACL,EACMG,EAEJ,OAAIY,EAAQD,CAAI,EACdX,EAASY,EAAQD,CAAI,IACZ,EAAIA,GAAQA,EAAO,EAC5BX,EAASc,EAAQjB,EAAO,OAAO,EACtB,GAAKc,GAAQA,EAAO,GAC7BX,EAASG,EAAoBN,EAAOE,EAAQ,OAAOY,EAAO,EAAE,CAAC,EACpD,GAAKA,GAAQA,EAAO,GAC7BX,EAASI,EAAoBP,EAAOE,EAAQ,OAAOY,EAAO,EAAE,CAAC,EACpD,GAAKA,GAAQA,EAAO,GAC7BX,EAASG,EAAoBN,EAAOE,EAAQ,OAAO,GAAKY,EAAO,GAAG,CAAC,EAC1D,GAAKA,GAAQA,EAAO,MAC7BX,EAASI,EAAoBP,EAAOE,EAAQ,OAAO,GAAKY,EAAO,IAAI,CAAC,GAG/DX,CACT,CAOA,SAASa,GAAYhB,EAAO,CAC1B,IAAImB,EAAanB,EAAM,MAAM,CAAC,EAC9B,OAAAA,EAAM,OAAS,EACRmB,EAAW,QAAO,EAAG,IAAI,SAAUC,EAAK,CAC7C,MAAO,KAAOA,EAAM,GACxB,CAAG,EAAE,KAAK,EAAE,CACZ,CAUA,SAASrC,EAAMsC,EAAKC,EAAM,CAGxB,QAFI1B,EAAU,CAAA,EAELpF,EAAI6G,EAAK7G,GAAK8G,EAAM9G,IAC3BoF,EAAQ,KAAKpF,CAAC,EAGhB,OAAOoF,CACT,CAQA,SAAS2B,GAAYC,EAAU,CAC7B,OAAO,SAAUC,EAAG,CAClB,OAAQD,IAAa,MAAQC,EAAE,WAAaD,IAAaA,IAAa,KAC1E,CACA,CAQA,SAASE,EAAgBZ,EAAM,CAC7BA,EAAO,SAASA,EAAM,EAAE,EACxB,IAAIX,EAAS,KAEb,OAAIW,IAAS,EACXX,EAAS,MACAW,IAAS,EAClBX,EAAS,OACA,EAAIW,GAAQA,EAAO,EAC5BX,EAAS,YACA,EAAIW,GAAQA,EAAO,EAC5BX,EAAS,QACAW,IAAS,EAClBX,EAAS,OACAW,IAAS,EAClBX,EAAS,SACA,GAAKW,GAAQA,EAAO,IAAMA,IAAS,IAAM,GAAKA,GAAQA,EAAO,GACtEX,EAAS,oBACA,GAAKW,GAAQA,EAAO,IAAMA,IAAS,IAAM,GAAKA,GAAQA,EAAO,OACtEX,EAAS,oBAGJA,CACT,CAQA,SAASC,GAASuB,EAAMzB,EAAS,CAC/B,OAAIA,EAAQ,UACHvB,GAAS,UAAUgD,CAAI,EAGzBA,CACT,CASA,SAASV,EAAQjB,EAAOoB,EAAKQ,EAAO,CAClC,OAAKA,IACHA,EAAQ,IAGV5B,EAAM,KAAKoB,CAAG,EACP,IAAI,OAAOA,CAAG,EAAE,OAAOQ,EAAQ,WAAY,OAAOA,EAAO,GAAI,EAAI,GAAI,GAAG,CACjF,CAQA,SAASf,EAAUb,EAAO4B,EAAO,CAC/B,OAAOX,EAAQjB,EAAO,OAAQ4B,CAAK,CACrC,CAEA,SAAStB,EAAoBN,EAAOU,EAAO,CACzC,OAAOO,EAAQjB,EAAO,OAAQ,SAAWU,CAAK,CAChD,CAEA,SAASH,EAAoBP,EAAOU,EAAO,CACzC,OAAOO,EAAQjB,EAAO,OAAQ,oBAAsBU,CAAK,CAC3D,CAQA,SAASQ,EAASlB,EAAO4B,EAAO,CAC9B,IAAIC,EAMJ,GAJI7B,EAAM,MAAM,EAAE,EAAE,CAAC,IAAM4B,IACzBC,EAAO7B,EAAM,OAGX6B,EACF,MAAO,KAAOD,EAAQ,GAE1B,CASA,SAASE,GAASH,EAAMzB,EAAS6B,EAAU,CACzC,IAAIC,EAAY,GACZC,EAAc,EAElB,SAASC,GAAS,CAChB,MAAO,EACR,CAED,SAASC,EAAyBC,EAAGC,EAAI,CACvC,OAAAN,EAAS,qBAAsBM,CAAE,EAC1B,EACR,CAED,SAASC,EAAyBF,EAAGC,EAAI,CACvC,OAAAN,EAAS,qBAAsBM,CAAE,EAC1B,EACR,CAED,SAASE,EAAQH,EAAG,CAClB,OAAIlC,EAAQ,QACV6B,EAAS,UAAW,EAAE,EAEtBA,EAAS,OAAQK,CAAC,EAGb,EACR,CAED,SAASI,EAASJ,EAAGC,EAAI,CACvBL,EAAY,GAERK,EAAG,OAAO,SAAW,IACvBA,EAAK,KAGPA,EAAKA,EAAG,UAAU,GAAG,EAAE,MAAM,GAAG,EAEhC,IAAII,EAAahF,GAA2B4E,CAAE,EAC1CK,EAEJ,GAAI,CACF,IAAKD,EAAW,EAAC,EAAI,EAAEC,EAASD,EAAW,EAAG,GAAE,MAAO,CACrD,IAAIjD,GAAIkD,EAAO,MACfX,EAAS,UAAWvC,EAAC,CACtB,CACF,OAAQtB,GAAK,CACZuE,EAAW,EAAEvE,EAAG,CACtB,QAAc,CACRuE,EAAW,EAAC,CACb,CAED,MAAO,EACR,CAED,SAASE,EAASP,EAAG,CACnB,OAAAL,EAAS,OAAQK,CAAC,EACX,EACR,CAED,SAASzB,EAAIyB,EAAG,CACd,OAAAL,EAAS,MAAOK,CAAC,EACV,EACR,CAID,IAAIQ,EAAS,CAAC,CACZ,QAAS,SACT,IAAKV,CACT,EAAK,CACD,QAAS,iBACT,IAAKA,CACT,EAAK,CACD,QAAS,aACT,IAAKA,CACT,EAAK,CACD,QAAS,8BACT,IAAKvB,CACT,EAAK,CACD,QAAS,qBACT,IAAKwB,CACT,EAAK,CACD,QAAS,qBACT,IAAKG,CACT,EAAK,CACD,QAAS,MACT,IAAKC,CACT,EAAK,CACD,QAAS,SACT,IAAKA,CACT,EAAK,CACD,QAAS,MACT,IAAKA,CACT,EAAK,CACD,QAAS,4BACT,IAAKC,CACT,EAAK,CAQD,QAAS,cACT,IAAKN,CACT,EAAK,CAGD,QAAS,0BACT,IAAKA,CACT,EAAK,CAED,QAAS,qBACT,IAAKA,CACT,EAAK,CAQD,QAAS,wBACT,IAAKS,CACT,CAAG,EAED,SAASE,EAAQC,EAASvI,EAAG,CACvBA,EAAI0H,GAAeD,IAIvBA,EAAY,GACZL,EAAOA,EAAK,QAAQmB,EAAQ,QAASA,EAAQ,GAAG,EACjD,CAED,IAAIC,EAAW,CAAA,EACXC,EAAQrB,EACRsB,EAASD,EAAM,OAEnBE,EAAO,KAAOD,EAAS,GAAG,CACxB,QAAS1I,EAAI,EAAGmD,EAAI,EAAGe,GAAMmE,EAAO,OAAQlF,EAAIe,GAAKlE,EAAI,EAAEmD,EAAG,CAC5D,IAAIoF,GAAUF,EAAOrI,CAAC,EAGtB,GAFAsI,EAAQC,GAASvI,CAAC,EAEdoH,EAAK,SAAWsB,EAAQ,CAG1BA,EAAStB,EAAK,OACd,SAASuB,CACV,CACF,CAED,GAAIvB,EAAK,SAAWsB,EAClB,MAGFF,EAAS,KAAK,CAAC,EACfE,EAAStB,EAAK,MACf,CAED,OAAOoB,CACT,CAWA,SAASI,GAAkBC,EAAanD,EAAO7D,EAAM,CACnD,OAAI6D,IAAU,SACZmD,EAAcA,EAAY,OAAO7B,GAAYG,EAAgBtF,CAAI,CAAC,CAAC,EACnEgH,EAAY,KAAK,CACf,MAAOnD,EACP,KAAM7D,EACN,SAAUsF,EAAgBtF,CAAI,CACpC,CAAK,GAGIgH,CACT,CAEA,IAAIC,GAAsB,UAAY,CAUpC,SAASA,EAAOnD,EAAS,CACvBnD,GAAgB,KAAMsG,CAAM,EAE5BnD,EAAUA,GAAW,GAEjBA,EAAQ,SACVA,EAAQ,OAAS,OAAO,OAAO,CAAA,EAAItB,EAAS,OAAQsB,EAAQ,MAAM,GAGpE,KAAK,QAAU,OAAO,OAAO,CAAA,EAAItB,EAAUsB,CAAO,EAClD,KAAK,MAAQ,GACb,KAAK,YAAc,EACpB,CAOD,OAAA5C,GAAa+F,EAAQ,CAAC,CACpB,IAAK,SACL,MAAO,SAAgBC,EAAO,CAC5B,IAAIC,EAAQ,KAEZD,EAAQ,OAAOA,GAAU,SAAW,CAACA,CAAK,EAAIA,EAC9C,IAAItD,EAAQ,KAAK,MACbE,EAAU,KAAK,QACfsD,EAAM,CAAA,EACV,YAAK,YAAY,QAAQ,SAAUC,EAAS,CAC1C,IAAIvK,EAAS6G,EAAeC,EAAOyD,EAAQ,MAAOA,EAAQ,KAAMvD,CAAO,EAEnEhH,GACFsK,EAAI,KAAKtK,CAAM,CAEzB,CAAO,EACD4I,GAASwB,EAAM,KAAK,EAAE,EAAGpD,EAAS,SAAUD,EAAO7D,EAAM,CACvD,IAAIlD,EAAS6G,EAAeC,EAAOC,EAAO7D,EAAM8D,CAAO,EAEnDhH,GACFsK,EAAI,KAAKtK,CAAM,EAGbgH,EAAQ,SACVqD,EAAM,YAAcJ,GAAkBI,EAAM,YAAatD,EAAO7D,CAAI,EAE9E,CAAO,EAEG4D,EAAM,QACRwD,EAAI,KAAKxC,GAAYhB,CAAK,CAAC,EAGtBwD,EAAI,KAAK,EAAE,CACnB,CACF,CAAA,CAAC,EAEKH,CACT,IAEAK,GAAiBL,mBC/mBV,SAASM,IAAgB,CAC/B,MAAMC,EAAQC,KAUP,OATMC,EAAA,QACZ,IACC,IAAIC,GACHH,IAAU,OACP,CAAE,GAAI,UAAW,GAAI,UAAW,UAAW,EAAK,EAChD,CAAE,GAAI,UAAW,GAAI,UAAW,UAAW,EAAK,CACpD,EACD,CAACA,CAAK,CAAA,CAGR,CAGO,SAASI,GAAqB5H,EAAc,CAClD,OAAOA,EAAK,QAAQ,gBAAiB,EAAE,EAAE,QAAQ,gBAAiB,EAAE,CACrE,CCdA,MAAM6H,GAA6BC,EAAE,aACpCA,EAAE,OAAO,CACR,KAAMA,EAAE,QAAQ,6BAA6B,EAC7C,UAAWA,EAAE,OAAO,CAAA,CACpB,EACDA,EAAE,MAAM,CACPA,EAAE,OAAO,CAAE,OAAQA,EAAE,QAAQ,SAAS,EAAG,EACzCA,EAAE,OAAO,CAAE,OAAQA,EAAE,QAAQ,MAAM,EAAG,EACtCA,EAAE,OAAO,CAAE,OAAQA,EAAE,QAAQ,MAAM,EAAG,MAAOA,EAAE,OAAO,CAAA,CAAG,CAAA,CACzD,CACF,EAEMC,GAA+BD,EAAE,OAAO,CAC7C,KAAMA,EAAE,QAAQ,2BAA2B,EAC3C,OAAQA,EAAE,QAAQ,MAAM,EACxB,MAAOA,EAAE,OAAO,EAChB,UAAWA,EAAE,OAAO,CACrB,CAAC,EAEKE,GAAuBF,EAAE,MAAM,CACpCC,GACAF,EACD,CAAC,EAKM,SAASI,GAAoB,CACnC,SAAAC,EACA,SAAAC,CACD,EAGG,CACF,MAAMC,EAAOb,KACPc,EAAYC,SAA0B,IAAI,EAC1C,CAACC,EAASC,CAAU,EAAIC,WAAsC,IAAI,EAClE,CAACC,EAAWC,CAAY,EAAIF,EAAA,SAAwC,CAAE,CAAA,EAE5EG,EAAAA,UAAU,IAAM,CACf,SAASC,EAAcC,EAA4B,OAE9C,GADAA,EAAa,WAAWvJ,EAAA8I,EAAU,UAAV,YAAA9I,EAAmB,gBAC3C,YAAauJ,EAAa,KAAM,OAEpC,MAAM/E,EAASiE,GAAqB,UAAUc,EAAa,KAAM,CAChE,KAAM,CAAC,eAAgB,MAAM,CAAA,CAC7B,EACG,GAAA,CAAC/E,EAAO,QAAS,CACZ,QAAA,MACP,mCACA+E,EAAa,KACb/E,EAAO,KAAA,EAER,MACD,CACM,KAAA,CAAE,KAAA/D,CAAS,EAAA+D,EACb/D,EAAK,OAAS,gCACbA,EAAK,SAAW,WACnB2I,EAAa,CAAE,CAAA,EAEhBH,EAAWxI,CAAI,GAEZA,EAAK,OAAS,6BACjB2I,EAAcI,GAAU,CAAC,GAAGA,EAAO/I,CAAI,CAAC,CAE1C,CACO,cAAA,iBAAiB,UAAW6I,CAAa,EACzC,IAAM,CACL,OAAA,oBAAoB,UAAWA,CAAa,CAAA,CAErD,EAAG,CAAE,CAAA,EAEL,MAAMG,EAAc,CACnB,QAASjN,EAAAA,IAACkN,EAAa,CAAA,aAAW,SAAU,CAAA,EAC5C,KACClN,EAAA,IAACC,EAAA,CACA,KAAK,aACL,aAAW,SACX,UAAU,kBAAA,CACX,EAED,KACCD,EAAA,IAACC,EAAA,CACA,KAAK,SACL,aAAW,SACX,UAAU,wBAAA,CACX,EAED,cACEA,EAAK,CAAA,KAAK,WAAW,aAAW,UAAU,UAAU,gBAAgB,CAAA,GAErEuM,GAAA,YAAAA,EAAS,SAAU,SAAS,EAExBW,EAAkBR,EAAU,KAAK,CAAC3K,EAAGC,IAAMD,EAAE,UAAYC,EAAE,SAAS,EACpEmL,EAAuB,CAC5B,KAAOpN,EAAA,IAAAC,EAAA,CAAK,KAAK,aAAa,aAAW,SAAS,EAClD,KAAOD,EAAA,IAAAC,EAAA,CAAK,KAAK,SAAS,aAAW,SAAS,EAC9C,cACEA,EAAK,CAAA,KAAK,WAAW,aAAW,UAAU,UAAU,gBAAgB,CAAA,EAKtE,OAAAD,MAAAqN,EAAAA,SAAA,CACC,eAACC,GAAA,CAAe,UAAU,SAAS,KAAK,WACvC,SAAAtN,EAAA,IAACuN,GAAA,CACA,KAAMN,EACN,MAAOb,EACP,WAAY,GAEZ,SAAAjM,EAAA,KAAC,MAAI,CAAA,UAAU,YACd,SAAA,CAACA,EAAAA,KAAA,MAAA,CAAI,UAAU,+BACd,SAAA,CAAAH,MAAC,MAAG,UAAU,sBACZ,SAAgBmN,EAAA,IAAI,CAACK,EAAUC,IAE9BzN,MAAA,KAAA,CACA,SAACG,EAAAA,KAAA,MAAA,CAAI,UAAU,6CACd,SAAA,CAAAA,OAAC,OAAM,CAAA,SAAA,CAAQsN,EAAA,EAAE,GAAA,EAAC,EACjBzN,EAAA,IAAA,OAAA,CAAM,SAAqBoN,EAAAI,EAAS,MAAM,EAAE,EAC5CxN,EAAA,IAAA,MAAA,CAAI,UAAU,wEACb,WAAS,MACX,CAAA,CAAA,CACD,CAPQ,EAAAwN,EAAS,UAAYA,EAAS,KAQvC,CACA,EACF,GACChB,GAAA,YAAAA,EAAS,UAAW,OACnBrM,EAAA,KAAA,MAAA,CAAI,UAAU,mDACd,SAAA,CAAAA,OAAC,OAAM,CAAA,SAAA,CAAAgN,EAAgB,OAAS,EAAE,GAAA,EAAC,EACnCnN,EAAAA,IAAC,OAAM,CAAA,SAAAoN,EAAqB,IAAK,CAAA,EACjCpN,EAAA,IAAC,MAAA,CACA,UAAU,wEACV,wBAAyB,CACxB,OAAQqM,EAAK,OAAOR,GAAqBW,EAAQ,KAAK,CAAC,CACxD,CAAA,CACD,CAAA,CAAA,CACD,EACG,KACJxM,EAAA,IAAC,SAAA,CACA,IAAKsM,EACL,MAAOF,EACP,IAAKD,EAAWC,EAChB,UAAU,2CAAA,CACX,CAAA,EACD,EACAjM,EAAAA,KAAC,MAAI,CAAA,UAAU,gBACd,SAAA,CAAAH,EAAA,IAAC,SAAA,CACA,QAAS,IACR,SAAA,OAAA0N,GAAAlK,EAAA8I,EAAU,UAAV,YAAA9I,EAAmB,gBAAnB,YAAAkK,EAAkC,SAAS,UAE5C,UAAU,eAEV,SAAC1N,EAAA,IAAAC,EAAA,CAAK,KAAK,UAAU,aAAW,cAAc,CAAA,CAC/C,EACAD,EAAA,IAAC,IAAA,CACA,KAAMmM,EAAWC,EACjB,OAAO,SACP,IAAI,aACJ,UAAU,eAEV,SAACpM,EAAA,IAAAC,EAAA,CAAK,KAAK,eAAe,aAAW,qBAAqB,CAAA,CAC3D,CAAA,EACD,CAAA,EACD,CAAA,CAAA,CAEF,CAAA,CACD,CAAA,CAEF,CCvIA,MAAM0N,GAAkB5B,EAAE6B,MAAM,CAC/B7B,EAAE8B,OAAO,CACRC,KAAM/B,EAAEgC,QAAQ,MAAM,EACtBC,SAAUjC,EAAEkC,OAAS,EAAAC,SAAA,EAAWC,SAAS,EACzCC,UAAWrC,EAAEsC,QAAQ,EACrBtN,OAAQgL,EAAEuC,MACTvC,EAAE8B,OAAO,CACRC,KAAM/B,EAAE6B,MAAM,CAAC7B,EAAEgC,QAAQ,QAAQ,EAAGhC,EAAEgC,QAAQ,QAAQ,CAAC,CAAC,EACxDQ,QAASxC,EAAEyC,OAAO,EAClBC,UAAW1C,EAAEkC,OAAO,CACrB,CAAC,CACF,CACD,CAAC,EACDlC,EAAE8B,OAAO,CACRC,KAAM/B,EAAE6B,MAAM,CAAC7B,EAAEgC,QAAQ,QAAQ,EAAGhC,EAAEgC,QAAQ,QAAQ,CAAC,CAAC,EACxD9J,KAAM8H,EAAEyC,OAAO,EACfC,UAAW1C,EAAEkC,OAAO,CACrB,CAAC,EACDlC,EAAE8B,OAAO,CACRC,KAAM/B,EAAEgC,QAAQ,MAAM,EACtBK,UAAWrC,EAAEgC,QAAQ,EAAK,EAC1BpF,KAAMoD,EAAEkC,OAAO,EAAEC,SAAS,CAC3B,CAAC,CAAA,CACD,EACKQ,GAAuB3C,EAAEuC,MAAMX,EAAe,EAkJpD,SAASgB,GAAqBC,EAAaC,EAAiC,CAC3E,OAAOA,EAAQD,CAAI,CACpB,CAEgB,SAAAE,GAAW,CAAE1L,KAAAA,CAAK,EAAqB,CAYtD,KAAM,CAAC2L,EAAOC,CAAQ,EAAIC,EAAAA,WAAWN,GAAsB,CAC1DO,QAAS,EACTd,UAAW,GACXJ,SAAU,OACVmB,MAAO,CAAA,CACR,CAAC,EACK9C,EAAOb,KACP,CAAE0D,QAAAA,EAASd,UAAAA,EAAWJ,SAAAA,EAAUmB,MAAAA,CAAU,EAAAJ,EAC1CK,EAAcC,GACnB,SAAS,IAAIC,gBAAgB,CAAElM,KAAAA,CAAM,CAAA,CAAC,MAAM8L,CAAO,EACpD,EACArC,OAAAA,EAAAA,UAAU,IAAM,CACf,GAAI,CAACuC,EAAa,OAEZ,MAAAG,EAASC,KAAKC,MAAML,CAAW,EAC/BpH,EAAS0G,GAAqBgB,UAAUH,CAAM,EAChD,GAAA,CAACvH,EAAO2H,QAAS,CACpBC,QAAQC,MAAM7H,EAAO6H,MAAMC,QAAS,CAAA,EACpC,MACD,CACW,UAAAC,KAAS/H,EAAO/D,KAC1B,OAAQ8L,EAAMjC,KAAM,CACnB,IAAK,OAAQ,CACZ,KAAM,CAAEM,UAAAA,EAAWzF,KAAMqF,CAAa,EAAA+B,EAC7Bf,EAACJ,IAAU,CAAE,GAAGA,EAAMR,UAAAA,EAAWJ,SAAAA,CAAW,EAAA,EACrD,KACD,CACA,IAAK,OAAQ,CACZ,KAAM,CAAEjN,OAAAA,EAAQiN,SAAAA,EAAUI,UAAAA,CAAc,EAAA2B,EAC/Bf,EAACJ,IAAU,CAAE,GAAGA,EAAMO,MAAOpO,EAAQiN,SAAAA,EAAUI,UAAAA,CAAY,EAAA,EACpE,KACD,CACA,IAAK,SACL,IAAK,SAAU,CACd,KAAM,CAAEN,KAAAA,EAAM7J,KAAMsK,EAASE,UAAAA,CAAc,EAAAsB,EAC3Cf,EAAUJ,IAAU,CACnB,GAAGA,EACHO,MAAO,CAAC,GAAGP,EAAKO,MAAO,CAAErB,KAAAA,EAAMS,QAAAA,EAASE,UAAAA,CAAU,CAAC,EAAEuB,KACpD,CAAChO,EAAGC,IAAMD,EAAEyM,UAAYxM,EAAEwM,SAC3B,EACAL,UAAW,EACV,EAAA,EACF,KACD,CACD,CAEF,EAAG,CAACgB,CAAW,CAAC,EAGfjP,EAAAA,KAAC,MAAI,CAAA8P,UAAU,uDACdpQ,SAAA,CAACM,EAAA,KAAA,MAAA,CAAI8P,UAAU,uEACdpQ,SAAA,CAACM,EAAA,KAAA,MAAA,CAAI8P,UAAU,2BACbpQ,SAAA,CAAA,CAACuO,GACDpO,EAAAA,IAACkQ,GAAA,CACA9M,KAAAA,EACA+M,MAAOA,IAAM,CACZnB,EAAUJ,IAAU,CACnB,GAAGA,EACHZ,SAAU,OACVmB,MAAO,CAAC,EACRD,QAASN,EAAKM,QAAU,CACvB,EAAA,CACH,EACD,EAEAd,EAECjO,EAAA,KAAAkN,WAAA,CAAAxN,SAAA,CAACG,EAAA,IAAA,MAAA,CAAIiQ,UAAU,oEACdpQ,SAAAG,EAAA,IAACkN,GAAakD,KAAK,SAAS,aAAW,gBAAgB,CACxD,CAAA,EACApQ,EAAA,IAACqQ,IAASjN,KAAAA,CAAY,CAAA,CAAA,CACvB,CAAA,EACG,IAAA,CACL,CAAA,EAEC,CAACgL,GAAaJ,IAAa,cAC1B,IAAE,CAAAiC,UAAU,sBACXpQ,SAAAmO,IAAa,EACX,eACA,0BAA0BsC,OAAOtC,CAAQ,CAAC,GAC9C,CAAA,EAEA,CAACI,GAAaJ,IAAa,QAC3BhO,EAAA,IAACuQ,GAAA,CACAnN,KAAAA,EACAoN,QAASA,IAAM,CACdxB,EAAUJ,IAAU,CACnB,GAAGA,EACHZ,SAAU,OACVmB,MAAO,CAAA,CACN,EAAA,CACH,CAAA,CACD,CAAA,CAEF,CAAA,EACAhP,EAAA,KAAC,MAAI,CAAA8P,UAAU,iCACdpQ,SAAA,CAACG,EAAA,IAAA,IAAA,CAAEiQ,UAAU,0CAA0CpQ,SAAW,aAAA,CAAA,QACjE,MAAI,CAAAoQ,UAAU,wFACbpQ,SAAMsP,EAAAxN,IAAK8O,GACXzQ,EAAAA,IAAC,OAAA,CAEA,YAAWyQ,EAAK3C,KAChB4C,wBAAyB,CACxBC,OAAQtE,EAAKuE,OAAO/E,GAAqB4E,EAAKlC,OAAO,CAAC,CACvD,CAAA,EAJKkC,EAAKhC,SAKX,CACA,CACF,CAAA,CAAA,CACD,CAAA,CAAA,CACD,CAAA,CAEF,CAEO,SAASyB,GAAW,CAC1B9M,KAAAA,EACA+M,MAAAA,CACD,EAGG,CACF,MAAMU,EAAUC,IACVC,EAAkBC,IAClBC,EAAc1E,SAAO4D,CAAK,EAChCtD,OAAAA,EAAAA,UAAU,IAAM,CACfoE,EAAYC,QAAUf,CACvB,EAAG,CAACA,CAAK,CAAC,EACVtD,EAAAA,UAAU,IAAM,UACXgE,EAAAA,EAAQ5M,OAAR4M,MAAAA,EAAclB,WACjBsB,EAAAA,EAAYC,UAAZD,MAAAA,EAAAA,KAAAA,GAEF,EAAG,CAACJ,EAAQ5M,IAAI,CAAC,EAEhB9D,EAAA,KAAC0Q,EAAQM,KAAR,CAAaC,OAAO,OAAOC,OAAO,QAAQpB,UAAU,SACnDpQ,SAAA,CAAAkR,QACA,QAAM,CAAAjD,KAAK,SAAS1K,KAAK,OAAOqF,MAAOrF,CAAM,CAAA,EAC9CpD,EAAA,IAACK,EAAA,CACAkO,QAASsC,EAAQ9B,QAAU,OAAS,YAAc,mBAElDlP,SAAAG,EAAA,IAAC,SAAA,CACA8N,KAAK,SACL1K,KAAK,SACLqF,MAAM,MACNwH,UAAU,oEAETpQ,SAAAgR,EAAQ9B,QAAU,OACjB/O,EAAAA,IAAAC,EAAA,CAAKmD,KAAK,eAAA,CAAgB,EAE3BpD,EAAA,IAACkN,EAAa,CAAAkD,KAAK,SAAS,EAE9B,CAAA,CACD,CAAA,CACD,CAAA,CAEF,CAEO,SAASG,GAAU,CACzBnN,KAAAA,EACAoN,QAAAA,CACD,EAGG,CACF,MAAMK,EAAUC,IACVC,EAAkBC,IAClBM,EAAgB/E,SAAOiE,CAAO,EACpC3D,OAAAA,EAAAA,UAAU,IAAM,CACfyE,EAAcJ,QAAUV,CACzB,EAAG,CAACA,CAAO,CAAC,EACZ3D,EAAAA,UAAU,IAAM,UACXgE,EAAAA,EAAQ5M,OAAR4M,MAAAA,EAAclB,WACjB2B,EAAAA,EAAcJ,UAAdI,MAAAA,EAAAA,KAAAA,GAEF,EAAG,CAACT,EAAQ5M,IAAI,CAAC,EAEhB9D,EAAA,KAAC0Q,EAAQM,KAAR,CAAaC,OAAO,OAAOC,OAAO,QAAQpB,UAAU,SACnDpQ,SAAA,CAAAkR,QACA,QAAM,CAAAjD,KAAK,SAAS1K,KAAK,OAAOqF,MAAOrF,CAAM,CAAA,EAC9CpD,EAAA,IAACK,EAAA,CACAkO,QAASsC,EAAQ9B,QAAU,OAAS,cAAgB,oBAEpDlP,SAAAG,EAAA,IAAC,SAAA,CACA8N,KAAK,SACL1K,KAAK,SACLqF,MAAM,QACNwH,UAAU,oEAETpQ,SAAQgR,EAAA9B,QAAU,OAClB/O,EAAAA,IAACC,GAAKmD,KAAK,OAAA,CAAQ,EAEnBpD,EAAA,IAACC,GAAKmD,KAAK,QAAQ6M,UAAU,gBAAgBG,KAAK,SAAS,EAE7D,CAAA,CACD,CAAA,CACD,CAAA,CAEF,CAEO,SAASC,GAAS,CACxBjN,KAAAA,EACAmO,OAAAA,CACD,EAGG,CACF,MAAMV,EAAUC,IACVC,EAAkBC,IAClBQ,EAAejF,SAAOgF,CAAM,EAClC1E,OAAAA,EAAAA,UAAU,IAAM,CACf2E,EAAaN,QAAUK,CACxB,EAAG,CAACA,CAAM,CAAC,EACX1E,EAAAA,UAAU,IAAM,UACXgE,EAAAA,EAAQ5M,OAAR4M,MAAAA,EAAclB,WACjB6B,EAAAA,EAAaN,UAAbM,MAAAA,EAAAA,KAAAA,GAEF,EAAG,CAACX,EAAQ5M,IAAI,CAAC,EAEhB9D,EAAA,KAAC0Q,EAAQM,KAAR,CAAaC,OAAO,OAAOC,OAAO,QAAQpB,UAAU,SACnDpQ,SAAA,CAAAkR,QACA,QAAM,CAAAjD,KAAK,SAAS1K,KAAK,OAAOqF,MAAOrF,CAAM,CAAA,EAC9CpD,EAAA,IAACK,EAAA,CACAkO,QAASsC,EAAQ9B,QAAU,OAAS,aAAe,oBAEnDlP,SAAAG,EAAA,IAAC,SAAA,CACA8N,KAAK,SACL1K,KAAK,SACLqF,MAAM,OACNwH,UAAU,oEAETpQ,SAAQgR,EAAA9B,QAAU,OAClB/O,EAAAA,IAACC,GAAKmD,KAAK,MAAA,CAAO,EAElBpD,EAAA,IAACC,GAAKmD,KAAK,OAAO6M,UAAU,gBAAgBG,KAAK,SAAS,EAE5D,CAAA,CACD,CAAA,CACD,CAAA,CAEF,CCxcO,SAASqB,GAAM,CACrB,QAASC,EACT,eAAAhS,EACA,QAAAE,EACA,WAAAD,CACD,EAKG,CAED,OAAAK,EAAA,IAACR,GAAA,CACA,kBAAmBkS,GAAA,YAAAA,EAAmB,QACtC,eAAAhS,EACA,QAAAE,EACA,WAAAD,EAEA,SAAAK,EAAA,IAAC2R,IAAO,kBAAAD,CAAsC,CAAA,CAAA,CAAA,CAGjD,CAEO,SAASC,GAAO,CACtB,kBAAAD,CACD,EAEG,CACF,KAAM,CAACE,EAAkBC,CAAmB,EAAInF,WAAS,CAAC,EAE1D,GAAI,CAACgF,EACJ,aACE,MAAI,CAAA,UAAU,kDACd,SAAC1R,MAAA,IAAA,CAAE,kCAAuB,CAAA,CAC3B,CAAA,EAIE,GAAA0R,EAAkB,KAAK,OAAS,SACnC,OAAQ1R,EAAAA,IAAA8O,GAAA,CAAW,KAAM4C,EAAkB,IAAM,CAAA,EAG9C,GAAAA,EAAkB,KAAK,OAAS,UAAW,CACxC,KAAA,CAAE,SAAAvF,CAAS,EAAIuF,EAAkB,KAEtC,OAAAvR,EAAA,KAAC,MAAA,CACA,UAAU,wDAGT,SAAA,CAAAuR,EAAkB,KAAK,UAAU,IAAKtF,GACtCpM,EAAA,IAAC,MACA,CAAA,SAAAA,EAAA,IAACkM,GAAoB,CAAA,SAAAC,EAAoB,SAAAC,CAAoB,CAAA,CAAA,EADpDA,CAEV,CACA,EACDpM,EAAAA,IAAC,MAAI,CAAA,UAAU,iBACd,SAAAG,EAAA,KAAC,SAAA,CACA,QAAS,IAAM0R,EAAqB9N,GAAMA,EAAI,CAAC,EAC/C,UAAU,mEAEV,SAAA,CAAA/D,EAAA,IAACC,EAAK,CAAA,KAAK,UAAU,cAAW,GAAC,EAAE,kBAAA,CAAA,CAAA,EAErC,CAAA,CAAA,EAdK2R,CAAA,CAiBR,CAEA,aACE,MAAI,CAAA,UAAU,kDACd,SAAC5R,MAAA,IAAA,CAAE,kCAAuB,CAAA,CAC3B,CAAA,CAEF","x_google_ignoreList":[1,2,3,4,5]}