@richard.fadiora/liveness-detection 4.2.3 → 4.2.6
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/dist/index.cjs.js +18 -4
- package/dist/index.d.ts +48 -1
- package/dist/index.es.js +4124 -315
- package/dist/index.umd.js +18 -4
- package/package.json +3 -1
package/dist/index.cjs.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";var Ar=Object.create;var jt=Object.defineProperty;var _r=Object.getOwnPropertyDescriptor;var Tn=(n,e)=>(e=Symbol[n])?e:Symbol.for("Symbol."+n),ot=n=>{throw TypeError(n)};var On=(n,e,t)=>e in n?jt(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var Sn=(n,e)=>jt(n,"name",{value:e,configurable:!0});var gt=n=>[,,,Ar((n==null?void 0:n[Tn("metadata")])??null)],Bn=["class","method","getter","setter","accessor","field","value","get","set"],it=n=>n!==void 0&&typeof n!="function"?ot("Function expected"):n,Sr=(n,e,t,r,i)=>({kind:Bn[n],name:e,metadata:r,addInitializer:o=>t._?ot("Already initialized"):i.push(it(o||null))}),wr=(n,e)=>On(e,Tn("metadata"),n[3]),mt=(n,e,t,r)=>{for(var i=0,o=n[e>>1],c=o&&o.length;i<c;i++)e&1?o[i].call(t):r=o[i].call(t,r);return r},yt=(n,e,t,r,i,o)=>{var c,l,D,h,p,d=e&7,y=!!(e&8),g=!!(e&16),E=d>3?n.length+1:d?y?1:2:0,v=Bn[d+5],B=d>3&&(n[E-1]=[]),G=n[E]||(n[E]=[]),A=d&&(!g&&!y&&(i=i.prototype),d<5&&(d>3||!g)&&_r(d<4?i:{get[t](){return wn(this,o)},set[t](w){return In(this,o,w)}},t));d?g&&d<4&&Sn(o,(d>2?"set ":d>1?"get ":"")+t):Sn(i,t);for(var H=r.length-1;H>=0;H--)h=Sr(d,t,D={},n[3],G),d&&(h.static=y,h.private=g,p=h.access={has:g?w=>Ir(i,w):w=>t in w},d^3&&(p.get=g?w=>(d^1?wn:Tr)(w,i,d^4?o:A.get):w=>w[t]),d>2&&(p.set=g?(w,Y)=>In(w,i,Y,d^4?o:A.set):(w,Y)=>w[t]=Y)),l=(0,r[H])(d?d<4?g?o:A[v]:d>4?void 0:{get:A.get,set:A.set}:i,h),D._=1,d^4||l===void 0?it(l)&&(d>4?B.unshift(l):d?g?o=l:A[v]=l:i=l):typeof l!="object"||l===null?ot("Object expected"):(it(c=l.get)&&(A.get=c),it(c=l.set)&&(A.set=c),it(c=l.init)&&B.unshift(c));return d||wr(n,i),A&&jt(i,t,A),g?d^4?o:A:i},u=(n,e,t)=>On(n,typeof e!="symbol"?e+"":e,t),Ut=(n,e,t)=>e.has(n)||ot("Cannot "+t),Ir=(n,e)=>Object(e)!==e?ot('Cannot use the "in" operator on this value'):n.has(e),wn=(n,e,t)=>(Ut(n,e,"read from private field"),t?t.call(n):e.get(n));var In=(n,e,t,r)=>(Ut(n,e,"write to private field"),r?r.call(n,t):e.set(n,t),t),Tr=(n,e,t)=>(Ut(n,e,"access private method"),t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Nt=require("@mediapipe/tasks-vision"),z=require("react"),Or=require("react-webcam"),a=require("@angular/core");function Br(n){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(n){for(const t in n)if(t!=="default"){const r=Object.getOwnPropertyDescriptor(n,t);Object.defineProperty(e,t,r.get?r:{enumerable:!0,get:()=>n[t]})}}return e.default=n,Object.freeze(e)}const s=Br(a),er=async(n,e,t)=>{const r=new FormData;e.forEach((c,l)=>{r.append("files",c,`frame_${l}.jpg`)}),r.append("challenge",JSON.stringify(t));const i=await fetch(`${n}/v1/verify`,{method:"POST",body:r});if(!i.ok)throw new Error("Network response was not ok");return await i.json()},Rr=Object.freeze(Object.defineProperty({__proto__:null,verifyLiveness:er},Symbol.toStringTag,{value:"Module"}));class ln{constructor(e){this.models={face:null,hand:null},this.webcam=null,this.currentStepRef=0,this.isStepTransitioningRef=!1,this.timerId=null,this.requestId=null,this.offscreenCanvas=document.createElement("canvas"),this.CHALLENGE_POOL=["Smile","Blink","Turn_Head","Thumbs_Up"],this.attachVideo=t=>{this.webcam=t,console.log("[LivenessEngine] Video stream attached.")},this.start=()=>{if(this.state.status!=="ready"||!this.webcam){console.warn("[LivenessEngine] Engine not ready or video missing.");return}console.log("[LivenessEngine] Session Starting..."),this.state.status="capturing",this.updateState({status:"capturing"}),this.startTimer(),this.detectLoop()},this.stop=()=>{this.timerId&&clearInterval(this.timerId),this.requestId&&cancelAnimationFrame(this.requestId),this.timerId=null,this.requestId=null},this.reset=()=>{this.stop(),this.currentStepRef=0,this.isStepTransitioningRef=!1,this.generateSequence(),this.updateState({status:"ready",currentStep:0,timeLeft:this.config.duration,isStepTransitioning:!1,errorMsg:""})},this.detectLoop=()=>{var r;if(this.state.status!=="capturing"||!this.webcam||!this.models.face)return;const t=performance.now();try{const i=this.models.face.detectForVideo(this.webcam,t),o=(r=this.models.hand)==null?void 0:r.detectForVideo(this.webcam,t),c=this.state.sequence[this.currentStepRef];if(this.checkAction(i,o,c)){this.handleStepSuccess();return}}catch(i){console.error("[LivenessEngine] Loop detection error:",i)}this.requestId=requestAnimationFrame(this.detectLoop)},this.config={apiUrl:e.apiUrl,duration:e.duration??60,smileThreshold:e.smileThreshold??.2,blinkThreshold:e.blinkThreshold??.012,minturnHeadThreshold:e.minturnHeadThreshold??.15,maxturnHeadThreshold:e.maxturnHeadThreshold??.85,onStateChange:e.onStateChange||(()=>{}),onComplete:e.onComplete||(()=>{}),onError:e.onError||(()=>{})},this.state={status:"loading",sequence:[],currentStep:0,timeLeft:this.config.duration,isStepTransitioning:!1,errorMsg:""},this.offscreenCanvas.width=224,this.offscreenCanvas.height=224}async loadModels(){console.log("[LivenessEngine] Loading AI Models...");try{const e=await Nt.FilesetResolver.forVisionTasks("https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@0.10.3/wasm");this.models.face=await Nt.FaceLandmarker.createFromOptions(e,{baseOptions:{modelAssetPath:"https://storage.googleapis.com/mediapipe-models/face_landmarker/face_landmarker/float16/1/face_landmarker.task",delegate:"GPU"},outputFaceBlendshapes:!0,runningMode:"VIDEO"}),this.models.hand=await Nt.HandLandmarker.createFromOptions(e,{baseOptions:{modelAssetPath:"https://storage.googleapis.com/mediapipe-models/hand_landmarker/hand_landmarker/float16/1/hand_landmarker.task",delegate:"GPU"},runningMode:"VIDEO",numHands:1}),this.generateSequence(),this.updateState({status:"ready"}),console.log("[LivenessEngine] Models Loaded.")}catch(e){console.error("[LivenessEngine] Init Error:",e),this.updateState({status:"error",errorMsg:"Failed to load security assets."})}}updateState(e){this.state={...this.state,...e},this.config.onStateChange(this.state)}generateSequence(){const e=[...this.CHALLENGE_POOL].sort(()=>.5-Math.random()).slice(0,3);return this.state.sequence=e,e}startTimer(){this.timerId&&clearInterval(this.timerId),this.timerId=setInterval(()=>{this.state.timeLeft>0?this.updateState({timeLeft:this.state.timeLeft-1}):(this.stop(),this.updateState({status:"expired"}))},1e3)}handleStepSuccess(){this.isStepTransitioningRef||(this.isStepTransitioningRef=!0,this.updateState({isStepTransitioning:!0}),setTimeout(()=>{this.currentStepRef<this.state.sequence.length-1?(this.currentStepRef++,this.isStepTransitioningRef=!1,this.updateState({currentStep:this.currentStepRef,isStepTransitioning:!1}),this.requestId=requestAnimationFrame(this.detectLoop)):this.sendFinalProof()},1500))}checkAction(e,t,r){var i,o;if(this.isStepTransitioningRef)return!1;if(r==="Thumbs_Up"&&((i=t==null?void 0:t.landmarks)==null?void 0:i.length)>0){const c=t.landmarks[0];return c[4].y<c[2].y&&[8,12,16,20].every(l=>c[l].y>c[l-2].y)}if(((o=e==null?void 0:e.faceLandmarks)==null?void 0:o.length)>0){const c=e.faceLandmarks[0];switch(r){case"Smile":return c[291].x-c[61].x>this.config.smileThreshold;case"Blink":const l=Math.abs(c[159].y-c[145].y),D=Math.abs(c[386].y-c[374].y);return(l+D)/2<this.config.blinkThreshold;case"Turn_Head":const h=(c[1].x-c[33].x)/(c[263].x-c[33].x);return h<this.config.minturnHeadThreshold||h>this.config.maxturnHeadThreshold;default:return!1}}return!1}async sendFinalProof(){var e,t;this.stop(),this.updateState({status:"verifying"});try{const r=[];let i="";for(let l=0;l<5&&this.webcam;l++){const D=(e=this.models.face)==null?void 0:e.detectForVideo(this.webcam,performance.now());if((t=D==null?void 0:D.faceLandmarks)!=null&&t[0]){const h=this.getFaceCrop(this.webcam,D.faceLandmarks[0]),p=await new Promise(d=>h.toBlob(d,"image/jpeg",.9));p&&r.push(p),l===4&&(i=h.toDataURL("image/jpeg"))}await new Promise(h=>setTimeout(h,100))}const{verifyLiveness:o}=await Promise.resolve().then(()=>Rr),c=await o(this.config.apiUrl,r,this.state.sequence);if(c.is_live)this.updateState({status:"success"}),this.config.onComplete({success:!0,image:i,skinConfidence:c.skin_confidence});else{const l=c.reason||"Liveness check failed";this.updateState({status:"error",errorMsg:l}),this.config.onError({success:!1,reason:l})}}catch{this.updateState({status:"error",errorMsg:"Verification failed."}),this.config.onError({success:!1,reason:"Network error"})}}getFaceCrop(e,t){const r=this.offscreenCanvas.getContext("2d"),i=t.map(g=>g.x*e.videoWidth),o=t.map(g=>g.y*e.videoHeight),c=Math.min(...i),l=Math.max(...i),D=Math.min(...o),h=Math.max(...o),p=l-c,d=h-D,y=p*.3;return r.clearRect(0,0,224,224),r.drawImage(e,c-y,D-y,p+y*2,d+y*2,0,0,224,224),this.offscreenCanvas}}const tr=n=>{const[e,t]=z.useState({status:"loading",sequence:[],currentStep:0,timeLeft:n.duration||60,isStepTransitioning:!1,errorMsg:""}),r=z.useRef(null),i=z.useRef(null);z.useEffect(()=>{const l=new ln({...n,onStateChange:D=>t({...D})});return r.current=l,l.loadModels(),()=>l.stop()},[]),z.useEffect(()=>{var l,D;if(e.status!=="loading"&&e.status!=="error"){const h=(l=i.current)==null?void 0:l.video;if(h&&h.readyState>=2)(D=r.current)==null||D.attachVideo(h);else{const p=setInterval(()=>{var y,g;const d=(y=i.current)==null?void 0:y.video;d&&d.readyState>=2&&((g=r.current)==null||g.attachVideo(d),clearInterval(p))},100);return()=>clearInterval(p)}}},[e.status]);const o=z.useCallback(()=>{var l;console.log("[Hook] Start Clicked"),(l=r.current)==null||l.start()},[]),c=z.useCallback(()=>{var l;console.log("[Hook] Reset Clicked"),(l=r.current)==null||l.reset()},[]);return{...e,webcamRef:i,start:o,reset:c}};var Qt={exports:{}},at={};/**
|
|
2
2
|
* @license React
|
|
3
3
|
* react-jsx-runtime.production.js
|
|
4
4
|
*
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* This source code is licensed under the MIT license found in the
|
|
8
8
|
* LICENSE file in the root directory of this source tree.
|
|
9
|
-
*/var
|
|
9
|
+
*/var Rn;function kr(){if(Rn)return at;Rn=1;var n=Symbol.for("react.transitional.element"),e=Symbol.for("react.fragment");function t(r,i,o){var c=null;if(o!==void 0&&(c=""+o),i.key!==void 0&&(c=""+i.key),"key"in i){o={};for(var l in i)l!=="key"&&(o[l]=i[l])}else o=i;return i=o.ref,{$$typeof:n,type:r,key:c,ref:i!==void 0?i:null,props:o}}return at.Fragment=e,at.jsx=t,at.jsxs=t,at}var ut={};/**
|
|
10
10
|
* @license React
|
|
11
11
|
* react-jsx-runtime.development.js
|
|
12
12
|
*
|
|
@@ -14,9 +14,23 @@
|
|
|
14
14
|
*
|
|
15
15
|
* This source code is licensed under the MIT license found in the
|
|
16
16
|
* LICENSE file in the root directory of this source tree.
|
|
17
|
-
*/var
|
|
17
|
+
*/var kn;function Mr(){return kn||(kn=1,process.env.NODE_ENV!=="production"&&function(){function n(f){if(f==null)return null;if(typeof f=="function")return f.$$typeof===Er?null:f.displayName||f.name||null;if(typeof f=="string")return f;switch(f){case B:return"Fragment";case A:return"Profiler";case G:return"StrictMode";case mr:return"Suspense";case yr:return"SuspenseList";case Fr:return"Activity"}if(typeof f=="object")switch(typeof f.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),f.$$typeof){case v:return"Portal";case w:return f.displayName||"Context";case H:return(f._context.displayName||"Context")+".Consumer";case Y:var m=f.render;return f=f.displayName,f||(f=m.displayName||m.name||"",f=f!==""?"ForwardRef("+f+")":"ForwardRef"),f;case Cr:return m=f.displayName||null,m!==null?m:n(f.type)||"Memo";case Mt:m=f._payload,f=f._init;try{return n(f(m))}catch{}}return null}function e(f){return""+f}function t(f){try{e(f);var m=!1}catch{m=!0}if(m){m=console;var b=m.error,I=typeof Symbol=="function"&&Symbol.toStringTag&&f[Symbol.toStringTag]||f.constructor.name||"Object";return b.call(m,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",I),e(f)}}function r(f){if(f===B)return"<>";if(typeof f=="object"&&f!==null&&f.$$typeof===Mt)return"<...>";try{var m=n(f);return m?"<"+m+">":"<...>"}catch{return"<...>"}}function i(){var f=xt.A;return f===null?null:f.getOwner()}function o(){return Error("react-stack-top-frame")}function c(f){if(Fn.call(f,"key")){var m=Object.getOwnPropertyDescriptor(f,"key").get;if(m&&m.isReactWarning)return!1}return f.key!==void 0}function l(f,m){function b(){En||(En=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",m))}b.isReactWarning=!0,Object.defineProperty(f,"key",{get:b,configurable:!0})}function D(){var f=n(this.type);return vn[f]||(vn[f]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),f=this.props.ref,f!==void 0?f:null}function h(f,m,b,I,ht,Vt){var T=b.ref;return f={$$typeof:E,type:f,key:m,props:b,_owner:I},(T!==void 0?T:null)!==null?Object.defineProperty(f,"ref",{enumerable:!1,get:D}):Object.defineProperty(f,"ref",{enumerable:!1,value:null}),f._store={},Object.defineProperty(f._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(f,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(f,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:ht}),Object.defineProperty(f,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:Vt}),Object.freeze&&(Object.freeze(f.props),Object.freeze(f)),f}function p(f,m,b,I,ht,Vt){var T=m.children;if(T!==void 0)if(I)if(vr(T)){for(I=0;I<T.length;I++)d(T[I]);Object.freeze&&Object.freeze(T)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else d(T);if(Fn.call(m,"key")){T=n(f);var pe=Object.keys(m).filter(function(br){return br!=="key"});I=0<pe.length?"{key: someKey, "+pe.join(": ..., ")+": ...}":"{key: someKey}",_n[T+I]||(pe=0<pe.length?"{"+pe.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
|
|
18
18
|
let props = %s;
|
|
19
19
|
<%s {...props} />
|
|
20
20
|
React keys must be passed directly to JSX without using spread:
|
|
21
21
|
let props = %s;
|
|
22
|
-
<%s key={someKey} {...props} />`,
|
|
22
|
+
<%s key={someKey} {...props} />`,I,T,pe,T),_n[T+I]=!0)}if(T=null,b!==void 0&&(t(b),T=""+b),c(m)&&(t(m.key),T=""+m.key),"key"in m){b={};for(var Pt in m)Pt!=="key"&&(b[Pt]=m[Pt])}else b=m;return T&&l(b,typeof f=="function"?f.displayName||f.name||"Unknown":f),h(f,T,b,i(),ht,Vt)}function d(f){y(f)?f._store&&(f._store.validated=1):typeof f=="object"&&f!==null&&f.$$typeof===Mt&&(f._payload.status==="fulfilled"?y(f._payload.value)&&f._payload.value._store&&(f._payload.value._store.validated=1):f._store&&(f._store.validated=1))}function y(f){return typeof f=="object"&&f!==null&&f.$$typeof===E}var g=z,E=Symbol.for("react.transitional.element"),v=Symbol.for("react.portal"),B=Symbol.for("react.fragment"),G=Symbol.for("react.strict_mode"),A=Symbol.for("react.profiler"),H=Symbol.for("react.consumer"),w=Symbol.for("react.context"),Y=Symbol.for("react.forward_ref"),mr=Symbol.for("react.suspense"),yr=Symbol.for("react.suspense_list"),Cr=Symbol.for("react.memo"),Mt=Symbol.for("react.lazy"),Fr=Symbol.for("react.activity"),Er=Symbol.for("react.client.reference"),xt=g.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,Fn=Object.prototype.hasOwnProperty,vr=Array.isArray,Lt=console.createTask?console.createTask:function(){return null};g={react_stack_bottom_frame:function(f){return f()}};var En,vn={},bn=g.react_stack_bottom_frame.bind(g,o)(),An=Lt(r(o)),_n={};ut.Fragment=B,ut.jsx=function(f,m,b){var I=1e4>xt.recentlyCreatedOwnerStacks++;return p(f,m,b,!1,I?Error("react-stack-top-frame"):bn,I?Lt(r(f)):An)},ut.jsxs=function(f,m,b){var I=1e4>xt.recentlyCreatedOwnerStacks++;return p(f,m,b,!0,I?Error("react-stack-top-frame"):bn,I?Lt(r(f)):An)}}()),ut}process.env.NODE_ENV==="production"?Qt.exports=kr():Qt.exports=Mr();var k=Qt.exports;const xr=({apiUrl:n,duration:e,onComplete:t,onError:r,classNames:i={},render:o,smileThreshold:c,blinkThreshold:l,minturnHeadThreshold:D,maxturnHeadThreshold:h})=>{var d;const p=tr({apiUrl:n,duration:e,smileThreshold:c,blinkThreshold:l,minturnHeadThreshold:D,maxturnHeadThreshold:h,onComplete:t,onError:r});return o?o(p):k.jsxs("div",{className:i.container,children:[p.status==="loading"&&k.jsx("div",{children:"Initializing..."}),["ready","capturing","verifying"].includes(p.status)&&k.jsxs(k.Fragment,{children:[k.jsx(Or,{ref:p.webcamRef,mirrored:!0,screenshotFormat:"image/jpeg",className:i.webcam}),p.status==="capturing"&&k.jsx("div",{className:"liveness-challenge",children:p.isStepTransitioning?"Step verified! Get ready for the next...":`Do this: ${(d=p.sequence[p.currentStep])==null?void 0:d.replace("_"," ")}`}),["capturing","ready"].includes(p.status)&&k.jsxs("div",{className:i.timer,children:[p.timeLeft,"s"]}),p.status==="ready"&&k.jsx("button",{onClick:p.start,className:i.button,children:"Start Challenge"}),p.status==="verifying"&&k.jsx("div",{children:"Analyzing..."})]}),p.status==="error"&&k.jsxs("div",{className:i.error,children:[p.errorMsg,k.jsx("button",{onClick:p.reset,className:i.button,children:"Retry"})]}),p.status==="success"&&k.jsx("div",{className:i.success,children:"Verification Complete"})]})};var en=function(n,e){return en=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,r){t.__proto__=r}||function(t,r){for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(t[i]=r[i])},en(n,e)};function Dt(n,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");en(n,e);function t(){this.constructor=n}n.prototype=e===null?Object.create(e):(t.prototype=e.prototype,new t)}function tn(n){var e=typeof Symbol=="function"&&Symbol.iterator,t=e&&n[e],r=0;if(t)return t.call(n);if(n&&typeof n.length=="number")return{next:function(){return n&&r>=n.length&&(n=void 0),{value:n&&n[r++],done:!n}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function nn(n,e){var t=typeof Symbol=="function"&&n[Symbol.iterator];if(!t)return n;var r=t.call(n),i,o=[],c;try{for(;(e===void 0||e-- >0)&&!(i=r.next()).done;)o.push(i.value)}catch(l){c={error:l}}finally{try{i&&!i.done&&(t=r.return)&&t.call(r)}finally{if(c)throw c.error}}return o}function rn(n,e,t){if(t||arguments.length===2)for(var r=0,i=e.length,o;r<i;r++)(o||!(r in e))&&(o||(o=Array.prototype.slice.call(e,0,r)),o[r]=e[r]);return n.concat(o||Array.prototype.slice.call(e))}function N(n){return typeof n=="function"}function nr(n){var e=function(r){Error.call(r),r.stack=new Error().stack},t=n(e);return t.prototype=Object.create(Error.prototype),t.prototype.constructor=t,t}var $t=nr(function(n){return function(t){n(this),this.message=t?t.length+` errors occurred during unsubscription:
|
|
23
|
+
`+t.map(function(r,i){return i+1+") "+r.toString()}).join(`
|
|
24
|
+
`):"",this.name="UnsubscriptionError",this.errors=t}});function sn(n,e){if(n){var t=n.indexOf(e);0<=t&&n.splice(t,1)}}var Rt=function(){function n(e){this.initialTeardown=e,this.closed=!1,this._parentage=null,this._finalizers=null}return n.prototype.unsubscribe=function(){var e,t,r,i,o;if(!this.closed){this.closed=!0;var c=this._parentage;if(c)if(this._parentage=null,Array.isArray(c))try{for(var l=tn(c),D=l.next();!D.done;D=l.next()){var h=D.value;h.remove(this)}}catch(v){e={error:v}}finally{try{D&&!D.done&&(t=l.return)&&t.call(l)}finally{if(e)throw e.error}}else c.remove(this);var p=this.initialTeardown;if(N(p))try{p()}catch(v){o=v instanceof $t?v.errors:[v]}var d=this._finalizers;if(d){this._finalizers=null;try{for(var y=tn(d),g=y.next();!g.done;g=y.next()){var E=g.value;try{Mn(E)}catch(v){o=o??[],v instanceof $t?o=rn(rn([],nn(o)),nn(v.errors)):o.push(v)}}}catch(v){r={error:v}}finally{try{g&&!g.done&&(i=y.return)&&i.call(y)}finally{if(r)throw r.error}}}if(o)throw new $t(o)}},n.prototype.add=function(e){var t;if(e&&e!==this)if(this.closed)Mn(e);else{if(e instanceof n){if(e.closed||e._hasParent(this))return;e._addParent(this)}(this._finalizers=(t=this._finalizers)!==null&&t!==void 0?t:[]).push(e)}},n.prototype._hasParent=function(e){var t=this._parentage;return t===e||Array.isArray(t)&&t.includes(e)},n.prototype._addParent=function(e){var t=this._parentage;this._parentage=Array.isArray(t)?(t.push(e),t):t?[t,e]:e},n.prototype._removeParent=function(e){var t=this._parentage;t===e?this._parentage=null:Array.isArray(t)&&sn(t,e)},n.prototype.remove=function(e){var t=this._finalizers;t&&sn(t,e),e instanceof n&&e._removeParent(this)},n.EMPTY=function(){var e=new n;return e.closed=!0,e}(),n}(),rr=Rt.EMPTY;function sr(n){return n instanceof Rt||n&&"closed"in n&&N(n.remove)&&N(n.add)&&N(n.unsubscribe)}function Mn(n){N(n)?n():n.unsubscribe()}var Lr={Promise:void 0},Vr={setTimeout:function(n,e){for(var t=[],r=2;r<arguments.length;r++)t[r-2]=arguments[r];return setTimeout.apply(void 0,rn([n,e],nn(t)))},clearTimeout:function(n){return clearTimeout(n)},delegate:void 0};function Pr(n){Vr.setTimeout(function(){throw n})}function xn(){}function St(n){n()}var ir=function(n){Dt(e,n);function e(t){var r=n.call(this)||this;return r.isStopped=!1,t?(r.destination=t,sr(t)&&t.add(r)):r.destination=Nr,r}return e.create=function(t,r,i){return new on(t,r,i)},e.prototype.next=function(t){this.isStopped||this._next(t)},e.prototype.error=function(t){this.isStopped||(this.isStopped=!0,this._error(t))},e.prototype.complete=function(){this.isStopped||(this.isStopped=!0,this._complete())},e.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,n.prototype.unsubscribe.call(this),this.destination=null)},e.prototype._next=function(t){this.destination.next(t)},e.prototype._error=function(t){try{this.destination.error(t)}finally{this.unsubscribe()}},e.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},e}(Rt),jr=function(){function n(e){this.partialObserver=e}return n.prototype.next=function(e){var t=this.partialObserver;if(t.next)try{t.next(e)}catch(r){Ct(r)}},n.prototype.error=function(e){var t=this.partialObserver;if(t.error)try{t.error(e)}catch(r){Ct(r)}else Ct(e)},n.prototype.complete=function(){var e=this.partialObserver;if(e.complete)try{e.complete()}catch(t){Ct(t)}},n}(),on=function(n){Dt(e,n);function e(t,r,i){var o=n.call(this)||this,c;return N(t)||!t?c={next:t??void 0,error:r??void 0,complete:i??void 0}:c=t,o.destination=new jr(c),o}return e}(ir);function Ct(n){Pr(n)}function Ur(n){throw n}var Nr={closed:!0,next:xn,error:Ur,complete:xn},$r=function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"}();function Gr(n){return n}function Hr(n){return n.length===0?Gr:n.length===1?n[0]:function(t){return n.reduce(function(r,i){return i(r)},t)}}var Ln=function(){function n(e){e&&(this._subscribe=e)}return n.prototype.lift=function(e){var t=new n;return t.source=this,t.operator=e,t},n.prototype.subscribe=function(e,t,r){var i=this,o=zr(e)?e:new on(e,t,r);return St(function(){var c=i,l=c.operator,D=c.source;o.add(l?l.call(o,D):D?i._subscribe(o):i._trySubscribe(o))}),o},n.prototype._trySubscribe=function(e){try{return this._subscribe(e)}catch(t){e.error(t)}},n.prototype.forEach=function(e,t){var r=this;return t=Vn(t),new t(function(i,o){var c=new on({next:function(l){try{e(l)}catch(D){o(D),c.unsubscribe()}},error:o,complete:i});r.subscribe(c)})},n.prototype._subscribe=function(e){var t;return(t=this.source)===null||t===void 0?void 0:t.subscribe(e)},n.prototype[$r]=function(){return this},n.prototype.pipe=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return Hr(e)(this)},n.prototype.toPromise=function(e){var t=this;return e=Vn(e),new e(function(r,i){var o;t.subscribe(function(c){return o=c},function(c){return i(c)},function(){return r(o)})})},n.create=function(e){return new n(e)},n}();function Vn(n){var e;return(e=n??Lr.Promise)!==null&&e!==void 0?e:Promise}function Yr(n){return n&&N(n.next)&&N(n.error)&&N(n.complete)}function zr(n){return n&&n instanceof ir||Yr(n)&&sr(n)}var Zr=nr(function(n){return function(){n(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"}}),fn=function(n){Dt(e,n);function e(){var t=n.call(this)||this;return t.closed=!1,t.currentObservers=null,t.observers=[],t.isStopped=!1,t.hasError=!1,t.thrownError=null,t}return e.prototype.lift=function(t){var r=new Pn(this,this);return r.operator=t,r},e.prototype._throwIfClosed=function(){if(this.closed)throw new Zr},e.prototype.next=function(t){var r=this;St(function(){var i,o;if(r._throwIfClosed(),!r.isStopped){r.currentObservers||(r.currentObservers=Array.from(r.observers));try{for(var c=tn(r.currentObservers),l=c.next();!l.done;l=c.next()){var D=l.value;D.next(t)}}catch(h){i={error:h}}finally{try{l&&!l.done&&(o=c.return)&&o.call(c)}finally{if(i)throw i.error}}}})},e.prototype.error=function(t){var r=this;St(function(){if(r._throwIfClosed(),!r.isStopped){r.hasError=r.isStopped=!0,r.thrownError=t;for(var i=r.observers;i.length;)i.shift().error(t)}})},e.prototype.complete=function(){var t=this;St(function(){if(t._throwIfClosed(),!t.isStopped){t.isStopped=!0;for(var r=t.observers;r.length;)r.shift().complete()}})},e.prototype.unsubscribe=function(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null},Object.defineProperty(e.prototype,"observed",{get:function(){var t;return((t=this.observers)===null||t===void 0?void 0:t.length)>0},enumerable:!1,configurable:!0}),e.prototype._trySubscribe=function(t){return this._throwIfClosed(),n.prototype._trySubscribe.call(this,t)},e.prototype._subscribe=function(t){return this._throwIfClosed(),this._checkFinalizedStatuses(t),this._innerSubscribe(t)},e.prototype._innerSubscribe=function(t){var r=this,i=this,o=i.hasError,c=i.isStopped,l=i.observers;return o||c?rr:(this.currentObservers=null,l.push(t),new Rt(function(){r.currentObservers=null,sn(l,t)}))},e.prototype._checkFinalizedStatuses=function(t){var r=this,i=r.hasError,o=r.thrownError,c=r.isStopped;i?t.error(o):c&&t.complete()},e.prototype.asObservable=function(){var t=new Ln;return t.source=this,t},e.create=function(t,r){return new Pn(t,r)},e}(Ln),Pn=function(n){Dt(e,n);function e(t,r){var i=n.call(this)||this;return i.destination=t,i.source=r,i}return e.prototype.next=function(t){var r,i;(i=(r=this.destination)===null||r===void 0?void 0:r.next)===null||i===void 0||i.call(r,t)},e.prototype.error=function(t){var r,i;(i=(r=this.destination)===null||r===void 0?void 0:r.error)===null||i===void 0||i.call(r,t)},e.prototype.complete=function(){var t,r;(r=(t=this.destination)===null||t===void 0?void 0:t.complete)===null||r===void 0||r.call(t)},e.prototype._subscribe=function(t){var r,i;return(i=(r=this.source)===null||r===void 0?void 0:r.subscribe(t))!==null&&i!==void 0?i:rr},e}(fn),Kr=function(n){Dt(e,n);function e(t){var r=n.call(this)||this;return r._value=t,r}return Object.defineProperty(e.prototype,"value",{get:function(){return this.getValue()},enumerable:!1,configurable:!0}),e.prototype._subscribe=function(t){var r=n.prototype._subscribe.call(this,t);return!r.closed&&t.next(this._value),r},e.prototype.getValue=function(){var t=this,r=t.hasError,i=t.thrownError,o=t._value;if(r)throw i;return this._throwIfClosed(),o},e.prototype.next=function(t){n.prototype.next.call(this,this._value=t)},e}(fn),Xn,Wt;Xn=[a.Injectable({providedIn:"root"})];class ct{constructor(e){this.ngZone=e,this.stateSubject=new Kr(null),this.state$=this.stateSubject.asObservable()}init(e){this.ngZone.runOutsideAngular(()=>{this.engine=new ln({...e,onStateChange:t=>{this.ngZone.run(()=>this.stateSubject.next(t))}}),this.engine.loadModels()})}attach(e){var t;(t=this.engine)==null||t.attachVideo(e)}start(){var e;(e=this.engine)==null||e.start()}reset(){var e;(e=this.engine)==null||e.reset()}ngOnDestroy(){var e;(e=this.engine)==null||e.stop()}}Wt=gt(null),ct=yt(Wt,0,"LivenessService",Xn,ct),mt(Wt,1,ct);/**
|
|
25
|
+
* @license Angular v21.2.3
|
|
26
|
+
* (c) 2010-2026 Google LLC. https://angular.dev/
|
|
27
|
+
* License: MIT
|
|
28
|
+
*/let qr=null;function Gt(){return qr}const he=class he{historyGo(e){throw new Error(ngDevMode?"Not implemented":"")}};u(he,"ɵfac",s.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:he,deps:[],target:s.ɵɵFactoryTarget.Injectable})),u(he,"ɵprov",s.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:he,providedIn:"platform",useFactory:()=>a.inject(Le)}));let q=he;s.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:q,decorators:[{type:a.Injectable,args:[{providedIn:"platform",useFactory:()=>a.inject(Le)}]}]});new a.InjectionToken(typeof ngDevMode<"u"&&ngDevMode?"Location Initialized":"");const ee=class ee extends q{constructor(){super();u(this,"_location");u(this,"_history");u(this,"_doc",a.inject(a.DOCUMENT));this._location=window.location,this._history=window.history}getBaseHrefFromDOM(){return Gt().getBaseHref(this._doc)}onPopState(t){const r=Gt().getGlobalEventTarget(this._doc,"window");return r.addEventListener("popstate",t,!1),()=>r.removeEventListener("popstate",t)}onHashChange(t){const r=Gt().getGlobalEventTarget(this._doc,"window");return r.addEventListener("hashchange",t,!1),()=>r.removeEventListener("hashchange",t)}get href(){return this._location.href}get protocol(){return this._location.protocol}get hostname(){return this._location.hostname}get port(){return this._location.port}get pathname(){return this._location.pathname}get search(){return this._location.search}get hash(){return this._location.hash}set pathname(t){this._location.pathname=t}pushState(t,r,i){this._history.pushState(t,r,i)}replaceState(t,r,i){this._history.replaceState(t,r,i)}forward(){this._history.forward()}back(){this._history.back()}historyGo(t=0){this._history.go(t)}getState(){return this._history.state}};u(ee,"ɵfac",s.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:ee,deps:[],target:s.ɵɵFactoryTarget.Injectable})),u(ee,"ɵprov",s.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:ee,providedIn:"platform",useFactory:()=>new ee}));let Le=ee;s.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:Le,decorators:[{type:a.Injectable,args:[{providedIn:"platform",useFactory:()=>new Le}]}],ctorParameters:()=>[]});/**
|
|
29
|
+
* @license Angular v21.2.3
|
|
30
|
+
* (c) 2010-2026 Google LLC. https://angular.dev/
|
|
31
|
+
* License: MIT
|
|
32
|
+
*/function dn(n,e){return n?e?n.endsWith("/")?e.startsWith("/")?n+e.slice(1):n+e:e.startsWith("/")?n+e:`${n}/${e}`:n:e}function jn(n){const e=n.search(/#|\?|$/);return n[e-1]==="/"?n.slice(0,e-1)+n.slice(e):n}function U(n){return n&&n[0]!=="?"?`?${n}`:n}const ge=class ge{historyGo(e){throw new Error(ngDevMode?"Not implemented":"")}};u(ge,"ɵfac",s.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:ge,deps:[],target:s.ɵɵFactoryTarget.Injectable})),u(ge,"ɵprov",s.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:ge,providedIn:"root",useFactory:()=>a.inject(de)}));let W=ge;s.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:W,decorators:[{type:a.Injectable,args:[{providedIn:"root",useFactory:()=>a.inject(de)}]}]});const kt=new a.InjectionToken(typeof ngDevMode<"u"&&ngDevMode?"appBaseHref":""),me=class me extends W{constructor(t,r){var i;super();u(this,"_platformLocation");u(this,"_baseHref");u(this,"_removeListenerFns",[]);this._platformLocation=t,this._baseHref=r??this._platformLocation.getBaseHrefFromDOM()??((i=a.inject(a.DOCUMENT).location)==null?void 0:i.origin)??""}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(t){this._removeListenerFns.push(this._platformLocation.onPopState(t),this._platformLocation.onHashChange(t))}getBaseHref(){return this._baseHref}prepareExternalUrl(t){return dn(this._baseHref,t)}path(t=!1){const r=this._platformLocation.pathname+U(this._platformLocation.search),i=this._platformLocation.hash;return i&&t?`${r}${i}`:r}pushState(t,r,i,o){const c=this.prepareExternalUrl(i+U(o));this._platformLocation.pushState(t,r,c)}replaceState(t,r,i,o){const c=this.prepareExternalUrl(i+U(o));this._platformLocation.replaceState(t,r,c)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(t=0){var r,i;(i=(r=this._platformLocation).historyGo)==null||i.call(r,t)}};u(me,"ɵfac",s.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:me,deps:[{token:q},{token:kt,optional:!0}],target:s.ɵɵFactoryTarget.Injectable})),u(me,"ɵprov",s.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:me,providedIn:"root"}));let de=me;s.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:de,decorators:[{type:a.Injectable,args:[{providedIn:"root"}]}],ctorParameters:()=>[{type:q},{type:void 0,decorators:[{type:a.Optional},{type:a.Inject,args:[kt]}]}]});const ye=class ye extends de{prepareExternalUrl(e){const t=or(e);return t.endsWith("/")&&t.length>1&&(e=t.slice(0,-1)+e.slice(t.length)),super.prepareExternalUrl(e)}};u(ye,"ɵfac",s.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:ye,deps:null,target:s.ɵɵFactoryTarget.Injectable})),u(ye,"ɵprov",s.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:ye,providedIn:"root"}));let an=ye;s.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:an,decorators:[{type:a.Injectable,args:[{providedIn:"root"}]}]});const Ce=class Ce extends de{prepareExternalUrl(e){const t=or(e);return t.endsWith("/")||(e=t+"/"+e.slice(t.length)),super.prepareExternalUrl(e)}};u(Ce,"ɵfac",s.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:Ce,deps:null,target:s.ɵɵFactoryTarget.Injectable})),u(Ce,"ɵprov",s.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:Ce,providedIn:"root"}));let un=Ce;s.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:un,decorators:[{type:a.Injectable,args:[{providedIn:"root"}]}]});function or(n){const e=n.search(/[?#]/),t=e>-1?e:n.length;return n.slice(0,t)}const V=class V{constructor(e){u(this,"_subject",new fn);u(this,"_basePath");u(this,"_locationStrategy");u(this,"_urlChangeListeners",[]);u(this,"_urlChangeSubscription",null);this._locationStrategy=e;const t=this._locationStrategy.getBaseHref();this._basePath=Xr(jn(Un(t))),this._locationStrategy.onPopState(r=>{this._subject.next({url:this.path(!0),pop:!0,state:r.state,type:r.type})})}ngOnDestroy(){var e;(e=this._urlChangeSubscription)==null||e.unsubscribe(),this._urlChangeListeners=[]}path(e=!1){return this.normalize(this._locationStrategy.path(e))}getState(){return this._locationStrategy.getState()}isCurrentPathEqualTo(e,t=""){return this.path()==this.normalize(e+U(t))}normalize(e){return V.stripTrailingSlash(Wr(this._basePath,Un(e)))}prepareExternalUrl(e){return e&&e[0]!=="/"&&(e="/"+e),this._locationStrategy.prepareExternalUrl(e)}go(e,t="",r=null){this._locationStrategy.pushState(r,"",e,t),this._notifyUrlChangeListeners(this.prepareExternalUrl(e+U(t)),r)}replaceState(e,t="",r=null){this._locationStrategy.replaceState(r,"",e,t),this._notifyUrlChangeListeners(this.prepareExternalUrl(e+U(t)),r)}forward(){this._locationStrategy.forward()}back(){this._locationStrategy.back()}historyGo(e=0){var t,r;(r=(t=this._locationStrategy).historyGo)==null||r.call(t,e)}onUrlChange(e){return this._urlChangeListeners.push(e),this._urlChangeSubscription??(this._urlChangeSubscription=this.subscribe(t=>{this._notifyUrlChangeListeners(t.url,t.state)})),()=>{var r;const t=this._urlChangeListeners.indexOf(e);this._urlChangeListeners.splice(t,1),this._urlChangeListeners.length===0&&((r=this._urlChangeSubscription)==null||r.unsubscribe(),this._urlChangeSubscription=null)}}_notifyUrlChangeListeners(e="",t){this._urlChangeListeners.forEach(r=>r(e,t))}subscribe(e,t,r){return this._subject.subscribe({next:e,error:t??void 0,complete:r??void 0})}};u(V,"normalizeQueryParams",U),u(V,"joinWithSlash",dn),u(V,"stripTrailingSlash",jn),u(V,"ɵfac",s.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:V,deps:[{token:W}],target:s.ɵɵFactoryTarget.Injectable})),u(V,"ɵprov",s.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:V,providedIn:"root",useFactory:ar}));let Tt=V;s.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:Tt,decorators:[{type:a.Injectable,args:[{providedIn:"root",useFactory:ar}]}],ctorParameters:()=>[{type:W}]});function ar(){return new Tt(a.ɵɵinject(W))}function Wr(n,e){if(!n||!e.startsWith(n))return e;const t=e.substring(n.length);return t===""||["/",";","?","#"].includes(t[0])?t:e}function Un(n){return n.replace(/\/index.html$/,"")}function Xr(n){if(new RegExp("^(https?:)?//").test(n)){const[,t]=n.split(/\/\/[^\/]+/);return t}return n}/**
|
|
33
|
+
* @license Angular v21.2.3
|
|
34
|
+
* (c) 2010-2026 Google LLC. https://angular.dev/
|
|
35
|
+
* License: MIT
|
|
36
|
+
*/const Fe=class Fe extends W{constructor(t,r){super();u(this,"_platformLocation");u(this,"_baseHref","");u(this,"_removeListenerFns",[]);this._platformLocation=t,r!=null&&(this._baseHref=r)}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(t){this._removeListenerFns.push(this._platformLocation.onPopState(t),this._platformLocation.onHashChange(t))}getBaseHref(){return this._baseHref}path(t=!1){const r=this._platformLocation.hash??"#";return r.length>0?r.substring(1):r}prepareExternalUrl(t){const r=dn(this._baseHref,t);return r.length>0?"#"+r:r}pushState(t,r,i,o){const c=this.prepareExternalUrl(i+U(o))||this._platformLocation.pathname;this._platformLocation.pushState(t,r,c)}replaceState(t,r,i,o){const c=this.prepareExternalUrl(i+U(o))||this._platformLocation.pathname;this._platformLocation.replaceState(t,r,c)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(t=0){var r,i;(i=(r=this._platformLocation).historyGo)==null||i.call(r,t)}};u(Fe,"ɵfac",s.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:Fe,deps:[{token:q},{token:kt,optional:!0}],target:s.ɵɵFactoryTarget.Injectable})),u(Fe,"ɵprov",s.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:Fe}));let cn=Fe;s.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:cn,decorators:[{type:a.Injectable}],ctorParameters:()=>[{type:q},{type:void 0,decorators:[{type:a.Optional},{type:a.Inject,args:[kt]}]}]});const ur={ADP:[void 0,void 0,0],AFN:[void 0,"؋",0],ALL:[void 0,void 0,0],AMD:[void 0,"֏",2],AOA:[void 0,"Kz"],ARS:[void 0,"$"],AUD:["A$","$"],AZN:[void 0,"₼"],BAM:[void 0,"KM"],BBD:[void 0,"$"],BDT:[void 0,"৳"],BHD:[void 0,void 0,3],BIF:[void 0,void 0,0],BMD:[void 0,"$"],BND:[void 0,"$"],BOB:[void 0,"Bs"],BRL:["R$"],BSD:[void 0,"$"],BWP:[void 0,"P"],BYN:[void 0,void 0,2],BYR:[void 0,void 0,0],BZD:[void 0,"$"],CAD:["CA$","$",2],CHF:[void 0,void 0,2],CLF:[void 0,void 0,4],CLP:[void 0,"$",0],CNY:["CN¥","¥"],COP:[void 0,"$",2],CRC:[void 0,"₡",2],CUC:[void 0,"$"],CUP:[void 0,"$"],CZK:[void 0,"Kč",2],DJF:[void 0,void 0,0],DKK:[void 0,"kr",2],DOP:[void 0,"$"],EGP:[void 0,"E£"],ESP:[void 0,"₧",0],EUR:["€"],FJD:[void 0,"$"],FKP:[void 0,"£"],GBP:["£"],GEL:[void 0,"₾"],GHS:[void 0,"GH₵"],GIP:[void 0,"£"],GNF:[void 0,"FG",0],GTQ:[void 0,"Q"],GYD:[void 0,"$",2],HKD:["HK$","$"],HNL:[void 0,"L"],HRK:[void 0,"kn"],HUF:[void 0,"Ft",2],IDR:[void 0,"Rp",2],ILS:["₪"],INR:["₹"],IQD:[void 0,void 0,0],IRR:[void 0,void 0,0],ISK:[void 0,"kr",0],ITL:[void 0,void 0,0],JMD:[void 0,"$"],JOD:[void 0,void 0,3],JPY:["¥",void 0,0],KGS:[void 0,"⃀"],KHR:[void 0,"៛"],KMF:[void 0,"CF",0],KPW:[void 0,"₩",0],KRW:["₩",void 0,0],KWD:[void 0,void 0,3],KYD:[void 0,"$"],KZT:[void 0,"₸"],LAK:[void 0,"₭",0],LBP:[void 0,"L£",0],LKR:[void 0,"Rs"],LRD:[void 0,"$"],LTL:[void 0,"Lt"],LUF:[void 0,void 0,0],LVL:[void 0,"Ls"],LYD:[void 0,void 0,3],MGA:[void 0,"Ar",0],MGF:[void 0,void 0,0],MMK:[void 0,"K",0],MNT:[void 0,"₮",2],MRO:[void 0,void 0,0],MUR:[void 0,"Rs",2],MXN:["MX$","$"],MYR:[void 0,"RM"],NAD:[void 0,"$"],NGN:[void 0,"₦"],NIO:[void 0,"C$"],NOK:[void 0,"kr",2],NPR:[void 0,"Rs"],NZD:["NZ$","$"],OMR:[void 0,void 0,3],PHP:["₱"],PKR:[void 0,"Rs",2],PLN:[void 0,"zł"],PYG:[void 0,"₲",0],RON:[void 0,"lei"],RSD:[void 0,void 0,0],RUB:[void 0,"₽"],RWF:[void 0,"RF",0],SBD:[void 0,"$"],SEK:[void 0,"kr",2],SGD:[void 0,"$"],SHP:[void 0,"£"],SLE:[void 0,void 0,2],SLL:[void 0,void 0,0],SOS:[void 0,void 0,0],SRD:[void 0,"$"],SSP:[void 0,"£"],STD:[void 0,void 0,0],STN:[void 0,"Db"],SYP:[void 0,"£",0],THB:[void 0,"฿"],TMM:[void 0,void 0,0],TND:[void 0,void 0,3],TOP:[void 0,"T$"],TRL:[void 0,void 0,0],TRY:[void 0,"₺"],TTD:[void 0,"$"],TWD:["NT$","$",2],TZS:[void 0,void 0,2],UAH:[void 0,"₴"],UGX:[void 0,void 0,0],USD:["$"],UYI:[void 0,void 0,0],UYU:[void 0,"$"],UYW:[void 0,void 0,4],UZS:[void 0,void 0,2],VEF:[void 0,"Bs",2],VND:["₫",void 0,0],VUV:[void 0,void 0,0],XAF:["FCFA",void 0,0],XCD:["EC$","$"],XCG:["Cg."],XOF:["F CFA",void 0,0],XPF:["CFPF",void 0,0],XXX:["¤"],YER:[void 0,void 0,0],ZAR:[void 0,"R"],ZMK:[void 0,void 0,0],ZMW:[void 0,"ZK"],ZWD:[void 0,void 0,0]};var ft;(function(n){n[n.Decimal=0]="Decimal",n[n.Percent=1]="Percent",n[n.Currency=2]="Currency",n[n.Scientific=3]="Scientific"})(ft||(ft={}));var Q;(function(n){n[n.Zero=0]="Zero",n[n.One=1]="One",n[n.Two=2]="Two",n[n.Few=3]="Few",n[n.Many=4]="Many",n[n.Other=5]="Other"})(Q||(Q={}));var O;(function(n){n[n.Format=0]="Format",n[n.Standalone=1]="Standalone"})(O||(O={}));var C;(function(n){n[n.Narrow=0]="Narrow",n[n.Abbreviated=1]="Abbreviated",n[n.Wide=2]="Wide",n[n.Short=3]="Short"})(C||(C={}));var R;(function(n){n[n.Short=0]="Short",n[n.Medium=1]="Medium",n[n.Long=2]="Long",n[n.Full=3]="Full"})(R||(R={}));const S={Decimal:0,Group:1,PercentSign:3,MinusSign:5,Exponential:6,Infinity:9,CurrencyDecimal:12,CurrencyGroup:13};var Nn;(function(n){n[n.Sunday=0]="Sunday",n[n.Monday=1]="Monday",n[n.Tuesday=2]="Tuesday",n[n.Wednesday=3]="Wednesday",n[n.Thursday=4]="Thursday",n[n.Friday=5]="Friday",n[n.Saturday=6]="Saturday"})(Nn||(Nn={}));function Jr(n){return a.ɵfindLocaleData(n)[a.ɵLocaleDataIndex.LocaleId]}function Qr(n,e,t){const r=a.ɵfindLocaleData(n),i=[r[a.ɵLocaleDataIndex.DayPeriodsFormat],r[a.ɵLocaleDataIndex.DayPeriodsStandalone]],o=x(i,e);return x(o,t)}function es(n,e,t){const r=a.ɵfindLocaleData(n),i=[r[a.ɵLocaleDataIndex.DaysFormat],r[a.ɵLocaleDataIndex.DaysStandalone]],o=x(i,e);return x(o,t)}function ts(n,e,t){const r=a.ɵfindLocaleData(n),i=[r[a.ɵLocaleDataIndex.MonthsFormat],r[a.ɵLocaleDataIndex.MonthsStandalone]],o=x(i,e);return x(o,t)}function ns(n,e){const r=a.ɵfindLocaleData(n)[a.ɵLocaleDataIndex.Eras];return x(r,e)}function Ft(n,e){const t=a.ɵfindLocaleData(n);return x(t[a.ɵLocaleDataIndex.DateFormat],e)}function Et(n,e){const t=a.ɵfindLocaleData(n);return x(t[a.ɵLocaleDataIndex.TimeFormat],e)}function vt(n,e){const r=a.ɵfindLocaleData(n)[a.ɵLocaleDataIndex.DateTimeFormat];return x(r,e)}function M(n,e){const t=a.ɵfindLocaleData(n),r=t[a.ɵLocaleDataIndex.NumberSymbols][e];if(typeof r>"u"){if(e===S.CurrencyDecimal)return t[a.ɵLocaleDataIndex.NumberSymbols][S.Decimal];if(e===S.CurrencyGroup)return t[a.ɵLocaleDataIndex.NumberSymbols][S.Group]}return r}function pn(n,e){return a.ɵfindLocaleData(n)[a.ɵLocaleDataIndex.NumberFormats][e]}function rs(n){return a.ɵfindLocaleData(n)[a.ɵLocaleDataIndex.Currencies]}const ss=a.ɵgetLocalePluralCase;function cr(n){if(!n[a.ɵLocaleDataIndex.ExtraData])throw new a.ɵRuntimeError(2303,ngDevMode&&`Missing extra locale data for the locale "${n[a.ɵLocaleDataIndex.LocaleId]}". Use "registerLocaleData" to load new data. See the "I18n guide" on angular.io to know more.`)}function is(n){const e=a.ɵfindLocaleData(n);return cr(e),(e[a.ɵLocaleDataIndex.ExtraData][2]||[]).map(r=>typeof r=="string"?Ht(r):[Ht(r[0]),Ht(r[1])])}function os(n,e,t){const r=a.ɵfindLocaleData(n);cr(r);const i=[r[a.ɵLocaleDataIndex.ExtraData][0],r[a.ɵLocaleDataIndex.ExtraData][1]],o=x(i,e)||[];return x(o,t)||[]}function x(n,e){for(let t=e;t>-1;t--)if(typeof n[t]<"u")return n[t];throw new a.ɵRuntimeError(2304,ngDevMode&&"Locale data API: locale data undefined")}function Ht(n){const[e,t]=n.split(":");return{hours:+e,minutes:+t}}function as(n,e,t="en"){const r=rs(t)[n]||ur[n]||[],i=r[1];return e==="narrow"&&typeof i=="string"?i:r[0]||n}const us=2;function cs(n){let e;const t=ur[n];return t&&(e=t[2]),typeof e=="number"?e:us}const ls=/^(\d{4,})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/,De={},fs=/((?:[^BEGHLMOSWYZabcdhmswyz']+)|(?:'(?:[^']|'')*')|(?:G{1,5}|y{1,4}|Y{1,4}|M{1,5}|L{1,5}|w{1,2}|W{1}|d{1,2}|E{1,6}|c{1,6}|a{1,5}|b{1,5}|B{1,5}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|O{1,4}))([\s\S]*)/;function ds(n,e,t,r){let i=vs(n);e=j(t,e)||e;let c=[],l;for(;e;)if(l=fs.exec(e),l){c=c.concat(l.slice(1));const p=c.pop();if(!p)break;e=p}else{c.push(e);break}(typeof ngDevMode>"u"||ngDevMode)&&ps(c);let D=i.getTimezoneOffset();r&&(D=fr(r,D),i=Es(i,r));let h="";return c.forEach(p=>{const d=Cs(p);h+=d?d(i,t,D):p==="''"?"'":p.replace(/(^'|'$)/g,"").replace(/''/g,"'")}),h}function ps(n){if(n.some(e=>/^Y+$/.test(e))&&!n.some(e=>/^w+$/.test(e))){const e=`Suspicious use of week-based year "Y" in date pattern "${n.join("")}". Did you mean to use calendar year "y" instead?`;if(n.length===1)console.error(a.ɵformatRuntimeError(2300,e));else throw new a.ɵRuntimeError(2300,e)}}function Ot(n,e,t){const r=new Date(0);return r.setFullYear(n,e,t),r.setHours(0,0,0),r}function j(n,e){const t=Jr(n);if(De[t]??(De[t]={}),De[t][e])return De[t][e];let r="";switch(e){case"shortDate":r=Ft(n,R.Short);break;case"mediumDate":r=Ft(n,R.Medium);break;case"longDate":r=Ft(n,R.Long);break;case"fullDate":r=Ft(n,R.Full);break;case"shortTime":r=Et(n,R.Short);break;case"mediumTime":r=Et(n,R.Medium);break;case"longTime":r=Et(n,R.Long);break;case"fullTime":r=Et(n,R.Full);break;case"short":const i=j(n,"shortTime"),o=j(n,"shortDate");r=bt(vt(n,R.Short),[i,o]);break;case"medium":const c=j(n,"mediumTime"),l=j(n,"mediumDate");r=bt(vt(n,R.Medium),[c,l]);break;case"long":const D=j(n,"longTime"),h=j(n,"longDate");r=bt(vt(n,R.Long),[D,h]);break;case"full":const p=j(n,"fullTime"),d=j(n,"fullDate");r=bt(vt(n,R.Full),[p,d]);break}return r&&(De[t][e]=r),r}function bt(n,e){return e&&(n=n.replace(/\{([^}]+)}/g,function(t,r){return e!=null&&r in e?e[r]:t})),n}function L(n,e,t="-",r,i){let o="";(n<0||i&&n<=0)&&(i?n=-n+1:(n=-n,o=t));let c=String(n);for(;c.length<e;)c="0"+c;return r&&(c=c.slice(c.length-e)),o+c}function Ds(n,e){return L(n,3).substring(0,e)}function _(n,e,t=0,r=!1,i=!1){return function(o,c){let l=hs(n,o);if((t>0||l>-t)&&(l+=t),n===3)l===0&&t===-12&&(l=12);else if(n===6)return Ds(l,e);const D=M(c,S.MinusSign);return L(l,e,D,r,i)}}function hs(n,e){switch(n){case 0:return e.getFullYear();case 1:return e.getMonth();case 2:return e.getDate();case 3:return e.getHours();case 4:return e.getMinutes();case 5:return e.getSeconds();case 6:return e.getMilliseconds();case 7:return e.getDay();default:throw new a.ɵRuntimeError(2301,ngDevMode&&`Unknown DateType value "${n}".`)}}function F(n,e,t=O.Format,r=!1){return function(i,o){return gs(i,o,n,e,t,r)}}function gs(n,e,t,r,i,o){switch(t){case 2:return ts(e,i,r)[n.getMonth()];case 1:return es(e,i,r)[n.getDay()];case 0:const c=n.getHours(),l=n.getMinutes();if(o){const h=is(e),p=os(e,i,r),d=h.findIndex(y=>{if(Array.isArray(y)){const[g,E]=y,v=c>=g.hours&&l>=g.minutes,B=c<E.hours||c===E.hours&&l<E.minutes;if(g.hours<E.hours){if(v&&B)return!0}else if(v||B)return!0}else if(y.hours===c&&y.minutes===l)return!0;return!1});if(d!==-1)return p[d]}return Qr(e,i,r)[c<12?0:1];case 3:return ns(e,r)[n.getFullYear()<=0?0:1];default:const D=t;throw new a.ɵRuntimeError(2302,ngDevMode&&`unexpected translation type ${D}`)}}function At(n){return function(e,t,r){const i=-1*r,o=M(t,S.MinusSign),c=i>0?Math.floor(i/60):Math.ceil(i/60);switch(n){case 0:return(i>=0?"+":"")+L(c,2,o)+L(Math.abs(i%60),2,o);case 1:return"GMT"+(i>=0?"+":"")+L(c,1,o);case 2:return"GMT"+(i>=0?"+":"")+L(c,2,o)+":"+L(Math.abs(i%60),2,o);case 3:return r===0?"Z":(i>=0?"+":"")+L(c,2,o)+":"+L(Math.abs(i%60),2,o);default:throw new a.ɵRuntimeError(2310,ngDevMode&&`Unknown zone width "${n}"`)}}}const ms=0,wt=4;function ys(n){const e=Ot(n,ms,1).getDay();return Ot(n,0,1+(e<=wt?wt:wt+7)-e)}function lr(n){const e=n.getDay(),t=e===0?-3:wt-e;return Ot(n.getFullYear(),n.getMonth(),n.getDate()+t)}function Yt(n,e=!1){return function(t,r){let i;if(e){const o=new Date(t.getFullYear(),t.getMonth(),1).getDay()-1,c=t.getDate();i=1+Math.floor((c+o)/7)}else{const o=lr(t),c=ys(o.getFullYear()),l=o.getTime()-c.getTime();i=1+Math.round(l/6048e5)}return L(i,n,M(r,S.MinusSign))}}function _t(n,e=!1){return function(t,r){const o=lr(t).getFullYear();return L(o,n,M(r,S.MinusSign),e)}}const zt={};function Cs(n){if(zt[n])return zt[n];let e;switch(n){case"G":case"GG":case"GGG":e=F(3,C.Abbreviated);break;case"GGGG":e=F(3,C.Wide);break;case"GGGGG":e=F(3,C.Narrow);break;case"y":e=_(0,1,0,!1,!0);break;case"yy":e=_(0,2,0,!0,!0);break;case"yyy":e=_(0,3,0,!1,!0);break;case"yyyy":e=_(0,4,0,!1,!0);break;case"Y":e=_t(1);break;case"YY":e=_t(2,!0);break;case"YYY":e=_t(3);break;case"YYYY":e=_t(4);break;case"M":case"L":e=_(1,1,1);break;case"MM":case"LL":e=_(1,2,1);break;case"MMM":e=F(2,C.Abbreviated);break;case"MMMM":e=F(2,C.Wide);break;case"MMMMM":e=F(2,C.Narrow);break;case"LLL":e=F(2,C.Abbreviated,O.Standalone);break;case"LLLL":e=F(2,C.Wide,O.Standalone);break;case"LLLLL":e=F(2,C.Narrow,O.Standalone);break;case"w":e=Yt(1);break;case"ww":e=Yt(2);break;case"W":e=Yt(1,!0);break;case"d":e=_(2,1);break;case"dd":e=_(2,2);break;case"c":case"cc":e=_(7,1);break;case"ccc":e=F(1,C.Abbreviated,O.Standalone);break;case"cccc":e=F(1,C.Wide,O.Standalone);break;case"ccccc":e=F(1,C.Narrow,O.Standalone);break;case"cccccc":e=F(1,C.Short,O.Standalone);break;case"E":case"EE":case"EEE":e=F(1,C.Abbreviated);break;case"EEEE":e=F(1,C.Wide);break;case"EEEEE":e=F(1,C.Narrow);break;case"EEEEEE":e=F(1,C.Short);break;case"a":case"aa":case"aaa":e=F(0,C.Abbreviated);break;case"aaaa":e=F(0,C.Wide);break;case"aaaaa":e=F(0,C.Narrow);break;case"b":case"bb":case"bbb":e=F(0,C.Abbreviated,O.Standalone,!0);break;case"bbbb":e=F(0,C.Wide,O.Standalone,!0);break;case"bbbbb":e=F(0,C.Narrow,O.Standalone,!0);break;case"B":case"BB":case"BBB":e=F(0,C.Abbreviated,O.Format,!0);break;case"BBBB":e=F(0,C.Wide,O.Format,!0);break;case"BBBBB":e=F(0,C.Narrow,O.Format,!0);break;case"h":e=_(3,1,-12);break;case"hh":e=_(3,2,-12);break;case"H":e=_(3,1);break;case"HH":e=_(3,2);break;case"m":e=_(4,1);break;case"mm":e=_(4,2);break;case"s":e=_(5,1);break;case"ss":e=_(5,2);break;case"S":e=_(6,1);break;case"SS":e=_(6,2);break;case"SSS":e=_(6,3);break;case"Z":case"ZZ":case"ZZZ":e=At(0);break;case"ZZZZZ":e=At(3);break;case"O":case"OO":case"OOO":case"z":case"zz":case"zzz":e=At(1);break;case"OOOO":case"ZZZZ":case"zzzz":e=At(2);break;default:return null}return zt[n]=e,e}function fr(n,e){n=n.replace(/:/g,"");const t=Date.parse("Jan 01, 1970 00:00:00 "+n)/6e4;return isNaN(t)?e:t}function Fs(n,e){return n=new Date(n.getTime()),n.setMinutes(n.getMinutes()+e),n}function Es(n,e,t){const i=n.getTimezoneOffset(),o=fr(e,i);return Fs(n,-1*(o-i))}function vs(n){if($n(n))return n;if(typeof n=="number"&&!isNaN(n))return new Date(n);if(typeof n=="string"){if(n=n.trim(),/^(\d{4}(-\d{1,2}(-\d{1,2})?)?)$/.test(n)){const[i,o=1,c=1]=n.split("-").map(l=>+l);return Ot(i,o-1,c)}const t=parseFloat(n);if(!isNaN(n-t))return new Date(t);let r;if(r=n.match(ls))return bs(r)}const e=new Date(n);if(!$n(e))throw new a.ɵRuntimeError(2311,ngDevMode&&`Unable to convert "${n}" into a date`);return e}function bs(n){const e=new Date(0);let t=0,r=0;const i=n[8]?e.setUTCFullYear:e.setFullYear,o=n[8]?e.setUTCHours:e.setHours;n[9]&&(t=Number(n[9]+n[10]),r=Number(n[9]+n[11])),i.call(e,Number(n[1]),Number(n[2])-1,Number(n[3]));const c=Number(n[4]||0)-t,l=Number(n[5]||0)-r,D=Number(n[6]||0),h=Math.floor(parseFloat("0."+(n[7]||0))*1e3);return o.call(e,c,l,D,h),e}function $n(n){return n instanceof Date&&!isNaN(n.valueOf())}const As=/^(\d+)?\.((\d+)(-(\d+))?)?$/,Gn=22,Bt=".",lt="0",_s=";",Ss=",",Zt="#",Hn="¤",ws="%";function Dn(n,e,t,r,i,o,c=!1){let l="",D=!1;if(!isFinite(n))l=M(t,S.Infinity);else{let h=Rs(n);c&&(h=Bs(h));let p=e.minInt,d=e.minFrac,y=e.maxFrac;if(o){const A=o.match(As);if(A===null)throw new a.ɵRuntimeError(2306,ngDevMode&&`${o} is not a valid digit info`);const H=A[1],w=A[3],Y=A[5];H!=null&&(p=Kt(H)),w!=null&&(d=Kt(w)),Y!=null?y=Kt(Y):w!=null&&d>y&&(y=d)}ks(h,d,y);let g=h.digits,E=h.integerLen;const v=h.exponent;let B=[];for(D=g.every(A=>!A);E<p;E++)g.unshift(0);for(;E<0;E++)g.unshift(0);E>0?B=g.splice(E,g.length):(B=g,g=[0]);const G=[];for(g.length>=e.lgSize&&G.unshift(g.splice(-e.lgSize,g.length).join(""));g.length>e.gSize;)G.unshift(g.splice(-e.gSize,g.length).join(""));g.length&&G.unshift(g.join("")),l=G.join(M(t,r)),B.length&&(l+=M(t,i)+B.join("")),v&&(l+=M(t,S.Exponential)+"+"+v)}return n<0&&!D?l=e.negPre+l+e.negSuf:l=e.posPre+l+e.posSuf,l}function Is(n,e,t,r,i){const o=pn(e,ft.Currency),c=hn(o,M(e,S.MinusSign));return c.minFrac=cs(r),c.maxFrac=c.minFrac,Dn(n,c,e,S.CurrencyGroup,S.CurrencyDecimal,i).replace(Hn,t).replace(Hn,"").trim()}function Ts(n,e,t){const r=pn(e,ft.Percent),i=hn(r,M(e,S.MinusSign));return Dn(n,i,e,S.Group,S.Decimal,t,!0).replace(new RegExp(ws,"g"),M(e,S.PercentSign))}function Os(n,e,t){const r=pn(e,ft.Decimal),i=hn(r,M(e,S.MinusSign));return Dn(n,i,e,S.Group,S.Decimal,t)}function hn(n,e="-"){const t={minInt:1,minFrac:0,maxFrac:0,posPre:"",posSuf:"",negPre:"",negSuf:"",gSize:0,lgSize:0},r=n.split(_s),i=r[0],o=r[1],c=i.indexOf(Bt)!==-1?i.split(Bt):[i.substring(0,i.lastIndexOf(lt)+1),i.substring(i.lastIndexOf(lt)+1)],l=c[0],D=c[1]||"";t.posPre=l.substring(0,l.indexOf(Zt));for(let p=0;p<D.length;p++){const d=D.charAt(p);d===lt?t.minFrac=t.maxFrac=p+1:d===Zt?t.maxFrac=p+1:t.posSuf+=d}const h=l.split(Ss);if(t.gSize=h[1]?h[1].length:0,t.lgSize=h[2]||h[1]?(h[2]||h[1]).length:0,o){const p=i.length-t.posPre.length-t.posSuf.length,d=o.indexOf(Zt);t.negPre=o.substring(0,d).replace(/'/g,""),t.negSuf=o.slice(d+p).replace(/'/g,"")}else t.negPre=e+t.posPre,t.negSuf=t.posSuf;return t}function Bs(n){if(n.digits[0]===0)return n;const e=n.digits.length-n.integerLen;return n.exponent?n.exponent+=2:(e===0?n.digits.push(0,0):e===1&&n.digits.push(0),n.integerLen+=2),n}function Rs(n){let e=Math.abs(n)+"",t=0,r,i,o,c,l;for((i=e.indexOf(Bt))>-1&&(e=e.replace(Bt,"")),(o=e.search(/e/i))>0?(i<0&&(i=o),i+=+e.slice(o+1),e=e.substring(0,o)):i<0&&(i=e.length),o=0;e.charAt(o)===lt;o++);if(o===(l=e.length))r=[0],i=1;else{for(l--;e.charAt(l)===lt;)l--;for(i-=o,r=[],c=0;o<=l;o++,c++)r[c]=Number(e.charAt(o))}return i>Gn&&(r=r.splice(0,Gn-1),t=i-1,i=1),{digits:r,exponent:t,integerLen:i}}function ks(n,e,t){if(e>t)throw new a.ɵRuntimeError(2307,ngDevMode&&`The minimum number of digits after fraction (${e}) is higher than the maximum (${t}).`);let r=n.digits,i=r.length-n.integerLen;const o=Math.min(Math.max(e,i),t);let c=o+n.integerLen,l=r[c];if(c>0){r.splice(Math.max(n.integerLen,c));for(let d=c;d<r.length;d++)r[d]=0}else{i=Math.max(0,i),n.integerLen=1,r.length=Math.max(1,c=o+1),r[0]=0;for(let d=1;d<c;d++)r[d]=0}if(l>=5)if(c-1<0){for(let d=0;d>c;d--)r.unshift(0),n.integerLen++;r.unshift(1),n.integerLen++}else r[c-1]++;for(;i<Math.max(0,o);i++)r.push(0);let D=o!==0;const h=e+n.integerLen,p=r.reduceRight(function(d,y,g,E){return y=y+d,E[g]=y<10?y:y-10,D&&(E[g]===0&&g>=h?E.pop():D=!1),y>=10?1:0},0);p&&(r.unshift(p),n.integerLen++)}function Kt(n){const e=parseInt(n);if(isNaN(e))throw new a.ɵRuntimeError(2305,ngDevMode&&"Invalid integer literal when parsing "+n);return e}const Ee=class Ee{};u(Ee,"ɵfac",s.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:Ee,deps:[],target:s.ɵɵFactoryTarget.Injectable})),u(Ee,"ɵprov",s.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:Ee,providedIn:"root",useFactory:()=>new dt(a.inject(a.LOCALE_ID))}));let X=Ee;s.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:X,decorators:[{type:a.Injectable,args:[{providedIn:"root",useFactory:()=>new dt(a.inject(a.LOCALE_ID))}]}]});function dr(n,e,t,r){let i=`=${n}`;if(e.indexOf(i)>-1||(i=t.getPluralCategory(n,r),e.indexOf(i)>-1))return i;if(e.indexOf("other")>-1)return"other";throw new a.ɵRuntimeError(2308,ngDevMode&&`No plural message found for value "${n}"`)}const ve=class ve extends X{constructor(t){super();u(this,"locale");this.locale=t}getPluralCategory(t,r){switch(ss(r||this.locale)(t)){case Q.Zero:return"zero";case Q.One:return"one";case Q.Two:return"two";case Q.Few:return"few";case Q.Many:return"many";default:return"other"}}};u(ve,"ɵfac",s.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:ve,deps:[{token:a.LOCALE_ID}],target:s.ɵɵFactoryTarget.Injectable})),u(ve,"ɵprov",s.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:ve}));let dt=ve;s.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:dt,decorators:[{type:a.Injectable}],ctorParameters:()=>[{type:void 0,decorators:[{type:a.Inject,args:[a.LOCALE_ID]}]}]});const qt=/\s+/,Yn=[],be=class be{constructor(e,t){u(this,"_ngEl");u(this,"_renderer");u(this,"initialClasses",Yn);u(this,"rawClass");u(this,"stateMap",new Map);this._ngEl=e,this._renderer=t}set klass(e){this.initialClasses=e!=null?e.trim().split(qt):Yn}set ngClass(e){this.rawClass=typeof e=="string"?e.trim().split(qt):e}ngDoCheck(){for(const t of this.initialClasses)this._updateState(t,!0);const e=this.rawClass;if(Array.isArray(e)||e instanceof Set)for(const t of e)this._updateState(t,!0);else if(e!=null)for(const t of Object.keys(e))this._updateState(t,!!e[t]);this._applyStateDiff()}_updateState(e,t){const r=this.stateMap.get(e);r!==void 0?(r.enabled!==t&&(r.changed=!0,r.enabled=t),r.touched=!0):this.stateMap.set(e,{enabled:t,changed:!0,touched:!0})}_applyStateDiff(){for(const e of this.stateMap){const t=e[0],r=e[1];r.changed?(this._toggleClass(t,r.enabled),r.changed=!1):r.touched||(r.enabled&&this._toggleClass(t,!1),this.stateMap.delete(t)),r.touched=!1}}_toggleClass(e,t){if(ngDevMode&&typeof e!="string")throw new Error(`NgClass can only toggle CSS classes expressed as strings, got ${a.ɵstringify(e)}`);e=e.trim(),e.length>0&&e.split(qt).forEach(r=>{t?this._renderer.addClass(this._ngEl.nativeElement,r):this._renderer.removeClass(this._ngEl.nativeElement,r)})}};u(be,"ɵfac",s.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:be,deps:[{token:s.ElementRef},{token:s.Renderer2}],target:s.ɵɵFactoryTarget.Directive})),u(be,"ɵdir",s.ɵɵngDeclareDirective({minVersion:"14.0.0",version:"21.2.3",type:be,isStandalone:!0,selector:"[ngClass]",inputs:{klass:["class","klass"],ngClass:"ngClass"},ngImport:s}));let Ve=be;s.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:Ve,decorators:[{type:a.Directive,args:[{selector:"[ngClass]"}]}],ctorParameters:()=>[{type:s.ElementRef},{type:s.Renderer2}],propDecorators:{klass:[{type:a.Input,args:["class"]}],ngClass:[{type:a.Input,args:["ngClass"]}]}});const Ae=class Ae{constructor(e){u(this,"_viewContainerRef");u(this,"ngComponentOutlet",null);u(this,"ngComponentOutletInputs");u(this,"ngComponentOutletInjector");u(this,"ngComponentOutletEnvironmentInjector");u(this,"ngComponentOutletContent");u(this,"ngComponentOutletNgModule");u(this,"_componentRef");u(this,"_moduleRef");u(this,"_inputsUsed",new Map);this._viewContainerRef=e}get componentInstance(){var e;return((e=this._componentRef)==null?void 0:e.instance)??null}_needToReCreateNgModuleInstance(e){return e.ngComponentOutletNgModule!==void 0}_needToReCreateComponentInstance(e){return e.ngComponentOutlet!==void 0||e.ngComponentOutletContent!==void 0||e.ngComponentOutletInjector!==void 0||e.ngComponentOutletEnvironmentInjector!==void 0||this._needToReCreateNgModuleInstance(e)}ngOnChanges(e){var t;if(this._needToReCreateComponentInstance(e)&&(this._viewContainerRef.clear(),this._inputsUsed.clear(),this._componentRef=void 0,this.ngComponentOutlet)){const r=this.ngComponentOutletInjector||this._viewContainerRef.parentInjector;this._needToReCreateNgModuleInstance(e)&&((t=this._moduleRef)==null||t.destroy(),this.ngComponentOutletNgModule?this._moduleRef=a.createNgModule(this.ngComponentOutletNgModule,Ms(r)):this._moduleRef=void 0),this._componentRef=this._viewContainerRef.createComponent(this.ngComponentOutlet,{injector:r,ngModuleRef:this._moduleRef,projectableNodes:this.ngComponentOutletContent,environmentInjector:this.ngComponentOutletEnvironmentInjector})}}ngDoCheck(){if(this._componentRef){if(this.ngComponentOutletInputs)for(const e of Object.keys(this.ngComponentOutletInputs))this._inputsUsed.set(e,!0);this._applyInputStateDiff(this._componentRef)}}ngOnDestroy(){var e;(e=this._moduleRef)==null||e.destroy()}_applyInputStateDiff(e){for(const[t,r]of this._inputsUsed)r?(e.setInput(t,this.ngComponentOutletInputs[t]),this._inputsUsed.set(t,!1)):(e.setInput(t,void 0),this._inputsUsed.delete(t))}};u(Ae,"ɵfac",s.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:Ae,deps:[{token:s.ViewContainerRef}],target:s.ɵɵFactoryTarget.Directive})),u(Ae,"ɵdir",s.ɵɵngDeclareDirective({minVersion:"14.0.0",version:"21.2.3",type:Ae,isStandalone:!0,selector:"[ngComponentOutlet]",inputs:{ngComponentOutlet:"ngComponentOutlet",ngComponentOutletInputs:"ngComponentOutletInputs",ngComponentOutletInjector:"ngComponentOutletInjector",ngComponentOutletEnvironmentInjector:"ngComponentOutletEnvironmentInjector",ngComponentOutletContent:"ngComponentOutletContent",ngComponentOutletNgModule:"ngComponentOutletNgModule"},exportAs:["ngComponentOutlet"],usesOnChanges:!0,ngImport:s}));let Pe=Ae;s.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:Pe,decorators:[{type:a.Directive,args:[{selector:"[ngComponentOutlet]",exportAs:"ngComponentOutlet"}]}],ctorParameters:()=>[{type:s.ViewContainerRef}],propDecorators:{ngComponentOutlet:[{type:a.Input}],ngComponentOutletInputs:[{type:a.Input}],ngComponentOutletInjector:[{type:a.Input}],ngComponentOutletEnvironmentInjector:[{type:a.Input}],ngComponentOutletContent:[{type:a.Input}],ngComponentOutletNgModule:[{type:a.Input}]}});function Ms(n){return n.get(a.NgModuleRef).injector}class xs{constructor(e,t,r,i){u(this,"$implicit");u(this,"ngForOf");u(this,"index");u(this,"count");this.$implicit=e,this.ngForOf=t,this.index=r,this.count=i}get first(){return this.index===0}get last(){return this.index===this.count-1}get even(){return this.index%2===0}get odd(){return!this.even}}const _e=class _e{constructor(e,t,r){u(this,"_viewContainer");u(this,"_template");u(this,"_differs");u(this,"_ngForOf",null);u(this,"_ngForOfDirty",!0);u(this,"_differ",null);u(this,"_trackByFn");this._viewContainer=e,this._template=t,this._differs=r}set ngForOf(e){this._ngForOf=e,this._ngForOfDirty=!0}set ngForTrackBy(e){(typeof ngDevMode>"u"||ngDevMode)&&e!=null&&typeof e!="function"&&console.warn(`trackBy must be a function, but received ${JSON.stringify(e)}. See https://angular.dev/api/common/NgForOf#change-propagation for more information.`),this._trackByFn=e}get ngForTrackBy(){return this._trackByFn}set ngForTemplate(e){e&&(this._template=e)}ngDoCheck(){if(this._ngForOfDirty){this._ngForOfDirty=!1;const e=this._ngForOf;if(!this._differ&&e)if(typeof ngDevMode>"u"||ngDevMode)try{this._differ=this._differs.find(e).create(this.ngForTrackBy)}catch{let t=`Cannot find a differ supporting object '${e}' of type '${Ls(e)}'. NgFor only supports binding to Iterables, such as Arrays.`;throw typeof e=="object"&&(t+=" Did you mean to use the keyvalue pipe?"),new a.ɵRuntimeError(-2200,t)}else this._differ=this._differs.find(e).create(this.ngForTrackBy)}if(this._differ){const e=this._differ.diff(this._ngForOf);e&&this._applyChanges(e)}}_applyChanges(e){const t=this._viewContainer;e.forEachOperation((r,i,o)=>{if(r.previousIndex==null)t.createEmbeddedView(this._template,new xs(r.item,this._ngForOf,-1,-1),o===null?void 0:o);else if(o==null)t.remove(i===null?void 0:i);else if(i!==null){const c=t.get(i);t.move(c,o),zn(c,r)}});for(let r=0,i=t.length;r<i;r++){const c=t.get(r).context;c.index=r,c.count=i,c.ngForOf=this._ngForOf}e.forEachIdentityChange(r=>{const i=t.get(r.currentIndex);zn(i,r)})}static ngTemplateContextGuard(e,t){return!0}};u(_e,"ɵfac",s.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:_e,deps:[{token:s.ViewContainerRef},{token:s.TemplateRef},{token:s.IterableDiffers}],target:s.ɵɵFactoryTarget.Directive})),u(_e,"ɵdir",s.ɵɵngDeclareDirective({minVersion:"14.0.0",version:"21.2.3",type:_e,isStandalone:!0,selector:"[ngFor][ngForOf]",inputs:{ngForOf:"ngForOf",ngForTrackBy:"ngForTrackBy",ngForTemplate:"ngForTemplate"},ngImport:s}));let je=_e;s.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:je,decorators:[{type:a.Directive,args:[{selector:"[ngFor][ngForOf]"}]}],ctorParameters:()=>[{type:s.ViewContainerRef},{type:s.TemplateRef},{type:s.IterableDiffers}],propDecorators:{ngForOf:[{type:a.Input}],ngForTrackBy:[{type:a.Input}],ngForTemplate:[{type:a.Input}]}});function zn(n,e){n.context.$implicit=e.item}function Ls(n){return n.name||typeof n}const Z=class Z{constructor(e,t){u(this,"_viewContainer");u(this,"_context",new Vs);u(this,"_thenTemplateRef",null);u(this,"_elseTemplateRef",null);u(this,"_thenViewRef",null);u(this,"_elseViewRef",null);this._viewContainer=e,this._thenTemplateRef=t}set ngIf(e){this._context.$implicit=this._context.ngIf=e,this._updateView()}set ngIfThen(e){Zn(e,(typeof ngDevMode>"u"||ngDevMode)&&"ngIfThen"),this._thenTemplateRef=e,this._thenViewRef=null,this._updateView()}set ngIfElse(e){Zn(e,(typeof ngDevMode>"u"||ngDevMode)&&"ngIfElse"),this._elseTemplateRef=e,this._elseViewRef=null,this._updateView()}_updateView(){this._context.$implicit?this._thenViewRef||(this._viewContainer.clear(),this._elseViewRef=null,this._thenTemplateRef&&(this._thenViewRef=this._viewContainer.createEmbeddedView(this._thenTemplateRef,this._context))):this._elseViewRef||(this._viewContainer.clear(),this._thenViewRef=null,this._elseTemplateRef&&(this._elseViewRef=this._viewContainer.createEmbeddedView(this._elseTemplateRef,this._context)))}static ngTemplateContextGuard(e,t){return!0}};u(Z,"ngIfUseIfTypeGuard"),u(Z,"ngTemplateGuard_ngIf"),u(Z,"ɵfac",s.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:Z,deps:[{token:s.ViewContainerRef},{token:s.TemplateRef}],target:s.ɵɵFactoryTarget.Directive})),u(Z,"ɵdir",s.ɵɵngDeclareDirective({minVersion:"14.0.0",version:"21.2.3",type:Z,isStandalone:!0,selector:"[ngIf]",inputs:{ngIf:"ngIf",ngIfThen:"ngIfThen",ngIfElse:"ngIfElse"},ngImport:s}));let Ue=Z;s.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:Ue,decorators:[{type:a.Directive,args:[{selector:"[ngIf]"}]}],ctorParameters:()=>[{type:s.ViewContainerRef},{type:s.TemplateRef}],propDecorators:{ngIf:[{type:a.Input}],ngIfThen:[{type:a.Input}],ngIfElse:[{type:a.Input}]}});class Vs{constructor(){u(this,"$implicit",null);u(this,"ngIf",null)}}function Zn(n,e){if(n&&!n.createEmbeddedView)throw new a.ɵRuntimeError(2020,(typeof ngDevMode>"u"||ngDevMode)&&`${e} must be a TemplateRef, but received '${a.ɵstringify(n)}'.`)}class gn{constructor(e,t){u(this,"_viewContainerRef");u(this,"_templateRef");u(this,"_created",!1);this._viewContainerRef=e,this._templateRef=t}create(){this._created=!0,this._viewContainerRef.createEmbeddedView(this._templateRef)}destroy(){this._created=!1,this._viewContainerRef.clear()}enforceState(e){e&&!this._created?this.create():!e&&this._created&&this.destroy()}}const Se=class Se{constructor(){u(this,"_defaultViews",[]);u(this,"_defaultUsed",!1);u(this,"_caseCount",0);u(this,"_lastCaseCheckIndex",0);u(this,"_lastCasesMatched",!1);u(this,"_ngSwitch")}set ngSwitch(e){this._ngSwitch=e,this._caseCount===0&&this._updateDefaultCases(!0)}_addCase(){return this._caseCount++}_addDefault(e){this._defaultViews.push(e)}_matchCase(e){const t=e===this._ngSwitch;return this._lastCasesMatched||(this._lastCasesMatched=t),this._lastCaseCheckIndex++,this._lastCaseCheckIndex===this._caseCount&&(this._updateDefaultCases(!this._lastCasesMatched),this._lastCaseCheckIndex=0,this._lastCasesMatched=!1),t}_updateDefaultCases(e){if(this._defaultViews.length>0&&e!==this._defaultUsed){this._defaultUsed=e;for(const t of this._defaultViews)t.enforceState(e)}}};u(Se,"ɵfac",s.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:Se,deps:[],target:s.ɵɵFactoryTarget.Directive})),u(Se,"ɵdir",s.ɵɵngDeclareDirective({minVersion:"14.0.0",version:"21.2.3",type:Se,isStandalone:!0,selector:"[ngSwitch]",inputs:{ngSwitch:"ngSwitch"},ngImport:s}));let P=Se;s.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:P,decorators:[{type:a.Directive,args:[{selector:"[ngSwitch]"}]}],propDecorators:{ngSwitch:[{type:a.Input}]}});const we=class we{constructor(e,t,r){u(this,"ngSwitch");u(this,"_view");u(this,"ngSwitchCase");this.ngSwitch=r,(typeof ngDevMode>"u"||ngDevMode)&&!r&&pr("ngSwitchCase","NgSwitchCase"),r._addCase(),this._view=new gn(e,t)}ngDoCheck(){this._view.enforceState(this.ngSwitch._matchCase(this.ngSwitchCase))}};u(we,"ɵfac",s.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:we,deps:[{token:s.ViewContainerRef},{token:s.TemplateRef},{token:P,host:!0,optional:!0}],target:s.ɵɵFactoryTarget.Directive})),u(we,"ɵdir",s.ɵɵngDeclareDirective({minVersion:"14.0.0",version:"21.2.3",type:we,isStandalone:!0,selector:"[ngSwitchCase]",inputs:{ngSwitchCase:"ngSwitchCase"},ngImport:s}));let Ne=we;s.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:Ne,decorators:[{type:a.Directive,args:[{selector:"[ngSwitchCase]"}]}],ctorParameters:()=>[{type:s.ViewContainerRef},{type:s.TemplateRef},{type:P,decorators:[{type:a.Optional},{type:a.Host}]}],propDecorators:{ngSwitchCase:[{type:a.Input}]}});const Ie=class Ie{constructor(e,t,r){(typeof ngDevMode>"u"||ngDevMode)&&!r&&pr("ngSwitchDefault","NgSwitchDefault"),r._addDefault(new gn(e,t))}};u(Ie,"ɵfac",s.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:Ie,deps:[{token:s.ViewContainerRef},{token:s.TemplateRef},{token:P,host:!0,optional:!0}],target:s.ɵɵFactoryTarget.Directive})),u(Ie,"ɵdir",s.ɵɵngDeclareDirective({minVersion:"14.0.0",version:"21.2.3",type:Ie,isStandalone:!0,selector:"[ngSwitchDefault]",ngImport:s}));let $e=Ie;s.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:$e,decorators:[{type:a.Directive,args:[{selector:"[ngSwitchDefault]"}]}],ctorParameters:()=>[{type:s.ViewContainerRef},{type:s.TemplateRef},{type:P,decorators:[{type:a.Optional},{type:a.Host}]}]});function pr(n,e){throw new a.ɵRuntimeError(2e3,`An element with the "${n}" attribute (matching the "${e}" directive) must be located inside an element with the "ngSwitch" attribute (matching "NgSwitch" directive)`)}const Te=class Te{constructor(e){u(this,"_localization");u(this,"_activeView");u(this,"_caseViews",{});this._localization=e}set ngPlural(e){this._updateView(e)}addCase(e,t){this._caseViews[e]=t}_updateView(e){this._clearViews();const t=Object.keys(this._caseViews),r=dr(e,t,this._localization);this._activateView(this._caseViews[r])}_clearViews(){this._activeView&&this._activeView.destroy()}_activateView(e){e&&(this._activeView=e,this._activeView.create())}};u(Te,"ɵfac",s.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:Te,deps:[{token:X}],target:s.ɵɵFactoryTarget.Directive})),u(Te,"ɵdir",s.ɵɵngDeclareDirective({minVersion:"14.0.0",version:"21.2.3",type:Te,isStandalone:!0,selector:"[ngPlural]",inputs:{ngPlural:"ngPlural"},ngImport:s}));let J=Te;s.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:J,decorators:[{type:a.Directive,args:[{selector:"[ngPlural]"}]}],ctorParameters:()=>[{type:X}],propDecorators:{ngPlural:[{type:a.Input}]}});const Oe=class Oe{constructor(e,t,r,i){u(this,"value");this.value=e;const o=!isNaN(Number(e));i.addCase(o?`=${e}`:e,new gn(r,t))}};u(Oe,"ɵfac",s.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:Oe,deps:[{token:"ngPluralCase",attribute:!0},{token:s.TemplateRef},{token:s.ViewContainerRef},{token:J,host:!0}],target:s.ɵɵFactoryTarget.Directive})),u(Oe,"ɵdir",s.ɵɵngDeclareDirective({minVersion:"14.0.0",version:"21.2.3",type:Oe,isStandalone:!0,selector:"[ngPluralCase]",ngImport:s}));let Ge=Oe;s.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:Ge,decorators:[{type:a.Directive,args:[{selector:"[ngPluralCase]"}]}],ctorParameters:()=>[{type:void 0,decorators:[{type:a.Attribute,args:["ngPluralCase"]}]},{type:s.TemplateRef},{type:s.ViewContainerRef},{type:J,decorators:[{type:a.Host}]}]});const Be=class Be{constructor(e,t,r){u(this,"_ngEl");u(this,"_differs");u(this,"_renderer");u(this,"_ngStyle",null);u(this,"_differ",null);this._ngEl=e,this._differs=t,this._renderer=r}set ngStyle(e){this._ngStyle=e,!this._differ&&e&&(this._differ=this._differs.find(e).create())}ngDoCheck(){if(this._differ){const e=this._differ.diff(this._ngStyle);e&&this._applyChanges(e)}}_setStyle(e,t){const[r,i]=e.split("."),o=r.indexOf("-")===-1?void 0:a.RendererStyleFlags2.DashCase;t!=null?this._renderer.setStyle(this._ngEl.nativeElement,r,i?`${t}${i}`:t,o):this._renderer.removeStyle(this._ngEl.nativeElement,r,o)}_applyChanges(e){e.forEachRemovedItem(t=>this._setStyle(t.key,null)),e.forEachAddedItem(t=>this._setStyle(t.key,t.currentValue)),e.forEachChangedItem(t=>this._setStyle(t.key,t.currentValue))}};u(Be,"ɵfac",s.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:Be,deps:[{token:s.ElementRef},{token:s.KeyValueDiffers},{token:s.Renderer2}],target:s.ɵɵFactoryTarget.Directive})),u(Be,"ɵdir",s.ɵɵngDeclareDirective({minVersion:"14.0.0",version:"21.2.3",type:Be,isStandalone:!0,selector:"[ngStyle]",inputs:{ngStyle:"ngStyle"},ngImport:s}));let He=Be;s.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:He,decorators:[{type:a.Directive,args:[{selector:"[ngStyle]"}]}],ctorParameters:()=>[{type:s.ElementRef},{type:s.KeyValueDiffers},{type:s.Renderer2}],propDecorators:{ngStyle:[{type:a.Input,args:["ngStyle"]}]}});const Re=class Re{constructor(e){u(this,"_viewContainerRef");u(this,"_viewRef",null);u(this,"ngTemplateOutletContext",null);u(this,"ngTemplateOutlet",null);u(this,"ngTemplateOutletInjector",null);u(this,"injector",a.inject(a.Injector));this._viewContainerRef=e}ngOnChanges(e){if(this._shouldRecreateView(e)){const t=this._viewContainerRef;if(this._viewRef&&t.remove(t.indexOf(this._viewRef)),!this.ngTemplateOutlet){this._viewRef=null;return}const r=this._createContextForwardProxy();this._viewRef=t.createEmbeddedView(this.ngTemplateOutlet,r,{injector:this._getInjector()})}}_getInjector(){return this.ngTemplateOutletInjector==="outlet"?this.injector:this.ngTemplateOutletInjector??void 0}_shouldRecreateView(e){return!!e.ngTemplateOutlet||!!e.ngTemplateOutletInjector}_createContextForwardProxy(){return new Proxy({},{set:(e,t,r)=>this.ngTemplateOutletContext?Reflect.set(this.ngTemplateOutletContext,t,r):!1,get:(e,t,r)=>{if(this.ngTemplateOutletContext)return Reflect.get(this.ngTemplateOutletContext,t,r)}})}};u(Re,"ɵfac",s.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:Re,deps:[{token:s.ViewContainerRef}],target:s.ɵɵFactoryTarget.Directive})),u(Re,"ɵdir",s.ɵɵngDeclareDirective({minVersion:"14.0.0",version:"21.2.3",type:Re,isStandalone:!0,selector:"[ngTemplateOutlet]",inputs:{ngTemplateOutletContext:"ngTemplateOutletContext",ngTemplateOutlet:"ngTemplateOutlet",ngTemplateOutletInjector:"ngTemplateOutletInjector"},usesOnChanges:!0,ngImport:s}));let Ye=Re;s.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:Ye,decorators:[{type:a.Directive,args:[{selector:"[ngTemplateOutlet]"}]}],ctorParameters:()=>[{type:s.ViewContainerRef}],propDecorators:{ngTemplateOutletContext:[{type:a.Input}],ngTemplateOutlet:[{type:a.Input}],ngTemplateOutletInjector:[{type:a.Input}]}});const Kn=[Ve,Pe,je,Ue,Ye,He,P,Ne,$e,J,Ge];function $(n,e){return new a.ɵRuntimeError(2100,ngDevMode&&`InvalidPipeArgument: '${e}' for pipe '${a.ɵstringify(n)}'`)}function Dr(n,e){a.isSignal(e)&&console.warn(`The ${n} does not unwrap signals. Received a signal with value:`,e())}class Ps{createSubscription(e,t,r){return a.untracked(()=>e.subscribe({next:t,error:r}))}dispose(e){a.untracked(()=>e.unsubscribe())}}class js{createSubscription(e,t,r){return e.then(i=>t==null?void 0:t(i),i=>r==null?void 0:r(i)),{unsubscribe:()=>{t=null,r=null}}}dispose(e){e.unsubscribe()}}const Us=new js,Ns=new Ps,te=class te{constructor(e){u(this,"_ref");u(this,"_latestValue",null);u(this,"markForCheckOnValueUpdate",!0);u(this,"_subscription",null);u(this,"_obj",null);u(this,"_strategy",null);u(this,"applicationErrorHandler",a.inject(a.ɵINTERNAL_APPLICATION_ERROR_HANDLER));this._ref=e}ngOnDestroy(){this._subscription&&this._dispose(),this._ref=null}transform(e){if(!this._obj){if(e)try{this.markForCheckOnValueUpdate=!1,this._subscribe(e)}finally{this.markForCheckOnValueUpdate=!0}return this._latestValue}return e!==this._obj?(this._dispose(),this.transform(e)):this._latestValue}_subscribe(e){this._obj=e,this._strategy=this._selectStrategy(e),this._subscription=this._strategy.createSubscription(e,t=>this._updateLatestValue(e,t),t=>this.applicationErrorHandler(t))}_selectStrategy(e){if(a.ɵisPromise(e))return Us;if(a.ɵisSubscribable(e))return Ns;throw $(te,e)}_dispose(){this._strategy.dispose(this._subscription),this._latestValue=null,this._subscription=null,this._obj=null}_updateLatestValue(e,t){var r;e===this._obj&&(this._latestValue=t,this.markForCheckOnValueUpdate&&((r=this._ref)==null||r.markForCheck()))}};u(te,"ɵfac",s.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:te,deps:[{token:s.ChangeDetectorRef}],target:s.ɵɵFactoryTarget.Pipe})),u(te,"ɵpipe",s.ɵɵngDeclarePipe({minVersion:"14.0.0",version:"21.2.3",ngImport:s,type:te,isStandalone:!0,name:"async",pure:!1}));let ze=te;s.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:ze,decorators:[{type:a.Pipe,args:[{name:"async",pure:!1}]}],ctorParameters:()=>[{type:s.ChangeDetectorRef}]});const ne=class ne{transform(e){return e==null?null:(mn(ne,e),e.toLowerCase())}};u(ne,"ɵfac",s.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:ne,deps:[],target:s.ɵɵFactoryTarget.Pipe})),u(ne,"ɵpipe",s.ɵɵngDeclarePipe({minVersion:"14.0.0",version:"21.2.3",ngImport:s,type:ne,isStandalone:!0,name:"lowercase"}));let Ze=ne;s.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:Ze,decorators:[{type:a.Pipe,args:[{name:"lowercase"}]}]});const $s=/(?:[0-9A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF38\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A])\S*/g,re=class re{transform(e){return e==null?null:(mn(re,e),e.replace($s,t=>t[0].toUpperCase()+t.slice(1).toLowerCase()))}};u(re,"ɵfac",s.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:re,deps:[],target:s.ɵɵFactoryTarget.Pipe})),u(re,"ɵpipe",s.ɵɵngDeclarePipe({minVersion:"14.0.0",version:"21.2.3",ngImport:s,type:re,isStandalone:!0,name:"titlecase"}));let Ke=re;s.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:Ke,decorators:[{type:a.Pipe,args:[{name:"titlecase"}]}]});const se=class se{transform(e){return e==null?null:(mn(se,e),e.toUpperCase())}};u(se,"ɵfac",s.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:se,deps:[],target:s.ɵɵFactoryTarget.Pipe})),u(se,"ɵpipe",s.ɵɵngDeclarePipe({minVersion:"14.0.0",version:"21.2.3",ngImport:s,type:se,isStandalone:!0,name:"uppercase"}));let qe=se;s.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:qe,decorators:[{type:a.Pipe,args:[{name:"uppercase"}]}]});function mn(n,e){if(typeof e!="string")throw $(n,e)}const Gs="mediumDate",hr=new a.InjectionToken(typeof ngDevMode<"u"&&ngDevMode?"DATE_PIPE_DEFAULT_TIMEZONE":""),gr=new a.InjectionToken(typeof ngDevMode<"u"&&ngDevMode?"DATE_PIPE_DEFAULT_OPTIONS":""),ie=class ie{constructor(e,t,r){u(this,"locale");u(this,"defaultTimezone");u(this,"defaultOptions");this.locale=e,this.defaultTimezone=t,this.defaultOptions=r}transform(e,t,r,i){var o,c;if(e==null||e===""||e!==e)return null;try{const l=t??((o=this.defaultOptions)==null?void 0:o.dateFormat)??Gs,D=r??((c=this.defaultOptions)==null?void 0:c.timezone)??this.defaultTimezone??void 0;return ds(e,l,i||this.locale,D)}catch(l){throw $(ie,l.message)}}};u(ie,"ɵfac",s.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:ie,deps:[{token:a.LOCALE_ID},{token:hr,optional:!0},{token:gr,optional:!0}],target:s.ɵɵFactoryTarget.Pipe})),u(ie,"ɵpipe",s.ɵɵngDeclarePipe({minVersion:"14.0.0",version:"21.2.3",ngImport:s,type:ie,isStandalone:!0,name:"date"}));let We=ie;s.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:We,decorators:[{type:a.Pipe,args:[{name:"date"}]}],ctorParameters:()=>[{type:void 0,decorators:[{type:a.Inject,args:[a.LOCALE_ID]}]},{type:void 0,decorators:[{type:a.Inject,args:[hr]},{type:a.Optional}]},{type:void 0,decorators:[{type:a.Inject,args:[gr]},{type:a.Optional}]}]});const Hs=/#/g,oe=class oe{constructor(e){u(this,"_localization");this._localization=e}transform(e,t,r){if(e==null)return"";if(typeof t!="object"||t===null)throw $(oe,t);const i=dr(e,Object.keys(t),this._localization,r);return t[i].replace(Hs,e.toString())}};u(oe,"ɵfac",s.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:oe,deps:[{token:X}],target:s.ɵɵFactoryTarget.Pipe})),u(oe,"ɵpipe",s.ɵɵngDeclarePipe({minVersion:"14.0.0",version:"21.2.3",ngImport:s,type:oe,isStandalone:!0,name:"i18nPlural"}));let Xe=oe;s.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:Xe,decorators:[{type:a.Pipe,args:[{name:"i18nPlural"}]}],ctorParameters:()=>[{type:X}]});const ae=class ae{transform(e,t){if(e==null)return"";if(typeof t!="object"||typeof e!="string")throw $(ae,t);return t.hasOwnProperty(e)?t[e]:t.hasOwnProperty("other")?t.other:""}};u(ae,"ɵfac",s.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:ae,deps:[],target:s.ɵɵFactoryTarget.Pipe})),u(ae,"ɵpipe",s.ɵɵngDeclarePipe({minVersion:"14.0.0",version:"21.2.3",ngImport:s,type:ae,isStandalone:!0,name:"i18nSelect"}));let Je=ae;s.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:Je,decorators:[{type:a.Pipe,args:[{name:"i18nSelect"}]}]});const ke=class ke{transform(e){return ngDevMode&&Dr("JsonPipe",e),JSON.stringify(e,null,2)}};u(ke,"ɵfac",s.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:ke,deps:[],target:s.ɵɵFactoryTarget.Pipe})),u(ke,"ɵpipe",s.ɵɵngDeclarePipe({minVersion:"14.0.0",version:"21.2.3",ngImport:s,type:ke,isStandalone:!0,name:"json",pure:!1}));let Qe=ke;s.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:Qe,decorators:[{type:a.Pipe,args:[{name:"json",pure:!1}]}]});function Ys(n,e){return{key:n,value:e}}const Me=class Me{constructor(e){u(this,"differs");u(this,"differ");u(this,"keyValues",[]);u(this,"compareFn",qn);this.differs=e}transform(e,t=qn){if(ngDevMode&&Dr("KeyValuePipe",e),!e||!(e instanceof Map)&&typeof e!="object")return null;this.differ??(this.differ=this.differs.find(e).create());const r=this.differ.diff(e),i=t!==this.compareFn;return r&&(this.keyValues=[],r.forEachItem(o=>{this.keyValues.push(Ys(o.key,o.currentValue))})),(r||i)&&(t&&this.keyValues.sort(t),this.compareFn=t),this.keyValues}};u(Me,"ɵfac",s.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:Me,deps:[{token:s.KeyValueDiffers}],target:s.ɵɵFactoryTarget.Pipe})),u(Me,"ɵpipe",s.ɵɵngDeclarePipe({minVersion:"14.0.0",version:"21.2.3",ngImport:s,type:Me,isStandalone:!0,name:"keyvalue",pure:!1}));let et=Me;s.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:et,decorators:[{type:a.Pipe,args:[{name:"keyvalue",pure:!1}]}],ctorParameters:()=>[{type:s.KeyValueDiffers}]});function qn(n,e){const t=n.key,r=e.key;if(t===r)return 0;if(t==null)return 1;if(r==null)return-1;if(typeof t=="string"&&typeof r=="string")return t<r?-1:1;if(typeof t=="number"&&typeof r=="number")return t-r;if(typeof t=="boolean"&&typeof r=="boolean")return t<r?-1:1;const i=String(t),o=String(r);return i==o?0:i<o?-1:1}const ue=class ue{constructor(e){u(this,"_locale");this._locale=e}transform(e,t,r){if(!yn(e))return null;r||(r=this._locale);try{const i=Cn(e);return Os(i,r,t)}catch(i){throw $(ue,i.message)}}};u(ue,"ɵfac",s.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:ue,deps:[{token:a.LOCALE_ID}],target:s.ɵɵFactoryTarget.Pipe})),u(ue,"ɵpipe",s.ɵɵngDeclarePipe({minVersion:"14.0.0",version:"21.2.3",ngImport:s,type:ue,isStandalone:!0,name:"number"}));let tt=ue;s.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:tt,decorators:[{type:a.Pipe,args:[{name:"number"}]}],ctorParameters:()=>[{type:void 0,decorators:[{type:a.Inject,args:[a.LOCALE_ID]}]}]});const ce=class ce{constructor(e){u(this,"_locale");this._locale=e}transform(e,t,r){if(!yn(e))return null;r||(r=this._locale);try{const i=Cn(e);return Ts(i,r,t)}catch(i){throw $(ce,i.message)}}};u(ce,"ɵfac",s.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:ce,deps:[{token:a.LOCALE_ID}],target:s.ɵɵFactoryTarget.Pipe})),u(ce,"ɵpipe",s.ɵɵngDeclarePipe({minVersion:"14.0.0",version:"21.2.3",ngImport:s,type:ce,isStandalone:!0,name:"percent"}));let nt=ce;s.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:nt,decorators:[{type:a.Pipe,args:[{name:"percent"}]}],ctorParameters:()=>[{type:void 0,decorators:[{type:a.Inject,args:[a.LOCALE_ID]}]}]});const le=class le{constructor(e,t="USD"){u(this,"_locale");u(this,"_defaultCurrencyCode");this._locale=e,this._defaultCurrencyCode=t}transform(e,t=this._defaultCurrencyCode,r="symbol",i,o){if(!yn(e))return null;o||(o=this._locale),typeof r=="boolean"&&((typeof ngDevMode>"u"||ngDevMode)&&console.warn('Warning: the currency pipe has been changed in Angular v5. The symbolDisplay option (third parameter) is now a string instead of a boolean. The accepted values are "code", "symbol" or "symbol-narrow".'),r=r?"symbol":"code");let c=t||this._defaultCurrencyCode;r!=="code"&&(r==="symbol"||r==="symbol-narrow"?c=as(c,r==="symbol"?"wide":"narrow",o):c=r);try{const l=Cn(e);return Is(l,o,c,t,i)}catch(l){throw $(le,l.message)}}};u(le,"ɵfac",s.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:le,deps:[{token:a.LOCALE_ID},{token:a.DEFAULT_CURRENCY_CODE}],target:s.ɵɵFactoryTarget.Pipe})),u(le,"ɵpipe",s.ɵɵngDeclarePipe({minVersion:"14.0.0",version:"21.2.3",ngImport:s,type:le,isStandalone:!0,name:"currency"}));let rt=le;s.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:rt,decorators:[{type:a.Pipe,args:[{name:"currency"}]}],ctorParameters:()=>[{type:void 0,decorators:[{type:a.Inject,args:[a.LOCALE_ID]}]},{type:void 0,decorators:[{type:a.Inject,args:[a.DEFAULT_CURRENCY_CODE]}]}]});function yn(n){return!(n==null||n===""||n!==n)}function Cn(n){if(typeof n=="string"&&!isNaN(Number(n)-parseFloat(n)))return Number(n);if(typeof n!="number")throw new a.ɵRuntimeError(2309,ngDevMode&&`${n} is not a number`);return n}const fe=class fe{transform(e,t,r){if(e==null)return null;if(!(typeof e=="string"||Array.isArray(e)))throw $(fe,e);return e.slice(t,r)}};u(fe,"ɵfac",s.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:fe,deps:[],target:s.ɵɵFactoryTarget.Pipe})),u(fe,"ɵpipe",s.ɵɵngDeclarePipe({minVersion:"14.0.0",version:"21.2.3",ngImport:s,type:fe,isStandalone:!0,name:"slice",pure:!1}));let st=fe;s.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:st,decorators:[{type:a.Pipe,args:[{name:"slice",pure:!1}]}]});const Wn=[ze,qe,Ze,Qe,st,tt,nt,Ke,rt,We,Xe,Je,et],K=class K{};u(K,"ɵfac",s.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:K,deps:[],target:s.ɵɵFactoryTarget.NgModule})),u(K,"ɵmod",s.ɵɵngDeclareNgModule({minVersion:"14.0.0",version:"21.2.3",ngImport:s,type:K,imports:[Ve,Pe,je,Ue,Ye,He,P,Ne,$e,J,Ge,ze,qe,Ze,Qe,st,tt,nt,Ke,rt,We,Xe,Je,et],exports:[Ve,Pe,je,Ue,Ye,He,P,Ne,$e,J,Ge,ze,qe,Ze,Qe,st,tt,nt,Ke,rt,We,Xe,Je,et]})),u(K,"ɵinj",s.ɵɵngDeclareInjector({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:K}));let pt=K;s.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"21.2.3",ngImport:s,type:pt,decorators:[{type:a.NgModule,args:[{imports:[Kn,Wn],exports:[Kn,Wn]}]}]});var Jn,Xt;Jn=[a.Component({selector:"lib-liveness",standalone:!0,imports:[pt],templateUrl:"./liveness.component.html",styleUrls:["./liveness.component.css"]})];class xe{constructor(e){this.liveness=e,this.duration=60,this.containerClass="",this.videoWrapperClass="",this.videoClass="",this.timerClass="",this.challengeTextClass="",this.buttonClass="",this.statusOverlayClass="",this.onComplete=new a.EventEmitter,this.onError=new a.EventEmitter}ngOnInit(){this.liveness.init({apiUrl:this.apiUrl,duration:this.duration,smileThreshold:this.smileThreshold,blinkThreshold:this.blinkThreshold,minturnHeadThreshold:this.minturnHeadThreshold,maxturnHeadThreshold:this.maxturnHeadThreshold,onComplete:e=>this.onComplete.emit(e),onError:e=>this.onError.emit(e)})}async ngAfterViewInit(){try{const e=await navigator.mediaDevices.getUserMedia({video:{width:640,height:480,facingMode:"user"}}),t=this.webcamRef.nativeElement;t.srcObject=e,t.onloadedmetadata=()=>{t.play(),this.liveness.attach(t)}}catch{this.onError.emit({success:!1,reason:"Camera access denied"})}}ngOnDestroy(){var t,r;const e=(r=(t=this.webcamRef)==null?void 0:t.nativeElement)==null?void 0:r.srcObject;e==null||e.getTracks().forEach(i=>i.stop())}}Xt=gt(null),xe=yt(Xt,0,"LivenessComponent",Jn,xe),mt(Xt,1,xe);var Qn,Jt;Qn=[a.NgModule({declarations:[],imports:[pt,xe],providers:[ct],exports:[xe]})];class It{}Jt=gt(null),It=yt(Jt,0,"LivenessModule",Qn,It),mt(Jt,1,It);exports.LivenessComponent=xe;exports.LivenessEngine=ln;exports.LivenessModule=It;exports.LivenessSDK=xr;exports.LivenessService=ct;exports.useLiveness=tr;exports.verifyLiveness=er;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,37 @@
|
|
|
1
|
+
import { AfterViewInit } from '@angular/core';
|
|
1
2
|
import { default as default_2 } from 'react-webcam';
|
|
3
|
+
import { ElementRef } from '@angular/core';
|
|
4
|
+
import { EventEmitter } from '@angular/core';
|
|
5
|
+
import { NgZone } from '@angular/core';
|
|
6
|
+
import { Observable } from 'rxjs';
|
|
7
|
+
import { OnDestroy } from '@angular/core';
|
|
8
|
+
import { OnInit } from '@angular/core';
|
|
2
9
|
|
|
3
|
-
declare type Challenge = "Smile" | "Blink" | "Turn_Head" | "Thumbs_Up";
|
|
10
|
+
export declare type Challenge = "Smile" | "Blink" | "Turn_Head" | "Thumbs_Up";
|
|
11
|
+
|
|
12
|
+
export declare class LivenessComponent implements OnInit, AfterViewInit, OnDestroy {
|
|
13
|
+
liveness: LivenessService;
|
|
14
|
+
webcamRef: ElementRef<HTMLVideoElement>;
|
|
15
|
+
apiUrl: string;
|
|
16
|
+
duration: number;
|
|
17
|
+
smileThreshold?: number;
|
|
18
|
+
blinkThreshold?: number;
|
|
19
|
+
minturnHeadThreshold?: number;
|
|
20
|
+
maxturnHeadThreshold?: number;
|
|
21
|
+
containerClass: string;
|
|
22
|
+
videoWrapperClass: string;
|
|
23
|
+
videoClass: string;
|
|
24
|
+
timerClass: string;
|
|
25
|
+
challengeTextClass: string;
|
|
26
|
+
buttonClass: string;
|
|
27
|
+
statusOverlayClass: string;
|
|
28
|
+
onComplete: EventEmitter<LivenessSDKResult>;
|
|
29
|
+
onError: EventEmitter<any>;
|
|
30
|
+
constructor(liveness: LivenessService);
|
|
31
|
+
ngOnInit(): void;
|
|
32
|
+
ngAfterViewInit(): Promise<void>;
|
|
33
|
+
ngOnDestroy(): void;
|
|
34
|
+
}
|
|
4
35
|
|
|
5
36
|
export declare class LivenessEngine {
|
|
6
37
|
private config;
|
|
@@ -47,6 +78,9 @@ export declare interface LivenessEngineConfig {
|
|
|
47
78
|
onError?: (error: LivenessSDKResult) => void;
|
|
48
79
|
}
|
|
49
80
|
|
|
81
|
+
export declare class LivenessModule {
|
|
82
|
+
}
|
|
83
|
+
|
|
50
84
|
export declare interface LivenessResponse {
|
|
51
85
|
is_live: boolean;
|
|
52
86
|
reason?: string;
|
|
@@ -61,6 +95,19 @@ export declare interface LivenessSDKResult {
|
|
|
61
95
|
skinConfidence?: number;
|
|
62
96
|
}
|
|
63
97
|
|
|
98
|
+
export declare class LivenessService implements OnDestroy {
|
|
99
|
+
private ngZone;
|
|
100
|
+
private engine;
|
|
101
|
+
private stateSubject;
|
|
102
|
+
state$: Observable<LivenessState | null>;
|
|
103
|
+
constructor(ngZone: NgZone);
|
|
104
|
+
init(config: LivenessEngineConfig): void;
|
|
105
|
+
attach(video: HTMLVideoElement): void;
|
|
106
|
+
start(): void;
|
|
107
|
+
reset(): void;
|
|
108
|
+
ngOnDestroy(): void;
|
|
109
|
+
}
|
|
110
|
+
|
|
64
111
|
export declare interface LivenessState {
|
|
65
112
|
status: "loading" | "ready" | "capturing" | "verifying" | "success" | "error" | "expired";
|
|
66
113
|
sequence: Challenge[];
|