@idscan/idvc2 2.8.4 → 2.8.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/README.md +8 -0
- package/dist/idvc.js +36085 -1612
- package/dist/idvc.js.gzip +0 -0
- package/dist/index.html +4 -4
- package/dist/js/environment/langs.js +258 -1
- package/dist/langs.js.gzip +0 -0
- package/dist/networks/Blur-chunk.js +587 -1
- package/dist/networks/Bubble-chunk.js +438 -1
- package/dist/networks/ClassLocal-chunk.js +535 -1
- package/dist/networks/Face-chunk.js +2157 -1
- package/dist/networks/MRZ-chunk.js +1419 -1
- package/dist/networks/PDF-chunk.js +1007 -1
- package/dist/networks/ZXing-chunk.js +351 -1
- package/dist/networks/angle03032023.onnx.gzip +0 -0
- package/dist/networks/blurWorker.js.gzip +0 -0
- package/dist/networks/bubbleWorker.js.gzip +0 -0
- package/dist/networks/classLocal03032023.onnx.gzip +0 -0
- package/dist/networks/faceDetection03032023.onnx.gzip +0 -0
- package/dist/networks/faceLandmark03032023.onnx.gzip +0 -0
- package/dist/networks/mrz03032023.onnx.gzip +0 -0
- package/dist/networks/mrzWorker.js.gzip +0 -0
- package/dist/networks/ort-wasm-simd.wasm.gzip +0 -0
- package/dist/networks/ort-wasm.wasm.gzip +0 -0
- package/dist/networks/pdfWorker.js.gzip +0 -0
- package/dist/types/modules/Config.d.ts +6 -2
- package/dist/types/modules/camera/cameraManager.d.ts +6 -2
- package/dist/types/modules/gzip.d.ts +3 -0
- package/dist/types/modules/uploader.d.ts +8 -8
- package/dist/types/neural models/neuralModel.d.ts +1 -1
- package/dist/types/types/modules/camera.d.ts +4 -0
- package/package.json +5 -1
- package/dist/networks/angle03032023.onnx +0 -0
- package/dist/networks/blurWorker.js +0 -5
- package/dist/networks/bubbleWorker.js +0 -1
- package/dist/networks/classLocal03032023.onnx +0 -0
- package/dist/networks/faceDetection03032023.onnx +0 -0
- package/dist/networks/faceLandmark03032023.onnx +0 -0
- package/dist/networks/mrz03032023.onnx +0 -0
- package/dist/networks/mrzWorker.js +0 -5
- package/dist/networks/ort-wasm-simd-threaded.wasm +0 -0
- package/dist/networks/ort-wasm-simd.wasm +0 -0
- package/dist/networks/ort-wasm-threaded.wasm +0 -0
- package/dist/networks/ort-wasm.wasm +0 -0
- package/dist/networks/pdfWorker.js +0 -9
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -102,12 +102,16 @@ export interface IConfig {
|
|
|
102
102
|
/** callback-function which will be called after guidelines button. */
|
|
103
103
|
clickGuidlines?: () => void;
|
|
104
104
|
/** function which will be called after each step completes */
|
|
105
|
-
onChange?: (data:
|
|
105
|
+
onChange?: (data: {
|
|
106
|
+
step: IStepCallback;
|
|
107
|
+
}) => void;
|
|
106
108
|
/**
|
|
107
109
|
* function which will be called after the retake button is clicked
|
|
108
110
|
* @param data - Step object of current step
|
|
109
111
|
*/
|
|
110
|
-
onRetakeHook?: (data:
|
|
112
|
+
onRetakeHook?: (data: {
|
|
113
|
+
step: IStepCallback;
|
|
114
|
+
}) => void;
|
|
111
115
|
/** the function that will be called on the component mounted. */
|
|
112
116
|
onMounted?: () => void;
|
|
113
117
|
/**
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import { CameraObjects, IAdditionalConstrains, StartCamera, VideoDevice } from '../../types/modules/camera';
|
|
1
|
+
import { CameraObjects, CameraMapType, IAdditionalConstrains, StartCamera, VideoDevice } from '../../types/modules/camera';
|
|
2
2
|
import { CameraError } from '../initErrorHandler';
|
|
3
3
|
/**
|
|
4
4
|
* all available cameras
|
|
5
5
|
*/
|
|
6
6
|
export declare const cameraObjects: CameraObjects;
|
|
7
|
+
export declare const cameraTypes: CameraMapType[];
|
|
7
8
|
export declare const stopTrack: (mediaStream: MediaStream) => void;
|
|
8
|
-
export declare const fillVideoDevices: (additionalConstrains: IAdditionalConstrains) => Promise<
|
|
9
|
+
export declare const fillVideoDevices: (additionalConstrains: IAdditionalConstrains) => Promise<{
|
|
10
|
+
cameraObjects: VideoDevice[];
|
|
11
|
+
cameraTypes: CameraMapType[];
|
|
12
|
+
} | CameraError>;
|
|
9
13
|
export declare const startCamera: StartCamera;
|
|
@@ -14,6 +14,14 @@ interface ISmallStep {
|
|
|
14
14
|
declare class Uploader {
|
|
15
15
|
private onsubmit;
|
|
16
16
|
private onHandle;
|
|
17
|
+
protected textFront: HTMLElement;
|
|
18
|
+
protected textBack: HTMLElement;
|
|
19
|
+
protected textFace: HTMLElement;
|
|
20
|
+
protected textPdf: HTMLElement;
|
|
21
|
+
protected textMrz: HTMLElement;
|
|
22
|
+
protected textFrontBack: HTMLElement;
|
|
23
|
+
protected textPass: HTMLElement;
|
|
24
|
+
protected textFacePosition: HTMLElement;
|
|
17
25
|
private states;
|
|
18
26
|
private readonly types;
|
|
19
27
|
private dropArea;
|
|
@@ -23,14 +31,6 @@ declare class Uploader {
|
|
|
23
31
|
private errorTextEl;
|
|
24
32
|
private pressToUpdate;
|
|
25
33
|
private readonly translation;
|
|
26
|
-
protected textFront: HTMLElement;
|
|
27
|
-
protected textBack: HTMLElement;
|
|
28
|
-
protected textFace: HTMLElement;
|
|
29
|
-
protected textPdf: HTMLElement;
|
|
30
|
-
protected textMrz: HTMLElement;
|
|
31
|
-
protected textFrontBack: HTMLElement;
|
|
32
|
-
protected textPass: HTMLElement;
|
|
33
|
-
protected textFacePosition: HTMLElement;
|
|
34
34
|
private moduleController;
|
|
35
35
|
private addedFileTypes;
|
|
36
36
|
constructor(uploaderId: string, type: ISmallStep, onsubmit: SubmitHandler, onHandle: () => void, moduleController: any, addedFileTypes: string[]);
|
|
@@ -12,7 +12,7 @@ declare abstract class NeuralModel {
|
|
|
12
12
|
initialize(): Promise<void>;
|
|
13
13
|
createSrc(input: HTMLCanvasElement | HTMLImageElement | HTMLVideoElement | ImageData, id?: string): HTMLCanvasElement | HTMLVideoElement;
|
|
14
14
|
prepareUri(url: string): void;
|
|
15
|
-
initWasmPath(): void
|
|
15
|
+
initWasmPath(): Promise<void>;
|
|
16
16
|
initWasm(): Promise<void>;
|
|
17
17
|
init(): Promise<void>;
|
|
18
18
|
abstract predict(rgb: RGBColor32): any;
|
|
@@ -12,6 +12,10 @@ interface StartCameraParams {
|
|
|
12
12
|
readonly additionalConstrains: IAdditionalConstrains;
|
|
13
13
|
}
|
|
14
14
|
export type CameraObjects = VideoDevice[];
|
|
15
|
+
export type CameraMapType = {
|
|
16
|
+
deviceId: string;
|
|
17
|
+
cameraType: CameraType;
|
|
18
|
+
};
|
|
15
19
|
/**
|
|
16
20
|
* @param cameraLabel - label returned from mediaDevices.enumerateDevices
|
|
17
21
|
* @returns true if label contains back camera keywords
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@idscan/idvc2",
|
|
3
|
-
"version": "2.8.
|
|
3
|
+
"version": "2.8.6",
|
|
4
4
|
"description": "component for the capturing documents",
|
|
5
5
|
"main": "dist/idvc.js",
|
|
6
6
|
"types": "dist/types/idvc.d.ts",
|
|
@@ -28,10 +28,12 @@
|
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@swc/core": "1.3.59",
|
|
31
|
+
"@types/pako": "^2.0.3",
|
|
31
32
|
"@typescript-eslint/eslint-plugin": "5.59.6",
|
|
32
33
|
"@typescript-eslint/parser": "5.59.6",
|
|
33
34
|
"acorn": "8.8.2",
|
|
34
35
|
"args-parser": "1.3.0",
|
|
36
|
+
"compression-webpack-plugin": "^11.0.0",
|
|
35
37
|
"copy-webpack-plugin": "11.0.0",
|
|
36
38
|
"css-loader": "6.7.4",
|
|
37
39
|
"eslint": "8.41.0",
|
|
@@ -47,6 +49,7 @@
|
|
|
47
49
|
"jest": "29.5.0",
|
|
48
50
|
"jsdom": "22.0.0",
|
|
49
51
|
"mini-css-extract-plugin": "2.7.6",
|
|
52
|
+
"remove-files-webpack-plugin": "^1.5.0",
|
|
50
53
|
"sass": "1.62.0",
|
|
51
54
|
"sass-loader": "13.2.1",
|
|
52
55
|
"string-replace-loader": "3.1.0",
|
|
@@ -68,6 +71,7 @@
|
|
|
68
71
|
"detect-browser": "5.3.0",
|
|
69
72
|
"mobile-detect": "1.4.5",
|
|
70
73
|
"onnxruntime-web": "1.14.0",
|
|
74
|
+
"pako": "^2.1.0",
|
|
71
75
|
"process": "0.11.10",
|
|
72
76
|
"regenerator-runtime": "0.13.11",
|
|
73
77
|
"stream-browserify": "3.0.0",
|
|
Binary file
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
var __webpack_exports__={},BlurDetector=(()=>{var A="file:///home/vsts/work/1/s/src/core/blurCore.js";return function(g={}){C||(C=void 0!==g?g:{}),C.ready=new Promise((A,g)=>{B=A,Q=g});var I,C,B,Q,E,i=Object.assign({},C),n="object"==typeof window,o="function"==typeof importScripts,r="";(n||o)&&(o?r=self.location.href:"undefined"!=typeof document&&document.currentScript&&(r=document.currentScript.src),A&&(r=A),r=0!==r.indexOf("blob:")?r.substr(0,r.replace(/[?#].*/,"").lastIndexOf("/")+1):"",o&&(E=A=>{try{var g=new XMLHttpRequest;return g.open("GET",A,!1),g.responseType="arraybuffer",g.send(null),new Uint8Array(g.response)}catch(g){if(A=Ah(A))return A;throw g}}));var t=C.printErr||console.error.bind(console);Object.assign(C,i),i=null,C.wasmBinary&&(e=C.wasmBinary),C.noExitRuntime,"object"!=typeof WebAssembly&&k("no native wasm support detected");var e,a,c,s,D,h,u,y,w,f,l=!1;function N(){var A=a.buffer;C.HEAP8=c=new Int8Array(A),C.HEAP16=D=new Int16Array(A),C.HEAP32=u=new Int32Array(A),C.HEAPU8=s=new Uint8Array(A),C.HEAPU16=h=new Uint16Array(A),C.HEAPU32=y=new Uint32Array(A),C.HEAPF32=w=new Float32Array(A),C.HEAPF64=f=new Float64Array(A)}var F,R=[],G=[],d=[],Y=0,M=null,p=null;function k(A){throw C.onAbort&&C.onAbort(A),t(A="Aborted("+A+")"),l=!0,Q(A=new WebAssembly.RuntimeError(A+". Build with -sASSERTIONS for more info.")),A}var U,S="data:application/octet-stream;base64,";if(!(U="data:application/octet-stream;base64,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AX8gAgRAIAAhAwNAIAMgAS0AADoAACADQQFqIQMgAUEBaiEBIAJBAWsiAg0ACwsgAAsLACABIAIgABA3GgsbAQF/IAAQGARAIAAoAgAhASAAEDwaIAEQDwsLCQAgACABNgIEC3oBA38CQAJAIAAiAUEDcUUNACAALQAARQRAQQAPCwNAIAFBAWoiAUEDcUUNASABLQAADQALDAELA0AgASICQQRqIQEgAigCACIDQX9zIANBgYKECGtxQYCBgoR4cUUNAAsDQCACIgFBAWohAiABLQAADQALCyABIABrC9AEAQd/IwBBIGsiAyQAIANBFWoiBCADQSBqIgdGIAFBAE5yBH8gBAUgBEEtOgAAQQAgAWshASAEQQFqCyECIAMCfyAHIgUgAmsiBkEJTARAQT0gBkEgIAFBAXJna0HRCWxBDHUiCCAIQQJ0QdAXaigCACABTWpIDQEaCwJ/IAFBv4Q9TQRAIAFBj84ATQRAIAFB4wBNBEAgAUEJTQRAIAIgARAZDAQLIAIgARARDAMLIAFB5wdNBEAgAiABQeQAbiICEBkgASACQeQAbGsQEQwDCyACIAEQKgwCCyABQZ+NBk0EQCACIAFBkM4AbiICEBkgASACQZDOAGxrECoMAgsgAiABECkMAQsgAUH/wdcvTQRAIAFB/6ziBE0EQCACIAFBwIQ9biICEBkgASACQcCEPWxrECkMAgsgAiABECgMAQsgAUH/k+vcA00EQCACIAFBgMLXL24iAhAZIAEgAkGAwtcvbGsQKAwBCyACIAFBgMLXL24iAhARIAEgAkGAwtcvbGsQKAshBUEACzYCECADIAU2AgwgAygCDCEDIwBBEGsiBiQAIwBBEGsiAiQAAkAgAyAEayIFQe////8HTQRAAkAgBRA9BEAgACAFECQgACEBDAELIAJBCGogACAFECdBAWoQKyACKAIMGiAAIAIoAggiARAlIAAgAigCDBAmIAAgBRAgCwNAIAMgBEcEQCABIAQQFyABQQFqIQEgBEEBaiEEDAELCyACQQA6AAcgASACQQdqEBcgAkEQaiQADAELECMACyAGQRBqJAAgByQACwgAQbkJED4ACyEAIAAgAC0AC0GAAXEgAXI6AAsgACAALQALQf8AcToACwsJACAAIAE2AgALLgAgACAAKAIIQYCAgIB4cSABQf////8HcXI2Aggg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IAQgBjYCACADIAg2AhAgBCgCBCEGIAQgAygCFDYCBCADIAY2AhQgBCgCCCEGIAQgAygCGDYCCCADIAY2AhggAyADKAIQNgIMIAMoAhAhBgNAIAYgAygCFCIIRwRAIAMgCEEgayIINgIUIAgQDRoMAQsLIAMoAgwiBgRAIAYQDwsgA0EgaiQACyABQYABaiEBIAcQDRoMAQsACwALCyAKQTBqJABBggFB5X4gACgCECIWIAAoAgwiAmtBBXVBe2wiASABQeV+TBtB4QFqIgEgAUGCAU8bIRdBACEEQQAhAwNAIAIgFkYEQCAAIAMgACgCECAAKAIMa0EFdSIBRwR9IASyIAEgA2uzlQVDAACAPws4ApABAkAgBSgCBCIBIAUoAghJBEAgASAAKgKQATgCACAFIAFBBGo2AgQMAQsjAEEgayIBJAAgBSgCBCAFKAIAa0ECdUEBaiICQYCAgIAETwRAEDMAC0H/////AyAFKAIIIAUoAgBrIgNBAXUiBCACIAIgBEkbIANB/P///wdPGyECIAUoAgQgBSgCAGtBAnUhA0EAIQQgAUEANgIYIAEgBUEIajYCHCACBEAgAkGAgICABE8EQBAyAAsgAkECdBASIQQLIAEgBDYCDCABIAQgA0ECdGoiAzYCFCABIAQgAkECdGo2AhggASADNgIQIAEoAhQiAiAAKgKQATgCACABIAJBBGo2AhQgASgCECEDIAUoAgAhAiAFKAIEIQQDQCACIARHBEAgA0EEayIDIARBBGsiBCoCADgCAAwBCwsgASADNgIQIAUoAgAhAiAFIAM2AgAgASACNgIQIAUoAgQhAiAFIAEoAhQ2AgQgASACNgIUIAUoAgghAiAFIAEoAhg2AgggASACNgIYIAEgASgCEDYCDCABKAIQIQMgASgCFCECA0AgAiADRwRAIAEgAkEEayICNgIUDAELCyABKAIMIgIEQCACEA8LIAFBIGokAAsjAEEQayIBJAAgASAAQQxqNgIMIAEoAgwiAigCAARAIAIQNCABKAIMKAIAEA8LIAFBEGokACAAQRhqEA0aIABBOGoQDRogExANGiAAQbABaiQABUEAIQYjAEGwA2siASQAIAFCADcD+AEgAUIANwPwASABQfACaiACIgcgAUHwAWoQGgJAIAErA5ADRAAAAAAAADRAYw0AIAcoAgwhAiAHKAIIIQYgAUIANwLgAiABIAYgAiACIAZKG0ECbSICNgLsAiABIAI2AugCIAEgAjYC3AIgASACNgLYAiABQQA2AtQCIAEgAjYC0AIgASACNgLMAiABIAI2AsgCIAEgAjYCxAIgASACNgLAAiABIAI2ArwCIAEgAjYCuAIgASACNgK0AiABQQA2ArACIAFBsAFqIgYgByABQeACahAbIAFCADcDeCABQgA3A3AgAUHwAWogBiABQfAAaiICEBogBhANGiACIAcgAUHQAmoQGyABQgA3AzggAUIANwMwIAYgAiABQTBqIgYQGiACEA0aIAYgByABQcACahAbIAFCADcDGCABQgA3AxAgAiAGIAFBEGoiAhAaIAYQDRogAiAHIAFBsAJqEBsgAUIANwMIIAFCADcDACAGIAIgARAaIAIQDRpBASEGIAErA/ABIhwgASsD8AIiG0SamZmZmZnpP6IiHWMNACAcIBtEMzMzMzMz8z+iIhtkDQAgASsDsAEiHCAdYyAbIBxjcg0AIAErA3AiHCAdYyAbIBxjcg0AIB0gASsDMCIcZCAbIBxjciEGCyABQbADaiQAAkAgBkUEQCAHKAIMIQEgBygCCCECIABBADYCgAEgAEGQAWoiDyACIAEgAEGAAWoQLCAHKAIAIQggACgCkAEhCSAHKAIMIQIgBygCCCEBIAcQFiEKQQAhCyABQQNOBEAgAUEDayEQIAIgCmwiAUECayESIAFBAXQhESABQQNIIQ4DQCABIAlqIQlBASEGIA5FBEADQEEAIQIgCkEASgRAIAYgCWohFANAIAIgFGpB/wEgAiAIaiAGaiINIAFqIgxBAWstAAAgDS0AAGogDC0AAEECdGsgDC0AAWogDSARai0AAGoiDSANQf8BThsiDUEAIA1BAEobOgAAIAJBAWoiAiAKRw0ACwsgBiASRiECIAZBAWohBiACRQ0ACwsgASAIaiEIIAsgEEchAiALQQFqIQsgAg0ACwsgBygCDCEBIAcoAgghAiAAQoqAgICgATcCgAEgACACQQtrNgKMASAAIAFBC2s2AogBQQAhCCMAQTBrIgokACAPKAIIIQYCQAJAAkAgACgCiAEiCUEASgRAIAAoAowBIgtBAEoNAQsgDygCDCEBQQAhAgwBCwJAIAAoAoABIgIgDygCDCIBTg0AIAAoAoQBIgggBk4NACACIAlqIglBAkgNACAIIAtqIgtBAkgNACACQQAgAkEAShsiAiABIAkgASAJSBtODQAgBiALIAYgC0gbIAhBACAIQQBKGyIIayIGQQBKDQELIABCADcAeAwBCyAPKAIQIRAgDygCACENIA8QFiEJIApC/////w83AiAgACAGQQBKBH4gBiAIaiEUIApBIGohCyACIA1qIAggEGxqIQIgCUF+cSEYIAlBAXEhGSABIAlsIRIgCkEkaiENA0AgEkEASgRAIAIgEmohGiACIQEDQAJAIAlBAEwNAEEAIQZBACERIAlBAUcEQANAIAYgC2oiDiABIAZqLQAAIgwgDi0AACIOIAwgDkkbOgAAIAYgDWoiDiAOLQAAIg4gDCAMIA5JGzoAACALIAZBAXIiDmoiFSABIA5qLQAAIgwgFS0AACIVIAwgFUkbOgAAIA0gDmoiDiAOLQAAIg4gDCAMIA5JGzoAACAGQQJqIQYgEUECaiIRIBhHDQALCyAZRQ0AIAYgC2oiESABIAZqLQAAIgwgES0AACIRIAwgEUkbOgAAIAYgDWoiBiAGLQAAIgYgDCAGIAxLGzoAAAsgASAJaiIBIBpJDQALCyACIBBqIQIgCEEBaiIIIBRIDQALIAopAiAFQv////8PCzcAeAsgCkEwaiQAIAQgFyAALQB8SWohBCAPEA0aDAELIANBAWohAwsgB0EgaiECDAELCwsLzRgEAEGACAuGCAEAAAADAAAABAAAAAMAAAB1bnNpZ25lZCBzaG9ydAB1bnNpZ25lZCBpbnQAZmxvYXQAdWludDY0X3QAdmVjdG9yAHVuc2lnbmVkIGNoYXIAc3RkOjpleGNlcHRpb24AQmx1ckRldGVjdExpYlZlcnNpb24AYm9vbABlbXNjcmlwdGVuOjp2YWwAYmFkX2FycmF5X25ld19sZW5ndGgAdW5zaWduZWQgbG9uZwBzdGQ6OndzdHJpbmcAYmFzaWNfc3RyaW5nAHN0ZDo6c3RyaW5nAHN0ZDo6dTE2c3RyaW5nAHN0ZDo6dTMyc3RyaW5nAGRvdWJsZQB2b2lkAHN0ZDo6YmFkX2FsbG9jAEJsdXJBbmFseXRpY0RldGVjdFdBU00AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2hvcnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGludD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8ZmxvYXQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDhfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDE2X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDE2X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQ2NF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ2NF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8Y2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgY2hhcj4Ac3RkOjpiYXNpY19zdHJpbmc8dW5zaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2lnbmVkIGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGxvbmc+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGxvbmc+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGRvdWJsZT4ALgBOMTJfR0xPQkFMX19OXzEyOERldGVjdG9ySW1wbE1hbldpdGhvdXRPcGVuQ3ZFAE40Ymx1cjhEZXRlY3RvckUAQZAQC7IHeA4AAGAIAAAwDgAAMA4AAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFAACUDgAAIAgAAGZpaWlpAAAAYAgAAGlpAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0loTlNfMTFjaGFyX3RyYWl0c0loRUVOU185YWxsb2NhdG9ySWhFRUVFAAAAlA4AAHcIAABOU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFRQAAlA4AAMAIAABOU3QzX18yMTJiYXNpY19zdHJpbmdJRHNOU18xMWNoYXJfdHJhaXRzSURzRUVOU185YWxsb2NhdG9ySURzRUVFRQAAAJQOAAAICQAATlN0M19fMjEyYmFzaWNfc3RyaW5nSURpTlNfMTFjaGFyX3RyYWl0c0lEaUVFTlNfOWFsbG9jYXRvcklEaUVFRUUAAACUDgAAVAkAAE4xMGVtc2NyaXB0ZW4zdmFsRQAAlA4AAKAJAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0ljRUUAAJQOAAC8CQAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJYUVFAACUDgAA5AkAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWhFRQAAlA4AAAwKAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lzRUUAAJQOAAA0CgAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJdEVFAACUDgAAXAoAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWlFRQAAlA4AAIQKAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lqRUUAAJQOAACsCgAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJbEVFAACUDgAA1AoAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SW1FRQAAlA4AAPwKAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0l4RUUAAJQOAAAkCwAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJeUVFAACUDgAATAsAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWZFRQAAlA4AAHQLAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lkRUUAAJQOAACcCwBB1BcLzggKAAAAZAAAAOgDAAAQJwAAoIYBAEBCDwCAlpgAAOH1BQDKmjsAAAAAAAAAADAwMDEwMjAzMDQwNTA2MDcwODA5MTAxMTEyMTMxNDE1MTYxNzE4MTkyMDIxMjIyMzI0MjUyNjI3MjgyOTMwMzEzMjMzMzQzNTM2MzczODM5NDA0MTQyNDM0NDQ1NDY0NzQ4NDk1MDUxNTI1MzU0NTU1NjU3NTg1OTYwNjE2MjYzNjQ2NTY2Njc2ODY5NzA3MTcyNzM3NDc1NzY3Nzc4Nzk4MDgxODI4Mzg0ODU4Njg3ODg4OTkwOTE5MjkzOTQ5NTk2OTc5ODk5TjEwX19jeHhhYml2MTE2X19zaGltX3R5cGVfaW5mb0UAAAAAvA4AAMgMAAAcEAAATjEwX19jeHhhYml2MTE3X19jbGFzc190eXBlX2luZm9FAAAAvA4AAPgMAADsDAAATjEwX19jeHhhYml2MTE3X19wYmFzZV90eXBlX2luZm9FAAAAvA4AACgNAADsDAAATjEwX19jeHhhYml2MTE5X19wb2ludGVyX3R5cGVfaW5mb0UAvA4AAFgNAABMDQAAAAAAAMwNAAANAAAADgAAAA8AAAAQAAAAEQAAAE4xMF9fY3h4YWJpdjEyM19fZnVuZGFtZW50YWxfdHlwZV9pbmZvRQC8DgAApA0AAOwMAAB2AAAAkA0AANgNAABiAAAAkA0AAOQNAABjAAAAkA0AAPANAABoAAAAkA0AAPwNAABhAAAAkA0AAAgOAABzAAAAkA0AABQOAAB0AAAAkA0AACAOAABpAAAAkA0AACwOAABqAAAAkA0AADgOAABsAAAAkA0AAEQOAABtAAAAkA0AAFAOAAB4AAAAkA0AAFwOAAB5AAAAkA0AAGgOAABmAAAAkA0AAHQOAABkAAAAkA0AAIAOAAAAAAAAHA0AAA0AAAASAAAADwAAABAAAAATAAAAFAAAABUAAAAWAAAAAAAAAAQPAAANAAAAFwAAAA8AAAAQAAAAEwAAABgAAAAZAAAAGgAAAE4xMF9fY3h4YWJpdjEyMF9fc2lfY2xhc3NfdHlwZV9pbmZvRQAAAAC8DgAA3A4AABwNAAAAAAAAdA8AAAIAAAAbAAAAHAAAAAAAAACcDwAAAgAAAB0AAAAeAAAAAAAAAFwPAAACAAAAHwAAACAAAABTdDlleGNlcHRpb24AAAAAlA4AAEwPAABTdDliYWRfYWxsb2MAAAAAvA4AAGQPAABcDwAAU3QyMGJhZF9hcnJheV9uZXdfbGVuZ3RoAAAAALwOAACADwAAdA8AAAAAAADMDwAAAQAAACEAAAAiAAAAU3QxMWxvZ2ljX2Vycm9yALwOAAC8DwAAXA8AAAAAAAAAEAAAAQAAACMAAAAiAAAAU3QxMmxlbmd0aF9lcnJvcgAAAAC8DgAA7A8AAMwPAABTdDl0eXBlX2luZm8AAAAAlA4AAAwQAEGoIAsrRBAAAAMAAAAEAAAABQAAAAYAAACUDgAA9gcAALwOAADHBwAAPBAAAGASAQ==").startsWith(S)){var H=U;U=C.locateFile?C.locateFile(H,r):r+H}function b(A){try{if(A==U&&e)return new Uint8Array(e);var g=Ah(A);if(g)return g;if(E)return E(A);throw"both async and sync fetching of the wasm failed"}catch(A){k(A)}}function m(A,g,I){return(!e&&(n||o)&&"function"==typeof fetch?fetch(A,{credentials:"same-origin"}).then(g=>{if(!g.ok)throw"failed to load wasm binary file at '"+A+"'";return g.arrayBuffer()}).catch(()=>b(A)):Promise.resolve().then(()=>b(A))).then(A=>WebAssembly.instantiate(A,g)).then(A=>A).then(I,A=>{t("failed to asynchronously prepare wasm: "+A),k(A)})}function W(A){for(;0<A.length;)A.shift()(C)}function J(A){this.u=A-24,this.F=function(A){y[this.u+4>>2]=A},this.D=function(A){y[this.u+8>>2]=A},this.C=function(A,g){this.B(),this.F(A),this.D(g)},this.B=function(){y[this.u+16>>2]=0}}var v=0,L=0;function K(A){switch(A){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw TypeError(`Unknown type size: ${A}`)}}var T=void 0;function j(A){for(var g="";s[A];)g+=T[s[A++]];return g}var X={},Z={},V={};function x(A){if(void 0===A)return"_unknown";var g=(A=A.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return 48<=g&&57>=g?`_${A}`:A}function q(A,g){return({[A=x(A)]:function(){return g.apply(this,arguments)}})[A]}function O(A){var g=Error,I=q(A,function(g){this.name=A,this.message=g,void 0!==(g=Error(g).stack)&&(this.stack=this.toString()+"\n"+g.replace(/^Error(:[^\n]*)?\n/,""))});return I.prototype=Object.create(g.prototype),I.prototype.constructor=I,I.prototype.toString=function(){return void 0===this.message?this.name:`${this.name}: ${this.message}`},I}var z=void 0;function P(A){throw new z(A)}var _=void 0;function $(A,g,I={}){if(!("argPackAdvance"in g))throw TypeError("registerType registeredInstance requires argPackAdvance");var C=g.name;if(A||P(`type "${C}" must have a positive integer typeid pointer`),Z.hasOwnProperty(A)){if(I.H)return;P(`Cannot register type '${C}' twice`)}Z[A]=g,delete V[A],X.hasOwnProperty(A)&&(g=X[A],delete X[A],g.forEach(A=>A()))}var AA=new function(){this.u=[void 0],this.C=[],this.get=function(A){return this.u[A]},this.has=function(A){return void 0!==this.u[A]},this.D=function(A){var g=this.C.pop()||this.u.length;return this.u[g]=A,g},this.F=function(A){this.u[A]=void 0,this.C.push(A)}},Ag=A=>{switch(A){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return AA.D({I:1,value:A})}};function AI(A){return this.fromWireType(u[A>>2])}function AC(A){for(;A.length;){var g=A.pop();A.pop()(g)}}var AB=void 0;function AQ(A){var g=j(A=Aw(A));return Af(A),g}var AE="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0,Ai="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function An(A,g){for(var I=A>>1,C=I+g/2;!(I>=C)&&h[I];)++I;if(32<(I<<=1)-A&&Ai)return Ai.decode(s.subarray(A,I));for(C=0,I="";!(C>=g/2);++C){var B=D[A+2*C>>1];if(0==B)break;I+=String.fromCharCode(B)}return I}function Ao(A,g,I){if(void 0===I&&(I=2147483647),2>I)return 0;I-=2;var C=g;I=I<2*A.length?I/2:A.length;for(var B=0;B<I;++B)D[g>>1]=A.charCodeAt(B),g+=2;return D[g>>1]=0,g-C}function Ar(A){return 2*A.length}function At(A,g){for(var I=0,C="";!(I>=g/4);){var B=u[A+4*I>>2];if(0==B)break;++I,65536<=B?(B-=65536,C+=String.fromCharCode(55296|B>>10,56320|1023&B)):C+=String.fromCharCode(B)}return C}function Ae(A,g,I){if(void 0===I&&(I=2147483647),4>I)return 0;var C=g;I=C+I-4;for(var B=0;B<A.length;++B){var Q=A.charCodeAt(B);if(55296<=Q&&57343>=Q&&(Q=65536+((1023&Q)<<10)|1023&A.charCodeAt(++B)),u[g>>2]=Q,(g+=4)+4>I)break}return u[g>>2]=0,g-C}function Aa(A){for(var g=0,I=0;I<A.length;++I){var C=A.charCodeAt(I);55296<=C&&57343>=C&&++I,g+=4}return g}for(var Ac=Array(256),As=0;256>As;++As)Ac[As]=String.fromCharCode(As);T=Ac,z=C.BindingError=O("BindingError"),_=C.InternalError=O("InternalError"),AA.u.push({value:void 0},{value:null},{value:!0},{value:!1}),AA.B=AA.u.length,C.count_emval_handles=function(){for(var A=0,g=AA.B;g<AA.u.length;++g)void 0!==AA.u[g]&&++A;return A},AB=C.UnboundTypeError=O("UnboundTypeError");var AD="function"==typeof atob?atob:function(A){var g="",I=0;A=A.replace(/[^A-Za-z0-9\+\/=]/g,"");do{var C="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(A.charAt(I++)),B="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(A.charAt(I++)),Q="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(A.charAt(I++)),E="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(A.charAt(I++));C=C<<2|B>>4,B=(15&B)<<4|Q>>2;var i=(3&Q)<<6|E;g+=String.fromCharCode(C),64!==Q&&(g+=String.fromCharCode(B)),64!==E&&(g+=String.fromCharCode(i))}while(I<A.length);return g};function Ah(A){if(A.startsWith(S)){try{var g=AD(A.slice(S.length)),I=new Uint8Array(g.length);for(A=0;A<g.length;++A)I[A]=g.charCodeAt(A)}catch(A){throw Error("Converting base64 string to bytes failed.")}return I}}var Au={g:function(A,g,I){throw new J(A).C(g,I),v=A,L++,v},h:function(){},m:function(A,g,I,C,B){var Q=K(I);$(A,{name:g=j(g),fromWireType:function(A){return!!A},toWireType:function(A,g){return g?C:B},argPackAdvance:8,readValueFromPointer:function(A){if(1===I)var C=c;else if(2===I)C=D;else if(4===I)C=u;else throw TypeError("Unknown boolean type size: "+g);return this.fromWireType(C[A>>Q])},A:null})},l:function(A,g){$(A,{name:g=j(g),fromWireType:function(A){A||P("Cannot use deleted val. handle = "+A);var g=AA.get(A).value;return A>=AA.B&&0==--AA.get(A).I&&AA.F(A),g},toWireType:function(A,g){return Ag(g)},argPackAdvance:8,readValueFromPointer:AI,A:null})},f:function(A,g,I){I=K(I),$(A,{name:g=j(g),fromWireType:function(A){return A},toWireType:function(A,g){return g},argPackAdvance:8,readValueFromPointer:function(A,g){switch(g){case 2:return function(A){return this.fromWireType(w[A>>2])};case 3:return function(A){return this.fromWireType(f[A>>3])};default:throw TypeError("Unknown float type: "+A)}}(g,I),A:null})},e:function(A,g,I,B,Q,E,i){var n,o,r,t,e,a,c,s,D=function(A,g){for(var I=[],C=0;C<A;C++)I.push(y[g+4*C>>2]);return I}(g,I);A=j(A),n=B,o=Q,"function"!=typeof(e=(n=j(n)).includes("j")?(r=n,t=[],function(){if(t.length=0,Object.assign(t,arguments),r.includes("j")){var A=C["dynCall_"+r];A=t&&t.length?A.apply(null,[o].concat(t)):A.call(null,o)}else A=F.get(o).apply(null,t);return A}):F.get(o))&&P(`unknown function pointer with signature ${n}: ${o}`),Q=e,a=A,c=function(){!function(A,g){var I=[],C={};throw g.forEach(function A(g){C[g]||Z[g]||(V[g]?V[g].forEach(A):(I.push(g),C[g]=!0))}),new AB(`${A}: `+I.map(AQ).join([", "]))}(`Cannot call ${A} due to unbound types`,D)},s=g-1,C.hasOwnProperty(a)?((void 0===s||void 0!==C[a].v&&void 0!==C[a].v[s])&&P(`Cannot register public name '${a}' twice`),function(A,g){var I=C;if(void 0===I[A].v){var B=I[A];I[A]=function(){return I[A].v.hasOwnProperty(arguments.length)||P(`Function '${g}' called with an invalid number of arguments (${arguments.length}) - expects one of (${I[A].v})!`),I[A].v[arguments.length].apply(this,arguments)},I[A].v=[],I[A].v[B.G]=B}}(a,a),C.hasOwnProperty(s)&&P(`Cannot register multiple overloads of a function with the same number of arguments (${s})!`),C[a].v[s]=c):(C[a]=c,void 0!==s&&(C[a].K=s)),function(A,g){function I(A){if((A=g(A)).length!==C.length)throw new _("Mismatched type converter count");for(var I=0;I<C.length;++I)$(C[I],A[I])}var C=[];C.forEach(function(g){V[g]=A});var B=Array(A.length),Q=[],E=0;A.forEach((A,g)=>{Z.hasOwnProperty(A)?B[g]=Z[A]:(Q.push(A),X.hasOwnProperty(A)||(X[A]=[]),X[A].push(()=>{B[g]=Z[A],++E===Q.length&&I(B)}))}),0===Q.length&&I(B)}(D,function(I){var B=A;I=function(A,g,I,C,B,Q){var E=g.length;2>E&&P("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var i=null!==g[1]&&!1,n=!1,o=1;o<g.length;++o)if(null!==g[o]&&void 0===g[o].A){n=!0;break}var r="void"!==g[0].name,t="",e="";for(o=0;o<E-2;++o)t+=(0!==o?", ":"")+"arg"+o,e+=(0!==o?", ":"")+"arg"+o+"Wired";t=`
|
|
2
|
-
return function ${x(A)}(${t}) {
|
|
3
|
-
if (arguments.length !== ${E-2}) {
|
|
4
|
-
throwBindingError('function ${A} called with ${arguments.length} arguments, expected ${E-2} args!');
|
|
5
|
-
}`,n&&(t+="var destructors = [];\n");var a=n?"destructors":"null",c="throwBindingError invoker fn runDestructors retType classParam".split(" "),s=[P,C,B,AC,g[0],g[1]];for(i&&(t+="var thisWired = classParam.toWireType("+a+", this);\n"),o=0;o<E-2;++o)t+="var arg"+o+"Wired = argType"+o+".toWireType("+a+", arg"+o+"); // "+g[o+2].name+"\n",c.push("argType"+o),s.push(g[o+2]);if(i&&(e="thisWired"+(0<e.length?", ":"")+e),t+=(r||Q?"var rv = ":"")+"invoker(fn"+(0<e.length?", ":"")+e+");\n",n)t+="runDestructors(destructors);\n";else for(o=i?1:2;o<g.length;++o)E=1===o?"thisWired":"arg"+(o-2)+"Wired",null!==g[o].A&&(t+=E+"_dtor("+E+"); // "+g[o].name+"\n",c.push(E+"_dtor"),s.push(g[o].A));return r&&(t+="var ret = retType.fromWireType(rv);\nreturn ret;\n"),c.push(t+"}\n"),(function(A){var g=Function;if(!(g instanceof Function))throw TypeError(`new_ called with constructor type ${typeof g} which is not a function`);var I=q(g.name||"unknownFunctionName",function(){});return I.prototype=g.prototype,I=new I,(A=g.apply(I,A))instanceof Object?A:I})(c).apply(null,s)}(A,[I[0],null].concat(I.slice(1)),null,Q,E,i);var n=g-1;if(!C.hasOwnProperty(B))throw new _("Replacing nonexistant public symbol");return void 0!==C[B].v&&void 0!==n?C[B].v[n]=I:(C[B]=I,C[B].G=n),[]})},b:function(A,g,I,C,B){g=j(g),-1===B&&(B=4294967295),B=K(I);var Q=A=>A;if(0===C){var E=32-8*I;Q=A=>A<<E>>>E}I=g.includes("unsigned")?function(A,g){return g>>>0}:function(A,g){return g},$(A,{name:g,fromWireType:Q,toWireType:I,argPackAdvance:8,readValueFromPointer:function(A,g,I){switch(g){case 0:return I?function(A){return c[A]}:function(A){return s[A]};case 1:return I?function(A){return D[A>>1]}:function(A){return h[A>>1]};case 2:return I?function(A){return u[A>>2]}:function(A){return y[A>>2]};default:throw TypeError("Unknown integer type: "+A)}}(g,B,0!==C),A:null})},a:function(A,g,I){function C(A){A>>=2;var g=y;return new B(g.buffer,g[A+1],g[A])}var B=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][g];$(A,{name:I=j(I),fromWireType:C,argPackAdvance:8,readValueFromPointer:C},{H:!0})},d:function(A,g){var I="std::string"===(g=j(g));$(A,{name:g,fromWireType:function(A){var g=y[A>>2],C=A+4;if(I)for(var B=C,Q=0;Q<=g;++Q){var E=C+Q;if(Q==g||0==s[E]){if(B){var i=B,n=s,o=i+(E-B);for(B=i;n[B]&&!(B>=o);)++B;if(16<B-i&&n.buffer&&AE)i=AE.decode(n.subarray(i,B));else{for(o="";i<B;){var r=n[i++];if(128&r){var t=63&n[i++];if(192==(224&r))o+=String.fromCharCode((31&r)<<6|t);else{var e=63&n[i++];65536>(r=224==(240&r)?(15&r)<<12|t<<6|e:(7&r)<<18|t<<12|e<<6|63&n[i++])?o+=String.fromCharCode(r):(r-=65536,o+=String.fromCharCode(55296|r>>10,56320|1023&r))}}else o+=String.fromCharCode(r)}i=o}}else i="";if(void 0===a)var a=i;else a+="\x00"+i;B=E+1}}else{for(Q=0,a=Array(g);Q<g;++Q)a[Q]=String.fromCharCode(s[C+Q]);a=a.join("")}return Af(A),a},toWireType:function(A,g){g instanceof ArrayBuffer&&(g=new Uint8Array(g));var C,B,Q="string"==typeof g;if(Q||g instanceof Uint8Array||g instanceof Uint8ClampedArray||g instanceof Int8Array||P("Cannot pass non-string to std::string"),I&&Q)for(B=C=0;B<g.length;++B){var E=g.charCodeAt(B);127>=E?C++:2047>=E?C+=2:55296<=E&&57343>=E?(C+=4,++B):C+=3}else C=g.length;if(E=(C=Ay(4+(B=C)+1))+4,y[C>>2]=B,I&&Q){if(Q=E,E=B+1,B=s,0<E){E=Q+E-1;for(var i=0;i<g.length;++i){var n=g.charCodeAt(i);if(55296<=n&&57343>=n&&(n=65536+((1023&n)<<10)|1023&g.charCodeAt(++i)),127>=n){if(Q>=E)break;B[Q++]=n}else{if(2047>=n){if(Q+1>=E)break;B[Q++]=192|n>>6}else{if(65535>=n){if(Q+2>=E)break;B[Q++]=224|n>>12}else{if(Q+3>=E)break;B[Q++]=240|n>>18,B[Q++]=128|n>>12&63}B[Q++]=128|n>>6&63}B[Q++]=128|63&n}}B[Q]=0}}else if(Q)for(Q=0;Q<B;++Q)255<(i=g.charCodeAt(Q))&&(Af(E),P("String has UTF-16 code units that do not fit in 8 bits")),s[E+Q]=i;else for(Q=0;Q<B;++Q)s[E+Q]=g[Q];return null!==A&&A.push(Af,C),C},argPackAdvance:8,readValueFromPointer:AI,A:function(A){Af(A)}})},c:function(A,g,I){if(I=j(I),2===g)var C=An,B=Ao,Q=Ar,E=()=>h,i=1;else 4===g&&(C=At,B=Ae,Q=Aa,E=()=>y,i=2);$(A,{name:I,fromWireType:function(A){for(var I,B=y[A>>2],Q=E(),n=A+4,o=0;o<=B;++o){var r=A+4+o*g;(o==B||0==Q[r>>i])&&(n=C(n,r-n),void 0===I?I=n:I+="\x00"+n,n=r+g)}return Af(A),I},toWireType:function(A,C){"string"!=typeof C&&P(`Cannot pass non-string to C++ string type ${I}`);var E=Q(C),n=Ay(4+E+g);return y[n>>2]=E>>i,B(C,n+4,E+g),null!==A&&A.push(Af,n),n},argPackAdvance:8,readValueFromPointer:AI,A:function(A){Af(A)}})},k:function(A,g){$(A,{J:!0,name:g=j(g),argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},j:function(){k("")},i:function(A){var g=s.length;if(536870912<(A>>>=0))return!1;for(var I=1;4>=I;I*=2){var C=g*(1+.2/I);C=Math.min(C,A+100663296);var B=Math;C=Math.max(A,C);A:{B=B.min.call(B,536870912,C+(65536-C%65536)%65536)-a.buffer.byteLength+65535>>>16;try{a.grow(B),N();var Q=1;break A}catch(A){}Q=void 0}if(Q)return!0}return!1}};function Ay(){return(Ay=C.asm.q).apply(null,arguments)}function Aw(){return(Aw=C.asm.r).apply(null,arguments)}function Af(){return(Af=C.asm.t).apply(null,arguments)}function Al(){function A(){if(!I&&(I=!0,C.calledRun=!0,!l)){if(W(G),B(C),C.onRuntimeInitialized&&C.onRuntimeInitialized(),C.postRun)for("function"==typeof C.postRun&&(C.postRun=[C.postRun]);C.postRun.length;){var A=C.postRun.shift();d.unshift(A)}W(d)}}if(!(0<Y)){if(C.preRun)for("function"==typeof C.preRun&&(C.preRun=[C.preRun]);C.preRun.length;)!function(){var A=C.preRun.shift();R.unshift(A)}();W(R),0<Y||(C.setStatus?(C.setStatus("Running..."),setTimeout(function(){setTimeout(function(){C.setStatus("")},1),A()},1)):A())}}if(!function(){function A(A){if(A=A.exports,C.asm=A,a=C.asm.n,N(),F=C.asm.p,G.unshift(C.asm.o),Y--,C.monitorRunDependencies&&C.monitorRunDependencies(Y),0==Y&&(null!==M&&(clearInterval(M),M=null),p)){var g=p;p=null,g()}return A}var g,I,B={a:Au};if(Y++,C.monitorRunDependencies&&C.monitorRunDependencies(Y),C.instantiateWasm)try{return C.instantiateWasm(B,A)}catch(A){t("Module.instantiateWasm callback failed with error: "+A),Q(A)}(g=function(g){A(g.instance)},I=U,e||"function"!=typeof WebAssembly.instantiateStreaming||I.startsWith(S)||"function"!=typeof fetch?m(I,B,g):fetch(I,{credentials:"same-origin"}).then(A=>WebAssembly.instantiateStreaming(A,B).then(g,function(A){return t("wasm streaming compile failed: "+A),t("falling back to ArrayBuffer instantiation"),m(I,B,g)}))).catch(Q)}(),C.__embind_initialize_bindings=function(){return(C.__embind_initialize_bindings=C.asm.s).apply(null,arguments)},p=function A(){I||Al(),I||(p=A)},C.preInit)for("function"==typeof C.preInit&&(C.preInit=[C.preInit]);0<C.preInit.length;)C.preInit.pop()();return Al(),g.ready}})();const blurCore=BlurDetector;function asyncGeneratorStep(A,g,I,C,B,Q,E){try{var i=A[Q](E),n=i.value}catch(A){I(A);return}i.done?g(n):Promise.resolve(n).then(C,B)}function _async_to_generator(A){return function(){var g=this,I=arguments;return new Promise(function(C,B){var Q=A.apply(g,I);function E(A){asyncGeneratorStep(Q,C,B,E,i,"next",A)}function i(A){asyncGeneratorStep(Q,C,B,E,i,"throw",A)}E(void 0)})}}function _ts_generator(A,g){var I,C,B,Q,E={label:0,sent:function(){if(1&B[0])throw B[1];return B[1]},trys:[],ops:[]};return Q={next:i(0),throw:i(1),return:i(2)},"function"==typeof Symbol&&(Q[Symbol.iterator]=function(){return this}),Q;function i(Q){return function(i){return function(Q){if(I)throw TypeError("Generator is already executing.");for(;E;)try{if(I=1,C&&(B=2&Q[0]?C.return:Q[0]?C.throw||((B=C.return)&&B.call(C),0):C.next)&&!(B=B.call(C,Q[1])).done)return B;switch(C=0,B&&(Q=[2&Q[0],B.value]),Q[0]){case 0:case 1:B=Q;break;case 4:return E.label++,{value:Q[1],done:!1};case 5:E.label++,C=Q[1],Q=[0];continue;case 7:Q=E.ops.pop(),E.trys.pop();continue;default:if(!(B=(B=E.trys).length>0&&B[B.length-1])&&(6===Q[0]||2===Q[0])){E=0;continue}if(3===Q[0]&&(!B||Q[1]>B[0]&&Q[1]<B[3])){E.label=Q[1];break}if(6===Q[0]&&E.label<B[1]){E.label=B[1],B=Q;break}if(B&&E.label<B[2]){E.label=B[2],E.ops.push(Q);break}B[2]&&E.ops.pop(),E.trys.pop();continue}Q=g.call(A,E)}catch(A){Q=[6,A],C=0}finally{I=B=0}if(5&Q[0])throw Q[1];return{value:Q[0]?Q[1]:void 0,done:!0}}([Q,i])}}}var BLURRED=0,promise=null,core=null,coreLoading=!1,drop=function(){promise=null},load=function(){var A=_async_to_generator(function(){return _ts_generator(this,function(A){switch(A.label){case 0:return[4,BlurDetector()];case 1:return core=A.sent(),coreLoading=!1,[2]}})});return function(){return A.apply(this,arguments)}}();onmessage=function(){var A=_async_to_generator(function(A){var g;return _ts_generator(this,function(I){switch(I.label){case 0:if("drop"===(g=A.data).fn)return drop(),[2];if(promise)return promise.then(function(A){return postMessage({blurConfidence:A})}),[2];if(!(!core&&!1===coreLoading&&"init"===g.fn))return[3,2];return coreLoading=!0,[4,load()];case 1:return I.sent(),[2];case 2:return!coreLoading&&(null==g?void 0:g.iData)&&g.iData instanceof ImageData?promise=Promise.resolve(core.BlurAnalyticDetectWASM(g.iData.data,g.iData.width,g.iData.height)).then(function(A){postMessage({blurConfidence:A})}):postMessage({blurConfidence:BLURRED}),[2]}})});return function(g){return A.apply(this,arguments)}}();
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var __webpack_exports__={},generateFaceColorFromAngle=function(t){var n=Math.abs(Math.trunc(255-t));return n>200&&(n=200),n<50&&(n=50),"rgba(255,215,".concat(n.toString(),",0.3)")},binarize=function(t){var n,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:120,o=t.width*t.height,i=new Uint8ClampedArray(o),r=0,a=0;for(n=0;n<o;n+=1){var u=n<<2;77*(r=t.data[u+0])+151*t.data[u+1]+28*t.data[u+2]>>8<e&&(i[n]=1)}return i},topPoint=function(t,n){return t-n},bottomPoint=function(t,n){return t+n},leftPoint=function(t,n){return t%n>1?t-1:-1},rightPoint=function(t,n){return(t+1)%n>=0?t+1:-1},topLeftPoint=function(t,n){return leftPoint(topPoint(t,n),n)},topRightPoint=function(t,n){return rightPoint(topPoint(t,n),n)},bottomLeftPoint=function(t,n){return leftPoint(bottomPoint(t,n),n)},bottomRightPoint=function(t,n){return rightPoint(bottomPoint(t,n),n)},getNeigbors=function(t,n){return[topLeftPoint,topPoint,topRightPoint,rightPoint,bottomRightPoint,bottomPoint,bottomLeftPoint,leftPoint].map(function(e){return e(t,n)})},segmentize2=function(t,n){var e,o=[],i=[],r=t.length,a=0;for(e=0;e<r;e+=1)0!==t[e]&&(i[a]=new Set,o.push(e),function(){for(;o.length;){var e=o.pop();if(!e)break;t[e]=0,i[a].add(e),getNeigbors(e,n).forEach(function(n){n>0&&0!==t[n]&&n<r&&o.push(n)})}}(),a+=1);return i},getResizedSizes=function(t,n){var e=n.baseWidth,o=n.baseHeight,i=t,r=t;return e>o&&(r=(i=t)*o/e),o>e&&(i=(r=t)*e/o),{width:Math.trunc(i),height:Math.trunc(r)}},getCrop=function(t,n){var e=t.width/t.height,o=n.width/n.height,i={x:0,y:0,width:n.width,height:n.height};return e>o?(i.height=~~(n.width/e),i.y=(n.height-i.height)/2):(i.width=~~(i.height*e),i.x=(n.width-i.width)/2),i},POINT_FILL_STYLE="rgba(255, 255, 255, 0.5)",POINT_STROKE_STYLE="rgba(255, 255, 255, 0)",SCALE_FACTOR=.3,getColumn=function(t,n){return t%n},getRow=function(t,n){return Math.floor(t/n)},createCoordFromPointIdx=function(t,n){return[getColumn(t,n),getRow(t,n)]},notNull=function(t){return null!=t},coordinateSegment=function(t){var n=t.segments,e=t.width,o=t.scaleWidth,i=t.scaleHeight;return n.map(function(t){var n=Number.MAX_VALUE,r=Number.MAX_VALUE,a=Number.MIN_VALUE,u=Number.MIN_VALUE;t.forEach(function(t){var o=createCoordFromPointIdx(t,e);o[0]<n&&(n=o[0]),o[1]<r&&(r=o[1]),o[0]>a&&(a=o[0]),o[1]>u&&(u=o[1])});var h=(a-n)*(u-r);return h>5&&h<500?{perimeter:h,x1:Math.trunc(n/SCALE_FACTOR/o),y1:Math.trunc(r/SCALE_FACTOR/i),x2:Math.trunc(a/SCALE_FACTOR/o),y2:Math.trunc(u/SCALE_FACTOR/i)}:null}).filter(notNull)},pointsProcess=function(t,n,e){return coordinateSegment({segments:segmentize2(binarize(t),t.width),width:t.width,scaleWidth:n,scaleHeight:e})};onmessage=function(t){var n=t.data;if(n&&n.iData){var e=pointsProcess(n.iData,n.resizedToBorderScaleWidth,n.resizedToBorderScaleHeight);postMessage({segments:e})}};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|