rapier-jxl 2.1.0 → 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/AGENTS.md +24 -24
  2. package/README.md +73 -142
  3. package/dist/effort.min.mjs +2 -0
  4. package/dist/jpeg-ans.min.mjs +2 -0
  5. package/dist/jpeg.min.mjs +2 -0
  6. package/dist/photo-ans.min.mjs +2 -0
  7. package/dist/photo.min.mjs +2 -0
  8. package/dist/rapier-jxl.min.mjs +2 -0
  9. package/{sizes.json → dist/sizes.json} +133 -61
  10. package/dist/wasm.min.mjs +2 -0
  11. package/kernels/build.mjs +31 -0
  12. package/kernels/kernels-probe.wat +1 -0
  13. package/kernels/kernels-scalar.wat +831 -0
  14. package/kernels/kernels-simd.wat +252 -0
  15. package/package.json +53 -34
  16. package/{bits.mjs → src/bits.mjs} +5 -2
  17. package/{effort.mjs → src/effort-job.mjs} +73 -84
  18. package/{effort.d.mts → src/effort.d.mts} +2 -1
  19. package/src/effort.mjs +25 -0
  20. package/{frame.mjs → src/frame.mjs} +25 -0
  21. package/src/kernel-control.d.mts +3 -0
  22. package/src/kernel-hooks.mjs +3 -0
  23. package/src/kernels-bytes.mjs +4 -0
  24. package/src/kernels.mjs +141 -0
  25. package/{local.mjs → src/local.mjs} +40 -36
  26. package/src/lossless-coding.mjs +30 -0
  27. package/{lossless.mjs → src/lossless.mjs} +88 -67
  28. package/{modular.mjs → src/modular.mjs} +11 -7
  29. package/src/pool.mjs +136 -0
  30. package/src/rct-search.mjs +61 -0
  31. package/src/wasm.d.mts +4 -0
  32. package/src/wasm.mjs +6 -0
  33. package/{weighted.mjs → src/weighted.mjs} +2 -0
  34. package/ENCODER-COMPARISON.md +0 -185
  35. package/effort.min.mjs +0 -2
  36. package/jpeg-ans.min.mjs +0 -2
  37. package/jpeg.min.mjs +0 -2
  38. package/photo-ans.min.mjs +0 -2
  39. package/photo.min.mjs +0 -2
  40. package/public/encoder-sizes.json +0 -355
  41. package/public/encoders.json +0 -139
  42. package/public/examples/browser.html +0 -39
  43. package/public/examples/worker.mjs +0 -42
  44. package/public/measure-encoders.mjs +0 -60
  45. package/rapier-jxl.min.mjs +0 -2
  46. /package/{admit.mjs → src/admit.mjs} +0 -0
  47. /package/{ans.mjs → src/ans.mjs} +0 -0
  48. /package/{coefficient-ans.mjs → src/coefficient-ans.mjs} +0 -0
  49. /package/{coefficient-effort.mjs → src/coefficient-effort.mjs} +0 -0
  50. /package/{effort-level.mjs → src/effort-level.mjs} +0 -0
  51. /package/{entropy.mjs → src/entropy.mjs} +0 -0
  52. /package/{index.d.mts → src/index.d.mts} +0 -0
  53. /package/{index.mjs → src/index.mjs} +0 -0
  54. /package/{jfif.mjs → src/jfif.mjs} +0 -0
  55. /package/{jpeg-ans.d.mts → src/jpeg-ans.d.mts} +0 -0
  56. /package/{jpeg-ans.mjs → src/jpeg-ans.mjs} +0 -0
  57. /package/{jpeg-job.mjs → src/jpeg-job.mjs} +0 -0
  58. /package/{jpeg.d.mts → src/jpeg.d.mts} +0 -0
  59. /package/{jpeg.mjs → src/jpeg.mjs} +0 -0
  60. /package/{lossy.mjs → src/lossy.mjs} +0 -0
  61. /package/{photo-ans.d.mts → src/photo-ans.d.mts} +0 -0
  62. /package/{photo-ans.mjs → src/photo-ans.mjs} +0 -0
  63. /package/{photo-dct.mjs → src/photo-dct.mjs} +0 -0
  64. /package/{photo-job.mjs → src/photo-job.mjs} +0 -0
  65. /package/{photo-quant.mjs → src/photo-quant.mjs} +0 -0
  66. /package/{photo.d.mts → src/photo.d.mts} +0 -0
  67. /package/{photo.mjs → src/photo.mjs} +0 -0
  68. /package/{prefix.mjs → src/prefix.mjs} +0 -0
  69. /package/{squeeze.mjs → src/squeeze.mjs} +0 -0
  70. /package/{vardct.mjs → src/vardct.mjs} +0 -0
  71. /package/{writer.mjs → src/writer.mjs} +0 -0
@@ -0,0 +1,2 @@
1
+ /*! Rapier JXL 2.2.1 | MIT License Copyright (c) 2026 rapier.website Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
2
+ function*t(t,n,o){let r,e;for(;!(r=t.next(e)).done;)e=yield ft(r.value,t=>(n+t)/o);return r.value}function n(t){return t>=0?2*t:2*-t-1}function o(t){return 31-Math.clz32(t)}function r(t){return t<=1?0:32-Math.clz32(t-1)}function e(t){if(0===t)return 0;const n=t<0?32768:0;if(!((t=Math.abs(t))<65520))throw new Error("half float out of range: "+t);let o=0,r=t;for(;r>=2;)r/=2,o++;for(;r<1;)r*=2,o--;o<-14?(r=16384*t,o=-15):r-=1;let e=Math.round(1024*r);return 1024===e&&(e=0,o++),n|o+15<<10|e}function s(t){if(t>et.bytes)throw lt("JXL_SIZE","The encoded picture exceeds 16 MiB.")}function i(t){try{return t()}catch(t){if(t instanceof RangeError&&!t.code)throw lt("JXL_MEMORY","Not enough memory for this picture.");throw t}}function c(t,n){t.t([[9,1],[13,1],[18,1],[30,1]],n)}function f(t,n,o,r,e,{xyb:s=!1,orientation:i=1,colorSpace:f}={}){t.write(16,2815),t.write(1,0),c(t,o),t.write(3,0),c(t,n),t.write(1,0);const l=1!==i;t.write(1,l?1:0),l&&t.write(6,i-1),t.write(4,8),e?t.write(3,5):t.write(2,0),t.write(1,s?1:0),3===r&&"display-p3"===f?t.write(21,903568):3===r?t.write(1,1):t.write(15,14100),l&&t.write(1,1),t.write(2,0),t.write(1,1),t.o()}function l(t,n){t.write(n?7:5,0),t.write(11,1)}function*a(t,n,o,r){if(t.pooled){const n=yield t;return n?(n.results.forEach((t,n)=>r(n,t)),n.hurried):null}let e=!1;for(let r=0;r<n;r++)if(o(r),e=yield t.at(r),e&&t.stop(r))return null;return e}function u(t,n){const o=n.map(t=>t.length);!function(t,n){t.write(1,0),t.o();for(const o of n)t.t([[10,0],[14,1024],[22,17408],[30,4211712]],o);t.o()}(t,o);const r=t.finish(),e=r.length+o.reduce((t,n)=>t+n,0);s(e);const i=new Uint8Array(e);i.set(r);let c=r.length;for(const t of n)i.set(t,c),c+=t.length;return i}function h(t,n){const o=new Uint8Array(t.length),r=[];for(let n=0;n<t.length;n++)t[n]>0&&r.push(n);if(!r.length)return o;if(1===r.length)return o[r[0]]=1,o;for(let e=1;;e*=2){const s=r.map(n=>({w:Math.max(t[n],e),i:n,l:null,r:null})).sort((t,n)=>t.w-n.w||t.i-n.i),i=[];let c=0,f=0;const l=()=>c<s.length&&(f>=i.length||s[c].w<=i[f].w)?s[c++]:i[f++];for(;s.length-c+(i.length-f)>1;){const t=l(),n=l();i.push({w:t.w+n.w,i:-1,l:t,r:n})}const a=[[l(),0]];let u=0;for(;a.length;){const[t,n]=a.pop();t.i>=0?(o[t.i]=n,n>u&&(u=n)):a.push([t.l,n+1],[t.r,n+1])}if(u<=n)return o}}function y(t,n,o,r,e,s){const i=[];for(;i.push(r&e),r>>=s;)r--;for(let r=i.length-1;r>=0;r--)t.push(o),n.push(i[r])}function w(t,n){let o=0;for(let r=0;r<n;r++)o=o<<1|1&t,t>>=1;return o}function d(t){const n=new Uint32Array(17),o=new Uint32Array(17),r=new Uint16Array(t.length);for(const o of t)n[o]++;n[0]=0;for(let t=1,r=0;t<=16;t++)r=r+n[t-1]<<1,o[t]=r;for(let n=0;n<t.length;n++)t[n]&&(r[n]=w(o[t[n]]++,t[n]));return r}function p(t){const n=[];for(let o=0;o<t.length;o++)t[o]>0&&n.push(o);const o=n.length,r=n[o-1]+1||1,e=o<=4?new Uint8Array(r):h(t,15).subarray(0,r);let s=0;if(o<=4){n.sort((n,o)=>t[o]-t[n]||n-o),s=4===o&&t[n[0]]>t[n[2]]+t[n[3]]?1:0;const r=o<2?[0]:2===o?[1,1]:3===o?[1,2,2]:s?[1,2,3,3]:[2,2,2,2];n.forEach((t,n)=>{e[t]=r[n]}),n.sort((t,n)=>e[t]-e[n]||t-n)}return{u:r,p:e,M:d(e),A:o&&o<=4?n:null,U:s}}function M(t,n){if(n.u<=1)return;if(n.A){const r=o(n.u-1)+1;t.write(2,1),t.write(2,n.A.length-1);for(const o of n.A)t.write(r,o);return void(4===n.A.length&&t.write(1,n.U))}const r=n.p,e=[],s=[];let i=r.length-1;for(;i>0&&!r[i];)i--;let c=8;for(let t=0;t<=i;){const n=r[t];let o=1;for(;t+o<=i&&r[t+o]===n;)o++;let f=o;if(n&&n!==c&&(e.push(n),s.push(0),f--,c=n),f<3)for(let t=0;t<f;t++)e.push(n),s.push(0);else y(e,s,n?16:17,f-3,n?3:7,n?2:3);t+=o}const f=new Uint32Array(18);for(const t of e)f[t]++;let l=0;for(const t of f)t&&l++;1===l&&(f[e[0]?0:1]=f[e[0]]);const a=h(f,5),u=d(a);let w=18;for(;w>0&&!a[ht[w-1]];)w--;t.write(2,0);for(let n=0;n<w;n++){const o=a[ht[n]];t.write(yt[o],wt[o])}for(let n=0;n<e.length;n++){const o=e[n];t.write(a[o],u[o]),16===o?t.write(2,s[n]):17===o&&t.write(3,s[n])}}function A(t,n=0,o=0){return{split:t,m:n,I:o,S:1<<t}}function g(t,n,o=15){t.write(r(o+1),n.split),n.split!==o&&(t.write(r(n.split+1),n.m),t.write(r(n.split-n.m+1),n.I))}function U(t,n,r){if(n<t.S)return r[0]=n,r[1]=0,void(r[2]=0);const e=o(n),s=n-(1<<e),i=e-t.m-t.I;r[0]=t.S+(e-t.split<<t.m+t.I|s>>e-t.m<<t.I|s&(1<<t.I)-1),r[1]=i,r[2]=n>>t.I&(1<<i)-1}function b(t,n,o,r=0){U(t,n,dt),o[r+dt[0]]++}function m(t,n,o,r,e=0){U(o,r,dt);const s=e+dt[0];t.write(n.p[s],n.M[s]),dt[1]&&t.write(dt[1],dt[2])}function I(t,n){let o=0;for(const t of n)o=Math.max(o,t);const e=o?r(o+1):0;if(e<=3){if(t.write(1,1),t.write(2,e),e)for(const o of n)t.write(e,o);return}t.write(1,0),t.write(1,0);const s=A(8),i=A(4),c=n.length>=64,f=new Uint32Array(c?257:o+1),l=[];for(let t=0;t<n.length;){let o=1;for(;c&&t+o<n.length&&n[t+o]===n[t];)o++;if(o>=8)l.push([n[t],o-1]),f[n[t]]++,b(i,o-1-7,f,224),t+=o;else{for(let r=0;r<o;r++)l.push([n[t],0]),f[n[t]]++;t+=o}}const a=p(f);if(!c){x(t,{L:new Uint8Array(1),J:[{config:s,code:a}]});for(const[n]of l)m(t,a,s,n);return}const u=new Uint32Array(1);u[0]=1,x(t,{X:{T:224,minLength:7,_:i},L:new Uint8Array([1,0]),J:[{config:A(0),code:p(u)},{config:s,code:a}]});for(const[n,o]of l)m(t,a,s,n),o&&m(t,a,i,o-7,224)}function x(t,{X:n=null,L:r,J:e}){t.write(1,n?1:0),n&&(t.t([[0,224],[0,512],[0,4096],[15,8]],n.T),t.t([[0,3],[0,4],[2,5],[8,9]],n.minLength),g(t,n._,8)),r.length>1&&I(t,r),t.write(1,1);for(const n of e)g(t,n.config,15);for(const n of e){const r=n.code.u-1;if(r){const n=o(r);t.write(1,1),t.write(4,n),t.write(n,r-(1<<n))}else t.write(1,0)}for(const n of e)M(t,n.code)}function S(t,n=0,o=1){return{N:t,offset:n,C:o,context:-1}}function E(t){return function(t,n){const o=(r,e)=>{if(r===e)return n?t[r].O:t[r];const s=r+e>>1;return function(t,n,o,r){return{P:t,q:n,left:o,right:r}}(n,n?t[s].F:s,o(s+1,e),o(r,s))};return o(0,t.length-1)}(t,0)}function L(t,o){const r=[o],e=[],s=[];for(const t of r){if(t.left){e.push(t.P+1,n(t.q)),r.push(t.left,t.right);continue}t.context=s.length,s.push(t);const o=1===t.C?0:31-Math.clz32(t.C&-t.C);e.push(0,t.N,n(t.offset),o,(t.C>>o)-1)}const i=new Uint32Array(64);for(const t of e)b(Ut,t,i);const c=p(i);x(t,{L:new Uint8Array(6),J:[{config:Ut,code:c}]});for(const n of e)m(t,c,Ut,n);return s}function J(t,n){const o=[[3,0],[6,8],[10,72],[13,1096]];if("rct"===n.type)t.write(2,0),t.t(o,n.G),t.t([[0,6],[2,0],[4,2],[6,10]],n.j??6);else if("palette"===n.type)t.write(2,1),t.t(o,n.G),t.t([[0,1],[0,3],[0,4],[13,1]],n.k),t.t([[8,0],[10,256],[12,1280],[16,5376]],n.R),t.t([[0,0],[8,1],[10,257],[16,1281]],n.B??0),t.write(4,n.N??0);else{if("squeeze"!==n.type)throw new Error("unknown transform "+n.type);{t.write(2,2);const r=n.Z??[];t.t([[0,0],[4,1],[6,9],[8,41]],r.length);for(const n of r)t.write(1,n.D?1:0),t.write(1,n.Y?1:0),t.t(o,n.G),t.t([[0,1],[0,2],[0,3],[4,4]],n.k)}}}function X(t,{H:n=!0,K:o=[]}={}){t.write(1,n?1:0),t.write(1,1),t.t([[0,0],[0,1],[4,2],[8,18]],o.length);for(const n of o)J(t,n)}function v(t,n,o,r=t=>t.context,e=()=>Ut){const s=new Uint8Array(n.length+1);for(const t of n)s[t.context]=r(t)+1;const i=new Uint32Array(2);i[1]=1;const c=[{config:Ut,code:p(i)}],f=Math.max(...s);for(let t=0;t<f;t++)c.push({config:e(t),code:p(o[t])});return x(t,{X:gt,L:s,J:c}),c}function T(t,o,r,e,s,i,c=!1){if(at.channel?.(t,o,r,e,s,i,c))return;const f=i.N,l=i.offset,a=i.C,u=i.config||Ut,h=At;let y=0;const w=(n,r=u,e=0)=>{t?m(t,o,r,n,e):c&&!e?o[n]++:b(r,n,o,c?o.length-33:e)},d=()=>{if(y){if(y>=8)w(0),w(y-7-1,h,224);else for(let t=0;t<y;t++)w(0);y=0}},p=(t,o)=>{const e=r[t];let s;1===a?s=e-o-l:(s=Math.round((e-o-l)/a),r[t]=o+l+s*a),0!==s?(d(),w(n(s))):y++};for(let t=0,n=0;t<s;t++)for(let o=0;o<e;o++,n++){let s;if(0===f)s=0;else{const i=o?r[n-1]:t?r[n-e]:0,c=t?r[n-e]:i;if(1===f)s=i;else if(2===f)s=c;else if(3===f)s=(i+c)/2|0;else{const l=i+c-(o&&t?r[n-e-1]:i);if(5===f){const t=i<c?i:c,n=i<c?c:i;s=l<t?t:l>n?n:l}else{if(4!==f)throw new Error("predictor "+f+" is not coded here");s=Math.abs(l-i)<Math.abs(l-c)?i:c}}}p(n,s)}d()}function _(t){const n=t.length-33,r=[0,0,0];let e,s;for(const i of bt){const c=new Uint32Array(257);let f=0;for(let o=0;o<n;o++)t[o]&&(U(i,o,r),c[r[0]]+=t[o],f+=t[o]*r[1]);for(let o=0;o<33;o++)c[224+o]=t[n+o],f+=t[n+o]*Math.max(0,o-12);const l=p(c),a=new ct(128);g(a,i),M(a,l);let u=a.V+f+(1===l.u?1:5+o(l.u-1));for(let t=0;t<c.length;t++)c[t]&&(u+=c[t]*l.p[t]);const h={config:i,W:c,$:u,extra:f};e||(e=h),(!s||u<s.$)&&(s=h)}return[e,s]}function N(t,n,o,{palette:r=!0}={}){const e=n*o;let s=!0,i=!0;for(let n=0,o=0;o<e&&(255===t[n+3]||(s=!1,i))&&(t[n]===t[n+1]&&t[n]===t[n+2]||(i=!1,s));o++,n+=4);const c=i?1:3,f=!s,l=c+(f?1:0),a=n=>mt(t,n,i,f),u=new Map;let h=null;for(let t=0,n=0;r&&n<e;n++,t+=4){const n=a(t);if(0!==n&&!u.has(n)&&(u.set(n,1),u.size>=2048))break}if(r&&u.size<2048){const t=[...u.keys()],n=(t,n)=>t>>>8*n&255,o=t=>(.299*n(t,0)+.587*n(t,1)+.114*n(t,2)+.01)*(4===l?n(t,3):1);t.sort((t,n)=>o(t)-o(n)),h={colours:[0,...t],byte:n}}return{colour:c,alpha:f,channels:l,palette:h}}function C({channels:t,alpha:n,palette:o},r){const e=t-(n?1:0)==1,s=o&&new Map(o.map((t,n)=>[t,n]));return(i,c,f,l,a,u,h)=>{if(r&&!o&&t>=3)r.fill(i,c,f,l,a,u,h);else if(o||!at.fill?.(c,f,l,a,u,h,t,i))for(let r=0;r<h;r++){let h=4*((a+r)*f+l),y=r*u;for(let r=0;r<u;r++,h+=4,y++)if(o)i[0][y]=s.get(mt(c,h,e,n));else if(t>=3){const n=c[h],o=c[h+1],r=c[h+2],e=n-r,s=r+(e>>1),f=o-s;i[0][y]=s+(f>>1),i[1][y]=e,i[2][y]=f,4===t&&(i[3][y]=c[h+3])}else i[0][y]=c[h],2===t&&(i[1][y]=c[h+3])}}}function O(t,n){const{leaves:o,picture:r,M:e}=t,s=C(t,n),i=r.map(()=>new Int16Array(65536));return(t,n,c,f,l,a,u)=>{if(s(i,t,n,c,f,l,a),!e)return void r.forEach((t,n)=>T(null,u[t],i[n],l,a,o[t],!0));const h=u||new ct(l*a*r.length+64);return u||X(h,{H:!0,K:[]}),r.forEach((t,n)=>T(h,e[t],i[n],l,a,o[t])),u?void 0:h.finish()}}function*P(t,n,o,r,e,s,i){const{channels:c,alpha:h,palette:y}=r,w=function(t,n,o=256){const r=Math.ceil(t/o),e=Math.ceil(n/o);return{tt:r,nt:e,ot:Math.ceil(t/(8*o)),rt:Math.ceil(n/(8*o)),et:1===r&&1===e}}(n,o),d=w.tt*w.nt,A=y?2:c,g=Array.from({length:A},()=>S(Mt)),U=E(g),b={channels:c,alpha:h,palette:y&&y.colours,rct:s?.type,leaves:g,picture:y?[w.et?1:0]:g.map((t,n)=>n)},m=C(b,s),I=Array.from({length:c},()=>new Int16Array(1024)),x=t=>function(t,n,o,r){const e=r%t.tt*ut,s=(r/t.tt|0)*ut;return[e,s,Math.min(ut,n-e),Math.min(ut,o-s)]}(w,n,o,t);let J=null;if(y){const t=y.colours.length;J=new Int16Array(t*c),y.colours.forEach((n,o)=>{for(let r=0;r<c;r++)J[r*t+o]=y.byte(n,r)})}if(!y){const r=t=>{const n=p(t),o=new ct(128);M(o,n);let r=o.V;for(let o=0;o<t.length;o++)t[o]&&(r+=t[o]*(n.p[o]+Math.max(0,o<224?o-1:o-236)));return r},e=Math.min(n,32),s=Math.min(o,32),i=[Mt,pt].map(t=>({N:t,W:g.map(()=>new Uint32Array(257))}));for(const r of[0,.5,1]){m(I,t,n,Math.floor((n-e)*r),Math.floor((o-s)*r),e,s);for(const t of i)for(let n=0;n<c;n++)T(null,t.W[n],I[n],e,s,S(t.N))}g.forEach((t,n)=>{const o=i.map(t=>r(t.W[n])),e=o[1]<o[0]?1:0;t.N=i[e].N})}const N=y?[{type:"palette",G:0,k:c,R:y.colours.length}]:c>=3&&0!==s?.type?[{type:"rct",G:0,j:s?.type??6}]:[];let P=g.map(()=>new Uint32Array(33+(y?4096:1024)));J&&T(null,P[0],J,y.colours.length,c,g[0],!0);const q=O(b,s);yield*a({pooled:i,kind:"plan",setup:{...b,sizes:P.map(t=>t.length)},at:t=>(t+1)/(2*d),stop:()=>!1},d,o=>q(t,n,...x(o),P),(t,n)=>function(t,n){t.forEach((t,o)=>{const r=n[o];for(let n=0;n<t.length;n++)t[n]+=r[n]})}(P,n));const F=P.map(_),G=F.reduce((t,n)=>t+n[0].$-n[1].$,0)>27*(w.et?1:d+1)+8?1:0;g.forEach((t,n)=>{t.config=F[n][G].config}),P=F.map(t=>t[G].W);const j=new ct(256);f(j,n,o,r.colour,r.alpha,{colorSpace:e}),function(t,{alpha:n,shift:o=1}){t.write(9,8),n&&t.write(2,0),t.write(2,o),l(t,n)}(j,{alpha:r.alpha});const k=new ct(4096);k.write(1,1),k.write(1,1);const z=v(k,L(k,U),P,t=>g.indexOf(t),t=>g[t].config),R={...b,M:g.map((t,n)=>z[n+1]?.code)},B=O(R,s);X(k,{H:!0,K:N}),J&&T(k,R.M[0],J,y.colours.length,c,g[0]);const Z=[];if(w.et)B(t,n,0,0,n,o,k),yield 1,Z.push(k.finish());else{Z.push(k.finish());for(let t=0;t<w.ot*w.rt+1;t++)Z.push(new Uint8Array(0));const o=Z.length,r=(t,n)=>{Z[o+t]=n};yield*a({pooled:i,kind:"plan",setup:R,at:t=>(d+t+1)/(2*d),stop:()=>!1},d,o=>r(o,B(t,n,...x(o))),r)}return u(j,Z)}function q(t,n,o,r){let e=0;return e+=t[n]*It[r],e+=t[n+o]*It[r+1],e+=t[n+2*o]*It[r+2],e+=t[n+3*o]*It[r+3],e+=t[n+4*o]*It[r+4],e+=t[n+5*o]*It[r+5],e+=t[n+6*o]*It[r+6],e+=t[n+7*o]*It[r+7],e}function F(t,n,o){const r=new Float64Array(192),e=new Float64Array(64),s=new Float64Array(192);return(i,c)=>{for(let e=0;e<8;e++)for(let s=0;s<8;s++){const f=4*(Math.min(o-1,8*c+e)*n+Math.min(n-1,8*i+s)),l=t[f],a=t[f+1],u=t[f+2],h=8*e+s;r[h]=.299*l+.587*a+.114*u-128,r[64+h]=-.168735892*l-.331264108*a+.5*u,r[128+h]=.5*l-.418687589*a-.081312411*u}for(let t=0;t<3;t++){for(let n=0;n<8;n++)for(let o=0;o<8;o++)e[8*n+o]=q(r,64*t+8*n,1,8*o);for(let n=0;n<8;n++)for(let o=0;o<8;o++)s[64*t+8*n+o]=q(e,o,8,8*n)}return s}}function*G(t,n,o,r,e){const s=Math.ceil(n/8),i=Math.ceil(o/8),c=r>=30?.1+.09*(100-r):53/3e3*r*r-1.15*r+25,f=[0,1,2].map(t=>({h:1,v:1,stride:s,rows:i,quant:Int32Array.from(xt,(n,o)=>Math.max(1,Math.round(16*c*(t?18:10)*(o?n:.25)))),coeffs:new Int16Array(s*i*64)})),l=F(t,n,o),a=(t,n)=>{for(let o=t;o<n;o++)for(let t=0;t<s;t++){const n=l(t,o),r=64*(o*s+t);for(let t=0;t<3;t++)for(let o=0;o<64;o++)f[t].coeffs[r+o]=Math.round(16*n[64*t+o]/f[t].quant[o])}};for(let t=0;t<i;t+=32)a(t,Math.min(i,t+32)),yield Math.min(i,t+32)/i;let u=null;for(let n=3;n<t.length;n+=4)if(255!==t[n]){u=t;break}return{width:n,height:o,components:f,quantScale:16,ycbcr:!0,orientation:1,alpha:u,colorSpace:e}}function j(n,o,r,c,f){const{quality:l,colorSpace:a}=function(t={},n=100){if(null===t||"object"!=typeof t)throw lt("JXL_INPUT","Options are an object: {quality, colorSpace}.");if(void 0!==t.quality&&(n=t.quality),"number"!=typeof n||!Number.isFinite(n)||n<1||n>100)throw lt("JXL_INPUT","Quality is a number from 1 to 100.");const o=void 0===t.colorSpace?"srgb":t.colorSpace;if("srgb"!==o&&"display-p3"!==o)throw lt("JXL_INPUT","The colour space is srgb or display-p3.");return{quality:n,colorSpace:o}}(c,90),u=function(t={}){if(null===t||"object"!=typeof t)throw lt("JXL_INPUT","Options are an object.");const n=void 0===t.effort?1:t.effort;if(!Number.isInteger(n)||n<1||n>9)throw lt("JXL_INPUT","Effort is a whole number from 1 to 9.");return n}(c);return function(t,n,o,r){if(function(t,n,o=et){if(!Number.isInteger(t)||!Number.isInteger(n)||t<1||n<1)throw lt("JXL_INPUT","A picture is at least one pixel wide and high, in whole pixels.");if(t>o.edge||n>o.edge)throw lt("JXL_DIMENSIONS","A picture is at most "+o.edge+" pixels on a side.");if(t*n>o.pixels)throw lt("JXL_DIMENSIONS","A picture is at most "+o.pixels.toLocaleString("en-US")+" pixels.")}(n,o,r),!(t instanceof Uint8Array||t instanceof Uint8ClampedArray))throw lt("JXL_INPUT","Pixels are a Uint8Array or Uint8ClampedArray of RGBA bytes.");if(t.length!==n*o*4)throw lt("JXL_INPUT","Pixels are width * height * 4 bytes: straight (not premultiplied) RGBA, row by row.")}(n,o,r,st),function(t){const n=function*(){let o,r;for(;!(o=i(()=>t.next(n.hurry))).done;)yield r=o.value;return r<1&&(yield 1),n.bytes=(s((e=o.value).length),e);var e}();return n.bytes=null,n.hurry=!1,n}(function*(n,o,r,s,i,c,f){if(s>=100)return yield*function*(n,o,r,{shape:e=N(n,o,r),colorSpace:s,rct:i,pooled:c}={}){let f,l;const a=e.palette?[e,{...e,palette:null}]:[e];for(let e=0;e<a.length;e++)try{const l=yield*t(P(n,o,r,a[e],s,i,c),e,a.length);(!f||l.length<f.length)&&(f=l)}catch(t){if("JXL_SIZE"!==t.code)throw t;l=t}if(!f)throw l;return f}(n,o,r,{colorSpace:i});if(c<5)return yield*t(f(yield*t(G(n,o,r,s,i),0,2),c),1,2);const l=yield*t(G(n,o,r,s,i),0,4);let a=yield*t(f(l,4),1,4);if(yield.5)return a;try{const o=yield*t(function*(t,n,o=0){const{width:r,height:s,components:i,quantScale:c}=n,f=i[0].stride,l=i[0].rows,a=f*l,u=St.length;if(t.byteLength+i.reduce((t,n)=>t+n.coeffs.byteLength,0)+Math.max(a*(10*u+2)+o,7*st.bytes)>Jt)return null;const h=new Float64Array(a*u),y=new Uint16Array(a*u),w=F(t,r,s),d=i.map(t=>t.quant),p=i.map(t=>t.coeffs),M=St.map(t=>d.map(n=>Float64Array.from(n,n=>n*function(t){const n=e(t);let o=1+(1023&n)/1024,r=(n>>10)-15;for(;r<0;)o/=2,r++;for(;r>0;)o*=2,r--;return o}(4/(2040*c))*8*255/t))),A=new Int16Array(192),g=new Float64Array(3),U=new Int32Array(6),b=new Float64Array(6),m=new Float64Array(6);let I=0,x=0;const S=(t,n,o)=>{let r=0,e=0;const s=Et[o]*d[0][1]*d[0][1]/(c*c);for(let i=1;i<64;i++){if(!o){for(let r=0;r<3;r++){const s=p[r][64*n+i];g[r]=Xt(s,r)*M[o][r][i]-t[64*r+i],s&&(e+=2+2*(32-Math.clz32(Math.abs(s))))}r+=vt(g[0],g[1],g[2]);continue}for(let n=0;n<3;n++){const r=t[64*n+i],e=M[o][n][i],s=Math.floor(r/e);for(let t=0;t<2;t++){const o=s+t;U[2*n+t]=o,m[2*n+t]=o?2+2*(32-Math.clz32(Math.abs(o))):0,b[2*n+t]=o<-32768||o>32767?1/0:Xt(o,n)*e-r}}let c=0,f=1/0,l=0;for(let t=0;t<8;t++){const n=vt(b[1&t],b[2+(t>>1&1)],b[4+(t>>2)]),o=n+s*(m[1&t]+m[2+(t>>1&1)]+m[4+(t>>2)]);o<f&&(f=o,c=t,l=n)}if(f===1/0)return{error:1/0,rate:65535};r+=l;for(let t=0;t<3;t++){const n=U[2*t+(c>>t&1)];A[64*t+i]=n,n&&(e+=2+2*(32-Math.clz32(Math.abs(n))))}}return{error:r,rate:e}};for(let t=0;t<l;t++)for(let n=0;n<f;n++){const o=t*f+n,r=w(n,t);for(let t=0;t<u;t++){const n=S(r,o,t),e=o*u+t;h[e]=n.error,y[e]=n.rate,t||(I+=n.error,x+=n.rate)}if(((o+1)%1024==0||o+1===a)&&(yield(o+1)/(3*a)))return null}const E=new Uint8Array(a);let L=0;const J=function*(t,n){let o=0,r=0;for(let e=0;e<a;e++){const s=e*u;let i=0,c=h[s]+t*y[s];for(let n=1;n<u;n++){const o=h[s+n]+t*y[s+n];o<c&&(c=o,i=n)}if(o+=h[s+i],r+=y[s+i],n&&(E[e]=i),((e+1)%1024==0||e+1===a)&&(yield 1/3+(L+(e+1)/a)/147))return null}return L++,{error:o,rate:r}};let X=0,v=Math.max(1,I/Math.max(1,x));for(let t=0;t<24;t++){const t=yield*J(v,!1);if(!t)return null;if(t.error>I)break;v*=2}for(let t=0;t<24;t++){const t=(X+v)/2,n=yield*J(t,!1);if(!n)return null;n.error<=I?X=t:v=t}const T=yield*J(X,!0);if(!T||T.error>I||T.rate>=x||!E.some(t=>t))return null;const _=new Uint8Array(a);for(let t=0;t<l;t++)for(let n=0;n<f;n++){const o=t*f+n,r=E[o];if(_[o]=St[r],r){S(w(n,t),o,r);for(let t=0;t<3;t++)for(let n=1;n<64;n++)p[t][64*o+n]=A[64*t+n]}if(((o+1)%1024==0||o+1===a)&&(yield 2/3+(o+1)/(3*a)))return null}return{...n,quantFieldBase:4,quantFields:_,reconstructionError:{baseline:I,candidate:T.error}}}(n,l,a.byteLength),2,4);o&&(a=yield*t(f(o,4,a),3,4))}catch(t){if((!(t instanceof RangeError)||t.code)&&"JXL_SIZE"!==t.code)throw t}return a}(n,o,r,l,a,u,f))}function k(t,n){return U(t,n,Ct),Ct[0]}function z(t){let n=0;for(t>=2&&t<4294967296&&(n=31-Math.clz32(t),t*=Ot[n]);t>=1.4142135623730951;)t/=2,n++;for(;t<.7071067811865476;)t*=2,n--;const o=(t-1)/(t+1),r=o*o;let e=o,s=o;for(let t=3;t<30;t+=2)s+=(e*=r)/t;return n+2.885390081777927*s}function R(t){let n=0,o=0;for(const o of t)n+=o;for(const r of t)r&&(o+=r*z(n/r));return o}function B(t,{maxClusters:n=48,newClusterCost:o=320}={}){const r=[];for(let n=0;n<t.st;n++)t.it[n]>0&&r.push(n);r.sort((n,o)=>t.it[o]-t.it[n]);const e=[];for(const s of r){const r=t.ct([s],_t),i=R(r);let c=-1,f=1/0;for(let t=0;t<e.length;t++){const n=e[t],o=new Uint32Array(64);for(let t=0;t<64;t++)o[t]=n.W[t]+r[t];const s=R(o)-n.$-i;s<f&&(f=s,c=t)}if(c<0||e.length<n&&f>o)e.push({st:[s],W:r,$:i});else{const t=e[c];t.st.push(s);for(let n=0;n<64;n++)t.W[n]+=r[n];t.$=R(t.W)}}e.length||e.push({st:[],W:new Uint32Array(64),$:0});const s=new Uint8Array(t.st);let i=2*t.st;const c=e.map((n,o)=>{for(const t of n.st)s[t]=o;let r=Tt[0],e=1/0;for(const o of Tt){const s=t.ft(n.st,o);s<e&&(e=s,r=o)}const c=p(t.ct(n.st,r,128));return i+=e+3*c.u+40,{config:r,code:c}});return{L:s,J:c,write:(t,n,o)=>{const r=c[s[n]];m(t,r.code,r.config,o)},$:i}}function Z(t,n="JXL_JPEG"){return Object.assign(new Error("JPEG: "+t),{code:n})}function D(t,n,o){const r=[];if(n>0){const o=new Uint32Array(2048);let e=0;for(const n of t)o[Math.min(2047,Math.max(0,n+1024))]++,e++;let s=0,i=e/(n+1);for(let t=0;t<2048&&r.length<n;t++)s+=o[t],s>i&&(r.push(t-1025),i=e*(r.length+1)/(n+1))}const e=r.length+1,s=new Uint8Array(39*e);for(let t=0;t<e;t++)for(let n=0;n<qt;n++)s[(0+n)*e+t]=t,s[(13+n)*e+t]=o?e:e+(t>>1),s[(26+n)*e+t]=o?e:e+(e-1>>1)+1+(t>>1);let i=0;for(const t of s)i=Math.max(i,t+1);return{thresholds:r,lt:e,map:s,ut:i,ht:t=>{let n=0;for(const o of r)t>o&&n++;return n},yt:(t,n)=>s[(t<2?1^t:2)*qt*e+n],wt:(t,n)=>(Math.min(t,64)<8?Math.min(t,64):4+(Math.min(t,64)>>1))*i+n,dt:t=>37*i+458*t,st:495*i}}function Y(t,n,o){const r=n.map(()=>S(o)),e=r.map(()=>new Uint32Array(257));n.forEach((t,n)=>T(null,e[n],t.data,t.w,t.h,r[n])),X(t,{H:!1,K:[]});const s=L(t,E(r)),i=v(t,s,e,t=>r.indexOf(t));n.forEach((n,o)=>T(t,i[o+1].code,n.data,n.w,n.h,r[o]))}function*H(t,o={}){const{width:i,height:c,components:a,alpha:h}=t,y=1===a.length,w=t.quantScale||1;let d=t.quantFieldBase||1;for(;d/(2040*w)<1/16384;)d*=2;const M=t.ycbcr||y,g=y?[0,0,0]:M?[1,0,2]:[0,1,2],U=g.map(t=>a[t]),S=o.orders?g.map(t=>o.orders[t].map(t=>jt[t])):[jt,jt,jt],E=t=>1===t?0:2===t?1:-1,L=U.map(t=>E(t.h)),J=U.map(t=>E(t.v));if(L.includes(-1)||J.includes(-1))throw Z("sampling factors other than one or two");const X=Math.max(...L),v=Math.max(...J),T=t=>X-L[t],_=t=>v-J[t];if(!M&&(X||v))throw Z("an RGB JPEG with subsampling");const N=Math.ceil(i/(8<<X))<<X,C=Math.ceil(c/(8<<v))<<v,O=Math.ceil(i/ut),P=Math.ceil(c/ut),q=O*P,F=Math.ceil(N/256),G=F*Math.ceil(C/256),j=1===q,k=(t,n,o)=>{const r=U[t];return y&&1!==t?-1:64*(o*r.stride+n)},z=t=>{let n=1024;for(;t%n;)n>>=1;return n},R=U.map(t=>M?1:t.quant[0]/z(t.quant[0])),H=U.map(t=>M?0:1024/z(t.quant[0])),Q=new Int32Array(N*C);for(let t=0;t<C;t++)for(let n=0;n<N;n++)Q[t*N+n]=U[1].coeffs[k(1,n,t)]*R[1]+H[1];const K=U[1].quant,V=(K[8]+K[16]+K[24]+K[32]+K[40])/w,W=N*C,$=W<256?0:Math.max(1,Math.min(7,r(W)-r(V)-7));let tt=D(Q,$,y);const nt=new ct(256);if(f(nt,i,c,y?1:3,!!h,{orientation:t.orientation,colorSpace:t.colorSpace}),nt.write(1,0),nt.write(2,0),nt.write(1,0),nt.write(2,2),nt.write(8,111),nt.write(1,M?1:0),M)for(let t=0;t<3;t++)nt.write(2,0===L[t]&&0===J[t]?0:1===L[t]&&1===J[t]?1:1===L[t]?2:3);nt.write(2,0),h&&nt.write(2,0),l(nt,h);const ot=[0,1,2].map(()=>new Int32Array(1024)),rt=(t,o)=>{const r=t%O*32,e=32*(t/O|0),s=Math.min(32,N-r),i=Math.min(32,C-e);for(let t=0;t<i;t++)for(let i=0;i<s;i++)for(const s of[1,0,2]){const c=T(s),f=_(s),l=i>>c,a=t>>f;if(l<<c!==i||a<<f!==t)continue;const u=k(s,(r>>c)+l,(e>>f)+a),h=U[s].coeffs;let y=0;if(u>=0)for(let t=1;t<64;t++)h[u+t]&&y++;const w=ot[s],d=0===l?0===a?32:w[32*(a-1)]:0===a?w[32*a+l-1]:w[32*(a-1)+l]+w[32*a+l-1]+1>>1;w[32*a+l]=y;const p=tt.yt(s,tt.ht(Q[(e+t)*N+r+i]));o(tt.wt(d,p),y);const M=tt.dt(p);let A=y>4?0:1,g=y;for(let t=1;t<64&&g;t++){const r=h[u+S[s][t]];o(M+kt(g,t,A),n(r)),A=r?1:0,g-=A}}},et=($>0?3:2)*q+G;let st=0;const it=function*(t){tt=t;const n=new Nt(t.st);for(let t=0;t<q;t++)rt(t,(t,o)=>n.add(t,o)),yield++st/et;return(o.coding||B)(n,o.clusters)};let ft=yield*it(tt);if($>0){const t=tt,n=D(Q,0,y),o=yield*it(n);o.$<=ft.$?ft=o:tt=t}const lt=Array.from({length:j?1:2+G+q},()=>null),at=t=>lt[j?0:t]||(lt[j?0:t]=new ct(4096)),ht=new Uint32Array(lt.length);let yt=0;const wt=t=>{t=j?0:t;const n=Math.ceil(lt[t].V/8);yt+=n-ht[t],ht[t]=n,s(yt)},dt=at(0);dt.write(1,0);const pt=(t,n)=>{const o=t*ut,r=n*ut,e=Math.min(ut,i-o),s=Math.min(ut,c-r),f=new Int32Array(e*s);for(let t=0;t<s;t++)for(let n=0;n<e;n++)f[t*e+n]=h[4*((r+t)*i+o+n)+3];return{w:e,h:s,data:f}};for(let t=0;t<3;t++)dt.write(16,e(U[t].quant[0]/R[t]/(2040*w)*128));dt.write(2,3),dt.write(16,57343),dt.write(2,1),dt.write(5,0),dt.write(1,0),dt.write(4,0),dt.write(4,tt.thresholds.length);for(const t of tt.thresholds)dt.t([[4,0],[8,16],[16,272],[32,65808]],n(t));dt.write(4,0),dt.write(4,0),I(dt,tt.map),dt.write(1,0),dt.write(2,0),dt.write(16,0),dt.write(16,0),dt.write(8,128),dt.write(8,128),dt.write(1,0),h&&Y(dt,[j?pt(0,0):{w:0,h:0,data:new Int32Array(0)}],Mt),wt(0);for(let n=0;n<G;n++){const o=at(1+n),e=n%F*256,s=256*(n/F|0),i=Math.min(256,N-e),c=Math.min(256,C-s);o.write(2,0),Y(o,[1,0,2].map(t=>{const n=i>>T(t),o=c>>_(t),r=new Int32Array(n*o),f=R[t],l=H[t];for(let i=0;i<o;i++)for(let o=0;o<n;o++){const c=k(t,(e>>T(t))+o,(s>>_(t))+i);r[i*n+o]=c<0?0:U[t].coeffs[c]*f+l}return{w:n,h:o,data:r}}),Mt);const f=i*c,l=r(f);l&&o.write(l,f-1);const a=i+7>>3,u=c+7>>3,h=new Int32Array(2*f).fill(d-1,f);if(t.quantFields)for(let n=0;n<c;n++)for(let o=0;o<i;o++)h[f+n*i+o]=t.quantFields[(s+n)*N+e+o]-1;Y(o,[{w:a,h:u,data:new Int32Array(a*u)},{w:a,h:u,data:new Int32Array(a*u)},{w:f,h:2,data:h},{w:i,h:c,data:new Int32Array(f)}],d>1?Mt:0),wt(1+n),yield++st/et}const At=at(1+G);At.write(1,0),At.write(3,7),At.write(16,e(d/(2040*w))),Y(At,[0,1,2].map(t=>{const n=new Int32Array(64),o=U[t].quant;for(let t=0;t<8;t++)for(let r=0;r<8;r++)n[8*r+t]=o[8*t+r];return{w:8,h:8,data:n}}),Mt);for(let t=1;t<17;t++)At.write(3,0);if(q>1&&At.write(r(q),0),o.orders){At.t([[0,95],[0,19],[0,0],[13,0]],1);const t=[];for(const n of g){const r=Array.from({length:64},(t,n)=>n),e=o.orders[n].map(t=>{const n=r.indexOf(t);return r.splice(n,1),n});let s=64;for(;s>1&&!e[s-1];)s--;t.push(s-1,...e.slice(1,s))}const n=A(0),r=new Uint32Array(64);for(const o of t)b(n,o,r);const e=p(r);x(At,{L:new Uint8Array(8),J:[{config:n,code:e}]});for(const o of t)m(At,e,n,o)}else At.write(2,2);ft.writeHistograms?ft.writeHistograms(At):x(At,{L:ft.L,J:ft.J}),wt(1+G);for(let t=0;t<q;t++){const n=at(2+G+t);rt(t,(t,o)=>ft.write(n,t,o)),ft.flush&&ft.flush(n),h&&!j&&Y(n,[pt(t%O,Math.floor(t/O))],Mt),wt(2+G+t),yield++st/et}return u(nt,function(t){return t.map(t=>t?t.finish():new Uint8Array(0))}(lt))}function*Q(t,n,o){if(n<3&&!o)return yield*H(t);let r=o;try{const o=H(t);let e,s;for(;!(e=o.next()).done;)if(s=yield e.value/2,s&&r&&e.value<1)return o.return(),r;if((!r||e.value.length<r.length)&&(r=e.value),s||n<3)return r;const i=n<4?1:3,c=H(t,{clusters:{maxClusters:32,newClusterCost:160}});for(;!(e=c.next()).done;)if(s=yield.5+e.value/(2*i),s&&e.value<1)return c.return(),r;if(e.value.length<r.length&&(r=e.value),s||n<4)return r;const f=function*(t){const n=Pt.map(t=>(7&t)<<3|t>>3),o=t.map(()=>new Uint32Array(64)),r=t.reduce((t,n)=>t+n.coeffs.length,0);let e=0;for(let s=0;s<t.length;s++){const{coeffs:i}=t[s],c=o[s];for(let t=0;t<i.length;t+=65536){const o=Math.min(t+65536,i.length);for(let r=t;r<o;r+=64)for(let t=1;t<64;t++)i[r+n[t]]&&c[t]++;if(e+=o-t,yield e/r)return null}}return o.map(t=>[0,...Array.from({length:63},(t,n)=>n+1).sort((n,o)=>Math.floor(t[o]/8)-Math.floor(t[n]/8)||n-o)])}(t.components);for(;!(e=f.next()).done;)if(yield.5+(1+e.value)/6)return f.return(),r;const l=H(t,{orders:e.value});for(;!(e=l.next()).done;)if(s=yield.5+(2+e.value)/6,s&&e.value<1)return l.return(),r;return e.value.length<r.length?e.value:r}catch(t){if(!r||(!(t instanceof RangeError)||t.code)&&"JXL_SIZE"!==t.code)throw t;return r}}function K(t,n){if(!n)return void t.write(1,0);const r=o(n);t.write(1,1),t.write(3,r),t.write(r,n-(1<<r))}function V(t){let n=0,o=0;for(let r=0;r<t.length;r++)n+=t[r],t[r]&&(o=r+1);const r=new Uint16Array(o||1);if(!n)return r[0]=4096,r;let e=0;for(let s=0;s<o;s++)t[s]&&(e+=r[s]=Math.max(1,Math.round(4096*t[s]/n)));for(;4096!==e;){const s=e<4096?1:-1;let i=-1,c=-1/0;for(let e=0;e<o;e++)if(t[e]&&(s>0||r[e]>1)){const o=s*(4096*t[e]-r[e]*n);o>c&&(i=e,c=o)}r[i]+=s,e+=s}return r}function W(t,n){const r=[];let e=0;for(let t=0;t<n.length;t++)n[t]&&r.push(t),n[t]>n[e]&&(e=t);if(r.length<=2){t.write(1,1),t.write(1,r.length-1);for(const n of r)K(t,n);return void(2===r.length&&t.write(12,n[r[0]]))}t.write(1,0),t.write(1,0),t.write(3,7),t.write(3,5),K(t,n.length-3);const s=new Uint8Array(n.length);let i=0;for(let t=0;t<n.length;t++)t!==e&&n[t]&&(s[t]=o(n[t])+1,i=Math.max(i,s[t]+(t<e?1:0)));s[e]=i;for(const n of s)t.write(zt[n],Rt[n]);for(let o=0;o<n.length;o++)if(o!==e&&s[o]>1){const r=s[o]-1;t.write(r,n[o]-(1<<r))}}function $(t,n){const o=1<<n,r=4096>>n,e=new Uint16Array(t.length+1),s=new Uint16Array(4096);let i=-1;for(let n=0;n<t.length;n++)e[n+1]=e[n]+t[n],4096===t[n]&&(i=n);if(i>=0){for(let t=0;t<4096;t++)s[t]=t;return{starts:e,reverse:s}}const c=new Int32Array(o),f=new Uint16Array(o),l=new Int32Array(o),a=[],u=[];c.set(t);for(let t=0;t<o;t++)c[t]<r?a.push(t):c[t]>r&&u.push(t);for(;u.length;){const t=u.pop(),n=a.pop(),o=r-c[n];c[t]-=o,f[n]=t,l[n]=c[t]-c[n],c[t]<r?a.push(t):c[t]>r&&u.push(t)}for(let t=0;t<o;t++)for(let n=0;n<r;n++){const o=n<c[t],i=o?t:f[t],a=o?n:n+l[t];s[e[i]+a]=t*r+n}return{starts:e,reverse:s}}function tt(t,n){const o=B(t,n),e=o.J.map(()=>[]);for(let n=0;n<t.st;n++)t.it[n]&&e[o.L[n]].push(n);const s=o.J.map(({config:n},o)=>({config:n,counts:V(t.ct(e[o],n,256))})),i=Math.max(5,r(Math.max(...s.map(t=>t.counts.length))));for(const t of s)Object.assign(t,$(t.counts,i));const c=new ct;c.write(1,0),o.L.length>1&&I(c,o.L),c.write(1,0),c.write(2,i-5);for(const t of s)g(c,t.config,i);for(const t of s)W(c,t.counts);const f=new Uint32Array(Bt),l=new Uint8Array(Bt),a=new Uint16Array(Bt),u=[0,0,0];let h=0;return{$:o.$,write:(t,n,r)=>{f[h]=r,l[h++]=o.L[n]},flush:t=>{let n=1245184;for(let t=h-1;t>=0;t--){const o=s[l[t]];U(o.config,f[t],u);const r=u[0],e=o.counts[r];f[t]=u[2],l[t]=u[1],n>>>20>=e&&(a[t]=65535&n,l[t]|=64,n>>>=16);const i=Math.floor(n/e);n=4096*i+o.reverse[o.starts[r]+n-i*e]}t.write(32,n);for(let n=0;n<h;n++){64&l[n]&&t.write(16,a[n]);const o=63&l[n];o&&t.write(o,f[n])}h=0},writeHistograms:t=>t.append(c)}}function*nt(n,o,r){if(o<2)return yield*Q(n,o,r);let e=yield*t(Q(n,o,r),0,2);if(yield.5)return e;try{const t=H(n,{coding:tt});let o;for(;!(o=t.next()).done;)if((yield.5+o.value/2)&&o.value<1)return t.return(),e;o.value.length<e.length&&(e=o.value)}catch(t){if((!(t instanceof RangeError)||t.code)&&"JXL_SIZE"!==t.code)throw t}return e}function ot(t,n,o,r){return function(t){let n;for(;!(n=t.next()).done;);return n.value}(rt(t,n,o,r))}function rt(t,n,o,r){return j(t,n,o,r,nt)}const et=Object.freeze({bytes:16777216,pixels:24e6,edge:16384}),st=Object.freeze({bytes:16777216,pixels:4e7,edge:16384}),it=[1];for(let t=1;t<=32;t++)it.push(2*it[t-1]);class ct{constructor(t=4096){this.bytes=new Uint8Array(t),this.at=0,this.Mt=0,this.pending=0}write(t,n){if(!(n>=0&&n<it[t]))throw new Error("bit write out of range: "+t+" bits, "+n);let o=this.Mt+n*(1<<this.pending),r=this.pending+t;this.at+5>=this.bytes.length&&this.grow();const e=this.bytes;for(;r>=8;)e[this.at++]=255&o,o=Math.floor(o/256),r-=8;this.Mt=o,this.pending=r}t(t,n){for(let o=0;o<4;o++){const[r,e]=t[o];if(n>=e&&n-e<it[r])return this.write(2,o),void(r&&this.write(r,n-e))}throw new Error("U32 value out of range: "+n)}o(){this.pending&&(this.at+1>=this.bytes.length&&this.grow(),this.bytes[this.at++]=this.Mt,this.Mt=0,this.pending=0)}get V(){return 8*this.at+this.pending}grow(t=0){const n=et.bytes+64;if(this.at+t+16>n)throw Object.assign(new Error("The encoded picture exceeds 16 MiB."),{code:"JXL_SIZE"});const o=new Uint8Array(Math.min(n,Math.max(2*this.bytes.length,this.at+t+16)));o.set(this.bytes.subarray(0,this.at)),this.bytes=o}append(t){if(this.at+t.at+8>=this.bytes.length&&this.grow(t.at+8),this.pending)for(let n=0;n<t.at;n++)this.write(8,t.bytes[n]);else this.bytes.set(t.bytes.subarray(0,t.at),this.at),this.at+=t.at;t.pending&&this.write(t.pending,t.Mt)}finish(){const t=this.at+(this.pending?1:0),n=this.bytes.slice(0,t);return this.pending&&(n[this.at]=this.Mt),n}}const ft=(t,n)=>"number"==typeof t?n(t):{...t,at:o=>n(t.at(o))},lt=(t,n)=>Object.assign(new Error(n),{code:t}),at={channel:null,weighted:null,fill:null},ut=256,ht=[1,2,3,4,0,5,17,6,16,7,8,9,10,11,12,13,14,15],yt=[2,4,3,2,2,4],wt=[0,7,3,2,1,15],dt=[0,0,0],pt=3,Mt=5,At=A(4),gt=Object.freeze({T:224,minLength:7,_:At}),Ut=A(0),bt=[A(0),A(4),A(4,1,1),A(3,0,1)],mt=(t,n,o,r)=>o?r?t[n]+256*t[n+3]:t[n]:t[n]+256*t[n+1]+65536*t[n+2]+(r?16777216*t[n+3]:0),It=Float64Array.of(.3535533905932738,.3535533905932738,.3535533905932738,.3535533905932738,.3535533905932738,.3535533905932738,.3535533905932738,.3535533905932738,.4903926402016152,.4157348061512726,.27778511650980114,.09754516100806417,-.0975451610080641,-.277785116509801,-.4157348061512727,-.4903926402016152,.46193976625564337,.19134171618254492,-.19134171618254486,-.46193976625564337,-.4619397662556434,-.19134171618254517,.191341716182545,.46193976625564326,.4157348061512726,-.0975451610080641,-.4903926402016152,-.2777851165098011,.2777851165098009,.4903926402016152,.09754516100806439,-.41573480615127256,.3535533905932738,-.35355339059327373,-.35355339059327384,.3535533905932737,.35355339059327384,-.35355339059327334,-.35355339059327356,.3535533905932733,.27778511650980114,-.4903926402016152,.09754516100806415,.4157348061512728,-.41573480615127256,-.09754516100806401,.4903926402016153,-.27778511650980076,.19134171618254492,-.4619397662556434,.46193976625564326,-.19134171618254495,-.19134171618254528,.46193976625564337,-.4619397662556432,.19134171618254478,.09754516100806417,-.2777851165098011,.4157348061512728,-.4903926402016153,.4903926402016152,-.4157348061512725,.27778511650980076,-.09754516100806429),xt=Float64Array.from({length:64},(t,n)=>{const o=.26236426446749106*Math.max(0,5*Math.sqrt((7&n)*(7&n)+(n>>3)*(n>>3))/Math.sqrt(98)-1);let r=1,e=1;for(let t=1;t<30;t++)e+=r=r*o/t;return e}),St=[4,4,4,4,3,2,6,8],Et=[0,.125,.25,.5,.25,.25,.25,.25],Lt=[.9299455010825141,.945349926692846,.9500648966626563],Jt=10.5*st.pixels,Xt=(t,n)=>Math.abs(t)<2?t*Lt[n]:t-.145/t,vt=(t,n,o)=>{const r=t+1.402*o,e=t-.344136286*n-.714136286*o,s=t+1.772*n;return r*r+e*e+s*s},Tt=[A(0),A(1),A(2),A(3),A(4),A(4,1,1),A(5,1,1),A(2,0,1),A(3,0,1)],_t=A(4,1,1);class Nt{constructor(t){this.st=t,this.small=new Uint32Array(64*t),this.At=Array.from({length:t},()=>null),this.it=new Float64Array(t)}add(t,n){if(this.it[t]++,n<64)return void this.small[64*t+n]++;const o=this.At[t]||(this.At[t]=new Map);o.set(n,(o.get(n)||0)+1)}ct(t,n,o=64){const r=new Uint32Array(o);for(const o of t){const t=64*o;for(let o=0;o<64;o++)this.small[t+o]&&(r[k(n,o)]+=this.small[t+o]);const e=this.At[o];if(e)for(const[t,o]of e)r[k(n,t)]+=o}return r}ft(t,n){let r=R(this.ct(t,n));for(const e of t){const t=64*e;for(let e=n.S;e<64;e++)this.small[t+e]&&(r+=this.small[t+e]*(o(e)-n.m-n.I));const s=this.At[e];if(s)for(const[t,e]of s)r+=e*(o(t)-n.m-n.I)}return r}}const Ct=[0,0,0],Ot=[1];for(let t=1;t<32;t++)Ot.push(Ot[t-1]/2);const Pt=[0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63],qt=13,Ft=[0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,15,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30],Gt=[0,0,31,62,62,93,93,93,93,123,123,123,123,152,152,152,152,152,152,152,152,180,180,180,180,180,180,180,180,180,180,180,180,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206],jt=Pt.map(t=>(7&t)<<3|t>>3),kt=(t,n,o)=>2*(Gt[t]+Ft[n])+o,zt=[5,4,4,4,4,4,3,3,3,3,3,6,7],Rt=[17,11,15,3,9,7,4,2,5,6,0,33,1],Bt=196608;export{st as LIMITS,ot as encodePhoto,rt as encodePhotoSteps};
@@ -0,0 +1,2 @@
1
+ /*! Rapier JXL 2.2.1 | MIT License Copyright (c) 2026 rapier.website Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
2
+ function*t(t,n,o){let r,e;for(;!(r=t.next(e)).done;)e=yield ot(r.value,t=>(n+t)/o);return r.value}function n(t){return t>=0?2*t:2*-t-1}function o(t){return 31-Math.clz32(t)}function r(t){return t<=1?0:32-Math.clz32(t-1)}function e(t){if(0===t)return 0;const n=t<0?32768:0;if(!((t=Math.abs(t))<65520))throw new Error("half float out of range: "+t);let o=0,r=t;for(;r>=2;)r/=2,o++;for(;r<1;)r*=2,o--;o<-14?(r=16384*t,o=-15):r-=1;let e=Math.round(1024*r);return 1024===e&&(e=0,o++),n|o+15<<10|e}function s(t){if(t>W.bytes)throw rt("JXL_SIZE","The encoded picture exceeds 16 MiB.")}function i(t){try{return t()}catch(t){if(t instanceof RangeError&&!t.code)throw rt("JXL_MEMORY","Not enough memory for this picture.");throw t}}function c(t,n){t.t([[9,1],[13,1],[18,1],[30,1]],n)}function f(t,n,o,r,e,{xyb:s=!1,orientation:i=1,colorSpace:f}={}){t.write(16,2815),t.write(1,0),c(t,o),t.write(3,0),c(t,n),t.write(1,0);const l=1!==i;t.write(1,l?1:0),l&&t.write(6,i-1),t.write(4,8),e?t.write(3,5):t.write(2,0),t.write(1,s?1:0),3===r&&"display-p3"===f?t.write(21,903568):3===r?t.write(1,1):t.write(15,14100),l&&t.write(1,1),t.write(2,0),t.write(1,1),t.o()}function l(t,n){t.write(n?7:5,0),t.write(11,1)}function*a(t,n,o,r){if(t.pooled){const n=yield t;return n?(n.results.forEach((t,n)=>r(n,t)),n.hurried):null}let e=!1;for(let r=0;r<n;r++)if(o(r),e=yield t.at(r),e&&t.stop(r))return null;return e}function u(t,n){const o=n.map(t=>t.length);!function(t,n){t.write(1,0),t.o();for(const o of n)t.t([[10,0],[14,1024],[22,17408],[30,4211712]],o);t.o()}(t,o);const r=t.finish(),e=r.length+o.reduce((t,n)=>t+n,0);s(e);const i=new Uint8Array(e);i.set(r);let c=r.length;for(const t of n)i.set(t,c),c+=t.length;return i}function h(t,n){const o=new Uint8Array(t.length),r=[];for(let n=0;n<t.length;n++)t[n]>0&&r.push(n);if(!r.length)return o;if(1===r.length)return o[r[0]]=1,o;for(let e=1;;e*=2){const s=r.map(n=>({w:Math.max(t[n],e),i:n,l:null,r:null})).sort((t,n)=>t.w-n.w||t.i-n.i),i=[];let c=0,f=0;const l=()=>c<s.length&&(f>=i.length||s[c].w<=i[f].w)?s[c++]:i[f++];for(;s.length-c+(i.length-f)>1;){const t=l(),n=l();i.push({w:t.w+n.w,i:-1,l:t,r:n})}const a=[[l(),0]];let u=0;for(;a.length;){const[t,n]=a.pop();t.i>=0?(o[t.i]=n,n>u&&(u=n)):a.push([t.l,n+1],[t.r,n+1])}if(u<=n)return o}}function y(t,n,o,r,e,s){const i=[];for(;i.push(r&e),r>>=s;)r--;for(let r=i.length-1;r>=0;r--)t.push(o),n.push(i[r])}function w(t,n){let o=0;for(let r=0;r<n;r++)o=o<<1|1&t,t>>=1;return o}function d(t){const n=new Uint32Array(17),o=new Uint32Array(17),r=new Uint16Array(t.length);for(const o of t)n[o]++;n[0]=0;for(let t=1,r=0;t<=16;t++)r=r+n[t-1]<<1,o[t]=r;for(let n=0;n<t.length;n++)t[n]&&(r[n]=w(o[t[n]]++,t[n]));return r}function p(t){const n=[];for(let o=0;o<t.length;o++)t[o]>0&&n.push(o);const o=n.length,r=n[o-1]+1||1,e=o<=4?new Uint8Array(r):h(t,15).subarray(0,r);let s=0;if(o<=4){n.sort((n,o)=>t[o]-t[n]||n-o),s=4===o&&t[n[0]]>t[n[2]]+t[n[3]]?1:0;const r=o<2?[0]:2===o?[1,1]:3===o?[1,2,2]:s?[1,2,3,3]:[2,2,2,2];n.forEach((t,n)=>{e[t]=r[n]}),n.sort((t,n)=>e[t]-e[n]||t-n)}return{u:r,p:e,M:d(e),A:o&&o<=4?n:null,m:s}}function M(t,n){if(n.u<=1)return;if(n.A){const r=o(n.u-1)+1;t.write(2,1),t.write(2,n.A.length-1);for(const o of n.A)t.write(r,o);return void(4===n.A.length&&t.write(1,n.m))}const r=n.p,e=[],s=[];let i=r.length-1;for(;i>0&&!r[i];)i--;let c=8;for(let t=0;t<=i;){const n=r[t];let o=1;for(;t+o<=i&&r[t+o]===n;)o++;let f=o;if(n&&n!==c&&(e.push(n),s.push(0),f--,c=n),f<3)for(let t=0;t<f;t++)e.push(n),s.push(0);else y(e,s,n?16:17,f-3,n?3:7,n?2:3);t+=o}const f=new Uint32Array(18);for(const t of e)f[t]++;let l=0;for(const t of f)t&&l++;1===l&&(f[e[0]?0:1]=f[e[0]]);const a=h(f,5),u=d(a);let w=18;for(;w>0&&!a[it[w-1]];)w--;t.write(2,0);for(let n=0;n<w;n++){const o=a[it[n]];t.write(ct[o],ft[o])}for(let n=0;n<e.length;n++){const o=e[n];t.write(a[o],u[o]),16===o?t.write(2,s[n]):17===o&&t.write(3,s[n])}}function A(t,n=0,o=0){return{split:t,U:n,I:o,S:1<<t}}function g(t,n,o=15){t.write(r(o+1),n.split),n.split!==o&&(t.write(r(n.split+1),n.U),t.write(r(n.split-n.U+1),n.I))}function b(t,n,r){if(n<t.S)return r[0]=n,r[1]=0,void(r[2]=0);const e=o(n),s=n-(1<<e),i=e-t.U-t.I;r[0]=t.S+(e-t.split<<t.U+t.I|s>>e-t.U<<t.I|s&(1<<t.I)-1),r[1]=i,r[2]=n>>t.I&(1<<i)-1}function m(t,n,o,r=0){b(t,n,lt),o[r+lt[0]]++}function U(t,n,o,r,e=0){b(o,r,lt);const s=e+lt[0];t.write(n.p[s],n.M[s]),lt[1]&&t.write(lt[1],lt[2])}function I(t,n){let o=0;for(const t of n)o=Math.max(o,t);const e=o?r(o+1):0;if(e<=3){if(t.write(1,1),t.write(2,e),e)for(const o of n)t.write(e,o);return}t.write(1,0),t.write(1,0);const s=A(8),i=A(4),c=n.length>=64,f=new Uint32Array(c?257:o+1),l=[];for(let t=0;t<n.length;){let o=1;for(;c&&t+o<n.length&&n[t+o]===n[t];)o++;if(o>=8)l.push([n[t],o-1]),f[n[t]]++,m(i,o-1-7,f,224),t+=o;else{for(let r=0;r<o;r++)l.push([n[t],0]),f[n[t]]++;t+=o}}const a=p(f);if(!c){x(t,{L:new Uint8Array(1),J:[{config:s,code:a}]});for(const[n]of l)U(t,a,s,n);return}const u=new Uint32Array(1);u[0]=1,x(t,{T:{X:224,minLength:7,N:i},L:new Uint8Array([1,0]),J:[{config:A(0),code:p(u)},{config:s,code:a}]});for(const[n,o]of l)U(t,a,s,n),o&&U(t,a,i,o-7,224)}function x(t,{T:n=null,L:r,J:e}){t.write(1,n?1:0),n&&(t.t([[0,224],[0,512],[0,4096],[15,8]],n.X),t.t([[0,3],[0,4],[2,5],[8,9]],n.minLength),g(t,n.N,8)),r.length>1&&I(t,r),t.write(1,1);for(const n of e)g(t,n.config,15);for(const n of e){const r=n.code.u-1;if(r){const n=o(r);t.write(1,1),t.write(4,n),t.write(n,r-(1<<n))}else t.write(1,0)}for(const n of e)M(t,n.code)}function S(t,n=0,o=1){return{_:t,offset:n,C:o,context:-1}}function E(t){return function(t,n){const o=(r,e)=>{if(r===e)return n?t[r].O:t[r];const s=r+e>>1;return function(t,n,o,r){return{P:t,q:n,left:o,right:r}}(n,n?t[s].F:s,o(s+1,e),o(r,s))};return o(0,t.length-1)}(t,0)}function L(t,o){const r=[o],e=[],s=[];for(const t of r){if(t.left){e.push(t.P+1,n(t.q)),r.push(t.left,t.right);continue}t.context=s.length,s.push(t);const o=1===t.C?0:31-Math.clz32(t.C&-t.C);e.push(0,t._,n(t.offset),o,(t.C>>o)-1)}const i=new Uint32Array(64);for(const t of e)m(wt,t,i);const c=p(i);x(t,{L:new Uint8Array(6),J:[{config:wt,code:c}]});for(const n of e)U(t,c,wt,n);return s}function J(t,n){const o=[[3,0],[6,8],[10,72],[13,1096]];if("rct"===n.type)t.write(2,0),t.t(o,n.G),t.t([[0,6],[2,0],[4,2],[6,10]],n.j??6);else if("palette"===n.type)t.write(2,1),t.t(o,n.G),t.t([[0,1],[0,3],[0,4],[13,1]],n.k),t.t([[8,0],[10,256],[12,1280],[16,5376]],n.B),t.t([[0,0],[8,1],[10,257],[16,1281]],n.R??0),t.write(4,n._??0);else{if("squeeze"!==n.type)throw new Error("unknown transform "+n.type);{t.write(2,2);const r=n.Z??[];t.t([[0,0],[4,1],[6,9],[8,41]],r.length);for(const n of r)t.write(1,n.D?1:0),t.write(1,n.Y?1:0),t.t(o,n.G),t.t([[0,1],[0,2],[0,3],[4,4]],n.k)}}}function T(t,{H:n=!0,K:o=[]}={}){t.write(1,n?1:0),t.write(1,1),t.t([[0,0],[0,1],[4,2],[8,18]],o.length);for(const n of o)J(t,n)}function X(t,n,o,r=t=>t.context,e=()=>wt){const s=new Uint8Array(n.length+1);for(const t of n)s[t.context]=r(t)+1;const i=new Uint32Array(2);i[1]=1;const c=[{config:wt,code:p(i)}],f=Math.max(...s);for(let t=0;t<f;t++)c.push({config:e(t),code:p(o[t])});return x(t,{T:yt,L:s,J:c}),c}function N(t,o,r,e,s,i,c=!1){if(et.channel?.(t,o,r,e,s,i,c))return;const f=i._,l=i.offset,a=i.C,u=i.config||wt,h=ht;let y=0;const w=(n,r=u,e=0)=>{t?U(t,o,r,n,e):c&&!e?o[n]++:m(r,n,o,c?o.length-33:e)},d=()=>{if(y){if(y>=8)w(0),w(y-7-1,h,224);else for(let t=0;t<y;t++)w(0);y=0}},p=(t,o)=>{const e=r[t];let s;1===a?s=e-o-l:(s=Math.round((e-o-l)/a),r[t]=o+l+s*a),0!==s?(d(),w(n(s))):y++};for(let t=0,n=0;t<s;t++)for(let o=0;o<e;o++,n++){let s;if(0===f)s=0;else{const i=o?r[n-1]:t?r[n-e]:0,c=t?r[n-e]:i;if(1===f)s=i;else if(2===f)s=c;else if(3===f)s=(i+c)/2|0;else{const l=i+c-(o&&t?r[n-e-1]:i);if(5===f){const t=i<c?i:c,n=i<c?c:i;s=l<t?t:l>n?n:l}else{if(4!==f)throw new Error("predictor "+f+" is not coded here");s=Math.abs(l-i)<Math.abs(l-c)?i:c}}}p(n,s)}d()}function _(t){const n=t.length-33,r=[0,0,0];let e,s;for(const i of dt){const c=new Uint32Array(257);let f=0;for(let o=0;o<n;o++)t[o]&&(b(i,o,r),c[r[0]]+=t[o],f+=t[o]*r[1]);for(let o=0;o<33;o++)c[224+o]=t[n+o],f+=t[n+o]*Math.max(0,o-12);const l=p(c),a=new nt(128);g(a,i),M(a,l);let u=a.V+f+(1===l.u?1:5+o(l.u-1));for(let t=0;t<c.length;t++)c[t]&&(u+=c[t]*l.p[t]);const h={config:i,W:c,$:u,extra:f};e||(e=h),(!s||u<s.$)&&(s=h)}return[e,s]}function v(t,n,o,{palette:r=!0}={}){const e=n*o;let s=!0,i=!0;for(let n=0,o=0;o<e&&(255===t[n+3]||(s=!1,i))&&(t[n]===t[n+1]&&t[n]===t[n+2]||(i=!1,s));o++,n+=4);const c=i?1:3,f=!s,l=c+(f?1:0),a=n=>pt(t,n,i,f),u=new Map;let h=null;for(let t=0,n=0;r&&n<e;n++,t+=4){const n=a(t);if(0!==n&&!u.has(n)&&(u.set(n,1),u.size>=2048))break}if(r&&u.size<2048){const t=[...u.keys()],n=(t,n)=>t>>>8*n&255,o=t=>(.299*n(t,0)+.587*n(t,1)+.114*n(t,2)+.01)*(4===l?n(t,3):1);t.sort((t,n)=>o(t)-o(n)),h={colours:[0,...t],byte:n}}return{colour:c,alpha:f,channels:l,palette:h}}function C({channels:t,alpha:n,palette:o},r){const e=t-(n?1:0)==1,s=o&&new Map(o.map((t,n)=>[t,n]));return(i,c,f,l,a,u,h)=>{if(r&&!o&&t>=3)r.fill(i,c,f,l,a,u,h);else if(o||!et.fill?.(c,f,l,a,u,h,t,i))for(let r=0;r<h;r++){let h=4*((a+r)*f+l),y=r*u;for(let r=0;r<u;r++,h+=4,y++)if(o)i[0][y]=s.get(pt(c,h,e,n));else if(t>=3){const n=c[h],o=c[h+1],r=c[h+2],e=n-r,s=r+(e>>1),f=o-s;i[0][y]=s+(f>>1),i[1][y]=e,i[2][y]=f,4===t&&(i[3][y]=c[h+3])}else i[0][y]=c[h],2===t&&(i[1][y]=c[h+3])}}}function O(t,n){const{leaves:o,picture:r,M:e}=t,s=C(t,n),i=r.map(()=>new Int16Array(65536));return(t,n,c,f,l,a,u)=>{if(s(i,t,n,c,f,l,a),!e)return void r.forEach((t,n)=>N(null,u[t],i[n],l,a,o[t],!0));const h=u||new nt(l*a*r.length+64);return u||T(h,{H:!0,K:[]}),r.forEach((t,n)=>N(h,e[t],i[n],l,a,o[t])),u?void 0:h.finish()}}function*P(t,n,o,r,e,s,i){const{channels:c,alpha:h,palette:y}=r,w=function(t,n,o=256){const r=Math.ceil(t/o),e=Math.ceil(n/o);return{tt:r,nt:e,ot:Math.ceil(t/(8*o)),rt:Math.ceil(n/(8*o)),et:1===r&&1===e}}(n,o),d=w.tt*w.nt,A=y?2:c,g=Array.from({length:A},()=>S(ut)),b=E(g),m={channels:c,alpha:h,palette:y&&y.colours,rct:s?.type,leaves:g,picture:y?[w.et?1:0]:g.map((t,n)=>n)},U=C(m,s),I=Array.from({length:c},()=>new Int16Array(1024)),x=t=>function(t,n,o,r){const e=r%t.tt*st,s=(r/t.tt|0)*st;return[e,s,Math.min(st,n-e),Math.min(st,o-s)]}(w,n,o,t);let J=null;if(y){const t=y.colours.length;J=new Int16Array(t*c),y.colours.forEach((n,o)=>{for(let r=0;r<c;r++)J[r*t+o]=y.byte(n,r)})}if(!y){const r=t=>{const n=p(t),o=new nt(128);M(o,n);let r=o.V;for(let o=0;o<t.length;o++)t[o]&&(r+=t[o]*(n.p[o]+Math.max(0,o<224?o-1:o-236)));return r},e=Math.min(n,32),s=Math.min(o,32),i=[ut,at].map(t=>({_:t,W:g.map(()=>new Uint32Array(257))}));for(const r of[0,.5,1]){U(I,t,n,Math.floor((n-e)*r),Math.floor((o-s)*r),e,s);for(const t of i)for(let n=0;n<c;n++)N(null,t.W[n],I[n],e,s,S(t._))}g.forEach((t,n)=>{const o=i.map(t=>r(t.W[n])),e=o[1]<o[0]?1:0;t._=i[e]._})}const v=y?[{type:"palette",G:0,k:c,B:y.colours.length}]:c>=3&&0!==s?.type?[{type:"rct",G:0,j:s?.type??6}]:[];let P=g.map(()=>new Uint32Array(33+(y?4096:1024)));J&&N(null,P[0],J,y.colours.length,c,g[0],!0);const q=O(m,s);yield*a({pooled:i,kind:"plan",setup:{...m,sizes:P.map(t=>t.length)},at:t=>(t+1)/(2*d),stop:()=>!1},d,o=>q(t,n,...x(o),P),(t,n)=>function(t,n){t.forEach((t,o)=>{const r=n[o];for(let n=0;n<t.length;n++)t[n]+=r[n]})}(P,n));const F=P.map(_),G=F.reduce((t,n)=>t+n[0].$-n[1].$,0)>27*(w.et?1:d+1)+8?1:0;g.forEach((t,n)=>{t.config=F[n][G].config}),P=F.map(t=>t[G].W);const j=new nt(256);f(j,n,o,r.colour,r.alpha,{colorSpace:e}),function(t,{alpha:n,shift:o=1}){t.write(9,8),n&&t.write(2,0),t.write(2,o),l(t,n)}(j,{alpha:r.alpha});const k=new nt(4096);k.write(1,1),k.write(1,1);const z=X(k,L(k,b),P,t=>g.indexOf(t),t=>g[t].config),B={...m,M:g.map((t,n)=>z[n+1]?.code)},R=O(B,s);T(k,{H:!0,K:v}),J&&N(k,B.M[0],J,y.colours.length,c,g[0]);const Z=[];if(w.et)R(t,n,0,0,n,o,k),yield 1,Z.push(k.finish());else{Z.push(k.finish());for(let t=0;t<w.ot*w.rt+1;t++)Z.push(new Uint8Array(0));const o=Z.length,r=(t,n)=>{Z[o+t]=n};yield*a({pooled:i,kind:"plan",setup:B,at:t=>(d+t+1)/(2*d),stop:()=>!1},d,o=>r(o,R(t,n,...x(o))),r)}return u(j,Z)}function q(t,n,o,r){let e=0;return e+=t[n]*Mt[r],e+=t[n+o]*Mt[r+1],e+=t[n+2*o]*Mt[r+2],e+=t[n+3*o]*Mt[r+3],e+=t[n+4*o]*Mt[r+4],e+=t[n+5*o]*Mt[r+5],e+=t[n+6*o]*Mt[r+6],e+=t[n+7*o]*Mt[r+7],e}function F(t,n,o){const r=new Float64Array(192),e=new Float64Array(64),s=new Float64Array(192);return(i,c)=>{for(let e=0;e<8;e++)for(let s=0;s<8;s++){const f=4*(Math.min(o-1,8*c+e)*n+Math.min(n-1,8*i+s)),l=t[f],a=t[f+1],u=t[f+2],h=8*e+s;r[h]=.299*l+.587*a+.114*u-128,r[64+h]=-.168735892*l-.331264108*a+.5*u,r[128+h]=.5*l-.418687589*a-.081312411*u}for(let t=0;t<3;t++){for(let n=0;n<8;n++)for(let o=0;o<8;o++)e[8*n+o]=q(r,64*t+8*n,1,8*o);for(let n=0;n<8;n++)for(let o=0;o<8;o++)s[64*t+8*n+o]=q(e,o,8,8*n)}return s}}function*G(t,n,o,r,e){const s=Math.ceil(n/8),i=Math.ceil(o/8),c=r>=30?.1+.09*(100-r):53/3e3*r*r-1.15*r+25,f=[0,1,2].map(t=>({h:1,v:1,stride:s,rows:i,quant:Int32Array.from(At,(n,o)=>Math.max(1,Math.round(16*c*(t?18:10)*(o?n:.25)))),coeffs:new Int16Array(s*i*64)})),l=F(t,n,o),a=(t,n)=>{for(let o=t;o<n;o++)for(let t=0;t<s;t++){const n=l(t,o),r=64*(o*s+t);for(let t=0;t<3;t++)for(let o=0;o<64;o++)f[t].coeffs[r+o]=Math.round(16*n[64*t+o]/f[t].quant[o])}};for(let t=0;t<i;t+=32)a(t,Math.min(i,t+32)),yield Math.min(i,t+32)/i;let u=null;for(let n=3;n<t.length;n+=4)if(255!==t[n]){u=t;break}return{width:n,height:o,components:f,quantScale:16,ycbcr:!0,orientation:1,alpha:u,colorSpace:e}}function j(n,o,r,c,f){const{quality:l,colorSpace:a}=function(t={},n=100){if(null===t||"object"!=typeof t)throw rt("JXL_INPUT","Options are an object: {quality, colorSpace}.");if(void 0!==t.quality&&(n=t.quality),"number"!=typeof n||!Number.isFinite(n)||n<1||n>100)throw rt("JXL_INPUT","Quality is a number from 1 to 100.");const o=void 0===t.colorSpace?"srgb":t.colorSpace;if("srgb"!==o&&"display-p3"!==o)throw rt("JXL_INPUT","The colour space is srgb or display-p3.");return{quality:n,colorSpace:o}}(c,90),u=function(t={}){if(null===t||"object"!=typeof t)throw rt("JXL_INPUT","Options are an object.");const n=void 0===t.effort?1:t.effort;if(!Number.isInteger(n)||n<1||n>9)throw rt("JXL_INPUT","Effort is a whole number from 1 to 9.");return n}(c);return function(t,n,o,r){if(function(t,n,o=W){if(!Number.isInteger(t)||!Number.isInteger(n)||t<1||n<1)throw rt("JXL_INPUT","A picture is at least one pixel wide and high, in whole pixels.");if(t>o.edge||n>o.edge)throw rt("JXL_DIMENSIONS","A picture is at most "+o.edge+" pixels on a side.");if(t*n>o.pixels)throw rt("JXL_DIMENSIONS","A picture is at most "+o.pixels.toLocaleString("en-US")+" pixels.")}(n,o,r),!(t instanceof Uint8Array||t instanceof Uint8ClampedArray))throw rt("JXL_INPUT","Pixels are a Uint8Array or Uint8ClampedArray of RGBA bytes.");if(t.length!==n*o*4)throw rt("JXL_INPUT","Pixels are width * height * 4 bytes: straight (not premultiplied) RGBA, row by row.")}(n,o,r,$),function(t){const n=function*(){let o,r;for(;!(o=i(()=>t.next(n.hurry))).done;)yield r=o.value;return r<1&&(yield 1),n.bytes=(s((e=o.value).length),e);var e}();return n.bytes=null,n.hurry=!1,n}(function*(n,o,r,s,i,c,f){if(s>=100)return yield*function*(n,o,r,{shape:e=v(n,o,r),colorSpace:s,rct:i,pooled:c}={}){let f,l;const a=e.palette?[e,{...e,palette:null}]:[e];for(let e=0;e<a.length;e++)try{const l=yield*t(P(n,o,r,a[e],s,i,c),e,a.length);(!f||l.length<f.length)&&(f=l)}catch(t){if("JXL_SIZE"!==t.code)throw t;l=t}if(!f)throw l;return f}(n,o,r,{colorSpace:i});if(c<5)return yield*t(f(yield*t(G(n,o,r,s,i),0,2),c),1,2);const l=yield*t(G(n,o,r,s,i),0,4);let a=yield*t(f(l,4),1,4);if(yield.5)return a;try{const o=yield*t(function*(t,n,o=0){const{width:r,height:s,components:i,quantScale:c}=n,f=i[0].stride,l=i[0].rows,a=f*l,u=gt.length;if(t.byteLength+i.reduce((t,n)=>t+n.coeffs.byteLength,0)+Math.max(a*(10*u+2)+o,7*$.bytes)>Ut)return null;const h=new Float64Array(a*u),y=new Uint16Array(a*u),w=F(t,r,s),d=i.map(t=>t.quant),p=i.map(t=>t.coeffs),M=gt.map(t=>d.map(n=>Float64Array.from(n,n=>n*function(t){const n=e(t);let o=1+(1023&n)/1024,r=(n>>10)-15;for(;r<0;)o/=2,r++;for(;r>0;)o*=2,r--;return o}(4/(2040*c))*8*255/t))),A=new Int16Array(192),g=new Float64Array(3),b=new Int32Array(6),m=new Float64Array(6),U=new Float64Array(6);let I=0,x=0;const S=(t,n,o)=>{let r=0,e=0;const s=bt[o]*d[0][1]*d[0][1]/(c*c);for(let i=1;i<64;i++){if(!o){for(let r=0;r<3;r++){const s=p[r][64*n+i];g[r]=It(s,r)*M[o][r][i]-t[64*r+i],s&&(e+=2+2*(32-Math.clz32(Math.abs(s))))}r+=xt(g[0],g[1],g[2]);continue}for(let n=0;n<3;n++){const r=t[64*n+i],e=M[o][n][i],s=Math.floor(r/e);for(let t=0;t<2;t++){const o=s+t;b[2*n+t]=o,U[2*n+t]=o?2+2*(32-Math.clz32(Math.abs(o))):0,m[2*n+t]=o<-32768||o>32767?1/0:It(o,n)*e-r}}let c=0,f=1/0,l=0;for(let t=0;t<8;t++){const n=xt(m[1&t],m[2+(t>>1&1)],m[4+(t>>2)]),o=n+s*(U[1&t]+U[2+(t>>1&1)]+U[4+(t>>2)]);o<f&&(f=o,c=t,l=n)}if(f===1/0)return{error:1/0,rate:65535};r+=l;for(let t=0;t<3;t++){const n=b[2*t+(c>>t&1)];A[64*t+i]=n,n&&(e+=2+2*(32-Math.clz32(Math.abs(n))))}}return{error:r,rate:e}};for(let t=0;t<l;t++)for(let n=0;n<f;n++){const o=t*f+n,r=w(n,t);for(let t=0;t<u;t++){const n=S(r,o,t),e=o*u+t;h[e]=n.error,y[e]=n.rate,t||(I+=n.error,x+=n.rate)}if(((o+1)%1024==0||o+1===a)&&(yield(o+1)/(3*a)))return null}const E=new Uint8Array(a);let L=0;const J=function*(t,n){let o=0,r=0;for(let e=0;e<a;e++){const s=e*u;let i=0,c=h[s]+t*y[s];for(let n=1;n<u;n++){const o=h[s+n]+t*y[s+n];o<c&&(c=o,i=n)}if(o+=h[s+i],r+=y[s+i],n&&(E[e]=i),((e+1)%1024==0||e+1===a)&&(yield 1/3+(L+(e+1)/a)/147))return null}return L++,{error:o,rate:r}};let T=0,X=Math.max(1,I/Math.max(1,x));for(let t=0;t<24;t++){const t=yield*J(X,!1);if(!t)return null;if(t.error>I)break;X*=2}for(let t=0;t<24;t++){const t=(T+X)/2,n=yield*J(t,!1);if(!n)return null;n.error<=I?T=t:X=t}const N=yield*J(T,!0);if(!N||N.error>I||N.rate>=x||!E.some(t=>t))return null;const _=new Uint8Array(a);for(let t=0;t<l;t++)for(let n=0;n<f;n++){const o=t*f+n,r=E[o];if(_[o]=gt[r],r){S(w(n,t),o,r);for(let t=0;t<3;t++)for(let n=1;n<64;n++)p[t][64*o+n]=A[64*t+n]}if(((o+1)%1024==0||o+1===a)&&(yield 2/3+(o+1)/(3*a)))return null}return{...n,quantFieldBase:4,quantFields:_,reconstructionError:{baseline:I,candidate:N.error}}}(n,l,a.byteLength),2,4);o&&(a=yield*t(f(o,4,a),3,4))}catch(t){if((!(t instanceof RangeError)||t.code)&&"JXL_SIZE"!==t.code)throw t}return a}(n,o,r,l,a,u,f))}function k(t,n){return b(t,n,Jt),Jt[0]}function z(t){let n=0;for(t>=2&&t<4294967296&&(n=31-Math.clz32(t),t*=Tt[n]);t>=1.4142135623730951;)t/=2,n++;for(;t<.7071067811865476;)t*=2,n--;const o=(t-1)/(t+1),r=o*o;let e=o,s=o;for(let t=3;t<30;t+=2)s+=(e*=r)/t;return n+2.885390081777927*s}function B(t){let n=0,o=0;for(const o of t)n+=o;for(const r of t)r&&(o+=r*z(n/r));return o}function R(t,{maxClusters:n=48,newClusterCost:o=320}={}){const r=[];for(let n=0;n<t.st;n++)t.it[n]>0&&r.push(n);r.sort((n,o)=>t.it[o]-t.it[n]);const e=[];for(const s of r){const r=t.ct([s],Et),i=B(r);let c=-1,f=1/0;for(let t=0;t<e.length;t++){const n=e[t],o=new Uint32Array(64);for(let t=0;t<64;t++)o[t]=n.W[t]+r[t];const s=B(o)-n.$-i;s<f&&(f=s,c=t)}if(c<0||e.length<n&&f>o)e.push({st:[s],W:r,$:i});else{const t=e[c];t.st.push(s);for(let n=0;n<64;n++)t.W[n]+=r[n];t.$=B(t.W)}}e.length||e.push({st:[],W:new Uint32Array(64),$:0});const s=new Uint8Array(t.st);let i=2*t.st;const c=e.map((n,o)=>{for(const t of n.st)s[t]=o;let r=St[0],e=1/0;for(const o of St){const s=t.ft(n.st,o);s<e&&(e=s,r=o)}const c=p(t.ct(n.st,r,128));return i+=e+3*c.u+40,{config:r,code:c}});return{L:s,J:c,write:(t,n,o)=>{const r=c[s[n]];U(t,r.code,r.config,o)},$:i}}function Z(t,n="JXL_JPEG"){return Object.assign(new Error("JPEG: "+t),{code:n})}function D(t,n,o){const r=[];if(n>0){const o=new Uint32Array(2048);let e=0;for(const n of t)o[Math.min(2047,Math.max(0,n+1024))]++,e++;let s=0,i=e/(n+1);for(let t=0;t<2048&&r.length<n;t++)s+=o[t],s>i&&(r.push(t-1025),i=e*(r.length+1)/(n+1))}const e=r.length+1,s=new Uint8Array(39*e);for(let t=0;t<e;t++)for(let n=0;n<Nt;n++)s[(0+n)*e+t]=t,s[(13+n)*e+t]=o?e:e+(t>>1),s[(26+n)*e+t]=o?e:e+(e-1>>1)+1+(t>>1);let i=0;for(const t of s)i=Math.max(i,t+1);return{thresholds:r,lt:e,map:s,ut:i,ht:t=>{let n=0;for(const o of r)t>o&&n++;return n},yt:(t,n)=>s[(t<2?1^t:2)*Nt*e+n],wt:(t,n)=>(Math.min(t,64)<8?Math.min(t,64):4+(Math.min(t,64)>>1))*i+n,dt:t=>37*i+458*t,st:495*i}}function Y(t,n,o){const r=n.map(()=>S(o)),e=r.map(()=>new Uint32Array(257));n.forEach((t,n)=>N(null,e[n],t.data,t.w,t.h,r[n])),T(t,{H:!1,K:[]});const s=L(t,E(r)),i=X(t,s,e,t=>r.indexOf(t));n.forEach((n,o)=>N(t,i[o+1].code,n.data,n.w,n.h,r[o]))}function*Q(t,o={}){const{width:i,height:c,components:a,alpha:h}=t,y=1===a.length,w=t.quantScale||1;let d=t.quantFieldBase||1;for(;d/(2040*w)<1/16384;)d*=2;const M=t.ycbcr||y,g=y?[0,0,0]:M?[1,0,2]:[0,1,2],b=g.map(t=>a[t]),S=o.orders?g.map(t=>o.orders[t].map(t=>Ct[t])):[Ct,Ct,Ct],E=t=>1===t?0:2===t?1:-1,L=b.map(t=>E(t.h)),J=b.map(t=>E(t.v));if(L.includes(-1)||J.includes(-1))throw Z("sampling factors other than one or two");const T=Math.max(...L),X=Math.max(...J),N=t=>T-L[t],_=t=>X-J[t];if(!M&&(T||X))throw Z("an RGB JPEG with subsampling");const v=Math.ceil(i/(8<<T))<<T,C=Math.ceil(c/(8<<X))<<X,O=Math.ceil(i/st),P=Math.ceil(c/st),q=O*P,F=Math.ceil(v/256),G=F*Math.ceil(C/256),j=1===q,k=(t,n,o)=>{const r=b[t];return y&&1!==t?-1:64*(o*r.stride+n)},z=t=>{let n=1024;for(;t%n;)n>>=1;return n},B=b.map(t=>M?1:t.quant[0]/z(t.quant[0])),Q=b.map(t=>M?0:1024/z(t.quant[0])),H=new Int32Array(v*C);for(let t=0;t<C;t++)for(let n=0;n<v;n++)H[t*v+n]=b[1].coeffs[k(1,n,t)]*B[1]+Q[1];const K=b[1].quant,V=(K[8]+K[16]+K[24]+K[32]+K[40])/w,W=v*C,$=W<256?0:Math.max(1,Math.min(7,r(W)-r(V)-7));let tt=D(H,$,y);const ot=new nt(256);if(f(ot,i,c,y?1:3,!!h,{orientation:t.orientation,colorSpace:t.colorSpace}),ot.write(1,0),ot.write(2,0),ot.write(1,0),ot.write(2,2),ot.write(8,111),ot.write(1,M?1:0),M)for(let t=0;t<3;t++)ot.write(2,0===L[t]&&0===J[t]?0:1===L[t]&&1===J[t]?1:1===L[t]?2:3);ot.write(2,0),h&&ot.write(2,0),l(ot,h);const rt=[0,1,2].map(()=>new Int32Array(1024)),et=(t,o)=>{const r=t%O*32,e=32*(t/O|0),s=Math.min(32,v-r),i=Math.min(32,C-e);for(let t=0;t<i;t++)for(let i=0;i<s;i++)for(const s of[1,0,2]){const c=N(s),f=_(s),l=i>>c,a=t>>f;if(l<<c!==i||a<<f!==t)continue;const u=k(s,(r>>c)+l,(e>>f)+a),h=b[s].coeffs;let y=0;if(u>=0)for(let t=1;t<64;t++)h[u+t]&&y++;const w=rt[s],d=0===l?0===a?32:w[32*(a-1)]:0===a?w[32*a+l-1]:w[32*(a-1)+l]+w[32*a+l-1]+1>>1;w[32*a+l]=y;const p=tt.yt(s,tt.ht(H[(e+t)*v+r+i]));o(tt.wt(d,p),y);const M=tt.dt(p);let A=y>4?0:1,g=y;for(let t=1;t<64&&g;t++){const r=h[u+S[s][t]];o(M+Ot(g,t,A),n(r)),A=r?1:0,g-=A}}},it=($>0?3:2)*q+G;let ct=0;const ft=function*(t){tt=t;const n=new Lt(t.st);for(let t=0;t<q;t++)et(t,(t,o)=>n.add(t,o)),yield++ct/it;return(o.coding||R)(n,o.clusters)};let lt=yield*ft(tt);if($>0){const t=tt,n=D(H,0,y),o=yield*ft(n);o.$<=lt.$?lt=o:tt=t}const at=Array.from({length:j?1:2+G+q},()=>null),ht=t=>at[j?0:t]||(at[j?0:t]=new nt(4096)),yt=new Uint32Array(at.length);let wt=0;const dt=t=>{t=j?0:t;const n=Math.ceil(at[t].V/8);wt+=n-yt[t],yt[t]=n,s(wt)},pt=ht(0);pt.write(1,0);const Mt=(t,n)=>{const o=t*st,r=n*st,e=Math.min(st,i-o),s=Math.min(st,c-r),f=new Int32Array(e*s);for(let t=0;t<s;t++)for(let n=0;n<e;n++)f[t*e+n]=h[4*((r+t)*i+o+n)+3];return{w:e,h:s,data:f}};for(let t=0;t<3;t++)pt.write(16,e(b[t].quant[0]/B[t]/(2040*w)*128));pt.write(2,3),pt.write(16,57343),pt.write(2,1),pt.write(5,0),pt.write(1,0),pt.write(4,0),pt.write(4,tt.thresholds.length);for(const t of tt.thresholds)pt.t([[4,0],[8,16],[16,272],[32,65808]],n(t));pt.write(4,0),pt.write(4,0),I(pt,tt.map),pt.write(1,0),pt.write(2,0),pt.write(16,0),pt.write(16,0),pt.write(8,128),pt.write(8,128),pt.write(1,0),h&&Y(pt,[j?Mt(0,0):{w:0,h:0,data:new Int32Array(0)}],ut),dt(0);for(let n=0;n<G;n++){const o=ht(1+n),e=n%F*256,s=256*(n/F|0),i=Math.min(256,v-e),c=Math.min(256,C-s);o.write(2,0),Y(o,[1,0,2].map(t=>{const n=i>>N(t),o=c>>_(t),r=new Int32Array(n*o),f=B[t],l=Q[t];for(let i=0;i<o;i++)for(let o=0;o<n;o++){const c=k(t,(e>>N(t))+o,(s>>_(t))+i);r[i*n+o]=c<0?0:b[t].coeffs[c]*f+l}return{w:n,h:o,data:r}}),ut);const f=i*c,l=r(f);l&&o.write(l,f-1);const a=i+7>>3,u=c+7>>3,h=new Int32Array(2*f).fill(d-1,f);if(t.quantFields)for(let n=0;n<c;n++)for(let o=0;o<i;o++)h[f+n*i+o]=t.quantFields[(s+n)*v+e+o]-1;Y(o,[{w:a,h:u,data:new Int32Array(a*u)},{w:a,h:u,data:new Int32Array(a*u)},{w:f,h:2,data:h},{w:i,h:c,data:new Int32Array(f)}],d>1?ut:0),dt(1+n),yield++ct/it}const At=ht(1+G);At.write(1,0),At.write(3,7),At.write(16,e(d/(2040*w))),Y(At,[0,1,2].map(t=>{const n=new Int32Array(64),o=b[t].quant;for(let t=0;t<8;t++)for(let r=0;r<8;r++)n[8*r+t]=o[8*t+r];return{w:8,h:8,data:n}}),ut);for(let t=1;t<17;t++)At.write(3,0);if(q>1&&At.write(r(q),0),o.orders){At.t([[0,95],[0,19],[0,0],[13,0]],1);const t=[];for(const n of g){const r=Array.from({length:64},(t,n)=>n),e=o.orders[n].map(t=>{const n=r.indexOf(t);return r.splice(n,1),n});let s=64;for(;s>1&&!e[s-1];)s--;t.push(s-1,...e.slice(1,s))}const n=A(0),r=new Uint32Array(64);for(const o of t)m(n,o,r);const e=p(r);x(At,{L:new Uint8Array(8),J:[{config:n,code:e}]});for(const o of t)U(At,e,n,o)}else At.write(2,2);lt.writeHistograms?lt.writeHistograms(At):x(At,{L:lt.L,J:lt.J}),dt(1+G);for(let t=0;t<q;t++){const n=ht(2+G+t);et(t,(t,o)=>lt.write(n,t,o)),lt.flush&&lt.flush(n),h&&!j&&Y(n,[Mt(t%O,Math.floor(t/O))],ut),dt(2+G+t),yield++ct/it}return u(ot,function(t){return t.map(t=>t?t.finish():new Uint8Array(0))}(at))}function*H(t,n,o){if(n<3&&!o)return yield*Q(t);let r=o;try{const o=Q(t);let e,s;for(;!(e=o.next()).done;)if(s=yield e.value/2,s&&r&&e.value<1)return o.return(),r;if((!r||e.value.length<r.length)&&(r=e.value),s||n<3)return r;const i=n<4?1:3,c=Q(t,{clusters:{maxClusters:32,newClusterCost:160}});for(;!(e=c.next()).done;)if(s=yield.5+e.value/(2*i),s&&e.value<1)return c.return(),r;if(e.value.length<r.length&&(r=e.value),s||n<4)return r;const f=function*(t){const n=Xt.map(t=>(7&t)<<3|t>>3),o=t.map(()=>new Uint32Array(64)),r=t.reduce((t,n)=>t+n.coeffs.length,0);let e=0;for(let s=0;s<t.length;s++){const{coeffs:i}=t[s],c=o[s];for(let t=0;t<i.length;t+=65536){const o=Math.min(t+65536,i.length);for(let r=t;r<o;r+=64)for(let t=1;t<64;t++)i[r+n[t]]&&c[t]++;if(e+=o-t,yield e/r)return null}}return o.map(t=>[0,...Array.from({length:63},(t,n)=>n+1).sort((n,o)=>Math.floor(t[o]/8)-Math.floor(t[n]/8)||n-o)])}(t.components);for(;!(e=f.next()).done;)if(yield.5+(1+e.value)/6)return f.return(),r;const l=Q(t,{orders:e.value});for(;!(e=l.next()).done;)if(s=yield.5+(2+e.value)/6,s&&e.value<1)return l.return(),r;return e.value.length<r.length?e.value:r}catch(t){if(!r||(!(t instanceof RangeError)||t.code)&&"JXL_SIZE"!==t.code)throw t;return r}}function K(t,n,o,r){return function(t){let n;for(;!(n=t.next()).done;);return n.value}(V(t,n,o,r))}function V(t,n,o,r){return j(t,n,o,r,H)}const W=Object.freeze({bytes:16777216,pixels:24e6,edge:16384}),$=Object.freeze({bytes:16777216,pixels:4e7,edge:16384}),tt=[1];for(let t=1;t<=32;t++)tt.push(2*tt[t-1]);class nt{constructor(t=4096){this.bytes=new Uint8Array(t),this.at=0,this.Mt=0,this.pending=0}write(t,n){if(!(n>=0&&n<tt[t]))throw new Error("bit write out of range: "+t+" bits, "+n);let o=this.Mt+n*(1<<this.pending),r=this.pending+t;this.at+5>=this.bytes.length&&this.grow();const e=this.bytes;for(;r>=8;)e[this.at++]=255&o,o=Math.floor(o/256),r-=8;this.Mt=o,this.pending=r}t(t,n){for(let o=0;o<4;o++){const[r,e]=t[o];if(n>=e&&n-e<tt[r])return this.write(2,o),void(r&&this.write(r,n-e))}throw new Error("U32 value out of range: "+n)}o(){this.pending&&(this.at+1>=this.bytes.length&&this.grow(),this.bytes[this.at++]=this.Mt,this.Mt=0,this.pending=0)}get V(){return 8*this.at+this.pending}grow(t=0){const n=W.bytes+64;if(this.at+t+16>n)throw Object.assign(new Error("The encoded picture exceeds 16 MiB."),{code:"JXL_SIZE"});const o=new Uint8Array(Math.min(n,Math.max(2*this.bytes.length,this.at+t+16)));o.set(this.bytes.subarray(0,this.at)),this.bytes=o}append(t){if(this.at+t.at+8>=this.bytes.length&&this.grow(t.at+8),this.pending)for(let n=0;n<t.at;n++)this.write(8,t.bytes[n]);else this.bytes.set(t.bytes.subarray(0,t.at),this.at),this.at+=t.at;t.pending&&this.write(t.pending,t.Mt)}finish(){const t=this.at+(this.pending?1:0),n=this.bytes.slice(0,t);return this.pending&&(n[this.at]=this.Mt),n}}const ot=(t,n)=>"number"==typeof t?n(t):{...t,at:o=>n(t.at(o))},rt=(t,n)=>Object.assign(new Error(n),{code:t}),et={channel:null,weighted:null,fill:null},st=256,it=[1,2,3,4,0,5,17,6,16,7,8,9,10,11,12,13,14,15],ct=[2,4,3,2,2,4],ft=[0,7,3,2,1,15],lt=[0,0,0],at=3,ut=5,ht=A(4),yt=Object.freeze({X:224,minLength:7,N:ht}),wt=A(0),dt=[A(0),A(4),A(4,1,1),A(3,0,1)],pt=(t,n,o,r)=>o?r?t[n]+256*t[n+3]:t[n]:t[n]+256*t[n+1]+65536*t[n+2]+(r?16777216*t[n+3]:0),Mt=Float64Array.of(.3535533905932738,.3535533905932738,.3535533905932738,.3535533905932738,.3535533905932738,.3535533905932738,.3535533905932738,.3535533905932738,.4903926402016152,.4157348061512726,.27778511650980114,.09754516100806417,-.0975451610080641,-.277785116509801,-.4157348061512727,-.4903926402016152,.46193976625564337,.19134171618254492,-.19134171618254486,-.46193976625564337,-.4619397662556434,-.19134171618254517,.191341716182545,.46193976625564326,.4157348061512726,-.0975451610080641,-.4903926402016152,-.2777851165098011,.2777851165098009,.4903926402016152,.09754516100806439,-.41573480615127256,.3535533905932738,-.35355339059327373,-.35355339059327384,.3535533905932737,.35355339059327384,-.35355339059327334,-.35355339059327356,.3535533905932733,.27778511650980114,-.4903926402016152,.09754516100806415,.4157348061512728,-.41573480615127256,-.09754516100806401,.4903926402016153,-.27778511650980076,.19134171618254492,-.4619397662556434,.46193976625564326,-.19134171618254495,-.19134171618254528,.46193976625564337,-.4619397662556432,.19134171618254478,.09754516100806417,-.2777851165098011,.4157348061512728,-.4903926402016153,.4903926402016152,-.4157348061512725,.27778511650980076,-.09754516100806429),At=Float64Array.from({length:64},(t,n)=>{const o=.26236426446749106*Math.max(0,5*Math.sqrt((7&n)*(7&n)+(n>>3)*(n>>3))/Math.sqrt(98)-1);let r=1,e=1;for(let t=1;t<30;t++)e+=r=r*o/t;return e}),gt=[4,4,4,4,3,2,6,8],bt=[0,.125,.25,.5,.25,.25,.25,.25],mt=[.9299455010825141,.945349926692846,.9500648966626563],Ut=10.5*$.pixels,It=(t,n)=>Math.abs(t)<2?t*mt[n]:t-.145/t,xt=(t,n,o)=>{const r=t+1.402*o,e=t-.344136286*n-.714136286*o,s=t+1.772*n;return r*r+e*e+s*s},St=[A(0),A(1),A(2),A(3),A(4),A(4,1,1),A(5,1,1),A(2,0,1),A(3,0,1)],Et=A(4,1,1);class Lt{constructor(t){this.st=t,this.small=new Uint32Array(64*t),this.At=Array.from({length:t},()=>null),this.it=new Float64Array(t)}add(t,n){if(this.it[t]++,n<64)return void this.small[64*t+n]++;const o=this.At[t]||(this.At[t]=new Map);o.set(n,(o.get(n)||0)+1)}ct(t,n,o=64){const r=new Uint32Array(o);for(const o of t){const t=64*o;for(let o=0;o<64;o++)this.small[t+o]&&(r[k(n,o)]+=this.small[t+o]);const e=this.At[o];if(e)for(const[t,o]of e)r[k(n,t)]+=o}return r}ft(t,n){let r=B(this.ct(t,n));for(const e of t){const t=64*e;for(let e=n.S;e<64;e++)this.small[t+e]&&(r+=this.small[t+e]*(o(e)-n.U-n.I));const s=this.At[e];if(s)for(const[t,e]of s)r+=e*(o(t)-n.U-n.I)}return r}}const Jt=[0,0,0],Tt=[1];for(let t=1;t<32;t++)Tt.push(Tt[t-1]/2);const Xt=[0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63],Nt=13,_t=[0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,15,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30],vt=[0,0,31,62,62,93,93,93,93,123,123,123,123,152,152,152,152,152,152,152,152,180,180,180,180,180,180,180,180,180,180,180,180,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206],Ct=Xt.map(t=>(7&t)<<3|t>>3),Ot=(t,n,o)=>2*(vt[t]+_t[n])+o;export{$ as LIMITS,K as encodePhoto,V as encodePhotoSteps};
@@ -0,0 +1,2 @@
1
+ /*! Rapier JXL 2.2.1 | MIT License Copyright (c) 2026 rapier.website Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
2
+ const t={channel:null,weighted:null,fill:null},n=Object.freeze({bytes:16777216,pixels:24e6,edge:16384}),o=[1];for(let t=1;t<=32;t++)o.push(2*o[t-1]);class e{constructor(t=4096){this.bytes=new Uint8Array(t),this.at=0,this.t=0,this.pending=0}write(t,n){if(!(n>=0&&n<o[t]))throw new Error("bit write out of range: "+t+" bits, "+n);let e=this.t+n*(1<<this.pending),r=this.pending+t;this.at+5>=this.bytes.length&&this.grow();const i=this.bytes;for(;r>=8;)i[this.at++]=255&e,e=Math.floor(e/256),r-=8;this.t=e,this.pending=r}o(t,n){for(let e=0;e<4;e++){const[r,i]=t[e];if(n>=i&&n-i<o[r])return this.write(2,e),void(r&&this.write(r,n-i))}throw new Error("U32 value out of range: "+n)}i(){this.pending&&(this.at+1>=this.bytes.length&&this.grow(),this.bytes[this.at++]=this.t,this.t=0,this.pending=0)}get u(){return 8*this.at+this.pending}grow(t=0){const o=n.bytes+64;if(this.at+t+16>o)throw Object.assign(new Error("The encoded picture exceeds 16 MiB."),{code:"JXL_SIZE"});const e=new Uint8Array(Math.min(o,Math.max(2*this.bytes.length,this.at+t+16)));e.set(this.bytes.subarray(0,this.at)),this.bytes=e}append(t){if(this.at+t.at+8>=this.bytes.length&&this.grow(t.at+8),this.pending)for(let n=0;n<t.at;n++)this.write(8,t.bytes[n]);else this.bytes.set(t.bytes.subarray(0,t.at),this.at),this.at+=t.at;t.pending&&this.write(t.pending,t.t)}finish(){const t=this.at+(this.pending?1:0),n=this.bytes.slice(0,t);return this.pending&&(n[this.at]=this.t),n}}function*r(t,n,o){let e,r;for(;!(e=t.next(r)).done;)r=yield i(e.value,t=>(n+t)/o);return e.value}const i=(t,n)=>"number"==typeof t?n(t):{...t,at:o=>n(t.at(o))};function s(t){return t>=0?2*t:2*-t-1}function c(t){return 31-Math.clz32(t)}function f(t){return t<=1?0:32-Math.clz32(t-1)}const l=(t,n)=>Object.assign(new Error(n),{code:t});function a(t){if(t>n.bytes)throw l("JXL_SIZE","The encoded picture exceeds 16 MiB.")}function u(t){try{return t()}catch(t){if(t instanceof RangeError&&!t.code)throw l("JXL_MEMORY","Not enough memory for this picture.");throw t}}const h=256;function p(t,n){t.o([[9,1],[13,1],[18,1],[30,1]],n)}function y(t,n,o,e,r,{xyb:i=!1,orientation:s=1,colorSpace:c}={}){t.write(16,2815),t.write(1,0),p(t,o),t.write(3,0),p(t,n),t.write(1,0);const f=1!==s;t.write(1,f?1:0),f&&t.write(6,s-1),t.write(4,8),r?t.write(3,5):t.write(2,0),t.write(1,i?1:0),3===e&&"display-p3"===c?t.write(21,903568):3===e?t.write(1,1):t.write(15,14100),f&&t.write(1,1),t.write(2,0),t.write(1,1),t.i()}function w(t,{alpha:n,shift:o=1}){t.write(9,8),n&&t.write(2,0),t.write(2,o),function(t,n){t.write(n?7:5,0),t.write(11,1)}(t,n)}function d(t,n,o=256){const e=Math.ceil(t/o),r=Math.ceil(n/o);return{p:e,m:r,M:Math.ceil(t/(8*o)),A:Math.ceil(n/(8*o)),U:1===e&&1===r}}function*g(t,n,o,e){if(t.pooled){const n=yield t;return n?(n.results.forEach((t,n)=>e(n,t)),n.hurried):null}let r=!1;for(let e=0;e<n;e++)if(o(e),r=yield t.at(e),r&&t.stop(e))return null;return r}function m(t,n){const o=n.map(t=>t.length);!function(t,n){t.write(1,0),t.i();for(const o of n)t.o([[10,0],[14,1024],[22,17408],[30,4211712]],o);t.i()}(t,o);const e=t.finish(),r=e.length+o.reduce((t,n)=>t+n,0);a(r);const i=new Uint8Array(r);i.set(e);let s=e.length;for(const t of n)i.set(t,s),s+=t.length;return i}const b=[1,2,3,4,0,5,17,6,16,7,8,9,10,11,12,13,14,15],M=[2,4,3,2,2,4],A=[0,7,3,2,1,15];function U(t,n){const o=new Uint8Array(t.length),e=[];for(let n=0;n<t.length;n++)t[n]>0&&e.push(n);if(!e.length)return o;if(1===e.length)return o[e[0]]=1,o;for(let r=1;;r*=2){const i=e.map(n=>({w:Math.max(t[n],r),S:n,l:null,r:null})).sort((t,n)=>t.w-n.w||t.S-n.S),s=[];let c=0,f=0;const l=()=>c<i.length&&(f>=s.length||i[c].w<=s[f].w)?i[c++]:s[f++];for(;i.length-c+(s.length-f)>1;){const t=l(),n=l();s.push({w:t.w+n.w,S:-1,l:t,r:n})}const a=[[l(),0]];let u=0;for(;a.length;){const[t,n]=a.pop();t.S>=0?(o[t.S]=n,n>u&&(u=n)):a.push([t.l,n+1],[t.r,n+1])}if(u<=n)return o}}function S(t,n,o,e,r,i){const s=[];for(;s.push(e&r),e>>=i;)e--;for(let e=s.length-1;e>=0;e--)t.push(o),n.push(s[e])}function I(t,n){let o=0;for(let e=0;e<n;e++)o=o<<1|1&t,t>>=1;return o}function x(t){const n=new Uint32Array(17),o=new Uint32Array(17),e=new Uint16Array(t.length);for(const o of t)n[o]++;n[0]=0;for(let t=1,e=0;t<=16;t++)e=e+n[t-1]<<1,o[t]=e;for(let n=0;n<t.length;n++)t[n]&&(e[n]=I(o[t[n]]++,t[n]));return e}function C(t){const n=[];for(let o=0;o<t.length;o++)t[o]>0&&n.push(o);const o=n.length,e=n[o-1]+1||1,r=o<=4?new Uint8Array(e):U(t,15).subarray(0,e);let i=0;if(o<=4){n.sort((n,o)=>t[o]-t[n]||n-o),i=4===o&&t[n[0]]>t[n[2]]+t[n[3]]?1:0;const e=o<2?[0]:2===o?[1,1]:3===o?[1,2,2]:i?[1,2,3,3]:[2,2,2,2];n.forEach((t,n)=>{r[t]=e[n]}),n.sort((t,n)=>r[t]-r[n]||t-n)}return{I:e,C:r,T:x(r),v:o&&o<=4?n:null,L:i}}function T(t,n){if(n.I<=1)return;if(n.v){const o=c(n.I-1)+1;t.write(2,1),t.write(2,n.v.length-1);for(const e of n.v)t.write(o,e);return void(4===n.v.length&&t.write(1,n.L))}const o=n.C,e=[],r=[];let i=o.length-1;for(;i>0&&!o[i];)i--;let s=8;for(let t=0;t<=i;){const n=o[t];let c=1;for(;t+c<=i&&o[t+c]===n;)c++;let f=c;if(n&&n!==s&&(e.push(n),r.push(0),f--,s=n),f<3)for(let t=0;t<f;t++)e.push(n),r.push(0);else S(e,r,n?16:17,f-3,n?3:7,n?2:3);t+=c}const f=new Uint32Array(18);for(const t of e)f[t]++;let l=0;for(const t of f)t&&l++;1===l&&(f[e[0]?0:1]=f[e[0]]);const a=U(f,5),u=x(a);let h=18;for(;h>0&&!a[b[h-1]];)h--;t.write(2,0);for(let n=0;n<h;n++){const o=a[b[n]];t.write(M[o],A[o])}for(let n=0;n<e.length;n++){const o=e[n];t.write(a[o],u[o]),16===o?t.write(2,r[n]):17===o&&t.write(3,r[n])}}function v(t,n=0,o=0){return{split:t,X:n,N:o,P:1<<t}}function E(t,n,o=15){t.write(f(o+1),n.split),n.split!==o&&(t.write(f(n.split+1),n.X),t.write(f(n.split-n.X+1),n.N))}function L(t,n,o){if(n<t.P)return o[0]=n,o[1]=0,void(o[2]=0);const e=c(n),r=n-(1<<e),i=e-t.X-t.N;o[0]=t.P+(e-t.split<<t.X+t.N|r>>e-t.X<<t.N|r&(1<<t.N)-1),o[1]=i,o[2]=n>>t.N&(1<<i)-1}function X(t,n,o,e=0){L(t,n,N),o[e+N[0]]++}const N=[0,0,0];function P(t,n,o,e,r=0){L(o,e,N);const i=r+N[0];t.write(n.C[i],n.T[i]),N[1]&&t.write(N[1],N[2])}function z(t,{J:n=null,_:o,q:e}){t.write(1,n?1:0),n&&(t.o([[0,224],[0,512],[0,4096],[15,8]],n.G),t.o([[0,3],[0,4],[2,5],[8,9]],n.minLength),E(t,n.O,8)),o.length>1&&function(t,n){let o=0;for(const t of n)o=Math.max(o,t);const e=o?f(o+1):0;if(e<=3){if(t.write(1,1),t.write(2,e),e)for(const o of n)t.write(e,o);return}t.write(1,0),t.write(1,0);const r=v(8),i=v(4),s=n.length>=64,c=new Uint32Array(s?257:o+1),l=[];for(let t=0;t<n.length;){let o=1;for(;s&&t+o<n.length&&n[t+o]===n[t];)o++;if(o>=8)l.push([n[t],o-1]),c[n[t]]++,X(i,o-1-7,c,224),t+=o;else{for(let e=0;e<o;e++)l.push([n[t],0]),c[n[t]]++;t+=o}}const a=C(c);if(!s){z(t,{_:new Uint8Array(1),q:[{config:r,code:a}]});for(const[n]of l)P(t,a,r,n);return}const u=new Uint32Array(1);u[0]=1,z(t,{J:{G:224,minLength:7,O:i},_:new Uint8Array([1,0]),q:[{config:v(0),code:C(u)},{config:r,code:a}]});for(const[n,o]of l)P(t,a,r,n),o&&P(t,a,i,o-7,224)}(t,o),t.write(1,1);for(const n of e)E(t,n.config,15);for(const n of e){const o=n.code.I-1;if(o){const n=c(o);t.write(1,1),t.write(4,n),t.write(n,o-(1<<n))}else t.write(1,0)}for(const n of e)T(t,n.code)}const J=3,_=5,q=v(4),G=Object.freeze({G:224,minLength:7,O:q}),O=v(0);function j(t,n=0,o=1){return{j:t,offset:n,k:o,context:-1}}function k(t,n){const o=(e,r)=>{if(e===r)return n?t[e].B:t[e];const i=e+r>>1;return function(t,n,o,e){return{R:t,Z:n,left:o,right:e}}(n,n?t[i].Y:i,o(i+1,r),o(e,i))};return o(0,t.length-1)}function B(t){return k(t,0)}function R(t,n){const o=[n],e=[],r=[];for(const t of o){if(t.left){e.push(t.R+1,s(t.Z)),o.push(t.left,t.right);continue}t.context=r.length,r.push(t);const n=1===t.k?0:31-Math.clz32(t.k&-t.k);e.push(0,t.j,s(t.offset),n,(t.k>>n)-1)}const i=new Uint32Array(64);for(const t of e)X(O,t,i);const c=C(i);z(t,{_:new Uint8Array(6),q:[{config:O,code:c}]});for(const n of e)P(t,c,O,n);return r}function Z(t,n){const o=[[3,0],[6,8],[10,72],[13,1096]];if("rct"===n.type)t.write(2,0),t.o(o,n.D),t.o([[0,6],[2,0],[4,2],[6,10]],n.F??6);else if("palette"===n.type)t.write(2,1),t.o(o,n.D),t.o([[0,1],[0,3],[0,4],[13,1]],n.H),t.o([[8,0],[10,256],[12,1280],[16,5376]],n.K),t.o([[0,0],[8,1],[10,257],[16,1281]],n.V??0),t.write(4,n.j??0);else{if("squeeze"!==n.type)throw new Error("unknown transform "+n.type);{t.write(2,2);const e=n.W??[];t.o([[0,0],[4,1],[6,9],[8,41]],e.length);for(const n of e)t.write(1,n.$?1:0),t.write(1,n.tt?1:0),t.o(o,n.D),t.o([[0,1],[0,2],[0,3],[4,4]],n.H)}}}function Y(t,{nt:n=!0,ot:o=[]}={}){t.write(1,n?1:0),t.write(1,1),t.o([[0,0],[0,1],[4,2],[8,18]],o.length);for(const n of o)Z(t,n)}function D(t,n,o,e=t=>t.context,r=()=>O){const i=new Uint8Array(n.length+1);for(const t of n)i[t.context]=e(t)+1;const s=new Uint32Array(2);s[1]=1;const c=[{config:O,code:C(s)}],f=Math.max(...i);for(let t=0;t<f;t++)c.push({config:r(t),code:C(o[t])});return z(t,{J:G,_:i,q:c}),c}function Q(n,o,e,r,i,c,f=!1){if(t.channel?.(n,o,e,r,i,c,f))return;const l=c.j,a=c.offset,u=c.k,h=c.config||O,p=q;let y=0;const w=(t,e=h,r=0)=>{n?P(n,o,e,t,r):f&&!r?o[t]++:X(e,t,o,f?o.length-33:r)},d=()=>{if(y){if(y>=8)w(0),w(y-7-1,p,224);else for(let t=0;t<y;t++)w(0);y=0}},g=(t,n)=>{const o=e[t];let r;1===u?r=o-n-a:(r=Math.round((o-n-a)/u),e[t]=n+a+r*u),0!==r?(d(),w(s(r))):y++};for(let t=0,n=0;t<i;t++)for(let o=0;o<r;o++,n++){let i;if(0===l)i=0;else{const s=o?e[n-1]:t?e[n-r]:0,c=t?e[n-r]:s;if(1===l)i=s;else if(2===l)i=c;else if(3===l)i=(s+c)/2|0;else{const f=s+c-(o&&t?e[n-r-1]:s);if(5===l){const t=s<c?s:c,n=s<c?c:s;i=f<t?t:f>n?n:f}else{if(4!==l)throw new Error("predictor "+l+" is not coded here");i=Math.abs(f-s)<Math.abs(f-c)?s:c}}}g(n,i)}d()}const F=[v(0),v(4),v(4,1,1),v(3,0,1)];function H(t){const n=t.length-33,o=[0,0,0];let r,i;for(const s of F){const f=new Uint32Array(257);let l=0;for(let e=0;e<n;e++)t[e]&&(L(s,e,o),f[o[0]]+=t[e],l+=t[e]*o[1]);for(let o=0;o<33;o++)f[224+o]=t[n+o],l+=t[n+o]*Math.max(0,o-12);const a=C(f),u=new e(128);E(u,s),T(u,a);let h=u.u+l+(1===a.I?1:5+c(a.I-1));for(let t=0;t<f.length;t++)f[t]&&(h+=f[t]*a.C[t]);const p={config:s,et:f,rt:h,extra:l};r||(r=p),(!i||h<i.rt)&&(i=p)}return[r,i]}const K=(t,n,o,e)=>o?e?t[n]+256*t[n+3]:t[n]:t[n]+256*t[n+1]+65536*t[n+2]+(e?16777216*t[n+3]:0);function V(t,n,o,{palette:e=!0}={}){const r=n*o;let i=!0,s=!0;for(let n=0,o=0;o<r&&(255===t[n+3]||(i=!1,s))&&(t[n]===t[n+1]&&t[n]===t[n+2]||(s=!1,i));o++,n+=4);const c=s?1:3,f=!i,l=c+(f?1:0),a=n=>K(t,n,s,f),u=new Map;let h=null;for(let t=0,n=0;e&&n<r;n++,t+=4){const n=a(t);if(0!==n&&!u.has(n)&&(u.set(n,1),u.size>=2048))break}if(e&&u.size<2048){const t=[...u.keys()],n=(t,n)=>t>>>8*n&255,o=t=>(.299*n(t,0)+.587*n(t,1)+.114*n(t,2)+.01)*(4===l?n(t,3):1);t.sort((t,n)=>o(t)-o(n)),h={colours:[0,...t],byte:n}}return{colour:c,alpha:f,channels:l,palette:h}}function W({channels:n,alpha:o,palette:e},r){const i=n-(o?1:0)==1,s=e&&new Map(e.map((t,n)=>[t,n]));return(c,f,l,a,u,h,p)=>{if(r&&!e&&n>=3)r.fill(c,f,l,a,u,h,p);else if(e||!t.fill?.(f,l,a,u,h,p,n,c))for(let t=0;t<p;t++){let r=4*((u+t)*l+a),p=t*h;for(let t=0;t<h;t++,r+=4,p++)if(e)c[0][p]=s.get(K(f,r,i,o));else if(n>=3){const t=f[r],o=f[r+1],e=f[r+2],i=t-e,s=e+(i>>1),l=o-s;c[0][p]=s+(l>>1),c[1][p]=i,c[2][p]=l,4===n&&(c[3][p]=f[r+3])}else c[0][p]=f[r],2===n&&(c[1][p]=f[r+3])}}}function $(t,n){const{leaves:o,picture:r,T:i}=t,s=W(t,n),c=r.map(()=>new Int16Array(65536));return(t,n,f,l,a,u,h)=>{if(s(c,t,n,f,l,a,u),!i)return void r.forEach((t,n)=>Q(null,h[t],c[n],a,u,o[t],!0));const p=h||new e(a*u*r.length+64);return h||Y(p,{nt:!0,ot:[]}),r.forEach((t,n)=>Q(p,i[t],c[n],a,u,o[t])),h?void 0:p.finish()}}function*tt(t,n,o,{shape:e=V(t,n,o),colorSpace:i,rct:s,pooled:c}={}){let f,l;const a=e.palette?[e,{...e,palette:null}]:[e];for(let e=0;e<a.length;e++)try{const l=yield*r(nt(t,n,o,a[e],i,s,c),e,a.length);(!f||l.length<f.length)&&(f=l)}catch(t){if("JXL_SIZE"!==t.code)throw t;l=t}if(!f)throw l;return f}function*nt(t,n,o,r,i,s,c){const{channels:f,alpha:l,palette:a}=r,u=d(n,o),p=u.p*u.m,b=a?2:f,M=Array.from({length:b},()=>j(_)),A=B(M),U={channels:f,alpha:l,palette:a&&a.colours,rct:s?.type,leaves:M,picture:a?[u.U?1:0]:M.map((t,n)=>n)},S=W(U,s),I=Array.from({length:f},()=>new Int16Array(1024)),x=t=>function(t,n,o,e){const r=e%t.p*h,i=(e/t.p|0)*h;return[r,i,Math.min(h,n-r),Math.min(h,o-i)]}(u,n,o,t);let v=null;if(a){const t=a.colours.length;v=new Int16Array(t*f),a.colours.forEach((n,o)=>{for(let e=0;e<f;e++)v[e*t+o]=a.byte(n,e)})}if(!a){const r=t=>{const n=C(t),o=new e(128);T(o,n);let r=o.u;for(let o=0;o<t.length;o++)t[o]&&(r+=t[o]*(n.C[o]+Math.max(0,o<224?o-1:o-236)));return r},i=Math.min(n,32),s=Math.min(o,32),c=[_,J].map(t=>({j:t,et:M.map(()=>new Uint32Array(257))}));for(const e of[0,.5,1]){S(I,t,n,Math.floor((n-i)*e),Math.floor((o-s)*e),i,s);for(const t of c)for(let n=0;n<f;n++)Q(null,t.et[n],I[n],i,s,j(t.j))}M.forEach((t,n)=>{const o=c.map(t=>r(t.et[n])),e=o[1]<o[0]?1:0;t.j=c[e].j})}const E=a?[{type:"palette",D:0,H:f,K:a.colours.length}]:f>=3&&0!==s?.type?[{type:"rct",D:0,F:s?.type??6}]:[];let L=M.map(()=>new Uint32Array(33+(a?4096:1024)));v&&Q(null,L[0],v,a.colours.length,f,M[0],!0);const X=$(U,s);yield*g({pooled:c,kind:"plan",setup:{...U,sizes:L.map(t=>t.length)},at:t=>(t+1)/(2*p),stop:()=>!1},p,o=>X(t,n,...x(o),L),(t,n)=>function(t,n){t.forEach((t,o)=>{const e=n[o];for(let n=0;n<t.length;n++)t[n]+=e[n]})}(L,n));const N=L.map(H),P=N.reduce((t,n)=>t+n[0].rt-n[1].rt,0)>27*(u.U?1:p+1)+8?1:0;M.forEach((t,n)=>{t.config=N[n][P].config}),L=N.map(t=>t[P].et);const z=new e(256);y(z,n,o,r.colour,r.alpha,{colorSpace:i}),w(z,{alpha:r.alpha});const q=new e(4096);q.write(1,1),q.write(1,1);const G=D(q,R(q,A),L,t=>M.indexOf(t),t=>M[t].config),O={...U,T:M.map((t,n)=>G[n+1]?.code)},k=$(O,s);Y(q,{nt:!0,ot:E}),v&&Q(q,O.T[0],v,a.colours.length,f,M[0]);const Z=[];if(u.U)k(t,n,0,0,n,o,q),yield 1,Z.push(q.finish());else{Z.push(q.finish());for(let t=0;t<u.M*u.A+1;t++)Z.push(new Uint8Array(0));const o=Z.length,e=(t,n)=>{Z[o+t]=n};yield*g({pooled:c,kind:"plan",setup:O,at:t=>(p+t+1)/(2*p),stop:()=>!1},p,o=>e(o,k(t,n,...x(o))),e)}return m(z,Z)}const ot=(t,n)=>t+n+(t>n?1:0)>>1;function et(t,n,o){const e=t>=n&&n>=o?1:t<=n&&n<=o?-1:0;if(!e)return 0;let r=(4*(t*=e)-3*(o*=e)-(n*=e)+6)/12|0;return r-(1&r)>2*(t-n)&&(r=2*(t-n)+1),r+(1&r)>2*(n-o)&&(r=2*(n-o)),e*r}function rt(t,n){const{w:o,h:e,data:r}=t,i=n?o:e,s=i+1>>1,c=i-s,f=n?s:o,l=n?e:s,a=n?c:o,u=n?e:c,h=new Int16Array(f*l),p=new Int16Array(a*u),y=n?1:o;for(let t=0;t<l;t++)for(let e=0;e<f;e++){const s=n?e:t,l=n?t*o+2*e:2*t*o+e;if(s===c){h[t*f+e]=r[l];continue}const u=r[l],w=r[l+y],d=ot(u,w),g=s+1<c?ot(r[l+2*y],r[l+3*y]):1&i?r[l+2*y]:d;h[t*f+e]=d,p[t*a+e]=u-w-et(s?r[l-y]:d,d,g)}const w=(o,e,r)=>({w:e,h:r,it:t.it+ +n,st:t.st+!n,data:o});return[w(h,f,l),w(p,a,u)]}function it(t){const n=[],o=t.length;let e=t[0].w,r=t[0].h;for(o>2&&t[1].w===e&&t[1].h===r&&(n.push({$:!0,tt:!1,D:1,H:2}),n.push({$:!1,tt:!1,D:1,H:2})),!(e>r)&&r>8&&(n.push({$:!1,tt:!0,D:0,H:o}),r=r+1>>1);e>8||r>8;)e>8&&(n.push({$:!0,tt:!0,D:0,H:o}),e=e+1>>1),r>8&&(n.push({$:!1,tt:!0,D:0,H:o}),r=r+1>>1);return n}const st=1024,ct=8192;function*ft(t,n,o,{quality:r=90,shape:i=V(t,n,o,{palette:!1}),colorSpace:s}={}){const c=function(t){return t>=100?0:t>=30?.1+.09*(100-t):53/3e3*t*t-1.15*t+25}(r);if(!(c>0))throw new Error("lossy encoding needs a quality below 100");const{colour:f,alpha:l,channels:a}=i,u=n*o,h=Array.from({length:a},()=>new Int16Array(u));for(let n=0,o=0;o<u;o++,n+=4){if(3===f){const e=t[n],r=t[n+1],i=t[n+2],s=e-i,c=i+(s>>1),f=r-c;h[0][o]=c+(f>>1),h[1][o]=s,h[2][o]=f}else h[0][o]=t[n];l&&(h[a-1][o]=t[n+3])}const p=h.map((t,e)=>({w:n,h:o,it:0,st:0,data:t,component:3===f?e:0===e?0:3})),g=1===n&&o>st&&3===f,b=g?it(p).filter(t=>!t.$):1!==n&&1!==o||3!==f?[]:it(p),M=function(t,n=it(t)){const o=t.map(t=>({...t,level:0,ct:!1}));for(const t of n){const n=t.D+t.H-1,e=t.tt?n+1:o.length;for(let r=t.D;r<=n;r++){const[n,i]=rt(o[r],t.$),s=o[r].level+1;o[r]={...n,level:s,ct:o[r].ct,component:o[r].component},o.splice(e+(r-t.D),0,{...i,level:s,ct:!0,component:o[r].component})}}return o}(p,b.length?b:void 0),A=t=>t.ct?0:_,U=t=>function(t,n,o,e){let r=Math.min(16,n+o);if(r>0&&r--,3===t)return 1;const i=.25*function(t){let n=1;for(let o=0;o<24;o++)n=(4*n+t/(n*n*n*n))/5;return t*n}(e),s=1<<r,c=1===t||2===t?.35*i*Math.max(.5,1024/s):.35*i*1.1*(163.84/s);return Math.max(1,Math.floor(c))}(t.component,t.it+(g&&t.component>0&&t.component<3?1:0),t.st,c),S=[...3===f?[{type:"rct",D:0,F:6}]:[],{type:"squeeze",W:b}],I=d(n,o,st),x=I.M*I.A,C=I.p*I.m;let T=0;for(;T<M.length&&M[T].w<=st&&M[T].h<=st;)T++;const v=(t,n,o,e)=>{const r=n>>t.it,i=o>>t.st;return{x:r,y:i,w:Math.min(t.w,r+(e>>t.it))-r,h:Math.min(t.h,i+(e>>t.st))-i}},E=[{index:0,Y:0,ft:[]}];for(let t=0;t<T;t++)E[0].ft.push({c:t,rect:{x:0,y:0,w:M[t].w,h:M[t].h}});if(!I.U){for(let t=0;t<x;t++){const n=t%I.M,o=t/I.M|0,e={index:1+t,Y:1+x+t,ft:[]};for(let t=T;t<M.length;t++){const r=M[t];if(Math.min(r.it,r.st)<3)continue;const i=v(r,n*ct,o*ct,ct);i.w>0&&i.h>0&&e.ft.push({c:t,rect:i})}E.push(e)}for(let t=0;t<C;t++){const n=t%I.p,o=t/I.p|0,e={index:2+x+t,Y:1+3*x+17+t,ft:[]};for(let t=T;t<M.length;t++){const r=M[t];if(Math.min(r.it,r.st)>2)continue;const i=v(r,n*st,o*st,st);i.w>0&&i.h>0&&e.ft.push({c:t,rect:i})}E.push(e)}}for(const t of E)for(const n of t.ft){const t=M[n.c];n.lt=j(A(t),0,U(t)),n.lt.channel=n.c}const L=E.filter(t=>t.ft.length),X=1===L.length?B(L[0].ft.map(t=>t.lt)):function(t){return k(t,1)}(L.map(t=>({Y:t.Y,B:B(t.ft.map(t=>t.lt))}))),N=new Int16Array(1048576),P=t=>{const n=M[t.c],o=t.rect;if(o.w===n.w&&o.h===n.h)return n.data;for(let t=0;t<o.h;t++)N.set(n.data.subarray((o.y+t)*n.w+o.x,(o.y+t)*n.w+o.x+o.w),t*o.w);return N},z=[...new Set(E.flatMap(t=>t.ft.map(t=>t.c)))].sort((t,n)=>t-n),J=new Map(z.map((t,n)=>[t,n])),q=z.map(()=>new Uint32Array(257)),G=1+2*E.length;let O=1;yield O/G;for(const t of E){for(const n of t.ft)Q(null,q[J.get(n.c)],P(n),n.rect.w,n.rect.h,n.lt);yield++O/G}const Z=new e(256);y(Z,n,o,f,l,{colorSpace:s}),w(Z,{alpha:l,shift:n>256||o>256?3:1});const F=Array.from({length:I.U?1:2+x+C},()=>null),H=F[0]=new e(65536);H.write(1,1),H.write(1,1);const K=D(H,R(H,X),q,t=>J.get(t.channel));Y(H,{nt:!0,ot:S});for(const t of E){let n=F[t.index];n||(n=F[t.index]=new e(4096),t.ft.length&&Y(n,{nt:!0,ot:[]}));for(const o of t.ft)Q(n,K[J.get(o.c)+1].code,P(o),o.rect.w,o.rect.h,o.lt);yield++O/G}return m(Z,function(t){return t.map(t=>t?t.finish():new Uint8Array(0))}(F))}function lt(t,n,o,e){return function(t){let n;for(;!(n=t.next()).done;);return n.value}(at(t,n,o,e))}function at(t,o,e,i){const{quality:s,colorSpace:c}=function(t={},n=100){if(null===t||"object"!=typeof t)throw l("JXL_INPUT","Options are an object: {quality, colorSpace}.");if(void 0!==t.quality&&(n=t.quality),"number"!=typeof n||!Number.isFinite(n)||n<1||n>100)throw l("JXL_INPUT","Quality is a number from 1 to 100.");const o=void 0===t.colorSpace?"srgb":t.colorSpace;if("srgb"!==o&&"display-p3"!==o)throw l("JXL_INPUT","The colour space is srgb or display-p3.");return{quality:n,colorSpace:o}}(i);return function(t,o,e,r){if(function(t,o,e=n){if(!Number.isInteger(t)||!Number.isInteger(o)||t<1||o<1)throw l("JXL_INPUT","A picture is at least one pixel wide and high, in whole pixels.");if(t>e.edge||o>e.edge)throw l("JXL_DIMENSIONS","A picture is at most "+e.edge+" pixels on a side.");if(t*o>e.pixels)throw l("JXL_DIMENSIONS","A picture is at most "+e.pixels.toLocaleString("en-US")+" pixels.")}(o,e,r),!(t instanceof Uint8Array||t instanceof Uint8ClampedArray))throw l("JXL_INPUT","Pixels are a Uint8Array or Uint8ClampedArray of RGBA bytes.");if(t.length!==o*e*4)throw l("JXL_INPUT","Pixels are width * height * 4 bytes: straight (not premultiplied) RGBA, row by row.")}(t,o,e),function(t){const n=function*(){let o,e;for(;!(o=u(()=>t.next(n.hurry))).done;)yield e=o.value;return e<1&&(yield 1),n.bytes=function(t){return a(t.length),t}(o.value)}();return n.bytes=null,n.hurry=!1,n}(function*(t,n,o,e,i){const s=V(t,n,o);if(e>=100)return yield*tt(t,n,o,{shape:s,colorSpace:i});if(!s.palette)return yield*ft(t,n,o,{quality:e,shape:s,colorSpace:i});const c=yield*r(tt(t,n,o,{shape:s,colorSpace:i}),0,2);let f;try{f=yield*r(ft(t,n,o,{quality:e,shape:s,colorSpace:i}),1,2)}catch(t){if("JXL_SIZE"!==t.code&&(!(t instanceof RangeError)||t.code))throw t;f=c}return c.length<=f.length?c:f}(t,o,e,s,c))}export{n as LIMITS,lt as encode,at as encodeSteps};
@@ -1,41 +1,49 @@
1
1
  {
2
2
  "package": "rapier-jxl",
3
- "version": "2.1.0",
3
+ "version": "2.2.1",
4
4
  "measured": "exact bytes of the staged files; gzip level 9; Brotli quality 11, text mode; added is a door bundled with the core less the core alone, or the door alone less the core where it covers the core (effort); every measured bundle loads as a module",
5
5
  "node": "v22.22.2",
6
6
  "terser": "5.51.2",
7
7
  "privateProperties": "^(alphabetSize|lengths|codes|simple|treeSelect|splitToken|msb|lsb|contextMap|histograms|predictor|multiplier|context|splitval|property|offset|left|right|channel|acc|pending|at|bitLength|grow|zeroPadToByte|writeU32|append|finish|write|small|large|totals|contexts|tokens|cost|bucketOf|contextOf|nonZero|zeroDensityOffset|thresholds|numDc|numCtxs|freqs|hshift|vshift|residual|component|inPlace|horizontal|beginC|numC|rctType|nbColors|nbDeltas|useGlobalTree|streamId|pieces|rect|minSymbol|minLength|lengthConfig|params|type|leaf|groupsX|groupsY|dcGroupsX|dcGroupsY|single|config|bits|sym|tree|count|parts|lz77|transforms)$",
8
8
  "source": {
9
- "bytes": 174894,
10
- "gzip": 53445,
9
+ "bytes": 211215,
10
+ "gzip": 67195,
11
11
  "sha256": {
12
12
  "admit.mjs": "ccdbee9f68a0e0125853d5d786b95075bc39807e9a6e95d8a185a6c0c7b2fca4",
13
13
  "ans.mjs": "c604457516a86c8697810d9ded6af20f91b59650f0ed5aea6683fc9f2051f79e",
14
- "bits.mjs": "aee959d6bf46344f38291b461e8c40c225a23b7f4f093b21848432d9223abf3a",
14
+ "bits.mjs": "8f63d88635518231f0ad3bd2155b263fe9c0fef737dc0f1f69befa40c0cd6750",
15
15
  "coefficient-ans.mjs": "8b7a080f440bc1894d7d13f6ee76b3a85fce7bbd0cfadc53ad06e4b58ed81ed1",
16
16
  "coefficient-effort.mjs": "2d55459c7b96f85d7a6d029d87f0e4c2905d5982aa64334e38c4a401c2beebfb",
17
- "effort.mjs": "911f906e3f5f0e1b09aa82c5370f1577104673bae019736ed149e5c7794fedaf",
17
+ "effort.mjs": "70336f2eb5325da470bfb60afb808acc3ac1e985f8919387d214c385e7bc9b36",
18
+ "effort-job.mjs": "e2c5a735757edc72f6f6992fe360e66a7ffc218873a6372381f9fa71d2613c74",
18
19
  "effort-level.mjs": "fe46adf2e34546c65e821400804cbd51c17c5a6d04b769310567082581b64f5d",
19
20
  "entropy.mjs": "9cb52a9d174d63dc2b694725267c5ab0e8d693f5366e76fa0134f87cc878fe3a",
20
- "frame.mjs": "f4c4bf0486b1942d65875661419b56c02371279a042004c4eaee304c4825a68b",
21
+ "frame.mjs": "b921e8bddcd021d1a1fe3afffda2816b90af1f81121c27de78db5746c462e378",
21
22
  "index.mjs": "adf5f0d4ca70ce3e88c67a718d057c5dcab5098bd07308f4bf9406c365d81efe",
22
23
  "jfif.mjs": "6b9a59f0b81ce5063191d1da9f658727ef03535144cd92b3908b249dfc99ed17",
23
24
  "jpeg.mjs": "41bf5579a99f1870bc219228eb649589d027c807bdaee5c8b128a7aaa6711c95",
24
25
  "jpeg-ans.mjs": "4a9cafe6eaf83f7c37f87513cc42458d6c2997c420830b0449d591c103993072",
25
26
  "jpeg-job.mjs": "61370ed45ebd8c15c8edb3d043139dcde8a8bf7bd1ea52d030f3f73de5d6fa60",
26
- "local.mjs": "3ad6d5f1369f316fddd0a6ed4844fbc42e60ae897610fa6cfc542c152e252b6a",
27
- "lossless.mjs": "6260af5e685a94360ee7eb2c0f3e6ac94dc931ab0f199a7d5102ba13893f390c",
27
+ "kernel-hooks.mjs": "c7a8578d0f16b10c3598d527778c99d1dd80b9eb283dffe5ed969e44850b63d4",
28
+ "kernels.mjs": "fc54852d11d1fffa16e7b2f788006ccc23b4757ac0170c59d41ff35224d55391",
29
+ "kernels-bytes.mjs": "d76d121612ddc74ae72fe05f9f643ef08ad578b70e9de28afeb38aa7cd0c237a",
30
+ "local.mjs": "546b39e8bc88de97c5d1d170bf30da68452a6c2bf8fc86a8bd81eb943dfe16bf",
31
+ "lossless.mjs": "6a13093b568597f2500dbd2032558d08c792babac4bd439b0f5b56b9872e0759",
32
+ "lossless-coding.mjs": "1f3ff9c914f3594ab024231fdf06e291412bf0abea1fb211d91e5b768e9244b8",
28
33
  "lossy.mjs": "e297311f5f2d304d17ea277fb156d2a575599aecb5d2473cbfbbd1be6b76ff6d",
29
- "modular.mjs": "9be937ceb8d4eb015a54f7e9f92aeff7be42eeaef94fd13a32530ea5ff204662",
34
+ "modular.mjs": "0481868e103552ab6adc315442e00cf625f308831f5356d091e9fbad8fb5a421",
30
35
  "photo.mjs": "4da303eebca4f52d8fea265a76ca879a06ebe394c699615195067339206f6c98",
31
36
  "photo-ans.mjs": "23e2af95d9ac6c80a9b3e1ce4bec7ab39a93ebd2575182f548a0213aa527e387",
32
37
  "photo-dct.mjs": "cc7252d877389885baa1d9866489f58a55d0a4d00800f0b358b54904b3cf91ad",
33
38
  "photo-job.mjs": "271452713a2c03fbb472f5050483748de5d0cc7b3a0e0589decd143b0f087a68",
34
39
  "photo-quant.mjs": "94854a56333a1d5c1346117e576013472857662f2e01a3fa54852d5567256a00",
40
+ "pool.mjs": "14817df64c11d13e6d93da26028b3b20bada214808ee2033ceadd71fa1a81608",
35
41
  "prefix.mjs": "ed51a5b6a3cf0a98b66fe54b3a1c050122ed312f7c47b136aa9fd5c84ac1a180",
42
+ "rct-search.mjs": "119e85e44e6bd259da144be4ac91e3c8aafe812291862a77b987a95e14398935",
36
43
  "squeeze.mjs": "ec01352dcf22b7346c7f0014e17e6ba2e4fe8243c358db77eee5fc830a3217e8",
37
44
  "vardct.mjs": "2befa3c606124fa6aa1f5ab7e856a4734217f0baefa5b3324fabbbbe13c04cd9",
38
- "weighted.mjs": "94872c63be7d3a09972bdcad55485d06f4942fecf7eadf6c28feedbc68fb8f50",
45
+ "wasm.mjs": "00a51183d9bf8b1d8dbf3aded0e1b8a01531c3d77e6f3d9286f273a8d1f1efc6",
46
+ "weighted.mjs": "8f8ff41d572509987015eea0c9ead45d27492e4657db807ef1a12a612e19bf97",
39
47
  "writer.mjs": "f8ec54c0d79cdf148f6be797d72f375cf9635cb00097897bdf1d570457d3fcc9"
40
48
  }
41
49
  },
@@ -43,32 +51,33 @@
43
51
  {
44
52
  "entry": ".",
45
53
  "module": "index",
46
- "file": "rapier-jxl.min.mjs",
54
+ "file": "dist/rapier-jxl.min.mjs",
47
55
  "exports": [
48
56
  "LIMITS",
49
57
  "encode",
50
58
  "encodeSteps"
51
59
  ],
52
60
  "modules": [
61
+ "kernel-hooks",
53
62
  "bits",
54
63
  "admit",
55
64
  "frame",
56
65
  "prefix",
57
66
  "modular",
67
+ "lossless-coding",
58
68
  "lossless",
59
69
  "squeeze",
60
70
  "lossy",
61
71
  "index"
62
72
  ],
63
73
  "alone": {
64
- "bytes": 19539,
65
- "gzip": 8511,
66
- "brotli": 7515,
67
- "sha256": "31c5b5fe523a45fdda4d0a859ab95450a72370a50e801352db35b4655fdd5592",
74
+ "bytes": 21326,
75
+ "gzip": 9271,
76
+ "brotli": 8233,
77
+ "sha256": "3a6707df3d9f45ad6c736a1bc8659aac47f09a7fbf92543df4ea75d242b6b7fe",
68
78
  "compress": {
69
79
  "passes": 2,
70
- "hoist_funs": true,
71
- "hoist_vars": true,
80
+ "inline": 1,
72
81
  "module": true
73
82
  }
74
83
  },
@@ -82,7 +91,7 @@
82
91
  {
83
92
  "entry": "./jpeg",
84
93
  "module": "jpeg",
85
- "file": "jpeg.min.mjs",
94
+ "file": "dist/jpeg.min.mjs",
86
95
  "exports": [
87
96
  "LIMITS",
88
97
  "transcode",
@@ -95,6 +104,7 @@
95
104
  "effort-level",
96
105
  "jpeg-job",
97
106
  "frame",
107
+ "kernel-hooks",
98
108
  "prefix",
99
109
  "modular",
100
110
  "entropy",
@@ -103,10 +113,10 @@
103
113
  "jpeg"
104
114
  ],
105
115
  "alone": {
106
- "bytes": 32218,
107
- "gzip": 13439,
108
- "brotli": 11874,
109
- "sha256": "8326d88968781fbe951c2ab76e3e797992123648609f8875bb122a3bb4609a4e",
116
+ "bytes": 32354,
117
+ "gzip": 13505,
118
+ "brotli": 11946,
119
+ "sha256": "889a97a98a22bb79e8aecc94cc896c2f5cb2726619e7eed0a39b9349ae547854",
110
120
  "compress": {
111
121
  "passes": 2,
112
122
  "inline": 1,
@@ -114,16 +124,16 @@
114
124
  }
115
125
  },
116
126
  "added": {
117
- "bytes": 21890,
118
- "gzip": 8497,
119
- "brotli": 7558
127
+ "bytes": 21706,
128
+ "gzip": 8524,
129
+ "brotli": 7474
120
130
  },
121
131
  "provedByteCases": 13
122
132
  },
123
133
  {
124
134
  "entry": "./photo",
125
135
  "module": "photo",
126
- "file": "photo.min.mjs",
136
+ "file": "dist/photo.min.mjs",
127
137
  "exports": [
128
138
  "LIMITS",
129
139
  "encodePhoto",
@@ -133,9 +143,11 @@
133
143
  "bits",
134
144
  "admit",
135
145
  "effort-level",
146
+ "kernel-hooks",
136
147
  "frame",
137
148
  "prefix",
138
149
  "modular",
150
+ "lossless-coding",
139
151
  "lossless",
140
152
  "photo-dct",
141
153
  "photo-quant",
@@ -147,10 +159,10 @@
147
159
  "photo"
148
160
  ],
149
161
  "alone": {
150
- "bytes": 31288,
151
- "gzip": 12872,
152
- "brotli": 11370,
153
- "sha256": "0389fcce9845e8d6c9625d07467be61e7c5f19346a820c013e9ce4d7a1966700",
162
+ "bytes": 33011,
163
+ "gzip": 13616,
164
+ "brotli": 12084,
165
+ "sha256": "d141bd23af55cbd78b6a4e13413451cd251ca7e8d8a9da7db5a64aa8ed5b3db3",
154
166
  "compress": {
155
167
  "passes": 2,
156
168
  "hoist_funs": true,
@@ -159,16 +171,16 @@
159
171
  }
160
172
  },
161
173
  "added": {
162
- "bytes": 16643,
163
- "gzip": 6257,
164
- "brotli": 5527
174
+ "bytes": 16576,
175
+ "gzip": 6249,
176
+ "brotli": 5481
165
177
  },
166
178
  "provedByteCases": 43
167
179
  },
168
180
  {
169
181
  "entry": "./jpeg-ans",
170
182
  "module": "jpeg-ans",
171
- "file": "jpeg-ans.min.mjs",
183
+ "file": "dist/jpeg-ans.min.mjs",
172
184
  "exports": [
173
185
  "LIMITS",
174
186
  "transcode",
@@ -181,6 +193,7 @@
181
193
  "effort-level",
182
194
  "jpeg-job",
183
195
  "frame",
196
+ "kernel-hooks",
184
197
  "prefix",
185
198
  "modular",
186
199
  "entropy",
@@ -191,10 +204,10 @@
191
204
  "jpeg-ans"
192
205
  ],
193
206
  "alone": {
194
- "bytes": 35281,
195
- "gzip": 14506,
196
- "brotli": 12804,
197
- "sha256": "ed7517a5c7e1c92e1a9dde601e1d11e6a6c927839912024a741c4581b84be4e5",
207
+ "bytes": 35491,
208
+ "gzip": 14608,
209
+ "brotli": 12896,
210
+ "sha256": "74389c293cc6d07fa578b86ca8c3a98d185b861aae8d2de9ace8328312d50d39",
198
211
  "compress": {
199
212
  "passes": 2,
200
213
  "inline": 1,
@@ -202,16 +215,16 @@
202
215
  }
203
216
  },
204
217
  "added": {
205
- "bytes": 24878,
206
- "gzip": 9564,
207
- "brotli": 8497
218
+ "bytes": 24689,
219
+ "gzip": 9580,
220
+ "brotli": 8480
208
221
  },
209
222
  "provedByteCases": 13
210
223
  },
211
224
  {
212
225
  "entry": "./photo-ans",
213
226
  "module": "photo-ans",
214
- "file": "photo-ans.min.mjs",
227
+ "file": "dist/photo-ans.min.mjs",
215
228
  "exports": [
216
229
  "LIMITS",
217
230
  "encodePhoto",
@@ -221,9 +234,11 @@
221
234
  "bits",
222
235
  "admit",
223
236
  "effort-level",
237
+ "kernel-hooks",
224
238
  "frame",
225
239
  "prefix",
226
240
  "modular",
241
+ "lossless-coding",
227
242
  "lossless",
228
243
  "photo-dct",
229
244
  "photo-quant",
@@ -237,10 +252,10 @@
237
252
  "photo-ans"
238
253
  ],
239
254
  "alone": {
240
- "bytes": 34293,
241
- "gzip": 13899,
242
- "brotli": 12295,
243
- "sha256": "ddb5c091d9361350e365bd64b2bf3d4eaba4c3a39722bfbdae6bc18c3ca1743d",
255
+ "bytes": 35994,
256
+ "gzip": 14650,
257
+ "brotli": 12983,
258
+ "sha256": "73f6dee8d0067f40924edc6701dc643065ccf770907d2c2f6ae966f9ba5a0d40",
244
259
  "compress": {
245
260
  "passes": 2,
246
261
  "hoist_funs": true,
@@ -249,16 +264,16 @@
249
264
  }
250
265
  },
251
266
  "added": {
252
- "bytes": 19626,
253
- "gzip": 7298,
254
- "brotli": 6468
267
+ "bytes": 19559,
268
+ "gzip": 7315,
269
+ "brotli": 6426
255
270
  },
256
271
  "provedByteCases": 43
257
272
  },
258
273
  {
259
274
  "entry": "./effort",
260
275
  "module": "effort",
261
- "file": "effort.min.mjs",
276
+ "file": "dist/effort.min.mjs",
262
277
  "exports": [
263
278
  "LIMITS",
264
279
  "encode",
@@ -269,19 +284,23 @@
269
284
  "admit",
270
285
  "frame",
271
286
  "prefix",
287
+ "kernel-hooks",
272
288
  "modular",
289
+ "lossless-coding",
273
290
  "lossless",
274
291
  "squeeze",
275
292
  "lossy",
276
293
  "weighted",
277
294
  "local",
295
+ "rct-search",
296
+ "effort-job",
278
297
  "effort"
279
298
  ],
280
299
  "alone": {
281
- "bytes": 30008,
282
- "gzip": 12320,
283
- "brotli": 10860,
284
- "sha256": "ec76b4fcdf79cebb7f2370c5167228188f95cfff8e4a6bafe23b1efba92585aa",
300
+ "bytes": 33584,
301
+ "gzip": 13793,
302
+ "brotli": 12205,
303
+ "sha256": "105c5be10bd7a803e228a400c728126d08cbb7d236a793883a94ac4235682c19",
285
304
  "compress": {
286
305
  "passes": 2,
287
306
  "inline": 1,
@@ -289,9 +308,59 @@
289
308
  }
290
309
  },
291
310
  "added": {
292
- "bytes": 10469,
293
- "gzip": 3809,
294
- "brotli": 3345
311
+ "bytes": 12258,
312
+ "gzip": 4522,
313
+ "brotli": 3972
314
+ },
315
+ "provedByteCases": 98
316
+ },
317
+ {
318
+ "entry": "./wasm",
319
+ "module": "wasm",
320
+ "file": "dist/wasm.min.mjs",
321
+ "exports": [
322
+ "LIMITS",
323
+ "configureKernels",
324
+ "encode",
325
+ "encodeSteps",
326
+ "kernelMode"
327
+ ],
328
+ "modules": [
329
+ "kernel-hooks",
330
+ "bits",
331
+ "kernels-bytes",
332
+ "kernels",
333
+ "admit",
334
+ "frame",
335
+ "prefix",
336
+ "modular",
337
+ "lossless-coding",
338
+ "lossless",
339
+ "squeeze",
340
+ "lossy",
341
+ "weighted",
342
+ "local",
343
+ "rct-search",
344
+ "effort-job",
345
+ "effort",
346
+ "wasm"
347
+ ],
348
+ "alone": {
349
+ "bytes": 43535,
350
+ "gzip": 18533,
351
+ "brotli": 16233,
352
+ "sha256": "7120e389303d6db47e30bac0c41b61e7a5130e7b6aac1d95a9c0bfce0a1580a5",
353
+ "compress": {
354
+ "passes": 2,
355
+ "hoist_funs": true,
356
+ "hoist_vars": true,
357
+ "module": true
358
+ }
359
+ },
360
+ "added": {
361
+ "bytes": 22209,
362
+ "gzip": 9262,
363
+ "brotli": 8000
295
364
  },
296
365
  "provedByteCases": 98
297
366
  }
@@ -299,20 +368,23 @@
299
368
  "all": {
300
369
  "exports": [
301
370
  "LIMITS",
371
+ "configureKernels",
302
372
  "encode",
303
373
  "encodePhoto",
304
374
  "encodePhotoSteps",
305
375
  "encodeSteps",
376
+ "kernelMode",
306
377
  "transcode",
307
378
  "transcodeSteps"
308
379
  ],
309
380
  "doors": [
310
381
  "./effort",
311
382
  "./jpeg-ans",
312
- "./photo-ans"
383
+ "./photo-ans",
384
+ "./wasm"
313
385
  ],
314
- "bytes": 61101,
315
- "gzip": 24091,
316
- "brotli": 21147
386
+ "bytes": 74625,
387
+ "gzip": 30285,
388
+ "brotli": 26416
317
389
  }
318
390
  }