@sekyro/web 0.1.0-rc.7 → 0.1.0-rc.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +87 -0
- package/LICENSE +25 -16
- package/README.md +3 -5
- package/THIRD-PARTY-NOTICES.txt +154 -0
- package/dist/background-monitor-A7FKJOAG.js +1 -0
- package/dist/capture-session-doc-YBE3UMJJ.js +1 -0
- package/dist/{capture-session-v3-Okq0EQHG.d.ts → capture-session-v3-CQK-G-qX.d.ts} +72 -3
- package/dist/{capture-session-v3-UQU_WjO2.d.cts → capture-session-v3-Dvob-uH2.d.cts} +72 -3
- package/dist/chunk-4RS2YIL4.js +1 -0
- package/dist/chunk-7V2M6Y2W.js +1 -0
- package/dist/chunk-7ZCZY3ZP.js +1 -0
- package/dist/chunk-A3FUGHAH.js +2 -0
- package/dist/chunk-BPE5NSQ2.js +1 -0
- package/dist/chunk-CJHMFPL6.js +1 -0
- package/dist/chunk-DFTCAWMP.js +1 -0
- package/dist/chunk-DK5YPBDQ.js +1 -0
- package/dist/chunk-DQWW4OCK.js +1 -0
- package/dist/chunk-FHJ7HO3M.js +1 -0
- package/dist/chunk-G6LKLN4U.js +1 -0
- package/dist/chunk-GI3UFGRQ.js +1 -0
- package/dist/{chunk-IYUOYINS.js → chunk-LQ7C44JG.js} +1 -1
- package/dist/chunk-M43ET4NJ.js +1 -0
- package/dist/chunk-MXWLCDFX.js +1 -0
- package/dist/chunk-MY6EXEL2.js +1 -0
- package/dist/chunk-O5WKNZ2C.js +1 -0
- package/dist/chunk-OKWG3PVH.js +1 -0
- package/dist/chunk-POIQGEZM.js +1 -0
- package/dist/chunk-RI3E7GBN.js +1 -0
- package/dist/chunk-RNRFHUJA.js +1 -0
- package/dist/chunk-RVHAKRAI.js +1 -0
- package/dist/chunk-SMKCBUJL.js +1 -0
- package/dist/chunk-TDLIXFDT.js +1 -0
- package/dist/chunk-XLN5OT25.js +1 -0
- package/dist/chunk-YDQBVWXG.js +1 -0
- package/dist/chunk-YPG7CB4O.js +1 -0
- package/dist/client/index.cjs +1 -1
- package/dist/client/index.d.cts +13 -3
- package/dist/client/index.d.ts +13 -3
- package/dist/client/index.js +1 -1
- package/dist/core/index.cjs +1 -1
- package/dist/core/index.d.cts +3 -3
- package/dist/core/index.d.ts +3 -3
- package/dist/core/index.js +1 -1
- package/dist/core/ocr/worker.bundle.js +42 -0
- package/dist/core/ocr/worker.cjs +42 -0
- package/dist/core/ocr/worker.d.cts +84 -0
- package/dist/core/ocr/worker.d.ts +84 -0
- package/dist/core/ocr/worker.js +41 -0
- package/dist/core/v3/detect-worker.cjs +1 -1
- package/dist/core/v3/detect-worker.d.cts +1 -1
- package/dist/core/v3/detect-worker.d.ts +1 -1
- package/dist/core/v3/detect-worker.js +1 -1
- package/dist/create-document-capture-T4APHJMY.js +1 -0
- package/dist/create-portrait-capture-B57GE5FU.js +1 -0
- package/dist/create-verification-C0AVIcVW.d.ts +2787 -0
- package/dist/create-verification-DoFpgzok.d.cts +2787 -0
- package/dist/{detect-worker-CKXHlXx9.d.cts → detect-worker-DclNxkZT.d.cts} +6 -0
- package/dist/{detect-worker-CKXHlXx9.d.ts → detect-worker-DclNxkZT.d.ts} +6 -0
- package/dist/detector-scanic-YCDNLCGV.js +1 -0
- package/dist/icao-gate-D8qm1O2t.d.cts +1655 -0
- package/dist/icao-gate-D8qm1O2t.d.ts +1655 -0
- package/dist/icao-gate-PWBMKRGC.js +1 -0
- package/dist/icao-tuning-4GGVX6B4.js +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +52 -6
- package/dist/index.d.ts +52 -6
- package/dist/index.js +1 -1
- package/dist/internal/index.cjs +1 -1
- package/dist/internal/index.d.cts +345 -308
- package/dist/internal/index.d.ts +345 -308
- package/dist/internal/index.js +1 -1
- package/dist/keyframe-rank-YAJLYJYF.js +1 -0
- package/dist/landmarker-KB7LVXAU.js +1 -0
- package/dist/mrz-band-VYHOTDHY.js +1 -0
- package/dist/plan-runner-UBK4B4CG.js +1 -0
- package/dist/segmenter-USLNBX65.js +1 -0
- package/dist/turnstile-FATNZ4AG.js +1 -0
- package/package.json +22 -4
- package/sbom.cdx.json +8 -8
- package/dist/chunk-B45J4KC3.js +0 -1
- package/dist/chunk-BMA36W2W.js +0 -1
- package/dist/chunk-P7ECRN47.js +0 -1
- package/dist/chunk-YOB4ZTYN.js +0 -1
- package/dist/chunk-YQBK6OIM.js +0 -1
- package/dist/create-verification-C2JhOO6Y.d.cts +0 -533
- package/dist/create-verification-CGazwtAh.d.ts +0 -533
- package/dist/detector-scanic-VQFFXKTL.js +0 -1
- package/dist/hosted-client-kBeq-mnJ.d.cts +0 -602
- package/dist/hosted-client-kBeq-mnJ.d.ts +0 -602
package/dist/internal/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var Si=Object.create;var WA=Object.defineProperty;var Ri=Object.getOwnPropertyDescriptor;var vi=Object.getOwnPropertyNames;var ki=Object.getPrototypeOf,Mi=Object.prototype.hasOwnProperty;var hA=(e,A)=>()=>(e&&(A=e(e=0)),A);var Ne=(e,A)=>{for(var t in A)WA(e,t,{get:A[t],enumerable:!0})},pt=(e,A,t,i)=>{if(A&&typeof A=="object"||typeof A=="function")for(let n of vi(A))!Mi.call(e,n)&&n!==t&&WA(e,n,{get:()=>A[n],enumerable:!(i=Ri(A,n))||i.enumerable});return e};var xi=(e,A,t)=>(t=e!=null?Si(ki(e)):{},pt(A||!e||!e.__esModule?WA(t,"default",{value:e,enumerable:!0}):t,e)),Ni=e=>pt(WA({},"__esModule",{value:!0}),e);function wA(e){return yt[e]}var yt,Fi,XA=hA(()=>{"use strict";yt={"ID-1":{center:1.586,tolerance:.15},"ID-3":{center:1.42,tolerance:.2}};Fi=[{docType:"carte_identite",format:"ID-1",sides:["recto","verso"],mrz:"td1",portraitSide:"recto",aspectRatio:1.586,identifierSource:"mrz"},{docType:"passport",format:"ID-3",sides:["single"],mrz:"td3",portraitSide:"single",aspectRatio:1.42,identifierSource:"mrz"}]});function wt(e,A){return .299*(e[A]??0)+.587*(e[A+1]??0)+.114*(e[A+2]??0)}function DA(e){let{data:A,width:t,height:i}=e,n=t*i;if(n===0)return 0;let o=0;for(let r=0;r<n;r+=1)o+=wt(A,r*4);return o/n}function QA(e){let{data:A,width:t,height:i}=e;if(t<3||i<3)return 0;let n=new Float32Array(t*i);for(let g=0;g<n.length;g+=1)n[g]=wt(A,g*4);let o=0,r=0,s=0;for(let g=1;g<i-1;g+=1)for(let l=1;l<t-1;l+=1){let d=g*t+l,C=(n[d-t]??0)+(n[d-1]??0)+(n[d+1]??0)+(n[d+t]??0)-4*(n[d]??0);o+=C,r+=C*C,s+=1}if(s===0)return 0;let a=o/s,c=r/s-a*a;return Math.min(1,Math.max(0,c)/180)}function zA(e){let A=DA(e),[t,i]=nA,n=A<t?t-A:A>i?A-i:0;return Math.max(0,1-n/Li)}var nA,Li,mA=hA(()=>{"use strict";nA=[100,190],Li=64});function jA(e,A,t){let i=[e.topLeft,e.topRight,e.bottomRight,e.bottomLeft],n=0;for(let r=0;r<4;r++){let s=i[r],a=i[(r+1)%4];n+=s.x*a.y-a.x*s.y}let o=A*t;return o>0?Math.abs(n/2)/o:0}function Dt(e,A){let t=Le(e),i=Le(A),n=Math.max(t.x1,i.x1),o=Math.max(t.y1,i.y1),r=Math.min(t.x2,i.x2),s=Math.min(t.y2,i.y2),a=Math.max(0,r-n)*Math.max(0,s-o),c=(t.x2-t.x1)*(t.y2-t.y1),g=(i.x2-i.x1)*(i.y2-i.y1),l=c+g-a;return l>0?a/l:0}function SA(e){let A=Le(e);return{width:A.x2-A.x1,height:A.y2-A.y1}}function Le(e){let A=[e.topLeft,e.topRight,e.bottomRight,e.bottomLeft];return{x1:Math.min(...A.map(t=>t.x)),y1:Math.min(...A.map(t=>t.y)),x2:Math.max(...A.map(t=>t.x)),y2:Math.max(...A.map(t=>t.y))}}function Ti(e){let A=Math.hypot(e.topRight.x-e.topLeft.x,e.topRight.y-e.topLeft.y),t=Math.hypot(e.bottomRight.x-e.bottomLeft.x,e.bottomRight.y-e.bottomLeft.y),i=Math.hypot(e.bottomLeft.x-e.topLeft.x,e.bottomLeft.y-e.topLeft.y),n=Math.hypot(e.bottomRight.x-e.topRight.x,e.bottomRight.y-e.topRight.y),o=(A+t)/2,r=(i+n)/2;return o<=0||r<=0?0:Math.max(o,r)/Math.min(o,r)}var dA,ZA,Fe,bA,RA=hA(()=>{"use strict";mA();XA();dA=480,ZA=Object.freeze({MIN_AREA_FRAC:.15,EDGE_CLIP_MARGIN_PX:4,STABLE_TICKS:3,IOU_STABLE_MIN:.85,RISE_PER_S:.9,FALL_PER_S:.25,GUIDE_EXPOSURE:.6,GUIDE_SHARPNESS:.35,ID3_BAND_MIN_WIDTH_FRAC:.55,ID3_BAND_ASPECT_MIN:4,ID3_BAND_ASPECT_MAX:40}),Fe=e=>Math.min(1,Math.max(0,e));bA=class{constructor(A,t={}){this.p=0;this.lastTickAt=null;this.lastQuad=null;this.streak=0;this.format=A,this.t={...ZA,...t}}reset(){this.p=0,this.lastTickAt=null,this.lastQuad=null,this.streak=0}tick(A){let{quad:t,quality:i,timestampMs:n}=A,o=this.lastTickAt===null?0:Math.max(0,(n-this.lastTickAt)/1e3);this.lastTickAt=n;let r=null;if(t===null)r="dcv1.no_doc";else if(this.format==="ID-3"){let u=SA(t),E=u.height>0?u.width/u.height:0;u.width<this.t.ID3_BAND_MIN_WIDTH_FRAC*A.frameWidth?r="dcv1.come_closer":this.edgeClipped(t,A.frameWidth,A.frameHeight)?r="dcv1.fit_document":(E<this.t.ID3_BAND_ASPECT_MIN||E>this.t.ID3_BAND_ASPECT_MAX)&&(r="dcv1.wrong_shape")}else if(jA(t,A.frameWidth,A.frameHeight)<this.t.MIN_AREA_FRAC)r="dcv1.come_closer";else if(this.edgeClipped(t,A.frameWidth,A.frameHeight))r="dcv1.fit_document";else{let u=wA(this.format),E=Ti(t);Math.abs(E-u.center)>u.tolerance&&(r="dcv1.wrong_shape")}let s=r===null,a=Fe(i.exposure)>=this.t.GUIDE_EXPOSURE,c=Fe(i.sharpness)>=this.t.GUIDE_SHARPNESS,g=a&&c;if(s&&g&&t!==null){let u=this.lastQuad===null||Dt(t,this.lastQuad)>=this.t.IOU_STABLE_MIN;this.streak=u?this.streak+1:1}else this.streak=0;this.lastQuad=t;let l=s&&g;this.p=Fe(this.p+(l?this.t.RISE_PER_S:-this.t.FALL_PER_S)*o);let d=l&&this.streak>=this.t.STABLE_TICKS,C;if(r!==null)C=r;else if(a)c?C="dcv1.hold_still":C="dcv1.steady";else{let u=(nA[0]+nA[1])/2;C=i.meanLuma<u?"dcv1.more_light":"dcv1.too_bright"}return{at:n,quad:t,plausible:s,p:this.p,guidanceKey:C,ready:d,stableTicks:this.streak}}edgeClipped(A,t,i){let n=this.t.EDGE_CLIP_MARGIN_PX;return[A.topLeft,A.topRight,A.bottomRight,A.bottomLeft].some(r=>r.x<=n||r.y<=n||r.x>=t-n||r.y>=i-n)}}});var _t={};Ne(_t,{default:()=>qi,initMlDetector:()=>Oi});function Oi(){throw new Error("scanic ML detector is not vendored (classical pipeline only)")}var qi,Ht=hA(()=>{"use strict";qi={}});function Wi(e,A={}){let t=A.width||Math.sqrt(e.length),i=A.height||e.length/t,n=A.mode!==void 0?A.mode:1,o=A.method!==void 0?A.method:2,r=A.minArea||Ki,s=t+2,a=i+2,c=new Int32Array(s*a);for(let C=0;C<i;C++)for(let u=0;u<t;u++)e[C*t+u]>0&&(c[(C+1)*s+(u+1)]=1);let g=[],l=2;for(let C=1;C<=i;C++)for(let u=1;u<=t;u++){let E=c[C*s+u],p=c[C*s+(u-1)],I=null,Q=!1,D=-1;if(E===1&&p===0?(Q=!0,I={x:u,y:C},D=2):E===0&&p>=1&&p!==-1&&p===1&&(Q=!1,I={x:u-1,y:C},D=6),I){if(n===0&&!Q){c[I.y*s+I.x]=-1;continue}let w=l++,R=Xi(c,s,a,I,D,w);if(R&&R.length>0){let m=R;o===2&&(m=zi(R));let f=m.map(b=>({x:b.x-1,y:b.y-1}));if(f.length>=(o===2?4:Vi)){let b={id:w,points:f,isOuter:Q};g.push(b)}}else c[I.y*s+I.x]===1&&(c[I.y*s+I.x]=w)}}g.forEach(C=>{C.area=(function(u){let E=0,p=u.length;if(p<3)return 0;for(let I=0;I<p;I++){let Q=(I+1)%p;E+=u[I].x*u[Q].y,E-=u[Q].x*u[I].y}return Math.abs(E)/2})(C.points),C.boundingBox=(function(u){if(u.length===0)return{minX:0,minY:0,maxX:0,maxY:0};let E=u[0].x,p=u[0].y,I=u[0].x,Q=u[0].y;for(let D=1;D<u.length;D++){let w=u[D];E=Math.min(E,w.x),p=Math.min(p,w.y),I=Math.max(I,w.x),Q=Math.max(Q,w.y)}return{minX:E,minY:p,maxX:I,maxY:Q}})(C.points)});let d=g.filter(C=>C.area>=r);return d.sort((C,u)=>u.area-C.area),A.debug&&(A.debug.labels=c,A.debug.rawContours=g,A.debug.finalContours=d),d}function Xi(e,A,t,i,n,o){let r=[],s=new Set,a=i.x,c=i.y,g=a,l=c,d=-1;e[l*A+g]=o;let C=0,u=A*t,E=[0,1,1,1,0,-1,-1,-1],p=[-1,-1,0,1,1,1,0,-1];for(;C++<u;){let I;if(d===-1){let m=!1;for(let f=0;f<8;f++){I=n+f&7;let b=a+E[I],h=c+p[I];if(b>=0&&b<A&&h>=0&&h<t&&e[h*A+b]>0){m=!0;break}}if(!m)return null}else I=d+2&7;let Q=-1,D=-1;for(let m=0;m<8;m++){let f=I+m&7,b=a+E[f],h=c+p[f];if(b>=0&&b<A&&h>=0&&h<t&&e[h*A+b]>0){Q=b,D=h,d=f+4&7;break}}if(Q===-1){r.length===0&&r.push({x:a,y:c});break}let w=c*A+a;if(s.has(w))return r;r.push({x:a,y:c}),s.add(w);let R=D*A+Q;if(e[R]===1&&(e[R]=o),a=Q,c=D,a===g&&c===l)break}return C>=u?null:r}function zi(e){let A=e.length;if(A<=2)return e;let t=[],i=e[A-1],n=e[0],o=i,r=n,s=e[1],a=r.x-o.x,c=r.y-o.y,g=s.x-r.x,l=s.y-r.y;a*l!==c*g&&t.push(r);for(let d=1;d<A-1;d++)o=e[d-1],r=e[d],s=e[d+1],a=r.x-o.x,c=r.y-o.y,g=s.x-r.x,l=s.y-r.y,a*l!==c*g&&t.push(r);if(o=e[A-2],r=i,s=n,a=r.x-o.x,c=r.y-o.y,g=s.x-r.x,l=s.y-r.y,a*l!==c*g&&t.push(r),t.length===0){if(A===1)return[e[0]];if(A===2)return e;let d=0,C=1,u=n.x,E=n.y;for(let p=1;p<A;p++){let I=e[p],Q=I.x-u,D=I.y-E,w=Q*Q+D*D;w>d&&(d=w,C=p)}return[n,e[C]]}return t}function Ke(e,A=1){if(e.length<=2)return e;let t=0,i=0,n=e[0],o=e[e.length-1];for(let r=1;r<e.length-1;r++){let s=Zi(e[r],n,o);s>t&&(t=s,i=r)}if(t>A){let r=Ke(e.slice(0,i+1),A),s=Ke(e.slice(i),A);return r.slice(0,-1).concat(s)}return[n,o]}function Zi(e,A,t){let i=t.x-A.x,n=t.y-A.y,o=i*i+n*n;if(o===0)return Math.sqrt(Math.pow(e.x-A.x,2)+Math.pow(e.y-A.y,2));let r=((e.x-A.x)*i+(e.y-A.y)*n)/o,s,a;r<0?(s=A.x,a=A.y):r>1?(s=t.x,a=t.y):(s=A.x+r*i,a=A.y+r*n);let c=e.x-s,g=e.y-a;return Math.sqrt(c*c+g*g)}function Kt(e,A=.02){return Ke(e,A*(function(t){let i=0,n=t.length;if(n<2)return 0;for(let o=0;o<n;o++){let r=(o+1)%n,s=t[o].x-t[r].x,a=t[o].y-t[r].y;i+=Math.sqrt(s*s+a*a)}return i})(e))}function Ve(e,A){return Math.hypot(A.x-e.x,A.y-e.y)}function Ut(e){let A=0,t=0;for(let i of e)A+=i.x,t+=i.y;return{x:A/e.length,y:t/e.length}}function ji(e,A={}){if(!e||!e.points||e.points.length<4)return null;let t=A.epsilon||.02,i=(function(o,r){if(!o||o.length<4)return null;let s=[r,1.3*r,1.6*r,2*r],a=new Set;for(let c of s){let g=Math.min(.12,c),l=g.toFixed(4);if(a.has(l))continue;a.add(l);let d=$i(Kt(o,g));if(d&&d.length===4)return d}return null})(e.points,t),n;return i&&i.length===4?n=(function(o){if(o.length!==4)return null;let r=Ut(o),s=[...o].sort((l,d)=>Math.atan2(l.y-r.y,l.x-r.x)-Math.atan2(d.y-r.y,d.x-r.x)),a=1/0,c=0;for(let l=0;l<4;l++){let d=s[l].x+s[l].y;d<a&&(a=d,c=l)}let g=[s[c],s[(c+1)%4],s[(c+2)%4],s[(c+3)%4]];return{topLeft:g[0],topRight:g[1],bottomRight:g[2],bottomLeft:g[3]}})(i):(n=(function(o){if(!o||o.length<4)return null;let r=Ut(o),s=null,a=null,c=null,g=null,l=0,d=0,C=0,u=0;for(let E of o){let p=Ve(E,r);E.x<r.x&&E.y<r.y?p>l&&(s=E,l=p):E.x>r.x&&E.y<r.y?p>d&&(a=E,d=p):E.x>r.x&&E.y>r.y?p>C&&(c=E,C=p):E.x<r.x&&E.y>r.y&&p>u&&(g=E,u=p)}return s&&a&&c&&g?{topLeft:s,topRight:a,bottomRight:c,bottomLeft:g}:null})(e.points),n&&n.topLeft&&n.topRight&&n.bottomRight&&n.bottomLeft||(n=(function(o){if(!o||o.length===0)return null;let r=o[0],s=o[0],a=o[0],c=o[0],g=r.x+r.y,l=s.x-s.y,d=a.x+a.y,C=c.x-c.y;for(let u=1;u<o.length;u++){let E=o[u],p=E.x+E.y,I=E.x-E.y;p<g&&(g=p,r=E),p>d&&(d=p,a=E),I>l&&(l=I,s=E),I<C&&(C=I,c=E)}return{topLeft:r,topRight:s,bottomRight:a,bottomLeft:c}})(e.points))),n&&n.topLeft&&n.topRight&&n.bottomRight&&n.bottomLeft?n:null}function $i(e){if(!e||e.length<4)return null;if(e.length===4)return e;if(e.length>8)return null;let A=(function(t,i){if(!t||t.length===0)return[];let n=[];for(let o of t)(n.length===0||Ve(o,n[n.length-1])>i)&&n.push(o);return n.length>2&&Ve(n[0],n[n.length-1])<=i&&n.pop(),n})(e,6);return A.length===4?A:(A.length,null)}function Vt(){return xA!==null&&xA.byteLength!==0||(xA=new Uint8Array(W.memory.buffer)),xA}function Oe(e,A){let t=A(1*e.length,1)>>>0;return Vt().set(e,t/1),aA=e.length,t}function ae(e,A){return e>>>=0,Vt().subarray(e/1,e/1+A)}function Wt(){return NA!==null&&NA.byteLength!==0||(NA=new Float32Array(W.memory.buffer)),NA}function An(e,A,t,i,n){let o=(function(c,g){let l=g(4*c.length,4)>>>0;return Wt().set(c,l/4),aA=c.length,l})(e,W.__wbindgen_malloc),r=aA,s=W.hysteresis_thresholding(o,r,A,t,i,n);var a=ae(s[0],s[1]).slice();return W.__wbindgen_free(s[0],1*s[1],1),a}function Jt(e,A){let t=A(2*e.length,2)>>>0;return(FA!==null&&FA.byteLength!==0||(FA=new Uint16Array(W.memory.buffer)),FA).set(e,t/2),aA=e.length,t}function en(e,A,t,i,n){let o=Jt(e,W.__wbindgen_malloc),r=aA,s=Jt(A,W.__wbindgen_malloc),a=aA,c=W.non_maximum_suppression(o,r,s,a,t,i,n);var g,l,d=(g=c[0],l=c[1],g>>>=0,Wt().subarray(g/4,g/4+l)).slice();return W.__wbindgen_free(c[0],4*c[1],4),d}async function Xt(e){if(W!==void 0)return W;if(e!==void 0&&Object.getPrototypeOf(e)===Object.prototype&&({module_or_path:e}=e),e===void 0)throw new Error("scanic: WASM module bytes must be passed to init().");let A=(function(){let n={wbg:{}};return n.wbg.__wbindgen_init_externref_table=function(){let o=W.__wbindgen_export_0,r=o.grow(4);o.set(0,void 0),o.set(r+0,void 0),o.set(r+1,null),o.set(r+2,!0),o.set(r+3,!1)},n})();(typeof e=="string"||typeof Request=="function"&&e instanceof Request||typeof URL=="function"&&e instanceof URL)&&(e=fetch(e));let{instance:t,module:i}=await(async function(n,o){if(typeof Response=="function"&&n instanceof Response){if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(n,o)}catch(s){if(n.headers.get("Content-Type")=="application/wasm")throw s}let r=await n.arrayBuffer();return await WebAssembly.instantiate(r,o)}{let r=await WebAssembly.instantiate(n,o);return r instanceof WebAssembly.Instance?{instance:r,module:n}:r}})(await e,A);return(function(n,o){return W=n.exports,Xt.__wbindgen_wasm_module=o,NA=null,FA=null,xA=null,W.__wbindgen_start(),W})(t,i)}function tn(e){if(typeof atob=="function"){let A=atob(e),t=new Uint8Array(A.length);for(let i=0;i<A.length;i++)t[i]=A.charCodeAt(i);return t}return Uint8Array.from(Buffer.from(e,"base64"))}async function nn(){if(!(function(){if(qe!==null)return qe;let e=!1;if(typeof WebAssembly=="object"&&typeof WebAssembly.validate=="function"){let A=new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]),t=new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,111,3,2,1,0,10,6,1,4,0,208,111,11]);try{e=WebAssembly.validate(A)&&WebAssembly.validate(t)}catch{e=!1}}return qe=e,e})())throw new Error("scanic: WebAssembly features required by the WASM module (reference-types, SIMD) are unavailable in this engine; using the JavaScript fallback.");return await Xt({module_or_path:tn("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JAAgAiABIAJqIgFLBEBBAEEAEC0ACyADQQRqIAAoAgAiAiAAKAIEQQggASACQQF0IgIgASACSxsiASABQQhNGyIBQQFBARARIAMoAgRBAUYEQCADKAIIIAMoAgwQLQALIAMoAgghAiAAIAE2AgAgACACNgIEIANBEGokAAt5AQF/IwBBIGsiAiQAAn8gACgCAEGAgICAeEcEQCABIAAoAgQgACgCCBAwDAELIAJBEGogACgCDCgCACIAQQhqKQIANwMAIAJBGGogAEEQaikCADcDACACIAApAgA3AwggASgCACABKAIEIAJBCGoQBwsgAkEgaiQAC2kBA38jAEEQayIBJAAgAUEEaiAAKAIAIgIgACgCBEEEIAJBAXQiAiACQQRNGyICQQRBBBARIAEoAgRBAUYEQCABKAIIIAEoAgwQLQALIAEoAgghAyAAIAI2AgAgACADNgIEIAFBEGokAAtpAQN/IwBBEGsiASQAIAFBBGogACgCACICIAAoAgRBBCACQQF0IgIgAkEETRsiAkEEQQgQESABKAIEQQFGBEAgASgCCCABKAIMEC0ACyABKAIIIQMgACACNgIAIAAgAzYCBCABQRBqJAALaQEDfyMAQRBrIgEkACABQQRqIAAoAgAiAiAAKAIEQQQgAkEBdCICIAJBBE0bIgJBAkECEBEgASgCBEEBRgRAIAEoAgggASgCDBAtAAsgASgCCCEDIAAgAjYCACAAIAM2AgQgAUEQaiQACxIAIwBBMGsiACQAIABBMGokAAtoAgF/AX4jAEEwayIDJAAgAyABNgIEIAMgADYCACADQQI2AgwgA0Hkl8AANgIIIANCAjcCFCADQoCAgIAwIgQgA62ENwMoIAMgBCADQQRqrYQ3AyAgAyADQSBqNgIQIANBCGogAhAmAAtHAQF/IAAoAgAgACgCCCIDayACSQRAIAAgAyACEBIgACgCCCEDCyACBEAgACgCBCADaiABIAL8CgAACyAAIAIgA2o2AghBAAtEAQJ/IAEoAgQhAiABKAIAIQNBCEEEEDUiAUUEQEEEQQgQOQALIAEgAjYCBCABIAM2AgAgAEHcksAANgIEIAAgATYCAAvGAgACQCAAIAJNBEAgACABTSABIAJLcg0BIwBBMGsiAiQAIAIgATYCBCACIAA2AgAgAkECNgIMIAJB2JbAADYCCCACQgI3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IAAAABwAEAAMAAAAEgAAABcAAAAcABAADAAAABcAAAAZAAAAHAAQAAwAAAAUAAAAGQAAABwAEAAMAAAAUQAAAB4AAAAcABAADAAAAFIAAAAeAAAATGF6eSBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVkAAA8CBAAKgAAAEgBEABaAAAACAMAABkAAAByZWVudHJhbnQgaW5pdAAAgAgQAA4AAABIARAAWgAAAHoCAAANAAAAfP2LMlfmV/kC30S/40jnr21dy9YsUOtjeEGmV3Ebi7ltZW1vcnkgYWxsb2NhdGlvbiBvZiAgYnl0ZXMgZmFpbGVkAADICBAAFQAAAN0IEAANAAAALwEQABgAAABkAQAACQAAAAQAAAAMAAAABAAAAAUAAAAGAAAABwAAAAAAAAAIAAAABAAAAAgAAAAJAAAACgAAAAsAAAAMAAAAEAAAAAQAAAANAAAADgAAAA8AAAAQAAAAAAAAAAgAAAAEAAAAEQAAAGFzc2VydGlvbiBmYWlsZWQ6IHBzaXplID49IHNpemUgKyBtaW5fb3ZlcmhlYWQAAAQBEAAqAAAAsQQAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA8PSBzaXplICsgbWF4X292ZXJoZWFkAAAEARAAKgAAALcEAAANAAAABAAAAAwAAAAEAAAAEgAAAGNhcGFjaXR5IG92ZXJmbG93AAAA/AkQABEAAADjABAAIAAAABwAAAAFAAAAMDAwMTAyMDMwNDA1MDYwNzA4MDkxMDExMTIxMzE0MTUxNjE3MTgxOTIwMjEyMjIzMjQyNTI2MjcyODI5MzAzMTMyMzMzNDM1MzYzNzM4Mzk0MDQxNDI0MzQ0NDU0NjQ3NDg0OTUwNTE1MjUzNTQ1NTU2NTc1ODU5NjA2MTYyNjM2NDY1NjY2NzY4Njk3MDcxNzI3Mzc0NzU3Njc3Nzg3OTgwODE4MjgzODQ4NTg2ODc4ODg5OTA5MTkyOTM5NDk1OTY5Nzk4OTlyYW5nZSBlbmQgaW5kZXggIG91dCBvZiByYW5nZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoIAAA8AoQABAAAAAACxAAIgAAAHNsaWNlIGluZGV4IHN0YXJ0cyBhdCAgYnV0IGVuZHMgYXQgADQLEAAWAAAASgsQAA0AAAByYW5nZSBzdGFydCBpbmRleCAAAGgLEAASAAAAAAsQACIAAABhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvAAAAjAsQABkAAABpbmRleCBvdXQgb2YgYm91bmRzOiB0aGUgbGVuIGlzICBidXQgdGhlIGluZGV4IGlzIAAAsAsQACAAAADQCxAAEgAAAAAAAD8AAAC/AEGUmMAACwEBAHwJcHJvZHVjZXJzAghsYW5ndWFnZQEEUnVzdAAMcHJvY2Vzc2VkLWJ5AwVydXN0Yx0xLjkyLjAgKGRlZDVjMDZjZiAyMDI1LTEyLTA4KQZ3YWxydXMGMC4yMy4zDHdhc20tYmluZGdlbhMwLjIuMTAwICgyNDA1ZWMyYjQpAHQPdGFyZ2V0X2ZlYXR1cmVzBysPbXV0YWJsZS1nbG9iYWxzKxNub250cmFwcGluZy1mcHRvaW50KwdzaW1kMTI4KwtidWxrLW1lbW9yeSsIc2lnbi1leHQrD3JlZmVyZW5jZS10eXBlcysKbXVsdGl2YWx1ZQ==")})}function MA(){return se||(se=nn().catch(e=>{throw se=null,e})),se}function on(e,A,t,i=5,n=0){n===0&&(n=.3*(.5*(i-1)-1)+.8);let o=Math.floor(i/2),r=(function(c,g){let l=new Float32Array(c),d=Math.floor(c/2),C=0;for(let u=0;u<c;u++){let E=u-d;l[u]=Math.exp(-E*E/(2*g*g)),C+=l[u]}for(let u=0;u<c;u++)l[u]/=C;return l})(i,n),s=new Uint8ClampedArray(A*t),a=new Uint8ClampedArray(A*t);for(let c=0;c<t;c++){let g=c*A;for(let l=0;l<A;l++){let d=0;for(let C=-o;C<=o;C++)d+=e[g+Math.min(A-1,Math.max(0,l+C))]*r[o+C];s[g+l]=d}}for(let c=0;c<A;c++)for(let g=0;g<t;g++){let l=0;for(let d=-o;d<=o;d++)l+=s[Math.min(t-1,Math.max(0,g+d))*A+c]*r[o+d];a[g*A+c]=Math.round(l)}return a}function Yt(e,A,t,i,n){let o=new Uint8Array(A*t),r=[];for(let c=1;c<t-1;c++)for(let g=1;g<A-1;g++){let l=c*A+g,d=e[l];d>=n?(o[l]=2,r.push({x:g,y:c})):o[l]=d>=i?0:1}for(let c=0;c<A;c++)o[c]=1,o[(t-1)*A+c]=1;for(let c=1;c<t-1;c++)o[c*A]=1,o[c*A+A-1]=1;let s=[-1,0,1,-1,1,-1,0,1],a=[-1,-1,-1,0,0,1,1,1];for(;r.length>0;){let{x:c,y:g}=r.pop();for(let l=0;l<8;l++){let d=c+s[l],C=g+a[l],u=C*A+d;o[u]===0&&(o[u]=2,r.push({x:d,y:C}))}}return o}async function rn(e,A={}){let t=!(!A.debug||A.debug._timingsOnly),i=[],n=performance.now(),o,r,s;if(A.skipGrayscale)o=A.width,r=A.height,s=e,t&&(A.debug.grayscale=s);else{o=e.width,r=e.height;let T=performance.now();s=(function(k){let{width:q,height:J,data:G}=k,L=new Uint8ClampedArray(q*J);for(let v=0,M=0;v<G.length;v+=4,M++)L[M]=54*G[v]+183*G[v+1]+19*G[v+2]>>8;return L})(e);let S=performance.now();i.push({step:"Grayscale",ms:(S-T).toFixed(2)}),t&&(A.debug.grayscale=s)}let a=A.lowThreshold!==void 0?A.lowThreshold:null,c=A.highThreshold!==void 0?A.highThreshold:null;if(a===null||c===null){let S=new Uint32Array(1024),k=0;for(let L=1;L<r-1;L++)for(let v=1;v<o-1;v++){let M=L*o+v,F=-s[M-o-1]+s[M-o+1]-2*s[M-1]+2*s[M+1]-s[M+o-1]+s[M+o+1],H=-s[M-o-1]-2*s[M-o]-s[M-o+1]+s[M+o-1]+2*s[M+o]+s[M+o+1],x=Math.abs(F)+Math.abs(H);x>=1024&&(x=1023),x>0&&(S[x]++,k++)}let q=Math.round(.7*k),J=0,G=75;for(let L=1;L<1024;L++)if(J+=S[L],J>=q){G=L;break}a===null&&(a=Math.max(5,Math.round(.5*G))),c===null&&(c=Math.min(500,Math.round(1.5*G)))}let g=A.kernelSize||5,l=A.sigma||0,d=A.L2gradient!==void 0&&A.L2gradient,C=A.applyDilation===void 0||A.applyDilation,u=A.dilationKernelSize||5,E=A.useWasmHysteresis!==void 0&&A.useWasmHysteresis,p=A.useWasmFullCanny!==void 0&&A.useWasmFullCanny;if(a>=c&&([a,c]=[c,a]),p)try{await MA();let T=performance.now(),S=new Uint8ClampedArray((function(J,G,L,v,M,F,H,x,N,_){let B=Oe(J,W.__wbindgen_malloc),y=aA,U=W.canny_edge_detector_full(B,y,G,L,v,M,F,H,x,N,_);var Y=ae(U[0],U[1]).slice();return W.__wbindgen_free(U[0],1*U[1],1),Y})(s,o,r,a,c,g,l,d,C,u)),k=(performance.now()-T).toFixed(2);i.push({step:"Edge Processing (WASM)",ms:k}),t&&(A.debug.finalEdges=S),A.debug?A.debug.timings=i:A.debug={timings:i};let q=performance.now();return i.unshift({step:"Edge Detection Total",ms:(q-n).toFixed(2)}),S}catch(T){Pt||(Pt=!0,T instanceof Error?T.message:String(T))}let I,Q,D,w,R,m;I=performance.now();try{await MA(),D=(function(T,S,k,q,J){let G=Oe(T,W.__wbindgen_malloc),L=aA,v=W.blur(G,L,S,k,q,J);var M=ae(v[0],v[1]).slice();return W.__wbindgen_free(v[0],1*v[1],1),M})(s,o,r,g,l)}catch{D=on(s,o,r,g,l)}Q=performance.now(),i.push({step:"Gaussian Blur",ms:(Q-I).toFixed(2)}),t&&(A.debug.blurred=D),I=performance.now();{let T=(function(S,k,q){let J=new Int16Array(k*q),G=new Int16Array(k*q);for(let L=1;L<q-1;L++){let v=L*k,M=(L-1)*k,F=(L+1)*k;for(let H=1;H<k-1;H++){let x=v+H,N=S[M+H-1],_=S[M+H],B=S[M+H+1],y=S[v+H-1],U=S[v+H+1],Y=S[F+H-1],K=S[F+H],X=S[F+H+1],Z=B-N+2*(U-y)+(X-Y),j=Y+2*K+X-(N+2*_+B);J[x]=Z,G[x]=j}}return{dx:J,dy:G}})(D,o,r);w=T.dx,R=T.dy}Q=performance.now(),i.push({step:"Gradients",ms:(Q-I).toFixed(2)}),I=performance.now();try{await MA(),m=await en(w,R,o,r,d)}catch{m=(function(T,S,k,q,J){let G=new Float32Array(k*q),L=new Float32Array(k*q);for(let v=0;v<T.length;v++){let M=T[v],F=S[v];G[v]=J?Math.sqrt(M*M+F*F):Math.abs(M)+Math.abs(F)}for(let v=1;v<q-1;v++)for(let M=1;M<k-1;M++){let F=v*k+M,H=G[F];if(H===0){L[F]=0;continue}let x=T[F],N=S[F],_=0,B=0,y=Math.abs(x),U=Math.abs(N);if(U>2.4142*y)_=G[F-k],B=G[F+k];else if(y>2.4142*U)_=G[F-1],B=G[F+1];else{let Y=(x^N)<0?-1:1;N>0?(_=G[(v-1)*k+(M-Y)],B=G[(v+1)*k+(M+Y)]):(_=G[(v+1)*k+(M-Y)],B=G[(v-1)*k+(M+Y)]),x>0&&N>0||x<0&&N<0?(_=G[(v-1)*k+(M+1)],B=G[(v+1)*k+(M-1)]):(_=G[(v-1)*k+(M-1)],B=G[(v+1)*k+(M+1)])}L[F]=H>=_&&H>=B?H:0}return L})(w,R,o,r,d)}Q=performance.now(),i.push({step:"Non-Max Suppression",ms:(Q-I).toFixed(2)}),I=performance.now();let f=d?a*a:a,b=d?c*c:c,h;if(E)try{await MA(),h=An(m,o,r,f,b)}catch{h=Yt(m,o,r,f,b)}else h=Yt(m,o,r,f,b);Q=performance.now(),i.push({step:"Hysteresis",ms:(Q-I).toFixed(2)}),I=performance.now();let P=new Uint8ClampedArray(o*r);for(let T=0;T<h.length;T++)P[T]=h[T]===2?255:0;Q=performance.now(),i.push({step:"Binary Image",ms:(Q-I).toFixed(2)}),I=performance.now();let O=P;if(C)try{await MA(),O=(function(T,S,k,q){let J=Oe(T,W.__wbindgen_malloc),G=aA,L=W.dilate(J,G,S,k,q);var v=ae(L[0],L[1]).slice();return W.__wbindgen_free(L[0],1*L[1],1),v})(P,o,r,u)}catch{O=(function(T,S,k,q=5){let J=Math.floor(q/2),G=new Uint8ClampedArray(S*k),L=new Uint8ClampedArray(S*k);for(let v=0;v<k;v++){let M=v*S;for(let F=0;F<S;F++){let H=0;for(let x=-J;x<=J;x++){let N=F+x;if(N>=0&&N<S){let _=T[M+N];_>H&&(H=_)}}G[M+F]=H}}for(let v=0;v<S;v++)for(let M=0;M<k;M++){let F=0;for(let H=-J;H<=J;H++){let x=M+H;if(x>=0&&x<k){let N=G[x*S+v];N>F&&(F=N)}}L[M*S+v]=F}return L})(P,o,r,u)}if(Q=performance.now(),i.push({step:"Dilation",ms:(Q-I).toFixed(2)}),t){A.debug.dx=w,A.debug.dy=R;let T=new Float32Array(o*r);for(let S=0;S<w.length;S++){let k=w[S],q=R[S];T[S]=d?Math.sqrt(k*k+q*q):Math.abs(k)+Math.abs(q)}A.debug.magnitude=T,A.debug.suppressed=m,A.debug.edgeMap=h,A.debug.cannyEdges=P,A.debug.finalEdges=O}A.debug?A.debug.timings=i:A.debug||(A.debug={timings:i});let z=performance.now();return i.unshift({step:"Edge Detection Total",ms:(z-n).toFixed(2)}),O}function LA(e){return e<=0?0:e>=1?1:e}function TA(e,A){return Math.hypot(e.x-A.x,e.y-A.y)}function Ot(e){return[TA(e.topLeft,e.topRight),TA(e.topRight,e.bottomRight),TA(e.bottomRight,e.bottomLeft),TA(e.bottomLeft,e.topLeft)]}function sn(e){let A=(function(i){let n=[i.topLeft,i.topRight,i.bottomRight,i.bottomLeft],o=[];for(let r=0;r<n.length;r++){let s=n[(r+n.length-1)%n.length],a=n[r],c=n[(r+1)%n.length],g=s.x-a.x,l=s.y-a.y,d=c.x-a.x,C=c.y-a.y,u=g*d+l*C,E=Math.max(1e-6,Math.hypot(g,l)*Math.hypot(d,C)),p=Math.max(-1,Math.min(1,u/E));o.push(180*Math.acos(p)/Math.PI)}return o})(e),t=0;for(let i of A)t+=LA(1-Math.abs(i-90)/55);return t/Math.max(1,A.length)}function qt(e,A){let t=Number(A.isValid)-Number(e.isValid);if(t!==0)return t;let i=A.confidence-e.confidence;if(!(Math.abs(i)<.015)&&i!==0)return i;let n=Math.abs((e.approxCount??99)-4)-Math.abs((A.approxCount??99)-4);if(n!==0)return n;let o=(A.rightAngleScore??0)-(e.rightAngleScore??0);if(Math.abs(o)>1e-6)return o;let r=Math.abs(1-(e.contourFitRatio??1))-Math.abs(1-(A.contourFitRatio??1));return Math.abs(r)>1e-6?r:i||A.score-e.score||A.coverageRatio-e.coverageRatio||A.area-e.area}function an(e,A,t,i,n={}){let o=n.epsilon||.02,r=Kt(e.points,o).length,s=ji(e,{epsilon:o});if(!s)return{contour:e,corners:null,score:0,confidence:0,isValid:!1,area:e.area||0,fillRatio:0,coverageRatio:0,cornersArea:0,approxCount:r,convex:!1,edgeSupport:0,aspectRatio:1/0,minSide:0,rightAngleScore:0,oppositeSideConsistency:0,contourFitRatio:0,contourFitScore:0};let a=t*i,c=e.area||0,g=e.boundingBox||{minX:0,minY:0,maxX:0,maxY:0},l=c/Math.max(1,(g.maxX-g.minX+1)*(g.maxY-g.minY+1)),d=(function(x){if(!x)return 0;let N=[x.topLeft,x.topRight,x.bottomRight,x.bottomLeft],_=0;for(let B=0;B<N.length;B++){let y=(B+1)%N.length;_+=N[B].x*N[y].y-N[y].x*N[B].y}return Math.abs(_)/2})(s),C=d/Math.max(1,a),u=Ot(s),E=Math.min(...u),p=(u[0]+u[2])/2,I=(u[1]+u[3])/2,Q=p>I?p/Math.max(1e-6,I):I/Math.max(1e-6,p),D=(function(x){let N=[x.topLeft,x.topRight,x.bottomRight,x.bottomLeft],_=[];for(let y=0;y<N.length;y++){let U=N[y],Y=N[(y+1)%N.length],K=N[(y+2)%N.length],X=(Y.x-U.x)*(K.y-Y.y)-(Y.y-U.y)*(K.x-Y.x);Math.abs(X)<1e-6||_.push(Math.sign(X))}if(_.length<3)return!1;let B=_[0];return _.every(y=>y===B)})(s),w=(function(x,N,_,B){if(!x?.points||x.points.length===0)return 0;let y=Math.max(1,Math.floor(x.points.length/240)),U=0,Y=0;for(let K=0;K<x.points.length;K+=y){let X=x.points[K],Z=Math.max(0,Math.min(_-1,0|X.x)),j=Math.max(0,Math.min(B-1,0|X.y));U++;let V=!1;for(let $=-1;$<=1&&!V;$++){let sA=j+$;if(!(sA<0||sA>=B))for(let gA=-1;gA<=1;gA++){let IA=Z+gA;if(!(IA<0||IA>=_)&&N[sA*_+IA]>0){V=!0;break}}}V&&Y++}return U===0?0:Y/U})(e,A,t,i),R=sn(s),m=(function(x){let N=Ot(x);return(Math.min(N[0],N[2])/Math.max(1e-6,Math.max(N[0],N[2]))+Math.min(N[1],N[3])/Math.max(1e-6,Math.max(N[1],N[3])))/2})(s),f=c/Math.max(1,d),b=LA(1-Math.abs(f-1)/.55),h=r===4?1:r===5?.9:r===6?.7:r<=8?.5:.28,P=LA(c/Math.max(1,.4*a)),O=LA((l-.08)/.72),z=LA((C-.03)/.82),T=n.minDocumentSideRatio!==void 0?n.minDocumentSideRatio:.06,S=n.minDocumentCoverageRatio!==void 0?n.minDocumentCoverageRatio:.04,k=n.maxDocumentAspectRatio!==void 0?n.maxDocumentAspectRatio:8,q=n.minDocumentFillRatio!==void 0?n.minDocumentFillRatio:.07,J=n.minContourFitRatio!==void 0?n.minContourFitRatio:.11,G=n.maxContourFitRatio!==void 0?n.maxContourFitRatio:1.2,L=n.minRightAngleScore!==void 0?n.minRightAngleScore:.42,v=n.minOppositeSideConsistency!==void 0?n.minOppositeSideConsistency:.3,M=Math.min(t,i)*T,F=(function(x,N=6){let _=[x?.topLeft,x?.topRight,x?.bottomRight,x?.bottomLeft];if(_.some(B=>!B||!Number.isFinite(B.x)||!Number.isFinite(B.y)))return!1;for(let B=0;B<_.length;B++)for(let y=B+1;y<_.length;y++)if(TA(_[B],_[y])<N)return!1;return!0})(s)&&D&&E>=M&&C>=S&&Q<=k&&l>=q&&f>=J&&f<=G&&R>=L&&m>=v,H=.22*P+.14*O+.15*h+.08*(D?1:0)+.08*w+.13*z+.1*R+.05*m+.05*b;return{contour:e,corners:s,score:H,confidence:F?H:.33*H,isValid:F,area:c,fillRatio:l,coverageRatio:C,cornersArea:d,approxCount:r,convex:D,edgeSupport:w,aspectRatio:Q,minSide:E,rightAngleScore:R,oppositeSideConsistency:m,contourFitRatio:f,contourFitScore:b}}async function cn(e,A,t,i,n={}){let o=n.debug?{}:{_timingsOnly:!0},r=[];o&&!o._timingsOnly&&(o.preprocessing={scaledDimensions:{width:A,height:t},scaleFactor:i,maxProcessingDimension:n.maxProcessingDimension||800});let s=(function(I={}){let Q=I.dilationKernelSize||3,D=I.dilationIterations||1,w=I.applyDilation===void 0||I.applyDilation,R=[{name:"default",lowThreshold:I.lowThreshold,highThreshold:I.highThreshold,dilationKernelSize:Q,dilationIterations:D,applyDilation:w}];if(I.enableDetectionCascade===!1)return R;R.push({name:"connect-edges",lowThreshold:I.lowThreshold,highThreshold:I.highThreshold,dilationKernelSize:Math.max(Q,5),dilationIterations:Math.max(D,2),applyDilation:!0}),R.push({name:"no-dilation",lowThreshold:I.lowThreshold,highThreshold:I.highThreshold,dilationKernelSize:Q,dilationIterations:D,applyDilation:!1}),I.lowThreshold===void 0&&I.highThreshold===void 0&&R.push({name:"fixed-mid-thresholds",lowThreshold:60,highThreshold:180,dilationKernelSize:Q,dilationIterations:D,applyDilation:w});let m=[],f=new Set;for(let b of R){let h=[b.lowThreshold,b.highThreshold,b.dilationKernelSize,b.dilationIterations,b.applyDilation].join(":");f.has(h)||(f.add(h),m.push(b))}return m})(n),a=[],c=async(I,Q)=>{let D=I.name||`pass-${Q+1}`,w=Q===0?"":` (${D})`,R=n.debug?{}:{_timingsOnly:!0},m=await rn(e,{width:A,height:t,lowThreshold:I.lowThreshold,highThreshold:I.highThreshold,dilationKernelSize:I.dilationKernelSize,dilationIterations:I.dilationIterations,applyDilation:I.applyDilation,debug:R,skipGrayscale:!0,useWasmBlur:!0,useWasmHysteresis:n.useWasmHysteresis,useWasmFullCanny:n.useWasmFullCanny});R.timings&&R.timings.forEach(O=>{O.step!=="Edge Detection Total"&&r.push({step:`${O.step}${w}`,ms:O.ms})});let f=performance.now(),b=Wi(m,{minArea:(n.minArea||1e3)/(i*i),width:A,height:t});r.push({step:`Find Contours${w}`,ms:(performance.now()-f).toFixed(2)}),f=performance.now();let{best:h,candidates:P}=(function(O,z,T,S,k={}){let q=k.maxCandidateContours||12,J=O.slice(0,q).map((G,L)=>({rankByArea:L,...an(G,z,T,S,k)})).sort(qt);return{best:J[0]||null,candidates:J}})(b,m,A,t,n);return r.push({step:`Corner Detection${w}`,ms:(performance.now()-f).toFixed(2)}),{name:D,params:{lowThreshold:I.lowThreshold,highThreshold:I.highThreshold,dilationKernelSize:I.dilationKernelSize,dilationIterations:I.dilationIterations,applyDilation:I.applyDilation},contours:b,best:h,candidates:P}},g=await c(s[0],0);if(a.push(g),(function(I,Q={}){if(Q.enableDetectionCascade===!1)return!1;if(!I||!I.corners)return!0;let D=Q.minCascadeTriggerConfidence!==void 0?Q.minCascadeTriggerConfidence:.68;return!I.isValid||I.confidence<D||I.approxCount>5||I.rightAngleScore<.55||I.contourFitRatio<.14})(g.best,n))for(let I=1;I<s.length;I++)a.push(await c(s[I],I));let l=[];for(let I of a)for(let Q of I.candidates)l.push({...Q,passName:I.name,passParams:I.params});l.sort(qt);let d=l[0]||null,C=l;if(!d||!d.corners)return{success:!1,message:"No document detected",debug:o._timingsOnly?null:o,timings:r};o&&!o._timingsOnly&&(o.passes=a.map(I=>({name:I.name,params:I.params,contourCount:I.contours.length,bestCandidate:I.best?{score:I.best.score,confidence:I.best.confidence,isValid:I.best.isValid,approxCount:I.best.approxCount,coverageRatio:I.best.coverageRatio,fillRatio:I.best.fillRatio,rightAngleScore:I.best.rightAngleScore,contourFitRatio:I.best.contourFitRatio}:null})),o.candidates=C.map(I=>({passName:I.passName,rankByArea:I.rankByArea,area:I.area,fillRatio:I.fillRatio,coverageRatio:I.coverageRatio,cornersArea:I.cornersArea,approxCount:I.approxCount,convex:I.convex,edgeSupport:I.edgeSupport,aspectRatio:I.aspectRatio,minSide:I.minSide,rightAngleScore:I.rightAngleScore,oppositeSideConsistency:I.oppositeSideConsistency,contourFitRatio:I.contourFitRatio,contourFitScore:I.contourFitScore,score:I.score,confidence:I.confidence,isValid:I.isValid})),o.selectedCandidate=C[0]?{passName:C[0].passName,rankByArea:C[0].rankByArea,area:C[0].area,fillRatio:C[0].fillRatio,coverageRatio:C[0].coverageRatio,approxCount:C[0].approxCount,edgeSupport:C[0].edgeSupport,aspectRatio:C[0].aspectRatio,minSide:C[0].minSide,rightAngleScore:C[0].rightAngleScore,oppositeSideConsistency:C[0].oppositeSideConsistency,contourFitRatio:C[0].contourFitRatio,score:C[0].score,confidence:C[0].confidence,isValid:C[0].isValid}:null);let u=d.corners,E=d.contour,p=u;return i!==1&&(p={topLeft:{x:u.topLeft.x*i,y:u.topLeft.y*i},topRight:{x:u.topRight.x*i,y:u.topRight.y*i},bottomRight:{x:u.bottomRight.x*i,y:u.bottomRight.y*i},bottomLeft:{x:u.bottomLeft.x*i,y:u.bottomLeft.y*i}}),{success:!0,contour:E,corners:p,confidence:d.confidence,debug:o._timingsOnly?null:o,timings:r}}function gn(e,A,t){let{topLeft:i,topRight:n,bottomRight:o,bottomLeft:r}=t,s=Math.hypot(o.x-r.x,o.y-r.y),a=Math.hypot(n.x-i.x,n.y-i.y),c=Math.round(Math.max(s,a)),g=Math.hypot(n.x-o.x,n.y-o.y),l=Math.hypot(i.x-r.x,i.y-r.y),d=Math.round(Math.max(g,l));e.canvas.width=c,e.canvas.height=d,(function(C,u,E,p,I){let Q=u&&typeof u.width=="number"&&typeof u.height=="number"&&u.data,D=u.width||u.naturalWidth,w=u.height||u.naturalHeight,R=document.createElement("canvas");R.width=D,R.height=w;let m=R.getContext("2d",{willReadFrequently:!0});Q?m.putImageData(u,0,0):m.drawImage(u,0,0,D,w);let f=m.getImageData(0,0,D,w).data,b=(function(F){let H=F[0][0],x=F[0][1],N=F[0][2],_=F[1][0],B=F[1][1],y=F[1][2],U=F[2][0],Y=F[2][1],K=F[2][2],X=B*K-y*Y,Z=-(_*K-y*U),j=_*Y-B*U,V=-(x*K-N*Y),$=H*K-N*U,sA=-(H*Y-x*U),gA=x*y-N*B,IA=-(H*y-N*_),yA=H*B-x*_,AA=H*X+x*Z+N*j;if(AA===0)throw new Error("Singular matrix");return[[X/AA,V/AA,gA/AA],[Z/AA,$/AA,IA/AA],[j/AA,sA/AA,yA/AA]]})(E),h=b[0][0],P=b[0][1],O=b[0][2],z=b[1][0],T=b[1][1],S=b[1][2],k=b[2][0],q=b[2][1],J=b[2][2],G=C.createImageData(p,I),L=G.data,v=D-1,M=w-1;for(let F=0;F<I;F++){let H=P*F+O,x=T*F+S,N=q*F+J;for(let _=0;_<p;_++){let B=1/(k*_+N),y=(h*_+H)*B,U=(z*_+x)*B,Y=y<0?0:y>v?v:y,K=U<0?0:U>M?M:U,X=0|Y,Z=0|K,j=X<v?X+1:X,V=Z<M?Z+1:Z,$=Y-X,sA=K-Z,gA=1-$,IA=1-sA,yA=gA*IA,AA=$*IA,Se=gA*sA,Re=$*sA,ve=Z*D+X<<2,ke=Z*D+j<<2,Me=V*D+X<<2,xe=V*D+j<<2,VA=F*p+_<<2;L[VA]=f[ve]*yA+f[ke]*AA+f[Me]*Se+f[xe]*Re+.5|0,L[VA+1]=f[ve+1]*yA+f[ke+1]*AA+f[Me+1]*Se+f[xe+1]*Re+.5|0,L[VA+2]=f[ve+2]*yA+f[ke+2]*AA+f[Me+2]*Se+f[xe+2]*Re+.5|0,L[VA+3]=255}}C.putImageData(G,0,0)})(e,A,(function(C,u){let E=(function(p,I){let Q=p.length,D=p[0].length,w=p.map(f=>f.slice()),R=I.slice();for(let f=0;f<D;f++){let b=f;for(let h=f+1;h<Q;h++)Math.abs(w[h][f])>Math.abs(w[b][f])&&(b=h);[w[f],w[b]]=[w[b],w[f]],[R[f],R[b]]=[R[b],R[f]];for(let h=f+1;h<Q;h++){let P=w[h][f]/w[f][f];for(let O=f;O<D;O++)w[h][O]-=P*w[f][O];R[h]-=P*R[f]}}let m=new Array(D);for(let f=D-1;f>=0;f--){let b=R[f];for(let h=f+1;h<D;h++)b-=w[f][h]*m[h];m[f]=b/w[f][f]}return m})((function(p){let I=[];for(let Q=0;Q<4;Q++){let[D,w]=p[Q];I.push([D,w,1,0,0,0,-D*u[Q][0],-w*u[Q][0]]),I.push([0,0,0,D,w,1,-D*u[Q][1],-w*u[Q][1]])}return I})(C),[u[0][0],u[0][1],u[1][0],u[1][1],u[2][0],u[2][1],u[3][0],u[3][1]]);return[[E[0],E[1],E[2]],[E[3],E[4],E[5]],[E[6],E[7],1]]})([[i.x,i.y],[n.x,n.y],[o.x,o.y],[r.x,r.y]],[[0,0],[c-1,0],[c-1,d-1],[0,d-1]]),c,d)}async function zt(e,A={}){let t=[],i=performance.now(),n=A.mode||"detect",o=A.output||"canvas",r=A.maxProcessingDimension||800,s,a,c,g;if((A.detector||"classical")==="ml"){a=performance.now();let{detectDocumentMl:d}=await Promise.resolve().then(()=>(Ht(),_t));s=await d(e,A.ml||{}),t.push({step:"ML Detection Total",ms:(performance.now()-a).toFixed(2)}),s.timings&&s.timings.forEach(C=>t.push(C))}else{a=performance.now();let{grayscaleData:d,scaleFactor:C,scaledDimensions:u}=await(async function(E,p=800){let I,Q,D=E&&typeof E.width=="number"&&typeof E.height=="number"&&E.data;if(D)I=E.width,Q=E.height;else{if(!E)throw new Error("No image provided");I=E.width||E.naturalWidth,Q=E.height||E.naturalHeight}let w=Math.max(I,Q),R,m,f;if(w<=p)R=I,m=Q,f=1;else{let S=p/w;R=Math.round(I*S),m=Math.round(Q*S),f=1/S}let b=typeof OffscreenCanvas<"u",h=b?new OffscreenCanvas(R,m):document.createElement("canvas");b||(h.width=R,h.height=m);let P=h.getContext("2d",{willReadFrequently:!0});if(P.imageSmoothingEnabled=!0,P.imageSmoothingQuality="medium",D){let S=b?new OffscreenCanvas(I,Q):document.createElement("canvas");b||(S.width=I,S.height=Q),S.getContext("2d").putImageData(E,0,0),P.drawImage(S,0,0,I,Q,0,0,R,m)}else P.drawImage(E,0,0,I,Q,0,0,R,m);let O=P.getImageData(0,0,R,m),z=O.data,T=new Uint8ClampedArray(R*m);for(let S=0,k=0;S<z.length;S+=4,k++){let q=54*z[S]+183*z[S+1]+19*z[S+2]>>8;T[k]=q,z[S]=z[S+1]=z[S+2]=q}return{grayscaleData:T,imageData:O,scaleFactor:f,originalDimensions:{width:I,height:Q},scaledDimensions:{width:R,height:m}}})(e,r);t.push({step:"Image Prep + Scale + Gray",ms:(performance.now()-a).toFixed(2)}),s=await cn(d,u.width,u.height,C,A),s.timings&&s.timings.forEach(E=>t.push(E))}if(!s.success){let d=performance.now();return t.unshift({step:"Total",ms:(d-i).toFixed(2)}),{output:null,corners:null,contour:null,confidence:s.confidence||null,score:s.score??null,debug:s.debug,success:!1,message:s.message||"No document detected",timings:t}}n==="detect"?g=null:n==="extract"&&(a=performance.now(),c=document.createElement("canvas"),gn(c.getContext("2d"),e,s.corners),t.push({step:"Perspective Transform",ms:(performance.now()-a).toFixed(2)})),n!=="detect"&&c&&(a=performance.now(),g=o==="canvas"?c:o==="imagedata"?c.getContext("2d").getImageData(0,0,c.width,c.height):o==="dataurl"?c.toDataURL():c,t.push({step:"Output Conversion",ms:(performance.now()-a).toFixed(2)}));let l=performance.now();return t.unshift({step:"Total",ms:(l-i).toFixed(2)}),{output:g,corners:s.corners,contour:s.contour??null,confidence:s.confidence||null,score:s.score??null,debug:s.debug,success:!0,message:"Document detected",timings:t}}var W,Ki,Vi,xA,aA,NA,FA,se,Pt,qe,Zt=hA(()=>{"use strict";Ki=1e3,Vi=10;xA=null;aA=0;NA=null;FA=null;se=null,Pt=!1,qe=null});var We={};Ne(We,{DOC_DETECT_MIN_CONFIDENCE:()=>jt,DOC_DETECT_WIDTH:()=>dA,SCANIC_VERSION:()=>In,detectQuad:()=>ln});async function ln(e){let A=await zt(e,{mode:"detect",detector:"classical",maxProcessingDimension:dA});return!A.success||A.corners===null||typeof A.confidence=="number"&&A.confidence<jt?null:A.corners}var In,jt,Xe=hA(()=>{"use strict";Zt();RA();In="1.5.0",jt=.35});var ro={};Ne(ro,{ASPECT_BANDS:()=>yt,AttestationError:()=>BA,CAPTURE_CANDIDATE_SPACING_MS:()=>ii,CAPTURE_EXTRA_CANDIDATES:()=>ti,CENTERED_FACTOR:()=>si,CIRCLE_RADIUS_FACTOR:()=>oi,CLIP_MIME_ALLOWLIST:()=>gt,CaptureSessionDoc:()=>ze,DOC_ANALYSIS_DEFAULTS:()=>Rt,DOC_CADENCE_HZ:()=>ei,DOC_DETECT_WIDTH:()=>dA,DOC_FEEDBACK_STATES:()=>vA,DOC_GATE_V1_DEFAULTS:()=>ZA,DocFeedbackAggregator:()=>kA,DocGateV1:()=>bA,INFERENCE_RETRY_ATTEMPTS:()=>ut,INFERENCE_RETRY_DEFAULT_S:()=>dt,IN_CIRCLE_FACTOR:()=>ri,MRZ_BAND_DEFAULTS:()=>bt,MR_DOC_CATALOG:()=>Fi,PRELOAD_BLAZE_INIT_TIMEOUT_MS:()=>tt,PRELOAD_BUDGET_MS:()=>me,PROCESSING_POLL_DELAY_MS:()=>Qt,PROCESSING_POLL_MAX:()=>mt,REGISTRY_RETRY_DELAY_MS:()=>ht,RETRYABLE_REASONS:()=>at,TRANSPORT_REPLAY_ATTEMPTS:()=>It,TRANSPORT_REPLAY_DELAY_MS:()=>lt,TURNSTILE_EXECUTE_TIMEOUT_MS:()=>wi,TURNSTILE_SCRIPT_SRC:()=>Et,analyzeDocFrame:()=>_e,aspectBand:()=>wA,createLivenessCaptureInternal:()=>pe,createVerificationInternal:()=>bi,detectIsMobile:()=>lA,detectMrzBand:()=>Te,executeTurnstile:()=>be,feedbackVoteOf:()=>He,frontierStep:()=>rA,isExecutable:()=>EA,isTerminalView:()=>tA,loadTurnstile:()=>Bt,mapEngineState:()=>rt,mapErrorKind:()=>st,mapGuidanceHint:()=>ot,mapSessionResult:()=>OA,mergeSessionView:()=>we,preloadedDetectorFactory:()=>fe,quadAreaFrac:()=>jA,quadBounds:()=>SA,quadIou:()=>Dt,quadTiltRatio:()=>vt,randomUuid:()=>ft,resetLivenessAssetsForTests:()=>Ei,resetTurnstileForTests:()=>Di,runLivenessFlow:()=>De,runSubmission:()=>pA,setPreloadLoaderForTests:()=>Ci,specularFraction:()=>Ge,stepOf:()=>iA,warmDocDetector:()=>Cn});module.exports=Ni(ro);XA();RA();var bt=Object.freeze({EDGE_LUMA_DELTA:40,MIN_ROW_DENSITY:.08,MIN_COLUMN_COVERAGE:.6,MIN_WIDTH_FRAC:.55,MIN_HEIGHT_FRAC:.02,MAX_HEIGHT_FRAC:.16,ROW_MERGE_GAP:18}),$A=12;function Te(e,A={}){let t={...bt,...A},{data:i,width:n,height:o}=e;if(n<32||o<32)return null;let r=new Array(o).fill(!1),s=new Float32Array(o),a=new Int32Array(o).fill(n),c=new Int32Array(o).fill(-1),g=n/$A,l=new Array($A);for(let m=0;m<o;m++){let f=0;l.fill(!1);let b=m*n*4,h=.299*(i[b]??0)+.587*(i[b+1]??0)+.114*(i[b+2]??0);for(let O=1;O<n;O++){let z=b+O*4,T=.299*(i[z]??0)+.587*(i[z+1]??0)+.114*(i[z+2]??0);Math.abs(T-h)>=t.EDGE_LUMA_DELTA&&(f+=1,l[Math.min($A-1,Math.floor(O/g))]=!0,O<a[m]&&(a[m]=O),O>c[m]&&(c[m]=O)),h=T}s[m]=f/n;let P=l.filter(Boolean).length/$A;r[m]=s[m]>=t.MIN_ROW_DENSITY&&P>=t.MIN_COLUMN_COVERAGE&&c[m]-a[m]>=t.MIN_WIDTH_FRAC*n}let d=null,C=-1,u=-1,E=0,p=m=>{if(C<0)return;let f=m-C+1;f>=t.MIN_HEIGHT_FRAC*o&&f<=t.MAX_HEIGHT_FRAC*o&&E>=4&&(d===null||E>d.rows)&&(d={top:C,bottom:m,rows:E}),C=-1,E=0};for(let m=0;m<o;m++)r[m]&&(C<0?C=m:m-u>t.ROW_MERGE_GAP&&(p(u),C=m),u=m,E+=1);if(p(u),d===null)return null;let I=d,Q=n,D=-1,w=0,R=0;for(let m=I.top;m<=I.bottom;m++)r[m]&&(a[m]<Q&&(Q=a[m]),c[m]>D&&(D=c[m]),w+=s[m],R+=1);return D-Q<t.MIN_WIDTH_FRAC*n?null:{x:Q,y:I.top,width:D-Q,height:I.bottom-I.top+1,density:R>0?w/R:0}}mA();XA();RA();var Rt=Object.freeze({MAX_AREA_FRAC:.92,TILT_MAX_SIDE_RATIO:1.3,GLARE_MAX_SPECULAR_FRAC:.025});function Ge(e){let{data:A,width:t,height:i}=e,n=t*i;if(n===0)return 0;let o=0;for(let r=0;r<n;r++){let s=r*4;.299*(A[s]??0)+.587*(A[s+1]??0)+.114*(A[s+2]??0)>=252&&o++}return o/n}function vt(e){let A=(a,c)=>Math.hypot(c.x-a.x,c.y-a.y),t=A(e.topLeft,e.topRight),i=A(e.bottomLeft,e.bottomRight),n=A(e.topLeft,e.bottomLeft),o=A(e.topRight,e.bottomRight),r=Math.max(t,i)/Math.max(1e-6,Math.min(t,i)),s=Math.max(n,o)/Math.max(1e-6,Math.min(n,o));return Math.max(r,s)}function _e(e){let A={...ZA,...e.thresholds},t=Rt,{quad:i,frameWidth:n,frameHeight:o,measures:r}=e,s=e.format==="ID-3",a="ok";if(i===null)a="no_document";else if(s){let d=SA(i),C=n>0?d.width/n:0,u=d.height>0?d.width/d.height:0;C<A.ID3_BAND_MIN_WIDTH_FRAC?a="too_far":St(i,n,o,A.EDGE_CLIP_MARGIN_PX)?a="edge_clipped":(u<A.ID3_BAND_ASPECT_MIN||u>A.ID3_BAND_ASPECT_MAX)&&(a="wrong_shape")}else{let d=jA(i,n,o),C=wA(e.format),u=SA(i),E=Math.max(u.width,u.height)/Math.max(1e-6,Math.min(u.width,u.height));d<A.MIN_AREA_FRAC?a="too_far":d>t.MAX_AREA_FRAC?a="too_close":St(i,n,o,A.EDGE_CLIP_MARGIN_PX)?a="edge_clipped":Math.abs(E-C.center)>C.tolerance?a="wrong_shape":vt(i)>t.TILT_MAX_SIDE_RATIO&&(a="tilted")}let c=r.exposure>=A.GUIDE_EXPOSURE?"ok":r.meanLuma<(nA[0]+nA[1])/2?"too_dark":"too_bright",g=r.sharpness>=A.GUIDE_SHARPNESS?"ok":"blurry",l=r.specularFraction>=t.GLARE_MAX_SPECULAR_FRAC?"glare":"ok";return{framing:a,lighting:c,blur:g,glare:l,acceptable:a==="ok"&&c==="ok"&&g==="ok"&&l==="ok"}}function St(e,A,t,i){return[e.topLeft,e.topRight,e.bottomRight,e.bottomLeft].some(o=>o.x<=i||o.y<=i||o.x>=A-i||o.y>=t-i)}var vA=Object.freeze({sensing:{key:"sensing",reticle:"searching",minDurationMs:900},too_far:{key:"too_far",reticle:"coaching",minDurationMs:1400},too_close:{key:"too_close",reticle:"coaching",minDurationMs:1400},edge_clipped:{key:"edge_clipped",reticle:"coaching",minDurationMs:1400},wrong_shape:{key:"wrong_shape",reticle:"coaching",minDurationMs:1400},tilted:{key:"tilted",reticle:"coaching",minDurationMs:1400},too_dark:{key:"too_dark",reticle:"coaching",minDurationMs:1400},too_bright:{key:"too_bright",reticle:"coaching",minDurationMs:1400},blurry:{key:"blurry",reticle:"coaching",minDurationMs:1400},glare:{key:"glare",reticle:"coaching",minDurationMs:1400},hold_still:{key:"hold_still",reticle:"locking",minDurationMs:900},processing:{key:"processing",reticle:"processing",minDurationMs:800},side_captured:{key:"side_captured",reticle:"flip",minDurationMs:2600},captured:{key:"captured",reticle:"done",minDurationMs:800}});function He(e){return e.framing==="no_document"?"sensing":e.framing==="too_far"?"too_far":e.framing==="too_close"?"too_close":e.framing==="edge_clipped"?"edge_clipped":e.framing==="wrong_shape"?"wrong_shape":e.framing==="tilted"?"tilted":e.lighting==="too_dark"?"too_dark":e.lighting==="too_bright"?"too_bright":e.glare==="glare"?"glare":e.blur==="blurry"?"blurry":"hold_still"}var kA=class{constructor(A=2600,t=.35){this.windowMs=A;this.decayPerSecond=t;this.votes=[];this.current=vA.sensing;this.currentSinceMs=null}reset(){this.votes=[],this.current=vA.sensing,this.currentSinceMs=null}force(A,t){return this.votes=[],this.current=vA[A],this.currentSinceMs=t,this.current}tick(A,t){if(this.currentSinceMs===null&&(this.currentSinceMs=t),this.votes.push({key:A,atMs:t}),this.votes=this.votes.filter(r=>t-r.atMs<=this.windowMs),t-this.currentSinceMs<this.current.minDurationMs)return this.current;let i=new Map;for(let r of this.votes){let s=(t-r.atMs)/1e3,a=this.decayPerSecond**s;i.set(r.key,(i.get(r.key)??0)+a)}let n=this.current.key,o=-1;for(let[r,s]of i)s>o&&(o=s,n=r);return n!==this.current.key&&(this.current=vA[n],this.currentSinceMs=t),this.current}};var kt="0.1.0-rc.7";var Mt="sekyro.did",xt;function Nt(){let e=globalThis.crypto;try{if(typeof e?.randomUUID=="function")return e.randomUUID()}catch{}try{if(typeof e?.getRandomValues=="function"){let A=e.getRandomValues(new Uint8Array(16));return Array.from(A,t=>t.toString(16).padStart(2,"0")).join("")}}catch{}}function Gi(){try{let e=localStorage.getItem(Mt);if(e)return e;let A=Nt();return A!==void 0&&localStorage.setItem(Mt,A),A}catch{return xt??(xt=Nt()),xt}}async function _i(){let e=globalThis.crypto?.subtle;if(!e)return"";let A=navigator,t=JSON.stringify([A.userAgent,A.platform,A.hardwareConcurrency??null,A.deviceMemory??null,A.maxTouchPoints??0,screen.width,screen.height,screen.colorDepth,globalThis.devicePixelRatio??1,Intl.DateTimeFormat().resolvedOptions().timeZone,A.languages?.join(",")??A.language]),i=await e.digest("SHA-256",new TextEncoder().encode(t));return Array.from(new Uint8Array(i),n=>n.toString(16).padStart(2,"0")).join("").slice(0,32)}function Hi(e){let A=new TextEncoder().encode(e),t="";for(let i of A)t+=String.fromCharCode(i);return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function Ui(e){let A,t;return{timezone(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone?.slice(0,64)||void 0}catch{return}},noteCameraLabel(i){i&&(A=i.slice(0,128))},async deviceHeader(){try{t??(t=_i().catch(()=>""));let i=[];navigator.webdriver&&i.push("webdriver"),/HeadlessChrome/.test(navigator.userAgent)&&i.push("headless");let n=await t,o=Gi(),r={v:1,platform:"web",sdk:e.sdk.slice(0,64),ids:[...o?[{kind:"web_local",value:o.slice(0,128)}]:[],...n?[{kind:"web_fp",value:n}]:[]],screen:{w:screen.width,h:screen.height,dpr:globalThis.devicePixelRatio??1},...A?{cameraLabel:A}:{},...i.length?{signals:i}:{}};return Hi(JSON.stringify(r))}catch{return}}}}var Ue=Symbol.for("sekyro.web.clientContext"),Je=globalThis,Ae=Je[Ue]??(Je[Ue]=Ui({sdk:`@sekyro/web@${kt}`}));function ee(e){try{let A=e.getVideoTracks?.()[0];A&&Ae.noteCameraLabel(A.label)}catch{}}var Ji=["video/mp4;codecs=avc1.42E01E,mp4a.40.2","video/mp4;codecs=avc1.42E01E","video/mp4","video/webm;codecs=vp9,opus","video/webm;codecs=vp9","video/webm;codecs=vp8,opus","video/webm;codecs=vp8","video/webm"];function Ft(){let e=globalThis.MediaRecorder;return!e||typeof e.isTypeSupported!="function"?"":Ji.find(A=>e.isTypeSupported(A))??""}var Lt="video/webm";function te(e){if(e instanceof TypeError)return"insecure";switch(e?.name??""){case"NotAllowedError":case"PermissionDeniedError":return"permission";case"NotFoundError":case"DevicesNotFoundError":return"notfound";case"NotReadableError":case"TrackStartError":return"inuse";case"OverconstrainedError":case"ConstraintNotSatisfiedError":return"overconstrained";default:return"generic"}}function Tt(){let e=globalThis;if(typeof e.window<"u"&&e.window.isSecureContext===!1)return"INSECURE_CONTEXT";let A=e.navigator?.mediaDevices;return!A||typeof A.getUserMedia!="function"?"UNSUPPORTED":"OK"}function Gt(){let e=globalThis.MediaRecorder;return typeof e<"u"&&typeof e.isTypeSupported=="function"}var Pe=8*1024*1024;function ie(e){return e.size>Pe}var Pi=Object.freeze({LOW:Object.freeze({cadenceHz:5,inputWidth:128,animations:"reduced"}),MID:Object.freeze({cadenceHz:8,inputWidth:160,animations:"full"}),HIGH:Object.freeze({cadenceHz:10,inputWidth:192,animations:"full"})}),Yi=new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]);function oe(){let e=typeof navigator>"u"?void 0:navigator,A=!1;try{A=typeof WebAssembly<"u"&&WebAssembly.validate(Yi)}catch{A=!1}return{cores:e?.hardwareConcurrency??2,memGB:e?.deviceMemory??null,simd:A}}function re(e){let A=e.memGB??4;return e.cores<4||A<3?"LOW":e.cores>=8&&A>=6?"HIGH":"MID"}var Ye=["LOW","MID","HIGH"],ne=class{constructor(A){this.samples=[];this.adjusted=!1;this.current=A}get deviceClass(){return this.current}get profile(){return Pi[this.current]}record(A){if(this.adjusted||this.samples.length>=10)return this.current;if(this.samples.push(A),this.samples.length<10)return this.current;this.adjusted=!0;let t=this.samples.reduce((i,n)=>i+n,0)/this.samples.length;if(t>70)this.current="LOW";else if(t<25){let i=Ye.indexOf(this.current);this.current=Ye[Math.min(Ye.length-1,i+1)]??this.current}return this.current}};mA();RA();var GA=null;async function un(e){return GA===null&&(GA=(await Promise.resolve().then(()=>(Xe(),We))).detectQuad),GA(e)}async function dn(e){let A=Te(e);return A===null?null:{topLeft:{x:A.x,y:A.y},topRight:{x:A.x+A.width,y:A.y},bottomRight:{x:A.x+A.width,y:A.y+A.height},bottomLeft:{x:A.x,y:A.y+A.height}}}function Cn(){GA===null&&Promise.resolve().then(()=>(Xe(),We)).then(e=>{GA=e.detectQuad}).catch(()=>{})}var ei=Object.freeze({LOW:3,MID:5,HIGH:6}),ze=class{constructor(A){this.handlers=new Map;this.stream=null;this.timer=null;this.state="idle";this.lastGuidance=null;this.attempt=0;this.capturing=!1;this.feedback=new kA;this.lastFeedbackKey=null;this.opts=A,this.gate=new bA(A.format??"ID-1",A.thresholds);let t=A.deviceClass??re(oe());this.cadenceMs=1e3/ei[t]}on(A,t){let i=this.handlers.get(A);return i||(i=new Set,this.handlers.set(A,i)),i.add(t),()=>i?.delete(t)}emit(A,t){for(let i of[...this.handlers.get(A)??[]])i(t)}async start(){let A=++this.attempt;this.gate.reset(),this.feedback.reset(),this.lastFeedbackKey=null,this.lastGuidance=null,this.capturing=!1,this.setState("preflight");try{let t=this.opts.getUserMedia??(i=>navigator.mediaDevices.getUserMedia(i));if(this.setState("acquiring"),this.stream=await t({audio:!1,video:{facingMode:{ideal:"environment"},width:{ideal:1920},height:{ideal:1080}}}),ee(this.stream),A!==this.attempt){for(let i of this.stream.getTracks())i.stop();return}this.opts.video.srcObject=this.stream,await this.opts.video.play().catch(()=>{}),this.setState("positioning"),this.scheduleTick(A)}catch(t){let i=te(t);this.setState("error"),this.emit("error",{kind:i,retryable:!0})}}rearm(A){A!==void 0&&(this.opts.side=A),this.gate.reset(),this.feedback.reset(),this.lastFeedbackKey=null,this.lastGuidance=null,this.capturing=!1,this.state==="captured"&&(this.setState("positioning"),this.scheduleTick(this.attempt))}destroy(){if(this.attempt+=1,this.timer!==null&&(this.opts.clearTimer??clearTimeout)(this.timer),this.timer=null,this.stream)for(let A of this.stream.getTracks())A.stop();this.stream=null,this.opts.video.srcObject=null}setState(A){this.state=A,this.emit("statechange",{state:A})}scheduleTick(A){let t=this.opts.setTimer??setTimeout;this.timer=t(()=>{this.tick(A)},this.cadenceMs)}async tick(A){if(A!==this.attempt||this.state!=="positioning"||this.capturing)return;let t=this.opts.now??(()=>performance.now()),i=this.opts.grabDetectFrame??$t,n=this.opts.detect??((this.opts.format??"ID-1")==="ID-3"?dn:un),o=i(this.opts.video,dA);if(o===null){this.scheduleTick(A);return}let r=null;try{r=await n(o)}catch{r=null}if(A!==this.attempt)return;let s=r!==null?Ai(o,r):o,a=t(),c={sharpness:QA(s),exposure:zA(s),meanLuma:DA(s),specularFraction:Ge(s)},g=_e({format:this.opts.format??"ID-1",quad:r,frameWidth:o.width,frameHeight:o.height,measures:c,...this.opts.thresholds!==void 0?{thresholds:this.opts.thresholds}:{}}),l=this.gate.tick({timestampMs:a,quad:r,quality:c,frameWidth:o.width,frameHeight:o.height});this.emit("checks",{engine:"docv1",p:l.p,plausible:l.plausible,stableTicks:l.stableTicks,quad:l.quad,frameWidth:o.width,frameHeight:o.height,analysis:g});let d=this.feedback.tick(He(g),a);if(d.key!==this.lastFeedbackKey&&(this.lastFeedbackKey=d.key,this.emit("feedback",d)),l.guidanceKey!==this.lastGuidance&&(this.lastGuidance=l.guidanceKey,this.emit("guidance",{key:l.guidanceKey})),l.ready&&r!==null){let C=this.feedback.force("processing",a);this.lastFeedbackKey=C.key,this.emit("feedback",C),await this.fire(A,r,{width:o.width,height:o.height,tickSharpness:c.sharpness});return}this.scheduleTick(A)}async fire(A,t,i){this.capturing=!0;let n=this.opts.captureStill??Bn,o=this.opts.grabDetectFrame??$t,r=this.opts.setTimer??setTimeout,s={width:i.width,height:i.height};try{let a={still:await n(this.opts.video,t,s),sharpness:i.tickSharpness};for(let c=0;c<ti;c++){if(await new Promise(d=>{r(()=>d(),ii)}),A!==this.attempt)return;let g=o(this.opts.video,dA);if(g===null)continue;let l=QA(Ai(g,t));if(l>a.sharpness*En){let d=await n(this.opts.video,t,s);if(A!==this.attempt)return;a={still:d,sharpness:l}}}if(A!==this.attempt)return;this.setState("captured"),this.emit("artifacts",{keyframe:a.still.blob,previewDataUrl:a.still.previewDataUrl,...this.opts.side!==void 0?{side:this.opts.side}:{}})}catch{if(A!==this.attempt)return;this.capturing=!1,this.gate.reset(),this.scheduleTick(A)}}},ti=2,ii=260,En=1.08;function $t(e,A){let t=e.videoWidth,i=e.videoHeight;if(t===0||i===0)return null;let n=Math.min(1,A/t),o=Math.round(t*n),r=Math.round(i*n),s=document.createElement("canvas");s.width=o,s.height=r;let a=s.getContext("2d",{willReadFrequently:!0});return a===null?null:(a.drawImage(e,0,0,o,r),a.getImageData(0,0,o,r))}async function Bn(e,A,t){let i=document.createElement("canvas");i.width=Math.max(1,e.videoWidth),i.height=Math.max(1,e.videoHeight);let n=i.getContext("2d");if(n===null)throw new Error("2d context unavailable");return n.drawImage(e,0,0,i.width,i.height),{blob:await new Promise((r,s)=>{i.toBlob(a=>a?r(a):s(new Error("toBlob failed")),"image/jpeg",.92)}),previewDataUrl:i.toDataURL("image/jpeg",.85)}}function Ai(e,A){let t=[A.topLeft.x,A.topRight.x,A.bottomRight.x,A.bottomLeft.x],i=[A.topLeft.y,A.topRight.y,A.bottomRight.y,A.bottomLeft.y],n=Math.max(0,Math.floor(Math.min(...t))),o=Math.max(0,Math.floor(Math.min(...i))),r=Math.min(e.width,Math.ceil(Math.max(...t))),s=Math.min(e.height,Math.ceil(Math.max(...i))),a=Math.max(1,r-n),c=Math.max(1,s-o),g=new Uint8ClampedArray(a*c*4);for(let l=0;l<c;l++){let d=((o+l)*e.width+n)*4;g.set(e.data.subarray(d,d+a*4),l*a*4)}return{data:g,width:a,height:c,colorSpace:e.colorSpace}}function ni(e,A){return{video:{width:{ideal:1280,max:1280},height:{ideal:720,max:720},facingMode:A,frameRate:{ideal:24,max:30}},audio:!1}}function lA(){return typeof window>"u"||typeof navigator>"u"?!1:window.innerWidth<=768||/Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(String(navigator.userAgent??""))}var oi=.45,ri=.9,si=.4;var hn=2500,Qn=1e3,mn=1500,ai=25e5,uA=class extends Error{constructor(A,t){super(t??A),this.kind=A}},ce=class{constructor(){this.recorder=null;this.stream=null;this.chunks=[];this.bytes=0;this.hardStopTimer=null;this.graceTimer=null;this.settled=!1}clearTimers(){this.hardStopTimer&&clearTimeout(this.hardStopTimer),this.graceTimer&&clearTimeout(this.graceTimer),this.hardStopTimer=null,this.graceTimer=null}record(A,t){if(this.recorder&&!this.settled)return Promise.reject(new uA("generic","record() called while a recording is in flight \u2014 ClipRecorder handles one recording at a time"));this.recorder=null,this.clearTimers(),this.chunks=[],this.bytes=0,this.settled=!1,this.stream=A;let i=Ft();return new Promise((n,o)=>{let r;try{r=new MediaRecorder(A,i?{mimeType:i,videoBitsPerSecond:ai}:{videoBitsPerSecond:ai})}catch{try{r=new MediaRecorder(A)}catch{o(new uA("unsupported"));return}}this.recorder=r;let s=c=>{this.settled||(this.settled=!0,this.clearTimers(),c())},a=()=>s(()=>{let c=r.mimeType||i||Lt,g=new Blob(this.chunks,{type:c});if(ie(g)){o(new uA("cliptoolarge"));return}n({blob:g,mimeType:c})});r.ondataavailable=c=>{c.data&&c.data.size&&(this.chunks.push(c.data),this.bytes+=c.data.size,this.bytes>Pe&&s(()=>{try{r.state!=="inactive"&&r.stop()}catch{}o(new uA("cliptoolarge"))}))},r.onstop=a,r.onerror=()=>s(()=>o(new uA("generic")));try{r.start(Qn)}catch{s(()=>o(new uA("generic")));return}this.hardStopTimer=setTimeout(()=>{if(this.settled||t?.(),r.state!=="inactive"){try{r.stop()}catch{a()}this.graceTimer=setTimeout(a,mn)}else a()},hn)})}stop(A){this.clearTimers();let t=this.recorder;if(t&&t.state!=="inactive")try{t.stop()}catch{}this.recorder=null,(A??this.stream)?.getTracks().forEach(n=>n.stop()),this.stream=null}};function ci(e,A,t=.92){return new Promise((i,n)=>{let o=e.videoWidth,r=e.videoHeight;if(!o||!r){n(new Error("video-not-ready"));return}let s=A.getContext("2d");if(!s){n(new Error("no-2d-context"));return}A.width=o,A.height=r,s.scale(-1,1),s.drawImage(e,-o,0),A.toBlob(a=>a?i(a):n(new Error("empty-keyframe")),"image/jpeg",t)})}var gi=1e4,ge=class e{constructor(A,t){this.tier="blaze";this.inner=A,t!==void 0&&(this.fallbackReason=t)}static async create(A,t){let i=await import("@mediapipe/tasks-vision"),n=await i.FilesetResolver.forVisionTasks(A),o=await i.FaceDetector.createFromOptions(n,{baseOptions:{modelAssetPath:`${A}/blaze_face_short_range.tflite`,delegate:"CPU"},runningMode:"IMAGE"});return new e(o,t)}async detect(A,t,i){let n;try{n=this.inner.detect(A).detections}catch{return null}let o=fn(n);if(o?.boundingBox===void 0)return null;let r=_A(A),s=pn(o.keypoints,r),a={box:{x:o.boundingBox.originX,y:o.boundingBox.originY,width:o.boundingBox.width,height:o.boundingBox.height},...s!==void 0?{eyes:s}:{},score:o.categories[0]?.score??0};return Ie(a,A,t,i)}destroy(){try{this.inner.close()}catch{}}};function fn(e){let A,t=-1;for(let i of e){let n=i.categories[0]?.score??0;n>t&&(A=i,t=n)}return A}function pn(e,A){let t=e?.[0],i=e?.[1];if(t===void 0||i===void 0)return;let n=s=>({x:s.x*A.width,y:s.y*A.height}),[o,r]=[n(t),n(i)];return o.x<=r.x?{left:o,right:r}:{left:r,right:o}}function yn(){if(typeof OffscreenCanvas=="function")return new OffscreenCanvas(2,2);let e=document.createElement("canvas");return e.width=2,e.height=2,e}async function Ii(){let e=globalThis.FaceDetector;if(typeof e!="function")return{ok:!1,reason:"unsupported"};try{let A=new e({fastMode:!0,maxDetectedFaces:1});return await A.detect(yn()),{ok:!0,instance:A}}catch(A){return{ok:!1,reason:`smoke_failed:${A instanceof Error?A.message:String(A)}`}}}var le=class{constructor(A,t){this.tier="native";this.inner=A,t!==void 0&&(this.fallbackReason=t)}async detect(A,t,i){let n;try{n=await this.inner.detect(A)}catch{return null}let o=n[0];if(o===void 0)return null;let r=wn(o.landmarks),s={box:{x:o.boundingBox.x,y:o.boundingBox.y,width:o.boundingBox.width,height:o.boundingBox.height},...r!==void 0?{eyes:r}:{},score:1};return Ie(s,A,t,i)}destroy(){}};function wn(e){if(e===void 0)return;let A=e.filter(n=>n.type==="eye").map(n=>n.locations[0]).filter(n=>n!==void 0),[t,i]=A;if(!(t===void 0||i===void 0))return t.x<=i.x?{left:t,right:i}:{left:i,right:t}}var je="/models-v3",Dn=["native","blaze"],HA=class extends Error{constructor(A){super(`no detector tier available (${A})`),this.name="DetectorLadderError",this.fallbackReason=A}};function _A(e){let A=e;if(typeof A.videoWidth=="number"&&A.videoWidth>0)return{width:A.videoWidth,height:A.videoHeight??0};if(typeof A.naturalWidth=="number"&&A.naturalWidth>0)return{width:A.naturalWidth,height:A.naturalHeight??0};let t=typeof A.width=="number"?A.width:0,i=typeof A.height=="number"?A.height:0;return{width:t,height:i}}function Ie(e,A,t,i){let n=_A(A),o=n.width>0?t/n.width:1,r=n.height>0?i/n.height:1,s=a=>({x:a.x*o,y:a.y*r});return{box:{x:e.box.x*o,y:e.box.y*r,width:e.box.width*o,height:e.box.height*r},...e.eyes!==void 0?{eyes:{left:s(e.eyes.left),right:s(e.eyes.right)}}:{},score:e.score}}function bn(e){return e instanceof Error?e.message:String(e)}async function oA(e){let A=e.preferred??Dn,t=[];for(let i of A){if(i==="native"){let n=await Ii();if(n.ok)return new le(n.instance,Ze(t));t.push(`native:${n.reason}`);continue}try{return await Sn(ge.create(e.v3AssetBaseUrl??je,Ze(t)),e.blazeInitTimeoutMs??gi)}catch(n){t.push(n instanceof ue?"blaze:blaze_init_timeout":`blaze:${bn(n)}`)}}throw new HA(Ze(t)??"no_tier_available")}function Ze(e){return e.length>0?e.join("; "):void 0}var ue=class extends Error{};function Sn(e,A){return new Promise((t,i)=>{let n=setTimeout(()=>{i(new ue(`init exceeded ${A}ms`)),e.then(o=>o.destroy(),()=>{})},A);e.then(o=>{clearTimeout(n),t(o)},o=>{clearTimeout(n),i(o)})})}var CA=1;function li(){return typeof OffscreenCanvas=="function"&&typeof createImageBitmap=="function"&&typeof Worker=="function"}function Rn(e,A={}){let t=A.createDetector??oA,i=null;e.onmessage=n=>{let o=n.data;if(o.v!==CA){o.bitmap?.close?.();return}if(o.type==="init"){t(o.options).then(r=>{i=r;let s={v:CA,type:"ready",tier:r.tier,...r.fallbackReason!==void 0?{fallbackReason:r.fallbackReason}:{}};e.postMessage(s)});return}if(o.type==="detect"){let r=s=>{let a={v:CA,type:"result",id:o.id,observation:s};e.postMessage(a),o.bitmap.close?.()};if(i===null){r(null);return}i.detect(o.bitmap,o.streamWidth,o.streamHeight).then(r,()=>r(null))}}}typeof self<"u"&&typeof self.importScripts=="function"&&Rn(self);var de=class e{constructor(A,t){this.pending=new Map;this.nextId=1;this.worker=A,this.tier=t.tier,t.fallbackReason!==void 0&&(this.fallbackReason=t.fallbackReason),A.addEventListener("message",i=>{let n=i.data;if(n.v!==CA||n.type!=="result")return;let o=this.pending.get(n.id);this.pending.delete(n.id),o?.(n.observation)})}static create(A,t,i=1e4){return new Promise((n,o)=>{let r=setTimeout(()=>{A.removeEventListener("message",s),A.terminate(),o(new Error(`worker detector not ready within ${i}ms`))},i),s=c=>{let g=c.data;g.v!==CA||g.type!=="ready"||(clearTimeout(r),A.removeEventListener("message",s),n(new e(A,g)))};A.addEventListener("message",s);let a={v:CA,type:"init",options:t};A.postMessage(a)})}async detect(A,t,i){let n;try{typeof ImageBitmap<"u"&&A instanceof ImageBitmap?n=A:typeof createImageBitmap=="function"?n=await createImageBitmap(A):n=A}catch{return null}let o=this.nextId;return this.nextId+=1,new Promise(r=>{this.pending.set(o,r);let s={v:CA,type:"detect",id:o,bitmap:n,streamWidth:t,streamHeight:i};this.worker.postMessage(s,[n])})}destroy(){for(let A of this.pending.values())A(null);this.pending.clear(),this.worker.terminate()}};var Ce=class{constructor(A){this.timer=null;this.frameCallbackId=null;this.running=!1;this.busy=!1;this.lastRunAt=Number.NEGATIVE_INFINITY;this.degradeCount=0;this.durations=[];this.options=A,this.periodMs=1e3/A.cadenceHz}start(){if(this.running)return;this.running=!0;let A=this.options.video;if(typeof A?.requestVideoFrameCallback=="function"){let t=()=>{this.running&&(this.frameCallbackId=A.requestVideoFrameCallback?.(()=>{this.frameCallbackId=null,this.now()-this.lastRunAt>=this.periodMs&&this.tick(),t()}))};t();return}this.timer=setInterval(()=>this.tick(),this.periodMs)}stop(){this.running=!1,this.timer!==null&&(clearInterval(this.timer),this.timer=null),this.frameCallbackId!==null&&(this.options.video?.cancelVideoFrameCallback?.(this.frameCallbackId),this.frameCallbackId=null)}stats(){let A=this.durations.length===0?0:this.durations.reduce((t,i)=>t+i,0)/this.durations.length;return{degradeCount:this.degradeCount,meanDetectMs:A}}now(){return this.options.now?.()??performance.now()}tick(){if(!this.running)return;if(this.busy){this.degradeCount+=1;return}this.busy=!0,this.lastRunAt=this.now();let A=this.now();this.options.run().catch(()=>{}).finally(()=>{this.busy=!1,this.durations.push(this.now()-A),this.durations.length>20&&this.durations.shift()})}};mA();var vn=Object.freeze({Q_GOOD:.6,RISE_PER_S:.9,FALL_PER_S:.25,CENTER_FALLOFF_IOD_MULTIPLE:1.35,BOX_EYE_OFFSET_FACTOR:.12,IOD_BOX_PROXY_FACTOR:.42,SIZE_IDEAL_MIN:.12,SIZE_IDEAL_MAX:.3,SIZE_HARD_MIN:.08,SIZE_HARD_MAX:.45,ROLL_MAX_DEG:25,MOTION_VELOCITY_IOD_PER_S:.5,MOTION_TAU_S:.4,MOTION_DEADBAND_IOD_PER_S:.1,READY_WINDOW_MS:500,GUIDE_SIZE:.6,GUIDE_CENTERING:.6,GUIDE_POSE:.6,GUIDE_EXPOSURE:.6,GUIDE_SHARPNESS:.35,GUIDE_MOTION:.5}),fA=e=>Math.min(1,Math.max(0,e)),Ee=class{constructor(A={}){this.p=0;this.lastTickAt=null;this.lastCenter=null;this.velocityEma=0;this.qWindow=[];this.lastSizeDirection="ideal";this.t={...vn,...A}}reset(){this.p=0,this.lastTickAt=null,this.lastCenter=null,this.velocityEma=0,this.qWindow=[],this.lastSizeDirection="ideal"}tick(A){let{observation:t,quality:i,timestampMs:n}=A,o=this.lastTickAt===null?0:Math.max(0,(n-this.lastTickAt)/1e3);this.lastTickAt=n;let r={presence:0,centering:0,size:0,pose:0,sharpness:fA(i.sharpness),exposure:fA(i.exposure),motion:1};if(t!==null){r.presence=1;let g=this.geometryOf(t,A);r.centering=g.centering,r.size=g.size,r.pose=g.pose,r.motion=this.motionOf(g.center,g.iod,n)}else this.lastCenter=null,this.velocityEma=0;let s=Math.min(r.presence,r.centering,r.size,r.pose,r.sharpness,r.exposure,r.motion);this.p=fA(this.p+(s>=this.t.Q_GOOD?this.t.RISE_PER_S*s:-this.t.FALL_PER_S*(1-s))*o),this.qWindow.push({at:n,q:s}),this.qWindow=this.qWindow.filter(g=>g.at>=n-this.t.READY_WINDOW_MS);let a=this.qWindow.map(g=>g.q);if(a.length>=3){let g=Math.min(...a),l=a.indexOf(g);a=a.filter((d,C)=>C!==l)}let c=this.p>=1&&a.every(g=>g>=this.t.Q_GOOD);return{at:n,q:s,p:this.p,factors:r,guidanceKey:this.guidanceOf(r,i,s),ready:c,accepted:s>=this.t.Q_GOOD}}geometryOf(A,t){let{box:i,eyes:n}=A,o={x:t.frameWidth/2,y:t.frameHeight/2},r=Math.min(t.frameWidth,t.frameHeight),s=n!==void 0?{x:(n.left.x+n.right.x)/2,y:(n.left.y+n.right.y)/2}:{x:i.x+i.width/2,y:i.y+i.height/2-this.t.BOX_EYE_OFFSET_FACTOR*i.height},a=n!==void 0?Math.hypot(n.right.x-n.left.x,n.right.y-n.left.y):this.t.IOD_BOX_PROXY_FACTOR*i.width,c=Math.hypot(s.x-o.x,s.y-o.y),g=a<=0?0:1-fA(c/(this.t.CENTER_FALLOFF_IOD_MULTIPLE*a)),l=r>0?a/r:0;this.lastSizeDirection=l<this.t.SIZE_IDEAL_MIN?"far":l>this.t.SIZE_IDEAL_MAX?"close":"ideal";let d;l<this.t.SIZE_HARD_MIN||l>this.t.SIZE_HARD_MAX?d=0:l<this.t.SIZE_IDEAL_MIN?d=(l-this.t.SIZE_HARD_MIN)/(this.t.SIZE_IDEAL_MIN-this.t.SIZE_HARD_MIN):l>this.t.SIZE_IDEAL_MAX?d=(this.t.SIZE_HARD_MAX-l)/(this.t.SIZE_HARD_MAX-this.t.SIZE_IDEAL_MAX):d=1;let C=1;if(n!==void 0){let u=Math.abs(Math.atan2(n.right.y-n.left.y,n.right.x-n.left.x))*180/Math.PI;C=1-fA(u/this.t.ROLL_MAX_DEG)}return{center:s,iod:a,centering:g,size:d,pose:C}}motionOf(A,t,i){let n=this.lastCenter;if(this.lastCenter={...A,at:i},n===null||t<=0)return 1;let o=(i-n.at)/1e3;if(o<=0)return 1;let r=Math.hypot(A.x-n.x,A.y-n.y)/t/o;r<=this.t.MOTION_DEADBAND_IOD_PER_S&&(r=0);let s=1-Math.exp(-o/this.t.MOTION_TAU_S);return this.velocityEma=s*r+(1-s)*this.velocityEma,1-fA(this.velocityEma/this.t.MOTION_VELOCITY_IOD_PER_S)}guidanceOf(A,t,i){if(A.presence<=0)return"fcv3.no_face";if(A.size<this.t.GUIDE_SIZE)return this.sizeGuidance();if(A.centering<this.t.GUIDE_CENTERING)return"fcv3.center_face";if(A.pose<this.t.GUIDE_POSE)return"fcv3.straighten";if(A.exposure<this.t.GUIDE_EXPOSURE)return this.exposureGuidance(t);if(A.sharpness<this.t.GUIDE_SHARPNESS)return"fcv3.steady_camera";if(A.motion<this.t.GUIDE_MOTION)return"fcv3.hold_still";if(i<this.t.Q_GOOD){let n=[["size",this.sizeGuidance()],["centering","fcv3.center_face"],["pose","fcv3.straighten"],["exposure",this.exposureGuidance(t)],["sharpness","fcv3.steady_camera"],["motion","fcv3.hold_still"]],o=n[0];for(let r of n)A[r[0]]<A[o[0]]&&(o=r);return o[1]}return"fcv3.hold_still"}sizeGuidance(){return this.lastSizeDirection==="far"?"fcv3.come_closer":"fcv3.move_back"}exposureGuidance(A){let t=(nA[0]+nA[1])/2;return A.meanLuma<t?"fcv3.more_light":"fcv3.too_bright"}};mA();var $e=4,kn=600,ui={sharpness:1,exposure:1,meanLuma:128},Be=class{constructor(A){this.handlers=new Map;this.stateValue="idle";this.attempt=0;this.stream=null;this.detector=null;this.scheduler=null;this.gate=null;this.profiler=null;this.lastGuidanceKey=null;this.positioningStartedAt=0;this.cameraRequestedAt=null;this.cameraReadyAt=null;this.faceAcquiredAt=null;this.captureCompleteAt=null;this.fired=!1;this.carriedDegrade=0;this.carriedMeans=[];this.snapshotCanvas=null;this.options=A,this.facing=A.facingMode??"user"}get state(){return this.stateValue}on(A,t){let i=this.handlers.get(A);return i||(i=new Set,this.handlers.set(A,i)),i.add(t),()=>i?.delete(t)}emit(A,t){for(let i of[...this.handlers.get(A)??[]])i(t)}async start(A={}){A.facingMode!==void 0&&(this.facing=A.facingMode),this.attempt+=1,await this.run(this.attempt)}get facingMode(){return this.facing}retry(){this.teardownAttempt(),this.start()}switchCamera(){this.facing=this.facing==="user"?"environment":"user",this.teardownAttempt(),this.start()}destroy(){this.attempt+=1,this.teardownAttempt(),this.detector?.destroy(),this.detector=null,this.options.video.srcObject=null}async run(A){let{options:t}=this;this.fired=!1,this.lastGuidanceKey=null,this.carriedDegrade=0,this.carriedMeans=[],this.cameraRequestedAt=null,this.cameraReadyAt=null,this.faceAcquiredAt=null,this.captureCompleteAt=null,this.setState("preflight");let i=Tt();if(i!=="OK"){this.fail(i==="INSECURE_CONTEXT"?"insecure":"unsupported");return}this.setState("acquiring");let n=t.getUserMedia??(a=>navigator.mediaDevices.getUserMedia(a)),o;this.cameraRequestedAt=this.now();try{o=await n(ni(lA(),this.facing))}catch(a){if(A!==this.attempt)return;this.fail(te(a));return}if(ee(o),A!==this.attempt){for(let a of o.getTracks())a.stop();return}if(this.stream=o,t.video.srcObject=o,await t.video.play().catch(()=>{}),A!==this.attempt)return;if(this.cameraReadyAt=this.now(),this.detector===null){let a={...t.v3AssetBaseUrl!==void 0?{v3AssetBaseUrl:t.v3AssetBaseUrl}:{}},c=t.createDetector??(t.createWorker!==void 0&&li()?async()=>{try{return await de.create(t.createWorker(),a)}catch{return oA(a)}}:()=>oA(a)),g;try{g=await c()}catch(l){A===this.attempt&&this.fail("models",l instanceof HA?l.fallbackReason:xn(l));return}if(A!==this.attempt){g.destroy();return}this.detector=g,this.options.telemetry?.({type:"detector",tier:g.tier,...g.fallbackReason!==void 0?{fallbackReason:g.fallbackReason}:{}})}let r=oe(),s=t.deviceClass??re(r);this.profiler=new ne(s),this.options.telemetry?.({type:"profile",staticClass:s,activeClass:this.profiler.deviceClass,simd:r.simd}),this.gate=new Ee(t.thresholds??{}),this.setState("positioning"),this.positioningStartedAt=this.now(),this.startScheduler(A)}get animations(){return this.profiler?.profile.animations??"full"}startScheduler(A){let t=this.profiler;if(t===null)return;if(this.scheduler!==null){let n=this.scheduler.stats();this.carriedDegrade+=n.degradeCount,n.meanDetectMs>0&&this.carriedMeans.push(n.meanDetectMs),this.scheduler.stop()}let i=new Ce({cadenceHz:t.profile.cadenceHz,video:this.options.video,...this.options.now!==void 0?{now:this.options.now}:{},run:()=>this.detectTick(A)});this.scheduler=i,i.start()}async detectTick(A){let{detector:t,gate:i,profiler:n}=this,o=this.options.video;if(A!==this.attempt||t===null||i===null||n===null||this.fired||o.videoWidth===0)return;let r=n.deviceClass,s=this.now(),a=this.options.makeSnapshot?.(o,n.profile.inputWidth)??this.defaultSnapshot(o,n.profile.inputWidth),c=null;try{c=await t.detect(a,o.videoWidth,o.videoHeight)}catch{c=null}if(A!==this.attempt||this.fired)return;n.record(this.now()-s),n.deviceClass!==r&&this.startScheduler(A);let g=c===null?ui:this.options.measureQuality?.(o,c.box)??this.defaultQuality(o,c.box),l=i.tick({timestampMs:this.now(),observation:c,quality:g,frameWidth:o.videoWidth,frameHeight:o.videoHeight});l.accepted&&this.faceAcquiredAt===null&&(this.faceAcquiredAt=l.at),this.emit("checks",{engine:"v3",progress:l.p,q:l.q,factors:l.factors,attempt:A}),l.guidanceKey!==this.lastGuidanceKey&&(this.lastGuidanceKey=l.guidanceKey,this.emit("guidance",{key:l.guidanceKey})),l.ready&&this.stateValue==="positioning"&&(this.fired=!0,this.captureCompleteAt=l.at,this.fire(A))}async fire(A){let{options:t}=this,i=this.scheduler;i?.stop();let n=i?.stats()??{degradeCount:0,meanDetectMs:0},o=[...this.carriedMeans,...n.meanDetectMs>0?[n.meanDetectMs]:[]];t.telemetry?.({type:"fired",timeToGateMs:this.now()-this.positioningStartedAt,degradeCount:this.carriedDegrade+n.degradeCount,meanDetectMs:o.length===0?0:o.reduce((u,E)=>u+E,0)/o.length});let r=t.mode??"clip",s=this.collectKeyframes(A);if(r==="photo"){let u=await s;if(A!==this.attempt)return;if(u===null){this.fail("generic");return}this.finishCapture({keyframe:u.blob,previewDataUrl:u.previewDataUrl});return}this.setState("recording");let a=t.createRecorder?.()??new ce,c=this.stream;if(c===null){this.fail("generic");return}let g=null;s.then(u=>{g=u},()=>{});let l=()=>{A===this.attempt&&g!==null&&this.emit("frozen",{previewDataUrl:g.previewDataUrl})},d,C;try{[d,C]=await Promise.all([a.record(c,l),s])}catch(u){if(A!==this.attempt)return;let E=u.kind;this.fail(E==="cliptoolarge"?"cliptoolarge":"recorder");return}if(A===this.attempt){if(ie(d.blob)){this.fail("cliptoolarge");return}if(C===null){this.fail("generic");return}this.finishCapture({clip:d.blob,clipMimeType:d.mimeType,keyframe:C.blob,previewDataUrl:C.previewDataUrl})}}async collectKeyframes(A){let t=this.options.captureKeyframe??(o=>this.defaultKeyframe(o)),i=kn/($e-1),n=null;for(let o=0;o<$e;o+=1){if(A!==this.attempt)return n;try{let r=await t(this.options.video);(n===null||r.sharpness>n.sharpness)&&(n=r)}catch{}o<$e-1&&await Mn(i)}return n}finishCapture(A){this.stopTracks(),this.setState("captured");let t=this.captureTiming();this.emit("artifacts",t===void 0?A:{...A,timing:t})}captureTiming(){let A=(r,s)=>r!==null&&s!==null?Math.max(0,Math.round(s-r)):void 0,t=A(this.cameraRequestedAt,this.cameraReadyAt),i=A(this.cameraReadyAt,this.faceAcquiredAt),n=A(this.faceAcquiredAt,this.captureCompleteAt),o={...t!==void 0?{cameraReadyMs:t}:{},...i!==void 0?{faceAcquireMs:i}:{},...n!==void 0?{captureMs:n}:{}};return Object.keys(o).length>0?o:void 0}async defaultKeyframe(A){let t=document.createElement("canvas"),i=await ci(A,t),n=t.toDataURL("image/jpeg",.92);return{blob:i,previewDataUrl:n,sharpness:this.centerSharpness(A)}}defaultSnapshot(A,t){try{let i=this.snapshotCanvas??document.createElement("canvas"),n=t/Math.max(1,A.videoWidth),o=Math.max(1,Math.round(A.videoWidth*n)),r=Math.max(1,Math.round(A.videoHeight*n)),s=i.getContext("2d");return s===null?A:(i.width!==o&&(i.width=o),i.height!==r&&(i.height=r),s.drawImage(A,0,0,o,r),this.snapshotCanvas=i,i)}catch{return A}}defaultQuality(A,t){let i=di(A,t,96);return i===null?ui:{sharpness:QA(i),exposure:zA(i),meanLuma:DA(i)}}centerSharpness(A){let t=_A(A),i=di(A,{x:t.width*.25,y:t.height*.25,width:t.width*.5,height:t.height*.5},96);return i===null?0:QA(i)}teardownAttempt(){this.scheduler?.stop(),this.scheduler=null,this.gate=null,this.stopTracks()}stopTracks(){if(this.stream!==null){for(let A of this.stream.getTracks())A.stop();this.stream=null}}fail(A,t){this.scheduler?.stop(),this.stopTracks(),this.setState("error"),this.options.telemetry?.({type:"error",kind:A,...t!==void 0?{fallbackReason:t}:{}}),this.emit("error",{kind:A,retryable:A!=="insecure"&&A!=="unsupported"})}setState(A){this.stateValue=A,this.emit("statechange",{state:A})}now(){return this.options.now?.()??performance.now()}};function Mn(e){return new Promise(A=>setTimeout(A,e))}function xn(e){return e instanceof Error?e.message:String(e)}function di(e,A,t){try{let i=document.createElement("canvas"),n=t/Math.max(1,A.width);i.width=Math.max(1,Math.round(A.width*n)),i.height=Math.max(1,Math.round(A.height*n));let o=i.getContext("2d");return o===null?null:(o.drawImage(e,A.x,A.y,A.width,A.height,0,0,i.width,i.height),o.getImageData(0,0,i.width,i.height))}catch{return null}}function he(){let e=new Map;return{on(A,t){let i=e.get(A);i===void 0&&(i=new Set,e.set(A,i));let n=t;return i.add(n),()=>{i?.delete(n)}},emit(A,t){let i=e.get(A);if(i!==void 0)for(let n of[...i])n(t)},clear(){e.clear()}}}var tt=12e4,me=13e4;var Qe=Symbol.for("@sekyro/web.preload.v1");function et(){let e=globalThis;return e[Qe]??(e[Qe]=new Map),e[Qe]}function Nn(e){let A=(e??je).replace(/\/+$/,"");return A===""?"/":A}function At(e,A){if(e.status!==A){e.status=A;for(let t of[...e.listeners])t(A)}}var it=e=>oA({preferred:["blaze"],v3AssetBaseUrl:e,blazeInitTimeoutMs:tt}),nt=it;function Ci(e){nt=e??it}function Ei(){for(let e of et().values())e.detector?.destroy();et().clear(),nt=it}function Fn(e,A){if((e.status==="loading"||e.status==="ready")&&e.promise!==null)return e.promise;At(e,"loading");let t=new Promise(s=>s(nt(A)));e.detectorPromise=t;let i,n=new Promise((s,a)=>{i=setTimeout(()=>{t.then(c=>c.destroy(),()=>{}),a(new Error(`detector preload exceeded ${me} ms`))},me)}),r=Promise.race([t,n]).then(s=>e.detectorPromise!==t?(s.destroy(),e.status):(e.detector=s,At(e,"ready"),"ready"),s=>(e.detectorPromise===t&&(e.detectorPromise=null,e.detector=null,At(e,"failed"),console.warn("[@sekyro/web] face-detector preload failed:",s)),e.status)).finally(()=>clearTimeout(i));return e.promise=r,e.scheduled?.settle(r),r}function Ln(e){return{get tier(){return e.tier},get fallbackReason(){return e.fallbackReason},detect:(...A)=>e.detect(...A),destroy:()=>{}}}function fe(e){let A=Nn(e),t=et().get(A);if(!(t===void 0||t.detector===null&&t.detectorPromise===null&&t.scheduled===null))return async()=>{t.scheduled!==null&&Fn(t,A);let i=t.promise;for(;t.detector===null&&i!==null&&(await i,t.promise!==i);)i=t.promise;return t.detector!==null?Ln(t.detector):oA({v3AssetBaseUrl:A})}}function Bi(){if(typeof navigator>"u"||!("wakeLock"in navigator))return null;let e=navigator.wakeLock;return typeof e?.request=="function"?e:null}function hi(){return typeof document>"u"||document.visibilityState==="visible"}function Qi(e){try{e.release().catch(()=>{})}catch{}}function mi(e={}){if(e.enabled===!1)return{setActive:()=>{}};let A=!1,t=null,i=!1,n=!1,o=()=>{if(!A||i||t!==null&&!t.released)return;let a=Bi();if(a===null||!hi())return;let c;try{c=a.request("screen")}catch{return}i=!0,c.then(g=>{if(i=!1,!A){Qi(g);return}t=g,g.addEventListener?.("release",()=>{t===g&&(t=null)})},()=>{i=!1})},r=()=>{hi()&&o()},s=a=>{typeof document>"u"||a===n||(n=a,a?document.addEventListener("visibilitychange",r):document.removeEventListener("visibilitychange",r))};return{setActive:a=>{if(A=a,a){if(Bi()===null)return;s(!0),o();return}if(s(!1),t!==null){let c=t;t=null,Qi(c)}}}}function ot(e){switch(e){case"fcv3.no_face":case"fcv3.center_face":case"fcv3.straighten":return"center";case"fcv3.come_closer":return"closer";case"fcv3.move_back":return"farther";case"fcv3.more_light":case"fcv3.too_bright":return"light";case"fcv3.hold_still":case"fcv3.steady_camera":return"still";default:return null}}function rt(e){switch(e){case"preflight":case"acquiring":return"starting";case"positioning":return"gating";case"idle":case"recording":case"captured":case"error":return e;default:{let A=e;throw new Error(`mapEngineState: unhandled state ${A}`)}}}function st(e){switch(e){case"permission":case"notfound":case"inuse":case"insecure":case"unsupported":return e;case"overconstrained":case"generic":case"models":case"cliptoolarge":case"recorder":return"generic";default:{let A=e;throw new Error(`mapErrorKind: unhandled kind ${A}`)}}}function pe(e,A={}){let t=A.now??(()=>performance.now()),i=he(),n=!Gt(),o=A.engineOptions,r=o?.createDetector===void 0&&o?.createWorker===void 0?{createDetector:()=>{let h=fe(e.assetBaseUrl);return h!==void 0?h():oA(e.assetBaseUrl!==void 0?{v3AssetBaseUrl:e.assetBaseUrl}:{})}}:{},s={video:e.video,mode:n?"photo":"clip",...e.facing!==void 0?{facingMode:e.facing}:{},...e.assetBaseUrl!==void 0?{v3AssetBaseUrl:e.assetBaseUrl}:{},...A.engineOptions??{},...r},a=A.createEngine?.(s)??new Be(s),c="idle",g=null,l=0,d=!1,C="full",u=null,E=null,p=0,I=0,Q=()=>{e.video.videoWidth>0&&e.video.videoHeight>0&&(p=e.video.videoWidth,I=e.video.videoHeight)},D=mi({enabled:e.keepScreenAwake!==!1}),w=h=>{c=h,D.setActive(h==="starting"||h==="gating"||h==="recording"),i.emit("state",h)},R=()=>i.emit("gate",{progress:l,hint:g,faceDetected:d}),m=()=>{let h=a.animations??"full";h!==C&&(C=h,i.emit("profile",{animations:C}))},f=[a.on("statechange",({state:h})=>{let P=rt(h);P==="starting"&&c!=="starting"&&(g=null,l=0,d=!1,u=null,E=null,p=0,I=0),w(P),m(),P==="recording"&&(Q(),u=t(),g="hold",l=1,R())}),a.on("checks",h=>{Q(),l=h.progress,d=h.factors.presence>0,R(),m()}),a.on("guidance",({key:h})=>{g=ot(h),R()}),a.on("frozen",({previewDataUrl:h})=>{E=t(),i.emit("frozen",{previewDataUrl:h})}),a.on("artifacts",h=>{let P=u!==null&&E!==null?Math.max(0,Math.round(E-u)):void 0;i.emit("captured",{keyframe:h.keyframe,...h.clip!==void 0?{clip:h.clip}:{},...h.clipMimeType!==void 0?{clipMime:h.clipMimeType}:{},width:e.video.videoWidth||p,height:e.video.videoHeight||I,...P!==void 0?{clipMs:P}:{},captureChannel:lA()?"mobile":"desktop",...n?{degraded:"NO_RECORDER"}:{},engine:"v3",...h.timing?.cameraReadyMs!==void 0?{cameraReadyMs:h.timing.cameraReadyMs}:{},...h.timing?.faceAcquireMs!==void 0?{faceAcquireMs:h.timing.faceAcquireMs}:{},...h.timing?.captureMs!==void 0?{captureMs:h.timing.captureMs}:{}})}),a.on("error",({kind:h,retryable:P})=>{i.emit("error",{kind:st(h),retryable:P})})];return{handle:{get state(){return c},on:(h,P)=>i.on(h,P),start:h=>a.start(h?.facing!==void 0?{facingMode:h.facing}:{}),retry:()=>a.retry(),switchCamera:()=>a.switchCamera(),destroy:()=>{for(let h of f)h();D.setActive(!1),a.destroy(),i.clear()}},setFlowState:h=>{c!==h&&w(h)}}}var eA=class extends Error{constructor(A){super(A.message),this.name="HostedApiError",this.status=A.status,this.code=A.code,A.retryAfterSeconds!==void 0&&(this.retryAfterSeconds=A.retryAfterSeconds)}};var Tn=3e4,Gn=9e5,_n=200,Hn=5,Un=400;function UA(e){return(e.split(";")[0]??"").trim()}var Jn={liveness:"clipKey",face_match:"imageKey",doc_ocr:"imageKey"},ye=class{constructor(A){this.sessionId=null;this.bootstrap=null;this.apiOrigin=A.apiOrigin.replace(/\/+$/,""),this.sessionToken=A.sessionToken;let t=A.fetch;this.fetchImpl=(i,n)=>(t??globalThis.fetch).call(globalThis,i,n),this.requestTimeoutMs=A.requestTimeoutMs??Tn,this.retryAttempts=A.inProgressRetry?.attempts??Hn,this.retryDelayMs=A.inProgressRetry?.delayMs??Un}async getSession(){let A=await this.api("GET","/hosted/session");return this.sessionId=A.sessionId,A}async recordConsent(A){return this.api("POST","/hosted/consent",{body:{locale:A}})}async selectMethod(A){let t=await this.api("POST","/hosted/method",{body:{method:A}});return this.sessionId=t.sessionId,t}async presign(A,t,i){let n=await this.ensureSessionId(),o={kind:A,contentType:UA(t),contentLength:i};return this.api("POST",`/sessions/${n}/media`,{body:o})}async uploadToSpaces(A,t,i){let n;try{n=await this.fetchImpl(A,{method:"PUT",headers:{"content-type":UA(i)},body:t,signal:AbortSignal.timeout(Gn)})}catch(o){throw fi(o)}if(!n.ok){let o=(await n.text().catch(()=>"")).slice(0,_n);throw new eA({status:n.status,code:"upload_failed",message:`media upload failed (HTTP ${n.status})${o?`: ${o}`:""}`})}}async completeMedia(A){let t=await this.ensureSessionId();return this.api("POST",`/sessions/${t}/media/complete`,{body:{key:A}})}async submitCheck(A,t,i={}){let n=await this.ensureSessionId(),o={input:t,...i.forceOutcome!==void 0?{forceOutcome:i.forceOutcome}:{}};return this.api("POST",`/sessions/${n}/checks/${A}`,{body:o,...i.idempotencyKey!==void 0?{idempotencyKey:i.idempotencyKey}:{}})}async uploadAndSubmit(A,t,i,n={}){let o=UA(t.contentType),r=await this.presign(t.kind,o,t.blob.size);await this.uploadToSpaces(r.uploadUrl,t.blob,o);let s=await this.completeMedia(r.key),a={...i,[Jn[A]]:s.key};return this.submitCheck(A,a,n)}async ensureSessionId(){return this.sessionId!==null?this.sessionId:(this.bootstrap??(this.bootstrap=this.getSession().finally(()=>{this.bootstrap=null})),(await this.bootstrap).sessionId)}async api(A,t,i={}){let n=`${this.apiOrigin}/api/v2${t}`,o={"x-session-token":this.sessionToken};i.body!==void 0&&(o["content-type"]="application/json"),i.idempotencyKey!==void 0&&(o["x-idempotency-key"]=i.idempotencyKey);try{let r=Ae.timezone();r!==void 0&&(o["sekyro-client-timezone"]=r)}catch{}try{let r=await Ae.deviceHeader();r!==void 0&&(o["sekyro-client-device"]=r)}catch{}for(let r=0;;r++){let s;try{s=await this.fetchImpl(n,{method:A,headers:o,...i.body!==void 0?{body:JSON.stringify(i.body)}:{},signal:AbortSignal.timeout(this.requestTimeoutMs)})}catch(c){throw fi(c)}if(s.ok){let c;try{c=await s.json()}catch{throw new eA({status:s.status,code:"unknown_error",message:`response body was not valid JSON (HTTP ${s.status})`})}return Pn(c)}let a=await Yn(s);if(a.code==="idempotency_in_progress"&&r<this.retryAttempts){this.retryDelayMs>0&&await On(this.retryDelayMs);continue}throw a}}};function fi(e){if((typeof e=="object"&&e!==null?e.name:void 0)==="TimeoutError")return new eA({status:0,code:"timeout",message:"request timed out"});let t=e instanceof Error?e.message:String(e);return new eA({status:0,code:"network_error",message:`network request failed: ${t}`})}function Pn(e){return e!==null&&typeof e=="object"&&"success"in e&&"data"in e?e.data:e}async function Yn(e){let A="unknown_error",t=`request failed (HTTP ${e.status})`,i=Number.NaN;try{let r=await e.json();if(r!==null&&typeof r=="object"){let s=r;typeof s.code=="string"&&s.code.length>0&&(A=s.code),typeof s.message=="string"&&s.message.length>0&&(t=s.message),typeof s.retryAfterSeconds=="number"&&(i=s.retryAfterSeconds)}}catch{}let n=e.headers.get("retry-after"),o=n===null?Math.floor(i):Number.parseInt(n,10);return new eA({status:e.status,code:A,message:t,...Number.isFinite(o)&&o>=0?{retryAfterSeconds:o}:{}})}function On(e){return new Promise(A=>setTimeout(A,e))}var at=new Set(["no_face","media_unreadable","clip_too_short","no_face_source","side_missing","unreadable","registry_unavailable","otp_mismatch","otp_expired","otp_send_failed","document_type_not_accepted","age_unverifiable","liveness_inconclusive","match_inconclusive","document_authenticity"]);function YA(e){let A=e.methodChoice;return A===void 0||!A.available||A.selected!==null||rA(e)?.checkType==="phone_otp"?null:A}var qn=new Set(["liveness","face_match"]);function EA(e){return e!==void 0&&(e.state==="pending"||e.state==="input_required")}function tA(e){return e.status!=="created"&&e.status!=="in_progress"}function rA(e){return e.steps.find(A=>EA(A))}function iA(e,A){return e.steps.find(t=>t.checkType===A)}function ct(e,A){let t=A.steps.find(n=>n.checkType==="liveness"),i=A.steps.find(n=>n.checkType==="face_match");return iA(e,"face_match")?.state==="pending"&&(t?.state==="passed"||t?.state==="review")&&i!==void 0&&i.state!=="pending"&&i.state!=="skipped"}function we(e,A,t){let i=new Map(e.steps.map(r=>[r.checkType,r])),n=t==="liveness"&&ct(e,A),o=A.steps.map(r=>{let s=i.get(r.checkType),a=s?.attemptsRemaining??0,c={...s??{},checkType:r.checkType,state:r.state,attemptsRemaining:r.checkType===t||r.checkType==="face_match"&&n?Math.max(0,a-1):a};return r.reason!==void 0?c.reason=r.reason:delete c.reason,r.attemptsExhausted!==void 0?c.attemptsExhausted=r.attemptsExhausted:delete c.attemptsExhausted,c});return{...e,status:A.status,outcome:A.outcome,failureReason:A.failureReason,steps:o,expiresAt:A.expiresAt}}function cA(e,A){return A===void 0?{sessionId:e,status:"unavailable"}:{sessionId:e,status:"unavailable",reason:A}}function JA(e,A,t){return t===void 0?{sessionId:e,status:A}:{sessionId:e,status:A,reason:t}}function OA(e,A){let{sessionId:t}=e;switch(e.status){case"completed":return e.outcome==="approved"?{sessionId:t,status:"approved"}:e.outcome==="review"?JA(t,"review",PA(e,"review")):JA(t,"rejected",PA(e,"failed"));case"failed":{let n=JA(t,"rejected",e.failureReason??PA(e,"failed"));return e.failureReason==="device_cooldown"&&e.retryAfter!==void 0&&(n.retryAfter=e.retryAfter),n}case"review_pending":return JA(t,"review",PA(e,"review"));case"expired":return cA(t);case"created":case"in_progress":break;default:{let n=e.status;throw new Error(`mapSessionResult: unhandled status ${n}`)}}let i=e.steps.find(n=>qn.has(n.checkType)&&n.state==="input_required"&&n.reason!==void 0);if(i?.reason==="mobile_required")return cA(t,"mobile_required");if(i?.reason!==void 0){let n=A.autoRetry&&at.has(i.reason)&&i.attemptsRemaining>0;return{sessionId:t,status:n?"retry":"rejected",reason:i.reason,attemptsRemaining:i.attemptsRemaining}}return rA(e)===void 0&&e.steps.some(n=>n.state==="review")?JA(t,"review",PA(e,"review")):cA(t)}function PA(e,A){return e.steps.find(t=>t.state===A&&t.reason!==void 0)?.reason}var gt=["video/webm","video/mp4"],pi="image/jpeg",It=2,lt=1e3,Kn=1e4,ut=3,dt=10,Vn=30,Wn=3,Xn=new Set(["network_error","timeout","upload_failed","unknown_error","rate_limit_exceeded"]),zn=new Set(["session_not_active","check_not_found","check_already_finalized","check_out_of_order"]),qA=class extends Error{constructor(){super("verification destroyed"),this.name="FlowCancelledError"}};function Zn(e){let A=e.steps.findIndex(i=>i.checkType==="liveness");return A<0?!1:e.steps.slice(A+1).find(i=>EA(i))?.checkType==="face_match"}var BA=class extends Error{constructor(A){super(A),this.name="AttestationError"}};async function pA(e,A,t={}){let i=e.uuid(),n=!1,o=!1,r=0,s=0;for(;;)try{return await A(e.client,i)}catch(a){if(a instanceof BA){if(o)throw a;o=!0,t.onAttestationInvalid?.(),i=e.uuid();continue}if(!(a instanceof eA))throw a;if(a.code==="consent_required"&&!n){n=!0,await e.ensureConsent({force:!0}),i=e.uuid();continue}if(a.code==="attestation_invalid"&&!o){o=!0,t.onAttestationInvalid?.(),i=e.uuid();continue}if(a.code==="inference_unavailable"&&s<ut){s+=1;let c=Math.min(a.retryAfterSeconds??dt,Vn);e.onBusy?.({attempt:s,retryAfterSeconds:c}),await e.sleep(c*1e3),t.onAttestationInvalid?.(),i=e.uuid();continue}if(Xn.has(a.code)&&r<It){r+=1;let c=a.retryAfterSeconds!==void 0?a.retryAfterSeconds*1e3:void 0;await e.sleep(c!==void 0?Math.min(c,Kn):lt);continue}throw a}}var jn=new Set(["passed","review","processing","skipped"]);async function De(e){let{artifacts:A}=e,t=A.clip,i=UA(A.clipMime??"");if(A.degraded==="NO_RECORDER"||t===void 0||!gt.includes(i))return{kind:"unavailable",reason:"no_recorder"};let n=$n(e,A.keyframe),o=Ao(e,t,i,n),r=eo(e,n),s=!1,a=!1,c=!0,g=0;for(;;){if(e.isCancelled())return{kind:"cancelled"};let l=e.getView();if(tA(l))return{kind:"settled"};let d=rA(l)?.checkType,C=d==="liveness"&&!s?"liveness":d==="face_match"&&!a&&c?"face_match":null;if(C===null)return{kind:"settled"};if(C==="liveness"&&A.captureChannel==="desktop"&&iA(l,"liveness")?.requiresMobile===!0)return{kind:"unavailable",reason:"mobile_required"};try{if(C==="liveness"){s=!0;let u=await o();if(e.isCancelled())return{kind:"cancelled"};a=ct(l,u),e.applySubmit(u,"liveness");let E=iA(e.getView(),"liveness")?.state;c=E===void 0||jn.has(E)}else{a=!0;let u=await r();if(e.isCancelled())return{kind:"cancelled"};e.applySubmit(u,"face_match")}}catch(u){if(e.isCancelled()||u instanceof qA)return{kind:"cancelled"};let E=io(u);if(E.kind!=="resync"||g>=Wn)return E;g+=1,await e.refreshView()}}}function $n(e,A){let t=null,i=null,n=()=>t!==null?Promise.resolve(t):(i??(i=(async()=>{let o=await e.client.presign("image",pi,A.size);return await e.client.uploadToSpaces(o.uploadUrl,A,pi),t=(await e.client.completeMedia(o.key)).key,t})().finally(()=>{i=null})),i);return{ensure:n,attempt:()=>n().catch(()=>null),current:()=>t}}function Ao(e,A,t,i){let n=null,o,r=null;return()=>pA(e,async(s,a)=>{if(n===null||o===void 0){if(e.isCancelled())throw new qA;o===void 0&&!Zn(e.getView())&&(o=null),e.onPhase("uploading");let[c,g]=await Promise.all([n!==null?Promise.resolve(n):(async()=>{let l=await s.presign("clip",t,A.size);return await s.uploadToSpaces(l.uploadUrl,A,t),(await s.completeMedia(l.key)).key})(),o!==void 0?Promise.resolve(o===null?null:o.imageKey):i.attempt()]);n=c,o===void 0&&(o=g===null?null:{imageKey:g})}if(r===null)try{r=await e.getAttestation()}catch(c){throw new BA(c instanceof Error?c.message:String(c))}return e.onPhase("checking"),s.submitCheck("liveness",{clipKey:n,attestation:r,captureChannel:e.artifacts.captureChannel,capture:to(e.artifacts),...o!==null?{faceMatch:o}:{}},{idempotencyKey:a})},{onAttestationInvalid:()=>{r=null}})}function eo(e,A){return()=>pA(e,async(t,i)=>{if(A.current()===null){if(e.isCancelled())throw new qA;e.onPhase("uploading")}let n=await A.ensure();return e.onPhase("checking"),t.submitCheck("face_match",{imageKey:n},{idempotencyKey:i})})}function to(e){return{...e.engine!==void 0?{engine:e.engine}:{},width:e.width,height:e.height,...e.clipMs!==void 0?{clipMs:e.clipMs}:{},...e.cameraReadyMs!==void 0?{cameraReadyMs:e.cameraReadyMs}:{},...e.faceAcquireMs!==void 0?{faceAcquireMs:e.faceAcquireMs}:{},...e.captureMs!==void 0?{captureMs:e.captureMs}:{}}}function io(e){if(e instanceof BA)return{kind:"unavailable",reason:"attestation"};if(e instanceof eA){if(e.code==="attestation_invalid")return{kind:"unavailable",reason:"attestation"};if(e.code==="method_required")return{kind:"unavailable",reason:"method_required"};if(e.code==="inference_unavailable")return{kind:"unavailable",reason:"inference_unavailable"};if(e.code==="mobile_required")return{kind:"unavailable",reason:"mobile_required"};if(zn.has(e.code))return{kind:"resync"}}return{kind:"unavailable",reason:"network"}}var Et="https://challenges.cloudflare.com/turnstile/v0/api.js",wi=3e4;function yi(){return window.turnstile}var KA=null;function Di(){KA=null}function Bt(){return KA??(KA=new Promise((e,A)=>{let t=yi();if(t){e(t);return}let i=document.createElement("script");i.src=Et,i.async=!0,i.onload=()=>{let n=yi();n?e(n):(KA=null,A(new Error("Turnstile script loaded but exposed no API")))},i.onerror=()=>{KA=null,i.remove(),A(new Error("Turnstile script failed to load"))},document.head.appendChild(i)})),KA}function Ct(){return new Error("Turnstile challenge aborted")}async function be(e,A={}){let t=A.timeoutMs??3e4,i=A.signal;if(i?.aborted)throw Ct();let n=await Bt();if(i?.aborted)throw Ct();let o=document.createElement("div");document.body.appendChild(o);let r,s,a;try{return await new Promise((c,g)=>{if(s=setTimeout(()=>g(new Error(`Turnstile challenge timed out (${t} ms)`)),t),i!==void 0&&(a=()=>g(Ct()),i.addEventListener("abort",a,{once:!0})),r=n.render(o,{sitekey:e,execution:"execute",appearance:"execute",callback:c,"error-callback":l=>{g(new Error(`Turnstile challenge failed${l?` (${l})`:""}`))}}),r===void 0){g(new Error("Turnstile render returned no widget id"));return}n.execute(r)})}finally{if(clearTimeout(s),i!==void 0&&a!==void 0&&i.removeEventListener("abort",a),r!==void 0)try{n.remove(r)}catch{}o.remove()}}var no="https://api.sekyro.ai",ht=5e3,Qt=1500,mt=10;function oo(e){return new Promise(A=>setTimeout(A,e))}function ft(){let e=globalThis.crypto;if(e!==void 0&&typeof e.randomUUID=="function")return e.randomUUID();let A=new Uint8Array(16);if(e!==void 0&&typeof e.getRandomValues=="function")e.getRandomValues(A);else for(let i=0;i<16;i+=1)A[i]=Math.floor(Math.random()*256);A[6]=(A[6]??0)&15|64,A[8]=(A[8]??0)&63|128;let t=[...A].map(i=>i.toString(16).padStart(2,"0")).join("");return`${t.slice(0,8)}-${t.slice(8,12)}-${t.slice(12,16)}-${t.slice(16,20)}-${t.slice(20)}`}function bi(e,A){let t=e.apiOrigin??no,i=e.autoRetry??!0,n=e.rearm??"auto",o=A.client??new ye({apiOrigin:t,sessionToken:e.clientToken,...e.fetch!==void 0?{fetch:e.fetch}:{}}),r=A.sleep??oo,s=A.uuid??ft,a=A.getTurnstileToken??be,c=he(),g=!1,l=new AbortController,d=null,C=null,u=B=>{d=B,c.emit("view",B)},E=()=>d!==null?Promise.resolve(d):(C??(C=o.getSession().then(B=>(u(B),B)).finally(()=>{C=null})),C),p=async()=>{let B=await o.getSession();return u(B),B},I=(B,y)=>{d!==null&&u(we(d,B,y))},Q=null,D=async B=>{let y=await E();!B&&y.consentRecorded||(await o.recordConsent(e.locale),d!==null&&u({...d,consentRecorded:!0}))},w=B=>B?.force===!0?D(!0):(Q??(Q=D(!1).finally(()=>{Q=null})),Q),R={client:o,ensureConsent:B=>w(B),sleep:r,uuid:s,onBusy:B=>{g||c.emit("busy",B)}},m=!1,f=B=>{if(B.status==="approved"||B.status==="rejected"||B.status==="review"){if(m)return;m=!0}c.emit("result",B)},b=async B=>{let y=d;B&&(y=await p().catch(()=>d));let U=y===null?null:YA(y);return U!==null&&!g&&c.emit("method",U),U!==null},h=null,P=!1,O=!1,z=()=>pA(R,(B,y)=>B.submitCheck("population_registry",{},{idempotencyKey:y})),T=B=>B.nniBound===!0||iA(B,"population_registry")?.nniFromDocument===!0,S=async()=>{try{let B=await E();if(tA(B)||YA(B)!==null||rA(B)?.checkType!=="population_registry")return;if(!T(B)&&iA(B,"population_registry")?.nniFromDocument===void 0&&(B=await p()),!T(B)){O=!0;return}await w(),I(await z(),"population_registry");let y=d===null?void 0:iA(d,"population_registry");if(y?.state==="input_required"&&y.reason==="registry_unavailable"&&y.attemptsRemaining>0){if(await r(ht),g)return;I(await z(),"population_registry")}}catch(B){if(B instanceof eA&&B.code==="method_required"){await p().catch(()=>{});return}P=!0;return}d!==null&&tA(d)&&f(OA(d,{autoRetry:i}))},k=()=>(h??(h=S()),h),q=async()=>{let y=(await E()).turnstileSiteKey;return y===null?{sandbox:!0}:{channel:"hosted_web",siteKey:y,turnstileToken:await a(y,{signal:l.signal})}},J=null,G=Promise.resolve(),L=0,v=async()=>{let B=await E();for(let y=0;y<mt&&!g&&!tA(B)&&rA(B)===void 0&&B.steps.some(U=>U.state==="processing")&&(await r(Qt),!g);y+=1)B=await p();return B},M=async(B,y,U)=>{let{capture:Y}=B,K=()=>g,X=()=>B.alive&&B.attempt===U,Z=V=>{X()&&Y.setFlowState(V)},j=V=>{if(!K()&&(f(V),!!X())){if(V.status==="retry"&&n==="auto"){Y.handle.retry();return}Y.setFlowState("done")}};if(y.degraded==="NO_RECORDER"){let V=d?.sessionId??(await E().catch(()=>null))?.sessionId??"";j(cA(V,"no_recorder"));return}Z("uploading");try{if(await k(),K())return;let V=await E();if(!tA(V)&&YA(V)!==null){await b(!1),j(cA(V.sessionId,"method_required"));return}if(!tA(V)){if(rA(V)?.checkType==="population_registry"){j(cA(V.sessionId,O?"nni_unbound":P?"network":"registry_unavailable"));return}if(await w(),K())return;let $=await De({...R,artifacts:y,getAttestation:q,getView:()=>d??V,refreshView:p,applySubmit:I,onPhase:Z,isCancelled:K});if(K())return;if($.kind==="unavailable"){if($.reason==="method_required"&&await b(!0),K())return;j(cA(V.sessionId,$.reason));return}$.kind==="resync"&&await p(),V=await v()}j(OA(V,{autoRetry:i}))}catch{if(K())return;j(cA(d?.sessionId??"","network"))}},F=(B,y)=>{let U=B.attempt;L>0&&B.alive&&B.capture.setFlowState("uploading"),L+=1,G=G.then(()=>M(B,y,U)).finally(()=>{L-=1}).catch(()=>{})};return{consent:()=>w(),startRegistry:k,methodChoice:async()=>{if(g)return null;try{let B=await E();return g?null:YA(B)}catch{return null}},selectMethod:async B=>{let y=await o.selectMethod(B);g||u(y)},mobileRequired:async()=>{if(g)return!1;try{let B=await E();if(g||tA(B))return!1;let y=iA(B,"liveness");return EA(y)&&y?.requiresMobile===!0&&!lA()}catch{return!1}},liveness:B=>{J?.capture.handle.destroy(),J!==null&&(J.alive=!1);let y=pe(B,A.capture),U={capture:y,alive:!0,attempt:0};J=U,y.handle.on("state",K=>{K==="starting"&&(U.attempt+=1)}),y.handle.on("captured",K=>{Promise.resolve().then(()=>F(U,K))});let Y=y.handle;return{get state(){return Y.state},on:(K,X)=>Y.on(K,X),start:K=>Y.start(K),retry:()=>Y.retry(),switchCamera:()=>Y.switchCamera(),destroy:()=>{U.alive=!1,J===U&&(J=null),Y.destroy()}}},voiceClips:async()=>{if(g)return null;try{let B=await E();return g?null:B.voice??null}catch{return null}},on:(B,y)=>c.on(B,y),destroy:()=>{g=!0,l.abort(),J!==null&&(J.alive=!1,J.capture.handle.destroy(),J=null),c.clear()}}}0&&(module.exports={ASPECT_BANDS,AttestationError,CAPTURE_CANDIDATE_SPACING_MS,CAPTURE_EXTRA_CANDIDATES,CENTERED_FACTOR,CIRCLE_RADIUS_FACTOR,CLIP_MIME_ALLOWLIST,CaptureSessionDoc,DOC_ANALYSIS_DEFAULTS,DOC_CADENCE_HZ,DOC_DETECT_WIDTH,DOC_FEEDBACK_STATES,DOC_GATE_V1_DEFAULTS,DocFeedbackAggregator,DocGateV1,INFERENCE_RETRY_ATTEMPTS,INFERENCE_RETRY_DEFAULT_S,IN_CIRCLE_FACTOR,MRZ_BAND_DEFAULTS,MR_DOC_CATALOG,PRELOAD_BLAZE_INIT_TIMEOUT_MS,PRELOAD_BUDGET_MS,PROCESSING_POLL_DELAY_MS,PROCESSING_POLL_MAX,REGISTRY_RETRY_DELAY_MS,RETRYABLE_REASONS,TRANSPORT_REPLAY_ATTEMPTS,TRANSPORT_REPLAY_DELAY_MS,TURNSTILE_EXECUTE_TIMEOUT_MS,TURNSTILE_SCRIPT_SRC,analyzeDocFrame,aspectBand,createLivenessCaptureInternal,createVerificationInternal,detectIsMobile,detectMrzBand,executeTurnstile,feedbackVoteOf,frontierStep,isExecutable,isTerminalView,loadTurnstile,mapEngineState,mapErrorKind,mapGuidanceHint,mapSessionResult,mergeSessionView,preloadedDetectorFactory,quadAreaFrac,quadBounds,quadIou,quadTiltRatio,randomUuid,resetLivenessAssetsForTests,resetTurnstileForTests,runLivenessFlow,runSubmission,setPreloadLoaderForTests,specularFraction,stepOf,warmDocDetector});
|
|
1
|
+
"use strict";var gc=Object.create;var An=Object.defineProperty;var mc=Object.getOwnPropertyDescriptor;var hc=Object.getOwnPropertyNames;var pc=Object.getPrototypeOf,fc=Object.prototype.hasOwnProperty;var V=(e,t)=>()=>(e&&(t=e(e=0)),t);var ue=(e,t)=>{for(var n in t)An(e,n,{get:t[n],enumerable:!0})},ea=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of hc(t))!fc.call(e,r)&&r!==n&&An(e,r,{get:()=>t[r],enumerable:!(i=mc(t,r))||i.enumerable});return e};var cn=(e,t,n)=>(n=e!=null?gc(pc(e)):{},ea(t||!e||!e.__esModule?An(n,"default",{value:e,enumerable:!0}):n,e)),Ic=e=>ea(An({},"__esModule",{value:!0}),e);function Pi(e){return ln[e==="card"?"ID-1":e]}function Bt(e,t){return Cc[e].some(n=>Math.abs(t-ln[n].center)<=ln[n].tolerance)}function Gi(e){let t=na.find(n=>n.docType===e);return t===void 0||t.format==="ID-1"?"card":t.format}var ln,Cc,ta,na,st=V(()=>{"use strict";ln={"ID-1":{center:1.586,tolerance:.15},"ID-2":{center:1.419,tolerance:.12},"ID-3":{center:1.42,tolerance:.2}},Cc={"ID-1":["ID-1"],"ID-2":["ID-2"],"ID-3":["ID-3"],card:["ID-1","ID-2"]};ta=[{docType:"carte_identite",format:"ID-1",sides:["recto","verso"],mrz:"td1",portraitSide:"recto",aspectRatio:1.586,identifierSource:"mrz"},{docType:"passport",format:"ID-3",sides:["single"],mrz:"td3",portraitSide:"single",aspectRatio:1.42,identifierSource:"mrz"}],na=[...ta,{docType:"residence_permit",format:"ID-1",sides:["recto","verso"],mrz:"td1",portraitSide:"recto",aspectRatio:1.586,identifierSource:"mrz"}]});function oa(e,t){return .299*(e[t]??0)+.587*(e[t+1]??0)+.114*(e[t+2]??0)}function Ue(e){let{data:t,width:n,height:i}=e,r=n*i;if(r===0)return 0;let o=0;for(let a=0;a<r;a+=1)o+=oa(t,a*4);return o/r}function we(e){let{data:t,width:n,height:i}=e;if(n<3||i<3)return 0;let r=new Float32Array(n*i);for(let l=0;l<r.length;l+=1)r[l]=oa(t,l*4);let o=0,a=0,s=0;for(let l=1;l<i-1;l+=1)for(let m=1;m<n-1;m+=1){let d=l*n+m,h=(r[d-n]??0)+(r[d-1]??0)+(r[d+1]??0)+(r[d+n]??0)-4*(r[d]??0);o+=h,a+=h*h,s+=1}if(s===0)return 0;let A=o/s,c=a/s-A*A;return Math.min(1,Math.max(0,c)/180)}function At(e){let t=Ue(e),[n,i]=Se,r=t<n?n-t:t>i?t-i:0;return Math.max(0,1-r/Bc)}var Se,Bc,Je=V(()=>{"use strict";Se=[100,190],Bc=64});function dn(e,t,n){let i=[e.topLeft,e.topRight,e.bottomRight,e.bottomLeft],r=0;for(let a=0;a<4;a++){let s=i[a],A=i[(a+1)%4];r+=s.x*A.y-A.x*s.y}let o=t*n;return o>0?Math.abs(r/2)/o:0}function aa(e,t){let n=Ui(e),i=Ui(t),r=Math.max(n.x1,i.x1),o=Math.max(n.y1,i.y1),a=Math.min(n.x2,i.x2),s=Math.min(n.y2,i.y2),A=Math.max(0,a-r)*Math.max(0,s-o),c=(n.x2-n.x1)*(n.y2-n.y1),l=(i.x2-i.x1)*(i.y2-i.y1),m=c+l-A;return m>0?A/m:0}function St(e){let t=Ui(e);return{width:t.x2-t.x1,height:t.y2-t.y1}}function Ui(e){let t=[e.topLeft,e.topRight,e.bottomRight,e.bottomLeft];return{x1:Math.min(...t.map(n=>n.x)),y1:Math.min(...t.map(n=>n.y)),x2:Math.max(...t.map(n=>n.x)),y2:Math.max(...t.map(n=>n.y))}}function Qc(e){let t=Math.hypot(e.topRight.x-e.topLeft.x,e.topRight.y-e.topLeft.y),n=Math.hypot(e.bottomRight.x-e.bottomLeft.x,e.bottomRight.y-e.bottomLeft.y),i=Math.hypot(e.bottomLeft.x-e.topLeft.x,e.bottomLeft.y-e.topLeft.y),r=Math.hypot(e.bottomRight.x-e.topRight.x,e.bottomRight.y-e.topRight.y),o=(t+n)/2,a=(i+r)/2;return o<=0||a<=0?0:Math.max(o,a)/Math.min(o,a)}var Te,un,Hi,Qt,wt=V(()=>{"use strict";Je();st();Te=480,un=Object.freeze({MIN_AREA_FRAC:.15,EDGE_CLIP_MARGIN_PX:4,STABLE_TICKS:3,IOU_STABLE_MIN:.85,RISE_PER_S:.9,FALL_PER_S:.25,GUIDE_EXPOSURE:.6,GUIDE_SHARPNESS:.35,ID3_BAND_MIN_WIDTH_FRAC:.55,ID3_BAND_ASPECT_MIN:4,ID3_BAND_ASPECT_MAX:40}),Hi=e=>Math.min(1,Math.max(0,e));Qt=class{constructor(t,n={}){this.p=0;this.lastTickAt=null;this.lastQuad=null;this.streak=0;this.format=t,this.t={...un,...n}}reset(){this.p=0,this.lastTickAt=null,this.lastQuad=null,this.streak=0}tick(t){let{quad:n,quality:i,timestampMs:r}=t,o=this.lastTickAt===null?0:Math.max(0,(r-this.lastTickAt)/1e3);this.lastTickAt=r;let a=null;if(n===null)a="dcv1.no_doc";else if(this.format==="ID-3"){let u=St(n),f=u.height>0?u.width/u.height:0;u.width<this.t.ID3_BAND_MIN_WIDTH_FRAC*t.frameWidth?a="dcv1.come_closer":this.edgeClipped(n,t.frameWidth,t.frameHeight)?a="dcv1.fit_document":(f<this.t.ID3_BAND_ASPECT_MIN||f>this.t.ID3_BAND_ASPECT_MAX)&&(a="dcv1.wrong_shape")}else dn(n,t.frameWidth,t.frameHeight)<this.t.MIN_AREA_FRAC?a="dcv1.come_closer":this.edgeClipped(n,t.frameWidth,t.frameHeight)?a="dcv1.fit_document":Bt(this.format,Qc(n))||(a="dcv1.wrong_shape");let s=a===null,A=Hi(i.exposure)>=this.t.GUIDE_EXPOSURE,c=Hi(i.sharpness)>=this.t.GUIDE_SHARPNESS,l=A&&c;if(s&&l&&n!==null){let u=this.lastQuad===null||aa(n,this.lastQuad)>=this.t.IOU_STABLE_MIN;this.streak=u?this.streak+1:1}else this.streak=0;this.lastQuad=n;let m=s&&l;this.p=Hi(this.p+(m?this.t.RISE_PER_S:-this.t.FALL_PER_S)*o);let d=m&&this.streak>=this.t.STABLE_TICKS,h;if(a!==null)h=a;else if(A)c?h="dcv1.hold_still":h="dcv1.steady";else{let u=(Se[0]+Se[1])/2;h=i.meanLuma<u?"dcv1.more_light":"dcv1.too_bright"}return{at:r,quad:n,plausible:s,p:this.p,guidanceKey:h,ready:d,stableTicks:this.streak}}edgeClipped(t,n,i){let r=this.t.EDGE_CLIP_MARGIN_PX;return[t.topLeft,t.topRight,t.bottomRight,t.bottomLeft].some(a=>a.x<=r||a.y<=r||a.x>=n-r||a.y>=i-r)}}});var sa={};ue(sa,{MRZ_BAND_DEFAULTS:()=>Ji,detectMrzBand:()=>mn});function mn(e,t={}){let n={...Ji,...t},{data:i,width:r,height:o}=e;if(r<32||o<32)return null;let a=new Array(o).fill(!1),s=new Float32Array(o),A=new Int32Array(o).fill(r),c=new Int32Array(o).fill(-1),l=r/gn,m=new Array(gn);for(let I=0;I<o;I++){let b=0;m.fill(!1);let v=I*r*4,O=.299*(i[v]??0)+.587*(i[v+1]??0)+.114*(i[v+2]??0);for(let W=1;W<r;W++){let Z=v+W*4,R=.299*(i[Z]??0)+.587*(i[Z+1]??0)+.114*(i[Z+2]??0);Math.abs(R-O)>=n.EDGE_LUMA_DELTA&&(b+=1,m[Math.min(gn-1,Math.floor(W/l))]=!0,W<A[I]&&(A[I]=W),W>c[I]&&(c[I]=W)),O=R}s[I]=b/r;let L=m.filter(Boolean).length/gn;a[I]=s[I]>=n.MIN_ROW_DENSITY&&L>=n.MIN_COLUMN_COVERAGE&&c[I]-A[I]>=n.MIN_WIDTH_FRAC*r}let d=null,h=-1,u=-1,f=0,p=I=>{if(h<0)return;let b=I-h+1;b>=n.MIN_HEIGHT_FRAC*o&&b<=n.MAX_HEIGHT_FRAC*o&&f>=4&&(d===null||f>d.rows)&&(d={top:h,bottom:I,rows:f}),h=-1,f=0};for(let I=0;I<o;I++)a[I]&&(h<0?h=I:I-u>n.ROW_MERGE_GAP&&(p(u),h=I),u=I,f+=1);if(p(u),d===null)return null;let g=d,C=r,w=-1,Q=0,k=0;for(let I=g.top;I<=g.bottom;I++)a[I]&&(A[I]<C&&(C=A[I]),c[I]>w&&(w=c[I]),Q+=s[I],k+=1);return w-C<n.MIN_WIDTH_FRAC*r?null:{x:C,y:g.top,width:w-C,height:g.bottom-g.top+1,density:k>0?Q/k:0}}var Ji,gn,hn=V(()=>{"use strict";Ji=Object.freeze({EDGE_LUMA_DELTA:40,MIN_ROW_DENSITY:.08,MIN_COLUMN_COVERAGE:.6,MIN_WIDTH_FRAC:.55,MIN_HEIGHT_FRAC:.02,MAX_HEIGHT_FRAC:.16,ROW_MERGE_GAP:18}),gn=12});function Vi(e){let{data:t,width:n,height:i}=e,r=n*i;if(r===0)return 0;let o=0;for(let a=0;a<r;a++){let s=a*4;.299*(t[s]??0)+.587*(t[s+1]??0)+.114*(t[s+2]??0)>=252&&o++}return o/r}function la(e){let t=(A,c)=>Math.hypot(c.x-A.x,c.y-A.y),n=t(e.topLeft,e.topRight),i=t(e.bottomLeft,e.bottomRight),r=t(e.topLeft,e.bottomLeft),o=t(e.topRight,e.bottomRight),a=Math.max(n,i)/Math.max(1e-6,Math.min(n,i)),s=Math.max(r,o)/Math.max(1e-6,Math.min(r,o));return Math.max(a,s)}function Yi(e){let t={...un,...e.thresholds},n=ca,{quad:i,frameWidth:r,frameHeight:o,measures:a}=e,s=e.format==="ID-3",A="ok";if(i===null)A="no_document";else if(s){let d=St(i),h=r>0?d.width/r:0,u=d.height>0?d.width/d.height:0;h<t.ID3_BAND_MIN_WIDTH_FRAC?A="too_far":Aa(i,r,o,t.EDGE_CLIP_MARGIN_PX)?A="edge_clipped":(u<t.ID3_BAND_ASPECT_MIN||u>t.ID3_BAND_ASPECT_MAX)&&(A="wrong_shape")}else{let d=dn(i,r,o),h=St(i),u=Math.max(h.width,h.height)/Math.max(1e-6,Math.min(h.width,h.height));d<t.MIN_AREA_FRAC?A="too_far":d>n.MAX_AREA_FRAC?A="too_close":Aa(i,r,o,t.EDGE_CLIP_MARGIN_PX)?A="edge_clipped":Bt(e.format,u)?la(i)>n.TILT_MAX_SIDE_RATIO&&(A="tilted"):A="wrong_shape"}let c=a.exposure>=t.GUIDE_EXPOSURE?"ok":a.meanLuma<(Se[0]+Se[1])/2?"too_dark":"too_bright",l=a.sharpness>=t.GUIDE_SHARPNESS?"ok":"blurry",m=a.specularFraction>=n.GLARE_MAX_SPECULAR_FRAC?"glare":"ok";return{framing:A,lighting:c,blur:l,glare:m,acceptable:A==="ok"&&c==="ok"&&l==="ok"&&m==="ok"}}function Aa(e,t,n,i){return[e.topLeft,e.topRight,e.bottomRight,e.bottomLeft].some(o=>o.x<=i||o.y<=i||o.x>=t-i||o.y>=n-i)}var ca,Ki=V(()=>{"use strict";Je();st();wt();ca=Object.freeze({MAX_AREA_FRAC:.92,TILT_MAX_SIDE_RATIO:1.3,GLARE_MAX_SPECULAR_FRAC:.025})});function Wi(e){return e.framing==="no_document"?"sensing":e.framing==="too_far"?"too_far":e.framing==="too_close"?"too_close":e.framing==="edge_clipped"?"edge_clipped":e.framing==="wrong_shape"?"wrong_shape":e.framing==="tilted"?"tilted":e.lighting==="too_dark"?"too_dark":e.lighting==="too_bright"?"too_bright":e.glare==="glare"?"glare":e.blur==="blurry"?"blurry":"hold_still"}var kt,Mt,qi=V(()=>{"use strict";kt=Object.freeze({sensing:{key:"sensing",reticle:"searching",minDurationMs:900},too_far:{key:"too_far",reticle:"coaching",minDurationMs:1400},too_close:{key:"too_close",reticle:"coaching",minDurationMs:1400},edge_clipped:{key:"edge_clipped",reticle:"coaching",minDurationMs:1400},wrong_shape:{key:"wrong_shape",reticle:"coaching",minDurationMs:1400},tilted:{key:"tilted",reticle:"coaching",minDurationMs:1400},too_dark:{key:"too_dark",reticle:"coaching",minDurationMs:1400},too_bright:{key:"too_bright",reticle:"coaching",minDurationMs:1400},blurry:{key:"blurry",reticle:"coaching",minDurationMs:1400},focus_far:{key:"focus_far",reticle:"coaching",minDurationMs:1600},glare:{key:"glare",reticle:"coaching",minDurationMs:1400},hold_still:{key:"hold_still",reticle:"locking",minDurationMs:900},processing:{key:"processing",reticle:"processing",minDurationMs:800},side_captured:{key:"side_captured",reticle:"flip",minDurationMs:2600},captured:{key:"captured",reticle:"done",minDurationMs:800}});Mt=class{constructor(t=2600,n=.35){this.windowMs=t;this.decayPerSecond=n;this.votes=[];this.current=kt.sensing;this.currentSinceMs=null}reset(){this.votes=[],this.current=kt.sensing,this.currentSinceMs=null}force(t,n){return this.votes=[],this.current=kt[t],this.currentSinceMs=n,this.current}tick(t,n){if(this.currentSinceMs===null&&(this.currentSinceMs=n),this.votes.push({key:t,atMs:n}),this.votes=this.votes.filter(a=>n-a.atMs<=this.windowMs),n-this.currentSinceMs<this.current.minDurationMs)return this.current;let i=new Map;for(let a of this.votes){let s=(n-a.atMs)/1e3,A=this.decayPerSecond**s;i.set(a.key,(i.get(a.key)??0)+A)}let r=this.current.key,o=-1;for(let[a,s]of i)s>o&&(o=s,r=a);return r!==this.current.key&&(this.current=kt[r],this.currentSinceMs=n),this.current}}});var ua,da=V(()=>{"use strict";ua="0.1.0-rc.8"});function ha(){let e=globalThis.crypto;try{if(typeof e?.randomUUID=="function")return e.randomUUID()}catch{}try{if(typeof e?.getRandomValues=="function"){let t=e.getRandomValues(new Uint8Array(16));return Array.from(t,n=>n.toString(16).padStart(2,"0")).join("")}}catch{}}function Sc(){try{let e=localStorage.getItem(ga);if(e)return e;let t=ha();return t!==void 0&&localStorage.setItem(ga,t),t}catch{return ma??(ma=ha()),ma}}async function wc(){let e=globalThis.crypto?.subtle;if(!e)return"";let t=navigator,n=JSON.stringify([t.userAgent,t.platform,t.hardwareConcurrency??null,t.deviceMemory??null,t.maxTouchPoints??0,screen.width,screen.height,screen.colorDepth,globalThis.devicePixelRatio??1,Intl.DateTimeFormat().resolvedOptions().timeZone,t.languages?.join(",")??t.language]),i=await e.digest("SHA-256",new TextEncoder().encode(n));return Array.from(new Uint8Array(i),r=>r.toString(16).padStart(2,"0")).join("").slice(0,32)}function kc(e){let t=new TextEncoder().encode(e),n="";for(let i of t)n+=String.fromCharCode(i);return btoa(n).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function Mc(e){let t,n;return{timezone(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone?.slice(0,64)||void 0}catch{return}},noteCameraLabel(i){i&&(t=i.slice(0,128))},async deviceHeader(){try{n??(n=wc().catch(()=>""));let i=[];navigator.webdriver&&i.push("webdriver"),/HeadlessChrome/.test(navigator.userAgent)&&i.push("headless");let r=await n,o=Sc(),a={v:1,platform:"web",sdk:e.sdk.slice(0,64),ids:[...o?[{kind:"web_local",value:o.slice(0,128)}]:[],...r?[{kind:"web_fp",value:r}]:[]],screen:{w:screen.width,h:screen.height,dpr:globalThis.devicePixelRatio??1},...t?{cameraLabel:t}:{},...i.length?{signals:i}:{}};return kc(JSON.stringify(a))}catch{return}}}}function fn(e){try{let t=e.getVideoTracks?.()[0];t&&pn.noteCameraLabel(t.label)}catch{}}var ga,ma,zi,Xi,pn,In=V(()=>{"use strict";da();ga="sekyro.did";zi=Symbol.for("sekyro.web.clientContext"),Xi=globalThis,pn=Xi[zi]??(Xi[zi]=Mc({sdk:`@sekyro/web@${ua}`}))});function pa(){let e=globalThis.MediaRecorder;return!e||typeof e.isTypeSupported!="function"?"":xc.find(t=>e.isTypeSupported(t))??""}function ct(e){if(e instanceof TypeError)return"insecure";switch(e?.name??""){case"NotAllowedError":case"PermissionDeniedError":return"permission";case"NotFoundError":case"DevicesNotFoundError":return"notfound";case"NotReadableError":case"TrackStartError":return"inuse";case"OverconstrainedError":case"ConstraintNotSatisfiedError":return"overconstrained";default:return"generic"}}function Ia(){let e=globalThis;if(typeof e.window<"u"&&e.window.isSecureContext===!1)return"INSECURE_CONTEXT";let t=e.navigator?.mediaDevices;return!t||typeof t.getUserMedia!="function"?"UNSUPPORTED":"OK"}function Ca(){let e=globalThis.MediaRecorder;return typeof e<"u"&&typeof e.isTypeSupported=="function"}function Cn(e){return e.size>ji}var xc,fa,ji,lt=V(()=>{"use strict";xc=["video/mp4;codecs=avc1.42E01E,mp4a.40.2","video/mp4;codecs=avc1.42E01E","video/mp4","video/webm;codecs=vp9,opus","video/webm;codecs=vp9","video/webm;codecs=vp8,opus","video/webm;codecs=vp8","video/webm"];fa="video/webm";ji=8*1024*1024});function En(){let e=typeof navigator>"u"?void 0:navigator,t=!1;try{t=typeof WebAssembly<"u"&&WebAssembly.validate(vc)}catch{t=!1}return{cores:e?.hardwareConcurrency??2,memGB:e?.deviceMemory??null,simd:t}}function bn(e){let t=e.memGB??4;return e.cores<4||t<3?"LOW":e.cores>=8&&t>=6?"HIGH":"MID"}var Dc,vc,Zi,yn,$i=V(()=>{"use strict";Dc=Object.freeze({LOW:Object.freeze({cadenceHz:5,inputWidth:128,animations:"reduced"}),MID:Object.freeze({cadenceHz:8,inputWidth:160,animations:"full"}),HIGH:Object.freeze({cadenceHz:10,inputWidth:192,animations:"full"})}),vc=new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]);Zi=["LOW","MID","HIGH"],yn=class{constructor(t){this.samples=[];this.adjusted=!1;this.current=t}get deviceClass(){return this.current}get profile(){return Dc[this.current]}record(t){if(this.adjusted||this.samples.length>=10)return this.current;if(this.samples.push(t),this.samples.length<10)return this.current;this.adjusted=!0;let n=this.samples.reduce((i,r)=>i+r,0)/this.samples.length;if(n>70)this.current="LOW";else if(n<25){let i=Zi.indexOf(this.current);this.current=Zi[Math.min(Zi.length-1,i+1)]??this.current}return this.current}}});function Bn(e){let{width:t,height:n,data:i}=e;if(t<16||n<16)return-1;let r=new Uint8Array(t*n);for(let a=0,s=0;a<r.length;a+=1,s+=4)r[a]=Math.round(.299*(i[s]??0)+.587*(i[s+1]??0)+.114*(i[s+2]??0));let o=-1;for(let[a,s]of Rc){let A=new Uint32Array(256),c=new Float64Array(256),l=0;for(let p=1;p<n-1;p+=1){let g=p*t,C=(p+s)*t,w=(p-s)*t;for(let Q=1;Q<t-1;Q+=1){let k=r[C+Q+a]??0,I=r[w+Q-a]??0,b=Math.abs(k-I);A[b]=(A[b]??0)+1,c[b]=(c[b]??0)+Math.abs(k+I-2*(r[g+Q]??0)),l+=1}}let m=Math.max(1,Math.floor(l/20)),d=0,h=0,u=0;for(let p=255;p>=0&&d<m;p-=1){let g=A[p]??0;d+=g,h+=g*p,u+=c[p]??0}if(h===0)return 0;let f=u/h;o=o<0?f:Math.min(o,f)}return o}function Ve(e,t,n,i=er){if(e===null||t.width<=0||t.height<=0)return null;let r=[e.topLeft,e.topRight,e.bottomRight,e.bottomLeft],o=n.width/t.width,a=n.height/t.height,s=Math.min(...r.map(g=>g.x))*o,A=Math.max(...r.map(g=>g.x))*o,c=Math.min(...r.map(g=>g.y))*a,l=Math.max(...r.map(g=>g.y))*a,m=(A-s)*i,d=(l-c)*i,h=Math.max(0,Math.floor(s-m)),u=Math.max(0,Math.floor(c-d)),f=Math.min(n.width,Math.ceil(A+m)),p=Math.min(n.height,Math.ceil(l+d));return f-h<16||p-u<16?null:{x:h,y:u,width:f-h,height:p-u}}function tr(e,t){let n=new Uint8ClampedArray(t.width*t.height*4);for(let i=0;i<t.height;i+=1)for(let r=0;r<t.width*4;r+=1)n[i*t.width*4+r]=e.data[((t.y+i)*e.width+t.x)*4+r]??0;return{data:n,width:t.width,height:t.height}}function nr(e,t=1e3){let n=t/Math.max(e.width,e.height);if(n>=1)return e;let i=Math.max(1,Math.round(e.width*n)),r=Math.max(1,Math.round(e.height*n)),o=new Uint8ClampedArray(i*r*4);for(let a=0;a<r;a+=1){let s=Math.floor(a/n),A=Math.min(e.height,Math.max(s+1,Math.floor((a+1)/n)));for(let c=0;c<i;c+=1){let l=Math.floor(c/n),m=Math.min(e.width,Math.max(l+1,Math.floor((c+1)/n)));for(let d=0;d<3;d+=1){let h=0;for(let u=s;u<A;u+=1)for(let f=l;f<m;f+=1)h+=e.data[(u*e.width+f)*4+d]??0;o[(a*i+c)*4+d]=h/((A-s)*(m-l))}o[(a*i+c)*4+3]=255}}return{data:o,width:i,height:r}}function Ea(e,t){return Bn(nr(t===null?e:tr(e,t)))}function ut(e,t){let n=t??{x:0,y:0,width:e.width,height:e.height},i=Math.min(1,1e3/Math.max(n.width,n.height)),r=Math.max(1,Math.round(n.width*i)),o=Math.max(1,Math.round(n.height*i)),a=document.createElement("canvas");a.width=r,a.height=o;try{let s=a.getContext("2d",{willReadFrequently:!0});return s===null?-1:(s.imageSmoothingQuality="high",s.drawImage(e,n.x,n.y,n.width,n.height,0,0,r,o),Bn(s.getImageData(0,0,r,o)))}catch{return-1}finally{a.width=0,a.height=0}}var ya,Rc,er,Qn=V(()=>{"use strict";ya=1e3,Rc=[[1,0],[0,1],[1,1],[1,-1]];er=.06});function Le(e){let t=[e.topLeft.x,e.topRight.x,e.bottomRight.x,e.bottomLeft.x],n=[e.topLeft.y,e.topRight.y,e.bottomRight.y,e.bottomLeft.y],i=Math.min(...t),r=Math.min(...n);return{x:i,y:r,width:Math.max(...t)-i,height:Math.max(...n)-r}}function Sa(e,t){let n=Math.max(0,Math.floor(e.x)),i=Math.max(0,Math.floor(e.y)),r=Math.min(t.width,Math.ceil(e.x+e.width)),o=Math.min(t.height,Math.ceil(e.y+e.height));return r-n<16||o-i<16?null:{x:n,y:i,width:r-n,height:o-i}}function Lc(e,t,n){if(e===null||t.width<=0||t.height<=0)return null;let i=Le(e);if(i.width<=0||i.height<=0)return null;let r=n==="ID-3"?{x:i.x-i.width*xt.side,y:i.y-i.width*xt.above,width:i.width*(1+2*xt.side),height:i.height+i.width*(xt.above+xt.below)}:{x:i.x-i.width*Sn,y:i.y-i.height*Sn,width:i.width*(1+2*Sn),height:i.height*(1+2*Sn)};return Sa(r,t)}function ir(e,t,n){let i=Math.max(e,t);return i>0?Math.min(1,n/i):1}function rr(e,t,n,i,r=Tc){let o=t.width>0?n.width/t.width:1,a=t.height>0?n.height/t.height:1,s=e===null?null:{topLeft:{x:e.topLeft.x*o,y:e.topLeft.y*a},topRight:{x:e.topRight.x*o,y:e.topRight.y*a},bottomRight:{x:e.bottomRight.x*o,y:e.bottomRight.y*a},bottomLeft:{x:e.bottomLeft.x*o,y:e.bottomLeft.y*a}},A=Lc(s,n,i)??{x:0,y:0,width:n.width,height:n.height},c=ir(A.width,A.height,r),l=Math.max(1,Math.round(A.width*c)),m=Math.max(1,Math.round(A.height*c)),d=null;if(s!==null){let h=Le(s);d=Sa({x:(h.x-A.x)*c,y:(h.y-A.y)*c,width:h.width*c,height:h.height*c},{width:l,height:m})}return{crop:A,width:l,height:m,docRegion:d}}function wa(e,t,n,i=_c){if(n==="LOW")return null;let r=e?.width?.max,o=e?.height?.max;if(typeof r!="number"||typeof o!="number"||r<=0||o<=0)return null;let a=Math.max(r,o),s=Math.min(r,o),A=Math.min(a,Math.max(i.width,i.height)),c=Math.min(s,Math.min(i.width,i.height));return A<=Math.max(t.width,t.height)?null:{width:{ideal:A},height:{ideal:c}}}function ka(e){let t={},n=e?.imageWidth,i=e?.imageHeight;if(typeof n?.max=="number"&&n.max>0){let r=typeof i?.max=="number"&&i.max>0?n.max/i.max:1.3333333333333333,o=r>=1?ba:ba*r,a=Math.min(n.max,Math.floor(o)),s=typeof n.step=="number"&&n.step>0?n.step:1,A=typeof n.min=="number"?n.min:0;a=Math.max(A,A+Math.floor((a-A)/s)*s),t.imageWidth=a}return e?.fillLightMode?.includes("off")===!0&&(t.fillLightMode="off"),t}function Ma(e,t){if(e.width<=0||e.height<=0||t.width<=0||t.height<=0)return!1;let n=e.width>e.height,i=t.width>t.height;return n!==i&&e.width!==e.height&&t.width!==t.height?!1:Math.max(e.width,e.height)>=1.2*Math.max(t.width,t.height)}function xa(e,t,n,i){if(n===null)return!1;let r=Le(e),o=Le(n);if(t.width<=0||i.width<=0)return!1;let a=r.width/t.width,s=o.width/i.width;return s>0&&a>=.6*s&&a<=1.25*s}var Ba,_c,ba,Tc,Qa,Sn,xt,or=V(()=>{"use strict";Ba=Object.freeze({width:1920,height:1080}),_c=Object.freeze({width:3840,height:2160}),ba=4096,Tc=2560,Qa=640,Sn=.15,xt=Object.freeze({side:.2,above:.9,below:.3})});function Ra(){let e=globalThis.ImageCapture;return typeof e=="function"?e:null}function Nc(e){return/AppleWebKit\//.test(e)&&!/(Chrome|Chromium|Edg|OPR)\//.test(e)}function _a(e,t=typeof navigator>"u"?"":navigator.userAgent){return Ra()!==null&&!Nc(t)&&e!=null&&e.kind==="video"&&e.readyState==="live"}function va(e,t){return new Promise((n,i)=>{let r=setTimeout(()=>i(new Error("takePhoto timed out")),t);e.then(o=>{clearTimeout(r),n(o)},o=>{clearTimeout(r),i(o)})})}function ar(e,t){let n=document.createElement("canvas");return n.width=e,n.height=t,n}function Pc(e,t){return new Promise((n,i)=>{e.toBlob(r=>r?n(r):i(new Error("toBlob failed")),"image/jpeg",t)})}async function Ta(e,t,n,i,r){let o=ar(n,i),a=ar(1,1);try{let s=o.getContext("2d");if(s===null)throw new Error("2d context unavailable");s.imageSmoothingQuality="high",s.drawImage(e,t.x,t.y,t.width,t.height,0,0,n,i);let A=await Pc(o,Fc),c=r===null?null:Ve({topLeft:{x:r.x,y:r.y},topRight:{x:r.x+r.width,y:r.y},bottomRight:{x:r.x+r.width,y:r.y+r.height},bottomLeft:{x:r.x,y:r.y+r.height}},{width:n,height:i},{width:n,height:i}),l=ut(o,c),m=ir(n,i,Qa);return a.width=Math.max(1,Math.round(n*m)),a.height=Math.max(1,Math.round(i*m)),a.getContext("2d")?.drawImage(o,0,0,a.width,a.height),{blob:A,previewDataUrl:a.toDataURL("image/jpeg",.85),sharpness:l}}finally{o.width=0,o.height=0,a.width=0,a.height=0}}function Gc(e,t){let n=Math.min(1,t/e.width),i=ar(Math.max(1,Math.round(e.width*n)),Math.max(1,Math.round(e.height*n)));try{let r=i.getContext("2d",{willReadFrequently:!0});return r===null?null:(r.imageSmoothingQuality="high",r.drawImage(e,0,0,i.width,i.height),r.getImageData(0,0,i.width,i.height))}finally{i.width=0,i.height=0}}async function La(e,t,n,i){let r={width:Math.max(1,e.videoWidth),height:Math.max(1,e.videoHeight)},o=rr(t,n,r,i);return{...await Ta(e,o.crop,o.width,o.height,o.docRegion),docRegion:o.docRegion,source:"video",width:o.width,height:o.height}}async function Fa(e,t,n,i,r){let o=Ra();if(o===null)return null;let a=null;try{let s=new o(r.track),A=await va(s.getPhotoCapabilities?.()??Promise.resolve({}),Da).catch(()=>({})),c=await va(s.takePhoto(ka(A)),Da);a=await createImageBitmap(c);let l={width:e.videoWidth,height:e.videoHeight};if(!Ma(a,l))return null;let m=Gc(a,r.detectWidth),d=null;m!==null&&t!==null&&(d=await r.detect(m).catch(()=>null));let h=m??{width:a.width,height:a.height};d!==null&&!xa(d,h,t,n)&&(d=null);let u=rr(d,h,a,i);return{...await Ta(a,u.crop,u.width,u.height,u.docRegion),docRegion:u.docRegion,source:"photo",width:u.width,height:u.height}}catch{return null}finally{a?.close()}}var Da,Fc,Na=V(()=>{"use strict";Qn();or();Da=3500,Fc=.92});function cr(e){let t=Dt,n=e!==null&&typeof e=="object"?e:{},i=n.fillDistanceM!==null&&typeof n.fillDistanceM=="object"?n.fillDistanceM:{},r=(o,a)=>typeof o=="boolean"?o:a;return{width:de(n.width,640,7680)??t.width,height:de(n.height,480,4320)??t.height,lensSelection:r(n.lensSelection,t.lensSelection),continuousFocus:r(n.continuousFocus,t.continuousFocus),refocusBeforePhotoMs:de(n.refocusBeforePhotoMs,0,2e3)??t.refocusBeforePhotoMs,zoomMax:de(n.zoomMax,1,5)??t.zoomMax,zoomNoFocusInfo:de(n.zoomNoFocusInfo,1,5)??t.zoomNoFocusInfo,zoomMinSourcePx:de(n.zoomMinSourcePx,0,8e3)??t.zoomMinSourcePx,fillDistanceM:{id1:de(i.id1,.03,1)??t.fillDistanceM.id1,id3:de(i.id3,.03,1)??t.fillDistanceM.id3},focusMarginFrac:de(n.focusMarginFrac,0,2)??t.focusMarginFrac,stillSharpnessMin:de(n.stillSharpnessMin,0,10)??t.stillSharpnessMin,stillRefusalsMax:de(n.stillRefusalsMax,0,10)??t.stillRefusalsMax,focusFarFillFrac:de(n.focusFarFillFrac,0,1)??t.focusFarFillFrac,noDocFarHintMs:de(n.noDocFarHintMs,0,6e4)??t.noDocFarHintMs,zoomFallbackMs:de(n.zoomFallbackMs,0,12e4)??t.zoomFallbackMs}}function Ga(e){let t=e.toLowerCase();return t===""?"unknown":/front|facing front|user|selfie|face ?time/.test(t)?"front":/ultra|0\.5x|wide angle/.test(t)?"ultra":/tele|zoom|periscope|[2-9]x/.test(t)?"tele":/depth|tof|infrared|\bir\b|truedepth|lidar|macro|monochrome|mono\b/.test(t)?"depth":/dual|triple/.test(t)?"virtual":/back|rear|environment|facing back|arrière|خلفية/.test(t)?"main":"unknown"}function Oc(e){let t=/camera2?\s*(\d+)/i.exec(e);return t?Number(t[1]):Number.POSITIVE_INFINITY}function Oa(e){let t={main:0,virtual:1,ultra:9,tele:9,depth:9,front:9,unknown:9};return e.filter(n=>(n.kind===void 0||n.kind==="videoinput")&&n.deviceId!=="").map((n,i)=>({id:n.deviceId,kind:Ga(n.label),index:Oc(n.label),i})).filter(n=>t[n.kind]<9).sort((n,i)=>t[n.kind]-t[i.kind]||n.index-i.index||n.i-i.i).map(n=>n.id)}function Ha(){try{let e=globalThis.localStorage?.getItem(wn);return typeof e=="string"&&e!==""?e:null}catch{return null}}function sr(e){try{e===null?globalThis.localStorage?.removeItem(wn):globalThis.localStorage?.setItem(wn,e)}catch{}}function kn(e,t,n){if(!vt(e,"single-shot"))return null;let i=r=>Math.min(1,Math.max(0,Number.isFinite(r)?r:.5));return{focusMode:"single-shot",pointsOfInterest:[{x:i(t),y:i(n)}]}}function Hc(e,t,n,i){if(!Number.isFinite(e)||!Number.isFinite(t)||n.width<=0||n.height<=0||i.width<=0||i.height<=0)return null;let r=Math.max(n.width/i.width,n.height/i.height),o=i.width*r,a=i.height*r,s=(e-n.left+(o-n.width)/2)/o,A=(t-n.top+(a-n.height)/2)/a;return{x:Math.min(1,Math.max(0,s)),y:Math.min(1,Math.max(0,A))}}function lr(e,t,n,i=Dt){let r=e?.zoom?.min,o=e?.zoom?.max;if(typeof o!="number"||o<=1)return 1;let a=n==="ID-3"?i.fillDistanceM.id3:i.fillDistanceM.id1,s=e?.focusDistance?.min,A;if(typeof s=="number"&&s>0&&s<1){if(A=s*(1+i.focusMarginFrac)/a,A<=1.05)return 1}else{if(Math.min(t.width,t.height)<i.zoomMinSourcePx)return 1;A=i.zoomNoFocusInfo}let c=Math.min(A,i.zoomMax,o);typeof r=="number"&&(c=Math.max(c,r));let l=e?.zoom?.step;return typeof l=="number"&&l>0&&(c=Math.round(c/l)*l),c>1.01?Number(c.toFixed(2)):1}function Ar(e){try{return e.getVideoTracks?.()[0]}catch{return}}function Pa(e){if(e!==null)for(let t of e.getTracks())t.stop()}function Ua(e){try{let t=Ar(e)?.getCapabilities?.();return!Array.isArray(t?.focusMode)||t.focusMode.includes("continuous")}catch{return!0}}async function ur(e){let t=o=>({audio:!1,video:{...o,width:{ideal:e.base.width},height:{ideal:e.base.height}}}),n=o=>e.getUserMedia(t({deviceId:{exact:o}})),i=()=>e.getUserMedia(t({facingMode:{ideal:"environment"}}));if(e.lensSelection){let o=Ha();if(o!==null)try{return{stream:await n(o),lens:"stored"}}catch{sr(null)}}let r=await i();if(!e.lensSelection||e.enumerateDevices===void 0)return{stream:r,lens:"default"};try{let o=Oa(await e.enumerateDevices()).slice(0,Ja);if(o.length===0)return{stream:r,lens:"default"};let a=null;for(let s of o){let A=r!==null?Ar(r)?.getSettings?.().deviceId:void 0;if(r===null||A!==s){Pa(r),r=null;try{r=await n(s)}catch{continue}}if(a??(a=s),Ua(r))return sr(s),{stream:r,lens:"selected"}}if(r!==null&&a!==null&&Ar(r)?.getSettings?.().deviceId===a)return{stream:r,lens:"selected"};if(Pa(r),r=null,a!==null)try{return{stream:await n(a),lens:"selected"}}catch{}return{stream:await i(),lens:"default"}}catch{return{stream:r??await i(),lens:"default"}}}var Dt,de,wn,vt,Ja,Mn=V(()=>{"use strict";Dt=Object.freeze({width:3840,height:2160,lensSelection:!0,continuousFocus:!0,refocusBeforePhotoMs:350,zoomMax:2,zoomNoFocusInfo:1.5,zoomMinSourcePx:2160,fillDistanceM:Object.freeze({id1:.11,id3:.15}),focusMarginFrac:.2,stillSharpnessMin:.16,stillRefusalsMax:2,focusFarFillFrac:.45,noDocFarHintMs:1500,zoomFallbackMs:8e3}),de=(e,t,n)=>typeof e=="number"&&Number.isFinite(e)&&e>=t&&e<=n?e:void 0;wn="sekyro.doc.camera";vt=(e,t)=>Array.isArray(e?.focusMode)&&e.focusMode.includes(t);Ja=3});function dr(e,t,n,i=.06){let r=Math.max(e.width/n,e.height),o=r*n,a=(e.width-o)/2,s=(e.height-r)/2,A=Fe((t.x-t.width*i-a)/o),c=Fe((t.y-t.height*i-s)/r),l=Fe((t.x+t.width*(1+i)-a)/o),m=Fe((t.y+t.height*(1+i)-s)/r);return{x:A,y:c,width:l-A,height:m-c}}function gr(e,t,n={}){let i=n.edgePeakFrac??0,{width:r,height:o,data:a}=e;if(r<=0||o<=0)return dt;let s=Fe(t.x),A=Fe(t.y),c={x:s,y:A,width:Math.max(0,Fe(t.x+t.width)-s),height:Math.max(0,Fe(t.y+t.height)-A)};if(c.width<=0||c.height<=0)return dt;let l=c.x*r,m=c.y*o,d=(c.x+c.width)*r,h=(c.y+c.height)*o,u=(d-l)*.15,f=(h-m)*.15,p=(te,ne,pe)=>Math.min(pe,Math.max(ne,te)),g=p(Math.floor(l-u),0,r-1),C=p(Math.floor(m-f),0,o-1),w=p(Math.ceil(d+u),g+1,r),Q=p(Math.ceil(h+f),C+1,o),k=Math.max(1,Math.ceil(Math.max(w-g,Q-C)/320)),I=Math.floor((w-g+k-1)/k),b=Math.floor((Q-C+k-1)/k);if(I<3||b<3)return dt;let v=new Int32Array(I*b);for(let te=0;te<b;te++){let ne=C+te*k;for(let pe=0;pe<I;pe++){let Qe=(ne*r+g+pe*k)*4;v[te*I+pe]=(a[Qe]??0)*77+(a[Qe+1]??0)*150+(a[Qe+2]??0)*29>>8}}let O=(te,ne)=>(te-ne-.5)/k,L=O(l,g),W=O(d,g),Z=O(m,C),R=O(h,C),E=(d-l)/k,y=(h-m)/k,x=p(Math.ceil(L),0,I-1),P=p(Math.floor(W),x,I-1),U=p(Math.ceil(Z),0,b-1),M=p(Math.floor(R),U,b-1),B=0,D=0,N=0,H=0,F=0,G=0;for(let te=U;te<=M;te++)for(let ne=x;ne<=P;ne++){let pe=v[te*I+ne];if(B+=pe,pe>=248&&D++,N++,ne>=1&&ne<I-1&&te>=1&&te<b-1){let Qe=v[te*I+ne-1]+v[te*I+ne+1]+v[(te-1)*I+ne]+v[(te+1)*I+ne]-4*pe;H+=Qe,F+=Qe*Qe,G++}}let J=N>0?B/N:0,q=N>0?D/N:0,z=G>0?H/G:0,X=G>0?Math.max(0,F/G-z*z):0,S=new Float64Array(I),T=new Float64Array(b);for(let te=0;te<b;te++)for(let ne=1;ne<I-1;ne++)S[ne]=S[ne]+Math.abs(v[te*I+ne+1]-v[te*I+ne-1]);for(let te=1;te<b-1;te++)for(let ne=0;ne<I;ne++)T[te]=T[te]+Math.abs(v[(te+1)*I+ne]-v[(te-1)*I+ne]);let K=xn(S,!0,L,i),$=xn(S,!1,W,i),_=xn(T,!0,Z,i),Y=xn(T,!1,R,i),j=($.position-K.position)/E,ie=(Y.position-_.position)/y,ee=ie>0?j/ie:0,re=((K.position+$.position)/2-(L+W)/2)/E,le=((_.position+Y.position)/2-(Z+R)/2)/y,se=Va(S),Ae=Va(T),be=se<=0||Ae<=0?0:Math.min(Math.min(K.value,$.value)/se,Math.min(_.value,Y.value)/Ae),Be=(te,ne)=>ne+(te+.5)*k,it=q,rt=0;{let te=($.position-K.position)*.06,ne=(Y.position-_.position)*.06,pe=p(Math.ceil(K.position+te),0,I-1),Qe=p(Math.floor($.position-te),0,I-1),lc=p(Math.ceil(_.position+ne),0,b-1),jo=p(Math.floor(Y.position-ne),0,b-1),Zo=0,sn=0,$o=0;for(let ot=lc;ot<=jo;ot++)for(let at=pe;at<=Qe;at++){sn++;let bt=v[ot*I+at];bt>=248&&Zo++;let uc=at+2<=Qe?v[ot*I+at+2]:bt,dc=ot+2<=jo?v[(ot+2)*I+at]:bt;(Math.abs(uc-bt)>=24||Math.abs(dc-bt)>=24)&&$o++}sn>=16&&(it=Zo/sn,rt=$o/sn)}return{brightness:J,glare:q,cardGlare:it,sharpness:X,fill:j,shape:ee,content:rt,offsetX:re,offsetY:le,edgeConfidence:be,box:{left:Be(K.position,g),right:Be($.position,g),top:Be(_.position,C),bottom:Be(Y.position,C)}}}function xn(e,t,n,i){let r=e.length,o=Math.max(1,Math.floor(r*.45)),a=t?1:Math.max(1,r-1-o),s=t?Math.min(r-2,o):r-2,A=a;for(let h=a;h<=s;h++)e[h]>e[A]&&(A=h);if(i>0&&i<1){let h=e[A]*i,u=A,f=Math.abs(A-n);for(let p=a;p<=s;p++){let g=e[p];if(g<h||g<(e[p-1]??0)||g<(e[p+1]??0))continue;let C=Math.abs(p-n);C<f&&(u=p,f=C)}A=u}let c=A>0?e[A-1]:0,l=e[A],m=A<r-1?e[A+1]:0,d=c+l+m;return{position:d>0?A+(m-c)/d:A,value:l}}function Va(e){if(e.length<3)return 0;let t=0;for(let n=1;n<e.length-1;n++)t+=e[n];return t/(e.length-2)}function mr(e){let t=e.box;return t===null||t.right-t.left<4||t.bottom-t.top<4?null:{topLeft:{x:t.left,y:t.top},topRight:{x:t.right,y:t.top},bottomRight:{x:t.right,y:t.bottom},bottomLeft:{x:t.left,y:t.bottom}}}function hr(e){let t=e!==null&&typeof e=="object"?e:{},n={...gt};for(let i of Object.keys(gt)){let r=t[i];typeof r=="number"&&Number.isFinite(r)&&r>=0&&r<=1e6&&(n[i]=r)}return n}var dt,Fe,gt,Rt,Dn=V(()=>{"use strict";dt=Object.freeze({brightness:0,glare:0,cardGlare:0,sharpness:0,fill:0,shape:0,content:0,offsetX:0,offsetY:0,edgeConfidence:0,box:null}),Fe=e=>Math.min(1,Math.max(0,e));gt=Object.freeze({fillMin:.82,fillMax:1.06,offsetMax:.06,glareMax:.025,sharpnessMin:180,edgeConfidenceMin:1.6,darkBrightness:70,lockMs:450,steadyMs:900,steadyFillMin:.45,steadyFillMax:1.3,steadyFillDelta:.06,steadyOffsetDelta:.04,steadyRefMs:100,edgePeakFrac:.4,shapeTolerance:.2,contentMin:.1});Rt=class{constructor(t=gt){this.t=t;this.goodSince=null;this.steadySince=null;this.last=null}reset(){this.goodSince=null,this.steadySince=null,this.last=null}tick(t,n){let i=this.t,r=i.shapeTolerance<=0||Math.abs(t.shape-1)<=i.shapeTolerance,o=t.edgeConfidence>=i.edgeConfidenceMin&&r&&t.content>=i.contentMin,a=t.fill>=i.fillMin&&t.fill<=i.fillMax,s=Math.abs(t.offsetX)<=i.offsetMax&&Math.abs(t.offsetY)<=i.offsetMax,A=t.cardGlare<=i.glareMax,c=t.sharpness>=i.sharpnessMin,l=this.last;this.last={fill:t.fill,offsetX:t.offsetX,offsetY:t.offsetY,at:n};let m=l!==null&&i.steadyRefMs>0?Math.min(3,Math.max(1,(n-l.at)/i.steadyRefMs)):1,d=o&&A&&c&&t.fill>=i.steadyFillMin&&t.fill<=i.steadyFillMax&&l!==null&&Math.abs(t.fill-l.fill)<=i.steadyFillDelta*m&&Math.abs(t.offsetX-l.offsetX)<=i.steadyOffsetDelta*m&&Math.abs(t.offsetY-l.offsetY)<=i.steadyOffsetDelta*m,h=o&&a&&s&&A&&c,u;if(o?A?t.fill<i.fillMin?u="too_small":t.fill>i.fillMax?u="too_big":c?s?u="locking":u="off_center":u="blurry":u="glare":u="no_card",h){if(d&&(this.steadySince??(this.steadySince=n)),this.goodSince??(this.goodSince=n),n-this.goodSince>=i.lockMs)return{detected:o,ready:!0,via:"good",blocker:"locking"};let f=this.steadySince!==null&&n-this.steadySince>=i.steadyMs;return{detected:o,ready:f,via:f?"steady":null,blocker:"locking"}}if(this.goodSince=null,d){this.steadySince??(this.steadySince=n);let f=n-this.steadySince>=i.steadyMs;return{detected:o,ready:f,via:f?"steady":null,blocker:f?"locking":"steadying"}}return this.steadySince=null,{detected:o,ready:!1,via:null,blocker:u}}}});function Uc(e,t){let n=e.lineBoxes;if(n.length===0)return{lineCount:0,detected:!1,fill:0,offsetX:0,offsetY:0,centers:[]};let i=Math.min(...n.map(s=>s[0])),r=Math.max(...n.map(s=>s[0]+s[2])),o=Math.min(...n.map(s=>s[1])),a=Math.max(...n.map(s=>s[1]+s[3]));return{lineCount:n.length,detected:n.length>=t.minLines,fill:r-i,offsetX:(i+r)/2-.5,offsetY:(o+a)/2-.5,centers:n.map(s=>[s[0]+s[2]/2,s[1]+s[3]/2])}}function Jc(e,t){if(e.centers.length===0||t.centers.length===0)return Number.POSITIVE_INFINITY;let n=0;for(let[i,r]of t.centers){let o=Number.POSITIVE_INFINITY;for(let[a,s]of e.centers)o=Math.min(o,Math.hypot(i-a,r-s));n+=o}return n/t.centers.length}var pr,vn,Ya=V(()=>{"use strict";pr=Object.freeze({minLines:4,fillMin:.55,fillMax:.98,offsetMax:.12,steadyFillDelta:.04,steadyOffsetDelta:.03,layoutShiftMax:.025,lineCountDelta:1,lockMs:600,steadyMs:900,minFrames:3});vn=class{constructor(t=pr){this.t=t;this.last=null;this.goodSince=null;this.steadySince=null;this.frames=0}offer(t,n,i={glareOk:!0,sharpOk:!0}){let r=this.t,o=Uc(t,r),a=this.last;this.last=o;let s=o.fill>=r.fillMin&&o.fill<=r.fillMax,A=Math.abs(o.offsetX)<=r.offsetMax&&Math.abs(o.offsetY)<=r.offsetMax,c=a!==null&&a.detected&&Math.abs(o.lineCount-a.lineCount)<=r.lineCountDelta&&Jc(a,o)<=r.layoutShiftMax,l=o.detected&&i.glareOk&&i.sharpOk&&s&&c&&a!==null&&Math.abs(o.fill-a.fill)<=r.steadyFillDelta&&Math.abs(o.offsetX-a.offsetX)<=r.steadyOffsetDelta&&Math.abs(o.offsetY-a.offsetY)<=r.steadyOffsetDelta,m=l&&A,d=o.detected?i.glareOk?o.fill<r.fillMin?"closer":o.fill>r.fillMax?"farther":A?i.sharpOk?void 0:"blurry":"center":"glare":void 0;return l?(this.frames++,this.steadySince??(this.steadySince=n),this.goodSince=m?this.goodSince??n:null,(this.goodSince!==null&&n-this.goodSince>=r.lockMs||n-this.steadySince>=r.steadyMs)&&this.frames>=r.minFrames?{state:"locked"}:{state:"locking",...d?{hint:d}:{}}):(this.goodSince=null,this.steadySince=null,this.frames=o.detected?1:0,{state:o.detected?"locking":"searching",...d?{hint:d}:{}})}reset(){this.last=null,this.goodSince=null,this.steadySince=null,this.frames=0}}});var Rn,Ka=V(()=>{"use strict";Rn=class{constructor(t=2){this.stableReads=t;this.last=null;this.run=0}offer(t){return t===null?(this.reset(),!1):(this.run=t===this.last?this.run+1:1,this.last=t,this.run>=this.stableReads)}reset(){this.last=null,this.run=0}}});function Yc(e){return e<=250?"fast":e<=600?"mid":"slow"}function Wa(e,t,n){let i=e.y+e.h*t,r=Math.min(n,e.y+e.h*1.05);return{x:e.x,y:i,w:e.w,h:Math.max(1,r-i)}}var _t,Tt,Vc,fr,mt,Lt=V(()=>{"use strict";Ya();Ka();_t=Object.freeze({...pr,minIntervalMs:150,maxWidthPx:480,detectorLimit:960,searchTimeoutMs:12e3}),Tt=Object.freeze({detectorLimit:960,bandMaxWidthPx:1280,minBandWidthPx:900,bandTop:.55,minIntervalMs:150,stableReads:2,profileReads:5,maxReadMs:1200,searchTimeoutMs:12e3}),Vc=(e,t,n)=>createImageBitmap(e,Math.round(t.x),Math.round(t.y),Math.max(1,Math.round(t.w)),Math.max(1,Math.round(t.h)),{resizeWidth:Math.max(1,Math.round(Math.min(t.w,n))),resizeQuality:"high"}),fr=(e,t)=>{if(e.length===0)return 0;let n=[...e].sort((i,r)=>i-r);return n[Math.min(n.length-1,Math.floor(n.length*t))]};mt=class{constructor(t){this.o=t;this.engine=null;this.gen=0;this.inFlight=!1;this.lastReadAt=Number.NEGATIVE_INFINITY;this.firstSeen=null;this.reads=0;this.times=[];this.mrzState={state:"searching"};this.lockState={state:"searching"};this.fallback=null;this.lockOff=!1;this.lockError=!1;this.fired=null;this.valid=null;this.faceMode="off";this.disabled=!1;this.crop=t.crop??Vc,this.mrzGate=new Rn(t.liveMrz?.stableReads??2),this.lockGate=new vn(t.textLock??_t)}setEngine(t){this.engine=t}get bandTop(){return this.o.liveMrz?.bandTop??Tt.bandTop}get hasEngine(){return this.engine!==null&&!this.disabled}reset(){this.gen++,this.inFlight=!1,this.lastReadAt=Number.NEGATIVE_INFINITY,this.firstSeen=null,this.reads=0,this.times=[],this.mrzGate.reset(),this.lockGate.reset(),this.mrzState={state:"searching"},this.lockState={state:"searching"},this.fallback=null,this.lockOff=!1,this.lockError=!1,this.fired=null,this.valid=null,this.faceMode="off"}rearmFace(){this.gen++,this.inFlight=!1,this.lastReadAt=Number.NEGATIVE_INFINITY,this.mrzGate.reset(),this.lockGate.reset(),this.fired=null,this.valid=null,this.fallback===null&&(this.mrzState={state:"searching"}),this.lockOff||(this.lockState={state:"searching"})}liveCapture(){return this.fired?.via==="live_mrz"?this.valid:null}modeFor(t){return this.engine===null||this.disabled?"off":t.mrzFace&&this.o.liveMrz!==null&&this.fallback===null?"live_mrz":this.o.textLock!==null&&!this.lockOff?"text_lock":"off"}tick(t){let n=this.modeFor(t);return n!=="off"&&(this.faceMode=n),this.fired!==null?{ready:!0,via:this.fired.via,suspendQuality:this.fired.via==="live_mrz",mode:n,...this.states()}:n==="live_mrz"?this.liveTick(t,this.o.liveMrz):n==="text_lock"?this.lockTick(t,this.o.textLock):{ready:!1,suspendQuality:!1,mode:n,...this.states()}}states(){return{...this.faceMode==="live_mrz"||this.fallback!==null?{mrz:this.fallback!==null?{state:"fallback",reason:this.fallback}:this.mrzState}:{},...this.faceMode==="text_lock"?{lock:this.lockState}:{}}}canRead(t,n){let i=this.engine;return i!==null&&!this.inFlight&&!i.busy&&t-this.lastReadAt>=n}fall(t){this.fallback=t,this.mrzGate.reset()}liveTick(t,n){let i=()=>this.fallback!==null?{ready:!1,suspendQuality:!1,mode:"live_mrz",mrz:{state:"fallback",reason:this.fallback}}:{ready:!1,suspendQuality:!0,mode:"live_mrz",mrz:this.mrzState};if(!t.present||t.band===null)return this.mrzGate.reset(),this.mrzState={state:"searching"},i();if(this.firstSeen??(this.firstSeen=t.atMs),t.atMs-this.firstSeen>n.searchTimeoutMs)return this.fall("timeout"),i();if(t.band.w<n.minBandWidthPx)return t.card!==null&&t.card.w<n.minBandWidthPx?(this.fall("unsupported"),i()):(this.mrzState={state:"reading",coach:t.portrait?"turnSideways":"moveCloser"},{ready:!1,suspendQuality:!1,mode:"live_mrz",mrz:this.mrzState});if(!this.canRead(t.atMs,n.minIntervalMs))return i();this.inFlight=!0,this.lastReadAt=t.atMs;let r=this.gen,o=this.engine,a=t.glareOk?t.sharpOk?void 0:"holdStill":"glare";return this.crop(t.video,t.band,n.bandMaxWidthPx).then(s=>o.bandRead(s,n.detectorLimit)).then(s=>{if(r===this.gen){if(this.reads++,this.times.push(s.ms),this.times.length>8&&this.times.shift(),this.reads>=n.profileReads&&fr(this.times,.5)>n.maxReadMs)return this.fall("slow");if(this.mrzGate.offer(s.valid?s.digest??null:null)&&s.format&&s.digest){this.valid={format:s.format,...s.documentCode!==void 0?{documentCode:s.documentCode}:{},digest:s.digest,lineCount:s.lineCount,framesToValid:this.reads,msToValid:Math.round(t.atMs-(this.firstSeen??t.atMs))},this.mrzState={state:"valid",format:s.format},this.fired={via:"live_mrz",at:t.atMs};return}this.mrzState={state:"reading",...a?{coach:a}:{},...s.format?{format:s.format}:{}}}}).catch(()=>{r===this.gen&&this.fall("error")}).finally(()=>{r===this.gen&&(this.inFlight=!1)}),i()}lockTick(t,n){let i=()=>({ready:!1,suspendQuality:!1,mode:"text_lock",lock:this.lockState,...this.fallback!==null?{mrz:{state:"fallback",reason:this.fallback}}:{}});if(!t.present||t.card===null)return this.lockGate.reset(),this.lockState={state:"searching"},i();if(this.firstSeen??(this.firstSeen=t.atMs),t.atMs-this.firstSeen>n.searchTimeoutMs)return this.lockOff=!0,i();if(!this.canRead(t.atMs,n.minIntervalMs))return i();this.inFlight=!0,this.lastReadAt=t.atMs;let r=this.gen,o=this.engine,a={glareOk:t.glareOk,sharpOk:t.sharpOk};return this.crop(t.video,t.card,n.maxWidthPx).then(s=>o.layoutRead(s,n.detectorLimit)).then(s=>{if(r!==this.gen)return;this.reads++,this.times.push(s.ms),this.times.length>8&&this.times.shift();let A=this.lockGate.offer(s,t.atMs,a);this.lockState=A.state==="locked"?{state:"locked"}:{state:A.state,...A.hint?{hint:A.hint}:{}},A.state==="locked"&&(this.fired={via:"text_lock",at:t.atMs})}).catch(()=>{r===this.gen&&(this.lockOff=!0,this.lockError=!0)}).finally(()=>{r===this.gen&&(this.inFlight=!1)}),i()}disable(){this.disabled=!0,this.reset()}report(t,n,i){let r=this.faceMode;if(r==="off")return null;let o=fr(this.times,.5),a={capture:t,mode:r,reads:this.reads,...this.times.length>0?{readP50Ms:Math.round(o),readP90Ms:Math.round(fr(this.times,.9)),deviceClass:Yc(o)}:{}};return r==="live_mrz"?this.fired?.via==="live_mrz"&&this.valid!==null&&n==="live_mrz"?{...a,outcome:"valid",format:this.valid.format,framesToValid:this.valid.framesToValid,msToValid:this.valid.msToValid}:this.fallback!==null?{...a,outcome:this.fallback}:{...a,outcome:i-(this.firstSeen??i)>=(this.o.liveMrz?.searchTimeoutMs??1/0)?"timeout":"off"}:this.fired?.via==="text_lock"?{...a,outcome:"locked",framesToLock:Math.max(1,this.reads),msToLock:Math.round(this.fired.at-(this.firstSeen??this.fired.at))}:{...a,outcome:this.lockError?"error":this.lockOff?"timeout":"off"}}}});var qa={};ue(qa,{default:()=>Wc,initMlDetector:()=>Kc});function Kc(){throw new Error("scanic ML detector is not vendored (classical pipeline only)")}var Wc,za=V(()=>{"use strict";Wc={}});function Xc(e,t={}){let n=t.width||Math.sqrt(e.length),i=t.height||e.length/n,r=t.mode!==void 0?t.mode:1,o=t.method!==void 0?t.method:2,a=t.minArea||qc,s=n+2,A=i+2,c=new Int32Array(s*A);for(let h=0;h<i;h++)for(let u=0;u<n;u++)e[h*n+u]>0&&(c[(h+1)*s+(u+1)]=1);let l=[],m=2;for(let h=1;h<=i;h++)for(let u=1;u<=n;u++){let f=c[h*s+u],p=c[h*s+(u-1)],g=null,C=!1,w=-1;if(f===1&&p===0?(C=!0,g={x:u,y:h},w=2):f===0&&p>=1&&p!==-1&&p===1&&(C=!1,g={x:u-1,y:h},w=6),g){if(r===0&&!C){c[g.y*s+g.x]=-1;continue}let Q=m++,k=jc(c,s,A,g,w,Q);if(k&&k.length>0){let I=k;o===2&&(I=Zc(k));let b=I.map(v=>({x:v.x-1,y:v.y-1}));if(b.length>=(o===2?4:zc)){let v={id:Q,points:b,isOuter:C};l.push(v)}}else c[g.y*s+g.x]===1&&(c[g.y*s+g.x]=Q)}}l.forEach(h=>{h.area=(function(u){let f=0,p=u.length;if(p<3)return 0;for(let g=0;g<p;g++){let C=(g+1)%p;f+=u[g].x*u[C].y,f-=u[C].x*u[g].y}return Math.abs(f)/2})(h.points),h.boundingBox=(function(u){if(u.length===0)return{minX:0,minY:0,maxX:0,maxY:0};let f=u[0].x,p=u[0].y,g=u[0].x,C=u[0].y;for(let w=1;w<u.length;w++){let Q=u[w];f=Math.min(f,Q.x),p=Math.min(p,Q.y),g=Math.max(g,Q.x),C=Math.max(C,Q.y)}return{minX:f,minY:p,maxX:g,maxY:C}})(h.points)});let d=l.filter(h=>h.area>=a);return d.sort((h,u)=>u.area-h.area),t.debug&&(t.debug.labels=c,t.debug.rawContours=l,t.debug.finalContours=d),d}function jc(e,t,n,i,r,o){let a=[],s=new Set,A=i.x,c=i.y,l=A,m=c,d=-1;e[m*t+l]=o;let h=0,u=t*n,f=[0,1,1,1,0,-1,-1,-1],p=[-1,-1,0,1,1,1,0,-1];for(;h++<u;){let g;if(d===-1){let I=!1;for(let b=0;b<8;b++){g=r+b&7;let v=A+f[g],O=c+p[g];if(v>=0&&v<t&&O>=0&&O<n&&e[O*t+v]>0){I=!0;break}}if(!I)return null}else g=d+2&7;let C=-1,w=-1;for(let I=0;I<8;I++){let b=g+I&7,v=A+f[b],O=c+p[b];if(v>=0&&v<t&&O>=0&&O<n&&e[O*t+v]>0){C=v,w=O,d=b+4&7;break}}if(C===-1){a.length===0&&a.push({x:A,y:c});break}let Q=c*t+A;if(s.has(Q))return a;a.push({x:A,y:c}),s.add(Q);let k=w*t+C;if(e[k]===1&&(e[k]=o),A=C,c=w,A===l&&c===m)break}return h>=u?null:a}function Zc(e){let t=e.length;if(t<=2)return e;let n=[],i=e[t-1],r=e[0],o=i,a=r,s=e[1],A=a.x-o.x,c=a.y-o.y,l=s.x-a.x,m=s.y-a.y;A*m!==c*l&&n.push(a);for(let d=1;d<t-1;d++)o=e[d-1],a=e[d],s=e[d+1],A=a.x-o.x,c=a.y-o.y,l=s.x-a.x,m=s.y-a.y,A*m!==c*l&&n.push(a);if(o=e[t-2],a=i,s=r,A=a.x-o.x,c=a.y-o.y,l=s.x-a.x,m=s.y-a.y,A*m!==c*l&&n.push(a),n.length===0){if(t===1)return[e[0]];if(t===2)return e;let d=0,h=1,u=r.x,f=r.y;for(let p=1;p<t;p++){let g=e[p],C=g.x-u,w=g.y-f,Q=C*C+w*w;Q>d&&(d=Q,h=p)}return[r,e[h]]}return n}function yr(e,t=1){if(e.length<=2)return e;let n=0,i=0,r=e[0],o=e[e.length-1];for(let a=1;a<e.length-1;a++){let s=$c(e[a],r,o);s>n&&(n=s,i=a)}if(n>t){let a=yr(e.slice(0,i+1),t),s=yr(e.slice(i),t);return a.slice(0,-1).concat(s)}return[r,o]}function $c(e,t,n){let i=n.x-t.x,r=n.y-t.y,o=i*i+r*r;if(o===0)return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2));let a=((e.x-t.x)*i+(e.y-t.y)*r)/o,s,A;a<0?(s=t.x,A=t.y):a>1?(s=n.x,A=n.y):(s=t.x+a*i,A=t.y+a*r);let c=e.x-s,l=e.y-A;return Math.sqrt(c*c+l*l)}function ns(e,t=.02){return yr(e,t*(function(n){let i=0,r=n.length;if(r<2)return 0;for(let o=0;o<r;o++){let a=(o+1)%r,s=n[o].x-n[a].x,A=n[o].y-n[a].y;i+=Math.sqrt(s*s+A*A)}return i})(e))}function Er(e,t){return Math.hypot(t.x-e.x,t.y-e.y)}function Xa(e){let t=0,n=0;for(let i of e)t+=i.x,n+=i.y;return{x:t/e.length,y:n/e.length}}function el(e,t={}){if(!e||!e.points||e.points.length<4)return null;let n=t.epsilon||.02,i=(function(o,a){if(!o||o.length<4)return null;let s=[a,1.3*a,1.6*a,2*a],A=new Set;for(let c of s){let l=Math.min(.12,c),m=l.toFixed(4);if(A.has(m))continue;A.add(m);let d=tl(ns(o,l));if(d&&d.length===4)return d}return null})(e.points,n),r;return i&&i.length===4?r=(function(o){if(o.length!==4)return null;let a=Xa(o),s=[...o].sort((m,d)=>Math.atan2(m.y-a.y,m.x-a.x)-Math.atan2(d.y-a.y,d.x-a.x)),A=1/0,c=0;for(let m=0;m<4;m++){let d=s[m].x+s[m].y;d<A&&(A=d,c=m)}let l=[s[c],s[(c+1)%4],s[(c+2)%4],s[(c+3)%4]];return{topLeft:l[0],topRight:l[1],bottomRight:l[2],bottomLeft:l[3]}})(i):(r=(function(o){if(!o||o.length<4)return null;let a=Xa(o),s=null,A=null,c=null,l=null,m=0,d=0,h=0,u=0;for(let f of o){let p=Er(f,a);f.x<a.x&&f.y<a.y?p>m&&(s=f,m=p):f.x>a.x&&f.y<a.y?p>d&&(A=f,d=p):f.x>a.x&&f.y>a.y?p>h&&(c=f,h=p):f.x<a.x&&f.y>a.y&&p>u&&(l=f,u=p)}return s&&A&&c&&l?{topLeft:s,topRight:A,bottomRight:c,bottomLeft:l}:null})(e.points),r&&r.topLeft&&r.topRight&&r.bottomRight&&r.bottomLeft||(r=(function(o){if(!o||o.length===0)return null;let a=o[0],s=o[0],A=o[0],c=o[0],l=a.x+a.y,m=s.x-s.y,d=A.x+A.y,h=c.x-c.y;for(let u=1;u<o.length;u++){let f=o[u],p=f.x+f.y,g=f.x-f.y;p<l&&(l=p,a=f),p>d&&(d=p,A=f),g>m&&(m=g,s=f),g<h&&(h=g,c=f)}return{topLeft:a,topRight:s,bottomRight:A,bottomLeft:c}})(e.points))),r&&r.topLeft&&r.topRight&&r.bottomRight&&r.bottomLeft?r:null}function tl(e){if(!e||e.length<4)return null;if(e.length===4)return e;if(e.length>8)return null;let t=(function(n,i){if(!n||n.length===0)return[];let r=[];for(let o of n)(r.length===0||Er(o,r[r.length-1])>i)&&r.push(o);return r.length>2&&Er(r[0],r[r.length-1])<=i&&r.pop(),r})(e,6);return t.length===4?t:(t.length,null)}function is(){return Nt!==null&&Nt.byteLength!==0||(Nt=new Uint8Array(ae.memory.buffer)),Nt}function Ir(e,t){let n=t(1*e.length,1)>>>0;return is().set(e,n/1),xe=e.length,n}function Tn(e,t){return e>>>=0,is().subarray(e/1,e/1+t)}function rs(){return Pt!==null&&Pt.byteLength!==0||(Pt=new Float32Array(ae.memory.buffer)),Pt}function nl(e,t,n,i,r){let o=(function(c,l){let m=l(4*c.length,4)>>>0;return rs().set(c,m/4),xe=c.length,m})(e,ae.__wbindgen_malloc),a=xe,s=ae.hysteresis_thresholding(o,a,t,n,i,r);var A=Tn(s[0],s[1]).slice();return ae.__wbindgen_free(s[0],1*s[1],1),A}function ja(e,t){let n=t(2*e.length,2)>>>0;return(Gt!==null&&Gt.byteLength!==0||(Gt=new Uint16Array(ae.memory.buffer)),Gt).set(e,n/2),xe=e.length,n}function il(e,t,n,i,r){let o=ja(e,ae.__wbindgen_malloc),a=xe,s=ja(t,ae.__wbindgen_malloc),A=xe,c=ae.non_maximum_suppression(o,a,s,A,n,i,r);var l,m,d=(l=c[0],m=c[1],l>>>=0,rs().subarray(l/4,l/4+m)).slice();return ae.__wbindgen_free(c[0],4*c[1],4),d}async function os(e){if(ae!==void 0)return ae;if(e!==void 0&&Object.getPrototypeOf(e)===Object.prototype&&({module_or_path:e}=e),e===void 0)throw new Error("scanic: WASM module bytes must be passed to init().");let t=(function(){let r={wbg:{}};return r.wbg.__wbindgen_init_externref_table=function(){let o=ae.__wbindgen_export_0,a=o.grow(4);o.set(0,void 0),o.set(a+0,void 0),o.set(a+1,null),o.set(a+2,!0),o.set(a+3,!1)},r})();(typeof e=="string"||typeof Request=="function"&&e instanceof Request||typeof URL=="function"&&e instanceof URL)&&(e=fetch(e));let{instance:n,module:i}=await(async function(r,o){if(typeof Response=="function"&&r instanceof Response){if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(r,o)}catch(s){if(r.headers.get("Content-Type")=="application/wasm")throw s}let a=await r.arrayBuffer();return await WebAssembly.instantiate(a,o)}{let a=await WebAssembly.instantiate(r,o);return a instanceof WebAssembly.Instance?{instance:a,module:r}:a}})(await e,t);return(function(r,o){return ae=r.exports,os.__wbindgen_wasm_module=o,Pt=null,Gt=null,Nt=null,ae.__wbindgen_start(),ae})(n,i)}function rl(e){if(typeof atob=="function"){let t=atob(e),n=new Uint8Array(t.length);for(let i=0;i<t.length;i++)n[i]=t.charCodeAt(i);return n}return Uint8Array.from(Buffer.from(e,"base64"))}async function ol(){if(!(function(){if(Cr!==null)return Cr;let e=!1;if(typeof WebAssembly=="object"&&typeof WebAssembly.validate=="function"){let t=new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]),n=new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,111,3,2,1,0,10,6,1,4,0,208,111,11]);try{e=WebAssembly.validate(t)&&WebAssembly.validate(n)}catch{e=!1}}return Cr=e,e})())throw new Error("scanic: WebAssembly features required by the WASM module (reference-types, SIMD) are unavailable in this engine; using the JavaScript fallback.");return await os({module_or_path:rl("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JAAgAiABIAJqIgFLBEBBAEEAEC0ACyADQQRqIAAoAgAiAiAAKAIEQQggASACQQF0IgIgASACSxsiASABQQhNGyIBQQFBARARIAMoAgRBAUYEQCADKAIIIAMoAgwQLQALIAMoAgghAiAAIAE2AgAgACACNgIEIANBEGokAAt5AQF/IwBBIGsiAiQAAn8gACgCAEGAgICAeEcEQCABIAAoAgQgACgCCBAwDAELIAJBEGogACgCDCgCACIAQQhqKQIANwMAIAJBGGogAEEQaikCADcDACACIAApAgA3AwggASgCACABKAIEIAJBCGoQBwsgAkEgaiQAC2kBA38jAEEQayIBJAAgAUEEaiAAKAIAIgIgACgCBEEEIAJBAXQiAiACQQRNGyICQQRBBBARIAEoAgRBAUYEQCABKAIIIAEoAgwQLQALIAEoAgghAyAAIAI2AgAgACADNgIEIAFBEGokAAtpAQN/IwBBEGsiASQAIAFBBGogACgCACICIAAoAgRBBCACQQF0IgIgAkEETRsiAkEEQQgQESABKAIEQQFGBEAgASgCCCABKAIMEC0ACyABKAIIIQMgACACNgIAIAAgAzYCBCABQRBqJAALaQEDfyMAQRBrIgEkACABQQRqIAAoAgAiAiAAKAIEQQQgAkEBdCICIAJBBE0bIgJBAkECEBEgASgCBEEBRgRAIAEoAgggASgCDBAtAAsgASgCCCEDIAAgAjYCACAAIAM2AgQgAUEQaiQACxIAIwBBMGsiACQAIABBMGokAAtoAgF/AX4jAEEwayIDJAAgAyABNgIEIAMgADYCACADQQI2AgwgA0Hkl8AANgIIIANCAjcCFCADQoCAgIAwIgQgA62ENwMoIAMgBCADQQRqrYQ3AyAgAyADQSBqNgIQIANBCGogAhAmAAtHAQF/IAAoAgAgACgCCCIDayACSQRAIAAgAyACEBIgACgCCCEDCyACBEAgACgCBCADaiABIAL8CgAACyAAIAIgA2o2AghBAAtEAQJ/IAEoAgQhAiABKAIAIQNBCEEEEDUiAUUEQEEEQQgQOQALIAEgAjYCBCABIAM2AgAgAEHcksAANgIEIAAgATYCAAvGAgACQCAAIAJNBEAgACABTSABIAJLcg0BIwBBMGsiAiQAIAIgATYCBCACIAA2AgAgAkECNgIMIAJB2JbAADYCCCACQgI3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IAAAABwAEAAMAAAAEgAAABcAAAAcABAADAAAABcAAAAZAAAAHAAQAAwAAAAUAAAAGQAAABwAEAAMAAAAUQAAAB4AAAAcABAADAAAAFIAAAAeAAAATGF6eSBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVkAAA8CBAAKgAAAEgBEABaAAAACAMAABkAAAByZWVudHJhbnQgaW5pdAAAgAgQAA4AAABIARAAWgAAAHoCAAANAAAAfP2LMlfmV/kC30S/40jnr21dy9YsUOtjeEGmV3Ebi7ltZW1vcnkgYWxsb2NhdGlvbiBvZiAgYnl0ZXMgZmFpbGVkAADICBAAFQAAAN0IEAANAAAALwEQABgAAABkAQAACQAAAAQAAAAMAAAABAAAAAUAAAAGAAAABwAAAAAAAAAIAAAABAAAAAgAAAAJAAAACgAAAAsAAAAMAAAAEAAAAAQAAAANAAAADgAAAA8AAAAQAAAAAAAAAAgAAAAEAAAAEQAAAGFzc2VydGlvbiBmYWlsZWQ6IHBzaXplID49IHNpemUgKyBtaW5fb3ZlcmhlYWQAAAQBEAAqAAAAsQQAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA8PSBzaXplICsgbWF4X292ZXJoZWFkAAAEARAAKgAAALcEAAANAAAABAAAAAwAAAAEAAAAEgAAAGNhcGFjaXR5IG92ZXJmbG93AAAA/AkQABEAAADjABAAIAAAABwAAAAFAAAAMDAwMTAyMDMwNDA1MDYwNzA4MDkxMDExMTIxMzE0MTUxNjE3MTgxOTIwMjEyMjIzMjQyNTI2MjcyODI5MzAzMTMyMzMzNDM1MzYzNzM4Mzk0MDQxNDI0MzQ0NDU0NjQ3NDg0OTUwNTE1MjUzNTQ1NTU2NTc1ODU5NjA2MTYyNjM2NDY1NjY2NzY4Njk3MDcxNzI3Mzc0NzU3Njc3Nzg3OTgwODE4MjgzODQ4NTg2ODc4ODg5OTA5MTkyOTM5NDk1OTY5Nzk4OTlyYW5nZSBlbmQgaW5kZXggIG91dCBvZiByYW5nZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoIAAA8AoQABAAAAAACxAAIgAAAHNsaWNlIGluZGV4IHN0YXJ0cyBhdCAgYnV0IGVuZHMgYXQgADQLEAAWAAAASgsQAA0AAAByYW5nZSBzdGFydCBpbmRleCAAAGgLEAASAAAAAAsQACIAAABhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvAAAAjAsQABkAAABpbmRleCBvdXQgb2YgYm91bmRzOiB0aGUgbGVuIGlzICBidXQgdGhlIGluZGV4IGlzIAAAsAsQACAAAADQCxAAEgAAAAAAAD8AAAC/AEGUmMAACwEBAHwJcHJvZHVjZXJzAghsYW5ndWFnZQEEUnVzdAAMcHJvY2Vzc2VkLWJ5AwVydXN0Yx0xLjkyLjAgKGRlZDVjMDZjZiAyMDI1LTEyLTA4KQZ3YWxydXMGMC4yMy4zDHdhc20tYmluZGdlbhMwLjIuMTAwICgyNDA1ZWMyYjQpAHQPdGFyZ2V0X2ZlYXR1cmVzBysPbXV0YWJsZS1nbG9iYWxzKxNub250cmFwcGluZy1mcHRvaW50KwdzaW1kMTI4KwtidWxrLW1lbW9yeSsIc2lnbi1leHQrD3JlZmVyZW5jZS10eXBlcysKbXVsdGl2YWx1ZQ==")})}function Ft(){return _n||(_n=ol().catch(e=>{throw _n=null,e})),_n}function al(e,t,n,i=5,r=0){r===0&&(r=.3*(.5*(i-1)-1)+.8);let o=Math.floor(i/2),a=(function(c,l){let m=new Float32Array(c),d=Math.floor(c/2),h=0;for(let u=0;u<c;u++){let f=u-d;m[u]=Math.exp(-f*f/(2*l*l)),h+=m[u]}for(let u=0;u<c;u++)m[u]/=h;return m})(i,r),s=new Uint8ClampedArray(t*n),A=new Uint8ClampedArray(t*n);for(let c=0;c<n;c++){let l=c*t;for(let m=0;m<t;m++){let d=0;for(let h=-o;h<=o;h++)d+=e[l+Math.min(t-1,Math.max(0,m+h))]*a[o+h];s[l+m]=d}}for(let c=0;c<t;c++)for(let l=0;l<n;l++){let m=0;for(let d=-o;d<=o;d++)m+=s[Math.min(n-1,Math.max(0,l+d))*t+c]*a[o+d];A[l*t+c]=Math.round(m)}return A}function $a(e,t,n,i,r){let o=new Uint8Array(t*n),a=[];for(let c=1;c<n-1;c++)for(let l=1;l<t-1;l++){let m=c*t+l,d=e[m];d>=r?(o[m]=2,a.push({x:l,y:c})):o[m]=d>=i?0:1}for(let c=0;c<t;c++)o[c]=1,o[(n-1)*t+c]=1;for(let c=1;c<n-1;c++)o[c*t]=1,o[c*t+t-1]=1;let s=[-1,0,1,-1,1,-1,0,1],A=[-1,-1,-1,0,0,1,1,1];for(;a.length>0;){let{x:c,y:l}=a.pop();for(let m=0;m<8;m++){let d=c+s[m],h=l+A[m],u=h*t+d;o[u]===0&&(o[u]=2,a.push({x:d,y:h}))}}return o}async function sl(e,t={}){let n=!(!t.debug||t.debug._timingsOnly),i=[],r=performance.now(),o,a,s;if(t.skipGrayscale)o=t.width,a=t.height,s=e,n&&(t.debug.grayscale=s);else{o=e.width,a=e.height;let R=performance.now();s=(function(y){let{width:x,height:P,data:U}=y,M=new Uint8ClampedArray(x*P);for(let B=0,D=0;B<U.length;B+=4,D++)M[D]=54*U[B]+183*U[B+1]+19*U[B+2]>>8;return M})(e);let E=performance.now();i.push({step:"Grayscale",ms:(E-R).toFixed(2)}),n&&(t.debug.grayscale=s)}let A=t.lowThreshold!==void 0?t.lowThreshold:null,c=t.highThreshold!==void 0?t.highThreshold:null;if(A===null||c===null){let E=new Uint32Array(1024),y=0;for(let M=1;M<a-1;M++)for(let B=1;B<o-1;B++){let D=M*o+B,N=-s[D-o-1]+s[D-o+1]-2*s[D-1]+2*s[D+1]-s[D+o-1]+s[D+o+1],H=-s[D-o-1]-2*s[D-o]-s[D-o+1]+s[D+o-1]+2*s[D+o]+s[D+o+1],F=Math.abs(N)+Math.abs(H);F>=1024&&(F=1023),F>0&&(E[F]++,y++)}let x=Math.round(.7*y),P=0,U=75;for(let M=1;M<1024;M++)if(P+=E[M],P>=x){U=M;break}A===null&&(A=Math.max(5,Math.round(.5*U))),c===null&&(c=Math.min(500,Math.round(1.5*U)))}let l=t.kernelSize||5,m=t.sigma||0,d=t.L2gradient!==void 0&&t.L2gradient,h=t.applyDilation===void 0||t.applyDilation,u=t.dilationKernelSize||5,f=t.useWasmHysteresis!==void 0&&t.useWasmHysteresis,p=t.useWasmFullCanny!==void 0&&t.useWasmFullCanny;if(A>=c&&([A,c]=[c,A]),p)try{await Ft();let R=performance.now(),E=new Uint8ClampedArray((function(P,U,M,B,D,N,H,F,G,J){let q=Ir(P,ae.__wbindgen_malloc),z=xe,X=ae.canny_edge_detector_full(q,z,U,M,B,D,N,H,F,G,J);var S=Tn(X[0],X[1]).slice();return ae.__wbindgen_free(X[0],1*X[1],1),S})(s,o,a,A,c,l,m,d,h,u)),y=(performance.now()-R).toFixed(2);i.push({step:"Edge Processing (WASM)",ms:y}),n&&(t.debug.finalEdges=E),t.debug?t.debug.timings=i:t.debug={timings:i};let x=performance.now();return i.unshift({step:"Edge Detection Total",ms:(x-r).toFixed(2)}),E}catch(R){Za||(Za=!0,R instanceof Error?R.message:String(R))}let g,C,w,Q,k,I;g=performance.now();try{await Ft(),w=(function(R,E,y,x,P){let U=Ir(R,ae.__wbindgen_malloc),M=xe,B=ae.blur(U,M,E,y,x,P);var D=Tn(B[0],B[1]).slice();return ae.__wbindgen_free(B[0],1*B[1],1),D})(s,o,a,l,m)}catch{w=al(s,o,a,l,m)}C=performance.now(),i.push({step:"Gaussian Blur",ms:(C-g).toFixed(2)}),n&&(t.debug.blurred=w),g=performance.now();{let R=(function(E,y,x){let P=new Int16Array(y*x),U=new Int16Array(y*x);for(let M=1;M<x-1;M++){let B=M*y,D=(M-1)*y,N=(M+1)*y;for(let H=1;H<y-1;H++){let F=B+H,G=E[D+H-1],J=E[D+H],q=E[D+H+1],z=E[B+H-1],X=E[B+H+1],S=E[N+H-1],T=E[N+H],K=E[N+H+1],$=q-G+2*(X-z)+(K-S),_=S+2*T+K-(G+2*J+q);P[F]=$,U[F]=_}}return{dx:P,dy:U}})(w,o,a);Q=R.dx,k=R.dy}C=performance.now(),i.push({step:"Gradients",ms:(C-g).toFixed(2)}),g=performance.now();try{await Ft(),I=await il(Q,k,o,a,d)}catch{I=(function(R,E,y,x,P){let U=new Float32Array(y*x),M=new Float32Array(y*x);for(let B=0;B<R.length;B++){let D=R[B],N=E[B];U[B]=P?Math.sqrt(D*D+N*N):Math.abs(D)+Math.abs(N)}for(let B=1;B<x-1;B++)for(let D=1;D<y-1;D++){let N=B*y+D,H=U[N];if(H===0){M[N]=0;continue}let F=R[N],G=E[N],J=0,q=0,z=Math.abs(F),X=Math.abs(G);if(X>2.4142*z)J=U[N-y],q=U[N+y];else if(z>2.4142*X)J=U[N-1],q=U[N+1];else{let S=(F^G)<0?-1:1;G>0?(J=U[(B-1)*y+(D-S)],q=U[(B+1)*y+(D+S)]):(J=U[(B+1)*y+(D-S)],q=U[(B-1)*y+(D+S)]),F>0&&G>0||F<0&&G<0?(J=U[(B-1)*y+(D+1)],q=U[(B+1)*y+(D-1)]):(J=U[(B-1)*y+(D-1)],q=U[(B+1)*y+(D+1)])}M[N]=H>=J&&H>=q?H:0}return M})(Q,k,o,a,d)}C=performance.now(),i.push({step:"Non-Max Suppression",ms:(C-g).toFixed(2)}),g=performance.now();let b=d?A*A:A,v=d?c*c:c,O;if(f)try{await Ft(),O=nl(I,o,a,b,v)}catch{O=$a(I,o,a,b,v)}else O=$a(I,o,a,b,v);C=performance.now(),i.push({step:"Hysteresis",ms:(C-g).toFixed(2)}),g=performance.now();let L=new Uint8ClampedArray(o*a);for(let R=0;R<O.length;R++)L[R]=O[R]===2?255:0;C=performance.now(),i.push({step:"Binary Image",ms:(C-g).toFixed(2)}),g=performance.now();let W=L;if(h)try{await Ft(),W=(function(R,E,y,x){let P=Ir(R,ae.__wbindgen_malloc),U=xe,M=ae.dilate(P,U,E,y,x);var B=Tn(M[0],M[1]).slice();return ae.__wbindgen_free(M[0],1*M[1],1),B})(L,o,a,u)}catch{W=(function(R,E,y,x=5){let P=Math.floor(x/2),U=new Uint8ClampedArray(E*y),M=new Uint8ClampedArray(E*y);for(let B=0;B<y;B++){let D=B*E;for(let N=0;N<E;N++){let H=0;for(let F=-P;F<=P;F++){let G=N+F;if(G>=0&&G<E){let J=R[D+G];J>H&&(H=J)}}U[D+N]=H}}for(let B=0;B<E;B++)for(let D=0;D<y;D++){let N=0;for(let H=-P;H<=P;H++){let F=D+H;if(F>=0&&F<y){let G=U[F*E+B];G>N&&(N=G)}}M[D*E+B]=N}return M})(L,o,a,u)}if(C=performance.now(),i.push({step:"Dilation",ms:(C-g).toFixed(2)}),n){t.debug.dx=Q,t.debug.dy=k;let R=new Float32Array(o*a);for(let E=0;E<Q.length;E++){let y=Q[E],x=k[E];R[E]=d?Math.sqrt(y*y+x*x):Math.abs(y)+Math.abs(x)}t.debug.magnitude=R,t.debug.suppressed=I,t.debug.edgeMap=O,t.debug.cannyEdges=L,t.debug.finalEdges=W}t.debug?t.debug.timings=i:t.debug||(t.debug={timings:i});let Z=performance.now();return i.unshift({step:"Edge Detection Total",ms:(Z-r).toFixed(2)}),W}function Ot(e){return e<=0?0:e>=1?1:e}function Ht(e,t){return Math.hypot(e.x-t.x,e.y-t.y)}function es(e){return[Ht(e.topLeft,e.topRight),Ht(e.topRight,e.bottomRight),Ht(e.bottomRight,e.bottomLeft),Ht(e.bottomLeft,e.topLeft)]}function Al(e){let t=(function(i){let r=[i.topLeft,i.topRight,i.bottomRight,i.bottomLeft],o=[];for(let a=0;a<r.length;a++){let s=r[(a+r.length-1)%r.length],A=r[a],c=r[(a+1)%r.length],l=s.x-A.x,m=s.y-A.y,d=c.x-A.x,h=c.y-A.y,u=l*d+m*h,f=Math.max(1e-6,Math.hypot(l,m)*Math.hypot(d,h)),p=Math.max(-1,Math.min(1,u/f));o.push(180*Math.acos(p)/Math.PI)}return o})(e),n=0;for(let i of t)n+=Ot(1-Math.abs(i-90)/55);return n/Math.max(1,t.length)}function ts(e,t){let n=Number(t.isValid)-Number(e.isValid);if(n!==0)return n;let i=t.confidence-e.confidence;if(!(Math.abs(i)<.015)&&i!==0)return i;let r=Math.abs((e.approxCount??99)-4)-Math.abs((t.approxCount??99)-4);if(r!==0)return r;let o=(t.rightAngleScore??0)-(e.rightAngleScore??0);if(Math.abs(o)>1e-6)return o;let a=Math.abs(1-(e.contourFitRatio??1))-Math.abs(1-(t.contourFitRatio??1));return Math.abs(a)>1e-6?a:i||t.score-e.score||t.coverageRatio-e.coverageRatio||t.area-e.area}function cl(e,t,n,i,r={}){let o=r.epsilon||.02,a=ns(e.points,o).length,s=el(e,{epsilon:o});if(!s)return{contour:e,corners:null,score:0,confidence:0,isValid:!1,area:e.area||0,fillRatio:0,coverageRatio:0,cornersArea:0,approxCount:a,convex:!1,edgeSupport:0,aspectRatio:1/0,minSide:0,rightAngleScore:0,oppositeSideConsistency:0,contourFitRatio:0,contourFitScore:0};let A=n*i,c=e.area||0,l=e.boundingBox||{minX:0,minY:0,maxX:0,maxY:0},m=c/Math.max(1,(l.maxX-l.minX+1)*(l.maxY-l.minY+1)),d=(function(F){if(!F)return 0;let G=[F.topLeft,F.topRight,F.bottomRight,F.bottomLeft],J=0;for(let q=0;q<G.length;q++){let z=(q+1)%G.length;J+=G[q].x*G[z].y-G[z].x*G[q].y}return Math.abs(J)/2})(s),h=d/Math.max(1,A),u=es(s),f=Math.min(...u),p=(u[0]+u[2])/2,g=(u[1]+u[3])/2,C=p>g?p/Math.max(1e-6,g):g/Math.max(1e-6,p),w=(function(F){let G=[F.topLeft,F.topRight,F.bottomRight,F.bottomLeft],J=[];for(let z=0;z<G.length;z++){let X=G[z],S=G[(z+1)%G.length],T=G[(z+2)%G.length],K=(S.x-X.x)*(T.y-S.y)-(S.y-X.y)*(T.x-S.x);Math.abs(K)<1e-6||J.push(Math.sign(K))}if(J.length<3)return!1;let q=J[0];return J.every(z=>z===q)})(s),Q=(function(F,G,J,q){if(!F?.points||F.points.length===0)return 0;let z=Math.max(1,Math.floor(F.points.length/240)),X=0,S=0;for(let T=0;T<F.points.length;T+=z){let K=F.points[T],$=Math.max(0,Math.min(J-1,0|K.x)),_=Math.max(0,Math.min(q-1,0|K.y));X++;let Y=!1;for(let j=-1;j<=1&&!Y;j++){let ie=_+j;if(!(ie<0||ie>=q))for(let ee=-1;ee<=1;ee++){let re=$+ee;if(!(re<0||re>=J)&&G[ie*J+re]>0){Y=!0;break}}}Y&&S++}return X===0?0:S/X})(e,t,n,i),k=Al(s),I=(function(F){let G=es(F);return(Math.min(G[0],G[2])/Math.max(1e-6,Math.max(G[0],G[2]))+Math.min(G[1],G[3])/Math.max(1e-6,Math.max(G[1],G[3])))/2})(s),b=c/Math.max(1,d),v=Ot(1-Math.abs(b-1)/.55),O=a===4?1:a===5?.9:a===6?.7:a<=8?.5:.28,L=Ot(c/Math.max(1,.4*A)),W=Ot((m-.08)/.72),Z=Ot((h-.03)/.82),R=r.minDocumentSideRatio!==void 0?r.minDocumentSideRatio:.06,E=r.minDocumentCoverageRatio!==void 0?r.minDocumentCoverageRatio:.04,y=r.maxDocumentAspectRatio!==void 0?r.maxDocumentAspectRatio:8,x=r.minDocumentFillRatio!==void 0?r.minDocumentFillRatio:.07,P=r.minContourFitRatio!==void 0?r.minContourFitRatio:.11,U=r.maxContourFitRatio!==void 0?r.maxContourFitRatio:1.2,M=r.minRightAngleScore!==void 0?r.minRightAngleScore:.42,B=r.minOppositeSideConsistency!==void 0?r.minOppositeSideConsistency:.3,D=Math.min(n,i)*R,N=(function(F,G=6){let J=[F?.topLeft,F?.topRight,F?.bottomRight,F?.bottomLeft];if(J.some(q=>!q||!Number.isFinite(q.x)||!Number.isFinite(q.y)))return!1;for(let q=0;q<J.length;q++)for(let z=q+1;z<J.length;z++)if(Ht(J[q],J[z])<G)return!1;return!0})(s)&&w&&f>=D&&h>=E&&C<=y&&m>=x&&b>=P&&b<=U&&k>=M&&I>=B,H=.22*L+.14*W+.15*O+.08*(w?1:0)+.08*Q+.13*Z+.1*k+.05*I+.05*v;return{contour:e,corners:s,score:H,confidence:N?H:.33*H,isValid:N,area:c,fillRatio:m,coverageRatio:h,cornersArea:d,approxCount:a,convex:w,edgeSupport:Q,aspectRatio:C,minSide:f,rightAngleScore:k,oppositeSideConsistency:I,contourFitRatio:b,contourFitScore:v}}async function ll(e,t,n,i,r={}){let o=r.debug?{}:{_timingsOnly:!0},a=[];o&&!o._timingsOnly&&(o.preprocessing={scaledDimensions:{width:t,height:n},scaleFactor:i,maxProcessingDimension:r.maxProcessingDimension||800});let s=(function(g={}){let C=g.dilationKernelSize||3,w=g.dilationIterations||1,Q=g.applyDilation===void 0||g.applyDilation,k=[{name:"default",lowThreshold:g.lowThreshold,highThreshold:g.highThreshold,dilationKernelSize:C,dilationIterations:w,applyDilation:Q}];if(g.enableDetectionCascade===!1)return k;k.push({name:"connect-edges",lowThreshold:g.lowThreshold,highThreshold:g.highThreshold,dilationKernelSize:Math.max(C,5),dilationIterations:Math.max(w,2),applyDilation:!0}),k.push({name:"no-dilation",lowThreshold:g.lowThreshold,highThreshold:g.highThreshold,dilationKernelSize:C,dilationIterations:w,applyDilation:!1}),g.lowThreshold===void 0&&g.highThreshold===void 0&&k.push({name:"fixed-mid-thresholds",lowThreshold:60,highThreshold:180,dilationKernelSize:C,dilationIterations:w,applyDilation:Q});let I=[],b=new Set;for(let v of k){let O=[v.lowThreshold,v.highThreshold,v.dilationKernelSize,v.dilationIterations,v.applyDilation].join(":");b.has(O)||(b.add(O),I.push(v))}return I})(r),A=[],c=async(g,C)=>{let w=g.name||`pass-${C+1}`,Q=C===0?"":` (${w})`,k=r.debug?{}:{_timingsOnly:!0},I=await sl(e,{width:t,height:n,lowThreshold:g.lowThreshold,highThreshold:g.highThreshold,dilationKernelSize:g.dilationKernelSize,dilationIterations:g.dilationIterations,applyDilation:g.applyDilation,debug:k,skipGrayscale:!0,useWasmBlur:!0,useWasmHysteresis:r.useWasmHysteresis,useWasmFullCanny:r.useWasmFullCanny});k.timings&&k.timings.forEach(W=>{W.step!=="Edge Detection Total"&&a.push({step:`${W.step}${Q}`,ms:W.ms})});let b=performance.now(),v=Xc(I,{minArea:(r.minArea||1e3)/(i*i),width:t,height:n});a.push({step:`Find Contours${Q}`,ms:(performance.now()-b).toFixed(2)}),b=performance.now();let{best:O,candidates:L}=(function(W,Z,R,E,y={}){let x=y.maxCandidateContours||12,P=W.slice(0,x).map((U,M)=>({rankByArea:M,...cl(U,Z,R,E,y)})).sort(ts);return{best:P[0]||null,candidates:P}})(v,I,t,n,r);return a.push({step:`Corner Detection${Q}`,ms:(performance.now()-b).toFixed(2)}),{name:w,params:{lowThreshold:g.lowThreshold,highThreshold:g.highThreshold,dilationKernelSize:g.dilationKernelSize,dilationIterations:g.dilationIterations,applyDilation:g.applyDilation},contours:v,best:O,candidates:L}},l=await c(s[0],0);if(A.push(l),(function(g,C={}){if(C.enableDetectionCascade===!1)return!1;if(!g||!g.corners)return!0;let w=C.minCascadeTriggerConfidence!==void 0?C.minCascadeTriggerConfidence:.68;return!g.isValid||g.confidence<w||g.approxCount>5||g.rightAngleScore<.55||g.contourFitRatio<.14})(l.best,r))for(let g=1;g<s.length;g++)A.push(await c(s[g],g));let m=[];for(let g of A)for(let C of g.candidates)m.push({...C,passName:g.name,passParams:g.params});m.sort(ts);let d=m[0]||null,h=m;if(!d||!d.corners)return{success:!1,message:"No document detected",debug:o._timingsOnly?null:o,timings:a};o&&!o._timingsOnly&&(o.passes=A.map(g=>({name:g.name,params:g.params,contourCount:g.contours.length,bestCandidate:g.best?{score:g.best.score,confidence:g.best.confidence,isValid:g.best.isValid,approxCount:g.best.approxCount,coverageRatio:g.best.coverageRatio,fillRatio:g.best.fillRatio,rightAngleScore:g.best.rightAngleScore,contourFitRatio:g.best.contourFitRatio}:null})),o.candidates=h.map(g=>({passName:g.passName,rankByArea:g.rankByArea,area:g.area,fillRatio:g.fillRatio,coverageRatio:g.coverageRatio,cornersArea:g.cornersArea,approxCount:g.approxCount,convex:g.convex,edgeSupport:g.edgeSupport,aspectRatio:g.aspectRatio,minSide:g.minSide,rightAngleScore:g.rightAngleScore,oppositeSideConsistency:g.oppositeSideConsistency,contourFitRatio:g.contourFitRatio,contourFitScore:g.contourFitScore,score:g.score,confidence:g.confidence,isValid:g.isValid})),o.selectedCandidate=h[0]?{passName:h[0].passName,rankByArea:h[0].rankByArea,area:h[0].area,fillRatio:h[0].fillRatio,coverageRatio:h[0].coverageRatio,approxCount:h[0].approxCount,edgeSupport:h[0].edgeSupport,aspectRatio:h[0].aspectRatio,minSide:h[0].minSide,rightAngleScore:h[0].rightAngleScore,oppositeSideConsistency:h[0].oppositeSideConsistency,contourFitRatio:h[0].contourFitRatio,score:h[0].score,confidence:h[0].confidence,isValid:h[0].isValid}:null);let u=d.corners,f=d.contour,p=u;return i!==1&&(p={topLeft:{x:u.topLeft.x*i,y:u.topLeft.y*i},topRight:{x:u.topRight.x*i,y:u.topRight.y*i},bottomRight:{x:u.bottomRight.x*i,y:u.bottomRight.y*i},bottomLeft:{x:u.bottomLeft.x*i,y:u.bottomLeft.y*i}}),{success:!0,contour:f,corners:p,confidence:d.confidence,debug:o._timingsOnly?null:o,timings:a}}function ul(e,t,n){let{topLeft:i,topRight:r,bottomRight:o,bottomLeft:a}=n,s=Math.hypot(o.x-a.x,o.y-a.y),A=Math.hypot(r.x-i.x,r.y-i.y),c=Math.round(Math.max(s,A)),l=Math.hypot(r.x-o.x,r.y-o.y),m=Math.hypot(i.x-a.x,i.y-a.y),d=Math.round(Math.max(l,m));e.canvas.width=c,e.canvas.height=d,(function(h,u,f,p,g){let C=u&&typeof u.width=="number"&&typeof u.height=="number"&&u.data,w=u.width||u.naturalWidth,Q=u.height||u.naturalHeight,k=document.createElement("canvas");k.width=w,k.height=Q;let I=k.getContext("2d",{willReadFrequently:!0});C?I.putImageData(u,0,0):I.drawImage(u,0,0,w,Q);let b=I.getImageData(0,0,w,Q).data,v=(function(N){let H=N[0][0],F=N[0][1],G=N[0][2],J=N[1][0],q=N[1][1],z=N[1][2],X=N[2][0],S=N[2][1],T=N[2][2],K=q*T-z*S,$=-(J*T-z*X),_=J*S-q*X,Y=-(F*T-G*S),j=H*T-G*X,ie=-(H*S-F*X),ee=F*z-G*q,re=-(H*z-G*J),le=H*q-F*J,se=H*K+F*$+G*_;if(se===0)throw new Error("Singular matrix");return[[K/se,Y/se,ee/se],[$/se,j/se,re/se],[_/se,ie/se,le/se]]})(f),O=v[0][0],L=v[0][1],W=v[0][2],Z=v[1][0],R=v[1][1],E=v[1][2],y=v[2][0],x=v[2][1],P=v[2][2],U=h.createImageData(p,g),M=U.data,B=w-1,D=Q-1;for(let N=0;N<g;N++){let H=L*N+W,F=R*N+E,G=x*N+P;for(let J=0;J<p;J++){let q=1/(y*J+G),z=(O*J+H)*q,X=(Z*J+F)*q,S=z<0?0:z>B?B:z,T=X<0?0:X>D?D:X,K=0|S,$=0|T,_=K<B?K+1:K,Y=$<D?$+1:$,j=S-K,ie=T-$,ee=1-j,re=1-ie,le=ee*re,se=j*re,Ae=ee*ie,be=j*ie,Be=$*w+K<<2,it=$*w+_<<2,rt=Y*w+K<<2,te=Y*w+_<<2,ne=N*p+J<<2;M[ne]=b[Be]*le+b[it]*se+b[rt]*Ae+b[te]*be+.5|0,M[ne+1]=b[Be+1]*le+b[it+1]*se+b[rt+1]*Ae+b[te+1]*be+.5|0,M[ne+2]=b[Be+2]*le+b[it+2]*se+b[rt+2]*Ae+b[te+2]*be+.5|0,M[ne+3]=255}}h.putImageData(U,0,0)})(e,t,(function(h,u){let f=(function(p,g){let C=p.length,w=p[0].length,Q=p.map(b=>b.slice()),k=g.slice();for(let b=0;b<w;b++){let v=b;for(let O=b+1;O<C;O++)Math.abs(Q[O][b])>Math.abs(Q[v][b])&&(v=O);[Q[b],Q[v]]=[Q[v],Q[b]],[k[b],k[v]]=[k[v],k[b]];for(let O=b+1;O<C;O++){let L=Q[O][b]/Q[b][b];for(let W=b;W<w;W++)Q[O][W]-=L*Q[b][W];k[O]-=L*k[b]}}let I=new Array(w);for(let b=w-1;b>=0;b--){let v=k[b];for(let O=b+1;O<w;O++)v-=Q[b][O]*I[O];I[b]=v/Q[b][b]}return I})((function(p){let g=[];for(let C=0;C<4;C++){let[w,Q]=p[C];g.push([w,Q,1,0,0,0,-w*u[C][0],-Q*u[C][0]]),g.push([0,0,0,w,Q,1,-w*u[C][1],-Q*u[C][1]])}return g})(h),[u[0][0],u[0][1],u[1][0],u[1][1],u[2][0],u[2][1],u[3][0],u[3][1]]);return[[f[0],f[1],f[2]],[f[3],f[4],f[5]],[f[6],f[7],1]]})([[i.x,i.y],[r.x,r.y],[o.x,o.y],[a.x,a.y]],[[0,0],[c-1,0],[c-1,d-1],[0,d-1]]),c,d)}async function as(e,t={}){let n=[],i=performance.now(),r=t.mode||"detect",o=t.output||"canvas",a=t.maxProcessingDimension||800,s,A,c,l;if((t.detector||"classical")==="ml"){A=performance.now();let{detectDocumentMl:d}=await Promise.resolve().then(()=>(za(),qa));s=await d(e,t.ml||{}),n.push({step:"ML Detection Total",ms:(performance.now()-A).toFixed(2)}),s.timings&&s.timings.forEach(h=>n.push(h))}else{A=performance.now();let{grayscaleData:d,scaleFactor:h,scaledDimensions:u}=await(async function(f,p=800){let g,C,w=f&&typeof f.width=="number"&&typeof f.height=="number"&&f.data;if(w)g=f.width,C=f.height;else{if(!f)throw new Error("No image provided");g=f.width||f.naturalWidth,C=f.height||f.naturalHeight}let Q=Math.max(g,C),k,I,b;if(Q<=p)k=g,I=C,b=1;else{let E=p/Q;k=Math.round(g*E),I=Math.round(C*E),b=1/E}let v=typeof OffscreenCanvas<"u",O=v?new OffscreenCanvas(k,I):document.createElement("canvas");v||(O.width=k,O.height=I);let L=O.getContext("2d",{willReadFrequently:!0});if(L.imageSmoothingEnabled=!0,L.imageSmoothingQuality="medium",w){let E=v?new OffscreenCanvas(g,C):document.createElement("canvas");v||(E.width=g,E.height=C),E.getContext("2d").putImageData(f,0,0),L.drawImage(E,0,0,g,C,0,0,k,I)}else L.drawImage(f,0,0,g,C,0,0,k,I);let W=L.getImageData(0,0,k,I),Z=W.data,R=new Uint8ClampedArray(k*I);for(let E=0,y=0;E<Z.length;E+=4,y++){let x=54*Z[E]+183*Z[E+1]+19*Z[E+2]>>8;R[y]=x,Z[E]=Z[E+1]=Z[E+2]=x}return{grayscaleData:R,imageData:W,scaleFactor:b,originalDimensions:{width:g,height:C},scaledDimensions:{width:k,height:I}}})(e,a);n.push({step:"Image Prep + Scale + Gray",ms:(performance.now()-A).toFixed(2)}),s=await ll(d,u.width,u.height,h,t),s.timings&&s.timings.forEach(f=>n.push(f))}if(!s.success){let d=performance.now();return n.unshift({step:"Total",ms:(d-i).toFixed(2)}),{output:null,corners:null,contour:null,confidence:s.confidence||null,score:s.score??null,debug:s.debug,success:!1,message:s.message||"No document detected",timings:n}}r==="detect"?l=null:r==="extract"&&(A=performance.now(),c=document.createElement("canvas"),ul(c.getContext("2d"),e,s.corners),n.push({step:"Perspective Transform",ms:(performance.now()-A).toFixed(2)})),r!=="detect"&&c&&(A=performance.now(),l=o==="canvas"?c:o==="imagedata"?c.getContext("2d").getImageData(0,0,c.width,c.height):o==="dataurl"?c.toDataURL():c,n.push({step:"Output Conversion",ms:(performance.now()-A).toFixed(2)}));let m=performance.now();return n.unshift({step:"Total",ms:(m-i).toFixed(2)}),{output:l,corners:s.corners,contour:s.contour??null,confidence:s.confidence||null,score:s.score??null,debug:s.debug,success:!0,message:"Document detected",timings:n}}var ae,qc,zc,Nt,xe,Pt,Gt,_n,Za,Cr,ss=V(()=>{"use strict";qc=1e3,zc=10;Nt=null;xe=0;Pt=null;Gt=null;_n=null,Za=!1,Cr=null});var br={};ue(br,{DOC_DETECT_MIN_CONFIDENCE:()=>As,DOC_DETECT_WIDTH:()=>Te,SCANIC_VERSION:()=>dl,detectQuad:()=>gl});async function gl(e){let t=await as(e,{mode:"detect",detector:"classical",maxProcessingDimension:Te});return!t.success||t.corners===null||typeof t.confidence=="number"&&t.confidence<As?null:t.corners}var dl,As,Br=V(()=>{"use strict";ss();wt();dl="1.5.0",As=.35});var ds={};ue(ds,{CAPTURE_CANDIDATE_SPACING_MS:()=>kr,CAPTURE_EXTRA_CANDIDATES:()=>wr,CaptureSessionDoc:()=>Fn,DOC_CADENCE_HZ:()=>Qr,DOC_SHUTTER_DEFAULTS:()=>Jt,passportBandOf:()=>Sr,resolveDocShutterTuning:()=>Nn,warmDocDetector:()=>us});async function ml(e){return Ut===null&&(Ut=(await Promise.resolve().then(()=>(Br(),br))).detectQuad),Ut(e)}async function hl(e){let t=mn(e);return t===null?null:{topLeft:{x:t.x,y:t.y},topRight:{x:t.x+t.width,y:t.y},bottomRight:{x:t.x+t.width,y:t.y+t.height},bottomLeft:{x:t.x,y:t.y+t.height}}}function us(){Ut===null&&Promise.resolve().then(()=>(Br(),br)).then(e=>{Ut=e.detectQuad}).catch(()=>{})}function Nn(e){let t=e!==null&&typeof e=="object"?e:{},n=(i,r,o)=>typeof i=="number"&&Number.isFinite(i)&&i>=r&&i<=o?i:void 0;return{manualShutterMs:n(t.manualShutterMs,1e3,6e4)??Jt.manualShutterMs,detectedNoLockMs:n(t.steadyMs,300,3e4)!==void 0?t.steadyMs+(n(t.lockMs,0,1e4)??450):Jt.detectedNoLockMs}}function Sr(e,t,n,i,r){let o=Math.min(i,e.width*1.06*t),a=Math.min(r,Math.max(e.height*1.6*n,o/5)),s=(e.y+e.height/2)*n,A=Math.max(0,Math.min(i-o,(e.x-e.width*.03)*t)),c=Math.max(0,Math.min(r-a,s-a/2));return{x:A,y:c,w:o,h:a}}function cs(e,t){let n=e.x*t.width,i=e.y*t.height,r=(e.x+e.width)*t.width,o=(e.y+e.height)*t.height;return{topLeft:{x:n,y:i},topRight:{x:r,y:i},bottomRight:{x:r,y:o},bottomLeft:{x:n,y:o}}}function pl(e,t,n){let i=Le(e);return t.width<=0||t.height<=0?0:n==="ID-3"?i.width/t.width:i.width*i.height/(t.width*t.height)}function ls(e,t){let n=e.videoWidth,i=e.videoHeight;if(n===0||i===0)return null;let r=Math.min(1,t/n),o=Math.round(n*r),a=Math.round(i*r),s=document.createElement("canvas");s.width=o,s.height=a;let A=s.getContext("2d",{willReadFrequently:!0});return A===null?null:(n/Math.max(1,o)>4&&(A.imageSmoothingQuality="high"),A.drawImage(e,0,0,o,a),A.getImageData(0,0,o,a))}function Ln(e,t){let n=[t.topLeft.x,t.topRight.x,t.bottomRight.x,t.bottomLeft.x],i=[t.topLeft.y,t.topRight.y,t.bottomRight.y,t.bottomLeft.y],r=Math.max(0,Math.floor(Math.min(...n))),o=Math.max(0,Math.floor(Math.min(...i))),a=Math.min(e.width,Math.ceil(Math.max(...n))),s=Math.min(e.height,Math.ceil(Math.max(...i))),A=Math.max(1,a-r),c=Math.max(1,s-o),l=new Uint8ClampedArray(A*c*4);for(let m=0;m<c;m++){let d=((o+m)*e.width+r)*4;l.set(e.data.subarray(d,d+A*4),m*A*4)}return{data:l,width:A,height:c,colorSpace:e.colorSpace}}function Il(e,t){return e==="glare"?"glare":e==="too_small"?"too_far":e==="too_big"?"too_close":t?"too_dark":e==="blurry"?"blurry":e==="off_center"?"edge_clipped":e==="no_card"?"sensing":"hold_still"}var Ut,Qr,Jt,Fn,wr,kr,fl,Cl,Pn=V(()=>{"use strict";In();lt();$i();Je();qi();Ki();wt();hn();Na();Mn();or();Dn();st();Lt();Ut=null;Qr=Object.freeze({LOW:3,MID:5,HIGH:6}),Jt=Object.freeze({manualShutterMs:6e3,detectedNoLockMs:1950});Fn=class e{constructor(t){this.torchOn=!1;this.stillRefusals=0;this.zoom=1;this.positioningSince=null;this.detectedSince=null;this.lastSeenAt=null;this.lastGuideQuad=null;this.lastOcrReady=null;this.shutterOffered=!1;this.stats=e.freshStats();this.handlers=new Map;this.stream=null;this.timer=null;this.state="idle";this.lastGuidance=null;this.attempt=0;this.capturing=!1;this.feedback=new Mt;this.lastFeedbackKey=null;this.lastQuad=null;this.lastDetect=null;this.opts=t,this.gate=new Qt(t.format??"ID-1",t.thresholds);let n=t.deviceClass??bn(En());this.deviceClass=n,this.camera=t.camera??Dt,this.shutterTuning=t.shutter??Jt,this.guideTuning=t.guideLock??gt,this.guideLock=new Rt(this.guideTuning),this.cadenceMs=1e3/Qr[n]}on(t,n){let i=this.handlers.get(t);return i||(i=new Set,this.handlers.set(t,i)),i.add(n),()=>i?.delete(n)}emit(t,n){for(let i of[...this.handlers.get(t)??[]])i(n)}async start(){let t=++this.attempt;this.gate.reset(),this.resetSide(),this.feedback.reset(),this.lastFeedbackKey=null,this.lastGuidance=null,this.capturing=!1,this.setState("preflight");try{let n=this.opts.getUserMedia??(o=>navigator.mediaDevices.getUserMedia(o));this.setState("acquiring");let i=this.opts.enumerateDevices??(this.opts.getUserMedia===void 0&&typeof navigator<"u"&&navigator.mediaDevices?.enumerateDevices?()=>navigator.mediaDevices.enumerateDevices():void 0),r=await ur({getUserMedia:n,...i!==void 0?{enumerateDevices:i}:{},lensSelection:this.camera.lensSelection,base:Ba});if(this.stream=r.stream,fn(this.stream),t!==this.attempt){for(let o of this.stream.getTracks())o.stop();return}if(this.opts.upgradeResolution!==!1&&await this.upgradeResolution(),t!==this.attempt||(await this.applyFocusAndZoom(),t!==this.attempt))return;this.opts.video.srcObject=this.stream,await this.opts.video.play().catch(()=>{}),this.setState("positioning"),this.scheduleTick(t)}catch(n){let i=ct(n);this.setState("error"),this.emit("error",{kind:i,retryable:!0})}}rearm(t){t!==void 0&&(this.opts.side=t),this.gate.reset(),this.resetSide(),this.feedback.reset(),this.lastFeedbackKey=null,this.lastGuidance=null,this.capturing=!1,this.stillRefusals=0,this.state==="captured"&&(this.setState("positioning"),this.scheduleTick(this.attempt))}async captureNow(){if(this.state!=="positioning"||this.capturing)return;let t=this.opts.video,n=this.lastDetect?.width??Math.max(1,t.videoWidth),i=this.lastDetect?.height??Math.max(1,t.videoHeight),r=this.lastQuad??this.lastGuideQuad??{topLeft:{x:0,y:0},topRight:{x:n,y:0},bottomRight:{x:n,y:i},bottomLeft:{x:0,y:i}},o=(this.opts.now??(()=>performance.now()))(),a=this.feedback.force("processing",o);this.lastFeedbackKey=a.key,this.emit("feedback",a),await this.fire(this.attempt,this.lastOcrReady!==null?this.lastOcrReady.quad:r,{width:n,height:i,tickSharpness:this.lastDetect?.tickSharpness??0},this.lastOcrReady?.via??"manual")}captureReport(){let t=this.stats;return{...this.opts.side!==void 0?{side:this.opts.side}:{},format:this.opts.format??"ID-1",deviceClass:this.deviceClass,video:{width:this.opts.video.videoWidth||0,height:this.opts.video.videoHeight||0},zoom:this.zoom,...t.zoomFallbackAtMs!==void 0?{zoomFallbackAtMs:t.zoomFallbackAtMs}:{},...t.msToCapture!==void 0?{msToCapture:t.msToCapture}:{},...t.via!==void 0?{via:t.via}:{},...t.shutterAtMs!==void 0?{shutterAtMs:t.shutterAtMs}:{},...t.shutterReason!==void 0?{shutterReason:t.shutterReason}:{},ticks:t.ticks,quadFraming:{...t.quadFraming},qualityBlockers:{...t.qualityBlockers},guideBlockers:{...t.guideBlockers},stillRefusals:t.stillRefusals,...this.ocrReport()}}ocrReport(){let t=this.opts.ocr;if(t===void 0)return{};let n=(this.opts.format??"ID-1")==="ID-3"||this.opts.side==="single"?"single":this.opts.side==="verso"?"verso":"recto",i=t.report(n,this.stats.via,(this.opts.now??(()=>performance.now()))());return i===null?{}:{ocr:i}}static freshStats(){return{ticks:0,quadFraming:{},qualityBlockers:{},guideBlockers:{},stillRefusals:0}}setGuide(t){t===void 0?delete this.opts.guide:this.opts.guide=t,this.guideLock.reset()}guideRegion(t){let n=t.width/Math.max(1,t.height),i=this.opts.guide;if(i!==void 0&&i.viewAspect>0){let s={width:i.viewAspect,height:1},A={x:i.rect.x*i.viewAspect,y:i.rect.y,width:i.rect.width*i.viewAspect,height:i.rect.height};return dr(s,A,n,0)}let r=Pi(this.opts.format??"ID-1").center,o=.86,a=o*n/r;return a>.84&&(a=.84,o=a*r/n),{x:(1-o)/2,y:(1-a)/2,width:o,height:a}}resetSide(){this.positioningSince=null,this.detectedSince=null,this.lastSeenAt=null,this.guideLock.reset(),this.lastGuideQuad=null,this.lastOcrReady=null,this.opts.ocr?.reset(),this.stats=e.freshStats(),this.shutterOffered&&(this.shutterOffered=!1,this.emit("shutter",{available:!1}))}withdrawShutter(){this.shutterOffered&&(this.shutterOffered=!1,this.emit("shutter",{available:!1}))}zoomFallback(t){let n=this.videoTrack();if(n===null||this.zoom<=1)return;let i=this.focusCaps(),r=typeof i?.zoom?.min=="number"?Math.max(i.zoom.min,1):1;this.zoom=r,this.stats.zoomFallbackAtMs=Math.round(t-(this.positioningSince??t)),this.guideLock.reset(),this.gate.reset(),n.applyConstraints({advanced:[{zoom:r}]}).catch(()=>{})}offerShutter(t,n){this.shutterOffered||(this.shutterOffered=!0,this.stats.shutterAtMs=Math.round(n-(this.positioningSince??n)),this.stats.shutterReason=t,this.emit("shutter",{available:!0,reason:t}))}torchAvailable(){try{return this.stream?.getVideoTracks?.()[0]?.getCapabilities?.()?.torch===!0}catch{return!1}}async setTorch(t){this.torchOn=t;try{await this.stream?.getVideoTracks?.()[0]?.applyConstraints({advanced:[{torch:t}]})}catch{}}destroy(){if(this.attempt+=1,this.timer!==null&&(this.opts.clearTimer??clearTimeout)(this.timer),this.timer=null,this.stream)for(let t of this.stream.getTracks())t.stop();this.stream=null,this.opts.video.srcObject=null}async upgradeResolution(){try{let t=this.stream?.getVideoTracks?.()[0];if(t===void 0)return;let n=t.getSettings?.()??{},i=wa(t.getCapabilities?.(),{width:n.width??0,height:n.height??0},this.deviceClass,{width:this.camera.width,height:this.camera.height});i!==null&&await t.applyConstraints(i)}catch{}}focusCaps(){try{return this.videoTrack()?.getCapabilities?.()??null}catch{return null}}async applyFocusAndZoom(){let t=this.videoTrack();if(t===null)return;let n=this.focusCaps();this.camera.continuousFocus&&vt(n,"continuous")&&await t.applyConstraints({advanced:[{focusMode:"continuous"}]}).catch(()=>{});let i={width:0,height:0};try{let o=t.getSettings?.()??{};i={width:o.width??0,height:o.height??0}}catch{}let r=lr(n,i,this.opts.format??"ID-1",this.camera);if(r>1)try{await t.applyConstraints({advanced:[{zoom:r}]}),this.zoom=r}catch{this.zoom=1}}async focusAt(t,n){let i=this.videoTrack(),r=kn(this.focusCaps(),t,n);if(!(i===null||r===null))try{await i.applyConstraints({advanced:[r]}),(this.opts.setTimer??setTimeout)(()=>{this.restoreContinuous()},1500)}catch{}}async restoreContinuous(){let t=this.videoTrack();t===null||!this.camera.continuousFocus||!vt(this.focusCaps(),"continuous")||await t.applyConstraints({advanced:[{focusMode:"continuous"}]}).catch(()=>{})}async refocusOn(t,n){let i=this.camera.refocusBeforePhotoMs,r=this.videoTrack();if(i<=0||r===null||n.width<=0||n.height<=0)return;let o=Le(t),a=kn(this.focusCaps(),(o.x+o.width/2)/n.width,(o.y+o.height/2)/n.height);if(a!==null)try{await r.applyConstraints({advanced:[a]});let s=this.opts.setTimer??setTimeout;await new Promise(A=>{s(()=>A(),i)})}catch{}}videoTrack(){try{return this.stream?.getVideoTracks?.()[0]??null}catch{return null}}async takeStill(t,n,i){if(this.opts.captureStill!==void 0)return this.opts.captureStill(this.opts.video,t,n);let r=this.opts.format??"ID-1",o=this.videoTrack();if(i&&this.opts.photoCapture!==!1&&this.deviceClass!=="LOW"&&!this.torchOn&&o!==null&&_a(o)){await this.refocusOn(t,n);let a=await Fa(this.opts.video,t,n,r,{track:o,detect:this.detector(),detectWidth:Te});if(this.restoreContinuous(),a!==null)return a}return La(this.opts.video,t,n,r)}detector(){return this.opts.detect??((this.opts.format??"ID-1")==="ID-3"?hl:ml)}setState(t){this.state=t,this.emit("statechange",{state:t})}scheduleTick(t){let n=this.opts.setTimer??setTimeout;this.timer=n(()=>{this.tick(t)},this.cadenceMs)}async tick(t){if(t!==this.attempt||this.state!=="positioning"||this.capturing)return;let n=this.opts.now??(()=>performance.now()),i=this.opts.grabDetectFrame??ls,r=this.detector(),o=i(this.opts.video,Te);if(o===null){this.scheduleTick(t);return}let a=null;try{a=await r(o)}catch{a=null}if(t!==this.attempt)return;let s=a!==null?Ln(o,a):o,A=n(),c={sharpness:we(s),exposure:At(s),meanLuma:Ue(s),specularFraction:Vi(s)},l=Yi({format:this.opts.format??"ID-1",quad:a,frameWidth:o.width,frameHeight:o.height,measures:c,...this.opts.thresholds!==void 0?{thresholds:this.opts.thresholds}:{}}),m=this.gate.tick({timestampMs:A,quad:a,quality:c,frameWidth:o.width,frameHeight:o.height}),h=(this.opts.format??"ID-1")!=="ID-3"?gr(o,this.guideRegion(o),{edgePeakFrac:this.guideTuning.edgePeakFrac}):dt,u=this.guideLock.tick(h,A);this.lastGuideQuad=u.detected?mr(h):null;let f=this.capturing?null:this.ocrTick(o,a,h,u.detected,l,A);this.positioningSince??(this.positioningSince=A);let p=this.stats;if(p.ticks+=1,p.quadFraming[l.framing]=(p.quadFraming[l.framing]??0)+1,l.framing==="ok"&&!m.ready){let L=l.lighting!=="ok"?l.lighting:l.glare!=="ok"?"glare":l.blur!=="ok"?"blurry":"steadying";p.qualityBlockers[L]=(p.qualityBlockers[L]??0)+1}p.guideBlockers[u.blocker]=(p.guideBlockers[u.blocker]??0)+1,a!==null||u.detected?(this.detectedSince??(this.detectedSince=A),this.lastSeenAt=A):this.detectedSince=null,this.lastSeenAt!==null&&A-this.lastSeenAt<=Cl?A-this.positioningSince>=this.shutterTuning.manualShutterMs?this.offerShutter("timeout",A):f?.suspendQuality!==!0&&this.detectedSince!==null&&A-this.detectedSince>=this.shutterTuning.detectedNoLockMs&&this.offerShutter("detected_no_lock",A):this.withdrawShutter();let w=A-(this.lastSeenAt??this.positioningSince);this.zoom>1&&this.camera.zoomFallbackMs>0&&w>=this.camera.zoomFallbackMs&&this.zoomFallback(A),this.emit("checks",{engine:"docv1",p:m.p,plausible:m.plausible,stableTicks:m.stableTicks,quad:m.quad,frameWidth:o.width,frameHeight:o.height,analysis:l,ready:f?.suspendQuality!==!0&&(m.ready&&a!==null||u.ready&&this.lastGuideQuad!==null)||this.lastOcrReady!==null,guide:{detected:u.detected,blocker:u.blocker,fill:h.fill,shape:h.shape,content:h.content,offsetX:h.offsetX,offsetY:h.offsetY},...f!==null&&f.mode!=="off"?{ocr:{mode:f.mode,...f.mrz?{mrz:f.mrz}:{},...f.lock?{lock:f.lock}:{}}}:f?.mrz?{ocr:{mode:f.mode,mrz:f.mrz}}:{}}),this.lastQuad=m.plausible?a:null,this.lastDetect={width:o.width,height:o.height,tickSharpness:c.sharpness};let Q=Wi(l);l.framing!=="ok"&&u.detected&&(Q=Il(u.blocker,h.brightness<this.guideTuning.darkBrightness)),Q==="blurry"&&a!==null&&pl(a,o,this.opts.format??"ID-1")>=this.camera.focusFarFillFrac&&(Q="focus_far"),Q==="sensing"&&this.zoom>1&&this.camera.noDocFarHintMs>0&&w>=this.camera.noDocFarHintMs&&(Q="focus_far");let k=this.feedback.tick(Q,A);if(k.key!==this.lastFeedbackKey&&(this.lastFeedbackKey=k.key,this.emit("feedback",k)),m.guidanceKey!==this.lastGuidance&&(this.lastGuidance=m.guidanceKey,this.emit("guidance",{key:m.guidanceKey})),this.capturing)return;let I=f?.suspendQuality!==!0,b=I&&m.ready&&a!==null,v=I&&u.ready&&this.lastGuideQuad!==null,O=this.lastOcrReady;if(O!==null&&this.opts.autoCapture!==!1){let L=this.feedback.force("processing",A);this.lastFeedbackKey=L.key,this.emit("feedback",L);let W=we(Ln(o,O.quad));await this.fire(t,O.quad,{width:o.width,height:o.height,tickSharpness:W},O.via);return}if((b||v)&&this.opts.autoCapture!==!1){let L=this.feedback.force("processing",A);this.lastFeedbackKey=L.key,this.emit("feedback",L);let W=v?this.lastGuideQuad:a,Z=v?u.via==="steady"?"guide_steady":"guide_good":"quad",R=v?we(Ln(o,W)):c.sharpness;await this.fire(t,W,{width:o.width,height:o.height,tickSharpness:R},Z);return}this.scheduleTick(t)}async fire(t,n,i,r){this.capturing=!0;let o=this.opts.grabDetectFrame??ls,a=this.opts.setTimer??setTimeout,s={width:i.width,height:i.height};try{let A={still:await this.takeStill(n,s,!0),sharpness:i.tickSharpness};if(t!==this.attempt)return;let c=A.still.source==="photo"?0:wr;for(let d=0;d<c;d++){if(await new Promise(f=>{a(()=>f(),kr)}),t!==this.attempt)return;let h=o(this.opts.video,Te);if(h===null)continue;let u=we(Ln(h,n));if(u>A.sharpness*fl){let f=await this.takeStill(n,s,!1);if(t!==this.attempt)return;A={still:f,sharpness:u}}}if(t!==this.attempt)return;let l=A.still.sharpness;if(this.opts.autoCapture!==!1&&r!=="manual"&&typeof l=="number"&&l>=0&&l<this.camera.stillSharpnessMin&&this.stillRefusals<this.camera.stillRefusalsMax){this.stillRefusals+=1,this.stats.stillRefusals+=1,this.guideLock.reset(),this.lastOcrReady=null,(r==="text_lock"||r==="live_mrz")&&this.opts.ocr?.rearmFace();let d=(this.opts.now??(()=>performance.now()))(),h=this.feedback.force("focus_far",d);this.lastFeedbackKey=h.key,this.emit("feedback",h),this.capturing=!1,this.gate.reset(),this.scheduleTick(t);return}this.stillRefusals=0;let m=(this.opts.now??(()=>performance.now()))();this.stats.via=r,this.stats.msToCapture=Math.round(m-(this.positioningSince??m)),this.shutterOffered&&(this.shutterOffered=!1,this.emit("shutter",{available:!1})),this.setState("captured"),this.emit("artifacts",{keyframe:A.still.blob,previewDataUrl:A.still.previewDataUrl,...this.opts.side!==void 0?{side:this.opts.side}:{},...A.still.docRegion!==void 0?{docRegion:A.still.docRegion}:{},...(()=>{let d=r==="live_mrz"?this.opts.ocr?.liveCapture():null;return d?{liveMrz:d}:{}})()})}catch{if(t!==this.attempt)return;this.capturing=!1,this.gate.reset(),this.guideLock.reset(),this.lastOcrReady=null,(r==="text_lock"||r==="live_mrz")&&this.opts.ocr?.rearmFace(),this.scheduleTick(t)}}ocrTick(t,n,i,r,o,a){let s=this.opts.ocr,A=this.opts.video;if(s===void 0||!s.hasEngine)return this.lastOcrReady=null,null;let c=A.videoWidth,l=A.videoHeight;if(c<=0||l<=0||t.width<=0||t.height<=0)return null;let d=(this.opts.format??"ID-1")==="ID-3",h=this.guideRegion(t),u={x:h.x*c,y:h.y*l,w:h.width*c,h:h.height*l},f=c/t.width,p=l/t.height,g;d&&n!==null?g=Sr(Le(n),f,p,c,l):g=Wa(u,s.bandTop,l);let C=d?o.glare==="ok":i.cardGlare<=this.guideTuning.glareMax,w=d?o.blur==="ok":i.sharpness>=this.guideTuning.sharpnessMin,Q=s.tick({atMs:a,video:A,mrzFace:d||this.opts.side==="verso"||this.opts.side==="single",present:d||n!==null||r,card:u,band:g,portrait:l>c,glareOk:C,sharpOk:w});if(Q.ready&&Q.via!==void 0){let k=d?n??cs(h,t):this.lastGuideQuad??cs(h,t);this.lastOcrReady={quad:k,via:Q.via}}else this.lastOcrReady=null;return Q}};wr=2,kr=260,fl=1.08;Cl=1200});function gs(e,t=globalThis){let n=t.WebAssembly?.validate;if(typeof n!="function")return{ok:!1,reason:"simd"};try{if(!n.call(t.WebAssembly,yl)||!n.call(t.WebAssembly,El))return{ok:!1,reason:"simd"}}catch{return{ok:!1,reason:"simd"}}if(typeof t.Worker!="function")return{ok:!1,reason:"worker"};if(typeof t.createImageBitmap!="function")return{ok:!1,reason:"bitmap"};let i=t.navigator?.deviceMemory;return typeof i=="number"&&i<e.minDeviceMemoryGb?{ok:!1,reason:"memory"}:{ok:!0}}function ms(e=globalThis){let t=e.navigator?.connection;return t?.saveData===!0||["slow-2g","2g","3g"].includes(t?.effectiveType??"")}var yl,El,hs=V(()=>{"use strict";yl=new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]),El=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,7,1,5,0,6,64,11,11])});function ps(){let e=t=>(t.close(),Promise.reject(new fe("unsupported")));return{ready:Promise.resolve("unsupported"),busy:!1,bandRead:e,stillRead:e,layoutRead:e,dispose:()=>{}}}function fs(e){let t;try{if(e.createWorker)t=e.createWorker();else if(e.workerUrl!==void 0)t=new Worker(e.workerUrl,{type:"module",name:"sekyro-ocr"});else return ps()}catch{return ps()}let n=new Map,i=0,r=!1,o=!1,a=!1;t.addEventListener("message",p=>{let g=p.data,C=n.get(g.id);C&&(n.delete(g.id),C.resolve(g))});let s=()=>{for(let p of n.values())p.reject(new fe("error"));n.clear(),c()};t.addEventListener("error",s),t.addEventListener("messageerror",s);function A(p,g=[]){if(r)return Promise.reject(new fe("disposed"));let C=++i;return new Promise((w,Q)=>{n.set(C,{resolve:w,reject:Q});try{t.postMessage({...p,id:C},g)}catch{n.delete(C),Q(new fe("error"))}})}function c(){if(!r){r=!0;try{t.postMessage({id:++i,kind:"dispose"})}catch{}t.terminate();for(let p of n.values())p.reject(new fe("disposed"));n.clear()}}let l=(async()=>{let p=await A({kind:"init",baseUrl:e.baseUrl,salt:e.salt,detectorLimit:e.tuning.detectorLimit,maxDownloadMs:e.tuning.maxDownloadMs});if(p.kind==="failed")return p.reason;if(p.kind!=="ready")return"error";let g=await A({kind:"warmup"});return g.kind!=="ready"?"error":{warmupMs:g.warmupMs,downloadMs:p.downloadMs,cached:p.cached}})().catch(()=>"error"),m,d=new Promise(p=>{m=setTimeout(()=>p("timeout"),e.tuning.loadTimeoutMs)}),h=Promise.race([l,d]).then(p=>(clearTimeout(m),typeof p=="string"?c():a=!0,r&&typeof p!="string"?"error":p));(e.page===void 0?globalThis.addEventListener?globalThis:null:e.page)?.addEventListener("pagehide",c,{once:!0});async function f(p,g,C){if(r)throw g.close(),new fe("disposed");if(!a)throw g.close(),new fe("not_ready");if(o)throw g.close(),new fe("busy");o=!0;let w;try{let Q=new Promise((I,b)=>{w=setTimeout(()=>{b(new fe("timeout")),c()},e.tuning.readTimeoutMs??1e4)}),k=await Promise.race([A(p,[g]),Q]);if(k.kind===C){let{id:I,...b}=k;return b}throw new fe(k.kind==="error"?k.code:k.kind==="failed"?k.reason:"error")}finally{clearTimeout(w),o=!1}}return{ready:h,get busy(){return o},bandRead:(p,g=e.tuning.detectorLimit)=>f({kind:"band",bitmap:p,detectorLimit:g},p,"band"),stillRead:(p,g,C=e.tuning.detectorLimit)=>f({kind:"still",bitmap:p,region:g,detectorLimit:C},p,"band"),layoutRead:(p,g)=>f({kind:"layout",bitmap:p,detectorLimit:g},p,"layout"),dispose:c}}var fe,Is=V(()=>{"use strict";fe=class extends Error{constructor(t){super(t),this.name="OcrEngineError",this.code=t}}});function Gn(e,t={}){let n=Mr(e),i=Mr(n.liveMrz),r=Mr(n.frontLock),o=ys(t.engine??Ke),a=t.mode==="off",s=p=>p.enabled===!0?p.arm==="live"?"live":"control":null,A=s(i),c=s(r),l=(p,g)=>!a&&g==="live"&&ys(p.minEngine??Ke)<=o,m=Tt,d=l(i,A)?{detectorLimit:ge(i.detectorLimit,320,1600,m.detectorLimit),bandMaxWidthPx:ge(i.bandMaxWidthPx,320,4096,m.bandMaxWidthPx),minBandWidthPx:ge(i.minBandWidthPx,0,4096,m.minBandWidthPx),bandTop:ge(i.bandTop,0,.95,m.bandTop),minIntervalMs:ge(i.minIntervalMs,0,5e3,m.minIntervalMs),stableReads:Math.round(ge(i.stableReads,1,10,m.stableReads)),profileReads:Math.round(ge(i.profileReads,1,100,m.profileReads)),maxReadMs:ge(i.maxReadMs,50,6e4,m.maxReadMs),searchTimeoutMs:ge(i.searchTimeoutMs,1e3,12e4,m.searchTimeoutMs),hint:Cs(i.hint,!0),stillConfirm:Cs(i.stillConfirm,!0)}:null,h=_t,u=(p,g,C)=>ge(r[p],g,C,h[p]),f=l(r,c)?{minLines:Math.round(u("minLines",1,50)),fillMin:u("fillMin",0,1),fillMax:u("fillMax",0,2),offsetMax:u("offsetMax",0,1),steadyFillDelta:u("steadyFillDelta",0,1),steadyOffsetDelta:u("steadyOffsetDelta",0,1),layoutShiftMax:u("layoutShiftMax",0,1),lineCountDelta:Math.round(u("lineCountDelta",0,50)),lockMs:u("lockMs",0,3e4),steadyMs:u("steadyMs",0,3e4),minFrames:Math.round(u("minFrames",1,100)),minIntervalMs:u("minIntervalMs",0,5e3),maxWidthPx:u("maxWidthPx",160,2048),detectorLimit:u("detectorLimit",320,1600),searchTimeoutMs:u("searchTimeoutMs",1e3,12e4)}:null;return{enabled:d!==null||f!==null,liveMrz:d,textLock:f,liveMrzArm:A,frontLockArm:c,load:{detectorLimit:d?.detectorLimit??f?.detectorLimit??m.detectorLimit,loadTimeoutMs:ge(i.loadTimeoutMs,1e3,12e4,2e4),maxDownloadMs:ge(i.maxDownloadMs,1e3,12e4,2e4),minDeviceMemoryGb:ge(i.minDeviceMemoryGb,0,64,2)},reportSampleRate:ge(i.reportSampleRate,0,1,1)}}function On(e,t){return e.enabled?!(t.probe??gs)({minDeviceMemoryGb:e.load.minDeviceMemoryGb}).ok||(t.slow??ms)()?{ok:!1,reason:"unsupported"}:{ok:!0,engine:fs({baseUrl:t.baseUrl,salt:t.salt,tuning:{detectorLimit:e.load.detectorLimit,maxDownloadMs:e.load.maxDownloadMs,loadTimeoutMs:e.load.loadTimeoutMs},...t.workerUrl!==void 0?{workerUrl:t.workerUrl}:{},...t.createWorker!==void 0?{createWorker:t.createWorker}:{},...t.page!==void 0?{page:t.page}:{}})}:{ok:!1,reason:"off"}}function Dr(e=typeof navigator<"u"?navigator.userAgent:""){return/SamsungBrowser\//.test(e)?"samsung":/Firefox\/|FxiOS\//.test(e)?"firefox":/Chrome\/|CriOS\/|Chromium\//.test(e)&&!/Edg\/|OPR\//.test(e)?"chrome":/Safari\//.test(e)&&/Version\/|Mobile\//.test(e)&&!/Chrome\/|CriOS\//.test(e)?"safari":"other"}function Hn(e){let t=e.assist??null,n=e.load!==null&&e.load!==void 0&&typeof e.load=="object"?e.load:null,i=typeof e.load=="string"?e.load:null,r=t!==null?t.outcome:i==="unsupported"||i==="download"||i==="integrity"?i:i==="error"||i==="timeout"?"error":"off",o={kind:"live_mrz",platform:"web",engine:e.engine??Ke,arm:e.arm,capture:e.capture,outcome:r,reads:xr(t?.reads??0,0,1e4)??0,browser:e.browser??Dr()},a=(s,A)=>{A!==void 0&&(o[s]=A)};return a("format",t?.format),a("framesToValid",xr(t?.framesToValid,1,1e4)),a("msToValid",Ye(t?.msToValid)),a("framesToLock",xr(t?.framesToLock,1,1e4)),a("msToLock",Ye(t?.msToLock)),a("msToCapture",Ye(e.msToCapture)),a("readP50Ms",Ye(t?.readP50Ms)),a("readP90Ms",Ye(t?.readP90Ms)),a("deviceClass",t?.deviceClass),n!==null&&(a("warmupMs",Ye(n.warmupMs)),a("downloadMs",Ye(n.downloadMs)),a("cached",n.cached)),a("stillConfirmed",e.stillConfirmed),a("typeMismatch",e.typeMismatch),o}function Vt(e,t){return e===void 0?!1:t==="passport"?e!=="TD3":e==="TD3"}var Ke,Mr,ge,Cs,ys,Ye,xr,vr=V(()=>{"use strict";hs();Lt();Is();Ke="sekyro-ocr-1",Mr=e=>e!==null&&typeof e=="object"?e:{},ge=(e,t,n,i)=>typeof e=="number"&&Number.isFinite(e)&&e>=t&&e<=n?e:i,Cs=(e,t)=>typeof e=="boolean"?e:t,ys=e=>{let t=typeof e=="string"?/^sekyro-ocr-(\d{1,4})$/.exec(e):null;return t?Number(t[1]):Number.POSITIVE_INFINITY};Ye=e=>e===void 0||!Number.isFinite(e)?void 0:Math.min(6e5,Math.max(0,Math.round(e))),xr=(e,t,n)=>e===void 0||!Number.isFinite(e)?void 0:Math.min(n,Math.max(t,Math.round(e)))});async function Jn(e,t,n,i){let r=i.decode??(A=>createImageBitmap(A)),o=async()=>e.stillRead(await r(t),i.region??[0,0,1,1],i.detectorLimit),a;try{a=await o()}catch{try{await new Promise(A=>setTimeout(A,i.retryMs??300)),a=await o()}catch{return null}}let s=a.mrzBox;return s===void 0?null:{engine:i.engine,source:"live_mrz",format:n.format,lineCount:Rr(n.lineCount,2,3),checkDigitsValid:!0,stillConfirmed:a.valid&&a.digest===n.digest,band:[Un(s[0]),Un(s[1]),Un(Math.min(s[2],1-s[0])),Un(Math.min(s[3],1-s[1]))],digest:n.digest,framesToValid:Rr(n.framesToValid,1,1e3),msToValid:Rr(n.msToValid,0,12e4)}}function Es(e){let t=null;return e?.then(n=>{t=n}),()=>t}var Rr,Un,_r=V(()=>{"use strict";Rr=(e,t,n)=>Math.min(n,Math.max(t,Math.round(e))),Un=e=>Math.round(Math.min(1,Math.max(0,e))*1e4)/1e4});var We,Tr=V(()=>{"use strict";We={fp12:"08390000c48a",engine:"sekyro-ocr-1",precision:"fp32",files:{"sekyro-ocr.wasm":{bytes:3550608,sha256:"c15968a6de3d2225e2fdbf36d71a9214c2910419056c6878444fd2d0567bb748",tier:"live",contentType:"application/wasm"},"sekyro-ocr.mjs":{bytes:4270,sha256:"209a78d96ca53344996a0c2300aed4ff8a5c69e142713216975a2840eec08cac",tier:"bundled",contentType:"text/javascript"},"det.param":{bytes:24252,sha256:"c39ba0b1195e8ad37cfc5bdd7acedcfc1d9cb901e7b8eb1c9c4f6e5a66c04eb3",tier:"live",contentType:"text/plain"},"det.bin":{bytes:4685856,sha256:"652bafe366565109a1a5766caf482bc46f01481f8044d3a785bd9a1be67c63bb",tier:"live",contentType:"application/octet-stream"},"mrz-rec.param":{bytes:3510,sha256:"bc69b1b9683e35f6605b21001fadeb81468063459c00c0fc83c67c139f23df01",tier:"live",contentType:"text/plain"},"mrz-rec.bin":{bytes:494196,sha256:"de93a2aa2f08670cc7dedd17ba378d2f5d7cf6ae409054a9eac863a02c2febae",tier:"live",contentType:"application/octet-stream"},"mrz_dict.txt":{bytes:73,sha256:"b19858a4de2ccbbbdd4b53982188ea2c7664013183bbd1ae9d20ab52c661f97f",tier:"live",contentType:"text/plain"},"latin-rec.param":{bytes:19602,sha256:"2ae30dfdc7ee482c6cbbc0419c16ee125e880e9eaf69053d61953694bb0fcf4c",tier:"lazy",contentType:"text/plain"},"latin-rec.bin":{bytes:10750388,sha256:"f91ebdcf4d6b58c58a87704160e59d07ae56bc2d5021eae09d095c5a20bf7525",tier:"lazy",contentType:"application/octet-stream"},"ppocr_keys_v1.txt":{bytes:26249,sha256:"28b2362ad4ab2dc38769aa72feb535e3a9ddb3fd2a7585a05920e6393b1dc7f7",tier:"lazy",contentType:"text/plain"},"arabic-rec.param":{bytes:9858,sha256:"4e5cc85667dfaaa0c67d3f308400645a578c08bd43f952cab6c55b7bce143ea9",tier:"lazy",contentType:"text/plain"},"arabic-rec.bin":{bytes:8853572,sha256:"5acc3265a1738dc31316258383830d5dbdfa5e8ebc2e710f9001f832ecfbffb0",tier:"lazy",contentType:"application/octet-stream"},"arabic_dict.txt":{bytes:405,sha256:"637c27c88512c22089bef927b34ada08f748dc132ac70facd68d8202384c2726",tier:"lazy",contentType:"text/plain"}}}});function bs(e,t){return{video:{width:{ideal:1280,max:1280},height:{ideal:720,max:720},facingMode:t,frameRate:{ideal:24,max:30}},audio:!1}}function De(){return typeof window>"u"||typeof navigator>"u"?!1:window.innerWidth<=768||/Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(String(navigator.userAgent??""))}var Bs,Qs,Ss,Yt=V(()=>{"use strict";Bs=.45,Qs=.9,Ss=.4});var bl,Bl,Ql,ws,ve,Vn,ks=V(()=>{"use strict";lt();bl=2500,Bl=1e3,Ql=1500,ws=25e5,ve=class extends Error{constructor(t,n){super(n??t),this.kind=t}},Vn=class{constructor(){this.recorder=null;this.stream=null;this.chunks=[];this.bytes=0;this.hardStopTimer=null;this.graceTimer=null;this.settled=!1}clearTimers(){this.hardStopTimer&&clearTimeout(this.hardStopTimer),this.graceTimer&&clearTimeout(this.graceTimer),this.hardStopTimer=null,this.graceTimer=null}record(t,n){if(this.recorder&&!this.settled)return Promise.reject(new ve("generic","record() called while a recording is in flight \u2014 ClipRecorder handles one recording at a time"));this.recorder=null,this.clearTimers(),this.chunks=[],this.bytes=0,this.settled=!1,this.stream=t;let i=pa();return new Promise((r,o)=>{let a;try{a=new MediaRecorder(t,i?{mimeType:i,videoBitsPerSecond:ws}:{videoBitsPerSecond:ws})}catch{try{a=new MediaRecorder(t)}catch{o(new ve("unsupported"));return}}this.recorder=a;let s=c=>{this.settled||(this.settled=!0,this.clearTimers(),c())},A=()=>s(()=>{let c=a.mimeType||i||fa,l=new Blob(this.chunks,{type:c});if(l.size===0){o(new ve("generic","empty clip"));return}if(Cn(l)){o(new ve("cliptoolarge"));return}r({blob:l,mimeType:c})});a.ondataavailable=c=>{c.data&&c.data.size&&(this.chunks.push(c.data),this.bytes+=c.data.size,this.bytes>ji&&s(()=>{try{a.state!=="inactive"&&a.stop()}catch{}o(new ve("cliptoolarge"))}))},a.onstop=A,a.onerror=()=>s(()=>o(new ve("generic")));try{a.start(Bl)}catch{s(()=>o(new ve("generic")));return}this.hardStopTimer=setTimeout(()=>{if(this.settled||n?.(),a.state!=="inactive"){try{a.stop()}catch{A()}this.graceTimer=setTimeout(A,Ql)}else A()},bl)})}stop(t){this.clearTimers();let n=this.recorder;if(n&&n.state!=="inactive")try{n.stop()}catch{}this.recorder=null,(t??this.stream)?.getTracks().forEach(r=>r.stop()),this.stream=null}}});function Ms(e,t,n=.92){return new Promise((i,r)=>{let o=e.videoWidth,a=e.videoHeight;if(!o||!a){r(new Error("video-not-ready"));return}let s=t.getContext("2d");if(!s){r(new Error("no-2d-context"));return}t.width=o,t.height=a,s.scale(-1,1),s.drawImage(e,-o,0),t.toBlob(A=>A?i(A):r(new Error("empty-keyframe")),"image/jpeg",n)})}var xs=V(()=>{"use strict"});function Sl(e){let t,n=-1;for(let i of e){let r=i.categories[0]?.score??0;r>n&&(t=i,n=r)}return t}function wl(e,t){let n=e?.[0],i=e?.[1];if(n===void 0||i===void 0)return;let r=s=>({x:s.x*t.width,y:s.y*t.height}),[o,a]=[r(n),r(i)];return o.x<=a.x?{left:o,right:a}:{left:a,right:o}}var Ds,Yn,vs=V(()=>{"use strict";qe();Ds=1e4,Yn=class e{constructor(t,n){this.tier="blaze";this.inner=t,n!==void 0&&(this.fallbackReason=n)}static async create(t,n){let i=await import("@mediapipe/tasks-vision"),r=await i.FilesetResolver.forVisionTasks(t),o=await i.FaceDetector.createFromOptions(r,{baseOptions:{modelAssetPath:`${t}/blaze_face_short_range.tflite`,delegate:"CPU"},runningMode:"IMAGE"});return new e(o,n)}async detect(t,n,i){let r;try{r=this.inner.detect(t).detections}catch{return null}let o=Sl(r);if(o?.boundingBox===void 0)return null;let a=Kt(t),s=wl(o.keypoints,a),A=o.keypoints?.[2],c={box:{x:o.boundingBox.originX,y:o.boundingBox.originY,width:o.boundingBox.width,height:o.boundingBox.height},...s!==void 0?{eyes:s}:{},...A!==void 0?{nose:{x:A.x*a.width,y:A.y*a.height}}:{},score:o.categories[0]?.score??0};return Kn(c,t,n,i)}destroy(){try{this.inner.close()}catch{}}}});function kl(){if(typeof OffscreenCanvas=="function")return new OffscreenCanvas(2,2);let e=document.createElement("canvas");return e.width=2,e.height=2,e}async function Rs(){let e=globalThis.FaceDetector;if(typeof e!="function")return{ok:!1,reason:"unsupported"};try{let t=new e({fastMode:!0,maxDetectedFaces:1});return await t.detect(kl()),{ok:!0,instance:t}}catch(t){return{ok:!1,reason:`smoke_failed:${t instanceof Error?t.message:String(t)}`}}}function Ml(e){if(e===void 0)return;let t=e.filter(r=>r.type==="eye").map(r=>r.locations[0]).filter(r=>r!==void 0),[n,i]=t;if(!(n===void 0||i===void 0))return n.x<=i.x?{left:n,right:i}:{left:i,right:n}}var Wn,_s=V(()=>{"use strict";qe();Wn=class{constructor(t,n){this.tier="native";this.inner=t,n!==void 0&&(this.fallbackReason=n)}async detect(t,n,i){let r;try{r=await this.inner.detect(t)}catch{return null}let o=r[0];if(o===void 0)return null;let a=Ml(o.landmarks),s={box:{x:o.boundingBox.x,y:o.boundingBox.y,width:o.boundingBox.width,height:o.boundingBox.height},...a!==void 0?{eyes:a}:{},score:1};return Kn(s,t,n,i)}destroy(){}}});function Kt(e){let t=e;if(typeof t.videoWidth=="number"&&t.videoWidth>0)return{width:t.videoWidth,height:t.videoHeight??0};if(typeof t.naturalWidth=="number"&&t.naturalWidth>0)return{width:t.naturalWidth,height:t.naturalHeight??0};let n=typeof t.width=="number"?t.width:0,i=typeof t.height=="number"?t.height:0;return{width:n,height:i}}function Kn(e,t,n,i){let r=Kt(t),o=r.width>0?n/r.width:1,a=r.height>0?i/r.height:1,s=A=>({x:A.x*o,y:A.y*a});return{box:{x:e.box.x*o,y:e.box.y*a,width:e.box.width*o,height:e.box.height*a},...e.eyes!==void 0?{eyes:{left:s(e.eyes.left),right:s(e.eyes.right)}}:{},...e.nose!==void 0?{nose:s(e.nose)}:{},score:e.score}}function Dl(e){return e instanceof Error?e.message:String(e)}async function ke(e){let t=e.preferred??xl,n=[];for(let i of t){if(i==="native"){let r=await Rs();if(r.ok)return new Wn(r.instance,Lr(n));n.push(`native:${r.reason}`);continue}try{return await vl(Yn.create(e.v3AssetBaseUrl??Fr,Lr(n)),e.blazeInitTimeoutMs??Ds)}catch(r){n.push(r instanceof qn?"blaze:blaze_init_timeout":`blaze:${Dl(r)}`)}}throw new Wt(Lr(n)??"no_tier_available")}function Lr(e){return e.length>0?e.join("; "):void 0}function vl(e,t){return new Promise((n,i)=>{let r=setTimeout(()=>{i(new qn(`init exceeded ${t}ms`)),e.then(o=>o.destroy(),()=>{})},t);e.then(o=>{clearTimeout(r),n(o)},o=>{clearTimeout(r),i(o)})})}var Fr,xl,Wt,qn,qe=V(()=>{"use strict";vs();_s();Fr="/models-v3",xl=["native","blaze"],Wt=class extends Error{constructor(t){super(`no detector tier available (${t})`),this.name="DetectorLadderError",this.fallbackReason=t}};qn=class extends Error{}});function Ts(){return typeof OffscreenCanvas=="function"&&typeof createImageBitmap=="function"&&typeof Worker=="function"}function Rl(e,t={}){let n=t.createDetector??ke,i=null;e.onmessage=r=>{let o=r.data;if(o.v!==ze){o.bitmap?.close?.();return}if(o.type==="init"){n(o.options).then(a=>{i=a;let s={v:ze,type:"ready",tier:a.tier,...a.fallbackReason!==void 0?{fallbackReason:a.fallbackReason}:{}};e.postMessage(s)});return}if(o.type==="detect"){let a=s=>{let A={v:ze,type:"result",id:o.id,observation:s};e.postMessage(A),o.bitmap.close?.()};if(i===null){a(null);return}i.detect(o.bitmap,o.streamWidth,o.streamHeight).then(a,()=>a(null))}}}var ze,zn,Ls=V(()=>{"use strict";qe();ze=1;typeof self<"u"&&typeof self.importScripts=="function"&&Rl(self);zn=class e{constructor(t,n){this.pending=new Map;this.nextId=1;this.worker=t,this.tier=n.tier,n.fallbackReason!==void 0&&(this.fallbackReason=n.fallbackReason),t.addEventListener("message",i=>{let r=i.data;if(r.v!==ze||r.type!=="result")return;let o=this.pending.get(r.id);this.pending.delete(r.id),o?.(r.observation)})}static create(t,n,i=1e4){return new Promise((r,o)=>{let a=setTimeout(()=>{t.removeEventListener("message",s),t.terminate(),o(new Error(`worker detector not ready within ${i}ms`))},i),s=c=>{let l=c.data;l.v!==ze||l.type!=="ready"||(clearTimeout(a),t.removeEventListener("message",s),r(new e(t,l)))};t.addEventListener("message",s);let A={v:ze,type:"init",options:n};t.postMessage(A)})}async detect(t,n,i){let r;try{typeof ImageBitmap<"u"&&t instanceof ImageBitmap?r=t:typeof createImageBitmap=="function"?r=await createImageBitmap(t):r=t}catch{return null}let o=this.nextId;return this.nextId+=1,new Promise(a=>{this.pending.set(o,a);let s={v:ze,type:"detect",id:o,bitmap:r,streamWidth:n,streamHeight:i};this.worker.postMessage(s,[r])})}destroy(){for(let t of this.pending.values())t(null);this.pending.clear(),this.worker.terminate()}}});var Xn,Fs=V(()=>{"use strict";Xn=class{constructor(t){this.timer=null;this.frameCallbackId=null;this.running=!1;this.busy=!1;this.lastRunAt=Number.NEGATIVE_INFINITY;this.degradeCount=0;this.durations=[];this.options=t,this.periodMs=1e3/t.cadenceHz}start(){if(this.running)return;this.running=!0;let t=this.options.video;if(typeof t?.requestVideoFrameCallback=="function"){let n=()=>{this.running&&(this.frameCallbackId=t.requestVideoFrameCallback?.(()=>{this.frameCallbackId=null,this.now()-this.lastRunAt>=this.periodMs&&this.tick(),n()}))};n();return}this.timer=setInterval(()=>this.tick(),this.periodMs)}stop(){this.running=!1,this.timer!==null&&(clearInterval(this.timer),this.timer=null),this.frameCallbackId!==null&&(this.options.video?.cancelVideoFrameCallback?.(this.frameCallbackId),this.frameCallbackId=null)}stats(){let t=this.durations.length===0?0:this.durations.reduce((n,i)=>n+i,0)/this.durations.length;return{degradeCount:this.degradeCount,meanDetectMs:t}}now(){return this.options.now?.()??performance.now()}tick(){if(!this.running)return;if(this.busy){this.degradeCount+=1;return}this.busy=!0,this.lastRunAt=this.now();let t=this.now();this.options.run().catch(()=>{}).finally(()=>{this.busy=!1,this.durations.push(this.now()-t),this.durations.length>20&&this.durations.shift()})}}});var _l,ht,jn,Ns=V(()=>{"use strict";Je();_l=Object.freeze({Q_GOOD:.6,RISE_PER_S:.9,FALL_PER_S:.25,CENTER_FALLOFF_IOD_MULTIPLE:1.35,BOX_EYE_OFFSET_FACTOR:.12,IOD_BOX_PROXY_FACTOR:.42,SIZE_IDEAL_MIN:.12,SIZE_IDEAL_MAX:.3,SIZE_HARD_MIN:.08,SIZE_HARD_MAX:.45,ROLL_MAX_DEG:25,MOTION_VELOCITY_IOD_PER_S:.5,MOTION_TAU_S:.4,MOTION_DEADBAND_IOD_PER_S:.1,READY_WINDOW_MS:500,GUIDE_SIZE:.6,GUIDE_CENTERING:.6,GUIDE_POSE:.6,GUIDE_EXPOSURE:.6,GUIDE_SHARPNESS:.35,GUIDE_MOTION:.5}),ht=e=>Math.min(1,Math.max(0,e)),jn=class{constructor(t={}){this.p=0;this.lastTickAt=null;this.lastCenter=null;this.velocityEma=0;this.qWindow=[];this.lastSizeDirection="ideal";this.t={..._l,...t}}reset(){this.p=0,this.lastTickAt=null,this.lastCenter=null,this.velocityEma=0,this.qWindow=[],this.lastSizeDirection="ideal"}tick(t){let{observation:n,quality:i,timestampMs:r}=t,o=this.lastTickAt===null?0:Math.max(0,(r-this.lastTickAt)/1e3);this.lastTickAt=r;let a={presence:0,centering:0,size:0,pose:0,sharpness:ht(i.sharpness),exposure:ht(i.exposure),motion:1};if(n!==null){a.presence=1;let l=this.geometryOf(n,t);a.centering=l.centering,a.size=l.size,a.pose=l.pose,a.motion=this.motionOf(l.center,l.iod,r)}else this.lastCenter=null,this.velocityEma=0;let s=Math.min(a.presence,a.centering,a.size,a.pose,a.sharpness,a.exposure,a.motion);this.p=ht(this.p+(s>=this.t.Q_GOOD?this.t.RISE_PER_S*s:-this.t.FALL_PER_S*(1-s))*o),this.qWindow.push({at:r,q:s}),this.qWindow=this.qWindow.filter(l=>l.at>=r-this.t.READY_WINDOW_MS);let A=this.qWindow.map(l=>l.q);if(A.length>=3){let l=Math.min(...A),m=A.indexOf(l);A=A.filter((d,h)=>h!==m)}let c=this.p>=1&&A.every(l=>l>=this.t.Q_GOOD);return{at:r,q:s,p:this.p,factors:a,guidanceKey:this.guidanceOf(a,i,s),ready:c,accepted:s>=this.t.Q_GOOD}}geometryOf(t,n){let{box:i,eyes:r}=t,o={x:n.frameWidth/2,y:n.frameHeight/2},a=Math.min(n.frameWidth,n.frameHeight),s=r!==void 0?{x:(r.left.x+r.right.x)/2,y:(r.left.y+r.right.y)/2}:{x:i.x+i.width/2,y:i.y+i.height/2-this.t.BOX_EYE_OFFSET_FACTOR*i.height},A=r!==void 0?Math.hypot(r.right.x-r.left.x,r.right.y-r.left.y):this.t.IOD_BOX_PROXY_FACTOR*i.width,c=Math.hypot(s.x-o.x,s.y-o.y),l=A<=0?0:1-ht(c/(this.t.CENTER_FALLOFF_IOD_MULTIPLE*A)),m=a>0?A/a:0;this.lastSizeDirection=m<this.t.SIZE_IDEAL_MIN?"far":m>this.t.SIZE_IDEAL_MAX?"close":"ideal";let d;m<this.t.SIZE_HARD_MIN||m>this.t.SIZE_HARD_MAX?d=0:m<this.t.SIZE_IDEAL_MIN?d=(m-this.t.SIZE_HARD_MIN)/(this.t.SIZE_IDEAL_MIN-this.t.SIZE_HARD_MIN):m>this.t.SIZE_IDEAL_MAX?d=(this.t.SIZE_HARD_MAX-m)/(this.t.SIZE_HARD_MAX-this.t.SIZE_IDEAL_MAX):d=1;let h=1;if(r!==void 0){let u=Math.abs(Math.atan2(r.right.y-r.left.y,r.right.x-r.left.x))*180/Math.PI;h=1-ht(u/this.t.ROLL_MAX_DEG)}return{center:s,iod:A,centering:l,size:d,pose:h}}motionOf(t,n,i){let r=this.lastCenter;if(this.lastCenter={...t,at:i},r===null||n<=0)return 1;let o=(i-r.at)/1e3;if(o<=0)return 1;let a=Math.hypot(t.x-r.x,t.y-r.y)/n/o;a<=this.t.MOTION_DEADBAND_IOD_PER_S&&(a=0);let s=1-Math.exp(-o/this.t.MOTION_TAU_S);return this.velocityEma=s*a+(1-s)*this.velocityEma,1-ht(this.velocityEma/this.t.MOTION_VELOCITY_IOD_PER_S)}guidanceOf(t,n,i){if(t.presence<=0)return"fcv3.no_face";if(t.size<this.t.GUIDE_SIZE)return this.sizeGuidance();if(t.centering<this.t.GUIDE_CENTERING)return"fcv3.center_face";if(t.pose<this.t.GUIDE_POSE)return"fcv3.straighten";if(t.exposure<this.t.GUIDE_EXPOSURE)return this.exposureGuidance(n);if(t.sharpness<this.t.GUIDE_SHARPNESS)return"fcv3.steady_camera";if(t.motion<this.t.GUIDE_MOTION)return"fcv3.hold_still";if(i<this.t.Q_GOOD){let r=[["size",this.sizeGuidance()],["centering","fcv3.center_face"],["pose","fcv3.straighten"],["exposure",this.exposureGuidance(n)],["sharpness","fcv3.steady_camera"],["motion","fcv3.hold_still"]],o=r[0];for(let a of r)t[a[0]]<t[o[0]]&&(o=a);return o[1]}return"fcv3.hold_still"}sizeGuidance(){return this.lastSizeDirection==="far"?"fcv3.come_closer":"fcv3.move_back"}exposureGuidance(t){let n=(Se[0]+Se[1])/2;return t.meanLuma<n?"fcv3.more_light":"fcv3.too_bright"}}});function Ll(e){if(e.accepted)return null;if(e.factors.presence<=0)return"no_face";let t="size";for(let n of Tl)e.factors[n]<e.factors[t]&&(t=n);return t}var Tl,Zn,Ps=V(()=>{"use strict";Tl=["size","centering","pose","exposure","sharpness","motion"];Zn=class{constructor(){this.blocked={};this.acceptedMs=0;this.ticks=0;this.lastAt=null}record(t){let n=this.lastAt===null?0:Math.max(0,t.at-this.lastAt);this.lastAt=t.at,this.ticks+=1;let i=Ll(t);if(i===null){this.acceptedMs+=n;return}let r=this.blocked[i]??{count:0,ms:0};r.count+=1,r.ms+=n,this.blocked[i]=r}summary(){let t={};for(let[n,i]of Object.entries(this.blocked))t[n]={count:i.count,ms:Math.round(i.ms)};return{blocked:t,acceptedMs:Math.round(this.acceptedMs),ticks:this.ticks}}}});var Ks={};ue(Ks,{RANK_CANDIDATES:()=>Fl,RANK_TOLERANCE:()=>$n,RANK_WINDOW_MS:()=>Nl,ROLL_ZERO_DEG:()=>Gl,SHARPNESS_REPORT_MAX:()=>Vs,YAW_REPORT_MAX:()=>Js,YAW_ZERO_IOD:()=>Pl,collectRankedKeyframes:()=>Ys,default:()=>Hl,featuresOf:()=>Hs,frontalOf:()=>Os,rankKeyframes:()=>Us});function Os(e){let t=e.eyes;if(t===void 0)return{frontal:1,yaw:null,roll:null};let n=t.right.x-t.left.x,i=t.right.y-t.left.y,r=n*n+i*i;if(r===0)return{frontal:1,yaw:null,roll:null};let o=Math.abs(Math.atan2(i,Math.abs(n))*180/Math.PI),a=Gs(1-o/30),s=null,A=e.nose;if(A!==void 0){let c=(t.left.x+t.right.x)/2,l=(t.left.y+t.right.y)/2;s=Math.abs(((A.x-c)*n+(A.y-l)*i)/r),a*=Gs(1-s/.5)}return{frontal:a,yaw:s,roll:o}}function Hs(e,t){return e===null?{face:!1,frontal:0,yaw:null,roll:null,eyes:null,score:0,sharpness:t}:{face:!0,...Os(e),eyes:null,score:e.score,sharpness:t}}function Us(e){let t=e.map((r,o)=>o),n=(r,o)=>{let a=Number.NEGATIVE_INFINITY;for(let s of t)a=Math.max(a,r(e[s]));t=t.filter(s=>r(e[s])>=a-o)};n(r=>r.frontal,$n.frontal),n(r=>r.eyes??1,$n.eyes),n(r=>r.score,$n.score);let i=-1;for(let r of t)(i===-1||e[r].sharpness>e[i].sharpness)&&(i=r);return i}function Ol(e){return{face:e.face,frontal:pt(e.frontal),...e.yaw!==null?{yaw:Math.min(pt(e.yaw),Js)}:{},...e.roll!==null?{roll:pt(e.roll)}:{},...e.eyes!==null?{eyes:pt(e.eyes)}:{},score:pt(e.score),sharpness:Math.min(pt(e.sharpness),Vs)}}async function Ys(e,t){let{options:n}=e,i=n.video,r=n.now??(()=>performance.now()),o=n.captureKeyframe??(d=>e.defaultKeyframe(d)),a=600/3,s=[],A=[],c=0;for(let d=0;d<4;d+=1){if(t!==e.attempt)return null;let h=e.detector,u=Promise.resolve(null),f,p=0;try{if(h!==null){let Q=e.profiler?.profile.inputWidth??160,k=n.makeSnapshot?.(i,Q)??e.defaultSnapshot(i,Q);f=o(i).then(b=>(p=r(),b));let I=r();u=h.detect(k,i.videoWidth,i.videoHeight).then(b=>(c+=r()-I,b),()=>null)}else f=o(i).then(Q=>(p=r(),Q));let[C,w]=await Promise.all([f,u]);s.push(C),A.push(Hs(w,C.sharpness))}catch{f?.catch(()=>{})}let g=p>0?Math.max(0,r()-p):0;d<3&&await new Promise(C=>setTimeout(C,Math.max(0,a-g)))}if(t!==e.attempt)return null;let l=Us(A);if(l===-1)return null;let m=0;A.forEach((d,h)=>{d.sharpness>A[m].sharpness&&(m=h)});try{n.telemetry?.({type:"keyframe",tier:e.detector?.tier??null,chosen:l,sharpest:m,detectMs:Math.round(c),candidates:A.map(Ol)})}catch{}return s[l]??null}var Fl,Nl,Pl,Gl,$n,Gs,pt,Js,Vs,Hl,Ws=V(()=>{"use strict";Fl=4,Nl=600,Pl=.5,Gl=30,$n={frontal:.1,eyes:.1,score:.05},Gs=e=>e<0?0:e>1?1:e;pt=e=>Number.isFinite(e)?Math.round(e*1e3)/1e3:0,Js=99,Vs=999999;Hl=Ys});function Vl(e){return new Promise(t=>setTimeout(t,e))}function Yl(e){return e instanceof Error?e.message:String(e)}function zs(e,t,n){try{let i=document.createElement("canvas"),r=n/Math.max(1,t.width);i.width=Math.max(1,Math.round(t.width*r)),i.height=Math.max(1,Math.round(t.height*r));let o=i.getContext("2d");return o===null?null:(o.drawImage(e,t.x,t.y,t.width,t.height,0,0,i.width,i.height),o.getImageData(0,0,i.width,i.height))}catch{return null}}var Ul,Nr,Jl,qs,ei,Pr,Xs=V(()=>{"use strict";In();Yt();ks();xs();lt();qe();Ls();$i();Fs();Ns();Je();Ps();Ul=1e3,Nr=4,Jl=600,qs={sharpness:1,exposure:1,meanLuma:128},ei=class{constructor(t){this.handlers=new Map;this.stateValue="idle";this.attempt=0;this.stream=null;this.detector=null;this.scheduler=null;this.gate=null;this.profiler=null;this.lastGuidanceKey=null;this.positioningStartedAt=0;this.cameraRequestedAt=null;this.cameraReadyAt=null;this.faceAcquiredAt=null;this.captureCompleteAt=null;this.fired=!1;this.carriedDegrade=0;this.carriedMeans=[];this.blockStats=null;this.lastGateSnapshotAt=Number.NEGATIVE_INFINITY;this.snapshotCanvas=null;this.options=t,this.facing=t.facingMode??"user"}get state(){return this.stateValue}on(t,n){let i=this.handlers.get(t);return i||(i=new Set,this.handlers.set(t,i)),i.add(n),()=>i?.delete(n)}emit(t,n){for(let i of[...this.handlers.get(t)??[]])i(n)}async start(t={}){t.facingMode!==void 0&&(this.facing=t.facingMode),this.attempt+=1,await this.run(this.attempt)}get facingMode(){return this.facing}retry(){this.teardownAttempt(),this.start()}switchCamera(){this.facing=this.facing==="user"?"environment":"user",this.teardownAttempt(),this.start()}destroy(){this.attempt+=1,this.teardownAttempt(),this.detector?.destroy(),this.detector=null,this.options.video.srcObject=null}async run(t){let{options:n}=this;this.fired=!1,this.lastGuidanceKey=null,this.carriedDegrade=0,this.carriedMeans=[],this.cameraRequestedAt=null,this.cameraReadyAt=null,this.faceAcquiredAt=null,this.captureCompleteAt=null,this.setState("preflight");let i=Ia();if(i!=="OK"){this.fail(i==="INSECURE_CONTEXT"?"insecure":"unsupported");return}this.setState("acquiring");let r=n.getUserMedia??(A=>navigator.mediaDevices.getUserMedia(A)),o;this.cameraRequestedAt=this.now();try{o=await r(bs(De(),this.facing))}catch(A){if(t!==this.attempt)return;this.fail(ct(A));return}if(fn(o),t!==this.attempt){for(let A of o.getTracks())A.stop();return}if(this.stream=o,n.video.srcObject=o,await n.video.play().catch(()=>{}),t!==this.attempt)return;if(this.cameraReadyAt=this.now(),this.detector===null){let A={...n.v3AssetBaseUrl!==void 0?{v3AssetBaseUrl:n.v3AssetBaseUrl}:{}},c=n.createDetector??(n.createWorker!==void 0&&Ts()?async()=>{try{return await zn.create(n.createWorker(),A)}catch{return ke(A)}}:()=>ke(A)),l;try{l=await c()}catch(m){t===this.attempt&&this.fail("models",m instanceof Wt?m.fallbackReason:Yl(m));return}if(t!==this.attempt){l.destroy();return}this.detector=l,this.options.telemetry?.({type:"detector",tier:l.tier,fallbackReason:l.fallbackReason})}let a=En(),s=n.deviceClass??bn(a);this.profiler=new yn(s),this.options.telemetry?.({type:"profile",staticClass:s,activeClass:this.profiler.deviceClass,simd:a.simd}),this.gate=new jn(n.thresholds??{}),this.blockStats=new Zn,this.lastGateSnapshotAt=this.now(),n.rankKeyframes?.()&&Promise.resolve().then(()=>(Ws(),Ks)).then(A=>Pr=A,()=>{}),this.setState("positioning"),this.positioningStartedAt=this.now(),this.startScheduler(t)}get animations(){return this.profiler?.profile.animations??"full"}startScheduler(t){let n=this.profiler;if(n===null)return;if(this.scheduler!==null){let r=this.scheduler.stats();this.carriedDegrade+=r.degradeCount,r.meanDetectMs>0&&this.carriedMeans.push(r.meanDetectMs),this.scheduler.stop()}let i=new Xn({cadenceHz:n.profile.cadenceHz,video:this.options.video,now:this.options.now,run:()=>this.detectTick(t)});this.scheduler=i,i.start()}async detectTick(t){let{detector:n,gate:i,profiler:r}=this,o=this.options.video;if(t!==this.attempt||n===null||i===null||r===null||this.fired||o.videoWidth===0)return;let a=r.deviceClass,s=this.now(),A=this.options.makeSnapshot?.(o,r.profile.inputWidth)??this.defaultSnapshot(o,r.profile.inputWidth),c=null;try{c=await n.detect(A,o.videoWidth,o.videoHeight)}catch{c=null}if(t!==this.attempt||this.fired)return;r.record(this.now()-s),r.deviceClass!==a&&this.startScheduler(t);let l=c===null?qs:this.options.measureQuality?.(o,c.box)??this.defaultQuality(o,c.box),m=i.tick({timestampMs:this.now(),observation:c,quality:l,frameWidth:o.videoWidth,frameHeight:o.videoHeight});m.accepted&&this.faceAcquiredAt===null&&(this.faceAcquiredAt=m.at),this.blockStats?.record(m),!m.ready&&m.at-this.lastGateSnapshotAt>=Ul&&(this.lastGateSnapshotAt=m.at,this.reportGate(!1)),this.emit("checks",{engine:"v3",progress:m.p,q:m.q,factors:m.factors,attempt:t}),m.guidanceKey!==this.lastGuidanceKey&&(this.lastGuidanceKey=m.guidanceKey,this.emit("guidance",{key:m.guidanceKey})),m.ready&&this.stateValue==="positioning"&&(this.fired=!0,this.captureCompleteAt=m.at,this.fire(t))}async fire(t){let{options:n}=this,i=this.scheduler;i?.stop(),this.reportGate(!0);let r=i?.stats()??{degradeCount:0,meanDetectMs:0},o=[...this.carriedMeans,...r.meanDetectMs>0?[r.meanDetectMs]:[]];n.telemetry?.({type:"fired",timeToGateMs:this.now()-this.positioningStartedAt,degradeCount:this.carriedDegrade+r.degradeCount,meanDetectMs:o.length===0?0:o.reduce((u,f)=>u+f,0)/o.length});let a=n.mode??"clip",s=n.rankKeyframes?.()&&Pr?Pr.default(this,t).catch(()=>this.collectKeyframes(t)):this.collectKeyframes(t);if(a==="photo"){let u=await s;if(t!==this.attempt)return;if(u===null){this.fail("generic");return}this.finishCapture({keyframe:u.blob,previewDataUrl:u.previewDataUrl});return}this.setState("recording");let A=n.createRecorder?.()??new Vn,c=this.stream;if(c===null){this.fail("generic");return}let l=null;s.then(u=>{l=u},()=>{});let m=()=>{t===this.attempt&&l!==null&&this.emit("frozen",{previewDataUrl:l.previewDataUrl})},d,h;try{[d,h]=await Promise.all([A.record(c,m),s])}catch(u){if(t!==this.attempt)return;let f=u.kind;this.fail(f==="cliptoolarge"?"cliptoolarge":"recorder");return}if(t===this.attempt){if(Cn(d.blob)){this.fail("cliptoolarge");return}if(h===null){this.fail("generic");return}this.finishCapture({clip:d.blob,clipMimeType:d.mimeType,keyframe:h.blob,previewDataUrl:h.previewDataUrl})}}async collectKeyframes(t){let n=this.options.captureKeyframe??(o=>this.defaultKeyframe(o)),i=Jl/(Nr-1),r=null;for(let o=0;o<Nr;o+=1){if(t!==this.attempt)return r;try{let a=await n(this.options.video);(r===null||a.sharpness>r.sharpness)&&(r=a)}catch{}o<Nr-1&&await Vl(i)}return r}finishCapture(t){this.stopTracks(),this.setState("captured");let n=this.captureTiming();this.emit("artifacts",n===void 0?t:{...t,timing:n})}captureTiming(){let t=(a,s)=>a!==null&&s!==null?Math.max(0,Math.round(s-a)):void 0,n=t(this.cameraRequestedAt,this.cameraReadyAt),i=t(this.cameraReadyAt,this.faceAcquiredAt),r=t(this.faceAcquiredAt,this.captureCompleteAt),o={...n!==void 0?{cameraReadyMs:n}:{},...i!==void 0?{faceAcquireMs:i}:{},...r!==void 0?{captureMs:r}:{}};return Object.keys(o).length>0?o:void 0}async defaultKeyframe(t){let n=document.createElement("canvas"),i=await Ms(t,n),r=n.toDataURL("image/jpeg",.92);return{blob:i,previewDataUrl:r,sharpness:this.centerSharpness(t)}}defaultSnapshot(t,n){try{let i=this.snapshotCanvas??document.createElement("canvas"),r=n/Math.max(1,t.videoWidth),o=Math.max(1,Math.round(t.videoWidth*r)),a=Math.max(1,Math.round(t.videoHeight*r)),s=i.getContext("2d");return s===null?t:(i.width!==o&&(i.width=o),i.height!==a&&(i.height=a),s.drawImage(t,0,0,o,a),this.snapshotCanvas=i,i)}catch{return t}}defaultQuality(t,n){let i=zs(t,n,96);return i===null?qs:{sharpness:we(i),exposure:At(i),meanLuma:Ue(i)}}centerSharpness(t){let n=Kt(t),i=zs(t,{x:n.width*.25,y:n.height*.25,width:n.width*.5,height:n.height*.5},96);return i===null?0:we(i)}teardownAttempt(){this.scheduler?.stop(),this.scheduler=null,this.reportGate(!0),this.gate=null,this.stopTracks()}reportGate(t){let n=this.blockStats,i=this.profiler;if(n===null||i===null)return;let r=n.summary();t&&(this.blockStats=null),r.ticks!==0&&this.options.telemetry?.({type:"gate",final:t,activeClass:i.deviceClass,cadenceHz:i.profile.cadenceHz,...r})}stopTracks(){if(this.stream!==null){for(let t of this.stream.getTracks())t.stop();this.stream=null}}fail(t,n){this.scheduler?.stop(),this.reportGate(!0),this.stopTracks(),this.setState("error"),this.options.telemetry?.({type:"error",kind:t,fallbackReason:n}),this.emit("error",{kind:t,retryable:t!=="insecure"&&t!=="unsupported"})}setState(t){this.stateValue=t,this.emit("statechange",{state:t})}now(){return this.options.now?.()??performance.now()}}});function Ne(){let e=new Map;return{on(t,n){let i=e.get(t);i===void 0&&(i=new Set,e.set(t,i));let r=n;return i.add(r),()=>{i?.delete(r)}},emit(t,n){let i=e.get(t);if(i!==void 0)for(let r of[...i])r(n)},clear(){e.clear()}}}var qt=V(()=>{"use strict"});function Or(){let e=globalThis;return e[ti]??(e[ti]=new Map),e[ti]}function Kl(e){let t=(e??Fr).replace(/\/+$/,"");return t===""?"/":t}function Gr(e,t){if(e.status!==t){e.status=t;for(let n of[...e.listeners])n(t)}}function js(e){Jr=e??Ur}function Zs(){for(let e of Or().values())e.detector?.destroy();Or().clear(),Jr=Ur}function Wl(e,t){if((e.status==="loading"||e.status==="ready")&&e.promise!==null)return e.promise;Gr(e,"loading");let n=new Promise(s=>s(Jr(t)));e.detectorPromise=n;let i,r=new Promise((s,A)=>{i=setTimeout(()=>{n.then(c=>c.destroy(),()=>{}),A(new Error(`detector preload exceeded ${ni} ms`))},ni)}),a=Promise.race([n,r]).then(s=>e.detectorPromise!==n?(s.destroy(),e.status):(e.detector=s,Gr(e,"ready"),"ready"),s=>(e.detectorPromise===n&&(e.detectorPromise=null,e.detector=null,Gr(e,"failed"),console.warn("[@sekyro/web] face-detector preload failed:",s)),e.status)).finally(()=>clearTimeout(i));return e.promise=a,e.scheduled?.settle(a),a}function ql(e){return{get tier(){return e.tier},get fallbackReason(){return e.fallbackReason},detect:(...t)=>e.detect(...t),destroy:()=>{}}}function ii(e){let t=Kl(e),n=Or().get(t);if(!(n===void 0||n.detector===null&&n.detectorPromise===null&&n.scheduled===null))return async()=>{n.scheduled!==null&&Wl(n,t);let i=n.promise;for(;n.detector===null&&i!==null&&(await i,n.promise!==i);)i=n.promise;return n.detector!==null?ql(n.detector):ke({v3AssetBaseUrl:t})}}var Hr,ni,ti,Ur,Jr,Vr=V(()=>{"use strict";qe();Hr=12e4,ni=13e4,ti=Symbol.for("@sekyro/web.preload.v1");Ur=e=>ke({preferred:["blaze"],v3AssetBaseUrl:e,blazeInitTimeoutMs:Hr}),Jr=Ur});function $s(){if(typeof navigator>"u"||!("wakeLock"in navigator))return null;let e=navigator.wakeLock;return typeof e?.request=="function"?e:null}function eA(){return typeof document>"u"||document.visibilityState==="visible"}function tA(e){try{e.release().catch(()=>{})}catch{}}function ft(e={}){if(e.enabled===!1)return{setActive:()=>{}};let t=!1,n=null,i=!1,r=!1,o=()=>{if(!t||i||n!==null&&!n.released)return;let A=$s();if(A===null||!eA())return;let c;try{c=A.request("screen")}catch{return}i=!0,c.then(l=>{if(i=!1,!t){tA(l);return}n=l,l.addEventListener?.("release",()=>{n===l&&(n=null)})},()=>{i=!1})},a=()=>{eA()&&o()},s=A=>{typeof document>"u"||A===r||(r=A,A?document.addEventListener("visibilitychange",a):document.removeEventListener("visibilitychange",a))};return{setActive:A=>{if(t=A,A){if($s()===null)return;s(!0),o();return}if(s(!1),n!==null){let c=n;n=null,tA(c)}}}}var ri=V(()=>{"use strict"});function Yr(e){switch(e){case"fcv3.no_face":case"fcv3.center_face":case"fcv3.straighten":return"center";case"fcv3.come_closer":return"closer";case"fcv3.move_back":return"farther";case"fcv3.more_light":case"fcv3.too_bright":return"light";case"fcv3.hold_still":case"fcv3.steady_camera":return"still";default:return null}}function Kr(e){switch(e){case"preflight":case"acquiring":return"starting";case"positioning":return"gating";default:return e}}function zt(e){switch(e){case"permission":case"notfound":case"inuse":case"insecure":case"unsupported":return e;default:{let t=e;return"generic"}}}function oi(e,t={},n){let i=t.now??(()=>performance.now()),r=Ne(),o=!Ca(),a=t.engineOptions,s=a?.createDetector===void 0&&a?.createWorker===void 0?{createDetector:()=>{let L=ii(e.assetBaseUrl);return L!==void 0?L():ke({v3AssetBaseUrl:e.assetBaseUrl})}}:{},A={video:e.video,mode:o?"photo":"clip",rankKeyframes:n,facingMode:e.facing,v3AssetBaseUrl:e.assetBaseUrl,...t.engineOptions??{},...s},c=t.createEngine?.(A)??new ei(A),l="idle",m=null,d=0,h=!1,u="full",f=null,p=null,g=0,C=0,w=()=>{e.video.videoWidth>0&&e.video.videoHeight>0&&(g=e.video.videoWidth,C=e.video.videoHeight)},Q=ft({enabled:e.keepScreenAwake!==!1}),k=L=>{l=L,Q.setActive(L==="starting"||L==="gating"||L==="recording"),r.emit("state",L)},I=()=>r.emit("gate",{progress:d,hint:m,faceDetected:h}),b=()=>{let L=c.animations??"full";L!==u&&(u=L,r.emit("profile",{animations:u}))},v=[c.on("statechange",({state:L})=>{let W=Kr(L);W==="starting"&&l!=="starting"&&(m=null,d=0,h=!1,f=null,p=null,g=0,C=0),k(W),b(),W==="recording"&&(w(),f=i(),m="hold",d=1,I())}),c.on("checks",L=>{w(),d=L.progress,h=L.factors.presence>0,I(),b()}),c.on("guidance",({key:L})=>{m=Yr(L),I()}),c.on("frozen",({previewDataUrl:L})=>{p=i(),r.emit("frozen",{previewDataUrl:L})}),c.on("artifacts",L=>{let W=f!==null&&p!==null?Math.max(0,Math.round(p-f)):void 0;r.emit("captured",{keyframe:L.keyframe,...L.clip!==void 0?{clip:L.clip}:{},...L.clipMimeType!==void 0?{clipMime:L.clipMimeType}:{},width:e.video.videoWidth||g,height:e.video.videoHeight||C,...W!==void 0?{clipMs:W}:{},captureChannel:De()?"mobile":"desktop",...o?{degraded:"NO_RECORDER"}:{},engine:"v3",...L.timing})}),c.on("error",({kind:L,retryable:W})=>{r.emit("error",{kind:zt(L),retryable:W})})];return{handle:{get state(){return l},on:(L,W)=>r.on(L,W),start:L=>c.start({facingMode:L?.facing}),retry:()=>c.retry(),switchCamera:()=>c.switchCamera(),destroy:()=>{for(let L of v)L();Q.setActive(!1),c.destroy(),r.clear()}},setFlowState:L=>{l!==L&&k(L)}}}var ai=V(()=>{"use strict";Yt();lt();Xs();qe();qt();Vr();ri()});var ce,Xt=V(()=>{"use strict";ce=class extends Error{constructor(t){super(t.message),this.name="HostedApiError",this.status=t.status,this.code=t.code,t.retryAfterSeconds!==void 0&&(this.retryAfterSeconds=t.retryAfterSeconds)}}});function It(e){return(e.split(";")[0]??"").trim()}function Wr(e){if((typeof e=="object"&&e!==null?e.name:void 0)==="TimeoutError")return new ce({status:0,code:"timeout",message:"request timed out"});let n=e instanceof Error?e.message:String(e);return new ce({status:0,code:"network_error",message:`network request failed: ${n}`})}function nu(e){return e!==null&&typeof e=="object"&&"success"in e&&"data"in e?e.data:e}async function iu(e){let t="unknown_error",n=`request failed (HTTP ${e.status})`,i=Number.NaN;try{let a=await e.json();if(a!==null&&typeof a=="object"){let s=a;typeof s.code=="string"&&s.code.length>0&&(t=s.code),typeof s.message=="string"&&s.message.length>0&&(n=s.message),typeof s.retryAfterSeconds=="number"&&(i=s.retryAfterSeconds)}}catch{}let r=e.headers.get("retry-after"),o=r===null?Math.floor(i):Number.parseInt(r,10);return new ce({status:e.status,code:t,message:n,...Number.isFinite(o)&&o>=0?{retryAfterSeconds:o}:{}})}function ru(e){return new Promise(t=>setTimeout(t,e))}var zl,nA,Xl,jl,Zl,$l,eu,tu,si,qr=V(()=>{"use strict";In();Xt();zl=6e4,nA=4,Xl=3e4,jl=9e5,Zl=200,$l=5,eu=400;tu={liveness:"clipKey",face_match:"imageKey",doc_ocr:"imageKey"},si=class{constructor(t){this.sessionId=null;this.bootstrap=null;this.captureNonces=[];this.captureFetch=null;this.apiOrigin=t.apiOrigin.replace(/\/+$/,""),this.sessionToken=t.sessionToken;let n=t.fetch;this.fetchImpl=(i,r)=>(n??globalThis.fetch).call(globalThis,i,r),this.requestTimeoutMs=t.requestTimeoutMs??Xl,this.retryAttempts=t.inProgressRetry?.attempts??$l,this.retryDelayMs=t.inProgressRetry?.delayMs??eu}async getSession(){let t=await this.api("GET","/hosted/session");return this.sessionId=t.sessionId,t}async recordConsent(t){return this.api("POST","/hosted/consent",{body:{locale:t}})}async selectMethod(t){let n=await this.api("POST","/hosted/method",{body:{method:t}});return this.sessionId=n.sessionId,n}async selectContact(t){return this.api("POST","/hosted/contact",{body:{channel:t}})}async confirmIdentity(t){return this.api("POST","/hosted/identity/confirm",{body:{decision:t}})}async identityPortrait(){return this.api("GET","/hosted/identity/portrait",{blob:!0})}async presign(t,n,i){let r=await this.ensureSessionId(),o={kind:t,contentType:It(n),contentLength:i};return this.api("POST",`/sessions/${r}/media`,{body:o})}armCapture(t=2){this.fillCaptureNonces(t)}async presignCapture(t,n,i,r={}){let o=await this.ensureSessionId(),a=await this.takeCaptureNonce(),s=a===void 0?void 0:{nonce:a,...r.engine!==void 0?{engine:r.engine.slice(0,32)}:{},...r.durationMs!==void 0&&Number.isFinite(r.durationMs)?{captureMs:Math.min(36e5,Math.max(0,Math.round(r.durationMs)))}:{}},A={kind:t,contentType:It(n),contentLength:i,...s!==void 0?{capture:s}:{}};return this.api("POST",`/sessions/${o}/media`,{body:A})}async takeCaptureNonce(){let t=()=>{let n=Date.now();return this.captureNonces=this.captureNonces.filter(i=>i.expiresAt-zl>n),this.captureNonces.shift()?.nonce};for(let n=0;n<2;n++){let i=t();if(i!==void 0)return i;await this.fillCaptureNonces(1)}return t()}fillCaptureNonces(t){return this.captureFetch??(this.captureFetch=(async()=>{try{let n=await this.ensureSessionId(),i=await this.api("POST",`/sessions/${n}/media/capture-nonces`,{body:{count:Math.min(nA,Math.max(1,t))}}),r=Date.now()+Math.max(0,i.expiresIn)*1e3;for(let o of Array.isArray(i.nonces)?i.nonces:[])typeof o=="string"&&o.length>0&&this.captureNonces.push({nonce:o,expiresAt:r});this.captureNonces=this.captureNonces.slice(-nA)}catch{}})().finally(()=>{this.captureFetch=null})),this.captureFetch}async uploadToSpaces(t,n,i){let r;try{r=await this.fetchImpl(t,{method:"PUT",headers:{"content-type":It(i)},body:n,signal:AbortSignal.timeout(jl)})}catch(o){throw Wr(o)}if(!r.ok){let o=(await r.text().catch(()=>"")).slice(0,Zl);throw new ce({status:r.status,code:"upload_failed",message:`media upload failed (HTTP ${r.status})${o?`: ${o}`:""}`})}}async completeMedia(t){let n=await this.ensureSessionId();return this.api("POST",`/sessions/${n}/media/complete`,{body:{key:t}})}async submitCheck(t,n,i={}){let r=await this.ensureSessionId(),o={input:n,...i.forceOutcome!==void 0?{forceOutcome:i.forceOutcome}:{}};return this.api("POST",`/sessions/${r}/checks/${t}`,{body:o,...i.idempotencyKey!==void 0?{idempotencyKey:i.idempotencyKey}:{}})}async uploadAndSubmit(t,n,i,r={}){let o=It(n.contentType),a=await this.presign(n.kind,o,n.blob.size);await this.uploadToSpaces(a.uploadUrl,n.blob,o);let s=await this.completeMedia(a.key),A={...i,[tu[t]]:s.key};return this.submitCheck(t,A,r)}async ensureSessionId(){return this.sessionId!==null?this.sessionId:(this.bootstrap??(this.bootstrap=this.getSession().finally(()=>{this.bootstrap=null})),(await this.bootstrap).sessionId)}async api(t,n,i={}){let r=`${this.apiOrigin}/api/v2${n}`,o={"x-session-token":this.sessionToken};i.body!==void 0&&(o["content-type"]="application/json"),i.idempotencyKey!==void 0&&(o["x-idempotency-key"]=i.idempotencyKey);try{let a=pn.timezone();a!==void 0&&(o["sekyro-client-timezone"]=a)}catch{}try{let a=await pn.deviceHeader();a!==void 0&&(o["sekyro-client-device"]=a)}catch{}for(let a=0;;a++){let s;try{s=await this.fetchImpl(r,{method:t,headers:o,...i.body!==void 0?{body:JSON.stringify(i.body)}:{},cache:"no-store",signal:AbortSignal.timeout(this.requestTimeoutMs)})}catch(c){throw Wr(c)}if(s.ok){if(i.blob===!0)try{return await s.blob()}catch(l){throw Wr(l)}let c;try{c=await s.json()}catch{throw new ce({status:s.status,code:"unknown_error",message:`response body was not valid JSON (HTTP ${s.status})`})}return nu(c)}let A=await iu(s);if(A.code==="idempotency_in_progress"&&a<this.retryAttempts){this.retryDelayMs>0&&await ru(this.retryDelayMs);continue}throw A}}}});function Xe(e){let t=e.methodChoice;if(t===void 0||!t.available||t.selected!==null)return null;let n=Ie(e)?.checkType;return n==="phone_otp"||n==="email_otp"?null:t}function je(e){return e!==void 0&&(e.state==="pending"||e.state==="input_required")}function he(e){return e.status!=="created"&&e.status!=="in_progress"}function Ie(e){return e.steps.find(t=>je(t))}function ye(e,t){return e.steps.find(n=>n.checkType===t)}function Xr(e,t){let n=t.steps.find(r=>r.checkType==="liveness"),i=t.steps.find(r=>r.checkType==="face_match");return ye(e,"face_match")?.state==="pending"&&(n?.state==="passed"||n?.state==="review")&&i!==void 0&&i.state!=="pending"&&i.state!=="skipped"}function Ai(e,t,n){let i=new Map(e.steps.map(a=>[a.checkType,a])),r=n==="liveness"&&Xr(e,t),o=t.steps.map(a=>{let s=i.get(a.checkType),A=s?.attemptsRemaining??0,c={...s??{},checkType:a.checkType,state:a.state,attemptsRemaining:a.checkType===n||a.checkType==="face_match"&&r?Math.max(0,A-1):A};return a.reason!==void 0?c.reason=a.reason:delete c.reason,a.attemptsExhausted!==void 0?c.attemptsExhausted=a.attemptsExhausted:delete c.attemptsExhausted,c});return{...e,status:t.status,outcome:t.outcome,failureReason:t.failureReason,steps:o,expiresAt:t.expiresAt}}function Me(e,t){return t===void 0?{sessionId:e,status:"unavailable"}:{sessionId:e,status:"unavailable",reason:t}}function jt(e,t,n){return n===void 0?{sessionId:e,status:t}:{sessionId:e,status:t,reason:n}}function Ze(e,t){let{sessionId:n}=e;switch(e.status){case"completed":return e.outcome==="approved"?{sessionId:n,status:"approved"}:e.outcome==="review"?jt(n,"review",Zt(e,"review")):jt(n,"rejected",Zt(e,"failed"));case"failed":{let o=jt(n,"rejected",e.failureReason??Zt(e,"failed"));return e.failureReason==="device_cooldown"&&e.retryAfter!==void 0&&(o.retryAfter=e.retryAfter),o}case"review_pending":return jt(n,"review",Zt(e,"review"));case"expired":return Me(n);case"created":case"in_progress":break;default:{let o=e.status;throw new Error(`mapSessionResult: unhandled status ${o}`)}}let i=e.steps.find(o=>ou.has(o.checkType)&&o.state==="input_required"&&o.reason!==void 0);if(i?.reason==="mobile_required")return Me(n,"mobile_required");if(i?.reason!==void 0){let o=t.autoRetry&&zr.has(i.reason)&&i.attemptsRemaining>0;return{sessionId:n,status:o?"retry":"rejected",reason:i.reason,attemptsRemaining:i.attemptsRemaining}}let r=Ie(e);return r===void 0&&e.steps.some(o=>o.state==="review")?jt(n,"review",Zt(e,"review")):r?.checkType==="portrait_icao"?Me(n,"portrait_required"):Me(n)}function Zt(e,t){return e.steps.find(n=>n.state===t&&n.reason!==void 0)?.reason}var zr,ou,$t=V(()=>{"use strict";zr=new Set(["no_face","media_unreadable","clip_too_short","no_face_source","side_missing","unreadable","registry_unavailable","otp_mismatch","otp_expired","otp_send_failed","document_type_not_accepted","age_unverifiable","nationality_unreadable","liveness_inconclusive","match_inconclusive","document_authenticity","probe_not_from_liveness","chip_read_failed","chip_access_denied","chip_parse_failed","icao_pose","icao_eyes","icao_mouth","icao_occlusion","icao_lighting","icao_background","icao_resolution","portrait_not_from_liveness","nni_recheck","device_integrity_failed","eid_identifier_invalid","eid_code_invalid","eid_code_expired","eid_unavailable","eid_resend_too_soon"]);ou=new Set(["liveness","face_match"])});function Pe(e,t,n,i,r){return e.presignCapture!==void 0?e.presignCapture(t,n,i,r):e.presign(t,n,i)}function rA(e){return{...e?.engine!==void 0?{engine:e.engine}:{},...e?.clipMs!==void 0?{durationMs:e.clipMs}:{}}}function uu(e){let t=e.steps.findIndex(i=>i.checkType==="liveness");return t<0?!1:e.steps.slice(t+1).find(i=>je(i))?.checkType==="face_match"}async function Ge(e,t,n={}){let i=e.uuid(),r=!1,o=!1,a=0,s=0;for(;;)try{return await t(e.client,i)}catch(A){if(A instanceof $e){if(o)throw A;o=!0,n.onAttestationInvalid?.(),i=e.uuid();continue}if(!(A instanceof ce))throw A;if(A.code==="consent_required"&&!r){r=!0,await e.ensureConsent({force:!0}),i=e.uuid();continue}if(A.code==="attestation_invalid"&&!o){o=!0,n.onAttestationInvalid?.(),i=e.uuid();continue}if(A.code==="inference_unavailable"&&s<eo){s+=1;let c=Math.min(A.retryAfterSeconds??to,su);e.onBusy?.({attempt:s,retryAfterSeconds:c}),await e.sleep(c*1e3),n.onAttestationInvalid?.(),i=e.uuid();continue}if(cu.has(A.code)&&a<Zr){a+=1;let c=A.retryAfterSeconds!==void 0?A.retryAfterSeconds*1e3:void 0;await e.sleep(c!==void 0?Math.min(c,au):$r);continue}throw A}}async function ci(e){let{artifacts:t}=e,n=t.clip,i=It(t.clipMime??"");if(t.degraded==="NO_RECORDER"||n===void 0||!jr.includes(i))return{kind:"unavailable",reason:"no_recorder"};e.client.armCapture?.(2);let r=gu(e,t.keyframe),o=mu(e,n,i,r),a=hu(e,r),s=!1,A=!1,c=!0,l=0;for(;;){if(e.isCancelled())return{kind:"cancelled"};let m=e.getView();if(he(m))return{kind:"settled"};let d=Ie(m)?.checkType,h=d==="liveness"&&!s?"liveness":d==="face_match"&&!A&&c?"face_match":null;if(h===null)return{kind:"settled"};if(h==="liveness"&&t.captureChannel==="desktop"&&ye(m,"liveness")?.requiresMobile===!0)return{kind:"unavailable",reason:"mobile_required"};try{if(h==="liveness"){s=!0;let u=await o();if(e.isCancelled())return{kind:"cancelled"};A=Xr(m,u),e.applySubmit(u,"liveness");let f=ye(e.getView(),"liveness")?.state;c=f===void 0||du.has(f)}else{A=!0;let u=await a();if(e.isCancelled())return{kind:"cancelled"};e.applySubmit(u,"face_match")}}catch(u){if(e.isCancelled()||u instanceof en)return{kind:"cancelled"};let f=fu(u);if(f.kind!=="resync"||l>=Au)return f;l+=1,await e.refreshView()}}}function gu(e,t){let n=null,i=null,r=()=>n!==null?Promise.resolve(n):(i??(i=(async()=>{let o=await Pe(e.client,"image",iA,t.size,rA(e.artifacts));return await e.client.uploadToSpaces(o.uploadUrl,t,iA),n=(await e.client.completeMedia(o.key)).key,e.onKeyframePromoted?.(n),n})().finally(()=>{i=null})),i);return{ensure:r,attempt:()=>r().catch(()=>null),current:()=>n}}function mu(e,t,n,i){let r=null,o,a=null;return()=>Ge(e,async(s,A)=>{if(r===null||o===void 0){if(e.isCancelled())throw new en;o===void 0&&!uu(e.getView())&&(o=null),e.onPhase("uploading");let[c,l]=await Promise.all([r!==null?Promise.resolve(r):(async()=>{let m=await Pe(s,"clip",n,t.size,rA(e.artifacts));return await s.uploadToSpaces(m.uploadUrl,t,n),(await s.completeMedia(m.key)).key})(),o!==void 0?Promise.resolve(o===null?null:o.imageKey):i.attempt()]);r=c,o===void 0&&(o=l===null?null:{imageKey:l})}if(a===null)try{a=await e.getAttestation()}catch(c){throw new $e(c instanceof Error?c.message:String(c))}return e.onPhase("checking"),s.submitCheck("liveness",{clipKey:r,attestation:a,captureChannel:e.artifacts.captureChannel,capture:pu(e.artifacts),...o!==null?{faceMatch:o}:{}},{idempotencyKey:A})},{onAttestationInvalid:()=>{a=null}})}function hu(e,t){return()=>Ge(e,async(n,i)=>{if(t.current()===null){if(e.isCancelled())throw new en;e.onPhase("uploading")}let r=await t.ensure();return e.onPhase("checking"),n.submitCheck("face_match",{imageKey:r},{idempotencyKey:i})})}function pu(e){return{...e.engine!==void 0?{engine:e.engine}:{},width:e.width,height:e.height,...e.clipMs!==void 0?{clipMs:e.clipMs}:{},...e.cameraReadyMs!==void 0?{cameraReadyMs:e.cameraReadyMs}:{},...e.faceAcquireMs!==void 0?{faceAcquireMs:e.faceAcquireMs}:{},...e.captureMs!==void 0?{captureMs:e.captureMs}:{}}}function fu(e){if(e instanceof $e)return{kind:"unavailable",reason:"attestation"};if(e instanceof ce){if(e.code==="attestation_invalid")return{kind:"unavailable",reason:"attestation"};if(e.code==="method_required")return{kind:"unavailable",reason:"method_required"};if(e.code==="inference_unavailable")return{kind:"unavailable",reason:"inference_unavailable"};if(e.code==="mobile_required")return{kind:"unavailable",reason:"mobile_required"};if(lu.has(e.code))return{kind:"resync"}}return{kind:"unavailable",reason:"network"}}var jr,iA,Zr,$r,au,eo,to,su,Au,cu,lu,en,$e,du,et=V(()=>{"use strict";Xt();qr();$t();jr=["video/webm","video/mp4"],iA="image/jpeg",Zr=2,$r=1e3,au=1e4,eo=3,to=10,su=30,Au=3,cu=new Set(["network_error","timeout","upload_failed","unknown_error","rate_limit_exceeded"]),lu=new Set(["session_not_active","check_not_found","check_already_finalized","check_out_of_order","identity_confirm_required"]),en=class extends Error{constructor(){super("verification destroyed"),this.name="FlowCancelledError"}};$e=class extends Error{constructor(t){super(t),this.name="AttestationError"}};du=new Set(["passed","review","processing","skipped"])});var aA={};ue(aA,{TURNSTILE_EXECUTE_TIMEOUT_MS:()=>io,TURNSTILE_SCRIPT_SRC:()=>li,executeTurnstile:()=>oo,loadTurnstile:()=>ui,resetTurnstileForTests:()=>ro});function oA(){return window.turnstile}function ro(){tn=null}function ui(){return tn??(tn=new Promise((e,t)=>{let n=oA();if(n){e(n);return}let i=document.createElement("script");i.src=li,i.async=!0,i.onload=()=>{let r=oA();r?e(r):(tn=null,t(new Error("Turnstile script loaded but exposed no API")))},i.onerror=()=>{tn=null,i.remove(),t(new Error("Turnstile script failed to load"))},document.head.appendChild(i)})),tn}function no(){return new Error("Turnstile challenge aborted")}async function oo(e,t={}){let n=t.timeoutMs??3e4,i=t.signal;if(i?.aborted)throw no();let r=await ui();if(i?.aborted)throw no();let o=document.createElement("div");document.body.appendChild(o);let a,s,A;try{return await new Promise((c,l)=>{if(s=setTimeout(()=>l(new Error(`Turnstile challenge timed out (${n} ms)`)),n),i!==void 0&&(A=()=>l(no()),i.addEventListener("abort",A,{once:!0})),a=r.render(o,{sitekey:e,execution:"execute",appearance:"execute",callback:c,"error-callback":m=>{l(new Error(`Turnstile challenge failed${m?` (${m})`:""}`))}}),a===void 0){l(new Error("Turnstile render returned no widget id"));return}r.execute(a)})}finally{if(clearTimeout(s),i!==void 0&&A!==void 0&&i.removeEventListener("abort",A),a!==void 0)try{r.remove(a)}catch{}o.remove()}}var li,io,tn,ao=V(()=>{"use strict";li="https://challenges.cloudflare.com/turnstile/v0/api.js",io=3e4;tn=null});function Cu(e){let{deviceMemory:t,effectiveType:n,saveData:i,downlinkMbps:r,sourceLongEdge:o}=e,a=i===!0||n==="slow-2g"||n==="2g"||r!=null&&r>0&&r<1,s=t!=null&&t<=2,A=n==="4g"||r!=null&&r>=5,c=t!=null&&t>=6,l;a||s?l="low":A&&c?l="good":l="mid";let m=Iu[l],d=o&&o>0?Math.min(m.maxLongEdge,o):m.maxLongEdge;return{tier:l,...m,maxLongEdge:d}}function sA(e){let t={};try{let n=navigator;typeof n.deviceMemory=="number"&&(t.deviceMemory=n.deviceMemory);let i=n.connection;i&&(t.effectiveType=i.effectiveType,t.saveData=i.saveData,t.downlinkMbps=i.downlink)}catch{}return typeof e=="number"&&e>0&&(t.sourceLongEdge=e),Cu(t)}function yu(e,t,n){let i=Math.min(1,Math.max(0,(e-.28)/.21999999999999997)),r=(t+n)/2;return Math.max(t,n-i*(n-r))}function Eu(e,t,n){let i=Math.max(e,t),r=i>0?Math.min(1,n/i):1;return{width:Math.max(1,Math.round(e*r)),height:Math.max(1,Math.round(t*r))}}async function bu(e,t){let n=t.startQ,i=await e(n);for(let r=0;r<4&&!(i.size<=t.budgetBytes||n<=t.qMin);r++)n=Math.max(t.qMin,n-.08),i=await e(n);return{blob:i,quality:n}}async function AA(e,t,n,i,r){if(t<=0||n<=0)return null;let{width:o,height:a}=Eu(t,n,i.maxLongEdge),s=document.createElement("canvas");s.width=o,s.height=a;let A=s.getContext("2d");if(!A)return null;A.drawImage(e,0,0,o,a);let c=h=>new Promise((u,f)=>{s.toBlob(p=>p?u(p):f(new Error("canvas toBlob returned null")),"image/jpeg",h)}),l=yu(r,i.qMin,i.qMax),{blob:m,quality:d}=await bu(c,{startQ:l,qMin:i.qMin,budgetBytes:i.payloadTargetBytes}).finally(()=>{s.width=0,s.height=0});if(m.size>5242880)throw new Error("encoded document exceeds the 5242880-byte media cap");return{blob:m,quality:d,width:o,height:a}}var Iu,cA=V(()=>{"use strict";Iu={low:{maxLongEdge:1920,payloadTargetBytes:7e5,qMin:.7,qMax:.92},mid:{maxLongEdge:2240,payloadTargetBytes:12e5,qMin:.7,qMax:.92},good:{maxLongEdge:2560,payloadTargetBytes:16e5,qMin:.7,qMax:.92}}});async function so(e){let t=sA(Math.max(e.width,e.height)),n=await AA(e,e.width,e.height,t,.5);if(n===null)throw new Error("canvas encode unavailable");return{blob:n.blob,width:n.width,height:n.height}}async function lA(e){let t=await createImageBitmap(e);try{return await so(t)}finally{t.close()}}var Ao=V(()=>{"use strict";cA()});function di(e,t){return{layout:e,phase:"framing",captured:{},pending:[],lastCaptureAt:t,lastReportAt:t,manualShutter:!1,restPhase:"framing",readSides:[],needFlip:!1,flipped:!1,flipTimeoutSpent:!1,timeoutCapture:!1,lastShotByTimeout:!1}}function co(e,t){return e.lastCaptureAt>=0&&e.lastReportAt>=0?e:{...e,lastCaptureAt:e.lastCaptureAt<0?t:e.lastCaptureAt,lastReportAt:e.lastReportAt<0?t:e.lastReportAt}}function Bu(e,t,n){if(e.phase==="result")return{...e,lastReportAt:n};let i=!t.present||e.captureArea!==void 0&&t.areaFrac<.6*e.captureArea,{flipped:r,awaySince:o}=e;i&&(o=o??n),o!==void 0&&n-o>=250&&(r=!0),i||(o=void 0);let a=e.flipTimeoutSpent&&!(r&&!e.flipped),s={...e,lastReportAt:n,flipped:r,awaySince:o,flipTimeoutSpent:a,lastArea:t.areaFrac};if(!gA(e))return s;if(e.needFlip&&!r){if(!t.ready)return{...s,phase:e.restPhase,goodSince:void 0};let A=e.lastShot!==void 0&&e.pending.includes(e.lastShot);if(a||A)return{...s,goodSince:void 0,phase:e.restPhase};let c=e.goodSince??n;return n-c>=1800?{...s,goodSince:c,phase:"capturing",flipTimeoutSpent:!0,timeoutCapture:!0}:{...s,goodSince:c,phase:e.restPhase}}return t.ready?{...s,phase:"capturing",goodSince:e.goodSince??n}:{...s,goodSince:void 0,phase:t.locking?"locking":e.restPhase}}function Qu(e,t){if(!gA(e)||e.manualShutter)return e;let n=t-e.lastReportAt>=2e3,i=t-e.lastCaptureAt>=6e3;return n||i?{...e,manualShutter:!0}:e}function Su(e,t,n){let i=e.layout==="singlePage",r=i?{recto:t}:e.captured,o=i?[]:[...e.pending,t],a={...e,captured:r,pending:o,lastShot:t,lastCaptureAt:n,lastReportAt:-1,manualShutter:!1,goodSince:void 0,notice:void 0,awaySince:void 0,flipped:!1,lastShotByTimeout:e.timeoutCapture,timeoutCapture:!1,captureArea:e.lastArea};return i||lo({captured:r,pending:o})>=2?{...a,phase:"reading",restPhase:"framing",current:void 0,needFlip:!1}:{...a,phase:"flipCue",restPhase:"flipCue",current:void 0,needFlip:!0}}function mA(e,t,n){return e.pending.includes(t)?{...e,pending:e.pending.filter(i=>i!==t),lastShot:e.lastShot===t?void 0:e.lastShot,phase:e.phase==="capturing"?e.phase:"flipCue",restPhase:"flipCue",current:dA(n),needFlip:!0,flipTimeoutSpent:!0,goodSince:void 0,manualShutter:!0,notice:"same_face",lastCaptureAt:-1,lastReportAt:-1}:e}function wu(e,t,n){if(!e.pending.includes(t))return e;if(e.captured[n]!==void 0)return mA(e,t,n);let i=e.pending.filter(A=>A!==t),r={...e,pending:i,captured:{...e.captured,[n]:t}};if(lo(r)!==1||e.layout==="singlePage")return r;let o=dA(n),a=o==="recto"&&e.restPhase==="reaskRecto"?"reaskRecto":"flipCue",s=e.phase==="flipCue"||e.phase==="reaskRecto"||e.phase==="framing";return{...r,restPhase:a,current:o,phase:s?a:e.phase}}function ku(e,t){let n=t.id??e.captured[t.side],i={...e.captured};(t.id===void 0||i[t.side]===t.id)&&delete i[t.side];let r=e.pending.filter(c=>c!==n),o=e.layout==="twoSided"&&lo({captured:i,pending:r})>0,a=e.lastShotByTimeout||n===e.lastShot!==e.flipped,s=o&&!a,A=s?t.side==="recto"?"reaskRecto":"flipCue":"framing";return{...e,captured:i,pending:r,readSides:e.readSides.filter(c=>c!==t.side),lastShot:e.lastShot===n?void 0:e.lastShot,notice:t.issue,goodSince:void 0,manualShutter:!1,phase:A,restPhase:A,current:t.side,needFlip:s,flipped:!1,flipTimeoutSpent:!1,awaySince:void 0,lastCaptureAt:-1,lastReportAt:-1}}function uo(e,t){switch(t.type){case"report":return Bu(co(e,t.at),t.report,t.at);case"tick":return Qu(co(e,t.at),t.at);case"captured":return Su(co(e,t.at),t.id,t.at);case"captureFailed":return{...e,phase:e.restPhase,goodSince:void 0,lastCaptureAt:t.at,manualShutter:!0,timeoutCapture:!1};case"classified":return wu(e,t.id,t.side);case"duplicate":return mA(e,t.id,t.side);case"readOk":{let n=e.readSides.includes(t.side)?e.readSides:[...e.readSides,t.side],i=["recto","verso"].filter(o=>e.captured[o]!==void 0),r=e.phase==="reading"&&e.pending.length===0&&i.every(o=>n.includes(o));return{...e,readSides:n,flipTimeoutSpent:!1,phase:r?"result":e.phase}}case"readFailed":return ku(e,t);case"clockRestart":return e.lastCaptureAt<0&&e.lastReportAt<0&&e.awaySince===void 0?e:{...e,awaySince:void 0,lastCaptureAt:-1,lastReportAt:-1};case"retake":return{...di(e.layout,-1),lastCaptureAt:-1,lastReportAt:-1};default:return e}}var Mm,xm,Dm,vm,Rm,uA,dA,gA,lo,go=V(()=>{"use strict";Mm=250,xm=.6,Dm=1800,vm=6e3,Rm=2e3,uA=.16;dA=e=>e==="recto"?"verso":"recto",gA=e=>e.phase==="framing"||e.phase==="locking"||e.phase==="flipCue"||e.phase==="reaskRecto",lo=e=>(e.captured.recto!==void 0?1:0)+(e.captured.verso!==void 0?1:0)+e.pending.length});function mo(e,t,n=!1){let i=e(t);return i===null?"recto":!n||i.y+i.height/2>=t.height/2?"verso":"recto"}async function ho(e,t=!1){let{detectMrzBand:n}=await Promise.resolve().then(()=>(hn(),sa));return mo(n,e,t)}async function po(e,t=480,n,i=n!=null){let r=n??{x:0,y:0,width:e.width,height:e.height},o=Math.max(1,Math.round(r.height/r.width*t)),a=document.createElement("canvas");a.width=t,a.height=o;try{let s=a.getContext("2d");return s===null?"recto":(s.drawImage(e,r.x,r.y,r.width,r.height,0,0,t,o),await ho(s.getImageData(0,0,t,o),i))}finally{a.width=0,a.height=0}}async function hA(e,t=480){try{let n=await createImageBitmap(e),i=Math.max(1,Math.round(n.height/n.width*t)),r=document.createElement("canvas");r.width=t,r.height=i;let o=r.getContext("2d");return o===null?(n.close(),null):(o.drawImage(n,0,0,t,i),n.close(),o.getImageData(0,0,t,i))}catch{return null}}var fo=V(()=>{"use strict"});async function Mu(e){let t=await Promise.resolve().then(()=>(Pn(),ds));return new t.CaptureSessionDoc(e)}function xu(e){return{topLeft:{x:e.x,y:e.y},topRight:{x:e.x+e.width,y:e.y},bottomRight:{x:e.x+e.width,y:e.y+e.height},bottomLeft:{x:e.x,y:e.y+e.height}}}function Du(e,t,n){let i=[e.topLeft,e.topRight,e.bottomRight,e.bottomLeft],r=0;for(let o=0;o<i.length;o+=1){let a=i[o],s=i[(o+1)%i.length];r+=a.x*s.y-s.x*a.y}return t>0&&n>0?Math.abs(r)/2/(t*n):0}function gi(e,t){let n=Ne(),i=ft({enabled:e.keepScreenAwake!==!1}),r=t.decode??(S=>createImageBitmap(S)),o=t.blurRefuseSharpnessMax??.16,a=t.now??(()=>performance.now()),s=e.documentType==="passport"||e.side==="single",A=di(s?"singlePage":"twoSided",a());if(!s&&(e.side==="recto"||e.side==="verso")){let S=e.side==="recto"?"verso":"recto";A={...A,captured:{[S]:"server"},readSides:[S],current:e.side,phase:"flipCue",restPhase:"flipCue"}}let c="idle",l=null,m=null,d=!0,h=0,u=0,f=!1,p=!1,g="",C=null,w,Q=null,k=[],I=t.webOcr!==void 0?Gn(t.webOcr.captureDocument,{mode:e.liveMrz?.mode??"auto"}):null,b=null,v=I===null||!I.enabled?"off":null,O=null,L=null,W=new WeakMap,Z="";if(I!==null&&I.enabled&&t.webOcr!==void 0){let S=t.webOcr,T=On(I,{baseUrl:e.liveMrz?.assetBaseUrl??S.baseUrl,salt:S.salt,...e.liveMrz?.workerUrl!==void 0?{workerUrl:e.liveMrz.workerUrl}:{},...S.createWorker!==void 0?{createWorker:S.createWorker}:{}});if(T.ok){b=T.engine;let K=new mt({textLock:I.textLock,liveMrz:I.liveMrz});O=K;let $=T.engine;$.ready.then(_=>{v=_,typeof _!="string"&&d&&K.setEngine($)})}else v=T.reason}let R=S=>{let T=JSON.stringify(S);T!==Z&&(Z=T,n.emit("mrz",S))},E=(S,T)=>{let K=t.webOcr?.reports;if(K===void 0||I===null||S===void 0)return;let $=S.format==="ID-3"||S.side==="single"?"single":S.side==="verso"?"verso":"recto",_=$!=="recto"?I.liveMrzArm??I.frontLockArm:I.frontLockArm;if(_===null||Math.random()>=I.reportSampleRate)return;let Y=S.via==="live_mrz"?L:null,j=()=>{let ie=Y?.value??null;K([Hn({arm:_,capture:$,assist:S.ocr??null,load:_==="control"?"off":v,...S.msToCapture!==void 0?{msToCapture:S.msToCapture}:{},...ie!==null&&ie.stillConfirmed!==void 0?{stillConfirmed:ie.stillConfirmed}:{},...T!==void 0?{typeMismatch:Vt(T.format,e.documentType==="passport"?"passport":"card")}:{}})])};Y!==null&&Y.value===null?Promise.race([Y.promise,new Promise(ie=>setTimeout(ie,3e3))]).then(j):j()},y=S=>{!d||S===c||(c=S,i.setActive(S==="starting"||S==="scanning"),n.emit("state",S))},x=(S,T)=>T===void 0?null:s?"single":S.captured.recto===T?"recto":S.captured.verso===T?"verso":null,P=S=>({phase:S.phase,captured:s?S.captured.recto!==void 0?["single"]:[]:["recto","verso"].filter(T=>S.captured[T]!==void 0),expected:s?null:S.current??null,notice:S.notice??null,lastShot:x(S,S.lastShot),manualShutter:S.manualShutter,torchAvailable:l?.torchAvailable()??!1,torch:p}),U=()=>{let S=l;S!==null&&S.captureNow().catch(()=>M({type:"captureFailed",at:a()}))};function M(S){if(!d)return;let T=A;A=uo(A,S),A.phase==="capturing"&&T.phase!=="capturing"&&Promise.resolve().then(U),A.phase==="result"&&T.phase!=="result"&&(y("done"),B());let K=P(A),$=JSON.stringify(K);$!==g&&(g=$,n.emit("scan",K))}function B(){Q!==null&&clearInterval(Q),Q=null;for(let S of k.splice(0))S();l?.destroy(),l=null,i.setActive(!1)}let D=()=>l?.captureReport?.(),N=!1,H=(S,T)=>{if(!(S===void 0||t.onFaceReport===void 0))try{t.onFaceReport(S,T)}catch{}},F=S=>{Z="",!(l===null||A.phase==="reading"||A.phase==="result")&&(N=!1,l.rearm(s?"single":A.current??S))},G=async(S,T,K,$)=>{if(L=null,$!==void 0&&b!==null&&I?.liveMrz?.hint===!0){let ee={promise:Jn(b,S,$,{engine:Ke,detectorLimit:I.liveMrz.detectorLimit}).catch(()=>null),value:null};ee.promise.then(re=>{ee.value=re}),L=ee}$!==void 0&&Vt($.format,e.documentType==="passport"?"passport":"card")&&R({state:"mismatch",format:$.format});let _=D();H(_,"captured"),N=!0,E(_,$);let Y=K===void 0?C:K===null?null:{quad:xu(K),frameWidth:0,frameHeight:0,inStill:!0},j={decoded:null},ie=()=>(j.decoded??(j.decoded=Promise.resolve().then(()=>r(S)).catch(()=>null)),j.decoded);try{await J(S,T,Y,ie,L)}finally{j.decoded!==null&&(await j.decoded)?.close()}},J=async(S,T,K,$,_)=>{let Y=`shot-${h+=1}`;if(M({type:"captured",id:Y,at:a()}),e.haptics!==!1)try{globalThis.navigator?.vibrate?.(30)}catch{}if(!f&&o>0){let ee=await(t.measureSharpness!==void 0?t.measureSharpness(S,K):$().then(re=>re===null?-1:ut(re,Ve(K?.quad??null,K?.inStill===!0?re:{width:K?.frameWidth??0,height:K?.frameHeight??0},re)))).catch(()=>-1);if(!d)return;if(Number.isFinite(ee)&&ee>=0&&ee<o){f=!0;let re=s?"recto":A.current??(A.captured.recto===void 0?"recto":"verso");M({type:"readFailed",side:re,id:Y,issue:"blurry"}),F(re);return}}f=!1;let j;if(s)j="single";else{let ee=A.current,re=await(t.classify!==void 0?t.classify(S):$().then(le=>le===null?ee??"recto":K?.inStill===!0?po(le,480,null,!0):po(le,480,Ve(K?.quad??null,{width:K?.frameWidth??0,height:K?.frameHeight??0},le)))).catch(()=>ee??"recto");if(!d)return;if(A.captured[re]!==void 0&&u<Io){u+=1,M({type:"duplicate",id:Y,side:re}),F(re==="recto"?"verso":"recto");return}j=A.captured[re]!==void 0&&ee!==void 0?ee:re,u=0,M({type:"classified",id:Y,side:j})}let ie=j==="verso"?"verso":"recto";try{let ee=t.encode!==void 0?await t.encode(S):await $().then(re=>{if(re===null)throw new Error("the still could not be decoded");return so(re)});if(!d)return;_!==null&&W.set(ee.blob,_),n.emit("captured",{image:ee.blob,side:j,documentType:e.documentType,...e.issuer!==void 0?{issuer:e.issuer}:{},width:ee.width,height:ee.height,previewDataUrl:T}),t.deferRead!==!0&&M({type:"readOk",side:ie})}catch{M({type:"readFailed",side:ie,id:Y,issue:"technical"}),n.emit("error",{kind:"generic",retryable:!0})}F(ie==="recto"?"verso":"recto")},q=S=>{k.push(S.on("statechange",({state:T})=>{T==="preflight"||T==="acquiring"?y("starting"):T==="positioning"?y("scanning"):T==="captured"?y("captured"):T==="error"&&y("error")}),S.on("feedback",({key:T,reticle:K})=>n.emit("feedback",{key:T,reticle:K})),S.on("checks",T=>{n.emit("gate",{progress:T.p,quad:T.quad,frameWidth:T.frameWidth,frameHeight:T.frameHeight,...T.guide!==void 0?{guide:{detected:T.guide.detected,fill:T.guide.fill,offsetX:T.guide.offsetX??0,offsetY:T.guide.offsetY??0}}:{}});let K=T.ocr?.mrz;K!==void 0&&(K.state==="fallback"?R({state:"fallback",reason:K.reason}):K.state==="valid"?R({state:"valid",format:K.format}):K.state==="reading"?R({state:"reading",...K.format?{format:K.format}:{},...K.coach?{coach:K.coach}:{}}):R({state:"searching"}));let $=T.quad===null?0:Du(T.quad,T.frameWidth,T.frameHeight);C=T.quad===null?null:{quad:T.quad,frameWidth:T.frameWidth,frameHeight:T.frameHeight},M({type:"report",report:{present:T.quad!==null&&T.plausible||T.guide?.detected===!0,ready:T.ready===!0,locking:T.p>=.5,areaFrac:$},at:a()})}),S.on("error",({kind:T,retryable:K})=>n.emit("error",{kind:zt(T),retryable:K})),S.on("artifacts",T=>{G(T.keyframe,T.previewDataUrl,T.docRegion,T.liveMrz)}))},z=()=>(m??(m=(async()=>{if(d){if(l===null){let S=await(t.createEngine??Mu)({...t.engineOptions??{},...w!==void 0?{guide:w}:{},video:e.video,format:Gi(e.documentType),side:s?"single":e.side??"recto",autoCapture:!1,...O!==null?{ocr:O}:{}});if(!d){S.destroy();return}l=S,q(S);let T=t.tickMs??500;T>0&&(Q=setInterval(()=>M({type:"tick",at:a()}),T))}M({type:"clockRestart"}),I!==null&&I.liveMrzArm==="live"&&(v==="unsupported"||v==="off")&&R({state:"fallback",reason:v}),await l.start()}})().finally(()=>{m=null})),m);return{handle:{get state(){return c},on:(S,T)=>n.on(S,T),start:z,retry:()=>{if(l===null&&A.phase==="result"){M({type:"retake"}),u=0,f=!1,z();return}if(l!==null&&c!=="error"){M({type:"retake"}),u=0,f=!1,l.rearm(s?"single":void 0);return}z()},setSide:S=>{s||S==="single"||(A.current!==S&&(A={...A,current:S}),M({type:"clockRestart"}),A.phase!=="reading"&&A.phase!=="result"&&l?.rearm(S))},shutter:U,focusAt:(S,T)=>{l?.focusAt?.(S,T)},setGuide:S=>{w=S,l?.setGuide?.(S)},setTorch:S=>{p=S,l?.setTorch(S),M({type:"tick",at:a()})},destroy:()=>{if(d&&l!==null&&c!=="done"){let S=D();!N&&S!==void 0&&S.ticks>0&&H(S,"abandoned"),E(S,void 0)}d=!1,B(),O?.setEngine(null),b?.dispose(),b=null,n.clear()}},setFlowState:S=>{(A.phase==="reading"||A.phase==="result")&&y(S==="done"&&A.phase!=="result"?"scanning":S)},settle:(S,T)=>{let K=S==="verso"?"verso":"recto";M(T.ok?{type:"readOk",side:K}:{type:"readFailed",side:K,issue:T.issue}),T.ok||F(K)},takeDeviceRead:S=>W.get(S.image)?.value??null}}var Io,Co=V(()=>{"use strict";ai();ri();st();qt();Qn();Ao();go();fo();Lt();_r();vr();Io=2});var pA,fA=V(()=>{"use strict";pA=["AD","AE","AF","AG","AI","AL","AM","AO","AQ","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","XK","YE","YT","ZA","ZM","ZW"]});function yo(e,t){let n=e.byIssuer?.[t]??e.default;return vu.filter(i=>n==="*"||n.includes(i))}function IA(e,t=pA){return[...new Set([...t,...Object.keys(e.byIssuer??{})])].filter(i=>yo(e,i).length>0).sort()}function CA(e){if(e.acceptedDocuments)return e.acceptedDocuments;let t=e.acceptedDocumentTypes?.length?[...e.acceptedDocumentTypes]:["carte_identite","passport"];return{default:[],byIssuer:{MR:t}}}var vu,Eo=V(()=>{"use strict";fA();vu=["carte_identite","passport","residence_permit"]});function mi(e){let t=e?.portrait,n=t?.icao,i=t?.purpose==="id_document";return n==null?i?{policy:"reject",profile:"id_document"}:null:{policy:n.policy==="alert"&&!i?"alert":"reject",profile:i||n.profile==="id_document"?"id_document":"selfie"}}function hi(e){return{...e.baselineEyeOpenness!==void 0?{baselineEyeOpenness:e.baselineEyeOpenness}:{},criteria:e.verdict??{},...e.backgroundCheck!==void 0?{backgroundCheck:e.backgroundCheck}:{}}}var pi=V(()=>{"use strict"});function EA(e){let t=Number.POSITIVE_INFINITY,n=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY,r=Number.NEGATIVE_INFINITY;for(let o of e)o.x<t&&(t=o.x),o.y<n&&(n=o.y),o.x>i&&(i=o.x),o.y>r&&(r=o.y);return e.length===0?{x:0,y:0,width:0,height:0}:{x:t,y:n,width:i-t,height:r-n}}function nn(e,t,n){if(e.length<468)return null;let i=d=>{let h=e[d];return{x:h.x*t,y:h.y*n}},r=[0,1].map(d=>{let h=e.length>yA[1]?i(yA[d]):null,[u,f]=Ru[d];return h??bA(i(u),i(f))}),o=_u.map(d=>EA(d.map(i))),a=[];for(let d=0;d<Math.min(e.length,468);d+=1)a.push(i(d));let[s,A]=r,c=s.x>A.x,l=c?A:s,m=c?s:A;return{leftEye:l,rightEye:m,iod:Math.hypot(m.x-l.x,m.y-l.y),box:EA(a),nose:i(Tu),leftEyeBox:c?o[1]:o[0],rightEyeBox:c?o[0]:o[1]}}function bo(e,t="column"){if(e.length<16||e.some(d=>!Number.isFinite(d)))return null;let n=(d,h)=>t==="column"?e[h*4+d]:e[d*4+h],i=Math.hypot(n(0,0),n(1,0),n(2,0))||1,r=n(0,0)/i,o=n(1,0)/i,a=n(2,0)/i,s=n(2,1)/i,A=n(2,2)/i,c=Math.asin(Math.max(-1,Math.min(1,-a)))*fi,l=Math.atan2(s,A)*fi,m=Math.atan2(o,r)*fi;return{yaw:c,pitch:l,roll:m}}function Bo(e){return Math.atan2(e.rightEye.y-e.leftEye.y,e.rightEye.x-e.leftEye.x)*fi}function Ct(e){let t=Ii,n=e.iod>=t.iodMin&&e.iod<=t.iodMax?1:t.iodMin/Math.max(e.iod,1e-6),i=t.width/n,r=t.height/n,o=bA(e.leftEye,e.rightEye);return{x:o.x-t.eyeX/t.width*i,y:o.y-t.eyeY/t.height*r,width:i,height:r}}function Qo(e,t,n){let i=Math.max(0,-e.x),r=Math.max(0,-e.y),o=Math.max(0,e.x+e.width-t),a=Math.max(0,e.y+e.height-n);return Math.max((i+o)/e.width,(r+a)/e.height)}function So(e,t,n,i){let r=Ct(e),o=r.x+r.width/2,a=r.y+r.height/2,s=Ii.width/Ii.height,A=Math.max(r.height*i.margin,i.minHeight,i.minWidth/s);A=Math.min(A,n,t/s);let c=A*s,l=Math.min(Math.max(o-c/2,0),Math.max(0,t-c)),m=Math.min(Math.max(a-A/2,0),Math.max(0,n-A));return{x:Math.round(l),y:Math.round(m),width:Math.round(c),height:Math.round(A)}}var yA,Ru,_u,Tu,bA,fi,Ii,rn=V(()=>{"use strict";yA=[468,473],Ru=[[33,133],[362,263]],_u=[[33,7,163,144,145,153,154,155,133,173,157,158,159,160,161,246],[362,382,381,380,374,373,390,249,263,466,388,387,386,385,384,398]],Tu=1;bA=(e,t)=>({x:(e.x+t.x)/2,y:(e.y+t.y)/2});fi=180/Math.PI;Ii={width:480,height:640,eyeX:240,eyeY:289,iodMin:120,iodMax:160}});var QA={};ue(QA,{ICAO_GATE_CRITERIA:()=>tt,createIcaoGate:()=>Ei,eyeOpenness:()=>yi,judgeIcao:()=>wo,percentile:()=>ko,scoreFrame:()=>Ci});function wo(e,t){let n=e.pose,i;if(n!==null){let u=n.pitch-t.pitchOffsetDeg,f=Math.max(Math.abs(n.yaw),Math.abs(u),Math.abs(n.roll));i=Math.abs(n.yaw)<=t.yawDeg&&Math.abs(u)<=t.pitchDeg&&Math.abs(n.roll)<=t.rollDeg?Ee(f):me(f,"pose")}else i={...Oe(!1,"pose"),value:e.eyeLineRoll??null};let r=Oe(!1,"eyes");if(e.eyes!==null){let u=e.baseline,f=Math.min(e.eyes.left,e.eyes.right),p=Math.max(1-t.eyes.blinkMax,u!==null&&u>0&&u<=1?t.eyes.relativeMin*u:0),g=u!==null&&u>0?f/u:null;r=f>=p-1e-9?Ee(g):me(g,"eyes")}let o=Oe(!1,"mouth");if(e.mouth!==null){let{jawOpen:u,smile:f,pucker:p}=e.mouth,g=Math.max(u/t.mouth.jawOpenMax,f/t.mouth.smileMax,p/t.mouth.puckerMax);o=u<=t.mouth.jawOpenMax&&f<=t.mouth.smileMax&&p<=t.mouth.puckerMax?Ee(g):me(g,"mouth")}let a=e.lighting,s=Oe(!0,"lighting");if(a!==null){let[u,f]=t.lighting.faceLuma,[p,g]=t.lighting.halfRatio;s=a.faceLuma<u||a.faceLuma>f||a.clipped>t.lighting.clippedMax?me(a.faceLuma,"lighting"):a.halfRatio<p||a.halfRatio>g?me(a.halfRatio,"lighting_side"):Ee(a.faceLuma)}let A=e.uniformity,c=e.background,l=t.background.required?A!=null&&t.backgroundCheck.enabled?A.uniform?Ee(A.colorStd):me(A.colorStd,"background"):c===null?Oe(!0,"background"):c.luma>=t.background.lumaMin&&c.sd<=t.background.lumaSdMax?Ee(c.luma):me(c.luma,"background"):Oe(!0,"background"),m=t.resolution,d=Math.min(e.frameWidth,e.frameHeight)>=m.minWidth&&Math.max(e.frameWidth,e.frameHeight)>=m.minHeight,h=e.iod>=m.minIodPx&&d?Ee(e.iod):me(e.iod,"resolution");return{pose:i,eyes:r,mouth:o,lighting:s,background:l,resolution:h}}function yi(e){let t=e?.eyeBlinkLeft,n=e?.eyeBlinkRight;return typeof t!="number"||typeof n!="number"?null:{left:1-t,right:1-n,blinkLeft:t,blinkRight:n}}function ko(e,t){if(e.length===0)return null;let n=[...e].sort((r,o)=>r-o),i=Math.min(n.length-1,Math.max(0,Math.ceil(t*n.length)-1));return n[i]}function Ci(e,t,n){let i={},r=e.geometry;if(e.faces!==1||r===null){let u=e.faces>1?me(e.faces,"multiple_faces"):me(e.faces,"no_face");for(let f of tt)i[f]=f==="face"?u:Oe(!1,"no_face");return{results:i,pose:null}}i.face=Ee(1);let o=Ct(r),a=Qo(o,e.frameWidth,e.frameHeight);i.framing=o.height>e.frameHeight*1.02||o.width>e.frameWidth*1.02?me(a,"too_close"):a>.02?me(a,"center"):Ee(a);let s=e.matrix!=null?bo(e.matrix):null,A=yi(e.blendshapes),c=e.blendshapes,l=e.stats??null,m=wo({pose:s,eyeLineRoll:Math.abs(Bo(r)),eyes:A,baseline:n,mouth:c==null?null:{jawOpen:c.jawOpen??0,smile:Math.max(c.mouthSmileLeft??0,c.mouthSmileRight??0),pucker:c.mouthPucker??0},lighting:l?.lighting??null,background:l?.background??null,uniformity:e.backgroundCheck??null,iod:r.iod,frameWidth:e.frameWidth,frameHeight:e.frameHeight},t);Object.assign(i,m);let d=l?.eyeSpecular??null;i.glare=d===null?Oe(!0,"glare"):d<=t.glare.specularMax?Ee(d):me(d,"glare");let h=l?.sharpness??null;return i.sharpness=h===null||h>=t.sharpnessMin?Ee(h):me(h,"hold_still"),{results:i,pose:s}}function Ei(e,t={}){let n=t.policy==="alert",i=new Map,r=0,o=null,a=null,s={},A=[],c=null,l=null,m=d=>{if(A=A.filter(u=>d-u.at<=e.baseline.windowMs),A.length<e.baseline.minSamples)return null;let h=ko(A.map(u=>u.open),e.baseline.percentile);return h===null||h<=0?null:Math.min(1,h)};return{push(d,h){let u=Ci(d,e,null),f=yi(d.blendshapes);f!==null&&u.results.face.pass&&u.results.pose.pass&&A.push({at:h,open:(f.left+f.right)/2});let p=m(h),{results:g,pose:C}=Ci(d,e,p);for(let R of tt)g[R].pass&&(R!=="eyes"||p!==null)?i.has(R)||i.set(R,h):i.delete(R);let w=R=>{let E=i.get(R);return E!==void 0&&h-E>=e.holdMs};tt.filter(R=>!BA.has(R)).every(w)?o??(o=h):o=null;let I=R=>R==="background"&&d.backgroundCheck!=null?e.backgroundCheck.timeoutMs:e.softGraceMs,b=R=>BA.has(R)&&!g[R].pass&&o!==null&&h-o>=I(R),v=tt.map(R=>({criterion:R,pass:g[R].pass,held:w(R),waived:b(R),value:g[R].value,coach:g[R].pass?null:g[R].coach}));r=v.every(R=>R.pass||R.waived)?r+1:0;let L=v.find(R=>!R.pass&&!R.waived)??null,W=v.filter(R=>R.held||R.waived).length;g.face.pass&&g.framing.pass?a??(a=h):a=null;let Z=v.every(R=>R.held||R.waived)&&r>=e.holdFrames||n&&a!==null&&h-a>=e.alertGraceMs;s={};for(let R of tt){let E=Lu[R];E!==void 0&&g[R].none!==!0&&(s[E]=(s[E]??!0)&&g[R].pass)}return l=d.backgroundCheck??null,c={criteria:v,coach:L?.coach??"hold",failing:L?.criterion??null,progress:W/v.length,ready:Z,baseline:p,pose:C},c},last:()=>c,summary(){let d={criteria:{}};if(c===null)return d;d.verdict={...s},c.baseline!==null&&Math.round(c.baseline*1e3)>0&&(d.baselineEyeOpenness=Math.round(c.baseline*1e3)/1e3);for(let h of c.criteria){let u=h.value===null||!Number.isFinite(h.value)?null:Math.round(h.value*1e3)/1e3;d.criteria[h.criterion]=h.waived?{pass:h.pass,value:u,waived:!0}:{pass:h.pass,value:u}}if(l!==null&&e.background.required){let{pixels:h,...u}=l;d.backgroundCheck=u}return d},reset(){i.clear(),r=0,o=null,a=null,s={},c=null,l=null}}}var tt,BA,Ee,me,Oe,Lu,bi=V(()=>{"use strict";rn();tt=["face","framing","pose","eyes","mouth","glare","lighting","background","resolution","sharpness"],BA=new Set(["glare","background"]),Ee=e=>({pass:!0,value:e,coach:null}),me=(e,t)=>({pass:!1,value:e,coach:t}),Oe=(e,t)=>({pass:e,value:null,coach:e?null:t,none:!0});Lu={pose:"pose",eyes:"eyes",mouth:"mouth",glare:"glare",lighting:"lighting",background:"background",framing:"resolution",resolution:"resolution"}});function Nu(e,t,n){let{x:i,y:r,width:o,height:a}=e;if(n)return[{x:i-1.5*o,y:r-.8*a,width:4*o,height:2.8*a}];let s=r-.4*a,A=1.4*a;return[{x:i-.9*o,y:s,width:.75*o,height:A},{x:i+1.15*o,y:s,width:.75*o,height:A}].map(c=>{let l=Math.max(0,c.x),m=Math.min(t.width,c.x+c.width);return{x:l,y:c.y,width:Math.max(0,m-l),height:c.height}})}function SA(e,t,n,i=Bi){let r=n!==null&&n.width>0&&n.height>0,o=Nu(t,e,r),a=o.reduce((B,D)=>B+Math.max(0,D.width)*Math.max(0,D.height),0);if(a<=0)return null;let s=Math.max(1,Math.floor(Math.sqrt(a/Fu))),A=r?n.data instanceof Float32Array?1:1/255:1,c=(B,D)=>{if(!r)return!1;let N=yt(B/e.width*n.width-.5,0,n.width-1),H=yt(D/e.height*n.height-.5,0,n.height-1);return n.data[H*n.width+N]*A>=i.maskThreshold},l=B=>.299*e.data[B]+.587*e.data[B+1]+.114*e.data[B+2],m=0,d=[0,0,0],h=[0,0,0],u=0,f=0,p=0,g=0,C=0,w=0,Q=0,k=0,I=0,b=0,v=Math.min(...o.map(B=>B.x)),O=Math.max(...o.map(B=>B.x+B.width)),L=Math.min(...o.map(B=>B.y)),W=Math.max(...o.map(B=>B.y+B.height)),Z=(v+O)/2,R=(L+W)/2;for(let B of o){let D=yt(B.x,0,e.width),N=yt(B.x+B.width,0,e.width),H=yt(B.y,0,e.height),F=yt(B.y+B.height,0,e.height);for(let G=H;G<F;G+=s)for(let J=D;J<N;J+=s){if(c(J,G))continue;let q=(G*e.width+J)*4;for(let X=0;X<3;X+=1){let S=e.data[q+X];d[X]=d[X]+S,h[X]=h[X]+S*S}m+=1;let z=l(q);J<Z?(p+=z,g+=1):(C+=z,w+=1),G<R?(Q+=z,k+=1):(I+=z,b+=1);for(let[X,S]of[[J+s,G],[J,G+s]])X>=N||S>=F||c(X,S)||(u+=1,Math.abs(l((S*e.width+X)*4)-z)>i.edgeLuma&&(f+=1))}}if(m<i.minPixels)return null;let E=0;for(let B=0;B<3;B+=1){let D=d[B]/m;E+=Math.max(0,h[B]/m-D*D)}let y=Math.sqrt(E/3),x=u===0?0:f/u,P=(B,D)=>D===0?null:B/D,U=(B,D)=>B===null||D===null?0:Math.abs(B-D)/255,M=Math.max(U(P(p,g),P(C,w)),U(P(Q,k),P(I,b)));return{method:r?"segmenter":"strip",uniform:y<=i.maxColorStd&&x<=i.maxEdgeDensity&&M<=i.maxGradient,colorStd:Math.round(y*10)/10,edgeDensity:Math.round(x*1e3)/1e3,gradient:Math.round(M*1e3)/1e3,pixels:m}}function wA(e){let t=e!==null&&typeof e=="object"?e:{},n=Bi,i=(r,o,a,s)=>typeof r=="number"&&Number.isFinite(r)&&r>=a&&r<=s?r:o;return{enabled:typeof t.enabled=="boolean"?t.enabled:n.enabled,hz:i(t.hz,n.hz,.5,15),segmenterTimeoutMs:i(t.segmenterTimeoutMs,n.segmenterTimeoutMs,0,6e4),segmenterBudgetMs:i(t.segmenterBudgetMs,n.segmenterBudgetMs,1,2e3),maskThreshold:i(t.maskThreshold,n.maskThreshold,0,1),maxColorStd:i(t.maxColorStd,n.maxColorStd,0,255),maxEdgeDensity:i(t.maxEdgeDensity,n.maxEdgeDensity,0,1),edgeLuma:i(t.edgeLuma,n.edgeLuma,0,255),maxGradient:i(t.maxGradient,n.maxGradient,0,1),minPixels:i(t.minPixels,n.minPixels,1,1e6),timeoutMs:i(t.timeoutMs,n.timeoutMs,0,6e4)}}var Bi,Fu,yt,Mo=V(()=>{"use strict";Bi={enabled:!0,hz:3,segmenterTimeoutMs:8e3,segmenterBudgetMs:120,maskThreshold:.5,maxColorStd:28,maxEdgeDensity:.08,edgeLuma:24,maxGradient:.18,minPixels:300,timeoutMs:4e3},Fu=12e3,yt=(e,t,n)=>Math.min(n,Math.max(t,Math.round(e)))});var kA,MA=V(()=>{"use strict";kA={id_document:{pose:{yawDeg:7,pitchDeg:7,rollDeg:5,pitchOffsetDeg:4},eyes:{relativeMin:.62,blinkMax:.48},mouth:{jawOpenMax:.13,smileMax:.28,puckerMax:.28},lighting:{faceLuma:[95,185],halfRatio:[.77,1.31],clippedMax:.015},background:{required:!0,lumaMin:165,lumaSdMax:20},resolution:{minIodPx:110,minWidth:480,minHeight:640}},selfie:{pose:{yawDeg:7,pitchDeg:7,rollDeg:7,pitchOffsetDeg:4},eyes:{relativeMin:.62,blinkMax:.48},mouth:{jawOpenMax:.13,smileMax:.28,puckerMax:.28},lighting:{faceLuma:[95,185],halfRatio:[.77,1.31],clippedMax:.015},background:{required:!1,lumaMin:165,lumaSdMax:20},resolution:{minIodPx:100,minWidth:480,minHeight:640}}}});var vA={};ue(vA,{ICAO_FALLBACK:()=>xo,resolveIcaoTuning:()=>Qi});function DA(e){let t=kA[e];return{profile:e,backgroundCheck:Bi,...t.pose,holdMs:500,alertGraceMs:3e3,eyes:{...t.eyes},mouth:{...t.mouth},lighting:{...t.lighting,faceLuma:[t.lighting.faceLuma[0],t.lighting.faceLuma[1]],halfRatio:[t.lighting.halfRatio[0],t.lighting.halfRatio[1]]},background:{...t.background},resolution:{...t.resolution},holdFrames:3,cadenceHz:10,baseline:{windowMs:3e3,minSamples:6,percentile:.8},sharpnessMin:.25,glare:{specularMax:.01},softGraceMs:4e3,cropMargin:1.25,camera:{width:1920,height:1080}}}function oe(e,t,n,i){return typeof e=="number"&&Number.isFinite(e)&&e>=n&&e<=i?e:t}function xA(e,t,n,i){if(!Array.isArray(e)||e.length!==2)return[t[0],t[1]];let[r,o]=e,a=oe(r,Number.NaN,n,i),s=oe(o,Number.NaN,n,i);return Number.isNaN(a)||Number.isNaN(s)||a>s?[t[0],t[1]]:[a,s]}function Re(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:{}}function Qi(e,t){let n=Re(e),i=n.profile==="selfie"?"selfie":"id_document",r=i==="selfie"?DA(i):xo,o=Re(n.eyes),a=Re(n.mouth),s=Re(n.lighting),A=Re(n.background),c=Re(n.resolution),l=Re(n.baseline),m=Re(n.glare),d=Re(n.camera),h=typeof A.required=="boolean"?A.required:r.background.required,u=wA(n.backgroundCheck);return{profile:i,yawDeg:oe(n.yawDeg,r.yawDeg,1,45),pitchDeg:oe(n.pitchDeg,r.pitchDeg,1,45),pitchOffsetDeg:oe(n.pitchOffsetDeg,r.pitchOffsetDeg,-20,20),rollDeg:oe(n.rollDeg,r.rollDeg,1,45),holdMs:oe(n.holdMs,r.holdMs,0,5e3),alertGraceMs:oe(n.alertGraceMs,r.alertGraceMs,0,6e4),eyes:{relativeMin:oe(o.relativeMin,r.eyes.relativeMin,0,1),blinkMax:oe(o.blinkMax,r.eyes.blinkMax,0,1)},mouth:{jawOpenMax:oe(a.jawOpenMax,r.mouth.jawOpenMax,0,1),smileMax:oe(a.smileMax,r.mouth.smileMax,0,1),puckerMax:oe(a.puckerMax,r.mouth.puckerMax,0,1)},lighting:{faceLuma:xA(s.faceLuma,r.lighting.faceLuma,0,255),halfRatio:xA(s.halfRatio,r.lighting.halfRatio,0,10),clippedMax:oe(s.clippedMax,r.lighting.clippedMax,0,1)},background:{required:h,lumaMin:oe(A.lumaMin,r.background.lumaMin,0,255),lumaSdMax:oe(A.lumaSdMax,r.background.lumaSdMax,0,255)},resolution:{minIodPx:oe(c.minIodPx,r.resolution.minIodPx,1,2e3),minWidth:oe(c.minWidth,r.resolution.minWidth,1,8e3),minHeight:oe(c.minHeight,r.resolution.minHeight,1,8e3)},holdFrames:Math.round(oe(n.holdFrames,r.holdFrames,1,60)),cadenceHz:oe(n.cadenceHz,r.cadenceHz,1,30),baseline:{windowMs:oe(l.windowMs,r.baseline.windowMs,200,3e4),minSamples:Math.round(oe(l.minSamples,r.baseline.minSamples,1,300)),percentile:oe(l.percentile,r.baseline.percentile,.5,1)},sharpnessMin:oe(n.sharpnessMin,r.sharpnessMin,0,1),glare:{specularMax:oe(m.specularMax,r.glare.specularMax,0,1)},softGraceMs:oe(n.softGraceMs,r.softGraceMs,0,6e4),cropMargin:oe(n.cropMargin,r.cropMargin,1,2),camera:{width:Math.round(oe(d.width,r.camera.width,320,4096)),height:Math.round(oe(d.height,r.camera.height,240,4096))},backgroundCheck:h?u:{...u,enabled:!1},tuningVersion:typeof t=="string"&&Pu.test(t)?t:null}}var xo,Pu,Si=V(()=>{"use strict";Mo();MA();xo=DA("id_document"),Pu=/^[A-Za-z0-9._-]{1,64}$/});function vo(e){let{data:t,width:n,height:i}=e,r=new Uint8Array(n*i);for(let o=0,a=0;o<r.length;o+=1,a+=4)r[o]=Math.round(.299*(t[a]??0)+.587*(t[a+1]??0)+.114*(t[a+2]??0));return{data:r,width:n,height:i}}function Do(e,t){return{x0:Math.max(0,Math.floor(e.x)),y0:Math.max(0,Math.floor(e.y)),x1:Math.min(t.width,Math.ceil(e.x+e.width)),y1:Math.min(t.height,Math.ceil(e.y+e.height))}}function Et(e,t,n){let i=Do(t,e),r=n===void 0?null:Do(n,e),o=0,a=0,s=0,A=0;for(let l=i.y0;l<i.y1;l+=1)for(let m=i.x0;m<i.x1;m+=1){if(r!==null&&m>=r.x0&&m<r.x1&&l>=r.y0&&l<r.y1)continue;let d=e.data[l*e.width+m];o+=1,a+=d,s+=d*d,d>=RA&&(A+=1)}if(o===0)return{mean:0,sd:0,clipped:0,count:0};let c=a/o;return{mean:c,sd:Math.sqrt(Math.max(0,s/o-c*c)),clipped:A/o,count:o}}function TA(e){let{box:t}=e,i=(e.leftEye.y+e.rightEye.y)/2-.1*t.height,r=t.y+.85*t.height;return{x:t.x+.15*t.width,y:i,width:.7*t.width,height:Math.max(1,r-i)}}function LA(e,t){let n=TA(t),i=Et(e,n);if(i.count===0)return null;let r=Math.min(Math.max(t.nose.x,n.x+1),n.x+n.width-1),o=Et(e,{x:n.x,y:n.y,width:r-n.x,height:n.height}),a=Et(e,{x:r,y:n.y,width:n.x+n.width-r,height:n.height}),s=a.mean>0?o.mean/a.mean:o.mean>0?Number.POSITIVE_INFINITY:1;return{faceLuma:i.mean,halfRatio:s,clipped:i.clipped}}function FA(e,t){let n=0,i=0;for(let r of[t.leftEyeBox,t.rightEyeBox]){let o=r.width*.15,a=r.height*.5,s=Et(e,{x:r.x-o,y:r.y-a,width:r.width+2*o,height:r.height+2*a});n+=s.count,i+=s.clipped*s.count}return n===0?null:i/n}function NA(e,t){let n=Ct(t),{box:i}=t,r={x:i.x-.2*i.width,y:n.y,width:1.4*i.width,height:i.y+i.height-n.y},o=0,a=0,s=0;for(let c of[n.x,n.x+.8*n.width]){let l=Et(e,{x:c,y:n.y+.04*n.height,width:.2*n.width,height:.25*n.height},r);o+=l.count,a+=l.mean*l.count,s+=(l.sd*l.sd+l.mean*l.mean)*l.count}if(o===0)return null;let A=a/o;return{luma:A,sd:Math.sqrt(Math.max(0,s/o-A*A)),count:o}}function PA(e,t){let n=Do(TA(t),e),i=Math.max(1,Math.floor(Math.max(n.x1-n.x0,n.y1-n.y0)/Gu)),r=(c,l)=>e.data[l*e.width+c],o=0,a=0,s=0;for(let c=n.y0+i;c<n.y1-i;c+=i)for(let l=n.x0+i;l<n.x1-i;l+=i){let m=r(l,c-i)+r(l-i,c)+r(l+i,c)+r(l,c+i)-4*r(l,c);o+=1,a+=m,s+=m*m}if(o===0)return null;let A=a/o;return Math.min(1,Math.max(0,s/o-A*A)/_A)}function Ro(e,t){return{lighting:LA(e,t),eyeSpecular:FA(e,t),background:NA(e,t),sharpness:PA(e,t)}}var RA,_A,Gu,_o=V(()=>{"use strict";rn();RA=250,_A=180,Gu=96});var GA={};ue(GA,{LANDMARKER_INIT_TIMEOUT_MS:()=>To,LANDMARKER_MODEL:()=>wi,createFaceLandmarker:()=>on,facesOf:()=>ki});function ki(e){let t=[],n=e.faceLandmarks??[];for(let i=0;i<n.length;i+=1){let r=n[i]??[],o=e.faceBlendshapes?.[i]?.categories,a=null;if(o!==void 0){a={};for(let A of o)a[A.categoryName]=A.score}let s=e.facialTransformationMatrixes?.[i]?.data;t.push({landmarks:r.map(A=>({x:A.x,y:A.y})),blendshapes:a,matrix:s!==void 0&&s.length>=16?[...s]:null})}return t}async function on(e){let t=e.replace(/\/+$/,""),n=await import("@mediapipe/tasks-vision"),i=await n.FilesetResolver.forVisionTasks(t),r=await n.FaceLandmarker.createFromOptions(i,{baseOptions:{modelAssetPath:`${t}/${wi}`,delegate:"CPU"},runningMode:"VIDEO",numFaces:2,outputFaceBlendshapes:!0,outputFacialTransformationMatrixes:!0});return{detect(o,a){try{return ki(r.detectForVideo(o,a))}catch{return[]}},close(){try{r.close()}catch{}}}}var To,wi,Mi=V(()=>{"use strict";To=2e4,wi="face_landmarker.task"});var UA={};ue(UA,{SEGMENTER_MODEL:()=>OA,createSelfieSegmenter:()=>Ou,personMaskOf:()=>HA});function HA(e){if(e===void 0||e.length===0)return null;let t=e.length===1,n=e[0],i=Float32Array.from(n.getAsFloat32Array());if(!t)for(let r=0;r<i.length;r+=1)i[r]=1-i[r];return{data:i,width:n.width,height:n.height}}async function Ou(e){let t=e.replace(/\/+$/,""),n=await import("@mediapipe/tasks-vision"),i=await n.FilesetResolver.forVisionTasks(t),r=await n.ImageSegmenter.createFromOptions(i,{baseOptions:{modelAssetPath:`${t}/${OA}`,delegate:"CPU"},runningMode:"VIDEO",outputConfidenceMasks:!0,outputCategoryMask:!1});return{segment(o,a){try{let s=r.segmentForVideo(o,a);try{return HA(s.confidenceMasks)}finally{s.close?.()}}catch{return null}},close(){try{r.close()}catch{}}}}var OA,JA=V(()=>{"use strict";OA="selfie_segmenter.tflite"});var VA={};ue(VA,{createBackgroundMonitor:()=>Lo});function Lo(e){let t=e.tuning,n=e.now??(()=>performance.now()),i=null,r=!1,o=!1,a=Number.NEGATIVE_INFINITY,s=null,A=0,c=null,l=null,m=0,d=!1,h=()=>{if(d||!t.enabled)return;d=!0;let u=(e.createSegmenter??(f=>Promise.resolve().then(()=>(JA(),UA)).then(p=>p.createSelfieSegmenter(f))))(e.assetBaseUrl);l=setTimeout(()=>{i===null&&(r=!0)},t.segmenterTimeoutMs),u.then(f=>{l!==null&&clearTimeout(l),o||r?f.close():i=f},()=>{l!==null&&clearTimeout(l),r=!0})};return{measure(u,f,p,g){if(!t.enabled||u.pixels===null)return null;h();let C=n();if(C-a<1e3/t.hz)return s;a=C;let w=u.width/Math.max(1,p),Q=u.height/Math.max(1,g),k={x:f.x*w,y:f.y*Q,width:f.width*w,height:f.height*Q},I=null;if(i!==null&&!r){let b=Math.max(C,A+1);A=b;let v=n();I=i.segment(u.source,b);let O=n()-v;m+=1,m>Hu&&(c=c===null?O:c*.7+O*.3),c!==null&&c>t.segmenterBudgetMs&&(r=!0,i.close(),i=null)}return s=SA(u.pixels,k,I,t),s},close(){o=!0,l!==null&&clearTimeout(l),i?.close(),i=null}}}var Hu,Fo=V(()=>{"use strict";Mo();Hu=2});var WA={};ue(WA,{ANALYSIS_LONG_EDGE:()=>xi,PORTRAIT_JPEG_QUALITY:()=>Di,STILL_MAX_HEIGHT:()=>YA,createPortraitCaptureInternal:()=>an,defaultGrabber:()=>KA,observe:()=>vi,warmPortraitCapture:()=>Ku});function No(e){return{width:e.videoWidth||0,height:e.videoHeight||0}}function Po(e,t){if(typeof document<"u"){let n=document.createElement("canvas");return n.width=e,n.height=t,n}return typeof OffscreenCanvas=="function"?new OffscreenCanvas(e,t):null}function KA(){let e=null;return(t,n)=>{let{width:i,height:r}=No(t);if(i===0||r===0)return null;let o=n===null?1:Math.min(1,n/Math.max(i,r)),a=Math.round(i*o),s=Math.round(r*o),A;n===null?A=Po(a,s):((e===null||e.width!==a||e.height!==s)&&(e=Po(a,s)),A=e);let c=A?.getContext("2d",{willReadFrequently:!0});if(A==null||c==null)return null;c.drawImage(t,0,0,a,s);let l=null;try{l=c.getImageData(0,0,a,s)}catch{l=null}return{source:A,width:a,height:s,pixels:l}}}async function Ju(e,t,n,i){let r=Math.round(n*t.width/t.height),o=Po(r,n),a=o?.getContext("2d");if(o==null||a==null)throw new Error("canvas unavailable");return a.fillStyle="#fff",a.fillRect(0,0,r,n),a.drawImage(e.source,t.x,t.y,t.width,t.height,0,0,r,n),"convertToBlob"in o?o.convertToBlob({type:"image/jpeg",quality:i}):new Promise((s,A)=>{o.toBlob(c=>c===null?A(new Error("encode failed")):s(c),"image/jpeg",i)})}function Vu(e,t,n){return new Promise((i,r)=>{let o=setTimeout(()=>{r(new Go(`init exceeded ${t}ms`)),e.then(n,()=>{})},t);e.then(a=>{clearTimeout(o),i(a)},a=>{clearTimeout(o),r(a)})})}function Yu(e){let t=ct(e),n=t==="overconstrained"?"generic":t;return{kind:n,retryable:n!=="insecure"&&n!=="unsupported"}}function vi(e,t,n,i){let r=e.length===1?e[0]:void 0,o=r===void 0?null:nn(r.landmarks,n,i),a=null;if(r!==void 0&&t.pixels!==null){let s=nn(r.landmarks,t.width,t.height),A=vo(t.pixels);s!==null&&(a=Ro(A,s))}return{frameWidth:n,frameHeight:i,faces:e.length,geometry:o,matrix:r?.matrix??null,blendshapes:r?.blendshapes??null,stats:a}}function an(e,t={}){let n=Qi(e.tuning,e.tuningVersion),i=Ne(),r=t.now??(()=>performance.now()),o=t.setTimer??((M,B)=>setTimeout(M,B)),a=t.clearTimer??(M=>clearTimeout(M)),s=t.grabFrame??KA(),A=t.encodeRegion??Ju,c=t.getUserMedia??(M=>navigator.mediaDevices.getUserMedia(M)),l=t.createLandmarker??on,m=e.assetBaseUrl??Uu,d=ft({enabled:e.keepScreenAwake!==!1}),h=Ei(n,{policy:e.policy??"reject"}),u=e.video,f=Lo({tuning:n.backgroundCheck,assetBaseUrl:m,...t.createSegmenter!==void 0?{createSegmenter:t.createSegmenter}:{},now:r}),p="idle",g=null,C=null,w=null,Q=!1,k=!1,I=0,b=0,v=[],O=M=>{p===M||k||(p=M,d.setActive(M==="starting"||M==="gating"),i.emit("state",M))},L=()=>{w!==null&&a(w),w=null},W=()=>{L();for(let M of g?.getTracks()??[])M.stop();g=null;try{u.srcObject=null}catch{}},Z=M=>{W(),O("error"),i.emit("error",M)},R=()=>{let M=Math.max(r(),b+1);return b=M,M},E=async M=>{let B=s(u,null),{width:D,height:N}=B??No(u);if(B===null||C===null){h.reset();return}let H=C.detect(B.source,R()),F=(H.length===1?H:v.length===1?v:[])[0],G=F===void 0?null:nn(F.landmarks,D,N);if(G===null){h.reset();return}let J=So(G,D,N,{margin:n.cropMargin,minWidth:n.resolution.minWidth,minHeight:n.resolution.minHeight}),q=Math.max(n.resolution.minHeight,Math.min(J.height,YA)),z=await A(B,J,q,Di);if(k||M!==I)return;let X={image:z,width:Math.round(q*J.width/J.height),height:q,gate:h.summary()};n.tuningVersion!==null&&(X.tuningVersion=n.tuningVersion),L(),O("captured"),i.emit("captured",X)},y=async M=>{if(!(k||M!==I||p!=="gating"||C===null)){if(!Q){Q=!0;try{let B=s(u,xi);if(B!==null){let{width:D,height:N}=No(u),H=C.detect(B.source,R());v=H;let F=vi(H,B,D||B.width,N||B.height);F.geometry!==null&&n.background.required&&(F.backgroundCheck=f.measure(B,F.geometry.box,D||B.width,N||B.height));let G=h.push(F,r());if(k||M!==I||(i.emit("gate",G),G.ready&&(await E(M),p!=="gating")))return}}catch{}finally{Q=!1}}!k&&M===I&&p==="gating"&&(w=o(()=>{y(M)},1e3/n.cadenceHz))}},x=()=>Vu(l(m),2e4,M=>M.close()),P=async()=>{if(k||p==="starting"||p==="gating")return;I+=1;let M=I;if(h.reset(),O("starting"),g===null&&t.getUserMedia===void 0&&(typeof navigator>"u"||typeof navigator.mediaDevices?.getUserMedia!="function")){Z({kind:typeof window<"u"&&window.isSecureContext===!1?"insecure":"unsupported",retryable:!1});return}let B=C!==null?Promise.resolve(C):x();B.catch(()=>{});try{if(g===null){if(g=await c({video:{facingMode:"user",width:{ideal:n.camera.width},height:{ideal:n.camera.height}},audio:!1}),k||M!==I){for(let D of g.getTracks())D.stop();k&&(g=null);return}u.srcObject=g,u.muted=!0,u.playsInline=!0,await u.play().catch(()=>{})}}catch(D){!k&&M===I&&Z(Yu(D));return}try{C=await B}catch{!k&&M===I&&Z({kind:"generic",retryable:!0});return}k||M!==I||(O("gating"),y(M))};return{handle:{get state(){return p},on:(M,B)=>i.on(M,B),start:P,retry:()=>{if(!k){if(g!==null&&C!==null&&p!=="error"){I+=1;let M=I;L(),h.reset(),O("gating"),y(M);return}p="idle",P()}},destroy:()=>{k||(I+=1,W(),d.setActive(!1),k=!0,C?.close(),C=null,f.close(),i.clear())}},setFlowState:M=>{(p==="captured"||p==="uploading"||p==="checking"||p==="done"&&M==="done")&&O(M)}}}function Ku(){import("@mediapipe/tasks-vision").catch(()=>{})}var Uu,xi,YA,Di,Go,Ri=V(()=>{"use strict";ri();lt();rn();_o();bi();Si();qt();Mi();Fo();Uu="/models-v3",xi=640,YA=1600,Di=.92;Go=class extends Error{}});function zu(e,t){try{zA??(zA=document.createElement("canvas"));let n=zA,i=96/Math.max(1,t.width);n.width=Math.max(1,Math.round(t.width*i)),n.height=Math.max(1,Math.round(t.height*i));let r=n.getContext("2d");if(r===null)return qA;r.drawImage(e,t.x,t.y,t.width,t.height,0,0,n.width,n.height);let o=r.getImageData(0,0,n.width,n.height);return{sharpness:we(o),exposure:At(o),meanLuma:Ue(o)}}catch{return qA}}async function Xu(e,t){let n=e.source;return"convertToBlob"in n?n.convertToBlob({type:"image/jpeg",quality:t}):new Promise((i,r)=>{n.toBlob(o=>o===null?r(new Error("encode failed")):i(o),"image/jpeg",t)})}function Li(e,t={}){let n=t.now??(()=>performance.now()),i=t.setTimer??((y,x)=>setTimeout(y,x)),r=t.clearTimer??(y=>clearTimeout(y)),o=t.encode??Xu,a=t.quality??zu,s=e.tuningVersion??null,A=new Set,c=!1,l=e.video??null,m=null,d=t.grabFrame??null,h=null,u=1e3/_i,f=null,p=null,g=!1,C=!1,w=Number.NEGATIVE_INFINITY,Q=null,k=0,I=null,b=null,v=Promise.all([Promise.resolve().then(()=>(bi(),QA)),Promise.resolve().then(()=>(Si(),vA)),Promise.resolve().then(()=>(Ri(),WA)),Promise.resolve().then(()=>(Mi(),GA)),Promise.resolve().then(()=>(Fo(),VA))]).then(async([y,x,P,U,M])=>{let B=x.resolveIcaoTuning(e.tuning,e.tuningVersion??void 0);B.background.required&&(p=M.createBackgroundMonitor({tuning:B.backgroundCheck,assetBaseUrl:e.assetBaseUrl??"/models-v3",...t.createSegmenter!==void 0?{createSegmenter:t.createSegmenter}:{},now:n})),m=y.createIcaoGate(B,{policy:e.policy??"reject"}),d??(d=P.defaultGrabber()),h=P.observe,u=1e3/Math.min(_i,B.cadenceHz);let D=(t.createLandmarker??U.createFaceLandmarker)(e.assetBaseUrl??"/models-v3"),N=await new Promise((H,F)=>{let G=setTimeout(()=>{F(new Error("landmarker init timeout")),D.then(J=>J.close(),()=>{})},U.LANDMARKER_INIT_TIMEOUT_MS);D.then(J=>{clearTimeout(G),H(J)},J=>{clearTimeout(G),F(J)})});c?N.close():f=N}).catch(()=>{g=!0}),O=y=>{for(let x of A)x({holding:C||g,update:y})},L=()=>{if(Q=null,!(c||f===null||m===null||d===null||h===null||l===null)){if(n()-w>Ti){O(null);return}try{let y=d(l,Wu);if(y!==null){let x=Math.max(n(),k+1);k=x;let P=f.detect(y.source,x),U=l.videoWidth||y.width,M=l.videoHeight||y.height,B=h(P,y,U,M);B.geometry!==null&&p!==null&&(B.backgroundCheck=p.measure(y,B.geometry.box,U,M));let D=m.push(B,n());C=D.ready,O(D)}}catch{}Q=i(L,u)}},W=()=>{let y=n()-w>Ti;w=n(),y&&(m?.reset(),C=!1,I=null,b=null),Q===null&&f!==null&&!c&&(Q=i(L,0))},Z=()=>{let y=d===null||l===null?null:d(l,null);if(y===null||m===null||Math.max(y.width,y.height)<e.still.minLongSidePx)return Promise.resolve(null);let x=m.summary();return o(y,e.still.jpegQuality).then(P=>({image:P,width:y.width,height:y.height,gate:x}),()=>null)},R=null;return{engineOptions:{measureQuality:(y,x)=>{l=y,W();let P=a(y,x);return C||g?P:{...P,sharpness:0}},telemetry:y=>{if(y.type!=="fired"||c)return;I=Z();let x=R;x!==null&&I.then(P=>P===null?void 0:x(P).catch(()=>{})),C=!1,Q!==null&&r(Q),Q=null,w=Number.NEGATIVE_INFINITY}},decorate:y=>{let x=new WeakMap,P=new Map,U=N=>{let H=x.get(N);return H===void 0&&(H=(async()=>{let F=await Pe(y,"image","image/jpeg",N.image.size,{engine:"portrait"});return await y.uploadToSpaces(F.uploadUrl,N.image,"image/jpeg"),(await y.completeMedia(F.key)).key})(),H.catch(()=>x.delete(N)),x.set(N,H)),H};R=U;let M=async N=>{let H;try{H=await U(N)}catch(F){let G=F?.code;if(typeof G=="string"&&qu.has(G))throw F;return null}return{media:{portrait:H},gate:hi(N.gate),...s!==null?{tuningVersion:s}:{}}},B=y.submitCheck.bind(y),D=(async(N,H,F)=>{if(N!=="liveness")return B(N,H,F);let G=F?.idempotencyKey,J=G===void 0?void 0:P.get(G);if(J===void 0){let X=I;J=X===null?Promise.resolve(null):X.then(S=>S===null?null:M(S)),G!==void 0&&(P.set(G,J),J.catch(()=>P.delete(G)))}let q=await J;if(q===null)return B("liveness",H,F);let z=await B("liveness",{...H,portraitIcao:q},F);return b=q,z});return new Proxy(y,{get(N,H){if(H==="submitCheck")return D;let F=Reflect.get(N,H);return typeof F=="function"?F.bind(N):F}})},onGate:y=>(A.add(y),()=>A.delete(y)),lastPortraitInput:()=>b,destroy:()=>{c=!0,I=null,b=null,Q!==null&&r(Q),Q=null,A.clear(),v.then(()=>{f?.close(),f=null,p?.close(),p=null})}}}var Wu,qu,_i,Ti,qA,zA,Oo=V(()=>{"use strict";et();pi();Je();Wu=640,qu=new Set(["network_error","timeout","upload_failed","unknown_error","rate_limit_exceeded"]),_i=6,Ti=1500,qA={sharpness:1,exposure:1,meanLuma:128},zA=null});function He(e){return e.section??td[e.checkType]??null}function nd(e){let t={sessionId:e.sessionId,orgName:e.orgName,returning:e.returning===!0,consentRecorded:e.consentRecorded,expiresAt:e.expiresAt,sections:[]};for(let n of e.steps){let i=He(n);i!==null&&!t.sections.includes(i)&&t.sections.push(i)}return e.branding!==void 0&&(t.branding=e.branding),t}function id(e){let t={attemptsRemaining:e.attemptsRemaining,attemptsExhausted:e.attemptsExhausted===!0};return e.reason!==void 0&&(t.reason=e.reason),t}function rd(e,t){let n=e.otpChoice;if(n===void 0||n.locked||n.selected===null)return;let i=t==="phone_otp"?"email":"phone";return n.options.includes(i)?i:void 0}function od(e,t,n,i){let r=t.checkType==="email_otp",o=(r?t.emailOtp:t.otp)??{},a=r?t.emailOtp?.emailSource:t.otp?.numberSource,s=a!==void 0&&ed.has(a)?a:r?"prefilled_or_entered":"user_entered",A=typeof o.sentToMasked=="string"&&o.sentToMasked.length>0,c=rd(e,r?"email_otp":"phone_otp"),l={key:t.checkType,context:n,section:He(t),phase:A?"verify":"send",canSwitch:c!==void 0,...i},m=r?{kind:"email_otp",...l,emailSource:s,needsEmail:s!=="prefilled"}:{kind:"phone_otp",...l,numberSource:s,needsPhone:s!=="prefilled",channels:(t.otp?.channels??[]).filter(d=>d==="whatsapp"||d==="sms")};return c!==void 0&&(m.switchChannel=c),A&&(m.sentToMasked=o.sentToMasked),!r&&t.otp?.channel!==void 0&&(m.channel=t.otp.channel),o.expiresAt!==void 0&&(m.codeExpiresAt=o.expiresAt),o.resendAvailableAt!==void 0&&(m.resendAvailableAt=o.resendAvailableAt),m}function ad(e,t,n,i){let r=e.nniBound===!0?"bound":t.nniFromDocument===!0?"document":"typed",o=r==="typed"&&t.state==="input_required"&&t.reason==="nni_recheck",a=t.reason==="nni_not_found"&&t.state==="input_required"&&!i.attemptsExhausted&&e.methodChoice?.available===!0&&e.methodChoice.options.includes("document_photo");return{kind:"registry",key:"registry",context:n,section:He(t),state:t.state==="input_required"?"input_required":"pending",source:r,recheck:o,canUseDocument:a,...i}}function sd(e,t,n,i){let r=[...t.acceptedSides??[]];return{kind:"document",key:"document",context:n,section:He(t),side:r.includes("recto")?"verso":"recto",acceptedSides:r,documents:CA(e),...i}}function Ad(e){let t=e.steps.find(n=>n.checkType==="liveness");return t?.state==="passed"||t?.state==="review"}function XA(e,t,n,i,r){let o=t.icao?.report;return{kind:"portrait",key:`portrait:${r}`,context:n,section:He(t),phase:r,report:Array.isArray(o)?o:null,review:t.state==="review",tuning:e.capture?.icao??null,tuningVersion:e.capture?.tuningVersion??null,icao:mi(e),retakeOnly:r==="capture"&&t.state==="input_required"&&e.capture?.livePhoto?.oneCapture===!0&&Ad(e),...i}}function cd(e,t){let n=e.capture?.livePhoto;if(n?.oneCapture!==!0)return null;let i=e.steps.find(o=>o.checkType==="portrait_icao"),r=n.still??Ho;return{icao:t==="liveness"&&mi(e)!==null&&i!==void 0&&i.state==="pending"&&i.reason===void 0,still:{minLongSidePx:r.minLongSidePx??Ho.minLongSidePx,jpegQuality:r.jpegQuality??Ho.jpegQuality}}}function ld(e,t,n,i){let r=t.eid,o=He(t);if(r===void 0||r.challenge!=="app_code")return{kind:"unsupported",key:"unsupported:eid_auth",context:n,section:o,checkType:"eid_auth",reason:"update_required"};let a=e.methodChoice,s=a?.available===!0?a.options.find(l=>Zu.includes(l)):void 0,A=s!==void 0&&t.state==="input_required"&&(t.reason!==void 0&&$u.has(t.reason)||t.attemptsExhausted===!0||t.attemptsRemaining===0||t.reason==="eid_resend_limit"&&r.awaiting!=="code"),c={kind:"eid",key:"eid",context:n,section:o,provider:r.provider,providerName:r.providerName,country:r.country,challenge:"app_code",phase:r.awaiting==="code"?"code":"identifier",identifierBound:r.identifierBound===!0,canUseCamera:A,afterPass:r.afterPass==="continue"?"continue":"end",...i};return A&&(c.cameraMethod=s),r.expiresAt!==void 0&&(c.codeExpiresAt=r.expiresAt),r.resendAvailableAt!==void 0&&(c.resendAvailableAt=r.resendAvailableAt),r.resendsRemaining!==void 0&&(c.resendsRemaining=r.resendsRemaining),r.codeAttemptsRemaining!==void 0&&(c.codeAttemptsRemaining=r.codeAttemptsRemaining),c}function ud(e,t){if(t.checkType!=="face_match"||t.reason!==void 0)return null;let n=e.steps.find(i=>i.checkType==="portrait_icao");return n!==void 0&&(n.state==="passed"||n.state==="review")?n:null}function dd(e){return e.steps.some(t=>t.attemptsExhausted===!0)}function gd(e,t){let n=e.failureReason,i;n===jA?i="platform_unsupported":e.status==="expired"?i="expired":e.status==="review_pending"?i="review":e.status==="completed"&&e.outcome==="approved"?i="approved":e.status==="completed"&&e.outcome==="review"?i="review":n==="device_cooldown"?i="cooldown":n!==void 0?i="policy_stop":dd(e)?i="attempts_exhausted":i="rejected";let r=i==="platform_unsupported"?{sessionId:e.sessionId,status:"unavailable"}:Ze(e,{autoRetry:!1}),o={kind:"result",key:"result",context:t,section:null,display:i,result:r};return n!==void 0&&(o.failureReason=n),e.retryAfter!==void 0&&(o.retryAfter=e.retryAfter),o}function md(e,t){let n=e.identitySummary;if(n==null)return null;let i={kind:"identity_summary",key:"identity_summary",context:t,section:"identity",summaryKind:n.kind==="partial"?"partial":n.kind??"full",source:n.source,portraitAvailable:n.portrait?.available===!0,retakeAvailable:n.retakeAvailable===!0};for(let r of hd){let o=n[r];typeof o=="string"&&o!==""&&(i[r]=o)}return i}function _e(e,t={}){let n=nd(e);if(he(e)||e.failureReason===jA)return gd(e,n);let i=md(e,n);if(i!==null)return i;let r=Xe(e);if(r!==null){let c=r.options.filter(m=>ju.includes(m));if(c.length===0)return{kind:"unsupported",key:"unsupported:method",context:n,section:"identity",checkType:"method",reason:"platform_unsupported"};let l={kind:"method",key:"method",context:n,section:"identity",options:c};return c.includes("national_eid")&&r.nationalEid!==void 0&&(l.nationalEid=r.nationalEid),l}let o=Ie(e);if(o===void 0){let c=e.steps.find(l=>l.state==="processing");return{kind:"processing",key:"processing",context:n,section:c===void 0?null:He(c),stalled:!1}}let a=id(o),s=o.checkType,A=He(o);switch(s){case"phone_otp":case"email_otp":{let c=e.otpChoice;return c!==void 0&&c.selected===null&&!c.locked?{kind:"contact_choice",key:"contact_choice",context:n,section:A,options:c.options.filter(l=>l==="phone"||l==="email"),selected:null,locked:!1}:od(e,o,n,a)}case"population_registry":return ad(e,o,n,a);case"eid_auth":return ld(e,o,n,a);case"doc_ocr":return sd(e,o,n,a);case"portrait_icao":return XA(e,o,n,a,"capture");case"liveness":case"face_match":{let c=ud(e,o);if(c!==null)return XA(e,c,n,a,"match");let l=o.requiresMobile===!0,m=mi(e);return l&&t.isMobile===!1?{kind:"mobile_required",key:"mobile_required",context:n,section:A,checkType:s}:{kind:"liveness",key:"biometric",context:n,section:A,mode:s==="face_match"?"selfie":"liveness",requiresMobile:l,instructions:m===null?"standard":"icao",icao:m,livePhoto:cd(e,s),...a}}default:return{kind:"unsupported",key:`unsupported:${s}`,context:n,section:A,checkType:s,reason:s==="nfc_chip"?"platform_unsupported":"update_required"}}}var ju,Zu,$u,jA,ed,td,Ho,hd,Fi=V(()=>{"use strict";pi();Eo();$t();ju=["national_number","document_photo","national_eid"],Zu=["national_number","document_photo"],$u=new Set(["eid_not_enrolled","eid_unavailable","eid_locked"]),jA="platform_unsupported",ed=new Set(["prefilled","user_entered","prefilled_or_entered"]),td={phone_otp:"contact",email_otp:"contact",eid_auth:"identity",doc_ocr:"identity",nfc_chip:"identity",population_registry:"identity",liveness:"live_photo",portrait_icao:"live_photo",face_match:"live_photo"};Ho={minLongSidePx:1280,jpegQuality:.95};hd=["fullName","birthDate","birthYear","nationality","documentType","documentNumberMasked","nniMasked","expiryDate","retakeTarget"]});function ZA(e){let t=null,n=Promise.resolve(),i=!1,r=null,o=null,a=null,s=!1,A=()=>{t?.controller.handle.destroy(),t=null},c=()=>{let h=e.currentView(),u=h===null?null:_e(h,{isMobile:e.isMobile()});return u?.kind==="portrait"?u:null},l=async(h,u)=>{if(e.destroyed())return;u.setFlowState("uploading"),i=!1;let f=null;try{await e.runner().submit("portrait_icao",async(g,C)=>{if(f===null){let Q=await Pe(g,"image","image/jpeg",h.image.size,{engine:"portrait"});await g.uploadToSpaces(Q.uploadUrl,h.image,"image/jpeg"),f=(await g.completeMedia(Q.key)).key}u.setFlowState("checking");let w={media:{portrait:f},gate:hi(h.gate),...h.tuningVersion!==void 0?{tuningVersion:h.tuningVersion}:{}};return g.submitCheck("portrait_icao",w,{idempotencyKey:C})},()=>{r=f})}catch{i=!0}if(u.setFlowState("done"),e.destroyed())return;let p=c();(p===null||p.phase!=="capture")&&t?.controller===u&&A(),e.runner().republish()},m=h=>e.runner().submit("face_match",(u,f)=>u.submitCheck("face_match",r!==null?{imageKey:r}:{},{idempotencyKey:f})).then(()=>{},()=>{i=!0,h()});return{bind:(h,u)=>{if(h.phase==="match")return A(),o!==h.attemptsRemaining&&!i&&(o=h.attemptsRemaining,m(u)),{...h,uploadFailed:i,resubmit:()=>(i=!1,o=h.attemptsRemaining,u(),m(u)),capture:()=>{throw new Error("the portrait was already accepted")}};o=null;let f=e.keptPortraitInput?.()??null;return f!==null&&(s||f!==a&&h.report===null&&h.reason===void 0&&!h.retakeOnly)?(s||(a=f,s=!0,e.runner().submit("portrait_icao",(p,g)=>p.submitCheck("portrait_icao",f,{idempotencyKey:g}),()=>{r=f.media.portrait}).catch(()=>{}).finally(()=>{s=!1,u()})),{kind:"processing",key:"processing",context:h.context,section:h.section,stalled:!1,refresh:()=>Promise.resolve()}):{...h,uploadFailed:i,resubmit:()=>Promise.resolve(),capture:p=>{if(t!==null&&t.video===p.video)return t.controller.handle;A(),i=!1;let g=an({video:p.video,tuning:h.tuning,tuningVersion:h.tuningVersion,...h.icao!=null?{policy:h.icao.policy}:{},...p.keepScreenAwake!==void 0?{keepScreenAwake:p.keepScreenAwake}:{},...p.assetBaseUrl!==void 0?{assetBaseUrl:p.assetBaseUrl}:{}},e.internals);return t={video:p.video,controller:g},g.handle.on("captured",C=>{n=n.then(()=>l(C,g)).catch(()=>{})}),g.handle}}},destroy:A}}var $A=V(()=>{"use strict";pi();Ri();et();Fi()});var Ce,nt,ec=V(()=>{"use strict";Ce=class extends Error{constructor(t,n){super(`invalid ${t} (${n})`),this.name="InvalidInputError",this.field=t,this.kind=n}},nt=class extends Error{constructor(t,n){super(`invalid ${t} (${n})`),this.name="OtpInputError",this.field=t,this.kind=n}}});function Uo(e){return/^\d{10}$/.test(e)&&Number(e)%97===1}function Jo(e){let t="";for(let n of e){let i=n.codePointAt(0)??0;i>=1632&&i<=1641?t+=String(i-1632):i>=1776&&i<=1785?t+=String(i-1776):n!==" "&&n!=="-"&&n!=="\xA0"&&(t+=n)}return t}var tc=V(()=>{"use strict";ec()});function Ni(e){let t=!1,n=null,i="",r=!1,o=!1,a=!1,s={},A={},c=new Set,l=!1,m=null,d="idle",h=new Map,u=new Map,f=(E,y,x)=>{let P=`${E}.${y}`,U=h.get(P);if(U!==void 0)return U;let M=u.get(E),B=(M===void 0?x():M.then(x)).finally(()=>{h.delete(P)});h.set(P,B);let D=B.then(()=>{},()=>{});return u.set(E,D),D.then(()=>{u.get(E)===D&&u.delete(E)}),B},p=async(E,y,x)=>{await e.ensureConsent();try{await Ge(e.runtime,y)}catch(P){if(P instanceof ce&&nc.has(P.code)){await e.refreshView();return}throw P}x?.(),e.destroyed()||await e.refreshView()},g=async E=>{await e.ensureConsent();let y;try{try{y=await E(e.runtime.client)}catch(x){if(!(x instanceof ce)||x.code!=="consent_required")throw x;await e.runtime.ensureConsent({force:!0}),y=await E(e.runtime.client)}}catch(x){if(x instanceof ce&&nc.has(x.code)){await e.refreshView();return}throw x}e.destroyed()||(y!==void 0&&e.setView!==void 0?e.setView(y):await e.refreshView())},C=E=>f("contact",`select:${E}`,()=>g(y=>y.selectContact===void 0?Promise.reject(new Error("contact choice is not available in this build")):y.selectContact(E))),w=E=>f("identity",E,()=>g(y=>y.confirmIdentity===void 0?Promise.reject(new Error("identity confirmation is not available in this build")):y.confirmIdentity(E))),Q=async E=>{await e.ensureConsent();try{await e.selectMethod(E)}catch(y){if(!(y instanceof ce)||y.code!=="consent_required")throw y;await e.runtime.ensureConsent({force:!0}),await e.selectMethod(E)}},k=(E,y)=>{let x=E.kind,P=x==="phone_otp",U=P?"phone":"email",M={action:"send"};if(P?E.needsPhone:E.needsEmail){let B=y[U]??A[x],D=P?B?.replace(/[\s().-]/g,""):B?.trim();if(D===void 0||!(P?pd:Cd).test(D))return Promise.reject(P?new Ce("phone","format"):new nt("email","format"));M[U]=D}if(P){let B=E.channels,D=y.channel??(B.length===1?B[0]:void 0);if(B.length>0){if(D===void 0)return Promise.reject(new nt("channel","required"));if(!B.includes(D))return Promise.reject(new nt("channel","unavailable"))}D!==void 0&&(M.channel=D)}return f(x,"send",()=>p(x,(B,D)=>B.submitCheck(x,M,{idempotencyKey:D}),()=>{s[x]=e.now(),M[U]!==void 0&&(A[x]=M[U])}))},I=(E,y)=>fd.test(y)?f(E,"verify",()=>p(E,(x,P)=>x.submitCheck(E,{action:"verify",code:y},{idempotencyKey:P}))):Promise.reject(new Ce("code","format")),b=(E,y)=>f("eid_auth",E,()=>p("eid_auth",(x,P)=>x.submitCheck("eid_auth",y,{idempotencyKey:P}))),v=(E,y)=>{if(E.identifierBound)return b("start",{action:"start"});let x=Jo(y??"");if(E.country==="MR"){if(!/^\d{10}$/.test(x))return Promise.reject(new Ce("nni","format"));if(!Uo(x))return Promise.reject(new Ce("nni","check_digit"))}else if(x==="")return Promise.reject(new Ce("nni","format"));return b("start",{action:"start",identifier:x})},O=E=>{switch(E.kind){case"phone_otp":case"email_otp":{let y={...E,send:(P={})=>k(E,P),verify:P=>I(E.kind,P),switchTo:()=>E.canSwitch&&E.switchChannel!==void 0?C(E.switchChannel):Promise.reject(new RangeError("this session has no other contact option"))},x=s[E.kind];return y.resendAvailableAt===void 0&&x!==void 0&&(y.resendAvailableAt=new Date(x+Yo).toISOString()),y}case"eid":return{...E,start:y=>v(E,y),verify:y=>Id.test(y)?b("verify",{action:"verify",code:y}):Promise.reject(new Ce("code","format")),resend:()=>E.resendsRemaining===0?Promise.reject(new RangeError("no new code can be sent for this session")):b("resend",{action:"resend"}),useCamera:()=>E.canUseCamera&&E.cameraMethod!==void 0?f("method","useCamera",()=>Q(E.cameraMethod)):Promise.reject(new RangeError("the camera path is not offered"))};case"method":return{...E,select:y=>E.options.includes(y)?f("method","select",()=>Q(y)):Promise.reject(new RangeError(`method ${String(y)} is not offered`))};case"registry":return{...E,submitNni:y=>{if(E.source!=="typed")return Promise.reject(new RangeError("this session already holds the NNI"));let x=Jo(y);return/^\d{10}$/.test(x)?Uo(x)?f("population_registry","submitNni",()=>p("population_registry",(P,U)=>P.submitCheck("population_registry",{nni:x},{idempotencyKey:U}),()=>{m=`\u2022\u2022\u2022\u2022\u2022\u2022${x.slice(-4)}`})):Promise.reject(new Ce("nni","check_digit")):Promise.reject(new Ce("nni","format"))},confirm:()=>f("population_registry","confirm",()=>p("population_registry",(y,x)=>y.submitCheck("population_registry",{},{idempotencyKey:x}))),useDocument:()=>E.canUseDocument?f("method","useDocument",()=>Q("document_photo")):Promise.reject(new RangeError("the document method is not offered"))};case"document":return e.bindDocument!==void 0?e.bindDocument(E,R):{...E,issuer:null,documentType:null,captureSide:null,selectDocument:()=>{throw new Error("document capture is not available in this build")},capture:()=>{throw new Error("document capture is not available in this build")}};case"portrait":return e.bindPortrait!==void 0?e.bindPortrait(E,R):{...E,uploadFailed:!1,resubmit:()=>Promise.resolve(),capture:()=>{throw new Error("portrait capture is not available in this build")}};case"contact_choice":return{...E,select:y=>E.options.includes(y)?C(y):Promise.reject(new RangeError(`contact ${String(y)} is not offered`))};case"identity_summary":return{...E,...E.nniMasked===void 0&&E.summaryKind==="partial"&&m!==null?{nniMasked:m}:{},portrait:async()=>{let y=e.runtime.client;if(!E.portraitAvailable||y.identityPortrait===void 0)return null;try{return await y.identityPortrait()}catch{return null}},confirm:()=>w("confirm"),retake:()=>E.retakeAvailable?w("retake"):Promise.reject(new RangeError("no retake is left"))};case"liveness":return{...E,capture:y=>e.liveness(y),onLivePhoto:y=>E.livePhoto?.icao===!0&&e.onLivePhoto!==void 0?e.onLivePhoto(y):()=>{}};case"mobile_required":case"processing":return{...E,refresh:async()=>{r=!1,await e.refreshView()}};case"unsupported":case"result":return{...E};default:{let y=E;throw new Error(`runner: unhandled step ${JSON.stringify(y)}`)}}},L=async()=>{if(!o){o=!0;try{for(let E of Vo){if(await e.sleep(E),!t||e.destroyed())return;let y=await e.refreshView().catch(()=>null);if(y!==null&&_e(y,{isMobile:e.isMobile()}).kind!=="processing")return}r=!0,R()}finally{o=!1}}},W=E=>{if(E.kind!=="liveness"||E.mode!=="selfie")return null;let y={kind:"processing",key:"processing",context:E.context,section:E.section,stalled:!1};if(d==="inflight")return y;if(!l||d==="done")return null;let x=e.keptFaceKey?.()??null;return x===null?null:(d="inflight",p("face_match",(P,U)=>P.submitCheck("face_match",{imageKey:x},{idempotencyKey:U}),()=>{d="done"}).then(()=>{d==="inflight"&&(d="done",R())},()=>{d="done",R()}),y)},Z=(E,y=!1)=>{if(!t||e.destroyed()||e.chainBusy())return;let x=_e(E,{isMobile:e.isMobile()});x.kind==="registry"&&x.recheck&&(l=!0,d="idle"),x=W(x)??x,x.kind==="processing"?x.stalled=r:r=!1;let P=O(x),U=JSON.stringify(P);x.kind==="registry"&&x.source==="document"&&x.state==="pending"&&!c.has("registry")&&(c.add("registry"),P.confirm().catch(M=>{(!(M instanceof ce)||yd.has(M.code))&&c.delete("registry")})),!(!y&&U===i)&&(i=U,n=P,e.emitStep(P),x.kind==="processing"&&!r&&d!=="inflight"&&L(),x.kind==="result"&&!a&&(a=!0,e.emitResult(x.result)))};function R(){let E=e.currentView();E!==null&&Z(E,!0)}return{run:async()=>{if(e.destroyed())throw new Error("verification destroyed");t=!0;let E=await e.ensureView();return n===null&&Z(E),n??O(_e(E,{isMobile:e.isMobile()}))},current:()=>n,onView:E=>Z(E),onChainIdle:()=>{let E=e.currentView();E!==null&&Z(E)},republish:R,submit:p}}var Vo,Yo,pd,fd,Id,Cd,nc,yd,Ko=V(()=>{"use strict";Xt();et();tc();Fi();Vo=[1e3,2e3,4e3,8e3,15e3],Yo=3e4,pd=/^\+[1-9]\d{7,14}$/,fd=/^\d{6}$/,Id=/^\d{6}$/,Cd=/^[^\s@]+@[^\s@]+\.[^\s@]+$/,nc=new Set(["session_not_active","check_not_found","check_already_finalized","check_out_of_order","method_required","contact_locked","identity_confirm_required","identity_confirm_locked"]),yd=new Set(["network_error","timeout","upload_failed","unknown_error","rate_limit_exceeded"])});function ic(e,t){return e==="hosted"?"/models-ocr":t==="live"?"https://assets.sekyro.ai/sdk/web/ocr":"https://assets-staging.sekyro.ai/sdk/web/ocr"}var Nh,Ph,rc=V(()=>{"use strict";Tr();Nh=Object.keys(We.files).filter(e=>We.files[e].tier==="live"),Ph=Object.keys(We.files).filter(e=>We.files[e].tier==="lazy")});var ac={};ue(ac,{createPlanRunner:()=>bd,sdkAssetBase:()=>oc});function Ed(e){let t=e;if(typeof t.apiOrigin!="string"||typeof t.sessionToken!="string")return;let n=`${t.apiOrigin}/api/v2/hosted/capture-reports`,i=t.sessionToken;return r=>{try{fetch(n,{method:"POST",headers:{"content-type":"application/json","x-session-token":i},body:JSON.stringify({reports:r}),keepalive:!0}).catch(()=>{})}catch{}}}function oc(e){let t=e.apiOrigin;return ic("sdk",typeof t=="string"&&/staging|sandbox|localhost/.test(t)?"sandbox":"live")}function bd(e){let t=null,n=null,i=null,r=Promise.resolve(),o=()=>{i?.flow.handle.destroy(),i=null},a=async(p,g)=>{if(e.destroyed())return;g.setFlowState("uploading");let C=null,w,Q=!1;try{await t.submit("doc_ocr",async(v,O)=>{if(C===null){let L=await Pe(v,"image","image/jpeg",p.image.size,{engine:"document"});await v.uploadToSpaces(L.uploadUrl,p.image,"image/jpeg"),C=(await v.completeMedia(L.key)).key}return g.setFlowState("checking"),w===void 0&&(w=g.takeDeviceRead(p)),v.submitCheck("doc_ocr",{imageKey:C,side:p.side,...w!==null?{deviceRead:w}:{}},{idempotencyKey:O})})}catch{Q=!0}finally{g.setFlowState("done")}if(e.destroyed())return;if(Q){g.settle(p.side,{ok:!1,issue:"technical"});return}let k=e.currentView(),I=k===null?null:_e(k,{isMobile:e.isMobile()});if(I?.kind!=="document"){g.settle(p.side,{ok:!0}),i?.flow===g?o():g.handle.destroy();return}if(I.reason==="document_type_not_accepted"){n=null,i?.flow===g&&o(),t.republish();return}p.side==="single"||I.acceptedSides.includes(p.side)||I.reason==="side_missing"?(g.settle(p.side,{ok:!0}),n?.documentType!=="passport"&&g.handle.setSide(I.side)):g.settle(p.side,{ok:!1,issue:"reread"})},s=(p,g)=>({...p,issuer:n?.issuer??null,documentType:n?.documentType??null,captureSide:n===null?null:n.documentType==="passport"?"single":p.side,selectDocument:(C,w)=>{if(!IA(p.documents).includes(C)||!yo(p.documents,C).includes(w))throw new RangeError(`${w} from ${C} is not accepted`);(n?.issuer!==C||n.documentType!==w)&&o(),n={issuer:C,documentType:w},g()},capture:C=>{if(n===null)throw new Error("selectDocument() first");if(i!==null&&i.video===C.video)return i.flow.handle;o();let w=n,Q=w.documentType==="passport"?"single":p.acceptedSides.length>0?p.side:void 0,k=gi({video:C.video,documentType:w.documentType,issuer:w.issuer,...Q!==void 0?{side:Q}:{},...C.keepScreenAwake!==void 0?{keepScreenAwake:C.keepScreenAwake}:{},...C.liveMrz!==void 0?{liveMrz:C.liveMrz}:{}},{...e.documentInternals??{},...(()=>{let I=e.currentView()?.capture?.document,b=e.documentInternals?.blurRefuseSharpnessMax??I?.scan?.blurRefuseSharpnessMax;return{engineOptions:{camera:cr(I?.camera),shutter:Nn(I?.scan),guideLock:hr(I?.guide),...e.documentInternals?.engineOptions??{}},...typeof b=="number"&&Number.isFinite(b)&&b>=0&&b<=1?{blurRefuseSharpnessMax:b}:{}}})(),deferRead:!0,...(()=>{let I=e.currentView();if(I===null||e.documentInternals?.webOcr!==void 0)return{};let b=Ed(e.runtime.client);return{webOcr:{captureDocument:I.capture?.document,salt:I.sessionId,baseUrl:oc(e.runtime.client),...b!==void 0?{reports:b}:{}}}})()});return i={video:C.video,flow:k},k.handle.on("captured",I=>{r=r.then(()=>a(I,k)).catch(()=>{})}),k.handle}}),A=null,c=null,l=new Set,m=e.runtime.client;e.runtime.client=new Proxy(m,{get(p,g){if(g==="submitCheck")return(c??p).submitCheck.bind(c??p);let C=Reflect.get(p,g);return typeof C=="function"?C.bind(p):C}});let d=()=>{A?.destroy(),A=null,c=null},h=p=>{let g=e.currentView(),C=g===null?null:_e(g,{isMobile:e.isMobile()});if(g===null||C?.kind!=="liveness"||C.livePhoto?.icao!==!0)return;if(A===null){let I=Li({tuning:g.capture?.icao??null,tuningVersion:g.capture?.tuningVersion??null,...C.icao!=null?{policy:C.icao.policy}:{},still:C.livePhoto.still,...p.assetBaseUrl!==void 0?{assetBaseUrl:p.assetBaseUrl}:{}},e.livePhotoInternals);A=I,c=I.decorate(m),I.onGate(b=>{for(let v of l)v(b)})}let w=A,Q=e.baseCapture??{},k=Q.engineOptions?.telemetry;return{...Q,engineOptions:{...Q.engineOptions??{},measureQuality:w.engineOptions.measureQuality,telemetry:I=>{k?.(I),w.engineOptions.telemetry(I)}}}},u=ZA({keptPortraitInput:()=>A?.lastPortraitInput()??null,runner:()=>t,currentView:e.currentView,destroyed:e.destroyed,isMobile:e.isMobile,...e.portraitInternals!==void 0?{internals:e.portraitInternals}:{}}),f=Ni({...e,bindDocument:s,bindPortrait:u.bind,onLivePhoto:p=>(l.add(p),()=>l.delete(p))});return t=f,{...f,captureInternals:h,destroy:()=>{o(),u.destroy(),d(),l.clear()}}}var sc=V(()=>{"use strict";Co();Eo();Mn();Pn();Dn();Oo();$A();et();Ko();Fi();rc()});var Sd={};ue(Sd,{ANALYSIS_LONG_EDGE:()=>xi,ASPECT_BANDS:()=>ln,AttestationError:()=>$e,BLUR_REFUSE_SHARPNESS_MAX:()=>uA,CAPTURE_CANDIDATE_SPACING_MS:()=>kr,CAPTURE_EXTRA_CANDIDATES:()=>wr,CENTERED_FACTOR:()=>Ss,CIRCLE_RADIUS_FACTOR:()=>Bs,CLIPPED_LUMA:()=>RA,CLIP_MIME_ALLOWLIST:()=>jr,CaptureSessionDoc:()=>Fn,DOCUMENT_TYPE_ORDER:()=>ia,DOC_ANALYSIS_DEFAULTS:()=>ca,DOC_CADENCE_HZ:()=>Qr,DOC_CAMERA_TUNING_DEFAULTS:()=>Dt,DOC_CATALOG:()=>na,DOC_DETECT_WIDTH:()=>Te,DOC_FEEDBACK_STATES:()=>kt,DOC_GATE_V1_DEFAULTS:()=>un,DOC_SHUTTER_DEFAULTS:()=>Jt,DocAssist:()=>mt,DocFeedbackAggregator:()=>Mt,DocGateV1:()=>Qt,EMPTY_GUIDE_METRICS:()=>dt,FLIP_FILL_MIN:()=>xm,FLIP_GAP_MS:()=>Mm,FLIP_TIMEOUT_MS:()=>Dm,GUIDE_LOCK_DEFAULTS:()=>gt,GuideLock:()=>Rt,ICAO_CANVAS:()=>Ii,ICAO_FALLBACK:()=>xo,ICAO_GATE_CRITERIA:()=>tt,ICAO_SHARP_REF:()=>_A,INFERENCE_RETRY_ATTEMPTS:()=>eo,INFERENCE_RETRY_DEFAULT_S:()=>to,IN_CIRCLE_FACTOR:()=>Qs,ISSUER_CODES:()=>Oi,LANDMARKER_MODEL:()=>wi,LENS_STORAGE_KEY:()=>wn,LENS_TRY_MAX:()=>Ja,LIVE_MRZ_DEFAULTS:()=>Tt,LIVE_PHOTO_IDLE_MS:()=>Ti,LIVE_PHOTO_MAX_HZ:()=>_i,MANUAL_SHUTTER_MS:()=>vm,MRZ_BAND_DEFAULTS:()=>Ji,MR_DOC_CATALOG:()=>ta,NO_REPORT_MS:()=>Rm,OCR_ASSET_SET:()=>We,OTP_RESEND_COOLDOWN_MS:()=>Yo,PORTRAIT_JPEG_QUALITY:()=>Di,PRELOAD_BLAZE_INIT_TIMEOUT_MS:()=>Hr,PRELOAD_BUDGET_MS:()=>ni,PROCESSING_BACKOFF_MS:()=>Vo,PROCESSING_POLL_DELAY_MS:()=>qo,PROCESSING_POLL_MAX:()=>zo,REGION_PAD:()=>er,REGISTRY_RETRY_DELAY_MS:()=>Wo,RETRYABLE_REASONS:()=>zr,SAME_FACE_MAX_DROPS:()=>Io,SHARPNESS_LONG_EDGE:()=>ya,TEXT_LOCK_DEFAULTS:()=>_t,TRANSPORT_REPLAY_ATTEMPTS:()=>Zr,TRANSPORT_REPLAY_DELAY_MS:()=>$r,TURNSTILE_EXECUTE_TIMEOUT_MS:()=>io,TURNSTILE_SCRIPT_SRC:()=>li,WEB_OCR_ENGINE:()=>Ke,acceptedIssuers:()=>yc,acceptedTypesFor:()=>ra,analyzeDocFrame:()=>Yi,analyzeGuide:()=>gr,aspectBand:()=>Pi,aspectFits:()=>Bt,backgroundStats:()=>NA,browserFamily:()=>Dr,buildDeviceReadHint:()=>Jn,classifyCardSide:()=>ho,classifyCardSideWith:()=>mo,coverPointToVideo:()=>Hc,createDocumentCaptureInternal:()=>gi,createFaceLandmarker:()=>on,createIcaoGate:()=>Ei,createLivePhotoKit:()=>Li,createLivenessCaptureInternal:()=>oi,createPortraitCaptureInternal:()=>an,createStepRunner:()=>Ni,createVerificationInternal:()=>Ac,cropImage:()=>tr,detectIsMobile:()=>De,detectMrzBand:()=>mn,docZoomFor:()=>lr,encodeDocumentImage:()=>lA,executeTurnstile:()=>oo,eyeLineRoll:()=>Bo,eyeOpenness:()=>yi,eyeSpecular:()=>FA,faceGeometry:()=>nn,faceLighting:()=>LA,faceSharpness:()=>PA,facesOf:()=>ki,feedbackVoteOf:()=>Wi,flagOf:()=>bc,focusOk:()=>Ua,formatMismatch:()=>Vt,frontierStep:()=>Ie,guideQuad:()=>mr,guideRegionInFrame:()=>dr,icaoPixelStats:()=>Ro,icaoWindow:()=>Ct,initialScanState:()=>di,isExecutable:()=>je,isTerminalView:()=>he,judgeIcao:()=>wo,lensKindOf:()=>Ga,liveMrzWireReport:()=>Hn,loadTurnstile:()=>ui,lumaPlane:()=>vo,mapEngineState:()=>Kr,mapErrorKind:()=>zt,mapGuidanceHint:()=>Yr,mapSessionResult:()=>Ze,measureBitmapSharpness:()=>ut,measureRegionSharpness:()=>Ea,mergeSessionView:()=>Ai,nextScanState:()=>uo,observePortraitFrame:()=>vi,openDocCamera:()=>ur,passportBandOf:()=>Sr,percentile:()=>ko,photoSharpness:()=>Bn,portraitCropRegion:()=>So,portraitMatchStep:()=>cc,poseFromMatrix:()=>bo,preloadedDetectorFactory:()=>ii,quadAreaFrac:()=>dn,quadBounds:()=>St,quadIou:()=>aa,quadTiltRatio:()=>la,randomUuid:()=>Xo,rankBackCameras:()=>Oa,readStoredLens:()=>Ha,regionStats:()=>Et,resetLivenessAssetsForTests:()=>Zs,resetTurnstileForTests:()=>ro,resizeLongEdge:()=>nr,resolveAcceptedDocuments:()=>Ec,resolveDocCameraTuning:()=>cr,resolveDocShutterTuning:()=>Nn,resolveGuideLockTuning:()=>hr,resolveIcaoTuning:()=>Qi,resolveWebOcrPlan:()=>Gn,runLivenessFlow:()=>ci,runSubmission:()=>Ge,scannerFormatFor:()=>Gi,scoreFrame:()=>Ci,setPreloadLoaderForTests:()=>js,settledHint:()=>Es,singleShotFocusAt:()=>kn,specularFraction:()=>Vi,startWebOcr:()=>On,stepOf:()=>ye,stillRegionOf:()=>Ve,stillToImageData:()=>hA,supportsFocusMode:()=>vt,warmDocDetector:()=>us,windowOverflow:()=>Qo,writeStoredLens:()=>sr});module.exports=Ic(Sd);st();var Oi=["AD","AE","AF","AG","AI","AL","AM","AO","AQ","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","XK","YE","YT","ZA","ZM","ZW"];var ia=["carte_identite","passport","residence_permit"];function ra(e,t){let n=e.byIssuer?.[t]??e.default;return ia.filter(i=>n==="*"||n.includes(i))}function yc(e,t=Oi){return[...new Set([...t,...Object.keys(e.byIssuer??{})])].filter(i=>ra(e,i).length>0).sort()}function Ec(e){if(e.acceptedDocuments)return e.acceptedDocuments;let t=e.acceptedDocumentTypes?.length?[...e.acceptedDocumentTypes]:["carte_identite","passport"];return{default:[],byIssuer:{MR:t}}}function bc(e){return/^[A-Z]{2}$/.test(e)?String.fromCodePoint(...[...e].map(t=>127462+t.charCodeAt(0)-65)):""}wt();hn();Ki();qi();Pn();Mn();Dn();Lt();vr();_r();Tr();Yt();ai();Xt();qr();Yt();ai();qt();et();$t();var Bd="https://api.sekyro.ai",Wo=5e3,qo=1500,zo=10;function Qd(e){return new Promise(t=>setTimeout(t,e))}function Xo(){let e=globalThis.crypto;if(e!==void 0&&typeof e.randomUUID=="function")return e.randomUUID();let t=new Uint8Array(16);if(e!==void 0&&typeof e.getRandomValues=="function")e.getRandomValues(t);else for(let i=0;i<16;i+=1)t[i]=Math.floor(Math.random()*256);t[6]=(t[6]??0)&15|64,t[8]=(t[8]??0)&63|128;let n=[...t].map(i=>i.toString(16).padStart(2,"0")).join("");return`${n.slice(0,8)}-${n.slice(8,12)}-${n.slice(12,16)}-${n.slice(16,20)}-${n.slice(20)}`}function Ac(e,t){let n=e.apiOrigin??Bd,i=e.autoRetry??!0,r=e.rearm??"auto",o=t.client??new si({apiOrigin:n,sessionToken:e.clientToken,...e.fetch!==void 0?{fetch:e.fetch}:{}}),a=t.sleep??Qd,s=t.uuid??Xo,A=t.getTurnstileToken??((_,Y)=>Promise.resolve().then(()=>(ao(),aA)).then(j=>j.executeTurnstile(_,Y))),c=Ne(),l=null,m=null,d=!1,h=new AbortController,u=null,f=null,p=_=>{u=_,c.emit("view",_),l?.onView(_)},g=()=>u!==null?Promise.resolve(u):(f??(f=o.getSession().then(_=>(p(_),_)).finally(()=>{f=null})),f),C=async()=>{let _=await o.getSession();return p(_),_},w=(_,Y)=>{u!==null&&p(Ai(u,_,Y))},Q=null,k=async _=>{let Y=await g();!_&&Y.consentRecorded||(await o.recordConsent(e.locale),u!==null&&p({...u,consentRecorded:!0}))},I=_=>_?.force===!0?k(!0):(Q??(Q=k(!1).finally(()=>{Q=null})),Q),b={client:o,ensureConsent:_=>I(_),sleep:a,uuid:s,onBusy:_=>{d||c.emit("busy",_)}},v=!1,O=null,L=_=>{if(_.status==="approved"||_.status==="rejected"||_.status==="review"){if(v)return;v=!0}O=JSON.stringify(_),c.emit("result",_)},W=_=>{O!==JSON.stringify(_)&&L(_)},Z=async _=>{let Y=u;_&&(Y=await C().catch(()=>u));let j=Y===null?null:Xe(Y);return j!==null&&!d&&c.emit("method",j),j!==null},R=null,E=!1,y=!1,x=()=>Ge(b,(_,Y)=>_.submitCheck("population_registry",{},{idempotencyKey:Y})),P=_=>_.nniBound===!0||ye(_,"population_registry")?.nniFromDocument===!0,U=async()=>{try{let _=await g();if(he(_)||Xe(_)!==null||Ie(_)?.checkType!=="population_registry")return;if(!P(_)&&ye(_,"population_registry")?.nniFromDocument===void 0&&(_=await C()),!P(_)){y=!0;return}await I(),w(await x(),"population_registry");let Y=u===null?void 0:ye(u,"population_registry");if(Y?.state==="input_required"&&Y.reason==="registry_unavailable"&&Y.attemptsRemaining>0){if(await a(Wo),d)return;w(await x(),"population_registry")}}catch(_){if(_ instanceof ce&&_.code==="method_required"){await C().catch(()=>{});return}E=!0;return}u!==null&&he(u)&&L(Ze(u,{autoRetry:i}))},M=()=>(R??(R=U()),R),B=async()=>{let Y=(await g()).turnstileSiteKey;return Y===null?{sandbox:!0}:{channel:"hosted_web",siteKey:Y,turnstileToken:await A(Y,{signal:h.signal})}},D=null,N=Promise.resolve(),H=0,F=async()=>{let _=await g();for(let Y=0;Y<zo&&!d&&!he(_)&&Ie(_)===void 0&&_.steps.some(j=>j.state==="processing")&&(await a(qo),!d);Y+=1)_=await C();return _},G=async(_,Y,j)=>{let{capture:ie}=_,ee=()=>d,re=()=>_.alive&&_.attempt===j,le=Ae=>{re()&&ie.setFlowState(Ae)},se=Ae=>{if(!ee()&&(L(Ae),!!re())){if(Ae.status==="retry"&&r==="auto"){ie.handle.retry();return}ie.setFlowState("done")}};if(Y.degraded==="NO_RECORDER"){let Ae=u?.sessionId??(await g().catch(()=>null))?.sessionId??"";se(Me(Ae,"no_recorder"));return}le("uploading");try{if(await M(),ee())return;let Ae=await g();if(!he(Ae)&&Xe(Ae)!==null){await Z(!1),se(Me(Ae.sessionId,"method_required"));return}if(!he(Ae)){if(Ie(Ae)?.checkType==="population_registry"){se(Me(Ae.sessionId,y?"nni_unbound":E?"network":"registry_unavailable"));return}if(await I(),ee())return;let be=await ci({...b,artifacts:Y,getAttestation:B,getView:()=>u??Ae,refreshView:C,applySubmit:w,onPhase:le,isCancelled:ee,onKeyframePromoted:Be=>{m=Be}});if(ee())return;if(be.kind==="unavailable"){if(be.reason==="method_required"&&await Z(!0),ee())return;se(Me(Ae.sessionId,be.reason));return}be.kind==="resync"&&await C(),Ae=await F()}se(Ze(Ae,{autoRetry:i}))}catch{if(ee())return;se(Me(u?.sessionId??"","network"))}},J=(_,Y)=>{let j=_.attempt;H>0&&_.alive&&_.capture.setFlowState("uploading"),H+=1,N=N.then(()=>G(_,Y,j)).finally(()=>{H-=1,H===0&&l?.onChainIdle()}).catch(()=>{})},q=_=>{D?.capture.handle.destroy(),D!==null&&(D.alive=!1);let Y=oi(_,l?.captureInternals?.(_)??t.capture,()=>u?.capture?.liveness?.keyframe?.rank===!0),j={capture:Y,alive:!0,attempt:0};D=j,Y.handle.on("state",ee=>{ee==="starting"&&(j.attempt+=1)}),Y.handle.on("captured",ee=>{Promise.resolve().then(()=>J(j,ee))});let ie=Y.handle;return{get state(){return ie.state},on:(ee,re)=>ie.on(ee,re),start:ee=>ie.start(ee),retry:()=>ie.retry(),switchCamera:()=>ie.switchCamera(),destroy:()=>{j.alive=!1,D===j&&(D=null),ie.destroy()}}},z=async()=>{if(d)return null;try{let _=await g();return d?null:Xe(_)}catch{return null}},X=async()=>{if(d)return!1;try{let _=await g();if(d||he(_))return!1;let Y=ye(_,"liveness");return je(Y)&&Y?.requiresMobile===!0&&!De()}catch{return!1}},S=async()=>{if(d)return!1;try{let _=await g();return!d&&_.returning===!0}catch{return!1}},T=async _=>{let Y=await o.selectMethod(_);d||p(Y)},K=null,$=()=>(K??(K=Promise.resolve().then(()=>(sc(),ac)).then(_=>{let Y=_.createPlanRunner({runtime:b,currentView:()=>u,ensureView:g,refreshView:C,ensureConsent:()=>I(),selectMethod:T,liveness:q,chainBusy:()=>H>0,destroyed:()=>d,sleep:a,isMobile:De,now:t.now??Date.now,keptFaceKey:()=>m,setView:p,baseCapture:t.capture,emitStep:j=>{d||c.emit("step",j)},emitResult:W,...t.document!==void 0?{documentInternals:t.document}:{},...t.portrait!==void 0?{portraitInternals:t.portrait}:{},livePhotoInternals:t.livePhoto});return l=Y,Y})),K);return{consent:()=>I(),startRegistry:M,methodChoice:z,selectMethod:T,mobileRequired:X,returning:S,liveness:q,run:async()=>{if(d)throw new Error("verification destroyed");return(await $()).run()},currentStep:()=>l?.current()??null,voiceClips:async()=>{if(d)return null;try{let _=await g();return d?null:_.voice??null}catch{return null}},on:(_,Y)=>c.on(_,Y),destroy:()=>{d=!0,h.abort(),l?.destroy(),D!==null&&(D.alive=!1,D.capture.handle.destroy(),D=null),c.clear()}}}et();Ko();$t();ao();Vr();Co();go();fo();Qn();Ao();Ri();Mi();bi();rn();_o();Si();function cc(e,t){if(t.checkType!=="face_match"||t.reason!==void 0)return null;let n=e.steps.find(i=>i.checkType==="portrait_icao");return n!==void 0&&(n.state==="passed"||n.state==="review")?n:null}Oo();0&&(module.exports={ANALYSIS_LONG_EDGE,ASPECT_BANDS,AttestationError,BLUR_REFUSE_SHARPNESS_MAX,CAPTURE_CANDIDATE_SPACING_MS,CAPTURE_EXTRA_CANDIDATES,CENTERED_FACTOR,CIRCLE_RADIUS_FACTOR,CLIPPED_LUMA,CLIP_MIME_ALLOWLIST,CaptureSessionDoc,DOCUMENT_TYPE_ORDER,DOC_ANALYSIS_DEFAULTS,DOC_CADENCE_HZ,DOC_CAMERA_TUNING_DEFAULTS,DOC_CATALOG,DOC_DETECT_WIDTH,DOC_FEEDBACK_STATES,DOC_GATE_V1_DEFAULTS,DOC_SHUTTER_DEFAULTS,DocAssist,DocFeedbackAggregator,DocGateV1,EMPTY_GUIDE_METRICS,FLIP_FILL_MIN,FLIP_GAP_MS,FLIP_TIMEOUT_MS,GUIDE_LOCK_DEFAULTS,GuideLock,ICAO_CANVAS,ICAO_FALLBACK,ICAO_GATE_CRITERIA,ICAO_SHARP_REF,INFERENCE_RETRY_ATTEMPTS,INFERENCE_RETRY_DEFAULT_S,IN_CIRCLE_FACTOR,ISSUER_CODES,LANDMARKER_MODEL,LENS_STORAGE_KEY,LENS_TRY_MAX,LIVE_MRZ_DEFAULTS,LIVE_PHOTO_IDLE_MS,LIVE_PHOTO_MAX_HZ,MANUAL_SHUTTER_MS,MRZ_BAND_DEFAULTS,MR_DOC_CATALOG,NO_REPORT_MS,OCR_ASSET_SET,OTP_RESEND_COOLDOWN_MS,PORTRAIT_JPEG_QUALITY,PRELOAD_BLAZE_INIT_TIMEOUT_MS,PRELOAD_BUDGET_MS,PROCESSING_BACKOFF_MS,PROCESSING_POLL_DELAY_MS,PROCESSING_POLL_MAX,REGION_PAD,REGISTRY_RETRY_DELAY_MS,RETRYABLE_REASONS,SAME_FACE_MAX_DROPS,SHARPNESS_LONG_EDGE,TEXT_LOCK_DEFAULTS,TRANSPORT_REPLAY_ATTEMPTS,TRANSPORT_REPLAY_DELAY_MS,TURNSTILE_EXECUTE_TIMEOUT_MS,TURNSTILE_SCRIPT_SRC,WEB_OCR_ENGINE,acceptedIssuers,acceptedTypesFor,analyzeDocFrame,analyzeGuide,aspectBand,aspectFits,backgroundStats,browserFamily,buildDeviceReadHint,classifyCardSide,classifyCardSideWith,coverPointToVideo,createDocumentCaptureInternal,createFaceLandmarker,createIcaoGate,createLivePhotoKit,createLivenessCaptureInternal,createPortraitCaptureInternal,createStepRunner,createVerificationInternal,cropImage,detectIsMobile,detectMrzBand,docZoomFor,encodeDocumentImage,executeTurnstile,eyeLineRoll,eyeOpenness,eyeSpecular,faceGeometry,faceLighting,faceSharpness,facesOf,feedbackVoteOf,flagOf,focusOk,formatMismatch,frontierStep,guideQuad,guideRegionInFrame,icaoPixelStats,icaoWindow,initialScanState,isExecutable,isTerminalView,judgeIcao,lensKindOf,liveMrzWireReport,loadTurnstile,lumaPlane,mapEngineState,mapErrorKind,mapGuidanceHint,mapSessionResult,measureBitmapSharpness,measureRegionSharpness,mergeSessionView,nextScanState,observePortraitFrame,openDocCamera,passportBandOf,percentile,photoSharpness,portraitCropRegion,portraitMatchStep,poseFromMatrix,preloadedDetectorFactory,quadAreaFrac,quadBounds,quadIou,quadTiltRatio,randomUuid,rankBackCameras,readStoredLens,regionStats,resetLivenessAssetsForTests,resetTurnstileForTests,resizeLongEdge,resolveAcceptedDocuments,resolveDocCameraTuning,resolveDocShutterTuning,resolveGuideLockTuning,resolveIcaoTuning,resolveWebOcrPlan,runLivenessFlow,runSubmission,scannerFormatFor,scoreFrame,setPreloadLoaderForTests,settledHint,singleShotFocusAt,specularFraction,startWebOcr,stepOf,stillRegionOf,stillToImageData,supportsFocusMode,warmDocDetector,windowOverflow,writeStoredLens});
|