Spaces:
Running
Running
Update site
Browse files- assets/Galaxy-Dq3xh2sZ.js +1 -0
- assets/Report-CiDSei6z.js +322 -0
- assets/Wrapped-CC5dX2V1.js +1 -0
- assets/index-CZo0vfhu.js +0 -0
- assets/index-Dab5zmmn.js +0 -0
- assets/{index-k_Rzta8P.css → index-qVKJDz79.css} +1 -1
- index.html +5 -2
assets/Galaxy-Dq3xh2sZ.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
import{d as O,h as Z,g as ye,T as ce,u as r,s as xe,f as U,n as N,a as K,S as he,b as oe,L as ve,c as be,e as ke,A as X}from"./index-Dab5zmmn.js";const j=[{label:"Quantized",color:"#7d9dff",of:"Quantized from"},{label:"Fine-tuned",color:"#ff9d4a",of:"Fine-tuned from"},{label:"Adapters",color:"#4ccb8a",of:"Adapter on"},{label:"Merges",color:"#c38dff",of:"Merge built on"}],se="#16161a",le="#ffd21e",ee="#ece9e2",ie=1e3,G=Math.PI*2,Me=Math.PI*(3-Math.sqrt(5)),pe=()=>matchMedia("(prefers-reduced-motion: reduce)").matches;function te(n,o){let h=Math.imul(n^2654435769,2246822507)^Math.imul(o+1,3266489909);return h^=h>>>13,h=Math.imul(h,668265263),h^=h>>>16,(h>>>0)/4294967296}const de=(n,o)=>(te(n,o)+te(n,o+11)+te(n,o+23)-1.5)*2,ne=n=>n.split("/").pop()??n;function Ce(n){const{parent:o,rel:h,dl30:p}=n.nodes,d=o.length,i=new Uint8Array(d),C=new Int32Array(d).fill(1),c=new Float64Array(d),u=new Int32Array(d+1);for(let t=1;t<d;t++)i[t]=i[o[t]]+1,u[o[t]+1]++;for(let t=0;t<d;t++)u[t+1]+=u[t];const z=u.slice(0,d),A=new Int32Array(Math.max(0,d-1));for(let t=1;t<d;t++)A[z[o[t]]++]=t;for(let t=0;t<d;t++)c[t]=p[t]||0;for(let t=d-1;t>0;t--)C[o[t]]+=C[t],c[o[t]]+=c[t];const S=new Float32Array(d),y=new Float32Array(d),w=t=>Array.from(A.subarray(u[t],u[t+1])),P=120,x=t=>6.5*Math.sqrt(t+1),E=(t,l,a,s)=>{const f=w(t).sort((b,g)=>c[g]-c[b]),m=[[],[],[],[]];for(const b of f)m[h[b]>=0?h[b]:1].push(b);const v=Math.max(1,f.length),$=m.map(b=>b.length?v<8?1:1+Math.floor(3*b.length/v):0),Y=[0,1,2,3].filter(b=>$[b]).sort((b,g)=>m[g].length-m[b].length),L=[];for(let b=0;b<4;b++)for(const g of Y)b<$[g]&&L.push(g);const F=L.length,T=te(t,99)*G;for(let b=0;b<4;b++){const g=L.flatMap((R,J)=>R===b?[J]:[]);if(!g.length)continue;const H=Math.ceil(m[b].length/g.length);m[b].forEach((R,J)=>{const V=g[J%g.length],Q=Math.sqrt((Math.floor(J/g.length)+.5)/H),re=T+V/F*G+Q*2.5+de(R,1)*.08;let ae=s*(.1+.9*Q)*(1+de(R,2)*.045);const ue=u[R+1]-u[R];ue>=P&&(ae=Math.max(ae,s*.22+x(ue)));const me=de(R,3)*s*(.014+.055*Q);S[R]=l+Math.cos(re)*ae-Math.sin(re)*me,y[R]=a+Math.sin(re)*ae+Math.cos(re)*me})}},k=t=>{const l=w(t),a=x(l.length)/Math.sqrt(l.length+1),s=te(t,5)*G;l.forEach((f,m)=>{const v=a*Math.sqrt(m+1.2),$=s+m*Me;S[f]=S[t]+Math.cos($)*v,y[f]=y[t]+Math.sin($)*v})};E(0,0,0,ie);for(let t=1;t<d;t++){const l=u[t+1]-u[t];l>=P?E(t,S[t],y[t],x(l)):l&&k(t)}const I=new Float32Array(d),q=new Int32Array(d),D=new Float32Array(d);for(let t=0;t<d;t++)I[t]=.55+.42*Math.log10(1+(p[t]||0)),q[t]=t;q.sort((t,l)=>(p[l]||0)-(p[t]||0)),q.forEach((t,l)=>{D[t]=.45*(l/d)});const W=[0,1,2,3].map(t=>Int32Array.from({length:d},(l,a)=>a).filter(l=>l>0&&(h[l]>=0?h[l]:1)===t)),B=Array.from({length:d},(t,l)=>Math.hypot(S[l],y[l])).sort((t,l)=>t-l),_=Math.max(ie*.35,B[Math.floor((d-1)*.995)]??ie),M=16,e=new Map;for(let t=0;t<d;t++){const l=Math.floor(S[t]/M)*100003+Math.floor(y[t]/M),a=e.get(l);a?a.push(t):e.set(l,[t])}return{n:d,x:S,y,size:I,delay:D,sub:C,byRel:W,order:q,extent:_,cell:M,grid:e}}function we(n,o,h,p,d,i,C){var _;const{x:c,y:u,size:z,delay:A}=i;n.globalCompositeOperation="source-over",n.globalAlpha=1,n.fillStyle=se,n.fillRect(0,0,o,h);const S=(0-p.cx)*p.k+o/2,y=(0-p.cy)*p.k+h/2,w=n.createRadialGradient(S,y,0,S,y,Math.max(80,ie*.45*p.k));w.addColorStop(0,"rgba(255,210,30,0.20)"),w.addColorStop(1,"rgba(255,210,30,0)"),n.fillStyle=w,n.fillRect(0,0,o,h);const P=Math.min(3.2,Math.max(1,Math.sqrt(p.k/C.kFit))),x=C.p<1,E=(M,e)=>{let t=c[M],l=u[M];if(x){const a=Math.min(1,Math.max(0,(C.p-A[M])/.55)),s=1-(1-a)**3;if(s<=0)return!1;const f=(1-s)*1.3,m=.12+.88*s,v=Math.cos(f),$=Math.sin(f);[t,l]=[(t*v-l*$)*m,(t*$+l*v)*m]}return e[0]=(t-p.cx)*p.k+o/2,e[1]=(l-p.cy)*p.k+h/2,!0},k=[0,0];n.globalCompositeOperation="lighter";for(let M=0;M<4;M++){if(C.hidden[M])continue;n.fillStyle=j[M].color;const e=new Path2D,t=new Path2D;for(const l of i.byRel[M]){if(!E(l,k))continue;const a=z[l]*P,s=k[0],f=k[1];s<-a||f<-a||s>o+a||f>h+a||(a<1.15?e.rect(s-a,f-a,a*2,a*2):(t.moveTo(s+a,f),t.arc(s,f,a,0,G)))}n.globalAlpha=.5,n.fill(e),n.globalAlpha=.85,n.fill(t)}n.globalAlpha=.9,n.fillStyle="#fff",n.beginPath();for(let M=0,e=0;M<i.n&&e<80;M++){const t=i.order[M];if(t===0||(d.nodes.dl30[t]||0)<2e4)break;const l=d.nodes.rel[t]>=0?d.nodes.rel[t]:1;if(C.hidden[l]||!E(t,k))continue;const a=z[t]*P*.42;n.moveTo(k[0]+a,k[1]),n.arc(k[0],k[1],a,0,G),e++}if(n.fill(),n.globalCompositeOperation="source-over",n.globalAlpha=1,!x)for(const M of[C.sel,C.hover])fe(n,o,h,p,d,i,C.kFit,M,M===C.sel);const I=9+3*Math.sqrt(P);if(E(0,k)&&(n.beginPath(),n.arc(k[0],k[1],I+6,0,G),n.fillStyle="rgba(255,210,30,0.22)",n.fill(),n.beginPath(),n.arc(k[0],k[1],I,0,G),n.fillStyle=le,n.fill(),n.lineWidth=2.5,n.strokeStyle=se,n.stroke()),!C.labels||x)return;const q=Math.min(36,Math.round(8+7*Math.max(0,Math.log2(p.k/C.kFit)))),D=[[k[0]-I-4,k[1]-I-4,I*2+8,I*2+8],[o-64,0,64,150]];n.font="600 12.5px 'Source Sans 3', system-ui, sans-serif",n.textBaseline="middle",n.lineJoin="round";let W=0;const B=new Set;for(let M=0;M<Math.min(i.n,600)&&W<q;M++){const e=i.order[M],t=d.nodes.rel[e]>=0?d.nodes.rel[e]:1;if(e===0||C.hidden[t]||!(d.nodes.dl30[e]>0))continue;E(e,k);const l=z[e]*P,a=ne(d.nodes.id[e]);if(B.has(a))continue;const s=n.measureText(a).width,f=k[0]+l+5,m=k[1]-9;f<4||m<4||f+s>o-4||m+18>h-4||D.some(v=>f<v[0]+v[2]&&f+s>v[0]&&m<v[1]+v[3]&&m+18>v[1])||(D.push([f-2,m,s+4,18]),(_=C.labelHits)==null||_.push([f-2,m,s+4,18,e]),B.add(a),n.lineWidth=3.5,n.strokeStyle=se,n.strokeText(a,f,k[1]),n.fillStyle=ee,n.fillText(a,f,k[1]),W++)}}function fe(n,o,h,p,d,i,C,c,u){if(c<=0)return;const z=Math.min(3.2,Math.max(1,Math.sqrt(p.k/C))),A=w=>(i.x[w]-p.cx)*p.k+o/2,S=w=>(i.y[w]-p.cy)*p.k+h/2;n.beginPath(),n.strokeStyle=le,n.lineWidth=1.6,n.globalAlpha=.85;let y=c;for(n.moveTo(A(y),S(y));y>0;)y=d.nodes.parent[y],n.lineTo(A(y),S(y));n.stroke(),n.globalAlpha=1,n.beginPath(),n.arc(A(c),S(c),i.size[c]*z+5,0,G),n.strokeStyle=u?le:"#fff",n.lineWidth=2,n.stroke()}function ge(n,o,h){return{k:(Math.min(o,h)/2-18)/(n.extent*1.04),cx:0,cy:0}}function Se({g:n,L:o,hidden:h,sel:p,onSel:d,flyTo:i}){const C=X(null),c=X(null),u=X({W:0,H:0,dpr:1,view:{k:1,cx:0,cy:0},kFit:1,p:pe()?1:0,hover:-1,raf:0,labels:[]}),z=X({hidden:h,sel:p});z.current={hidden:h,sel:p};const[A,S]=O(null),y=X(null),w=X(0),P=()=>{var s,f;const e=u.current,t=(s=c.current)==null?void 0:s.getContext("2d");if(!t||!e.W)return;t.setTransform(e.dpr,0,0,e.dpr,0,0),e.labels=[];const l=performance.now();we(t,e.W,e.H,e.view,n,o,{p:e.p,hidden:z.current.hidden,hover:-1,sel:z.current.sel,kFit:e.kFit,labels:!0,labelHits:e.labels});const a=performance.now()-l>22;if(e.p>=1){const m=((f=y.current)==null?void 0:f.img)??document.createElement("canvas");(m.width!==c.current.width||m.height!==c.current.height)&&(m.width=c.current.width,m.height=c.current.height);const v=m.getContext("2d");v.setTransform(1,0,0,1,0,0),v.drawImage(c.current,0,0),y.current={img:m,view:{...e.view},heavy:a}}fe(t,e.W,e.H,e.view,n,o,e.kFit,e.hover,!1)},x=()=>{var m;const e=u.current,t=(m=c.current)==null?void 0:m.getContext("2d"),l=y.current;if(!t||!l)return P();const a=e.view.k/l.view.k;t.setTransform(1,0,0,1,0,0),t.fillStyle=se,t.fillRect(0,0,c.current.width,c.current.height);const s=(e.W/2-e.W/2*a+(l.view.cx-e.view.cx)*e.view.k)*e.dpr,f=(e.H/2-e.H/2*a+(l.view.cy-e.view.cy)*e.view.k)*e.dpr;t.drawImage(l.img,s,f,l.img.width*a,l.img.height*a),t.setTransform(e.dpr,0,0,e.dpr,0,0),a===1&&s===0&&f===0&&fe(t,e.W,e.H,e.view,n,o,e.kFit,e.hover,!1)},E=()=>{const e=u.current;e.raf||(e.raf=requestAnimationFrame(()=>{e.raf=0,P()}))},k=()=>{var t;const e=u.current;if(!((t=y.current)!=null&&t.heavy))return E();e.raf||(e.raf=requestAnimationFrame(()=>{e.raf=0,x()})),clearTimeout(w.current),w.current=window.setTimeout(E,160)},I=()=>{const e=u.current,t=y.current;t&&t.view.k===e.view.k&&t.view.cx===e.view.cx&&t.view.cy===e.view.cy&&e.p>=1?e.raf||(e.raf=requestAnimationFrame(()=>{e.raf=0,x()})):E()},q=(e,t,l=!1)=>{if(pe()){t(1),E();return}const a=performance.now(),s=f=>{var v;const m=Math.min(1,(f-a)/e);t(m),l&&m<1&&((v=y.current)!=null&&v.heavy)?x():P(),m<1&&requestAnimationFrame(s)};requestAnimationFrame(s)};Z(()=>{const e=u.current,t=()=>{const a=C.current.getBoundingClientRect(),s=!e.W;e.W=a.width,e.H=a.height,e.dpr=Math.min(2,devicePixelRatio||1),c.current.width=Math.round(e.W*e.dpr),c.current.height=Math.round(e.H*e.dpr);const f=ge(o,e.W,e.H);s?e.view=f:e.view={...e.view,k:e.view.k*(f.k/e.kFit)},e.kFit=f.k,P()},l=new ResizeObserver(t);return l.observe(C.current),e.p<1&&q(2e3,a=>{e.p=a}),()=>{l.disconnect(),clearTimeout(w.current)}},[o]),Z(E,[h,p]),Z(()=>{if(!i)return;const e=u.current,t={...e.view},l={k:Math.max(t.k,e.kFit*5),cx:o.x[i.i],cy:o.y[i.i]};q(700,a=>{const s=a<.5?4*a**3:1-(-2*a+2)**3/2;e.view={k:t.k*(l.k/t.k)**s,cx:t.cx+(l.cx-t.cx)*s,cy:t.cy+(l.cy-t.cy)*s}},!0)},[i]);const D=(e,t,l)=>{const a=u.current,s=a.view,f=(e-a.W/2)/s.k+s.cx,m=(t-a.H/2)/s.k+s.cy,v=Math.min(a.kFit*80,Math.max(a.kFit*.6,s.k*l));a.view={k:v,cx:f-(e-a.W/2)/v,cy:m-(t-a.H/2)/v},k()},W=(e,t)=>{const l=u.current,a=l.view;for(const g of l.labels)if(e>=g[0]&&e<=g[0]+g[2]&&t>=g[1]&&t<=g[1]+g[3])return g[4];const s=(e-l.W/2)/a.k+a.cx,f=(t-l.H/2)/a.k+a.cy,m=Math.min(3.2,Math.max(1,Math.sqrt(a.k/l.kFit))),v=14/a.k,$=Math.floor((s-v)/o.cell),Y=Math.floor((s+v)/o.cell),L=Math.floor((f-v)/o.cell),F=Math.floor((f+v)/o.cell);let T=-1,b=1/0;for(let g=$;g<=Y;g++)for(let H=L;H<=F;H++)for(const R of o.grid.get(g*100003+H)??[]){const J=n.nodes.rel[R]>=0?n.nodes.rel[R]:1;if(R>0&&z.current.hidden[J])continue;const V=R===0?12:o.size[R]*m,Q=Math.hypot((o.x[R]-s)*a.k,(o.y[R]-f)*a.k);Q<=Math.max(7,V+5)&&Q-1.6*V<b&&(T=R,b=Q-1.6*V)}return T};Z(()=>{const e=c.current,t=u.current,l=new Map;let a=0,s=0;const f=F=>{const T=e.getBoundingClientRect();return{x:F.clientX-T.left,y:F.clientY-T.top}},m=F=>{e.setPointerCapture(F.pointerId),l.set(F.pointerId,f(F)),a=0,s=0},v=F=>{const T=f(F);if(!l.has(F.pointerId)){if(F.pointerType!=="mouse")return;const g=W(T.x,T.y);g!==t.hover&&(t.hover=g,I()),S(g>=0?{i:g,x:T.x,y:T.y}:null),e.style.cursor=g>=0?"pointer":"grab";return}const b=l.get(F.pointerId);if(l.set(F.pointerId,T),l.size===1)a+=Math.abs(T.x-b.x)+Math.abs(T.y-b.y),t.view={...t.view,cx:t.view.cx-(T.x-b.x)/t.view.k,cy:t.view.cy-(T.y-b.y)/t.view.k},t.hover>=0&&(t.hover=-1,S(null)),k();else if(l.size===2){const[g,H]=[...l.values()],R=Math.hypot(g.x-H.x,g.y-H.y);s&&D((g.x+H.x)/2,(g.y+H.y)/2,R/s),s=R,a=99}},$=F=>{const T=l.get(F.pointerId);if(l.delete(F.pointerId),l.size<2&&(s=0),T&&a<6&&l.size===0){const b=W(T.x,T.y);B.current(b>0?b:-1)}},Y=F=>{F.preventDefault();const T=f(F);D(T.x,T.y,Math.exp(-F.deltaY*(F.deltaMode?.05:.0018)))},L=()=>{t.hover>=0&&(t.hover=-1,I()),S(null)};return e.addEventListener("pointerdown",m),e.addEventListener("pointermove",v),e.addEventListener("pointerup",$),e.addEventListener("pointercancel",$),e.addEventListener("pointerleave",L),e.addEventListener("wheel",Y,{passive:!1}),()=>{e.removeEventListener("pointerdown",m),e.removeEventListener("pointermove",v),e.removeEventListener("pointerup",$),e.removeEventListener("pointercancel",$),e.removeEventListener("pointerleave",L),e.removeEventListener("wheel",Y)}},[o]);const B=X(d);B.current=d;const _=e=>{const t=u.current;D(t.W/2,t.H/2,e)},M=()=>{const e=u.current,t={...e.view},l=ge(o,e.W,e.H);q(500,a=>{const s=1-(1-a)**3;e.view={k:t.k+(l.k-t.k)*s,cx:t.cx*(1-s),cy:t.cy*(1-s)}},!0)};return r("div",{class:"g-sky",ref:C,children:[r("canvas",{ref:c,role:"img","aria-label":`A galaxy of ${U(o.n-1)} models built on ${n.root.id}`}),r("div",{class:"g-zoom",children:[r("button",{"aria-label":"Zoom in",onClick:()=>_(1.6),children:"+"}),r("button",{"aria-label":"Zoom out",onClick:()=>_(1/1.6),children:"−"}),r("button",{"aria-label":"Show the whole galaxy",onClick:M,children:"⤢"})]}),A&&A.i!==p&&r("div",{class:"g-tip",style:{left:A.x,top:A.y},children:[r("b",{children:n.nodes.id[A.i]}),r("span",{children:[A.i===0?"the base model":j[n.nodes.rel[A.i]>=0?n.nodes.rel[A.i]:1].label.toLowerCase().replace(/s$/,""),", ",oe(n.nodes.dl30[A.i])," downloads in 30 days"]})]}),r("span",{class:"g-hint",children:"Drag to move, scroll or pinch to zoom"})]})}async function Fe(n,o){await Promise.all(["600 60px 'Fredoka'","500 20px 'IBM Plex Mono'","600 14px 'Source Sans 3'"].map(w=>document.fonts.load(w)));const h=1600,p=900,d=document.createElement("canvas");d.width=h,d.height=p;const i=d.getContext("2d"),C=(p/2-30)/(o.extent*1.02);we(i,h,p,{k:C,cx:-260/C,cy:0},n,o,{p:1,hidden:[!1,!1,!1,!1],hover:-1,sel:-1,kFit:C,labels:!0});const c=i.createLinearGradient(0,0,760,0);c.addColorStop(0,"rgba(22,22,26,0.96)"),c.addColorStop(.75,"rgba(22,22,26,0.75)"),c.addColorStop(1,"rgba(22,22,26,0)"),i.fillStyle=c,i.fillRect(0,0,760,p);const u=(w,P,x,E,k,I=600)=>{if(i.font=E,i.fillStyle=k,i.textBaseline="alphabetic",i.measureText(w).width>I){for(;w.length>3&&i.measureText(w+"…").width>I;)w=w.slice(0,-1);w+="…"}i.fillText(w,P,x)};i.fillStyle=le,i.beginPath(),i.roundRect(64,64,56,56,14),i.fill(),i.beginPath(),i.lineWidth=5,i.strokeStyle="#1b1b1f",i.lineJoin="round",i.lineCap="round",i.moveTo(74,94),i.lineTo(84,94),i.lineTo(90,78),i.lineTo(100,108),i.lineTo(106,94),i.lineTo(112,94),i.stroke(),u("Model Pulse Galaxy",136,104,"600 32px 'Fredoka'",ee);const[z,A]=n.root.id.includes("/")?n.root.id.split("/"):["",n.root.id];u(z?z+"/":"",64,236,"500 24px 'IBM Plex Mono'","#a9a69e"),u(A,62,306,`600 ${A.length>18?52:66}px 'Fredoka'`,le,640),u(U(n.total),64,420,"600 76px 'Fredoka'",ee),u("models built on it",66,460,"500 24px 'IBM Plex Mono'","#a9a69e"),n.root.fam_dl30&&(u(oe(n.root.fam_dl30),64,556,"600 52px 'Fredoka'",ee),u("family downloads in the last 30 days",66,592,"500 22px 'IBM Plex Mono'","#a9a69e"));const S=[0,1,2,3].map(w=>o.byRel[w].length);let y=680;return j.forEach((w,P)=>{S[P]&&(i.fillStyle=w.color,i.beginPath(),i.arc(74,y-8,8,0,G),i.fill(),u(`${w.label} ${U(S[P])}`,94,y,"500 22px 'IBM Plex Mono'",ee),y+=38)}),u("modelpulse.ifsp.dev",64,p-44,"500 20px 'IBM Plex Mono'","#a9a69e"),new Promise(w=>d.toBlob(P=>w(P),"image/png"))}function Te(){const[n,o]=O([]);return Z(()=>{document.title="Model galaxies: every model built on Llama, Qwen, FLUX and more · Model Pulse",ye("/api/galaxies").then(h=>o(h.slice(0,16))).catch(()=>{})},[]),r(he,{children:[r("div",{class:"wrap w-entry g-entry",children:[r("h1",{children:[r(be,{size:72}),"Model Pulse ",r("span",{class:"hl",children:"Galaxy"})]}),r("p",{class:"lede",children:"Pick a base model and see every model built on it, from quantizations and fine-tunes to adapters and merges. The most downloaded shine brightest."}),r("div",{class:"g-search",children:r(ke,{big:!0,placeholder:"A base model, e.g. meta-llama/Llama-3.1-8B",onPick:h=>N({view:"galaxy",model:h})})})]}),n.length>0&&r("section",{class:"wrap g-fams",children:[r("h2",{children:"The biggest galaxies right now"}),r("div",{class:"g-grid",children:n.map((h,p)=>r("a",{class:"g-fam",href:K({view:"galaxy",model:h.id}),onClick:d=>{d.preventDefault(),N({view:"galaxy",model:h.id})},children:[r("i",{class:"g-dot",style:{transform:`rotate(${p*47}deg)`},"aria-hidden":"true"}),r("span",{class:"o",children:[h.id.split("/")[0],"/"]}),r("span",{class:"nm",children:ne(h.id)}),r("span",{class:"c",children:[U(h.fam_members)," models, ",oe(h.fam_dl30)," downloads in 30 days"]})]},h.id))})]})]})}function Pe({model:n}){const[o,h]=O(null),[p,d]=O(null),[i,C]=O([!1,!1,!1,!1]),[c,u]=O(-1),[z,A]=O(null),[S,y]=O(""),[w,P]=O(!1);Z(()=>{n&&(document.title=`${n} galaxy: every model built on it · Model Pulse`,h(null),d(null),u(-1),y(""),ye(`/api/galaxy/${n}`).then(e=>{h(e),document.title=`${e.root.id} galaxy: ${e.total.toLocaleString("en")} models built on it · Model Pulse`}).catch(e=>d(e.message)))},[n]);const x=ce(()=>o?Ce(o):null,[o]),E=ce(()=>o?o.nodes.id.map(e=>e.toLowerCase()):[],[o]),k=ce(()=>{const e=S.trim().toLowerCase();if(!x||e.length<2)return[];const t=[];for(let l=0;l<x.n&&t.length<8;l++)x.order[l]>0&&E[x.order[l]].includes(e)&&t.push(x.order[l]);return t},[S,x,E]);if(!n)return r(Te,{});if(p)return r("div",{class:"wrap err",children:[r("h1",{children:"No galaxy to show"}),r("p",{children:p})]});const I=o==null?void 0:o.root,[q,D]=n.includes("/")?[n.split("/")[0],ne(n)]:["",n],W=e=>{u(e),y(""),e>0&&A({i:e,n:Date.now()})},B=xe({view:"galaxy",model:(I==null?void 0:I.id)??n}),_=I?`${U(o.total)} models are built on ${I.id}. Here is its whole galaxy:`:"",M=o!=null&&o.lineage.length?o.lineage[o.lineage.length-1]:null;return r("div",{class:"galaxy",children:[r("div",{class:"wrap g-head",children:[r("div",{class:"crumbs",children:[r("a",{class:"chip",href:K({view:"galaxy"}),onClick:e=>{e.preventDefault(),N({view:"galaxy"})},children:"All galaxies"}),M&&r("a",{class:"chip chip-hot",href:K({view:"galaxy",model:M}),onClick:e=>{e.preventDefault(),N({view:"galaxy",model:M})},children:["Part of the ",ne(M)," galaxy"]})]}),r("h1",{class:"model-name",children:[q&&r("span",{class:"org",children:[q,"/"]}),r("span",{class:"hl",children:D})]}),r("p",{class:"g-lede",children:o?o.total?r(he,{children:[U(o.total)," models are built on ",D,", directly or through other derivatives. Together with the original they were downloaded ",r("b",{children:oe(I.fam_dl30)})," times in the last 30 days."]}):r(he,{children:["No models on the Hub are built on ",D," yet."]}):"Mapping every model built on it…"})]}),r("div",{class:"wrap",children:[r("div",{class:"g-panel",children:[o&&x&&o.total>0?r(Se,{g:o,L:x,hidden:i,sel:c,onSel:u,flyTo:z}):r("div",{class:"g-sky g-empty",children:o?r("span",{children:"Nothing orbits this model yet."}):r("span",{class:"g-loading",children:"Mapping the galaxy…"})}),o&&c>=0&&x&&r("div",{class:"g-card",children:[r("button",{class:"x","aria-label":"Close",onClick:()=>u(-1),children:"×"}),r("a",{class:"id",href:K({model:o.nodes.id[c]}),onClick:e=>{e.preventDefault(),N({model:o.nodes.id[c]})},children:o.nodes.id[c]}),r("span",{class:"g-rel",children:[r("i",{style:{background:j[o.nodes.rel[c]>=0?o.nodes.rel[c]:1].color}}),j[o.nodes.rel[c]>=0?o.nodes.rel[c]:1].of," ",ne(o.nodes.id[o.nodes.parent[c]])]}),r("span",{class:"n",children:[r("b",{children:U(o.nodes.dl30[c])})," downloads in the last 30 days"]}),x.sub[c]>1&&r("span",{class:"n",children:[r("b",{children:U(x.sub[c]-1)})," models built on it"]}),r("div",{class:"acts",children:[r("a",{class:"btn primary",href:K({model:o.nodes.id[c]}),onClick:e=>{e.preventDefault(),N({model:o.nodes.id[c]})},children:"Download history"}),x.sub[c]>1&&r("a",{class:"btn",href:K({view:"galaxy",model:o.nodes.id[c]}),onClick:e=>{e.preventDefault(),N({view:"galaxy",model:o.nodes.id[c]})},children:"Its own galaxy"})]})]})]}),o&&x&&o.total>0&&r("div",{class:"g-tools",children:[r("div",{class:"g-legend",role:"group","aria-label":"Show or hide kinds of derivatives",children:j.map((e,t)=>x.byRel[t].length>0&&r("button",{"aria-pressed":!i[t],onClick:()=>C(i.map((l,a)=>a===t?!l:l)),children:[r("i",{style:{background:e.color}}),e.label,r("b",{children:U(x.byRel[t].length)})]},e.label))}),r("div",{class:"g-find",children:[r("input",{value:S,onInput:e=>y(e.target.value),placeholder:"Find a model in this galaxy","aria-label":"Find a model in this galaxy",spellcheck:!1,onKeyDown:e=>{e.key==="Enter"&&k.length&&W(k[0]),e.key==="Escape"&&y("")}}),k.length>0&&r("ul",{class:"g-found",children:k.map(e=>r("li",{children:r("button",{onClick:()=>W(e),children:[r("span",{children:o.nodes.id[e]}),r("small",{children:[oe(o.nodes.dl30[e]),"/mo"]})]})},e))})]})]}),o&&x&&o.total>0&&r("div",{class:"g-foot",children:[r("p",{class:"g-read",children:["Each star is a model built on ",D,", and the yellow sun is ",D," itself. Colours show how a model was made, and each kind forms its own spiral arms. Bigger, brighter stars were downloaded more in the last 30 days, and the most used sit closest to the core. The small clusters around a star are the models built on that one. Tap a star to see its numbers.",x.n-1<o.total?` Showing the ${U(x.n-1)} most downloaded.`:""]}),r("div",{class:"w-actions g-actions",children:[r("button",{class:"btn primary",disabled:w,onClick:async()=>{P(!0);try{const e=await Fe(o,x),t=document.createElement("a");t.href=URL.createObjectURL(e),t.download=`${o.root.id.replace("/","_")}-galaxy.png`,t.click(),setTimeout(()=>URL.revokeObjectURL(t.href),2e3)}finally{P(!1)}},children:w?"Drawing…":"Download image"}),r("a",{class:"btn",target:"_blank",rel:"noopener",href:`https://x.com/intent/post?text=${encodeURIComponent(_)}&url=${encodeURIComponent(B)}`,children:"Post on X"}),r("a",{class:"btn",target:"_blank",rel:"noopener",href:`https://www.linkedin.com/sharing/share-offsite/?url=${encodeURIComponent(B)}`,children:"LinkedIn"}),r("button",{class:"btn",onClick:()=>{var e;return(e=navigator.clipboard)==null?void 0:e.writeText(B)},children:"Copy link"}),r("a",{class:"btn",href:K({model:o.root.id}),onClick:e=>{e.preventDefault(),N({model:o.root.id})},children:[D," download history"]}),r(ve,{})]})]})]})]})}export{Pe as Galaxy};
|
assets/Report-CiDSei6z.js
ADDED
|
@@ -0,0 +1,322 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
var Ae=Object.defineProperty;var ze=(n,e,t)=>e in n?Ae(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var k=(n,e,t)=>ze(n,typeof e!="symbol"?e+"":e,t);import{T as _e,h as Pe,u as Be,n as Le}from"./index-Dab5zmmn.js";function J(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var z=J();function me(n){z=n}var v={exec:()=>null};function _(n){let e=[];return t=>{let s=Math.max(0,Math.min(3,t-1)),r=e[s];return r||(r=n(s),e[s]=r),r}}function g(n,e=""){let t=typeof n=="string"?n:n.source,s={replace:(r,l)=>{let o=typeof l=="string"?l:l.source;return o=o.replace(x.caret,"$1"),t=t.replace(r,o),s},getRegex:()=>new RegExp(t,e)};return s}var Ie=((n="")=>{try{return!!new RegExp("(?<=1)(?<!1)"+n)}catch{return!1}})(),x={codeRemoveIndent:/^(?: {0,3}\t| {1,4})/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,endingSpaceTabChar:/[ \t]$/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,leadingSpaceTab:/^[ \t]+/,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,numericCharacterReference:/&#(?:(\d{1,7})|[Xx]([A-Fa-f0-9]{1,6}));/g,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:n=>new RegExp(`^( {0,3}${n})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:_(n=>new RegExp(`^ {0,${n}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`)),hrRegex:_(n=>new RegExp(`^ {0,${n}}((?:-[ ]*){3,}|(?:_[ ]*){3,}|(?:\\*[ ]*){3,})(?:\\n+|$)`)),fencesBeginRegex:_(n=>new RegExp(`^ {0,${n}}(?:\`\`\`|~~~)`)),headingBeginRegex:_(n=>new RegExp(`^ {0,${n}}#`)),htmlBeginRegex:_(n=>new RegExp(`^ {0,${n}}(?:</?(?:${q})(?: +|$|/?>)|<(?:script|pre|style|textarea|!--))`,"i")),blockquoteBeginRegex:_(n=>new RegExp(`^ {0,${n}}>`))},Ce=/^(?:[ \t]*(?:\n|$))+/,Ee=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,Qe=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,Q=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,qe=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,V=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,ke=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |fences|blockquote|heading|hr|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,be=g(ke).replace(/bull/g,V).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/hr/g,/ {0,3}(?:(?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),He=g(ke).replace(/bull/g,V).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/hr/g,/ {0,3}(?:(?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),K=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table|[ \t]+\n)[^\n]+)*)/,De=/^[^\n]+/,Y=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,Ze=g(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",Y).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),Oe=g(/^(bull)([ \t][^\n]*?)?(?:\n|$)/).replace(/bull/g,V).getRegex(),q="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",ee=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,Fe=g("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n*|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>[^\\n]*\\n*|$)|<![A-Z][\\s\\S]*?(?:>[^\\n]*\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>[^\\n]*\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][a-z0-9-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][a-z0-9-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",ee).replace("tag",q).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),we=n=>g(K).replace("hr",Q).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list",n).replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",q).getRegex(),Ge=we(/ {0,3}(?:[*+-]|1[.)])[ \t]+[^ \t\n]/),Ue=we(/ {0,3}(?:[*+-]|\d{1,9}[.)])(?:[ \t]|\n|$)/),Ne=g(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",Ue).getRegex(),te={blockquote:Ne,code:Ee,def:Ze,fences:Qe,heading:qe,hr:Q,html:Fe,lheading:be,list:Oe,newline:Ce,paragraph:Ge,table:v,text:De},ae=g("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",Q).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",q).getRegex(),je={...te,lheading:He,table:ae,paragraph:g(K).replace("hr",Q).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",ae).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",q).getRegex()},We={...te,html:g(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",ee).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:v,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:g(K).replace("hr",Q).replace("heading",` *#{1,6} *[^
|
| 2 |
+
]`).replace("lheading",be).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},Xe=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,Je=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,xe=/^( {2,}|\\)\n(?!\s*$)[ \t]*/,Ve=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,T=/[\p{P}\p{S}]/u,P=/[\s\p{P}\p{S}]/u,H=/[^\s\p{P}\p{S}]/u,Ke=g(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,P).getRegex(),Ye=/[\p{Pi}\p{Ps}"']/u,ye=/(?!~)[\p{P}\p{S}]/u,et=/(?!~)[\s\p{P}\p{S}]/u,tt=/(?:[^\s\p{P}\p{S}]|~)/u,nt=g(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",Ie?"(?<!`)()":"(^^|[^`])").replace("code",/(?<b>`+)[^`]+\k<b>(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),Se=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,rt=g(Se,"u").replace(/punct/g,T).getRegex(),st=g(Se,"u").replace(/punct/g,ye).getRegex(),at=/^(?:\*+(?:((?!\*)(?!openQuote)punct)|([^\s*]))?)|^_+(?:((?!_)(?!openQuote)punct)|([^\s_]))?/,lt=g(at,"u").replace(/openQuote/g,Ye).replace(/punct/g,T).getRegex(),Me="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",ot=g(Me,"gu").replace(/notPunctSpace/g,H).replace(/punctSpace/g,P).replace(/punct/g,T).getRegex(),it=g(Me,"gu").replace(/notPunctSpace/g,tt).replace(/punctSpace/g,et).replace(/punct/g,ye).getRegex(),ht="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)[\\s](\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|(?:(?!\\*)punct|notPunctSpace)(\\*+)(?!\\*)(?=notPunctSpace)",ct=g(ht,"gu").replace(/notPunctSpace/g,H).replace(/punctSpace/g,P).replace(/punct/g,T).getRegex(),ut=g("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,H).replace(/punctSpace/g,P).replace(/punct/g,T).getRegex(),pt="^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)[\\s](_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)|(?:(?!_)punct|notPunctSpace)(_+)(?!_)(?=notPunctSpace)",dt=g(pt,"gu").replace(/notPunctSpace/g,H).replace(/punctSpace/g,P).replace(/punct/g,T).getRegex(),gt=g(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,T).getRegex(),ft="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",mt=g(ft,"gu").replace(/notPunctSpace/g,H).replace(/punctSpace/g,P).replace(/punct/g,T).getRegex(),kt=g(/\\(punct)/,"gu").replace(/punct/g,T).getRegex(),bt=g(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),wt=g(ee).replace("(?:-->|$)","-->").getRegex(),xt=g("^comment|^</[a-zA-Z][a-zA-Z0-9-]*\\s*>|^<[a-zA-Z][a-zA-Z0-9-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",wt).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),Te=/\[(?:\\[\s\S]|[^\[\]\\])*\]/,O=g(/(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/).replace("brackets",Te).getRegex(),yt=g(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",O).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]+|(?=\))/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),St=g(/^!?\[(label)\]\[(ref)\]/).replace("label",O).replace("ref",Y).getRegex(),Mt=g(/^!?\[(ref)\](?:\[\])?/).replace("ref",Y).getRegex(),le=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\]){1,999}/,Tt=g(/(?:[^\[\]\\`]*(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\]))){0,999}?[^\[\]\\`]*?/).replace("brackets",Te).getRegex(),$t=g("reflink|nolink(?!\\()","g").replace("reflink",g(/^!?\[(label)\]\[(ref)\]/).replace("label",Tt).replace("ref",le).getRegex()).replace("nolink",g(/^!?\[(ref)\](?:\[\])?/).replace("ref",le).getRegex()).getRegex(),oe=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Rt=/[A-Za-z0-9._+-]+@[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\w-])/,vt=g(/(?:mailto:email|xmpp:email(?:\/[A-Za-z0-9@.]+)?)/).replace(/email/g,Rt).getRegex(),ne={_backpedal:v,anyPunctuation:kt,autolink:bt,blockSkip:nt,br:xe,code:Je,del:v,delLDelim:v,delRDelim:v,emStrongLDelim:rt,emStrongRDelimAst:ot,emStrongRDelimUnd:ut,escape:Xe,link:yt,nolink:Mt,punctuation:Ke,reflink:St,reflinkSearch:$t,tag:xt,text:Ve,url:v},At={...ne,emStrongLDelim:lt,emStrongRDelimAst:ct,emStrongRDelimUnd:dt,link:g(/^!?\[(label)\]\((.*?)\)/).replace("label",O).getRegex(),reflink:g(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",O).getRegex()},j={...ne,emStrongRDelimAst:it,emStrongLDelim:st,delLDelim:gt,delRDelim:mt,url:g(/^emailProtocol|^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("emailProtocol",vt).replace("protocol",oe).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\w-])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:g(/^(?:[^a-zA-Z0-9](?=emailProtocol)|(`+|~+|[^`~])(?:(?=[`~])|(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9](?=emailProtocol)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@))))/).replace("protocol",oe).replace(/emailProtocol/g,/(?:mailto|xmpp):/).getRegex()},zt={...j,br:g(xe).replace("{2,}","*").getRegex(),text:g(j.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},D={normal:te,gfm:je,pedantic:We},C={normal:ne,gfm:j,breaks:zt,pedantic:At},_t={"&":"&","<":"<",">":">",'"':""","'":"'"},ie=n=>_t[n];function y(n,e){if(e){if(x.escapeTest.test(n))return n.replace(x.escapeReplace,ie)}else if(x.escapeTestNoEncode.test(n))return n.replace(x.escapeReplaceNoEncode,ie);return n}function Pt(n){return n.replace(x.numericCharacterReference,(e,t,s)=>{let r=t===void 0?Number.parseInt(s,16):Number.parseInt(t,10);return r===0||r>1114111||r>=55296&&r<=57343?"�":String.fromCodePoint(r)})}function he(n){try{n=encodeURI(n).replace(x.percentDecode,"%")}catch{return null}return n}function ce(n,e){var l;let t=n.replace(x.findPipe,(o,i,a)=>{let u=!1,h=i;for(;--h>=0&&a[h]==="\\";)u=!u;return u?"|":" |"}),s=t.split(x.splitPipe),r=0;if(s[0].trim()||s.shift(),s.length>0&&!((l=s.at(-1))!=null&&l.trim())&&s.pop(),e)if(s.length>e)s.splice(e);else for(;s.length<e;)s.push("");for(;r<s.length;r++)s[r]=s[r].trim().replace(x.slashPipe,"|");return s}function R(n,e,t){let s=n.length;if(s===0)return"";let r=0;for(;r<s&&n.charAt(s-r-1)===e;)r++;return n.slice(0,s-r)}function ue(n){let e=n.split(`
|
| 3 |
+
`),t=e.length-1;for(;t>=0&&x.blankLine.test(e[t]);)t--;return e.length-t<=2?n:e.slice(0,t+1).join(`
|
| 4 |
+
`)}function F(n){return n.trim().toLowerCase().toUpperCase().toLowerCase()}function Bt(n,e){if(n.indexOf(e[1])===-1)return-1;let t=0;for(let s=0;s<n.length;s++)if(n[s]==="\\")s++;else if(n[s]===e[0])t++;else if(n[s]===e[1]&&(t--,t<0))return s;return t>0?-2:-1}function pe(n,e=0){let t=e,s="";for(let r of n)if(r===" "){let l=4-t%4;s+=" ".repeat(l),t+=l}else s+=r,t++;return s}function de(n,e,t,s,r){let l=e.href,o=e.title||null,i=n[1].replace(r.other.outputLinkReplace,"$1"),a=n[0].charAt(0)==="!";s.state.inLink=!0;let u=s.state.linkEmitted,h=s.state.inRawBlock;s.state.linkEmitted=!1;let d=s.inlineTokens(i),c=s.state.linkEmitted;if(s.state.linkEmitted=u,s.state.inLink=!1,!a){if(c){s.state.inRawBlock=h;return}s.state.linkEmitted=!0}return{type:a?"image":"link",raw:t,href:l,title:o,text:i,tokens:d}}function Lt(n,e,t){let s=n.match(t.other.indentCodeCompensation);if(s===null)return e;let r=s[1];return e.split(`
|
| 5 |
+
`).map(l=>{let o=l.match(t.other.beginningSpace);if(o===null)return l;let[i]=o;return l.slice(Math.min(i.length,r.length))}).join(`
|
| 6 |
+
`)}function ge(n,e,t,s){if(!e.includes("<"))return!1;for(let r=0;r<e.length;r++){if(e[r]==="\\"){r++;continue}if(e[r]==="`"){let i=s.inline.code.exec(e.slice(r));if(i){r+=i[0].length-1;continue}}if(e[r]!=="<")continue;let l=n.slice(t+r),o=s.inline.tag.exec(l)||s.inline.autolink.exec(l);if(o){if(o[0].length>e.length-r)return!0;r+=o[0].length-1}}return!1}var G=class{constructor(n){k(this,"options");k(this,"rules");k(this,"lexer");this.options=n||z}space(n){let e=this.rules.block.newline.exec(n);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(n){let e=this.rules.block.code.exec(n);if(e){let t=this.options.pedantic?e[0]:ue(e[0]),s=t.replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:t,codeBlockStyle:"indented",text:s}}}fences(n){let e=this.rules.block.fences.exec(n);if(e){let t=e[0],s=Lt(t,e[3]||"",this.rules);return{type:"code",raw:t,lang:e[2]?e[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):e[2],text:s}}}heading(n){let e=this.rules.block.heading.exec(n);if(e){let t=e[2].trim();if(this.rules.other.endingHash.test(t)){let s=R(t,"#");(this.options.pedantic||!s||this.rules.other.endingSpaceTabChar.test(s))&&(t=s.trim())}return{type:"heading",raw:R(e[0],`
|
| 7 |
+
`),depth:e[1].length,text:t,tokens:this.lexer.inline(t)}}}hr(n){let e=this.rules.block.hr.exec(n);if(e)return{type:"hr",raw:R(e[0],`
|
| 8 |
+
`)}}blockquote(n){let e=this.rules.block.blockquote.exec(n);if(e){let t=R(e[0],`
|
| 9 |
+
`).split(`
|
| 10 |
+
`),s="",r="",l=[];for(;t.length>0;){let o=!1,i=[],a;for(a=0;a<t.length;a++)if(this.rules.other.blockquoteStart.test(t[a]))i.push(t[a]),o=!0;else if(!o)i.push(t[a]);else break;t=t.slice(a);let u=i.join(`
|
| 11 |
+
`),h=u.replace(this.rules.other.blockquoteSetextReplace,`
|
| 12 |
+
$1`).replace(this.rules.other.blockquoteSetextReplace2,"");s=s?`${s}
|
| 13 |
+
${u}`:u,r=r?`${r}
|
| 14 |
+
${h}`:h;let d=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(h,l,!0),this.lexer.state.top=d,t.length===0)break;let c=l.at(-1);if((c==null?void 0:c.type)==="code")break;if((c==null?void 0:c.type)==="blockquote"){let f=c,p=t.join(`
|
| 15 |
+
`),w=f.raw+`
|
| 16 |
+
`+p.replace(this.rules.other.blockquoteSetextReplace2,""),m=this.blockquote(w);l[l.length-1]=m;let $=w.substring(m.raw.length).replace(/^\n/,""),B=$?$.split(`
|
| 17 |
+
`).length:0,L=B?t.slice(0,-B):t;L.length>0&&(s=`${s}
|
| 18 |
+
${L.join(`
|
| 19 |
+
`)}`),r=r.substring(0,r.length-f.text.length)+m.text;break}else if((c==null?void 0:c.type)==="list"){let f=c,p=f.raw+`
|
| 20 |
+
`+t.join(`
|
| 21 |
+
`),w=this.list(p);l[l.length-1]=w,s=s.substring(0,s.length-c.raw.length)+w.raw,r=r.substring(0,r.length-f.raw.length)+w.raw,t=p.substring(l.at(-1).raw.length).split(`
|
| 22 |
+
`);continue}}return{type:"blockquote",raw:s,tokens:l,text:r}}}list(n){let e=this.rules.block.list.exec(n);if(e){let t=e[1].trim(),s=t.length>1,r={type:"list",raw:"",ordered:s,start:s?+t.slice(0,-1):"",loose:!1,items:[]};t=s?`\\d{1,9}\\${t.slice(-1)}`:`\\${t}`,this.options.pedantic&&(t=s?t:"[*+-]");let l=this.rules.other.listItemRegex(t),o=!1;for(;n;){let a=!1,u="",h="";if(!(e=l.exec(n))||this.rules.block.hr.test(n))break;u=e[0],n=n.substring(u.length);let d=e[2].split(`
|
| 23 |
+
`,1)[0],c=e[1].length,f=this.options.pedantic?pe(d,c):d.replace(this.rules.other.leadingSpaceTab,$=>pe($,c)),p=n.split(`
|
| 24 |
+
`,1)[0],w=!f.trim(),m=0;if(this.options.pedantic?(m=2,h=f.trimStart()):w?m=c+1:(m=f.search(this.rules.other.nonSpaceChar),m=m>4?1:m,h=f.slice(m),m+=c),w&&this.rules.other.blankLine.test(p)&&(u+=p+`
|
| 25 |
+
`,n=n.substring(p.length+1),a=!0),!a){let $=this.rules.other.nextBulletRegex(m),B=this.rules.other.hrRegex(m),L=this.rules.other.fencesBeginRegex(m),se=this.rules.other.headingBeginRegex(m),$e=this.rules.other.htmlBeginRegex(m),Re=this.rules.other.blockquoteBeginRegex(m);for(;n;){let N=n.split(`
|
| 26 |
+
`,1)[0],I;if(p=N,this.options.pedantic?(p=p.replace(this.rules.other.listReplaceNesting," "),I=p):I=p.replace(this.rules.other.leadingSpaceTab,ve=>ve.replace(this.rules.other.tabCharGlobal," ")),L.test(p)||se.test(p)||$e.test(p)||Re.test(p)||$.test(p)||B.test(p))break;if(I.search(this.rules.other.nonSpaceChar)>=m||!p.trim())h+=`
|
| 27 |
+
`+I.slice(m);else{if(w||f.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||L.test(f)||se.test(f)||B.test(f))break;h+=`
|
| 28 |
+
`+p}w=!p.trim(),u+=N+`
|
| 29 |
+
`,n=n.substring(N.length+1),f=I.slice(m)}}r.loose||(o?r.loose=!0:this.rules.other.doubleBlankLine.test(u)&&(o=!0)),r.items.push({type:"list_item",raw:u,task:!!this.options.gfm&&this.rules.other.listIsTask.test(h),loose:!1,text:h,tokens:[]}),r.raw+=u}let i=r.items.at(-1);if(i)i.raw=i.raw.trimEnd(),i.text=i.text.trimEnd();else return;r.raw=r.raw.trimEnd();for(let a of r.items)if(this.lexer.state.top=!1,a.tokens=this.lexer.blockTokens(a.text,[]),!r.loose){let u=a.tokens.filter(d=>d.type==="space"),h=u.length>0&&u.some(d=>this.rules.other.anyLine.test(d.raw));r.loose=h}for(let a of r.items){let u=a.tokens[0];if(a.task&&((u==null?void 0:u.type)==="text"||(u==null?void 0:u.type)==="paragraph")){a.text=a.text.replace(this.rules.other.listReplaceTask,""),u.raw=u.raw.replace(this.rules.other.listReplaceTask,""),u.text=u.text.replace(this.rules.other.listReplaceTask,"");for(let d=this.lexer.inlineQueue.length-1;d>=0;d--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[d].src)){this.lexer.inlineQueue[d].src=this.lexer.inlineQueue[d].src.replace(this.rules.other.listReplaceTask,"");break}let h=this.rules.other.listTaskCheckbox.exec(a.raw);if(h){let d={type:"checkbox",raw:h[0]+" ",checked:h[0]!=="[ ]"};a.checked=d.checked,r.loose?a.tokens[0]&&["paragraph","text"].includes(a.tokens[0].type)&&"tokens"in a.tokens[0]&&a.tokens[0].tokens?(a.tokens[0].raw=d.raw+a.tokens[0].raw,a.tokens[0].text=d.raw+a.tokens[0].text,a.tokens[0].tokens.unshift(d)):a.tokens.unshift({type:"paragraph",raw:d.raw,text:d.raw,tokens:[d]}):a.tokens.unshift(d)}}else a.task&&(a.task=!1)}if(r.loose)for(let a of r.items){a.loose=!0;for(let u of a.tokens)u.type==="text"&&(u.type="paragraph")}return r}}html(n){let e=this.rules.block.html.exec(n);if(e){let t=ue(e[0]);return{type:"html",block:!0,raw:t,pre:e[1]==="pre"||e[1]==="script"||e[1]==="style",text:t}}}def(n){let e=this.rules.block.def.exec(n);if(e){let t=F(e[1]).replace(this.rules.other.multipleSpaceGlobal," "),s=e[2]?e[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",r=e[3]?e[3].substring(1,e[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):e[3];return{type:"def",tag:t,raw:R(e[0],`
|
| 30 |
+
`),href:s,title:r}}}table(n){var o;let e=this.rules.block.table.exec(n);if(!e||!this.rules.other.tableDelimiter.test(e[2]))return;let t=ce(e[1]),s=e[2].replace(this.rules.other.tableAlignChars,"").split("|"),r=(o=e[3])!=null&&o.trim()?e[3].replace(this.rules.other.tableRowBlankLine,"").split(`
|
| 31 |
+
`):[],l={type:"table",raw:R(e[0],`
|
| 32 |
+
`),header:[],align:[],rows:[]};if(t.length===s.length){for(let i of s)this.rules.other.tableAlignRight.test(i)?l.align.push("right"):this.rules.other.tableAlignCenter.test(i)?l.align.push("center"):this.rules.other.tableAlignLeft.test(i)?l.align.push("left"):l.align.push(null);for(let i=0;i<t.length;i++)l.header.push({text:t[i],tokens:this.lexer.inline(t[i]),header:!0,align:l.align[i]});for(let i of r)l.rows.push(ce(i,l.header.length).map((a,u)=>({text:a,tokens:this.lexer.inline(a),header:!1,align:l.align[u]})));return l}}lheading(n){let e=this.rules.block.lheading.exec(n);if(e){let t=e[1].trim();return{type:"heading",raw:R(e[0],`
|
| 33 |
+
`),depth:e[2].charAt(0)==="="?1:2,text:t,tokens:this.lexer.inline(t)}}}paragraph(n){let e=this.rules.block.paragraph.exec(n);if(e){let t=e[1].charAt(e[1].length-1)===`
|
| 34 |
+
`?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:t,tokens:this.lexer.inline(t)}}}text(n){let e=this.rules.block.text.exec(n);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(n){let e=this.rules.inline.escape.exec(n);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(n){let e=this.rules.inline.tag.exec(n);if(e)return!this.lexer.state.inLink&&this.rules.other.startATag.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(n){let e=this.rules.inline.link.exec(n);if(e){let t=e[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&ge(n,e[1],t,this.rules))return;let s=e[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(s)){if(!this.rules.other.endAngleBracket.test(s))return;let o=R(s.slice(0,-1),"\\");if((s.length-o.length)%2===0)return}else{let o=Bt(e[2],"()");if(o===-2)return;if(o>-1){let i=(e[0].indexOf("!")===0?5:4)+e[1].length+o;e[2]=e[2].substring(0,o),e[0]=e[0].substring(0,i).trim(),e[3]=""}}let r=e[2],l="";if(this.options.pedantic){let o=this.rules.other.pedanticHrefTitle.exec(r);o&&(r=o[1],l=o[3])}else l=e[3]?e[3].slice(1,-1):"";return r=r.trim(),this.rules.other.startAngleBracket.test(r)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(s)?r=r.slice(1):r=r.slice(1,-1)),de(e,{href:r&&r.replace(this.rules.inline.anyPunctuation,"$1"),title:l&&l.replace(this.rules.inline.anyPunctuation,"$1")},e[0],this.lexer,this.rules)}}reflink(n,e){let t;if((t=this.rules.inline.reflink.exec(n))||(t=this.rules.inline.nolink.exec(n))){let s=t[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&ge(n,t[1],s,this.rules))return;let r=(t[2]||t[1]).replace(this.rules.other.multipleSpaceGlobal," "),l=e[F(r)];if(!l){let o=t[0].charAt(0);return{type:"text",raw:o,text:o}}return de(t,l,t[0],this.lexer,this.rules)}}emStrong(n,e,t=""){let s=this.rules.inline.emStrongLDelim.exec(n);if(!(!s||!s[1]&&!s[2]&&!s[3]&&!s[4]||s[4]&&t.match(this.rules.other.unicodeAlphaNumeric))&&(!(s[1]||s[3])||!t||this.rules.inline.punctuation.exec(t))){let r=[...s[0]].length-1,l,o,i=r,a=0,u=s[0][0],h=t===u,d=u==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(d.lastIndex=0,e=e.slice(-1*n.length+r);(s=d.exec(e))!==null;){if(l=s[1]||s[2]||s[3]||s[4]||s[5]||s[6],!l)continue;if(o=[...l].length,s[3]||s[4]){i+=o;continue}else if(s[5]||s[6]){if(r%3&&!((r+o)%3)){a+=o;continue}if(h)break}if(i-=o,i>0)continue;o=Math.min(o,o+i+a);let c=[...s[0]][0].length,f=n.slice(0,r+s.index+c+o);if(Math.min(r,o)%2){let w=f.slice(1,-1);return{type:"em",raw:f,text:w,tokens:this.lexer.inlineTokens(w)}}let p=f.slice(2,-2);return{type:"strong",raw:f,text:p,tokens:this.lexer.inlineTokens(p)}}}}codespan(n){let e=this.rules.inline.code.exec(n);if(e){let t=e[2].replace(this.rules.other.newLineCharGlobal," "),s=this.rules.other.nonSpaceChar.test(t),r=this.rules.other.startingSpaceChar.test(t)&&this.rules.other.endingSpaceChar.test(t);return s&&r&&(t=t.substring(1,t.length-1)),{type:"codespan",raw:e[0],text:t}}}br(n){let e=this.rules.inline.br.exec(n);if(e)return{type:"br",raw:e[0]}}del(n,e,t=""){let s=this.rules.inline.delLDelim.exec(n);if(s&&(!s[1]||!t||this.rules.inline.punctuation.exec(t))){let r=[...s[0]].length-1,l,o,i=r,a=this.rules.inline.delRDelim;for(a.lastIndex=0,e=e.slice(-1*n.length+r);(s=a.exec(e))!==null;){if(l=s[1]||s[2]||s[3]||s[4]||s[5]||s[6],!l||(o=[...l].length,o!==r))continue;if(s[3]||s[4]){i+=o;continue}if(i-=o,i>0)continue;o=Math.min(o,o+i);let u=[...s[0]][0].length,h=n.slice(0,r+s.index+u+o),d=h.slice(r,-r);return{type:"del",raw:h,text:d,tokens:this.lexer.inlineTokens(d)}}}}autolink(n){let e=this.rules.inline.autolink.exec(n);if(e){let t,s;return e[2]==="@"?(t=e[1],s="mailto:"+t):(t=e[1],s=t),{type:"link",raw:e[0],text:t,href:s,autolink:!0,tokens:[{type:"text",raw:t,text:t}]}}}url(n){var t;let e;if(e=this.rules.inline.url.exec(n)){let s,r;if(e[2]==="@")s=e[0],r="mailto:"+s;else{let l;do l=e[0],e[0]=((t=this.rules.inline._backpedal.exec(e[0]))==null?void 0:t[0])??"";while(l!==e[0]);s=e[0],e[1]==="www."?r="http://"+e[0]:r=e[0]}return{type:"link",raw:e[0],text:s,href:r,autolink:!0,tokens:[{type:"text",raw:s,text:s}]}}}inlineText(n){let e=this.rules.inline.text.exec(n);if(e){let t=this.lexer.state.inRawBlock;return{type:"text",raw:e[0],text:t?e[0]:Pt(e[0]),escaped:t}}}},S=class W{constructor(e){k(this,"tokens");k(this,"options");k(this,"state");k(this,"inlineQueue");k(this,"tokenizer");this.tokens=[],this.tokens.links=Object.create(null),this.options=e||z,this.options.tokenizer=this.options.tokenizer||new G,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,linkEmitted:!1,top:!0};let t={other:x,block:D.normal,inline:C.normal};this.options.pedantic?(t.block=D.pedantic,t.inline=C.pedantic):this.options.gfm&&(t.block=D.gfm,this.options.breaks?t.inline=C.breaks:t.inline=C.gfm),this.tokenizer.rules=t}static get rules(){return{block:D,inline:C}}static lex(e,t){return new W(t).lex(e)}static lexInline(e,t){return new W(t).inlineTokens(e)}lex(e){e=e.replace(x.carriageReturn,`
|
| 35 |
+
`),this.blockTokens(e,this.tokens);for(let t=0;t<this.inlineQueue.length;t++){let s=this.inlineQueue[t];this.inlineTokens(s.src,s.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,t=[],s=!1){var l,o,i;this.tokenizer.lexer=this,this.options.pedantic&&(e=e.replace(x.tabCharGlobal," ").replace(x.spaceLine,""));let r=1/0;for(;e;){if(e.length<r)r=e.length;else{this.infiniteLoopError(e.charCodeAt(0));break}let a;if((o=(l=this.options.extensions)==null?void 0:l.block)!=null&&o.some(h=>(a=h.call({lexer:this},e,t))?(e=e.substring(a.raw.length),t.push(a),!0):!1))continue;if(a=this.tokenizer.space(e)){e=e.substring(a.raw.length);let h=t.at(-1);a.raw.length===1&&h!==void 0?h.raw+=`
|
| 36 |
+
`:t.push(a);continue}if(a=this.tokenizer.code(e)){e=e.substring(a.raw.length);let h=t.at(-1);(h==null?void 0:h.type)==="paragraph"||(h==null?void 0:h.type)==="text"?(h.raw+=(h.raw.endsWith(`
|
| 37 |
+
`)?"":`
|
| 38 |
+
`)+a.raw,h.text+=`
|
| 39 |
+
`+a.text,this.inlineQueue.at(-1).src=h.text):t.push(a);continue}if(a=this.tokenizer.fences(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.heading(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.hr(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.blockquote(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.list(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.html(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.def(e)){e=e.substring(a.raw.length);let h=t.at(-1);(h==null?void 0:h.type)==="paragraph"||(h==null?void 0:h.type)==="text"?(h.raw+=(h.raw.endsWith(`
|
| 40 |
+
`)?"":`
|
| 41 |
+
`)+a.raw,h.text+=`
|
| 42 |
+
`+a.raw,this.inlineQueue.at(-1).src=h.text):this.tokens.links[a.tag]||(this.tokens.links[a.tag]={href:a.href,title:a.title},t.push(a));continue}if(a=this.tokenizer.table(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.lheading(e)){e=e.substring(a.raw.length),t.push(a);continue}let u=e;if((i=this.options.extensions)!=null&&i.startBlock){let h=1/0,d=e.slice(1),c;this.options.extensions.startBlock.forEach(f=>{c=f.call({lexer:this},d),typeof c=="number"&&c>=0&&(h=Math.min(h,c))}),h<1/0&&h>=0&&(u=e.substring(0,h+1))}if(this.state.top&&(a=this.tokenizer.paragraph(u))){let h=t.at(-1);s&&(h==null?void 0:h.type)==="paragraph"?(h.raw+=(h.raw.endsWith(`
|
| 43 |
+
`)?"":`
|
| 44 |
+
`)+a.raw,h.text+=`
|
| 45 |
+
`+a.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=h.text):t.push(a),s=u.length!==e.length,e=e.substring(a.raw.length);continue}if(a=this.tokenizer.text(e)){e=e.substring(a.raw.length);let h=t.at(-1);(h==null?void 0:h.type)==="text"?(h.raw+=(h.raw.endsWith(`
|
| 46 |
+
`)?"":`
|
| 47 |
+
`)+a.raw,h.text+=`
|
| 48 |
+
`+a.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=h.text):t.push(a);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}linkInText(e){if(!e.includes("["))return!1;let t=this.tokenizer.rules.inline.link;for(let s of e.matchAll(this.tokenizer.rules.inline.blockSkip))if(t.test(s[0])&&e.charAt(s.index-1)!=="!")return!0;for(let s of e.matchAll(this.tokenizer.rules.inline.reflinkSearch)){let r=s[0],l=r.lastIndexOf("[");if(!(r.charAt(0)==="!"||!Object.hasOwn(this.tokens.links,F(r.slice(l+1,-1))))&&!(l>1&&this.linkInText(r.slice(1,l-1))))return!0}return!1}inlineTokens(e,t=[]){var i,a,u,h,d;this.tokenizer.lexer=this;let s=e;if(this.tokens.links&&e.includes("[")){let c=this.tokenizer.rules.inline.reflinkSearch,f=p=>{let w=p.lastIndexOf("[");if(!Object.hasOwn(this.tokens.links,F(p.slice(w+1,-1))))return p;if(w>1&&p.charAt(0)!=="!"){let m=p.slice(1,w-1);if(this.linkInText(m))return"["+m.replace(c,f)+"]["+"a".repeat(p.length-w-2)+"]"}return"["+"a".repeat(p.length-2)+"]"};s=s.replace(c,f)}s=s.replace(this.tokenizer.rules.inline.anyPunctuation,c=>"+".repeat(c.length)),s=s.replace(this.tokenizer.rules.inline.blockSkip,(c,f,p)=>{let w=p?p.length:0;return c.slice(0,w)+"["+"a".repeat(c.length-w-2)+"]"}),s=((a=(i=this.options.hooks)==null?void 0:i.emStrongMask)==null?void 0:a.call({lexer:this},s))??s;let r=!1,l="",o=1/0;for(;e;){if(e.length<o)o=e.length;else{this.infiniteLoopError(e.charCodeAt(0));break}r||(l=""),r=!1;let c;if((h=(u=this.options.extensions)==null?void 0:u.inline)!=null&&h.some(p=>(c=p.call({lexer:this},e,t))?(e=e.substring(c.raw.length),t.push(c),!0):!1))continue;if(c=this.tokenizer.escape(e)){e=e.substring(c.raw.length),t.push(c);continue}if(c=this.tokenizer.tag(e)){e=e.substring(c.raw.length),t.push(c);continue}if(c=this.tokenizer.link(e)){e=e.substring(c.raw.length),t.push(c);continue}if(c=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(c.raw.length);let p=t.at(-1);c.type==="text"&&(p==null?void 0:p.type)==="text"?(p.raw+=c.raw,p.text+=c.text):t.push(c);continue}if(c=this.tokenizer.emStrong(e,s,l)){e=e.substring(c.raw.length),t.push(c);continue}if(c=this.tokenizer.codespan(e)){e=e.substring(c.raw.length),t.push(c);continue}if(c=this.tokenizer.br(e)){e=e.substring(c.raw.length),t.push(c);continue}if(c=this.tokenizer.del(e,s,l)){e=e.substring(c.raw.length),t.push(c);continue}if(c=this.tokenizer.autolink(e)){e=e.substring(c.raw.length),t.push(c);continue}if(!this.state.inLink&&(c=this.tokenizer.url(e))){e=e.substring(c.raw.length),t.push(c);continue}let f=e;if((d=this.options.extensions)!=null&&d.startInline){let p=1/0,w=e.slice(1),m;this.options.extensions.startInline.forEach($=>{m=$.call({lexer:this},w),typeof m=="number"&&m>=0&&(p=Math.min(p,m))}),p<1/0&&p>=0&&(f=e.substring(0,p+1))}if(c=this.tokenizer.inlineText(f)){e=e.substring(c.raw.length),c.raw.slice(-1)!=="_"&&(l=c.raw.slice(-1)),r=!0;let p=t.at(-1);(p==null?void 0:p.type)==="text"?(p.raw+=c.raw,p.text+=c.text):t.push(c);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return t}infiniteLoopError(e){let t="Infinite loop on byte: "+e;if(this.options.silent)console.error(t);else throw new Error(t)}},U=class{constructor(n){k(this,"options");k(this,"parser");this.options=n||z}space(n){return""}code({text:n,lang:e,escaped:t}){var l;let s=(l=(e||"").match(x.notSpaceStart))==null?void 0:l[0],r=n?n.replace(x.endingNewline,"")+`
|
| 49 |
+
`:"";return s?'<pre><code class="language-'+y(s)+'">'+(t?r:y(r,!0))+`</code></pre>
|
| 50 |
+
`:"<pre><code>"+(t?r:y(r,!0))+`</code></pre>
|
| 51 |
+
`}blockquote({tokens:n}){return`<blockquote>
|
| 52 |
+
${this.parser.parse(n)}</blockquote>
|
| 53 |
+
`}html({text:n}){return n}def(n){return""}heading({tokens:n,depth:e}){return`<h${e}>${this.parser.parseInline(n)}</h${e}>
|
| 54 |
+
`}hr(n){return`<hr>
|
| 55 |
+
`}list(n){let e=n.ordered,t=n.start,s="";for(let o=0;o<n.items.length;o++){let i=n.items[o];s+=this.listitem(i)}let r=e?"ol":"ul",l=e&&t!==1?' start="'+t+'"':"";return"<"+r+l+`>
|
| 56 |
+
`+s+"</"+r+`>
|
| 57 |
+
`}listitem(n){return`<li>${this.parser.parse(n.tokens)}</li>
|
| 58 |
+
`}checkbox({checked:n}){return"<input "+(n?'checked="" ':"")+'disabled="" type="checkbox"> '}paragraph({tokens:n}){return`<p>${this.parser.parseInline(n)}</p>
|
| 59 |
+
`}table(n){let e="",t="";for(let r=0;r<n.header.length;r++)t+=this.tablecell(n.header[r]);e+=this.tablerow({text:t});let s="";for(let r=0;r<n.rows.length;r++){let l=n.rows[r];t="";for(let o=0;o<l.length;o++)t+=this.tablecell(l[o]);s+=this.tablerow({text:t})}return s&&(s=`<tbody>${s}</tbody>`),`<table>
|
| 60 |
+
<thead>
|
| 61 |
+
`+e+`</thead>
|
| 62 |
+
`+s+`</table>
|
| 63 |
+
`}tablerow({text:n}){return`<tr>
|
| 64 |
+
${n}</tr>
|
| 65 |
+
`}tablecell(n){let e=this.parser.parseInline(n.tokens),t=n.header?"th":"td";return(n.align?`<${t} align="${n.align}">`:`<${t}>`)+e+`</${t}>
|
| 66 |
+
`}strong({tokens:n}){return`<strong>${this.parser.parseInline(n)}</strong>`}em({tokens:n}){return`<em>${this.parser.parseInline(n)}</em>`}codespan({text:n}){return`<code>${y(n,!0)}</code>`}br(n){return"<br>"}del({tokens:n}){return`<del>${this.parser.parseInline(n)}</del>`}link({href:n,title:e,text:t,tokens:s,autolink:r}){let l=r?y(t,!0):this.parser.parseInline(s),o=he(n);if(o===null)return l;n=y(o,r);let i='<a href="'+n+'"';return e&&(i+=' title="'+y(e)+'"'),i+=">"+l+"</a>",i}image({href:n,title:e,text:t,tokens:s}){s&&(t=this.parser.parseInline(s,this.parser.textRenderer));let r=he(n);if(r===null)return y(t);n=r;let l=`<img src="${y(n)}" alt="${y(t)}"`;return e&&(l+=` title="${y(e)}"`),l+=">",l}text(n){return"tokens"in n&&n.tokens?this.parser.parseInline(n.tokens):"escaped"in n&&n.escaped?n.text:y(n.text)}},re=class{strong({text:n}){return n}em({text:n}){return n}codespan({text:n}){return n}del({text:n}){return n}html({text:n}){return n}text({text:n}){return n}link({text:n}){return""+n}image({text:n}){return""+n}br(){return""}checkbox({raw:n}){return n}},M=class X{constructor(e){k(this,"options");k(this,"renderer");k(this,"textRenderer");this.options=e||z,this.options.renderer=this.options.renderer||new U,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new re}static parse(e,t){return new X(t).parse(e)}static parseInline(e,t){return new X(t).parseInline(e)}parse(e){var s,r;this.renderer.parser=this;let t="";for(let l=0;l<e.length;l++){let o=e[l];if((r=(s=this.options.extensions)==null?void 0:s.renderers)!=null&&r[o.type]){let a=o,u=this.options.extensions.renderers[a.type].call({parser:this},a);if(u!==!1||!["space","hr","heading","code","table","blockquote","list","checkbox","html","def","paragraph","text"].includes(a.type)){t+=u||"";continue}}let i=o;switch(i.type){case"space":{t+=this.renderer.space(i);break}case"hr":{t+=this.renderer.hr(i);break}case"heading":{t+=this.renderer.heading(i);break}case"code":{t+=this.renderer.code(i);break}case"table":{t+=this.renderer.table(i);break}case"blockquote":{t+=this.renderer.blockquote(i);break}case"list":{t+=this.renderer.list(i);break}case"checkbox":{t+=this.renderer.checkbox(i);break}case"html":{t+=this.renderer.html(i);break}case"def":{t+=this.renderer.def(i);break}case"paragraph":{t+=this.renderer.paragraph(i);break}case"text":{t+=this.renderer.text(i);break}default:{let a='Token with "'+i.type+'" type was not found.';if(this.options.silent)return console.error(a),"";throw new Error(a)}}}return t}parseInline(e,t=this.renderer){var r,l;this.renderer.parser=this;let s="";for(let o=0;o<e.length;o++){let i=e[o];if((l=(r=this.options.extensions)==null?void 0:r.renderers)!=null&&l[i.type]){let u=this.options.extensions.renderers[i.type].call({parser:this},i);if(u!==!1||!["escape","html","link","image","checkbox","strong","em","codespan","br","del","text"].includes(i.type)){s+=u||"";continue}}let a=i;switch(a.type){case"escape":{s+=t.text(a);break}case"html":{s+=t.html(a);break}case"link":{s+=t.link(a);break}case"image":{s+=t.image(a);break}case"checkbox":{s+=t.checkbox(a);break}case"strong":{s+=t.strong(a);break}case"em":{s+=t.em(a);break}case"codespan":{s+=t.codespan(a);break}case"br":{s+=t.br(a);break}case"del":{s+=t.del(a);break}case"text":{s+=t.text(a);break}default:{let u='Token with "'+a.type+'" type was not found.';if(this.options.silent)return console.error(u),"";throw new Error(u)}}}return s}},Z,E=(Z=class{constructor(n){k(this,"options");k(this,"block");this.options=n||z}preprocess(n){return n}postprocess(n){return n}processAllTokens(n){return n}emStrongMask(n){return n}provideLexer(n=this.block){return n?S.lex:S.lexInline}provideParser(n=this.block){return n?M.parse:M.parseInline}},k(Z,"passThroughHooks",new Set(["preprocess","postprocess","processAllTokens","emStrongMask"])),k(Z,"passThroughHooksRespectAsync",new Set(["preprocess","postprocess","processAllTokens"])),Z),It=class{constructor(...n){k(this,"defaults",J());k(this,"options",this.setOptions);k(this,"parse",this.parseMarkdown(!0));k(this,"parseInline",this.parseMarkdown(!1));k(this,"Parser",M);k(this,"Renderer",U);k(this,"TextRenderer",re);k(this,"Lexer",S);k(this,"Tokenizer",G);k(this,"Hooks",E);this.use(...n)}walkTokens(n,e){var s,r;let t=[];for(let l of n)switch(t=t.concat(e.call(this,l)),l.type){case"table":{let o=l;for(let i of o.header)t=t.concat(this.walkTokens(i.tokens,e));for(let i of o.rows)for(let a of i)t=t.concat(this.walkTokens(a.tokens,e));break}case"list":{let o=l;t=t.concat(this.walkTokens(o.items,e));break}default:{let o=l;(r=(s=this.defaults.extensions)==null?void 0:s.childTokens)!=null&&r[o.type]?this.defaults.extensions.childTokens[o.type].forEach(i=>{let a=o[i].flat(1/0);t=t.concat(this.walkTokens(a,e))}):o.tokens&&(t=t.concat(this.walkTokens(o.tokens,e)))}}return t}use(...n){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return n.forEach(t=>{let s={...t};if(s.async=this.defaults.async||s.async||!1,t.extensions&&(t.extensions.forEach(r=>{if(!r.name)throw new Error("extension name required");if("renderer"in r){let l=e.renderers[r.name];l?e.renderers[r.name]=function(...o){let i=r.renderer.apply(this,o);return i===!1&&(i=l.apply(this,o)),i}:e.renderers[r.name]=r.renderer}if("tokenizer"in r){if(!r.level||r.level!=="block"&&r.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let l=e[r.level];l?l.unshift(r.tokenizer):e[r.level]=[r.tokenizer],r.start&&(r.level==="block"?e.startBlock?e.startBlock.push(r.start):e.startBlock=[r.start]:r.level==="inline"&&(e.startInline?e.startInline.push(r.start):e.startInline=[r.start]))}"childTokens"in r&&r.childTokens&&(e.childTokens[r.name]=r.childTokens)}),s.extensions=e),t.renderer){let r=this.defaults.renderer||new U(this.defaults);for(let l in t.renderer){if(!(l in r))throw new Error(`renderer '${l}' does not exist`);if(["options","parser"].includes(l))continue;let o=l,i=t.renderer[o],a=r[o];r[o]=(...u)=>{let h=i.apply(r,u);return h===!1&&(h=a.apply(r,u)),h||""}}s.renderer=r}if(t.tokenizer){let r=this.defaults.tokenizer||new G(this.defaults);for(let l in t.tokenizer){if(!(l in r))throw new Error(`tokenizer '${l}' does not exist`);if(["options","rules","lexer"].includes(l))continue;let o=l,i=t.tokenizer[o],a=r[o];r[o]=(...u)=>{let h=i.apply(r,u);return h===!1&&(h=a.apply(r,u)),h}}s.tokenizer=r}if(t.hooks){let r=this.defaults.hooks||new E;for(let l in t.hooks){if(!(l in r))throw new Error(`hook '${l}' does not exist`);if(["options","block"].includes(l))continue;let o=l,i=t.hooks[o],a=r[o];E.passThroughHooks.has(l)?r[o]=u=>{if(this.defaults.async&&E.passThroughHooksRespectAsync.has(l))return(async()=>{let d=await i.call(r,u);return a.call(r,d)})();let h=i.call(r,u);return a.call(r,h)}:r[o]=(...u)=>{if(this.defaults.async)return(async()=>{let d=await i.apply(r,u);return d===!1&&(d=await a.apply(r,u)),d})();let h=i.apply(r,u);return h===!1&&(h=a.apply(r,u)),h}}s.hooks=r}if(t.walkTokens){let r=this.defaults.walkTokens,l=t.walkTokens;s.walkTokens=function(o){let i=[];return i.push(l.call(this,o)),r&&(i=i.concat(r.call(this,o))),i}}this.defaults={...this.defaults,...s}}),this}setOptions(n){return this.defaults={...this.defaults,...n},this}lexer(n,e){return S.lex(n,e??this.defaults)}parser(n,e){return M.parse(n,e??this.defaults)}parseMarkdown(n){return(e,t)=>{let s={...t},r={...this.defaults,...s},l=this.onError(!!r.silent,!!r.async);if(this.defaults.async===!0&&s.async===!1)return l(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof e>"u"||e===null)return l(new Error("marked(): input parameter is undefined or null"));if(typeof e!="string")return l(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));if(r.hooks&&(r.hooks.options=r,r.hooks.block=n),r.async)return(async()=>{let o=r.hooks?await r.hooks.preprocess(e):e,i=await(r.hooks?await r.hooks.provideLexer(n):n?S.lex:S.lexInline)(o,r),a=r.hooks?await r.hooks.processAllTokens(i):i;r.walkTokens&&await Promise.all(this.walkTokens(a,r.walkTokens));let u=await(r.hooks?await r.hooks.provideParser(n):n?M.parse:M.parseInline)(a,r);return r.hooks?await r.hooks.postprocess(u):u})().catch(l);try{r.hooks&&(e=r.hooks.preprocess(e));let o=(r.hooks?r.hooks.provideLexer(n):n?S.lex:S.lexInline)(e,r);r.hooks&&(o=r.hooks.processAllTokens(o)),r.walkTokens&&this.walkTokens(o,r.walkTokens);let i=(r.hooks?r.hooks.provideParser(n):n?M.parse:M.parseInline)(o,r);return r.hooks&&(i=r.hooks.postprocess(i)),i}catch(o){return l(o)}}}onError(n,e){return t=>{if(t.message+=`
|
| 67 |
+
Please report this to https://github.com/markedjs/marked.`,n){let s="<p>An error occurred:</p><pre>"+y(t.message+"",!0)+"</pre>";return e?Promise.resolve(s):s}if(e)return Promise.reject(t);throw t}}},A=new It;function b(n,e){return A.parse(n,e)}b.options=b.setOptions=function(n){return A.setOptions(n),b.defaults=A.defaults,me(b.defaults),b};b.getDefaults=J;b.defaults=z;function Ct(...n){return A.use(...n),b.defaults=A.defaults,me(b.defaults),b}b.use=Ct;b.walkTokens=function(n,e){return A.walkTokens(n,e)};b.parseInline=A.parseInline;b.Parser=M;b.parser=M.parse;b.Renderer=U;b.TextRenderer=re;b.Lexer=S;b.lexer=S.lex;b.Tokenizer=G;b.Hooks=E;b.parse=b;b.options;b.setOptions;b.walkTokens;b.parseInline;M.parse;S.lex;const fe=`# What 19 months of daily downloads say about the Hugging Face Hub
|
| 68 |
+
|
| 69 |
+
Every model page on the Hub shows one number: downloads in the last 30 days. It's useful, but it's a snapshot. It can't tell you whether a model is growing or fading, how it compares with its peers, or how much of its reach comes from the quantizations and fine-tunes built on top of it.
|
| 70 |
+
|
| 71 |
+
So I rebuilt the history. [Model Pulse](https://huggingface.co/spaces/tardellirs/model-pulse) reads every daily revision of [@cfahlgren1](https://huggingface.co/cfahlgren1)'s [hub-stats](https://huggingface.co/datasets/cfahlgren1/hub-stats) dataset, back to July 2024, and turns them into a day-by-day series for 1.6 million models. Since February 2025 those snapshots include all-time totals, which makes exact daily downloads possible: 19 months of them, for every model that anyone actually uses.
|
| 72 |
+
|
| 73 |
+
This post walks through what that data shows. Every number comes from the [open dataset](https://huggingface.co/datasets/modelpulse/model-pulse-data), and every model mentioned can be looked up on Model Pulse.
|
| 74 |
+
|
| 75 |
+
## The short version
|
| 76 |
+
|
| 77 |
+
- The Hub serves about **100 million model downloads a day**, up from about 62 million a year ago.
|
| 78 |
+
- **Rerankers grew almost 10x** and vision-language models more than 6x in that year. BERT-style fill-mask models are the only big category that shrank.
|
| 79 |
+
- **Qwen's own repos take 54%** of all text and vision-language model downloads. Meta's took about a quarter in March 2025 and take 5% now.
|
| 80 |
+
- **43% of all downloads go to derivatives**, up from 18%. Quantizations alone went from 9% to 28%.
|
| 81 |
+
- **Unsloth grew 6x and LM Studio's community org 24x**, making the quantizers some of the biggest publishers on the Hub.
|
| 82 |
+
- **The top of the Hub is losing its grip**: the ten most downloaded models took 34% of downloads in March 2025 and 22% now.
|
| 83 |
+
- **The typical downloaded LLM nearly doubled in size**, from 3.0B to 5.7B parameters.
|
| 84 |
+
- **Old models still carry the Hub**: 10 of the 15 most downloaded models are dated 2022 or earlier.
|
| 85 |
+
- **A launch spikes for two weeks and then plateaus.** 43% of successful launches had their best week after their third month.
|
| 86 |
+
- **Likes measure excitement, not use.** Image models collect 160 times more likes per download than rerankers.
|
| 87 |
+
|
| 88 |
+
## 1. The Hub serves about 100 million model downloads a day
|
| 89 |
+
|
| 90 |
+

|
| 91 |
+
|
| 92 |
+
In September 2026 public models were downloaded about 100M times on a typical day, against about 62M a year earlier. The growth wasn't spread evenly across tasks:
|
| 93 |
+
|
| 94 |
+
| Task | Sep 2025, per day | Sep 2026, per day | Change |
|
| 95 |
+
|---|---:|---:|---:|
|
| 96 |
+
| Text generation | 9.0M | 18.0M | 2.0x |
|
| 97 |
+
| Sentence similarity | 6.7M | 16.2M | 2.4x |
|
| 98 |
+
| Vision-language (image-text-to-text) | 1.6M | 10.7M | 6.6x |
|
| 99 |
+
| Feature extraction | 2.8M | 5.9M | 2.2x |
|
| 100 |
+
| Automatic speech recognition | 2.4M | 4.8M | 2.0x |
|
| 101 |
+
| Fill-mask | 5.5M | 4.6M | 0.8x |
|
| 102 |
+
| Text ranking (rerankers) | 0.4M | 3.9M | 9.7x |
|
| 103 |
+
| Everything else | 31.8M | 34.7M | 1.1x |
|
| 104 |
+
|
| 105 |
+
Two things stand out. Rerankers went from a niche to nearly 4M downloads a day, which is what you'd expect as retrieval pipelines add a reranking step. And fill-mask, the task behind the original BERT wave, is the only large category that shrank.
|
| 106 |
+
|
| 107 |
+
The spike in late June 2026 is a reminder of how the Hub counts: it sometimes books delayed downloads on a single day. Weekly totals smooth most of that out.
|
| 108 |
+
|
| 109 |
+
## 2. Embeddings and retrieval quietly run the Hub
|
| 110 |
+
|
| 111 |
+
Generative models get the attention, but the most downloaded models on the Hub are small encoders. These were the top 15 in September 2026:
|
| 112 |
+
|
| 113 |
+
| Model | Created | Downloads in September 2026 |
|
| 114 |
+
|---|---|---:|
|
| 115 |
+
| sentence-transformers/all-MiniLM-L6-v2 | 2022 or earlier | 252.4M |
|
| 116 |
+
| cross-encoder/ms-marco-MiniLM-L6-v2 | 2022 or earlier | 89.6M |
|
| 117 |
+
| BAAI/bge-small-en-v1.5 | 2023 | 65.8M |
|
| 118 |
+
| sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2 | 2022 or earlier | 50.0M |
|
| 119 |
+
| google/electra-base-discriminator | 2022 or earlier | 48.5M |
|
| 120 |
+
| google-bert/bert-base-uncased | 2022 or earlier | 42.6M |
|
| 121 |
+
| BAAI/bge-m3 | 2024 | 37.2M |
|
| 122 |
+
| Qwen/Qwen3-0.6B | 2025 | 30.6M |
|
| 123 |
+
| google-t5/t5-small | 2022 or earlier | 25.2M |
|
| 124 |
+
| amazon/chronos-2 | 2025 | 23.5M |
|
| 125 |
+
| Comfy-Org/MiniMax-H3 | 2026 | 22.8M |
|
| 126 |
+
| openai/clip-vit-base-patch32 | 2022 or earlier | 22.3M |
|
| 127 |
+
| timm/mobilenetv3_small_100.lamb_in1k | 2022 or earlier | 21.6M |
|
| 128 |
+
| sentence-transformers/all-mpnet-base-v2 | 2022 or earlier | 21.3M |
|
| 129 |
+
| FacebookAI/xlm-roberta-base | 2022 or earlier | 17.7M |
|
| 130 |
+
|
| 131 |
+
From April to September 2026 the \`sentence-transformers\` organization served 2.27B downloads, slightly more than Qwen's 2.16B. The \`sentence-transformers\` library went from 13% of all downloads to 27%, while \`transformers\` went from 71% to 56%:
|
| 132 |
+
|
| 133 |
+
| Library | Mar 2025 | Sep 2026 |
|
| 134 |
+
|---|---:|---:|
|
| 135 |
+
| transformers | 70.9% | 55.5% |
|
| 136 |
+
| sentence-transformers | 13.2% | 26.8% |
|
| 137 |
+
| no library tag | 3.8% | 8.5% |
|
| 138 |
+
| timm | 5.5% | 1.8% |
|
| 139 |
+
| diffusers | 2.9% | 1.8% |
|
| 140 |
+
| gguf | 0.0% | 1.7% |
|
| 141 |
+
| mlx | 0.0% | 0.7% |
|
| 142 |
+
| transformers.js | 0.2% | 0.6% |
|
| 143 |
+
|
| 144 |
+
## 3. Qwen gets half of all LLM downloads
|
| 145 |
+
|
| 146 |
+

|
| 147 |
+
|
| 148 |
+
Count every download of a text-generation or vision-language model on the Hub, including every quantization and fine-tune, and ask who published the repo. In March 2025 Meta's \`meta-llama\` repos and Qwen's were roughly tied, at about a quarter each. Qwen pulled ahead in the spring of 2025 and kept going. By September 2026 Qwen's own repos took 54% and Meta's took 5%. NVIDIA is the riser to watch, from under 1% to 6%.
|
| 149 |
+
|
| 150 |
+
The most downloaded text and vision-language models in September 2026:
|
| 151 |
+
|
| 152 |
+
| Model | Downloads in September 2026 |
|
| 153 |
+
|---|---:|
|
| 154 |
+
| Qwen/Qwen3-0.6B | 30.6M |
|
| 155 |
+
| Qwen/Qwen3-VL-8B-Instruct | 17.3M |
|
| 156 |
+
| openai-community/gpt2 | 16.2M |
|
| 157 |
+
| google/gemma-4-26B-A4B-it | 13.1M |
|
| 158 |
+
| Qwen/Qwen3-8B | 12.1M |
|
| 159 |
+
| trl-internal-testing/tiny-Qwen2ForCausalLM-2.5 | 11.7M |
|
| 160 |
+
| google/gemma-4-31B-it | 10.2M |
|
| 161 |
+
| Qwen/Qwen2.5-7B-Instruct | 10.0M |
|
| 162 |
+
| unsloth/Qwen3-Coder-30B-A3B-Instruct-GGUF | 10.0M |
|
| 163 |
+
| Qwen/Qwen3.5-9B | 9.8M |
|
| 164 |
+
|
| 165 |
+
Two of these are worth a second look. GPT-2, released in 2019, is still the third most downloaded text model. And a tiny test model used in TRL's CI makes the top ten, which shows how much of the Hub's traffic comes from automated pipelines.
|
| 166 |
+
|
| 167 |
+
## 4. Nearly half of all downloads go to derivatives
|
| 168 |
+
|
| 169 |
+

|
| 170 |
+
|
| 171 |
+
A derivative is a model whose card declares a base model: a quantization, a fine-tune, an adapter or a merge. In March 2025 derivatives took 18% of all downloads on the Hub. In September 2026 they took 43%. Quantizations drove most of it, going from 9% to 28%, and GGUF files alone went from 5% to 11%, most of that in the last three months.
|
| 172 |
+
|
| 173 |
+
Take [Qwen3-8B](https://huggingface.co/spaces/tardellirs/model-pulse?model=Qwen/Qwen3-8B). 6,283 models build on it, directly or through other derivatives, and 37% of its family's monthly downloads go to those derivatives rather than to the original. If you only look at the original repo, you miss more than a third of its reach.
|
| 174 |
+
|
| 175 |
+
Derivatives also reach scale faster. Of the models created since March 2025, 946 have passed one million downloads. Here is how long it took, by type:
|
| 176 |
+
|
| 177 |
+
| Type | Models past 1M downloads | Median days to 1M |
|
| 178 |
+
|---|---:|---:|
|
| 179 |
+
| Quantized | 297 | 100 |
|
| 180 |
+
| Adapter | 14 | 115 |
|
| 181 |
+
| Fine-tuned | 117 | 127 |
|
| 182 |
+
| Merge | 6 | 191 |
|
| 183 |
+
| Original (no declared base) | 512 | 331 |
|
| 184 |
+
|
| 185 |
+
## 5. The quantizers became some of the Hub's biggest publishers
|
| 186 |
+
|
| 187 |
+

|
| 188 |
+
|
| 189 |
+
| Publisher | Monthly downloads, Mar 2025 | Monthly downloads, Sep 2026 | Repos with downloads, Sep 2026 |
|
| 190 |
+
|---|---:|---:|---:|
|
| 191 |
+
| unsloth | 11.0M | 67.5M | 1,440 |
|
| 192 |
+
| mradermacher | 7.2M | 47.4M | 70,191 |
|
| 193 |
+
| lmstudio-community | 1.7M | 41.7M | 750 |
|
| 194 |
+
| bartowski | 10.4M | 16.2M | 2,318 |
|
| 195 |
+
| MaziyarPanahi | 48.7M | 10.6M | 2,790 |
|
| 196 |
+
| mlx-community | 2.4M | 9.4M | 5,431 |
|
| 197 |
+
| ggml-org | 0.2M | 6.7M | 193 |
|
| 198 |
+
| TheBloke | 15.7M | 2.8M | 3,655 |
|
| 199 |
+
|
| 200 |
+
Unsloth grew sixfold and now ranks among the top dozen publishers on the whole Hub. LM Studio's community org grew 24-fold. mradermacher runs at a different scale altogether: more than 70,000 repos got at least one download in September. TheBloke, who defined this category in 2023, is down to 2.8M a month as people move to newer models, and MaziyarPanahi went the other way too, from 48.7M to 10.6M.
|
| 201 |
+
|
| 202 |
+
## 6. The head of the Hub is losing its grip
|
| 203 |
+
|
| 204 |
+

|
| 205 |
+
|
| 206 |
+
| | Mar 2025 | Sep 2026 |
|
| 207 |
+
|---|---:|---:|
|
| 208 |
+
| Share of downloads, top 10 models | 34.2% | 21.9% |
|
| 209 |
+
| Share of downloads, top 100 models | 63.8% | 47.0% |
|
| 210 |
+
| Share of downloads, top 1,000 models | 91.7% | 78.6% |
|
| 211 |
+
| Share of downloads, top 1% of models | 98.1% | 96.3% |
|
| 212 |
+
| Models with at least one download | 694K | 1.52M |
|
| 213 |
+
|
| 214 |
+
Demand is spreading out: the top ten lost a third of their share in eighteen months. The tail is still enormous, though. Of the 1.59M models tracked in September 2026, 45% got fewer than 10 downloads in the month and 88% got fewer than 100. Only 434 passed a million.
|
| 215 |
+
|
| 216 |
+
## 7. People download bigger models
|
| 217 |
+
|
| 218 |
+

|
| 219 |
+
|
| 220 |
+
Weighted by downloads, the typical text-generation model went from 3.0B parameters in March 2025 to 5.7B in September 2026, peaking at 6.1B in June. Models with 10B or more parameters went from 19% of text-generation downloads to 35%. Small models haven't gone away: anything under 2B still takes about a third, some of it from CI pipelines that pull tiny test models all day.
|
| 221 |
+
|
| 222 |
+
## 8. Old models still carry a third of the Hub
|
| 223 |
+
|
| 224 |
+
The Hub dates every repo migrated from its early days to March 2022, so "2022 or earlier" covers BERT, GPT-2, T5 and the rest of that generation. Here is the share of each month's downloads by the year the model was created:
|
| 225 |
+
|
| 226 |
+
| Created | Share in Mar 2025 | Share in Sep 2026 |
|
| 227 |
+
|---|---:|---:|
|
| 228 |
+
| 2022 or earlier | 56.0% | 33.6% |
|
| 229 |
+
| 2023 | 17.6% | 11.4% |
|
| 230 |
+
| 2024 | 23.0% | 15.3% |
|
| 231 |
+
| 2025 | 3.5% | 17.9% |
|
| 232 |
+
| 2026 | 0.0% | 21.9% |
|
| 233 |
+
|
| 234 |
+
New models win share fast, since 2026 models already take more than a fifth of all downloads, but the old guard erodes slowly: a third of everything downloaded today is from 2022 or earlier.
|
| 235 |
+
|
| 236 |
+
## 9. A launch spikes for two weeks, then plateaus
|
| 237 |
+
|
| 238 |
+

|
| 239 |
+
|
| 240 |
+
I took the 2,303 models launched between March 2025 and March 2026 that passed 100K downloads in their first six months, and looked at how those downloads were spread over the 26 weeks:
|
| 241 |
+
|
| 242 |
+
- On average the first two weeks take about 8% of the six months each. After that, downloads settle at around 3% a week and stay there; they don't fade.
|
| 243 |
+
- For the median model, the first month accounts for only 14% of the first six months.
|
| 244 |
+
- Only 8% of these models had their best week at launch. The median best week is week 10 after launch, and 43% peaked after their third month.
|
| 245 |
+
|
| 246 |
+
This is a set of models that succeeded, so it says nothing about the many launches that never take off. But for the ones that do, steady use matters more than the launch spike.
|
| 247 |
+
|
| 248 |
+
The fastest to a million downloads since March 2025:
|
| 249 |
+
|
| 250 |
+
| Model | Days to 1M downloads |
|
| 251 |
+
|---|---:|
|
| 252 |
+
| openai/gpt-oss-20b | 5 |
|
| 253 |
+
| Comfy-Org/z_image_turbo | 5 |
|
| 254 |
+
| ornith-ai/Ornith-1.5-9B-GGUF | 6 |
|
| 255 |
+
| JonathanColetti/Qwen3.8-27B-Uncensored-GGUF | 7 |
|
| 256 |
+
| huihui-ai/Huihui-Qwen3.8-27B-abliterated-GGUF | 8 |
|
| 257 |
+
| lmstudio-community/Qwen3.8-27B-MLX-4bit | 8 |
|
| 258 |
+
| unsloth/Qwen3.8-27B-NVFP4 | 8 |
|
| 259 |
+
| Comfy-Org/Wan_2.2_ComfyUI_Repackaged | 9 |
|
| 260 |
+
| Qwen/Qwen3.6-35B-A3B | 10 |
|
| 261 |
+
|
| 262 |
+
A couple of niche repos also crossed a million in five days, most likely through automated pulls, and are left out of the table. Note how many community builds of Qwen3.8-27B made the list: when a popular model ships, the GGUF, MLX and abliterated variants race each other to the top.
|
| 263 |
+
|
| 264 |
+
## 10. Likes measure excitement, not use
|
| 265 |
+
|
| 266 |
+

|
| 267 |
+
|
| 268 |
+
Across models with at least 1,000 monthly downloads, likes and downloads are only moderately related (Spearman 0.42). What a model is for matters more than how much it's used. Image generation models collect 854 likes per 100K monthly downloads; rerankers collect 5.
|
| 269 |
+
|
| 270 |
+
Some of the busiest models have almost no likes:
|
| 271 |
+
|
| 272 |
+
| Model | Downloads, last 30 days | Likes |
|
| 273 |
+
|---|---:|---:|
|
| 274 |
+
| mudler/locate-anything.cpp-gguf | 9.1M | 19 |
|
| 275 |
+
| amazon/chronos-bolt-small | 6.9M | 49 |
|
| 276 |
+
| cross-encoder/ms-marco-MiniLM-L4-v2 | 6.1M | 31 |
|
| 277 |
+
| autogluon/chronos-2-small | 4.5M | 8 |
|
| 278 |
+
|
| 279 |
+
And some of the most loved are rarely downloaded anymore:
|
| 280 |
+
|
| 281 |
+
| Model | Likes | Downloads, last 30 days |
|
| 282 |
+
|---|---:|---:|
|
| 283 |
+
| stabilityai/stable-diffusion-3-medium | 5,058 | 2,721 |
|
| 284 |
+
| WarriorMama777/OrangeMixs | 3,958 | 1,584 |
|
| 285 |
+
| prompthero/openjourney | 3,262 | 3,644 |
|
| 286 |
+
| zai-org/chatglm-6b | 2,915 | 2,881 |
|
| 287 |
+
|
| 288 |
+
If you rank models by likes, you're ranking them by how exciting they were. To see what people actually run, look at downloads over time.
|
| 289 |
+
|
| 290 |
+
## How this was measured
|
| 291 |
+
|
| 292 |
+
**Source.** [cfahlgren1/hub-stats](https://huggingface.co/datasets/cfahlgren1/hub-stats) publishes a fresh \`models.parquet\` with metadata for every public model on the Hub, usually daily. I read 681 of its historical revisions, from 2024-07-29 to 2026-10-02, keeping each model's 30-day downloads, all-time downloads and likes for each day. The latest snapshot adds the metadata: task, library, size, license and declared base models.
|
| 293 |
+
|
| 294 |
+
**Daily downloads.** The \`downloadsAllTime\` field exists from 2025-02-27. Daily downloads are the difference of that total between consecutive snapshots. Before that date only the rolling 30-day count exists, so Model Pulse shows that instead. Monthly figures in this post are the difference between month-end totals.
|
| 295 |
+
|
| 296 |
+
**Which models.** A model is tracked once it has 10 or more downloads in 30 days, 50 or more all-time downloads, or a like. That's 1.6M of the Hub's 3.1M models, and nearly all of its downloads.
|
| 297 |
+
|
| 298 |
+
**Families.** A family is a base model plus every model that declares it as a base, directly or through other derivatives, following \`base_model\` up to six levels.
|
| 299 |
+
|
| 300 |
+
**Caveats.**
|
| 301 |
+
- Downloads follow the Hub's own [counting rules](https://huggingface.co/docs/hub/models-download-stats), so they include CI jobs, benchmarks and other automated pulls. That's why tiny test models rank surprisingly high.
|
| 302 |
+
- The source has gaps: two weeks in August 2024, most of June 2025, and parts of April to June 2026. Totals are unaffected, but daily values across a gap are averages. June 2025 is left out of the monthly line charts because its snapshot is incomplete.
|
| 303 |
+
- The Hub sometimes books delayed downloads on a single day, which shows up as a short spike.
|
| 304 |
+
- Publisher shares count downloads of an organization's own repos. A Qwen model quantized by Unsloth counts for Unsloth.
|
| 305 |
+
- "Created" dates come from the Hub, which dates repos migrated from its early days to March 2022.
|
| 306 |
+
|
| 307 |
+
## Explore it yourself
|
| 308 |
+
|
| 309 |
+
Every number above can be checked on [Model Pulse](https://huggingface.co/spaces/tardellirs/model-pulse):
|
| 310 |
+
|
| 311 |
+
- Open any model's daily and weekly history, with milestones such as the day it crossed a million downloads.
|
| 312 |
+
- Compare up to five models on one chart.
|
| 313 |
+
- See a model's family: how many quantizations, fine-tunes, adapters and merges build on it, and how many downloads they add up to.
|
| 314 |
+
- Browse the weekly rankings: most downloaded, fastest growing, new this month, most liked, biggest families and top organizations.
|
| 315 |
+
- Model authors can add a live badge to their model card.
|
| 316 |
+
|
| 317 |
+
The full dataset is open at [modelpulse/model-pulse-data](https://huggingface.co/datasets/modelpulse/model-pulse-data) and updated every day, so you can run your own analyses.
|
| 318 |
+
|
| 319 |
+
What would you want to know about your own models? I'd love to hear it in the comments.
|
| 320 |
+
|
| 321 |
+
*Made by [Tardelli Stekel](https://huggingface.co/tardellirs) ([stekel.ifsp.dev](https://stekel.ifsp.dev/)).*
|
| 322 |
+
`,Et="October 3, 2026";function Ht(){const n=_e(()=>{const t=fe.split(/\s+/).length;let s=b.parse(fe,{async:!1});return s=s.replace("</h1>",`</h1><p class="byline">${Et} · ${Math.round(t/230)} min read · by <a href="https://huggingface.co/tardellirs">Tardelli Stekel</a></p>`),s=s.replace(/<table>/g,'<div class="table-scroll"><table class="list">').replace(/<\/table>/g,"</table></div>"),s=s.replace(/<img /g,'<img loading="lazy" '),s},[]);return Pe(()=>{document.title="What 19 months of daily downloads say about the Hub · Model Pulse",window.scrollTo({top:0})},[]),Be("article",{class:"wrap report",onClick:t=>{const s=t.target.closest("a");if(!s)return;const r=s.getAttribute("href")||"",l=r.match(/^https:\/\/huggingface\.co\/spaces\/(?:modelpulse|tardellirs)\/model-pulse\/?(\?[^#]*)?$/);if(l){t.preventDefault();const o=new URLSearchParams((l[1]||"").slice(1)),i=o.get("model"),a=o.get("view")||void 0;Le(i||a?{model:i||void 0,view:a}:{});return}/^https?:/.test(r)&&(s.target="_blank",s.rel="noopener")},dangerouslySetInnerHTML:{__html:n}})}export{Ht as Report};
|
assets/Wrapped-CC5dX2V1.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
import{d as $,A as G,h as E,i as K,u as e,c as U,s as J,b as m,f as w,n as A,a as D,L as Q,S as x,j as I,k as X}from"./index-Dab5zmmn.js";const Z=()=>matchMedia("(prefers-reduced-motion: reduce)").matches;function T({to:n,run:l,format:i=w}){const[a,o]=$(0);return E(()=>{if(!l){o(0);return}if(Z()){o(n);return}let s=0;const t=performance.now(),p=1300,b=F=>{const h=Math.min(1,(F-t)/p);o(n*(1-Math.pow(1-h,3))),h<1&&(s=requestAnimationFrame(b))};return s=requestAnimationFrame(b),()=>cancelAnimationFrame(s)},[n,l]),e(x,{children:i(Math.round(a))})}const ee=n=>{if(n.every_seconds>=1){const l=n.every_seconds;return l<60?`one download every ${l.toFixed(l<10?1:0)} seconds`:l<3600?`one download every ${Math.round(l/60)} minutes`:`one download every ${Math.round(l/3600)} hours`}return n.per_minute>=1e3?`${m(n.per_minute)} downloads every minute`:`${Math.round(n.per_minute)} downloads every minute`},W=n=>n.split("/").slice(1).join("/")||n,S=n=>n.rank<=10?"top 10":n.rank<=100?"top 100":n.rank<=1e3?"top 1,000":n.top_pct==null||n.top_pct>50?null:`top ${n.top_pct<1?n.top_pct.toFixed(1):Math.ceil(n.top_pct)}%`,O=n=>{const l=new Date(n.period.to.slice(0,7)+"-01T00:00:00Z"),i=new Map(n.months.map(a=>[a.month.slice(0,7),a.downloads]));return Array.from({length:12},(a,o)=>{const t=new Date(Date.UTC(l.getUTCFullYear(),l.getUTCMonth()-12+o,1)).toISOString().slice(0,7);return{month:t,downloads:i.get(t)??0}})},B=n=>`${I(n.period.from,{month:"short",year:"numeric"})} – ${I(n.period.to,{month:"short",year:"numeric"})}`;function N({values:n,highlight:l,light:i}){const a=Math.max(...n,1);return e("div",{class:`w-bars${i?" light":""}`,"aria-hidden":"true",children:n.map((o,s)=>e("span",{class:s===l?"hi":"",style:{height:`${Math.max(3,o/a*100)}%`}},s))})}function j(n,l){const i=t=>l===t,a=n.weeks.map(t=>t.downloads),o=n.best_week?n.weeks.findIndex(t=>t.week_of===n.best_week.week_of):-1;return[{key:"intro",tone:"yellow",body:e(x,{children:[e("div",{class:"w-kicker",children:"Model Pulse Wrapped"}),e("div",{class:"w-logo",children:e(U,{size:88})}),e("h2",{class:"w-title",children:[e("span",{class:"w-name",children:n.author}),e("br",{}),"on the Hub"]}),e("p",{class:"w-sub",children:"Your last 12 months, in six cards."}),e("p",{class:"w-mono",children:B(n)})]})},{key:"downloads",tone:"blue",body:e(x,{children:[e("div",{class:"w-kicker",children:"Your models were downloaded"}),e("div",{class:"w-big",children:e(T,{to:n.downloads,run:i(1)})}),e("p",{class:"w-sub",children:["times. That's ",ee(n),"."]}),e(N,{values:O(n).map(t=>t.downloads),light:!0}),e("p",{class:"w-mono",children:"downloads by month"})]})},{key:"top",tone:"paper",body:n.top_model?e(x,{children:[e("div",{class:"w-kicker",children:"Your #1 model this year"}),e("h2",{class:"w-model",children:e("span",{children:W(n.top_model.id)})}),e("div",{class:"w-big sm",children:[e(T,{to:n.top_model.downloads,run:i(2),format:m})," ",e("small",{children:"downloads"})]}),e("p",{class:"w-sub",children:[Math.round(n.top_model.share*100),"% of everything you served",n.top_model.task?`, as ${n.top_model.task.replace(/-/g," ")}`:"","."]}),n.top_models.length>1&&e("ol",{class:"w-list",start:2,children:n.top_models.slice(1,5).map(t=>e("li",{children:[e("span",{children:W(t.id)}),e("b",{children:m(t.downloads)})]},t.id))})]}):e("p",{class:"w-sub",children:"No single model stood out this year."})},{key:"week",tone:"orange",body:n.best_week?e(x,{children:[e("div",{class:"w-kicker",children:"Your biggest week"}),e("h2",{class:"w-title sm",children:["Week of ",I(n.best_week.week_of,{month:"long",day:"numeric",year:"numeric"})]}),e("div",{class:"w-big",children:e(T,{to:n.best_week.downloads,run:i(3)})}),e("p",{class:"w-sub",children:"downloads in seven days."}),e(N,{values:a,highlight:o})]}):e("p",{class:"w-sub",children:"Not enough weeks of data yet."})},{key:"ripple",tone:"green",body:n.ripple.models>0?e(x,{children:[e("div",{class:"w-kicker",children:"Your ripple effect"}),e("div",{class:"w-big",children:e(T,{to:n.ripple.models,run:i(4)})}),e("p",{class:"w-sub",children:["models by other people build on yours. Together they were downloaded ",e("b",{children:m(n.ripple.downloads_30d)})," times last month."]}),n.ripple.top&&e("p",{class:"w-mono",children:["the biggest: ",n.ripple.top.id," (",n.ripple.top.relation,")"]})]}):e(x,{children:[e("div",{class:"w-kicker",children:"Your ripple effect"}),e("h2",{class:"w-title sm",children:"No derivatives yet."}),e("p",{class:"w-sub",children:["When someone quantizes or fine-tunes one of your models, it shows up here. You published ",e("b",{children:n.models_new})," new model",n.models_new===1?"":"s"," this year; one of them could be next."]})]})},{key:"rank",tone:"red",body:e(x,{children:[e("div",{class:"w-kicker",children:["Among ",w(n.authors_ranked)," publishers on the Hub"]}),e("div",{class:"w-big xl",children:["#",e(T,{to:n.rank,run:i(5)})]}),e("p",{class:"w-sub",children:S(n)?n.rank<=1e3?`A ${S(n)} publisher by downloads this year.`:`That's the ${S(n)} by downloads.`:"by downloads this year."}),e("div",{class:"w-chips",children:[e("span",{children:["+",w(n.likes_gained)," likes"]}),e("span",{children:[w(n.models_new)," new models"]}),e("span",{children:[w(n.models_total)," models in total"]})]})]})}]}async function ne(n){await Promise.all(["600 80px 'Fredoka'","500 20px 'IBM Plex Mono'","400 20px 'Source Sans 3'"].map(c=>document.fonts.load(c)));const l=1080,i=1350,a=document.createElement("canvas");a.width=l,a.height=i;const o=a.getContext("2d"),s="#1B1B1F",t="#ECE9E2",p="#FBFAF5",b="#FFD21E",F=(c,u,k,f,v)=>{o.fillStyle=s,o.beginPath(),o.roundRect(c+8,u+8,k,f,26),o.fill(),o.fillStyle=v,o.beginPath(),o.roundRect(c,u,k,f,26),o.fill(),o.lineWidth=4,o.strokeStyle=s,o.stroke()},h=(c,u,k,f,v=s,_)=>{if(o.font=f,o.fillStyle=v,_&&o.measureText(c).width>_){for(;c.length>3&&o.measureText(c+"…").width>_;)c=c.slice(0,-1);c+="…"}o.fillText(c,u,k)};o.fillStyle=t,o.fillRect(0,0,l,i),o.fillStyle=s,o.beginPath(),o.roundRect(68,68,76,76,20),o.fill(),o.fillStyle=b,o.beginPath(),o.roundRect(62,62,72,72,18),o.fill(),o.lineWidth=6,o.strokeStyle=s,o.stroke(),o.beginPath(),o.lineWidth=6,o.lineJoin="round",o.lineCap="round",o.moveTo(74,100),o.lineTo(87,100),o.lineTo(94,81),o.lineTo(106,117),o.lineTo(113,100),o.lineTo(124,100),o.stroke(),h("Model Pulse Wrapped",156,116,"600 44px 'Fredoka'"),h(B(n),62,196,"500 26px 'IBM Plex Mono'","#6E6C66"),o.font="600 92px 'Fredoka'";const C=n.author.length>20?n.author.slice(0,19)+"…":n.author,P=Math.min(l-124,o.measureText(C).width+44);o.fillStyle=b,o.beginPath(),o.roundRect(54,222,P,120,18),o.fill(),h(C,76,314,"600 92px 'Fredoka'",s,l-170),F(62,386,l-124,250,"#3B6FF5"),h("downloads in 12 months",100,446,"500 28px 'IBM Plex Mono'","#fff"),h(w(n.downloads),96,572,"600 118px 'Fredoka'","#fff",l-200);const M=[["#1 model",n.top_model?W(n.top_model.id):"–",n.top_model?`${m(n.top_model.downloads)} downloads`:""],["biggest week",n.best_week?m(n.best_week.downloads):"–",n.best_week?`week of ${I(n.best_week.week_of,{month:"short",day:"numeric"})}`:""],["publisher rank",`#${w(n.rank)}`,S(n)??`of ${m(n.authors_ranked)}`],n.ripple.models>0?["built on yours",w(n.ripple.models),"models by others"]:["published",w(n.models_new),n.models_new===1?"new model this year":"new models this year"]],g=(l-124-32)/2,R=230;M.forEach(([c,u,k],f)=>{const v=62+f%2*(g+32),_=676+Math.floor(f/2)*(R+32);F(v,_,g,R,f===0?b:p),h(c,v+30,_+54,"500 24px 'IBM Plex Mono'","#6E6C66"),h(u,v+28,_+136,`600 ${u.length>14?46:70}px 'Fredoka'`,s,g-56),h(k,v+30,_+190,"400 26px 'Source Sans 3'","#3D3D45",g-60)});const y=O(n).map(c=>c.downloads),r=Math.max(...y,1),d=62,q=1196,V=l-124,L=64,H=6,Y=(V-H*(y.length-1))/Math.max(1,y.length);return y.forEach((c,u)=>{const k=Math.max(4,c/r*L),f=d+u*(Y+H);o.fillStyle=u===y.indexOf(r)?b:p,o.beginPath(),o.roundRect(f,q+L-k,Y,k,4),o.fill(),o.lineWidth=3,o.strokeStyle=s,o.stroke()}),h("modelpulse.ifsp.dev",62,i-40,"500 24px 'IBM Plex Mono'","#6E6C66"),new Promise(c=>a.toBlob(u=>c(u),"image/png"))}function z({initial:n}){const[l,i]=$(n??""),[a,o]=$(null);E(()=>{X.leaderboards().then(o).catch(()=>{})},[]);const s=t=>{const p=t.trim().replace(/^https?:\/\/huggingface\.co\//,"").split("/")[0];p&&A({view:"wrapped",author:p})};return e("div",{class:"wrap w-entry",children:[e("h1",{children:[e(U,{size:72}),"Model Pulse ",e("span",{class:"hl",children:"Wrapped"})]}),e("p",{class:"lede",children:"Your last 12 months on the Hugging Face Hub, in six cards: total downloads, your #1 model, your biggest week, the models built on yours, and where you rank."}),e("form",{class:"w-form",onSubmit:t=>{t.preventDefault(),s(l)},children:[e("div",{class:"search big",children:e("input",{value:l,onInput:t=>i(t.target.value),placeholder:"Username or org, e.g. Qwen","aria-label":"Username or organization",autoFocus:!0,spellcheck:!1})}),e("button",{class:"btn primary",type:"submit",children:"Get my Wrapped"})]}),a&&e("div",{class:"examples",children:[e("span",{class:"muted",children:"or try"}),a.authors_7d.slice(0,10).map(t=>e("a",{class:"chip",href:D({view:"wrapped",author:t.author}),onClick:p=>{p.preventDefault(),s(t.author)},children:t.author},t.author))]})]})}function le({author:n}){const[l,i]=$(null),[a,o]=$(null),[s,t]=$(0),[p,b]=$(!1),F=G(null);E(()=>{document.title=n?`${n}'s last 12 months on Hugging Face · Model Pulse Wrapped`:"Model Pulse Wrapped: your last 12 months on Hugging Face",i(null),o(null),t(0),n&&fetch(`${K}/api/wrapped/${encodeURIComponent(n)}`).then(async r=>{const d=await r.json();if(!r.ok)throw new Error(d.detail||"Something went wrong");return d}).then(i).catch(r=>o(r.message))},[n]);const h=l?j(l,s).length+1:0,C=()=>t(r=>Math.min(h-1,r+1)),P=()=>t(r=>Math.max(0,r-1));if(E(()=>{if(!l)return;const r=d=>{(d.key==="ArrowRight"||d.key===" ")&&(d.preventDefault(),C()),d.key==="ArrowLeft"&&P()};return addEventListener("keydown",r),()=>removeEventListener("keydown",r)},[l,h]),!n)return e(z,{});if(a)return e("div",{class:"wrap w-entry",children:[e("h1",{class:"w-err",children:["No Wrapped for ",n," yet"]}),e("p",{class:"lede",children:a}),e(z,{initial:""})]});if(!l)return e("div",{class:"wrap w-loading",children:[e(U,{size:64}),e("p",{children:["Crunching 12 months of downloads for ",e("b",{children:n}),"…"]})]});const M=j(l,s),g=J({view:"wrapped",author:l.author}),R=`My last 12 months on the Hugging Face Hub: ${m(l.downloads)} downloads${S(l)&&(l.rank<=1e3||(l.top_pct??100)<=10)?`, ${S(l)} of publishers`:""}. Get your Model Pulse Wrapped:`,y=s===M.length;return e("div",{class:"wrap w-page",children:e("div",{class:"w-stage",ref:F,children:[e("div",{class:"w-progress","aria-hidden":"true",children:Array.from({length:h},(r,d)=>e("span",{class:d<s?"done":d===s?"now":""},d))}),y?e("div",{class:"w-card tone-paper w-summary",children:[e("div",{class:"w-kicker",children:B(l)}),e("h2",{class:"w-title sm",children:e("span",{class:"w-name",children:l.author})}),e("div",{class:"w-grid",children:[e("div",{class:"t blue",children:[e("span",{children:"downloads"}),e("b",{children:m(l.downloads)})]}),e("div",{class:"t",children:[e("span",{children:"#1 model"}),e("b",{class:"s",children:l.top_model?W(l.top_model.id):"–"})]}),e("div",{class:"t",children:[e("span",{children:"biggest week"}),e("b",{children:l.best_week?m(l.best_week.downloads):"–"})]}),e("div",{class:"t yellow",children:[e("span",{children:"publisher rank"}),e("b",{children:["#",w(l.rank)]})]}),l.ripple.models>0?e("div",{class:"t",children:[e("span",{children:"built on yours"}),e("b",{children:w(l.ripple.models)})]}):e("div",{class:"t",children:[e("span",{children:"new models"}),e("b",{children:w(l.models_new)})]}),e("div",{class:"t",children:[e("span",{children:"likes gained"}),e("b",{children:["+",m(l.likes_gained)]})]})]}),e("div",{class:"w-actions",children:[e("button",{class:"btn primary",disabled:p,onClick:async()=>{b(!0);try{const r=await ne(l),d=document.createElement("a");d.href=URL.createObjectURL(r),d.download=`${l.author}-model-pulse-wrapped.png`,d.click(),setTimeout(()=>URL.revokeObjectURL(d.href),2e3)}finally{b(!1)}},children:p?"Drawing…":"Download image"}),e("a",{class:"btn",target:"_blank",rel:"noopener",href:`https://x.com/intent/post?text=${encodeURIComponent(R)}&url=${encodeURIComponent(g)}`,children:"Post on X"}),e("a",{class:"btn",target:"_blank",rel:"noopener",href:`https://www.linkedin.com/sharing/share-offsite/?url=${encodeURIComponent(g)}`,children:"LinkedIn"}),e("button",{class:"btn",onClick:()=>{var r;return(r=navigator.clipboard)==null?void 0:r.writeText(g)},children:"Copy link"})]}),e("div",{class:"w-more",children:[e("a",{href:D({author:l.author}),onClick:r=>{r.preventDefault(),A({author:l.author})},children:["See ",l.author,"'s models"]}),e("a",{href:D({view:"wrapped"}),onClick:r=>{r.preventDefault(),A({view:"wrapped"})},children:"Try another name"})]}),e("div",{class:"w-like",children:e(Q,{})})]},"summary"):e("div",{class:`w-card tone-${M[s].tone}`,"aria-live":"polite",children:[M[s].body,e("button",{class:"w-tap left","aria-label":"Previous card",onClick:P}),e("button",{class:"w-tap right","aria-label":"Next card",onClick:C})]},M[s].key),e("div",{class:"w-nav",children:[e("button",{class:"btn",onClick:P,disabled:s===0,children:"Back"}),e("span",{class:"w-mono",children:[s+1," / ",h]}),e("button",{class:"btn primary",onClick:C,disabled:y,children:s===M.length-1?"Summary":"Next"})]})]})})}export{le as Wrapped};
|
assets/index-CZo0vfhu.js
DELETED
|
The diff for this file is too large to render.
See raw diff
|
|
|
assets/index-Dab5zmmn.js
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
assets/{index-k_Rzta8P.css → index-qVKJDz79.css}
RENAMED
|
@@ -1 +1 @@
|
|
| 1 |
-
.uplot,.uplot *,.uplot *:before,.uplot *:after{box-sizing:border-box}.uplot{font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";line-height:1.5;width:min-content}.u-title{text-align:center;font-size:18px;font-weight:700}.u-wrap{position:relative;-webkit-user-select:none;user-select:none}.u-over,.u-under{position:absolute}.u-under{overflow:hidden}.uplot canvas{display:block;position:relative;width:100%;height:100%}.u-axis{position:absolute}.u-legend{font-size:14px;margin:auto;text-align:center}.u-inline{display:block}.u-inline *{display:inline-block}.u-inline tr{margin-right:16px}.u-legend th{font-weight:600}.u-legend th>*{vertical-align:middle;display:inline-block}.u-legend .u-marker{width:1em;height:1em;margin-right:4px;background-clip:padding-box!important}.u-inline.u-live th:after{content:":";vertical-align:middle}.u-inline:not(.u-live) .u-value{display:none}.u-series>*{padding:4px}.u-series th{cursor:pointer}.u-legend .u-off>*{opacity:.3}.u-select{background:#00000012;position:absolute;pointer-events:none}.u-cursor-x,.u-cursor-y{position:absolute;left:0;top:0;pointer-events:none;will-change:transform}.u-hz .u-cursor-x,.u-vt .u-cursor-y{height:100%;border-right:1px dashed #607D8B}.u-hz .u-cursor-y,.u-vt .u-cursor-x{width:100%;border-bottom:1px dashed #607D8B}.u-cursor-pt{position:absolute;top:0;left:0;border-radius:50%;border:0 solid;pointer-events:none;will-change:transform;background-clip:padding-box!important}.u-axis.u-off,.u-select.u-off,.u-cursor-x.u-off,.u-cursor-y.u-off,.u-cursor-pt.u-off{display:none}:root{--paper: #ece9e2;--surface: #fbfaf5;--surface-2: #f4f1e8;--ink: #1b1b1f;--ink-2: #3d3d45;--muted: #6e6c66;--rule: #d9d5ca;--rule-2: #e9e5da;--signal: #3b6ff5;--signal-soft: rgba(59, 111, 245, .14);--mark: #ffd21e;--mark-ink: #1b1b1f;--up: #1f8a4c;--down: #d23b3b;--c1: #3b6ff5;--c2: #ff8a1f;--c3: #2f8f5b;--c4: #a35bf0;--c5: #e5484d;--line: 2.5px solid var(--ink);--shadow: 5px 5px 0 var(--ink);--shadow-sm: 3px 3px 0 var(--ink);--radius: 16px;--font: "Source Sans 3", "Source Sans Pro", system-ui, -apple-system, "Segoe UI", sans-serif;--font-cond: "Fredoka", "Source Sans 3", system-ui, sans-serif;--font-display: "Fredoka", "Source Sans 3", system-ui, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace;--step--1: .8125rem;--step-0: 1rem;--step-1: 1.1875rem;--step-2: 1.625rem;--step-3: 2.375rem;--step-4: clamp(2.75rem, 7.5vw, 5.75rem);--gutter: clamp(16px, 4vw, 48px);--maxw: 1200px;color-scheme:light}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--paper);color:var(--ink);font:400 var(--step-0)/1.55 var(--font);font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration-color:color-mix(in srgb,var(--ink) 30%,transparent);text-underline-offset:3px}a:hover{text-decoration-color:currentColor}button{font:inherit;color:inherit}:focus-visible{outline:3px solid var(--signal);outline-offset:2px;border-radius:6px}.wrap{max-width:var(--maxw);margin:0 auto;padding-inline:var(--gutter)}.top{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--paper) 90%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.top .wrap{display:flex;align-items:center;gap:18px;height:72px}.brand{display:flex;align-items:center;gap:10px;text-decoration:none;white-space:nowrap;font:600 1.375rem/1 var(--font-display);letter-spacing:-.01em}.brand svg{flex:none;filter:drop-shadow(2px 2px 0 var(--ink))}.top nav{display:flex;gap:8px;margin-left:auto;align-items:center}.top nav a,.ghost{padding:7px 14px;border-radius:999px;text-decoration:none;color:var(--ink);font:500 var(--step--1) var(--font-mono);border:0;background:none;cursor:pointer;letter-spacing:.02em}.top nav a:hover,.ghost:hover{background:var(--surface);box-shadow:inset 0 0 0 2px var(--ink)}.top nav a.nav-btn{padding:7px 13px;border:var(--line);border-radius:12px;background:var(--surface);font-weight:600;box-shadow:var(--shadow-sm)}.top nav a.nav-btn:hover{background:var(--surface);box-shadow:4px 4px 0 var(--ink)}.top nav a.nav-btn[aria-current=page]{background:var(--mark)}.top nav a.like,.like{display:inline-flex;align-items:center;gap:8px;padding:8px 16px;border-radius:999px;background:var(--surface);color:var(--ink);text-decoration:none;font:600 var(--step--1) var(--font-mono);border:var(--line);box-shadow:var(--shadow-sm);transition:transform .08s,box-shadow .08s}.top nav a.like:hover,.like:hover{transform:translate(-1px,-1px);box-shadow:4px 4px 0 var(--ink);background:var(--mark)}.like:active{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--ink)}.like svg{color:#ff4d6d}.search{position:relative;flex:1;max-width:460px}.search input{width:100%;height:44px;padding:0 14px 0 40px;border-radius:12px;border:var(--line);background:var(--surface);color:var(--ink);font:inherit;box-shadow:var(--shadow-sm)}.search input::placeholder{color:var(--muted)}.search input:focus{outline:none;background:#fff;box-shadow:4px 4px 0 var(--signal);border-color:var(--ink)}.search .icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--ink);pointer-events:none}.search kbd{position:absolute;right:10px;top:50%;transform:translateY(-50%);font:500 11px var(--font-mono);color:var(--ink-2);border:1.5px solid var(--ink);border-radius:6px;padding:1px 6px;background:var(--paper)}.search.big input{height:64px;font-size:var(--step-1);padding-left:52px;border-radius:16px;box-shadow:var(--shadow)}.search.big .icon{left:20px}.results{position:absolute;left:0;right:0;top:calc(100% + 10px);z-index:30;list-style:none;margin:0;padding:6px;background:var(--surface);border:var(--line);border-radius:14px;box-shadow:var(--shadow);max-height:60vh;overflow:auto}.results li{display:flex;justify-content:space-between;gap:12px;padding:9px 10px;border-radius:9px;cursor:pointer}.results li[aria-selected=true]{background:var(--mark)}.results .rid{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.results .rid b{font-weight:700}.results .rmeta{color:var(--muted);white-space:nowrap;font:400 12px var(--font-mono)}.results li[aria-selected=true] .rmeta{color:var(--ink-2)}.results{overflow-x:hidden}.chip{max-width:100%;overflow:hidden;text-overflow:ellipsis}.search{container-type:inline-size}@container (max-width: 520px){.results li{flex-direction:column;align-items:flex-start;gap:2px}.results .rid{white-space:normal;overflow-wrap:anywhere;line-height:1.3}.results .rmeta{font-size:11px}}@media(max-width:640px){.top .search .results{position:fixed;left:12px;right:12px;top:70px;max-height:70vh}}.muted{color:var(--muted)}.up{color:var(--up)}.down{color:var(--down)}h1,h2,h3{margin:0;line-height:1.1}h2{font:600 var(--step-2)/1.1 var(--font-display);letter-spacing:-.01em}.section{padding-block:40px}.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:18px}.section-head p{margin:6px 0 0;color:var(--muted);max-width:62ch}.card{background:var(--surface);border:var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:clamp(16px,2.4vw,28px)}.seg{display:inline-flex;padding:3px;gap:2px;background:var(--surface);border:var(--line);border-radius:999px;flex-wrap:wrap;box-shadow:var(--shadow-sm)}.seg button{border:0;background:none;padding:6px 13px;border-radius:999px;cursor:pointer;color:var(--ink);font:500 12.5px var(--font-mono);letter-spacing:.02em}.seg button:hover{background:var(--rule-2)}.seg button[aria-pressed=true]{background:var(--mark);box-shadow:inset 0 0 0 2px var(--ink);font-weight:600}.btn{display:inline-flex;align-items:center;gap:8px;padding:9px 15px;border-radius:12px;cursor:pointer;border:var(--line);background:var(--surface);font:600 var(--step--1) var(--font-mono);text-decoration:none;box-shadow:var(--shadow-sm);transition:transform .08s,box-shadow .08s}.btn:hover{transform:translate(-1px,-1px);box-shadow:4px 4px 0 var(--ink)}.btn:active{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--ink)}.btn:disabled{opacity:.5;cursor:default;transform:none}.btn.primary{background:var(--mark)}.chip{display:inline-flex;align-items:center;gap:6px;padding:3px 11px;border-radius:999px;border:2px solid var(--ink);background:var(--surface);color:var(--ink);font:500 12.5px var(--font-mono);white-space:nowrap;text-decoration:none}a.chip:hover{background:var(--mark)}.err{padding:80px 0;max-width:60ch}.err h1{font:600 var(--step-3) var(--font-display);margin-bottom:12px}.hero{padding-block:28px 8px}.crumbs{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:18px}.model-name{font:600 var(--step-3)/1.15 var(--font-display);word-break:break-word;letter-spacing:-.01em}.model-name .org{color:var(--muted);font-weight:500}.model-name .hl{background:var(--mark);padding:0 .18em;border-radius:6px;box-decoration-break:clone;-webkit-box-decoration-break:clone}.model-name a{text-decoration:none}.stats{margin-top:24px;display:grid;grid-template-columns:auto repeat(3,minmax(0,1fr))}.stats>.fig{padding:18px 22px;border-left:2px solid var(--ink)}.stats>.fig:first-child{border-left:0}.fig-main .num{font:600 clamp(2.5rem,5.6vw,4.75rem)/.95 var(--font-display);letter-spacing:-.02em;white-space:nowrap}.fig .label{color:var(--muted);font:400 12.5px/1.4 var(--font-mono);margin-top:8px}.fig .val{font:600 clamp(1.5rem,2.6vw,2.125rem)/1 var(--font-display)}.fig .val small{font:700 var(--step--1) var(--font-mono);margin-left:6px;vertical-align:middle}.fig-main{display:flex;flex-direction:column;justify-content:flex-end}.stats .fig:not(.fig-main){display:flex;flex-direction:column;justify-content:flex-end}@media(max-width:860px){.stats{grid-template-columns:repeat(3,minmax(0,1fr))}.stats>.fig-main{grid-column:1 / -1;border-left:0;border-bottom:2px solid var(--ink)}.stats>.fig:nth-child(2){border-left:0}}@media(max-width:520px){.stats>.fig{padding:14px 12px}}.chart-card{margin-top:26px}.chart-bar{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center;justify-content:space-between;margin-bottom:14px}.chart-bar .left,.chart-bar .right{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.chart-box{position:relative}.chart-box .u-wrap{animation:draw 1.1s cubic-bezier(.3,.7,.2,1) both}@keyframes draw{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}@media(prefers-reduced-motion:reduce){.chart-box .u-wrap{animation:none}.btn,.like{transition:none}}.chart-note{color:var(--muted);font:400 12.5px/1.5 var(--font-mono);margin:12px 0 0}.tip{position:absolute;pointer-events:none;z-index:5;background:var(--surface);color:var(--ink);border:var(--line);border-radius:12px;padding:9px 12px;font:500 12.5px var(--font-mono);min-width:160px;transform:translate(-50%,-100%);box-shadow:var(--shadow-sm);white-space:nowrap}.tip .d{color:var(--muted);margin-bottom:4px}.tip .r{display:flex;justify-content:space-between;gap:14px;align-items:center}.tip .sw{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:6px;border:1.5px solid var(--ink)}.legend{display:flex;flex-wrap:wrap;gap:8px}.legend .chip .sw{width:11px;height:11px;border-radius:3px;border:1.5px solid var(--ink)}.legend .chip button{border:0;background:none;padding:0 0 0 2px;cursor:pointer;color:var(--ink);line-height:1}.add-compare{position:relative}.add-compare .search{width:min(440px,calc(100vw - 32px));position:absolute;top:calc(100% + 10px);z-index:25}.add-compare.align-left .search{left:0}.add-compare.align-right .search{right:0}@media(max-width:640px){.add-compare .search{position:fixed;left:12px;right:12px;width:auto;top:76px}}.uplot{font-family:var(--font-mono)!important}.u-select{background:#ffd21e59!important}.timeline{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:14px}.timeline li{padding:14px 16px;background:var(--surface);border:var(--line);border-radius:14px;box-shadow:var(--shadow-sm)}.timeline li:not(.pending){background:var(--mark)}.timeline .m{font:600 var(--step-2)/1 var(--font-display)}.timeline .when{color:var(--ink-2);font:400 12.5px var(--font-mono);margin-top:6px}.timeline li.pending{box-shadow:none;border-style:dashed;background:transparent}.timeline li.pending .m,.timeline li.pending .when{color:var(--muted)}.family-top{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.6fr);gap:28px;align-items:start}.family-top>*{min-width:0}@media(max-width:820px){.family-top{grid-template-columns:1fr}}.family-sum .big{font:600 var(--step-3)/1 var(--font-display)}.family-sum p{color:var(--ink-2);margin:10px 0 18px}.rel{display:flex;height:16px;border-radius:8px;overflow:hidden;background:var(--rule-2);margin-bottom:14px;border:2px solid var(--ink)}.rel span{display:block;height:100%;border-right:2px solid var(--ink)}.rel span:last-child{border-right:0}.rel-legend{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 16px;font:400 12.5px var(--font-mono)}.rel-legend div{display:flex;justify-content:space-between;gap:8px}.rel-legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;border:1.5px solid var(--ink)}.table-scroll{overflow-x:auto}table.list{width:100%;border-collapse:collapse;min-width:560px}table.list th{text-align:right;font:500 11.5px var(--font-mono);color:var(--muted);padding:8px 10px;border-bottom:2px solid var(--ink);white-space:nowrap;letter-spacing:.03em}table.list td{text-align:right;padding:11px 10px;border-bottom:1px solid var(--rule);white-space:nowrap;font-family:var(--font-mono);font-size:13.5px}table.list th:first-child,table.list td:first-child{text-align:left;padding-left:0}table.list td.name{max-width:400px;overflow:hidden;text-overflow:ellipsis;font-family:var(--font);font-size:var(--step-0)}table.list td.name a{text-decoration:none;font-weight:600}table.list td.name a:hover{background:var(--mark)}table.list td.name .sub{display:block;color:var(--muted);font:400 12px var(--font-mono)}table.list tr:last-child td{border-bottom:0}table.list tr:hover td{background:var(--surface-2)}.rank{display:inline-grid;place-items:center;width:26px;height:26px;border:2px solid var(--ink);border-radius:50%;font:600 11.5px var(--font-mono);margin-right:10px;background:var(--surface)}tr:nth-child(-n+3) .rank{background:var(--mark)}.share-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:22px}.share-grid>div{background:var(--surface);border:var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px}.share-grid>div.cta{background:var(--mark)}.share-grid h3{font:600 var(--step-1) var(--font-display);margin-bottom:6px}.share-grid p{margin:0 0 14px;color:var(--ink-2)}.code{display:flex;gap:8px;align-items:stretch;background:var(--paper);border:2px solid var(--ink);border-radius:12px;padding:4px 4px 4px 12px}.code code{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:12.5px/38px var(--font-mono);color:var(--ink-2)}.code .btn{box-shadow:none}.badge-preview{display:flex;gap:12px;flex-wrap:wrap;align-items:center;margin-bottom:14px;min-height:22px}.badge-opts{margin-bottom:14px}.home-hero{padding-block:clamp(28px,6vw,72px) 8px;text-align:center;position:relative}.home-hero h1{font:600 var(--step-4)/1 var(--font-display);letter-spacing:-.02em;display:inline-flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:.18em}.home-hero h1 .hl{background:var(--mark);padding:.02em .22em .08em;border-radius:10px}.home-hero h1 svg{width:.95em;height:.95em;filter:drop-shadow(4px 4px 0 var(--ink))}.home-hero .lede{font-size:var(--step-1);color:var(--ink-2);max-width:58ch;margin:22px auto 10px}.home-hero .meta{font:400 12.5px var(--font-mono);color:var(--muted);margin-bottom:26px}.home-hero .search{max-width:660px;margin:0 auto;text-align:left}.sticker{position:absolute;right:max(2%,calc(50% - 560px));top:clamp(10px,3vw,40px);width:112px;height:112px;display:grid;place-items:center;text-align:center;transform:rotate(10deg);color:#fff;font:600 15px/1.05 var(--font-display);filter:drop-shadow(3px 3px 0 var(--ink))}.sticker svg{position:absolute;top:0;right:0;bottom:0;left:0}.sticker span{position:relative}@media(max-width:860px){.sticker{display:none}}.examples{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px;align-items:center;justify-content:center}.examples .muted{font:400 12.5px var(--font-mono)}.hub-chart{padding-block:34px 8px}.hub-chart h2{margin-bottom:4px}.lb-tabs{margin-bottom:18px}.foot{padding-block:40px 60px;color:var(--muted);font:400 12.5px/1.6 var(--font-mono)}.foot .maker{color:var(--ink)}.foot .maker a{font-weight:600}.foot .wrap{display:flex;flex-wrap:wrap;gap:12px 28px;justify-content:space-between;border-top:2px solid var(--ink);padding-top:24px}.skeleton{height:360px;border-radius:12px;background:linear-gradient(90deg,var(--rule-2),var(--surface),var(--rule-2));background-size:200% 100%;animation:sk 1.4s linear infinite}@keyframes sk{to{background-position:-200% 0}}@media(max-width:720px){.top .wrap{gap:10px;height:64px}.brand span{display:none}.top nav a.hide-sm{display:none}.top nav{gap:6px}.top nav a.nav-btn{padding:5px 9px;font-size:12px;box-shadow:2px 2px 0 var(--ink)}.like .t,.search kbd{display:none}}.like-fake{position:relative;cursor:help}.like-fake:hover,.like-fake:active{transform:none;box-shadow:var(--shadow-sm)}.like-tip{position:absolute;left:0;bottom:calc(100% + 14px);width:min(290px,80vw);z-index:40;padding:12px 14px;background:var(--surface);border:var(--line);border-radius:12px;box-shadow:var(--shadow-sm);font:400 var(--step--1)/1.45 var(--font);color:var(--ink);white-space:normal;opacity:0;visibility:hidden;transform:translateY(4px);transition:opacity .14s,transform .14s,visibility .14s}.like-tip:after{content:"";position:absolute;left:26px;bottom:-9px;width:14px;height:14px;background:var(--surface);border-right:var(--line);border-bottom:var(--line);transform:rotate(45deg)}.like-fake:hover .like-tip,.like-fake:focus .like-tip,.like-fake:focus-within .like-tip{opacity:1;visibility:visible;transform:none}.like-tip code{font:500 12px var(--font-mono);background:var(--paper);padding:1px 5px;border-radius:5px}.hf-like{display:inline-flex;align-items:center;gap:4px;padding:1px 8px;border:1.5px solid #d1d5db;border-radius:6px;background:#fff;font:500 12px var(--font);color:#374151;white-space:nowrap;vertical-align:1px}@media(prefers-reduced-motion:reduce){.like-tip{transition:none}}.report{max-width:820px;padding-block:36px 24px;font-size:1.0625rem;line-height:1.7}.report h1{font:600 clamp(2rem,4.6vw,3rem)/1.08 var(--font-display);letter-spacing:-.02em;margin-bottom:14px}.report .byline{font:400 13px var(--font-mono);color:var(--muted);margin:0 0 28px}.report h2{font:600 var(--step-2)/1.15 var(--font-display);margin:52px 0 14px}.report p,.report ul{margin:0 0 16px}.report ul{padding-left:1.2em}.report li{margin-bottom:6px}.report a{text-decoration-color:var(--mark);text-decoration-thickness:3px}.report a:hover{background:var(--mark)}.report strong{font-weight:700}.report code{font:500 .85em var(--font-mono);background:var(--surface);border:1.5px solid var(--rule);padding:1px 5px;border-radius:5px}.report img{display:block;width:100%;height:auto;margin:22px 0 26px;border-radius:10px}.report .table-scroll{margin:8px 0 22px;background:var(--surface);border:var(--line);border-radius:14px;box-shadow:var(--shadow-sm);padding:6px 16px}.report table.list{min-width:520px;font-size:14px}.report table.list th{text-align:right}.report table.list th:first-child{text-align:left}.report table.list td{font-size:13.5px}.report table.list td:first-child{font-family:var(--font);font-size:14.5px;white-space:normal}.tip .r span{max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.legend .chip{max-width:100%}.legend .chip a{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-decoration:none}.legend .chip button{flex:none}.err h1{overflow-wrap:anywhere}.chip-hot{background:var(--mark)}.w-entry{padding-block:clamp(30px,6vw,64px) 40px;text-align:center}.w-entry h1{font:600 clamp(2.4rem,6.4vw,4.6rem)/1 var(--font-display);letter-spacing:-.02em;display:inline-flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:.2em}.w-entry h1 .hl{background:var(--mark);padding:.02em .22em .08em;border-radius:10px}.w-entry h1 svg{filter:drop-shadow(4px 4px 0 var(--ink))}.w-entry .lede{max-width:58ch;margin:18px auto 26px;color:var(--ink-2);font-size:var(--step-1)}.w-err{font:600 var(--step-3) var(--font-display);overflow-wrap:anywhere}.w-form{display:flex;gap:12px;max-width:680px;margin:0 auto;align-items:stretch;flex-wrap:wrap}.w-form .search{flex:1 1 320px;max-width:none}.w-form .search.big input{padding-left:22px}.w-form .btn{font-size:var(--step-0);padding-inline:22px}.w-loading{padding-block:120px;text-align:center;display:grid;justify-items:center;gap:18px;font-size:var(--step-1)}.w-loading svg{animation:beat 1s ease-in-out infinite;filter:drop-shadow(4px 4px 0 var(--ink))}@keyframes beat{0%,to{transform:scale(1)}15%{transform:scale(1.12)}30%{transform:scale(.97)}}.w-page{padding-block:26px 40px}.w-stage{max-width:520px;margin:0 auto}.w-progress{display:flex;gap:6px;margin-bottom:14px}.w-progress span{flex:1;height:7px;border-radius:4px;border:2px solid var(--ink);background:var(--surface)}.w-progress .done{background:var(--ink)}.w-progress .now{background:var(--mark)}.w-card{position:relative;min-height:min(560px,66vh);padding:32px 30px 28px;border:3px solid var(--ink);border-radius:26px;box-shadow:8px 8px 0 var(--ink);display:flex;flex-direction:column;justify-content:center;gap:14px;overflow:hidden;animation:w-in .38s cubic-bezier(.2,.8,.2,1)}@keyframes w-in{0%{opacity:0;transform:translateY(14px) rotate(-1deg) scale(.98)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.w-card,.w-loading svg{animation:none}}.tone-yellow{background:var(--mark)}.tone-blue{background:#3b6ff5;color:#fff}.tone-paper{background:var(--surface)}.tone-orange{background:#ff8a1f}.tone-green{background:#2f8f5b;color:#fff}.tone-red{background:#e5484d;color:#fff}.w-kicker{font:600 13px var(--font-mono);letter-spacing:.04em;opacity:.85}.w-logo svg{filter:drop-shadow(5px 5px 0 var(--ink))}.w-title{font:600 clamp(2.2rem,7vw,3.4rem)/1.02 var(--font-display);letter-spacing:-.02em;overflow-wrap:anywhere}.w-title.sm{font-size:clamp(1.7rem,5vw,2.3rem)}.w-name{background:var(--surface);color:var(--ink);padding:0 .16em;border-radius:10px;box-decoration-break:clone;-webkit-box-decoration-break:clone;border:3px solid var(--ink)}.tone-paper .w-name{background:var(--mark)}.w-model{font:600 clamp(1.5rem,5vw,2.1rem)/1.15 var(--font-display);overflow-wrap:anywhere}.w-model span{background:var(--mark);padding:0 .18em;border-radius:8px;box-decoration-break:clone;-webkit-box-decoration-break:clone}.w-big{font:600 clamp(2.6rem,10vw,4.6rem)/1 var(--font-display);letter-spacing:-.03em;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.w-big.sm{font-size:clamp(2.2rem,8vw,3.4rem)}.w-big.xl{font-size:clamp(4rem,18vw,7.5rem)}.w-big small{font:500 var(--step-1) var(--font-display);letter-spacing:0}.w-sub{font-size:var(--step-1);line-height:1.4;margin:0;max-width:34ch}.w-mono{font:400 12.5px var(--font-mono);opacity:.8;margin:0;overflow-wrap:anywhere}.w-bars{display:flex;align-items:flex-end;gap:4px;height:110px;margin-top:8px}.w-bars span{flex:1;min-width:3px;background:var(--surface);border:2px solid var(--ink);border-radius:4px 4px 1px 1px}.w-bars span.hi{background:var(--mark)}.w-bars.light span{background:#ffffffe6}.tone-orange .w-bars span{background:var(--surface)}.w-list{margin:6px 0 0;padding:0;list-style:none;display:grid;gap:6px;counter-reset:n 1}.w-list li{display:flex;justify-content:space-between;gap:12px;padding:8px 12px;border:2px solid var(--ink);border-radius:10px;background:var(--paper);font-size:14px;counter-increment:n}.w-list li:before{content:"#" counter(n);font:600 12px var(--font-mono);margin-right:8px;color:var(--muted)}.w-list li span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.w-list li b{font-family:var(--font-mono);font-size:13px}.w-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}.w-chips span{background:var(--surface);color:var(--ink);border:2px solid var(--ink);border-radius:999px;padding:4px 12px;font:600 13px var(--font-mono)}.w-tap{position:absolute;top:0;bottom:0;width:34%;background:transparent;border:0;cursor:pointer;z-index:2}.w-tap.left{left:0;cursor:w-resize}.w-tap.right{right:0;width:66%;cursor:e-resize}.w-tap:focus-visible{outline:3px solid var(--signal);outline-offset:-6px}.w-nav{display:flex;align-items:center;justify-content:space-between;margin-top:22px;gap:12px}.w-summary{justify-content:flex-start;gap:16px}.w-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.w-grid .t{display:grid;gap:4px;padding:12px 14px;border:2.5px solid var(--ink);border-radius:14px;background:var(--paper);box-shadow:3px 3px 0 var(--ink);min-width:0}.w-grid .t span{font:500 11.5px var(--font-mono);color:var(--muted)}.w-grid .t b{font:600 1.6rem/1.05 var(--font-display);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.w-grid .t b.s{font-size:1.05rem;white-space:normal;overflow-wrap:anywhere}.w-grid .t.blue{background:#3b6ff5;color:#fff}.w-grid .t.blue span{color:#ffffffd9}.w-grid .t.yellow{background:var(--mark)}.w-actions{display:flex;flex-wrap:wrap;gap:10px}.w-more{display:flex;flex-wrap:wrap;gap:8px 18px;font:500 13px var(--font-mono)}.w-like{border-top:2px dashed var(--rule);padding-top:14px}@media(max-width:520px){.w-card{padding:26px 20px 22px;border-radius:22px}.w-grid .t b{font-size:1.3rem}}.g-dot{display:inline-block;width:14px;height:14px;border-radius:50%;flex:none;background:var(--mark);box-shadow:0 0 0 2px var(--ink),9px -5px 0 -4px #3b6ff5,-8px 6px 0 -4.5px #ff8a1f,7px 8px 0 -5px #2f8f5b}.galaxy-btn{margin-top:20px}.galaxy{padding-bottom:40px}.g-head{padding-block:28px 18px}.g-head .model-name .hl{background:var(--mark)}.g-lede{margin:12px 0 0;color:var(--ink-2);font-size:var(--step-1);max-width:64ch}.g-panel{position:relative;border:var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;background:#16161a}.g-sky{position:relative;height:clamp(380px,72vh,760px)}.g-sky canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block;touch-action:none;cursor:grab}.g-sky canvas:active{cursor:grabbing}.g-empty{display:grid;place-items:center;color:#ece9e2bf;font:500 var(--step-0) var(--font-mono)}.g-loading{animation:g-fade 1.4s ease-in-out infinite alternate}@keyframes g-fade{0%{opacity:.35}to{opacity:1}}.g-zoom{position:absolute;right:14px;top:14px;display:flex;flex-direction:column;gap:6px}.g-zoom button{width:36px;height:36px;border-radius:10px;border:2px solid var(--ink);background:var(--surface);color:var(--ink);font:600 18px/1 var(--font-mono);cursor:pointer;box-shadow:2px 2px 0 var(--ink)}.g-zoom button:hover{background:var(--mark)}.g-hint{position:absolute;left:14px;bottom:12px;font:400 12px var(--font-mono);color:#ece9e28c;pointer-events:none}.g-tip{position:absolute;transform:translate(14px,-50%);pointer-events:none;max-width:300px;z-index:2;background:var(--surface);border:2px solid var(--ink);border-radius:10px;padding:7px 10px;box-shadow:3px 3px 0 var(--ink);display:flex;flex-direction:column;gap:2px;font-size:var(--step--1)}.g-tip b{font-weight:600;overflow-wrap:anywhere}.g-tip span{color:var(--muted);font:400 12px var(--font-mono)}.g-card{position:absolute;left:14px;bottom:14px;z-index:3;width:min(360px,calc(100% - 28px));display:flex;flex-direction:column;gap:6px;background:var(--surface);border:var(--line);border-radius:14px;box-shadow:var(--shadow-sm);padding:14px 16px}.g-card .x{position:absolute;right:8px;top:6px;border:0;background:none;font:400 22px/1 var(--font);cursor:pointer;color:var(--muted);padding:4px 6px}.g-card .id{font:600 var(--step-1)/1.2 var(--font-display);overflow-wrap:anywhere;padding-right:22px;text-decoration:none}.g-card .id:hover{text-decoration:underline}.g-card .g-rel{display:flex;align-items:center;gap:7px;font:400 12.5px var(--font-mono);color:var(--ink-2);overflow-wrap:anywhere}.g-card .g-rel i,.g-legend i{width:10px;height:10px;border-radius:50%;flex:none;box-shadow:0 0 0 1.5px var(--ink)}.g-card .n{color:var(--ink-2);font-size:var(--step--1)}.g-card .acts{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}.g-card .acts .btn{padding:6px 11px}.g-tools{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:14px;margin-top:22px}.g-legend{display:flex;flex-wrap:wrap;gap:8px}.g-legend button{display:inline-flex;align-items:center;gap:7px;padding:5px 12px;border-radius:999px;border:2px solid var(--ink);background:var(--surface);font:500 12.5px var(--font-mono);cursor:pointer;color:var(--ink)}.g-legend button b{font-weight:600}.g-legend button[aria-pressed=false]{opacity:.45;text-decoration:line-through}.g-find{position:relative;flex:1 1 260px;max-width:360px}.g-find input{width:100%;padding:9px 13px;border:var(--line);border-radius:12px;background:var(--surface);font:400 var(--step-0) var(--font);color:var(--ink)}.g-find input:focus{outline:none;box-shadow:var(--shadow-sm)}.g-found{position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:5;list-style:none;margin:0;padding:4px;background:var(--surface);border:var(--line);border-radius:12px;box-shadow:var(--shadow-sm)}.g-found button{width:100%;display:flex;justify-content:space-between;gap:10px;border:0;background:none;padding:7px 9px;border-radius:8px;cursor:pointer;text-align:left;font:400 var(--step--1) var(--font);color:var(--ink)}.g-found button:hover,.g-found button:focus-visible{background:var(--mark)}.g-found span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.g-found small{flex:none;color:var(--muted);font:400 12px var(--font-mono)}.g-foot{margin-top:18px}.g-read{color:var(--ink-2);max-width:72ch;margin:0 0 18px}.g-actions{justify-content:flex-start}.w-entry.g-entry h1 .hl{background:#16161a;color:var(--mark)}.g-search{max-width:640px;margin:0 auto;text-align:left}.g-fams{padding-block:10px 30px}.g-fams h2{font:600 var(--step-2) var(--font-display);margin-bottom:16px}.g-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px}.g-fam{position:relative;display:flex;flex-direction:column;gap:3px;padding:18px 18px 16px 52px;text-decoration:none;color:var(--paper);background:#16161a;border:var(--line);border-radius:14px;box-shadow:var(--shadow-sm);transition:transform .08s,box-shadow .08s;min-width:0}.g-fam:hover{transform:translate(-1px,-1px);box-shadow:5px 5px 0 var(--ink)}.g-fam .g-dot{position:absolute;left:18px;top:22px;box-shadow:0 0 0 2px #16161a,9px -5px 0 -4px #7d9dff,-8px 6px 0 -4.5px #ff9d4a,7px 8px 0 -5px #4ccb8a}.g-fam .o{font:400 12px var(--font-mono);color:#ece9e299;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.g-fam .nm{font:600 var(--step-1)/1.2 var(--font-display);overflow-wrap:anywhere;color:var(--mark)}.g-fam .c{font-size:var(--step--1);color:#ece9e2cc}@media(max-width:720px){.g-sky{height:62vh;min-height:340px}.g-hint{display:none}.g-find{max-width:none}}
|
|
|
|
| 1 |
+
.uplot,.uplot *,.uplot *:before,.uplot *:after{box-sizing:border-box}.uplot{font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";line-height:1.5;width:min-content}.u-title{text-align:center;font-size:18px;font-weight:700}.u-wrap{position:relative;-webkit-user-select:none;user-select:none}.u-over,.u-under{position:absolute}.u-under{overflow:hidden}.uplot canvas{display:block;position:relative;width:100%;height:100%}.u-axis{position:absolute}.u-legend{font-size:14px;margin:auto;text-align:center}.u-inline{display:block}.u-inline *{display:inline-block}.u-inline tr{margin-right:16px}.u-legend th{font-weight:600}.u-legend th>*{vertical-align:middle;display:inline-block}.u-legend .u-marker{width:1em;height:1em;margin-right:4px;background-clip:padding-box!important}.u-inline.u-live th:after{content:":";vertical-align:middle}.u-inline:not(.u-live) .u-value{display:none}.u-series>*{padding:4px}.u-series th{cursor:pointer}.u-legend .u-off>*{opacity:.3}.u-select{background:#00000012;position:absolute;pointer-events:none}.u-cursor-x,.u-cursor-y{position:absolute;left:0;top:0;pointer-events:none;will-change:transform}.u-hz .u-cursor-x,.u-vt .u-cursor-y{height:100%;border-right:1px dashed #607D8B}.u-hz .u-cursor-y,.u-vt .u-cursor-x{width:100%;border-bottom:1px dashed #607D8B}.u-cursor-pt{position:absolute;top:0;left:0;border-radius:50%;border:0 solid;pointer-events:none;will-change:transform;background-clip:padding-box!important}.u-axis.u-off,.u-select.u-off,.u-cursor-x.u-off,.u-cursor-y.u-off,.u-cursor-pt.u-off{display:none}:root{--paper: #ece9e2;--surface: #fbfaf5;--surface-2: #f4f1e8;--ink: #1b1b1f;--ink-2: #3d3d45;--muted: #6e6c66;--rule: #d9d5ca;--rule-2: #e9e5da;--signal: #3b6ff5;--signal-soft: rgba(59, 111, 245, .14);--mark: #ffd21e;--mark-ink: #1b1b1f;--up: #1f8a4c;--down: #d23b3b;--c1: #3b6ff5;--c2: #ff8a1f;--c3: #2f8f5b;--c4: #a35bf0;--c5: #e5484d;--line: 2.5px solid var(--ink);--shadow: 5px 5px 0 var(--ink);--shadow-sm: 3px 3px 0 var(--ink);--radius: 16px;--font: "Source Sans 3", "Source Sans Pro", system-ui, -apple-system, "Segoe UI", sans-serif;--font-cond: "Fredoka", "Source Sans 3", system-ui, sans-serif;--font-display: "Fredoka", "Source Sans 3", system-ui, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace;--step--1: .8125rem;--step-0: 1rem;--step-1: 1.1875rem;--step-2: 1.625rem;--step-3: 2.375rem;--step-4: clamp(2.75rem, 7.5vw, 5.75rem);--gutter: clamp(16px, 4vw, 48px);--maxw: 1200px;color-scheme:light}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--paper);color:var(--ink);font:400 var(--step-0)/1.55 var(--font);font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration-color:color-mix(in srgb,var(--ink) 30%,transparent);text-underline-offset:3px}a:hover{text-decoration-color:currentColor}button{font:inherit;color:inherit}:focus-visible{outline:3px solid var(--signal);outline-offset:2px;border-radius:6px}.wrap{max-width:var(--maxw);margin:0 auto;padding-inline:var(--gutter)}.top{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--paper) 90%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.top .wrap{display:flex;align-items:center;gap:18px;height:72px}.brand{display:flex;align-items:center;gap:10px;text-decoration:none;white-space:nowrap;font:600 1.375rem/1 var(--font-display);letter-spacing:-.01em}.brand svg{flex:none;filter:drop-shadow(2px 2px 0 var(--ink))}.top nav{display:flex;gap:8px;margin-left:auto;align-items:center}.top nav a,.ghost{padding:7px 14px;border-radius:999px;text-decoration:none;color:var(--ink);font:500 var(--step--1) var(--font-mono);border:0;background:none;cursor:pointer;letter-spacing:.02em}.top nav a:hover,.ghost:hover{background:var(--surface);box-shadow:inset 0 0 0 2px var(--ink)}.top nav a.nav-btn{padding:7px 13px;border:var(--line);border-radius:12px;background:var(--surface);font-weight:600;box-shadow:var(--shadow-sm)}.top nav a.nav-btn:hover{background:var(--surface);box-shadow:4px 4px 0 var(--ink)}.top nav a.nav-btn[aria-current=page]{background:var(--mark)}.top nav a.like,.like{display:inline-flex;align-items:center;gap:8px;padding:8px 16px;border-radius:999px;background:var(--surface);color:var(--ink);text-decoration:none;font:600 var(--step--1) var(--font-mono);border:var(--line);box-shadow:var(--shadow-sm);transition:transform .08s,box-shadow .08s}.top nav a.like:hover,.like:hover{transform:translate(-1px,-1px);box-shadow:4px 4px 0 var(--ink);background:var(--mark)}.like:active{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--ink)}.like svg{color:#ff4d6d}.search{position:relative;flex:1;max-width:460px}.search input{width:100%;height:44px;padding:0 14px 0 40px;border-radius:12px;border:var(--line);background:var(--surface);color:var(--ink);font:inherit;box-shadow:var(--shadow-sm)}.search input::placeholder{color:var(--muted)}.search input:focus{outline:none;background:#fff;box-shadow:4px 4px 0 var(--signal);border-color:var(--ink)}.search .icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--ink);pointer-events:none}.search kbd{position:absolute;right:10px;top:50%;transform:translateY(-50%);font:500 11px var(--font-mono);color:var(--ink-2);border:1.5px solid var(--ink);border-radius:6px;padding:1px 6px;background:var(--paper)}.search.big input{height:64px;font-size:var(--step-1);padding-left:52px;border-radius:16px;box-shadow:var(--shadow)}.search.big .icon{left:20px}.results{position:absolute;left:0;right:0;top:calc(100% + 10px);z-index:30;list-style:none;margin:0;padding:6px;background:var(--surface);border:var(--line);border-radius:14px;box-shadow:var(--shadow);max-height:60vh;overflow:auto}.results li{display:flex;justify-content:space-between;gap:12px;padding:9px 10px;border-radius:9px;cursor:pointer}.results li[aria-selected=true]{background:var(--mark)}.results .rid{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.results .rid b{font-weight:700}.results .rmeta{color:var(--muted);white-space:nowrap;font:400 12px var(--font-mono)}.results li[aria-selected=true] .rmeta{color:var(--ink-2)}.results{overflow-x:hidden}.chip{max-width:100%;overflow:hidden;text-overflow:ellipsis}.search{container-type:inline-size}@container (max-width: 520px){.results li{flex-direction:column;align-items:flex-start;gap:2px}.results .rid{white-space:normal;overflow-wrap:anywhere;line-height:1.3}.results .rmeta{font-size:11px}}@media(max-width:640px){.top .search .results{position:fixed;left:12px;right:12px;top:70px;max-height:70vh}}.muted{color:var(--muted)}.up{color:var(--up)}.down{color:var(--down)}h1,h2,h3{margin:0;line-height:1.1}h2{font:600 var(--step-2)/1.1 var(--font-display);letter-spacing:-.01em}.section{padding-block:40px}.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:18px}.section-head p{margin:6px 0 0;color:var(--muted);max-width:62ch}.card{background:var(--surface);border:var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:clamp(16px,2.4vw,28px)}.seg{display:inline-flex;padding:3px;gap:2px;background:var(--surface);border:var(--line);border-radius:999px;flex-wrap:wrap;box-shadow:var(--shadow-sm)}.seg button{border:0;background:none;padding:6px 13px;border-radius:999px;cursor:pointer;color:var(--ink);font:500 12.5px var(--font-mono);letter-spacing:.02em}.seg button:hover{background:var(--rule-2)}.seg button[aria-pressed=true]{background:var(--mark);box-shadow:inset 0 0 0 2px var(--ink);font-weight:600}.btn{display:inline-flex;align-items:center;gap:8px;padding:9px 15px;border-radius:12px;cursor:pointer;border:var(--line);background:var(--surface);font:600 var(--step--1) var(--font-mono);text-decoration:none;box-shadow:var(--shadow-sm);transition:transform .08s,box-shadow .08s}.btn:hover{transform:translate(-1px,-1px);box-shadow:4px 4px 0 var(--ink)}.btn:active{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--ink)}.btn:disabled{opacity:.5;cursor:default;transform:none}.btn.primary{background:var(--mark)}.chip{display:inline-flex;align-items:center;gap:6px;padding:3px 11px;border-radius:999px;border:2px solid var(--ink);background:var(--surface);color:var(--ink);font:500 12.5px var(--font-mono);white-space:nowrap;text-decoration:none}a.chip:hover{background:var(--mark)}.err{padding:80px 0;max-width:60ch}.err h1{font:600 var(--step-3) var(--font-display);margin-bottom:12px}.hero{padding-block:28px 8px}.crumbs{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:18px}.model-name{font:600 var(--step-3)/1.15 var(--font-display);word-break:break-word;letter-spacing:-.01em}.model-name .org{color:var(--muted);font-weight:500}.model-name .hl{background:var(--mark);padding:0 .18em;border-radius:6px;box-decoration-break:clone;-webkit-box-decoration-break:clone}.model-name a{text-decoration:none}.stats{margin-top:24px;display:grid;grid-template-columns:auto repeat(3,minmax(0,1fr))}.stats>.fig{padding:18px 22px;border-left:2px solid var(--ink)}.stats>.fig:first-child{border-left:0}.fig-main .num{font:600 clamp(2.5rem,5.6vw,4.75rem)/.95 var(--font-display);letter-spacing:-.02em;white-space:nowrap}.fig .label{color:var(--muted);font:400 12.5px/1.4 var(--font-mono);margin-top:8px}.fig .val{font:600 clamp(1.5rem,2.6vw,2.125rem)/1 var(--font-display)}.fig .val small{font:700 var(--step--1) var(--font-mono);margin-left:6px;vertical-align:middle}.fig-main{display:flex;flex-direction:column;justify-content:flex-end}.stats .fig:not(.fig-main){display:flex;flex-direction:column;justify-content:flex-end}@media(max-width:860px){.stats{grid-template-columns:repeat(3,minmax(0,1fr))}.stats>.fig-main{grid-column:1 / -1;border-left:0;border-bottom:2px solid var(--ink)}.stats>.fig:nth-child(2){border-left:0}}@media(max-width:520px){.stats>.fig{padding:14px 12px}}.chart-card{margin-top:26px}.chart-bar{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center;justify-content:space-between;margin-bottom:14px}.chart-bar .left,.chart-bar .right{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.chart-box{position:relative}.chart-box .u-wrap{animation:draw 1.1s cubic-bezier(.3,.7,.2,1) both}@keyframes draw{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}@media(prefers-reduced-motion:reduce){.chart-box .u-wrap{animation:none}.btn,.like{transition:none}}.chart-note{color:var(--muted);font:400 12.5px/1.5 var(--font-mono);margin:12px 0 0}.tip{position:absolute;pointer-events:none;z-index:5;background:var(--surface);color:var(--ink);border:var(--line);border-radius:12px;padding:9px 12px;font:500 12.5px var(--font-mono);min-width:160px;transform:translate(-50%,-100%);box-shadow:var(--shadow-sm);white-space:nowrap}.tip .d{color:var(--muted);margin-bottom:4px}.tip .r{display:flex;justify-content:space-between;gap:14px;align-items:center}.tip .sw{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:6px;border:1.5px solid var(--ink)}.legend{display:flex;flex-wrap:wrap;gap:8px}.legend .chip .sw{width:11px;height:11px;border-radius:3px;border:1.5px solid var(--ink)}.legend .chip button{border:0;background:none;padding:0 0 0 2px;cursor:pointer;color:var(--ink);line-height:1}.add-compare{position:relative}.add-compare .search{width:min(440px,calc(100vw - 32px));position:absolute;top:calc(100% + 10px);z-index:25}.add-compare.align-left .search{left:0}.add-compare.align-right .search{right:0}@media(max-width:640px){.add-compare .search{position:fixed;left:12px;right:12px;width:auto;top:76px}}.uplot{font-family:var(--font-mono)!important}.u-select{background:#ffd21e59!important}.timeline{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:14px}.timeline li{padding:14px 16px;background:var(--surface);border:var(--line);border-radius:14px;box-shadow:var(--shadow-sm)}.timeline li:not(.pending){background:var(--mark)}.timeline .m{font:600 var(--step-2)/1 var(--font-display)}.timeline .when{color:var(--ink-2);font:400 12.5px var(--font-mono);margin-top:6px}.timeline li.pending{box-shadow:none;border-style:dashed;background:transparent}.timeline li.pending .m,.timeline li.pending .when{color:var(--muted)}.family-top{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.6fr);gap:28px;align-items:start}.family-top>*{min-width:0}@media(max-width:820px){.family-top{grid-template-columns:1fr}}.family-sum .big{font:600 var(--step-3)/1 var(--font-display)}.family-sum p{color:var(--ink-2);margin:10px 0 18px}.rel{display:flex;height:16px;border-radius:8px;overflow:hidden;background:var(--rule-2);margin-bottom:14px;border:2px solid var(--ink)}.rel span{display:block;height:100%;border-right:2px solid var(--ink)}.rel span:last-child{border-right:0}.rel-legend{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 16px;font:400 12.5px var(--font-mono)}.rel-legend div{display:flex;justify-content:space-between;gap:8px}.rel-legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;border:1.5px solid var(--ink)}.table-scroll{overflow-x:auto}table.list{width:100%;border-collapse:collapse;min-width:560px}table.list th{text-align:right;font:500 11.5px var(--font-mono);color:var(--muted);padding:8px 10px;border-bottom:2px solid var(--ink);white-space:nowrap;letter-spacing:.03em}table.list td{text-align:right;padding:11px 10px;border-bottom:1px solid var(--rule);white-space:nowrap;font-family:var(--font-mono);font-size:13.5px}table.list th:first-child,table.list td:first-child{text-align:left;padding-left:0}table.list td.name{max-width:400px;overflow:hidden;text-overflow:ellipsis;font-family:var(--font);font-size:var(--step-0)}table.list td.name a{text-decoration:none;font-weight:600}table.list td.name a:hover{background:var(--mark)}table.list td.name .sub{display:block;color:var(--muted);font:400 12px var(--font-mono)}table.list tr:last-child td{border-bottom:0}table.list tr:hover td{background:var(--surface-2)}.rank{display:inline-grid;place-items:center;width:26px;height:26px;border:2px solid var(--ink);border-radius:50%;font:600 11.5px var(--font-mono);margin-right:10px;background:var(--surface)}tr:nth-child(-n+3) .rank{background:var(--mark)}.share-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:22px}.share-grid>div{background:var(--surface);border:var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px}.share-grid>div.cta{background:var(--mark)}.share-grid h3{font:600 var(--step-1) var(--font-display);margin-bottom:6px}.share-grid p{margin:0 0 14px;color:var(--ink-2)}.code{display:flex;gap:8px;align-items:stretch;background:var(--paper);border:2px solid var(--ink);border-radius:12px;padding:4px 4px 4px 12px}.code code{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:12.5px/38px var(--font-mono);color:var(--ink-2)}.code .btn{box-shadow:none}.badge-preview{display:flex;gap:12px;flex-wrap:wrap;align-items:center;margin-bottom:14px;min-height:22px}.badge-opts{margin-bottom:14px}.home-hero{padding-block:clamp(28px,6vw,72px) 8px;text-align:center;position:relative}.home-hero h1{font:600 var(--step-4)/1 var(--font-display);letter-spacing:-.02em;display:inline-flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:.18em}.home-hero h1 .hl{background:var(--mark);padding:.02em .22em .08em;border-radius:10px}.home-hero h1 svg{width:.95em;height:.95em;filter:drop-shadow(4px 4px 0 var(--ink))}.home-hero .lede{font-size:var(--step-1);color:var(--ink-2);max-width:58ch;margin:22px auto 10px}.home-hero .meta{font:400 12.5px var(--font-mono);color:var(--muted);margin-bottom:26px}.home-hero .search{max-width:660px;margin:0 auto;text-align:left}.sticker{position:absolute;right:max(2%,calc(50% - 560px));top:clamp(10px,3vw,40px);width:112px;height:112px;display:grid;place-items:center;text-align:center;transform:rotate(10deg);color:#fff;font:600 15px/1.05 var(--font-display);filter:drop-shadow(3px 3px 0 var(--ink))}.sticker svg{position:absolute;top:0;right:0;bottom:0;left:0}.sticker span{position:relative}@media(max-width:860px){.sticker{display:none}}.examples{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px;align-items:center;justify-content:center}.examples .muted{font:400 12.5px var(--font-mono)}.hub-chart{padding-block:34px 8px}.hub-chart h2{margin-bottom:4px}.lb-tabs{margin-bottom:18px}.foot{padding-block:40px 60px;color:var(--muted);font:400 12.5px/1.6 var(--font-mono)}.foot .maker{color:var(--ink)}.foot .maker a{font-weight:600}.foot .wrap{display:flex;flex-wrap:wrap;gap:12px 28px;justify-content:space-between;border-top:2px solid var(--ink);padding-top:24px}.skeleton{height:360px;border-radius:12px;background:linear-gradient(90deg,var(--rule-2),var(--surface),var(--rule-2));background-size:200% 100%;animation:sk 1.4s linear infinite}@keyframes sk{to{background-position:-200% 0}}@media(max-width:720px){.top .wrap{gap:10px;height:64px}.brand span{display:none}.top nav a.hide-sm{display:none}.top nav{gap:6px}.top nav a.nav-btn{padding:5px 9px;font-size:12px;box-shadow:2px 2px 0 var(--ink)}.like .t,.search kbd{display:none}}.like-fake{position:relative;cursor:help}.like-fake:hover,.like-fake:active{transform:none;box-shadow:var(--shadow-sm)}.like-tip{position:absolute;left:0;bottom:calc(100% + 14px);width:min(290px,80vw);z-index:40;padding:12px 14px;background:var(--surface);border:var(--line);border-radius:12px;box-shadow:var(--shadow-sm);font:400 var(--step--1)/1.45 var(--font);color:var(--ink);white-space:normal;opacity:0;visibility:hidden;transform:translateY(4px);transition:opacity .14s,transform .14s,visibility .14s}.like-tip:after{content:"";position:absolute;left:26px;bottom:-9px;width:14px;height:14px;background:var(--surface);border-right:var(--line);border-bottom:var(--line);transform:rotate(45deg)}.like-fake:hover .like-tip,.like-fake:focus .like-tip,.like-fake:focus-within .like-tip{opacity:1;visibility:visible;transform:none}.like-tip code{font:500 12px var(--font-mono);background:var(--paper);padding:1px 5px;border-radius:5px}.hf-like{display:inline-flex;align-items:center;gap:4px;padding:1px 8px;border:1.5px solid #d1d5db;border-radius:6px;background:#fff;font:500 12px var(--font);color:#374151;white-space:nowrap;vertical-align:1px}@media(prefers-reduced-motion:reduce){.like-tip{transition:none}}.report{max-width:820px;padding-block:36px 24px;font-size:1.0625rem;line-height:1.7}.report h1{font:600 clamp(2rem,4.6vw,3rem)/1.08 var(--font-display);letter-spacing:-.02em;margin-bottom:14px}.report .byline{font:400 13px var(--font-mono);color:var(--muted);margin:0 0 28px}.report h2{font:600 var(--step-2)/1.15 var(--font-display);margin:52px 0 14px}.report p,.report ul{margin:0 0 16px}.report ul{padding-left:1.2em}.report li{margin-bottom:6px}.report a{text-decoration-color:var(--mark);text-decoration-thickness:3px}.report a:hover{background:var(--mark)}.report strong{font-weight:700}.report code{font:500 .85em var(--font-mono);background:var(--surface);border:1.5px solid var(--rule);padding:1px 5px;border-radius:5px}.report img{display:block;width:100%;height:auto;margin:22px 0 26px;border-radius:10px}.report .table-scroll{margin:8px 0 22px;background:var(--surface);border:var(--line);border-radius:14px;box-shadow:var(--shadow-sm);padding:6px 16px}.report table.list{min-width:520px;font-size:14px}.report table.list th{text-align:right}.report table.list th:first-child{text-align:left}.report table.list td{font-size:13.5px}.report table.list td:first-child{font-family:var(--font);font-size:14.5px;white-space:normal}.tip .r span{max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.legend .chip{max-width:100%}.legend .chip a{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-decoration:none}.legend .chip button{flex:none}.err h1{overflow-wrap:anywhere}.chip-hot{background:var(--mark)}.w-entry{padding-block:clamp(30px,6vw,64px) 40px;text-align:center}.w-entry h1{font:600 clamp(2.4rem,6.4vw,4.6rem)/1 var(--font-display);letter-spacing:-.02em;display:inline-flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:.2em}.w-entry h1 .hl{background:var(--mark);padding:.02em .22em .08em;border-radius:10px}.w-entry h1 svg{filter:drop-shadow(4px 4px 0 var(--ink))}.w-entry .lede{max-width:58ch;margin:18px auto 26px;color:var(--ink-2);font-size:var(--step-1)}.w-err{font:600 var(--step-3) var(--font-display);overflow-wrap:anywhere}.w-form{display:flex;gap:12px;max-width:680px;margin:0 auto;align-items:stretch;flex-wrap:wrap}.w-form .search{flex:1 1 320px;max-width:none}.w-form .search.big input{padding-left:22px}.w-form .btn{font-size:var(--step-0);padding-inline:22px}.w-loading{padding-block:120px;text-align:center;display:grid;justify-items:center;gap:18px;font-size:var(--step-1)}.w-loading svg{animation:beat 1s ease-in-out infinite;filter:drop-shadow(4px 4px 0 var(--ink))}@keyframes beat{0%,to{transform:scale(1)}15%{transform:scale(1.12)}30%{transform:scale(.97)}}.w-page{padding-block:26px 40px}.w-stage{max-width:520px;margin:0 auto}.w-progress{display:flex;gap:6px;margin-bottom:14px}.w-progress span{flex:1;height:7px;border-radius:4px;border:2px solid var(--ink);background:var(--surface)}.w-progress .done{background:var(--ink)}.w-progress .now{background:var(--mark)}.w-card{position:relative;min-height:min(560px,66vh);padding:32px 30px 28px;border:3px solid var(--ink);border-radius:26px;box-shadow:8px 8px 0 var(--ink);display:flex;flex-direction:column;justify-content:center;gap:14px;overflow:hidden;animation:w-in .38s cubic-bezier(.2,.8,.2,1)}@keyframes w-in{0%{opacity:0;transform:translateY(14px) rotate(-1deg) scale(.98)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.w-card,.w-loading svg{animation:none}}.tone-yellow{background:var(--mark)}.tone-blue{background:#3b6ff5;color:#fff}.tone-paper{background:var(--surface)}.tone-orange{background:#ff8a1f}.tone-green{background:#2f8f5b;color:#fff}.tone-red{background:#e5484d;color:#fff}.w-kicker{font:600 13px var(--font-mono);letter-spacing:.04em;opacity:.85}.w-logo svg{filter:drop-shadow(5px 5px 0 var(--ink))}.w-title{font:600 clamp(2.2rem,7vw,3.4rem)/1.02 var(--font-display);letter-spacing:-.02em;overflow-wrap:anywhere}.w-title.sm{font-size:clamp(1.7rem,5vw,2.3rem)}.w-name{background:var(--surface);color:var(--ink);padding:0 .16em;border-radius:10px;box-decoration-break:clone;-webkit-box-decoration-break:clone;border:3px solid var(--ink)}.tone-paper .w-name{background:var(--mark)}.w-model{font:600 clamp(1.5rem,5vw,2.1rem)/1.15 var(--font-display);overflow-wrap:anywhere}.w-model span{background:var(--mark);padding:0 .18em;border-radius:8px;box-decoration-break:clone;-webkit-box-decoration-break:clone}.w-big{font:600 clamp(2.6rem,10vw,4.6rem)/1 var(--font-display);letter-spacing:-.03em;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.w-big.sm{font-size:clamp(2.2rem,8vw,3.4rem)}.w-big.xl{font-size:clamp(4rem,18vw,7.5rem)}.w-big small{font:500 var(--step-1) var(--font-display);letter-spacing:0}.w-sub{font-size:var(--step-1);line-height:1.4;margin:0;max-width:34ch}.w-mono{font:400 12.5px var(--font-mono);opacity:.8;margin:0;overflow-wrap:anywhere}.w-bars{display:flex;align-items:flex-end;gap:4px;height:110px;margin-top:8px}.w-bars span{flex:1;min-width:3px;background:var(--surface);border:2px solid var(--ink);border-radius:4px 4px 1px 1px}.w-bars span.hi{background:var(--mark)}.w-bars.light span{background:#ffffffe6}.tone-orange .w-bars span{background:var(--surface)}.w-list{margin:6px 0 0;padding:0;list-style:none;display:grid;gap:6px;counter-reset:n 1}.w-list li{display:flex;justify-content:space-between;gap:12px;padding:8px 12px;border:2px solid var(--ink);border-radius:10px;background:var(--paper);font-size:14px;counter-increment:n}.w-list li:before{content:"#" counter(n);font:600 12px var(--font-mono);margin-right:8px;color:var(--muted)}.w-list li span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.w-list li b{font-family:var(--font-mono);font-size:13px}.w-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}.w-chips span{background:var(--surface);color:var(--ink);border:2px solid var(--ink);border-radius:999px;padding:4px 12px;font:600 13px var(--font-mono)}.w-tap{position:absolute;top:0;bottom:0;width:34%;background:transparent;border:0;cursor:pointer;z-index:2}.w-tap.left{left:0;cursor:w-resize}.w-tap.right{right:0;width:66%;cursor:e-resize}.w-tap:focus-visible{outline:3px solid var(--signal);outline-offset:-6px}.w-nav{display:flex;align-items:center;justify-content:space-between;margin-top:22px;gap:12px}.w-summary{justify-content:flex-start;gap:16px}.w-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.w-grid .t{display:grid;gap:4px;padding:12px 14px;border:2.5px solid var(--ink);border-radius:14px;background:var(--paper);box-shadow:3px 3px 0 var(--ink);min-width:0}.w-grid .t span{font:500 11.5px var(--font-mono);color:var(--muted)}.w-grid .t b{font:600 1.6rem/1.05 var(--font-display);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.w-grid .t b.s{font-size:1.05rem;white-space:normal;overflow-wrap:anywhere}.w-grid .t.blue{background:#3b6ff5;color:#fff}.w-grid .t.blue span{color:#ffffffd9}.w-grid .t.yellow{background:var(--mark)}.w-actions{display:flex;flex-wrap:wrap;gap:10px}.w-more{display:flex;flex-wrap:wrap;gap:8px 18px;font:500 13px var(--font-mono)}.w-like{border-top:2px dashed var(--rule);padding-top:14px}@media(max-width:520px){.w-card{padding:26px 20px 22px;border-radius:22px}.w-grid .t b{font-size:1.3rem}}.g-dot{display:inline-block;width:14px;height:14px;border-radius:50%;flex:none;background:var(--mark);box-shadow:0 0 0 2px var(--ink),9px -5px 0 -4px #3b6ff5,-8px 6px 0 -4.5px #ff8a1f,7px 8px 0 -5px #2f8f5b}.galaxy-btn{margin-top:20px}.galaxy{padding-bottom:40px}.g-head{padding-block:28px 18px}.g-head .model-name .hl{background:var(--mark)}.g-lede{margin:12px 0 0;color:var(--ink-2);font-size:var(--step-1);max-width:64ch}.g-panel{position:relative;border:var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;background:#16161a}.g-sky{position:relative;height:clamp(380px,72vh,760px)}.g-sky canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block;touch-action:none;cursor:grab}.g-sky canvas:active{cursor:grabbing}.g-empty{display:grid;place-items:center;color:#ece9e2bf;font:500 var(--step-0) var(--font-mono)}.g-loading{animation:g-fade 1.4s ease-in-out infinite alternate}@keyframes g-fade{0%{opacity:.35}to{opacity:1}}.g-zoom{position:absolute;right:14px;top:14px;display:flex;flex-direction:column;gap:6px}.g-zoom button{width:36px;height:36px;border-radius:10px;border:2px solid var(--ink);background:var(--surface);color:var(--ink);font:600 18px/1 var(--font-mono);cursor:pointer;box-shadow:2px 2px 0 var(--ink)}.g-zoom button:hover{background:var(--mark)}.g-hint{position:absolute;left:14px;bottom:12px;font:400 12px var(--font-mono);color:#ece9e28c;pointer-events:none}.g-tip{position:absolute;transform:translate(14px,-50%);pointer-events:none;max-width:300px;z-index:2;background:var(--surface);border:2px solid var(--ink);border-radius:10px;padding:7px 10px;box-shadow:3px 3px 0 var(--ink);display:flex;flex-direction:column;gap:2px;font-size:var(--step--1)}.g-tip b{font-weight:600;overflow-wrap:anywhere}.g-tip span{color:var(--muted);font:400 12px var(--font-mono)}.g-card{position:absolute;left:14px;bottom:14px;z-index:3;width:min(360px,calc(100% - 28px));display:flex;flex-direction:column;gap:6px;background:var(--surface);border:var(--line);border-radius:14px;box-shadow:var(--shadow-sm);padding:14px 16px}.g-card .x{position:absolute;right:8px;top:6px;border:0;background:none;font:400 22px/1 var(--font);cursor:pointer;color:var(--muted);padding:4px 6px}.g-card .id{font:600 var(--step-1)/1.2 var(--font-display);overflow-wrap:anywhere;padding-right:22px;text-decoration:none}.g-card .id:hover{text-decoration:underline}.g-card .g-rel{display:flex;align-items:center;gap:7px;font:400 12.5px var(--font-mono);color:var(--ink-2);overflow-wrap:anywhere}.g-card .g-rel i,.g-legend i{width:10px;height:10px;border-radius:50%;flex:none;box-shadow:0 0 0 1.5px var(--ink)}.g-card .n{color:var(--ink-2);font-size:var(--step--1)}.g-card .acts{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}.g-card .acts .btn{padding:6px 11px}.g-tools{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:14px;margin-top:22px}.g-legend{display:flex;flex-wrap:wrap;gap:8px}.g-legend button{display:inline-flex;align-items:center;gap:7px;padding:5px 12px;border-radius:999px;border:2px solid var(--ink);background:var(--surface);font:500 12.5px var(--font-mono);cursor:pointer;color:var(--ink)}.g-legend button b{font-weight:600}.g-legend button[aria-pressed=false]{opacity:.45;text-decoration:line-through}.g-find{position:relative;flex:1 1 260px;max-width:360px}.g-find input{width:100%;padding:9px 13px;border:var(--line);border-radius:12px;background:var(--surface);font:400 var(--step-0) var(--font);color:var(--ink)}.g-find input:focus{outline:none;box-shadow:var(--shadow-sm)}.g-found{position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:5;list-style:none;margin:0;padding:4px;background:var(--surface);border:var(--line);border-radius:12px;box-shadow:var(--shadow-sm)}.g-found button{width:100%;display:flex;justify-content:space-between;gap:10px;border:0;background:none;padding:7px 9px;border-radius:8px;cursor:pointer;text-align:left;font:400 var(--step--1) var(--font);color:var(--ink)}.g-found button:hover,.g-found button:focus-visible{background:var(--mark)}.g-found span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.g-found small{flex:none;color:var(--muted);font:400 12px var(--font-mono)}.g-foot{margin-top:18px}.g-read{color:var(--ink-2);max-width:72ch;margin:0 0 18px}.g-actions{justify-content:flex-start}.w-entry.g-entry h1 .hl{background:#16161a;color:var(--mark)}.g-search{max-width:640px;margin:0 auto;text-align:left}.g-fams{padding-block:10px 30px}.g-fams h2{font:600 var(--step-2) var(--font-display);margin-bottom:16px}.g-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px}.g-fam{position:relative;display:flex;flex-direction:column;gap:3px;padding:18px 18px 16px 52px;text-decoration:none;color:var(--paper);background:#16161a;border:var(--line);border-radius:14px;box-shadow:var(--shadow-sm);transition:transform .08s,box-shadow .08s;min-width:0}.g-fam:hover{transform:translate(-1px,-1px);box-shadow:5px 5px 0 var(--ink)}.g-fam .g-dot{position:absolute;left:18px;top:22px;box-shadow:0 0 0 2px #16161a,9px -5px 0 -4px #7d9dff,-8px 6px 0 -4.5px #ff9d4a,7px 8px 0 -5px #4ccb8a}.g-fam .o{font:400 12px var(--font-mono);color:#ece9e299;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.g-fam .nm{font:600 var(--step-1)/1.2 var(--font-display);overflow-wrap:anywhere;color:var(--mark)}.g-fam .c{font-size:var(--step--1);color:#ece9e2cc}@media(max-width:720px){.g-sky{height:62vh;min-height:340px}.g-hint{display:none}.g-find{max-width:none}}.about h2{font:600 var(--step-2) var(--font-display);margin-bottom:12px}.about p{max-width:72ch;color:var(--ink-2);margin:0 0 10px}.about p.muted{font-size:var(--step--1);color:var(--muted)}
|
index.html
CHANGED
|
@@ -9,8 +9,11 @@
|
|
| 9 |
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
| 10 |
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
| 11 |
<link href="https://fonts.googleapis.com/css2?family=Fredoka:wght@500;600&family=IBM+Plex+Mono:wght@400;500;600&family=Source+Sans+3:wght@400;600;700&display=swap" rel="stylesheet" />
|
| 12 |
-
<
|
| 13 |
-
<
|
|
|
|
|
|
|
|
|
|
| 14 |
</head>
|
| 15 |
<body>
|
| 16 |
<div id="app"></div>
|
|
|
|
| 9 |
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
| 10 |
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
| 11 |
<link href="https://fonts.googleapis.com/css2?family=Fredoka:wght@500;600&family=IBM+Plex+Mono:wght@400;500;600&family=Source+Sans+3:wght@400;600;700&display=swap" rel="stylesheet" />
|
| 12 |
+
<!-- the server sends a plain-HTML version of each page for search engines; with JavaScript the app replaces it -->
|
| 13 |
+
<script>document.documentElement.classList.add("js")</script>
|
| 14 |
+
<style>.js #app > .ssr { display: none }</style>
|
| 15 |
+
<script type="module" crossorigin src="/assets/index-Dab5zmmn.js"></script>
|
| 16 |
+
<link rel="stylesheet" crossorigin href="/assets/index-qVKJDz79.css">
|
| 17 |
</head>
|
| 18 |
<body>
|
| 19 |
<div id="app"></div>
|