UNPKG

@pixelverse/strichjs-sdk

Version:

STRICH JavaScript Barcode Scanning SDK

1 lines 552 kB
"use strict";var strich=(()=>{var XA=Object.defineProperty;var YI=Object.getOwnPropertyDescriptor;var pI=Object.getOwnPropertyNames;var HI=Object.prototype.hasOwnProperty;var mI=(Q,A)=>{for(var I in A)XA(Q,I,{get:A[I],enumerable:!0})},uI=(Q,A,I,g)=>{if(A&&typeof A=="object"||typeof A=="function")for(let C of pI(A))!HI.call(Q,C)&&C!==I&&XA(Q,C,{get:()=>A[C],enumerable:!(g=YI(A,C))||g.enumerable});return Q};var fI=Q=>uI(XA({},"__esModule",{value:!0}),Q);var _I={};mI(_I,{BarcodeReader:()=>DA,CameraDevice:()=>AA,ImageScanner:()=>WA,PopupScanner:()=>jA,SdkError:()=>E,StrichSDK:()=>i});var rA=class rA{static get(){return localStorage.getItem(rA.key)}static set(A){localStorage.setItem(rA.key,A)}};rA.key="strich_device_id";var j=rA;var NA=class{constructor(A){let I=A.split(".");if(I.length!==3)throw new Error("Malformed license key");let C=I[1].replace(/-/g,"+").replace(/_/g,"/"),B=decodeURIComponent(atob(C).split("").map(o=>"%"+("00"+o.charCodeAt(0).toString(16)).slice(-2)).join(""));try{this.jwt=JSON.parse(B),this.key=A}catch{throw new Error("Malformed license key")}if(this.jwt.aud==null||this.jwt.sub==null||this.jwt.iss==null||this.jwt.version==null)throw new Error("Malformed license key")}get licenseId(){return this.jwt.sub}get isDevLicense(){return this.jwt.iss==="dev.strich.io"}get isOffline(){return this.jwt.capabilities.hasOwnProperty("offline")&&this.jwt.capabilities.offline===!0}get isAnalyticsOptOut(){return this.jwt.capabilities.hasOwnProperty("analyticsOptOut")&&this.jwt.capabilities.analyticsOptOut===!0}get hasCustomOverlayLogoCapability(){return this.jwt.capabilities.hasOwnProperty("customOverlayLogo")&&this.jwt.capabilities.customOverlayLogo===!0}get version(){return this.jwt.version}};var p=class p{static get(A,I){let g=this._keyIndices.get(I);if(g===void 0)return;let C=this._strings[A];if(C)return C[g]}static setLanguageFromNavigator(A){let I=this.defaultLang;A&&(I=A.split("-")[0].toLowerCase()),Object.keys(p._strings).includes(I)?p.lang=I:p.lang=this.defaultLang}static t(A){let I=p.get(p.lang,A);if(I)return I;let g=p.get(p.defaultLang,A);return g||A}static default(A){var I;return(I=p.get(p.defaultLang,A))!=null?I:A}};p.defaultLang="en",p.lang="en",p._keyIndices=new Map([["action.reload",0],["action.retry",1],["action.cancel",2],["action.scan",3],["action.resumeScanning",4],["error.internal",5],["error.requirementsNotFulfilled",6],["error.featureNotAvailable",7],["error.cameraNotReadable",8],["error.cameraNotAllowed",9],["error.cameraNotFound",10],["error.cameraOverconstrained",11],["error.cameraAbort",12],["error.cameraLost",13],["error.originNotSecure",14],["error.sdkNotInitialized",15],["error.licenseInvalid",16],["error.licenseCheckFailed",17],["error.outdatedSdk",18],["error.invalidConfiguration",19],["error.invalidInput",20]]),p._strings={en:["Reload application","Retry","Cancel","Scan Barcode","Resume scanning","An internal error has occurred.","Your browser is not supported. Please use an up-to-date browser.","Your browser does not support this feature.","Unable to open camera. Make sure no other app or browser tab is using the camera.","Camera access is not permitted, please review website permissions and retry.","No suitable camera device was found.","Camera access failed, camera device is not compatible.","Camera access was aborted.","Access to camera stream was lost, please tap to re-acquire.","Camera access requires a secure origin (HTTPS)","Please initialize the SDK before using a BarcodeReader.","The license key is invalid or expired. Please obtain a new one.","The license key could not be checked. An internet connection is required.","The STRICH SDK is out of date, please update to a more recent version.","The supplied configuration is not valid.","The supplied input is not valid."],de:["App neu laden","Nochmals versuchen","Abbrechen","Barcode Scannen","Scanning fortsetzen","Ein interner Fehler ist aufgetreten.","Ihr Browser ist nicht unterstützt. Bitte verwenden Sie einen aktuellen Browser.","Ihr Browser unterstützt diese Funktion nicht.","Kamerazugriff fehlgeschlagen, bitte stellen Sie sicher dass keine andere App oder Browser-Tab die Kamera verwendet.","Kamerazugriff nicht erlaubt, bitte passen sie die Berechtigungen der Webseite an.","Keine geeignete Kamera gefunden.","Keine kompatible Kamera gefunden.","Kamerazugriff fehlgeschlagen.","Der Kamerazugriff ging verloren, bitte tippen sie auf den Knopf um ihn wieder anzufordern.","Die eingegebene Eingabe ist ungültig."],fr:["Recharger l'application","Réessayer","Annuler","Scanner","Reprendre la lecture des codes-barres","Une erreur interne s'est produite.","Votre navigateur n'est pas pris en charge. Veuillez utiliser un navigateur plus récent.","Votre navigateur ne prend pas en charge cette fonctionnalité.","Impossible d'accéder à la caméra. Assurez-vous qu'aucune autre application ou onglet de navigateur n'y accède.","L'accès à la caméra n'est pas autorisé, veuillez vérifier les autorisations du site web et réessayer.","Aucune caméra approprié n'a été trouvé.","L'accès à la caméra a échoué, l'appareil photo n'est pas compatible.","L'accès à la caméra a été interrompu.","L'accès au flux de données de la caméra a été perdu, veuillez appuyer sur le bouton pour le réacquérir.","L'entrée fournie n'est pas valide."],it:["Ricarica l'applicazione","Riprovare","Annullare","Scansione","Riprendere la scansione","Si è verificato un errore interno.","Il vostro browser non è supportato. Utilizzare un browser aggiornato.","Il browser non supporta questa funzione.","Impossibile aprire la fotocamera. Assicuratevi che nessun'altra applicazione o scheda del browser stia utilizzando la fotocamera.","L'accesso alla fotocamera non è consentito, controllare le autorizzazioni del sito web e riprovare.","Non è stato trovato un dispositivo fotocamera adatto.","L'accesso alla fotocamera non è riuscito, il dispositivo non è compatibile.","L'accesso alla fotocamera è stato interrotto.","L'accesso al flusso della camera è stato perso, toccare per riaccedere.","L'input fornito non è valido."],es:["Recargar la aplicación","Reintentar","Cancelar","Escanear","Reanudar la lectura del código de barras","Se ha producido un error interno.","Su navegador no es compatible. Utilice un navegador actualizado.","Su navegador no es compatible con esta función.","No se puede abrir la cámara. Asegúrate de que ninguna otra aplicación o pestaña del navegador esté utilizando la cámara.","El acceso a la cámara no está permitido, revisa los permisos del sitio web y vuelve a intentarlo.","No se ha encontrado ningún dispositivo de cámara adecuado.","El acceso a la cámara ha fallado, el dispositivo de la cámara no es compatible.","Se ha cancelado el acceso a la cámara.","Se ha perdido el acceso a la cámara, pulse para volver a obtenerlo.","La entrada proporcionada no es válida."],pt:["Recarregar aplicativo","Tentar novamente","Cancelar","Escanear código de barras","Retomar a digitalização","Ocorreu um erro interno.","Seu navegador não é compatível. Por favor, use um navegador atualizado.","Seu navegador não suporta este recurso.","Não foi possível abrir a câmera. Certifique-se de que nenhum outro aplicativo ou aba do navegador esteja usando a câmera.","O acesso à câmera não foi permitido, revise as permissões do site e tente novamente.","Nenhum dispositivo de câmera adequado foi encontrado.","Falha no acesso à câmera, o dispositivo não é compatível.","O acesso à câmera foi interrompido.","O acesso ao fluxo da câmera foi perdido, toque para readquirir.","A entrada fornecida não é válida."],da:["Genindlæs applikation","Prøv igen","Annuller","Scan stregkode","Genoptag scanning","Der er opstået en intern fejl.","Din browser understøttes ikke. Brug venligst en opdateret browser.","Din browser understøtter ikke denne funktion.","Kan ikke åbne kameraet. Sørg for, at ingen andre apps eller browsertabs bruger kameraet.","Adgang til kameraet er ikke tilladt, gennemgå webstedstilladelser og prøv igen.","Ingen passende kameraenhed fundet.","Kameraadgang mislykkedes, enheden er ikke kompatibel.","Kameraadgang blev afbrudt.","Adgangen til kamerastreamen blev tabt, tryk for at genoprette.","Den angivne input er ugyldig."],nl:["Applicatie herladen","Opnieuw proberen","Annuleren","Barcode scannen","Doorgaan met scannen","Er is een interne fout opgetreden.","Uw browser wordt niet ondersteund. Gebruik een up-to-date browser.","Uw browser ondersteunt deze functie niet.","Kan de camera niet openen. Zorg ervoor dat geen andere app of browsertabblad de camera gebruikt.","Toegang tot de camera is niet toegestaan, controleer de websitepermissies en probeer opnieuw.","Geen geschikte camera gevonden.","Camera-toegang mislukt, apparaat is niet compatibel.","Camera-toegang werd afgebroken.","Toegang tot de camerastream is verloren gegaan, tik om opnieuw te verbinden.","De opgegeven invoer is ongeldig."],sv:["Ladda om applikationen","Försök igen","Avbryt","Skanna streckkod","Fortsätt skanna","Ett internt fel har inträffat.","Din webbläsare stöds inte. Vänligen använd en uppdaterad webbläsare.","Din webbläsare stöder inte den här funktionen.","Kameran kan inte öppnas. Kontrollera att ingen annan app eller flik i webbläsaren använder kameran.","Åtkomst till kameran är inte tillåten, granska webbplatsens behörigheter och försök igen.","Ingen lämplig kameranhet hittades.","Kameraåtkomst misslyckades, kameran är inte kompatibel.","Kameraåtkomst avbröts.","Åtkomsten till kamerastreamen förlorades, tryck för att återansluta.","Den angivna inmatningen är ogiltig."],no:["Last inn applikasjonen på nytt","Prøv igjen","Avbryt","Skann strekkode","Fortsett skanning","En intern feil har oppstått.","Nettleseren din støttes ikke. Vennligst bruk en oppdatert nettleser.","Nettleseren din støtter ikke denne funksjonen.","Kan ikke åpne kamera. Sørg for at ingen andre apper eller nettleserfaner bruker kameraet.","Tilgang til kamera er ikke tillatt, vennligst sjekk nettstedstillatelser og prøv igjen.","Ingen passende kameraenhet ble funnet.","Kameratilgang mislyktes, enheten er ikke kompatibel.","Kameratilgang ble avbrutt.","Tilgangen til kamerastreamen gikk tapt, trykk for å gjenopprette.","Den angitte inndataen er ugyldig."],fi:["Lataa sovellus uudelleen","Yritä uudelleen","Peruuta","Skannaa viivakoodi","Jatka skannausta","Sisäinen virhe on tapahtunut.","Selaintasi ei tueta. Käytä päivitettyä selainta.","Selaimesi ei tue tätä ominaisuutta.","Kameraa ei voi avata. Varmista, että mikään muu sovellus tai selainvälilehti ei käytä kameraa.","Kameran käyttö ei ole sallittu, tarkista verkkosivuston käyttöoikeudet ja yritä uudelleen.","Sopivaa kameralaitetta ei löytynyt.","Kameran käyttö epäonnistui, laite ei ole yhteensopiva.","Kameran käyttö keskeytettiin.","Yhteys kameran streamiin menetettiin, napauta uudelleen muodostamiseksi.","Annettu syöte ei ole kelvollinen."],jp:["アプリケーションをリロード","再試行","キャンセル","バーコードをスキャン","スキャンを再開","内部エラーが発生しました。","お使いのブラウザはサポートされていません。最新のブラウザをご利用ください。","お使いのブラウザはこの機能をサポートしていません。","カメラを開くことができません。他のアプリやブラウザタブがカメラを使用していないことを確認してください。","カメラアクセスが許可されていません。ウェブサイトの権限を確認して再試行してください。","適切なカメラデバイスが見つかりませんでした。","カメラアクセスに失敗しました。カメラデバイスが互換性がありません。","カメラアクセスが中断されました。","カメラストリームへのアクセスが失われました。再取得するにはタップしてください。","指定された入力は無効です"],zh:["重新加载应用程序","重试","取消","扫描条形码","继续扫描","发生内部错误。","您的浏览器不受支持。请使用最新版本的浏览器。","您的浏览器不支持此功能。","无法打开摄像头。请确保没有其他应用程序或浏览器标签正在使用摄像头。","摄像头访问未被允许,请检查网站权限后重试。","未找到合适的摄像头设备。","摄像头访问失败,设备不兼容。","摄像头访问被中止。","摄像头流访问丢失,请点击以重新获取。","提供的输入无效"],hi:["एप्लिकेशन को फिर से लोड करें","पुनः प्रयास करें","रद्द करें","बारकोड स्कैन करें","स्कैनिंग जारी रखें","आंतरिक त्रुटि हुई है।","आपका ब्राउज़र समर्थित नहीं है। कृपया एक अद्यतन ब्राउज़र का उपयोग करें।","आपका ब्राउज़र इस सुविधा का समर्थन नहीं करता।","कैमरा खोलने में असमर्थ। कृपया सुनिश्चित करें कि कोई अन्य ऐप या ब्राउज़र टैब कैमरा उपयोग नहीं कर रहा है।","कैमरा एक्सेस की अनुमति नहीं है। कृपया वेबसाइट अनुमतियों की समीक्षा करें और पुनः प्रयास करें।","कोई उपयुक्त कैमरा उपकरण नहीं मिला।","कैमरा एक्सेस विफल रहा, कैमरा डिवाइस संगत नहीं है।","कैमरा एक्सेस रद्द कर दिया गया।","कैमरा स्ट्रीम तक पहुंच खो गई। कृपया फिर से प्राप्त करने के लिए टैप करें।","प्रदान किया गया इनपुट अमान्य है।"],id:["Muat ulang aplikasi","Coba lagi","Batal","Pindai Barcode","Lanjutkan pemindaian","Terjadi kesalahan internal.","Peramban Anda tidak didukung. Harap gunakan peramban yang terbaru.","Peramban Anda tidak mendukung fitur ini.","Tidak dapat membuka kamera. Pastikan tidak ada aplikasi atau tab peramban lain yang menggunakan kamera.","Akses kamera tidak diizinkan, harap tinjau izin situs web dan coba lagi.","Tidak ada perangkat kamera yang cocok ditemukan.","Akses kamera gagal, perangkat kamera tidak kompatibel.","Akses kamera dibatalkan.","Akses ke aliran kamera hilang, silakan ketuk untuk mendapatkan kembali.","Masukan yang diberikan tidak valid."],vi:["Tải lại ứng dụng","Thử lại","Hủy","Quét mã vạch","Tiếp tục quét","Đã xảy ra lỗi nội bộ.","Trình duyệt của bạn không được hỗ trợ. Vui lòng sử dụng trình duyệt cập nhật.","Trình duyệt của bạn không hỗ trợ tính năng này.","Không thể mở camera. Đảm bảo không có ứng dụng hoặc tab trình duyệt nào khác đang sử dụng camera.","Truy cập camera không được phép, vui lòng xem lại quyền trang web và thử lại.","Không tìm thấy thiết bị camera phù hợp.","Truy cập camera thất bại, thiết bị không tương thích.","Truy cập camera đã bị hủy.","Đã mất kết nối với camera, hãy nhấn để kết nối lại.","Đầu vào được cung cấp không hợp lệ."],th:["โหลดแอปพลิเคชันใหม่","ลองอีกครั้ง","ยกเลิก","สแกนบาร์โค้ด","ดำเนินการสแกนต่อ","เกิดข้อผิดพลาดภายใน","เบราว์เซอร์ของคุณไม่รองรับ กรุณาใช้เบราว์เซอร์ที่อัปเดตล่าสุด","เบราว์เซอร์ของคุณไม่รองรับฟีเจอร์นี้","ไม่สามารถเปิดกล้องได้ โปรดตรวจสอบว่าไม่มีแอปหรือแท็บเบราว์เซอร์อื่นใช้งานกล้องอยู่","การเข้าถึงกล้องไม่ได้รับอนุญาต โปรดตรวจสอบสิทธิ์ของเว็บไซต์และลองอีกครั้ง","ไม่พบอุปกรณ์กล้องที่เหมาะสม","การเข้าถึงกล้องล้มเหลว อุปกรณ์กล้องไม่รองรับ","การเข้าถึงกล้องถูกยกเลิก","การเชื่อมต่อกับสตรีมกล้องขาดหาย โปรดแตะเพื่อเชื่อมต่ออีกครั้ง","อินพุตที่ให้มาไม่ถูกต้อง"],ko:["애플리케이션 다시 로드","다시 시도","취소","바코드 스캔","스캔 재개","내부 오류가 발생했습니다.","브라우저가 지원되지 않습니다. 최신 브라우저를 사용해주세요.","브라우저가 이 기능을 지원하지 않습니다.","카메라를 열 수 없습니다. 다른 앱이나 브라우저 탭이 카메라를 사용하고 있지 않은지 확인하세요.","카메라 액세스가 허용되지 않았습니다. 웹사이트 권한을 확인하고 다시 시도하세요.","적합한 카메라 장치를 찾을 수 없습니다.","카메라 액세스 실패, 카메라 장치가 호환되지 않습니다.","카메라 액세스가 중단되었습니다.","카메라 스트림 액세스가 끊겼습니다. 다시 연결하려면 탭하세요.","제공된 입력이 유효하지 않습니다."]};var U=p;var E=class Q extends Error{constructor(A,I){var g,C;super(A),Object.setPrototypeOf(this,Q.prototype),this.name=this.constructor.name,this.duringCameraAccess=!1,this.message=(g=U.default(A))!=null?g:A,this.localizedMessage=(C=U.t(A))!=null?C:this.message,this.cause=I,this.detailMessage=I==null?void 0:I.message}static invalidLicenseErrorWithDetail(A){let I=new Q("error.licenseInvalid");return I.message=I.message+" ("+A+")",I.detailMessage=A,I}static internalErrorWithCause(A){return A instanceof Error?new Q("error.internal",A):new Q("error.internal")}static internalErrorWithDetail(A){let I=new Q("error.internal");return I.detailMessage=A,I}static configurationErrorWithDetail(A,I){let g=new Q("error.invalidConfiguration");return g.detailMessage=A,I&&(g.message+=` (${A})`),g}static unfulfilledRequirementErrorWithDetail(A,I){let g=new Q("error.requirementsNotFulfilled");return g.detailMessage=A,I&&(g.message+=` (${A})`),g}static invalidInput(A){return new Q("error.invalidInput",A)}static sdkNotInitialized(){return new Q("error.sdkNotInitialized")}static cameraNotFound(){return new Q("error.cameraNotFound")}static cameraNotReadable(){return new Q("error.cameraNotReadable")}static fromGetUserMediaError(A){let I;switch(A.name){case"NotReadableError":I="error.cameraNotReadable";break;case"NotFoundError":I="error.cameraNotFound";break;case"AbortError":I="error.cameraAbort";break;case"NotAllowedError":I="error.cameraNotAllowed";break;case"OverconstrainedError":I="error.cameraOverconstrained";break;default:I="error.cameraNotReadable";break}let g=new Q(I,A);return g.duringCameraAccess=!0,g}};function MA(){return["iPad Simulator","iPhone Simulator","iPod Simulator","iPad","iPhone","iPod"].indexOf(navigator.platform)!==-1||navigator.userAgent.indexOf("Mac")!==-1&&"ontouchend"in document}function kA(){return navigator.userAgent.toLowerCase().indexOf("firefox")>-1}async function _A(Q){return new Promise(A=>setTimeout(A,Q))}function wA(Q,A,I){return Math.min(Math.max(Q,A),I)}function tI(){let Q=new Date().getTime(),A=typeof performance!="undefined"&&performance.now&&performance.now()*1e3||0;return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,I=>{let g=Math.random()*16;return Q>0?(g=(Q+g)%16|0,Q=Math.floor(Q/16)):(g=(A+g)%16|0,A=Math.floor(A/16)),(I==="x"?g:g&3|8).toString(16)})}var RA="https://license.strich.io/api/v2",UA="https://license-dev.strich.io/api/v2";var CA=class CA{static get(){return localStorage.getItem(CA.key)}static set(A){A===null?localStorage.removeItem(CA.key):localStorage.setItem(CA.key,A)}};CA.key="strich_token";var _=CA;var KA=class{constructor(A,I,g,C){this.api=A;this.deviceId=I;this.url=g;this.ua=C;this.pendingRefreshId=0}async verify(A){let I;try{I=new NA(A)}catch(o){throw new E("error.licenseInvalid",o instanceof Error?o:void 0)}this.deviceId===null&&_.set(null);let g=Date.now()/1e3,C=_.get(),B=this.api.strich_init(A,C,window.location.href,g);if(B===0||B===10)return I.isOffline?this.deviceId===null&&j.set(tI()):B===10&&this.pendingRefreshId===0&&(this.pendingRefreshId=setTimeout(async()=>{try{await this.verifyOnline(I)}catch{}},2500)),I;if(B===9)return _.set(null),await this.verifyOnline(I);if(B===1)throw new E("error.outdatedSdk");{let o=new E("error.licenseInvalid"),a=this.api.strich_get_last_error_message();throw a!==""&&(o.detailMessage=a),o}}async verifyOnline(A){let I=null;if(this.deviceId)I=(await this.pingDevice(A,this.deviceId)).token;else{let g=await this.enrollDevice(A);j.set(g.deviceId),I=g.token}return I&&_.set(I),A}async enrollDevice(A){let I={licenseKey:A.key,locationHref:this.url,userAgent:this.ua,sdkVersion:i.version()},g=this.getApiEndpoint(A);try{let C=await this.fetchWithRetries(`${g}/web/enroll`,2,{method:"POST",headers:{"Content-Type":"application/json","X-STRICH-LicenseId":A.licenseId},body:JSON.stringify(I)});if(C.status===201){let B=await C.json();return{deviceId:B.deviceId,token:B.token}}return this.throwError(C)}catch(C){throw C instanceof E?C:new E("error.licenseCheckFailed",C)}}async pingDevice(A,I){let g={deviceId:I,licenseKey:A.key,locationHref:this.url,userAgent:this.ua,sdkVersion:i.version()},C=this.getApiEndpoint(A);try{let B=await this.fetchWithRetries(`${C}/web/ping`,2,{method:"POST",headers:{"Content-Type":"application/json","X-STRICH-LicenseId":A.licenseId},body:JSON.stringify(g)});return B.status===200?{token:(await B.json()).token}:this.throwError(B)}catch(B){throw B instanceof E?B:new E("error.licenseCheckFailed",B)}}async throwError(A){if(A.status===400||A.status===404||A.status===403)try{let I=await A.json();throw E.invalidLicenseErrorWithDetail(I.message)}catch(I){throw I instanceof E?I:new E("error.licenseInvalid",I)}throw new E("error.licenseCheckFailed")}getApiEndpoint(A){return A.isDevLicense?UA:RA}async fetchWithRetries(A,I,g){for(let C=0;C<I;C++)try{let B=await fetch(A,g);if(B.ok||B.status===403)return B;await _A(500)}catch{C<I&&await _A(500)}throw new Error(`Fetch failed after ${I} retries`)}};var DI="1.16.0";var dA=class{constructor(){this.wasm=this.isWASMSupported(),this.webgl2=this.isWebGL2Supported(),this.gUM=this.isGetUserMediaSupported(),this.offscreenCanvas=this.isOffscreenCanvasSupported(),this.rVF=this.isRequestVideoFrameCallbackSupported(),this.webAudio=this.isWebAudioSupported(),this.zoom=this.gUM&&this.isZoomSupported(),this.beacon=this.isBeaconSupported()}isWASMSupported(){try{if(typeof WebAssembly=="object"&&typeof WebAssembly.instantiate=="function"){let A=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(A instanceof WebAssembly.Module)return new WebAssembly.Instance(A)instanceof WebAssembly.Instance}}catch{}return!1}isWebGL2Supported(){return document.createElement("canvas").getContext("webgl2")!==null}isGetUserMediaSupported(){return navigator.mediaDevices&&typeof navigator.mediaDevices.getUserMedia=="function"}isOffscreenCanvasSupported(){return HTMLCanvasElement.prototype.transferControlToOffscreen?new OffscreenCanvas(16,16).getContext("webgl")!==null:!1}isRequestVideoFrameCallbackSupported(){return"requestVideoFrameCallback"in HTMLVideoElement.prototype}isWebAudioSupported(){return!!(window.AudioContext||window.webkitAudioContext)}isZoomSupported(){return typeof navigator.mediaDevices.getSupportedConstraints=="function"?"zoom"in navigator.mediaDevices.getSupportedConstraints():!1}isBeaconSupported(){return"sendBeacon"in navigator}};var bI={};async function TI(Q={}){var A,I=Q,g=bI.url;try{new URL(".",g)}catch{}var C=console.log.bind(console),B=console.error.bind(console),o,a=!1,e,s,h=!1;function n(){var t=SA.buffer;S=new Int8Array(t),new Int16Array(t),I.HEAPU8=d=new Uint8Array(t),new Uint16Array(t),new Int32Array(t),K=new Uint32Array(t),new Float32Array(t),new Float64Array(t),new BigInt64Array(t),new BigUint64Array(t)}function c(t){var r;throw(r=I.onAbort)==null||r.call(I,t),t=`Aborted(${t})`,B(t),a=!0,t=new WebAssembly.RuntimeError(t+". Build with -sASSERTIONS for more info."),s==null||s(t),t}var l;async function T(t){if(!ArrayBuffer.isView(t))if(t==l&&o)t=new Uint8Array(o);else throw"both async and sync fetching of the wasm failed";return t}async function k(t){var r=l;try{var D=await T(r);return await WebAssembly.instantiate(D,t)}catch(w){B(`failed to asynchronously prepare wasm: ${w}`),c(w)}}async function R(t){return k(t)}for(var S,K,d,IA=t=>{for(;0<t.length;)t.shift()(I)},z=[],X=[],aA=()=>{var t=I.preRun.shift();X.push(t)},f=t=>{for(var r,D,w=0,y=0,M=t.length,H=new Uint8Array((3*M>>2)-(t[M-2]=="=")-(t[M-1]=="="));w<M;w+=4,y+=3)r=x[t.charCodeAt(w+1)],D=x[t.charCodeAt(w+2)],H[y]=x[t.charCodeAt(w)]<<2|r>>4,H[y+1]=r<<4|D>>2,H[y+2]=D<<6|x[t.charCodeAt(w+3)];return H},EI=globalThis.TextDecoder&&new TextDecoder,sA=(t,r=0)=>{for(var D=r,w=D+void 0;t[D]&&!(D>=w);)++D;if(16<D-r&&t.buffer&&EI)return EI.decode(t.subarray(r,D));for(w="";r<D;){var y=t[r++];if(y&128){var M=t[r++]&63;if((y&224)==192)w+=String.fromCharCode((y&31)<<6|M);else{var H=t[r++]&63;y=(y&240)==224?(y&15)<<12|M<<6|H:(y&7)<<18|M<<12|H<<6|t[r++]&63,65536>y?w+=String.fromCharCode(y):(y-=65536,w+=String.fromCharCode(55296|y>>10,56320|y&1023))}}else w+=String.fromCharCode(y)}return w},lI=[null,[],[]],iI=(t,r,D,w)=>{var y={string:J=>{var Y=0;if(J!=null&&J!==0){for(var F=Y=0;F<J.length;++F){var L=J.charCodeAt(F);127>=L?Y++:2047>=L?Y+=2:55296<=L&&57343>=L?(Y+=4,++F):Y+=3}var v=Y+1;if(F=Y=zA(v),L=d,0<v){v=F+v-1;for(var GA=0;GA<J.length;++GA){var u=J.codePointAt(GA);if(127>=u){if(F>=v)break;L[F++]=u}else if(2047>=u){if(F+1>=v)break;L[F++]=192|u>>6,L[F++]=128|u&63}else if(65535>=u){if(F+2>=v)break;L[F++]=224|u>>12,L[F++]=128|u>>6&63,L[F++]=128|u&63}else{if(F+3>=v)break;L[F++]=240|u>>18,L[F++]=128|u>>12&63,L[F++]=128|u>>6&63,L[F++]=128|u&63,GA++}}L[F]=0}}return Y},array:J=>{var Y=zA(J.length);return S.set(J,Y),Y}};t=I["_"+t];var M=[],H=0;if(w)for(var b=0;b<w.length;b++){var gA=y[D[b]];gA?(H===0&&(H=eI()),M[b]=gA(w[b])):M[b]=w[b]}return D=t(...M),D=(function(J){return H!==0&&oI(H),r==="string"?J?sA(d,J):"":r==="boolean"?!!J:J})(D)},x=new Uint8Array(123),O=25;0<=O;--O)x[48+O]=52+O,x[65+O]=O,x[97+O]=26+O;if(x[43]=62,x[47]=63,I.print&&(C=I.print),I.printErr&&(B=I.printErr),I.wasmBinary&&(o=I.wasmBinary),I.preInit)for(typeof I.preInit=="function"&&(I.preInit=[I.preInit]);0<I.preInit.length;)I.preInit.shift()();I.ccall=iI,I.cwrap=(t,r,D,w)=>{var y=!D||D.every(M=>M==="number"||M==="boolean");return r!=="string"&&y&&!w?I["_"+t]:(...M)=>iI(t,r,D,M,w)};var oI,zA,eI,SA,LI={a:(t,r,D,w)=>c(`Assertion failed: ${t?sA(d,t):""}, at: `+[r?r?sA(d,r):"":"unknown filename",D,w?w?sA(d,w):"":"unknown function"]),e:()=>c(""),d:t=>{var r=d.length;t>>>=0,2147483648<t&&c("OOM");for(var D=1;4>=D;D*=2){var w=r*(1+.2/D);w=Math.min(w,t+100663296);A:{w=(Math.min(2147483648,65536*Math.ceil(Math.max(t,w)/65536))-SA.buffer.byteLength+65535)/65536|0;try{SA.grow(w),n();var y=1;break A}catch{}y=void 0}if(y)return!0}c("OOM")},c:()=>52,b:(t,r,D,w)=>{for(var y=0,M=0;M<D;M++){var H=K[r>>2],b=K[r+4>>2];r+=8;for(var gA=0;gA<b;gA++){var J=t,Y=d[H+gA],F=lI[J];Y===0||Y===10?((J===1?C:B)(sA(F)),F.length=0):F.push(Y)}y+=b}return K[w>>2]=y,0}},FA;return FA=await(async function(){function t(D){return D=FA=D.exports,I._strich_version=D.h,I._strich_alloc=D.i,I._strich_free=D.j,I._strich_init=D.k,I._strich_set_debug=D.l,I._strich_get_last_error_message=D.m,I._strich_engine_init=D.n,I._strich_engine_destroy=D.o,I._strich_engine_process_frame=D.p,I._strich_engine_get_number_of_results=D.q,I._strich_engine_get_result_data=D.r,I._strich_engine_get_result_data_len=D.s,I._strich_engine_get_result_raw_data=D.t,I._strich_engine_get_result_type=D.u,I._strich_engine_get_quad_p_x=D.v,I._strich_engine_get_quad_p_y=D.w,I._strich_engine_get_symbology_identifier=D.x,I._strich_engine_get_debug_output=D.y,I._strich_engine_get_status_message=D.z,I._strich_scan_image=D.A,oI=D.B,zA=D.C,eI=D.D,SA=D.f,n(),FA}var r={a:LI};return I.instantiateWasm?new Promise(D=>{I.instantiateWasm(r,(w,y)=>{D(t(w,y))})}):(l!=null||(l=f("AGFzbQEAAAABrwIrYAF/AGACf38AYAF/AX9gA39/fwBgAn9/AX9gA39/fwF/YAR/f39/AGAEf39/fwF/YAV/f39/fwBgAABgBX9/f39/AX9gAAF/YAV/fn5+fgBgBn9/f39/fwBgAn9/AX1gB39/f39/f38Bf2AEf35+fwBgBn9/f39/fwF/YAh/f39/f39/fwBgAXwBf2ABfwF8YAF9AX1gBn9/f31/fwF/YAd/f39/f39/AGABfQF/YAJ/fgBgAn98AGADf398AGAEfn5+fgF/YAF/AX1gAn5/AX9gCn9/f39/f31/f38AYAJ9fQF/YAJ+fgF8YAN+fn4Bf2ADf39+AGAGf3x/f39/AX9gAnx/AXxgAn9/AX5gBH9+fn4AYAV/fX9/fwBgB39/f39/fX8Bf2ADf35/AX4CHwUBYQFhAAYBYQFiAAcBYQFjAAIBYQFkAAIBYQFlAAkD0wTRBAACGAEOAgkDBAIMBAIEAQEDAwMMEAgEBQEHBAEBBAwHBAkAAQMEEwQBAgABEwUCAAYDBRkAAQEECQkHBBoDAAECAgYCBQ4UBgAFCQUDBAcGAxsBEBwCBR0RBAECAQIABwEBAAECHgUDAQUDAwAHBgMKBQEEAQcGAwUVBQkfBgEEBAUHBAEKAggEBAgBCwsFAwIBAQEBAQEBAQEBBQUSAgMEBwMABgIFIAEKBAEGCQQDAwkOAAMDAQIWAQgBBAEDAgYCAwYEAgcABAgEBAQCIQwEAhQDAA0HAwEBAwgFAQAIAAQBCAYIAgcAAgAGAgECAggEAAcCCAIEAQAGBAEBAwICBQMGAgICBwIAAwMEAQQABAQIAAcBAAcHBgADAQECBgEBAQQAAAMMIgEDBCMBJAMFAwIKJQUmBgwQJwMCAxUDAgcDBA0XDwcCBQEBCAEIBQYCBAEHKAMFBA0AAwcGCAAABAYBAAMHAQQACAIBAwMCAQMDAwMCAQUFAwURAQEAAwAFAAcBAQUEAAMAAgEBAQ0NBAcEAgEFAQgEBQgCBQQBBQADAQMBBAMBAQIBBgYCBQ0HAQQIAgMAFwEEBAEAAggpBgQWBQ8PBgMKBgMRCAEEAwMDAwQIAAcIAQEDBRIDBAgIAQcBAxIABwAAAAEBCgQAAAAICggCDgUKBQAABwUEAwMDAgQBAwELAgAJAgUqBQUECgsLAgQEAgILDwkCCwAHAAIL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BCEBIAAoAgghAgJAIAApA3AiBFANACAEIAV9IgQgAiABa6xZDQAgASAEp2ohAgsgACACNgJoIAAgBSAAKAIsIgAgAWusfDcDeCAAIAFPBEAgAUEBayADOgAACyADC8sKAgV/CX4jAEHgAGsiBSQAIARC////////P4MhCiACIASFQoCAgICAgICAgH+DIQsgAkL///////8/gyIMQiCIIQ8gBEIwiKdB//8BcSEHAkACQCACQjCIp0H//wFxIglB//8Ba0GCgH5PBEAgB0H//wFrQYGAfksNAQsgAVAgAkL///////////8AgyINQoCAgICAgMD//wBUIA1CgICAgICAwP//AFEbRQRAIAJCgICAgICAIIQhCwwCCyADUCAEQv///////////wCDIgJCgICAgICAwP//AFQgAkKAgICAgIDA//8AURtFBEAgBEKAgICAgIAghCELIAMhAQwCCyABIA1CgICAgICAwP//AIWEUARAIAIgA4RQBEBCgICAgICA4P//ACELQgAhAQwDCyALQoCAgICAgMD//wCEIQtCACEBDAILIAMgAkKAgICAgIDA//8AhYRQBEAgASANhEIAIQFQBEBCgICAgICA4P//ACELDAMLIAtCgICAgICAwP//AIQhCwwCCyABIA2EUARAQgAhAQwCCyACIAOEUARAQgAhAQwCCyANQv///////z9YBEAgBUHQAGogASAMIAEgDCAMUCIGG3lCwABCACAGG3ynIgZBD2sQGUEQIAZrIQYgBSkDWCIMQiCIIQ8gBSkDUCEBCyACQv///////z9WDQAgBUFAayADIAogAyAKIApQIggbeULAAEIAIAgbfKciCEEPaxAZIAYgCGtBEGohBiAFKQNIIQogBSkDQCEDCyAHIAlqIAZqQf//AGshBgJAIApCD4YiDkIgiEKAgICACIQiAiABQiCIIgR+IhAgA0IPhiIRQiCIIgogD0KAgASEIg1+fCIPIBBUrSAPIANCMYggDoRC/////w+DIgMgDEL/////D4MiDH58Ig4gD1StfCACIA1+fCAOIA4gEUKAgP7/D4MiDyAMfiIRIAQgCn58IhAgEVStIBAgECADIAFC/////w+DIgF+fCIQVq18fCIOVq18IAMgDX4iEiACIAx+fCIRIBJUrUIghiARQiCIhHwgDiAOIBFCIIZ8Ig5WrXwgDiANIA9+Ig0gCiAMfnwiDCABIAJ+fCICIAMgBH58IgNCIIggAiADVq0gDCANVK0gAiAMVK18fEIghoR8IgIgDlStfCACIBAgBCAPfiIMIAEgCn58IgRCIIggBCAMVK1CIIaEfCIKIBBUrSAKIANCIIZ8IgMgClStfHwiCiACVK18IAogAyAEQiCGIgIgASAPfnwiASACVK18IgIgA1StfCIEIApUrXwiA0KAgICAgIDAAINQRQRAIAZBAWohBgwBCyABQj+IIANCAYYgBEI/iIQhAyAEQgGGIAJCP4iEIQQgAUIBhiEBIAJCAYaEIQILIAZB//8BTgRAIAtCgICAgICAwP//AIQhC0IAIQEMAQsCfiAGQQBMBEBBASAGayIHQf8ATQRAIAVBMGogASACIAZB/wBqIgYQGSAFQSBqIAQgAyAGEBkgBUEQaiABIAIgBxBYIAUgBCADIAcQWCAFKQMwIAUpAziEQgBSrSAFKQMgIAUpAxCEhCEBIAUpAyggBSkDGIQhAiAFKQMAIQQgBSkDCAwCC0IAIQEMAgsgA0L///////8/gyAGrUIwhoQLIAuEIQsgAVAgAkIAWSACQoCAgICAgICAgH9RG0UEQCALIARCAXwiAVCtfCELDAELIAEgAkKAgICAgICAgIB/hYRQRQRAIAQhAQwBCyALIAQgBEIBg3wiASAEVK18IQsLIAAgATcDACAAIAs3AwggBUHgAGokAAtUAQJ/IABBADYCCCAAQgA3AgAgASgCBCICIAEoAgAiA0cEQCAAIAIgA2siAUECdRBmIAAoAgQhAiABBEAgAiADIAH8CgAACyAAIAEgAmo2AgQLIAALvCgBC38jAEEQayIKJAACQAJAAkACQAJAAkACQAJAAkACQCAAQfQBTQRAQeT/AigCACIEQRAgAEELakH4A3EgAEELSRsiBkEDdiIAdiIBQQNxBEACQCABQX9zQQFxIABqIgNBA3QiAUGMgANqIgAgASgClIADIgIoAggiBUYEQEHk/wIgBEF+IAN3cTYCAAwBCyAFIAA2AgwgACAFNgIICyACQQhqIQAgAiABQQNyNgIEIAEgAmoiASABKAIEQQFyNgIEDAsLIAZB7P8CKAIAIghNDQEgAQRAAkBBAiAAdCICQQAgAmtyIAEgAHRxaCIDQQN0IgFBjIADaiICIAEoApSAAyIAKAIIIgVGBEBB5P8CIARBfiADd3EiBDYCAAwBCyAFIAI2AgwgAiAFNgIICyAAIAZBA3I2AgQgACAGaiIHIAEgBmsiBUEBcjYCBCAAIAFqIAU2AgAgCARAIAhBeHFBjIADaiEBQfj/AigCACECAn8gBEEBIAhBA3Z0IgNxRQRAQeT/AiADIARyNgIAIAEMAQsgASgCCAshAyABIAI2AgggAyACNgIMIAIgATYCDCACIAM2AggLIABBCGohAEH4/wIgBzYCAEHs/wIgBTYCAAwLC0Ho/wIoAgAiC0UNASALaEECdCgClIIDIgEoAgRBeHEgBmshAyABIQIDQAJAIAEoAhAiAEUEQCABKAIUIgBFDQELIAAoAgRBeHEgBmsiASADIAEgA0kiARshAyAAIAIgARshAiAAIQEMAQsLIAIoAhghCSACIAIoAgwiAEcEQCACKAIIIgEgADYCDCAAIAE2AggMCgsgAigCFCIBBH8gAkEUagUgAigCECIBRQ0DIAJBEGoLIQUDQCAFIQcgASIAQRRqIQUgACgCFCIBDQAgAEEQaiEFIAAoAhAiAQ0ACyAHQQA2AgAMCQtBfyEGIABBv39LDQAgAEELaiIBQXhxIQZB6P8CKAIAIgdFDQBBHyEIQQAgBmshAyAAQfT//wdNBEAgBkEmIAFBCHZnIgBrdkEBcSAAQQF0a0E+aiEICwJAAkACQCAIQQJ0KAKUggMiAUUEQEEAIQAMAQtBACEAIAZBGSAIQQF2a0EAIAhBH0cbdCECA0ACQCABKAIEQXhxIAZrIgQgA08NACABIQUgBCIDDQBBACEDIAEhAAwDCyAAIAEoAhQiBCAEIAEgAkEddkEEcWooAhAiAUYbIAAgBBshACACQQF0IQIgAQ0ACwsgACAFckUEQEEAIQVBAiAIdCIAQQAgAGtyIAdxIgBFDQMgAGhBAnQoApSCAyEACyAARQ0BCwNAIAAoAgRBeHEgBmsiAiADSSEBIAIgAyABGyEDIAAgBSABGyEFIAAoAhAiAQR/IAEFIAAoAhQLIgANAAsLIAVFDQAgA0Hs/wIoAgAgBmtPDQAgBSgCGCEIIAUgBSgCDCIARwRAIAUoAggiASAANgIMIAAgATYCCAwICyAFKAIUIgEEfyAFQRRqBSAFKAIQIgFFDQMgBUEQagshAgNAIAIhBCABIgBBFGohAiAAKAIUIgENACAAQRBqIQIgACgCECIBDQALIARBADYCAAwHCyAGQez/AigCACIFTQRAQfj/AigCACEAAkAgBSAGayIBQRBPBEAgACAGaiICIAFBAXI2AgQgACAFaiABNgIAIAAgBkEDcjYCBAwBCyAAIAVBA3I2AgQgACAFaiIBIAEoAgRBAXI2AgRBACEBQQAhAgtB7P8CIAE2AgBB+P8CIAI2AgAgAEEIaiEADAkLIAZB8P8CKAIAIgJJBEBB8P8CIAIgBmsiATYCAEH8/wJB/P8CKAIAIgAgBmoiAjYCACACIAFBAXI2AgQgACAGQQNyNgIEIABBCGohAAwJC0EAIQAgBkEvaiIDAn9BvIMDKAIABEBBxIMDKAIADAELQciDA0J/NwIAQcCDA0KAoICAgIAENwIAQbyDAyAKQQxqQXBxQdiq1aoFczYCAEHQgwNBADYCAEGggwNBADYCAEGAIAsiAWoiBEEAIAFrIgdxIgEgBk0NCEGcgwMoAgAiBQRAQZSDAygCACIIIAFqIgkgCE0gBSAJSXINCQsCQEGggwMtAABBBHFFBEACQAJAAkACQEH8/wIoAgAiBQRAQaSDAyEAA0AgACgCACIIIAVNBEAgBSAIIAAoAgRqSQ0DCyAAKAIIIgANAAsLQQAQaSICQX9GDQMgASEEQcCDAygCACIAQQFrIgUgAnEEQCABIAJrIAIgBWpBACAAa3FqIQQLIAQgBk0NA0GcgwMoAgAiAARAQZSDAygCACIFIARqIgcgBU0gACAHSXINBAsgBBBpIgAgAkcNAQwFCyAEIAJrIAdxIgQQaSICIAAoAgAgACgCBGpGDQEgAiEACyAAQX9GDQEgBkEwaiAETQRAIAAhAgwEC0HEgwMoAgAiAiADIARrakEAIAJrcSICEGlBf0YNASACIARqIQQgACECDAMLIAJBf0cNAgtBoIMDQaCDAygCAEEEcjYCAAsgARBpIgJBf0ZBABBpIgBBf0ZyIAAgAk1yDQUgACACayIEIAZBKGpNDQULQZSDA0GUgwMoAgAgBGoiADYCAEGYgwMoAgAgAEkEQEGYgwMgADYCAAsCQEH8/wIoAgAiAwRAQaSDAyEAA0AgAiAAKAIAIgEgACgCBCIFakYNAiAAKAIIIgANAAsMBAtB9P8CKAIAIgBBACAAIAJNG0UEQEH0/wIgAjYCAAtBACEAQaiDAyAENgIAQaSDAyACNgIAQYSAA0F/NgIAQYiAA0G8gwMoAgA2AgBBsIMDQQA2AgADQCAAQQN0IgEgAUGMgANqIgU2ApSAAyABIAU2ApiAAyAAQQFqIgBBIEcNAAtB8P8CIARBKGsiAEF4IAJrQQdxIgFrIgU2AgBB/P8CIAEgAmoiATYCACABIAVBAXI2AgQgACACakEoNgIEQYCAA0HMgwMoAgA2AgAMBAsgAiADTSABIANLcg0CIAAoAgxBCHENAiAAIAQgBWo2AgRB/P8CIANBeCADa0EHcSIAaiIBNgIAQfD/AkHw/wIoAgAgBGoiAiAAayIANgIAIAEgAEEBcjYCBCACIANqQSg2AgRBgIADQcyDAygCADYCAAwDC0EAIQAMBgtBACEADAQLQfT/AigCACACSwRAQfT/AiACNgIACyACIARqIQVBpIMDIQACQANAIAUgACgCACIBRwRAIAAoAggiAA0BDAILCyAALQAMQQhxRQ0DC0GkgwMhAANAAkAgACgCACIBIANNBEAgAyABIAAoAgRqIgVJDQELIAAoAgghAAwBCwtB8P8CIARBKGsiAEF4IAJrQQdxIgFrIgc2AgBB/P8CIAEgAmoiATYCACABIAdBAXI2AgQgACACakEoNgIEQYCAA0HMgwMoAgA2AgAgAyAFQScgBWtBB3FqQS9rIgAgACADQRBqSRsiAUEbNgIEIAFBrIMDKQIANwIQIAFBpIMDKQIANwIIQayDAyABQQhqNgIAQaiDAyAENgIAQaSDAyACNgIAQbCDA0EANgIAIAFBGGohAANAIABBBzYCBCAAQQhqIABBBGohACAFSQ0ACyABIANGDQAgASABKAIEQX5xNgIEIAMgASADayICQQFyNgIEIAEgAjYCAAJ/IAJB/wFNBEAgAkH4AXFBjIADaiEAAn9B5P8CKAIAIgFBASACQQN2dCICcUUEQEHk/wIgASACcjYCACAADAELIAAoAggLIQEgACADNgIIIAEgAzYCDEEMIQJBCAwBC0EfIQAgAkH///8HTQRAIAJBJiACQQh2ZyIAa3ZBAXEgAEEBdHJBPnMhAAsgAyAANgIcIANCADcCECAAQQJ0QZSCA2ohAQJAAkBB6P8CKAIAIgVBASAAdCIEcUUEQEHo/wIgBCAFcjYCACABIAM2AgAMAQsgAkEZIABBAXZrQQAgAEEfRxt0IQAgASgCACEFA0AgBSIBKAIEQXhxIAJGDQIgAEEddiEFIABBAXQhACABIAVBBHFqIgQoAhAiBQ0ACyAEIAM2AhALIAMgATYCGEEIIQIgAyIBIQBBDAwBCyABKAIIIgAgAzYCDCABIAM2AgggAyAANgIIQQAhAEEYIQJBDAsgA2ogATYCACACIANqIAA2AgALQfD/AigCACIAIAZNDQBB8P8CIAAgBmsiATYCAEH8/wJB/P8CKAIAIgAgBmoiAjYCACACIAFBAXI2AgQgACAGQQNyNgIEIABBCGohAAwEC0Gk/wJBMDYCAEEAIQAMAwsgACACNgIAIAAgACgCBCAEajYCBCACQXggAmtBB3FqIgggBkEDcjYCBCABQXggAWtBB3FqIgQgBiAIaiIDayEHAkBB/P8CKAIAIARGBEBB/P8CIAM2AgBB8P8CQfD/AigCACAHaiIANgIAIAMgAEEBcjYCBAwBC0H4/wIoAgAgBEYEQEH4/wIgAzYCAEHs/wJB7P8CKAIAIAdqIgA2AgAgAyAAQQFyNgIEIAAgA2ogADYCAAwBCyAEKAIEIgBBA3FBAUYEQCAAQXhxIQkgBCgCDCECAkAgAEH/AU0EQCAEKAIIIgEgAkYEQEHk/wJB5P8CKAIAQX4gAEEDdndxNgIADAILIAEgAjYCDCACIAE2AggMAQsgBCgCGCEGAkAgAiAERwRAIAQoAggiACACNgIMIAIgADYCCAwBCwJAIAQoAhQiAAR/IARBFGoFIAQoAhAiAEUNASAEQRBqCyEBA0AgASEFIAAiAkEUaiEBIAAoAhQiAA0AIAJBEGohASACKAIQIgANAAsgBUEANgIADAELQQAhAgsgBkUNAAJAIAQoAhwiAEECdCIBKAKUggMgBEYEQCABQZSCA2ogAjYCACACDQFB6P8CQej/AigCAEF+IAB3cTYCAAwCCwJAIAQgBigCEEYEQCAGIAI2AhAMAQsgBiACNgIUCyACRQ0BCyACIAY2AhggBCgCECIABEAgAiAANgIQIAAgAjYCGAsgBCgCFCIARQ0AIAIgADYCFCAAIAI2AhgLIAcgCWohByAEIAlqIgQoAgQhAAsgBCAAQX5xNgIEIAMgB0EBcjYCBCADIAdqIAc2AgAgB0H/AU0EQCAHQfgBcUGMgANqIQACf0Hk/wIoAgAiAUEBIAdBA3Z0IgJxRQRAQeT/AiABIAJyNgIAIAAMAQsgACgCCAshASAAIAM2AgggASADNgIMIAMgADYCDCADIAE2AggMAQtBHyECIAdB////B00EQCAHQSYgB0EIdmciAGt2QQFxIABBAXRyQT5zIQILIAMgAjYCHCADQgA3AhAgAkECdEGUggNqIQACQAJAQej/AigCACIBQQEgAnQiBXFFBEBB6P8CIAEgBXI2AgAgACADNgIADAELIAdBGSACQQF2a0EAIAJBH0cbdCECIAAoAgAhAQNAIAEiACgCBEF4cSAHRg0CIAJBHXYhASACQQF0IQIgACABQQRxaiIFKAIQIgENAAsgBSADNgIQCyADIAA2AhggAyADNgIMIAMgAzYCCAwBCyAAKAIIIgEgAzYCDCAAIAM2AgggA0EANgIYIAMgADYCDCADIAE2AggLIAhBCGohAAwCCwJAIAhFDQACQCAFKAIcIgFBAnQiAigClIIDIAVGBEAgAkGUggNqIAA2AgAgAA0BQej/AiAHQX4gAXdxIgc2AgAMAgsCQCAFIAgoAhBGBEAgCCAANgIQDAELIAggADYCFAsgAEUNAQsgACAINgIYIAUoAhAiAQRAIAAgATYCECABIAA2AhgLIAUoAhQiAUUNACAAIAE2AhQgASAANgIYCwJAIANBD00EQCAFIAMgBmoiAEEDcjYCBCAAIAVqIgAgACgCBEEBcjYCBAwBCyAFIAZBA3I2AgQgBSAGaiIEIANBAXI2AgQgAyAEaiADNgIAIANB/wFNBEAgA0H4AXFBjIADaiEAAn9B5P8CKAIAIgFBASADQQN2dCICcUUEQEHk/wIgASACcjYCACAADAELIAAoAggLIQEgACAENgIIIAEgBDYCDCAEIAA2AgwgBCABNgIIDAELQR8hACADQf///wdNBEAgA0EmIANBCHZnIgBrdkEBcSAAQQF0ckE+cyEACyAEIAA2AhwgBEIANwIQIABBAnRBlIIDaiEBAkACQCAHQQEgAHQiAnFFBEBB6P8CIAIgB3I2AgAgASAENgIAIAQgATYCGAwBCyADQRkgAEEBdmtBACAAQR9HG3QhACABKAIAIQEDQCABIgIoAgRBeHEgA0YNAiAAQR12IQcgAEEBdCEAIAIgB0EEcWoiBygCECIBDQALIAcgBDYCECAEIAI2AhgLIAQgBDYCDCAEIAQ2AggMAQsgAigCCCIAIAQ2AgwgAiAENgIIIARBADYCGCAEIAI2AgwgBCAANgIICyAFQQhqIQAMAQsCQCAJRQ0AAkAgAigCHCIBQQJ0IgUoApSCAyACRgRAIAVBlIIDaiAANgIAIAANAUHo/wIgC0F+IAF3cTYCAAwCCwJAIAIgCSgCEEYEQCAJIAA2AhAMAQsgCSAANgIUCyAARQ0BCyAAIAk2AhggAigCECIBBEAgACABNgIQIAEgADYCGAsgAigCFCIBRQ0AIAAgATYCFCABIAA2AhgLAkAgA0EPTQRAIAIgAyAGaiIAQQNyNgIEIAAgAmoiACAAKAIEQQFyNgIEDAELIAIgBkEDcjYCBCACIAZqIgUgA0EBcjYCBCADIAVqIAM2AgAgCARAIAhBeHFBjIADaiEAQfj/AigCACEBAn9BASAIQQN2dCIHIARxRQRAQeT/AiAEIAdyNgIAIAAMAQsgACgCCAshBCAAIAE2AgggBCABNgIMIAEgADYCDCABIAQ2AggLQfj/AiAFNgIAQez/AiADNgIACyACQQhqIQALIApBEGokACAAC18BA38CfwJAIAAoAjAiAkUNACABKAIAIQEgAEEwaiIDIQADQCAAIAIgAigCECABSCIEGyEAIAJBBEEAIAQbaigCACICDQALIAAgA0YNAEEBIAEgACgCEE4NARoLQQALC8QBAQV/AkACQCAAKAIEIgIgACgCCCIDSQRAIAIgAS0AADoAACACQQFqIQEMAQsgAiAAKAIAIgJrIgVBAWoiBEEASA0BIAVB/////wcgAyACayIDQQF0IgYgBCAEIAZJGyADQf////8DTxsiAwR/IAMQBgVBAAsiBGoiBiABLQAAOgAAIAUEQCAEIAIgBfwKAAALIAAgAyAEajYCCCAAIAZBAWoiATYCBCAAIAQ2AgAgAkUNACACEAULIAAgATYCBA8LEAsAC7ACAQV/AkACQAJAIAAsAAsiA0EATgRAQQohAiADQQpGDQEgACADQQFqQf8AcToACwwDCyAAKAIEIgMgACgCCEH/////B3FBAWsiAkcNAQsCQCACQfb///8HRwRAQff///8HIQMgACgCACAAIAAsAAtBAEgbIQUgAkHy////A00EQEELIAJBAWoiAyACQQF0IgQgAyAESxsiA0EHckEBaiADQQtJGyEDCyADEAYhBCACBEAgBCAFIAL8CgAACwJAQQENAEEBDQAgAiAEaiACIAVqIAb8CgAACyACQQpHBEAgBRAFCyAAIAQ2AgAgACADQYCAgIB4cjYCCAwBCxA+AAsgACACNgIEIAIhAwsgACADQQFqNgIEIAAoAgAhAAsgACADaiIAQQA6AAEgACABOgAAC2wBAn8CQAJAIAJBCk0EQCAAIAI6AAsMAQsgAkH3////B08NASACQQdyIgRBAWoQBiEDIAAgBEH/////B2s2AgggACADNgIAIAAgAjYCBCADIQALIAJBAWoiAgRAIAAgASAC/AoAAAsPCxA+AAtvAQZ8IAErAzAhBSABKwMAIQYgASsDGCEHIAAgASsDOCABKwMIIAIrAwAiA6IgAisDCCIEIAErAyCioKAgASsDQCABKwMQIAOiIAErAyggBKKgoCIIozkDCCAAIAUgBiADoiAEIAeioKAgCKM5AwALwAEBA38gAC0AAEEgcUUEQAJAIAAoAhAiAwR/IAMFIAAQ1gENASAAKAIQCyAAKAIUIgRrIAJJBEAgACABIAIgACgCJBEFABoMAQsCQAJAIAJFIAAoAlBBAEhyDQAgAiEDA0AgASADaiIFQQFrLQAAQQpHBEAgA0EBayIDDQEMAgsLIAAgASADIAAoAiQRBQAgA0kNAiACIANrIQIgACgCFCEEDAELIAEhBQsgBCAFIAIQfCAAIAAoAhQgAmo2AhQLCwt1AQF+IAAgASAEfiACIAN+fCADQiCIIgIgAUIgiCIEfnwgA0L/////D4MiAyABQv////8PgyIBfiIFQiCIIAMgBH58IgNCIIh8IAEgAn4gA0L/////D4N8IgFCIIh8NwMIIAAgBUL/////D4MgAUIghoQ3AwALUAEBfgJAIANBwABxBEAgASADQUBqrYYhAkIAIQEMAQsgA0UNACACIAOtIgSGIAFBwAAgA2utiIQhAiABIASGIQELIAAgATcDACAAIAI3AwgLaQEBfyMAQYACayIFJAAgBEGAwARxIAIgA0xyRQRAIAUgASACIANrIgNBgAIgA0GAAkkiARsQpAEgAUUEQANAIAAgBUGAAhAXIANBgAJrIgNB/wFLDQALCyAAIAUgAxAXCyAFQYACaiQAC5oBAgR/AX4CQCAAKAIAIgIoAgAgAigCBCICQQN2Qfz///8BcWoiAyAAKAIERiACQR9xIgQgACgCCEZxIAFBAExyDQADQCAAKQIEIganIQIgAAJ/IAZCIIgiBkIfUgRAIAanQQFqDAELIAAgAkEEaiICNgIEQQALIgU2AgggAiADRiAEIAVGcQ0BIAFBAUogAUEBayEBDQALCyAAC7EBAQN/AkAgAiAAKAIIQf////8HcUEBa0EKIAAsAAsiBEEASCIDGyIFIAAoAgQgBCADGyIDa00EQCACRQ0BIAAoAgAgACAEQQBIGyEEIAIEQCADIARqIAEgAvwKAAALIAIgA2ohAQJAIAAsAAtBAEgEQCAAIAE2AgQMAQsgACABQf8AcToACwsgASAEakEAOgAAIAAPCyAAIAUgAiADaiAFayADIANBACACIAEQogELIAAL8AMBBn8jAEHwAGsiBCQAIAEoAgAhAiAEQQhqIAAoAgAiAUHAAPwKAAAgBEEAOgBoIARBADoASCAEQcgAaiEDAkACQCABLQBgQQFGBEAgAyABKQJYNwIYIAMgASkCUDcCECADIAEpAkg3AgggAyABKQJANwIAIARBAToAaCABIAIpAgA3AgAgAUEIaiACQQhqIgdBOPwKAAAgAkHgAGohBiACQUBrIQAgAUFAayEFIAItAGBFDQEgBSAAKQIYNwIYIAUgACkCEDcCECAFIAApAgg3AgggBSAAKQIANwIAQQEhBQwCCyABIAIpAgA3AgAgAUEIaiACQQhqIgdBOPwKAAAgAkHgAGohBiACQUBrIQAgAi0AYEUNASABIAApAhg3AlggASAAKQIQNwJQIAEgACkCCDcCSCABIAApAgA3AkAgAUEBOgBgDAELIAFBADoAYEEBIQULIAIgBCkDCDcCACAHIARBEGpBOPwKAAACQCAFIAItAGAiAUYEQCABRQ0BIAAgAykCGDcCGCAAIAMpAhA3AhAgACADKQIINwIIIAAgAykCADcCAAwBCyABBEAgBkEAOgAADAELIAAgAykCGDcCGCAAIAMpAhA3AhAgACADKQIINwIIIAAgAykCADcCACAGQQE6AAALIARB8ABqJAALXAAgAEEANgIEIAAgATYCACAAIAMoAgg2AhAgACADKQIANwIIIANCADcCACADQQA2AgggAEEAOgBEIABBADoAQCAAQgA3AhQgAEIANwAZIABBBGogAkEEENgBIAALCwAgACABQQAQ/QMLKgAgACAAKAIQIAAoAgxrQQJ1QQFrIgAgASAAIAFIG0EAIAFBAE4bNgIwCwoAIAAgARD0AxoLQAECfyAAIAEQLCAAIAAoAgggAWoiAkEfcTYCCCAAIAAoAgQgAUEATgR/IAJBBXYFIAJBH2tBIG0LQQJ0ajYCBAvNCQIEfwR+IwBB8ABrIgYkACAEQv///////////wCDIQkCQAJAIAFQIgUgAkL///////////8AgyIKQoCAgICAgMD//wB9QoCAgICAgMCAgH9UIApQG0UEQCADQgBSIAlCgICAgICAwP//AH0iC0KAgICAgIDAgIB/ViALQoCAgICAgMCAgH9RGw0BCyAFIApCgICAgICAwP//AFQgCkKAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCEEIAEhAwwCCyADUCAJQoCAgICAgMD//wBUIAlCgICAgICAwP//AFEbRQRAIARCgICAgICAIIQhBAwCCyABIApCgICAgICAwP//AIWEUARAQoCAgICAgOD//wAgAiABIAOFIAIgBIVCgICAgICAgICAf4WEUCIFGyEEQgAgASAFGyEDDAILIAMgCUKAgICAgIDA//8AhYRQDQEgASAKhFAEQCADIAmEQgBSDQIgASADgyEDIAIgBIMhBAwCCyADIAmEUEUNACABIQMgAiEEDAELIAMgASABIANUIAkgClYgCSAKURsiCBshCiAEIAIgCBsiDEL///////8/gyEJIAIgBCAIGyILQjCIp0H//wFxIQcgDEIwiKdB//8BcSIFRQRAIAZB4ABqIAogCSAKIAkgCVAiBRt5QsAAQgAgBRt8pyIFQQ9rEBkgBikDaCEJIAYpA2AhCkEQIAVrIQULIAEgAyAIGyEDIAtC////////P4MhASAHBH4gAQUgBkHQAGogAyABIAMgASABUCIHG3lCwABCACAHG3ynIgdBD2sQGUEQIAdrIQcgBikDUCEDIAYpA1gLQgOGIANCPYiEQoCAgICAgIAEhCEBIAlCA4YgCkI9iIQgAiAEhSEEAn4gA0IDhiICIAUgB0YNABogBSAHayIHQf8ASwRAQgAhAUIBDAELIAZBQGsgAiABQYABIAdrEBkgBkEwaiACIAEgBxBYIAYpAzghASAGKQMwIAYpA0AgBikDSIRCAFKthAshCUKAgICAgICABIQhCyAKQgOGIQoCQCAEQgBTBEBCACEDQgAhBCAJIAqFIAEg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IAIgAigCBCIBKAIAIgM2AgQgAwRAIAMgAjYCCAsgASACKAIIIgM2AggCQCADKAIAIAJGBEAgAyABNgIADAELIAMgATYCBAsgASACNgIAIAIgATYCCAsgACAAKAIIQQFqNgIIC5MBAQJ/QdoBIQQDQCAAIANqIAQgASADai0AAGogAiADai0AAGtBgP4DaiIEOgAAIARBCHYhBCADQQFqIgNBH0cNAAsgACABLQAfIAItAB9rIARqIgFB/wBxOgAfIAFBB3ZBE2whBEEAIQMDQCAAIANqIgEgBCABLQAAaiIBOgAAIAFBCHYhBCADQQFqIgNBIEcNAAsLKgAgAgRAA0AgASAAKAIARgRAIAAPCyAAQQRqIQAgAkEBayICDQALC0EAC0EBAX8gACABNwNwIAAgACgCLCAAKAIEIgJrrDcDeCAAIAFQIAEgACgCCCIAIAJrrFlyBH8gAAUgAiABp2oLNgJoCzoBAX8gACgCDCIBBEAgACABNgIQIAAoAhQaIAEQBQsgACgCACIBBEAgACABNgIEIAAoAggaIAEQBQsLlwMBBX8jAEEgayIGJAACQAJAIAAoAgQiAyAAKAIIIgJJBEAgASgCACECIAFBADYCACADIAI2AgAgA0EEaiEBDAELIAMgACgCACIEa0ECdSIFQQFqIgNBgICAgARPDQEgBkEMakH/////AyACIARrIgJBAXUiBCADIAMgBEkbIAJB/P///wdPGyAFIAAQPyIDKAIIIQIgASgCACEEIAFBADYCACACIAQ2AgAgAyACQQRqNgIIIAMoAgQgACgCBCAAKAIAIgJrIgFrIQQgAQRAIAQgAiAB/AoAAAsgACgCACECIAAgBDYCACADIAI2AgQgACADKAIIIgE2AgQgAyACNgIIIAAoAgghBCAAIAMoAgw2AgggAyACNgIAIAMgBDYCDCADKAIEIgUgAygCCCICRwRAA0AgAyACQQRrIgI2AgggAigCACEEIAJBADYCACAEBEAgBCAEKAIAKAIEEQAAIAMoAgghAgsgAiAFRw0ACwsgAygCACICBEAgAygCDBogAhAFCwsgACABNgIEIAZBIGokAA8LEAsACysAIAEgACgCCCAAKAIAa0ECdUsEQCAAQSAgASABQSBNGxBhCyAAIAEQmgELrwIBBX8gACgCACICIQYCQCACKAIEIAAoAgQgAigCAGprQQN0IAAoAghrIAFIIAFBIWtBYElyDQAgACgCCCIEQQBKBEAgBigCACAAKAIEai0AACAAIAQgAUEIIARrIgMgASADSBsiAmoiBDYCCEH/AUEIIAJrdiADIAJrIgN0cSABIAJrIQEgBEEIRgRAIABBADYCCCAAIAAoAgRBAWo2AgQLIAN2IQMgAUEATA0BCyABQQhPBEAgBigCACEFIAAoAgQhBANAIAQgBWotAAAgACAEQQFqIgQ2AgQgA0EIdHIhAyABIgJBCGshASACQQ9LDQALIAFFDQELIAYoAgAgACgCBGotAAAhAiAAIAAoAgggAWo2AgggAyABdCACQYB+IAF1cUEIIAFrdnIhAwsgAwsJAEHMChCOAgALCQBBzA4QmAIAC2AAIAAgAzYCEEEAIQMgAEEANgIMAkAgAQRAIAFBgICAgARPDQEgAUECdBAGIQMLIAAgAzYCACAAIAMgAkECdGoiAjYCCCAAIAMgAUECdGo2AgwgACACNgIEIAAPCxAmAAtDAQF/IABBADYCCCAAQgA3AgAgAQRAIAAgARBmIAAoAgQhAiABQQJ0IgEEQCACQQAgAfwLAAsgACABIAJqNgIECyAAC84BAgR+An8jAEEQayIGJAAgAb0iBUL/////////B4MhAiAAAn4gBUI0iEL/D4MiA1BFBEAgA0L/D1IEQCACQgSIIQQgA0KA+AB8IQMgAkI8hgwCCyACQgSIIQRC//8BIQMgAkI