From c08b6ea82ab2812e31d34e0c09eed4a70b169bfb Mon Sep 17 00:00:00 2001 From: Walter Perdan Date: Tue, 7 Jul 2026 21:19:37 +0200 Subject: [PATCH] build: migrate webpack to Vite 8 library mode; modernize tsconfig (#42) Replace webpack + babel-loader + ts-loader + @babel/* with Vite library mode + vite-plugin-dts. Toolchain upgraded to latest (vitest 4's peer range allows Vite 8): - vite 8.1.3, vitest 4.1.10, vite-plugin-dts 5.0.3, typescript 6.0.3 tsconfig modernized for TS 6 + Vite (TS 6 turns the old options into hard errors): - moduleResolution 'bundler', target ES2020, lib [ESNext, DOM] - noEmit: true (Vite/esbuild does the JS build now; tsc is typecheck-only) - removed deprecated downlevelIteration/baseUrl and the odd top-level paths mapping - the old top-level 'lib' key (outside compilerOptions) was a latent no-op bug, now fixed vite.config.mts: - dts plugin uses outDirs (renamed from outDir in v5/unplugin-dts) -> types/, so declarations land only under types/ and NOT under dist/ alongside the JS bundle Output (non-breaking): - UMD dist/jsfeatNext.js: global 'jsfeatNext' exposing the default export, so 'jsfeatNext.jsfeatNext' and the examples keep working; also CJS-requireable (main) - NEW ESM dist/jsfeatNext.mjs (module / import) - package.json: exports map (types/import/require), module field, files whitelist; dropped @babel/runtime (no external runtime deps remain) README: replace the 'webpack bundler' feature bullet and add a Requirements & building section (Node version, build/watch/test commands, output shape). Deferred to #41: the jsfeatNext.jsfeatNext double-namespace itself (breaking change, out of scope for this build-only migration). Verified: tsc --noEmit clean; npm test 57 passed; UMD require, browser global simulation, ESM import, and consumer .d.ts resolution all checked and match the webpack baseline (VERSION 0.7.5, jsfeatNext.jsfeatNext.imgproc). Co-Authored-By: Claude Sonnet 5 --- README.md | 11 +- dist/jsfeatNext.js | 2 +- dist/jsfeatNext.mjs | 2591 ++++++++ dist/package.json | 47 - dist/src/cache/cache.js | 33 - dist/src/cache/cache.js.map | 1 - dist/src/constants/constants.js | 28 - dist/src/constants/constants.js.map | 1 - dist/src/data_type/data_type.js | 16 - dist/src/data_type/data_type.js.map | 1 - dist/src/fast_corners/fast_corners.js | 9 - dist/src/fast_corners/fast_corners.js.map | 1 - dist/src/fast_corners/fast_private.js | 36 - dist/src/fast_corners/fast_private.js.map | 1 - dist/src/homography2d/homography2d.js | 2 - dist/src/homography2d/homography2d.js.map | 1 - dist/src/imgproc/convol.js | 169 - dist/src/imgproc/convol.js.map | 1 - dist/src/imgproc/imgproc.js | 45 - dist/src/imgproc/imgproc.js.map | 1 - dist/src/imgproc/resample.js | 165 - dist/src/imgproc/resample.js.map | 1 - dist/src/index.js | 5 - dist/src/index.js.map | 1 - dist/src/jsfeatNext.js | 2928 --------- dist/src/jsfeatNext.js.map | 1 - dist/src/keypoint_t/keypoint_t.js | 15 - dist/src/keypoint_t/keypoint_t.js.map | 1 - dist/src/linalg/linalg.js | 27 - dist/src/linalg/linalg.js.map | 1 - dist/src/linalg/linalg_base.js | 19 - dist/src/linalg/linalg_base.js.map | 1 - dist/src/math/math.js | 15 - dist/src/math/math.js.map | 1 - dist/src/matmath/matmath.js | 194 - dist/src/matmath/matmath.js.map | 1 - dist/src/matrix_t/matrix_t.js | 77 - dist/src/matrix_t/matrix_t.js.map | 1 - dist/src/motion_estimator/motion_estimator.js | 15 - .../motion_estimator/motion_estimator.js.map | 1 - dist/src/motion_estimator/ransac_params_t.js | 18 - .../motion_estimator/ransac_params_t.js.map | 1 - dist/src/node_utils/_pool_node_t.js | 32 - dist/src/node_utils/_pool_node_t.js.map | 1 - dist/src/node_utils/data_t.js | 23 - dist/src/node_utils/data_t.js.map | 1 - dist/src/optical_flow_lk/optical_flow_lk.js | 6 - .../optical_flow_lk/optical_flow_lk.js.map | 1 - dist/src/orb/bit_pattern_31.js | 146 - dist/src/orb/bit_pattern_31.js.map | 1 - dist/src/orb/orb.js | 6 - dist/src/orb/orb.js.map | 1 - dist/src/orb/rectify_patch.js | 12 - dist/src/orb/rectify_patch.js.map | 1 - dist/src/point_t/point_t.js | 9 - dist/src/point_t/point_t.js.map | 1 - dist/src/pyramid_t/pyramid_t.js | 8 - dist/src/pyramid_t/pyramid_t.js.map | 1 - dist/src/transform/transform.js | 143 - dist/src/transform/transform.js.map | 1 - dist/src/yape/yape.js | 64 - dist/src/yape/yape.js.map | 1 - dist/src/yape/yape_utils.js | 619 -- dist/src/yape/yape_utils.js.map | 1 - dist/src/yape06/yape06.js | 6 - dist/src/yape06/yape06.js.map | 1 - dist/src/yape06/yape06_utils.js | 24 - dist/src/yape06/yape06_utils.js.map | 1 - package-lock.json | 5796 +++-------------- package.json | 37 +- tsconfig.json | 37 +- types/src/cache/cache.d.ts | 2 +- types/src/fast_corners/fast_corners.d.ts | 4 +- types/src/homography2d/homography2d.d.ts | 4 +- types/src/imgproc/imgproc.d.ts | 2 +- types/src/imgproc/resample.d.ts | 4 +- types/src/index.d.ts | 2 +- types/src/jsfeatNext.d.ts | 36 +- types/src/linalg/linalg.d.ts | 2 +- types/src/math/math.d.ts | 2 +- types/src/matmath/matmath.d.ts | 2 +- types/src/matrix_t/matrix_t.d.ts | 2 +- .../motion_estimator/motion_estimator.d.ts | 8 +- types/src/node_utils/_pool_node_t.d.ts | 2 +- .../src/optical_flow_lk/optical_flow_lk.d.ts | 2 +- types/src/orb/orb.d.ts | 4 +- types/src/orb/rectify_patch.d.ts | 4 +- types/src/pyramid_t/pyramid_t.d.ts | 2 +- types/src/transform/transform.d.ts | 2 +- types/src/yape/yape.d.ts | 4 +- types/src/yape06/yape06.d.ts | 4 +- vite.config.mts | 43 + webpack.config.js | 58 - 93 files changed, 3774 insertions(+), 9888 deletions(-) create mode 100644 dist/jsfeatNext.mjs delete mode 100644 dist/package.json delete mode 100644 dist/src/cache/cache.js delete mode 100644 dist/src/cache/cache.js.map delete mode 100644 dist/src/constants/constants.js delete mode 100644 dist/src/constants/constants.js.map delete mode 100644 dist/src/data_type/data_type.js delete mode 100644 dist/src/data_type/data_type.js.map delete mode 100644 dist/src/fast_corners/fast_corners.js delete mode 100644 dist/src/fast_corners/fast_corners.js.map delete mode 100644 dist/src/fast_corners/fast_private.js delete mode 100644 dist/src/fast_corners/fast_private.js.map delete mode 100644 dist/src/homography2d/homography2d.js delete mode 100644 dist/src/homography2d/homography2d.js.map delete mode 100644 dist/src/imgproc/convol.js delete mode 100644 dist/src/imgproc/convol.js.map delete mode 100644 dist/src/imgproc/imgproc.js delete mode 100644 dist/src/imgproc/imgproc.js.map delete mode 100644 dist/src/imgproc/resample.js delete mode 100644 dist/src/imgproc/resample.js.map delete mode 100644 dist/src/index.js delete mode 100644 dist/src/index.js.map delete mode 100644 dist/src/jsfeatNext.js delete mode 100644 dist/src/jsfeatNext.js.map delete mode 100644 dist/src/keypoint_t/keypoint_t.js delete mode 100644 dist/src/keypoint_t/keypoint_t.js.map delete mode 100644 dist/src/linalg/linalg.js delete mode 100644 dist/src/linalg/linalg.js.map delete mode 100644 dist/src/linalg/linalg_base.js delete mode 100644 dist/src/linalg/linalg_base.js.map delete mode 100644 dist/src/math/math.js delete mode 100644 dist/src/math/math.js.map delete mode 100644 dist/src/matmath/matmath.js delete mode 100644 dist/src/matmath/matmath.js.map delete mode 100644 dist/src/matrix_t/matrix_t.js delete mode 100644 dist/src/matrix_t/matrix_t.js.map delete mode 100644 dist/src/motion_estimator/motion_estimator.js delete mode 100644 dist/src/motion_estimator/motion_estimator.js.map delete mode 100644 dist/src/motion_estimator/ransac_params_t.js delete mode 100644 dist/src/motion_estimator/ransac_params_t.js.map delete mode 100644 dist/src/node_utils/_pool_node_t.js delete mode 100644 dist/src/node_utils/_pool_node_t.js.map delete mode 100644 dist/src/node_utils/data_t.js delete mode 100644 dist/src/node_utils/data_t.js.map delete mode 100644 dist/src/optical_flow_lk/optical_flow_lk.js delete mode 100644 dist/src/optical_flow_lk/optical_flow_lk.js.map delete mode 100644 dist/src/orb/bit_pattern_31.js delete mode 100644 dist/src/orb/bit_pattern_31.js.map delete mode 100644 dist/src/orb/orb.js delete mode 100644 dist/src/orb/orb.js.map delete mode 100644 dist/src/orb/rectify_patch.js delete mode 100644 dist/src/orb/rectify_patch.js.map delete mode 100644 dist/src/point_t/point_t.js delete mode 100644 dist/src/point_t/point_t.js.map delete mode 100644 dist/src/pyramid_t/pyramid_t.js delete mode 100644 dist/src/pyramid_t/pyramid_t.js.map delete mode 100644 dist/src/transform/transform.js delete mode 100644 dist/src/transform/transform.js.map delete mode 100644 dist/src/yape/yape.js delete mode 100644 dist/src/yape/yape.js.map delete mode 100644 dist/src/yape/yape_utils.js delete mode 100644 dist/src/yape/yape_utils.js.map delete mode 100644 dist/src/yape06/yape06.js delete mode 100644 dist/src/yape06/yape06.js.map delete mode 100644 dist/src/yape06/yape06_utils.js delete mode 100644 dist/src/yape06/yape06_utils.js.map create mode 100644 vite.config.mts delete mode 100644 webpack.config.js diff --git a/README.md b/README.md index 949ec92..25085c6 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ A testing repository to develop a ES6 version of [jsfeat](https://github.com/ins - ES6 support -- webpack bundler +- Vite-built UMD + ESM bundles - npm package @@ -40,6 +40,15 @@ These public classes were implemented: - yape - yape06 +## Requirements & building 🛠️ + +- **Node.js** v24 (see `.nvmrc`; npm 11) +- Build (UMD + ESM + type declarations): `npm install` then `npm run build-ts` + - Produces `dist/jsfeatNext.js` (UMD, browser global `jsfeatNext`), `dist/jsfeatNext.mjs` (ESM), and `types/` + - Built with **Vite** library mode (as of the webpack → Vite migration); webpack/babel are no longer used +- Watch mode: `npm run dev-ts` +- Tests: `npm test` (Vitest — characterization tests against the original jsfeat) + ## npm package 📦 You can install the package with: diff --git a/dist/jsfeatNext.js b/dist/jsfeatNext.js index 32ab65e..b975082 100644 --- a/dist/jsfeatNext.js +++ b/dist/jsfeatNext.js @@ -1 +1 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.jsfeatNext=e():t.jsfeatNext=e()}(this,(()=>(()=>{"use strict";var t={d:(e,r)=>{for(var a in r)t.o(r,a)&&!t.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:r[a]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e)},e={};function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function a(t){return a=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},a(t)}function i(t,e){return i=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},i(t,e)}function o(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&i(t,e)}function f(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function n(t){var e=function(t){if("object"!=r(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var a=e.call(t,"string");if("object"!=r(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==r(e)?e:e+""}function s(t,e){for(var r=0;rV});var c=function(){return h((function t(){f(this,t),u(this,"_data_type_size",void 0),this._data_type_size=new Int32Array([-1,1,4,-1,4,-1,-1,-1,8,-1,-1,-1,-1,-1,-1,-1,8])}),[{key:"_get_data_type",value:function(t){return 65280&t}},{key:"_get_channel",value:function(t){return 255&t}},{key:"_get_data_type_size",value:function(t){return this._data_type_size[(65280&t)>>8]}}])}(),d=h((function t(e,r){f(this,t),u(this,"size",void 0),u(this,"buffer",void 0),u(this,"u8",void 0),u(this,"i32",void 0),u(this,"f32",void 0),u(this,"f64",void 0),this.size=e+7&-8,void 0===r?this.buffer=new ArrayBuffer(this.size):(this.buffer=r,this.size=r.length),this.u8=new Uint8Array(this.buffer),this.i32=new Int32Array(this.buffer),this.f32=new Float32Array(this.buffer),this.f64=new Float64Array(this.buffer)})),_=function(){return h((function t(e){f(this,t),u(this,"next",void 0),u(this,"data",void 0),u(this,"size",void 0),u(this,"buffer",void 0),u(this,"u8",void 0),u(this,"i32",void 0),u(this,"f32",void 0),u(this,"f64",void 0),this.next=null,this.data=new d(e),this.size=this.data.size,this.buffer=this.data.buffer,this.u8=this.data.u8,this.i32=this.data.i32,this.f32=this.data.f32,this.f64=this.data.f64}),[{key:"resize",value:function(t){delete this.data,this.data=new d(t),this.size=this.data.size,this.buffer=this.data.buffer,this.u8=this.data.u8,this.i32=this.data.i32,this.f32=this.data.f32,this.f64=this.data.f64}}])}(),v=function(){return h((function t(){f(this,t),u(this,"_pool_head",void 0),u(this,"_pool_tail",void 0),u(this,"_pool_size",void 0),this._pool_head,this._pool_tail,this._pool_size=0}),[{key:"allocate",value:function(t,e){this._pool_head=this._pool_tail=new _(e);for(var r=0;re.size&&e.resize(t),e}},{key:"put_buffer",value:function(t){this._pool_tail=this._pool_tail.next=t,this._pool_size++}}])}();function l(t,e,r,a){a=t[e],t[e]=t[r],t[r]=a}function b(t,e){return(t=Math.abs(t))>(e=Math.abs(e))?(e/=t,t*Math.sqrt(1+e*e)):e>0?(t/=e,e*Math.sqrt(1+t*t)):0}function p(t,e,r,a,i){for(var o=0,f=t[e],n=i,s=0,h=0,u=0;o<25;++o)a[o]=f-t[e+r[o]];for(o=0;o<16;o+=2)s=Math.min(a[o+1],a[o+2]),(s=Math.min(s,a[o+3]))<=n||(s=Math.min(s,a[o+4]),s=Math.min(s,a[o+5]),s=Math.min(s,a[o+6]),s=Math.min(s,a[o+7]),s=Math.min(s,a[o+8]),n=Math.max(n,Math.min(s,a[o])),n=Math.max(n,Math.min(s,a[o+9])));for(h=-n,o=0;o<16;o+=2)u=Math.max(a[o+1],a[o+2]),u=Math.max(u,a[o+3]),u=Math.max(u,a[o+4]),(u=Math.max(u,a[o+5]))>=h||(u=Math.max(u,a[o+6]),u=Math.max(u,a[o+7]),u=Math.max(u,a[o+8]),h=Math.min(h,Math.max(u,a[o])),h=Math.min(h,Math.max(u,a[o+9])));return-h-1}var y=function(){return h((function t(){f(this,t)}),[{key:"identity",value:function(t,e){void 0===e&&(e=1);for(var r=t.data,a=t.rows,i=t.cols,o=i+1|0,f=a*i,n=f;--f>=0;)r[f]=0;for(f=n,n=0;nthis.buffer.size?(this.cols=t,this.rows=e,this.channel=r,this.allocate()):(this.cols=t,this.rows=e,this.channel=r)}}])}(),x=function(){return h((function t(){f(this,t)}),[{key:"perspective_4point_transform",value:function(t,e,r,a,i,o,f,n,s,h,u,c,d,_,v,l,b){var p=e,y=h,m=f,M=p*y*m,w=v,k=p*w,g=y*k,x=u,A=p*x,z=o,O=r,q=_,C=O*q,T=C*z,S=q*z*x,j=q*m,B=q*x,R=y*m,I=w*y,L=w*z,P=x*z,E=1/(j-B-R+I-L+P),U=p*q,F=O*z,V=m*p,G=w*V,N=O*y,D=C*x,J=O*x*z,Y=m*w*y,H=w*O,Q=-(g-M+A*z-z*k-C*y+T-S+j*y)*E,X=(M-g-U*m+U*x+T-y*F+L*y-S)*E,K=p,W=(-x*k+G+N*m-C*m+D-J+L*x-Y)*E,Z=(V*x-G-H*y+D-J+H*z+Y-j*x)*E,$=O,tt=(-A+V+N-F+B-j-I+L)*E,et=(-k+A+C-N+L-P-j+R)*E,rt=-((g=(y=c)*(k=(p=a)*(w=b)))-(M=p*y*(m=s))+(A=p*(x=d))*(z=n)-z*k-(C=(O=i)*(q=l))*y+(T=C*z)-(S=q*z*x)+(j=q*m)*y)*(E=1/(j-(B=q*x)-(R=y*m)+(I=w*y)-(L=w*z)+(P=x*z))),at=(M-g-(U=p*q)*m+U*x+T-y*(F=O*z)+L*y-S)*E,it=p,ot=(-x*k+(G=w*(V=m*p))+(N=O*y)*m-C*m+(D=C*x)-(J=O*x*z)+L*x-(Y=m*w*y))*E,ft=(V*x-G-(H=w*O)*y+D-J+H*z+Y-j*x)*E,nt=O,st=(-A+V+N-F+B-j-I+L)*E,ht=(-k+A+C-N+L-P-j+R)*E,ut=K*tt;T=$*tt-W;var ct=-W*et+Z*tt,dt=Q-ut;F=Q*et-(A=X*tt);var _t=(M=Q*$)-(g=K*W),vt=(m=Q*Z)-(k=W*X);J=(y=Z-et*$)*(q=1/(m-M*et-k+g*et+A*$-ut*Z));var lt=(P=K*et-X)*q,bt=(V=-X*$+K*Z)*q,pt=t.data;pt[0]=rt*J+at*(T*q)-it*(ct*q),pt[1]=rt*lt+at*(dt*q)-it*(F*q),pt[2]=-rt*bt-at*(_t*q)+it*(vt*q),pt[3]=ot*J+ft*(T*q)-nt*(ct*q),pt[4]=ot*lt+ft*(dt*q)-nt*(F*q),pt[5]=-ot*bt-ft*(_t*q)+nt*(vt*q),pt[6]=st*J+ht*(T*q)-ct*q,pt[7]=st*lt+ht*(dt*q)-F*q,pt[8]=-st*bt-ht*(_t*q)+vt*q}},{key:"invert_affine_transform",value:function(t,e){var r=t.data,a=e.data,i=r[0],o=r[1],f=r[2],n=r[3],s=r[4],h=r[5],u=1/(i*s-o*n);a[0]=u*s,a[1]=u*-o,a[2]=u*(o*h-f*s),a[3]=u*-n,a[4]=u*i,a[5]=u*(f*n-i*h)}},{key:"invert_perspective_transform",value:function(t,e){var r=t.data,a=e.data,i=r[0],o=r[1],f=r[2],n=r[3],s=r[4],h=r[5],u=r[6],c=r[7],d=r[8],_=1/(i*(s*d-h*c)-o*(n*d-h*u)+f*(n*c-s*u));a[0]=_*(s*d-h*c),a[1]=_*(f*c-o*d),a[2]=_*(o*h-f*s),a[3]=_*(h*u-n*d),a[4]=_*(i*d-f*u),a[5]=_*(f*n-i*h),a[6]=_*(n*c-s*u),a[7]=_*(o*u-i*c),a[8]=_*(i*s-o*n)}}])}(),A=h((function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:-1;f(this,t),u(this,"x",void 0),u(this,"y",void 0),u(this,"score",void 0),u(this,"level",void 0),u(this,"angle",void 0),this.x=e,this.y=r,this.score=a,this.level=i,this.angle=o})),z=[8,-3,9,5,4,2,7,-12,-11,9,-8,2,7,-12,12,-13,2,-13,2,12,1,-7,1,6,-2,-10,-2,-4,-13,-13,-11,-8,-13,-3,-12,-9,10,4,11,9,-13,-8,-8,-9,-11,7,-9,12,7,7,12,6,-4,-5,-3,0,-13,2,-12,-3,-9,0,-7,5,12,-6,12,-1,-3,6,-2,12,-6,-13,-4,-8,11,-13,12,-8,4,7,5,1,5,-3,10,-3,3,-7,6,12,-8,-7,-6,-2,-2,11,-1,-10,-13,12,-8,10,-7,3,-5,-3,-4,2,-3,7,-10,-12,-6,11,5,-12,6,-7,5,-6,7,-1,1,0,4,-5,9,11,11,-13,4,7,4,12,2,-1,4,4,-4,-12,-2,7,-8,-5,-7,-10,4,11,9,12,0,-8,1,-13,-13,-2,-8,2,-3,-2,-2,3,-6,9,-4,-9,8,12,10,7,0,9,1,3,7,-5,11,-10,-13,-6,-11,0,10,7,12,1,-6,-3,-6,12,10,-9,12,-4,-13,8,-8,-12,-13,0,-8,-4,3,3,7,8,5,7,10,-7,-1,7,1,-12,3,-10,5,6,2,-4,3,-10,-13,0,-13,5,-13,-7,-12,12,-13,3,-11,8,-7,12,-4,7,6,-10,12,8,-9,-1,-7,-6,-2,-5,0,12,-12,5,-7,5,3,-10,8,-13,-7,-7,-4,5,-3,-2,-1,-7,2,9,5,-11,-11,-13,-5,-13,-1,6,0,-1,5,-3,5,2,-4,-13,-4,12,-9,-6,-9,6,-12,-10,-8,-4,10,2,12,-3,7,12,12,12,-7,-13,-6,5,-4,9,-3,4,7,-1,12,2,-7,6,-5,1,-13,11,-12,5,-3,7,-2,-6,7,-8,12,-7,-13,-7,-11,-12,1,-3,12,12,2,-6,3,0,-4,3,-2,-13,-1,-13,1,9,7,1,8,-6,1,-1,3,12,9,1,12,6,-1,-9,-1,3,-13,-13,-10,5,7,7,10,12,12,-5,12,9,6,3,7,11,5,-13,6,10,2,-12,2,3,3,8,4,-6,2,6,12,-13,9,-12,10,3,-8,4,-7,9,-11,12,-4,-6,1,12,2,-8,6,-9,7,-4,2,3,3,-2,6,3,11,0,3,-3,8,-8,7,8,9,3,-11,-5,-6,-4,-10,11,-5,10,-5,-8,-3,12,-10,5,-9,0,8,-1,12,-6,4,-6,6,-11,-10,12,-8,7,4,-2,6,7,-2,0,-2,12,-5,-8,-5,2,7,-6,10,12,-9,-13,-8,-8,-5,-13,-5,-2,8,-8,9,-13,-9,-11,-9,0,1,-8,1,-2,7,-4,9,1,-2,1,-1,-4,11,-6,12,-11,-12,-9,-6,4,3,7,7,12,5,5,10,8,0,-4,2,8,-9,12,-5,-13,0,7,2,12,-1,2,1,7,5,11,7,-9,3,5,6,-8,-13,-4,-8,9,-5,9,-3,-3,-4,-7,-3,-12,6,5,8,0,-7,6,-6,12,-13,6,-5,-2,1,-10,3,10,4,1,8,-4,-2,-2,2,-13,2,-12,12,12,-2,-13,0,-6,4,1,9,3,-6,-10,-3,-5,-3,-13,-1,1,7,5,12,-11,4,-2,5,-7,-13,9,-9,-5,7,1,8,6,7,-8,7,6,-7,-4,-7,1,-8,11,-7,-8,-13,6,-12,-8,2,4,3,9,10,-5,12,3,-6,-5,-6,7,8,-3,9,-8,2,-12,2,8,-11,-2,-10,3,-12,-13,-7,-9,-11,0,-10,-5,5,-3,11,8,-2,-13,-1,12,-1,-8,0,9,-13,-11,-12,-5,-10,-2,-10,11,-3,9,-2,-13,2,-3,3,2,-9,-13,-4,0,-4,6,-3,-10,-4,12,-2,-7,-6,-11,-4,9,6,-3,6,11,-13,11,-5,5,11,11,12,6,7,-5,12,-2,-1,12,0,7,-4,-8,-3,-2,-7,1,-6,7,-13,-12,-8,-13,-7,-2,-6,-8,-8,5,-6,-9,-5,-1,-4,5,-13,7,-8,10,1,5,5,-13,1,0,10,-13,9,12,10,-1,5,-8,10,-9,-1,11,1,-13,-9,-3,-6,2,-1,-10,1,12,-13,1,-8,-10,8,-11,10,-6,2,-13,3,-6,7,-13,12,-9,-10,-10,-5,-7,-10,-8,-8,-13,4,-6,8,5,3,12,8,-13,-4,2,-3,-3,5,-13,10,-12,4,-13,5,-1,-9,9,-4,3,0,3,3,-9,-12,1,-6,1,3,2,4,-8,-10,-10,-10,9,8,-13,12,12,-8,-12,-6,-5,2,2,3,7,10,6,11,-8,6,8,8,-12,-7,10,-6,5,-3,-9,-3,9,-1,-13,-1,5,-3,-7,-3,4,-8,-2,-8,3,4,2,12,12,2,-5,3,11,6,-9,11,-13,3,-1,7,12,11,-1,12,4,-3,0,-3,6,4,-11,4,12,2,-4,2,1,-10,-6,-8,1,-13,7,-11,1,-13,12,-11,-13,6,0,11,-13,0,-1,1,4,-13,3,-9,-2,-9,8,-6,-3,-13,-6,-8,-2,5,-9,8,10,2,7,3,-9,-1,-6,-1,-1,9,5,11,-2,11,-3,12,-8,3,0,3,5,-1,4,0,10,3,-6,4,5,-13,0,-10,5,5,8,12,11,8,9,9,-6,7,-4,8,-12,-10,4,-10,9,7,3,12,4,9,-7,10,-2,7,0,12,-2,-1,-6,0,-11];function O(t,e,r,a,i,o,f,n){var s=Math.cos(r),h=Math.sin(r);f.data[0]=s,f.data[1]=-h,f.data[2]=(-s+h)*o*.5+a,f.data[3]=h,f.data[4]=s,f.data[5]=(-h-s)*o*.5+i,n.warp_affine(t,e,f,128)}function q(t,e,r,a,i){var o,f;if(r>0)for(e-=a*i,f=-i;f<=i;++f){for(o=-i;o<=i;++o)if(t[e+o]>r)return!1;e+=a}else for(e-=a*i,f=-i;f<=i;++f){for(o=-i;o<=i;++o)if(t[e+o]=a)if((d=t[e+o[u]])<=i){if(d>=a)return void(r[e]=0);if((_=t[e+o[++u]])>i)if((v=t[e+o[++u]])>i)l=3;else{if(!(vi)l=7;else{if(!(vi)if((v=t[e+o[++u]])>i)l=3;else{if(!(vi)l=7;else{if(!(vi)return void(r[e]=0);if((_=t[e+o[++u]])>i)return void(r[e]=0);if((v=t[e+o[++u]])>i)return void(r[e]=0);l=1}else{if((d=t[e+o[u]])i){if(_=v,(v=t[e+o[++u]])i)return void(r[e]=0);if(v>i)return void(r[e]=0);if(_=v,(v=t[e+o[++u]])>i)return void(r[e]=0);s-=c+_,l=8;break}if(_<=i)return void(r[e]=0);if(v<=i)return void(r[e]=0);if(_=v,(v=t[e+o[++u]])>i){s-=c+_,l=3;break}if(vi)return void(r[e]=0);s-=c+_,l=1;break}if(c>i){if(_=a)return void(r[e]=0);if(v>=a)return void(r[e]=0);if(_=v,(v=t[e+o[++u]])i){s-=c+_,l=7;break}return void(r[e]=0);case 2:if(c>i)return void(r[e]=0);if(_=v,v=t[e+o[++u]],ci)return void(r[e]=0);s-=c+_,l=4;break}if(v>i){s-=c+_,l=7;break}if(vi){if(vi){s-=c+_,l=3;break}if(vi)return void(r[e]=0);if(ci)return void(r[e]=0);s-=c+_,l=1;break}if(v>=a)return void(r[e]=0);if(_=v,(v=t[e+o[++u]])i){s-=c+_,l=7;break}return void(r[e]=0);case 5:if(ci){if(_=v,(v=t[e+o[++u]])i){s-=c+_,l=3;break}if(vi)return void(r[e]=0);if(ci){s-=c+_,l=3;break}if(vi)return void(r[e]=0);if(ci){s-=c+_,l=7;break}return void(r[e]=0);case 8:if(c>i){if(vi)return void(r[e]=0);s-=c+_,l=1;break}return void(r[e]=0);case 9:if(ci)return void(r[e]=0);if(_=v,(v=t[e+o[++u]])>i)return void(r[e]=0);s-=c+_,l=8;break}if(c>i){if(_=v,(v=t[e+o[++u]])=0;a--,o++)i=Math.sqrt(r*r-a*a)+.5|0,e[o]=a+t*i;for(;-a=0;i--,o++)a=-Math.sqrt(r*r-i*i)-.5|0,e[o]=a+t*i;for(;i>a;i--,o++)a=-Math.sqrt(r*r-i*i)-.5|0,e[o]=a+t*i;for(a++;a<=0;a++,o++)i=-Math.sqrt(r*r-a*a)-.5|0,e[o]=a+t*i;for(;a<-i;a++,o++)i=-Math.sqrt(r*r-a*a)-.5|0,e[o]=a+t*i;for(i++;i<0;i++,o++)a=Math.sqrt(r*r-i*i)+.5|0,e[o]=a+t*i;return e[o]=e[0],e[o+1]=e[1],o}(e,this.dirs,a),this.scores=new Int32Array(e*r),this.radius=0|a})),S=function(){return h((function t(){f(this,t),u(this,"level_tables",void 0),u(this,"tau",void 0),this.level_tables=[],this.tau=7}),[{key:"init",value:function(t,e,r){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;r=Math.min(r,7),r=Math.max(r,3);for(var i=0;i>i,e>>i,r)}},{key:"detect",value:function(t,e){var r,a,i,o,f,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:4,s=this.level_tables[0],h=0|s.radius,u=h-1|0,c=s.dirs,d=0|s.dirs_count,_=d>>1,v=t.data,l=0|t.cols,b=0|t.rows,p=l>>1,y=s.scores,m=0,M=0,w=0,k=0,g=0,x=0,A=0,z=0,O=0|this.tau,T=0,S=0|Math.max(h+1,n),j=0|Math.max(h+1,n),B=0|Math.min(l-h-2,l-n),R=0|Math.min(b-h-2,b-n);for(w=j*l+S|0,M=j;M=3&&q(y,k,z,p,h)&&((r=e[T]).x=m,r.y=M,r.score=A,++T,m+=u,k+=u));return T}}])}();function j(t,e,r,a,i,o,f){var n=-2*t[e]+t[e+a]+t[e-a],s=-2*t[e]+t[e+i]+t[e-i],h=t[e+o]+t[e-o]-t[e+f]-t[e-f],u=0|Math.sqrt((n-s)*(n-s)+4*h*h);return Math.min(Math.abs(r-u),Math.abs(-(r+u)))}var B,R=function(){return h((function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.5,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:.5,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:.99;f(this,t),u(this,"size",void 0),u(this,"thresh",void 0),u(this,"eps",void 0),u(this,"prob",void 0),this.size=e,this.thresh=r,this.eps=a,this.prob=i}),[{key:"update_iters",value:function(t,e){var r=Math.log(1-this.prob),a=Math.log(1-Math.pow(1-t,this.size));return 0|(a>=0||-r>=e*-a?e:Math.round(r/a))}}])}();function I(t,e,i){return e=a(e),function(t,e){if(e&&("object"==r(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,L()?Reflect.construct(e,i||[],a(t).constructor):e.apply(t,i))}function L(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(L=function(){return!!t})()}var P=function(){return h((function t(){f(this,t),u(this,"dt",void 0),u(this,"cache",void 0),this.dt=new c,this.cache=new v,this.cache.allocate(30,2560)}),[{key:"get_data_type",value:function(t){return this.dt._get_data_type(t)}},{key:"get_channel",value:function(t){return this.dt._get_channel(t)}},{key:"get_data_type_size",value:function(t){return this.dt._get_data_type_size(t)}}])}();B=P,u(P,"cache",void 0),u(P,"fast_corners",void 0),u(P,"imgproc",void 0),u(P,"linalg",void 0),u(P,"math",void 0),u(P,"matmath",void 0),u(P,"matrix_t",void 0),u(P,"pyramid_t",void 0),u(P,"transform",void 0),u(P,"keypoint_t",void 0),u(P,"yape",void 0),u(P,"yape06",void 0),u(P,"ransac_params_t",void 0),u(P,"affine2d",void 0),u(P,"homography2d",void 0),u(P,"motion_estimator",void 0),u(P,"optical_flow_lk",void 0),u(P,"orb",void 0),u(P,"VERSION","0.7.5"),u(P,"EPSILON",m),u(P,"FLT_MIN",1e-37),u(P,"U8_t",M),u(P,"S32_t",w),u(P,"F32_t",k),u(P,"S64_t",2048),u(P,"F64_t",4096),u(P,"C1_t",1),u(P,"C2_t",2),u(P,"C3_t",3),u(P,"C4_t",4),u(P,"COLOR_RGBA2GRAY",0),u(P,"COLOR_RGB2GRAY",1),u(P,"COLOR_BGRA2GRAY",2),u(P,"COLOR_BGR2GRAY",3),u(P,"BOX_BLUR_NOSCALE",1),u(P,"SVD_U_T",1),u(P,"SVD_V_T",2),u(P,"U8C1_t",B.U8_t|B.C1_t),u(P,"U8C3_t",B.U8_t|B.C3_t),u(P,"U8C4_t",B.U8_t|B.C4_t),u(P,"F32C1_t",B.F32_t|B.C1_t),u(P,"F32C2_t",B.F32_t|B.C2_t),u(P,"S32C1_t",B.S32_t|B.C1_t),u(P,"S32C2_t",B.S32_t|B.C2_t);var E=function(t){function e(){var t;return f(this,e),u(t=I(this,e),"T0",void 0),u(t,"T1",void 0),u(t,"AtA",void 0),u(t,"AtB",void 0),t.T0=new g(3,3,1025),t.T1=new g(3,3,1025),t.AtA=new g(6,6,1025),t.AtB=new g(6,1,1025),t}return o(e,t),h(e,[{key:"sqr",value:function(t){return t*t}},{key:"iso_normalize_points",value:function(t,e,r,a,i){for(var o,f,n=0,s=0,h=0,u=0,c=0,d=0,_=0,v=0,l=0;n=0;)h[i]=0;for(i=0;i=0;)this.data[a]=new g(t>>a,e>>a,r)}},{key:"build",value:function(t,e){void 0===e&&(e=!0);var r=2,a=t,i=this.data[0];if(!e)for(var o=t.cols*t.rows;--o>=0;)i.data[o]=t.data[o];for(i=this.data[1],this.pyrdown(a,i);rthis._threshold?2:0;return this._threshold}},{key:"detect",value:function(t,e,r){void 0===r&&(r=3);var a,i=t.data,o=t.cols,f=t.rows,n=0,s=0,h=0,u=0,c=0,d=this.cache.get_buffer(3*o),_=this.cache.get_buffer(3*(o+1)<<2),v=d.u8,l=_.i32,b=this.pixel_off,y=this.score_diff,m=Math.max(3,r),M=Math.min(f-2,f-r),w=Math.max(3,r),k=Math.min(o-3,o-r),g=0,x=0,A=p,z=this.threshold_tab,O=this._threshold,q=0,C=0,T=0,S=0,j=0,B=0,R=0,I=0,L=0,P=0,E=0,U=0;this._cmp_offsets(b,o,16);var F=b[0],V=b[1],G=b[2],N=b[3],D=b[4],J=b[5],Y=b[6],H=b[7],Q=b[8],X=b[9],K=b[10],W=b[11],Z=b[12],$=b[13],tt=b[14],et=b[15];for(n=0;n<3*o;++n)v[n]=0;for(n=m;n8){l[j+ ++S]=s,v[B+s]=A(i,R,b,y,O);break}}else g=0;if(2&T)for(u=q+O,g=0,h=0;h<25;++h)if(i[R+b[h]]>u){if(++g>8){l[j+ ++S]=s,v[B+s]=A(i,R,b,y,O);break}}else g=0}if(l[j+o]=S,n!=m)for(I=(c=(n-4+3)%3)*o|0,j=c*(o+1)|0,L=(c=(n-5+3)%3)*o|0,S=l[j+o],h=0;hv[I+P]&&U>v[I+E]&&U>v[L+E]&&U>v[L+s]&&U>v[L+P]&&U>v[B+E]&&U>v[B+s]&&U>v[B+P]&&((a=e[x]).x=s,a.y=n-1,a.score=U,x++)}return this.cache.put_buffer(d),this.cache.put_buffer(_),x}},{key:"_cmp_offsets",value:function(t,e,r){for(var a=0,i=this.offsets16;a>14,p[u+1]=t[h+v]*c+t[h+v+1]*d+t[h+v+2]*_+8192>>14,p[u+2]=t[h+l]*c+t[h+l+1]*d+t[h+l+2]*_+8192>>14,p[u+3]=t[h+b]*c+t[h+b+1]*d+t[h+b+2]*_+8192>>14;for(;o>14}}},{key:"resample",value:function(t,e,r,a){var i=t.rows,o=t.cols;i>a&&o>r&&(e.resize(r,a,t.channel),t.type&M&&e.type&M&&i*o/(a*r)<256?function(t,e,r,a,i){for(var o=0,f=t.channel,n=t.cols,s=t.rows,h=t.data,u=e.data,c=n/a,d=s/i,_=c*d*65536|0,v=0,l=0,b=0,p=0,y=0,m=0,M=0,w=0,k=0,g=0,x=0,A=0,z=0,O=0,q=0,C=0,T=r.get_buffer(a*f<<2),S=r.get_buffer(a*f<<2),j=r.get_buffer(2*n*3<<2),B=T.i32,R=S.i32,I=j.i32;vk&&(I[w++]=v*f|0,I[w++]=(y-1)*f|0,I[w++]=256*(y-k)|0,o++),b=y;b.001&&(o++,I[w++]=v*f|0,I[w++]=m*f|0,I[w++]=256*(g-m)|0)}for(v=0;vk&&(o++,I[w++]=(y-1)*f|0,I[w++]=v*f|0,I[w++]=(y-k)*_),b=y;b.001&&(o++,I[w++]=m*f|0,I[w++]=v*f|0,I[w++]=(g-m)*_)}for(v=0;v>1,f=t.cols,n=t.rows,s=t.type,h=s&M;e.resize(f,n,t.channel);var u,c,d=t.data,_=e.data,v=r+Math.max(n,f)|0,l=this.cache.get_buffer(v<<2),b=this.cache.get_buffer(r<<2);h?(u=l.i32,c=b.i32):s&w?(u=l.i32,c=b.f32):(u=l.f32,c=b.f32),i.get_gaussian_kernel(r,a,c,s),h?function(t,e,r,a,i,o,f,n){for(var s=0,h=0,u=0,c=0,d=0,_=0,v=0,l=0,b=0,p=o[0],y=0,m=a<<1,M=3*a,w=a<<2;s>8,255),r[d+h+1]=Math.min(v>>8,255),r[d+h+2]=Math.min(l>>8,255),r[d+h+3]=Math.min(b>>8,255)}for(;h>8,255)}c+=a,d+=a}for(s=0;s>8,255),r[d+a]=Math.min(v>>8,255),r[d+m]=Math.min(l>>8,255),r[d+M]=Math.min(b>>8,255)}for(;h>8,255)}}}(u,d,_,f,n,c,r,o):function(t,e,r,a,i,o,f,n){for(var s=0,h=0,u=0,c=0,d=0,_=0,v=0,l=0,b=0,p=o[0],y=0,m=a<<1,M=3*a,w=a<<2;sa&&v[w]>v[w-1]&&v[w]>=v[w+1]&&v[w]>v[w-d-2]&&v[w]>=v[w+d+2]&&M.push(w)}M.sort((function(t,e){return v[t]>v[e]||v[t]==v[e]&&t>1,f=t.rows>>1,n=o-(r<<1),s=f-(a<<1),h=0,u=0,c=r+a*i,d=0,_=0,v=0;e.resize(o,f,t.channel);var l=t.data,b=e.data;for(u=0;u>2,b[v+1]=l[d+2]+l[d+3]+l[d+i+2]+l[d+i+3]+2>>2;for(;h>2;c+=i<<1,_+=o}}},{key:"scharr_derivatives",value:function(t,e){var r,a,i,o,f,n,s,h,u=t.cols,c=t.rows,d=u<<1,_=0,v=0,l=0,b=0,p=0,y=0,m=0;e.resize(u,c,2);var k=t.data,g=e.data,x=this.cache.get_buffer(u+2<<2),A=this.cache.get_buffer(u+2<<2);for(t.type&M||t.type&w?(s=x.i32,h=A.i32):(s=x.f32,h=A.f32);v0?v-1:1)*u|0,y=(v0?v-1:1)*u|0,y=(v0;--_)for(c=(u=_+o*n)-n,d=o;d>0;--d,u-=n,c-=n)a[u]+=a[c]+a[c+1]}}},{key:"equalize_histogram",value:function(t,e){var r=t.cols,a=t.rows,i=t.data;e.resize(r,a,t.channel);var o,f,n=e.data,s=r*a,h=0,u=0,c=this.cache.get_buffer(1024);for(o=c.i32;h<256;++h)o[h]=0;for(h=0;ha&&(n=r,r=a,a=n),n=3*(i+2)|0;--n>=0;)x[n]=0;for(n=(o+2)*(i+2)|0;--n>=0;)A[n]=0;for(;s>31)-(v>>31)+((l^l>>31)-(l>>31));for(n=1;n<=o;++n,h+=u){if(n==o)for(s=S+i;--s>=S;)x[s]=0;else for(s=0;s>31)-(v>>31)+((l^l>>31)-(l>>31));for(c=h-u|0,A[B-1]=0,d=0,s=0;sr)if(b=(v=O[c])^(l=O[c+1]),l=(l^l>>31)-(l>>31)|0,y=(p=13573*(v=(v^v>>31)-(v>>31)|0))+(v+v<<15),(l<<=15)x[T+s-1]&&_>=x[T+s+1]){_>a&&!d&&2!=A[B+s-j]?(A[B+s]=2,d=1,z[R++]=B+s):A[B+s]=1;continue}}else if(l>y){if(_>x[C+s]&&_>=x[S+s]){_>a&&!d&&2!=A[B+s-j]?(A[B+s]=2,d=1,z[R++]=B+s):A[B+s]=1;continue}}else if(_>x[C+s-(b=b<0?-1:1)]&&_>x[S+s+b]){_>a&&!d&&2!=A[B+s-j]?(A[B+s]=2,d=1,z[R++]=B+s):A[B+s]=1;continue}A[B+s]=0,d=0}A[B+i]=0,B+=j,s=C,C=T,T=S,S=s}for(s=B-j-1,n=0;n0;)B=z[--R],1==A[B-=j+1]&&(A[B]=2,z[R++]=B),1==A[B+=1]&&(A[B]=2,z[R++]=B),1==A[B+=1]&&(A[B]=2,z[R++]=B),1==A[B+=j]&&(A[B]=2,z[R++]=B),1==A[B-=2]&&(A[B]=2,z[R++]=B),1==A[B+=j]&&(A[B]=2,z[R++]=B),1==A[B+=1]&&(A[B]=2,z[R++]=B),1==A[B+=1]&&(A[B]=2,z[R++]=B);for(B=j+1,C=0,n=0;n0&&b>0&&_=0&&v>=0&&_95&&a>40&&i>20&&r>a&&r>i&&r-Math.min(a,i)>15&&Math.abs(r-a)>15?e[f]=255:e[f]=0}}])}(P),P.math=function(t){function e(){var t;return f(this,e),u(t=I(this,e),"qsort_stack",void 0),t.qsort_stack=new Int32Array(96),t}return o(e,t),h(e,[{key:"get_gaussian_kernel",value:function(t,e,r,a){var i=0,o=0,f=0,n=0,s=0,h=0,u=this.cache.get_buffer(t<<2),c=u.f32;if(!(1&~t)&&t<=7&&e<=0)switch(t>>1){case 0:c[0]=1,h=1;break;case 1:c[0]=.25,c[1]=.5,c[2]=.25,h=1;break;case 2:c[0]=.0625,c[1]=.25,c[2]=.375,c[3]=.25,c[4]=.0625,h=1;break;case 3:c[0]=.03125,c[1]=.109375,c[2]=.21875,c[3]=.28125,c[4]=.21875,c[5]=.109375,c[6]=.03125,h=1}else for(s=-.5/((n=e>0?e:.3*(.5*(t-1)-1)+.8)*n);i=0;)for(h=z[s<<1],u=z[1+(s<<1)],s--;;){if((d=u-h+1)<=7){for(v=h+1;v<=u;v++)for(l=v;l>h&&a(t[l],t[l-1]);l--)i=t[l],t[l]=t[l-1],t[l-1]=i;break}for(A=0,p=h,m=u,w=h+(d>>1),d>40&&(g=h+(b=d>>3),x=h+(b<<1),o=t[k=h],f=t[g],n=t[x],h=a(o,f)?a(f,n)?g:a(o,n)?x:k:a(n,f)?g:a(o,n)?k:x,g=w,x=w+b,o=t[k=w-b],f=t[g],n=t[x],w=a(o,f)?a(f,n)?g:a(o,n)?x:k:a(n,f)?g:a(o,n)?k:x,g=u-b,x=u,o=t[k=u-(b<<1)],f=t[g],n=t[x],u=a(o,f)?a(f,n)?g:a(o,n)?x:k:a(n,f)?g:a(o,n)?k:x),g=w,x=u,o=t[k=h],f=t[g],n=t[x],(w=a(o,f)?a(f,n)?g:a(o,n)?x:k:a(n,f)?g:a(o,n)?k:x)!=p&&(i=t[w],t[w]=t[p],t[p]=i,w=p),h=y=p+1,u=M=m,o=t[w];;){for(;h<=u&&!a(o,t[h]);)a(t[h],o)||(h>y&&(i=t[y],t[y]=t[h],t[h]=i),A=1,y++),h++;for(;h<=u&&!a(t[u],o);)a(o,t[u])||(uu)break;i=t[h],t[h]=t[u],t[u]=i,A=1,h++,u--}if(0==A){for(u=m,v=(h=p)+1;v<=u;v++)for(l=v;l>h&&a(t[l],t[l-1]);l--)i=t[l],t[l]=t[l-1],t[l-1]=i;break}for(_=h-(d=Math.min(y-p,h-y))|0,c=0;c1)_>1?d>_?(z[++s<<1]=p,z[1+(s<<1)]=p+d-1,h=m-_+1,u=m):(z[++s<<1]=m-_+1,z[1+(s<<1)]=m,h=p,u=p+d-1):(h=p,u=p+d-1);else{if(!(_>1))break;h=m-_+1,u=m}}}},{key:"median",value:function(t,e,r){for(var a,i=0,o=0,f=0,n=e+r>>1;;){if(r<=e)return t[n];if(r==e+1)return t[e]>t[r]&&(a=t[e],t[e]=t[r],t[r]=a),t[n];for(t[i=e+r>>1]>t[r]&&(a=t[i],t[i]=t[r],t[r]=a),t[e]>t[r]&&(a=t[e],t[e]=t[r],t[r]=a),t[i]>t[e]&&(a=t[i],t[i]=t[e],t[e]=a),o=e+1,a=t[i],t[i]=t[o],t[o]=a,f=r;;){do{++o}while(t[e]>t[o]);do{--f}while(t[f]>t[e]);if(f=n&&(r=f-1)}return 0}}])}(P),P.matmath=y,P.linalg=function(t){function e(){var t;return f(this,e),u(t=I(this,e),"matmath",void 0),t.matmath=new y,t}return o(e,t),h(e,[{key:"JacobiImpl",value:function(t,e,r,a,i,o){var f=m,n=0,s=0,h=0,u=0,c=0,d=0,_=0,v=0,p=0,y=o*o*30,M=0,w=0,k=0,g=0,x=0,A=0,z=0,O=0,q=0,C=this.cache.get_buffer(o<<2),T=this.cache.get_buffer(o<<2),S=C.i32,j=T.i32;if(a)for(;n0){for(u=0,M=Math.abs(t[h]),n=1;n1)for(;p0){for(u=0,M=Math.abs(t[d]),n=1;n>16?R:-R,t[s*e+u]=B;for(c=0;c<2;c++)for(h=0;hMath.abs(c[s*u+f])&&(s=n);if(Math.abs(c[s*u+f])=0;f--){for(o=d[f],s=f+1;s=0;h--){for(r=_[h],n=(u=h+1)*c;u=0;)r.data[f]=l.data[f];else r&&this.matmath.transpose(r,l);if(a&&2&i)for(f=u*u;--f>=0;)a.data[f]=p.data[f];else a&&this.matmath.transpose(a,p)}else{if(r&&1&i)for(f=u*u;--f>=0;)r.data[f]=p.data[f];else r&&this.matmath.transpose(r,p);if(a&&2&i)for(f=h*h;--f>=0;)a.data[f]=l.data[f];else a&&this.matmath.transpose(a,l)}this.cache.put_buffer(d),this.cache.put_buffer(_),this.cache.put_buffer(v)}},{key:"svd_solve",value:function(t,e,r){var a,i=0,o=0,f=0,n=0,s=0,h=t.rows,u=t.cols,c=0,d=0,_=1|t.type,v=this.cache.get_buffer(h*h<<3),l=this.cache.get_buffer(u<<3),b=this.cache.get_buffer(u*u<<3),p=new g(h,h,_,v.data),y=new g(1,u,_,l.data),M=new g(u,u,_,b.data),w=r.data,k=p.data,x=y.data,A=M.data;for(this.svd_decompose(t,y,p,M,0),a=m*x[0]*u;ia){for(f=0,c=0,n=0;fr&&(c+=x[n+o]*w[f]/k[o]);M[s]=c}this.cache.put_buffer(_),this.cache.put_buffer(v),this.cache.put_buffer(l)}},{key:"eigenVV",value:function(t,e,r){for(var a=t.cols,i=a*a,o=1|t.type,f=this.cache.get_buffer(a*a<<3),n=this.cache.get_buffer(a<<3),s=new g(a,a,o,f.data),h=new g(1,a,o,n.data);--i>=0;)s.data[i]=t.data[i];if(this.JacobiImpl(s.data,a,h.data,e?e.data:null,a,a),r)for(;--a>=0;)r.data[a]=h.data[a];this.cache.put_buffer(f),this.cache.put_buffer(n)}}])}(P),P.orb=function(t){function e(){var t;return f(this,e),u(t=I(this,e),"bit_pattern_31_",void 0),u(t,"H",void 0),u(t,"patch_img",void 0),u(t,"imgproc",void 0),t.bit_pattern_31_=new Int32Array(z),t.H=new g(3,3,1025),t.patch_img=new g(32,32,257),t.imgproc=new P.imgproc,t}return o(e,t),h(e,[{key:"describe",value:function(t,e,r,a){var i=0,o=0,f=0,n=0,s=0,h=0,u=0,c=0,d=this.patch_img.data,_=528,v=0;a.type&M?a.resize(32,r,1):(a.type=M,a.cols=32,a.rows=r,a.channel=1,a.allocate());var l=a.data,b=0;for(i=0;i=0;)_[i]=0;for(function(t,e,r,a,i,o,f,n,s){var h=0,u=0,c=f*r+o|0,d=c;for(h=f;h=0&&d+i=0?e[d]=-4*t[d]+t[d+5]+t[d-5]+t[d+i]+t[d-i]:e[d]=0}(s,_,f,0,h,w,k,g,x),l=k*f+w|0,o=k;om&&v>_[b-1]&&v>_[b+1]&&v>_[b-f]&&v>_[b+f]&&v>_[b-f-1]&&v>_[b+f-1]&&v>_[b-f+1]&&v>_[b+f+1])&&(p=j(s,b,v,5,h,u,c))>M&&((a=e[y]).x=i,a.y=o,a.score=p,++y,++i,++b);return this.cache.put_buffer(d),y}}])}(P),P.motion_estimator=function(t){function e(){return f(this,e),I(this,e)}return o(e,t),h(e,[{key:"get_subset",value:function(t,e,r,a,i,o,f){for(var n=1e3,s=[],h=0,u=0,c=0,d=0,_=!1;c=0;)f.data[i]=1;return this.cache.put_buffer(p),this.cache.put_buffer(y),this.cache.put_buffer(m),!0}for(;uMath.max(k,s-1)&&(M.copy_to(o),k=x,f&&w.copy_to(f),h=t.update_iters((i-x)/i,h),c=!0)}return this.cache.put_buffer(p),this.cache.put_buffer(y),this.cache.put_buffer(m),c}},{key:"lmeds",value:function(t,e,r,a,i,o,f,n){if(void 0===n&&(n=1e3),i=0;)f.data[i]=1;return this.cache.put_buffer(y),this.cache.put_buffer(m),this.cache.put_buffer(M),!0}for(;u=s),this.cache.put_buffer(y),this.cache.put_buffer(m),this.cache.put_buffer(M),c}}])}(P),P.ransac_params_t=R,P.affine2d=U,P.homography2d=F,P.optical_flow_lk=function(t){function e(){var t;f(this,e),u(t=I(this,e),"scharr_deriv",void 0);var r=new P.imgproc;return t.scharr_deriv=r.scharr_derivatives,t}return o(e,t),h(e,[{key:"track",value:function(t,e,r,a,i,o,f,n,s,h){void 0===f&&(f=30),void 0===n&&(n=new Uint8Array(i)),void 0===s&&(s=.01),void 0===h&&(h=1e-4);var u=.5*(o-1),c=o*o|0,d=c<<1,_=t.data,v=e.data,l=_[0].data,b=v[0].data,p=_[0].cols,y=_[0].rows,m=0,M=0,w=this.cache.get_buffer(c<<2),k=this.cache.get_buffer(d<<2),x=this.cache.get_buffer(y*(p<<1)<<2),A=new g(p,y,514,x.data),z=w.i32,O=k.i32,q=x.i32,C=0,T=0,S=0,j=0,B=0,R=0,I=0,L=0,P=0,E=0,U=0,F=0,V=0,G=0,N=0,D=0,J=0,Y=0,H=0,Q=0,X=0,K=0,W=0,Z=0,$=0,tt=0,et=0,rt=0,at=0,it=0,ot=0,ft=0,nt=16384,st=1/(1<<20),ht=0,ut=0,ct=0,dt=0,_t=0,vt=0,lt=0,bt=0,pt=0,yt=0,mt=0;for(s*=s;Q=0;--Z)for(I=1/(1<>Z,C=(m=p>>Z)<<1,l=_[Z].data,b=v[Z].data,et=m-o|0,rt=M-o|0,this.scharr_deriv(_[Z],A),$=0;$=et||J<=0||J>=rt)){for(dt=nt-(ht=(1-(at=L-D))*(1-(it=P-J))*nt+.5|0)-(ut=at*(1-it)*nt+.5|0)-(ct=(1-at)*it*nt+.5|0),bt=0,pt=0,yt=0,W=0;W>9,vt=8192+(vt=q[S]*ht+q[S+2]*ut+q[S+C]*ct+q[S+C+2]*dt)>>14,lt=8192+(lt=q[S+1]*ht+q[S+3]*ut+q[S+C+1]*ct+q[S+C+3]*dt)>>14,z[j]=_t,O[B++]=vt,O[B++]=lt,bt+=vt*vt,pt+=vt*lt,yt+=lt*lt;if(mt=(bt*=st)*(yt*=st)-(pt*=st)*pt,(yt+bt-Math.sqrt((bt-yt)*(bt-yt)+4*pt*pt))/d=et||H<=0||H>=rt)){0==Z&&(n[$]=0);break}for(dt=nt-(ht=(1-(at=E-Y))*(1-(it=U-H))*nt+.5|0)-(ut=at*(1-it)*nt+.5|0)-(ct=(1-at)*it*nt+.5|0),ot=0,ft=0,W=0;W>9,ot+=(_t-=z[j])*O[B++],ft+=_t*O[B++];if(E+=G=(pt*(ft*=st)-yt*(ot*=st))*mt,U+=N=(pt*ot-bt*ft)*mt,a[Q]=E+u,a[X]=U+u,G*G+N*N<=s)break;if(tt>0&&Math.abs(G+F)<.01&&Math.abs(N+V)<.01){a[Q]-=.5*G,a[X]-=.5*N;break}F=G,V=N}}else 0==Z&&(n[$]=0);this.cache.put_buffer(w),this.cache.put_buffer(k),this.cache.put_buffer(x)}}])}(P);const V={jsfeatNext:P};return e.default})())); \ No newline at end of file +(function(e,t){typeof exports==`object`&&typeof module<`u`?module.exports=t():typeof define==`function`&&define.amd?define([],t):(e=typeof globalThis<`u`?globalThis:e||self,e.jsfeatNext=t())})(this,function(){var e=class{constructor(){this._data_type_size=new Int32Array([-1,1,4,-1,4,-1,-1,-1,8,-1,-1,-1,-1,-1,-1,-1,8])}_get_data_type(e){return e&65280}_get_channel(e){return e&255}_get_data_type_size(e){return this._data_type_size[(e&65280)>>8]}},t=class{constructor(e,t){this.size=(e+7|0)&-8,t===void 0?this.buffer=new ArrayBuffer(this.size):(this.buffer=t,this.size=t.length),this.u8=new Uint8Array(this.buffer),this.i32=new Int32Array(this.buffer),this.f32=new Float32Array(this.buffer),this.f64=new Float64Array(this.buffer)}},n=class{constructor(e){this.next=null,this.data=new t(e),this.size=this.data.size,this.buffer=this.data.buffer,this.u8=this.data.u8,this.i32=this.data.i32,this.f32=this.data.f32,this.f64=this.data.f64}resize(e){delete this.data,this.data=new t(e),this.size=this.data.size,this.buffer=this.data.buffer,this.u8=this.data.u8,this.i32=this.data.i32,this.f32=this.data.f32,this.f64=this.data.f64}},r=class{constructor(){this._pool_head,this._pool_tail,this._pool_size=0}allocate(e,t){this._pool_head=this._pool_tail=new n(t);for(let r=0;rt.size&&t.resize(e),t}put_buffer(e){this._pool_tail=this._pool_tail.next=e,this._pool_size++}};function i(e,t,n,r,i){let a=0,o=e.channel,s=e.cols,c=e.rows,l=e.data,u=t.data,d=s/r,f=c/i,p=d*f*65536|0,m=0,h=0,g=0,_=0,v=0,y=0,b=0,x=0,S=0,C=0,w=0,T=0,E=0,D=0,O=0,k=0,A=n.get_buffer(r*o<<2),j=n.get_buffer(r*o<<2),M=n.get_buffer(s*2*3<<2),N=A.i32,P=j.i32,F=M.i32;for(;mS&&(F[x++]=m*o|0,F[x++]=(v-1)*o|0,F[x++]=(v-S)*256|0,a++),g=v;g.001&&(a++,F[x++]=m*o|0,F[x++]=y*o|0,F[x++]=(C-y)*256|0)}for(m=0;mS&&(a++,F[x++]=(v-1)*o|0,F[x++]=m*o|0,F[x++]=(v-S)*p),g=v;g.001&&(a++,F[x++]=y*o|0,F[x++]=m*o|0,F[x++]=(C-y)*p)}for(m=0;m>8,255),n[f+l+1]=Math.min(m>>8,255),n[f+l+2]=Math.min(h>>8,255),n[f+l+3]=Math.min(g>>8,255)}for(;l>8,255)}d+=r,f+=r}for(c=0;c>8,255),n[f+r]=Math.min(m>>8,255),n[f+y]=Math.min(h>>8,255),n[f+b]=Math.min(g>>8,255)}for(;l>8,255)}}}function s(e,t,n,r,i,a,o,s){let c=0,l=0,u=0,d=0,f=0,p=0,m=0,h=0,g=0,_=a[0],v=0,y=r<<1,b=r*3,x=r<<2;for(;ct?(t/=e,e*Math.sqrt(1+t*t)):t>0?(e/=t,t*Math.sqrt(1+e*e)):0}function u(e,t,n,r,i){let a=0,o=e[t],s=i,c=0,l=0,u=0;for(;a<25;++a)r[a]=o-e[t+n[a]];for(a=0;a<16;a+=2)c=Math.min(r[a+1],r[a+2]),c=Math.min(c,r[a+3]),!(c<=s)&&(c=Math.min(c,r[a+4]),c=Math.min(c,r[a+5]),c=Math.min(c,r[a+6]),c=Math.min(c,r[a+7]),c=Math.min(c,r[a+8]),s=Math.max(s,Math.min(c,r[a])),s=Math.max(s,Math.min(c,r[a+9])));for(l=-s,a=0;a<16;a+=2)u=Math.max(r[a+1],r[a+2]),u=Math.max(u,r[a+3]),u=Math.max(u,r[a+4]),u=Math.max(u,r[a+5]),!(u>=l)&&(u=Math.max(u,r[a+6]),u=Math.max(u,r[a+7]),u=Math.max(u,r[a+8]),l=Math.min(l,Math.max(u,r[a])),l=Math.min(l,Math.max(u,r[a+9])));return-l-1}var d=class{constructor(){}identity(e,t){t===void 0&&(t=1);let n=e.data,r=e.rows,i=e.cols,a=i+1|0,o=r*i,s=o;for(;--o>=0;)n[o]=0;for(o=s,s=0;sthis.buffer.size?(this.cols=e,this.rows=t,this.channel=n,this.allocate()):(this.cols=e,this.rows=t,this.channel=n)}},m=class{constructor(){}perspective_4point_transform(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g){let _=t,v=l,y=o,b=_*v*y,x=m,S=_*x,C=v*S,w=u,T=_*w,E=a,D=n,O=p,k=D*O,A=k*E,j=O*E*w,M=O*y,N=O*w,P=v*y,F=x*v,I=x*E,L=w*E,R=1/(M-N-P+F-I+L),z=_*O,B=D*E,V=y*_,ee=x*V,H=D*v,U=k*w,W=D*w*E,G=y*x*v,K=x*D,te=-(C-b+T*E-E*S-k*v+A-j+M*v)*R,q=(b-C-z*y+z*w+A-v*B+I*v-j)*R,ne=_,J=(-w*S+ee+H*y-k*y+U-W+I*w-G)*R,Y=(-ee+V*w-K*v+U-W+K*E+G-M*w)*R,X=D,Z=(-T+V+H-B+N-M-F+I)*R,Q=(-S+T+k-H+I-L-M+P)*R;_=r,v=d,y=c,b=_*v*y,x=g,S=_*x,C=v*S,w=f,T=_*w,E=s,D=i,O=h,k=D*O,A=k*E,j=O*E*w,M=O*y,N=O*w,P=v*y,F=x*v,I=x*E,L=w*E,R=1/(M-N-P+F-I+L),z=_*O,B=D*E,V=y*_,ee=x*V,H=D*v,U=k*w,W=D*w*E,G=y*x*v,K=x*D;let re=-(C-b+T*E-E*S-k*v+A-j+M*v)*R,ie=(b-C-z*y+z*w+A-v*B+I*v-j)*R,ae=_,oe=(-w*S+ee+H*y-k*y+U-W+I*w-G)*R,se=(-ee+V*w-K*v+U-W+K*E+G-M*w)*R,ce=D,le=(-T+V+H-B+N-M-F+I)*R,ue=(-S+T+k-H+I-L-M+P)*R;v=Y-Q*X,y=te*Y,b=te*X,S=J*q,C=ne*J,T=q*Z;let de=ne*Z;O=1/(y-b*Q-S+C*Q+T*X-de*Y),A=-J+X*Z;let fe=-J*Q+Y*Z;L=-q+ne*Q;let pe=te-de;B=te*Q-T,V=-q*X+ne*Y;let me=b-C,he=y-S;W=v*O;let ge=L*O,_e=V*O,$=e.data;$[0]=re*W+A*O*ie-fe*O*ae,$[1]=re*ge+pe*O*ie-B*O*ae,$[2]=-re*_e-me*O*ie+he*O*ae,$[3]=oe*W+A*O*se-fe*O*ce,$[4]=oe*ge+pe*O*se-B*O*ce,$[5]=-oe*_e-me*O*se+he*O*ce,$[6]=le*W+A*O*ue-fe*O,$[7]=le*ge+pe*O*ue-B*O,$[8]=-le*_e-me*O*ue+he*O}invert_affine_transform(e,t){let n=e.data,r=t.data,i=n[0],a=n[1],o=n[2],s=n[3],c=n[4],l=n[5],u=1/(i*c-a*s);r[0]=u*c,r[1]=u*-a,r[2]=u*(a*l-o*c),r[3]=u*-s,r[4]=u*i,r[5]=u*(o*s-i*l)}invert_perspective_transform(e,t){let n=e.data,r=t.data,i=n[0],a=n[1],o=n[2],s=n[3],c=n[4],l=n[5],u=n[6],d=n[7],f=n[8],p=1/(i*(c*f-l*d)-a*(s*f-l*u)+o*(s*d-c*u));r[0]=p*(c*f-l*d),r[1]=p*(o*d-a*f),r[2]=p*(a*l-o*c),r[3]=p*(l*u-s*f),r[4]=p*(i*f-o*u),r[5]=p*(o*s-i*l),r[6]=p*(s*d-c*u),r[7]=p*(a*u-i*d),r[8]=p*(i*c-a*s)}},h=class{constructor(e=0,t=0,n=0,r=0,i=-1){this.x=e,this.y=t,this.score=n,this.level=r,this.angle=i}},g=[8,-3,9,5,4,2,7,-12,-11,9,-8,2,7,-12,12,-13,2,-13,2,12,1,-7,1,6,-2,-10,-2,-4,-13,-13,-11,-8,-13,-3,-12,-9,10,4,11,9,-13,-8,-8,-9,-11,7,-9,12,7,7,12,6,-4,-5,-3,0,-13,2,-12,-3,-9,0,-7,5,12,-6,12,-1,-3,6,-2,12,-6,-13,-4,-8,11,-13,12,-8,4,7,5,1,5,-3,10,-3,3,-7,6,12,-8,-7,-6,-2,-2,11,-1,-10,-13,12,-8,10,-7,3,-5,-3,-4,2,-3,7,-10,-12,-6,11,5,-12,6,-7,5,-6,7,-1,1,0,4,-5,9,11,11,-13,4,7,4,12,2,-1,4,4,-4,-12,-2,7,-8,-5,-7,-10,4,11,9,12,0,-8,1,-13,-13,-2,-8,2,-3,-2,-2,3,-6,9,-4,-9,8,12,10,7,0,9,1,3,7,-5,11,-10,-13,-6,-11,0,10,7,12,1,-6,-3,-6,12,10,-9,12,-4,-13,8,-8,-12,-13,0,-8,-4,3,3,7,8,5,7,10,-7,-1,7,1,-12,3,-10,5,6,2,-4,3,-10,-13,0,-13,5,-13,-7,-12,12,-13,3,-11,8,-7,12,-4,7,6,-10,12,8,-9,-1,-7,-6,-2,-5,0,12,-12,5,-7,5,3,-10,8,-13,-7,-7,-4,5,-3,-2,-1,-7,2,9,5,-11,-11,-13,-5,-13,-1,6,0,-1,5,-3,5,2,-4,-13,-4,12,-9,-6,-9,6,-12,-10,-8,-4,10,2,12,-3,7,12,12,12,-7,-13,-6,5,-4,9,-3,4,7,-1,12,2,-7,6,-5,1,-13,11,-12,5,-3,7,-2,-6,7,-8,12,-7,-13,-7,-11,-12,1,-3,12,12,2,-6,3,0,-4,3,-2,-13,-1,-13,1,9,7,1,8,-6,1,-1,3,12,9,1,12,6,-1,-9,-1,3,-13,-13,-10,5,7,7,10,12,12,-5,12,9,6,3,7,11,5,-13,6,10,2,-12,2,3,3,8,4,-6,2,6,12,-13,9,-12,10,3,-8,4,-7,9,-11,12,-4,-6,1,12,2,-8,6,-9,7,-4,2,3,3,-2,6,3,11,0,3,-3,8,-8,7,8,9,3,-11,-5,-6,-4,-10,11,-5,10,-5,-8,-3,12,-10,5,-9,0,8,-1,12,-6,4,-6,6,-11,-10,12,-8,7,4,-2,6,7,-2,0,-2,12,-5,-8,-5,2,7,-6,10,12,-9,-13,-8,-8,-5,-13,-5,-2,8,-8,9,-13,-9,-11,-9,0,1,-8,1,-2,7,-4,9,1,-2,1,-1,-4,11,-6,12,-11,-12,-9,-6,4,3,7,7,12,5,5,10,8,0,-4,2,8,-9,12,-5,-13,0,7,2,12,-1,2,1,7,5,11,7,-9,3,5,6,-8,-13,-4,-8,9,-5,9,-3,-3,-4,-7,-3,-12,6,5,8,0,-7,6,-6,12,-13,6,-5,-2,1,-10,3,10,4,1,8,-4,-2,-2,2,-13,2,-12,12,12,-2,-13,0,-6,4,1,9,3,-6,-10,-3,-5,-3,-13,-1,1,7,5,12,-11,4,-2,5,-7,-13,9,-9,-5,7,1,8,6,7,-8,7,6,-7,-4,-7,1,-8,11,-7,-8,-13,6,-12,-8,2,4,3,9,10,-5,12,3,-6,-5,-6,7,8,-3,9,-8,2,-12,2,8,-11,-2,-10,3,-12,-13,-7,-9,-11,0,-10,-5,5,-3,11,8,-2,-13,-1,12,-1,-8,0,9,-13,-11,-12,-5,-10,-2,-10,11,-3,9,-2,-13,2,-3,3,2,-9,-13,-4,0,-4,6,-3,-10,-4,12,-2,-7,-6,-11,-4,9,6,-3,6,11,-13,11,-5,5,11,11,12,6,7,-5,12,-2,-1,12,0,7,-4,-8,-3,-2,-7,1,-6,7,-13,-12,-8,-13,-7,-2,-6,-8,-8,5,-6,-9,-5,-1,-4,5,-13,7,-8,10,1,5,5,-13,1,0,10,-13,9,12,10,-1,5,-8,10,-9,-1,11,1,-13,-9,-3,-6,2,-1,-10,1,12,-13,1,-8,-10,8,-11,10,-6,2,-13,3,-6,7,-13,12,-9,-10,-10,-5,-7,-10,-8,-8,-13,4,-6,8,5,3,12,8,-13,-4,2,-3,-3,5,-13,10,-12,4,-13,5,-1,-9,9,-4,3,0,3,3,-9,-12,1,-6,1,3,2,4,-8,-10,-10,-10,9,8,-13,12,12,-8,-12,-6,-5,2,2,3,7,10,6,11,-8,6,8,8,-12,-7,10,-6,5,-3,-9,-3,9,-1,-13,-1,5,-3,-7,-3,4,-8,-2,-8,3,4,2,12,12,2,-5,3,11,6,-9,11,-13,3,-1,7,12,11,-1,12,4,-3,0,-3,6,4,-11,4,12,2,-4,2,1,-10,-6,-8,1,-13,7,-11,1,-13,12,-11,-13,6,0,11,-13,0,-1,1,4,-13,3,-9,-2,-9,8,-6,-3,-13,-6,-8,-2,5,-9,8,10,2,7,3,-9,-1,-6,-1,-1,9,5,11,-2,11,-3,12,-8,3,0,3,5,-1,4,0,10,3,-6,4,5,-13,0,-10,5,5,8,12,11,8,9,9,-6,7,-4,8,-12,-10,4,-10,9,7,3,12,4,9,-7,10,-2,7,0,12,-2,-1,-6,0,-11];function _(e,t,n,r,i,a,o,s){let c=Math.cos(n),l=Math.sin(n);o.data[0]=c,o.data[1]=-l,o.data[2]=(-c+l)*a*.5+r,o.data[3]=l,o.data[4]=c,o.data[5]=(-l-c)*a*.5+i,s.warp_affine(e,t,o,128)}function v(e,t,n){let r=0,i,a;for(i=n,a=0;a=0;i--,r++)a=Math.sqrt(n*n-i*i)+.5|0,t[r]=i+e*a;for(;-i=0;a--,r++)i=-Math.sqrt(n*n-a*a)-.5|0,t[r]=i+e*a;for(;a>i;a--,r++)i=-Math.sqrt(n*n-a*a)-.5|0,t[r]=i+e*a;for(i++;i<=0;i++,r++)a=-Math.sqrt(n*n-i*i)-.5|0,t[r]=i+e*a;for(;i<-a;i++,r++)a=-Math.sqrt(n*n-i*i)-.5|0,t[r]=i+e*a;for(a++;a<0;a++,r++)i=Math.sqrt(n*n-a*a)+.5|0,t[r]=i+e*a;return t[r]=t[0],t[r+1]=t[1],r}function y(e,t,n){let r=0;return e[t+1]!=0&&r++,e[t-1]!=0&&r++,e[t+n]!=0&&r++,e[t+n+1]!=0&&r++,e[t+n-1]!=0&&r++,e[t-n]!=0&&r++,e[t-n+1]!=0&&r++,e[t-n-1]!=0&&r++,r}function b(e,t,n,r,i){let a,o;if(n>0)for(t-=r*i,o=-i;o<=i;++o){for(a=-i;a<=i;++a)if(e[t+a]>n)return!1;t+=r}else for(t-=r*i,o=-i;o<=i;++o){for(a=-i;a<=i;++a)if(e[t+a]=r)if(f=e[t+a[u]],f<=i)if(f>=r){n[t]=0;return}else if(u++,p=e[t+a[u]],p>i)if(u++,m=e[t+a[u]],m>i)h=3;else if(mi)h=7;else if(mi)if(u++,m=e[t+a[u]],m>i)h=3;else if(mi)h=7;else if(mi){n[t]=0;return}if(u++,p=e[t+a[u]],p>i){n[t]=0;return}if(u++,m=e[t+a[u]],m>i){n[t]=0;return}h=1}else{if(f=e[t+a[u]],fi){if(p=m,u++,m=e[t+a[u]],mi){n[t]=0;return}if(m>i){n[t]=0;return}if(p=m,u++,m=e[t+a[u]],m>i){n[t]=0;return}c-=d+p,h=8;break}if(p<=i){n[t]=0;return}if(m<=i){n[t]=0;return}if(p=m,u++,m=e[t+a[u]],m>i){c-=d+p,h=3;break}if(mi){n[t]=0;return}c-=d+p,h=1;break}if(d>i){if(p=r){n[t]=0;return}if(m>=r){n[t]=0;return}if(p=m,u++,m=e[t+a[u]],mi){c-=d+p,h=7;break}n[t]=0;return;case 2:if(d>i){n[t]=0;return}if(p=m,u++,m=e[t+a[u]],di){n[t]=0;return}c-=d+p,h=4;break}if(m>i){c-=d+p,h=7;break}if(mi){if(mi){c-=d+p,h=3;break}if(mi){n[t]=0;return}if(di){n[t]=0;return}c-=d+p,h=1;break}if(m>=r){n[t]=0;return}if(p=m,u++,m=e[t+a[u]],mi){c-=d+p,h=7;break}n[t]=0;return;case 5:if(di){if(p=m,u++,m=e[t+a[u]],mi){c-=d+p,h=3;break}if(mi){n[t]=0;return}if(di){c-=d+p,h=3;break}if(mi){n[t]=0;return}if(di){c-=d+p,h=7;break}n[t]=0;return;case 8:if(d>i){if(mi){n[t]=0;return}c-=d+p,h=1;break}n[t]=0;return;case 9:if(di){n[t]=0;return}if(p=m,u++,m=e[t+a[u]],m>i){n[t]=0;return}c-=d+p,h=8;break}if(d>i){if(p=m,u++,m=e[t+a[u]],m>i,t>>i,n)}detect(e,t,n=4){let r=this.level_tables[0],i=r.radius|0,a=i-1|0,o=r.dirs,s=r.dirs_count|0,c=s>>1,l=e.data,u=e.cols|0,d=e.rows|0,f=u>>1,p=r.scores,m=0,h=0,g=0,_=0,v=0,S=0,C=0,w=0,T=this.tau|0,E=0,D,O=Math.max(i+1,n)|0,k=Math.max(i+1,n)|0,A=Math.min(u-i-2,u-n)|0,j=Math.min(d-i-2,d-n)|0;for(g=k*u+O|0,h=k;h=3&&b(p,_,w,f,i)&&(D=t[E],D.x=m,D.y=h,D.score=C,++E,m+=a,_+=a);return E}};function w(e,t,n,r,i,a,o,s,c){let l=0,u=0,d=o*n+a|0,f=d;for(l=o;l=0&&f+i=0?t[f]=-4*e[f]+e[f+r]+e[f-r]+e[f+i]+e[f-i]:t[f]=0}function T(e,t,n,r,i,a,o){let s=-2*e[t]+e[t+r]+e[t-r],c=-2*e[t]+e[t+i]+e[t-i],l=e[t+a]+e[t-a]-e[t+o]-e[t-o],u=Math.sqrt((s-c)*(s-c)+4*l*l)|0;return Math.min(Math.abs(n-u),Math.abs(-(n+u)))}var E=class{constructor(e=0,t=.5,n=.5,r=.99){this.size=e,this.thresh=t,this.eps=n,this.prob=r}update_iters(e,t){let n=Math.log(1-this.prob),r=Math.log(1-Math.pow(1-e,this.size));return(r>=0||-n>=t*-r?t:Math.round(n/r))|0}},D={name:`@webarkit/jsfeat-next`,version:`0.7.5`,description:`Typescript version of jsfeat for WebARKit`,main:`dist/jsfeatNext.js`,module:`dist/jsfeatNext.mjs`,types:`types/src/index.d.ts`,unpkg:`dist/jsfeatNext.js`,jsdelivr:`dist/jsfeatNext.js`,exports:{".":{types:`./types/src/index.d.ts`,import:`./dist/jsfeatNext.mjs`,require:`./dist/jsfeatNext.js`},"./package.json":`./package.json`},files:[`dist`,`types`,`src`],scripts:{"build-ts":`vite build`,"dev-ts":`vite build --watch`,"format-check":`prettier --check .`,format:`prettier --write .`,test:`vitest run`,"test:watch":`vitest`},repository:{type:`git`,url:`git+https://github.com/webarkit/jsfeatNext.git`},keywords:[`jsfeat`,`jsfeatNext`,`WebAR`,`WebARKit`,`AugmentedReality`,`computer`,`vision`],author:`Walter Perdan @kalwalt`,license:`LGPL-3.0-or-later`,bugs:{url:`https://github.com/webarkit/jsfeatNext/issues`},homepage:`https://github.com/webarkit/jsfeatNext#readme`,devDependencies:{prettier:`~3.5.3`,typescript:`^6.0.3`,vite:`^8.1.3`,"vite-plugin-dts":`^5.0.3`,vitest:`^4.1.10`}},O,k=class{constructor(){this.dt=new e,this.cache=new r,this.cache.allocate(30,640*4)}get_data_type(e){return this.dt._get_data_type(e)}get_channel(e){return this.dt._get_channel(e)}get_data_type_size(e){return this.dt._get_data_type_size(e)}};O=k,O.VERSION=D.version,O.EPSILON=f.EPSILON,O.FLT_MIN=f.FLT_MIN,O.U8_t=f.U8_t,O.S32_t=f.S32_t,O.F32_t=f.F32_t,O.S64_t=f.S64_t,O.F64_t=f.F64_t,O.C1_t=f.C1_t,O.C2_t=f.C2_t,O.C3_t=f.C3_t,O.C4_t=f.C4_t,O.COLOR_RGBA2GRAY=f.COLOR_RGBA2GRAY,O.COLOR_RGB2GRAY=f.COLOR_RGB2GRAY,O.COLOR_BGRA2GRAY=f.COLOR_BGRA2GRAY,O.COLOR_BGR2GRAY=f.COLOR_BGR2GRAY,O.BOX_BLUR_NOSCALE=f.BOX_BLUR_NOSCALE,O.SVD_U_T=f.SVD_U_T,O.SVD_V_T=f.SVD_V_T,O.U8C1_t=O.U8_t|O.C1_t,O.U8C3_t=O.U8_t|O.C3_t,O.U8C4_t=O.U8_t|O.C4_t,O.F32C1_t=O.F32_t|O.C1_t,O.F32C2_t=O.F32_t|O.C2_t,O.S32C1_t=O.S32_t|O.C1_t,O.S32C2_t=O.S32_t|O.C2_t;var A=class extends k{constructor(){super(),this.T0=new p(3,3,f.F32_t|f.C1_t),this.T1=new p(3,3,f.F32_t|f.C1_t),this.AtA=new p(6,6,f.F32_t|f.C1_t),this.AtB=new p(6,1,f.F32_t|f.C1_t)}sqr(e){return e*e}iso_normalize_points(e,t,n,r,i){let a=0,o=0,s=0,c=0,l=0,u=0,d=0,f=0,p=0,m=0,h=0;for(;a=0;)l[i]=0;for(i=0;i=0;)this.data[r]=new p(e>>r,t>>r,n)}build(e,t){t===void 0&&(t=!0);let n=2,r=e,i=this.data[0];if(!t){let t=e.cols*e.rows;for(;--t>=0;)i.data[t]=e.data[t]}for(i=this.data[1],this.pyrdown(r,i);nthis._threshold?2:0;return this._threshold}detect(e,t,n){n===void 0&&(n=3);let r=e.data,i=e.cols,a=e.rows,o=0,s=0,c=0,l=0,d=0,f=0,p=this.cache.get_buffer(3*i),m=this.cache.get_buffer((i+1)*3<<2),h=p.u8,g=m.i32,_=this.pixel_off,v=this.score_diff,y=Math.max(3,n),b=Math.min(a-2,a-n),x=Math.max(3,n),S=Math.min(i-3,i-n),C=0,w=0,T,E=u,D=this.threshold_tab,O=this._threshold,k=0,A=0,j=0,M=0,N=0,P=0,F=0,I=0,L=0,R=0,z=0,B=0;this._cmp_offsets(_,i,16);let V=_[0],ee=_[1],H=_[2],U=_[3],W=_[4],G=_[5],K=_[6],te=_[7],q=_[8],ne=_[9],J=_[10],Y=_[11],X=_[12],Z=_[13],Q=_[14],re=_[15];for(o=0;o8){++M,g[N+M]=s,h[P+s]=E(r,F,_,v,O);break}}else C=0;if(j&2)for(l=k+O,C=0,c=0;c<25;++c)if(d=r[F+_[c]],d>l){if(++C,C>8){++M,g[N+M]=s,h[P+s]=E(r,F,_,v,O);break}}else C=0}}if(g[N+i]=M,o!=y)for(f=(o-4+3)%3,I=f*i|0,N=f*(i+1)|0,f=(o-5+3)%3,L=f*i|0,M=g[N+i],c=0;ch[I+R]&&B>h[I+z]&&B>h[L+z]&&B>h[L+s]&&B>h[L+R]&&B>h[P+z]&&B>h[P+s]&&B>h[P+R]&&(T=t[w],T.x=s,T.y=o-1,T.score=B,w++)}return this.cache.put_buffer(p),this.cache.put_buffer(m),w}_cmp_offsets(e,t,n){let r=0,i=this.offsets16;for(;r>14,v[u+1]=e[l+h]*d+e[l+h+1]*p+e[l+h+2]*m+8192>>14,v[u+2]=e[l+g]*d+e[l+g+1]*p+e[l+g+2]*m+8192>>14,v[u+3]=e[l+_]*d+e[l+_+1]*p+e[l+_+2]*m+8192>>14;for(;a>14}}resample(e,t,n,r){let o=e.rows,s=e.cols;o>r&&s>n&&(t.resize(n,r,e.channel),e.type&f.U8_t&&t.type&f.U8_t&&o*s/(r*n)<256?i(e,t,this.cache,n,r):a(e,t,this.cache,n,r))}box_blur_gray(e,t,n,r){r===void 0&&(r=0);let i=e.cols,a=e.rows,o=a<<1,s=i<<1,c=0,l=0,u=0,d=0,p=(n<<1)+1|0,m=n+1|0,h=m+1|0,g=r&f.BOX_BLUR_NOSCALE?1:1/(p*p),_=this.cache.get_buffer(i*a<<2),v=0,y=0,b=0,x=0,S=0,C=_.i32,w=e.data,T=0;for(t.resize(i,a,e.channel),u=0;u>1,c=e.cols,l=e.rows,u=e.type,d=u&f.U8_t;t.resize(c,l,e.channel);let p=e.data,m=t.data,h,g,_=n+Math.max(l,c)|0,v=this.cache.get_buffer(_<<2),y=this.cache.get_buffer(n<<2);d?(h=v.i32,g=y.i32):u&f.S32_t?(h=v.i32,g=y.f32):(h=v.f32,g=y.f32),i.get_gaussian_kernel(n,r,g,u),d?o(h,p,m,c,l,g,n,a):s(h,p,m,c,l,g,n,a),this.cache.put_buffer(v),this.cache.put_buffer(y)}hough_transform(e,t,n,r){let i,a,o=e.data,s=e.cols,c=e.rows,l=s,u=Math.round((Math.PI-0)/n),d=Math.round(((s+c)*2+1)/t),f=1/t,p=new Int32Array((u+2)*(d+2)),m=new Float32Array(u),h=new Float32Array(u),g=0,_=0;for(;gr&&p[e]>p[e-1]&&p[e]>=p[e+1]&&p[e]>p[e-d-2]&&p[e]>=p[e+d+2]&&v.push(e)}v.sort(function(e,t){return p[e]>p[t]||p[e]==p[t]&&e>1,s=a>>1,c=o-(n<<1),l=s-(r<<1),u=0,d=0,f=n+r*i,p=0,m=0,h=0;t.resize(o,s,e.channel);let g=e.data,_=t.data;for(d=0;d>2,_[h+1]=g[p+2]+g[p+3]+g[p+i+2]+g[p+i+3]+2>>2;for(;u>2;f+=i<<1,m+=o}}scharr_derivatives(e,t){let n=e.cols,r=e.rows,i=n<<1,a=0,o=0,s=0,c,l,u,d,p,m,h=0,g=0,_=0,v=0,y,b;t.resize(n,r,2);let x=e.data,S=t.data,C=this.cache.get_buffer(n+2<<2),w=this.cache.get_buffer(n+2<<2);for(e.type&f.U8_t||e.type&f.S32_t?(y=C.i32,b=w.i32):(y=C.f32,b=w.f32);o0?o-1:1)*n|0,_=(o0?o-1:1)*n|0,_=(o0;--p)for(u=p+a*s,d=u-s,f=a;f>0;--f,u-=s,d-=s)r[u]+=r[d]+r[d+1]}}equalize_histogram(e,t){let n=e.cols,r=e.rows,i=e.data;t.resize(n,r,e.channel);let a=t.data,o=n*r,s=0,c=0,l,u,d=this.cache.get_buffer(1024);for(l=d.i32;s<256;++s)l[s]=0;for(s=0;sr&&(s=n,n=r,r=s),s=3*(i+2)|0;--s>=0;)T[s]=0;for(s=(a+2)*(i+2)|0;--s>=0;)E[s]=0;for(;c>31)-(g>>31)+((_^_>>31)-(_>>31));for(s=1;s<=a;++s,l+=u){if(s==a)for(c=M+i;--c>=M;)T[c]=0;else for(c=0;c>31)-(g>>31)+((_^_>>31)-(_>>31));for(d=l-u|0,E[P-1]=0,m=0,c=0;cn){if(g=O[d],_=O[d+1],v=g^_,g=(g^g>>31)-(g>>31)|0,_=(_^_>>31)-(_>>31)|0,y=g*13573,b=y+(g+g<<15),_<<=15,_T[j+c-1]&&h>=T[j+c+1]){h>r&&!m&&E[P+c-N]!=2?(E[P+c]=2,m=1,D[F++]=P+c):E[P+c]=1;continue}}else if(_>b){if(h>T[A+c]&&h>=T[M+c]){h>r&&!m&&E[P+c-N]!=2?(E[P+c]=2,m=1,D[F++]=P+c):E[P+c]=1;continue}}else if(v=v<0?-1:1,h>T[A+c-v]&&h>T[M+c+v]){h>r&&!m&&E[P+c-N]!=2?(E[P+c]=2,m=1,D[F++]=P+c):E[P+c]=1;continue}}E[P+c]=0,m=0}E[P+i]=0,P+=N,c=A,A=j,j=M,M=c}for(c=P-N-1,s=0;s0;)P=D[--F],P-=N+1,E[P]==1&&(E[P]=2,D[F++]=P),P+=1,E[P]==1&&(E[P]=2,D[F++]=P),P+=1,E[P]==1&&(E[P]=2,D[F++]=P),P+=N,E[P]==1&&(E[P]=2,D[F++]=P),P-=2,E[P]==1&&(E[P]=2,D[F++]=P),P+=N,E[P]==1&&(E[P]=2,D[F++]=P),P+=1,E[P]==1&&(E[P]=2,D[F++]=P),P+=1,E[P]==1&&(E[P]=2,D[F++]=P);for(P=N+1,A=0,s=0;s0&&g>0&&p=0&&m>=0&&p95&&r>40&&i>20&&n>r&&n>i&&n-Math.min(r,i)>15&&Math.abs(n-r)>15?t[o]=255:t[o]=0}},k.math=class extends k{constructor(){super(),this.qsort_stack=new Int32Array(96)}get_gaussian_kernel(e,t,n,r){let i=0,a=0,o=0,s=0,c=0,l=0,u=this.cache.get_buffer(e<<2),d=u.f32;if((e&1)==1&&e<=7&&t<=0)switch(e>>1){case 0:d[0]=1,l=1;break;case 1:d[0]=.25,d[1]=.5,d[2]=.25,l=1;break;case 2:d[0]=.0625,d[1]=.25,d[2]=.375,d[3]=.25,d[4]=.0625,l=1;break;case 3:d[0]=.03125,d[1]=.109375,d[2]=.21875,d[3]=.28125,d[4]=.21875,d[5]=.109375,d[6]=.03125,l=1;break}else for(s=t>0?t:((e-1)*.5-1)*.3+.8,c=-.5/(s*s);i=0;)for(l=E[c<<1],u=E[(c<<1)+1],c--;;)if(f=u-l+1,f<=7){for(m=l+1;m<=u;m++)for(h=m;h>l&&r(e[h],e[h-1]);h--)i=e[h],e[h]=e[h-1],e[h-1]=i;break}else{for(T=0,_=l,y=u,x=l+(f>>1),f>40&&(g=f>>3,S=l,C=l+g,w=l+(g<<1),a=e[S],o=e[C],s=e[w],l=r(a,o)?r(o,s)?C:r(a,s)?w:S:r(s,o)?C:r(a,s)?S:w,S=x-g,C=x,w=x+g,a=e[S],o=e[C],s=e[w],x=r(a,o)?r(o,s)?C:r(a,s)?w:S:r(s,o)?C:r(a,s)?S:w,S=u-(g<<1),C=u-g,w=u,a=e[S],o=e[C],s=e[w],u=r(a,o)?r(o,s)?C:r(a,s)?w:S:r(s,o)?C:r(a,s)?S:w),S=l,C=x,w=u,a=e[S],o=e[C],s=e[w],x=r(a,o)?r(o,s)?C:r(a,s)?w:S:r(s,o)?C:r(a,s)?S:w,x!=_&&(i=e[x],e[x]=e[_],e[_]=i,x=_),l=v=_+1,u=b=y,a=e[x];;){for(;l<=u&&!r(a,e[l]);)r(e[l],a)||(l>v&&(i=e[v],e[v]=e[l],e[l]=i),T=1,v++),l++;for(;l<=u&&!r(e[u],a);)r(a,e[u])||(uu)break;i=e[l],e[l]=e[u],e[u]=i,T=1,l++,u--}if(T==0){for(l=_,u=y,m=l+1;m<=u;m++)for(h=m;h>l&&r(e[h],e[h-1]);h--)i=e[h],e[h]=e[h-1],e[h-1]=i;break}for(f=Math.min(v-_,l-v),p=l-f|0,d=0;d1)p>1?f>p?(++c,E[c<<1]=_,E[(c<<1)+1]=_+f-1,l=y-p+1,u=y):(++c,E[c<<1]=y-p+1,E[(c<<1)+1]=y,l=_,u=_+f-1):(l=_,u=_+f-1);else if(p>1)l=y-p+1,u=y;else break}}median(e,t,n){let r,i=0,a=0,o=0,s=t+n>>1;for(;;){if(n<=t)return e[s];if(n==t+1)return e[t]>e[n]&&(r=e[t],e[t]=e[n],e[n]=r),e[s];for(i=t+n>>1,e[i]>e[n]&&(r=e[i],e[i]=e[n],e[n]=r),e[t]>e[n]&&(r=e[t],e[t]=e[n],e[n]=r),e[i]>e[t]&&(r=e[i],e[i]=e[t],e[t]=r),a=t+1,r=e[i],e[i]=e[a],e[a]=r,o=n;;){do++a;while(e[t]>e[a]);do--o;while(e[o]>e[t]);if(o=s&&(n=o-1)}return 0}},k.matmath=d,k.linalg=class extends k{constructor(){super(),this.matmath=new d}JacobiImpl(e,t,n,r,i,a){let o=f.EPSILON,s=0,u=0,d=0,p=0,m=0,h=0,g=0,_=0,v=0,y=a*a*30,b=0,x=0,S=0,C=0,w=0,T=0,E=0,D=0,O=0,k=this.cache.get_buffer(a<<2),A=this.cache.get_buffer(a<<2),j=k.i32,M=A.i32;if(r)for(;s0){for(p=0,b=Math.abs(e[d]),s=1;s1)for(;v0){for(p=0,b=Math.abs(e[h]),s=1;s>16&256?L:-L,e[p*t+h]=I;for(g=0;g<2;g++)for(m=0;mMath.abs(s[i*o+n])&&(i=r);if(Math.abs(s[i*o+n])=0;n--){for(p=l[n],i=n+1;i=0;s--){for(f=d[s],c=s+1,a=c*l;c=0;)n.data[o]=_.data[o];else n&&this.matmath.transpose(n,_);if(r&&i&f.SVD_V_T)for(o=u*u;--o>=0;)r.data[o]=y.data[o];else r&&this.matmath.transpose(r,y)}else{if(n&&i&f.SVD_U_T)for(o=u*u;--o>=0;)n.data[o]=y.data[o];else n&&this.matmath.transpose(n,y);if(r&&i&f.SVD_V_T)for(o=l*l;--o>=0;)r.data[o]=_.data[o];else r&&this.matmath.transpose(r,_)}this.cache.put_buffer(m),this.cache.put_buffer(h),this.cache.put_buffer(g)}svd_solve(e,t,n){let r=0,i=0,a=0,o=0,s=0,c=e.rows,l=e.cols,u=0,d=0,m=0,h=e.type|f.C1_t,g=this.cache.get_buffer(c*c<<3),_=this.cache.get_buffer(l<<3),v=this.cache.get_buffer(l*l<<3),y=new p(c,c,h,g.data),b=new p(1,l,h,_.data),x=new p(l,l,h,v.data),S=n.data,C=y.data,w=b.data,T=x.data;for(this.svd_decompose(e,b,y,x,0),m=f.EPSILON*w[0]*l;rm){for(a=0,u=0,o=0;ad&&(u+=w[o+i]*S[a]/C[i]);x[s]=u}this.cache.put_buffer(h),this.cache.put_buffer(g),this.cache.put_buffer(_)}eigenVV(e,t,n){let r=e.cols,i=r*r,a=e.type|f.C1_t,o=this.cache.get_buffer(r*r<<3),s=this.cache.get_buffer(r<<3),c=new p(r,r,a,o.data),l=new p(1,r,a,s.data);for(;--i>=0;)c.data[i]=e.data[i];if(this.JacobiImpl(c.data,r,l.data,t?t.data:null,r,r),n)for(;--r>=0;)n.data[r]=l.data[r];this.cache.put_buffer(o),this.cache.put_buffer(s)}},k.orb=class extends k{constructor(){super(),this.bit_pattern_31_=new Int32Array(g),this.H=new p(3,3,f.F32_t|f.C1_t),this.patch_img=new p(32,32,f.U8_t|f.C1_t),this.imgproc=new k.imgproc}describe(e,t,n,r){let i=0,a=0,o=0,s=0,c=0,l=0,u=0,d=0,p=this.patch_img.data,m=0;r.type&f.U8_t?r.resize(32,n,1):(r.type=f.U8_t,r.cols=32,r.rows=n,r.channel=1,r.allocate());let h=r.data,g=0;for(i=0;i=0;)f[r]=0;for(w(s,f,a,5,c,x,S,C,E),m=S*a+x|0,i=S;iy&&p>f[h-1]&&p>f[h+1]&&p>f[h-a]&&p>f[h+a]&&p>f[h-a-1]&&p>f[h+a-1]&&p>f[h-a+1]&&p>f[h+a+1])&&(g=T(s,h,p,5,c,l,u),g>b&&(_=t[v],_.x=r,_.y=i,_.score=g,++v,++r,++h));return this.cache.put_buffer(d),v}},k.motion_estimator=class extends k{constructor(){super()}get_subset(e,t,n,r,i,a,o){let s=1e3,c=[],l=0,u=0,d=0,f=0,p=!1;for(;d=0;)o.data[i]=1;return this.cache.put_buffer(b),this.cache.put_buffer(x),this.cache.put_buffer(S),!0}for(;uMath.max(T,c-1)&&(C.copy_to(a),T=E,o&&w.copy_to(o),l=e.update_iters((i-E)/i,l),d=!0))}return this.cache.put_buffer(b),this.cache.put_buffer(x),this.cache.put_buffer(S),d}lmeds(e,t,n,r,i,a,o,s){if(s===void 0&&(s=1e3),i=0;)o.data[i]=1;return this.cache.put_buffer(x),this.cache.put_buffer(S),this.cache.put_buffer(C),!0}for(;u=c),this.cache.put_buffer(x),this.cache.put_buffer(S),this.cache.put_buffer(C),d}},k.ransac_params_t=E,k.affine2d=j,k.homography2d=M,k.optical_flow_lk=class extends k{constructor(){super();let e=new k.imgproc;this.scharr_deriv=e.scharr_derivatives}track(e,t,n,r,i,a,o,s,c,l){o===void 0&&(o=30),s===void 0&&(s=new Uint8Array(i)),c===void 0&&(c=.01),l===void 0&&(l=1e-4);let u=(a-1)*.5,d=a*a|0,m=d<<1,h=e.data,g=t.data,_=h[0].data,v=g[0].data,y=h[0].cols,b=h[0].rows,x=0,S=0,C=this.cache.get_buffer(d<<2),w=this.cache.get_buffer(m<<2),T=this.cache.get_buffer(b*(y<<1)<<2),E=new p(y,b,f.S32C2_t,T.data),D=C.i32,O=w.i32,k=T.i32,A=0,j=0,M=0,N=0,P=0,F=0,I=0,L=0,R=0,z=0,B=0,V=0,ee=0,H=0,U=0,W=0,G=0,K=0,te=0,q=0,ne=0,J=0,Y=0,X=0,Z=0,Q=0,re=0,ie=0,ae=0,oe=0,se=0,ce=0,le=16384,ue=8192,de=1/(1<<20),fe=0,pe=0,me=0,he=0,ge=0,_e=0,$=0,ve=0,ye=0,be=0,xe=0,Se=0;for(c*=c;q=0;--X)for(I=1/(1<>X,S=b>>X,A=x<<1,_=h[X].data,v=g[X].data,re=x-a|0,ie=S-a|0,this.scharr_deriv(h[X],E),Z=0;Z=re||G<=0||G>=ie,J!=0){X==0&&(s[Z]=0);continue}for(ae=L-W,oe=R-G,fe=(1-ae)*(1-oe)*le+.5|0,pe=ae*(1-oe)*le+.5|0,me=(1-ae)*oe*le+.5|0,he=le-fe-pe-me,ve=0,ye=0,be=0,Y=0;Y>9,_e=k[M]*fe+k[M+2]*pe+k[M+A]*me+k[M+A+2]*he,_e=_e+ue>>14,$=k[M+1]*fe+k[M+3]*pe+k[M+A+1]*me+k[M+A+3]*he,$=$+ue>>14,D[N]=ge,O[P++]=_e,O[P++]=$,ve+=_e*_e,ye+=_e*$,be+=$*$;if(ve*=de,ye*=de,be*=de,xe=ve*be-ye*ye,Se=(be+ve-Math.sqrt((ve-be)*(ve-be)+4*ye*ye))/m,Se=re||te<=0||te>=ie,J!=0){X==0&&(s[Z]=0);break}for(ae=z-K,oe=B-te,fe=(1-ae)*(1-oe)*le+.5|0,pe=ae*(1-oe)*le+.5|0,me=(1-ae)*oe*le+.5|0,he=le-fe-pe-me,se=0,ce=0,Y=0;Y>9,ge-=D[N],se+=ge*O[P++],ce+=ge*O[P++];if(se*=de,ce*=de,H=(ye*ce-be*se)*xe,U=(ye*se-ve*ce)*xe,z+=H,B+=U,r[q]=z+u,r[ne]=B+u,H*H+U*U<=c)break;if(Q>0&&Math.abs(H+V)<.01&&Math.abs(U+ee)<.01){r[q]-=H*.5,r[ne]-=U*.5;break}V=H,ee=U}}this.cache.put_buffer(C),this.cache.put_buffer(w),this.cache.put_buffer(T)}},{jsfeatNext:k}}); \ No newline at end of file diff --git a/dist/jsfeatNext.mjs b/dist/jsfeatNext.mjs new file mode 100644 index 0000000..5c38640 --- /dev/null +++ b/dist/jsfeatNext.mjs @@ -0,0 +1,2591 @@ +//#region src/data_type/data_type.ts +var e = class { + constructor() { + this._data_type_size = new Int32Array([ + -1, + 1, + 4, + -1, + 4, + -1, + -1, + -1, + 8, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + 8 + ]); + } + _get_data_type(e) { + return e & 65280; + } + _get_channel(e) { + return e & 255; + } + _get_data_type_size(e) { + return this._data_type_size[(e & 65280) >> 8]; + } +}, t = class { + constructor(e, t) { + this.size = (e + 7 | 0) & -8, t === void 0 ? this.buffer = new ArrayBuffer(this.size) : (this.buffer = t, this.size = t.length), this.u8 = new Uint8Array(this.buffer), this.i32 = new Int32Array(this.buffer), this.f32 = new Float32Array(this.buffer), this.f64 = new Float64Array(this.buffer); + } +}, n = class { + constructor(e) { + this.next = null, this.data = new t(e), this.size = this.data.size, this.buffer = this.data.buffer, this.u8 = this.data.u8, this.i32 = this.data.i32, this.f32 = this.data.f32, this.f64 = this.data.f64; + } + resize(e) { + delete this.data, this.data = new t(e), this.size = this.data.size, this.buffer = this.data.buffer, this.u8 = this.data.u8, this.i32 = this.data.i32, this.f32 = this.data.f32, this.f64 = this.data.f64; + } +}, r = class { + constructor() { + this._pool_head, this._pool_tail, this._pool_size = 0; + } + allocate(e, t) { + this._pool_head = this._pool_tail = new n(t); + for (let r = 0; r < e; ++r) { + let e = new n(t); + this._pool_tail = this._pool_tail.next = e, this._pool_size++; + } + } + get_buffer(e) { + let t = this._pool_head; + return this._pool_head = this._pool_head.next, this._pool_size--, e > t.size && t.resize(e), t; + } + put_buffer(e) { + this._pool_tail = this._pool_tail.next = e, this._pool_size++; + } +}; +//#endregion +//#region src/imgproc/resample.ts +function i(e, t, n, r, i) { + let a = 0, o = e.channel, s = e.cols, c = e.rows, l = e.data, u = t.data, d = s / r, f = c / i, p = d * f * 65536 | 0, m = 0, h = 0, g = 0, _ = 0, v = 0, y = 0, b = 0, x = 0, S = 0, C = 0, w = 0, T = 0, E = 0, D = 0, O = 0, k = 0, A = n.get_buffer(r * o << 2), j = n.get_buffer(r * o << 2), M = n.get_buffer(s * 2 * 3 << 2), N = A.i32, P = j.i32, F = M.i32; + for (; m < r; m++) { + for (S = m * d, C = S + d, v = S + 1 - 1e-6 | 0, y = C | 0, v = Math.min(v, s - 1), y = Math.min(y, s - 1), v > S && (F[x++] = m * o | 0, F[x++] = (v - 1) * o | 0, F[x++] = (v - S) * 256 | 0, a++), g = v; g < y; g++) a++, F[x++] = m * o | 0, F[x++] = g * o | 0, F[x++] = 256; + C - y > .001 && (a++, F[x++] = m * o | 0, F[x++] = y * o | 0, F[x++] = (C - y) * 256 | 0); + } + for (m = 0; m < r * o; m++) N[m] = P[m] = 0; + for (h = 0, _ = 0; _ < c; _++) { + for (w = s * _, x = 0; x < a; x++) for (E = F[x * 3], v = F[x * 3 + 1], D = F[x * 3 + 2], b = 0; b < o; b++) N[E + b] += l[w + v + b] * D; + if ((h + 1) * f <= _ + 1 || _ == c - 1) { + if (O = Math.max(_ + 1 - (h + 1) * f, 0) * 256 | 0, k = 256 - O, T = r * h, O <= 0) for (m = 0; m < r * o; m++) u[T + m] = Math.min(Math.max((P[m] + N[m] * 256) / p, 0), 255), P[m] = N[m] = 0; + else for (m = 0; m < r * o; m++) u[T + m] = Math.min(Math.max((P[m] + N[m] * k) / p, 0), 255), P[m] = N[m] * O, N[m] = 0; + h++; + } else for (m = 0; m < r * o; m++) P[m] += N[m] * 256, N[m] = 0; + } + n.put_buffer(j), n.put_buffer(A), n.put_buffer(M); +} +function a(e, t, n, r, i) { + let a = 0, o = e.channel, s = e.cols, c = e.rows, l = e.data, u = t.data, d = s / r, f = c / i, p = 1 / (d * f), m = 0, h = 0, g = 0, _ = 0, v = 0, y = 0, b = 0, x = 0, S = 0, C = 0, w = 0, T = 0, E = 0, D = 0, O = 0, k = 0, A = n.get_buffer(r * o << 2), j = n.get_buffer(r * o << 2), M = n.get_buffer(s * 2 * 3 << 2), N = A.f32, P = j.f32, F = M.f32; + for (; m < r; m++) { + for (S = m * d, C = S + d, v = S + 1 - 1e-6 | 0, y = C | 0, v = Math.min(v, s - 1), y = Math.min(y, s - 1), v > S && (a++, F[x++] = (v - 1) * o | 0, F[x++] = m * o | 0, F[x++] = (v - S) * p), g = v; g < y; g++) a++, F[x++] = g * o | 0, F[x++] = m * o | 0, F[x++] = p; + C - y > .001 && (a++, F[x++] = y * o | 0, F[x++] = m * o | 0, F[x++] = (C - y) * p); + } + for (m = 0; m < r * o; m++) N[m] = P[m] = 0; + for (h = 0, _ = 0; _ < c; _++) { + for (w = s * _, x = 0; x < a; x++) for (v = F[x * 3] | 0, E = F[x * 3 + 1] | 0, D = F[x * 3 + 2], b = 0; b < o; b++) N[E + b] += l[w + v + b] * D; + if ((h + 1) * f <= _ + 1 || _ == c - 1) { + if (O = Math.max(_ + 1 - (h + 1) * f, 0), k = 1 - O, T = r * h, Math.abs(O) < .001) for (m = 0; m < r * o; m++) u[T + m] = P[m] + N[m], P[m] = N[m] = 0; + else for (m = 0; m < r * o; m++) u[T + m] = P[m] + N[m] * k, P[m] = N[m] * O, N[m] = 0; + h++; + } else for (m = 0; m < r * o; m++) P[m] += N[m], N[m] = 0; + } + n.put_buffer(j), n.put_buffer(A), n.put_buffer(M); +} +//#endregion +//#region src/imgproc/convol.ts +function o(e, t, n, r, i, a, o, s) { + let c = 0, l = 0, u = 0, d = 0, f = 0, p = 0, m = 0, h = 0, g = 0, _ = a[0], v = 0, y = r << 1, b = r * 3, x = r << 2; + for (; c < i; ++c) { + for (p = t[d], l = 0; l < s; ++l) e[l] = p; + for (l = 0; l <= r - 2; l += 2) e[l + s] = t[d + l], e[l + s + 1] = t[d + l + 1]; + for (; l < r; ++l) e[l + s] = t[d + l]; + for (p = t[d + r - 1], l = r; l < s + r; ++l) e[l + s] = p; + for (l = 0; l <= r - 4; l += 4) { + for (p = e[l] * _, m = e[l + 1] * _, h = e[l + 2] * _, g = e[l + 3] * _, u = 1; u < o; ++u) v = a[u], p += e[u + l] * v, m += e[u + l + 1] * v, h += e[u + l + 2] * v, g += e[u + l + 3] * v; + n[f + l] = Math.min(p >> 8, 255), n[f + l + 1] = Math.min(m >> 8, 255), n[f + l + 2] = Math.min(h >> 8, 255), n[f + l + 3] = Math.min(g >> 8, 255); + } + for (; l < r; ++l) { + for (p = e[l] * _, u = 1; u < o; ++u) p += e[u + l] * a[u]; + n[f + l] = Math.min(p >> 8, 255); + } + d += r, f += r; + } + for (c = 0; c < r; ++c) { + for (p = n[c], l = 0; l < s; ++l) e[l] = p; + for (u = c, l = 0; l <= i - 2; l += 2, u += y) e[l + s] = n[u], e[l + s + 1] = n[u + r]; + for (; l < i; ++l, u += r) e[l + s] = n[u]; + for (p = n[(i - 1) * r + c], l = i; l < s + i; ++l) e[l + s] = p; + for (f = c, l = 0; l <= i - 4; l += 4, f += x) { + for (p = e[l] * _, m = e[l + 1] * _, h = e[l + 2] * _, g = e[l + 3] * _, u = 1; u < o; ++u) v = a[u], p += e[u + l] * v, m += e[u + l + 1] * v, h += e[u + l + 2] * v, g += e[u + l + 3] * v; + n[f] = Math.min(p >> 8, 255), n[f + r] = Math.min(m >> 8, 255), n[f + y] = Math.min(h >> 8, 255), n[f + b] = Math.min(g >> 8, 255); + } + for (; l < i; ++l, f += r) { + for (p = e[l] * _, u = 1; u < o; ++u) p += e[u + l] * a[u]; + n[f] = Math.min(p >> 8, 255); + } + } +} +function s(e, t, n, r, i, a, o, s) { + let c = 0, l = 0, u = 0, d = 0, f = 0, p = 0, m = 0, h = 0, g = 0, _ = a[0], v = 0, y = r << 1, b = r * 3, x = r << 2; + for (; c < i; ++c) { + for (p = t[d], l = 0; l < s; ++l) e[l] = p; + for (l = 0; l <= r - 2; l += 2) e[l + s] = t[d + l], e[l + s + 1] = t[d + l + 1]; + for (; l < r; ++l) e[l + s] = t[d + l]; + for (p = t[d + r - 1], l = r; l < s + r; ++l) e[l + s] = p; + for (l = 0; l <= r - 4; l += 4) { + for (p = e[l] * _, m = e[l + 1] * _, h = e[l + 2] * _, g = e[l + 3] * _, u = 1; u < o; ++u) v = a[u], p += e[u + l] * v, m += e[u + l + 1] * v, h += e[u + l + 2] * v, g += e[u + l + 3] * v; + n[f + l] = p, n[f + l + 1] = m, n[f + l + 2] = h, n[f + l + 3] = g; + } + for (; l < r; ++l) { + for (p = e[l] * _, u = 1; u < o; ++u) p += e[u + l] * a[u]; + n[f + l] = p; + } + d += r, f += r; + } + for (c = 0; c < r; ++c) { + for (p = n[c], l = 0; l < s; ++l) e[l] = p; + for (u = c, l = 0; l <= i - 2; l += 2, u += y) e[l + s] = n[u], e[l + s + 1] = n[u + r]; + for (; l < i; ++l, u += r) e[l + s] = n[u]; + for (p = n[(i - 1) * r + c], l = i; l < s + i; ++l) e[l + s] = p; + for (f = c, l = 0; l <= i - 4; l += 4, f += x) { + for (p = e[l] * _, m = e[l + 1] * _, h = e[l + 2] * _, g = e[l + 3] * _, u = 1; u < o; ++u) v = a[u], p += e[u + l] * v, m += e[u + l + 1] * v, h += e[u + l + 2] * v, g += e[u + l + 3] * v; + n[f] = p, n[f + r] = m, n[f + y] = h, n[f + b] = g; + } + for (; l < i; ++l, f += r) { + for (p = e[l] * _, u = 1; u < o; ++u) p += e[u + l] * a[u]; + n[f] = p; + } + } +} +//#endregion +//#region src/linalg/linalg_base.ts +function c(e, t, n, r) { + r = e[t], e[t] = e[n], e[n] = r; +} +function l(e, t) { + return e = Math.abs(e), t = Math.abs(t), e > t ? (t /= e, e * Math.sqrt(1 + t * t)) : t > 0 ? (e /= t, t * Math.sqrt(1 + e * e)) : 0; +} +//#endregion +//#region src/fast_corners/fast_private.ts +function u(e, t, n, r, i) { + let a = 0, o = e[t], s = i, c = 0, l = 0, u = 0; + for (; a < 25; ++a) r[a] = o - e[t + n[a]]; + for (a = 0; a < 16; a += 2) c = Math.min(r[a + 1], r[a + 2]), c = Math.min(c, r[a + 3]), !(c <= s) && (c = Math.min(c, r[a + 4]), c = Math.min(c, r[a + 5]), c = Math.min(c, r[a + 6]), c = Math.min(c, r[a + 7]), c = Math.min(c, r[a + 8]), s = Math.max(s, Math.min(c, r[a])), s = Math.max(s, Math.min(c, r[a + 9]))); + for (l = -s, a = 0; a < 16; a += 2) u = Math.max(r[a + 1], r[a + 2]), u = Math.max(u, r[a + 3]), u = Math.max(u, r[a + 4]), u = Math.max(u, r[a + 5]), !(u >= l) && (u = Math.max(u, r[a + 6]), u = Math.max(u, r[a + 7]), u = Math.max(u, r[a + 8]), l = Math.min(l, Math.max(u, r[a])), l = Math.min(l, Math.max(u, r[a + 9]))); + return -l - 1; +} +//#endregion +//#region src/matmath/matmath.ts +var d = class { + constructor() {} + identity(e, t) { + t === void 0 && (t = 1); + let n = e.data, r = e.rows, i = e.cols, a = i + 1 | 0, o = r * i, s = o; + for (; --o >= 0;) n[o] = 0; + for (o = s, s = 0; s < o;) n[s] = t, s += a; + } + transpose(e, t) { + let n = 0, r = 0, i = t.rows, a = t.cols, o = 0, s = 0, c = 0, l = t.data, u = e.data; + for (; n < i; s += 1, o += a, n++) for (c = s, r = 0; r < a; c += i, r++) u[c] = l[o + r]; + } + multiply(e, t, n) { + let r = 0, i = 0, a = 0, o = 0, s = 0, c = 0, l = 0, u = 0, d = t.cols, f = t.rows, p = n.cols, m = t.data, h = n.data, g = e.data, _ = 0; + for (; r < f; o += d, r++) for (l = 0, i = 0; i < p; u++, l++, i++) { + for (c = l, s = o, _ = 0, a = 0; a < d; s++, c += p, a++) _ += m[s] * h[c]; + g[u] = _; + } + } + multiply_ABt(e, t, n) { + let r = 0, i = 0, a = 0, o = 0, s = 0, c = 0, l = 0, u = t.cols, d = t.rows, f = n.rows, p = t.data, m = n.data, h = e.data, g = 0; + for (; r < d; o += u, r++) for (c = 0, i = 0; i < f; l++, i++) { + for (s = o, g = 0, a = 0; a < u; s++, c++, a++) g += p[s] * m[c]; + h[l] = g; + } + } + multiply_AtB(e, t, n) { + let r = 0, i = 0, a = 0, o = 0, s = 0, c = 0, l = 0, u = 0, d = t.cols, f = t.rows, p = n.cols, m = t.data, h = n.data, g = e.data, _ = 0; + for (; r < d; o++, r++) for (l = 0, i = 0; i < p; u++, l++, i++) { + for (c = l, s = o, _ = 0, a = 0; a < f; s += d, c += p, a++) _ += m[s] * h[c]; + g[u] = _; + } + } + multiply_AAt(e, t) { + let n = 0, r = 0, i = 0, a = 0, o = 0, s = 0, c = 0, l = 0, u = 0, d = t.cols, f = t.rows, p = t.data, m = e.data, h = 0; + for (; n < f; a += f + 1, o = s, n++) for (l = a, u = a, c = o, r = n; r < f; l++, u += f, r++) { + for (s = o, h = 0, i = 0; i < d; i++) h += p[s++] * p[c++]; + m[l] = h, m[u] = h; + } + } + multiply_AtA(e, t) { + let n = 0, r = 0, i = 0, a = 0, o = 0, s = 0, c = 0, l = 0, u = 0, d = t.cols, f = t.rows, p = t.data, m = e.data, h = 0; + for (; n < d; c += d, n++) for (a = n, u = c + n, l = u, r = n; r < d; l++, u += d, r++) { + for (o = a, s = r, h = 0, i = 0; i < f; o += d, s += d, i++) h += p[o] * p[s]; + m[l] = h, m[u] = h; + } + } + identity_3x3(e, t) { + t === void 0 && (t = 1); + let n = e.data; + n[0] = n[4] = n[8] = t, n[1] = n[2] = n[3] = 0, n[5] = n[6] = n[7] = 0; + } + invert_3x3(e, t) { + let n = e.data, r = t.data, i = n[4], a = n[8], o = n[5], s = n[7], c = n[0], l = c * i, u = c * o, d = n[3], f = n[1], p = d * f, m = n[2], h = d * m, g = n[6], _ = g * f, v = g * m, y = 1 / (l * a - u * s - p * a + h * s + _ * o - v * i); + r[0] = (i * a - o * s) * y, r[1] = -(f * a - m * s) * y, r[2] = -(-f * o + m * i) * y, r[3] = -(d * a - o * g) * y, r[4] = (c * a - v) * y, r[5] = -(u - h) * y, r[6] = -(-d * s + i * g) * y, r[7] = -(c * s - _) * y, r[8] = (l - p) * y; + } + multiply_3x3(e, t, n) { + let r = e.data, i = t.data, a = n.data, o = i[0], s = i[1], c = i[2], l = i[3], u = i[4], d = i[5], f = i[6], p = i[7], m = i[8], h = a[0], g = a[1], _ = a[2], v = a[3], y = a[4], b = a[5], x = a[6], S = a[7], C = a[8]; + r[0] = o * h + s * v + c * x, r[1] = o * g + s * y + c * S, r[2] = o * _ + s * b + c * C, r[3] = l * h + u * v + d * x, r[4] = l * g + u * y + d * S, r[5] = l * _ + u * b + d * C, r[6] = f * h + p * v + m * x, r[7] = f * g + p * y + m * S, r[8] = f * _ + p * b + m * C; + } + mat3x3_determinant(e) { + let t = e.data; + return t[0] * t[4] * t[8] - t[0] * t[5] * t[7] - t[3] * t[1] * t[8] + t[3] * t[2] * t[7] + t[6] * t[1] * t[5] - t[6] * t[2] * t[4]; + } + determinant_3x3(e, t, n, r, i, a, o, s, c) { + return e * i * c - e * a * s - r * t * c + r * n * s + o * t * a - o * n * i; + } +}, f = { + EPSILON: 1.192092896e-7, + FLT_MIN: 1e-37, + U8_t: 256, + S32_t: 512, + F32_t: 1024, + S64_t: 2048, + F64_t: 4096, + C1_t: 1, + C2_t: 2, + C3_t: 3, + C4_t: 4, + COLOR_RGBA2GRAY: 0, + COLOR_RGB2GRAY: 1, + COLOR_BGRA2GRAY: 2, + COLOR_BGR2GRAY: 3, + BOX_BLUR_NOSCALE: 1, + SVD_U_T: 1, + SVD_V_T: 2, + U8C1_t: 257, + U8C3_t: 259, + U8C4_t: 260, + F32C1_t: 1025, + F32C2_t: 1026, + S32C1_t: 513, + S32C2_t: 514 +}, p = class { + constructor(t, n, r, i) { + this.dt = new e(), this.type = this.dt._get_data_type(r) | 0, this.channel = this.dt._get_channel(r) | 0, this.cols = t | 0, this.rows = n | 0, i === void 0 ? this.allocate() : (this.buffer = i, this.data = this.type & f.U8_t ? this.buffer.u8 : this.type & f.S32_t ? this.buffer.i32 : this.type & f.F32_t ? this.buffer.f32 : this.buffer.f64); + } + allocate() { + delete this.data, delete this.buffer, this.buffer = new t(this.cols * this.dt._get_data_type_size(this.type) * this.channel * this.rows), this.data = this.type & f.U8_t ? this.buffer.u8 : this.type & f.S32_t ? this.buffer.i32 : this.type & f.F32_t ? this.buffer.f32 : this.buffer.f64; + } + copy_to(e) { + let t = e.data, n = this.data, r = 0, i = this.cols * this.rows * this.channel | 0; + for (; r < i - 4; r += 4) t[r] = n[r], t[r + 1] = n[r + 1], t[r + 2] = n[r + 2], t[r + 3] = n[r + 3]; + for (; r < i; ++r) t[r] = n[r]; + } + resize(e, t, n) { + n === void 0 && (n = this.channel), e * this.dt._get_data_type_size(this.type) * n * t > this.buffer.size ? (this.cols = e, this.rows = t, this.channel = n, this.allocate()) : (this.cols = e, this.rows = t, this.channel = n); + } +}, m = class { + constructor() {} + perspective_4point_transform(e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g) { + let _ = t, v = l, y = o, b = _ * v * y, x = m, S = _ * x, C = v * S, w = u, T = _ * w, E = a, D = n, O = p, k = D * O, A = k * E, j = O * E * w, M = O * y, N = O * w, P = v * y, F = x * v, I = x * E, L = w * E, R = 1 / (M - N - P + F - I + L), z = _ * O, B = D * E, V = y * _, ee = x * V, H = D * v, U = k * w, W = D * w * E, G = y * x * v, K = x * D, te = -(C - b + T * E - E * S - k * v + A - j + M * v) * R, q = (b - C - z * y + z * w + A - v * B + I * v - j) * R, ne = _, J = (-w * S + ee + H * y - k * y + U - W + I * w - G) * R, Y = (-ee + V * w - K * v + U - W + K * E + G - M * w) * R, X = D, Z = (-T + V + H - B + N - M - F + I) * R, Q = (-S + T + k - H + I - L - M + P) * R; + _ = r, v = d, y = c, b = _ * v * y, x = g, S = _ * x, C = v * S, w = f, T = _ * w, E = s, D = i, O = h, k = D * O, A = k * E, j = O * E * w, M = O * y, N = O * w, P = v * y, F = x * v, I = x * E, L = w * E, R = 1 / (M - N - P + F - I + L), z = _ * O, B = D * E, V = y * _, ee = x * V, H = D * v, U = k * w, W = D * w * E, G = y * x * v, K = x * D; + let re = -(C - b + T * E - E * S - k * v + A - j + M * v) * R, ie = (b - C - z * y + z * w + A - v * B + I * v - j) * R, ae = _, oe = (-w * S + ee + H * y - k * y + U - W + I * w - G) * R, se = (-ee + V * w - K * v + U - W + K * E + G - M * w) * R, ce = D, le = (-T + V + H - B + N - M - F + I) * R, ue = (-S + T + k - H + I - L - M + P) * R; + v = Y - Q * X, y = te * Y, b = te * X, S = J * q, C = ne * J, T = q * Z; + let de = ne * Z; + O = 1 / (y - b * Q - S + C * Q + T * X - de * Y), A = -J + X * Z; + let fe = -J * Q + Y * Z; + L = -q + ne * Q; + let pe = te - de; + B = te * Q - T, V = -q * X + ne * Y; + let me = b - C, he = y - S; + W = v * O; + let ge = L * O, _e = V * O, $ = e.data; + $[0] = re * W + A * O * ie - fe * O * ae, $[1] = re * ge + pe * O * ie - B * O * ae, $[2] = -re * _e - me * O * ie + he * O * ae, $[3] = oe * W + A * O * se - fe * O * ce, $[4] = oe * ge + pe * O * se - B * O * ce, $[5] = -oe * _e - me * O * se + he * O * ce, $[6] = le * W + A * O * ue - fe * O, $[7] = le * ge + pe * O * ue - B * O, $[8] = -le * _e - me * O * ue + he * O; + } + invert_affine_transform(e, t) { + let n = e.data, r = t.data, i = n[0], a = n[1], o = n[2], s = n[3], c = n[4], l = n[5], u = 1 / (i * c - a * s); + r[0] = u * c, r[1] = u * -a, r[2] = u * (a * l - o * c), r[3] = u * -s, r[4] = u * i, r[5] = u * (o * s - i * l); + } + invert_perspective_transform(e, t) { + let n = e.data, r = t.data, i = n[0], a = n[1], o = n[2], s = n[3], c = n[4], l = n[5], u = n[6], d = n[7], f = n[8], p = 1 / (i * (c * f - l * d) - a * (s * f - l * u) + o * (s * d - c * u)); + r[0] = p * (c * f - l * d), r[1] = p * (o * d - a * f), r[2] = p * (a * l - o * c), r[3] = p * (l * u - s * f), r[4] = p * (i * f - o * u), r[5] = p * (o * s - i * l), r[6] = p * (s * d - c * u), r[7] = p * (a * u - i * d), r[8] = p * (i * c - a * s); + } +}, h = class { + constructor(e = 0, t = 0, n = 0, r = 0, i = -1) { + this.x = e, this.y = t, this.score = n, this.level = r, this.angle = i; + } +}, g = [ + 8, + -3, + 9, + 5, + 4, + 2, + 7, + -12, + -11, + 9, + -8, + 2, + 7, + -12, + 12, + -13, + 2, + -13, + 2, + 12, + 1, + -7, + 1, + 6, + -2, + -10, + -2, + -4, + -13, + -13, + -11, + -8, + -13, + -3, + -12, + -9, + 10, + 4, + 11, + 9, + -13, + -8, + -8, + -9, + -11, + 7, + -9, + 12, + 7, + 7, + 12, + 6, + -4, + -5, + -3, + 0, + -13, + 2, + -12, + -3, + -9, + 0, + -7, + 5, + 12, + -6, + 12, + -1, + -3, + 6, + -2, + 12, + -6, + -13, + -4, + -8, + 11, + -13, + 12, + -8, + 4, + 7, + 5, + 1, + 5, + -3, + 10, + -3, + 3, + -7, + 6, + 12, + -8, + -7, + -6, + -2, + -2, + 11, + -1, + -10, + -13, + 12, + -8, + 10, + -7, + 3, + -5, + -3, + -4, + 2, + -3, + 7, + -10, + -12, + -6, + 11, + 5, + -12, + 6, + -7, + 5, + -6, + 7, + -1, + 1, + 0, + 4, + -5, + 9, + 11, + 11, + -13, + 4, + 7, + 4, + 12, + 2, + -1, + 4, + 4, + -4, + -12, + -2, + 7, + -8, + -5, + -7, + -10, + 4, + 11, + 9, + 12, + 0, + -8, + 1, + -13, + -13, + -2, + -8, + 2, + -3, + -2, + -2, + 3, + -6, + 9, + -4, + -9, + 8, + 12, + 10, + 7, + 0, + 9, + 1, + 3, + 7, + -5, + 11, + -10, + -13, + -6, + -11, + 0, + 10, + 7, + 12, + 1, + -6, + -3, + -6, + 12, + 10, + -9, + 12, + -4, + -13, + 8, + -8, + -12, + -13, + 0, + -8, + -4, + 3, + 3, + 7, + 8, + 5, + 7, + 10, + -7, + -1, + 7, + 1, + -12, + 3, + -10, + 5, + 6, + 2, + -4, + 3, + -10, + -13, + 0, + -13, + 5, + -13, + -7, + -12, + 12, + -13, + 3, + -11, + 8, + -7, + 12, + -4, + 7, + 6, + -10, + 12, + 8, + -9, + -1, + -7, + -6, + -2, + -5, + 0, + 12, + -12, + 5, + -7, + 5, + 3, + -10, + 8, + -13, + -7, + -7, + -4, + 5, + -3, + -2, + -1, + -7, + 2, + 9, + 5, + -11, + -11, + -13, + -5, + -13, + -1, + 6, + 0, + -1, + 5, + -3, + 5, + 2, + -4, + -13, + -4, + 12, + -9, + -6, + -9, + 6, + -12, + -10, + -8, + -4, + 10, + 2, + 12, + -3, + 7, + 12, + 12, + 12, + -7, + -13, + -6, + 5, + -4, + 9, + -3, + 4, + 7, + -1, + 12, + 2, + -7, + 6, + -5, + 1, + -13, + 11, + -12, + 5, + -3, + 7, + -2, + -6, + 7, + -8, + 12, + -7, + -13, + -7, + -11, + -12, + 1, + -3, + 12, + 12, + 2, + -6, + 3, + 0, + -4, + 3, + -2, + -13, + -1, + -13, + 1, + 9, + 7, + 1, + 8, + -6, + 1, + -1, + 3, + 12, + 9, + 1, + 12, + 6, + -1, + -9, + -1, + 3, + -13, + -13, + -10, + 5, + 7, + 7, + 10, + 12, + 12, + -5, + 12, + 9, + 6, + 3, + 7, + 11, + 5, + -13, + 6, + 10, + 2, + -12, + 2, + 3, + 3, + 8, + 4, + -6, + 2, + 6, + 12, + -13, + 9, + -12, + 10, + 3, + -8, + 4, + -7, + 9, + -11, + 12, + -4, + -6, + 1, + 12, + 2, + -8, + 6, + -9, + 7, + -4, + 2, + 3, + 3, + -2, + 6, + 3, + 11, + 0, + 3, + -3, + 8, + -8, + 7, + 8, + 9, + 3, + -11, + -5, + -6, + -4, + -10, + 11, + -5, + 10, + -5, + -8, + -3, + 12, + -10, + 5, + -9, + 0, + 8, + -1, + 12, + -6, + 4, + -6, + 6, + -11, + -10, + 12, + -8, + 7, + 4, + -2, + 6, + 7, + -2, + 0, + -2, + 12, + -5, + -8, + -5, + 2, + 7, + -6, + 10, + 12, + -9, + -13, + -8, + -8, + -5, + -13, + -5, + -2, + 8, + -8, + 9, + -13, + -9, + -11, + -9, + 0, + 1, + -8, + 1, + -2, + 7, + -4, + 9, + 1, + -2, + 1, + -1, + -4, + 11, + -6, + 12, + -11, + -12, + -9, + -6, + 4, + 3, + 7, + 7, + 12, + 5, + 5, + 10, + 8, + 0, + -4, + 2, + 8, + -9, + 12, + -5, + -13, + 0, + 7, + 2, + 12, + -1, + 2, + 1, + 7, + 5, + 11, + 7, + -9, + 3, + 5, + 6, + -8, + -13, + -4, + -8, + 9, + -5, + 9, + -3, + -3, + -4, + -7, + -3, + -12, + 6, + 5, + 8, + 0, + -7, + 6, + -6, + 12, + -13, + 6, + -5, + -2, + 1, + -10, + 3, + 10, + 4, + 1, + 8, + -4, + -2, + -2, + 2, + -13, + 2, + -12, + 12, + 12, + -2, + -13, + 0, + -6, + 4, + 1, + 9, + 3, + -6, + -10, + -3, + -5, + -3, + -13, + -1, + 1, + 7, + 5, + 12, + -11, + 4, + -2, + 5, + -7, + -13, + 9, + -9, + -5, + 7, + 1, + 8, + 6, + 7, + -8, + 7, + 6, + -7, + -4, + -7, + 1, + -8, + 11, + -7, + -8, + -13, + 6, + -12, + -8, + 2, + 4, + 3, + 9, + 10, + -5, + 12, + 3, + -6, + -5, + -6, + 7, + 8, + -3, + 9, + -8, + 2, + -12, + 2, + 8, + -11, + -2, + -10, + 3, + -12, + -13, + -7, + -9, + -11, + 0, + -10, + -5, + 5, + -3, + 11, + 8, + -2, + -13, + -1, + 12, + -1, + -8, + 0, + 9, + -13, + -11, + -12, + -5, + -10, + -2, + -10, + 11, + -3, + 9, + -2, + -13, + 2, + -3, + 3, + 2, + -9, + -13, + -4, + 0, + -4, + 6, + -3, + -10, + -4, + 12, + -2, + -7, + -6, + -11, + -4, + 9, + 6, + -3, + 6, + 11, + -13, + 11, + -5, + 5, + 11, + 11, + 12, + 6, + 7, + -5, + 12, + -2, + -1, + 12, + 0, + 7, + -4, + -8, + -3, + -2, + -7, + 1, + -6, + 7, + -13, + -12, + -8, + -13, + -7, + -2, + -6, + -8, + -8, + 5, + -6, + -9, + -5, + -1, + -4, + 5, + -13, + 7, + -8, + 10, + 1, + 5, + 5, + -13, + 1, + 0, + 10, + -13, + 9, + 12, + 10, + -1, + 5, + -8, + 10, + -9, + -1, + 11, + 1, + -13, + -9, + -3, + -6, + 2, + -1, + -10, + 1, + 12, + -13, + 1, + -8, + -10, + 8, + -11, + 10, + -6, + 2, + -13, + 3, + -6, + 7, + -13, + 12, + -9, + -10, + -10, + -5, + -7, + -10, + -8, + -8, + -13, + 4, + -6, + 8, + 5, + 3, + 12, + 8, + -13, + -4, + 2, + -3, + -3, + 5, + -13, + 10, + -12, + 4, + -13, + 5, + -1, + -9, + 9, + -4, + 3, + 0, + 3, + 3, + -9, + -12, + 1, + -6, + 1, + 3, + 2, + 4, + -8, + -10, + -10, + -10, + 9, + 8, + -13, + 12, + 12, + -8, + -12, + -6, + -5, + 2, + 2, + 3, + 7, + 10, + 6, + 11, + -8, + 6, + 8, + 8, + -12, + -7, + 10, + -6, + 5, + -3, + -9, + -3, + 9, + -1, + -13, + -1, + 5, + -3, + -7, + -3, + 4, + -8, + -2, + -8, + 3, + 4, + 2, + 12, + 12, + 2, + -5, + 3, + 11, + 6, + -9, + 11, + -13, + 3, + -1, + 7, + 12, + 11, + -1, + 12, + 4, + -3, + 0, + -3, + 6, + 4, + -11, + 4, + 12, + 2, + -4, + 2, + 1, + -10, + -6, + -8, + 1, + -13, + 7, + -11, + 1, + -13, + 12, + -11, + -13, + 6, + 0, + 11, + -13, + 0, + -1, + 1, + 4, + -13, + 3, + -9, + -2, + -9, + 8, + -6, + -3, + -13, + -6, + -8, + -2, + 5, + -9, + 8, + 10, + 2, + 7, + 3, + -9, + -1, + -6, + -1, + -1, + 9, + 5, + 11, + -2, + 11, + -3, + 12, + -8, + 3, + 0, + 3, + 5, + -1, + 4, + 0, + 10, + 3, + -6, + 4, + 5, + -13, + 0, + -10, + 5, + 5, + 8, + 12, + 11, + 8, + 9, + 9, + -6, + 7, + -4, + 8, + -12, + -10, + 4, + -10, + 9, + 7, + 3, + 12, + 4, + 9, + -7, + 10, + -2, + 7, + 0, + 12, + -2, + -1, + -6, + 0, + -11 +]; +//#endregion +//#region src/orb/rectify_patch.ts +function _(e, t, n, r, i, a, o, s) { + let c = Math.cos(n), l = Math.sin(n); + o.data[0] = c, o.data[1] = -l, o.data[2] = (-c + l) * a * .5 + r, o.data[3] = l, o.data[4] = c, o.data[5] = (-l - c) * a * .5 + i, s.warp_affine(e, t, o, 128); +} +//#endregion +//#region src/yape/yape_utils.ts +function v(e, t, n) { + let r = 0, i, a; + for (i = n, a = 0; a < i; a++, r++) i = Math.sqrt(n * n - a * a) + .5 | 0, t[r] = i + e * a; + for (i--; i < a && i >= 0; i--, r++) a = Math.sqrt(n * n - i * i) + .5 | 0, t[r] = i + e * a; + for (; -i < a; i--, r++) a = Math.sqrt(n * n - i * i) + .5 | 0, t[r] = i + e * a; + for (a--; a >= 0; a--, r++) i = -Math.sqrt(n * n - a * a) - .5 | 0, t[r] = i + e * a; + for (; a > i; a--, r++) i = -Math.sqrt(n * n - a * a) - .5 | 0, t[r] = i + e * a; + for (i++; i <= 0; i++, r++) a = -Math.sqrt(n * n - i * i) - .5 | 0, t[r] = i + e * a; + for (; i < -a; i++, r++) a = -Math.sqrt(n * n - i * i) - .5 | 0, t[r] = i + e * a; + for (a++; a < 0; a++, r++) i = Math.sqrt(n * n - a * a) + .5 | 0, t[r] = i + e * a; + return t[r] = t[0], t[r + 1] = t[1], r; +} +function y(e, t, n) { + let r = 0; + return e[t + 1] != 0 && r++, e[t - 1] != 0 && r++, e[t + n] != 0 && r++, e[t + n + 1] != 0 && r++, e[t + n - 1] != 0 && r++, e[t - n] != 0 && r++, e[t - n + 1] != 0 && r++, e[t - n - 1] != 0 && r++, r; +} +function b(e, t, n, r, i) { + let a, o; + if (n > 0) for (t -= r * i, o = -i; o <= i; ++o) { + for (a = -i; a <= i; ++a) if (e[t + a] > n) return !1; + t += r; + } + else for (t -= r * i, o = -i; o <= i; ++o) { + for (a = -i; a <= i; ++a) if (e[t + a] < n) return !1; + t += r; + } + return !0; +} +function x(e, t, n, r, i, a, o, s) { + let c = 0, l = 0, u = o - 1 | 0, d = 0, f = 0, p = 0, m = 0, h = 0; + if (d = e[t + a[l]], d <= i) if (d >= r) if (f = e[t + a[u]], f <= i) if (f >= r) { + n[t] = 0; + return; + } else if (u++, p = e[t + a[u]], p > i) if (u++, m = e[t + a[u]], m > i) h = 3; + else if (m < r) h = 6; + else { + n[t] = 0; + return; + } + else if (u++, m = e[t + a[u]], m > i) h = 7; + else if (m < r) h = 2; + else { + n[t] = 0; + return; + } + else if (u++, p = e[t + a[u]], p > i) if (u++, m = e[t + a[u]], m > i) h = 3; + else if (m < r) h = 6; + else { + n[t] = 0; + return; + } + else if (p < r) if (u++, m = e[t + a[u]], m > i) h = 7; + else if (m < r) h = 2; + else { + n[t] = 0; + return; + } + else { + n[t] = 0; + return; + } + else { + if (f = e[t + a[u]], f > i) { + n[t] = 0; + return; + } + if (u++, p = e[t + a[u]], p > i) { + n[t] = 0; + return; + } + if (u++, m = e[t + a[u]], m > i) { + n[t] = 0; + return; + } + h = 1; + } + else { + if (f = e[t + a[u]], f < r) { + n[t] = 0; + return; + } + if (u++, p = e[t + a[u]], p < r) { + n[t] = 0; + return; + } + if (u++, m = e[t + a[u]], m < r) { + n[t] = 0; + return; + } + h = 0; + } + for (l = 1; l <= o; l++) switch (d = e[t + a[l]], h) { + case 0: + if (d > i) { + if (p = m, u++, m = e[t + a[u]], m < r) { + n[t] = 0; + return; + } + c -= d + p, h = 0; + break; + } + if (d < r) { + if (p > i) { + n[t] = 0; + return; + } + if (m > i) { + n[t] = 0; + return; + } + if (p = m, u++, m = e[t + a[u]], m > i) { + n[t] = 0; + return; + } + c -= d + p, h = 8; + break; + } + if (p <= i) { + n[t] = 0; + return; + } + if (m <= i) { + n[t] = 0; + return; + } + if (p = m, u++, m = e[t + a[u]], m > i) { + c -= d + p, h = 3; + break; + } + if (m < r) { + c -= d + p, h = 6; + break; + } + n[t] = 0; + return; + case 1: + if (d < r) { + if (p = m, u++, m = e[t + a[u]], m > i) { + n[t] = 0; + return; + } + c -= d + p, h = 1; + break; + } + if (d > i) { + if (p < r) { + n[t] = 0; + return; + } + if (m < r) { + n[t] = 0; + return; + } + if (p = m, u++, m = e[t + a[u]], m < r) { + n[t] = 0; + return; + } + c -= d + p, h = 9; + break; + } + if (p >= r) { + n[t] = 0; + return; + } + if (m >= r) { + n[t] = 0; + return; + } + if (p = m, u++, m = e[t + a[u]], m < r) { + c -= d + p, h = 2; + break; + } + if (m > i) { + c -= d + p, h = 7; + break; + } + n[t] = 0; + return; + case 2: + if (d > i) { + n[t] = 0; + return; + } + if (p = m, u++, m = e[t + a[u]], d < r) { + if (m > i) { + n[t] = 0; + return; + } + c -= d + p, h = 4; + break; + } + if (m > i) { + c -= d + p, h = 7; + break; + } + if (m < r) { + c -= d + p, h = 2; + break; + } + n[t] = 0; + return; + case 3: + if (d < r) { + n[t] = 0; + return; + } + if (p = m, u++, m = e[t + a[u]], d > i) { + if (m < r) { + n[t] = 0; + return; + } + c -= d + p, h = 5; + break; + } + if (m > i) { + c -= d + p, h = 3; + break; + } + if (m < r) { + c -= d + p, h = 6; + break; + } + n[t] = 0; + return; + case 4: + if (d > i) { + n[t] = 0; + return; + } + if (d < r) { + if (p = m, u++, m = e[t + a[u]], m > i) { + n[t] = 0; + return; + } + c -= d + p, h = 1; + break; + } + if (m >= r) { + n[t] = 0; + return; + } + if (p = m, u++, m = e[t + a[u]], m < r) { + c -= d + p, h = 2; + break; + } + if (m > i) { + c -= d + p, h = 7; + break; + } + n[t] = 0; + return; + case 5: + if (d < r) { + n[t] = 0; + return; + } + if (d > i) { + if (p = m, u++, m = e[t + a[u]], m < r) { + n[t] = 0; + return; + } + c -= d + p, h = 0; + break; + } + if (m <= i) { + n[t] = 0; + return; + } + if (p = m, u++, m = e[t + a[u]], m > i) { + c -= d + p, h = 3; + break; + } + if (m < r) { + c -= d + p, h = 6; + break; + } + n[t] = 0; + return; + case 7: + if (d > i) { + n[t] = 0; + return; + } + if (d < r) { + n[t] = 0; + return; + } + if (p = m, u++, m = e[t + a[u]], m > i) { + c -= d + p, h = 3; + break; + } + if (m < r) { + c -= d + p, h = 6; + break; + } + n[t] = 0; + return; + case 6: + if (d > i) { + n[t] = 0; + return; + } + if (d < r) { + n[t] = 0; + return; + } + if (p = m, u++, m = e[t + a[u]], m < r) { + c -= d + p, h = 2; + break; + } + if (m > i) { + c -= d + p, h = 7; + break; + } + n[t] = 0; + return; + case 8: + if (d > i) { + if (m < r) { + n[t] = 0; + return; + } + if (p = m, u++, m = e[t + a[u]], m < r) { + n[t] = 0; + return; + } + c -= d + p, h = 9; + break; + } + if (d < r) { + if (p = m, u++, m = e[t + a[u]], m > i) { + n[t] = 0; + return; + } + c -= d + p, h = 1; + break; + } + n[t] = 0; + return; + case 9: + if (d < r) { + if (m > i) { + n[t] = 0; + return; + } + if (p = m, u++, m = e[t + a[u]], m > i) { + n[t] = 0; + return; + } + c -= d + p, h = 8; + break; + } + if (d > i) { + if (p = m, u++, m = e[t + a[u]], m < r) { + n[t] = 0; + return; + } + c -= d + p, h = 0; + break; + } + n[t] = 0; + return; + default: break; + } + n[t] = c + s * e[t]; +} +var S = class { + constructor(e, t, n) { + this.dirs = /* @__PURE__ */ new Int32Array(1024), this.dirs_count = v(e, this.dirs, n) | 0, this.scores = new Int32Array(e * t), this.radius = n | 0; + } +}, C = class { + constructor() { + this.level_tables = [], this.tau = 7; + } + init(e, t, n, r = 1) { + n = Math.min(n, 7), n = Math.max(n, 3); + for (let i = 0; i < r; ++i) this.level_tables[i] = new S(e >> i, t >> i, n); + } + detect(e, t, n = 4) { + let r = this.level_tables[0], i = r.radius | 0, a = i - 1 | 0, o = r.dirs, s = r.dirs_count | 0, c = s >> 1, l = e.data, u = e.cols | 0, d = e.rows | 0, f = u >> 1, p = r.scores, m = 0, h = 0, g = 0, _ = 0, v = 0, S = 0, C = 0, w = 0, T = this.tau | 0, E = 0, D, O = Math.max(i + 1, n) | 0, k = Math.max(i + 1, n) | 0, A = Math.min(u - i - 2, u - n) | 0, j = Math.min(d - i - 2, d - n) | 0; + for (g = k * u + O | 0, h = k; h < j; ++h, g += u) for (m = O, _ = g; m < A; ++m, ++_) v = l[_] + T, S = l[_] - T, S < l[_ + i] && l[_ + i] < v && S < l[_ - i] && l[_ - i] < v ? p[_] = 0 : x(l, _, p, S, v, o, c, s); + for (g = k * u + O | 0, h = k; h < j; ++h, g += u) for (m = O, _ = g; m < A; ++m, ++_) w = p[_], C = Math.abs(w), C < 5 ? (++m, ++_) : y(p, _, u) >= 3 && b(p, _, w, f, i) && (D = t[E], D.x = m, D.y = h, D.score = C, ++E, m += a, _ += a); + return E; + } +}; +//#endregion +//#region src/yape06/yape06_utils.ts +function w(e, t, n, r, i, a, o, s, c) { + let l = 0, u = 0, d = o * n + a | 0, f = d; + for (l = o; l < c; ++l, d += n, f = d) for (u = a; u < s; ++u, ++f) f + r < e.length && f - r >= 0 && f + i < e.length && f - i >= 0 ? t[f] = -4 * e[f] + e[f + r] + e[f - r] + e[f + i] + e[f - i] : t[f] = 0; +} +function T(e, t, n, r, i, a, o) { + let s = -2 * e[t] + e[t + r] + e[t - r], c = -2 * e[t] + e[t + i] + e[t - i], l = e[t + a] + e[t - a] - e[t + o] - e[t - o], u = Math.sqrt((s - c) * (s - c) + 4 * l * l) | 0; + return Math.min(Math.abs(n - u), Math.abs(-(n + u))); +} +//#endregion +//#region src/motion_estimator/ransac_params_t.ts +var E = class { + constructor(e = 0, t = .5, n = .5, r = .99) { + this.size = e, this.thresh = t, this.eps = n, this.prob = r; + } + update_iters(e, t) { + let n = Math.log(1 - this.prob), r = Math.log(1 - Math.pow(1 - e, this.size)); + return (r >= 0 || -n >= t * -r ? t : Math.round(n / r)) | 0; + } +}, D = { + name: "@webarkit/jsfeat-next", + version: "0.7.5", + description: "Typescript version of jsfeat for WebARKit", + main: "dist/jsfeatNext.js", + module: "dist/jsfeatNext.mjs", + types: "types/src/index.d.ts", + unpkg: "dist/jsfeatNext.js", + jsdelivr: "dist/jsfeatNext.js", + exports: { + ".": { + types: "./types/src/index.d.ts", + import: "./dist/jsfeatNext.mjs", + require: "./dist/jsfeatNext.js" + }, + "./package.json": "./package.json" + }, + files: [ + "dist", + "types", + "src" + ], + scripts: { + "build-ts": "vite build", + "dev-ts": "vite build --watch", + "format-check": "prettier --check .", + format: "prettier --write .", + test: "vitest run", + "test:watch": "vitest" + }, + repository: { + type: "git", + url: "git+https://github.com/webarkit/jsfeatNext.git" + }, + keywords: [ + "jsfeat", + "jsfeatNext", + "WebAR", + "WebARKit", + "AugmentedReality", + "computer", + "vision" + ], + author: "Walter Perdan @kalwalt", + license: "LGPL-3.0-or-later", + bugs: { url: "https://github.com/webarkit/jsfeatNext/issues" }, + homepage: "https://github.com/webarkit/jsfeatNext#readme", + devDependencies: { + prettier: "~3.5.3", + typescript: "^6.0.3", + vite: "^8.1.3", + "vite-plugin-dts": "^5.0.3", + vitest: "^4.1.10" + } +}, O, k = class { + constructor() { + this.dt = new e(), this.cache = new r(), this.cache.allocate(30, 640 * 4); + } + get_data_type(e) { + return this.dt._get_data_type(e); + } + get_channel(e) { + return this.dt._get_channel(e); + } + get_data_type_size(e) { + return this.dt._get_data_type_size(e); + } +}; +O = k, O.VERSION = D.version, O.EPSILON = f.EPSILON, O.FLT_MIN = f.FLT_MIN, O.U8_t = f.U8_t, O.S32_t = f.S32_t, O.F32_t = f.F32_t, O.S64_t = f.S64_t, O.F64_t = f.F64_t, O.C1_t = f.C1_t, O.C2_t = f.C2_t, O.C3_t = f.C3_t, O.C4_t = f.C4_t, O.COLOR_RGBA2GRAY = f.COLOR_RGBA2GRAY, O.COLOR_RGB2GRAY = f.COLOR_RGB2GRAY, O.COLOR_BGRA2GRAY = f.COLOR_BGRA2GRAY, O.COLOR_BGR2GRAY = f.COLOR_BGR2GRAY, O.BOX_BLUR_NOSCALE = f.BOX_BLUR_NOSCALE, O.SVD_U_T = f.SVD_U_T, O.SVD_V_T = f.SVD_V_T, O.U8C1_t = O.U8_t | O.C1_t, O.U8C3_t = O.U8_t | O.C3_t, O.U8C4_t = O.U8_t | O.C4_t, O.F32C1_t = O.F32_t | O.C1_t, O.F32C2_t = O.F32_t | O.C2_t, O.S32C1_t = O.S32_t | O.C1_t, O.S32C2_t = O.S32_t | O.C2_t; +var A = class extends k { + constructor() { + super(), this.T0 = new p(3, 3, f.F32_t | f.C1_t), this.T1 = new p(3, 3, f.F32_t | f.C1_t), this.AtA = new p(6, 6, f.F32_t | f.C1_t), this.AtB = new p(6, 1, f.F32_t | f.C1_t); + } + sqr(e) { + return e * e; + } + iso_normalize_points(e, t, n, r, i) { + let a = 0, o = 0, s = 0, c = 0, l = 0, u = 0, d = 0, f = 0, p = 0, m = 0, h = 0; + for (; a < i; ++a) o += e[a].x, s += e[a].y, u += t[a].x, d += t[a].y; + for (o /= i, s /= i, u /= i, d /= i, a = 0; a < i; ++a) m = e[a].x - o, h = e[a].y - s, c += Math.sqrt(m * m + h * h), m = t[a].x - u, h = t[a].y - d, f += Math.sqrt(m * m + h * h); + c /= i, f /= i, l = Math.SQRT2 / c, p = Math.SQRT2 / f, n[0] = n[4] = l, n[2] = -o * l, n[5] = -s * l, n[1] = n[3] = n[6] = n[7] = 0, n[8] = 1, r[0] = r[4] = p, r[2] = -u * p, r[5] = -d * p, r[1] = r[3] = r[6] = r[7] = 0, r[8] = 1; + } + have_collinear_points(e, t) { + let n = 0, r = 0, i = t - 1 | 0, a = 0, o = 0, s = 0, c = 0; + for (; n < i; ++n) for (a = e[n].x - e[i].x, o = e[n].y - e[i].y, r = 0; r < n; ++r) if (s = e[r].x - e[i].x, c = e[r].y - e[i].y, Math.abs(s * o - c * a) <= f.EPSILON * (Math.abs(a) + Math.abs(o) + Math.abs(s) + Math.abs(c))) return !0; + return !1; + } +}, j = class extends A { + constructor() { + super(); + } + run(e, t, n, r) { + let i = 0, a = 0, o = n.type | f.C1_t, s = n.data, c = this.T0.data, l = this.T1.data, u, m, h = 0, g = 0, _ = new d(), v = new k.linalg(); + this.iso_normalize_points(e, t, c, l, r); + let y = this.cache.get_buffer(2 * r * 6 << 3), b = this.cache.get_buffer(2 * r << 3), x = new p(6, 2 * r, o, y.data), S = new p(1, 2 * r, o, b.data), C = x.data, w = S.data; + for (; i < r; ++i) u = e[i], m = t[i], h = c[0] * u.x + c[1] * u.y + c[2], g = c[3] * u.x + c[4] * u.y + c[5], a = i * 2 * 6, C[a] = h, C[a + 1] = g, C[a + 2] = 1, C[a + 3] = 0, C[a + 4] = 0, C[a + 5] = 0, a += 6, C[a] = 0, C[a + 1] = 0, C[a + 2] = 0, C[a + 3] = h, C[a + 4] = g, C[a + 5] = 1, w[i << 1] = l[0] * m.x + l[1] * m.y + l[2], w[(i << 1) + 1] = l[3] * m.x + l[4] * m.y + l[5]; + return _.multiply_AtA(this.AtA, x), _.multiply_AtB(this.AtB, x, S), v.lu_solve(this.AtA, this.AtB), s[0] = this.AtB.data[0], s[1] = this.AtB.data[1], s[2] = this.AtB.data[2], s[3] = this.AtB.data[3], s[4] = this.AtB.data[4], s[5] = this.AtB.data[5], s[6] = 0, s[7] = 0, s[8] = 1, _.invert_3x3(this.T1, this.T1), _.multiply_3x3(n, this.T1, n), _.multiply_3x3(n, n, this.T0), this.cache.put_buffer(y), this.cache.put_buffer(b), 1; + } + error(e, t, n, r, i) { + let a = 0, o, s, c = n.data; + for (; a < i; ++a) o = e[a], s = t[a], r[a] = this.sqr(s.x - c[0] * o.x - c[1] * o.y - c[2]) + this.sqr(s.y - c[3] * o.x - c[4] * o.y - c[5]); + } + check_subset(e, t, n) { + return !0; + } +}, M = class extends A { + constructor() { + super(), this.mLtL = new p(9, 9, f.F32_t | f.C1_t), this.Evec = new p(9, 9, f.F32_t | f.C1_t); + } + run(e, t, n, r) { + let i = 0, a = 0, o = n.data, s = this.T0.data, c = this.T1.data, l = this.mLtL.data, u = this.Evec.data, p = 0, m = 0, h = 0, g = 0, _ = new k.linalg(), v = new d(), y = 0, b = 0, x = 0, S = 0, C = 0, w = 0, T = 0, E = 0; + for (; i < r; ++i) x += t[i].x, S += t[i].y, T += e[i].x, E += e[i].y; + for (x /= r, S /= r, T /= r, E /= r, i = 0; i < r; ++i) y += Math.abs(t[i].x - x), b += Math.abs(t[i].y - S), C += Math.abs(e[i].x - T), w += Math.abs(e[i].y - E); + if (Math.abs(y) < f.EPSILON || Math.abs(b) < f.EPSILON || Math.abs(C) < f.EPSILON || Math.abs(w) < f.EPSILON) return 0; + for (y = r / y, b = r / b, C = r / C, w = r / w, s[0] = C, s[1] = 0, s[2] = -T * C, s[3] = 0, s[4] = w, s[5] = -E * w, s[6] = 0, s[7] = 0, s[8] = 1, c[0] = 1 / y, c[1] = 0, c[2] = x, c[3] = 0, c[4] = 1 / b, c[5] = S, c[6] = 0, c[7] = 0, c[8] = 1, i = 81; --i >= 0;) l[i] = 0; + for (i = 0; i < r; ++i) p = (t[i].x - x) * y, m = (t[i].y - S) * b, h = (e[i].x - T) * C, g = (e[i].y - E) * w, l[0] += h * h, l[1] += h * g, l[2] += h, l[6] += h * -p * h, l[7] += h * -p * g, l[8] += h * -p, l[10] += g * g, l[11] += g, l[15] += g * -p * h, l[16] += g * -p * g, l[17] += g * -p, l[20] += 1, l[24] += -p * h, l[25] += -p * g, l[26] += -p, l[30] += h * h, l[31] += h * g, l[32] += h, l[33] += h * -m * h, l[34] += h * -m * g, l[35] += h * -m, l[40] += g * g, l[41] += g, l[42] += g * -m * h, l[43] += g * -m * g, l[44] += g * -m, l[50] += 1, l[51] += -m * h, l[52] += -m * g, l[53] += -m, l[60] += -p * h * -p * h + -m * h * -m * h, l[61] += -p * h * -p * g + -m * h * -m * g, l[62] += -p * h * -p + -m * h * -m, l[70] += -p * g * -p * g + -m * g * -m * g, l[71] += -p * g * -p + -m * g * -m, l[80] += -p * -p + -m * -m; + for (i = 0; i < 9; ++i) for (a = 0; a < i; ++a) l[i * 9 + a] = l[a * 9 + i]; + return _.eigenVV(this.mLtL, this.Evec), o[0] = u[72], o[1] = u[73], o[2] = u[74], o[3] = u[75], o[4] = u[76], o[5] = u[77], o[6] = u[78], o[7] = u[79], o[8] = u[80], v.multiply_3x3(n, this.T1, n), v.multiply_3x3(n, n, this.T0), p = 1 / o[8], o[0] *= p, o[1] *= p, o[2] *= p, o[3] *= p, o[4] *= p, o[5] *= p, o[6] *= p, o[7] *= p, o[8] = 1, 1; + } + error(e, t, n, r, i) { + let a = 0, o, s, c = 0, l = 0, u = 0, d = n.data; + for (; a < i; ++a) o = e[a], s = t[a], c = 1 / (d[6] * o.x + d[7] * o.y + 1), l = (d[0] * o.x + d[1] * o.y + d[2]) * c - s.x, u = (d[3] * o.x + d[4] * o.y + d[5]) * c - s.y, r[a] = l * l + u * u; + } + check_subset(e, t, n) { + let r = new d(); + if (n == 4) { + let n = 0, i = e[0], a = e[1], o = e[2], s = e[3], c = t[0], l = t[1], u = t[2], d = t[3], f = i.x, p = i.y, m = a.x, h = a.y, g = o.x, _ = o.y, v = c.x, y = c.y, b = l.x, x = l.y, S = u.x, C = u.y, w = r.determinant_3x3(f, p, 1, m, h, 1, g, _, 1), T = r.determinant_3x3(v, y, 1, b, x, 1, S, C, 1); + if (w * T < 0 && n++, f = a.x, p = a.y, m = o.x, h = o.y, g = s.x, _ = s.y, v = l.x, y = l.y, b = u.x, x = u.y, S = d.x, C = d.y, w = r.determinant_3x3(f, p, 1, m, h, 1, g, _, 1), T = r.determinant_3x3(v, y, 1, b, x, 1, S, C, 1), w * T < 0 && n++, f = i.x, p = i.y, m = o.x, h = o.y, g = s.x, _ = s.y, v = c.x, y = c.y, b = u.x, x = u.y, S = d.x, C = d.y, w = r.determinant_3x3(f, p, 1, m, h, 1, g, _, 1), T = r.determinant_3x3(v, y, 1, b, x, 1, S, C, 1), w * T < 0 && n++, f = i.x, p = i.y, m = a.x, h = a.y, g = s.x, _ = s.y, v = c.x, y = c.y, b = l.x, x = l.y, S = d.x, C = d.y, w = r.determinant_3x3(f, p, 1, m, h, 1, g, _, 1), T = r.determinant_3x3(v, y, 1, b, x, 1, S, C, 1), w * T < 0 && n++, n != 0 && n != 4) return !1; + } + return !0; + } +}; +k.cache = r, k.pyramid_t = class extends k { + constructor(e) { + super(), this.levels = e | 0, this.data = Array(e); + let t = new k.imgproc(); + this.pyrdown = t.pyrdown; + } + allocate(e, t, n) { + let r = this.levels; + for (; --r >= 0;) this.data[r] = new p(e >> r, t >> r, n); + } + build(e, t) { + t === void 0 && (t = !0); + let n = 2, r = e, i = this.data[0]; + if (!t) { + let t = e.cols * e.rows; + for (; --t >= 0;) i.data[t] = e.data[t]; + } + for (i = this.data[1], this.pyrdown(r, i); n < this.levels; ++n) r = i, i = this.data[n], this.pyrdown(r, i); + } +}, k.transform = m, k.matrix_t = p, k.keypoint_t = h, k.fast_corners = class extends k { + constructor() { + super(), this.offsets16 = new Int32Array([ + 0, + 3, + 1, + 3, + 2, + 2, + 3, + 1, + 3, + 0, + 3, + -1, + 2, + -2, + 1, + -3, + 0, + -3, + -1, + -3, + -2, + -2, + -3, + -1, + -3, + 0, + -3, + 1, + -2, + 2, + -1, + 3 + ]), this.threshold_tab = /* @__PURE__ */ new Uint8Array(512), this._threshold = 20, this.pixel_off = /* @__PURE__ */ new Int32Array(25), this.score_diff = /* @__PURE__ */ new Int32Array(25); + } + set_threshold(e) { + this._threshold = Math.min(Math.max(e, 0), 255); + for (let e = -255; e <= 255; ++e) this.threshold_tab[e + 255] = e < -this._threshold ? 1 : e > this._threshold ? 2 : 0; + return this._threshold; + } + detect(e, t, n) { + n === void 0 && (n = 3); + let r = e.data, i = e.cols, a = e.rows, o = 0, s = 0, c = 0, l = 0, d = 0, f = 0, p = this.cache.get_buffer(3 * i), m = this.cache.get_buffer((i + 1) * 3 << 2), h = p.u8, g = m.i32, _ = this.pixel_off, v = this.score_diff, y = Math.max(3, n), b = Math.min(a - 2, a - n), x = Math.max(3, n), S = Math.min(i - 3, i - n), C = 0, w = 0, T, E = u, D = this.threshold_tab, O = this._threshold, k = 0, A = 0, j = 0, M = 0, N = 0, P = 0, F = 0, I = 0, L = 0, R = 0, z = 0, B = 0; + this._cmp_offsets(_, i, 16); + let V = _[0], ee = _[1], H = _[2], U = _[3], W = _[4], G = _[5], K = _[6], te = _[7], q = _[8], ne = _[9], J = _[10], Y = _[11], X = _[12], Z = _[13], Q = _[14], re = _[15]; + for (o = 0; o < i * 3; ++o) h[o] = 0; + for (o = y; o < b; ++o) { + for (F = o * i + x | 0, f = (o - 3) % 3, P = f * i | 0, N = f * (i + 1) | 0, s = 0; s < i; ++s) h[P + s] = 0; + if (M = 0, o < b - 1) { + for (s = x; s < S; ++s, ++F) if (k = r[F], A = -k + 255, j = D[A + r[F + V]] | D[A + r[F + q]], j != 0 && (j &= D[A + r[F + H]] | D[A + r[F + J]], j &= D[A + r[F + W]] | D[A + r[F + X]], j &= D[A + r[F + K]] | D[A + r[F + Q]], j != 0)) { + if (j &= D[A + r[F + ee]] | D[A + r[F + ne]], j &= D[A + r[F + U]] | D[A + r[F + Y]], j &= D[A + r[F + G]] | D[A + r[F + Z]], j &= D[A + r[F + te]] | D[A + r[F + re]], j & 1) for (l = k - O, C = 0, c = 0; c < 25; ++c) if (d = r[F + _[c]], d < l) { + if (++C, C > 8) { + ++M, g[N + M] = s, h[P + s] = E(r, F, _, v, O); + break; + } + } else C = 0; + if (j & 2) for (l = k + O, C = 0, c = 0; c < 25; ++c) if (d = r[F + _[c]], d > l) { + if (++C, C > 8) { + ++M, g[N + M] = s, h[P + s] = E(r, F, _, v, O); + break; + } + } else C = 0; + } + } + if (g[N + i] = M, o != y) for (f = (o - 4 + 3) % 3, I = f * i | 0, N = f * (i + 1) | 0, f = (o - 5 + 3) % 3, L = f * i | 0, M = g[N + i], c = 0; c < M; ++c) s = g[N + c], R = s + 1 | 0, z = s - 1 | 0, B = h[I + s], B > h[I + R] && B > h[I + z] && B > h[L + z] && B > h[L + s] && B > h[L + R] && B > h[P + z] && B > h[P + s] && B > h[P + R] && (T = t[w], T.x = s, T.y = o - 1, T.score = B, w++); + } + return this.cache.put_buffer(p), this.cache.put_buffer(m), w; + } + _cmp_offsets(e, t, n) { + let r = 0, i = this.offsets16; + for (; r < n; ++r) e[r] = i[r << 1] + i[(r << 1) + 1] * t; + for (; r < 25; ++r) e[r] = e[r - n]; + } +}, k.imgproc = class extends k { + constructor() { + super(); + } + grayscale(e, t, n, r, i) { + i === void 0 && (i = f.COLOR_RGBA2GRAY); + let a = 0, o = 0, s = 0, c = 0, l = 0, u = 0, d = 4899, p = 9617, m = 1868, h = 4; + (i == f.COLOR_BGRA2GRAY || i == f.COLOR_BGR2GRAY) && (d = 1868, m = 4899), (i == f.COLOR_RGB2GRAY || i == f.COLOR_BGR2GRAY) && (h = 3); + let g = h << 1, _ = h * 3 | 0; + r.resize(t, n, 1); + let v = r.data; + for (o = 0; o < n; ++o, c += t, s += t * h) { + for (a = 0, l = s, u = c; a <= t - 4; a += 4, l += h << 2, u += 4) v[u] = e[l] * d + e[l + 1] * p + e[l + 2] * m + 8192 >> 14, v[u + 1] = e[l + h] * d + e[l + h + 1] * p + e[l + h + 2] * m + 8192 >> 14, v[u + 2] = e[l + g] * d + e[l + g + 1] * p + e[l + g + 2] * m + 8192 >> 14, v[u + 3] = e[l + _] * d + e[l + _ + 1] * p + e[l + _ + 2] * m + 8192 >> 14; + for (; a < t; ++a, ++u, l += h) v[u] = e[l] * d + e[l + 1] * p + e[l + 2] * m + 8192 >> 14; + } + } + resample(e, t, n, r) { + let o = e.rows, s = e.cols; + o > r && s > n && (t.resize(n, r, e.channel), e.type & f.U8_t && t.type & f.U8_t && o * s / (r * n) < 256 ? i(e, t, this.cache, n, r) : a(e, t, this.cache, n, r)); + } + box_blur_gray(e, t, n, r) { + r === void 0 && (r = 0); + let i = e.cols, a = e.rows, o = a << 1, s = i << 1, c = 0, l = 0, u = 0, d = 0, p = (n << 1) + 1 | 0, m = n + 1 | 0, h = m + 1 | 0, g = r & f.BOX_BLUR_NOSCALE ? 1 : 1 / (p * p), _ = this.cache.get_buffer(i * a << 2), v = 0, y = 0, b = 0, x = 0, S = 0, C = _.i32, w = e.data, T = 0; + for (t.resize(i, a, e.channel), u = 0; u < a; ++u) { + for (y = u, v = m * w[b], c = b + 1 | 0, d = b + n | 0; c <= d; ++c) v += w[c]; + for (x = b + m | 0, S = b, T = w[S], l = 0; l < n; ++l, y += a) C[y] = v, v += w[x] - T, x++; + for (; l < i - h; l += 2, y += o) C[y] = v, v += w[x] - w[S], C[y + a] = v, v += w[x + 1] - w[S + 1], x += 2, S += 2; + for (; l < i - m; ++l, y += a) C[y] = v, v += w[x] - w[S], x++, S++; + for (T = w[x - 1]; l < i; ++l, y += a) C[y] = v, v += T - w[S], S++; + b += i; + } + if (b = 0, w = t.data, g == 1) for (u = 0; u < i; ++u) { + for (y = u, v = m * C[b], c = b + 1 | 0, d = b + n | 0; c <= d; ++c) v += C[c]; + for (x = b + m, S = b, T = C[S], l = 0; l < n; ++l, y += i) w[y] = v, v += C[x] - T, x++; + for (; l < a - h; l += 2, y += s) w[y] = v, v += C[x] - C[S], w[y + i] = v, v += C[x + 1] - C[S + 1], x += 2, S += 2; + for (; l < a - m; ++l, y += i) w[y] = v, v += C[x] - C[S], x++, S++; + for (T = C[x - 1]; l < a; ++l, y += i) w[y] = v, v += T - C[S], S++; + b += a; + } + else for (u = 0; u < i; ++u) { + for (y = u, v = m * C[b], c = b + 1 | 0, d = b + n | 0; c <= d; ++c) v += C[c]; + for (x = b + m, S = b, T = C[S], l = 0; l < n; ++l, y += i) w[y] = v * g, v += C[x] - T, x++; + for (; l < a - h; l += 2, y += s) w[y] = v * g, v += C[x] - C[S], w[y + i] = v * g, v += C[x + 1] - C[S + 1], x += 2, S += 2; + for (; l < a - m; ++l, y += i) w[y] = v * g, v += C[x] - C[S], x++, S++; + for (T = C[x - 1]; l < a; ++l, y += i) w[y] = v * g, v += T - C[S], S++; + b += a; + } + this.cache.put_buffer(_); + } + gaussian_blur(e, t, n, r) { + let i = new k.math(); + r === void 0 && (r = 0), n === void 0 && (n = 0), n = n == 0 ? Math.max(1, 4 * r + 1 - 1e-8) * 2 + 1 | 0 : n; + let a = n >> 1, c = e.cols, l = e.rows, u = e.type, d = u & f.U8_t; + t.resize(c, l, e.channel); + let p = e.data, m = t.data, h, g, _ = n + Math.max(l, c) | 0, v = this.cache.get_buffer(_ << 2), y = this.cache.get_buffer(n << 2); + d ? (h = v.i32, g = y.i32) : u & f.S32_t ? (h = v.i32, g = y.f32) : (h = v.f32, g = y.f32), i.get_gaussian_kernel(n, r, g, u), d ? o(h, p, m, c, l, g, n, a) : s(h, p, m, c, l, g, n, a), this.cache.put_buffer(v), this.cache.put_buffer(y); + } + hough_transform(e, t, n, r) { + let i, a, o = e.data, s = e.cols, c = e.rows, l = s, u = Math.round((Math.PI - 0) / n), d = Math.round(((s + c) * 2 + 1) / t), f = 1 / t, p = new Int32Array((u + 2) * (d + 2)), m = new Float32Array(u), h = new Float32Array(u), g = 0, _ = 0; + for (; g < u; g++) m[g] = Math.sin(_) * f, h[g] = Math.cos(_) * f, _ += n; + for (a = 0; a < c; a++) for (let e = 0; e < s; e++) if (o[a * l + e] != 0) for (g = 0; g < u; g++) i = Math.round(e * h[g] + a * m[g]), i += (d - 1) / 2, p[(g + 1) * (d + 2) + i + 1] += 1; + let v = []; + for (i = 0; i < d; i++) for (g = 0; g < u; g++) { + let e = (g + 1) * (d + 2) + i + 1; + p[e] > r && p[e] > p[e - 1] && p[e] >= p[e + 1] && p[e] > p[e - d - 2] && p[e] >= p[e + d + 2] && v.push(e); + } + v.sort(function(e, t) { + return p[e] > p[t] || p[e] == p[t] && e < t; + }); + let y = Math.min(u * d, v.length), b = 1 / (d + 2), x = []; + for (a = 0; a < y; a++) { + let e = v[a]; + g = Math.floor(e * b) - 1, i = e - (g + 1) * (d + 2) - 1; + let r = (i - (d - 1) * .5) * t, o = g * n; + x.push([r, o]); + } + return x; + } + pyrdown(e, t, n, r) { + n === void 0 && (n = 0), r === void 0 && (r = 0); + let i = e.cols, a = e.rows, o = i >> 1, s = a >> 1, c = o - (n << 1), l = s - (r << 1), u = 0, d = 0, f = n + r * i, p = 0, m = 0, h = 0; + t.resize(o, s, e.channel); + let g = e.data, _ = t.data; + for (d = 0; d < l; ++d) { + for (p = f, h = m, u = 0; u <= c - 2; u += 2, h += 2, p += 4) _[h] = g[p] + g[p + 1] + g[p + i] + g[p + i + 1] + 2 >> 2, _[h + 1] = g[p + 2] + g[p + 3] + g[p + i + 2] + g[p + i + 3] + 2 >> 2; + for (; u < c; ++u, ++h, p += 2) _[h] = g[p] + g[p + 1] + g[p + i] + g[p + i + 1] + 2 >> 2; + f += i << 1, m += o; + } + } + scharr_derivatives(e, t) { + let n = e.cols, r = e.rows, i = n << 1, a = 0, o = 0, s = 0, c, l, u, d, p, m, h = 0, g = 0, _ = 0, v = 0, y, b; + t.resize(n, r, 2); + let x = e.data, S = t.data, C = this.cache.get_buffer(n + 2 << 2), w = this.cache.get_buffer(n + 2 << 2); + for (e.type & f.U8_t || e.type & f.S32_t ? (y = C.i32, b = w.i32) : (y = C.f32, b = w.f32); o < r; ++o, g += n) { + for (h = (o > 0 ? o - 1 : 1) * n | 0, _ = (o < r - 1 ? o + 1 : r - 2) * n | 0, v = o * i | 0, a = 0, s = 1; a <= n - 2; a += 2, s += 2) c = x[h + a], l = x[_ + a], y[s] = (c + l) * 3 + x[g + a] * 10, b[s] = l - c, c = x[h + a + 1], l = x[_ + a + 1], y[s + 1] = (c + l) * 3 + x[g + a + 1] * 10, b[s + 1] = l - c; + for (; a < n; ++a, ++s) c = x[h + a], l = x[_ + a], y[s] = (c + l) * 3 + x[g + a] * 10, b[s] = l - c; + for (a = n + 1 | 0, y[0] = y[1], y[a] = y[n], b[0] = b[1], b[a] = b[n], a = 0; a <= n - 4; a += 4) c = b[a + 2], l = b[a + 1], u = b[a + 3], d = b[a + 4], p = y[a + 2], m = y[a + 3], S[v++] = p - y[a], S[v++] = (c + b[a]) * 3 + l * 10, S[v++] = m - y[a + 1], S[v++] = (u + l) * 3 + c * 10, S[v++] = y[a + 4] - p, S[v++] = (d + c) * 3 + u * 10, S[v++] = y[a + 5] - m, S[v++] = (b[a + 5] + u) * 3 + d * 10; + for (; a < n; ++a) S[v++] = y[a + 2] - y[a], S[v++] = (b[a + 2] + b[a]) * 3 + b[a + 1] * 10; + } + this.cache.put_buffer(C), this.cache.put_buffer(w); + } + sobel_derivatives(e, t) { + let n = e.cols, r = e.rows, i = n << 1, a = 0, o = 0, s = 0, c, l, u, d, p, m, h = 0, g = 0, _ = 0, v = 0, y, b; + t.resize(n, r, 2); + let x = e.data, S = t.data, C = this.cache.get_buffer(n + 2 << 2), w = this.cache.get_buffer(n + 2 << 2); + for (e.type & f.U8_t || e.type & f.S32_t ? (y = C.i32, b = w.i32) : (y = C.f32, b = w.f32); o < r; ++o, g += n) { + for (h = (o > 0 ? o - 1 : 1) * n | 0, _ = (o < r - 1 ? o + 1 : r - 2) * n | 0, v = o * i | 0, a = 0, s = 1; a <= n - 2; a += 2, s += 2) c = x[h + a], l = x[_ + a], y[s] = c + l + x[g + a] * 2, b[s] = l - c, c = x[h + a + 1], l = x[_ + a + 1], y[s + 1] = c + l + x[g + a + 1] * 2, b[s + 1] = l - c; + for (; a < n; ++a, ++s) c = x[h + a], l = x[_ + a], y[s] = c + l + x[g + a] * 2, b[s] = l - c; + for (a = n + 1 | 0, y[0] = y[1], y[a] = y[n], b[0] = b[1], b[a] = b[n], a = 0; a <= n - 4; a += 4) c = b[a + 2], l = b[a + 1], u = b[a + 3], d = b[a + 4], p = y[a + 2], m = y[a + 3], S[v++] = p - y[a], S[v++] = c + b[a] + l * 2, S[v++] = m - y[a + 1], S[v++] = u + l + c * 2, S[v++] = y[a + 4] - p, S[v++] = d + c + u * 2, S[v++] = y[a + 5] - m, S[v++] = b[a + 5] + u + d * 2; + for (; a < n; ++a) S[v++] = y[a + 2] - y[a], S[v++] = b[a + 2] + b[a] + b[a + 1] * 2; + } + this.cache.put_buffer(C), this.cache.put_buffer(w); + } + compute_integral_image(e, t, n, r) { + let i = e.cols | 0, a = e.rows | 0, o = e.data, s = i + 1 | 0, c = 0, l = 0, u = 0, d = 0, f = 0, p = 0, m = 0, h = 0; + if (t && n) { + for (; f < s; ++f) t[f] = 0, n[f] = 0; + for (u = s + 1 | 0, d = 1, f = 0, h = 0; f < a; ++f, ++u, ++d) { + for (c = l = 0, p = 0; p <= i - 2; p += 2, h += 2, u += 2, d += 2) m = o[h], c += m, l += m * m, t[u] = t[d] + c, n[u] = n[d] + l, m = o[h + 1], c += m, l += m * m, t[u + 1] = t[d + 1] + c, n[u + 1] = n[d + 1] + l; + for (; p < i; ++p, ++h, ++u, ++d) m = o[h], c += m, l += m * m, t[u] = t[d] + c, n[u] = n[d] + l; + } + } else if (t) { + for (; f < s; ++f) t[f] = 0; + for (u = s + 1 | 0, d = 1, f = 0, h = 0; f < a; ++f, ++u, ++d) { + for (c = 0, p = 0; p <= i - 2; p += 2, h += 2, u += 2, d += 2) c += o[h], t[u] = t[d] + c, c += o[h + 1], t[u + 1] = t[d + 1] + c; + for (; p < i; ++p, ++h, ++u, ++d) c += o[h], t[u] = t[d] + c; + } + } else if (n) { + for (; f < s; ++f) n[f] = 0; + for (u = s + 1 | 0, d = 1, f = 0, h = 0; f < a; ++f, ++u, ++d) { + for (l = 0, p = 0; p <= i - 2; p += 2, h += 2, u += 2, d += 2) m = o[h], l += m * m, n[u] = n[d] + l, m = o[h + 1], l += m * m, n[u + 1] = n[d + 1] + l; + for (; p < i; ++p, ++h, ++u, ++d) m = o[h], l += m * m, n[u] = n[d] + l; + } + } + if (r) { + for (f = 0; f < s; ++f) r[f] = 0; + for (u = s + 1 | 0, d = 0, f = 0, h = 0; f < a; ++f, ++u, ++d) { + for (p = 0; p <= i - 2; p += 2, h += 2, u += 2, d += 2) r[u] = o[h] + r[d], r[u + 1] = o[h + 1] + r[d + 1]; + for (; p < i; ++p, ++h, ++u, ++d) r[u] = o[h] + r[d]; + } + for (u = s + i | 0, d = i, f = 0; f < a; ++f, u += s, d += s) r[u] += r[d]; + for (p = i - 1; p > 0; --p) for (u = p + a * s, d = u - s, f = a; f > 0; --f, u -= s, d -= s) r[u] += r[d] + r[d + 1]; + } + } + equalize_histogram(e, t) { + let n = e.cols, r = e.rows, i = e.data; + t.resize(n, r, e.channel); + let a = t.data, o = n * r, s = 0, c = 0, l, u, d = this.cache.get_buffer(1024); + for (l = d.i32; s < 256; ++s) l[s] = 0; + for (s = 0; s < o; ++s) ++l[i[s]]; + for (c = l[0], s = 1; s < 256; ++s) c = l[s] += c; + for (u = 255 / o, s = 0; s < o; ++s) a[s] = l[i[s]] * u + .5 | 0; + this.cache.put_buffer(d); + } + canny(e, t, n, r) { + let i = e.cols, a = e.rows; + e.data, t.resize(i, a, e.channel); + let o = t.data, s = 0, c = 0, l = 0, u = i << 1, d = 0, m = 0, h = 0, g = 0, _ = 0, v = 0, y = 0, b = 0, x = this.cache.get_buffer(a * u << 2), S = this.cache.get_buffer(3 * (i + 2) << 2), C = this.cache.get_buffer((a + 2) * (i + 2) << 2), w = this.cache.get_buffer(a * i << 2), T = S.i32, E = C.i32, D = w.i32, O = x.i32, k = new p(i, a, f.S32C2_t, x.data), A = 1, j = i + 2 + 1 | 0, M = 2 * (i + 2) + 1 | 0, N = i + 2 | 0, P = N + 1 | 0, F = 0; + for (this.sobel_derivatives(e, k), n > r && (s = n, n = r, r = s), s = 3 * (i + 2) | 0; --s >= 0;) T[s] = 0; + for (s = (a + 2) * (i + 2) | 0; --s >= 0;) E[s] = 0; + for (; c < i; ++c, l += 2) g = O[l], _ = O[l + 1], T[j + c] = (g ^ g >> 31) - (g >> 31) + ((_ ^ _ >> 31) - (_ >> 31)); + for (s = 1; s <= a; ++s, l += u) { + if (s == a) for (c = M + i; --c >= M;) T[c] = 0; + else for (c = 0; c < i; c++) g = O[l + (c << 1)], _ = O[l + (c << 1) + 1], T[M + c] = (g ^ g >> 31) - (g >> 31) + ((_ ^ _ >> 31) - (_ >> 31)); + for (d = l - u | 0, E[P - 1] = 0, m = 0, c = 0; c < i; ++c, d += 2) { + if (h = T[j + c], h > n) { + if (g = O[d], _ = O[d + 1], v = g ^ _, g = (g ^ g >> 31) - (g >> 31) | 0, _ = (_ ^ _ >> 31) - (_ >> 31) | 0, y = g * 13573, b = y + (g + g << 15), _ <<= 15, _ < y) { + if (h > T[j + c - 1] && h >= T[j + c + 1]) { + h > r && !m && E[P + c - N] != 2 ? (E[P + c] = 2, m = 1, D[F++] = P + c) : E[P + c] = 1; + continue; + } + } else if (_ > b) { + if (h > T[A + c] && h >= T[M + c]) { + h > r && !m && E[P + c - N] != 2 ? (E[P + c] = 2, m = 1, D[F++] = P + c) : E[P + c] = 1; + continue; + } + } else if (v = v < 0 ? -1 : 1, h > T[A + c - v] && h > T[M + c + v]) { + h > r && !m && E[P + c - N] != 2 ? (E[P + c] = 2, m = 1, D[F++] = P + c) : E[P + c] = 1; + continue; + } + } + E[P + c] = 0, m = 0; + } + E[P + i] = 0, P += N, c = A, A = j, j = M, M = c; + } + for (c = P - N - 1, s = 0; s < N; ++s, ++c) E[c] = 0; + for (; F > 0;) P = D[--F], P -= N + 1, E[P] == 1 && (E[P] = 2, D[F++] = P), P += 1, E[P] == 1 && (E[P] = 2, D[F++] = P), P += 1, E[P] == 1 && (E[P] = 2, D[F++] = P), P += N, E[P] == 1 && (E[P] = 2, D[F++] = P), P -= 2, E[P] == 1 && (E[P] = 2, D[F++] = P), P += N, E[P] == 1 && (E[P] = 2, D[F++] = P), P += 1, E[P] == 1 && (E[P] = 2, D[F++] = P), P += 1, E[P] == 1 && (E[P] = 2, D[F++] = P); + for (P = N + 1, A = 0, s = 0; s < a; ++s, P += N) for (c = 0; c < i; ++c) o[A++] = Number(E[P + c] == 2) * 255; + this.cache.put_buffer(x), this.cache.put_buffer(S), this.cache.put_buffer(C), this.cache.put_buffer(w); + } + warp_perspective(e, t, n, r) { + r === void 0 && (r = 0); + let i = e.cols | 0, a = e.rows | 0, o = t.cols | 0, s = t.rows | 0, c = e.data, l = t.data, u = 0, d = 0, f = 0, p = 0, m = 0, h = 0, g = 0, _ = 0, v = 0, y = 0, b = 0, x = 0, S = 0, C = 0, w = 0, T = n.data, E = T[0], D = T[1], O = T[2], k = T[3], A = T[4], j = T[5], M = T[6], N = T[7], P = T[8]; + for (let e = 0; d < s; ++d) for (_ = D * d + O, v = A * d + j, y = N * d + P, u = 0; u < o; ++u, ++e, _ += E, v += k, y += M) b = 1 / y, h = _ * b, g = v * b, p = h | 0, m = g | 0, h > 0 && g > 0 && p < i - 1 && m < a - 1 ? (x = Math.max(h - p, 0), S = Math.max(g - m, 0), f = i * m + p | 0, C = c[f] + x * (c[f + 1] - c[f]), w = c[f + i] + x * (c[f + i + 1] - c[f + i]), l[e] = C + S * (w - C)) : l[e] = r; + } + warp_affine(e, t, n, r) { + r === void 0 && (r = 0); + let i = e.cols, a = e.rows, o = t.cols, s = t.rows, c = e.data, l = t.data, u = 0, d = 0, f = 0, p = 0, m = 0, h = 0, g = 0, _ = 0, v = 0, y = 0, b = 0, x = n.data, S = x[0], C = x[1], w = x[2], T = x[3], E = x[4], D = x[5]; + for (let e = 0; d < s; ++d) for (h = C * d + w, g = E * d + D, u = 0; u < o; ++u, ++e, h += S, g += T) p = h | 0, m = g | 0, p >= 0 && m >= 0 && p < i - 1 && m < a - 1 ? (_ = h - p, v = g - m, f = i * m + p, y = c[f] + _ * (c[f + 1] - c[f]), b = c[f + i] + _ * (c[f + i + 1] - c[f + i]), l[e] = y + v * (b - y)) : l[e] = r; + } + skindetector(e, t) { + let n, r, i, a, o = e.width * e.height; + for (; o--;) a = o * 4, n = e.data[a], r = e.data[a + 1], i = e.data[a + 2], n > 95 && r > 40 && i > 20 && n > r && n > i && n - Math.min(r, i) > 15 && Math.abs(n - r) > 15 ? t[o] = 255 : t[o] = 0; + } +}, k.math = class extends k { + constructor() { + super(), this.qsort_stack = /* @__PURE__ */ new Int32Array(96); + } + get_gaussian_kernel(e, t, n, r) { + let i = 0, a = 0, o = 0, s = 0, c = 0, l = 0, u = this.cache.get_buffer(e << 2), d = u.f32; + if ((e & 1) == 1 && e <= 7 && t <= 0) switch (e >> 1) { + case 0: + d[0] = 1, l = 1; + break; + case 1: + d[0] = .25, d[1] = .5, d[2] = .25, l = 1; + break; + case 2: + d[0] = .0625, d[1] = .25, d[2] = .375, d[3] = .25, d[4] = .0625, l = 1; + break; + case 3: + d[0] = .03125, d[1] = .109375, d[2] = .21875, d[3] = .28125, d[4] = .21875, d[5] = .109375, d[6] = .03125, l = 1; + break; + } + else for (s = t > 0 ? t : ((e - 1) * .5 - 1) * .3 + .8, c = -.5 / (s * s); i < e; ++i) a = i - (e - 1) * .5, o = Math.exp(c * a * a), d[i] = o, l += o; + if (r & f.U8_t) for (l = 256 / l, i = 0; i < e; ++i) n[i] = d[i] * l + .5 | 0; + else for (l = 1 / l, i = 0; i < e; ++i) n[i] = d[i] * l; + this.cache.put_buffer(u); + } + perspective_4point_transform(e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g) { + console.warn("⚠️⚠️⚠️ This method is deprecated ad will be removed in the next releases, use transform.perspective_4point_transform() instead. ⚠️⚠️⚠️"); + let _ = t, v = l, y = o, b = _ * v * y, x = m, S = _ * x, C = v * S, w = u, T = _ * w, E = a, D = n, O = p, k = D * O, A = k * E, j = O * E * w, M = O * y, N = O * w, P = v * y, F = x * v, I = x * E, L = w * E, R = 1 / (M - N - P + F - I + L), z = _ * O, B = D * E, V = y * _, ee = x * V, H = D * v, U = k * w, W = D * w * E, G = y * x * v, K = x * D, te = -(C - b + T * E - E * S - k * v + A - j + M * v) * R, q = (b - C - z * y + z * w + A - v * B + I * v - j) * R, ne = _, J = (-w * S + ee + H * y - k * y + U - W + I * w - G) * R, Y = (-ee + V * w - K * v + U - W + K * E + G - M * w) * R, X = D, Z = (-T + V + H - B + N - M - F + I) * R, Q = (-S + T + k - H + I - L - M + P) * R; + _ = r, v = d, y = c, b = _ * v * y, x = g, S = _ * x, C = v * S, w = f, T = _ * w, E = s, D = i, O = h, k = D * O, A = k * E, j = O * E * w, M = O * y, N = O * w, P = v * y, F = x * v, I = x * E, L = w * E, R = 1 / (M - N - P + F - I + L), z = _ * O, B = D * E, V = y * _, ee = x * V, H = D * v, U = k * w, W = D * w * E, G = y * x * v, K = x * D; + let re = -(C - b + T * E - E * S - k * v + A - j + M * v) * R, ie = (b - C - z * y + z * w + A - v * B + I * v - j) * R, ae = _, oe = (-w * S + ee + H * y - k * y + U - W + I * w - G) * R, se = (-ee + V * w - K * v + U - W + K * E + G - M * w) * R, ce = D, le = (-T + V + H - B + N - M - F + I) * R, ue = (-S + T + k - H + I - L - M + P) * R; + v = Y - Q * X, y = te * Y, b = te * X, S = J * q, C = ne * J, T = q * Z; + let de = ne * Z; + O = 1 / (y - b * Q - S + C * Q + T * X - de * Y), A = -J + X * Z; + let fe = -J * Q + Y * Z; + L = -q + ne * Q; + let pe = te - de; + B = te * Q - T, V = -q * X + ne * Y; + let me = b - C, he = y - S; + W = v * O; + let ge = L * O, _e = V * O, $ = e.data; + $[0] = re * W + A * O * ie - fe * O * ae, $[1] = re * ge + pe * O * ie - B * O * ae, $[2] = -re * _e - me * O * ie + he * O * ae, $[3] = oe * W + A * O * se - fe * O * ce, $[4] = oe * ge + pe * O * se - B * O * ce, $[5] = -oe * _e - me * O * se + he * O * ce, $[6] = le * W + A * O * ue - fe * O, $[7] = le * ge + pe * O * ue - B * O, $[8] = -le * _e - me * O * ue + he * O; + } + qsort(e, t, n, r) { + let i, a, o, s, c = 0, l = 0, u = 0, d = 0, f = 0, p = 0, m = 0, h = 0, g = 0, _ = 0, v = 0, y = 0, b = 0, x = 0, S = 0, C = 0, w = 0, T = 0, E = this.qsort_stack; + if (!(n - t + 1 <= 1)) for (E[0] = t, E[1] = n; c >= 0;) for (l = E[c << 1], u = E[(c << 1) + 1], c--;;) if (f = u - l + 1, f <= 7) { + for (m = l + 1; m <= u; m++) for (h = m; h > l && r(e[h], e[h - 1]); h--) i = e[h], e[h] = e[h - 1], e[h - 1] = i; + break; + } else { + for (T = 0, _ = l, y = u, x = l + (f >> 1), f > 40 && (g = f >> 3, S = l, C = l + g, w = l + (g << 1), a = e[S], o = e[C], s = e[w], l = r(a, o) ? r(o, s) ? C : r(a, s) ? w : S : r(s, o) ? C : r(a, s) ? S : w, S = x - g, C = x, w = x + g, a = e[S], o = e[C], s = e[w], x = r(a, o) ? r(o, s) ? C : r(a, s) ? w : S : r(s, o) ? C : r(a, s) ? S : w, S = u - (g << 1), C = u - g, w = u, a = e[S], o = e[C], s = e[w], u = r(a, o) ? r(o, s) ? C : r(a, s) ? w : S : r(s, o) ? C : r(a, s) ? S : w), S = l, C = x, w = u, a = e[S], o = e[C], s = e[w], x = r(a, o) ? r(o, s) ? C : r(a, s) ? w : S : r(s, o) ? C : r(a, s) ? S : w, x != _ && (i = e[x], e[x] = e[_], e[_] = i, x = _), l = v = _ + 1, u = b = y, a = e[x];;) { + for (; l <= u && !r(a, e[l]);) r(e[l], a) || (l > v && (i = e[v], e[v] = e[l], e[l] = i), T = 1, v++), l++; + for (; l <= u && !r(e[u], a);) r(a, e[u]) || (u < b && (i = e[b], e[b] = e[u], e[u] = i), T = 1, b--), u--; + if (l > u) break; + i = e[l], e[l] = e[u], e[u] = i, T = 1, l++, u--; + } + if (T == 0) { + for (l = _, u = y, m = l + 1; m <= u; m++) for (h = m; h > l && r(e[h], e[h - 1]); h--) i = e[h], e[h] = e[h - 1], e[h - 1] = i; + break; + } + for (f = Math.min(v - _, l - v), p = l - f | 0, d = 0; d < f; ++d, ++p) i = e[_ + d], e[_ + d] = e[p], e[p] = i; + for (f = Math.min(y - b, b - u), p = y - f + 1 | 0, d = 0; d < f; ++d, ++p) i = e[l + d], e[l + d] = e[p], e[p] = i; + if (f = l - v, p = b - u, f > 1) p > 1 ? f > p ? (++c, E[c << 1] = _, E[(c << 1) + 1] = _ + f - 1, l = y - p + 1, u = y) : (++c, E[c << 1] = y - p + 1, E[(c << 1) + 1] = y, l = _, u = _ + f - 1) : (l = _, u = _ + f - 1); + else if (p > 1) l = y - p + 1, u = y; + else break; + } + } + median(e, t, n) { + let r, i = 0, a = 0, o = 0, s = t + n >> 1; + for (;;) { + if (n <= t) return e[s]; + if (n == t + 1) return e[t] > e[n] && (r = e[t], e[t] = e[n], e[n] = r), e[s]; + for (i = t + n >> 1, e[i] > e[n] && (r = e[i], e[i] = e[n], e[n] = r), e[t] > e[n] && (r = e[t], e[t] = e[n], e[n] = r), e[i] > e[t] && (r = e[i], e[i] = e[t], e[t] = r), a = t + 1, r = e[i], e[i] = e[a], e[a] = r, o = n;;) { + do + ++a; + while (e[t] > e[a]); + do + --o; + while (e[o] > e[t]); + if (o < a) break; + r = e[a], e[a] = e[o], e[o] = r; + } + r = e[t], e[t] = e[o], e[o] = r, o <= s ? t = a : o >= s && (n = o - 1); + } + return 0; + } +}, k.matmath = d, k.linalg = class extends k { + constructor() { + super(), this.matmath = new d(); + } + JacobiImpl(e, t, n, r, i, a) { + let o = f.EPSILON, s = 0, u = 0, d = 0, p = 0, m = 0, h = 0, g = 0, _ = 0, v = 0, y = a * a * 30, b = 0, x = 0, S = 0, C = 0, w = 0, T = 0, E = 0, D = 0, O = 0, k = this.cache.get_buffer(a << 2), A = this.cache.get_buffer(a << 2), j = k.i32, M = A.i32; + if (r) for (; s < a; s++) { + for (d = s * i, u = 0; u < a; u++) r[d + u] = 0; + r[d + s] = 1; + } + for (d = 0; d < a; d++) { + if (n[d] = e[(t + 1) * d], d < a - 1) { + for (p = d + 1, b = Math.abs(e[t * d + p]), s = d + 2; s < a; s++) x = Math.abs(e[t * d + s]), b < x && (b = x, p = s); + j[d] = p; + } + if (d > 0) { + for (p = 0, b = Math.abs(e[d]), s = 1; s < d; s++) x = Math.abs(e[t * s + d]), b < x && (b = x, p = s); + M[d] = p; + } + } + if (a > 1) for (; v < y; v++) { + for (d = 0, b = Math.abs(e[j[0]]), s = 1; s < a - 1; s++) x = Math.abs(e[t * s + j[s]]), b < x && (b = x, d = s); + for (m = j[d], s = 1; s < a; s++) x = Math.abs(e[t * M[s] + s]), b < x && (b = x, d = M[s], m = s); + if (S = e[t * d + m], Math.abs(S) <= o) break; + for (C = (n[m] - n[d]) * .5, w = Math.abs(C) + l(S, C), T = l(S, w), E = w / T, T = S / T, w = S / w * S, C < 0 && (T = -T, w = -w), e[t * d + m] = 0, n[d] -= w, n[m] += w, s = 0; s < d; s++) g = t * s + d, _ = t * s + m, D = e[g], O = e[_], e[g] = D * E - O * T, e[_] = D * T + O * E; + for (s = d + 1; s < m; s++) g = t * d + s, _ = t * s + m, D = e[g], O = e[_], e[g] = D * E - O * T, e[_] = D * T + O * E; + for (s = m + 1, g = t * d + s, _ = t * m + s; s < a; s++, g++, _++) D = e[g], O = e[_], e[g] = D * E - O * T, e[_] = D * T + O * E; + if (r) for (g = i * d, _ = i * m, s = 0; s < a; s++, g++, _++) D = r[g], O = r[_], r[g] = D * E - O * T, r[_] = D * T + O * E; + for (u = 0; u < 2; u++) { + if (h = u == 0 ? d : m, h < a - 1) { + for (p = h + 1, b = Math.abs(e[t * h + p]), s = h + 2; s < a; s++) x = Math.abs(e[t * h + s]), b < x && (b = x, p = s); + j[h] = p; + } + if (h > 0) { + for (p = 0, b = Math.abs(e[h]), s = 1; s < h; s++) x = Math.abs(e[t * s + h]), b < x && (b = x, p = s); + M[h] = p; + } + } + } + for (d = 0; d < a - 1; d++) { + for (p = d, s = d + 1; s < a; s++) n[p] < n[s] && (p = s); + if (d != p && (c(n, p, d, b), r)) for (s = 0; s < a; s++) c(r, i * p + s, i * d + s, b); + } + this.cache.put_buffer(k), this.cache.put_buffer(A); + } + JacobiSVDImpl(e, t, n, r, i, a, o, s) { + let u = f.EPSILON * 2, d = f.FLT_MIN, p = 0, m = 0, h = 0, g = 0, _ = Math.max(a, 30), v = 0, y = 0, b = 0, x = 0, S = 0, C = 0, w = 0, T = 0, E = 0, D = 0, O = 0, k = 0, A = 0, j = 0, M = 0, N = 0, P = 0, F = 4660, I = 0, L = 0, R = 0, z = this.cache.get_buffer(o << 3), B = z.f64; + for (; p < o; p++) { + for (h = 0, O = 0; h < a; h++) T = e[p * t + h], O += T * T; + if (B[p] = O, r) { + for (h = 0; h < o; h++) r[p * i + h] = 0; + r[p * i + p] = 1; + } + } + for (; g < _; g++) { + for (S = 0, p = 0; p < o - 1; p++) for (m = p + 1; m < o; m++) { + for (v = p * t | 0, y = m * t | 0, M = B[p], N = 0, P = B[m], h = 2, N += e[v] * e[y], N += e[v + 1] * e[y + 1]; h < a; h++) N += e[v + h] * e[y + h]; + if (!(Math.abs(N) <= u * Math.sqrt(M * P))) { + for (N *= 2, k = M - P, A = l(N, k), k < 0 ? (j = (A - k) * .5, w = Math.sqrt(j / A), C = N / (A * w * 2)) : (C = Math.sqrt((A + k) / (A * 2)), w = N / (A * C * 2)), M = 0, P = 0, h = 2, E = C * e[v] + w * e[y], D = -w * e[v] + C * e[y], e[v] = E, e[y] = D, M += E * E, P += D * D, E = C * e[v + 1] + w * e[y + 1], D = -w * e[v + 1] + C * e[y + 1], e[v + 1] = E, e[y + 1] = D, M += E * E, P += D * D; h < a; h++) E = C * e[v + h] + w * e[y + h], D = -w * e[v + h] + C * e[y + h], e[v + h] = E, e[y + h] = D, M += E * E, P += D * D; + if (B[p] = M, B[m] = P, S = 1, r) for (b = p * i | 0, x = m * i | 0, h = 2, E = C * r[b] + w * r[x], D = -w * r[b] + C * r[x], r[b] = E, r[x] = D, E = C * r[b + 1] + w * r[x + 1], D = -w * r[b + 1] + C * r[x + 1], r[b + 1] = E, r[x + 1] = D; h < o; h++) E = C * r[b + h] + w * r[x + h], D = -w * r[b + h] + C * r[x + h], r[b + h] = E, r[x + h] = D; + } + } + if (S == 0) break; + } + for (p = 0; p < o; p++) { + for (h = 0, O = 0; h < a; h++) T = e[p * t + h], O += T * T; + B[p] = Math.sqrt(O); + } + for (p = 0; p < o - 1; p++) { + for (m = p, h = p + 1; h < o; h++) B[m] < B[h] && (m = h); + if (p != m && (c(B, p, m, O), r)) { + for (h = 0; h < a; h++) c(e, p * t + h, m * t + h, T); + for (h = 0; h < o; h++) c(r, p * i + h, m * i + h, T); + } + } + for (p = 0; p < o; p++) n[p] = B[p]; + if (!r) { + this.cache.put_buffer(z); + return; + } + for (p = 0; p < s; p++) { + for (O = p < o ? B[p] : 0; O <= d;) { + for (L = 1 / a, h = 0; h < a; h++) F = F * 214013 + 2531011, I = F >> 16 & 256 ? L : -L, e[p * t + h] = I; + for (g = 0; g < 2; g++) for (m = 0; m < p; m++) { + for (O = 0, h = 0; h < a; h++) O += e[p * t + h] * e[m * t + h]; + for (R = 0, h = 0; h < a; h++) T = e[p * t + h] - O * e[m * t + h], e[p * t + h] = T, R += Math.abs(T); + for (R = R ? 1 / R : 0, h = 0; h < a; h++) e[p * t + h] *= R; + } + for (O = 0, h = 0; h < a; h++) T = e[p * t + h], O += T * T; + O = Math.sqrt(O); + } + for (w = 1 / O, h = 0; h < a; h++) e[p * t + h] *= w; + } + this.cache.put_buffer(z); + } + lu_solve(e, t) { + let n = 0, r = 0, i = 0, a = 1, o = e.cols, s = e.data, l = t.data, u, d, p; + for (n = 0; n < o; n++) { + for (i = n, r = n + 1; r < o; r++) Math.abs(s[r * o + n]) > Math.abs(s[i * o + n]) && (i = r); + if (Math.abs(s[i * o + n]) < f.EPSILON) return 0; + if (i != n) { + for (r = n; r < o; r++) c(s, n * o + r, i * o + r, void 0); + c(l, n, i, void 0), a = -a; + } + for (d = -1 / s[n * o + n], r = n + 1; r < o; r++) { + for (u = s[r * o + n] * d, i = n + 1; i < o; i++) s[r * o + i] += u * s[n * o + i]; + l[r] += u * l[n]; + } + s[n * o + n] = -d; + } + for (n = o - 1; n >= 0; n--) { + for (p = l[n], i = n + 1; i < o; i++) p -= s[n * o + i] * l[i]; + l[n] = p * s[n * o + n]; + } + return 1; + } + cholesky_solve(e, t) { + let n = 0, r = 0, i = 0, a = 0, o = 0, s = 0, c = 0, l = e.cols, u = e.data, d = t.data, f, p; + for (n = 0; n < l; n++) for (p = 1, a = n * l, o = a, r = n; r < l; r++) { + for (f = u[o + n], i = 0; i < n; i++) f -= u[i * l + n] * u[o + i]; + if (r == n) { + if (u[o + n] = f, f == 0) return 0; + p = 1 / f; + } else u[a + r] = f, u[o + n] = f * p; + o += l; + } + for (a = 0, s = 0; s < l; s++) { + for (f = d[s], c = 0; c < s; c++) f -= u[a + c] * d[c]; + d[s] = f, a += l; + } + for (a = 0, s = 0; s < l; s++) d[s] /= u[a + s], a += l; + for (s = l - 1; s >= 0; s--) { + for (f = d[s], c = s + 1, a = c * l; c < l; c++) f -= u[a + s] * d[c], a += l; + d[s] = f; + } + return 1; + } + svd_decompose(e, t, n, r, i) { + i === void 0 && (i = 0); + let a = 0, o = 0, s = e.rows, c = e.cols, l = s, u = c, d = e.type | f.C1_t; + l < u && (a = 1, o = l, l = u, u = o); + let m = this.cache.get_buffer(l * l << 3), h = this.cache.get_buffer(u << 3), g = this.cache.get_buffer(u * u << 3), _ = new p(l, l, d, m.data), v = new p(1, u, d, h.data), y = new p(u, u, d, g.data); + if (a == 0) this.matmath.transpose(_, e); + else { + for (o = 0; o < c * s; o++) _.data[o] = e.data[o]; + for (; o < u * l; o++) _.data[o] = 0; + } + if (this.JacobiSVDImpl(_.data, l, v.data, y.data, u, l, u, l), t) { + for (o = 0; o < u; o++) t.data[o] = v.data[o]; + for (; o < c; o++) t.data[o] = 0; + } + if (a == 0) { + if (n && i & f.SVD_U_T) for (o = l * l; --o >= 0;) n.data[o] = _.data[o]; + else n && this.matmath.transpose(n, _); + if (r && i & f.SVD_V_T) for (o = u * u; --o >= 0;) r.data[o] = y.data[o]; + else r && this.matmath.transpose(r, y); + } else { + if (n && i & f.SVD_U_T) for (o = u * u; --o >= 0;) n.data[o] = y.data[o]; + else n && this.matmath.transpose(n, y); + if (r && i & f.SVD_V_T) for (o = l * l; --o >= 0;) r.data[o] = _.data[o]; + else r && this.matmath.transpose(r, _); + } + this.cache.put_buffer(m), this.cache.put_buffer(h), this.cache.put_buffer(g); + } + svd_solve(e, t, n) { + let r = 0, i = 0, a = 0, o = 0, s = 0, c = e.rows, l = e.cols, u = 0, d = 0, m = 0, h = e.type | f.C1_t, g = this.cache.get_buffer(c * c << 3), _ = this.cache.get_buffer(l << 3), v = this.cache.get_buffer(l * l << 3), y = new p(c, c, h, g.data), b = new p(1, l, h, _.data), x = new p(l, l, h, v.data), S = n.data, C = y.data, w = b.data, T = x.data; + for (this.svd_decompose(e, b, y, x, 0), m = f.EPSILON * w[0] * l; r < l; r++, s += l) { + for (d = 0, i = 0; i < l; i++) if (w[i] > m) { + for (a = 0, u = 0, o = 0; a < c; a++, o += l) u += C[o + i] * S[a]; + d += u * T[s + i] / w[i]; + } + t.data[r] = d; + } + this.cache.put_buffer(g), this.cache.put_buffer(_), this.cache.put_buffer(v); + } + svd_invert(e, t) { + let n = 0, r = 0, i = 0, a = 0, o = 0, s = 0, c = t.rows, l = t.cols, u = 0, d = 0, m = t.type | f.C1_t, h = this.cache.get_buffer(c * c << 3), g = this.cache.get_buffer(l << 3), _ = this.cache.get_buffer(l * l << 3), v = new p(c, c, m, h.data), y = new p(1, l, m, g.data), b = new p(l, l, m, _.data), x = e.data, S = v.data, C = y.data, w = b.data; + for (this.svd_decompose(t, y, v, b, 0), d = f.EPSILON * C[0] * l; n < l; n++, o += l) for (r = 0, a = 0; r < c; r++, s++) { + for (i = 0, u = 0; i < l; i++, a++) C[i] > d && (u += w[o + i] * S[a] / C[i]); + x[s] = u; + } + this.cache.put_buffer(h), this.cache.put_buffer(g), this.cache.put_buffer(_); + } + eigenVV(e, t, n) { + let r = e.cols, i = r * r, a = e.type | f.C1_t, o = this.cache.get_buffer(r * r << 3), s = this.cache.get_buffer(r << 3), c = new p(r, r, a, o.data), l = new p(1, r, a, s.data); + for (; --i >= 0;) c.data[i] = e.data[i]; + if (this.JacobiImpl(c.data, r, l.data, t ? t.data : null, r, r), n) for (; --r >= 0;) n.data[r] = l.data[r]; + this.cache.put_buffer(o), this.cache.put_buffer(s); + } +}, k.orb = class extends k { + constructor() { + super(), this.bit_pattern_31_ = new Int32Array(g), this.H = new p(3, 3, f.F32_t | f.C1_t), this.patch_img = new p(32, 32, f.U8_t | f.C1_t), this.imgproc = new k.imgproc(); + } + describe(e, t, n, r) { + let i = 0, a = 0, o = 0, s = 0, c = 0, l = 0, u = 0, d = 0, p = this.patch_img.data, m = 0; + r.type & f.U8_t ? r.resize(32, n, 1) : (r.type = f.U8_t, r.cols = 32, r.rows = n, r.channel = 1, r.allocate()); + let h = r.data, g = 0; + for (i = 0; i < n; ++i) { + for (o = t[i].x, s = t[i].y, c = t[i].angle, _(e, this.patch_img, c, o, s, 32, this.H, this.imgproc), m = 0, a = 0; a < 32; ++a) l = p[528 + this.bit_pattern_31_[m + 1] * 32 + this.bit_pattern_31_[m]], m += 2, u = p[528 + this.bit_pattern_31_[m + 1] * 32 + this.bit_pattern_31_[m]], m += 2, d = l < u | 0, l = p[528 + this.bit_pattern_31_[m + 1] * 32 + this.bit_pattern_31_[m]], m += 2, u = p[528 + this.bit_pattern_31_[m + 1] * 32 + this.bit_pattern_31_[m]], m += 2, d |= (l < u) << 1, l = p[528 + this.bit_pattern_31_[m + 1] * 32 + this.bit_pattern_31_[m]], m += 2, u = p[528 + this.bit_pattern_31_[m + 1] * 32 + this.bit_pattern_31_[m]], m += 2, d |= (l < u) << 2, l = p[528 + this.bit_pattern_31_[m + 1] * 32 + this.bit_pattern_31_[m]], m += 2, u = p[528 + this.bit_pattern_31_[m + 1] * 32 + this.bit_pattern_31_[m]], m += 2, d |= (l < u) << 3, l = p[528 + this.bit_pattern_31_[m + 1] * 32 + this.bit_pattern_31_[m]], m += 2, u = p[528 + this.bit_pattern_31_[m + 1] * 32 + this.bit_pattern_31_[m]], m += 2, d |= (l < u) << 4, l = p[528 + this.bit_pattern_31_[m + 1] * 32 + this.bit_pattern_31_[m]], m += 2, u = p[528 + this.bit_pattern_31_[m + 1] * 32 + this.bit_pattern_31_[m]], m += 2, d |= (l < u) << 5, l = p[528 + this.bit_pattern_31_[m + 1] * 32 + this.bit_pattern_31_[m]], m += 2, u = p[528 + this.bit_pattern_31_[m + 1] * 32 + this.bit_pattern_31_[m]], m += 2, d |= (l < u) << 6, l = p[528 + this.bit_pattern_31_[m + 1] * 32 + this.bit_pattern_31_[m]], m += 2, u = p[528 + this.bit_pattern_31_[m + 1] * 32 + this.bit_pattern_31_[m]], m += 2, d |= (l < u) << 7, h[g + a] = d; + g += 32; + } + } +}, k.yape = C, k.yape06 = class extends k { + constructor() { + super(), this.laplacian_threshold = 30, this.min_eigen_value_threshold = 25; + } + detect(e, t, n) { + n === void 0 && (n = 5); + let r = 0, i = 0, a = e.cols, o = e.rows, s = e.data, c = 5 * a | 0, l = 3 + 3 * a | 0, u = 3 - 3 * a | 0, d = this.cache.get_buffer(a * o << 2), f = d.i32, p = 0, m = 0, h = 0, g = 0, _, v = 0, y = this.laplacian_threshold, b = this.min_eigen_value_threshold, x = Math.max(5, n) | 0, S = Math.max(3, n) | 0, C = Math.min(a - 5, a - n) | 0, E = Math.min(o - 3, o - n) | 0; + for (r = a * o; --r >= 0;) f[r] = 0; + for (w(s, f, a, 5, c, x, S, C, E), m = S * a + x | 0, i = S; i < E; ++i, m += a) for (r = x, h = m; r < C; ++r, ++h) p = f[h], (p < -y && p < f[h - 1] && p < f[h + 1] && p < f[h - a] && p < f[h + a] && p < f[h - a - 1] && p < f[h + a - 1] && p < f[h - a + 1] && p < f[h + a + 1] || p > y && p > f[h - 1] && p > f[h + 1] && p > f[h - a] && p > f[h + a] && p > f[h - a - 1] && p > f[h + a - 1] && p > f[h - a + 1] && p > f[h + a + 1]) && (g = T(s, h, p, 5, c, l, u), g > b && (_ = t[v], _.x = r, _.y = i, _.score = g, ++v, ++r, ++h)); + return this.cache.put_buffer(d), v; + } +}, k.motion_estimator = class extends k { + constructor() { + super(); + } + get_subset(e, t, n, r, i, a, o) { + let s = 1e3, c = [], l = 0, u = 0, d = 0, f = 0, p = !1; + for (; d < s; ++d) { + for (l = 0; l < r && d < s;) { + for (p = !1, f = 0; !p;) for (p = !0, f = c[l] = Math.floor(Math.random() * i) | 0, u = 0; u < l; ++u) if (f == c[u]) { + p = !1; + break; + } + if (a[l] = t[f], o[l] = n[f], !e.check_subset(a, o, l + 1)) { + d++; + continue; + } + ++l; + } + break; + } + return l == r && d < s; + } + find_inliers(e, t, n, r, i, a, o, s) { + let c = 0, l = 0, u = 0, d = a * a; + for (e.error(n, r, t, o, i); l < i; ++l) u = o[l] <= d, s[l] = u, c += u; + return c; + } + ransac(e, t, n, r, i, a, o, s) { + if (s === void 0 && (s = 1e3), i < e.size) return !1; + let c = e.size, l = s, u = 0, d = !1, m = [], h = [], g = !1, _ = a.cols, v = a.rows, y = a.type | f.C1_t, b = this.cache.get_buffer(_ * v << 3), x = this.cache.get_buffer(i), S = this.cache.get_buffer(i << 2), C = new p(_, v, y, b.data), w = new p(i, 1, f.U8C1_t, x.data), T = -1, E = 0, D = 0, O = S.f32; + if (i == c) { + if (t.run(n, r, C, i) <= 0) return this.cache.put_buffer(b), this.cache.put_buffer(x), this.cache.put_buffer(S), !1; + if (C.copy_to(a), o) for (; --i >= 0;) o.data[i] = 1; + return this.cache.put_buffer(b), this.cache.put_buffer(x), this.cache.put_buffer(S), !0; + } + for (; u < l; ++u) { + if (g = this.get_subset(t, n, r, c, i, m, h), !g) { + if (u == 0) return this.cache.put_buffer(b), this.cache.put_buffer(x), this.cache.put_buffer(S), !1; + break; + } + D = t.run(m, h, C, c), !(D <= 0) && (E = this.find_inliers(t, C, n, r, i, e.thresh, O, w.data), E > Math.max(T, c - 1) && (C.copy_to(a), T = E, o && w.copy_to(o), l = e.update_iters((i - E) / i, l), d = !0)); + } + return this.cache.put_buffer(b), this.cache.put_buffer(x), this.cache.put_buffer(S), d; + } + lmeds(e, t, n, r, i, a, o, s) { + if (s === void 0 && (s = 1e3), i < e.size) return !1; + let c = e.size, l = s, u = 0, d = !1, m = new k.math(), h = [], g = [], _ = !1, v = a.cols, y = a.rows, b = a.type | f.C1_t, x = this.cache.get_buffer(v * y << 3), S = this.cache.get_buffer(i), C = this.cache.get_buffer(i << 2), w = new p(v, y, b, x.data), T = new p(i, 1, f.U8_t | f.C1_t, S.data), E = 0, D = 0, O = C.f32, A = 1e9, j = 0, M = 0; + if (e.eps = .45, l = e.update_iters(e.eps, l), i == c) { + if (t.run(n, r, w, i) <= 0) return this.cache.put_buffer(x), this.cache.put_buffer(S), this.cache.put_buffer(C), !1; + if (w.copy_to(a), o) for (; --i >= 0;) o.data[i] = 1; + return this.cache.put_buffer(x), this.cache.put_buffer(S), this.cache.put_buffer(C), !0; + } + for (; u < l; ++u) { + if (_ = this.get_subset(t, n, r, c, i, h, g), !_) { + if (u == 0) return this.cache.put_buffer(x), this.cache.put_buffer(S), this.cache.put_buffer(C), !1; + break; + } + D = t.run(h, g, w, c), !(D <= 0) && (t.error(n, r, w, O, i), M = m.median(O, 0, i - 1), M < A && (A = M, w.copy_to(a), d = !0)); + } + return d && (j = 2.5 * 1.4826 * (1 + 5 / (i - c)) * Math.sqrt(A), j = Math.max(j, .001), E = this.find_inliers(t, a, n, r, i, j, O, T.data), o && T.copy_to(o), d = E >= c), this.cache.put_buffer(x), this.cache.put_buffer(S), this.cache.put_buffer(C), d; + } +}, k.ransac_params_t = E, k.affine2d = j, k.homography2d = M, k.optical_flow_lk = class extends k { + constructor() { + super(); + let e = new k.imgproc(); + this.scharr_deriv = e.scharr_derivatives; + } + track(e, t, n, r, i, a, o, s, c, l) { + o === void 0 && (o = 30), s === void 0 && (s = new Uint8Array(i)), c === void 0 && (c = .01), l === void 0 && (l = 1e-4); + let u = (a - 1) * .5, d = a * a | 0, m = d << 1, h = e.data, g = t.data, _ = h[0].data, v = g[0].data, y = h[0].cols, b = h[0].rows, x = 0, S = 0, C = this.cache.get_buffer(d << 2), w = this.cache.get_buffer(m << 2), T = this.cache.get_buffer(b * (y << 1) << 2), E = new p(y, b, f.S32C2_t, T.data), D = C.i32, O = w.i32, k = T.i32, A = 0, j = 0, M = 0, N = 0, P = 0, F = 0, I = 0, L = 0, R = 0, z = 0, B = 0, V = 0, ee = 0, H = 0, U = 0, W = 0, G = 0, K = 0, te = 0, q = 0, ne = 0, J = 0, Y = 0, X = 0, Z = 0, Q = 0, re = 0, ie = 0, ae = 0, oe = 0, se = 0, ce = 0, le = 16384, ue = 8192, de = 1 / (1 << 20), fe = 0, pe = 0, me = 0, he = 0, ge = 0, _e = 0, $ = 0, ve = 0, ye = 0, be = 0, xe = 0, Se = 0; + for (c *= c; q < i; ++q) s[q] = 1; + let Ce = e.levels - 1 | 0; + for (X = Ce; X >= 0; --X) for (I = 1 / (1 << X), x = y >> X, S = b >> X, A = x << 1, _ = h[X].data, v = g[X].data, re = x - a | 0, ie = S - a | 0, this.scharr_deriv(h[X], E), Z = 0; Z < i; ++Z) { + if (q = Z << 1, ne = q + 1, L = n[q] * I, R = n[ne] * I, X == Ce ? (z = L, B = R) : (z = r[q] * 2, B = r[ne] * 2), r[q] = z, r[ne] = B, L -= u, R -= u, W = L | 0, G = R | 0, J = W <= 0 || W >= re || G <= 0 || G >= ie, J != 0) { + X == 0 && (s[Z] = 0); + continue; + } + for (ae = L - W, oe = R - G, fe = (1 - ae) * (1 - oe) * le + .5 | 0, pe = ae * (1 - oe) * le + .5 | 0, me = (1 - ae) * oe * le + .5 | 0, he = le - fe - pe - me, ve = 0, ye = 0, be = 0, Y = 0; Y < a; ++Y) for (j = (Y + G) * x + W | 0, M = j << 1, N = Y * a | 0, P = N << 1, J = 0; J < a; ++J, ++j, ++N, M += 2) ge = _[j] * fe + _[j + 1] * pe + _[j + x] * me + _[j + x + 1] * he, ge = ge + 256 >> 9, _e = k[M] * fe + k[M + 2] * pe + k[M + A] * me + k[M + A + 2] * he, _e = _e + ue >> 14, $ = k[M + 1] * fe + k[M + 3] * pe + k[M + A + 1] * me + k[M + A + 3] * he, $ = $ + ue >> 14, D[N] = ge, O[P++] = _e, O[P++] = $, ve += _e * _e, ye += _e * $, be += $ * $; + if (ve *= de, ye *= de, be *= de, xe = ve * be - ye * ye, Se = (be + ve - Math.sqrt((ve - be) * (ve - be) + 4 * ye * ye)) / m, Se < l || xe < 1.1920929e-7) { + X == 0 && (s[Z] = 0); + continue; + } + for (xe = 1 / xe, z -= u, B -= u, V = 0, ee = 0, Q = 0; Q < o; ++Q) { + if (K = z | 0, te = B | 0, J = K <= 0 || K >= re || te <= 0 || te >= ie, J != 0) { + X == 0 && (s[Z] = 0); + break; + } + for (ae = z - K, oe = B - te, fe = (1 - ae) * (1 - oe) * le + .5 | 0, pe = ae * (1 - oe) * le + .5 | 0, me = (1 - ae) * oe * le + .5 | 0, he = le - fe - pe - me, se = 0, ce = 0, Y = 0; Y < a; ++Y) for (F = (Y + te) * x + K | 0, N = Y * a | 0, P = N << 1, J = 0; J < a; ++J, ++F, ++N) ge = v[F] * fe + v[F + 1] * pe + v[F + x] * me + v[F + x + 1] * he, ge = ge + 256 >> 9, ge -= D[N], se += ge * O[P++], ce += ge * O[P++]; + if (se *= de, ce *= de, H = (ye * ce - be * se) * xe, U = (ye * se - ve * ce) * xe, z += H, B += U, r[q] = z + u, r[ne] = B + u, H * H + U * U <= c) break; + if (Q > 0 && Math.abs(H + V) < .01 && Math.abs(U + ee) < .01) { + r[q] -= H * .5, r[ne] -= U * .5; + break; + } + V = H, ee = U; + } + } + this.cache.put_buffer(C), this.cache.put_buffer(w), this.cache.put_buffer(T); + } +}; +//#endregion +//#region src/index.ts +var N = { jsfeatNext: k }; +//#endregion +export { N as default }; diff --git a/dist/package.json b/dist/package.json deleted file mode 100644 index e11923a..0000000 --- a/dist/package.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "name": "@webarkit/jsfeat-next", - "version": "0.7.5", - "description": "Typescript version of jsfeat for WebARKit", - "main": "dist/jsfeatNext.js", - "types": "types/src/index.d.ts", - "scripts": { - "build-ts": "rimraf ./build && tsc && webpack --mode production", - "dev-ts": "rimraf ./build && tsc && webpack --mode development --progress --watch", - "format-check": "prettier --check .", - "format": "prettier --write ." - }, - "repository": { - "type": "git", - "url": "git+https://github.com/webarkit/jsfeatNext.git" - }, - "keywords": [ - "jsfeat", - "jsfeatNext", - "WebAR", - "WebARKit", - "AugmentedReality", - "computer", - "vision" - ], - "author": "Walter Perdan @kalwalt", - "license": "LGPL-3.0-or-later", - "bugs": { - "url": "https://github.com/webarkit/jsfeatNext/issues" - }, - "homepage": "https://github.com/webarkit/jsfeatNext#readme", - "devDependencies": { - "@babel/core": "^7.26.9", - "@babel/plugin-transform-runtime": "^7.26.9", - "@babel/preset-env": "^7.26.9", - "babel-loader": "^9.2.1", - "rimraf": "^6.0.1", - "typescript": "^5.7.3", - "webpack": "5.98.0", - "webpack-cli": "6.0.1" - }, - "dependencies": { - "@babel/runtime": "^7.26.9", - "prettier": "^3.5.1", - "ts-loader": "^9.5.2" - } -} diff --git a/dist/src/cache/cache.js b/dist/src/cache/cache.js deleted file mode 100644 index 7510c22..0000000 --- a/dist/src/cache/cache.js +++ /dev/null @@ -1,33 +0,0 @@ -import _pool_node_t from "./../node_utils/_pool_node_t"; -export class cache { - _pool_head; - _pool_tail; - _pool_size; - constructor() { - this._pool_head; - this._pool_tail; - this._pool_size = 0; - } - allocate(capacity, data_size) { - this._pool_head = this._pool_tail = new _pool_node_t(data_size); - for (let i = 0; i < capacity; ++i) { - const node = new _pool_node_t(data_size); - this._pool_tail = this._pool_tail.next = node; - this._pool_size++; - } - } - get_buffer(size_in_bytes) { - const node = this._pool_head; - this._pool_head = this._pool_head.next; - this._pool_size--; - if (size_in_bytes > node.size) { - node.resize(size_in_bytes); - } - return node; - } - put_buffer(node) { - this._pool_tail = this._pool_tail.next = node; - this._pool_size++; - } -} -//# sourceMappingURL=cache.js.map \ No newline at end of file diff --git a/dist/src/cache/cache.js.map b/dist/src/cache/cache.js.map deleted file mode 100644 index e600e48..0000000 --- a/dist/src/cache/cache.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/cache/cache.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,8BAA8B,CAAC;AAQxD,MAAM,OAAO,KAAK;IACN,UAAU,CAAe;IACzB,UAAU,CAAe;IACzB,UAAU,CAAS;IAC3B;QACI,IAAI,CAAC,UAAU,CAAC;QAChB,IAAI,CAAC,UAAU,CAAC;QAChB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IACxB,CAAC;IACD,QAAQ,CAAC,QAAa,EAAE,SAAiB;QACrC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,YAAY,CAAC,SAAS,CAAC,CAAC;QAChE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,SAAS,CAAC,CAAC;YACzC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;YAE9C,IAAI,CAAC,UAAU,EAAE,CAAC;QACtB,CAAC;IACL,CAAC;IACD,UAAU,CAAC,aAAqB;QAE5B,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QACvC,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,IAAI,aAAa,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC/B,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,UAAU,CAAC,IAAS;QAChB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;QAC9C,IAAI,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC;CACJ"} \ No newline at end of file diff --git a/dist/src/constants/constants.js b/dist/src/constants/constants.js deleted file mode 100644 index 63cec93..0000000 --- a/dist/src/constants/constants.js +++ /dev/null @@ -1,28 +0,0 @@ -export const JSFEAT_CONSTANTS = { - EPSILON: 0.0000001192092896, - FLT_MIN: 1e-37, - U8_t: 0x0100, - S32_t: 0x0200, - F32_t: 0x0400, - S64_t: 0x0800, - F64_t: 0x1000, - C1_t: 0x01, - C2_t: 0x02, - C3_t: 0x03, - C4_t: 0x04, - COLOR_RGBA2GRAY: 0, - COLOR_RGB2GRAY: 1, - COLOR_BGRA2GRAY: 2, - COLOR_BGR2GRAY: 3, - BOX_BLUR_NOSCALE: 0x01, - SVD_U_T: 0x01, - SVD_V_T: 0x02, - U8C1_t: 0x0100 | 0x01, - U8C3_t: 0x0100 | 0x03, - U8C4_t: 0x0100 | 0x04, - F32C1_t: 0x0400 | 0x01, - F32C2_t: 0x0400 | 0x02, - S32C1_t: 0x0200 | 0x01, - S32C2_t: 0x0200 | 0x02, -}; -//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/dist/src/constants/constants.js.map b/dist/src/constants/constants.js.map deleted file mode 100644 index 7b7159a..0000000 --- a/dist/src/constants/constants.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/constants/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAE5B,OAAO,EAAE,kBAAkB;IAC3B,OAAO,EAAE,KAAK;IACd,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,MAAM;IACb,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IAGV,eAAe,EAAE,CAAC;IAClB,cAAc,EAAE,CAAC;IACjB,eAAe,EAAE,CAAC;IAClB,cAAc,EAAE,CAAC;IAGjB,gBAAgB,EAAE,IAAI;IAGtB,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IAGb,MAAM,EAAE,MAAM,GAAG,IAAI;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI;IAErB,OAAO,EAAE,MAAM,GAAG,IAAI;IACtB,OAAO,EAAE,MAAM,GAAG,IAAI;IACtB,OAAO,EAAE,MAAM,GAAG,IAAI;IACtB,OAAO,EAAE,MAAM,GAAG,IAAI;CACzB,CAAC"} \ No newline at end of file diff --git a/dist/src/data_type/data_type.js b/dist/src/data_type/data_type.js deleted file mode 100644 index a88afed..0000000 --- a/dist/src/data_type/data_type.js +++ /dev/null @@ -1,16 +0,0 @@ -export class data_type { - _data_type_size; - constructor() { - this._data_type_size = new Int32Array([-1, 1, 4, -1, 4, -1, -1, -1, 8, -1, -1, -1, -1, -1, -1, -1, 8]); - } - _get_data_type(type) { - return type & 0xff00; - } - _get_channel(type) { - return type & 0xff; - } - _get_data_type_size(type) { - return this._data_type_size[(type & 0xff00) >> 8]; - } -} -//# sourceMappingURL=data_type.js.map \ No newline at end of file diff --git a/dist/src/data_type/data_type.js.map b/dist/src/data_type/data_type.js.map deleted file mode 100644 index 1d44dc5..0000000 --- a/dist/src/data_type/data_type.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"data_type.js","sourceRoot":"","sources":["../../../src/data_type/data_type.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,SAAS;IACD,eAAe,CAAa;IAC7C;QACI,IAAI,CAAC,eAAe,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3G,CAAC;IAED,cAAc,CAAC,IAAY;QACvB,OAAO,IAAI,GAAG,MAAM,CAAC;IACzB,CAAC;IAED,YAAY,CAAC,IAAY;QACrB,OAAO,IAAI,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,mBAAmB,CAAC,IAAY;QAC5B,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IACtD,CAAC;CACJ"} \ No newline at end of file diff --git a/dist/src/fast_corners/fast_corners.js b/dist/src/fast_corners/fast_corners.js deleted file mode 100644 index f2c3fb5..0000000 --- a/dist/src/fast_corners/fast_corners.js +++ /dev/null @@ -1,9 +0,0 @@ -export class fast_corners { - set_threshold(threshold) { - throw new Error("Method not implemented."); - } - detect(src, corners, border) { - throw new Error("Method not implemented."); - } -} -//# sourceMappingURL=fast_corners.js.map \ No newline at end of file diff --git a/dist/src/fast_corners/fast_corners.js.map b/dist/src/fast_corners/fast_corners.js.map deleted file mode 100644 index 6aa8072..0000000 --- a/dist/src/fast_corners/fast_corners.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"fast_corners.js","sourceRoot":"","sources":["../../../src/fast_corners/fast_corners.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,YAAY;IACrB,aAAa,CAAC,SAAiB;QAC3B,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IACD,MAAM,CAAC,GAAa,EAAE,OAAkB,EAAE,MAAc;QACpD,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;CACJ"} \ No newline at end of file diff --git a/dist/src/fast_corners/fast_private.js b/dist/src/fast_corners/fast_private.js deleted file mode 100644 index 6e64121..0000000 --- a/dist/src/fast_corners/fast_private.js +++ /dev/null @@ -1,36 +0,0 @@ -export function _cmp_score_16(src, off, pixel, d, threshold) { - let N = 25, k = 0, v = src[off]; - let a0 = threshold, a = 0, b0 = 0, b = 0; - for (; k < N; ++k) { - d[k] = v - src[off + pixel[k]]; - } - for (k = 0; k < 16; k += 2) { - a = Math.min(d[k + 1], d[k + 2]); - a = Math.min(a, d[k + 3]); - if (a <= a0) - continue; - a = Math.min(a, d[k + 4]); - a = Math.min(a, d[k + 5]); - a = Math.min(a, d[k + 6]); - a = Math.min(a, d[k + 7]); - a = Math.min(a, d[k + 8]); - a0 = Math.max(a0, Math.min(a, d[k])); - a0 = Math.max(a0, Math.min(a, d[k + 9])); - } - b0 = -a0; - for (k = 0; k < 16; k += 2) { - b = Math.max(d[k + 1], d[k + 2]); - b = Math.max(b, d[k + 3]); - b = Math.max(b, d[k + 4]); - b = Math.max(b, d[k + 5]); - if (b >= b0) - continue; - b = Math.max(b, d[k + 6]); - b = Math.max(b, d[k + 7]); - b = Math.max(b, d[k + 8]); - b0 = Math.min(b0, Math.max(b, d[k])); - b0 = Math.min(b0, Math.max(b, d[k + 9])); - } - return -b0 - 1; -} -//# sourceMappingURL=fast_private.js.map \ No newline at end of file diff --git a/dist/src/fast_corners/fast_private.js.map b/dist/src/fast_corners/fast_private.js.map deleted file mode 100644 index ca02069..0000000 --- a/dist/src/fast_corners/fast_private.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"fast_private.js","sourceRoot":"","sources":["../../../src/fast_corners/fast_private.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/src/homography2d/homography2d.js b/dist/src/homography2d/homography2d.js deleted file mode 100644 index 5ba3cad..0000000 --- a/dist/src/homography2d/homography2d.js +++ /dev/null @@ -1,2 +0,0 @@ -export {}; -//# sourceMappingURL=homography2d.js.map \ No newline at end of file diff --git a/dist/src/homography2d/homography2d.js.map b/dist/src/homography2d/homography2d.js.map deleted file mode 100644 index 3c07187..0000000 --- a/dist/src/homography2d/homography2d.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"homography2d.js","sourceRoot":"","sources":["../../../src/homography2d/homography2d.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/src/imgproc/convol.js b/dist/src/imgproc/convol.js deleted file mode 100644 index 971dfce..0000000 --- a/dist/src/imgproc/convol.js +++ /dev/null @@ -1,169 +0,0 @@ -export function _convol_u8(buf, src_d, dst_d, w, h, filter, kernel_size, half_kernel) { - let i = 0, j = 0, k = 0, sp = 0, dp = 0, sum = 0, sum1 = 0, sum2 = 0, sum3 = 0, f0 = filter[0], fk = 0; - const w2 = w << 1, w3 = w * 3, w4 = w << 2; - for (; i < h; ++i) { - sum = src_d[sp]; - for (j = 0; j < half_kernel; ++j) { - buf[j] = sum; - } - for (j = 0; j <= w - 2; j += 2) { - buf[j + half_kernel] = src_d[sp + j]; - buf[j + half_kernel + 1] = src_d[sp + j + 1]; - } - for (; j < w; ++j) { - buf[j + half_kernel] = src_d[sp + j]; - } - sum = src_d[sp + w - 1]; - for (j = w; j < half_kernel + w; ++j) { - buf[j + half_kernel] = sum; - } - for (j = 0; j <= w - 4; j += 4) { - (sum = buf[j] * f0), (sum1 = buf[j + 1] * f0), (sum2 = buf[j + 2] * f0), (sum3 = buf[j + 3] * f0); - for (k = 1; k < kernel_size; ++k) { - fk = filter[k]; - sum += buf[k + j] * fk; - sum1 += buf[k + j + 1] * fk; - sum2 += buf[k + j + 2] * fk; - sum3 += buf[k + j + 3] * fk; - } - dst_d[dp + j] = Math.min(sum >> 8, 255); - dst_d[dp + j + 1] = Math.min(sum1 >> 8, 255); - dst_d[dp + j + 2] = Math.min(sum2 >> 8, 255); - dst_d[dp + j + 3] = Math.min(sum3 >> 8, 255); - } - for (; j < w; ++j) { - sum = buf[j] * f0; - for (k = 1; k < kernel_size; ++k) { - sum += buf[k + j] * filter[k]; - } - dst_d[dp + j] = Math.min(sum >> 8, 255); - } - sp += w; - dp += w; - } - for (i = 0; i < w; ++i) { - sum = dst_d[i]; - for (j = 0; j < half_kernel; ++j) { - buf[j] = sum; - } - k = i; - for (j = 0; j <= h - 2; j += 2, k += w2) { - buf[j + half_kernel] = dst_d[k]; - buf[j + half_kernel + 1] = dst_d[k + w]; - } - for (; j < h; ++j, k += w) { - buf[j + half_kernel] = dst_d[k]; - } - sum = dst_d[(h - 1) * w + i]; - for (j = h; j < half_kernel + h; ++j) { - buf[j + half_kernel] = sum; - } - dp = i; - for (j = 0; j <= h - 4; j += 4, dp += w4) { - (sum = buf[j] * f0), (sum1 = buf[j + 1] * f0), (sum2 = buf[j + 2] * f0), (sum3 = buf[j + 3] * f0); - for (k = 1; k < kernel_size; ++k) { - fk = filter[k]; - sum += buf[k + j] * fk; - sum1 += buf[k + j + 1] * fk; - sum2 += buf[k + j + 2] * fk; - sum3 += buf[k + j + 3] * fk; - } - dst_d[dp] = Math.min(sum >> 8, 255); - dst_d[dp + w] = Math.min(sum1 >> 8, 255); - dst_d[dp + w2] = Math.min(sum2 >> 8, 255); - dst_d[dp + w3] = Math.min(sum3 >> 8, 255); - } - for (; j < h; ++j, dp += w) { - sum = buf[j] * f0; - for (k = 1; k < kernel_size; ++k) { - sum += buf[k + j] * filter[k]; - } - dst_d[dp] = Math.min(sum >> 8, 255); - } - } -} -export function _convol(buf, src_d, dst_d, w, h, filter, kernel_size, half_kernel) { - let i = 0, j = 0, k = 0, sp = 0, dp = 0, sum = 0.0, sum1 = 0.0, sum2 = 0.0, sum3 = 0.0, f0 = filter[0], fk = 0.0; - const w2 = w << 1, w3 = w * 3, w4 = w << 2; - for (; i < h; ++i) { - sum = src_d[sp]; - for (j = 0; j < half_kernel; ++j) { - buf[j] = sum; - } - for (j = 0; j <= w - 2; j += 2) { - buf[j + half_kernel] = src_d[sp + j]; - buf[j + half_kernel + 1] = src_d[sp + j + 1]; - } - for (; j < w; ++j) { - buf[j + half_kernel] = src_d[sp + j]; - } - sum = src_d[sp + w - 1]; - for (j = w; j < half_kernel + w; ++j) { - buf[j + half_kernel] = sum; - } - for (j = 0; j <= w - 4; j += 4) { - (sum = buf[j] * f0), (sum1 = buf[j + 1] * f0), (sum2 = buf[j + 2] * f0), (sum3 = buf[j + 3] * f0); - for (k = 1; k < kernel_size; ++k) { - fk = filter[k]; - sum += buf[k + j] * fk; - sum1 += buf[k + j + 1] * fk; - sum2 += buf[k + j + 2] * fk; - sum3 += buf[k + j + 3] * fk; - } - dst_d[dp + j] = sum; - dst_d[dp + j + 1] = sum1; - dst_d[dp + j + 2] = sum2; - dst_d[dp + j + 3] = sum3; - } - for (; j < w; ++j) { - sum = buf[j] * f0; - for (k = 1; k < kernel_size; ++k) { - sum += buf[k + j] * filter[k]; - } - dst_d[dp + j] = sum; - } - sp += w; - dp += w; - } - for (i = 0; i < w; ++i) { - sum = dst_d[i]; - for (j = 0; j < half_kernel; ++j) { - buf[j] = sum; - } - k = i; - for (j = 0; j <= h - 2; j += 2, k += w2) { - buf[j + half_kernel] = dst_d[k]; - buf[j + half_kernel + 1] = dst_d[k + w]; - } - for (; j < h; ++j, k += w) { - buf[j + half_kernel] = dst_d[k]; - } - sum = dst_d[(h - 1) * w + i]; - for (j = h; j < half_kernel + h; ++j) { - buf[j + half_kernel] = sum; - } - dp = i; - for (j = 0; j <= h - 4; j += 4, dp += w4) { - (sum = buf[j] * f0), (sum1 = buf[j + 1] * f0), (sum2 = buf[j + 2] * f0), (sum3 = buf[j + 3] * f0); - for (k = 1; k < kernel_size; ++k) { - fk = filter[k]; - sum += buf[k + j] * fk; - sum1 += buf[k + j + 1] * fk; - sum2 += buf[k + j + 2] * fk; - sum3 += buf[k + j + 3] * fk; - } - dst_d[dp] = sum; - dst_d[dp + w] = sum1; - dst_d[dp + w2] = sum2; - dst_d[dp + w3] = sum3; - } - for (; j < h; ++j, dp += w) { - sum = buf[j] * f0; - for (k = 1; k < kernel_size; ++k) { - sum += buf[k + j] * filter[k]; - } - dst_d[dp] = sum; - } - } -} -//# sourceMappingURL=convol.js.map \ No newline at end of file diff --git a/dist/src/imgproc/convol.js.map b/dist/src/imgproc/convol.js.map deleted file mode 100644 index 5229b2b..0000000 --- a/dist/src/imgproc/convol.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"convol.js","sourceRoot":"","sources":["../../../src/imgproc/convol.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/src/imgproc/imgproc.js b/dist/src/imgproc/imgproc.js deleted file mode 100644 index 16d46e6..0000000 --- a/dist/src/imgproc/imgproc.js +++ /dev/null @@ -1,45 +0,0 @@ -export class imgproc { - grayscale(src, w, h, dst, code) { - throw new Error("Method not implemented."); - } - resample(src, dst, nw, nh) { - throw new Error("Method not implemented."); - } - box_blur_gray(src, dst, radius, options) { - throw new Error("Method not implemented."); - } - gaussian_blur(src, dst, kernel_size, sigma) { - throw new Error("Method not implemented."); - } - hough_transform(img, rho_res, theta_res, threshold) { - throw new Error("Method not implemented."); - } - pyrdown(src, dst, sx, sy) { - throw new Error("Method not implemented."); - } - scharr_derivatives(src, dst) { - throw new Error("Method not implemented."); - } - sobel_derivatives(src, dst) { - throw new Error("Method not implemented."); - } - compute_integral_image(src, dst_sum, dst_sqsum, dst_tilted) { - throw new Error("Method not implemented."); - } - equalize_histogram(src, dst) { - throw new Error("Method not implemented."); - } - canny(src, dst, low_thresh, high_thresh) { - throw new Error("Method not implemented."); - } - warp_perspective(src, dst, transform, fill_value) { - throw new Error("Method not implemented."); - } - warp_affine(src, dst, transform, fill_value) { - throw new Error("Method not implemented."); - } - skindetector(src, dst) { - throw new Error("Method not implemented."); - } -} -//# sourceMappingURL=imgproc.js.map \ No newline at end of file diff --git a/dist/src/imgproc/imgproc.js.map b/dist/src/imgproc/imgproc.js.map deleted file mode 100644 index 6a4151b..0000000 --- a/dist/src/imgproc/imgproc.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"imgproc.js","sourceRoot":"","sources":["../../../src/imgproc/imgproc.ts"],"names":[],"mappings":"AACA,MAAM,OAAO,OAAO;IAChB,SAAS,CAAC,GAAmC,EAAE,CAAS,EAAE,CAAS,EAAE,GAAa,EAAE,IAAa;QAC7F,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IACD,QAAQ,CAAC,GAAa,EAAE,GAAa,EAAE,EAAU,EAAE,EAAU;QACzD,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IACD,aAAa,CAAC,GAAa,EAAE,GAAa,EAAE,MAAc,EAAE,OAAe;QACvE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IACD,aAAa,CAAC,GAAa,EAAE,GAAa,EAAE,WAAmB,EAAE,KAAa;QAC1E,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IACD,eAAe,CAAC,GAAa,EAAE,OAAe,EAAE,SAAiB,EAAE,SAAiB;QAChF,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,CAAC,GAAa,EAAE,GAAa,EAAE,EAAW,EAAE,EAAW;QAC1D,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IACD,kBAAkB,CAAC,GAAa,EAAE,GAAa;QAC3C,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IACD,iBAAiB,CAAC,GAAa,EAAE,GAAa;QAC1C,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IACD,sBAAsB,CAAC,GAAa,EAAE,OAAiB,EAAE,SAAmB,EAAE,UAAiB;QAC3F,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IACD,kBAAkB,CAAC,GAAa,EAAE,GAAa;QAC3C,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IACD,KAAK,CAAC,GAAa,EAAE,GAAa,EAAE,UAAkB,EAAE,WAAmB;QACvE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IACD,gBAAgB,CAAC,GAAa,EAAE,GAAa,EAAE,SAAmB,EAAE,UAAkB;QAClF,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IACD,WAAW,CAAC,GAAa,EAAE,GAAa,EAAE,SAAmB,EAAE,UAAkB;QAC7E,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IACD,YAAY,CAAC,GAAmD,EAAE,GAAa;QAC3E,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;CACJ"} \ No newline at end of file diff --git a/dist/src/imgproc/resample.js b/dist/src/imgproc/resample.js deleted file mode 100644 index 0310552..0000000 --- a/dist/src/imgproc/resample.js +++ /dev/null @@ -1,165 +0,0 @@ -export function _resample_u8(src, dst, cache, nw, nh) { - let xofs_count = 0; - const ch = src.channel, w = src.cols, h = src.rows; - const src_d = src.data, dst_d = dst.data; - const scale_x = w / nw, scale_y = h / nh; - const inv_scale_256 = (scale_x * scale_y * 0x10000) | 0; - let dx = 0, dy = 0, sx = 0, sy = 0, sx1 = 0, sx2 = 0, i = 0, k = 0, fsx1 = 0.0, fsx2 = 0.0; - let a = 0, b = 0, dxn = 0, alpha = 0, beta = 0, beta1 = 0; - const buf_node = cache.get_buffer((nw * ch) << 2); - const sum_node = cache.get_buffer((nw * ch) << 2); - const xofs_node = cache.get_buffer((w * 2 * 3) << 2); - const buf = buf_node.i32; - const sum = sum_node.i32; - const xofs = xofs_node.i32; - for (; dx < nw; dx++) { - (fsx1 = dx * scale_x), (fsx2 = fsx1 + scale_x); - (sx1 = (fsx1 + 1.0 - 1e-6) | 0), (sx2 = fsx2 | 0); - sx1 = Math.min(sx1, w - 1); - sx2 = Math.min(sx2, w - 1); - if (sx1 > fsx1) { - xofs[k++] = (dx * ch) | 0; - xofs[k++] = ((sx1 - 1) * ch) | 0; - xofs[k++] = ((sx1 - fsx1) * 0x100) | 0; - xofs_count++; - } - for (sx = sx1; sx < sx2; sx++) { - xofs_count++; - xofs[k++] = (dx * ch) | 0; - xofs[k++] = (sx * ch) | 0; - xofs[k++] = 256; - } - if (fsx2 - sx2 > 1e-3) { - xofs_count++; - xofs[k++] = (dx * ch) | 0; - xofs[k++] = (sx2 * ch) | 0; - xofs[k++] = ((fsx2 - sx2) * 256) | 0; - } - } - for (dx = 0; dx < nw * ch; dx++) { - buf[dx] = sum[dx] = 0; - } - dy = 0; - for (sy = 0; sy < h; sy++) { - a = w * sy; - for (k = 0; k < xofs_count; k++) { - dxn = xofs[k * 3]; - sx1 = xofs[k * 3 + 1]; - alpha = xofs[k * 3 + 2]; - for (i = 0; i < ch; i++) { - buf[dxn + i] += src_d[a + sx1 + i] * alpha; - } - } - if ((dy + 1) * scale_y <= sy + 1 || sy == h - 1) { - beta = (Math.max(sy + 1 - (dy + 1) * scale_y, 0.0) * 256) | 0; - beta1 = 256 - beta; - b = nw * dy; - if (beta <= 0) { - for (dx = 0; dx < nw * ch; dx++) { - dst_d[b + dx] = Math.min(Math.max((sum[dx] + buf[dx] * 256) / inv_scale_256, 0), 255); - sum[dx] = buf[dx] = 0; - } - } - else { - for (dx = 0; dx < nw * ch; dx++) { - dst_d[b + dx] = Math.min(Math.max((sum[dx] + buf[dx] * beta1) / inv_scale_256, 0), 255); - sum[dx] = buf[dx] * beta; - buf[dx] = 0; - } - } - dy++; - } - else { - for (dx = 0; dx < nw * ch; dx++) { - sum[dx] += buf[dx] * 256; - buf[dx] = 0; - } - } - } - cache.put_buffer(sum_node); - cache.put_buffer(buf_node); - cache.put_buffer(xofs_node); -} -export function _resample(src, dst, cache, nw, nh) { - let xofs_count = 0; - const ch = src.channel, w = src.cols, h = src.rows; - const src_d = src.data, dst_d = dst.data; - const scale_x = w / nw, scale_y = h / nh; - const scale = 1.0 / (scale_x * scale_y); - let dx = 0, dy = 0, sx = 0, sy = 0, sx1 = 0, sx2 = 0, i = 0, k = 0, fsx1 = 0.0, fsx2 = 0.0; - let a = 0, b = 0, dxn = 0, alpha = 0.0, beta = 0.0, beta1 = 0.0; - const buf_node = cache.get_buffer((nw * ch) << 2); - const sum_node = cache.get_buffer((nw * ch) << 2); - const xofs_node = cache.get_buffer((w * 2 * 3) << 2); - const buf = buf_node.f32; - const sum = sum_node.f32; - const xofs = xofs_node.f32; - for (; dx < nw; dx++) { - (fsx1 = dx * scale_x), (fsx2 = fsx1 + scale_x); - (sx1 = (fsx1 + 1.0 - 1e-6) | 0), (sx2 = fsx2 | 0); - sx1 = Math.min(sx1, w - 1); - sx2 = Math.min(sx2, w - 1); - if (sx1 > fsx1) { - xofs_count++; - xofs[k++] = ((sx1 - 1) * ch) | 0; - xofs[k++] = (dx * ch) | 0; - xofs[k++] = (sx1 - fsx1) * scale; - } - for (sx = sx1; sx < sx2; sx++) { - xofs_count++; - xofs[k++] = (sx * ch) | 0; - xofs[k++] = (dx * ch) | 0; - xofs[k++] = scale; - } - if (fsx2 - sx2 > 1e-3) { - xofs_count++; - xofs[k++] = (sx2 * ch) | 0; - xofs[k++] = (dx * ch) | 0; - xofs[k++] = (fsx2 - sx2) * scale; - } - } - for (dx = 0; dx < nw * ch; dx++) { - buf[dx] = sum[dx] = 0; - } - dy = 0; - for (sy = 0; sy < h; sy++) { - a = w * sy; - for (k = 0; k < xofs_count; k++) { - sx1 = xofs[k * 3] | 0; - dxn = xofs[k * 3 + 1] | 0; - alpha = xofs[k * 3 + 2]; - for (i = 0; i < ch; i++) { - buf[dxn + i] += src_d[a + sx1 + i] * alpha; - } - } - if ((dy + 1) * scale_y <= sy + 1 || sy == h - 1) { - beta = Math.max(sy + 1 - (dy + 1) * scale_y, 0.0); - beta1 = 1.0 - beta; - b = nw * dy; - if (Math.abs(beta) < 1e-3) { - for (dx = 0; dx < nw * ch; dx++) { - dst_d[b + dx] = sum[dx] + buf[dx]; - sum[dx] = buf[dx] = 0; - } - } - else { - for (dx = 0; dx < nw * ch; dx++) { - dst_d[b + dx] = sum[dx] + buf[dx] * beta1; - sum[dx] = buf[dx] * beta; - buf[dx] = 0; - } - } - dy++; - } - else { - for (dx = 0; dx < nw * ch; dx++) { - sum[dx] += buf[dx]; - buf[dx] = 0; - } - } - } - cache.put_buffer(sum_node); - cache.put_buffer(buf_node); - cache.put_buffer(xofs_node); -} -//# sourceMappingURL=resample.js.map \ No newline at end of file diff --git a/dist/src/imgproc/resample.js.map b/dist/src/imgproc/resample.js.map deleted file mode 100644 index 6d8af85..0000000 --- a/dist/src/imgproc/resample.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"resample.js","sourceRoot":"","sources":["../../../src/imgproc/resample.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/src/index.js b/dist/src/index.js deleted file mode 100644 index f2c550c..0000000 --- a/dist/src/index.js +++ /dev/null @@ -1,5 +0,0 @@ -import jsfeatNext from "./jsfeatNext"; -export default { - jsfeatNext, -}; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/src/index.js.map b/dist/src/index.js.map deleted file mode 100644 index 3dbc836..0000000 --- a/dist/src/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,eAAe;IACX,UAAU;CACb,CAAC"} \ No newline at end of file diff --git a/dist/src/jsfeatNext.js b/dist/src/jsfeatNext.js deleted file mode 100644 index 3f7a2a2..0000000 --- a/dist/src/jsfeatNext.js +++ /dev/null @@ -1,2928 +0,0 @@ -import { data_type } from "./data_type/data_type"; -import { cache } from "./cache/cache"; -import { _resample, _resample_u8 } from "./imgproc/resample"; -import { _convol, _convol_u8 } from "./imgproc/convol"; -import { swap, hypot } from "./linalg/linalg_base"; -import { _cmp_score_16 } from "./fast_corners/fast_private"; -import matmath from "./matmath/matmath"; -import { matrix_t } from "./matrix_t/matrix_t"; -import { transform } from "./transform/transform"; -import { keypoint_t } from "./keypoint_t/keypoint_t"; -import { bit_pattern_31 } from "./orb/bit_pattern_31"; -import { rectify_patch } from "./orb/rectify_patch"; -import { yape } from "./yape/yape"; -import { compute_laplacian, hessian_min_eigen_value } from "./yape06/yape06_utils"; -import { ransac_params_t } from "./motion_estimator/ransac_params_t"; -import { JSFEAT_CONSTANTS } from "./constants/constants"; -import pkg from "../package.json"; -export default class jsfeatNext { - dt; - cache; - static cache; - static fast_corners; - static imgproc; - static linalg; - static math; - static matmath; - static matrix_t; - static pyramid_t; - static transform; - static keypoint_t; - static yape; - static yape06; - static ransac_params_t; - static affine2d; - static homography2d; - static motion_estimator; - static optical_flow_lk; - static orb; - constructor() { - this.dt = new data_type(); - this.cache = new cache(); - this.cache.allocate(30, 640 * 4); - } - static VERSION = pkg.version; - static EPSILON = JSFEAT_CONSTANTS.EPSILON; - static FLT_MIN = JSFEAT_CONSTANTS.FLT_MIN; - static U8_t = JSFEAT_CONSTANTS.U8_t; - static S32_t = JSFEAT_CONSTANTS.S32_t; - static F32_t = JSFEAT_CONSTANTS.F32_t; - static S64_t = JSFEAT_CONSTANTS.S64_t; - static F64_t = JSFEAT_CONSTANTS.F64_t; - static C1_t = JSFEAT_CONSTANTS.C1_t; - static C2_t = JSFEAT_CONSTANTS.C2_t; - static C3_t = JSFEAT_CONSTANTS.C3_t; - static C4_t = JSFEAT_CONSTANTS.C4_t; - static COLOR_RGBA2GRAY = JSFEAT_CONSTANTS.COLOR_RGBA2GRAY; - static COLOR_RGB2GRAY = JSFEAT_CONSTANTS.COLOR_RGB2GRAY; - static COLOR_BGRA2GRAY = JSFEAT_CONSTANTS.COLOR_BGRA2GRAY; - static COLOR_BGR2GRAY = JSFEAT_CONSTANTS.COLOR_BGR2GRAY; - static BOX_BLUR_NOSCALE = JSFEAT_CONSTANTS.BOX_BLUR_NOSCALE; - static SVD_U_T = JSFEAT_CONSTANTS.SVD_U_T; - static SVD_V_T = JSFEAT_CONSTANTS.SVD_V_T; - static U8C1_t = this.U8_t | this.C1_t; - static U8C3_t = this.U8_t | this.C3_t; - static U8C4_t = this.U8_t | this.C4_t; - static F32C1_t = this.F32_t | this.C1_t; - static F32C2_t = this.F32_t | this.C2_t; - static S32C1_t = this.S32_t | this.C1_t; - static S32C2_t = this.S32_t | this.C2_t; - get_data_type(type) { - return this.dt._get_data_type(type); - } - get_channel(type) { - return this.dt._get_channel(type); - } - get_data_type_size(type) { - return this.dt._get_data_type_size(type); - } -} -class motion_model extends jsfeatNext { - T0; - T1; - AtA; - AtB; - constructor() { - super(); - this.T0 = new matrix_t(3, 3, JSFEAT_CONSTANTS.F32_t | JSFEAT_CONSTANTS.C1_t); - this.T1 = new matrix_t(3, 3, JSFEAT_CONSTANTS.F32_t | JSFEAT_CONSTANTS.C1_t); - this.AtA = new matrix_t(6, 6, JSFEAT_CONSTANTS.F32_t | JSFEAT_CONSTANTS.C1_t); - this.AtB = new matrix_t(6, 1, JSFEAT_CONSTANTS.F32_t | JSFEAT_CONSTANTS.C1_t); - } - sqr(x) { - return x * x; - } - iso_normalize_points(from, to, T0, T1, count) { - let i = 0; - let cx0 = 0.0, cy0 = 0.0, d0 = 0.0, s0 = 0.0; - let cx1 = 0.0, cy1 = 0.0, d1 = 0.0, s1 = 0.0; - let dx = 0.0, dy = 0.0; - for (; i < count; ++i) { - cx0 += from[i].x; - cy0 += from[i].y; - cx1 += to[i].x; - cy1 += to[i].y; - } - cx0 /= count; - cy0 /= count; - cx1 /= count; - cy1 /= count; - for (i = 0; i < count; ++i) { - dx = from[i].x - cx0; - dy = from[i].y - cy0; - d0 += Math.sqrt(dx * dx + dy * dy); - dx = to[i].x - cx1; - dy = to[i].y - cy1; - d1 += Math.sqrt(dx * dx + dy * dy); - } - d0 /= count; - d1 /= count; - s0 = Math.SQRT2 / d0; - s1 = Math.SQRT2 / d1; - T0[0] = T0[4] = s0; - T0[2] = -cx0 * s0; - T0[5] = -cy0 * s0; - T0[1] = T0[3] = T0[6] = T0[7] = 0.0; - T0[8] = 1.0; - T1[0] = T1[4] = s1; - T1[2] = -cx1 * s1; - T1[5] = -cy1 * s1; - T1[1] = T1[3] = T1[6] = T1[7] = 0.0; - T1[8] = 1.0; - } - have_collinear_points(points, count) { - let j = 0, k = 0, i = (count - 1) | 0; - let dx1 = 0.0, dy1 = 0.0, dx2 = 0.0, dy2 = 0.0; - for (; j < i; ++j) { - dx1 = points[j].x - points[i].x; - dy1 = points[j].y - points[i].y; - for (k = 0; k < j; ++k) { - dx2 = points[k].x - points[i].x; - dy2 = points[k].y - points[i].y; - if (Math.abs(dx2 * dy1 - dy2 * dx1) <= - JSFEAT_CONSTANTS.EPSILON * (Math.abs(dx1) + Math.abs(dy1) + Math.abs(dx2) + Math.abs(dy2))) - return true; - } - } - return false; - } -} -class affine2d extends motion_model { - constructor() { - super(); - } - run(from, to, model, count) { - let i = 0, j = 0; - const dt = model.type | JSFEAT_CONSTANTS.C1_t; - const md = model.data, t0d = this.T0.data, t1d = this.T1.data; - let pt0, pt1, px = 0.0, py = 0.0; - const _matmath = new matmath(); - const _linalg = new jsfeatNext.linalg(); - this.iso_normalize_points(from, to, t0d, t1d, count); - const a_buff = this.cache.get_buffer((2 * count * 6) << 3); - const b_buff = this.cache.get_buffer((2 * count) << 3); - const a_mt = new matrix_t(6, 2 * count, dt, a_buff.data); - const b_mt = new matrix_t(1, 2 * count, dt, b_buff.data); - const ad = a_mt.data, bd = b_mt.data; - for (; i < count; ++i) { - pt0 = from[i]; - pt1 = to[i]; - px = t0d[0] * pt0.x + t0d[1] * pt0.y + t0d[2]; - py = t0d[3] * pt0.x + t0d[4] * pt0.y + t0d[5]; - j = i * 2 * 6; - (ad[j] = px), (ad[j + 1] = py), (ad[j + 2] = 1.0), (ad[j + 3] = 0.0), (ad[j + 4] = 0.0), (ad[j + 5] = 0.0); - j += 6; - (ad[j] = 0.0), (ad[j + 1] = 0.0), (ad[j + 2] = 0.0), (ad[j + 3] = px), (ad[j + 4] = py), (ad[j + 5] = 1.0); - bd[i << 1] = t1d[0] * pt1.x + t1d[1] * pt1.y + t1d[2]; - bd[(i << 1) + 1] = t1d[3] * pt1.x + t1d[4] * pt1.y + t1d[5]; - } - _matmath.multiply_AtA(this.AtA, a_mt); - _matmath.multiply_AtB(this.AtB, a_mt, b_mt); - _linalg.lu_solve(this.AtA, this.AtB); - (md[0] = this.AtB.data[0]), (md[1] = this.AtB.data[1]), (md[2] = this.AtB.data[2]); - (md[3] = this.AtB.data[3]), (md[4] = this.AtB.data[4]), (md[5] = this.AtB.data[5]); - (md[6] = 0.0), (md[7] = 0.0), (md[8] = 1.0); - _matmath.invert_3x3(this.T1, this.T1); - _matmath.multiply_3x3(model, this.T1, model); - _matmath.multiply_3x3(model, model, this.T0); - this.cache.put_buffer(a_buff); - this.cache.put_buffer(b_buff); - return 1; - } -} -class homography2d extends motion_model { - mLtL; - Evec; - constructor() { - super(); - this.mLtL = new matrix_t(9, 9, JSFEAT_CONSTANTS.F32_t | JSFEAT_CONSTANTS.C1_t); - this.Evec = new matrix_t(9, 9, JSFEAT_CONSTANTS.F32_t | JSFEAT_CONSTANTS.C1_t); - } - run(from, to, model, count) { - let i = 0, j = 0; - const md = model.data, t0d = this.T0.data, t1d = this.T1.data; - const LtL = this.mLtL.data, evd = this.Evec.data; - let x = 0.0, y = 0.0, X = 0.0, Y = 0.0; - const _linalg = new jsfeatNext.linalg(); - const _matmath = new matmath(); - let smx = 0.0, smy = 0.0, cmx = 0.0, cmy = 0.0, sMx = 0.0, sMy = 0.0, cMx = 0.0, cMy = 0.0; - for (; i < count; ++i) { - cmx += to[i].x; - cmy += to[i].y; - cMx += from[i].x; - cMy += from[i].y; - } - cmx /= count; - cmy /= count; - cMx /= count; - cMy /= count; - for (i = 0; i < count; ++i) { - smx += Math.abs(to[i].x - cmx); - smy += Math.abs(to[i].y - cmy); - sMx += Math.abs(from[i].x - cMx); - sMy += Math.abs(from[i].y - cMy); - } - if (Math.abs(smx) < JSFEAT_CONSTANTS.EPSILON || - Math.abs(smy) < JSFEAT_CONSTANTS.EPSILON || - Math.abs(sMx) < JSFEAT_CONSTANTS.EPSILON || - Math.abs(sMy) < JSFEAT_CONSTANTS.EPSILON) - return 0; - smx = count / smx; - smy = count / smy; - sMx = count / sMx; - sMy = count / sMy; - t0d[0] = sMx; - t0d[1] = 0; - t0d[2] = -cMx * sMx; - t0d[3] = 0; - t0d[4] = sMy; - t0d[5] = -cMy * sMy; - t0d[6] = 0; - t0d[7] = 0; - t0d[8] = 1; - t1d[0] = 1.0 / smx; - t1d[1] = 0; - t1d[2] = cmx; - t1d[3] = 0; - t1d[4] = 1.0 / smy; - t1d[5] = cmy; - t1d[6] = 0; - t1d[7] = 0; - t1d[8] = 1; - i = 81; - while (--i >= 0) { - LtL[i] = 0.0; - } - for (i = 0; i < count; ++i) { - x = (to[i].x - cmx) * smx; - y = (to[i].y - cmy) * smy; - X = (from[i].x - cMx) * sMx; - Y = (from[i].y - cMy) * sMy; - LtL[0] += X * X; - LtL[1] += X * Y; - LtL[2] += X; - LtL[6] += X * -x * X; - LtL[7] += X * -x * Y; - LtL[8] += X * -x; - LtL[10] += Y * Y; - LtL[11] += Y; - LtL[15] += Y * -x * X; - LtL[16] += Y * -x * Y; - LtL[17] += Y * -x; - LtL[20] += 1.0; - LtL[24] += -x * X; - LtL[25] += -x * Y; - LtL[26] += -x; - LtL[30] += X * X; - LtL[31] += X * Y; - LtL[32] += X; - LtL[33] += X * -y * X; - LtL[34] += X * -y * Y; - LtL[35] += X * -y; - LtL[40] += Y * Y; - LtL[41] += Y; - LtL[42] += Y * -y * X; - LtL[43] += Y * -y * Y; - LtL[44] += Y * -y; - LtL[50] += 1.0; - LtL[51] += -y * X; - LtL[52] += -y * Y; - LtL[53] += -y; - LtL[60] += -x * X * -x * X + -y * X * -y * X; - LtL[61] += -x * X * -x * Y + -y * X * -y * Y; - LtL[62] += -x * X * -x + -y * X * -y; - LtL[70] += -x * Y * -x * Y + -y * Y * -y * Y; - LtL[71] += -x * Y * -x + -y * Y * -y; - LtL[80] += -x * -x + -y * -y; - } - for (i = 0; i < 9; ++i) { - for (j = 0; j < i; ++j) - LtL[i * 9 + j] = LtL[j * 9 + i]; - } - _linalg.eigenVV(this.mLtL, this.Evec); - (md[0] = evd[72]), (md[1] = evd[73]), (md[2] = evd[74]); - (md[3] = evd[75]), (md[4] = evd[76]), (md[5] = evd[77]); - (md[6] = evd[78]), (md[7] = evd[79]), (md[8] = evd[80]); - _matmath.multiply_3x3(model, this.T1, model); - _matmath.multiply_3x3(model, model, this.T0); - x = 1.0 / md[8]; - md[0] *= x; - md[1] *= x; - md[2] *= x; - md[3] *= x; - md[4] *= x; - md[5] *= x; - md[6] *= x; - md[7] *= x; - md[8] = 1.0; - return 1; - } - error(from, to, model, err, count) { - let i = 0; - let pt0, pt1, ww = 0.0, dx = 0.0, dy = 0.0; - const m = model.data; - for (; i < count; ++i) { - pt0 = from[i]; - pt1 = to[i]; - ww = 1.0 / (m[6] * pt0.x + m[7] * pt0.y + 1.0); - dx = (m[0] * pt0.x + m[1] * pt0.y + m[2]) * ww - pt1.x; - dy = (m[3] * pt0.x + m[4] * pt0.y + m[5]) * ww - pt1.y; - err[i] = dx * dx + dy * dy; - } - } - check_subset(from, to, count) { - const _matmath = new matmath(); - if (count == 4) { - let negative = 0; - const fp0 = from[0], fp1 = from[1], fp2 = from[2], fp3 = from[3]; - const tp0 = to[0], tp1 = to[1], tp2 = to[2], tp3 = to[3]; - let A11 = fp0.x, A12 = fp0.y, A13 = 1.0; - let A21 = fp1.x, A22 = fp1.y, A23 = 1.0; - let A31 = fp2.x, A32 = fp2.y, A33 = 1.0; - let B11 = tp0.x, B12 = tp0.y, B13 = 1.0; - let B21 = tp1.x, B22 = tp1.y, B23 = 1.0; - let B31 = tp2.x, B32 = tp2.y, B33 = 1.0; - let detA = _matmath.determinant_3x3(A11, A12, A13, A21, A22, A23, A31, A32, A33); - let detB = _matmath.determinant_3x3(B11, B12, B13, B21, B22, B23, B31, B32, B33); - if (detA * detB < 0) - negative++; - (A11 = fp1.x), (A12 = fp1.y); - (A21 = fp2.x), (A22 = fp2.y); - (A31 = fp3.x), (A32 = fp3.y); - (B11 = tp1.x), (B12 = tp1.y); - (B21 = tp2.x), (B22 = tp2.y); - (B31 = tp3.x), (B32 = tp3.y); - detA = _matmath.determinant_3x3(A11, A12, A13, A21, A22, A23, A31, A32, A33); - detB = _matmath.determinant_3x3(B11, B12, B13, B21, B22, B23, B31, B32, B33); - if (detA * detB < 0) - negative++; - (A11 = fp0.x), (A12 = fp0.y); - (A21 = fp2.x), (A22 = fp2.y); - (A31 = fp3.x), (A32 = fp3.y); - (B11 = tp0.x), (B12 = tp0.y); - (B21 = tp2.x), (B22 = tp2.y); - (B31 = tp3.x), (B32 = tp3.y); - detA = _matmath.determinant_3x3(A11, A12, A13, A21, A22, A23, A31, A32, A33); - detB = _matmath.determinant_3x3(B11, B12, B13, B21, B22, B23, B31, B32, B33); - if (detA * detB < 0) - negative++; - (A11 = fp0.x), (A12 = fp0.y); - (A21 = fp1.x), (A22 = fp1.y); - (A31 = fp3.x), (A32 = fp3.y); - (B11 = tp0.x), (B12 = tp0.y); - (B21 = tp1.x), (B22 = tp1.y); - (B31 = tp3.x), (B32 = tp3.y); - detA = _matmath.determinant_3x3(A11, A12, A13, A21, A22, A23, A31, A32, A33); - detB = _matmath.determinant_3x3(B11, B12, B13, B21, B22, B23, B31, B32, B33); - if (detA * detB < 0) - negative++; - if (negative != 0 && negative != 4) { - return false; - } - } - return true; - } -} -jsfeatNext.cache = cache; -jsfeatNext.pyramid_t = class pyramid_t extends jsfeatNext { - levels; - data; - pyrdown; - constructor(levels) { - super(); - this.levels = levels | 0; - this.data = new Array(levels); - const _imgproc = new jsfeatNext.imgproc(); - this.pyrdown = _imgproc.pyrdown; - } - allocate(start_w, start_h, data_type) { - let i = this.levels; - while (--i >= 0) { - this.data[i] = new matrix_t(start_w >> i, start_h >> i, data_type); - } - } - build(input, skip_first_level) { - if (typeof skip_first_level === "undefined") { - skip_first_level = true; - } - let i = 2, a = input, b = this.data[0]; - if (!skip_first_level) { - let j = input.cols * input.rows; - while (--j >= 0) { - b.data[j] = input.data[j]; - } - } - b = this.data[1]; - this.pyrdown(a, b); - for (; i < this.levels; ++i) { - a = b; - b = this.data[i]; - this.pyrdown(a, b); - } - } -}; -jsfeatNext.transform = transform; -jsfeatNext.matrix_t = matrix_t; -jsfeatNext.keypoint_t = keypoint_t; -jsfeatNext.fast_corners = class fast_corners extends jsfeatNext { - offsets16; - _threshold; - threshold_tab; - pixel_off; - score_diff; - constructor() { - super(); - this.offsets16 = new Int32Array([ - 0, 3, 1, 3, 2, 2, 3, 1, 3, 0, 3, -1, 2, -2, 1, -3, 0, -3, -1, -3, -2, -2, -3, -1, -3, 0, -3, 1, -2, 2, -1, - 3, - ]); - this.threshold_tab = new Uint8Array(512); - this._threshold = 20; - this.pixel_off = new Int32Array(25); - this.score_diff = new Int32Array(25); - } - set_threshold(threshold) { - this._threshold = Math.min(Math.max(threshold, 0), 255); - for (let i = -255; i <= 255; ++i) { - this.threshold_tab[i + 255] = i < -this._threshold ? 1 : i > this._threshold ? 2 : 0; - } - return this._threshold; - } - detect(src, corners, border) { - if (typeof border === "undefined") { - border = 3; - } - const K = 8, N = 25; - const img = src.data, w = src.cols, h = src.rows; - let i = 0, j = 0, k = 0, vt = 0, x = 0, m3 = 0; - const buf_node = this.cache.get_buffer(3 * w); - const cpbuf_node = this.cache.get_buffer(((w + 1) * 3) << 2); - const buf = buf_node.u8; - const cpbuf = cpbuf_node.i32; - const pixel = this.pixel_off; - const sd = this.score_diff; - const sy = Math.max(3, border); - const ey = Math.min(h - 2, h - border); - const sx = Math.max(3, border); - const ex = Math.min(w - 3, w - border); - let _count = 0, corners_cnt = 0, pt; - const score_func = _cmp_score_16; - const thresh_tab = this.threshold_tab; - const threshold = this._threshold; - let v = 0, tab = 0, d = 0, ncorners = 0, cornerpos = 0, curr = 0, ptr = 0, prev = 0, pprev = 0; - let jp1 = 0, jm1 = 0, score = 0; - this._cmp_offsets(pixel, w, 16); - const pixel0 = pixel[0]; - const pixel1 = pixel[1]; - const pixel2 = pixel[2]; - const pixel3 = pixel[3]; - const pixel4 = pixel[4]; - const pixel5 = pixel[5]; - const pixel6 = pixel[6]; - const pixel7 = pixel[7]; - const pixel8 = pixel[8]; - const pixel9 = pixel[9]; - const pixel10 = pixel[10]; - const pixel11 = pixel[11]; - const pixel12 = pixel[12]; - const pixel13 = pixel[13]; - const pixel14 = pixel[14]; - const pixel15 = pixel[15]; - for (i = 0; i < w * 3; ++i) { - buf[i] = 0; - } - for (i = sy; i < ey; ++i) { - ptr = (i * w + sx) | 0; - m3 = (i - 3) % 3; - curr = (m3 * w) | 0; - cornerpos = (m3 * (w + 1)) | 0; - for (j = 0; j < w; ++j) - buf[curr + j] = 0; - ncorners = 0; - if (i < ey - 1) { - j = sx; - for (; j < ex; ++j, ++ptr) { - v = img[ptr]; - tab = -v + 255; - d = thresh_tab[tab + img[ptr + pixel0]] | thresh_tab[tab + img[ptr + pixel8]]; - if (d == 0) { - continue; - } - d &= thresh_tab[tab + img[ptr + pixel2]] | thresh_tab[tab + img[ptr + pixel10]]; - d &= thresh_tab[tab + img[ptr + pixel4]] | thresh_tab[tab + img[ptr + pixel12]]; - d &= thresh_tab[tab + img[ptr + pixel6]] | thresh_tab[tab + img[ptr + pixel14]]; - if (d == 0) { - continue; - } - d &= thresh_tab[tab + img[ptr + pixel1]] | thresh_tab[tab + img[ptr + pixel9]]; - d &= thresh_tab[tab + img[ptr + pixel3]] | thresh_tab[tab + img[ptr + pixel11]]; - d &= thresh_tab[tab + img[ptr + pixel5]] | thresh_tab[tab + img[ptr + pixel13]]; - d &= thresh_tab[tab + img[ptr + pixel7]] | thresh_tab[tab + img[ptr + pixel15]]; - if (d & 1) { - vt = v - threshold; - _count = 0; - for (k = 0; k < N; ++k) { - x = img[ptr + pixel[k]]; - if (x < vt) { - ++_count; - if (_count > K) { - ++ncorners; - cpbuf[cornerpos + ncorners] = j; - buf[curr + j] = score_func(img, ptr, pixel, sd, threshold); - break; - } - } - else { - _count = 0; - } - } - } - if (d & 2) { - vt = v + threshold; - _count = 0; - for (k = 0; k < N; ++k) { - x = img[ptr + pixel[k]]; - if (x > vt) { - ++_count; - if (_count > K) { - ++ncorners; - cpbuf[cornerpos + ncorners] = j; - buf[curr + j] = score_func(img, ptr, pixel, sd, threshold); - break; - } - } - else { - _count = 0; - } - } - } - } - } - cpbuf[cornerpos + w] = ncorners; - if (i == sy) { - continue; - } - m3 = (i - 4 + 3) % 3; - prev = (m3 * w) | 0; - cornerpos = (m3 * (w + 1)) | 0; - m3 = (i - 5 + 3) % 3; - pprev = (m3 * w) | 0; - ncorners = cpbuf[cornerpos + w]; - for (k = 0; k < ncorners; ++k) { - j = cpbuf[cornerpos + k]; - jp1 = (j + 1) | 0; - jm1 = (j - 1) | 0; - score = buf[prev + j]; - if (score > buf[prev + jp1] && - score > buf[prev + jm1] && - score > buf[pprev + jm1] && - score > buf[pprev + j] && - score > buf[pprev + jp1] && - score > buf[curr + jm1] && - score > buf[curr + j] && - score > buf[curr + jp1]) { - pt = corners[corners_cnt]; - (pt.x = j), (pt.y = i - 1), (pt.score = score); - corners_cnt++; - } - } - } - this.cache.put_buffer(buf_node); - this.cache.put_buffer(cpbuf_node); - return corners_cnt; - } - _cmp_offsets(pixel, step, pattern_size) { - let k = 0; - const offsets = this.offsets16; - for (; k < pattern_size; ++k) { - pixel[k] = offsets[k << 1] + offsets[(k << 1) + 1] * step; - } - for (; k < 25; ++k) { - pixel[k] = pixel[k - pattern_size]; - } - } -}; -jsfeatNext.imgproc = class imgproc extends jsfeatNext { - constructor() { - super(); - } - grayscale(src, w, h, dst, code) { - if (typeof code === "undefined") { - code = JSFEAT_CONSTANTS.COLOR_RGBA2GRAY; - } - let x = 0, y = 0, i = 0, j = 0, ir = 0, jr = 0; - let coeff_r = 4899, coeff_g = 9617, coeff_b = 1868, cn = 4; - if (code == JSFEAT_CONSTANTS.COLOR_BGRA2GRAY || code == JSFEAT_CONSTANTS.COLOR_BGR2GRAY) { - coeff_r = 1868; - coeff_b = 4899; - } - if (code == JSFEAT_CONSTANTS.COLOR_RGB2GRAY || code == JSFEAT_CONSTANTS.COLOR_BGR2GRAY) { - cn = 3; - } - const cn2 = cn << 1, cn3 = (cn * 3) | 0; - dst.resize(w, h, 1); - const dst_u8 = dst.data; - for (y = 0; y < h; ++y, j += w, i += w * cn) { - for (x = 0, ir = i, jr = j; x <= w - 4; x += 4, ir += cn << 2, jr += 4) { - dst_u8[jr] = (src[ir] * coeff_r + src[ir + 1] * coeff_g + src[ir + 2] * coeff_b + 8192) >> 14; - dst_u8[jr + 1] = - (src[ir + cn] * coeff_r + src[ir + cn + 1] * coeff_g + src[ir + cn + 2] * coeff_b + 8192) >> 14; - dst_u8[jr + 2] = - (src[ir + cn2] * coeff_r + src[ir + cn2 + 1] * coeff_g + src[ir + cn2 + 2] * coeff_b + 8192) >> 14; - dst_u8[jr + 3] = - (src[ir + cn3] * coeff_r + src[ir + cn3 + 1] * coeff_g + src[ir + cn3 + 2] * coeff_b + 8192) >> 14; - } - for (; x < w; ++x, ++jr, ir += cn) { - dst_u8[jr] = (src[ir] * coeff_r + src[ir + 1] * coeff_g + src[ir + 2] * coeff_b + 8192) >> 14; - } - } - } - resample(src, dst, nw, nh) { - const h = src.rows, w = src.cols; - if (h > nh && w > nw) { - dst.resize(nw, nh, src.channel); - if (src.type & JSFEAT_CONSTANTS.U8_t && dst.type & JSFEAT_CONSTANTS.U8_t && (h * w) / (nh * nw) < 0x100) { - _resample_u8(src, dst, this.cache, nw, nh); - } - else { - _resample(src, dst, this.cache, nw, nh); - } - } - } - box_blur_gray(src, dst, radius, options) { - if (typeof options === "undefined") { - options = 0; - } - const w = src.cols, h = src.rows, h2 = h << 1, w2 = w << 1; - let i = 0, x = 0, y = 0, end = 0; - const windowSize = ((radius << 1) + 1) | 0; - const radiusPlusOne = (radius + 1) | 0, radiusPlus2 = (radiusPlusOne + 1) | 0; - const scale = options & JSFEAT_CONSTANTS.BOX_BLUR_NOSCALE ? 1 : 1.0 / (windowSize * windowSize); - const tmp_buff = this.cache.get_buffer((w * h) << 2); - let sum = 0, dstIndex = 0, srcIndex = 0, nextPixelIndex = 0, previousPixelIndex = 0; - const data_i32 = tmp_buff.i32; - let data_u8 = src.data; - let hold = 0; - dst.resize(w, h, src.channel); - for (y = 0; y < h; ++y) { - dstIndex = y; - sum = radiusPlusOne * data_u8[srcIndex]; - for (i = (srcIndex + 1) | 0, end = (srcIndex + radius) | 0; i <= end; ++i) { - sum += data_u8[i]; - } - nextPixelIndex = (srcIndex + radiusPlusOne) | 0; - previousPixelIndex = srcIndex; - hold = data_u8[previousPixelIndex]; - for (x = 0; x < radius; ++x, dstIndex += h) { - data_i32[dstIndex] = sum; - sum += data_u8[nextPixelIndex] - hold; - nextPixelIndex++; - } - for (; x < w - radiusPlus2; x += 2, dstIndex += h2) { - data_i32[dstIndex] = sum; - sum += data_u8[nextPixelIndex] - data_u8[previousPixelIndex]; - data_i32[dstIndex + h] = sum; - sum += data_u8[nextPixelIndex + 1] - data_u8[previousPixelIndex + 1]; - nextPixelIndex += 2; - previousPixelIndex += 2; - } - for (; x < w - radiusPlusOne; ++x, dstIndex += h) { - data_i32[dstIndex] = sum; - sum += data_u8[nextPixelIndex] - data_u8[previousPixelIndex]; - nextPixelIndex++; - previousPixelIndex++; - } - hold = data_u8[nextPixelIndex - 1]; - for (; x < w; ++x, dstIndex += h) { - data_i32[dstIndex] = sum; - sum += hold - data_u8[previousPixelIndex]; - previousPixelIndex++; - } - srcIndex += w; - } - srcIndex = 0; - data_u8 = dst.data; - if (scale == 1) { - for (y = 0; y < w; ++y) { - dstIndex = y; - sum = radiusPlusOne * data_i32[srcIndex]; - for (i = (srcIndex + 1) | 0, end = (srcIndex + radius) | 0; i <= end; ++i) { - sum += data_i32[i]; - } - nextPixelIndex = srcIndex + radiusPlusOne; - previousPixelIndex = srcIndex; - hold = data_i32[previousPixelIndex]; - for (x = 0; x < radius; ++x, dstIndex += w) { - data_u8[dstIndex] = sum; - sum += data_i32[nextPixelIndex] - hold; - nextPixelIndex++; - } - for (; x < h - radiusPlus2; x += 2, dstIndex += w2) { - data_u8[dstIndex] = sum; - sum += data_i32[nextPixelIndex] - data_i32[previousPixelIndex]; - data_u8[dstIndex + w] = sum; - sum += data_i32[nextPixelIndex + 1] - data_i32[previousPixelIndex + 1]; - nextPixelIndex += 2; - previousPixelIndex += 2; - } - for (; x < h - radiusPlusOne; ++x, dstIndex += w) { - data_u8[dstIndex] = sum; - sum += data_i32[nextPixelIndex] - data_i32[previousPixelIndex]; - nextPixelIndex++; - previousPixelIndex++; - } - hold = data_i32[nextPixelIndex - 1]; - for (; x < h; ++x, dstIndex += w) { - data_u8[dstIndex] = sum; - sum += hold - data_i32[previousPixelIndex]; - previousPixelIndex++; - } - srcIndex += h; - } - } - else { - for (y = 0; y < w; ++y) { - dstIndex = y; - sum = radiusPlusOne * data_i32[srcIndex]; - for (i = (srcIndex + 1) | 0, end = (srcIndex + radius) | 0; i <= end; ++i) { - sum += data_i32[i]; - } - nextPixelIndex = srcIndex + radiusPlusOne; - previousPixelIndex = srcIndex; - hold = data_i32[previousPixelIndex]; - for (x = 0; x < radius; ++x, dstIndex += w) { - data_u8[dstIndex] = sum * scale; - sum += data_i32[nextPixelIndex] - hold; - nextPixelIndex++; - } - for (; x < h - radiusPlus2; x += 2, dstIndex += w2) { - data_u8[dstIndex] = sum * scale; - sum += data_i32[nextPixelIndex] - data_i32[previousPixelIndex]; - data_u8[dstIndex + w] = sum * scale; - sum += data_i32[nextPixelIndex + 1] - data_i32[previousPixelIndex + 1]; - nextPixelIndex += 2; - previousPixelIndex += 2; - } - for (; x < h - radiusPlusOne; ++x, dstIndex += w) { - data_u8[dstIndex] = sum * scale; - sum += data_i32[nextPixelIndex] - data_i32[previousPixelIndex]; - nextPixelIndex++; - previousPixelIndex++; - } - hold = data_i32[nextPixelIndex - 1]; - for (; x < h; ++x, dstIndex += w) { - data_u8[dstIndex] = sum * scale; - sum += hold - data_i32[previousPixelIndex]; - previousPixelIndex++; - } - srcIndex += h; - } - } - this.cache.put_buffer(tmp_buff); - } - gaussian_blur(src, dst, kernel_size, sigma) { - const jsfeatmath = new jsfeatNext.math(); - if (typeof sigma === "undefined") { - sigma = 0.0; - } - if (typeof kernel_size === "undefined") { - kernel_size = 0; - } - kernel_size = kernel_size == 0 ? (Math.max(1, 4.0 * sigma + 1.0 - 1e-8) * 2 + 1) | 0 : kernel_size; - const half_kernel = kernel_size >> 1; - const w = src.cols, h = src.rows; - const data_type = src.type, is_u8 = data_type & JSFEAT_CONSTANTS.U8_t; - dst.resize(w, h, src.channel); - const src_d = src.data, dst_d = dst.data; - let buf, filter, buf_sz = (kernel_size + Math.max(h, w)) | 0; - const buf_node = this.cache.get_buffer(buf_sz << 2); - const filt_node = this.cache.get_buffer(kernel_size << 2); - if (is_u8) { - buf = buf_node.i32; - filter = filt_node.i32; - } - else if (data_type & JSFEAT_CONSTANTS.S32_t) { - buf = buf_node.i32; - filter = filt_node.f32; - } - else { - buf = buf_node.f32; - filter = filt_node.f32; - } - jsfeatmath.get_gaussian_kernel(kernel_size, sigma, filter, data_type); - if (is_u8) { - _convol_u8(buf, src_d, dst_d, w, h, filter, kernel_size, half_kernel); - } - else { - _convol(buf, src_d, dst_d, w, h, filter, kernel_size, half_kernel); - } - this.cache.put_buffer(buf_node); - this.cache.put_buffer(filt_node); - } - hough_transform(img, rho_res, theta_res, threshold) { - let r; - let i; - const image = img.data; - const width = img.cols; - const height = img.rows; - const step = width; - const min_theta = 0.0; - const max_theta = Math.PI; - const numangle = Math.round((max_theta - min_theta) / theta_res); - const numrho = Math.round(((width + height) * 2 + 1) / rho_res); - const irho = 1.0 / rho_res; - const accum = new Int32Array((numangle + 2) * (numrho + 2)); - const tabSin = new Float32Array(numangle); - const tabCos = new Float32Array(numangle); - let n = 0; - let ang = min_theta; - for (; n < numangle; n++) { - tabSin[n] = Math.sin(ang) * irho; - tabCos[n] = Math.cos(ang) * irho; - ang += theta_res; - } - for (i = 0; i < height; i++) { - for (let j = 0; j < width; j++) { - if (image[i * step + j] != 0) { - for (n = 0; n < numangle; n++) { - r = Math.round(j * tabCos[n] + i * tabSin[n]); - r += (numrho - 1) / 2; - accum[(n + 1) * (numrho + 2) + r + 1] += 1; - } - } - } - } - const _sort_buf = []; - for (r = 0; r < numrho; r++) { - for (n = 0; n < numangle; n++) { - const base = (n + 1) * (numrho + 2) + r + 1; - if (accum[base] > threshold && - accum[base] > accum[base - 1] && - accum[base] >= accum[base + 1] && - accum[base] > accum[base - numrho - 2] && - accum[base] >= accum[base + numrho + 2]) { - _sort_buf.push(base); - } - } - } - _sort_buf.sort(function (l1, l2) { - return (accum[l1] > accum[l2] || (accum[l1] == accum[l2] && l1 < l2)); - }); - const linesMax = Math.min(numangle * numrho, _sort_buf.length); - const scale = 1.0 / (numrho + 2); - const lines = new Array(); - for (i = 0; i < linesMax; i++) { - const idx = _sort_buf[i]; - n = Math.floor(idx * scale) - 1; - r = idx - (n + 1) * (numrho + 2) - 1; - const lrho = (r - (numrho - 1) * 0.5) * rho_res; - const langle = n * theta_res; - lines.push([lrho, langle]); - } - return lines; - } - pyrdown(src, dst, sx, sy) { - if (typeof sx === "undefined") { - sx = 0; - } - if (typeof sy === "undefined") { - sy = 0; - } - const w = src.cols, h = src.rows; - const w2 = w >> 1, h2 = h >> 1; - const _w2 = w2 - (sx << 1), _h2 = h2 - (sy << 1); - let x = 0, y = 0, sptr = sx + sy * w, sline = 0, dptr = 0, dline = 0; - dst.resize(w2, h2, src.channel); - const src_d = src.data, dst_d = dst.data; - for (y = 0; y < _h2; ++y) { - sline = sptr; - dline = dptr; - for (x = 0; x <= _w2 - 2; x += 2, dline += 2, sline += 4) { - dst_d[dline] = (src_d[sline] + src_d[sline + 1] + src_d[sline + w] + src_d[sline + w + 1] + 2) >> 2; - dst_d[dline + 1] = - (src_d[sline + 2] + src_d[sline + 3] + src_d[sline + w + 2] + src_d[sline + w + 3] + 2) >> 2; - } - for (; x < _w2; ++x, ++dline, sline += 2) { - dst_d[dline] = (src_d[sline] + src_d[sline + 1] + src_d[sline + w] + src_d[sline + w + 1] + 2) >> 2; - } - sptr += w << 1; - dptr += w2; - } - } - scharr_derivatives(src, dst) { - const w = src.cols, h = src.rows; - let dstep = w << 1, x = 0, y = 0, x1 = 0, a, b, c, d, e, f; - let srow0 = 0, srow1 = 0, srow2 = 0, drow = 0; - let trow0, trow1; - dst.resize(w, h, 2); - const img = src.data, gxgy = dst.data; - const buf0_node = this.cache.get_buffer((w + 2) << 2); - const buf1_node = this.cache.get_buffer((w + 2) << 2); - if (src.type & JSFEAT_CONSTANTS.U8_t || src.type & JSFEAT_CONSTANTS.S32_t) { - trow0 = buf0_node.i32; - trow1 = buf1_node.i32; - } - else { - trow0 = buf0_node.f32; - trow1 = buf1_node.f32; - } - for (; y < h; ++y, srow1 += w) { - srow0 = ((y > 0 ? y - 1 : 1) * w) | 0; - srow2 = ((y < h - 1 ? y + 1 : h - 2) * w) | 0; - drow = (y * dstep) | 0; - for (x = 0, x1 = 1; x <= w - 2; x += 2, x1 += 2) { - (a = img[srow0 + x]), (b = img[srow2 + x]); - trow0[x1] = (a + b) * 3 + img[srow1 + x] * 10; - trow1[x1] = b - a; - (a = img[srow0 + x + 1]), (b = img[srow2 + x + 1]); - trow0[x1 + 1] = (a + b) * 3 + img[srow1 + x + 1] * 10; - trow1[x1 + 1] = b - a; - } - for (; x < w; ++x, ++x1) { - (a = img[srow0 + x]), (b = img[srow2 + x]); - trow0[x1] = (a + b) * 3 + img[srow1 + x] * 10; - trow1[x1] = b - a; - } - x = (w + 1) | 0; - trow0[0] = trow0[1]; - trow0[x] = trow0[w]; - trow1[0] = trow1[1]; - trow1[x] = trow1[w]; - for (x = 0; x <= w - 4; x += 4) { - (a = trow1[x + 2]), - (b = trow1[x + 1]), - (c = trow1[x + 3]), - (d = trow1[x + 4]), - (e = trow0[x + 2]), - (f = trow0[x + 3]); - gxgy[drow++] = e - trow0[x]; - gxgy[drow++] = (a + trow1[x]) * 3 + b * 10; - gxgy[drow++] = f - trow0[x + 1]; - gxgy[drow++] = (c + b) * 3 + a * 10; - gxgy[drow++] = trow0[x + 4] - e; - gxgy[drow++] = (d + a) * 3 + c * 10; - gxgy[drow++] = trow0[x + 5] - f; - gxgy[drow++] = (trow1[x + 5] + c) * 3 + d * 10; - } - for (; x < w; ++x) { - gxgy[drow++] = trow0[x + 2] - trow0[x]; - gxgy[drow++] = (trow1[x + 2] + trow1[x]) * 3 + trow1[x + 1] * 10; - } - } - this.cache.put_buffer(buf0_node); - this.cache.put_buffer(buf1_node); - } - sobel_derivatives(src, dst) { - const w = src.cols, h = src.rows; - let dstep = w << 1, x = 0, y = 0, x1 = 0, a, b, c, d, e, f; - let srow0 = 0, srow1 = 0, srow2 = 0, drow = 0; - let trow0, trow1; - dst.resize(w, h, 2); - const img = src.data, gxgy = dst.data; - const buf0_node = this.cache.get_buffer((w + 2) << 2); - const buf1_node = this.cache.get_buffer((w + 2) << 2); - if (src.type & JSFEAT_CONSTANTS.U8_t || src.type & JSFEAT_CONSTANTS.S32_t) { - trow0 = buf0_node.i32; - trow1 = buf1_node.i32; - } - else { - trow0 = buf0_node.f32; - trow1 = buf1_node.f32; - } - for (; y < h; ++y, srow1 += w) { - srow0 = ((y > 0 ? y - 1 : 1) * w) | 0; - srow2 = ((y < h - 1 ? y + 1 : h - 2) * w) | 0; - drow = (y * dstep) | 0; - for (x = 0, x1 = 1; x <= w - 2; x += 2, x1 += 2) { - (a = img[srow0 + x]), (b = img[srow2 + x]); - trow0[x1] = a + b + img[srow1 + x] * 2; - trow1[x1] = b - a; - (a = img[srow0 + x + 1]), (b = img[srow2 + x + 1]); - trow0[x1 + 1] = a + b + img[srow1 + x + 1] * 2; - trow1[x1 + 1] = b - a; - } - for (; x < w; ++x, ++x1) { - (a = img[srow0 + x]), (b = img[srow2 + x]); - trow0[x1] = a + b + img[srow1 + x] * 2; - trow1[x1] = b - a; - } - x = (w + 1) | 0; - trow0[0] = trow0[1]; - trow0[x] = trow0[w]; - trow1[0] = trow1[1]; - trow1[x] = trow1[w]; - for (x = 0; x <= w - 4; x += 4) { - (a = trow1[x + 2]), - (b = trow1[x + 1]), - (c = trow1[x + 3]), - (d = trow1[x + 4]), - (e = trow0[x + 2]), - (f = trow0[x + 3]); - gxgy[drow++] = e - trow0[x]; - gxgy[drow++] = a + trow1[x] + b * 2; - gxgy[drow++] = f - trow0[x + 1]; - gxgy[drow++] = c + b + a * 2; - gxgy[drow++] = trow0[x + 4] - e; - gxgy[drow++] = d + a + c * 2; - gxgy[drow++] = trow0[x + 5] - f; - gxgy[drow++] = trow1[x + 5] + c + d * 2; - } - for (; x < w; ++x) { - gxgy[drow++] = trow0[x + 2] - trow0[x]; - gxgy[drow++] = trow1[x + 2] + trow1[x] + trow1[x + 1] * 2; - } - } - this.cache.put_buffer(buf0_node); - this.cache.put_buffer(buf1_node); - } - compute_integral_image(src, dst_sum, dst_sqsum, dst_tilted) { - const w0 = src.cols | 0, h0 = src.rows | 0, src_d = src.data; - const w1 = (w0 + 1) | 0; - let s = 0, s2 = 0, p = 0, pup = 0, i = 0, j = 0, v = 0, k = 0; - if (dst_sum && dst_sqsum) { - for (; i < w1; ++i) { - (dst_sum[i] = 0), (dst_sqsum[i] = 0); - } - (p = (w1 + 1) | 0), (pup = 1); - for (i = 0, k = 0; i < h0; ++i, ++p, ++pup) { - s = s2 = 0; - for (j = 0; j <= w0 - 2; j += 2, k += 2, p += 2, pup += 2) { - v = src_d[k]; - (s += v), (s2 += v * v); - dst_sum[p] = dst_sum[pup] + s; - dst_sqsum[p] = dst_sqsum[pup] + s2; - v = src_d[k + 1]; - (s += v), (s2 += v * v); - dst_sum[p + 1] = dst_sum[pup + 1] + s; - dst_sqsum[p + 1] = dst_sqsum[pup + 1] + s2; - } - for (; j < w0; ++j, ++k, ++p, ++pup) { - v = src_d[k]; - (s += v), (s2 += v * v); - dst_sum[p] = dst_sum[pup] + s; - dst_sqsum[p] = dst_sqsum[pup] + s2; - } - } - } - else if (dst_sum) { - for (; i < w1; ++i) { - dst_sum[i] = 0; - } - (p = (w1 + 1) | 0), (pup = 1); - for (i = 0, k = 0; i < h0; ++i, ++p, ++pup) { - s = 0; - for (j = 0; j <= w0 - 2; j += 2, k += 2, p += 2, pup += 2) { - s += src_d[k]; - dst_sum[p] = dst_sum[pup] + s; - s += src_d[k + 1]; - dst_sum[p + 1] = dst_sum[pup + 1] + s; - } - for (; j < w0; ++j, ++k, ++p, ++pup) { - s += src_d[k]; - dst_sum[p] = dst_sum[pup] + s; - } - } - } - else if (dst_sqsum) { - for (; i < w1; ++i) { - dst_sqsum[i] = 0; - } - (p = (w1 + 1) | 0), (pup = 1); - for (i = 0, k = 0; i < h0; ++i, ++p, ++pup) { - s2 = 0; - for (j = 0; j <= w0 - 2; j += 2, k += 2, p += 2, pup += 2) { - v = src_d[k]; - s2 += v * v; - dst_sqsum[p] = dst_sqsum[pup] + s2; - v = src_d[k + 1]; - s2 += v * v; - dst_sqsum[p + 1] = dst_sqsum[pup + 1] + s2; - } - for (; j < w0; ++j, ++k, ++p, ++pup) { - v = src_d[k]; - s2 += v * v; - dst_sqsum[p] = dst_sqsum[pup] + s2; - } - } - } - if (dst_tilted) { - for (i = 0; i < w1; ++i) { - dst_tilted[i] = 0; - } - (p = (w1 + 1) | 0), (pup = 0); - for (i = 0, k = 0; i < h0; ++i, ++p, ++pup) { - for (j = 0; j <= w0 - 2; j += 2, k += 2, p += 2, pup += 2) { - dst_tilted[p] = src_d[k] + dst_tilted[pup]; - dst_tilted[p + 1] = src_d[k + 1] + dst_tilted[pup + 1]; - } - for (; j < w0; ++j, ++k, ++p, ++pup) { - dst_tilted[p] = src_d[k] + dst_tilted[pup]; - } - } - (p = (w1 + w0) | 0), (pup = w0); - for (i = 0; i < h0; ++i, p += w1, pup += w1) { - dst_tilted[p] += dst_tilted[pup]; - } - for (j = w0 - 1; j > 0; --j) { - (p = j + h0 * w1), (pup = p - w1); - for (i = h0; i > 0; --i, p -= w1, pup -= w1) { - dst_tilted[p] += dst_tilted[pup] + dst_tilted[pup + 1]; - } - } - } - } - equalize_histogram(src, dst) { - const w = src.cols, h = src.rows, src_d = src.data; - dst.resize(w, h, src.channel); - const dst_d = dst.data, size = w * h; - let i = 0, prev = 0, hist0, norm; - const hist0_node = this.cache.get_buffer(256 << 2); - hist0 = hist0_node.i32; - for (; i < 256; ++i) - hist0[i] = 0; - for (i = 0; i < size; ++i) { - ++hist0[src_d[i]]; - } - prev = hist0[0]; - for (i = 1; i < 256; ++i) { - prev = hist0[i] += prev; - } - norm = 255 / size; - for (i = 0; i < size; ++i) { - dst_d[i] = (hist0[src_d[i]] * norm + 0.5) | 0; - } - this.cache.put_buffer(hist0_node); - } - canny(src, dst, low_thresh, high_thresh) { - const w = src.cols, h = src.rows, src_d = src.data; - dst.resize(w, h, src.channel); - const dst_d = dst.data; - let i = 0, j = 0, grad = 0, w2 = w << 1, _grad = 0, suppress = 0, f = 0, x = 0, y = 0, s = 0; - let tg22x = 0, tg67x = 0; - const dxdy_node = this.cache.get_buffer((h * w2) << 2); - const buf_node = this.cache.get_buffer((3 * (w + 2)) << 2); - const map_node = this.cache.get_buffer(((h + 2) * (w + 2)) << 2); - const stack_node = this.cache.get_buffer((h * w) << 2); - const buf = buf_node.i32; - const map = map_node.i32; - const stack = stack_node.i32; - const dxdy = dxdy_node.i32; - const dxdy_m = new matrix_t(w, h, JSFEAT_CONSTANTS.S32C2_t, dxdy_node.data); - let row0 = 1, row1 = (w + 2 + 1) | 0, row2 = (2 * (w + 2) + 1) | 0, map_w = (w + 2) | 0, map_i = (map_w + 1) | 0, stack_i = 0; - this.sobel_derivatives(src, dxdy_m); - if (low_thresh > high_thresh) { - i = low_thresh; - low_thresh = high_thresh; - high_thresh = i; - } - i = (3 * (w + 2)) | 0; - while (--i >= 0) { - buf[i] = 0; - } - i = ((h + 2) * (w + 2)) | 0; - while (--i >= 0) { - map[i] = 0; - } - for (; j < w; ++j, grad += 2) { - (x = dxdy[grad]), (y = dxdy[grad + 1]); - buf[row1 + j] = (x ^ (x >> 31)) - (x >> 31) + ((y ^ (y >> 31)) - (y >> 31)); - } - for (i = 1; i <= h; ++i, grad += w2) { - if (i == h) { - j = row2 + w; - while (--j >= row2) { - buf[j] = 0; - } - } - else { - for (j = 0; j < w; j++) { - (x = dxdy[grad + (j << 1)]), (y = dxdy[grad + (j << 1) + 1]); - buf[row2 + j] = (x ^ (x >> 31)) - (x >> 31) + ((y ^ (y >> 31)) - (y >> 31)); - } - } - _grad = (grad - w2) | 0; - map[map_i - 1] = 0; - suppress = 0; - for (j = 0; j < w; ++j, _grad += 2) { - f = buf[row1 + j]; - if (f > low_thresh) { - x = dxdy[_grad]; - y = dxdy[_grad + 1]; - s = x ^ y; - x = ((x ^ (x >> 31)) - (x >> 31)) | 0; - y = ((y ^ (y >> 31)) - (y >> 31)) | 0; - tg22x = x * 13573; - tg67x = tg22x + ((x + x) << 15); - y <<= 15; - if (y < tg22x) { - if (f > buf[row1 + j - 1] && f >= buf[row1 + j + 1]) { - if (f > high_thresh && !suppress && map[map_i + j - map_w] != 2) { - map[map_i + j] = 2; - suppress = 1; - stack[stack_i++] = map_i + j; - } - else { - map[map_i + j] = 1; - } - continue; - } - } - else if (y > tg67x) { - if (f > buf[row0 + j] && f >= buf[row2 + j]) { - if (f > high_thresh && !suppress && map[map_i + j - map_w] != 2) { - map[map_i + j] = 2; - suppress = 1; - stack[stack_i++] = map_i + j; - } - else { - map[map_i + j] = 1; - } - continue; - } - } - else { - s = s < 0 ? -1 : 1; - if (f > buf[row0 + j - s] && f > buf[row2 + j + s]) { - if (f > high_thresh && !suppress && map[map_i + j - map_w] != 2) { - map[map_i + j] = 2; - suppress = 1; - stack[stack_i++] = map_i + j; - } - else { - map[map_i + j] = 1; - } - continue; - } - } - } - map[map_i + j] = 0; - suppress = 0; - } - map[map_i + w] = 0; - map_i += map_w; - j = row0; - row0 = row1; - row1 = row2; - row2 = j; - } - j = map_i - map_w - 1; - for (i = 0; i < map_w; ++i, ++j) { - map[j] = 0; - } - while (stack_i > 0) { - map_i = stack[--stack_i]; - map_i -= map_w + 1; - if (map[map_i] == 1) - (map[map_i] = 2), (stack[stack_i++] = map_i); - map_i += 1; - if (map[map_i] == 1) - (map[map_i] = 2), (stack[stack_i++] = map_i); - map_i += 1; - if (map[map_i] == 1) - (map[map_i] = 2), (stack[stack_i++] = map_i); - map_i += map_w; - if (map[map_i] == 1) - (map[map_i] = 2), (stack[stack_i++] = map_i); - map_i -= 2; - if (map[map_i] == 1) - (map[map_i] = 2), (stack[stack_i++] = map_i); - map_i += map_w; - if (map[map_i] == 1) - (map[map_i] = 2), (stack[stack_i++] = map_i); - map_i += 1; - if (map[map_i] == 1) - (map[map_i] = 2), (stack[stack_i++] = map_i); - map_i += 1; - if (map[map_i] == 1) - (map[map_i] = 2), (stack[stack_i++] = map_i); - } - map_i = map_w + 1; - row0 = 0; - for (i = 0; i < h; ++i, map_i += map_w) { - for (j = 0; j < w; ++j) { - dst_d[row0++] = Number(map[map_i + j] == 2) * 0xff; - } - } - this.cache.put_buffer(dxdy_node); - this.cache.put_buffer(buf_node); - this.cache.put_buffer(map_node); - this.cache.put_buffer(stack_node); - } - warp_perspective(src, dst, transform, fill_value) { - if (typeof fill_value === "undefined") { - fill_value = 0; - } - const src_width = src.cols | 0, src_height = src.rows | 0, dst_width = dst.cols | 0, dst_height = dst.rows | 0; - const src_d = src.data, dst_d = dst.data; - let x = 0, y = 0, off = 0, ixs = 0, iys = 0, xs = 0.0, ys = 0.0, xs0 = 0.0, ys0 = 0.0, ws = 0.0, sc = 0.0, a = 0.0, b = 0.0, p0 = 0.0, p1 = 0.0; - const td = transform.data; - const m00 = td[0], m01 = td[1], m02 = td[2], m10 = td[3], m11 = td[4], m12 = td[5], m20 = td[6], m21 = td[7], m22 = td[8]; - for (let dptr = 0; y < dst_height; ++y) { - (xs0 = m01 * y + m02), (ys0 = m11 * y + m12), (ws = m21 * y + m22); - for (x = 0; x < dst_width; ++x, ++dptr, xs0 += m00, ys0 += m10, ws += m20) { - sc = 1.0 / ws; - (xs = xs0 * sc), (ys = ys0 * sc); - (ixs = xs | 0), (iys = ys | 0); - if (xs > 0 && ys > 0 && ixs < src_width - 1 && iys < src_height - 1) { - a = Math.max(xs - ixs, 0.0); - b = Math.max(ys - iys, 0.0); - off = (src_width * iys + ixs) | 0; - p0 = src_d[off] + a * (src_d[off + 1] - src_d[off]); - p1 = src_d[off + src_width] + a * (src_d[off + src_width + 1] - src_d[off + src_width]); - dst_d[dptr] = p0 + b * (p1 - p0); - } - else - dst_d[dptr] = fill_value; - } - } - } - warp_affine(src, dst, transform, fill_value) { - if (typeof fill_value === "undefined") { - fill_value = 0; - } - const src_width = src.cols, src_height = src.rows, dst_width = dst.cols, dst_height = dst.rows; - const src_d = src.data, dst_d = dst.data; - let x = 0, y = 0, off = 0, ixs = 0, iys = 0, xs = 0.0, ys = 0.0, a = 0.0, b = 0.0, p0 = 0.0, p1 = 0.0; - const td = transform.data; - const m00 = td[0], m01 = td[1], m02 = td[2], m10 = td[3], m11 = td[4], m12 = td[5]; - for (let dptr = 0; y < dst_height; ++y) { - xs = m01 * y + m02; - ys = m11 * y + m12; - for (x = 0; x < dst_width; ++x, ++dptr, xs += m00, ys += m10) { - ixs = xs | 0; - iys = ys | 0; - if (ixs >= 0 && iys >= 0 && ixs < src_width - 1 && iys < src_height - 1) { - a = xs - ixs; - b = ys - iys; - off = src_width * iys + ixs; - p0 = src_d[off] + a * (src_d[off + 1] - src_d[off]); - p1 = src_d[off + src_width] + a * (src_d[off + src_width + 1] - src_d[off + src_width]); - dst_d[dptr] = p0 + b * (p1 - p0); - } - else - dst_d[dptr] = fill_value; - } - } - } - skindetector(src, dst) { - let r, g, b, j; - let i = src.width * src.height; - while (i--) { - j = i * 4; - r = src.data[j]; - g = src.data[j + 1]; - b = src.data[j + 2]; - if (r > 95 && g > 40 && b > 20 && r > g && r > b && r - Math.min(g, b) > 15 && Math.abs(r - g) > 15) { - dst[i] = 255; - } - else { - dst[i] = 0; - } - } - } -}; -jsfeatNext.math = class math extends jsfeatNext { - qsort_stack; - constructor() { - super(); - this.qsort_stack = new Int32Array(48 * 2); - } - get_gaussian_kernel(size, sigma, kernel, data_type) { - let i = 0, x = 0.0, t = 0.0, sigma_x = 0.0, scale_2x = 0.0; - let sum = 0.0; - const kern_node = this.cache.get_buffer(size << 2); - const _kernel = kern_node.f32; - if ((size & 1) == 1 && size <= 7 && sigma <= 0) { - switch (size >> 1) { - case 0: - _kernel[0] = 1.0; - sum = 1.0; - break; - case 1: - (_kernel[0] = 0.25), (_kernel[1] = 0.5), (_kernel[2] = 0.25); - sum = 0.25 + 0.5 + 0.25; - break; - case 2: - (_kernel[0] = 0.0625), - (_kernel[1] = 0.25), - (_kernel[2] = 0.375), - (_kernel[3] = 0.25), - (_kernel[4] = 0.0625); - sum = 0.0625 + 0.25 + 0.375 + 0.25 + 0.0625; - break; - case 3: - (_kernel[0] = 0.03125), - (_kernel[1] = 0.109375), - (_kernel[2] = 0.21875), - (_kernel[3] = 0.28125), - (_kernel[4] = 0.21875), - (_kernel[5] = 0.109375), - (_kernel[6] = 0.03125); - sum = 0.03125 + 0.109375 + 0.21875 + 0.28125 + 0.21875 + 0.109375 + 0.03125; - break; - } - } - else { - sigma_x = sigma > 0 ? sigma : ((size - 1) * 0.5 - 1.0) * 0.3 + 0.8; - scale_2x = -0.5 / (sigma_x * sigma_x); - for (; i < size; ++i) { - x = i - (size - 1) * 0.5; - t = Math.exp(scale_2x * x * x); - _kernel[i] = t; - sum += t; - } - } - if (data_type & JSFEAT_CONSTANTS.U8_t) { - sum = 256.0 / sum; - for (i = 0; i < size; ++i) { - kernel[i] = (_kernel[i] * sum + 0.5) | 0; - } - } - else { - sum = 1.0 / sum; - for (i = 0; i < size; ++i) { - kernel[i] = _kernel[i] * sum; - } - } - this.cache.put_buffer(kern_node); - } - perspective_4point_transform(model, src_x0, src_y0, dst_x0, dst_y0, src_x1, src_y1, dst_x1, dst_y1, src_x2, src_y2, dst_x2, dst_y2, src_x3, src_y3, dst_x3, dst_y3) { - console.warn("⚠️⚠️⚠️ This method is deprecated ad will be removed in the next releases, use transform.perspective_4point_transform() instead. ⚠️⚠️⚠️"); - let t1 = src_x0; - let t2 = src_x2; - let t4 = src_y1; - let t5 = t1 * t2 * t4; - let t6 = src_y3; - let t7 = t1 * t6; - let t8 = t2 * t7; - let t9 = src_y2; - let t10 = t1 * t9; - let t11 = src_x1; - let t14 = src_y0; - let t15 = src_x3; - let t16 = t14 * t15; - let t18 = t16 * t11; - let t20 = t15 * t11 * t9; - let t21 = t15 * t4; - let t24 = t15 * t9; - let t25 = t2 * t4; - let t26 = t6 * t2; - let t27 = t6 * t11; - let t28 = t9 * t11; - let t30 = 1.0 / (t21 - t24 - t25 + t26 - t27 + t28); - let t32 = t1 * t15; - let t35 = t14 * t11; - let t41 = t4 * t1; - let t42 = t6 * t41; - let t43 = t14 * t2; - let t46 = t16 * t9; - let t48 = t14 * t9 * t11; - let t51 = t4 * t6 * t2; - let t55 = t6 * t14; - let Hr0 = -(t8 - t5 + t10 * t11 - t11 * t7 - t16 * t2 + t18 - t20 + t21 * t2) * t30; - let Hr1 = (t5 - t8 - t32 * t4 + t32 * t9 + t18 - t2 * t35 + t27 * t2 - t20) * t30; - let Hr2 = t1; - let Hr3 = (-t9 * t7 + t42 + t43 * t4 - t16 * t4 + t46 - t48 + t27 * t9 - t51) * t30; - let Hr4 = (-t42 + t41 * t9 - t55 * t2 + t46 - t48 + t55 * t11 + t51 - t21 * t9) * t30; - let Hr5 = t14; - let Hr6 = (-t10 + t41 + t43 - t35 + t24 - t21 - t26 + t27) * t30; - let Hr7 = (-t7 + t10 + t16 - t43 + t27 - t28 - t21 + t25) * t30; - t1 = dst_x0; - t2 = dst_x2; - t4 = dst_y1; - t5 = t1 * t2 * t4; - t6 = dst_y3; - t7 = t1 * t6; - t8 = t2 * t7; - t9 = dst_y2; - t10 = t1 * t9; - t11 = dst_x1; - t14 = dst_y0; - t15 = dst_x3; - t16 = t14 * t15; - t18 = t16 * t11; - t20 = t15 * t11 * t9; - t21 = t15 * t4; - t24 = t15 * t9; - t25 = t2 * t4; - t26 = t6 * t2; - t27 = t6 * t11; - t28 = t9 * t11; - t30 = 1.0 / (t21 - t24 - t25 + t26 - t27 + t28); - t32 = t1 * t15; - t35 = t14 * t11; - t41 = t4 * t1; - t42 = t6 * t41; - t43 = t14 * t2; - t46 = t16 * t9; - t48 = t14 * t9 * t11; - t51 = t4 * t6 * t2; - t55 = t6 * t14; - let Hl0 = -(t8 - t5 + t10 * t11 - t11 * t7 - t16 * t2 + t18 - t20 + t21 * t2) * t30; - let Hl1 = (t5 - t8 - t32 * t4 + t32 * t9 + t18 - t2 * t35 + t27 * t2 - t20) * t30; - let Hl2 = t1; - let Hl3 = (-t9 * t7 + t42 + t43 * t4 - t16 * t4 + t46 - t48 + t27 * t9 - t51) * t30; - let Hl4 = (-t42 + t41 * t9 - t55 * t2 + t46 - t48 + t55 * t11 + t51 - t21 * t9) * t30; - let Hl5 = t14; - let Hl6 = (-t10 + t41 + t43 - t35 + t24 - t21 - t26 + t27) * t30; - let Hl7 = (-t7 + t10 + t16 - t43 + t27 - t28 - t21 + t25) * t30; - t2 = Hr4 - Hr7 * Hr5; - t4 = Hr0 * Hr4; - t5 = Hr0 * Hr5; - t7 = Hr3 * Hr1; - t8 = Hr2 * Hr3; - t10 = Hr1 * Hr6; - let t12 = Hr2 * Hr6; - t15 = 1.0 / (t4 - t5 * Hr7 - t7 + t8 * Hr7 + t10 * Hr5 - t12 * Hr4); - t18 = -Hr3 + Hr5 * Hr6; - let t23 = -Hr3 * Hr7 + Hr4 * Hr6; - t28 = -Hr1 + Hr2 * Hr7; - let t31 = Hr0 - t12; - t35 = Hr0 * Hr7 - t10; - t41 = -Hr1 * Hr5 + Hr2 * Hr4; - let t44 = t5 - t8; - let t47 = t4 - t7; - t48 = t2 * t15; - let t49 = t28 * t15; - let t50 = t41 * t15; - const mat = model.data; - mat[0] = Hl0 * t48 + Hl1 * (t18 * t15) - Hl2 * (t23 * t15); - mat[1] = Hl0 * t49 + Hl1 * (t31 * t15) - Hl2 * (t35 * t15); - mat[2] = -Hl0 * t50 - Hl1 * (t44 * t15) + Hl2 * (t47 * t15); - mat[3] = Hl3 * t48 + Hl4 * (t18 * t15) - Hl5 * (t23 * t15); - mat[4] = Hl3 * t49 + Hl4 * (t31 * t15) - Hl5 * (t35 * t15); - mat[5] = -Hl3 * t50 - Hl4 * (t44 * t15) + Hl5 * (t47 * t15); - mat[6] = Hl6 * t48 + Hl7 * (t18 * t15) - t23 * t15; - mat[7] = Hl6 * t49 + Hl7 * (t31 * t15) - t35 * t15; - mat[8] = -Hl6 * t50 - Hl7 * (t44 * t15) + t47 * t15; - } - qsort(array, low, high, cmp) { - const isort_thresh = 7; - let t, ta, tb, tc; - let sp = 0, left = 0, right = 0, i = 0, n = 0, m = 0, ptr = 0, ptr2 = 0, d = 0; - let left0 = 0, left1 = 0, right0 = 0, right1 = 0, pivot = 0, a = 0, b = 0, c = 0, swap_cnt = 0; - const stack = this.qsort_stack; - if (high - low + 1 <= 1) - return; - stack[0] = low; - stack[1] = high; - while (sp >= 0) { - left = stack[sp << 1]; - right = stack[(sp << 1) + 1]; - sp--; - for (;;) { - n = right - left + 1; - if (n <= isort_thresh) { - for (ptr = left + 1; ptr <= right; ptr++) { - for (ptr2 = ptr; ptr2 > left && cmp(array[ptr2], array[ptr2 - 1]); ptr2--) { - t = array[ptr2]; - array[ptr2] = array[ptr2 - 1]; - array[ptr2 - 1] = t; - } - } - break; - } - else { - swap_cnt = 0; - left0 = left; - right0 = right; - pivot = left + (n >> 1); - if (n > 40) { - d = n >> 3; - (a = left), (b = left + d), (c = left + (d << 1)); - (ta = array[a]), (tb = array[b]), (tc = array[c]); - left = cmp(ta, tb) - ? cmp(tb, tc) - ? b - : cmp(ta, tc) - ? c - : a - : cmp(tc, tb) - ? b - : cmp(ta, tc) - ? a - : c; - (a = pivot - d), (b = pivot), (c = pivot + d); - (ta = array[a]), (tb = array[b]), (tc = array[c]); - pivot = cmp(ta, tb) - ? cmp(tb, tc) - ? b - : cmp(ta, tc) - ? c - : a - : cmp(tc, tb) - ? b - : cmp(ta, tc) - ? a - : c; - (a = right - (d << 1)), (b = right - d), (c = right); - (ta = array[a]), (tb = array[b]), (tc = array[c]); - right = cmp(ta, tb) - ? cmp(tb, tc) - ? b - : cmp(ta, tc) - ? c - : a - : cmp(tc, tb) - ? b - : cmp(ta, tc) - ? a - : c; - } - (a = left), (b = pivot), (c = right); - (ta = array[a]), (tb = array[b]), (tc = array[c]); - pivot = cmp(ta, tb) - ? cmp(tb, tc) - ? b - : cmp(ta, tc) - ? c - : a - : cmp(tc, tb) - ? b - : cmp(ta, tc) - ? a - : c; - if (pivot != left0) { - t = array[pivot]; - array[pivot] = array[left0]; - array[left0] = t; - pivot = left0; - } - left = left1 = left0 + 1; - right = right1 = right0; - ta = array[pivot]; - for (;;) { - while (left <= right && !cmp(ta, array[left])) { - if (!cmp(array[left], ta)) { - if (left > left1) { - t = array[left1]; - array[left1] = array[left]; - array[left] = t; - } - swap_cnt = 1; - left1++; - } - left++; - } - while (left <= right && !cmp(array[right], ta)) { - if (!cmp(ta, array[right])) { - if (right < right1) { - t = array[right1]; - array[right1] = array[right]; - array[right] = t; - } - swap_cnt = 1; - right1--; - } - right--; - } - if (left > right) - break; - t = array[left]; - array[left] = array[right]; - array[right] = t; - swap_cnt = 1; - left++; - right--; - } - if (swap_cnt == 0) { - (left = left0), (right = right0); - for (ptr = left + 1; ptr <= right; ptr++) { - for (ptr2 = ptr; ptr2 > left && cmp(array[ptr2], array[ptr2 - 1]); ptr2--) { - t = array[ptr2]; - array[ptr2] = array[ptr2 - 1]; - array[ptr2 - 1] = t; - } - } - break; - } - n = Math.min(left1 - left0, left - left1); - m = (left - n) | 0; - for (i = 0; i < n; ++i, ++m) { - t = array[left0 + i]; - array[left0 + i] = array[m]; - array[m] = t; - } - n = Math.min(right0 - right1, right1 - right); - m = (right0 - n + 1) | 0; - for (i = 0; i < n; ++i, ++m) { - t = array[left + i]; - array[left + i] = array[m]; - array[m] = t; - } - n = left - left1; - m = right1 - right; - if (n > 1) { - if (m > 1) { - if (n > m) { - ++sp; - stack[sp << 1] = left0; - stack[(sp << 1) + 1] = left0 + n - 1; - (left = right0 - m + 1), (right = right0); - } - else { - ++sp; - stack[sp << 1] = right0 - m + 1; - stack[(sp << 1) + 1] = right0; - (left = left0), (right = left0 + n - 1); - } - } - else { - (left = left0), (right = left0 + n - 1); - } - } - else if (m > 1) - (left = right0 - m + 1), (right = right0); - else - break; - } - } - } - } - median(array, low, high) { - let w; - let middle = 0, ll = 0, hh = 0, median = (low + high) >> 1; - for (;;) { - if (high <= low) - return array[median]; - if (high == low + 1) { - if (array[low] > array[high]) { - w = array[low]; - array[low] = array[high]; - array[high] = w; - } - return array[median]; - } - middle = (low + high) >> 1; - if (array[middle] > array[high]) { - w = array[middle]; - array[middle] = array[high]; - array[high] = w; - } - if (array[low] > array[high]) { - w = array[low]; - array[low] = array[high]; - array[high] = w; - } - if (array[middle] > array[low]) { - w = array[middle]; - array[middle] = array[low]; - array[low] = w; - } - ll = low + 1; - w = array[middle]; - array[middle] = array[ll]; - array[ll] = w; - hh = high; - for (;;) { - do - ++ll; - while (array[low] > array[ll]); - do - --hh; - while (array[hh] > array[low]); - if (hh < ll) - break; - w = array[ll]; - array[ll] = array[hh]; - array[hh] = w; - } - w = array[low]; - array[low] = array[hh]; - array[hh] = w; - if (hh <= median) - low = ll; - else if (hh >= median) - high = hh - 1; - } - return 0; - } -}; -jsfeatNext.matmath = matmath; -jsfeatNext.linalg = class linalg extends jsfeatNext { - matmath; - constructor() { - super(); - this.matmath = new matmath(); - } - JacobiImpl(A, astep, W, V, vstep, n) { - const eps = JSFEAT_CONSTANTS.EPSILON; - let i = 0, j = 0, k = 0, m = 0, l = 0, idx = 0, _in = 0, _in2 = 0; - let iters = 0, max_iter = n * n * 30; - let mv = 0.0, val = 0.0, p = 0.0, y = 0.0, t = 0.0, s = 0.0, c = 0.0, a0 = 0.0, b0 = 0.0; - const indR_buff = this.cache.get_buffer(n << 2); - const indC_buff = this.cache.get_buffer(n << 2); - const indR = indR_buff.i32; - const indC = indC_buff.i32; - if (V) { - for (; i < n; i++) { - k = i * vstep; - for (j = 0; j < n; j++) { - V[k + j] = 0.0; - } - V[k + i] = 1.0; - } - } - for (k = 0; k < n; k++) { - W[k] = A[(astep + 1) * k]; - if (k < n - 1) { - for (m = k + 1, mv = Math.abs(A[astep * k + m]), i = k + 2; i < n; i++) { - val = Math.abs(A[astep * k + i]); - if (mv < val) - (mv = val), (m = i); - } - indR[k] = m; - } - if (k > 0) { - for (m = 0, mv = Math.abs(A[k]), i = 1; i < k; i++) { - val = Math.abs(A[astep * i + k]); - if (mv < val) - (mv = val), (m = i); - } - indC[k] = m; - } - } - if (n > 1) - for (; iters < max_iter; iters++) { - for (k = 0, mv = Math.abs(A[indR[0]]), i = 1; i < n - 1; i++) { - val = Math.abs(A[astep * i + indR[i]]); - if (mv < val) - (mv = val), (k = i); - } - l = indR[k]; - for (i = 1; i < n; i++) { - val = Math.abs(A[astep * indC[i] + i]); - if (mv < val) - (mv = val), (k = indC[i]), (l = i); - } - p = A[astep * k + l]; - if (Math.abs(p) <= eps) - break; - y = (W[l] - W[k]) * 0.5; - t = Math.abs(y) + hypot(p, y); - s = hypot(p, t); - c = t / s; - s = p / s; - t = (p / t) * p; - if (y < 0) - (s = -s), (t = -t); - A[astep * k + l] = 0; - W[k] -= t; - W[l] += t; - for (i = 0; i < k; i++) { - _in = astep * i + k; - _in2 = astep * i + l; - a0 = A[_in]; - b0 = A[_in2]; - A[_in] = a0 * c - b0 * s; - A[_in2] = a0 * s + b0 * c; - } - for (i = k + 1; i < l; i++) { - _in = astep * k + i; - _in2 = astep * i + l; - a0 = A[_in]; - b0 = A[_in2]; - A[_in] = a0 * c - b0 * s; - A[_in2] = a0 * s + b0 * c; - } - i = l + 1; - _in = astep * k + i; - _in2 = astep * l + i; - for (; i < n; i++, _in++, _in2++) { - a0 = A[_in]; - b0 = A[_in2]; - A[_in] = a0 * c - b0 * s; - A[_in2] = a0 * s + b0 * c; - } - if (V) { - _in = vstep * k; - _in2 = vstep * l; - for (i = 0; i < n; i++, _in++, _in2++) { - a0 = V[_in]; - b0 = V[_in2]; - V[_in] = a0 * c - b0 * s; - V[_in2] = a0 * s + b0 * c; - } - } - for (j = 0; j < 2; j++) { - idx = j == 0 ? k : l; - if (idx < n - 1) { - for (m = idx + 1, mv = Math.abs(A[astep * idx + m]), i = idx + 2; i < n; i++) { - val = Math.abs(A[astep * idx + i]); - if (mv < val) - (mv = val), (m = i); - } - indR[idx] = m; - } - if (idx > 0) { - for (m = 0, mv = Math.abs(A[idx]), i = 1; i < idx; i++) { - val = Math.abs(A[astep * i + idx]); - if (mv < val) - (mv = val), (m = i); - } - indC[idx] = m; - } - } - } - for (k = 0; k < n - 1; k++) { - m = k; - for (i = k + 1; i < n; i++) { - if (W[m] < W[i]) - m = i; - } - if (k != m) { - swap(W, m, k, mv); - if (V) { - for (i = 0; i < n; i++) { - swap(V, vstep * m + i, vstep * k + i, mv); - } - } - } - } - this.cache.put_buffer(indR_buff); - this.cache.put_buffer(indC_buff); - } - JacobiSVDImpl(At, astep, _W, Vt, vstep, m, n, n1) { - const eps = JSFEAT_CONSTANTS.EPSILON * 2.0; - const minval = JSFEAT_CONSTANTS.FLT_MIN; - let i = 0, j = 0, k = 0, iter = 0, max_iter = Math.max(m, 30); - let Ai = 0, Aj = 0, Vi = 0, Vj = 0, changed = 0; - let c = 0.0, s = 0.0, t = 0.0; - let t0 = 0.0, t1 = 0.0, sd = 0.0, beta = 0.0, gamma = 0.0, delta = 0.0, a = 0.0, p = 0.0, b = 0.0; - let seed = 0x1234; - let val = 0.0, val0 = 0.0, asum = 0.0; - const W_buff = this.cache.get_buffer(n << 3); - const W = W_buff.f64; - for (; i < n; i++) { - for (k = 0, sd = 0; k < m; k++) { - t = At[i * astep + k]; - sd += t * t; - } - W[i] = sd; - if (Vt) { - for (k = 0; k < n; k++) { - Vt[i * vstep + k] = 0; - } - Vt[i * vstep + i] = 1; - } - } - for (; iter < max_iter; iter++) { - changed = 0; - for (i = 0; i < n - 1; i++) { - for (j = i + 1; j < n; j++) { - (Ai = (i * astep) | 0), (Aj = (j * astep) | 0); - (a = W[i]), (p = 0), (b = W[j]); - k = 2; - p += At[Ai] * At[Aj]; - p += At[Ai + 1] * At[Aj + 1]; - for (; k < m; k++) - p += At[Ai + k] * At[Aj + k]; - if (Math.abs(p) <= eps * Math.sqrt(a * b)) - continue; - p *= 2.0; - (beta = a - b), (gamma = hypot(p, beta)); - if (beta < 0) { - delta = (gamma - beta) * 0.5; - s = Math.sqrt(delta / gamma); - c = p / (gamma * s * 2.0); - } - else { - c = Math.sqrt((gamma + beta) / (gamma * 2.0)); - s = p / (gamma * c * 2.0); - } - (a = 0.0), (b = 0.0); - k = 2; - t0 = c * At[Ai] + s * At[Aj]; - t1 = -s * At[Ai] + c * At[Aj]; - At[Ai] = t0; - At[Aj] = t1; - a += t0 * t0; - b += t1 * t1; - t0 = c * At[Ai + 1] + s * At[Aj + 1]; - t1 = -s * At[Ai + 1] + c * At[Aj + 1]; - At[Ai + 1] = t0; - At[Aj + 1] = t1; - a += t0 * t0; - b += t1 * t1; - for (; k < m; k++) { - t0 = c * At[Ai + k] + s * At[Aj + k]; - t1 = -s * At[Ai + k] + c * At[Aj + k]; - At[Ai + k] = t0; - At[Aj + k] = t1; - a += t0 * t0; - b += t1 * t1; - } - W[i] = a; - W[j] = b; - changed = 1; - if (Vt) { - (Vi = (i * vstep) | 0), (Vj = (j * vstep) | 0); - k = 2; - t0 = c * Vt[Vi] + s * Vt[Vj]; - t1 = -s * Vt[Vi] + c * Vt[Vj]; - Vt[Vi] = t0; - Vt[Vj] = t1; - t0 = c * Vt[Vi + 1] + s * Vt[Vj + 1]; - t1 = -s * Vt[Vi + 1] + c * Vt[Vj + 1]; - Vt[Vi + 1] = t0; - Vt[Vj + 1] = t1; - for (; k < n; k++) { - t0 = c * Vt[Vi + k] + s * Vt[Vj + k]; - t1 = -s * Vt[Vi + k] + c * Vt[Vj + k]; - Vt[Vi + k] = t0; - Vt[Vj + k] = t1; - } - } - } - } - if (changed == 0) - break; - } - for (i = 0; i < n; i++) { - for (k = 0, sd = 0; k < m; k++) { - t = At[i * astep + k]; - sd += t * t; - } - W[i] = Math.sqrt(sd); - } - for (i = 0; i < n - 1; i++) { - j = i; - for (k = i + 1; k < n; k++) { - if (W[j] < W[k]) - j = k; - } - if (i != j) { - swap(W, i, j, sd); - if (Vt) { - for (k = 0; k < m; k++) { - swap(At, i * astep + k, j * astep + k, t); - } - for (k = 0; k < n; k++) { - swap(Vt, i * vstep + k, j * vstep + k, t); - } - } - } - } - for (i = 0; i < n; i++) { - _W[i] = W[i]; - } - if (!Vt) { - this.cache.put_buffer(W_buff); - return; - } - for (i = 0; i < n1; i++) { - sd = i < n ? W[i] : 0; - while (sd <= minval) { - val0 = 1.0 / m; - for (k = 0; k < m; k++) { - seed = seed * 214013 + 2531011; - val = ((seed >> 16) & 0x7fff & 256) != 0 ? val0 : -val0; - At[i * astep + k] = val; - } - for (iter = 0; iter < 2; iter++) { - for (j = 0; j < i; j++) { - sd = 0; - for (k = 0; k < m; k++) { - sd += At[i * astep + k] * At[j * astep + k]; - } - asum = 0.0; - for (k = 0; k < m; k++) { - t = At[i * astep + k] - sd * At[j * astep + k]; - At[i * astep + k] = t; - asum += Math.abs(t); - } - asum = asum ? 1.0 / asum : 0; - for (k = 0; k < m; k++) { - At[i * astep + k] *= asum; - } - } - } - sd = 0; - for (k = 0; k < m; k++) { - t = At[i * astep + k]; - sd += t * t; - } - sd = Math.sqrt(sd); - } - s = 1.0 / sd; - for (k = 0; k < m; k++) { - At[i * astep + k] *= s; - } - } - this.cache.put_buffer(W_buff); - } - lu_solve(A, B) { - let i = 0, j = 0, k = 0, p = 1, astep = A.cols; - const ad = A.data, bd = B.data; - let t, alpha, d, s; - for (i = 0; i < astep; i++) { - k = i; - for (j = i + 1; j < astep; j++) { - if (Math.abs(ad[j * astep + i]) > Math.abs(ad[k * astep + i])) { - k = j; - } - } - if (Math.abs(ad[k * astep + i]) < JSFEAT_CONSTANTS.EPSILON) { - return 0; - } - if (k != i) { - for (j = i; j < astep; j++) { - swap(ad, i * astep + j, k * astep + j, t); - } - swap(bd, i, k, t); - p = -p; - } - d = -1.0 / ad[i * astep + i]; - for (j = i + 1; j < astep; j++) { - alpha = ad[j * astep + i] * d; - for (k = i + 1; k < astep; k++) { - ad[j * astep + k] += alpha * ad[i * astep + k]; - } - bd[j] += alpha * bd[i]; - } - ad[i * astep + i] = -d; - } - for (i = astep - 1; i >= 0; i--) { - s = bd[i]; - for (k = i + 1; k < astep; k++) { - s -= ad[i * astep + k] * bd[k]; - } - bd[i] = s * ad[i * astep + i]; - } - return 1; - } - cholesky_solve(A, B) { - let col = 0, row = 0, col2 = 0, cs = 0, rs = 0, i = 0, j = 0; - const size = A.cols; - const ad = A.data, bd = B.data; - let val, inv_diag; - for (col = 0; col < size; col++) { - inv_diag = 1.0; - cs = col * size; - rs = cs; - for (row = col; row < size; row++) { - val = ad[rs + col]; - for (col2 = 0; col2 < col; col2++) { - val -= ad[col2 * size + col] * ad[rs + col2]; - } - if (row == col) { - ad[rs + col] = val; - if (val == 0) { - return 0; - } - inv_diag = 1.0 / val; - } - else { - ad[cs + row] = val; - ad[rs + col] = val * inv_diag; - } - rs = rs + size; - } - } - cs = 0; - for (i = 0; i < size; i++) { - val = bd[i]; - for (j = 0; j < i; j++) { - val -= ad[cs + j] * bd[j]; - } - bd[i] = val; - cs = cs + size; - } - cs = 0; - for (i = 0; i < size; i++) { - bd[i] /= ad[cs + i]; - cs = cs + size; - } - i = size - 1; - for (; i >= 0; i--) { - val = bd[i]; - j = i + 1; - cs = j * size; - for (; j < size; j++) { - val -= ad[cs + i] * bd[j]; - cs = cs + size; - } - bd[i] = val; - } - return 1; - } - svd_decompose(A, W, U, V, options) { - if (typeof options === "undefined") { - options = 0; - } - let at = 0, i = 0, j = 0, _m = A.rows, _n = A.cols, m = _m, n = _n; - const dt = A.type | JSFEAT_CONSTANTS.C1_t; - if (m < n) { - at = 1; - i = m; - m = n; - n = i; - } - const a_buff = this.cache.get_buffer((m * m) << 3); - const w_buff = this.cache.get_buffer(n << 3); - const v_buff = this.cache.get_buffer((n * n) << 3); - const a_mt = new matrix_t(m, m, dt, a_buff.data); - const w_mt = new matrix_t(1, n, dt, w_buff.data); - const v_mt = new matrix_t(n, n, dt, v_buff.data); - if (at == 0) { - this.matmath.transpose(a_mt, A); - } - else { - for (i = 0; i < _n * _m; i++) { - a_mt.data[i] = A.data[i]; - } - for (; i < n * m; i++) { - a_mt.data[i] = 0; - } - } - this.JacobiSVDImpl(a_mt.data, m, w_mt.data, v_mt.data, n, m, n, m); - if (W) { - for (i = 0; i < n; i++) { - W.data[i] = w_mt.data[i]; - } - for (; i < _n; i++) { - W.data[i] = 0; - } - } - if (at == 0) { - if (U && options & JSFEAT_CONSTANTS.SVD_U_T) { - i = m * m; - while (--i >= 0) { - U.data[i] = a_mt.data[i]; - } - } - else if (U) { - this.matmath.transpose(U, a_mt); - } - if (V && options & JSFEAT_CONSTANTS.SVD_V_T) { - i = n * n; - while (--i >= 0) { - V.data[i] = v_mt.data[i]; - } - } - else if (V) { - this.matmath.transpose(V, v_mt); - } - } - else { - if (U && options & JSFEAT_CONSTANTS.SVD_U_T) { - i = n * n; - while (--i >= 0) { - U.data[i] = v_mt.data[i]; - } - } - else if (U) { - this.matmath.transpose(U, v_mt); - } - if (V && options & JSFEAT_CONSTANTS.SVD_V_T) { - i = m * m; - while (--i >= 0) { - V.data[i] = a_mt.data[i]; - } - } - else if (V) { - this.matmath.transpose(V, a_mt); - } - } - this.cache.put_buffer(a_buff); - this.cache.put_buffer(w_buff); - this.cache.put_buffer(v_buff); - } - svd_solve(A, X, B) { - let i = 0, j = 0, k = 0; - let pu = 0, pv = 0; - const nrows = A.rows, ncols = A.cols; - let sum = 0.0, xsum = 0.0, tol = 0.0; - const dt = A.type | JSFEAT_CONSTANTS.C1_t; - const u_buff = this.cache.get_buffer((nrows * nrows) << 3); - const w_buff = this.cache.get_buffer(ncols << 3); - const v_buff = this.cache.get_buffer((ncols * ncols) << 3); - const u_mt = new matrix_t(nrows, nrows, dt, u_buff.data); - const w_mt = new matrix_t(1, ncols, dt, w_buff.data); - const v_mt = new matrix_t(ncols, ncols, dt, v_buff.data); - const bd = B.data, ud = u_mt.data, wd = w_mt.data, vd = v_mt.data; - this.svd_decompose(A, w_mt, u_mt, v_mt, 0); - tol = JSFEAT_CONSTANTS.EPSILON * wd[0] * ncols; - for (; i < ncols; i++, pv += ncols) { - xsum = 0.0; - for (j = 0; j < ncols; j++) { - if (wd[j] > tol) { - for (k = 0, sum = 0.0, pu = 0; k < nrows; k++, pu += ncols) { - sum += ud[pu + j] * bd[k]; - } - xsum += (sum * vd[pv + j]) / wd[j]; - } - } - X.data[i] = xsum; - } - this.cache.put_buffer(u_buff); - this.cache.put_buffer(w_buff); - this.cache.put_buffer(v_buff); - } - svd_invert(Ai, A) { - let i = 0, j = 0, k = 0; - let pu = 0, pv = 0, pa = 0; - const nrows = A.rows, ncols = A.cols; - let sum = 0.0, tol = 0.0; - const dt = A.type | JSFEAT_CONSTANTS.C1_t; - const u_buff = this.cache.get_buffer((nrows * nrows) << 3); - const w_buff = this.cache.get_buffer(ncols << 3); - const v_buff = this.cache.get_buffer((ncols * ncols) << 3); - const u_mt = new matrix_t(nrows, nrows, dt, u_buff.data); - const w_mt = new matrix_t(1, ncols, dt, w_buff.data); - const v_mt = new matrix_t(ncols, ncols, dt, v_buff.data); - const id = Ai.data, ud = u_mt.data, wd = w_mt.data, vd = v_mt.data; - this.svd_decompose(A, w_mt, u_mt, v_mt, 0); - tol = JSFEAT_CONSTANTS.EPSILON * wd[0] * ncols; - for (; i < ncols; i++, pv += ncols) { - for (j = 0, pu = 0; j < nrows; j++, pa++) { - for (k = 0, sum = 0.0; k < ncols; k++, pu++) { - if (wd[k] > tol) - sum += (vd[pv + k] * ud[pu]) / wd[k]; - } - id[pa] = sum; - } - } - this.cache.put_buffer(u_buff); - this.cache.put_buffer(w_buff); - this.cache.put_buffer(v_buff); - } - eigenVV(A, vects, vals) { - let n = A.cols, i = n * n; - const dt = A.type | JSFEAT_CONSTANTS.C1_t; - const a_buff = this.cache.get_buffer((n * n) << 3); - const w_buff = this.cache.get_buffer(n << 3); - const a_mt = new matrix_t(n, n, dt, a_buff.data); - const w_mt = new matrix_t(1, n, dt, w_buff.data); - while (--i >= 0) { - a_mt.data[i] = A.data[i]; - } - this.JacobiImpl(a_mt.data, n, w_mt.data, vects ? vects.data : null, n, n); - if (vals) { - while (--n >= 0) { - vals.data[n] = w_mt.data[n]; - } - } - this.cache.put_buffer(a_buff); - this.cache.put_buffer(w_buff); - } -}; -jsfeatNext.orb = class orb extends jsfeatNext { - bit_pattern_31_; - H; - patch_img; - imgproc; - constructor() { - super(); - this.bit_pattern_31_ = new Int32Array(bit_pattern_31); - this.H = new matrix_t(3, 3, JSFEAT_CONSTANTS.F32_t | JSFEAT_CONSTANTS.C1_t); - this.patch_img = new matrix_t(32, 32, JSFEAT_CONSTANTS.U8_t | JSFEAT_CONSTANTS.C1_t); - this.imgproc = new jsfeatNext.imgproc(); - } - describe(src, corners, count, descriptors) { - const DESCR_SIZE = 32; - let i = 0, b = 0, px = 0.0, py = 0.0, angle = 0.0; - let t0 = 0, t1 = 0, val = 0; - const patch_d = this.patch_img.data; - const patch_off = 16 * 32 + 16; - let patt = 0; - if (!(descriptors.type & JSFEAT_CONSTANTS.U8_t)) { - descriptors.type = JSFEAT_CONSTANTS.U8_t; - descriptors.cols = DESCR_SIZE; - descriptors.rows = count; - descriptors.channel = 1; - descriptors.allocate(); - } - else { - descriptors.resize(DESCR_SIZE, count, 1); - } - const descr_d = descriptors.data; - let descr_off = 0; - for (i = 0; i < count; ++i) { - px = corners[i].x; - py = corners[i].y; - angle = corners[i].angle; - rectify_patch(src, this.patch_img, angle, px, py, 32, this.H, this.imgproc); - patt = 0; - for (b = 0; b < DESCR_SIZE; ++b) { - t0 = patch_d[patch_off + this.bit_pattern_31_[patt + 1] * 32 + this.bit_pattern_31_[patt]]; - patt += 2; - t1 = patch_d[patch_off + this.bit_pattern_31_[patt + 1] * 32 + this.bit_pattern_31_[patt]]; - patt += 2; - val = (t0 < t1) | 0; - t0 = patch_d[patch_off + this.bit_pattern_31_[patt + 1] * 32 + this.bit_pattern_31_[patt]]; - patt += 2; - t1 = patch_d[patch_off + this.bit_pattern_31_[patt + 1] * 32 + this.bit_pattern_31_[patt]]; - patt += 2; - val |= (t0 < t1) << 1; - t0 = patch_d[patch_off + this.bit_pattern_31_[patt + 1] * 32 + this.bit_pattern_31_[patt]]; - patt += 2; - t1 = patch_d[patch_off + this.bit_pattern_31_[patt + 1] * 32 + this.bit_pattern_31_[patt]]; - patt += 2; - val |= (t0 < t1) << 2; - t0 = patch_d[patch_off + this.bit_pattern_31_[patt + 1] * 32 + this.bit_pattern_31_[patt]]; - patt += 2; - t1 = patch_d[patch_off + this.bit_pattern_31_[patt + 1] * 32 + this.bit_pattern_31_[patt]]; - patt += 2; - val |= (t0 < t1) << 3; - t0 = patch_d[patch_off + this.bit_pattern_31_[patt + 1] * 32 + this.bit_pattern_31_[patt]]; - patt += 2; - t1 = patch_d[patch_off + this.bit_pattern_31_[patt + 1] * 32 + this.bit_pattern_31_[patt]]; - patt += 2; - val |= (t0 < t1) << 4; - t0 = patch_d[patch_off + this.bit_pattern_31_[patt + 1] * 32 + this.bit_pattern_31_[patt]]; - patt += 2; - t1 = patch_d[patch_off + this.bit_pattern_31_[patt + 1] * 32 + this.bit_pattern_31_[patt]]; - patt += 2; - val |= (t0 < t1) << 5; - t0 = patch_d[patch_off + this.bit_pattern_31_[patt + 1] * 32 + this.bit_pattern_31_[patt]]; - patt += 2; - t1 = patch_d[patch_off + this.bit_pattern_31_[patt + 1] * 32 + this.bit_pattern_31_[patt]]; - patt += 2; - val |= (t0 < t1) << 6; - t0 = patch_d[patch_off + this.bit_pattern_31_[patt + 1] * 32 + this.bit_pattern_31_[patt]]; - patt += 2; - t1 = patch_d[patch_off + this.bit_pattern_31_[patt + 1] * 32 + this.bit_pattern_31_[patt]]; - patt += 2; - val |= (t0 < t1) << 7; - descr_d[descr_off + b] = val; - } - descr_off += DESCR_SIZE; - } - } -}; -jsfeatNext.yape = yape; -jsfeatNext.yape06 = class yape06 extends jsfeatNext { - laplacian_threshold; - min_eigen_value_threshold; - constructor() { - super(); - this.laplacian_threshold = 30; - this.min_eigen_value_threshold = 25; - } - detect(src, points, border) { - if (typeof border === "undefined") { - border = 5; - } - let x = 0, y = 0; - const w = src.cols, h = src.rows, srd_d = src.data; - const Dxx = 5, Dyy = (5 * w) | 0; - const Dxy = (3 + 3 * w) | 0, Dyx = (3 - 3 * w) | 0; - const lap_buf = this.cache.get_buffer((w * h) << 2); - const laplacian = lap_buf.i32; - let lv = 0, row = 0, rowx = 0, min_eigen_value = 0, pt; - let number_of_points = 0; - const lap_thresh = this.laplacian_threshold; - const eigen_thresh = this.min_eigen_value_threshold; - const sx = Math.max(5, border) | 0; - const sy = Math.max(3, border) | 0; - const ex = Math.min(w - 5, w - border) | 0; - const ey = Math.min(h - 3, h - border) | 0; - x = w * h; - while (--x >= 0) { - laplacian[x] = 0; - } - compute_laplacian(srd_d, laplacian, w, Dxx, Dyy, sx, sy, ex, ey); - row = (sy * w + sx) | 0; - for (y = sy; y < ey; ++y, row += w) { - for (x = sx, rowx = row; x < ex; ++x, ++rowx) { - lv = laplacian[rowx]; - if ((lv < -lap_thresh && - lv < laplacian[rowx - 1] && - lv < laplacian[rowx + 1] && - lv < laplacian[rowx - w] && - lv < laplacian[rowx + w] && - lv < laplacian[rowx - w - 1] && - lv < laplacian[rowx + w - 1] && - lv < laplacian[rowx - w + 1] && - lv < laplacian[rowx + w + 1]) || - (lv > lap_thresh && - lv > laplacian[rowx - 1] && - lv > laplacian[rowx + 1] && - lv > laplacian[rowx - w] && - lv > laplacian[rowx + w] && - lv > laplacian[rowx - w - 1] && - lv > laplacian[rowx + w - 1] && - lv > laplacian[rowx - w + 1] && - lv > laplacian[rowx + w + 1])) { - min_eigen_value = hessian_min_eigen_value(srd_d, rowx, lv, Dxx, Dyy, Dxy, Dyx); - if (min_eigen_value > eigen_thresh) { - pt = points[number_of_points]; - (pt.x = x), (pt.y = y), (pt.score = min_eigen_value); - ++number_of_points; - ++x, ++rowx; - } - } - } - } - this.cache.put_buffer(lap_buf); - return number_of_points; - } -}; -jsfeatNext.motion_estimator = class motion_estimator extends jsfeatNext { - constructor() { - super(); - } - get_subset(kernel, from, to, need_cnt, max_cnt, from_sub, to_sub) { - const max_try = 1000; - const indices = []; - let i = 0, j = 0, ssiter = 0, idx_i = 0, ok = false; - for (; ssiter < max_try; ++ssiter) { - i = 0; - for (; i < need_cnt && ssiter < max_try;) { - ok = false; - idx_i = 0; - while (!ok) { - ok = true; - idx_i = indices[i] = Math.floor(Math.random() * max_cnt) | 0; - for (j = 0; j < i; ++j) { - if (idx_i == indices[j]) { - ok = false; - break; - } - } - } - from_sub[i] = from[idx_i]; - to_sub[i] = to[idx_i]; - if (!kernel.check_subset(from_sub, to_sub, i + 1)) { - ssiter++; - continue; - } - ++i; - } - break; - } - return i == need_cnt && ssiter < max_try; - } - find_inliers(kernel, model, from, to, count, thresh, err, mask) { - let numinliers = 0, i = 0, f = 0; - const t = thresh * thresh; - kernel.error(from, to, model, err, count); - for (; i < count; ++i) { - f = (err[i] <= t); - mask[i] = f; - numinliers += f; - } - return numinliers; - } - ransac(params, kernel, from, to, count, model, mask, max_iters) { - if (typeof max_iters === "undefined") { - max_iters = 1000; - } - if (count < params.size) - return false; - const model_points = params.size; - let niters = max_iters, iter = 0; - let result = false; - const subset0 = []; - const subset1 = []; - let found = false; - const mc = model.cols, mr = model.rows; - const dt = model.type | JSFEAT_CONSTANTS.C1_t; - const m_buff = this.cache.get_buffer((mc * mr) << 3); - const ms_buff = this.cache.get_buffer(count); - const err_buff = this.cache.get_buffer(count << 2); - const M = new matrix_t(mc, mr, dt, m_buff.data); - const curr_mask = new matrix_t(count, 1, JSFEAT_CONSTANTS.U8C1_t, ms_buff.data); - let inliers_max = -1, numinliers = 0; - let nmodels = 0; - const err = err_buff.f32; - if (count == model_points) { - if (kernel.run(from, to, M, count) <= 0) { - this.cache.put_buffer(m_buff); - this.cache.put_buffer(ms_buff); - this.cache.put_buffer(err_buff); - return false; - } - M.copy_to(model); - if (mask) { - while (--count >= 0) { - mask.data[count] = 1; - } - } - this.cache.put_buffer(m_buff); - this.cache.put_buffer(ms_buff); - this.cache.put_buffer(err_buff); - return true; - } - for (; iter < niters; ++iter) { - found = this.get_subset(kernel, from, to, model_points, count, subset0, subset1); - if (!found) { - if (iter == 0) { - this.cache.put_buffer(m_buff); - this.cache.put_buffer(ms_buff); - this.cache.put_buffer(err_buff); - return false; - } - break; - } - nmodels = kernel.run(subset0, subset1, M, model_points); - if (nmodels <= 0) - continue; - numinliers = this.find_inliers(kernel, M, from, to, count, params.thresh, err, curr_mask.data); - if (numinliers > Math.max(inliers_max, model_points - 1)) { - M.copy_to(model); - inliers_max = numinliers; - if (mask) - curr_mask.copy_to(mask); - niters = params.update_iters((count - numinliers) / count, niters); - result = true; - } - } - this.cache.put_buffer(m_buff); - this.cache.put_buffer(ms_buff); - this.cache.put_buffer(err_buff); - return result; - } - lmeds(params, kernel, from, to, count, model, mask, max_iters) { - if (typeof max_iters === "undefined") { - max_iters = 1000; - } - if (count < params.size) - return false; - const model_points = params.size; - let niters = max_iters, iter = 0; - let result = false; - const _math = new jsfeatNext.math(); - const subset0 = []; - const subset1 = []; - let found = false; - const mc = model.cols, mr = model.rows; - const dt = model.type | JSFEAT_CONSTANTS.C1_t; - const m_buff = this.cache.get_buffer((mc * mr) << 3); - const ms_buff = this.cache.get_buffer(count); - const err_buff = this.cache.get_buffer(count << 2); - const M = new matrix_t(mc, mr, dt, m_buff.data); - const curr_mask = new matrix_t(count, 1, JSFEAT_CONSTANTS.U8_t | JSFEAT_CONSTANTS.C1_t, ms_buff.data); - let numinliers = 0; - let nmodels = 0; - const err = err_buff.f32; - let min_median = 1000000000.0, sigma = 0.0, median = 0.0; - params.eps = 0.45; - niters = params.update_iters(params.eps, niters); - if (count == model_points) { - if (kernel.run(from, to, M, count) <= 0) { - this.cache.put_buffer(m_buff); - this.cache.put_buffer(ms_buff); - this.cache.put_buffer(err_buff); - return false; - } - M.copy_to(model); - if (mask) { - while (--count >= 0) { - mask.data[count] = 1; - } - } - this.cache.put_buffer(m_buff); - this.cache.put_buffer(ms_buff); - this.cache.put_buffer(err_buff); - return true; - } - for (; iter < niters; ++iter) { - found = this.get_subset(kernel, from, to, model_points, count, subset0, subset1); - if (!found) { - if (iter == 0) { - this.cache.put_buffer(m_buff); - this.cache.put_buffer(ms_buff); - this.cache.put_buffer(err_buff); - return false; - } - break; - } - nmodels = kernel.run(subset0, subset1, M, model_points); - if (nmodels <= 0) - continue; - kernel.error(from, to, M, err, count); - median = _math.median(err, 0, count - 1); - if (median < min_median) { - min_median = median; - M.copy_to(model); - result = true; - } - } - if (result) { - sigma = 2.5 * 1.4826 * (1 + 5.0 / (count - model_points)) * Math.sqrt(min_median); - sigma = Math.max(sigma, 0.001); - numinliers = this.find_inliers(kernel, model, from, to, count, sigma, err, curr_mask.data); - if (mask) - curr_mask.copy_to(mask); - result = numinliers >= model_points; - } - this.cache.put_buffer(m_buff); - this.cache.put_buffer(ms_buff); - this.cache.put_buffer(err_buff); - return result; - } -}; -jsfeatNext.ransac_params_t = ransac_params_t; -jsfeatNext.affine2d = affine2d; -jsfeatNext.homography2d = homography2d; -jsfeatNext.optical_flow_lk = class optical_flow_lk extends jsfeatNext { - scharr_deriv; - constructor() { - super(); - const _imgproc = new jsfeatNext.imgproc(); - this.scharr_deriv = _imgproc.scharr_derivatives; - } - track(prev_pyr, curr_pyr, prev_xy, curr_xy, count, win_size, max_iter, status, eps, min_eigen_threshold) { - if (typeof max_iter === "undefined") { - max_iter = 30; - } - if (typeof status === "undefined") { - status = new Uint8Array(count); - } - if (typeof eps === "undefined") { - eps = 0.01; - } - if (typeof min_eigen_threshold === "undefined") { - min_eigen_threshold = 0.0001; - } - const half_win = (win_size - 1) * 0.5; - const win_area = (win_size * win_size) | 0; - const win_area2 = win_area << 1; - const prev_imgs = prev_pyr.data, next_imgs = curr_pyr.data; - let img_prev = prev_imgs[0].data, img_next = next_imgs[0].data; - let w0 = prev_imgs[0].cols, h0 = prev_imgs[0].rows, lw = 0, lh = 0; - const iwin_node = this.cache.get_buffer(win_area << 2); - const deriv_iwin_node = this.cache.get_buffer(win_area2 << 2); - const deriv_lev_node = this.cache.get_buffer((h0 * (w0 << 1)) << 2); - const deriv_m = new matrix_t(w0, h0, JSFEAT_CONSTANTS.S32C2_t, deriv_lev_node.data); - const iwin_buf = iwin_node.i32; - const deriv_iwin = deriv_iwin_node.i32; - const deriv_lev = deriv_lev_node.i32; - let dstep = 0, src = 0, dsrc = 0, iptr = 0, diptr = 0, jptr = 0; - let lev_sc = 0.0, prev_x = 0.0, prev_y = 0.0, next_x = 0.0, next_y = 0.0; - let prev_delta_x = 0.0, prev_delta_y = 0.0, delta_x = 0.0, delta_y = 0.0; - let iprev_x = 0, iprev_y = 0, inext_x = 0, inext_y = 0; - let i = 0, j = 0, x = 0, y = 0, level = 0, ptid = 0, iter = 0; - let brd_tl = 0, brd_r = 0, brd_b = 0; - let a = 0.0, b = 0.0, b1 = 0.0, b2 = 0.0; - const W_BITS14 = 14; - const W_BITS4 = 14; - const W_BITS1m5 = W_BITS4 - 5; - const W_BITS1m51 = 1 << (W_BITS1m5 - 1); - const W_BITS14_ = 1 << W_BITS14; - const W_BITS41 = 1 << (W_BITS4 - 1); - const FLT_SCALE = 1.0 / (1 << 20); - let iw00 = 0, iw01 = 0, iw10 = 0, iw11 = 0, ival = 0, ixval = 0, iyval = 0; - let A11 = 0.0, A12 = 0.0, A22 = 0.0, D = 0.0, min_eig = 0.0; - const FLT_EPSILON = 0.00000011920929; - eps *= eps; - for (; i < count; ++i) { - status[i] = 1; - } - const max_level = (prev_pyr.levels - 1) | 0; - level = max_level; - for (; level >= 0; --level) { - lev_sc = 1.0 / (1 << level); - lw = w0 >> level; - lh = h0 >> level; - dstep = lw << 1; - img_prev = prev_imgs[level].data; - img_next = next_imgs[level].data; - brd_r = (lw - win_size) | 0; - brd_b = (lh - win_size) | 0; - this.scharr_deriv(prev_imgs[level], deriv_m); - for (ptid = 0; ptid < count; ++ptid) { - i = ptid << 1; - j = i + 1; - prev_x = prev_xy[i] * lev_sc; - prev_y = prev_xy[j] * lev_sc; - if (level == max_level) { - next_x = prev_x; - next_y = prev_y; - } - else { - next_x = curr_xy[i] * 2.0; - next_y = curr_xy[j] * 2.0; - } - curr_xy[i] = next_x; - curr_xy[j] = next_y; - prev_x -= half_win; - prev_y -= half_win; - iprev_x = prev_x | 0; - iprev_y = prev_y | 0; - x = (iprev_x <= brd_tl || iprev_x >= brd_r || iprev_y <= brd_tl || iprev_y >= brd_b); - if (x != 0) { - if (level == 0) { - status[ptid] = 0; - } - continue; - } - a = prev_x - iprev_x; - b = prev_y - iprev_y; - iw00 = ((1.0 - a) * (1.0 - b) * W_BITS14_ + 0.5) | 0; - iw01 = (a * (1.0 - b) * W_BITS14_ + 0.5) | 0; - iw10 = ((1.0 - a) * b * W_BITS14_ + 0.5) | 0; - iw11 = W_BITS14_ - iw00 - iw01 - iw10; - (A11 = 0.0), (A12 = 0.0), (A22 = 0.0); - for (y = 0; y < win_size; ++y) { - src = ((y + iprev_y) * lw + iprev_x) | 0; - dsrc = src << 1; - iptr = (y * win_size) | 0; - diptr = iptr << 1; - for (x = 0; x < win_size; ++x, ++src, ++iptr, dsrc += 2) { - ival = - img_prev[src] * iw00 + - img_prev[src + 1] * iw01 + - img_prev[src + lw] * iw10 + - img_prev[src + lw + 1] * iw11; - ival = (ival + W_BITS1m51) >> W_BITS1m5; - ixval = - deriv_lev[dsrc] * iw00 + - deriv_lev[dsrc + 2] * iw01 + - deriv_lev[dsrc + dstep] * iw10 + - deriv_lev[dsrc + dstep + 2] * iw11; - ixval = (ixval + W_BITS41) >> W_BITS4; - iyval = - deriv_lev[dsrc + 1] * iw00 + - deriv_lev[dsrc + 3] * iw01 + - deriv_lev[dsrc + dstep + 1] * iw10 + - deriv_lev[dsrc + dstep + 3] * iw11; - iyval = (iyval + W_BITS41) >> W_BITS4; - iwin_buf[iptr] = ival; - deriv_iwin[diptr++] = ixval; - deriv_iwin[diptr++] = iyval; - A11 += ixval * ixval; - A12 += ixval * iyval; - A22 += iyval * iyval; - } - } - A11 *= FLT_SCALE; - A12 *= FLT_SCALE; - A22 *= FLT_SCALE; - D = A11 * A22 - A12 * A12; - min_eig = (A22 + A11 - Math.sqrt((A11 - A22) * (A11 - A22) + 4.0 * A12 * A12)) / win_area2; - if (min_eig < min_eigen_threshold || D < FLT_EPSILON) { - if (level == 0) { - status[ptid] = 0; - } - continue; - } - D = 1.0 / D; - next_x -= half_win; - next_y -= half_win; - prev_delta_x = 0.0; - prev_delta_y = 0.0; - for (iter = 0; iter < max_iter; ++iter) { - inext_x = next_x | 0; - inext_y = next_y | 0; - x = (inext_x <= brd_tl || inext_x >= brd_r || inext_y <= brd_tl || inext_y >= brd_b); - if (x != 0) { - if (level == 0) { - status[ptid] = 0; - } - break; - } - a = next_x - inext_x; - b = next_y - inext_y; - iw00 = ((1.0 - a) * (1.0 - b) * W_BITS14_ + 0.5) | 0; - iw01 = (a * (1.0 - b) * W_BITS14_ + 0.5) | 0; - iw10 = ((1.0 - a) * b * W_BITS14_ + 0.5) | 0; - iw11 = W_BITS14_ - iw00 - iw01 - iw10; - (b1 = 0.0), (b2 = 0.0); - for (y = 0; y < win_size; ++y) { - jptr = ((y + inext_y) * lw + inext_x) | 0; - iptr = (y * win_size) | 0; - diptr = iptr << 1; - for (x = 0; x < win_size; ++x, ++jptr, ++iptr) { - ival = - img_next[jptr] * iw00 + - img_next[jptr + 1] * iw01 + - img_next[jptr + lw] * iw10 + - img_next[jptr + lw + 1] * iw11; - ival = (ival + W_BITS1m51) >> W_BITS1m5; - ival = ival - iwin_buf[iptr]; - b1 += ival * deriv_iwin[diptr++]; - b2 += ival * deriv_iwin[diptr++]; - } - } - b1 *= FLT_SCALE; - b2 *= FLT_SCALE; - delta_x = (A12 * b2 - A22 * b1) * D; - delta_y = (A12 * b1 - A11 * b2) * D; - next_x += delta_x; - next_y += delta_y; - curr_xy[i] = next_x + half_win; - curr_xy[j] = next_y + half_win; - if (delta_x * delta_x + delta_y * delta_y <= eps) { - break; - } - if (iter > 0 && - Math.abs(delta_x + prev_delta_x) < 0.01 && - Math.abs(delta_y + prev_delta_y) < 0.01) { - curr_xy[i] -= delta_x * 0.5; - curr_xy[j] -= delta_y * 0.5; - break; - } - prev_delta_x = delta_x; - prev_delta_y = delta_y; - } - } - } - this.cache.put_buffer(iwin_node); - this.cache.put_buffer(deriv_iwin_node); - this.cache.put_buffer(deriv_lev_node); - } -}; -//# sourceMappingURL=jsfeatNext.js.map \ No newline at end of file diff --git a/dist/src/jsfeatNext.js.map b/dist/src/jsfeatNext.js.map deleted file mode 100644 index 7a850a9..0000000 --- a/dist/src/jsfeatNext.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"jsfeatNext.js","sourceRoot":"","sources":["../../src/jsfeatNext.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/src/keypoint_t/keypoint_t.js b/dist/src/keypoint_t/keypoint_t.js deleted file mode 100644 index 4006c78..0000000 --- a/dist/src/keypoint_t/keypoint_t.js +++ /dev/null @@ -1,15 +0,0 @@ -export class keypoint_t { - x; - y; - score; - level; - angle; - constructor(x = 0, y = 0, score = 0, level = 0, angle = -1.0) { - this.x = x; - this.y = y; - this.score = score; - this.level = level; - this.angle = angle; - } -} -//# sourceMappingURL=keypoint_t.js.map \ No newline at end of file diff --git a/dist/src/keypoint_t/keypoint_t.js.map b/dist/src/keypoint_t/keypoint_t.js.map deleted file mode 100644 index c6690dc..0000000 --- a/dist/src/keypoint_t/keypoint_t.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"keypoint_t.js","sourceRoot":"","sources":["../../../src/keypoint_t/keypoint_t.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,UAAU;IACZ,CAAC,CAAS;IACV,CAAC,CAAS;IACV,KAAK,CAAS;IACd,KAAK,CAAS;IACd,KAAK,CAAS;IACrB,YAAY,IAAY,CAAC,EAAE,IAAY,CAAC,EAAE,QAAgB,CAAC,EAAE,QAAgB,CAAC,EAAE,QAAgB,CAAC,GAAG;QAChG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;CACJ"} \ No newline at end of file diff --git a/dist/src/linalg/linalg.js b/dist/src/linalg/linalg.js deleted file mode 100644 index df9449b..0000000 --- a/dist/src/linalg/linalg.js +++ /dev/null @@ -1,27 +0,0 @@ -export class linalg { - JacobiImpl(A, astep, W, V, vstep, n) { - throw new Error("Method not implemented."); - } - JacobiSVDImpl(At, astep, _W, Vt, vstep, m, n, n1) { - throw new Error("Method not implemented."); - } - lu_solve(A, B) { - throw new Error("Method not implemented."); - } - cholesky_solve(A, B) { - throw new Error("Method not implemented."); - } - svd_decompose(A, W, U, V, options) { - throw new Error("Method not implemented."); - } - svd_solve(A, X, B) { - throw new Error("Method not implemented."); - } - svd_invert(Ai, A) { - throw new Error("Method not implemented."); - } - eigenVV(A, vects, vals) { - throw new Error("Method not implemented."); - } -} -//# sourceMappingURL=linalg.js.map \ No newline at end of file diff --git a/dist/src/linalg/linalg.js.map b/dist/src/linalg/linalg.js.map deleted file mode 100644 index 46d7276..0000000 --- a/dist/src/linalg/linalg.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"linalg.js","sourceRoot":"","sources":["../../../src/linalg/linalg.ts"],"names":[],"mappings":"AACA,MAAM,OAAO,MAAM;IACf,UAAU,CACN,CAA2C,EAC3C,KAAa,EACb,CAA2C,EAC3C,CAA2C,EAC3C,KAAa,EACb,CAAS;QAET,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IACD,aAAa,CACT,EAA4C,EAC5C,KAAa,EACb,EAA4C,EAC5C,EAA4C,EAC5C,KAAa,EACb,CAAS,EACT,CAAS,EACT,EAAU;QAEV,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IACD,QAAQ,CAAC,CAAW,EAAE,CAAW;QAC7B,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IACD,cAAc,CAAC,CAAW,EAAE,CAAW;QACnC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IACD,aAAa,CAAC,CAAM,EAAE,CAAW,EAAE,CAAW,EAAE,CAAW,EAAE,OAAe;QACxE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IACD,SAAS,CAAC,CAAW,EAAE,CAAW,EAAE,CAAW;QAC3C,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IACD,UAAU,CAAC,EAAY,EAAE,CAAW;QAChC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,CAAC,CAAW,EAAE,KAAe,EAAE,IAAe;QACjD,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;CACJ"} \ No newline at end of file diff --git a/dist/src/linalg/linalg_base.js b/dist/src/linalg/linalg_base.js deleted file mode 100644 index cce91d4..0000000 --- a/dist/src/linalg/linalg_base.js +++ /dev/null @@ -1,19 +0,0 @@ -export function swap(A, i0, i1, t) { - t = A[i0]; - A[i0] = A[i1]; - A[i1] = t; -} -export function hypot(a, b) { - a = Math.abs(a); - b = Math.abs(b); - if (a > b) { - b /= a; - return a * Math.sqrt(1.0 + b * b); - } - if (b > 0) { - a /= b; - return b * Math.sqrt(1.0 + a * a); - } - return 0.0; -} -//# sourceMappingURL=linalg_base.js.map \ No newline at end of file diff --git a/dist/src/linalg/linalg_base.js.map b/dist/src/linalg/linalg_base.js.map deleted file mode 100644 index 9fc352d..0000000 --- a/dist/src/linalg/linalg_base.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"linalg_base.js","sourceRoot":"","sources":["../../../src/linalg/linalg_base.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,IAAI,CAAC,CAA2C,EAAE,EAAU,EAAE,EAAU,EAAE,CAAS;IAC/F,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACV,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACd,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACd,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,CAAS,EAAE,CAAS;IACtC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChB,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACR,CAAC,IAAI,CAAC,CAAC;QACP,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACtC,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACR,CAAC,IAAI,CAAC,CAAC;QACP,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC"} \ No newline at end of file diff --git a/dist/src/math/math.js b/dist/src/math/math.js deleted file mode 100644 index 4b3b869..0000000 --- a/dist/src/math/math.js +++ /dev/null @@ -1,15 +0,0 @@ -export class math { - get_gaussian_kernel(kernel_size, sigma, filter, data_type) { - throw new Error("Method not implemented."); - } - perspective_4point_transform(model, src_x0, src_y0, dst_x0, dst_y0, src_x1, src_y1, dst_x1, dst_y1, src_x2, src_y2, dst_x2, dst_y2, src_x3, src_y3, dst_x3, dst_y3) { - throw new Error("Method not implemented."); - } - qsort(array, low, high, cmp) { - throw new Error("Method not implemented."); - } - median(array, low, high) { - throw new Error("Method not implemented."); - } -} -//# sourceMappingURL=math.js.map \ No newline at end of file diff --git a/dist/src/math/math.js.map b/dist/src/math/math.js.map deleted file mode 100644 index e668ce7..0000000 --- a/dist/src/math/math.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"math.js","sourceRoot":"","sources":["../../../src/math/math.ts"],"names":[],"mappings":"AACA,MAAM,OAAO,IAAI;IACb,mBAAmB,CAAC,WAAmB,EAAE,KAAa,EAAE,MAAiC,EAAE,SAAiB;QACxG,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IACD,4BAA4B,CACxB,KAAe,EACf,MAAc,EACd,MAAc,EACd,MAAc,EACd,MAAc,EACd,MAAc,EACd,MAAc,EACd,MAAc,EACd,MAAc,EACd,MAAc,EACd,MAAc,EACd,MAAc,EACd,MAAc,EACd,MAAc,EACd,MAAc,EACd,MAAc,EACd,MAAc;QAEd,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IACD,KAAK,CAAC,KAAe,EAAE,GAAW,EAAE,IAAY,EAAE,GAAqC;QACnF,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IACD,MAAM,CAAC,KAAU,EAAE,GAAW,EAAE,IAAY;QACxC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;CACJ"} \ No newline at end of file diff --git a/dist/src/matmath/matmath.js b/dist/src/matmath/matmath.js deleted file mode 100644 index 9880e69..0000000 --- a/dist/src/matmath/matmath.js +++ /dev/null @@ -1,194 +0,0 @@ -export default class matmath { - constructor() { } - identity(M, value) { - if (typeof value === "undefined") { - value = 1; - } - const src = M.data; - const rows = M.rows, cols = M.cols, cols_1 = (cols + 1) | 0; - let len = rows * cols; - let k = len; - while (--len >= 0) - src[len] = 0.0; - len = k; - k = 0; - while (k < len) { - src[k] = value; - k = k + cols_1; - } - } - transpose(At, A) { - let i = 0, j = 0, nrows = A.rows, ncols = A.cols; - let Ai = 0, Ati = 0, pAt = 0; - const ad = A.data, atd = At.data; - for (; i < nrows; Ati += 1, Ai += ncols, i++) { - pAt = Ati; - for (j = 0; j < ncols; pAt += nrows, j++) - atd[pAt] = ad[Ai + j]; - } - } - multiply(C, A, B) { - let i = 0, j = 0, k = 0; - let Ap = 0, pA = 0, pB = 0, p_B = 0, Cp = 0; - const ncols = A.cols, nrows = A.rows, mcols = B.cols; - const ad = A.data, bd = B.data, cd = C.data; - let sum = 0.0; - for (; i < nrows; Ap += ncols, i++) { - for (p_B = 0, j = 0; j < mcols; Cp++, p_B++, j++) { - pB = p_B; - pA = Ap; - sum = 0.0; - for (k = 0; k < ncols; pA++, pB += mcols, k++) { - sum += ad[pA] * bd[pB]; - } - cd[Cp] = sum; - } - } - } - multiply_ABt(C, A, B) { - let i = 0, j = 0, k = 0; - let Ap = 0, pA = 0, pB = 0, Cp = 0; - const ncols = A.cols, nrows = A.rows, mrows = B.rows; - const ad = A.data, bd = B.data, cd = C.data; - let sum = 0.0; - for (; i < nrows; Ap += ncols, i++) { - for (pB = 0, j = 0; j < mrows; Cp++, j++) { - pA = Ap; - sum = 0.0; - for (k = 0; k < ncols; pA++, pB++, k++) { - sum += ad[pA] * bd[pB]; - } - cd[Cp] = sum; - } - } - } - multiply_AtB(C, A, B) { - let i = 0, j = 0, k = 0; - let Ap = 0, pA = 0, pB = 0, p_B = 0, Cp = 0; - const ncols = A.cols, nrows = A.rows, mcols = B.cols; - const ad = A.data, bd = B.data, cd = C.data; - let sum = 0.0; - for (; i < ncols; Ap++, i++) { - for (p_B = 0, j = 0; j < mcols; Cp++, p_B++, j++) { - pB = p_B; - pA = Ap; - sum = 0.0; - for (k = 0; k < nrows; pA += ncols, pB += mcols, k++) { - sum += ad[pA] * bd[pB]; - } - cd[Cp] = sum; - } - } - } - multiply_AAt(C, A) { - let i = 0, j = 0, k = 0; - let pCdiag = 0, p_A = 0, pA = 0, pB = 0, pC = 0, pCt = 0; - const ncols = A.cols, nrows = A.rows; - const ad = A.data, cd = C.data; - let sum = 0.0; - for (; i < nrows; pCdiag += nrows + 1, p_A = pA, i++) { - pC = pCdiag; - pCt = pCdiag; - pB = p_A; - for (j = i; j < nrows; pC++, pCt += nrows, j++) { - pA = p_A; - sum = 0.0; - for (k = 0; k < ncols; k++) { - sum += ad[pA++] * ad[pB++]; - } - cd[pC] = sum; - cd[pCt] = sum; - } - } - } - multiply_AtA(C, A) { - let i = 0, j = 0, k = 0; - let p_A = 0, pA = 0, pB = 0, p_C = 0, pC = 0, p_CC = 0; - const ncols = A.cols, nrows = A.rows; - const ad = A.data, cd = C.data; - let sum = 0.0; - for (; i < ncols; p_C += ncols, i++) { - p_A = i; - p_CC = p_C + i; - pC = p_CC; - for (j = i; j < ncols; pC++, p_CC += ncols, j++) { - pA = p_A; - pB = j; - sum = 0.0; - for (k = 0; k < nrows; pA += ncols, pB += ncols, k++) { - sum += ad[pA] * ad[pB]; - } - cd[pC] = sum; - cd[p_CC] = sum; - } - } - } - identity_3x3(M, value) { - if (typeof value === "undefined") { - value = 1; - } - const dt = M.data; - dt[0] = dt[4] = dt[8] = value; - dt[1] = dt[2] = dt[3] = 0; - dt[5] = dt[6] = dt[7] = 0; - } - invert_3x3(from, to) { - const A = from.data, invA = to.data; - const t1 = A[4]; - const t2 = A[8]; - const t4 = A[5]; - const t5 = A[7]; - const t8 = A[0]; - const t9 = t8 * t1; - const t11 = t8 * t4; - const t13 = A[3]; - const t14 = A[1]; - const t15 = t13 * t14; - const t17 = A[2]; - const t18 = t13 * t17; - const t20 = A[6]; - const t21 = t20 * t14; - const t23 = t20 * t17; - const t26 = 1.0 / (t9 * t2 - t11 * t5 - t15 * t2 + t18 * t5 + t21 * t4 - t23 * t1); - invA[0] = (t1 * t2 - t4 * t5) * t26; - invA[1] = -(t14 * t2 - t17 * t5) * t26; - invA[2] = -(-t14 * t4 + t17 * t1) * t26; - invA[3] = -(t13 * t2 - t4 * t20) * t26; - invA[4] = (t8 * t2 - t23) * t26; - invA[5] = -(t11 - t18) * t26; - invA[6] = -(-t13 * t5 + t1 * t20) * t26; - invA[7] = -(t8 * t5 - t21) * t26; - invA[8] = (t9 - t15) * t26; - } - multiply_3x3(C, A, B) { - const Cd = C.data, Ad = A.data, Bd = B.data; - const m1_0 = Ad[0], m1_1 = Ad[1], m1_2 = Ad[2]; - const m1_3 = Ad[3], m1_4 = Ad[4], m1_5 = Ad[5]; - const m1_6 = Ad[6], m1_7 = Ad[7], m1_8 = Ad[8]; - const m2_0 = Bd[0], m2_1 = Bd[1], m2_2 = Bd[2]; - const m2_3 = Bd[3], m2_4 = Bd[4], m2_5 = Bd[5]; - const m2_6 = Bd[6], m2_7 = Bd[7], m2_8 = Bd[8]; - Cd[0] = m1_0 * m2_0 + m1_1 * m2_3 + m1_2 * m2_6; - Cd[1] = m1_0 * m2_1 + m1_1 * m2_4 + m1_2 * m2_7; - Cd[2] = m1_0 * m2_2 + m1_1 * m2_5 + m1_2 * m2_8; - Cd[3] = m1_3 * m2_0 + m1_4 * m2_3 + m1_5 * m2_6; - Cd[4] = m1_3 * m2_1 + m1_4 * m2_4 + m1_5 * m2_7; - Cd[5] = m1_3 * m2_2 + m1_4 * m2_5 + m1_5 * m2_8; - Cd[6] = m1_6 * m2_0 + m1_7 * m2_3 + m1_8 * m2_6; - Cd[7] = m1_6 * m2_1 + m1_7 * m2_4 + m1_8 * m2_7; - Cd[8] = m1_6 * m2_2 + m1_7 * m2_5 + m1_8 * m2_8; - } - mat3x3_determinant(M) { - const md = M.data; - return (md[0] * md[4] * md[8] - - md[0] * md[5] * md[7] - - md[3] * md[1] * md[8] + - md[3] * md[2] * md[7] + - md[6] * md[1] * md[5] - - md[6] * md[2] * md[4]); - } - determinant_3x3(M11, M12, M13, M21, M22, M23, M31, M32, M33) { - return (M11 * M22 * M33 - M11 * M23 * M32 - M21 * M12 * M33 + M21 * M13 * M32 + M31 * M12 * M23 - M31 * M13 * M22); - } -} -//# sourceMappingURL=matmath.js.map \ No newline at end of file diff --git a/dist/src/matmath/matmath.js.map b/dist/src/matmath/matmath.js.map deleted file mode 100644 index f760120..0000000 --- a/dist/src/matmath/matmath.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"matmath.js","sourceRoot":"","sources":["../../../src/matmath/matmath.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,OAAO,OAAO,OAAO;IACxB,gBAAe,CAAC;IAEhB,QAAQ,CAAC,CAAW,EAAE,KAAa;QAC/B,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE,CAAC;YAC/B,KAAK,GAAG,CAAC,CAAC;QACd,CAAC;QACD,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC;QACnB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,EACf,IAAI,GAAG,CAAC,CAAC,IAAI,EACb,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,GAAG,GAAG,CAAC;QACZ,OAAO,EAAE,GAAG,IAAI,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QAClC,GAAG,GAAG,CAAC,CAAC;QACR,CAAC,GAAG,CAAC,CAAC;QACN,OAAO,CAAC,GAAG,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;YACf,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;QACnB,CAAC;IACL,CAAC;IAED,SAAS,CAAC,EAAY,EAAE,CAAW;QAC/B,IAAI,CAAC,GAAG,CAAC,EACL,CAAC,GAAG,CAAC,EACL,KAAK,GAAG,CAAC,CAAC,IAAI,EACd,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC;QACnB,IAAI,EAAE,GAAG,CAAC,EACN,GAAG,GAAG,CAAC,EACP,GAAG,GAAG,CAAC,CAAC;QACZ,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EACb,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC;QAElB,OAAO,CAAC,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,GAAG,GAAG,GAAG,CAAC;YACV,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,GAAG,IAAI,KAAK,EAAE,CAAC,EAAE;gBAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACpE,CAAC;IACL,CAAC;IAGD,QAAQ,CAAC,CAAW,EAAE,CAAW,EAAE,CAAW;QAC1C,IAAI,CAAC,GAAG,CAAC,EACL,CAAC,GAAG,CAAC,EACL,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,EAAE,GAAG,CAAC,EACN,EAAE,GAAG,CAAC,EACN,EAAE,GAAG,CAAC,EACN,GAAG,GAAG,CAAC,EACP,EAAE,GAAG,CAAC,CAAC;QACX,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,EAChB,KAAK,GAAG,CAAC,CAAC,IAAI,EACd,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC;QACnB,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EACb,EAAE,GAAG,CAAC,CAAC,IAAI,EACX,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC;QAChB,IAAI,GAAG,GAAG,GAAG,CAAC;QAEd,OAAO,CAAC,GAAG,KAAK,EAAE,EAAE,IAAI,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YACjC,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC/C,EAAE,GAAG,GAAG,CAAC;gBACT,EAAE,GAAG,EAAE,CAAC;gBACR,GAAG,GAAG,GAAG,CAAC;gBACV,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC5C,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC3B,CAAC;gBACD,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;YACjB,CAAC;QACL,CAAC;IACL,CAAC;IAGD,YAAY,CAAC,CAAW,EAAE,CAAW,EAAE,CAAW;QAC9C,IAAI,CAAC,GAAG,CAAC,EACL,CAAC,GAAG,CAAC,EACL,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,EAAE,GAAG,CAAC,EACN,EAAE,GAAG,CAAC,EACN,EAAE,GAAG,CAAC,EACN,EAAE,GAAG,CAAC,CAAC;QACX,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,EAChB,KAAK,GAAG,CAAC,CAAC,IAAI,EACd,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC;QACnB,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EACb,EAAE,GAAG,CAAC,CAAC,IAAI,EACX,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC;QAChB,IAAI,GAAG,GAAG,GAAG,CAAC;QAEd,OAAO,CAAC,GAAG,KAAK,EAAE,EAAE,IAAI,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YACjC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;gBACvC,EAAE,GAAG,EAAE,CAAC;gBACR,GAAG,GAAG,GAAG,CAAC;gBACV,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;oBACrC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC3B,CAAC;gBACD,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;YACjB,CAAC;QACL,CAAC;IACL,CAAC;IAGD,YAAY,CAAC,CAAW,EAAE,CAAW,EAAE,CAAW;QAC9C,IAAI,CAAC,GAAG,CAAC,EACL,CAAC,GAAG,CAAC,EACL,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,EAAE,GAAG,CAAC,EACN,EAAE,GAAG,CAAC,EACN,EAAE,GAAG,CAAC,EACN,GAAG,GAAG,CAAC,EACP,EAAE,GAAG,CAAC,CAAC;QACX,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,EAChB,KAAK,GAAG,CAAC,CAAC,IAAI,EACd,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC;QACnB,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EACb,EAAE,GAAG,CAAC,CAAC,IAAI,EACX,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC;QAChB,IAAI,GAAG,GAAG,GAAG,CAAC;QAEd,OAAO,CAAC,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1B,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC/C,EAAE,GAAG,GAAG,CAAC;gBACT,EAAE,GAAG,EAAE,CAAC;gBACR,GAAG,GAAG,GAAG,CAAC;gBACV,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,EAAE,IAAI,KAAK,EAAE,EAAE,IAAI,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;oBACnD,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC3B,CAAC;gBACD,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;YACjB,CAAC;QACL,CAAC;IACL,CAAC;IAGD,YAAY,CAAC,CAAW,EAAE,CAAW;QACjC,IAAI,CAAC,GAAG,CAAC,EACL,CAAC,GAAG,CAAC,EACL,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,MAAM,GAAG,CAAC,EACV,GAAG,GAAG,CAAC,EACP,EAAE,GAAG,CAAC,EACN,EAAE,GAAG,CAAC,EACN,EAAE,GAAG,CAAC,EACN,GAAG,GAAG,CAAC,CAAC;QACZ,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,EAChB,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC;QACnB,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EACb,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC;QAChB,IAAI,GAAG,GAAG,GAAG,CAAC;QAEd,OAAO,CAAC,GAAG,KAAK,EAAE,MAAM,IAAI,KAAK,GAAG,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YACnD,EAAE,GAAG,MAAM,CAAC;YACZ,GAAG,GAAG,MAAM,CAAC;YACb,EAAE,GAAG,GAAG,CAAC;YACT,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7C,EAAE,GAAG,GAAG,CAAC;gBACT,GAAG,GAAG,GAAG,CAAC;gBACV,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;oBACzB,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC/B,CAAC;gBACD,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;gBACb,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;YAClB,CAAC;QACL,CAAC;IACL,CAAC;IAGD,YAAY,CAAC,CAAW,EAAE,CAAW;QACjC,IAAI,CAAC,GAAG,CAAC,EACL,CAAC,GAAG,CAAC,EACL,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,GAAG,GAAG,CAAC,EACP,EAAE,GAAG,CAAC,EACN,EAAE,GAAG,CAAC,EACN,GAAG,GAAG,CAAC,EACP,EAAE,GAAG,CAAC,EACN,IAAI,GAAG,CAAC,CAAC;QACb,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,EAChB,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC;QACnB,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EACb,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC;QAChB,IAAI,GAAG,GAAG,GAAG,CAAC;QAEd,OAAO,CAAC,GAAG,KAAK,EAAE,GAAG,IAAI,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,GAAG,GAAG,CAAC,CAAC;YACR,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC;YACf,EAAE,GAAG,IAAI,CAAC;YACV,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC9C,EAAE,GAAG,GAAG,CAAC;gBACT,EAAE,GAAG,CAAC,CAAC;gBACP,GAAG,GAAG,GAAG,CAAC;gBACV,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,EAAE,IAAI,KAAK,EAAE,EAAE,IAAI,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;oBACnD,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC3B,CAAC;gBACD,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;gBACb,EAAE,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;YACnB,CAAC;QACL,CAAC;IACL,CAAC;IAGD,YAAY,CAAC,CAAW,EAAE,KAAa;QACnC,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE,CAAC;YAC/B,KAAK,GAAG,CAAC,CAAC;QACd,CAAC;QACD,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC;QAClB,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QAC9B,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC1B,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,UAAU,CAAC,IAAc,EAAE,EAAY;QACnC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EACf,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;QACnB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAChB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAChB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAChB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAChB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAEhB,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACjB,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACjB,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;QACtB,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACjB,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;QACtB,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACjB,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;QACtB,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;QACtB,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC;QACnF,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC;QACpC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC;QACvC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC;QACxC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACvC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QAChC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QAC7B,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACxC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACjC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IAC/B,CAAC;IAGD,YAAY,CAAC,CAAW,EAAE,CAAW,EAAE,CAAW;QAC9C,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EACb,EAAE,GAAG,CAAC,CAAC,IAAI,EACX,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC;QAChB,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EACd,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EACZ,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACjB,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EACd,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EACZ,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACjB,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EACd,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EACZ,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAEjB,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EACd,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EACZ,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACjB,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EACd,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EACZ,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACjB,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EACd,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EACZ,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAEjB,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QAChD,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QAChD,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QAChD,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QAChD,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QAChD,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QAChD,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QAChD,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QAChD,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACpD,CAAC;IAED,kBAAkB,CAAC,CAAW;QAC1B,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC;QAClB,OAAO,CACH,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACrB,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACrB,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACrB,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACrB,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACrB,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CACxB,CAAC;IACN,CAAC;IAED,eAAe,CACX,GAAW,EACX,GAAW,EACX,GAAW,EACX,GAAW,EACX,GAAW,EACX,GAAW,EACX,GAAW,EACX,GAAW,EACX,GAAW;QAEX,OAAO,CACH,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAC5G,CAAC;IACN,CAAC;CACJ"} \ No newline at end of file diff --git a/dist/src/matrix_t/matrix_t.js b/dist/src/matrix_t/matrix_t.js deleted file mode 100644 index aabc5cd..0000000 --- a/dist/src/matrix_t/matrix_t.js +++ /dev/null @@ -1,77 +0,0 @@ -import { data_type } from "../data_type/data_type"; -import { data_t } from "../node_utils/data_t"; -import { JSFEAT_CONSTANTS } from "../constants/constants"; -export class matrix_t { - dt; - type; - channel; - cols; - rows; - data; - buffer; - constructor(c, r, _data_type, _data_buffer) { - this.dt = new data_type(); - this.type = this.dt._get_data_type(_data_type) | 0; - this.channel = this.dt._get_channel(_data_type) | 0; - this.cols = c | 0; - this.rows = r | 0; - if (typeof _data_buffer === "undefined") { - this.allocate(); - } - else { - this.buffer = _data_buffer; - this.data = - this.type & JSFEAT_CONSTANTS.U8_t - ? this.buffer.u8 - : this.type & JSFEAT_CONSTANTS.S32_t - ? this.buffer.i32 - : this.type & JSFEAT_CONSTANTS.F32_t - ? this.buffer.f32 - : this.buffer.f64; - } - } - allocate() { - delete this.data; - delete this.buffer; - this.buffer = new data_t(this.cols * this.dt._get_data_type_size(this.type) * this.channel * this.rows); - this.data = - this.type & JSFEAT_CONSTANTS.U8_t - ? this.buffer.u8 - : this.type & JSFEAT_CONSTANTS.S32_t - ? this.buffer.i32 - : this.type & JSFEAT_CONSTANTS.F32_t - ? this.buffer.f32 - : this.buffer.f64; - } - copy_to(other) { - const od = other.data, td = this.data; - let i = 0, n = (this.cols * this.rows * this.channel) | 0; - for (; i < n - 4; i += 4) { - od[i] = td[i]; - od[i + 1] = td[i + 1]; - od[i + 2] = td[i + 2]; - od[i + 3] = td[i + 3]; - } - for (; i < n; ++i) { - od[i] = td[i]; - } - } - resize(c, r, ch) { - if (typeof ch === "undefined") { - ch = this.channel; - } - const new_size = c * this.dt._get_data_type_size(this.type) * ch * r; - if (new_size > this.buffer.size) { - this.cols = c; - this.rows = r; - this.channel = ch; - this.allocate(); - } - else { - this.cols = c; - this.rows = r; - this.channel = ch; - } - } -} -//# sourceMappingURL=matrix_t.js.map \ No newline at end of file diff --git a/dist/src/matrix_t/matrix_t.js.map b/dist/src/matrix_t/matrix_t.js.map deleted file mode 100644 index 67d15a0..0000000 --- a/dist/src/matrix_t/matrix_t.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"matrix_t.js","sourceRoot":"","sources":["../../../src/matrix_t/matrix_t.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/src/motion_estimator/motion_estimator.js b/dist/src/motion_estimator/motion_estimator.js deleted file mode 100644 index 82b242a..0000000 --- a/dist/src/motion_estimator/motion_estimator.js +++ /dev/null @@ -1,15 +0,0 @@ -export class motion_estimator { - get_subset(kernel, from, to, need_cnt, max_cnt, from_sub, to_sub) { - throw new Error("Method not implemented."); - } - find_inliers(kernel, model, from, to, count, thresh, err, mask) { - throw new Error("Method not implemented."); - } - ransac(params, kernel, from, to, count, model, mask, max_iters) { - throw new Error("Method not implemented."); - } - lmeds(params, kernel, from, to, count, model, mask, max_iters) { - throw new Error("Method not implemented."); - } -} -//# sourceMappingURL=motion_estimator.js.map \ No newline at end of file diff --git a/dist/src/motion_estimator/motion_estimator.js.map b/dist/src/motion_estimator/motion_estimator.js.map deleted file mode 100644 index f030bd8..0000000 --- a/dist/src/motion_estimator/motion_estimator.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"motion_estimator.js","sourceRoot":"","sources":["../../../src/motion_estimator/motion_estimator.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,gBAAgB;IACzB,UAAU,CACN,MAAqB,EACrB,IAAe,EACf,EAAa,EACb,QAAgB,EAChB,OAAe,EACf,QAAmB,EACnB,MAAiB;QAEjB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IACD,YAAY,CACR,MAAqB,EACrB,KAAe,EACf,IAAe,EACf,EAAa,EACb,KAAa,EACb,MAAc,EACd,GAA8B,EAC9B,IAAc;QAEd,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IACD,MAAM,CACF,MAAuB,EACvB,MAAW,EACX,IAAe,EACf,EAAa,EACb,KAAa,EACb,KAAe,EACf,IAAc,EACd,SAAiB;QAEjB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IACD,KAAK,CACD,MAAuB,EACvB,MAAW,EACX,IAAe,EACf,EAAa,EACb,KAAa,EACb,KAAe,EACf,IAAc,EACd,SAAiB;QAEjB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;CACJ"} \ No newline at end of file diff --git a/dist/src/motion_estimator/ransac_params_t.js b/dist/src/motion_estimator/ransac_params_t.js deleted file mode 100644 index bb013bc..0000000 --- a/dist/src/motion_estimator/ransac_params_t.js +++ /dev/null @@ -1,18 +0,0 @@ -export class ransac_params_t { - size; - thresh; - eps; - prob; - constructor(size = 0, thresh = 0.5, eps = 0.5, prob = 0.99) { - this.size = size; - this.thresh = thresh; - this.eps = eps; - this.prob = prob; - } - update_iters(_eps, max_iters) { - const num = Math.log(1 - this.prob); - const denom = Math.log(1 - Math.pow(1 - _eps, this.size)); - return (denom >= 0 || -num >= max_iters * -denom ? max_iters : Math.round(num / denom)) | 0; - } -} -//# sourceMappingURL=ransac_params_t.js.map \ No newline at end of file diff --git a/dist/src/motion_estimator/ransac_params_t.js.map b/dist/src/motion_estimator/ransac_params_t.js.map deleted file mode 100644 index 8d9a53d..0000000 --- a/dist/src/motion_estimator/ransac_params_t.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ransac_params_t.js","sourceRoot":"","sources":["../../../src/motion_estimator/ransac_params_t.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,eAAe;IACjB,IAAI,CAAS;IACb,MAAM,CAAS;IACf,GAAG,CAAS;IACZ,IAAI,CAAS;IACpB,YAAY,OAAe,CAAC,EAAE,SAAiB,GAAG,EAAE,MAAc,GAAG,EAAE,OAAe,IAAI;QACtF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IACD,YAAY,CAAC,IAAY,EAAE,SAAiB;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1D,OAAO,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,SAAS,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;IAChG,CAAC;CACJ"} \ No newline at end of file diff --git a/dist/src/node_utils/_pool_node_t.js b/dist/src/node_utils/_pool_node_t.js deleted file mode 100644 index c0a4876..0000000 --- a/dist/src/node_utils/_pool_node_t.js +++ /dev/null @@ -1,32 +0,0 @@ -import { data_t } from "./data_t"; -export default class _pool_node_t { - next; - data; - size; - buffer; - u8; - i32; - f32; - f64; - constructor(size_in_bytes) { - this.next = null; - this.data = new data_t(size_in_bytes); - this.size = this.data.size; - this.buffer = this.data.buffer; - this.u8 = this.data.u8; - this.i32 = this.data.i32; - this.f32 = this.data.f32; - this.f64 = this.data.f64; - } - resize(size_in_bytes) { - delete this.data; - this.data = new data_t(size_in_bytes); - this.size = this.data.size; - this.buffer = this.data.buffer; - this.u8 = this.data.u8; - this.i32 = this.data.i32; - this.f32 = this.data.f32; - this.f64 = this.data.f64; - } -} -//# sourceMappingURL=_pool_node_t.js.map \ No newline at end of file diff --git a/dist/src/node_utils/_pool_node_t.js.map b/dist/src/node_utils/_pool_node_t.js.map deleted file mode 100644 index 7dbe5b4..0000000 --- a/dist/src/node_utils/_pool_node_t.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"_pool_node_t.js","sourceRoot":"","sources":["../../../src/node_utils/_pool_node_t.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,MAAM,EAAE,MAAM,UAAU,CAAC;AAM3C,MAAM,CAAC,OAAO,OAAO,YAAY;IACtB,IAAI,CAAM;IACV,IAAI,CAAW;IACf,IAAI,CAAS;IACb,MAAM,CAAM;IACZ,EAAE,CAAa;IACf,GAAG,CAAa;IAChB,GAAG,CAAe;IAClB,GAAG,CAAe;IAEzB,YAAY,aAAqB;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAC/B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACzB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACzB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IAC7B,CAAC;IACD,MAAM,CAAC,aAAqB;QACxB,OAAO,IAAI,CAAC,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAC/B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACzB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACzB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IAC7B,CAAC;CACJ"} \ No newline at end of file diff --git a/dist/src/node_utils/data_t.js b/dist/src/node_utils/data_t.js deleted file mode 100644 index b5dafa0..0000000 --- a/dist/src/node_utils/data_t.js +++ /dev/null @@ -1,23 +0,0 @@ -export class data_t { - size; - buffer; - u8; - i32; - f32; - f64; - constructor(size_in_bytes, buffer) { - this.size = ((size_in_bytes + 7) | 0) & -8; - if (typeof buffer === "undefined") { - this.buffer = new ArrayBuffer(this.size); - } - else { - this.buffer = buffer; - this.size = buffer.length; - } - this.u8 = new Uint8Array(this.buffer); - this.i32 = new Int32Array(this.buffer); - this.f32 = new Float32Array(this.buffer); - this.f64 = new Float64Array(this.buffer); - } -} -//# sourceMappingURL=data_t.js.map \ No newline at end of file diff --git a/dist/src/node_utils/data_t.js.map b/dist/src/node_utils/data_t.js.map deleted file mode 100644 index 0f35df0..0000000 --- a/dist/src/node_utils/data_t.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"data_t.js","sourceRoot":"","sources":["../../../src/node_utils/data_t.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,MAAM;IACR,IAAI,CAAS;IACb,MAAM,CAAc;IACpB,EAAE,CAAa;IACf,GAAG,CAAa;IAChB,GAAG,CAAe;IAClB,GAAG,CAAe;IACzB,YAAY,aAAqB,EAAE,MAAY;QAE3C,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3C,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAChC,IAAI,CAAC,MAAM,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACrB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,EAAE,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,GAAG,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;CACJ"} \ No newline at end of file diff --git a/dist/src/optical_flow_lk/optical_flow_lk.js b/dist/src/optical_flow_lk/optical_flow_lk.js deleted file mode 100644 index ee2faac..0000000 --- a/dist/src/optical_flow_lk/optical_flow_lk.js +++ /dev/null @@ -1,6 +0,0 @@ -export class optical_flow_lk { - track(prev_pyr, curr_pyr, prev_xy, curr_xy, count, win_size, max_iter, status, eps, min_eigen_threshold) { - throw new Error("Method not implemented."); - } -} -//# sourceMappingURL=optical_flow_lk.js.map \ No newline at end of file diff --git a/dist/src/optical_flow_lk/optical_flow_lk.js.map b/dist/src/optical_flow_lk/optical_flow_lk.js.map deleted file mode 100644 index 9f535e4..0000000 --- a/dist/src/optical_flow_lk/optical_flow_lk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"optical_flow_lk.js","sourceRoot":"","sources":["../../../src/optical_flow_lk/optical_flow_lk.ts"],"names":[],"mappings":"AACA,MAAM,OAAO,eAAe;IACxB,KAAK,CACD,QAAmB,EACnB,QAAmB,EACnB,OAAqB,EACrB,OAAqB,EACrB,KAAa,EACb,QAAgB,EAChB,QAAgB,EAChB,MAAkB,EAClB,GAAW,EACX,mBAA2B;QAE3B,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;CACJ"} \ No newline at end of file diff --git a/dist/src/orb/bit_pattern_31.js b/dist/src/orb/bit_pattern_31.js deleted file mode 100644 index 3d6f16f..0000000 --- a/dist/src/orb/bit_pattern_31.js +++ /dev/null @@ -1,146 +0,0 @@ -export const bit_pattern_31 = [ - 8, -3, 9, 5, 4, 2, 7, -12, -11, 9, -8, - 2, 7, -12, 12, -13, - 2, -13, 2, 12, 1, -7, 1, - 6, -2, -10, -2, -4, - -13, -13, -11, -8, -13, -3, -12, - -9, 10, 4, 11, 9, -13, -8, - -8, -9, -11, 7, -9, 12, 7, - 7, 12, 6, -4, -5, -3, 0, - -13, 2, -12, -3, -9, 0, -7, - 5, 12, -6, 12, -1, -3, 6, - -2, 12, -6, -13, -4, -8, 11, - -13, 12, -8, 4, 7, 5, 1, 5, - -3, 10, -3, 3, -7, 6, 12, - -8, -7, -6, -2, -2, 11, -1, - -10, -13, 12, -8, 10, -7, 3, - -5, -3, -4, 2, -3, 7, -10, - -12, -6, 11, 5, -12, 6, -7, 5, - -6, 7, -1, 1, 0, 4, -5, 9, - 11, 11, -13, 4, 7, 4, 12, - 2, -1, 4, 4, -4, -12, -2, 7, - -8, -5, -7, -10, 4, 11, 9, - 12, 0, -8, 1, -13, -13, -2, - -8, 2, -3, -2, -2, 3, -6, 9, - -4, -9, 8, 12, 10, 7, 0, 9, - 1, 3, 7, -5, 11, -10, -13, - -6, -11, 0, 10, 7, 12, 1, - -6, -3, -6, 12, 10, -9, 12, - -4, -13, 8, -8, -12, -13, 0, - -8, -4, 3, 3, 7, 8, 5, 7, - 10, -7, -1, 7, 1, -12, 3, - -10, 5, 6, 2, -4, 3, -10, - -13, 0, -13, 5, -13, -7, -12, - 12, -13, 3, -11, 8, -7, 12, - -4, 7, 6, -10, 12, 8, -9, - -1, -7, -6, -2, -5, 0, 12, - -12, 5, -7, 5, 3, -10, 8, - -13, -7, -7, -4, 5, -3, -2, - -1, -7, 2, 9, 5, -11, -11, - -13, -5, -13, -1, 6, 0, -1, - 5, -3, 5, 2, -4, -13, -4, - 12, -9, -6, -9, 6, -12, - -10, -8, -4, 10, 2, 12, - -3, 7, 12, 12, 12, -7, - -13, -6, 5, -4, 9, -3, 4, - 7, -1, 12, 2, -7, 6, -5, 1, - -13, 11, -12, 5, -3, 7, -2, - -6, 7, -8, 12, -7, -13, -7, - -11, -12, 1, -3, 12, 12, 2, - -6, 3, 0, -4, 3, -2, -13, - -1, -13, 1, 9, 7, 1, 8, - -6, 1, -1, 3, 12, 9, 1, - 12, 6, -1, -9, -1, 3, -13, - -13, -10, 5, 7, 7, 10, 12, - 12, -5, 12, 9, 6, 3, 7, 11, - 5, -13, 6, 10, 2, -12, 2, 3, - 3, 8, 4, -6, 2, 6, 12, -13, - 9, -12, 10, 3, -8, 4, -7, 9, - -11, 12, -4, -6, 1, 12, 2, - -8, 6, -9, 7, -4, 2, 3, 3, - -2, 6, 3, 11, 0, 3, -3, 8, - -8, 7, 8, 9, 3, -11, -5, -6, - -4, -10, 11, -5, 10, -5, -8, - -3, 12, -10, 5, -9, 0, 8, - -1, 12, -6, 4, -6, 6, -11, - -10, 12, -8, 7, 4, -2, 6, - 7, -2, 0, -2, 12, -5, -8, - -5, 2, 7, -6, 10, 12, -9, - -13, -8, -8, -5, -13, -5, - -2, 8, -8, 9, -13, -9, -11, - -9, 0, 1, -8, 1, -2, 7, -4, - 9, 1, -2, 1, -1, -4, 11, -6, - 12, -11, -12, -9, -6, 4, 3, - 7, 7, 12, 5, 5, 10, 8, 0, - -4, 2, 8, -9, 12, -5, -13, - 0, 7, 2, 12, -1, 2, 1, 7, 5, - 11, 7, -9, 3, 5, 6, -8, -13, - -4, -8, 9, -5, 9, -3, -3, - -4, -7, -3, -12, 6, 5, 8, 0, - -7, 6, -6, 12, -13, 6, -5, - -2, 1, -10, 3, 10, 4, 1, 8, - -4, -2, -2, 2, -13, 2, -12, - 12, 12, -2, -13, 0, -6, 4, - 1, 9, 3, -6, -10, -3, -5, -3, - -13, -1, 1, 7, 5, 12, -11, - 4, -2, 5, -7, -13, 9, -9, - -5, 7, 1, 8, 6, 7, -8, 7, - 6, -7, -4, -7, 1, -8, 11, - -7, -8, -13, 6, -12, -8, - 2, 4, 3, 9, 10, -5, 12, 3, - -6, -5, -6, 7, 8, -3, 9, - -8, 2, -12, 2, 8, -11, -2, - -10, 3, -12, -13, -7, -9, - -11, 0, -10, -5, 5, -3, 11, - 8, -2, -13, -1, 12, -1, -8, - 0, 9, -13, -11, -12, -5, - -10, -2, -10, 11, -3, 9, -2, - -13, 2, -3, 3, 2, -9, -13, - -4, 0, -4, 6, -3, -10, -4, - 12, -2, -7, -6, -11, -4, 9, - 6, -3, 6, 11, -13, 11, -5, - 5, 11, 11, 12, 6, 7, -5, 12, - -2, -1, 12, 0, 7, -4, -8, - -3, -2, -7, 1, -6, 7, -13, -12, - -8, -13, -7, -2, -6, -8, -8, - 5, -6, -9, -5, -1, -4, 5, - -13, 7, -8, 10, 1, 5, 5, -13, - 1, 0, 10, -13, 9, 12, 10, -1, - 5, -8, 10, -9, -1, 11, 1, -13, - -9, -3, -6, 2, -1, -10, 1, - 12, -13, 1, -8, -10, 8, -11, - 10, -6, 2, -13, 3, -6, 7, - -13, 12, -9, -10, -10, -5, - -7, -10, -8, -8, -13, 4, -6, - 8, 5, 3, 12, 8, -13, -4, 2, - -3, -3, 5, -13, 10, -12, 4, - -13, 5, -1, -9, 9, -4, 3, 0, - 3, 3, -9, -12, 1, -6, 1, 3, - 2, 4, -8, -10, -10, -10, - 9, 8, -13, 12, 12, -8, - -12, -6, -5, 2, 2, 3, 7, - 10, 6, 11, -8, 6, 8, 8, - -12, -7, 10, -6, 5, -3, - -9, -3, 9, -1, -13, -1, 5, - -3, -7, -3, 4, -8, -2, -8, - 3, 4, 2, 12, 12, 2, -5, 3, - 11, 6, -9, 11, -13, 3, -1, - 7, 12, 11, -1, 12, 4, -3, - 0, -3, 6, 4, -11, 4, 12, - 2, -4, 2, 1, -10, -6, -8, - 1, -13, 7, -11, 1, -13, - 12, -11, -13, 6, 0, 11, -13, - 0, -1, 1, 4, -13, 3, -9, - -2, -9, 8, -6, -3, -13, - -6, -8, -2, 5, -9, 8, 10, - 2, 7, 3, -9, -1, -6, -1, -1, - 9, 5, 11, -2, 11, -3, 12, - -8, 3, 0, 3, 5, -1, 4, 0, - 10, 3, -6, 4, 5, -13, 0, - -10, 5, 5, 8, 12, 11, 8, 9, - 9, -6, 7, -4, 8, -12, -10, - 4, -10, 9, 7, 3, 12, 4, 9, - -7, 10, -2, 7, 0, 12, -2, - -1, -6, 0, -11, -]; -//# sourceMappingURL=bit_pattern_31.js.map \ No newline at end of file diff --git a/dist/src/orb/bit_pattern_31.js.map b/dist/src/orb/bit_pattern_31.js.map deleted file mode 100644 index ecb0510..0000000 --- a/dist/src/orb/bit_pattern_31.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"bit_pattern_31.js","sourceRoot":"","sources":["../../../src/orb/bit_pattern_31.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/src/orb/orb.js b/dist/src/orb/orb.js deleted file mode 100644 index bb5cb68..0000000 --- a/dist/src/orb/orb.js +++ /dev/null @@ -1,6 +0,0 @@ -export class orb { - describe(src, corners, count, descriptors) { - throw new Error("Method not implemented."); - } -} -//# sourceMappingURL=orb.js.map \ No newline at end of file diff --git a/dist/src/orb/orb.js.map b/dist/src/orb/orb.js.map deleted file mode 100644 index 48c4939..0000000 --- a/dist/src/orb/orb.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"orb.js","sourceRoot":"","sources":["../../../src/orb/orb.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,GAAG;IACZ,QAAQ,CAAC,GAAa,EAAE,OAAqB,EAAE,KAAa,EAAE,WAAqB;QAC/E,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;CACJ"} \ No newline at end of file diff --git a/dist/src/orb/rectify_patch.js b/dist/src/orb/rectify_patch.js deleted file mode 100644 index 5d2972a..0000000 --- a/dist/src/orb/rectify_patch.js +++ /dev/null @@ -1,12 +0,0 @@ -export function rectify_patch(src, dst, angle, px, py, psize, H, imgProcessor) { - const cosine = Math.cos(angle); - const sine = Math.sin(angle); - H.data[0] = cosine; - H.data[1] = -sine; - H.data[2] = (-cosine + sine) * psize * 0.5 + px; - H.data[3] = sine; - H.data[4] = cosine; - H.data[5] = (-sine - cosine) * psize * 0.5 + py; - imgProcessor.warp_affine(src, dst, H, 128); -} -//# sourceMappingURL=rectify_patch.js.map \ No newline at end of file diff --git a/dist/src/orb/rectify_patch.js.map b/dist/src/orb/rectify_patch.js.map deleted file mode 100644 index 85a94f0..0000000 --- a/dist/src/orb/rectify_patch.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"rectify_patch.js","sourceRoot":"","sources":["../../../src/orb/rectify_patch.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,aAAa,CACzB,GAAa,EACb,GAAa,EACb,KAAa,EACb,EAAU,EACV,EAAU,EACV,KAAa,EACb,CAAW,EACX,YAAqB;IAErB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAE7B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IACnB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;IAClB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,KAAK,GAAG,GAAG,GAAG,EAAE,CAAC;IAChD,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACjB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IACnB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,KAAK,GAAG,GAAG,GAAG,EAAE,CAAC;IAEhD,YAAY,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AAC/C,CAAC"} \ No newline at end of file diff --git a/dist/src/point_t/point_t.js b/dist/src/point_t/point_t.js deleted file mode 100644 index ae8c356..0000000 --- a/dist/src/point_t/point_t.js +++ /dev/null @@ -1,9 +0,0 @@ -export class point_t { - x; - y; - level; - score; - angle; - constructor() { } -} -//# sourceMappingURL=point_t.js.map \ No newline at end of file diff --git a/dist/src/point_t/point_t.js.map b/dist/src/point_t/point_t.js.map deleted file mode 100644 index 66f1c38..0000000 --- a/dist/src/point_t/point_t.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"point_t.js","sourceRoot":"","sources":["../../../src/point_t/point_t.ts"],"names":[],"mappings":"AAQA,MAAM,OAAO,OAAO;IACT,CAAC,CAAS;IACV,CAAC,CAAS;IACjB,KAAK,CAAS;IACd,KAAK,CAAS;IACd,KAAK,CAAS;IACd,gBAAe,CAAC;CACnB"} \ No newline at end of file diff --git a/dist/src/pyramid_t/pyramid_t.js b/dist/src/pyramid_t/pyramid_t.js deleted file mode 100644 index ff74a5d..0000000 --- a/dist/src/pyramid_t/pyramid_t.js +++ /dev/null @@ -1,8 +0,0 @@ -export class pyramid_t { - data; - levels; - constructor(levels) { } - allocate(start_w, start_h, data_type) { } - build(input, skip_first_level) { } -} -//# sourceMappingURL=pyramid_t.js.map \ No newline at end of file diff --git a/dist/src/pyramid_t/pyramid_t.js.map b/dist/src/pyramid_t/pyramid_t.js.map deleted file mode 100644 index ee09213..0000000 --- a/dist/src/pyramid_t/pyramid_t.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"pyramid_t.js","sourceRoot":"","sources":["../../../src/pyramid_t/pyramid_t.ts"],"names":[],"mappings":"AACA,MAAM,OAAO,SAAS;IAClB,IAAI,CAAM;IACV,MAAM,CAAS;IACf,YAAY,MAAc,IAAG,CAAC;IAC9B,QAAQ,CAAC,OAAe,EAAE,OAAe,EAAE,SAAiB,IAAS,CAAC;IACtE,KAAK,CAAC,KAAe,EAAE,gBAAyB,IAAS,CAAC;CAC7D"} \ No newline at end of file diff --git a/dist/src/transform/transform.js b/dist/src/transform/transform.js deleted file mode 100644 index 2c7d2a8..0000000 --- a/dist/src/transform/transform.js +++ /dev/null @@ -1,143 +0,0 @@ -export class transform { - constructor() { } - perspective_4point_transform(model, src_x0, src_y0, dst_x0, dst_y0, src_x1, src_y1, dst_x1, dst_y1, src_x2, src_y2, dst_x2, dst_y2, src_x3, src_y3, dst_x3, dst_y3) { - let t1 = src_x0; - let t2 = src_x2; - let t4 = src_y1; - let t5 = t1 * t2 * t4; - let t6 = src_y3; - let t7 = t1 * t6; - let t8 = t2 * t7; - let t9 = src_y2; - let t10 = t1 * t9; - let t11 = src_x1; - let t14 = src_y0; - let t15 = src_x3; - let t16 = t14 * t15; - let t18 = t16 * t11; - let t20 = t15 * t11 * t9; - let t21 = t15 * t4; - let t24 = t15 * t9; - let t25 = t2 * t4; - let t26 = t6 * t2; - let t27 = t6 * t11; - let t28 = t9 * t11; - let t30 = 1.0 / (t21 - t24 - t25 + t26 - t27 + t28); - let t32 = t1 * t15; - let t35 = t14 * t11; - let t41 = t4 * t1; - let t42 = t6 * t41; - let t43 = t14 * t2; - let t46 = t16 * t9; - let t48 = t14 * t9 * t11; - let t51 = t4 * t6 * t2; - let t55 = t6 * t14; - const Hr0 = -(t8 - t5 + t10 * t11 - t11 * t7 - t16 * t2 + t18 - t20 + t21 * t2) * t30; - const Hr1 = (t5 - t8 - t32 * t4 + t32 * t9 + t18 - t2 * t35 + t27 * t2 - t20) * t30; - const Hr2 = t1; - const Hr3 = (-t9 * t7 + t42 + t43 * t4 - t16 * t4 + t46 - t48 + t27 * t9 - t51) * t30; - const Hr4 = (-t42 + t41 * t9 - t55 * t2 + t46 - t48 + t55 * t11 + t51 - t21 * t9) * t30; - const Hr5 = t14; - const Hr6 = (-t10 + t41 + t43 - t35 + t24 - t21 - t26 + t27) * t30; - const Hr7 = (-t7 + t10 + t16 - t43 + t27 - t28 - t21 + t25) * t30; - t1 = dst_x0; - t2 = dst_x2; - t4 = dst_y1; - t5 = t1 * t2 * t4; - t6 = dst_y3; - t7 = t1 * t6; - t8 = t2 * t7; - t9 = dst_y2; - t10 = t1 * t9; - t11 = dst_x1; - t14 = dst_y0; - t15 = dst_x3; - t16 = t14 * t15; - t18 = t16 * t11; - t20 = t15 * t11 * t9; - t21 = t15 * t4; - t24 = t15 * t9; - t25 = t2 * t4; - t26 = t6 * t2; - t27 = t6 * t11; - t28 = t9 * t11; - t30 = 1.0 / (t21 - t24 - t25 + t26 - t27 + t28); - t32 = t1 * t15; - t35 = t14 * t11; - t41 = t4 * t1; - t42 = t6 * t41; - t43 = t14 * t2; - t46 = t16 * t9; - t48 = t14 * t9 * t11; - t51 = t4 * t6 * t2; - t55 = t6 * t14; - const Hl0 = -(t8 - t5 + t10 * t11 - t11 * t7 - t16 * t2 + t18 - t20 + t21 * t2) * t30; - const Hl1 = (t5 - t8 - t32 * t4 + t32 * t9 + t18 - t2 * t35 + t27 * t2 - t20) * t30; - const Hl2 = t1; - const Hl3 = (-t9 * t7 + t42 + t43 * t4 - t16 * t4 + t46 - t48 + t27 * t9 - t51) * t30; - const Hl4 = (-t42 + t41 * t9 - t55 * t2 + t46 - t48 + t55 * t11 + t51 - t21 * t9) * t30; - const Hl5 = t14; - const Hl6 = (-t10 + t41 + t43 - t35 + t24 - t21 - t26 + t27) * t30; - const Hl7 = (-t7 + t10 + t16 - t43 + t27 - t28 - t21 + t25) * t30; - t2 = Hr4 - Hr7 * Hr5; - t4 = Hr0 * Hr4; - t5 = Hr0 * Hr5; - t7 = Hr3 * Hr1; - t8 = Hr2 * Hr3; - t10 = Hr1 * Hr6; - const t12 = Hr2 * Hr6; - t15 = 1.0 / (t4 - t5 * Hr7 - t7 + t8 * Hr7 + t10 * Hr5 - t12 * Hr4); - t18 = -Hr3 + Hr5 * Hr6; - const t23 = -Hr3 * Hr7 + Hr4 * Hr6; - t28 = -Hr1 + Hr2 * Hr7; - const t31 = Hr0 - t12; - t35 = Hr0 * Hr7 - t10; - t41 = -Hr1 * Hr5 + Hr2 * Hr4; - const t44 = t5 - t8; - const t47 = t4 - t7; - t48 = t2 * t15; - const t49 = t28 * t15; - const t50 = t41 * t15; - const mat = model.data; - mat[0] = Hl0 * t48 + Hl1 * (t18 * t15) - Hl2 * (t23 * t15); - mat[1] = Hl0 * t49 + Hl1 * (t31 * t15) - Hl2 * (t35 * t15); - mat[2] = -Hl0 * t50 - Hl1 * (t44 * t15) + Hl2 * (t47 * t15); - mat[3] = Hl3 * t48 + Hl4 * (t18 * t15) - Hl5 * (t23 * t15); - mat[4] = Hl3 * t49 + Hl4 * (t31 * t15) - Hl5 * (t35 * t15); - mat[5] = -Hl3 * t50 - Hl4 * (t44 * t15) + Hl5 * (t47 * t15); - mat[6] = Hl6 * t48 + Hl7 * (t18 * t15) - t23 * t15; - mat[7] = Hl6 * t49 + Hl7 * (t31 * t15) - t35 * t15; - mat[8] = -Hl6 * t50 - Hl7 * (t44 * t15) + t47 * t15; - } - invert_affine_transform(src, dst) { - const src_d = src.data; - const dst_d = dst.data; - const m11 = src_d[0], m12 = src_d[1], m13 = src_d[2]; - const m21 = src_d[3], m22 = src_d[4], m23 = src_d[5]; - const det = 1.0 / (m11 * m22 - m12 * m21); - dst_d[0] = det * m22; - dst_d[1] = det * -m12; - dst_d[2] = det * (m12 * m23 - m13 * m22); - dst_d[3] = det * -m21; - dst_d[4] = det * m11; - dst_d[5] = det * (m13 * m21 - m11 * m23); - } - invert_perspective_transform(src, dst) { - const src_d = src.data; - const dst_d = dst.data; - const m11 = src_d[0], m12 = src_d[1], m13 = src_d[2]; - const m21 = src_d[3], m22 = src_d[4], m23 = src_d[5]; - const m31 = src_d[6], m32 = src_d[7], m33 = src_d[8]; - const det = 1.0 / (m11 * (m22 * m33 - m23 * m32) - m12 * (m21 * m33 - m23 * m31) + m13 * (m21 * m32 - m22 * m31)); - dst_d[0] = det * (m22 * m33 - m23 * m32); - dst_d[1] = det * (m13 * m32 - m12 * m33); - dst_d[2] = det * (m12 * m23 - m13 * m22); - dst_d[3] = det * (m23 * m31 - m21 * m33); - dst_d[4] = det * (m11 * m33 - m13 * m31); - dst_d[5] = det * (m13 * m21 - m11 * m23); - dst_d[6] = det * (m21 * m32 - m22 * m31); - dst_d[7] = det * (m12 * m31 - m11 * m32); - dst_d[8] = det * (m11 * m22 - m12 * m21); - } -} -//# sourceMappingURL=transform.js.map \ No newline at end of file diff --git a/dist/src/transform/transform.js.map b/dist/src/transform/transform.js.map deleted file mode 100644 index b498003..0000000 --- a/dist/src/transform/transform.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"transform.js","sourceRoot":"","sources":["../../../src/transform/transform.ts"],"names":[],"mappings":"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AG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QAEzC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QACzC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QACzC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QAEzC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QACzC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QACzC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;IAC7C,CAAC;CACJ"} \ No newline at end of file diff --git a/dist/src/yape/yape.js b/dist/src/yape/yape.js deleted file mode 100644 index ca439d5..0000000 --- a/dist/src/yape/yape.js +++ /dev/null @@ -1,64 +0,0 @@ -import { third_check, is_local_maxima, perform_one_point, lev_table_t } from "./yape_utils"; -export class yape { - level_tables; - tau; - constructor() { - this.level_tables = []; - this.tau = 7; - } - init(width, height, radius, pyramid_levels = 1) { - radius = Math.min(radius, 7); - radius = Math.max(radius, 3); - for (let i = 0; i < pyramid_levels; ++i) { - this.level_tables[i] = new lev_table_t(width >> i, height >> i, radius); - } - } - detect(src, points, border = 4) { - const t = this.level_tables[0]; - const R = t.radius | 0, Rm1 = (R - 1) | 0; - const dirs = t.dirs; - const dirs_count = t.dirs_count | 0; - const opposite = dirs_count >> 1; - const img = src.data, w = src.cols | 0, h = src.rows | 0, hw = w >> 1; - const scores = t.scores; - let x = 0, y = 0, row = 0, rowx = 0, ip = 0, im = 0, abs_score = 0, score = 0; - const tau = this.tau | 0; - let number_of_points = 0, pt; - const sx = Math.max(R + 1, border) | 0; - const sy = Math.max(R + 1, border) | 0; - const ex = Math.min(w - R - 2, w - border) | 0; - const ey = Math.min(h - R - 2, h - border) | 0; - row = (sy * w + sx) | 0; - for (y = sy; y < ey; ++y, row += w) { - for (x = sx, rowx = row; x < ex; ++x, ++rowx) { - (ip = img[rowx] + tau), (im = img[rowx] - tau); - if (im < img[rowx + R] && img[rowx + R] < ip && im < img[rowx - R] && img[rowx - R] < ip) { - scores[rowx] = 0; - } - else { - perform_one_point(img, rowx, scores, im, ip, dirs, opposite, dirs_count); - } - } - } - row = (sy * w + sx) | 0; - for (y = sy; y < ey; ++y, row += w) { - for (x = sx, rowx = row; x < ex; ++x, ++rowx) { - score = scores[rowx]; - abs_score = Math.abs(score); - if (abs_score < 5) { - ++x, ++rowx; - } - else { - if (third_check(scores, rowx, w) >= 3 && is_local_maxima(scores, rowx, score, hw, R)) { - pt = points[number_of_points]; - (pt.x = x), (pt.y = y), (pt.score = abs_score); - ++number_of_points; - (x += Rm1), (rowx += Rm1); - } - } - } - } - return number_of_points; - } -} -//# sourceMappingURL=yape.js.map \ No newline at end of file diff --git a/dist/src/yape/yape.js.map b/dist/src/yape/yape.js.map deleted file mode 100644 index be17a98..0000000 --- a/dist/src/yape/yape.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"yape.js","sourceRoot":"","sources":["../../../src/yape/yape.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/src/yape/yape_utils.js b/dist/src/yape/yape_utils.js deleted file mode 100644 index 22464eb..0000000 --- a/dist/src/yape/yape_utils.js +++ /dev/null @@ -1,619 +0,0 @@ -export function precompute_directions(step, dirs, R) { - let i = 0; - let x, y; - x = R; - for (y = 0; y < x; y++, i++) { - x = (Math.sqrt(R * R - y * y) + 0.5) | 0; - dirs[i] = x + step * y; - } - for (x--; x < y && x >= 0; x--, i++) { - y = (Math.sqrt(R * R - x * x) + 0.5) | 0; - dirs[i] = x + step * y; - } - for (; -x < y; x--, i++) { - y = (Math.sqrt(R * R - x * x) + 0.5) | 0; - dirs[i] = x + step * y; - } - for (y--; y >= 0; y--, i++) { - x = (-Math.sqrt(R * R - y * y) - 0.5) | 0; - dirs[i] = x + step * y; - } - for (; y > x; y--, i++) { - x = (-Math.sqrt(R * R - y * y) - 0.5) | 0; - dirs[i] = x + step * y; - } - for (x++; x <= 0; x++, i++) { - y = (-Math.sqrt(R * R - x * x) - 0.5) | 0; - dirs[i] = x + step * y; - } - for (; x < -y; x++, i++) { - y = (-Math.sqrt(R * R - x * x) - 0.5) | 0; - dirs[i] = x + step * y; - } - for (y++; y < 0; y++, i++) { - x = (Math.sqrt(R * R - y * y) + 0.5) | 0; - dirs[i] = x + step * y; - } - dirs[i] = dirs[0]; - dirs[i + 1] = dirs[1]; - return i; -} -export function third_check(Sb, off, step) { - let n = 0; - if (Sb[off + 1] != 0) - n++; - if (Sb[off - 1] != 0) - n++; - if (Sb[off + step] != 0) - n++; - if (Sb[off + step + 1] != 0) - n++; - if (Sb[off + step - 1] != 0) - n++; - if (Sb[off - step] != 0) - n++; - if (Sb[off - step + 1] != 0) - n++; - if (Sb[off - step - 1] != 0) - n++; - return n; -} -export function is_local_maxima(p, off, v, step, neighborhood) { - let x, y; - if (v > 0) { - off -= step * neighborhood; - for (y = -neighborhood; y <= neighborhood; ++y) { - for (x = -neighborhood; x <= neighborhood; ++x) { - if (p[off + x] > v) - return false; - } - off += step; - } - } - else { - off -= step * neighborhood; - for (y = -neighborhood; y <= neighborhood; ++y) { - for (x = -neighborhood; x <= neighborhood; ++x) { - if (p[off + x] < v) - return false; - } - off += step; - } - } - return true; -} -export function perform_one_point(I, x, Scores, Im, Ip, dirs, opposite, dirs_nb) { - let score = 0; - let a = 0, b = (opposite - 1) | 0; - let A = 0, B0 = 0, B1 = 0, B2 = 0; - let state = 0; - A = I[x + dirs[a]]; - if (A <= Ip) { - if (A >= Im) { - B0 = I[x + dirs[b]]; - if (B0 <= Ip) { - if (B0 >= Im) { - Scores[x] = 0; - return; - } - else { - b++; - B1 = I[x + dirs[b]]; - if (B1 > Ip) { - b++; - B2 = I[x + dirs[b]]; - if (B2 > Ip) - state = 3; - else if (B2 < Im) - state = 6; - else { - Scores[x] = 0; - return; - } - } - else { - b++; - B2 = I[x + dirs[b]]; - if (B2 > Ip) - state = 7; - else if (B2 < Im) - state = 2; - else { - Scores[x] = 0; - return; - } - } - } - } - else { - b++; - B1 = I[x + dirs[b]]; - if (B1 > Ip) { - b++; - B2 = I[x + dirs[b]]; - if (B2 > Ip) - state = 3; - else if (B2 < Im) - state = 6; - else { - Scores[x] = 0; - return; - } - } - else if (B1 < Im) { - b++; - B2 = I[x + dirs[b]]; - if (B2 > Ip) - state = 7; - else if (B2 < Im) - state = 2; - else { - Scores[x] = 0; - return; - } - } - else { - Scores[x] = 0; - return; - } - } - } - else { - B0 = I[x + dirs[b]]; - if (B0 > Ip) { - Scores[x] = 0; - return; - } - b++; - B1 = I[x + dirs[b]]; - if (B1 > Ip) { - Scores[x] = 0; - return; - } - b++; - B2 = I[x + dirs[b]]; - if (B2 > Ip) { - Scores[x] = 0; - return; - } - state = 1; - } - } - else { - B0 = I[x + dirs[b]]; - if (B0 < Im) { - Scores[x] = 0; - return; - } - b++; - B1 = I[x + dirs[b]]; - if (B1 < Im) { - Scores[x] = 0; - return; - } - b++; - B2 = I[x + dirs[b]]; - if (B2 < Im) { - Scores[x] = 0; - return; - } - state = 0; - } - for (a = 1; a <= opposite; a++) { - A = I[x + dirs[a]]; - switch (state) { - case 0: - if (A > Ip) { - B1 = B2; - b++; - B2 = I[x + dirs[b]]; - if (B2 < Im) { - Scores[x] = 0; - return; - } - { - score -= A + B1; - state = 0; - break; - } - } - if (A < Im) { - if (B1 > Ip) { - Scores[x] = 0; - return; - } - if (B2 > Ip) { - Scores[x] = 0; - return; - } - B1 = B2; - b++; - B2 = I[x + dirs[b]]; - if (B2 > Ip) { - Scores[x] = 0; - return; - } - { - score -= A + B1; - state = 8; - break; - } - } - if (B1 <= Ip) { - Scores[x] = 0; - return; - } - if (B2 <= Ip) { - Scores[x] = 0; - return; - } - B1 = B2; - b++; - B2 = I[x + dirs[b]]; - if (B2 > Ip) { - score -= A + B1; - state = 3; - break; - } - if (B2 < Im) { - score -= A + B1; - state = 6; - break; - } - { - Scores[x] = 0; - return; - } - case 1: - if (A < Im) { - B1 = B2; - b++; - B2 = I[x + dirs[b]]; - if (B2 > Ip) { - Scores[x] = 0; - return; - } - { - score -= A + B1; - state = 1; - break; - } - } - if (A > Ip) { - if (B1 < Im) { - Scores[x] = 0; - return; - } - if (B2 < Im) { - Scores[x] = 0; - return; - } - B1 = B2; - b++; - B2 = I[x + dirs[b]]; - if (B2 < Im) { - Scores[x] = 0; - return; - } - { - score -= A + B1; - state = 9; - break; - } - } - if (B1 >= Im) { - Scores[x] = 0; - return; - } - if (B2 >= Im) { - Scores[x] = 0; - return; - } - B1 = B2; - b++; - B2 = I[x + dirs[b]]; - if (B2 < Im) { - score -= A + B1; - state = 2; - break; - } - if (B2 > Ip) { - score -= A + B1; - state = 7; - break; - } - { - Scores[x] = 0; - return; - } - case 2: - if (A > Ip) { - Scores[x] = 0; - return; - } - B1 = B2; - b++; - B2 = I[x + dirs[b]]; - if (A < Im) { - if (B2 > Ip) { - Scores[x] = 0; - return; - } - { - score -= A + B1; - state = 4; - break; - } - } - if (B2 > Ip) { - score -= A + B1; - state = 7; - break; - } - if (B2 < Im) { - score -= A + B1; - state = 2; - break; - } - { - Scores[x] = 0; - return; - } - case 3: - if (A < Im) { - Scores[x] = 0; - return; - } - B1 = B2; - b++; - B2 = I[x + dirs[b]]; - if (A > Ip) { - if (B2 < Im) { - Scores[x] = 0; - return; - } - { - score -= A + B1; - state = 5; - break; - } - } - if (B2 > Ip) { - score -= A + B1; - state = 3; - break; - } - if (B2 < Im) { - score -= A + B1; - state = 6; - break; - } - { - Scores[x] = 0; - return; - } - case 4: - if (A > Ip) { - Scores[x] = 0; - return; - } - if (A < Im) { - B1 = B2; - b++; - B2 = I[x + dirs[b]]; - if (B2 > Ip) { - Scores[x] = 0; - return; - } - { - score -= A + B1; - state = 1; - break; - } - } - if (B2 >= Im) { - Scores[x] = 0; - return; - } - B1 = B2; - b++; - B2 = I[x + dirs[b]]; - if (B2 < Im) { - score -= A + B1; - state = 2; - break; - } - if (B2 > Ip) { - score -= A + B1; - state = 7; - break; - } - { - Scores[x] = 0; - return; - } - case 5: - if (A < Im) { - Scores[x] = 0; - return; - } - if (A > Ip) { - B1 = B2; - b++; - B2 = I[x + dirs[b]]; - if (B2 < Im) { - Scores[x] = 0; - return; - } - { - score -= A + B1; - state = 0; - break; - } - } - if (B2 <= Ip) { - Scores[x] = 0; - return; - } - B1 = B2; - b++; - B2 = I[x + dirs[b]]; - if (B2 > Ip) { - score -= A + B1; - state = 3; - break; - } - if (B2 < Im) { - score -= A + B1; - state = 6; - break; - } - { - Scores[x] = 0; - return; - } - case 7: - if (A > Ip) { - Scores[x] = 0; - return; - } - if (A < Im) { - Scores[x] = 0; - return; - } - B1 = B2; - b++; - B2 = I[x + dirs[b]]; - if (B2 > Ip) { - score -= A + B1; - state = 3; - break; - } - if (B2 < Im) { - score -= A + B1; - state = 6; - break; - } - { - Scores[x] = 0; - return; - } - case 6: - if (A > Ip) { - Scores[x] = 0; - return; - } - if (A < Im) { - Scores[x] = 0; - return; - } - B1 = B2; - b++; - B2 = I[x + dirs[b]]; - if (B2 < Im) { - score -= A + B1; - state = 2; - break; - } - if (B2 > Ip) { - score -= A + B1; - state = 7; - break; - } - { - Scores[x] = 0; - return; - } - case 8: - if (A > Ip) { - if (B2 < Im) { - Scores[x] = 0; - return; - } - B1 = B2; - b++; - B2 = I[x + dirs[b]]; - if (B2 < Im) { - Scores[x] = 0; - return; - } - { - score -= A + B1; - state = 9; - break; - } - } - if (A < Im) { - B1 = B2; - b++; - B2 = I[x + dirs[b]]; - if (B2 > Ip) { - Scores[x] = 0; - return; - } - { - score -= A + B1; - state = 1; - break; - } - } - { - Scores[x] = 0; - return; - } - case 9: - if (A < Im) { - if (B2 > Ip) { - Scores[x] = 0; - return; - } - B1 = B2; - b++; - B2 = I[x + dirs[b]]; - if (B2 > Ip) { - Scores[x] = 0; - return; - } - { - score -= A + B1; - state = 8; - break; - } - } - if (A > Ip) { - B1 = B2; - b++; - B2 = I[x + dirs[b]]; - if (B2 < Im) { - Scores[x] = 0; - return; - } - { - score -= A + B1; - state = 0; - break; - } - } - { - Scores[x] = 0; - return; - } - default: - break; - } - } - Scores[x] = score + dirs_nb * I[x]; -} -export class lev_table_t { - dirs; - dirs_count; - scores; - radius; - constructor(w, h, r) { - this.dirs = new Int32Array(1024); - this.dirs_count = precompute_directions(w, this.dirs, r) | 0; - this.scores = new Int32Array(w * h); - this.radius = r | 0; - } -} -//# sourceMappingURL=yape_utils.js.map \ No newline at end of file diff --git a/dist/src/yape/yape_utils.js.map b/dist/src/yape/yape_utils.js.map deleted file mode 100644 index 6b7f450..0000000 --- a/dist/src/yape/yape_utils.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"yape_utils.js","sourceRoot":"","sources":["../../../src/yape/yape_utils.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/src/yape06/yape06.js b/dist/src/yape06/yape06.js deleted file mode 100644 index 6da9d4d..0000000 --- a/dist/src/yape06/yape06.js +++ /dev/null @@ -1,6 +0,0 @@ -export class yape06 { - detect(src, points, border) { - throw new Error("Method not implemented."); - } -} -//# sourceMappingURL=yape06.js.map \ No newline at end of file diff --git a/dist/src/yape06/yape06.js.map b/dist/src/yape06/yape06.js.map deleted file mode 100644 index 29c2292..0000000 --- a/dist/src/yape06/yape06.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"yape06.js","sourceRoot":"","sources":["../../../src/yape06/yape06.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,MAAM;IACf,MAAM,CAAC,GAAa,EAAE,MAAoB,EAAE,MAAc;QACtD,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;CACJ"} \ No newline at end of file diff --git a/dist/src/yape06/yape06_utils.js b/dist/src/yape06/yape06_utils.js deleted file mode 100644 index dd29aad..0000000 --- a/dist/src/yape06/yape06_utils.js +++ /dev/null @@ -1,24 +0,0 @@ -export function compute_laplacian(src, dst, w, Dxx, Dyy, sx, sy, ex, ey) { - let y = 0; - let x = 0; - let yrow = (sy * w + sx) | 0; - let row = yrow; - for (y = sy; y < ey; ++y, yrow += w, row = yrow) { - for (x = sx; x < ex; ++x, ++row) { - if (row + Dxx < src.length && row - Dxx >= 0 && row + Dyy < src.length && row - Dyy >= 0) { - dst[row] = -4 * src[row] + src[row + Dxx] + src[row - Dxx] + src[row + Dyy] + src[row - Dyy]; - } - else { - dst[row] = 0; - } - } - } -} -export function hessian_min_eigen_value(src, off, tr, Dxx, Dyy, Dxy, Dyx) { - const Ixx = -2 * src[off] + src[off + Dxx] + src[off - Dxx]; - const Iyy = -2 * src[off] + src[off + Dyy] + src[off - Dyy]; - const Ixy = src[off + Dxy] + src[off - Dxy] - src[off + Dyx] - src[off - Dyx]; - const sqrt_delta = Math.sqrt((Ixx - Iyy) * (Ixx - Iyy) + 4 * Ixy * Ixy) | 0; - return Math.min(Math.abs(tr - sqrt_delta), Math.abs(-(tr + sqrt_delta))); -} -//# sourceMappingURL=yape06_utils.js.map \ No newline at end of file diff --git a/dist/src/yape06/yape06_utils.js.map b/dist/src/yape06/yape06_utils.js.map deleted file mode 100644 index e6a0d23..0000000 --- a/dist/src/yape06/yape06_utils.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"yape06_utils.js","sourceRoot":"","sources":["../../../src/yape06/yape06_utils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,iBAAiB,CAC7B,GAA8B,EAC9B,GAA8B,EAC9B,CAAS,EACT,GAAW,EACX,GAAW,EACX,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU;IAEV,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,GAAG,GAAG,IAAI,CAAC;IAEf,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,EAAE,CAAC;QAC9C,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC;YAC9B,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC;gBACvF,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;YACjG,CAAC;iBAAM,CAAC;gBACJ,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACjB,CAAC;QACL,CAAC;IACL,CAAC;AACL,CAAC;AAED,MAAM,UAAU,uBAAuB,CACnC,GAAa,EACb,GAAW,EACX,EAAU,EACV,GAAW,EACX,GAAW,EACX,GAAW,EACX,GAAW;IAEX,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAC5D,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAC5D,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAC9E,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAE5E,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AAC7E,CAAC"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 597d0c0..e61afa3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,4680 +8,1150 @@ "name": "@webarkit/jsfeat-next", "version": "0.7.5", "license": "LGPL-3.0-or-later", - "dependencies": { - "@babel/runtime": "^7.27.1" - }, "devDependencies": { - "@babel/core": "^7.27.1", - "@babel/plugin-transform-runtime": "^7.27.1", - "@babel/preset-env": "^7.27.1", - "babel-loader": "^9.2.1", "prettier": "~3.5.3", - "rimraf": "^6.0.1", - "ts-loader": "^9.5.2", - "typescript": "^5.8.3", - "vitest": "^4.1.9", - "webpack": "5.98.0", - "webpack-cli": "6.0.1" + "typescript": "^6.0.3", + "vite": "^8.1.3", + "vite-plugin-dts": "^5.0.3", + "vitest": "^4.1.10" } }, - "node_modules/@babel/code-frame": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", - "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", + "node_modules/@emnapi/core": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.1.tgz", + "integrity": "sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.29.7", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" - }, - "engines": { - "node": ">=6.9.0" + "@emnapi/wasi-threads": "1.2.2", + "tslib": "^2.4.0" } }, - "node_modules/@babel/compat-data": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz", - "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==", + "node_modules/@emnapi/runtime": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.1.tgz", + "integrity": "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=6.9.0" + "optional": true, + "dependencies": { + "tslib": "^2.4.0" } }, - "node_modules/@babel/core": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz", - "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", + "node_modules/@emnapi/wasi-threads": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz", + "integrity": "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "@babel/code-frame": "^7.29.7", - "@babel/generator": "^7.29.7", - "@babel/helper-compilation-targets": "^7.29.7", - "@babel/helper-module-transforms": "^7.29.7", - "@babel/helpers": "^7.29.7", - "@babel/parser": "^7.29.7", - "@babel/template": "^7.29.7", - "@babel/traverse": "^7.29.7", - "@babel/types": "^7.29.7", - "@jridgewell/remapping": "^2.3.5", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" + "tslib": "^2.4.0" } }, - "node_modules/@babel/generator": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.7.tgz", - "integrity": "sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.29.7", - "@babel/types": "^7.29.7", - "@jridgewell/gen-mapping": "^0.3.12", - "@jridgewell/trace-mapping": "^0.3.28", - "jsesc": "^3.0.2" - }, - "engines": { - "node": ">=6.9.0" + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.29.7.tgz", - "integrity": "sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==", + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", - "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.29.7", - "@babel/helper-validator-option": "^7.29.7", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, "engines": { - "node": ">=6.9.0" + "node": ">=6.0.0" } }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.29.7.tgz", - "integrity": "sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg==", + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.29.7", - "@babel/helper-member-expression-to-functions": "^7.29.7", - "@babel/helper-optimise-call-expression": "^7.29.7", - "@babel/helper-replace-supers": "^7.29.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7", - "@babel/traverse": "^7.29.7", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } + "license": "MIT" }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.29.7.tgz", - "integrity": "sha512-907Uymvqgg1dwUA+7IGwFAOSYzQOuzPXKNJ1yxzwPffzkYFg2q2eHi1fIOs6sXkG9NbIUMunnUlkYsfRFNvomg==", + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.29.7", - "regexpu-core": "^6.3.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.8", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.8.tgz", - "integrity": "sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==", + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.6.tgz", + "integrity": "sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6", - "debug": "^4.4.3", - "lodash.debounce": "^4.0.8", - "resolve": "^1.22.11" + "@tybys/wasm-util": "^0.10.3" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" }, "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1" } }, - "node_modules/@babel/helper-globals": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", - "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==", + "node_modules/@oxc-project/types": { + "version": "0.138.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.138.0.tgz", + "integrity": "sha512-1a7ZKmrRTCoN1XMZ4L0PyyqrMnrNlLyPuOkdSX2MZg7IiIGRUyurNhAm73ptDOraoBcIordsIGKNPKUzy3ZmfA==", "dev": true, "license": "MIT", - "engines": { - "node": ">=6.9.0" + "funding": { + "url": "https://github.com/sponsors/Boshen" } }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.29.7.tgz", - "integrity": "sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg==", + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.1.4.tgz", + "integrity": "sha512-EZLpf/8y7GXkkra90ML47kzik/GMP3EMcE9bPyHmRfxLC6z9+aW5A8poCsoxjrT5GfEcNAAvWwUHjvP1pUQkfw==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.29.7", - "@babel/types": "^7.29.7" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6.9.0" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@babel/helper-module-imports": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", - "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==", + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.1.4.tgz", + "integrity": "sha512-aUi+HBvmYb7j8krl1+qJgkG8C17fO79gk3c+jPw4S8glRFc1DTija9S3EyaTSQUm5GJXYKDAsugBEhFHH2vYiQ==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.29.7", - "@babel/types": "^7.29.7" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6.9.0" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz", - "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==", + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.1.4.tgz", + "integrity": "sha512-F7hHC3gwY11+vByKPRWqwGbeXWVgKmL+pTGCinaEhdihzBV2aQ0fvZOch9cXYUOKuKKq429HeYXOqQLc7wFCEg==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.29.7", - "@babel/helper-validator-identifier": "^7.29.7", - "@babel/traverse": "^7.29.7" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.29.7.tgz", - "integrity": "sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong==", + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.1.4.tgz", + "integrity": "sha512-sI5yw+7s92SK6odiEhD5lKCBlWcpjHS5qyqpVQbZAJ0fIzEUXrmbl3DH2ybR3PZogulNJF+COLtmA8hUfvkCCQ==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/types": "^7.29.7" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=6.9.0" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz", - "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==", + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.1.4.tgz", + "integrity": "sha512-mCi0OKgEieFircrtVYmQAFGszRtMnZ6fpZAXrxanXAu7lqZcsK1E1RAaZNG0uKAnxox3B1f4EyQNnoyMfN1vAA==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.29.7.tgz", - "integrity": "sha512-16AMiW26DbXWBbr3B8wNozKM0ydMLB892vaOaJW/fPJdnT8vJk5sdkQcU/isqUxyCE0cEoa8wZOcbgDuC4b6Og==", + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.1.4.tgz", + "integrity": "sha512-B9Ial3Kv5sh0SHnB1g/QWcUQCEvCF6QKGAl4zXypYj65mVI+B4AhFBwPtSN7pDrJeIx8Z7zdy4ntx+wQABom7w==", + "cpu": [ + "arm64" + ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.29.7", - "@babel/helper-wrap-function": "^7.29.7", - "@babel/traverse": "^7.29.7" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.29.7.tgz", - "integrity": "sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ==", + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.1.4.tgz", + "integrity": "sha512-lZVym0PuHE1KZ22gmFTC15lAkrg9iTszR617oYRB/iPY1A56ywoJzVKOJBKaot5RiikCObmur6pogpse3gRcng==", + "cpu": [ + "arm64" + ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", - "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.29.7", - "@babel/helper-optimise-call-expression": "^7.29.7", - "@babel/traverse": "^7.29.7" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.29.7.tgz", - "integrity": "sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ==", + "node_modules/@rolldown/binding-linux-ppc64-gnu": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.1.4.tgz", + "integrity": "sha512-t2DNiLJWNTbnEHyUzTumldML6ET4/g16467LZoDDJ3tSxGvguL5/NyC2lCsNKuyRycg9XeDQF5SSv+TNOhQEXg==", + "cpu": [ + "ppc64" + ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.29.7", - "@babel/types": "^7.29.7" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@babel/helper-string-parser": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", - "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", + "node_modules/@rolldown/binding-linux-s390x-gnu": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.1.4.tgz", + "integrity": "sha512-0WIRnL1Uw4BvTZRLQt+PVgo6ZKTJadlC2btP+/EOXv2f/DWbY0rEgl+y834mIVwP1FkTlWVTrGGJXf12lru7EQ==", + "cpu": [ + "s390x" + ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", - "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.1.4.tgz", + "integrity": "sha512-JWtGshGfX+oENAKonoNkqEJX+7hC8yfhi9GUyPX1VX4mdh1y5r+ZiJLR5XzAB0aoP6s/PcILsGjKq8O0mm24bw==", + "cpu": [ + "x64" + ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@babel/helper-validator-option": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", - "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.1.4.tgz", + "integrity": "sha512-rT6yQcxUuXs4CnbofqwHRRV0iem349rLMYpTjkgQGLjrY4ado/eDzwPZPTCgTOlF6Nkp8NEv70yLMTn6qkWxsQ==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.29.7.tgz", - "integrity": "sha512-iES0Skag9ERIF68aXadpO6dbXa03mNWK3sEqJaMnLNs/eC3l0lkImdfoy6Y09/SfkpawdAB4RjQ7PVA7TcVGdw==", + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.1.4.tgz", + "integrity": "sha512-KXMGoboq5cyaCQjDA4GLuRiOwBQ0EyFnJoVViLeZ45/3rFItRODEr+NdsBcVpll40hhNArlm/speWGRvj08LzA==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/template": "^7.29.7", - "@babel/traverse": "^7.29.7", - "@babel/types": "^7.29.7" - }, + "optional": true, + "os": [ + "openharmony" + ], "engines": { - "node": ">=6.9.0" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@babel/helpers": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz", - "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==", + "node_modules/@rolldown/binding-wasm32-wasi": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.1.4.tgz", + "integrity": "sha512-5K83rb36oJiY7BCyE9zLZtGcPV4g5wvq+xwdO0XPIwDVZI8cyB/AUjkNXGb92/rnmezEkjMOpgY61rtwjQtFwg==", + "cpu": [ + "wasm32" + ], "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "@babel/template": "^7.29.7", - "@babel/types": "^7.29.7" + "@emnapi/core": "1.11.1", + "@emnapi/runtime": "1.11.1", + "@napi-rs/wasm-runtime": "^1.1.6" }, "engines": { - "node": ">=6.9.0" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@babel/parser": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz", - "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==", + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.1.4.tgz", + "integrity": "sha512-PnWBtw3TV5KOg69HQQDR0mnQuyCmSGR2pAB4DC1rPF808fgKeTUMj2EOEyKATpgiuxuR5APQmiDO7PDgEjTFSA==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/types": "^7.29.7" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=6.0.0" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.29.7.tgz", - "integrity": "sha512-j8SrR0zLZrRsC09DlszEx8FpMiwukKffYXMK0d5LmOglO7vGG6sz/BR/20yHqWH+Lnn31JTt2PE3hIWNgM2J6w==", + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.1.4.tgz", + "integrity": "sha512-M1lpniBePobTfsa7Ks9a199e1akxsXn+GYBUKsEzv3YFzOm1HJAMNwKI3qr0Zq+mxwx9gOZoTdP1yXRYsZUocQ==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7", - "@babel/traverse": "^7.29.7" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.29.7.tgz", - "integrity": "sha512-r8j8escF+U2FUHo0KOhPUdMzUO+jp9fInva6+ACVAF3Y97Ev+5iNZwiqTghmzNeWwDkOPlYuTcfb1vDaoZKmAQ==", + "node_modules/@rolldown/pluginutils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", + "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==", "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } + "license": "MIT" }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.29.7.tgz", - "integrity": "sha512-GE1TFSiuFeGsCxmYXZl8HwoPrVlwe4rHPFE8weieGKZqnDORK+Ar3vgWMgW+AOxQ6/2TgLSKx9p6W7O4rC6qgQ==", + "node_modules/@rollup/pluginutils": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.4.0.tgz", + "integrity": "sha512-MfPp06CjRLfXQ3wY0R8vJDYBy/MvVcc9OulEfR0B8Iv9ko+GCNaRZ+EpJYFl27LhKsZK0o420sYCRHCjfCgeUg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=14.0.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, - "node_modules/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array/-/plugin-bugfix-safari-rest-destructuring-rhs-array-7.29.7.tgz", - "integrity": "sha512-oBNVCvnO5tND+xSopWvV8WNGfpTfgP4Zr/YXXSj8zfmcPktp5Ku/aZlsIowgSD4fjmgHn6sGmB9APVsU5zOdhA==", + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } + "license": "MIT" }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.29.7.tgz", - "integrity": "sha512-QQt9qKHZ2sg/kivaLr7lnQr8HVrQDdBNSfCsTjiDxRuX/K5ORyKq+Bu8Xr0cDE3Dfkv0cw28Ve0EKyKMvulkOw==", + "node_modules/@tybys/wasm-util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.3.tgz", + "integrity": "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7", - "@babel/plugin-transform-optional-chaining": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" + "tslib": "^2.4.0" } }, - "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.29.7.tgz", - "integrity": "sha512-pn6QacGLgvCcwc+syUhKE/qSjV2D1IHDB84RNxWYSt1mW3K/SCtjinZ2p0cETJxAWBjPy3K/1lHwG5BjjPxNlw==", + "node_modules/@types/chai": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", + "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7", - "@babel/traverse": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "@types/deep-eql": "*", + "assertion-error": "^2.0.1" } }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", - "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "license": "MIT" }, - "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.29.7.tgz", - "integrity": "sha512-/An1OCBN93thpBAGyfsK2pcf0jvju1SAtKkL2Ny++B5Sy6sqgzXDQH1cZxWbF96Wuk+bn41MDA9bLd4VVAw6rw==", + "node_modules/@types/estree": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "license": "MIT" }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.29.7.tgz", - "integrity": "sha512-zGYcYfq/WmZ4V+kBIXQon9dSSc8ircGZqw9ZaNhhGj9nZkeBu1jHLBDQqYYi5WA9uawvA2sIMbry2nCFhf5Djg==", + "node_modules/@vitest/expect": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.10.tgz", + "integrity": "sha512-YsCn+qAk1GWjQOWFEsEcL2gNQ0zmVmQu3T03qP6UyjhtmdtwtbuI+DASn/7iQB3HGTXkdBwGddzxPlmiql5vlA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" + "@standard-schema/spec": "^1.1.0", + "@types/chai": "^5.2.2", + "@vitest/spy": "4.1.10", + "@vitest/utils": "4.1.10", + "chai": "^6.2.2", + "tinyrainbow": "^3.1.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/@babel/plugin-syntax-unicode-sets-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", - "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "node_modules/@vitest/mocker": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.10.tgz", + "integrity": "sha512-v0xaezt+DKEmKfaxg133ldzADrwLGd7Ze1MfQQTYfvs8OqZIwbxyxaYURivwV7sWy5fqn3rH5uOrSp07bp44Ow==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@vitest/spy": "4.1.10", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.21" }, - "engines": { - "node": ">=6.9.0" + "funding": { + "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.29.7.tgz", - "integrity": "sha512-N7zArUXWzAMzm+/N0uPBeVB3Fam5lMxtUwMmDK5f/IBBS7a7p1qeUoxd/6CckXoxUdgsntq1Dh8xNW06maZbDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" + "msw": "^2.4.9", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } } }, - "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.7.tgz", - "integrity": "sha512-d98gXZkgswvkyohMBABkhm3GeXhYj8psWfwQ2C7gtfrKGTykQa/iOIi+JJhwMjPlZ6Vm2XN+DCf3Es1EoG4ZLA==", + "node_modules/@vitest/mocker/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7", - "@babel/helper-remap-async-to-generator": "^7.29.7", - "@babel/traverse": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@types/estree": "^1.0.0" } }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.29.7.tgz", - "integrity": "sha512-pcUb2SS+RMo9TWVBwKGI5ShtoG7R+zBsFmCKDa6fe8c+hPr3XJlZgoE5j6i8W7gDjhyvy+85vmYexanvXh3d1w==", + "node_modules/@vitest/pretty-format": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.10.tgz", + "integrity": "sha512-W1HsjSH4MXQ9YfmmhLAoIYf1HRfekQCGngeIgcei6MP5QQGWUe0gkopdZQaVCFO+JDJMrAJGwa5pRpNpvy4P8Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.29.7", - "@babel/helper-plugin-utils": "^7.29.7", - "@babel/helper-remap-async-to-generator": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" + "tinyrainbow": "^3.1.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.29.7.tgz", - "integrity": "sha512-cUSmjh72N+rN4PrkFlN1dJwNCwjVp5d38/CQrEsFggkD10UiFlBFgdH3tv5dNsLuHY+3S8db2xCHjhZcv5WgvA==", + "node_modules/@vitest/runner": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.10.tgz", + "integrity": "sha512-IKI6kpIH+LmpROplyLwBBaCfMgOZOMsygVa6BARD6ahA04VRuJSa6OaVG7kRvSEMD870Vd91rSSw0eegtWyLGg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" + "@vitest/utils": "4.1.10", + "pathe": "^2.0.3" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.29.7.tgz", - "integrity": "sha512-ONyr4+AZhKh8yKWInVxU9AXA9EbsyeLcL6V0dJy6M2/62vuvpGm29zzuymbTpdc451GEpDIdAyPLP3r+P61yKQ==", + "node_modules/@vitest/snapshot": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.10.tgz", + "integrity": "sha512-xRkfOT1qpTAi/Ti4Y1LtfRc3kEuqxGw59eN2jN9pRWMtS/XDevekhcFSqvQqjUNGksfjMJu3Y+oJ+4Ypn2OaJw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" + "@vitest/pretty-format": "4.1.10", + "@vitest/utils": "4.1.10", + "magic-string": "^0.30.21", + "pathe": "^2.0.3" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.29.7.tgz", - "integrity": "sha512-GtcpjFvanPfzNQi3eTitsCqtRRmmqzpy/A+yhTR1HaZo1Ly3EA8ZXxlPyHdR8/IuRMYc3E4wdGBewB2QKQjAaA==", + "node_modules/@vitest/spy": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.10.tgz", + "integrity": "sha512-PLf/Ugvoq5wO/b4rwYCR1h2PSIdXz7wnkQFMiUpLdtM7l6pqVFcQIBEHyT1+l+cj7mNwAfZHzqXqDyjvOuwbDw==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.29.7", - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.29.7.tgz", - "integrity": "sha512-kibJgmEdX2iMwsHY2tSZNDgj8PwIlCQz7FK9KuGKO8zsuoUwSEhoNnNVp/emKWrbY4HeO6kkXfdMqRKKKXBm2A==", + "node_modules/@vitest/utils": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.10.tgz", + "integrity": "sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.29.7", - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" + "@vitest/pretty-format": "4.1.10", + "convert-source-map": "^2.0.0", + "tinyrainbow": "^3.1.0" }, - "peerDependencies": { - "@babel/core": "^7.12.0" + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.29.7.tgz", - "integrity": "sha512-qV0OGGBVacduzQHE649JyCneOFI/maT+YKsO+K4Yi3xv2wTPNjM/W2o2gdzMwEAZz7fXNTHAe0NcSg30bIN69g==", + "node_modules/@volar/language-core": { + "version": "2.4.28", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.28.tgz", + "integrity": "sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.29.7", - "@babel/helper-compilation-targets": "^7.29.7", - "@babel/helper-globals": "^7.29.7", - "@babel/helper-plugin-utils": "^7.29.7", - "@babel/helper-replace-supers": "^7.29.7", - "@babel/traverse": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@volar/source-map": "2.4.28" } }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.29.7.tgz", - "integrity": "sha512-RK7/IyU5phpuCdBAuig5VkzG/EnbDaui5SQGdU9BFrHdV+mV4cUjLMQ9lJDjLNtWHsqtiefpGZUXQP2BiTYMsA==", + "node_modules/@volar/source-map": { + "version": "2.4.28", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.28.tgz", + "integrity": "sha512-yX2BDBqJkRXfKw8my8VarTyjv48QwxdJtvRgUpNE5erCsgEUdI2DsLbpa+rOQVAJYshY99szEcRDmyHbF10ggQ==", "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7", - "@babel/template": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "license": "MIT" }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.29.7.tgz", - "integrity": "sha512-iPX8aD6H9zV5s7ZsqTdNocPN/MGQ5sSMnElKrktxjJRMnB2jN/1p2+R7GkfD6CAYoVFqy5A4XnSIUeGgJzIWpg==", + "node_modules/@volar/typescript": { + "version": "2.4.28", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.28.tgz", + "integrity": "sha512-Ja6yvWrbis2QtN4ClAKreeUZPVYMARDYZl9LMEv1iQ1QdepB6wn0jTRxA9MftYmYa4DQ4k/DaSZpFPUfxl8giw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7", - "@babel/traverse": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@volar/language-core": "2.4.28", + "path-browserify": "^1.0.1", + "vscode-uri": "^3.0.8" } }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.29.7.tgz", - "integrity": "sha512-3qc18hsD2RdZiyJNDNc7HQpv6xbncwh8FYtxNFFzclSyh/trPD9KkVR9BDECUjDLvb7yJVF15GfYUuC+LMkkiQ==", + "node_modules/acorn": { + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.17.0.tgz", + "integrity": "sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.29.7", - "@babel/helper-plugin-utils": "^7.29.7" + "bin": { + "acorn": "bin/acorn" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=0.4.0" } }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.29.7.tgz", - "integrity": "sha512-6IvRRriEMqnBwD6chtxdLpMYCHWEzN+oL5cyQtjykya19UgzbmKhxmhZgKC/LHxS2nYr9Q/qYPZ5Lr6jOL9+yQ==", + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=12" } }, - "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.7.tgz", - "integrity": "sha512-2wiIyo2BjtgU7HufSeDnL9L2O7zr8jmhFKuSr65VpRkUiRKRNpb0mdlk56+XPPKoIrfHqzbMuglDvZun0RISsA==", + "node_modules/chai": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz", + "integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.29.7", - "@babel/helper-plugin-utils": "^7.29.7" - }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.29.7.tgz", - "integrity": "sha512-giOlEm/EFjfjr+te9NsdjkUo2v4f8rS/SXPumRVHAtbNcyNlvtREkU1dZzaIDclNpnaVhlCqRdFKhJBjBikzLg==", + "node_modules/compare-versions": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-6.1.1.tgz", + "integrity": "sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==", "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "license": "MIT" }, - "node_modules/@babel/plugin-transform-explicit-resource-management": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.29.7.tgz", - "integrity": "sha512-Rstj7coNz8sE+7Ju7ihpHLI564lsK5pUpNNlvptCIC/16E/S5hbl6n3kESPKdNRmqEWlpn5xpS5Q2dvXBsySLw==", + "node_modules/confbox": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.4.tgz", + "integrity": "sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==", "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7", - "@babel/plugin-transform-destructuring": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "license": "MIT" }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.29.7.tgz", - "integrity": "sha512-zFpMOTLZBdW5LfObqcSbL6kefg4R4eLdmvS0wbN9M6D5Mym/sKm9toOoWyVOa+xDjvCnuWcHls2YonXwHvH3CQ==", + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "license": "MIT" }, - "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.29.7.tgz", - "integrity": "sha512-24B2nOy2TeJSMheqwPD4DDQOV/elLSIlKxjZt4i05H5AgdPdWR3n18HnNrcJ+j76WJd9gbwb9jPjNYUy6RautA==", + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" + "ms": "^2.1.3" }, "engines": { - "node": ">=6.9.0" + "node": ">=6.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.29.7.tgz", - "integrity": "sha512-zeSIHh0+E1Um1WJRXCFlHQYu2ieJNdivLLjlBEp+dIBu3S51n+SZZmIXjxnItw6pz56Cn+KvK68BIBVsxq2JiQ==", + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7" - }, + "license": "Apache-2.0", "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=8" } }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.29.7.tgz", - "integrity": "sha512-otRWaHXE6fbAGkePvaj/kvs3HsqXfPhlnzwSOlnFgbqCPMd975dW+4wZ00WFBt+/YlBGcJwNrARQTOJOb4ZrIg==", + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-compilation-targets": "^7.29.7", - "@babel/helper-plugin-utils": "^7.29.7", - "@babel/traverse": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "license": "MIT" }, - "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.29.7.tgz", - "integrity": "sha512-RRnE2+eon1rJAq8MnoF1b5kTpY1vU88twHcvcKMrsqP/jxIRqDVs9iJB5fqPuqyeFAW0wJo4MlUIPpQCq/aRsg==", + "node_modules/expect-type": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.4.0.tgz", + "integrity": "sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==", "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, + "license": "Apache-2.0", "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=12.0.0" } }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.29.7.tgz", - "integrity": "sha512-DZ/oLP21ZuWx1vKqnoNv6/tvEK48AQOBRai40CX9dTjGluvT/YZCyY3rryDtyUqCEoyNroy5KKPwX2iQCiRvyw==", + "node_modules/exsolve": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.1.0.tgz", + "integrity": "sha512-D+42+T12DdIlJM3uepa55qGiL3sYdLBOxIl2ifQCzCHz4c7eiolaHsi3BIqEr7JxBzxv2pYZQX9kw16ziMcEmw==", "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "license": "MIT" }, - "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.29.7.tgz", - "integrity": "sha512-A0H91hh6W8MFRkp5TqJmMr39jzGD1A1E1Ysiv2O06Sfbhkapm+XyIzxWCEh5kqwOZ1/8QZ0dY3SeQ7XBqfJd5Q==", + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, + "hasInstallScript": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.29.7.tgz", - "integrity": "sha512-hl1kwFZCCiDyfH25Xmco9jTrkPgnS9pmOzSG7W5I4SaGbLeqKv417hcU2RKmaxoPEgsoJh7ZPOrnPGq99bHoUg==", + "node_modules/kolorist": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", + "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==", "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "license": "MIT" }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.29.7.tgz", - "integrity": "sha512-fxtQoH3m5ywUSIfaH0FGCzWu4McsYon5bD3K4XnskC7f+OyQMj7rsOMi4NvvmJ83WwBAg4UCe+ov4VZlqEvyew==", + "node_modules/lightningcss": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", "dev": true, - "license": "MIT", + "license": "MPL-2.0", "dependencies": { - "@babel/helper-module-transforms": "^7.29.7", - "@babel/helper-plugin-utils": "^7.29.7" + "detect-libc": "^2.0.3" }, "engines": { - "node": ">=6.9.0" + "node": ">= 12.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" } }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.29.7.tgz", - "integrity": "sha512-j0vCldybPC5b5dwCQOJ21uKtHzt7hxLygJTg9eF1ScfaikEDNfzn94XoW5Fi+seBR0nCyL23xaBFFkq7dTM8XQ==", + "node_modules/lightningcss-android-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.29.7", - "@babel/helper-plugin-utils": "^7.29.7" - }, + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6.9.0" + "node": ">= 12.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.7.tgz", - "integrity": "sha512-TM2ZcQLoG2/y4HODiStCo10DibYhWhGWAwVv+EQKmG/7GFl0N+AAmUiXOMKM+aiJ9XBJ9AHVZBvTzMnJ2sM3cQ==", + "node_modules/lightningcss-darwin-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.29.7", - "@babel/helper-plugin-utils": "^7.29.7", - "@babel/helper-validator-identifier": "^7.29.7", - "@babel/traverse": "^7.29.7" - }, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6.9.0" + "node": ">= 12.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.29.7.tgz", - "integrity": "sha512-B4UkaTK3QpgCwJnrxKfMPKdo92CN7OKXAlpAAnM3UPu0Q0lCCk57ylA9AJbRy2v8dDKOPAAWcoR6CMyeoHwRCA==", + "node_modules/lightningcss-darwin-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.29.7", - "@babel/helper-plugin-utils": "^7.29.7" - }, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6.9.0" + "node": ">= 12.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.7.tgz", - "integrity": "sha512-vuFoLwr4qnv2xbZ16SQd6uPcH5FNrLHhk/Jzo++0XJFcaDsr4gjJVg6j398oMHiC+83k/GiBzviwF5KBJkPUtQ==", + "node_modules/lightningcss-freebsd-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.29.7", - "@babel/helper-plugin-utils": "^7.29.7" - }, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=6.9.0" + "node": ">= 12.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.29.7.tgz", - "integrity": "sha512-fEo41GmsOUhOBlw8ioo6zvjX5Xc2Lqkzlyfqbpsk3eB6TReV18uhxZ0esfEokVbY2+PVJAQHNKxER6lGrzNd3A==", + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "cpu": [ + "arm" + ], "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" + "node": ">= 12.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.29.7.tgz", - "integrity": "sha512-idmp1dFaekP9GbcMvG24Kvw2BfhFZjHnNJCkV4WuIY4PskJzwI3f1N5OdgYke38T7rftO6ERulFRn2cFeZwRkg==", + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, + "libc": [ + "glibc" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" + "node": ">= 12.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.29.7.tgz", - "integrity": "sha512-zR7fv/z14OjgHl4AgRtkDBvBMhIzCxqV/qN/2BCRC7LjFwvuzjYe7gDWxC4Wl/SNsLM6SE1IWvRPYMgSJaUvNw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.29.7.tgz", - "integrity": "sha512-Ld98jn4c0smUywL57m7SgsHq3OpThOa6LqZJif3G6jYOovPleoFhVrBJ1WegRApSFB2wu4+RelAj9AC9G08Z4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-compilation-targets": "^7.29.7", - "@babel/helper-plugin-utils": "^7.29.7", - "@babel/plugin-transform-destructuring": "^7.29.7", - "@babel/plugin-transform-parameters": "^7.29.7", - "@babel/traverse": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.29.7.tgz", - "integrity": "sha512-Ea/diGcw0twB5IlZPO5sgET6fJsLJqPABqTuFWIR+iMPGPZJkATEIWx0wa+aEQ5UY1CBQyP/gkAiLEqn1vBiQA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7", - "@babel/helper-replace-supers": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.29.7.tgz", - "integrity": "sha512-sLsyndxK2VwX6yNUOakMb7Sh553ZTe/vVM1XJ+9Z5aW1ytsc8xOIwmyk05NNjN60vkc5/KqoTH6hB4V41LJhng==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.29.7.tgz", - "integrity": "sha512-6GM1dhvK3gNODkXcEcMCOLEDCLSoZ/sBbro2Ax8HURyasQ4NshagQixkRFdh5niI6E4gmA/jYI/4aT7rRos3ZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.29.7.tgz", - "integrity": "sha512-ZDOBqV/qLYJI0YElr8DcENEyARsFQeESqWXH6gZlghYXuPPjvweuDhP4VyEi4BlUBlLRFZVjxoZDMjxhLW766g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.29.7.tgz", - "integrity": "sha512-/6Rz4DK1ETDEM/bWHsPHcaEe7ZaT1EqSXjtSP/L0DijOYuaUhiRiOKcwpZ8P7zR4xXEHc2ITdiCgBm9Tpyv9ug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.29.7", - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.29.7.tgz", - "integrity": "sha512-+BNo06dnrzdNNqCm1X6YUaVv0DKk8Q+JYcoZfOkLhYWNCXzlwTSRq8zGWayT1csjcpNXV9CQTBRRbmTLZac5cA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.29.7", - "@babel/helper-create-class-features-plugin": "^7.29.7", - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.29.7.tgz", - "integrity": "sha512-bOMRLQuI0A5ZqHq3OWJ89/rXpJ/NJrbVhXiP4zwPGMs6kpcVsuTUNjwoE30K0Qm3mf48a/TnRYYD6vPNqcg6jA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.7.tgz", - "integrity": "sha512-rNNFV0DBAJp988xW2DOntfDoYn1eR8GGF5AT5vYc+rjyfaQkM242c9tZUHHPe7KYaiJizXPWhQTzzdbXySyhBw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regexp-modifiers": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.29.7.tgz", - "integrity": "sha512-mB5Fs0VWrJ42ZCmc8114v60qetdaUVNkj9PmSZRmanCZM3S9hm0CFRLjRmYIsuXav14l2jvZ+4T8iiCGnhj3nQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.29.7", - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.29.7.tgz", - "integrity": "sha512-5+YhdpVgmfSmwZyLMftfaiffLRMHjzIRHFHHLdibcSyJm2pasMrKHrO3Ptrt2DRshjvpgjEJJ1zVW14WPq/6QA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-runtime": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.29.7.tgz", - "integrity": "sha512-xmAscdE/AsqRW7vutbPNoUmu/nF5SrLKPs7aoJgEjo35lLKA/Bc0i2rMv/hr1+Y0o1bQCiVtith3u2vdgRL39Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.29.7", - "@babel/helper-plugin-utils": "^7.29.7", - "babel-plugin-polyfill-corejs2": "^0.4.14", - "babel-plugin-polyfill-corejs3": "^0.13.0", - "babel-plugin-polyfill-regenerator": "^0.6.5", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.29.7.tgz", - "integrity": "sha512-I+WYbGBAiCn7nA6xBrlgPH+MB7HWb4u8pv5S0Pv7OtwNvIFvCCb24YlttKEeUFVurfBCEaOTnuhlqsb7f0Z5Dg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.29.7.tgz", - "integrity": "sha512-/u5K1QWada7tbYNqTjMh96718g9NTwh9tfPJMsSmVsQwGT447FskV+KcfeXkXq2GWki4EM/MuTdmBec+hOuVTQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.29.7.tgz", - "integrity": "sha512-BCHzNYJGe9l7EpwwDBN/ztlL2NYFFq8hp9ddjtUEM9f2O7S7kKV/lL6Fwo7IF7NSkYhPK2vO+86nIGltA90MsA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.29.7.tgz", - "integrity": "sha512-NCSEJ4sLFU2gqAub45HYh4fus2yQ36rr6ei6vpU7NdoJqCpxvEG8E6eJpscGyXP3VHD2Ny+fSXr04k1hoUrFqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.29.7.tgz", - "integrity": "sha512-223mNGoTkBiTEWFoK+Q6Go3tueMRclO8vxxxxquNCYuNI4jWOofFKJRRDu6SDrB8Sgo1UEGW9T4GAQ8ZyRso1A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.29.7.tgz", - "integrity": "sha512-jCfXxSjf94lf4E0hKE0AByxF6F3/pVFqRdUUNkDJhsY0m1ZKjnN6ZYyMeHNpzflxb/0q5b7t3p+BE+SLF1WOtA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.29.7.tgz", - "integrity": "sha512-OgZ+zoAJgZLUCunsTRQ5LAjOywDv5zzZ2/hQ5aMw1pGXyY2rtE8/chXYUmu3AlVHKpm10KEdG9aMwbI/K76ZGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.29.7", - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.29.7.tgz", - "integrity": "sha512-7D/x/23/d/3VqZ0QA+LGbZMlGwZjztBygSWWWsfTPoQ1oQ6Q1P6Mr3d0kk42XabyUVw+fha3LqdRsFqeKqvCyA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.29.7", - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.29.7.tgz", - "integrity": "sha512-BLOhLht9DOJwIxlmp91wHvkXv1lguuHS3/FwUO8HL1H0u8s4hR1gASVFyilu9iGtcTRYqjTZmlsFFeQletntEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.29.7", - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/preset-env": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.7.tgz", - "integrity": "sha512-GYzX36n1nsciIb0uyH0GHwxwtNwPQIcpxSeiVLDtG/B7jB5xXgchnmL1f/jCX5o+pwnaDBtO60ONSJhEBJfxYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.29.7", - "@babel/helper-compilation-targets": "^7.29.7", - "@babel/helper-plugin-utils": "^7.29.7", - "@babel/helper-validator-option": "^7.29.7", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.29.7", - "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.29.7", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.29.7", - "@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": "^7.29.7", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.29.7", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.29.7", - "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-import-assertions": "^7.29.7", - "@babel/plugin-syntax-import-attributes": "^7.29.7", - "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.29.7", - "@babel/plugin-transform-async-generator-functions": "^7.29.7", - "@babel/plugin-transform-async-to-generator": "^7.29.7", - "@babel/plugin-transform-block-scoped-functions": "^7.29.7", - "@babel/plugin-transform-block-scoping": "^7.29.7", - "@babel/plugin-transform-class-properties": "^7.29.7", - "@babel/plugin-transform-class-static-block": "^7.29.7", - "@babel/plugin-transform-classes": "^7.29.7", - "@babel/plugin-transform-computed-properties": "^7.29.7", - "@babel/plugin-transform-destructuring": "^7.29.7", - "@babel/plugin-transform-dotall-regex": "^7.29.7", - "@babel/plugin-transform-duplicate-keys": "^7.29.7", - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.29.7", - "@babel/plugin-transform-dynamic-import": "^7.29.7", - "@babel/plugin-transform-explicit-resource-management": "^7.29.7", - "@babel/plugin-transform-exponentiation-operator": "^7.29.7", - "@babel/plugin-transform-export-namespace-from": "^7.29.7", - "@babel/plugin-transform-for-of": "^7.29.7", - "@babel/plugin-transform-function-name": "^7.29.7", - "@babel/plugin-transform-json-strings": "^7.29.7", - "@babel/plugin-transform-literals": "^7.29.7", - "@babel/plugin-transform-logical-assignment-operators": "^7.29.7", - "@babel/plugin-transform-member-expression-literals": "^7.29.7", - "@babel/plugin-transform-modules-amd": "^7.29.7", - "@babel/plugin-transform-modules-commonjs": "^7.29.7", - "@babel/plugin-transform-modules-systemjs": "^7.29.7", - "@babel/plugin-transform-modules-umd": "^7.29.7", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.29.7", - "@babel/plugin-transform-new-target": "^7.29.7", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.29.7", - "@babel/plugin-transform-numeric-separator": "^7.29.7", - "@babel/plugin-transform-object-rest-spread": "^7.29.7", - "@babel/plugin-transform-object-super": "^7.29.7", - "@babel/plugin-transform-optional-catch-binding": "^7.29.7", - "@babel/plugin-transform-optional-chaining": "^7.29.7", - "@babel/plugin-transform-parameters": "^7.29.7", - "@babel/plugin-transform-private-methods": "^7.29.7", - "@babel/plugin-transform-private-property-in-object": "^7.29.7", - "@babel/plugin-transform-property-literals": "^7.29.7", - "@babel/plugin-transform-regenerator": "^7.29.7", - "@babel/plugin-transform-regexp-modifiers": "^7.29.7", - "@babel/plugin-transform-reserved-words": "^7.29.7", - "@babel/plugin-transform-shorthand-properties": "^7.29.7", - "@babel/plugin-transform-spread": "^7.29.7", - "@babel/plugin-transform-sticky-regex": "^7.29.7", - "@babel/plugin-transform-template-literals": "^7.29.7", - "@babel/plugin-transform-typeof-symbol": "^7.29.7", - "@babel/plugin-transform-unicode-escapes": "^7.29.7", - "@babel/plugin-transform-unicode-property-regex": "^7.29.7", - "@babel/plugin-transform-unicode-regex": "^7.29.7", - "@babel/plugin-transform-unicode-sets-regex": "^7.29.7", - "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.15", - "babel-plugin-polyfill-corejs3": "^0.14.0", - "babel-plugin-polyfill-regenerator": "^0.6.6", - "core-js-compat": "^3.48.0", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-env/node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.2.tgz", - "integrity": "sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.8", - "core-js-compat": "^3.48.0" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/@babel/preset-modules": { - "version": "0.1.6-no-external-plugins", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", - "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.7.tgz", - "integrity": "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", - "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.29.7", - "@babel/parser": "^7.29.7", - "@babel/types": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.7.tgz", - "integrity": "sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.29.7", - "@babel/generator": "^7.29.7", - "@babel/helper-globals": "^7.29.7", - "@babel/parser": "^7.29.7", - "@babel/template": "^7.29.7", - "@babel/types": "^7.29.7", - "debug": "^4.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz", - "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.29.7", - "@babel/helper-validator-identifier": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@discoveryjs/json-ext": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz", - "integrity": "sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==", - "dev": true, - "engines": { - "node": ">=14.17.0" - } - }, - "node_modules/@emnapi/core": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.1.tgz", - "integrity": "sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/wasi-threads": "1.2.2", - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.1.tgz", - "integrity": "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz", - "integrity": "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/remapping": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", - "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", - "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.6.tgz", - "integrity": "sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@tybys/wasm-util": "^0.10.3" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - }, - "peerDependencies": { - "@emnapi/core": "^1.7.1", - "@emnapi/runtime": "^1.7.1" - } - }, - "node_modules/@oxc-project/types": { - "version": "0.138.0", - "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.138.0.tgz", - "integrity": "sha512-1a7ZKmrRTCoN1XMZ4L0PyyqrMnrNlLyPuOkdSX2MZg7IiIGRUyurNhAm73ptDOraoBcIordsIGKNPKUzy3ZmfA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/Boshen" - } - }, - "node_modules/@rolldown/binding-android-arm64": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.1.4.tgz", - "integrity": "sha512-EZLpf/8y7GXkkra90ML47kzik/GMP3EMcE9bPyHmRfxLC6z9+aW5A8poCsoxjrT5GfEcNAAvWwUHjvP1pUQkfw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-darwin-arm64": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.1.4.tgz", - "integrity": "sha512-aUi+HBvmYb7j8krl1+qJgkG8C17fO79gk3c+jPw4S8glRFc1DTija9S3EyaTSQUm5GJXYKDAsugBEhFHH2vYiQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-darwin-x64": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.1.4.tgz", - "integrity": "sha512-F7hHC3gwY11+vByKPRWqwGbeXWVgKmL+pTGCinaEhdihzBV2aQ0fvZOch9cXYUOKuKKq429HeYXOqQLc7wFCEg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-freebsd-x64": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.1.4.tgz", - "integrity": "sha512-sI5yw+7s92SK6odiEhD5lKCBlWcpjHS5qyqpVQbZAJ0fIzEUXrmbl3DH2ybR3PZogulNJF+COLtmA8hUfvkCCQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-arm-gnueabihf": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.1.4.tgz", - "integrity": "sha512-mCi0OKgEieFircrtVYmQAFGszRtMnZ6fpZAXrxanXAu7lqZcsK1E1RAaZNG0uKAnxox3B1f4EyQNnoyMfN1vAA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-arm64-gnu": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.1.4.tgz", - "integrity": "sha512-B9Ial3Kv5sh0SHnB1g/QWcUQCEvCF6QKGAl4zXypYj65mVI+B4AhFBwPtSN7pDrJeIx8Z7zdy4ntx+wQABom7w==", - "cpu": [ - "arm64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-arm64-musl": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.1.4.tgz", - "integrity": "sha512-lZVym0PuHE1KZ22gmFTC15lAkrg9iTszR617oYRB/iPY1A56ywoJzVKOJBKaot5RiikCObmur6pogpse3gRcng==", - "cpu": [ - "arm64" - ], - "dev": true, - "libc": [ - "musl" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-ppc64-gnu": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.1.4.tgz", - "integrity": "sha512-t2DNiLJWNTbnEHyUzTumldML6ET4/g16467LZoDDJ3tSxGvguL5/NyC2lCsNKuyRycg9XeDQF5SSv+TNOhQEXg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-s390x-gnu": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.1.4.tgz", - "integrity": "sha512-0WIRnL1Uw4BvTZRLQt+PVgo6ZKTJadlC2btP+/EOXv2f/DWbY0rEgl+y834mIVwP1FkTlWVTrGGJXf12lru7EQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-x64-gnu": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.1.4.tgz", - "integrity": "sha512-JWtGshGfX+oENAKonoNkqEJX+7hC8yfhi9GUyPX1VX4mdh1y5r+ZiJLR5XzAB0aoP6s/PcILsGjKq8O0mm24bw==", - "cpu": [ - "x64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-x64-musl": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.1.4.tgz", - "integrity": "sha512-rT6yQcxUuXs4CnbofqwHRRV0iem349rLMYpTjkgQGLjrY4ado/eDzwPZPTCgTOlF6Nkp8NEv70yLMTn6qkWxsQ==", - "cpu": [ - "x64" - ], - "dev": true, - "libc": [ - "musl" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-openharmony-arm64": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.1.4.tgz", - "integrity": "sha512-KXMGoboq5cyaCQjDA4GLuRiOwBQ0EyFnJoVViLeZ45/3rFItRODEr+NdsBcVpll40hhNArlm/speWGRvj08LzA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-wasm32-wasi": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.1.4.tgz", - "integrity": "sha512-5K83rb36oJiY7BCyE9zLZtGcPV4g5wvq+xwdO0XPIwDVZI8cyB/AUjkNXGb92/rnmezEkjMOpgY61rtwjQtFwg==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "1.11.1", - "@emnapi/runtime": "1.11.1", - "@napi-rs/wasm-runtime": "^1.1.6" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-win32-arm64-msvc": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.1.4.tgz", - "integrity": "sha512-PnWBtw3TV5KOg69HQQDR0mnQuyCmSGR2pAB4DC1rPF808fgKeTUMj2EOEyKATpgiuxuR5APQmiDO7PDgEjTFSA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-win32-x64-msvc": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.1.4.tgz", - "integrity": "sha512-M1lpniBePobTfsa7Ks9a199e1akxsXn+GYBUKsEzv3YFzOm1HJAMNwKI3qr0Zq+mxwx9gOZoTdP1yXRYsZUocQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/pluginutils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", - "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@standard-schema/spec": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", - "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.3.tgz", - "integrity": "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@types/chai": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", - "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/deep-eql": "*", - "assertion-error": "^2.0.1" - } - }, - "node_modules/@types/deep-eql": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", - "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/eslint": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", - "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "node_modules/@types/node": { - "version": "22.13.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.4.tgz", - "integrity": "sha512-ywP2X0DYtX3y08eFVx5fNIw7/uIv8hYUKgXoK8oayJlLnKcRfEYCxWMVE1XagUdVtCJlZT1AU4LXEABW+L1Peg==", - "dev": true, - "dependencies": { - "undici-types": "~6.20.0" - } - }, - "node_modules/@vitest/expect": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.9.tgz", - "integrity": "sha512-vl/rYsUKcBr3SnQn166+XR5ZQcgMx3DQhFWdfli/cWpLnLUmbxZvyrJZotLFUryib+LtArYMSTJ5RbQ57ZqrlA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@standard-schema/spec": "^1.1.0", - "@types/chai": "^5.2.2", - "@vitest/spy": "4.1.9", - "@vitest/utils": "4.1.9", - "chai": "^6.2.2", - "tinyrainbow": "^3.1.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/mocker": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.9.tgz", - "integrity": "sha512-EVkXzBjrPGM+cK8/ANWgBrkUCfJfb38/EfTSO8h7pWvKkyPkpWxvR7BkD2MyItMF62C97zAEoqdpUixwR/e+Rw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/spy": "4.1.9", - "estree-walker": "^3.0.3", - "magic-string": "^0.30.21" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "msw": "^2.4.9", - "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "msw": { - "optional": true - }, - "vite": { - "optional": true - } - } - }, - "node_modules/@vitest/pretty-format": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.9.tgz", - "integrity": "sha512-s0iufns3iIFitdgm+YR7g1whCAaGtXz459VS9/PqyKDEEFgYIhsHOQmXgIgDuYCt7DeQmiZT0Qe2OA2p4ZPu5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyrainbow": "^3.1.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/runner": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.9.tgz", - "integrity": "sha512-KXLMDtc7oe70+3mJfGrPUWPesswH+3sTxAMAMl8DG7I8IUQT4XW718dY5ID3vPUcmlu27CcKfY4P3h3I29SLJg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/utils": "4.1.9", - "pathe": "^2.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/snapshot": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.9.tgz", - "integrity": "sha512-Jc7RKGNBo8Z28WYIm0Niej4xdSPByRf6mU58VpHQkd6Zh05rlnA+twjbK5HyeIGHxrzsc3mJgS43uM0CZKzaIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "4.1.9", - "@vitest/utils": "4.1.9", - "magic-string": "^0.30.21", - "pathe": "^2.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/spy": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.9.tgz", - "integrity": "sha512-fHpsS6mIi+PiEW+vcRVOMkX1oSaPKne3VOclSFICPcGOmfKgXPU5iAah+wcNcj2xPrCCmfq99IDGf+EojhhvhA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/utils": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.9.tgz", - "integrity": "sha512-A51o8ymO5PpqlWNnBP9ZHPXDIpuMtTLlGSjN7la4US+LJzoUMyhwjA5QXlm39JexgwHKW4Xjs8Z2d3dLCXOeuA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "4.1.9", - "convert-source-map": "^2.0.0", - "tinyrainbow": "^3.1.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", - "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/helper-numbers": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", - "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", - "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", - "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", - "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.13.2", - "@webassemblyjs/helper-api-error": "1.13.2", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", - "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", - "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/wasm-gen": "1.14.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", - "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", - "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", - "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", - "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/helper-wasm-section": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-opt": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1", - "@webassemblyjs/wast-printer": "1.14.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", - "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", - "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", - "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-api-error": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", - "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webpack-cli/configtest": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-3.0.1.tgz", - "integrity": "sha512-u8d0pJ5YFgneF/GuvEiDA61Tf1VDomHHYMjv/wc9XzYj7nopltpG96nXN5dJRstxZhcNpV1g+nT6CydO7pHbjA==", - "dev": true, - "engines": { - "node": ">=18.12.0" - }, - "peerDependencies": { - "webpack": "^5.82.0", - "webpack-cli": "6.x.x" - } - }, - "node_modules/@webpack-cli/info": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-3.0.1.tgz", - "integrity": "sha512-coEmDzc2u/ffMvuW9aCjoRzNSPDl/XLuhPdlFRpT9tZHmJ/039az33CE7uH+8s0uL1j5ZNtfdv0HkfaKRBGJsQ==", - "dev": true, - "engines": { - "node": ">=18.12.0" - }, - "peerDependencies": { - "webpack": "^5.82.0", - "webpack-cli": "6.x.x" - } - }, - "node_modules/@webpack-cli/serve": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-3.0.1.tgz", - "integrity": "sha512-sbgw03xQaCLiT6gcY/6u3qBDn01CWw/nbaXl3gTdTFuJJ75Gffv3E3DBpgvY2fkkrdS1fpjaXNOmJlnbtKauKg==", - "dev": true, - "engines": { - "node": ">=18.12.0" - }, - "peerDependencies": { - "webpack": "^5.82.0", - "webpack-cli": "6.x.x" - }, - "peerDependenciesMeta": { - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/assertion-error": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", - "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - } - }, - "node_modules/babel-loader": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.2.1.tgz", - "integrity": "sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-cache-dir": "^4.0.0", - "schema-utils": "^4.0.0" - }, - "engines": { - "node": ">= 14.15.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0", - "webpack": ">=5" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.17", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.17.tgz", - "integrity": "sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.28.6", - "@babel/helper-define-polyfill-provider": "^0.6.8", - "semver": "^6.3.1" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", - "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.5", - "core-js-compat": "^3.43.0" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.8", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.8.tgz", - "integrity": "sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.8" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/baseline-browser-mapping": { - "version": "2.10.42", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.42.tgz", - "integrity": "sha512-c/jurFrDLyui7o1J86yLkRu4LMsTYcBohveus7/I2Hzdn9KIP2bdJPTue/lR1KH46enoPbD77GKeSYNdyPoD3Q==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "baseline-browser-mapping": "dist/cli.cjs" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.28.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.5.tgz", - "integrity": "sha512-Cu2E6QejHWzuDMTkuwgpABFgDfZrXLQq5V13YOACZx4mFAG4IwGTbTfHPMr4WtxlHoXSM8FIuRwYYCz5XiabaQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "baseline-browser-mapping": "^2.10.42", - "caniuse-lite": "^1.0.30001800", - "electron-to-chromium": "^1.5.387", - "node-releases": "^2.0.50", - "update-browserslist-db": "^1.2.3" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001803", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001803.tgz", - "integrity": "sha512-g/uHREV2ZpK9qMalCsWaxmA6ol+DX8GYhuf3T40RKoP+oL7vhRJh8LNt73PCjpnR6l14FzfPrB5Yux4PKm2meg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/chai": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz", - "integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", - "dev": true - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/common-path-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", - "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", - "dev": true, - "license": "ISC" - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/core-js-compat": { - "version": "3.49.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.49.0.tgz", - "integrity": "sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.28.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/detect-libc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", - "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=8" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true, - "license": "MIT" - }, - "node_modules/electron-to-chromium": { - "version": "1.5.388", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.388.tgz", - "integrity": "sha512-Pl/aJaqOOxYxda3vcx1IKSJimwYXHDkEnGn0F+kG2EE68dDtx2uCinaS+Vih8Z91B9t8CSAbiF/HKyWcnXjhzw==", - "dev": true, - "license": "ISC" - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "license": "MIT" - }, - "node_modules/enhanced-resolve": { - "version": "5.17.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", - "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/envinfo": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.14.0.tgz", - "integrity": "sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==", - "dev": true, - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-module-lexer": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", - "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", - "dev": true, - "license": "MIT" - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/expect-type": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.4.0.tgz", - "integrity": "sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", - "dev": true, - "engines": { - "node": ">= 4.9.1" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-cache-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", - "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "common-path-prefix": "^3.0.0", - "pkg-dir": "^7.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-cache-dir/node_modules/find-up": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", - "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-cache-dir/node_modules/locate-path": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^6.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-cache-dir/node_modules/p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-cache-dir/node_modules/p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-cache-dir/node_modules/path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/find-cache-dir/node_modules/pkg-dir": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", - "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^6.3.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, - "bin": { - "flat": "cli.js" - } - }, - "node_modules/foreground-child": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", - "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", - "dev": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/glob": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.0.tgz", - "integrity": "sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^4.0.1", - "minimatch": "^10.0.0", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^2.0.0" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/hasown": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", - "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/interpret": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", - "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/is-core-module": { - "version": "2.16.2", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.2.tgz", - "integrity": "sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jackspeak": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.0.2.tgz", - "integrity": "sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lightningcss": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", - "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", - "dev": true, - "license": "MPL-2.0", - "dependencies": { - "detect-libc": "^2.0.3" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "lightningcss-android-arm64": "1.32.0", - "lightningcss-darwin-arm64": "1.32.0", - "lightningcss-darwin-x64": "1.32.0", - "lightningcss-freebsd-x64": "1.32.0", - "lightningcss-linux-arm-gnueabihf": "1.32.0", - "lightningcss-linux-arm64-gnu": "1.32.0", - "lightningcss-linux-arm64-musl": "1.32.0", - "lightningcss-linux-x64-gnu": "1.32.0", - "lightningcss-linux-x64-musl": "1.32.0", - "lightningcss-win32-arm64-msvc": "1.32.0", - "lightningcss-win32-x64-msvc": "1.32.0" - } - }, - "node_modules/lightningcss-android-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", - "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-darwin-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", - "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-darwin-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", - "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-freebsd-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", - "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", - "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", - "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", - "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", - "cpu": [ - "arm64" - ], - "dev": true, - "libc": [ - "musl" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", - "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", - "cpu": [ - "x64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", - "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", - "cpu": [ - "x64" - ], - "dev": true, - "libc": [ - "musl" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", - "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", - "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true, - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true, - "license": "MIT" - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/magic-string": { - "version": "0.30.21", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", - "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.5" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimatch": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", - "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/nanoid": { - "version": "3.3.15", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.15.tgz", - "integrity": "sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/node-releases": { - "version": "2.0.50", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.50.tgz", - "integrity": "sha512-J6l92tKHX6w8Jy5nO1Vuc01NoIiRGi/d6qBKVxh+IQ8Cr3b6HbVNfKiF8ZpFKufTwpwxMmce2W3iQZ861ZRyTg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/obug": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.3.tgz", - "integrity": "sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==", - "dev": true, - "funding": [ - "https://github.com/sponsors/sxzz", - "https://opencollective.com/debug" - ], - "license": "MIT", - "engines": { - "node": ">=12.20.0" - } - }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/package-json-from-dist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "dev": true, - "license": "BlueOak-1.0.0" - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-scurry": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", - "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^11.0.0", - "minipass": "^7.1.2" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.2.tgz", - "integrity": "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==", - "dev": true, - "license": "ISC", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "dev": true, - "license": "MIT" - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/postcss": { - "version": "8.5.16", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.16.tgz", - "integrity": "sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "cpu": [ + "arm64" ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.12", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/prettier": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", - "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/rechoir": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", - "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", - "dev": true, - "dependencies": { - "resolve": "^1.20.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true, - "license": "MIT" - }, - "node_modules/regenerate-unicode-properties": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", - "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "regenerate": "^1.4.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regexpu-core": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", - "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", - "dev": true, - "license": "MIT", - "dependencies": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.2.2", - "regjsgen": "^0.8.0", - "regjsparser": "^0.13.0", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.2.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/regjsparser": { - "version": "0.13.2", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.2.tgz", - "integrity": "sha512-NgRBy2Nx/bE+9F27nVHnqcN5HjyLmecqsqx2PJHu3/IEtADD4WuxuXIVExD5PoSDFVrl78dOonfcOe5O+5nbzQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "jsesc": "~3.1.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.12", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz", - "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "is-core-module": "^2.16.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/rimraf": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz", - "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==", "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^11.0.0", - "package-json-from-dist": "^1.0.0" - }, - "bin": { - "rimraf": "dist/esm/bin.mjs" - }, + "libc": [ + "musl" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "20 || >=22" + "node": ">= 12.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rolldown": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.1.4.tgz", - "integrity": "sha512-IjZYiLxZwpnhwhdBH2ugdTGVSdhCQUmLxLoqyjiL0JxYjyRst+5a0P3xfrTxJ5F638j4Mvvw5FAX5XE6eHpXbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@oxc-project/types": "=0.138.0", - "@rolldown/pluginutils": "^1.0.0" - }, - "bin": { - "rolldown": "bin/cli.mjs" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "optionalDependencies": { - "@rolldown/binding-android-arm64": "1.1.4", - "@rolldown/binding-darwin-arm64": "1.1.4", - "@rolldown/binding-darwin-x64": "1.1.4", - "@rolldown/binding-freebsd-x64": "1.1.4", - "@rolldown/binding-linux-arm-gnueabihf": "1.1.4", - "@rolldown/binding-linux-arm64-gnu": "1.1.4", - "@rolldown/binding-linux-arm64-musl": "1.1.4", - "@rolldown/binding-linux-ppc64-gnu": "1.1.4", - "@rolldown/binding-linux-s390x-gnu": "1.1.4", - "@rolldown/binding-linux-x64-gnu": "1.1.4", - "@rolldown/binding-linux-x64-musl": "1.1.4", - "@rolldown/binding-openharmony-arm64": "1.1.4", - "@rolldown/binding-wasm32-wasi": "1.1.4", - "@rolldown/binding-win32-arm64-msvc": "1.1.4", - "@rolldown/binding-win32-x64-msvc": "1.1.4" + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/schema-utils": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", - "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==", + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, + "libc": [ + "glibc" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 10.13.0" + "node": ">= 12.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/schema-utils/node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/schema-utils/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/schema-utils/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/serialize-javascript": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" + "url": "https://opencollective.com/parcel" } }, - "node_modules/siginfo": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", - "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", - "dev": true, - "license": "ISC" - }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "cpu": [ + "x64" + ], "dev": true, - "license": "ISC", + "libc": [ + "musl" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=14" + "node": ">= 12.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">= 8" - } - }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/stackback": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", - "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", - "dev": true, - "license": "MIT" - }, - "node_modules/std-env": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-4.1.0.tgz", - "integrity": "sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=12" + "node": ">= 12.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/string-width-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=12" + "node": ">= 12.0.0" }, "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/local-pkg": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.2.1.tgz", + "integrity": "sha512-++gUqRDEvcnN6Zhqrr+y/CkVEHhlrR96vZn3nZZPYzMcBUyBtTKzB9NadClFIsIVSsu+3i9tfk/erqy9kAmt7Q==", "dev": true, "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "mlly": "^1.7.4", + "pkg-types": "^2.3.0", + "quansync": "^0.2.11" }, "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" } }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "node_modules/mlly": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.2.tgz", + "integrity": "sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==", "dev": true, - "engines": { - "node": ">=6" + "license": "MIT", + "dependencies": { + "acorn": "^8.16.0", + "pathe": "^2.0.3", + "pkg-types": "^1.3.1", + "ufo": "^1.6.3" } }, - "node_modules/terser": { - "version": "5.39.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.39.0.tgz", - "integrity": "sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==", + "node_modules/mlly/node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", "dev": true, - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } + "license": "MIT" }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.11", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.11.tgz", - "integrity": "sha512-RVCsMfuD0+cTt3EwX8hSl2Ks56EbFHWmhluwcqoPKtBnfjiT6olaq7PRIRfhyU8nnC2MrnDrBLfrD/RGE+cVXQ==", + "node_modules/mlly/node_modules/pkg-types": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", + "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.25", - "jest-worker": "^27.4.5", - "schema-utils": "^4.3.0", - "serialize-javascript": "^6.0.2", - "terser": "^5.31.1" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } + "confbox": "^0.1.8", + "mlly": "^1.7.4", + "pathe": "^2.0.1" } }, - "node_modules/tinybench": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", - "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, "license": "MIT" }, - "node_modules/tinyexec": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.2.4.tgz", - "integrity": "sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==", + "node_modules/nanoid": { + "version": "3.3.15", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.15.tgz", + "integrity": "sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, "engines": { - "node": ">=18" + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/tinyglobby": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", - "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", + "node_modules/obug": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.3.tgz", + "integrity": "sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==", "dev": true, + "funding": [ + "https://github.com/sponsors/sxzz", + "https://opencollective.com/debug" + ], "license": "MIT", - "dependencies": { - "fdir": "^6.5.0", - "picomatch": "^4.0.4" - }, "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" + "node": ">=12.20.0" } }, - "node_modules/tinyglobby/node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } + "license": "MIT" + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" }, - "node_modules/tinyglobby/node_modules/picomatch": { + "node_modules/picomatch": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", @@ -4694,103 +1164,205 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/tinyrainbow": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.1.0.tgz", - "integrity": "sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==", + "node_modules/pkg-types": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.1.tgz", + "integrity": "sha512-y+ichcgc2LrADuhLNAx8DFjVfgz91pRxfZdI3UDhxHvcVEZsenLO+7XaU5vOp0u/7V/wZ+plyuQxtrDlZJ+yeg==", "dev": true, "license": "MIT", - "engines": { - "node": ">=14.0.0" + "dependencies": { + "confbox": "^0.2.4", + "exsolve": "^1.0.8", + "pathe": "^2.0.3" } }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/postcss": { + "version": "8.5.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.16.tgz", + "integrity": "sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", "dependencies": { - "is-number": "^7.0.0" + "nanoid": "^3.3.12", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" }, "engines": { - "node": ">=8.0" + "node": "^10 || ^12 || >=14" } }, - "node_modules/ts-loader": { - "version": "9.5.2", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.2.tgz", - "integrity": "sha512-Qo4piXvOTWcMGIgRiuFa6nHNm+54HbYaZCKqc9eeZCLRy3XqafQgwX2F7mofrbJG3g7EEb+lkiR+z2Lic2s3Zw==", + "node_modules/prettier": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", + "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.0.0", - "micromatch": "^4.0.0", - "semver": "^7.3.4", - "source-map": "^0.7.4" + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=12.0.0" + "node": ">=14" }, - "peerDependencies": { - "typescript": "*", - "webpack": "^5.0.0" + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/ts-loader/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/quansync": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.11.tgz", + "integrity": "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/antfu" + }, + { + "type": "individual", + "url": "https://github.com/sponsors/sxzz" + } + ], + "license": "MIT" + }, + "node_modules/rolldown": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.1.4.tgz", + "integrity": "sha512-IjZYiLxZwpnhwhdBH2ugdTGVSdhCQUmLxLoqyjiL0JxYjyRst+5a0P3xfrTxJ5F638j4Mvvw5FAX5XE6eHpXbA==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@oxc-project/types": "=0.138.0", + "@rolldown/pluginutils": "^1.0.0" + }, + "bin": { + "rolldown": "bin/cli.mjs" }, "engines": { - "node": ">=8" + "node": "^20.19.0 || >=22.12.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "optionalDependencies": { + "@rolldown/binding-android-arm64": "1.1.4", + "@rolldown/binding-darwin-arm64": "1.1.4", + "@rolldown/binding-darwin-x64": "1.1.4", + "@rolldown/binding-freebsd-x64": "1.1.4", + "@rolldown/binding-linux-arm-gnueabihf": "1.1.4", + "@rolldown/binding-linux-arm64-gnu": "1.1.4", + "@rolldown/binding-linux-arm64-musl": "1.1.4", + "@rolldown/binding-linux-ppc64-gnu": "1.1.4", + "@rolldown/binding-linux-s390x-gnu": "1.1.4", + "@rolldown/binding-linux-x64-gnu": "1.1.4", + "@rolldown/binding-linux-x64-musl": "1.1.4", + "@rolldown/binding-openharmony-arm64": "1.1.4", + "@rolldown/binding-wasm32-wasi": "1.1.4", + "@rolldown/binding-win32-arm64-msvc": "1.1.4", + "@rolldown/binding-win32-x64-msvc": "1.1.4" + } + }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true, + "license": "ISC" + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true, + "license": "MIT" + }, + "node_modules/std-env": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-4.1.0.tgz", + "integrity": "sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.2.4.tgz", + "integrity": "sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" } }, - "node_modules/ts-loader/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/tinyglobby": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "fdir": "^6.5.0", + "picomatch": "^4.0.4" }, "engines": { - "node": ">=10" + "node": ">=12.0.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/SuperchupuDev" } }, - "node_modules/ts-loader/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } } }, - "node_modules/ts-loader/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/tinyrainbow": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.1.0.tgz", + "integrity": "sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==", "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=14.0.0" } }, "node_modules/tslib": { @@ -4802,9 +1374,9 @@ "optional": true }, "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -4815,94 +1387,81 @@ "node": ">=14.17" } }, - "node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "dev": true - }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", - "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "node_modules/ufo": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.4.tgz", + "integrity": "sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } + "license": "MIT" }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "node_modules/unplugin": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-2.3.11.tgz", + "integrity": "sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==", "dev": true, "license": "MIT", "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" + "@jridgewell/remapping": "^2.3.5", + "acorn": "^8.15.0", + "picomatch": "^4.0.3", + "webpack-virtual-modules": "^0.6.2" }, "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", - "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", - "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" + "node": ">=18.12.0" } }, - "node_modules/update-browserslist-db": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", - "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "node_modules/unplugin-dts": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/unplugin-dts/-/unplugin-dts-1.0.3.tgz", + "integrity": "sha512-/GR887wfG4r1cWyt1UZsLRuMIjsmEbGkS9yJrz+0dsToHAYUD5CTyP3JMGVLv25j9K0mJcwAVvZno/aTuSUvNg==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], "license": "MIT", "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" - }, - "bin": { - "update-browserslist-db": "cli.js" + "@rollup/pluginutils": "^5.1.4", + "@volar/typescript": "^2.4.26", + "compare-versions": "^6.1.1", + "debug": "^4.4.0", + "kolorist": "^1.8.0", + "local-pkg": "^1.1.1", + "magic-string": "^0.30.17", + "unplugin": "^2.3.2" }, "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" + "@microsoft/api-extractor": ">=7", + "@rspack/core": "^1", + "@vue/language-core": "^3.1.5", + "esbuild": "*", + "rolldown": "*", + "rollup": ">=3", + "typescript": ">=4", + "vite": ">=3", + "webpack": "^4 || ^5" + }, + "peerDependenciesMeta": { + "@microsoft/api-extractor": { + "optional": true + }, + "@rspack/core": { + "optional": true + }, + "@vue/language-core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "rolldown": { + "optional": true + }, + "rollup": { + "optional": true + }, + "vite": { + "optional": true + }, + "webpack": { + "optional": true + } } }, "node_modules/vite": { @@ -4983,33 +1542,46 @@ } } }, - "node_modules/vite/node_modules/picomatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", - "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", + "node_modules/vite-plugin-dts": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/vite-plugin-dts/-/vite-plugin-dts-5.0.3.tgz", + "integrity": "sha512-gIth6NdCEHWPiiRMCK3N6C8WjvdsrtEQrmsiG8h6Ov+lFP+b07Y+wcs9H0H7n146l0PDTYK4cQN1vgeG1pMdRQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">=12" + "dependencies": { + "unplugin-dts": "1.0.3" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "peerDependencies": { + "@microsoft/api-extractor": ">=7", + "rollup": ">=3", + "vite": ">=3" + }, + "peerDependenciesMeta": { + "@microsoft/api-extractor": { + "optional": true + }, + "rollup": { + "optional": true + }, + "vite": { + "optional": true + } } }, "node_modules/vitest": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.9.tgz", - "integrity": "sha512-nE3/LEyc0z87uHYLZebqCUOaJr2hdtuPp7BQ4BosVFnfltxgAvMG08NyrSGlPpOUWvR27c5flSmYFTNr78L9GQ==", + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.10.tgz", + "integrity": "sha512-R9jUTe5S4Qb0HCd4TNqpC7oGcrMssMRGXLW80ubjWsW9VH5GF8y1Y0SFLY9AbqSk6nt0PnOx4H4WNJYZ13GUPw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/expect": "4.1.9", - "@vitest/mocker": "4.1.9", - "@vitest/pretty-format": "4.1.9", - "@vitest/runner": "4.1.9", - "@vitest/snapshot": "4.1.9", - "@vitest/spy": "4.1.9", - "@vitest/utils": "4.1.9", + "@vitest/expect": "4.1.10", + "@vitest/mocker": "4.1.10", + "@vitest/pretty-format": "4.1.10", + "@vitest/runner": "4.1.10", + "@vitest/snapshot": "4.1.10", + "@vitest/spy": "4.1.10", + "@vitest/utils": "4.1.10", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", @@ -5037,12 +1609,12 @@ "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", - "@vitest/browser-playwright": "4.1.9", - "@vitest/browser-preview": "4.1.9", - "@vitest/browser-webdriverio": "4.1.9", - "@vitest/coverage-istanbul": "4.1.9", - "@vitest/coverage-v8": "4.1.9", - "@vitest/ui": "4.1.9", + "@vitest/browser-playwright": "4.1.10", + "@vitest/browser-preview": "4.1.10", + "@vitest/browser-webdriverio": "4.1.10", + "@vitest/coverage-istanbul": "4.1.10", + "@vitest/coverage-v8": "4.1.10", + "@vitest/ui": "4.1.10", "happy-dom": "*", "jsdom": "*", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" @@ -5093,167 +1665,19 @@ "dev": true, "license": "MIT" }, - "node_modules/vitest/node_modules/picomatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", - "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/watchpack": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", - "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", - "dev": true, - "license": "MIT", - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack": { - "version": "5.98.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.98.0.tgz", - "integrity": "sha512-UFynvx+gM44Gv9qFgj0acCQK2VE1CtdfwFdimkapco3hlPCJ/zeq73n2yVKimVbtm+TnApIugGhLJnkU6gjYXA==", - "dev": true, - "dependencies": { - "@types/eslint-scope": "^3.7.7", - "@types/estree": "^1.0.6", - "@webassemblyjs/ast": "^1.14.1", - "@webassemblyjs/wasm-edit": "^1.14.1", - "@webassemblyjs/wasm-parser": "^1.14.1", - "acorn": "^8.14.0", - "browserslist": "^4.24.0", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.1", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.11", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^4.3.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.11", - "watchpack": "^2.4.1", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-cli": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-6.0.1.tgz", - "integrity": "sha512-MfwFQ6SfwinsUVi0rNJm7rHZ31GyTcpVE5pgVA3hwFRb7COD4TzjUUwhGWKfO50+xdc2MQPuEBBJoqIMGt3JDw==", - "dev": true, - "dependencies": { - "@discoveryjs/json-ext": "^0.6.1", - "@webpack-cli/configtest": "^3.0.1", - "@webpack-cli/info": "^3.0.1", - "@webpack-cli/serve": "^3.0.1", - "colorette": "^2.0.14", - "commander": "^12.1.0", - "cross-spawn": "^7.0.3", - "envinfo": "^7.14.0", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^3.1.1", - "rechoir": "^0.8.0", - "webpack-merge": "^6.0.1" - }, - "bin": { - "webpack-cli": "bin/cli.js" - }, - "engines": { - "node": ">=18.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.82.0" - }, - "peerDependenciesMeta": { - "webpack-bundle-analyzer": { - "optional": true - }, - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/webpack-cli/node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", - "dev": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/webpack-merge": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz", - "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==", - "dev": true, - "dependencies": { - "clone-deep": "^4.0.1", - "flat": "^5.0.2", - "wildcard": "^2.0.1" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "node_modules/vscode-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz", + "integrity": "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==", "dev": true, - "engines": { - "node": ">=10.13.0" - } + "license": "MIT" }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/webpack-virtual-modules": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", + "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } + "license": "MIT" }, "node_modules/why-is-node-running": { "version": "2.3.0", @@ -5271,130 +1695,6 @@ "engines": { "node": ">=8" } - }, - "node_modules/wildcard": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", - "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", - "dev": true - }, - "node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "license": "ISC" - }, - "node_modules/yocto-queue": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", - "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } } } } diff --git a/package.json b/package.json index ce40593..b2b5a18 100644 --- a/package.json +++ b/package.json @@ -3,10 +3,26 @@ "version": "0.7.5", "description": "Typescript version of jsfeat for WebARKit", "main": "dist/jsfeatNext.js", + "module": "dist/jsfeatNext.mjs", "types": "types/src/index.d.ts", + "unpkg": "dist/jsfeatNext.js", + "jsdelivr": "dist/jsfeatNext.js", + "exports": { + ".": { + "types": "./types/src/index.d.ts", + "import": "./dist/jsfeatNext.mjs", + "require": "./dist/jsfeatNext.js" + }, + "./package.json": "./package.json" + }, + "files": [ + "dist", + "types", + "src" + ], "scripts": { - "build-ts": "rimraf ./build && tsc && webpack --mode production", - "dev-ts": "rimraf ./build && tsc && webpack --mode development --progress --watch", + "build-ts": "vite build", + "dev-ts": "vite build --watch", "format-check": "prettier --check .", "format": "prettier --write .", "test": "vitest run", @@ -32,19 +48,10 @@ }, "homepage": "https://github.com/webarkit/jsfeatNext#readme", "devDependencies": { - "@babel/core": "^7.27.1", - "@babel/plugin-transform-runtime": "^7.27.1", - "@babel/preset-env": "^7.27.1", - "babel-loader": "^9.2.1", "prettier": "~3.5.3", - "rimraf": "^6.0.1", - "ts-loader": "^9.5.2", - "typescript": "^5.8.3", - "vitest": "^4.1.9", - "webpack": "5.98.0", - "webpack-cli": "6.0.1" - }, - "dependencies": { - "@babel/runtime": "^7.27.1" + "typescript": "^6.0.3", + "vite": "^8.1.3", + "vite-plugin-dts": "^5.0.3", + "vitest": "^4.1.10" } } diff --git a/tsconfig.json b/tsconfig.json index 083ed61..119ac0b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,35 +1,20 @@ { "compilerOptions": { - "target": "ESnext", - "module": "ESnext", + "target": "ES2020", + "module": "ESNext", + "moduleResolution": "bundler", + "lib": ["ESNext", "DOM"], "allowJs": true, "allowSyntheticDefaultImports": true, - "sourceMap": true, + "esModuleInterop": true, + "resolveJsonModule": true, "removeComments": true, - "downlevelIteration": true, - "declaration": true, - "declarationDir": "./types", - "outDir": "dist", - "strictNullChecks": false, "strict": true, + "strictNullChecks": false, "noImplicitAny": true, - "moduleResolution": "node", - "baseUrl": ".", - "esModuleInterop": true, - "resolveJsonModule": true, "forceConsistentCasingInFileNames": true, - "paths": { - "*": [ - "../node_modules/*", - ], - } + "skipLibCheck": true, + "noEmit": true }, - "lib": [ - "esNext", - "dom", - "es5" - ], - "include": [ - "src/**/*" - ] -} \ No newline at end of file + "include": ["src/**/*"] +} diff --git a/types/src/cache/cache.d.ts b/types/src/cache/cache.d.ts index c874302..706660a 100644 --- a/types/src/cache/cache.d.ts +++ b/types/src/cache/cache.d.ts @@ -1,4 +1,4 @@ -import _pool_node_t from "./../node_utils/_pool_node_t"; +import { default as _pool_node_t } from './../node_utils/_pool_node_t'; export interface ICache { allocate: (capacity: any, data_size: number) => void; get_buffer: (size_in_bytes: number) => _pool_node_t; diff --git a/types/src/fast_corners/fast_corners.d.ts b/types/src/fast_corners/fast_corners.d.ts index 742f6ae..63c65fc 100644 --- a/types/src/fast_corners/fast_corners.d.ts +++ b/types/src/fast_corners/fast_corners.d.ts @@ -1,5 +1,5 @@ -import { matrix_t } from "../matrix_t/matrix_t"; -import { point_t } from "../point_t/point_t"; +import { matrix_t } from '../matrix_t/matrix_t'; +import { point_t } from '../point_t/point_t'; export declare class fast_corners { set_threshold(threshold: number): number; detect(src: matrix_t, corners: point_t[], border: number): number; diff --git a/types/src/homography2d/homography2d.d.ts b/types/src/homography2d/homography2d.d.ts index 79751bb..184a0a1 100644 --- a/types/src/homography2d/homography2d.d.ts +++ b/types/src/homography2d/homography2d.d.ts @@ -1,5 +1,5 @@ -import { matrix_t } from "../matrix_t/matrix_t"; -import { point_t } from "../point_t/point_t"; +import { matrix_t } from '../matrix_t/matrix_t'; +import { point_t } from '../point_t/point_t'; export interface IHomography2d { run(from: point_t[], to: point_t[], model: matrix_t, count: number): number; error(from: point_t[], to: point_t[], model: matrix_t, err: Int32Array | Float32Array, count: number): void; diff --git a/types/src/imgproc/imgproc.d.ts b/types/src/imgproc/imgproc.d.ts index 1bd9eb5..c8b56a8 100644 --- a/types/src/imgproc/imgproc.d.ts +++ b/types/src/imgproc/imgproc.d.ts @@ -1,4 +1,4 @@ -import { matrix_t } from "../matrix_t/matrix_t"; +import { matrix_t } from '../matrix_t/matrix_t'; export declare class imgproc { grayscale(src: Uint8Array | Uint8ClampedArray, w: number, h: number, dst: matrix_t, code?: number): void; resample(src: matrix_t, dst: matrix_t, nw: number, nh: number): void; diff --git a/types/src/imgproc/resample.d.ts b/types/src/imgproc/resample.d.ts index 5482c87..14cd237 100644 --- a/types/src/imgproc/resample.d.ts +++ b/types/src/imgproc/resample.d.ts @@ -1,4 +1,4 @@ -import { matrix_t } from "../matrix_t/matrix_t"; -import { cache } from "../cache/cache"; +import { matrix_t } from '../matrix_t/matrix_t'; +import { cache } from '../cache/cache'; export declare function _resample_u8(src: matrix_t, dst: matrix_t, cache: cache, nw: number, nh: number): void; export declare function _resample(src: matrix_t, dst: matrix_t, cache: cache, nw: number, nh: number): void; diff --git a/types/src/index.d.ts b/types/src/index.d.ts index cf12ee9..d0af402 100644 --- a/types/src/index.d.ts +++ b/types/src/index.d.ts @@ -1,4 +1,4 @@ -import jsfeatNext from "./jsfeatNext"; +import { default as jsfeatNext } from './jsfeatNext'; declare const _default: { jsfeatNext: typeof jsfeatNext; }; diff --git a/types/src/jsfeatNext.d.ts b/types/src/jsfeatNext.d.ts index 904ec2b..75fab1d 100644 --- a/types/src/jsfeatNext.d.ts +++ b/types/src/jsfeatNext.d.ts @@ -1,20 +1,20 @@ -import { cache } from "./cache/cache"; -import { imgproc } from "./imgproc/imgproc"; -import { linalg } from "./linalg/linalg"; -import { fast_corners } from "./fast_corners/fast_corners"; -import { math } from "./math/math"; -import matmath from "./matmath/matmath"; -import { matrix_t } from "./matrix_t/matrix_t"; -import { pyramid_t } from "./pyramid_t/pyramid_t"; -import { point_t } from "./point_t/point_t"; -import { transform } from "./transform/transform"; -import { keypoint_t } from "./keypoint_t/keypoint_t"; -import { orb } from "./orb/orb"; -import { yape } from "./yape/yape"; -import { yape06 } from "./yape06/yape06"; -import { ransac_params_t } from "./motion_estimator/ransac_params_t"; -import { motion_estimator } from "./motion_estimator/motion_estimator"; -import { optical_flow_lk } from "./optical_flow_lk/optical_flow_lk"; +import { cache } from './cache/cache'; +import { imgproc } from './imgproc/imgproc'; +import { linalg } from './linalg/linalg'; +import { fast_corners } from './fast_corners/fast_corners'; +import { math } from './math/math'; +import { default as matmath } from './matmath/matmath'; +import { matrix_t } from './matrix_t/matrix_t'; +import { pyramid_t } from './pyramid_t/pyramid_t'; +import { point_t } from './point_t/point_t'; +import { transform } from './transform/transform'; +import { keypoint_t } from './keypoint_t/keypoint_t'; +import { orb } from './orb/orb'; +import { yape } from './yape/yape'; +import { yape06 } from './yape06/yape06'; +import { ransac_params_t } from './motion_estimator/ransac_params_t'; +import { motion_estimator } from './motion_estimator/motion_estimator'; +import { optical_flow_lk } from './optical_flow_lk/optical_flow_lk'; export default class jsfeatNext { private dt; protected cache: cache; @@ -80,6 +80,8 @@ declare class motion_model extends jsfeatNext { declare class affine2d extends motion_model { constructor(); run(from: point_t[], to: point_t[], model: matrix_t, count: number): number; + error(from: point_t[], to: point_t[], model: matrix_t, err: Int32Array | Float32Array, count: number): void; + check_subset(from: point_t[], to: point_t[], count: number): boolean; } declare class homography2d extends motion_model { mLtL: matrix_t; diff --git a/types/src/linalg/linalg.d.ts b/types/src/linalg/linalg.d.ts index 444bdc0..a6c21b7 100644 --- a/types/src/linalg/linalg.d.ts +++ b/types/src/linalg/linalg.d.ts @@ -1,4 +1,4 @@ -import { matrix_t } from "../matrix_t/matrix_t"; +import { matrix_t } from '../matrix_t/matrix_t'; export declare class linalg { JacobiImpl(A: Int32Array | Float32Array | Float64Array, astep: number, W: Int32Array | Float32Array | Float64Array, V: Int32Array | Float32Array | Float64Array, vstep: number, n: number): void; JacobiSVDImpl(At: Int32Array | Float32Array | Float64Array, astep: number, _W: Int32Array | Float32Array | Float64Array, Vt: Int32Array | Float32Array | Float64Array, vstep: number, m: number, n: number, n1: number): void; diff --git a/types/src/math/math.d.ts b/types/src/math/math.d.ts index 5c2b924..e9129e8 100644 --- a/types/src/math/math.d.ts +++ b/types/src/math/math.d.ts @@ -1,4 +1,4 @@ -import { matrix_t } from "../matrix_t/matrix_t"; +import { matrix_t } from '../matrix_t/matrix_t'; export declare class math { get_gaussian_kernel(kernel_size: number, sigma: number, filter: Int32Array | Float32Array, data_type: number): void; perspective_4point_transform(model: matrix_t, src_x0: number, src_y0: number, dst_x0: number, dst_y0: number, src_x1: number, src_y1: number, dst_x1: number, dst_y1: number, src_x2: number, src_y2: number, dst_x2: number, dst_y2: number, src_x3: number, src_y3: number, dst_x3: number, dst_y3: number): void; diff --git a/types/src/matmath/matmath.d.ts b/types/src/matmath/matmath.d.ts index 55c6408..9d32d13 100644 --- a/types/src/matmath/matmath.d.ts +++ b/types/src/matmath/matmath.d.ts @@ -1,4 +1,4 @@ -import { matrix_t } from "../matrix_t/matrix_t"; +import { matrix_t } from '../matrix_t/matrix_t'; export default class matmath { constructor(); identity(M: matrix_t, value: number): void; diff --git a/types/src/matrix_t/matrix_t.d.ts b/types/src/matrix_t/matrix_t.d.ts index 30604c7..831d42c 100644 --- a/types/src/matrix_t/matrix_t.d.ts +++ b/types/src/matrix_t/matrix_t.d.ts @@ -1,4 +1,4 @@ -import { data_t } from "../node_utils/data_t"; +import { data_t } from '../node_utils/data_t'; export interface IMatrix_T { cols: number; rows: number; diff --git a/types/src/motion_estimator/motion_estimator.d.ts b/types/src/motion_estimator/motion_estimator.d.ts index 603ff49..84e6dd0 100644 --- a/types/src/motion_estimator/motion_estimator.d.ts +++ b/types/src/motion_estimator/motion_estimator.d.ts @@ -1,7 +1,7 @@ -import { IHomography2d } from "../homography2d/homography2d"; -import { matrix_t } from "../matrix_t/matrix_t"; -import { point_t } from "../point_t/point_t"; -import { ransac_params_t } from "./ransac_params_t"; +import { IHomography2d } from '../homography2d/homography2d'; +import { matrix_t } from '../matrix_t/matrix_t'; +import { point_t } from '../point_t/point_t'; +import { ransac_params_t } from './ransac_params_t'; export declare class motion_estimator { get_subset(kernel: IHomography2d, from: point_t[], to: point_t[], need_cnt: number, max_cnt: number, from_sub: point_t[], to_sub: point_t[]): boolean; find_inliers(kernel: IHomography2d, model: matrix_t, from: point_t[], to: point_t[], count: number, thresh: number, err: Int32Array | Float32Array, mask: number[]): number; diff --git a/types/src/node_utils/_pool_node_t.d.ts b/types/src/node_utils/_pool_node_t.d.ts index 003f2ec..5f1847f 100644 --- a/types/src/node_utils/_pool_node_t.d.ts +++ b/types/src/node_utils/_pool_node_t.d.ts @@ -1,4 +1,4 @@ -import { IData_T } from "./data_t"; +import { IData_T } from './data_t'; export interface IPool_Node_T { resize: (size_in_bytes: number) => void; } diff --git a/types/src/optical_flow_lk/optical_flow_lk.d.ts b/types/src/optical_flow_lk/optical_flow_lk.d.ts index 5c0adb4..e9ef6b2 100644 --- a/types/src/optical_flow_lk/optical_flow_lk.d.ts +++ b/types/src/optical_flow_lk/optical_flow_lk.d.ts @@ -1,4 +1,4 @@ -import { pyramid_t } from "../pyramid_t/pyramid_t"; +import { pyramid_t } from '../pyramid_t/pyramid_t'; export declare class optical_flow_lk { track(prev_pyr: pyramid_t, curr_pyr: pyramid_t, prev_xy: Float32Array, curr_xy: Float32Array, count: number, win_size: number, max_iter: number, status: Uint8Array, eps: number, min_eigen_threshold: number): void; } diff --git a/types/src/orb/orb.d.ts b/types/src/orb/orb.d.ts index 8850f15..014beb5 100644 --- a/types/src/orb/orb.d.ts +++ b/types/src/orb/orb.d.ts @@ -1,5 +1,5 @@ -import { matrix_t } from "../matrix_t/matrix_t"; -import { keypoint_t } from "../keypoint_t/keypoint_t"; +import { matrix_t } from '../matrix_t/matrix_t'; +import { keypoint_t } from '../keypoint_t/keypoint_t'; export declare class orb { describe(src: matrix_t, corners: keypoint_t[], count: number, descriptors: matrix_t): void; } diff --git a/types/src/orb/rectify_patch.d.ts b/types/src/orb/rectify_patch.d.ts index c346fc6..ba133a9 100644 --- a/types/src/orb/rectify_patch.d.ts +++ b/types/src/orb/rectify_patch.d.ts @@ -1,3 +1,3 @@ -import { matrix_t } from "../matrix_t/matrix_t"; -import { imgproc } from "../imgproc/imgproc"; +import { matrix_t } from '../matrix_t/matrix_t'; +import { imgproc } from '../imgproc/imgproc'; export declare function rectify_patch(src: matrix_t, dst: matrix_t, angle: number, px: number, py: number, psize: number, H: matrix_t, imgProcessor: imgproc): void; diff --git a/types/src/pyramid_t/pyramid_t.d.ts b/types/src/pyramid_t/pyramid_t.d.ts index 68a395c..e524233 100644 --- a/types/src/pyramid_t/pyramid_t.d.ts +++ b/types/src/pyramid_t/pyramid_t.d.ts @@ -1,4 +1,4 @@ -import { matrix_t } from "../matrix_t/matrix_t"; +import { matrix_t } from '../matrix_t/matrix_t'; export declare class pyramid_t { data: any; levels: number; diff --git a/types/src/transform/transform.d.ts b/types/src/transform/transform.d.ts index 44790c0..655b50b 100644 --- a/types/src/transform/transform.d.ts +++ b/types/src/transform/transform.d.ts @@ -1,4 +1,4 @@ -import { matrix_t } from "../matrix_t/matrix_t"; +import { matrix_t } from '../matrix_t/matrix_t'; export declare class transform { constructor(); perspective_4point_transform(model: matrix_t, src_x0: number, src_y0: number, dst_x0: number, dst_y0: number, src_x1: number, src_y1: number, dst_x1: number, dst_y1: number, src_x2: number, src_y2: number, dst_x2: number, dst_y2: number, src_x3: number, src_y3: number, dst_x3: number, dst_y3: number): void; diff --git a/types/src/yape/yape.d.ts b/types/src/yape/yape.d.ts index 897c821..1564f54 100644 --- a/types/src/yape/yape.d.ts +++ b/types/src/yape/yape.d.ts @@ -1,5 +1,5 @@ -import { matrix_t } from "../matrix_t/matrix_t"; -import { keypoint_t } from "../keypoint_t/keypoint_t"; +import { matrix_t } from '../matrix_t/matrix_t'; +import { keypoint_t } from '../keypoint_t/keypoint_t'; export declare class yape { private level_tables; private tau; diff --git a/types/src/yape06/yape06.d.ts b/types/src/yape06/yape06.d.ts index 690bf70..43d5771 100644 --- a/types/src/yape06/yape06.d.ts +++ b/types/src/yape06/yape06.d.ts @@ -1,5 +1,5 @@ -import { matrix_t } from "../matrix_t/matrix_t"; -import { keypoint_t } from "../keypoint_t/keypoint_t"; +import { matrix_t } from '../matrix_t/matrix_t'; +import { keypoint_t } from '../keypoint_t/keypoint_t'; export declare class yape06 { detect(src: matrix_t, points: keypoint_t[], border: number): number; } diff --git a/vite.config.mts b/vite.config.mts new file mode 100644 index 0000000..e5f4991 --- /dev/null +++ b/vite.config.mts @@ -0,0 +1,43 @@ +import { defineConfig } from "vite"; +import dts from "vite-plugin-dts"; +import { fileURLToPath } from "node:url"; + +/** + * Library build for jsfeatNext (replaces the webpack + babel + ts-loader chain). + * + * - UMD (dist/jsfeatNext.js): global `jsfeatNext`, exposing the *default* export + * so browser