From a01228e5afd08158960e638817b1cbe73782d960 Mon Sep 17 00:00:00 2001 From: guschmue Date: Mon, 26 Feb 2024 10:16:45 -0800 Subject: [PATCH] some improvments to segment-anything --- segment-anything/dist/bundle.min.js | 3 - .../dist/bundle.min.js.LICENSE.txt | 50 - segment-anything/dist/index.js | 2649 +++++++++++++++++ segment-anything/dist/index.js.map | 1 + segment-anything/dist/index.min.js | 63 + segment-anything/dist/index.min.js.map | 1 + segment-anything/dist/ort-wasm-simd.jsep.wasm | Bin 18156588 -> 17411110 bytes segment-anything/index.html | 13 +- 8 files changed, 2724 insertions(+), 56 deletions(-) delete mode 100644 segment-anything/dist/bundle.min.js delete mode 100644 segment-anything/dist/bundle.min.js.LICENSE.txt create mode 100644 segment-anything/dist/index.js create mode 100644 segment-anything/dist/index.js.map create mode 100644 segment-anything/dist/index.min.js create mode 100644 segment-anything/dist/index.min.js.map diff --git a/segment-anything/dist/bundle.min.js b/segment-anything/dist/bundle.min.js deleted file mode 100644 index 8bcdf39..0000000 --- a/segment-anything/dist/bundle.min.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! For license information please see bundle.min.js.LICENSE.txt */ -!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n=t();for(var r in n)("object"==typeof exports?exports:e)[r]=n[r]}}(self,(()=>(()=>{var e={122:(e,t,n)=>{"use strict";var r,a,i,o,s,u,l,d,p,c,f,h,m,g,y,b,w,v,$,_,x,S,C,E,I,T,A,k,O,R,z,B,P="/index.js",M=Object.defineProperty,D=Object.getOwnPropertyDescriptor,N=Object.getOwnPropertyNames,W=Object.prototype.hasOwnProperty,U=(e,t)=>()=>(e&&(t=e(e=0)),t),V=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),H=(e,t)=>{for(var n in t)M(e,n,{get:t[n],enumerable:!0})},L=e=>((e,t,n,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let n of N(t))!W.call(e,n)&&undefined!==n&&M(e,n,{get:()=>t[n],enumerable:!(r=D(t,n))||r.enumerable});return e})(M({},"__esModule",{value:!0}),e),F=U((()=>{a=new Map,i=[],o=(e,t,n)=>{if(!t||"function"!=typeof t.init||"function"!=typeof t.createInferenceSessionHandler)throw new TypeError("not a valid backend");{let r=a.get(e);if(void 0===r)a.set(e,{backend:t,priority:n});else{if(r.priority>n)return;if(r.priority===n&&r.backend!==t)throw new Error(`cannot register backend "${e}" using priority ${n}`)}if(n>=0){let t=i.indexOf(e);-1!==t&&i.splice(t,1);for(let t=0;t{let t=0===e.length?i:e,n=[];for(let e of t){let t=a.get(e);if(t){if(t.initialized)return t.backend;if(t.aborted)continue;let r=!!t.initPromise;try{return r||(t.initPromise=t.backend.init(e)),await t.initPromise,t.initialized=!0,t.backend}catch(a){r||n.push({name:e,err:a}),t.aborted=!0}finally{delete t.initPromise}}}throw new Error(`no available backend found. ERR: ${n.map((e=>`[${e.name}] ${e.err}`)).join(", ")}`)}})),G=U((()=>{F()})),j=U((()=>{u="1.17.0-dev.20240116-80f274ca6f"})),q=U((()=>{j(),l="warning",d={wasm:{},webgl:{},webgpu:{},versions:{common:u},set logLevel(e){if(void 0!==e){if("string"!=typeof e||-1===["verbose","info","warning","error","fatal"].indexOf(e))throw new Error(`Unsupported logging level: ${e}`);l=e}},get logLevel(){return l}},Object.defineProperty(d,"logLevel",{enumerable:!0})})),K=U((()=>{q(),p=d})),Y=U((()=>{c=(e,t)=>{let n=typeof document<"u"?document.createElement("canvas"):new OffscreenCanvas(1,1);n.width=e.dims[3],n.height=e.dims[2];let r=n.getContext("2d");if(null!=r){let a,i;void 0!==t?.tensorLayout&&"NHWC"===t.tensorLayout?(a=e.dims[2],i=e.dims[3]):(a=e.dims[3],i=e.dims[2]);let o,s,u=void 0!==t?.format?t.format:"RGB",l=t?.norm;void 0===l||void 0===l.mean?o=[255,255,255,255]:"number"==typeof l.mean?o=[l.mean,l.mean,l.mean,l.mean]:(o=[l.mean[0],l.mean[1],l.mean[2],0],void 0!==l.mean[3]&&(o[3]=l.mean[3])),void 0===l||void 0===l.bias?s=[0,0,0,0]:"number"==typeof l.bias?s=[l.bias,l.bias,l.bias,l.bias]:(s=[l.bias[0],l.bias[1],l.bias[2],0],void 0!==l.bias[3]&&(s[3]=l.bias[3]));let d=i*a,p=0,c=d,f=2*d,h=-1;"RGBA"===u?(p=0,c=d,f=2*d,h=3*d):"RGB"===u?(p=0,c=d,f=2*d):"RBG"===u&&(p=0,f=d,c=2*d);for(let t=0;t{let n,r=typeof document<"u"?document.createElement("canvas").getContext("2d"):new OffscreenCanvas(1,1).getContext("2d");if(null==r)throw new Error("Can not access image data");{let a,i,o;void 0!==t?.tensorLayout&&"NHWC"===t.tensorLayout?(a=e.dims[2],i=e.dims[1],o=e.dims[3]):(a=e.dims[3],i=e.dims[2],o=e.dims[1]);let s,u,l=void 0!==t&&void 0!==t.format?t.format:"RGB",d=t?.norm;void 0===d||void 0===d.mean?s=[255,255,255,255]:"number"==typeof d.mean?s=[d.mean,d.mean,d.mean,d.mean]:(s=[d.mean[0],d.mean[1],d.mean[2],255],void 0!==d.mean[3]&&(s[3]=d.mean[3])),void 0===d||void 0===d.bias?u=[0,0,0,0]:"number"==typeof d.bias?u=[d.bias,d.bias,d.bias,d.bias]:(u=[d.bias[0],d.bias[1],d.bias[2],0],void 0!==d.bias[3]&&(u[3]=d.bias[3]));let p=i*a;if(void 0!==t&&(void 0!==t.format&&4===o&&"RGBA"!==t.format||3===o&&"RGB"!==t.format&&"BGR"!==t.format))throw new Error("Tensor format doesn't match input tensor dims");let c=4,f=0,h=1,m=2,g=3,y=0,b=p,w=2*p,v=-1;"RGBA"===l?(y=0,b=p,w=2*p,v=3*p):"RGB"===l?(y=0,b=p,w=2*p):"RBG"===l&&(y=0,w=p,b=2*p),n=r.createImageData(a,i);for(let t=0;t{J(),h=(e,t)=>{if(void 0===e)throw new Error("Image buffer must be defined");if(void 0===t.height||void 0===t.width)throw new Error("Image height and width must be defined");if("NHWC"===t.tensorLayout)throw new Error("NHWC Tensor layout is not supported yet");let n,r,{height:a,width:i}=t,o=t.norm??{mean:255,bias:0};n="number"==typeof o.mean?[o.mean,o.mean,o.mean,o.mean]:[o.mean[0],o.mean[1],o.mean[2],o.mean[3]??255],r="number"==typeof o.bias?[o.bias,o.bias,o.bias,o.bias]:[o.bias[0],o.bias[1],o.bias[2],o.bias[3]??0];let s=void 0!==t.format?t.format:"RGBA",u=void 0!==t.tensorFormat&&void 0!==t.tensorFormat?t.tensorFormat:"RGB",l=a*i,d="RGBA"===u?new Float32Array(4*l):new Float32Array(3*l),p=4,c=0,f=1,h=2,m=3,g=0,y=l,b=2*l,w=-1;"RGB"===s&&(p=3,c=0,f=1,h=2,m=-1),"RGBA"===u?w=3*l:"RBG"===u?(g=0,b=l,y=2*l):"BGR"===u&&(b=0,y=l,g=2*l);for(let t=0;t{let n,r=typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement,a=typeof ImageData<"u"&&e instanceof ImageData,i=typeof ImageBitmap<"u"&&e instanceof ImageBitmap,o="string"==typeof e,s=t??{},u=()=>{if(typeof document<"u")return document.createElement("canvas");if(typeof OffscreenCanvas<"u")return new OffscreenCanvas(1,1);throw new Error("Canvas is not supported")},l=e=>e instanceof HTMLCanvasElement||e instanceof OffscreenCanvas?e.getContext("2d"):null;if(r){let r=u();r.width=e.width,r.height=e.height;let a=l(r);if(null==a)throw new Error("Can not access image data");{let r=e.height,i=e.width;if(void 0!==t&&void 0!==t.resizedHeight&&void 0!==t.resizedWidth&&(r=t.resizedHeight,i=t.resizedWidth),void 0!==t){if(s=t,void 0!==t.tensorFormat)throw new Error("Image input config format must be RGBA for HTMLImageElement");s.tensorFormat="RGBA",s.height=r,s.width=i}else s.tensorFormat="RGBA",s.height=r,s.width=i;a.drawImage(e,0,0),n=a.getImageData(0,0,i,r).data}}else{if(!a){if(i){if(void 0===t)throw new Error("Please provide image config with format for Imagebitmap");let r=u();r.width=e.width,r.height=e.height;let a=l(r);if(null!=a){let t=e.height,r=e.width;return a.drawImage(e,0,0,r,t),n=a.getImageData(0,0,r,t).data,s.height=t,s.width=r,h(n,s)}throw new Error("Can not access image data")}if(o)return new Promise(((t,n)=>{let r=u(),a=l(r);if(!e||!a)return n();let i=new Image;i.crossOrigin="Anonymous",i.src=e,i.onload=()=>{r.width=i.width,r.height=i.height,a.drawImage(i,0,0,r.width,r.height);let e=a.getImageData(0,0,r.width,r.height);s.height=r.height,s.width=r.width,t(h(e.data,s))}}));throw new Error("Input data provided is not supported - aborted tensor creation")}{let r,a;if(void 0!==t&&void 0!==t.resizedWidth&&void 0!==t.resizedHeight?(r=t.resizedHeight,a=t.resizedWidth):(r=e.height,a=e.width),void 0!==t&&(s=t),s.format="RGBA",s.height=r,s.width=a,void 0!==t){let t=u();t.width=a,t.height=r;let i=l(t);if(null==i)throw new Error("Can not access image data");i.putImageData(e,0,0),n=i.getImageData(0,0,a,r).data}else n=e.data}}if(void 0!==n)return h(n,s);throw new Error("Input data provided is not supported - aborted tensor creation")},g=(e,t)=>{let{width:n,height:r,download:a,dispose:i}=t;return new C({location:"texture",type:"float32",texture:e,dims:[1,r,n,4],download:a,dispose:i})},y=(e,t)=>{let{dataType:n,dims:r,download:a,dispose:i}=t;return new C({location:"gpu-buffer",type:n??"float32",gpuBuffer:e,dims:r,download:a,dispose:i})},b=(e,t,n)=>new C({location:"cpu-pinned",type:e,data:t,dims:n??[t.length]})})),Q=U((()=>{w=new Map([["float32",Float32Array],["uint8",Uint8Array],["int8",Int8Array],["uint16",Uint16Array],["float16",Uint16Array],["int16",Int16Array],["int32",Int32Array],["bool",Uint8Array],["float64",Float64Array],["uint32",Uint32Array]]),v=new Map([[Float32Array,"float32"],[Uint8Array,"uint8"],[Int8Array,"int8"],[Uint16Array,"uint16"],[Int16Array,"int16"],[Int32Array,"int32"],[Float64Array,"float64"],[Uint32Array,"uint32"]]),$=!1,_=()=>{if(!$){$=!0;let e=typeof BigInt64Array<"u"&&"function"==typeof BigInt64Array.from,t=typeof BigUint64Array<"u"&&"function"==typeof BigUint64Array.from;e&&(w.set("int64",BigInt64Array),v.set(BigInt64Array,"int64")),t&&(w.set("uint64",BigUint64Array),v.set(BigUint64Array,"uint64"))}}})),X=U((()=>{J(),x=e=>{let t=1;for(let n=0;n{switch(e.location){case"cpu":return new C(e.type,e.data,t);case"cpu-pinned":return new C({location:"cpu-pinned",data:e.data,type:e.type,dims:t});case"texture":return new C({location:"texture",texture:e.texture,type:e.type,dims:t});case"gpu-buffer":return new C({location:"gpu-buffer",gpuBuffer:e.gpuBuffer,type:e.type,dims:t});default:throw new Error(`tensorReshape: tensor location ${e.location} is not supported`)}}})),J=U((()=>{Y(),Z(),Q(),X(),C=class{constructor(e,t,n){let r,a;if(_(),"object"==typeof e&&"location"in e)switch(this.dataLocation=e.location,r=e.type,a=e.dims,e.location){case"cpu-pinned":{let t=w.get(r);if(!t)throw new TypeError(`unsupported type "${r}" to create tensor from pinned buffer`);if(!(e.data instanceof t))throw new TypeError(`buffer should be of type ${t.name}`);this.cpuData=e.data;break}case"texture":if("float32"!==r)throw new TypeError(`unsupported type "${r}" to create tensor from texture`);this.gpuTextureData=e.texture,this.downloader=e.download,this.disposer=e.dispose;break;case"gpu-buffer":if("float32"!==r&&"float16"!==r&&"int32"!==r&&"int64"!==r&&"uint32"!==r&&"bool"!==r)throw new TypeError(`unsupported type "${r}" to create tensor from gpu buffer`);this.gpuBufferData=e.gpuBuffer,this.downloader=e.download,this.disposer=e.dispose;break;default:throw new Error(`Tensor constructor: unsupported location '${this.dataLocation}'`)}else{let i,o;if("string"==typeof e)if(r=e,o=n,"string"===e){if(!Array.isArray(t))throw new TypeError("A string tensor's data must be a string array.");i=t}else{let n=w.get(e);if(void 0===n)throw new TypeError(`Unsupported tensor type: ${e}.`);if(Array.isArray(t)){if("float16"===e)throw new TypeError("Creating a float16 tensor from number array is not supported. Please use Uint16Array as data.");i="uint64"===e||"int64"===e?n.from(t,BigInt):n.from(t)}else{if(!(t instanceof n))throw new TypeError(`A ${r} tensor's data must be type of ${n}`);i=t}}else if(o=t,Array.isArray(e)){if(0===e.length)throw new TypeError("Tensor type cannot be inferred from an empty array.");let t=typeof e[0];if("string"===t)r="string",i=e;else{if("boolean"!==t)throw new TypeError(`Invalid element type of data array: ${t}.`);r="bool",i=Uint8Array.from(e)}}else{let t=v.get(e.constructor);if(void 0===t)throw new TypeError(`Unsupported type for tensor data: ${e.constructor}.`);r=t,i=e}if(void 0===o)o=[i.length];else if(!Array.isArray(o))throw new TypeError("A tensor's dims must be a number array");a=o,this.cpuData=i,this.dataLocation="cpu"}let i=x(a);if(this.cpuData&&i!==this.cpuData.length)throw new Error(`Tensor's size(${i}) does not match data length(${this.cpuData.length}).`);this.type=r,this.dims=a,this.size=i}static async fromImage(e,t){return m(e,t)}static fromTexture(e,t){return g(e,t)}static fromGpuBuffer(e,t){return y(e,t)}static fromPinnedBuffer(e,t,n){return b(e,t,n)}toDataURL(e){return c(this,e)}toImageData(e){return f(this,e)}get data(){if(this.ensureValid(),!this.cpuData)throw new Error("The data is not on CPU. Use `getData()` to download GPU data to CPU, or use `texture` or `gpuBuffer` property to access the GPU data directly.");return this.cpuData}get location(){return this.dataLocation}get texture(){if(this.ensureValid(),!this.gpuTextureData)throw new Error("The data is not stored as a WebGL texture.");return this.gpuTextureData}get gpuBuffer(){if(this.ensureValid(),!this.gpuBufferData)throw new Error("The data is not stored as a WebGPU buffer.");return this.gpuBufferData}async getData(e){switch(this.ensureValid(),this.dataLocation){case"cpu":case"cpu-pinned":return this.data;case"texture":case"gpu-buffer":if(!this.downloader)throw new Error("The current tensor is not created with a specified data downloader.");if(this.isDownloading)throw new Error("The current tensor is being downloaded.");try{this.isDownloading=!0;let t=await this.downloader();return this.downloader=void 0,this.dataLocation="cpu",this.cpuData=t,e&&this.disposer&&(this.disposer(),this.disposer=void 0),t}finally{this.isDownloading=!1}default:throw new Error(`cannot get data from location: ${this.dataLocation}`)}}dispose(){if(this.isDownloading)throw new Error("The current tensor is being downloaded.");this.disposer&&(this.disposer(),this.disposer=void 0),this.cpuData=void 0,this.gpuTextureData=void 0,this.gpuBufferData=void 0,this.downloader=void 0,this.isDownloading=void 0,this.dataLocation="none"}ensureValid(){if("none"===this.dataLocation)throw new Error("The tensor is disposed.")}reshape(e){if(this.ensureValid(),this.downloader||this.disposer)throw new Error("Cannot reshape a tensor that owns GPU resource.");return S(this,e)}}})),ee=U((()=>{J(),E=C})),te=U((()=>{q(),I=(e,t)=>{d.wasm.trace&&console.timeStamp(`${e}::ORT::${t}`)},T=(e,t)=>{let n=(new Error).stack?.split(/\r\n|\r|\n/g)||[],r=!1;for(let a=0;a{d.wasm.trace&&T("BEGIN",e)},k=e=>{d.wasm.trace&&T("END",e)}})),ne=U((()=>{F(),ee(),te(),O=class e{constructor(e){this.handler=e}async run(e,t,n){A();let r={},a={};if("object"!=typeof e||null===e||e instanceof E||Array.isArray(e))throw new TypeError("'feeds' must be an object that use input names as keys and OnnxValue as corresponding values.");let i=!0;if("object"==typeof t){if(null===t)throw new TypeError("Unexpected argument[1]: cannot be null.");if(t instanceof E)throw new TypeError("'fetches' cannot be a Tensor");if(Array.isArray(t)){if(0===t.length)throw new TypeError("'fetches' cannot be an empty array.");i=!1;for(let e of t){if("string"!=typeof e)throw new TypeError("'fetches' must be a string array or an object.");if(-1===this.outputNames.indexOf(e))throw new RangeError(`'fetches' contains invalid output name: ${e}.`);r[e]=null}if("object"==typeof n&&null!==n)a=n;else if(typeof n<"u")throw new TypeError("'options' must be an object.")}else{let e=!1,o=Object.getOwnPropertyNames(t);for(let n of this.outputNames)if(-1!==o.indexOf(n)){let a=t[n];(null===a||a instanceof E)&&(e=!0,i=!1,r[n]=a)}if(e){if("object"==typeof n&&null!==n)a=n;else if(typeof n<"u")throw new TypeError("'options' must be an object.")}else a=t}}else if(typeof t<"u")throw new TypeError("Unexpected argument[1]: must be 'fetches' or 'options'.");for(let t of this.inputNames)if(typeof e[t]>"u")throw new Error(`input '${t}' is missing in 'feeds'.`);if(i)for(let e of this.outputNames)r[e]=null;let o=await this.handler.run(e,r,a),s={};for(let e in o)if(Object.hasOwnProperty.call(o,e)){let t=o[e];s[e]=t instanceof E?t:new E(t.type,t.data,t.dims)}return k(),s}async release(){return this.handler.dispose()}static async create(t,n,r,a){A();let i,o={};if("string"==typeof t){if(i=t,"object"==typeof n&&null!==n)o=n;else if(typeof n<"u")throw new TypeError("'options' must be an object.")}else if(t instanceof Uint8Array){if(i=t,"object"==typeof n&&null!==n)o=n;else if(typeof n<"u")throw new TypeError("'options' must be an object.")}else{if(!(t instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&t instanceof SharedArrayBuffer))throw new TypeError("Unexpected argument[0]: must be 'path' or 'buffer'.");{let e=t,s=0,u=t.byteLength;if("object"==typeof n&&null!==n)o=n;else if("number"==typeof n){if(s=n,!Number.isSafeInteger(s))throw new RangeError("'byteOffset' must be an integer.");if(s<0||s>=e.byteLength)throw new RangeError(`'byteOffset' is out of range [0, ${e.byteLength}).`);if(u=t.byteLength-s,"number"==typeof r){if(u=r,!Number.isSafeInteger(u))throw new RangeError("'byteLength' must be an integer.");if(u<=0||s+u>e.byteLength)throw new RangeError(`'byteLength' is out of range (0, ${e.byteLength-s}].`);if("object"==typeof a&&null!==a)o=a;else if(typeof a<"u")throw new TypeError("'options' must be an object.")}else if(typeof r<"u")throw new TypeError("'byteLength' must be a number.")}else if(typeof n<"u")throw new TypeError("'options' must be an object.");i=new Uint8Array(e,s,u)}}let u=(o.executionProviders||[]).map((e=>"string"==typeof e?e:e.name)),l=await(await s(u)).createInferenceSessionHandler(i,o);return k(),new e(l)}startProfiling(){this.handler.startProfiling()}endProfiling(){this.handler.endProfiling()}get inputNames(){return this.handler.inputNames}get outputNames(){return this.handler.outputNames}}})),re=U((()=>{ne(),R=O})),ae=U((()=>{})),ie=U((()=>{F(),ee(),z=class e{constructor(e,t,n){this.handler=e,this.hasOptimizerModel=t,this.hasEvalModel=n}get trainingInputNames(){return this.handler.inputNames}get trainingOutputNames(){return this.handler.outputNames}get evalInputNames(){if(this.hasEvalModel)return this.handler.evalInputNames;throw new Error("This training session has no evalModel loaded.")}get evalOutputNames(){if(this.hasEvalModel)return this.handler.evalOutputNames;throw new Error("This training session has no evalModel loaded.")}static async create(t,n){let r=t.evalModel||"",a=t.optimizerModel||"",i=n||{},o=(i.executionProviders||[]).map((e=>"string"==typeof e?e:e.name)),u=await s(o);if(u.createTrainingSessionHandler){let n=await u.createTrainingSessionHandler(t.checkpointState,t.trainModel,r,a,i);return new e(n,!!t.optimizerModel,!!t.evalModel)}throw new Error("Training backend could not be resolved. Make sure you're using the correct configuration & WebAssembly files.")}typeNarrowingForRunStep(e,t,n,r,a){let i={},o={};if("object"!=typeof n||null===n||n instanceof E||Array.isArray(n))throw new TypeError("'feeds' must be an object that use input names as keys and OnnxValue as corresponding values.");let s=!0;if("object"==typeof r){if(null===r)throw new TypeError("Unexpected argument[1]: cannot be null.");if(r instanceof E)throw new TypeError("'fetches' cannot be a Tensor");if(Array.isArray(r)){if(0===r.length)throw new TypeError("'fetches' cannot be an empty array.");s=!1;for(let e of r){if("string"!=typeof e)throw new TypeError("'fetches' must be a string array or an object.");if(-1===t.indexOf(e))throw new RangeError(`'fetches' contains invalid output name: ${e}.`);i[e]=null}if("object"==typeof a&&null!==a)o=a;else if(typeof a<"u")throw new TypeError("'options' must be an object.")}else{let e=!1,n=Object.getOwnPropertyNames(r);for(let a of t)if(-1!==n.indexOf(a)){let t=r[a];(null===t||t instanceof E)&&(e=!0,s=!1,i[a]=t)}if(e){if("object"==typeof a&&null!==a)o=a;else if(typeof a<"u")throw new TypeError("'options' must be an object.")}else o=r}}else if(typeof r<"u")throw new TypeError("Unexpected argument[1]: must be 'fetches' or 'options'.");for(let t of e)if(typeof n[t]>"u")throw new Error(`input '${t}' is missing in 'feeds'.`);if(s)for(let e of t)i[e]=null;return[i,o]}convertHandlerReturnTypeToMapOfTensors(e){let t={};for(let n in e)if(Object.hasOwnProperty.call(e,n)){let r=e[n];t[n]=r instanceof E?r:new E(r.type,r.data,r.dims)}return t}async lazyResetGrad(){await this.handler.lazyResetGrad()}async runTrainStep(e,t,n){let[r,a]=this.typeNarrowingForRunStep(this.trainingInputNames,this.trainingOutputNames,e,t,n),i=await this.handler.runTrainStep(e,r,a);return this.convertHandlerReturnTypeToMapOfTensors(i)}async runOptimizerStep(e){if(!this.hasOptimizerModel)throw new Error("This TrainingSession has no OptimizerModel loaded.");await this.handler.runOptimizerStep(e||{})}async runEvalStep(e,t,n){if(this.hasEvalModel){let[r,a]=this.typeNarrowingForRunStep(this.evalInputNames,this.evalOutputNames,e,t,n),i=await this.handler.runEvalStep(e,r,a);return this.convertHandlerReturnTypeToMapOfTensors(i)}throw new Error("This TrainingSession has no EvalModel loaded.")}async getParametersSize(e=!0){return this.handler.getParametersSize(e)}async loadParametersBuffer(e,t=!0){let n=await this.getParametersSize(t);if(e.length!==4*n)throw new Error("Size of the buffer passed into loadParametersBuffer must match the number of parameters in the model. Please use getParametersSize method to check.");return this.handler.loadParametersBuffer(e,t)}async getContiguousParameters(e=!0){return this.handler.getContiguousParameters(e)}async release(){return this.handler.dispose()}}})),oe=U((()=>{ie(),B=z})),se={};H(se,{InferenceSession:()=>R,TRACE:()=>I,TRACE_FUNC_BEGIN:()=>A,TRACE_FUNC_END:()=>k,Tensor:()=>E,TrainingSession:()=>B,env:()=>p,registerBackend:()=>o});var ue=U((()=>{G(),K(),re(),ee(),te(),ae(),oe()})),le={};H(le,{createReadStream:()=>ce,readFile:()=>de,readFileSync:()=>pe});var de,pe,ce,fe=U((()=>{de=void 0,pe=void 0,ce=void 0})),he={};H(he,{join:()=>me});var me,ge=U((()=>{me=void 0})),ye=V(((n,a)=>{var i,o=(i=(i=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0)||P,function(e={}){var t,n,r=e;r.ready=new Promise(((e,r)=>{t=e,n=r})),r.mountExternalData=(e,t)=>{(r.gb||(r.gb=new Map)).set(e,t)},r.unmountExternalData=()=>{delete r.gb},r.jsepInit=(e,t,n,a,i,o,s,u)=>{r.Fb=e,r.vb=t,r.xb=n,r.ob=a,r.wb=i,r.Sa=o,r.yb=s,r.zb=u,t=(e,t,n)=>(...r)=>{let a=ze,i=t?.();r=e(...r);let o=t?.();return i!==o&&(e=o,n(i),t=n=null),ze!=a?new Promise(((e,t)=>{We={resolve:e,reject:t}})):r},n=t=>async(...n)=>{try{if(r.fb)throw Error("Session already started");let a=r.fb={Ab:n[0],errors:[]},i=await t(...n);if(r.fb!==a)throw Error("Session mismatch");e.flush();let o=a.errors;if(0e)),0r._OrtCreateSession),(e=>r._OrtCreateSession=e)),r._OrtRun=n(t(r._OrtRun,(()=>r._OrtRun),(e=>r._OrtRun=e))),r._OrtRunWithBinding=n(t(r._OrtRunWithBinding,(()=>r._OrtRunWithBinding),(e=>r._OrtRunWithBinding=e))),r._OrtBindInput=t(r._OrtBindInput,(()=>r._OrtBindInput),(e=>r._OrtBindInput=e)),r.jsepRegisterBuffer=(t,n,r,a)=>e.registerBuffer(t,n,r,a),r.jsepUnregisterBuffers=t=>{e.unregisterBuffers(t)},r.jsepGetBuffer=t=>e.getBuffer(t),r.jsepCreateDownloader=(t,n,r)=>e.createDownloader(t,n,r),r.jsepOnRunStart=()=>e.onRunStart()};var a,o,s,u=Object.assign({},r),l="./this.program",d=(e,t)=>{throw t},p="object"==typeof window,c="function"==typeof importScripts,f="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,h="";if(f){var m=(fe(),L(le)),g=(ge(),L(he));h=c?g.dirname(h)+"/":"//",a=(e,t)=>(e=H(e)?new URL(e):g.normalize(e),m.readFileSync(e,t?void 0:"utf8")),s=e=>((e=a(e,!0)).buffer||(e=new Uint8Array(e)),e),o=(e,t,n,r=!0)=>{e=H(e)?new URL(e):g.normalize(e),m.readFile(e,r?void 0:"utf8",((e,a)=>{e?n(e):t(r?a.buffer:a)}))},!r.thisProgram&&1{throw process.exitCode=e,t},r.inspect=()=>"[Emscripten Module object]"}else(p||c)&&(c?h=self.location.href:typeof document<"u"&&document.currentScript&&(h=document.currentScript.src),i&&(h=i),h=0!==h.indexOf("blob:")?h.substr(0,h.replace(/[?#].*/,"").lastIndexOf("/")+1):"",a=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},c&&(s=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),o=(e,t,n)=>{var r=new XMLHttpRequest;r.open("GET",e,!0),r.responseType="arraybuffer",r.onload=()=>{200==r.status||0==r.status&&r.response?t(r.response):n()},r.onerror=n,r.send(null)});var y=console.log.bind(console),b=console.error.bind(console);Object.assign(r,u),u=null,"object"!=typeof WebAssembly&&W("no native wasm support detected");var w,v,$,_,x,S,C,E,I,T,A,k,O=!1;function R(){var e=w.buffer;r.HEAP8=$=new Int8Array(e),r.HEAP16=x=new Int16Array(e),r.HEAPU8=_=new Uint8Array(e),r.HEAPU16=S=new Uint16Array(e),r.HEAP32=C=new Int32Array(e),r.HEAPU32=E=new Uint32Array(e),r.HEAPF32=I=new Float32Array(e),r.HEAPF64=k=new Float64Array(e),r.HEAP64=T=new BigInt64Array(e),r.HEAPU64=A=new BigUint64Array(e)}var z=[],B=[],P=[],M=0,D=null,N=null;function W(e){throw b(e="Aborted("+e+")"),O=!0,v=1,e=new WebAssembly.RuntimeError(e+". Build with -sASSERTIONS for more info."),n(e),e}var U,V=e=>e.startsWith("data:application/octet-stream;base64,"),H=e=>e.startsWith("file://");if(!V(U="ort-wasm-simd.wasm")){var F=U;U=r.locateFile?r.locateFile(F,h):h+F}function G(e){if(s)return s(e);throw"both async and sync fetching of the wasm failed"}function j(e,t,n){return function(e){if(p||c){if("function"==typeof fetch&&!H(e))return fetch(e,{credentials:"same-origin"}).then((t=>{if(!t.ok)throw"failed to load wasm binary file at '"+e+"'";return t.arrayBuffer()})).catch((()=>G(e)));if(o)return new Promise(((t,n)=>{o(e,(e=>t(new Uint8Array(e))),n)}))}return Promise.resolve().then((()=>G(e)))}(e).then((e=>WebAssembly.instantiate(e,t))).then((e=>e)).then(n,(e=>{b(`failed to asynchronously prepare wasm: ${e}`),W(e)}))}var q={945168:(e,t,n,a)=>{if(typeof r>"u"||!r.gb)return 1;if((e=ee(e>>>0)).startsWith("./")&&(e=e.substring(2)),!(e=r.gb.get(e)))return 2;if((t>>>=0)+(n>>>=0)>e.byteLength)return 3;try{return _.set(e.subarray(t,t+n),a>>>0>>>0),0}catch{return 4}},945669:e=>r.vb(e),945702:e=>r.xb(e),945734:(e,t,n)=>{r.ob(e,t,n,!0)},945773:(e,t,n)=>{r.ob(e,t,n)},945806:e=>{r.Sa("Abs",e,void 0)},945857:e=>{r.Sa("Neg",e,void 0)},945908:e=>{r.Sa("Floor",e,void 0)},945961:e=>{r.Sa("Ceil",e,void 0)},946013:e=>{r.Sa("Reciprocal",e,void 0)},946071:e=>{r.Sa("Sqrt",e,void 0)},946123:e=>{r.Sa("Exp",e,void 0)},946174:e=>{r.Sa("Erf",e,void 0)},946225:e=>{r.Sa("Sigmoid",e,void 0)},946280:(e,t,n)=>{r.Sa("HardSigmoid",e,{alpha:t,beta:n})},946359:e=>{r.Sa("Log",e,void 0)},946410:e=>{r.Sa("Sin",e,void 0)},946461:e=>{r.Sa("Cos",e,void 0)},946512:e=>{r.Sa("Tan",e,void 0)},946563:e=>{r.Sa("Asin",e,void 0)},946615:e=>{r.Sa("Acos",e,void 0)},946667:e=>{r.Sa("Atan",e,void 0)},946719:e=>{r.Sa("Sinh",e,void 0)},946771:e=>{r.Sa("Cosh",e,void 0)},946823:e=>{r.Sa("Asinh",e,void 0)},946876:e=>{r.Sa("Acosh",e,void 0)},946929:e=>{r.Sa("Atanh",e,void 0)},946982:e=>{r.Sa("Tanh",e,void 0)},947034:e=>{r.Sa("Not",e,void 0)},947085:(e,t,n)=>{r.Sa("Clip",e,{min:t,max:n})},947154:e=>{r.Sa("Clip",e,void 0)},947206:(e,t)=>{r.Sa("Elu",e,{alpha:t})},947264:e=>{r.Sa("Relu",e,void 0)},947316:(e,t)=>{r.Sa("LeakyRelu",e,{alpha:t})},947380:(e,t)=>{r.Sa("ThresholdedRelu",e,{alpha:t})},947450:(e,t)=>{r.Sa("Cast",e,{to:t})},947508:e=>{r.Sa("Add",e,void 0)},947559:e=>{r.Sa("Sub",e,void 0)},947610:e=>{r.Sa("Mul",e,void 0)},947661:e=>{r.Sa("Div",e,void 0)},947712:e=>{r.Sa("Pow",e,void 0)},947763:e=>{r.Sa("Equal",e,void 0)},947816:e=>{r.Sa("Greater",e,void 0)},947871:e=>{r.Sa("GreaterOrEqual",e,void 0)},947933:e=>{r.Sa("Less",e,void 0)},947985:e=>{r.Sa("LessOrEqual",e,void 0)},948044:(e,t,n,a,i)=>{r.Sa("ReduceMean",e,{keepDims:!!t,noopWithEmptyAxes:!!n,axes:a?Array.from(C.subarray(a>>>0,i>>>0)):[]})},948203:(e,t,n,a,i)=>{r.Sa("ReduceMax",e,{keepDims:!!t,noopWithEmptyAxes:!!n,axes:a?Array.from(C.subarray(a>>>0,i>>>0)):[]})},948361:(e,t,n,a,i)=>{r.Sa("ReduceMin",e,{keepDims:!!t,noopWithEmptyAxes:!!n,axes:a?Array.from(C.subarray(a>>>0,i>>>0)):[]})},948519:(e,t,n,a,i)=>{r.Sa("ReduceProd",e,{keepDims:!!t,noopWithEmptyAxes:!!n,axes:a?Array.from(C.subarray(a>>>0,i>>>0)):[]})},948678:(e,t,n,a,i)=>{r.Sa("ReduceSum",e,{keepDims:!!t,noopWithEmptyAxes:!!n,axes:a?Array.from(C.subarray(a>>>0,i>>>0)):[]})},948836:(e,t,n,a,i)=>{r.Sa("ReduceL1",e,{keepDims:!!t,noopWithEmptyAxes:!!n,axes:a?Array.from(C.subarray(a>>>0,i>>>0)):[]})},948993:(e,t,n,a,i)=>{r.Sa("ReduceL2",e,{keepDims:!!t,noopWithEmptyAxes:!!n,axes:a?Array.from(C.subarray(a>>>0,i>>>0)):[]})},949150:(e,t,n,a,i)=>{r.Sa("ReduceLogSum",e,{keepDims:!!t,noopWithEmptyAxes:!!n,axes:a?Array.from(C.subarray(a>>>0,i>>>0)):[]})},949311:(e,t,n,a,i)=>{r.Sa("ReduceSumSquare",e,{keepDims:!!t,noopWithEmptyAxes:!!n,axes:a?Array.from(C.subarray(a>>>0,i>>>0)):[]})},949475:(e,t,n,a,i)=>{r.Sa("ReduceLogSumExp",e,{keepDims:!!t,noopWithEmptyAxes:!!n,axes:a?Array.from(C.subarray(a>>>0,i>>>0)):[]})},949639:e=>{r.Sa("Where",e,void 0)},949692:(e,t,n)=>{r.Sa("Transpose",e,{perm:t?Array.from(C.subarray(t>>>0,n>>>0)):[]})},949800:(e,t,n,a,i,o,s,u,l,d,p,c,f,h,m)=>{r.Sa("ConvTranspose",e,{format:l?"NHWC":"NCHW",autoPad:t,dilations:[n],group:a,kernel_shape:[i],pads:[o,s],strides:[u],wIsConst:()=>!!$[d>>>0],outputPadding:p?Array.from(C.subarray(p>>>0,c>>>0)):[],outputShape:f?Array.from(C.subarray(f>>>0,h>>>0)):[],activation:ee(m)})},950202:(e,t,n,a,i,o,s,u,l,d,p,c,f,h)=>{r.Sa("ConvTranspose",e,{format:u?"NHWC":"NCHW",autoPad:t,dilations:Array.from(C.subarray(n>>>0,2+(n>>>0)>>>0)),group:a,kernelShape:Array.from(C.subarray(i>>>0,2+(i>>>0)>>>0)),pads:Array.from(C.subarray(o>>>0,4+(o>>>0)>>>0)),strides:Array.from(C.subarray(s>>>0,2+(s>>>0)>>>0)),wIsConst:()=>!!$[l>>>0],outputPadding:d?Array.from(C.subarray(d>>>0,p>>>0)):[],outputShape:c?Array.from(C.subarray(c>>>0,f>>>0)):[],activation:ee(h)})},950767:(e,t,n,a,i,o,s,u,l,d,p,c,f,h,m)=>{r.Sa("ConvTranspose",e,{format:l?"NHWC":"NCHW",autoPad:t,dilations:[n],group:a,kernel_shape:[i],pads:[o,s],strides:[u],wIsConst:()=>!!$[d>>>0],outputPadding:p?Array.from(C.subarray(p>>>0,c>>>0)):[],outputShape:f?Array.from(C.subarray(f>>>0,h>>>0)):[],activation:ee(m)})},951169:(e,t,n,a,i,o,s,u,l,d,p,c,f,h)=>{r.Sa("ConvTranspose",e,{format:u?"NHWC":"NCHW",autoPad:t,dilations:Array.from(C.subarray(n>>>0,2+(n>>>0)>>>0)),group:a,kernelShape:Array.from(C.subarray(i>>>0,2+(i>>>0)>>>0)),pads:Array.from(C.subarray(o>>>0,4+(o>>>0)>>>0)),strides:Array.from(C.subarray(s>>>0,2+(s>>>0)>>>0)),wIsConst:()=>!!$[l>>>0],outputPadding:d?Array.from(C.subarray(d>>>0,p>>>0)):[],outputShape:c?Array.from(C.subarray(c>>>0,f>>>0)):[],activation:ee(h)})},951734:(e,t)=>{r.Sa("GlobalAveragePool",e,{format:t?"NHWC":"NCHW"})},951825:(e,t,n,a,i,o,s,u,l,d,p,c,f,h,m,g)=>{r.Sa("AveragePool",e,{format:g?"NHWC":"NCHW",auto_pad:t,ceil_mode:n,count_include_pad:a,storage_order:i,dilations:[o,s],kernel_shape:[u,l],pads:[d,p,c,f],strides:[h,m]})},952109:(e,t)=>{r.Sa("GlobalAveragePool",e,{format:t?"NHWC":"NCHW"})},952200:(e,t,n,a,i,o,s,u,l,d,p,c,f,h,m,g)=>{r.Sa("AveragePool",e,{format:g?"NHWC":"NCHW",auto_pad:t,ceil_mode:n,count_include_pad:a,storage_order:i,dilations:[o,s],kernel_shape:[u,l],pads:[d,p,c,f],strides:[h,m]})},952484:(e,t)=>{r.Sa("GlobalMaxPool",e,{format:t?"NHWC":"NCHW"})},952571:(e,t,n,a,i,o,s,u,l,d,p,c,f,h,m,g)=>{r.Sa("MaxPool",e,{format:g?"NHWC":"NCHW",auto_pad:t,ceil_mode:n,count_include_pad:a,storage_order:i,dilations:[o,s],kernel_shape:[u,l],pads:[d,p,c,f],strides:[h,m]})},952851:(e,t)=>{r.Sa("GlobalMaxPool",e,{format:t?"NHWC":"NCHW"})},952938:(e,t,n,a,i,o,s,u,l,d,p,c,f,h,m,g)=>{r.Sa("MaxPool",e,{format:g?"NHWC":"NCHW",auto_pad:t,ceil_mode:n,count_include_pad:a,storage_order:i,dilations:[o,s],kernel_shape:[u,l],pads:[d,p,c,f],strides:[h,m]})},953218:(e,t,n,a,i)=>{r.Sa("Gemm",e,{alpha:t,beta:n,transA:a,transB:i})},953322:e=>{r.Sa("MatMul",e,void 0)},953376:(e,t,n,a)=>{r.Sa("ArgMax",e,{keepDims:!!t,selectLastIndex:!!n,axis:a})},953484:(e,t,n,a)=>{r.Sa("ArgMin",e,{keepDims:!!t,selectLastIndex:!!n,axis:a})},953592:(e,t)=>{r.Sa("Softmax",e,{axis:t})},953655:(e,t)=>{r.Sa("Concat",e,{axis:t})},953715:(e,t,n,a,i)=>{r.Sa("Split",e,{axis:t,numOutputs:n,splitSizes:a?Array.from(C.subarray(a>>>0,i>>>0)):[]})},953855:e=>{r.Sa("Expand",e,void 0)},953909:(e,t)=>{r.Sa("Gather",e,{axis:Number(t)})},953980:(e,t)=>{r.Sa("GatherElements",e,{axis:Number(t)})},954059:(e,t,n,a,i,o,s,u,l,d,p)=>{r.Sa("Resize",e,{antialias:t,axes:n?Array.from(C.subarray(n>>>0,a>>>0)):[],coordinateTransformMode:ee(i),cubicCoeffA:o,excludeOutside:s,extrapolationValue:u,keepAspectRatioPolicy:ee(l),mode:ee(d),nearestMode:ee(p)})},954405:(e,t,n,a,i,o,s)=>{r.Sa("Slice",e,{starts:t?Array.from(C.subarray(t>>>0,n>>>0)):[],ends:a?Array.from(C.subarray(a>>>0,i>>>0)):[],axes:o?Array.from(C.subarray(o>>>0,s>>>0)):[]})},954621:e=>{r.Sa("Tile",e,void 0)},954673:(e,t,n)=>{r.Sa("LayerNormalization",e,{axis:Number(t),epsilon:Number(n)})},954780:(e,t,n)=>{r.Sa("InstanceNormalization",e,{epsilon:t,format:n?"NHWC":"NCHW"})},954894:(e,t,n)=>{r.Sa("InstanceNormalization",e,{epsilon:t,format:n?"NHWC":"NCHW"})},955008:e=>{r.Sa("Range",e,void 0)},955061:(e,t)=>{r.Sa("Einsum",e,{equation:ee(t)})},955142:(e,t,n,a,i)=>{r.Sa("Pad",e,{mode:t,value:n,pads:a?Array.from(C.subarray(a>>>0,i>>>0)):[]})},955269:(e,t,n,a,i,o)=>{r.Sa("BatchNormalization",e,{epsilon:t,momentum:n,spatial:!!i,trainingMode:!!a,format:o?"NHWC":"NCHW"})},955438:(e,t,n,a,i,o)=>{r.Sa("BatchNormalization",e,{epsilon:t,momentum:n,spatial:!!i,trainingMode:!!a,format:o?"NHWC":"NCHW"})},955607:(e,t,n)=>{r.Sa("CumSum",e,{exclusive:Number(t),reverse:Number(n)})},955704:(e,t,n,a,i,o,s,u,l)=>{r.Sa("Attention",e,{numHeads:t,isUnidirectional:n,maskFilterValue:a,scale:i,doRotary:o,qkvHiddenSizes:s?Array.from(C.subarray(Number(u)>>>0,Number(u)+s>>>0)):[],pastPresentShareBuffer:!!l})},955976:e=>{r.Sa("Gelu",e,void 0)},956028:(e,t,n,a,i,o)=>{r.Sa("MultiHeadAttention",e,{numHeads:t,isUnidirectional:n,maskFilterValue:a,scale:i,doRotary:o})},956187:e=>{r.Sa("BiasAdd",e,void 0)},956242:e=>{r.Sa("BiasSplitGelu",e,void 0)},956303:(e,t)=>{r.Sa("SkipLayerNormalization",e,{epsilon:t})},956384:(e,t,n,a,i,o,s,u,l,d,p,c,f)=>{r.Sa("Conv",e,{format:l?"NHWC":"NCHW",auto_pad:t,dilations:[n],group:a,kernel_shape:[i],pads:o?Array.from(C.subarray(o>>>0,s>>>0)):[],strides:[u],w_is_const:()=>!!$[d>>>0],activation:ee(p),activation_params:c?Array.from(I.subarray(c>>>0,f>>>0)):[]})},956754:(e,t,n,a,i,o,s,u,l,d,p,c,f,h,m,g)=>{r.Sa("Conv",e,{format:c?"NHWC":"NCHW",auto_pad:t,dilations:[n,a],group:i,kernel_shape:[o,s],pads:u?Array.from(C.subarray(u>>>0,l>>>0)):[],strides:[d,p],w_is_const:()=>!!$[f>>>0],activation:ee(h),activation_params:m?Array.from(I.subarray(m>>>0,g>>>0)):[]})},957145:e=>{r.yb(e)},957179:(e,t)=>r.zb(e,t,r.fb.Ab,r.fb.errors)};function K(e){this.name="ExitStatus",this.message=`Program terminated with exit(${e})`,this.status=e}function Y(e){this.cb=e-24,this.rb=function(e){E[this.cb+4>>>2>>>0]=e},this.qb=function(e){E[this.cb+8>>>2>>>0]=e},this.kb=function(e,t){this.jb(),this.rb(e),this.qb(t)},this.jb=function(){E[this.cb+16>>>2>>>0]=0}}var Z,Q,X=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,J=(e,t,n)=>{var r=(t>>>=0)+n;for(n=t;e[n]&&!(n>=r);)++n;if(16(a=224==(240&a)?(15&a)<<12|i<<6|o:(7&a)<<18|i<<12|o<<6|63&e[t++])?r+=String.fromCharCode(a):(a-=65536,r+=String.fromCharCode(55296|a>>10,56320|1023&a))}}else r+=String.fromCharCode(a)}return r},ee=(e,t)=>(e>>>=0)?J(_,e,t):"",te=e=>{for(var t=0,n=0;n=r?t++:2047>=r?t+=2:55296<=r&&57343>=r?(t+=4,++n):t+=3}return t},ne=(e,t,n,r)=>{if(!(0>>=0;r=n+r-1;for(var i=0;i=o&&(o=65536+((1023&o)<<10)|1023&e.charCodeAt(++i)),127>=o){if(n>=r)break;t[n++>>>0]=o}else{if(2047>=o){if(n+1>=r)break;t[n++>>>0]=192|o>>6}else{if(65535>=o){if(n+2>=r)break;t[n++>>>0]=224|o>>12}else{if(n+3>=r)break;t[n++>>>0]=240|o>>18,t[n++>>>0]=128|o>>12&63}t[n++>>>0]=128|o>>6&63}t[n++>>>0]=128|63&o}}return t[n>>>0]=0,n-a},re=e=>{if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e},ae=e=>{for(var t="";_[e>>>0];)t+=Z[_[e++>>>0]];return t},ie={},oe={},se={};function ue(e,t,n={}){if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");!function(e,t,n={}){var r=t.name;if(!e)throw new Q(`type "${r}" must have a positive integer typeid pointer`);if(oe.hasOwnProperty(e)){if(n.tb)return;throw new Q(`Cannot register type '${r}' twice`)}oe[e]=t,delete se[e],ie.hasOwnProperty(e)&&(t=ie[e],delete ie[e],t.forEach((e=>e())))}(e,t,n)}var de=(e,t,n)=>{switch(t){case 1:return n?e=>$[e>>>0>>>0]:e=>_[e>>>0>>>0];case 2:return n?e=>x[e>>>1>>>0]:e=>S[e>>>1>>>0];case 4:return n?e=>C[e>>>2>>>0]:e=>E[e>>>2>>>0];case 8:return n?e=>T[e>>>3]:e=>A[e>>>3];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}};function pe(){this.$a=[void 0],this.nb=[]}var ce=new pe;function me(e){(e>>>=0)>=ce.cb&&0==--ce.get(e).pb&&ce.jb(e)}var ye=e=>{if(!e)throw new Q("Cannot use deleted val. handle = "+e);return ce.get(e).value},be=e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return ce.kb({pb:1,value:e})}};function we(e){return this.fromWireType(C[e>>>2>>>0])}var ve=(e,t)=>{switch(t){case 4:return function(e){return this.fromWireType(I[e>>>2>>>0])};case 8:return function(e){return this.fromWireType(k[e>>>3>>>0])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}};function $e(e){return this.fromWireType(E[e>>>2>>>0])}var _e=typeof TextDecoder<"u"?new TextDecoder("utf-16le"):void 0,xe=(e,t)=>{for(var n=e>>1,r=n+t/2;!(n>=r)&&S[n>>>0];)++n;if(32<(n<<=1)-e&&_e)return _e.decode(_.subarray(e>>>0,n>>>0));for(n="",r=0;!(r>=t/2);++r){var a=x[e+2*r>>>1>>>0];if(0==a)break;n+=String.fromCharCode(a)}return n},Se=(e,t,n)=>{if(n??=2147483647,2>n)return 0;var r=t;n=(n-=2)<2*e.length?n/2:e.length;for(var a=0;a>>1>>>0]=e.charCodeAt(a),t+=2;return x[t>>>1>>>0]=0,t-r},Ce=e=>2*e.length,Ee=(e,t)=>{for(var n=0,r="";!(n>=t/4);){var a=C[e+4*n>>>2>>>0];if(0==a)break;++n,65536<=a?(a-=65536,r+=String.fromCharCode(55296|a>>10,56320|1023&a)):r+=String.fromCharCode(a)}return r},Ie=(e,t,n)=>{if(t>>>=0,n??=2147483647,4>n)return 0;var r=t;n=r+n-4;for(var a=0;a=i&&(i=65536+((1023&i)<<10)|1023&e.charCodeAt(++a)),C[t>>>2>>>0]=i,(t+=4)+4>n)break}return C[t>>>2>>>0]=0,t-r},Te=e=>{for(var t=0,n=0;n=r&&++n,t+=4}return t},Ae=(e,t)=>{var n=oe[e];if(void 0===n)throw e=ht(e),n=ae(e),ft(e),new Q(t+" has unknown type "+n);return n},ke=(e,t,n)=>{var r=[];return e=e.toWireType(r,n),r.length&&(E[t>>>2>>>0]=be(r)),e},Oe=e=>{try{e()}catch(e){W(e)}},Re=0,ze=null,Be=0,Pe=[],Me={},De={},Ne=0,We=null,Ue=[];function Ve(e){return function(e){if(!O){if(0===Re){var t=!1,n=!1;e(((e=0)=>{if(!O&&(Be=e,t=!0,n)){Re=2,Oe((()=>vt(ze))),typeof Browser<"u"&&Browser.lb.sb&&Browser.lb.resume(),e=!1;try{var r=(0,lt[De[C[ze+8>>>2>>>0]]])()}catch(t){r=t,e=!0}var a=!1;if(!ze){var i=We;i&&(We=null,(e?i.reject:i.resolve)(r),a=!0)}if(e&&!a)throw r}})),n=!0,t||(Re=1,ze=function(){var e=ct(65548),t=e+12;E[e>>>2>>>0]=t,E[e+4>>>2>>>0]=t+65536,t=Pe[0];var n=Me[t];return void 0===n&&(n=Ne++,Me[t]=n,De[n]=t),C[e+8>>>2>>>0]=n,e}(),typeof Browser<"u"&&Browser.lb.sb&&Browser.lb.pause(),Oe((()=>bt(ze))))}else 2===Re?(Re=0,Oe($t),ft(ze),ze=null,Ue.forEach((e=>{if(!O)try{e();try{v=v=e=v,r.onExit?.(e),O=!0,d(e,new K(e))}catch(e){e instanceof K||"unwind"==e||d(1,e)}}catch(e){e instanceof K||"unwind"==e||d(1,e)}}))):W(`invalid state: ${Re}`);return Be}}((t=>{e().then(t)}))}var He,Le=[],Fe={},Ge=e=>{var t=Fe[e];return void 0===t?ae(e):t},je=()=>"object"==typeof globalThis?globalThis:Function("return this")(),qe=(e,t)=>Object.defineProperty(t,"name",{value:e}),Ke=e=>e%4==0&&(e%100!=0||e%400==0),Ye=[0,31,60,91,121,152,182,213,244,274,305,335],Ze=[0,31,59,90,120,151,181,212,243,273,304,334],Qe=e=>{var t=te(e)+1,n=ct(t);return n&&ne(e,_,n,t),n},Xe=[],Je=(e,t)=>{Xe.length=0;for(var n;n=_[e++>>>0];){var r=105!=n;t+=(r&=112!=n)&&t%8?4:0,Xe.push(112==n?E[t>>>2>>>0]:106==n?T[t>>>3]:105==n?C[t>>>2>>>0]:k[t>>>3>>>0]),t+=r?8:4}return Xe},et={},tt=()=>{if(!He){var e,t={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:l||"./this.program"};for(e in et)void 0===et[e]?delete t[e]:t[e]=et[e];var n=[];for(e in t)n.push(`${e}=${t[e]}`);He=n}return He},nt=[null,[],[]],rt=[31,29,31,30,31,30,31,31,30,31,30,31],at=[31,28,31,30,31,30,31,31,30,31,30,31];function it(e,t,n,r){function a(e,t,n){for(e="number"==typeof e?e.toString():e||"";e.lengthe?-1:0r-e.getDate())){e.setDate(e.getDate()+t);break}t-=r-e.getDate()+1,e.setDate(1),11>n?e.setMonth(n+1):(e.setMonth(0),e.setFullYear(e.getFullYear()+1))}return n=new Date(e.getFullYear()+1,0,4),t=s(new Date(e.getFullYear(),0,4)),n=s(n),0>=o(t,e)?0>=o(n,e)?e.getFullYear()+1:e.getFullYear():e.getFullYear()-1}e>>>=0,t>>>=0,n>>>=0;var l=E[40+(r>>>=0)>>>2>>>0];for(var d in r={Db:C[r>>>2>>>0],Cb:C[r+4>>>2>>>0],hb:C[r+8>>>2>>>0],mb:C[r+12>>>2>>>0],ib:C[r+16>>>2>>>0],bb:C[r+20>>>2>>>0],Wa:C[r+24>>>2>>>0],ab:C[r+28>>>2>>>0],Gb:C[r+32>>>2>>>0],Bb:C[r+36>>>2>>>0],Eb:l?ee(l):""},n=ee(n),l={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"})n=n.replace(new RegExp(d,"g"),l[d]);var p="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),c="January February March April May June July August September October November December".split(" ");for(d in l={"%a":e=>p[e.Wa].substring(0,3),"%A":e=>p[e.Wa],"%b":e=>c[e.ib].substring(0,3),"%B":e=>c[e.ib],"%C":e=>i((e.bb+1900)/100|0,2),"%d":e=>i(e.mb,2),"%e":e=>a(e.mb,2," "),"%g":e=>u(e).toString().substring(2),"%G":e=>u(e),"%H":e=>i(e.hb,2),"%I":e=>(0==(e=e.hb)?e=12:12{for(var t=0,n=0;n<=e.ib-1;t+=(Ke(e.bb+1900)?rt:at)[n++]);return i(e.mb+t,3)},"%m":e=>i(e.ib+1,2),"%M":e=>i(e.Cb,2),"%n":()=>"\n","%p":e=>0<=e.hb&&12>e.hb?"AM":"PM","%S":e=>i(e.Db,2),"%t":()=>"\t","%u":e=>e.Wa||7,"%U":e=>i(Math.floor((e.ab+7-e.Wa)/7),2),"%V":e=>{var t=Math.floor((e.ab+7-(e.Wa+6)%7)/7);if(2>=(e.Wa+371-e.ab-2)%7&&t++,t)53==t&&(4==(n=(e.Wa+371-e.ab)%7)||3==n&&Ke(e.bb)||(t=1));else{t=52;var n=(e.Wa+7-e.ab-1)%7;(4==n||5==n&&Ke(e.bb%400-1))&&t++}return i(t,2)},"%w":e=>e.Wa,"%W":e=>i(Math.floor((e.ab+7-(e.Wa+6)%7)/7),2),"%y":e=>(e.bb+1900).toString().substring(2),"%Y":e=>e.bb+1900,"%z":e=>(0<=(e=e.Bb)?"+":"-")+("0000"+((e=Math.abs(e)/60)/60*100+e%60)).slice(-4),"%Z":e=>e.Eb,"%%":()=>"%"},n=n.replace(/%%/g,"\0\0"),l)n.includes(d)&&(n=n.replace(new RegExp(d,"g"),l[d](r)));return d=function(e){var t=Array(te(e)+1);return ne(e,t,0,t.length),t}(n=n.replace(/\0\0/g,"%")),d.length>t?0:($.set(d,e>>>0),d.length-1)}for(var ot=Array(256),st=0;256>st;++st)ot[st]=String.fromCharCode(st);Z=ot,Q=r.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},r.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},Object.assign(pe.prototype,{get(e){return this.$a[e]},has(e){return void 0!==this.$a[e]},kb(e){var t=this.nb.pop()||this.$a.length;return this.$a[t]=e,t},jb(e){this.$a[e]=void 0,this.nb.push(e)}}),ce.$a.push({value:void 0},{value:null},{value:!0},{value:!1}),ce.cb=ce.$a.length,r.count_emval_handles=()=>{for(var e=0,t=ce.cb;t{await r.wb(e,t,n)}))},a:function(e,t,n){throw new Y(e>>>=0).kb(t>>>0,n>>>0),e},x:function(){return 0},ba:function(){},O:function(){},Q:function(){},ca:function(){return 0},$:function(){},W:function(){},_:function(){},D:function(){},P:function(){},M:function(){},aa:function(){},N:function(){},G:function(e,t,n,r,a){var i=-1!=(t=ae(t>>>=0)).indexOf("u");i&&(a=(1n<<64n)-1n),ue(e>>>0,{name:t,fromWireType:e=>e,toWireType:function(e,n){if("bigint"!=typeof n&&"number"!=typeof n)throw new TypeError(`Cannot convert "${re(n)}" to ${this.name}`);if(na)throw new TypeError(`Passing a number "${re(n)}" from JS side to C/C++ side to an argument of type "${t}", which is outside the valid range [${r}, ${a}]!`);return n},argPackAdvance:8,readValueFromPointer:de(t,n>>>0,!i),eb:null})},ga:function(e,t,n,r){ue(e>>>0,{name:t=ae(t>>>0),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?n:r},argPackAdvance:8,readValueFromPointer:function(e){return this.fromWireType(_[e>>>0])},eb:null})},fa:function(e,t){ue(e>>>0,{name:t=ae(t>>>0),fromWireType:e=>{var t=ye(e);return me(e),t},toWireType:(e,t)=>be(t),argPackAdvance:8,readValueFromPointer:we,eb:null})},F:function(e,t,n){ue(e>>>0,{name:t=ae(t>>>0),fromWireType:e=>e,toWireType:(e,t)=>t,argPackAdvance:8,readValueFromPointer:ve(t,n>>>0),eb:null})},t:function(e,t,n,r,a){if(e>>>=0,n>>>=0,t=ae(t>>>0),-1===a&&(a=4294967295),a=e=>e,0===r){var i=32-8*n;a=e=>e<>>i}var o=t.includes("unsigned")?function(e,t){return t>>>0}:function(e,t){return t};ue(e,{name:t,fromWireType:a,toWireType:o,argPackAdvance:8,readValueFromPointer:de(t,n,0!==r),eb:null})},n:function(e,t,n){function r(e){return new a($.buffer,E[e+4>>>2>>>0],E[e>>>2>>>0])}var a=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array][t];ue(e>>>0,{name:n=ae(n>>>0),fromWireType:r,argPackAdvance:8,readValueFromPointer:r},{tb:!0})},H:function(e,t){var n="std::string"===(t=ae(t>>>0));ue(e>>>0,{name:t,fromWireType:function(e){var t=E[e>>>2>>>0],r=e+4;if(n)for(var a=r,i=0;i<=t;++i){var o=r+i;if(i==t||0==_[o>>>0]){if(a=ee(a,o-a),void 0===s)var s=a;else s+=String.fromCharCode(0),s+=a;a=o+1}}else{for(s=Array(t),i=0;i>>0]);s=s.join("")}return ft(e),s},toWireType:function(e,t){t instanceof ArrayBuffer&&(t=new Uint8Array(t));var r="string"==typeof t;if(!(r||t instanceof Uint8Array||t instanceof Uint8ClampedArray||t instanceof Int8Array))throw new Q("Cannot pass non-string to std::string");var a=n&&r?te(t):t.length,i=ct(4+a+1),o=i+4;if(E[i>>>2>>>0]=a,n&&r)ne(t,_,o,a+1);else if(r)for(r=0;r>>0]=s}else for(r=0;r>>0]=t[r];return null!==e&&e.push(ft,i),i},argPackAdvance:8,readValueFromPointer:$e,eb(e){ft(e)}})},z:function(e,t,n){if(t>>>=0,n=ae(n>>>=0),2===t)var r=xe,a=Se,i=Ce,o=()=>S,s=1;else 4===t&&(r=Ee,a=Ie,i=Te,o=()=>E,s=2);ue(e>>>0,{name:n,fromWireType:e=>{for(var n,a=E[e>>>2>>>0],i=o(),u=e+4,l=0;l<=a;++l){var d=e+4+l*t;(l==a||0==i[d>>>s])&&(u=r(u,d-u),void 0===n?n=u:(n+=String.fromCharCode(0),n+=u),u=d+t)}return ft(e),n},toWireType:(e,r)=>{if("string"!=typeof r)throw new Q(`Cannot pass non-string to C++ string type ${n}`);var o=i(r),u=ct(4+o+t);return E[u>>>2]=o>>s,a(r,u+4,o+t),null!==e&&e.push(ft,u),u},argPackAdvance:8,readValueFromPointer:we,eb(e){ft(e)}})},ha:function(e,t){ue(e>>>0,{ub:!0,name:t=ae(t>>>0),argPackAdvance:0,fromWireType:()=>{},toWireType:()=>{}})},da:()=>1,s:function(e,t,n){return t>>>=0,n>>>=0,e=ye(e>>>0),t=Ae(t,"emval::as"),ke(t,n,e)},w:function(e){return e>>>=0,Ve((()=>(e=ye(e)).then(be)))},o:function(e,t,n,r){return n>>>=0,r>>>=0,(e=Le[e>>>0])(null,t=ye(t>>>0),n,r)},k:function(e,t,n,r,a){return n>>>=0,r>>>=0,a>>>=0,(e=Le[e>>>0])(t=ye(t>>>0),t[n=Ge(n)],r,a)},b:me,A:function(e,t){return t>>>=0,(e=ye(e>>>0))==ye(t)},m:function(e){return 0==(e>>>=0)?be(je()):(e=Ge(e),be(je()[e]))},i:function(e,t,n){t=((e,t)=>{for(var n=Array(e),r=0;r>>2>>>0],"parameter "+r);return n})(e,t>>>0);var r=t.shift();e--;var a="return function (obj, func, destructorsRef, args) {\n",i=0,o=[];0===n&&o.push("obj");for(var s=["retType"],u=[r],l=0;le.name)).join(", ")}) => ${r.name}>`,(e=>{var t=Le.length;return Le.push(e),t})(qe(n,e))},r:function(e,t){return t>>>=0,e=ye(e>>>0),t=ye(t),be(e[t])},e:function(e){4<(e>>>=0)&&(ce.get(e).pb+=1)},u:function(){return be([])},l:function(e){e=ye(e>>>0);for(var t=Array(e.length),n=0;n>>0))},j:function(){return be({})},h:function(e){for(var t=ye(e>>>=0);t.length;){var n=t.pop();t.pop()(n)}me(e)},g:function(e,t,n){t>>>=0,n>>>=0,e=ye(e>>>0),t=ye(t),n=ye(n),e[t]=n},c:function(e,t){return t>>>=0,e=(e=Ae(e>>>0,"_emval_take_value")).readValueFromPointer(t),be(e)},T:function(e,t){e=-9007199254740992>e||9007199254740992>>=0,e=new Date(1e3*e),C[t>>>2>>>0]=e.getUTCSeconds(),C[t+4>>>2>>>0]=e.getUTCMinutes(),C[t+8>>>2>>>0]=e.getUTCHours(),C[t+12>>>2>>>0]=e.getUTCDate(),C[t+16>>>2>>>0]=e.getUTCMonth(),C[t+20>>>2>>>0]=e.getUTCFullYear()-1900,C[t+24>>>2>>>0]=e.getUTCDay(),C[t+28>>>2>>>0]=(e.getTime()-Date.UTC(e.getUTCFullYear(),0,1,0,0,0,0))/864e5|0},U:function(e,t){e=-9007199254740992>e||9007199254740992>>=0,e=new Date(1e3*e),C[t>>>2>>>0]=e.getSeconds(),C[t+4>>>2>>>0]=e.getMinutes(),C[t+8>>>2>>>0]=e.getHours(),C[t+12>>>2>>>0]=e.getDate(),C[t+16>>>2>>>0]=e.getMonth(),C[t+20>>>2>>>0]=e.getFullYear()-1900,C[t+24>>>2>>>0]=e.getDay(),C[t+28>>>2>>>0]=(Ke(e.getFullYear())?Ye:Ze)[e.getMonth()]+e.getDate()-1|0,C[t+36>>>2>>>0]=-60*e.getTimezoneOffset();var n=new Date(e.getFullYear(),6,1).getTimezoneOffset(),r=new Date(e.getFullYear(),0,1).getTimezoneOffset();C[t+32>>>2>>>0]=0|(n!=r&&e.getTimezoneOffset()==Math.min(r,n))},V:function(e){e>>>=0;var t=new Date(C[e+20>>>2>>>0]+1900,C[e+16>>>2>>>0],C[e+12>>>2>>>0],C[e+8>>>2>>>0],C[e+4>>>2>>>0],C[e>>>2>>>0],0),n=C[e+32>>>2>>>0],r=t.getTimezoneOffset(),a=new Date(t.getFullYear(),6,1).getTimezoneOffset(),i=new Date(t.getFullYear(),0,1).getTimezoneOffset(),o=Math.min(i,a);return 0>n?C[e+32>>>2>>>0]=+(a!=i&&o==r):0>>2>>>0]=t.getDay(),C[e+28>>>2>>>0]=(Ke(t.getFullYear())?Ye:Ze)[t.getMonth()]+t.getDate()-1|0,C[e>>>2>>>0]=t.getSeconds(),C[e+4>>>2>>>0]=t.getMinutes(),C[e+8>>>2>>>0]=t.getHours(),C[e+12>>>2>>>0]=t.getDate(),C[e+16>>>2>>>0]=t.getMonth(),C[e+20>>>2>>>0]=t.getYear(),e=t.getTime(),isNaN(e)?(C[pt()>>>2>>>0]=61,e=-1):e/=1e3,BigInt(e)},R:function(){return-52},S:function(){},K:function(e,t,n){function r(e){return(e=e.toTimeString().match(/\(([A-Za-z ]+)\)$/))?e[1]:"GMT"}n>>>=0;var a=(new Date).getFullYear(),i=new Date(a,0,1),o=new Date(a,6,1);a=i.getTimezoneOffset();var s=o.getTimezoneOffset();E[e>>>0>>>2>>>0]=60*Math.max(a,s),C[t>>>0>>>2>>>0]=+(a!=s),e=r(i),t=r(o),e=Qe(e),t=Qe(t),s>>2>>>0]=e,E[n+4>>>2>>>0]=t):(E[n>>>2>>>0]=t,E[n+4>>>2>>>0]=e)},v:()=>{W("")},f:function(e,t,n){return e>>>=0,t=Je(t>>>0,n>>>0),q[e].apply(null,t)},I:function(e,t,n){return e>>>=0,t=Je(t>>>0,n>>>0),q[e].apply(null,t)},E:()=>Date.now(),L:function(){return 4294901760},q:()=>performance.now(),J:function(e){e>>>=0;var t=_.length;if(4294901760=n;n*=2){var r=t*(1+.2/n);r=Math.min(r,e+100663296);var a=Math;r=Math.max(e,r);e:{a=(a.min.call(a,4294901760,r+(65536-r%65536)%65536)-w.buffer.byteLength+65535)/65536;try{w.grow(a),R();var i=1;break e}catch{}i=void 0}if(i)return!0}return!1},Y:function(e,t){e>>>=0,t>>>=0;var n=0;return tt().forEach(((r,a)=>{var i=t+n;for(a=E[e+4*a>>>2>>>0]=i,i=0;i>>0>>>0]=r.charCodeAt(i);$[a>>>0>>>0]=0,n+=r.length+1})),0},Z:function(e,t){e>>>=0,t>>>=0;var n=tt();E[e>>>2>>>0]=n.length;var r=0;return n.forEach((e=>r+=e.length+1)),E[t>>>2>>>0]=r,0},y:()=>52,C:function(){return 52},X:function(){return 70},B:function(e,t,n,r){t>>>=0,n>>>=0,r>>>=0;for(var a=0,i=0;i>>2>>>0],s=E[t+4>>>2>>>0];t+=8;for(var u=0;u>>0],d=nt[e];0===l||10===l?((1===e?y:b)(J(d,0)),d.length=0):d.push(l)}a+=s}return E[r>>>2>>>0]=a,0},ea:it,p:function(e,t,n,r){return it(e>>>0,t>>>0,n>>>0,r>>>0)}},lt=function(){function e(e){return lt=e.exports,lt=function(){var e=lt,t={};for(let[n,r]of Object.entries(e))t[n]="function"==typeof r?function(){Pe.push(n);try{return r.apply(null,arguments)}finally{O||(Pe.pop(),ze&&1===Re&&0===Pe.length&&(Re=0,Oe(wt),typeof Fibers<"u"&&Fibers.Hb()))}}:r;return t}(),lt=function(){var e=lt,t=e=>()=>e()>>>0,n=e=>t=>e(t)>>>0;return(e=Object.assign({},e)).Oa=t(e.Oa),e.Pa=n(e.Pa),e.Ra=n(e.Ra),e.Ta=t(e.Ta),e.Va=n(e.Va),e}(),w=lt.ja,R(),B.unshift(lt.ka),0==--M&&(null!==D&&(clearInterval(D),D=null),N&&(e=N,N=null,e())),lt}var t={a:ut};if(M++,r.instantiateWasm)try{return r.instantiateWasm(t,e)}catch(e){b(`Module.instantiateWasm callback failed with error: ${e}`),n(e)}return function(e,t){var n=U;return"function"!=typeof WebAssembly.instantiateStreaming||V(n)||H(n)||f||"function"!=typeof fetch?j(n,e,t):fetch(n,{credentials:"same-origin"}).then((r=>WebAssembly.instantiateStreaming(r,e).then(t,(function(r){return b(`wasm streaming compile failed: ${r}`),b("falling back to ArrayBuffer instantiation"),j(n,e,t)}))))}(t,(function(t){e(t.instance)})).catch(n),{}}();r._OrtInit=(e,t)=>(r._OrtInit=lt.la)(e,t),r._OrtGetLastError=(e,t)=>(r._OrtGetLastError=lt.ma)(e,t),r._OrtCreateSessionOptions=(e,t,n,a,i,o,s,u,l,d)=>(r._OrtCreateSessionOptions=lt.na)(e,t,n,a,i,o,s,u,l,d),r._OrtAppendExecutionProvider=(e,t)=>(r._OrtAppendExecutionProvider=lt.oa)(e,t),r._OrtAddFreeDimensionOverride=(e,t,n)=>(r._OrtAddFreeDimensionOverride=lt.pa)(e,t,n),r._OrtAddSessionConfigEntry=(e,t,n)=>(r._OrtAddSessionConfigEntry=lt.qa)(e,t,n),r._OrtReleaseSessionOptions=e=>(r._OrtReleaseSessionOptions=lt.ra)(e),r._OrtCreateSession=(e,t,n)=>(r._OrtCreateSession=lt.sa)(e,t,n),r._OrtReleaseSession=e=>(r._OrtReleaseSession=lt.ta)(e),r._OrtGetInputOutputCount=(e,t,n)=>(r._OrtGetInputOutputCount=lt.ua)(e,t,n),r._OrtGetInputName=(e,t)=>(r._OrtGetInputName=lt.va)(e,t),r._OrtGetOutputName=(e,t)=>(r._OrtGetOutputName=lt.wa)(e,t),r._OrtFree=e=>(r._OrtFree=lt.xa)(e),r._OrtCreateTensor=(e,t,n,a,i,o)=>(r._OrtCreateTensor=lt.ya)(e,t,n,a,i,o),r._OrtGetTensorData=(e,t,n,a,i)=>(r._OrtGetTensorData=lt.za)(e,t,n,a,i),r._OrtReleaseTensor=e=>(r._OrtReleaseTensor=lt.Aa)(e),r._OrtCreateRunOptions=(e,t,n,a)=>(r._OrtCreateRunOptions=lt.Ba)(e,t,n,a),r._OrtAddRunConfigEntry=(e,t,n)=>(r._OrtAddRunConfigEntry=lt.Ca)(e,t,n),r._OrtReleaseRunOptions=e=>(r._OrtReleaseRunOptions=lt.Da)(e),r._OrtCreateBinding=e=>(r._OrtCreateBinding=lt.Ea)(e),r._OrtBindInput=(e,t,n)=>(r._OrtBindInput=lt.Fa)(e,t,n),r._OrtBindOutput=(e,t,n,a)=>(r._OrtBindOutput=lt.Ga)(e,t,n,a),r._OrtClearBoundOutputs=e=>(r._OrtClearBoundOutputs=lt.Ha)(e),r._OrtReleaseBinding=e=>(r._OrtReleaseBinding=lt.Ia)(e),r._OrtRunWithBinding=(e,t,n,a,i)=>(r._OrtRunWithBinding=lt.Ja)(e,t,n,a,i),r._OrtRun=(e,t,n,a,i,o,s,u)=>(r._OrtRun=lt.Ka)(e,t,n,a,i,o,s,u),r._OrtEndProfiling=e=>(r._OrtEndProfiling=lt.La)(e),r._JsepOutput=(e,t,n)=>(r._JsepOutput=lt.Ma)(e,t,n),r._JsepGetNodeName=e=>(r._JsepGetNodeName=lt.Na)(e);var dt,pt=()=>(pt=lt.Oa)(),ct=r._malloc=e=>(ct=r._malloc=lt.Pa)(e),ft=r._free=e=>(ft=r._free=lt.Qa)(e),ht=e=>(ht=lt.Ra)(e),mt=()=>(mt=lt.Ta)(),gt=e=>(gt=lt.Ua)(e),yt=e=>(yt=lt.Va)(e),bt=e=>(bt=lt.Xa)(e),wt=()=>(wt=lt.Ya)(),vt=e=>(vt=lt.Za)(e),$t=()=>($t=lt._a)();function _t(){if(!(0ne(e,_,t,n),r.lengthBytesUTF8=te,N=function e(){dt||_t(),dt||(N=e)},_t(),e.ready});"object"==typeof n&&"object"==typeof a?a.exports=o:void 0===(r=(()=>o).apply(t,[]))||(e.exports=r)})),be=V((()=>{})),we=V((()=>{})),ve={};H(ve,{cpus:()=>$e});var $e,_e,xe,Se,Ce,Ee,Ie,Te,Ae,ke,Oe,Re,ze,Be,Pe,Me,De,Ne,We,Ue,Ve,He,Le,Fe,Ge,je,qe,Ke,Ye,Ze,Qe,Xe,Je,et,tt,nt,rt,at,it,ot,st,ut,lt,dt,pt,ct,ft,ht,mt,gt,yt,bt,wt,vt,$t,_t,xt,St,Ct,Et,It,Tt,At,kt,Ot,Rt,zt,Bt,Pt,Mt,Dt,Nt,Wt,Ut,Vt,Ht,Lt,Ft,Gt,jt,qt,Kt,Yt,Zt,Qt,Xt,Jt,en,tn,nn,rn,an,on,sn,un,ln,dn,pn,cn,fn,hn,mn,gn,yn,bn,wn,vn,$n,_n,xn,Sn,Cn,En,In,Tn,An,kn,On,Rn,zn,Bn,Pn,Mn,Dn,Nn,Wn,Un,Vn,Hn,Ln,Fn,Gn,jn,qn,Kn,Yn,Zn,Qn,Xn,Jn,er,tr,nr,rr,ar,ir,or,sr,ur,lr,dr,pr,cr,fr,hr,mr,gr,yr,br,wr,vr,$r,_r,xr,Sr,Cr,Er,Ir,Tr,Ar,kr,Or,Rr,zr,Br,Pr,Mr,Dr,Nr,Wr,Ur,Vr,Hr,Lr,Fr,Gr,jr,qr,Kr,Yr,Zr,Qr,Xr,Jr,ea,ta,na,ra,aa,ia,oa,sa,ua,la,da,pa,ca,fa,ha,ma,ga,ya,ba,wa,va,$a,_a,xa,Sa,Ca,Ea,Ia,Ta,Aa,ka,Oa,Ra,za,Ba,Pa,Ma,Da,Na,Wa,Ua,Va,Ha,La,Fa,Ga,ja,qa,Ka,Ya,Za,Qa,Xa,Ja,ei,ti,ni,ri,ai,ii,oi,si,ui,li,di,pi,ci,fi,hi,mi,gi,yi,bi,wi,vi,$i,_i,xi,Si,Ci,Ei,Ii,Ti,Ai,ki,Oi,Ri,zi,Bi,Pi,Mi,Di,Ni,Wi,Ui,Vi,Hi,Li,Fi,Gi,ji,qi,Ki,Yi,Zi,Qi,Xi,Ji,eo,to,no,ro,ao,io,oo,so,uo,lo,po,co,fo,ho,mo,go,yo,bo,wo,vo,$o,_o,xo,So,Co,Eo,Io,To,Ao,ko,Oo,Ro,zo,Bo,Po,Mo,Do,No,Wo,Uo,Vo,Ho,Lo,Fo,Go,jo,qo,Ko,Yo,Zo,Qo,Xo,Jo,es,ts,ns,rs,as,is,os,ss,us,ls,ds,ps,cs,fs,hs=U((()=>{$e=void 0})),ms=V(((a,i)=>{var o,s=(o=(o=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0)||P,function(e={}){function t(){return R.buffer!=P.buffer&&q(),P}function r(){return R.buffer!=P.buffer&&q(),M}function a(){return R.buffer!=P.buffer&&q(),D}function i(){return R.buffer!=P.buffer&&q(),N}function s(){return R.buffer!=P.buffer&&q(),W}function u(){return R.buffer!=P.buffer&&q(),U}function l(){return R.buffer!=P.buffer&&q(),V}function d(){return R.buffer!=P.buffer&&q(),G}var p,c,f=e;f.ready=new Promise(((e,t)=>{p=e,c=t})),f.mountExternalData=(e,t)=>{(f.Fb||(f.Fb=new Map)).set(e,t)},f.unmountExternalData=()=>{delete f.Fb},f.jsepInit=(e,t,n,r,a,i,o,s)=>{f.rc=e,f.$b=t,f.bc=n,f.Ob=r,f.ac=a,f.eb=i,f.cc=o,f.dc=s,t=(e,t,n)=>(...r)=>{let a=At,i=t?.();r=e(...r);let o=t?.();return i!==o&&(e=o,n(i),t=n=null),At!=a?new Promise(((e,t)=>{Pt={resolve:e,reject:t}})):r},n=t=>async(...n)=>{try{if(f.Eb)throw Error("Session already started");let r=f.Eb={fc:n[0],errors:[]},a=await t(...n);if(f.Eb!==r)throw Error("Session mismatch");e.flush();let i=r.errors;if(0e)),0f._OrtCreateSession),(e=>f._OrtCreateSession=e)),f._OrtRun=n(t(f._OrtRun,(()=>f._OrtRun),(e=>f._OrtRun=e))),f._OrtRunWithBinding=n(t(f._OrtRunWithBinding,(()=>f._OrtRunWithBinding),(e=>f._OrtRunWithBinding=e))),f._OrtBindInput=t(f._OrtBindInput,(()=>f._OrtBindInput),(e=>f._OrtBindInput=e)),f.jsepRegisterBuffer=(t,n,r,a)=>e.registerBuffer(t,n,r,a),f.jsepUnregisterBuffers=t=>{e.unregisterBuffers(t)},f.jsepGetBuffer=t=>e.getBuffer(t),f.jsepCreateDownloader=(t,n,r)=>e.createDownloader(t,n,r),f.jsepOnRunStart=()=>e.onRunStart()};var h,m,g,y=Object.assign({},f),b="./this.program",w=(e,t)=>{throw t},v="object"==typeof window,$="function"==typeof importScripts,_="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,x=f.ENVIRONMENT_IS_PTHREAD||!1,S="";function C(e){return f.locateFile?f.locateFile(e,S):S+e}if(_){var E=(fe(),L(le)),I=(ge(),L(he));let e;S=$?I.dirname(S)+"/":"//",h=(e,t)=>(e=ie(e)?new URL(e):I.normalize(e),E.readFileSync(e,t?void 0:"utf8")),g=e=>((e=h(e,!0)).buffer||(e=new Uint8Array(e)),e),m=(e,t,n,r=!0)=>{e=ie(e)?new URL(e):I.normalize(e),E.readFile(e,r?void 0:"utf8",((e,a)=>{e?n(e):t(r?a.buffer:a)}))},!f.thisProgram&&1{throw process.exitCode=e,t},f.inspect=()=>"[Emscripten Module object]";try{e=be()}catch(e){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),e}n.g.Worker=e.Worker}else(v||$)&&($?S=self.location.href:typeof document<"u"&&document.currentScript&&(S=document.currentScript.src),typeof o<"u"&&o&&(S=o),S=0!==S.indexOf("blob:")?S.substr(0,S.replace(/[?#].*/,"").lastIndexOf("/")+1):"",_||(h=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},$&&(g=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),m=(e,t,n)=>{var r=new XMLHttpRequest;r.open("GET",e,!0),r.responseType="arraybuffer",r.onload=()=>{200==r.status||0==r.status&&r.response?t(r.response):n()},r.onerror=n,r.send(null)}));_&&typeof performance>"u"&&(n.g.performance=we().performance);var T=console.log.bind(console),A=console.error.bind(console);_&&(T=(...e)=>E.writeSync(1,e.join(" ")+"\n"),A=(...e)=>E.writeSync(2,e.join(" ")+"\n"));var k=T,O=A;Object.assign(f,y),y=null,"object"!=typeof WebAssembly&&ne("no native wasm support detected");var R,z,B,P,M,D,N,W,U,V,H,F,G,j=!1;function q(){var e=R.buffer;f.HEAP8=P=new Int8Array(e),f.HEAP16=D=new Int16Array(e),f.HEAPU8=M=new Uint8Array(e),f.HEAPU16=N=new Uint16Array(e),f.HEAP32=W=new Int32Array(e),f.HEAPU32=U=new Uint32Array(e),f.HEAPF32=V=new Float32Array(e),f.HEAPF64=G=new Float64Array(e),f.HEAP64=H=new BigInt64Array(e),f.HEAPU64=F=new BigUint64Array(e)}var K=16777216;if(x)R=f.wasmMemory;else if(f.wasmMemory)R=f.wasmMemory;else if(!((R=new WebAssembly.Memory({initial:K/65536,maximum:65536,shared:!0})).buffer instanceof SharedArrayBuffer))throw O("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"),_&&O("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)"),Error("bad memory");q(),K=R.buffer.byteLength;var Y=[],Z=[],Q=[],X=0,J=null,ee=null;function te(){if(0==--X&&(null!==J&&(clearInterval(J),J=null),ee)){var e=ee;ee=null,e()}}function ne(e){throw O(e="Aborted("+e+")"),j=!0,B=1,e=new WebAssembly.RuntimeError(e+". Build with -sASSERTIONS for more info."),c(e),e}var re,ae=e=>e.startsWith("data:application/octet-stream;base64,"),ie=e=>e.startsWith("file://");function oe(e){if(g)return g(e);throw"both async and sync fetching of the wasm failed"}function se(e,t,n){return function(e){if(v||$){if("function"==typeof fetch&&!ie(e))return fetch(e,{credentials:"same-origin"}).then((t=>{if(!t.ok)throw"failed to load wasm binary file at '"+e+"'";return t.arrayBuffer()})).catch((()=>oe(e)));if(m)return new Promise(((t,n)=>{m(e,(e=>t(new Uint8Array(e))),n)}))}return Promise.resolve().then((()=>oe(e)))}(e).then((e=>WebAssembly.instantiate(e,t))).then((e=>e)).then(n,(e=>{O(`failed to asynchronously prepare wasm: ${e}`),ne(e)}))}ae(re="ort-wasm-simd-threaded.wasm")||(re=C(re));var ue={946748:(e,t,n,a)=>{if(typeof f>"u"||!f.Fb)return 1;if((e=_e(e>>>0)).startsWith("./")&&(e=e.substring(2)),!(e=f.Fb.get(e)))return 2;if(a>>>=0,(t>>>=0)+(n>>>=0)>e.byteLength)return 3;try{return r().set(e.subarray(t,t+n),a>>>0),0}catch{return 4}},947249:e=>f.$b(e),947282:e=>f.bc(e),947314:(e,t,n)=>{f.Ob(e,t,n,!0)},947353:(e,t,n)=>{f.Ob(e,t,n)},947386:e=>{f.eb("Abs",e,void 0)},947437:e=>{f.eb("Neg",e,void 0)},947488:e=>{f.eb("Floor",e,void 0)},947541:e=>{f.eb("Ceil",e,void 0)},947593:e=>{f.eb("Reciprocal",e,void 0)},947651:e=>{f.eb("Sqrt",e,void 0)},947703:e=>{f.eb("Exp",e,void 0)},947754:e=>{f.eb("Erf",e,void 0)},947805:e=>{f.eb("Sigmoid",e,void 0)},947860:(e,t,n)=>{f.eb("HardSigmoid",e,{alpha:t,beta:n})},947939:e=>{f.eb("Log",e,void 0)},947990:e=>{f.eb("Sin",e,void 0)},948041:e=>{f.eb("Cos",e,void 0)},948092:e=>{f.eb("Tan",e,void 0)},948143:e=>{f.eb("Asin",e,void 0)},948195:e=>{f.eb("Acos",e,void 0)},948247:e=>{f.eb("Atan",e,void 0)},948299:e=>{f.eb("Sinh",e,void 0)},948351:e=>{f.eb("Cosh",e,void 0)},948403:e=>{f.eb("Asinh",e,void 0)},948456:e=>{f.eb("Acosh",e,void 0)},948509:e=>{f.eb("Atanh",e,void 0)},948562:e=>{f.eb("Tanh",e,void 0)},948614:e=>{f.eb("Not",e,void 0)},948665:(e,t,n)=>{f.eb("Clip",e,{min:t,max:n})},948734:e=>{f.eb("Clip",e,void 0)},948786:(e,t)=>{f.eb("Elu",e,{alpha:t})},948844:e=>{f.eb("Relu",e,void 0)},948896:(e,t)=>{f.eb("LeakyRelu",e,{alpha:t})},948960:(e,t)=>{f.eb("ThresholdedRelu",e,{alpha:t})},949030:(e,t)=>{f.eb("Cast",e,{to:t})},949088:e=>{f.eb("Add",e,void 0)},949139:e=>{f.eb("Sub",e,void 0)},949190:e=>{f.eb("Mul",e,void 0)},949241:e=>{f.eb("Div",e,void 0)},949292:e=>{f.eb("Pow",e,void 0)},949343:e=>{f.eb("Equal",e,void 0)},949396:e=>{f.eb("Greater",e,void 0)},949451:e=>{f.eb("GreaterOrEqual",e,void 0)},949513:e=>{f.eb("Less",e,void 0)},949565:e=>{f.eb("LessOrEqual",e,void 0)},949624:(e,t,n,r,a)=>{f.eb("ReduceMean",e,{keepDims:!!t,noopWithEmptyAxes:!!n,axes:r?Array.from(s().subarray(r>>>0,a>>>0)):[]})},949783:(e,t,n,r,a)=>{f.eb("ReduceMax",e,{keepDims:!!t,noopWithEmptyAxes:!!n,axes:r?Array.from(s().subarray(r>>>0,a>>>0)):[]})},949941:(e,t,n,r,a)=>{f.eb("ReduceMin",e,{keepDims:!!t,noopWithEmptyAxes:!!n,axes:r?Array.from(s().subarray(r>>>0,a>>>0)):[]})},950099:(e,t,n,r,a)=>{f.eb("ReduceProd",e,{keepDims:!!t,noopWithEmptyAxes:!!n,axes:r?Array.from(s().subarray(r>>>0,a>>>0)):[]})},950258:(e,t,n,r,a)=>{f.eb("ReduceSum",e,{keepDims:!!t,noopWithEmptyAxes:!!n,axes:r?Array.from(s().subarray(r>>>0,a>>>0)):[]})},950416:(e,t,n,r,a)=>{f.eb("ReduceL1",e,{keepDims:!!t,noopWithEmptyAxes:!!n,axes:r?Array.from(s().subarray(r>>>0,a>>>0)):[]})},950573:(e,t,n,r,a)=>{f.eb("ReduceL2",e,{keepDims:!!t,noopWithEmptyAxes:!!n,axes:r?Array.from(s().subarray(r>>>0,a>>>0)):[]})},950730:(e,t,n,r,a)=>{f.eb("ReduceLogSum",e,{keepDims:!!t,noopWithEmptyAxes:!!n,axes:r?Array.from(s().subarray(r>>>0,a>>>0)):[]})},950891:(e,t,n,r,a)=>{f.eb("ReduceSumSquare",e,{keepDims:!!t,noopWithEmptyAxes:!!n,axes:r?Array.from(s().subarray(r>>>0,a>>>0)):[]})},951055:(e,t,n,r,a)=>{f.eb("ReduceLogSumExp",e,{keepDims:!!t,noopWithEmptyAxes:!!n,axes:r?Array.from(s().subarray(r>>>0,a>>>0)):[]})},951219:e=>{f.eb("Where",e,void 0)},951272:(e,t,n)=>{f.eb("Transpose",e,{perm:t?Array.from(s().subarray(t>>>0,n>>>0)):[]})},951380:(e,n,r,a,i,o,u,l,d,p,c,h,m,g,y)=>{f.eb("ConvTranspose",e,{format:d?"NHWC":"NCHW",autoPad:n,dilations:[r],group:a,kernel_shape:[i],pads:[o,u],strides:[l],wIsConst:()=>!!t()[p>>>0],outputPadding:c?Array.from(s().subarray(c>>>0,h>>>0)):[],outputShape:m?Array.from(s().subarray(m>>>0,g>>>0)):[],activation:_e(y)})},951782:(e,n,r,a,i,o,u,l,d,p,c,h,m,g)=>{f.eb("ConvTranspose",e,{format:l?"NHWC":"NCHW",autoPad:n,dilations:Array.from(s().subarray(r>>>0,2+(r>>>0)>>>0)),group:a,kernelShape:Array.from(s().subarray(i>>>0,2+(i>>>0)>>>0)),pads:Array.from(s().subarray(o>>>0,4+(o>>>0)>>>0)),strides:Array.from(s().subarray(u>>>0,2+(u>>>0)>>>0)),wIsConst:()=>!!t()[d>>>0],outputPadding:p?Array.from(s().subarray(p>>>0,c>>>0)):[],outputShape:h?Array.from(s().subarray(h>>>0,m>>>0)):[],activation:_e(g)})},952347:(e,n,r,a,i,o,u,l,d,p,c,h,m,g,y)=>{f.eb("ConvTranspose",e,{format:d?"NHWC":"NCHW",autoPad:n,dilations:[r],group:a,kernel_shape:[i],pads:[o,u],strides:[l],wIsConst:()=>!!t()[p>>>0],outputPadding:c?Array.from(s().subarray(c>>>0,h>>>0)):[],outputShape:m?Array.from(s().subarray(m>>>0,g>>>0)):[],activation:_e(y)})},952749:(e,n,r,a,i,o,u,l,d,p,c,h,m,g)=>{f.eb("ConvTranspose",e,{format:l?"NHWC":"NCHW",autoPad:n,dilations:Array.from(s().subarray(r>>>0,2+(r>>>0)>>>0)),group:a,kernelShape:Array.from(s().subarray(i>>>0,2+(i>>>0)>>>0)),pads:Array.from(s().subarray(o>>>0,4+(o>>>0)>>>0)),strides:Array.from(s().subarray(u>>>0,2+(u>>>0)>>>0)),wIsConst:()=>!!t()[d>>>0],outputPadding:p?Array.from(s().subarray(p>>>0,c>>>0)):[],outputShape:h?Array.from(s().subarray(h>>>0,m>>>0)):[],activation:_e(g)})},953314:(e,t)=>{f.eb("GlobalAveragePool",e,{format:t?"NHWC":"NCHW"})},953405:(e,t,n,r,a,i,o,s,u,l,d,p,c,h,m,g)=>{f.eb("AveragePool",e,{format:g?"NHWC":"NCHW",auto_pad:t,ceil_mode:n,count_include_pad:r,storage_order:a,dilations:[i,o],kernel_shape:[s,u],pads:[l,d,p,c],strides:[h,m]})},953689:(e,t)=>{f.eb("GlobalAveragePool",e,{format:t?"NHWC":"NCHW"})},953780:(e,t,n,r,a,i,o,s,u,l,d,p,c,h,m,g)=>{f.eb("AveragePool",e,{format:g?"NHWC":"NCHW",auto_pad:t,ceil_mode:n,count_include_pad:r,storage_order:a,dilations:[i,o],kernel_shape:[s,u],pads:[l,d,p,c],strides:[h,m]})},954064:(e,t)=>{f.eb("GlobalMaxPool",e,{format:t?"NHWC":"NCHW"})},954151:(e,t,n,r,a,i,o,s,u,l,d,p,c,h,m,g)=>{f.eb("MaxPool",e,{format:g?"NHWC":"NCHW",auto_pad:t,ceil_mode:n,count_include_pad:r,storage_order:a,dilations:[i,o],kernel_shape:[s,u],pads:[l,d,p,c],strides:[h,m]})},954431:(e,t)=>{f.eb("GlobalMaxPool",e,{format:t?"NHWC":"NCHW"})},954518:(e,t,n,r,a,i,o,s,u,l,d,p,c,h,m,g)=>{f.eb("MaxPool",e,{format:g?"NHWC":"NCHW",auto_pad:t,ceil_mode:n,count_include_pad:r,storage_order:a,dilations:[i,o],kernel_shape:[s,u],pads:[l,d,p,c],strides:[h,m]})},954798:(e,t,n,r,a)=>{f.eb("Gemm",e,{alpha:t,beta:n,transA:r,transB:a})},954902:e=>{f.eb("MatMul",e,void 0)},954956:(e,t,n,r)=>{f.eb("ArgMax",e,{keepDims:!!t,selectLastIndex:!!n,axis:r})},955064:(e,t,n,r)=>{f.eb("ArgMin",e,{keepDims:!!t,selectLastIndex:!!n,axis:r})},955172:(e,t)=>{f.eb("Softmax",e,{axis:t})},955235:(e,t)=>{f.eb("Concat",e,{axis:t})},955295:(e,t,n,r,a)=>{f.eb("Split",e,{axis:t,numOutputs:n,splitSizes:r?Array.from(s().subarray(r>>>0,a>>>0)):[]})},955435:e=>{f.eb("Expand",e,void 0)},955489:(e,t)=>{f.eb("Gather",e,{axis:Number(t)})},955560:(e,t)=>{f.eb("GatherElements",e,{axis:Number(t)})},955639:(e,t,n,r,a,i,o,u,l,d,p)=>{f.eb("Resize",e,{antialias:t,axes:n?Array.from(s().subarray(n>>>0,r>>>0)):[],coordinateTransformMode:_e(a),cubicCoeffA:i,excludeOutside:o,extrapolationValue:u,keepAspectRatioPolicy:_e(l),mode:_e(d),nearestMode:_e(p)})},955985:(e,t,n,r,a,i,o)=>{f.eb("Slice",e,{starts:t?Array.from(s().subarray(t>>>0,n>>>0)):[],ends:r?Array.from(s().subarray(r>>>0,a>>>0)):[],axes:i?Array.from(s().subarray(i>>>0,o>>>0)):[]})},956201:e=>{f.eb("Tile",e,void 0)},956253:(e,t,n)=>{f.eb("LayerNormalization",e,{axis:Number(t),epsilon:Number(n)})},956360:(e,t,n)=>{f.eb("InstanceNormalization",e,{epsilon:t,format:n?"NHWC":"NCHW"})},956474:(e,t,n)=>{f.eb("InstanceNormalization",e,{epsilon:t,format:n?"NHWC":"NCHW"})},956588:e=>{f.eb("Range",e,void 0)},956641:(e,t)=>{f.eb("Einsum",e,{equation:_e(t)})},956722:(e,t,n,r,a)=>{f.eb("Pad",e,{mode:t,value:n,pads:r?Array.from(s().subarray(r>>>0,a>>>0)):[]})},956849:(e,t,n,r,a,i)=>{f.eb("BatchNormalization",e,{epsilon:t,momentum:n,spatial:!!a,trainingMode:!!r,format:i?"NHWC":"NCHW"})},957018:(e,t,n,r,a,i)=>{f.eb("BatchNormalization",e,{epsilon:t,momentum:n,spatial:!!a,trainingMode:!!r,format:i?"NHWC":"NCHW"})},957187:(e,t,n)=>{f.eb("CumSum",e,{exclusive:Number(t),reverse:Number(n)})},957284:(e,t,n,r,a,i,o,u,l)=>{f.eb("Attention",e,{numHeads:t,isUnidirectional:n,maskFilterValue:r,scale:a,doRotary:i,qkvHiddenSizes:o?Array.from(s().subarray(Number(u)>>>0,Number(u)+o>>>0)):[],pastPresentShareBuffer:!!l})},957556:e=>{f.eb("Gelu",e,void 0)},957608:(e,t,n,r,a,i)=>{f.eb("MultiHeadAttention",e,{numHeads:t,isUnidirectional:n,maskFilterValue:r,scale:a,doRotary:i})},957767:e=>{f.eb("BiasAdd",e,void 0)},957822:e=>{f.eb("BiasSplitGelu",e,void 0)},957883:(e,t)=>{f.eb("SkipLayerNormalization",e,{epsilon:t})},957964:(e,n,r,a,i,o,u,d,p,c,h,m,g)=>{f.eb("Conv",e,{format:p?"NHWC":"NCHW",auto_pad:n,dilations:[r],group:a,kernel_shape:[i],pads:o?Array.from(s().subarray(o>>>0,u>>>0)):[],strides:[d],w_is_const:()=>!!t()[c>>>0],activation:_e(h),activation_params:m?Array.from(l().subarray(m>>>0,g>>>0)):[]})},958334:(e,n,r,a,i,o,u,d,p,c,h,m,g,y,b,w)=>{f.eb("Conv",e,{format:m?"NHWC":"NCHW",auto_pad:n,dilations:[r,a],group:i,kernel_shape:[o,u],pads:d?Array.from(s().subarray(d>>>0,p>>>0)):[],strides:[c,h],w_is_const:()=>!!t()[g>>>0],activation:_e(y),activation_params:b?Array.from(l().subarray(b>>>0,w>>>0)):[]})},958725:e=>{f.cc(e)},958759:(e,t)=>f.dc(e,t,f.Eb.fc,f.Eb.errors)};function de(e){this.name="ExitStatus",this.message=`Program terminated with exit(${e})`,this.status=e}var pe=e=>{e.terminate(),e.onmessage=()=>{}},ce=e=>{0==Ae.yb.length&&(Te(),Ae.Pb(Ae.yb[0]));var t=Ae.yb.pop();if(!t)return 6;Ae.zb.push(t),Ae.pb[e.xb]=t,t.xb=e.xb;var n={cmd:"run",start_routine:e.hc,arg:e.Vb,pthread_ptr:e.xb};return _&&t.unref(),t.postMessage(n,e.nc),0},me=0,ye=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,$e=(e,t,n)=>{var r=(t>>>=0)+n;for(n=t;e[n]&&!(n>=r);)++n;if(16(a=224==(240&a)?(15&a)<<12|i<<6|o:(7&a)<<18|i<<12|o<<6|63&e[t++])?r+=String.fromCharCode(a):(a-=65536,r+=String.fromCharCode(55296|a>>10,56320|1023&a))}}else r+=String.fromCharCode(a)}return r},_e=(e,t)=>(e>>>=0)?$e(r(),e,t):"",xe=e=>{var t=Tn();return e=e(),An(t),e};function Se(e,t){var n=arguments.length-2,r=arguments;return xe((()=>{for(var a=2*n,i=kn(8*a),o=i>>>3,s=0;s>>0]=u)}return xn(e,a,i,t)}))}function Ce(e){if(x)return Se(0,1,e);B=e,0{if(B=e,x)throw Oe(e),"unwind";Ce(e)},Ie=e=>{e instanceof de||"unwind"==e||w(1,e)};function Te(){var e=C("ort-wasm-simd-threaded.worker.js");e=new Worker(e),Ae.yb.push(e)}var Ae={yb:[],zb:[],Ub:[],pb:{},Ib(){x?(Ae.receiveObjectTransfer=Ae.ec,Ae.threadInitTLS=Ae.Tb,Ae.setExitStatus=Ae.Sb):function(){for(var e=f.numThreads;e--;)Te();Y.unshift((()=>{X++,function(e){x?e():Promise.all(Ae.yb.map(Ae.Pb)).then(e)}((()=>te()))}))}()},Sb:e=>B=e,sc:["$terminateWorker"],ic:()=>{for(var e of Ae.zb)pe(e);for(e of Ae.yb)pe(e);Ae.yb=[],Ae.zb=[],Ae.pb=[]},Rb:e=>{var t=e.xb;delete Ae.pb[t],Ae.yb.push(e),Ae.zb.splice(Ae.zb.indexOf(e),1),e.xb=0,Sn(t)},ec(){},Tb(){Ae.Ub.forEach((e=>e()))},Pb:e=>new Promise((t=>{e.onmessage=n=>{var r=(n=n.data).cmd;if(n.targetThread&&n.targetThread!=yn()){var a=Ae.pb[n.targetThread];a?a.postMessage(n,n.transferList):O(`Internal error! Worker sent a message "${r}" to target pthread ${n.targetThread}, but that thread no longer exists!`)}else"checkMailbox"===r?xt():"spawnThread"===r?ce(n):"cleanupThread"===r?Ae.Rb(Ae.pb[n.thread]):"killThread"===r?(n=n.thread,r=Ae.pb[n],delete Ae.pb[n],pe(r),Sn(n),Ae.zb.splice(Ae.zb.indexOf(r),1),r.xb=0):"cancelThread"===r?Ae.pb[n.thread].postMessage({cmd:"cancel"}):"loaded"===r?(e.loaded=!0,_&&!e.xb&&e.unref(),t(e)):"alert"===r?alert(`Thread ${n.threadId}: ${n.text}`):"setimmediate"===n.target?e.postMessage(n):"callHandler"===r?f[n.handler](...n.args):r&&O(`worker sent an unknown command ${r}`)},e.onerror=e=>{throw O(`worker sent an error! ${e.filename}:${e.lineno}: ${e.message}`),e},_&&(e.on("message",(t=>e.onmessage({data:t}))),e.on("error",(t=>e.onerror(t))));var n,r=[];for(n of["onExit"])f.hasOwnProperty(n)&&r.push(n);e.postMessage({cmd:"load",handlers:r,urlOrBlob:f.mainScriptUrlOrBlob||o,wasmMemory:R,wasmModule:z})}))};f.PThread=Ae;var ke=e=>{for(;0>>2>>>0]=e},this.Mb=function(e){u()[this.Db+8>>>2>>>0]=e},this.Ib=function(e,t){this.Kb(),this.pc(e),this.Mb(t)},this.Kb=function(){u()[this.Db+16>>>2>>>0]=0}}function ze(e,t,n,r){return x?Se(2,1,e,t,n,r):Be(e,t,n,r)}function Be(e,t,n,r){if(e>>>=0,t>>>=0,n>>>=0,r>>>=0,typeof SharedArrayBuffer>"u")return O("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;var a=[];return x&&0===a.length?ze(e,t,n,r):(e={hc:n,xb:e,Vb:r,nc:a},x?(e.qc="spawnThread",postMessage(e,a),0):ce(e))}function Pe(e,t,n){return x?Se(3,1,e,t,n):0}function Me(e,t){if(x)return Se(4,1,e,t)}f.establishStackSpace=()=>{var e=yn(),t=u()[e+52>>>2>>>0];e=u()[e+56>>>2>>>0],In(t,t-e),An(t)},f.invokeEntryPoint=(e,t)=>{e=On.apply(null,[e,t]),0{for(var t=0,n=0;n=r?t++:2047>=r?t+=2:55296<=r&&57343>=r?(t+=4,++n):t+=3}return t},Ne=(e,t,n,r)=>{if(!(0>>=0;r=n+r-1;for(var i=0;i=o&&(o=65536+((1023&o)<<10)|1023&e.charCodeAt(++i)),127>=o){if(n>=r)break;t[n++>>>0]=o}else{if(2047>=o){if(n+1>=r)break;t[n++>>>0]=192|o>>6}else{if(65535>=o){if(n+2>=r)break;t[n++>>>0]=224|o>>12}else{if(n+3>=r)break;t[n++>>>0]=240|o>>18,t[n++>>>0]=128|o>>12&63}t[n++>>>0]=128|o>>6&63}t[n++>>>0]=128|63&o}}return t[n>>>0]=0,n-a},We=(e,t,n)=>Ne(e,r(),t,n);function Ue(e,t){if(x)return Se(5,1,e,t)}function Ve(e,t,n){if(x)return Se(6,1,e,t,n)}function He(e,t,n){return x?Se(7,1,e,t,n):0}function Le(e,t){if(x)return Se(8,1,e,t)}function Fe(e,t,n){if(x)return Se(9,1,e,t,n)}function Ge(e,t,n,r){if(x)return Se(10,1,e,t,n,r)}function je(e,t,n,r){if(x)return Se(11,1,e,t,n,r)}function qe(e,t,n,r){if(x)return Se(12,1,e,t,n,r)}function Ke(e){if(x)return Se(13,1,e)}function Ye(e,t){if(x)return Se(14,1,e,t)}function Ze(e,t,n){if(x)return Se(15,1,e,t,n)}var Qe,Xe,Je=e=>{if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e},et=e=>{for(var t="";r()[e>>>0];)t+=Qe[r()[e++>>>0]];return t},tt={},nt={},rt={};function at(e,t,n={}){if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");!function(e,t,n={}){var r=t.name;if(!e)throw new Xe(`type "${r}" must have a positive integer typeid pointer`);if(nt.hasOwnProperty(e)){if(n.Yb)return;throw new Xe(`Cannot register type '${r}' twice`)}nt[e]=t,delete rt[e],tt.hasOwnProperty(e)&&(t=tt[e],delete tt[e],t.forEach((e=>e())))}(e,t,n)}var it=(e,n,o)=>{switch(n){case 1:return o?e=>t()[e>>>0>>>0]:e=>r()[e>>>0>>>0];case 2:return o?e=>a()[e>>>1>>>0]:e=>i()[e>>>1>>>0];case 4:return o?e=>s()[e>>>2>>>0]:e=>u()[e>>>2>>>0];case 8:return o?e=>H[e>>>3]:e=>F[e>>>3];default:throw new TypeError(`invalid integer width (${n}): ${e}`)}};function ot(){this.wb=[void 0],this.Nb=[]}var st=new ot;function ut(e){(e>>>=0)>=st.Db&&0==--st.get(e).Qb&&st.Mb(e)}var lt=e=>{if(!e)throw new Xe("Cannot use deleted val. handle = "+e);return st.get(e).value},dt=e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return st.Kb({Qb:1,value:e})}};function pt(e){return this.fromWireType(s()[e>>>2>>>0])}var ct=(e,t)=>{switch(t){case 4:return function(e){return this.fromWireType(l()[e>>>2>>>0])};case 8:return function(e){return this.fromWireType(d()[e>>>3>>>0])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}};function ft(e){return this.fromWireType(u()[e>>>2>>>0])}var ht=typeof TextDecoder<"u"?new TextDecoder("utf-16le"):void 0,mt=(e,t)=>{for(var n=e>>1,o=n+t/2;!(n>=o)&&i()[n>>>0];)++n;if(32<(n<<=1)-e&&ht)return ht.decode(r().slice(e,n));for(n="",o=0;!(o>=t/2);++o){var s=a()[e+2*o>>>1>>>0];if(0==s)break;n+=String.fromCharCode(s)}return n},gt=(e,t,n)=>{if(n??=2147483647,2>n)return 0;var r=t;n=(n-=2)<2*e.length?n/2:e.length;for(var i=0;i>>1>>>0]=o,t+=2}return a()[t>>>1>>>0]=0,t-r},yt=e=>2*e.length,bt=(e,t)=>{for(var n=0,r="";!(n>=t/4);){var a=s()[e+4*n>>>2>>>0];if(0==a)break;++n,65536<=a?(a-=65536,r+=String.fromCharCode(55296|a>>10,56320|1023&a)):r+=String.fromCharCode(a)}return r},wt=(e,t,n)=>{if(t>>>=0,n??=2147483647,4>n)return 0;var r=t;n=r+n-4;for(var a=0;a=i&&(i=65536+((1023&i)<<10)|1023&e.charCodeAt(++a)),s()[t>>>2>>>0]=i,(t+=4)+4>n)break}return s()[t>>>2>>>0]=0,t-r},vt=e=>{for(var t=0,n=0;n=r&&++n,t+=4}return t},$t=()=>{if(!(0>>=0,"function"==typeof Atomics.oc&&(Atomics.oc(s(),e>>>2,e).value.then(xt),e+=128,Atomics.store(s(),e>>>2,1))}f.__emscripten_thread_mailbox_await=_t;var xt=()=>{var e=yn();if(e&&(_t(e),!j))try{En(),$t()}catch(e){Ie(e)}};f.checkMailbox=xt;var St=[],Ct=(e,t)=>{var n=nt[e];if(void 0===n)throw e=vn(e),n=et(e),wn(e),new Xe(t+" has unknown type "+n);return n},Et=(e,t,n)=>{var r=[];return e=e.toWireType(r,n),r.length&&(u()[t>>>2>>>0]=dt(r)),e},It=e=>{try{e()}catch(e){ne(e)}},Tt=0,At=null,kt=0,Ot=[],Rt={},zt={},Bt=0,Pt=null,Mt=[];function Dt(e){return function(e){if(!j){if(0===Tt){var t=!1,n=!1;e(((e=0)=>{if(!j&&(kt=e,t=!0,n)){Tt=2,It((()=>Bn(At))),typeof Browser<"u"&&Browser.Jb.Xb&&Browser.Jb.resume(),e=!1;try{var r=function(){var e=s()[At+8>>>2>>>0];return e=mn[zt[e]],--me,e()}()}catch(t){r=t,e=!0}var a=!1;if(!At){var i=Pt;i&&(Pt=null,(e?i.reject:i.resolve)(r),a=!0)}if(e&&!a)throw r}})),n=!0,t||(Tt=1,At=function(){var e=bn(65548),t=e+12;u()[e>>>2>>>0]=t,u()[e+4>>>2>>>0]=t+65536,t=Ot[0];var n=Rt[t];return void 0===n&&(n=Bt++,Rt[t]=n,zt[n]=t),t=n,s()[e+8>>>2>>>0]=t,e}(),typeof Browser<"u"&&Browser.Jb.Xb&&Browser.Jb.pause(),It((()=>Rn(At))))}else 2===Tt?(Tt=0,It(Pn),wn(At),At=null,Mt.forEach((e=>{if(!j)try{e(),$t()}catch(e){Ie(e)}}))):ne(`invalid state: ${Tt}`);return kt}}((t=>{e().then(t)}))}var Nt=[],Wt={},Ut=e=>{var t=Wt[e];return void 0===t?et(e):t},Vt=()=>"object"==typeof globalThis?globalThis:Function("return this")(),Ht=(e,t)=>Object.defineProperty(t,"name",{value:e}),Lt=e=>e%4==0&&(e%100!=0||e%400==0),Ft=[0,31,60,91,121,152,182,213,244,274,305,335],Gt=[0,31,59,90,120,151,181,212,243,273,304,334];function jt(e,t,n,r,a,i,o){return x?Se(16,1,e,t,n,r,a,i,o):-52}function qt(e,t,n,r,a,i){if(x)return Se(17,1,e,t,n,r,a,i)}var Kt,Yt=e=>{var t=De(e)+1,n=bn(t);return n&&We(e,n,t),n},Zt=[],Qt=(e,t)=>{Zt.length=0;for(var n;n=r()[e++>>>0];){var a=105!=n;t+=(a&=112!=n)&&t%8?4:0,Zt.push(112==n?u()[t>>>2>>>0]:106==n?H[t>>>3]:105==n?s()[t>>>2>>>0]:d()[t>>>3>>>0]),t+=a?8:4}return Zt},Xt={},Jt=()=>{if(!Kt){var e,t={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:b||"./this.program"};for(e in Xt)void 0===Xt[e]?delete t[e]:t[e]=Xt[e];var n=[];for(e in t)n.push(`${e}=${t[e]}`);Kt=n}return Kt};function en(e,n){if(x)return Se(18,1,e,n);e>>>=0,n>>>=0;var r=0;return Jt().forEach(((a,i)=>{var o=n+r;for(i=u()[e+4*i>>>2>>>0]=o,o=0;o>>0>>>0]=a.charCodeAt(o);t()[i>>>0>>>0]=0,r+=a.length+1})),0}function tn(e,t){if(x)return Se(19,1,e,t);e>>>=0,t>>>=0;var n=Jt();u()[e>>>2>>>0]=n.length;var r=0;return n.forEach((e=>r+=e.length+1)),u()[t>>>2>>>0]=r,0}function nn(e){return x?Se(20,1,e):52}function rn(e,t,n,r){return x?Se(21,1,e,t,n,r):52}function an(e,t,n,r){return x?Se(22,1,e,t,n,r):70}var on=[null,[],[]];function sn(e,t,n,a){if(x)return Se(23,1,e,t,n,a);t>>>=0,n>>>=0,a>>>=0;for(var i=0,o=0;o>>2>>>0],l=u()[t+4>>>2>>>0];t+=8;for(var d=0;d>>0],c=on[e];0===p||10===p?((1===e?k:O)($e(c,0)),c.length=0):c.push(p)}i+=l}return u()[a>>>2>>>0]=i,0}var un=[31,29,31,30,31,30,31,31,30,31,30,31],ln=[31,28,31,30,31,30,31,31,30,31,30,31];function dn(e,n,r,a){function i(e,t,n){for(e="number"==typeof e?e.toString():e||"";e.lengthe?-1:0r-e.getDate())){e.setDate(e.getDate()+t);break}t-=r-e.getDate()+1,e.setDate(1),11>n?e.setMonth(n+1):(e.setMonth(0),e.setFullYear(e.getFullYear()+1))}return n=new Date(e.getFullYear()+1,0,4),t=d(new Date(e.getFullYear(),0,4)),n=d(n),0>=l(t,e)?0>=l(n,e)?e.getFullYear()+1:e.getFullYear():e.getFullYear()-1}e>>>=0,n>>>=0,r>>>=0,a>>>=0;var c=u()[a+40>>>2>>>0];for(var f in a={lc:s()[a>>>2>>>0],kc:s()[a+4>>>2>>>0],Gb:s()[a+8>>>2>>>0],Lb:s()[a+12>>>2>>>0],Hb:s()[a+16>>>2>>>0],Bb:s()[a+20>>>2>>>0],vb:s()[a+24>>>2>>>0],Ab:s()[a+28>>>2>>>0],tc:s()[a+32>>>2>>>0],jc:s()[a+36>>>2>>>0],mc:c?_e(c):""},r=_e(r),c={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"})r=r.replace(new RegExp(f,"g"),c[f]);var h="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),m="January February March April May June July August September October November December".split(" ");for(f in c={"%a":e=>h[e.vb].substring(0,3),"%A":e=>h[e.vb],"%b":e=>m[e.Hb].substring(0,3),"%B":e=>m[e.Hb],"%C":e=>o((e.Bb+1900)/100|0,2),"%d":e=>o(e.Lb,2),"%e":e=>i(e.Lb,2," "),"%g":e=>p(e).toString().substring(2),"%G":e=>p(e),"%H":e=>o(e.Gb,2),"%I":e=>(0==(e=e.Gb)?e=12:12{for(var t=0,n=0;n<=e.Hb-1;t+=(Lt(e.Bb+1900)?un:ln)[n++]);return o(e.Lb+t,3)},"%m":e=>o(e.Hb+1,2),"%M":e=>o(e.kc,2),"%n":()=>"\n","%p":e=>0<=e.Gb&&12>e.Gb?"AM":"PM","%S":e=>o(e.lc,2),"%t":()=>"\t","%u":e=>e.vb||7,"%U":e=>o(Math.floor((e.Ab+7-e.vb)/7),2),"%V":e=>{var t=Math.floor((e.Ab+7-(e.vb+6)%7)/7);if(2>=(e.vb+371-e.Ab-2)%7&&t++,t)53==t&&(4==(n=(e.vb+371-e.Ab)%7)||3==n&&Lt(e.Bb)||(t=1));else{t=52;var n=(e.vb+7-e.Ab-1)%7;(4==n||5==n&&Lt(e.Bb%400-1))&&t++}return o(t,2)},"%w":e=>e.vb,"%W":e=>o(Math.floor((e.Ab+7-(e.vb+6)%7)/7),2),"%y":e=>(e.Bb+1900).toString().substring(2),"%Y":e=>e.Bb+1900,"%z":e=>(0<=(e=e.jc)?"+":"-")+("0000"+((e=Math.abs(e)/60)/60*100+e%60)).slice(-4),"%Z":e=>e.mc,"%%":()=>"%"},r=r.replace(/%%/g,"\0\0"),c)r.includes(f)&&(r=r.replace(new RegExp(f,"g"),c[f](a)));return f=function(e){var t=Array(De(e)+1);return Ne(e,t,0,t.length),t}(r=r.replace(/\0\0/g,"%")),f.length>n?0:(((e,n)=>{t().set(e,n>>>0)})(f,e),f.length-1)}Ae.Ib();for(var pn=Array(256),cn=0;256>cn;++cn)pn[cn]=String.fromCharCode(cn);Qe=pn,Xe=f.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},f.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},Object.assign(ot.prototype,{get(e){return this.wb[e]},has(e){return void 0!==this.wb[e]},Kb(e){var t=this.Nb.pop()||this.wb.length;return this.wb[t]=e,t},Mb(e){this.wb[e]=void 0,this.Nb.push(e)}}),st.wb.push({value:void 0},{value:null},{value:!0},{value:!1}),st.Db=st.wb.length,f.count_emval_handles=()=>{for(var e=0,t=st.Db;t{await f.ac(e,t,n)}))},b:function(e,t,n){throw new Re(e>>>=0).Ib(t>>>0,n>>>0),e},fa:function(e){$n(e>>>0,!$,1,!v,131072,!1),Ae.Tb()},D:function(e){e>>>=0,x?postMessage({cmd:"cleanupThread",thread:e}):Ae.Rb(Ae.pb[e])},X:Be,z:Pe,la:Me,T:Ue,V:Ve,ma:He,ja:Le,ca:Fe,ia:Ge,H:je,U:qe,R:Ke,ka:Ye,S:Ze,K:function(e,t,n,r,a){e>>>=0,n>>>=0;var i=-1!=(t=et(t>>>=0)).indexOf("u");i&&(a=(1n<<64n)-1n),at(e,{name:t,fromWireType:e=>e,toWireType:function(e,n){if("bigint"!=typeof n&&"number"!=typeof n)throw new TypeError(`Cannot convert "${Je(n)}" to ${this.name}`);if(na)throw new TypeError(`Passing a number "${Je(n)}" from JS side to C/C++ side to an argument of type "${t}", which is outside the valid range [${r}, ${a}]!`);return n},argPackAdvance:8,readValueFromPointer:it(t,n,!i),Cb:null})},sa:function(e,t,n,a){at(e>>>=0,{name:t=et(t>>>0),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?n:a},argPackAdvance:8,readValueFromPointer:function(e){return this.fromWireType(r()[e>>>0])},Cb:null})},ra:function(e,t){at(e>>>=0,{name:t=et(t>>>0),fromWireType:e=>{var t=lt(e);return ut(e),t},toWireType:(e,t)=>dt(t),argPackAdvance:8,readValueFromPointer:pt,Cb:null})},J:function(e,t,n){n>>>=0,at(e>>>=0,{name:t=et(t>>>0),fromWireType:e=>e,toWireType:(e,t)=>t,argPackAdvance:8,readValueFromPointer:ct(t,n),Cb:null})},v:function(e,t,n,r,a){if(e>>>=0,n>>>=0,t=et(t>>>0),-1===a&&(a=4294967295),a=e=>e,0===r){var i=32-8*n;a=e=>e<>>i}var o=t.includes("unsigned")?function(e,t){return t>>>0}:function(e,t){return t};at(e,{name:t,fromWireType:a,toWireType:o,argPackAdvance:8,readValueFromPointer:it(t,n,0!==r),Cb:null})},o:function(e,n,r){function a(e){var n=u()[e>>>2>>>0];return e=u()[e+4>>>2>>>0],new i(t().buffer,e,n)}var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array][n];at(e>>>=0,{name:r=et(r>>>0),fromWireType:a,argPackAdvance:8,readValueFromPointer:a},{Yb:!0})},L:function(e,t){e>>>=0;var n="std::string"===(t=et(t>>>0));at(e,{name:t,fromWireType:function(e){var t=u()[e>>>2>>>0],a=e+4;if(n)for(var i=a,o=0;o<=t;++o){var s=a+o;if(o==t||0==r()[s>>>0]){if(i=_e(i,s-i),void 0===l)var l=i;else l+=String.fromCharCode(0),l+=i;i=s+1}}else{for(l=Array(t),o=0;o>>0]);l=l.join("")}return wn(e),l},toWireType:function(e,t){t instanceof ArrayBuffer&&(t=new Uint8Array(t));var a="string"==typeof t;if(!(a||t instanceof Uint8Array||t instanceof Uint8ClampedArray||t instanceof Int8Array))throw new Xe("Cannot pass non-string to std::string");var i=n&&a?De(t):t.length,o=bn(4+i+1),s=o+4;if(u()[o>>>2>>>0]=i,n&&a)We(t,s,i+1);else if(a)for(a=0;a>>0]=l}else for(a=0;a>>0]=t[a];return null!==e&&e.push(wn,o),o},argPackAdvance:8,readValueFromPointer:ft,Cb(e){wn(e)}})},B:function(e,t,n){if(e>>>=0,t>>>=0,n=et(n>>>=0),2===t)var r=mt,a=gt,o=yt,s=()=>i(),l=1;else 4===t&&(r=bt,a=wt,o=vt,s=()=>u(),l=2);at(e,{name:n,fromWireType:e=>{for(var n,a=u()[e>>>2>>>0],i=s(),o=e+4,d=0;d<=a;++d){var p=e+4+d*t;(d==a||0==i[p>>>l])&&(o=r(o,p-o),void 0===n?n=o:(n+=String.fromCharCode(0),n+=o),o=p+t)}return wn(e),n},toWireType:(e,r)=>{if("string"!=typeof r)throw new Xe(`Cannot pass non-string to C++ string type ${n}`);var i=o(r),s=bn(4+i+t);return u()[s>>>2]=i>>l,a(r,s+4,i+t),null!==e&&e.push(wn,s),s},argPackAdvance:8,readValueFromPointer:pt,Cb(e){wn(e)}})},ta:function(e,t){at(e>>>=0,{Zb:!0,name:t=et(t>>>0),argPackAdvance:0,fromWireType:()=>{},toWireType:()=>{}})},qa:()=>1,P:function(e,t){(e>>>=0)==t>>>0?setTimeout((()=>xt())):x?postMessage({targetThread:e,cmd:"checkMailbox"}):(e=Ae.pb[e])&&e.postMessage({cmd:"checkMailbox"})},Y:function(e,t,n,r){t>>>=0,n/=2,St.length=n,r=r>>>0>>>3;for(var a=0;a>>0];return e=0>e?ue[-e-1]:fn[e],Ae.Wb=t,t=e.apply(null,St),Ae.Wb=0,t},ea:_t,pa:function(e){_&&Ae.pb[e>>>0].ref()},t:function(e,t,n){return t>>>=0,n>>>=0,e=lt(e>>>0),t=Ct(t,"emval::as"),Et(t,n,e)},y:function(e){return e>>>=0,Dt((()=>(e=lt(e)).then(dt)))},p:function(e,t,n,r){return n>>>=0,r>>>=0,(e=Nt[e>>>0])(null,t=lt(t>>>0),n,r)},k:function(e,t,n,r,a){return n>>>=0,r>>>=0,a>>>=0,(e=Nt[e>>>0])(t=lt(t>>>0),t[n=Ut(n)],r,a)},c:ut,C:function(e,t){return t>>>=0,(e=lt(e>>>0))==lt(t)},n:function(e){return 0==(e>>>=0)?dt(Vt()):(e=Ut(e),dt(Vt()[e]))},j:function(e,t,n){t=((e,t)=>{for(var n=Array(e),r=0;r>>2>>>0],"parameter "+r);return n})(e,t>>>0);var r=t.shift();e--;var a="return function (obj, func, destructorsRef, args) {\n",i=0,o=[];0===n&&o.push("obj");for(var s=["retType"],l=[r],d=0;de.name)).join(", ")}) => ${r.name}>`,(e=>{var t=Nt.length;return Nt.push(e),t})(Ht(n,e))},s:function(e,t){return t>>>=0,e=lt(e>>>0),t=lt(t),dt(e[t])},e:function(e){4<(e>>>=0)&&(st.get(e).Qb+=1)},w:function(){return dt([])},m:function(e){e=lt(e>>>0);for(var t=Array(e.length),n=0;n>>0))},l:function(){return dt({})},i:function(e){for(var t=lt(e>>>=0);t.length;){var n=t.pop();t.pop()(n)}ut(e)},h:function(e,t,n){t>>>=0,n>>>=0,e=lt(e>>>0),t=lt(t),n=lt(n),e[t]=n},d:function(e,t){return t>>>=0,e=(e=Ct(e>>>0,"_emval_take_value")).readValueFromPointer(t),dt(e)},$:function(e,t){e=-9007199254740992>e||9007199254740992>>=0,e=new Date(1e3*e),s()[t>>>2>>>0]=e.getUTCSeconds(),s()[t+4>>>2>>>0]=e.getUTCMinutes(),s()[t+8>>>2>>>0]=e.getUTCHours(),s()[t+12>>>2>>>0]=e.getUTCDate(),s()[t+16>>>2>>>0]=e.getUTCMonth(),s()[t+20>>>2>>>0]=e.getUTCFullYear()-1900,s()[t+24>>>2>>>0]=e.getUTCDay(),e=(e.getTime()-Date.UTC(e.getUTCFullYear(),0,1,0,0,0,0))/864e5|0,s()[t+28>>>2>>>0]=e},aa:function(e,t){e=-9007199254740992>e||9007199254740992>>=0,e=new Date(1e3*e),s()[t>>>2>>>0]=e.getSeconds(),s()[t+4>>>2>>>0]=e.getMinutes(),s()[t+8>>>2>>>0]=e.getHours(),s()[t+12>>>2>>>0]=e.getDate(),s()[t+16>>>2>>>0]=e.getMonth(),s()[t+20>>>2>>>0]=e.getFullYear()-1900,s()[t+24>>>2>>>0]=e.getDay();var n=(Lt(e.getFullYear())?Ft:Gt)[e.getMonth()]+e.getDate()-1|0;s()[t+28>>>2>>>0]=n,s()[t+36>>>2>>>0]=-60*e.getTimezoneOffset(),n=new Date(e.getFullYear(),6,1).getTimezoneOffset();var r=new Date(e.getFullYear(),0,1).getTimezoneOffset();e=0|(n!=r&&e.getTimezoneOffset()==Math.min(r,n)),s()[t+32>>>2>>>0]=e},ba:function(e){e>>>=0;var t=new Date(s()[e+20>>>2>>>0]+1900,s()[e+16>>>2>>>0],s()[e+12>>>2>>>0],s()[e+8>>>2>>>0],s()[e+4>>>2>>>0],s()[e>>>2>>>0],0),n=s()[e+32>>>2>>>0],r=t.getTimezoneOffset(),a=new Date(t.getFullYear(),6,1).getTimezoneOffset(),i=new Date(t.getFullYear(),0,1).getTimezoneOffset(),o=Math.min(i,a);return 0>n?s()[e+32>>>2>>>0]=+(a!=i&&o==r):0>>2>>>0]=t.getDay(),n=(Lt(t.getFullYear())?Ft:Gt)[t.getMonth()]+t.getDate()-1|0,s()[e+28>>>2>>>0]=n,s()[e>>>2>>>0]=t.getSeconds(),s()[e+4>>>2>>>0]=t.getMinutes(),s()[e+8>>>2>>>0]=t.getHours(),s()[e+12>>>2>>>0]=t.getDate(),s()[e+16>>>2>>>0]=t.getMonth(),s()[e+20>>>2>>>0]=t.getYear(),e=t.getTime(),isNaN(e)?(s()[gn()>>>2>>>0]=61,e=-1):e/=1e3,BigInt(e)},Z:jt,_:qt,O:function(e,t,n){function r(e){return(e=e.toTimeString().match(/\(([A-Za-z ]+)\)$/))?e[1]:"GMT"}e>>>=0,t>>>=0,n>>>=0;var a=(new Date).getFullYear(),i=new Date(a,0,1),o=new Date(a,6,1);a=i.getTimezoneOffset();var l=o.getTimezoneOffset(),d=Math.max(a,l);u()[e>>>2>>>0]=60*d,s()[t>>>2>>>0]=+(a!=l),e=r(i),t=r(o),e=Yt(e),t=Yt(t),l>>2>>>0]=e,u()[n+4>>>2>>>0]=t):(u()[n>>>2>>>0]=t,u()[n+4>>>2>>>0]=e)},q:()=>{ne("")},g:function(e,t,n){return e>>>=0,t=Qt(t>>>0,n>>>0),ue[e].apply(null,t)},M:function(e,t,n){return e>>>=0,t=Qt(t>>>0,n>>>0),ue[e].apply(null,t)},E:()=>{},I:()=>Date.now(),oa:()=>{throw me+=1,"unwind"},Q:function(){return 4294901760},u:()=>performance.timeOrigin+performance.now(),x:()=>_?(hs(),L(ve)).cpus().length:navigator.hardwareConcurrency,N:function(e){e>>>=0;var t=r().length;if(e<=t||4294901760=n;n*=2){var a=t*(1+.2/n);a=Math.min(a,e+100663296);var i=Math;a=Math.max(e,a);e:{i=(i.min.call(i,4294901760,a+(65536-a%65536)%65536)-R.buffer.byteLength+65535)/65536;try{R.grow(i),q();var o=1;break e}catch{}o=void 0}if(o)return!0}return!1},ga:en,ha:tn,W:Ee,A:nn,G:rn,da:an,F:sn,a:R||f.wasmMemory,na:dn,r:function(e,t,n,r){return dn(e>>>0,t>>>0,n>>>0,r>>>0)}},mn=function(){function e(e,t){return mn=e.exports,mn=function(){var e=mn,t={};for(let[n,r]of Object.entries(e))t[n]="function"==typeof r?function(){Ot.push(n);try{return r.apply(null,arguments)}finally{j||(Ot.pop(),At&&1===Tt&&0===Ot.length&&(Tt=0,me+=1,It(zn),typeof Fibers<"u"&&Fibers.uc()))}}:r;return t}(),mn=function(){var e=mn,t=e=>()=>e()>>>0,n=e=>t=>e(t)>>>0;return(e=Object.assign({},e)).Za=t(e.Za),e._a=t(e._a),e.$a=n(e.$a),e.cb=n(e.cb),e.emscripten_main_runtime_thread_id=t(e.emscripten_main_runtime_thread_id),e.mb=t(e.mb),e.ob=n(e.ob),e}(),Ae.Ub.push(mn.bb),Z.unshift(mn.va),z=t,te(),mn}var t={a:hn};if(X++,f.instantiateWasm)try{return f.instantiateWasm(t,e)}catch(e){O(`Module.instantiateWasm callback failed with error: ${e}`),c(e)}return function(e,t){var n=re;return"function"!=typeof WebAssembly.instantiateStreaming||ae(n)||ie(n)||_||"function"!=typeof fetch?se(n,e,t):fetch(n,{credentials:"same-origin"}).then((r=>WebAssembly.instantiateStreaming(r,e).then(t,(function(r){return O(`wasm streaming compile failed: ${r}`),O("falling back to ArrayBuffer instantiation"),se(n,e,t)}))))}(t,(function(t){e(t.instance,t.module)})).catch(c),{}}();f._OrtInit=(e,t)=>(f._OrtInit=mn.wa)(e,t),f._OrtGetLastError=(e,t)=>(f._OrtGetLastError=mn.xa)(e,t),f._OrtCreateSessionOptions=(e,t,n,r,a,i,o,s,u,l)=>(f._OrtCreateSessionOptions=mn.ya)(e,t,n,r,a,i,o,s,u,l),f._OrtAppendExecutionProvider=(e,t)=>(f._OrtAppendExecutionProvider=mn.za)(e,t),f._OrtAddFreeDimensionOverride=(e,t,n)=>(f._OrtAddFreeDimensionOverride=mn.Aa)(e,t,n),f._OrtAddSessionConfigEntry=(e,t,n)=>(f._OrtAddSessionConfigEntry=mn.Ba)(e,t,n),f._OrtReleaseSessionOptions=e=>(f._OrtReleaseSessionOptions=mn.Ca)(e),f._OrtCreateSession=(e,t,n)=>(f._OrtCreateSession=mn.Da)(e,t,n),f._OrtReleaseSession=e=>(f._OrtReleaseSession=mn.Ea)(e),f._OrtGetInputOutputCount=(e,t,n)=>(f._OrtGetInputOutputCount=mn.Fa)(e,t,n),f._OrtGetInputName=(e,t)=>(f._OrtGetInputName=mn.Ga)(e,t),f._OrtGetOutputName=(e,t)=>(f._OrtGetOutputName=mn.Ha)(e,t),f._OrtFree=e=>(f._OrtFree=mn.Ia)(e),f._OrtCreateTensor=(e,t,n,r,a,i)=>(f._OrtCreateTensor=mn.Ja)(e,t,n,r,a,i),f._OrtGetTensorData=(e,t,n,r,a)=>(f._OrtGetTensorData=mn.Ka)(e,t,n,r,a),f._OrtReleaseTensor=e=>(f._OrtReleaseTensor=mn.La)(e),f._OrtCreateRunOptions=(e,t,n,r)=>(f._OrtCreateRunOptions=mn.Ma)(e,t,n,r),f._OrtAddRunConfigEntry=(e,t,n)=>(f._OrtAddRunConfigEntry=mn.Na)(e,t,n),f._OrtReleaseRunOptions=e=>(f._OrtReleaseRunOptions=mn.Oa)(e),f._OrtCreateBinding=e=>(f._OrtCreateBinding=mn.Pa)(e),f._OrtBindInput=(e,t,n)=>(f._OrtBindInput=mn.Qa)(e,t,n),f._OrtBindOutput=(e,t,n,r)=>(f._OrtBindOutput=mn.Ra)(e,t,n,r),f._OrtClearBoundOutputs=e=>(f._OrtClearBoundOutputs=mn.Sa)(e),f._OrtReleaseBinding=e=>(f._OrtReleaseBinding=mn.Ta)(e),f._OrtRunWithBinding=(e,t,n,r,a)=>(f._OrtRunWithBinding=mn.Ua)(e,t,n,r,a),f._OrtRun=(e,t,n,r,a,i,o,s)=>(f._OrtRun=mn.Va)(e,t,n,r,a,i,o,s),f._OrtEndProfiling=e=>(f._OrtEndProfiling=mn.Wa)(e),f._JsepOutput=(e,t,n)=>(f._JsepOutput=mn.Xa)(e,t,n),f._JsepGetNodeName=e=>(f._JsepGetNodeName=mn.Ya)(e);var gn=()=>(gn=mn.Za)(),yn=f._pthread_self=()=>(yn=f._pthread_self=mn._a)(),bn=f._malloc=e=>(bn=f._malloc=mn.$a)(e),wn=f._free=e=>(wn=f._free=mn.ab)(e);f.__emscripten_tls_init=()=>(f.__emscripten_tls_init=mn.bb)();var vn=e=>(vn=mn.cb)(e);f.__embind_initialize_bindings=()=>(f.__embind_initialize_bindings=mn.db)();var $n=f.__emscripten_thread_init=(e,t,n,r,a,i)=>($n=f.__emscripten_thread_init=mn.fb)(e,t,n,r,a,i);f.__emscripten_thread_crashed=()=>(f.__emscripten_thread_crashed=mn.gb)();var _n,xn=(e,t,n,r)=>(xn=mn.hb)(e,t,n,r),Sn=e=>(Sn=mn.ib)(e),Cn=f.__emscripten_thread_exit=e=>(Cn=f.__emscripten_thread_exit=mn.jb)(e),En=()=>(En=mn.kb)(),In=(e,t)=>(In=mn.lb)(e,t),Tn=()=>(Tn=mn.mb)(),An=e=>(An=mn.nb)(e),kn=e=>(kn=mn.ob)(e),On=f.dynCall_ii=(e,t)=>(On=f.dynCall_ii=mn.qb)(e,t),Rn=e=>(Rn=mn.rb)(e),zn=()=>(zn=mn.sb)(),Bn=e=>(Bn=mn.tb)(e),Pn=()=>(Pn=mn.ub)();function Mn(){if(!(00s).apply(t,[]))||(e.exports=r)})),gs=V(((e,t)=>{t.exports='"use strict";var Module={},ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";if(ENVIRONMENT_IS_NODE){var nodeWorkerThreads=require("worker_threads"),parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",e=>onmessage({data:e}));var fs=require("fs"),vm=require("vm");Object.assign(global,{self:global,require,Module,location:{href:__filename},Worker:nodeWorkerThreads.Worker,importScripts:e=>vm.runInThisContext(fs.readFileSync(e,"utf8"),{filename:e}),postMessage:e=>parentPort.postMessage(e),performance:global.performance||{now:Date.now}})}var initializedJS=!1;function threadPrintErr(){var e=Array.prototype.slice.call(arguments).join(" ");if(ENVIRONMENT_IS_NODE){fs.writeSync(2,e+`\n`);return}console.error(e)}function threadAlert(){var e=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:e,threadId:Module._pthread_self()})}var err=threadPrintErr;self.alert=threadAlert,Module.instantiateWasm=(e,t)=>{var a=Module.wasmModule;Module.wasmModule=null;var r=new WebAssembly.Instance(a,e);return t(r)},self.onunhandledrejection=e=>{throw e.reason||e};function handleMessage(e){try{if(e.data.cmd==="load"){let a=[];self.onmessage=r=>a.push(r),self.startWorker=r=>{Module=r,postMessage({cmd:"loaded"});for(let s of a)handleMessage(s);self.onmessage=handleMessage},Module.wasmModule=e.data.wasmModule;for(const r of e.data.handlers)Module[r]=(...s)=>{postMessage({cmd:"callHandler",handler:r,args:s})};if(Module.wasmMemory=e.data.wasmMemory,Module.buffer=Module.wasmMemory.buffer,Module.ENVIRONMENT_IS_PTHREAD=!0,typeof e.data.urlOrBlob=="string")importScripts(e.data.urlOrBlob);else{var t=URL.createObjectURL(e.data.urlOrBlob);importScripts(t),URL.revokeObjectURL(t)}ortWasmThreaded(Module)}else if(e.data.cmd==="run"){Module.__emscripten_thread_init(e.data.pthread_ptr,0,0,1),Module.__emscripten_thread_mailbox_await(e.data.pthread_ptr),Module.establishStackSpace(),Module.PThread.receiveObjectTransfer(e.data),Module.PThread.threadInitTLS(),initializedJS||(initializedJS=!0);try{Module.invokeEntryPoint(e.data.start_routine,e.data.arg)}catch(a){if(a!="unwind")throw a}}else e.data.cmd==="cancel"?Module._pthread_self()&&Module.__emscripten_thread_exit(-1):e.data.target==="setimmediate"||(e.data.cmd==="checkMailbox"?initializedJS&&Module.checkMailbox():e.data.cmd&&(err(`worker.js received unknown command ${e.data.cmd}`),err(e.data)))}catch(a){throw Module.__emscripten_thread_crashed?.(),a}}self.onmessage=handleMessage;\n'})),ys=U((()=>{_e=ye(),xe=ms(),Ce=!1,Ee=!1,Ie=!1,Te=e=>{if(1===e)return!1;if(typeof SharedArrayBuffer>"u")return typeof self<"u"&&!self.crossOriginIsolated&&console.warn("env.wasm.numThreads is set to "+e+", but this will not work unless you enable crossOriginIsolated mode. See https://web.dev/cross-origin-isolation-guide/ for more info."),!1;typeof process<"u"&&process.versions&&process.versions.node&&console.warn("env.wasm.numThreads is set to "+e+", however, currently onnxruntime-web does not support multi-threads in Node.js. Please consider using onnxruntime-node for performance critical scenarios.");try{return typeof MessageChannel<"u"&&(new MessageChannel).port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch{return!1}},Ae=()=>{try{return WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,30,1,28,0,65,0,253,15,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,186,1,26,11]))}catch{return!1}},ke=(e,t)=>e?t?"ort-wasm-simd-threaded.wasm":"ort-wasm-simd.wasm":t?"ort-wasm-threaded.wasm":"ort-wasm.wasm",Oe=async e=>{if(Ce)return Promise.resolve();if(Ee)throw new Error("multiple calls to 'initializeWebAssembly()' detected.");if(Ie)throw new Error("previous call to 'initializeWebAssembly()' failed.");Ee=!0;let t=e.initTimeout,n=e.numThreads,r=e.simd,a=Te(n),i=r&&Ae(),o=e.wasmPaths,s="string"==typeof o?o:void 0,u=ke(i,a),l="object"==typeof o?o[u]:void 0,d=!1,p=[];if(t>0&&p.push(new Promise((e=>{setTimeout((()=>{d=!0,e()}),t)}))),p.push(new Promise(((e,t)=>{let r=a?xe:_e,i={locateFile:(e,t)=>{if(a&&e.endsWith(".worker.js")&&typeof Blob<"u")return URL.createObjectURL(new Blob([gs()],{type:"text/javascript"}));if(e.endsWith(".wasm")){if(l)return l;let e=s??t;return"ort-wasm-simd.wasm"===u?e+"ort-wasm-simd.jsep.wasm":"ort-wasm-simd-threaded.wasm"===u?e+"ort-wasm-simd-threaded.jsep.wasm":e+u}return t+e}};if(a)if(i.numThreads=n,typeof Blob>"u")i.mainScriptUrlOrBlob=(void 0)("/","ort-wasm-threaded.js");else{let e=`var ortWasmThreaded=${r.toString()};`;i.mainScriptUrlOrBlob=new Blob([e],{type:"text/javascript"})}r(i).then((t=>{Ee=!1,Ce=!0,Se=t,e()}),(e=>{Ee=!1,Ie=!0,t(e)}))}))),await Promise.race(p),d)throw new Error(`WebAssembly backend initializing failed due to timeout: ${t}ms`)},Re=()=>{if(Ce&&Se)return Se;throw new Error("WebAssembly is not initialized yet.")}})),bs=U((()=>{ys(),ze=(e,t)=>{let n=Re(),r=n.lengthBytesUTF8(e)+1,a=n._malloc(r);return n.stringToUTF8(e,a,r),t.push(a),a},Be=(e,t,n,r)=>{if("object"==typeof e&&null!==e){if(n.has(e))throw new Error("Circular reference in options");n.add(e)}Object.entries(e).forEach((([e,a])=>{let i=t?t+e:e;if("object"==typeof a)Be(a,i+".",n,r);else if("string"==typeof a||"number"==typeof a)r(i,a.toString());else{if("boolean"!=typeof a)throw new Error("Can't handle extra config type: "+typeof a);r(i,a?"1":"0")}}))},Pe=e=>{let t=Re(),n=t.stackSave();try{let n=t.stackAlloc(8);t._OrtGetLastError(n,n+4);let r=t.HEAP32[n/4],a=t.HEAPU32[n/4+1],i=a?t.UTF8ToString(a):"";throw new Error(`${e} ERROR_CODE: ${r}, ERROR_MESSAGE: ${i}`)}finally{t.stackRestore(n)}}})),ws=U((()=>{ys(),bs(),Me=e=>{let t=Re(),n=0,r=[],a=e||{};try{if(void 0===e?.logSeverityLevel)a.logSeverityLevel=2;else if("number"!=typeof e.logSeverityLevel||!Number.isInteger(e.logSeverityLevel)||e.logSeverityLevel<0||e.logSeverityLevel>4)throw new Error(`log serverity level is not valid: ${e.logSeverityLevel}`);if(void 0===e?.logVerbosityLevel)a.logVerbosityLevel=0;else if("number"!=typeof e.logVerbosityLevel||!Number.isInteger(e.logVerbosityLevel))throw new Error(`log verbosity level is not valid: ${e.logVerbosityLevel}`);void 0===e?.terminate&&(a.terminate=!1);let i=0;return void 0!==e?.tag&&(i=ze(e.tag,r)),n=t._OrtCreateRunOptions(a.logSeverityLevel,a.logVerbosityLevel,!!a.terminate,i),0===n&&Pe("Can't create run options."),void 0!==e?.extra&&Be(e.extra,"",new WeakSet,((e,a)=>{let i=ze(e,r),o=ze(a,r);0!==t._OrtAddRunConfigEntry(n,i,o)&&Pe(`Can't set a run config entry: ${e} - ${a}.`)})),[n,r]}catch(e){throw 0!==n&&t._OrtReleaseRunOptions(n),r.forEach((e=>t._free(e))),e}}})),vs=U((()=>{ys(),bs(),De=e=>{switch(e){case"disabled":return 0;case"basic":return 1;case"extended":return 2;case"all":return 99;default:throw new Error(`unsupported graph optimization level: ${e}`)}},Ne=e=>{switch(e){case"sequential":return 0;case"parallel":return 1;default:throw new Error(`unsupported execution mode: ${e}`)}},We=e=>{e.extra||(e.extra={}),e.extra.session||(e.extra.session={});let t=e.extra.session;t.use_ort_model_bytes_directly||(t.use_ort_model_bytes_directly="1"),e.executionProviders&&e.executionProviders.some((e=>"webgpu"===("string"==typeof e?e:e.name)))&&(e.enableMemPattern=!1)},Ue=(e,t,n)=>{for(let r of t){let t="string"==typeof r?r:r.name;switch(t){case"webnn":if(t="WEBNN","string"!=typeof r){let t=r;if(t?.deviceType){let r=ze("deviceType",n),a=ze(t.deviceType,n);0!==Re()._OrtAddSessionConfigEntry(e,r,a)&&Pe(`Can't set a session config entry: 'deviceType' - ${t.deviceType}.`)}if(t?.numThreads){let r=t.numThreads;("number"!=typeof r||!Number.isInteger(r)||r<0)&&(r=0);let a=ze("numThreads",n),i=ze(r.toString(),n);0!==Re()._OrtAddSessionConfigEntry(e,a,i)&&Pe(`Can't set a session config entry: 'numThreads' - ${t.numThreads}.`)}if(t?.powerPreference){let r=ze("powerPreference",n),a=ze(t.powerPreference,n);0!==Re()._OrtAddSessionConfigEntry(e,r,a)&&Pe(`Can't set a session config entry: 'powerPreference' - ${t.powerPreference}.`)}}break;case"webgpu":if(t="JS","string"!=typeof r){let t=r;if(t?.preferredLayout){if("NCHW"!==t.preferredLayout&&"NHWC"!==t.preferredLayout)throw new Error(`preferredLayout must be either 'NCHW' or 'NHWC': ${t.preferredLayout}`);let r=ze("preferredLayout",n),a=ze(t.preferredLayout,n);0!==Re()._OrtAddSessionConfigEntry(e,r,a)&&Pe(`Can't set a session config entry: 'preferredLayout' - ${t.preferredLayout}.`)}}break;case"wasm":case"cpu":continue;default:throw new Error(`not supported execution provider: ${t}`)}let a=ze(t,n);0!==Re()._OrtAppendExecutionProvider(e,a)&&Pe(`Can't append execution provider: ${t}.`)}},Ve=e=>{let t=Re(),n=0,r=[],a=e||{};We(a);try{let e=De(a.graphOptimizationLevel??"all"),i=Ne(a.executionMode??"sequential"),o="string"==typeof a.logId?ze(a.logId,r):0,s=a.logSeverityLevel??2;if(!Number.isInteger(s)||s<0||s>4)throw new Error(`log serverity level is not valid: ${s}`);let u=a.logVerbosityLevel??0;if(!Number.isInteger(u)||u<0||u>4)throw new Error(`log verbosity level is not valid: ${u}`);let l="string"==typeof a.optimizedModelFilePath?ze(a.optimizedModelFilePath,r):0;if(n=t._OrtCreateSessionOptions(e,!!a.enableCpuMemArena,!!a.enableMemPattern,i,!!a.enableProfiling,0,o,s,u,l),0===n&&Pe("Can't create session options."),a.executionProviders&&Ue(n,a.executionProviders,r),a.freeDimensionOverrides)for(let[e,i]of Object.entries(a.freeDimensionOverrides)){if("string"!=typeof e)throw new Error(`free dimension override name must be a string: ${e}`);if("number"!=typeof i||!Number.isInteger(i)||i<0)throw new Error(`free dimension override value must be a non-negative integer: ${i}`);let a=ze(e,r);0!==t._OrtAddFreeDimensionOverride(n,a,i)&&Pe(`Can't set a free dimension override: ${e} - ${i}.`)}return void 0!==a.extra&&Be(a.extra,"",new WeakSet,((e,a)=>{let i=ze(e,r),o=ze(a,r);0!==t._OrtAddSessionConfigEntry(n,i,o)&&Pe(`Can't set a session config entry: ${e} - ${a}.`)})),[n,r]}catch(e){throw 0!==n&&t._OrtReleaseSessionOptions(n),r.forEach((e=>t._free(e))),e}}})),$s=U((()=>{He=e=>{switch(e){case"int8":return 3;case"uint8":return 2;case"bool":return 9;case"int16":return 5;case"uint16":return 4;case"int32":return 6;case"uint32":return 12;case"float16":return 10;case"float32":return 1;case"float64":return 11;case"string":return 8;case"int64":return 7;case"uint64":return 13;default:throw new Error(`unsupported data type: ${e}`)}},Le=e=>{switch(e){case 3:return"int8";case 2:return"uint8";case 9:return"bool";case 5:return"int16";case 4:return"uint16";case 6:return"int32";case 12:return"uint32";case 10:return"float16";case 1:return"float32";case 11:return"float64";case 8:return"string";case 7:return"int64";case 13:return"uint64";default:throw new Error(`unsupported data type: ${e}`)}},Fe=e=>[void 0,4,1,1,2,2,4,8,void 0,1,2,8,4,8,void 0,void 0,void 0][e],Ge=e=>{switch(e){case"float16":case"uint16":return Uint16Array;case"float32":return Float32Array;case"uint8":case"bool":return Uint8Array;case"int8":return Int8Array;case"int16":return Int16Array;case"int32":return Int32Array;case"float64":return Float64Array;case"uint32":return Uint32Array;case"int64":return BigInt64Array;case"uint64":return BigUint64Array;default:throw new Error(`unsupported type: ${e}`)}},je=e=>{switch(e){case"verbose":return 0;case"info":return 1;case"warning":return 2;case"error":return 3;case"fatal":return 4;default:throw new Error(`unsupported logging level: ${e}`)}},qe=e=>"float32"===e||"int32"===e||"int64"===e||"bool"===e||"float16"===e||"uint32"===e,Ke=e=>{switch(e){case"none":return 0;case"cpu":return 1;case"cpu-pinned":return 2;case"texture":return 3;case"gpu-buffer":return 4;default:throw new Error(`unsupported data location: ${e}`)}}})),_s=U((()=>{Ye=async e=>{if("string"!=typeof e)return e instanceof Blob?new Uint8Array(await e.arrayBuffer()):e instanceof Uint8Array?e:new Uint8Array(e);if(!(typeof process<"u"&&process.versions&&process.versions.node)){let t=await fetch(e);if(!t.ok)throw new Error(`failed to load external data file: ${e}`);let n=t.headers.get("Content-Length"),r=n?parseInt(n,10):0;if(r<1073741824)return new Uint8Array(await t.arrayBuffer());{if(!t.body)throw new Error(`failed to load external data file: ${e}, no response body.`);let n,a=t.body.getReader();try{n=new ArrayBuffer(r)}catch(e){if(!(e instanceof RangeError))throw e;{let e=Math.ceil(r/65536);n=new WebAssembly.Memory({initial:e,maximum:e}).buffer}}let i=0;for(;;){let{done:e,value:t}=await a.read();if(e)break;let r=t.byteLength;new Uint8Array(n,i,r).set(t),i+=r}return new Uint8Array(n,0,r)}}try{return new Uint8Array(await(void 0)(e))}catch(t){if("ERR_FS_FILE_TOO_LARGE"===t.code){let t=(void 0)(e),n=[];for await(let e of t)n.push(e);return new Uint8Array(Buffer.concat(n))}throw t}}})),xs=U((()=>{$s(),Ze=["V","I","W","E","F"],Qe=(e,t)=>{console.log(`[${Ze[e]},${(new Date).toISOString()}]${t}`)},et=(e,t)=>{Xe=e,Je=t},tt=(e,t)=>{let n=je(e);n>=je(Xe)&&Qe(n,"function"==typeof t?t():t)},nt=(...e)=>{Je&&tt(...e)}})),Ss=U((()=>{$s(),rt=(e,t)=>new(Ge(t))(e)})),Cs=U((()=>{})),Es=U((()=>{xs(),Cs(),at=e=>16*Math.ceil(e/16),it=1,ot=()=>it++,st=async(e,t,n,r)=>{let a=at(n),i=e.device.createBuffer({size:a,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ});try{let o=e.getCommandEncoder();e.endComputePass(),o.copyBufferToBuffer(t,0,i,0,a),e.flush(),await i.mapAsync(GPUMapMode.READ);let s=i.getMappedRange();if(r){let e=r();return e.set(new Uint8Array(s,0,n)),e}return new Uint8Array(s.slice(0,n))}finally{i.destroy()}},ut=class{constructor(e){this.backend=e,this.storageCache=new Map,this.freeBuffers=new Map,this.freeUniformBuffers=new Map,this.buffersForUploadingPending=[],this.buffersPending=[],this.externalBuffers=new Map}upload(e,t){let n=t.buffer,r=t.byteOffset,a=t.byteLength,i=at(a),o=this.storageCache.get(e);if(!o)throw new Error("gpu data for uploading does not exist");if(o.originalSize!==a)throw new Error(`inconsistent data size. gpu data size=${o.originalSize}, data size=${a}`);let s=this.backend.device.createBuffer({mappedAtCreation:!0,size:i,usage:GPUBufferUsage.MAP_WRITE|GPUBufferUsage.COPY_SRC}),u=s.getMappedRange();new Uint8Array(u).set(new Uint8Array(n,r,a)),s.unmap();let l=this.backend.getCommandEncoder();this.backend.endComputePass(),l.copyBufferToBuffer(s,0,o.gpuData.buffer,0,i),nt("verbose",(()=>`[WebGPU] GpuDataManager.upload(id=${e})`)),this.buffersForUploadingPending.push(s)}memcpy(e,t){let n=this.storageCache.get(e);if(!n)throw new Error("source gpu data for memcpy does not exist");let r=this.storageCache.get(t);if(!r)throw new Error("destination gpu data for memcpy does not exist");if(n.originalSize!==r.originalSize)throw new Error("inconsistent source and destination gpu data size");let a=at(n.originalSize),i=this.backend.getCommandEncoder();this.backend.endComputePass(),i.copyBufferToBuffer(n.gpuData.buffer,0,r.gpuData.buffer,0,a)}registerExternalBuffer(e,t,n){let r;if(n){if(r=this.externalBuffers.get(n),void 0===r)throw new Error("previous buffer is not registered");if(e===n)return nt("verbose",(()=>`[WebGPU] GpuDataManager.registerExternalBuffer(size=${t}) => id=${r}, buffer is the same, skip.`)),r;this.externalBuffers.delete(n)}else r=ot();return this.storageCache.set(r,{gpuData:{id:r,type:0,buffer:e},originalSize:t}),this.externalBuffers.set(e,r),nt("verbose",(()=>`[WebGPU] GpuDataManager.registerExternalBuffer(size=${t}) => id=${r}, registered.`)),r}unregisterExternalBuffer(e){let t=this.externalBuffers.get(e);void 0!==t&&(this.storageCache.delete(t),this.externalBuffers.delete(e),nt("verbose",(()=>`[WebGPU] GpuDataManager.unregisterExternalBuffer() => id=${t}`)))}create(e,t=GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST){let n,r=at(e),a=(t&GPUBufferUsage.STORAGE)===GPUBufferUsage.STORAGE,i=(t&GPUBufferUsage.UNIFORM)===GPUBufferUsage.UNIFORM;if(a||i){let e=a?this.freeBuffers:this.freeUniformBuffers,i=e.get(r);i||(i=[],e.set(r,i)),n=i.length>0?i.pop():this.backend.device.createBuffer({size:r,usage:t})}else n=this.backend.device.createBuffer({size:r,usage:t});let o={id:ot(),type:0,buffer:n};return this.storageCache.set(o.id,{gpuData:o,originalSize:e}),nt("verbose",(()=>`[WebGPU] GpuDataManager.create(size=${e}) => id=${o.id}`)),o}get(e){return this.storageCache.get(e)?.gpuData}release(e){let t=this.storageCache.get(e);if(!t)throw new Error("releasing data does not exist");return nt("verbose",(()=>`[WebGPU] GpuDataManager.release(id=${e}), gpuDataId=${t.gpuData.id}`)),this.storageCache.delete(e),this.buffersPending.push(t.gpuData.buffer),t.originalSize}async download(e,t){let n=this.storageCache.get(e);if(!n)throw new Error("data does not exist");await st(this.backend,n.gpuData.buffer,n.originalSize,t)}refreshPendingBuffers(){for(let e of this.buffersForUploadingPending)e.destroy();this.buffersForUploadingPending=[];for(let e of this.buffersPending)(e.usage&GPUBufferUsage.STORAGE)===GPUBufferUsage.STORAGE?this.freeBuffers.get(e.size).push(e):(e.usage&GPUBufferUsage.UNIFORM)===GPUBufferUsage.UNIFORM?this.freeUniformBuffers.get(e.size).push(e):e.destroy();this.buffersPending=[]}dispose(){this.freeBuffers.forEach((e=>{e.forEach((e=>{e.destroy()}))})),this.freeUniformBuffers.forEach((e=>{e.forEach((e=>{e.destroy()}))})),this.storageCache.forEach((e=>{e.gpuData.buffer.destroy()})),this.storageCache=new Map,this.freeBuffers=new Map,this.freeUniformBuffers=new Map}},lt=(...e)=>new ut(...e)})),Is=U((()=>{dt=class{constructor(e){Object.assign(this,e)}get cacheKey(){return this.key||(this.key=Object.getOwnPropertyNames(this).sort().map((e=>`${this[e]}`)).join(";")),this.key}},pt=e=>new dt(e)})),Ts=U((()=>{ct=class{static calcMatMulShape(e,t){return e[1]!==t[0]?void 0:[e[0],t[1]]}},ft=class{static calcShape(e,t,n=!1){let r=e.length,a=t.length;if(0===r)return t;if(0===a)return e;let i=Math.max(e.length,t.length),o=new Array(i);if(n){if(r<2||a<2)return;let n=ct.calcMatMulShape([e[r-2],e[r-1]],[t[a-2],t[a-1]]);if(void 0===n)return;[o[i-2],o[i-1]]=n}for(let s=n?3:1;s<=i;s++){let n=r-s<0?1:e[r-s],u=a-s<0?1:t[a-s];if(n!==u&&n>1&&u>1)return;o[i-s]=Math.max(n,u)}return o}static isValidBroadcast(e,t){let n=e.length,r=t.length;if(n>r)return!1;for(let a=1;a<=n;a++)if(1!==e[n-a]&&e[n-a]!==t[r-a])return!1;return!0}},ht=class e{static size(t){return e.getSizeFromDimensionRange(t,0,t.length)}static sizeFromDimension(t,n){if(n<0||n>t.length)throw new Error(`invalid dimension of ${n} for sizeFromDimension as Tensor has ${t.length} dimensions.`);return e.getSizeFromDimensionRange(t,n,t.length)}static sizeToDimension(t,n){if(n<0||n>t.length)throw new Error(`invalid dimension of ${n} for sizeToDimension as Tensor has ${t.length} dimensions.`);return e.getSizeFromDimensionRange(t,0,n)}static getSizeFromDimensionRange(e,t,n){let r=1;for(let a=t;a=0;--r)n[r]=n[r+1]*e[r+1];return n}static normalizeAxis(e,t){if(e<-t&&e>=t)throw new Error("unsupported axis for this operation.");return e<0?e+t:e}static normalizeAxes(e,t){return e.map((n=>this.normalizeAxis(n,t??e.length)))}static sortBasedOnPerm(e,t){return t?t.map((t=>e[t])):e.slice().reverse()}static padShape(e,t){let n=e.length;return e.map(((e,r)=>e+t[r]+t[r+n]))}static areEqual(e,t){return e.length===t.length&&e.every(((e,n)=>e===t[n]))}},mt=class e{static adjustPoolAttributes(e,t,n,r,a,i){if(!e&&n.length!==t.length-2)throw new Error("length of specified kernel shapes should be 2 less than length of input dimensions");if(e)for(let e=0;e=n.length?n.push(t[e+2]):n[e]=t[e+2];for(let e=0;e=n[e]||i[e+n.length]>=n[e])throw new Error("pads should be smaller than kernel")}}static adjustPadsBasedOnAutoPad(t,n,r,a,i,o,s){if(s){if(i.length!==2*(t.length-2))throw new Error("length of pads should be twice the length of data dimensions");if(n.length!==t.length-2)throw new Error("length of strides should be the length of data dimensions");if(a.length!==t.length-2)throw new Error("length of kernel shapes should be the length of data dimensions");for(let u=0;u{$s(),Ts(),wt=(e,t)=>{if(3===t)throw new Error("vec3 has same alignment as vec4, use vec4 instead");switch(e){case 10:return t>1?`vec${t}`:"f16";case 1:return t>1?`vec${t}`:"f32";case 6:return t>1?`vec${t}`:"i32";case 12:return t>1?`vec${t}`:"u32";case 7:if(t>1)throw new Error("currently not supported vecX of uint64 yet");return["vec2","i32"];case 13:if(t>1)throw new Error("currently not supported vecX of uint64 yet");return["vec2","u32"];case 9:if(4!==t)throw new Error("bool must be vec4");return["u32","vec4"];default:throw new Error(`Unknown data type: ${e}`)}},vt=(e,t=1)=>{let n=wt(e,t);return"string"==typeof n?n:n[0]},$t=(e,t=1)=>{let n=wt(e,t);return"string"==typeof n?n:n[1]},_t=e=>0===e.length?[]:[{type:"uint32",data:e},{type:"uint32",data:ht.computeStrides(e)}],xt=e=>e%4==0?4:e%2==0?2:1,St=(e="f32",t,n="0")=>t&&1!==t?`vec${t}<${e}>(${n})`:`${e}(${n})`,Ct=(e,t,n)=>"f32"===e?n:1===t?`f32(${n})`:`vec${t}f(${n})`,Et=(e,t)=>4===t?`(${e}.x + ${e}.y + ${e}.z + ${e}.w)`:2===t?`(${e}.x + ${e}.y)`:3===t?`(${e}.x + ${e}.y + ${e}.z)`:e,It=(e,t,n,r)=>e.startsWith("uniforms.")&&n>4?"string"==typeof t?"f16"===r?`${e}[(${t}) / 8][(${t}) % 8 / 4][(${t}) % 8 % 4]`:`${e}[(${t}) / 4][(${t}) % 4]`:"f16"===r?`${e}[${Math.floor(t/8)}][${Math.floor(t%8/4)}][${t%8%4}]`:`${e}[${Math.floor(t/4)}][${t%4}]`:n>1?`${e}[${t}]`:e,Tt=(e,t,n,r,a)=>{let i="number"==typeof n,o=i?n:n.length,s=[...new Array(o).keys()],u=o<2?"u32":o<=4?`vec${o}`:`array`,l=wt(t,a),d="string"==typeof l?l:l[1],p="string"==typeof l?l:l[0],c={indices:u,value:d,storage:p,tensor:t},f=e=>"string"==typeof e?e:`${e}u`,h={offsetToIndices:!1,indicesToOffset:!1,broadcastedIndicesToOffset:!1,set:!1,setByIndices:!1,get:!1,getByIndices:!1},m=i?"uniforms.":"",g=`${m}${e}_shape`,y=`${m}${e}_strides`,b="";for(let e=0;e ${c.indices} {\n var indices: ${c.indices};\n var current = offset;\n ${b}\n return indices;\n }`,v=[];if(o>=2)for(let e=o-1;e>=0;e--)v.push(`${It(y,e,o)} * (indices[${e}])`);let $=o<2?"":`\n fn i2o_${e}(indices: ${c.indices}) -> u32 {\n return ${v.join("+")};\n }`,_=(...e)=>0===o?"0u":`${c.indices}(${e.map(f).join(",")})`,x=(e,t)=>o<2?`${e}`:`${It(e,t,o)}`,S={},C=(t,n)=>(()=>{if(c.storage===c.value)return`${e}[${t}]=${n};`;if("vec2"===c.storage&&"i32"===c.value)return`${e}[${t}]=vec2(u32(${n}), select(0u, 0xFFFFFFFFu, ${n} < 0));`;if("vec2"===c.storage&&"u32"===c.value)return`${e}[${t}]=vec2(u32(${n}), 0u);`;if("u32"===c.storage&&"vec4"===c.value)return`${e}[${t}]=dot(vec4(0x1, 0x100, 0x10000, 0x1000000), vec4(${n}));`;throw new Error(`not supported combination of storage type ${c.storage} and value type ${c.value} yet`)})(),E=t=>(()=>{if(c.storage===c.value)return`${e}[${t}]`;if("vec2"===c.storage&&"i32"===c.value)return`i32(${e}[${t}].x)`;if("vec2"===c.storage&&"u32"===c.value)return`u32(${e}[${t}].x)`;if("u32"===c.storage&&"vec4"===c.value)return`vec4(bool(${e}[${t}] & 0xFFu), bool(${e}[${t}] & 0xFF00u), bool(${e}[${t}] & 0xFF0000u), bool(${e}[${t}] & 0xFF000000u))`;throw new Error(`not supported combination of storage type ${c.storage} and value type ${c.value} yet`)})(),I=o<2?"":`\n fn get_${e}ByIndices(indices: ${c.indices}) -> ${d} {\n return ${E(`i2o_${e}(indices)`)};\n }`,T=o<2?"":(()=>{let t=s.map((e=>`d${e}: u32`)).join(", "),n=s.map((e=>`d${e}`)).join(", ");return`\n fn get_${e}(${t}) -> ${d} {\n return get_${e}ByIndices(${_(n)});\n }`})(),A=o<2?"":`\n fn set_${e}ByIndices(indices: ${c.indices}, value: ${d}) {\n ${C(`i2o_${e}(indices)`,"value")}\n }`,k=o<2?"":(()=>{let t=s.map((e=>`d${e}: u32`)).join(", "),n=s.map((e=>`d${e}`)).join(", ");return`\n fn set_${e}(${t}, value: ${d}) {\n set_${e}ByIndices(${_(n)}, value);\n }`})();return{impl:()=>{let e=[],t=!1;return h.offsetToIndices&&(e.push(w),t=!0),h.indicesToOffset&&(e.push($),t=!0),h.broadcastedIndicesToOffset&&(Object.values(S).forEach((t=>e.push(t))),t=!0),h.set&&(e.push(k),t=!0),h.setByIndices&&(e.push(A),t=!0),h.get&&(e.push(T),t=!0),h.getByIndices&&(e.push(I),t=!0),!i&&t&&e.unshift(`const ${g} = ${c.indices}(${n.join(",")});`,`const ${y} = ${c.indices}(${ht.computeStrides(n).join(",")});`),e.join("\n")},type:c,offsetToIndices:t=>(h.offsetToIndices=!0,o<2?t:`o2i_${e}(${t})`),indicesToOffset:t=>(h.indicesToOffset=!0,o<2?t:`i2o_${e}(${t})`),broadcastedIndicesToOffset:(t,n)=>{h.broadcastedIndicesToOffset=!0;let r=`${n.name}broadcastedIndicesTo${e}Offset`;if(r in S)return`${r}(${t})`;let a=[];for(let e=o-1;e>=0;e--){let t=n.indicesGet("outputIndices",e+n.rank-o);a.push(`${x(y,e)} * (${t} % ${x(g,e)})`)}return S[r]=`fn ${r}(outputIndices: ${n.type.indices}) -> u32 {\n return ${a.length>0?a.join("+"):"0u"};\n }`,`${r}(${t})`},indices:_,indicesGet:x,indicesSet:(e,t,n)=>o<2?`${e}=${n};`:`${It(e,t,o)}=${n};`,set:(...t)=>{if(t.length!==o+1)throw new Error(`indices length must be ${o}`);let n=t[o];if("string"!=typeof n)throw new Error("value must be string");let r=t.slice(0,o).map(f).join(",");return 0===o?C("0u",n):1===o?C(r[0],n):(h.set=!0,h.setByIndices=!0,h.indicesToOffset=!0,`set_${e}(${r}, ${n})`)},setByOffset:C,setByIndices:(t,n)=>o<2?C(t,n):(h.setByIndices=!0,h.indicesToOffset=!0,`set_${e}ByIndices(${t}, ${n});`),get:(...t)=>{if(t.length!==o)throw new Error(`indices length must be ${o}`);let n=t.map(f).join(",");return 0===o?E("0u"):1===o?E(n[0]):(h.get=!0,h.getByIndices=!0,h.indicesToOffset=!0,`get_${e}(${n})`)},getByOffset:E,getByIndices:t=>o<2?E(t):(h.getByIndices=!0,h.indicesToOffset=!0,`get_${e}ByIndices(${t})`),usage:r,name:e,strides:y,shape:g,rank:o}},At=(e,t,n,r=1)=>Tt(e,t,n,"input",r),kt=(e,t,n,r=1)=>Tt(e,t,n,"output",r),Ot=(e,t,n,r=1)=>Tt(e,t,n,"internal",r),Rt=class{constructor(e){this.normalizedDispatchGroup=e,this.internalVariables=[],this.variables=[],this.uniforms=[],this.variableIndex=0}guardAgainstOutOfBoundsWorkgroupSizes(e){return`if (global_idx >= ${"number"==typeof e?`${e}u`:e}) { return; }`}mainStart(e=64){let t="number"==typeof e?e:e[0],n="number"==typeof e?1:e[1],r="number"==typeof e?1:e[2],a=1===this.normalizedDispatchGroup[1]&&1===this.normalizedDispatchGroup[2];return`@compute @workgroup_size(${t}, ${n}, ${r})\n fn main(${a?"@builtin(global_invocation_id) global_id : vec3,\n @builtin(workgroup_id) workgroup_id : vec3,\n @builtin(local_invocation_id) local_id : vec3":"@builtin(local_invocation_id) local_id : vec3,\n @builtin(local_invocation_index) local_idx : u32,\n @builtin(workgroup_id) workgroup_id : vec3,\n @builtin(num_workgroups) num_workgroups : vec3"}) {\n ${a?"let global_idx = global_id.x; let local_idx = local_id.x;":`let global_idx = (workgroup_id.z * num_workgroups[0] * num_workgroups[1] +\n workgroup_id.y * num_workgroups[0] + workgroup_id.x) * ${t*n*r}u + local_idx;`}\n `}appendVariableUniforms(e){0!==e.rank&&(e.shape.startsWith("uniforms.")&&this.uniforms.push({name:e.shape.replace("uniforms.",""),type:"u32",length:e.rank}),e.strides.startsWith("uniforms.")&&this.uniforms.push({name:e.strides.replace("uniforms.",""),type:"u32",length:e.rank}))}declareVariable(e,t){if("internal"===e.usage)throw new Error("cannot use internal variable with declareVariable(). use registerInternalVariables() instead.");this.variables.push(e),this.appendVariableUniforms(e);let n="input"===e.usage?"read":"read_write",r=e.type.storage;return`@group(0) @binding(${t}) var ${e.name}: array<${r}>;`}declareVariables(...e){return e.map((e=>this.declareVariable(e,this.variableIndex++))).join("\n")}registerInternalVariable(e){if("internal"!==e.usage)throw new Error("cannot use input or output variable with registerInternalVariable(). use declareVariables() instead.");this.internalVariables.push(e),this.appendVariableUniforms(e)}registerInternalVariables(...e){return e.forEach((e=>this.registerInternalVariable(e))),this}registerUniform(e,t,n=1){return this.uniforms.push({name:e,type:t,length:n}),this}registerUniforms(e){return this.uniforms=this.uniforms.concat(e),this}uniformDeclaration(){if(0===this.uniforms.length)return"";let e=[];for(let{name:t,type:n,length:r}of this.uniforms)if(r&&r>4)"f16"===n?e.push(`@align(16) ${t}:array, ${Math.ceil(r/8)}>`):e.push(`${t}:array, ${Math.ceil(r/4)}>`);else{let a=null==r||1===r?n:`vec${r}<${n}>`;e.push(`${t}:${a}`)}return`\n struct Uniforms { ${e.join(", ")} };\n @group(0) @binding(${this.variableIndex}) var uniforms: Uniforms;`}get additionalImplementations(){return this.uniformDeclaration()+this.variables.map((e=>e.impl())).join("\n")+this.internalVariables.map((e=>e.impl())).join("\n")}},zt=e=>new Rt(e),Bt=(e,t)=>{let n=e.length,r=[];for(let a=0;a1&&1===o&&r.unshift(i)}return r}})),ks=U((()=>{Ts(),Is(),As(),Pt=e=>{if(!e||1!==e.length)throw new Error("Transpose requires 1 input.")},Mt=(e,t)=>t&&t.length!==e?[...new Array(e).keys()].reverse():t,Dt=(e,t)=>ht.sortBasedOnPerm(e,Mt(e.length,t)),Nt=(e,t,n,r)=>{let a=[];a.push(`fn perm(i: ${r.type.indices}) -> ${n.type.indices} {\n var a: ${n.type.indices};`);for(let r=0;r{let n=e.dataType,r=e.dims.length,a=Mt(r,t),i=Dt(e.dims,a),o=kt("output",n,i.length),s=At("a",n,r);return{name:"Transpose",shaderCache:{hint:`${t}`,inputDependencies:["rank"]},getRunData:e=>{let t=ht.size(i);return{outputs:[{dims:i,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(t/64)},programUniforms:[{type:"uint32",data:t},..._t(e[0].dims),..._t(i)]}},getShaderSource:e=>`\n ${e.registerUniform("output_size","u32").declareVariables(s,o)}\n\n ${Nt(a,r,s,o)}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}\n\n let indices = ${o.offsetToIndices("global_idx")};\n let aIndices = perm(indices);\n\n ${o.setByOffset("global_idx",s.getByIndices("aIndices"))}\n }`}},Ut=(e,t)=>{Pt(e.inputs),e.compute(Wt(e.inputs[0],t.perm))},Vt=e=>pt({perm:e.perm})})),Os=U((()=>{Ts(),As(),Rs(),ks(),Ht={max:"select(bestValue, candidate, candidate > bestValue)",min:"select(bestValue, candidate, candidate < bestValue)",mean:"bestValue + candidate",sum:"bestValue + candidate",prod:"bestValue * candidate",sumSquare:"bestValue + candidate * candidate",logSumExp:"bestValue + exp(candidate)",l1:"bestValue + abs(candidate)",l2:"bestValue + candidate * candidate",logSum:"bestValue + candidate"},Lt={max:"select(bestValue, candidate, candidate > bestValue)",min:"select(bestValue, candidate, candidate < bestValue)",mean:"bestValue + candidate",sum:"bestValue + candidate",prod:"bestValue * candidate",sumSquare:"bestValue + candidate",logSumExp:"bestValue + candidate",l1:"bestValue + candidate",l2:"bestValue + candidate",logSum:"bestValue + candidate"},Ft={max:"_A[offset]",min:"_A[offset]",mean:"0",sum:"0",prod:"1",sumSquare:"0",logSumExp:"0",l1:"0",l2:"0",logSum:"0"},Gt={max:"bestValue",min:"bestValue",sum:"bestValue",prod:"bestValue",sumSquare:"bestValue",logSumExp:"log(bestValue)",l1:"bestValue",l2:"sqrt(bestValue)",logSum:"log(bestValue)"},jt=(e,t)=>{let n=[];for(let r=t-e;r{let n=[],r=e.length;for(let a=0;ae[t]))]},Kt=(e,t)=>{let n=e.length+t.length,r=[],a=0;for(let i=0;i{for(let n=0;n{let n=[];if(!Yt(e,t)){for(let r=0;rn.push(e)))}return n},Qt=(e,t,n,r,a,i,o)=>{let s=n[0].dims,u=ht.size(i),l=ht.size(o),d=At("_A",n[0].dataType,s),p=kt("output",a,i),c=`\n var aBestValues : array<${p.type.storage}, 32>;\n `;return{name:e,shaderCache:t,getShaderSource:e=>`\n ${e.registerUniform("reduceSize","u32").declareVariables(d,p)}\n ${c}\n fn DIV_CEIL(a : u32, b : u32) -> u32 {\n return ((a - 1u) / b + 1u);\n }\n ${e.mainStart(32)}\n\n let outputIndex = global_idx / 32;\n let offset = outputIndex * uniforms.reduceSize;\n\n var bestValue = ${p.type.storage}(${Ft[r]});\n let Length = uniforms.reduceSize;\n for (var k = local_idx; k < Length; k = k + 32) {\n let candidate = ${p.type.storage}(${d.getByOffset("offset + k")});\n bestValue = ${Ht[r]};\n }\n aBestValues[local_idx] = bestValue;\n workgroupBarrier();\n\n var reduceSize = min(Length, 32u);\n for (var currentSize = reduceSize / 2u; reduceSize > 1u;\n currentSize = reduceSize / 2u) {\n let interval = DIV_CEIL(reduceSize, 2u);\n if (local_idx < currentSize) {\n let candidate = aBestValues[local_idx + interval];\n bestValue = ${Lt[r]};\n aBestValues[local_idx] = bestValue;\n }\n reduceSize = interval;\n workgroupBarrier();\n }\n\n if (local_idx == 0u) {\n ${p.setByOffset("outputIndex","mean"===r?`bestValue / ${p.type.storage}(uniforms.reduceSize)`:`${Gt[r]}`)};\n }\n }`,getRunData:()=>({outputs:[{dims:i,dataType:a}],dispatchGroup:{x:u},programUniforms:[{type:"uint32",data:l}]})}},Xt=(e,t,n,r)=>{let a=1===e.inputs.length?n:fn(e.inputs,n),i=a.axes;0===i.length&&!a.noopWithEmptyAxes&&(i=e.inputs[0].dims.map(((e,t)=>t)));let o=ht.normalizeAxes(i,e.inputs[0].dims.length),s=o,u=e.inputs[0],l=Zt(s,e.inputs[0].dims.length);l.length>0&&(u=e.compute(Wt(e.inputs[0],l),{inputs:[0],outputs:[-1]})[0],s=jt(s.length,u.dims.length));let[d,p]=qt(u.dims,s),c=d;a.keepDims&&(c=Kt(d,o)),e.compute(Qt(t,{hint:a.cacheKey,inputDependencies:["type"]},[u],r,e.inputs[0].dataType,c,p),{inputs:[u]})},Jt=(e,t)=>{Xt(e,"ReduceMeanShared",t,"mean")},en=(e,t)=>{Xt(e,"ReduceL1Shared",t,"l1")},tn=(e,t)=>{Xt(e,"ReduceL2Shared",t,"l2")},nn=(e,t)=>{Xt(e,"ReduceLogSumExpShared",t,"logSumExp")},rn=(e,t)=>{Xt(e,"ReduceMaxShared",t,"max")},an=(e,t)=>{Xt(e,"ReduceMinShared",t,"min")},on=(e,t)=>{Xt(e,"ReduceProdShared",t,"prod")},sn=(e,t)=>{Xt(e,"ReduceSumShared",t,"sum")},un=(e,t)=>{Xt(e,"ReduceSumSquareShared",t,"sumSquare")},ln=(e,t)=>{Xt(e,"ReduceLogSumShared",t,"logSum")}})),Rs=U((()=>{Ts(),Is(),As(),Os(),dn=e=>{if(!e||0===e.length||e.length>2)throw new Error("Reduce op requires 1 or 2 inputs.");if(2===e.length&&1!==e[1].dims.length)throw new Error("Invalid axes input dims.")},pn=e=>["","",`var value = ${e.getByIndices("input_indices")};`,""],cn=(e,t,n,r,a,i,o=!1,s=!1)=>{let u=[],l=n[0].dims,d=l.length,p=ht.normalizeAxes(a,d),c=!s&&0===p.length;l.forEach(((e,t)=>{c||p.indexOf(t)>=0?o&&u.push(1):u.push(e)}));let f=u.length,h=ht.size(u);return{name:e,shaderCache:t,getShaderSource:e=>{let t=[],a=At("_A",n[0].dataType,d),s=kt("output",i,f),u=r(a,s,p),h=u[2];for(let e=0,n=0;e=0?(o&&n++,h=`for(var j${e}: u32 = 0; j${e} < ${l[e]}; j${e}++) {\n ${u[2].includes("last_index")?`let last_index = j${e};`:""}\n ${a.indicesSet("input_indices",e,`j${e}`)}\n ${h}\n }`):(t.push(`${a.indicesSet("input_indices",e,s.indicesGet("output_indices",n))};`),n++);return`\n\n ${e.registerUniform("output_size","u32").declareVariables(a,s)}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}\n var input_indices: ${a.type.indices};\n let output_indices = ${s.offsetToIndices("global_idx")};\n\n ${t.join("\n")}\n ${u[0]} // init ops for reduce max/min\n ${u[1]}\n ${h}\n ${u[3]}\n ${4===u.length?s.setByOffset("global_idx","value"):u.slice(4).join("\n")}\n }`},getRunData:()=>({outputs:[{dims:u,dataType:i}],dispatchGroup:{x:Math.ceil(h/64)},programUniforms:[{type:"uint32",data:h},..._t(l),..._t(u)]})}},fn=(e,t)=>{let n=[];return e[1].dims[0]>0&&e[1].getBigInt64Array().forEach((e=>n.push(Number(e)))),pt({axes:n,keepDims:t.keepDims,noopWithEmptyAxes:t.noopWithEmptyAxes})},hn=(e,t,n,r)=>{let a=e.inputs,i=1===a.length?n:fn(a,n);e.compute(cn(t,{hint:i.cacheKey,inputDependencies:["rank"]},[a[0]],i.noopWithEmptyAxes&&0===i.axes.length?pn:r,i.axes,a[0].dataType,i.keepDims,i.noopWithEmptyAxes),{inputs:[0]})},mn=(e,t)=>{dn(e.inputs),hn(e,"ReduceLogSum",t,((e,t)=>[`var value = ${t.type.storage}(0);`,"",`value += ${e.getByIndices("input_indices")};`,"value = log(value);"]))},gn=(e,t)=>{dn(e.inputs),hn(e,"ReduceL1",t,((e,t)=>[`var value = ${t.type.storage}(0);`,"",`value += abs(${e.getByIndices("input_indices")});`,""]))},yn=(e,t)=>{dn(e.inputs),hn(e,"ReduceL2",t,((e,t)=>[`var t = ${t.type.value}(0); var value = ${t.type.value}(0);`,"",`t = ${e.getByIndices("input_indices")}; value += (t * t);`,"value = sqrt(value);"]))},bn=(e,t)=>{dn(e.inputs),hn(e,"ReduceLogSumExp",t,((e,t)=>[`var value = ${t.type.storage}(0);`,"",`value += exp(${e.getByIndices("input_indices")});`,"value = log(value);"]))},wn=(e,t)=>{dn(e.inputs),hn(e,"ReduceMax",t,((e,t,n)=>{let r=[];for(let t=0;t=0||0===n.length)&&r.push(e.indicesSet("input_indices",t,0));return[`${r.join("\n")}`,`var value = ${e.getByIndices("input_indices")};`,`value = max(value, ${e.getByIndices("input_indices")});`,""]}))},vn=(e,t)=>{dn(e.inputs),hn(e,"ReduceMean",t,((t,n,r)=>{let a=1;for(let n=0;n=0||0===r.length)&&(a*=e.inputs[0].dims[n]);return["var sum = f32(0);","",`sum += f32(${t.getByIndices("input_indices")});`,`let value = ${n.type.value}(sum / ${a});`]}))},$n=(e,t)=>{dn(e.inputs),hn(e,"ReduceMin",t,((e,t,n)=>{let r=[];for(let t=0;t=0||0===n.length)&&r.push(`input_indices[${t}] = 0;`);return[`${r.join("\n")}`,`var value = ${e.getByIndices("input_indices")};`,`value = min(value, ${e.getByIndices("input_indices")});`,""]}))},_n=(e,t)=>{dn(e.inputs),hn(e,"ReduceProd",t,((e,t)=>[`var value = ${t.type.storage}(1);`,"",`value *= ${e.getByIndices("input_indices")};`,""]))},xn=(e,t)=>{dn(e.inputs),hn(e,"ReduceSum",t,((e,t)=>[`var value = ${t.type.storage}(0);`,"",`value += ${e.getByIndices("input_indices")};`,""]))},Sn=(e,t)=>{dn(e.inputs),hn(e,"ReduceSumSquare",t,((e,t)=>[`var t = ${t.type.value}(0); var value = ${t.type.value}(0);`,"",`t = ${e.getByIndices("input_indices")}; value += t * t;`,""]))},Cn=(e,t,n)=>{if(0===t.length)return n;let r=1,a=1;for(let n=0;n1024},En=(e,t)=>{Cn(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?vn(e,t):Jt(e,t)},In=(e,t)=>{Cn(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?gn(e,t):en(e,t)},Tn=(e,t)=>{Cn(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?yn(e,t):tn(e,t)},An=(e,t)=>{Cn(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?bn(e,t):nn(e,t)},kn=(e,t)=>{Cn(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?wn(e,t):rn(e,t)},On=(e,t)=>{Cn(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?$n(e,t):an(e,t)},Rn=(e,t)=>{Cn(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?_n(e,t):on(e,t)},zn=(e,t)=>{Cn(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?xn(e,t):sn(e,t)},Bn=(e,t)=>{Cn(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Sn(e,t):un(e,t)},Pn=(e,t)=>{Cn(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?mn(e,t):ln(e,t)}})),zs=U((()=>{$s(),Is(),Rs(),Mn=e=>{if(!e||0===e.length||e.length>2)throw new Error("ArgMinMaxOp op requires 1 or 2 inputs.");if(1!==e[0].dataType)throw new Error("Invalid input type.")},Dn=(e,t)=>{Mn(e.inputs),e.compute(cn("ArgMin",{hint:t.cacheKey,inputDependencies:["rank"]},[e.inputs[0]],((e,n,r)=>{let a=[];for(let t=0;t=0||0===r.length)&&a.push(`input_indices[${t}] = 0;`);return[`${a.join("\n")}`,`var value = ${e.getByIndices("input_indices")};\nvar best_index : i32 = 0;`,`if (${e.getByIndices("input_indices")} ${t.selectLastIndex>0?"<=":"<"} value) {\n value = ${e.getByIndices("input_indices")};\n best_index = i32(last_index);\n }`,"",n.setByOffset("global_idx","best_index")]}),[t.axis],7,t.keepDims),{inputs:[0]})},Nn=(e,t)=>{Mn(e.inputs),e.compute(cn("argMax",{hint:t.cacheKey,inputDependencies:["rank"]},[e.inputs[0]],((e,n,r)=>{let a=[];for(let t=0;t=0||0===r.length)&&a.push(`input_indices[${t}] = 0;`);return[`${a.join("\n")}`,`var value = ${e.getByIndices("input_indices")};\nvar best_index : i32 = 0;`,`if (${e.getByIndices("input_indices")} ${t.selectLastIndex>0?">=":">"} value) {\n value = ${e.getByIndices("input_indices")};\n best_index = i32(last_index);\n }`,"",n.setByOffset("global_idx","best_index")]}),[t.axis],7,t.keepDims),{inputs:[0]})},Wn=e=>pt(e)})),Bs=U((()=>{$s(),Cs(),As(),Un=(e,t)=>{let n=e[0],r=e[1],a=e[2],i=e[3],o=e[4],s=e[5];if(o&&s)throw new Error("Attention cannot have both past and relative_position_bias");if(3!==n.dims.length)throw new Error('Input "input" must have 3 dimensions');let u=n.dims[0],l=n.dims[1],d=n.dims[2];if(1!==a.dims.length)throw new Error('Input "bias" is expected to have 1 dimensions');if(2!==r.dims.length)throw new Error('Input "weights" is expected to have 2 dimensions');if(r.dims[0]!==d)throw new Error("Input 1 dimension 0 should have same length as dimension 2 of input 0");if(a.dims[0]!==r.dims[1])throw new Error('Input "bias" dimension 0 should have same length as dimension 1 of input "weights"');let p=a.dims[0]/3,c=p,f=c;if(t.qkvHiddenSizes.length>0){if(3!==t.qkvHiddenSizes.length)throw new Error("qkv_hidden_sizes attribute should have 3 elements");for(let e of t.qkvHiddenSizes)if(e%t.numHeads!=0)throw new Error("qkv_hidden_sizes should be divisible by num_heads");p=t.qkvHiddenSizes[0],c=t.qkvHiddenSizes[1],f=t.qkvHiddenSizes[2]}let h=l;if(p!==c)throw new Error("qkv_hidden_sizes first element should be same as the second");if(a.dims[0]!==p+c+f)throw new Error('Input "bias" dimension 0 should have same length as sum of Q/K/V hidden sizes');let m=0;if(o){if(c!==f)throw new Error('Input "past" expect k_hidden_size == v_hidden_size');if(5!==o.dims.length)throw new Error('Input "past" must have 5 dimensions');if(2!==o.dims[0])throw new Error('Input "past" first dimension must be 2');if(o.dims[1]!==u)throw new Error('Input "past" second dimension must be batch_size');if(o.dims[2]!==t.numHeads)throw new Error('Input "past" third dimension must be num_heads');if(o.dims[4]!==c/t.numHeads)throw new Error('Input "past" fifth dimension must be k_hidden_size / num_heads');t.pastPresentShareBuffer||(m=o.dims[3])}let g=h+m;if(i)throw new Error("Mask not supported");if(o)throw new Error("past is not supported");if(s)throw new Error("relativePositionBias is not supported");return{batchSize:u,sequenceLength:l,pastSequenceLength:m,kvSequenceLength:h,totalSequenceLength:g,maxSequenceLength:-1,inputHiddenSize:d,hiddenSize:p,vHiddenSize:f,headSize:Math.floor(p/t.numHeads),vHeadSize:Math.floor(f/t.numHeads),numHeads:t.numHeads,isUnidirectional:!1,pastPresentShareBuffer:!1,maskFilterValue:t.maskFilterValue,maskType:0,scale:t.scale,broadcastResPosBias:!1,passPastInKv:!1,qkvFormat:1}},Vn=(e,t,n,r)=>{let a=xt(r),i=64,o=r/a;o{let n=kt("x",t.dataType,t.dims,a),r="thread_max_vector";2===a?r="max(thread_max_vector.x, thread_max_vector.y)":4===a&&(r="max(max(thread_max_vector.x, thread_max_vector.y), max(thread_max_vector.z, thread_max_vector.w))");let o=$t(t.dataType),s=[{name:"d_inv",type:o},{name:"d_comp",type:"u32"},{name:"elements_per_wg",type:"u32"}];return`\n var wgMax: array;\n var wgSum: array;\n ${e.registerUniforms(s).declareVariables(n)}\n ${e.mainStart([i,1,1])}\n let localOffset = local_idx * uniforms.elements_per_wg;\n let offset: u32 = workgroup_id.x * uniforms.d_comp + localOffset;\n\n var thread_max_vector = ${St("f32",a,"-3.402823e+38f")};\n for (var i: u32 = 0; i < uniforms.elements_per_wg && i + localOffset < uniforms.d_comp; i++) {\n thread_max_vector = max(${Ct(o,a,"x[offset + i]")}, thread_max_vector);\n }\n wgMax[local_idx] = ${r};\n workgroupBarrier();\n\n var maxValue = -3.402823e+38f;\n for (var i = 0u; i < ${i}; i++) {\n maxValue = max(wgMax[i], maxValue);\n }\n\n var sumVector = ${St("f32",a,"0")};\n for (var i: u32 = 0; i < uniforms.elements_per_wg && i + localOffset < uniforms.d_comp; i++) {\n sumVector += exp(${Ct(o,a,"x[offset + i]")} - maxValue);\n }\n wgSum[local_idx] = ${Et("sumVector",a)};\n workgroupBarrier();\n\n var sum: f32 = 0;\n for (var i = 0u; i < ${i}; i++) {\n sum += wgSum[i];\n }\n\n if (sum == 0) {\n for (var i: u32 = 0; i < uniforms.elements_per_wg && i + localOffset < uniforms.d_comp; i++) {\n x[offset + i] = ${St(o,a,"uniforms.d_inv")};\n }\n } else {\n for (var i: u32 = 0; i < uniforms.elements_per_wg && i + localOffset < uniforms.d_comp; i++) {\n let f32input = ${Ct(o,a,"x[offset + i]")};\n x[offset + i] = ${n.type.value}(exp(f32input - maxValue) / sum);\n }\n }\n }`},getRunData:()=>({outputs:[],dispatchGroup:{x:n},programUniforms:u})},{inputs:[t],outputs:[]})},Hn=(e,t,n,r,a,i)=>{let o=[a.batchSize,a.numHeads,a.sequenceLength,a.kvSequenceLength+a.pastSequenceLength],s=0===i.scale?1/Math.sqrt(a.headSize):i.scale,u=xt(a.headSize),l=a.headSize/u,d={x:Math.ceil(a.totalSequenceLength/12),y:Math.ceil(a.sequenceLength/12),z:a.batchSize*a.numHeads},p=Le(t.dataType),c=[{type:"uint32",data:a.sequenceLength},{type:"uint32",data:l},{type:"uint32",data:a.totalSequenceLength},{type:"uint32",data:a.kvSequenceLength},{type:p,data:s}],f=[t,n],h=e.compute({name:"AttentionProbs",shaderCache:{hint:`${u}`,inputDependencies:["type","type"]},getRunData:()=>({outputs:[{dims:o,dataType:t.dataType,gpuDataType:0}],dispatchGroup:d,programUniforms:c}),getShaderSource:e=>{let r=At("q",t.dataType,t.dims,u),a=At("key",n.dataType,n.dims,u),i=kt("output",t.dataType,o),s=vt(t.dataType),l=[{name:"M",type:"u32"},{name:"K",type:"u32"},{name:"N",type:"u32"},{name:"kv_sequence_length",type:"u32"},{name:"alpha",type:s}];return`\n const beta: ${s} = 1.0;\n const TILE_SIZE = 12u;\n\n var tileQ: array<${r.type.storage}, 144>;\n var tileK: array<${r.type.storage}, 144>;\n ${e.registerUniforms(l).declareVariables(r,a,i)}\n ${e.mainStart([12,12,1])}\n // x holds the N and y holds the M\n let headIdx = workgroup_id.z;\n let m = workgroup_id.y * TILE_SIZE;\n let n = workgroup_id.x * TILE_SIZE;\n let lm = m + local_id.y;\n let ln = n + local_id.x;\n\n let qOffset = uniforms.M * uniforms.K * headIdx + m * uniforms.K;\n let kOffset = uniforms.kv_sequence_length * uniforms.K * headIdx + n * uniforms.K;\n\n var value = ${St(s,u)};\n for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {\n if (m + local_id.y < uniforms.M && w + local_id.x < uniforms.K) {\n tileQ[TILE_SIZE * local_id.y + local_id.x] = q[qOffset + local_id.y * uniforms.K + w + local_id.x];\n }\n if (n + local_id.y < uniforms.N && w + local_id.x < uniforms.K) {\n tileK[TILE_SIZE * local_id.y + local_id.x] = key[kOffset + local_id.y * uniforms.K + w + local_id.x];\n }\n workgroupBarrier();\n\n for (var k: u32 = 0u; k{let a=[r.batchSize,r.sequenceLength,r.vHiddenSize],i={x:Math.ceil(r.vHeadSize/12),y:Math.ceil(r.sequenceLength/12),z:r.batchSize*r.numHeads},o=[{type:"uint32",data:r.sequenceLength},{type:"uint32",data:r.totalSequenceLength},{type:"uint32",data:r.vHeadSize},{type:"uint32",data:r.numHeads},{type:"uint32",data:r.vHiddenSize}];return e.compute({name:"AttentionScore",shaderCache:{inputDependencies:["type","type"]},getRunData:()=>({outputs:[{dims:a,dataType:t.dataType,gpuDataType:0}],dispatchGroup:i,programUniforms:o}),getShaderSource:e=>{let r=At("probs",t.dataType,t.dims),i=At("v",n.dataType,n.dims),o=kt("output",t.dataType,a);return`\n const TILE_SIZE = 12u;\n var tileQ: array<${r.type.value}, 144>;\n var tileK: array<${r.type.value}, 144>;\n ${e.registerUniforms([{name:"M",type:"u32"},{name:"K",type:"u32"},{name:"N",type:"u32"},{name:"num_heads",type:"u32"},{name:"v_hidden_size",type:"u32"}]).declareVariables(r,i,o)}\n ${e.mainStart([12,12,1])}\n let headIdx = workgroup_id.z;\n let m = workgroup_id.y * TILE_SIZE + local_id.y;\n let n = workgroup_id.x * TILE_SIZE + local_id.x;\n\n let offsetA = headIdx * (uniforms.M * uniforms.K) + m * uniforms.K;\n let offsetB = headIdx * (uniforms.N * uniforms.K) + n;\n\n var value = ${r.type.storage}(0);\n for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {\n if (m < uniforms.M && w + local_id.x < uniforms.K) {\n tileQ[TILE_SIZE * local_id.y + local_id.x] = probs[offsetA + w + local_id.x];\n }\n if (n < uniforms.N && w + local_id.y < uniforms.K) {\n tileK[TILE_SIZE * local_id.y + local_id.x] = v[offsetB + (w + local_id.y) * uniforms.N];\n }\n workgroupBarrier();\n for (var k: u32 = 0u; k{let p=Hn(e,t,n,0,l,d);Ln(e,p,r,l)},Gn=(e,t)=>{let n=[t.batchSize,t.numHeads,t.sequenceLength,t.headSize],r=t.sequenceLength,a=t.inputHiddenSize,i=t.headSize,o={x:Math.ceil(t.headSize/12),y:Math.ceil(t.sequenceLength/12),z:t.batchSize*t.numHeads},s=[e.inputs[0],e.inputs[1],e.inputs[2]],u=[{type:"uint32",data:r},{type:"uint32",data:a},{type:"uint32",data:i},{type:"uint32",data:t.numHeads},{type:"uint32",data:t.headSize},{type:"uint32",data:t.hiddenSize},{type:"uint32",data:t.hiddenSize+t.hiddenSize+t.vHiddenSize}];return e.compute({name:"AttentionPrepare",shaderCache:{inputDependencies:["type","type","type"]},getRunData:()=>({outputs:[{dims:n,dataType:e.inputs[0].dataType,gpuDataType:0},{dims:n,dataType:e.inputs[0].dataType,gpuDataType:0},{dims:n,dataType:e.inputs[0].dataType,gpuDataType:0}],dispatchGroup:o,programUniforms:u}),getShaderSource:e=>{let t=kt("output_q",s[0].dataType,n),r=kt("output_k",s[0].dataType,n),a=kt("output_v",s[0].dataType,n),i=At("input",s[0].dataType,s[0].dims),o=At("weight",s[1].dataType,s[1].dims),u=At("bias",s[2].dataType,s[2].dims),l=i.type.storage;return`\n const TILE_SIZE = 12u;\n var tileInput: array<${l}, 144>;\n var tileWeightQ: array<${l}, 144>;\n var tileWeightK: array<${l}, 144>;\n var tileWeightV: array<${l}, 144>;\n ${e.registerUniforms([{name:"M",type:"u32"},{name:"K",type:"u32"},{name:"N",type:"u32"},{name:"num_heads",type:"u32"},{name:"head_size",type:"u32"},{name:"hidden_size",type:"u32"},{name:"ldb",type:"u32"}]).declareVariables(i,o,u,t,r,a)}\n ${e.mainStart([12,12,1])}\n let batchIndex = workgroup_id.z / uniforms.num_heads;\n let headNumber = workgroup_id.z % uniforms.num_heads;\n let m = workgroup_id.y * TILE_SIZE + local_id.y;\n let n = workgroup_id.x * TILE_SIZE + local_id.x;\n\n let inputOffset = batchIndex * (uniforms.M * uniforms.K) + m * uniforms.K;\n let biasOffsetQ = headNumber * uniforms.head_size;\n let biasOffsetK = uniforms.hidden_size + biasOffsetQ;\n let biasOffsetV = uniforms.hidden_size + biasOffsetK;\n\n var valueQ = ${l}(0);\n var valueK = ${l}(0);\n var valueV = ${l}(0);\n for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {\n if (m < uniforms.M && w + local_id.x < uniforms.K) {\n tileInput[TILE_SIZE * local_id.y + local_id.x] = input[inputOffset + w + local_id.x];\n }\n if (n < uniforms.N && w + local_id.y < uniforms.K) {\n let offset = n + (w + local_id.y) * uniforms.ldb;\n tileWeightQ[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetQ + offset];\n tileWeightK[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetK + offset];\n tileWeightV[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetV + offset];\n }\n workgroupBarrier();\n for (var k: u32 = 0u; k{let n=Un(e.inputs,t),[r,a,i]=Gn(e,n);return Fn(e,r,a,i,e.inputs[4],void 0,void 0,void 0,e.inputs[5],n,t)}})),Ps=U((()=>{ue(),Ts(),Is(),As(),qn=(e,t)=>{if(!e||5!==e.length)throw new Error("BatchNormalization requires 5 inputs");let n=(e,t,n)=>{let r=t.length;if(r!==e.length)throw new Error(`${n}: num dimensions != ${r}`);t.forEach(((t,r)=>{if(t!==e[r])throw new Error(`${n}: dim[${r}] do not match`)}))};if(e[0].dims.length>1){let r="NHWC"===t.format?t.spatial?e[0].dims.slice(-1):e[0].dims.slice(-1).concat(e[0].dims.slice(1,e[0].dims.length-1)):e[0].dims.slice(1,t.spatial?2:void 0);n(e[1].dims,r,"Invalid input scale"),n(e[2].dims,r,"Invalid input B"),n(e[3].dims,r,"Invalid input mean"),n(e[4].dims,r,"Invalid input var")}else n(e[1].dims,[1],"Invalid input scale"),n(e[2].dims,[1],"Invalid input B"),n(e[3].dims,[1],"Invalid input mean"),n(e[4].dims,[1],"Invalid input var")},Kn=(e,t)=>{let{epsilon:n,spatial:r,format:a}=t,i=e[0].dims,o=r?xt(i[i.length-1]):1,s="NHWC"===a&&i.length>1?o:1,u=ht.size(i)/o,l=r,d=l?i.length:i,p=At("x",e[0].dataType,e[0].dims,o),c=At("scale",e[1].dataType,e[1].dims,s),f=At("bias",e[2].dataType,e[2].dims,s),h=At("inputMean",e[3].dataType,e[3].dims,s),m=At("inputVar",e[4].dataType,e[4].dims,s),g=kt("y",e[0].dataType,d,o);return{name:"BatchNormalization",shaderCache:{hint:`${t.epsilon}_${t.format}_${r}_${o}`,inputDependencies:l?["rank","type","type","type","type"]:void 0},getShaderSource:e=>`\n const epsilon = ${n};\n ${e.registerUniform("outputSize","u32").declareVariables(p,c,f,h,m,g)}\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n var outputIndices = ${g.offsetToIndices(`global_idx * ${o}`)};\n ${(()=>{let e="";if(r)e=`let cOffset = ${1===i.length?"0u":"NHWC"===a?`outputIndices[${i.length-1}] / ${o}`:"outputIndices[1]"};`;else if("NCHW"===a)e=`\n ${g.indicesSet("outputIndices","0","0")}\n let cOffset = ${g.indicesToOffset("outputIndices")};`;else{e=`var cIndices = ${c.type.indices}(0);\n cIndices[0] = outputIndices[${i.length-1}];`;for(let t=1;t({outputs:[{dims:e[0].dims,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:l?[{type:"uint32",data:u},..._t(i)]:[{type:"uint32",data:u}]})}},Yn=e=>pt(e),Zn=(e,t)=>{let{inputs:n,outputCount:r}=e,a=Yn({...t,outputCount:r});if(p.webgpu.validateInputContent&&qn(n,a),t.trainingMode)throw new Error("BatchNormalization trainingMode is not supported yet.");e.compute(Kn(n,a))}})),Ms=U((()=>{Ts(),As(),Qn=e=>{if(3!==e[0].dims.length)throw new Error("input should have 3 dimensions");if(![320,640,1280].includes(e[0].dims[2]))throw new Error("number of channels should be 320, 640 or 1280");if(1!==e[1].dims.length)throw new Error("bias is expected to have 1 dimensions");if(e[0].dims[2]!==e[1].dims[0])throw new Error("last dimension of input and bias are not the same")},Xn=e=>{let t=e[0].dims,n=e[0].dims[2],r=ht.size(t)/4,a=e[0].dataType,i=At("input",a,t,4),o=At("bias",a,[n],4),s=At("residual",a,t,4),u=kt("output",a,t,4);return{name:"BiasAdd",getRunData:()=>({outputs:[{dims:t,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(r/64)}}),getShaderSource:e=>`\n const channels = ${n}u / 4;\n ${e.declareVariables(i,o,s,u)}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes(r)}\n let value = ${i.getByOffset("global_idx")}\n + ${o.getByOffset("global_idx % channels")} + ${s.getByOffset("global_idx")};\n ${u.setByOffset("global_idx","value")}\n }`}},Jn=e=>{Qn(e.inputs),e.compute(Xn(e.inputs))}})),Ds=U((()=>{$s(),Ts(),Is(),As(),er=(e,t,n,r,a,i)=>{let o=Math.ceil(t/4),s="";s="string"==typeof a?`${a}(a)`:a("a");let u=At("inputData",n,[o],4),l=kt("outputData",r,[o],4);return`\n ${e.registerUniform("vec_size","u32").declareVariables(u,l)}\n\n ${i??""}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")}\n\n let a = ${u.getByOffset("global_idx")};\n ${l.setByOffset("global_idx",s)}\n }`},tr=(e,t,n,r,a,i=e.dataType)=>({name:t,shaderCache:{hint:a,inputDependencies:["type"]},getShaderSource:t=>er(t,ht.size(e.dims),e.dataType,i,n,r),getRunData:t=>({outputs:[{dims:e.dims,dataType:i}],dispatchGroup:{x:Math.ceil(ht.size(t[0].dims)/64/4)},programUniforms:[{type:"uint32",data:Math.ceil(ht.size(e.dims)/4)}]})}),nr=e=>{e.compute(tr(e.inputs[0],"Abs","abs"))},rr=e=>{e.compute(tr(e.inputs[0],"Acos","acos"))},ar=e=>{e.compute(tr(e.inputs[0],"Acosh","acosh"))},ir=e=>{e.compute(tr(e.inputs[0],"Asin","asin"))},or=e=>{e.compute(tr(e.inputs[0],"Asinh","asinh"))},sr=e=>{e.compute(tr(e.inputs[0],"Atan","atan"))},ur=e=>{e.compute(tr(e.inputs[0],"Atanh","atanh"))},lr=e=>pt(e),dr=(e,t)=>{let n;switch(t.to){case 10:n="vec4";break;case 1:n="vec4";break;case 12:n="vec4";break;case 6:n="vec4";break;case 9:n="vec4";break;default:throw new RangeError(`not supported type (specified in attribute 'to' from 'Cast' operator): ${t.to}`)}e.compute(tr(e.inputs[0],"Cast",n,void 0,t.cacheKey,t.to))},pr=e=>{let t=e.length>=2&&0!==e[1].data?e[1].getFloat32Array()[0]:yt,n=e.length>=3&&0!==e[2].data?e[2].getFloat32Array()[0]:bt;return pt({min:t,max:n})},cr=(e,t)=>{let n=1===e.inputs.length?t:pr(e.inputs),r=$t(e.inputs[0].dataType);e.compute(tr(e.inputs[0],"Clip",(e=>`clamp(${e}, clip_min_, clip_max_)`),`\n const clip_min_: vec4<${r}> = vec4(${r}(${n.min}));\n const clip_max_: vec4<${r}> = vec4(${r}(${n.max}));\n`,n.cacheKey),{inputs:[0]})},fr=e=>{e.compute(tr(e.inputs[0],"Ceil","ceil"))},hr=e=>{e.compute(tr(e.inputs[0],"Cos","cos"))},mr=e=>{e.compute(tr(e.inputs[0],"Cosh","cosh"))},gr=e=>pt(e),yr=(e,t)=>{let n=$t(e.inputs[0].dataType);e.compute(tr(e.inputs[0],"Elu",(e=>`elu_vf32(${e})`),`\n const elu_alpha_ = ${n}(${t.alpha});\n\n fn elu_f32(a: ${n}) -> ${n} {\n return select((exp(a) - 1.0) * elu_alpha_, a, a >= 0.0);\n }\n\n fn elu_vf32(v: vec4<${n}>) -> vec4<${n}> {\n return vec4(elu_f32(v.x), elu_f32(v.y), elu_f32(v.z), elu_f32(v.w));\n }`,t.cacheKey))},br=(e,t="f32")=>`\nconst r0: ${t} = 0.3275911;\nconst r1: ${t} = 0.254829592;\nconst r2: ${t} = -0.284496736;\nconst r3: ${t} = 1.421413741;\nconst r4: ${t} = -1.453152027;\nconst r5: ${t} = 1.061405429;\n\nfn erf_vf32(v: ${e}) -> ${e} {\n let absv = abs(v);\n let x = 1.0 / (1.0 + r0 * absv);\n return sign(v) * (1.0 - ((((r5 * x + r4) * x + r3) * x + r2) * x + r1) * x * exp(-absv * absv));\n}`,wr=e=>{let t=$t(e.inputs[0].dataType);e.compute(tr(e.inputs[0],"Erf",(e=>`erf_vf32(${e})`),br(`vec4<${t}>`,t)))},vr=e=>{e.compute(tr(e.inputs[0],"Exp","exp"))},$r=e=>{e.compute(tr(e.inputs[0],"Floor","floor"))},_r=e=>{let t=$t(e.inputs[0].dataType);e.compute(tr(e.inputs[0],"Gelu",(e=>`0.5 * ${e} * (1.0 + erf_vf32(${e} * 0.7071067811865475))`),br(`vec4<${t}>`,t)))},xr=(e,t)=>{let n=$t(e.inputs[0].dataType);e.compute(tr(e.inputs[0],"LeakyRelu",(e=>`select(leaky_relu_alpha_ * ${e}, ${e}, ${e} >= vec4<${n}>(0.0))`),`const leaky_relu_alpha_ = ${n}(${t.alpha});`,t.cacheKey))},Sr=e=>{e.compute(tr(e.inputs[0],"Not",(e=>`!${e}`)))},Cr=e=>{e.compute(tr(e.inputs[0],"Neg",(e=>`-${e}`)))},Er=e=>{e.compute(tr(e.inputs[0],"Reciprocal",(e=>`1.0/${e}`)))},Ir=e=>{let t=$t(e.inputs[0].dataType);e.compute(tr(e.inputs[0],"Relu",(e=>`select(vec4<${t}>(0.0), ${e}, ${e} > vec4<${t}>(0.0))`)))},Tr=e=>{e.compute(tr(e.inputs[0],"Sigmoid",(e=>`(1.0 / (1.0 + exp(-${e})))`)))},Ar=e=>pt(e),kr=(e,t)=>{let n=$t(e.inputs[0].dataType);e.compute(tr(e.inputs[0],"HardSigmoid",(e=>`max(vec4<${n}>(0.0), min(vec4<${n}>(1.0), ${t.alpha} * ${e} + vec4<${n}>(${t.beta})))`),void 0,t.cacheKey))},Or=e=>{e.compute(tr(e.inputs[0],"Sin","sin"))},Rr=e=>{e.compute(tr(e.inputs[0],"Sinh","sinh"))},zr=e=>{e.compute(tr(e.inputs[0],"Sqrt","sqrt"))},Br=e=>{e.compute(tr(e.inputs[0],"Tan","tan"))},Pr=e=>{e.compute(tr(e.inputs[0],"Tanh",(e=>`sign(${e}) * (1 - exp(-2 * abs(${e}))) / (1 + exp(-2 * abs(${e})))`)))},Mr=(e,t)=>{let n=$t(e.inputs[0].dataType);return e.compute(tr(e.inputs[0],"ThresholdedRelu",(e=>`select(vec4<${n}>(0.0), ${e}, ${e} > thresholded_relu_alpha_)`),`const thresholded_relu_alpha_ = vec4<${n}>(${t.alpha});`,t.cacheKey)),0},Dr=e=>{e.compute(tr(e.inputs[0],"Log","log"))}})),Ns=U((()=>{Ts(),As(),Ds(),Nr=e=>{if(3!==e[0].dims.length)throw new Error("input should have 3 dimensions");if(![2560,5120,10240].includes(e[0].dims[2]))throw new Error("hidden state should be 2560, 5120 or 10240");if(1!==e[1].dims.length)throw new Error("bias is expected to have 1 dimensions");if(e[0].dims[2]!==e[1].dims[0])throw new Error("last dimension of input and bias are not the same")},Wr=e=>{let t=e[0].dims.slice();t[2]=t[2]/2;let n=At("input",e[0].dataType,e[0].dims,4),r=At("bias",e[0].dataType,[e[0].dims[2]],4),a=kt("output",e[0].dataType,t,4),i=ht.size(t)/4,o=vt(e[0].dataType);return{name:"BiasSplitGelu",getRunData:()=>({outputs:[{dims:t,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(i/64)}}),getShaderSource:t=>`\n const M_SQRT2 = sqrt(2.0);\n const halfChannels = ${e[0].dims[2]/4/2}u;\n\n ${t.declareVariables(n,r,a)}\n\n ${br(`vec4<${o}>`,o)}\n\n ${t.mainStart()}\n ${t.guardAgainstOutOfBoundsWorkgroupSizes(i)}\n let biasIdx = global_idx % halfChannels;\n let batchIndex = global_idx / halfChannels;\n let inputOffset = biasIdx + batchIndex * halfChannels * 2;\n let valueLeft = input[inputOffset] + bias[biasIdx];\n let valueRight = input[inputOffset + halfChannels] + bias[biasIdx + halfChannels];\n let geluRight = valueRight * 0.5 * (erf_vf32(valueRight / M_SQRT2) + 1);\n\n ${a.setByOffset("global_idx","valueLeft * geluRight")}\n }`}},Ur=e=>{Nr(e.inputs),e.compute(Wr(e.inputs))}})),Ws=U((()=>{$s(),Ts(),As(),Vr=(e,t,n,r,a,i,o,s,u,l,d,p)=>{let c,f;"string"==typeof s?c=f=(e,t)=>`${s}((${e}),(${t}))`:"function"==typeof s?c=f=s:(c=s.scalar,f=s.vector);let h,m=kt("outputData",d,r.length,4),g=At("aData",u,t.length,4),y=At("bData",l,n.length,4);if(a)if(i){let e=1===ht.size(t),r=1===ht.size(n),a=t.length>0&&t[t.length-1]%4==0,i=n.length>0&&n[n.length-1]%4==0;h=e||r?m.setByOffset("global_idx",f(e?`${g.type.value}(${g.getByOffset("0")}.x)`:g.getByOffset("global_idx"),r?`${y.type.value}(${y.getByOffset("0")}.x)`:y.getByOffset("global_idx"))):`\n let outputIndices = ${m.offsetToIndices("global_idx * 4u")};\n let offsetA = ${g.broadcastedIndicesToOffset("outputIndices",m)};\n let offsetB = ${y.broadcastedIndicesToOffset("outputIndices",m)};\n ${m.setByOffset("global_idx",f(o||a?g.getByOffset("offsetA / 4u"):`${g.type.value}(${g.getByOffset("offsetA / 4u")}[offsetA % 4u])`,o||i?y.getByOffset("offsetB / 4u"):`${y.type.value}(${y.getByOffset("offsetB / 4u")}[offsetB % 4u])`))}\n `}else h=m.setByOffset("global_idx",f(g.getByOffset("global_idx"),y.getByOffset("global_idx")));else{if(!i)throw new Error("no necessary to use scalar implementation for element-wise binary op implementation.");let e=(e,t,n="")=>{let r=`aData[indexA${t}][componentA${t}]`,a=`bData[indexB${t}][componentB${t}]`;return`\n let outputIndices${t} = ${m.offsetToIndices(`global_idx * 4u + ${t}u`)};\n let offsetA${t} = ${g.broadcastedIndicesToOffset(`outputIndices${t}`,m)};\n let offsetB${t} = ${y.broadcastedIndicesToOffset(`outputIndices${t}`,m)};\n let indexA${t} = offsetA${t} / 4u;\n let indexB${t} = offsetB${t} / 4u;\n let componentA${t} = offsetA${t} % 4u;\n let componentB${t} = offsetB${t} % 4u;\n ${e}[${t}] = ${n}(${c(r,a)});\n `};h=9===d?`\n var data = vec4(0);\n ${e("data",0,"u32")}\n ${e("data",1,"u32")}\n ${e("data",2,"u32")}\n ${e("data",3,"u32")}\n outputData[global_idx] = dot(vec4(0x1, 0x100, 0x10000, 0x1000000), vec4(data));`:`\n ${e("outputData[global_idx]",0)}\n ${e("outputData[global_idx]",1)}\n ${e("outputData[global_idx]",2)}\n ${e("outputData[global_idx]",3)}\n `}return`\n ${e.registerUniform("vec_size","u32").declareVariables(g,y,m)}\n\n ${p??""}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")}\n ${h}\n }`},Hr=(e,t,n,r,a,i,o=n.dataType)=>{let s=!ht.areEqual(n.dims,r.dims),u=n.dims,l=ht.size(n.dims),d=!1,p=!1,c=[s];if(s){let e=ft.calcShape(n.dims,r.dims,!1);if(!e)throw new Error("Can't perform binary op on the given tensors");u=e,l=ht.size(u);let t=1===ht.size(n.dims),a=1===ht.size(r.dims),i=n.dims.length>0&&n.dims[n.dims.length-1]%4==0,o=r.dims.length>0&&r.dims[r.dims.length-1]%4==0;c.push(t),c.push(a),c.push(i),c.push(o);let s=1;for(let e=1;ee.toString())).join("_"),inputDependencies:["rank","rank"]},getShaderSource:e=>Vr(e,n.dims,r.dims,u,d,s,p,a,n.dataType,r.dataType,o,i),getRunData:()=>({outputs:[{dims:u,dataType:o}],dispatchGroup:{x:Math.ceil(l/64/4)},programUniforms:[{type:"uint32",data:Math.ceil(ht.size(u)/4)},..._t(n.dims),..._t(r.dims),..._t(u)]})}},Lr=(e,t,n,r,a,i)=>{e.compute(Hr(t,a??"",e.inputs[0],e.inputs[1],n,r,i))},Fr=e=>{Lr(e,"Add",((e,t)=>`${e}+${t}`))},Gr=e=>{Lr(e,"Div",((e,t)=>`${e}/${t}`))},jr=e=>{Lr(e,"Equal",{scalar:(e,t)=>`u32(${e}==${t})`,vector:(e,t)=>`vec4(${e}==${t})`},void 0,void 0,9)},qr=e=>{Lr(e,"Mul",((e,t)=>`${e}*${t}`))},Kr=e=>{let t=At("input",e.inputs[0].dataType,e.inputs[0].dims).type.value;Lr(e,"Pow",{scalar:(e,t)=>`pow_custom(${e},${t})`,vector:(e,t)=>`pow_vector_custom(${e},${t})`},`\n fn pow_custom(a : ${t}, b : ${t}) -> ${t} {\n if (b == ${t}(0.0)) {\n return ${t}(1.0);\n } else if (a < ${t}(0.0) && f32(b) != floor(f32(b))) {\n return ${t}(pow(f32(a), f32(b))); // NaN\n }\n return select(sign(a), ${t}(1.0), round(f32(abs(b) % ${t}(2.0))) != 1.0) * ${t}(${"i32"===t?"round":""}(pow(f32(abs(a)), f32(b))));\n }\n fn pow_vector_custom(a : vec4<${t}>, b : vec4<${t}>) -> vec4<${t}> {\n // TODO: implement vectorized pow\n return vec4<${t}>(pow_custom(a.x, b.x), pow_custom(a.y, b.y), pow_custom(a.z, b.z), pow_custom(a.w, b.w));\n }\n `)},Yr=e=>{Lr(e,"Sub",((e,t)=>`${e}-${t}`))},Zr=e=>{Lr(e,"Greater",{scalar:(e,t)=>`u32(${e}>${t})`,vector:(e,t)=>`vec4(${e}>${t})`},void 0,void 0,9)},Qr=e=>{Lr(e,"Less",{scalar:(e,t)=>`u32(${e}<${t})`,vector:(e,t)=>`vec4(${e}<${t})`},void 0,void 0,9)},Xr=e=>{Lr(e,"GreaterOrEqual",{scalar:(e,t)=>`u32(${e}>=${t})`,vector:(e,t)=>`vec4(${e}>=${t})`},void 0,void 0,9)},Jr=e=>{Lr(e,"LessOrEqual",{scalar:(e,t)=>`u32(${e}<=${t})`,vector:(e,t)=>`vec4(${e}<=${t})`},void 0,void 0,9)}})),Us=U((()=>{Ts(),Is(),As(),ea=e=>{if(!e||e.length<1)throw new Error("too few inputs");let t=e[0].dataType,n=e[0].dims.length;for(let r of e){if(r.dataType!==t)throw new Error("input tensors should be one type");if(r.dims.length!==n)throw new Error("input tensors should have the same shape")}},ta=(e,t)=>`\n fn calculateInputIndex(index: u32) -> u32 {\n let sizeInConcatAxis = array(${t});\n for (var i: u32 = 0u; i < ${e}; i += 1u ) {\n if (index < sizeInConcatAxis[i]) {\n return i;\n }\n }\n return ${e}u;\n }`,na=(e,t)=>{let n=e.length,r=[];for(let a=0;a{let n=e[0].dims.slice();if(t>=n.length||t<-1*n.length)throw new Error("axis specified for concat doesn't match input dimensionality");let r=t<0?n.length+t:t,a=n.slice(0);for(let t=1;t`uniforms.sizeInConcatAxis${e}`)).join(",");return{name:"Concat",shaderCache:{hint:`${t}`,inputDependencies:d},getRunData:()=>({outputs:[{dims:a,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(i/64)},programUniforms:c}),getShaderSource:t=>`\n\n ${(()=>{t.registerUniform("outputSize","u32");for(let n=0;n(${m});\n ${h} -= sizeInConcatAxis[inputIndex - 1u];\n }\n\n ${na(s,f)}\n }`}},aa=(e,t)=>{ea(e.inputs),e.compute(ra(e.inputs,t.axis))},ia=e=>pt({axis:e.axis})})),Vs=U((()=>{Ts(),oa=(e,t)=>{switch(e.activation){case"Relu":return`value = max(value, ${t}(0.0));`;case"Sigmoid":return`value = (${t}(1.0) / (${t}(1.0) + exp(-value)));`;case"Clip":return`value = clamp(value, ${t}(uniforms.clip_min), ${t}(uniforms.clip_max));`;default:return""}},sa=e=>{let t=e?.activation||"";if("Clip"===t){let[n,r]=e?.activation_params||[yt,bt];return{activation:t,clipMax:r,clipMin:n}}return{activation:t}}})),Hs=U((()=>{ua=(e,t)=>{switch(e){case 1:return t;case 2:return`vec2<${t}>`;case 3:return`vec3<${t}>`;case 4:return`vec4<${t}>`;default:throw new Error(`${e}-component is not supported.`)}},la=e=>`\n ${e?"value = value + getBiasByOutputCoords(coords);":""}\n `})),Ls=U((()=>{da=e=>`\nfn getIndexFromCoords4D(coords : vec4, shape : vec4) -> i32 {\n return dot(coords, vec4(\n shape.y * shape.z * shape.w, shape.z * shape.w, shape.w, 1));\n}\nfn getOutputIndexFromCoords(coords : vec4) -> i32 {\n return dot(coords, vec4(\n i32(${e}.x), i32(${e}.y), i32(${e}.z), 1));\n}\n`})),Fs=U((()=>{Ts(),As(),Vs(),Hs(),pa=(e,t)=>e?`\n mm_Asub[inputRow][inputCol] = mm_readA(batch,\n kStart + inputRow,\n globalRowStart / innerElementSize + inputCol${t?", batchIndices":""});\n `:`\n mm_Asub[inputRow][inputCol] = mm_readA(batch,\n globalRow + innerRow,\n kStart / innerElementSize + inputCol${t?", batchIndices":""});\n `,ca=(e,t)=>e?`\n let ACached0 = mm_Asub[k * innerElementSize][localRow];\n let ACached1 = mm_Asub[k * innerElementSize + 1][localRow];\n let ACached2 = mm_Asub[k * innerElementSize + 2][localRow];\n ${3===t?"":"let ACached3 = mm_Asub[k * innerElementSize + 3][localRow];"}\n for (var i = 0; i < rowPerThread; i = i + 1) {\n acc[i] = BCached0 * ACached0[i] + acc[i];\n acc[i] = BCached1 * ACached1[i] + acc[i];\n acc[i] = BCached2 * ACached2[i] + acc[i];\n ${3===t?"":"acc[i] = BCached3 * ACached3[i] + acc[i];"}\n }`:`\n for (var i = 0; i < rowPerThread; i = i + 1) {\n let ACached = mm_Asub[tileRow + i][k];\n acc[i] = BCached0 * ACached.x + acc[i];\n acc[i] = BCached1 * ACached.y + acc[i];\n acc[i] = BCached2 * ACached.z + acc[i];\n ${3===t?"":"acc[i] = BCached3 * ACached.w + acc[i];"}\n }`,fa=(e,t,n="f32",r,a=!1,i=32,o=!1,s=32)=>{let u=t[1]*e[1],l=t[0]*e[0],d=a?u:i,p=a?i:u,c=d/t[0],f=i/t[1];if((!a||4!==c||4!==e[1])&&(a||3!==c&&4!==c)||d%t[0]!=0||i%t[1]!=0||4!==e[0])throw new Error(`If transposeA ${a} is true, innerElementSize ${c} and workPerThread[1] ${e[1]} must be 4.\n Otherwise, innerElementSize ${c} must be 3 or 4.\n tileAWidth ${d} must be divisible by workgroupSize[0]${t[0]}. tileInner ${i} must be divisible by workgroupSize[1] ${t[1]}. colPerThread ${e[0]} must be 4.`);return`\nvar mm_Asub: array, ${d/c}>, ${p}>;\nvar mm_Bsub: array, ${l/e[0]}>, ${i}>;\n\nconst rowPerThread = ${e[1]};\nconst colPerThread = ${e[0]};\nconst innerElementSize = ${c};\nconst tileInner = ${i};\n\n@compute @workgroup_size(${t[0]}, ${t[1]}, ${t[2]})\nfn main(@builtin(local_invocation_id) localId : vec3,\n @builtin(global_invocation_id) globalId : vec3,\n @builtin(workgroup_id) workgroupId : vec3) {\n let localRow = i32(localId.y);\n let tileRow = localRow * rowPerThread;\n let tileCol = i32(localId.x);\n\n let globalRow =i32(globalId.y) * rowPerThread;\n let globalCol = i32(globalId.x);\n let batch = ${o?"0":"i32(globalId.z)"};\n ${r?`let batchIndices = ${r.offsetToIndices("u32(batch)")};`:""}\n let globalRowStart = i32(workgroupId.y) * ${u};\n\n let num_tiles = ${o?`${Math.ceil(s/i)}`:"(uniforms.dim_inner - 1) / tileInner + 1"};\n var kStart = ${o?`i32(globalId.z) * ${s}`:"0"};\n\n var acc: array, rowPerThread>;\n\n // Loop over shared dimension.\n let tileRowB = localRow * ${f};\n for (var t = 0; t < num_tiles; t = t + 1) {\n // Load one tile of A into local memory.\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n let inputRow = tileRow + innerRow;\n let inputCol = tileCol;\n ${pa(a,r)}\n }\n\n // Load one tile of B into local memory.\n for (var innerRow = 0; innerRow < ${f}; innerRow = innerRow + 1) {\n let inputRow = tileRowB + innerRow;\n let inputCol = tileCol;\n mm_Bsub[inputRow][inputCol] = mm_readB(batch, kStart + inputRow, globalCol${r?", batchIndices":""});\n }\n kStart = kStart + tileInner;\n workgroupBarrier();\n\n // Compute acc values for a single thread.\n for (var k = 0; k < tileInner / innerElementSize; k = k + 1) {\n let BCached0 = mm_Bsub[k * innerElementSize][tileCol];\n let BCached1 = mm_Bsub[k * innerElementSize + 1][tileCol];\n let BCached2 = mm_Bsub[k * innerElementSize + 2][tileCol];\n ${3===c?"":"let BCached3 = mm_Bsub[k * innerElementSize + 3][tileCol];"}\n\n ${ca(a,c)}\n }\n\n workgroupBarrier();\n }\n\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n mm_write(batch, globalRow + innerRow, globalCol, acc[innerRow]);\n }\n}`},ha=(e,t)=>e?`\n mm_Asub[inputRow][inputCol] = mm_readA(batch,\n kStart + inputRow,\n globalRowStart + inputCol${t?", batchIndices":""});\n `:`\n mm_Asub[inputRow][inputCol] = mm_readA(batch,\n globalRowStart + inputRow,\n kStart + inputCol${t?", batchIndices":""});\n `,ma=e=>e?"let ACached = mm_Asub[k][tileRow + innerRow];":"let ACached = mm_Asub[tileRow + innerRow][k];",ga=(e,t,n="f32",r,a=!1,i=32,o=!1,s=32,u=!1)=>{let l=e[1]*t[1],d=e[0]*t[0],p=a?l:i,c=a?i:l;if(c%t[1]!=0||p%t[0]!=0||i%t[1]!=0)throw new Error(`tileAHight ${c} must be divisible by workgroupSize[1]${t[1]}, tileAWidth ${p} must be divisible by workgroupSize[0]${t[0]}, tileInner ${i} must be divisible by workgroupSize[1]${t[1]}`);let f=c/t[1],h=p/t[0],m=i/t[1],g=u?`\n let localRow = i32(localId.y);\n let localCol = i32(localId.x);\n let globalRowStart = i32(workgroupId.y) * ${l};\n let globalColStart = i32(workgroupId.x) * ${d};\n\n // Loop over shared dimension.\n for (var t = 0; t < num_tiles; t = t + 1) {\n // Load one tile of A into local memory.\n for (var inputRow = localRow; inputRow < ${c}; inputRow = inputRow + ${t[1]}) {\n for (var inputCol = localCol; inputCol < ${p}; inputCol = inputCol + ${t[0]}) {\n ${ha(a,r)}\n }\n }\n // Load one tile of B into local memory.\n for (var inputRow = localRow; inputRow < ${i}; inputRow = inputRow + ${t[1]}) {\n for (var inputCol = localCol; inputCol < ${d}; inputCol = inputCol + ${t[0]}) {\n mm_Bsub[inputRow][inputCol] = mm_readB(batch,\n kStart + inputRow,\n globalColStart + inputCol${r?", batchIndices":""});\n }\n }\n kStart = kStart + tileInner;\n workgroupBarrier();\n\n // Compute acc values for a single thread.\n var BCached : array<${n}, colPerThread>;\n for (var k = 0; k < tileInner; k = k + 1) {\n for (var inner = 0; inner < colPerThread; inner = inner + 1) {\n BCached[inner] = mm_Bsub[k][localCol + inner * ${t[0]}];\n }\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n let ACached = ${a?`mm_Asub[k][localRow + innerRow * ${t[1]}];`:`mm_Asub[localRow + innerRow * ${t[1]}][k];`}\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n acc[innerRow][innerCol] = acc[innerRow][innerCol] +\n ACached * BCached[innerCol];\n }\n }\n }\n workgroupBarrier();\n }\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n let gRow = globalRowStart + localRow + innerRow * ${t[1]};\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n let gCol = globalColStart + localCol + innerCol * ${t[0]};\n mm_write(batch, gRow, gCol, acc[innerRow][innerCol]);\n }\n }\n `:`\nlet tileRow = i32(localId.y) * rowPerThread;\nlet tileCol = i32(localId.x) * colPerThread;\n\nlet globalRow = i32(globalId.y) * rowPerThread;\nlet globalCol = i32(globalId.x) * colPerThread;\nlet globalRowStart = i32(workgroupId.y) * ${l};\n\nlet tileRowA = i32(localId.y) * ${f};\nlet tileColA = i32(localId.x) * ${h};\nlet tileRowB = i32(localId.y) * ${m};\n// Loop over shared dimension.\nfor (var t = 0; t < num_tiles; t = t + 1) {\n // Load one tile of A into local memory.\n for (var innerRow = 0; innerRow < ${f}; innerRow = innerRow + 1) {\n for (var innerCol = 0; innerCol < ${h}; innerCol = innerCol + 1) {\n let inputRow = tileRowA + innerRow;\n let inputCol = tileColA + innerCol;\n ${ha(a,r)}\n }\n }\n\n // Load one tile of B into local memory.\n for (var innerRow = 0; innerRow < ${m}; innerRow = innerRow + 1) {\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n let inputRow = tileRowB + innerRow;\n let inputCol = tileCol + innerCol;\n mm_Bsub[inputRow][inputCol] = mm_readB(batch,\n kStart + inputRow,\n globalCol + innerCol${r?", batchIndices":""});\n }\n }\n kStart = kStart + tileInner;\n workgroupBarrier();\n\n // Compute acc values for a single thread.\n var BCached : array<${n}, colPerThread>;\n for (var k = 0; k < tileInner; k = k + 1) {\n for (var inner = 0; inner < colPerThread; inner = inner + 1) {\n BCached[inner] = mm_Bsub[k][tileCol + inner];\n }\n\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n ${ma(a)}\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n acc[innerRow][innerCol] = acc[innerRow][innerCol] + ACached * BCached[innerCol];\n }\n }\n }\n\n workgroupBarrier();\n}\n\nfor (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n mm_write(batch, globalRow + innerRow, globalCol + innerCol,\n acc[innerRow][innerCol]);\n }\n}\n`;return`\n var mm_Asub : array, ${c}>;\n var mm_Bsub : array, ${i}>;\n const rowPerThread = ${e[1]};\n const colPerThread = ${e[0]};\n const tileInner = ${i};\n\n@compute @workgroup_size(${t[0]}, ${t[1]}, ${t[2]})\nfn main(@builtin(local_invocation_id) localId : vec3,\n @builtin(global_invocation_id) globalId : vec3,\n @builtin(workgroup_id) workgroupId : vec3) {\n let batch = ${o?"0":"i32(globalId.z)"};\n ${r?`let batchIndices = ${r.offsetToIndices("u32(batch)")};`:""}\n let num_tiles = ${o?`${Math.ceil(s/i)}`:"(uniforms.dim_inner - 1) / tileInner + 1"};\n var kStart = ${o?`i32(globalId.z) * ${s}`:"0"};\n\n var acc : array, rowPerThread>;\n\n // Without this initialization strange values show up in acc.\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n acc[innerRow][innerCol] = 0.0;\n }\n }\n ${g}\n }\n`},ya=(e,t,n,r,a,i=!1)=>{let[o,s,u]=a,[l,d,p,c]=r,f=Bt(o,u),h=Bt(s,u),m=vt(r[0].type.tensor);return`\n fn mm_readA(batch: i32, row: i32, colIn: i32, batchIndices: ${l.type.indices}) -> ${ua(e,m)} {\n var value = ${ua(e,m)}(0.0);\n let col = colIn * ${e};\n if(row < uniforms.dim_a_outer && col < uniforms.dim_inner)\n {\n ${(()=>{let e=d.rank,t=l.rank,n=`var aIndices: ${d.type.indices};`;for(let r=e-2-1,a=t-1;r>=0;r--,a--)n+=`\naIndices[${r}] = ${t>1?`batchIndices[${a}]`:"batchIndices"};`;return f.forEach((e=>{n+=`\naIndices[${e}] = 0;`})),n+=`\naIndices[${e-2}] = u32(row);\n aIndices[${e-1}] = u32(colIn);`,n})()}\n value = ${d.getByIndices("aIndices")};\n }\n return value;\n }\n\n fn mm_readB(batch: i32, row: i32, colIn: i32, batchIndices: ${l.type.indices}) -> ${ua(e,m)} {\n var value = ${ua(e,m)}(0.0);\n let col = colIn * ${e};\n if(row < uniforms.dim_inner && col < uniforms.dim_b_outer)\n {\n ${(()=>{let e=p.rank,t=l.rank,n=`var bIndices: ${p.type.indices};`;for(let r=e-2-1,a=t-1;r>=0;r--,a--)n+=`\nbIndices[${r}] = ${t>1?`batchIndices[${a}]`:"batchIndices"};`;return h.forEach((e=>{n+=`\nbIndices[${e}] = 0;`})),n+=`\nbIndices[${e-2}] = u32(row);\n bIndices[${e-1}] = u32(colIn);`,n})()}\n value = ${p.getByIndices("bIndices")};\n }\n return value;\n }\n\n fn mm_write(batch: i32, row: i32, colIn: i32, valueIn: ${ua(e,m)}) {\n let col = colIn * ${e};\n if (row < uniforms.dim_a_outer && col < uniforms.dim_b_outer) {\n var value = valueIn;\n let coords = vec3(batch, row, colIn);\n ${t?`value = value + ${i?"bias[colIn]":`${ua(e,m)}(bias[row])`};`:""}\n ${n}\n ${c.setByIndices("vec3(coords)","value")}\n }\n }\n `},ba=(e,t,n,r,a=!1)=>{let i=e[0].dims,o=e[1].dims,s=i.slice(0,-2),u=o.slice(0,-2),l=r?r.slice(0,-2):n.slice(0,-2),d=ht.size(l),p=i[i.length-2],c=i[i.length-1],f=o[o.length-1],h=c%4==0&&f%4==0,m=p<=8?[4,1,1]:[4,4,1],g=[8,8,1],y=[Math.ceil(f/g[0]/m[0]),Math.ceil(p/g[1]/m[1]),Math.ceil(d/g[2]/m[2])],b=h?4:1,w=[...s,p,c/b],v=w.length,$=[...u,c,f/b],_=$.length,x=[d,p,f/b],S=[{type:"int32",data:p},{type:"int32",data:f},{type:"int32",data:c}];"Clip"===t.activation&&S.push({type:"float32",data:t.clipMax},{type:"float32",data:t.clipMin}),S.push(..._t(l),..._t(w),..._t($));let C=["rank","rank"],E=e.length>2;return E&&(S.push(..._t(e[2].dims)),C.push("rank")),S.push(..._t(x)),{name:"MatMul",shaderCache:{hint:`${m};${t.activation};${h};${a}`,inputDependencies:C},getRunData:()=>({outputs:[{dims:n,dataType:e[0].dataType}],dispatchGroup:{x:y[0],y:y[1],z:y[2]},programUniforms:S}),getShaderSource:n=>{let r=l.length,i=Ot("batchDims",e[0].dataType,r,1),o=vt(e[0].dataType),d=At("a",e[0].dataType,v,b),p=At("b",e[1].dataType,_,b),c=kt("result",e[0].dataType,x.length,b),f=[d,p];if(E){let t=a?b:1;f.push(At("bias",e[2].dataType,e[2].dims.length,t))}let y=[{name:"dim_a_outer",type:"i32"},{name:"dim_b_outer",type:"i32"},{name:"dim_inner",type:"i32"}];"Clip"===t.activation&&y.push({name:"clip_max",type:"f32"},{name:"clip_min",type:"f32"});let w=oa(t,c.type.value),$=ya(b,E,w,[i,d,p,c],[s,u,l],a);return`\n ${n.registerUniforms(y).registerInternalVariables(i).declareVariables(...f,c)}\n ${$}\n ${h?fa(m,g,o,i):ga(m,g,o,i)}\n `}}}})),Gs=U((()=>{xs(),As(),Vs(),Hs(),Ls(),Fs(),wa=(e,t,n,r,a=!1,i,o=4,s=4,u=4,l="f32")=>{let d=e?"\n let coord = vec4(batch, xRow, xCol, xCh);\n ":"\n let coord = vec4(batch, xCh, xRow, xCol);\n ",p=e?"\n let coords = vec4(\n batch,\n row / outWidth,\n row % outWidth,\n col);\n ":"\n let coords = vec4(\n batch,\n row,\n col / outWidth,\n col % outWidth);\n ",c=e?"i32(uniforms.x_shape[1])":"i32(uniforms.x_shape[2])",f=e?"i32(uniforms.x_shape[2])":"i32(uniforms.x_shape[3])",h=e?"row":"col",m=e?"col":"row",g=`\n let inChannels = i32(uniforms.w_shape[2]);\n let outWidth = ${e?"i32(uniforms.result_shape[2])":"i32(uniforms.result_shape[3])"};\n let outRow = ${h} / outWidth;\n let outCol = ${h} % outWidth;\n\n let WRow = ${m} / (i32(uniforms.w_shape[1]) * inChannels);\n let WCol = ${m} / inChannels % i32(uniforms.w_shape[1]);\n let xRow = outRow * uniforms.stride[0] + uniforms.dilation[0] * WRow - uniforms.pad[0];\n let xCol = outCol * uniforms.stride[1] + uniforms.dilation[1] * WCol - uniforms.pad[1];\n let xCh = ${m} % inChannels;\n var resData = ${ua(o,l)}(0.0);\n // The bounds checking is always needed since we use it to pad zero for\n // the 'same' padding type.\n if (xRow >= 0 && xRow < ${c} && xCol >= 0 && xCol < ${f}) {\n ${d}\n let xIndex = getIndexFromCoords4D(coord, vec4(uniforms.x_shape));\n ${(e=>{switch(e){case 1:return"resData = x[xIndex];";case 3:return`resData = vec3<${l}>(x[xIndex], x[xIndex + 1], x[xIndex + 2]);`;case 4:return"resData = x[xIndex / 4];";default:throw new Error(`innerElementSize ${e} is not supported.`)}})(o)}\n }\n return resData;`,y=e?t&&r?`\n let col = colIn * ${o};\n ${g}`:`\n let col = colIn * ${o};\n if (row < uniforms.dim_a_outer && col < uniforms.dim_inner) {\n ${g}\n }\n return ${ua(o,l)}(0.0);`:r&&n?`\n let col = colIn * ${o};\n ${g}`:`\n let col = colIn * ${o};\n if (row < uniforms.dim_inner && col < uniforms.dim_b_outer) {\n ${g}\n }\n return ${ua(o,l)}(0.0);`,b=`${(e=>{switch(e){case 1:return"return w[row * i32(uniforms.w_shape[3]) + colIn];";case 4:return"return w[row * i32(uniforms.w_shape[3]) / 4 + colIn];";default:throw new Error(`innerElementSize ${e} is not supported.`)}})(s)}`,w=ua(u,l),v=ua(e?o:s,l),$=ua(e?s:o,l),_=oa(i,w);return`\n fn mm_readA(batch: i32, row : i32, colIn : i32) -> ${v} {\n ${e?y:b}\n }\n\n fn mm_readB(batch: i32, row : i32, colIn : i32) -> ${$} {\n ${e?b:y}\n }\n\n fn mm_write(batch: i32, row : i32, colIn : i32, valueIn : ${w}) {\n let col = colIn * ${u};\n if (row < uniforms.dim_a_outer && col < uniforms.dim_b_outer)\n {\n var value = valueIn;\n let outWidth = ${e?"i32(uniforms.result_shape[2])":"i32(uniforms.result_shape[3])"};\n ${p}\n ${la(a)}\n ${_}\n setOutputAtCoords(coords[0], coords[1], coords[2], coords[3], value);\n }\n }`},va=(e,t,n,r,a,i,o,s)=>{let u="NHWC"===t.format,l=u?e[0].dims[3]:e[0].dims[1],d=n[0],p=u?n[2]:n[3],c=u?n[1]:n[2],f=u?n[3]:n[1],h=u&&(l%4==0||l%3==0)&&f%4==0,m=u?f:p*c,g=u?p*c:f,y=[8,8,1],b=r<=8?[4,1,1]:[4,4,1],w=[Math.ceil(m/y[0]/b[0]),Math.ceil(g/y[1]/b[1]),Math.ceil(d/y[2]/b[2])];nt("verbose",(()=>`[conv2d_mm_webgpu] dispatch = ${w}`));let v=h?u&&l%4!=0?3:4:1,$=y[1]*b[1],_=y[0]*b[0],x=Math.max(y[0]*v,y[1]),S=r%$==0,C=a%_==0,E=i%x==0,I=h?[v,4,4]:[1,1,1],T=[{type:"int32",data:r},{type:"int32",data:a},{type:"int32",data:i},{type:"int32",data:[t.pads[0],t.pads[1]]},{type:"int32",data:t.strides},{type:"int32",data:t.dilations}];"Clip"===t.activation&&T.push({type:"float32",data:t.clipMax},{type:"float32",data:t.clipMin}),T.push(..._t(e[0].dims),..._t(e[1].dims));let A=["rank","rank"];return o&&(T.push(..._t(e[2].dims)),A.push("rank")),T.push(..._t(n)),{name:"Conv2DMatMul",shaderCache:{hint:`${t.cacheKey};${v};${h};${S};${C};${E};${$};${_};${x}`,inputDependencies:A},getRunData:()=>({outputs:[{dims:n,dataType:e[0].dataType}],dispatchGroup:{x:w[0],y:w[1],z:w[2]},programUniforms:T}),getShaderSource:r=>{let a=[{name:"dim_a_outer",type:"i32"},{name:"dim_b_outer",type:"i32"},{name:"dim_inner",type:"i32"},{name:"pad",type:"i32",length:2},{name:"stride",type:"i32",length:2},{name:"dilation",type:"i32",length:2}];"Clip"===t.activation&&a.push({name:"clip_max",type:"f32"},{name:"clip_min",type:"f32"});let i=h?4:1,l=vt(e[0].dataType),d=`\n fn setOutputAtIndex(flatIndex : i32, value : ${h?`vec4<${l}>`:l}) {\n result[flatIndex] = ${h?`vec4<${l}>`:l}(value);\n }\n fn setOutputAtCoords(d0 : i32, d1 : i32, d2 : i32, d3 : i32, value : ${h?`vec4<${l}>`:l}) {\n let flatIndex = getOutputIndexFromCoords(vec4(d0, d1, d2, d3));\n setOutputAtIndex(flatIndex ${h?"/ 4":""}, value);\n }`,p=[At("x",e[0].dataType,e[0].dims.length,3===v?1:v),At("w",e[1].dataType,e[1].dims.length,i)],c=kt("result",e[0].dataType,n.length,i);if(o){let t=At("bias",e[2].dataType,e[2].dims.length,i);p.push(t),d+=`\n fn getBiasByOutputCoords(coords : vec4) -> ${h?`vec4<${l}>`:l} {\n return bias[coords.${u?"w":"y"}${h?"/ 4":""}];\n }`}return`\n ${da("uniforms.result_strides")}\n //struct Uniforms { xShape : vec4, wShape : vec4, outShape : vec4,\n // outShapeStrides: vec3, filterDims : vec2, pad : vec2, stride : vec2,\n // dilation : vec2, dimAOuter : i32, dimBOuter : i32, dimInner : i32 };\n ${r.registerUniforms(a).declareVariables(...p,c)}\n ${d}\n ${wa(u,S,C,E,o,t,I[0],I[1],I[2],l)}\n ${h?fa(b,y,l,void 0,!u,x):ga(b,y,l,void 0,!u,x,!1,void 0,s)}`}}}})),js=U((()=>{Ts(),As(),Ks(),Vs(),$a=(e,t,n)=>{let r=e.length>2,a=r?"value += b[output_channel];":"",i=e[0].dims,o=e[1].dims,s=o[0]/t.group,u="NHWC"===t.format,l=Ca(i,o,t.dilations,t.pads,t.strides,u),d=ht.size(l),p=[{type:"uint32",data:d},{type:"uint32",data:t.dilations},{type:"uint32",data:[t.strides[0],t.strides[1]]},{type:"uint32",data:[t.pads[0],t.pads[1]]},{type:"uint32",data:s}];"Clip"===t.activation&&p.push({type:"float32",data:t.clipMax},{type:"float32",data:t.clipMin}),p.push(..._t(i),..._t(o),..._t(l));let c=["rank","rank"];return r&&(p.push(..._t(e[2].dims)),c.push("rank")),p.push(..._t(l)),{name:"GroupedConv",shaderCache:{hint:t.cacheKey,inputDependencies:c},getRunData:()=>({outputs:[{dims:n?n(l):l,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(d/64)},programUniforms:p}),getShaderSource:n=>{let s=kt("output",e[0].dataType,l.length),d=oa(t,s.type.value),p=At("x",e[0].dataType,i.length),c=At("w",e[1].dataType,o.length),f=[p,c];r&&f.push(At("b",e[2].dataType,e[2].dims));let h=[{name:"output_size",type:"u32"},{name:"dilations",type:"u32",length:t.dilations.length},{name:"strides",type:"u32",length:2},{name:"pads",type:"u32",length:2},{name:"output_channels_per_group",type:"u32"}];return"Clip"===t.activation&&h.push({name:"clip_max",type:"f32"},{name:"clip_min",type:"f32"}),`\n ${n.registerUniforms(h).declareVariables(...f,s)}\n\n ${n.mainStart()}\n ${n.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}\n\n let outputIndices = ${s.offsetToIndices("global_idx")};\n let batch: u32 = outputIndices[0];\n let output_channel: u32 = outputIndices[${u?3:1}];\n let xRCCorner: vec2 = vec2(outputIndices[${u?1:2}], outputIndices[${u?2:3}]) * uniforms.strides - uniforms.pads;\n let group_id: u32 = output_channel / uniforms.output_channels_per_group;\n\n var value: ${s.type.value} = ${s.type.value}(0);\n for (var wInChannel: u32 = 0u; wInChannel < uniforms.w_shape[1]; wInChannel++) {\n let input_channel = group_id * uniforms.w_shape[1] + wInChannel;\n for (var wHeight: u32 = 0u; wHeight < uniforms.w_shape[2]; wHeight++) {\n let xHeight = xRCCorner.x + wHeight * uniforms.dilations[0];\n\n if (xHeight < 0u || xHeight >= uniforms.x_shape[${u?1:2}]) {\n continue;\n }\n\n for (var wWidth: u32 = 0u; wWidth < uniforms.w_shape[3]; wWidth++) {\n let xWidth = xRCCorner.y + wWidth * uniforms.dilations[1];\n if (xWidth < 0u || xWidth >= uniforms.x_shape[${u?2:3}]) {\n continue;\n }\n\n let xVal = ${u?p.get("batch","xHeight","xWidth","input_channel"):p.get("batch","input_channel","xHeight","xWidth")};\n let wVal = ${c.get("output_channel","wInChannel","wHeight","wWidth")};\n value += xVal*wVal;\n }\n }\n }\n ${a}\n ${d}\n ${s.setByOffset("global_idx","value")}\n }`}}}})),qs=U((()=>{Ts(),Fs(),As(),Vs(),_a=(e,t,n,r,a=!1)=>{let i=e[0].dims,o=e[1].dims,s=i[i.length-2],u=o[o.length-1],l=i[i.length-1],d=xt(u),p=xt(l),c=xt(s),f=ht.size(n)/d/c,h=e.length>2,m=r?r.slice(0,-2):n.slice(0,-2),g=[ht.size(m),s,u],y=[{type:"uint32",data:f},{type:"uint32",data:s},{type:"uint32",data:u},{type:"uint32",data:l}];return"Clip"===t.activation&&y.push({type:"float32",data:t.clipMax},{type:"float32",data:t.clipMin}),y.push(..._t(m),..._t(i),..._t(o)),h&&y.push(..._t(e[2].dims)),y.push(..._t(g)),{name:"MatMulNaive",shaderCache:{hint:`${t.activation};${d};${p};${c};${a}`,inputDependencies:h?["rank","rank","rank"]:["rank","rank"]},getRunData:()=>({outputs:[{dims:n,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(f/64)},programUniforms:y}),getShaderSource:r=>{let s=Ot("batch_dims",e[0].dataType,m.length),u=At("a",e[0].dataType,i.length,p),l=At("b",e[1].dataType,o.length,d),f=kt("output",e[0].dataType,g.length,d),y=oa(t,f.type.value),b=[u,l],w="";if(h){let t=a?d:1;b.push(At("bias",e[2].dataType,e[2].dims.length,t)),w=a?`value += bias[col / ${t}];`:`value += ${f.type.value}(bias[row + i]);`}let v=i.slice(0,-2),$=o.slice(0,-2),_=Bt(v,m),x=Bt($,m),S=[{name:"output_size",type:"u32"},{name:"M",type:"u32"},{name:"N",type:"u32"},{name:"K",type:"u32"}];"Clip"===t.activation&&S.push({name:"clip_max",type:"f32"},{name:"clip_min",type:"f32"});let C=(e,t)=>{let n=e.rank,r=e.name;if(2===n)return`var ${r}_indices = ${e.type.indices}(0u, 0u);`;let a=s.rank,i=`var ${r}_indices: ${e.type.indices};`;for(let e=n-2-1,t=a-1;e>=0;e--,t--)i+=`\n${r}_indices[${e}] = ${a>1?`batch_indices[${t}]`:"batch_indices"};`;return t.forEach((e=>{i+=`\n${r}_indices[${e}] = 0;`})),i+=`${r}_indices[${n-2}] = 0u;\n ${r}_indices[${n-1}] = 0u;`,i};return`\n ${r.registerUniforms(S).registerInternalVariables(s).declareVariables(...b,f)}\n ${r.mainStart()}\n ${r.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}\n let col = (global_idx % (uniforms.N / ${d})) * ${d};\n var index1 = global_idx / (uniforms.N / ${d});\n let stride1 = uniforms.M / ${c};\n let row = (index1 % stride1) * ${c};\n let batch = index1 / stride1;\n\n ${2===n.length?"":`let batch_indices = ${s.offsetToIndices("batch")};`}\n ${C(u,_)}\n let a_offset = ${u.indicesToOffset("a_indices")};\n ${C(l,x)}\n let b_offset = ${l.indicesToOffset("b_indices")};\n var values: array<${f.type.value}, ${c}>;\n for (var k: u32 = 0u; k < uniforms.K; k = k + ${p}) {\n ${(()=>{let e=`var a_data: ${u.type.value};`;for(let t=0;t{if(!e||2!==e.length)throw new Error("MatMul requires 2 inputs.");if(e[0].dims[e[0].dims.length-1]!==e[1].dims[e[1].dims.length-2])throw new Error("shared dimension does not match.")},Sa=e=>{xa(e.inputs);let t=ft.calcShape(e.inputs[0].dims,e.inputs[1].dims,!0);if(!t)throw new Error("Can't use matmul on the given tensors");let n=t[t.length-1],r=e.inputs[0].dims[e.inputs[0].dims.length-1];n<8&&r<8?e.compute(_a(e.inputs,{activation:""},t)):e.compute(ba(e.inputs,{activation:""},t))}})),Ks=U((()=>{Ts(),Gs(),Fs(),js(),Vs(),qs(),ks(),Ca=(e,t,n,r,a,i)=>{let o=e[0],s=e.slice(i?1:2,i?3:4),u=s.length,l=t[0],d=t.slice(2).map(((e,t)=>e+(e-1)*(n[t]-1))),p=s.map(((e,t)=>e+r[t]+r[t+u])).map(((e,t)=>Math.floor((e-d[t]+a[t])/a[t])));return p.splice(0,0,o),p.splice(i?3:1,0,l),p},Ea=[2,3,1,0],Ia=(e,t)=>{if(!e||2!==e.length&&3!==e.length)throw new Error("Conv requires 2 or 3 inputs");if(4!==e[0].dims.length&&3!==e[0].dims.length)throw new Error("currently only support conv 1D and 2D");if(e[0].dims.length!==e[1].dims.length)throw new Error("filter does not have same dimension as input");if(e[0].dims["NHWC"===t.format?e[0].dims.length-1:1]!==e[1].dims[1]*t.group)throw new Error("FILTER_IN_CHANNEL should be equal to DATA_CHANNEL");if(3===e.length&&(1!==e[2].dims.length||e[1].dims[0]!==e[2].dims[0]))throw new Error("invalid bias");let n=e[0].dims.length-2;if(t.dilations.length!==n)throw new Error(`dilations should be ${n}D`);if(t.strides.length!==n)throw new Error(`strides should be ${n}D`);if(t.pads.length!==2*n)throw new Error(`pads should be ${2*n}D`);if(0!==t.kernelShape.length&&t.kernelShape.length!==e[1].dims.length-2)throw new Error("invalid kernel shape")},Ta=(e,t)=>{let n=e.kernelShape.slice();for(let e=2;e{let t=sa(e),n=e.format;return{autoPad:["NOTSET","VALID","SAME_UPPER","SAME_LOWER"][e.auto_pad],format:n,dilations:e.dilations,group:e.group,kernelShape:e.kernel_shape,pads:e.pads,strides:e.strides,wIsConst:e.w_is_const(),...t,cacheKey:`${e.format};${t.activation};`}},ka=(e,t,n)=>{let r=Ta(n,t),a="NHWC"===n.format;if(1!==n.group)return void e.compute($a(t,r));let i=3===t.length,o=t[0].dims[a?1:2],s=t[0].dims[a?2:3],u=t[0].dims[a?3:1],l=t[1].dims[2],d=t[1].dims[3],p=Ca(t[0].dims,t[1].dims,n.dilations,r.pads,n.strides,a),c=p[a?1:2],f=p[a?2:3],h=p[a?3:1],m=a&&l===o&&d===s&&0===n.pads[0]&&0===n.pads[1];if(m||1===l&&1===d&&1===n.dilations[0]&&1===n.dilations[1]&&1===n.strides[0]&&1===n.strides[1]&&0===n.pads[0]&&0===n.pads[1]){let l,d,g,y=p[0],b=[];if(a){let r=e.kernelCustomData.wT??e.compute(Wt(t[1],Ea),{inputs:[1],outputs:[n.wIsConst?-2:-1]})[0];if(n.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=r),m){let e=o*s*u;l=t[0].reshape([1,y,e]),d=r.reshape([1,e,h]),g=[1,y,h]}else l=t[0].reshape([y,o*s,u]),d=r.reshape([1,u,h]),g=[y,c*f,h];b.push(l),b.push(d)}else l=t[0].reshape([y,u,o*s]),d=t[1].reshape([1,h,u]),g=[y,h,c*f],b.push(d),b.push(l);i&&b.push(t[2]);let w=g[2],v=b[0].dims[b[0].dims.length-1];return void(w<8&&v<8?e.compute(_a(b,r,p,g,a),{inputs:b}):e.compute(ba(b,r,p,g,a),{inputs:b}))}let g=e.kernelCustomData.wT??e.compute(Wt(t[1],Ea),{inputs:[1],outputs:[n.wIsConst?-2:-1]})[0];n.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=g);let y=[t[0],g];i&&y.push(t[2]);let b=a?c*f:h,w=a?h:c*f,v=l*d*u;e.compute(va(y,r,p,b,w,v,i,!0),{inputs:y})},Oa=(e,t)=>{let n="NHWC"===t.format,r=[e.inputs[0].reshape(n?[e.inputs[0].dims[0],1,e.inputs[0].dims[1],e.inputs[0].dims[2]]:[e.inputs[0].dims[0],e.inputs[0].dims[1],1,e.inputs[0].dims[2]]),e.inputs[1].reshape([e.inputs[1].dims[0],e.inputs[1].dims[1],1,e.inputs[1].dims[2]])];3===e.inputs.length&&r.push(e.inputs[2]);let a=[0,t.pads[0],0,t.pads[1]],i=[1].concat(t.strides),o=[1].concat(t.dilations),s=[1].concat(t.kernelShape),u=Ta({...t,pads:a,strides:i,dilations:o,kernelShape:s},r);e.compute($a(r,u,(e=>n?[e[0],e[2],e[3]]:[])))},Ra=(e,t)=>{Ia(e.inputs,t),3===e.inputs[0].dims.length?Oa(e,t):ka(e,e.inputs,t)}})),Ys=U((()=>{xs(),As(),Vs(),Hs(),Ls(),Fs(),za=(e,t=!1,n,r=4)=>{let a=ua(r,"f32"),i=e?"\n let coords = vec4(\n batch,\n row / outWidth,\n row % outWidth,\n col);\n ":"\n let coords = vec4(\n batch,\n row,\n col / outWidth,\n col % outWidth);\n ",o=e?"row":"col",s=e?"col":"row",u=`\n let inChannels = ${e?"i32(uniforms.x_shape[3])":"i32(uniforms.x_shape[1])"};\n let outWidth = ${e?"i32(uniforms.result_shape[2])":"i32(uniforms.result_shape[3])"};\n let outRow = ${o} / outWidth;\n let outCol = ${o} % outWidth;\n\n let WRow = ${s} / (uniforms.filter_dims[1] * inChannels);\n let WCol = ${s} / inChannels % uniforms.filter_dims[1];\n let xR = f32(outRow - uniforms.pads[0] + uniforms.dilations[0] * WRow) / f32(uniforms.strides[0]);\n let xC = f32(outCol - uniforms.pads[1] + uniforms.dilations[1] * WCol) / f32(uniforms.strides[1]);\n if (xR < 0.0 || xR >= f32(${e?"i32(uniforms.x_shape[1])":"i32(uniforms.x_shape[2])"}) || fract(xR) > 0.0) {\n return ${a}(0.0);\n }\n if (xC < 0.0 || xC >= f32(${e?"i32(uniforms.x_shape[2])":"i32(uniforms.x_shape[3])"}) || fract(xC) > 0.0) {\n return ${a}(0.0);\n }\n let iXR = i32(xR);\n let iXC = i32(xC);\n let xCh = ${s} % inChannels;\n ${e?"\n let coord = vec4(batch, iXR, iXC, xCh);\n ":"\n let coord = vec4(batch, xCh, iXR, iXC);\n "}\n return x[getIndexFromCoords4D(coord, vec4(uniforms.x_shape))/${r}];`,l=e?`\n let col = colIn * ${r};\n if (row < uniforms.dim_a_outer && col < uniforms.dim_inner) {\n ${u}\n }\n return ${a}(0.0);`:`\n let col = colIn * ${r};\n if (row < uniforms.dim_inner && col < uniforms.dim_b_outer) {\n ${u}\n }\n return ${a}(0.0);`,d=`\n let col = colIn * ${r};\n let inChannels = ${e?"i32(uniforms.x_shape[3])":"i32(uniforms.x_shape[1])"};\n let coordX = uniforms.filter_dims[0] - 1 - row / (uniforms.filter_dims[1] * inChannels);\n let coordY = uniforms.filter_dims[1] - 1 - (row / inChannels) % uniforms.filter_dims[1];\n if (${e?"row < uniforms.dim_inner && col < uniforms.dim_b_outer":"row < uniforms.dim_inner && col < uniforms.dim_a_outer"} && coordX >= 0 && coordY >= 0) {\n let rowInner = row % inChannels;\n let coord = vec4(coordX, coordY, col, rowInner);\n ${(e=>{switch(e){case 1:return"return w[getIndexFromCoords4D(coord, vec4(uniforms.w_shape))];";case 4:return"\n let coord1 = vec4(coordX, coordY, col + 1, rowInner);\n let coord2 = vec4(coordX, coordY, col + 2, rowInner);\n let coord3 = vec4(coordX, coordY, col + 3, rowInner);\n let v0 = w[getIndexFromCoords4D(coord, vec4(uniforms.w_shape))];\n let v1 = w[getIndexFromCoords4D(coord1, vec4(uniforms.w_shape))];\n let v2 = w[getIndexFromCoords4D(coord2, vec4(uniforms.w_shape))];\n let v3 = w[getIndexFromCoords4D(coord3, vec4(uniforms.w_shape))];\n return vec4(v0, v1, v2, v3);\n ";default:throw new Error(`innerElementSize ${e} is not supported.`)}})(r)}\n }\n return ${a}(0.0);\n `,p=oa(n,a);return`\n fn mm_readA(batch: i32, row : i32, colIn : i32) -> ${a} {\n ${e?l:d}\n }\n\n fn mm_readB(batch: i32, row : i32, colIn : i32) -> ${a} {\n ${e?d:l}\n }\n\n fn mm_write(batch: i32, row : i32, colIn : i32, valueInput : ${a}) {\n let col = colIn * ${r};\n if (row < uniforms.dim_a_outer && col < uniforms.dim_b_outer) {\n var value = valueInput;\n let outWidth = ${e?"i32(uniforms.result_shape[2])":"i32(uniforms.result_shape[3])"};\n ${i}\n ${la(t)}\n ${p}\n result[getIndexFromCoords4D(coords, vec4(uniforms.result_shape))/${r}] = value;\n }\n }`},Ba=(e,t,n,r,a,i,o,s)=>{let u="NHWC"===t.format,l=u?e[0].dims[3]:e[0].dims[1],d=n[0],p=u?n[2]:n[3],c=u?n[1]:n[2],f=u?n[3]:n[1],h=u?l%4==0&&f%4==0:p%4==0&&f%4==0,m=u?f:p*c,g=u?p*c:f,y=h?[8,8,1]:[m<=4||g<=4?4:16,m>4&&g<=4?4:16,1],b=h?[4,4,1]:[m<=4?1:4,m>4&&g<=4?1:4,1],w=[Math.ceil(m/y[0]/b[0]),Math.ceil(g/y[1]/b[1]),Math.ceil(d/y[2]/b[2])];nt("verbose",(()=>`[conv_backprop_mm_webgpu] dispatch = ${w}`));let v=h?4:1,$=Math.max(y[0]*v,y[1]),_=h?4:1,x=[t.kernelShape[u?1:2],t.kernelShape[u?2:3]],S=[x[0]+(t.dilations[0]<=1?0:(x[0]-1)*(t.dilations[0]-1)),x[1]+(t.dilations[1]<=1?0:(x[1]-1)*(t.dilations[1]-1))],C=[S[0]-1-Math.floor((t.pads[0]+t.pads[2])/2),S[1]-1-Math.floor((t.pads[1]+t.pads[3])/2)],E=[{type:"int32",data:r},{type:"int32",data:a},{type:"int32",data:i},{type:"int32",data:t.strides},{type:"int32",data:t.dilations},{type:"int32",data:x},{type:"int32",data:C}];"Clip"===t.activation&&E.push({type:"float32",data:t.clipMax},{type:"float32",data:t.clipMin}),E.push(..._t(e[0].dims),..._t(e[1].dims));let I=["rank","rank"];return o&&(E.push(..._t(e[2].dims)),I.push("rank")),E.push(..._t(n)),{name:"Conv2DTransposeMatMul",shaderCache:{hint:`${t.cacheKey};${b};${y};${h}`,inputDependencies:I},getRunData:()=>({outputs:[{dims:n,dataType:e[0].dataType}],dispatchGroup:{x:w[0],y:w[1],z:w[2]},programUniforms:E}),getShaderSource:r=>{let a=At("x",e[0].dataType,e[0].dims.length,_),i=At("w",e[1].dataType,e[1].dims.length,1),l=kt("result",e[0].dataType,n.length,_),d=[a,i],p="";if(o){let t=At("bias",e[2].dataType,e[2].dims.length,_);d.push(t),p+=`\n fn getBiasByOutputCoords(coords : vec4) -> ${h?"vec4":"f32"} {\n return bias[coords.${u?"w":"y"}${h?"/ 4":""}];\n }`}let c=[{name:"dim_a_outer",type:"i32"},{name:"dim_b_outer",type:"i32"},{name:"dim_inner",type:"i32"},{name:"strides",type:"i32",length:2},{name:"dilations",type:"i32",length:2},{name:"filter_dims",type:"i32",length:x.length},{name:"pads",type:"i32",length:C.length}];return"Clip"===t.activation&&c.push({name:"clip_max",type:"f32"},{name:"clip_min",type:"f32"}),`\n ${da("uniforms.result_strides")}\n ${r.registerUniforms(c).declareVariables(...d,l)};\n ${p}\n ${za(u,o,t,v)}\n ${h?fa(b,y,"f32",void 0,!u,$):ga(b,y,"f32",void 0,!u,$,!1,void 0,s)}`}}}})),Zs=U((()=>{xs(),Ts(),As(),Pa=(e,t,n,r,a,i=!1,o,s,u=!1)=>{let l=u?1:2,d=u?2:3,p=u?3:1,c=i?2:1,f=`\n fn setOutputAtIndex(flatIndex : u32, value : ${i?`vec4<${o}>`:o}) {\n result[flatIndex] = ${i?`vec4<${o}>`:o}(value);\n }`;r&&(f+=`\n fn getBiasByOutputCoords(coords : vec4) -> ${i?`vec4<${o}>`:o} {\n return bias[coords.${u?"w":"y"}${i?"/ 4":""}];\n }`);let h=i?4:1,m=At("W",t[1].dataType,t[1].dims.length,h),g=At("Dy",t[0].dataType,t[0].dims.length,h),y=[g,m];r&&y.push(At("bias",t[2].dataType,[n[p]].length,h));let b=kt("result",t[0].dataType,n.length,h),w=`{\n let batch: u32 = ${a?"global_id.z":"workgroup_id.z"} / uniforms.result_shape[1];\n let r = ${a?"global_id.z":"workgroup_id.z"} % uniforms.result_shape[1];\n let c = ${a?"global_id.y":"workgroup_id.y"} * ${c};\n let d1: u32 = ${a?"global_id.x":"workgroup_id.x"} * 4;\n\n let dyCorner = vec2(i32(r), i32(c)) - vec2(uniforms.pads);\n\n // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).\n // ? = to be determined. : = across all values in that axis.\n var dotProd: array, ${c}>;\n for (var i = 0; i < ${c}; i++) {\n dotProd[i] = vec4<${o}>(0.0);\n }\n for (var wR: u32 = 0; wR < uniforms.filter_dims[0]; wR = wR + 1) {\n var dyR = (${o}(dyCorner.x) + ${o}(wR)) / ${o}(uniforms.strides.x);\n let wRPerm = uniforms.filter_dims[0] - 1 - wR;\n if (dyR < 0.0 || dyR >= ${o}(uniforms.Dy_shape[1]) ||\n fract(dyR) > 0.0 || wRPerm < 0) {\n continue;\n }\n let idyR: u32 = u32(dyR);\n\n for (var wC: u32 = 0; wC < uniforms.filter_dims[1]; wC = wC + 1) {\n let dyC = (${o}(dyCorner.y) + ${o}(wC)) / ${o}(uniforms.strides.y);\n let dyC2 = (${o}(dyCorner.y) + 1.0 + ${o}(wC)) / ${o}(uniforms.strides.y);\n let wCPerm = uniforms.filter_dims[1] - 1 - wC;\n if (wCPerm < 0) {\n continue;\n }\n var bDyCVal = true;\n var bDyCVal2 = true;\n if (dyC < 0.0 || dyC >= ${o}(uniforms.Dy_shape[2]) ||\n fract(dyC) > 0.0) {\n bDyCVal = false;\n }\n if (dyC2 < 0.0 || dyC2 >= ${o}(uniforms.Dy_shape[2]) ||\n fract(dyC2) > 0.0) {\n bDyCVal2 = false;\n }\n\n let idyC: u32 = u32(dyC);\n let idyC2: u32 = u32(dyC2);\n if (bDyCVal && bDyCVal2) {\n let d2Length = uniforms.Dy_shape[3];\n for (var d2 :u32 = 0; d2 < d2Length; d2 = d2 + 4) {\n let wValue0 = ${m.get("u32(wRPerm)","u32(wCPerm)","d1","d2")};\n let wValue1 = ${m.get("u32(wRPerm)","u32(wCPerm)","d1 + 1","d2")};\n let wValue2 = ${m.get("u32(wRPerm)","u32(wCPerm)","d1 + 2","d2")};\n let wValue3 = ${m.get("u32(wRPerm)","u32(wCPerm)","d1 + 3","d2")};\n\n var xValue = ${g.get("batch","idyR","idyC","d2")};\n let tmpval = vec4<${o}>(dot(xValue, wValue0),\n dot(xValue, wValue1),\n dot(xValue, wValue2),\n dot(xValue, wValue3));\n dotProd[0] = dotProd[0] + tmpval;\n\n xValue = ${g.get("batch","idyR","idyC2","d2")};\n\n dotProd[1] = dotProd[1] + vec4<${o}>(dot(xValue, wValue0),\n dot(xValue, wValue1),\n dot(xValue, wValue2),\n dot(xValue, wValue3));\n }\n } else if (bDyCVal) {\n let d2Length = uniforms.Dy_shape[${p}];\n for (var d2: u32 = 0; d2 < d2Length; d2 = d2 + 4) {\n let wValue0 = ${m.get("u32(wRPerm)","u32(wCPerm)","d1","d2")};\n let wValue1 = ${m.get("u32(wRPerm)","u32(wCPerm)","d1 + 1","d2")};\n let wValue2 = ${m.get("u32(wRPerm)","u32(wCPerm)","d1 + 2","d2")};\n let wValue3 = ${m.get("u32(wRPerm)","u32(wCPerm)","d1 + 3","d2")};\n\n var xValue = ${g.get("batch","idyR","idyC","d2")};\n let tmpval = vec4<${o}>(dot(xValue, wValue0),\n dot(xValue, wValue1),\n dot(xValue, wValue2),\n dot(xValue, wValue3));\n dotProd[0] = dotProd[0] + tmpval;\n }\n } else if (bDyCVal2) {\n let d2Length = uniforms.Dy_shape[3];\n for (var d2: u32 = 0; d2 < d2Length; d2 = d2 + 4) {\n let wValue0 = ${m.get("u32(wRPerm)","u32(wCPerm)","d1","d2")};\n let wValue1 = ${m.get("u32(wRPerm)","u32(wCPerm)","d1 + 1","d2")};\n let wValue2 = ${m.get("u32(wRPerm)","u32(wCPerm)","d1 + 2","d2")};\n let wValue3 = ${m.get("u32(wRPerm)","u32(wCPerm)","d1 + 3","d2")};\n\n var xValue = ${g.get("batch","idyR","idyC2","d2")};\n let tmpval = vec4<${o}>(dot(xValue, wValue0),\n dot(xValue, wValue1),\n dot(xValue, wValue2),\n dot(xValue, wValue3));\n dotProd[1] = dotProd[1] + tmpval;\n }\n }\n }\n }\n\n for (var i: u32 = 0; i < ${c}; i = i + 1) {\n let value = dotProd[i] + ${r?"bias[c+i]":`vec4<${o}>(0.0)`};\n ${b.set("batch","r","c + i","d1","value")};\n }\n }`,v=`\n let outputIndices = ${b.offsetToIndices("global_idx")};\n let batch = ${b.indicesGet("outputIndices",0)};\n let d1 = ${b.indicesGet("outputIndices",p)};\n let r = ${b.indicesGet("outputIndices",l)};\n let c = ${b.indicesGet("outputIndices",d)};\n let dyCorner = vec2(i32(r), i32(c)) - uniforms.pads;\n let dyRCorner = dyCorner.x;\n let dyCCorner = dyCorner.y;\n let groupId = d1 / uniforms.output_channels_per_group;\n let wOutChannel = d1 - groupId * uniforms.output_channels_per_group;\n // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).\n // ? = to be determined. : = across all values in that axis.\n var dotProd = ${o}(0.0);\n for (var wR: u32 = 0; wR < uniforms.effective_filter_dims.x; wR = wR + 1) {\n if (wR % uniforms.dilations.x != 0) {\n continue;\n }\n let dyR = (${o}(dyRCorner) + ${o}(wR)) / ${o}(uniforms.strides[0]);\n let wRPerm = uniforms.filter_dims.x - 1 - wR / uniforms.dilations.x;\n if (dyR < 0.0 || dyR >= ${o}(uniforms.Dy_shape[${l}]) || fract(dyR) > 0.0 ||\n wRPerm < 0) {\n continue;\n }\n let idyR: u32 = u32(dyR);\n\n for (var wC: u32 = 0; wC < uniforms.effective_filter_dims.y; wC = wC + 1) {\n if (wC % uniforms.dilations.y != 0) {\n continue;\n }\n let dyC = (${o}(dyCCorner) + ${o}(wC)) / ${o}(uniforms.strides.y);\n let wCPerm = uniforms.filter_dims.y - 1 - wC / uniforms.dilations.y;\n if (dyC < 0.0 || dyC >= ${o}(uniforms.Dy_shape[${d}]) ||\n fract(dyC) > 0.0 || wCPerm < 0) {\n continue;\n }\n let idyC: u32 = u32(dyC);\n var inputChannel = groupId * uniforms.input_channels_per_group;\n for (var d2: u32 = 0; d2 < uniforms.input_channels_per_group; d2 = d2 + 1) {\n let xValue = ${u?g.get("batch","idyR","idyC","inputChannel"):g.get("batch","inputChannel","idyR","idyC")};\n let wValue = ${m.get("inputChannel","wOutChannel","u32(wRPerm)","u32(wCPerm)")};\n dotProd = dotProd + xValue * wValue;\n inputChannel = inputChannel + 1;\n }\n }\n }\n let value = dotProd + ${r?"bias[d1]":`${o}(0.0)`};\n ${b.setByOffset("global_idx","value")};\n `;return`\n ${e.registerUniforms(s).declareVariables(...y,b)}\n ${f}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")};\n ${i?w:v}}`},Ma=(e,t,n)=>{let r=e.length>2,a=t.outputShape,i=ht.size(a),o=[Math.ceil(i/64),1,1];nt("verbose",(()=>`[conv2d_backprop_webgpu] dispatch = ${o}`));let s="NHWC"===t.format,u=["rank","rank"],l=[t.strides[0],t.strides[1]],d=[t.kernelShape[s?1:2],t.kernelShape[s?2:3]],p=[t.dilations[0],t.dilations[1]],c=[d[0]+(t.dilations[0]<=1?0:(t.kernelShape[s?1:2]-1)*(t.dilations[0]-1)),d[1]+(t.dilations[1]<=1?0:(t.kernelShape[s?2:3]-1)*(t.dilations[1]-1))],f=[c[0]-1-Math.floor((t.pads[0]+t.pads[2])/2),c[1]-1-Math.floor(t.pads[1]+t.pads[3])/2],h=t.group,m=e[1].dims,g=m[0]/h,y=m[1],b=[{type:"int32",data:i},{type:"uint32",data:l},{type:"uint32",data:d},{type:"uint32",data:p},{type:"uint32",data:c},{type:"int32",data:f},{type:"uint32",data:g},{type:"uint32",data:y},..._t(e[0].dims),..._t(e[1].dims)];r&&(b.push(..._t(e[2].dims)),u.push("rank")),b.push(..._t(a));let w=1===o[1]&&1===o[2];return{name:"ConvTranspose2D",shaderCache:{hint:`${t.cacheKey};`,inputDependencies:u},getRunData:()=>({dispatchGroup:{x:o[0],y:o[1],z:o[2]},outputs:[{dims:n?n(a):a,dataType:e[0].dataType}],programUniforms:b}),getShaderSource:t=>{let n=[{name:"output_size",type:"u32"},{name:"strides",type:"u32",length:l.length},{name:"filter_dims",type:"u32",length:d.length},{name:"dilations",type:"u32",length:d.length},{name:"effective_filter_dims",type:"u32",length:c.length},{name:"pads",type:"i32",length:f.length},{name:"input_channels_per_group",type:"u32"},{name:"output_channels_per_group",type:"u32"}],i=vt(e[0].dataType);return`${Pa(t,e,a,r,w,!1,i,n,s)}`}}}})),Qs=U((()=>{Ys(),Zs(),Vs(),ks(),Da=(e,t,n,r,a,i)=>(e-1)*t+n+(r-1)*a+1-i,Na=(e,t,n,r,a)=>{let i=Math.floor(e/2);"SAME_UPPER"===t?(n[r]=i,n[a]=e-i):"SAME_LOWER"===t&&(n[r]=e-i,n[a]=i)},Wa=(e,t,n,r,a,i,o,s,u,l)=>{let d=e.length-2,p=0===l.length;if(0===u.length)for(let e=0;e{let n=e.kernelShape.slice();if(0===e.kernelShape.length||0===e.kernelShape.reduce(((e,t)=>e*t),1)){n.length=0;for(let e=2;ee+t),0)){let e=t[0].dims.length-2;u=new Array(e).fill(1)}let l=e.strides.slice();if(0===l.reduce(((e,t)=>e+t),0)){let e=t[0].dims.length-2;l=new Array(e).fill(1)}Wa(s,n,u,e.autoPad,e.group,a,l,r,o,i);let d=Object.assign({},e);return Object.assign(d,{kernelShape:n,pads:a,outputPadding:o,outputShape:i,dilations:u,strides:l}),d},Va=e=>{let t=sa(e),n=e.format,r=["NOTSET","VALID","SAME_UPPER","SAME_LOWER"][typeof e.autoPad>"u"?0:e.autoPad],a=e.dilations,i=e.group,o=e.kernelShape,s=e.pads,u=e.strides,l=e.wIsConst();return{autoPad:r,format:n,dilations:a,group:i,kernelShape:o,outputPadding:e.outputPadding,outputShape:e.outputShape,pads:s,strides:u,wIsConst:l,...t,cacheKey:`${e.format};${t.activation};`}},Ha=(e,t)=>{if(!e||2!==e.length&&3!==e.length)throw new Error("Conv requires 2 or 3 inputs");if(4!==e[0].dims.length&&3!==e[0].dims.length)throw new Error("currently only support 2-dimensional conv");if(e[0].dims.length!==e[1].dims.length)throw new Error("filter does not have same dimension as input");if(e[0].dims["NHWC"===t.format?e[0].dims.length-1:1]!==e[1].dims[0])throw new Error("FILTER_IN_CHANNEL should be equal to DATA_CHANNEL");let n=e[1].dims[1]*t.group;if(3===e.length&&(1!==e[2].dims.length||e[2].dims[0]!==n))throw new Error("invalid bias");let r=e[0].dims.length-2;if(t.dilations.reduce(((e,t)=>e+t),0)>0&&t.dilations.length!==r)throw new Error(`dilations should be ${r}D`);if(t.strides.reduce(((e,t)=>e+t),0)>0&&t.strides.length!==r)throw new Error(`strides should be ${r}D`);if(t.pads.reduce(((e,t)=>e+t),0)>0&&t.pads.length!==2*r)throw new Error(`pads should be ${2*r}D`);if(t.outputPadding.length!==r&&0!==t.outputPadding.length)throw new Error(`output_padding should be ${r}D`);if(t.kernelShape.reduce(((e,t)=>e+t),0)>0&&0!==t.kernelShape.length&&t.kernelShape.length!==e[1].dims.length-2)throw new Error("invalid kernel shape");if(0!==t.outputShape.length&&t.outputShape.length!==e[0].dims.length-2)throw new Error("invalid output shape")},La=[2,3,1,0],Fa=(e,t,n)=>{let r=Ua(n,t),a="NHWC"===n.format,i=r.outputShape,o=i[a?3:1],s=t[0].dims[a?3:1];if(1!==r.group||1===o&&1===s)return void e.compute(Ma(t,r));let u=i[a?1:2],l=i[a?2:3],d=a?u*l:o,p=a?o:u*l,c=t[1].dims[2]*t[1].dims[3]*s,f=e.kernelCustomData.wT??e.compute(Wt(t[1],La),{inputs:[1],outputs:[n.wIsConst?-2:-1]})[0];n.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=f);let h=[t[0],f],m=3===t.length;m&&(a||1!==t[2].dims.length?h.push(t[2]):h.push(t[2].reshape([t[2].dims[0],1,1]))),e.compute(Ba(h,r,i,d,p,c,m,!0),{inputs:h})},Ga=(e,t)=>{let n="NHWC"===t.format,r=[e.inputs[0].reshape(n?[e.inputs[0].dims[0],1,e.inputs[0].dims[1],e.inputs[0].dims[2]]:[e.inputs[0].dims[0],e.inputs[0].dims[1],1,e.inputs[0].dims[2]]),e.inputs[1].reshape([e.inputs[1].dims[0],e.inputs[1].dims[1],1,e.inputs[1].dims[2]])];3===r.length&&r.push(e.inputs[2]);let a=t.kernelShape;(0===a.length||0===a[0])&&(a=[e.inputs[1].dims[2]]);let i=t.dilations;(0===i.length||0===i[0])&&(i=[1]);let o=t.strides;(0===o.length||0===o[0])&&(o=[1]);let s=t.pads;0===s.length&&(s=[0,0]),s=[0,s[0],0,s[1]],o=[1].concat(o),i=[1].concat(i),a=[1].concat(a);let u=Ua({...t,pads:s,strides:o,dilations:i,kernelShape:a},r);e.compute(Ma(r,u,(e=>n?[e[0],e[2],e[3]]:[e[0],e[1],e[3]])))},ja=(e,t)=>{Ha(e.inputs,t),3===e.inputs[0].dims.length?Ga(e,t):Fa(e,e.inputs,t)}})),Xs=U((()=>{$s(),Ts(),Is(),As(),qa=(e,t,n,r)=>{let a=ht.size(t),i=t.length,o=At("input",e,i),s=kt("output",e,i),u=6===n.dataType?n.getInt32Array()[0]:Number(n.getBigInt64Array()[0]),l=ht.normalizeAxis(u,i);return{name:"CumSum",shaderCache:{hint:r.cacheKey,inputDependencies:["rank"]},getRunData:()=>({outputs:[{dims:t,dataType:e}],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:[{type:"uint32",data:a},{type:"int32",data:l},..._t(t),..._t(t)]}),getShaderSource:e=>{let t=` i32(${o.indicesGet("inputIndices","uniforms.axis")}) `,n=It("uniforms.input_shape","uniforms.axis",i),a=r.reverse?t+(r.exclusive?" + 1":""):"0",u=r.reverse?n:t+(r.exclusive?"":" + 1");return`\n ${e.registerUniform("outputSize","u32").registerUniform("axis","u32").declareVariables(o,s)}\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n var inputIndices = ${s.offsetToIndices("global_idx")};\n var sum = ${s.type.value}(0);\n let first : i32 = ${a};\n let last : i32 = ${u};\n for (var i : i32 = first; i < last; i++) {\n ${o.indicesSet("inputIndices","uniforms.axis","u32(i)")};\n sum = sum + ${o.getByIndices("inputIndices")};\n }\n ${s.setByOffset("global_idx","sum")};\n }`}}},Ka=(e,t)=>{let n=e.inputs[0].dims,r=e.inputs[0].dataType,a=e.inputs[1];e.compute(qa(r,n,a,t),{inputs:[0]})},Ya=e=>{let t=1===e.exclusive,n=1===e.reverse;return pt({exclusive:t,reverse:n})}})),Js=U((()=>{Ts(),Is(),As(),Xa="^"+(Qa="("+(Za="[a-zA-Z]|\\.\\.\\.")+")+")+"$",Ja="^("+Qa+",)*"+Qa+"$",ei=class{constructor(e=-1){this.symbolToIndices=new Map,this.inputIndex=e}addSymbol(e,t){let n=this.symbolToIndices.get(e);void 0===n?n=[t]:n.push(t),this.symbolToIndices.set(e,n)}},ti=class{constructor(e,t){this.equation=t,this.hasEllipsis=!1,this.symbolToInfo=new Map,this.lhs=new Array,this.outputDims=[];let[n,r]=t.includes("->")?t.split("->",2):[t,""];if(!n.match(RegExp(Ja)))throw new Error("Invalid LHS term");if(n.split(",").forEach(((t,n)=>{let r=e[n].dims.slice();if(!t.match(RegExp(Xa)))throw new Error("Invalid LHS term");let a=this.processTerm(t,!0,r,n);this.lhs.push(a)})),""===r)r+=[...this.symbolToInfo.entries()].filter((([e,t])=>1===t.count||"..."===e)).map((([e])=>e)).join("");else if(!r.match(RegExp(Qa)))throw new Error("Invalid RHS");r.match(RegExp(Za,"g"))?.forEach((e=>{if("..."===e)this.outputDims=this.outputDims.concat(this.ellipsisDims);else{let t=this.symbolToInfo.get(e);if(void 0===t)throw new Error("Invalid RHS symbol");this.outputDims.push(t.dimValue)}})),this.rhs=this.processTerm(r,!1,this.outputDims)}addSymbol(e,t,n){let r=this.symbolToInfo.get(e);if(void 0!==r){if(r.dimValue!==t&&1!==r.count)throw new Error("Dimension mismatch");r.count++,r.inputIndices.push(n)}else r={count:1,dimValue:t,inputIndices:[n]};this.symbolToInfo.set(e,r)}processTerm(e,t,n,r=-1){let a=n.length,i=!1,o=[],s=0;if(!e.match(RegExp(Xa))&&!t&&""!==e)throw new Error("Invalid LHS term");let u=e.match(RegExp(Za,"g")),l=new ei(r);return u?.forEach(((e,d)=>{if("..."===e){if(i)throw new Error("Only one ellipsis is allowed per input term");i=!0;let e=a-u.length+1;if(e<0)throw new Error("Ellipsis out of bounds");if(o=n.slice(s,s+e),this.hasEllipsis){if(this.ellipsisDims.length!==o.length||this.ellipsisDims.toString()!==o.toString())throw new Error("Ellipsis dimensions mismatch")}else{if(!t)throw new Error("Ellipsis must be specified in the LHS");this.hasEllipsis=!0,this.ellipsisDims=o}for(let e=0;ee+"_max",ri=(e,t,n,r)=>{let a=e.map((e=>e.length)).map(((e,n)=>At(`input${n}`,t,e))),i=ht.size(r),o=kt("output",t,r.length),s=[...n.symbolToInfo.keys()].filter((e=>!n.rhs.symbolToIndices.has(e)));return{name:"Einsum",shaderCache:{hint:n.equation,inputDependencies:e.map((()=>"rank"))},getRunData:()=>{let a=s.filter((e=>n.symbolToInfo.has(e))).map((e=>({type:"uint32",data:n.symbolToInfo.get(e)?.dimValue||0})));a.push({type:"uint32",data:i});let o=e.map(((e,t)=>[..._t(e)])).reduce(((e,t)=>e.concat(t)),a);return o.push(..._t(r)),{outputs:[{dims:r,dataType:t}],dispatchGroup:{x:Math.ceil(i/64)},programUniforms:o}},getShaderSource:e=>{let t=[],r=[],i=[],u=[],l=[],d=n.symbolToInfo.size===n.rhs.symbolToIndices.size;n.symbolToInfo.forEach(((e,s)=>{if(n.rhs.symbolToIndices.has(s)){let r=n.rhs.symbolToIndices.get(s)?.[0];void 0!==r&&n.lhs.forEach(((n,i)=>{if(e.inputIndices.includes(i)){let e=n.symbolToIndices.get(s);if(void 0===e)throw new Error("Invalid symbol error");e.forEach((e=>{t.push(`${a[i].indicesSet(`input${i}Indices`,e,o.indicesGet("outputIndices",r))}`)}))}}))}else n.lhs.forEach(((t,n)=>{if(e.inputIndices.includes(n)){let e=t.symbolToIndices.get(s);if(void 0===e)throw new Error("Invalid symbol error");e.forEach((e=>{r.push(`${a[n].indicesSet(`input${n}Indices`,e,`${s}`)}`)})),l.push(`prod *= ${a[n].getByIndices(`input${n}Indices`)};`)}})),i.push(`for(var ${s}: u32 = 0; ${s} < uniforms.${ni(s)}; ${s}++) {`),u.push("}")}));let p=d?[...t,`let sum = ${a.map(((e,t)=>e.getByIndices(`input${t}Indices`))).join(" * ")};`]:[...t,"var sum = 0.0;",...i,...r,"var prod = 1.0;",...l,"sum += prod;",...u];return`\n ${e.registerUniforms(s.map((e=>({name:`${ni(e)}`,type:"u32"})))).registerUniform("outputSize","u32").declareVariables(...a,o)}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n var outputIndices = ${o.offsetToIndices("global_idx")};\n ${a.map(((e,t)=>`var input${t}Indices: ${a[t].type.indices};`)).join("\n")}\n ${p.join("\n")};\n ${o.setByOffset("global_idx","sum")};\n }`}}},ai=(e,t)=>{let n=new ti(e.inputs,t.equation),r=n.outputDims,a=e.inputs.map(((e,t)=>e.dims));e.compute(ri(a,e.inputs[0].dataType,n,r))},ii=e=>{let t=e.equation.replace(/\s+/g,"");return pt({equation:t})}})),eu=U((()=>{$s(),Ts(),As(),oi=e=>{if(!e||2!==e.length)throw new Error("Expand requires 2 input.");let t=e[0].dims,n=Array.from(e[1].getBigInt64Array(),Number),r=n.length{let n=e.length-t.length,r=[];for(let t=0;te.length>t.length?si(e,t):si(t,e),li=e=>{let t=e[0].dims,n=Array.from(e[1].getBigInt64Array(),Number),r=ui(t,n),a=e[0].dataType,i=9===a?4:1,o=Math.ceil(ht.size(r)/i),s=[{type:"uint32",data:o},..._t(t),..._t(r)];return{name:"Expand",shaderCache:{hint:`${r.length}`,inputDependencies:["rank"]},getShaderSource:e=>{let n,o=At("input",a,t.length,i),s=kt("output",a,r.length,i);if(9===a){let e=(e,t,n="")=>`\n let outputIndices${t} = ${s.offsetToIndices(`outputOffset + ${t}u`)};\n let offset${t} = ${o.broadcastedIndicesToOffset(`outputIndices${t}`,s)};\n let index${t} = offset${t} / 4u;\n let component${t} = offset${t} % 4u;\n ${e}[${t}] = ${n}(${o.getByOffset(`index${t}`)}[component${t}]);\n `;n=`\n let outputOffset = global_idx * ${i};\n var data = vec4(0);\n ${e("data",0,"u32")}\n ${e("data",1,"u32")}\n ${e("data",2,"u32")}\n ${e("data",3,"u32")}\n ${s.setByOffset("global_idx","data")}\n }`}else n=`\n let outputIndices = ${s.offsetToIndices("global_idx")};\n let inputOffset = ${o.broadcastedIndicesToOffset("outputIndices",s)};\n ${s.setByOffset("global_idx",o.getByOffset("inputOffset"))}\n }`;return`\n ${e.registerUniform("vec_size","u32").declareVariables(o,s)}\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")}\n ${n}`},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(o/64)},programUniforms:s})}},di=e=>{oi(e.inputs),e.compute(li(e.inputs),{inputs:[0]})}})),tu=U((()=>{$s(),Ts(),Is(),As(),pi=e=>{if(!e||2!==e.length)throw new Error("Gather requires 2 inputs.")},ci=(e,t)=>{let n=e[0].dims,r=e[1].dims,a=n.length,i=ht.normalizeAxis(t.axis,a),o=n.slice(0);o.splice(i,1,...r);let s=n[i],u=9===e[0].dataType?4:1,l=Math.ceil(ht.size(o)/u),d=[{type:"uint32",data:l},{type:"int32",data:s},{type:"uint32",data:i},..._t(e[0].dims),..._t(e[1].dims),..._t(o)];return{name:"Gather",shaderCache:{hint:t.cacheKey,inputDependencies:["rank","rank"]},getRunData:()=>({outputs:[{dims:o,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(l/64)},programUniforms:d}),getShaderSource:t=>{let n,s=At("data",e[0].dataType,e[0].dims.length,u),l=At("inputIndices",e[1].dataType,e[1].dims.length),d=kt("output",e[0].dataType,o.length,u),p=e=>{let t=r.length,n=`var indicesIndices${e} = ${l.type.indices}(0);`;for(let r=0;r1?`indicesIndices${e}[${r}]`:`indicesIndices${e}`} = ${o.length>1?`outputIndices${e}[uniforms.axis + ${r}]`:`outputIndices${e}`};`;n+=`\n var idx${e} = ${l.getByIndices(`indicesIndices${e}`)};\n if (idx${e} < 0) {\n idx${e} = idx${e} + uniforms.axisDimLimit;\n }\n var dataIndices${e} = ${s.type.indices}(0);\n `;for(let r=0,s=0;r1?`dataIndices${e}[${r}]`:`dataIndices${e}`} = u32(idx${e});`,s+=t):(n+=`${a>1?`dataIndices${e}[${r}]`:`dataIndices${e}`} = ${o.length>1?`outputIndices${e}[${s}]`:`outputIndices${e}`};`,s++);return n};if(9===e[0].dataType){let e=(e,t,n="")=>`\n let outputIndices${t} = ${d.offsetToIndices(`outputOffset + ${t}u`)};\n ${p(t)};\n let offset${t} = ${s.indicesToOffset(`dataIndices${t}`)};\n let index${t} = offset${t} / 4u;\n let component${t} = offset${t} % 4u;\n ${e}[${t}] = ${n}(${s.getByOffset(`index${t}`)}[component${t}]);\n `;n=`\n let outputOffset = global_idx * ${u};\n var value = vec4(0);\n ${e("value",0,"u32")}\n ${e("value",1,"u32")}\n ${e("value",2,"u32")}\n ${e("value",3,"u32")}\n ${d.setByOffset("global_idx","value")}\n `}else n=`\n let outputIndices = ${d.offsetToIndices("global_idx")};\n ${p("")};\n let value = ${s.getByIndices("dataIndices")};\n ${d.setByOffset("global_idx","value")};\n `;return`\n ${t.registerUniform("outputSize","u32").registerUniform("axisDimLimit","i32").registerUniform("axis","u32").declareVariables(s,l,d)}\n ${t.mainStart()}\n ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n ${n}\n }`}}},fi=e=>pt({axis:e.axis}),hi=(e,t)=>{let n=e.inputs;pi(n),e.compute(ci(e.inputs,t))}})),nu=U((()=>{Ts(),Is(),As(),mi=e=>{if(!e||2!==e.length)throw new Error("GatherElements requires 2 inputs.");if(e[0].dims.length<1)throw new Error("GatherElements requires that the data input be rank >= 1.");if(e[0].dims.length!==e[1].dims.length)throw new Error("GatherElements requires that the data input and\n indices input tensors be of same rank.")},gi=(e,t)=>{let n=e[0].dims,r=e[0].dataType,a=n.length,i=e[1].dims,o=e[1].dataType,s=ht.normalizeAxis(t.axis,a),u=n[s],l=i.slice(0),d=ht.size(l),p=At("input",r,a),c=At("indicesInput",o,i.length),f=kt("output",r,l.length),h=[{type:"uint32",data:d},{type:"int32",data:u},{type:"uint32",data:s}];return h.push(..._t(n)),h.push(..._t(i)),h.push(..._t(l)),{name:"GatherElements",shaderCache:{inputDependencies:["rank","rank"]},getRunData:()=>({outputs:[{dims:l,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(d/64)},programUniforms:h}),getShaderSource:e=>`\n ${e.registerUniform("outputSize","u32").registerUniform("axisDimLimit","i32").registerUniform("axis","u32").declareVariables(p,c,f)}\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n\n let outputIndices = ${f.offsetToIndices("global_idx")};\n\n var idx = ${c.getByOffset("global_idx")};\n if (idx < 0) {\n idx = idx + uniforms.axisDimLimit;\n }\n var inputIndices = ${p.type.indices}(outputIndices);\n ${p.indicesSet("inputIndices","uniforms.axis","u32(idx)")};\n let value = ${p.getByIndices("inputIndices")};\n\n ${f.setByOffset("global_idx","value")};\n }`}},yi=e=>pt({axis:e.axis}),bi=(e,t)=>{let n=e.inputs;mi(n),e.compute(gi(e.inputs,t))}})),ru=U((()=>{Ts(),As(),wi=e=>{if(!e)throw new Error("Input is missing");if(e.length<2||e.length>3)throw new Error("Invaid input number.");if(3===e.length&&e[2].dims.length>2)throw new Error("Invalid input shape of C");if(e[0].dataType!==e[1].dataType||3===e.length&&e[0].dataType!==e[2].dataType)throw new Error("Input types are mismatched")},vi=(e,t)=>{let n=e[0].dims.slice(),r=e[1].dims.slice(),[a,i,o]=gt.getShapeOfGemmResult(n,t.transA,r,t.transB,3===e.length?e[2].dims:void 0),s=[a,i];if(!s)throw new Error("Can't use gemm on the given tensors");let u=ht.size(s),l=[{type:"uint32",data:u},{type:"uint32",data:a},{type:"uint32",data:i},{type:"uint32",data:o},{type:"float32",data:t.alpha},{type:"float32",data:t.beta}],d=["type","type"];return 3===e.length&&(l.push(..._t(e[2].dims)),d.push("rank")),l.push(..._t(s)),{name:"Gemm",shaderCache:{hint:`${t.cacheKey}`,inputDependencies:d},getRunData:()=>({outputs:[{dims:s,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:l}),getShaderSource:n=>{let r="";t.transA&&t.transB?r="value += a[k * uniforms.M + m] * b[n * uniforms.K + k];":t.transA&&!t.transB?r="value += a[k * uniforms.M + m] * b[k * uniforms.N + n];":!t.transA&&t.transB?r="value += a[m * uniforms.K + k] * b[n * uniforms.K + k];":!t.transA&&!t.transB&&(r="value += a[m * uniforms.K + k] * b[k * uniforms.N + n];");let a=1===t.alpha?"":"value *= uniforms.alpha;",i=At("a",e[0].dataType,e[0].dims),o=At("b",e[1].dataType,e[1].dims),u=i.type.value,l=null,d=[i,o];3===e.length&&(l=At("c",e[2].dataType,e[2].dims.length),d.push(l));let p=kt("output",e[0].dataType,s.length);return d.push(p),`\n ${n.registerUniforms([{name:"output_size",type:"u32"},{name:"M",type:"u32"},{name:"N",type:"u32"},{name:"K",type:"u32"},{name:"alpha",type:"f32"},{name:"beta",type:"f32"}]).declareVariables(...d)}\n\n ${n.mainStart()}\n ${n.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}\n\n let m = global_idx / uniforms.N;\n let n = global_idx % uniforms.N;\n\n var value = ${u}(0);\n for (var k: u32 = 0u; k < uniforms.K; k++) {\n ${r}\n }\n\n ${a}\n ${null!=l?`let cOffset = ${l.broadcastedIndicesToOffset("vec2(m, n)",p)}; value += ${u}(uniforms.beta) * ${l.getByOffset("cOffset")};`:""}\n output[global_idx] = value;\n }`}}},$i=e=>({transA:e.transA,transB:e.transB,alpha:e.alpha,beta:e.beta,cacheKey:`${e.transA};${e.transB};${1===e.alpha}`}),_i=(e,t)=>{wi(e.inputs),e.compute(vi(e.inputs,t))}})),au=U((()=>{$s(),Ts(),As(),xi=(e,t)=>{let n=e[0].dims,r=n,a=ht.sizeToDimension(n,2),i=ht.sizeFromDimension(n,2),o=xt(i),s=i/o,u=[n[0],n[1],s],l=[{type:"uint32",data:i},{type:"uint32",data:s}];return l.push(..._t(u),..._t(u)),{name:"InstanceNormalization",shaderCache:{hint:`${t.epsilon};${o}`,inputDependencies:["rank","type","type"]},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:a},programUniforms:l}),getShaderSource:n=>{let r=At("x",e[0].dataType,u.length,o),a=At("scale",e[1].dataType,e[1].dims),i=At("bias",e[2].dataType,e[2].dims),s=kt("output",e[0].dataType,u.length,o),l=[r,a,i,s],d=r.type.value,p=1===o?"f32":`vec${o}`;return`\n var meanShared : f32;\n var squaredNormShared : f32;\n var workgroupShared : array<${p}, 64>;\n const workgroupSize = 64u;\n ${n.registerUniforms([{name:"normSize",type:"u32"},{name:"normPackedSize",type:"u32"}]).declareVariables(...l)}\n ${n.mainStart(64)}\n let norm = global_idx / workgroupSize;\n let batch = norm / uniforms.x_shape[1];\n let channel = norm % uniforms.x_shape[1];\n let localIndex = local_id.x;\n\n // initialize workgroup memory\n var initial = ${p}(0);\n for (var h = localIndex; h < uniforms.normPackedSize; h += workgroupSize) {\n initial = initial + ${p}(${r.get("batch","channel","h")});\n }\n workgroupShared[localIndex] = initial;\n workgroupBarrier();\n\n // Calculate the mean of current channel data.\n for (var currSize = workgroupSize >> 1; currSize > 0; currSize = currSize >> 1) {\n if (localIndex < currSize) {\n workgroupShared[localIndex] = workgroupShared[localIndex] + workgroupShared[localIndex + currSize];\n }\n workgroupBarrier();\n }\n if (localIndex == 0) {\n meanShared = ${Et("workgroupShared[0]",o)} / f32(uniforms.normSize);\n }\n workgroupBarrier();\n\n // reinitialize workgroup memory.\n initial = ${p}(0);\n for (var h = localIndex; h < uniforms.normPackedSize; h += workgroupSize) {\n let deviation = ${p}(${r.get("batch","channel","h")}) - ${p}(meanShared);\n initial = initial + deviation * deviation;\n }\n workgroupShared[localIndex] = initial;\n workgroupBarrier();\n\n // Calculate the sum of square of deviation of current channel data.\n for (var currSize = workgroupSize >> 1; currSize > 0; currSize = currSize >> 1) {\n if (localIndex < currSize) {\n workgroupShared[localIndex] = workgroupShared[localIndex] + workgroupShared[localIndex + currSize];\n }\n workgroupBarrier();\n }\n if (localIndex == 0) {\n squaredNormShared = ${Et("workgroupShared[0]",o)};\n }\n workgroupBarrier();\n\n let invStdDev = inverseSqrt(squaredNormShared / f32(uniforms.normSize) + f32(${t.epsilon}));\n let channelScale = invStdDev * f32(${a.getByOffset("channel")});\n let channelShift = f32(${i.getByOffset("channel")}) - meanShared * channelScale;\n for (var h = localIndex; h < uniforms.normPackedSize; h += workgroupSize) {\n let value = ${r.get("batch","channel","h")} * ${d}(${p}(channelScale)) + ${d}(${p}(channelShift));\n ${s.set("batch","channel","h","value")};\n }\n }`}}},Si=(e,t,n,r,a,i,o,s)=>{let u=xt(o),l=1===u?"vec2f":`mat2x${u}f`,d=1===u?"f32":`vec${u}f`,p=(e,t)=>`${l}(${e}, ${t})`,c=a*o/u,f=[{type:"uint32",data:Math.ceil(i/64)},{type:"uint32",data:i},{type:"uint32",data:Math.floor(o/u)},{type:"uint32",data:Math.floor(i*o/u)}],h=e.compute({name:"InstanceNormComputeMean",shaderCache:{hint:`${u}`,inputDependencies:["type"]},getRunData:()=>({outputs:[{dims:[a,o,64,2],dataType:1}],dispatchGroup:{x:a*o/u},programUniforms:f}),getShaderSource:e=>{let n=At("input",t.dataType,t.dims,u);return`\n ${e.declareVariables(n)}\n @group(0) @binding(1) var output : array<${l}>;\n struct Uniforms {wg_size:u32, H:u32, C:u32, image_size:u32};\n @group(0) @binding(2) var uniforms: Uniforms;\n\n ${e.mainStart(64)}\n let currentImageNumber = global_idx / 64 / uniforms.C;\n let currentChannelNumber = (global_idx / 64) % uniforms.C;\n let wgId = global_idx % 64;\n let wgOffset = wgId * uniforms.wg_size;\n if (wgOffset >= uniforms.H) {\n return;\n }\n let wgMax = min(wgOffset + uniforms.wg_size, uniforms.H);\n\n let offset = currentImageNumber * uniforms.image_size + currentChannelNumber;\n var sum = ${St("f32",u)};\n var squaredSum = ${St("f32",u)};\n for (var i: u32 = wgOffset; i < wgMax; i++) {\n let value = ${d}(input[offset + i * uniforms.C]);\n sum += value;\n squaredSum += value * value;\n }\n output[global_idx] = ${p("sum","squaredSum")};\n }`}},{inputs:[t],outputs:[-1]})[0],m=[{type:"uint32",data:c},{type:"uint32",data:i},{type:"uint32",data:Math.floor(o/u)},{type:"uint32",data:Math.floor(64*o/u)}];return e.compute({name:"InstanceNormComputeChannelScaleShift",shaderCache:{hint:`${u};${s}`,inputDependencies:["type","type","type"]},getRunData:()=>({outputs:[{dims:[a,o,2],dataType:1}],dispatchGroup:{x:Math.ceil(c/64)},programUniforms:m}),getShaderSource:e=>{let t=At("scale",n.dataType,n.dims,u),a=At("bias",r.dataType,r.dims,u);return`\n @group(0) @binding(0) var input : array<${l}>;\n @group(0) @binding(1) var scale : array<${t.type.storage}>;\n @group(0) @binding(2) var bias : array<${a.type.storage}>;\n @group(0) @binding(3) var output : array<${l}>;\n struct Uniforms {units_of_work : u32, H: u32, C : u32, image_size : u32};\n @group(0) @binding(4) var uniforms: Uniforms;\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.units_of_work")}\n let currentImageNumber = global_idx / uniforms.C;\n let currentChannelNumber = global_idx % uniforms.C;\n\n let offset = currentImageNumber * uniforms.image_size;\n var sum = ${St("f32",u)};\n var squaredSum = ${St("f32",u)};\n for (var i: u32 = 0; i < 64; i++) {\n let value = input[offset + i + currentChannelNumber * 64];\n sum += value[0];\n squaredSum += value[1];\n }\n sum = sum / f32(uniforms.H);\n squaredSum = squaredSum / f32(uniforms.H);\n let invStdDev = inverseSqrt(squaredSum - sum * sum + f32(${s}));\n let channelScale = invStdDev * ${d}(scale[currentChannelNumber]);\n let channelShift = ${d}(bias[currentChannelNumber]) - sum * channelScale;\n\n output[global_idx] = ${p("channelScale","channelShift")};\n }`}},{inputs:[h,n,r],outputs:[-1]})[0]},Ci=(e,t,n)=>{let r=t[0].dims,a=r,i=r[0],o=r[r.length-1],s=ht.sizeFromDimension(r,1)/o,u=xt(o),l=ht.size(a)/u,d=[{type:"uint32",data:s},{type:"uint32",data:Math.floor(o/u)}],p=Si(e,t[0],t[1],t[2],i,s,o,n.epsilon);e.compute({name:"InstanceNormalizationNHWC",shaderCache:{hint:`${u}`,inputDependencies:["type","type"]},getRunData:()=>({outputs:[{dims:a,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(l/64)},programUniforms:d}),getShaderSource:e=>{let n=vt(t[0].dataType),r=1===u?"vec2f":`mat2x${u}f`,i=1===u?n:`vec${u}<${n}>`,o=At("input",t[0].dataType,t[0].dims,u),s=kt("output",t[0].dataType,a,u);return`\n @group(0) @binding(0) var input : array<${o.type.storage}>;\n @group(0) @binding(1) var scaleInput : array<${r}>;\n @group(0) @binding(2) var output : array<${s.type.storage}>;\n struct Uniforms {H: u32, C : u32};\n @group(0) @binding(3) var uniforms: Uniforms;\n\n ${e.mainStart()}\n let currentImageNumber = global_idx / (uniforms.C * uniforms.H);\n let currentChannelNumber = global_idx % uniforms.C;\n\n let scaleOffset = currentImageNumber * uniforms.C + currentChannelNumber;\n let scale = scaleInput[scaleOffset];\n output[global_idx] = fma(input[global_idx], ${i}(scale[0]), ${i}(scale[1]));\n }`}},{inputs:[t[0],p]})},Ei=(e,t)=>{"NHWC"===t.format?Ci(e,e.inputs,t):e.compute(xi(e.inputs,t))}})),iu=U((()=>{$s(),Ts(),As(),Ii=e=>{if(!e||e.length<2)throw new Error("layerNorm requires at least 2 inputs.")},Ti=(e,t,n)=>{let r=e[0].dims,a=e[1],i=e[2],o=r,s=ht.normalizeAxis(t.axis,r.length),u=ht.sizeToDimension(r,s),l=ht.sizeFromDimension(r,s),d=ht.size(a.dims),p=i?ht.size(i.dims):0;if(d!==l||i&&p!==l)throw new Error(`Size of X.shape()[axis:] == ${l}.\n Size of scale and bias (if provided) must match this.\n Got scale size of ${d} and bias size of ${p}`);let c=[];for(let e=0;e1,y=n>2,b=[{dims:o,dataType:e[0].dataType}];return g&&b.push({dims:c,dataType:1}),y&&b.push({dims:c,dataType:1}),{name:"LayerNormalization",shaderCache:{hint:`${f};${n}`,inputDependencies:h},getRunData:()=>({outputs:b,dispatchGroup:{x:Math.ceil(u/64)},programUniforms:m}),getShaderSource:t=>{let n=vt(e[0].dataType),r=[At("x",e[0].dataType,e[0].dims,f),At("scale",a.dataType,a.dims,f)];return i&&r.push(At("bias",i.dataType,i.dims,f)),r.push(kt("output",e[0].dataType,o,f)),g&&r.push(kt("mean_data_output",1,c)),y&&r.push(kt("inv_std_output",1,c)),`\n ${t.registerUniforms([{name:"norm_count",type:"u32"},{name:"norm_size",type:"f32"},{name:"norm_size_vectorized",type:"u32"},{name:"epsilon",type:"f32"}]).declareVariables(...r)}\n ${t.mainStart()}\n ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.norm_count")}\n let offset = global_idx * uniforms.norm_size_vectorized;\n var meanVector = ${St("f32",f)};\n var meanSquareVector = ${St("f32",f)};\n\n for (var h: u32 = 0u; h < uniforms.norm_size_vectorized; h++) {\n let value = ${Ct(n,f,"x[h + offset]")};\n meanVector += value;\n meanSquareVector += value * value;\n }\n let mean = ${Et("meanVector",f)} / uniforms.norm_size;\n let invStdDev =\n inverseSqrt(${Et("meanSquareVector",f)} / uniforms.norm_size - mean * mean + uniforms.epsilon);\n\n for (var j: u32 = 0; j < uniforms.norm_size_vectorized; j++) {\n let f32input = ${Ct(n,f,"x[j + offset]")};\n let f32scale = ${Ct(n,f,"scale[j]")};\n output[j + offset] = ${r[0].type.value}((f32input - mean) * invStdDev * f32scale\n ${i?`+ ${Ct(n,f,"bias[j]")}`:""}\n );\n }\n\n ${g?"mean_data_output[global_idx] = mean":""};\n ${y?"inv_std_output[global_idx] = invStdDev":""};\n }`}}},Ai=(e,t)=>{Ii(e.inputs),e.compute(Ti(e.inputs,t,e.outputCount))}})),ou=U((()=>{Ts(),Is(),Cs(),Bs(),As(),ks(),ki=(e,t)=>{let n=e[0],r=e[1],a=e[2],i=e[3],o=e[4],s=e[5],u=e[6],l=e[7];if(3!==n.dims.length&&5!==n.dims.length)throw new Error("Input query is expected to have 3 or 5 dimensions");let d,p=n.dims[0],c=n.dims[1],f=3===n.dims.length?n.dims[2]:t.numHeads*n.dims[4],h=c,m=0,g=0,y=Math.floor(f/t.numHeads);if(u&&l){if(4!==u.dims.length)throw new Error('Input "past_key" is expected to have 4 dimensions');if(4!==l.dims.length)throw new Error('Input "past_value" is expected to have 4 dimensions');m=u.dims[2],g=u.dims[2]}else if(u||l)throw new Error('Input "past_key" and "past_value" shall be both present or both absent');if(r){if(3!==n.dims.length)throw new Error('Input "query" is expected to have 3 dimensions when key is given');if(r.dims.length<3||r.dims.length>5)throw new Error('Input "key" is expected to have 3, 4, or 5 dimensions');if(n.dims[0]!==r.dims[0])throw new Error('Input "query" and "key" shall have same dim 0 (batch size)');if(3===r.dims.length){if(r.dims[2]!==n.dims[2])throw new Error('Input "query" and "key" shall have same dim 2 (hidden_size)');d=2,h=r.dims[1]}else if(5===r.dims.length){if(r.dims[2]!==t.numHeads||2!==r.dims[3]||r.dims[4]!==y)throw new Error('Expect "key" shape (batch_size, kv_sequence_length, num_heads, 2, head_size) for packed kv');if(a)throw new Error('Expect "value" be none when "key" has packed kv format.');d=5,h=r.dims[1]}else{if(r.dims[1]!==t.numHeads||r.dims[3]!==y)throw new Error('Expect "key" shape (batch_size, num_heads, kv_sequence_length, head_size) for past_key');d=0,h=r.dims[2]}}else{if(3!==n.dims.length&&5!==n.dims.length)throw new Error('Input "query" is expected to have 3 or 5 dimensions when key is empty');if(5===n.dims.length&&(n.dims[2]!==t.numHeads||3!==n.dims[3]))throw new Error('Expect "query" shape (batch_size, kv_sequence_length, num_heads, 3, head_size) for packed kv');d=3}if(i){if(1!==i.dims.length)throw new Error('Input "bias" is expected to have 1 dimension');if(a&&5===n.dims.length&&2===n.dims[3])throw new Error("bias is not allowed for packed kv.")}let b=0;if(o){b=8;let e=o.dims;throw 1===e.length?e[0]===p?b=1:e[0]===3*p+2&&(b=3):2===e.length&&e[0]===p&&e[1]===h&&(b=5),8===b?new Error('Input "key_padding_mask" shape shall be (batch_size) or (batch_size, kv_sequence_length)'):new Error("Mask not supported")}let w=!1,v=f;if(a){if(3!==a.dims.length&&4!==a.dims.length)throw new Error('Input "value" is expected to have 3 or 4 dimensions');if(n.dims[0]!==a.dims[0])throw new Error('Input "query" and "value" shall have same dim 0 (batch_size)');if(3===a.dims.length){if(h!==a.dims[1])throw new Error('Input "key" and "value" shall have the same dim 1 (kv_sequence_length)');v=a.dims[2]}else{if(h!==a.dims[2])throw new Error('Input "past_key" and "past_value" shall have the same dim 2 (kv_sequence_length)');v=a.dims[1]*a.dims[3],w=!0}}let $=m+h;if(o)throw new Error("Key padding mask is not supported");if(s)throw new Error("extraAddQk is not supported");if(u)throw new Error("pastKey is not supported");if(l)throw new Error("pastValue is not supported");return{batchSize:p,sequenceLength:c,pastSequenceLength:m,kvSequenceLength:h,totalSequenceLength:$,maxSequenceLength:g,inputHiddenSize:0,hiddenSize:f,vHiddenSize:v,headSize:y,vHeadSize:Math.floor(v/t.numHeads),numHeads:t.numHeads,isUnidirectional:!1,pastPresentShareBuffer:!1,maskFilterValue:t.maskFilterValue,maskType:b,scale:t.scale,broadcastResPosBias:!1,passPastInKv:w,qkvFormat:d}},Oi=e=>pt({...e}),Ri=pt({perm:[0,2,1,3]}),zi=(e,t,n,r,a,i,o)=>{let s=[r,a,i],u=ht.size(s),l=[{type:"uint32",data:u},{type:"uint32",data:o},{type:"uint32",data:i}];return e.compute({name:"MultiHeadAttentionAddBias",shaderCache:{inputDependencies:["type","type"]},getRunData:()=>({outputs:[{dims:s,dataType:t.dataType,gpuDataType:0}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:l}),getShaderSource:e=>{let r=kt("qkv_with_bias",t.dataType,s),a=At("qkv",t.dataType,s),i=At("bias",n.dataType,s);return`\n ${e.registerUniforms([{name:"output_size",type:"u32"},{name:"bias_offset",type:"u32"},{name:"hidden_size",type:"u32"}]).declareVariables(a,i,r)}\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}\n let bias_offset_idx = (global_idx % uniforms.hidden_size) + uniforms.bias_offset;\n\n qkv_with_bias[global_idx] = qkv[global_idx] + bias[bias_offset_idx];\n }`}},{inputs:[t,n],outputs:[-1]})[0]},Bi=(e,t,n,r,a,i,o,s)=>{let u=i;if(o){if(1===r)throw new Error("AddBiasReshape is not implemented. Please export your model with packed QKV or KV");return u=zi(e,i,o,t,r,n*a,s),u=u.reshape([t,r,n,a]),e.compute(Wt(u,Ri.perm),{inputs:[u],outputs:[-1]})[0]}return 3===i.dims.length&&(u=i.reshape([t,r,n,a])),e.compute(Wt(u,Ri.perm),{inputs:[u],outputs:[-1]})[0]},Pi=(e,t)=>{let n=ki(e.inputs,t);if(5===e.inputs[0].dims.length)throw new Error("Packed QKV is not implemented");if(5===e.inputs[1]?.dims.length)throw new Error("Packed KV is not implemented");let r=e.inputs[1]&&e.inputs[2]&&4===e.inputs[1].dims.length&&4===e.inputs[2].dims.length,a=Bi(e,n.batchSize,n.numHeads,n.sequenceLength,n.headSize,e.inputs[0],e.inputs[3],0);if(r)return Fn(e,a,e.inputs[1],e.inputs[2],e.inputs[4],void 0,void 0,void 0,e.inputs[5],n,t);let i=Bi(e,n.batchSize,n.numHeads,n.kvSequenceLength,n.headSize,e.inputs[1],e.inputs[3],n.hiddenSize),o=Bi(e,n.batchSize,n.numHeads,n.kvSequenceLength,n.vHeadSize,e.inputs[2],e.inputs[3],2*n.hiddenSize);Fn(e,a,i,o,e.inputs[4],void 0,e.inputs[6],e.inputs[7],e.inputs[5],n,t)}})),su=U((()=>{$s(),Ts(),As(),Mi=e=>{if(!e||e.length<1)throw new Error("Too few inputs");if(1!==e[0].dataType&&10!==e[0].dataType)throw new Error("Input type must be float or float16.");if(e.length>=2){let t=2*e[0].dims.length===e[1].dims[0];if(4===e.length&&(t=2*e[3].dims[0]===e[1].dims[0]),!t)throw new Error("The pads should be a 1D tensor of shape [2 * input_rank] or [2 * num_axes].")}},Di=(e,t,n)=>{let r="";for(let a=t-1;a>=0;--a)r+=`\n k = i32(${e.indicesGet("indices",a)}) - ${It("uniforms.pads",a,n)};\n if (k < 0) {\n break;\n }\n if (k >= i32(${It("uniforms.x_shape",a,t)})) {\n break;\n }\n offset += k * i32(${It("uniforms.x_strides",a,t)});\n `;return`\n value = ${e.type.value}(uniforms.constant_value);\n for (var i = 0; i < 1; i++) {\n var offset = 0;\n var k = 0;\n ${r}\n value = x[offset];\n }\n `},Ni=(e,t,n)=>{let r="";for(let a=t-1;a>=0;--a)r+=`\n k = i32(${e.indicesGet("indices",a)}) - ${It("uniforms.pads",a,n)};\n if (k < 0) {\n k = -k;\n }\n {\n let _2n_1 = 2 * (i32(${It("uniforms.x_shape",a,t)}) - 1);\n k = k % _2n_1;\n if(k >= i32(${It("uniforms.x_shape",a,t)})) {\n k = _2n_1 - k;\n }\n }\n offset += k * i32(${It("uniforms.x_strides",a,t)});\n `;return`\n var offset = 0;\n var k = 0;\n ${r}\n value = x[offset];\n `},Wi=(e,t,n)=>{let r="";for(let a=t-1;a>=0;--a)r+=`\n k = i32(${e.indicesGet("indices",a)}) - ${It("uniforms.pads",a,n)};\n if (k < 0) {\n k = 0;\n }\n if (k >= i32(${It("uniforms.x_shape",a,t)})) {\n k = i32(${It("uniforms.x_shape",a,t)}) - 1;\n }\n offset += k * i32(${It("uniforms.x_strides",a,t)});\n `;return`\n var offset = 0;\n var k = 0;\n ${r}\n value = x[offset];\n `},Ui=(e,t,n)=>{let r="";for(let a=t-1;a>=0;--a)r+=`\n k = i32(${e.indicesGet("indices",a)}) - ${It("uniforms.pads",a,n)};\n if (k < 0) {\n k += i32(${It("uniforms.x_shape",a,t)}]);\n }\n if (k >= i32(${It("uniforms.x_shape",a,t)})) {\n k -= i32(${It("uniforms.x_shape",a,t)});\n }\n offset += k * i32(${It("uniforms.x_strides",a,t)});\n `;return`\n var offset = 0;\n var k = 0;\n ${r}\n value = x[offset];\n `},Vi=(e,t,n)=>{switch(n.mode){case 0:return Di(e,t,n.pads.length);case 1:return Ni(e,t,n.pads.length);case 2:return Wi(e,t,n.pads.length);case 3:return Ui(e,t,n.pads.length);default:throw new Error("Invalid mode")}},Hi=(e,t)=>{let n=ht.padShape(e[0].dims.slice(),t.pads),r=e[0].dims,a=[{type:"uint32",data:ht.size(n)},{type:"uint32",data:t.pads}];if(0===t.mode){let n=Le(e[0].dataType);a.push({type:n,data:t.value})}return a.push(..._t(e[0].dims),..._t(n)),{name:"Pad",shaderCache:{hint:`${t.mode}`,inputDependencies:["rank"]},getRunData:()=>({outputs:[{dims:n,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(ht.size(n)/64)},programUniforms:a}),getShaderSource:a=>{let i=kt("output",e[0].dataType,n.length),o=At("x",e[0].dataType,r.length),s=o.type.value,u=Vi(i,r.length,t),l=[{name:"output_size",type:"u32"},{name:"pads",type:"i32",length:t.pads.length}];return 0===t.mode&&l.push({name:"constant_value",type:s}),`\n ${a.registerUniforms(l).declareVariables(o,i)}\n ${a.mainStart()}\n ${a.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}\n\n let indices = ${i.offsetToIndices("global_idx")};\n\n var value = ${s}(0);\n ${u}\n output[global_idx] = value;\n }`}}},Li=(e,t)=>{if(e.length>1){let n=e[1].getBigInt64Array(),r=e.length>=3&&e[2].data?e[2].getFloat32Array()[0]:0,a=e[0].dims.length,i=new Int32Array(2*a).fill(0);if(e.length>=4){let t=e[3].getBigInt64Array();for(let e=0;ei[Number(t)]=Number(e)));let o=[];return i.forEach((e=>o.push(e))),{mode:t.mode,value:r,pads:o}}return t},Fi=(e,t)=>{Mi(e.inputs);let n=Li(e.inputs,t);e.compute(Hi(e.inputs,n),{inputs:[0]})}})),uu=U((()=>{ue(),Ts(),As(),Gi=e=>{if(p.webgpu.validateInputContent&&(!e||1!==e.length))throw new Error("Pool ops requires 1 input.")},ji=(e,t,n)=>{let r="NHWC"===t.format,a=e.dims.slice();r&&a.splice(1,0,a.pop());let i=Object.hasOwnProperty.call(t,"dilations"),o=t.kernelShape.slice(),s=t.strides.slice(),u=i?t.dilations.slice():[],l=t.pads.slice();mt.adjustPoolAttributes(n,a,o,s,u,l);let d=mt.computePoolOutputShape(n,a,s,u,o,l,t.autoPad),p=Object.assign({},t);i?Object.assign(p,{kernelShape:o,strides:s,pads:l,dilations:u,cacheKey:t.cacheKey}):Object.assign(p,{kernelShape:o,strides:s,pads:l,cacheKey:t.cacheKey});let c=d.slice();return c.push(c.splice(1,1)[0]),[p,r?c:d]},qi=(e,t)=>{let n="NHWC"===t.format,r=[{type:"uint32",data:ht.size(e)},{type:"uint32",data:ht.size(t.kernelShape)}],a=[{name:"outputSize",type:"u32"},{name:"kernelSize",type:"u32"}];if(t.kernelShape.length<=2){let e=t.kernelShape[t.kernelShape.length-1],n=t.strides[t.strides.length-1],i=t.pads[t.pads.length/2-1],o=t.pads[t.pads.length-1],s=!!(i+o);r.push({type:"uint32",data:e},{type:"uint32",data:n},{type:"uint32",data:i},{type:"uint32",data:o}),a.push({name:"kw",type:"u32"},{name:"sw",type:"u32"},{name:"pwStart",type:"u32"},{name:"pwEnd",type:"u32"});let u=!1;if(2===t.kernelShape.length){let e=t.kernelShape[t.kernelShape.length-2],n=t.strides[t.strides.length-2],i=t.pads[t.pads.length/2-2],o=t.pads[t.pads.length-2];u=!!(i+o),r.push({type:"uint32",data:e},{type:"uint32",data:n},{type:"uint32",data:i},{type:"uint32",data:o}),a.push({name:"kh",type:"u32"},{name:"sh",type:"u32"},{name:"phStart",type:"u32"},{name:"phEnd",type:"u32"})}return[r,a,!0,s,u]}{if(n)throw new Error("Pooling with kernelShape.length > 2 is not supported for NHWC format.");let e=ht.computeStrides(t.kernelShape);return r.push({type:"uint32",data:e},{type:"uint32",data:t.pads},{type:"uint32",data:t.strides}),a.push({name:"kernelStrides",type:"u32",length:e.length},{name:"pads",type:"u32",length:t.pads.length},{name:"strides",type:"u32",length:t.strides.length}),[r,a,!!t.pads.reduce(((e,t)=>e+t)),!1,!1]}},Ki=(e,t,n,r,a,i,o,s,u,l,d,p)=>{let c="NHWC"===a.format,f=t.type.value,h=kt("output",t.type.tensor,r);if(a.kernelShape.length<=2){let r="",l="",m="",g=n-(c?2:1);if(r=d?`\n for (var i: u32 = 0u; i < uniforms.kw; i++) {\n xIndices[${g}] = indices[${g}] * uniforms.sw - uniforms.pwStart + i;\n if (xIndices[${g}] < 0 || xIndices[${g}]\n >= uniforms.x_shape[${g}]) {\n pad++;\n continue;\n }\n let x_val = x[${t.indicesToOffset("xIndices")}];\n ${i}\n }`:`\n for (var i: u32 = 0u; i < uniforms.kw; i++) {\n xIndices[${g}] = indices[${g}] * uniforms.sw - uniforms.pwStart + i;\n let x_val = x[${t.indicesToOffset("xIndices")}];\n ${i}\n }`,2===a.kernelShape.length){let e=n-(c?3:2);l=p?`\n for (var j: u32 = 0u; j < uniforms.kh; j++) {\n xIndices[${e}] = indices[${e}] * uniforms.sh - uniforms.phStart + j;\n if (xIndices[${e}] < 0 || xIndices[${e}] >= uniforms.x_shape[${e}]) {\n pad += i32(uniforms.kw);\n continue;\n }\n `:`\n for (var j: u32 = 0u; j < uniforms.kh; j++) {\n xIndices[${e}] = indices[${e}] * uniforms.sh - uniforms.phStart + j;\n `,m="\n }\n "}return`\n ${e.registerUniforms(u).declareVariables(t,h)}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n\n let indices = ${h.offsetToIndices("global_idx")};\n var xIndices = ${h.offsetToIndices("global_idx")};\n\n var value = ${f}(${s});\n var pad = 0;\n ${l}\n ${r}\n ${m}\n ${o}\n\n output[global_idx] = value;\n }`}{if(c)throw new Error("Pooling with kernelShape.length > 2 is not supported for NHWC format.");let r=a.kernelShape.length,d=a.pads.length,p="";return p=l?`\n if (xIndices[j] >= uniforms.x_shape[j]) {\n pad++;\n isPad = true;\n break;\n }\n }\n if (!isPad) {\n let x_val = x[${t.indicesToOffset("xIndices")}];\n ${i}\n }`:`\n }\n let x_val = x[${t.indicesToOffset("xIndices")}];\n ${i}\n `,`\n ${e.registerUniforms(u).declareVariables(t,h)}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n let indices = ${h.offsetToIndices("global_idx")};\n var xIndices = ${h.offsetToIndices("global_idx")};\n\n var offsets: array;\n\n var value = ${f}(${s});\n var pad = 0;\n var isPad = false;\n\n for (var i: u32 = 0u; i < uniforms.kernelSize; i++) {\n var offset = i;\n for (var j = 0u; j < ${r-1}u; j++) {\n offsets[j] = offset / ${It("uniforms.kernelStrides","j",r)};\n offset -= offsets[j] * ${It("uniforms.kernelStrides","j",r)};\n }\n offsets[${r-1}] = offset;\n\n isPad = false;\n for (var j = ${n-r}u; j < ${n}u; j++) {\n xIndices[j] = indices[j] * ${It("uniforms.strides",`j - ${n-r}u`,r)}\n + offsets[j - ${n-r}u] - ${It("uniforms.pads","j - 2u",d)};\n ${p}\n }\n ${o}\n\n output[global_idx] = value;\n }`}},Yi=e=>`${e.format};${e.ceilMode};${e.autoPad};${e.kernelShape.length}`,Zi=e=>`${Yi(e)};${e.countIncludePad}`,Qi=e=>`${Yi(e)};${e.storageOrder};${e.dilations}`,Xi=e=>({format:e.format,autoPad:["NOTSET","VALID","SAME_UPPER","SAME_LOWER"][e.auto_pad],ceilMode:e.ceil_mode,kernelShape:e.kernel_shape,strides:e.strides,pads:e.pads}),Ji=(e,t,n,r)=>{let[a,i]=ji(t,r,n),o=At("x",t.dataType,t.dims.length),s=o.type.value,u="";a.countIncludePad?u+=`value /= ${s}(uniforms.kernelSize);`:u+=`value /= ${s}(i32(uniforms.kernelSize) - pad);`;let[l,d,p,c,f]=qi(i,a);return l.push(..._t(t.dims),..._t(i)),{name:e,shaderCache:{hint:`${r.cacheKey};${p};${c};${f}`,inputDependencies:["rank"]},getRunData:()=>({outputs:[{dims:i,dataType:t.dataType}],dispatchGroup:{x:Math.ceil(ht.size(i)/64)},programUniforms:l}),getShaderSource:e=>Ki(e,o,t.dims.length,i.length,a,"value += x_val;",u,0,d,p,c,f)}},eo=e=>{let t=0!==e.count_include_pad,n=Xi(e);if(0!==n.ceilMode)throw new Error("using ceil() in shape computation is not yet supported for AveragePool");let r={countIncludePad:t,...n,cacheKey:""};return{...r,cacheKey:Zi(r)}},to=(e,t)=>{Gi(e.inputs),e.compute(Ji("AveragePool",e.inputs[0],!1,t))},no={autoPad:"",ceilMode:0,countIncludePad:!1,kernelShape:[],strides:[],pads:[],storageOrder:0,dilations:[]},ro=e=>{let t=e.format;return{format:t,...no,cacheKey:t}},ao=(e,t)=>{Gi(e.inputs),e.compute(Ji("GlobalAveragePool",e.inputs[0],!0,t))},io=(e,t,n,r)=>{let[a,i]=ji(t,r,n),o=At("x",t.dataType,t.dims.length),[s,u,l,d,p]=qi(i,a);return s.push(..._t(t.dims),..._t(i)),{name:e,shaderCache:{hint:`${r.cacheKey};${l};${d};${p}`,inputDependencies:["rank"]},getRunData:()=>({outputs:[{dims:i,dataType:t.dataType}],dispatchGroup:{x:Math.ceil(ht.size(i)/64)},programUniforms:s}),getShaderSource:e=>Ki(e,o,t.dims.length,i.length,a,"\n value = max(x_val, value);\n ","",-1e5,u,l,d,p)}},oo=(e,t)=>{Gi(e.inputs),e.compute(io("MaxPool",e.inputs[0],!1,t))},so=e=>{let t=e.storage_order,n=e.dilations,r=Xi(e);if(0!==t)throw new Error("column major storage order is not yet supported for MaxPool");if(0!==r.ceilMode)throw new Error("using ceil() in shape computation is not yet supported for MaxPool");let a={storageOrder:t,dilations:n,...r,cacheKey:""};return{...a,cacheKey:Qi(a)}},uo=e=>{let t=e.format;return{format:t,...no,cacheKey:t}},lo=(e,t)=>{Gi(e.inputs),e.compute(io("GlobalMaxPool",e.inputs[0],!0,t))}})),lu=U((()=>{ue(),$s(),As(),po=(e,t,n)=>{if(e===t||et&&n>0)throw new Error("Range these inputs' contents are invalid.")},co=(e,t,n,r)=>{let a=Math.abs(Math.ceil((t-e)/n)),i=[a],o=a,s=Le(r),u=[{type:"uint32",data:o},{type:s,data:e},{type:s,data:n},..._t(i)];return{name:"Range",shaderCache:{hint:`${r}`},getShaderSource:e=>{let t=kt("output",r,i.length),n=t.type.value,a=[{name:"outputSize",type:"u32"},{name:"start",type:n},{name:"delta",type:n}];return`\n ${e.registerUniforms(a).declareVariables(t)}\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n output[global_idx] = uniforms.start + ${n}(global_idx) * uniforms.delta;\n }`},getRunData:()=>({outputs:[{dims:i,dataType:r}],dispatchGroup:{x:Math.ceil(o/64)},programUniforms:u})}},fo=e=>{let t=0,n=0,r=0;6===e.inputs[0].dataType?(t=e.inputs[0].getInt32Array()[0],n=e.inputs[1].getInt32Array()[0],r=e.inputs[2].getInt32Array()[0]):1===e.inputs[0].dataType&&(t=e.inputs[0].getFloat32Array()[0],n=e.inputs[1].getFloat32Array()[0],r=e.inputs[2].getFloat32Array()[0]),p.webgpu.validateInputContent&&po(t,n,r),e.compute(co(t,n,r,e.inputs[0].dataType),{inputs:[]})}})),du=U((()=>{Ts(),Is(),As(),ho=(e,t)=>{if(e.every((e=>e>0||(()=>{throw new Error("Resize requires scales input values to be positive")}))),e.length>0)if("linear"===t.mode){if(!(2===e.length||3===e.length||4===e.length&&1===e[0]&&1===e[1]||4===e.length&&1===e[0]&&1===e[3]||5===e.length&&1===e[0]&&1===e[1]))throw new Error("For linear mode, Resize requires scales to be 2D, 3D, 4D with either two outermost or one innermost and\n one outermost scale values equal to 1, or 5D with two outermost scale values equal to 1")}else if("cubic"===t.mode&&!(2===e.length||4===e.length&&1===e[0]&&1===e[1]||4===e.length&&1===e[0]&&1===e[3]))throw new Error("Resize requires scales input size to be 2 or 4 for cubic mode")},mo=(e,t,n)=>{t.every((e=>e>=0&&e{throw new Error("Resize requires axes input values to be positive and less than rank")})));let r=new Array(n).fill(1);return t.forEach(((t,n)=>r[t]=e[n])),r},go=(e,t,n,r,a,i)=>{let[o,s,u]=n>10?[1,2,3]:[-1,e.length>1?1:-1,-1],l=e[0].dims.length;if(o>0&&e.length>o&&e[o].dims.length>0)e[o].getFloat32Array().forEach((e=>i.push(e)));else if("tf_crop_and_resize"===t.coordinateTransformMode)throw new Error("Resize requires RoI input to be specified when coordinateTransformMode is tfCropAndResize");if(s>0&&e.length>s&&e[s].dims.length>0){if(e[s].getFloat32Array().forEach((e=>r.push(e))),0!==r.length&&r.length!==l&&n>=18&&r.length!==t.axes.length)throw new Error("Resize requires scales input size to be same as input rank or axes size for opset 18 and up");ho(r,t),t.axes.length>0&&mo(r,t.axes,l).forEach(((e,t)=>r[t]=e))}if(u>0&&e.length>u&&(e[u].getBigInt64Array().forEach((e=>a.push(Number(e)))),a.length!==l||n>=18&&a.length===t.axes.length))throw new Error("Resize requires sizes input size to be same as input rank or axes size for opset 18 and up");if(t.axes.length>0){if(r.length!==t.axes.length)throw new Error('Resize requires "scales" input size to be of axes rank when axes attributes is specified');if(a.length!==t.axes.length)throw new Error('Resize requires "sizes" input size to be of rank axes rank when axes attributes is specified')}if(typeof r<"u"&&typeof a<"u"&&r.length>0&&a.length>l)throw new Error("Resize requires only of scales or sizes to be specified")},yo=(e,t)=>`fn getOriginalCoordinateFromResizedCoordinate(xResized: u32, xScale: f32, lengthResized: u32,\n lengthOriginal: u32, roiStart: f32, roiEnd: f32) -> ${t} { `+(()=>{switch(e){case"asymmetric":return`return ${t}(xResized) / ${t}(xScale);`;case"pytorch_half_pixel":return`if (lengthResized > 1) {\n return (${t}(xResized) + 0.5) / ${t}(xScale) - 0.5;\n } else {\n return 0.0;\n }`;case"tf_half_pixel_for_nn":return`return (${t}(xResized) + 0.5) / ${t}(xScale);`;case"align_corners":return`if (lengthResized == 1) {\n return 0.0;\n } else {\n // The whole part and the fractional part are calculated separately due to inaccuracy of floating\n // point division. As an example, f32(21) / f32(7) may evaluate to 2.99... instead of 3, causing an\n // offset-by-one error later in floor().\n let whole = ${t}(xResized * (lengthOriginal - 1) / (lengthResized - 1));\n let fract =\n ${t}(xResized * (lengthOriginal - 1) % (lengthResized - 1)) / ${t}(lengthResized - 1);\n return whole + fract;\n }`;case"tf_crop_and_resize":return`if (lengthResized > 1) {\n return ${t}(roiStart) * ${t}(lengthOriginal - 1) +\n (${t}(xResized) * ${t}(roiEnd - roiStart) * ${t}(lengthOriginal - 1)) /\n ${t}(lengthResized - 1);\n } else {\n return 0.5 * ${t}(roiStart + roiEnd) * ${t}(lengthOriginal - 1);\n }`;case"half_pixel_symmetric":return`const outputWidth = ${t}xScale * ${t}(lengthResized);\n const adjustment = ${t}(lengthResized) / outputWidth;\n const center = ${t}(lengthOriginal) / 2;\n const offset = center * (1 - adjustment);\n return offset + ((${t}(xResized) + 0.5) / ${t}(xScale)) - 0.5;`;case"half_pixel":return`return ((${t}(xResized) + 0.5) / ${t}(xScale)) - 0.5;`;default:throw new Error(`Coordinate transform mode ${e} is not supported`)}})()+"}",bo=(e,t,n)=>`fn getNearestPixelFromOriginal(xOriginal: ${n}, isDownSample: bool) -> ${n} {`+(()=>{switch(e){case"round_prefer_ceil":return"if (fract(xOriginal) == 0.5) { return ceil(xOriginal); } else { return round(xOriginal); }";case"floor":return"return floor(xOriginal);";case"ceil":return"return ceil(xOriginal);";case"round_prefer_floor":return"if (fract(xOriginal) == 0.5) { return floor(xOriginal); } else { return round(xOriginal); }";default:if(t<11)return"if (isDownSample) { return ceil(xOriginal); } else { return xOriginal; }";throw new Error(`Nearest mode ${e} is not supported`)}})()+"}",wo=(e,t,n)=>{let r=new Array(n).fill(0).concat(new Array(n).fill(1)),a=0===e.length?r:e.slice();return t.length>0?(t.forEach(((e,i)=>{r[e]=a[i],r[i+n]=a[t.length+i]})),r):a},vo=(e,t,n,r)=>{let a=[];if(n.length>0)if(r.length>0){if(e.forEach((e=>a.push(e))),Math.max(...r)>e.length)throw new Error("axes is out of bound");r.forEach(((e,t)=>a[e]=n[t]))}else n.forEach((e=>a.push(e)));else{if(0===t.length)throw new Error("Resize requires either scales or sizes.");a=e.map(((e,n)=>Math.round(e*t[n])))}return a},$o=(e,t,n)=>{let r=(()=>{switch(n.keepAspectRatioPolicy){case"not_larger":return n.axes.length>0?Math.min(...n.axes.map((e=>t[e])),Number.MAX_VALUE):Math.min(...t,Number.MAX_VALUE);case"not_smaller":return n.axes.length>0?Math.max(...n.axes.map((e=>t[e])),Number.MIN_VALUE):Math.max(...t,Number.MIN_VALUE);default:throw new Error(`Keep aspect ratio policy ${n.keepAspectRatioPolicy} is not supported`)}})();t.fill(1,0,t.length);let a=e.slice();return n.axes.length>0?(n.axes.forEach((e=>t[e]=r)),n.axes.forEach((n=>a[n]=Math.round(e[n]*t[n])))):(t.fill(r,0,t.length),a.forEach(((e,n)=>a[n]=Math.round(e*t[n])))),a},_o=(e,t,n,r,a)=>`\n fn calculateOriginalIndicesFromOutputIndices(output_indices: ${e.type.indices}) -> array<${e.type.value}, ${n.length}> {\n var original_indices: array<${e.type.value}, ${n.length}>;\n for (var i:u32 = 0; i < ${n.length}; i++) {\n var output_index = ${e.indicesGet("output_indices","i")};\n var scale = ${It("uniforms.scales","i",r)};\n var roi_low = ${It("uniforms.roi","i",a)};\n var roi_hi = ${It("uniforms.roi",`i + ${t.length}`,a)};\n if (scale == 1.0) {\n original_indices[i] = ${e.type.value}(output_index);\n } else {\n var input_shape_i = ${It("uniforms.input_shape","i",t.length)};\n var output_shape_i = ${It("uniforms.output_shape","i",n.length)};\n original_indices[i] = getOriginalCoordinateFromResizedCoordinate(output_index, scale, output_shape_i,\n input_shape_i, roi_low, roi_hi);\n }\n }\n return original_indices;\n }`,xo=(e,t,n,r,a,i,o)=>`\n fn calculateInputIndicesFromOutputIndices(output_indices: ${t.type.indices}) -> ${e.type.indices} {\n var input_indices: ${e.type.indices};\n for (var i:u32 = 0; i < ${r.length}; i++) {\n var output_index = ${t.indicesGet("output_indices","i")};\n var input_index: u32;\n var scale = ${It("uniforms.scales","i",a)};\n if (scale == 1.0) {\n input_index = output_index;\n } else {\n var roi_low = ${It("uniforms.roi","i",i)};\n var roi_hi = ${It("uniforms.roi",`i + ${n.length}`,i)};\n var input_shape_i = ${It("uniforms.input_shape","i",n.length)};\n var output_shape_i = ${It("uniforms.output_shape","i",r.length)};\n var original_idx = getOriginalCoordinateFromResizedCoordinate(output_index, scale, output_shape_i,\n input_shape_i, roi_low, roi_hi);\n if (!${o} || (original_idx >= 0 && original_idx < ${t.type.value}(input_shape_i))) {\n if (original_idx < 0) {\n input_index = 0;\n } else if (original_idx > ${t.type.value}(input_shape_i - 1)) {\n input_index = input_shape_i - 1;\n } else {\n input_index = u32(getNearestPixelFromOriginal(original_idx, scale < 1));\n }\n } else {\n input_index = u32(original_idx);\n }\n }\n ${e.indicesSet("input_indices","i"," input_index")}\n }\n return input_indices;\n }`,So=(e,t)=>`\n fn checkInputIndices(input_indices: ${e.type.indices}) -> bool {\n for (var i:u32 = 0; i < ${t.length}; i++) {\n var input_index = ${e.indicesGet("input_indices","i")};\n if (input_index < 0 || input_index >= ${It("uniforms.input_shape","i",t.length)}) {\n return false;\n }\n }\n return true;\n }`,Co=(e,t,n,r)=>e.rank>r?`\n ${e.indicesSet("input_indices",t,"channel")};\n ${e.indicesSet("input_indices",n,"batch")};\n`:"",Eo=(e,t,n,r,a)=>{let[i,o,s,u]=2===n.length?[-1,0,1,-1]:[0,2,3,1],l=e.type.value;return`\n fn getInputValue(batch: u32, channel: u32, row: u32, col: u32) -> ${l} {\n var input_indices: ${e.type.indices};\n ${e.indicesSet("input_indices",o,`max(0, min(row, ${n[o]} - 1))`)};\n ${e.indicesSet("input_indices",s,`max(0, min(col, ${n[s]} - 1))`)};\n ${Co(e,u,i,2)}\n return ${e.getByIndices("input_indices")};\n }\n\n fn bilinearInterpolation(output_indices: ${t.type.indices}) -> ${l} {\n var originalIndices = calculateOriginalIndicesFromOutputIndices(output_indices);\n var row:${l} = originalIndices[${o}];\n var col:${l} = originalIndices[${s}];\n ${r?`if (row < 0 || row > (${n[o]} - 1) || col < 0 || col > (${n[s]} - 1)) {\n return ${a};\n }`:""};\n row = max(0, min(row, ${n[o]} - 1));\n col = max(0, min(col, ${n[s]} - 1));\n var row1: u32 = u32(row);\n var col1: u32 = u32(col);\n var row2: u32 = u32(row + 1);\n var col2: u32 = u32(col + 1);\n var channel: u32 = ${n.length>2?`u32(originalIndices[${u}])`:"0"};\n var batch: u32 = ${n.length>2?`u32(originalIndices[${i}])`:"0"};\n var x11: ${l} = getInputValue(batch, channel, row1, col1);\n var x12: ${l} = getInputValue(batch, channel, row1, col2);\n var x21: ${l} = getInputValue(batch, channel, row2, col1);\n var x22: ${l} = getInputValue(batch, channel, row2, col2);\n var dx1: ${l} = abs(row - ${l}(row1));\n var dx2: ${l} = abs(${l}(row2) - row);\n var dy1: ${l} = abs(col - ${l}(col1));\n var dy2: ${l} = abs(${l}(col2) - col);\n if (row1 == row2) {\n dx1 = 0.5;\n dx2 = 0.5;\n }\n if (col1 == col2) {\n dy1 = 0.5;\n dy2 = 0.5;\n }\n return (x11 * dx2 * dy2 + x12 * dx2 * dy1 + x21 * dx1 * dy2 + x22 * dx1 * dy1);\n }`},Io=(e,t,n,r,a,i,o,s,u,l)=>{let d=2===n.length,[p,c]=d?[0,1]:[2,3],f=e.type.value,h=o=>{let d=o===p?"row":"col";return`\n fn ${d}CubicInterpolation(input_indices: ${e.type.indices}, output_indices: ${t.type.indices}) -> ${f} {\n var output_index = ${t.indicesGet("output_indices",o)};\n var originalIdx: ${f} = getOriginalCoordinateFromResizedCoordinate(output_index, ${a[o]},\n ${r[o]}, ${n[o]}, ${i[o]}, ${i[o]} + ${n.length});\n var fractOriginalIdx: ${f} = originalIdx - floor(originalIdx);\n var coefs = getCubicInterpolationCoefs(fractOriginalIdx);\n\n if (${s} && (originalIdx < 0 || originalIdx > (${n[o]} - 1))) {\n return ${u};\n }\n var data: array<${f}, 4> = array<${f}, 4>(0.0, 0.0, 0.0, 0.0);\n for (var i: i32 = -1; i < 3; i++) {\n var ${d}: ${f} = originalIdx + ${f}(i);\n if (${d} < 0 || ${d} >= ${n[o]}) {\n ${l?"coefs[i + 1] = 0.0;\n continue;":s?`return ${u};`:`${d} = max(0, min(${d}, ${n[o]} - 1));`};\n }\n var input_indices_copy: ${e.type.indices} = input_indices;\n ${e.indicesSet("input_indices_copy",o,`u32(${d})`)};\n data[i + 1] = ${o===p?e.getByIndices("input_indices_copy"):"rowCubicInterpolation(input_indices_copy, output_indices)"};\n }\n return cubicInterpolation1D(data, coefs);\n }`};return`\n ${h(p)};\n ${h(c)};\n fn getCubicInterpolationCoefs(s: ${f}) -> array<${f}, 4> {\n var absS = abs(s);\n var coeffs: array<${f}, 4> = array<${f}, 4>(0.0, 0.0, 0.0, 0.0);\n var oneMinusAbsS: ${f} = 1.0 - absS;\n var twoMinusAbsS: ${f} = 2.0 - absS;\n var onePlusAbsS: ${f} = 1.0 + absS;\n coeffs[0] = ((${o} * onePlusAbsS - 5 * ${o}) * onePlusAbsS + 8 * ${o}) * onePlusAbsS - 4 * ${o};\n coeffs[1] = ((${o} + 2) * absS - (${o} + 3)) * absS * absS + 1;\n coeffs[2] = ((${o} + 2) * oneMinusAbsS - (${o} + 3)) * oneMinusAbsS * oneMinusAbsS + 1;\n coeffs[3] = ((${o} * twoMinusAbsS - 5 * ${o}) * twoMinusAbsS + 8 * ${o}) * twoMinusAbsS - 4 * ${o};\n return coeffs;\n }\n\n fn cubicInterpolation1D(x: array<${f}, 4>, coefs: array<${f}, 4>) -> ${f} {\n var coefsSum: ${f} = coefs[0] + coefs[1] + coefs[2] + coefs[3];\n return (x[0] * coefs[0] + x[1] * coefs[1]+ x[2] * coefs[2]+ x[3] * coefs[3]) / coefsSum;\n }\n\n fn bicubicInterpolation(output_indices: ${t.type.indices}) -> ${f} {\n var input_indices: ${e.type.indices} = output_indices;\n return colCubicInterpolation(input_indices, output_indices);\n }\n `},To=(e,t,n,r,a)=>{let[i,o,s,u,l]=3===n.length?[-1,0,1,2,-1]:[0,2,3,4,1],d=e.type.value;return`\n fn getInputValue(batch: u32, channel: u32, depth:u32, height: u32, width: u32) -> ${d} {\n var input_indices: ${e.type.indices};\n ${e.indicesSet("input_indices",o,`max(0, min(depth, ${n[o]} - 1))`)};\n ${e.indicesSet("input_indices",s,`max(0, min(height, ${n[s]} - 1))`)};\n ${e.indicesSet("input_indices",u,`max(0, min(width, ${n[u]} - 1))`)};\n ${Co(e,l,i,3)}\n return ${e.getByIndices("input_indices")};\n }\n\n fn trilinearInterpolation(output_indices: ${t.type.indices}) -> ${d} {\n var originalIndices = calculateOriginalIndicesFromOutputIndices(output_indices);\n var depth:${d} = originalIndices[${o}];\n var height:${d} = originalIndices[${s}];\n var width:${d} = originalIndices[${u}];\n ${r?`if (depth < 0 || depth > (${n[o]} - 1) || height < 0 || height > (${n[s]} - 1) || width < 0 || (width > ${n[u]} - 1)) {\n return ${a};\n }`:""};\n\n depth = max(0, min(depth, ${n[o]} - 1));\n height = max(0, min(height, ${n[s]} - 1));\n width = max(0, min(width, ${n[u]} - 1));\n var depth1: u32 = u32(depth);\n var height1: u32 = u32(height);\n var width1: u32 = u32(width);\n var depth2: u32 = u32(depth + 1);\n var height2: u32 = u32(height + 1);\n var width2: u32 = u32(width + 1);\n var channel: u32 = ${n.length>3?`u32(originalIndices[${l}])`:"0"};\n var batch: u32 = ${n.length>3?`u32(originalIndices[${i}])`:"0"};\n\n var x111: ${d} = getInputValue(batch, channel, depth1, height1, width1);\n var x112: ${d} = getInputValue(batch, channel, depth1, height1, width2);\n var x121: ${d} = getInputValue(batch, channel, depth1, height2, width1);\n var x122: ${d} = getInputValue(batch, channel, depth1, height2, width2);\n var x211: ${d} = getInputValue(batch, channel, depth2, height1, width1);\n var x212: ${d} = getInputValue(batch, channel, depth2, height1, width2);\n var x221: ${d} = getInputValue(batch, channel, depth2, height2, width1);\n var x222: ${d} = getInputValue(batch, channel, depth2, height2, width2);\n var dx1: ${d} = abs(depth - ${d}(depth1));\n var dx2: ${d} = abs(${d}(depth2) - depth);\n var dy1: ${d} = abs(height - ${d}(height1));\n var dy2: ${d} = abs(${d}(height2) - height);\n var dz1: ${d} = abs(width - ${d}(width1));\n var dz2: ${d} = abs(${d}(width2) - width);\n if (depth1 == depth2) {\n dx1 = 0.5;\n dx2 = 0.5;\n }\n if (height1 == height2) {\n dy1 = 0.5;\n dy2 = 0.5;\n }\n if (width1 == width2) {\n dz1 = 0.5;\n dz2 = 0.5;\n }\n return (x111 * dx2 * dy2 * dz2 + x112 * dx2 * dy2 * dz1 + x121 * dx2 * dy1 *dz2 + x122 * dx2 * dy1 * dz1 +\n x211 * dx1 * dy2 * dz2 + x212 * dx1 * dy2 * dz1 + x221 * dx1 * dy1 *dz2 + x222 * dx1 * dy1 * dz1);\n }`},Ao=(e,t,n,r,a,i)=>{let o=e.dims,s=wo(i,t.axes,o.length),u=vo(o,r,a,t.axes),l=r.slice();0===r.length&&(l=o.map(((e,t)=>0===e?1:u[t]/e)),"stretch"!==t.keepAspectRatioPolicy&&(u=$o(o,l,t)));let d=kt("output",e.dataType,u.length),p=At("input",e.dataType,o.length),c=ht.size(u),f=o.length===u.length&&o.every(((e,t)=>e===u[t])),h="tf_crop_and_resize"===t.coordinateTransformMode,m=t.extrapolationValue,g=p.type.value;return{name:"Resize",shaderCache:{hint:`${t.cacheKey}|${n}|${l.length>0?l:""}|${a.length>0?a:""}|${s.length>0?s:""}|${f}|${o}`,inputDependencies:["rank"]},getShaderSource:e=>`\n ${f?"":`\n ${yo(t.coordinateTransformMode,g)};\n ${(()=>{switch(t.mode){case"nearest":return`\n ${So(p,o)};\n ${bo(t.nearestMode,n,g)};\n ${xo(p,d,o,u,l.length,s.length,h)};\n `;case"linear":return`\n ${_o(d,o,u,l.length,s.length)};\n ${(()=>{if(2===o.length||4===o.length)return`${Eo(p,d,o,h,m)}`;if(3===o.length||5===o.length)return`${To(p,d,o,h,m)}`;throw Error("Linear mode only supports input dims 2, 3, 4 and 5 are supported in linear mode.")})()};\n `;case"cubic":return`\n ${(()=>{if(2===o.length||4===o.length)return`${Io(p,d,o,u,l,s,t.cubicCoeffA,h,t.extrapolationValue,t.excludeOutside)}`;throw Error("Cubic mode only supports input dims 2 and 4 are supported in linear mode.")})()};\n `;default:throw Error("Invalid resize mode")}})()};\n `}\n ${e.registerUniform("output_size","u32").registerUniform("scales","f32",l.length).registerUniform("roi","f32",s.length).declareVariables(p,d)}\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}\n ${f?"output[global_idx] = input[global_idx];":`\n let output_indices = ${d.offsetToIndices("global_idx")};\n var input_indices: ${p.type.indices};\n ${(()=>{switch(t.mode){case"nearest":return`input_indices = calculateInputIndicesFromOutputIndices(output_indices);\n if (checkInputIndices(input_indices)) {\n output[global_idx] = ${p.getByIndices("input_indices")};\n } else {\n output[global_idx] = ${t.extrapolationValue};\n }`;case"linear":return`output[global_idx] = ${2===o.length||4===o.length?"bilinearInterpolation":"trilinearInterpolation"}(output_indices);`;case"cubic":return"output[global_idx] = bicubicInterpolation(output_indices);";default:throw Error(`Unsupported resize mode: ${t.mode}`)}})()};\n`}\n }`,getRunData:()=>({outputs:[{dims:u,dataType:e.dataType}],dispatchGroup:{x:Math.ceil(c/64)},programUniforms:[{type:"uint32",data:c},{type:"float32",data:l},{type:"float32",data:s},..._t(o),..._t(u)]})}},ko=e=>{let t=e.customDataBuffer;return new Uint32Array(t,t.byteOffset,1)[0]},Oo=(e,t)=>{let n=[],r=[],a=[],i=ko(e);if(0!==t.antialias)throw Error("Only default value (0) for Antialias attribute is supported");go(e.inputs,t,i,n,r,a),e.compute(Ao(e.inputs[0],t,i,n,r,a),{inputs:[0]})},Ro=e=>{let t=e.antialias,n=e.axes,r=e.coordinateTransformMode,a=e.cubicCoeffA,i=0!==e.excludeOutside,o=e.extrapolationValue,s=e.keepAspectRatioPolicy,u=e.mode,l=""===e.nearestMode?"simple":e.nearestMode;return pt({antialias:t,axes:n,coordinateTransformMode:r,cubicCoeffA:a,excludeOutside:i,extrapolationValue:o,keepAspectRatioPolicy:s,mode:u,nearestMode:l})}})),pu=U((()=>{$s(),Ts(),As(),zo=e=>{if(!e||e.length<3)throw new Error("layerNorm requires at least 3 inputs.");let t=e[0],n=e[1],r=e[2];if(t.dataType!==n.dataType||t.dataType!==r.dataType)throw new Error("All inputs must have the same data type");if(3!==t.dims.length&&2!==t.dims.length)throw new Error("Input must be 2D or 3D");if(3!==n.dims.length&&2!==n.dims.length)throw new Error("Skip must be 2D or 3D");let a=t.dims[t.dims.length-1],i=t.dims[t.dims.length-2];if(n.dims[n.dims.length-1]!==a)throw new Error("Skip must have the same hidden size as input");if(n.dims[n.dims.length-2]!==i)throw new Error("Skip must have the same sequence length as input");if(1!==r.dims.length)throw new Error("Gamma must be 1D");if(r.dims[r.dims.length-1]!==a)throw new Error("Gamma must have the same hidden size as input");if(e.length>3){let t=e[3];if(1!==t.dims.length)throw new Error("Beta must be 1D");if(t.dims[t.dims.length-1]!==a)throw new Error("Beta must have the same hidden size as input")}if(e.length>4){let t=e[4];if(1!==t.dims.length)throw new Error("Bias must be 1D");if(t.dims[t.dims.length-1]!==a)throw new Error("Bias must have the same hidden size as input")}},Bo=(e,t,n,r)=>{let a=e[0].dims,i=ht.size(a),o=a,s=i,u=a.slice(-1)[0],l=r?a.slice(0,-1).concat(1):[],d=e.length>3,p=e.length>4,c=r&&n>1,f=r&&n>2,h=n>3,m=xt(u),g=[{type:"uint32",data:s},{type:"uint32",data:m},{type:"uint32",data:u},{type:"float32",data:t.epsilon}],y=[{dims:o,dataType:e[0].dataType}];return n>1&&y.push({dims:l,dataType:1}),n>2&&y.push({dims:l,dataType:1}),n>3&&y.push({dims:a,dataType:e[0].dataType}),{name:"SkipLayerNormalization",shaderCache:{hint:`${m};${c};${f};${h}`,inputDependencies:e.map(((e,t)=>"type"))},getShaderSource:t=>{let n=[At("x",e[0].dataType,e[0].dims,m),At("skip",e[1].dataType,e[1].dims,m),At("gamma",e[2].dataType,e[2].dims,m)];d&&n.push(At("beta",e[3].dataType,e[3].dims,m)),p&&n.push(At("bias",e[4].dataType,e[4].dims,m)),n.push(kt("output",e[0].dataType,o,m)),c&&n.push(kt("mean_output",1,l)),f&&n.push(kt("inv_std_output",1,l)),h&&n.push(kt("input_skip_bias_sum",e[0].dataType,o,m));let r=vt(e[0].dataType);return`\n\n ${t.registerUniforms([{name:"output_size",type:"u32"},{name:"components",type:"u32"},{name:"hidden_size",type:"u32"},{name:"epsilon",type:"f32"}]).declareVariables(...n)}\n\n ${t.mainStart()}\n ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size / uniforms.hidden_size")}\n let hidden_size_vectorized: u32 = uniforms.hidden_size / uniforms.components;\n let offset = global_idx * hidden_size_vectorized;\n var sum = ${St("f32",m)};\n var squareSum = ${St("f32",m)};\n for (var i: u32 = 0; i < hidden_size_vectorized; i++) {\n let skip_value = skip[offset + i];\n let bias_value = ${p?"bias[i]":"0.0"};\n let input_value = x[offset + i];\n let value = input_value + skip_value + bias_value;\n ${h?"input_skip_bias_sum[offset + i] = value;":""}\n output[offset + i] = value;\n let f32_value = ${Ct(r,m,"value")};\n sum += f32_value;\n squareSum += f32_value * f32_value;\n }\n let mean = ${Et("sum",m)} / f32(uniforms.hidden_size);\n let inv_std_dev = inverseSqrt(${Et("squareSum",m)} / f32(uniforms.hidden_size) - mean * mean + uniforms.epsilon);\n ${c?"mean_output[global_idx] = mean;":""}\n ${f?"inv_std_output[global_idx] = inv_std_dev;":""}\n for (var i: u32 = 0; i < hidden_size_vectorized; i++) {\n output[offset + i] = (output[offset + i] - ${r}(mean)) * ${r}(inv_std_dev) * gamma[i] + ${d?"beta[i]":"0.0"};\n }\n }`},getRunData:()=>({outputs:y,dispatchGroup:{x:Math.ceil(s/u/64)},programUniforms:g})}},Po=(e,t)=>{zo(e.inputs);let n=[0];e.outputCount>1&&n.push(-3),e.outputCount>2&&n.push(-3),e.outputCount>3&&n.push(3),e.compute(Bo(e.inputs,t,e.outputCount,!1),{outputs:n})}})),cu=U((()=>{$s(),Ts(),Is(),As(),Mo=(e,t)=>{if(!e||e.length<1)throw new Error("too few inputs");if(0!==t.axes.length){if(t.axes.length!==t.starts.length||t.axes.length!==t.ends.length)throw new Error("axes, starts and ends must have the same length")}else if(t.starts.length!==t.ends.length)throw new Error("starts and ends must have the same length");e.slice(1).forEach(((t,n)=>{if(6!==e[n+1].dataType&&7!==e[n+1].dataType)throw new Error(`Input ${n} must be an array of int32 or int64`)}))},Do=(e,t)=>{let n=[];if(e.length>t)if(7===e[t].dataType)e[t].getBigInt64Array().forEach((e=>n.push(Number(e))));else{if(6!==e[t].dataType)throw new Error(`Input ${t} must be an array of int32 or int64`);e[t].getInt32Array().forEach((e=>n.push(Number(e))))}return n},No=(e,t)=>{if(e.length>1){let t=Do(e,1),n=Do(e,2),r=Do(e,3);return 0===r.length&&(r=[...Array(e[0].dims.length).keys()]),pt({starts:t,ends:n,axes:r})}return t},Wo=(e,t,n,r,a)=>{let i=e;return e<0&&(i+=n[r[t]]),a[t]<0?Math.max(0,Math.min(i,n[r[t]]-1)):Math.max(0,Math.min(i,n[r[t]]))},Uo=(e,t,n)=>`fn calculateInputIndices(output_indices: ${t.type.indices}) -> ${e.type.indices} {\n var input_indices: ${e.type.indices};\n var carry = 0u;\n for (var i = ${n.length}; i >= 0; i--) {\n let input_shape_i = ${It("uniforms.input_shape","i",n.length)};\n let steps_i = ${It("uniforms.steps","i",n.length)};\n let signs_i = ${It("uniforms.signs","i",n.length)};\n let starts_i = ${It("uniforms.starts","i",n.length)};\n var output_index = ${t.indicesGet("output_indices","i")};\n var input_index = output_index * steps_i + starts_i + carry;\n carry = input_index / input_shape_i;\n input_index = input_index % input_shape_i;\n if (signs_i < 0) {\n input_index = input_shape_i - input_index - 1u + starts_i;\n }\n ${e.indicesSet("input_indices","i","input_index")};\n }\n return input_indices;\n }`,Vo=(e,t)=>{let n=e[0].dims,r=ht.size(n),a=t.axes.length>0?ht.normalizeAxes(t.axes,n.length):[...Array(n.length).keys()],i=Do(e,4);i.forEach((e=>0!==e||(()=>{throw new Error("step cannot be 0")}))),0===i.length&&(i=Array(a.length).fill(1));let o=t.starts.map(((e,t)=>Wo(e,t,n,a,i))),s=t.ends.map(((e,t)=>Wo(e,t,n,a,i)));if(a.length!==o.length||a.length!==s.length)throw new Error("start, ends and axes should have the same number of elements");if(a.length!==n.length)for(let e=0;eMath.sign(e)));i.forEach(((e,t,n)=>{if(e<0){let r=(s[t]-o[t])/e,a=o[t],u=a+r*i[t];o[t]=u,s[t]=a,n[t]=-e}}));let l=n.slice(0);a.forEach(((e,t)=>{l[e]=Math.ceil((s[e]-o[e])/i[e])}));let d={dims:l,dataType:e[0].dataType},p=kt("output",e[0].dataType,l.length),c=At("input",e[0].dataType,e[0].dims.length),f=ht.size(l),h=[{name:"outputSize",type:"u32"},{name:"starts",type:"u32",length:o.length},{name:"signs",type:"i32",length:u.length},{name:"steps",type:"u32",length:i.length}],m=[{type:"uint32",data:f},{type:"uint32",data:o},{type:"int32",data:u},{type:"uint32",data:i},..._t(e[0].dims),..._t(l)];return{name:"Slice",shaderCache:{hint:`${u.length}_${o.length}_${i.length}`,inputDependencies:["rank"]},getShaderSource:e=>`\n ${e.registerUniforms(h).declareVariables(c,p)}\n ${Uo(c,p,n)}\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n let output_indices = ${p.offsetToIndices("global_idx")};\n let input_indices = calculateInputIndices(output_indices);\n ${p.setByOffset("global_idx",c.getByIndices("input_indices"))}\n }`,getRunData:()=>({outputs:[d],dispatchGroup:{x:Math.ceil(r/64)},programUniforms:m})}},Ho=(e,t)=>{Mo(e.inputs,t);let n=No(e.inputs,t);e.compute(Vo(e.inputs,n),{inputs:[0]})},Lo=e=>{let t=e.starts,n=e.ends,r=e.axes;return pt({starts:t,ends:n,axes:r})}})),fu=U((()=>{Ts(),Is(),As(),Fo=e=>{if(!e||1!==e.length)throw new Error("Softmax op requires 1 input.")},Go=(e,t)=>{let n=e.dims,r=ht.size(n),a=t.axis;if(a<0&&(a=n.length+a),a({outputs:[{dims:n,dataType:e.dataType}],dispatchGroup:{x:o},programUniforms:[{type:"uint32",data:u}]}),getShaderSource:e=>`\n var rowMaxShared : ${p};\n var rowSumShared : ${p};\n var threadShared : array<${p}, 64>;\n\n fn getValue(row: i32, col: i32, row_stride: i32) -> ${p} {\n let index = row * row_stride + col;\n return x[index];\n }\n\n fn setValue(row: i32, col: i32, row_stride: i32, value: ${p}) {\n let index = row * row_stride + col;\n result[index] = value;\n }\n ${e.registerUniform("packedCols","i32").declareVariables(l,d)}\n ${e.mainStart()}\n let gindex = i32(global_idx);\n let lindex = i32(local_idx);\n const wg = 64;\n let row = gindex / wg;\n let cols = uniforms.packedCols;\n let row_stride : i32 = uniforms.packedCols;\n\n // find the rows max\n ${c}\n for (var col = lindex; col < cols; col += wg) {\n let value = getValue(row, col, row_stride);\n threadMax = max(threadMax, value);\n }\n if (lindex < cols) {\n threadShared[lindex] = threadMax;\n }\n workgroupBarrier();\n\n var reduceSize = min(cols, wg);\n for (var currSize = reduceSize >> 1; currSize > 0; currSize = reduceSize >> 1) {\n reduceSize = currSize + (reduceSize & 1);\n if (lindex < currSize) {\n threadShared[lindex] = max(threadShared[lindex], threadShared[lindex + reduceSize]);\n }\n workgroupBarrier();\n }\n if (lindex == 0) {\n rowMaxShared = ${p}(${((e,t)=>4===t?`max(max(${e}.x, ${e}.y), max(${e}.z, ${e}.w))`:2===t?`max(${e}.x, ${e}.y)`:3===t?`max(max(${e}.x, ${e}.y), ${e}.z)`:e)("threadShared[0]",s)});\n }\n workgroupBarrier();\n\n // find the rows sum\n var threadSum = ${p}(0.0);\n for (var col = lindex; col < cols; col += wg) {\n let subExp = exp(getValue(row, col, row_stride) - rowMaxShared);\n threadSum += subExp;\n }\n threadShared[lindex] = threadSum;\n workgroupBarrier();\n\n for (var currSize = wg >> 1; currSize > 0; currSize = currSize >> 1) {\n if (lindex < currSize) {\n threadShared[lindex] = threadShared[lindex] + threadShared[lindex + currSize];\n }\n workgroupBarrier();\n }\n if (lindex == 0) {\n rowSumShared = ${p}(${Et("threadShared[0]",s)});\n }\n workgroupBarrier();\n\n // calculate final value for each element in the row\n for (var col = lindex; col < cols; col += wg) {\n let value = exp(getValue(row, col, row_stride) - rowMaxShared) / rowSumShared;\n setValue(row, col, row_stride, value);\n }\n }`}},jo=(e,t)=>{Fo(e.inputs),e.compute(Go(e.inputs[0],t))},qo=e=>pt({axis:e.axis})})),hu=U((()=>{Ts(),Is(),As(),Ko=e=>{if(!e||e.length<1)throw new Error("too few inputs")},Yo=(e,t)=>{let n=[],r=t.numOutputs;return e[1].dims[0]>0&&(e[1].getBigInt64Array().forEach((e=>n.push(Number(e)))),r=n.length),pt({numOutputs:r,axis:t.axis,splitSizes:n})},Zo=e=>`\nfn calculateOutputIndex(index: u32) -> u32 {\n for (var i: u32 = 0u; i < ${e}u; i += 1u ) {\n if (index < ${It("uniforms.size_in_split_axis","i",e)}) {\n return i;\n }\n }\n return ${e}u;\n}`,Qo=e=>{let t=e.length,n=[];for(let r=0;r{let n=e[0].dims,r=ht.size(n),a=e[0].dataType,i=ht.normalizeAxis(t.axis,n.length),o=new Array(t.numOutputs),s=At("input",a,n),u=new Array(t.numOutputs),l=[],d=[],p=0,c=[{type:"uint32",data:r}];for(let r=0;rc.push(..._t(e)))),{name:"Split",shaderCache:{hint:t.cacheKey,inputDependencies:["rank"]},getShaderSource:e=>`\n ${e.registerUniform("input_size","u32").registerUniform("size_in_split_axis","u32",u.length).declareVariables(s,...o)}\n ${Zo(u.length)}\n ${Qo(o)}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.input_size")}\n\n var indices = ${s.offsetToIndices("global_idx")};\n var index = ${s.indicesGet("indices",i)};\n let output_number = calculateOutputIndex(index);\n if (output_number != 0) {\n index -= ${It("uniforms.size_in_split_axis","output_number - 1u",u.length)};\n ${s.indicesSet("indices",i,"index")};\n }\n writeBufferData(output_number, indices, global_idx);\n }`,getRunData:()=>({outputs:l,dispatchGroup:{x:Math.ceil(r/64)},programUniforms:c})}},Jo=(e,t)=>{Ko(e.inputs);let n=1===e.inputs.length?t:Yo(e.inputs,t);e.compute(Xo(e.inputs,n),{inputs:[0]})},es=e=>{let t=e.axis,n=e.splitSizes,r=e.numOutputs<0?n.length:e.numOutputs;if(r!==n.length)throw new Error("numOutputs and splitSizes lengh must be equal");return pt({axis:t,numOutputs:r,splitSizes:n})}})),mu=U((()=>{$s(),Ts(),As(),ts=e=>Array.from(e.getBigInt64Array(),Number),ns=e=>{if(!e||2!==e.length)throw new Error("Tile requires 2 inputs.");if(1!==e[0].dataType&&6!==e[0].dataType&&12!==e[0].dataType)throw new Error("Tile only support float, int32, and uint32 data types");if(7!==e[1].dataType)throw new Error("Tile `repeats` input should be of int64 data type");if(1!==e[1].dims.length)throw new Error("Tile `repeats` input should be 1-D");if(ts(e[1]).length!==e[0].dims.length)throw new Error("Tile `repeats` input should have same number of elements as rank of input data tensor")},rs=(e,t)=>{let n=[];for(let r=0;r{let t=e[0].dims,n=ts(e[1]),r=rs(t,n),a=ht.size(r),i=e[0].dataType,o=At("input",i,t.length),s=kt("output",i,r.length);return{name:"Tile",shaderCache:{hint:`${n}`,inputDependencies:["rank"]},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:[{type:"uint32",data:a},..._t(e[0].dims),..._t(r)]}),getShaderSource:e=>`\n const inputShape = ${o.indices(...t)};\n ${e.registerUniform("output_size","u32").declareVariables(o,s)}\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}\n let output_indices = ${s.offsetToIndices("global_idx")};\n var input_indices: ${o.type.indices};\n for (var i = 0; i < ${t.length}; i++) {\n let input_dim_i = ${o.indicesGet("uniforms.input_shape","i")};\n let input_dim_value = ${s.indicesGet("output_indices","i")} % input_dim_i;\n\n ${o.indicesSet("input_indices","i","input_dim_value")}\n }\n ${s.setByOffset("global_idx",o.getByIndices("input_indices"))}\n }`}},is=e=>{ns(e.inputs),e.compute(as(e.inputs),{inputs:[0]})}})),gu=U((()=>{$s(),Ts(),As(),os=(e,t,n,r,a)=>{let i,o=kt("output_data",a,n.length,4),s=At("a_data",t[1].dataType,t[1].dims.length,4),u=At("b_data",t[2].dataType,t[2].dims.length,4),l=At("c_data",t[0].dataType,t[0].dims.length,4),d=(e,t,n)=>`select(${t}, ${e}, ${n})`;if(r){let e=(e,t,n="")=>{let r=`a_data[index_a${t}][component_a${t}]`,a=`b_data[index_b${t}][component_b${t}]`,i=`bool(c_data[index_c${t}] & ${4278190080>>>8*(3-t)}u)`;return`\n let output_indices${t} = ${o.offsetToIndices(`global_idx * 4u + ${t}u`)};\n let offset_a${t} = ${s.broadcastedIndicesToOffset(`output_indices${t}`,o)};\n let offset_b${t} = ${u.broadcastedIndicesToOffset(`output_indices${t}`,o)};\n let offset_c${t} = ${l.broadcastedIndicesToOffset(`output_indices${t}`,o)};\n let index_a${t} = offset_a${t} / 4u;\n let index_b${t} = offset_b${t} / 4u;\n let index_c${t} = offset_c${t} / 4u;\n let component_a${t} = offset_a${t} % 4u;\n let component_b${t} = offset_b${t} % 4u;\n ${e}[${t}] = ${n}(${d(r,a,i)});\n `};i=9===a?`\n var data = vec4(0);\n ${e("data",0,"u32")}\n ${e("data",1,"u32")}\n ${e("data",2,"u32")}\n ${e("data",3,"u32")}\n output_data[global_idx] = dot(vec4(0x1, 0x100, 0x10000, 0x1000000), vec4(data));`:`\n ${e("output_data[global_idx]",0)}\n ${e("output_data[global_idx]",1)}\n ${e("output_data[global_idx]",2)}\n ${e("output_data[global_idx]",3)}\n `}else i=o.setByOffset("global_idx",d(s.getByOffset("global_idx"),u.getByOffset("global_idx"),l.getByOffset("global_idx")));return`\n ${e.registerUniform("vec_size","u32").declareVariables(l,s,u,o)}\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")}\n ${i}\n }`},ss=e=>{let t=e[1].dims,n=e[2].dims,r=e[0].dims,a=e[1].dataType,i=!(ht.areEqual(t,n)&&ht.areEqual(n,r)),o=t,s=ht.size(t);if(i){let e=ft.calcShape(ft.calcShape(t,n,!1),r,!1);if(!e)throw new Error("Can't perform where op on the given tensors");o=e,s=ht.size(o)}let u=Math.ceil(s/4);return{name:"Where",shaderCache:{inputDependencies:["rank","rank","rank"]},getShaderSource:t=>os(t,e,o,i,a),getRunData:()=>({outputs:[{dims:o,dataType:a}],dispatchGroup:{x:Math.ceil(s/64/4)},programUniforms:[{type:"uint32",data:u},..._t(r),..._t(t),..._t(n),..._t(o)]})}},us=e=>{e.compute(ss(e.inputs))}})),yu=U((()=>{zs(),Bs(),Ps(),Ms(),Ns(),Ws(),Us(),Ks(),Qs(),Xs(),Js(),eu(),tu(),nu(),ru(),au(),iu(),qs(),ou(),su(),uu(),lu(),Rs(),du(),pu(),cu(),fu(),hu(),mu(),ks(),Ds(),gu(),ls=new Map([["Abs",[nr]],["Acos",[rr]],["Acosh",[ar]],["Add",[Fr]],["ArgMax",[Nn,Wn]],["ArgMin",[Dn,Wn]],["Asin",[ir]],["Asinh",[or]],["Atan",[sr]],["Atanh",[ur]],["Attention",[jn]],["AveragePool",[to,eo]],["BatchNormalization",[Zn]],["BiasAdd",[Jn]],["BiasSplitGelu",[Ur]],["Cast",[dr,lr]],["Ceil",[fr]],["Clip",[cr]],["Concat",[aa,ia]],["Conv",[Ra,Aa]],["ConvTranspose",[ja,Va]],["Cos",[hr]],["Cosh",[mr]],["CumSum",[Ka,Ya]],["Div",[Gr]],["Einsum",[ai,ii]],["Elu",[yr,gr]],["Equal",[jr]],["Erf",[wr]],["Exp",[vr]],["Expand",[di]],["Floor",[$r]],["FusedConv",[Ra,Aa]],["Gather",[hi,fi]],["GatherElements",[bi,yi]],["Gelu",[_r]],["Gemm",[_i,$i]],["GlobalAveragePool",[ao,ro]],["GlobalMaxPool",[lo,uo]],["Greater",[Zr]],["GreaterOrEqual",[Xr]],["HardSigmoid",[kr,Ar]],["InstanceNormalization",[Ei]],["LayerNormalization",[Ai]],["LeakyRelu",[xr,gr]],["Less",[Qr]],["LessOrEqual",[Jr]],["Log",[Dr]],["MatMul",[Sa]],["MaxPool",[oo,so]],["Mul",[qr]],["MultiHeadAttention",[Pi,Oi]],["Neg",[Cr]],["Not",[Sr]],["Pad",[Fi]],["Pow",[Kr]],["Range",[fo]],["Reciprocal",[Er]],["ReduceMin",[On]],["ReduceMean",[En]],["ReduceMax",[kn]],["ReduceSum",[zn]],["ReduceProd",[Rn]],["ReduceL1",[In]],["ReduceL2",[Tn]],["ReduceLogSum",[Pn]],["ReduceLogSumExp",[An]],["ReduceSumSquare",[Bn]],["Relu",[Ir]],["Resize",[Oo,Ro]],["Sigmoid",[Tr]],["Sin",[Or]],["Sinh",[Rr]],["Slice",[Ho,Lo]],["SkipLayerNormalization",[Po]],["Split",[Jo,es]],["Sqrt",[zr]],["Softmax",[jo,qo]],["Sub",[Yr]],["Tan",[Br]],["Tanh",[Pr]],["ThresholdedRelu",[Mr,gr]],["Tile",[is]],["Transpose",[Ut,Vt]],["Where",[us]]])})),bu=U((()=>{ue(),xs(),As(),ds=class{constructor(e){this.backend=e,this.repo=new Map,this.attributesBound=!1}getArtifact(e){return this.repo.get(e)}setArtifact(e,t){this.repo.set(e,t)}run(e,t,n,r,a){A(e.programInfo.name);let i=this.backend.device,o=this.backend.getComputePassEncoder();this.backend.writeTimestamp(2*this.backend.pendingDispatchNumber),o.setPipeline(e.computePipeline);let s=[];for(let e of t)s.push({binding:s.length,resource:{buffer:e.buffer}});for(let e of n)s.push({binding:s.length,resource:{buffer:e.buffer}});a&&s.push({binding:s.length,resource:a});let u=i.createBindGroup({layout:e.computePipeline.getBindGroupLayout(0),entries:s,label:e.programInfo.name});o.setBindGroup(0,u),o.dispatchWorkgroups(...r),this.backend.writeTimestamp(2*this.backend.pendingDispatchNumber+1),this.backend.pendingDispatchNumber++,(this.backend.pendingDispatchNumber>=this.backend.maxDispatchNumber||"at-passes"===this.backend.queryType)&&this.backend.endComputePass(),this.backend.pendingDispatchNumber>=this.backend.maxDispatchNumber&&this.backend.flush(),k(e.programInfo.name)}dispose(){}build(e,t){A(e.name);let n=this.backend.device,r=[];n.features.has("shader-f16")&&r.push("enable f16;");let a=zt(t),i=e.getShaderSource(a),o=`${r.join("\n")}\n${a.additionalImplementations}\n${i}`,s=n.createShaderModule({code:o,label:e.name});nt("verbose",(()=>`[WebGPU] ${e.name} shader code: ${o}`));let u=n.createComputePipeline({compute:{module:s,entryPoint:"main"},layout:"auto",label:e.name});return k(e.name),{programInfo:e,computePipeline:u}}normalizeDispatchGroupSize(e){let t="number"==typeof e?e:e.x,n="number"==typeof e?1:e.y||1,r="number"==typeof e?1:e.z||1,a=this.backend.device.limits.maxComputeWorkgroupsPerDimension;if(t<=a&&n<=a&&r<=a)return[t,n,r];let i=t*n*r,o=Math.ceil(Math.sqrt(i));if(o>a){if(o=Math.ceil(Math.cbrt(i)),o>a)throw new Error("Total dispatch size exceeds WebGPU maximum.");return[o,o,o]}return[o,o,1]}}})),wu=U((()=>{ue(),$s(),xs(),Ss(),Es(),yu(),bu(),ps=(e,t)=>{if(t.length!==e.length)throw new Error(`inputDependencies length ${t.length} is not equal to inputTensors length ${e.length}.`);let n=[];for(let r=0;r{let r=e.name;return e.shaderCache?.hint&&(r+="["+e.shaderCache.hint+"]"),r+=":"+n+`:${ps(t,e.shaderCache?.inputDependencies??new Array(t.length).fill("dims"))}`,r},fs=class{constructor(){this.currentKernelId=null,this.commandEncoder=null,this.computePassEncoder=null,this.maxDispatchNumber=16,this.pendingDispatchNumber=0,this.pendingKernels=[],this.pendingQueries=new Map,this.sessionExternalDataMapping=new Map}get currentKernelCustomData(){if(null===this.currentKernelId)throw new Error("currentKernelCustomData(): currentKernelId is null. (should not happen)");let e=this.kernelCustomData.get(this.currentKernelId);return e||(e={},this.kernelCustomData.set(this.currentKernelId,e)),e}async initialize(e,t){this.env=e;let n=[],r={requiredLimits:{maxComputeWorkgroupStorageSize:t.limits.maxComputeWorkgroupStorageSize,maxComputeWorkgroupsPerDimension:t.limits.maxComputeWorkgroupsPerDimension,maxStorageBufferBindingSize:t.limits.maxStorageBufferBindingSize,maxBufferSize:t.limits.maxBufferSize,maxComputeInvocationsPerWorkgroup:t.limits.maxComputeInvocationsPerWorkgroup,maxComputeWorkgroupSizeX:t.limits.maxComputeWorkgroupSizeX,maxComputeWorkgroupSizeY:t.limits.maxComputeWorkgroupSizeY,maxComputeWorkgroupSizeZ:t.limits.maxComputeWorkgroupSizeZ},requiredFeatures:n};t.features.has("chromium-experimental-timestamp-query-inside-passes")?n.push("chromium-experimental-timestamp-query-inside-passes"):t.features.has("timestamp-query")&&n.push("timestamp-query"),t.features.has("shader-f16")&&n.push("shader-f16"),this.device=await t.requestDevice(r),this.gpuDataManager=lt(this),this.programManager=new ds(this),this.kernels=new Map,this.kernelPersistentData=new Map,this.kernelCustomData=new Map,et(e.logLevel,!!e.debug),this.device.onuncapturederror=e=>{e.error instanceof GPUValidationError&&console.error(`An uncaught WebGPU validation error was raised: ${e.error.message}`)},Object.defineProperty(this.env.webgpu,"device",{value:this.device}),this.setQueryType()}dispose(){typeof this.querySet<"u"&&this.querySet.destroy(),this.gpuDataManager.dispose()}getCommandEncoder(){return this.commandEncoder||(this.commandEncoder=this.device.createCommandEncoder()),this.commandEncoder}getComputePassEncoder(){if(!this.computePassEncoder){let e={};"at-passes"===this.queryType&&(e.timestampWrites={querySet:this.querySet,beginningOfPassWriteIndex:2*this.pendingDispatchNumber,endOfPassWriteIndex:2*this.pendingDispatchNumber+1}),this.computePassEncoder=this.getCommandEncoder().beginComputePass(e)}return this.computePassEncoder}endComputePass(){this.computePassEncoder&&(this.computePassEncoder.end(),this.computePassEncoder=null)}flush(){if(!this.commandEncoder)return;let e;A(),this.endComputePass(),"none"!==this.queryType&&(this.commandEncoder.resolveQuerySet(this.querySet,0,2*this.pendingDispatchNumber,this.queryResolveBuffer,0),e=this.device.createBuffer({size:2*this.pendingDispatchNumber*8,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST}),this.pendingQueries.set(e,this.pendingKernels),this.pendingKernels=[],this.commandEncoder.copyBufferToBuffer(this.queryResolveBuffer,0,e,0,2*this.pendingDispatchNumber*8)),this.device.queue.submit([this.commandEncoder.finish()]),this.gpuDataManager.refreshPendingBuffers(),this.commandEncoder=null,this.pendingDispatchNumber=0,"none"!==this.queryType&&e.mapAsync(GPUMapMode.READ).then((()=>{let t=new BigUint64Array(e.getMappedRange()),n=this.pendingQueries.get(e);for(let e=0;e"u"&&(this.queryTimeBase=p);let f=Number(p-this.queryTimeBase),h=Number(c-this.queryTimeBase);if(!Number.isSafeInteger(f)||!Number.isSafeInteger(h))throw new RangeError("incorrect timestamp range");if(this.env.webgpu.profiling?.ondata)this.env.webgpu.profiling.ondata({version:1,inputsMetadata:l.map((e=>({dims:e.dims,dataType:Le(e.dataType)}))),outputsMetadata:d.map((e=>({dims:e.dims,dataType:Le(e.dataType)}))),kernelId:a,kernelType:o,kernelName:s,programName:u,startTime:f,endTime:h});else{let e="";l.forEach(((t,n)=>{e+=`input[${n}]: [${t.dims}] | ${Le(t.dataType)}, `}));let t="";d.forEach(((e,n)=>{t+=`output[${n}]: [${e.dims}] | ${Le(e.dataType)}, `})),console.log(`[profiling] kernel "${a}|${o}|${s}|${u}" ${e}${t}execution time: ${h-f} ns`)}I("GPU",`${u}::${p}::${c}`)}e.unmap(),this.pendingQueries.delete(e)})),k()}run(e,t,n,r,a){A(e.name);let i=[];for(let e=0;et)):n;if(l.length!==o.length)throw new Error(`Output size ${l.length} must be equal to ${o.length}.`);let d,p=[],c=[];for(let e=0;e=o.length)throw new Error(`Invalid output index: ${l[e]}`);if(-3===l[e])continue;let t=-1===l[e],n=-2===l[e],i=t||n?a(o[e].dataType,o[e].dims):r(l[e],o[e].dataType,o[e].dims),s=this.gpuDataManager.get(i.data);if(!s)throw new Error(`no GPU data for output: ${i.data}`);if(t&&this.temporaryData.push(s),n){let e=this.kernelPersistentData.get(this.currentKernelId);e||(e=[],this.kernelPersistentData.set(this.currentKernelId,e)),e.push(s)}p.push(i),c.push(s)}if(u){let e=0,t=[];u.forEach((n=>{let r="number"==typeof n.data?[n.data]:n.data;if(0===r.length)return;let a,i,o="float16"===n.type?2:4;"float16"===n.type?(i=r.length>4?16:r.length>2?8:r.length*o,a=r.length>4?16:o*r.length):(i=r.length<=2?r.length*o:16,a=16),e=Math.ceil(e/i)*i,t.push(e);let s="float16"===n.type?8:4;e+=r.length>4?Math.ceil(r.length/s)*a:r.length*o}));let n=16;e=Math.ceil(e/n)*n;let r=new ArrayBuffer(e);u.forEach(((e,n)=>{let a=t[n],i="number"==typeof e.data?[e.data]:e.data;"int32"===e.type?new Int32Array(r,a,i.length).set(i):"uint32"===e.type?new Uint32Array(r,a,i.length).set(i):"float16"===e.type?new Uint16Array(r,a,i.length).set(i):new Float32Array(r,a,i.length).set(i)}));let a=this.gpuDataManager.create(e,GPUBufferUsage.COPY_DST|GPUBufferUsage.UNIFORM);this.device.queue.writeBuffer(a.buffer,0,r,0,e),this.gpuDataManager.release(a.id),d={offset:0,size:e,buffer:a.buffer}}let f=this.programManager.normalizeDispatchGroupSize(s),h=1===f[1]&&1===f[2],m=cs(e,t,h),g=this.programManager.getArtifact(m);if(g||(g=this.programManager.build(e,f),this.programManager.setArtifact(m,g),nt("info",(()=>`[artifact] key: ${m}, programName: ${e.name}`))),nt("info",(()=>`[ProgramManager] run "${e.name}" (key=${m}) with ${f[0]}x${f[1]}x${f[2]}`)),"none"!==this.queryType){let e={kernelId:this.currentKernelId,programName:g.programInfo.name,inputTensorViews:t,outputTensorViews:p};this.pendingKernels.push(e)}return this.programManager.run(g,i,c,f,d),k(e.name),p}upload(e,t){this.gpuDataManager.upload(e,t)}memcpy(e,t){this.gpuDataManager.memcpy(e,t)}async download(e,t){await this.gpuDataManager.download(e,t)}alloc(e){return this.gpuDataManager.create(e).id}free(e){return this.gpuDataManager.release(e)}createKernel(e,t,n,r){let a=ls.get(e);if(!a)throw new Error(`kernel not implemented: ${e}`);let i={kernelType:e,kernelName:r,kernelEntry:a[0],attributes:[a[1],n]};this.kernels.set(t,i)}releaseKernel(e){let t=this.kernelPersistentData.get(e);if(t){for(let e of t)this.gpuDataManager.release(e.id);this.kernelPersistentData.delete(e)}this.kernelCustomData.delete(e),this.kernels.delete(e)}computeKernel(e,t,n){let r=this.kernels.get(e);if(!r)throw new Error(`kernel not created: ${e}`);let a=r.kernelType,i=r.kernelName,o=r.kernelEntry,s=r.attributes;if(null!==this.currentKernelId)throw new Error(`kernel "[${a}] ${i}" is not allowed to be called recursively`);this.currentKernelId=e,s[0]&&(s[1]=s[0](s[1]),s[0]=void 0),nt("info",(()=>`[WebGPU] Start to run kernel "[${a}] ${i}"...`));let u=this.env.debug;this.temporaryData=[];try{return u&&this.device.pushErrorScope("validation"),o(t,s[1]),0}catch(e){return n.push(Promise.resolve(`[WebGPU] Kernel "[${a}] ${i}" failed. ${e}`)),1}finally{u&&n.push(this.device.popErrorScope().then((e=>e?`GPU validation error for kernel "[${a}] ${i}": ${e.message}`:null)));for(let e of this.temporaryData)this.gpuDataManager.release(e.id);this.temporaryData=[],this.currentKernelId=null}}registerBuffer(e,t,n,r){let a=this.sessionExternalDataMapping.get(e);a||(a=new Map,this.sessionExternalDataMapping.set(e,a));let i=a.get(t),o=this.gpuDataManager.registerExternalBuffer(n,r,i?.[1]);return a.set(t,[o,n]),o}unregisterBuffers(e){let t=this.sessionExternalDataMapping.get(e);t&&(t.forEach((e=>this.gpuDataManager.unregisterExternalBuffer(e[1]))),this.sessionExternalDataMapping.delete(e))}getBuffer(e){let t=this.gpuDataManager.get(e);if(!t)throw new Error(`no GPU data for buffer: ${e}`);return t.buffer}createDownloader(e,t,n){return async()=>{let r=await st(this,e,t);return rt(r.buffer,n)}}writeTimestamp(e){"inside-passes"===this.queryType&&this.computePassEncoder.writeTimestamp(this.querySet,e)}setQueryType(){this.queryType="none",("default"===this.env.webgpu.profiling?.mode||this.env.wasm.trace)&&(this.device.features.has("chromium-experimental-timestamp-query-inside-passes")?this.queryType="inside-passes":this.device.features.has("timestamp-query")&&(this.queryType="at-passes"),"none"!==this.queryType&&typeof this.querySet>"u"&&(this.querySet=this.device.createQuerySet({type:"timestamp",count:2*this.maxDispatchNumber}),this.queryResolveBuffer=this.device.createBuffer({size:2*this.maxDispatchNumber*8,usage:GPUBufferUsage.COPY_SRC|GPUBufferUsage.QUERY_RESOLVE})))}onRunStart(){this.setQueryType()}}})),vu={};H(vu,{init:()=>xu});var $u,_u,xu,Su,Cu,Eu,Iu,Tu,Au,ku,Ou,Ru,zu,Bu,Pu,Mu,Du,Nu,Wu,Uu,Vu,Hu,Lu,Fu,Gu,ju,qu,Ku,Yu,Zu,Qu,Xu,Ju,el,tl,nl,rl,al,il=U((()=>{$s(),wu(),xs(),Ts(),$u=class e{constructor(e,t,n,r){this.module=e,this.dataType=t,this.data=n,this.dims=r}getFloat32Array(){if(1!==this.dataType)throw new Error("Invalid data type");let e=ht.size(this.dims);return 0===e?new Float32Array:new Float32Array(this.module.HEAP8.buffer,this.data,e)}getBigInt64Array(){if(7!==this.dataType)throw new Error("Invalid data type");let e=ht.size(this.dims);return 0===e?new BigInt64Array:new BigInt64Array(this.module.HEAP8.buffer,this.data,e)}getInt32Array(){if(6!==this.dataType)throw new Error("Invalid data type");let e=ht.size(this.dims);return 0===e?new Int32Array:new Int32Array(this.module.HEAP8.buffer,this.data,e)}reshape(t){if(ht.size(t)!==ht.size(this.dims))throw new Error("Invalid new shape");return new e(this.module,this.dataType,this.data,t)}},_u=class{constructor(e,t,n){this.module=e,this.backend=t,this.customDataOffset=0,this.customDataSize=0;let r=e.HEAPU32,a=n>>>2;this.opKernelContext=r[a++];let i=r[a++];this.outputCount=r[a++],this.customDataOffset=r[a++],this.customDataSize=r[a++];let o=[];for(let t=0;t"number"==typeof e?this.inputs[e]:e))??this.inputs,r=t?.outputs??[];return this.backend.run(e,n,r,((e,t,n)=>new $u(this.module,t,this.output(e,n),n)),((e,t)=>{let n=Fe(e);if(!n)throw new Error(`Unsupported data type: ${e}`);let r=n*ht.size(t);return new $u(this.module,e,this.backend.gpuDataManager.create(r).id,t)}))}output(e,t){let n=this.module.stackSave();try{let n=this.module.stackAlloc(4*(1+t.length)),r=n>>2;this.module.HEAPU32[r++]=t.length;for(let e=0;e{let r=e.jsepInit;if(!r)throw new Error("Failed to initialize JSEP. The WebAssembly module is not built with JSEP support.");let a=new fs;await a.initialize(t,n),r(a,(e=>a.alloc(e)),(e=>a.free(e)),((t,n,r,i=!1)=>{if(i)nt("verbose",(()=>`[WebGPU] jsepCopyGpuToGpu: src=${t}, dst=${n}, size=${r}`)),a.memcpy(t,n);else{nt("verbose",(()=>`[WebGPU] jsepCopyCpuToGpu: dataOffset=${t}, gpuDataId=${n}, size=${r}`));let i=e.HEAPU8.subarray(t>>>0,(t>>>0)+r);a.upload(n,i)}}),(async(t,n,r)=>{nt("verbose",(()=>`[WebGPU] jsepCopyGpuToCpu: gpuDataId=${t}, dataOffset=${n}, size=${r}`)),await a.download(t,(()=>e.HEAPU8.subarray(n>>>0,(n>>>0)+r)))}),((t,n,r)=>a.createKernel(t,n,r,e.UTF8ToString(e._JsepGetNodeName(n)))),(e=>a.releaseKernel(e)),((t,n,r,i)=>{nt("verbose",(()=>`[WebGPU] jsepRun: sessionHandle=${r}, kernel=${t}, contextDataOffset=${n}`));let o=new _u(e,a,n);return a.computeKernel(t,o,i)}))}})),ol=U((()=>{ws(),vs(),$s(),ys(),bs(),_s(),Su=(e,t)=>{0!==Re()._OrtInit(e,t)&&Pe("Can't initialize onnxruntime.")},Cu=async e=>{Su(e.wasm.numThreads,je(e.logLevel))},Eu=async(e,t)=>{if("webgpu"===t||"webnn"===t){if(typeof navigator>"u"||!navigator.gpu)throw new Error("WebGPU is not supported in current environment");let t=await navigator.gpu.requestAdapter();if(!t)throw new Error('Failed to get GPU adapter. You may need to enable flag "--enable-unsafe-webgpu" if you are using Chrome.');if(!e.wasm.simd)throw new Error("Not supported for WebGPU=ON and SIMD=OFF. Please set `env.wasm.simd` to true when using `webgpu` EP");let n=(il(),L(vu)).init;await n(Re(),e,t)}},Iu=new Map,Tu=e=>{let t=Re(),n=t.stackSave();try{let n=t.stackAlloc(8);return 0!==t._OrtGetInputOutputCount(e,n,n+4)&&Pe("Can't get session input/output count."),[t.HEAP32[n/4],t.HEAP32[n/4+1]]}finally{t.stackRestore(n)}},Au=e=>{let t=Re(),n=t._malloc(e.byteLength);if(0===n)throw new Error(`Can't create a session. failed to allocate a buffer of size ${e.byteLength}.`);return t.HEAPU8.set(e,n),[n,e.byteLength]},ku=async(e,t)=>{let n,r,a=Re();Array.isArray(e)?[n,r]=e:e.buffer===a.HEAPU8.buffer?[n,r]=[e.byteOffset,e.byteLength]:[n,r]=Au(e);let i=0,o=0,s=0,u=[],l=[],d=[];try{if([o,u]=Ve(t),t?.externalData&&a.mountExternalData){let e=[];for(let n of t.externalData){let t="string"==typeof n?n:n.path;e.push(Ye("string"==typeof n?n:n.data).then((e=>{a.mountExternalData(t,e)})))}await Promise.all(e)}i=await a._OrtCreateSession(n,r,o),0===i&&Pe("Can't create a session.");let[e,p]=Tu(i),c=[],f=[],h=[];for(let t=0;t"gpu-buffer"===e))&&(s=a._OrtCreateBinding(i),0===s&&Pe("Can't create IO binding."),m={handle:s,outputPreferredLocations:h,outputPreferredLocationsEncoded:h.map((e=>Ke(e)))}),Iu.set(i,[i,l,d,m]),[i,c,f]}catch(e){throw l.forEach((e=>a._OrtFree(e))),d.forEach((e=>a._OrtFree(e))),0!==s&&a._OrtReleaseBinding(s),0!==i&&a._OrtReleaseSession(i),e}finally{a._free(n),0!==o&&a._OrtReleaseSessionOptions(o),u.forEach((e=>a._free(e))),a.unmountExternalData?.()}},Ou=e=>{let t=Re(),n=Iu.get(e);if(!n)throw new Error(`cannot release session. invalid session id: ${e}`);let[r,a,i,o]=n;o&&t._OrtReleaseBinding(o.handle),t.jsepUnregisterBuffers?.(e),a.forEach((e=>t._OrtFree(e))),i.forEach((e=>t._OrtFree(e))),t._OrtReleaseSession(r),Iu.delete(e)},Ru=(e,t,n,r,a)=>{if(!e)return void t.push(0);let i,o,s=Re(),u=e[0],l=e[1],d=e[3];if("string"===u&&"gpu-buffer"===d)throw new Error("String tensor is not supported on GPU.");if("gpu-buffer"===d){let t=e[2].gpuBuffer,n=Fe(He(u));o=l.reduce(((e,t)=>e*t),1)*n,i=s.jsepRegisterBuffer(r,a,t,o)}else{let t=e[2];if(Array.isArray(t)){o=4*t.length,i=s._malloc(o),n.push(i);let e=i/4;for(let r=0;rs.HEAP32[e++]=t));let n=s._OrtCreateTensor(He(u),i,o,c,l.length,Ke(d));0===n&&Pe(`Can't create tensor for input/output. session=${r}, index=${a}.`),t.push(n)}finally{s.stackRestore(p)}},zu=async(e,t,n,r,a,i)=>{let o=Re(),s=Iu.get(e);if(!s)throw new Error(`cannot run inference. invalid session id: ${e}`);let[u,l,d,p]=s,c=t.length,f=r.length,h=0,m=[],g=[],y=[],b=[],w=o.stackSave(),v=o.stackAlloc(4*c),$=o.stackAlloc(4*c),_=o.stackAlloc(4*f),x=o.stackAlloc(4*f);try{[h,m]=Me(i);for(let r=0;re*t),1);n=Le(i);let m=p?.outputPreferredLocations[r[e]];if("string"===n){if("gpu-buffer"===m)throw new Error("String tensor is not supported on GPU.");let e=[],t=l/4;for(let n=0;n0){let e=o.jsepGetBuffer(l),r=Fe(i);if(void 0===r||!qe(n))throw new Error(`Unsupported data type: ${n}`);u=!0,I.push([n,f,{gpuBuffer:e,download:o.jsepCreateDownloader(e,h*r,n),dispose:()=>{o._OrtReleaseTensor(t)}},"gpu-buffer"])}else{let e=new(Ge(n))(h);new Uint8Array(e.buffer,e.byteOffset,e.byteLength).set(o.HEAPU8.subarray(l,l+e.byteLength)),I.push([n,f,e,"cpu"])}}finally{o.stackRestore(i),"string"===n&&l&&o._free(l),u||o._OrtReleaseTensor(t)}}return p&&o._OrtClearBoundOutputs(p.handle),I}finally{o.stackRestore(w),g.forEach((e=>o._OrtReleaseTensor(e))),y.forEach((e=>o._OrtReleaseTensor(e))),b.forEach((e=>o._free(e))),0!==h&&o._OrtReleaseRunOptions(h),m.forEach((e=>o._free(e)))}},Bu=e=>{let t=Re(),n=Iu.get(e);if(!n)throw new Error("invalid session id");let r=n[0],a=t._OrtEndProfiling(r);0===a&&Pe("Can't get an profile file name."),t._OrtFree(a)},Pu=e=>{let t=[];for(let n of e){let e=n[2];!Array.isArray(e)&&"buffer"in e&&t.push(e.buffer)}return t}})),sl=V(((e,t)=>{t.exports='/*!\n * ONNX Runtime Web v1.18.0-dev.20240130-9f68a27c7a\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n"use strict";(()=>{var eo=Object.defineProperty;var kl=Object.getOwnPropertyDescriptor;var Rl=Object.getOwnPropertyNames;var Bl=Object.prototype.hasOwnProperty;var Q=(e,t)=>()=>(e&&(t=e(e=0)),t);var Br=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),hn=(e,t)=>{for(var r in t)eo(e,r,{get:t[r],enumerable:!0})},Dl=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Rl(t))!Bl.call(e,i)&&i!==r&&eo(e,i,{get:()=>t[i],enumerable:!(o=kl(t,i))||o.enumerable});return e};var ur=e=>Dl(eo({},"__esModule",{value:!0}),e);var to={};hn(to,{createReadStream:()=>yi,readFile:()=>Ml,readFileSync:()=>zl});var Ml,zl,yi,ro=Q(()=>{Ml=void 0,zl=void 0,yi=void 0});var no={};hn(no,{join:()=>Ul});var Ul,oo=Q(()=>{Ul=void 0});var vi=Br((wi,io)=>{"use strict";var bi=(()=>{var e=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(e=e||__filename),function(t={}){var r=t,o,i;r.ready=new Promise((s,c)=>{o=s,i=c}),r.mountExternalData=(s,c)=>{(r.gb||(r.gb=new Map)).set(s,c)},r.unmountExternalData=()=>{delete r.gb},r.jsepInit=(s,c,g,$,I,D,H,X)=>{r.Fb=s,r.vb=c,r.xb=g,r.ob=$,r.wb=I,r.Sa=D,r.yb=H,r.zb=X,c=(q,j,ne)=>(...fe)=>{let $e=Je,k=j?.();fe=q(...fe);let ae=j?.();return k!==ae&&(q=ae,ne(k),j=ne=null),Je!=$e?Zr():fe},g=q=>async(...j)=>{try{if(r.fb)throw Error("Session already started");let ne=r.fb={Ab:j[0],errors:[]},fe=await q(...j);if(r.fb!==ne)throw Error("Session mismatch");s.flush();let $e=ne.errors;if(0<$e.length){let k=await Promise.all($e);if(k=k.filter(ae=>ae),0r._OrtCreateSession,q=>r._OrtCreateSession=q),r._OrtRun=g(c(r._OrtRun,()=>r._OrtRun,q=>r._OrtRun=q)),r._OrtRunWithBinding=g(c(r._OrtRunWithBinding,()=>r._OrtRunWithBinding,q=>r._OrtRunWithBinding=q)),r._OrtBindInput=c(r._OrtBindInput,()=>r._OrtBindInput,q=>r._OrtBindInput=q),r.jsepRegisterBuffer=(q,j,ne,fe)=>s.registerBuffer(q,j,ne,fe),r.jsepUnregisterBuffers=q=>{s.unregisterBuffers(q)},r.jsepGetBuffer=q=>s.getBuffer(q),r.jsepCreateDownloader=(q,j,ne)=>s.createDownloader(q,j,ne),r.jsepOnRunStart=()=>s.onRunStart()};var u=Object.assign({},r),a="./this.program",p=(s,c)=>{throw c},m=typeof window=="object",h=typeof importScripts=="function",d=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",y="",w,_,v;if(d){var x=(ro(),ur(to)),T=(oo(),ur(no));y=h?T.dirname(y)+"/":__dirname+"/",w=(s,c)=>(s=ie(s)?new URL(s):T.normalize(s),x.readFileSync(s,c?void 0:"utf8")),v=s=>(s=w(s,!0),s.buffer||(s=new Uint8Array(s)),s),_=(s,c,g,$=!0)=>{s=ie(s)?new URL(s):T.normalize(s),x.readFile(s,$?void 0:"utf8",(I,D)=>{I?g(I):c($?D.buffer:D)})},!r.thisProgram&&1{throw process.exitCode=s,c},r.inspect=()=>"[Emscripten Module object]"}else(m||h)&&(h?y=self.location.href:typeof document<"u"&&document.currentScript&&(y=document.currentScript.src),e&&(y=e),y.indexOf("blob:")!==0?y=y.substr(0,y.replace(/[?#].*/,"").lastIndexOf("/")+1):y="",w=s=>{var c=new XMLHttpRequest;return c.open("GET",s,!1),c.send(null),c.responseText},h&&(v=s=>{var c=new XMLHttpRequest;return c.open("GET",s,!1),c.responseType="arraybuffer",c.send(null),new Uint8Array(c.response)}),_=(s,c,g)=>{var $=new XMLHttpRequest;$.open("GET",s,!0),$.responseType="arraybuffer",$.onload=()=>{$.status==200||$.status==0&&$.response?c($.response):g()},$.onerror=g,$.send(null)});var C=console.log.bind(console),S=console.error.bind(console);Object.assign(r,u),u=null,typeof WebAssembly!="object"&&Ge("no native wasm support detected");var E,O=!1,U,M,N,Y,se,B,te,Pe,Ee,ee,be;function Me(){var s=E.buffer;r.HEAP8=M=new Int8Array(s),r.HEAP16=Y=new Int16Array(s),r.HEAPU8=N=new Uint8Array(s),r.HEAPU16=se=new Uint16Array(s),r.HEAP32=B=new Int32Array(s),r.HEAPU32=te=new Uint32Array(s),r.HEAPF32=Pe=new Float32Array(s),r.HEAPF64=be=new Float64Array(s),r.HEAP64=Ee=new BigInt64Array(s),r.HEAPU64=ee=new BigUint64Array(s)}var pe=[],ye=[],de=[],we=0,ze=null,Re=null;function Ge(s){throw s="Aborted("+s+")",S(s),O=!0,U=1,s=new WebAssembly.RuntimeError(s+". Build with -sASSERTIONS for more info."),i(s),s}var F=s=>s.startsWith("data:application/octet-stream;base64,"),ie=s=>s.startsWith("file://"),he;if(he="ort-wasm-simd.wasm",!F(he)){var Xe=he;he=r.locateFile?r.locateFile(Xe,y):y+Xe}function nt(s){if(v)return v(s);throw"both async and sync fetching of the wasm failed"}function ke(s){if(m||h){if(typeof fetch=="function"&&!ie(s))return fetch(s,{credentials:"same-origin"}).then(c=>{if(!c.ok)throw"failed to load wasm binary file at \'"+s+"\'";return c.arrayBuffer()}).catch(()=>nt(s));if(_)return new Promise((c,g)=>{_(s,$=>c(new Uint8Array($)),g)})}return Promise.resolve().then(()=>nt(s))}function Le(s,c,g){return ke(s).then($=>WebAssembly.instantiate($,c)).then($=>$).then(g,$=>{S(`failed to asynchronously prepare wasm: ${$}`),Ge($)})}function It(s,c){var g=he;return typeof WebAssembly.instantiateStreaming!="function"||F(g)||ie(g)||d||typeof fetch!="function"?Le(g,s,c):fetch(g,{credentials:"same-origin"}).then($=>WebAssembly.instantiateStreaming($,s).then(c,function(I){return S(`wasm streaming compile failed: ${I}`),S("falling back to ArrayBuffer instantiation"),Le(g,s,c)}))}var Tt={945168:(s,c,g,$)=>{if(typeof r>"u"||!r.gb)return 1;if(s=Fe(s>>>0),s.startsWith("./")&&(s=s.substring(2)),s=r.gb.get(s),!s)return 2;if(c>>>=0,g>>>=0,c+g>s.byteLength)return 3;try{return N.set(s.subarray(c,c+g),$>>>0>>>0),0}catch{return 4}},945669:s=>r.vb(s),945702:s=>r.xb(s),945734:(s,c,g)=>{r.ob(s,c,g,!0)},945773:(s,c,g)=>{r.ob(s,c,g)},945806:s=>{r.Sa("Abs",s,void 0)},945857:s=>{r.Sa("Neg",s,void 0)},945908:s=>{r.Sa("Floor",s,void 0)},945961:s=>{r.Sa("Ceil",s,void 0)},946013:s=>{r.Sa("Reciprocal",s,void 0)},946071:s=>{r.Sa("Sqrt",s,void 0)},946123:s=>{r.Sa("Exp",s,void 0)},946174:s=>{r.Sa("Erf",s,void 0)},946225:s=>{r.Sa("Sigmoid",s,void 0)},946280:(s,c,g)=>{r.Sa("HardSigmoid",s,{alpha:c,beta:g})},946359:s=>{r.Sa("Log",s,void 0)},946410:s=>{r.Sa("Sin",s,void 0)},946461:s=>{r.Sa("Cos",s,void 0)},946512:s=>{r.Sa("Tan",s,void 0)},946563:s=>{r.Sa("Asin",s,void 0)},946615:s=>{r.Sa("Acos",s,void 0)},946667:s=>{r.Sa("Atan",s,void 0)},946719:s=>{r.Sa("Sinh",s,void 0)},946771:s=>{r.Sa("Cosh",s,void 0)},946823:s=>{r.Sa("Asinh",s,void 0)},946876:s=>{r.Sa("Acosh",s,void 0)},946929:s=>{r.Sa("Atanh",s,void 0)},946982:s=>{r.Sa("Tanh",s,void 0)},947034:s=>{r.Sa("Not",s,void 0)},947085:(s,c,g)=>{r.Sa("Clip",s,{min:c,max:g})},947154:s=>{r.Sa("Clip",s,void 0)},947206:(s,c)=>{r.Sa("Elu",s,{alpha:c})},947264:s=>{r.Sa("Relu",s,void 0)},947316:(s,c)=>{r.Sa("LeakyRelu",s,{alpha:c})},947380:(s,c)=>{r.Sa("ThresholdedRelu",s,{alpha:c})},947450:(s,c)=>{r.Sa("Cast",s,{to:c})},947508:s=>{r.Sa("Add",s,void 0)},947559:s=>{r.Sa("Sub",s,void 0)},947610:s=>{r.Sa("Mul",s,void 0)},947661:s=>{r.Sa("Div",s,void 0)},947712:s=>{r.Sa("Pow",s,void 0)},947763:s=>{r.Sa("Equal",s,void 0)},947816:s=>{r.Sa("Greater",s,void 0)},947871:s=>{r.Sa("GreaterOrEqual",s,void 0)},947933:s=>{r.Sa("Less",s,void 0)},947985:s=>{r.Sa("LessOrEqual",s,void 0)},948044:(s,c,g,$,I)=>{r.Sa("ReduceMean",s,{keepDims:!!c,noopWithEmptyAxes:!!g,axes:$?Array.from(B.subarray($>>>0,I>>>0)):[]})},948203:(s,c,g,$,I)=>{r.Sa("ReduceMax",s,{keepDims:!!c,noopWithEmptyAxes:!!g,axes:$?Array.from(B.subarray($>>>0,I>>>0)):[]})},948361:(s,c,g,$,I)=>{r.Sa("ReduceMin",s,{keepDims:!!c,noopWithEmptyAxes:!!g,axes:$?Array.from(B.subarray($>>>0,I>>>0)):[]})},948519:(s,c,g,$,I)=>{r.Sa("ReduceProd",s,{keepDims:!!c,noopWithEmptyAxes:!!g,axes:$?Array.from(B.subarray($>>>0,I>>>0)):[]})},948678:(s,c,g,$,I)=>{r.Sa("ReduceSum",s,{keepDims:!!c,noopWithEmptyAxes:!!g,axes:$?Array.from(B.subarray($>>>0,I>>>0)):[]})},948836:(s,c,g,$,I)=>{r.Sa("ReduceL1",s,{keepDims:!!c,noopWithEmptyAxes:!!g,axes:$?Array.from(B.subarray($>>>0,I>>>0)):[]})},948993:(s,c,g,$,I)=>{r.Sa("ReduceL2",s,{keepDims:!!c,noopWithEmptyAxes:!!g,axes:$?Array.from(B.subarray($>>>0,I>>>0)):[]})},949150:(s,c,g,$,I)=>{r.Sa("ReduceLogSum",s,{keepDims:!!c,noopWithEmptyAxes:!!g,axes:$?Array.from(B.subarray($>>>0,I>>>0)):[]})},949311:(s,c,g,$,I)=>{r.Sa("ReduceSumSquare",s,{keepDims:!!c,noopWithEmptyAxes:!!g,axes:$?Array.from(B.subarray($>>>0,I>>>0)):[]})},949475:(s,c,g,$,I)=>{r.Sa("ReduceLogSumExp",s,{keepDims:!!c,noopWithEmptyAxes:!!g,axes:$?Array.from(B.subarray($>>>0,I>>>0)):[]})},949639:s=>{r.Sa("Where",s,void 0)},949692:(s,c,g)=>{r.Sa("Transpose",s,{perm:c?Array.from(B.subarray(c>>>0,g>>>0)):[]})},949800:(s,c,g,$,I,D,H,X,q,j,ne,fe,$e,k,ae)=>{r.Sa("ConvTranspose",s,{format:q?"NHWC":"NCHW",autoPad:c,dilations:[g],group:$,kernel_shape:[I],pads:[D,H],strides:[X],wIsConst:()=>!!M[j>>>0],outputPadding:ne?Array.from(B.subarray(ne>>>0,fe>>>0)):[],outputShape:$e?Array.from(B.subarray($e>>>0,k>>>0)):[],activation:Fe(ae)})},950202:(s,c,g,$,I,D,H,X,q,j,ne,fe,$e,k)=>{r.Sa("ConvTranspose",s,{format:X?"NHWC":"NCHW",autoPad:c,dilations:Array.from(B.subarray(g>>>0,(g>>>0)+2>>>0)),group:$,kernelShape:Array.from(B.subarray(I>>>0,(I>>>0)+2>>>0)),pads:Array.from(B.subarray(D>>>0,(D>>>0)+4>>>0)),strides:Array.from(B.subarray(H>>>0,(H>>>0)+2>>>0)),wIsConst:()=>!!M[q>>>0],outputPadding:j?Array.from(B.subarray(j>>>0,ne>>>0)):[],outputShape:fe?Array.from(B.subarray(fe>>>0,$e>>>0)):[],activation:Fe(k)})},950767:(s,c,g,$,I,D,H,X,q,j,ne,fe,$e,k,ae)=>{r.Sa("ConvTranspose",s,{format:q?"NHWC":"NCHW",autoPad:c,dilations:[g],group:$,kernel_shape:[I],pads:[D,H],strides:[X],wIsConst:()=>!!M[j>>>0],outputPadding:ne?Array.from(B.subarray(ne>>>0,fe>>>0)):[],outputShape:$e?Array.from(B.subarray($e>>>0,k>>>0)):[],activation:Fe(ae)})},951169:(s,c,g,$,I,D,H,X,q,j,ne,fe,$e,k)=>{r.Sa("ConvTranspose",s,{format:X?"NHWC":"NCHW",autoPad:c,dilations:Array.from(B.subarray(g>>>0,(g>>>0)+2>>>0)),group:$,kernelShape:Array.from(B.subarray(I>>>0,(I>>>0)+2>>>0)),pads:Array.from(B.subarray(D>>>0,(D>>>0)+4>>>0)),strides:Array.from(B.subarray(H>>>0,(H>>>0)+2>>>0)),wIsConst:()=>!!M[q>>>0],outputPadding:j?Array.from(B.subarray(j>>>0,ne>>>0)):[],outputShape:fe?Array.from(B.subarray(fe>>>0,$e>>>0)):[],activation:Fe(k)})},951734:(s,c)=>{r.Sa("GlobalAveragePool",s,{format:c?"NHWC":"NCHW"})},951825:(s,c,g,$,I,D,H,X,q,j,ne,fe,$e,k,ae,Ae)=>{r.Sa("AveragePool",s,{format:Ae?"NHWC":"NCHW",auto_pad:c,ceil_mode:g,count_include_pad:$,storage_order:I,dilations:[D,H],kernel_shape:[X,q],pads:[j,ne,fe,$e],strides:[k,ae]})},952109:(s,c)=>{r.Sa("GlobalAveragePool",s,{format:c?"NHWC":"NCHW"})},952200:(s,c,g,$,I,D,H,X,q,j,ne,fe,$e,k,ae,Ae)=>{r.Sa("AveragePool",s,{format:Ae?"NHWC":"NCHW",auto_pad:c,ceil_mode:g,count_include_pad:$,storage_order:I,dilations:[D,H],kernel_shape:[X,q],pads:[j,ne,fe,$e],strides:[k,ae]})},952484:(s,c)=>{r.Sa("GlobalMaxPool",s,{format:c?"NHWC":"NCHW"})},952571:(s,c,g,$,I,D,H,X,q,j,ne,fe,$e,k,ae,Ae)=>{r.Sa("MaxPool",s,{format:Ae?"NHWC":"NCHW",auto_pad:c,ceil_mode:g,count_include_pad:$,storage_order:I,dilations:[D,H],kernel_shape:[X,q],pads:[j,ne,fe,$e],strides:[k,ae]})},952851:(s,c)=>{r.Sa("GlobalMaxPool",s,{format:c?"NHWC":"NCHW"})},952938:(s,c,g,$,I,D,H,X,q,j,ne,fe,$e,k,ae,Ae)=>{r.Sa("MaxPool",s,{format:Ae?"NHWC":"NCHW",auto_pad:c,ceil_mode:g,count_include_pad:$,storage_order:I,dilations:[D,H],kernel_shape:[X,q],pads:[j,ne,fe,$e],strides:[k,ae]})},953218:(s,c,g,$,I)=>{r.Sa("Gemm",s,{alpha:c,beta:g,transA:$,transB:I})},953322:s=>{r.Sa("MatMul",s,void 0)},953376:(s,c,g,$)=>{r.Sa("ArgMax",s,{keepDims:!!c,selectLastIndex:!!g,axis:$})},953484:(s,c,g,$)=>{r.Sa("ArgMin",s,{keepDims:!!c,selectLastIndex:!!g,axis:$})},953592:(s,c)=>{r.Sa("Softmax",s,{axis:c})},953655:(s,c)=>{r.Sa("Concat",s,{axis:c})},953715:(s,c,g,$,I)=>{r.Sa("Split",s,{axis:c,numOutputs:g,splitSizes:$?Array.from(B.subarray($>>>0,I>>>0)):[]})},953855:s=>{r.Sa("Expand",s,void 0)},953909:(s,c)=>{r.Sa("Gather",s,{axis:Number(c)})},953980:(s,c)=>{r.Sa("GatherElements",s,{axis:Number(c)})},954059:(s,c,g,$,I,D,H,X,q,j,ne)=>{r.Sa("Resize",s,{antialias:c,axes:g?Array.from(B.subarray(g>>>0,$>>>0)):[],coordinateTransformMode:Fe(I),cubicCoeffA:D,excludeOutside:H,extrapolationValue:X,keepAspectRatioPolicy:Fe(q),mode:Fe(j),nearestMode:Fe(ne)})},954405:(s,c,g,$,I,D,H)=>{r.Sa("Slice",s,{starts:c?Array.from(B.subarray(c>>>0,g>>>0)):[],ends:$?Array.from(B.subarray($>>>0,I>>>0)):[],axes:D?Array.from(B.subarray(D>>>0,H>>>0)):[]})},954621:s=>{r.Sa("Tile",s,void 0)},954673:(s,c,g)=>{r.Sa("LayerNormalization",s,{axis:Number(c),epsilon:Number(g)})},954780:(s,c,g)=>{r.Sa("InstanceNormalization",s,{epsilon:c,format:g?"NHWC":"NCHW"})},954894:(s,c,g)=>{r.Sa("InstanceNormalization",s,{epsilon:c,format:g?"NHWC":"NCHW"})},955008:s=>{r.Sa("Range",s,void 0)},955061:(s,c)=>{r.Sa("Einsum",s,{equation:Fe(c)})},955142:(s,c,g,$,I)=>{r.Sa("Pad",s,{mode:c,value:g,pads:$?Array.from(B.subarray($>>>0,I>>>0)):[]})},955269:(s,c,g,$,I,D)=>{r.Sa("BatchNormalization",s,{epsilon:c,momentum:g,spatial:!!I,trainingMode:!!$,format:D?"NHWC":"NCHW"})},955438:(s,c,g,$,I,D)=>{r.Sa("BatchNormalization",s,{epsilon:c,momentum:g,spatial:!!I,trainingMode:!!$,format:D?"NHWC":"NCHW"})},955607:(s,c,g)=>{r.Sa("CumSum",s,{exclusive:Number(c),reverse:Number(g)})},955704:(s,c,g,$,I,D,H,X,q)=>{r.Sa("Attention",s,{numHeads:c,isUnidirectional:g,maskFilterValue:$,scale:I,doRotary:D,qkvHiddenSizes:H?Array.from(B.subarray(Number(X)>>>0,Number(X)+H>>>0)):[],pastPresentShareBuffer:!!q})},955976:s=>{r.Sa("Gelu",s,void 0)},956028:(s,c,g,$,I,D)=>{r.Sa("MultiHeadAttention",s,{numHeads:c,isUnidirectional:g,maskFilterValue:$,scale:I,doRotary:D})},956187:s=>{r.Sa("BiasAdd",s,void 0)},956242:s=>{r.Sa("BiasSplitGelu",s,void 0)},956303:(s,c)=>{r.Sa("SkipLayerNormalization",s,{epsilon:c})},956384:(s,c,g,$,I,D,H,X,q,j,ne,fe,$e)=>{r.Sa("Conv",s,{format:q?"NHWC":"NCHW",auto_pad:c,dilations:[g],group:$,kernel_shape:[I],pads:D?Array.from(B.subarray(D>>>0,H>>>0)):[],strides:[X],w_is_const:()=>!!M[j>>>0],activation:Fe(ne),activation_params:fe?Array.from(Pe.subarray(fe>>>0,$e>>>0)):[]})},956754:(s,c,g,$,I,D,H,X,q,j,ne,fe,$e,k,ae,Ae)=>{r.Sa("Conv",s,{format:fe?"NHWC":"NCHW",auto_pad:c,dilations:[g,$],group:I,kernel_shape:[D,H],pads:X?Array.from(B.subarray(X>>>0,q>>>0)):[],strides:[j,ne],w_is_const:()=>!!M[$e>>>0],activation:Fe(k),activation_params:ae?Array.from(Pe.subarray(ae>>>0,Ae>>>0)):[]})},957145:s=>{r.yb(s)},957179:(s,c)=>r.zb(s,c,r.fb.Ab,r.fb.errors)};function Vt(s){this.name="ExitStatus",this.message=`Program terminated with exit(${s})`,this.status=s}function Rt(s){this.cb=s-24,this.rb=function(c){te[this.cb+4>>>2>>>0]=c},this.qb=function(c){te[this.cb+8>>>2>>>0]=c},this.kb=function(c,g){this.jb(),this.rb(c),this.qb(g)},this.jb=function(){te[this.cb+16>>>2>>>0]=0}}var Jt=0,Wt=0,mr=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,Bt=(s,c,g)=>{c>>>=0;var $=c+g;for(g=c;s[g]&&!(g>=$);)++g;if(16I?$+=String.fromCharCode(I):(I-=65536,$+=String.fromCharCode(55296|I>>10,56320|I&1023))}}else $+=String.fromCharCode(I)}return $},Fe=(s,c)=>(s>>>=0)?Bt(N,s,c):"",Et=s=>{for(var c=0,g=0;g=$?c++:2047>=$?c+=2:55296<=$&&57343>=$?(c+=4,++g):c+=3}return c},bt=(s,c,g,$)=>{if(g>>>=0,!(0<$))return 0;var I=g;$=g+$-1;for(var D=0;D=H){var X=s.charCodeAt(++D);H=65536+((H&1023)<<10)|X&1023}if(127>=H){if(g>=$)break;c[g++>>>0]=H}else{if(2047>=H){if(g+1>=$)break;c[g++>>>0]=192|H>>6}else{if(65535>=H){if(g+2>=$)break;c[g++>>>0]=224|H>>12}else{if(g+3>=$)break;c[g++>>>0]=240|H>>18,c[g++>>>0]=128|H>>12&63}c[g++>>>0]=128|H>>6&63}c[g++>>>0]=128|H&63}}return c[g>>>0]=0,g-I},fr=s=>{if(s===null)return"null";var c=typeof s;return c==="object"||c==="array"||c==="function"?s.toString():""+s},Gr,ot=s=>{for(var c="";N[s>>>0];)c+=Gr[N[s++>>>0]];return c},hr={},Nt={},gr={},ct;function Lr(s,c,g={}){var $=c.name;if(!s)throw new ct(`type "${$}" must have a positive integer typeid pointer`);if(Nt.hasOwnProperty(s)){if(g.tb)return;throw new ct(`Cannot register type \'${$}\' twice`)}Nt[s]=c,delete gr[s],hr.hasOwnProperty(s)&&(c=hr[s],delete hr[s],c.forEach(I=>I()))}function qe(s,c,g={}){if(!("argPackAdvance"in c))throw new TypeError("registerType registeredInstance requires argPackAdvance");Lr(s,c,g)}var yr=(s,c,g)=>{switch(c){case 1:return g?$=>M[$>>>0>>>0]:$=>N[$>>>0>>>0];case 2:return g?$=>Y[$>>>1>>>0]:$=>se[$>>>1>>>0];case 4:return g?$=>B[$>>>2>>>0]:$=>te[$>>>2>>>0];case 8:return g?$=>Ee[$>>>3]:$=>ee[$>>>3];default:throw new TypeError(`invalid integer width (${c}): ${s}`)}};function br(){this.$a=[void 0],this.nb=[]}var Oe=new br;function wr(s){s>>>=0,s>=Oe.cb&&--Oe.get(s).pb===0&&Oe.jb(s)}var ve=s=>{if(!s)throw new ct("Cannot use deleted val. handle = "+s);return Oe.get(s).value},it=s=>{switch(s){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return Oe.kb({pb:1,value:s})}};function Qt(s){return this.fromWireType(B[s>>>2>>>0])}var vr=(s,c)=>{switch(c){case 4:return function(g){return this.fromWireType(Pe[g>>>2>>>0])};case 8:return function(g){return this.fromWireType(be[g>>>3>>>0])};default:throw new TypeError(`invalid float width (${c}): ${s}`)}};function Hn(s){return this.fromWireType(te[s>>>2>>>0])}var $r=typeof TextDecoder<"u"?new TextDecoder("utf-16le"):void 0,Gn=(s,c)=>{for(var g=s>>1,$=g+c/2;!(g>=$)&&se[g>>>0];)++g;if(g<<=1,32>>0,g>>>0));for(g="",$=0;!($>=c/2);++$){var I=Y[s+2*$>>>1>>>0];if(I==0)break;g+=String.fromCharCode(I)}return g},me=(s,c,g)=>{if(g??=2147483647,2>g)return 0;g-=2;var $=c;g=g<2*s.length?g/2:s.length;for(var I=0;I>>1>>>0]=s.charCodeAt(I),c+=2;return Y[c>>>1>>>0]=0,c-$},er=s=>2*s.length,Fr=(s,c)=>{for(var g=0,$="";!(g>=c/4);){var I=B[s+4*g>>>2>>>0];if(I==0)break;++g,65536<=I?(I-=65536,$+=String.fromCharCode(55296|I>>10,56320|I&1023)):$+=String.fromCharCode(I)}return $},Ln=(s,c,g)=>{if(c>>>=0,g??=2147483647,4>g)return 0;var $=c;g=$+g-4;for(var I=0;I=D){var H=s.charCodeAt(++I);D=65536+((D&1023)<<10)|H&1023}if(B[c>>>2>>>0]=D,c+=4,c+4>g)break}return B[c>>>2>>>0]=0,c-$},jr=s=>{for(var c=0,g=0;g=$&&++g,c+=4}return c},_r=(s,c)=>{var g=Nt[s];if(g===void 0)throw s=Ft(s),g=ot(s),at(s),new ct(c+" has unknown type "+g);return g},Sr=(s,c,g)=>{var $=[];return s=s.toWireType($,g),$.length&&(te[c>>>2>>>0]=it($)),s},Ht=s=>{try{s()}catch(c){Ge(c)}};function qr(){var s=ue,c={};for(let[g,$]of Object.entries(s))c[g]=typeof $=="function"?function(){Dt.push(g);try{return $.apply(null,arguments)}finally{O||(Dt.pop(),Je&&mt===1&&Dt.length===0&&(mt=0,Ht(ln),typeof Fibers<"u"&&Fibers.Hb()))}}:$;return c}var mt=0,Je=null,xr=0,Dt=[],Cr={},Ar={},Kr=0,tr=null,Yr=[];function Zr(){return new Promise((s,c)=>{tr={resolve:s,reject:c}})}function Xr(){var s=Mt(65548),c=s+12;te[s>>>2>>>0]=c,te[s+4>>>2>>>0]=c+65536,c=Dt[0];var g=Cr[c];return g===void 0&&(g=Kr++,Cr[c]=g,Ar[g]=c),B[s+8>>>2>>>0]=g,s}function Jr(s){if(!O){if(mt===0){var c=!1,g=!1;s(($=0)=>{if(!O&&(xr=$,c=!0,g)){mt=2,Ht(()=>ft(Je)),typeof Browser<"u"&&Browser.lb.sb&&Browser.lb.resume(),$=!1;try{var I=(0,ue[Ar[B[Je+8>>>2>>>0]]])()}catch(X){I=X,$=!0}var D=!1;if(!Je){var H=tr;H&&(tr=null,($?H.reject:H.resolve)(I),D=!0)}if($&&!D)throw I}}),g=!0,c||(mt=1,Je=Xr(),typeof Browser<"u"&&Browser.lb.sb&&Browser.lb.pause(),Ht(()=>jt(Je)))}else mt===2?(mt=0,Ht(dt),at(Je),Je=null,Yr.forEach($=>{if(!O)try{$();try{U=U=$=U,r.onExit?.($),O=!0,p($,new Vt($))}catch(I){I instanceof Vt||I=="unwind"||p(1,I)}}catch(I){I instanceof Vt||I=="unwind"||p(1,I)}})):Ge(`invalid state: ${mt}`);return xr}}function Ir(s){return Jr(c=>{s().then(c)})}var Gt=[],Qr={},rr=s=>{var c=Qr[s];return c===void 0?ot(s):c},Tr=()=>typeof globalThis=="object"?globalThis:Function("return this")(),lt=s=>{var c=Gt.length;return Gt.push(s),c},Er=(s,c)=>{for(var g=Array(s),$=0;$>>2>>>0],"parameter "+$);return g},nr=(s,c)=>Object.defineProperty(c,"name",{value:s});function Fn(s){var c=Function;if(!(c instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof c} which is not a function`);var g=nr(c.name||"unknownFunctionName",function(){});return g.prototype=c.prototype,g=new g,s=c.apply(g,s),s instanceof Object?s:g}var Qe=s=>s%4===0&&(s%100!==0||s%400===0),en=[0,31,60,91,121,152,182,213,244,274,305,335],pt=[0,31,59,90,120,151,181,212,243,273,304,334],Pr=s=>{var c=Et(s)+1,g=Mt(c);return g&&bt(s,N,g,c),g},or=[],et=(s,c)=>{or.length=0;for(var g;g=N[s++>>>0];){var $=g!=105;$&=g!=112,c+=$&&c%8?4:0,or.push(g==112?te[c>>>2>>>0]:g==106?Ee[c>>>3]:g==105?B[c>>>2>>>0]:be[c>>>3>>>0]),c+=$?8:4}return or},Lt={},Ke=()=>{if(!tt){var s={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:a||"./this.program"},c;for(c in Lt)Lt[c]===void 0?delete s[c]:s[c]=Lt[c];var g=[];for(c in s)g.push(`${c}=${s[c]}`);tt=g}return tt},tt,tn=[null,[],[]],rn=[31,29,31,30,31,30,31,31,30,31,30,31],nn=[31,28,31,30,31,30,31,31,30,31,30,31];function on(s){var c=Array(Et(s)+1);return bt(s,c,0,c.length),c}function an(s,c,g,$){function I(k,ae,Ae){for(k=typeof k=="number"?k.toString():k||"";k.lengthkt?-1:0Ot-k.getDate())ae-=Ot-k.getDate()+1,k.setDate(1),11>Ae?k.setMonth(Ae+1):(k.setMonth(0),k.setFullYear(k.getFullYear()+1));else{k.setDate(k.getDate()+ae);break}}return Ae=new Date(k.getFullYear()+1,0,4),ae=X(new Date(k.getFullYear(),0,4)),Ae=X(Ae),0>=H(ae,k)?0>=H(Ae,k)?k.getFullYear()+1:k.getFullYear():k.getFullYear()-1}s>>>=0,c>>>=0,g>>>=0,$>>>=0;var j=te[$+40>>>2>>>0];$={Db:B[$>>>2>>>0],Cb:B[$+4>>>2>>>0],hb:B[$+8>>>2>>>0],mb:B[$+12>>>2>>>0],ib:B[$+16>>>2>>>0],bb:B[$+20>>>2>>>0],Wa:B[$+24>>>2>>>0],ab:B[$+28>>>2>>>0],Gb:B[$+32>>>2>>>0],Bb:B[$+36>>>2>>>0],Eb:j?Fe(j):""},g=Fe(g),j={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var ne in j)g=g.replace(new RegExp(ne,"g"),j[ne]);var fe="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),$e="January February March April May June July August September October November December".split(" ");j={"%a":k=>fe[k.Wa].substring(0,3),"%A":k=>fe[k.Wa],"%b":k=>$e[k.ib].substring(0,3),"%B":k=>$e[k.ib],"%C":k=>D((k.bb+1900)/100|0,2),"%d":k=>D(k.mb,2),"%e":k=>I(k.mb,2," "),"%g":k=>q(k).toString().substring(2),"%G":k=>q(k),"%H":k=>D(k.hb,2),"%I":k=>(k=k.hb,k==0?k=12:12{for(var ae=0,Ae=0;Ae<=k.ib-1;ae+=(Qe(k.bb+1900)?rn:nn)[Ae++]);return D(k.mb+ae,3)},"%m":k=>D(k.ib+1,2),"%M":k=>D(k.Cb,2),"%n":()=>`\n`,"%p":k=>0<=k.hb&&12>k.hb?"AM":"PM","%S":k=>D(k.Db,2),"%t":()=>"\t","%u":k=>k.Wa||7,"%U":k=>D(Math.floor((k.ab+7-k.Wa)/7),2),"%V":k=>{var ae=Math.floor((k.ab+7-(k.Wa+6)%7)/7);if(2>=(k.Wa+371-k.ab-2)%7&&ae++,ae)ae==53&&(Ae=(k.Wa+371-k.ab)%7,Ae==4||Ae==3&&Qe(k.bb)||(ae=1));else{ae=52;var Ae=(k.Wa+7-k.ab-1)%7;(Ae==4||Ae==5&&Qe(k.bb%400-1))&&ae++}return D(ae,2)},"%w":k=>k.Wa,"%W":k=>D(Math.floor((k.ab+7-(k.Wa+6)%7)/7),2),"%y":k=>(k.bb+1900).toString().substring(2),"%Y":k=>k.bb+1900,"%z":k=>{k=k.Bb;var ae=0<=k;return k=Math.abs(k)/60,(ae?"+":"-")+("0000"+(k/60*100+k%60)).slice(-4)},"%Z":k=>k.Eb,"%%":()=>"%"},g=g.replace(/%%/g,"\\0\\0");for(ne in j)g.includes(ne)&&(g=g.replace(new RegExp(ne,"g"),j[ne]($)));return g=g.replace(/\\0\\0/g,"%"),ne=on(g),ne.length>c?0:(M.set(ne,s>>>0),ne.length-1)}for(var sn=Array(256),ir=0;256>ir;++ir)sn[ir]=String.fromCharCode(ir);Gr=sn,ct=r.BindingError=class extends Error{constructor(s){super(s),this.name="BindingError"}},r.InternalError=class extends Error{constructor(s){super(s),this.name="InternalError"}},Object.assign(br.prototype,{get(s){return this.$a[s]},has(s){return this.$a[s]!==void 0},kb(s){var c=this.nb.pop()||this.$a.length;return this.$a[c]=s,c},jb(s){this.$a[s]=void 0,this.nb.push(s)}}),Oe.$a.push({value:void 0},{value:null},{value:!0},{value:!1}),Oe.cb=Oe.$a.length,r.count_emval_handles=()=>{for(var s=0,c=Oe.cb;c{await r.wb(s,c,g)})},a:function(s,c,g){throw s>>>=0,new Rt(s).kb(c>>>0,g>>>0),Jt=s,Wt++,Jt},x:function(){return 0},ba:function(){},O:function(){},Q:function(){},ca:function(){return 0},$:function(){},W:function(){},_:function(){},D:function(){},P:function(){},M:function(){},aa:function(){},N:function(){},G:function(s,c,g,$,I){c>>>=0,c=ot(c);var D=c.indexOf("u")!=-1;D&&(I=(1n<<64n)-1n),qe(s>>>0,{name:c,fromWireType:H=>H,toWireType:function(H,X){if(typeof X!="bigint"&&typeof X!="number")throw new TypeError(`Cannot convert "${fr(X)}" to ${this.name}`);if(X<$||X>I)throw new TypeError(`Passing a number "${fr(X)}" from JS side to C/C++ side to an argument of type "${c}", which is outside the valid range [${$}, ${I}]!`);return X},argPackAdvance:8,readValueFromPointer:yr(c,g>>>0,!D),eb:null})},ga:function(s,c,g,$){c=ot(c>>>0),qe(s>>>0,{name:c,fromWireType:function(I){return!!I},toWireType:function(I,D){return D?g:$},argPackAdvance:8,readValueFromPointer:function(I){return this.fromWireType(N[I>>>0])},eb:null})},fa:function(s,c){c=ot(c>>>0),qe(s>>>0,{name:c,fromWireType:g=>{var $=ve(g);return wr(g),$},toWireType:(g,$)=>it($),argPackAdvance:8,readValueFromPointer:Qt,eb:null})},F:function(s,c,g){c=ot(c>>>0),qe(s>>>0,{name:c,fromWireType:$=>$,toWireType:($,I)=>I,argPackAdvance:8,readValueFromPointer:vr(c,g>>>0),eb:null})},t:function(s,c,g,$,I){if(s>>>=0,g>>>=0,c=ot(c>>>0),I===-1&&(I=4294967295),I=X=>X,$===0){var D=32-8*g;I=X=>X<>>D}var H=c.includes("unsigned")?function(X,q){return q>>>0}:function(X,q){return q};qe(s,{name:c,fromWireType:I,toWireType:H,argPackAdvance:8,readValueFromPointer:yr(c,g,$!==0),eb:null})},n:function(s,c,g){function $(D){return new I(M.buffer,te[D+4>>>2>>>0],te[D>>>2>>>0])}var I=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array][c];g=ot(g>>>0),qe(s>>>0,{name:g,fromWireType:$,argPackAdvance:8,readValueFromPointer:$},{tb:!0})},H:function(s,c){c=ot(c>>>0);var g=c==="std::string";qe(s>>>0,{name:c,fromWireType:function($){var I=te[$>>>2>>>0],D=$+4;if(g)for(var H=D,X=0;X<=I;++X){var q=D+X;if(X==I||N[q>>>0]==0){if(H=Fe(H,q-H),j===void 0)var j=H;else j+=String.fromCharCode(0),j+=H;H=q+1}}else{for(j=Array(I),X=0;X>>0]);j=j.join("")}return at($),j},toWireType:function($,I){I instanceof ArrayBuffer&&(I=new Uint8Array(I));var D=typeof I=="string";if(!(D||I instanceof Uint8Array||I instanceof Uint8ClampedArray||I instanceof Int8Array))throw new ct("Cannot pass non-string to std::string");var H=g&&D?Et(I):I.length,X=Mt(4+H+1),q=X+4;if(te[X>>>2>>>0]=H,g&&D)bt(I,N,q,H+1);else if(D)for(D=0;D>>0]=j}else for(D=0;D>>0]=I[D];return $!==null&&$.push(at,X),X},argPackAdvance:8,readValueFromPointer:Hn,eb($){at($)}})},z:function(s,c,g){if(c>>>=0,g>>>=0,g=ot(g),c===2)var $=Gn,I=me,D=er,H=()=>se,X=1;else c===4&&($=Fr,I=Ln,D=jr,H=()=>te,X=2);qe(s>>>0,{name:g,fromWireType:q=>{for(var j=te[q>>>2>>>0],ne=H(),fe,$e=q+4,k=0;k<=j;++k){var ae=q+4+k*c;(k==j||ne[ae>>>X]==0)&&($e=$($e,ae-$e),fe===void 0?fe=$e:(fe+=String.fromCharCode(0),fe+=$e),$e=ae+c)}return at(q),fe},toWireType:(q,j)=>{if(typeof j!="string")throw new ct(`Cannot pass non-string to C++ string type ${g}`);var ne=D(j),fe=Mt(4+ne+c);return te[fe>>>2]=ne>>X,I(j,fe+4,ne+c),q!==null&&q.push(at,fe),fe},argPackAdvance:8,readValueFromPointer:Qt,eb(q){at(q)}})},ha:function(s,c){c=ot(c>>>0),qe(s>>>0,{ub:!0,name:c,argPackAdvance:0,fromWireType:()=>{},toWireType:()=>{}})},da:()=>1,s:function(s,c,g){return c>>>=0,g>>>=0,s=ve(s>>>0),c=_r(c,"emval::as"),Sr(c,g,s)},w:function(s){return s>>>=0,Ir(()=>(s=ve(s),s.then(it)))},o:function(s,c,g,$){return g>>>=0,$>>>=0,s=Gt[s>>>0],c=ve(c>>>0),s(null,c,g,$)},k:function(s,c,g,$,I){return g>>>=0,$>>>=0,I>>>=0,s=Gt[s>>>0],c=ve(c>>>0),g=rr(g),s(c,c[g],$,I)},b:wr,A:function(s,c){return c>>>=0,s=ve(s>>>0),c=ve(c),s==c},m:function(s){return s>>>=0,s===0?it(Tr()):(s=rr(s),it(Tr()[s]))},i:function(s,c,g){c=Er(s,c>>>0);var $=c.shift();s--;var I=`return function (obj, func, destructorsRef, args) {\n`,D=0,H=[];g===0&&H.push("obj");for(var X=["retType"],q=[$],j=0;jne.name).join(", ")}) => ${$.name}>`,lt(nr(g,s))},r:function(s,c){return c>>>=0,s=ve(s>>>0),c=ve(c),it(s[c])},e:function(s){s>>>=0,4>>0);for(var c=Array(s.length),g=0;g>>0))},j:function(){return it({})},h:function(s){s>>>=0;for(var c=ve(s);c.length;){var g=c.pop();c.pop()(g)}wr(s)},g:function(s,c,g){c>>>=0,g>>>=0,s=ve(s>>>0),c=ve(c),g=ve(g),s[c]=g},c:function(s,c){return c>>>=0,s=_r(s>>>0,"_emval_take_value"),s=s.readValueFromPointer(c),it(s)},T:function(s,c){s=-9007199254740992>s||9007199254740992>>=0,s=new Date(1e3*s),B[c>>>2>>>0]=s.getUTCSeconds(),B[c+4>>>2>>>0]=s.getUTCMinutes(),B[c+8>>>2>>>0]=s.getUTCHours(),B[c+12>>>2>>>0]=s.getUTCDate(),B[c+16>>>2>>>0]=s.getUTCMonth(),B[c+20>>>2>>>0]=s.getUTCFullYear()-1900,B[c+24>>>2>>>0]=s.getUTCDay(),B[c+28>>>2>>>0]=(s.getTime()-Date.UTC(s.getUTCFullYear(),0,1,0,0,0,0))/864e5|0},U:function(s,c){s=-9007199254740992>s||9007199254740992>>=0,s=new Date(1e3*s),B[c>>>2>>>0]=s.getSeconds(),B[c+4>>>2>>>0]=s.getMinutes(),B[c+8>>>2>>>0]=s.getHours(),B[c+12>>>2>>>0]=s.getDate(),B[c+16>>>2>>>0]=s.getMonth(),B[c+20>>>2>>>0]=s.getFullYear()-1900,B[c+24>>>2>>>0]=s.getDay(),B[c+28>>>2>>>0]=(Qe(s.getFullYear())?en:pt)[s.getMonth()]+s.getDate()-1|0,B[c+36>>>2>>>0]=-(60*s.getTimezoneOffset());var g=new Date(s.getFullYear(),6,1).getTimezoneOffset(),$=new Date(s.getFullYear(),0,1).getTimezoneOffset();B[c+32>>>2>>>0]=(g!=$&&s.getTimezoneOffset()==Math.min($,g))|0},V:function(s){s>>>=0;var c=new Date(B[s+20>>>2>>>0]+1900,B[s+16>>>2>>>0],B[s+12>>>2>>>0],B[s+8>>>2>>>0],B[s+4>>>2>>>0],B[s>>>2>>>0],0),g=B[s+32>>>2>>>0],$=c.getTimezoneOffset(),I=new Date(c.getFullYear(),6,1).getTimezoneOffset(),D=new Date(c.getFullYear(),0,1).getTimezoneOffset(),H=Math.min(D,I);return 0>g?B[s+32>>>2>>>0]=+(I!=D&&H==$):0>>2>>>0]=c.getDay(),B[s+28>>>2>>>0]=(Qe(c.getFullYear())?en:pt)[c.getMonth()]+c.getDate()-1|0,B[s>>>2>>>0]=c.getSeconds(),B[s+4>>>2>>>0]=c.getMinutes(),B[s+8>>>2>>>0]=c.getHours(),B[s+12>>>2>>>0]=c.getDate(),B[s+16>>>2>>>0]=c.getMonth(),B[s+20>>>2>>>0]=c.getYear(),s=c.getTime(),isNaN(s)?(B[un()>>>2>>>0]=61,s=-1):s/=1e3,BigInt(s)},R:function(){return-52},S:function(){},K:function(s,c,g){function $(q){return(q=q.toTimeString().match(/\\(([A-Za-z ]+)\\)$/))?q[1]:"GMT"}g>>>=0;var I=new Date().getFullYear(),D=new Date(I,0,1),H=new Date(I,6,1);I=D.getTimezoneOffset();var X=H.getTimezoneOffset();te[s>>>0>>>2>>>0]=60*Math.max(I,X),B[c>>>0>>>2>>>0]=+(I!=X),s=$(D),c=$(H),s=Pr(s),c=Pr(c),X>>2>>>0]=s,te[g+4>>>2>>>0]=c):(te[g>>>2>>>0]=c,te[g+4>>>2>>>0]=s)},v:()=>{Ge("")},f:function(s,c,g){return s>>>=0,c=et(c>>>0,g>>>0),Tt[s].apply(null,c)},I:function(s,c,g){return s>>>=0,c=et(c>>>0,g>>>0),Tt[s].apply(null,c)},E:()=>Date.now(),L:function(){return 4294901760},q:()=>performance.now(),J:function(s){s>>>=0;var c=N.length;if(4294901760=g;g*=2){var $=c*(1+.2/g);$=Math.min($,s+100663296);var I=Math;$=Math.max(s,$);e:{I=(I.min.call(I,4294901760,$+(65536-$%65536)%65536)-E.buffer.byteLength+65535)/65536;try{E.grow(I),Me();var D=1;break e}catch{}D=void 0}if(D)return!0}return!1},Y:function(s,c){s>>>=0,c>>>=0;var g=0;return Ke().forEach(($,I)=>{var D=c+g;for(I=te[s+4*I>>>2>>>0]=D,D=0;D<$.length;++D)M[I++>>>0>>>0]=$.charCodeAt(D);M[I>>>0>>>0]=0,g+=$.length+1}),0},Z:function(s,c){s>>>=0,c>>>=0;var g=Ke();te[s>>>2>>>0]=g.length;var $=0;return g.forEach(I=>$+=I.length+1),te[c>>>2>>>0]=$,0},y:()=>52,C:function(){return 52},X:function(){return 70},B:function(s,c,g,$){c>>>=0,g>>>=0,$>>>=0;for(var I=0,D=0;D>>2>>>0],X=te[c+4>>>2>>>0];c+=8;for(var q=0;q>>0],ne=tn[s];j===0||j===10?((s===1?C:S)(Bt(ne,0)),ne.length=0):ne.push(j)}I+=X}return te[$>>>2>>>0]=I,0},ea:an,p:function(s,c,g,$){return an(s>>>0,c>>>0,g>>>0,$>>>0)}},ue=function(){function s(g){return ue=g.exports,ue=qr(),ue=dn(),E=ue.ja,Me(),ye.unshift(ue.ka),we--,we==0&&(ze!==null&&(clearInterval(ze),ze=null),Re&&(g=Re,Re=null,g())),ue}var c={a:jn};if(we++,r.instantiateWasm)try{return r.instantiateWasm(c,s)}catch(g){S(`Module.instantiateWasm callback failed with error: ${g}`),i(g)}return It(c,function(g){s(g.instance)}).catch(i),{}}();r._OrtInit=(s,c)=>(r._OrtInit=ue.la)(s,c),r._OrtGetLastError=(s,c)=>(r._OrtGetLastError=ue.ma)(s,c),r._OrtCreateSessionOptions=(s,c,g,$,I,D,H,X,q,j)=>(r._OrtCreateSessionOptions=ue.na)(s,c,g,$,I,D,H,X,q,j),r._OrtAppendExecutionProvider=(s,c)=>(r._OrtAppendExecutionProvider=ue.oa)(s,c),r._OrtAddFreeDimensionOverride=(s,c,g)=>(r._OrtAddFreeDimensionOverride=ue.pa)(s,c,g),r._OrtAddSessionConfigEntry=(s,c,g)=>(r._OrtAddSessionConfigEntry=ue.qa)(s,c,g),r._OrtReleaseSessionOptions=s=>(r._OrtReleaseSessionOptions=ue.ra)(s),r._OrtCreateSession=(s,c,g)=>(r._OrtCreateSession=ue.sa)(s,c,g),r._OrtReleaseSession=s=>(r._OrtReleaseSession=ue.ta)(s),r._OrtGetInputOutputCount=(s,c,g)=>(r._OrtGetInputOutputCount=ue.ua)(s,c,g),r._OrtGetInputName=(s,c)=>(r._OrtGetInputName=ue.va)(s,c),r._OrtGetOutputName=(s,c)=>(r._OrtGetOutputName=ue.wa)(s,c),r._OrtFree=s=>(r._OrtFree=ue.xa)(s),r._OrtCreateTensor=(s,c,g,$,I,D)=>(r._OrtCreateTensor=ue.ya)(s,c,g,$,I,D),r._OrtGetTensorData=(s,c,g,$,I)=>(r._OrtGetTensorData=ue.za)(s,c,g,$,I),r._OrtReleaseTensor=s=>(r._OrtReleaseTensor=ue.Aa)(s),r._OrtCreateRunOptions=(s,c,g,$)=>(r._OrtCreateRunOptions=ue.Ba)(s,c,g,$),r._OrtAddRunConfigEntry=(s,c,g)=>(r._OrtAddRunConfigEntry=ue.Ca)(s,c,g),r._OrtReleaseRunOptions=s=>(r._OrtReleaseRunOptions=ue.Da)(s),r._OrtCreateBinding=s=>(r._OrtCreateBinding=ue.Ea)(s),r._OrtBindInput=(s,c,g)=>(r._OrtBindInput=ue.Fa)(s,c,g),r._OrtBindOutput=(s,c,g,$)=>(r._OrtBindOutput=ue.Ga)(s,c,g,$),r._OrtClearBoundOutputs=s=>(r._OrtClearBoundOutputs=ue.Ha)(s),r._OrtReleaseBinding=s=>(r._OrtReleaseBinding=ue.Ia)(s),r._OrtRunWithBinding=(s,c,g,$,I)=>(r._OrtRunWithBinding=ue.Ja)(s,c,g,$,I),r._OrtRun=(s,c,g,$,I,D,H,X)=>(r._OrtRun=ue.Ka)(s,c,g,$,I,D,H,X),r._OrtEndProfiling=s=>(r._OrtEndProfiling=ue.La)(s),r._JsepOutput=(s,c,g)=>(r._JsepOutput=ue.Ma)(s,c,g),r._JsepGetNodeName=s=>(r._JsepGetNodeName=ue.Na)(s);var un=()=>(un=ue.Oa)(),Mt=r._malloc=s=>(Mt=r._malloc=ue.Pa)(s),at=r._free=s=>(at=r._free=ue.Qa)(s),Ft=s=>(Ft=ue.Ra)(s),ar=()=>(ar=ue.Ta)(),sr=s=>(sr=ue.Ua)(s),Or=s=>(Or=ue.Va)(s),jt=s=>(jt=ue.Xa)(s),ln=()=>(ln=ue.Ya)(),ft=s=>(ft=ue.Za)(s),dt=()=>(dt=ue._a)();r.___start_em_js=957291,r.___stop_em_js=957452;function dn(){var s=ue;s=Object.assign({},s);var c=$=>()=>$()>>>0,g=$=>I=>$(I)>>>0;return s.Oa=c(s.Oa),s.Pa=g(s.Pa),s.Ra=g(s.Ra),s.Ta=c(s.Ta),s.Va=g(s.Va),s}r.stackAlloc=Or,r.stackSave=ar,r.stackRestore=sr,r.UTF8ToString=Fe,r.stringToUTF8=(s,c,g)=>bt(s,N,c,g),r.lengthBytesUTF8=Et;var Pt;Re=function s(){Pt||kr(),Pt||(Re=s)};function kr(){if(!(0bi)});var $i=Br(()=>{});var _i=Br(()=>{});var Si={};hn(Si,{cpus:()=>Vl});var Vl,xi=Q(()=>{Vl=void 0});var Ii=Br((Ai,ao)=>{"use strict";var Ci=(()=>{var e=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(e=e||__filename),function(t={}){function r(){return be.buffer!=de.buffer&&ke(),de}function o(){return be.buffer!=de.buffer&&ke(),we}function i(){return be.buffer!=de.buffer&&ke(),ze}function u(){return be.buffer!=de.buffer&&ke(),Re}function a(){return be.buffer!=de.buffer&&ke(),Ge}function p(){return be.buffer!=de.buffer&&ke(),F}function m(){return be.buffer!=de.buffer&&ke(),ie}function h(){return be.buffer!=de.buffer&&ke(),nt}var d=t,y,w;d.ready=new Promise((n,l)=>{y=n,w=l}),d.mountExternalData=(n,l)=>{(d.Fb||(d.Fb=new Map)).set(n,l)},d.unmountExternalData=()=>{delete d.Fb},d.jsepInit=(n,l,f,b,A,P,z,L)=>{d.rc=n,d.$b=l,d.bc=f,d.Ob=b,d.ac=A,d.eb=P,d.cc=z,d.dc=L,l=(Z,K,oe)=>(...ge)=>{let Se=dt,R=K?.();ge=Z(...ge);let le=K?.();return R!==le&&(Z=le,oe(R),K=oe=null),dt!=Se?I():ge},f=Z=>async(...K)=>{try{if(d.Eb)throw Error("Session already started");let oe=d.Eb={fc:K[0],errors:[]},ge=await Z(...K);if(d.Eb!==oe)throw Error("Session mismatch");n.flush();let Se=oe.errors;if(0le),0d._OrtCreateSession,Z=>d._OrtCreateSession=Z),d._OrtRun=f(l(d._OrtRun,()=>d._OrtRun,Z=>d._OrtRun=Z)),d._OrtRunWithBinding=f(l(d._OrtRunWithBinding,()=>d._OrtRunWithBinding,Z=>d._OrtRunWithBinding=Z)),d._OrtBindInput=l(d._OrtBindInput,()=>d._OrtBindInput,Z=>d._OrtBindInput=Z),d.jsepRegisterBuffer=(Z,K,oe,ge)=>n.registerBuffer(Z,K,oe,ge),d.jsepUnregisterBuffers=Z=>{n.unregisterBuffers(Z)},d.jsepGetBuffer=Z=>n.getBuffer(Z),d.jsepCreateDownloader=(Z,K,oe)=>n.createDownloader(Z,K,oe),d.jsepOnRunStart=()=>n.onRunStart()};var _=Object.assign({},d),v="./this.program",x=(n,l)=>{throw l},T=typeof window=="object",C=typeof importScripts=="function",S=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",E=d.ENVIRONMENT_IS_PTHREAD||!1,O="";function U(n){return d.locateFile?d.locateFile(n,O):O+n}var M,N,Y;if(S){var se=(ro(),ur(to)),B=(oo(),ur(no));O=C?B.dirname(O)+"/":__dirname+"/",M=(l,f)=>(l=Et(l)?new URL(l):B.normalize(l),se.readFileSync(l,f?void 0:"utf8")),Y=l=>(l=M(l,!0),l.buffer||(l=new Uint8Array(l)),l),N=(l,f,b,A=!0)=>{l=Et(l)?new URL(l):B.normalize(l),se.readFile(l,A?void 0:"utf8",(P,z)=>{P?b(P):f(A?z.buffer:z)})},!d.thisProgram&&1{throw process.exitCode=l,f},d.inspect=()=>"[Emscripten Module object]";let n;try{n=$i()}catch(l){throw console.error(\'The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?\'),l}global.Worker=n.Worker}else(T||C)&&(C?O=self.location.href:typeof document<"u"&&document.currentScript&&(O=document.currentScript.src),typeof e<"u"&&e&&(O=e),O.indexOf("blob:")!==0?O=O.substr(0,O.replace(/[?#].*/,"").lastIndexOf("/")+1):O="",S||(M=n=>{var l=new XMLHttpRequest;return l.open("GET",n,!1),l.send(null),l.responseText},C&&(Y=n=>{var l=new XMLHttpRequest;return l.open("GET",n,!1),l.responseType="arraybuffer",l.send(null),new Uint8Array(l.response)}),N=(n,l,f)=>{var b=new XMLHttpRequest;b.open("GET",n,!0),b.responseType="arraybuffer",b.onload=()=>{b.status==200||b.status==0&&b.response?l(b.response):f()},b.onerror=f,b.send(null)}));S&&typeof performance>"u"&&(global.performance=_i().performance);var te=console.log.bind(console),Pe=console.error.bind(console);S&&(te=(...n)=>se.writeSync(1,n.join(" ")+`\n`),Pe=(...n)=>se.writeSync(2,n.join(" ")+`\n`));var Ee=te,ee=Pe;Object.assign(d,_),_=null,typeof WebAssembly!="object"&&Bt("no native wasm support detected");var be,Me,pe=!1,ye,de,we,ze,Re,Ge,F,ie,he,Xe,nt;function ke(){var n=be.buffer;d.HEAP8=de=new Int8Array(n),d.HEAP16=ze=new Int16Array(n),d.HEAPU8=we=new Uint8Array(n),d.HEAPU16=Re=new Uint16Array(n),d.HEAP32=Ge=new Int32Array(n),d.HEAPU32=F=new Uint32Array(n),d.HEAPF32=ie=new Float32Array(n),d.HEAPF64=nt=new Float64Array(n),d.HEAP64=he=new BigInt64Array(n),d.HEAPU64=Xe=new BigUint64Array(n)}var Le=16777216;if(E)be=d.wasmMemory;else if(d.wasmMemory)be=d.wasmMemory;else if(be=new WebAssembly.Memory({initial:Le/65536,maximum:65536,shared:!0}),!(be.buffer instanceof SharedArrayBuffer))throw ee("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"),S&&ee("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)"),Error("bad memory");ke(),Le=be.buffer.byteLength;var It=[],Tt=[],Vt=[],Rt=0,Jt=null,Wt=null;function mr(){if(Rt--,Rt==0&&(Jt!==null&&(clearInterval(Jt),Jt=null),Wt)){var n=Wt;Wt=null,n()}}function Bt(n){throw n="Aborted("+n+")",ee(n),pe=!0,ye=1,n=new WebAssembly.RuntimeError(n+". Build with -sASSERTIONS for more info."),w(n),n}var Fe=n=>n.startsWith("data:application/octet-stream;base64,"),Et=n=>n.startsWith("file://"),bt;bt="ort-wasm-simd-threaded.wasm",Fe(bt)||(bt=U(bt));function fr(n){if(Y)return Y(n);throw"both async and sync fetching of the wasm failed"}function Gr(n){if(T||C){if(typeof fetch=="function"&&!Et(n))return fetch(n,{credentials:"same-origin"}).then(l=>{if(!l.ok)throw"failed to load wasm binary file at \'"+n+"\'";return l.arrayBuffer()}).catch(()=>fr(n));if(N)return new Promise((l,f)=>{N(n,b=>l(new Uint8Array(b)),f)})}return Promise.resolve().then(()=>fr(n))}function ot(n,l,f){return Gr(n).then(b=>WebAssembly.instantiate(b,l)).then(b=>b).then(f,b=>{ee(`failed to asynchronously prepare wasm: ${b}`),Bt(b)})}function hr(n,l){var f=bt;return typeof WebAssembly.instantiateStreaming!="function"||Fe(f)||Et(f)||S||typeof fetch!="function"?ot(f,n,l):fetch(f,{credentials:"same-origin"}).then(b=>WebAssembly.instantiateStreaming(b,n).then(l,function(A){return ee(`wasm streaming compile failed: ${A}`),ee("falling back to ArrayBuffer instantiation"),ot(f,n,l)}))}var Nt={946748:(n,l,f,b)=>{if(typeof d>"u"||!d.Fb)return 1;if(n=Oe(n>>>0),n.startsWith("./")&&(n=n.substring(2)),n=d.Fb.get(n),!n)return 2;if(l>>>=0,f>>>=0,b>>>=0,l+f>n.byteLength)return 3;try{return o().set(n.subarray(l,l+f),b>>>0),0}catch{return 4}},947249:n=>d.$b(n),947282:n=>d.bc(n),947314:(n,l,f)=>{d.Ob(n,l,f,!0)},947353:(n,l,f)=>{d.Ob(n,l,f)},947386:n=>{d.eb("Abs",n,void 0)},947437:n=>{d.eb("Neg",n,void 0)},947488:n=>{d.eb("Floor",n,void 0)},947541:n=>{d.eb("Ceil",n,void 0)},947593:n=>{d.eb("Reciprocal",n,void 0)},947651:n=>{d.eb("Sqrt",n,void 0)},947703:n=>{d.eb("Exp",n,void 0)},947754:n=>{d.eb("Erf",n,void 0)},947805:n=>{d.eb("Sigmoid",n,void 0)},947860:(n,l,f)=>{d.eb("HardSigmoid",n,{alpha:l,beta:f})},947939:n=>{d.eb("Log",n,void 0)},947990:n=>{d.eb("Sin",n,void 0)},948041:n=>{d.eb("Cos",n,void 0)},948092:n=>{d.eb("Tan",n,void 0)},948143:n=>{d.eb("Asin",n,void 0)},948195:n=>{d.eb("Acos",n,void 0)},948247:n=>{d.eb("Atan",n,void 0)},948299:n=>{d.eb("Sinh",n,void 0)},948351:n=>{d.eb("Cosh",n,void 0)},948403:n=>{d.eb("Asinh",n,void 0)},948456:n=>{d.eb("Acosh",n,void 0)},948509:n=>{d.eb("Atanh",n,void 0)},948562:n=>{d.eb("Tanh",n,void 0)},948614:n=>{d.eb("Not",n,void 0)},948665:(n,l,f)=>{d.eb("Clip",n,{min:l,max:f})},948734:n=>{d.eb("Clip",n,void 0)},948786:(n,l)=>{d.eb("Elu",n,{alpha:l})},948844:n=>{d.eb("Relu",n,void 0)},948896:(n,l)=>{d.eb("LeakyRelu",n,{alpha:l})},948960:(n,l)=>{d.eb("ThresholdedRelu",n,{alpha:l})},949030:(n,l)=>{d.eb("Cast",n,{to:l})},949088:n=>{d.eb("Add",n,void 0)},949139:n=>{d.eb("Sub",n,void 0)},949190:n=>{d.eb("Mul",n,void 0)},949241:n=>{d.eb("Div",n,void 0)},949292:n=>{d.eb("Pow",n,void 0)},949343:n=>{d.eb("Equal",n,void 0)},949396:n=>{d.eb("Greater",n,void 0)},949451:n=>{d.eb("GreaterOrEqual",n,void 0)},949513:n=>{d.eb("Less",n,void 0)},949565:n=>{d.eb("LessOrEqual",n,void 0)},949624:(n,l,f,b,A)=>{d.eb("ReduceMean",n,{keepDims:!!l,noopWithEmptyAxes:!!f,axes:b?Array.from(a().subarray(b>>>0,A>>>0)):[]})},949783:(n,l,f,b,A)=>{d.eb("ReduceMax",n,{keepDims:!!l,noopWithEmptyAxes:!!f,axes:b?Array.from(a().subarray(b>>>0,A>>>0)):[]})},949941:(n,l,f,b,A)=>{d.eb("ReduceMin",n,{keepDims:!!l,noopWithEmptyAxes:!!f,axes:b?Array.from(a().subarray(b>>>0,A>>>0)):[]})},950099:(n,l,f,b,A)=>{d.eb("ReduceProd",n,{keepDims:!!l,noopWithEmptyAxes:!!f,axes:b?Array.from(a().subarray(b>>>0,A>>>0)):[]})},950258:(n,l,f,b,A)=>{d.eb("ReduceSum",n,{keepDims:!!l,noopWithEmptyAxes:!!f,axes:b?Array.from(a().subarray(b>>>0,A>>>0)):[]})},950416:(n,l,f,b,A)=>{d.eb("ReduceL1",n,{keepDims:!!l,noopWithEmptyAxes:!!f,axes:b?Array.from(a().subarray(b>>>0,A>>>0)):[]})},950573:(n,l,f,b,A)=>{d.eb("ReduceL2",n,{keepDims:!!l,noopWithEmptyAxes:!!f,axes:b?Array.from(a().subarray(b>>>0,A>>>0)):[]})},950730:(n,l,f,b,A)=>{d.eb("ReduceLogSum",n,{keepDims:!!l,noopWithEmptyAxes:!!f,axes:b?Array.from(a().subarray(b>>>0,A>>>0)):[]})},950891:(n,l,f,b,A)=>{d.eb("ReduceSumSquare",n,{keepDims:!!l,noopWithEmptyAxes:!!f,axes:b?Array.from(a().subarray(b>>>0,A>>>0)):[]})},951055:(n,l,f,b,A)=>{d.eb("ReduceLogSumExp",n,{keepDims:!!l,noopWithEmptyAxes:!!f,axes:b?Array.from(a().subarray(b>>>0,A>>>0)):[]})},951219:n=>{d.eb("Where",n,void 0)},951272:(n,l,f)=>{d.eb("Transpose",n,{perm:l?Array.from(a().subarray(l>>>0,f>>>0)):[]})},951380:(n,l,f,b,A,P,z,L,Z,K,oe,ge,Se,R,le)=>{d.eb("ConvTranspose",n,{format:Z?"NHWC":"NCHW",autoPad:l,dilations:[f],group:b,kernel_shape:[A],pads:[P,z],strides:[L],wIsConst:()=>!!r()[K>>>0],outputPadding:oe?Array.from(a().subarray(oe>>>0,ge>>>0)):[],outputShape:Se?Array.from(a().subarray(Se>>>0,R>>>0)):[],activation:Oe(le)})},951782:(n,l,f,b,A,P,z,L,Z,K,oe,ge,Se,R)=>{d.eb("ConvTranspose",n,{format:L?"NHWC":"NCHW",autoPad:l,dilations:Array.from(a().subarray(f>>>0,(f>>>0)+2>>>0)),group:b,kernelShape:Array.from(a().subarray(A>>>0,(A>>>0)+2>>>0)),pads:Array.from(a().subarray(P>>>0,(P>>>0)+4>>>0)),strides:Array.from(a().subarray(z>>>0,(z>>>0)+2>>>0)),wIsConst:()=>!!r()[Z>>>0],outputPadding:K?Array.from(a().subarray(K>>>0,oe>>>0)):[],outputShape:ge?Array.from(a().subarray(ge>>>0,Se>>>0)):[],activation:Oe(R)})},952347:(n,l,f,b,A,P,z,L,Z,K,oe,ge,Se,R,le)=>{d.eb("ConvTranspose",n,{format:Z?"NHWC":"NCHW",autoPad:l,dilations:[f],group:b,kernel_shape:[A],pads:[P,z],strides:[L],wIsConst:()=>!!r()[K>>>0],outputPadding:oe?Array.from(a().subarray(oe>>>0,ge>>>0)):[],outputShape:Se?Array.from(a().subarray(Se>>>0,R>>>0)):[],activation:Oe(le)})},952749:(n,l,f,b,A,P,z,L,Z,K,oe,ge,Se,R)=>{d.eb("ConvTranspose",n,{format:L?"NHWC":"NCHW",autoPad:l,dilations:Array.from(a().subarray(f>>>0,(f>>>0)+2>>>0)),group:b,kernelShape:Array.from(a().subarray(A>>>0,(A>>>0)+2>>>0)),pads:Array.from(a().subarray(P>>>0,(P>>>0)+4>>>0)),strides:Array.from(a().subarray(z>>>0,(z>>>0)+2>>>0)),wIsConst:()=>!!r()[Z>>>0],outputPadding:K?Array.from(a().subarray(K>>>0,oe>>>0)):[],outputShape:ge?Array.from(a().subarray(ge>>>0,Se>>>0)):[],activation:Oe(R)})},953314:(n,l)=>{d.eb("GlobalAveragePool",n,{format:l?"NHWC":"NCHW"})},953405:(n,l,f,b,A,P,z,L,Z,K,oe,ge,Se,R,le,Ie)=>{d.eb("AveragePool",n,{format:Ie?"NHWC":"NCHW",auto_pad:l,ceil_mode:f,count_include_pad:b,storage_order:A,dilations:[P,z],kernel_shape:[L,Z],pads:[K,oe,ge,Se],strides:[R,le]})},953689:(n,l)=>{d.eb("GlobalAveragePool",n,{format:l?"NHWC":"NCHW"})},953780:(n,l,f,b,A,P,z,L,Z,K,oe,ge,Se,R,le,Ie)=>{d.eb("AveragePool",n,{format:Ie?"NHWC":"NCHW",auto_pad:l,ceil_mode:f,count_include_pad:b,storage_order:A,dilations:[P,z],kernel_shape:[L,Z],pads:[K,oe,ge,Se],strides:[R,le]})},954064:(n,l)=>{d.eb("GlobalMaxPool",n,{format:l?"NHWC":"NCHW"})},954151:(n,l,f,b,A,P,z,L,Z,K,oe,ge,Se,R,le,Ie)=>{d.eb("MaxPool",n,{format:Ie?"NHWC":"NCHW",auto_pad:l,ceil_mode:f,count_include_pad:b,storage_order:A,dilations:[P,z],kernel_shape:[L,Z],pads:[K,oe,ge,Se],strides:[R,le]})},954431:(n,l)=>{d.eb("GlobalMaxPool",n,{format:l?"NHWC":"NCHW"})},954518:(n,l,f,b,A,P,z,L,Z,K,oe,ge,Se,R,le,Ie)=>{d.eb("MaxPool",n,{format:Ie?"NHWC":"NCHW",auto_pad:l,ceil_mode:f,count_include_pad:b,storage_order:A,dilations:[P,z],kernel_shape:[L,Z],pads:[K,oe,ge,Se],strides:[R,le]})},954798:(n,l,f,b,A)=>{d.eb("Gemm",n,{alpha:l,beta:f,transA:b,transB:A})},954902:n=>{d.eb("MatMul",n,void 0)},954956:(n,l,f,b)=>{d.eb("ArgMax",n,{keepDims:!!l,selectLastIndex:!!f,axis:b})},955064:(n,l,f,b)=>{d.eb("ArgMin",n,{keepDims:!!l,selectLastIndex:!!f,axis:b})},955172:(n,l)=>{d.eb("Softmax",n,{axis:l})},955235:(n,l)=>{d.eb("Concat",n,{axis:l})},955295:(n,l,f,b,A)=>{d.eb("Split",n,{axis:l,numOutputs:f,splitSizes:b?Array.from(a().subarray(b>>>0,A>>>0)):[]})},955435:n=>{d.eb("Expand",n,void 0)},955489:(n,l)=>{d.eb("Gather",n,{axis:Number(l)})},955560:(n,l)=>{d.eb("GatherElements",n,{axis:Number(l)})},955639:(n,l,f,b,A,P,z,L,Z,K,oe)=>{d.eb("Resize",n,{antialias:l,axes:f?Array.from(a().subarray(f>>>0,b>>>0)):[],coordinateTransformMode:Oe(A),cubicCoeffA:P,excludeOutside:z,extrapolationValue:L,keepAspectRatioPolicy:Oe(Z),mode:Oe(K),nearestMode:Oe(oe)})},955985:(n,l,f,b,A,P,z)=>{d.eb("Slice",n,{starts:l?Array.from(a().subarray(l>>>0,f>>>0)):[],ends:b?Array.from(a().subarray(b>>>0,A>>>0)):[],axes:P?Array.from(a().subarray(P>>>0,z>>>0)):[]})},956201:n=>{d.eb("Tile",n,void 0)},956253:(n,l,f)=>{d.eb("LayerNormalization",n,{axis:Number(l),epsilon:Number(f)})},956360:(n,l,f)=>{d.eb("InstanceNormalization",n,{epsilon:l,format:f?"NHWC":"NCHW"})},956474:(n,l,f)=>{d.eb("InstanceNormalization",n,{epsilon:l,format:f?"NHWC":"NCHW"})},956588:n=>{d.eb("Range",n,void 0)},956641:(n,l)=>{d.eb("Einsum",n,{equation:Oe(l)})},956722:(n,l,f,b,A)=>{d.eb("Pad",n,{mode:l,value:f,pads:b?Array.from(a().subarray(b>>>0,A>>>0)):[]})},956849:(n,l,f,b,A,P)=>{d.eb("BatchNormalization",n,{epsilon:l,momentum:f,spatial:!!A,trainingMode:!!b,format:P?"NHWC":"NCHW"})},957018:(n,l,f,b,A,P)=>{d.eb("BatchNormalization",n,{epsilon:l,momentum:f,spatial:!!A,trainingMode:!!b,format:P?"NHWC":"NCHW"})},957187:(n,l,f)=>{d.eb("CumSum",n,{exclusive:Number(l),reverse:Number(f)})},957284:(n,l,f,b,A,P,z,L,Z)=>{d.eb("Attention",n,{numHeads:l,isUnidirectional:f,maskFilterValue:b,scale:A,doRotary:P,qkvHiddenSizes:z?Array.from(a().subarray(Number(L)>>>0,Number(L)+z>>>0)):[],pastPresentShareBuffer:!!Z})},957556:n=>{d.eb("Gelu",n,void 0)},957608:(n,l,f,b,A,P)=>{d.eb("MultiHeadAttention",n,{numHeads:l,isUnidirectional:f,maskFilterValue:b,scale:A,doRotary:P})},957767:n=>{d.eb("BiasAdd",n,void 0)},957822:n=>{d.eb("BiasSplitGelu",n,void 0)},957883:(n,l)=>{d.eb("SkipLayerNormalization",n,{epsilon:l})},957964:(n,l,f,b,A,P,z,L,Z,K,oe,ge,Se)=>{d.eb("Conv",n,{format:Z?"NHWC":"NCHW",auto_pad:l,dilations:[f],group:b,kernel_shape:[A],pads:P?Array.from(a().subarray(P>>>0,z>>>0)):[],strides:[L],w_is_const:()=>!!r()[K>>>0],activation:Oe(oe),activation_params:ge?Array.from(m().subarray(ge>>>0,Se>>>0)):[]})},958334:(n,l,f,b,A,P,z,L,Z,K,oe,ge,Se,R,le,Ie)=>{d.eb("Conv",n,{format:ge?"NHWC":"NCHW",auto_pad:l,dilations:[f,b],group:A,kernel_shape:[P,z],pads:L?Array.from(a().subarray(L>>>0,Z>>>0)):[],strides:[K,oe],w_is_const:()=>!!r()[Se>>>0],activation:Oe(R),activation_params:le?Array.from(m().subarray(le>>>0,Ie>>>0)):[]})},958725:n=>{d.cc(n)},958759:(n,l)=>d.dc(n,l,d.Eb.fc,d.Eb.errors)};function gr(n){this.name="ExitStatus",this.message=`Program terminated with exit(${n})`,this.status=n}var ct=n=>{n.terminate(),n.onmessage=()=>{}},Lr=n=>{me.yb.length==0&&($r(),me.Pb(me.yb[0]));var l=me.yb.pop();if(!l)return 6;me.zb.push(l),me.pb[n.xb]=l,l.xb=n.xb;var f={cmd:"run",start_routine:n.hc,arg:n.Vb,pthread_ptr:n.xb};return S&&l.unref(),l.postMessage(f,n.nc),0},qe=0,yr=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,br=(n,l,f)=>{l>>>=0;var b=l+f;for(f=l;n[f]&&!(f>=b);)++f;if(16A?b+=String.fromCharCode(A):(A-=65536,b+=String.fromCharCode(55296|A>>10,56320|A&1023))}}else b+=String.fromCharCode(A)}return b},Oe=(n,l)=>(n>>>=0)?br(o(),n,l):"",wr=n=>{var l=Jn();return n=n(),mn(l),n};function ve(n,l){var f=arguments.length-2,b=arguments;return wr(()=>{for(var A=2*f,P=Qn(8*A),z=P>>>3,L=0;L>>0]=Z)}return si(n,A,P,l)})}function it(n){if(E)return ve(0,1,n);ye=n,0{if(ye=n,E)throw Fr(n),"unwind";it(n)},vr=n=>{n instanceof gr||n=="unwind"||x(1,n)};function Hn(){for(var n=d.numThreads;n--;)$r();It.unshift(()=>{Rt++,Gn(()=>mr())})}function $r(){var n=U("ort-wasm-simd-threaded.worker.js");n=new Worker(n),me.yb.push(n)}function Gn(n){E?n():Promise.all(me.yb.map(me.Pb)).then(n)}var me={yb:[],zb:[],Ub:[],pb:{},Ib(){E?(me.receiveObjectTransfer=me.ec,me.threadInitTLS=me.Tb,me.setExitStatus=me.Sb):Hn()},Sb:n=>ye=n,sc:["$terminateWorker"],ic:()=>{for(var n of me.zb)ct(n);for(n of me.yb)ct(n);me.yb=[],me.zb=[],me.pb=[]},Rb:n=>{var l=n.xb;delete me.pb[l],me.yb.push(n),me.zb.splice(me.zb.indexOf(n),1),n.xb=0,Zn(l)},ec(){},Tb(){me.Ub.forEach(n=>n())},Pb:n=>new Promise(l=>{n.onmessage=P=>{P=P.data;var z=P.cmd;if(P.targetThread&&P.targetThread!=pn()){var L=me.pb[P.targetThread];L?L.postMessage(P,P.transferList):ee(`Internal error! Worker sent a message "${z}" to target pthread ${P.targetThread}, but that thread no longer exists!`)}else z==="checkMailbox"?Ft():z==="spawnThread"?Lr(P):z==="cleanupThread"?me.Rb(me.pb[P.thread]):z==="killThread"?(P=P.thread,z=me.pb[P],delete me.pb[P],ct(z),Zn(P),me.zb.splice(me.zb.indexOf(z),1),z.xb=0):z==="cancelThread"?me.pb[P.thread].postMessage({cmd:"cancel"}):z==="loaded"?(n.loaded=!0,S&&!n.xb&&n.unref(),l(n)):z==="alert"?alert(`Thread ${P.threadId}: ${P.text}`):P.target==="setimmediate"?n.postMessage(P):z==="callHandler"?d[P.handler](...P.args):z&&ee(`worker sent an unknown command ${z}`)},n.onerror=P=>{throw ee(`worker sent an error! ${P.filename}:${P.lineno}: ${P.message}`),P},S&&(n.on("message",P=>n.onmessage({data:P})),n.on("error",P=>n.onerror(P)));var f=[],b=["onExit"],A;for(A of b)d.hasOwnProperty(A)&&f.push(A);n.postMessage({cmd:"load",handlers:f,urlOrBlob:d.mainScriptUrlOrBlob||e,wasmMemory:be,wasmModule:Me})})};d.PThread=me;var er=n=>{for(;0{var n=pn(),l=p()[n+52>>>2>>>0];n=p()[n+56>>>2>>>0],li(l,l-n),mn(l)};function Fr(n){if(E)return ve(1,0,n);Qt(n)}d.invokeEntryPoint=(n,l)=>{n=di.apply(null,[n,l]),0>>2>>>0]=l},this.Mb=function(l){p()[this.Db+8>>>2>>>0]=l},this.Ib=function(l,f){this.Kb(),this.pc(l),this.Mb(f)},this.Kb=function(){p()[this.Db+16>>>2>>>0]=0}}var jr=0,_r=0;function Sr(n,l,f,b){return E?ve(2,1,n,l,f,b):Ht(n,l,f,b)}function Ht(n,l,f,b){if(n>>>=0,l>>>=0,f>>>=0,b>>>=0,typeof SharedArrayBuffer>"u")return ee("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;var A=[];return E&&A.length===0?Sr(n,l,f,b):(n={hc:f,xb:n,Vb:b,nc:A},E?(n.qc="spawnThread",postMessage(n,A),0):Lr(n))}function qr(n,l,f){return E?ve(3,1,n,l,f):0}function mt(n,l){if(E)return ve(4,1,n,l)}var Je=n=>{for(var l=0,f=0;f=b?l++:2047>=b?l+=2:55296<=b&&57343>=b?(l+=4,++f):l+=3}return l},xr=(n,l,f,b)=>{if(f>>>=0,!(0=z){var L=n.charCodeAt(++P);z=65536+((z&1023)<<10)|L&1023}if(127>=z){if(f>=b)break;l[f++>>>0]=z}else{if(2047>=z){if(f+1>=b)break;l[f++>>>0]=192|z>>6}else{if(65535>=z){if(f+2>=b)break;l[f++>>>0]=224|z>>12}else{if(f+3>=b)break;l[f++>>>0]=240|z>>18,l[f++>>>0]=128|z>>12&63}l[f++>>>0]=128|z>>6&63}l[f++>>>0]=128|z&63}}return l[f>>>0]=0,f-A},Dt=(n,l,f)=>xr(n,o(),l,f);function Cr(n,l){if(E)return ve(5,1,n,l)}function Ar(n,l,f){if(E)return ve(6,1,n,l,f)}function Kr(n,l,f){return E?ve(7,1,n,l,f):0}function tr(n,l){if(E)return ve(8,1,n,l)}function Yr(n,l,f){if(E)return ve(9,1,n,l,f)}function Zr(n,l,f,b){if(E)return ve(10,1,n,l,f,b)}function Xr(n,l,f,b){if(E)return ve(11,1,n,l,f,b)}function Jr(n,l,f,b){if(E)return ve(12,1,n,l,f,b)}function Ir(n){if(E)return ve(13,1,n)}function Gt(n,l){if(E)return ve(14,1,n,l)}function Qr(n,l,f){if(E)return ve(15,1,n,l,f)}var rr=n=>{if(n===null)return"null";var l=typeof n;return l==="object"||l==="array"||l==="function"?n.toString():""+n},Tr,lt=n=>{for(var l="";o()[n>>>0];)l+=Tr[o()[n++>>>0]];return l},Er={},nr={},Fn={},Qe;function en(n,l,f={}){var b=l.name;if(!n)throw new Qe(`type "${b}" must have a positive integer typeid pointer`);if(nr.hasOwnProperty(n)){if(f.Yb)return;throw new Qe(`Cannot register type \'${b}\' twice`)}nr[n]=l,delete Fn[n],Er.hasOwnProperty(n)&&(l=Er[n],delete Er[n],l.forEach(A=>A()))}function pt(n,l,f={}){if(!("argPackAdvance"in l))throw new TypeError("registerType registeredInstance requires argPackAdvance");en(n,l,f)}var Pr=(n,l,f)=>{switch(l){case 1:return f?b=>r()[b>>>0>>>0]:b=>o()[b>>>0>>>0];case 2:return f?b=>i()[b>>>1>>>0]:b=>u()[b>>>1>>>0];case 4:return f?b=>a()[b>>>2>>>0]:b=>p()[b>>>2>>>0];case 8:return f?b=>he[b>>>3]:b=>Xe[b>>>3];default:throw new TypeError(`invalid integer width (${l}): ${n}`)}};function or(){this.wb=[void 0],this.Nb=[]}var et=new or;function Lt(n){n>>>=0,n>=et.Db&&--et.get(n).Qb===0&&et.Mb(n)}var Ke=n=>{if(!n)throw new Qe("Cannot use deleted val. handle = "+n);return et.get(n).value},tt=n=>{switch(n){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return et.Kb({Qb:1,value:n})}};function tn(n){return this.fromWireType(a()[n>>>2>>>0])}var rn=(n,l)=>{switch(l){case 4:return function(f){return this.fromWireType(m()[f>>>2>>>0])};case 8:return function(f){return this.fromWireType(h()[f>>>3>>>0])};default:throw new TypeError(`invalid float width (${l}): ${n}`)}};function nn(n){return this.fromWireType(p()[n>>>2>>>0])}var on=typeof TextDecoder<"u"?new TextDecoder("utf-16le"):void 0,an=(n,l)=>{for(var f=n>>1,b=f+l/2;!(f>=b)&&u()[f>>>0];)++f;if(f<<=1,32=l/2);++b){var A=i()[n+2*b>>>1>>>0];if(A==0)break;f+=String.fromCharCode(A)}return f},sn=(n,l,f)=>{if(f??=2147483647,2>f)return 0;f-=2;var b=l;f=f<2*n.length?f/2:n.length;for(var A=0;A>>1>>>0]=P,l+=2}return i()[l>>>1>>>0]=0,l-b},ir=n=>2*n.length,jn=(n,l)=>{for(var f=0,b="";!(f>=l/4);){var A=a()[n+4*f>>>2>>>0];if(A==0)break;++f,65536<=A?(A-=65536,b+=String.fromCharCode(55296|A>>10,56320|A&1023)):b+=String.fromCharCode(A)}return b},ue=(n,l,f)=>{if(l>>>=0,f??=2147483647,4>f)return 0;var b=l;f=b+f-4;for(var A=0;A=P){var z=n.charCodeAt(++A);P=65536+((P&1023)<<10)|z&1023}if(a()[l>>>2>>>0]=P,l+=4,l+4>f)break}return a()[l>>>2>>>0]=0,l-b},un=n=>{for(var l=0,f=0;f=b&&++f,l+=4}return l},Mt=()=>{if(!(0>>=0,typeof Atomics.oc=="function"&&(Atomics.oc(a(),n>>>2,n).value.then(Ft),n+=128,Atomics.store(a(),n>>>2,1))}d.__emscripten_thread_mailbox_await=at;var Ft=()=>{var n=pn();if(n&&(at(n),!pe))try{ui(),Mt()}catch(l){vr(l)}};d.checkMailbox=Ft;var ar=[],sr=(n,l)=>{var f=nr[n];if(f===void 0)throw n=ii(n),f=lt(n),wt(n),new Qe(l+" has unknown type "+f);return f},Or=(n,l,f)=>{var b=[];return n=n.toWireType(b,f),b.length&&(p()[l>>>2>>>0]=tt(b)),n},jt=n=>{try{n()}catch(l){Bt(l)}};function ln(){var n=re,l={};for(let[f,b]of Object.entries(n))l[f]=typeof b=="function"?function(){Pt.push(f);try{return b.apply(null,arguments)}finally{pe||(Pt.pop(),dt&&ft===1&&Pt.length===0&&(ft=0,qe+=1,jt(pi),typeof Fibers<"u"&&Fibers.uc()))}}:b;return l}var ft=0,dt=null,dn=0,Pt=[],kr={},s={},c=0,g=null,$=[];function I(){return new Promise((n,l)=>{g={resolve:n,reject:l}})}function D(){var n=Rr(65548),l=n+12;p()[n>>>2>>>0]=l,p()[n+4>>>2>>>0]=l+65536,l=Pt[0];var f=kr[l];return f===void 0&&(f=c++,kr[l]=f,s[f]=l),l=f,a()[n+8>>>2>>>0]=l,n}function H(){var n=a()[dt+8>>>2>>>0];return n=re[s[n]],--qe,n()}function X(n){if(!pe){if(ft===0){var l=!1,f=!1;n((b=0)=>{if(!pe&&(dn=b,l=!0,f)){ft=2,jt(()=>mi(dt)),typeof Browser<"u"&&Browser.Jb.Xb&&Browser.Jb.resume(),b=!1;try{var A=H()}catch(L){A=L,b=!0}var P=!1;if(!dt){var z=g;z&&(g=null,(b?z.reject:z.resolve)(A),P=!0)}if(b&&!P)throw A}}),f=!0,l||(ft=1,dt=D(),typeof Browser<"u"&&Browser.Jb.Xb&&Browser.Jb.pause(),jt(()=>ci(dt)))}else ft===2?(ft=0,jt(fi),wt(dt),dt=null,$.forEach(b=>{if(!pe)try{b(),Mt()}catch(A){vr(A)}})):Bt(`invalid state: ${ft}`);return dn}}function q(n){return X(l=>{n().then(l)})}var j=[],ne={},fe=n=>{var l=ne[n];return l===void 0?lt(n):l},$e=()=>typeof globalThis=="object"?globalThis:Function("return this")(),k=n=>{var l=j.length;return j.push(n),l},ae=(n,l)=>{for(var f=Array(n),b=0;b>>2>>>0],"parameter "+b);return f},Ae=(n,l)=>Object.defineProperty(l,"name",{value:n});function Ot(n){var l=Function;if(!(l instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof l} which is not a function`);var f=Ae(l.name||"unknownFunctionName",function(){});return f.prototype=l.prototype,f=new f,n=l.apply(f,n),n instanceof Object?n:f}var kt=n=>n%4===0&&(n%100!==0||n%400===0),No=[0,31,60,91,121,152,182,213,244,274,305,335],Ho=[0,31,59,90,120,151,181,212,243,273,304,334];function Go(n,l,f,b,A,P,z){return E?ve(16,1,n,l,f,b,A,P,z):-52}function Lo(n,l,f,b,A,P){if(E)return ve(17,1,n,l,f,b,A,P)}var Fo=n=>{var l=Je(n)+1,f=Rr(l);return f&&Dt(n,f,l),f},qn=[],jo=(n,l)=>{qn.length=0;for(var f;f=o()[n++>>>0];){var b=f!=105;b&=f!=112,l+=b&&l%8?4:0,qn.push(f==112?p()[l>>>2>>>0]:f==106?he[l>>>3]:f==105?a()[l>>>2>>>0]:h()[l>>>3>>>0]),l+=b?8:4}return qn},Kn={},qo=()=>{if(!Yn){var n={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:v||"./this.program"},l;for(l in Kn)Kn[l]===void 0?delete n[l]:n[l]=Kn[l];var f=[];for(l in n)f.push(`${l}=${n[l]}`);Yn=f}return Yn},Yn;function Ko(n,l){if(E)return ve(18,1,n,l);n>>>=0,l>>>=0;var f=0;return qo().forEach((b,A)=>{var P=l+f;for(A=p()[n+4*A>>>2>>>0]=P,P=0;P>>0>>>0]=b.charCodeAt(P);r()[A>>>0>>>0]=0,f+=b.length+1}),0}function Yo(n,l){if(E)return ve(19,1,n,l);n>>>=0,l>>>=0;var f=qo();p()[n>>>2>>>0]=f.length;var b=0;return f.forEach(A=>b+=A.length+1),p()[l>>>2>>>0]=b,0}function Zo(n){return E?ve(20,1,n):52}function Xo(n,l,f,b){return E?ve(21,1,n,l,f,b):52}function Jo(n,l,f,b){return E?ve(22,1,n,l,f,b):70}var Al=[null,[],[]];function Qo(n,l,f,b){if(E)return ve(23,1,n,l,f,b);l>>>=0,f>>>=0,b>>>=0;for(var A=0,P=0;P>>2>>>0],L=p()[l+4>>>2>>>0];l+=8;for(var Z=0;Z>>0],oe=Al[n];K===0||K===10?((n===1?Ee:ee)(br(oe,0)),oe.length=0):oe.push(K)}A+=L}return p()[b>>>2>>>0]=A,0}var ei=[31,29,31,30,31,30,31,31,30,31,30,31],ti=[31,28,31,30,31,30,31,31,30,31,30,31];function Il(n){var l=Array(Je(n)+1);return xr(n,l,0,l.length),l}var Tl=(n,l)=>{r().set(n,l>>>0)};function ri(n,l,f,b){function A(R,le,Ie){for(R=typeof R=="number"?R.toString():R||"";R.lengthgi?-1:0qt-R.getDate())le-=qt-R.getDate()+1,R.setDate(1),11>Ie?R.setMonth(Ie+1):(R.setMonth(0),R.setFullYear(R.getFullYear()+1));else{R.setDate(R.getDate()+le);break}}return Ie=new Date(R.getFullYear()+1,0,4),le=L(new Date(R.getFullYear(),0,4)),Ie=L(Ie),0>=z(le,R)?0>=z(Ie,R)?R.getFullYear()+1:R.getFullYear():R.getFullYear()-1}n>>>=0,l>>>=0,f>>>=0,b>>>=0;var K=p()[b+40>>>2>>>0];b={lc:a()[b>>>2>>>0],kc:a()[b+4>>>2>>>0],Gb:a()[b+8>>>2>>>0],Lb:a()[b+12>>>2>>>0],Hb:a()[b+16>>>2>>>0],Bb:a()[b+20>>>2>>>0],vb:a()[b+24>>>2>>>0],Ab:a()[b+28>>>2>>>0],tc:a()[b+32>>>2>>>0],jc:a()[b+36>>>2>>>0],mc:K?Oe(K):""},f=Oe(f),K={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var oe in K)f=f.replace(new RegExp(oe,"g"),K[oe]);var ge="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),Se="January February March April May June July August September October November December".split(" ");K={"%a":R=>ge[R.vb].substring(0,3),"%A":R=>ge[R.vb],"%b":R=>Se[R.Hb].substring(0,3),"%B":R=>Se[R.Hb],"%C":R=>P((R.Bb+1900)/100|0,2),"%d":R=>P(R.Lb,2),"%e":R=>A(R.Lb,2," "),"%g":R=>Z(R).toString().substring(2),"%G":R=>Z(R),"%H":R=>P(R.Gb,2),"%I":R=>(R=R.Gb,R==0?R=12:12{for(var le=0,Ie=0;Ie<=R.Hb-1;le+=(kt(R.Bb+1900)?ei:ti)[Ie++]);return P(R.Lb+le,3)},"%m":R=>P(R.Hb+1,2),"%M":R=>P(R.kc,2),"%n":()=>`\n`,"%p":R=>0<=R.Gb&&12>R.Gb?"AM":"PM","%S":R=>P(R.lc,2),"%t":()=>"\t","%u":R=>R.vb||7,"%U":R=>P(Math.floor((R.Ab+7-R.vb)/7),2),"%V":R=>{var le=Math.floor((R.Ab+7-(R.vb+6)%7)/7);if(2>=(R.vb+371-R.Ab-2)%7&&le++,le)le==53&&(Ie=(R.vb+371-R.Ab)%7,Ie==4||Ie==3&&kt(R.Bb)||(le=1));else{le=52;var Ie=(R.vb+7-R.Ab-1)%7;(Ie==4||Ie==5&&kt(R.Bb%400-1))&&le++}return P(le,2)},"%w":R=>R.vb,"%W":R=>P(Math.floor((R.Ab+7-(R.vb+6)%7)/7),2),"%y":R=>(R.Bb+1900).toString().substring(2),"%Y":R=>R.Bb+1900,"%z":R=>{R=R.jc;var le=0<=R;return R=Math.abs(R)/60,(le?"+":"-")+("0000"+(R/60*100+R%60)).slice(-4)},"%Z":R=>R.mc,"%%":()=>"%"},f=f.replace(/%%/g,"\\0\\0");for(oe in K)f.includes(oe)&&(f=f.replace(new RegExp(oe,"g"),K[oe](b)));return f=f.replace(/\\0\\0/g,"%"),oe=Il(f),oe.length>l?0:(Tl(oe,n),oe.length-1)}me.Ib();for(var ni=Array(256),cn=0;256>cn;++cn)ni[cn]=String.fromCharCode(cn);Tr=ni,Qe=d.BindingError=class extends Error{constructor(n){super(n),this.name="BindingError"}},d.InternalError=class extends Error{constructor(n){super(n),this.name="InternalError"}},Object.assign(or.prototype,{get(n){return this.wb[n]},has(n){return this.wb[n]!==void 0},Kb(n){var l=this.Nb.pop()||this.wb.length;return this.wb[l]=n,l},Mb(n){this.wb[n]=void 0,this.Nb.push(n)}}),et.wb.push({value:void 0},{value:null},{value:!0},{value:!1}),et.Db=et.wb.length,d.count_emval_handles=()=>{for(var n=0,l=et.Db;l{await d.ac(n,l,f)})},b:function(n,l,f){throw n>>>=0,new Ln(n).Ib(l>>>0,f>>>0),jr=n,_r++,jr},fa:function(n){ai(n>>>0,!C,1,!T,131072,!1),me.Tb()},D:function(n){n>>>=0,E?postMessage({cmd:"cleanupThread",thread:n}):me.Rb(me.pb[n])},X:Ht,z:qr,la:mt,T:Cr,V:Ar,ma:Kr,ja:tr,ca:Yr,ia:Zr,H:Xr,U:Jr,R:Ir,ka:Gt,S:Qr,K:function(n,l,f,b,A){n>>>=0,l>>>=0,f>>>=0,l=lt(l);var P=l.indexOf("u")!=-1;P&&(A=(1n<<64n)-1n),pt(n,{name:l,fromWireType:z=>z,toWireType:function(z,L){if(typeof L!="bigint"&&typeof L!="number")throw new TypeError(`Cannot convert "${rr(L)}" to ${this.name}`);if(LA)throw new TypeError(`Passing a number "${rr(L)}" from JS side to C/C++ side to an argument of type "${l}", which is outside the valid range [${b}, ${A}]!`);return L},argPackAdvance:8,readValueFromPointer:Pr(l,f,!P),Cb:null})},sa:function(n,l,f,b){n>>>=0,l=lt(l>>>0),pt(n,{name:l,fromWireType:function(A){return!!A},toWireType:function(A,P){return P?f:b},argPackAdvance:8,readValueFromPointer:function(A){return this.fromWireType(o()[A>>>0])},Cb:null})},ra:function(n,l){n>>>=0,l=lt(l>>>0),pt(n,{name:l,fromWireType:f=>{var b=Ke(f);return Lt(f),b},toWireType:(f,b)=>tt(b),argPackAdvance:8,readValueFromPointer:tn,Cb:null})},J:function(n,l,f){n>>>=0,f>>>=0,l=lt(l>>>0),pt(n,{name:l,fromWireType:b=>b,toWireType:(b,A)=>A,argPackAdvance:8,readValueFromPointer:rn(l,f),Cb:null})},v:function(n,l,f,b,A){if(n>>>=0,f>>>=0,l=lt(l>>>0),A===-1&&(A=4294967295),A=L=>L,b===0){var P=32-8*f;A=L=>L<

>>P}var z=l.includes("unsigned")?function(L,Z){return Z>>>0}:function(L,Z){return Z};pt(n,{name:l,fromWireType:A,toWireType:z,argPackAdvance:8,readValueFromPointer:Pr(l,f,b!==0),Cb:null})},o:function(n,l,f){function b(P){var z=p()[P>>>2>>>0];return P=p()[P+4>>>2>>>0],new A(r().buffer,P,z)}n>>>=0;var A=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array][l];f=lt(f>>>0),pt(n,{name:f,fromWireType:b,argPackAdvance:8,readValueFromPointer:b},{Yb:!0})},L:function(n,l){n>>>=0,l=lt(l>>>0);var f=l==="std::string";pt(n,{name:l,fromWireType:function(b){var A=p()[b>>>2>>>0],P=b+4;if(f)for(var z=P,L=0;L<=A;++L){var Z=P+L;if(L==A||o()[Z>>>0]==0){if(z=Oe(z,Z-z),K===void 0)var K=z;else K+=String.fromCharCode(0),K+=z;z=Z+1}}else{for(K=Array(A),L=0;L>>0]);K=K.join("")}return wt(b),K},toWireType:function(b,A){A instanceof ArrayBuffer&&(A=new Uint8Array(A));var P=typeof A=="string";if(!(P||A instanceof Uint8Array||A instanceof Uint8ClampedArray||A instanceof Int8Array))throw new Qe("Cannot pass non-string to std::string");var z=f&&P?Je(A):A.length,L=Rr(4+z+1),Z=L+4;if(p()[L>>>2>>>0]=z,f&&P)Dt(A,Z,z+1);else if(P)for(P=0;P>>0]=K}else for(P=0;P>>0]=A[P];return b!==null&&b.push(wt,L),L},argPackAdvance:8,readValueFromPointer:nn,Cb(b){wt(b)}})},B:function(n,l,f){if(n>>>=0,l>>>=0,f>>>=0,f=lt(f),l===2)var b=an,A=sn,P=ir,z=()=>u(),L=1;else l===4&&(b=jn,A=ue,P=un,z=()=>p(),L=2);pt(n,{name:f,fromWireType:Z=>{for(var K=p()[Z>>>2>>>0],oe=z(),ge,Se=Z+4,R=0;R<=K;++R){var le=Z+4+R*l;(R==K||oe[le>>>L]==0)&&(Se=b(Se,le-Se),ge===void 0?ge=Se:(ge+=String.fromCharCode(0),ge+=Se),Se=le+l)}return wt(Z),ge},toWireType:(Z,K)=>{if(typeof K!="string")throw new Qe(`Cannot pass non-string to C++ string type ${f}`);var oe=P(K),ge=Rr(4+oe+l);return p()[ge>>>2]=oe>>L,A(K,ge+4,oe+l),Z!==null&&Z.push(wt,ge),ge},argPackAdvance:8,readValueFromPointer:tn,Cb(Z){wt(Z)}})},ta:function(n,l){n>>>=0,l=lt(l>>>0),pt(n,{Zb:!0,name:l,argPackAdvance:0,fromWireType:()=>{},toWireType:()=>{}})},qa:()=>1,P:function(n,l){n>>>=0,n==l>>>0?setTimeout(()=>Ft()):E?postMessage({targetThread:n,cmd:"checkMailbox"}):(n=me.pb[n])&&n.postMessage({cmd:"checkMailbox"})},Y:function(n,l,f,b){l>>>=0,f/=2,ar.length=f,b=b>>>0>>>3;for(var A=0;A>>0];return n=0>n?Nt[-n-1]:El[n],me.Wb=l,l=n.apply(null,ar),me.Wb=0,l},ea:at,pa:function(n){S&&me.pb[n>>>0].ref()},t:function(n,l,f){return l>>>=0,f>>>=0,n=Ke(n>>>0),l=sr(l,"emval::as"),Or(l,f,n)},y:function(n){return n>>>=0,q(()=>(n=Ke(n),n.then(tt)))},p:function(n,l,f,b){return f>>>=0,b>>>=0,n=j[n>>>0],l=Ke(l>>>0),n(null,l,f,b)},k:function(n,l,f,b,A){return f>>>=0,b>>>=0,A>>>=0,n=j[n>>>0],l=Ke(l>>>0),f=fe(f),n(l,l[f],b,A)},c:Lt,C:function(n,l){return l>>>=0,n=Ke(n>>>0),l=Ke(l),n==l},n:function(n){return n>>>=0,n===0?tt($e()):(n=fe(n),tt($e()[n]))},j:function(n,l,f){l=ae(n,l>>>0);var b=l.shift();n--;var A=`return function (obj, func, destructorsRef, args) {\n`,P=0,z=[];f===0&&z.push("obj");for(var L=["retType"],Z=[b],K=0;Koe.name).join(", ")}) => ${b.name}>`,k(Ae(f,n))},s:function(n,l){return l>>>=0,n=Ke(n>>>0),l=Ke(l),tt(n[l])},e:function(n){n>>>=0,4>>0);for(var l=Array(n.length),f=0;f>>0))},l:function(){return tt({})},i:function(n){n>>>=0;for(var l=Ke(n);l.length;){var f=l.pop();l.pop()(f)}Lt(n)},h:function(n,l,f){l>>>=0,f>>>=0,n=Ke(n>>>0),l=Ke(l),f=Ke(f),n[l]=f},d:function(n,l){return l>>>=0,n=sr(n>>>0,"_emval_take_value"),n=n.readValueFromPointer(l),tt(n)},$:function(n,l){n=-9007199254740992>n||9007199254740992>>=0,n=new Date(1e3*n),a()[l>>>2>>>0]=n.getUTCSeconds(),a()[l+4>>>2>>>0]=n.getUTCMinutes(),a()[l+8>>>2>>>0]=n.getUTCHours(),a()[l+12>>>2>>>0]=n.getUTCDate(),a()[l+16>>>2>>>0]=n.getUTCMonth(),a()[l+20>>>2>>>0]=n.getUTCFullYear()-1900,a()[l+24>>>2>>>0]=n.getUTCDay(),n=(n.getTime()-Date.UTC(n.getUTCFullYear(),0,1,0,0,0,0))/864e5|0,a()[l+28>>>2>>>0]=n},aa:function(n,l){n=-9007199254740992>n||9007199254740992>>=0,n=new Date(1e3*n),a()[l>>>2>>>0]=n.getSeconds(),a()[l+4>>>2>>>0]=n.getMinutes(),a()[l+8>>>2>>>0]=n.getHours(),a()[l+12>>>2>>>0]=n.getDate(),a()[l+16>>>2>>>0]=n.getMonth(),a()[l+20>>>2>>>0]=n.getFullYear()-1900,a()[l+24>>>2>>>0]=n.getDay();var f=(kt(n.getFullYear())?No:Ho)[n.getMonth()]+n.getDate()-1|0;a()[l+28>>>2>>>0]=f,a()[l+36>>>2>>>0]=-(60*n.getTimezoneOffset()),f=new Date(n.getFullYear(),6,1).getTimezoneOffset();var b=new Date(n.getFullYear(),0,1).getTimezoneOffset();n=(f!=b&&n.getTimezoneOffset()==Math.min(b,f))|0,a()[l+32>>>2>>>0]=n},ba:function(n){n>>>=0;var l=new Date(a()[n+20>>>2>>>0]+1900,a()[n+16>>>2>>>0],a()[n+12>>>2>>>0],a()[n+8>>>2>>>0],a()[n+4>>>2>>>0],a()[n>>>2>>>0],0),f=a()[n+32>>>2>>>0],b=l.getTimezoneOffset(),A=new Date(l.getFullYear(),6,1).getTimezoneOffset(),P=new Date(l.getFullYear(),0,1).getTimezoneOffset(),z=Math.min(P,A);return 0>f?a()[n+32>>>2>>>0]=+(A!=P&&z==b):0>>2>>>0]=l.getDay(),f=(kt(l.getFullYear())?No:Ho)[l.getMonth()]+l.getDate()-1|0,a()[n+28>>>2>>>0]=f,a()[n>>>2>>>0]=l.getSeconds(),a()[n+4>>>2>>>0]=l.getMinutes(),a()[n+8>>>2>>>0]=l.getHours(),a()[n+12>>>2>>>0]=l.getDate(),a()[n+16>>>2>>>0]=l.getMonth(),a()[n+20>>>2>>>0]=l.getYear(),n=l.getTime(),isNaN(n)?(a()[oi()>>>2>>>0]=61,n=-1):n/=1e3,BigInt(n)},Z:Go,_:Lo,O:function(n,l,f){function b(K){return(K=K.toTimeString().match(/\\(([A-Za-z ]+)\\)$/))?K[1]:"GMT"}n>>>=0,l>>>=0,f>>>=0;var A=new Date().getFullYear(),P=new Date(A,0,1),z=new Date(A,6,1);A=P.getTimezoneOffset();var L=z.getTimezoneOffset(),Z=Math.max(A,L);p()[n>>>2>>>0]=60*Z,a()[l>>>2>>>0]=+(A!=L),n=b(P),l=b(z),n=Fo(n),l=Fo(l),L>>2>>>0]=n,p()[f+4>>>2>>>0]=l):(p()[f>>>2>>>0]=l,p()[f+4>>>2>>>0]=n)},q:()=>{Bt("")},g:function(n,l,f){return n>>>=0,l=jo(l>>>0,f>>>0),Nt[n].apply(null,l)},M:function(n,l,f){return n>>>=0,l=jo(l>>>0,f>>>0),Nt[n].apply(null,l)},E:()=>{},I:()=>Date.now(),oa:()=>{throw qe+=1,"unwind"},Q:function(){return 4294901760},u:()=>performance.timeOrigin+performance.now(),x:()=>S?(xi(),ur(Si)).cpus().length:navigator.hardwareConcurrency,N:function(n){n>>>=0;var l=o().length;if(n<=l||4294901760=f;f*=2){var b=l*(1+.2/f);b=Math.min(b,n+100663296);var A=Math;b=Math.max(n,b);e:{A=(A.min.call(A,4294901760,b+(65536-b%65536)%65536)-be.buffer.byteLength+65535)/65536;try{be.grow(A),ke();var P=1;break e}catch{}P=void 0}if(P)return!0}return!1},ga:Ko,ha:Yo,W:Qt,A:Zo,G:Xo,da:Jo,F:Qo,a:be||d.wasmMemory,na:ri,r:function(n,l,f,b){return ri(n>>>0,l>>>0,f>>>0,b>>>0)}},re=function(){function n(f,b){return re=f.exports,re=ln(),re=Ol(),me.Ub.push(re.bb),Tt.unshift(re.va),Me=b,mr(),re}var l={a:Pl};if(Rt++,d.instantiateWasm)try{return d.instantiateWasm(l,n)}catch(f){ee(`Module.instantiateWasm callback failed with error: ${f}`),w(f)}return hr(l,function(f){n(f.instance,f.module)}).catch(w),{}}();d._OrtInit=(n,l)=>(d._OrtInit=re.wa)(n,l),d._OrtGetLastError=(n,l)=>(d._OrtGetLastError=re.xa)(n,l),d._OrtCreateSessionOptions=(n,l,f,b,A,P,z,L,Z,K)=>(d._OrtCreateSessionOptions=re.ya)(n,l,f,b,A,P,z,L,Z,K),d._OrtAppendExecutionProvider=(n,l)=>(d._OrtAppendExecutionProvider=re.za)(n,l),d._OrtAddFreeDimensionOverride=(n,l,f)=>(d._OrtAddFreeDimensionOverride=re.Aa)(n,l,f),d._OrtAddSessionConfigEntry=(n,l,f)=>(d._OrtAddSessionConfigEntry=re.Ba)(n,l,f),d._OrtReleaseSessionOptions=n=>(d._OrtReleaseSessionOptions=re.Ca)(n),d._OrtCreateSession=(n,l,f)=>(d._OrtCreateSession=re.Da)(n,l,f),d._OrtReleaseSession=n=>(d._OrtReleaseSession=re.Ea)(n),d._OrtGetInputOutputCount=(n,l,f)=>(d._OrtGetInputOutputCount=re.Fa)(n,l,f),d._OrtGetInputName=(n,l)=>(d._OrtGetInputName=re.Ga)(n,l),d._OrtGetOutputName=(n,l)=>(d._OrtGetOutputName=re.Ha)(n,l),d._OrtFree=n=>(d._OrtFree=re.Ia)(n),d._OrtCreateTensor=(n,l,f,b,A,P)=>(d._OrtCreateTensor=re.Ja)(n,l,f,b,A,P),d._OrtGetTensorData=(n,l,f,b,A)=>(d._OrtGetTensorData=re.Ka)(n,l,f,b,A),d._OrtReleaseTensor=n=>(d._OrtReleaseTensor=re.La)(n),d._OrtCreateRunOptions=(n,l,f,b)=>(d._OrtCreateRunOptions=re.Ma)(n,l,f,b),d._OrtAddRunConfigEntry=(n,l,f)=>(d._OrtAddRunConfigEntry=re.Na)(n,l,f),d._OrtReleaseRunOptions=n=>(d._OrtReleaseRunOptions=re.Oa)(n),d._OrtCreateBinding=n=>(d._OrtCreateBinding=re.Pa)(n),d._OrtBindInput=(n,l,f)=>(d._OrtBindInput=re.Qa)(n,l,f),d._OrtBindOutput=(n,l,f,b)=>(d._OrtBindOutput=re.Ra)(n,l,f,b),d._OrtClearBoundOutputs=n=>(d._OrtClearBoundOutputs=re.Sa)(n),d._OrtReleaseBinding=n=>(d._OrtReleaseBinding=re.Ta)(n),d._OrtRunWithBinding=(n,l,f,b,A)=>(d._OrtRunWithBinding=re.Ua)(n,l,f,b,A),d._OrtRun=(n,l,f,b,A,P,z,L)=>(d._OrtRun=re.Va)(n,l,f,b,A,P,z,L),d._OrtEndProfiling=n=>(d._OrtEndProfiling=re.Wa)(n),d._JsepOutput=(n,l,f)=>(d._JsepOutput=re.Xa)(n,l,f),d._JsepGetNodeName=n=>(d._JsepGetNodeName=re.Ya)(n);var oi=()=>(oi=re.Za)(),pn=d._pthread_self=()=>(pn=d._pthread_self=re._a)(),Rr=d._malloc=n=>(Rr=d._malloc=re.$a)(n),wt=d._free=n=>(wt=d._free=re.ab)(n);d.__emscripten_tls_init=()=>(d.__emscripten_tls_init=re.bb)();var ii=n=>(ii=re.cb)(n);d.__embind_initialize_bindings=()=>(d.__embind_initialize_bindings=re.db)();var ai=d.__emscripten_thread_init=(n,l,f,b,A,P)=>(ai=d.__emscripten_thread_init=re.fb)(n,l,f,b,A,P);d.__emscripten_thread_crashed=()=>(d.__emscripten_thread_crashed=re.gb)();var si=(n,l,f,b)=>(si=re.hb)(n,l,f,b),Zn=n=>(Zn=re.ib)(n),Xn=d.__emscripten_thread_exit=n=>(Xn=d.__emscripten_thread_exit=re.jb)(n),ui=()=>(ui=re.kb)(),li=(n,l)=>(li=re.lb)(n,l),Jn=()=>(Jn=re.mb)(),mn=n=>(mn=re.nb)(n),Qn=n=>(Qn=re.ob)(n),di=d.dynCall_ii=(n,l)=>(di=d.dynCall_ii=re.qb)(n,l),ci=n=>(ci=re.rb)(n),pi=()=>(pi=re.sb)(),mi=n=>(mi=re.tb)(n),fi=()=>(fi=re.ub)();d.___start_em_js=958871,d.___stop_em_js=959032;function Ol(){var n=re;n=Object.assign({},n);var l=b=>()=>b()>>>0,f=b=>A=>b(A)>>>0;return n.Za=l(n.Za),n._a=l(n._a),n.$a=f(n.$a),n.cb=f(n.cb),n.emscripten_main_runtime_thread_id=l(n.emscripten_main_runtime_thread_id),n.mb=l(n.mb),n.ob=f(n.ob),n}d.wasmMemory=be,d.stackAlloc=Qn,d.stackSave=Jn,d.stackRestore=mn,d.keepRuntimeAlive=()=>0Ci)});var Ti=Br((Vp,Wl)=>{Wl.exports=\'"use strict";var Module={},ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";if(ENVIRONMENT_IS_NODE){var nodeWorkerThreads=require("worker_threads"),parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",e=>onmessage({data:e}));var fs=require("fs"),vm=require("vm");Object.assign(global,{self:global,require,Module,location:{href:__filename},Worker:nodeWorkerThreads.Worker,importScripts:e=>vm.runInThisContext(fs.readFileSync(e,"utf8"),{filename:e}),postMessage:e=>parentPort.postMessage(e),performance:global.performance||{now:Date.now}})}var initializedJS=!1;function threadPrintErr(){var e=Array.prototype.slice.call(arguments).join(" ");if(ENVIRONMENT_IS_NODE){fs.writeSync(2,e+`\\n`);return}console.error(e)}function threadAlert(){var e=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:e,threadId:Module._pthread_self()})}var err=threadPrintErr;self.alert=threadAlert,Module.instantiateWasm=(e,t)=>{var a=Module.wasmModule;Module.wasmModule=null;var r=new WebAssembly.Instance(a,e);return t(r)},self.onunhandledrejection=e=>{throw e.reason||e};function handleMessage(e){try{if(e.data.cmd==="load"){let a=[];self.onmessage=r=>a.push(r),self.startWorker=r=>{Module=r,postMessage({cmd:"loaded"});for(let s of a)handleMessage(s);self.onmessage=handleMessage},Module.wasmModule=e.data.wasmModule;for(const r of e.data.handlers)Module[r]=(...s)=>{postMessage({cmd:"callHandler",handler:r,args:s})};if(Module.wasmMemory=e.data.wasmMemory,Module.buffer=Module.wasmMemory.buffer,Module.ENVIRONMENT_IS_PTHREAD=!0,typeof e.data.urlOrBlob=="string")importScripts(e.data.urlOrBlob);else{var t=URL.createObjectURL(e.data.urlOrBlob);importScripts(t),URL.revokeObjectURL(t)}ortWasmThreaded(Module)}else if(e.data.cmd==="run"){Module.__emscripten_thread_init(e.data.pthread_ptr,0,0,1),Module.__emscripten_thread_mailbox_await(e.data.pthread_ptr),Module.establishStackSpace(),Module.PThread.receiveObjectTransfer(e.data),Module.PThread.threadInitTLS(),initializedJS||(initializedJS=!0);try{Module.invokeEntryPoint(e.data.start_routine,e.data.arg)}catch(a){if(a!="unwind")throw a}}else e.data.cmd==="cancel"?Module._pthread_self()&&Module.__emscripten_thread_exit(-1):e.data.target==="setimmediate"||(e.data.cmd==="checkMailbox"?initializedJS&&Module.checkMailbox():e.data.cmd&&(err(`worker.js received unknown command ${e.data.cmd}`),err(e.data)))}catch(a){throw Module.__emscripten_thread_crashed?.(),a}}self.onmessage=handleMessage;\\n\'});var lo,st,Mr,yn,zr,Bi,co,Ve=Q(()=>{"use strict";lo=e=>{switch(e){case"int8":return 3;case"uint8":return 2;case"bool":return 9;case"int16":return 5;case"uint16":return 4;case"int32":return 6;case"uint32":return 12;case"float16":return 10;case"float32":return 1;case"float64":return 11;case"string":return 8;case"int64":return 7;case"uint64":return 13;default:throw new Error(`unsupported data type: ${e}`)}},st=e=>{switch(e){case 3:return"int8";case 2:return"uint8";case 9:return"bool";case 5:return"int16";case 4:return"uint16";case 6:return"int32";case 12:return"uint32";case 10:return"float16";case 1:return"float32";case 11:return"float64";case 8:return"string";case 7:return"int64";case 13:return"uint64";default:throw new Error(`unsupported data type: ${e}`)}},Mr=e=>[void 0,4,1,1,2,2,4,8,void 0,1,2,8,4,8,void 0,void 0,void 0][e],yn=e=>{switch(e){case"float16":return Uint16Array;case"float32":return Float32Array;case"uint8":return Uint8Array;case"int8":return Int8Array;case"uint16":return Uint16Array;case"int16":return Int16Array;case"int32":return Int32Array;case"bool":return Uint8Array;case"float64":return Float64Array;case"uint32":return Uint32Array;case"int64":return BigInt64Array;case"uint64":return BigUint64Array;default:throw new Error(`unsupported type: ${e}`)}},zr=e=>{switch(e){case"verbose":return 0;case"info":return 1;case"warning":return 2;case"error":return 3;case"fatal":return 4;default:throw new Error(`unsupported logging level: ${e}`)}},Bi=e=>e==="float32"||e==="int32"||e==="int64"||e==="bool"||e==="float16"||e==="uint32",co=e=>{switch(e){case"none":return 0;case"cpu":return 1;case"cpu-pinned":return 2;case"texture":return 3;case"gpu-buffer":return 4;default:throw new Error(`unsupported data location: ${e}`)}}});var bn=Q(()=>{"use strict"});var Mi=Q(()=>{"use strict";bn()});var zi,Ui=Q(()=>{"use strict";zi="1.17.0-dev.20240116-80f274ca6f"});var Vi,Kt,po=Q(()=>{"use strict";Ui();Vi="warning",Kt={wasm:{},webgl:{},webgpu:{},versions:{common:zi},set logLevel(e){if(e!==void 0){if(typeof e!="string"||["verbose","info","warning","error","fatal"].indexOf(e)===-1)throw new Error(`Unsupported logging level: ${e}`);Vi=e}},get logLevel(){return Vi}};Object.defineProperty(Kt,"logLevel",{enumerable:!0})});var lr,Wi=Q(()=>{"use strict";po();lr=Kt});var Ni=Q(()=>{"use strict"});var Hi=Q(()=>{"use strict";wn()});var Li=Q(()=>{"use strict"});var Fi=Q(()=>{"use strict";wn()});var wn=Q(()=>{"use strict";Ni();Hi();Li();Fi()});var vn=Q(()=>{"use strict";wn()});var mo,ji,Yt,Zt,fo=Q(()=>{"use strict";po();mo=(e,t)=>{Kt.wasm.trace&&console.timeStamp(`${e}::ORT::${t}`)},ji=(e,t)=>{let r=new Error().stack?.split(/\\r\\n|\\r|\\n/g)||[],o=!1;for(let i=0;i{Kt.wasm.trace&&ji("BEGIN",e)},Zt=e=>{Kt.wasm.trace&&ji("END",e)}});var qi=Q(()=>{"use strict";bn();vn();fo()});var Ki=Q(()=>{"use strict";qi()});var Yi=Q(()=>{"use strict"});var Zi=Q(()=>{"use strict";bn();vn()});var Xi=Q(()=>{"use strict";Zi()});var dr=Q(()=>{"use strict";Mi();Wi();Ki();vn();fo();Yi();Xi()});var Xl,Jl,Ji,Qi,ea,Ql,De,zt=Q(()=>{"use strict";Ve();Xl=["V","I","W","E","F"],Jl=(e,t)=>{console.log(`[${Xl[e]},${new Date().toISOString()}]${t}`)},ea=(e,t)=>{Ji=e,Qi=t},Ql=(e,t)=>{let r=zr(e),o=zr(Ji);r>=o&&Jl(r,typeof t=="function"?t():t)},De=(...e)=>{Qi&&Ql(...e)}});var ta,ra=Q(()=>{"use strict";Ve();ta=(e,t)=>new(yn(t))(e)});var $n=Q(()=>{"use strict"});var _n,ed,na,go,ho,ia,aa=Q(()=>{"use strict";zt();$n();_n=e=>Math.ceil(e/16)*16,ed=1,na=()=>ed++,go=async(e,t,r,o)=>{let i=_n(r),u=e.device.createBuffer({size:i,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ});try{let a=e.getCommandEncoder();e.endComputePass(),a.copyBufferToBuffer(t,0,u,0,i),e.flush(),await u.mapAsync(GPUMapMode.READ);let p=u.getMappedRange();if(o){let m=o();return m.set(new Uint8Array(p,0,r)),m}else return new Uint8Array(p.slice(0,r))}finally{u.destroy()}},ho=class{constructor(t){this.backend=t;this.storageCache=new Map,this.freeBuffers=new Map,this.freeUniformBuffers=new Map,this.buffersForUploadingPending=[],this.buffersPending=[],this.externalBuffers=new Map}upload(t,r){let o=r.buffer,i=r.byteOffset,u=r.byteLength,a=_n(u),p=this.storageCache.get(t);if(!p)throw new Error("gpu data for uploading does not exist");if(p.originalSize!==u)throw new Error(`inconsistent data size. gpu data size=${p.originalSize}, data size=${u}`);let m=this.backend.device.createBuffer({mappedAtCreation:!0,size:a,usage:GPUBufferUsage.MAP_WRITE|GPUBufferUsage.COPY_SRC}),h=m.getMappedRange();new Uint8Array(h).set(new Uint8Array(o,i,u)),m.unmap();let d=this.backend.getCommandEncoder();this.backend.endComputePass(),d.copyBufferToBuffer(m,0,p.gpuData.buffer,0,a),De("verbose",()=>`[WebGPU] GpuDataManager.upload(id=${t})`),this.buffersForUploadingPending.push(m)}memcpy(t,r){let o=this.storageCache.get(t);if(!o)throw new Error("source gpu data for memcpy does not exist");let i=this.storageCache.get(r);if(!i)throw new Error("destination gpu data for memcpy does not exist");if(o.originalSize!==i.originalSize)throw new Error("inconsistent source and destination gpu data size");let u=_n(o.originalSize),a=this.backend.getCommandEncoder();this.backend.endComputePass(),a.copyBufferToBuffer(o.gpuData.buffer,0,i.gpuData.buffer,0,u)}registerExternalBuffer(t,r,o){let i;if(o){if(i=this.externalBuffers.get(o),i===void 0)throw new Error("previous buffer is not registered");if(t===o)return De("verbose",()=>`[WebGPU] GpuDataManager.registerExternalBuffer(size=${r}) => id=${i}, buffer is the same, skip.`),i;this.externalBuffers.delete(o)}else i=na();return this.storageCache.set(i,{gpuData:{id:i,type:0,buffer:t},originalSize:r}),this.externalBuffers.set(t,i),De("verbose",()=>`[WebGPU] GpuDataManager.registerExternalBuffer(size=${r}) => id=${i}, registered.`),i}unregisterExternalBuffer(t){let r=this.externalBuffers.get(t);r!==void 0&&(this.storageCache.delete(r),this.externalBuffers.delete(t),De("verbose",()=>`[WebGPU] GpuDataManager.unregisterExternalBuffer() => id=${r}`))}create(t,r=GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST){let o=_n(t),i,u=(r&GPUBufferUsage.STORAGE)===GPUBufferUsage.STORAGE,a=(r&GPUBufferUsage.UNIFORM)===GPUBufferUsage.UNIFORM;if(u||a){let m=u?this.freeBuffers:this.freeUniformBuffers,h=m.get(o);h||(h=[],m.set(o,h)),h.length>0?i=h.pop():i=this.backend.device.createBuffer({size:o,usage:r})}else i=this.backend.device.createBuffer({size:o,usage:r});let p={id:na(),type:0,buffer:i};return this.storageCache.set(p.id,{gpuData:p,originalSize:t}),De("verbose",()=>`[WebGPU] GpuDataManager.create(size=${t}) => id=${p.id}`),p}get(t){return this.storageCache.get(t)?.gpuData}release(t){let r=this.storageCache.get(t);if(!r)throw new Error("releasing data does not exist");return De("verbose",()=>`[WebGPU] GpuDataManager.release(id=${t}), gpuDataId=${r.gpuData.id}`),this.storageCache.delete(t),this.buffersPending.push(r.gpuData.buffer),r.originalSize}async download(t,r){let o=this.storageCache.get(t);if(!o)throw new Error("data does not exist");await go(this.backend,o.gpuData.buffer,o.originalSize,r)}refreshPendingBuffers(){for(let t of this.buffersForUploadingPending)t.destroy();this.buffersForUploadingPending=[];for(let t of this.buffersPending)(t.usage&GPUBufferUsage.STORAGE)===GPUBufferUsage.STORAGE?this.freeBuffers.get(t.size).push(t):(t.usage&GPUBufferUsage.UNIFORM)===GPUBufferUsage.UNIFORM?this.freeUniformBuffers.get(t.size).push(t):t.destroy();this.buffersPending=[]}dispose(){this.freeBuffers.forEach(t=>{t.forEach(r=>{r.destroy()})}),this.freeUniformBuffers.forEach(t=>{t.forEach(r=>{r.destroy()})}),this.storageCache.forEach(t=>{t.gpuData.buffer.destroy()}),this.storageCache=new Map,this.freeBuffers=new Map,this.freeUniformBuffers=new Map}},ia=(...e)=>new ho(...e)});var yo,xe,Ye=Q(()=>{"use strict";yo=class{constructor(t){Object.assign(this,t)}get cacheKey(){return this.key||(this.key=Object.getOwnPropertyNames(this).sort().map(t=>`${this[t]}`).join(";")),this.key}},xe=e=>new yo(e)});var bo,vt,W,Xt,Sn,xn,Cn,Ce=Q(()=>{"use strict";bo=class{static calcMatMulShape(t,r){return t[1]!==r[0]?void 0:[t[0],r[1]]}},vt=class{static calcShape(t,r,o=!1){let i=t.length,u=r.length;if(i===0)return r;if(u===0)return t;let a=Math.max(t.length,r.length),p=new Array(a);if(o){if(i<2||u<2)return;let m=bo.calcMatMulShape([t[i-2],t[i-1]],[r[u-2],r[u-1]]);if(m===void 0)return;[p[a-2],p[a-1]]=m}for(let m=o?3:1;m<=a;m++){let h=i-m<0?1:t[i-m],d=u-m<0?1:r[u-m];if(h!==d&&h>1&&d>1)return;p[a-m]=Math.max(h,d)}return p}static isValidBroadcast(t,r){let o=t.length,i=r.length;if(o>i)return!1;for(let u=1;u<=o;u++)if(t[o-u]!==1&&t[o-u]!==r[i-u])return!1;return!0}},W=class e{static size(t){return e.getSizeFromDimensionRange(t,0,t.length)}static sizeFromDimension(t,r){if(r<0||r>t.length)throw new Error(`invalid dimension of ${r} for sizeFromDimension as Tensor has ${t.length} dimensions.`);return e.getSizeFromDimensionRange(t,r,t.length)}static sizeToDimension(t,r){if(r<0||r>t.length)throw new Error(`invalid dimension of ${r} for sizeToDimension as Tensor has ${t.length} dimensions.`);return e.getSizeFromDimensionRange(t,0,r)}static getSizeFromDimensionRange(t,r,o){let i=1;for(let u=r;u=0;--i)o[i]=o[i+1]*t[i+1];return o}static normalizeAxis(t,r){if(t<-r&&t>=r)throw new Error("unsupported axis for this operation.");return t<0?t+r:t}static normalizeAxes(t,r){return t.map(o=>this.normalizeAxis(o,r??t.length))}static sortBasedOnPerm(t,r){return r?r.map(o=>t[o]):t.slice().reverse()}static padShape(t,r){let o=t.length;return t.map((i,u)=>i+r[u]+r[u+o])}static areEqual(t,r){return t.length!==r.length?!1:t.every((o,i)=>o===r[i])}},Xt=class e{static adjustPoolAttributes(t,r,o,i,u,a){if(!t&&o.length!==r.length-2)throw new Error("length of specified kernel shapes should be 2 less than length of input dimensions");if(t)for(let p=0;p=o.length?o.push(r[p+2]):o[p]=r[p+2];for(let p=0;p=o[p]||a[p+o.length]>=o[p])throw new Error("pads should be smaller than kernel")}}static adjustPadsBasedOnAutoPad(t,r,o,i,u,a,p){if(p){if(u.length!==2*(t.length-2))throw new Error("length of pads should be twice the length of data dimensions");if(r.length!==t.length-2)throw new Error("length of strides should be the length of data dimensions");if(i.length!==t.length-2)throw new Error("length of kernel shapes should be the length of data dimensions");for(let m=0;m{"use strict";Ve();Ce();td=64,vo=(e,t)=>{if(t===3)throw new Error("vec3 has same alignment as vec4, use vec4 instead");switch(e){case 10:return t>1?`vec${t}`:"f16";case 1:return t>1?`vec${t}`:"f32";case 6:return t>1?`vec${t}`:"i32";case 12:return t>1?`vec${t}`:"u32";case 7:if(t>1)throw new Error("currently not supported vecX of uint64 yet");return["vec2","i32"];case 13:if(t>1)throw new Error("currently not supported vecX of uint64 yet");return["vec2","u32"];case 9:if(t!==4)throw new Error("bool must be vec4");return["u32","vec4"];default:throw new Error(`Unknown data type: ${e}`)}},Ne=(e,t=1)=>{let r=vo(e,t);return typeof r=="string"?r:r[0]},ht=(e,t=1)=>{let r=vo(e,t);return typeof r=="string"?r:r[1]},G=e=>e.length===0?[]:[{type:"uint32",data:e},{type:"uint32",data:W.computeStrides(e)}],He=e=>e%4===0?4:e%2===0?2:1,Ze=(e="f32",t,r="0")=>!t||t===1?`${e}(${r})`:`vec${t}<${e}>(${r})`,gt=(e,t,r)=>e==="f32"?r:t===1?`f32(${r})`:`vec${t}f(${r})`,ut=(e,t)=>t===4?`(${e}.x + ${e}.y + ${e}.z + ${e}.w)`:t===2?`(${e}.x + ${e}.y)`:t===3?`(${e}.x + ${e}.y + ${e}.z)`:e,ce=(e,t,r,o)=>e.startsWith("uniforms.")&&r>4?typeof t=="string"?o==="f16"?`${e}[(${t}) / 8][(${t}) % 8 / 4][(${t}) % 8 % 4]`:`${e}[(${t}) / 4][(${t}) % 4]`:o==="f16"?`${e}[${Math.floor(t/8)}][${Math.floor(t%8/4)}][${t%8%4}]`:`${e}[${Math.floor(t/4)}][${t%4}]`:r>1?`${e}[${t}]`:e,$o=(e,t,r,o,i)=>{let u=typeof r=="number",a=u?r:r.length,p=[...new Array(a).keys()],m=a<2?"u32":a<=4?`vec${a}`:`array`,h=vo(t,i),d=typeof h=="string"?h:h[1],y=typeof h=="string"?h:h[0],w={indices:m,value:d,storage:y,tensor:t},_=F=>typeof F=="string"?F:`${F}u`,v={offsetToIndices:!1,indicesToOffset:!1,broadcastedIndicesToOffset:!1,set:!1,setByIndices:!1,get:!1,getByIndices:!1},x=u?"uniforms.":"",T=`${x}${e}_shape`,C=`${x}${e}_strides`,S="";for(let F=0;F ${w.indices} {\n var indices: ${w.indices};\n var current = offset;\n ${S}\n return indices;\n }`,O=F=>(v.offsetToIndices=!0,a<2?F:`o2i_${e}(${F})`),U=[];if(a>=2)for(let F=a-1;F>=0;F--)U.push(`${ce(C,F,a)} * (indices[${F}])`);let M=a<2?"":`\n fn i2o_${e}(indices: ${w.indices}) -> u32 {\n return ${U.join("+")};\n }`,N=F=>(v.indicesToOffset=!0,a<2?F:`i2o_${e}(${F})`),Y=(...F)=>a===0?"0u":`${w.indices}(${F.map(_).join(",")})`,se=(F,ie)=>a<2?`${F}`:`${ce(F,ie,a)}`,B=(F,ie,he)=>a<2?`${F}=${he};`:`${ce(F,ie,a)}=${he};`,te={},Pe=(F,ie)=>{v.broadcastedIndicesToOffset=!0;let he=`${ie.name}broadcastedIndicesTo${e}Offset`;if(he in te)return`${he}(${F})`;let Xe=[];for(let nt=a-1;nt>=0;nt--){let ke=ie.indicesGet("outputIndices",nt+ie.rank-a);Xe.push(`${se(C,nt)} * (${ke} % ${se(T,nt)})`)}return te[he]=`fn ${he}(outputIndices: ${ie.type.indices}) -> u32 {\n return ${Xe.length>0?Xe.join("+"):"0u"};\n }`,`${he}(${F})`},Ee=(F,ie)=>(()=>{if(w.storage===w.value)return`${e}[${F}]=${ie};`;if(w.storage==="vec2"&&w.value==="i32")return`${e}[${F}]=vec2(u32(${ie}), select(0u, 0xFFFFFFFFu, ${ie} < 0));`;if(w.storage==="vec2"&&w.value==="u32")return`${e}[${F}]=vec2(u32(${ie}), 0u);`;if(w.storage==="u32"&&w.value==="vec4")return`${e}[${F}]=dot(vec4(0x1, 0x100, 0x10000, 0x1000000), vec4(${ie}));`;throw new Error(`not supported combination of storage type ${w.storage} and value type ${w.value} yet`)})(),ee=F=>(()=>{if(w.storage===w.value)return`${e}[${F}]`;if(w.storage==="vec2"&&w.value==="i32")return`i32(${e}[${F}].x)`;if(w.storage==="vec2"&&w.value==="u32")return`u32(${e}[${F}].x)`;if(w.storage==="u32"&&w.value==="vec4")return`vec4(bool(${e}[${F}] & 0xFFu), bool(${e}[${F}] & 0xFF00u), bool(${e}[${F}] & 0xFF0000u), bool(${e}[${F}] & 0xFF000000u))`;throw new Error(`not supported combination of storage type ${w.storage} and value type ${w.value} yet`)})(),be=a<2?"":`\n fn get_${e}ByIndices(indices: ${w.indices}) -> ${d} {\n return ${ee(`i2o_${e}(indices)`)};\n }`,Me=a<2?"":(()=>{let F=p.map(he=>`d${he}: u32`).join(", "),ie=p.map(he=>`d${he}`).join(", ");return`\n fn get_${e}(${F}) -> ${d} {\n return get_${e}ByIndices(${Y(ie)});\n }`})(),pe=(...F)=>{if(F.length!==a)throw new Error(`indices length must be ${a}`);let ie=F.map(_).join(",");return a===0?ee("0u"):a===1?ee(ie[0]):(v.get=!0,v.getByIndices=!0,v.indicesToOffset=!0,`get_${e}(${ie})`)},ye=F=>a<2?ee(F):(v.getByIndices=!0,v.indicesToOffset=!0,`get_${e}ByIndices(${F})`),de=a<2?"":`\n fn set_${e}ByIndices(indices: ${w.indices}, value: ${d}) {\n ${Ee(`i2o_${e}(indices)`,"value")}\n }`,we=a<2?"":(()=>{let F=p.map(he=>`d${he}: u32`).join(", "),ie=p.map(he=>`d${he}`).join(", ");return`\n fn set_${e}(${F}, value: ${d}) {\n set_${e}ByIndices(${Y(ie)}, value);\n }`})();return{impl:()=>{let F=[],ie=!1;return v.offsetToIndices&&(F.push(E),ie=!0),v.indicesToOffset&&(F.push(M),ie=!0),v.broadcastedIndicesToOffset&&(Object.values(te).forEach(he=>F.push(he)),ie=!0),v.set&&(F.push(we),ie=!0),v.setByIndices&&(F.push(de),ie=!0),v.get&&(F.push(Me),ie=!0),v.getByIndices&&(F.push(be),ie=!0),!u&&ie&&F.unshift(`const ${T} = ${w.indices}(${r.join(",")});`,`const ${C} = ${w.indices}(${W.computeStrides(r).join(",")});`),F.join(`\n`)},type:w,offsetToIndices:O,indicesToOffset:N,broadcastedIndicesToOffset:Pe,indices:Y,indicesGet:se,indicesSet:B,set:(...F)=>{if(F.length!==a+1)throw new Error(`indices length must be ${a}`);let ie=F[a];if(typeof ie!="string")throw new Error("value must be string");let he=F.slice(0,a).map(_).join(",");return a===0?Ee("0u",ie):a===1?Ee(he[0],ie):(v.set=!0,v.setByIndices=!0,v.indicesToOffset=!0,`set_${e}(${he}, ${ie})`)},setByOffset:Ee,setByIndices:(F,ie)=>a<2?Ee(F,ie):(v.setByIndices=!0,v.indicesToOffset=!0,`set_${e}ByIndices(${F}, ${ie});`),get:pe,getByOffset:ee,getByIndices:ye,usage:o,name:e,strides:C,shape:T,rank:a}},V=(e,t,r,o=1)=>$o(e,t,r,"input",o),J=(e,t,r,o=1)=>$o(e,t,r,"output",o),An=(e,t,r,o=1)=>$o(e,t,r,"internal",o),wo=class{constructor(t){this.normalizedDispatchGroup=t;this.internalVariables=[];this.variables=[];this.uniforms=[];this.variableIndex=0}guardAgainstOutOfBoundsWorkgroupSizes(t){return`if (global_idx >= ${typeof t=="number"?`${t}u`:t}) { return; }`}mainStart(t=td){let r=typeof t=="number"?t:t[0],o=typeof t=="number"?1:t[1],i=typeof t=="number"?1:t[2],u=this.normalizedDispatchGroup[1]===1&&this.normalizedDispatchGroup[2]===1,a=u?`@builtin(global_invocation_id) global_id : vec3,\n @builtin(workgroup_id) workgroup_id : vec3,\n @builtin(local_invocation_id) local_id : vec3`:`@builtin(local_invocation_id) local_id : vec3,\n @builtin(local_invocation_index) local_idx : u32,\n @builtin(workgroup_id) workgroup_id : vec3,\n @builtin(num_workgroups) num_workgroups : vec3`,p=u?"let global_idx = global_id.x; let local_idx = local_id.x;":`let global_idx = (workgroup_id.z * num_workgroups[0] * num_workgroups[1] +\n workgroup_id.y * num_workgroups[0] + workgroup_id.x) * ${r*o*i}u + local_idx;`;return`@compute @workgroup_size(${r}, ${o}, ${i})\n fn main(${a}) {\n ${p}\n `}appendVariableUniforms(t){t.rank!==0&&(t.shape.startsWith("uniforms.")&&this.uniforms.push({name:t.shape.replace("uniforms.",""),type:"u32",length:t.rank}),t.strides.startsWith("uniforms.")&&this.uniforms.push({name:t.strides.replace("uniforms.",""),type:"u32",length:t.rank}))}declareVariable(t,r){if(t.usage==="internal")throw new Error("cannot use internal variable with declareVariable(). use registerInternalVariables() instead.");this.variables.push(t),this.appendVariableUniforms(t);let o=t.usage==="input"?"read":"read_write",i=t.type.storage;return`@group(0) @binding(${r}) var ${t.name}: array<${i}>;`}declareVariables(...t){return t.map(r=>this.declareVariable(r,this.variableIndex++)).join(`\n`)}registerInternalVariable(t){if(t.usage!=="internal")throw new Error("cannot use input or output variable with registerInternalVariable(). use declareVariables() instead.");this.internalVariables.push(t),this.appendVariableUniforms(t)}registerInternalVariables(...t){return t.forEach(r=>this.registerInternalVariable(r)),this}registerUniform(t,r,o=1){return this.uniforms.push({name:t,type:r,length:o}),this}registerUniforms(t){return this.uniforms=this.uniforms.concat(t),this}uniformDeclaration(){if(this.uniforms.length===0)return"";let t=[];for(let{name:r,type:o,length:i}of this.uniforms)if(i&&i>4)o==="f16"?t.push(`@align(16) ${r}:array, ${Math.ceil(i/8)}>`):t.push(`${r}:array, ${Math.ceil(i/4)}>`);else{let u=i==null||i===1?o:`vec${i}<${o}>`;t.push(`${r}:${u}`)}return`\n struct Uniforms { ${t.join(", ")} };\n @group(0) @binding(${this.variableIndex}) var uniforms: Uniforms;`}get additionalImplementations(){return this.uniformDeclaration()+this.variables.map(t=>t.impl()).join(`\n`)+this.internalVariables.map(t=>t.impl()).join(`\n`)}},sa=e=>new wo(e),cr=(e,t)=>{let r=e.length,o=[];for(let i=0;i1&&a===1&&o.unshift(u)}return o}});var rd,ua,nd,od,yt,la,da,pr=Q(()=>{"use strict";Ce();Ye();_e();rd=e=>{if(!e||e.length!==1)throw new Error("Transpose requires 1 input.")},ua=(e,t)=>t&&t.length!==e?[...new Array(e).keys()].reverse():t,nd=(e,t)=>W.sortBasedOnPerm(e,ua(e.length,t)),od=(e,t,r,o)=>{let i=[];i.push(`fn perm(i: ${o.type.indices}) -> ${r.type.indices} {\n var a: ${r.type.indices};`);for(let u=0;u{let r=e.dataType,o=e.dims.length,i=ua(o,t),u=nd(e.dims,i),a=J("output",r,u.length),p=V("a",r,o),m=h=>`\n ${h.registerUniform("output_size","u32").declareVariables(p,a)}\n\n ${od(i,o,p,a)}\n\n ${h.mainStart()}\n ${h.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}\n\n let indices = ${a.offsetToIndices("global_idx")};\n let aIndices = perm(indices);\n\n ${a.setByOffset("global_idx",p.getByIndices("aIndices"))}\n }`;return{name:"Transpose",shaderCache:{hint:`${t}`,inputDependencies:["rank"]},getRunData:h=>{let d=W.size(u);return{outputs:[{dims:u,dataType:h[0].dataType}],dispatchGroup:{x:Math.ceil(d/64)},programUniforms:[{type:"uint32",data:d},...G(h[0].dims),...G(u)]}},getShaderSource:m}},la=(e,t)=>{rd(e.inputs),e.compute(yt(e.inputs[0],t.perm))},da=e=>xe({perm:e.perm})});var id,ad,sd,ud,ld,dd,cd,pd,md,fd,$t,ca,pa,ma,fa,ha,ga,ya,ba,wa,va,$a=Q(()=>{"use strict";Ce();_e();In();pr();id={max:"select(bestValue, candidate, candidate > bestValue)",min:"select(bestValue, candidate, candidate < bestValue)",mean:"bestValue + candidate",sum:"bestValue + candidate",prod:"bestValue * candidate",sumSquare:"bestValue + candidate * candidate",logSumExp:"bestValue + exp(candidate)",l1:"bestValue + abs(candidate)",l2:"bestValue + candidate * candidate",logSum:"bestValue + candidate"},ad={max:"select(bestValue, candidate, candidate > bestValue)",min:"select(bestValue, candidate, candidate < bestValue)",mean:"bestValue + candidate",sum:"bestValue + candidate",prod:"bestValue * candidate",sumSquare:"bestValue + candidate",logSumExp:"bestValue + candidate",l1:"bestValue + candidate",l2:"bestValue + candidate",logSum:"bestValue + candidate"},sd={max:"_A[offset]",min:"_A[offset]",mean:"0",sum:"0",prod:"1",sumSquare:"0",logSumExp:"0",l1:"0",l2:"0",logSum:"0"},ud={max:"bestValue",min:"bestValue",sum:"bestValue",prod:"bestValue",sumSquare:"bestValue",logSumExp:"log(bestValue)",l1:"bestValue",l2:"sqrt(bestValue)",logSum:"log(bestValue)"},ld=(e,t)=>{let r=[];for(let o=t-e;o{let r=[],o=e.length;for(let u=0;ue[u]);return[r,i]},cd=(e,t)=>{let r=e.length+t.length,o=[],i=0;for(let u=0;u{for(let r=0;r{let r=[];if(!pd(e,t)){for(let o=0;or.push(o))}return r},fd=(e,t,r,o,i,u,a)=>{let p=r[0].dims,m=W.size(u),h=W.size(a),d=V("_A",r[0].dataType,p),y=J("output",i,u),w=32,_=`\n var aBestValues : array<${y.type.storage}, ${w}>;\n `;return{name:e,shaderCache:t,getShaderSource:x=>`\n ${x.registerUniform("reduceSize","u32").declareVariables(d,y)}\n ${_}\n fn DIV_CEIL(a : u32, b : u32) -> u32 {\n return ((a - 1u) / b + 1u);\n }\n ${x.mainStart(w)}\n\n let outputIndex = global_idx / ${w};\n let offset = outputIndex * uniforms.reduceSize;\n\n var bestValue = ${y.type.storage}(${sd[o]});\n let Length = uniforms.reduceSize;\n for (var k = local_idx; k < Length; k = k + ${w}) {\n let candidate = ${y.type.storage}(${d.getByOffset("offset + k")});\n bestValue = ${id[o]};\n }\n aBestValues[local_idx] = bestValue;\n workgroupBarrier();\n\n var reduceSize = min(Length, ${w}u);\n for (var currentSize = reduceSize / 2u; reduceSize > 1u;\n currentSize = reduceSize / 2u) {\n let interval = DIV_CEIL(reduceSize, 2u);\n if (local_idx < currentSize) {\n let candidate = aBestValues[local_idx + interval];\n bestValue = ${ad[o]};\n aBestValues[local_idx] = bestValue;\n }\n reduceSize = interval;\n workgroupBarrier();\n }\n\n if (local_idx == 0u) {\n ${y.setByOffset("outputIndex",`${o==="mean"?`bestValue / ${y.type.storage}(uniforms.reduceSize)`:`${ud[o]}`}`)};\n }\n }`,getRunData:()=>({outputs:[{dims:u,dataType:i}],dispatchGroup:{x:m},programUniforms:[{type:"uint32",data:h}]})}},$t=(e,t,r,o)=>{let i=e.inputs.length===1?r:_o(e.inputs,r),u=i.axes;u.length===0&&!i.noopWithEmptyAxes&&(u=e.inputs[0].dims.map((_,v)=>v));let a=W.normalizeAxes(u,e.inputs[0].dims.length),p=a,m=e.inputs[0],h=md(p,e.inputs[0].dims.length);h.length>0&&(m=e.compute(yt(e.inputs[0],h),{inputs:[0],outputs:[-1]})[0],p=ld(p.length,m.dims.length));let[d,y]=dd(m.dims,p),w=d;i.keepDims&&(w=cd(d,a)),e.compute(fd(t,{hint:i.cacheKey,inputDependencies:["type"]},[m],o,e.inputs[0].dataType,w,y),{inputs:[m]})},ca=(e,t)=>{$t(e,"ReduceMeanShared",t,"mean")},pa=(e,t)=>{$t(e,"ReduceL1Shared",t,"l1")},ma=(e,t)=>{$t(e,"ReduceL2Shared",t,"l2")},fa=(e,t)=>{$t(e,"ReduceLogSumExpShared",t,"logSumExp")},ha=(e,t)=>{$t(e,"ReduceMaxShared",t,"max")},ga=(e,t)=>{$t(e,"ReduceMinShared",t,"min")},ya=(e,t)=>{$t(e,"ReduceProdShared",t,"prod")},ba=(e,t)=>{$t(e,"ReduceSumShared",t,"sum")},wa=(e,t)=>{$t(e,"ReduceSumSquareShared",t,"sumSquare")},va=(e,t)=>{$t(e,"ReduceLogSumShared",t,"logSum")}});var _t,hd,Tn,_o,St,gd,yd,bd,wd,vd,$d,_d,Sd,xd,Cd,xt,_a,Sa,xa,Ca,Aa,Ia,Ta,Ea,Pa,Oa,In=Q(()=>{"use strict";Ce();Ye();_e();$a();_t=e=>{if(!e||e.length===0||e.length>2)throw new Error("Reduce op requires 1 or 2 inputs.");if(e.length===2&&e[1].dims.length!==1)throw new Error("Invalid axes input dims.")},hd=e=>["","",`var value = ${e.getByIndices("input_indices")};`,""],Tn=(e,t,r,o,i,u,a=!1,p=!1)=>{let m=[],h=r[0].dims,d=h.length,y=W.normalizeAxes(i,d),w=!p&&y.length===0;h.forEach((T,C)=>{w||y.indexOf(C)>=0?a&&m.push(1):m.push(T)});let _=m.length,v=W.size(m);return{name:e,shaderCache:t,getShaderSource:T=>{let C=[],S=V("_A",r[0].dataType,d),E=J("output",u,_),O=o(S,E,y),U=O[2];for(let M=0,N=0;M=0?(a&&N++,U=`for(var j${M}: u32 = 0; j${M} < ${h[M]}; j${M}++) {\n ${O[2].includes("last_index")?`let last_index = j${M};`:""}\n ${S.indicesSet("input_indices",M,`j${M}`)}\n ${U}\n }`):(C.push(`${S.indicesSet("input_indices",M,E.indicesGet("output_indices",N))};`),N++);return`\n\n ${T.registerUniform("output_size","u32").declareVariables(S,E)}\n\n ${T.mainStart()}\n ${T.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}\n var input_indices: ${S.type.indices};\n let output_indices = ${E.offsetToIndices("global_idx")};\n\n ${C.join(`\n`)}\n ${O[0]} // init ops for reduce max/min\n ${O[1]}\n ${U}\n ${O[3]}\n ${O.length===4?E.setByOffset("global_idx","value"):O.slice(4).join(`\n`)}\n }`},getRunData:()=>({outputs:[{dims:m,dataType:u}],dispatchGroup:{x:Math.ceil(v/64)},programUniforms:[{type:"uint32",data:v},...G(h),...G(m)]})}},_o=(e,t)=>{let r=[];return e[1].dims[0]>0&&e[1].getBigInt64Array().forEach(o=>r.push(Number(o))),xe({axes:r,keepDims:t.keepDims,noopWithEmptyAxes:t.noopWithEmptyAxes})},St=(e,t,r,o)=>{let i=e.inputs,u=i.length===1?r:_o(i,r);e.compute(Tn(t,{hint:u.cacheKey,inputDependencies:["rank"]},[i[0]],u.noopWithEmptyAxes&&u.axes.length===0?hd:o,u.axes,i[0].dataType,u.keepDims,u.noopWithEmptyAxes),{inputs:[0]})},gd=(e,t)=>{_t(e.inputs),St(e,"ReduceLogSum",t,(o,i)=>[`var value = ${i.type.storage}(0);`,"",`value += ${o.getByIndices("input_indices")};`,"value = log(value);"])},yd=(e,t)=>{_t(e.inputs),St(e,"ReduceL1",t,(o,i)=>[`var value = ${i.type.storage}(0);`,"",`value += abs(${o.getByIndices("input_indices")});`,""])},bd=(e,t)=>{_t(e.inputs),St(e,"ReduceL2",t,(o,i)=>[`var t = ${i.type.value}(0); var value = ${i.type.value}(0);`,"",`t = ${o.getByIndices("input_indices")}; value += (t * t);`,"value = sqrt(value);"])},wd=(e,t)=>{_t(e.inputs),St(e,"ReduceLogSumExp",t,(o,i)=>[`var value = ${i.type.storage}(0);`,"",`value += exp(${o.getByIndices("input_indices")});`,"value = log(value);"])},vd=(e,t)=>{_t(e.inputs),St(e,"ReduceMax",t,(o,i,u)=>{let a=[];for(let p=0;p=0||u.length===0)&&a.push(o.indicesSet("input_indices",p,0));return[`${a.join(`\n`)}`,`var value = ${o.getByIndices("input_indices")};`,`value = max(value, ${o.getByIndices("input_indices")});`,""]})},$d=(e,t)=>{_t(e.inputs),St(e,"ReduceMean",t,(o,i,u)=>{let a=1;for(let p=0;p=0||u.length===0)&&(a*=e.inputs[0].dims[p]);return["var sum = f32(0);","",`sum += f32(${o.getByIndices("input_indices")});`,`let value = ${i.type.value}(sum / ${a});`]})},_d=(e,t)=>{_t(e.inputs),St(e,"ReduceMin",t,(o,i,u)=>{let a=[];for(let p=0;p=0||u.length===0)&&a.push(`input_indices[${p}] = 0;`);return[`${a.join(`\n`)}`,`var value = ${o.getByIndices("input_indices")};`,`value = min(value, ${o.getByIndices("input_indices")});`,""]})},Sd=(e,t)=>{_t(e.inputs),St(e,"ReduceProd",t,(o,i)=>[`var value = ${i.type.storage}(1);`,"",`value *= ${o.getByIndices("input_indices")};`,""])},xd=(e,t)=>{_t(e.inputs),St(e,"ReduceSum",t,(o,i)=>[`var value = ${i.type.storage}(0);`,"",`value += ${o.getByIndices("input_indices")};`,""])},Cd=(e,t)=>{_t(e.inputs),St(e,"ReduceSumSquare",t,(o,i)=>[`var t = ${i.type.value}(0); var value = ${i.type.value}(0);`,"",`t = ${o.getByIndices("input_indices")}; value += t * t;`,""])},xt=(e,t,r)=>{if(t.length===0)return r;let o=1,i=1;for(let u=0;u1024},_a=(e,t)=>{xt(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?$d(e,t):ca(e,t)},Sa=(e,t)=>{xt(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?yd(e,t):pa(e,t)},xa=(e,t)=>{xt(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?bd(e,t):ma(e,t)},Ca=(e,t)=>{xt(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?wd(e,t):fa(e,t)},Aa=(e,t)=>{xt(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?vd(e,t):ha(e,t)},Ia=(e,t)=>{xt(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?_d(e,t):ga(e,t)},Ta=(e,t)=>{xt(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Sd(e,t):ya(e,t)},Ea=(e,t)=>{xt(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?xd(e,t):ba(e,t)},Pa=(e,t)=>{xt(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Cd(e,t):wa(e,t)},Oa=(e,t)=>{xt(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?gd(e,t):va(e,t)}});var ka,Ra,Ba,So,Da=Q(()=>{"use strict";Ve();Ye();In();ka=e=>{if(!e||e.length===0||e.length>2)throw new Error("ArgMinMaxOp op requires 1 or 2 inputs.");if(e[0].dataType!==1)throw new Error("Invalid input type.")},Ra=(e,t)=>{ka(e.inputs);let r=(o,i,u)=>{let a=[];for(let p=0;p=0||u.length===0)&&a.push(`input_indices[${p}] = 0;`);return[`${a.join(`\n`)}`,`var value = ${o.getByIndices("input_indices")};\nvar best_index : i32 = 0;`,`if (${o.getByIndices("input_indices")} ${t.selectLastIndex>0?"<=":"<"} value) {\n value = ${o.getByIndices("input_indices")};\n best_index = i32(last_index);\n }`,"",i.setByOffset("global_idx","best_index")]};e.compute(Tn("ArgMin",{hint:t.cacheKey,inputDependencies:["rank"]},[e.inputs[0]],r,[t.axis],7,t.keepDims),{inputs:[0]})},Ba=(e,t)=>{ka(e.inputs);let r=(o,i,u)=>{let a=[];for(let p=0;p=0||u.length===0)&&a.push(`input_indices[${p}] = 0;`);return[`${a.join(`\n`)}`,`var value = ${o.getByIndices("input_indices")};\nvar best_index : i32 = 0;`,`if (${o.getByIndices("input_indices")} ${t.selectLastIndex>0?">=":">"} value) {\n value = ${o.getByIndices("input_indices")};\n best_index = i32(last_index);\n }`,"",i.setByOffset("global_idx","best_index")]};e.compute(Tn("argMax",{hint:t.cacheKey,inputDependencies:["rank"]},[e.inputs[0]],r,[t.axis],7,t.keepDims),{inputs:[0]})},So=e=>xe(e)});var Ad,Id,Td,Ed,En,Pd,Ma,xo=Q(()=>{"use strict";Ve();$n();_e();Ad=(e,t)=>{let r=e[0],o=e[1],i=e[2],u=e[3],a=e[4],p=e[5];if(a&&p)throw new Error("Attention cannot have both past and relative_position_bias");if(r.dims.length!==3)throw new Error(\'Input "input" must have 3 dimensions\');let m=r.dims[0],h=r.dims[1],d=r.dims[2];if(i.dims.length!==1)throw new Error(\'Input "bias" is expected to have 1 dimensions\');if(o.dims.length!==2)throw new Error(\'Input "weights" is expected to have 2 dimensions\');if(o.dims[0]!==d)throw new Error("Input 1 dimension 0 should have same length as dimension 2 of input 0");if(i.dims[0]!==o.dims[1])throw new Error(\'Input "bias" dimension 0 should have same length as dimension 1 of input "weights"\');let y=i.dims[0]/3,w=y,_=w;if(t.qkvHiddenSizes.length>0){if(t.qkvHiddenSizes.length!==3)throw new Error("qkv_hidden_sizes attribute should have 3 elements");for(let E of t.qkvHiddenSizes)if(E%t.numHeads!==0)throw new Error("qkv_hidden_sizes should be divisible by num_heads");y=t.qkvHiddenSizes[0],w=t.qkvHiddenSizes[1],_=t.qkvHiddenSizes[2]}let v=h;if(y!==w)throw new Error("qkv_hidden_sizes first element should be same as the second");if(i.dims[0]!==y+w+_)throw new Error(\'Input "bias" dimension 0 should have same length as sum of Q/K/V hidden sizes\');let x=0;if(a){if(w!==_)throw new Error(\'Input "past" expect k_hidden_size == v_hidden_size\');if(a.dims.length!==5)throw new Error(\'Input "past" must have 5 dimensions\');if(a.dims[0]!==2)throw new Error(\'Input "past" first dimension must be 2\');if(a.dims[1]!==m)throw new Error(\'Input "past" second dimension must be batch_size\');if(a.dims[2]!==t.numHeads)throw new Error(\'Input "past" third dimension must be num_heads\');if(a.dims[4]!==w/t.numHeads)throw new Error(\'Input "past" fifth dimension must be k_hidden_size / num_heads\');t.pastPresentShareBuffer||(x=a.dims[3])}let T=v+x,C=-1,S=0;if(u)throw new Error("Mask not supported");if(a)throw new Error("past is not supported");if(p)throw new Error("relativePositionBias is not supported");return{batchSize:m,sequenceLength:h,pastSequenceLength:x,kvSequenceLength:v,totalSequenceLength:T,maxSequenceLength:C,inputHiddenSize:d,hiddenSize:y,vHiddenSize:_,headSize:Math.floor(y/t.numHeads),vHeadSize:Math.floor(_/t.numHeads),numHeads:t.numHeads,isUnidirectional:!1,pastPresentShareBuffer:!1,maskFilterValue:t.maskFilterValue,maskType:S,scale:t.scale,broadcastResPosBias:!1,passPastInKv:!1,qkvFormat:1}},Id=(e,t,r,o)=>{let i=He(o),u=64,a=o/i;a{let _=J("x",t.dataType,t.dims,i),v="thread_max_vector";i===2?v="max(thread_max_vector.x, thread_max_vector.y)":i===4&&(v="max(max(thread_max_vector.x, thread_max_vector.y), max(thread_max_vector.z, thread_max_vector.w))");let x=ht(t.dataType),T=[{name:"d_inv",type:x},{name:"d_comp",type:"u32"},{name:"elements_per_wg",type:"u32"}];return`\n var wgMax: array;\n var wgSum: array;\n ${w.registerUniforms(T).declareVariables(_)}\n ${w.mainStart([u,1,1])}\n let localOffset = local_idx * uniforms.elements_per_wg;\n let offset: u32 = workgroup_id.x * uniforms.d_comp + localOffset;\n\n var thread_max_vector = ${Ze("f32",i,"-3.402823e+38f")};\n for (var i: u32 = 0; i < uniforms.elements_per_wg && i + localOffset < uniforms.d_comp; i++) {\n thread_max_vector = max(${gt(x,i,"x[offset + i]")}, thread_max_vector);\n }\n wgMax[local_idx] = ${v};\n workgroupBarrier();\n\n var maxValue = -3.402823e+38f;\n for (var i = 0u; i < ${u}; i++) {\n maxValue = max(wgMax[i], maxValue);\n }\n\n var sumVector = ${Ze("f32",i,"0")};\n for (var i: u32 = 0; i < uniforms.elements_per_wg && i + localOffset < uniforms.d_comp; i++) {\n sumVector += exp(${gt(x,i,"x[offset + i]")} - maxValue);\n }\n wgSum[local_idx] = ${ut("sumVector",i)};\n workgroupBarrier();\n\n var sum: f32 = 0;\n for (var i = 0u; i < ${u}; i++) {\n sum += wgSum[i];\n }\n\n if (sum == 0) {\n for (var i: u32 = 0; i < uniforms.elements_per_wg && i + localOffset < uniforms.d_comp; i++) {\n x[offset + i] = ${Ze(x,i,"uniforms.d_inv")};\n }\n } else {\n for (var i: u32 = 0; i < uniforms.elements_per_wg && i + localOffset < uniforms.d_comp; i++) {\n let f32input = ${gt(x,i,"x[offset + i]")};\n x[offset + i] = ${_.type.value}(exp(f32input - maxValue) / sum);\n }\n }\n }`};e.compute({name:"AttentionProbsSoftmax",shaderCache:{hint:`${u};${d};${i}`},getShaderSource:y,getRunData:()=>({outputs:[],dispatchGroup:{x:r},programUniforms:h})},{inputs:[t],outputs:[]})},Td=(e,t,r,o,i,u)=>{let a=[i.batchSize,i.numHeads,i.sequenceLength,i.kvSequenceLength+i.pastSequenceLength],p=u.scale===0?1/Math.sqrt(i.headSize):u.scale,m=He(i.headSize),h=i.headSize/m,d=12,y={x:Math.ceil(i.totalSequenceLength/d),y:Math.ceil(i.sequenceLength/d),z:i.batchSize*i.numHeads},w=st(t.dataType),_=[{type:"uint32",data:i.sequenceLength},{type:"uint32",data:h},{type:"uint32",data:i.totalSequenceLength},{type:"uint32",data:i.kvSequenceLength},{type:w,data:p}],v=[t,r],x=C=>{let S=V("q",t.dataType,t.dims,m),E=V("key",r.dataType,r.dims,m),O=J("output",t.dataType,a),U=Ne(t.dataType),M=[{name:"M",type:"u32"},{name:"K",type:"u32"},{name:"N",type:"u32"},{name:"kv_sequence_length",type:"u32"},{name:"alpha",type:U}];return`\n const beta: ${U} = 1.0;\n const TILE_SIZE = ${d}u;\n\n var tileQ: array<${S.type.storage}, ${d*d}>;\n var tileK: array<${S.type.storage}, ${d*d}>;\n ${C.registerUniforms(M).declareVariables(S,E,O)}\n ${C.mainStart([d,d,1])}\n // x holds the N and y holds the M\n let headIdx = workgroup_id.z;\n let m = workgroup_id.y * TILE_SIZE;\n let n = workgroup_id.x * TILE_SIZE;\n let lm = m + local_id.y;\n let ln = n + local_id.x;\n\n let qOffset = uniforms.M * uniforms.K * headIdx + m * uniforms.K;\n let kOffset = uniforms.kv_sequence_length * uniforms.K * headIdx + n * uniforms.K;\n\n var value = ${Ze(U,m)};\n for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {\n if (m + local_id.y < uniforms.M && w + local_id.x < uniforms.K) {\n tileQ[TILE_SIZE * local_id.y + local_id.x] = q[qOffset + local_id.y * uniforms.K + w + local_id.x];\n }\n if (n + local_id.y < uniforms.N && w + local_id.x < uniforms.K) {\n tileK[TILE_SIZE * local_id.y + local_id.x] = key[kOffset + local_id.y * uniforms.K + w + local_id.x];\n }\n workgroupBarrier();\n\n for (var k: u32 = 0u; k({outputs:[{dims:a,dataType:t.dataType,gpuDataType:0}],dispatchGroup:y,programUniforms:_}),getShaderSource:x},{inputs:v,outputs:[-1]})[0];return Id(e,T,i.batchSize*i.numHeads*i.sequenceLength,i.totalSequenceLength),T},Ed=(e,t,r,o)=>{let i=[o.batchSize,o.sequenceLength,o.vHiddenSize],u=12,a={x:Math.ceil(o.vHeadSize/u),y:Math.ceil(o.sequenceLength/u),z:o.batchSize*o.numHeads},p=[{type:"uint32",data:o.sequenceLength},{type:"uint32",data:o.totalSequenceLength},{type:"uint32",data:o.vHeadSize},{type:"uint32",data:o.numHeads},{type:"uint32",data:o.vHiddenSize}],m=h=>{let d=V("probs",t.dataType,t.dims),y=V("v",r.dataType,r.dims),w=J("output",t.dataType,i),_=[{name:"M",type:"u32"},{name:"K",type:"u32"},{name:"N",type:"u32"},{name:"num_heads",type:"u32"},{name:"v_hidden_size",type:"u32"}];return`\n const TILE_SIZE = ${u}u;\n var tileQ: array<${d.type.value}, ${u*u}>;\n var tileK: array<${d.type.value}, ${u*u}>;\n ${h.registerUniforms(_).declareVariables(d,y,w)}\n ${h.mainStart([u,u,1])}\n let headIdx = workgroup_id.z;\n let m = workgroup_id.y * TILE_SIZE + local_id.y;\n let n = workgroup_id.x * TILE_SIZE + local_id.x;\n\n let offsetA = headIdx * (uniforms.M * uniforms.K) + m * uniforms.K;\n let offsetB = headIdx * (uniforms.N * uniforms.K) + n;\n\n var value = ${d.type.storage}(0);\n for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {\n if (m < uniforms.M && w + local_id.x < uniforms.K) {\n tileQ[TILE_SIZE * local_id.y + local_id.x] = probs[offsetA + w + local_id.x];\n }\n if (n < uniforms.N && w + local_id.y < uniforms.K) {\n tileK[TILE_SIZE * local_id.y + local_id.x] = v[offsetB + (w + local_id.y) * uniforms.N];\n }\n workgroupBarrier();\n for (var k: u32 = 0u; k({outputs:[{dims:i,dataType:t.dataType,gpuDataType:0}],dispatchGroup:a,programUniforms:p}),getShaderSource:m},{inputs:[t,r],outputs:[0]})[0]},En=(e,t,r,o,i,u,a,p,m,h,d)=>{let y=Td(e,t,r,m,h,d);Ed(e,y,o,h)},Pd=(e,t)=>{let r=[t.batchSize,t.numHeads,t.sequenceLength,t.headSize],o=t.sequenceLength,i=t.inputHiddenSize,u=t.headSize,a=12,p={x:Math.ceil(t.headSize/a),y:Math.ceil(t.sequenceLength/a),z:t.batchSize*t.numHeads},m=[e.inputs[0],e.inputs[1],e.inputs[2]],h=[{type:"uint32",data:o},{type:"uint32",data:i},{type:"uint32",data:u},{type:"uint32",data:t.numHeads},{type:"uint32",data:t.headSize},{type:"uint32",data:t.hiddenSize},{type:"uint32",data:t.hiddenSize+t.hiddenSize+t.vHiddenSize}],d=y=>{let w=J("output_q",m[0].dataType,r),_=J("output_k",m[0].dataType,r),v=J("output_v",m[0].dataType,r),x=V("input",m[0].dataType,m[0].dims),T=V("weight",m[1].dataType,m[1].dims),C=V("bias",m[2].dataType,m[2].dims),S=x.type.storage,E=[{name:"M",type:"u32"},{name:"K",type:"u32"},{name:"N",type:"u32"},{name:"num_heads",type:"u32"},{name:"head_size",type:"u32"},{name:"hidden_size",type:"u32"},{name:"ldb",type:"u32"}];return`\n const TILE_SIZE = ${a}u;\n var tileInput: array<${S}, ${a*a}>;\n var tileWeightQ: array<${S}, ${a*a}>;\n var tileWeightK: array<${S}, ${a*a}>;\n var tileWeightV: array<${S}, ${a*a}>;\n ${y.registerUniforms(E).declareVariables(x,T,C,w,_,v)}\n ${y.mainStart([a,a,1])}\n let batchIndex = workgroup_id.z / uniforms.num_heads;\n let headNumber = workgroup_id.z % uniforms.num_heads;\n let m = workgroup_id.y * TILE_SIZE + local_id.y;\n let n = workgroup_id.x * TILE_SIZE + local_id.x;\n\n let inputOffset = batchIndex * (uniforms.M * uniforms.K) + m * uniforms.K;\n let biasOffsetQ = headNumber * uniforms.head_size;\n let biasOffsetK = uniforms.hidden_size + biasOffsetQ;\n let biasOffsetV = uniforms.hidden_size + biasOffsetK;\n\n var valueQ = ${S}(0);\n var valueK = ${S}(0);\n var valueV = ${S}(0);\n for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {\n if (m < uniforms.M && w + local_id.x < uniforms.K) {\n tileInput[TILE_SIZE * local_id.y + local_id.x] = input[inputOffset + w + local_id.x];\n }\n if (n < uniforms.N && w + local_id.y < uniforms.K) {\n let offset = n + (w + local_id.y) * uniforms.ldb;\n tileWeightQ[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetQ + offset];\n tileWeightK[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetK + offset];\n tileWeightV[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetV + offset];\n }\n workgroupBarrier();\n for (var k: u32 = 0u; k({outputs:[{dims:r,dataType:e.inputs[0].dataType,gpuDataType:0},{dims:r,dataType:e.inputs[0].dataType,gpuDataType:0},{dims:r,dataType:e.inputs[0].dataType,gpuDataType:0}],dispatchGroup:p,programUniforms:h}),getShaderSource:d},{inputs:m,outputs:[-1,-1,-1]})},Ma=(e,t)=>{let r=Ad(e.inputs,t),[o,i,u]=Pd(e,r);return En(e,o,i,u,e.inputs[4],void 0,void 0,void 0,e.inputs[5],r,t)}});var Od,kd,Rd,za,Ua=Q(()=>{"use strict";dr();Ce();Ye();_e();Od=(e,t)=>{if(!e||e.length!==5)throw new Error("BatchNormalization requires 5 inputs");let r=(o,i,u)=>{let a=i.length;if(a!==o.length)throw new Error(`${u}: num dimensions != ${a}`);i.forEach((p,m)=>{if(p!==o[m])throw new Error(`${u}: dim[${m}] do not match`)})};if(e[0].dims.length>1){let o=t.format==="NHWC"?t.spatial?e[0].dims.slice(-1):e[0].dims.slice(-1).concat(e[0].dims.slice(1,e[0].dims.length-1)):e[0].dims.slice(1,t.spatial?2:void 0);r(e[1].dims,o,"Invalid input scale"),r(e[2].dims,o,"Invalid input B"),r(e[3].dims,o,"Invalid input mean"),r(e[4].dims,o,"Invalid input var")}else r(e[1].dims,[1],"Invalid input scale"),r(e[2].dims,[1],"Invalid input B"),r(e[3].dims,[1],"Invalid input mean"),r(e[4].dims,[1],"Invalid input var")},kd=(e,t)=>{let{epsilon:r,spatial:o,format:i}=t,u=e[0].dims,a=o?He(u[u.length-1]):1,p=i==="NHWC"&&u.length>1?a:1,m=W.size(u)/a,h=o,d=h?u.length:u,y=V("x",e[0].dataType,e[0].dims,a),w=V("scale",e[1].dataType,e[1].dims,p),_=V("bias",e[2].dataType,e[2].dims,p),v=V("inputMean",e[3].dataType,e[3].dims,p),x=V("inputVar",e[4].dataType,e[4].dims,p),T=J("y",e[0].dataType,d,a),C=()=>{let E="";if(o)E=`let cOffset = ${u.length===1?"0u":i==="NHWC"?`outputIndices[${u.length-1}] / ${a}`:"outputIndices[1]"};`;else if(i==="NCHW")E=`\n ${T.indicesSet("outputIndices","0","0")}\n let cOffset = ${T.indicesToOffset("outputIndices")};`;else{E=`var cIndices = ${w.type.indices}(0);\n cIndices[0] = outputIndices[${u.length-1}];`;for(let O=1;O`\n const epsilon = ${r};\n ${E.registerUniform("outputSize","u32").declareVariables(y,w,_,v,x,T)}\n ${E.mainStart()}\n ${E.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n var outputIndices = ${T.offsetToIndices(`global_idx * ${a}`)};\n ${C()}\n let scale = ${w.getByOffset("cOffset")};\n let bias = ${_.getByOffset("cOffset")};\n let inputMean = ${v.getByOffset("cOffset")};\n let inputVar = ${x.getByOffset("cOffset")};\n let x = ${y.getByOffset("global_idx")};\n let value = (x - inputMean) * inverseSqrt(inputVar + epsilon) * scale + bias;\n ${T.setByOffset("global_idx","value")}\n }`;return{name:"BatchNormalization",shaderCache:{hint:`${t.epsilon}_${t.format}_${o}_${a}`,inputDependencies:h?["rank","type","type","type","type"]:void 0},getShaderSource:S,getRunData:()=>({outputs:[{dims:e[0].dims,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(m/64)},programUniforms:h?[{type:"uint32",data:m},...G(u)]:[{type:"uint32",data:m}]})}},Rd=e=>xe(e),za=(e,t)=>{let{inputs:r,outputCount:o}=e,i=Rd({...t,outputCount:o});if(lr.webgpu.validateInputContent&&Od(r,i),t.trainingMode)throw new Error("BatchNormalization trainingMode is not supported yet.");e.compute(kd(r,i))}});var Bd,Dd,Va,Wa=Q(()=>{"use strict";Ce();_e();Bd=e=>{if(e[0].dims.length!==3)throw new Error("input should have 3 dimensions");if(![320,640,1280].includes(e[0].dims[2]))throw new Error("number of channels should be 320, 640 or 1280");if(e[1].dims.length!==1)throw new Error("bias is expected to have 1 dimensions");if(e[0].dims[2]!==e[1].dims[0])throw new Error("last dimension of input and bias are not the same")},Dd=e=>{let t=e[0].dims,r=e[0].dims[2],o=W.size(t)/4,i=e[0].dataType,u=V("input",i,t,4),a=V("bias",i,[r],4),p=V("residual",i,t,4),m=J("output",i,t,4);return{name:"BiasAdd",getRunData:()=>({outputs:[{dims:t,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(o/64)}}),getShaderSource:d=>`\n const channels = ${r}u / 4;\n ${d.declareVariables(u,a,p,m)}\n\n ${d.mainStart()}\n ${d.guardAgainstOutOfBoundsWorkgroupSizes(o)}\n let value = ${u.getByOffset("global_idx")}\n + ${a.getByOffset("global_idx % channels")} + ${p.getByOffset("global_idx")};\n ${m.setByOffset("global_idx","value")}\n }`}},Va=e=>{Bd(e.inputs),e.compute(Dd(e.inputs))}});var Md,Te,Na,Ha,Ga,La,Fa,ja,qa,Ka,Ya,zd,Za,Xa,Ja,Qa,Pn,es,On,ts,rs,ns,os,is,as,ss,us,ls,ds,cs,ps,ms,fs,hs,gs,ys,bs,ws,Co=Q(()=>{"use strict";Ve();Ce();Ye();_e();Md=(e,t,r,o,i,u)=>{let a=Math.ceil(t/4),p="";typeof i=="string"?p=`${i}(a)`:p=i("a");let m=V("inputData",r,[a],4),h=J("outputData",o,[a],4);return`\n ${e.registerUniform("vec_size","u32").declareVariables(m,h)}\n\n ${u??""}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")}\n\n let a = ${m.getByOffset("global_idx")};\n ${h.setByOffset("global_idx",p)}\n }`},Te=(e,t,r,o,i,u=e.dataType)=>({name:t,shaderCache:{hint:i,inputDependencies:["type"]},getShaderSource:a=>Md(a,W.size(e.dims),e.dataType,u,r,o),getRunData:a=>({outputs:[{dims:e.dims,dataType:u}],dispatchGroup:{x:Math.ceil(W.size(a[0].dims)/64/4)},programUniforms:[{type:"uint32",data:Math.ceil(W.size(e.dims)/4)}]})}),Na=e=>{e.compute(Te(e.inputs[0],"Abs","abs"))},Ha=e=>{e.compute(Te(e.inputs[0],"Acos","acos"))},Ga=e=>{e.compute(Te(e.inputs[0],"Acosh","acosh"))},La=e=>{e.compute(Te(e.inputs[0],"Asin","asin"))},Fa=e=>{e.compute(Te(e.inputs[0],"Asinh","asinh"))},ja=e=>{e.compute(Te(e.inputs[0],"Atan","atan"))},qa=e=>{e.compute(Te(e.inputs[0],"Atanh","atanh"))},Ka=e=>xe(e),Ya=(e,t)=>{let r;switch(t.to){case 10:r="vec4";break;case 1:r="vec4";break;case 12:r="vec4";break;case 6:r="vec4";break;case 9:r="vec4";break;default:throw new RangeError(`not supported type (specified in attribute \'to\' from \'Cast\' operator): ${t.to}`)}e.compute(Te(e.inputs[0],"Cast",r,void 0,t.cacheKey,t.to))},zd=e=>{let t=e.length>=2&&e[1].data!==0?e[1].getFloat32Array()[0]:xn,r=e.length>=3&&e[2].data!==0?e[2].getFloat32Array()[0]:Cn;return xe({min:t,max:r})},Za=(e,t)=>{let r=e.inputs.length===1?t:zd(e.inputs),o=ht(e.inputs[0].dataType);e.compute(Te(e.inputs[0],"Clip",i=>`clamp(${i}, clip_min_, clip_max_)`,`\n const clip_min_: vec4<${o}> = vec4(${o}(${r.min}));\n const clip_max_: vec4<${o}> = vec4(${o}(${r.max}));\n`,r.cacheKey),{inputs:[0]})},Xa=e=>{e.compute(Te(e.inputs[0],"Ceil","ceil"))},Ja=e=>{e.compute(Te(e.inputs[0],"Cos","cos"))},Qa=e=>{e.compute(Te(e.inputs[0],"Cosh","cosh"))},Pn=e=>xe(e),es=(e,t)=>{let r=ht(e.inputs[0].dataType);e.compute(Te(e.inputs[0],"Elu",o=>`elu_vf32(${o})`,`\n const elu_alpha_ = ${r}(${t.alpha});\n\n fn elu_f32(a: ${r}) -> ${r} {\n return select((exp(a) - 1.0) * elu_alpha_, a, a >= 0.0);\n }\n\n fn elu_vf32(v: vec4<${r}>) -> vec4<${r}> {\n return vec4(elu_f32(v.x), elu_f32(v.y), elu_f32(v.z), elu_f32(v.w));\n }`,t.cacheKey))},On=(e,t="f32")=>`\nconst r0: ${t} = 0.3275911;\nconst r1: ${t} = 0.254829592;\nconst r2: ${t} = -0.284496736;\nconst r3: ${t} = 1.421413741;\nconst r4: ${t} = -1.453152027;\nconst r5: ${t} = 1.061405429;\n\nfn erf_vf32(v: ${e}) -> ${e} {\n let absv = abs(v);\n let x = 1.0 / (1.0 + r0 * absv);\n return sign(v) * (1.0 - ((((r5 * x + r4) * x + r3) * x + r2) * x + r1) * x * exp(-absv * absv));\n}`,ts=e=>{let t=ht(e.inputs[0].dataType);e.compute(Te(e.inputs[0],"Erf",r=>`erf_vf32(${r})`,On(`vec4<${t}>`,t)))},rs=e=>{e.compute(Te(e.inputs[0],"Exp","exp"))},ns=e=>{e.compute(Te(e.inputs[0],"Floor","floor"))},os=e=>{let t=ht(e.inputs[0].dataType);e.compute(Te(e.inputs[0],"Gelu",r=>`0.5 * ${r} * (1.0 + erf_vf32(${r} * 0.7071067811865475))`,On(`vec4<${t}>`,t)))},is=(e,t)=>{let r=ht(e.inputs[0].dataType);e.compute(Te(e.inputs[0],"LeakyRelu",o=>`select(leaky_relu_alpha_ * ${o}, ${o}, ${o} >= vec4<${r}>(0.0))`,`const leaky_relu_alpha_ = ${r}(${t.alpha});`,t.cacheKey))},as=e=>{e.compute(Te(e.inputs[0],"Not",t=>`!${t}`))},ss=e=>{e.compute(Te(e.inputs[0],"Neg",t=>`-${t}`))},us=e=>{e.compute(Te(e.inputs[0],"Reciprocal",t=>`1.0/${t}`))},ls=e=>{let t=ht(e.inputs[0].dataType);e.compute(Te(e.inputs[0],"Relu",r=>`select(vec4<${t}>(0.0), ${r}, ${r} > vec4<${t}>(0.0))`))},ds=e=>{e.compute(Te(e.inputs[0],"Sigmoid",t=>`(1.0 / (1.0 + exp(-${t})))`))},cs=e=>xe(e),ps=(e,t)=>{let r=ht(e.inputs[0].dataType);e.compute(Te(e.inputs[0],"HardSigmoid",o=>`max(vec4<${r}>(0.0), min(vec4<${r}>(1.0), ${t.alpha} * ${o} + vec4<${r}>(${t.beta})))`,void 0,t.cacheKey))},ms=e=>{e.compute(Te(e.inputs[0],"Sin","sin"))},fs=e=>{e.compute(Te(e.inputs[0],"Sinh","sinh"))},hs=e=>{e.compute(Te(e.inputs[0],"Sqrt","sqrt"))},gs=e=>{e.compute(Te(e.inputs[0],"Tan","tan"))},ys=e=>{e.compute(Te(e.inputs[0],"Tanh",t=>`sign(${t}) * (1 - exp(-2 * abs(${t}))) / (1 + exp(-2 * abs(${t})))`))},bs=(e,t)=>{let r=ht(e.inputs[0].dataType);return e.compute(Te(e.inputs[0],"ThresholdedRelu",o=>`select(vec4<${r}>(0.0), ${o}, ${o} > thresholded_relu_alpha_)`,`const thresholded_relu_alpha_ = vec4<${r}>(${t.alpha});`,t.cacheKey)),0},ws=e=>{e.compute(Te(e.inputs[0],"Log","log"))}});var Vd,Wd,vs,$s=Q(()=>{"use strict";Ce();_e();Co();Vd=e=>{if(e[0].dims.length!==3)throw new Error("input should have 3 dimensions");if(![2560,5120,10240].includes(e[0].dims[2]))throw new Error("hidden state should be 2560, 5120 or 10240");if(e[1].dims.length!==1)throw new Error("bias is expected to have 1 dimensions");if(e[0].dims[2]!==e[1].dims[0])throw new Error("last dimension of input and bias are not the same")},Wd=e=>{let t=e[0].dims.slice();t[2]=t[2]/2;let r=V("input",e[0].dataType,e[0].dims,4),o=V("bias",e[0].dataType,[e[0].dims[2]],4),i=J("output",e[0].dataType,t,4),u=W.size(t)/4,a=Ne(e[0].dataType);return{name:"BiasSplitGelu",getRunData:()=>({outputs:[{dims:t,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(u/64)}}),getShaderSource:m=>`\n const M_SQRT2 = sqrt(2.0);\n const halfChannels = ${e[0].dims[2]/4/2}u;\n\n ${m.declareVariables(r,o,i)}\n\n ${On(`vec4<${a}>`,a)}\n\n ${m.mainStart()}\n ${m.guardAgainstOutOfBoundsWorkgroupSizes(u)}\n let biasIdx = global_idx % halfChannels;\n let batchIndex = global_idx / halfChannels;\n let inputOffset = biasIdx + batchIndex * halfChannels * 2;\n let valueLeft = input[inputOffset] + bias[biasIdx];\n let valueRight = input[inputOffset + halfChannels] + bias[biasIdx + halfChannels];\n let geluRight = valueRight * 0.5 * (erf_vf32(valueRight / M_SQRT2) + 1);\n\n ${i.setByOffset("global_idx","valueLeft * geluRight")}\n }`}},vs=e=>{Vd(e.inputs),e.compute(Wd(e.inputs))}});var Nd,Hd,Ct,_s,Ss,xs,Cs,As,Is,Ts,Es,Ps,Os,ks=Q(()=>{"use strict";Ve();Ce();_e();Nd=(e,t,r,o,i,u,a,p,m,h,d,y)=>{let w,_;typeof p=="string"?w=_=(S,E)=>`${p}((${S}),(${E}))`:typeof p=="function"?w=_=p:(w=p.scalar,_=p.vector);let v=J("outputData",d,o.length,4),x=V("aData",m,t.length,4),T=V("bData",h,r.length,4),C;if(i)if(u){let S=W.size(t)===1,E=W.size(r)===1,O=t.length>0&&t[t.length-1]%4===0,U=r.length>0&&r[r.length-1]%4===0;S||E?C=v.setByOffset("global_idx",_(S?`${x.type.value}(${x.getByOffset("0")}.x)`:x.getByOffset("global_idx"),E?`${T.type.value}(${T.getByOffset("0")}.x)`:T.getByOffset("global_idx"))):C=`\n let outputIndices = ${v.offsetToIndices("global_idx * 4u")};\n let offsetA = ${x.broadcastedIndicesToOffset("outputIndices",v)};\n let offsetB = ${T.broadcastedIndicesToOffset("outputIndices",v)};\n ${v.setByOffset("global_idx",_(a||O?x.getByOffset("offsetA / 4u"):`${x.type.value}(${x.getByOffset("offsetA / 4u")}[offsetA % 4u])`,a||U?T.getByOffset("offsetB / 4u"):`${T.type.value}(${T.getByOffset("offsetB / 4u")}[offsetB % 4u])`))}\n `}else C=v.setByOffset("global_idx",_(x.getByOffset("global_idx"),T.getByOffset("global_idx")));else{if(!u)throw new Error("no necessary to use scalar implementation for element-wise binary op implementation.");let S=(E,O,U="")=>{let M=`aData[indexA${O}][componentA${O}]`,N=`bData[indexB${O}][componentB${O}]`;return`\n let outputIndices${O} = ${v.offsetToIndices(`global_idx * 4u + ${O}u`)};\n let offsetA${O} = ${x.broadcastedIndicesToOffset(`outputIndices${O}`,v)};\n let offsetB${O} = ${T.broadcastedIndicesToOffset(`outputIndices${O}`,v)};\n let indexA${O} = offsetA${O} / 4u;\n let indexB${O} = offsetB${O} / 4u;\n let componentA${O} = offsetA${O} % 4u;\n let componentB${O} = offsetB${O} % 4u;\n ${E}[${O}] = ${U}(${w(M,N)});\n `};d===9?C=`\n var data = vec4(0);\n ${S("data",0,"u32")}\n ${S("data",1,"u32")}\n ${S("data",2,"u32")}\n ${S("data",3,"u32")}\n outputData[global_idx] = dot(vec4(0x1, 0x100, 0x10000, 0x1000000), vec4(data));`:C=`\n ${S("outputData[global_idx]",0)}\n ${S("outputData[global_idx]",1)}\n ${S("outputData[global_idx]",2)}\n ${S("outputData[global_idx]",3)}\n `}return`\n ${e.registerUniform("vec_size","u32").declareVariables(x,T,v)}\n\n ${y??""}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")}\n ${C}\n }`},Hd=(e,t,r,o,i,u,a=r.dataType)=>{let p=!W.areEqual(r.dims,o.dims),m=r.dims,h=W.size(r.dims),d=!1,y=!1,w=[p];if(p){let _=vt.calcShape(r.dims,o.dims,!1);if(!_)throw new Error("Can\'t perform binary op on the given tensors");m=_,h=W.size(m);let v=W.size(r.dims)===1,x=W.size(o.dims)===1,T=r.dims.length>0&&r.dims[r.dims.length-1]%4===0,C=o.dims.length>0&&o.dims[o.dims.length-1]%4===0;w.push(v),w.push(x),w.push(T),w.push(C);let S=1;for(let E=1;E_.toString()).join("_"),inputDependencies:["rank","rank"]},getShaderSource:_=>Nd(_,r.dims,o.dims,m,d,p,y,i,r.dataType,o.dataType,a,u),getRunData:()=>({outputs:[{dims:m,dataType:a}],dispatchGroup:{x:Math.ceil(h/64/4)},programUniforms:[{type:"uint32",data:Math.ceil(W.size(m)/4)},...G(r.dims),...G(o.dims),...G(m)]})}},Ct=(e,t,r,o,i,u)=>{e.compute(Hd(t,i??"",e.inputs[0],e.inputs[1],r,o,u))},_s=e=>{Ct(e,"Add",(t,r)=>`${t}+${r}`)},Ss=e=>{Ct(e,"Div",(t,r)=>`${t}/${r}`)},xs=e=>{Ct(e,"Equal",{scalar:(t,r)=>`u32(${t}==${r})`,vector:(t,r)=>`vec4(${t}==${r})`},void 0,void 0,9)},Cs=e=>{Ct(e,"Mul",(t,r)=>`${t}*${r}`)},As=e=>{let t=V("input",e.inputs[0].dataType,e.inputs[0].dims).type.value;Ct(e,"Pow",{scalar:(o,i)=>`pow_custom(${o},${i})`,vector:(o,i)=>`pow_vector_custom(${o},${i})`},`\n fn pow_custom(a : ${t}, b : ${t}) -> ${t} {\n if (b == ${t}(0.0)) {\n return ${t}(1.0);\n } else if (a < ${t}(0.0) && f32(b) != floor(f32(b))) {\n return ${t}(pow(f32(a), f32(b))); // NaN\n }\n return select(sign(a), ${t}(1.0), round(f32(abs(b) % ${t}(2.0))) != 1.0) * ${t}(${t==="i32"?"round":""}(pow(f32(abs(a)), f32(b))));\n }\n fn pow_vector_custom(a : vec4<${t}>, b : vec4<${t}>) -> vec4<${t}> {\n // TODO: implement vectorized pow\n return vec4<${t}>(pow_custom(a.x, b.x), pow_custom(a.y, b.y), pow_custom(a.z, b.z), pow_custom(a.w, b.w));\n }\n `)},Is=e=>{Ct(e,"Sub",(t,r)=>`${t}-${r}`)},Ts=e=>{Ct(e,"Greater",{scalar:(t,r)=>`u32(${t}>${r})`,vector:(t,r)=>`vec4(${t}>${r})`},void 0,void 0,9)},Es=e=>{Ct(e,"Less",{scalar:(t,r)=>`u32(${t}<${r})`,vector:(t,r)=>`vec4(${t}<${r})`},void 0,void 0,9)},Ps=e=>{Ct(e,"GreaterOrEqual",{scalar:(t,r)=>`u32(${t}>=${r})`,vector:(t,r)=>`vec4(${t}>=${r})`},void 0,void 0,9)},Os=e=>{Ct(e,"LessOrEqual",{scalar:(t,r)=>`u32(${t}<=${r})`,vector:(t,r)=>`vec4(${t}<=${r})`},void 0,void 0,9)}});var Ld,Fd,jd,qd,Rs,Bs,Ds=Q(()=>{"use strict";Ce();Ye();_e();Ld=e=>{if(!e||e.length<1)throw new Error("too few inputs");let t=e[0].dataType,r=e[0].dims.length;for(let o of e){if(o.dataType!==t)throw new Error("input tensors should be one type");if(o.dims.length!==r)throw new Error("input tensors should have the same shape")}},Fd=(e,t)=>`\n fn calculateInputIndex(index: u32) -> u32 {\n let sizeInConcatAxis = array(${t});\n for (var i: u32 = 0u; i < ${e}; i += 1u ) {\n if (index < sizeInConcatAxis[i]) {\n return i;\n }\n }\n return ${e}u;\n }`,jd=(e,t)=>{let r=e.length,o=[];for(let i=0;i{let r=e[0].dims.slice();if(t>=r.length||t<-1*r.length)throw new Error("axis specified for concat doesn\'t match input dimensionality");let o=t<0?r.length+t:t,i=r.slice(0);for(let C=1;C`uniforms.sizeInConcatAxis${C}`).join(","),T=C=>`\n\n ${(()=>{C.registerUniform("outputSize","u32");for(let S=0;S(${x});\n ${v} -= sizeInConcatAxis[inputIndex - 1u];\n }\n\n ${jd(p,_)}\n }`;return{name:"Concat",shaderCache:{hint:`${t}`,inputDependencies:d},getRunData:()=>({outputs:[{dims:i,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:w}),getShaderSource:T}},Rs=(e,t)=>{Ld(e.inputs),e.compute(qd(e.inputs,t.axis))},Bs=e=>xe({axis:e.axis})});var At,kn,Ut=Q(()=>{"use strict";Ce();At=(e,t)=>{switch(e.activation){case"Relu":return`value = max(value, ${t}(0.0));`;case"Sigmoid":return`value = (${t}(1.0) / (${t}(1.0) + exp(-value)));`;case"Clip":return`value = clamp(value, ${t}(uniforms.clip_min), ${t}(uniforms.clip_max));`;default:return""}},kn=e=>{let t=e?.activation||"";if(t==="Clip"){let[r,o]=e?.activation_params||[xn,Cn];return{activation:t,clipMax:o,clipMin:r}}return{activation:t}}});var je,Rn,Bn=Q(()=>{"use strict";je=(e,t)=>{switch(e){case 1:return t;case 2:return`vec2<${t}>`;case 3:return`vec3<${t}>`;case 4:return`vec4<${t}>`;default:throw new Error(`${e}-component is not supported.`)}},Rn=e=>`\n ${e?"value = value + getBiasByOutputCoords(coords);":""}\n `});var Dn,Ao=Q(()=>{"use strict";Dn=e=>`\nfn getIndexFromCoords4D(coords : vec4, shape : vec4) -> i32 {\n return dot(coords, vec4(\n shape.y * shape.z * shape.w, shape.z * shape.w, shape.w, 1));\n}\nfn getOutputIndexFromCoords(coords : vec4) -> i32 {\n return dot(coords, vec4(\n i32(${e}.x), i32(${e}.y), i32(${e}.z), 1));\n}\n`});var Kd,Yd,Ur,Ms,Zd,Vr,Xd,Mn,Wr=Q(()=>{"use strict";Ce();_e();Ut();Bn();Kd=(e,t)=>e?`\n mm_Asub[inputRow][inputCol] = mm_readA(batch,\n kStart + inputRow,\n globalRowStart / innerElementSize + inputCol${t?", batchIndices":""});\n `:`\n mm_Asub[inputRow][inputCol] = mm_readA(batch,\n globalRow + innerRow,\n kStart / innerElementSize + inputCol${t?", batchIndices":""});\n `,Yd=(e,t)=>e?`\n let ACached0 = mm_Asub[k * innerElementSize][localRow];\n let ACached1 = mm_Asub[k * innerElementSize + 1][localRow];\n let ACached2 = mm_Asub[k * innerElementSize + 2][localRow];\n ${t===3?"":"let ACached3 = mm_Asub[k * innerElementSize + 3][localRow];"}\n for (var i = 0; i < rowPerThread; i = i + 1) {\n acc[i] = BCached0 * ACached0[i] + acc[i];\n acc[i] = BCached1 * ACached1[i] + acc[i];\n acc[i] = BCached2 * ACached2[i] + acc[i];\n ${t===3?"":"acc[i] = BCached3 * ACached3[i] + acc[i];"}\n }`:`\n for (var i = 0; i < rowPerThread; i = i + 1) {\n let ACached = mm_Asub[tileRow + i][k];\n acc[i] = BCached0 * ACached.x + acc[i];\n acc[i] = BCached1 * ACached.y + acc[i];\n acc[i] = BCached2 * ACached.z + acc[i];\n ${t===3?"":"acc[i] = BCached3 * ACached.w + acc[i];"}\n }`,Ur=(e,t,r="f32",o,i=!1,u=32,a=!1,p=32)=>{let m=t[1]*e[1],h=t[0]*e[0],d=i?m:u,y=i?u:m,w=d/t[0],_=u/t[1];if(!((i&&w===4&&e[1]===4||!i&&(w===3||w===4))&&d%t[0]===0&&u%t[1]===0&&e[0]===4))throw new Error(`If transposeA ${i} is true, innerElementSize ${w} and workPerThread[1] ${e[1]} must be 4.\n Otherwise, innerElementSize ${w} must be 3 or 4.\n tileAWidth ${d} must be divisible by workgroupSize[0]${t[0]}. tileInner ${u} must be divisible by workgroupSize[1] ${t[1]}. colPerThread ${e[0]} must be 4.`);return`\nvar mm_Asub: array, ${d/w}>, ${y}>;\nvar mm_Bsub: array, ${h/e[0]}>, ${u}>;\n\nconst rowPerThread = ${e[1]};\nconst colPerThread = ${e[0]};\nconst innerElementSize = ${w};\nconst tileInner = ${u};\n\n@compute @workgroup_size(${t[0]}, ${t[1]}, ${t[2]})\nfn main(@builtin(local_invocation_id) localId : vec3,\n @builtin(global_invocation_id) globalId : vec3,\n @builtin(workgroup_id) workgroupId : vec3) {\n let localRow = i32(localId.y);\n let tileRow = localRow * rowPerThread;\n let tileCol = i32(localId.x);\n\n let globalRow =i32(globalId.y) * rowPerThread;\n let globalCol = i32(globalId.x);\n let batch = ${a?"0":"i32(globalId.z)"};\n ${o?`let batchIndices = ${o.offsetToIndices("u32(batch)")};`:""}\n let globalRowStart = i32(workgroupId.y) * ${m};\n\n let num_tiles = ${a?`${Math.ceil(p/u)}`:"(uniforms.dim_inner - 1) / tileInner + 1"};\n var kStart = ${a?`i32(globalId.z) * ${p}`:"0"};\n\n var acc: array, rowPerThread>;\n\n // Loop over shared dimension.\n let tileRowB = localRow * ${_};\n for (var t = 0; t < num_tiles; t = t + 1) {\n // Load one tile of A into local memory.\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n let inputRow = tileRow + innerRow;\n let inputCol = tileCol;\n ${Kd(i,o)}\n }\n\n // Load one tile of B into local memory.\n for (var innerRow = 0; innerRow < ${_}; innerRow = innerRow + 1) {\n let inputRow = tileRowB + innerRow;\n let inputCol = tileCol;\n mm_Bsub[inputRow][inputCol] = mm_readB(batch, kStart + inputRow, globalCol${o?", batchIndices":""});\n }\n kStart = kStart + tileInner;\n workgroupBarrier();\n\n // Compute acc values for a single thread.\n for (var k = 0; k < tileInner / innerElementSize; k = k + 1) {\n let BCached0 = mm_Bsub[k * innerElementSize][tileCol];\n let BCached1 = mm_Bsub[k * innerElementSize + 1][tileCol];\n let BCached2 = mm_Bsub[k * innerElementSize + 2][tileCol];\n ${w===3?"":"let BCached3 = mm_Bsub[k * innerElementSize + 3][tileCol];"}\n\n ${Yd(i,w)}\n }\n\n workgroupBarrier();\n }\n\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n mm_write(batch, globalRow + innerRow, globalCol, acc[innerRow]);\n }\n}`},Ms=(e,t)=>e?`\n mm_Asub[inputRow][inputCol] = mm_readA(batch,\n kStart + inputRow,\n globalRowStart + inputCol${t?", batchIndices":""});\n `:`\n mm_Asub[inputRow][inputCol] = mm_readA(batch,\n globalRowStart + inputRow,\n kStart + inputCol${t?", batchIndices":""});\n `,Zd=e=>e?"let ACached = mm_Asub[k][tileRow + innerRow];":"let ACached = mm_Asub[tileRow + innerRow][k];",Vr=(e,t,r="f32",o,i=!1,u=32,a=!1,p=32,m=!1)=>{let h=e[1]*t[1],d=e[0]*t[0],y=i?h:u,w=i?u:h;if(!(w%t[1]===0&&y%t[0]===0&&u%t[1]===0))throw new Error(`tileAHight ${w} must be divisible by workgroupSize[1]${t[1]}, tileAWidth ${y} must be divisible by workgroupSize[0]${t[0]}, tileInner ${u} must be divisible by workgroupSize[1]${t[1]}`);let _=w/t[1],v=y/t[0],x=u/t[1],T=m?`\n let localRow = i32(localId.y);\n let localCol = i32(localId.x);\n let globalRowStart = i32(workgroupId.y) * ${h};\n let globalColStart = i32(workgroupId.x) * ${d};\n\n // Loop over shared dimension.\n for (var t = 0; t < num_tiles; t = t + 1) {\n // Load one tile of A into local memory.\n for (var inputRow = localRow; inputRow < ${w}; inputRow = inputRow + ${t[1]}) {\n for (var inputCol = localCol; inputCol < ${y}; inputCol = inputCol + ${t[0]}) {\n ${Ms(i,o)}\n }\n }\n // Load one tile of B into local memory.\n for (var inputRow = localRow; inputRow < ${u}; inputRow = inputRow + ${t[1]}) {\n for (var inputCol = localCol; inputCol < ${d}; inputCol = inputCol + ${t[0]}) {\n mm_Bsub[inputRow][inputCol] = mm_readB(batch,\n kStart + inputRow,\n globalColStart + inputCol${o?", batchIndices":""});\n }\n }\n kStart = kStart + tileInner;\n workgroupBarrier();\n\n // Compute acc values for a single thread.\n var BCached : array<${r}, colPerThread>;\n for (var k = 0; k < tileInner; k = k + 1) {\n for (var inner = 0; inner < colPerThread; inner = inner + 1) {\n BCached[inner] = mm_Bsub[k][localCol + inner * ${t[0]}];\n }\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n let ACached = ${i?`mm_Asub[k][localRow + innerRow * ${t[1]}];`:`mm_Asub[localRow + innerRow * ${t[1]}][k];`}\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n acc[innerRow][innerCol] = acc[innerRow][innerCol] +\n ACached * BCached[innerCol];\n }\n }\n }\n workgroupBarrier();\n }\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n let gRow = globalRowStart + localRow + innerRow * ${t[1]};\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n let gCol = globalColStart + localCol + innerCol * ${t[0]};\n mm_write(batch, gRow, gCol, acc[innerRow][innerCol]);\n }\n }\n `:`\nlet tileRow = i32(localId.y) * rowPerThread;\nlet tileCol = i32(localId.x) * colPerThread;\n\nlet globalRow = i32(globalId.y) * rowPerThread;\nlet globalCol = i32(globalId.x) * colPerThread;\nlet globalRowStart = i32(workgroupId.y) * ${h};\n\nlet tileRowA = i32(localId.y) * ${_};\nlet tileColA = i32(localId.x) * ${v};\nlet tileRowB = i32(localId.y) * ${x};\n// Loop over shared dimension.\nfor (var t = 0; t < num_tiles; t = t + 1) {\n // Load one tile of A into local memory.\n for (var innerRow = 0; innerRow < ${_}; innerRow = innerRow + 1) {\n for (var innerCol = 0; innerCol < ${v}; innerCol = innerCol + 1) {\n let inputRow = tileRowA + innerRow;\n let inputCol = tileColA + innerCol;\n ${Ms(i,o)}\n }\n }\n\n // Load one tile of B into local memory.\n for (var innerRow = 0; innerRow < ${x}; innerRow = innerRow + 1) {\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n let inputRow = tileRowB + innerRow;\n let inputCol = tileCol + innerCol;\n mm_Bsub[inputRow][inputCol] = mm_readB(batch,\n kStart + inputRow,\n globalCol + innerCol${o?", batchIndices":""});\n }\n }\n kStart = kStart + tileInner;\n workgroupBarrier();\n\n // Compute acc values for a single thread.\n var BCached : array<${r}, colPerThread>;\n for (var k = 0; k < tileInner; k = k + 1) {\n for (var inner = 0; inner < colPerThread; inner = inner + 1) {\n BCached[inner] = mm_Bsub[k][tileCol + inner];\n }\n\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n ${Zd(i)}\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n acc[innerRow][innerCol] = acc[innerRow][innerCol] + ACached * BCached[innerCol];\n }\n }\n }\n\n workgroupBarrier();\n}\n\nfor (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n mm_write(batch, globalRow + innerRow, globalCol + innerCol,\n acc[innerRow][innerCol]);\n }\n}\n`;return`\n var mm_Asub : array, ${w}>;\n var mm_Bsub : array, ${u}>;\n const rowPerThread = ${e[1]};\n const colPerThread = ${e[0]};\n const tileInner = ${u};\n\n@compute @workgroup_size(${t[0]}, ${t[1]}, ${t[2]})\nfn main(@builtin(local_invocation_id) localId : vec3,\n @builtin(global_invocation_id) globalId : vec3,\n @builtin(workgroup_id) workgroupId : vec3) {\n let batch = ${a?"0":"i32(globalId.z)"};\n ${o?`let batchIndices = ${o.offsetToIndices("u32(batch)")};`:""}\n let num_tiles = ${a?`${Math.ceil(p/u)}`:"(uniforms.dim_inner - 1) / tileInner + 1"};\n var kStart = ${a?`i32(globalId.z) * ${p}`:"0"};\n\n var acc : array, rowPerThread>;\n\n // Without this initialization strange values show up in acc.\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n acc[innerRow][innerCol] = 0.0;\n }\n }\n ${T}\n }\n`},Xd=(e,t,r,o,i,u=!1)=>{let[a,p,m]=i,[h,d,y,w]=o,_=cr(a,m),v=cr(p,m),x=Ne(o[0].type.tensor),T=()=>{let E=d.rank,O=h.rank,U=`var aIndices: ${d.type.indices};`;for(let M=E-2-1,N=O-1;M>=0;M--,N--)U+=`\naIndices[${M}] = ${O>1?`batchIndices[${N}]`:"batchIndices"};`;return _.forEach(M=>{U+=`\naIndices[${M}] = 0;`}),U+=`\naIndices[${E-2}] = u32(row);\n aIndices[${E-1}] = u32(colIn);`,U},C=()=>{let E=y.rank,O=h.rank,U=`var bIndices: ${y.type.indices};`;for(let M=E-2-1,N=O-1;M>=0;M--,N--)U+=`\nbIndices[${M}] = ${O>1?`batchIndices[${N}]`:"batchIndices"};`;return v.forEach(M=>{U+=`\nbIndices[${M}] = 0;`}),U+=`\nbIndices[${E-2}] = u32(row);\n bIndices[${E-1}] = u32(colIn);`,U};return`\n fn mm_readA(batch: i32, row: i32, colIn: i32, batchIndices: ${h.type.indices}) -> ${je(e,x)} {\n var value = ${je(e,x)}(0.0);\n let col = colIn * ${e};\n if(row < uniforms.dim_a_outer && col < uniforms.dim_inner)\n {\n ${T()}\n value = ${d.getByIndices("aIndices")};\n }\n return value;\n }\n\n fn mm_readB(batch: i32, row: i32, colIn: i32, batchIndices: ${h.type.indices}) -> ${je(e,x)} {\n var value = ${je(e,x)}(0.0);\n let col = colIn * ${e};\n if(row < uniforms.dim_inner && col < uniforms.dim_b_outer)\n {\n ${C()}\n value = ${y.getByIndices("bIndices")};\n }\n return value;\n }\n\n fn mm_write(batch: i32, row: i32, colIn: i32, valueIn: ${je(e,x)}) {\n let col = colIn * ${e};\n if (row < uniforms.dim_a_outer && col < uniforms.dim_b_outer) {\n var value = valueIn;\n let coords = vec3(batch, row, colIn);\n ${t?`value = value + ${u?"bias[colIn]":`${je(e,x)}(bias[row])`};`:""}\n ${r}\n ${w.setByIndices("vec3(coords)","value")}\n }\n }\n `},Mn=(e,t,r,o,i=!1)=>{let u=e[0].dims,a=e[1].dims,p=u.slice(0,-2),m=a.slice(0,-2),h=o?o.slice(0,-2):r.slice(0,-2),d=W.size(h),y=u[u.length-2],w=u[u.length-1],_=a[a.length-1],v=w%4===0&&_%4===0,x=y<=8?[4,1,1]:[4,4,1],T=[8,8,1],C=[Math.ceil(_/T[0]/x[0]),Math.ceil(y/T[1]/x[1]),Math.ceil(d/T[2]/x[2])],S=v?4:1,E=[...p,y,w/S],O=E.length,U=[...m,w,_/S],M=U.length,N=[d,y,_/S],Y=[{type:"int32",data:y},{type:"int32",data:_},{type:"int32",data:w}];t.activation==="Clip"&&Y.push({type:"float32",data:t.clipMax},{type:"float32",data:t.clipMin}),Y.push(...G(h),...G(E),...G(U));let se=["rank","rank"],B=e.length>2;B&&(Y.push(...G(e[2].dims)),se.push("rank")),Y.push(...G(N));let te=Pe=>{let Ee=h.length,ee=An("batchDims",e[0].dataType,Ee,1),be=Ne(e[0].dataType),Me=V("a",e[0].dataType,O,S),pe=V("b",e[1].dataType,M,S),ye=J("result",e[0].dataType,N.length,S),de=[Me,pe];if(B){let Ge=i?S:1;de.push(V("bias",e[2].dataType,e[2].dims.length,Ge))}let we=[{name:"dim_a_outer",type:"i32"},{name:"dim_b_outer",type:"i32"},{name:"dim_inner",type:"i32"}];t.activation==="Clip"&&we.push({name:"clip_max",type:"f32"},{name:"clip_min",type:"f32"});let ze=At(t,ye.type.value),Re=Xd(S,B,ze,[ee,Me,pe,ye],[p,m,h],i);return`\n ${Pe.registerUniforms(we).registerInternalVariables(ee).declareVariables(...de,ye)}\n ${Re}\n ${v?Ur(x,T,be,ee):Vr(x,T,be,ee)}\n `};return{name:"MatMul",shaderCache:{hint:`${x};${t.activation};${v};${i}`,inputDependencies:se},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:C[0],y:C[1],z:C[2]},programUniforms:Y}),getShaderSource:te}}});var Jd,zs,Us=Q(()=>{"use strict";zt();_e();Ut();Bn();Ao();Wr();Jd=(e,t,r,o,i=!1,u,a=4,p=4,m=4,h="f32")=>{let d=B=>{switch(B){case 1:return"resData = x[xIndex];";case 3:return`resData = vec3<${h}>(x[xIndex], x[xIndex + 1], x[xIndex + 2]);`;case 4:return"resData = x[xIndex / 4];";default:throw new Error(`innerElementSize ${B} is not supported.`)}},y=B=>{switch(B){case 1:return"return w[row * i32(uniforms.w_shape[3]) + colIn];";case 4:return"return w[row * i32(uniforms.w_shape[3]) / 4 + colIn];";default:throw new Error(`innerElementSize ${B} is not supported.`)}},w=e?`\n let coord = vec4(batch, xRow, xCol, xCh);\n `:`\n let coord = vec4(batch, xCh, xRow, xCol);\n `,_=e?`\n let coords = vec4(\n batch,\n row / outWidth,\n row % outWidth,\n col);\n `:`\n let coords = vec4(\n batch,\n row,\n col / outWidth,\n col % outWidth);\n `,v=e?"i32(uniforms.x_shape[1])":"i32(uniforms.x_shape[2])",x=e?"i32(uniforms.x_shape[2])":"i32(uniforms.x_shape[3])",T=e?"row":"col",C=e?"col":"row",S=`\n let inChannels = i32(uniforms.w_shape[2]);\n let outWidth = ${e?"i32(uniforms.result_shape[2])":"i32(uniforms.result_shape[3])"};\n let outRow = ${T} / outWidth;\n let outCol = ${T} % outWidth;\n\n let WRow = ${C} / (i32(uniforms.w_shape[1]) * inChannels);\n let WCol = ${C} / inChannels % i32(uniforms.w_shape[1]);\n let xRow = outRow * uniforms.stride[0] + uniforms.dilation[0] * WRow - uniforms.pad[0];\n let xCol = outCol * uniforms.stride[1] + uniforms.dilation[1] * WCol - uniforms.pad[1];\n let xCh = ${C} % inChannels;\n var resData = ${je(a,h)}(0.0);\n // The bounds checking is always needed since we use it to pad zero for\n // the \'same\' padding type.\n if (xRow >= 0 && xRow < ${v} && xCol >= 0 && xCol < ${x}) {\n ${w}\n let xIndex = getIndexFromCoords4D(coord, vec4(uniforms.x_shape));\n ${d(a)}\n }\n return resData;`,E=e?t&&o?`\n let col = colIn * ${a};\n ${S}`:`\n let col = colIn * ${a};\n if (row < uniforms.dim_a_outer && col < uniforms.dim_inner) {\n ${S}\n }\n return ${je(a,h)}(0.0);`:o&&r?`\n let col = colIn * ${a};\n ${S}`:`\n let col = colIn * ${a};\n if (row < uniforms.dim_inner && col < uniforms.dim_b_outer) {\n ${S}\n }\n return ${je(a,h)}(0.0);`,O=`${y(p)}`,U=je(m,h),M=e?je(a,h):je(p,h),N=e?je(p,h):je(a,h),Y=At(u,U);return`\n fn mm_readA(batch: i32, row : i32, colIn : i32) -> ${M} {\n ${e?E:O}\n }\n\n fn mm_readB(batch: i32, row : i32, colIn : i32) -> ${N} {\n ${e?O:E}\n }\n\n fn mm_write(batch: i32, row : i32, colIn : i32, valueIn : ${U}) {\n let col = colIn * ${m};\n if (row < uniforms.dim_a_outer && col < uniforms.dim_b_outer)\n {\n var value = valueIn;\n let outWidth = ${e?"i32(uniforms.result_shape[2])":"i32(uniforms.result_shape[3])"};\n ${_}\n ${Rn(i)}\n ${Y}\n setOutputAtCoords(coords[0], coords[1], coords[2], coords[3], value);\n }\n }`},zs=(e,t,r,o,i,u,a,p)=>{let m=t.format==="NHWC",h=m?e[0].dims[3]:e[0].dims[1],d=r[0],y=m?r[2]:r[3],w=m?r[1]:r[2],_=m?r[3]:r[1],v=m&&(h%4===0||h%3===0)&&_%4===0,x=m?_:y*w,T=m?y*w:_,C=[8,8,1],S=o<=8?[4,1,1]:[4,4,1],E=[Math.ceil(x/C[0]/S[0]),Math.ceil(T/C[1]/S[1]),Math.ceil(d/C[2]/S[2])];De("verbose",()=>`[conv2d_mm_webgpu] dispatch = ${E}`);let O=v?m&&h%4!==0?3:4:1,U=C[1]*S[1],M=C[0]*S[0],N=Math.max(C[0]*O,C[1]),Y=o%U===0,se=i%M===0,B=u%N===0,te=v?[O,4,4]:[1,1,1],Pe=[{type:"int32",data:o},{type:"int32",data:i},{type:"int32",data:u},{type:"int32",data:[t.pads[0],t.pads[1]]},{type:"int32",data:t.strides},{type:"int32",data:t.dilations}];t.activation==="Clip"&&Pe.push({type:"float32",data:t.clipMax},{type:"float32",data:t.clipMin}),Pe.push(...G(e[0].dims),...G(e[1].dims));let Ee=["rank","rank"];a&&(Pe.push(...G(e[2].dims)),Ee.push("rank")),Pe.push(...G(r));let ee=be=>{let Me=[{name:"dim_a_outer",type:"i32"},{name:"dim_b_outer",type:"i32"},{name:"dim_inner",type:"i32"},{name:"pad",type:"i32",length:2},{name:"stride",type:"i32",length:2},{name:"dilation",type:"i32",length:2}];t.activation==="Clip"&&Me.push({name:"clip_max",type:"f32"},{name:"clip_min",type:"f32"});let pe=v?4:1,ye=Ne(e[0].dataType),de=`\n fn setOutputAtIndex(flatIndex : i32, value : ${v?`vec4<${ye}>`:ye}) {\n result[flatIndex] = ${v?`vec4<${ye}>`:ye}(value);\n }\n fn setOutputAtCoords(d0 : i32, d1 : i32, d2 : i32, d3 : i32, value : ${v?`vec4<${ye}>`:ye}) {\n let flatIndex = getOutputIndexFromCoords(vec4(d0, d1, d2, d3));\n setOutputAtIndex(flatIndex ${v?"/ 4":""}, value);\n }`,we=V("x",e[0].dataType,e[0].dims.length,O===3?1:O),ze=V("w",e[1].dataType,e[1].dims.length,pe),Re=[we,ze],Ge=J("result",e[0].dataType,r.length,pe);if(a){let F=V("bias",e[2].dataType,e[2].dims.length,pe);Re.push(F),de+=`\n fn getBiasByOutputCoords(coords : vec4) -> ${v?`vec4<${ye}>`:ye} {\n return bias[coords.${m?"w":"y"}${v?"/ 4":""}];\n }`}return`\n ${Dn("uniforms.result_strides")}\n //struct Uniforms { xShape : vec4, wShape : vec4, outShape : vec4,\n // outShapeStrides: vec3, filterDims : vec2, pad : vec2, stride : vec2,\n // dilation : vec2, dimAOuter : i32, dimBOuter : i32, dimInner : i32 };\n ${be.registerUniforms(Me).declareVariables(...Re,Ge)}\n ${de}\n ${Jd(m,Y,se,B,a,t,te[0],te[1],te[2],ye)}\n ${v?Ur(S,C,ye,void 0,!m,N):Vr(S,C,ye,void 0,!m,N,!1,void 0,p)}`};return{name:"Conv2DMatMul",shaderCache:{hint:`${t.cacheKey};${O};${v};${Y};${se};${B};${U};${M};${N}`,inputDependencies:Ee},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:E[0],y:E[1],z:E[2]},programUniforms:Pe}),getShaderSource:ee}}});var Io,Vs=Q(()=>{"use strict";Ce();_e();Eo();Ut();Io=(e,t,r)=>{let o=e.length>2,i=o?"value += b[output_channel];":"",u=e[0].dims,a=e[1].dims,p=a[0]/t.group,m=t.format==="NHWC",h=To(u,a,t.dilations,t.pads,t.strides,m),d=W.size(h),y=[{type:"uint32",data:d},{type:"uint32",data:t.dilations},{type:"uint32",data:[t.strides[0],t.strides[1]]},{type:"uint32",data:[t.pads[0],t.pads[1]]},{type:"uint32",data:p}];t.activation==="Clip"&&y.push({type:"float32",data:t.clipMax},{type:"float32",data:t.clipMin}),y.push(...G(u),...G(a),...G(h));let w=["rank","rank"];o&&(y.push(...G(e[2].dims)),w.push("rank")),y.push(...G(h));let _=v=>{let x=J("output",e[0].dataType,h.length),T=At(t,x.type.value),C=V("x",e[0].dataType,u.length),S=V("w",e[1].dataType,a.length),E=[C,S];o&&E.push(V("b",e[2].dataType,e[2].dims));let O=[{name:"output_size",type:"u32"},{name:"dilations",type:"u32",length:t.dilations.length},{name:"strides",type:"u32",length:2},{name:"pads",type:"u32",length:2},{name:"output_channels_per_group",type:"u32"}];return t.activation==="Clip"&&O.push({name:"clip_max",type:"f32"},{name:"clip_min",type:"f32"}),`\n ${v.registerUniforms(O).declareVariables(...E,x)}\n\n ${v.mainStart()}\n ${v.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}\n\n let outputIndices = ${x.offsetToIndices("global_idx")};\n let batch: u32 = outputIndices[0];\n let output_channel: u32 = outputIndices[${m?3:1}];\n let xRCCorner: vec2 = vec2(outputIndices[${m?1:2}], outputIndices[${m?2:3}]) * uniforms.strides - uniforms.pads;\n let group_id: u32 = output_channel / uniforms.output_channels_per_group;\n\n var value: ${x.type.value} = ${x.type.value}(0);\n for (var wInChannel: u32 = 0u; wInChannel < uniforms.w_shape[1]; wInChannel++) {\n let input_channel = group_id * uniforms.w_shape[1] + wInChannel;\n for (var wHeight: u32 = 0u; wHeight < uniforms.w_shape[2]; wHeight++) {\n let xHeight = xRCCorner.x + wHeight * uniforms.dilations[0];\n\n if (xHeight < 0u || xHeight >= uniforms.x_shape[${m?1:2}]) {\n continue;\n }\n\n for (var wWidth: u32 = 0u; wWidth < uniforms.w_shape[3]; wWidth++) {\n let xWidth = xRCCorner.y + wWidth * uniforms.dilations[1];\n if (xWidth < 0u || xWidth >= uniforms.x_shape[${m?2:3}]) {\n continue;\n }\n\n let xVal = ${m?C.get("batch","xHeight","xWidth","input_channel"):C.get("batch","input_channel","xHeight","xWidth")};\n let wVal = ${S.get("output_channel","wInChannel","wHeight","wWidth")};\n value += xVal*wVal;\n }\n }\n }\n ${i}\n ${T}\n ${x.setByOffset("global_idx","value")}\n }`};return{name:"GroupedConv",shaderCache:{hint:t.cacheKey,inputDependencies:w},getRunData:()=>({outputs:[{dims:r?r(h):h,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(d/64)},programUniforms:y}),getShaderSource:_}}});var Po,Qd,Ws,Oo=Q(()=>{"use strict";Ce();Wr();_e();Ut();Po=(e,t,r,o,i=!1)=>{let u=e[0].dims,a=e[1].dims,p=u[u.length-2],m=a[a.length-1],h=u[u.length-1],d=He(m),y=He(h),w=He(p),_=W.size(r)/d/w,v=e.length>2,x=o?o.slice(0,-2):r.slice(0,-2),C=[W.size(x),p,m],S=[{type:"uint32",data:_},{type:"uint32",data:p},{type:"uint32",data:m},{type:"uint32",data:h}];t.activation==="Clip"&&S.push({type:"float32",data:t.clipMax},{type:"float32",data:t.clipMin}),S.push(...G(x),...G(u),...G(a)),v&&S.push(...G(e[2].dims)),S.push(...G(C));let E=O=>{let U=An("batch_dims",e[0].dataType,x.length),M=V("a",e[0].dataType,u.length,y),N=V("b",e[1].dataType,a.length,d),Y=J("output",e[0].dataType,C.length,d),se=At(t,Y.type.value),B=[M,N],te="";if(v){let de=i?d:1;B.push(V("bias",e[2].dataType,e[2].dims.length,de)),te=`${i?`value += bias[col / ${de}];`:`value += ${Y.type.value}(bias[row + i]);`}`}let Pe=u.slice(0,-2),Ee=a.slice(0,-2),ee=cr(Pe,x),be=cr(Ee,x),Me=[{name:"output_size",type:"u32"},{name:"M",type:"u32"},{name:"N",type:"u32"},{name:"K",type:"u32"}];t.activation==="Clip"&&Me.push({name:"clip_max",type:"f32"},{name:"clip_min",type:"f32"});let pe=(de,we)=>{let ze=de.rank,Re=de.name;if(ze===2)return`var ${Re}_indices = ${de.type.indices}(0u, 0u);`;let Ge=U.rank,F=`var ${Re}_indices: ${de.type.indices};`;for(let ie=ze-2-1,he=Ge-1;ie>=0;ie--,he--)F+=`\n${Re}_indices[${ie}] = ${Ge>1?`batch_indices[${he}]`:"batch_indices"};`;return we.forEach(ie=>{F+=`\n${Re}_indices[${ie}] = 0;`}),F+=`${Re}_indices[${ze-2}] = 0u;\n ${Re}_indices[${ze-1}] = 0u;`,F},ye=()=>{let de=`var a_data: ${M.type.value};`;for(let we=0;we;\n for (var k: u32 = 0u; k < uniforms.K; k = k + ${y}) {\n ${ye()}\n }\n for (var i = 0u; i < ${w}u; i++) {\n var value = values[i];\n ${te}\n ${se}\n let cur_indices = ${Y.type.indices}(batch, row + i, col);\n let offset = ${Y.indicesToOffset("cur_indices")};\n ${Y.setByOffset(`offset / ${d}`,"value")};\n }\n }\n `};return{name:"MatMulNaive",shaderCache:{hint:`${t.activation};${d};${y};${w};${i}`,inputDependencies:v?["rank","rank","rank"]:["rank","rank"]},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(_/64)},programUniforms:S}),getShaderSource:E}},Qd=e=>{if(!e||e.length!==2)throw new Error("MatMul requires 2 inputs.");if(e[0].dims[e[0].dims.length-1]!==e[1].dims[e[1].dims.length-2])throw new Error("shared dimension does not match.")},Ws=e=>{Qd(e.inputs);let t=vt.calcShape(e.inputs[0].dims,e.inputs[1].dims,!0);if(!t)throw new Error("Can\'t use matmul on the given tensors");let r=t[t.length-1],o=e.inputs[0].dims[e.inputs[0].dims.length-1];r<8&&o<8?e.compute(Po(e.inputs,{activation:""},t)):e.compute(Mn(e.inputs,{activation:""},t))}});var To,Ns,ec,Hs,ko,tc,rc,Ro,Eo=Q(()=>{"use strict";Ce();Us();Wr();Vs();Ut();Oo();pr();To=(e,t,r,o,i,u)=>{let a=e[0],p=e.slice(u?1:2,u?3:4),m=p.length,h=t[0],y=t.slice(2).map((v,x)=>v+(v-1)*(r[x]-1)),_=p.map((v,x)=>v+o[x]+o[x+m]).map((v,x)=>Math.floor((v-y[x]+i[x])/i[x]));return _.splice(0,0,a),_.splice(u?3:1,0,h),_},Ns=[2,3,1,0],ec=(e,t)=>{if(!e||e.length!==2&&e.length!==3)throw new Error("Conv requires 2 or 3 inputs");if(e[0].dims.length!==4&&e[0].dims.length!==3)throw new Error("currently only support conv 1D and 2D");if(e[0].dims.length!==e[1].dims.length)throw new Error("filter does not have same dimension as input");let r=e[0].dims[t.format==="NHWC"?e[0].dims.length-1:1],o=e[1].dims[1]*t.group;if(r!==o)throw new Error("FILTER_IN_CHANNEL should be equal to DATA_CHANNEL");if(e.length===3&&(e[2].dims.length!==1||e[1].dims[0]!==e[2].dims[0]))throw new Error("invalid bias");let i=e[0].dims.length-2;if(t.dilations.length!==i)throw new Error(`dilations should be ${i}D`);if(t.strides.length!==i)throw new Error(`strides should be ${i}D`);if(t.pads.length!==i*2)throw new Error(`pads should be ${i*2}D`);if(t.kernelShape.length!==0&&t.kernelShape.length!==e[1].dims.length-2)throw new Error("invalid kernel shape")},Hs=(e,t)=>{let r=e.kernelShape.slice();for(let u=2;u{let t=kn(e),r=e.format,o=["NOTSET","VALID","SAME_UPPER","SAME_LOWER"][e.auto_pad],i=e.dilations,u=e.group,a=e.kernel_shape,p=e.pads,m=e.strides,h=e.w_is_const();return{autoPad:o,format:r,dilations:i,group:u,kernelShape:a,pads:p,strides:m,wIsConst:h,...t,cacheKey:`${e.format};${t.activation};`}},tc=(e,t,r)=>{let o=Hs(r,t),i=r.format==="NHWC";if(r.group!==1){e.compute(Io(t,o));return}let u=t.length===3,a=t[0].dims[i?1:2],p=t[0].dims[i?2:3],m=t[0].dims[i?3:1],h=t[1].dims[2],d=t[1].dims[3],y=To(t[0].dims,t[1].dims,r.dilations,o.pads,r.strides,i),w=y[i?1:2],_=y[i?2:3],v=y[i?3:1],x=i&&h===a&&d===p&&r.pads[0]===0&&r.pads[1]===0;if(x||h===1&&d===1&&r.dilations[0]===1&&r.dilations[1]===1&&r.strides[0]===1&&r.strides[1]===1&&r.pads[0]===0&&r.pads[1]===0){let M=y[0],N,Y,se,B=[];if(i){let Ee=e.kernelCustomData.wT??e.compute(yt(t[1],Ns),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];if(r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=Ee),x){let ee=a*p*m;N=t[0].reshape([1,M,ee]),Y=Ee.reshape([1,ee,v]),se=[1,M,v]}else N=t[0].reshape([M,a*p,m]),Y=Ee.reshape([1,m,v]),se=[M,w*_,v];B.push(N),B.push(Y)}else N=t[0].reshape([M,m,a*p]),Y=t[1].reshape([1,v,m]),se=[M,v,w*_],B.push(Y),B.push(N);u&&B.push(t[2]);let te=se[2],Pe=B[0].dims[B[0].dims.length-1];te<8&&Pe<8?e.compute(Po(B,o,y,se,i),{inputs:B}):e.compute(Mn(B,o,y,se,i),{inputs:B});return}let T=!0,C=e.kernelCustomData.wT??e.compute(yt(t[1],Ns),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=C);let S=[t[0],C];u&&S.push(t[2]);let E=i?w*_:v,O=i?v:w*_,U=h*d*m;e.compute(zs(S,o,y,E,O,U,u,T),{inputs:S})},rc=(e,t)=>{let r=t.format==="NHWC",o=[e.inputs[0].reshape(r?[e.inputs[0].dims[0],1,e.inputs[0].dims[1],e.inputs[0].dims[2]]:[e.inputs[0].dims[0],e.inputs[0].dims[1],1,e.inputs[0].dims[2]]),e.inputs[1].reshape([e.inputs[1].dims[0],e.inputs[1].dims[1],1,e.inputs[1].dims[2]])];e.inputs.length===3&&o.push(e.inputs[2]);let i=[0,t.pads[0],0,t.pads[1]],u=[1].concat(t.strides),a=[1].concat(t.dilations),p=[1].concat(t.kernelShape),m=Hs({...t,pads:i,strides:u,dilations:a,kernelShape:p},o);e.compute(Io(o,m,h=>r?[h[0],h[2],h[3]]:[]))},Ro=(e,t)=>{ec(e.inputs,t),e.inputs[0].dims.length===3?rc(e,t):tc(e,e.inputs,t)}});var nc,Gs,Ls=Q(()=>{"use strict";zt();_e();Ut();Bn();Ao();Wr();nc=(e,t=!1,r,o=4)=>{let i=je(o,"f32"),u=C=>{switch(C){case 1:return"return w[getIndexFromCoords4D(coord, vec4(uniforms.w_shape))];";case 4:return`\n let coord1 = vec4(coordX, coordY, col + 1, rowInner);\n let coord2 = vec4(coordX, coordY, col + 2, rowInner);\n let coord3 = vec4(coordX, coordY, col + 3, rowInner);\n let v0 = w[getIndexFromCoords4D(coord, vec4(uniforms.w_shape))];\n let v1 = w[getIndexFromCoords4D(coord1, vec4(uniforms.w_shape))];\n let v2 = w[getIndexFromCoords4D(coord2, vec4(uniforms.w_shape))];\n let v3 = w[getIndexFromCoords4D(coord3, vec4(uniforms.w_shape))];\n return vec4(v0, v1, v2, v3);\n `;default:throw new Error(`innerElementSize ${C} is not supported.`)}},a=e?`\n let coord = vec4(batch, iXR, iXC, xCh);\n `:`\n let coord = vec4(batch, xCh, iXR, iXC);\n `,p=e?`\n let coords = vec4(\n batch,\n row / outWidth,\n row % outWidth,\n col);\n `:`\n let coords = vec4(\n batch,\n row,\n col / outWidth,\n col % outWidth);\n `,m=e?"i32(uniforms.x_shape[1])":"i32(uniforms.x_shape[2])",h=e?"i32(uniforms.x_shape[2])":"i32(uniforms.x_shape[3])",d=e?"row":"col",y=e?"col":"row",w=`\n let inChannels = ${e?"i32(uniforms.x_shape[3])":"i32(uniforms.x_shape[1])"};\n let outWidth = ${e?"i32(uniforms.result_shape[2])":"i32(uniforms.result_shape[3])"};\n let outRow = ${d} / outWidth;\n let outCol = ${d} % outWidth;\n\n let WRow = ${y} / (uniforms.filter_dims[1] * inChannels);\n let WCol = ${y} / inChannels % uniforms.filter_dims[1];\n let xR = f32(outRow - uniforms.pads[0] + uniforms.dilations[0] * WRow) / f32(uniforms.strides[0]);\n let xC = f32(outCol - uniforms.pads[1] + uniforms.dilations[1] * WCol) / f32(uniforms.strides[1]);\n if (xR < 0.0 || xR >= f32(${m}) || fract(xR) > 0.0) {\n return ${i}(0.0);\n }\n if (xC < 0.0 || xC >= f32(${h}) || fract(xC) > 0.0) {\n return ${i}(0.0);\n }\n let iXR = i32(xR);\n let iXC = i32(xC);\n let xCh = ${y} % inChannels;\n ${a}\n return x[getIndexFromCoords4D(coord, vec4(uniforms.x_shape))/${o}];`,_=e?`\n let col = colIn * ${o};\n if (row < uniforms.dim_a_outer && col < uniforms.dim_inner) {\n ${w}\n }\n return ${i}(0.0);`:`\n let col = colIn * ${o};\n if (row < uniforms.dim_inner && col < uniforms.dim_b_outer) {\n ${w}\n }\n return ${i}(0.0);`,v=`\n let col = colIn * ${o};\n let inChannels = ${e?"i32(uniforms.x_shape[3])":"i32(uniforms.x_shape[1])"};\n let coordX = uniforms.filter_dims[0] - 1 - row / (uniforms.filter_dims[1] * inChannels);\n let coordY = uniforms.filter_dims[1] - 1 - (row / inChannels) % uniforms.filter_dims[1];\n if (${e?"row < uniforms.dim_inner && col < uniforms.dim_b_outer":"row < uniforms.dim_inner && col < uniforms.dim_a_outer"} && coordX >= 0 && coordY >= 0) {\n let rowInner = row % inChannels;\n let coord = vec4(coordX, coordY, col, rowInner);\n ${u(o)}\n }\n return ${i}(0.0);\n `,x=At(r,i);return`\n fn mm_readA(batch: i32, row : i32, colIn : i32) -> ${i} {\n ${e?_:v}\n }\n\n fn mm_readB(batch: i32, row : i32, colIn : i32) -> ${i} {\n ${e?v:_}\n }\n\n fn mm_write(batch: i32, row : i32, colIn : i32, valueInput : ${i}) {\n let col = colIn * ${o};\n if (row < uniforms.dim_a_outer && col < uniforms.dim_b_outer) {\n var value = valueInput;\n let outWidth = ${e?"i32(uniforms.result_shape[2])":"i32(uniforms.result_shape[3])"};\n ${p}\n ${Rn(t)}\n ${x}\n result[getIndexFromCoords4D(coords, vec4(uniforms.result_shape))/${o}] = value;\n }\n }`},Gs=(e,t,r,o,i,u,a,p)=>{let m=t.format==="NHWC",h=m?e[0].dims[3]:e[0].dims[1],d=r[0],y=m?r[2]:r[3],w=m?r[1]:r[2],_=m?r[3]:r[1],v=m?h%4===0&&_%4===0:y%4===0&&_%4===0,x=m?_:y*w,T=m?y*w:_,C=v?[8,8,1]:[x<=4||T<=4?4:16,x>4&&T<=4?4:16,1],S=v?[4,4,1]:[x<=4?1:4,x>4&&T<=4?1:4,1],E=[Math.ceil(x/C[0]/S[0]),Math.ceil(T/C[1]/S[1]),Math.ceil(d/C[2]/S[2])];De("verbose",()=>`[conv_backprop_mm_webgpu] dispatch = ${E}`);let O=v?4:1,U=Math.max(C[0]*O,C[1]),M=v?4:1,N=[t.kernelShape[m?1:2],t.kernelShape[m?2:3]],Y=[N[0]+(t.dilations[0]<=1?0:(N[0]-1)*(t.dilations[0]-1)),N[1]+(t.dilations[1]<=1?0:(N[1]-1)*(t.dilations[1]-1))],se=[Y[0]-1-Math.floor((t.pads[0]+t.pads[2])/2),Y[1]-1-Math.floor((t.pads[1]+t.pads[3])/2)],B=[{type:"int32",data:o},{type:"int32",data:i},{type:"int32",data:u},{type:"int32",data:t.strides},{type:"int32",data:t.dilations},{type:"int32",data:N},{type:"int32",data:se}];t.activation==="Clip"&&B.push({type:"float32",data:t.clipMax},{type:"float32",data:t.clipMin}),B.push(...G(e[0].dims),...G(e[1].dims));let te=["rank","rank"];a&&(B.push(...G(e[2].dims)),te.push("rank")),B.push(...G(r));let Pe=Ee=>{let ee=V("x",e[0].dataType,e[0].dims.length,M),be=V("w",e[1].dataType,e[1].dims.length,1),Me=J("result",e[0].dataType,r.length,M),pe=[ee,be],ye="";if(a){let we=V("bias",e[2].dataType,e[2].dims.length,M);pe.push(we),ye+=`\n fn getBiasByOutputCoords(coords : vec4) -> ${v?"vec4":"f32"} {\n return bias[coords.${m?"w":"y"}${v?"/ 4":""}];\n }`}let de=[{name:"dim_a_outer",type:"i32"},{name:"dim_b_outer",type:"i32"},{name:"dim_inner",type:"i32"},{name:"strides",type:"i32",length:2},{name:"dilations",type:"i32",length:2},{name:"filter_dims",type:"i32",length:N.length},{name:"pads",type:"i32",length:se.length}];return t.activation==="Clip"&&de.push({name:"clip_max",type:"f32"},{name:"clip_min",type:"f32"}),`\n ${Dn("uniforms.result_strides")}\n ${Ee.registerUniforms(de).declareVariables(...pe,Me)};\n ${ye}\n ${nc(m,a,t,O)}\n ${v?Ur(S,C,"f32",void 0,!m,U):Vr(S,C,"f32",void 0,!m,U,!1,void 0,p)}`};return{name:"Conv2DTransposeMatMul",shaderCache:{hint:`${t.cacheKey};${S};${C};${v}`,inputDependencies:te},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:E[0],y:E[1],z:E[2]},programUniforms:B}),getShaderSource:Pe}}});var oc,Bo,Fs=Q(()=>{"use strict";zt();Ce();_e();oc=(e,t,r,o,i,u=!1,a,p,m=!1)=>{let h=m?1:2,d=m?2:3,y=m?3:1,w=u?2:1,_=`\n fn setOutputAtIndex(flatIndex : u32, value : ${u?`vec4<${a}>`:a}) {\n result[flatIndex] = ${u?`vec4<${a}>`:a}(value);\n }`;o&&(_+=`\n fn getBiasByOutputCoords(coords : vec4) -> ${u?`vec4<${a}>`:a} {\n return bias[coords.${m?"w":"y"}${u?"/ 4":""}];\n }`);let v=u?4:1,x=V("W",t[1].dataType,t[1].dims.length,v),T=V("Dy",t[0].dataType,t[0].dims.length,v),C=[T,x];o&&C.push(V("bias",t[2].dataType,[r[y]].length,v));let S=J("result",t[0].dataType,r.length,v),E=`{\n let batch: u32 = ${i?"global_id.z":"workgroup_id.z"} / uniforms.result_shape[1];\n let r = ${i?"global_id.z":"workgroup_id.z"} % uniforms.result_shape[1];\n let c = ${i?"global_id.y":"workgroup_id.y"} * ${w};\n let d1: u32 = ${i?"global_id.x":"workgroup_id.x"} * 4;\n\n let dyCorner = vec2(i32(r), i32(c)) - vec2(uniforms.pads);\n\n // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).\n // ? = to be determined. : = across all values in that axis.\n var dotProd: array, ${w}>;\n for (var i = 0; i < ${w}; i++) {\n dotProd[i] = vec4<${a}>(0.0);\n }\n for (var wR: u32 = 0; wR < uniforms.filter_dims[0]; wR = wR + 1) {\n var dyR = (${a}(dyCorner.x) + ${a}(wR)) / ${a}(uniforms.strides.x);\n let wRPerm = uniforms.filter_dims[0] - 1 - wR;\n if (dyR < 0.0 || dyR >= ${a}(uniforms.Dy_shape[1]) ||\n fract(dyR) > 0.0 || wRPerm < 0) {\n continue;\n }\n let idyR: u32 = u32(dyR);\n\n for (var wC: u32 = 0; wC < uniforms.filter_dims[1]; wC = wC + 1) {\n let dyC = (${a}(dyCorner.y) + ${a}(wC)) / ${a}(uniforms.strides.y);\n let dyC2 = (${a}(dyCorner.y) + 1.0 + ${a}(wC)) / ${a}(uniforms.strides.y);\n let wCPerm = uniforms.filter_dims[1] - 1 - wC;\n if (wCPerm < 0) {\n continue;\n }\n var bDyCVal = true;\n var bDyCVal2 = true;\n if (dyC < 0.0 || dyC >= ${a}(uniforms.Dy_shape[2]) ||\n fract(dyC) > 0.0) {\n bDyCVal = false;\n }\n if (dyC2 < 0.0 || dyC2 >= ${a}(uniforms.Dy_shape[2]) ||\n fract(dyC2) > 0.0) {\n bDyCVal2 = false;\n }\n\n let idyC: u32 = u32(dyC);\n let idyC2: u32 = u32(dyC2);\n if (bDyCVal && bDyCVal2) {\n let d2Length = uniforms.Dy_shape[3];\n for (var d2 :u32 = 0; d2 < d2Length; d2 = d2 + 4) {\n let wValue0 = ${x.get("u32(wRPerm)","u32(wCPerm)","d1","d2")};\n let wValue1 = ${x.get("u32(wRPerm)","u32(wCPerm)","d1 + 1","d2")};\n let wValue2 = ${x.get("u32(wRPerm)","u32(wCPerm)","d1 + 2","d2")};\n let wValue3 = ${x.get("u32(wRPerm)","u32(wCPerm)","d1 + 3","d2")};\n\n var xValue = ${T.get("batch","idyR","idyC","d2")};\n let tmpval = vec4<${a}>(dot(xValue, wValue0),\n dot(xValue, wValue1),\n dot(xValue, wValue2),\n dot(xValue, wValue3));\n dotProd[0] = dotProd[0] + tmpval;\n\n xValue = ${T.get("batch","idyR","idyC2","d2")};\n\n dotProd[1] = dotProd[1] + vec4<${a}>(dot(xValue, wValue0),\n dot(xValue, wValue1),\n dot(xValue, wValue2),\n dot(xValue, wValue3));\n }\n } else if (bDyCVal) {\n let d2Length = uniforms.Dy_shape[${y}];\n for (var d2: u32 = 0; d2 < d2Length; d2 = d2 + 4) {\n let wValue0 = ${x.get("u32(wRPerm)","u32(wCPerm)","d1","d2")};\n let wValue1 = ${x.get("u32(wRPerm)","u32(wCPerm)","d1 + 1","d2")};\n let wValue2 = ${x.get("u32(wRPerm)","u32(wCPerm)","d1 + 2","d2")};\n let wValue3 = ${x.get("u32(wRPerm)","u32(wCPerm)","d1 + 3","d2")};\n\n var xValue = ${T.get("batch","idyR","idyC","d2")};\n let tmpval = vec4<${a}>(dot(xValue, wValue0),\n dot(xValue, wValue1),\n dot(xValue, wValue2),\n dot(xValue, wValue3));\n dotProd[0] = dotProd[0] + tmpval;\n }\n } else if (bDyCVal2) {\n let d2Length = uniforms.Dy_shape[3];\n for (var d2: u32 = 0; d2 < d2Length; d2 = d2 + 4) {\n let wValue0 = ${x.get("u32(wRPerm)","u32(wCPerm)","d1","d2")};\n let wValue1 = ${x.get("u32(wRPerm)","u32(wCPerm)","d1 + 1","d2")};\n let wValue2 = ${x.get("u32(wRPerm)","u32(wCPerm)","d1 + 2","d2")};\n let wValue3 = ${x.get("u32(wRPerm)","u32(wCPerm)","d1 + 3","d2")};\n\n var xValue = ${T.get("batch","idyR","idyC2","d2")};\n let tmpval = vec4<${a}>(dot(xValue, wValue0),\n dot(xValue, wValue1),\n dot(xValue, wValue2),\n dot(xValue, wValue3));\n dotProd[1] = dotProd[1] + tmpval;\n }\n }\n }\n }\n\n for (var i: u32 = 0; i < ${w}; i = i + 1) {\n let value = dotProd[i] + ${o?"bias[c+i]":`vec4<${a}>(0.0)`};\n ${S.set("batch","r","c + i","d1","value")};\n }\n }`,O=`\n let outputIndices = ${S.offsetToIndices("global_idx")};\n let batch = ${S.indicesGet("outputIndices",0)};\n let d1 = ${S.indicesGet("outputIndices",y)};\n let r = ${S.indicesGet("outputIndices",h)};\n let c = ${S.indicesGet("outputIndices",d)};\n let dyCorner = vec2(i32(r), i32(c)) - uniforms.pads;\n let dyRCorner = dyCorner.x;\n let dyCCorner = dyCorner.y;\n let groupId = d1 / uniforms.output_channels_per_group;\n let wOutChannel = d1 - groupId * uniforms.output_channels_per_group;\n // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).\n // ? = to be determined. : = across all values in that axis.\n var dotProd = ${a}(0.0);\n for (var wR: u32 = 0; wR < uniforms.effective_filter_dims.x; wR = wR + 1) {\n if (wR % uniforms.dilations.x != 0) {\n continue;\n }\n let dyR = (${a}(dyRCorner) + ${a}(wR)) / ${a}(uniforms.strides[0]);\n let wRPerm = uniforms.filter_dims.x - 1 - wR / uniforms.dilations.x;\n if (dyR < 0.0 || dyR >= ${a}(uniforms.Dy_shape[${h}]) || fract(dyR) > 0.0 ||\n wRPerm < 0) {\n continue;\n }\n let idyR: u32 = u32(dyR);\n\n for (var wC: u32 = 0; wC < uniforms.effective_filter_dims.y; wC = wC + 1) {\n if (wC % uniforms.dilations.y != 0) {\n continue;\n }\n let dyC = (${a}(dyCCorner) + ${a}(wC)) / ${a}(uniforms.strides.y);\n let wCPerm = uniforms.filter_dims.y - 1 - wC / uniforms.dilations.y;\n if (dyC < 0.0 || dyC >= ${a}(uniforms.Dy_shape[${d}]) ||\n fract(dyC) > 0.0 || wCPerm < 0) {\n continue;\n }\n let idyC: u32 = u32(dyC);\n var inputChannel = groupId * uniforms.input_channels_per_group;\n for (var d2: u32 = 0; d2 < uniforms.input_channels_per_group; d2 = d2 + 1) {\n let xValue = ${m?T.get("batch","idyR","idyC","inputChannel"):T.get("batch","inputChannel","idyR","idyC")};\n let wValue = ${x.get("inputChannel","wOutChannel","u32(wRPerm)","u32(wCPerm)")};\n dotProd = dotProd + xValue * wValue;\n inputChannel = inputChannel + 1;\n }\n }\n }\n let value = dotProd + ${o?"bias[d1]":`${a}(0.0)`};\n ${S.setByOffset("global_idx","value")};\n `;return`\n ${e.registerUniforms(p).declareVariables(...C,S)}\n ${_}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")};\n ${u?E:O}}`},Bo=(e,t,r)=>{let o=e.length>2,i=t.outputShape,u=W.size(i),a=[Math.ceil(u/64),1,1];De("verbose",()=>`[conv2d_backprop_webgpu] dispatch = ${a}`);let p=t.format==="NHWC",m=["rank","rank"],h=[t.strides[0],t.strides[1]],d=[t.kernelShape[p?1:2],t.kernelShape[p?2:3]],y=[t.dilations[0],t.dilations[1]],w=[d[0]+(t.dilations[0]<=1?0:(t.kernelShape[p?1:2]-1)*(t.dilations[0]-1)),d[1]+(t.dilations[1]<=1?0:(t.kernelShape[p?2:3]-1)*(t.dilations[1]-1))],_=[w[0]-1-Math.floor((t.pads[0]+t.pads[2])/2),w[1]-1-Math.floor(t.pads[1]+t.pads[3])/2],v=!1,x=t.group,T=e[1].dims,C=T[0]/x,S=T[1],E=[{type:"int32",data:u},{type:"uint32",data:h},{type:"uint32",data:d},{type:"uint32",data:y},{type:"uint32",data:w},{type:"int32",data:_},{type:"uint32",data:C},{type:"uint32",data:S},...G(e[0].dims),...G(e[1].dims)];o&&(E.push(...G(e[2].dims)),m.push("rank")),E.push(...G(i));let O=a[1]===1&&a[2]===1,U=M=>{let N=[{name:"output_size",type:"u32"},{name:"strides",type:"u32",length:h.length},{name:"filter_dims",type:"u32",length:d.length},{name:"dilations",type:"u32",length:d.length},{name:"effective_filter_dims",type:"u32",length:w.length},{name:"pads",type:"i32",length:_.length},{name:"input_channels_per_group",type:"u32"},{name:"output_channels_per_group",type:"u32"}],Y=Ne(e[0].dataType);return`${oc(M,e,i,o,O,v,Y,N,p)}`};return{name:"ConvTranspose2D",shaderCache:{hint:`${t.cacheKey};`,inputDependencies:m},getRunData:()=>({dispatchGroup:{x:a[0],y:a[1],z:a[2]},outputs:[{dims:r?r(i):i,dataType:e[0].dataType}],programUniforms:E}),getShaderSource:U}}});var ic,ac,sc,js,qs,uc,lc,dc,cc,Ks,Ys=Q(()=>{"use strict";Ls();Fs();Ut();pr();ic=(e,t,r,o,i,u)=>(e-1)*t+r+(o-1)*i+1-u,ac=(e,t,r,o,i)=>{let u=Math.floor(e/2);t==="SAME_UPPER"?(r[o]=u,r[i]=e-u):t==="SAME_LOWER"&&(r[o]=e-u,r[i]=u)},sc=(e,t,r,o,i,u,a,p,m,h)=>{let d=e.length-2,y=h.length===0;if(m.length===0)for(let v=0;v{let r=e.kernelShape.slice();if(e.kernelShape.length===0||e.kernelShape.reduce((y,w)=>y*w,1)===0){r.length=0;for(let y=2;yy+w,0)===0){let y=t[0].dims.length-2;m=new Array(y).fill(1)}let h=e.strides.slice();if(h.reduce((y,w)=>y+w,0)===0){let y=t[0].dims.length-2;h=new Array(y).fill(1)}sc(p,r,m,e.autoPad,e.group,i,h,o,a,u);let d=Object.assign({},e);return Object.assign(d,{kernelShape:r,pads:i,outputPadding:a,outputShape:u,dilations:m,strides:h}),d},qs=e=>{let t=kn(e),r=e.format,o=["NOTSET","VALID","SAME_UPPER","SAME_LOWER"][typeof e.autoPad>"u"?0:e.autoPad],i=e.dilations,u=e.group,a=e.kernelShape,p=e.pads,m=e.strides,h=e.wIsConst(),d=e.outputPadding,y=e.outputShape;return{autoPad:o,format:r,dilations:i,group:u,kernelShape:a,outputPadding:d,outputShape:y,pads:p,strides:m,wIsConst:h,...t,cacheKey:`${e.format};${t.activation};`}},uc=(e,t)=>{if(!e||e.length!==2&&e.length!==3)throw new Error("Conv requires 2 or 3 inputs");if(e[0].dims.length!==4&&e[0].dims.length!==3)throw new Error("currently only support 2-dimensional conv");if(e[0].dims.length!==e[1].dims.length)throw new Error("filter does not have same dimension as input");let r=e[0].dims[t.format==="NHWC"?e[0].dims.length-1:1],o=e[1].dims[0];if(r!==o)throw new Error("FILTER_IN_CHANNEL should be equal to DATA_CHANNEL");let i=e[1].dims[1]*t.group;if(e.length===3&&(e[2].dims.length!==1||e[2].dims[0]!==i))throw new Error("invalid bias");let u=e[0].dims.length-2;if(t.dilations.reduce((d,y)=>d+y,0)>0&&t.dilations.length!==u)throw new Error(`dilations should be ${u}D`);if(t.strides.reduce((d,y)=>d+y,0)>0&&t.strides.length!==u)throw new Error(`strides should be ${u}D`);if(t.pads.reduce((d,y)=>d+y,0)>0&&t.pads.length!==u*2)throw new Error(`pads should be ${u*2}D`);if(t.outputPadding.length!==u&&t.outputPadding.length!==0)throw new Error(`output_padding should be ${u}D`);if(t.kernelShape.reduce((d,y)=>d+y,0)>0&&t.kernelShape.length!==0&&t.kernelShape.length!==e[1].dims.length-2)throw new Error("invalid kernel shape");if(t.outputShape.length!==0&&t.outputShape.length!==e[0].dims.length-2)throw new Error("invalid output shape")},lc=[2,3,1,0],dc=(e,t,r)=>{let o=js(r,t),i=r.format==="NHWC",u=o.outputShape,a=u[i?3:1],p=t[0].dims[i?3:1];if(o.group!==1||a===1&&p===1){e.compute(Bo(t,o));return}let m=u[i?1:2],h=u[i?2:3],d=t[1].dims[2],y=t[1].dims[3],w=i?m*h:a,_=i?a:m*h,v=d*y*p,x=!0,T=e.kernelCustomData.wT??e.compute(yt(t[1],lc),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=T);let C=[t[0],T],S=t.length===3;S&&(!i&&t[2].dims.length===1?C.push(t[2].reshape([t[2].dims[0],1,1])):C.push(t[2])),e.compute(Gs(C,o,u,w,_,v,S,x),{inputs:C})},cc=(e,t)=>{let r=t.format==="NHWC",o=[e.inputs[0].reshape(r?[e.inputs[0].dims[0],1,e.inputs[0].dims[1],e.inputs[0].dims[2]]:[e.inputs[0].dims[0],e.inputs[0].dims[1],1,e.inputs[0].dims[2]]),e.inputs[1].reshape([e.inputs[1].dims[0],e.inputs[1].dims[1],1,e.inputs[1].dims[2]])];o.length===3&&o.push(e.inputs[2]);let i=t.kernelShape;(i.length===0||i[0]===0)&&(i=[e.inputs[1].dims[2]]);let u=t.dilations;(u.length===0||u[0]===0)&&(u=[1]);let a=t.strides;(a.length===0||a[0]===0)&&(a=[1]);let p=t.pads;p.length===0&&(p=[0,0]),p=[0,p[0],0,p[1]],a=[1].concat(a),u=[1].concat(u),i=[1].concat(i);let m=js({...t,pads:p,strides:a,dilations:u,kernelShape:i},o);e.compute(Bo(o,m,h=>r?[h[0],h[2],h[3]]:[h[0],h[1],h[3]]))},Ks=(e,t)=>{uc(e.inputs,t),e.inputs[0].dims.length===3?cc(e,t):dc(e,e.inputs,t)}});var pc,Zs,Xs,Js=Q(()=>{"use strict";Ve();Ce();Ye();_e();pc=(e,t,r,o)=>{let i=W.size(t),u=t.length,a=V("input",e,u),p=J("output",e,u),m=r.dataType===6?r.getInt32Array()[0]:Number(r.getBigInt64Array()[0]),h=W.normalizeAxis(m,u),d=y=>{let w=` i32(${a.indicesGet("inputIndices","uniforms.axis")}) `,_=ce("uniforms.input_shape","uniforms.axis",u),v=o.reverse?w+(o.exclusive?" + 1":""):"0",x=o.reverse?_:w+(o.exclusive?"":" + 1");return`\n ${y.registerUniform("outputSize","u32").registerUniform("axis","u32").declareVariables(a,p)}\n ${y.mainStart()}\n ${y.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n var inputIndices = ${p.offsetToIndices("global_idx")};\n var sum = ${p.type.value}(0);\n let first : i32 = ${v};\n let last : i32 = ${x};\n for (var i : i32 = first; i < last; i++) {\n ${a.indicesSet("inputIndices","uniforms.axis","u32(i)")};\n sum = sum + ${a.getByIndices("inputIndices")};\n }\n ${p.setByOffset("global_idx","sum")};\n }`};return{name:"CumSum",shaderCache:{hint:o.cacheKey,inputDependencies:["rank"]},getRunData:()=>({outputs:[{dims:t,dataType:e}],dispatchGroup:{x:Math.ceil(i/64)},programUniforms:[{type:"uint32",data:i},{type:"int32",data:h},...G(t),...G(t)]}),getShaderSource:d}},Zs=(e,t)=>{let r=e.inputs[0].dims,o=e.inputs[0].dataType,i=e.inputs[1];e.compute(pc(o,r,i,t),{inputs:[0]})},Xs=e=>{let t=e.exclusive===1,r=e.reverse===1;return xe({exclusive:t,reverse:r})}});var Do,zn,Qs,mc,fc,Mo,zo,eu,hc,tu,ru,nu=Q(()=>{"use strict";Ce();Ye();_e();Do="[a-zA-Z]|\\\\.\\\\.\\\\.",zn="("+Do+")+",Qs="^"+zn+"$",mc="("+zn+",)*"+zn,fc="^"+mc+"$",Mo=class{constructor(t=-1){this.symbolToIndices=new Map,this.inputIndex=t}addSymbol(t,r){let o=this.symbolToIndices.get(t);o===void 0?o=[r]:o.push(r),this.symbolToIndices.set(t,o)}},zo=class{constructor(t,r){this.equation=r;this.hasEllipsis=!1,this.symbolToInfo=new Map,this.lhs=new Array,this.outputDims=[];let[o,i]=r.includes("->")?r.split("->",2):[r,""];if(!o.match(RegExp(fc)))throw new Error("Invalid LHS term");if(o.split(",").forEach((p,m)=>{let h=t[m].dims.slice();if(!p.match(RegExp(Qs)))throw new Error("Invalid LHS term");let d=this.processTerm(p,!0,h,m);this.lhs.push(d)}),i==="")i+=[...this.symbolToInfo.entries()].filter(([p,m])=>m.count===1||p==="...").map(([p])=>p).join("");else if(!i.match(RegExp(zn)))throw new Error("Invalid RHS");i.match(RegExp(Do,"g"))?.forEach(p=>{if(p==="...")this.outputDims=this.outputDims.concat(this.ellipsisDims);else{let m=this.symbolToInfo.get(p);if(m===void 0)throw new Error("Invalid RHS symbol");this.outputDims.push(m.dimValue)}}),this.rhs=this.processTerm(i,!1,this.outputDims)}addSymbol(t,r,o){let i=this.symbolToInfo.get(t);if(i!==void 0){if(i.dimValue!==r&&i.count!==1)throw new Error("Dimension mismatch");i.count++,i.inputIndices.push(o)}else i={count:1,dimValue:r,inputIndices:[o]};this.symbolToInfo.set(t,i)}processTerm(t,r,o,i=-1){let u=o.length,a=!1,p=[],m=0;if(!t.match(RegExp(Qs))&&!r&&t!=="")throw new Error("Invalid LHS term");let h=t.match(RegExp(Do,"g")),d=new Mo(i);return h?.forEach((y,w)=>{if(y==="..."){if(a)throw new Error("Only one ellipsis is allowed per input term");a=!0;let _=u-h.length+1;if(_<0)throw new Error("Ellipsis out of bounds");if(p=o.slice(m,m+_),this.hasEllipsis){if(this.ellipsisDims.length!==p.length||this.ellipsisDims.toString()!==p.toString())throw new Error("Ellipsis dimensions mismatch")}else if(r)this.hasEllipsis=!0,this.ellipsisDims=p;else throw new Error("Ellipsis must be specified in the LHS");for(let v=0;ve+"_max",hc=(e,t,r,o)=>{let u=e.map(d=>d.length).map((d,y)=>V(`input${y}`,t,d)),a=W.size(o),p=J("output",t,o.length),m=[...r.symbolToInfo.keys()].filter(d=>!r.rhs.symbolToIndices.has(d)),h=d=>{let y=[],w="var prod = 1.0;",_="var sum = 0.0;",v="sum += prod;",x=[],T=[],C=[],S=[],E=r.symbolToInfo.size===r.rhs.symbolToIndices.size;r.symbolToInfo.forEach((U,M)=>{if(r.rhs.symbolToIndices.has(M)){let N=r.rhs.symbolToIndices.get(M)?.[0];N!==void 0&&r.lhs.forEach((Y,se)=>{if(U.inputIndices.includes(se)){let B=Y.symbolToIndices.get(M);if(B===void 0)throw new Error("Invalid symbol error");B.forEach(te=>{y.push(`${u[se].indicesSet(`input${se}Indices`,te,p.indicesGet("outputIndices",N))}`)})}})}else r.lhs.forEach((N,Y)=>{if(U.inputIndices.includes(Y)){let se=N.symbolToIndices.get(M);if(se===void 0)throw new Error("Invalid symbol error");se.forEach(B=>{x.push(`${u[Y].indicesSet(`input${Y}Indices`,B,`${M}`)}`)}),S.push(`prod *= ${u[Y].getByIndices(`input${Y}Indices`)};`)}}),T.push(`for(var ${M}: u32 = 0; ${M} < uniforms.${eu(M)}; ${M}++) {`),C.push("}")});let O=E?[...y,`let sum = ${u.map((U,M)=>U.getByIndices(`input${M}Indices`)).join(" * ")};`]:[...y,_,...T,...x,w,...S,v,...C];return`\n ${d.registerUniforms(m.map(U=>({name:`${eu(U)}`,type:"u32"}))).registerUniform("outputSize","u32").declareVariables(...u,p)}\n\n ${d.mainStart()}\n ${d.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n var outputIndices = ${p.offsetToIndices("global_idx")};\n ${u.map((U,M)=>`var input${M}Indices: ${u[M].type.indices};`).join(`\n`)}\n ${O.join(`\n`)};\n ${p.setByOffset("global_idx","sum")};\n }`};return{name:"Einsum",shaderCache:{hint:r.equation,inputDependencies:e.map(()=>"rank")},getRunData:()=>{let d=m.filter(w=>r.symbolToInfo.has(w)).map(w=>({type:"uint32",data:r.symbolToInfo.get(w)?.dimValue||0}));d.push({type:"uint32",data:a});let y=e.map((w,_)=>[...G(w)]).reduce((w,_)=>w.concat(_),d);return y.push(...G(o)),{outputs:[{dims:o,dataType:t}],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:y}},getShaderSource:h}},tu=(e,t)=>{let r=new zo(e.inputs,t.equation),o=r.outputDims,i=e.inputs.map((u,a)=>u.dims);e.compute(hc(i,e.inputs[0].dataType,r,o))},ru=e=>{let t=e.equation.replace(/\\s+/g,"");return xe({equation:t})}});var gc,ou,yc,bc,iu,au=Q(()=>{"use strict";Ve();Ce();_e();gc=e=>{if(!e||e.length!==2)throw new Error("Expand requires 2 input.");let t=e[0].dims,r=Array.from(e[1].getBigInt64Array(),Number),o=r.length{let r=e.length-t.length,o=[];for(let i=0;ie.length>t.length?ou(e,t):ou(t,e),bc=e=>{let t=e[0].dims,r=Array.from(e[1].getBigInt64Array(),Number),o=yc(t,r),i=e[0].dataType,u=i===9?4:1,a=Math.ceil(W.size(o)/u),p=h=>{let d=V("input",i,t.length,u),y=J("output",i,o.length,u),w;if(i===9){let _=(v,x,T="")=>`\n let outputIndices${x} = ${y.offsetToIndices(`outputOffset + ${x}u`)};\n let offset${x} = ${d.broadcastedIndicesToOffset(`outputIndices${x}`,y)};\n let index${x} = offset${x} / 4u;\n let component${x} = offset${x} % 4u;\n ${v}[${x}] = ${T}(${d.getByOffset(`index${x}`)}[component${x}]);\n `;w=`\n let outputOffset = global_idx * ${u};\n var data = vec4(0);\n ${_("data",0,"u32")}\n ${_("data",1,"u32")}\n ${_("data",2,"u32")}\n ${_("data",3,"u32")}\n ${y.setByOffset("global_idx","data")}\n }`}else w=`\n let outputIndices = ${y.offsetToIndices("global_idx")};\n let inputOffset = ${d.broadcastedIndicesToOffset("outputIndices",y)};\n ${y.setByOffset("global_idx",d.getByOffset("inputOffset"))}\n }`;return`\n ${h.registerUniform("vec_size","u32").declareVariables(d,y)}\n ${h.mainStart()}\n ${h.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")}\n ${w}`},m=[{type:"uint32",data:a},...G(t),...G(o)];return{name:"Expand",shaderCache:{hint:`${o.length}`,inputDependencies:["rank"]},getShaderSource:p,getRunData:()=>({outputs:[{dims:o,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:m})}},iu=e=>{gc(e.inputs),e.compute(bc(e.inputs),{inputs:[0]})}});var wc,vc,su,uu,lu=Q(()=>{"use strict";Ve();Ce();Ye();_e();wc=e=>{if(!e||e.length!==2)throw new Error("Gather requires 2 inputs.")},vc=(e,t)=>{let r=e[0].dims,o=e[1].dims,i=r.length,u=W.normalizeAxis(t.axis,i),a=r.slice(0);a.splice(u,1,...o);let p=r[u],m=e[0].dataType===9?4:1,h=Math.ceil(W.size(a)/m),d=[{type:"uint32",data:h},{type:"int32",data:p},{type:"uint32",data:u},...G(e[0].dims),...G(e[1].dims),...G(a)],y=w=>{let _=V("data",e[0].dataType,e[0].dims.length,m),v=V("inputIndices",e[1].dataType,e[1].dims.length),x=J("output",e[0].dataType,a.length,m),T=S=>{let E=o.length,O=`var indicesIndices${S} = ${v.type.indices}(0);`;for(let U=0;U1?`indicesIndices${S}[${U}]`:`indicesIndices${S}`} = ${a.length>1?`outputIndices${S}[uniforms.axis + ${U}]`:`outputIndices${S}`};`;O+=`\n var idx${S} = ${v.getByIndices(`indicesIndices${S}`)};\n if (idx${S} < 0) {\n idx${S} = idx${S} + uniforms.axisDimLimit;\n }\n var dataIndices${S} = ${_.type.indices}(0);\n `;for(let U=0,M=0;U1?`dataIndices${S}[${U}]`:`dataIndices${S}`} = u32(idx${S});`,M+=E):(O+=`${i>1?`dataIndices${S}[${U}]`:`dataIndices${S}`} = ${a.length>1?`outputIndices${S}[${M}]`:`outputIndices${S}`};`,M++);return O},C;if(e[0].dataType===9){let S=(E,O,U="")=>`\n let outputIndices${O} = ${x.offsetToIndices(`outputOffset + ${O}u`)};\n ${T(O)};\n let offset${O} = ${_.indicesToOffset(`dataIndices${O}`)};\n let index${O} = offset${O} / 4u;\n let component${O} = offset${O} % 4u;\n ${E}[${O}] = ${U}(${_.getByOffset(`index${O}`)}[component${O}]);\n `;C=`\n let outputOffset = global_idx * ${m};\n var value = vec4(0);\n ${S("value",0,"u32")}\n ${S("value",1,"u32")}\n ${S("value",2,"u32")}\n ${S("value",3,"u32")}\n ${x.setByOffset("global_idx","value")}\n `}else C=`\n let outputIndices = ${x.offsetToIndices("global_idx")};\n ${T("")};\n let value = ${_.getByIndices("dataIndices")};\n ${x.setByOffset("global_idx","value")};\n `;return`\n ${w.registerUniform("outputSize","u32").registerUniform("axisDimLimit","i32").registerUniform("axis","u32").declareVariables(_,v,x)}\n ${w.mainStart()}\n ${w.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n ${C}\n }`};return{name:"Gather",shaderCache:{hint:t.cacheKey,inputDependencies:["rank","rank"]},getRunData:()=>({outputs:[{dims:a,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(h/64)},programUniforms:d}),getShaderSource:y}},su=e=>xe({axis:e.axis}),uu=(e,t)=>{let r=e.inputs;wc(r),e.compute(vc(e.inputs,t))}});var $c,_c,du,cu,pu=Q(()=>{"use strict";Ce();Ye();_e();$c=e=>{if(!e||e.length!==2)throw new Error("GatherElements requires 2 inputs.");if(e[0].dims.length<1)throw new Error("GatherElements requires that the data input be rank >= 1.");if(e[0].dims.length!==e[1].dims.length)throw new Error(`GatherElements requires that the data input and\n indices input tensors be of same rank.`)},_c=(e,t)=>{let r=e[0].dims,o=e[0].dataType,i=r.length,u=e[1].dims,a=e[1].dataType,p=W.normalizeAxis(t.axis,i),m=r[p],h=u.slice(0),d=W.size(h),y=V("input",o,i),w=V("indicesInput",a,u.length),_=J("output",o,h.length),v=[{type:"uint32",data:d},{type:"int32",data:m},{type:"uint32",data:p}];return v.push(...G(r)),v.push(...G(u)),v.push(...G(h)),{name:"GatherElements",shaderCache:{inputDependencies:["rank","rank"]},getRunData:()=>({outputs:[{dims:h,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(d/64)},programUniforms:v}),getShaderSource:C=>`\n ${C.registerUniform("outputSize","u32").registerUniform("axisDimLimit","i32").registerUniform("axis","u32").declareVariables(y,w,_)}\n ${C.mainStart()}\n ${C.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n\n let outputIndices = ${_.offsetToIndices("global_idx")};\n\n var idx = ${w.getByOffset("global_idx")};\n if (idx < 0) {\n idx = idx + uniforms.axisDimLimit;\n }\n var inputIndices = ${y.type.indices}(outputIndices);\n ${y.indicesSet("inputIndices","uniforms.axis","u32(idx)")};\n let value = ${y.getByIndices("inputIndices")};\n\n ${_.setByOffset("global_idx","value")};\n }`}},du=e=>xe({axis:e.axis}),cu=(e,t)=>{let r=e.inputs;$c(r),e.compute(_c(e.inputs,t))}});var Sc,xc,mu,fu,hu=Q(()=>{"use strict";Ce();_e();Sc=e=>{if(!e)throw new Error("Input is missing");if(e.length<2||e.length>3)throw new Error("Invaid input number.");if(e.length===3&&e[2].dims.length>2)throw new Error("Invalid input shape of C");if(e[0].dataType!==e[1].dataType||e.length===3&&e[0].dataType!==e[2].dataType)throw new Error("Input types are mismatched")},xc=(e,t)=>{let r=e[0].dims.slice(),o=e[1].dims.slice(),[i,u,a]=Sn.getShapeOfGemmResult(r,t.transA,o,t.transB,e.length===3?e[2].dims:void 0),p=[i,u];if(!p)throw new Error("Can\'t use gemm on the given tensors");let m=W.size(p),h=[{type:"uint32",data:m},{type:"uint32",data:i},{type:"uint32",data:u},{type:"uint32",data:a},{type:"float32",data:t.alpha},{type:"float32",data:t.beta}],d=["type","type"];e.length===3&&(h.push(...G(e[2].dims)),d.push("rank")),h.push(...G(p));let y=w=>{let _="";t.transA&&t.transB?_="value += a[k * uniforms.M + m] * b[n * uniforms.K + k];":t.transA&&!t.transB?_="value += a[k * uniforms.M + m] * b[k * uniforms.N + n];":!t.transA&&t.transB?_="value += a[m * uniforms.K + k] * b[n * uniforms.K + k];":!t.transA&&!t.transB&&(_="value += a[m * uniforms.K + k] * b[k * uniforms.N + n];");let v=t.alpha===1?"":"value *= uniforms.alpha;",x=V("a",e[0].dataType,e[0].dims),T=V("b",e[1].dataType,e[1].dims),C=x.type.value,S=null,E=[x,T];e.length===3&&(S=V("c",e[2].dataType,e[2].dims.length),E.push(S));let O=J("output",e[0].dataType,p.length);E.push(O);let U=[{name:"output_size",type:"u32"},{name:"M",type:"u32"},{name:"N",type:"u32"},{name:"K",type:"u32"},{name:"alpha",type:"f32"},{name:"beta",type:"f32"}];return`\n ${w.registerUniforms(U).declareVariables(...E)}\n\n ${w.mainStart()}\n ${w.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}\n\n let m = global_idx / uniforms.N;\n let n = global_idx % uniforms.N;\n\n var value = ${C}(0);\n for (var k: u32 = 0u; k < uniforms.K; k++) {\n ${_}\n }\n\n ${v}\n ${(()=>S!=null?`let cOffset = ${S.broadcastedIndicesToOffset("vec2(m, n)",O)}; value += ${C}(uniforms.beta) * ${S.getByOffset("cOffset")};`:"")()}\n output[global_idx] = value;\n }`};return{name:"Gemm",shaderCache:{hint:`${t.cacheKey}`,inputDependencies:d},getRunData:()=>({outputs:[{dims:p,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(m/64)},programUniforms:h}),getShaderSource:y}},mu=e=>{let t=e.transA,r=e.transB,o=e.alpha,i=e.beta;return{transA:t,transB:r,alpha:o,beta:i,cacheKey:`${e.transA};${e.transB};${e.alpha===1}`}},fu=(e,t)=>{Sc(e.inputs),e.compute(xc(e.inputs,t))}});var Cc,Ac,Ic,gu,yu=Q(()=>{"use strict";Ve();Ce();_e();Cc=(e,t)=>{let r=e[0].dims,o=r,i=2,u=W.sizeToDimension(r,i),a=W.sizeFromDimension(r,i),p=He(a),m=a/p,h=[r[0],r[1],m],d=["rank","type","type"],y=[{type:"uint32",data:a},{type:"uint32",data:m}];y.push(...G(h),...G(h));let w=_=>{let v=V("x",e[0].dataType,h.length,p),x=V("scale",e[1].dataType,e[1].dims),T=V("bias",e[2].dataType,e[2].dims),C=J("output",e[0].dataType,h.length,p),S=[v,x,T,C],E=v.type.value,O=p===1?"f32":`vec${p}`,U=64,M=[{name:"normSize",type:"u32"},{name:"normPackedSize",type:"u32"}];return`\n var meanShared : f32;\n var squaredNormShared : f32;\n var workgroupShared : array<${O}, ${U}>;\n const workgroupSize = ${U}u;\n ${_.registerUniforms(M).declareVariables(...S)}\n ${_.mainStart(U)}\n let norm = global_idx / workgroupSize;\n let batch = norm / uniforms.x_shape[1];\n let channel = norm % uniforms.x_shape[1];\n let localIndex = local_id.x;\n\n // initialize workgroup memory\n var initial = ${O}(0);\n for (var h = localIndex; h < uniforms.normPackedSize; h += workgroupSize) {\n initial = initial + ${O}(${v.get("batch","channel","h")});\n }\n workgroupShared[localIndex] = initial;\n workgroupBarrier();\n\n // Calculate the mean of current channel data.\n for (var currSize = workgroupSize >> 1; currSize > 0; currSize = currSize >> 1) {\n if (localIndex < currSize) {\n workgroupShared[localIndex] = workgroupShared[localIndex] + workgroupShared[localIndex + currSize];\n }\n workgroupBarrier();\n }\n if (localIndex == 0) {\n meanShared = ${ut("workgroupShared[0]",p)} / f32(uniforms.normSize);\n }\n workgroupBarrier();\n\n // reinitialize workgroup memory.\n initial = ${O}(0);\n for (var h = localIndex; h < uniforms.normPackedSize; h += workgroupSize) {\n let deviation = ${O}(${v.get("batch","channel","h")}) - ${O}(meanShared);\n initial = initial + deviation * deviation;\n }\n workgroupShared[localIndex] = initial;\n workgroupBarrier();\n\n // Calculate the sum of square of deviation of current channel data.\n for (var currSize = workgroupSize >> 1; currSize > 0; currSize = currSize >> 1) {\n if (localIndex < currSize) {\n workgroupShared[localIndex] = workgroupShared[localIndex] + workgroupShared[localIndex + currSize];\n }\n workgroupBarrier();\n }\n if (localIndex == 0) {\n squaredNormShared = ${ut("workgroupShared[0]",p)};\n }\n workgroupBarrier();\n\n let invStdDev = inverseSqrt(squaredNormShared / f32(uniforms.normSize) + f32(${t.epsilon}));\n let channelScale = invStdDev * f32(${x.getByOffset("channel")});\n let channelShift = f32(${T.getByOffset("channel")}) - meanShared * channelScale;\n for (var h = localIndex; h < uniforms.normPackedSize; h += workgroupSize) {\n let value = ${v.get("batch","channel","h")} * ${E}(${O}(channelScale)) + ${E}(${O}(channelShift));\n ${C.set("batch","channel","h","value")};\n }\n }`};return{name:"InstanceNormalization",shaderCache:{hint:`${t.epsilon};${p}`,inputDependencies:d},getRunData:()=>({outputs:[{dims:o,dataType:e[0].dataType}],dispatchGroup:{x:u},programUniforms:y}),getShaderSource:w}},Ac=(e,t,r,o,i,u,a,p)=>{let m=He(a),h=64,d=m===1?"vec2f":`mat2x${m}f`,y=m===1?"f32":`vec${m}f`,w=(M,N)=>`${d}(${M}, ${N})`,_=i*a/m,v=Math.ceil(u/h),x=["type"],T=[{type:"uint32",data:v},{type:"uint32",data:u},{type:"uint32",data:Math.floor(a/m)},{type:"uint32",data:Math.floor(u*a/m)}],C=M=>{let N=V("input",t.dataType,t.dims,m);return`\n ${M.declareVariables(N)}\n @group(0) @binding(1) var output : array<${d}>;\n struct Uniforms {wg_size:u32, H:u32, C:u32, image_size:u32};\n @group(0) @binding(2) var uniforms: Uniforms;\n\n ${M.mainStart(h)}\n let currentImageNumber = global_idx / ${h} / uniforms.C;\n let currentChannelNumber = (global_idx / ${h}) % uniforms.C;\n let wgId = global_idx % ${h};\n let wgOffset = wgId * uniforms.wg_size;\n if (wgOffset >= uniforms.H) {\n return;\n }\n let wgMax = min(wgOffset + uniforms.wg_size, uniforms.H);\n\n let offset = currentImageNumber * uniforms.image_size + currentChannelNumber;\n var sum = ${Ze("f32",m)};\n var squaredSum = ${Ze("f32",m)};\n for (var i: u32 = wgOffset; i < wgMax; i++) {\n let value = ${y}(input[offset + i * uniforms.C]);\n sum += value;\n squaredSum += value * value;\n }\n output[global_idx] = ${w("sum","squaredSum")};\n }`},S=e.compute({name:"InstanceNormComputeMean",shaderCache:{hint:`${m}`,inputDependencies:x},getRunData:()=>({outputs:[{dims:[i,a,h,2],dataType:1}],dispatchGroup:{x:i*a/m},programUniforms:T}),getShaderSource:C},{inputs:[t],outputs:[-1]})[0],E=[{type:"uint32",data:_},{type:"uint32",data:u},{type:"uint32",data:Math.floor(a/m)},{type:"uint32",data:Math.floor(h*a/m)}],O=["type","type","type"],U=M=>{let N=V("scale",r.dataType,r.dims,m),Y=V("bias",o.dataType,o.dims,m);return`\n @group(0) @binding(0) var input : array<${d}>;\n @group(0) @binding(1) var scale : array<${N.type.storage}>;\n @group(0) @binding(2) var bias : array<${Y.type.storage}>;\n @group(0) @binding(3) var output : array<${d}>;\n struct Uniforms {units_of_work : u32, H: u32, C : u32, image_size : u32};\n @group(0) @binding(4) var uniforms: Uniforms;\n\n ${M.mainStart()}\n ${M.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.units_of_work")}\n let currentImageNumber = global_idx / uniforms.C;\n let currentChannelNumber = global_idx % uniforms.C;\n\n let offset = currentImageNumber * uniforms.image_size;\n var sum = ${Ze("f32",m)};\n var squaredSum = ${Ze("f32",m)};\n for (var i: u32 = 0; i < ${h}; i++) {\n let value = input[offset + i + currentChannelNumber * ${h}];\n sum += value[0];\n squaredSum += value[1];\n }\n sum = sum / f32(uniforms.H);\n squaredSum = squaredSum / f32(uniforms.H);\n let invStdDev = inverseSqrt(squaredSum - sum * sum + f32(${p}));\n let channelScale = invStdDev * ${y}(scale[currentChannelNumber]);\n let channelShift = ${y}(bias[currentChannelNumber]) - sum * channelScale;\n\n output[global_idx] = ${w("channelScale","channelShift")};\n }`};return e.compute({name:"InstanceNormComputeChannelScaleShift",shaderCache:{hint:`${m};${p}`,inputDependencies:O},getRunData:()=>({outputs:[{dims:[i,a,2],dataType:1}],dispatchGroup:{x:Math.ceil(_/64)},programUniforms:E}),getShaderSource:U},{inputs:[S,r,o],outputs:[-1]})[0]},Ic=(e,t,r)=>{let o=t[0].dims,i=o,u=o[0],a=o[o.length-1],p=W.sizeFromDimension(o,1)/a,m=He(a),h=W.size(i)/m,d=[{type:"uint32",data:p},{type:"uint32",data:Math.floor(a/m)}],y=["type","type"],w=Ac(e,t[0],t[1],t[2],u,p,a,r.epsilon),_=v=>{let x=Ne(t[0].dataType),T=m===1?"vec2f":`mat2x${m}f`,C=m===1?x:`vec${m}<${x}>`,S=V("input",t[0].dataType,t[0].dims,m),E=J("output",t[0].dataType,i,m);return`\n @group(0) @binding(0) var input : array<${S.type.storage}>;\n @group(0) @binding(1) var scaleInput : array<${T}>;\n @group(0) @binding(2) var output : array<${E.type.storage}>;\n struct Uniforms {H: u32, C : u32};\n @group(0) @binding(3) var uniforms: Uniforms;\n\n ${v.mainStart()}\n let currentImageNumber = global_idx / (uniforms.C * uniforms.H);\n let currentChannelNumber = global_idx % uniforms.C;\n\n let scaleOffset = currentImageNumber * uniforms.C + currentChannelNumber;\n let scale = scaleInput[scaleOffset];\n output[global_idx] = fma(input[global_idx], ${C}(scale[0]), ${C}(scale[1]));\n }`};e.compute({name:"InstanceNormalizationNHWC",shaderCache:{hint:`${m}`,inputDependencies:y},getRunData:()=>({outputs:[{dims:i,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(h/64)},programUniforms:d}),getShaderSource:_},{inputs:[t[0],w]})},gu=(e,t)=>{t.format==="NHWC"?Ic(e,e.inputs,t):e.compute(Cc(e.inputs,t))}});var Tc,Ec,bu,wu=Q(()=>{"use strict";Ve();Ce();_e();Tc=e=>{if(!e||e.length<2)throw new Error("layerNorm requires at least 2 inputs.")},Ec=(e,t,r)=>{let o=e[0].dims,i=e[1],u=e[2],a=o,p=W.normalizeAxis(t.axis,o.length),m=W.sizeToDimension(o,p),h=W.sizeFromDimension(o,p),d=W.size(i.dims),y=u?W.size(u.dims):0;if(d!==h||u&&y!==h)throw new Error(`Size of X.shape()[axis:] == ${h}.\n Size of scale and bias (if provided) must match this.\n Got scale size of ${d} and bias size of ${y}`);let w=[];for(let O=0;O1,C=r>2,S=O=>{let U=Ne(e[0].dataType),M=[V("x",e[0].dataType,e[0].dims,_),V("scale",i.dataType,i.dims,_)];u&&M.push(V("bias",u.dataType,u.dims,_)),M.push(J("output",e[0].dataType,a,_)),T&&M.push(J("mean_data_output",1,w)),C&&M.push(J("inv_std_output",1,w));let N=[{name:"norm_count",type:"u32"},{name:"norm_size",type:"f32"},{name:"norm_size_vectorized",type:"u32"},{name:"epsilon",type:"f32"}];return`\n ${O.registerUniforms(N).declareVariables(...M)}\n ${O.mainStart()}\n ${O.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.norm_count")}\n let offset = global_idx * uniforms.norm_size_vectorized;\n var meanVector = ${Ze("f32",_)};\n var meanSquareVector = ${Ze("f32",_)};\n\n for (var h: u32 = 0u; h < uniforms.norm_size_vectorized; h++) {\n let value = ${gt(U,_,"x[h + offset]")};\n meanVector += value;\n meanSquareVector += value * value;\n }\n let mean = ${ut("meanVector",_)} / uniforms.norm_size;\n let invStdDev =\n inverseSqrt(${ut("meanSquareVector",_)} / uniforms.norm_size - mean * mean + uniforms.epsilon);\n\n for (var j: u32 = 0; j < uniforms.norm_size_vectorized; j++) {\n let f32input = ${gt(U,_,"x[j + offset]")};\n let f32scale = ${gt(U,_,"scale[j]")};\n output[j + offset] = ${M[0].type.value}((f32input - mean) * invStdDev * f32scale\n ${u?`+ ${gt(U,_,"bias[j]")}`:""}\n );\n }\n\n ${T?"mean_data_output[global_idx] = mean":""};\n ${C?"inv_std_output[global_idx] = invStdDev":""};\n }`},E=[{dims:a,dataType:e[0].dataType}];return T&&E.push({dims:w,dataType:1}),C&&E.push({dims:w,dataType:1}),{name:"LayerNormalization",shaderCache:{hint:`${_};${r}`,inputDependencies:v},getRunData:()=>({outputs:E,dispatchGroup:{x:Math.ceil(m/64)},programUniforms:x}),getShaderSource:S}},bu=(e,t)=>{Tc(e.inputs),e.compute(Ec(e.inputs,t,e.outputCount))}});var Pc,$u,vu,Oc,Uo,_u,Su=Q(()=>{"use strict";Ce();Ye();$n();xo();_e();pr();Pc=(e,t)=>{let r=e[0],o=e[1],i=e[2],u=e[3],a=e[4],p=e[5],m=e[6],h=e[7];if(r.dims.length!==3&&r.dims.length!==5)throw new Error("Input query is expected to have 3 or 5 dimensions");let d=!1,y=r.dims[0],w=r.dims[1],_=r.dims.length===3?d?r.dims[2]/3:r.dims[2]:t.numHeads*r.dims[4],v=w,x=0,T=0,C=Math.floor(_/t.numHeads);if(m&&h){if(m.dims.length!==4)throw new Error(\'Input "past_key" is expected to have 4 dimensions\');if(h.dims.length!==4)throw new Error(\'Input "past_value" is expected to have 4 dimensions\');x=m.dims[2],T=m.dims[2]}else if(m||h)throw new Error(\'Input "past_key" and "past_value" shall be both present or both absent\');let S;if(o){if(r.dims.length!==3)throw new Error(\'Input "query" is expected to have 3 dimensions when key is given\');if(o.dims.length<3||o.dims.length>5)throw new Error(\'Input "key" is expected to have 3, 4, or 5 dimensions\');if(r.dims[0]!==o.dims[0])throw new Error(\'Input "query" and "key" shall have same dim 0 (batch size)\');if(o.dims.length===3){if(o.dims[2]!==r.dims[2])throw new Error(\'Input "query" and "key" shall have same dim 2 (hidden_size)\');S=2,v=o.dims[1]}else if(o.dims.length===5){if(o.dims[2]!==t.numHeads||o.dims[3]!==2||o.dims[4]!==C)throw new Error(\'Expect "key" shape (batch_size, kv_sequence_length, num_heads, 2, head_size) for packed kv\');if(i)throw new Error(\'Expect "value" be none when "key" has packed kv format.\');S=5,v=o.dims[1]}else{if(o.dims[1]!==t.numHeads||o.dims[3]!==C)throw new Error(\'Expect "key" shape (batch_size, num_heads, kv_sequence_length, head_size) for past_key\');S=0,v=o.dims[2]}}else{if(r.dims.length!==3&&r.dims.length!==5)throw new Error(\'Input "query" is expected to have 3 or 5 dimensions when key is empty\');if(r.dims.length===5&&(r.dims[2]!==t.numHeads||r.dims[3]!==3))throw new Error(\'Expect "query" shape (batch_size, kv_sequence_length, num_heads, 3, head_size) for packed kv\');S=3}if(u){if(u.dims.length!==1)throw new Error(\'Input "bias" is expected to have 1 dimension\');if(i&&r.dims.length===5&&r.dims[3]===2)throw new Error("bias is not allowed for packed kv.")}let E=0;if(a){E=8;let Y=a.dims;throw Y.length===1?Y[0]===y?E=1:Y[0]===3*y+2&&(E=3):Y.length===2&&Y[0]===y&&Y[1]===v&&(E=5),E===8?new Error(\'Input "key_padding_mask" shape shall be (batch_size) or (batch_size, kv_sequence_length)\'):new Error("Mask not supported")}let O=!1,U=_;if(i){if(i.dims.length!==3&&i.dims.length!==4)throw new Error(\'Input "value" is expected to have 3 or 4 dimensions\');if(r.dims[0]!==i.dims[0])throw new Error(\'Input "query" and "value" shall have same dim 0 (batch_size)\');if(i.dims.length===3){if(v!==i.dims[1])throw new Error(\'Input "key" and "value" shall have the same dim 1 (kv_sequence_length)\');U=i.dims[2]}else{if(v!==i.dims[2])throw new Error(\'Input "past_key" and "past_value" shall have the same dim 2 (kv_sequence_length)\');U=i.dims[1]*i.dims[3],O=!0}}let M=x+v,N=!1;if(a)throw new Error("Key padding mask is not supported");if(p)throw new Error("extraAddQk is not supported");if(m)throw new Error("pastKey is not supported");if(h)throw new Error("pastValue is not supported");return{batchSize:y,sequenceLength:w,pastSequenceLength:x,kvSequenceLength:v,totalSequenceLength:M,maxSequenceLength:T,inputHiddenSize:0,hiddenSize:_,vHiddenSize:U,headSize:C,vHeadSize:Math.floor(U/t.numHeads),numHeads:t.numHeads,isUnidirectional:!1,pastPresentShareBuffer:!1,maskFilterValue:t.maskFilterValue,maskType:E,scale:t.scale,broadcastResPosBias:N,passPastInKv:O,qkvFormat:S}},$u=e=>xe({...e}),vu=xe({perm:[0,2,1,3]}),Oc=(e,t,r,o,i,u,a)=>{let p=[o,i,u],m=W.size(p),h=[{type:"uint32",data:m},{type:"uint32",data:a},{type:"uint32",data:u}],d=y=>{let w=J("qkv_with_bias",t.dataType,p),_=V("qkv",t.dataType,p),v=V("bias",r.dataType,p),x=[{name:"output_size",type:"u32"},{name:"bias_offset",type:"u32"},{name:"hidden_size",type:"u32"}];return`\n ${y.registerUniforms(x).declareVariables(_,v,w)}\n ${y.mainStart()}\n ${y.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}\n let bias_offset_idx = (global_idx % uniforms.hidden_size) + uniforms.bias_offset;\n\n qkv_with_bias[global_idx] = qkv[global_idx] + bias[bias_offset_idx];\n }`};return e.compute({name:"MultiHeadAttentionAddBias",shaderCache:{inputDependencies:["type","type"]},getRunData:()=>({outputs:[{dims:p,dataType:t.dataType,gpuDataType:0}],dispatchGroup:{x:Math.ceil(m/64)},programUniforms:h}),getShaderSource:d},{inputs:[t,r],outputs:[-1]})[0]},Uo=(e,t,r,o,i,u,a,p)=>{let m=u;if(a){if(o===1)throw new Error("AddBiasReshape is not implemented. Please export your model with packed QKV or KV");return m=Oc(e,u,a,t,o,r*i,p),m=m.reshape([t,o,r,i]),e.compute(yt(m,vu.perm),{inputs:[m],outputs:[-1]})[0]}else return u.dims.length===3&&(m=u.reshape([t,o,r,i])),e.compute(yt(m,vu.perm),{inputs:[m],outputs:[-1]})[0]},_u=(e,t)=>{let r=Pc(e.inputs,t);if(e.inputs[0].dims.length===5)throw new Error("Packed QKV is not implemented");if(e.inputs[1]?.dims.length===5)throw new Error("Packed KV is not implemented");let o=e.inputs[1]&&e.inputs[2]&&e.inputs[1].dims.length===4&&e.inputs[2].dims.length===4,i=Uo(e,r.batchSize,r.numHeads,r.sequenceLength,r.headSize,e.inputs[0],e.inputs[3],0);if(o)return En(e,i,e.inputs[1],e.inputs[2],e.inputs[4],void 0,void 0,void 0,e.inputs[5],r,t);let u=Uo(e,r.batchSize,r.numHeads,r.kvSequenceLength,r.headSize,e.inputs[1],e.inputs[3],r.hiddenSize),a=Uo(e,r.batchSize,r.numHeads,r.kvSequenceLength,r.vHeadSize,e.inputs[2],e.inputs[3],2*r.hiddenSize);En(e,i,u,a,e.inputs[4],void 0,e.inputs[6],e.inputs[7],e.inputs[5],r,t)}});var kc,Rc,Bc,Dc,Mc,zc,Uc,Vc,xu,Cu=Q(()=>{"use strict";Ve();Ce();_e();kc=e=>{if(!e||e.length<1)throw new Error("Too few inputs");if(e[0].dataType!==1&&e[0].dataType!==10)throw new Error("Input type must be float or float16.");if(e.length>=2){let t=e[0].dims.length*2===e[1].dims[0];if(e.length===4&&(t=e[3].dims[0]*2===e[1].dims[0]),!t)throw new Error("The pads should be a 1D tensor of shape [2 * input_rank] or [2 * num_axes].")}},Rc=(e,t,r)=>{let o="";for(let i=t-1;i>=0;--i)o+=`\n k = i32(${e.indicesGet("indices",i)}) - ${ce("uniforms.pads",i,r)};\n if (k < 0) {\n break;\n }\n if (k >= i32(${ce("uniforms.x_shape",i,t)})) {\n break;\n }\n offset += k * i32(${ce("uniforms.x_strides",i,t)});\n `;return`\n value = ${e.type.value}(uniforms.constant_value);\n for (var i = 0; i < 1; i++) {\n var offset = 0;\n var k = 0;\n ${o}\n value = x[offset];\n }\n `},Bc=(e,t,r)=>{let o="";for(let i=t-1;i>=0;--i)o+=`\n k = i32(${e.indicesGet("indices",i)}) - ${ce("uniforms.pads",i,r)};\n if (k < 0) {\n k = -k;\n }\n {\n let _2n_1 = 2 * (i32(${ce("uniforms.x_shape",i,t)}) - 1);\n k = k % _2n_1;\n if(k >= i32(${ce("uniforms.x_shape",i,t)})) {\n k = _2n_1 - k;\n }\n }\n offset += k * i32(${ce("uniforms.x_strides",i,t)});\n `;return`\n var offset = 0;\n var k = 0;\n ${o}\n value = x[offset];\n `},Dc=(e,t,r)=>{let o="";for(let i=t-1;i>=0;--i)o+=`\n k = i32(${e.indicesGet("indices",i)}) - ${ce("uniforms.pads",i,r)};\n if (k < 0) {\n k = 0;\n }\n if (k >= i32(${ce("uniforms.x_shape",i,t)})) {\n k = i32(${ce("uniforms.x_shape",i,t)}) - 1;\n }\n offset += k * i32(${ce("uniforms.x_strides",i,t)});\n `;return`\n var offset = 0;\n var k = 0;\n ${o}\n value = x[offset];\n `},Mc=(e,t,r)=>{let o="";for(let i=t-1;i>=0;--i)o+=`\n k = i32(${e.indicesGet("indices",i)}) - ${ce("uniforms.pads",i,r)};\n if (k < 0) {\n k += i32(${ce("uniforms.x_shape",i,t)}]);\n }\n if (k >= i32(${ce("uniforms.x_shape",i,t)})) {\n k -= i32(${ce("uniforms.x_shape",i,t)});\n }\n offset += k * i32(${ce("uniforms.x_strides",i,t)});\n `;return`\n var offset = 0;\n var k = 0;\n ${o}\n value = x[offset];\n `},zc=(e,t,r)=>{switch(r.mode){case 0:return Rc(e,t,r.pads.length);case 1:return Bc(e,t,r.pads.length);case 2:return Dc(e,t,r.pads.length);case 3:return Mc(e,t,r.pads.length);default:throw new Error("Invalid mode")}},Uc=(e,t)=>{let r=W.padShape(e[0].dims.slice(),t.pads),o=e[0].dims,u=[{type:"uint32",data:W.size(r)},{type:"uint32",data:t.pads}];if(t.mode===0){let m=st(e[0].dataType);u.push({type:m,data:t.value})}u.push(...G(e[0].dims),...G(r));let a=["rank"],p=m=>{let h=J("output",e[0].dataType,r.length),d=V("x",e[0].dataType,o.length),y=d.type.value,w=zc(h,o.length,t),_=[{name:"output_size",type:"u32"},{name:"pads",type:"i32",length:t.pads.length}];return t.mode===0&&_.push({name:"constant_value",type:y}),`\n ${m.registerUniforms(_).declareVariables(d,h)}\n ${m.mainStart()}\n ${m.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}\n\n let indices = ${h.offsetToIndices("global_idx")};\n\n var value = ${y}(0);\n ${w}\n output[global_idx] = value;\n }`};return{name:"Pad",shaderCache:{hint:`${t.mode}`,inputDependencies:a},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(W.size(r)/64)},programUniforms:u}),getShaderSource:p}},Vc=(e,t)=>{if(e.length>1){let r=e[1].getBigInt64Array(),o=e.length>=3&&e[2].data?e[2].getFloat32Array()[0]:0,i=e[0].dims.length,u=new Int32Array(2*i).fill(0);if(e.length>=4){let p=e[3].getBigInt64Array();for(let m=0;mu[Number(m)]=Number(p));let a=[];return u.forEach(p=>a.push(p)),{mode:t.mode,value:o,pads:a}}else return t},xu=(e,t)=>{kc(e.inputs);let r=Vc(e.inputs,t);e.compute(Uc(e.inputs,r),{inputs:[0]})}});var Un,Au,Iu,Tu,Eu,Wc,Nc,Pu,Ou,ku,Ru,Bu,Du,Mu,zu,Uu,Vu,Wu,Nu,Hu=Q(()=>{"use strict";dr();Ce();_e();Un=e=>{if(lr.webgpu.validateInputContent&&(!e||e.length!==1))throw new Error("Pool ops requires 1 input.")},Au=(e,t,r)=>{let o=t.format==="NHWC",i=e.dims.slice();o&&i.splice(1,0,i.pop());let u=Object.hasOwnProperty.call(t,"dilations"),a=t.kernelShape.slice(),p=t.strides.slice(),m=u?t.dilations.slice():[],h=t.pads.slice();Xt.adjustPoolAttributes(r,i,a,p,m,h);let d=Xt.computePoolOutputShape(r,i,p,m,a,h,t.autoPad),y=Object.assign({},t);u?Object.assign(y,{kernelShape:a,strides:p,pads:h,dilations:m,cacheKey:t.cacheKey}):Object.assign(y,{kernelShape:a,strides:p,pads:h,cacheKey:t.cacheKey});let w=d.slice();return w.push(w.splice(1,1)[0]),[y,o?w:d]},Iu=(e,t)=>{let r=t.format==="NHWC",o=W.size(e),i=W.size(t.kernelShape),u=[{type:"uint32",data:o},{type:"uint32",data:i}],a=[{name:"outputSize",type:"u32"},{name:"kernelSize",type:"u32"}];if(t.kernelShape.length<=2){let p=t.kernelShape[t.kernelShape.length-1],m=t.strides[t.strides.length-1],h=t.pads[t.pads.length/2-1],d=t.pads[t.pads.length-1],y=!!(h+d);u.push({type:"uint32",data:p},{type:"uint32",data:m},{type:"uint32",data:h},{type:"uint32",data:d}),a.push({name:"kw",type:"u32"},{name:"sw",type:"u32"},{name:"pwStart",type:"u32"},{name:"pwEnd",type:"u32"});let w=!1;if(t.kernelShape.length===2){let _=t.kernelShape[t.kernelShape.length-2],v=t.strides[t.strides.length-2],x=t.pads[t.pads.length/2-2],T=t.pads[t.pads.length-2];w=!!(x+T),u.push({type:"uint32",data:_},{type:"uint32",data:v},{type:"uint32",data:x},{type:"uint32",data:T}),a.push({name:"kh",type:"u32"},{name:"sh",type:"u32"},{name:"phStart",type:"u32"},{name:"phEnd",type:"u32"})}return[u,a,!0,y,w]}else{if(r)throw new Error("Pooling with kernelShape.length > 2 is not supported for NHWC format.");let p=W.computeStrides(t.kernelShape);u.push({type:"uint32",data:p},{type:"uint32",data:t.pads},{type:"uint32",data:t.strides}),a.push({name:"kernelStrides",type:"u32",length:p.length},{name:"pads",type:"u32",length:t.pads.length},{name:"strides",type:"u32",length:t.strides.length});let m=t.pads.reduce((h,d)=>h+d);return[u,a,!!m,!1,!1]}},Tu=(e,t,r,o,i,u,a,p,m,h,d,y)=>{let w=i.format==="NHWC",_=t.type.value,v=J("output",t.type.tensor,o);if(i.kernelShape.length<=2){let x="",T="",C="",S=r-(w?2:1);if(d?x=`\n for (var i: u32 = 0u; i < uniforms.kw; i++) {\n xIndices[${S}] = indices[${S}] * uniforms.sw - uniforms.pwStart + i;\n if (xIndices[${S}] < 0 || xIndices[${S}]\n >= uniforms.x_shape[${S}]) {\n pad++;\n continue;\n }\n let x_val = x[${t.indicesToOffset("xIndices")}];\n ${u}\n }`:x=`\n for (var i: u32 = 0u; i < uniforms.kw; i++) {\n xIndices[${S}] = indices[${S}] * uniforms.sw - uniforms.pwStart + i;\n let x_val = x[${t.indicesToOffset("xIndices")}];\n ${u}\n }`,i.kernelShape.length===2){let O=r-(w?3:2);y?T=`\n for (var j: u32 = 0u; j < uniforms.kh; j++) {\n xIndices[${O}] = indices[${O}] * uniforms.sh - uniforms.phStart + j;\n if (xIndices[${O}] < 0 || xIndices[${O}] >= uniforms.x_shape[${O}]) {\n pad += i32(uniforms.kw);\n continue;\n }\n `:T=`\n for (var j: u32 = 0u; j < uniforms.kh; j++) {\n xIndices[${O}] = indices[${O}] * uniforms.sh - uniforms.phStart + j;\n `,C=`\n }\n `}return`\n ${e.registerUniforms(m).declareVariables(t,v)}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n\n let indices = ${v.offsetToIndices("global_idx")};\n var xIndices = ${v.offsetToIndices("global_idx")};\n\n var value = ${_}(${p});\n var pad = 0;\n ${T}\n ${x}\n ${C}\n ${a}\n\n output[global_idx] = value;\n }`}else{if(w)throw new Error("Pooling with kernelShape.length > 2 is not supported for NHWC format.");let x=i.kernelShape.length,T=i.pads.length,C="";return h?C=`\n if (xIndices[j] >= uniforms.x_shape[j]) {\n pad++;\n isPad = true;\n break;\n }\n }\n if (!isPad) {\n let x_val = x[${t.indicesToOffset("xIndices")}];\n ${u}\n }`:C=`\n }\n let x_val = x[${t.indicesToOffset("xIndices")}];\n ${u}\n `,`\n ${e.registerUniforms(m).declareVariables(t,v)}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n let indices = ${v.offsetToIndices("global_idx")};\n var xIndices = ${v.offsetToIndices("global_idx")};\n\n var offsets: array;\n\n var value = ${_}(${p});\n var pad = 0;\n var isPad = false;\n\n for (var i: u32 = 0u; i < uniforms.kernelSize; i++) {\n var offset = i;\n for (var j = 0u; j < ${x-1}u; j++) {\n offsets[j] = offset / ${ce("uniforms.kernelStrides","j",x)};\n offset -= offsets[j] * ${ce("uniforms.kernelStrides","j",x)};\n }\n offsets[${x-1}] = offset;\n\n isPad = false;\n for (var j = ${r-x}u; j < ${r}u; j++) {\n xIndices[j] = indices[j] * ${ce("uniforms.strides",`j - ${r-x}u`,x)}\n + offsets[j - ${r-x}u] - ${ce("uniforms.pads","j - 2u",T)};\n ${C}\n }\n ${a}\n\n output[global_idx] = value;\n }`}},Eu=e=>`${e.format};${e.ceilMode};${e.autoPad};${e.kernelShape.length}`,Wc=e=>`${Eu(e)};${e.countIncludePad}`,Nc=e=>`${Eu(e)};${e.storageOrder};${e.dilations}`,Pu=e=>({format:e.format,autoPad:["NOTSET","VALID","SAME_UPPER","SAME_LOWER"][e.auto_pad],ceilMode:e.ceil_mode,kernelShape:e.kernel_shape,strides:e.strides,pads:e.pads}),Ou=(e,t,r,o)=>{let[i,u]=Au(t,o,r),a=V("x",t.dataType,t.dims.length),p=a.type.value,m="value += x_val;",h="";i.countIncludePad?h+=`value /= ${p}(uniforms.kernelSize);`:h+=`value /= ${p}(i32(uniforms.kernelSize) - pad);`;let[d,y,w,_,v]=Iu(u,i);d.push(...G(t.dims),...G(u));let x=["rank"];return{name:e,shaderCache:{hint:`${o.cacheKey};${w};${_};${v}`,inputDependencies:x},getRunData:()=>({outputs:[{dims:u,dataType:t.dataType}],dispatchGroup:{x:Math.ceil(W.size(u)/64)},programUniforms:d}),getShaderSource:T=>Tu(T,a,t.dims.length,u.length,i,m,h,0,y,w,_,v)}},ku=e=>{let t=e.count_include_pad!==0,r=Pu(e);if(r.ceilMode!==0)throw new Error("using ceil() in shape computation is not yet supported for AveragePool");let o={countIncludePad:t,...r,cacheKey:""};return{...o,cacheKey:Wc(o)}},Ru=(e,t)=>{Un(e.inputs),e.compute(Ou("AveragePool",e.inputs[0],!1,t))},Bu={autoPad:"",ceilMode:0,countIncludePad:!1,kernelShape:[],strides:[],pads:[],storageOrder:0,dilations:[]},Du=e=>{let t=e.format;return{format:t,...Bu,cacheKey:t}},Mu=(e,t)=>{Un(e.inputs),e.compute(Ou("GlobalAveragePool",e.inputs[0],!0,t))},zu=(e,t,r,o)=>{let[i,u]=Au(t,o,r),a=`\n value = max(x_val, value);\n `,p="",m=V("x",t.dataType,t.dims.length),h=["rank"],[d,y,w,_,v]=Iu(u,i);return d.push(...G(t.dims),...G(u)),{name:e,shaderCache:{hint:`${o.cacheKey};${w};${_};${v}`,inputDependencies:h},getRunData:()=>({outputs:[{dims:u,dataType:t.dataType}],dispatchGroup:{x:Math.ceil(W.size(u)/64)},programUniforms:d}),getShaderSource:x=>Tu(x,m,t.dims.length,u.length,i,a,p,-1e5,y,w,_,v)}},Uu=(e,t)=>{Un(e.inputs),e.compute(zu("MaxPool",e.inputs[0],!1,t))},Vu=e=>{let t=e.storage_order,r=e.dilations,o=Pu(e);if(t!==0)throw new Error("column major storage order is not yet supported for MaxPool");if(o.ceilMode!==0)throw new Error("using ceil() in shape computation is not yet supported for MaxPool");let i={storageOrder:t,dilations:r,...o,cacheKey:""};return{...i,cacheKey:Nc(i)}},Wu=e=>{let t=e.format;return{format:t,...Bu,cacheKey:t}},Nu=(e,t)=>{Un(e.inputs),e.compute(zu("GlobalMaxPool",e.inputs[0],!0,t))}});var Gc,Lc,Gu,Lu=Q(()=>{"use strict";dr();Ve();_e();Gc=(e,t,r)=>{let o=e===t,i=et&&r>0;if(o||i||u)throw new Error("Range these inputs\' contents are invalid.")},Lc=(e,t,r,o)=>{let i=Math.abs(Math.ceil((t-e)/r)),u=[i],a=i,p=st(o),m=[{type:"uint32",data:a},{type:p,data:e},{type:p,data:r},...G(u)],h=d=>{let y=J("output",o,u.length),w=y.type.value,_=[{name:"outputSize",type:"u32"},{name:"start",type:w},{name:"delta",type:w}];return`\n ${d.registerUniforms(_).declareVariables(y)}\n ${d.mainStart()}\n ${d.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n output[global_idx] = uniforms.start + ${w}(global_idx) * uniforms.delta;\n }`};return{name:"Range",shaderCache:{hint:`${o}`},getShaderSource:h,getRunData:()=>({outputs:[{dims:u,dataType:o}],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:m})}},Gu=e=>{let t=0,r=0,o=0;e.inputs[0].dataType===6?(t=e.inputs[0].getInt32Array()[0],r=e.inputs[1].getInt32Array()[0],o=e.inputs[2].getInt32Array()[0]):e.inputs[0].dataType===1&&(t=e.inputs[0].getFloat32Array()[0],r=e.inputs[1].getFloat32Array()[0],o=e.inputs[2].getFloat32Array()[0]),lr.webgpu.validateInputContent&&Gc(t,r,o),e.compute(Lc(t,r,o,e.inputs[0].dataType),{inputs:[]})}});var Fc,jc,qc,Kc,Yc,Zc,Xc,Jc,Qc,ep,tp,Fu,rp,np,op,ip,ap,ju,qu,Ku=Q(()=>{"use strict";Ce();Ye();_e();Fc=(e,t)=>{if(e.every(r=>r>0||(()=>{throw new Error("Resize requires scales input values to be positive")})),e.length>0){if(t.mode==="linear"){if(!(e.length===2||e.length===3||e.length===4&&e[0]===1&&e[1]===1||e.length===4&&e[0]===1&&e[3]===1||e.length===5&&e[0]===1&&e[1]===1))throw new Error(`For linear mode, Resize requires scales to be 2D, 3D, 4D with either two outermost or one innermost and\n one outermost scale values equal to 1, or 5D with two outermost scale values equal to 1`)}else if(t.mode==="cubic"&&!(e.length===2||e.length===4&&e[0]===1&&e[1]===1||e.length===4&&e[0]===1&&e[3]===1))throw new Error("Resize requires scales input size to be 2 or 4 for cubic mode")}},jc=(e,t,r)=>{t.every(i=>i>=0&&i{throw new Error("Resize requires axes input values to be positive and less than rank")}));let o=new Array(r).fill(1);return t.forEach((i,u)=>o[i]=e[u]),o},qc=(e,t,r,o,i,u)=>{let[a,p,m]=r>10?[1,2,3]:[-1,e.length>1?1:-1,-1],h=e[0].dims.length;if(a>0&&e.length>a&&e[a].dims.length>0)e[a].getFloat32Array().forEach(d=>u.push(d));else if(t.coordinateTransformMode==="tf_crop_and_resize")throw new Error("Resize requires RoI input to be specified when coordinateTransformMode is tfCropAndResize");if(p>0&&e.length>p&&e[p].dims.length>0){if(e[p].getFloat32Array().forEach(d=>o.push(d)),o.length!==0&&o.length!==h&&r>=18&&o.length!==t.axes.length)throw new Error("Resize requires scales input size to be same as input rank or axes size for opset 18 and up");Fc(o,t),t.axes.length>0&&jc(o,t.axes,h).forEach((d,y)=>o[y]=d)}if(m>0&&e.length>m&&(e[m].getBigInt64Array().forEach(d=>i.push(Number(d))),i.length!==h||r>=18&&i.length===t.axes.length))throw new Error("Resize requires sizes input size to be same as input rank or axes size for opset 18 and up");if(t.axes.length>0){if(o.length!==t.axes.length)throw new Error(\'Resize requires "scales" input size to be of axes rank when axes attributes is specified\');if(i.length!==t.axes.length)throw new Error(\'Resize requires "sizes" input size to be of rank axes rank when axes attributes is specified\')}if(typeof o<"u"&&typeof i<"u"&&o.length>0&&i.length>h)throw new Error("Resize requires only of scales or sizes to be specified")},Kc=(e,t)=>`fn getOriginalCoordinateFromResizedCoordinate(xResized: u32, xScale: f32, lengthResized: u32,\n lengthOriginal: u32, roiStart: f32, roiEnd: f32) -> ${t} { `+(()=>{switch(e){case"asymmetric":return`return ${t}(xResized) / ${t}(xScale);`;case"pytorch_half_pixel":return`if (lengthResized > 1) {\n return (${t}(xResized) + 0.5) / ${t}(xScale) - 0.5;\n } else {\n return 0.0;\n }`;case"tf_half_pixel_for_nn":return`return (${t}(xResized) + 0.5) / ${t}(xScale);`;case"align_corners":return`if (lengthResized == 1) {\n return 0.0;\n } else {\n // The whole part and the fractional part are calculated separately due to inaccuracy of floating\n // point division. As an example, f32(21) / f32(7) may evaluate to 2.99... instead of 3, causing an\n // offset-by-one error later in floor().\n let whole = ${t}(xResized * (lengthOriginal - 1) / (lengthResized - 1));\n let fract =\n ${t}(xResized * (lengthOriginal - 1) % (lengthResized - 1)) / ${t}(lengthResized - 1);\n return whole + fract;\n }`;case"tf_crop_and_resize":return`if (lengthResized > 1) {\n return ${t}(roiStart) * ${t}(lengthOriginal - 1) +\n (${t}(xResized) * ${t}(roiEnd - roiStart) * ${t}(lengthOriginal - 1)) /\n ${t}(lengthResized - 1);\n } else {\n return 0.5 * ${t}(roiStart + roiEnd) * ${t}(lengthOriginal - 1);\n }`;case"half_pixel_symmetric":return`const outputWidth = ${t}xScale * ${t}(lengthResized);\n const adjustment = ${t}(lengthResized) / outputWidth;\n const center = ${t}(lengthOriginal) / 2;\n const offset = center * (1 - adjustment);\n return offset + ((${t}(xResized) + 0.5) / ${t}(xScale)) - 0.5;`;case"half_pixel":return`return ((${t}(xResized) + 0.5) / ${t}(xScale)) - 0.5;`;default:throw new Error(`Coordinate transform mode ${e} is not supported`)}})()+"}",Yc=(e,t,r)=>`fn getNearestPixelFromOriginal(xOriginal: ${r}, isDownSample: bool) -> ${r} {`+(()=>{switch(e){case"round_prefer_ceil":return"if (fract(xOriginal) == 0.5) { return ceil(xOriginal); } else { return round(xOriginal); }";case"floor":return"return floor(xOriginal);";case"ceil":return"return ceil(xOriginal);";case"round_prefer_floor":return"if (fract(xOriginal) == 0.5) { return floor(xOriginal); } else { return round(xOriginal); }";case"simple":default:if(t<11)return"if (isDownSample) { return ceil(xOriginal); } else { return xOriginal; }";throw new Error(`Nearest mode ${e} is not supported`)}})()+"}",Zc=(e,t,r)=>{let o=new Array(r).fill(0).concat(new Array(r).fill(1)),i=e.length===0?o:e.slice();return t.length>0?(t.forEach((u,a)=>{o[u]=i[a],o[a+r]=i[t.length+a]}),o):i},Xc=(e,t,r,o)=>{let i=[];if(r.length>0)if(o.length>0){if(e.forEach(u=>i.push(u)),Math.max(...o)>e.length)throw new Error("axes is out of bound");o.forEach((u,a)=>i[u]=r[a])}else r.forEach(u=>i.push(u));else{if(t.length===0)throw new Error("Resize requires either scales or sizes.");i=e.map((u,a)=>Math.round(u*t[a]))}return i},Jc=(e,t,r)=>{let o=(()=>{switch(r.keepAspectRatioPolicy){case"not_larger":return r.axes.length>0?Math.min(...r.axes.map(u=>t[u]),Number.MAX_VALUE):Math.min(...t,Number.MAX_VALUE);case"not_smaller":return r.axes.length>0?Math.max(...r.axes.map(u=>t[u]),Number.MIN_VALUE):Math.max(...t,Number.MIN_VALUE);default:throw new Error(`Keep aspect ratio policy ${r.keepAspectRatioPolicy} is not supported`)}})();t.fill(1,0,t.length);let i=e.slice();return r.axes.length>0?(r.axes.forEach(u=>t[u]=o),r.axes.forEach(u=>i[u]=Math.round(e[u]*t[u]))):(t.fill(o,0,t.length),i.forEach((u,a)=>i[a]=Math.round(u*t[a]))),i},Qc=(e,t,r,o,i)=>`\n fn calculateOriginalIndicesFromOutputIndices(output_indices: ${e.type.indices}) -> array<${e.type.value}, ${r.length}> {\n var original_indices: array<${e.type.value}, ${r.length}>;\n for (var i:u32 = 0; i < ${r.length}; i++) {\n var output_index = ${e.indicesGet("output_indices","i")};\n var scale = ${ce("uniforms.scales","i",o)};\n var roi_low = ${ce("uniforms.roi","i",i)};\n var roi_hi = ${ce("uniforms.roi",`i + ${t.length}`,i)};\n if (scale == 1.0) {\n original_indices[i] = ${e.type.value}(output_index);\n } else {\n var input_shape_i = ${ce("uniforms.input_shape","i",t.length)};\n var output_shape_i = ${ce("uniforms.output_shape","i",r.length)};\n original_indices[i] = getOriginalCoordinateFromResizedCoordinate(output_index, scale, output_shape_i,\n input_shape_i, roi_low, roi_hi);\n }\n }\n return original_indices;\n }`,ep=(e,t,r,o,i,u,a)=>`\n fn calculateInputIndicesFromOutputIndices(output_indices: ${t.type.indices}) -> ${e.type.indices} {\n var input_indices: ${e.type.indices};\n for (var i:u32 = 0; i < ${o.length}; i++) {\n var output_index = ${t.indicesGet("output_indices","i")};\n var input_index: u32;\n var scale = ${ce("uniforms.scales","i",i)};\n if (scale == 1.0) {\n input_index = output_index;\n } else {\n var roi_low = ${ce("uniforms.roi","i",u)};\n var roi_hi = ${ce("uniforms.roi",`i + ${r.length}`,u)};\n var input_shape_i = ${ce("uniforms.input_shape","i",r.length)};\n var output_shape_i = ${ce("uniforms.output_shape","i",o.length)};\n var original_idx = getOriginalCoordinateFromResizedCoordinate(output_index, scale, output_shape_i,\n input_shape_i, roi_low, roi_hi);\n if (!${a} || (original_idx >= 0 && original_idx < ${t.type.value}(input_shape_i))) {\n if (original_idx < 0) {\n input_index = 0;\n } else if (original_idx > ${t.type.value}(input_shape_i - 1)) {\n input_index = input_shape_i - 1;\n } else {\n input_index = u32(getNearestPixelFromOriginal(original_idx, scale < 1));\n }\n } else {\n input_index = u32(original_idx);\n }\n }\n ${e.indicesSet("input_indices","i"," input_index")}\n }\n return input_indices;\n }`,tp=(e,t)=>`\n fn checkInputIndices(input_indices: ${e.type.indices}) -> bool {\n for (var i:u32 = 0; i < ${t.length}; i++) {\n var input_index = ${e.indicesGet("input_indices","i")};\n if (input_index < 0 || input_index >= ${ce("uniforms.input_shape","i",t.length)}) {\n return false;\n }\n }\n return true;\n }`,Fu=(e,t,r,o)=>e.rank>o?`\n ${e.indicesSet("input_indices",t,"channel")};\n ${e.indicesSet("input_indices",r,"batch")};\n`:"",rp=(e,t,r,o,i)=>{let[a,p,m,h]=r.length===2?[-1,0,1,-1]:[0,2,3,1],d=e.type.value;return`\n fn getInputValue(batch: u32, channel: u32, row: u32, col: u32) -> ${d} {\n var input_indices: ${e.type.indices};\n ${e.indicesSet("input_indices",p,`max(0, min(row, ${r[p]} - 1))`)};\n ${e.indicesSet("input_indices",m,`max(0, min(col, ${r[m]} - 1))`)};\n ${Fu(e,h,a,2)}\n return ${e.getByIndices("input_indices")};\n }\n\n fn bilinearInterpolation(output_indices: ${t.type.indices}) -> ${d} {\n var originalIndices = calculateOriginalIndicesFromOutputIndices(output_indices);\n var row:${d} = originalIndices[${p}];\n var col:${d} = originalIndices[${m}];\n ${o?`if (row < 0 || row > (${r[p]} - 1) || col < 0 || col > (${r[m]} - 1)) {\n return ${i};\n }`:""};\n row = max(0, min(row, ${r[p]} - 1));\n col = max(0, min(col, ${r[m]} - 1));\n var row1: u32 = u32(row);\n var col1: u32 = u32(col);\n var row2: u32 = u32(row + 1);\n var col2: u32 = u32(col + 1);\n var channel: u32 = ${r.length>2?`u32(originalIndices[${h}])`:"0"};\n var batch: u32 = ${r.length>2?`u32(originalIndices[${a}])`:"0"};\n var x11: ${d} = getInputValue(batch, channel, row1, col1);\n var x12: ${d} = getInputValue(batch, channel, row1, col2);\n var x21: ${d} = getInputValue(batch, channel, row2, col1);\n var x22: ${d} = getInputValue(batch, channel, row2, col2);\n var dx1: ${d} = abs(row - ${d}(row1));\n var dx2: ${d} = abs(${d}(row2) - row);\n var dy1: ${d} = abs(col - ${d}(col1));\n var dy2: ${d} = abs(${d}(col2) - col);\n if (row1 == row2) {\n dx1 = 0.5;\n dx2 = 0.5;\n }\n if (col1 == col2) {\n dy1 = 0.5;\n dy2 = 0.5;\n }\n return (x11 * dx2 * dy2 + x12 * dx2 * dy1 + x21 * dx1 * dy2 + x22 * dx1 * dy1);\n }`},np=(e,t,r,o,i,u,a,p,m,h)=>{let d=r.length===2,y=!0,[w,_]=d?[0,1]:y?[2,3]:[1,2],v=e.type.value,x=T=>{let C=T===w?"row":"col";return`\n fn ${C}CubicInterpolation(input_indices: ${e.type.indices}, output_indices: ${t.type.indices}) -> ${v} {\n var output_index = ${t.indicesGet("output_indices",T)};\n var originalIdx: ${v} = getOriginalCoordinateFromResizedCoordinate(output_index, ${i[T]},\n ${o[T]}, ${r[T]}, ${u[T]}, ${u[T]} + ${r.length});\n var fractOriginalIdx: ${v} = originalIdx - floor(originalIdx);\n var coefs = getCubicInterpolationCoefs(fractOriginalIdx);\n\n if (${p} && (originalIdx < 0 || originalIdx > (${r[T]} - 1))) {\n return ${m};\n }\n var data: array<${v}, 4> = array<${v}, 4>(0.0, 0.0, 0.0, 0.0);\n for (var i: i32 = -1; i < 3; i++) {\n var ${C}: ${v} = originalIdx + ${v}(i);\n if (${C} < 0 || ${C} >= ${r[T]}) {\n ${(()=>h?`coefs[i + 1] = 0.0;\n continue;`:p?`return ${m};`:`${C} = max(0, min(${C}, ${r[T]} - 1));`)()};\n }\n var input_indices_copy: ${e.type.indices} = input_indices;\n ${e.indicesSet("input_indices_copy",T,`u32(${C})`)};\n data[i + 1] = ${T===w?e.getByIndices("input_indices_copy"):"rowCubicInterpolation(input_indices_copy, output_indices)"};\n }\n return cubicInterpolation1D(data, coefs);\n }`};return`\n ${x(w)};\n ${x(_)};\n fn getCubicInterpolationCoefs(s: ${v}) -> array<${v}, 4> {\n var absS = abs(s);\n var coeffs: array<${v}, 4> = array<${v}, 4>(0.0, 0.0, 0.0, 0.0);\n var oneMinusAbsS: ${v} = 1.0 - absS;\n var twoMinusAbsS: ${v} = 2.0 - absS;\n var onePlusAbsS: ${v} = 1.0 + absS;\n coeffs[0] = ((${a} * onePlusAbsS - 5 * ${a}) * onePlusAbsS + 8 * ${a}) * onePlusAbsS - 4 * ${a};\n coeffs[1] = ((${a} + 2) * absS - (${a} + 3)) * absS * absS + 1;\n coeffs[2] = ((${a} + 2) * oneMinusAbsS - (${a} + 3)) * oneMinusAbsS * oneMinusAbsS + 1;\n coeffs[3] = ((${a} * twoMinusAbsS - 5 * ${a}) * twoMinusAbsS + 8 * ${a}) * twoMinusAbsS - 4 * ${a};\n return coeffs;\n }\n\n fn cubicInterpolation1D(x: array<${v}, 4>, coefs: array<${v}, 4>) -> ${v} {\n var coefsSum: ${v} = coefs[0] + coefs[1] + coefs[2] + coefs[3];\n return (x[0] * coefs[0] + x[1] * coefs[1]+ x[2] * coefs[2]+ x[3] * coefs[3]) / coefsSum;\n }\n\n fn bicubicInterpolation(output_indices: ${t.type.indices}) -> ${v} {\n var input_indices: ${e.type.indices} = output_indices;\n return colCubicInterpolation(input_indices, output_indices);\n }\n `},op=(e,t,r,o,i)=>{let[a,p,m,h,d]=r.length===3?[-1,0,1,2,-1]:[0,2,3,4,1],y=e.type.value;return`\n fn getInputValue(batch: u32, channel: u32, depth:u32, height: u32, width: u32) -> ${y} {\n var input_indices: ${e.type.indices};\n ${e.indicesSet("input_indices",p,`max(0, min(depth, ${r[p]} - 1))`)};\n ${e.indicesSet("input_indices",m,`max(0, min(height, ${r[m]} - 1))`)};\n ${e.indicesSet("input_indices",h,`max(0, min(width, ${r[h]} - 1))`)};\n ${Fu(e,d,a,3)}\n return ${e.getByIndices("input_indices")};\n }\n\n fn trilinearInterpolation(output_indices: ${t.type.indices}) -> ${y} {\n var originalIndices = calculateOriginalIndicesFromOutputIndices(output_indices);\n var depth:${y} = originalIndices[${p}];\n var height:${y} = originalIndices[${m}];\n var width:${y} = originalIndices[${h}];\n ${o?`if (depth < 0 || depth > (${r[p]} - 1) || height < 0 || height > (${r[m]} - 1) || width < 0 || (width > ${r[h]} - 1)) {\n return ${i};\n }`:""};\n\n depth = max(0, min(depth, ${r[p]} - 1));\n height = max(0, min(height, ${r[m]} - 1));\n width = max(0, min(width, ${r[h]} - 1));\n var depth1: u32 = u32(depth);\n var height1: u32 = u32(height);\n var width1: u32 = u32(width);\n var depth2: u32 = u32(depth + 1);\n var height2: u32 = u32(height + 1);\n var width2: u32 = u32(width + 1);\n var channel: u32 = ${r.length>3?`u32(originalIndices[${d}])`:"0"};\n var batch: u32 = ${r.length>3?`u32(originalIndices[${a}])`:"0"};\n\n var x111: ${y} = getInputValue(batch, channel, depth1, height1, width1);\n var x112: ${y} = getInputValue(batch, channel, depth1, height1, width2);\n var x121: ${y} = getInputValue(batch, channel, depth1, height2, width1);\n var x122: ${y} = getInputValue(batch, channel, depth1, height2, width2);\n var x211: ${y} = getInputValue(batch, channel, depth2, height1, width1);\n var x212: ${y} = getInputValue(batch, channel, depth2, height1, width2);\n var x221: ${y} = getInputValue(batch, channel, depth2, height2, width1);\n var x222: ${y} = getInputValue(batch, channel, depth2, height2, width2);\n var dx1: ${y} = abs(depth - ${y}(depth1));\n var dx2: ${y} = abs(${y}(depth2) - depth);\n var dy1: ${y} = abs(height - ${y}(height1));\n var dy2: ${y} = abs(${y}(height2) - height);\n var dz1: ${y} = abs(width - ${y}(width1));\n var dz2: ${y} = abs(${y}(width2) - width);\n if (depth1 == depth2) {\n dx1 = 0.5;\n dx2 = 0.5;\n }\n if (height1 == height2) {\n dy1 = 0.5;\n dy2 = 0.5;\n }\n if (width1 == width2) {\n dz1 = 0.5;\n dz2 = 0.5;\n }\n return (x111 * dx2 * dy2 * dz2 + x112 * dx2 * dy2 * dz1 + x121 * dx2 * dy1 *dz2 + x122 * dx2 * dy1 * dz1 +\n x211 * dx1 * dy2 * dz2 + x212 * dx1 * dy2 * dz1 + x221 * dx1 * dy1 *dz2 + x222 * dx1 * dy1 * dz1);\n }`},ip=(e,t,r,o,i,u)=>{let a=e.dims,p=Zc(u,t.axes,a.length),m=Xc(a,o,i,t.axes),h=o.slice();o.length===0&&(h=a.map((S,E)=>S===0?1:m[E]/S),t.keepAspectRatioPolicy!=="stretch"&&(m=Jc(a,h,t)));let d=J("output",e.dataType,m.length),y=V("input",e.dataType,a.length),w=W.size(m),_=a.length===m.length&&a.every((S,E)=>S===m[E]),v=t.coordinateTransformMode==="tf_crop_and_resize",x=t.extrapolationValue,T=y.type.value,C=S=>`\n ${_?"":`\n ${Kc(t.coordinateTransformMode,T)};\n ${(()=>{switch(t.mode){case"nearest":return`\n ${tp(y,a)};\n ${Yc(t.nearestMode,r,T)};\n ${ep(y,d,a,m,h.length,p.length,v)};\n `;case"linear":return`\n ${Qc(d,a,m,h.length,p.length)};\n ${(()=>{if(a.length===2||a.length===4)return`${rp(y,d,a,v,x)}`;if(a.length===3||a.length===5)return`${op(y,d,a,v,x)}`;throw Error("Linear mode only supports input dims 2, 3, 4 and 5 are supported in linear mode.")})()};\n `;case"cubic":return`\n ${(()=>{if(a.length===2||a.length===4)return`${np(y,d,a,m,h,p,t.cubicCoeffA,v,t.extrapolationValue,t.excludeOutside)}`;throw Error("Cubic mode only supports input dims 2 and 4 are supported in linear mode.")})()};\n `;default:throw Error("Invalid resize mode")}})()};\n `}\n ${S.registerUniform("output_size","u32").registerUniform("scales","f32",h.length).registerUniform("roi","f32",p.length).declareVariables(y,d)}\n ${S.mainStart()}\n ${S.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}\n ${_?"output[global_idx] = input[global_idx];":`\n let output_indices = ${d.offsetToIndices("global_idx")};\n var input_indices: ${y.type.indices};\n ${(()=>{switch(t.mode){case"nearest":return`input_indices = calculateInputIndicesFromOutputIndices(output_indices);\n if (checkInputIndices(input_indices)) {\n output[global_idx] = ${y.getByIndices("input_indices")};\n } else {\n output[global_idx] = ${t.extrapolationValue};\n }`;case"linear":return`output[global_idx] = ${a.length===2||a.length===4?"bilinearInterpolation":"trilinearInterpolation"}(output_indices);`;case"cubic":return"output[global_idx] = bicubicInterpolation(output_indices);";default:throw Error(`Unsupported resize mode: ${t.mode}`)}})()};\n`}\n }`;return{name:"Resize",shaderCache:{hint:`${t.cacheKey}|${r}|${h.length>0?h:""}|${i.length>0?i:""}|${p.length>0?p:""}|${_}|${a}`,inputDependencies:["rank"]},getShaderSource:C,getRunData:()=>({outputs:[{dims:m,dataType:e.dataType}],dispatchGroup:{x:Math.ceil(w/64)},programUniforms:[{type:"uint32",data:w},{type:"float32",data:h},{type:"float32",data:p},...G(a),...G(m)]})}},ap=e=>{let t=e.customDataBuffer;return new Uint32Array(t,t.byteOffset,1)[0]},ju=(e,t)=>{let r=[],o=[],i=[],u=ap(e);if(t.antialias!==0)throw Error("Only default value (0) for Antialias attribute is supported");qc(e.inputs,t,u,r,o,i),e.compute(ip(e.inputs[0],t,u,r,o,i),{inputs:[0]})},qu=e=>{let t=e.antialias,r=e.axes,o=e.coordinateTransformMode,i=e.cubicCoeffA,u=e.excludeOutside!==0,a=e.extrapolationValue,p=e.keepAspectRatioPolicy,m=e.mode,h=e.nearestMode===""?"simple":e.nearestMode;return xe({antialias:t,axes:r,coordinateTransformMode:o,cubicCoeffA:i,excludeOutside:u,extrapolationValue:a,keepAspectRatioPolicy:p,mode:m,nearestMode:h})}});var sp,up,Yu,Zu=Q(()=>{"use strict";Ve();Ce();_e();sp=e=>{if(!e||e.length<3)throw new Error("layerNorm requires at least 3 inputs.");let t=e[0],r=e[1],o=e[2];if(t.dataType!==r.dataType||t.dataType!==o.dataType)throw new Error("All inputs must have the same data type");if(t.dims.length!==3&&t.dims.length!==2)throw new Error("Input must be 2D or 3D");if(r.dims.length!==3&&r.dims.length!==2)throw new Error("Skip must be 2D or 3D");let i=t.dims[t.dims.length-1],u=t.dims[t.dims.length-2];if(r.dims[r.dims.length-1]!==i)throw new Error("Skip must have the same hidden size as input");if(r.dims[r.dims.length-2]!==u)throw new Error("Skip must have the same sequence length as input");if(o.dims.length!==1)throw new Error("Gamma must be 1D");if(o.dims[o.dims.length-1]!==i)throw new Error("Gamma must have the same hidden size as input");if(e.length>3){let a=e[3];if(a.dims.length!==1)throw new Error("Beta must be 1D");if(a.dims[a.dims.length-1]!==i)throw new Error("Beta must have the same hidden size as input")}if(e.length>4){let a=e[4];if(a.dims.length!==1)throw new Error("Bias must be 1D");if(a.dims[a.dims.length-1]!==i)throw new Error("Bias must have the same hidden size as input")}},up=(e,t,r,o)=>{let i=e[0].dims,u=W.size(i),a=i,p=u,m=i.slice(-1)[0],h=o?i.slice(0,-1).concat(1):[],d=e.length>3,y=e.length>4,w=o&&r>1,_=o&&r>2,v=r>3,x=He(m),T=[{type:"uint32",data:p},{type:"uint32",data:x},{type:"uint32",data:m},{type:"float32",data:t.epsilon}],C=E=>{let O=[{name:"output_size",type:"u32"},{name:"components",type:"u32"},{name:"hidden_size",type:"u32"},{name:"epsilon",type:"f32"}],U=[V("x",e[0].dataType,e[0].dims,x),V("skip",e[1].dataType,e[1].dims,x),V("gamma",e[2].dataType,e[2].dims,x)];d&&U.push(V("beta",e[3].dataType,e[3].dims,x)),y&&U.push(V("bias",e[4].dataType,e[4].dims,x)),U.push(J("output",e[0].dataType,a,x)),w&&U.push(J("mean_output",1,h)),_&&U.push(J("inv_std_output",1,h)),v&&U.push(J("input_skip_bias_sum",e[0].dataType,a,x));let M=Ne(e[0].dataType);return`\n\n ${E.registerUniforms(O).declareVariables(...U)}\n\n ${E.mainStart()}\n ${E.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size / uniforms.hidden_size")}\n let hidden_size_vectorized: u32 = uniforms.hidden_size / uniforms.components;\n let offset = global_idx * hidden_size_vectorized;\n var sum = ${Ze("f32",x)};\n var squareSum = ${Ze("f32",x)};\n for (var i: u32 = 0; i < hidden_size_vectorized; i++) {\n let skip_value = skip[offset + i];\n let bias_value = ${y?"bias[i]":"0.0"};\n let input_value = x[offset + i];\n let value = input_value + skip_value + bias_value;\n ${v?"input_skip_bias_sum[offset + i] = value;":""}\n output[offset + i] = value;\n let f32_value = ${gt(M,x,"value")};\n sum += f32_value;\n squareSum += f32_value * f32_value;\n }\n let mean = ${ut("sum",x)} / f32(uniforms.hidden_size);\n let inv_std_dev = inverseSqrt(${ut("squareSum",x)} / f32(uniforms.hidden_size) - mean * mean + uniforms.epsilon);\n ${w?"mean_output[global_idx] = mean;":""}\n ${_?"inv_std_output[global_idx] = inv_std_dev;":""}\n for (var i: u32 = 0; i < hidden_size_vectorized; i++) {\n output[offset + i] = (output[offset + i] - ${M}(mean)) * ${M}(inv_std_dev) * gamma[i] + ${d?"beta[i]":"0.0"};\n }\n }`},S=[{dims:a,dataType:e[0].dataType}];return r>1&&S.push({dims:h,dataType:1}),r>2&&S.push({dims:h,dataType:1}),r>3&&S.push({dims:i,dataType:e[0].dataType}),{name:"SkipLayerNormalization",shaderCache:{hint:`${x};${w};${_};${v}`,inputDependencies:e.map((E,O)=>"type")},getShaderSource:C,getRunData:()=>({outputs:S,dispatchGroup:{x:Math.ceil(p/m/64)},programUniforms:T})}},Yu=(e,t)=>{sp(e.inputs);let o=[0];e.outputCount>1&&o.push(-3),e.outputCount>2&&o.push(-3),e.outputCount>3&&o.push(3),e.compute(up(e.inputs,t,e.outputCount,!1),{outputs:o})}});var lp,Vn,dp,Xu,cp,pp,Ju,Qu,el=Q(()=>{"use strict";Ve();Ce();Ye();_e();lp=(e,t)=>{if(!e||e.length<1)throw new Error("too few inputs");if(t.axes.length!==0){if(t.axes.length!==t.starts.length||t.axes.length!==t.ends.length)throw new Error("axes, starts and ends must have the same length")}else if(t.starts.length!==t.ends.length)throw new Error("starts and ends must have the same length");e.slice(1).forEach((r,o)=>{if(e[o+1].dataType!==6&&e[o+1].dataType!==7)throw new Error(`Input ${o} must be an array of int32 or int64`)})},Vn=(e,t)=>{let r=[];if(e.length>t)if(e[t].dataType===7)e[t].getBigInt64Array().forEach(o=>r.push(Number(o)));else if(e[t].dataType===6)e[t].getInt32Array().forEach(o=>r.push(Number(o)));else throw new Error(`Input ${t} must be an array of int32 or int64`);return r},dp=(e,t)=>{if(e.length>1){let r=Vn(e,1),o=Vn(e,2),i=Vn(e,3);return i.length===0&&(i=[...Array(e[0].dims.length).keys()]),xe({starts:r,ends:o,axes:i})}else return t},Xu=(e,t,r,o,i)=>{let u=e;return e<0&&(u+=r[o[t]]),i[t]<0?Math.max(0,Math.min(u,r[o[t]]-1)):Math.max(0,Math.min(u,r[o[t]]))},cp=(e,t,r)=>`fn calculateInputIndices(output_indices: ${t.type.indices}) -> ${e.type.indices} {\n var input_indices: ${e.type.indices};\n var carry = 0u;\n for (var i = ${r.length}; i >= 0; i--) {\n let input_shape_i = ${ce("uniforms.input_shape","i",r.length)};\n let steps_i = ${ce("uniforms.steps","i",r.length)};\n let signs_i = ${ce("uniforms.signs","i",r.length)};\n let starts_i = ${ce("uniforms.starts","i",r.length)};\n var output_index = ${t.indicesGet("output_indices","i")};\n var input_index = output_index * steps_i + starts_i + carry;\n carry = input_index / input_shape_i;\n input_index = input_index % input_shape_i;\n if (signs_i < 0) {\n input_index = input_shape_i - input_index - 1u + starts_i;\n }\n ${e.indicesSet("input_indices","i","input_index")};\n }\n return input_indices;\n }`,pp=(e,t)=>{let r=e[0].dims,o=W.size(r),i=t.axes.length>0?W.normalizeAxes(t.axes,r.length):[...Array(r.length).keys()],u=Vn(e,4);u.forEach(C=>C!==0||(()=>{throw new Error("step cannot be 0")})),u.length===0&&(u=Array(i.length).fill(1));let a=t.starts.map((C,S)=>Xu(C,S,r,i,u)),p=t.ends.map((C,S)=>Xu(C,S,r,i,u));if(i.length!==a.length||i.length!==p.length)throw new Error("start, ends and axes should have the same number of elements");if(i.length!==r.length)for(let C=0;CMath.sign(C));u.forEach((C,S,E)=>{if(C<0){let O=(p[S]-a[S])/C,U=a[S],M=U+O*u[S];a[S]=M,p[S]=U,E[S]=-C}});let h=r.slice(0);i.forEach((C,S)=>{h[C]=Math.ceil((p[C]-a[C])/u[C])});let d={dims:h,dataType:e[0].dataType},y=J("output",e[0].dataType,h.length),w=V("input",e[0].dataType,e[0].dims.length),_=W.size(h),v=[{name:"outputSize",type:"u32"},{name:"starts",type:"u32",length:a.length},{name:"signs",type:"i32",length:m.length},{name:"steps",type:"u32",length:u.length}],x=[{type:"uint32",data:_},{type:"uint32",data:a},{type:"int32",data:m},{type:"uint32",data:u},...G(e[0].dims),...G(h)],T=C=>`\n ${C.registerUniforms(v).declareVariables(w,y)}\n ${cp(w,y,r)}\n ${C.mainStart()}\n ${C.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n let output_indices = ${y.offsetToIndices("global_idx")};\n let input_indices = calculateInputIndices(output_indices);\n ${y.setByOffset("global_idx",w.getByIndices("input_indices"))}\n }`;return{name:"Slice",shaderCache:{hint:`${m.length}_${a.length}_${u.length}`,inputDependencies:["rank"]},getShaderSource:T,getRunData:()=>({outputs:[d],dispatchGroup:{x:Math.ceil(o/64)},programUniforms:x})}},Ju=(e,t)=>{lp(e.inputs,t);let r=dp(e.inputs,t);e.compute(pp(e.inputs,r),{inputs:[0]})},Qu=e=>{let t=e.starts,r=e.ends,o=e.axes;return xe({starts:t,ends:r,axes:o})}});var mp,fp,tl,rl,nl=Q(()=>{"use strict";Ce();Ye();_e();mp=e=>{if(!e||e.length!==1)throw new Error("Softmax op requires 1 input.")},fp=(e,t)=>{let r=e.dims,o=W.size(r),i=64,u=t.axis;if(u<0&&(u=r.length+u),uC===4?`max(max(${T}.x, ${T}.y), max(${T}.z, ${T}.w))`:C===2?`max(${T}.x, ${T}.y)`:C===3?`max(max(${T}.x, ${T}.y), ${T}.z)`:T,y=V("x",e.dataType,e.dims,m),w=J("result",e.dataType,e.dims,m),_=y.type.value,v=Ne(e.dataType)==="f32"?`var threadMax = ${_}(-3.402823e+38f);`:`var threadMax = ${_}(-65504.0h);`,x=T=>`\n var rowMaxShared : ${_};\n var rowSumShared : ${_};\n var threadShared : array<${_}, ${i}>;\n\n fn getValue(row: i32, col: i32, row_stride: i32) -> ${_} {\n let index = row * row_stride + col;\n return x[index];\n }\n\n fn setValue(row: i32, col: i32, row_stride: i32, value: ${_}) {\n let index = row * row_stride + col;\n result[index] = value;\n }\n ${T.registerUniform("packedCols","i32").declareVariables(y,w)}\n ${T.mainStart()}\n let gindex = i32(global_idx);\n let lindex = i32(local_idx);\n const wg = ${i};\n let row = gindex / wg;\n let cols = uniforms.packedCols;\n let row_stride : i32 = uniforms.packedCols;\n\n // find the rows max\n ${v}\n for (var col = lindex; col < cols; col += wg) {\n let value = getValue(row, col, row_stride);\n threadMax = max(threadMax, value);\n }\n if (lindex < cols) {\n threadShared[lindex] = threadMax;\n }\n workgroupBarrier();\n\n var reduceSize = min(cols, wg);\n for (var currSize = reduceSize >> 1; currSize > 0; currSize = reduceSize >> 1) {\n reduceSize = currSize + (reduceSize & 1);\n if (lindex < currSize) {\n threadShared[lindex] = max(threadShared[lindex], threadShared[lindex + reduceSize]);\n }\n workgroupBarrier();\n }\n if (lindex == 0) {\n rowMaxShared = ${_}(${d("threadShared[0]",m)});\n }\n workgroupBarrier();\n\n // find the rows sum\n var threadSum = ${_}(0.0);\n for (var col = lindex; col < cols; col += wg) {\n let subExp = exp(getValue(row, col, row_stride) - rowMaxShared);\n threadSum += subExp;\n }\n threadShared[lindex] = threadSum;\n workgroupBarrier();\n\n for (var currSize = wg >> 1; currSize > 0; currSize = currSize >> 1) {\n if (lindex < currSize) {\n threadShared[lindex] = threadShared[lindex] + threadShared[lindex + currSize];\n }\n workgroupBarrier();\n }\n if (lindex == 0) {\n rowSumShared = ${_}(${ut("threadShared[0]",m)});\n }\n workgroupBarrier();\n\n // calculate final value for each element in the row\n for (var col = lindex; col < cols; col += wg) {\n let value = exp(getValue(row, col, row_stride) - rowMaxShared) / rowSumShared;\n setValue(row, col, row_stride, value);\n }\n }`;return{name:"Softmax",shaderCache:{hint:`${m}`,inputDependencies:["type"]},getRunData:()=>({outputs:[{dims:r,dataType:e.dataType}],dispatchGroup:{x:p},programUniforms:[{type:"uint32",data:h}]}),getShaderSource:x}},tl=(e,t)=>{mp(e.inputs),e.compute(fp(e.inputs[0],t))},rl=e=>xe({axis:e.axis})});var hp,gp,yp,bp,wp,ol,il,al=Q(()=>{"use strict";Ce();Ye();_e();hp=e=>{if(!e||e.length<1)throw new Error("too few inputs")},gp=(e,t)=>{let r=[],o=t.numOutputs;return e[1].dims[0]>0&&(e[1].getBigInt64Array().forEach(i=>r.push(Number(i))),o=r.length),xe({numOutputs:o,axis:t.axis,splitSizes:r})},yp=e=>`\nfn calculateOutputIndex(index: u32) -> u32 {\n for (var i: u32 = 0u; i < ${e}u; i += 1u ) {\n if (index < ${ce("uniforms.size_in_split_axis","i",e)}) {\n return i;\n }\n }\n return ${e}u;\n}`,bp=e=>{let t=e.length,r=[];for(let o=0;o{let r=e[0].dims,o=W.size(r),i=e[0].dataType,u=W.normalizeAxis(t.axis,r.length),a=new Array(t.numOutputs),p=V("input",i,r),m=new Array(t.numOutputs),h=[],d=[],y=0,w=[{type:"uint32",data:o}];for(let v=0;vw.push(...G(v)));let _=v=>`\n ${v.registerUniform("input_size","u32").registerUniform("size_in_split_axis","u32",m.length).declareVariables(p,...a)}\n ${yp(m.length)}\n ${bp(a)}\n\n ${v.mainStart()}\n ${v.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.input_size")}\n\n var indices = ${p.offsetToIndices("global_idx")};\n var index = ${p.indicesGet("indices",u)};\n let output_number = calculateOutputIndex(index);\n if (output_number != 0) {\n index -= ${ce("uniforms.size_in_split_axis","output_number - 1u",m.length)};\n ${p.indicesSet("indices",u,"index")};\n }\n writeBufferData(output_number, indices, global_idx);\n }`;return{name:"Split",shaderCache:{hint:t.cacheKey,inputDependencies:["rank"]},getShaderSource:_,getRunData:()=>({outputs:h,dispatchGroup:{x:Math.ceil(o/64)},programUniforms:w})}},ol=(e,t)=>{hp(e.inputs);let r=e.inputs.length===1?t:gp(e.inputs,t);e.compute(wp(e.inputs,r),{inputs:[0]})},il=e=>{let t=e.axis,r=e.splitSizes,o=e.numOutputs<0?r.length:e.numOutputs;if(o!==r.length)throw new Error("numOutputs and splitSizes lengh must be equal");return xe({axis:t,numOutputs:o,splitSizes:r})}});var sl,vp,$p,_p,ul,ll=Q(()=>{"use strict";Ve();Ce();_e();sl=e=>Array.from(e.getBigInt64Array(),Number),vp=e=>{if(!e||e.length!==2)throw new Error("Tile requires 2 inputs.");if(e[0].dataType!==1&&e[0].dataType!==6&&e[0].dataType!==12)throw new Error("Tile only support float, int32, and uint32 data types");if(e[1].dataType!==7)throw new Error("Tile `repeats` input should be of int64 data type");if(e[1].dims.length!==1)throw new Error("Tile `repeats` input should be 1-D");if(sl(e[1]).length!==e[0].dims.length)throw new Error("Tile `repeats` input should have same number of elements as rank of input data tensor")},$p=(e,t)=>{let r=[];for(let o=0;o{let t=e[0].dims,r=sl(e[1]),o=$p(t,r),i=W.size(o),u=e[0].dataType,a=V("input",u,t.length),p=J("output",u,o.length),m=h=>`\n const inputShape = ${a.indices(...t)};\n ${h.registerUniform("output_size","u32").declareVariables(a,p)}\n ${h.mainStart()}\n ${h.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}\n let output_indices = ${p.offsetToIndices("global_idx")};\n var input_indices: ${a.type.indices};\n for (var i = 0; i < ${t.length}; i++) {\n let input_dim_i = ${a.indicesGet("uniforms.input_shape","i")};\n let input_dim_value = ${p.indicesGet("output_indices","i")} % input_dim_i;\n\n ${a.indicesSet("input_indices","i","input_dim_value")}\n }\n ${p.setByOffset("global_idx",a.getByIndices("input_indices"))}\n }`;return{name:"Tile",shaderCache:{hint:`${r}`,inputDependencies:["rank"]},getRunData:()=>({outputs:[{dims:o,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(i/64)},programUniforms:[{type:"uint32",data:i},...G(e[0].dims),...G(o)]}),getShaderSource:m}},ul=e=>{vp(e.inputs),e.compute(_p(e.inputs),{inputs:[0]})}});var Sp,xp,dl,cl=Q(()=>{"use strict";Ve();Ce();_e();Sp=(e,t,r,o,i)=>{let u=J("output_data",i,r.length,4),a=V("a_data",t[1].dataType,t[1].dims.length,4),p=V("b_data",t[2].dataType,t[2].dims.length,4),m=V("c_data",t[0].dataType,t[0].dims.length,4),h,d=(y,w,_)=>`select(${w}, ${y}, ${_})`;if(!o)h=u.setByOffset("global_idx",d(a.getByOffset("global_idx"),p.getByOffset("global_idx"),m.getByOffset("global_idx")));else{let y=(w,_,v="")=>{let x=`a_data[index_a${_}][component_a${_}]`,T=`b_data[index_b${_}][component_b${_}]`,C=`bool(c_data[index_c${_}] & ${4278190080>>>(3-_)*8}u)`;return`\n let output_indices${_} = ${u.offsetToIndices(`global_idx * 4u + ${_}u`)};\n let offset_a${_} = ${a.broadcastedIndicesToOffset(`output_indices${_}`,u)};\n let offset_b${_} = ${p.broadcastedIndicesToOffset(`output_indices${_}`,u)};\n let offset_c${_} = ${m.broadcastedIndicesToOffset(`output_indices${_}`,u)};\n let index_a${_} = offset_a${_} / 4u;\n let index_b${_} = offset_b${_} / 4u;\n let index_c${_} = offset_c${_} / 4u;\n let component_a${_} = offset_a${_} % 4u;\n let component_b${_} = offset_b${_} % 4u;\n ${w}[${_}] = ${v}(${d(x,T,C)});\n `};i===9?h=`\n var data = vec4(0);\n ${y("data",0,"u32")}\n ${y("data",1,"u32")}\n ${y("data",2,"u32")}\n ${y("data",3,"u32")}\n output_data[global_idx] = dot(vec4(0x1, 0x100, 0x10000, 0x1000000), vec4(data));`:h=`\n ${y("output_data[global_idx]",0)}\n ${y("output_data[global_idx]",1)}\n ${y("output_data[global_idx]",2)}\n ${y("output_data[global_idx]",3)}\n `}return`\n ${e.registerUniform("vec_size","u32").declareVariables(m,a,p,u)}\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")}\n ${h}\n }`},xp=e=>{let t=e[1].dims,r=e[2].dims,o=e[0].dims,i=e[1].dataType,u=!(W.areEqual(t,r)&&W.areEqual(r,o)),a=t,p=W.size(t);if(u){let h=vt.calcShape(vt.calcShape(t,r,!1),o,!1);if(!h)throw new Error("Can\'t perform where op on the given tensors");a=h,p=W.size(a)}let m=Math.ceil(p/4);return{name:"Where",shaderCache:{inputDependencies:["rank","rank","rank"]},getShaderSource:h=>Sp(h,e,a,u,i),getRunData:()=>({outputs:[{dims:a,dataType:i}],dispatchGroup:{x:Math.ceil(p/64/4)},programUniforms:[{type:"uint32",data:m},...G(o),...G(t),...G(r),...G(a)]})}},dl=e=>{e.compute(xp(e.inputs))}});var pl,ml=Q(()=>{"use strict";Da();xo();Ua();Wa();$s();ks();Ds();Eo();Ys();Js();nu();au();lu();pu();hu();yu();wu();Oo();Su();Cu();Hu();Lu();In();Ku();Zu();el();nl();al();ll();pr();Co();cl();pl=new Map([["Abs",[Na]],["Acos",[Ha]],["Acosh",[Ga]],["Add",[_s]],["ArgMax",[Ba,So]],["ArgMin",[Ra,So]],["Asin",[La]],["Asinh",[Fa]],["Atan",[ja]],["Atanh",[qa]],["Attention",[Ma]],["AveragePool",[Ru,ku]],["BatchNormalization",[za]],["BiasAdd",[Va]],["BiasSplitGelu",[vs]],["Cast",[Ya,Ka]],["Ceil",[Xa]],["Clip",[Za]],["Concat",[Rs,Bs]],["Conv",[Ro,ko]],["ConvTranspose",[Ks,qs]],["Cos",[Ja]],["Cosh",[Qa]],["CumSum",[Zs,Xs]],["Div",[Ss]],["Einsum",[tu,ru]],["Elu",[es,Pn]],["Equal",[xs]],["Erf",[ts]],["Exp",[rs]],["Expand",[iu]],["Floor",[ns]],["FusedConv",[Ro,ko]],["Gather",[uu,su]],["GatherElements",[cu,du]],["Gelu",[os]],["Gemm",[fu,mu]],["GlobalAveragePool",[Mu,Du]],["GlobalMaxPool",[Nu,Wu]],["Greater",[Ts]],["GreaterOrEqual",[Ps]],["HardSigmoid",[ps,cs]],["InstanceNormalization",[gu]],["LayerNormalization",[bu]],["LeakyRelu",[is,Pn]],["Less",[Es]],["LessOrEqual",[Os]],["Log",[ws]],["MatMul",[Ws]],["MaxPool",[Uu,Vu]],["Mul",[Cs]],["MultiHeadAttention",[_u,$u]],["Neg",[ss]],["Not",[as]],["Pad",[xu]],["Pow",[As]],["Range",[Gu]],["Reciprocal",[us]],["ReduceMin",[Ia]],["ReduceMean",[_a]],["ReduceMax",[Aa]],["ReduceSum",[Ea]],["ReduceProd",[Ta]],["ReduceL1",[Sa]],["ReduceL2",[xa]],["ReduceLogSum",[Oa]],["ReduceLogSumExp",[Ca]],["ReduceSumSquare",[Pa]],["Relu",[ls]],["Resize",[ju,qu]],["Sigmoid",[ds]],["Sin",[ms]],["Sinh",[fs]],["Slice",[Ju,Qu]],["SkipLayerNormalization",[Yu]],["Split",[ol,il]],["Sqrt",[hs]],["Softmax",[tl,rl]],["Sub",[Is]],["Tan",[gs]],["Tanh",[ys]],["ThresholdedRelu",[bs,Pn]],["Tile",[ul]],["Transpose",[la,da]],["Where",[dl]]])});var Wn,fl=Q(()=>{"use strict";dr();zt();_e();Wn=class{constructor(t){this.backend=t;this.repo=new Map,this.attributesBound=!1}getArtifact(t){return this.repo.get(t)}setArtifact(t,r){this.repo.set(t,r)}run(t,r,o,i,u){Yt(t.programInfo.name);let a=this.backend.device,p=this.backend.getComputePassEncoder();this.backend.writeTimestamp(this.backend.pendingDispatchNumber*2),p.setPipeline(t.computePipeline);let m=[];for(let d of r)m.push({binding:m.length,resource:{buffer:d.buffer}});for(let d of o)m.push({binding:m.length,resource:{buffer:d.buffer}});u&&m.push({binding:m.length,resource:u});let h=a.createBindGroup({layout:t.computePipeline.getBindGroupLayout(0),entries:m,label:t.programInfo.name});p.setBindGroup(0,h),p.dispatchWorkgroups(...i),this.backend.writeTimestamp(this.backend.pendingDispatchNumber*2+1),this.backend.pendingDispatchNumber++,(this.backend.pendingDispatchNumber>=this.backend.maxDispatchNumber||this.backend.queryType==="at-passes")&&this.backend.endComputePass(),this.backend.pendingDispatchNumber>=this.backend.maxDispatchNumber&&this.backend.flush(),Zt(t.programInfo.name)}dispose(){}build(t,r){Yt(t.name);let o=this.backend.device,i=[];o.features.has("shader-f16")&&i.push("enable f16;");let u=sa(r),a=t.getShaderSource(u),p=`${i.join(`\n`)}\n${u.additionalImplementations}\n${a}`,m=o.createShaderModule({code:p,label:t.name});De("verbose",()=>`[WebGPU] ${t.name} shader code: ${p}`);let h=o.createComputePipeline({compute:{module:m,entryPoint:"main"},layout:"auto",label:t.name});return Zt(t.name),{programInfo:t,computePipeline:h}}normalizeDispatchGroupSize(t){let r=typeof t=="number"?t:t.x,o=typeof t=="number"?1:t.y||1,i=typeof t=="number"?1:t.z||1,u=this.backend.device.limits.maxComputeWorkgroupsPerDimension;if(r<=u&&o<=u&&i<=u)return[r,o,i];let a=r*o*i,p=Math.ceil(Math.sqrt(a));if(p>u){if(p=Math.ceil(Math.cbrt(a)),p>u)throw new Error("Total dispatch size exceeds WebGPU maximum.");return[p,p,p]}else return[p,p,1]}}});var Cp,Ap,Nn,hl=Q(()=>{"use strict";dr();Ve();zt();ra();aa();ml();fl();Cp=(e,t)=>{if(t.length!==e.length)throw new Error(`inputDependencies length ${t.length} is not equal to inputTensors length ${e.length}.`);let r=[];for(let o=0;o{let o=e.name;return e.shaderCache?.hint&&(o+="["+e.shaderCache.hint+"]"),o+=":"+r+`:${Cp(t,e.shaderCache?.inputDependencies??new Array(t.length).fill("dims"))}`,o},Nn=class{constructor(){this.currentKernelId=null;this.commandEncoder=null;this.computePassEncoder=null;this.maxDispatchNumber=16;this.pendingDispatchNumber=0;this.pendingKernels=[];this.pendingQueries=new Map;this.sessionExternalDataMapping=new Map}get currentKernelCustomData(){if(this.currentKernelId===null)throw new Error("currentKernelCustomData(): currentKernelId is null. (should not happen)");let t=this.kernelCustomData.get(this.currentKernelId);return t||(t={},this.kernelCustomData.set(this.currentKernelId,t)),t}async initialize(t,r){this.env=t;let o=[],i={requiredLimits:{maxComputeWorkgroupStorageSize:r.limits.maxComputeWorkgroupStorageSize,maxComputeWorkgroupsPerDimension:r.limits.maxComputeWorkgroupsPerDimension,maxStorageBufferBindingSize:r.limits.maxStorageBufferBindingSize,maxBufferSize:r.limits.maxBufferSize,maxComputeInvocationsPerWorkgroup:r.limits.maxComputeInvocationsPerWorkgroup,maxComputeWorkgroupSizeX:r.limits.maxComputeWorkgroupSizeX,maxComputeWorkgroupSizeY:r.limits.maxComputeWorkgroupSizeY,maxComputeWorkgroupSizeZ:r.limits.maxComputeWorkgroupSizeZ},requiredFeatures:o};r.features.has("chromium-experimental-timestamp-query-inside-passes")?o.push("chromium-experimental-timestamp-query-inside-passes"):r.features.has("timestamp-query")&&o.push("timestamp-query"),r.features.has("shader-f16")&&o.push("shader-f16"),this.device=await r.requestDevice(i),this.gpuDataManager=ia(this),this.programManager=new Wn(this),this.kernels=new Map,this.kernelPersistentData=new Map,this.kernelCustomData=new Map,ea(t.logLevel,!!t.debug),this.device.onuncapturederror=u=>{u.error instanceof GPUValidationError&&console.error(`An uncaught WebGPU validation error was raised: ${u.error.message}`)},Object.defineProperty(this.env.webgpu,"device",{value:this.device}),this.setQueryType()}dispose(){typeof this.querySet<"u"&&this.querySet.destroy(),this.gpuDataManager.dispose()}getCommandEncoder(){return this.commandEncoder||(this.commandEncoder=this.device.createCommandEncoder()),this.commandEncoder}getComputePassEncoder(){if(!this.computePassEncoder){let t={};this.queryType==="at-passes"&&(t.timestampWrites={querySet:this.querySet,beginningOfPassWriteIndex:this.pendingDispatchNumber*2,endOfPassWriteIndex:this.pendingDispatchNumber*2+1}),this.computePassEncoder=this.getCommandEncoder().beginComputePass(t)}return this.computePassEncoder}endComputePass(){this.computePassEncoder&&(this.computePassEncoder.end(),this.computePassEncoder=null)}flush(){if(!this.commandEncoder)return;Yt(),this.endComputePass();let t;this.queryType!=="none"&&(this.commandEncoder.resolveQuerySet(this.querySet,0,this.pendingDispatchNumber*2,this.queryResolveBuffer,0),t=this.device.createBuffer({size:this.pendingDispatchNumber*2*8,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST}),this.pendingQueries.set(t,this.pendingKernels),this.pendingKernels=[],this.commandEncoder.copyBufferToBuffer(this.queryResolveBuffer,0,t,0,this.pendingDispatchNumber*2*8)),this.device.queue.submit([this.commandEncoder.finish()]),this.gpuDataManager.refreshPendingBuffers(),this.commandEncoder=null,this.pendingDispatchNumber=0,this.queryType!=="none"&&t.mapAsync(GPUMapMode.READ).then(()=>{let r=new BigUint64Array(t.getMappedRange()),o=this.pendingQueries.get(t);for(let i=0;i"u"&&(this.queryTimeBase=_);let x=Number(_-this.queryTimeBase),T=Number(v-this.queryTimeBase);if(!Number.isSafeInteger(x)||!Number.isSafeInteger(T))throw new RangeError("incorrect timestamp range");if(this.env.webgpu.profiling?.ondata)this.env.webgpu.profiling.ondata({version:1,inputsMetadata:y.map(C=>({dims:C.dims,dataType:st(C.dataType)})),outputsMetadata:w.map(C=>({dims:C.dims,dataType:st(C.dataType)})),kernelId:a,kernelType:m,kernelName:h,programName:d,startTime:x,endTime:T});else{let C="";y.forEach((E,O)=>{C+=`input[${O}]: [${E.dims}] | ${st(E.dataType)}, `});let S="";w.forEach((E,O)=>{S+=`output[${O}]: [${E.dims}] | ${st(E.dataType)}, `}),console.log(`[profiling] kernel "${a}|${m}|${h}|${d}" ${C}${S}execution time: ${T-x} ns`)}mo("GPU",`${d}::${_}::${v}`)}t.unmap(),this.pendingQueries.delete(t)}),Zt()}run(t,r,o,i,u){Yt(t.name);let a=[];for(let S=0;SE):o;if(d.length!==p.length)throw new Error(`Output size ${d.length} must be equal to ${p.length}.`);let y=[],w=[];for(let S=0;S=p.length)throw new Error(`Invalid output index: ${d[S]}`);if(d[S]===-3)continue;let E=d[S]===-1,O=d[S]===-2,U=E||O?u(p[S].dataType,p[S].dims):i(d[S],p[S].dataType,p[S].dims),M=this.gpuDataManager.get(U.data);if(!M)throw new Error(`no GPU data for output: ${U.data}`);if(E&&this.temporaryData.push(M),O){let N=this.kernelPersistentData.get(this.currentKernelId);N||(N=[],this.kernelPersistentData.set(this.currentKernelId,N)),N.push(M)}y.push(U),w.push(M)}let _;if(h){let S=0,E=[];h.forEach(N=>{let Y=typeof N.data=="number"?[N.data]:N.data;if(Y.length===0)return;let se=N.type==="float16"?2:4,B,te;N.type==="float16"?(te=Y.length>4?16:Y.length>2?8:Y.length*se,B=Y.length>4?16:se*Y.length):(te=Y.length<=2?Y.length*se:16,B=16),S=Math.ceil(S/te)*te,E.push(S);let Pe=N.type==="float16"?8:4;S+=Y.length>4?Math.ceil(Y.length/Pe)*B:Y.length*se});let O=16;S=Math.ceil(S/O)*O;let U=new ArrayBuffer(S);h.forEach((N,Y)=>{let se=E[Y],B=typeof N.data=="number"?[N.data]:N.data;N.type==="int32"?new Int32Array(U,se,B.length).set(B):N.type==="uint32"?new Uint32Array(U,se,B.length).set(B):N.type==="float16"?new Uint16Array(U,se,B.length).set(B):new Float32Array(U,se,B.length).set(B)});let M=this.gpuDataManager.create(S,GPUBufferUsage.COPY_DST|GPUBufferUsage.UNIFORM);this.device.queue.writeBuffer(M.buffer,0,U,0,S),this.gpuDataManager.release(M.id),_={offset:0,size:S,buffer:M.buffer}}let v=this.programManager.normalizeDispatchGroupSize(m),x=v[1]===1&&v[2]===1,T=Ap(t,r,x),C=this.programManager.getArtifact(T);if(C||(C=this.programManager.build(t,v),this.programManager.setArtifact(T,C),De("info",()=>`[artifact] key: ${T}, programName: ${t.name}`)),De("info",()=>`[ProgramManager] run "${t.name}" (key=${T}) with ${v[0]}x${v[1]}x${v[2]}`),this.queryType!=="none"){let S={kernelId:this.currentKernelId,programName:C.programInfo.name,inputTensorViews:r,outputTensorViews:y};this.pendingKernels.push(S)}return this.programManager.run(C,a,w,v,_),Zt(t.name),y}upload(t,r){this.gpuDataManager.upload(t,r)}memcpy(t,r){this.gpuDataManager.memcpy(t,r)}async download(t,r){await this.gpuDataManager.download(t,r)}alloc(t){return this.gpuDataManager.create(t).id}free(t){return this.gpuDataManager.release(t)}createKernel(t,r,o,i){let u=pl.get(t);if(!u)throw new Error(`kernel not implemented: ${t}`);let a={kernelType:t,kernelName:i,kernelEntry:u[0],attributes:[u[1],o]};this.kernels.set(r,a)}releaseKernel(t){let r=this.kernelPersistentData.get(t);if(r){for(let o of r)this.gpuDataManager.release(o.id);this.kernelPersistentData.delete(t)}this.kernelCustomData.delete(t),this.kernels.delete(t)}computeKernel(t,r,o){let i=this.kernels.get(t);if(!i)throw new Error(`kernel not created: ${t}`);let u=i.kernelType,a=i.kernelName,p=i.kernelEntry,m=i.attributes;if(this.currentKernelId!==null)throw new Error(`kernel "[${u}] ${a}" is not allowed to be called recursively`);this.currentKernelId=t,m[0]&&(m[1]=m[0](m[1]),m[0]=void 0),De("info",()=>`[WebGPU] Start to run kernel "[${u}] ${a}"...`);let h=this.env.debug;this.temporaryData=[];try{return h&&this.device.pushErrorScope("validation"),p(r,m[1]),0}catch(d){return o.push(Promise.resolve(`[WebGPU] Kernel "[${u}] ${a}" failed. ${d}`)),1}finally{h&&o.push(this.device.popErrorScope().then(d=>d?`GPU validation error for kernel "[${u}] ${a}": ${d.message}`:null));for(let d of this.temporaryData)this.gpuDataManager.release(d.id);this.temporaryData=[],this.currentKernelId=null}}registerBuffer(t,r,o,i){let u=this.sessionExternalDataMapping.get(t);u||(u=new Map,this.sessionExternalDataMapping.set(t,u));let a=u.get(r),p=this.gpuDataManager.registerExternalBuffer(o,i,a?.[1]);return u.set(r,[p,o]),p}unregisterBuffers(t){let r=this.sessionExternalDataMapping.get(t);r&&(r.forEach(o=>this.gpuDataManager.unregisterExternalBuffer(o[1])),this.sessionExternalDataMapping.delete(t))}getBuffer(t){let r=this.gpuDataManager.get(t);if(!r)throw new Error(`no GPU data for buffer: ${t}`);return r.buffer}createDownloader(t,r,o){return async()=>{let i=await go(this,t,r);return ta(i.buffer,o)}}writeTimestamp(t){this.queryType==="inside-passes"&&this.computePassEncoder.writeTimestamp(this.querySet,t)}setQueryType(){this.queryType="none",(this.env.webgpu.profiling?.mode==="default"||this.env.wasm.trace)&&(this.device.features.has("chromium-experimental-timestamp-query-inside-passes")?this.queryType="inside-passes":this.device.features.has("timestamp-query")&&(this.queryType="at-passes"),this.queryType!=="none"&&typeof this.querySet>"u"&&(this.querySet=this.device.createQuerySet({type:"timestamp",count:this.maxDispatchNumber*2}),this.queryResolveBuffer=this.device.createBuffer({size:this.maxDispatchNumber*2*8,usage:GPUBufferUsage.COPY_SRC|GPUBufferUsage.QUERY_RESOLVE})))}onRunStart(){this.setQueryType()}}});var gl={};hn(gl,{init:()=>Ip});var Nr,Vo,Ip,yl=Q(()=>{"use strict";Ve();hl();zt();Ce();Nr=class e{constructor(t,r,o,i){this.module=t;this.dataType=r;this.data=o;this.dims=i}getFloat32Array(){if(this.dataType!==1)throw new Error("Invalid data type");let t=W.size(this.dims);return t===0?new Float32Array:new Float32Array(this.module.HEAP8.buffer,this.data,t)}getBigInt64Array(){if(this.dataType!==7)throw new Error("Invalid data type");let t=W.size(this.dims);return t===0?new BigInt64Array:new BigInt64Array(this.module.HEAP8.buffer,this.data,t)}getInt32Array(){if(this.dataType!==6)throw new Error("Invalid data type");let t=W.size(this.dims);return t===0?new Int32Array:new Int32Array(this.module.HEAP8.buffer,this.data,t)}reshape(t){if(W.size(t)!==W.size(this.dims))throw new Error("Invalid new shape");return new e(this.module,this.dataType,this.data,t)}},Vo=class{constructor(t,r,o){this.module=t;this.backend=r;this.customDataOffset=0;this.customDataSize=0;let i=t.HEAPU32,u=o>>>2;this.opKernelContext=i[u++];let a=i[u++];this.outputCount=i[u++],this.customDataOffset=i[u++],this.customDataSize=i[u++];let p=[];for(let m=0;mtypeof p=="number"?this.inputs[p]:p)??this.inputs,i=r?.outputs??[],u=(p,m,h)=>new Nr(this.module,m,this.output(p,h),h),a=(p,m)=>{let h=Mr(p);if(!h)throw new Error(`Unsupported data type: ${p}`);let d=h*W.size(m);return new Nr(this.module,p,this.backend.gpuDataManager.create(d).id,m)};return this.backend.run(t,o,i,u,a)}output(t,r){let o=this.module.stackSave();try{let i=this.module.stackAlloc((1+r.length)*4),u=i>>2;this.module.HEAPU32[u++]=r.length;for(let a=0;a{let o=e.jsepInit;if(!o)throw new Error("Failed to initialize JSEP. The WebAssembly module is not built with JSEP support.");let i=new Nn;await i.initialize(t,r),o(i,u=>i.alloc(u),u=>i.free(u),(u,a,p,m=!1)=>{if(m)De("verbose",()=>`[WebGPU] jsepCopyGpuToGpu: src=${u}, dst=${a}, size=${p}`),i.memcpy(u,a);else{De("verbose",()=>`[WebGPU] jsepCopyCpuToGpu: dataOffset=${u}, gpuDataId=${a}, size=${p}`);let h=e.HEAPU8.subarray(u>>>0,(u>>>0)+p);i.upload(a,h)}},async(u,a,p)=>{De("verbose",()=>`[WebGPU] jsepCopyGpuToCpu: gpuDataId=${u}, dataOffset=${a}, size=${p}`),await i.download(u,()=>e.HEAPU8.subarray(a>>>0,(a>>>0)+p))},(u,a,p)=>i.createKernel(u,a,p,e.UTF8ToString(e._JsepGetNodeName(a))),u=>i.releaseKernel(u),(u,a,p,m)=>{De("verbose",()=>`[WebGPU] jsepRun: sessionHandle=${p}, kernel=${u}, contextDataOffset=${a}`);let h=new Vo(e,i,a);return i.computeKernel(u,h,m)})}});var Pi;Pi=vi();var Nl=Ii(),so,uo=!1,gn=!1,Ei=!1,Hl=e=>{if(e===1)return!1;if(typeof SharedArrayBuffer>"u")return typeof self<"u"&&!self.crossOriginIsolated&&console.warn("env.wasm.numThreads is set to "+e+", but this will not work unless you enable crossOriginIsolated mode. See https://web.dev/cross-origin-isolation-guide/ for more info."),!1;typeof process<"u"&&process.versions&&process.versions.node&&console.warn("env.wasm.numThreads is set to "+e+", however, currently onnxruntime-web does not support multi-threads in Node.js. Please consider using onnxruntime-node for performance critical scenarios.");try{return typeof MessageChannel<"u"&&new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch{return!1}},Gl=()=>{try{return WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,30,1,28,0,65,0,253,15,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,186,1,26,11]))}catch{return!1}},Ll=(e,t)=>e?t?"ort-wasm-simd-threaded.wasm":"ort-wasm-simd.wasm":t?"ort-wasm-threaded.wasm":"ort-wasm.wasm",Oi=async e=>{if(uo)return Promise.resolve();if(gn)throw new Error("multiple calls to \'initializeWebAssembly()\' detected.");if(Ei)throw new Error("previous call to \'initializeWebAssembly()\' failed.");gn=!0;let t=e.initTimeout,r=e.numThreads,o=e.simd,i=Hl(r),u=o&&Gl(),a=e.wasmPaths,p=typeof a=="string"?a:void 0,m=Ll(u,i),h=typeof a=="object"?a[m]:void 0,d=!1,y=[];if(t>0&&y.push(new Promise(w=>{setTimeout(()=>{d=!0,w()},t)})),y.push(new Promise((w,_)=>{let v=i?Nl:Pi,x={locateFile:(T,C)=>{if(i&&T.endsWith(".worker.js")&&typeof Blob<"u")return URL.createObjectURL(new Blob([Ti()],{type:"text/javascript"}));if(T.endsWith(".wasm")){if(h)return h;let S=p??C;return m==="ort-wasm-simd.wasm"?S+"ort-wasm-simd.jsep.wasm":m==="ort-wasm-simd-threaded.wasm"?S+"ort-wasm-simd-threaded.jsep.wasm":S+m}return C+T}};if(i)if(x.numThreads=r,typeof Blob>"u")x.mainScriptUrlOrBlob=(void 0)(__dirname,"ort-wasm-threaded.js");else{let T=`var ortWasmThreaded=${v.toString()};`;x.mainScriptUrlOrBlob=new Blob([T],{type:"text/javascript"})}v(x).then(T=>{gn=!1,uo=!0,so=T,w()},T=>{gn=!1,Ei=!0,_(T)})})),await Promise.race(y),d)throw new Error(`WebAssembly backend initializing failed due to timeout: ${t}ms`)},Ue=()=>{if(uo&&so)return so;throw new Error("WebAssembly is not initialized yet.")};var We=(e,t)=>{let r=Ue(),o=r.lengthBytesUTF8(e)+1,i=r._malloc(o);return r.stringToUTF8(e,i,o),t.push(i),i},Dr=(e,t,r,o)=>{if(typeof e=="object"&&e!==null){if(r.has(e))throw new Error("Circular reference in options");r.add(e)}Object.entries(e).forEach(([i,u])=>{let a=t?t+i:i;if(typeof u=="object")Dr(u,a+".",r,o);else if(typeof u=="string"||typeof u=="number")o(a,u.toString());else if(typeof u=="boolean")o(a,u?"1":"0");else throw new Error(`Can\'t handle extra config type: ${typeof u}`)})},Be=e=>{let t=Ue(),r=t.stackSave();try{let o=t.stackAlloc(8);t._OrtGetLastError(o,o+4);let i=t.HEAP32[o/4],u=t.HEAPU32[o/4+1],a=u?t.UTF8ToString(u):"";throw new Error(`${e} ERROR_CODE: ${i}, ERROR_MESSAGE: ${a}`)}finally{t.stackRestore(r)}};var ki=e=>{let t=Ue(),r=0,o=[],i=e||{};try{if(e?.logSeverityLevel===void 0)i.logSeverityLevel=2;else if(typeof e.logSeverityLevel!="number"||!Number.isInteger(e.logSeverityLevel)||e.logSeverityLevel<0||e.logSeverityLevel>4)throw new Error(`log serverity level is not valid: ${e.logSeverityLevel}`);if(e?.logVerbosityLevel===void 0)i.logVerbosityLevel=0;else if(typeof e.logVerbosityLevel!="number"||!Number.isInteger(e.logVerbosityLevel))throw new Error(`log verbosity level is not valid: ${e.logVerbosityLevel}`);e?.terminate===void 0&&(i.terminate=!1);let u=0;return e?.tag!==void 0&&(u=We(e.tag,o)),r=t._OrtCreateRunOptions(i.logSeverityLevel,i.logVerbosityLevel,!!i.terminate,u),r===0&&Be("Can\'t create run options."),e?.extra!==void 0&&Dr(e.extra,"",new WeakSet,(a,p)=>{let m=We(a,o),h=We(p,o);t._OrtAddRunConfigEntry(r,m,h)!==0&&Be(`Can\'t set a run config entry: ${a} - ${p}.`)}),[r,o]}catch(u){throw r!==0&&t._OrtReleaseRunOptions(r),o.forEach(a=>t._free(a)),u}};var Fl=e=>{switch(e){case"disabled":return 0;case"basic":return 1;case"extended":return 2;case"all":return 99;default:throw new Error(`unsupported graph optimization level: ${e}`)}},jl=e=>{switch(e){case"sequential":return 0;case"parallel":return 1;default:throw new Error(`unsupported execution mode: ${e}`)}},ql=e=>{e.extra||(e.extra={}),e.extra.session||(e.extra.session={});let t=e.extra.session;t.use_ort_model_bytes_directly||(t.use_ort_model_bytes_directly="1"),e.executionProviders&&e.executionProviders.some(r=>(typeof r=="string"?r:r.name)==="webgpu")&&(e.enableMemPattern=!1)},Kl=(e,t,r)=>{for(let o of t){let i=typeof o=="string"?o:o.name;switch(i){case"webnn":if(i="WEBNN",typeof o!="string"){let a=o;if(a?.deviceType){let p=We("deviceType",r),m=We(a.deviceType,r);Ue()._OrtAddSessionConfigEntry(e,p,m)!==0&&Be(`Can\'t set a session config entry: \'deviceType\' - ${a.deviceType}.`)}if(a?.numThreads){let p=a.numThreads;(typeof p!="number"||!Number.isInteger(p)||p<0)&&(p=0);let m=We("numThreads",r),h=We(p.toString(),r);Ue()._OrtAddSessionConfigEntry(e,m,h)!==0&&Be(`Can\'t set a session config entry: \'numThreads\' - ${a.numThreads}.`)}if(a?.powerPreference){let p=We("powerPreference",r),m=We(a.powerPreference,r);Ue()._OrtAddSessionConfigEntry(e,p,m)!==0&&Be(`Can\'t set a session config entry: \'powerPreference\' - ${a.powerPreference}.`)}}break;case"webgpu":if(i="JS",typeof o!="string"){let a=o;if(a?.preferredLayout){if(a.preferredLayout!=="NCHW"&&a.preferredLayout!=="NHWC")throw new Error(`preferredLayout must be either \'NCHW\' or \'NHWC\': ${a.preferredLayout}`);let p=We("preferredLayout",r),m=We(a.preferredLayout,r);Ue()._OrtAddSessionConfigEntry(e,p,m)!==0&&Be(`Can\'t set a session config entry: \'preferredLayout\' - ${a.preferredLayout}.`)}}break;case"wasm":case"cpu":continue;default:throw new Error(`not supported execution provider: ${i}`)}let u=We(i,r);Ue()._OrtAppendExecutionProvider(e,u)!==0&&Be(`Can\'t append execution provider: ${i}.`)}},Ri=e=>{let t=Ue(),r=0,o=[],i=e||{};ql(i);try{let u=Fl(i.graphOptimizationLevel??"all"),a=jl(i.executionMode??"sequential"),p=typeof i.logId=="string"?We(i.logId,o):0,m=i.logSeverityLevel??2;if(!Number.isInteger(m)||m<0||m>4)throw new Error(`log serverity level is not valid: ${m}`);let h=i.logVerbosityLevel??0;if(!Number.isInteger(h)||h<0||h>4)throw new Error(`log verbosity level is not valid: ${h}`);let d=typeof i.optimizedModelFilePath=="string"?We(i.optimizedModelFilePath,o):0;if(r=t._OrtCreateSessionOptions(u,!!i.enableCpuMemArena,!!i.enableMemPattern,a,!!i.enableProfiling,0,p,m,h,d),r===0&&Be("Can\'t create session options."),i.executionProviders&&Kl(r,i.executionProviders,o),i.freeDimensionOverrides)for(let[y,w]of Object.entries(i.freeDimensionOverrides)){if(typeof y!="string")throw new Error(`free dimension override name must be a string: ${y}`);if(typeof w!="number"||!Number.isInteger(w)||w<0)throw new Error(`free dimension override value must be a non-negative integer: ${w}`);let _=We(y,o);t._OrtAddFreeDimensionOverride(r,_,w)!==0&&Be(`Can\'t set a free dimension override: ${y} - ${w}.`)}return i.extra!==void 0&&Dr(i.extra,"",new WeakSet,(y,w)=>{let _=We(y,o),v=We(w,o);t._OrtAddSessionConfigEntry(r,_,v)!==0&&Be(`Can\'t set a session config entry: ${y} - ${w}.`)}),[r,o]}catch(u){throw r!==0&&t._OrtReleaseSessionOptions(r),o.forEach(a=>t._free(a)),u}};Ve();var Di=async e=>{if(typeof e=="string")if(typeof process<"u"&&process.versions&&process.versions.node)try{return new Uint8Array(await(void 0)(e))}catch(t){if(t.code==="ERR_FS_FILE_TOO_LARGE"){let r=(void 0)(e),o=[];for await(let i of r)o.push(i);return new Uint8Array(Buffer.concat(o))}throw t}else{let t=await fetch(e);if(!t.ok)throw new Error(`failed to load external data file: ${e}`);let r=t.headers.get("Content-Length"),o=r?parseInt(r,10):0;if(o<1073741824)return new Uint8Array(await t.arrayBuffer());{if(!t.body)throw new Error(`failed to load external data file: ${e}, no response body.`);let i=t.body.getReader(),u;try{u=new ArrayBuffer(o)}catch(p){if(p instanceof RangeError){let m=Math.ceil(o/65536);u=new WebAssembly.Memory({initial:m,maximum:m}).buffer}else throw p}let a=0;for(;;){let{done:p,value:m}=await i.read();if(p)break;let h=m.byteLength;new Uint8Array(u,a,h).set(m),a+=h}return new Uint8Array(u,0,o)}}else return e instanceof Blob?new Uint8Array(await e.arrayBuffer()):e instanceof Uint8Array?e:new Uint8Array(e)};var Tp=(e,t)=>{Ue()._OrtInit(e,t)!==0&&Be("Can\'t initialize onnxruntime.")},wl=async e=>{Tp(e.wasm.numThreads,zr(e.logLevel))},vl=async(e,t)=>{if(t==="webgpu"||t==="webnn"){if(typeof navigator>"u"||!navigator.gpu)throw new Error("WebGPU is not supported in current environment");let r=await navigator.gpu.requestAdapter();if(!r)throw new Error(\'Failed to get GPU adapter. You may need to enable flag "--enable-unsafe-webgpu" if you are using Chrome.\');if(!e.wasm.simd)throw new Error("Not supported for WebGPU=ON and SIMD=OFF. Please set `env.wasm.simd` to true when using `webgpu` EP");let o=(yl(),ur(gl)).init;await o(Ue(),e,r)}},Hr=new Map,Ep=e=>{let t=Ue(),r=t.stackSave();try{let o=t.stackAlloc(8);return t._OrtGetInputOutputCount(e,o,o+4)!==0&&Be("Can\'t get session input/output count."),[t.HEAP32[o/4],t.HEAP32[o/4+1]]}finally{t.stackRestore(r)}},Wo=e=>{let t=Ue(),r=t._malloc(e.byteLength);if(r===0)throw new Error(`Can\'t create a session. failed to allocate a buffer of size ${e.byteLength}.`);return t.HEAPU8.set(e,r),[r,e.byteLength]},$l=async(e,t)=>{let r,o,i=Ue();Array.isArray(e)?[r,o]=e:e.buffer===i.HEAPU8.buffer?[r,o]=[e.byteOffset,e.byteLength]:[r,o]=Wo(e);let u=0,a=0,p=0,m=[],h=[],d=[];try{if([a,m]=Ri(t),t?.externalData&&i.mountExternalData){let C=[];for(let S of t.externalData){let E=typeof S=="string"?S:S.path;C.push(Di(typeof S=="string"?S:S.data).then(O=>{i.mountExternalData(E,O)}))}await Promise.all(C)}u=await i._OrtCreateSession(r,o,a),u===0&&Be("Can\'t create a session.");let[y,w]=Ep(u),_=[],v=[],x=[];for(let C=0;CC==="gpu-buffer")&&(p=i._OrtCreateBinding(u),p===0&&Be("Can\'t create IO binding."),T={handle:p,outputPreferredLocations:x,outputPreferredLocationsEncoded:x.map(C=>co(C))}),Hr.set(u,[u,h,d,T]),[u,_,v]}catch(y){throw h.forEach(w=>i._OrtFree(w)),d.forEach(w=>i._OrtFree(w)),p!==0&&i._OrtReleaseBinding(p),u!==0&&i._OrtReleaseSession(u),y}finally{i._free(r),a!==0&&i._OrtReleaseSessionOptions(a),m.forEach(y=>i._free(y)),i.unmountExternalData?.()}},_l=e=>{let t=Ue(),r=Hr.get(e);if(!r)throw new Error(`cannot release session. invalid session id: ${e}`);let[o,i,u,a]=r;a&&t._OrtReleaseBinding(a.handle),t.jsepUnregisterBuffers?.(e),i.forEach(p=>t._OrtFree(p)),u.forEach(p=>t._OrtFree(p)),t._OrtReleaseSession(o),Hr.delete(e)},bl=(e,t,r,o,i)=>{if(!e){t.push(0);return}let u=Ue(),a=e[0],p=e[1],m=e[3],h,d;if(a==="string"&&m==="gpu-buffer")throw new Error("String tensor is not supported on GPU.");if(m==="gpu-buffer"){let _=e[2].gpuBuffer,v=Mr(lo(a));d=p.reduce((x,T)=>x*T,1)*v,h=u.jsepRegisterBuffer(o,i,_,d)}else{let _=e[2];if(Array.isArray(_)){d=4*_.length,h=u._malloc(d),r.push(h);let v=h/4;for(let x=0;x<_.length;x++){if(typeof _[x]!="string")throw new TypeError(`tensor data at index ${x} is not a string`);u.HEAPU32[v++]=We(_[x],r)}}else d=_.byteLength,h=u._malloc(d),r.push(h),u.HEAPU8.set(new Uint8Array(_.buffer,_.byteOffset,d),h)}let y=u.stackSave(),w=u.stackAlloc(4*p.length);try{let _=w/4;p.forEach(x=>u.HEAP32[_++]=x);let v=u._OrtCreateTensor(lo(a),h,d,w,p.length,co(m));v===0&&Be(`Can\'t create tensor for input/output. session=${o}, index=${i}.`),t.push(v)}finally{u.stackRestore(y)}},Sl=async(e,t,r,o,i,u)=>{let a=Ue(),p=Hr.get(e);if(!p)throw new Error(`cannot run inference. invalid session id: ${e}`);let[m,h,d,y]=p,w=t.length,_=o.length,v=0,x=[],T=[],C=[],S=[],E=a.stackSave(),O=a.stackAlloc(w*4),U=a.stackAlloc(w*4),M=a.stackAlloc(_*4),N=a.stackAlloc(_*4);try{[v,x]=ki(u);for(let ee=0;eeke*Le,1);de=st(Ge);let nt=y?.outputPreferredLocations[o[ee]];if(de==="string"){if(nt==="gpu-buffer")throw new Error("String tensor is not supported on GPU.");let ke=[],Le=we/4;for(let It=0;It0){let ke=a.jsepGetBuffer(we),Le=Mr(Ge);if(Le===void 0||!Bi(de))throw new Error(`Unsupported data type: ${de}`);ye=!0,Ee.push([de,he,{gpuBuffer:ke,download:a.jsepCreateDownloader(ke,Xe*Le,de),dispose:()=>{a._OrtReleaseTensor(be)}},"gpu-buffer"])}else{let ke=yn(de),Le=new ke(Xe);new Uint8Array(Le.buffer,Le.byteOffset,Le.byteLength).set(a.HEAPU8.subarray(we,we+Le.byteLength)),Ee.push([de,he,Le,"cpu"])}}finally{a.stackRestore(Me),de==="string"&&we&&a._free(we),ye||a._OrtReleaseTensor(be)}}return y&&a._OrtClearBoundOutputs(y.handle),Ee}finally{a.stackRestore(E),T.forEach(Y=>a._OrtReleaseTensor(Y)),C.forEach(Y=>a._OrtReleaseTensor(Y)),S.forEach(Y=>a._free(Y)),v!==0&&a._OrtReleaseRunOptions(v),x.forEach(Y=>a._free(Y))}},xl=e=>{let t=Ue(),r=Hr.get(e);if(!r)throw new Error("invalid session id");let o=r[0],i=t._OrtEndProfiling(o);i===0&&Be("Can\'t get an profile file name."),t._OrtFree(i)},Cl=e=>{let t=[];for(let r of e){let o=r[2];!Array.isArray(o)&&"buffer"in o&&t.push(o.buffer)}return t};self.onmessage=e=>{let{type:t,in:r}=e.data;try{switch(t){case"init-wasm":Oi(r.wasm).then(()=>{wl(r).then(()=>{postMessage({type:t})},o=>{postMessage({type:t,err:o})})},o=>{postMessage({type:t,err:o})});break;case"init-ep":{let{epName:o,env:i}=r;vl(i,o).then(()=>{postMessage({type:t})},u=>{postMessage({type:t,err:u})});break}case"copy-from":{let{buffer:o}=r,i=Wo(o);postMessage({type:t,out:i});break}case"create":{let{model:o,options:i}=r;$l(o,i).then(u=>{postMessage({type:t,out:u})},u=>{postMessage({type:t,err:u})});break}case"release":_l(r),postMessage({type:t});break;case"run":{let{sessionId:o,inputIndices:i,inputs:u,outputIndices:a,options:p}=r;Sl(o,i,u,a,new Array(a.length).fill(null),p).then(m=>{m.some(h=>h[3]!=="cpu")?postMessage({type:t,err:"Proxy does not support non-cpu tensor location."}):postMessage({type:t,out:m},Cl(m))},m=>{postMessage({type:t,err:m})});break}case"end-profiling":xl(r),postMessage({type:t});break;default:}}catch(o){postMessage({type:t,err:o})}};})();\n/**\n * @license\n * Copyright 2021 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the "License");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an "AS IS" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the "License");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an "AS IS" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n/**\n * @license\n * Copyright 2019 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the "License");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an "AS IS" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n'})),ul=U((()=>{ue(),ol(),ys(),Mu=()=>!!p.wasm.proxy&&typeof document<"u",Nu=!1,Wu=!1,Uu=!1,Hu=new Map,Lu=(e,t)=>{let n=Hu.get(e);n?n.push(t):Hu.set(e,[t])},Fu=()=>{if(Nu||!Wu||Uu||!Du)throw new Error("worker not ready")},Gu=e=>{switch(e.data.type){case"init-wasm":Nu=!1,e.data.err?(Uu=!0,Vu[1](e.data.err)):(Wu=!0,Vu[0]());break;case"init-ep":case"copy-from":case"create":case"release":case"run":case"end-profiling":{let t=Hu.get(e.data.type);e.data.err?t.shift()[1](e.data.err):t.shift()[0](e.data.out);break}}},ju=typeof document<"u"?document?.currentScript?.src:void 0,qu=async()=>{if(!Wu){if(Nu)throw new Error("multiple calls to 'initWasm()' detected.");if(Uu)throw new Error("previous call to 'initWasm()' failed.");if(Nu=!0,Mu())return void 0===p.wasm.wasmPaths&&ju&&0!==ju.indexOf("blob:")&&(p.wasm.wasmPaths=ju.substr(0,+ju.lastIndexOf("/")+1)),new Promise(((e,t)=>{Du?.terminate();let n=URL.createObjectURL(new Blob([sl()],{type:"text/javascript"}));(Du=new Worker(n,{name:"ort-wasm-proxy-worker"})).onerror=e=>t(e),Du.onmessage=Gu,URL.revokeObjectURL(n),Vu=[e,t];let r={type:"init-wasm",in:p};Du.postMessage(r)}));try{await Oe(p.wasm),await Cu(p),Wu=!0}catch(e){throw Uu=!0,e}finally{Nu=!1}}},Ku=async e=>{if(Mu())return Fu(),new Promise(((t,n)=>{Lu("init-ep",[t,n]);let r={type:"init-ep",in:{epName:e,env:p}};Du.postMessage(r)}));await Eu(p,e)},Yu=async e=>Mu()?(Fu(),new Promise(((t,n)=>{Lu("copy-from",[t,n]);let r={type:"copy-from",in:{buffer:e}};Du.postMessage(r,[e.buffer])}))):Au(e),Zu=async(e,t)=>{if(Mu()){if(t?.preferredOutputLocation)throw new Error('session option "preferredOutputLocation" is not supported for proxy.');return Fu(),new Promise(((n,r)=>{Lu("create",[n,r]);let a={type:"create",in:{model:e,options:t}},i=[];e instanceof Uint8Array&&i.push(e.buffer),Du.postMessage(a,i)}))}return ku(e,t)},Qu=async e=>{if(Mu())return Fu(),new Promise(((t,n)=>{Lu("release",[t,n]);let r={type:"release",in:e};Du.postMessage(r)}));Ou(e)},Xu=async(e,t,n,r,a,i)=>{if(Mu()){if(n.some((e=>"cpu"!==e[3])))throw new Error("input tensor on GPU is not supported for proxy.");if(a.some((e=>e)))throw new Error("pre-allocated output tensor is not supported for proxy.");return Fu(),new Promise(((a,o)=>{Lu("run",[a,o]);let s=n,u={type:"run",in:{sessionId:e,inputIndices:t,inputs:s,outputIndices:r,options:i}};Du.postMessage(u,Pu(s))}))}return zu(e,t,n,r,a,i)},Ju=async e=>{if(Mu())return Fu(),new Promise(((t,n)=>{Lu("end-profiling",[t,n]);let r={type:"end-profiling",in:e};Du.postMessage(r)}));Bu(e)}})),ll=U((()=>{ue(),ul(),$s(),_s(),el=(e,t)=>{switch(e.location){case"cpu":return[e.type,e.dims,e.data,"cpu"];case"gpu-buffer":return[e.type,e.dims,{gpuBuffer:e.gpuBuffer},"gpu-buffer"];default:throw new Error(`invalid data location: ${e.location} for ${t()}`)}},tl=e=>{switch(e[3]){case"cpu":return new E(e[0],e[2],e[1]);case"gpu-buffer":{let t=e[0];if(!qe(t))throw new Error(`not supported data type: ${t} for deserializing GPU tensor`);let{gpuBuffer:n,download:r,dispose:a}=e[2];return E.fromGpuBuffer(n,{dataType:t,dims:e[1],download:r,dispose:a})}default:throw new Error(`invalid data location: ${e[3]}`)}},nl=class{async fetchModelAndCopyToWasmMemory(e){return Yu(await Ye(e))}async loadModel(e,t){let n;A(),n="string"==typeof e?typeof process<"u"&&process.versions&&process.versions.node?await Ye(e):await this.fetchModelAndCopyToWasmMemory(e):e,[this.sessionId,this.inputNames,this.outputNames]=await Zu(n,t),k()}async dispose(){return Qu(this.sessionId)}async run(e,t,n){A();let r=[],a=[];Object.entries(e).forEach((e=>{let t=e[0],n=e[1],i=this.inputNames.indexOf(t);if(-1===i)throw new Error(`invalid input '${t}'`);r.push(n),a.push(i)}));let i=[],o=[];Object.entries(t).forEach((e=>{let t=e[0],n=e[1],r=this.outputNames.indexOf(t);if(-1===r)throw new Error(`invalid output '${t}'`);i.push(n),o.push(r)}));let s=r.map(((e,t)=>el(e,(()=>`input "${this.inputNames[a[t]]}"`)))),u=i.map(((e,t)=>e?el(e,(()=>`output "${this.outputNames[o[t]]}"`)):null)),l=await Xu(this.sessionId,a,s,o,u,n),d={};for(let e=0;e{ue(),ul(),ll(),rl=()=>{if(("number"!=typeof p.wasm.initTimeout||p.wasm.initTimeout<0)&&(p.wasm.initTimeout=0),"boolean"!=typeof p.wasm.simd&&(p.wasm.simd=!0),"boolean"!=typeof p.wasm.proxy&&(p.wasm.proxy=!1),"boolean"!=typeof p.wasm.trace&&(p.wasm.trace=!1),"number"!=typeof p.wasm.numThreads||!Number.isInteger(p.wasm.numThreads)||p.wasm.numThreads<=0){(typeof self<"u"&&!self.crossOriginIsolated||typeof process<"u"&&process.versions&&process.versions.node)&&(p.wasm.numThreads=1);let e=typeof navigator>"u"?(void 0)().length:navigator.hardwareConcurrency;p.wasm.numThreads=Math.min(4,Math.ceil((e||1)/2))}},al=class{async init(e){rl(),await qu(),await Ku(e)}async createInferenceSessionHandler(e,t){let n=new nl;return await n.loadModel(e,t),Promise.resolve(n)}}})),pl={};H(pl,{wasmBackend:()=>cl});var cl,fl=U((()=>{dl(),cl=new al})),hl={};H(hl,{InferenceSession:()=>R,TRACE:()=>I,TRACE_FUNC_BEGIN:()=>A,TRACE_FUNC_END:()=>k,Tensor:()=>E,TrainingSession:()=>B,default:()=>ml,env:()=>p,registerBackend:()=>o}),e.exports=L(hl),ue(),ue(),ue();var ml=se;{let e=(fl(),L(pl)).wasmBackend;o("webgpu",e,5),o("webnn",e,5),o("cpu",e,10),o("wasm",e,10)}Object.defineProperty(p.versions,"web",{value:"1.18.0-dev.20240130-9f68a27c7a",enumerable:!0})}},t={};function n(r){var a=t[r];if(void 0!==a)return a.exports;var i=t[r]={exports:{}};return e[r](i,i.exports,n),i.exports}return n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),(()=>{const e=n(122),t=500,r=500,a=1024,i=1024,o={sam_b:["https://huggingface.co/schmuell/sam-b-fp16/resolve/main/sam_vit_b_01ec64.encoder-fp16.onnx","https://huggingface.co/schmuell/sam-b-fp16/resolve/main/sam_vit_b_01ec64.decoder.onnx"],sam_b_local:["models/sam_vit_b_01ec64.encoder-fp16.onnx","models/sam_vit_b_01ec64.decoder.onnx"]},s=function(){var e={model:"sam_b",provider:"webgpu",device:"gpu",threads:"1"};let t=window.location.search.substring(1).split("&");for(var n=0;n0)throw new Error("unknown argument: "+r[0])}return e.threads=parseInt(e.threads),e}();let u,l,d;var p;e.env.wasm.numThreads=s.threads,e.env.wasm.proxy=!0;var c,f=[],h=[],m=[],g=!1;function y(e){document.getElementById("status").innerText+=`\n${e}`}async function b(t){if(!g)try{g=!0,u.style.cursor="wait";const n=u.getBoundingClientRect(),r=t.clientX-n.left,o=t.clientY-n.top,s=t.shiftKey?0:1;void 0===p&&await f[0];const l=await p;t.ctrlKey||(h=[],m=[]),h.push(r,o),m.push(s);let y=u.getContext("2d");y.clearRect(0,0,u.width,u.height),u.width=c.width,u.height=c.height,y.putImageData(c,0,0),y.fillStyle="blue",y.fillRect(r,o,10,10);const b=new e.Tensor(new Float32Array(h),[1,h.length/2,2]),w=new e.Tensor(new Float32Array(m),[1,m.length]),v=new e.Tensor(new Float32Array(65536),[1,1,256,256]),$=new e.Tensor(new Float32Array([0]),[1]),_=new e.Tensor(new Float32Array([i,a]),[2]),x=await f[1],S={image_embeddings:new e.Tensor(l.image_embeddings.type,Float32Array.from(l.image_embeddings.data),l.image_embeddings.dims),point_coords:b,point_labels:w,mask_input:v,has_mask_input:$,orig_im_size:_},C=performance.now(),E=await x.run(S);d.innerText=`${(performance.now()-C).toFixed(1)}ms`;const I=E.masks.toImageData();y.globalAlpha=.3,y.drawImage(await createImageBitmap(I),0,0)}finally{u.style.cursor="default",g=!1}}async function w(n){const o=document.getElementById("encoder_latency");o.innerText="",l.disabled=!0,d.innerText="",u.style.cursor="wait",p=void 0;var s=n.width,h=n.height;s>h?s>t&&(h*=t/s,s=t):h>r&&(s*=r/h,h=r),s=Math.round(s),h=Math.round(h),u.width=s,u.height=h;var m=u.getContext("2d");m.drawImage(n,0,0,s,h),c=m.getImageData(0,0,s,h);const g={input_image:await e.Tensor.fromImage(c,options={resizedWidth:a,resizedHeight:i})},y=await f[0],b=performance.now();(p=y.run(g)).then((()=>{o.innerText=`${(performance.now()-b).toFixed(1)}ms`,u.style.cursor="default"})),l.disabled=!1}async function v(t,n,r){let a=s.provider;switch(a){case"webnn":if(!("ml"in navigator))throw new Error("webnn is NOT supported");a={name:"webnn",deviceType:s.device,powerPreference:"default"};break;case"webgpu":if(!navigator.gpu)throw new Error("webgpu is NOT supported")}const i={executionProviders:[a]};(async function(e){try{const t=await caches.open("onnx");s.clear_cache&&t.delete(e);let n=await t.match(e);return null==n?(await t.add(e),n=await t.match(e),y(`${e} (from network)`)):y(`${e} (from cache)`),await n.arrayBuffer()}catch(t){return y(`${e} (from network)`),await fetch(e).then((e=>e.arrayBuffer()))}})(t[n]).then((a=>{f[n]=e.InferenceSession.create(a,i),f[n].then((()=>{y(`${t[n]} loaded.`),0==n&&v(t,1)}),(e=>{throw y(`${t[n]} failed with ${e}.`),e})),void 0!==r&&w(r)}))}document.addEventListener("DOMContentLoaded",(()=>{(async function(){try{return(await navigator.gpu.requestAdapter()).features.has("shader-f16")}catch(e){return!1}})().then((e=>{e?async function(){const e=o[s.model];u=document.getElementById("img_canvas"),u.addEventListener("click",b),u.style.cursor="wait",l=document.getElementById("file-in"),d=document.getElementById("decoder_latency");let t=document.getElementById("original-image");v(e,0,t).then((()=>{}),(e=>{y(e)})),l.onchange=function(e){let n=(e.target||window.event.src).files;if(FileReader&&n&&n.length){let e=new FileReader;e.onload=()=>{t.onload=()=>w(t),t.src=e.result},e.readAsDataURL(n[0])}}}():y("Your GPU or Browser doesn't support webgpu/f16")}))}))})(),{}})())); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,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VTd5QixPQUFPMjBDLE1BQU12L0MsS0FBb0JtaUQsTUFDNUQsR0FBSUMsWUFBY0QsR0FBU0EsRUFBTXhtRCxPQUFRLENBQ3JDLElBQUkwbUQsRUFBYSxJQUFJRCxXQUNyQkMsRUFBV3BpRCxPQUFTLEtBQ2hCaWhELEVBQUlqaEQsT0FBUyxJQUFNZ2hELEVBQVlDLEdBQy9CQSxFQUFJbGhELElBQU1xaUQsRUFBV0MsTUFBTSxFQUUvQkQsRUFBV0UsY0FBY0osRUFBTSxHQUNuQyxDQUNKLENBQ0osQ0FjWUssR0FFQWoyQyxFQUFJLGlEQUNSLEdBQ0YiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9vcnQtc2FtL3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9vcnQtc2FtLy4vbm9kZV9tb2R1bGVzL29ubnhydW50aW1lLXdlYi9kaXN0L2Nqcy9vcnQud2ViZ3B1Lm1pbi5qcyIsIndlYnBhY2s6Ly9vcnQtc2FtL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL29ydC1zYW0vd2VicGFjay9ydW50aW1lL2dsb2JhbCIsIndlYnBhY2s6Ly9vcnQtc2FtLy4vbWFpbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2Uge1xuXHRcdHZhciBhID0gZmFjdG9yeSgpO1xuXHRcdGZvcih2YXIgaSBpbiBhKSAodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnID8gZXhwb3J0cyA6IHJvb3QpW2ldID0gYVtpXTtcblx0fVxufSkoc2VsZiwgKCkgPT4ge1xucmV0dXJuICIsIi8qIVxuICogT05OWCBSdW50aW1lIFdlYiB2MS4xOC4wLWRldi4yMDI0MDEzMC05ZjY4YTI3YzdhXG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cbiAqL1xuXCJ1c2Ugc3RyaWN0XCI7dmFyIENhPU9iamVjdC5kZWZpbmVQcm9wZXJ0eTt2YXIgQmQ9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjt2YXIgTWQ9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXM7dmFyIERkPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIFE9KGUsdCk9PigpPT4oZSYmKHQ9ZShlPTApKSx0KTt2YXIgYnI9KGUsdCk9PigpPT4odHx8ZSgodD17ZXhwb3J0czp7fX0pLmV4cG9ydHMsdCksdC5leHBvcnRzKSxucj0oZSx0KT0+e2Zvcih2YXIgciBpbiB0KUNhKGUscix7Z2V0OnRbcl0sZW51bWVyYWJsZTohMH0pfSx6ZD0oZSx0LHIsYSk9PntpZih0JiZ0eXBlb2YgdD09XCJvYmplY3RcInx8dHlwZW9mIHQ9PVwiZnVuY3Rpb25cIilmb3IobGV0IGkgb2YgTWQodCkpIURkLmNhbGwoZSxpKSYmaSE9PXImJkNhKGUsaSx7Z2V0OigpPT50W2ldLGVudW1lcmFibGU6IShhPUJkKHQsaSkpfHxhLmVudW1lcmFibGV9KTtyZXR1cm4gZX07dmFyIEd0PWU9PnpkKENhKHt9LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLGUpO3ZhciBFbixhcixGdCxPbixrbj1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7RW49bmV3IE1hcCxhcj1bXSxGdD0oZSx0LHIpPT57aWYodCYmdHlwZW9mIHQuaW5pdD09XCJmdW5jdGlvblwiJiZ0eXBlb2YgdC5jcmVhdGVJbmZlcmVuY2VTZXNzaW9uSGFuZGxlcj09XCJmdW5jdGlvblwiKXtsZXQgYT1Fbi5nZXQoZSk7aWYoYT09PXZvaWQgMClFbi5zZXQoZSx7YmFja2VuZDp0LHByaW9yaXR5OnJ9KTtlbHNle2lmKGEucHJpb3JpdHk+cilyZXR1cm47aWYoYS5wcmlvcml0eT09PXImJmEuYmFja2VuZCE9PXQpdGhyb3cgbmV3IEVycm9yKGBjYW5ub3QgcmVnaXN0ZXIgYmFja2VuZCBcIiR7ZX1cIiB1c2luZyBwcmlvcml0eSAke3J9YCl9aWYocj49MCl7bGV0IGk9YXIuaW5kZXhPZihlKTtpIT09LTEmJmFyLnNwbGljZShpLDEpO2ZvcihsZXQgcz0wO3M8YXIubGVuZ3RoO3MrKylpZihFbi5nZXQoYXJbc10pLnByaW9yaXR5PD1yKXthci5zcGxpY2UocywwLGUpO3JldHVybn1hci5wdXNoKGUpfXJldHVybn10aHJvdyBuZXcgVHlwZUVycm9yKFwibm90IGEgdmFsaWQgYmFja2VuZFwiKX0sT249YXN5bmMgZT0+e2xldCB0PWUubGVuZ3RoPT09MD9hcjplLHI9W107Zm9yKGxldCBhIG9mIHQpe2xldCBpPUVuLmdldChhKTtpZihpKXtpZihpLmluaXRpYWxpemVkKXJldHVybiBpLmJhY2tlbmQ7aWYoaS5hYm9ydGVkKWNvbnRpbnVlO2xldCBzPSEhaS5pbml0UHJvbWlzZTt0cnl7cmV0dXJuIHN8fChpLmluaXRQcm9taXNlPWkuYmFja2VuZC5pbml0KGEpKSxhd2FpdCBpLmluaXRQcm9taXNlLGkuaW5pdGlhbGl6ZWQ9ITAsaS5iYWNrZW5kfWNhdGNoKG8pe3N8fHIucHVzaCh7bmFtZTphLGVycjpvfSksaS5hYm9ydGVkPSEwfWZpbmFsbHl7ZGVsZXRlIGkuaW5pdFByb21pc2V9fX10aHJvdyBuZXcgRXJyb3IoYG5vIGF2YWlsYWJsZSBiYWNrZW5kIGZvdW5kLiBFUlI6ICR7ci5tYXAoYT0+YFske2EubmFtZX1dICR7YS5lcnJ9YCkuam9pbihcIiwgXCIpfWApfX0pO3ZhciBxaT1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7a24oKX0pO3ZhciBqaSxLaT1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7amk9XCIxLjE3LjAtZGV2LjIwMjQwMTE2LTgwZjI3NGNhNmZcIn0pO3ZhciBZaSxpcixJYT1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7S2koKTtZaT1cIndhcm5pbmdcIixpcj17d2FzbTp7fSx3ZWJnbDp7fSx3ZWJncHU6e30sdmVyc2lvbnM6e2NvbW1vbjpqaX0sc2V0IGxvZ0xldmVsKGUpe2lmKGUhPT12b2lkIDApe2lmKHR5cGVvZiBlIT1cInN0cmluZ1wifHxbXCJ2ZXJib3NlXCIsXCJpbmZvXCIsXCJ3YXJuaW5nXCIsXCJlcnJvclwiLFwiZmF0YWxcIl0uaW5kZXhPZihlKT09PS0xKXRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgbG9nZ2luZyBsZXZlbDogJHtlfWApO1lpPWV9fSxnZXQgbG9nTGV2ZWwoKXtyZXR1cm4gWWl9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoaXIsXCJsb2dMZXZlbFwiLHtlbnVtZXJhYmxlOiEwfSl9KTt2YXIgQWUsWmk9USgoKT0+e1widXNlIHN0cmljdFwiO0lhKCk7QWU9aXJ9KTt2YXIgWGksUWksSmk9USgoKT0+e1widXNlIHN0cmljdFwiO1hpPShlLHQpPT57bGV0IHI9dHlwZW9mIGRvY3VtZW50PFwidVwiP2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik6bmV3IE9mZnNjcmVlbkNhbnZhcygxLDEpO3Iud2lkdGg9ZS5kaW1zWzNdLHIuaGVpZ2h0PWUuZGltc1syXTtsZXQgYT1yLmdldENvbnRleHQoXCIyZFwiKTtpZihhIT1udWxsKXtsZXQgaSxzO3Q/LnRlbnNvckxheW91dCE9PXZvaWQgMCYmdC50ZW5zb3JMYXlvdXQ9PT1cIk5IV0NcIj8oaT1lLmRpbXNbMl0scz1lLmRpbXNbM10pOihpPWUuZGltc1szXSxzPWUuZGltc1syXSk7bGV0IG89dD8uZm9ybWF0IT09dm9pZCAwP3QuZm9ybWF0OlwiUkdCXCIsYz10Py5ub3JtLHAsbTtjPT09dm9pZCAwfHxjLm1lYW49PT12b2lkIDA/cD1bMjU1LDI1NSwyNTUsMjU1XTp0eXBlb2YgYy5tZWFuPT1cIm51bWJlclwiP3A9W2MubWVhbixjLm1lYW4sYy5tZWFuLGMubWVhbl06KHA9W2MubWVhblswXSxjLm1lYW5bMV0sYy5tZWFuWzJdLDBdLGMubWVhblszXSE9PXZvaWQgMCYmKHBbM109Yy5tZWFuWzNdKSksYz09PXZvaWQgMHx8Yy5iaWFzPT09dm9pZCAwP209WzAsMCwwLDBdOnR5cGVvZiBjLmJpYXM9PVwibnVtYmVyXCI/bT1bYy5iaWFzLGMuYmlhcyxjLmJpYXMsYy5iaWFzXToobT1bYy5iaWFzWzBdLGMuYmlhc1sxXSxjLmJpYXNbMl0sMF0sYy5iaWFzWzNdIT09dm9pZCAwJiYobVszXT1jLmJpYXNbM10pKTtsZXQgbD1zKmksZz0wLGI9bCx3PWwqMiwkPS0xO289PT1cIlJHQkFcIj8oZz0wLGI9bCx3PWwqMiwkPWwqMyk6bz09PVwiUkdCXCI/KGc9MCxiPWwsdz1sKjIpOm89PT1cIlJCR1wiJiYoZz0wLHc9bCxiPWwqMik7Zm9yKGxldCB4PTA7eDxzO3grKylmb3IobGV0IFQ9MDtUPGk7VCsrKXtsZXQgQz0oZS5kYXRhW2crK10tbVswXSkqcFswXSxTPShlLmRhdGFbYisrXS1tWzFdKSpwWzFdLEU9KGUuZGF0YVt3KytdLW1bMl0pKnBbMl0sTz0kPT09LTE/MjU1OihlLmRhdGFbJCsrXS1tWzNdKSpwWzNdO2EuZmlsbFN0eWxlPVwicmdiYShcIitDK1wiLFwiK1MrXCIsXCIrRStcIixcIitPK1wiKVwiLGEuZmlsbFJlY3QoVCx4LDEsMSl9aWYoXCJ0b0RhdGFVUkxcImluIHIpcmV0dXJuIHIudG9EYXRhVVJMKCk7dGhyb3cgbmV3IEVycm9yKFwidG9EYXRhVVJMIGlzIG5vdCBzdXBwb3J0ZWRcIil9ZWxzZSB0aHJvdyBuZXcgRXJyb3IoXCJDYW4gbm90IGFjY2VzcyBpbWFnZSBkYXRhXCIpfSxRaT0oZSx0KT0+e2xldCByPXR5cGVvZiBkb2N1bWVudDxcInVcIj9kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpLmdldENvbnRleHQoXCIyZFwiKTpuZXcgT2Zmc2NyZWVuQ2FudmFzKDEsMSkuZ2V0Q29udGV4dChcIjJkXCIpLGE7aWYociE9bnVsbCl7bGV0IGkscyxvO3Q/LnRlbnNvckxheW91dCE9PXZvaWQgMCYmdC50ZW5zb3JMYXlvdXQ9PT1cIk5IV0NcIj8oaT1lLmRpbXNbMl0scz1lLmRpbXNbMV0sbz1lLmRpbXNbM10pOihpPWUuZGltc1szXSxzPWUuZGltc1syXSxvPWUuZGltc1sxXSk7bGV0IGM9dCE9PXZvaWQgMCYmdC5mb3JtYXQhPT12b2lkIDA/dC5mb3JtYXQ6XCJSR0JcIixwPXQ/Lm5vcm0sbSxsO3A9PT12b2lkIDB8fHAubWVhbj09PXZvaWQgMD9tPVsyNTUsMjU1LDI1NSwyNTVdOnR5cGVvZiBwLm1lYW49PVwibnVtYmVyXCI/bT1bcC5tZWFuLHAubWVhbixwLm1lYW4scC5tZWFuXToobT1bcC5tZWFuWzBdLHAubWVhblsxXSxwLm1lYW5bMl0sMjU1XSxwLm1lYW5bM10hPT12b2lkIDAmJihtWzNdPXAubWVhblszXSkpLHA9PT12b2lkIDB8fHAuYmlhcz09PXZvaWQgMD9sPVswLDAsMCwwXTp0eXBlb2YgcC5iaWFzPT1cIm51bWJlclwiP2w9W3AuYmlhcyxwLmJpYXMscC5iaWFzLHAuYmlhc106KGw9W3AuYmlhc1swXSxwLmJpYXNbMV0scC5iaWFzWzJdLDBdLHAuYmlhc1szXSE9PXZvaWQgMCYmKGxbM109cC5iaWFzWzNdKSk7bGV0IGc9cyppO2lmKHQhPT12b2lkIDAmJih0LmZvcm1hdCE9PXZvaWQgMCYmbz09PTQmJnQuZm9ybWF0IT09XCJSR0JBXCJ8fG89PT0zJiZ0LmZvcm1hdCE9PVwiUkdCXCImJnQuZm9ybWF0IT09XCJCR1JcIikpdGhyb3cgbmV3IEVycm9yKFwiVGVuc29yIGZvcm1hdCBkb2Vzbid0IG1hdGNoIGlucHV0IHRlbnNvciBkaW1zXCIpO2xldCBiPTQsdz0wLCQ9MSx4PTIsVD0zLEM9MCxTPWcsRT1nKjIsTz0tMTtjPT09XCJSR0JBXCI/KEM9MCxTPWcsRT1nKjIsTz1nKjMpOmM9PT1cIlJHQlwiPyhDPTAsUz1nLEU9ZyoyKTpjPT09XCJSQkdcIiYmKEM9MCxFPWcsUz1nKjIpLGE9ci5jcmVhdGVJbWFnZURhdGEoaSxzKTtmb3IobGV0IFU9MDtVPHMqaTt3Kz1iLCQrPWIseCs9YixUKz1iLFUrKylhLmRhdGFbd109KGUuZGF0YVtDKytdLWxbMF0pKm1bMF0sYS5kYXRhWyRdPShlLmRhdGFbUysrXS1sWzFdKSptWzFdLGEuZGF0YVt4XT0oZS5kYXRhW0UrK10tbFsyXSkqbVsyXSxhLmRhdGFbVF09Tz09PS0xPzI1NTooZS5kYXRhW08rK10tbFszXSkqbVszXX1lbHNlIHRocm93IG5ldyBFcnJvcihcIkNhbiBub3QgYWNjZXNzIGltYWdlIGRhdGFcIik7cmV0dXJuIGF9fSk7dmFyIEFhLGVvLHRvLHJvLG5vLGFvPVEoKCk9PntcInVzZSBzdHJpY3RcIjtQbigpO0FhPShlLHQpPT57aWYoZT09PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoXCJJbWFnZSBidWZmZXIgbXVzdCBiZSBkZWZpbmVkXCIpO2lmKHQuaGVpZ2h0PT09dm9pZCAwfHx0LndpZHRoPT09dm9pZCAwKXRocm93IG5ldyBFcnJvcihcIkltYWdlIGhlaWdodCBhbmQgd2lkdGggbXVzdCBiZSBkZWZpbmVkXCIpO2lmKHQudGVuc29yTGF5b3V0PT09XCJOSFdDXCIpdGhyb3cgbmV3IEVycm9yKFwiTkhXQyBUZW5zb3IgbGF5b3V0IGlzIG5vdCBzdXBwb3J0ZWQgeWV0XCIpO2xldHtoZWlnaHQ6cix3aWR0aDphfT10LGk9dC5ub3JtPz97bWVhbjoyNTUsYmlhczowfSxzLG87dHlwZW9mIGkubWVhbj09XCJudW1iZXJcIj9zPVtpLm1lYW4saS5tZWFuLGkubWVhbixpLm1lYW5dOnM9W2kubWVhblswXSxpLm1lYW5bMV0saS5tZWFuWzJdLGkubWVhblszXT8/MjU1XSx0eXBlb2YgaS5iaWFzPT1cIm51bWJlclwiP289W2kuYmlhcyxpLmJpYXMsaS5iaWFzLGkuYmlhc106bz1baS5iaWFzWzBdLGkuYmlhc1sxXSxpLmJpYXNbMl0saS5iaWFzWzNdPz8wXTtsZXQgYz10LmZvcm1hdCE9PXZvaWQgMD90LmZvcm1hdDpcIlJHQkFcIixwPXQudGVuc29yRm9ybWF0IT09dm9pZCAwJiZ0LnRlbnNvckZvcm1hdCE9PXZvaWQgMD90LnRlbnNvckZvcm1hdDpcIlJHQlwiLG09ciphLGw9cD09PVwiUkdCQVwiP25ldyBGbG9hdDMyQXJyYXkobSo0KTpuZXcgRmxvYXQzMkFycmF5KG0qMyksZz00LGI9MCx3PTEsJD0yLHg9MyxUPTAsQz1tLFM9bSoyLEU9LTE7Yz09PVwiUkdCXCImJihnPTMsYj0wLHc9MSwkPTIseD0tMSkscD09PVwiUkdCQVwiP0U9bSozOnA9PT1cIlJCR1wiPyhUPTAsUz1tLEM9bSoyKTpwPT09XCJCR1JcIiYmKFM9MCxDPW0sVD1tKjIpO2ZvcihsZXQgVT0wO1U8bTtVKyssYis9ZywkKz1nLHcrPWcseCs9ZylsW1QrK109KGVbYl0rb1swXSkvc1swXSxsW0MrK109KGVbd10rb1sxXSkvc1sxXSxsW1MrK109KGVbJF0rb1syXSkvc1syXSxFIT09LTEmJnghPT0tMSYmKGxbRSsrXT0oZVt4XStvWzNdKS9zWzNdKTtyZXR1cm4gcD09PVwiUkdCQVwiP25ldyBhdChcImZsb2F0MzJcIixsLFsxLDQscixhXSk6bmV3IGF0KFwiZmxvYXQzMlwiLGwsWzEsMyxyLGFdKX0sZW89YXN5bmMoZSx0KT0+e2xldCByPXR5cGVvZiBIVE1MSW1hZ2VFbGVtZW50PFwidVwiJiZlIGluc3RhbmNlb2YgSFRNTEltYWdlRWxlbWVudCxhPXR5cGVvZiBJbWFnZURhdGE8XCJ1XCImJmUgaW5zdGFuY2VvZiBJbWFnZURhdGEsaT10eXBlb2YgSW1hZ2VCaXRtYXA8XCJ1XCImJmUgaW5zdGFuY2VvZiBJbWFnZUJpdG1hcCxzPXR5cGVvZiBlPT1cInN0cmluZ1wiLG8sYz10Pz97fSxwPSgpPT57aWYodHlwZW9mIGRvY3VtZW50PFwidVwiKXJldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO2lmKHR5cGVvZiBPZmZzY3JlZW5DYW52YXM8XCJ1XCIpcmV0dXJuIG5ldyBPZmZzY3JlZW5DYW52YXMoMSwxKTt0aHJvdyBuZXcgRXJyb3IoXCJDYW52YXMgaXMgbm90IHN1cHBvcnRlZFwiKX0sbT1sPT5sIGluc3RhbmNlb2YgSFRNTENhbnZhc0VsZW1lbnR8fGwgaW5zdGFuY2VvZiBPZmZzY3JlZW5DYW52YXM/bC5nZXRDb250ZXh0KFwiMmRcIik6bnVsbDtpZihyKXtsZXQgbD1wKCk7bC53aWR0aD1lLndpZHRoLGwuaGVpZ2h0PWUuaGVpZ2h0O2xldCBnPW0obCk7aWYoZyE9bnVsbCl7bGV0IGI9ZS5oZWlnaHQsdz1lLndpZHRoO2lmKHQhPT12b2lkIDAmJnQucmVzaXplZEhlaWdodCE9PXZvaWQgMCYmdC5yZXNpemVkV2lkdGghPT12b2lkIDAmJihiPXQucmVzaXplZEhlaWdodCx3PXQucmVzaXplZFdpZHRoKSx0IT09dm9pZCAwKXtpZihjPXQsdC50ZW5zb3JGb3JtYXQhPT12b2lkIDApdGhyb3cgbmV3IEVycm9yKFwiSW1hZ2UgaW5wdXQgY29uZmlnIGZvcm1hdCBtdXN0IGJlIFJHQkEgZm9yIEhUTUxJbWFnZUVsZW1lbnRcIik7Yy50ZW5zb3JGb3JtYXQ9XCJSR0JBXCIsYy5oZWlnaHQ9YixjLndpZHRoPXd9ZWxzZSBjLnRlbnNvckZvcm1hdD1cIlJHQkFcIixjLmhlaWdodD1iLGMud2lkdGg9dztnLmRyYXdJbWFnZShlLDAsMCksbz1nLmdldEltYWdlRGF0YSgwLDAsdyxiKS5kYXRhfWVsc2UgdGhyb3cgbmV3IEVycm9yKFwiQ2FuIG5vdCBhY2Nlc3MgaW1hZ2UgZGF0YVwiKX1lbHNlIGlmKGEpe2xldCBsLGc7aWYodCE9PXZvaWQgMCYmdC5yZXNpemVkV2lkdGghPT12b2lkIDAmJnQucmVzaXplZEhlaWdodCE9PXZvaWQgMD8obD10LnJlc2l6ZWRIZWlnaHQsZz10LnJlc2l6ZWRXaWR0aCk6KGw9ZS5oZWlnaHQsZz1lLndpZHRoKSx0IT09dm9pZCAwJiYoYz10KSxjLmZvcm1hdD1cIlJHQkFcIixjLmhlaWdodD1sLGMud2lkdGg9Zyx0IT09dm9pZCAwKXtsZXQgYj1wKCk7Yi53aWR0aD1nLGIuaGVpZ2h0PWw7bGV0IHc9bShiKTtpZih3IT1udWxsKXcucHV0SW1hZ2VEYXRhKGUsMCwwKSxvPXcuZ2V0SW1hZ2VEYXRhKDAsMCxnLGwpLmRhdGE7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoXCJDYW4gbm90IGFjY2VzcyBpbWFnZSBkYXRhXCIpfWVsc2Ugbz1lLmRhdGF9ZWxzZSBpZihpKXtpZih0PT09dm9pZCAwKXRocm93IG5ldyBFcnJvcihcIlBsZWFzZSBwcm92aWRlIGltYWdlIGNvbmZpZyB3aXRoIGZvcm1hdCBmb3IgSW1hZ2ViaXRtYXBcIik7bGV0IGw9cCgpO2wud2lkdGg9ZS53aWR0aCxsLmhlaWdodD1lLmhlaWdodDtsZXQgZz1tKGwpO2lmKGchPW51bGwpe2xldCBiPWUuaGVpZ2h0LHc9ZS53aWR0aDtyZXR1cm4gZy5kcmF3SW1hZ2UoZSwwLDAsdyxiKSxvPWcuZ2V0SW1hZ2VEYXRhKDAsMCx3LGIpLmRhdGEsYy5oZWlnaHQ9YixjLndpZHRoPXcsQWEobyxjKX1lbHNlIHRocm93IG5ldyBFcnJvcihcIkNhbiBub3QgYWNjZXNzIGltYWdlIGRhdGFcIil9ZWxzZXtpZihzKXJldHVybiBuZXcgUHJvbWlzZSgobCxnKT0+e2xldCBiPXAoKSx3PW0oYik7aWYoIWV8fCF3KXJldHVybiBnKCk7bGV0ICQ9bmV3IEltYWdlOyQuY3Jvc3NPcmlnaW49XCJBbm9ueW1vdXNcIiwkLnNyYz1lLCQub25sb2FkPSgpPT57Yi53aWR0aD0kLndpZHRoLGIuaGVpZ2h0PSQuaGVpZ2h0LHcuZHJhd0ltYWdlKCQsMCwwLGIud2lkdGgsYi5oZWlnaHQpO2xldCB4PXcuZ2V0SW1hZ2VEYXRhKDAsMCxiLndpZHRoLGIuaGVpZ2h0KTtjLmhlaWdodD1iLmhlaWdodCxjLndpZHRoPWIud2lkdGgsbChBYSh4LmRhdGEsYykpfX0pO3Rocm93IG5ldyBFcnJvcihcIklucHV0IGRhdGEgcHJvdmlkZWQgaXMgbm90IHN1cHBvcnRlZCAtIGFib3J0ZWQgdGVuc29yIGNyZWF0aW9uXCIpfWlmKG8hPT12b2lkIDApcmV0dXJuIEFhKG8sYyk7dGhyb3cgbmV3IEVycm9yKFwiSW5wdXQgZGF0YSBwcm92aWRlZCBpcyBub3Qgc3VwcG9ydGVkIC0gYWJvcnRlZCB0ZW5zb3IgY3JlYXRpb25cIil9LHRvPShlLHQpPT57bGV0e3dpZHRoOnIsaGVpZ2h0OmEsZG93bmxvYWQ6aSxkaXNwb3NlOnN9PXQsbz1bMSxhLHIsNF07cmV0dXJuIG5ldyBhdCh7bG9jYXRpb246XCJ0ZXh0dXJlXCIsdHlwZTpcImZsb2F0MzJcIix0ZXh0dXJlOmUsZGltczpvLGRvd25sb2FkOmksZGlzcG9zZTpzfSl9LHJvPShlLHQpPT57bGV0e2RhdGFUeXBlOnIsZGltczphLGRvd25sb2FkOmksZGlzcG9zZTpzfT10O3JldHVybiBuZXcgYXQoe2xvY2F0aW9uOlwiZ3B1LWJ1ZmZlclwiLHR5cGU6cj8/XCJmbG9hdDMyXCIsZ3B1QnVmZmVyOmUsZGltczphLGRvd25sb2FkOmksZGlzcG9zZTpzfSl9LG5vPShlLHQscik9Pm5ldyBhdCh7bG9jYXRpb246XCJjcHUtcGlubmVkXCIsdHlwZTplLGRhdGE6dCxkaW1zOnI/P1t0Lmxlbmd0aF19KX0pO3ZhciBGcixSbixpbyxvbyxzbz1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7RnI9bmV3IE1hcChbW1wiZmxvYXQzMlwiLEZsb2F0MzJBcnJheV0sW1widWludDhcIixVaW50OEFycmF5XSxbXCJpbnQ4XCIsSW50OEFycmF5XSxbXCJ1aW50MTZcIixVaW50MTZBcnJheV0sW1wiZmxvYXQxNlwiLFVpbnQxNkFycmF5XSxbXCJpbnQxNlwiLEludDE2QXJyYXldLFtcImludDMyXCIsSW50MzJBcnJheV0sW1wiYm9vbFwiLFVpbnQ4QXJyYXldLFtcImZsb2F0NjRcIixGbG9hdDY0QXJyYXldLFtcInVpbnQzMlwiLFVpbnQzMkFycmF5XV0pLFJuPW5ldyBNYXAoW1tGbG9hdDMyQXJyYXksXCJmbG9hdDMyXCJdLFtVaW50OEFycmF5LFwidWludDhcIl0sW0ludDhBcnJheSxcImludDhcIl0sW1VpbnQxNkFycmF5LFwidWludDE2XCJdLFtJbnQxNkFycmF5LFwiaW50MTZcIl0sW0ludDMyQXJyYXksXCJpbnQzMlwiXSxbRmxvYXQ2NEFycmF5LFwiZmxvYXQ2NFwiXSxbVWludDMyQXJyYXksXCJ1aW50MzJcIl1dKSxpbz0hMSxvbz0oKT0+e2lmKCFpbyl7aW89ITA7bGV0IGU9dHlwZW9mIEJpZ0ludDY0QXJyYXk8XCJ1XCImJnR5cGVvZiBCaWdJbnQ2NEFycmF5LmZyb209PVwiZnVuY3Rpb25cIix0PXR5cGVvZiBCaWdVaW50NjRBcnJheTxcInVcIiYmdHlwZW9mIEJpZ1VpbnQ2NEFycmF5LmZyb209PVwiZnVuY3Rpb25cIjtlJiYoRnIuc2V0KFwiaW50NjRcIixCaWdJbnQ2NEFycmF5KSxSbi5zZXQoQmlnSW50NjRBcnJheSxcImludDY0XCIpKSx0JiYoRnIuc2V0KFwidWludDY0XCIsQmlnVWludDY0QXJyYXkpLFJuLnNldChCaWdVaW50NjRBcnJheSxcInVpbnQ2NFwiKSl9fX0pO3ZhciB1byxsbyxjbz1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7UG4oKTt1bz1lPT57bGV0IHQ9MTtmb3IobGV0IHI9MDtyPGUubGVuZ3RoO3IrKyl7bGV0IGE9ZVtyXTtpZih0eXBlb2YgYSE9XCJudW1iZXJcInx8IU51bWJlci5pc1NhZmVJbnRlZ2VyKGEpKXRocm93IG5ldyBUeXBlRXJyb3IoYGRpbXNbJHtyfV0gbXVzdCBiZSBhbiBpbnRlZ2VyLCBnb3Q6ICR7YX1gKTtpZihhPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoYGRpbXNbJHtyfV0gbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyLCBnb3Q6ICR7YX1gKTt0Kj1hfXJldHVybiB0fSxsbz0oZSx0KT0+e3N3aXRjaChlLmxvY2F0aW9uKXtjYXNlXCJjcHVcIjpyZXR1cm4gbmV3IGF0KGUudHlwZSxlLmRhdGEsdCk7Y2FzZVwiY3B1LXBpbm5lZFwiOnJldHVybiBuZXcgYXQoe2xvY2F0aW9uOlwiY3B1LXBpbm5lZFwiLGRhdGE6ZS5kYXRhLHR5cGU6ZS50eXBlLGRpbXM6dH0pO2Nhc2VcInRleHR1cmVcIjpyZXR1cm4gbmV3IGF0KHtsb2NhdGlvbjpcInRleHR1cmVcIix0ZXh0dXJlOmUudGV4dHVyZSx0eXBlOmUudHlwZSxkaW1zOnR9KTtjYXNlXCJncHUtYnVmZmVyXCI6cmV0dXJuIG5ldyBhdCh7bG9jYXRpb246XCJncHUtYnVmZmVyXCIsZ3B1QnVmZmVyOmUuZ3B1QnVmZmVyLHR5cGU6ZS50eXBlLGRpbXM6dH0pO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGB0ZW5zb3JSZXNoYXBlOiB0ZW5zb3IgbG9jYXRpb24gJHtlLmxvY2F0aW9ufSBpcyBub3Qgc3VwcG9ydGVkYCl9fX0pO3ZhciBhdCxQbj1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7SmkoKTthbygpO3NvKCk7Y28oKTthdD1jbGFzc3tjb25zdHJ1Y3Rvcih0LHIsYSl7b28oKTtsZXQgaSxzO2lmKHR5cGVvZiB0PT1cIm9iamVjdFwiJiZcImxvY2F0aW9uXCJpbiB0KXN3aXRjaCh0aGlzLmRhdGFMb2NhdGlvbj10LmxvY2F0aW9uLGk9dC50eXBlLHM9dC5kaW1zLHQubG9jYXRpb24pe2Nhc2VcImNwdS1waW5uZWRcIjp7bGV0IGM9RnIuZ2V0KGkpO2lmKCFjKXRocm93IG5ldyBUeXBlRXJyb3IoYHVuc3VwcG9ydGVkIHR5cGUgXCIke2l9XCIgdG8gY3JlYXRlIHRlbnNvciBmcm9tIHBpbm5lZCBidWZmZXJgKTtpZighKHQuZGF0YSBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoYGJ1ZmZlciBzaG91bGQgYmUgb2YgdHlwZSAke2MubmFtZX1gKTt0aGlzLmNwdURhdGE9dC5kYXRhO2JyZWFrfWNhc2VcInRleHR1cmVcIjp7aWYoaSE9PVwiZmxvYXQzMlwiKXRocm93IG5ldyBUeXBlRXJyb3IoYHVuc3VwcG9ydGVkIHR5cGUgXCIke2l9XCIgdG8gY3JlYXRlIHRlbnNvciBmcm9tIHRleHR1cmVgKTt0aGlzLmdwdVRleHR1cmVEYXRhPXQudGV4dHVyZSx0aGlzLmRvd25sb2FkZXI9dC5kb3dubG9hZCx0aGlzLmRpc3Bvc2VyPXQuZGlzcG9zZTticmVha31jYXNlXCJncHUtYnVmZmVyXCI6e2lmKGkhPT1cImZsb2F0MzJcIiYmaSE9PVwiZmxvYXQxNlwiJiZpIT09XCJpbnQzMlwiJiZpIT09XCJpbnQ2NFwiJiZpIT09XCJ1aW50MzJcIiYmaSE9PVwiYm9vbFwiKXRocm93IG5ldyBUeXBlRXJyb3IoYHVuc3VwcG9ydGVkIHR5cGUgXCIke2l9XCIgdG8gY3JlYXRlIHRlbnNvciBmcm9tIGdwdSBidWZmZXJgKTt0aGlzLmdwdUJ1ZmZlckRhdGE9dC5ncHVCdWZmZXIsdGhpcy5kb3dubG9hZGVyPXQuZG93bmxvYWQsdGhpcy5kaXNwb3Nlcj10LmRpc3Bvc2U7YnJlYWt9ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFRlbnNvciBjb25zdHJ1Y3RvcjogdW5zdXBwb3J0ZWQgbG9jYXRpb24gJyR7dGhpcy5kYXRhTG9jYXRpb259J2ApfWVsc2V7bGV0IGMscDtpZih0eXBlb2YgdD09XCJzdHJpbmdcIilpZihpPXQscD1hLHQ9PT1cInN0cmluZ1wiKXtpZighQXJyYXkuaXNBcnJheShyKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQSBzdHJpbmcgdGVuc29yJ3MgZGF0YSBtdXN0IGJlIGEgc3RyaW5nIGFycmF5LlwiKTtjPXJ9ZWxzZXtsZXQgbT1Gci5nZXQodCk7aWYobT09PXZvaWQgMCl0aHJvdyBuZXcgVHlwZUVycm9yKGBVbnN1cHBvcnRlZCB0ZW5zb3IgdHlwZTogJHt0fS5gKTtpZihBcnJheS5pc0FycmF5KHIpKXtpZih0PT09XCJmbG9hdDE2XCIpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNyZWF0aW5nIGEgZmxvYXQxNiB0ZW5zb3IgZnJvbSBudW1iZXIgYXJyYXkgaXMgbm90IHN1cHBvcnRlZC4gUGxlYXNlIHVzZSBVaW50MTZBcnJheSBhcyBkYXRhLlwiKTt0PT09XCJ1aW50NjRcInx8dD09PVwiaW50NjRcIj9jPW0uZnJvbShyLEJpZ0ludCk6Yz1tLmZyb20ocil9ZWxzZSBpZihyIGluc3RhbmNlb2YgbSljPXI7ZWxzZSB0aHJvdyBuZXcgVHlwZUVycm9yKGBBICR7aX0gdGVuc29yJ3MgZGF0YSBtdXN0IGJlIHR5cGUgb2YgJHttfWApfWVsc2UgaWYocD1yLEFycmF5LmlzQXJyYXkodCkpe2lmKHQubGVuZ3RoPT09MCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiVGVuc29yIHR5cGUgY2Fubm90IGJlIGluZmVycmVkIGZyb20gYW4gZW1wdHkgYXJyYXkuXCIpO2xldCBtPXR5cGVvZiB0WzBdO2lmKG09PT1cInN0cmluZ1wiKWk9XCJzdHJpbmdcIixjPXQ7ZWxzZSBpZihtPT09XCJib29sZWFuXCIpaT1cImJvb2xcIixjPVVpbnQ4QXJyYXkuZnJvbSh0KTtlbHNlIHRocm93IG5ldyBUeXBlRXJyb3IoYEludmFsaWQgZWxlbWVudCB0eXBlIG9mIGRhdGEgYXJyYXk6ICR7bX0uYCl9ZWxzZXtsZXQgbT1Sbi5nZXQodC5jb25zdHJ1Y3Rvcik7aWYobT09PXZvaWQgMCl0aHJvdyBuZXcgVHlwZUVycm9yKGBVbnN1cHBvcnRlZCB0eXBlIGZvciB0ZW5zb3IgZGF0YTogJHt0LmNvbnN0cnVjdG9yfS5gKTtpPW0sYz10fWlmKHA9PT12b2lkIDApcD1bYy5sZW5ndGhdO2Vsc2UgaWYoIUFycmF5LmlzQXJyYXkocCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkEgdGVuc29yJ3MgZGltcyBtdXN0IGJlIGEgbnVtYmVyIGFycmF5XCIpO3M9cCx0aGlzLmNwdURhdGE9Yyx0aGlzLmRhdGFMb2NhdGlvbj1cImNwdVwifWxldCBvPXVvKHMpO2lmKHRoaXMuY3B1RGF0YSYmbyE9PXRoaXMuY3B1RGF0YS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKGBUZW5zb3IncyBzaXplKCR7b30pIGRvZXMgbm90IG1hdGNoIGRhdGEgbGVuZ3RoKCR7dGhpcy5jcHVEYXRhLmxlbmd0aH0pLmApO3RoaXMudHlwZT1pLHRoaXMuZGltcz1zLHRoaXMuc2l6ZT1vfXN0YXRpYyBhc3luYyBmcm9tSW1hZ2UodCxyKXtyZXR1cm4gZW8odCxyKX1zdGF0aWMgZnJvbVRleHR1cmUodCxyKXtyZXR1cm4gdG8odCxyKX1zdGF0aWMgZnJvbUdwdUJ1ZmZlcih0LHIpe3JldHVybiBybyh0LHIpfXN0YXRpYyBmcm9tUGlubmVkQnVmZmVyKHQscixhKXtyZXR1cm4gbm8odCxyLGEpfXRvRGF0YVVSTCh0KXtyZXR1cm4gWGkodGhpcyx0KX10b0ltYWdlRGF0YSh0KXtyZXR1cm4gUWkodGhpcyx0KX1nZXQgZGF0YSgpe2lmKHRoaXMuZW5zdXJlVmFsaWQoKSwhdGhpcy5jcHVEYXRhKXRocm93IG5ldyBFcnJvcihcIlRoZSBkYXRhIGlzIG5vdCBvbiBDUFUuIFVzZSBgZ2V0RGF0YSgpYCB0byBkb3dubG9hZCBHUFUgZGF0YSB0byBDUFUsIG9yIHVzZSBgdGV4dHVyZWAgb3IgYGdwdUJ1ZmZlcmAgcHJvcGVydHkgdG8gYWNjZXNzIHRoZSBHUFUgZGF0YSBkaXJlY3RseS5cIik7cmV0dXJuIHRoaXMuY3B1RGF0YX1nZXQgbG9jYXRpb24oKXtyZXR1cm4gdGhpcy5kYXRhTG9jYXRpb259Z2V0IHRleHR1cmUoKXtpZih0aGlzLmVuc3VyZVZhbGlkKCksIXRoaXMuZ3B1VGV4dHVyZURhdGEpdGhyb3cgbmV3IEVycm9yKFwiVGhlIGRhdGEgaXMgbm90IHN0b3JlZCBhcyBhIFdlYkdMIHRleHR1cmUuXCIpO3JldHVybiB0aGlzLmdwdVRleHR1cmVEYXRhfWdldCBncHVCdWZmZXIoKXtpZih0aGlzLmVuc3VyZVZhbGlkKCksIXRoaXMuZ3B1QnVmZmVyRGF0YSl0aHJvdyBuZXcgRXJyb3IoXCJUaGUgZGF0YSBpcyBub3Qgc3RvcmVkIGFzIGEgV2ViR1BVIGJ1ZmZlci5cIik7cmV0dXJuIHRoaXMuZ3B1QnVmZmVyRGF0YX1hc3luYyBnZXREYXRhKHQpe3N3aXRjaCh0aGlzLmVuc3VyZVZhbGlkKCksdGhpcy5kYXRhTG9jYXRpb24pe2Nhc2VcImNwdVwiOmNhc2VcImNwdS1waW5uZWRcIjpyZXR1cm4gdGhpcy5kYXRhO2Nhc2VcInRleHR1cmVcIjpjYXNlXCJncHUtYnVmZmVyXCI6e2lmKCF0aGlzLmRvd25sb2FkZXIpdGhyb3cgbmV3IEVycm9yKFwiVGhlIGN1cnJlbnQgdGVuc29yIGlzIG5vdCBjcmVhdGVkIHdpdGggYSBzcGVjaWZpZWQgZGF0YSBkb3dubG9hZGVyLlwiKTtpZih0aGlzLmlzRG93bmxvYWRpbmcpdGhyb3cgbmV3IEVycm9yKFwiVGhlIGN1cnJlbnQgdGVuc29yIGlzIGJlaW5nIGRvd25sb2FkZWQuXCIpO3RyeXt0aGlzLmlzRG93bmxvYWRpbmc9ITA7bGV0IHI9YXdhaXQgdGhpcy5kb3dubG9hZGVyKCk7cmV0dXJuIHRoaXMuZG93bmxvYWRlcj12b2lkIDAsdGhpcy5kYXRhTG9jYXRpb249XCJjcHVcIix0aGlzLmNwdURhdGE9cix0JiZ0aGlzLmRpc3Bvc2VyJiYodGhpcy5kaXNwb3NlcigpLHRoaXMuZGlzcG9zZXI9dm9pZCAwKSxyfWZpbmFsbHl7dGhpcy5pc0Rvd25sb2FkaW5nPSExfX1kZWZhdWx0OnRocm93IG5ldyBFcnJvcihgY2Fubm90IGdldCBkYXRhIGZyb20gbG9jYXRpb246ICR7dGhpcy5kYXRhTG9jYXRpb259YCl9fWRpc3Bvc2UoKXtpZih0aGlzLmlzRG93bmxvYWRpbmcpdGhyb3cgbmV3IEVycm9yKFwiVGhlIGN1cnJlbnQgdGVuc29yIGlzIGJlaW5nIGRvd25sb2FkZWQuXCIpO3RoaXMuZGlzcG9zZXImJih0aGlzLmRpc3Bvc2VyKCksdGhpcy5kaXNwb3Nlcj12b2lkIDApLHRoaXMuY3B1RGF0YT12b2lkIDAsdGhpcy5ncHVUZXh0dXJlRGF0YT12b2lkIDAsdGhpcy5ncHVCdWZmZXJEYXRhPXZvaWQgMCx0aGlzLmRvd25sb2FkZXI9dm9pZCAwLHRoaXMuaXNEb3dubG9hZGluZz12b2lkIDAsdGhpcy5kYXRhTG9jYXRpb249XCJub25lXCJ9ZW5zdXJlVmFsaWQoKXtpZih0aGlzLmRhdGFMb2NhdGlvbj09PVwibm9uZVwiKXRocm93IG5ldyBFcnJvcihcIlRoZSB0ZW5zb3IgaXMgZGlzcG9zZWQuXCIpfXJlc2hhcGUodCl7aWYodGhpcy5lbnN1cmVWYWxpZCgpLHRoaXMuZG93bmxvYWRlcnx8dGhpcy5kaXNwb3Nlcil0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgcmVzaGFwZSBhIHRlbnNvciB0aGF0IG93bnMgR1BVIHJlc291cmNlLlwiKTtyZXR1cm4gbG8odGhpcyx0KX19fSk7dmFyIFplLEJuPVEoKCk9PntcInVzZSBzdHJpY3RcIjtQbigpO1plPWF0fSk7dmFyIHFyLHBvLGR0LGN0LFRhPVEoKCk9PntcInVzZSBzdHJpY3RcIjtJYSgpO3FyPShlLHQpPT57aXIud2FzbS50cmFjZSYmY29uc29sZS50aW1lU3RhbXAoYCR7ZX06Ok9SVDo6JHt0fWApfSxwbz0oZSx0KT0+e2xldCByPW5ldyBFcnJvcigpLnN0YWNrPy5zcGxpdCgvXFxyXFxufFxccnxcXG4vZyl8fFtdLGE9ITE7Zm9yKGxldCBpPTA7aTxyLmxlbmd0aDtpKyspe2lmKGEmJiFyW2ldLmluY2x1ZGVzKFwiVFJBQ0VfRlVOQ1wiKSl7bGV0IHM9YEZVTkNfJHtlfTo6JHtyW2ldLnRyaW0oKS5zcGxpdChcIiBcIilbMV19YDt0JiYocys9YDo6JHt0fWApLHFyKFwiQ1BVXCIscyk7cmV0dXJufXJbaV0uaW5jbHVkZXMoXCJUUkFDRV9GVU5DXCIpJiYoYT0hMCl9fSxkdD1lPT57aXIud2FzbS50cmFjZSYmcG8oXCJCRUdJTlwiLGUpfSxjdD1lPT57aXIud2FzbS50cmFjZSYmcG8oXCJFTkRcIixlKX19KTt2YXIgTW4sZm89USgoKT0+e1widXNlIHN0cmljdFwiO2tuKCk7Qm4oKTtUYSgpO01uPWNsYXNzIGV7Y29uc3RydWN0b3IodCl7dGhpcy5oYW5kbGVyPXR9YXN5bmMgcnVuKHQscixhKXtkdCgpO2xldCBpPXt9LHM9e307aWYodHlwZW9mIHQhPVwib2JqZWN0XCJ8fHQ9PT1udWxsfHx0IGluc3RhbmNlb2YgWmV8fEFycmF5LmlzQXJyYXkodCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIidmZWVkcycgbXVzdCBiZSBhbiBvYmplY3QgdGhhdCB1c2UgaW5wdXQgbmFtZXMgYXMga2V5cyBhbmQgT25ueFZhbHVlIGFzIGNvcnJlc3BvbmRpbmcgdmFsdWVzLlwiKTtsZXQgbz0hMDtpZih0eXBlb2Ygcj09XCJvYmplY3RcIil7aWYocj09PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlVuZXhwZWN0ZWQgYXJndW1lbnRbMV06IGNhbm5vdCBiZSBudWxsLlwiKTtpZihyIGluc3RhbmNlb2YgWmUpdGhyb3cgbmV3IFR5cGVFcnJvcihcIidmZXRjaGVzJyBjYW5ub3QgYmUgYSBUZW5zb3JcIik7aWYoQXJyYXkuaXNBcnJheShyKSl7aWYoci5sZW5ndGg9PT0wKXRocm93IG5ldyBUeXBlRXJyb3IoXCInZmV0Y2hlcycgY2Fubm90IGJlIGFuIGVtcHR5IGFycmF5LlwiKTtvPSExO2ZvcihsZXQgbSBvZiByKXtpZih0eXBlb2YgbSE9XCJzdHJpbmdcIil0aHJvdyBuZXcgVHlwZUVycm9yKFwiJ2ZldGNoZXMnIG11c3QgYmUgYSBzdHJpbmcgYXJyYXkgb3IgYW4gb2JqZWN0LlwiKTtpZih0aGlzLm91dHB1dE5hbWVzLmluZGV4T2YobSk9PT0tMSl0aHJvdyBuZXcgUmFuZ2VFcnJvcihgJ2ZldGNoZXMnIGNvbnRhaW5zIGludmFsaWQgb3V0cHV0IG5hbWU6ICR7bX0uYCk7aVttXT1udWxsfWlmKHR5cGVvZiBhPT1cIm9iamVjdFwiJiZhIT09bnVsbClzPWE7ZWxzZSBpZih0eXBlb2YgYTxcInVcIil0aHJvdyBuZXcgVHlwZUVycm9yKFwiJ29wdGlvbnMnIG11c3QgYmUgYW4gb2JqZWN0LlwiKX1lbHNle2xldCBtPSExLGw9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMocik7Zm9yKGxldCBnIG9mIHRoaXMub3V0cHV0TmFtZXMpaWYobC5pbmRleE9mKGcpIT09LTEpe2xldCBiPXJbZ107KGI9PT1udWxsfHxiIGluc3RhbmNlb2YgWmUpJiYobT0hMCxvPSExLGlbZ109Yil9aWYobSl7aWYodHlwZW9mIGE9PVwib2JqZWN0XCImJmEhPT1udWxsKXM9YTtlbHNlIGlmKHR5cGVvZiBhPFwidVwiKXRocm93IG5ldyBUeXBlRXJyb3IoXCInb3B0aW9ucycgbXVzdCBiZSBhbiBvYmplY3QuXCIpfWVsc2Ugcz1yfX1lbHNlIGlmKHR5cGVvZiByPFwidVwiKXRocm93IG5ldyBUeXBlRXJyb3IoXCJVbmV4cGVjdGVkIGFyZ3VtZW50WzFdOiBtdXN0IGJlICdmZXRjaGVzJyBvciAnb3B0aW9ucycuXCIpO2ZvcihsZXQgbSBvZiB0aGlzLmlucHV0TmFtZXMpaWYodHlwZW9mIHRbbV0+XCJ1XCIpdGhyb3cgbmV3IEVycm9yKGBpbnB1dCAnJHttfScgaXMgbWlzc2luZyBpbiAnZmVlZHMnLmApO2lmKG8pZm9yKGxldCBtIG9mIHRoaXMub3V0cHV0TmFtZXMpaVttXT1udWxsO2xldCBjPWF3YWl0IHRoaXMuaGFuZGxlci5ydW4odCxpLHMpLHA9e307Zm9yKGxldCBtIGluIGMpaWYoT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwoYyxtKSl7bGV0IGw9Y1ttXTtsIGluc3RhbmNlb2YgWmU/cFttXT1sOnBbbV09bmV3IFplKGwudHlwZSxsLmRhdGEsbC5kaW1zKX1yZXR1cm4gY3QoKSxwfWFzeW5jIHJlbGVhc2UoKXtyZXR1cm4gdGhpcy5oYW5kbGVyLmRpc3Bvc2UoKX1zdGF0aWMgYXN5bmMgY3JlYXRlKHQscixhLGkpe2R0KCk7bGV0IHMsbz17fTtpZih0eXBlb2YgdD09XCJzdHJpbmdcIil7aWYocz10LHR5cGVvZiByPT1cIm9iamVjdFwiJiZyIT09bnVsbClvPXI7ZWxzZSBpZih0eXBlb2YgcjxcInVcIil0aHJvdyBuZXcgVHlwZUVycm9yKFwiJ29wdGlvbnMnIG11c3QgYmUgYW4gb2JqZWN0LlwiKX1lbHNlIGlmKHQgaW5zdGFuY2VvZiBVaW50OEFycmF5KXtpZihzPXQsdHlwZW9mIHI9PVwib2JqZWN0XCImJnIhPT1udWxsKW89cjtlbHNlIGlmKHR5cGVvZiByPFwidVwiKXRocm93IG5ldyBUeXBlRXJyb3IoXCInb3B0aW9ucycgbXVzdCBiZSBhbiBvYmplY3QuXCIpfWVsc2UgaWYodCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyfHx0eXBlb2YgU2hhcmVkQXJyYXlCdWZmZXI8XCJ1XCImJnQgaW5zdGFuY2VvZiBTaGFyZWRBcnJheUJ1ZmZlcil7bGV0IGc9dCxiPTAsdz10LmJ5dGVMZW5ndGg7aWYodHlwZW9mIHI9PVwib2JqZWN0XCImJnIhPT1udWxsKW89cjtlbHNlIGlmKHR5cGVvZiByPT1cIm51bWJlclwiKXtpZihiPXIsIU51bWJlci5pc1NhZmVJbnRlZ2VyKGIpKXRocm93IG5ldyBSYW5nZUVycm9yKFwiJ2J5dGVPZmZzZXQnIG11c3QgYmUgYW4gaW50ZWdlci5cIik7aWYoYjwwfHxiPj1nLmJ5dGVMZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoYCdieXRlT2Zmc2V0JyBpcyBvdXQgb2YgcmFuZ2UgWzAsICR7Zy5ieXRlTGVuZ3RofSkuYCk7aWYodz10LmJ5dGVMZW5ndGgtYix0eXBlb2YgYT09XCJudW1iZXJcIil7aWYodz1hLCFOdW1iZXIuaXNTYWZlSW50ZWdlcih3KSl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIidieXRlTGVuZ3RoJyBtdXN0IGJlIGFuIGludGVnZXIuXCIpO2lmKHc8PTB8fGIrdz5nLmJ5dGVMZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoYCdieXRlTGVuZ3RoJyBpcyBvdXQgb2YgcmFuZ2UgKDAsICR7Zy5ieXRlTGVuZ3RoLWJ9XS5gKTtpZih0eXBlb2YgaT09XCJvYmplY3RcIiYmaSE9PW51bGwpbz1pO2Vsc2UgaWYodHlwZW9mIGk8XCJ1XCIpdGhyb3cgbmV3IFR5cGVFcnJvcihcIidvcHRpb25zJyBtdXN0IGJlIGFuIG9iamVjdC5cIil9ZWxzZSBpZih0eXBlb2YgYTxcInVcIil0aHJvdyBuZXcgVHlwZUVycm9yKFwiJ2J5dGVMZW5ndGgnIG11c3QgYmUgYSBudW1iZXIuXCIpfWVsc2UgaWYodHlwZW9mIHI8XCJ1XCIpdGhyb3cgbmV3IFR5cGVFcnJvcihcIidvcHRpb25zJyBtdXN0IGJlIGFuIG9iamVjdC5cIik7cz1uZXcgVWludDhBcnJheShnLGIsdyl9ZWxzZSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiVW5leHBlY3RlZCBhcmd1bWVudFswXTogbXVzdCBiZSAncGF0aCcgb3IgJ2J1ZmZlcicuXCIpO2xldCBwPShvLmV4ZWN1dGlvblByb3ZpZGVyc3x8W10pLm1hcChnPT50eXBlb2YgZz09XCJzdHJpbmdcIj9nOmcubmFtZSksbD1hd2FpdChhd2FpdCBPbihwKSkuY3JlYXRlSW5mZXJlbmNlU2Vzc2lvbkhhbmRsZXIocyxvKTtyZXR1cm4gY3QoKSxuZXcgZShsKX1zdGFydFByb2ZpbGluZygpe3RoaXMuaGFuZGxlci5zdGFydFByb2ZpbGluZygpfWVuZFByb2ZpbGluZygpe3RoaXMuaGFuZGxlci5lbmRQcm9maWxpbmcoKX1nZXQgaW5wdXROYW1lcygpe3JldHVybiB0aGlzLmhhbmRsZXIuaW5wdXROYW1lc31nZXQgb3V0cHV0TmFtZXMoKXtyZXR1cm4gdGhpcy5oYW5kbGVyLm91dHB1dE5hbWVzfX19KTt2YXIgbW8saG89USgoKT0+e1widXNlIHN0cmljdFwiO2ZvKCk7bW89TW59KTt2YXIgZ289USgoKT0+e1widXNlIHN0cmljdFwifSk7dmFyIFVkLERuLHlvPVEoKCk9PntcInVzZSBzdHJpY3RcIjtrbigpO0JuKCk7VWQ9XCJUcmFpbmluZyBiYWNrZW5kIGNvdWxkIG5vdCBiZSByZXNvbHZlZC4gTWFrZSBzdXJlIHlvdSdyZSB1c2luZyB0aGUgY29ycmVjdCBjb25maWd1cmF0aW9uICYgV2ViQXNzZW1ibHkgZmlsZXMuXCIsRG49Y2xhc3MgZXtjb25zdHJ1Y3Rvcih0LHIsYSl7dGhpcy5oYW5kbGVyPXQsdGhpcy5oYXNPcHRpbWl6ZXJNb2RlbD1yLHRoaXMuaGFzRXZhbE1vZGVsPWF9Z2V0IHRyYWluaW5nSW5wdXROYW1lcygpe3JldHVybiB0aGlzLmhhbmRsZXIuaW5wdXROYW1lc31nZXQgdHJhaW5pbmdPdXRwdXROYW1lcygpe3JldHVybiB0aGlzLmhhbmRsZXIub3V0cHV0TmFtZXN9Z2V0IGV2YWxJbnB1dE5hbWVzKCl7aWYodGhpcy5oYXNFdmFsTW9kZWwpcmV0dXJuIHRoaXMuaGFuZGxlci5ldmFsSW5wdXROYW1lczt0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIHRyYWluaW5nIHNlc3Npb24gaGFzIG5vIGV2YWxNb2RlbCBsb2FkZWQuXCIpfWdldCBldmFsT3V0cHV0TmFtZXMoKXtpZih0aGlzLmhhc0V2YWxNb2RlbClyZXR1cm4gdGhpcy5oYW5kbGVyLmV2YWxPdXRwdXROYW1lczt0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIHRyYWluaW5nIHNlc3Npb24gaGFzIG5vIGV2YWxNb2RlbCBsb2FkZWQuXCIpfXN0YXRpYyBhc3luYyBjcmVhdGUodCxyKXtsZXQgYT10LmV2YWxNb2RlbHx8XCJcIixpPXQub3B0aW1pemVyTW9kZWx8fFwiXCIscz1yfHx7fSxjPShzLmV4ZWN1dGlvblByb3ZpZGVyc3x8W10pLm1hcChtPT50eXBlb2YgbT09XCJzdHJpbmdcIj9tOm0ubmFtZSkscD1hd2FpdCBPbihjKTtpZihwLmNyZWF0ZVRyYWluaW5nU2Vzc2lvbkhhbmRsZXIpe2xldCBtPWF3YWl0IHAuY3JlYXRlVHJhaW5pbmdTZXNzaW9uSGFuZGxlcih0LmNoZWNrcG9pbnRTdGF0ZSx0LnRyYWluTW9kZWwsYSxpLHMpO3JldHVybiBuZXcgZShtLCEhdC5vcHRpbWl6ZXJNb2RlbCwhIXQuZXZhbE1vZGVsKX1lbHNlIHRocm93IG5ldyBFcnJvcihVZCl9dHlwZU5hcnJvd2luZ0ZvclJ1blN0ZXAodCxyLGEsaSxzKXtsZXQgbz17fSxjPXt9O2lmKHR5cGVvZiBhIT1cIm9iamVjdFwifHxhPT09bnVsbHx8YSBpbnN0YW5jZW9mIFplfHxBcnJheS5pc0FycmF5KGEpKXRocm93IG5ldyBUeXBlRXJyb3IoXCInZmVlZHMnIG11c3QgYmUgYW4gb2JqZWN0IHRoYXQgdXNlIGlucHV0IG5hbWVzIGFzIGtleXMgYW5kIE9ubnhWYWx1ZSBhcyBjb3JyZXNwb25kaW5nIHZhbHVlcy5cIik7bGV0IHA9ITA7aWYodHlwZW9mIGk9PVwib2JqZWN0XCIpe2lmKGk9PT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoXCJVbmV4cGVjdGVkIGFyZ3VtZW50WzFdOiBjYW5ub3QgYmUgbnVsbC5cIik7aWYoaSBpbnN0YW5jZW9mIFplKXRocm93IG5ldyBUeXBlRXJyb3IoXCInZmV0Y2hlcycgY2Fubm90IGJlIGEgVGVuc29yXCIpO2lmKEFycmF5LmlzQXJyYXkoaSkpe2lmKGkubGVuZ3RoPT09MCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiJ2ZldGNoZXMnIGNhbm5vdCBiZSBhbiBlbXB0eSBhcnJheS5cIik7cD0hMTtmb3IobGV0IG0gb2YgaSl7aWYodHlwZW9mIG0hPVwic3RyaW5nXCIpdGhyb3cgbmV3IFR5cGVFcnJvcihcIidmZXRjaGVzJyBtdXN0IGJlIGEgc3RyaW5nIGFycmF5IG9yIGFuIG9iamVjdC5cIik7aWYoci5pbmRleE9mKG0pPT09LTEpdGhyb3cgbmV3IFJhbmdlRXJyb3IoYCdmZXRjaGVzJyBjb250YWlucyBpbnZhbGlkIG91dHB1dCBuYW1lOiAke219LmApO29bbV09bnVsbH1pZih0eXBlb2Ygcz09XCJvYmplY3RcIiYmcyE9PW51bGwpYz1zO2Vsc2UgaWYodHlwZW9mIHM8XCJ1XCIpdGhyb3cgbmV3IFR5cGVFcnJvcihcIidvcHRpb25zJyBtdXN0IGJlIGFuIG9iamVjdC5cIil9ZWxzZXtsZXQgbT0hMSxsPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGkpO2ZvcihsZXQgZyBvZiByKWlmKGwuaW5kZXhPZihnKSE9PS0xKXtsZXQgYj1pW2ddOyhiPT09bnVsbHx8YiBpbnN0YW5jZW9mIFplKSYmKG09ITAscD0hMSxvW2ddPWIpfWlmKG0pe2lmKHR5cGVvZiBzPT1cIm9iamVjdFwiJiZzIT09bnVsbCljPXM7ZWxzZSBpZih0eXBlb2YgczxcInVcIil0aHJvdyBuZXcgVHlwZUVycm9yKFwiJ29wdGlvbnMnIG11c3QgYmUgYW4gb2JqZWN0LlwiKX1lbHNlIGM9aX19ZWxzZSBpZih0eXBlb2YgaTxcInVcIil0aHJvdyBuZXcgVHlwZUVycm9yKFwiVW5leHBlY3RlZCBhcmd1bWVudFsxXTogbXVzdCBiZSAnZmV0Y2hlcycgb3IgJ29wdGlvbnMnLlwiKTtmb3IobGV0IG0gb2YgdClpZih0eXBlb2YgYVttXT5cInVcIil0aHJvdyBuZXcgRXJyb3IoYGlucHV0ICcke219JyBpcyBtaXNzaW5nIGluICdmZWVkcycuYCk7aWYocClmb3IobGV0IG0gb2YgcilvW21dPW51bGw7cmV0dXJuW28sY119Y29udmVydEhhbmRsZXJSZXR1cm5UeXBlVG9NYXBPZlRlbnNvcnModCl7bGV0IHI9e307Zm9yKGxldCBhIGluIHQpaWYoT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwodCxhKSl7bGV0IGk9dFthXTtpIGluc3RhbmNlb2YgWmU/clthXT1pOnJbYV09bmV3IFplKGkudHlwZSxpLmRhdGEsaS5kaW1zKX1yZXR1cm4gcn1hc3luYyBsYXp5UmVzZXRHcmFkKCl7YXdhaXQgdGhpcy5oYW5kbGVyLmxhenlSZXNldEdyYWQoKX1hc3luYyBydW5UcmFpblN0ZXAodCxyLGEpe2xldFtpLHNdPXRoaXMudHlwZU5hcnJvd2luZ0ZvclJ1blN0ZXAodGhpcy50cmFpbmluZ0lucHV0TmFtZXMsdGhpcy50cmFpbmluZ091dHB1dE5hbWVzLHQscixhKSxvPWF3YWl0IHRoaXMuaGFuZGxlci5ydW5UcmFpblN0ZXAodCxpLHMpO3JldHVybiB0aGlzLmNvbnZlcnRIYW5kbGVyUmV0dXJuVHlwZVRvTWFwT2ZUZW5zb3JzKG8pfWFzeW5jIHJ1bk9wdGltaXplclN0ZXAodCl7aWYodGhpcy5oYXNPcHRpbWl6ZXJNb2RlbClhd2FpdCB0aGlzLmhhbmRsZXIucnVuT3B0aW1pemVyU3RlcCh0fHx7fSk7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIFRyYWluaW5nU2Vzc2lvbiBoYXMgbm8gT3B0aW1pemVyTW9kZWwgbG9hZGVkLlwiKX1hc3luYyBydW5FdmFsU3RlcCh0LHIsYSl7aWYodGhpcy5oYXNFdmFsTW9kZWwpe2xldFtpLHNdPXRoaXMudHlwZU5hcnJvd2luZ0ZvclJ1blN0ZXAodGhpcy5ldmFsSW5wdXROYW1lcyx0aGlzLmV2YWxPdXRwdXROYW1lcyx0LHIsYSksbz1hd2FpdCB0aGlzLmhhbmRsZXIucnVuRXZhbFN0ZXAodCxpLHMpO3JldHVybiB0aGlzLmNvbnZlcnRIYW5kbGVyUmV0dXJuVHlwZVRvTWFwT2ZUZW5zb3JzKG8pfWVsc2UgdGhyb3cgbmV3IEVycm9yKFwiVGhpcyBUcmFpbmluZ1Nlc3Npb24gaGFzIG5vIEV2YWxNb2RlbCBsb2FkZWQuXCIpfWFzeW5jIGdldFBhcmFtZXRlcnNTaXplKHQ9ITApe3JldHVybiB0aGlzLmhhbmRsZXIuZ2V0UGFyYW1ldGVyc1NpemUodCl9YXN5bmMgbG9hZFBhcmFtZXRlcnNCdWZmZXIodCxyPSEwKXtsZXQgYT1hd2FpdCB0aGlzLmdldFBhcmFtZXRlcnNTaXplKHIpO2lmKHQubGVuZ3RoIT09NCphKXRocm93IG5ldyBFcnJvcihcIlNpemUgb2YgdGhlIGJ1ZmZlciBwYXNzZWQgaW50byBsb2FkUGFyYW1ldGVyc0J1ZmZlciBtdXN0IG1hdGNoIHRoZSBudW1iZXIgb2YgcGFyYW1ldGVycyBpbiB0aGUgbW9kZWwuIFBsZWFzZSB1c2UgZ2V0UGFyYW1ldGVyc1NpemUgbWV0aG9kIHRvIGNoZWNrLlwiKTtyZXR1cm4gdGhpcy5oYW5kbGVyLmxvYWRQYXJhbWV0ZXJzQnVmZmVyKHQscil9YXN5bmMgZ2V0Q29udGlndW91c1BhcmFtZXRlcnModD0hMCl7cmV0dXJuIHRoaXMuaGFuZGxlci5nZXRDb250aWd1b3VzUGFyYW1ldGVycyh0KX1hc3luYyByZWxlYXNlKCl7cmV0dXJuIHRoaXMuaGFuZGxlci5kaXNwb3NlKCl9fX0pO3ZhciBibyx2bz1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7eW8oKTtibz1Ebn0pO3ZhciBFYT17fTtucihFYSx7SW5mZXJlbmNlU2Vzc2lvbjooKT0+bW8sVFJBQ0U6KCk9PnFyLFRSQUNFX0ZVTkNfQkVHSU46KCk9PmR0LFRSQUNFX0ZVTkNfRU5EOigpPT5jdCxUZW5zb3I6KCk9PlplLFRyYWluaW5nU2Vzc2lvbjooKT0+Ym8sZW52OigpPT5BZSxyZWdpc3RlckJhY2tlbmQ6KCk9PkZ0fSk7dmFyIGJ0PVEoKCk9PntcInVzZSBzdHJpY3RcIjtxaSgpO1ppKCk7aG8oKTtCbigpO1RhKCk7Z28oKTt2bygpfSk7dmFyIE9hPXt9O25yKE9hLHtjcmVhdGVSZWFkU3RyZWFtOigpPT4kbyxyZWFkRmlsZTooKT0+V2QscmVhZEZpbGVTeW5jOigpPT5OZH0pO3ZhciBXZCxOZCwkbyxrYT1RKCgpPT57V2Q9dm9pZCAwLE5kPXZvaWQgMCwkbz12b2lkIDB9KTt2YXIgUGE9e307bnIoUGEse2pvaW46KCk9PlZkfSk7dmFyIFZkLFJhPVEoKCk9PntWZD12b2lkIDB9KTt2YXIgeG89YnIoKFNvLEJhKT0+e1widXNlIHN0cmljdFwiO3ZhciBfbz0oKCk9Pnt2YXIgZT10eXBlb2YgZG9jdW1lbnQ8XCJ1XCImJmRvY3VtZW50LmN1cnJlbnRTY3JpcHQ/ZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmM6dm9pZCAwO3JldHVybiB0eXBlb2YgX19maWxlbmFtZTxcInVcIiYmKGU9ZXx8X19maWxlbmFtZSksZnVuY3Rpb24odD17fSl7dmFyIHI9dCxhLGk7ci5yZWFkeT1uZXcgUHJvbWlzZSgodSxmKT0+e2E9dSxpPWZ9KSxyLm1vdW50RXh0ZXJuYWxEYXRhPSh1LGYpPT57KHIuZ2J8fChyLmdiPW5ldyBNYXApKS5zZXQodSxmKX0sci51bm1vdW50RXh0ZXJuYWxEYXRhPSgpPT57ZGVsZXRlIHIuZ2J9LHIuanNlcEluaXQ9KHUsZix5LF8sQSxNLEgsWCk9PntyLkZiPXUsci52Yj1mLHIueGI9eSxyLm9iPV8sci53Yj1BLHIuU2E9TSxyLnliPUgsci56Yj1YLGY9KGoscSxuZSk9PiguLi5tZSk9PntsZXQgJGU9ZXQsUD1xPy4oKTttZT1qKC4uLm1lKTtsZXQgb2U9cT8uKCk7cmV0dXJuIFAhPT1vZSYmKGo9b2UsbmUoUCkscT1uZT1udWxsKSxldCE9JGU/Y24oKTptZX0seT1qPT5hc3luYyguLi5xKT0+e3RyeXtpZihyLmZiKXRocm93IEVycm9yKFwiU2Vzc2lvbiBhbHJlYWR5IHN0YXJ0ZWRcIik7bGV0IG5lPXIuZmI9e0FiOnFbMF0sZXJyb3JzOltdfSxtZT1hd2FpdCBqKC4uLnEpO2lmKHIuZmIhPT1uZSl0aHJvdyBFcnJvcihcIlNlc3Npb24gbWlzbWF0Y2hcIik7dS5mbHVzaCgpO2xldCAkZT1uZS5lcnJvcnM7aWYoMDwkZS5sZW5ndGgpe2xldCBQPWF3YWl0IFByb21pc2UuYWxsKCRlKTtpZihQPVAuZmlsdGVyKG9lPT5vZSksMDxQLmxlbmd0aCl0aHJvdyBFcnJvcihQLmpvaW4oYFxuYCkpfXJldHVybiBtZX1maW5hbGx5e3IuZmI9bnVsbH19LHIuX09ydENyZWF0ZVNlc3Npb249ZihyLl9PcnRDcmVhdGVTZXNzaW9uLCgpPT5yLl9PcnRDcmVhdGVTZXNzaW9uLGo9PnIuX09ydENyZWF0ZVNlc3Npb249aiksci5fT3J0UnVuPXkoZihyLl9PcnRSdW4sKCk9PnIuX09ydFJ1bixqPT5yLl9PcnRSdW49aikpLHIuX09ydFJ1bldpdGhCaW5kaW5nPXkoZihyLl9PcnRSdW5XaXRoQmluZGluZywoKT0+ci5fT3J0UnVuV2l0aEJpbmRpbmcsaj0+ci5fT3J0UnVuV2l0aEJpbmRpbmc9aikpLHIuX09ydEJpbmRJbnB1dD1mKHIuX09ydEJpbmRJbnB1dCwoKT0+ci5fT3J0QmluZElucHV0LGo9PnIuX09ydEJpbmRJbnB1dD1qKSxyLmpzZXBSZWdpc3RlckJ1ZmZlcj0oaixxLG5lLG1lKT0+dS5yZWdpc3RlckJ1ZmZlcihqLHEsbmUsbWUpLHIuanNlcFVucmVnaXN0ZXJCdWZmZXJzPWo9Pnt1LnVucmVnaXN0ZXJCdWZmZXJzKGopfSxyLmpzZXBHZXRCdWZmZXI9aj0+dS5nZXRCdWZmZXIoaiksci5qc2VwQ3JlYXRlRG93bmxvYWRlcj0oaixxLG5lKT0+dS5jcmVhdGVEb3dubG9hZGVyKGoscSxuZSksci5qc2VwT25SdW5TdGFydD0oKT0+dS5vblJ1blN0YXJ0KCl9O3ZhciBzPU9iamVjdC5hc3NpZ24oe30sciksbz1cIi4vdGhpcy5wcm9ncmFtXCIsYz0odSxmKT0+e3Rocm93IGZ9LHA9dHlwZW9mIHdpbmRvdz09XCJvYmplY3RcIixtPXR5cGVvZiBpbXBvcnRTY3JpcHRzPT1cImZ1bmN0aW9uXCIsbD10eXBlb2YgcHJvY2Vzcz09XCJvYmplY3RcIiYmdHlwZW9mIHByb2Nlc3MudmVyc2lvbnM9PVwib2JqZWN0XCImJnR5cGVvZiBwcm9jZXNzLnZlcnNpb25zLm5vZGU9PVwic3RyaW5nXCIsZz1cIlwiLGIsdywkO2lmKGwpe3ZhciB4PShrYSgpLEd0KE9hKSksVD0oUmEoKSxHdChQYSkpO2c9bT9ULmRpcm5hbWUoZykrXCIvXCI6X19kaXJuYW1lK1wiL1wiLGI9KHUsZik9Pih1PWllKHUpP25ldyBVUkwodSk6VC5ub3JtYWxpemUodSkseC5yZWFkRmlsZVN5bmModSxmP3ZvaWQgMDpcInV0ZjhcIikpLCQ9dT0+KHU9Yih1LCEwKSx1LmJ1ZmZlcnx8KHU9bmV3IFVpbnQ4QXJyYXkodSkpLHUpLHc9KHUsZix5LF89ITApPT57dT1pZSh1KT9uZXcgVVJMKHUpOlQubm9ybWFsaXplKHUpLHgucmVhZEZpbGUodSxfP3ZvaWQgMDpcInV0ZjhcIiwoQSxNKT0+e0E/eShBKTpmKF8/TS5idWZmZXI6TSl9KX0sIXIudGhpc1Byb2dyYW0mJjE8cHJvY2Vzcy5hcmd2Lmxlbmd0aCYmKG89cHJvY2Vzcy5hcmd2WzFdLnJlcGxhY2UoL1xcXFwvZyxcIi9cIikpLHByb2Nlc3MuYXJndi5zbGljZSgyKSxjPSh1LGYpPT57dGhyb3cgcHJvY2Vzcy5leGl0Q29kZT11LGZ9LHIuaW5zcGVjdD0oKT0+XCJbRW1zY3JpcHRlbiBNb2R1bGUgb2JqZWN0XVwifWVsc2UocHx8bSkmJihtP2c9c2VsZi5sb2NhdGlvbi5ocmVmOnR5cGVvZiBkb2N1bWVudDxcInVcIiYmZG9jdW1lbnQuY3VycmVudFNjcmlwdCYmKGc9ZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmMpLGUmJihnPWUpLGcuaW5kZXhPZihcImJsb2I6XCIpIT09MD9nPWcuc3Vic3RyKDAsZy5yZXBsYWNlKC9bPyNdLiovLFwiXCIpLmxhc3RJbmRleE9mKFwiL1wiKSsxKTpnPVwiXCIsYj11PT57dmFyIGY9bmV3IFhNTEh0dHBSZXF1ZXN0O3JldHVybiBmLm9wZW4oXCJHRVRcIix1LCExKSxmLnNlbmQobnVsbCksZi5yZXNwb25zZVRleHR9LG0mJigkPXU9Pnt2YXIgZj1uZXcgWE1MSHR0cFJlcXVlc3Q7cmV0dXJuIGYub3BlbihcIkdFVFwiLHUsITEpLGYucmVzcG9uc2VUeXBlPVwiYXJyYXlidWZmZXJcIixmLnNlbmQobnVsbCksbmV3IFVpbnQ4QXJyYXkoZi5yZXNwb25zZSl9KSx3PSh1LGYseSk9Pnt2YXIgXz1uZXcgWE1MSHR0cFJlcXVlc3Q7Xy5vcGVuKFwiR0VUXCIsdSwhMCksXy5yZXNwb25zZVR5cGU9XCJhcnJheWJ1ZmZlclwiLF8ub25sb2FkPSgpPT57Xy5zdGF0dXM9PTIwMHx8Xy5zdGF0dXM9PTAmJl8ucmVzcG9uc2U/ZihfLnJlc3BvbnNlKTp5KCl9LF8ub25lcnJvcj15LF8uc2VuZChudWxsKX0pO3ZhciBDPWNvbnNvbGUubG9nLmJpbmQoY29uc29sZSksUz1jb25zb2xlLmVycm9yLmJpbmQoY29uc29sZSk7T2JqZWN0LmFzc2lnbihyLHMpLHM9bnVsbCx0eXBlb2YgV2ViQXNzZW1ibHkhPVwib2JqZWN0XCImJkdlKFwibm8gbmF0aXZlIHdhc20gc3VwcG9ydCBkZXRlY3RlZFwiKTt2YXIgRSxPPSExLFUsRCxWLFksc2UsQix0ZSxrZSxPZSxlZSxiZTtmdW5jdGlvbiBVZSgpe3ZhciB1PUUuYnVmZmVyO3IuSEVBUDg9RD1uZXcgSW50OEFycmF5KHUpLHIuSEVBUDE2PVk9bmV3IEludDE2QXJyYXkodSksci5IRUFQVTg9Vj1uZXcgVWludDhBcnJheSh1KSxyLkhFQVBVMTY9c2U9bmV3IFVpbnQxNkFycmF5KHUpLHIuSEVBUDMyPUI9bmV3IEludDMyQXJyYXkodSksci5IRUFQVTMyPXRlPW5ldyBVaW50MzJBcnJheSh1KSxyLkhFQVBGMzI9a2U9bmV3IEZsb2F0MzJBcnJheSh1KSxyLkhFQVBGNjQ9YmU9bmV3IEZsb2F0NjRBcnJheSh1KSxyLkhFQVA2ND1PZT1uZXcgQmlnSW50NjRBcnJheSh1KSxyLkhFQVBVNjQ9ZWU9bmV3IEJpZ1VpbnQ2NEFycmF5KHUpfXZhciBwZT1bXSx5ZT1bXSxkZT1bXSx2ZT0wLFdlPW51bGwsQmU9bnVsbDtmdW5jdGlvbiBHZSh1KXt0aHJvdyB1PVwiQWJvcnRlZChcIit1K1wiKVwiLFModSksTz0hMCxVPTEsdT1uZXcgV2ViQXNzZW1ibHkuUnVudGltZUVycm9yKHUrXCIuIEJ1aWxkIHdpdGggLXNBU1NFUlRJT05TIGZvciBtb3JlIGluZm8uXCIpLGkodSksdX12YXIgRj11PT51LnN0YXJ0c1dpdGgoXCJkYXRhOmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTtiYXNlNjQsXCIpLGllPXU9PnUuc3RhcnRzV2l0aChcImZpbGU6Ly9cIiksaGU7aWYoaGU9XCJvcnQtd2FzbS1zaW1kLndhc21cIiwhRihoZSkpe3ZhciBKZT1oZTtoZT1yLmxvY2F0ZUZpbGU/ci5sb2NhdGVGaWxlKEplLGcpOmcrSmV9ZnVuY3Rpb24gb3QodSl7aWYoJClyZXR1cm4gJCh1KTt0aHJvd1wiYm90aCBhc3luYyBhbmQgc3luYyBmZXRjaGluZyBvZiB0aGUgd2FzbSBmYWlsZWRcIn1mdW5jdGlvbiBSZSh1KXtpZihwfHxtKXtpZih0eXBlb2YgZmV0Y2g9PVwiZnVuY3Rpb25cIiYmIWllKHUpKXJldHVybiBmZXRjaCh1LHtjcmVkZW50aWFsczpcInNhbWUtb3JpZ2luXCJ9KS50aGVuKGY9PntpZighZi5vayl0aHJvd1wiZmFpbGVkIHRvIGxvYWQgd2FzbSBiaW5hcnkgZmlsZSBhdCAnXCIrdStcIidcIjtyZXR1cm4gZi5hcnJheUJ1ZmZlcigpfSkuY2F0Y2goKCk9Pm90KHUpKTtpZih3KXJldHVybiBuZXcgUHJvbWlzZSgoZix5KT0+e3codSxfPT5mKG5ldyBVaW50OEFycmF5KF8pKSx5KX0pfXJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5vdCh1KSl9ZnVuY3Rpb24gRmUodSxmLHkpe3JldHVybiBSZSh1KS50aGVuKF89PldlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKF8sZikpLnRoZW4oXz0+XykudGhlbih5LF89PntTKGBmYWlsZWQgdG8gYXN5bmNocm9ub3VzbHkgcHJlcGFyZSB3YXNtOiAke199YCksR2UoXyl9KX1mdW5jdGlvbiBCdCh1LGYpe3ZhciB5PWhlO3JldHVybiB0eXBlb2YgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmchPVwiZnVuY3Rpb25cInx8Rih5KXx8aWUoeSl8fGx8fHR5cGVvZiBmZXRjaCE9XCJmdW5jdGlvblwiP0ZlKHksdSxmKTpmZXRjaCh5LHtjcmVkZW50aWFsczpcInNhbWUtb3JpZ2luXCJ9KS50aGVuKF89PldlYkFzc2VtYmx5Lmluc3RhbnRpYXRlU3RyZWFtaW5nKF8sdSkudGhlbihmLGZ1bmN0aW9uKEEpe3JldHVybiBTKGB3YXNtIHN0cmVhbWluZyBjb21waWxlIGZhaWxlZDogJHtBfWApLFMoXCJmYWxsaW5nIGJhY2sgdG8gQXJyYXlCdWZmZXIgaW5zdGFudGlhdGlvblwiKSxGZSh5LHUsZil9KSl9dmFyIE10PXs5NDUxNjg6KHUsZix5LF8pPT57aWYodHlwZW9mIHI+XCJ1XCJ8fCFyLmdiKXJldHVybiAxO2lmKHU9cWUodT4+PjApLHUuc3RhcnRzV2l0aChcIi4vXCIpJiYodT11LnN1YnN0cmluZygyKSksdT1yLmdiLmdldCh1KSwhdSlyZXR1cm4gMjtpZihmPj4+PTAseT4+Pj0wLGYreT51LmJ5dGVMZW5ndGgpcmV0dXJuIDM7dHJ5e3JldHVybiBWLnNldCh1LnN1YmFycmF5KGYsZit5KSxfPj4+MD4+PjApLDB9Y2F0Y2h7cmV0dXJuIDR9fSw5NDU2Njk6dT0+ci52Yih1KSw5NDU3MDI6dT0+ci54Yih1KSw5NDU3MzQ6KHUsZix5KT0+e3Iub2IodSxmLHksITApfSw5NDU3NzM6KHUsZix5KT0+e3Iub2IodSxmLHkpfSw5NDU4MDY6dT0+e3IuU2EoXCJBYnNcIix1LHZvaWQgMCl9LDk0NTg1Nzp1PT57ci5TYShcIk5lZ1wiLHUsdm9pZCAwKX0sOTQ1OTA4OnU9PntyLlNhKFwiRmxvb3JcIix1LHZvaWQgMCl9LDk0NTk2MTp1PT57ci5TYShcIkNlaWxcIix1LHZvaWQgMCl9LDk0NjAxMzp1PT57ci5TYShcIlJlY2lwcm9jYWxcIix1LHZvaWQgMCl9LDk0NjA3MTp1PT57ci5TYShcIlNxcnRcIix1LHZvaWQgMCl9LDk0NjEyMzp1PT57ci5TYShcIkV4cFwiLHUsdm9pZCAwKX0sOTQ2MTc0OnU9PntyLlNhKFwiRXJmXCIsdSx2b2lkIDApfSw5NDYyMjU6dT0+e3IuU2EoXCJTaWdtb2lkXCIsdSx2b2lkIDApfSw5NDYyODA6KHUsZix5KT0+e3IuU2EoXCJIYXJkU2lnbW9pZFwiLHUse2FscGhhOmYsYmV0YTp5fSl9LDk0NjM1OTp1PT57ci5TYShcIkxvZ1wiLHUsdm9pZCAwKX0sOTQ2NDEwOnU9PntyLlNhKFwiU2luXCIsdSx2b2lkIDApfSw5NDY0NjE6dT0+e3IuU2EoXCJDb3NcIix1LHZvaWQgMCl9LDk0NjUxMjp1PT57ci5TYShcIlRhblwiLHUsdm9pZCAwKX0sOTQ2NTYzOnU9PntyLlNhKFwiQXNpblwiLHUsdm9pZCAwKX0sOTQ2NjE1OnU9PntyLlNhKFwiQWNvc1wiLHUsdm9pZCAwKX0sOTQ2NjY3OnU9PntyLlNhKFwiQXRhblwiLHUsdm9pZCAwKX0sOTQ2NzE5OnU9PntyLlNhKFwiU2luaFwiLHUsdm9pZCAwKX0sOTQ2NzcxOnU9PntyLlNhKFwiQ29zaFwiLHUsdm9pZCAwKX0sOTQ2ODIzOnU9PntyLlNhKFwiQXNpbmhcIix1LHZvaWQgMCl9LDk0Njg3Njp1PT57ci5TYShcIkFjb3NoXCIsdSx2b2lkIDApfSw5NDY5Mjk6dT0+e3IuU2EoXCJBdGFuaFwiLHUsdm9pZCAwKX0sOTQ2OTgyOnU9PntyLlNhKFwiVGFuaFwiLHUsdm9pZCAwKX0sOTQ3MDM0OnU9PntyLlNhKFwiTm90XCIsdSx2b2lkIDApfSw5NDcwODU6KHUsZix5KT0+e3IuU2EoXCJDbGlwXCIsdSx7bWluOmYsbWF4Onl9KX0sOTQ3MTU0OnU9PntyLlNhKFwiQ2xpcFwiLHUsdm9pZCAwKX0sOTQ3MjA2Oih1LGYpPT57ci5TYShcIkVsdVwiLHUse2FscGhhOmZ9KX0sOTQ3MjY0OnU9PntyLlNhKFwiUmVsdVwiLHUsdm9pZCAwKX0sOTQ3MzE2Oih1LGYpPT57ci5TYShcIkxlYWt5UmVsdVwiLHUse2FscGhhOmZ9KX0sOTQ3MzgwOih1LGYpPT57ci5TYShcIlRocmVzaG9sZGVkUmVsdVwiLHUse2FscGhhOmZ9KX0sOTQ3NDUwOih1LGYpPT57ci5TYShcIkNhc3RcIix1LHt0bzpmfSl9LDk0NzUwODp1PT57ci5TYShcIkFkZFwiLHUsdm9pZCAwKX0sOTQ3NTU5OnU9PntyLlNhKFwiU3ViXCIsdSx2b2lkIDApfSw5NDc2MTA6dT0+e3IuU2EoXCJNdWxcIix1LHZvaWQgMCl9LDk0NzY2MTp1PT57ci5TYShcIkRpdlwiLHUsdm9pZCAwKX0sOTQ3NzEyOnU9PntyLlNhKFwiUG93XCIsdSx2b2lkIDApfSw5NDc3NjM6dT0+e3IuU2EoXCJFcXVhbFwiLHUsdm9pZCAwKX0sOTQ3ODE2OnU9PntyLlNhKFwiR3JlYXRlclwiLHUsdm9pZCAwKX0sOTQ3ODcxOnU9PntyLlNhKFwiR3JlYXRlck9yRXF1YWxcIix1LHZvaWQgMCl9LDk0NzkzMzp1PT57ci5TYShcIkxlc3NcIix1LHZvaWQgMCl9LDk0Nzk4NTp1PT57ci5TYShcIkxlc3NPckVxdWFsXCIsdSx2b2lkIDApfSw5NDgwNDQ6KHUsZix5LF8sQSk9PntyLlNhKFwiUmVkdWNlTWVhblwiLHUse2tlZXBEaW1zOiEhZixub29wV2l0aEVtcHR5QXhlczohIXksYXhlczpfP0FycmF5LmZyb20oQi5zdWJhcnJheShfPj4+MCxBPj4+MCkpOltdfSl9LDk0ODIwMzoodSxmLHksXyxBKT0+e3IuU2EoXCJSZWR1Y2VNYXhcIix1LHtrZWVwRGltczohIWYsbm9vcFdpdGhFbXB0eUF4ZXM6ISF5LGF4ZXM6Xz9BcnJheS5mcm9tKEIuc3ViYXJyYXkoXz4+PjAsQT4+PjApKTpbXX0pfSw5NDgzNjE6KHUsZix5LF8sQSk9PntyLlNhKFwiUmVkdWNlTWluXCIsdSx7a2VlcERpbXM6ISFmLG5vb3BXaXRoRW1wdHlBeGVzOiEheSxheGVzOl8/QXJyYXkuZnJvbShCLnN1YmFycmF5KF8+Pj4wLEE+Pj4wKSk6W119KX0sOTQ4NTE5Oih1LGYseSxfLEEpPT57ci5TYShcIlJlZHVjZVByb2RcIix1LHtrZWVwRGltczohIWYsbm9vcFdpdGhFbXB0eUF4ZXM6ISF5LGF4ZXM6Xz9BcnJheS5mcm9tKEIuc3ViYXJyYXkoXz4+PjAsQT4+PjApKTpbXX0pfSw5NDg2Nzg6KHUsZix5LF8sQSk9PntyLlNhKFwiUmVkdWNlU3VtXCIsdSx7a2VlcERpbXM6ISFmLG5vb3BXaXRoRW1wdHlBeGVzOiEheSxheGVzOl8/QXJyYXkuZnJvbShCLnN1YmFycmF5KF8+Pj4wLEE+Pj4wKSk6W119KX0sOTQ4ODM2Oih1LGYseSxfLEEpPT57ci5TYShcIlJlZHVjZUwxXCIsdSx7a2VlcERpbXM6ISFmLG5vb3BXaXRoRW1wdHlBeGVzOiEheSxheGVzOl8/QXJyYXkuZnJvbShCLnN1YmFycmF5KF8+Pj4wLEE+Pj4wKSk6W119KX0sOTQ4OTkzOih1LGYseSxfLEEpPT57ci5TYShcIlJlZHVjZUwyXCIsdSx7a2VlcERpbXM6ISFmLG5vb3BXaXRoRW1wdHlBeGVzOiEheSxheGVzOl8/QXJyYXkuZnJvbShCLnN1YmFycmF5KF8+Pj4wLEE+Pj4wKSk6W119KX0sOTQ5MTUwOih1LGYseSxfLEEpPT57ci5TYShcIlJlZHVjZUxvZ1N1bVwiLHUse2tlZXBEaW1zOiEhZixub29wV2l0aEVtcHR5QXhlczohIXksYXhlczpfP0FycmF5LmZyb20oQi5zdWJhcnJheShfPj4+MCxBPj4+MCkpOltdfSl9LDk0OTMxMToodSxmLHksXyxBKT0+e3IuU2EoXCJSZWR1Y2VTdW1TcXVhcmVcIix1LHtrZWVwRGltczohIWYsbm9vcFdpdGhFbXB0eUF4ZXM6ISF5LGF4ZXM6Xz9BcnJheS5mcm9tKEIuc3ViYXJyYXkoXz4+PjAsQT4+PjApKTpbXX0pfSw5NDk0NzU6KHUsZix5LF8sQSk9PntyLlNhKFwiUmVkdWNlTG9nU3VtRXhwXCIsdSx7a2VlcERpbXM6ISFmLG5vb3BXaXRoRW1wdHlBeGVzOiEheSxheGVzOl8/QXJyYXkuZnJvbShCLnN1YmFycmF5KF8+Pj4wLEE+Pj4wKSk6W119KX0sOTQ5NjM5OnU9PntyLlNhKFwiV2hlcmVcIix1LHZvaWQgMCl9LDk0OTY5MjoodSxmLHkpPT57ci5TYShcIlRyYW5zcG9zZVwiLHUse3Blcm06Zj9BcnJheS5mcm9tKEIuc3ViYXJyYXkoZj4+PjAseT4+PjApKTpbXX0pfSw5NDk4MDA6KHUsZix5LF8sQSxNLEgsWCxqLHEsbmUsbWUsJGUsUCxvZSk9PntyLlNhKFwiQ29udlRyYW5zcG9zZVwiLHUse2Zvcm1hdDpqP1wiTkhXQ1wiOlwiTkNIV1wiLGF1dG9QYWQ6ZixkaWxhdGlvbnM6W3ldLGdyb3VwOl8sa2VybmVsX3NoYXBlOltBXSxwYWRzOltNLEhdLHN0cmlkZXM6W1hdLHdJc0NvbnN0OigpPT4hIURbcT4+PjBdLG91dHB1dFBhZGRpbmc6bmU/QXJyYXkuZnJvbShCLnN1YmFycmF5KG5lPj4+MCxtZT4+PjApKTpbXSxvdXRwdXRTaGFwZTokZT9BcnJheS5mcm9tKEIuc3ViYXJyYXkoJGU+Pj4wLFA+Pj4wKSk6W10sYWN0aXZhdGlvbjpxZShvZSl9KX0sOTUwMjAyOih1LGYseSxfLEEsTSxILFgsaixxLG5lLG1lLCRlLFApPT57ci5TYShcIkNvbnZUcmFuc3Bvc2VcIix1LHtmb3JtYXQ6WD9cIk5IV0NcIjpcIk5DSFdcIixhdXRvUGFkOmYsZGlsYXRpb25zOkFycmF5LmZyb20oQi5zdWJhcnJheSh5Pj4+MCwoeT4+PjApKzI+Pj4wKSksZ3JvdXA6XyxrZXJuZWxTaGFwZTpBcnJheS5mcm9tKEIuc3ViYXJyYXkoQT4+PjAsKEE+Pj4wKSsyPj4+MCkpLHBhZHM6QXJyYXkuZnJvbShCLnN1YmFycmF5KE0+Pj4wLChNPj4+MCkrND4+PjApKSxzdHJpZGVzOkFycmF5LmZyb20oQi5zdWJhcnJheShIPj4+MCwoSD4+PjApKzI+Pj4wKSksd0lzQ29uc3Q6KCk9PiEhRFtqPj4+MF0sb3V0cHV0UGFkZGluZzpxP0FycmF5LmZyb20oQi5zdWJhcnJheShxPj4+MCxuZT4+PjApKTpbXSxvdXRwdXRTaGFwZTptZT9BcnJheS5mcm9tKEIuc3ViYXJyYXkobWU+Pj4wLCRlPj4+MCkpOltdLGFjdGl2YXRpb246cWUoUCl9KX0sOTUwNzY3Oih1LGYseSxfLEEsTSxILFgsaixxLG5lLG1lLCRlLFAsb2UpPT57ci5TYShcIkNvbnZUcmFuc3Bvc2VcIix1LHtmb3JtYXQ6aj9cIk5IV0NcIjpcIk5DSFdcIixhdXRvUGFkOmYsZGlsYXRpb25zOlt5XSxncm91cDpfLGtlcm5lbF9zaGFwZTpbQV0scGFkczpbTSxIXSxzdHJpZGVzOltYXSx3SXNDb25zdDooKT0+ISFEW3E+Pj4wXSxvdXRwdXRQYWRkaW5nOm5lP0FycmF5LmZyb20oQi5zdWJhcnJheShuZT4+PjAsbWU+Pj4wKSk6W10sb3V0cHV0U2hhcGU6JGU/QXJyYXkuZnJvbShCLnN1YmFycmF5KCRlPj4+MCxQPj4+MCkpOltdLGFjdGl2YXRpb246cWUob2UpfSl9LDk1MTE2OToodSxmLHksXyxBLE0sSCxYLGoscSxuZSxtZSwkZSxQKT0+e3IuU2EoXCJDb252VHJhbnNwb3NlXCIsdSx7Zm9ybWF0Olg/XCJOSFdDXCI6XCJOQ0hXXCIsYXV0b1BhZDpmLGRpbGF0aW9uczpBcnJheS5mcm9tKEIuc3ViYXJyYXkoeT4+PjAsKHk+Pj4wKSsyPj4+MCkpLGdyb3VwOl8sa2VybmVsU2hhcGU6QXJyYXkuZnJvbShCLnN1YmFycmF5KEE+Pj4wLChBPj4+MCkrMj4+PjApKSxwYWRzOkFycmF5LmZyb20oQi5zdWJhcnJheShNPj4+MCwoTT4+PjApKzQ+Pj4wKSksc3RyaWRlczpBcnJheS5mcm9tKEIuc3ViYXJyYXkoSD4+PjAsKEg+Pj4wKSsyPj4+MCkpLHdJc0NvbnN0OigpPT4hIURbaj4+PjBdLG91dHB1dFBhZGRpbmc6cT9BcnJheS5mcm9tKEIuc3ViYXJyYXkocT4+PjAsbmU+Pj4wKSk6W10sb3V0cHV0U2hhcGU6bWU/QXJyYXkuZnJvbShCLnN1YmFycmF5KG1lPj4+MCwkZT4+PjApKTpbXSxhY3RpdmF0aW9uOnFlKFApfSl9LDk1MTczNDoodSxmKT0+e3IuU2EoXCJHbG9iYWxBdmVyYWdlUG9vbFwiLHUse2Zvcm1hdDpmP1wiTkhXQ1wiOlwiTkNIV1wifSl9LDk1MTgyNToodSxmLHksXyxBLE0sSCxYLGoscSxuZSxtZSwkZSxQLG9lLEllKT0+e3IuU2EoXCJBdmVyYWdlUG9vbFwiLHUse2Zvcm1hdDpJZT9cIk5IV0NcIjpcIk5DSFdcIixhdXRvX3BhZDpmLGNlaWxfbW9kZTp5LGNvdW50X2luY2x1ZGVfcGFkOl8sc3RvcmFnZV9vcmRlcjpBLGRpbGF0aW9uczpbTSxIXSxrZXJuZWxfc2hhcGU6W1gsal0scGFkczpbcSxuZSxtZSwkZV0sc3RyaWRlczpbUCxvZV19KX0sOTUyMTA5Oih1LGYpPT57ci5TYShcIkdsb2JhbEF2ZXJhZ2VQb29sXCIsdSx7Zm9ybWF0OmY/XCJOSFdDXCI6XCJOQ0hXXCJ9KX0sOTUyMjAwOih1LGYseSxfLEEsTSxILFgsaixxLG5lLG1lLCRlLFAsb2UsSWUpPT57ci5TYShcIkF2ZXJhZ2VQb29sXCIsdSx7Zm9ybWF0OkllP1wiTkhXQ1wiOlwiTkNIV1wiLGF1dG9fcGFkOmYsY2VpbF9tb2RlOnksY291bnRfaW5jbHVkZV9wYWQ6XyxzdG9yYWdlX29yZGVyOkEsZGlsYXRpb25zOltNLEhdLGtlcm5lbF9zaGFwZTpbWCxqXSxwYWRzOltxLG5lLG1lLCRlXSxzdHJpZGVzOltQLG9lXX0pfSw5NTI0ODQ6KHUsZik9PntyLlNhKFwiR2xvYmFsTWF4UG9vbFwiLHUse2Zvcm1hdDpmP1wiTkhXQ1wiOlwiTkNIV1wifSl9LDk1MjU3MToodSxmLHksXyxBLE0sSCxYLGoscSxuZSxtZSwkZSxQLG9lLEllKT0+e3IuU2EoXCJNYXhQb29sXCIsdSx7Zm9ybWF0OkllP1wiTkhXQ1wiOlwiTkNIV1wiLGF1dG9fcGFkOmYsY2VpbF9tb2RlOnksY291bnRfaW5jbHVkZV9wYWQ6XyxzdG9yYWdlX29yZGVyOkEsZGlsYXRpb25zOltNLEhdLGtlcm5lbF9zaGFwZTpbWCxqXSxwYWRzOltxLG5lLG1lLCRlXSxzdHJpZGVzOltQLG9lXX0pfSw5NTI4NTE6KHUsZik9PntyLlNhKFwiR2xvYmFsTWF4UG9vbFwiLHUse2Zvcm1hdDpmP1wiTkhXQ1wiOlwiTkNIV1wifSl9LDk1MjkzODoodSxmLHksXyxBLE0sSCxYLGoscSxuZSxtZSwkZSxQLG9lLEllKT0+e3IuU2EoXCJNYXhQb29sXCIsdSx7Zm9ybWF0OkllP1wiTkhXQ1wiOlwiTkNIV1wiLGF1dG9fcGFkOmYsY2VpbF9tb2RlOnksY291bnRfaW5jbHVkZV9wYWQ6XyxzdG9yYWdlX29yZGVyOkEsZGlsYXRpb25zOltNLEhdLGtlcm5lbF9zaGFwZTpbWCxqXSxwYWRzOltxLG5lLG1lLCRlXSxzdHJpZGVzOltQLG9lXX0pfSw5NTMyMTg6KHUsZix5LF8sQSk9PntyLlNhKFwiR2VtbVwiLHUse2FscGhhOmYsYmV0YTp5LHRyYW5zQTpfLHRyYW5zQjpBfSl9LDk1MzMyMjp1PT57ci5TYShcIk1hdE11bFwiLHUsdm9pZCAwKX0sOTUzMzc2Oih1LGYseSxfKT0+e3IuU2EoXCJBcmdNYXhcIix1LHtrZWVwRGltczohIWYsc2VsZWN0TGFzdEluZGV4OiEheSxheGlzOl99KX0sOTUzNDg0Oih1LGYseSxfKT0+e3IuU2EoXCJBcmdNaW5cIix1LHtrZWVwRGltczohIWYsc2VsZWN0TGFzdEluZGV4OiEheSxheGlzOl99KX0sOTUzNTkyOih1LGYpPT57ci5TYShcIlNvZnRtYXhcIix1LHtheGlzOmZ9KX0sOTUzNjU1Oih1LGYpPT57ci5TYShcIkNvbmNhdFwiLHUse2F4aXM6Zn0pfSw5NTM3MTU6KHUsZix5LF8sQSk9PntyLlNhKFwiU3BsaXRcIix1LHtheGlzOmYsbnVtT3V0cHV0czp5LHNwbGl0U2l6ZXM6Xz9BcnJheS5mcm9tKEIuc3ViYXJyYXkoXz4+PjAsQT4+PjApKTpbXX0pfSw5NTM4NTU6dT0+e3IuU2EoXCJFeHBhbmRcIix1LHZvaWQgMCl9LDk1MzkwOToodSxmKT0+e3IuU2EoXCJHYXRoZXJcIix1LHtheGlzOk51bWJlcihmKX0pfSw5NTM5ODA6KHUsZik9PntyLlNhKFwiR2F0aGVyRWxlbWVudHNcIix1LHtheGlzOk51bWJlcihmKX0pfSw5NTQwNTk6KHUsZix5LF8sQSxNLEgsWCxqLHEsbmUpPT57ci5TYShcIlJlc2l6ZVwiLHUse2FudGlhbGlhczpmLGF4ZXM6eT9BcnJheS5mcm9tKEIuc3ViYXJyYXkoeT4+PjAsXz4+PjApKTpbXSxjb29yZGluYXRlVHJhbnNmb3JtTW9kZTpxZShBKSxjdWJpY0NvZWZmQTpNLGV4Y2x1ZGVPdXRzaWRlOkgsZXh0cmFwb2xhdGlvblZhbHVlOlgsa2VlcEFzcGVjdFJhdGlvUG9saWN5OnFlKGopLG1vZGU6cWUocSksbmVhcmVzdE1vZGU6cWUobmUpfSl9LDk1NDQwNToodSxmLHksXyxBLE0sSCk9PntyLlNhKFwiU2xpY2VcIix1LHtzdGFydHM6Zj9BcnJheS5mcm9tKEIuc3ViYXJyYXkoZj4+PjAseT4+PjApKTpbXSxlbmRzOl8/QXJyYXkuZnJvbShCLnN1YmFycmF5KF8+Pj4wLEE+Pj4wKSk6W10sYXhlczpNP0FycmF5LmZyb20oQi5zdWJhcnJheShNPj4+MCxIPj4+MCkpOltdfSl9LDk1NDYyMTp1PT57ci5TYShcIlRpbGVcIix1LHZvaWQgMCl9LDk1NDY3MzoodSxmLHkpPT57ci5TYShcIkxheWVyTm9ybWFsaXphdGlvblwiLHUse2F4aXM6TnVtYmVyKGYpLGVwc2lsb246TnVtYmVyKHkpfSl9LDk1NDc4MDoodSxmLHkpPT57ci5TYShcIkluc3RhbmNlTm9ybWFsaXphdGlvblwiLHUse2Vwc2lsb246Zixmb3JtYXQ6eT9cIk5IV0NcIjpcIk5DSFdcIn0pfSw5NTQ4OTQ6KHUsZix5KT0+e3IuU2EoXCJJbnN0YW5jZU5vcm1hbGl6YXRpb25cIix1LHtlcHNpbG9uOmYsZm9ybWF0Onk/XCJOSFdDXCI6XCJOQ0hXXCJ9KX0sOTU1MDA4OnU9PntyLlNhKFwiUmFuZ2VcIix1LHZvaWQgMCl9LDk1NTA2MToodSxmKT0+e3IuU2EoXCJFaW5zdW1cIix1LHtlcXVhdGlvbjpxZShmKX0pfSw5NTUxNDI6KHUsZix5LF8sQSk9PntyLlNhKFwiUGFkXCIsdSx7bW9kZTpmLHZhbHVlOnkscGFkczpfP0FycmF5LmZyb20oQi5zdWJhcnJheShfPj4+MCxBPj4+MCkpOltdfSl9LDk1NTI2OToodSxmLHksXyxBLE0pPT57ci5TYShcIkJhdGNoTm9ybWFsaXphdGlvblwiLHUse2Vwc2lsb246Zixtb21lbnR1bTp5LHNwYXRpYWw6ISFBLHRyYWluaW5nTW9kZTohIV8sZm9ybWF0Ok0/XCJOSFdDXCI6XCJOQ0hXXCJ9KX0sOTU1NDM4Oih1LGYseSxfLEEsTSk9PntyLlNhKFwiQmF0Y2hOb3JtYWxpemF0aW9uXCIsdSx7ZXBzaWxvbjpmLG1vbWVudHVtOnksc3BhdGlhbDohIUEsdHJhaW5pbmdNb2RlOiEhXyxmb3JtYXQ6TT9cIk5IV0NcIjpcIk5DSFdcIn0pfSw5NTU2MDc6KHUsZix5KT0+e3IuU2EoXCJDdW1TdW1cIix1LHtleGNsdXNpdmU6TnVtYmVyKGYpLHJldmVyc2U6TnVtYmVyKHkpfSl9LDk1NTcwNDoodSxmLHksXyxBLE0sSCxYLGopPT57ci5TYShcIkF0dGVudGlvblwiLHUse251bUhlYWRzOmYsaXNVbmlkaXJlY3Rpb25hbDp5LG1hc2tGaWx0ZXJWYWx1ZTpfLHNjYWxlOkEsZG9Sb3Rhcnk6TSxxa3ZIaWRkZW5TaXplczpIP0FycmF5LmZyb20oQi5zdWJhcnJheShOdW1iZXIoWCk+Pj4wLE51bWJlcihYKStIPj4+MCkpOltdLHBhc3RQcmVzZW50U2hhcmVCdWZmZXI6ISFqfSl9LDk1NTk3Njp1PT57ci5TYShcIkdlbHVcIix1LHZvaWQgMCl9LDk1NjAyODoodSxmLHksXyxBLE0pPT57ci5TYShcIk11bHRpSGVhZEF0dGVudGlvblwiLHUse251bUhlYWRzOmYsaXNVbmlkaXJlY3Rpb25hbDp5LG1hc2tGaWx0ZXJWYWx1ZTpfLHNjYWxlOkEsZG9Sb3Rhcnk6TX0pfSw5NTYxODc6dT0+e3IuU2EoXCJCaWFzQWRkXCIsdSx2b2lkIDApfSw5NTYyNDI6dT0+e3IuU2EoXCJCaWFzU3BsaXRHZWx1XCIsdSx2b2lkIDApfSw5NTYzMDM6KHUsZik9PntyLlNhKFwiU2tpcExheWVyTm9ybWFsaXphdGlvblwiLHUse2Vwc2lsb246Zn0pfSw5NTYzODQ6KHUsZix5LF8sQSxNLEgsWCxqLHEsbmUsbWUsJGUpPT57ci5TYShcIkNvbnZcIix1LHtmb3JtYXQ6aj9cIk5IV0NcIjpcIk5DSFdcIixhdXRvX3BhZDpmLGRpbGF0aW9uczpbeV0sZ3JvdXA6XyxrZXJuZWxfc2hhcGU6W0FdLHBhZHM6TT9BcnJheS5mcm9tKEIuc3ViYXJyYXkoTT4+PjAsSD4+PjApKTpbXSxzdHJpZGVzOltYXSx3X2lzX2NvbnN0OigpPT4hIURbcT4+PjBdLGFjdGl2YXRpb246cWUobmUpLGFjdGl2YXRpb25fcGFyYW1zOm1lP0FycmF5LmZyb20oa2Uuc3ViYXJyYXkobWU+Pj4wLCRlPj4+MCkpOltdfSl9LDk1Njc1NDoodSxmLHksXyxBLE0sSCxYLGoscSxuZSxtZSwkZSxQLG9lLEllKT0+e3IuU2EoXCJDb252XCIsdSx7Zm9ybWF0Om1lP1wiTkhXQ1wiOlwiTkNIV1wiLGF1dG9fcGFkOmYsZGlsYXRpb25zOlt5LF9dLGdyb3VwOkEsa2VybmVsX3NoYXBlOltNLEhdLHBhZHM6WD9BcnJheS5mcm9tKEIuc3ViYXJyYXkoWD4+PjAsaj4+PjApKTpbXSxzdHJpZGVzOltxLG5lXSx3X2lzX2NvbnN0OigpPT4hIURbJGU+Pj4wXSxhY3RpdmF0aW9uOnFlKFApLGFjdGl2YXRpb25fcGFyYW1zOm9lP0FycmF5LmZyb20oa2Uuc3ViYXJyYXkob2U+Pj4wLEllPj4+MCkpOltdfSl9LDk1NzE0NTp1PT57ci55Yih1KX0sOTU3MTc5Oih1LGYpPT5yLnpiKHUsZixyLmZiLkFiLHIuZmIuZXJyb3JzKX07ZnVuY3Rpb24gS3QodSl7dGhpcy5uYW1lPVwiRXhpdFN0YXR1c1wiLHRoaXMubWVzc2FnZT1gUHJvZ3JhbSB0ZXJtaW5hdGVkIHdpdGggZXhpdCgke3V9KWAsdGhpcy5zdGF0dXM9dX1mdW5jdGlvbiBOdCh1KXt0aGlzLmNiPXUtMjQsdGhpcy5yYj1mdW5jdGlvbihmKXt0ZVt0aGlzLmNiKzQ+Pj4yPj4+MF09Zn0sdGhpcy5xYj1mdW5jdGlvbihmKXt0ZVt0aGlzLmNiKzg+Pj4yPj4+MF09Zn0sdGhpcy5rYj1mdW5jdGlvbihmLHkpe3RoaXMuamIoKSx0aGlzLnJiKGYpLHRoaXMucWIoeSl9LHRoaXMuamI9ZnVuY3Rpb24oKXt0ZVt0aGlzLmNiKzE2Pj4+Mj4+PjBdPTB9fXZhciB1cj0wLFl0PTAseHI9dHlwZW9mIFRleHREZWNvZGVyPFwidVwiP25ldyBUZXh0RGVjb2RlcihcInV0ZjhcIik6dm9pZCAwLFZ0PSh1LGYseSk9PntmPj4+PTA7dmFyIF89Zit5O2Zvcih5PWY7dVt5XSYmISh5Pj1fKTspKyt5O2lmKDE2PHktZiYmdS5idWZmZXImJnhyKXJldHVybiB4ci5kZWNvZGUodS5zdWJhcnJheShmLHkpKTtmb3IoXz1cIlwiO2Y8eTspe3ZhciBBPXVbZisrXTtpZihBJjEyOCl7dmFyIE09dVtmKytdJjYzO2lmKChBJjIyNCk9PTE5MilfKz1TdHJpbmcuZnJvbUNoYXJDb2RlKChBJjMxKTw8NnxNKTtlbHNle3ZhciBIPXVbZisrXSY2MztBPShBJjI0MCk9PTIyND8oQSYxNSk8PDEyfE08PDZ8SDooQSY3KTw8MTh8TTw8MTJ8SDw8Nnx1W2YrK10mNjMsNjU1MzY+QT9fKz1TdHJpbmcuZnJvbUNoYXJDb2RlKEEpOihBLT02NTUzNixfKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDU1Mjk2fEE+PjEwLDU2MzIwfEEmMTAyMykpfX1lbHNlIF8rPVN0cmluZy5mcm9tQ2hhckNvZGUoQSl9cmV0dXJuIF99LHFlPSh1LGYpPT4odT4+Pj0wKT9WdChWLHUsZik6XCJcIixEdD11PT57Zm9yKHZhciBmPTAseT0wO3k8dS5sZW5ndGg7Kyt5KXt2YXIgXz11LmNoYXJDb2RlQXQoeSk7MTI3Pj1fP2YrKzoyMDQ3Pj1fP2YrPTI6NTUyOTY8PV8mJjU3MzQzPj1fPyhmKz00LCsreSk6Zis9M31yZXR1cm4gZn0sQ3Q9KHUsZix5LF8pPT57aWYoeT4+Pj0wLCEoMDxfKSlyZXR1cm4gMDt2YXIgQT15O189eStfLTE7Zm9yKHZhciBNPTA7TTx1Lmxlbmd0aDsrK00pe3ZhciBIPXUuY2hhckNvZGVBdChNKTtpZig1NTI5Njw9SCYmNTczNDM+PUgpe3ZhciBYPXUuY2hhckNvZGVBdCgrK00pO0g9NjU1MzYrKChIJjEwMjMpPDwxMCl8WCYxMDIzfWlmKDEyNz49SCl7aWYoeT49XylicmVhaztmW3krKz4+PjBdPUh9ZWxzZXtpZigyMDQ3Pj1IKXtpZih5KzE+PV8pYnJlYWs7Zlt5Kys+Pj4wXT0xOTJ8SD4+Nn1lbHNle2lmKDY1NTM1Pj1IKXtpZih5KzI+PV8pYnJlYWs7Zlt5Kys+Pj4wXT0yMjR8SD4+MTJ9ZWxzZXtpZih5KzM+PV8pYnJlYWs7Zlt5Kys+Pj4wXT0yNDB8SD4+MTgsZlt5Kys+Pj4wXT0xMjh8SD4+MTImNjN9Zlt5Kys+Pj4wXT0xMjh8SD4+NiY2M31mW3krKz4+PjBdPTEyOHxIJjYzfX1yZXR1cm4gZlt5Pj4+MF09MCx5LUF9LENyPXU9PntpZih1PT09bnVsbClyZXR1cm5cIm51bGxcIjt2YXIgZj10eXBlb2YgdTtyZXR1cm4gZj09PVwib2JqZWN0XCJ8fGY9PT1cImFycmF5XCJ8fGY9PT1cImZ1bmN0aW9uXCI/dS50b1N0cmluZygpOlwiXCIrdX0sbm4sc3Q9dT0+e2Zvcih2YXIgZj1cIlwiO1ZbdT4+PjBdOylmKz1ubltWW3UrKz4+PjBdXTtyZXR1cm4gZn0sSXI9e30sWnQ9e30sQXI9e30sZ3Q7ZnVuY3Rpb24gYW4odSxmLHk9e30pe3ZhciBfPWYubmFtZTtpZighdSl0aHJvdyBuZXcgZ3QoYHR5cGUgXCIke199XCIgbXVzdCBoYXZlIGEgcG9zaXRpdmUgaW50ZWdlciB0eXBlaWQgcG9pbnRlcmApO2lmKFp0Lmhhc093blByb3BlcnR5KHUpKXtpZih5LnRiKXJldHVybjt0aHJvdyBuZXcgZ3QoYENhbm5vdCByZWdpc3RlciB0eXBlICcke199JyB0d2ljZWApfVp0W3VdPWYsZGVsZXRlIEFyW3VdLElyLmhhc093blByb3BlcnR5KHUpJiYoZj1Jclt1XSxkZWxldGUgSXJbdV0sZi5mb3JFYWNoKEE9PkEoKSkpfWZ1bmN0aW9uIEtlKHUsZix5PXt9KXtpZighKFwiYXJnUGFja0FkdmFuY2VcImluIGYpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJyZWdpc3RlclR5cGUgcmVnaXN0ZXJlZEluc3RhbmNlIHJlcXVpcmVzIGFyZ1BhY2tBZHZhbmNlXCIpO2FuKHUsZix5KX12YXIgVHI9KHUsZix5KT0+e3N3aXRjaChmKXtjYXNlIDE6cmV0dXJuIHk/Xz0+RFtfPj4+MD4+PjBdOl89PlZbXz4+PjA+Pj4wXTtjYXNlIDI6cmV0dXJuIHk/Xz0+WVtfPj4+MT4+PjBdOl89PnNlW18+Pj4xPj4+MF07Y2FzZSA0OnJldHVybiB5P189PkJbXz4+PjI+Pj4wXTpfPT50ZVtfPj4+Mj4+PjBdO2Nhc2UgODpyZXR1cm4geT9fPT5PZVtfPj4+M106Xz0+ZWVbXz4+PjNdO2RlZmF1bHQ6dGhyb3cgbmV3IFR5cGVFcnJvcihgaW52YWxpZCBpbnRlZ2VyIHdpZHRoICgke2Z9KTogJHt1fWApfX07ZnVuY3Rpb24gRXIoKXt0aGlzLiRhPVt2b2lkIDBdLHRoaXMubmI9W119dmFyIFBlPW5ldyBFcjtmdW5jdGlvbiBPcih1KXt1Pj4+PTAsdT49UGUuY2ImJi0tUGUuZ2V0KHUpLnBiPT09MCYmUGUuamIodSl9dmFyIHdlPXU9PntpZighdSl0aHJvdyBuZXcgZ3QoXCJDYW5ub3QgdXNlIGRlbGV0ZWQgdmFsLiBoYW5kbGUgPSBcIit1KTtyZXR1cm4gUGUuZ2V0KHUpLnZhbHVlfSx1dD11PT57c3dpdGNoKHUpe2Nhc2Ugdm9pZCAwOnJldHVybiAxO2Nhc2UgbnVsbDpyZXR1cm4gMjtjYXNlITA6cmV0dXJuIDM7Y2FzZSExOnJldHVybiA0O2RlZmF1bHQ6cmV0dXJuIFBlLmtiKHtwYjoxLHZhbHVlOnV9KX19O2Z1bmN0aW9uIGxyKHUpe3JldHVybiB0aGlzLmZyb21XaXJlVHlwZShCW3U+Pj4yPj4+MF0pfXZhciBrcj0odSxmKT0+e3N3aXRjaChmKXtjYXNlIDQ6cmV0dXJuIGZ1bmN0aW9uKHkpe3JldHVybiB0aGlzLmZyb21XaXJlVHlwZShrZVt5Pj4+Mj4+PjBdKX07Y2FzZSA4OnJldHVybiBmdW5jdGlvbih5KXtyZXR1cm4gdGhpcy5mcm9tV2lyZVR5cGUoYmVbeT4+PjM+Pj4wXSl9O2RlZmF1bHQ6dGhyb3cgbmV3IFR5cGVFcnJvcihgaW52YWxpZCBmbG9hdCB3aWR0aCAoJHtmfSk6ICR7dX1gKX19O2Z1bmN0aW9uIGZhKHUpe3JldHVybiB0aGlzLmZyb21XaXJlVHlwZSh0ZVt1Pj4+Mj4+PjBdKX12YXIgUHI9dHlwZW9mIFRleHREZWNvZGVyPFwidVwiP25ldyBUZXh0RGVjb2RlcihcInV0Zi0xNmxlXCIpOnZvaWQgMCxtYT0odSxmKT0+e2Zvcih2YXIgeT11Pj4xLF89eStmLzI7ISh5Pj1fKSYmc2VbeT4+PjBdOykrK3k7aWYoeTw8PTEsMzI8eS11JiZQcilyZXR1cm4gUHIuZGVjb2RlKFYuc3ViYXJyYXkodT4+PjAseT4+PjApKTtmb3IoeT1cIlwiLF89MDshKF8+PWYvMik7KytfKXt2YXIgQT1ZW3UrMipfPj4+MT4+PjBdO2lmKEE9PTApYnJlYWs7eSs9U3RyaW5nLmZyb21DaGFyQ29kZShBKX1yZXR1cm4geX0sZmU9KHUsZix5KT0+e2lmKHk/Pz0yMTQ3NDgzNjQ3LDI+eSlyZXR1cm4gMDt5LT0yO3ZhciBfPWY7eT15PDIqdS5sZW5ndGg/eS8yOnUubGVuZ3RoO2Zvcih2YXIgQT0wO0E8eTsrK0EpWVtmPj4+MT4+PjBdPXUuY2hhckNvZGVBdChBKSxmKz0yO3JldHVybiBZW2Y+Pj4xPj4+MF09MCxmLV99LGRyPXU9PjIqdS5sZW5ndGgsb249KHUsZik9Pntmb3IodmFyIHk9MCxfPVwiXCI7ISh5Pj1mLzQpOyl7dmFyIEE9Qlt1KzQqeT4+PjI+Pj4wXTtpZihBPT0wKWJyZWFrOysreSw2NTUzNjw9QT8oQS09NjU1MzYsXys9U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NnxBPj4xMCw1NjMyMHxBJjEwMjMpKTpfKz1TdHJpbmcuZnJvbUNoYXJDb2RlKEEpfXJldHVybiBffSxoYT0odSxmLHkpPT57aWYoZj4+Pj0wLHk/Pz0yMTQ3NDgzNjQ3LDQ+eSlyZXR1cm4gMDt2YXIgXz1mO3k9Xyt5LTQ7Zm9yKHZhciBBPTA7QTx1Lmxlbmd0aDsrK0Epe3ZhciBNPXUuY2hhckNvZGVBdChBKTtpZig1NTI5Njw9TSYmNTczNDM+PU0pe3ZhciBIPXUuY2hhckNvZGVBdCgrK0EpO009NjU1MzYrKChNJjEwMjMpPDwxMCl8SCYxMDIzfWlmKEJbZj4+PjI+Pj4wXT1NLGYrPTQsZis0PnkpYnJlYWt9cmV0dXJuIEJbZj4+PjI+Pj4wXT0wLGYtX30sc249dT0+e2Zvcih2YXIgZj0wLHk9MDt5PHUubGVuZ3RoOysreSl7dmFyIF89dS5jaGFyQ29kZUF0KHkpOzU1Mjk2PD1fJiY1NzM0Mz49XyYmKyt5LGYrPTR9cmV0dXJuIGZ9LFJyPSh1LGYpPT57dmFyIHk9WnRbdV07aWYoeT09PXZvaWQgMCl0aHJvdyB1PWVyKHUpLHk9c3QodSksbHQodSksbmV3IGd0KGYrXCIgaGFzIHVua25vd24gdHlwZSBcIit5KTtyZXR1cm4geX0sQnI9KHUsZix5KT0+e3ZhciBfPVtdO3JldHVybiB1PXUudG9XaXJlVHlwZShfLHkpLF8ubGVuZ3RoJiYodGVbZj4+PjI+Pj4wXT11dChfKSksdX0sWHQ9dT0+e3RyeXt1KCl9Y2F0Y2goZil7R2UoZil9fTtmdW5jdGlvbiB1bigpe3ZhciB1PXVlLGY9e307Zm9yKGxldFt5LF9db2YgT2JqZWN0LmVudHJpZXModSkpZlt5XT10eXBlb2YgXz09XCJmdW5jdGlvblwiP2Z1bmN0aW9uKCl7SHQucHVzaCh5KTt0cnl7cmV0dXJuIF8uYXBwbHkobnVsbCxhcmd1bWVudHMpfWZpbmFsbHl7T3x8KEh0LnBvcCgpLGV0JiZ3dD09PTEmJkh0Lmxlbmd0aD09PTAmJih3dD0wLFh0KFNuKSx0eXBlb2YgRmliZXJzPFwidVwiJiZGaWJlcnMuSGIoKSkpfX06XztyZXR1cm4gZn12YXIgd3Q9MCxldD1udWxsLE1yPTAsSHQ9W10sRHI9e30senI9e30sbG49MCxjcj1udWxsLGRuPVtdO2Z1bmN0aW9uIGNuKCl7cmV0dXJuIG5ldyBQcm9taXNlKCh1LGYpPT57Y3I9e3Jlc29sdmU6dSxyZWplY3Q6Zn19KX1mdW5jdGlvbiBwbigpe3ZhciB1PUx0KDY1NTQ4KSxmPXUrMTI7dGVbdT4+PjI+Pj4wXT1mLHRlW3UrND4+PjI+Pj4wXT1mKzY1NTM2LGY9SHRbMF07dmFyIHk9RHJbZl07cmV0dXJuIHk9PT12b2lkIDAmJih5PWxuKyssRHJbZl09eSx6clt5XT1mKSxCW3UrOD4+PjI+Pj4wXT15LHV9ZnVuY3Rpb24gZm4odSl7aWYoIU8pe2lmKHd0PT09MCl7dmFyIGY9ITEseT0hMTt1KChfPTApPT57aWYoIU8mJihNcj1fLGY9ITAseSkpe3d0PTIsWHQoKCk9PiR0KGV0KSksdHlwZW9mIEJyb3dzZXI8XCJ1XCImJkJyb3dzZXIubGIuc2ImJkJyb3dzZXIubGIucmVzdW1lKCksXz0hMTt0cnl7dmFyIEE9KDAsdWVbenJbQltldCs4Pj4+Mj4+PjBdXV0pKCl9Y2F0Y2goWCl7QT1YLF89ITB9dmFyIE09ITE7aWYoIWV0KXt2YXIgSD1jcjtIJiYoY3I9bnVsbCwoXz9ILnJlamVjdDpILnJlc29sdmUpKEEpLE09ITApfWlmKF8mJiFNKXRocm93IEF9fSkseT0hMCxmfHwod3Q9MSxldD1wbigpLHR5cGVvZiBCcm93c2VyPFwidVwiJiZCcm93c2VyLmxiLnNiJiZCcm93c2VyLmxiLnBhdXNlKCksWHQoKCk9PnRyKGV0KSkpfWVsc2Ugd3Q9PT0yPyh3dD0wLFh0KGh0KSxsdChldCksZXQ9bnVsbCxkbi5mb3JFYWNoKF89PntpZighTyl0cnl7XygpO3RyeXtVPVU9Xz1VLHIub25FeGl0Py4oXyksTz0hMCxjKF8sbmV3IEt0KF8pKX1jYXRjaChBKXtBIGluc3RhbmNlb2YgS3R8fEE9PVwidW53aW5kXCJ8fGMoMSxBKX19Y2F0Y2goQSl7QSBpbnN0YW5jZW9mIEt0fHxBPT1cInVud2luZFwifHxjKDEsQSl9fSkpOkdlKGBpbnZhbGlkIHN0YXRlOiAke3d0fWApO3JldHVybiBNcn19ZnVuY3Rpb24gVXIodSl7cmV0dXJuIGZuKGY9Pnt1KCkudGhlbihmKX0pfXZhciBRdD1bXSxtbj17fSxwcj11PT57dmFyIGY9bW5bdV07cmV0dXJuIGY9PT12b2lkIDA/c3QodSk6Zn0sV3I9KCk9PnR5cGVvZiBnbG9iYWxUaGlzPT1cIm9iamVjdFwiP2dsb2JhbFRoaXM6RnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpLG10PXU9Pnt2YXIgZj1RdC5sZW5ndGg7cmV0dXJuIFF0LnB1c2godSksZn0sTnI9KHUsZik9Pntmb3IodmFyIHk9QXJyYXkodSksXz0wO188dTsrK18peVtfXT1Scih0ZVtmKzQqXz4+PjI+Pj4wXSxcInBhcmFtZXRlciBcIitfKTtyZXR1cm4geX0sZnI9KHUsZik9Pk9iamVjdC5kZWZpbmVQcm9wZXJ0eShmLFwibmFtZVwiLHt2YWx1ZTp1fSk7ZnVuY3Rpb24gZ2EodSl7dmFyIGY9RnVuY3Rpb247aWYoIShmIGluc3RhbmNlb2YgRnVuY3Rpb24pKXRocm93IG5ldyBUeXBlRXJyb3IoYG5ld18gY2FsbGVkIHdpdGggY29uc3RydWN0b3IgdHlwZSAke3R5cGVvZiBmfSB3aGljaCBpcyBub3QgYSBmdW5jdGlvbmApO3ZhciB5PWZyKGYubmFtZXx8XCJ1bmtub3duRnVuY3Rpb25OYW1lXCIsZnVuY3Rpb24oKXt9KTtyZXR1cm4geS5wcm90b3R5cGU9Zi5wcm90b3R5cGUseT1uZXcgeSx1PWYuYXBwbHkoeSx1KSx1IGluc3RhbmNlb2YgT2JqZWN0P3U6eX12YXIgdHQ9dT0+dSU0PT09MCYmKHUlMTAwIT09MHx8dSU0MDA9PT0wKSxobj1bMCwzMSw2MCw5MSwxMjEsMTUyLDE4MiwyMTMsMjQ0LDI3NCwzMDUsMzM1XSx5dD1bMCwzMSw1OSw5MCwxMjAsMTUxLDE4MSwyMTIsMjQzLDI3MywzMDQsMzM0XSxWcj11PT57dmFyIGY9RHQodSkrMSx5PUx0KGYpO3JldHVybiB5JiZDdCh1LFYseSxmKSx5fSxtcj1bXSxydD0odSxmKT0+e21yLmxlbmd0aD0wO2Zvcih2YXIgeTt5PVZbdSsrPj4+MF07KXt2YXIgXz15IT0xMDU7XyY9eSE9MTEyLGYrPV8mJmYlOD80OjAsbXIucHVzaCh5PT0xMTI/dGVbZj4+PjI+Pj4wXTp5PT0xMDY/T2VbZj4+PjNdOnk9PTEwNT9CW2Y+Pj4yPj4+MF06YmVbZj4+PjM+Pj4wXSksZis9Xz84OjR9cmV0dXJuIG1yfSxKdD17fSxZZT0oKT0+e2lmKCFudCl7dmFyIHU9e1VTRVI6XCJ3ZWJfdXNlclwiLExPR05BTUU6XCJ3ZWJfdXNlclwiLFBBVEg6XCIvXCIsUFdEOlwiL1wiLEhPTUU6XCIvaG9tZS93ZWJfdXNlclwiLExBTkc6KHR5cGVvZiBuYXZpZ2F0b3I9PVwib2JqZWN0XCImJm5hdmlnYXRvci5sYW5ndWFnZXMmJm5hdmlnYXRvci5sYW5ndWFnZXNbMF18fFwiQ1wiKS5yZXBsYWNlKFwiLVwiLFwiX1wiKStcIi5VVEYtOFwiLF86b3x8XCIuL3RoaXMucHJvZ3JhbVwifSxmO2ZvcihmIGluIEp0KUp0W2ZdPT09dm9pZCAwP2RlbGV0ZSB1W2ZdOnVbZl09SnRbZl07dmFyIHk9W107Zm9yKGYgaW4gdSl5LnB1c2goYCR7Zn09JHt1W2ZdfWApO250PXl9cmV0dXJuIG50fSxudCxnbj1bbnVsbCxbXSxbXV0seW49WzMxLDI5LDMxLDMwLDMxLDMwLDMxLDMxLDMwLDMxLDMwLDMxXSxibj1bMzEsMjgsMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzFdO2Z1bmN0aW9uIHZuKHUpe3ZhciBmPUFycmF5KER0KHUpKzEpO3JldHVybiBDdCh1LGYsMCxmLmxlbmd0aCksZn1mdW5jdGlvbiB3bih1LGYseSxfKXtmdW5jdGlvbiBBKFAsb2UsSWUpe2ZvcihQPXR5cGVvZiBQPT1cIm51bWJlclwiP1AudG9TdHJpbmcoKTpQfHxcIlwiO1AubGVuZ3RoPG9lOylQPUllWzBdK1A7cmV0dXJuIFB9ZnVuY3Rpb24gTShQLG9lKXtyZXR1cm4gQShQLG9lLFwiMFwiKX1mdW5jdGlvbiBIKFAsb2Upe2Z1bmN0aW9uIEllKFd0KXtyZXR1cm4gMD5XdD8tMTowPFd0PzE6MH12YXIgVXQ7cmV0dXJuKFV0PUllKFAuZ2V0RnVsbFllYXIoKS1vZS5nZXRGdWxsWWVhcigpKSk9PT0wJiYoVXQ9SWUoUC5nZXRNb250aCgpLW9lLmdldE1vbnRoKCkpKT09PTAmJihVdD1JZShQLmdldERhdGUoKS1vZS5nZXREYXRlKCkpKSxVdH1mdW5jdGlvbiBYKFApe3N3aXRjaChQLmdldERheSgpKXtjYXNlIDA6cmV0dXJuIG5ldyBEYXRlKFAuZ2V0RnVsbFllYXIoKS0xLDExLDI5KTtjYXNlIDE6cmV0dXJuIFA7Y2FzZSAyOnJldHVybiBuZXcgRGF0ZShQLmdldEZ1bGxZZWFyKCksMCwzKTtjYXNlIDM6cmV0dXJuIG5ldyBEYXRlKFAuZ2V0RnVsbFllYXIoKSwwLDIpO2Nhc2UgNDpyZXR1cm4gbmV3IERhdGUoUC5nZXRGdWxsWWVhcigpLDAsMSk7Y2FzZSA1OnJldHVybiBuZXcgRGF0ZShQLmdldEZ1bGxZZWFyKCktMSwxMSwzMSk7Y2FzZSA2OnJldHVybiBuZXcgRGF0ZShQLmdldEZ1bGxZZWFyKCktMSwxMSwzMCl9fWZ1bmN0aW9uIGooUCl7dmFyIG9lPVAuYWI7Zm9yKFA9bmV3IERhdGUobmV3IERhdGUoUC5iYisxOTAwLDAsMSkuZ2V0VGltZSgpKTswPG9lOyl7dmFyIEllPVAuZ2V0TW9udGgoKSxVdD0odHQoUC5nZXRGdWxsWWVhcigpKT95bjpibilbSWVdO2lmKG9lPlV0LVAuZ2V0RGF0ZSgpKW9lLT1VdC1QLmdldERhdGUoKSsxLFAuc2V0RGF0ZSgxKSwxMT5JZT9QLnNldE1vbnRoKEllKzEpOihQLnNldE1vbnRoKDApLFAuc2V0RnVsbFllYXIoUC5nZXRGdWxsWWVhcigpKzEpKTtlbHNle1Auc2V0RGF0ZShQLmdldERhdGUoKStvZSk7YnJlYWt9fXJldHVybiBJZT1uZXcgRGF0ZShQLmdldEZ1bGxZZWFyKCkrMSwwLDQpLG9lPVgobmV3IERhdGUoUC5nZXRGdWxsWWVhcigpLDAsNCkpLEllPVgoSWUpLDA+PUgob2UsUCk/MD49SChJZSxQKT9QLmdldEZ1bGxZZWFyKCkrMTpQLmdldEZ1bGxZZWFyKCk6UC5nZXRGdWxsWWVhcigpLTF9dT4+Pj0wLGY+Pj49MCx5Pj4+PTAsXz4+Pj0wO3ZhciBxPXRlW18rNDA+Pj4yPj4+MF07Xz17RGI6QltfPj4+Mj4+PjBdLENiOkJbXys0Pj4+Mj4+PjBdLGhiOkJbXys4Pj4+Mj4+PjBdLG1iOkJbXysxMj4+PjI+Pj4wXSxpYjpCW18rMTY+Pj4yPj4+MF0sYmI6QltfKzIwPj4+Mj4+PjBdLFdhOkJbXysyND4+PjI+Pj4wXSxhYjpCW18rMjg+Pj4yPj4+MF0sR2I6QltfKzMyPj4+Mj4+PjBdLEJiOkJbXyszNj4+PjI+Pj4wXSxFYjpxP3FlKHEpOlwiXCJ9LHk9cWUoeSkscT17XCIlY1wiOlwiJWEgJWIgJWQgJUg6JU06JVMgJVlcIixcIiVEXCI6XCIlbS8lZC8leVwiLFwiJUZcIjpcIiVZLSVtLSVkXCIsXCIlaFwiOlwiJWJcIixcIiVyXCI6XCIlSTolTTolUyAlcFwiLFwiJVJcIjpcIiVIOiVNXCIsXCIlVFwiOlwiJUg6JU06JVNcIixcIiV4XCI6XCIlbS8lZC8leVwiLFwiJVhcIjpcIiVIOiVNOiVTXCIsXCIlRWNcIjpcIiVjXCIsXCIlRUNcIjpcIiVDXCIsXCIlRXhcIjpcIiVtLyVkLyV5XCIsXCIlRVhcIjpcIiVIOiVNOiVTXCIsXCIlRXlcIjpcIiV5XCIsXCIlRVlcIjpcIiVZXCIsXCIlT2RcIjpcIiVkXCIsXCIlT2VcIjpcIiVlXCIsXCIlT0hcIjpcIiVIXCIsXCIlT0lcIjpcIiVJXCIsXCIlT21cIjpcIiVtXCIsXCIlT01cIjpcIiVNXCIsXCIlT1NcIjpcIiVTXCIsXCIlT3VcIjpcIiV1XCIsXCIlT1VcIjpcIiVVXCIsXCIlT1ZcIjpcIiVWXCIsXCIlT3dcIjpcIiV3XCIsXCIlT1dcIjpcIiVXXCIsXCIlT3lcIjpcIiV5XCJ9O2Zvcih2YXIgbmUgaW4gcSl5PXkucmVwbGFjZShuZXcgUmVnRXhwKG5lLFwiZ1wiKSxxW25lXSk7dmFyIG1lPVwiU3VuZGF5IE1vbmRheSBUdWVzZGF5IFdlZG5lc2RheSBUaHVyc2RheSBGcmlkYXkgU2F0dXJkYXlcIi5zcGxpdChcIiBcIiksJGU9XCJKYW51YXJ5IEZlYnJ1YXJ5IE1hcmNoIEFwcmlsIE1heSBKdW5lIEp1bHkgQXVndXN0IFNlcHRlbWJlciBPY3RvYmVyIE5vdmVtYmVyIERlY2VtYmVyXCIuc3BsaXQoXCIgXCIpO3E9e1wiJWFcIjpQPT5tZVtQLldhXS5zdWJzdHJpbmcoMCwzKSxcIiVBXCI6UD0+bWVbUC5XYV0sXCIlYlwiOlA9PiRlW1AuaWJdLnN1YnN0cmluZygwLDMpLFwiJUJcIjpQPT4kZVtQLmliXSxcIiVDXCI6UD0+TSgoUC5iYisxOTAwKS8xMDB8MCwyKSxcIiVkXCI6UD0+TShQLm1iLDIpLFwiJWVcIjpQPT5BKFAubWIsMixcIiBcIiksXCIlZ1wiOlA9PmooUCkudG9TdHJpbmcoKS5zdWJzdHJpbmcoMiksXCIlR1wiOlA9PmooUCksXCIlSFwiOlA9Pk0oUC5oYiwyKSxcIiVJXCI6UD0+KFA9UC5oYixQPT0wP1A9MTI6MTI8UCYmKFAtPTEyKSxNKFAsMikpLFwiJWpcIjpQPT57Zm9yKHZhciBvZT0wLEllPTA7SWU8PVAuaWItMTtvZSs9KHR0KFAuYmIrMTkwMCk/eW46Ym4pW0llKytdKTtyZXR1cm4gTShQLm1iK29lLDMpfSxcIiVtXCI6UD0+TShQLmliKzEsMiksXCIlTVwiOlA9Pk0oUC5DYiwyKSxcIiVuXCI6KCk9PmBcbmAsXCIlcFwiOlA9PjA8PVAuaGImJjEyPlAuaGI/XCJBTVwiOlwiUE1cIixcIiVTXCI6UD0+TShQLkRiLDIpLFwiJXRcIjooKT0+XCJcdFwiLFwiJXVcIjpQPT5QLldhfHw3LFwiJVVcIjpQPT5NKE1hdGguZmxvb3IoKFAuYWIrNy1QLldhKS83KSwyKSxcIiVWXCI6UD0+e3ZhciBvZT1NYXRoLmZsb29yKChQLmFiKzctKFAuV2ErNiklNykvNyk7aWYoMj49KFAuV2ErMzcxLVAuYWItMiklNyYmb2UrKyxvZSlvZT09NTMmJihJZT0oUC5XYSszNzEtUC5hYiklNyxJZT09NHx8SWU9PTMmJnR0KFAuYmIpfHwob2U9MSkpO2Vsc2V7b2U9NTI7dmFyIEllPShQLldhKzctUC5hYi0xKSU3OyhJZT09NHx8SWU9PTUmJnR0KFAuYmIlNDAwLTEpKSYmb2UrK31yZXR1cm4gTShvZSwyKX0sXCIld1wiOlA9PlAuV2EsXCIlV1wiOlA9Pk0oTWF0aC5mbG9vcigoUC5hYis3LShQLldhKzYpJTcpLzcpLDIpLFwiJXlcIjpQPT4oUC5iYisxOTAwKS50b1N0cmluZygpLnN1YnN0cmluZygyKSxcIiVZXCI6UD0+UC5iYisxOTAwLFwiJXpcIjpQPT57UD1QLkJiO3ZhciBvZT0wPD1QO3JldHVybiBQPU1hdGguYWJzKFApLzYwLChvZT9cIitcIjpcIi1cIikrKFwiMDAwMFwiKyhQLzYwKjEwMCtQJTYwKSkuc2xpY2UoLTQpfSxcIiVaXCI6UD0+UC5FYixcIiUlXCI6KCk9PlwiJVwifSx5PXkucmVwbGFjZSgvJSUvZyxcIlxcMFxcMFwiKTtmb3IobmUgaW4gcSl5LmluY2x1ZGVzKG5lKSYmKHk9eS5yZXBsYWNlKG5ldyBSZWdFeHAobmUsXCJnXCIpLHFbbmVdKF8pKSk7cmV0dXJuIHk9eS5yZXBsYWNlKC9cXDBcXDAvZyxcIiVcIiksbmU9dm4oeSksbmUubGVuZ3RoPmY/MDooRC5zZXQobmUsdT4+PjApLG5lLmxlbmd0aC0xKX1mb3IodmFyICRuPUFycmF5KDI1NiksaHI9MDsyNTY+aHI7Kytocikkbltocl09U3RyaW5nLmZyb21DaGFyQ29kZShocik7bm49JG4sZ3Q9ci5CaW5kaW5nRXJyb3I9Y2xhc3MgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcih1KXtzdXBlcih1KSx0aGlzLm5hbWU9XCJCaW5kaW5nRXJyb3JcIn19LHIuSW50ZXJuYWxFcnJvcj1jbGFzcyBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKHUpe3N1cGVyKHUpLHRoaXMubmFtZT1cIkludGVybmFsRXJyb3JcIn19LE9iamVjdC5hc3NpZ24oRXIucHJvdG90eXBlLHtnZXQodSl7cmV0dXJuIHRoaXMuJGFbdV19LGhhcyh1KXtyZXR1cm4gdGhpcy4kYVt1XSE9PXZvaWQgMH0sa2IodSl7dmFyIGY9dGhpcy5uYi5wb3AoKXx8dGhpcy4kYS5sZW5ndGg7cmV0dXJuIHRoaXMuJGFbZl09dSxmfSxqYih1KXt0aGlzLiRhW3VdPXZvaWQgMCx0aGlzLm5iLnB1c2godSl9fSksUGUuJGEucHVzaCh7dmFsdWU6dm9pZCAwfSx7dmFsdWU6bnVsbH0se3ZhbHVlOiEwfSx7dmFsdWU6ITF9KSxQZS5jYj1QZS4kYS5sZW5ndGgsci5jb3VudF9lbXZhbF9oYW5kbGVzPSgpPT57Zm9yKHZhciB1PTAsZj1QZS5jYjtmPFBlLiRhLmxlbmd0aDsrK2YpUGUuJGFbZl0hPT12b2lkIDAmJisrdTtyZXR1cm4gdX07dmFyIHlhPXtpYTpmdW5jdGlvbih1LGYseSl7cmV0dXJuIFVyKGFzeW5jKCk9Pnthd2FpdCByLndiKHUsZix5KX0pfSxhOmZ1bmN0aW9uKHUsZix5KXt0aHJvdyB1Pj4+PTAsbmV3IE50KHUpLmtiKGY+Pj4wLHk+Pj4wKSx1cj11LFl0KyssdXJ9LHg6ZnVuY3Rpb24oKXtyZXR1cm4gMH0sYmE6ZnVuY3Rpb24oKXt9LE86ZnVuY3Rpb24oKXt9LFE6ZnVuY3Rpb24oKXt9LGNhOmZ1bmN0aW9uKCl7cmV0dXJuIDB9LCQ6ZnVuY3Rpb24oKXt9LFc6ZnVuY3Rpb24oKXt9LF86ZnVuY3Rpb24oKXt9LEQ6ZnVuY3Rpb24oKXt9LFA6ZnVuY3Rpb24oKXt9LE06ZnVuY3Rpb24oKXt9LGFhOmZ1bmN0aW9uKCl7fSxOOmZ1bmN0aW9uKCl7fSxHOmZ1bmN0aW9uKHUsZix5LF8sQSl7Zj4+Pj0wLGY9c3QoZik7dmFyIE09Zi5pbmRleE9mKFwidVwiKSE9LTE7TSYmKEE9KDFuPDw2NG4pLTFuKSxLZSh1Pj4+MCx7bmFtZTpmLGZyb21XaXJlVHlwZTpIPT5ILHRvV2lyZVR5cGU6ZnVuY3Rpb24oSCxYKXtpZih0eXBlb2YgWCE9XCJiaWdpbnRcIiYmdHlwZW9mIFghPVwibnVtYmVyXCIpdGhyb3cgbmV3IFR5cGVFcnJvcihgQ2Fubm90IGNvbnZlcnQgXCIke0NyKFgpfVwiIHRvICR7dGhpcy5uYW1lfWApO2lmKFg8X3x8WD5BKXRocm93IG5ldyBUeXBlRXJyb3IoYFBhc3NpbmcgYSBudW1iZXIgXCIke0NyKFgpfVwiIGZyb20gSlMgc2lkZSB0byBDL0MrKyBzaWRlIHRvIGFuIGFyZ3VtZW50IG9mIHR5cGUgXCIke2Z9XCIsIHdoaWNoIGlzIG91dHNpZGUgdGhlIHZhbGlkIHJhbmdlIFske199LCAke0F9XSFgKTtyZXR1cm4gWH0sYXJnUGFja0FkdmFuY2U6OCxyZWFkVmFsdWVGcm9tUG9pbnRlcjpUcihmLHk+Pj4wLCFNKSxlYjpudWxsfSl9LGdhOmZ1bmN0aW9uKHUsZix5LF8pe2Y9c3QoZj4+PjApLEtlKHU+Pj4wLHtuYW1lOmYsZnJvbVdpcmVUeXBlOmZ1bmN0aW9uKEEpe3JldHVybiEhQX0sdG9XaXJlVHlwZTpmdW5jdGlvbihBLE0pe3JldHVybiBNP3k6X30sYXJnUGFja0FkdmFuY2U6OCxyZWFkVmFsdWVGcm9tUG9pbnRlcjpmdW5jdGlvbihBKXtyZXR1cm4gdGhpcy5mcm9tV2lyZVR5cGUoVltBPj4+MF0pfSxlYjpudWxsfSl9LGZhOmZ1bmN0aW9uKHUsZil7Zj1zdChmPj4+MCksS2UodT4+PjAse25hbWU6Zixmcm9tV2lyZVR5cGU6eT0+e3ZhciBfPXdlKHkpO3JldHVybiBPcih5KSxffSx0b1dpcmVUeXBlOih5LF8pPT51dChfKSxhcmdQYWNrQWR2YW5jZTo4LHJlYWRWYWx1ZUZyb21Qb2ludGVyOmxyLGViOm51bGx9KX0sRjpmdW5jdGlvbih1LGYseSl7Zj1zdChmPj4+MCksS2UodT4+PjAse25hbWU6Zixmcm9tV2lyZVR5cGU6Xz0+Xyx0b1dpcmVUeXBlOihfLEEpPT5BLGFyZ1BhY2tBZHZhbmNlOjgscmVhZFZhbHVlRnJvbVBvaW50ZXI6a3IoZix5Pj4+MCksZWI6bnVsbH0pfSx0OmZ1bmN0aW9uKHUsZix5LF8sQSl7aWYodT4+Pj0wLHk+Pj49MCxmPXN0KGY+Pj4wKSxBPT09LTEmJihBPTQyOTQ5NjcyOTUpLEE9WD0+WCxfPT09MCl7dmFyIE09MzItOCp5O0E9WD0+WDw8TT4+Pk19dmFyIEg9Zi5pbmNsdWRlcyhcInVuc2lnbmVkXCIpP2Z1bmN0aW9uKFgsail7cmV0dXJuIGo+Pj4wfTpmdW5jdGlvbihYLGope3JldHVybiBqfTtLZSh1LHtuYW1lOmYsZnJvbVdpcmVUeXBlOkEsdG9XaXJlVHlwZTpILGFyZ1BhY2tBZHZhbmNlOjgscmVhZFZhbHVlRnJvbVBvaW50ZXI6VHIoZix5LF8hPT0wKSxlYjpudWxsfSl9LG46ZnVuY3Rpb24odSxmLHkpe2Z1bmN0aW9uIF8oTSl7cmV0dXJuIG5ldyBBKEQuYnVmZmVyLHRlW00rND4+PjI+Pj4wXSx0ZVtNPj4+Mj4+PjBdKX12YXIgQT1bSW50OEFycmF5LFVpbnQ4QXJyYXksSW50MTZBcnJheSxVaW50MTZBcnJheSxJbnQzMkFycmF5LFVpbnQzMkFycmF5LEZsb2F0MzJBcnJheSxGbG9hdDY0QXJyYXksQmlnSW50NjRBcnJheSxCaWdVaW50NjRBcnJheV1bZl07eT1zdCh5Pj4+MCksS2UodT4+PjAse25hbWU6eSxmcm9tV2lyZVR5cGU6XyxhcmdQYWNrQWR2YW5jZTo4LHJlYWRWYWx1ZUZyb21Qb2ludGVyOl99LHt0YjohMH0pfSxIOmZ1bmN0aW9uKHUsZil7Zj1zdChmPj4+MCk7dmFyIHk9Zj09PVwic3RkOjpzdHJpbmdcIjtLZSh1Pj4+MCx7bmFtZTpmLGZyb21XaXJlVHlwZTpmdW5jdGlvbihfKXt2YXIgQT10ZVtfPj4+Mj4+PjBdLE09Xys0O2lmKHkpZm9yKHZhciBIPU0sWD0wO1g8PUE7KytYKXt2YXIgaj1NK1g7aWYoWD09QXx8VltqPj4+MF09PTApe2lmKEg9cWUoSCxqLUgpLHE9PT12b2lkIDApdmFyIHE9SDtlbHNlIHErPVN0cmluZy5mcm9tQ2hhckNvZGUoMCkscSs9SDtIPWorMX19ZWxzZXtmb3IocT1BcnJheShBKSxYPTA7WDxBOysrWClxW1hdPVN0cmluZy5mcm9tQ2hhckNvZGUoVltNK1g+Pj4wXSk7cT1xLmpvaW4oXCJcIil9cmV0dXJuIGx0KF8pLHF9LHRvV2lyZVR5cGU6ZnVuY3Rpb24oXyxBKXtBIGluc3RhbmNlb2YgQXJyYXlCdWZmZXImJihBPW5ldyBVaW50OEFycmF5KEEpKTt2YXIgTT10eXBlb2YgQT09XCJzdHJpbmdcIjtpZighKE18fEEgaW5zdGFuY2VvZiBVaW50OEFycmF5fHxBIGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXl8fEEgaW5zdGFuY2VvZiBJbnQ4QXJyYXkpKXRocm93IG5ldyBndChcIkNhbm5vdCBwYXNzIG5vbi1zdHJpbmcgdG8gc3RkOjpzdHJpbmdcIik7dmFyIEg9eSYmTT9EdChBKTpBLmxlbmd0aCxYPUx0KDQrSCsxKSxqPVgrNDtpZih0ZVtYPj4+Mj4+PjBdPUgseSYmTSlDdChBLFYsaixIKzEpO2Vsc2UgaWYoTSlmb3IoTT0wO008SDsrK00pe3ZhciBxPUEuY2hhckNvZGVBdChNKTtpZigyNTU8cSl0aHJvdyBsdChqKSxuZXcgZ3QoXCJTdHJpbmcgaGFzIFVURi0xNiBjb2RlIHVuaXRzIHRoYXQgZG8gbm90IGZpdCBpbiA4IGJpdHNcIik7VltqK00+Pj4wXT1xfWVsc2UgZm9yKE09MDtNPEg7KytNKVZbaitNPj4+MF09QVtNXTtyZXR1cm4gXyE9PW51bGwmJl8ucHVzaChsdCxYKSxYfSxhcmdQYWNrQWR2YW5jZTo4LHJlYWRWYWx1ZUZyb21Qb2ludGVyOmZhLGViKF8pe2x0KF8pfX0pfSx6OmZ1bmN0aW9uKHUsZix5KXtpZihmPj4+PTAseT4+Pj0wLHk9c3QoeSksZj09PTIpdmFyIF89bWEsQT1mZSxNPWRyLEg9KCk9PnNlLFg9MTtlbHNlIGY9PT00JiYoXz1vbixBPWhhLE09c24sSD0oKT0+dGUsWD0yKTtLZSh1Pj4+MCx7bmFtZTp5LGZyb21XaXJlVHlwZTpqPT57Zm9yKHZhciBxPXRlW2o+Pj4yPj4+MF0sbmU9SCgpLG1lLCRlPWorNCxQPTA7UDw9cTsrK1Ape3ZhciBvZT1qKzQrUCpmOyhQPT1xfHxuZVtvZT4+PlhdPT0wKSYmKCRlPV8oJGUsb2UtJGUpLG1lPT09dm9pZCAwP21lPSRlOihtZSs9U3RyaW5nLmZyb21DaGFyQ29kZSgwKSxtZSs9JGUpLCRlPW9lK2YpfXJldHVybiBsdChqKSxtZX0sdG9XaXJlVHlwZTooaixxKT0+e2lmKHR5cGVvZiBxIT1cInN0cmluZ1wiKXRocm93IG5ldyBndChgQ2Fubm90IHBhc3Mgbm9uLXN0cmluZyB0byBDKysgc3RyaW5nIHR5cGUgJHt5fWApO3ZhciBuZT1NKHEpLG1lPUx0KDQrbmUrZik7cmV0dXJuIHRlW21lPj4+Ml09bmU+PlgsQShxLG1lKzQsbmUrZiksaiE9PW51bGwmJmoucHVzaChsdCxtZSksbWV9LGFyZ1BhY2tBZHZhbmNlOjgscmVhZFZhbHVlRnJvbVBvaW50ZXI6bHIsZWIoail7bHQoail9fSl9LGhhOmZ1bmN0aW9uKHUsZil7Zj1zdChmPj4+MCksS2UodT4+PjAse3ViOiEwLG5hbWU6ZixhcmdQYWNrQWR2YW5jZTowLGZyb21XaXJlVHlwZTooKT0+e30sdG9XaXJlVHlwZTooKT0+e319KX0sZGE6KCk9PjEsczpmdW5jdGlvbih1LGYseSl7cmV0dXJuIGY+Pj49MCx5Pj4+PTAsdT13ZSh1Pj4+MCksZj1ScihmLFwiZW12YWw6OmFzXCIpLEJyKGYseSx1KX0sdzpmdW5jdGlvbih1KXtyZXR1cm4gdT4+Pj0wLFVyKCgpPT4odT13ZSh1KSx1LnRoZW4odXQpKSl9LG86ZnVuY3Rpb24odSxmLHksXyl7cmV0dXJuIHk+Pj49MCxfPj4+PTAsdT1RdFt1Pj4+MF0sZj13ZShmPj4+MCksdShudWxsLGYseSxfKX0sazpmdW5jdGlvbih1LGYseSxfLEEpe3JldHVybiB5Pj4+PTAsXz4+Pj0wLEE+Pj49MCx1PVF0W3U+Pj4wXSxmPXdlKGY+Pj4wKSx5PXByKHkpLHUoZixmW3ldLF8sQSl9LGI6T3IsQTpmdW5jdGlvbih1LGYpe3JldHVybiBmPj4+PTAsdT13ZSh1Pj4+MCksZj13ZShmKSx1PT1mfSxtOmZ1bmN0aW9uKHUpe3JldHVybiB1Pj4+PTAsdT09PTA/dXQoV3IoKSk6KHU9cHIodSksdXQoV3IoKVt1XSkpfSxpOmZ1bmN0aW9uKHUsZix5KXtmPU5yKHUsZj4+PjApO3ZhciBfPWYuc2hpZnQoKTt1LS07dmFyIEE9YHJldHVybiBmdW5jdGlvbiAob2JqLCBmdW5jLCBkZXN0cnVjdG9yc1JlZiwgYXJncykge1xuYCxNPTAsSD1bXTt5PT09MCYmSC5wdXNoKFwib2JqXCIpO2Zvcih2YXIgWD1bXCJyZXRUeXBlXCJdLGo9W19dLHE9MDtxPHU7KytxKUgucHVzaChcImFyZ1wiK3EpLFgucHVzaChcImFyZ1R5cGVcIitxKSxqLnB1c2goZltxXSksQSs9YCAgdmFyIGFyZyR7cX0gPSBhcmdUeXBlJHtxfS5yZWFkVmFsdWVGcm9tUG9pbnRlcihhcmdzJHtNP1wiK1wiK006XCJcIn0pO1xuYCxNKz1mW3FdLmFyZ1BhY2tBZHZhbmNlO2ZvcihBKz1gICB2YXIgcnYgPSAke3k9PT0xP1wibmV3IGZ1bmNcIjpcImZ1bmMuY2FsbFwifSgke0guam9pbihcIiwgXCIpfSk7XG5gLHE9MDtxPHU7KytxKWZbcV0uZGVsZXRlT2JqZWN0JiYoQSs9YCAgYXJnVHlwZSR7cX0uZGVsZXRlT2JqZWN0KGFyZyR7cX0pO1xuYCk7cmV0dXJuIF8udWJ8fChYLnB1c2goXCJlbXZhbF9yZXR1cm5WYWx1ZVwiKSxqLnB1c2goQnIpLEErPWAgIHJldHVybiBlbXZhbF9yZXR1cm5WYWx1ZShyZXRUeXBlLCBkZXN0cnVjdG9yc1JlZiwgcnYpO1xuYCksWC5wdXNoKEErYH07XG5gKSx1PWdhKFgpLmFwcGx5KG51bGwsaikseT1gbWV0aG9kQ2FsbGVyPCgke2YubWFwKG5lPT5uZS5uYW1lKS5qb2luKFwiLCBcIil9KSA9PiAke18ubmFtZX0+YCxtdChmcih5LHUpKX0scjpmdW5jdGlvbih1LGYpe3JldHVybiBmPj4+PTAsdT13ZSh1Pj4+MCksZj13ZShmKSx1dCh1W2ZdKX0sZTpmdW5jdGlvbih1KXt1Pj4+PTAsNDx1JiYoUGUuZ2V0KHUpLnBiKz0xKX0sdTpmdW5jdGlvbigpe3JldHVybiB1dChbXSl9LGw6ZnVuY3Rpb24odSl7dT13ZSh1Pj4+MCk7Zm9yKHZhciBmPUFycmF5KHUubGVuZ3RoKSx5PTA7eTx1Lmxlbmd0aDt5KyspZlt5XT11W3ldO3JldHVybiB1dChmKX0sZDpmdW5jdGlvbih1KXtyZXR1cm4gdXQocHIodT4+PjApKX0sajpmdW5jdGlvbigpe3JldHVybiB1dCh7fSl9LGg6ZnVuY3Rpb24odSl7dT4+Pj0wO2Zvcih2YXIgZj13ZSh1KTtmLmxlbmd0aDspe3ZhciB5PWYucG9wKCk7Zi5wb3AoKSh5KX1Pcih1KX0sZzpmdW5jdGlvbih1LGYseSl7Zj4+Pj0wLHk+Pj49MCx1PXdlKHU+Pj4wKSxmPXdlKGYpLHk9d2UoeSksdVtmXT15fSxjOmZ1bmN0aW9uKHUsZil7cmV0dXJuIGY+Pj49MCx1PVJyKHU+Pj4wLFwiX2VtdmFsX3Rha2VfdmFsdWVcIiksdT11LnJlYWRWYWx1ZUZyb21Qb2ludGVyKGYpLHV0KHUpfSxUOmZ1bmN0aW9uKHUsZil7dT0tOTAwNzE5OTI1NDc0MDk5Mj51fHw5MDA3MTk5MjU0NzQwOTkyPHU/TmFOOk51bWJlcih1KSxmPj4+PTAsdT1uZXcgRGF0ZSgxZTMqdSksQltmPj4+Mj4+PjBdPXUuZ2V0VVRDU2Vjb25kcygpLEJbZis0Pj4+Mj4+PjBdPXUuZ2V0VVRDTWludXRlcygpLEJbZis4Pj4+Mj4+PjBdPXUuZ2V0VVRDSG91cnMoKSxCW2YrMTI+Pj4yPj4+MF09dS5nZXRVVENEYXRlKCksQltmKzE2Pj4+Mj4+PjBdPXUuZ2V0VVRDTW9udGgoKSxCW2YrMjA+Pj4yPj4+MF09dS5nZXRVVENGdWxsWWVhcigpLTE5MDAsQltmKzI0Pj4+Mj4+PjBdPXUuZ2V0VVRDRGF5KCksQltmKzI4Pj4+Mj4+PjBdPSh1LmdldFRpbWUoKS1EYXRlLlVUQyh1LmdldFVUQ0Z1bGxZZWFyKCksMCwxLDAsMCwwLDApKS84NjRlNXwwfSxVOmZ1bmN0aW9uKHUsZil7dT0tOTAwNzE5OTI1NDc0MDk5Mj51fHw5MDA3MTk5MjU0NzQwOTkyPHU/TmFOOk51bWJlcih1KSxmPj4+PTAsdT1uZXcgRGF0ZSgxZTMqdSksQltmPj4+Mj4+PjBdPXUuZ2V0U2Vjb25kcygpLEJbZis0Pj4+Mj4+PjBdPXUuZ2V0TWludXRlcygpLEJbZis4Pj4+Mj4+PjBdPXUuZ2V0SG91cnMoKSxCW2YrMTI+Pj4yPj4+MF09dS5nZXREYXRlKCksQltmKzE2Pj4+Mj4+PjBdPXUuZ2V0TW9udGgoKSxCW2YrMjA+Pj4yPj4+MF09dS5nZXRGdWxsWWVhcigpLTE5MDAsQltmKzI0Pj4+Mj4+PjBdPXUuZ2V0RGF5KCksQltmKzI4Pj4+Mj4+PjBdPSh0dCh1LmdldEZ1bGxZZWFyKCkpP2huOnl0KVt1LmdldE1vbnRoKCldK3UuZ2V0RGF0ZSgpLTF8MCxCW2YrMzY+Pj4yPj4+MF09LSg2MCp1LmdldFRpbWV6b25lT2Zmc2V0KCkpO3ZhciB5PW5ldyBEYXRlKHUuZ2V0RnVsbFllYXIoKSw2LDEpLmdldFRpbWV6b25lT2Zmc2V0KCksXz1uZXcgRGF0ZSh1LmdldEZ1bGxZZWFyKCksMCwxKS5nZXRUaW1lem9uZU9mZnNldCgpO0JbZiszMj4+PjI+Pj4wXT0oeSE9XyYmdS5nZXRUaW1lem9uZU9mZnNldCgpPT1NYXRoLm1pbihfLHkpKXwwfSxWOmZ1bmN0aW9uKHUpe3U+Pj49MDt2YXIgZj1uZXcgRGF0ZShCW3UrMjA+Pj4yPj4+MF0rMTkwMCxCW3UrMTY+Pj4yPj4+MF0sQlt1KzEyPj4+Mj4+PjBdLEJbdSs4Pj4+Mj4+PjBdLEJbdSs0Pj4+Mj4+PjBdLEJbdT4+PjI+Pj4wXSwwKSx5PUJbdSszMj4+PjI+Pj4wXSxfPWYuZ2V0VGltZXpvbmVPZmZzZXQoKSxBPW5ldyBEYXRlKGYuZ2V0RnVsbFllYXIoKSw2LDEpLmdldFRpbWV6b25lT2Zmc2V0KCksTT1uZXcgRGF0ZShmLmdldEZ1bGxZZWFyKCksMCwxKS5nZXRUaW1lem9uZU9mZnNldCgpLEg9TWF0aC5taW4oTSxBKTtyZXR1cm4gMD55P0JbdSszMj4+PjI+Pj4wXT0rKEEhPU0mJkg9PV8pOjA8eSE9KEg9PV8pJiYoQT1NYXRoLm1heChNLEEpLGYuc2V0VGltZShmLmdldFRpbWUoKSs2ZTQqKCgwPHk/SDpBKS1fKSkpLEJbdSsyND4+PjI+Pj4wXT1mLmdldERheSgpLEJbdSsyOD4+PjI+Pj4wXT0odHQoZi5nZXRGdWxsWWVhcigpKT9objp5dClbZi5nZXRNb250aCgpXStmLmdldERhdGUoKS0xfDAsQlt1Pj4+Mj4+PjBdPWYuZ2V0U2Vjb25kcygpLEJbdSs0Pj4+Mj4+PjBdPWYuZ2V0TWludXRlcygpLEJbdSs4Pj4+Mj4+PjBdPWYuZ2V0SG91cnMoKSxCW3UrMTI+Pj4yPj4+MF09Zi5nZXREYXRlKCksQlt1KzE2Pj4+Mj4+PjBdPWYuZ2V0TW9udGgoKSxCW3UrMjA+Pj4yPj4+MF09Zi5nZXRZZWFyKCksdT1mLmdldFRpbWUoKSxpc05hTih1KT8oQltfbigpPj4+Mj4+PjBdPTYxLHU9LTEpOnUvPTFlMyxCaWdJbnQodSl9LFI6ZnVuY3Rpb24oKXtyZXR1cm4tNTJ9LFM6ZnVuY3Rpb24oKXt9LEs6ZnVuY3Rpb24odSxmLHkpe2Z1bmN0aW9uIF8oail7cmV0dXJuKGo9ai50b1RpbWVTdHJpbmcoKS5tYXRjaCgvXFwoKFtBLVphLXogXSspXFwpJC8pKT9qWzFdOlwiR01UXCJ9eT4+Pj0wO3ZhciBBPW5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSxNPW5ldyBEYXRlKEEsMCwxKSxIPW5ldyBEYXRlKEEsNiwxKTtBPU0uZ2V0VGltZXpvbmVPZmZzZXQoKTt2YXIgWD1ILmdldFRpbWV6b25lT2Zmc2V0KCk7dGVbdT4+PjA+Pj4yPj4+MF09NjAqTWF0aC5tYXgoQSxYKSxCW2Y+Pj4wPj4+Mj4+PjBdPSsoQSE9WCksdT1fKE0pLGY9XyhIKSx1PVZyKHUpLGY9VnIoZiksWDxBPyh0ZVt5Pj4+Mj4+PjBdPXUsdGVbeSs0Pj4+Mj4+PjBdPWYpOih0ZVt5Pj4+Mj4+PjBdPWYsdGVbeSs0Pj4+Mj4+PjBdPXUpfSx2OigpPT57R2UoXCJcIil9LGY6ZnVuY3Rpb24odSxmLHkpe3JldHVybiB1Pj4+PTAsZj1ydChmPj4+MCx5Pj4+MCksTXRbdV0uYXBwbHkobnVsbCxmKX0sSTpmdW5jdGlvbih1LGYseSl7cmV0dXJuIHU+Pj49MCxmPXJ0KGY+Pj4wLHk+Pj4wKSxNdFt1XS5hcHBseShudWxsLGYpfSxFOigpPT5EYXRlLm5vdygpLEw6ZnVuY3Rpb24oKXtyZXR1cm4gNDI5NDkwMTc2MH0scTooKT0+cGVyZm9ybWFuY2Uubm93KCksSjpmdW5jdGlvbih1KXt1Pj4+PTA7dmFyIGY9Vi5sZW5ndGg7aWYoNDI5NDkwMTc2MDx1KXJldHVybiExO2Zvcih2YXIgeT0xOzQ+PXk7eSo9Mil7dmFyIF89ZiooMSsuMi95KTtfPU1hdGgubWluKF8sdSsxMDA2NjMyOTYpO3ZhciBBPU1hdGg7Xz1NYXRoLm1heCh1LF8pO2U6e0E9KEEubWluLmNhbGwoQSw0Mjk0OTAxNzYwLF8rKDY1NTM2LV8lNjU1MzYpJTY1NTM2KS1FLmJ1ZmZlci5ieXRlTGVuZ3RoKzY1NTM1KS82NTUzNjt0cnl7RS5ncm93KEEpLFVlKCk7dmFyIE09MTticmVhayBlfWNhdGNoe31NPXZvaWQgMH1pZihNKXJldHVybiEwfXJldHVybiExfSxZOmZ1bmN0aW9uKHUsZil7dT4+Pj0wLGY+Pj49MDt2YXIgeT0wO3JldHVybiBZZSgpLmZvckVhY2goKF8sQSk9Pnt2YXIgTT1mK3k7Zm9yKEE9dGVbdSs0KkE+Pj4yPj4+MF09TSxNPTA7TTxfLmxlbmd0aDsrK00pRFtBKys+Pj4wPj4+MF09Xy5jaGFyQ29kZUF0KE0pO0RbQT4+PjA+Pj4wXT0wLHkrPV8ubGVuZ3RoKzF9KSwwfSxaOmZ1bmN0aW9uKHUsZil7dT4+Pj0wLGY+Pj49MDt2YXIgeT1ZZSgpO3RlW3U+Pj4yPj4+MF09eS5sZW5ndGg7dmFyIF89MDtyZXR1cm4geS5mb3JFYWNoKEE9Pl8rPUEubGVuZ3RoKzEpLHRlW2Y+Pj4yPj4+MF09XywwfSx5OigpPT41MixDOmZ1bmN0aW9uKCl7cmV0dXJuIDUyfSxYOmZ1bmN0aW9uKCl7cmV0dXJuIDcwfSxCOmZ1bmN0aW9uKHUsZix5LF8pe2Y+Pj49MCx5Pj4+PTAsXz4+Pj0wO2Zvcih2YXIgQT0wLE09MDtNPHk7TSsrKXt2YXIgSD10ZVtmPj4+Mj4+PjBdLFg9dGVbZis0Pj4+Mj4+PjBdO2YrPTg7Zm9yKHZhciBqPTA7ajxYO2orKyl7dmFyIHE9VltIK2o+Pj4wXSxuZT1nblt1XTtxPT09MHx8cT09PTEwPygodT09PTE/QzpTKShWdChuZSwwKSksbmUubGVuZ3RoPTApOm5lLnB1c2gocSl9QSs9WH1yZXR1cm4gdGVbXz4+PjI+Pj4wXT1BLDB9LGVhOnduLHA6ZnVuY3Rpb24odSxmLHksXyl7cmV0dXJuIHduKHU+Pj4wLGY+Pj4wLHk+Pj4wLF8+Pj4wKX19LHVlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdSh5KXtyZXR1cm4gdWU9eS5leHBvcnRzLHVlPXVuKCksdWU9eG4oKSxFPXVlLmphLFVlKCkseWUudW5zaGlmdCh1ZS5rYSksdmUtLSx2ZT09MCYmKFdlIT09bnVsbCYmKGNsZWFySW50ZXJ2YWwoV2UpLFdlPW51bGwpLEJlJiYoeT1CZSxCZT1udWxsLHkoKSkpLHVlfXZhciBmPXthOnlhfTtpZih2ZSsrLHIuaW5zdGFudGlhdGVXYXNtKXRyeXtyZXR1cm4gci5pbnN0YW50aWF0ZVdhc20oZix1KX1jYXRjaCh5KXtTKGBNb2R1bGUuaW5zdGFudGlhdGVXYXNtIGNhbGxiYWNrIGZhaWxlZCB3aXRoIGVycm9yOiAke3l9YCksaSh5KX1yZXR1cm4gQnQoZixmdW5jdGlvbih5KXt1KHkuaW5zdGFuY2UpfSkuY2F0Y2goaSkse319KCk7ci5fT3J0SW5pdD0odSxmKT0+KHIuX09ydEluaXQ9dWUubGEpKHUsZiksci5fT3J0R2V0TGFzdEVycm9yPSh1LGYpPT4oci5fT3J0R2V0TGFzdEVycm9yPXVlLm1hKSh1LGYpLHIuX09ydENyZWF0ZVNlc3Npb25PcHRpb25zPSh1LGYseSxfLEEsTSxILFgsaixxKT0+KHIuX09ydENyZWF0ZVNlc3Npb25PcHRpb25zPXVlLm5hKSh1LGYseSxfLEEsTSxILFgsaixxKSxyLl9PcnRBcHBlbmRFeGVjdXRpb25Qcm92aWRlcj0odSxmKT0+KHIuX09ydEFwcGVuZEV4ZWN1dGlvblByb3ZpZGVyPXVlLm9hKSh1LGYpLHIuX09ydEFkZEZyZWVEaW1lbnNpb25PdmVycmlkZT0odSxmLHkpPT4oci5fT3J0QWRkRnJlZURpbWVuc2lvbk92ZXJyaWRlPXVlLnBhKSh1LGYseSksci5fT3J0QWRkU2Vzc2lvbkNvbmZpZ0VudHJ5PSh1LGYseSk9PihyLl9PcnRBZGRTZXNzaW9uQ29uZmlnRW50cnk9dWUucWEpKHUsZix5KSxyLl9PcnRSZWxlYXNlU2Vzc2lvbk9wdGlvbnM9dT0+KHIuX09ydFJlbGVhc2VTZXNzaW9uT3B0aW9ucz11ZS5yYSkodSksci5fT3J0Q3JlYXRlU2Vzc2lvbj0odSxmLHkpPT4oci5fT3J0Q3JlYXRlU2Vzc2lvbj11ZS5zYSkodSxmLHkpLHIuX09ydFJlbGVhc2VTZXNzaW9uPXU9PihyLl9PcnRSZWxlYXNlU2Vzc2lvbj11ZS50YSkodSksci5fT3J0R2V0SW5wdXRPdXRwdXRDb3VudD0odSxmLHkpPT4oci5fT3J0R2V0SW5wdXRPdXRwdXRDb3VudD11ZS51YSkodSxmLHkpLHIuX09ydEdldElucHV0TmFtZT0odSxmKT0+KHIuX09ydEdldElucHV0TmFtZT11ZS52YSkodSxmKSxyLl9PcnRHZXRPdXRwdXROYW1lPSh1LGYpPT4oci5fT3J0R2V0T3V0cHV0TmFtZT11ZS53YSkodSxmKSxyLl9PcnRGcmVlPXU9PihyLl9PcnRGcmVlPXVlLnhhKSh1KSxyLl9PcnRDcmVhdGVUZW5zb3I9KHUsZix5LF8sQSxNKT0+KHIuX09ydENyZWF0ZVRlbnNvcj11ZS55YSkodSxmLHksXyxBLE0pLHIuX09ydEdldFRlbnNvckRhdGE9KHUsZix5LF8sQSk9PihyLl9PcnRHZXRUZW5zb3JEYXRhPXVlLnphKSh1LGYseSxfLEEpLHIuX09ydFJlbGVhc2VUZW5zb3I9dT0+KHIuX09ydFJlbGVhc2VUZW5zb3I9dWUuQWEpKHUpLHIuX09ydENyZWF0ZVJ1bk9wdGlvbnM9KHUsZix5LF8pPT4oci5fT3J0Q3JlYXRlUnVuT3B0aW9ucz11ZS5CYSkodSxmLHksXyksci5fT3J0QWRkUnVuQ29uZmlnRW50cnk9KHUsZix5KT0+KHIuX09ydEFkZFJ1bkNvbmZpZ0VudHJ5PXVlLkNhKSh1LGYseSksci5fT3J0UmVsZWFzZVJ1bk9wdGlvbnM9dT0+KHIuX09ydFJlbGVhc2VSdW5PcHRpb25zPXVlLkRhKSh1KSxyLl9PcnRDcmVhdGVCaW5kaW5nPXU9PihyLl9PcnRDcmVhdGVCaW5kaW5nPXVlLkVhKSh1KSxyLl9PcnRCaW5kSW5wdXQ9KHUsZix5KT0+KHIuX09ydEJpbmRJbnB1dD11ZS5GYSkodSxmLHkpLHIuX09ydEJpbmRPdXRwdXQ9KHUsZix5LF8pPT4oci5fT3J0QmluZE91dHB1dD11ZS5HYSkodSxmLHksXyksci5fT3J0Q2xlYXJCb3VuZE91dHB1dHM9dT0+KHIuX09ydENsZWFyQm91bmRPdXRwdXRzPXVlLkhhKSh1KSxyLl9PcnRSZWxlYXNlQmluZGluZz11PT4oci5fT3J0UmVsZWFzZUJpbmRpbmc9dWUuSWEpKHUpLHIuX09ydFJ1bldpdGhCaW5kaW5nPSh1LGYseSxfLEEpPT4oci5fT3J0UnVuV2l0aEJpbmRpbmc9dWUuSmEpKHUsZix5LF8sQSksci5fT3J0UnVuPSh1LGYseSxfLEEsTSxILFgpPT4oci5fT3J0UnVuPXVlLkthKSh1LGYseSxfLEEsTSxILFgpLHIuX09ydEVuZFByb2ZpbGluZz11PT4oci5fT3J0RW5kUHJvZmlsaW5nPXVlLkxhKSh1KSxyLl9Kc2VwT3V0cHV0PSh1LGYseSk9PihyLl9Kc2VwT3V0cHV0PXVlLk1hKSh1LGYseSksci5fSnNlcEdldE5vZGVOYW1lPXU9PihyLl9Kc2VwR2V0Tm9kZU5hbWU9dWUuTmEpKHUpO3ZhciBfbj0oKT0+KF9uPXVlLk9hKSgpLEx0PXIuX21hbGxvYz11PT4oTHQ9ci5fbWFsbG9jPXVlLlBhKSh1KSxsdD1yLl9mcmVlPXU9PihsdD1yLl9mcmVlPXVlLlFhKSh1KSxlcj11PT4oZXI9dWUuUmEpKHUpLGdyPSgpPT4oZ3I9dWUuVGEpKCkseXI9dT0+KHlyPXVlLlVhKSh1KSxIcj11PT4oSHI9dWUuVmEpKHUpLHRyPXU9Pih0cj11ZS5YYSkodSksU249KCk9PihTbj11ZS5ZYSkoKSwkdD11PT4oJHQ9dWUuWmEpKHUpLGh0PSgpPT4oaHQ9dWUuX2EpKCk7ci5fX19zdGFydF9lbV9qcz05NTcyOTEsci5fX19zdG9wX2VtX2pzPTk1NzQ1MjtmdW5jdGlvbiB4bigpe3ZhciB1PXVlO3U9T2JqZWN0LmFzc2lnbih7fSx1KTt2YXIgZj1fPT4oKT0+XygpPj4+MCx5PV89PkE9Pl8oQSk+Pj4wO3JldHVybiB1Lk9hPWYodS5PYSksdS5QYT15KHUuUGEpLHUuUmE9eSh1LlJhKSx1LlRhPWYodS5UYSksdS5WYT15KHUuVmEpLHV9ci5zdGFja0FsbG9jPUhyLHIuc3RhY2tTYXZlPWdyLHIuc3RhY2tSZXN0b3JlPXlyLHIuVVRGOFRvU3RyaW5nPXFlLHIuc3RyaW5nVG9VVEY4PSh1LGYseSk9PkN0KHUsVixmLHkpLHIubGVuZ3RoQnl0ZXNVVEY4PUR0O3ZhciB6dDtCZT1mdW5jdGlvbiB1KCl7enR8fExyKCksenR8fChCZT11KX07ZnVuY3Rpb24gTHIoKXtpZighKDA8dmUpKXtpZihyLnByZVJ1bilmb3IodHlwZW9mIHIucHJlUnVuPT1cImZ1bmN0aW9uXCImJihyLnByZVJ1bj1bci5wcmVSdW5dKTtyLnByZVJ1bi5sZW5ndGg7KXt2YXIgdT1yLnByZVJ1bi5zaGlmdCgpO3BlLnVuc2hpZnQodSl9Zm9yKDswPHBlLmxlbmd0aDspcGUuc2hpZnQoKShyKTtpZighKDA8dmV8fHp0fHwoenQ9ITAsci5jYWxsZWRSdW49ITAsTykpKXtmb3IoOzA8eWUubGVuZ3RoOyl5ZS5zaGlmdCgpKHIpO2ZvcihhKHIpOzA8ZGUubGVuZ3RoOylkZS5zaGlmdCgpKHIpfX19cmV0dXJuIExyKCksdC5yZWFkeX19KSgpO3R5cGVvZiBTbz09XCJvYmplY3RcIiYmdHlwZW9mIEJhPT1cIm9iamVjdFwiP0JhLmV4cG9ydHM9X286dHlwZW9mIGRlZmluZT09XCJmdW5jdGlvblwiJiZkZWZpbmUuYW1kJiZkZWZpbmUoW10sKCk9Pl9vKX0pO3ZhciBDbz1icigoKT0+e30pO3ZhciBJbz1icigoKT0+e30pO3ZhciBBbz17fTtucihBbyx7Y3B1czooKT0+SGR9KTt2YXIgSGQsVG89USgoKT0+e0hkPXZvaWQgMH0pO3ZhciBrbz1icigoT28sTWEpPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIEVvPSgoKT0+e3ZhciBlPXR5cGVvZiBkb2N1bWVudDxcInVcIiYmZG9jdW1lbnQuY3VycmVudFNjcmlwdD9kb2N1bWVudC5jdXJyZW50U2NyaXB0LnNyYzp2b2lkIDA7cmV0dXJuIHR5cGVvZiBfX2ZpbGVuYW1lPFwidVwiJiYoZT1lfHxfX2ZpbGVuYW1lKSxmdW5jdGlvbih0PXt9KXtmdW5jdGlvbiByKCl7cmV0dXJuIGJlLmJ1ZmZlciE9ZGUuYnVmZmVyJiZSZSgpLGRlfWZ1bmN0aW9uIGEoKXtyZXR1cm4gYmUuYnVmZmVyIT1kZS5idWZmZXImJlJlKCksdmV9ZnVuY3Rpb24gaSgpe3JldHVybiBiZS5idWZmZXIhPWRlLmJ1ZmZlciYmUmUoKSxXZX1mdW5jdGlvbiBzKCl7cmV0dXJuIGJlLmJ1ZmZlciE9ZGUuYnVmZmVyJiZSZSgpLEJlfWZ1bmN0aW9uIG8oKXtyZXR1cm4gYmUuYnVmZmVyIT1kZS5idWZmZXImJlJlKCksR2V9ZnVuY3Rpb24gYygpe3JldHVybiBiZS5idWZmZXIhPWRlLmJ1ZmZlciYmUmUoKSxGfWZ1bmN0aW9uIHAoKXtyZXR1cm4gYmUuYnVmZmVyIT1kZS5idWZmZXImJlJlKCksaWV9ZnVuY3Rpb24gbSgpe3JldHVybiBiZS5idWZmZXIhPWRlLmJ1ZmZlciYmUmUoKSxvdH12YXIgbD10LGcsYjtsLnJlYWR5PW5ldyBQcm9taXNlKChuLGQpPT57Zz1uLGI9ZH0pLGwubW91bnRFeHRlcm5hbERhdGE9KG4sZCk9PnsobC5GYnx8KGwuRmI9bmV3IE1hcCkpLnNldChuLGQpfSxsLnVubW91bnRFeHRlcm5hbERhdGE9KCk9PntkZWxldGUgbC5GYn0sbC5qc2VwSW5pdD0obixkLGgsdixJLGsseixHKT0+e2wucmM9bixsLiRiPWQsbC5iYz1oLGwuT2I9dixsLmFjPUksbC5lYj1rLGwuY2M9eixsLmRjPUcsZD0oWixLLGFlKT0+KC4uLmdlKT0+e2xldCBTZT1odCxSPUs/LigpO2dlPVooLi4uZ2UpO2xldCBsZT1LPy4oKTtyZXR1cm4gUiE9PWxlJiYoWj1sZSxhZShSKSxLPWFlPW51bGwpLGh0IT1TZT9BKCk6Z2V9LGg9Wj0+YXN5bmMoLi4uSyk9Pnt0cnl7aWYobC5FYil0aHJvdyBFcnJvcihcIlNlc3Npb24gYWxyZWFkeSBzdGFydGVkXCIpO2xldCBhZT1sLkViPXtmYzpLWzBdLGVycm9yczpbXX0sZ2U9YXdhaXQgWiguLi5LKTtpZihsLkViIT09YWUpdGhyb3cgRXJyb3IoXCJTZXNzaW9uIG1pc21hdGNoXCIpO24uZmx1c2goKTtsZXQgU2U9YWUuZXJyb3JzO2lmKDA8U2UubGVuZ3RoKXtsZXQgUj1hd2FpdCBQcm9taXNlLmFsbChTZSk7aWYoUj1SLmZpbHRlcihsZT0+bGUpLDA8Ui5sZW5ndGgpdGhyb3cgRXJyb3IoUi5qb2luKGBcbmApKX1yZXR1cm4gZ2V9ZmluYWxseXtsLkViPW51bGx9fSxsLl9PcnRDcmVhdGVTZXNzaW9uPWQobC5fT3J0Q3JlYXRlU2Vzc2lvbiwoKT0+bC5fT3J0Q3JlYXRlU2Vzc2lvbixaPT5sLl9PcnRDcmVhdGVTZXNzaW9uPVopLGwuX09ydFJ1bj1oKGQobC5fT3J0UnVuLCgpPT5sLl9PcnRSdW4sWj0+bC5fT3J0UnVuPVopKSxsLl9PcnRSdW5XaXRoQmluZGluZz1oKGQobC5fT3J0UnVuV2l0aEJpbmRpbmcsKCk9PmwuX09ydFJ1bldpdGhCaW5kaW5nLFo9PmwuX09ydFJ1bldpdGhCaW5kaW5nPVopKSxsLl9PcnRCaW5kSW5wdXQ9ZChsLl9PcnRCaW5kSW5wdXQsKCk9PmwuX09ydEJpbmRJbnB1dCxaPT5sLl9PcnRCaW5kSW5wdXQ9WiksbC5qc2VwUmVnaXN0ZXJCdWZmZXI9KFosSyxhZSxnZSk9Pm4ucmVnaXN0ZXJCdWZmZXIoWixLLGFlLGdlKSxsLmpzZXBVbnJlZ2lzdGVyQnVmZmVycz1aPT57bi51bnJlZ2lzdGVyQnVmZmVycyhaKX0sbC5qc2VwR2V0QnVmZmVyPVo9Pm4uZ2V0QnVmZmVyKFopLGwuanNlcENyZWF0ZURvd25sb2FkZXI9KFosSyxhZSk9Pm4uY3JlYXRlRG93bmxvYWRlcihaLEssYWUpLGwuanNlcE9uUnVuU3RhcnQ9KCk9Pm4ub25SdW5TdGFydCgpfTt2YXIgdz1PYmplY3QuYXNzaWduKHt9LGwpLCQ9XCIuL3RoaXMucHJvZ3JhbVwiLHg9KG4sZCk9Pnt0aHJvdyBkfSxUPXR5cGVvZiB3aW5kb3c9PVwib2JqZWN0XCIsQz10eXBlb2YgaW1wb3J0U2NyaXB0cz09XCJmdW5jdGlvblwiLFM9dHlwZW9mIHByb2Nlc3M9PVwib2JqZWN0XCImJnR5cGVvZiBwcm9jZXNzLnZlcnNpb25zPT1cIm9iamVjdFwiJiZ0eXBlb2YgcHJvY2Vzcy52ZXJzaW9ucy5ub2RlPT1cInN0cmluZ1wiLEU9bC5FTlZJUk9OTUVOVF9JU19QVEhSRUFEfHwhMSxPPVwiXCI7ZnVuY3Rpb24gVShuKXtyZXR1cm4gbC5sb2NhdGVGaWxlP2wubG9jYXRlRmlsZShuLE8pOk8rbn12YXIgRCxWLFk7aWYoUyl7dmFyIHNlPShrYSgpLEd0KE9hKSksQj0oUmEoKSxHdChQYSkpO089Qz9CLmRpcm5hbWUoTykrXCIvXCI6X19kaXJuYW1lK1wiL1wiLEQ9KGQsaCk9PihkPUR0KGQpP25ldyBVUkwoZCk6Qi5ub3JtYWxpemUoZCksc2UucmVhZEZpbGVTeW5jKGQsaD92b2lkIDA6XCJ1dGY4XCIpKSxZPWQ9PihkPUQoZCwhMCksZC5idWZmZXJ8fChkPW5ldyBVaW50OEFycmF5KGQpKSxkKSxWPShkLGgsdixJPSEwKT0+e2Q9RHQoZCk/bmV3IFVSTChkKTpCLm5vcm1hbGl6ZShkKSxzZS5yZWFkRmlsZShkLEk/dm9pZCAwOlwidXRmOFwiLChrLHopPT57az92KGspOmgoST96LmJ1ZmZlcjp6KX0pfSwhbC50aGlzUHJvZ3JhbSYmMTxwcm9jZXNzLmFyZ3YubGVuZ3RoJiYoJD1wcm9jZXNzLmFyZ3ZbMV0ucmVwbGFjZSgvXFxcXC9nLFwiL1wiKSkscHJvY2Vzcy5hcmd2LnNsaWNlKDIpLHg9KGQsaCk9Pnt0aHJvdyBwcm9jZXNzLmV4aXRDb2RlPWQsaH0sbC5pbnNwZWN0PSgpPT5cIltFbXNjcmlwdGVuIE1vZHVsZSBvYmplY3RdXCI7bGV0IG47dHJ5e249Q28oKX1jYXRjaChkKXt0aHJvdyBjb25zb2xlLmVycm9yKCdUaGUgXCJ3b3JrZXJfdGhyZWFkc1wiIG1vZHVsZSBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgbm9kZS5qcyBidWlsZCAtIHBlcmhhcHMgYSBuZXdlciB2ZXJzaW9uIGlzIG5lZWRlZD8nKSxkfWdsb2JhbC5Xb3JrZXI9bi5Xb3JrZXJ9ZWxzZShUfHxDKSYmKEM/Tz1zZWxmLmxvY2F0aW9uLmhyZWY6dHlwZW9mIGRvY3VtZW50PFwidVwiJiZkb2N1bWVudC5jdXJyZW50U2NyaXB0JiYoTz1kb2N1bWVudC5jdXJyZW50U2NyaXB0LnNyYyksdHlwZW9mIGU8XCJ1XCImJmUmJihPPWUpLE8uaW5kZXhPZihcImJsb2I6XCIpIT09MD9PPU8uc3Vic3RyKDAsTy5yZXBsYWNlKC9bPyNdLiovLFwiXCIpLmxhc3RJbmRleE9mKFwiL1wiKSsxKTpPPVwiXCIsU3x8KEQ9bj0+e3ZhciBkPW5ldyBYTUxIdHRwUmVxdWVzdDtyZXR1cm4gZC5vcGVuKFwiR0VUXCIsbiwhMSksZC5zZW5kKG51bGwpLGQucmVzcG9uc2VUZXh0fSxDJiYoWT1uPT57dmFyIGQ9bmV3IFhNTEh0dHBSZXF1ZXN0O3JldHVybiBkLm9wZW4oXCJHRVRcIixuLCExKSxkLnJlc3BvbnNlVHlwZT1cImFycmF5YnVmZmVyXCIsZC5zZW5kKG51bGwpLG5ldyBVaW50OEFycmF5KGQucmVzcG9uc2UpfSksVj0obixkLGgpPT57dmFyIHY9bmV3IFhNTEh0dHBSZXF1ZXN0O3Yub3BlbihcIkdFVFwiLG4sITApLHYucmVzcG9uc2VUeXBlPVwiYXJyYXlidWZmZXJcIix2Lm9ubG9hZD0oKT0+e3Yuc3RhdHVzPT0yMDB8fHYuc3RhdHVzPT0wJiZ2LnJlc3BvbnNlP2Qodi5yZXNwb25zZSk6aCgpfSx2Lm9uZXJyb3I9aCx2LnNlbmQobnVsbCl9KSk7UyYmdHlwZW9mIHBlcmZvcm1hbmNlPlwidVwiJiYoZ2xvYmFsLnBlcmZvcm1hbmNlPUlvKCkucGVyZm9ybWFuY2UpO3ZhciB0ZT1jb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLGtlPWNvbnNvbGUuZXJyb3IuYmluZChjb25zb2xlKTtTJiYodGU9KC4uLm4pPT5zZS53cml0ZVN5bmMoMSxuLmpvaW4oXCIgXCIpK2BcbmApLGtlPSguLi5uKT0+c2Uud3JpdGVTeW5jKDIsbi5qb2luKFwiIFwiKStgXG5gKSk7dmFyIE9lPXRlLGVlPWtlO09iamVjdC5hc3NpZ24obCx3KSx3PW51bGwsdHlwZW9mIFdlYkFzc2VtYmx5IT1cIm9iamVjdFwiJiZWdChcIm5vIG5hdGl2ZSB3YXNtIHN1cHBvcnQgZGV0ZWN0ZWRcIik7dmFyIGJlLFVlLHBlPSExLHllLGRlLHZlLFdlLEJlLEdlLEYsaWUsaGUsSmUsb3Q7ZnVuY3Rpb24gUmUoKXt2YXIgbj1iZS5idWZmZXI7bC5IRUFQOD1kZT1uZXcgSW50OEFycmF5KG4pLGwuSEVBUDE2PVdlPW5ldyBJbnQxNkFycmF5KG4pLGwuSEVBUFU4PXZlPW5ldyBVaW50OEFycmF5KG4pLGwuSEVBUFUxNj1CZT1uZXcgVWludDE2QXJyYXkobiksbC5IRUFQMzI9R2U9bmV3IEludDMyQXJyYXkobiksbC5IRUFQVTMyPUY9bmV3IFVpbnQzMkFycmF5KG4pLGwuSEVBUEYzMj1pZT1uZXcgRmxvYXQzMkFycmF5KG4pLGwuSEVBUEY2ND1vdD1uZXcgRmxvYXQ2NEFycmF5KG4pLGwuSEVBUDY0PWhlPW5ldyBCaWdJbnQ2NEFycmF5KG4pLGwuSEVBUFU2ND1KZT1uZXcgQmlnVWludDY0QXJyYXkobil9dmFyIEZlPTE2Nzc3MjE2O2lmKEUpYmU9bC53YXNtTWVtb3J5O2Vsc2UgaWYobC53YXNtTWVtb3J5KWJlPWwud2FzbU1lbW9yeTtlbHNlIGlmKGJlPW5ldyBXZWJBc3NlbWJseS5NZW1vcnkoe2luaXRpYWw6RmUvNjU1MzYsbWF4aW11bTo2NTUzNixzaGFyZWQ6ITB9KSwhKGJlLmJ1ZmZlciBpbnN0YW5jZW9mIFNoYXJlZEFycmF5QnVmZmVyKSl0aHJvdyBlZShcInJlcXVlc3RlZCBhIHNoYXJlZCBXZWJBc3NlbWJseS5NZW1vcnkgYnV0IHRoZSByZXR1cm5lZCBidWZmZXIgaXMgbm90IGEgU2hhcmVkQXJyYXlCdWZmZXIsIGluZGljYXRpbmcgdGhhdCB3aGlsZSB0aGUgYnJvd3NlciBoYXMgU2hhcmVkQXJyYXlCdWZmZXIgaXQgZG9lcyBub3QgaGF2ZSBXZWJBc3NlbWJseSB0aHJlYWRzIHN1cHBvcnQgLSB5b3UgbWF5IG5lZWQgdG8gc2V0IGEgZmxhZ1wiKSxTJiZlZShcIihvbiBub2RlIHlvdSBtYXkgbmVlZDogLS1leHBlcmltZW50YWwtd2FzbS10aHJlYWRzIC0tZXhwZXJpbWVudGFsLXdhc20tYnVsay1tZW1vcnkgYW5kL29yIHJlY2VudCB2ZXJzaW9uKVwiKSxFcnJvcihcImJhZCBtZW1vcnlcIik7UmUoKSxGZT1iZS5idWZmZXIuYnl0ZUxlbmd0aDt2YXIgQnQ9W10sTXQ9W10sS3Q9W10sTnQ9MCx1cj1udWxsLFl0PW51bGw7ZnVuY3Rpb24geHIoKXtpZihOdC0tLE50PT0wJiYodXIhPT1udWxsJiYoY2xlYXJJbnRlcnZhbCh1ciksdXI9bnVsbCksWXQpKXt2YXIgbj1ZdDtZdD1udWxsLG4oKX19ZnVuY3Rpb24gVnQobil7dGhyb3cgbj1cIkFib3J0ZWQoXCIrbitcIilcIixlZShuKSxwZT0hMCx5ZT0xLG49bmV3IFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvcihuK1wiLiBCdWlsZCB3aXRoIC1zQVNTRVJUSU9OUyBmb3IgbW9yZSBpbmZvLlwiKSxiKG4pLG59dmFyIHFlPW49Pm4uc3RhcnRzV2l0aChcImRhdGE6YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtO2Jhc2U2NCxcIiksRHQ9bj0+bi5zdGFydHNXaXRoKFwiZmlsZTovL1wiKSxDdDtDdD1cIm9ydC13YXNtLXNpbWQtdGhyZWFkZWQud2FzbVwiLHFlKEN0KXx8KEN0PVUoQ3QpKTtmdW5jdGlvbiBDcihuKXtpZihZKXJldHVybiBZKG4pO3Rocm93XCJib3RoIGFzeW5jIGFuZCBzeW5jIGZldGNoaW5nIG9mIHRoZSB3YXNtIGZhaWxlZFwifWZ1bmN0aW9uIG5uKG4pe2lmKFR8fEMpe2lmKHR5cGVvZiBmZXRjaD09XCJmdW5jdGlvblwiJiYhRHQobikpcmV0dXJuIGZldGNoKG4se2NyZWRlbnRpYWxzOlwic2FtZS1vcmlnaW5cIn0pLnRoZW4oZD0+e2lmKCFkLm9rKXRocm93XCJmYWlsZWQgdG8gbG9hZCB3YXNtIGJpbmFyeSBmaWxlIGF0ICdcIituK1wiJ1wiO3JldHVybiBkLmFycmF5QnVmZmVyKCl9KS5jYXRjaCgoKT0+Q3IobikpO2lmKFYpcmV0dXJuIG5ldyBQcm9taXNlKChkLGgpPT57VihuLHY9PmQobmV3IFVpbnQ4QXJyYXkodikpLGgpfSl9cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PkNyKG4pKX1mdW5jdGlvbiBzdChuLGQsaCl7cmV0dXJuIG5uKG4pLnRoZW4odj0+V2ViQXNzZW1ibHkuaW5zdGFudGlhdGUodixkKSkudGhlbih2PT52KS50aGVuKGgsdj0+e2VlKGBmYWlsZWQgdG8gYXN5bmNocm9ub3VzbHkgcHJlcGFyZSB3YXNtOiAke3Z9YCksVnQodil9KX1mdW5jdGlvbiBJcihuLGQpe3ZhciBoPUN0O3JldHVybiB0eXBlb2YgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmchPVwiZnVuY3Rpb25cInx8cWUoaCl8fER0KGgpfHxTfHx0eXBlb2YgZmV0Y2ghPVwiZnVuY3Rpb25cIj9zdChoLG4sZCk6ZmV0Y2goaCx7Y3JlZGVudGlhbHM6XCJzYW1lLW9yaWdpblwifSkudGhlbih2PT5XZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZyh2LG4pLnRoZW4oZCxmdW5jdGlvbihJKXtyZXR1cm4gZWUoYHdhc20gc3RyZWFtaW5nIGNvbXBpbGUgZmFpbGVkOiAke0l9YCksZWUoXCJmYWxsaW5nIGJhY2sgdG8gQXJyYXlCdWZmZXIgaW5zdGFudGlhdGlvblwiKSxzdChoLG4sZCl9KSl9dmFyIFp0PXs5NDY3NDg6KG4sZCxoLHYpPT57aWYodHlwZW9mIGw+XCJ1XCJ8fCFsLkZiKXJldHVybiAxO2lmKG49UGUobj4+PjApLG4uc3RhcnRzV2l0aChcIi4vXCIpJiYobj1uLnN1YnN0cmluZygyKSksbj1sLkZiLmdldChuKSwhbilyZXR1cm4gMjtpZihkPj4+PTAsaD4+Pj0wLHY+Pj49MCxkK2g+bi5ieXRlTGVuZ3RoKXJldHVybiAzO3RyeXtyZXR1cm4gYSgpLnNldChuLnN1YmFycmF5KGQsZCtoKSx2Pj4+MCksMH1jYXRjaHtyZXR1cm4gNH19LDk0NzI0OTpuPT5sLiRiKG4pLDk0NzI4MjpuPT5sLmJjKG4pLDk0NzMxNDoobixkLGgpPT57bC5PYihuLGQsaCwhMCl9LDk0NzM1MzoobixkLGgpPT57bC5PYihuLGQsaCl9LDk0NzM4NjpuPT57bC5lYihcIkFic1wiLG4sdm9pZCAwKX0sOTQ3NDM3Om49PntsLmViKFwiTmVnXCIsbix2b2lkIDApfSw5NDc0ODg6bj0+e2wuZWIoXCJGbG9vclwiLG4sdm9pZCAwKX0sOTQ3NTQxOm49PntsLmViKFwiQ2VpbFwiLG4sdm9pZCAwKX0sOTQ3NTkzOm49PntsLmViKFwiUmVjaXByb2NhbFwiLG4sdm9pZCAwKX0sOTQ3NjUxOm49PntsLmViKFwiU3FydFwiLG4sdm9pZCAwKX0sOTQ3NzAzOm49PntsLmViKFwiRXhwXCIsbix2b2lkIDApfSw5NDc3NTQ6bj0+e2wuZWIoXCJFcmZcIixuLHZvaWQgMCl9LDk0NzgwNTpuPT57bC5lYihcIlNpZ21vaWRcIixuLHZvaWQgMCl9LDk0Nzg2MDoobixkLGgpPT57bC5lYihcIkhhcmRTaWdtb2lkXCIsbix7YWxwaGE6ZCxiZXRhOmh9KX0sOTQ3OTM5Om49PntsLmViKFwiTG9nXCIsbix2b2lkIDApfSw5NDc5OTA6bj0+e2wuZWIoXCJTaW5cIixuLHZvaWQgMCl9LDk0ODA0MTpuPT57bC5lYihcIkNvc1wiLG4sdm9pZCAwKX0sOTQ4MDkyOm49PntsLmViKFwiVGFuXCIsbix2b2lkIDApfSw5NDgxNDM6bj0+e2wuZWIoXCJBc2luXCIsbix2b2lkIDApfSw5NDgxOTU6bj0+e2wuZWIoXCJBY29zXCIsbix2b2lkIDApfSw5NDgyNDc6bj0+e2wuZWIoXCJBdGFuXCIsbix2b2lkIDApfSw5NDgyOTk6bj0+e2wuZWIoXCJTaW5oXCIsbix2b2lkIDApfSw5NDgzNTE6bj0+e2wuZWIoXCJDb3NoXCIsbix2b2lkIDApfSw5NDg0MDM6bj0+e2wuZWIoXCJBc2luaFwiLG4sdm9pZCAwKX0sOTQ4NDU2Om49PntsLmViKFwiQWNvc2hcIixuLHZvaWQgMCl9LDk0ODUwOTpuPT57bC5lYihcIkF0YW5oXCIsbix2b2lkIDApfSw5NDg1NjI6bj0+e2wuZWIoXCJUYW5oXCIsbix2b2lkIDApfSw5NDg2MTQ6bj0+e2wuZWIoXCJOb3RcIixuLHZvaWQgMCl9LDk0ODY2NToobixkLGgpPT57bC5lYihcIkNsaXBcIixuLHttaW46ZCxtYXg6aH0pfSw5NDg3MzQ6bj0+e2wuZWIoXCJDbGlwXCIsbix2b2lkIDApfSw5NDg3ODY6KG4sZCk9PntsLmViKFwiRWx1XCIsbix7YWxwaGE6ZH0pfSw5NDg4NDQ6bj0+e2wuZWIoXCJSZWx1XCIsbix2b2lkIDApfSw5NDg4OTY6KG4sZCk9PntsLmViKFwiTGVha3lSZWx1XCIsbix7YWxwaGE6ZH0pfSw5NDg5NjA6KG4sZCk9PntsLmViKFwiVGhyZXNob2xkZWRSZWx1XCIsbix7YWxwaGE6ZH0pfSw5NDkwMzA6KG4sZCk9PntsLmViKFwiQ2FzdFwiLG4se3RvOmR9KX0sOTQ5MDg4Om49PntsLmViKFwiQWRkXCIsbix2b2lkIDApfSw5NDkxMzk6bj0+e2wuZWIoXCJTdWJcIixuLHZvaWQgMCl9LDk0OTE5MDpuPT57bC5lYihcIk11bFwiLG4sdm9pZCAwKX0sOTQ5MjQxOm49PntsLmViKFwiRGl2XCIsbix2b2lkIDApfSw5NDkyOTI6bj0+e2wuZWIoXCJQb3dcIixuLHZvaWQgMCl9LDk0OTM0MzpuPT57bC5lYihcIkVxdWFsXCIsbix2b2lkIDApfSw5NDkzOTY6bj0+e2wuZWIoXCJHcmVhdGVyXCIsbix2b2lkIDApfSw5NDk0NTE6bj0+e2wuZWIoXCJHcmVhdGVyT3JFcXVhbFwiLG4sdm9pZCAwKX0sOTQ5NTEzOm49PntsLmViKFwiTGVzc1wiLG4sdm9pZCAwKX0sOTQ5NTY1Om49PntsLmViKFwiTGVzc09yRXF1YWxcIixuLHZvaWQgMCl9LDk0OTYyNDoobixkLGgsdixJKT0+e2wuZWIoXCJSZWR1Y2VNZWFuXCIsbix7a2VlcERpbXM6ISFkLG5vb3BXaXRoRW1wdHlBeGVzOiEhaCxheGVzOnY/QXJyYXkuZnJvbShvKCkuc3ViYXJyYXkodj4+PjAsST4+PjApKTpbXX0pfSw5NDk3ODM6KG4sZCxoLHYsSSk9PntsLmViKFwiUmVkdWNlTWF4XCIsbix7a2VlcERpbXM6ISFkLG5vb3BXaXRoRW1wdHlBeGVzOiEhaCxheGVzOnY/QXJyYXkuZnJvbShvKCkuc3ViYXJyYXkodj4+PjAsST4+PjApKTpbXX0pfSw5NDk5NDE6KG4sZCxoLHYsSSk9PntsLmViKFwiUmVkdWNlTWluXCIsbix7a2VlcERpbXM6ISFkLG5vb3BXaXRoRW1wdHlBeGVzOiEhaCxheGVzOnY/QXJyYXkuZnJvbShvKCkuc3ViYXJyYXkodj4+PjAsST4+PjApKTpbXX0pfSw5NTAwOTk6KG4sZCxoLHYsSSk9PntsLmViKFwiUmVkdWNlUHJvZFwiLG4se2tlZXBEaW1zOiEhZCxub29wV2l0aEVtcHR5QXhlczohIWgsYXhlczp2P0FycmF5LmZyb20obygpLnN1YmFycmF5KHY+Pj4wLEk+Pj4wKSk6W119KX0sOTUwMjU4OihuLGQsaCx2LEkpPT57bC5lYihcIlJlZHVjZVN1bVwiLG4se2tlZXBEaW1zOiEhZCxub29wV2l0aEVtcHR5QXhlczohIWgsYXhlczp2P0FycmF5LmZyb20obygpLnN1YmFycmF5KHY+Pj4wLEk+Pj4wKSk6W119KX0sOTUwNDE2OihuLGQsaCx2LEkpPT57bC5lYihcIlJlZHVjZUwxXCIsbix7a2VlcERpbXM6ISFkLG5vb3BXaXRoRW1wdHlBeGVzOiEhaCxheGVzOnY/QXJyYXkuZnJvbShvKCkuc3ViYXJyYXkodj4+PjAsST4+PjApKTpbXX0pfSw5NTA1NzM6KG4sZCxoLHYsSSk9PntsLmViKFwiUmVkdWNlTDJcIixuLHtrZWVwRGltczohIWQsbm9vcFdpdGhFbXB0eUF4ZXM6ISFoLGF4ZXM6dj9BcnJheS5mcm9tKG8oKS5zdWJhcnJheSh2Pj4+MCxJPj4+MCkpOltdfSl9LDk1MDczMDoobixkLGgsdixJKT0+e2wuZWIoXCJSZWR1Y2VMb2dTdW1cIixuLHtrZWVwRGltczohIWQsbm9vcFdpdGhFbXB0eUF4ZXM6ISFoLGF4ZXM6dj9BcnJheS5mcm9tKG8oKS5zdWJhcnJheSh2Pj4+MCxJPj4+MCkpOltdfSl9LDk1MDg5MToobixkLGgsdixJKT0+e2wuZWIoXCJSZWR1Y2VTdW1TcXVhcmVcIixuLHtrZWVwRGltczohIWQsbm9vcFdpdGhFbXB0eUF4ZXM6ISFoLGF4ZXM6dj9BcnJheS5mcm9tKG8oKS5zdWJhcnJheSh2Pj4+MCxJPj4+MCkpOltdfSl9LDk1MTA1NToobixkLGgsdixJKT0+e2wuZWIoXCJSZWR1Y2VMb2dTdW1FeHBcIixuLHtrZWVwRGltczohIWQsbm9vcFdpdGhFbXB0eUF4ZXM6ISFoLGF4ZXM6dj9BcnJheS5mcm9tKG8oKS5zdWJhcnJheSh2Pj4+MCxJPj4+MCkpOltdfSl9LDk1MTIxOTpuPT57bC5lYihcIldoZXJlXCIsbix2b2lkIDApfSw5NTEyNzI6KG4sZCxoKT0+e2wuZWIoXCJUcmFuc3Bvc2VcIixuLHtwZXJtOmQ/QXJyYXkuZnJvbShvKCkuc3ViYXJyYXkoZD4+PjAsaD4+PjApKTpbXX0pfSw5NTEzODA6KG4sZCxoLHYsSSxrLHosRyxaLEssYWUsZ2UsU2UsUixsZSk9PntsLmViKFwiQ29udlRyYW5zcG9zZVwiLG4se2Zvcm1hdDpaP1wiTkhXQ1wiOlwiTkNIV1wiLGF1dG9QYWQ6ZCxkaWxhdGlvbnM6W2hdLGdyb3VwOnYsa2VybmVsX3NoYXBlOltJXSxwYWRzOltrLHpdLHN0cmlkZXM6W0ddLHdJc0NvbnN0OigpPT4hIXIoKVtLPj4+MF0sb3V0cHV0UGFkZGluZzphZT9BcnJheS5mcm9tKG8oKS5zdWJhcnJheShhZT4+PjAsZ2U+Pj4wKSk6W10sb3V0cHV0U2hhcGU6U2U/QXJyYXkuZnJvbShvKCkuc3ViYXJyYXkoU2U+Pj4wLFI+Pj4wKSk6W10sYWN0aXZhdGlvbjpQZShsZSl9KX0sOTUxNzgyOihuLGQsaCx2LEksayx6LEcsWixLLGFlLGdlLFNlLFIpPT57bC5lYihcIkNvbnZUcmFuc3Bvc2VcIixuLHtmb3JtYXQ6Rz9cIk5IV0NcIjpcIk5DSFdcIixhdXRvUGFkOmQsZGlsYXRpb25zOkFycmF5LmZyb20obygpLnN1YmFycmF5KGg+Pj4wLChoPj4+MCkrMj4+PjApKSxncm91cDp2LGtlcm5lbFNoYXBlOkFycmF5LmZyb20obygpLnN1YmFycmF5KEk+Pj4wLChJPj4+MCkrMj4+PjApKSxwYWRzOkFycmF5LmZyb20obygpLnN1YmFycmF5KGs+Pj4wLChrPj4+MCkrND4+PjApKSxzdHJpZGVzOkFycmF5LmZyb20obygpLnN1YmFycmF5KHo+Pj4wLCh6Pj4+MCkrMj4+PjApKSx3SXNDb25zdDooKT0+ISFyKClbWj4+PjBdLG91dHB1dFBhZGRpbmc6Sz9BcnJheS5mcm9tKG8oKS5zdWJhcnJheShLPj4+MCxhZT4+PjApKTpbXSxvdXRwdXRTaGFwZTpnZT9BcnJheS5mcm9tKG8oKS5zdWJhcnJheShnZT4+PjAsU2U+Pj4wKSk6W10sYWN0aXZhdGlvbjpQZShSKX0pfSw5NTIzNDc6KG4sZCxoLHYsSSxrLHosRyxaLEssYWUsZ2UsU2UsUixsZSk9PntsLmViKFwiQ29udlRyYW5zcG9zZVwiLG4se2Zvcm1hdDpaP1wiTkhXQ1wiOlwiTkNIV1wiLGF1dG9QYWQ6ZCxkaWxhdGlvbnM6W2hdLGdyb3VwOnYsa2VybmVsX3NoYXBlOltJXSxwYWRzOltrLHpdLHN0cmlkZXM6W0ddLHdJc0NvbnN0OigpPT4hIXIoKVtLPj4+MF0sb3V0cHV0UGFkZGluZzphZT9BcnJheS5mcm9tKG8oKS5zdWJhcnJheShhZT4+PjAsZ2U+Pj4wKSk6W10sb3V0cHV0U2hhcGU6U2U/QXJyYXkuZnJvbShvKCkuc3ViYXJyYXkoU2U+Pj4wLFI+Pj4wKSk6W10sYWN0aXZhdGlvbjpQZShsZSl9KX0sOTUyNzQ5OihuLGQsaCx2LEksayx6LEcsWixLLGFlLGdlLFNlLFIpPT57bC5lYihcIkNvbnZUcmFuc3Bvc2VcIixuLHtmb3JtYXQ6Rz9cIk5IV0NcIjpcIk5DSFdcIixhdXRvUGFkOmQsZGlsYXRpb25zOkFycmF5LmZyb20obygpLnN1YmFycmF5KGg+Pj4wLChoPj4+MCkrMj4+PjApKSxncm91cDp2LGtlcm5lbFNoYXBlOkFycmF5LmZyb20obygpLnN1YmFycmF5KEk+Pj4wLChJPj4+MCkrMj4+PjApKSxwYWRzOkFycmF5LmZyb20obygpLnN1YmFycmF5KGs+Pj4wLChrPj4+MCkrND4+PjApKSxzdHJpZGVzOkFycmF5LmZyb20obygpLnN1YmFycmF5KHo+Pj4wLCh6Pj4+MCkrMj4+PjApKSx3SXNDb25zdDooKT0+ISFyKClbWj4+PjBdLG91dHB1dFBhZGRpbmc6Sz9BcnJheS5mcm9tKG8oKS5zdWJhcnJheShLPj4+MCxhZT4+PjApKTpbXSxvdXRwdXRTaGFwZTpnZT9BcnJheS5mcm9tKG8oKS5zdWJhcnJheShnZT4+PjAsU2U+Pj4wKSk6W10sYWN0aXZhdGlvbjpQZShSKX0pfSw5NTMzMTQ6KG4sZCk9PntsLmViKFwiR2xvYmFsQXZlcmFnZVBvb2xcIixuLHtmb3JtYXQ6ZD9cIk5IV0NcIjpcIk5DSFdcIn0pfSw5NTM0MDU6KG4sZCxoLHYsSSxrLHosRyxaLEssYWUsZ2UsU2UsUixsZSxUZSk9PntsLmViKFwiQXZlcmFnZVBvb2xcIixuLHtmb3JtYXQ6VGU/XCJOSFdDXCI6XCJOQ0hXXCIsYXV0b19wYWQ6ZCxjZWlsX21vZGU6aCxjb3VudF9pbmNsdWRlX3BhZDp2LHN0b3JhZ2Vfb3JkZXI6SSxkaWxhdGlvbnM6W2ssel0sa2VybmVsX3NoYXBlOltHLFpdLHBhZHM6W0ssYWUsZ2UsU2VdLHN0cmlkZXM6W1IsbGVdfSl9LDk1MzY4OToobixkKT0+e2wuZWIoXCJHbG9iYWxBdmVyYWdlUG9vbFwiLG4se2Zvcm1hdDpkP1wiTkhXQ1wiOlwiTkNIV1wifSl9LDk1Mzc4MDoobixkLGgsdixJLGsseixHLFosSyxhZSxnZSxTZSxSLGxlLFRlKT0+e2wuZWIoXCJBdmVyYWdlUG9vbFwiLG4se2Zvcm1hdDpUZT9cIk5IV0NcIjpcIk5DSFdcIixhdXRvX3BhZDpkLGNlaWxfbW9kZTpoLGNvdW50X2luY2x1ZGVfcGFkOnYsc3RvcmFnZV9vcmRlcjpJLGRpbGF0aW9uczpbayx6XSxrZXJuZWxfc2hhcGU6W0csWl0scGFkczpbSyxhZSxnZSxTZV0sc3RyaWRlczpbUixsZV19KX0sOTU0MDY0OihuLGQpPT57bC5lYihcIkdsb2JhbE1heFBvb2xcIixuLHtmb3JtYXQ6ZD9cIk5IV0NcIjpcIk5DSFdcIn0pfSw5NTQxNTE6KG4sZCxoLHYsSSxrLHosRyxaLEssYWUsZ2UsU2UsUixsZSxUZSk9PntsLmViKFwiTWF4UG9vbFwiLG4se2Zvcm1hdDpUZT9cIk5IV0NcIjpcIk5DSFdcIixhdXRvX3BhZDpkLGNlaWxfbW9kZTpoLGNvdW50X2luY2x1ZGVfcGFkOnYsc3RvcmFnZV9vcmRlcjpJLGRpbGF0aW9uczpbayx6XSxrZXJuZWxfc2hhcGU6W0csWl0scGFkczpbSyxhZSxnZSxTZV0sc3RyaWRlczpbUixsZV19KX0sOTU0NDMxOihuLGQpPT57bC5lYihcIkdsb2JhbE1heFBvb2xcIixuLHtmb3JtYXQ6ZD9cIk5IV0NcIjpcIk5DSFdcIn0pfSw5NTQ1MTg6KG4sZCxoLHYsSSxrLHosRyxaLEssYWUsZ2UsU2UsUixsZSxUZSk9PntsLmViKFwiTWF4UG9vbFwiLG4se2Zvcm1hdDpUZT9cIk5IV0NcIjpcIk5DSFdcIixhdXRvX3BhZDpkLGNlaWxfbW9kZTpoLGNvdW50X2luY2x1ZGVfcGFkOnYsc3RvcmFnZV9vcmRlcjpJLGRpbGF0aW9uczpbayx6XSxrZXJuZWxfc2hhcGU6W0csWl0scGFkczpbSyxhZSxnZSxTZV0sc3RyaWRlczpbUixsZV19KX0sOTU0Nzk4OihuLGQsaCx2LEkpPT57bC5lYihcIkdlbW1cIixuLHthbHBoYTpkLGJldGE6aCx0cmFuc0E6dix0cmFuc0I6SX0pfSw5NTQ5MDI6bj0+e2wuZWIoXCJNYXRNdWxcIixuLHZvaWQgMCl9LDk1NDk1NjoobixkLGgsdik9PntsLmViKFwiQXJnTWF4XCIsbix7a2VlcERpbXM6ISFkLHNlbGVjdExhc3RJbmRleDohIWgsYXhpczp2fSl9LDk1NTA2NDoobixkLGgsdik9PntsLmViKFwiQXJnTWluXCIsbix7a2VlcERpbXM6ISFkLHNlbGVjdExhc3RJbmRleDohIWgsYXhpczp2fSl9LDk1NTE3MjoobixkKT0+e2wuZWIoXCJTb2Z0bWF4XCIsbix7YXhpczpkfSl9LDk1NTIzNToobixkKT0+e2wuZWIoXCJDb25jYXRcIixuLHtheGlzOmR9KX0sOTU1Mjk1OihuLGQsaCx2LEkpPT57bC5lYihcIlNwbGl0XCIsbix7YXhpczpkLG51bU91dHB1dHM6aCxzcGxpdFNpemVzOnY/QXJyYXkuZnJvbShvKCkuc3ViYXJyYXkodj4+PjAsST4+PjApKTpbXX0pfSw5NTU0MzU6bj0+e2wuZWIoXCJFeHBhbmRcIixuLHZvaWQgMCl9LDk1NTQ4OToobixkKT0+e2wuZWIoXCJHYXRoZXJcIixuLHtheGlzOk51bWJlcihkKX0pfSw5NTU1NjA6KG4sZCk9PntsLmViKFwiR2F0aGVyRWxlbWVudHNcIixuLHtheGlzOk51bWJlcihkKX0pfSw5NTU2Mzk6KG4sZCxoLHYsSSxrLHosRyxaLEssYWUpPT57bC5lYihcIlJlc2l6ZVwiLG4se2FudGlhbGlhczpkLGF4ZXM6aD9BcnJheS5mcm9tKG8oKS5zdWJhcnJheShoPj4+MCx2Pj4+MCkpOltdLGNvb3JkaW5hdGVUcmFuc2Zvcm1Nb2RlOlBlKEkpLGN1YmljQ29lZmZBOmssZXhjbHVkZU91dHNpZGU6eixleHRyYXBvbGF0aW9uVmFsdWU6RyxrZWVwQXNwZWN0UmF0aW9Qb2xpY3k6UGUoWiksbW9kZTpQZShLKSxuZWFyZXN0TW9kZTpQZShhZSl9KX0sOTU1OTg1OihuLGQsaCx2LEksayx6KT0+e2wuZWIoXCJTbGljZVwiLG4se3N0YXJ0czpkP0FycmF5LmZyb20obygpLnN1YmFycmF5KGQ+Pj4wLGg+Pj4wKSk6W10sZW5kczp2P0FycmF5LmZyb20obygpLnN1YmFycmF5KHY+Pj4wLEk+Pj4wKSk6W10sYXhlczprP0FycmF5LmZyb20obygpLnN1YmFycmF5KGs+Pj4wLHo+Pj4wKSk6W119KX0sOTU2MjAxOm49PntsLmViKFwiVGlsZVwiLG4sdm9pZCAwKX0sOTU2MjUzOihuLGQsaCk9PntsLmViKFwiTGF5ZXJOb3JtYWxpemF0aW9uXCIsbix7YXhpczpOdW1iZXIoZCksZXBzaWxvbjpOdW1iZXIoaCl9KX0sOTU2MzYwOihuLGQsaCk9PntsLmViKFwiSW5zdGFuY2VOb3JtYWxpemF0aW9uXCIsbix7ZXBzaWxvbjpkLGZvcm1hdDpoP1wiTkhXQ1wiOlwiTkNIV1wifSl9LDk1NjQ3NDoobixkLGgpPT57bC5lYihcIkluc3RhbmNlTm9ybWFsaXphdGlvblwiLG4se2Vwc2lsb246ZCxmb3JtYXQ6aD9cIk5IV0NcIjpcIk5DSFdcIn0pfSw5NTY1ODg6bj0+e2wuZWIoXCJSYW5nZVwiLG4sdm9pZCAwKX0sOTU2NjQxOihuLGQpPT57bC5lYihcIkVpbnN1bVwiLG4se2VxdWF0aW9uOlBlKGQpfSl9LDk1NjcyMjoobixkLGgsdixJKT0+e2wuZWIoXCJQYWRcIixuLHttb2RlOmQsdmFsdWU6aCxwYWRzOnY/QXJyYXkuZnJvbShvKCkuc3ViYXJyYXkodj4+PjAsST4+PjApKTpbXX0pfSw5NTY4NDk6KG4sZCxoLHYsSSxrKT0+e2wuZWIoXCJCYXRjaE5vcm1hbGl6YXRpb25cIixuLHtlcHNpbG9uOmQsbW9tZW50dW06aCxzcGF0aWFsOiEhSSx0cmFpbmluZ01vZGU6ISF2LGZvcm1hdDprP1wiTkhXQ1wiOlwiTkNIV1wifSl9LDk1NzAxODoobixkLGgsdixJLGspPT57bC5lYihcIkJhdGNoTm9ybWFsaXphdGlvblwiLG4se2Vwc2lsb246ZCxtb21lbnR1bTpoLHNwYXRpYWw6ISFJLHRyYWluaW5nTW9kZTohIXYsZm9ybWF0Oms/XCJOSFdDXCI6XCJOQ0hXXCJ9KX0sOTU3MTg3OihuLGQsaCk9PntsLmViKFwiQ3VtU3VtXCIsbix7ZXhjbHVzaXZlOk51bWJlcihkKSxyZXZlcnNlOk51bWJlcihoKX0pfSw5NTcyODQ6KG4sZCxoLHYsSSxrLHosRyxaKT0+e2wuZWIoXCJBdHRlbnRpb25cIixuLHtudW1IZWFkczpkLGlzVW5pZGlyZWN0aW9uYWw6aCxtYXNrRmlsdGVyVmFsdWU6dixzY2FsZTpJLGRvUm90YXJ5OmsscWt2SGlkZGVuU2l6ZXM6ej9BcnJheS5mcm9tKG8oKS5zdWJhcnJheShOdW1iZXIoRyk+Pj4wLE51bWJlcihHKSt6Pj4+MCkpOltdLHBhc3RQcmVzZW50U2hhcmVCdWZmZXI6ISFafSl9LDk1NzU1NjpuPT57bC5lYihcIkdlbHVcIixuLHZvaWQgMCl9LDk1NzYwODoobixkLGgsdixJLGspPT57bC5lYihcIk11bHRpSGVhZEF0dGVudGlvblwiLG4se251bUhlYWRzOmQsaXNVbmlkaXJlY3Rpb25hbDpoLG1hc2tGaWx0ZXJWYWx1ZTp2LHNjYWxlOkksZG9Sb3Rhcnk6a30pfSw5NTc3Njc6bj0+e2wuZWIoXCJCaWFzQWRkXCIsbix2b2lkIDApfSw5NTc4MjI6bj0+e2wuZWIoXCJCaWFzU3BsaXRHZWx1XCIsbix2b2lkIDApfSw5NTc4ODM6KG4sZCk9PntsLmViKFwiU2tpcExheWVyTm9ybWFsaXphdGlvblwiLG4se2Vwc2lsb246ZH0pfSw5NTc5NjQ6KG4sZCxoLHYsSSxrLHosRyxaLEssYWUsZ2UsU2UpPT57bC5lYihcIkNvbnZcIixuLHtmb3JtYXQ6Wj9cIk5IV0NcIjpcIk5DSFdcIixhdXRvX3BhZDpkLGRpbGF0aW9uczpbaF0sZ3JvdXA6dixrZXJuZWxfc2hhcGU6W0ldLHBhZHM6az9BcnJheS5mcm9tKG8oKS5zdWJhcnJheShrPj4+MCx6Pj4+MCkpOltdLHN0cmlkZXM6W0ddLHdfaXNfY29uc3Q6KCk9PiEhcigpW0s+Pj4wXSxhY3RpdmF0aW9uOlBlKGFlKSxhY3RpdmF0aW9uX3BhcmFtczpnZT9BcnJheS5mcm9tKHAoKS5zdWJhcnJheShnZT4+PjAsU2U+Pj4wKSk6W119KX0sOTU4MzM0OihuLGQsaCx2LEksayx6LEcsWixLLGFlLGdlLFNlLFIsbGUsVGUpPT57bC5lYihcIkNvbnZcIixuLHtmb3JtYXQ6Z2U/XCJOSFdDXCI6XCJOQ0hXXCIsYXV0b19wYWQ6ZCxkaWxhdGlvbnM6W2gsdl0sZ3JvdXA6SSxrZXJuZWxfc2hhcGU6W2ssel0scGFkczpHP0FycmF5LmZyb20obygpLnN1YmFycmF5KEc+Pj4wLFo+Pj4wKSk6W10sc3RyaWRlczpbSyxhZV0sd19pc19jb25zdDooKT0+ISFyKClbU2U+Pj4wXSxhY3RpdmF0aW9uOlBlKFIpLGFjdGl2YXRpb25fcGFyYW1zOmxlP0FycmF5LmZyb20ocCgpLnN1YmFycmF5KGxlPj4+MCxUZT4+PjApKTpbXX0pfSw5NTg3MjU6bj0+e2wuY2Mobil9LDk1ODc1OToobixkKT0+bC5kYyhuLGQsbC5FYi5mYyxsLkViLmVycm9ycyl9O2Z1bmN0aW9uIEFyKG4pe3RoaXMubmFtZT1cIkV4aXRTdGF0dXNcIix0aGlzLm1lc3NhZ2U9YFByb2dyYW0gdGVybWluYXRlZCB3aXRoIGV4aXQoJHtufSlgLHRoaXMuc3RhdHVzPW59dmFyIGd0PW49PntuLnRlcm1pbmF0ZSgpLG4ub25tZXNzYWdlPSgpPT57fX0sYW49bj0+e2ZlLnliLmxlbmd0aD09MCYmKFByKCksZmUuUGIoZmUueWJbMF0pKTt2YXIgZD1mZS55Yi5wb3AoKTtpZighZClyZXR1cm4gNjtmZS56Yi5wdXNoKGQpLGZlLnBiW24ueGJdPWQsZC54Yj1uLnhiO3ZhciBoPXtjbWQ6XCJydW5cIixzdGFydF9yb3V0aW5lOm4uaGMsYXJnOm4uVmIscHRocmVhZF9wdHI6bi54Yn07cmV0dXJuIFMmJmQudW5yZWYoKSxkLnBvc3RNZXNzYWdlKGgsbi5uYyksMH0sS2U9MCxUcj10eXBlb2YgVGV4dERlY29kZXI8XCJ1XCI/bmV3IFRleHREZWNvZGVyKFwidXRmOFwiKTp2b2lkIDAsRXI9KG4sZCxoKT0+e2Q+Pj49MDt2YXIgdj1kK2g7Zm9yKGg9ZDtuW2hdJiYhKGg+PXYpOykrK2g7aWYoMTY8aC1kJiZuLmJ1ZmZlciYmVHIpcmV0dXJuIFRyLmRlY29kZShuLmJ1ZmZlciBpbnN0YW5jZW9mIFNoYXJlZEFycmF5QnVmZmVyP24uc2xpY2UoZCxoKTpuLnN1YmFycmF5KGQsaCkpO2Zvcih2PVwiXCI7ZDxoOyl7dmFyIEk9bltkKytdO2lmKEkmMTI4KXt2YXIgaz1uW2QrK10mNjM7aWYoKEkmMjI0KT09MTkyKXYrPVN0cmluZy5mcm9tQ2hhckNvZGUoKEkmMzEpPDw2fGspO2Vsc2V7dmFyIHo9bltkKytdJjYzO0k9KEkmMjQwKT09MjI0PyhJJjE1KTw8MTJ8azw8Nnx6OihJJjcpPDwxOHxrPDwxMnx6PDw2fG5bZCsrXSY2Myw2NTUzNj5JP3YrPVN0cmluZy5mcm9tQ2hhckNvZGUoSSk6KEktPTY1NTM2LHYrPVN0cmluZy5mcm9tQ2hhckNvZGUoNTUyOTZ8ST4+MTAsNTYzMjB8SSYxMDIzKSl9fWVsc2Ugdis9U3RyaW5nLmZyb21DaGFyQ29kZShJKX1yZXR1cm4gdn0sUGU9KG4sZCk9PihuPj4+PTApP0VyKGEoKSxuLGQpOlwiXCIsT3I9bj0+e3ZhciBkPVNhKCk7cmV0dXJuIG49bigpLEFuKGQpLG59O2Z1bmN0aW9uIHdlKG4sZCl7dmFyIGg9YXJndW1lbnRzLmxlbmd0aC0yLHY9YXJndW1lbnRzO3JldHVybiBPcigoKT0+e2Zvcih2YXIgST0yKmgsaz14YSg4KkkpLHo9az4+PjMsRz0wO0c8aDtHKyspe3ZhciBaPXZbMitHXTt0eXBlb2YgWj09XCJiaWdpbnRcIj8oaGVbeisyKkddPTFuLGhlW3orMipHKzFdPVopOihoZVt6KzIqR109MG4sbSgpW3orMipHKzE+Pj4wXT1aKX1yZXR1cm4gRGkobixJLGssZCl9KX1mdW5jdGlvbiB1dChuKXtpZihFKXJldHVybiB3ZSgwLDEsbik7eWU9biwwPEtlfHwoZmUuaWMoKSxsLm9uRXhpdD8uKG4pLHBlPSEwKSx4KG4sbmV3IEFyKG4pKX12YXIgbHI9bj0+e2lmKHllPW4sRSl0aHJvdyBvbihuKSxcInVud2luZFwiO3V0KG4pfSxrcj1uPT57biBpbnN0YW5jZW9mIEFyfHxuPT1cInVud2luZFwifHx4KDEsbil9O2Z1bmN0aW9uIGZhKCl7Zm9yKHZhciBuPWwubnVtVGhyZWFkcztuLS07KVByKCk7QnQudW5zaGlmdCgoKT0+e050KyssbWEoKCk9PnhyKCkpfSl9ZnVuY3Rpb24gUHIoKXt2YXIgbj1VKFwib3J0LXdhc20tc2ltZC10aHJlYWRlZC53b3JrZXIuanNcIik7bj1uZXcgV29ya2VyKG4pLGZlLnliLnB1c2gobil9ZnVuY3Rpb24gbWEobil7RT9uKCk6UHJvbWlzZS5hbGwoZmUueWIubWFwKGZlLlBiKSkudGhlbihuKX12YXIgZmU9e3liOltdLHpiOltdLFViOltdLHBiOnt9LEliKCl7RT8oZmUucmVjZWl2ZU9iamVjdFRyYW5zZmVyPWZlLmVjLGZlLnRocmVhZEluaXRUTFM9ZmUuVGIsZmUuc2V0RXhpdFN0YXR1cz1mZS5TYik6ZmEoKX0sU2I6bj0+eWU9bixzYzpbXCIkdGVybWluYXRlV29ya2VyXCJdLGljOigpPT57Zm9yKHZhciBuIG9mIGZlLnpiKWd0KG4pO2ZvcihuIG9mIGZlLnliKWd0KG4pO2ZlLnliPVtdLGZlLnpiPVtdLGZlLnBiPVtdfSxSYjpuPT57dmFyIGQ9bi54YjtkZWxldGUgZmUucGJbZF0sZmUueWIucHVzaChuKSxmZS56Yi5zcGxpY2UoZmUuemIuaW5kZXhPZihuKSwxKSxuLnhiPTAsJGEoZCl9LGVjKCl7fSxUYigpe2ZlLlViLmZvckVhY2gobj0+bigpKX0sUGI6bj0+bmV3IFByb21pc2UoZD0+e24ub25tZXNzYWdlPWs9PntrPWsuZGF0YTt2YXIgej1rLmNtZDtpZihrLnRhcmdldFRocmVhZCYmay50YXJnZXRUaHJlYWQhPUluKCkpe3ZhciBHPWZlLnBiW2sudGFyZ2V0VGhyZWFkXTtHP0cucG9zdE1lc3NhZ2UoayxrLnRyYW5zZmVyTGlzdCk6ZWUoYEludGVybmFsIGVycm9yISBXb3JrZXIgc2VudCBhIG1lc3NhZ2UgXCIke3p9XCIgdG8gdGFyZ2V0IHB0aHJlYWQgJHtrLnRhcmdldFRocmVhZH0sIGJ1dCB0aGF0IHRocmVhZCBubyBsb25nZXIgZXhpc3RzIWApfWVsc2Ugej09PVwiY2hlY2tNYWlsYm94XCI/ZXIoKTp6PT09XCJzcGF3blRocmVhZFwiP2FuKGspOno9PT1cImNsZWFudXBUaHJlYWRcIj9mZS5SYihmZS5wYltrLnRocmVhZF0pOno9PT1cImtpbGxUaHJlYWRcIj8oaz1rLnRocmVhZCx6PWZlLnBiW2tdLGRlbGV0ZSBmZS5wYltrXSxndCh6KSwkYShrKSxmZS56Yi5zcGxpY2UoZmUuemIuaW5kZXhPZih6KSwxKSx6LnhiPTApOno9PT1cImNhbmNlbFRocmVhZFwiP2ZlLnBiW2sudGhyZWFkXS5wb3N0TWVzc2FnZSh7Y21kOlwiY2FuY2VsXCJ9KTp6PT09XCJsb2FkZWRcIj8obi5sb2FkZWQ9ITAsUyYmIW4ueGImJm4udW5yZWYoKSxkKG4pKTp6PT09XCJhbGVydFwiP2FsZXJ0KGBUaHJlYWQgJHtrLnRocmVhZElkfTogJHtrLnRleHR9YCk6ay50YXJnZXQ9PT1cInNldGltbWVkaWF0ZVwiP24ucG9zdE1lc3NhZ2Uoayk6ej09PVwiY2FsbEhhbmRsZXJcIj9sW2suaGFuZGxlcl0oLi4uay5hcmdzKTp6JiZlZShgd29ya2VyIHNlbnQgYW4gdW5rbm93biBjb21tYW5kICR7en1gKX0sbi5vbmVycm9yPWs9Pnt0aHJvdyBlZShgd29ya2VyIHNlbnQgYW4gZXJyb3IhICR7ay5maWxlbmFtZX06JHtrLmxpbmVub306ICR7ay5tZXNzYWdlfWApLGt9LFMmJihuLm9uKFwibWVzc2FnZVwiLGs9Pm4ub25tZXNzYWdlKHtkYXRhOmt9KSksbi5vbihcImVycm9yXCIsaz0+bi5vbmVycm9yKGspKSk7dmFyIGg9W10sdj1bXCJvbkV4aXRcIl0sSTtmb3IoSSBvZiB2KWwuaGFzT3duUHJvcGVydHkoSSkmJmgucHVzaChJKTtuLnBvc3RNZXNzYWdlKHtjbWQ6XCJsb2FkXCIsaGFuZGxlcnM6aCx1cmxPckJsb2I6bC5tYWluU2NyaXB0VXJsT3JCbG9ifHxlLHdhc21NZW1vcnk6YmUsd2FzbU1vZHVsZTpVZX0pfSl9O2wuUFRocmVhZD1mZTt2YXIgZHI9bj0+e2Zvcig7MDxuLmxlbmd0aDspbi5zaGlmdCgpKGwpfTtsLmVzdGFibGlzaFN0YWNrU3BhY2U9KCk9Pnt2YXIgbj1JbigpLGQ9YygpW24rNTI+Pj4yPj4+MF07bj1jKClbbis1Nj4+PjI+Pj4wXSxVaShkLGQtbiksQW4oZCl9O2Z1bmN0aW9uIG9uKG4pe2lmKEUpcmV0dXJuIHdlKDEsMCxuKTtscihuKX1sLmludm9rZUVudHJ5UG9pbnQ9KG4sZCk9PntuPVdpLmFwcGx5KG51bGwsW24sZF0pLDA8S2U/ZmUuU2Iobik6X2Eobil9O2Z1bmN0aW9uIGhhKG4pe3RoaXMuRGI9bi0yNCx0aGlzLnBjPWZ1bmN0aW9uKGQpe2MoKVt0aGlzLkRiKzQ+Pj4yPj4+MF09ZH0sdGhpcy5NYj1mdW5jdGlvbihkKXtjKClbdGhpcy5EYis4Pj4+Mj4+PjBdPWR9LHRoaXMuSWI9ZnVuY3Rpb24oZCxoKXt0aGlzLktiKCksdGhpcy5wYyhkKSx0aGlzLk1iKGgpfSx0aGlzLktiPWZ1bmN0aW9uKCl7YygpW3RoaXMuRGIrMTY+Pj4yPj4+MF09MH19dmFyIHNuPTAsUnI9MDtmdW5jdGlvbiBCcihuLGQsaCx2KXtyZXR1cm4gRT93ZSgyLDEsbixkLGgsdik6WHQobixkLGgsdil9ZnVuY3Rpb24gWHQobixkLGgsdil7aWYobj4+Pj0wLGQ+Pj49MCxoPj4+PTAsdj4+Pj0wLHR5cGVvZiBTaGFyZWRBcnJheUJ1ZmZlcj5cInVcIilyZXR1cm4gZWUoXCJDdXJyZW50IGVudmlyb25tZW50IGRvZXMgbm90IHN1cHBvcnQgU2hhcmVkQXJyYXlCdWZmZXIsIHB0aHJlYWRzIGFyZSBub3QgYXZhaWxhYmxlIVwiKSw2O3ZhciBJPVtdO3JldHVybiBFJiZJLmxlbmd0aD09PTA/QnIobixkLGgsdik6KG49e2hjOmgseGI6bixWYjp2LG5jOkl9LEU/KG4ucWM9XCJzcGF3blRocmVhZFwiLHBvc3RNZXNzYWdlKG4sSSksMCk6YW4obikpfWZ1bmN0aW9uIHVuKG4sZCxoKXtyZXR1cm4gRT93ZSgzLDEsbixkLGgpOjB9ZnVuY3Rpb24gd3QobixkKXtpZihFKXJldHVybiB3ZSg0LDEsbixkKX12YXIgZXQ9bj0+e2Zvcih2YXIgZD0wLGg9MDtoPG4ubGVuZ3RoOysraCl7dmFyIHY9bi5jaGFyQ29kZUF0KGgpOzEyNz49dj9kKys6MjA0Nz49dj9kKz0yOjU1Mjk2PD12JiY1NzM0Mz49dj8oZCs9NCwrK2gpOmQrPTN9cmV0dXJuIGR9LE1yPShuLGQsaCx2KT0+e2lmKGg+Pj49MCwhKDA8dikpcmV0dXJuIDA7dmFyIEk9aDt2PWgrdi0xO2Zvcih2YXIgaz0wO2s8bi5sZW5ndGg7KytrKXt2YXIgej1uLmNoYXJDb2RlQXQoayk7aWYoNTUyOTY8PXomJjU3MzQzPj16KXt2YXIgRz1uLmNoYXJDb2RlQXQoKytrKTt6PTY1NTM2KygoeiYxMDIzKTw8MTApfEcmMTAyM31pZigxMjc+PXope2lmKGg+PXYpYnJlYWs7ZFtoKys+Pj4wXT16fWVsc2V7aWYoMjA0Nz49eil7aWYoaCsxPj12KWJyZWFrO2RbaCsrPj4+MF09MTkyfHo+PjZ9ZWxzZXtpZig2NTUzNT49eil7aWYoaCsyPj12KWJyZWFrO2RbaCsrPj4+MF09MjI0fHo+PjEyfWVsc2V7aWYoaCszPj12KWJyZWFrO2RbaCsrPj4+MF09MjQwfHo+PjE4LGRbaCsrPj4+MF09MTI4fHo+PjEyJjYzfWRbaCsrPj4+MF09MTI4fHo+PjYmNjN9ZFtoKys+Pj4wXT0xMjh8eiY2M319cmV0dXJuIGRbaD4+PjBdPTAsaC1JfSxIdD0obixkLGgpPT5NcihuLGEoKSxkLGgpO2Z1bmN0aW9uIERyKG4sZCl7aWYoRSlyZXR1cm4gd2UoNSwxLG4sZCl9ZnVuY3Rpb24genIobixkLGgpe2lmKEUpcmV0dXJuIHdlKDYsMSxuLGQsaCl9ZnVuY3Rpb24gbG4obixkLGgpe3JldHVybiBFP3dlKDcsMSxuLGQsaCk6MH1mdW5jdGlvbiBjcihuLGQpe2lmKEUpcmV0dXJuIHdlKDgsMSxuLGQpfWZ1bmN0aW9uIGRuKG4sZCxoKXtpZihFKXJldHVybiB3ZSg5LDEsbixkLGgpfWZ1bmN0aW9uIGNuKG4sZCxoLHYpe2lmKEUpcmV0dXJuIHdlKDEwLDEsbixkLGgsdil9ZnVuY3Rpb24gcG4obixkLGgsdil7aWYoRSlyZXR1cm4gd2UoMTEsMSxuLGQsaCx2KX1mdW5jdGlvbiBmbihuLGQsaCx2KXtpZihFKXJldHVybiB3ZSgxMiwxLG4sZCxoLHYpfWZ1bmN0aW9uIFVyKG4pe2lmKEUpcmV0dXJuIHdlKDEzLDEsbil9ZnVuY3Rpb24gUXQobixkKXtpZihFKXJldHVybiB3ZSgxNCwxLG4sZCl9ZnVuY3Rpb24gbW4obixkLGgpe2lmKEUpcmV0dXJuIHdlKDE1LDEsbixkLGgpfXZhciBwcj1uPT57aWYobj09PW51bGwpcmV0dXJuXCJudWxsXCI7dmFyIGQ9dHlwZW9mIG47cmV0dXJuIGQ9PT1cIm9iamVjdFwifHxkPT09XCJhcnJheVwifHxkPT09XCJmdW5jdGlvblwiP24udG9TdHJpbmcoKTpcIlwiK259LFdyLG10PW49Pntmb3IodmFyIGQ9XCJcIjthKClbbj4+PjBdOylkKz1XclthKClbbisrPj4+MF1dO3JldHVybiBkfSxOcj17fSxmcj17fSxnYT17fSx0dDtmdW5jdGlvbiBobihuLGQsaD17fSl7dmFyIHY9ZC5uYW1lO2lmKCFuKXRocm93IG5ldyB0dChgdHlwZSBcIiR7dn1cIiBtdXN0IGhhdmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIHR5cGVpZCBwb2ludGVyYCk7aWYoZnIuaGFzT3duUHJvcGVydHkobikpe2lmKGguWWIpcmV0dXJuO3Rocm93IG5ldyB0dChgQ2Fubm90IHJlZ2lzdGVyIHR5cGUgJyR7dn0nIHR3aWNlYCl9ZnJbbl09ZCxkZWxldGUgZ2Fbbl0sTnIuaGFzT3duUHJvcGVydHkobikmJihkPU5yW25dLGRlbGV0ZSBOcltuXSxkLmZvckVhY2goST0+SSgpKSl9ZnVuY3Rpb24geXQobixkLGg9e30pe2lmKCEoXCJhcmdQYWNrQWR2YW5jZVwiaW4gZCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcInJlZ2lzdGVyVHlwZSByZWdpc3RlcmVkSW5zdGFuY2UgcmVxdWlyZXMgYXJnUGFja0FkdmFuY2VcIik7aG4obixkLGgpfXZhciBWcj0obixkLGgpPT57c3dpdGNoKGQpe2Nhc2UgMTpyZXR1cm4gaD92PT5yKClbdj4+PjA+Pj4wXTp2PT5hKClbdj4+PjA+Pj4wXTtjYXNlIDI6cmV0dXJuIGg/dj0+aSgpW3Y+Pj4xPj4+MF06dj0+cygpW3Y+Pj4xPj4+MF07Y2FzZSA0OnJldHVybiBoP3Y9Pm8oKVt2Pj4+Mj4+PjBdOnY9PmMoKVt2Pj4+Mj4+PjBdO2Nhc2UgODpyZXR1cm4gaD92PT5oZVt2Pj4+M106dj0+SmVbdj4+PjNdO2RlZmF1bHQ6dGhyb3cgbmV3IFR5cGVFcnJvcihgaW52YWxpZCBpbnRlZ2VyIHdpZHRoICgke2R9KTogJHtufWApfX07ZnVuY3Rpb24gbXIoKXt0aGlzLndiPVt2b2lkIDBdLHRoaXMuTmI9W119dmFyIHJ0PW5ldyBtcjtmdW5jdGlvbiBKdChuKXtuPj4+PTAsbj49cnQuRGImJi0tcnQuZ2V0KG4pLlFiPT09MCYmcnQuTWIobil9dmFyIFllPW49PntpZighbil0aHJvdyBuZXcgdHQoXCJDYW5ub3QgdXNlIGRlbGV0ZWQgdmFsLiBoYW5kbGUgPSBcIituKTtyZXR1cm4gcnQuZ2V0KG4pLnZhbHVlfSxudD1uPT57c3dpdGNoKG4pe2Nhc2Ugdm9pZCAwOnJldHVybiAxO2Nhc2UgbnVsbDpyZXR1cm4gMjtjYXNlITA6cmV0dXJuIDM7Y2FzZSExOnJldHVybiA0O2RlZmF1bHQ6cmV0dXJuIHJ0LktiKHtRYjoxLHZhbHVlOm59KX19O2Z1bmN0aW9uIGduKG4pe3JldHVybiB0aGlzLmZyb21XaXJlVHlwZShvKClbbj4+PjI+Pj4wXSl9dmFyIHluPShuLGQpPT57c3dpdGNoKGQpe2Nhc2UgNDpyZXR1cm4gZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMuZnJvbVdpcmVUeXBlKHAoKVtoPj4+Mj4+PjBdKX07Y2FzZSA4OnJldHVybiBmdW5jdGlvbihoKXtyZXR1cm4gdGhpcy5mcm9tV2lyZVR5cGUobSgpW2g+Pj4zPj4+MF0pfTtkZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3IoYGludmFsaWQgZmxvYXQgd2lkdGggKCR7ZH0pOiAke259YCl9fTtmdW5jdGlvbiBibihuKXtyZXR1cm4gdGhpcy5mcm9tV2lyZVR5cGUoYygpW24+Pj4yPj4+MF0pfXZhciB2bj10eXBlb2YgVGV4dERlY29kZXI8XCJ1XCI/bmV3IFRleHREZWNvZGVyKFwidXRmLTE2bGVcIik6dm9pZCAwLHduPShuLGQpPT57Zm9yKHZhciBoPW4+PjEsdj1oK2QvMjshKGg+PXYpJiZzKClbaD4+PjBdOykrK2g7aWYoaDw8PTEsMzI8aC1uJiZ2bilyZXR1cm4gdm4uZGVjb2RlKGEoKS5zbGljZShuLGgpKTtmb3IoaD1cIlwiLHY9MDshKHY+PWQvMik7Kyt2KXt2YXIgST1pKClbbisyKnY+Pj4xPj4+MF07aWYoST09MClicmVhaztoKz1TdHJpbmcuZnJvbUNoYXJDb2RlKEkpfXJldHVybiBofSwkbj0obixkLGgpPT57aWYoaD8/PTIxNDc0ODM2NDcsMj5oKXJldHVybiAwO2gtPTI7dmFyIHY9ZDtoPWg8MipuLmxlbmd0aD9oLzI6bi5sZW5ndGg7Zm9yKHZhciBJPTA7STxoOysrSSl7dmFyIGs9bi5jaGFyQ29kZUF0KEkpO2koKVtkPj4+MT4+PjBdPWssZCs9Mn1yZXR1cm4gaSgpW2Q+Pj4xPj4+MF09MCxkLXZ9LGhyPW49PjIqbi5sZW5ndGgseWE9KG4sZCk9Pntmb3IodmFyIGg9MCx2PVwiXCI7IShoPj1kLzQpOyl7dmFyIEk9bygpW24rNCpoPj4+Mj4+PjBdO2lmKEk9PTApYnJlYWs7KytoLDY1NTM2PD1JPyhJLT02NTUzNix2Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKDU1Mjk2fEk+PjEwLDU2MzIwfEkmMTAyMykpOnYrPVN0cmluZy5mcm9tQ2hhckNvZGUoSSl9cmV0dXJuIHZ9LHVlPShuLGQsaCk9PntpZihkPj4+PTAsaD8/PTIxNDc0ODM2NDcsND5oKXJldHVybiAwO3ZhciB2PWQ7aD12K2gtNDtmb3IodmFyIEk9MDtJPG4ubGVuZ3RoOysrSSl7dmFyIGs9bi5jaGFyQ29kZUF0KEkpO2lmKDU1Mjk2PD1rJiY1NzM0Mz49ayl7dmFyIHo9bi5jaGFyQ29kZUF0KCsrSSk7az02NTUzNisoKGsmMTAyMyk8PDEwKXx6JjEwMjN9aWYobygpW2Q+Pj4yPj4+MF09ayxkKz00LGQrND5oKWJyZWFrfXJldHVybiBvKClbZD4+PjI+Pj4wXT0wLGQtdn0sX249bj0+e2Zvcih2YXIgZD0wLGg9MDtoPG4ubGVuZ3RoOysraCl7dmFyIHY9bi5jaGFyQ29kZUF0KGgpOzU1Mjk2PD12JiY1NzM0Mz49diYmKytoLGQrPTR9cmV0dXJuIGR9LEx0PSgpPT57aWYoISgwPEtlKSl0cnl7RT9fYSh5ZSk6bHIoeWUpfWNhdGNoKG4pe2tyKG4pfX07ZnVuY3Rpb24gbHQobil7bj4+Pj0wLHR5cGVvZiBBdG9taWNzLm9jPT1cImZ1bmN0aW9uXCImJihBdG9taWNzLm9jKG8oKSxuPj4+MixuKS52YWx1ZS50aGVuKGVyKSxuKz0xMjgsQXRvbWljcy5zdG9yZShvKCksbj4+PjIsMSkpfWwuX19lbXNjcmlwdGVuX3RocmVhZF9tYWlsYm94X2F3YWl0PWx0O3ZhciBlcj0oKT0+e3ZhciBuPUluKCk7aWYobiYmKGx0KG4pLCFwZSkpdHJ5e3ppKCksTHQoKX1jYXRjaChkKXtrcihkKX19O2wuY2hlY2tNYWlsYm94PWVyO3ZhciBncj1bXSx5cj0obixkKT0+e3ZhciBoPWZyW25dO2lmKGg9PT12b2lkIDApdGhyb3cgbj1CaShuKSxoPW10KG4pLEl0KG4pLG5ldyB0dChkK1wiIGhhcyB1bmtub3duIHR5cGUgXCIraCk7cmV0dXJuIGh9LEhyPShuLGQsaCk9Pnt2YXIgdj1bXTtyZXR1cm4gbj1uLnRvV2lyZVR5cGUodixoKSx2Lmxlbmd0aCYmKGMoKVtkPj4+Mj4+PjBdPW50KHYpKSxufSx0cj1uPT57dHJ5e24oKX1jYXRjaChkKXtWdChkKX19O2Z1bmN0aW9uIFNuKCl7dmFyIG49cmUsZD17fTtmb3IobGV0W2gsdl1vZiBPYmplY3QuZW50cmllcyhuKSlkW2hdPXR5cGVvZiB2PT1cImZ1bmN0aW9uXCI/ZnVuY3Rpb24oKXt6dC5wdXNoKGgpO3RyeXtyZXR1cm4gdi5hcHBseShudWxsLGFyZ3VtZW50cyl9ZmluYWxseXtwZXx8KHp0LnBvcCgpLGh0JiYkdD09PTEmJnp0Lmxlbmd0aD09PTAmJigkdD0wLEtlKz0xLHRyKFZpKSx0eXBlb2YgRmliZXJzPFwidVwiJiZGaWJlcnMudWMoKSkpfX06djtyZXR1cm4gZH12YXIgJHQ9MCxodD1udWxsLHhuPTAsenQ9W10sTHI9e30sdT17fSxmPTAseT1udWxsLF89W107ZnVuY3Rpb24gQSgpe3JldHVybiBuZXcgUHJvbWlzZSgobixkKT0+e3k9e3Jlc29sdmU6bixyZWplY3Q6ZH19KX1mdW5jdGlvbiBNKCl7dmFyIG49R3IoNjU1NDgpLGQ9bisxMjtjKClbbj4+PjI+Pj4wXT1kLGMoKVtuKzQ+Pj4yPj4+MF09ZCs2NTUzNixkPXp0WzBdO3ZhciBoPUxyW2RdO3JldHVybiBoPT09dm9pZCAwJiYoaD1mKyssTHJbZF09aCx1W2hdPWQpLGQ9aCxvKClbbis4Pj4+Mj4+PjBdPWQsbn1mdW5jdGlvbiBIKCl7dmFyIG49bygpW2h0Kzg+Pj4yPj4+MF07cmV0dXJuIG49cmVbdVtuXV0sLS1LZSxuKCl9ZnVuY3Rpb24gWChuKXtpZighcGUpe2lmKCR0PT09MCl7dmFyIGQ9ITEsaD0hMTtuKCh2PTApPT57aWYoIXBlJiYoeG49dixkPSEwLGgpKXskdD0yLHRyKCgpPT5IaShodCkpLHR5cGVvZiBCcm93c2VyPFwidVwiJiZCcm93c2VyLkpiLlhiJiZCcm93c2VyLkpiLnJlc3VtZSgpLHY9ITE7dHJ5e3ZhciBJPUgoKX1jYXRjaChHKXtJPUcsdj0hMH12YXIgaz0hMTtpZighaHQpe3ZhciB6PXk7eiYmKHk9bnVsbCwodj96LnJlamVjdDp6LnJlc29sdmUpKEkpLGs9ITApfWlmKHYmJiFrKXRocm93IEl9fSksaD0hMCxkfHwoJHQ9MSxodD1NKCksdHlwZW9mIEJyb3dzZXI8XCJ1XCImJkJyb3dzZXIuSmIuWGImJkJyb3dzZXIuSmIucGF1c2UoKSx0cigoKT0+TmkoaHQpKSl9ZWxzZSAkdD09PTI/KCR0PTAsdHIoTGkpLEl0KGh0KSxodD1udWxsLF8uZm9yRWFjaCh2PT57aWYoIXBlKXRyeXt2KCksTHQoKX1jYXRjaChJKXtrcihJKX19KSk6VnQoYGludmFsaWQgc3RhdGU6ICR7JHR9YCk7cmV0dXJuIHhufX1mdW5jdGlvbiBqKG4pe3JldHVybiBYKGQ9PntuKCkudGhlbihkKX0pfXZhciBxPVtdLG5lPXt9LG1lPW49Pnt2YXIgZD1uZVtuXTtyZXR1cm4gZD09PXZvaWQgMD9tdChuKTpkfSwkZT0oKT0+dHlwZW9mIGdsb2JhbFRoaXM9PVwib2JqZWN0XCI/Z2xvYmFsVGhpczpGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCksUD1uPT57dmFyIGQ9cS5sZW5ndGg7cmV0dXJuIHEucHVzaChuKSxkfSxvZT0obixkKT0+e2Zvcih2YXIgaD1BcnJheShuKSx2PTA7djxuOysrdiloW3ZdPXlyKGMoKVtkKzQqdj4+PjI+Pj4wXSxcInBhcmFtZXRlciBcIit2KTtyZXR1cm4gaH0sSWU9KG4sZCk9Pk9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLFwibmFtZVwiLHt2YWx1ZTpufSk7ZnVuY3Rpb24gVXQobil7dmFyIGQ9RnVuY3Rpb247aWYoIShkIGluc3RhbmNlb2YgRnVuY3Rpb24pKXRocm93IG5ldyBUeXBlRXJyb3IoYG5ld18gY2FsbGVkIHdpdGggY29uc3RydWN0b3IgdHlwZSAke3R5cGVvZiBkfSB3aGljaCBpcyBub3QgYSBmdW5jdGlvbmApO3ZhciBoPUllKGQubmFtZXx8XCJ1bmtub3duRnVuY3Rpb25OYW1lXCIsZnVuY3Rpb24oKXt9KTtyZXR1cm4gaC5wcm90b3R5cGU9ZC5wcm90b3R5cGUsaD1uZXcgaCxuPWQuYXBwbHkoaCxuKSxuIGluc3RhbmNlb2YgT2JqZWN0P246aH12YXIgV3Q9bj0+biU0PT09MCYmKG4lMTAwIT09MHx8biU0MDA9PT0wKSxnaT1bMCwzMSw2MCw5MSwxMjEsMTUyLDE4MiwyMTMsMjQ0LDI3NCwzMDUsMzM1XSx5aT1bMCwzMSw1OSw5MCwxMjAsMTUxLDE4MSwyMTIsMjQzLDI3MywzMDQsMzM0XTtmdW5jdGlvbiBiaShuLGQsaCx2LEksayx6KXtyZXR1cm4gRT93ZSgxNiwxLG4sZCxoLHYsSSxrLHopOi01Mn1mdW5jdGlvbiB2aShuLGQsaCx2LEksayl7aWYoRSlyZXR1cm4gd2UoMTcsMSxuLGQsaCx2LEksayl9dmFyIHdpPW49Pnt2YXIgZD1ldChuKSsxLGg9R3IoZCk7cmV0dXJuIGgmJkh0KG4saCxkKSxofSxiYT1bXSwkaT0obixkKT0+e2JhLmxlbmd0aD0wO2Zvcih2YXIgaDtoPWEoKVtuKys+Pj4wXTspe3ZhciB2PWghPTEwNTt2Jj1oIT0xMTIsZCs9diYmZCU4PzQ6MCxiYS5wdXNoKGg9PTExMj9jKClbZD4+PjI+Pj4wXTpoPT0xMDY/aGVbZD4+PjNdOmg9PTEwNT9vKClbZD4+PjI+Pj4wXTptKClbZD4+PjM+Pj4wXSksZCs9dj84OjR9cmV0dXJuIGJhfSx2YT17fSxfaT0oKT0+e2lmKCF3YSl7dmFyIG49e1VTRVI6XCJ3ZWJfdXNlclwiLExPR05BTUU6XCJ3ZWJfdXNlclwiLFBBVEg6XCIvXCIsUFdEOlwiL1wiLEhPTUU6XCIvaG9tZS93ZWJfdXNlclwiLExBTkc6KHR5cGVvZiBuYXZpZ2F0b3I9PVwib2JqZWN0XCImJm5hdmlnYXRvci5sYW5ndWFnZXMmJm5hdmlnYXRvci5sYW5ndWFnZXNbMF18fFwiQ1wiKS5yZXBsYWNlKFwiLVwiLFwiX1wiKStcIi5VVEYtOFwiLF86JHx8XCIuL3RoaXMucHJvZ3JhbVwifSxkO2ZvcihkIGluIHZhKXZhW2RdPT09dm9pZCAwP2RlbGV0ZSBuW2RdOm5bZF09dmFbZF07dmFyIGg9W107Zm9yKGQgaW4gbiloLnB1c2goYCR7ZH09JHtuW2RdfWApO3dhPWh9cmV0dXJuIHdhfSx3YTtmdW5jdGlvbiBTaShuLGQpe2lmKEUpcmV0dXJuIHdlKDE4LDEsbixkKTtuPj4+PTAsZD4+Pj0wO3ZhciBoPTA7cmV0dXJuIF9pKCkuZm9yRWFjaCgodixJKT0+e3ZhciBrPWQraDtmb3IoST1jKClbbis0Kkk+Pj4yPj4+MF09ayxrPTA7azx2Lmxlbmd0aDsrK2spcigpW0krKz4+PjA+Pj4wXT12LmNoYXJDb2RlQXQoayk7cigpW0k+Pj4wPj4+MF09MCxoKz12Lmxlbmd0aCsxfSksMH1mdW5jdGlvbiB4aShuLGQpe2lmKEUpcmV0dXJuIHdlKDE5LDEsbixkKTtuPj4+PTAsZD4+Pj0wO3ZhciBoPV9pKCk7YygpW24+Pj4yPj4+MF09aC5sZW5ndGg7dmFyIHY9MDtyZXR1cm4gaC5mb3JFYWNoKEk9PnYrPUkubGVuZ3RoKzEpLGMoKVtkPj4+Mj4+PjBdPXYsMH1mdW5jdGlvbiBDaShuKXtyZXR1cm4gRT93ZSgyMCwxLG4pOjUyfWZ1bmN0aW9uIElpKG4sZCxoLHYpe3JldHVybiBFP3dlKDIxLDEsbixkLGgsdik6NTJ9ZnVuY3Rpb24gQWkobixkLGgsdil7cmV0dXJuIEU/d2UoMjIsMSxuLGQsaCx2KTo3MH12YXIgVGQ9W251bGwsW10sW11dO2Z1bmN0aW9uIFRpKG4sZCxoLHYpe2lmKEUpcmV0dXJuIHdlKDIzLDEsbixkLGgsdik7ZD4+Pj0wLGg+Pj49MCx2Pj4+PTA7Zm9yKHZhciBJPTAsaz0wO2s8aDtrKyspe3ZhciB6PWMoKVtkPj4+Mj4+PjBdLEc9YygpW2QrND4+PjI+Pj4wXTtkKz04O2Zvcih2YXIgWj0wO1o8RztaKyspe3ZhciBLPWEoKVt6K1o+Pj4wXSxhZT1UZFtuXTtLPT09MHx8Sz09PTEwPygobj09PTE/T2U6ZWUpKEVyKGFlLDApKSxhZS5sZW5ndGg9MCk6YWUucHVzaChLKX1JKz1HfXJldHVybiBjKClbdj4+PjI+Pj4wXT1JLDB9dmFyIEVpPVszMSwyOSwzMSwzMCwzMSwzMCwzMSwzMSwzMCwzMSwzMCwzMV0sT2k9WzMxLDI4LDMxLDMwLDMxLDMwLDMxLDMxLDMwLDMxLDMwLDMxXTtmdW5jdGlvbiBFZChuKXt2YXIgZD1BcnJheShldChuKSsxKTtyZXR1cm4gTXIobixkLDAsZC5sZW5ndGgpLGR9dmFyIE9kPShuLGQpPT57cigpLnNldChuLGQ+Pj4wKX07ZnVuY3Rpb24ga2kobixkLGgsdil7ZnVuY3Rpb24gSShSLGxlLFRlKXtmb3IoUj10eXBlb2YgUj09XCJudW1iZXJcIj9SLnRvU3RyaW5nKCk6Unx8XCJcIjtSLmxlbmd0aDxsZTspUj1UZVswXStSO3JldHVybiBSfWZ1bmN0aW9uIGsoUixsZSl7cmV0dXJuIEkoUixsZSxcIjBcIil9ZnVuY3Rpb24geihSLGxlKXtmdW5jdGlvbiBUZShGaSl7cmV0dXJuIDA+Rmk/LTE6MDxGaT8xOjB9dmFyIHJyO3JldHVybihycj1UZShSLmdldEZ1bGxZZWFyKCktbGUuZ2V0RnVsbFllYXIoKSkpPT09MCYmKHJyPVRlKFIuZ2V0TW9udGgoKS1sZS5nZXRNb250aCgpKSk9PT0wJiYocnI9VGUoUi5nZXREYXRlKCktbGUuZ2V0RGF0ZSgpKSkscnJ9ZnVuY3Rpb24gRyhSKXtzd2l0Y2goUi5nZXREYXkoKSl7Y2FzZSAwOnJldHVybiBuZXcgRGF0ZShSLmdldEZ1bGxZZWFyKCktMSwxMSwyOSk7Y2FzZSAxOnJldHVybiBSO2Nhc2UgMjpyZXR1cm4gbmV3IERhdGUoUi5nZXRGdWxsWWVhcigpLDAsMyk7Y2FzZSAzOnJldHVybiBuZXcgRGF0ZShSLmdldEZ1bGxZZWFyKCksMCwyKTtjYXNlIDQ6cmV0dXJuIG5ldyBEYXRlKFIuZ2V0RnVsbFllYXIoKSwwLDEpO2Nhc2UgNTpyZXR1cm4gbmV3IERhdGUoUi5nZXRGdWxsWWVhcigpLTEsMTEsMzEpO2Nhc2UgNjpyZXR1cm4gbmV3IERhdGUoUi5nZXRGdWxsWWVhcigpLTEsMTEsMzApfX1mdW5jdGlvbiBaKFIpe3ZhciBsZT1SLkFiO2ZvcihSPW5ldyBEYXRlKG5ldyBEYXRlKFIuQmIrMTkwMCwwLDEpLmdldFRpbWUoKSk7MDxsZTspe3ZhciBUZT1SLmdldE1vbnRoKCkscnI9KFd0KFIuZ2V0RnVsbFllYXIoKSk/RWk6T2kpW1RlXTtpZihsZT5yci1SLmdldERhdGUoKSlsZS09cnItUi5nZXREYXRlKCkrMSxSLnNldERhdGUoMSksMTE+VGU/Ui5zZXRNb250aChUZSsxKTooUi5zZXRNb250aCgwKSxSLnNldEZ1bGxZZWFyKFIuZ2V0RnVsbFllYXIoKSsxKSk7ZWxzZXtSLnNldERhdGUoUi5nZXREYXRlKCkrbGUpO2JyZWFrfX1yZXR1cm4gVGU9bmV3IERhdGUoUi5nZXRGdWxsWWVhcigpKzEsMCw0KSxsZT1HKG5ldyBEYXRlKFIuZ2V0RnVsbFllYXIoKSwwLDQpKSxUZT1HKFRlKSwwPj16KGxlLFIpPzA+PXooVGUsUik/Ui5nZXRGdWxsWWVhcigpKzE6Ui5nZXRGdWxsWWVhcigpOlIuZ2V0RnVsbFllYXIoKS0xfW4+Pj49MCxkPj4+PTAsaD4+Pj0wLHY+Pj49MDt2YXIgSz1jKClbdis0MD4+PjI+Pj4wXTt2PXtsYzpvKClbdj4+PjI+Pj4wXSxrYzpvKClbdis0Pj4+Mj4+PjBdLEdiOm8oKVt2Kzg+Pj4yPj4+MF0sTGI6bygpW3YrMTI+Pj4yPj4+MF0sSGI6bygpW3YrMTY+Pj4yPj4+MF0sQmI6bygpW3YrMjA+Pj4yPj4+MF0sdmI6bygpW3YrMjQ+Pj4yPj4+MF0sQWI6bygpW3YrMjg+Pj4yPj4+MF0sdGM6bygpW3YrMzI+Pj4yPj4+MF0samM6bygpW3YrMzY+Pj4yPj4+MF0sbWM6Sz9QZShLKTpcIlwifSxoPVBlKGgpLEs9e1wiJWNcIjpcIiVhICViICVkICVIOiVNOiVTICVZXCIsXCIlRFwiOlwiJW0vJWQvJXlcIixcIiVGXCI6XCIlWS0lbS0lZFwiLFwiJWhcIjpcIiViXCIsXCIlclwiOlwiJUk6JU06JVMgJXBcIixcIiVSXCI6XCIlSDolTVwiLFwiJVRcIjpcIiVIOiVNOiVTXCIsXCIleFwiOlwiJW0vJWQvJXlcIixcIiVYXCI6XCIlSDolTTolU1wiLFwiJUVjXCI6XCIlY1wiLFwiJUVDXCI6XCIlQ1wiLFwiJUV4XCI6XCIlbS8lZC8leVwiLFwiJUVYXCI6XCIlSDolTTolU1wiLFwiJUV5XCI6XCIleVwiLFwiJUVZXCI6XCIlWVwiLFwiJU9kXCI6XCIlZFwiLFwiJU9lXCI6XCIlZVwiLFwiJU9IXCI6XCIlSFwiLFwiJU9JXCI6XCIlSVwiLFwiJU9tXCI6XCIlbVwiLFwiJU9NXCI6XCIlTVwiLFwiJU9TXCI6XCIlU1wiLFwiJU91XCI6XCIldVwiLFwiJU9VXCI6XCIlVVwiLFwiJU9WXCI6XCIlVlwiLFwiJU93XCI6XCIld1wiLFwiJU9XXCI6XCIlV1wiLFwiJU95XCI6XCIleVwifTtmb3IodmFyIGFlIGluIEspaD1oLnJlcGxhY2UobmV3IFJlZ0V4cChhZSxcImdcIiksS1thZV0pO3ZhciBnZT1cIlN1bmRheSBNb25kYXkgVHVlc2RheSBXZWRuZXNkYXkgVGh1cnNkYXkgRnJpZGF5IFNhdHVyZGF5XCIuc3BsaXQoXCIgXCIpLFNlPVwiSmFudWFyeSBGZWJydWFyeSBNYXJjaCBBcHJpbCBNYXkgSnVuZSBKdWx5IEF1Z3VzdCBTZXB0ZW1iZXIgT2N0b2JlciBOb3ZlbWJlciBEZWNlbWJlclwiLnNwbGl0KFwiIFwiKTtLPXtcIiVhXCI6Uj0+Z2VbUi52Yl0uc3Vic3RyaW5nKDAsMyksXCIlQVwiOlI9PmdlW1IudmJdLFwiJWJcIjpSPT5TZVtSLkhiXS5zdWJzdHJpbmcoMCwzKSxcIiVCXCI6Uj0+U2VbUi5IYl0sXCIlQ1wiOlI9PmsoKFIuQmIrMTkwMCkvMTAwfDAsMiksXCIlZFwiOlI9PmsoUi5MYiwyKSxcIiVlXCI6Uj0+SShSLkxiLDIsXCIgXCIpLFwiJWdcIjpSPT5aKFIpLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDIpLFwiJUdcIjpSPT5aKFIpLFwiJUhcIjpSPT5rKFIuR2IsMiksXCIlSVwiOlI9PihSPVIuR2IsUj09MD9SPTEyOjEyPFImJihSLT0xMiksayhSLDIpKSxcIiVqXCI6Uj0+e2Zvcih2YXIgbGU9MCxUZT0wO1RlPD1SLkhiLTE7bGUrPShXdChSLkJiKzE5MDApP0VpOk9pKVtUZSsrXSk7cmV0dXJuIGsoUi5MYitsZSwzKX0sXCIlbVwiOlI9PmsoUi5IYisxLDIpLFwiJU1cIjpSPT5rKFIua2MsMiksXCIlblwiOigpPT5gXG5gLFwiJXBcIjpSPT4wPD1SLkdiJiYxMj5SLkdiP1wiQU1cIjpcIlBNXCIsXCIlU1wiOlI9PmsoUi5sYywyKSxcIiV0XCI6KCk9PlwiXHRcIixcIiV1XCI6Uj0+Ui52Ynx8NyxcIiVVXCI6Uj0+ayhNYXRoLmZsb29yKChSLkFiKzctUi52YikvNyksMiksXCIlVlwiOlI9Pnt2YXIgbGU9TWF0aC5mbG9vcigoUi5BYis3LShSLnZiKzYpJTcpLzcpO2lmKDI+PShSLnZiKzM3MS1SLkFiLTIpJTcmJmxlKyssbGUpbGU9PTUzJiYoVGU9KFIudmIrMzcxLVIuQWIpJTcsVGU9PTR8fFRlPT0zJiZXdChSLkJiKXx8KGxlPTEpKTtlbHNle2xlPTUyO3ZhciBUZT0oUi52Yis3LVIuQWItMSklNzsoVGU9PTR8fFRlPT01JiZXdChSLkJiJTQwMC0xKSkmJmxlKyt9cmV0dXJuIGsobGUsMil9LFwiJXdcIjpSPT5SLnZiLFwiJVdcIjpSPT5rKE1hdGguZmxvb3IoKFIuQWIrNy0oUi52Yis2KSU3KS83KSwyKSxcIiV5XCI6Uj0+KFIuQmIrMTkwMCkudG9TdHJpbmcoKS5zdWJzdHJpbmcoMiksXCIlWVwiOlI9PlIuQmIrMTkwMCxcIiV6XCI6Uj0+e1I9Ui5qYzt2YXIgbGU9MDw9UjtyZXR1cm4gUj1NYXRoLmFicyhSKS82MCwobGU/XCIrXCI6XCItXCIpKyhcIjAwMDBcIisoUi82MCoxMDArUiU2MCkpLnNsaWNlKC00KX0sXCIlWlwiOlI9PlIubWMsXCIlJVwiOigpPT5cIiVcIn0saD1oLnJlcGxhY2UoLyUlL2csXCJcXDBcXDBcIik7Zm9yKGFlIGluIEspaC5pbmNsdWRlcyhhZSkmJihoPWgucmVwbGFjZShuZXcgUmVnRXhwKGFlLFwiZ1wiKSxLW2FlXSh2KSkpO3JldHVybiBoPWgucmVwbGFjZSgvXFwwXFwwL2csXCIlXCIpLGFlPUVkKGgpLGFlLmxlbmd0aD5kPzA6KE9kKGFlLG4pLGFlLmxlbmd0aC0xKX1mZS5JYigpO2Zvcih2YXIgUGk9QXJyYXkoMjU2KSxDbj0wOzI1Nj5DbjsrK0NuKVBpW0NuXT1TdHJpbmcuZnJvbUNoYXJDb2RlKENuKTtXcj1QaSx0dD1sLkJpbmRpbmdFcnJvcj1jbGFzcyBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKG4pe3N1cGVyKG4pLHRoaXMubmFtZT1cIkJpbmRpbmdFcnJvclwifX0sbC5JbnRlcm5hbEVycm9yPWNsYXNzIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3Iobil7c3VwZXIobiksdGhpcy5uYW1lPVwiSW50ZXJuYWxFcnJvclwifX0sT2JqZWN0LmFzc2lnbihtci5wcm90b3R5cGUse2dldChuKXtyZXR1cm4gdGhpcy53YltuXX0saGFzKG4pe3JldHVybiB0aGlzLndiW25dIT09dm9pZCAwfSxLYihuKXt2YXIgZD10aGlzLk5iLnBvcCgpfHx0aGlzLndiLmxlbmd0aDtyZXR1cm4gdGhpcy53YltkXT1uLGR9LE1iKG4pe3RoaXMud2Jbbl09dm9pZCAwLHRoaXMuTmIucHVzaChuKX19KSxydC53Yi5wdXNoKHt2YWx1ZTp2b2lkIDB9LHt2YWx1ZTpudWxsfSx7dmFsdWU6ITB9LHt2YWx1ZTohMX0pLHJ0LkRiPXJ0LndiLmxlbmd0aCxsLmNvdW50X2VtdmFsX2hhbmRsZXM9KCk9Pntmb3IodmFyIG49MCxkPXJ0LkRiO2Q8cnQud2IubGVuZ3RoOysrZClydC53YltkXSE9PXZvaWQgMCYmKytuO3JldHVybiBufTt2YXIga2Q9W3V0LG9uLEJyLHVuLHd0LERyLHpyLGxuLGNyLGRuLGNuLHBuLGZuLFVyLFF0LG1uLGJpLHZpLFNpLHhpLENpLElpLEFpLFRpXSxQZD17dWE6ZnVuY3Rpb24obixkLGgpe3JldHVybiBqKGFzeW5jKCk9Pnthd2FpdCBsLmFjKG4sZCxoKX0pfSxiOmZ1bmN0aW9uKG4sZCxoKXt0aHJvdyBuPj4+PTAsbmV3IGhhKG4pLkliKGQ+Pj4wLGg+Pj4wKSxzbj1uLFJyKyssc259LGZhOmZ1bmN0aW9uKG4pe01pKG4+Pj4wLCFDLDEsIVQsMTMxMDcyLCExKSxmZS5UYigpfSxEOmZ1bmN0aW9uKG4pe24+Pj49MCxFP3Bvc3RNZXNzYWdlKHtjbWQ6XCJjbGVhbnVwVGhyZWFkXCIsdGhyZWFkOm59KTpmZS5SYihmZS5wYltuXSl9LFg6WHQsejp1bixsYTp3dCxUOkRyLFY6enIsbWE6bG4samE6Y3IsY2E6ZG4saWE6Y24sSDpwbixVOmZuLFI6VXIsa2E6UXQsUzptbixLOmZ1bmN0aW9uKG4sZCxoLHYsSSl7bj4+Pj0wLGQ+Pj49MCxoPj4+PTAsZD1tdChkKTt2YXIgaz1kLmluZGV4T2YoXCJ1XCIpIT0tMTtrJiYoST0oMW48PDY0biktMW4pLHl0KG4se25hbWU6ZCxmcm9tV2lyZVR5cGU6ej0+eix0b1dpcmVUeXBlOmZ1bmN0aW9uKHosRyl7aWYodHlwZW9mIEchPVwiYmlnaW50XCImJnR5cGVvZiBHIT1cIm51bWJlclwiKXRocm93IG5ldyBUeXBlRXJyb3IoYENhbm5vdCBjb252ZXJ0IFwiJHtwcihHKX1cIiB0byAke3RoaXMubmFtZX1gKTtpZihHPHZ8fEc+SSl0aHJvdyBuZXcgVHlwZUVycm9yKGBQYXNzaW5nIGEgbnVtYmVyIFwiJHtwcihHKX1cIiBmcm9tIEpTIHNpZGUgdG8gQy9DKysgc2lkZSB0byBhbiBhcmd1bWVudCBvZiB0eXBlIFwiJHtkfVwiLCB3aGljaCBpcyBvdXRzaWRlIHRoZSB2YWxpZCByYW5nZSBbJHt2fSwgJHtJfV0hYCk7cmV0dXJuIEd9LGFyZ1BhY2tBZHZhbmNlOjgscmVhZFZhbHVlRnJvbVBvaW50ZXI6VnIoZCxoLCFrKSxDYjpudWxsfSl9LHNhOmZ1bmN0aW9uKG4sZCxoLHYpe24+Pj49MCxkPW10KGQ+Pj4wKSx5dChuLHtuYW1lOmQsZnJvbVdpcmVUeXBlOmZ1bmN0aW9uKEkpe3JldHVybiEhSX0sdG9XaXJlVHlwZTpmdW5jdGlvbihJLGspe3JldHVybiBrP2g6dn0sYXJnUGFja0FkdmFuY2U6OCxyZWFkVmFsdWVGcm9tUG9pbnRlcjpmdW5jdGlvbihJKXtyZXR1cm4gdGhpcy5mcm9tV2lyZVR5cGUoYSgpW0k+Pj4wXSl9LENiOm51bGx9KX0scmE6ZnVuY3Rpb24obixkKXtuPj4+PTAsZD1tdChkPj4+MCkseXQobix7bmFtZTpkLGZyb21XaXJlVHlwZTpoPT57dmFyIHY9WWUoaCk7cmV0dXJuIEp0KGgpLHZ9LHRvV2lyZVR5cGU6KGgsdik9Pm50KHYpLGFyZ1BhY2tBZHZhbmNlOjgscmVhZFZhbHVlRnJvbVBvaW50ZXI6Z24sQ2I6bnVsbH0pfSxKOmZ1bmN0aW9uKG4sZCxoKXtuPj4+PTAsaD4+Pj0wLGQ9bXQoZD4+PjApLHl0KG4se25hbWU6ZCxmcm9tV2lyZVR5cGU6dj0+dix0b1dpcmVUeXBlOih2LEkpPT5JLGFyZ1BhY2tBZHZhbmNlOjgscmVhZFZhbHVlRnJvbVBvaW50ZXI6eW4oZCxoKSxDYjpudWxsfSl9LHY6ZnVuY3Rpb24obixkLGgsdixJKXtpZihuPj4+PTAsaD4+Pj0wLGQ9bXQoZD4+PjApLEk9PT0tMSYmKEk9NDI5NDk2NzI5NSksST1HPT5HLHY9PT0wKXt2YXIgaz0zMi04Kmg7ST1HPT5HPDxrPj4+a312YXIgej1kLmluY2x1ZGVzKFwidW5zaWduZWRcIik/ZnVuY3Rpb24oRyxaKXtyZXR1cm4gWj4+PjB9OmZ1bmN0aW9uKEcsWil7cmV0dXJuIFp9O3l0KG4se25hbWU6ZCxmcm9tV2lyZVR5cGU6SSx0b1dpcmVUeXBlOnosYXJnUGFja0FkdmFuY2U6OCxyZWFkVmFsdWVGcm9tUG9pbnRlcjpWcihkLGgsdiE9PTApLENiOm51bGx9KX0sbzpmdW5jdGlvbihuLGQsaCl7ZnVuY3Rpb24gdihrKXt2YXIgej1jKClbaz4+PjI+Pj4wXTtyZXR1cm4gaz1jKClbays0Pj4+Mj4+PjBdLG5ldyBJKHIoKS5idWZmZXIsayx6KX1uPj4+PTA7dmFyIEk9W0ludDhBcnJheSxVaW50OEFycmF5LEludDE2QXJyYXksVWludDE2QXJyYXksSW50MzJBcnJheSxVaW50MzJBcnJheSxGbG9hdDMyQXJyYXksRmxvYXQ2NEFycmF5LEJpZ0ludDY0QXJyYXksQmlnVWludDY0QXJyYXldW2RdO2g9bXQoaD4+PjApLHl0KG4se25hbWU6aCxmcm9tV2lyZVR5cGU6dixhcmdQYWNrQWR2YW5jZTo4LHJlYWRWYWx1ZUZyb21Qb2ludGVyOnZ9LHtZYjohMH0pfSxMOmZ1bmN0aW9uKG4sZCl7bj4+Pj0wLGQ9bXQoZD4+PjApO3ZhciBoPWQ9PT1cInN0ZDo6c3RyaW5nXCI7eXQobix7bmFtZTpkLGZyb21XaXJlVHlwZTpmdW5jdGlvbih2KXt2YXIgST1jKClbdj4+PjI+Pj4wXSxrPXYrNDtpZihoKWZvcih2YXIgej1rLEc9MDtHPD1JOysrRyl7dmFyIFo9aytHO2lmKEc9PUl8fGEoKVtaPj4+MF09PTApe2lmKHo9UGUoeixaLXopLEs9PT12b2lkIDApdmFyIEs9ejtlbHNlIEsrPVN0cmluZy5mcm9tQ2hhckNvZGUoMCksSys9ejt6PVorMX19ZWxzZXtmb3IoSz1BcnJheShJKSxHPTA7RzxJOysrRylLW0ddPVN0cmluZy5mcm9tQ2hhckNvZGUoYSgpW2srRz4+PjBdKTtLPUsuam9pbihcIlwiKX1yZXR1cm4gSXQodiksS30sdG9XaXJlVHlwZTpmdW5jdGlvbih2LEkpe0kgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciYmKEk9bmV3IFVpbnQ4QXJyYXkoSSkpO3ZhciBrPXR5cGVvZiBJPT1cInN0cmluZ1wiO2lmKCEoa3x8SSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXl8fEkgaW5zdGFuY2VvZiBVaW50OENsYW1wZWRBcnJheXx8SSBpbnN0YW5jZW9mIEludDhBcnJheSkpdGhyb3cgbmV3IHR0KFwiQ2Fubm90IHBhc3Mgbm9uLXN0cmluZyB0byBzdGQ6OnN0cmluZ1wiKTt2YXIgej1oJiZrP2V0KEkpOkkubGVuZ3RoLEc9R3IoNCt6KzEpLFo9Rys0O2lmKGMoKVtHPj4+Mj4+PjBdPXosaCYmaylIdChJLFoseisxKTtlbHNlIGlmKGspZm9yKGs9MDtrPHo7KytrKXt2YXIgSz1JLmNoYXJDb2RlQXQoayk7aWYoMjU1PEspdGhyb3cgSXQoWiksbmV3IHR0KFwiU3RyaW5nIGhhcyBVVEYtMTYgY29kZSB1bml0cyB0aGF0IGRvIG5vdCBmaXQgaW4gOCBiaXRzXCIpO2EoKVtaK2s+Pj4wXT1LfWVsc2UgZm9yKGs9MDtrPHo7KytrKWEoKVtaK2s+Pj4wXT1JW2tdO3JldHVybiB2IT09bnVsbCYmdi5wdXNoKEl0LEcpLEd9LGFyZ1BhY2tBZHZhbmNlOjgscmVhZFZhbHVlRnJvbVBvaW50ZXI6Ym4sQ2Iodil7SXQodil9fSl9LEI6ZnVuY3Rpb24obixkLGgpe2lmKG4+Pj49MCxkPj4+PTAsaD4+Pj0wLGg9bXQoaCksZD09PTIpdmFyIHY9d24sST0kbixrPWhyLHo9KCk9PnMoKSxHPTE7ZWxzZSBkPT09NCYmKHY9eWEsST11ZSxrPV9uLHo9KCk9PmMoKSxHPTIpO3l0KG4se25hbWU6aCxmcm9tV2lyZVR5cGU6Wj0+e2Zvcih2YXIgSz1jKClbWj4+PjI+Pj4wXSxhZT16KCksZ2UsU2U9Wis0LFI9MDtSPD1LOysrUil7dmFyIGxlPVorNCtSKmQ7KFI9PUt8fGFlW2xlPj4+R109PTApJiYoU2U9dihTZSxsZS1TZSksZ2U9PT12b2lkIDA/Z2U9U2U6KGdlKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDApLGdlKz1TZSksU2U9bGUrZCl9cmV0dXJuIEl0KFopLGdlfSx0b1dpcmVUeXBlOihaLEspPT57aWYodHlwZW9mIEshPVwic3RyaW5nXCIpdGhyb3cgbmV3IHR0KGBDYW5ub3QgcGFzcyBub24tc3RyaW5nIHRvIEMrKyBzdHJpbmcgdHlwZSAke2h9YCk7dmFyIGFlPWsoSyksZ2U9R3IoNCthZStkKTtyZXR1cm4gYygpW2dlPj4+Ml09YWU+PkcsSShLLGdlKzQsYWUrZCksWiE9PW51bGwmJloucHVzaChJdCxnZSksZ2V9LGFyZ1BhY2tBZHZhbmNlOjgscmVhZFZhbHVlRnJvbVBvaW50ZXI6Z24sQ2IoWil7SXQoWil9fSl9LHRhOmZ1bmN0aW9uKG4sZCl7bj4+Pj0wLGQ9bXQoZD4+PjApLHl0KG4se1piOiEwLG5hbWU6ZCxhcmdQYWNrQWR2YW5jZTowLGZyb21XaXJlVHlwZTooKT0+e30sdG9XaXJlVHlwZTooKT0+e319KX0scWE6KCk9PjEsUDpmdW5jdGlvbihuLGQpe24+Pj49MCxuPT1kPj4+MD9zZXRUaW1lb3V0KCgpPT5lcigpKTpFP3Bvc3RNZXNzYWdlKHt0YXJnZXRUaHJlYWQ6bixjbWQ6XCJjaGVja01haWxib3hcIn0pOihuPWZlLnBiW25dKSYmbi5wb3N0TWVzc2FnZSh7Y21kOlwiY2hlY2tNYWlsYm94XCJ9KX0sWTpmdW5jdGlvbihuLGQsaCx2KXtkPj4+PTAsaC89Mixnci5sZW5ndGg9aCx2PXY+Pj4wPj4+Mztmb3IodmFyIEk9MDtJPGg7SSsrKWdyW0ldPWhlW3YrMipJXT9oZVt2KzIqSSsxXTptKClbdisyKkkrMT4+PjBdO3JldHVybiBuPTA+bj9adFstbi0xXTprZFtuXSxmZS5XYj1kLGQ9bi5hcHBseShudWxsLGdyKSxmZS5XYj0wLGR9LGVhOmx0LHBhOmZ1bmN0aW9uKG4pe1MmJmZlLnBiW24+Pj4wXS5yZWYoKX0sdDpmdW5jdGlvbihuLGQsaCl7cmV0dXJuIGQ+Pj49MCxoPj4+PTAsbj1ZZShuPj4+MCksZD15cihkLFwiZW12YWw6OmFzXCIpLEhyKGQsaCxuKX0seTpmdW5jdGlvbihuKXtyZXR1cm4gbj4+Pj0wLGooKCk9PihuPVllKG4pLG4udGhlbihudCkpKX0scDpmdW5jdGlvbihuLGQsaCx2KXtyZXR1cm4gaD4+Pj0wLHY+Pj49MCxuPXFbbj4+PjBdLGQ9WWUoZD4+PjApLG4obnVsbCxkLGgsdil9LGs6ZnVuY3Rpb24obixkLGgsdixJKXtyZXR1cm4gaD4+Pj0wLHY+Pj49MCxJPj4+PTAsbj1xW24+Pj4wXSxkPVllKGQ+Pj4wKSxoPW1lKGgpLG4oZCxkW2hdLHYsSSl9LGM6SnQsQzpmdW5jdGlvbihuLGQpe3JldHVybiBkPj4+PTAsbj1ZZShuPj4+MCksZD1ZZShkKSxuPT1kfSxuOmZ1bmN0aW9uKG4pe3JldHVybiBuPj4+PTAsbj09PTA/bnQoJGUoKSk6KG49bWUobiksbnQoJGUoKVtuXSkpfSxqOmZ1bmN0aW9uKG4sZCxoKXtkPW9lKG4sZD4+PjApO3ZhciB2PWQuc2hpZnQoKTtuLS07dmFyIEk9YHJldHVybiBmdW5jdGlvbiAob2JqLCBmdW5jLCBkZXN0cnVjdG9yc1JlZiwgYXJncykge1xuYCxrPTAsej1bXTtoPT09MCYmei5wdXNoKFwib2JqXCIpO2Zvcih2YXIgRz1bXCJyZXRUeXBlXCJdLFo9W3ZdLEs9MDtLPG47KytLKXoucHVzaChcImFyZ1wiK0spLEcucHVzaChcImFyZ1R5cGVcIitLKSxaLnB1c2goZFtLXSksSSs9YCAgdmFyIGFyZyR7S30gPSBhcmdUeXBlJHtLfS5yZWFkVmFsdWVGcm9tUG9pbnRlcihhcmdzJHtrP1wiK1wiK2s6XCJcIn0pO1xuYCxrKz1kW0tdLmFyZ1BhY2tBZHZhbmNlO2ZvcihJKz1gICB2YXIgcnYgPSAke2g9PT0xP1wibmV3IGZ1bmNcIjpcImZ1bmMuY2FsbFwifSgke3ouam9pbihcIiwgXCIpfSk7XG5gLEs9MDtLPG47KytLKWRbS10uZGVsZXRlT2JqZWN0JiYoSSs9YCAgYXJnVHlwZSR7S30uZGVsZXRlT2JqZWN0KGFyZyR7S30pO1xuYCk7cmV0dXJuIHYuWmJ8fChHLnB1c2goXCJlbXZhbF9yZXR1cm5WYWx1ZVwiKSxaLnB1c2goSHIpLEkrPWAgIHJldHVybiBlbXZhbF9yZXR1cm5WYWx1ZShyZXRUeXBlLCBkZXN0cnVjdG9yc1JlZiwgcnYpO1xuYCksRy5wdXNoKEkrYH07XG5gKSxuPVV0KEcpLmFwcGx5KG51bGwsWiksaD1gbWV0aG9kQ2FsbGVyPCgke2QubWFwKGFlPT5hZS5uYW1lKS5qb2luKFwiLCBcIil9KSA9PiAke3YubmFtZX0+YCxQKEllKGgsbikpfSxzOmZ1bmN0aW9uKG4sZCl7cmV0dXJuIGQ+Pj49MCxuPVllKG4+Pj4wKSxkPVllKGQpLG50KG5bZF0pfSxlOmZ1bmN0aW9uKG4pe24+Pj49MCw0PG4mJihydC5nZXQobikuUWIrPTEpfSx3OmZ1bmN0aW9uKCl7cmV0dXJuIG50KFtdKX0sbTpmdW5jdGlvbihuKXtuPVllKG4+Pj4wKTtmb3IodmFyIGQ9QXJyYXkobi5sZW5ndGgpLGg9MDtoPG4ubGVuZ3RoO2grKylkW2hdPW5baF07cmV0dXJuIG50KGQpfSxmOmZ1bmN0aW9uKG4pe3JldHVybiBudChtZShuPj4+MCkpfSxsOmZ1bmN0aW9uKCl7cmV0dXJuIG50KHt9KX0saTpmdW5jdGlvbihuKXtuPj4+PTA7Zm9yKHZhciBkPVllKG4pO2QubGVuZ3RoOyl7dmFyIGg9ZC5wb3AoKTtkLnBvcCgpKGgpfUp0KG4pfSxoOmZ1bmN0aW9uKG4sZCxoKXtkPj4+PTAsaD4+Pj0wLG49WWUobj4+PjApLGQ9WWUoZCksaD1ZZShoKSxuW2RdPWh9LGQ6ZnVuY3Rpb24obixkKXtyZXR1cm4gZD4+Pj0wLG49eXIobj4+PjAsXCJfZW12YWxfdGFrZV92YWx1ZVwiKSxuPW4ucmVhZFZhbHVlRnJvbVBvaW50ZXIoZCksbnQobil9LCQ6ZnVuY3Rpb24obixkKXtuPS05MDA3MTk5MjU0NzQwOTkyPm58fDkwMDcxOTkyNTQ3NDA5OTI8bj9OYU46TnVtYmVyKG4pLGQ+Pj49MCxuPW5ldyBEYXRlKDFlMypuKSxvKClbZD4+PjI+Pj4wXT1uLmdldFVUQ1NlY29uZHMoKSxvKClbZCs0Pj4+Mj4+PjBdPW4uZ2V0VVRDTWludXRlcygpLG8oKVtkKzg+Pj4yPj4+MF09bi5nZXRVVENIb3VycygpLG8oKVtkKzEyPj4+Mj4+PjBdPW4uZ2V0VVRDRGF0ZSgpLG8oKVtkKzE2Pj4+Mj4+PjBdPW4uZ2V0VVRDTW9udGgoKSxvKClbZCsyMD4+PjI+Pj4wXT1uLmdldFVUQ0Z1bGxZZWFyKCktMTkwMCxvKClbZCsyND4+PjI+Pj4wXT1uLmdldFVUQ0RheSgpLG49KG4uZ2V0VGltZSgpLURhdGUuVVRDKG4uZ2V0VVRDRnVsbFllYXIoKSwwLDEsMCwwLDAsMCkpLzg2NGU1fDAsbygpW2QrMjg+Pj4yPj4+MF09bn0sYWE6ZnVuY3Rpb24obixkKXtuPS05MDA3MTk5MjU0NzQwOTkyPm58fDkwMDcxOTkyNTQ3NDA5OTI8bj9OYU46TnVtYmVyKG4pLGQ+Pj49MCxuPW5ldyBEYXRlKDFlMypuKSxvKClbZD4+PjI+Pj4wXT1uLmdldFNlY29uZHMoKSxvKClbZCs0Pj4+Mj4+PjBdPW4uZ2V0TWludXRlcygpLG8oKVtkKzg+Pj4yPj4+MF09bi5nZXRIb3VycygpLG8oKVtkKzEyPj4+Mj4+PjBdPW4uZ2V0RGF0ZSgpLG8oKVtkKzE2Pj4+Mj4+PjBdPW4uZ2V0TW9udGgoKSxvKClbZCsyMD4+PjI+Pj4wXT1uLmdldEZ1bGxZZWFyKCktMTkwMCxvKClbZCsyND4+PjI+Pj4wXT1uLmdldERheSgpO3ZhciBoPShXdChuLmdldEZ1bGxZZWFyKCkpP2dpOnlpKVtuLmdldE1vbnRoKCldK24uZ2V0RGF0ZSgpLTF8MDtvKClbZCsyOD4+PjI+Pj4wXT1oLG8oKVtkKzM2Pj4+Mj4+PjBdPS0oNjAqbi5nZXRUaW1lem9uZU9mZnNldCgpKSxoPW5ldyBEYXRlKG4uZ2V0RnVsbFllYXIoKSw2LDEpLmdldFRpbWV6b25lT2Zmc2V0KCk7dmFyIHY9bmV3IERhdGUobi5nZXRGdWxsWWVhcigpLDAsMSkuZ2V0VGltZXpvbmVPZmZzZXQoKTtuPShoIT12JiZuLmdldFRpbWV6b25lT2Zmc2V0KCk9PU1hdGgubWluKHYsaCkpfDAsbygpW2QrMzI+Pj4yPj4+MF09bn0sYmE6ZnVuY3Rpb24obil7bj4+Pj0wO3ZhciBkPW5ldyBEYXRlKG8oKVtuKzIwPj4+Mj4+PjBdKzE5MDAsbygpW24rMTY+Pj4yPj4+MF0sbygpW24rMTI+Pj4yPj4+MF0sbygpW24rOD4+PjI+Pj4wXSxvKClbbis0Pj4+Mj4+PjBdLG8oKVtuPj4+Mj4+PjBdLDApLGg9bygpW24rMzI+Pj4yPj4+MF0sdj1kLmdldFRpbWV6b25lT2Zmc2V0KCksST1uZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksNiwxKS5nZXRUaW1lem9uZU9mZnNldCgpLGs9bmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLDAsMSkuZ2V0VGltZXpvbmVPZmZzZXQoKSx6PU1hdGgubWluKGssSSk7cmV0dXJuIDA+aD9vKClbbiszMj4+PjI+Pj4wXT0rKEkhPWsmJno9PXYpOjA8aCE9KHo9PXYpJiYoST1NYXRoLm1heChrLEkpLGQuc2V0VGltZShkLmdldFRpbWUoKSs2ZTQqKCgwPGg/ejpJKS12KSkpLG8oKVtuKzI0Pj4+Mj4+PjBdPWQuZ2V0RGF5KCksaD0oV3QoZC5nZXRGdWxsWWVhcigpKT9naTp5aSlbZC5nZXRNb250aCgpXStkLmdldERhdGUoKS0xfDAsbygpW24rMjg+Pj4yPj4+MF09aCxvKClbbj4+PjI+Pj4wXT1kLmdldFNlY29uZHMoKSxvKClbbis0Pj4+Mj4+PjBdPWQuZ2V0TWludXRlcygpLG8oKVtuKzg+Pj4yPj4+MF09ZC5nZXRIb3VycygpLG8oKVtuKzEyPj4+Mj4+PjBdPWQuZ2V0RGF0ZSgpLG8oKVtuKzE2Pj4+Mj4+PjBdPWQuZ2V0TW9udGgoKSxvKClbbisyMD4+PjI+Pj4wXT1kLmdldFllYXIoKSxuPWQuZ2V0VGltZSgpLGlzTmFOKG4pPyhvKClbUmkoKT4+PjI+Pj4wXT02MSxuPS0xKTpuLz0xZTMsQmlnSW50KG4pfSxaOmJpLF86dmksTzpmdW5jdGlvbihuLGQsaCl7ZnVuY3Rpb24gdihLKXtyZXR1cm4oSz1LLnRvVGltZVN0cmluZygpLm1hdGNoKC9cXCgoW0EtWmEteiBdKylcXCkkLykpP0tbMV06XCJHTVRcIn1uPj4+PTAsZD4+Pj0wLGg+Pj49MDt2YXIgST1uZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCksaz1uZXcgRGF0ZShJLDAsMSksej1uZXcgRGF0ZShJLDYsMSk7ST1rLmdldFRpbWV6b25lT2Zmc2V0KCk7dmFyIEc9ei5nZXRUaW1lem9uZU9mZnNldCgpLFo9TWF0aC5tYXgoSSxHKTtjKClbbj4+PjI+Pj4wXT02MCpaLG8oKVtkPj4+Mj4+PjBdPSsoSSE9Ryksbj12KGspLGQ9dih6KSxuPXdpKG4pLGQ9d2koZCksRzxJPyhjKClbaD4+PjI+Pj4wXT1uLGMoKVtoKzQ+Pj4yPj4+MF09ZCk6KGMoKVtoPj4+Mj4+PjBdPWQsYygpW2grND4+PjI+Pj4wXT1uKX0scTooKT0+e1Z0KFwiXCIpfSxnOmZ1bmN0aW9uKG4sZCxoKXtyZXR1cm4gbj4+Pj0wLGQ9JGkoZD4+PjAsaD4+PjApLFp0W25dLmFwcGx5KG51bGwsZCl9LE06ZnVuY3Rpb24obixkLGgpe3JldHVybiBuPj4+PTAsZD0kaShkPj4+MCxoPj4+MCksWnRbbl0uYXBwbHkobnVsbCxkKX0sRTooKT0+e30sSTooKT0+RGF0ZS5ub3coKSxvYTooKT0+e3Rocm93IEtlKz0xLFwidW53aW5kXCJ9LFE6ZnVuY3Rpb24oKXtyZXR1cm4gNDI5NDkwMTc2MH0sdTooKT0+cGVyZm9ybWFuY2UudGltZU9yaWdpbitwZXJmb3JtYW5jZS5ub3coKSx4OigpPT5TPyhUbygpLEd0KEFvKSkuY3B1cygpLmxlbmd0aDpuYXZpZ2F0b3IuaGFyZHdhcmVDb25jdXJyZW5jeSxOOmZ1bmN0aW9uKG4pe24+Pj49MDt2YXIgZD1hKCkubGVuZ3RoO2lmKG48PWR8fDQyOTQ5MDE3NjA8bilyZXR1cm4hMTtmb3IodmFyIGg9MTs0Pj1oO2gqPTIpe3ZhciB2PWQqKDErLjIvaCk7dj1NYXRoLm1pbih2LG4rMTAwNjYzMjk2KTt2YXIgST1NYXRoO3Y9TWF0aC5tYXgobix2KTtlOntJPShJLm1pbi5jYWxsKEksNDI5NDkwMTc2MCx2Kyg2NTUzNi12JTY1NTM2KSU2NTUzNiktYmUuYnVmZmVyLmJ5dGVMZW5ndGgrNjU1MzUpLzY1NTM2O3RyeXtiZS5ncm93KEkpLFJlKCk7dmFyIGs9MTticmVhayBlfWNhdGNoe31rPXZvaWQgMH1pZihrKXJldHVybiEwfXJldHVybiExfSxnYTpTaSxoYTp4aSxXOmxyLEE6Q2ksRzpJaSxkYTpBaSxGOlRpLGE6YmV8fGwud2FzbU1lbW9yeSxuYTpraSxyOmZ1bmN0aW9uKG4sZCxoLHYpe3JldHVybiBraShuPj4+MCxkPj4+MCxoPj4+MCx2Pj4+MCl9fSxyZT1mdW5jdGlvbigpe2Z1bmN0aW9uIG4oaCx2KXtyZXR1cm4gcmU9aC5leHBvcnRzLHJlPVNuKCkscmU9UmQoKSxmZS5VYi5wdXNoKHJlLmJiKSxNdC51bnNoaWZ0KHJlLnZhKSxVZT12LHhyKCkscmV9dmFyIGQ9e2E6UGR9O2lmKE50KyssbC5pbnN0YW50aWF0ZVdhc20pdHJ5e3JldHVybiBsLmluc3RhbnRpYXRlV2FzbShkLG4pfWNhdGNoKGgpe2VlKGBNb2R1bGUuaW5zdGFudGlhdGVXYXNtIGNhbGxiYWNrIGZhaWxlZCB3aXRoIGVycm9yOiAke2h9YCksYihoKX1yZXR1cm4gSXIoZCxmdW5jdGlvbihoKXtuKGguaW5zdGFuY2UsaC5tb2R1bGUpfSkuY2F0Y2goYikse319KCk7bC5fT3J0SW5pdD0obixkKT0+KGwuX09ydEluaXQ9cmUud2EpKG4sZCksbC5fT3J0R2V0TGFzdEVycm9yPShuLGQpPT4obC5fT3J0R2V0TGFzdEVycm9yPXJlLnhhKShuLGQpLGwuX09ydENyZWF0ZVNlc3Npb25PcHRpb25zPShuLGQsaCx2LEksayx6LEcsWixLKT0+KGwuX09ydENyZWF0ZVNlc3Npb25PcHRpb25zPXJlLnlhKShuLGQsaCx2LEksayx6LEcsWixLKSxsLl9PcnRBcHBlbmRFeGVjdXRpb25Qcm92aWRlcj0obixkKT0+KGwuX09ydEFwcGVuZEV4ZWN1dGlvblByb3ZpZGVyPXJlLnphKShuLGQpLGwuX09ydEFkZEZyZWVEaW1lbnNpb25PdmVycmlkZT0obixkLGgpPT4obC5fT3J0QWRkRnJlZURpbWVuc2lvbk92ZXJyaWRlPXJlLkFhKShuLGQsaCksbC5fT3J0QWRkU2Vzc2lvbkNvbmZpZ0VudHJ5PShuLGQsaCk9PihsLl9PcnRBZGRTZXNzaW9uQ29uZmlnRW50cnk9cmUuQmEpKG4sZCxoKSxsLl9PcnRSZWxlYXNlU2Vzc2lvbk9wdGlvbnM9bj0+KGwuX09ydFJlbGVhc2VTZXNzaW9uT3B0aW9ucz1yZS5DYSkobiksbC5fT3J0Q3JlYXRlU2Vzc2lvbj0obixkLGgpPT4obC5fT3J0Q3JlYXRlU2Vzc2lvbj1yZS5EYSkobixkLGgpLGwuX09ydFJlbGVhc2VTZXNzaW9uPW49PihsLl9PcnRSZWxlYXNlU2Vzc2lvbj1yZS5FYSkobiksbC5fT3J0R2V0SW5wdXRPdXRwdXRDb3VudD0obixkLGgpPT4obC5fT3J0R2V0SW5wdXRPdXRwdXRDb3VudD1yZS5GYSkobixkLGgpLGwuX09ydEdldElucHV0TmFtZT0obixkKT0+KGwuX09ydEdldElucHV0TmFtZT1yZS5HYSkobixkKSxsLl9PcnRHZXRPdXRwdXROYW1lPShuLGQpPT4obC5fT3J0R2V0T3V0cHV0TmFtZT1yZS5IYSkobixkKSxsLl9PcnRGcmVlPW49PihsLl9PcnRGcmVlPXJlLklhKShuKSxsLl9PcnRDcmVhdGVUZW5zb3I9KG4sZCxoLHYsSSxrKT0+KGwuX09ydENyZWF0ZVRlbnNvcj1yZS5KYSkobixkLGgsdixJLGspLGwuX09ydEdldFRlbnNvckRhdGE9KG4sZCxoLHYsSSk9PihsLl9PcnRHZXRUZW5zb3JEYXRhPXJlLkthKShuLGQsaCx2LEkpLGwuX09ydFJlbGVhc2VUZW5zb3I9bj0+KGwuX09ydFJlbGVhc2VUZW5zb3I9cmUuTGEpKG4pLGwuX09ydENyZWF0ZVJ1bk9wdGlvbnM9KG4sZCxoLHYpPT4obC5fT3J0Q3JlYXRlUnVuT3B0aW9ucz1yZS5NYSkobixkLGgsdiksbC5fT3J0QWRkUnVuQ29uZmlnRW50cnk9KG4sZCxoKT0+KGwuX09ydEFkZFJ1bkNvbmZpZ0VudHJ5PXJlLk5hKShuLGQsaCksbC5fT3J0UmVsZWFzZVJ1bk9wdGlvbnM9bj0+KGwuX09ydFJlbGVhc2VSdW5PcHRpb25zPXJlLk9hKShuKSxsLl9PcnRDcmVhdGVCaW5kaW5nPW49PihsLl9PcnRDcmVhdGVCaW5kaW5nPXJlLlBhKShuKSxsLl9PcnRCaW5kSW5wdXQ9KG4sZCxoKT0+KGwuX09ydEJpbmRJbnB1dD1yZS5RYSkobixkLGgpLGwuX09ydEJpbmRPdXRwdXQ9KG4sZCxoLHYpPT4obC5fT3J0QmluZE91dHB1dD1yZS5SYSkobixkLGgsdiksbC5fT3J0Q2xlYXJCb3VuZE91dHB1dHM9bj0+KGwuX09ydENsZWFyQm91bmRPdXRwdXRzPXJlLlNhKShuKSxsLl9PcnRSZWxlYXNlQmluZGluZz1uPT4obC5fT3J0UmVsZWFzZUJpbmRpbmc9cmUuVGEpKG4pLGwuX09ydFJ1bldpdGhCaW5kaW5nPShuLGQsaCx2LEkpPT4obC5fT3J0UnVuV2l0aEJpbmRpbmc9cmUuVWEpKG4sZCxoLHYsSSksbC5fT3J0UnVuPShuLGQsaCx2LEksayx6LEcpPT4obC5fT3J0UnVuPXJlLlZhKShuLGQsaCx2LEksayx6LEcpLGwuX09ydEVuZFByb2ZpbGluZz1uPT4obC5fT3J0RW5kUHJvZmlsaW5nPXJlLldhKShuKSxsLl9Kc2VwT3V0cHV0PShuLGQsaCk9PihsLl9Kc2VwT3V0cHV0PXJlLlhhKShuLGQsaCksbC5fSnNlcEdldE5vZGVOYW1lPW49PihsLl9Kc2VwR2V0Tm9kZU5hbWU9cmUuWWEpKG4pO3ZhciBSaT0oKT0+KFJpPXJlLlphKSgpLEluPWwuX3B0aHJlYWRfc2VsZj0oKT0+KEluPWwuX3B0aHJlYWRfc2VsZj1yZS5fYSkoKSxHcj1sLl9tYWxsb2M9bj0+KEdyPWwuX21hbGxvYz1yZS4kYSkobiksSXQ9bC5fZnJlZT1uPT4oSXQ9bC5fZnJlZT1yZS5hYikobik7bC5fX2Vtc2NyaXB0ZW5fdGxzX2luaXQ9KCk9PihsLl9fZW1zY3JpcHRlbl90bHNfaW5pdD1yZS5iYikoKTt2YXIgQmk9bj0+KEJpPXJlLmNiKShuKTtsLl9fZW1iaW5kX2luaXRpYWxpemVfYmluZGluZ3M9KCk9PihsLl9fZW1iaW5kX2luaXRpYWxpemVfYmluZGluZ3M9cmUuZGIpKCk7dmFyIE1pPWwuX19lbXNjcmlwdGVuX3RocmVhZF9pbml0PShuLGQsaCx2LEksayk9PihNaT1sLl9fZW1zY3JpcHRlbl90aHJlYWRfaW5pdD1yZS5mYikobixkLGgsdixJLGspO2wuX19lbXNjcmlwdGVuX3RocmVhZF9jcmFzaGVkPSgpPT4obC5fX2Vtc2NyaXB0ZW5fdGhyZWFkX2NyYXNoZWQ9cmUuZ2IpKCk7dmFyIERpPShuLGQsaCx2KT0+KERpPXJlLmhiKShuLGQsaCx2KSwkYT1uPT4oJGE9cmUuaWIpKG4pLF9hPWwuX19lbXNjcmlwdGVuX3RocmVhZF9leGl0PW49PihfYT1sLl9fZW1zY3JpcHRlbl90aHJlYWRfZXhpdD1yZS5qYikobiksemk9KCk9Pih6aT1yZS5rYikoKSxVaT0obixkKT0+KFVpPXJlLmxiKShuLGQpLFNhPSgpPT4oU2E9cmUubWIpKCksQW49bj0+KEFuPXJlLm5iKShuKSx4YT1uPT4oeGE9cmUub2IpKG4pLFdpPWwuZHluQ2FsbF9paT0obixkKT0+KFdpPWwuZHluQ2FsbF9paT1yZS5xYikobixkKSxOaT1uPT4oTmk9cmUucmIpKG4pLFZpPSgpPT4oVmk9cmUuc2IpKCksSGk9bj0+KEhpPXJlLnRiKShuKSxMaT0oKT0+KExpPXJlLnViKSgpO2wuX19fc3RhcnRfZW1fanM9OTU4ODcxLGwuX19fc3RvcF9lbV9qcz05NTkwMzI7ZnVuY3Rpb24gUmQoKXt2YXIgbj1yZTtuPU9iamVjdC5hc3NpZ24oe30sbik7dmFyIGQ9dj0+KCk9PnYoKT4+PjAsaD12PT5JPT52KEkpPj4+MDtyZXR1cm4gbi5aYT1kKG4uWmEpLG4uX2E9ZChuLl9hKSxuLiRhPWgobi4kYSksbi5jYj1oKG4uY2IpLG4uZW1zY3JpcHRlbl9tYWluX3J1bnRpbWVfdGhyZWFkX2lkPWQobi5lbXNjcmlwdGVuX21haW5fcnVudGltZV90aHJlYWRfaWQpLG4ubWI9ZChuLm1iKSxuLm9iPWgobi5vYiksbn1sLndhc21NZW1vcnk9YmUsbC5zdGFja0FsbG9jPXhhLGwuc3RhY2tTYXZlPVNhLGwuc3RhY2tSZXN0b3JlPUFuLGwua2VlcFJ1bnRpbWVBbGl2ZT0oKT0+MDxLZSxsLlVURjhUb1N0cmluZz1QZSxsLnN0cmluZ1RvVVRGOD1IdCxsLmxlbmd0aEJ5dGVzVVRGOD1ldCxsLkV4aXRTdGF0dXM9QXIsbC5QVGhyZWFkPWZlO3ZhciBUbjtZdD1mdW5jdGlvbiBuKCl7VG58fEdpKCksVG58fChZdD1uKX07ZnVuY3Rpb24gR2koKXtpZighKDA8TnQpKWlmKEUpZyhsKSxFfHxkcihNdCksc3RhcnRXb3JrZXIobCk7ZWxzZXtpZihsLnByZVJ1bilmb3IodHlwZW9mIGwucHJlUnVuPT1cImZ1bmN0aW9uXCImJihsLnByZVJ1bj1bbC5wcmVSdW5dKTtsLnByZVJ1bi5sZW5ndGg7KUJ0LnVuc2hpZnQobC5wcmVSdW4uc2hpZnQoKSk7ZHIoQnQpLDA8TnR8fFRufHwoVG49ITAsbC5jYWxsZWRSdW49ITAscGV8fChFfHxkcihNdCksZyhsKSxFfHxkcihLdCkpKX19cmV0dXJuIEdpKCksdC5yZWFkeX19KSgpO3R5cGVvZiBPbz09XCJvYmplY3RcIiYmdHlwZW9mIE1hPT1cIm9iamVjdFwiP01hLmV4cG9ydHM9RW86dHlwZW9mIGRlZmluZT09XCJmdW5jdGlvblwiJiZkZWZpbmUuYW1kJiZkZWZpbmUoW10sKCk9PkVvKX0pO3ZhciBQbz1icigoem0sTGQpPT57TGQuZXhwb3J0cz0nXCJ1c2Ugc3RyaWN0XCI7dmFyIE1vZHVsZT17fSxFTlZJUk9OTUVOVF9JU19OT0RFPXR5cGVvZiBwcm9jZXNzPT1cIm9iamVjdFwiJiZ0eXBlb2YgcHJvY2Vzcy52ZXJzaW9ucz09XCJvYmplY3RcIiYmdHlwZW9mIHByb2Nlc3MudmVyc2lvbnMubm9kZT09XCJzdHJpbmdcIjtpZihFTlZJUk9OTUVOVF9JU19OT0RFKXt2YXIgbm9kZVdvcmtlclRocmVhZHM9cmVxdWlyZShcIndvcmtlcl90aHJlYWRzXCIpLHBhcmVudFBvcnQ9bm9kZVdvcmtlclRocmVhZHMucGFyZW50UG9ydDtwYXJlbnRQb3J0Lm9uKFwibWVzc2FnZVwiLGU9Pm9ubWVzc2FnZSh7ZGF0YTplfSkpO3ZhciBmcz1yZXF1aXJlKFwiZnNcIiksdm09cmVxdWlyZShcInZtXCIpO09iamVjdC5hc3NpZ24oZ2xvYmFsLHtzZWxmOmdsb2JhbCxyZXF1aXJlLE1vZHVsZSxsb2NhdGlvbjp7aHJlZjpfX2ZpbGVuYW1lfSxXb3JrZXI6bm9kZVdvcmtlclRocmVhZHMuV29ya2VyLGltcG9ydFNjcmlwdHM6ZT0+dm0ucnVuSW5UaGlzQ29udGV4dChmcy5yZWFkRmlsZVN5bmMoZSxcInV0ZjhcIikse2ZpbGVuYW1lOmV9KSxwb3N0TWVzc2FnZTplPT5wYXJlbnRQb3J0LnBvc3RNZXNzYWdlKGUpLHBlcmZvcm1hbmNlOmdsb2JhbC5wZXJmb3JtYW5jZXx8e25vdzpEYXRlLm5vd319KX12YXIgaW5pdGlhbGl6ZWRKUz0hMTtmdW5jdGlvbiB0aHJlYWRQcmludEVycigpe3ZhciBlPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykuam9pbihcIiBcIik7aWYoRU5WSVJPTk1FTlRfSVNfTk9ERSl7ZnMud3JpdGVTeW5jKDIsZStgXFxuYCk7cmV0dXJufWNvbnNvbGUuZXJyb3IoZSl9ZnVuY3Rpb24gdGhyZWFkQWxlcnQoKXt2YXIgZT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpLmpvaW4oXCIgXCIpO3Bvc3RNZXNzYWdlKHtjbWQ6XCJhbGVydFwiLHRleHQ6ZSx0aHJlYWRJZDpNb2R1bGUuX3B0aHJlYWRfc2VsZigpfSl9dmFyIGVycj10aHJlYWRQcmludEVycjtzZWxmLmFsZXJ0PXRocmVhZEFsZXJ0LE1vZHVsZS5pbnN0YW50aWF0ZVdhc209KGUsdCk9Pnt2YXIgYT1Nb2R1bGUud2FzbU1vZHVsZTtNb2R1bGUud2FzbU1vZHVsZT1udWxsO3ZhciByPW5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShhLGUpO3JldHVybiB0KHIpfSxzZWxmLm9udW5oYW5kbGVkcmVqZWN0aW9uPWU9Pnt0aHJvdyBlLnJlYXNvbnx8ZX07ZnVuY3Rpb24gaGFuZGxlTWVzc2FnZShlKXt0cnl7aWYoZS5kYXRhLmNtZD09PVwibG9hZFwiKXtsZXQgYT1bXTtzZWxmLm9ubWVzc2FnZT1yPT5hLnB1c2gociksc2VsZi5zdGFydFdvcmtlcj1yPT57TW9kdWxlPXIscG9zdE1lc3NhZ2Uoe2NtZDpcImxvYWRlZFwifSk7Zm9yKGxldCBzIG9mIGEpaGFuZGxlTWVzc2FnZShzKTtzZWxmLm9ubWVzc2FnZT1oYW5kbGVNZXNzYWdlfSxNb2R1bGUud2FzbU1vZHVsZT1lLmRhdGEud2FzbU1vZHVsZTtmb3IoY29uc3QgciBvZiBlLmRhdGEuaGFuZGxlcnMpTW9kdWxlW3JdPSguLi5zKT0+e3Bvc3RNZXNzYWdlKHtjbWQ6XCJjYWxsSGFuZGxlclwiLGhhbmRsZXI6cixhcmdzOnN9KX07aWYoTW9kdWxlLndhc21NZW1vcnk9ZS5kYXRhLndhc21NZW1vcnksTW9kdWxlLmJ1ZmZlcj1Nb2R1bGUud2FzbU1lbW9yeS5idWZmZXIsTW9kdWxlLkVOVklST05NRU5UX0lTX1BUSFJFQUQ9ITAsdHlwZW9mIGUuZGF0YS51cmxPckJsb2I9PVwic3RyaW5nXCIpaW1wb3J0U2NyaXB0cyhlLmRhdGEudXJsT3JCbG9iKTtlbHNle3ZhciB0PVVSTC5jcmVhdGVPYmplY3RVUkwoZS5kYXRhLnVybE9yQmxvYik7aW1wb3J0U2NyaXB0cyh0KSxVUkwucmV2b2tlT2JqZWN0VVJMKHQpfW9ydFdhc21UaHJlYWRlZChNb2R1bGUpfWVsc2UgaWYoZS5kYXRhLmNtZD09PVwicnVuXCIpe01vZHVsZS5fX2Vtc2NyaXB0ZW5fdGhyZWFkX2luaXQoZS5kYXRhLnB0aHJlYWRfcHRyLDAsMCwxKSxNb2R1bGUuX19lbXNjcmlwdGVuX3RocmVhZF9tYWlsYm94X2F3YWl0KGUuZGF0YS5wdGhyZWFkX3B0ciksTW9kdWxlLmVzdGFibGlzaFN0YWNrU3BhY2UoKSxNb2R1bGUuUFRocmVhZC5yZWNlaXZlT2JqZWN0VHJhbnNmZXIoZS5kYXRhKSxNb2R1bGUuUFRocmVhZC50aHJlYWRJbml0VExTKCksaW5pdGlhbGl6ZWRKU3x8KGluaXRpYWxpemVkSlM9ITApO3RyeXtNb2R1bGUuaW52b2tlRW50cnlQb2ludChlLmRhdGEuc3RhcnRfcm91dGluZSxlLmRhdGEuYXJnKX1jYXRjaChhKXtpZihhIT1cInVud2luZFwiKXRocm93IGF9fWVsc2UgZS5kYXRhLmNtZD09PVwiY2FuY2VsXCI/TW9kdWxlLl9wdGhyZWFkX3NlbGYoKSYmTW9kdWxlLl9fZW1zY3JpcHRlbl90aHJlYWRfZXhpdCgtMSk6ZS5kYXRhLnRhcmdldD09PVwic2V0aW1tZWRpYXRlXCJ8fChlLmRhdGEuY21kPT09XCJjaGVja01haWxib3hcIj9pbml0aWFsaXplZEpTJiZNb2R1bGUuY2hlY2tNYWlsYm94KCk6ZS5kYXRhLmNtZCYmKGVycihgd29ya2VyLmpzIHJlY2VpdmVkIHVua25vd24gY29tbWFuZCAke2UuZGF0YS5jbWR9YCksZXJyKGUuZGF0YSkpKX1jYXRjaChhKXt0aHJvdyBNb2R1bGUuX19lbXNjcmlwdGVuX3RocmVhZF9jcmFzaGVkPy4oKSxhfX1zZWxmLm9ubWVzc2FnZT1oYW5kbGVNZXNzYWdlO1xcbid9KTt2YXIgQm8sR2QsRGEsemEsem4sUm8sRmQscWQsamQsTW8sTmUsdnI9USgoKT0+e1widXNlIHN0cmljdFwiO0JvPXhvKCk7R2Q9a28oKSx6YT0hMSx6bj0hMSxSbz0hMSxGZD1lPT57aWYoZT09PTEpcmV0dXJuITE7aWYodHlwZW9mIFNoYXJlZEFycmF5QnVmZmVyPlwidVwiKXJldHVybiB0eXBlb2Ygc2VsZjxcInVcIiYmIXNlbGYuY3Jvc3NPcmlnaW5Jc29sYXRlZCYmY29uc29sZS53YXJuKFwiZW52Lndhc20ubnVtVGhyZWFkcyBpcyBzZXQgdG8gXCIrZStcIiwgYnV0IHRoaXMgd2lsbCBub3Qgd29yayB1bmxlc3MgeW91IGVuYWJsZSBjcm9zc09yaWdpbklzb2xhdGVkIG1vZGUuIFNlZSBodHRwczovL3dlYi5kZXYvY3Jvc3Mtb3JpZ2luLWlzb2xhdGlvbi1ndWlkZS8gZm9yIG1vcmUgaW5mby5cIiksITE7dHlwZW9mIHByb2Nlc3M8XCJ1XCImJnByb2Nlc3MudmVyc2lvbnMmJnByb2Nlc3MudmVyc2lvbnMubm9kZSYmY29uc29sZS53YXJuKFwiZW52Lndhc20ubnVtVGhyZWFkcyBpcyBzZXQgdG8gXCIrZStcIiwgaG93ZXZlciwgY3VycmVudGx5IG9ubnhydW50aW1lLXdlYiBkb2VzIG5vdCBzdXBwb3J0IG11bHRpLXRocmVhZHMgaW4gTm9kZS5qcy4gUGxlYXNlIGNvbnNpZGVyIHVzaW5nIG9ubnhydW50aW1lLW5vZGUgZm9yIHBlcmZvcm1hbmNlIGNyaXRpY2FsIHNjZW5hcmlvcy5cIik7dHJ5e3JldHVybiB0eXBlb2YgTWVzc2FnZUNoYW5uZWw8XCJ1XCImJm5ldyBNZXNzYWdlQ2hhbm5lbCgpLnBvcnQxLnBvc3RNZXNzYWdlKG5ldyBTaGFyZWRBcnJheUJ1ZmZlcigxKSksV2ViQXNzZW1ibHkudmFsaWRhdGUobmV3IFVpbnQ4QXJyYXkoWzAsOTcsMTE1LDEwOSwxLDAsMCwwLDEsNCwxLDk2LDAsMCwzLDIsMSwwLDUsNCwxLDMsMSwxLDEwLDExLDEsOSwwLDY1LDAsMjU0LDE2LDIsMCwyNiwxMV0pKX1jYXRjaHtyZXR1cm4hMX19LHFkPSgpPT57dHJ5e3JldHVybiBXZWJBc3NlbWJseS52YWxpZGF0ZShuZXcgVWludDhBcnJheShbMCw5NywxMTUsMTA5LDEsMCwwLDAsMSw0LDEsOTYsMCwwLDMsMiwxLDAsMTAsMzAsMSwyOCwwLDY1LDAsMjUzLDE1LDI1MywxMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDI1MywxODYsMSwyNiwxMV0pKX1jYXRjaHtyZXR1cm4hMX19LGpkPShlLHQpPT5lP3Q/XCJvcnQtd2FzbS1zaW1kLXRocmVhZGVkLndhc21cIjpcIm9ydC13YXNtLXNpbWQud2FzbVwiOnQ/XCJvcnQtd2FzbS10aHJlYWRlZC53YXNtXCI6XCJvcnQtd2FzbS53YXNtXCIsTW89YXN5bmMgZT0+e2lmKHphKXJldHVybiBQcm9taXNlLnJlc29sdmUoKTtpZih6bil0aHJvdyBuZXcgRXJyb3IoXCJtdWx0aXBsZSBjYWxscyB0byAnaW5pdGlhbGl6ZVdlYkFzc2VtYmx5KCknIGRldGVjdGVkLlwiKTtpZihSbyl0aHJvdyBuZXcgRXJyb3IoXCJwcmV2aW91cyBjYWxsIHRvICdpbml0aWFsaXplV2ViQXNzZW1ibHkoKScgZmFpbGVkLlwiKTt6bj0hMDtsZXQgdD1lLmluaXRUaW1lb3V0LHI9ZS5udW1UaHJlYWRzLGE9ZS5zaW1kLGk9RmQocikscz1hJiZxZCgpLG89ZS53YXNtUGF0aHMsYz10eXBlb2Ygbz09XCJzdHJpbmdcIj9vOnZvaWQgMCxwPWpkKHMsaSksbT10eXBlb2Ygbz09XCJvYmplY3RcIj9vW3BdOnZvaWQgMCxsPSExLGc9W107aWYodD4wJiZnLnB1c2gobmV3IFByb21pc2UoYj0+e3NldFRpbWVvdXQoKCk9PntsPSEwLGIoKX0sdCl9KSksZy5wdXNoKG5ldyBQcm9taXNlKChiLHcpPT57bGV0ICQ9aT9HZDpCbyx4PXtsb2NhdGVGaWxlOihULEMpPT57aWYoaSYmVC5lbmRzV2l0aChcIi53b3JrZXIuanNcIikmJnR5cGVvZiBCbG9iPFwidVwiKXJldHVybiBVUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFtQbygpXSx7dHlwZTpcInRleHQvamF2YXNjcmlwdFwifSkpO2lmKFQuZW5kc1dpdGgoXCIud2FzbVwiKSl7aWYobSlyZXR1cm4gbTtsZXQgUz1jPz9DO3JldHVybiBwPT09XCJvcnQtd2FzbS1zaW1kLndhc21cIj9TK1wib3J0LXdhc20tc2ltZC5qc2VwLndhc21cIjpwPT09XCJvcnQtd2FzbS1zaW1kLXRocmVhZGVkLndhc21cIj9TK1wib3J0LXdhc20tc2ltZC10aHJlYWRlZC5qc2VwLndhc21cIjpTK3B9cmV0dXJuIEMrVH19O2lmKGkpaWYoeC5udW1UaHJlYWRzPXIsdHlwZW9mIEJsb2I+XCJ1XCIpeC5tYWluU2NyaXB0VXJsT3JCbG9iPSh2b2lkIDApKF9fZGlybmFtZSxcIm9ydC13YXNtLXRocmVhZGVkLmpzXCIpO2Vsc2V7bGV0IFQ9YHZhciBvcnRXYXNtVGhyZWFkZWQ9JHskLnRvU3RyaW5nKCl9O2A7eC5tYWluU2NyaXB0VXJsT3JCbG9iPW5ldyBCbG9iKFtUXSx7dHlwZTpcInRleHQvamF2YXNjcmlwdFwifSl9JCh4KS50aGVuKFQ9Pnt6bj0hMSx6YT0hMCxEYT1ULGIoKX0sVD0+e3puPSExLFJvPSEwLHcoVCl9KX0pKSxhd2FpdCBQcm9taXNlLnJhY2UoZyksbCl0aHJvdyBuZXcgRXJyb3IoYFdlYkFzc2VtYmx5IGJhY2tlbmQgaW5pdGlhbGl6aW5nIGZhaWxlZCBkdWUgdG8gdGltZW91dDogJHt0fW1zYCl9LE5lPSgpPT57aWYoemEmJkRhKXJldHVybiBEYTt0aHJvdyBuZXcgRXJyb3IoXCJXZWJBc3NlbWJseSBpcyBub3QgaW5pdGlhbGl6ZWQgeWV0LlwiKX19KTt2YXIgVmUsanIsTWUsVW49USgoKT0+e1widXNlIHN0cmljdFwiO3ZyKCk7VmU9KGUsdCk9PntsZXQgcj1OZSgpLGE9ci5sZW5ndGhCeXRlc1VURjgoZSkrMSxpPXIuX21hbGxvYyhhKTtyZXR1cm4gci5zdHJpbmdUb1VURjgoZSxpLGEpLHQucHVzaChpKSxpfSxqcj0oZSx0LHIsYSk9PntpZih0eXBlb2YgZT09XCJvYmplY3RcIiYmZSE9PW51bGwpe2lmKHIuaGFzKGUpKXRocm93IG5ldyBFcnJvcihcIkNpcmN1bGFyIHJlZmVyZW5jZSBpbiBvcHRpb25zXCIpO3IuYWRkKGUpfU9iamVjdC5lbnRyaWVzKGUpLmZvckVhY2goKFtpLHNdKT0+e2xldCBvPXQ/dCtpOmk7aWYodHlwZW9mIHM9PVwib2JqZWN0XCIpanIocyxvK1wiLlwiLHIsYSk7ZWxzZSBpZih0eXBlb2Ygcz09XCJzdHJpbmdcInx8dHlwZW9mIHM9PVwibnVtYmVyXCIpYShvLHMudG9TdHJpbmcoKSk7ZWxzZSBpZih0eXBlb2Ygcz09XCJib29sZWFuXCIpYShvLHM/XCIxXCI6XCIwXCIpO2Vsc2UgdGhyb3cgbmV3IEVycm9yKGBDYW4ndCBoYW5kbGUgZXh0cmEgY29uZmlnIHR5cGU6ICR7dHlwZW9mIHN9YCl9KX0sTWU9ZT0+e2xldCB0PU5lKCkscj10LnN0YWNrU2F2ZSgpO3RyeXtsZXQgYT10LnN0YWNrQWxsb2MoOCk7dC5fT3J0R2V0TGFzdEVycm9yKGEsYSs0KTtsZXQgaT10LkhFQVAzMlthLzRdLHM9dC5IRUFQVTMyW2EvNCsxXSxvPXM/dC5VVEY4VG9TdHJpbmcocyk6XCJcIjt0aHJvdyBuZXcgRXJyb3IoYCR7ZX0gRVJST1JfQ09ERTogJHtpfSwgRVJST1JfTUVTU0FHRTogJHtvfWApfWZpbmFsbHl7dC5zdGFja1Jlc3RvcmUocil9fX0pO3ZhciBEbyx6bz1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7dnIoKTtVbigpO0RvPWU9PntsZXQgdD1OZSgpLHI9MCxhPVtdLGk9ZXx8e307dHJ5e2lmKGU/LmxvZ1NldmVyaXR5TGV2ZWw9PT12b2lkIDApaS5sb2dTZXZlcml0eUxldmVsPTI7ZWxzZSBpZih0eXBlb2YgZS5sb2dTZXZlcml0eUxldmVsIT1cIm51bWJlclwifHwhTnVtYmVyLmlzSW50ZWdlcihlLmxvZ1NldmVyaXR5TGV2ZWwpfHxlLmxvZ1NldmVyaXR5TGV2ZWw8MHx8ZS5sb2dTZXZlcml0eUxldmVsPjQpdGhyb3cgbmV3IEVycm9yKGBsb2cgc2VydmVyaXR5IGxldmVsIGlzIG5vdCB2YWxpZDogJHtlLmxvZ1NldmVyaXR5TGV2ZWx9YCk7aWYoZT8ubG9nVmVyYm9zaXR5TGV2ZWw9PT12b2lkIDApaS5sb2dWZXJib3NpdHlMZXZlbD0wO2Vsc2UgaWYodHlwZW9mIGUubG9nVmVyYm9zaXR5TGV2ZWwhPVwibnVtYmVyXCJ8fCFOdW1iZXIuaXNJbnRlZ2VyKGUubG9nVmVyYm9zaXR5TGV2ZWwpKXRocm93IG5ldyBFcnJvcihgbG9nIHZlcmJvc2l0eSBsZXZlbCBpcyBub3QgdmFsaWQ6ICR7ZS5sb2dWZXJib3NpdHlMZXZlbH1gKTtlPy50ZXJtaW5hdGU9PT12b2lkIDAmJihpLnRlcm1pbmF0ZT0hMSk7bGV0IHM9MDtyZXR1cm4gZT8udGFnIT09dm9pZCAwJiYocz1WZShlLnRhZyxhKSkscj10Ll9PcnRDcmVhdGVSdW5PcHRpb25zKGkubG9nU2V2ZXJpdHlMZXZlbCxpLmxvZ1ZlcmJvc2l0eUxldmVsLCEhaS50ZXJtaW5hdGUscykscj09PTAmJk1lKFwiQ2FuJ3QgY3JlYXRlIHJ1biBvcHRpb25zLlwiKSxlPy5leHRyYSE9PXZvaWQgMCYmanIoZS5leHRyYSxcIlwiLG5ldyBXZWFrU2V0LChvLGMpPT57bGV0IHA9VmUobyxhKSxtPVZlKGMsYSk7dC5fT3J0QWRkUnVuQ29uZmlnRW50cnkocixwLG0pIT09MCYmTWUoYENhbid0IHNldCBhIHJ1biBjb25maWcgZW50cnk6ICR7b30gLSAke2N9LmApfSksW3IsYV19Y2F0Y2gocyl7dGhyb3cgciE9PTAmJnQuX09ydFJlbGVhc2VSdW5PcHRpb25zKHIpLGEuZm9yRWFjaChvPT50Ll9mcmVlKG8pKSxzfX19KTt2YXIgS2QsWWQsWmQsWGQsVW8sV289USgoKT0+e1widXNlIHN0cmljdFwiO3ZyKCk7VW4oKTtLZD1lPT57c3dpdGNoKGUpe2Nhc2VcImRpc2FibGVkXCI6cmV0dXJuIDA7Y2FzZVwiYmFzaWNcIjpyZXR1cm4gMTtjYXNlXCJleHRlbmRlZFwiOnJldHVybiAyO2Nhc2VcImFsbFwiOnJldHVybiA5OTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgdW5zdXBwb3J0ZWQgZ3JhcGggb3B0aW1pemF0aW9uIGxldmVsOiAke2V9YCl9fSxZZD1lPT57c3dpdGNoKGUpe2Nhc2VcInNlcXVlbnRpYWxcIjpyZXR1cm4gMDtjYXNlXCJwYXJhbGxlbFwiOnJldHVybiAxO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGB1bnN1cHBvcnRlZCBleGVjdXRpb24gbW9kZTogJHtlfWApfX0sWmQ9ZT0+e2UuZXh0cmF8fChlLmV4dHJhPXt9KSxlLmV4dHJhLnNlc3Npb258fChlLmV4dHJhLnNlc3Npb249e30pO2xldCB0PWUuZXh0cmEuc2Vzc2lvbjt0LnVzZV9vcnRfbW9kZWxfYnl0ZXNfZGlyZWN0bHl8fCh0LnVzZV9vcnRfbW9kZWxfYnl0ZXNfZGlyZWN0bHk9XCIxXCIpLGUuZXhlY3V0aW9uUHJvdmlkZXJzJiZlLmV4ZWN1dGlvblByb3ZpZGVycy5zb21lKHI9Pih0eXBlb2Ygcj09XCJzdHJpbmdcIj9yOnIubmFtZSk9PT1cIndlYmdwdVwiKSYmKGUuZW5hYmxlTWVtUGF0dGVybj0hMSl9LFhkPShlLHQscik9Pntmb3IobGV0IGEgb2YgdCl7bGV0IGk9dHlwZW9mIGE9PVwic3RyaW5nXCI/YTphLm5hbWU7c3dpdGNoKGkpe2Nhc2VcIndlYm5uXCI6aWYoaT1cIldFQk5OXCIsdHlwZW9mIGEhPVwic3RyaW5nXCIpe2xldCBvPWE7aWYobz8uZGV2aWNlVHlwZSl7bGV0IGM9VmUoXCJkZXZpY2VUeXBlXCIscikscD1WZShvLmRldmljZVR5cGUscik7TmUoKS5fT3J0QWRkU2Vzc2lvbkNvbmZpZ0VudHJ5KGUsYyxwKSE9PTAmJk1lKGBDYW4ndCBzZXQgYSBzZXNzaW9uIGNvbmZpZyBlbnRyeTogJ2RldmljZVR5cGUnIC0gJHtvLmRldmljZVR5cGV9LmApfWlmKG8/Lm51bVRocmVhZHMpe2xldCBjPW8ubnVtVGhyZWFkczsodHlwZW9mIGMhPVwibnVtYmVyXCJ8fCFOdW1iZXIuaXNJbnRlZ2VyKGMpfHxjPDApJiYoYz0wKTtsZXQgcD1WZShcIm51bVRocmVhZHNcIixyKSxtPVZlKGMudG9TdHJpbmcoKSxyKTtOZSgpLl9PcnRBZGRTZXNzaW9uQ29uZmlnRW50cnkoZSxwLG0pIT09MCYmTWUoYENhbid0IHNldCBhIHNlc3Npb24gY29uZmlnIGVudHJ5OiAnbnVtVGhyZWFkcycgLSAke28ubnVtVGhyZWFkc30uYCl9aWYobz8ucG93ZXJQcmVmZXJlbmNlKXtsZXQgYz1WZShcInBvd2VyUHJlZmVyZW5jZVwiLHIpLHA9VmUoby5wb3dlclByZWZlcmVuY2Uscik7TmUoKS5fT3J0QWRkU2Vzc2lvbkNvbmZpZ0VudHJ5KGUsYyxwKSE9PTAmJk1lKGBDYW4ndCBzZXQgYSBzZXNzaW9uIGNvbmZpZyBlbnRyeTogJ3Bvd2VyUHJlZmVyZW5jZScgLSAke28ucG93ZXJQcmVmZXJlbmNlfS5gKX19YnJlYWs7Y2FzZVwid2ViZ3B1XCI6aWYoaT1cIkpTXCIsdHlwZW9mIGEhPVwic3RyaW5nXCIpe2xldCBvPWE7aWYobz8ucHJlZmVycmVkTGF5b3V0KXtpZihvLnByZWZlcnJlZExheW91dCE9PVwiTkNIV1wiJiZvLnByZWZlcnJlZExheW91dCE9PVwiTkhXQ1wiKXRocm93IG5ldyBFcnJvcihgcHJlZmVycmVkTGF5b3V0IG11c3QgYmUgZWl0aGVyICdOQ0hXJyBvciAnTkhXQyc6ICR7by5wcmVmZXJyZWRMYXlvdXR9YCk7bGV0IGM9VmUoXCJwcmVmZXJyZWRMYXlvdXRcIixyKSxwPVZlKG8ucHJlZmVycmVkTGF5b3V0LHIpO05lKCkuX09ydEFkZFNlc3Npb25Db25maWdFbnRyeShlLGMscCkhPT0wJiZNZShgQ2FuJ3Qgc2V0IGEgc2Vzc2lvbiBjb25maWcgZW50cnk6ICdwcmVmZXJyZWRMYXlvdXQnIC0gJHtvLnByZWZlcnJlZExheW91dH0uYCl9fWJyZWFrO2Nhc2VcIndhc21cIjpjYXNlXCJjcHVcIjpjb250aW51ZTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgbm90IHN1cHBvcnRlZCBleGVjdXRpb24gcHJvdmlkZXI6ICR7aX1gKX1sZXQgcz1WZShpLHIpO05lKCkuX09ydEFwcGVuZEV4ZWN1dGlvblByb3ZpZGVyKGUscykhPT0wJiZNZShgQ2FuJ3QgYXBwZW5kIGV4ZWN1dGlvbiBwcm92aWRlcjogJHtpfS5gKX19LFVvPWU9PntsZXQgdD1OZSgpLHI9MCxhPVtdLGk9ZXx8e307WmQoaSk7dHJ5e2xldCBzPUtkKGkuZ3JhcGhPcHRpbWl6YXRpb25MZXZlbD8/XCJhbGxcIiksbz1ZZChpLmV4ZWN1dGlvbk1vZGU/P1wic2VxdWVudGlhbFwiKSxjPXR5cGVvZiBpLmxvZ0lkPT1cInN0cmluZ1wiP1ZlKGkubG9nSWQsYSk6MCxwPWkubG9nU2V2ZXJpdHlMZXZlbD8/MjtpZighTnVtYmVyLmlzSW50ZWdlcihwKXx8cDwwfHxwPjQpdGhyb3cgbmV3IEVycm9yKGBsb2cgc2VydmVyaXR5IGxldmVsIGlzIG5vdCB2YWxpZDogJHtwfWApO2xldCBtPWkubG9nVmVyYm9zaXR5TGV2ZWw/PzA7aWYoIU51bWJlci5pc0ludGVnZXIobSl8fG08MHx8bT40KXRocm93IG5ldyBFcnJvcihgbG9nIHZlcmJvc2l0eSBsZXZlbCBpcyBub3QgdmFsaWQ6ICR7bX1gKTtsZXQgbD10eXBlb2YgaS5vcHRpbWl6ZWRNb2RlbEZpbGVQYXRoPT1cInN0cmluZ1wiP1ZlKGkub3B0aW1pemVkTW9kZWxGaWxlUGF0aCxhKTowO2lmKHI9dC5fT3J0Q3JlYXRlU2Vzc2lvbk9wdGlvbnMocywhIWkuZW5hYmxlQ3B1TWVtQXJlbmEsISFpLmVuYWJsZU1lbVBhdHRlcm4sbywhIWkuZW5hYmxlUHJvZmlsaW5nLDAsYyxwLG0sbCkscj09PTAmJk1lKFwiQ2FuJ3QgY3JlYXRlIHNlc3Npb24gb3B0aW9ucy5cIiksaS5leGVjdXRpb25Qcm92aWRlcnMmJlhkKHIsaS5leGVjdXRpb25Qcm92aWRlcnMsYSksaS5mcmVlRGltZW5zaW9uT3ZlcnJpZGVzKWZvcihsZXRbZyxiXW9mIE9iamVjdC5lbnRyaWVzKGkuZnJlZURpbWVuc2lvbk92ZXJyaWRlcykpe2lmKHR5cGVvZiBnIT1cInN0cmluZ1wiKXRocm93IG5ldyBFcnJvcihgZnJlZSBkaW1lbnNpb24gb3ZlcnJpZGUgbmFtZSBtdXN0IGJlIGEgc3RyaW5nOiAke2d9YCk7aWYodHlwZW9mIGIhPVwibnVtYmVyXCJ8fCFOdW1iZXIuaXNJbnRlZ2VyKGIpfHxiPDApdGhyb3cgbmV3IEVycm9yKGBmcmVlIGRpbWVuc2lvbiBvdmVycmlkZSB2YWx1ZSBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXI6ICR7Yn1gKTtsZXQgdz1WZShnLGEpO3QuX09ydEFkZEZyZWVEaW1lbnNpb25PdmVycmlkZShyLHcsYikhPT0wJiZNZShgQ2FuJ3Qgc2V0IGEgZnJlZSBkaW1lbnNpb24gb3ZlcnJpZGU6ICR7Z30gLSAke2J9LmApfXJldHVybiBpLmV4dHJhIT09dm9pZCAwJiZqcihpLmV4dHJhLFwiXCIsbmV3IFdlYWtTZXQsKGcsYik9PntsZXQgdz1WZShnLGEpLCQ9VmUoYixhKTt0Ll9PcnRBZGRTZXNzaW9uQ29uZmlnRW50cnkocix3LCQpIT09MCYmTWUoYENhbid0IHNldCBhIHNlc3Npb24gY29uZmlnIGVudHJ5OiAke2d9IC0gJHtifS5gKX0pLFtyLGFdfWNhdGNoKHMpe3Rocm93IHIhPT0wJiZ0Ll9PcnRSZWxlYXNlU2Vzc2lvbk9wdGlvbnMociksYS5mb3JFYWNoKG89PnQuX2ZyZWUobykpLHN9fX0pO3ZhciBVYSxwdCxLcixXbixZcixObixXYSx6ZT1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7VWE9ZT0+e3N3aXRjaChlKXtjYXNlXCJpbnQ4XCI6cmV0dXJuIDM7Y2FzZVwidWludDhcIjpyZXR1cm4gMjtjYXNlXCJib29sXCI6cmV0dXJuIDk7Y2FzZVwiaW50MTZcIjpyZXR1cm4gNTtjYXNlXCJ1aW50MTZcIjpyZXR1cm4gNDtjYXNlXCJpbnQzMlwiOnJldHVybiA2O2Nhc2VcInVpbnQzMlwiOnJldHVybiAxMjtjYXNlXCJmbG9hdDE2XCI6cmV0dXJuIDEwO2Nhc2VcImZsb2F0MzJcIjpyZXR1cm4gMTtjYXNlXCJmbG9hdDY0XCI6cmV0dXJuIDExO2Nhc2VcInN0cmluZ1wiOnJldHVybiA4O2Nhc2VcImludDY0XCI6cmV0dXJuIDc7Y2FzZVwidWludDY0XCI6cmV0dXJuIDEzO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGB1bnN1cHBvcnRlZCBkYXRhIHR5cGU6ICR7ZX1gKX19LHB0PWU9Pntzd2l0Y2goZSl7Y2FzZSAzOnJldHVyblwiaW50OFwiO2Nhc2UgMjpyZXR1cm5cInVpbnQ4XCI7Y2FzZSA5OnJldHVyblwiYm9vbFwiO2Nhc2UgNTpyZXR1cm5cImludDE2XCI7Y2FzZSA0OnJldHVyblwidWludDE2XCI7Y2FzZSA2OnJldHVyblwiaW50MzJcIjtjYXNlIDEyOnJldHVyblwidWludDMyXCI7Y2FzZSAxMDpyZXR1cm5cImZsb2F0MTZcIjtjYXNlIDE6cmV0dXJuXCJmbG9hdDMyXCI7Y2FzZSAxMTpyZXR1cm5cImZsb2F0NjRcIjtjYXNlIDg6cmV0dXJuXCJzdHJpbmdcIjtjYXNlIDc6cmV0dXJuXCJpbnQ2NFwiO2Nhc2UgMTM6cmV0dXJuXCJ1aW50NjRcIjtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgdW5zdXBwb3J0ZWQgZGF0YSB0eXBlOiAke2V9YCl9fSxLcj1lPT5bdm9pZCAwLDQsMSwxLDIsMiw0LDgsdm9pZCAwLDEsMiw4LDQsOCx2b2lkIDAsdm9pZCAwLHZvaWQgMF1bZV0sV249ZT0+e3N3aXRjaChlKXtjYXNlXCJmbG9hdDE2XCI6cmV0dXJuIFVpbnQxNkFycmF5O2Nhc2VcImZsb2F0MzJcIjpyZXR1cm4gRmxvYXQzMkFycmF5O2Nhc2VcInVpbnQ4XCI6cmV0dXJuIFVpbnQ4QXJyYXk7Y2FzZVwiaW50OFwiOnJldHVybiBJbnQ4QXJyYXk7Y2FzZVwidWludDE2XCI6cmV0dXJuIFVpbnQxNkFycmF5O2Nhc2VcImludDE2XCI6cmV0dXJuIEludDE2QXJyYXk7Y2FzZVwiaW50MzJcIjpyZXR1cm4gSW50MzJBcnJheTtjYXNlXCJib29sXCI6cmV0dXJuIFVpbnQ4QXJyYXk7Y2FzZVwiZmxvYXQ2NFwiOnJldHVybiBGbG9hdDY0QXJyYXk7Y2FzZVwidWludDMyXCI6cmV0dXJuIFVpbnQzMkFycmF5O2Nhc2VcImludDY0XCI6cmV0dXJuIEJpZ0ludDY0QXJyYXk7Y2FzZVwidWludDY0XCI6cmV0dXJuIEJpZ1VpbnQ2NEFycmF5O2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGB1bnN1cHBvcnRlZCB0eXBlOiAke2V9YCl9fSxZcj1lPT57c3dpdGNoKGUpe2Nhc2VcInZlcmJvc2VcIjpyZXR1cm4gMDtjYXNlXCJpbmZvXCI6cmV0dXJuIDE7Y2FzZVwid2FybmluZ1wiOnJldHVybiAyO2Nhc2VcImVycm9yXCI6cmV0dXJuIDM7Y2FzZVwiZmF0YWxcIjpyZXR1cm4gNDtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgdW5zdXBwb3J0ZWQgbG9nZ2luZyBsZXZlbDogJHtlfWApfX0sTm49ZT0+ZT09PVwiZmxvYXQzMlwifHxlPT09XCJpbnQzMlwifHxlPT09XCJpbnQ2NFwifHxlPT09XCJib29sXCJ8fGU9PT1cImZsb2F0MTZcInx8ZT09PVwidWludDMyXCIsV2E9ZT0+e3N3aXRjaChlKXtjYXNlXCJub25lXCI6cmV0dXJuIDA7Y2FzZVwiY3B1XCI6cmV0dXJuIDE7Y2FzZVwiY3B1LXBpbm5lZFwiOnJldHVybiAyO2Nhc2VcInRleHR1cmVcIjpyZXR1cm4gMztjYXNlXCJncHUtYnVmZmVyXCI6cmV0dXJuIDQ7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYHVuc3VwcG9ydGVkIGRhdGEgbG9jYXRpb246ICR7ZX1gKX19fSk7dmFyIFpyLE5hPVEoKCk9PntcInVzZSBzdHJpY3RcIjtacj1hc3luYyBlPT57aWYodHlwZW9mIGU9PVwic3RyaW5nXCIpaWYodHlwZW9mIHByb2Nlc3M8XCJ1XCImJnByb2Nlc3MudmVyc2lvbnMmJnByb2Nlc3MudmVyc2lvbnMubm9kZSl0cnl7cmV0dXJuIG5ldyBVaW50OEFycmF5KGF3YWl0KHZvaWQgMCkoZSkpfWNhdGNoKHQpe2lmKHQuY29kZT09PVwiRVJSX0ZTX0ZJTEVfVE9PX0xBUkdFXCIpe2xldCByPSh2b2lkIDApKGUpLGE9W107Zm9yIGF3YWl0KGxldCBpIG9mIHIpYS5wdXNoKGkpO3JldHVybiBuZXcgVWludDhBcnJheShCdWZmZXIuY29uY2F0KGEpKX10aHJvdyB0fWVsc2V7bGV0IHQ9YXdhaXQgZmV0Y2goZSk7aWYoIXQub2spdGhyb3cgbmV3IEVycm9yKGBmYWlsZWQgdG8gbG9hZCBleHRlcm5hbCBkYXRhIGZpbGU6ICR7ZX1gKTtsZXQgcj10LmhlYWRlcnMuZ2V0KFwiQ29udGVudC1MZW5ndGhcIiksYT1yP3BhcnNlSW50KHIsMTApOjA7aWYoYTwxMDczNzQxODI0KXJldHVybiBuZXcgVWludDhBcnJheShhd2FpdCB0LmFycmF5QnVmZmVyKCkpO3tpZighdC5ib2R5KXRocm93IG5ldyBFcnJvcihgZmFpbGVkIHRvIGxvYWQgZXh0ZXJuYWwgZGF0YSBmaWxlOiAke2V9LCBubyByZXNwb25zZSBib2R5LmApO2xldCBpPXQuYm9keS5nZXRSZWFkZXIoKSxzO3RyeXtzPW5ldyBBcnJheUJ1ZmZlcihhKX1jYXRjaChjKXtpZihjIGluc3RhbmNlb2YgUmFuZ2VFcnJvcil7bGV0IHA9TWF0aC5jZWlsKGEvNjU1MzYpO3M9bmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7aW5pdGlhbDpwLG1heGltdW06cH0pLmJ1ZmZlcn1lbHNlIHRocm93IGN9bGV0IG89MDtmb3IoOzspe2xldHtkb25lOmMsdmFsdWU6cH09YXdhaXQgaS5yZWFkKCk7aWYoYylicmVhaztsZXQgbT1wLmJ5dGVMZW5ndGg7bmV3IFVpbnQ4QXJyYXkocyxvLG0pLnNldChwKSxvKz1tfXJldHVybiBuZXcgVWludDhBcnJheShzLDAsYSl9fWVsc2UgcmV0dXJuIGUgaW5zdGFuY2VvZiBCbG9iP25ldyBVaW50OEFycmF5KGF3YWl0IGUuYXJyYXlCdWZmZXIoKSk6ZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXk/ZTpuZXcgVWludDhBcnJheShlKX19KTt2YXIgUWQsSmQsTm8sVm8sSG8sZWMsRGUscXQ9USgoKT0+e1widXNlIHN0cmljdFwiO3plKCk7UWQ9W1wiVlwiLFwiSVwiLFwiV1wiLFwiRVwiLFwiRlwiXSxKZD0oZSx0KT0+e2NvbnNvbGUubG9nKGBbJHtRZFtlXX0sJHtuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCl9XSR7dH1gKX0sSG89KGUsdCk9PntObz1lLFZvPXR9LGVjPShlLHQpPT57bGV0IHI9WXIoZSksYT1ZcihObyk7cj49YSYmSmQocix0eXBlb2YgdD09XCJmdW5jdGlvblwiP3QoKTp0KX0sRGU9KC4uLmUpPT57Vm8mJmVjKC4uLmUpfX0pO3ZhciBMbyxHbz1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7emUoKTtMbz0oZSx0KT0+bmV3KFduKHQpKShlKX0pO3ZhciBWbj1RKCgpPT57XCJ1c2Ugc3RyaWN0XCJ9KTt2YXIgSG4sdGMsRm8sSGEsVmEsam8sS289USgoKT0+e1widXNlIHN0cmljdFwiO3F0KCk7Vm4oKTtIbj1lPT5NYXRoLmNlaWwoZS8xNikqMTYsdGM9MSxGbz0oKT0+dGMrKyxIYT1hc3luYyhlLHQscixhKT0+e2xldCBpPUhuKHIpLHM9ZS5kZXZpY2UuY3JlYXRlQnVmZmVyKHtzaXplOmksdXNhZ2U6R1BVQnVmZmVyVXNhZ2UuQ09QWV9EU1R8R1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUR9KTt0cnl7bGV0IG89ZS5nZXRDb21tYW5kRW5jb2RlcigpO2UuZW5kQ29tcHV0ZVBhc3MoKSxvLmNvcHlCdWZmZXJUb0J1ZmZlcih0LDAscywwLGkpLGUuZmx1c2goKSxhd2FpdCBzLm1hcEFzeW5jKEdQVU1hcE1vZGUuUkVBRCk7bGV0IGM9cy5nZXRNYXBwZWRSYW5nZSgpO2lmKGEpe2xldCBwPWEoKTtyZXR1cm4gcC5zZXQobmV3IFVpbnQ4QXJyYXkoYywwLHIpKSxwfWVsc2UgcmV0dXJuIG5ldyBVaW50OEFycmF5KGMuc2xpY2UoMCxyKSl9ZmluYWxseXtzLmRlc3Ryb3koKX19LFZhPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuYmFja2VuZD10O3RoaXMuc3RvcmFnZUNhY2hlPW5ldyBNYXAsdGhpcy5mcmVlQnVmZmVycz1uZXcgTWFwLHRoaXMuZnJlZVVuaWZvcm1CdWZmZXJzPW5ldyBNYXAsdGhpcy5idWZmZXJzRm9yVXBsb2FkaW5nUGVuZGluZz1bXSx0aGlzLmJ1ZmZlcnNQZW5kaW5nPVtdLHRoaXMuZXh0ZXJuYWxCdWZmZXJzPW5ldyBNYXB9dXBsb2FkKHQscil7bGV0IGE9ci5idWZmZXIsaT1yLmJ5dGVPZmZzZXQscz1yLmJ5dGVMZW5ndGgsbz1IbihzKSxjPXRoaXMuc3RvcmFnZUNhY2hlLmdldCh0KTtpZighYyl0aHJvdyBuZXcgRXJyb3IoXCJncHUgZGF0YSBmb3IgdXBsb2FkaW5nIGRvZXMgbm90IGV4aXN0XCIpO2lmKGMub3JpZ2luYWxTaXplIT09cyl0aHJvdyBuZXcgRXJyb3IoYGluY29uc2lzdGVudCBkYXRhIHNpemUuIGdwdSBkYXRhIHNpemU9JHtjLm9yaWdpbmFsU2l6ZX0sIGRhdGEgc2l6ZT0ke3N9YCk7bGV0IHA9dGhpcy5iYWNrZW5kLmRldmljZS5jcmVhdGVCdWZmZXIoe21hcHBlZEF0Q3JlYXRpb246ITAsc2l6ZTpvLHVzYWdlOkdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURXxHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQ30pLG09cC5nZXRNYXBwZWRSYW5nZSgpO25ldyBVaW50OEFycmF5KG0pLnNldChuZXcgVWludDhBcnJheShhLGkscykpLHAudW5tYXAoKTtsZXQgbD10aGlzLmJhY2tlbmQuZ2V0Q29tbWFuZEVuY29kZXIoKTt0aGlzLmJhY2tlbmQuZW5kQ29tcHV0ZVBhc3MoKSxsLmNvcHlCdWZmZXJUb0J1ZmZlcihwLDAsYy5ncHVEYXRhLmJ1ZmZlciwwLG8pLERlKFwidmVyYm9zZVwiLCgpPT5gW1dlYkdQVV0gR3B1RGF0YU1hbmFnZXIudXBsb2FkKGlkPSR7dH0pYCksdGhpcy5idWZmZXJzRm9yVXBsb2FkaW5nUGVuZGluZy5wdXNoKHApfW1lbWNweSh0LHIpe2xldCBhPXRoaXMuc3RvcmFnZUNhY2hlLmdldCh0KTtpZighYSl0aHJvdyBuZXcgRXJyb3IoXCJzb3VyY2UgZ3B1IGRhdGEgZm9yIG1lbWNweSBkb2VzIG5vdCBleGlzdFwiKTtsZXQgaT10aGlzLnN0b3JhZ2VDYWNoZS5nZXQocik7aWYoIWkpdGhyb3cgbmV3IEVycm9yKFwiZGVzdGluYXRpb24gZ3B1IGRhdGEgZm9yIG1lbWNweSBkb2VzIG5vdCBleGlzdFwiKTtpZihhLm9yaWdpbmFsU2l6ZSE9PWkub3JpZ2luYWxTaXplKXRocm93IG5ldyBFcnJvcihcImluY29uc2lzdGVudCBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGdwdSBkYXRhIHNpemVcIik7bGV0IHM9SG4oYS5vcmlnaW5hbFNpemUpLG89dGhpcy5iYWNrZW5kLmdldENvbW1hbmRFbmNvZGVyKCk7dGhpcy5iYWNrZW5kLmVuZENvbXB1dGVQYXNzKCksby5jb3B5QnVmZmVyVG9CdWZmZXIoYS5ncHVEYXRhLmJ1ZmZlciwwLGkuZ3B1RGF0YS5idWZmZXIsMCxzKX1yZWdpc3RlckV4dGVybmFsQnVmZmVyKHQscixhKXtsZXQgaTtpZihhKXtpZihpPXRoaXMuZXh0ZXJuYWxCdWZmZXJzLmdldChhKSxpPT09dm9pZCAwKXRocm93IG5ldyBFcnJvcihcInByZXZpb3VzIGJ1ZmZlciBpcyBub3QgcmVnaXN0ZXJlZFwiKTtpZih0PT09YSlyZXR1cm4gRGUoXCJ2ZXJib3NlXCIsKCk9PmBbV2ViR1BVXSBHcHVEYXRhTWFuYWdlci5yZWdpc3RlckV4dGVybmFsQnVmZmVyKHNpemU9JHtyfSkgPT4gaWQ9JHtpfSwgYnVmZmVyIGlzIHRoZSBzYW1lLCBza2lwLmApLGk7dGhpcy5leHRlcm5hbEJ1ZmZlcnMuZGVsZXRlKGEpfWVsc2UgaT1GbygpO3JldHVybiB0aGlzLnN0b3JhZ2VDYWNoZS5zZXQoaSx7Z3B1RGF0YTp7aWQ6aSx0eXBlOjAsYnVmZmVyOnR9LG9yaWdpbmFsU2l6ZTpyfSksdGhpcy5leHRlcm5hbEJ1ZmZlcnMuc2V0KHQsaSksRGUoXCJ2ZXJib3NlXCIsKCk9PmBbV2ViR1BVXSBHcHVEYXRhTWFuYWdlci5yZWdpc3RlckV4dGVybmFsQnVmZmVyKHNpemU9JHtyfSkgPT4gaWQ9JHtpfSwgcmVnaXN0ZXJlZC5gKSxpfXVucmVnaXN0ZXJFeHRlcm5hbEJ1ZmZlcih0KXtsZXQgcj10aGlzLmV4dGVybmFsQnVmZmVycy5nZXQodCk7ciE9PXZvaWQgMCYmKHRoaXMuc3RvcmFnZUNhY2hlLmRlbGV0ZShyKSx0aGlzLmV4dGVybmFsQnVmZmVycy5kZWxldGUodCksRGUoXCJ2ZXJib3NlXCIsKCk9PmBbV2ViR1BVXSBHcHVEYXRhTWFuYWdlci51bnJlZ2lzdGVyRXh0ZXJuYWxCdWZmZXIoKSA9PiBpZD0ke3J9YCkpfWNyZWF0ZSh0LHI9R1BVQnVmZmVyVXNhZ2UuU1RPUkFHRXxHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQ3xHUFVCdWZmZXJVc2FnZS5DT1BZX0RTVCl7bGV0IGE9SG4odCksaSxzPShyJkdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UpPT09R1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSxvPShyJkdQVUJ1ZmZlclVzYWdlLlVOSUZPUk0pPT09R1BVQnVmZmVyVXNhZ2UuVU5JRk9STTtpZihzfHxvKXtsZXQgcD1zP3RoaXMuZnJlZUJ1ZmZlcnM6dGhpcy5mcmVlVW5pZm9ybUJ1ZmZlcnMsbT1wLmdldChhKTttfHwobT1bXSxwLnNldChhLG0pKSxtLmxlbmd0aD4wP2k9bS5wb3AoKTppPXRoaXMuYmFja2VuZC5kZXZpY2UuY3JlYXRlQnVmZmVyKHtzaXplOmEsdXNhZ2U6cn0pfWVsc2UgaT10aGlzLmJhY2tlbmQuZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7c2l6ZTphLHVzYWdlOnJ9KTtsZXQgYz17aWQ6Rm8oKSx0eXBlOjAsYnVmZmVyOml9O3JldHVybiB0aGlzLnN0b3JhZ2VDYWNoZS5zZXQoYy5pZCx7Z3B1RGF0YTpjLG9yaWdpbmFsU2l6ZTp0fSksRGUoXCJ2ZXJib3NlXCIsKCk9PmBbV2ViR1BVXSBHcHVEYXRhTWFuYWdlci5jcmVhdGUoc2l6ZT0ke3R9KSA9PiBpZD0ke2MuaWR9YCksY31nZXQodCl7cmV0dXJuIHRoaXMuc3RvcmFnZUNhY2hlLmdldCh0KT8uZ3B1RGF0YX1yZWxlYXNlKHQpe2xldCByPXRoaXMuc3RvcmFnZUNhY2hlLmdldCh0KTtpZighcil0aHJvdyBuZXcgRXJyb3IoXCJyZWxlYXNpbmcgZGF0YSBkb2VzIG5vdCBleGlzdFwiKTtyZXR1cm4gRGUoXCJ2ZXJib3NlXCIsKCk9PmBbV2ViR1BVXSBHcHVEYXRhTWFuYWdlci5yZWxlYXNlKGlkPSR7dH0pLCBncHVEYXRhSWQ9JHtyLmdwdURhdGEuaWR9YCksdGhpcy5zdG9yYWdlQ2FjaGUuZGVsZXRlKHQpLHRoaXMuYnVmZmVyc1BlbmRpbmcucHVzaChyLmdwdURhdGEuYnVmZmVyKSxyLm9yaWdpbmFsU2l6ZX1hc3luYyBkb3dubG9hZCh0LHIpe2xldCBhPXRoaXMuc3RvcmFnZUNhY2hlLmdldCh0KTtpZighYSl0aHJvdyBuZXcgRXJyb3IoXCJkYXRhIGRvZXMgbm90IGV4aXN0XCIpO2F3YWl0IEhhKHRoaXMuYmFja2VuZCxhLmdwdURhdGEuYnVmZmVyLGEub3JpZ2luYWxTaXplLHIpfXJlZnJlc2hQZW5kaW5nQnVmZmVycygpe2ZvcihsZXQgdCBvZiB0aGlzLmJ1ZmZlcnNGb3JVcGxvYWRpbmdQZW5kaW5nKXQuZGVzdHJveSgpO3RoaXMuYnVmZmVyc0ZvclVwbG9hZGluZ1BlbmRpbmc9W107Zm9yKGxldCB0IG9mIHRoaXMuYnVmZmVyc1BlbmRpbmcpKHQudXNhZ2UmR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSk9PT1HUFVCdWZmZXJVc2FnZS5TVE9SQUdFP3RoaXMuZnJlZUJ1ZmZlcnMuZ2V0KHQuc2l6ZSkucHVzaCh0KToodC51c2FnZSZHUFVCdWZmZXJVc2FnZS5VTklGT1JNKT09PUdQVUJ1ZmZlclVzYWdlLlVOSUZPUk0/dGhpcy5mcmVlVW5pZm9ybUJ1ZmZlcnMuZ2V0KHQuc2l6ZSkucHVzaCh0KTp0LmRlc3Ryb3koKTt0aGlzLmJ1ZmZlcnNQZW5kaW5nPVtdfWRpc3Bvc2UoKXt0aGlzLmZyZWVCdWZmZXJzLmZvckVhY2godD0+e3QuZm9yRWFjaChyPT57ci5kZXN0cm95KCl9KX0pLHRoaXMuZnJlZVVuaWZvcm1CdWZmZXJzLmZvckVhY2godD0+e3QuZm9yRWFjaChyPT57ci5kZXN0cm95KCl9KX0pLHRoaXMuc3RvcmFnZUNhY2hlLmZvckVhY2godD0+e3QuZ3B1RGF0YS5idWZmZXIuZGVzdHJveSgpfSksdGhpcy5zdG9yYWdlQ2FjaGU9bmV3IE1hcCx0aGlzLmZyZWVCdWZmZXJzPW5ldyBNYXAsdGhpcy5mcmVlVW5pZm9ybUJ1ZmZlcnM9bmV3IE1hcH19LGpvPSguLi5lKT0+bmV3IFZhKC4uLmUpfSk7dmFyIExhLHhlLFhlPVEoKCk9PntcInVzZSBzdHJpY3RcIjtMYT1jbGFzc3tjb25zdHJ1Y3Rvcih0KXtPYmplY3QuYXNzaWduKHRoaXMsdCl9Z2V0IGNhY2hlS2V5KCl7cmV0dXJuIHRoaXMua2V5fHwodGhpcy5rZXk9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykuc29ydCgpLm1hcCh0PT5gJHt0aGlzW3RdfWApLmpvaW4oXCI7XCIpKSx0aGlzLmtleX19LHhlPWU9Pm5ldyBMYShlKX0pO3ZhciBHYSxBdCxOLG9yLExuLEduLEZuLENlPVEoKCk9PntcInVzZSBzdHJpY3RcIjtHYT1jbGFzc3tzdGF0aWMgY2FsY01hdE11bFNoYXBlKHQscil7cmV0dXJuIHRbMV0hPT1yWzBdP3ZvaWQgMDpbdFswXSxyWzFdXX19LEF0PWNsYXNze3N0YXRpYyBjYWxjU2hhcGUodCxyLGE9ITEpe2xldCBpPXQubGVuZ3RoLHM9ci5sZW5ndGg7aWYoaT09PTApcmV0dXJuIHI7aWYocz09PTApcmV0dXJuIHQ7bGV0IG89TWF0aC5tYXgodC5sZW5ndGgsci5sZW5ndGgpLGM9bmV3IEFycmF5KG8pO2lmKGEpe2lmKGk8Mnx8czwyKXJldHVybjtsZXQgcD1HYS5jYWxjTWF0TXVsU2hhcGUoW3RbaS0yXSx0W2ktMV1dLFtyW3MtMl0scltzLTFdXSk7aWYocD09PXZvaWQgMClyZXR1cm47W2Nbby0yXSxjW28tMV1dPXB9Zm9yKGxldCBwPWE/MzoxO3A8PW87cCsrKXtsZXQgbT1pLXA8MD8xOnRbaS1wXSxsPXMtcDwwPzE6cltzLXBdO2lmKG0hPT1sJiZtPjEmJmw+MSlyZXR1cm47Y1tvLXBdPU1hdGgubWF4KG0sbCl9cmV0dXJuIGN9c3RhdGljIGlzVmFsaWRCcm9hZGNhc3QodCxyKXtsZXQgYT10Lmxlbmd0aCxpPXIubGVuZ3RoO2lmKGE+aSlyZXR1cm4hMTtmb3IobGV0IHM9MTtzPD1hO3MrKylpZih0W2Etc10hPT0xJiZ0W2Etc10hPT1yW2ktc10pcmV0dXJuITE7cmV0dXJuITB9fSxOPWNsYXNzIGV7c3RhdGljIHNpemUodCl7cmV0dXJuIGUuZ2V0U2l6ZUZyb21EaW1lbnNpb25SYW5nZSh0LDAsdC5sZW5ndGgpfXN0YXRpYyBzaXplRnJvbURpbWVuc2lvbih0LHIpe2lmKHI8MHx8cj50Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgZGltZW5zaW9uIG9mICR7cn0gZm9yIHNpemVGcm9tRGltZW5zaW9uIGFzIFRlbnNvciBoYXMgJHt0Lmxlbmd0aH0gZGltZW5zaW9ucy5gKTtyZXR1cm4gZS5nZXRTaXplRnJvbURpbWVuc2lvblJhbmdlKHQscix0Lmxlbmd0aCl9c3RhdGljIHNpemVUb0RpbWVuc2lvbih0LHIpe2lmKHI8MHx8cj50Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgZGltZW5zaW9uIG9mICR7cn0gZm9yIHNpemVUb0RpbWVuc2lvbiBhcyBUZW5zb3IgaGFzICR7dC5sZW5ndGh9IGRpbWVuc2lvbnMuYCk7cmV0dXJuIGUuZ2V0U2l6ZUZyb21EaW1lbnNpb25SYW5nZSh0LDAscil9c3RhdGljIGdldFNpemVGcm9tRGltZW5zaW9uUmFuZ2UodCxyLGEpe2xldCBpPTE7Zm9yKGxldCBzPXI7czxhO3MrKyl7aWYodFtzXTwwKXRocm93IG5ldyBFcnJvcihcImNhbm5vdCBnZXQgdmFsaWQgc2l6ZSBmcm9tIHNwZWNpZmllZCBkaW1lbnNpb24gcmFuZ2UuIE1vc3QgbGlrZWx5IHRoZSByYW5nZSBjb250YWlucyBuZWdhdGl2ZSB2YWx1ZXMgaW4gdGhlbS5cIik7aSo9dFtzXX1yZXR1cm4gaX1zdGF0aWMgY29tcHV0ZVN0cmlkZXModCl7bGV0IHI9dC5sZW5ndGg7aWYocj09PTApcmV0dXJuW107aWYocj09PTEpcmV0dXJuWzFdO2xldCBhPW5ldyBBcnJheShyKTthW3ItMV09MSxhW3ItMl09dFtyLTFdO2ZvcihsZXQgaT1yLTM7aT49MDstLWkpYVtpXT1hW2krMV0qdFtpKzFdO3JldHVybiBhfXN0YXRpYyBub3JtYWxpemVBeGlzKHQscil7aWYodDwtciYmdD49cil0aHJvdyBuZXcgRXJyb3IoXCJ1bnN1cHBvcnRlZCBheGlzIGZvciB0aGlzIG9wZXJhdGlvbi5cIik7cmV0dXJuIHQ8MD90K3I6dH1zdGF0aWMgbm9ybWFsaXplQXhlcyh0LHIpe3JldHVybiB0Lm1hcChhPT50aGlzLm5vcm1hbGl6ZUF4aXMoYSxyPz90Lmxlbmd0aCkpfXN0YXRpYyBzb3J0QmFzZWRPblBlcm0odCxyKXtyZXR1cm4gcj9yLm1hcChhPT50W2FdKTp0LnNsaWNlKCkucmV2ZXJzZSgpfXN0YXRpYyBwYWRTaGFwZSh0LHIpe2xldCBhPXQubGVuZ3RoO3JldHVybiB0Lm1hcCgoaSxzKT0+aStyW3NdK3JbcythXSl9c3RhdGljIGFyZUVxdWFsKHQscil7cmV0dXJuIHQubGVuZ3RoIT09ci5sZW5ndGg/ITE6dC5ldmVyeSgoYSxpKT0+YT09PXJbaV0pfX0sb3I9Y2xhc3MgZXtzdGF0aWMgYWRqdXN0UG9vbEF0dHJpYnV0ZXModCxyLGEsaSxzLG8pe2lmKCF0JiZhLmxlbmd0aCE9PXIubGVuZ3RoLTIpdGhyb3cgbmV3IEVycm9yKFwibGVuZ3RoIG9mIHNwZWNpZmllZCBrZXJuZWwgc2hhcGVzIHNob3VsZCBiZSAyIGxlc3MgdGhhbiBsZW5ndGggb2YgaW5wdXQgZGltZW5zaW9uc1wiKTtpZih0KWZvcihsZXQgYz0wO2M8ci5sZW5ndGgtMjtjKyspYz49YS5sZW5ndGg/YS5wdXNoKHJbYysyXSk6YVtjXT1yW2MrMl07Zm9yKGxldCBjPTA7YzxhLmxlbmd0aDtjKyspaWYoYzxpLmxlbmd0aCl7aWYoaVtjXTwwKXRocm93IG5ldyBFcnJvcihcInN0cmlkZXMgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAxXCIpfWVsc2UgaS5wdXNoKDEpO2ZvcihsZXQgYz0wO2M8YS5sZW5ndGg7YysrKWlmKGM8cy5sZW5ndGgpe2lmKHNbY108MCl0aHJvdyBuZXcgRXJyb3IoXCJkaWxhdGlvbnMgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAxXCIpfWVsc2Ugcy5wdXNoKDEpO2ZvcihsZXQgYz0wO2M8YS5sZW5ndGgqMjtjKyspaWYoYzxvLmxlbmd0aCl7aWYob1tjXTwwKXRocm93IG5ldyBFcnJvcihcInBhZCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDFcIil9ZWxzZSBvLnB1c2goMCk7Zm9yKGxldCBjPTA7YzxhLmxlbmd0aDtjKyspe2lmKGFbY108PTApdGhyb3cgbmV3IEVycm9yKFwia2VybmVsIHNoYXBlcyBuZWVkIHRvIGJlIGdyZWF0ZXIgdGhhbiAwXCIpO2lmKG9bY10+PWFbY118fG9bYythLmxlbmd0aF0+PWFbY10pdGhyb3cgbmV3IEVycm9yKFwicGFkcyBzaG91bGQgYmUgc21hbGxlciB0aGFuIGtlcm5lbFwiKX19c3RhdGljIGFkanVzdFBhZHNCYXNlZE9uQXV0b1BhZCh0LHIsYSxpLHMsbyxjKXtpZihjKXtpZihzLmxlbmd0aCE9PTIqKHQubGVuZ3RoLTIpKXRocm93IG5ldyBFcnJvcihcImxlbmd0aCBvZiBwYWRzIHNob3VsZCBiZSB0d2ljZSB0aGUgbGVuZ3RoIG9mIGRhdGEgZGltZW5zaW9uc1wiKTtpZihyLmxlbmd0aCE9PXQubGVuZ3RoLTIpdGhyb3cgbmV3IEVycm9yKFwibGVuZ3RoIG9mIHN0cmlkZXMgc2hvdWxkIGJlIHRoZSBsZW5ndGggb2YgZGF0YSBkaW1lbnNpb25zXCIpO2lmKGkubGVuZ3RoIT09dC5sZW5ndGgtMil0aHJvdyBuZXcgRXJyb3IoXCJsZW5ndGggb2Yga2VybmVsIHNoYXBlcyBzaG91bGQgYmUgdGhlIGxlbmd0aCBvZiBkYXRhIGRpbWVuc2lvbnNcIik7Zm9yKGxldCBwPTA7cDx0Lmxlbmd0aC0yO3ArKyllLmFkanVzdFBhZEFuZFJldHVyblNoYXBlKHRbcCsobz8xOjIpXSxyW3BdLGFbcF0saVtwXSxzLHAscCt0Lmxlbmd0aC0yLGMpfX1zdGF0aWMgY29tcHV0ZVBvb2xPdXRwdXRTaGFwZSh0LHIsYSxpLHMsbyxjKXtpZihyLmxlbmd0aDw9MCl0aHJvdyBuZXcgRXJyb3IoXCJpbnB1dCBzaGFwZSBtdXN0IGJlIG9mIHNpemUgZ3JlYXRlciB0aGFuIDBcIik7bGV0IHA9W3JbMF0sclsxXV07cmV0dXJuIGUuY29tcHV0ZVNoYXBlSGVscGVyKHQscixwLGEsaSxzLG8sYykscH1zdGF0aWMgY29tcHV0ZUNvbnZPdXRwdXRTaGFwZSh0LHIsYSxpLHMsbyxjKXtpZih0Lmxlbmd0aDw9MHx8ci5sZW5ndGg8PTApdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBpbnB1dCB0ZW5zb3IgZGltcyBvciBpbnZhbGlkIGZpbHRlciB0ZW5zb3IgZGltc1wiKTtsZXQgcD1bdFswXSxyWzBdXTtyZXR1cm4gZS5jb21wdXRlU2hhcGVIZWxwZXIoITEsdCxwLGEsaSxzLG8sYykscH1zdGF0aWMgY29tcHV0ZVNoYXBlSGVscGVyKHQscixhLGkscyxvLGMscCl7aWYodClmb3IobGV0IG09MDttPHIubGVuZ3RoLTI7bSsrKWEucHVzaCgxKTtlbHNlIGZvcihsZXQgbT0wO208ci5sZW5ndGgtMjttKyspYS5wdXNoKGUuYWRqdXN0UGFkQW5kUmV0dXJuU2hhcGUoclttKzJdLGlbbV0sc1ttXSxvW21dLGMsbSxtK3IubGVuZ3RoLTIscCkpfXN0YXRpYyBhZGp1c3RQYWRBbmRSZXR1cm5TaGFwZSh0LHIsYSxpLHMsbyxjLHApe2xldCBtPWEqKGktMSkrMTtpZihwJiZwIT09XCJOT1RTRVRcIilzd2l0Y2gocCl7Y2FzZVwiVkFMSURcIjpyZXR1cm4gc1tvXT0wLHNbY109MCxNYXRoLmZsb29yKCh0LW0pL3IrMSk7Y2FzZVwiU0FNRV9MT1dFUlwiOmNhc2VcIlNBTUVfVVBQRVJcIjppZihhIT09MSl0aHJvdyBuZXcgRXJyb3IoXCJEaWxhdGlvbiBub3Qgc3VwcG9ydGVkIGZvciBTQU1FX1VQUEVSIG9yIFNBTUVfTE9XRVJcIik7e2xldCBnPSgodCtyLTEpL3ItMSkqcitpLXQ7cmV0dXJuIHNbb109TWF0aC5mbG9vcihwPT09XCJTQU1FX0xPV0VSXCI/KGcrMSkvMjpnLzIpLHNbY109Zy1zW29dLE1hdGguZmxvb3IoKHQrZy1pKS9yKzEpfWRlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgQXV0b1BhZCB0eXBlXCIpfWVsc2UgcmV0dXJuIE1hdGguZmxvb3IoKHQrc1tvXStzW2NdLW0pL3IrMSl9fSxMbj1jbGFzc3tzdGF0aWMgZ2V0U2hhcGVPZkdlbW1SZXN1bHQodCxyLGEsaSxzKXtpZih0Lmxlbmd0aCE9PTJ8fGEubGVuZ3RoIT09Mil0aHJvdyBuZXcgRXJyb3IoXCJzaGFwZSBuZWVkIHRvIGJlIG9mIHNpemUgMlwiKTtsZXQgbyxjLHA7cj8obz10WzFdLGM9dFswXSk6KG89dFswXSxjPXRbMV0pO2xldCBtPS0xO2lmKGk/KHA9YVswXSxtPTEpOihwPWFbMV0sbT0wKSxhW21dIT09Yyl0aHJvdyBuZXcgRXJyb3IoXCJkaW1lbnNpb24gbWlzbWF0Y2hcIik7aWYobzw9MHx8cDw9MHx8Yzw9MCl0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHNoYXBlIHNwZWNpZmllZFwiKTtpZihzJiYhQXQuaXNWYWxpZEJyb2FkY2FzdChzLFtvLHBdKSl0aHJvdyBuZXcgRXJyb3IoXCJnZW1tOiBpbnZhbGlkIGJpYXMgc2hhcGUgZm9yIGJyb2FkY2FzdFwiKTtyZXR1cm5bbyxwLGNdfX0sR249LTM0MDI4MjM0NjYzODUyODg2ZTIyLEZuPTM0MDI4MjM0NjYzODUyODg2ZTIyfSk7dmFyIHJjLHFhLEhlLF90LEwsTGUsUWUsU3QsZnQsY2UsamEsVyxKLHFuLEZhLFlvLHdyLF9lPVEoKCk9PntcInVzZSBzdHJpY3RcIjt6ZSgpO0NlKCk7cmM9NjQscWE9KGUsdCk9PntpZih0PT09Myl0aHJvdyBuZXcgRXJyb3IoXCJ2ZWMzIGhhcyBzYW1lIGFsaWdubWVudCBhcyB2ZWM0LCB1c2UgdmVjNCBpbnN0ZWFkXCIpO3N3aXRjaChlKXtjYXNlIDEwOnJldHVybiB0PjE/YHZlYyR7dH08ZjE2PmA6XCJmMTZcIjtjYXNlIDE6cmV0dXJuIHQ+MT9gdmVjJHt0fTxmMzI+YDpcImYzMlwiO2Nhc2UgNjpyZXR1cm4gdD4xP2B2ZWMke3R9PGkzMj5gOlwiaTMyXCI7Y2FzZSAxMjpyZXR1cm4gdD4xP2B2ZWMke3R9PHUzMj5gOlwidTMyXCI7Y2FzZSA3OmlmKHQ+MSl0aHJvdyBuZXcgRXJyb3IoXCJjdXJyZW50bHkgbm90IHN1cHBvcnRlZCB2ZWNYIG9mIHVpbnQ2NCB5ZXRcIik7cmV0dXJuW1widmVjMjx1MzI+XCIsXCJpMzJcIl07Y2FzZSAxMzppZih0PjEpdGhyb3cgbmV3IEVycm9yKFwiY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQgdmVjWCBvZiB1aW50NjQgeWV0XCIpO3JldHVybltcInZlYzI8dTMyPlwiLFwidTMyXCJdO2Nhc2UgOTppZih0IT09NCl0aHJvdyBuZXcgRXJyb3IoXCJib29sIG11c3QgYmUgdmVjNFwiKTtyZXR1cm5bXCJ1MzJcIixcInZlYzQ8Ym9vbD5cIl07ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gZGF0YSB0eXBlOiAke2V9YCl9fSxIZT0oZSx0PTEpPT57bGV0IHI9cWEoZSx0KTtyZXR1cm4gdHlwZW9mIHI9PVwic3RyaW5nXCI/cjpyWzBdfSxfdD0oZSx0PTEpPT57bGV0IHI9cWEoZSx0KTtyZXR1cm4gdHlwZW9mIHI9PVwic3RyaW5nXCI/cjpyWzFdfSxMPWU9PmUubGVuZ3RoPT09MD9bXTpbe3R5cGU6XCJ1aW50MzJcIixkYXRhOmV9LHt0eXBlOlwidWludDMyXCIsZGF0YTpOLmNvbXB1dGVTdHJpZGVzKGUpfV0sTGU9ZT0+ZSU0PT09MD80OmUlMj09PTA/MjoxLFFlPShlPVwiZjMyXCIsdCxyPVwiMFwiKT0+IXR8fHQ9PT0xP2Ake2V9KCR7cn0pYDpgdmVjJHt0fTwke2V9Pigke3J9KWAsU3Q9KGUsdCxyKT0+ZT09PVwiZjMyXCI/cjp0PT09MT9gZjMyKCR7cn0pYDpgdmVjJHt0fWYoJHtyfSlgLGZ0PShlLHQpPT50PT09ND9gKCR7ZX0ueCArICR7ZX0ueSArICR7ZX0ueiArICR7ZX0udylgOnQ9PT0yP2AoJHtlfS54ICsgJHtlfS55KWA6dD09PTM/YCgke2V9LnggKyAke2V9LnkgKyAke2V9LnopYDplLGNlPShlLHQscixhKT0+ZS5zdGFydHNXaXRoKFwidW5pZm9ybXMuXCIpJiZyPjQ/dHlwZW9mIHQ9PVwic3RyaW5nXCI/YT09PVwiZjE2XCI/YCR7ZX1bKCR7dH0pIC8gOF1bKCR7dH0pICUgOCAvIDRdWygke3R9KSAlIDggJSA0XWA6YCR7ZX1bKCR7dH0pIC8gNF1bKCR7dH0pICUgNF1gOmE9PT1cImYxNlwiP2Ake2V9WyR7TWF0aC5mbG9vcih0LzgpfV1bJHtNYXRoLmZsb29yKHQlOC80KX1dWyR7dCU4JTR9XWA6YCR7ZX1bJHtNYXRoLmZsb29yKHQvNCl9XVske3QlNH1dYDpyPjE/YCR7ZX1bJHt0fV1gOmUsamE9KGUsdCxyLGEsaSk9PntsZXQgcz10eXBlb2Ygcj09XCJudW1iZXJcIixvPXM/cjpyLmxlbmd0aCxjPVsuLi5uZXcgQXJyYXkobykua2V5cygpXSxwPW88Mj9cInUzMlwiOm88PTQ/YHZlYyR7b308dTMyPmA6YGFycmF5PHUzMiwgJHtvfT5gLG09cWEodCxpKSxsPXR5cGVvZiBtPT1cInN0cmluZ1wiP206bVsxXSxnPXR5cGVvZiBtPT1cInN0cmluZ1wiP206bVswXSxiPXtpbmRpY2VzOnAsdmFsdWU6bCxzdG9yYWdlOmcsdGVuc29yOnR9LHc9Rj0+dHlwZW9mIEY9PVwic3RyaW5nXCI/RjpgJHtGfXVgLCQ9e29mZnNldFRvSW5kaWNlczohMSxpbmRpY2VzVG9PZmZzZXQ6ITEsYnJvYWRjYXN0ZWRJbmRpY2VzVG9PZmZzZXQ6ITEsc2V0OiExLHNldEJ5SW5kaWNlczohMSxnZXQ6ITEsZ2V0QnlJbmRpY2VzOiExfSx4PXM/XCJ1bmlmb3Jtcy5cIjpcIlwiLFQ9YCR7eH0ke2V9X3NoYXBlYCxDPWAke3h9JHtlfV9zdHJpZGVzYCxTPVwiXCI7Zm9yKGxldCBGPTA7RjxvLTE7RisrKVMrPWBcbiAgICBsZXQgZGltJHtGfSA9IGN1cnJlbnQgLyAke2NlKEMsRixvKX07XG4gICAgbGV0IHJlc3Qke0Z9ID0gY3VycmVudCAlICR7Y2UoQyxGLG8pfTtcbiAgICBpbmRpY2VzWyR7Rn1dID0gZGltJHtGfTtcbiAgICBjdXJyZW50ID0gcmVzdCR7Rn07XG4gICAgYDtTKz1gaW5kaWNlc1ske28tMX1dID0gY3VycmVudDtgO2xldCBFPW88Mj9cIlwiOmBcbiAgZm4gbzJpXyR7ZX0ob2Zmc2V0OiB1MzIpIC0+ICR7Yi5pbmRpY2VzfSB7XG4gICAgdmFyIGluZGljZXM6ICR7Yi5pbmRpY2VzfTtcbiAgICB2YXIgY3VycmVudCA9IG9mZnNldDtcbiAgICAke1N9XG4gICAgcmV0dXJuIGluZGljZXM7XG4gIH1gLE89Rj0+KCQub2Zmc2V0VG9JbmRpY2VzPSEwLG88Mj9GOmBvMmlfJHtlfSgke0Z9KWApLFU9W107aWYobz49Milmb3IobGV0IEY9by0xO0Y+PTA7Ri0tKVUucHVzaChgJHtjZShDLEYsbyl9ICogKGluZGljZXNbJHtGfV0pYCk7bGV0IEQ9bzwyP1wiXCI6YFxuICBmbiBpMm9fJHtlfShpbmRpY2VzOiAke2IuaW5kaWNlc30pIC0+IHUzMiB7XG4gICAgcmV0dXJuICR7VS5qb2luKFwiK1wiKX07XG4gIH1gLFY9Rj0+KCQuaW5kaWNlc1RvT2Zmc2V0PSEwLG88Mj9GOmBpMm9fJHtlfSgke0Z9KWApLFk9KC4uLkYpPT5vPT09MD9cIjB1XCI6YCR7Yi5pbmRpY2VzfSgke0YubWFwKHcpLmpvaW4oXCIsXCIpfSlgLHNlPShGLGllKT0+bzwyP2Ake0Z9YDpgJHtjZShGLGllLG8pfWAsQj0oRixpZSxoZSk9Pm88Mj9gJHtGfT0ke2hlfTtgOmAke2NlKEYsaWUsbyl9PSR7aGV9O2AsdGU9e30sa2U9KEYsaWUpPT57JC5icm9hZGNhc3RlZEluZGljZXNUb09mZnNldD0hMDtsZXQgaGU9YCR7aWUubmFtZX1icm9hZGNhc3RlZEluZGljZXNUbyR7ZX1PZmZzZXRgO2lmKGhlIGluIHRlKXJldHVybmAke2hlfSgke0Z9KWA7bGV0IEplPVtdO2ZvcihsZXQgb3Q9by0xO290Pj0wO290LS0pe2xldCBSZT1pZS5pbmRpY2VzR2V0KFwib3V0cHV0SW5kaWNlc1wiLG90K2llLnJhbmstbyk7SmUucHVzaChgJHtzZShDLG90KX0gKiAoJHtSZX0gJSAke3NlKFQsb3QpfSlgKX1yZXR1cm4gdGVbaGVdPWBmbiAke2hlfShvdXRwdXRJbmRpY2VzOiAke2llLnR5cGUuaW5kaWNlc30pIC0+IHUzMiB7XG4gICAgICAgICAgICAgcmV0dXJuICR7SmUubGVuZ3RoPjA/SmUuam9pbihcIitcIik6XCIwdVwifTtcbiAgICAgICAgICAgfWAsYCR7aGV9KCR7Rn0pYH0sT2U9KEYsaWUpPT4oKCk9PntpZihiLnN0b3JhZ2U9PT1iLnZhbHVlKXJldHVybmAke2V9WyR7Rn1dPSR7aWV9O2A7aWYoYi5zdG9yYWdlPT09XCJ2ZWMyPHUzMj5cIiYmYi52YWx1ZT09PVwiaTMyXCIpcmV0dXJuYCR7ZX1bJHtGfV09dmVjMjx1MzI+KHUzMigke2llfSksIHNlbGVjdCgwdSwgMHhGRkZGRkZGRnUsICR7aWV9IDwgMCkpO2A7aWYoYi5zdG9yYWdlPT09XCJ2ZWMyPHUzMj5cIiYmYi52YWx1ZT09PVwidTMyXCIpcmV0dXJuYCR7ZX1bJHtGfV09dmVjMjx1MzI+KHUzMigke2llfSksIDB1KTtgO2lmKGIuc3RvcmFnZT09PVwidTMyXCImJmIudmFsdWU9PT1cInZlYzQ8Ym9vbD5cIilyZXR1cm5gJHtlfVske0Z9XT1kb3QodmVjNDx1MzI+KDB4MSwgMHgxMDAsIDB4MTAwMDAsIDB4MTAwMDAwMCksIHZlYzQ8dTMyPigke2llfSkpO2A7dGhyb3cgbmV3IEVycm9yKGBub3Qgc3VwcG9ydGVkIGNvbWJpbmF0aW9uIG9mIHN0b3JhZ2UgdHlwZSAke2Iuc3RvcmFnZX0gYW5kIHZhbHVlIHR5cGUgJHtiLnZhbHVlfSB5ZXRgKX0pKCksZWU9Rj0+KCgpPT57aWYoYi5zdG9yYWdlPT09Yi52YWx1ZSlyZXR1cm5gJHtlfVske0Z9XWA7aWYoYi5zdG9yYWdlPT09XCJ2ZWMyPHUzMj5cIiYmYi52YWx1ZT09PVwiaTMyXCIpcmV0dXJuYGkzMigke2V9WyR7Rn1dLngpYDtpZihiLnN0b3JhZ2U9PT1cInZlYzI8dTMyPlwiJiZiLnZhbHVlPT09XCJ1MzJcIilyZXR1cm5gdTMyKCR7ZX1bJHtGfV0ueClgO2lmKGIuc3RvcmFnZT09PVwidTMyXCImJmIudmFsdWU9PT1cInZlYzQ8Ym9vbD5cIilyZXR1cm5gdmVjNDxib29sPihib29sKCR7ZX1bJHtGfV0gJiAweEZGdSksIGJvb2woJHtlfVske0Z9XSAmIDB4RkYwMHUpLCBib29sKCR7ZX1bJHtGfV0gJiAweEZGMDAwMHUpLCBib29sKCR7ZX1bJHtGfV0gJiAweEZGMDAwMDAwdSkpYDt0aHJvdyBuZXcgRXJyb3IoYG5vdCBzdXBwb3J0ZWQgY29tYmluYXRpb24gb2Ygc3RvcmFnZSB0eXBlICR7Yi5zdG9yYWdlfSBhbmQgdmFsdWUgdHlwZSAke2IudmFsdWV9IHlldGApfSkoKSxiZT1vPDI/XCJcIjpgXG4gIGZuIGdldF8ke2V9QnlJbmRpY2VzKGluZGljZXM6ICR7Yi5pbmRpY2VzfSkgLT4gJHtsfSB7XG4gICAgcmV0dXJuICR7ZWUoYGkyb18ke2V9KGluZGljZXMpYCl9O1xuICB9YCxVZT1vPDI/XCJcIjooKCk9PntsZXQgRj1jLm1hcChoZT0+YGQke2hlfTogdTMyYCkuam9pbihcIiwgXCIpLGllPWMubWFwKGhlPT5gZCR7aGV9YCkuam9pbihcIiwgXCIpO3JldHVybmBcbiAgZm4gZ2V0XyR7ZX0oJHtGfSkgLT4gJHtsfSB7XG4gICAgcmV0dXJuIGdldF8ke2V9QnlJbmRpY2VzKCR7WShpZSl9KTtcbiAgfWB9KSgpLHBlPSguLi5GKT0+e2lmKEYubGVuZ3RoIT09byl0aHJvdyBuZXcgRXJyb3IoYGluZGljZXMgbGVuZ3RoIG11c3QgYmUgJHtvfWApO2xldCBpZT1GLm1hcCh3KS5qb2luKFwiLFwiKTtyZXR1cm4gbz09PTA/ZWUoXCIwdVwiKTpvPT09MT9lZShpZVswXSk6KCQuZ2V0PSEwLCQuZ2V0QnlJbmRpY2VzPSEwLCQuaW5kaWNlc1RvT2Zmc2V0PSEwLGBnZXRfJHtlfSgke2llfSlgKX0seWU9Rj0+bzwyP2VlKEYpOigkLmdldEJ5SW5kaWNlcz0hMCwkLmluZGljZXNUb09mZnNldD0hMCxgZ2V0XyR7ZX1CeUluZGljZXMoJHtGfSlgKSxkZT1vPDI/XCJcIjpgXG4gIGZuIHNldF8ke2V9QnlJbmRpY2VzKGluZGljZXM6ICR7Yi5pbmRpY2VzfSwgdmFsdWU6ICR7bH0pIHtcbiAgICAke09lKGBpMm9fJHtlfShpbmRpY2VzKWAsXCJ2YWx1ZVwiKX1cbiAgfWAsdmU9bzwyP1wiXCI6KCgpPT57bGV0IEY9Yy5tYXAoaGU9PmBkJHtoZX06IHUzMmApLmpvaW4oXCIsIFwiKSxpZT1jLm1hcChoZT0+YGQke2hlfWApLmpvaW4oXCIsIFwiKTtyZXR1cm5gXG4gIGZuIHNldF8ke2V9KCR7Rn0sIHZhbHVlOiAke2x9KSB7XG4gICAgc2V0XyR7ZX1CeUluZGljZXMoJHtZKGllKX0sIHZhbHVlKTtcbiAgfWB9KSgpO3JldHVybntpbXBsOigpPT57bGV0IEY9W10saWU9ITE7cmV0dXJuICQub2Zmc2V0VG9JbmRpY2VzJiYoRi5wdXNoKEUpLGllPSEwKSwkLmluZGljZXNUb09mZnNldCYmKEYucHVzaChEKSxpZT0hMCksJC5icm9hZGNhc3RlZEluZGljZXNUb09mZnNldCYmKE9iamVjdC52YWx1ZXModGUpLmZvckVhY2goaGU9PkYucHVzaChoZSkpLGllPSEwKSwkLnNldCYmKEYucHVzaCh2ZSksaWU9ITApLCQuc2V0QnlJbmRpY2VzJiYoRi5wdXNoKGRlKSxpZT0hMCksJC5nZXQmJihGLnB1c2goVWUpLGllPSEwKSwkLmdldEJ5SW5kaWNlcyYmKEYucHVzaChiZSksaWU9ITApLCFzJiZpZSYmRi51bnNoaWZ0KGBjb25zdCAke1R9ID0gJHtiLmluZGljZXN9KCR7ci5qb2luKFwiLFwiKX0pO2AsYGNvbnN0ICR7Q30gPSAke2IuaW5kaWNlc30oJHtOLmNvbXB1dGVTdHJpZGVzKHIpLmpvaW4oXCIsXCIpfSk7YCksRi5qb2luKGBcbmApfSx0eXBlOmIsb2Zmc2V0VG9JbmRpY2VzOk8saW5kaWNlc1RvT2Zmc2V0OlYsYnJvYWRjYXN0ZWRJbmRpY2VzVG9PZmZzZXQ6a2UsaW5kaWNlczpZLGluZGljZXNHZXQ6c2UsaW5kaWNlc1NldDpCLHNldDooLi4uRik9PntpZihGLmxlbmd0aCE9PW8rMSl0aHJvdyBuZXcgRXJyb3IoYGluZGljZXMgbGVuZ3RoIG11c3QgYmUgJHtvfWApO2xldCBpZT1GW29dO2lmKHR5cGVvZiBpZSE9XCJzdHJpbmdcIil0aHJvdyBuZXcgRXJyb3IoXCJ2YWx1ZSBtdXN0IGJlIHN0cmluZ1wiKTtsZXQgaGU9Ri5zbGljZSgwLG8pLm1hcCh3KS5qb2luKFwiLFwiKTtyZXR1cm4gbz09PTA/T2UoXCIwdVwiLGllKTpvPT09MT9PZShoZVswXSxpZSk6KCQuc2V0PSEwLCQuc2V0QnlJbmRpY2VzPSEwLCQuaW5kaWNlc1RvT2Zmc2V0PSEwLGBzZXRfJHtlfSgke2hlfSwgJHtpZX0pYCl9LHNldEJ5T2Zmc2V0Ok9lLHNldEJ5SW5kaWNlczooRixpZSk9Pm88Mj9PZShGLGllKTooJC5zZXRCeUluZGljZXM9ITAsJC5pbmRpY2VzVG9PZmZzZXQ9ITAsYHNldF8ke2V9QnlJbmRpY2VzKCR7Rn0sICR7aWV9KTtgKSxnZXQ6cGUsZ2V0QnlPZmZzZXQ6ZWUsZ2V0QnlJbmRpY2VzOnllLHVzYWdlOmEsbmFtZTplLHN0cmlkZXM6QyxzaGFwZTpULHJhbms6b319LFc9KGUsdCxyLGE9MSk9PmphKGUsdCxyLFwiaW5wdXRcIixhKSxKPShlLHQscixhPTEpPT5qYShlLHQscixcIm91dHB1dFwiLGEpLHFuPShlLHQscixhPTEpPT5qYShlLHQscixcImludGVybmFsXCIsYSksRmE9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5ub3JtYWxpemVkRGlzcGF0Y2hHcm91cD10O3RoaXMuaW50ZXJuYWxWYXJpYWJsZXM9W107dGhpcy52YXJpYWJsZXM9W107dGhpcy51bmlmb3Jtcz1bXTt0aGlzLnZhcmlhYmxlSW5kZXg9MH1ndWFyZEFnYWluc3RPdXRPZkJvdW5kc1dvcmtncm91cFNpemVzKHQpe3JldHVybmBpZiAoZ2xvYmFsX2lkeCA+PSAke3R5cGVvZiB0PT1cIm51bWJlclwiP2Ake3R9dWA6dH0pIHsgcmV0dXJuOyB9YH1tYWluU3RhcnQodD1yYyl7bGV0IHI9dHlwZW9mIHQ9PVwibnVtYmVyXCI/dDp0WzBdLGE9dHlwZW9mIHQ9PVwibnVtYmVyXCI/MTp0WzFdLGk9dHlwZW9mIHQ9PVwibnVtYmVyXCI/MTp0WzJdLHM9dGhpcy5ub3JtYWxpemVkRGlzcGF0Y2hHcm91cFsxXT09PTEmJnRoaXMubm9ybWFsaXplZERpc3BhdGNoR3JvdXBbMl09PT0xLG89cz9gQGJ1aWx0aW4oZ2xvYmFsX2ludm9jYXRpb25faWQpIGdsb2JhbF9pZCA6IHZlYzM8dTMyPixcbiAgICBAYnVpbHRpbih3b3JrZ3JvdXBfaWQpIHdvcmtncm91cF9pZCA6IHZlYzM8dTMyPixcbiAgICBAYnVpbHRpbihsb2NhbF9pbnZvY2F0aW9uX2lkKSBsb2NhbF9pZCA6IHZlYzM8dTMyPmA6YEBidWlsdGluKGxvY2FsX2ludm9jYXRpb25faWQpIGxvY2FsX2lkIDogdmVjMzx1MzI+LFxuICAgIEBidWlsdGluKGxvY2FsX2ludm9jYXRpb25faW5kZXgpIGxvY2FsX2lkeCA6IHUzMixcbiAgICBAYnVpbHRpbih3b3JrZ3JvdXBfaWQpIHdvcmtncm91cF9pZCA6IHZlYzM8dTMyPixcbiAgICBAYnVpbHRpbihudW1fd29ya2dyb3VwcykgbnVtX3dvcmtncm91cHMgOiB2ZWMzPHUzMj5gLGM9cz9cImxldCBnbG9iYWxfaWR4ID0gZ2xvYmFsX2lkLng7IGxldCBsb2NhbF9pZHggPSBsb2NhbF9pZC54O1wiOmBsZXQgZ2xvYmFsX2lkeCA9ICh3b3JrZ3JvdXBfaWQueiAqIG51bV93b3JrZ3JvdXBzWzBdICogbnVtX3dvcmtncm91cHNbMV0gK1xuICAgICAgICAgIHdvcmtncm91cF9pZC55ICogbnVtX3dvcmtncm91cHNbMF0gKyB3b3JrZ3JvdXBfaWQueCkgKiAke3IqYSppfXUgKyBsb2NhbF9pZHg7YDtyZXR1cm5gQGNvbXB1dGUgQHdvcmtncm91cF9zaXplKCR7cn0sICR7YX0sICR7aX0pXG4gIGZuIG1haW4oJHtvfSkge1xuICAgICR7Y31cbiAgYH1hcHBlbmRWYXJpYWJsZVVuaWZvcm1zKHQpe3QucmFuayE9PTAmJih0LnNoYXBlLnN0YXJ0c1dpdGgoXCJ1bmlmb3Jtcy5cIikmJnRoaXMudW5pZm9ybXMucHVzaCh7bmFtZTp0LnNoYXBlLnJlcGxhY2UoXCJ1bmlmb3Jtcy5cIixcIlwiKSx0eXBlOlwidTMyXCIsbGVuZ3RoOnQucmFua30pLHQuc3RyaWRlcy5zdGFydHNXaXRoKFwidW5pZm9ybXMuXCIpJiZ0aGlzLnVuaWZvcm1zLnB1c2goe25hbWU6dC5zdHJpZGVzLnJlcGxhY2UoXCJ1bmlmb3Jtcy5cIixcIlwiKSx0eXBlOlwidTMyXCIsbGVuZ3RoOnQucmFua30pKX1kZWNsYXJlVmFyaWFibGUodCxyKXtpZih0LnVzYWdlPT09XCJpbnRlcm5hbFwiKXRocm93IG5ldyBFcnJvcihcImNhbm5vdCB1c2UgaW50ZXJuYWwgdmFyaWFibGUgd2l0aCBkZWNsYXJlVmFyaWFibGUoKS4gdXNlIHJlZ2lzdGVySW50ZXJuYWxWYXJpYWJsZXMoKSBpbnN0ZWFkLlwiKTt0aGlzLnZhcmlhYmxlcy5wdXNoKHQpLHRoaXMuYXBwZW5kVmFyaWFibGVVbmlmb3Jtcyh0KTtsZXQgYT10LnVzYWdlPT09XCJpbnB1dFwiP1wicmVhZFwiOlwicmVhZF93cml0ZVwiLGk9dC50eXBlLnN0b3JhZ2U7cmV0dXJuYEBncm91cCgwKSBAYmluZGluZygke3J9KSB2YXI8c3RvcmFnZSwgJHthfT4gJHt0Lm5hbWV9OiBhcnJheTwke2l9PjtgfWRlY2xhcmVWYXJpYWJsZXMoLi4udCl7cmV0dXJuIHQubWFwKHI9PnRoaXMuZGVjbGFyZVZhcmlhYmxlKHIsdGhpcy52YXJpYWJsZUluZGV4KyspKS5qb2luKGBcbmApfXJlZ2lzdGVySW50ZXJuYWxWYXJpYWJsZSh0KXtpZih0LnVzYWdlIT09XCJpbnRlcm5hbFwiKXRocm93IG5ldyBFcnJvcihcImNhbm5vdCB1c2UgaW5wdXQgb3Igb3V0cHV0IHZhcmlhYmxlIHdpdGggcmVnaXN0ZXJJbnRlcm5hbFZhcmlhYmxlKCkuIHVzZSBkZWNsYXJlVmFyaWFibGVzKCkgaW5zdGVhZC5cIik7dGhpcy5pbnRlcm5hbFZhcmlhYmxlcy5wdXNoKHQpLHRoaXMuYXBwZW5kVmFyaWFibGVVbmlmb3Jtcyh0KX1yZWdpc3RlckludGVybmFsVmFyaWFibGVzKC4uLnQpe3JldHVybiB0LmZvckVhY2gocj0+dGhpcy5yZWdpc3RlckludGVybmFsVmFyaWFibGUocikpLHRoaXN9cmVnaXN0ZXJVbmlmb3JtKHQscixhPTEpe3JldHVybiB0aGlzLnVuaWZvcm1zLnB1c2goe25hbWU6dCx0eXBlOnIsbGVuZ3RoOmF9KSx0aGlzfXJlZ2lzdGVyVW5pZm9ybXModCl7cmV0dXJuIHRoaXMudW5pZm9ybXM9dGhpcy51bmlmb3Jtcy5jb25jYXQodCksdGhpc311bmlmb3JtRGVjbGFyYXRpb24oKXtpZih0aGlzLnVuaWZvcm1zLmxlbmd0aD09PTApcmV0dXJuXCJcIjtsZXQgdD1bXTtmb3IobGV0e25hbWU6cix0eXBlOmEsbGVuZ3RoOml9b2YgdGhpcy51bmlmb3JtcylpZihpJiZpPjQpYT09PVwiZjE2XCI/dC5wdXNoKGBAYWxpZ24oMTYpICR7cn06YXJyYXk8bWF0Mng0PCR7YX0+LCAke01hdGguY2VpbChpLzgpfT5gKTp0LnB1c2goYCR7cn06YXJyYXk8dmVjNDwke2F9PiwgJHtNYXRoLmNlaWwoaS80KX0+YCk7ZWxzZXtsZXQgcz1pPT1udWxsfHxpPT09MT9hOmB2ZWMke2l9PCR7YX0+YDt0LnB1c2goYCR7cn06JHtzfWApfXJldHVybmBcbiAgICAgIHN0cnVjdCBVbmlmb3JtcyB7ICR7dC5qb2luKFwiLCBcIil9IH07XG4gICAgICBAZ3JvdXAoMCkgQGJpbmRpbmcoJHt0aGlzLnZhcmlhYmxlSW5kZXh9KSB2YXI8dW5pZm9ybT4gdW5pZm9ybXM6IFVuaWZvcm1zO2B9Z2V0IGFkZGl0aW9uYWxJbXBsZW1lbnRhdGlvbnMoKXtyZXR1cm4gdGhpcy51bmlmb3JtRGVjbGFyYXRpb24oKSt0aGlzLnZhcmlhYmxlcy5tYXAodD0+dC5pbXBsKCkpLmpvaW4oYFxuYCkrdGhpcy5pbnRlcm5hbFZhcmlhYmxlcy5tYXAodD0+dC5pbXBsKCkpLmpvaW4oYFxuYCl9fSxZbz1lPT5uZXcgRmEoZSksd3I9KGUsdCk9PntsZXQgcj1lLmxlbmd0aCxhPVtdO2ZvcihsZXQgaT0wO2k8cjtpKyspe2xldCBzPXItMS1pLG89ZVtzXXx8MTsodFt0Lmxlbmd0aC0xLWldfHwxKT4xJiZvPT09MSYmYS51bnNoaWZ0KHMpfXJldHVybiBhfX0pO3ZhciBuYyxabyxhYyxpYyx4dCxYbyxRbywkcj1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7Q2UoKTtYZSgpO19lKCk7bmM9ZT0+e2lmKCFlfHxlLmxlbmd0aCE9PTEpdGhyb3cgbmV3IEVycm9yKFwiVHJhbnNwb3NlIHJlcXVpcmVzIDEgaW5wdXQuXCIpfSxabz0oZSx0KT0+dCYmdC5sZW5ndGghPT1lP1suLi5uZXcgQXJyYXkoZSkua2V5cygpXS5yZXZlcnNlKCk6dCxhYz0oZSx0KT0+Ti5zb3J0QmFzZWRPblBlcm0oZSxabyhlLmxlbmd0aCx0KSksaWM9KGUsdCxyLGEpPT57bGV0IGk9W107aS5wdXNoKGBmbiBwZXJtKGk6ICR7YS50eXBlLmluZGljZXN9KSAtPiAke3IudHlwZS5pbmRpY2VzfSB7XG4gICAgdmFyIGE6ICR7ci50eXBlLmluZGljZXN9O2ApO2ZvcihsZXQgcz0wO3M8dDsrK3MpaS5wdXNoKHIuaW5kaWNlc1NldChcImFcIixlW3NdLGBpWyR7c31dYCkpO3JldHVybiBpLnB1c2goXCJyZXR1cm4gYTt9XCIpLGkuam9pbihgXG5gKX0seHQ9KGUsdCk9PntsZXQgcj1lLmRhdGFUeXBlLGE9ZS5kaW1zLmxlbmd0aCxpPVpvKGEsdCkscz1hYyhlLmRpbXMsaSksbz1KKFwib3V0cHV0XCIscixzLmxlbmd0aCksYz1XKFwiYVwiLHIsYSkscD1tPT5gXG4gICR7bS5yZWdpc3RlclVuaWZvcm0oXCJvdXRwdXRfc2l6ZVwiLFwidTMyXCIpLmRlY2xhcmVWYXJpYWJsZXMoYyxvKX1cblxuICAke2ljKGksYSxjLG8pfVxuXG4gICR7bS5tYWluU3RhcnQoKX1cbiAgICAke20uZ3VhcmRBZ2FpbnN0T3V0T2ZCb3VuZHNXb3JrZ3JvdXBTaXplcyhcInVuaWZvcm1zLm91dHB1dF9zaXplXCIpfVxuXG4gICAgbGV0IGluZGljZXMgPSAke28ub2Zmc2V0VG9JbmRpY2VzKFwiZ2xvYmFsX2lkeFwiKX07XG4gICAgbGV0IGFJbmRpY2VzID0gcGVybShpbmRpY2VzKTtcblxuICAgICR7by5zZXRCeU9mZnNldChcImdsb2JhbF9pZHhcIixjLmdldEJ5SW5kaWNlcyhcImFJbmRpY2VzXCIpKX1cbiAgfWA7cmV0dXJue25hbWU6XCJUcmFuc3Bvc2VcIixzaGFkZXJDYWNoZTp7aGludDpgJHt0fWAsaW5wdXREZXBlbmRlbmNpZXM6W1wicmFua1wiXX0sZ2V0UnVuRGF0YTptPT57bGV0IGw9Ti5zaXplKHMpO3JldHVybntvdXRwdXRzOlt7ZGltczpzLGRhdGFUeXBlOm1bMF0uZGF0YVR5cGV9XSxkaXNwYXRjaEdyb3VwOnt4Ok1hdGguY2VpbChsLzY0KX0scHJvZ3JhbVVuaWZvcm1zOlt7dHlwZTpcInVpbnQzMlwiLGRhdGE6bH0sLi4uTChtWzBdLmRpbXMpLC4uLkwocyldfX0sZ2V0U2hhZGVyU291cmNlOnB9fSxYbz0oZSx0KT0+e25jKGUuaW5wdXRzKSxlLmNvbXB1dGUoeHQoZS5pbnB1dHNbMF0sdC5wZXJtKSl9LFFvPWU9PnhlKHtwZXJtOmUucGVybX0pfSk7dmFyIG9jLHNjLHVjLGxjLGRjLGNjLHBjLGZjLG1jLGhjLFR0LEpvLGVzLHRzLHJzLG5zLGFzLGlzLG9zLHNzLHVzLGxzPVEoKCk9PntcInVzZSBzdHJpY3RcIjtDZSgpO19lKCk7am4oKTskcigpO29jPXttYXg6XCJzZWxlY3QoYmVzdFZhbHVlLCBjYW5kaWRhdGUsIGNhbmRpZGF0ZSA+IGJlc3RWYWx1ZSlcIixtaW46XCJzZWxlY3QoYmVzdFZhbHVlLCBjYW5kaWRhdGUsIGNhbmRpZGF0ZSA8IGJlc3RWYWx1ZSlcIixtZWFuOlwiYmVzdFZhbHVlICsgY2FuZGlkYXRlXCIsc3VtOlwiYmVzdFZhbHVlICsgY2FuZGlkYXRlXCIscHJvZDpcImJlc3RWYWx1ZSAqIGNhbmRpZGF0ZVwiLHN1bVNxdWFyZTpcImJlc3RWYWx1ZSArIGNhbmRpZGF0ZSAqIGNhbmRpZGF0ZVwiLGxvZ1N1bUV4cDpcImJlc3RWYWx1ZSArIGV4cChjYW5kaWRhdGUpXCIsbDE6XCJiZXN0VmFsdWUgKyBhYnMoY2FuZGlkYXRlKVwiLGwyOlwiYmVzdFZhbHVlICsgY2FuZGlkYXRlICogY2FuZGlkYXRlXCIsbG9nU3VtOlwiYmVzdFZhbHVlICsgY2FuZGlkYXRlXCJ9LHNjPXttYXg6XCJzZWxlY3QoYmVzdFZhbHVlLCBjYW5kaWRhdGUsIGNhbmRpZGF0ZSA+IGJlc3RWYWx1ZSlcIixtaW46XCJzZWxlY3QoYmVzdFZhbHVlLCBjYW5kaWRhdGUsIGNhbmRpZGF0ZSA8IGJlc3RWYWx1ZSlcIixtZWFuOlwiYmVzdFZhbHVlICsgY2FuZGlkYXRlXCIsc3VtOlwiYmVzdFZhbHVlICsgY2FuZGlkYXRlXCIscHJvZDpcImJlc3RWYWx1ZSAqIGNhbmRpZGF0ZVwiLHN1bVNxdWFyZTpcImJlc3RWYWx1ZSArIGNhbmRpZGF0ZVwiLGxvZ1N1bUV4cDpcImJlc3RWYWx1ZSArIGNhbmRpZGF0ZVwiLGwxOlwiYmVzdFZhbHVlICsgY2FuZGlkYXRlXCIsbDI6XCJiZXN0VmFsdWUgKyBjYW5kaWRhdGVcIixsb2dTdW06XCJiZXN0VmFsdWUgKyBjYW5kaWRhdGVcIn0sdWM9e21heDpcIl9BW29mZnNldF1cIixtaW46XCJfQVtvZmZzZXRdXCIsbWVhbjpcIjBcIixzdW06XCIwXCIscHJvZDpcIjFcIixzdW1TcXVhcmU6XCIwXCIsbG9nU3VtRXhwOlwiMFwiLGwxOlwiMFwiLGwyOlwiMFwiLGxvZ1N1bTpcIjBcIn0sbGM9e21heDpcImJlc3RWYWx1ZVwiLG1pbjpcImJlc3RWYWx1ZVwiLHN1bTpcImJlc3RWYWx1ZVwiLHByb2Q6XCJiZXN0VmFsdWVcIixzdW1TcXVhcmU6XCJiZXN0VmFsdWVcIixsb2dTdW1FeHA6XCJsb2coYmVzdFZhbHVlKVwiLGwxOlwiYmVzdFZhbHVlXCIsbDI6XCJzcXJ0KGJlc3RWYWx1ZSlcIixsb2dTdW06XCJsb2coYmVzdFZhbHVlKVwifSxkYz0oZSx0KT0+e2xldCByPVtdO2ZvcihsZXQgYT10LWU7YTx0OysrYSlyLnB1c2goYSk7cmV0dXJuIHJ9LGNjPShlLHQpPT57bGV0IHI9W10sYT1lLmxlbmd0aDtmb3IobGV0IHM9MDtzPGE7cysrKXQuaW5kZXhPZihzKT09PS0xJiZyLnB1c2goZVtzXSk7bGV0IGk9dC5tYXAocz0+ZVtzXSk7cmV0dXJuW3IsaV19LHBjPShlLHQpPT57bGV0IHI9ZS5sZW5ndGgrdC5sZW5ndGgsYT1bXSxpPTA7Zm9yKGxldCBzPTA7czxyO3MrKyl0LmluZGV4T2Yocyk9PT0tMT9hLnB1c2goZVtpKytdKTphLnB1c2goMSk7cmV0dXJuIGF9LGZjPShlLHQpPT57Zm9yKGxldCByPTA7cjxlLmxlbmd0aDsrK3IpaWYoZVtlLmxlbmd0aC1yLTFdIT09dC0xLXIpcmV0dXJuITE7cmV0dXJuITB9LG1jPShlLHQpPT57bGV0IHI9W107aWYoIWZjKGUsdCkpe2ZvcihsZXQgYT0wO2E8dDsrK2EpZS5pbmRleE9mKGEpPT09LTEmJnIucHVzaChhKTtlLmZvckVhY2goYT0+ci5wdXNoKGEpKX1yZXR1cm4gcn0saGM9KGUsdCxyLGEsaSxzLG8pPT57bGV0IGM9clswXS5kaW1zLHA9Ti5zaXplKHMpLG09Ti5zaXplKG8pLGw9VyhcIl9BXCIsclswXS5kYXRhVHlwZSxjKSxnPUooXCJvdXRwdXRcIixpLHMpLGI9MzIsdz1gXG4gICAgICAgICAgdmFyPHdvcmtncm91cD4gYUJlc3RWYWx1ZXMgOiBhcnJheTwke2cudHlwZS5zdG9yYWdlfSwgJHtifT47XG4gICAgICAgYDtyZXR1cm57bmFtZTplLHNoYWRlckNhY2hlOnQsZ2V0U2hhZGVyU291cmNlOng9PmBcbiAgICAgICAgJHt4LnJlZ2lzdGVyVW5pZm9ybShcInJlZHVjZVNpemVcIixcInUzMlwiKS5kZWNsYXJlVmFyaWFibGVzKGwsZyl9XG4gICAgICAgICR7d31cbiAgICAgICAgZm4gRElWX0NFSUwoYSA6IHUzMiwgYiA6IHUzMikgLT4gdTMyIHtcbiAgICAgICAgICByZXR1cm4gKChhIC0gMXUpIC8gYiArIDF1KTtcbiAgICAgICAgIH1cbiAgICAgICAgICR7eC5tYWluU3RhcnQoYil9XG5cbiAgICAgICAgICBsZXQgb3V0cHV0SW5kZXggPSBnbG9iYWxfaWR4IC8gJHtifTtcbiAgICAgICAgICBsZXQgb2Zmc2V0ID0gb3V0cHV0SW5kZXggKiB1bmlmb3Jtcy5yZWR1Y2VTaXplO1xuXG4gICAgICAgICAgdmFyIGJlc3RWYWx1ZSA9ICR7Zy50eXBlLnN0b3JhZ2V9KCR7dWNbYV19KTtcbiAgICAgICAgICBsZXQgTGVuZ3RoID0gdW5pZm9ybXMucmVkdWNlU2l6ZTtcbiAgICAgICAgICBmb3IgKHZhciBrID0gbG9jYWxfaWR4OyBrIDwgTGVuZ3RoOyBrID0gayArICR7Yn0pIHtcbiAgICAgICAgICAgbGV0IGNhbmRpZGF0ZSA9ICR7Zy50eXBlLnN0b3JhZ2V9KCR7bC5nZXRCeU9mZnNldChcIm9mZnNldCArIGtcIil9KTtcbiAgICAgICAgICAgYmVzdFZhbHVlID0gJHtvY1thXX07XG4gICAgICAgICAgfVxuICAgICAgICAgIGFCZXN0VmFsdWVzW2xvY2FsX2lkeF0gPSBiZXN0VmFsdWU7XG4gICAgICAgICAgd29ya2dyb3VwQmFycmllcigpO1xuXG4gICAgICAgICB2YXIgcmVkdWNlU2l6ZSA9IG1pbihMZW5ndGgsICR7Yn11KTtcbiAgICAgICAgIGZvciAodmFyIGN1cnJlbnRTaXplID0gcmVkdWNlU2l6ZSAvIDJ1OyByZWR1Y2VTaXplID4gMXU7XG4gICAgICAgICAgICAgY3VycmVudFNpemUgPSByZWR1Y2VTaXplIC8gMnUpIHtcbiAgICAgICAgICAgbGV0IGludGVydmFsID0gRElWX0NFSUwocmVkdWNlU2l6ZSwgMnUpO1xuICAgICAgICAgICBpZiAobG9jYWxfaWR4IDwgY3VycmVudFNpemUpIHtcbiAgICAgICAgICAgIGxldCBjYW5kaWRhdGUgPSBhQmVzdFZhbHVlc1tsb2NhbF9pZHggKyBpbnRlcnZhbF07XG4gICAgICAgICAgICBiZXN0VmFsdWUgPSAke3NjW2FdfTtcbiAgICAgICAgICAgIGFCZXN0VmFsdWVzW2xvY2FsX2lkeF0gPSBiZXN0VmFsdWU7XG4gICAgICAgICAgIH1cbiAgICAgICAgICAgcmVkdWNlU2l6ZSA9IGludGVydmFsO1xuICAgICAgICAgICB3b3JrZ3JvdXBCYXJyaWVyKCk7XG4gICAgICAgICB9XG5cbiAgICAgICAgIGlmIChsb2NhbF9pZHggPT0gMHUpIHtcbiAgICAgICAgICAke2cuc2V0QnlPZmZzZXQoXCJvdXRwdXRJbmRleFwiLGAke2E9PT1cIm1lYW5cIj9gYmVzdFZhbHVlIC8gJHtnLnR5cGUuc3RvcmFnZX0odW5pZm9ybXMucmVkdWNlU2l6ZSlgOmAke2xjW2FdfWB9YCl9O1xuICAgICAgICAgfVxuICAgICAgICB9YCxnZXRSdW5EYXRhOigpPT4oe291dHB1dHM6W3tkaW1zOnMsZGF0YVR5cGU6aX1dLGRpc3BhdGNoR3JvdXA6e3g6cH0scHJvZ3JhbVVuaWZvcm1zOlt7dHlwZTpcInVpbnQzMlwiLGRhdGE6bX1dfSl9fSxUdD0oZSx0LHIsYSk9PntsZXQgaT1lLmlucHV0cy5sZW5ndGg9PT0xP3I6S2EoZS5pbnB1dHMscikscz1pLmF4ZXM7cy5sZW5ndGg9PT0wJiYhaS5ub29wV2l0aEVtcHR5QXhlcyYmKHM9ZS5pbnB1dHNbMF0uZGltcy5tYXAoKHcsJCk9PiQpKTtsZXQgbz1OLm5vcm1hbGl6ZUF4ZXMocyxlLmlucHV0c1swXS5kaW1zLmxlbmd0aCksYz1vLHA9ZS5pbnB1dHNbMF0sbT1tYyhjLGUuaW5wdXRzWzBdLmRpbXMubGVuZ3RoKTttLmxlbmd0aD4wJiYocD1lLmNvbXB1dGUoeHQoZS5pbnB1dHNbMF0sbSkse2lucHV0czpbMF0sb3V0cHV0czpbLTFdfSlbMF0sYz1kYyhjLmxlbmd0aCxwLmRpbXMubGVuZ3RoKSk7bGV0W2wsZ109Y2MocC5kaW1zLGMpLGI9bDtpLmtlZXBEaW1zJiYoYj1wYyhsLG8pKSxlLmNvbXB1dGUoaGModCx7aGludDppLmNhY2hlS2V5LGlucHV0RGVwZW5kZW5jaWVzOltcInR5cGVcIl19LFtwXSxhLGUuaW5wdXRzWzBdLmRhdGFUeXBlLGIsZykse2lucHV0czpbcF19KX0sSm89KGUsdCk9PntUdChlLFwiUmVkdWNlTWVhblNoYXJlZFwiLHQsXCJtZWFuXCIpfSxlcz0oZSx0KT0+e1R0KGUsXCJSZWR1Y2VMMVNoYXJlZFwiLHQsXCJsMVwiKX0sdHM9KGUsdCk9PntUdChlLFwiUmVkdWNlTDJTaGFyZWRcIix0LFwibDJcIil9LHJzPShlLHQpPT57VHQoZSxcIlJlZHVjZUxvZ1N1bUV4cFNoYXJlZFwiLHQsXCJsb2dTdW1FeHBcIil9LG5zPShlLHQpPT57VHQoZSxcIlJlZHVjZU1heFNoYXJlZFwiLHQsXCJtYXhcIil9LGFzPShlLHQpPT57VHQoZSxcIlJlZHVjZU1pblNoYXJlZFwiLHQsXCJtaW5cIil9LGlzPShlLHQpPT57VHQoZSxcIlJlZHVjZVByb2RTaGFyZWRcIix0LFwicHJvZFwiKX0sb3M9KGUsdCk9PntUdChlLFwiUmVkdWNlU3VtU2hhcmVkXCIsdCxcInN1bVwiKX0sc3M9KGUsdCk9PntUdChlLFwiUmVkdWNlU3VtU3F1YXJlU2hhcmVkXCIsdCxcInN1bVNxdWFyZVwiKX0sdXM9KGUsdCk9PntUdChlLFwiUmVkdWNlTG9nU3VtU2hhcmVkXCIsdCxcImxvZ1N1bVwiKX19KTt2YXIgRXQsZ2MsS24sS2EsT3QseWMsYmMsdmMsd2MsJGMsX2MsU2MseGMsQ2MsSWMsa3QsZHMsY3MscHMsZnMsbXMsaHMsZ3MseXMsYnMsdnMsam49USgoKT0+e1widXNlIHN0cmljdFwiO0NlKCk7WGUoKTtfZSgpO2xzKCk7RXQ9ZT0+e2lmKCFlfHxlLmxlbmd0aD09PTB8fGUubGVuZ3RoPjIpdGhyb3cgbmV3IEVycm9yKFwiUmVkdWNlIG9wIHJlcXVpcmVzIDEgb3IgMiBpbnB1dHMuXCIpO2lmKGUubGVuZ3RoPT09MiYmZVsxXS5kaW1zLmxlbmd0aCE9PTEpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBheGVzIGlucHV0IGRpbXMuXCIpfSxnYz1lPT5bXCJcIixcIlwiLGB2YXIgdmFsdWUgPSAke2UuZ2V0QnlJbmRpY2VzKFwiaW5wdXRfaW5kaWNlc1wiKX07YCxcIlwiXSxLbj0oZSx0LHIsYSxpLHMsbz0hMSxjPSExKT0+e2xldCBwPVtdLG09clswXS5kaW1zLGw9bS5sZW5ndGgsZz1OLm5vcm1hbGl6ZUF4ZXMoaSxsKSxiPSFjJiZnLmxlbmd0aD09PTA7bS5mb3JFYWNoKChULEMpPT57Ynx8Zy5pbmRleE9mKEMpPj0wP28mJnAucHVzaCgxKTpwLnB1c2goVCl9KTtsZXQgdz1wLmxlbmd0aCwkPU4uc2l6ZShwKTtyZXR1cm57bmFtZTplLHNoYWRlckNhY2hlOnQsZ2V0U2hhZGVyU291cmNlOlQ9PntsZXQgQz1bXSxTPVcoXCJfQVwiLHJbMF0uZGF0YVR5cGUsbCksRT1KKFwib3V0cHV0XCIscyx3KSxPPWEoUyxFLGcpLFU9T1syXTtmb3IobGV0IEQ9MCxWPTA7RDxsO0QrKylifHxnLmluZGV4T2YoRCk+PTA/KG8mJlYrKyxVPWBmb3IodmFyIGoke0R9OiB1MzIgPSAwOyBqJHtEfSA8ICR7bVtEXX07IGoke0R9KyspIHtcbiAgICAgICAgICAgICAgICAgICR7T1syXS5pbmNsdWRlcyhcImxhc3RfaW5kZXhcIik/YGxldCBsYXN0X2luZGV4ID0gaiR7RH07YDpcIlwifVxuICAgICAgICAgICAgICAgICAgJHtTLmluZGljZXNTZXQoXCJpbnB1dF9pbmRpY2VzXCIsRCxgaiR7RH1gKX1cbiAgICAgICAgICAgICAgICAgICR7VX1cbiAgICAgICAgICAgICAgICB9YCk6KEMucHVzaChgJHtTLmluZGljZXNTZXQoXCJpbnB1dF9pbmRpY2VzXCIsRCxFLmluZGljZXNHZXQoXCJvdXRwdXRfaW5kaWNlc1wiLFYpKX07YCksVisrKTtyZXR1cm5gXG5cbiAgICAgICAgJHtULnJlZ2lzdGVyVW5pZm9ybShcIm91dHB1dF9zaXplXCIsXCJ1MzJcIikuZGVjbGFyZVZhcmlhYmxlcyhTLEUpfVxuXG4gICAgICAgICR7VC5tYWluU3RhcnQoKX1cbiAgICAgICAgICAke1QuZ3VhcmRBZ2FpbnN0T3V0T2ZCb3VuZHNXb3JrZ3JvdXBTaXplcyhcInVuaWZvcm1zLm91dHB1dF9zaXplXCIpfVxuICAgICAgICAgIHZhciBpbnB1dF9pbmRpY2VzOiAke1MudHlwZS5pbmRpY2VzfTtcbiAgICAgICAgICBsZXQgb3V0cHV0X2luZGljZXMgPSAke0Uub2Zmc2V0VG9JbmRpY2VzKFwiZ2xvYmFsX2lkeFwiKX07XG5cbiAgICAgICAgICAke0Muam9pbihgXG5gKX1cbiAgICAgICAgICAke09bMF19ICAgICAgIC8vIGluaXQgb3BzIGZvciByZWR1Y2UgbWF4L21pblxuICAgICAgICAgICR7T1sxXX1cbiAgICAgICAgICAke1V9XG4gICAgICAgICAgJHtPWzNdfVxuICAgICAgICAgICR7Ty5sZW5ndGg9PT00P0Uuc2V0QnlPZmZzZXQoXCJnbG9iYWxfaWR4XCIsXCJ2YWx1ZVwiKTpPLnNsaWNlKDQpLmpvaW4oYFxuYCl9XG4gICAgICAgIH1gfSxnZXRSdW5EYXRhOigpPT4oe291dHB1dHM6W3tkaW1zOnAsZGF0YVR5cGU6c31dLGRpc3BhdGNoR3JvdXA6e3g6TWF0aC5jZWlsKCQvNjQpfSxwcm9ncmFtVW5pZm9ybXM6W3t0eXBlOlwidWludDMyXCIsZGF0YTokfSwuLi5MKG0pLC4uLkwocCldfSl9fSxLYT0oZSx0KT0+e2xldCByPVtdO3JldHVybiBlWzFdLmRpbXNbMF0+MCYmZVsxXS5nZXRCaWdJbnQ2NEFycmF5KCkuZm9yRWFjaChhPT5yLnB1c2goTnVtYmVyKGEpKSkseGUoe2F4ZXM6cixrZWVwRGltczp0LmtlZXBEaW1zLG5vb3BXaXRoRW1wdHlBeGVzOnQubm9vcFdpdGhFbXB0eUF4ZXN9KX0sT3Q9KGUsdCxyLGEpPT57bGV0IGk9ZS5pbnB1dHMscz1pLmxlbmd0aD09PTE/cjpLYShpLHIpO2UuY29tcHV0ZShLbih0LHtoaW50OnMuY2FjaGVLZXksaW5wdXREZXBlbmRlbmNpZXM6W1wicmFua1wiXX0sW2lbMF1dLHMubm9vcFdpdGhFbXB0eUF4ZXMmJnMuYXhlcy5sZW5ndGg9PT0wP2djOmEscy5heGVzLGlbMF0uZGF0YVR5cGUscy5rZWVwRGltcyxzLm5vb3BXaXRoRW1wdHlBeGVzKSx7aW5wdXRzOlswXX0pfSx5Yz0oZSx0KT0+e0V0KGUuaW5wdXRzKSxPdChlLFwiUmVkdWNlTG9nU3VtXCIsdCwoYSxpKT0+W2B2YXIgdmFsdWUgPSAke2kudHlwZS5zdG9yYWdlfSgwKTtgLFwiXCIsYHZhbHVlICs9ICR7YS5nZXRCeUluZGljZXMoXCJpbnB1dF9pbmRpY2VzXCIpfTtgLFwidmFsdWUgPSBsb2codmFsdWUpO1wiXSl9LGJjPShlLHQpPT57RXQoZS5pbnB1dHMpLE90KGUsXCJSZWR1Y2VMMVwiLHQsKGEsaSk9PltgdmFyIHZhbHVlID0gJHtpLnR5cGUuc3RvcmFnZX0oMCk7YCxcIlwiLGB2YWx1ZSArPSBhYnMoJHthLmdldEJ5SW5kaWNlcyhcImlucHV0X2luZGljZXNcIil9KTtgLFwiXCJdKX0sdmM9KGUsdCk9PntFdChlLmlucHV0cyksT3QoZSxcIlJlZHVjZUwyXCIsdCwoYSxpKT0+W2B2YXIgdCA9ICR7aS50eXBlLnZhbHVlfSgwKTsgdmFyIHZhbHVlID0gJHtpLnR5cGUudmFsdWV9KDApO2AsXCJcIixgdCA9ICR7YS5nZXRCeUluZGljZXMoXCJpbnB1dF9pbmRpY2VzXCIpfTsgdmFsdWUgKz0gKHQgKiB0KTtgLFwidmFsdWUgPSBzcXJ0KHZhbHVlKTtcIl0pfSx3Yz0oZSx0KT0+e0V0KGUuaW5wdXRzKSxPdChlLFwiUmVkdWNlTG9nU3VtRXhwXCIsdCwoYSxpKT0+W2B2YXIgdmFsdWUgPSAke2kudHlwZS5zdG9yYWdlfSgwKTtgLFwiXCIsYHZhbHVlICs9IGV4cCgke2EuZ2V0QnlJbmRpY2VzKFwiaW5wdXRfaW5kaWNlc1wiKX0pO2AsXCJ2YWx1ZSA9IGxvZyh2YWx1ZSk7XCJdKX0sJGM9KGUsdCk9PntFdChlLmlucHV0cyksT3QoZSxcIlJlZHVjZU1heFwiLHQsKGEsaSxzKT0+e2xldCBvPVtdO2ZvcihsZXQgYz0wO2M8YS5yYW5rO2MrKykocy5pbmRleE9mKGMpPj0wfHxzLmxlbmd0aD09PTApJiZvLnB1c2goYS5pbmRpY2VzU2V0KFwiaW5wdXRfaW5kaWNlc1wiLGMsMCkpO3JldHVybltgJHtvLmpvaW4oYFxuYCl9YCxgdmFyIHZhbHVlID0gJHthLmdldEJ5SW5kaWNlcyhcImlucHV0X2luZGljZXNcIil9O2AsYHZhbHVlID0gbWF4KHZhbHVlLCAke2EuZ2V0QnlJbmRpY2VzKFwiaW5wdXRfaW5kaWNlc1wiKX0pO2AsXCJcIl19KX0sX2M9KGUsdCk9PntFdChlLmlucHV0cyksT3QoZSxcIlJlZHVjZU1lYW5cIix0LChhLGkscyk9PntsZXQgbz0xO2ZvcihsZXQgYz0wO2M8YS5yYW5rO2MrKykocy5pbmRleE9mKGMpPj0wfHxzLmxlbmd0aD09PTApJiYobyo9ZS5pbnB1dHNbMF0uZGltc1tjXSk7cmV0dXJuW1widmFyIHN1bSA9IGYzMigwKTtcIixcIlwiLGBzdW0gKz0gZjMyKCR7YS5nZXRCeUluZGljZXMoXCJpbnB1dF9pbmRpY2VzXCIpfSk7YCxgbGV0IHZhbHVlID0gJHtpLnR5cGUudmFsdWV9KHN1bSAvICR7b30pO2BdfSl9LFNjPShlLHQpPT57RXQoZS5pbnB1dHMpLE90KGUsXCJSZWR1Y2VNaW5cIix0LChhLGkscyk9PntsZXQgbz1bXTtmb3IobGV0IGM9MDtjPGEucmFuaztjKyspKHMuaW5kZXhPZihjKT49MHx8cy5sZW5ndGg9PT0wKSYmby5wdXNoKGBpbnB1dF9pbmRpY2VzWyR7Y31dID0gMDtgKTtyZXR1cm5bYCR7by5qb2luKGBcbmApfWAsYHZhciB2YWx1ZSA9ICR7YS5nZXRCeUluZGljZXMoXCJpbnB1dF9pbmRpY2VzXCIpfTtgLGB2YWx1ZSA9IG1pbih2YWx1ZSwgJHthLmdldEJ5SW5kaWNlcyhcImlucHV0X2luZGljZXNcIil9KTtgLFwiXCJdfSl9LHhjPShlLHQpPT57RXQoZS5pbnB1dHMpLE90KGUsXCJSZWR1Y2VQcm9kXCIsdCwoYSxpKT0+W2B2YXIgdmFsdWUgPSAke2kudHlwZS5zdG9yYWdlfSgxKTtgLFwiXCIsYHZhbHVlICo9ICR7YS5nZXRCeUluZGljZXMoXCJpbnB1dF9pbmRpY2VzXCIpfTtgLFwiXCJdKX0sQ2M9KGUsdCk9PntFdChlLmlucHV0cyksT3QoZSxcIlJlZHVjZVN1bVwiLHQsKGEsaSk9PltgdmFyIHZhbHVlID0gJHtpLnR5cGUuc3RvcmFnZX0oMCk7YCxcIlwiLGB2YWx1ZSArPSAke2EuZ2V0QnlJbmRpY2VzKFwiaW5wdXRfaW5kaWNlc1wiKX07YCxcIlwiXSl9LEljPShlLHQpPT57RXQoZS5pbnB1dHMpLE90KGUsXCJSZWR1Y2VTdW1TcXVhcmVcIix0LChhLGkpPT5bYHZhciB0ID0gJHtpLnR5cGUudmFsdWV9KDApOyB2YXIgdmFsdWUgPSAke2kudHlwZS52YWx1ZX0oMCk7YCxcIlwiLGB0ID0gJHthLmdldEJ5SW5kaWNlcyhcImlucHV0X2luZGljZXNcIil9OyB2YWx1ZSArPSB0ICogdDtgLFwiXCJdKX0sa3Q9KGUsdCxyKT0+e2lmKHQubGVuZ3RoPT09MClyZXR1cm4gcjtsZXQgYT0xLGk9MTtmb3IobGV0IHM9MDtzPHQubGVuZ3RoO3MrKyl0LmluZGV4T2Yocyk9PT0tMT9hKj1lW3NdOmkqPWVbc107cmV0dXJuIGk8MzImJmE+MTAyNH0sZHM9KGUsdCk9PntrdChlLmlucHV0c1swXS5kaW1zLHQuYXhlcyx0Lm5vb3BXaXRoRW1wdHlBeGVzKT9fYyhlLHQpOkpvKGUsdCl9LGNzPShlLHQpPT57a3QoZS5pbnB1dHNbMF0uZGltcyx0LmF4ZXMsdC5ub29wV2l0aEVtcHR5QXhlcyk/YmMoZSx0KTplcyhlLHQpfSxwcz0oZSx0KT0+e2t0KGUuaW5wdXRzWzBdLmRpbXMsdC5heGVzLHQubm9vcFdpdGhFbXB0eUF4ZXMpP3ZjKGUsdCk6dHMoZSx0KX0sZnM9KGUsdCk9PntrdChlLmlucHV0c1swXS5kaW1zLHQuYXhlcyx0Lm5vb3BXaXRoRW1wdHlBeGVzKT93YyhlLHQpOnJzKGUsdCl9LG1zPShlLHQpPT57a3QoZS5pbnB1dHNbMF0uZGltcyx0LmF4ZXMsdC5ub29wV2l0aEVtcHR5QXhlcyk/JGMoZSx0KTpucyhlLHQpfSxocz0oZSx0KT0+e2t0KGUuaW5wdXRzWzBdLmRpbXMsdC5heGVzLHQubm9vcFdpdGhFbXB0eUF4ZXMpP1NjKGUsdCk6YXMoZSx0KX0sZ3M9KGUsdCk9PntrdChlLmlucHV0c1swXS5kaW1zLHQuYXhlcyx0Lm5vb3BXaXRoRW1wdHlBeGVzKT94YyhlLHQpOmlzKGUsdCl9LHlzPShlLHQpPT57a3QoZS5pbnB1dHNbMF0uZGltcyx0LmF4ZXMsdC5ub29wV2l0aEVtcHR5QXhlcyk/Q2MoZSx0KTpvcyhlLHQpfSxicz0oZSx0KT0+e2t0KGUuaW5wdXRzWzBdLmRpbXMsdC5heGVzLHQubm9vcFdpdGhFbXB0eUF4ZXMpP0ljKGUsdCk6c3MoZSx0KX0sdnM9KGUsdCk9PntrdChlLmlucHV0c1swXS5kaW1zLHQuYXhlcyx0Lm5vb3BXaXRoRW1wdHlBeGVzKT95YyhlLHQpOnVzKGUsdCl9fSk7dmFyIHdzLCRzLF9zLFlhLFNzPVEoKCk9PntcInVzZSBzdHJpY3RcIjt6ZSgpO1hlKCk7am4oKTt3cz1lPT57aWYoIWV8fGUubGVuZ3RoPT09MHx8ZS5sZW5ndGg+Mil0aHJvdyBuZXcgRXJyb3IoXCJBcmdNaW5NYXhPcCBvcCByZXF1aXJlcyAxIG9yIDIgaW5wdXRzLlwiKTtpZihlWzBdLmRhdGFUeXBlIT09MSl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGlucHV0IHR5cGUuXCIpfSwkcz0oZSx0KT0+e3dzKGUuaW5wdXRzKTtsZXQgcj0oYSxpLHMpPT57bGV0IG89W107Zm9yKGxldCBjPTA7YzxhLnJhbms7YysrKShzLmluZGV4T2YoYyk+PTB8fHMubGVuZ3RoPT09MCkmJm8ucHVzaChgaW5wdXRfaW5kaWNlc1ske2N9XSA9IDA7YCk7cmV0dXJuW2Ake28uam9pbihgXG5gKX1gLGB2YXIgdmFsdWUgPSAke2EuZ2V0QnlJbmRpY2VzKFwiaW5wdXRfaW5kaWNlc1wiKX07XG52YXIgYmVzdF9pbmRleCA6IGkzMiA9IDA7YCxgaWYgKCR7YS5nZXRCeUluZGljZXMoXCJpbnB1dF9pbmRpY2VzXCIpfSAke3Quc2VsZWN0TGFzdEluZGV4PjA/XCI8PVwiOlwiPFwifSB2YWx1ZSkge1xuICAgICAgICAgdmFsdWUgPSAke2EuZ2V0QnlJbmRpY2VzKFwiaW5wdXRfaW5kaWNlc1wiKX07XG4gICAgICAgICBiZXN0X2luZGV4ID0gaTMyKGxhc3RfaW5kZXgpO1xuICAgICAgIH1gLFwiXCIsaS5zZXRCeU9mZnNldChcImdsb2JhbF9pZHhcIixcImJlc3RfaW5kZXhcIildfTtlLmNvbXB1dGUoS24oXCJBcmdNaW5cIix7aGludDp0LmNhY2hlS2V5LGlucHV0RGVwZW5kZW5jaWVzOltcInJhbmtcIl19LFtlLmlucHV0c1swXV0scixbdC5heGlzXSw3LHQua2VlcERpbXMpLHtpbnB1dHM6WzBdfSl9LF9zPShlLHQpPT57d3MoZS5pbnB1dHMpO2xldCByPShhLGkscyk9PntsZXQgbz1bXTtmb3IobGV0IGM9MDtjPGEucmFuaztjKyspKHMuaW5kZXhPZihjKT49MHx8cy5sZW5ndGg9PT0wKSYmby5wdXNoKGBpbnB1dF9pbmRpY2VzWyR7Y31dID0gMDtgKTtyZXR1cm5bYCR7by5qb2luKGBcbmApfWAsYHZhciB2YWx1ZSA9ICR7YS5nZXRCeUluZGljZXMoXCJpbnB1dF9pbmRpY2VzXCIpfTtcbnZhciBiZXN0X2luZGV4IDogaTMyID0gMDtgLGBpZiAoJHthLmdldEJ5SW5kaWNlcyhcImlucHV0X2luZGljZXNcIil9ICR7dC5zZWxlY3RMYXN0SW5kZXg+MD9cIj49XCI6XCI+XCJ9IHZhbHVlKSB7XG4gICAgICAgICB2YWx1ZSA9ICR7YS5nZXRCeUluZGljZXMoXCJpbnB1dF9pbmRpY2VzXCIpfTtcbiAgICAgICAgIGJlc3RfaW5kZXggPSBpMzIobGFzdF9pbmRleCk7XG4gICAgICAgfWAsXCJcIixpLnNldEJ5T2Zmc2V0KFwiZ2xvYmFsX2lkeFwiLFwiYmVzdF9pbmRleFwiKV19O2UuY29tcHV0ZShLbihcImFyZ01heFwiLHtoaW50OnQuY2FjaGVLZXksaW5wdXREZXBlbmRlbmNpZXM6W1wicmFua1wiXX0sW2UuaW5wdXRzWzBdXSxyLFt0LmF4aXNdLDcsdC5rZWVwRGltcykse2lucHV0czpbMF19KX0sWWE9ZT0+eGUoZSl9KTt2YXIgQWMsVGMsRWMsT2MsWW4sa2MseHMsWmE9USgoKT0+e1widXNlIHN0cmljdFwiO3plKCk7Vm4oKTtfZSgpO0FjPShlLHQpPT57bGV0IHI9ZVswXSxhPWVbMV0saT1lWzJdLHM9ZVszXSxvPWVbNF0sYz1lWzVdO2lmKG8mJmMpdGhyb3cgbmV3IEVycm9yKFwiQXR0ZW50aW9uIGNhbm5vdCBoYXZlIGJvdGggcGFzdCBhbmQgcmVsYXRpdmVfcG9zaXRpb25fYmlhc1wiKTtpZihyLmRpbXMubGVuZ3RoIT09Myl0aHJvdyBuZXcgRXJyb3IoJ0lucHV0IFwiaW5wdXRcIiBtdXN0IGhhdmUgMyBkaW1lbnNpb25zJyk7bGV0IHA9ci5kaW1zWzBdLG09ci5kaW1zWzFdLGw9ci5kaW1zWzJdO2lmKGkuZGltcy5sZW5ndGghPT0xKXRocm93IG5ldyBFcnJvcignSW5wdXQgXCJiaWFzXCIgaXMgZXhwZWN0ZWQgdG8gaGF2ZSAxIGRpbWVuc2lvbnMnKTtpZihhLmRpbXMubGVuZ3RoIT09Mil0aHJvdyBuZXcgRXJyb3IoJ0lucHV0IFwid2VpZ2h0c1wiIGlzIGV4cGVjdGVkIHRvIGhhdmUgMiBkaW1lbnNpb25zJyk7aWYoYS5kaW1zWzBdIT09bCl0aHJvdyBuZXcgRXJyb3IoXCJJbnB1dCAxIGRpbWVuc2lvbiAwIHNob3VsZCBoYXZlIHNhbWUgbGVuZ3RoIGFzIGRpbWVuc2lvbiAyIG9mIGlucHV0IDBcIik7aWYoaS5kaW1zWzBdIT09YS5kaW1zWzFdKXRocm93IG5ldyBFcnJvcignSW5wdXQgXCJiaWFzXCIgZGltZW5zaW9uIDAgc2hvdWxkIGhhdmUgc2FtZSBsZW5ndGggYXMgZGltZW5zaW9uIDEgb2YgaW5wdXQgXCJ3ZWlnaHRzXCInKTtsZXQgZz1pLmRpbXNbMF0vMyxiPWcsdz1iO2lmKHQucWt2SGlkZGVuU2l6ZXMubGVuZ3RoPjApe2lmKHQucWt2SGlkZGVuU2l6ZXMubGVuZ3RoIT09Myl0aHJvdyBuZXcgRXJyb3IoXCJxa3ZfaGlkZGVuX3NpemVzIGF0dHJpYnV0ZSBzaG91bGQgaGF2ZSAzIGVsZW1lbnRzXCIpO2ZvcihsZXQgRSBvZiB0LnFrdkhpZGRlblNpemVzKWlmKEUldC5udW1IZWFkcyE9PTApdGhyb3cgbmV3IEVycm9yKFwicWt2X2hpZGRlbl9zaXplcyBzaG91bGQgYmUgZGl2aXNpYmxlIGJ5IG51bV9oZWFkc1wiKTtnPXQucWt2SGlkZGVuU2l6ZXNbMF0sYj10LnFrdkhpZGRlblNpemVzWzFdLHc9dC5xa3ZIaWRkZW5TaXplc1syXX1sZXQgJD1tO2lmKGchPT1iKXRocm93IG5ldyBFcnJvcihcInFrdl9oaWRkZW5fc2l6ZXMgZmlyc3QgZWxlbWVudCBzaG91bGQgYmUgc2FtZSBhcyB0aGUgc2Vjb25kXCIpO2lmKGkuZGltc1swXSE9PWcrYit3KXRocm93IG5ldyBFcnJvcignSW5wdXQgXCJiaWFzXCIgZGltZW5zaW9uIDAgc2hvdWxkIGhhdmUgc2FtZSBsZW5ndGggYXMgc3VtIG9mIFEvSy9WIGhpZGRlbiBzaXplcycpO2xldCB4PTA7aWYobyl7aWYoYiE9PXcpdGhyb3cgbmV3IEVycm9yKCdJbnB1dCBcInBhc3RcIiBleHBlY3Qga19oaWRkZW5fc2l6ZSA9PSB2X2hpZGRlbl9zaXplJyk7aWYoby5kaW1zLmxlbmd0aCE9PTUpdGhyb3cgbmV3IEVycm9yKCdJbnB1dCBcInBhc3RcIiBtdXN0IGhhdmUgNSBkaW1lbnNpb25zJyk7aWYoby5kaW1zWzBdIT09Mil0aHJvdyBuZXcgRXJyb3IoJ0lucHV0IFwicGFzdFwiIGZpcnN0IGRpbWVuc2lvbiBtdXN0IGJlIDInKTtpZihvLmRpbXNbMV0hPT1wKXRocm93IG5ldyBFcnJvcignSW5wdXQgXCJwYXN0XCIgc2Vjb25kIGRpbWVuc2lvbiBtdXN0IGJlIGJhdGNoX3NpemUnKTtpZihvLmRpbXNbMl0hPT10Lm51bUhlYWRzKXRocm93IG5ldyBFcnJvcignSW5wdXQgXCJwYXN0XCIgdGhpcmQgZGltZW5zaW9uIG11c3QgYmUgbnVtX2hlYWRzJyk7aWYoby5kaW1zWzRdIT09Yi90Lm51bUhlYWRzKXRocm93IG5ldyBFcnJvcignSW5wdXQgXCJwYXN0XCIgZmlmdGggZGltZW5zaW9uIG11c3QgYmUga19oaWRkZW5fc2l6ZSAvIG51bV9oZWFkcycpO3QucGFzdFByZXNlbnRTaGFyZUJ1ZmZlcnx8KHg9by5kaW1zWzNdKX1sZXQgVD0kK3gsQz0tMSxTPTA7aWYocyl0aHJvdyBuZXcgRXJyb3IoXCJNYXNrIG5vdCBzdXBwb3J0ZWRcIik7aWYobyl0aHJvdyBuZXcgRXJyb3IoXCJwYXN0IGlzIG5vdCBzdXBwb3J0ZWRcIik7aWYoYyl0aHJvdyBuZXcgRXJyb3IoXCJyZWxhdGl2ZVBvc2l0aW9uQmlhcyBpcyBub3Qgc3VwcG9ydGVkXCIpO3JldHVybntiYXRjaFNpemU6cCxzZXF1ZW5jZUxlbmd0aDptLHBhc3RTZXF1ZW5jZUxlbmd0aDp4LGt2U2VxdWVuY2VMZW5ndGg6JCx0b3RhbFNlcXVlbmNlTGVuZ3RoOlQsbWF4U2VxdWVuY2VMZW5ndGg6QyxpbnB1dEhpZGRlblNpemU6bCxoaWRkZW5TaXplOmcsdkhpZGRlblNpemU6dyxoZWFkU2l6ZTpNYXRoLmZsb29yKGcvdC5udW1IZWFkcyksdkhlYWRTaXplOk1hdGguZmxvb3Iody90Lm51bUhlYWRzKSxudW1IZWFkczp0Lm51bUhlYWRzLGlzVW5pZGlyZWN0aW9uYWw6ITEscGFzdFByZXNlbnRTaGFyZUJ1ZmZlcjohMSxtYXNrRmlsdGVyVmFsdWU6dC5tYXNrRmlsdGVyVmFsdWUsbWFza1R5cGU6UyxzY2FsZTp0LnNjYWxlLGJyb2FkY2FzdFJlc1Bvc0JpYXM6ITEscGFzc1Bhc3RJbkt2OiExLHFrdkZvcm1hdDoxfX0sVGM9KGUsdCxyLGEpPT57bGV0IGk9TGUoYSkscz02NCxvPWEvaTtvPHM/cz0xOm8vODw2NCYmKHM9TWF0aC5jZWlsKG8vOCkpO2xldCBjPU1hdGguY2VpbChhL2kvcyksbT1be3R5cGU6cHQodC5kYXRhVHlwZSksZGF0YToxL2F9LHt0eXBlOlwidWludDMyXCIsZGF0YTpvfSx7dHlwZTpcInVpbnQzMlwiLGRhdGE6Y31dLGw9SGUodC5kYXRhVHlwZSxpKSxnPWI9PntsZXQgdz1KKFwieFwiLHQuZGF0YVR5cGUsdC5kaW1zLGkpLCQ9XCJ0aHJlYWRfbWF4X3ZlY3RvclwiO2k9PT0yPyQ9XCJtYXgodGhyZWFkX21heF92ZWN0b3IueCwgdGhyZWFkX21heF92ZWN0b3IueSlcIjppPT09NCYmKCQ9XCJtYXgobWF4KHRocmVhZF9tYXhfdmVjdG9yLngsIHRocmVhZF9tYXhfdmVjdG9yLnkpLCBtYXgodGhyZWFkX21heF92ZWN0b3IueiwgdGhyZWFkX21heF92ZWN0b3IudykpXCIpO2xldCB4PV90KHQuZGF0YVR5cGUpLFQ9W3tuYW1lOlwiZF9pbnZcIix0eXBlOnh9LHtuYW1lOlwiZF9jb21wXCIsdHlwZTpcInUzMlwifSx7bmFtZTpcImVsZW1lbnRzX3Blcl93Z1wiLHR5cGU6XCJ1MzJcIn1dO3JldHVybmBcbiAgdmFyPHdvcmtncm91cD4gd2dNYXg6IGFycmF5PGYzMiwgJHtzfT47XG4gIHZhcjx3b3JrZ3JvdXA+IHdnU3VtOiBhcnJheTxmMzIsICR7c30+O1xuICAke2IucmVnaXN0ZXJVbmlmb3JtcyhUKS5kZWNsYXJlVmFyaWFibGVzKHcpfVxuICAke2IubWFpblN0YXJ0KFtzLDEsMV0pfVxuICAgIGxldCBsb2NhbE9mZnNldCA9IGxvY2FsX2lkeCAqIHVuaWZvcm1zLmVsZW1lbnRzX3Blcl93ZztcbiAgICBsZXQgb2Zmc2V0OiB1MzIgPSB3b3JrZ3JvdXBfaWQueCAqIHVuaWZvcm1zLmRfY29tcCArIGxvY2FsT2Zmc2V0O1xuXG4gICAgdmFyIHRocmVhZF9tYXhfdmVjdG9yID0gJHtRZShcImYzMlwiLGksXCItMy40MDI4MjNlKzM4ZlwiKX07XG4gICAgZm9yICh2YXIgaTogdTMyID0gMDsgaSA8IHVuaWZvcm1zLmVsZW1lbnRzX3Blcl93ZyAmJiBpICsgbG9jYWxPZmZzZXQgPCB1bmlmb3Jtcy5kX2NvbXA7IGkrKykge1xuICAgICAgdGhyZWFkX21heF92ZWN0b3IgPSBtYXgoJHtTdCh4LGksXCJ4W29mZnNldCArIGldXCIpfSwgdGhyZWFkX21heF92ZWN0b3IpO1xuICAgIH1cbiAgICB3Z01heFtsb2NhbF9pZHhdID0gJHskfTtcbiAgICB3b3JrZ3JvdXBCYXJyaWVyKCk7XG5cbiAgICB2YXIgbWF4VmFsdWUgPSAtMy40MDI4MjNlKzM4ZjtcbiAgICBmb3IgKHZhciBpID0gMHU7IGkgPCAke3N9OyBpKyspIHtcbiAgICAgIG1heFZhbHVlID0gbWF4KHdnTWF4W2ldLCBtYXhWYWx1ZSk7XG4gICAgfVxuXG4gICAgdmFyIHN1bVZlY3RvciA9ICR7UWUoXCJmMzJcIixpLFwiMFwiKX07XG4gICAgZm9yICh2YXIgaTogdTMyID0gMDsgaSA8IHVuaWZvcm1zLmVsZW1lbnRzX3Blcl93ZyAmJiBpICsgbG9jYWxPZmZzZXQgPCB1bmlmb3Jtcy5kX2NvbXA7IGkrKykge1xuICAgICAgc3VtVmVjdG9yICs9IGV4cCgke1N0KHgsaSxcInhbb2Zmc2V0ICsgaV1cIil9IC0gbWF4VmFsdWUpO1xuICAgIH1cbiAgICB3Z1N1bVtsb2NhbF9pZHhdID0gJHtmdChcInN1bVZlY3RvclwiLGkpfTtcbiAgICB3b3JrZ3JvdXBCYXJyaWVyKCk7XG5cbiAgICB2YXIgc3VtOiBmMzIgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwdTsgaSA8ICR7c307IGkrKykge1xuICAgICAgc3VtICs9IHdnU3VtW2ldO1xuICAgIH1cblxuICAgIGlmIChzdW0gPT0gMCkge1xuICAgICAgZm9yICh2YXIgaTogdTMyID0gMDsgaSA8IHVuaWZvcm1zLmVsZW1lbnRzX3Blcl93ZyAmJiBpICsgbG9jYWxPZmZzZXQgPCB1bmlmb3Jtcy5kX2NvbXA7IGkrKykge1xuICAgICAgICB4W29mZnNldCArIGldID0gJHtRZSh4LGksXCJ1bmlmb3Jtcy5kX2ludlwiKX07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAodmFyIGk6IHUzMiA9IDA7IGkgPCB1bmlmb3Jtcy5lbGVtZW50c19wZXJfd2cgJiYgaSArIGxvY2FsT2Zmc2V0IDwgdW5pZm9ybXMuZF9jb21wOyBpKyspIHtcbiAgICAgICAgbGV0IGYzMmlucHV0ID0gJHtTdCh4LGksXCJ4W29mZnNldCArIGldXCIpfTtcbiAgICAgICAgeFtvZmZzZXQgKyBpXSA9ICR7dy50eXBlLnZhbHVlfShleHAoZjMyaW5wdXQgLSBtYXhWYWx1ZSkgLyBzdW0pO1xuICAgICAgfVxuICAgIH1cbiAgfWB9O2UuY29tcHV0ZSh7bmFtZTpcIkF0dGVudGlvblByb2JzU29mdG1heFwiLHNoYWRlckNhY2hlOntoaW50OmAke3N9OyR7bH07JHtpfWB9LGdldFNoYWRlclNvdXJjZTpnLGdldFJ1bkRhdGE6KCk9Pih7b3V0cHV0czpbXSxkaXNwYXRjaEdyb3VwOnt4OnJ9LHByb2dyYW1Vbmlmb3JtczptfSl9LHtpbnB1dHM6W3RdLG91dHB1dHM6W119KX0sRWM9KGUsdCxyLGEsaSxzKT0+e2xldCBvPVtpLmJhdGNoU2l6ZSxpLm51bUhlYWRzLGkuc2VxdWVuY2VMZW5ndGgsaS5rdlNlcXVlbmNlTGVuZ3RoK2kucGFzdFNlcXVlbmNlTGVuZ3RoXSxjPXMuc2NhbGU9PT0wPzEvTWF0aC5zcXJ0KGkuaGVhZFNpemUpOnMuc2NhbGUscD1MZShpLmhlYWRTaXplKSxtPWkuaGVhZFNpemUvcCxsPTEyLGc9e3g6TWF0aC5jZWlsKGkudG90YWxTZXF1ZW5jZUxlbmd0aC9sKSx5Ok1hdGguY2VpbChpLnNlcXVlbmNlTGVuZ3RoL2wpLHo6aS5iYXRjaFNpemUqaS5udW1IZWFkc30sYj1wdCh0LmRhdGFUeXBlKSx3PVt7dHlwZTpcInVpbnQzMlwiLGRhdGE6aS5zZXF1ZW5jZUxlbmd0aH0se3R5cGU6XCJ1aW50MzJcIixkYXRhOm19LHt0eXBlOlwidWludDMyXCIsZGF0YTppLnRvdGFsU2VxdWVuY2VMZW5ndGh9LHt0eXBlOlwidWludDMyXCIsZGF0YTppLmt2U2VxdWVuY2VMZW5ndGh9LHt0eXBlOmIsZGF0YTpjfV0sJD1bdCxyXSx4PUM9PntsZXQgUz1XKFwicVwiLHQuZGF0YVR5cGUsdC5kaW1zLHApLEU9VyhcImtleVwiLHIuZGF0YVR5cGUsci5kaW1zLHApLE89SihcIm91dHB1dFwiLHQuZGF0YVR5cGUsbyksVT1IZSh0LmRhdGFUeXBlKSxEPVt7bmFtZTpcIk1cIix0eXBlOlwidTMyXCJ9LHtuYW1lOlwiS1wiLHR5cGU6XCJ1MzJcIn0se25hbWU6XCJOXCIsdHlwZTpcInUzMlwifSx7bmFtZTpcImt2X3NlcXVlbmNlX2xlbmd0aFwiLHR5cGU6XCJ1MzJcIn0se25hbWU6XCJhbHBoYVwiLHR5cGU6VX1dO3JldHVybmBcbiAgY29uc3QgYmV0YTogJHtVfSA9IDEuMDtcbiAgY29uc3QgVElMRV9TSVpFID0gJHtsfXU7XG5cbiAgdmFyPHdvcmtncm91cD4gdGlsZVE6IGFycmF5PCR7Uy50eXBlLnN0b3JhZ2V9LCAke2wqbH0+O1xuICB2YXI8d29ya2dyb3VwPiB0aWxlSzogYXJyYXk8JHtTLnR5cGUuc3RvcmFnZX0sICR7bCpsfT47XG4gICR7Qy5yZWdpc3RlclVuaWZvcm1zKEQpLmRlY2xhcmVWYXJpYWJsZXMoUyxFLE8pfVxuICAke0MubWFpblN0YXJ0KFtsLGwsMV0pfVxuICAgIC8vIHggaG9sZHMgdGhlIE4gYW5kIHkgaG9sZHMgdGhlIE1cbiAgICBsZXQgaGVhZElkeCA9IHdvcmtncm91cF9pZC56O1xuICAgIGxldCBtID0gd29ya2dyb3VwX2lkLnkgKiBUSUxFX1NJWkU7XG4gICAgbGV0IG4gPSB3b3JrZ3JvdXBfaWQueCAqIFRJTEVfU0laRTtcbiAgICBsZXQgbG0gPSBtICsgbG9jYWxfaWQueTtcbiAgICBsZXQgbG4gPSBuICsgbG9jYWxfaWQueDtcblxuICAgIGxldCBxT2Zmc2V0ID0gdW5pZm9ybXMuTSAqIHVuaWZvcm1zLksgKiBoZWFkSWR4ICsgbSAqIHVuaWZvcm1zLks7XG4gICAgbGV0IGtPZmZzZXQgPSB1bmlmb3Jtcy5rdl9zZXF1ZW5jZV9sZW5ndGggKiB1bmlmb3Jtcy5LICogaGVhZElkeCArIG4gKiB1bmlmb3Jtcy5LO1xuXG4gICAgdmFyIHZhbHVlID0gJHtRZShVLHApfTtcbiAgICBmb3IgKHZhciB3OiB1MzIgPSAwdTsgdyA8IHVuaWZvcm1zLks7IHcgKz0gVElMRV9TSVpFKSB7XG4gICAgICBpZiAobSArIGxvY2FsX2lkLnkgPCB1bmlmb3Jtcy5NICYmIHcgKyBsb2NhbF9pZC54IDwgdW5pZm9ybXMuSykge1xuICAgICAgICB0aWxlUVtUSUxFX1NJWkUgKiBsb2NhbF9pZC55ICsgbG9jYWxfaWQueF0gPSBxW3FPZmZzZXQgKyBsb2NhbF9pZC55ICogdW5pZm9ybXMuSyArIHcgKyBsb2NhbF9pZC54XTtcbiAgICAgIH1cbiAgICAgIGlmIChuICsgbG9jYWxfaWQueSA8IHVuaWZvcm1zLk4gJiYgdyArIGxvY2FsX2lkLnggPCB1bmlmb3Jtcy5LKSB7XG4gICAgICAgIHRpbGVLW1RJTEVfU0laRSAqIGxvY2FsX2lkLnkgKyBsb2NhbF9pZC54XSA9IGtleVtrT2Zmc2V0ICsgbG9jYWxfaWQueSAqIHVuaWZvcm1zLksgKyB3ICsgbG9jYWxfaWQueF07XG4gICAgICB9XG4gICAgICB3b3JrZ3JvdXBCYXJyaWVyKCk7XG5cbiAgICAgIGZvciAodmFyIGs6IHUzMiA9IDB1OyBrPFRJTEVfU0laRSAmJiB3K2sgPCB1bmlmb3Jtcy5LOyBrKyspIHtcbiAgICAgICAgdmFsdWUgKz0gdGlsZVFbVElMRV9TSVpFICogbG9jYWxfaWQueSArIGtdICogdGlsZUtbVElMRV9TSVpFICogbG9jYWxfaWQueCArIGtdO1xuICAgICAgfVxuXG4gICAgICB3b3JrZ3JvdXBCYXJyaWVyKCk7XG4gICAgfVxuXG4gICAgbGV0IGhlYWRPZmZzZXQgPSBoZWFkSWR4ICogdW5pZm9ybXMuTSAqIHVuaWZvcm1zLk47XG4gICAgaWYgKGxtIDwgdW5pZm9ybXMuTSAmJiBsbiA8IHVuaWZvcm1zLk4pIHtcbiAgICAgIGxldCBvdXRwdXRJZHggPSBoZWFkT2Zmc2V0ICsgbG0gKiB1bmlmb3Jtcy5OICsgbG47XG4gICAgICBvdXRwdXRbb3V0cHV0SWR4XSA9ICR7ZnQoXCJ2YWx1ZVwiLHApfSAqIHVuaWZvcm1zLmFscGhhO1xuICAgIH1cbiAgfWB9LFQ9ZS5jb21wdXRlKHtuYW1lOlwiQXR0ZW50aW9uUHJvYnNcIixzaGFkZXJDYWNoZTp7aGludDpgJHtwfWAsaW5wdXREZXBlbmRlbmNpZXM6W1widHlwZVwiLFwidHlwZVwiXX0sZ2V0UnVuRGF0YTooKT0+KHtvdXRwdXRzOlt7ZGltczpvLGRhdGFUeXBlOnQuZGF0YVR5cGUsZ3B1RGF0YVR5cGU6MH1dLGRpc3BhdGNoR3JvdXA6Zyxwcm9ncmFtVW5pZm9ybXM6d30pLGdldFNoYWRlclNvdXJjZTp4fSx7aW5wdXRzOiQsb3V0cHV0czpbLTFdfSlbMF07cmV0dXJuIFRjKGUsVCxpLmJhdGNoU2l6ZSppLm51bUhlYWRzKmkuc2VxdWVuY2VMZW5ndGgsaS50b3RhbFNlcXVlbmNlTGVuZ3RoKSxUfSxPYz0oZSx0LHIsYSk9PntsZXQgaT1bYS5iYXRjaFNpemUsYS5zZXF1ZW5jZUxlbmd0aCxhLnZIaWRkZW5TaXplXSxzPTEyLG89e3g6TWF0aC5jZWlsKGEudkhlYWRTaXplL3MpLHk6TWF0aC5jZWlsKGEuc2VxdWVuY2VMZW5ndGgvcyksejphLmJhdGNoU2l6ZSphLm51bUhlYWRzfSxjPVt7dHlwZTpcInVpbnQzMlwiLGRhdGE6YS5zZXF1ZW5jZUxlbmd0aH0se3R5cGU6XCJ1aW50MzJcIixkYXRhOmEudG90YWxTZXF1ZW5jZUxlbmd0aH0se3R5cGU6XCJ1aW50MzJcIixkYXRhOmEudkhlYWRTaXplfSx7dHlwZTpcInVpbnQzMlwiLGRhdGE6YS5udW1IZWFkc30se3R5cGU6XCJ1aW50MzJcIixkYXRhOmEudkhpZGRlblNpemV9XSxwPW09PntsZXQgbD1XKFwicHJvYnNcIix0LmRhdGFUeXBlLHQuZGltcyksZz1XKFwidlwiLHIuZGF0YVR5cGUsci5kaW1zKSxiPUooXCJvdXRwdXRcIix0LmRhdGFUeXBlLGkpLHc9W3tuYW1lOlwiTVwiLHR5cGU6XCJ1MzJcIn0se25hbWU6XCJLXCIsdHlwZTpcInUzMlwifSx7bmFtZTpcIk5cIix0eXBlOlwidTMyXCJ9LHtuYW1lOlwibnVtX2hlYWRzXCIsdHlwZTpcInUzMlwifSx7bmFtZTpcInZfaGlkZGVuX3NpemVcIix0eXBlOlwidTMyXCJ9XTtyZXR1cm5gXG4gIGNvbnN0IFRJTEVfU0laRSA9ICR7c311O1xuICB2YXI8d29ya2dyb3VwPiB0aWxlUTogYXJyYXk8JHtsLnR5cGUudmFsdWV9LCAke3Mqc30+O1xuICB2YXI8d29ya2dyb3VwPiB0aWxlSzogYXJyYXk8JHtsLnR5cGUudmFsdWV9LCAke3Mqc30+O1xuICAke20ucmVnaXN0ZXJVbmlmb3Jtcyh3KS5kZWNsYXJlVmFyaWFibGVzKGwsZyxiKX1cbiAgJHttLm1haW5TdGFydChbcyxzLDFdKX1cbiAgIGxldCBoZWFkSWR4ID0gd29ya2dyb3VwX2lkLno7XG4gICBsZXQgbSA9IHdvcmtncm91cF9pZC55ICogVElMRV9TSVpFICsgbG9jYWxfaWQueTtcbiAgIGxldCBuID0gd29ya2dyb3VwX2lkLnggKiBUSUxFX1NJWkUgKyBsb2NhbF9pZC54O1xuXG4gICBsZXQgb2Zmc2V0QSA9IGhlYWRJZHggKiAodW5pZm9ybXMuTSAqIHVuaWZvcm1zLkspICsgbSAqIHVuaWZvcm1zLks7XG4gICBsZXQgb2Zmc2V0QiA9IGhlYWRJZHggKiAodW5pZm9ybXMuTiAqIHVuaWZvcm1zLkspICsgbjtcblxuICAgdmFyIHZhbHVlID0gJHtsLnR5cGUuc3RvcmFnZX0oMCk7XG4gICBmb3IgKHZhciB3OiB1MzIgPSAwdTsgdyA8IHVuaWZvcm1zLks7IHcgKz0gVElMRV9TSVpFKSB7XG4gICAgIGlmIChtIDwgdW5pZm9ybXMuTSAmJiB3ICsgbG9jYWxfaWQueCA8IHVuaWZvcm1zLkspIHtcbiAgICAgICB0aWxlUVtUSUxFX1NJWkUgKiBsb2NhbF9pZC55ICsgbG9jYWxfaWQueF0gPSBwcm9ic1tvZmZzZXRBICsgdyArIGxvY2FsX2lkLnhdO1xuICAgICB9XG4gICAgIGlmIChuIDwgdW5pZm9ybXMuTiAmJiB3ICsgbG9jYWxfaWQueSA8IHVuaWZvcm1zLkspIHtcbiAgICAgICB0aWxlS1tUSUxFX1NJWkUgKiBsb2NhbF9pZC55ICsgbG9jYWxfaWQueF0gPSB2W29mZnNldEIgKyAodyArIGxvY2FsX2lkLnkpICogdW5pZm9ybXMuTl07XG4gICAgIH1cbiAgICAgd29ya2dyb3VwQmFycmllcigpO1xuICAgICBmb3IgKHZhciBrOiB1MzIgPSAwdTsgazxUSUxFX1NJWkUgJiYgdytrIDwgdW5pZm9ybXMuSzsgaysrKSB7XG4gICAgICAgdmFsdWUgKz0gdGlsZVFbVElMRV9TSVpFICogbG9jYWxfaWQueSArIGtdICogdGlsZUtbVElMRV9TSVpFICogayArIGxvY2FsX2lkLnhdO1xuICAgICB9XG4gICAgIHdvcmtncm91cEJhcnJpZXIoKTtcbiAgIH1cblxuICAgLy8gd2UgbmVlZCB0byB0cmFuc3Bvc2Ugb3V0cHV0IGZyb20gQk5TSF92IHRvIEJTTkRfdlxuICAgbGV0IGJhdGNoSWR4ID0gd29ya2dyb3VwX2lkLnogLyB1bmlmb3Jtcy5udW1faGVhZHM7XG4gICBsZXQgY3VycmVudEJhdGNoSGVhZE51bWJlciA9IHdvcmtncm91cF9pZC56ICUgdW5pZm9ybXMubnVtX2hlYWRzO1xuICAgbGV0IGhlYWRPZmZzZXQgPSAoYmF0Y2hJZHggKiB1bmlmb3Jtcy5NICogdW5pZm9ybXMubnVtX2hlYWRzICsgY3VycmVudEJhdGNoSGVhZE51bWJlcikgKiB1bmlmb3Jtcy5OO1xuICAgaWYgKG0gPCB1bmlmb3Jtcy5NICYmIG4gPCB1bmlmb3Jtcy5OKSB7XG4gICAgIGxldCBvdXRwdXRJZHggPSBiYXRjaElkeCAqIHVuaWZvcm1zLk0gKnVuaWZvcm1zLnZfaGlkZGVuX3NpemUgKyBtICogdW5pZm9ybXMudl9oaWRkZW5fc2l6ZVxuICAgICAgICsgY3VycmVudEJhdGNoSGVhZE51bWJlciAqIHVuaWZvcm1zLk4gKyBuO1xuICAgICBvdXRwdXRbb3V0cHV0SWR4XSA9IHZhbHVlO1xuICAgfVxuICB9YH07cmV0dXJuIGUuY29tcHV0ZSh7bmFtZTpcIkF0dGVudGlvblNjb3JlXCIsc2hhZGVyQ2FjaGU6e2lucHV0RGVwZW5kZW5jaWVzOltcInR5cGVcIixcInR5cGVcIl19LGdldFJ1bkRhdGE6KCk9Pih7b3V0cHV0czpbe2RpbXM6aSxkYXRhVHlwZTp0LmRhdGFUeXBlLGdwdURhdGFUeXBlOjB9XSxkaXNwYXRjaEdyb3VwOm8scHJvZ3JhbVVuaWZvcm1zOmN9KSxnZXRTaGFkZXJTb3VyY2U6cH0se2lucHV0czpbdCxyXSxvdXRwdXRzOlswXX0pWzBdfSxZbj0oZSx0LHIsYSxpLHMsbyxjLHAsbSxsKT0+e2xldCBnPUVjKGUsdCxyLHAsbSxsKTtPYyhlLGcsYSxtKX0sa2M9KGUsdCk9PntsZXQgcj1bdC5iYXRjaFNpemUsdC5udW1IZWFkcyx0LnNlcXVlbmNlTGVuZ3RoLHQuaGVhZFNpemVdLGE9dC5zZXF1ZW5jZUxlbmd0aCxpPXQuaW5wdXRIaWRkZW5TaXplLHM9dC5oZWFkU2l6ZSxvPTEyLGM9e3g6TWF0aC5jZWlsKHQuaGVhZFNpemUvbykseTpNYXRoLmNlaWwodC5zZXF1ZW5jZUxlbmd0aC9vKSx6OnQuYmF0Y2hTaXplKnQubnVtSGVhZHN9LHA9W2UuaW5wdXRzWzBdLGUuaW5wdXRzWzFdLGUuaW5wdXRzWzJdXSxtPVt7dHlwZTpcInVpbnQzMlwiLGRhdGE6YX0se3R5cGU6XCJ1aW50MzJcIixkYXRhOml9LHt0eXBlOlwidWludDMyXCIsZGF0YTpzfSx7dHlwZTpcInVpbnQzMlwiLGRhdGE6dC5udW1IZWFkc30se3R5cGU6XCJ1aW50MzJcIixkYXRhOnQuaGVhZFNpemV9LHt0eXBlOlwidWludDMyXCIsZGF0YTp0LmhpZGRlblNpemV9LHt0eXBlOlwidWludDMyXCIsZGF0YTp0LmhpZGRlblNpemUrdC5oaWRkZW5TaXplK3QudkhpZGRlblNpemV9XSxsPWc9PntsZXQgYj1KKFwib3V0cHV0X3FcIixwWzBdLmRhdGFUeXBlLHIpLHc9SihcIm91dHB1dF9rXCIscFswXS5kYXRhVHlwZSxyKSwkPUooXCJvdXRwdXRfdlwiLHBbMF0uZGF0YVR5cGUscikseD1XKFwiaW5wdXRcIixwWzBdLmRhdGFUeXBlLHBbMF0uZGltcyksVD1XKFwid2VpZ2h0XCIscFsxXS5kYXRhVHlwZSxwWzFdLmRpbXMpLEM9VyhcImJpYXNcIixwWzJdLmRhdGFUeXBlLHBbMl0uZGltcyksUz14LnR5cGUuc3RvcmFnZSxFPVt7bmFtZTpcIk1cIix0eXBlOlwidTMyXCJ9LHtuYW1lOlwiS1wiLHR5cGU6XCJ1MzJcIn0se25hbWU6XCJOXCIsdHlwZTpcInUzMlwifSx7bmFtZTpcIm51bV9oZWFkc1wiLHR5cGU6XCJ1MzJcIn0se25hbWU6XCJoZWFkX3NpemVcIix0eXBlOlwidTMyXCJ9LHtuYW1lOlwiaGlkZGVuX3NpemVcIix0eXBlOlwidTMyXCJ9LHtuYW1lOlwibGRiXCIsdHlwZTpcInUzMlwifV07cmV0dXJuYFxuICBjb25zdCBUSUxFX1NJWkUgPSAke299dTtcbiAgdmFyPHdvcmtncm91cD4gdGlsZUlucHV0OiBhcnJheTwke1N9LCAke28qb30+O1xuICB2YXI8d29ya2dyb3VwPiB0aWxlV2VpZ2h0UTogYXJyYXk8JHtTfSwgJHtvKm99PjtcbiAgdmFyPHdvcmtncm91cD4gdGlsZVdlaWdodEs6IGFycmF5PCR7U30sICR7bypvfT47XG4gIHZhcjx3b3JrZ3JvdXA+IHRpbGVXZWlnaHRWOiBhcnJheTwke1N9LCAke28qb30+O1xuICAke2cucmVnaXN0ZXJVbmlmb3JtcyhFKS5kZWNsYXJlVmFyaWFibGVzKHgsVCxDLGIsdywkKX1cbiAgJHtnLm1haW5TdGFydChbbyxvLDFdKX1cbiAgICBsZXQgYmF0Y2hJbmRleCA9IHdvcmtncm91cF9pZC56IC8gdW5pZm9ybXMubnVtX2hlYWRzO1xuICAgIGxldCBoZWFkTnVtYmVyID0gd29ya2dyb3VwX2lkLnogJSB1bmlmb3Jtcy5udW1faGVhZHM7XG4gICAgbGV0IG0gPSB3b3JrZ3JvdXBfaWQueSAqIFRJTEVfU0laRSArIGxvY2FsX2lkLnk7XG4gICAgbGV0IG4gPSB3b3JrZ3JvdXBfaWQueCAqIFRJTEVfU0laRSArIGxvY2FsX2lkLng7XG5cbiAgICBsZXQgaW5wdXRPZmZzZXQgPSBiYXRjaEluZGV4ICogKHVuaWZvcm1zLk0gKiB1bmlmb3Jtcy5LKSArIG0gKiB1bmlmb3Jtcy5LO1xuICAgIGxldCBiaWFzT2Zmc2V0USA9IGhlYWROdW1iZXIgKiB1bmlmb3Jtcy5oZWFkX3NpemU7XG4gICAgbGV0IGJpYXNPZmZzZXRLID0gdW5pZm9ybXMuaGlkZGVuX3NpemUgKyBiaWFzT2Zmc2V0UTtcbiAgICBsZXQgYmlhc09mZnNldFYgPSB1bmlmb3Jtcy5oaWRkZW5fc2l6ZSArIGJpYXNPZmZzZXRLO1xuXG4gICAgdmFyIHZhbHVlUSA9ICR7U30oMCk7XG4gICAgdmFyIHZhbHVlSyA9ICR7U30oMCk7XG4gICAgdmFyIHZhbHVlViA9ICR7U30oMCk7XG4gICAgZm9yICh2YXIgdzogdTMyID0gMHU7IHcgPCB1bmlmb3Jtcy5LOyB3ICs9IFRJTEVfU0laRSkge1xuICAgICAgaWYgKG0gPCB1bmlmb3Jtcy5NICYmIHcgKyBsb2NhbF9pZC54IDwgdW5pZm9ybXMuSykge1xuICAgICAgICB0aWxlSW5wdXRbVElMRV9TSVpFICogbG9jYWxfaWQueSArIGxvY2FsX2lkLnhdID0gaW5wdXRbaW5wdXRPZmZzZXQgKyB3ICsgbG9jYWxfaWQueF07XG4gICAgICB9XG4gICAgICBpZiAobiA8IHVuaWZvcm1zLk4gJiYgdyArIGxvY2FsX2lkLnkgPCB1bmlmb3Jtcy5LKSB7XG4gICAgICAgIGxldCBvZmZzZXQgPSBuICsgKHcgKyBsb2NhbF9pZC55KSAqIHVuaWZvcm1zLmxkYjtcbiAgICAgICAgdGlsZVdlaWdodFFbVElMRV9TSVpFICogbG9jYWxfaWQueSArIGxvY2FsX2lkLnhdID0gd2VpZ2h0W2JpYXNPZmZzZXRRICsgb2Zmc2V0XTtcbiAgICAgICAgdGlsZVdlaWdodEtbVElMRV9TSVpFICogbG9jYWxfaWQueSArIGxvY2FsX2lkLnhdID0gd2VpZ2h0W2JpYXNPZmZzZXRLICsgb2Zmc2V0XTtcbiAgICAgICAgdGlsZVdlaWdodFZbVElMRV9TSVpFICogbG9jYWxfaWQueSArIGxvY2FsX2lkLnhdID0gd2VpZ2h0W2JpYXNPZmZzZXRWICsgb2Zmc2V0XTtcbiAgICAgIH1cbiAgICAgIHdvcmtncm91cEJhcnJpZXIoKTtcbiAgICAgIGZvciAodmFyIGs6IHUzMiA9IDB1OyBrPFRJTEVfU0laRSAmJiB3K2sgPCB1bmlmb3Jtcy5LOyBrKyspIHtcbiAgICAgICAgbGV0IGlucHV0VGlsZU9mZnNldCA9IFRJTEVfU0laRSAqIGxvY2FsX2lkLnkgKyBrO1xuICAgICAgICBsZXQgd2VpZ2h0VGlsZU9mZnNldCA9IFRJTEVfU0laRSAqIGsgKyBsb2NhbF9pZC54O1xuICAgICAgICB2YWx1ZVEgKz0gdGlsZUlucHV0W2lucHV0VGlsZU9mZnNldF0gKiB0aWxlV2VpZ2h0UVt3ZWlnaHRUaWxlT2Zmc2V0XTtcbiAgICAgICAgdmFsdWVLICs9IHRpbGVJbnB1dFtpbnB1dFRpbGVPZmZzZXRdICogdGlsZVdlaWdodEtbd2VpZ2h0VGlsZU9mZnNldF07XG4gICAgICAgIHZhbHVlViArPSB0aWxlSW5wdXRbaW5wdXRUaWxlT2Zmc2V0XSAqIHRpbGVXZWlnaHRWW3dlaWdodFRpbGVPZmZzZXRdO1xuICAgICAgfVxuXG4gICAgICB3b3JrZ3JvdXBCYXJyaWVyKCk7XG4gICAgfVxuXG4gICAgbGV0IGhlYWRPZmZzZXQgPSAobSAqIHVuaWZvcm1zLk4gKyBuKSAlIHVuaWZvcm1zLmhlYWRfc2l6ZTtcbiAgICB2YWx1ZVEgKz0gYmlhc1toZWFkT2Zmc2V0ICsgYmlhc09mZnNldFFdO1xuICAgIHZhbHVlSyArPSBiaWFzW2hlYWRPZmZzZXQgKyBiaWFzT2Zmc2V0S107XG4gICAgdmFsdWVWICs9IGJpYXNbaGVhZE9mZnNldCArIGJpYXNPZmZzZXRWXTtcblxuICAgIGxldCBvZmZzZXQgPSB3b3JrZ3JvdXBfaWQueiAqIHVuaWZvcm1zLk0gKiB1bmlmb3Jtcy5OO1xuICAgIGlmIChtIDwgdW5pZm9ybXMuTSAmJiBuIDwgdW5pZm9ybXMuTikge1xuICAgICAgbGV0IG91dHB1dElkeCA9IG9mZnNldCArIG0gKiB1bmlmb3Jtcy5OICsgbjtcbiAgICAgIG91dHB1dF9xW291dHB1dElkeF0gPSB2YWx1ZVE7XG4gICAgICBvdXRwdXRfa1tvdXRwdXRJZHhdID0gdmFsdWVLO1xuICAgICAgb3V0cHV0X3Zbb3V0cHV0SWR4XSA9IHZhbHVlVjtcbiAgICB9XG4gIH1gfTtyZXR1cm4gZS5jb21wdXRlKHtuYW1lOlwiQXR0ZW50aW9uUHJlcGFyZVwiLHNoYWRlckNhY2hlOntpbnB1dERlcGVuZGVuY2llczpbXCJ0eXBlXCIsXCJ0eXBlXCIsXCJ0eXBlXCJdfSxnZXRSdW5EYXRhOigpPT4oe291dHB1dHM6W3tkaW1zOnIsZGF0YVR5cGU6ZS5pbnB1dHNbMF0uZGF0YVR5cGUsZ3B1RGF0YVR5cGU6MH0se2RpbXM6cixkYXRhVHlwZTplLmlucHV0c1swXS5kYXRhVHlwZSxncHVEYXRhVHlwZTowfSx7ZGltczpyLGRhdGFUeXBlOmUuaW5wdXRzWzBdLmRhdGFUeXBlLGdwdURhdGFUeXBlOjB9XSxkaXNwYXRjaEdyb3VwOmMscHJvZ3JhbVVuaWZvcm1zOm19KSxnZXRTaGFkZXJTb3VyY2U6bH0se2lucHV0czpwLG91dHB1dHM6Wy0xLC0xLC0xXX0pfSx4cz0oZSx0KT0+e2xldCByPUFjKGUuaW5wdXRzLHQpLFthLGksc109a2MoZSxyKTtyZXR1cm4gWW4oZSxhLGkscyxlLmlucHV0c1s0XSx2b2lkIDAsdm9pZCAwLHZvaWQgMCxlLmlucHV0c1s1XSxyLHQpfX0pO3ZhciBQYyxSYyxCYyxDcyxJcz1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7YnQoKTtDZSgpO1hlKCk7X2UoKTtQYz0oZSx0KT0+e2lmKCFlfHxlLmxlbmd0aCE9PTUpdGhyb3cgbmV3IEVycm9yKFwiQmF0Y2hOb3JtYWxpemF0aW9uIHJlcXVpcmVzIDUgaW5wdXRzXCIpO2xldCByPShhLGkscyk9PntsZXQgbz1pLmxlbmd0aDtpZihvIT09YS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKGAke3N9OiBudW0gZGltZW5zaW9ucyAhPSAke299YCk7aS5mb3JFYWNoKChjLHApPT57aWYoYyE9PWFbcF0pdGhyb3cgbmV3IEVycm9yKGAke3N9OiBkaW1bJHtwfV0gZG8gbm90IG1hdGNoYCl9KX07aWYoZVswXS5kaW1zLmxlbmd0aD4xKXtsZXQgYT10LmZvcm1hdD09PVwiTkhXQ1wiP3Quc3BhdGlhbD9lWzBdLmRpbXMuc2xpY2UoLTEpOmVbMF0uZGltcy5zbGljZSgtMSkuY29uY2F0KGVbMF0uZGltcy5zbGljZSgxLGVbMF0uZGltcy5sZW5ndGgtMSkpOmVbMF0uZGltcy5zbGljZSgxLHQuc3BhdGlhbD8yOnZvaWQgMCk7cihlWzFdLmRpbXMsYSxcIkludmFsaWQgaW5wdXQgc2NhbGVcIikscihlWzJdLmRpbXMsYSxcIkludmFsaWQgaW5wdXQgQlwiKSxyKGVbM10uZGltcyxhLFwiSW52YWxpZCBpbnB1dCBtZWFuXCIpLHIoZVs0XS5kaW1zLGEsXCJJbnZhbGlkIGlucHV0IHZhclwiKX1lbHNlIHIoZVsxXS5kaW1zLFsxXSxcIkludmFsaWQgaW5wdXQgc2NhbGVcIikscihlWzJdLmRpbXMsWzFdLFwiSW52YWxpZCBpbnB1dCBCXCIpLHIoZVszXS5kaW1zLFsxXSxcIkludmFsaWQgaW5wdXQgbWVhblwiKSxyKGVbNF0uZGltcyxbMV0sXCJJbnZhbGlkIGlucHV0IHZhclwiKX0sUmM9KGUsdCk9PntsZXR7ZXBzaWxvbjpyLHNwYXRpYWw6YSxmb3JtYXQ6aX09dCxzPWVbMF0uZGltcyxvPWE/TGUoc1tzLmxlbmd0aC0xXSk6MSxjPWk9PT1cIk5IV0NcIiYmcy5sZW5ndGg+MT9vOjEscD1OLnNpemUocykvbyxtPWEsbD1tP3MubGVuZ3RoOnMsZz1XKFwieFwiLGVbMF0uZGF0YVR5cGUsZVswXS5kaW1zLG8pLGI9VyhcInNjYWxlXCIsZVsxXS5kYXRhVHlwZSxlWzFdLmRpbXMsYyksdz1XKFwiYmlhc1wiLGVbMl0uZGF0YVR5cGUsZVsyXS5kaW1zLGMpLCQ9VyhcImlucHV0TWVhblwiLGVbM10uZGF0YVR5cGUsZVszXS5kaW1zLGMpLHg9VyhcImlucHV0VmFyXCIsZVs0XS5kYXRhVHlwZSxlWzRdLmRpbXMsYyksVD1KKFwieVwiLGVbMF0uZGF0YVR5cGUsbCxvKSxDPSgpPT57bGV0IEU9XCJcIjtpZihhKUU9YGxldCBjT2Zmc2V0ID0gJHtzLmxlbmd0aD09PTE/XCIwdVwiOmk9PT1cIk5IV0NcIj9gb3V0cHV0SW5kaWNlc1ske3MubGVuZ3RoLTF9XSAvICR7b31gOlwib3V0cHV0SW5kaWNlc1sxXVwifTtgO2Vsc2UgaWYoaT09PVwiTkNIV1wiKUU9YFxuICAgICAgICAgICAgJHtULmluZGljZXNTZXQoXCJvdXRwdXRJbmRpY2VzXCIsXCIwXCIsXCIwXCIpfVxuICAgICAgICAgICAgbGV0IGNPZmZzZXQgPSAke1QuaW5kaWNlc1RvT2Zmc2V0KFwib3V0cHV0SW5kaWNlc1wiKX07YDtlbHNle0U9YHZhciBjSW5kaWNlcyA9ICR7Yi50eXBlLmluZGljZXN9KDApO1xuICAgICAgICAgICAgICAgICAgICAgICBjSW5kaWNlc1swXSA9IG91dHB1dEluZGljZXNbJHtzLmxlbmd0aC0xfV07YDtmb3IobGV0IE89MTtPPGIucmFuaztPKyspRSs9YGNJbmRpY2VzWyR7T31dID0gb3V0cHV0SW5kaWNlc1ske099XTtgO0UrPWBsZXQgY09mZnNldCA9ICR7Yi5pbmRpY2VzVG9PZmZzZXQoXCJjSW5kaWNlc1wiKX07YH1yZXR1cm4gRX0sUz1FPT5gXG4gIGNvbnN0IGVwc2lsb24gPSAke3J9O1xuICAke0UucmVnaXN0ZXJVbmlmb3JtKFwib3V0cHV0U2l6ZVwiLFwidTMyXCIpLmRlY2xhcmVWYXJpYWJsZXMoZyxiLHcsJCx4LFQpfVxuICAke0UubWFpblN0YXJ0KCl9XG4gICR7RS5ndWFyZEFnYWluc3RPdXRPZkJvdW5kc1dvcmtncm91cFNpemVzKFwidW5pZm9ybXMub3V0cHV0U2l6ZVwiKX1cbiAgICB2YXIgb3V0cHV0SW5kaWNlcyA9ICR7VC5vZmZzZXRUb0luZGljZXMoYGdsb2JhbF9pZHggKiAke299YCl9O1xuICAgICR7QygpfVxuICAgIGxldCBzY2FsZSA9ICR7Yi5nZXRCeU9mZnNldChcImNPZmZzZXRcIil9O1xuICAgIGxldCBiaWFzID0gJHt3LmdldEJ5T2Zmc2V0KFwiY09mZnNldFwiKX07XG4gICAgbGV0IGlucHV0TWVhbiA9ICR7JC5nZXRCeU9mZnNldChcImNPZmZzZXRcIil9O1xuICAgIGxldCBpbnB1dFZhciA9ICR7eC5nZXRCeU9mZnNldChcImNPZmZzZXRcIil9O1xuICAgIGxldCB4ID0gJHtnLmdldEJ5T2Zmc2V0KFwiZ2xvYmFsX2lkeFwiKX07XG4gICAgbGV0IHZhbHVlID0gKHggLSBpbnB1dE1lYW4pICogaW52ZXJzZVNxcnQoaW5wdXRWYXIgKyBlcHNpbG9uKSAqIHNjYWxlICsgYmlhcztcbiAgICAke1Quc2V0QnlPZmZzZXQoXCJnbG9iYWxfaWR4XCIsXCJ2YWx1ZVwiKX1cbiAgfWA7cmV0dXJue25hbWU6XCJCYXRjaE5vcm1hbGl6YXRpb25cIixzaGFkZXJDYWNoZTp7aGludDpgJHt0LmVwc2lsb259XyR7dC5mb3JtYXR9XyR7YX1fJHtvfWAsaW5wdXREZXBlbmRlbmNpZXM6bT9bXCJyYW5rXCIsXCJ0eXBlXCIsXCJ0eXBlXCIsXCJ0eXBlXCIsXCJ0eXBlXCJdOnZvaWQgMH0sZ2V0U2hhZGVyU291cmNlOlMsZ2V0UnVuRGF0YTooKT0+KHtvdXRwdXRzOlt7ZGltczplWzBdLmRpbXMsZGF0YVR5cGU6ZVswXS5kYXRhVHlwZX1dLGRpc3BhdGNoR3JvdXA6e3g6TWF0aC5jZWlsKHAvNjQpfSxwcm9ncmFtVW5pZm9ybXM6bT9be3R5cGU6XCJ1aW50MzJcIixkYXRhOnB9LC4uLkwocyldOlt7dHlwZTpcInVpbnQzMlwiLGRhdGE6cH1dfSl9fSxCYz1lPT54ZShlKSxDcz0oZSx0KT0+e2xldHtpbnB1dHM6cixvdXRwdXRDb3VudDphfT1lLGk9QmMoey4uLnQsb3V0cHV0Q291bnQ6YX0pO2lmKEFlLndlYmdwdS52YWxpZGF0ZUlucHV0Q29udGVudCYmUGMocixpKSx0LnRyYWluaW5nTW9kZSl0aHJvdyBuZXcgRXJyb3IoXCJCYXRjaE5vcm1hbGl6YXRpb24gdHJhaW5pbmdNb2RlIGlzIG5vdCBzdXBwb3J0ZWQgeWV0LlwiKTtlLmNvbXB1dGUoUmMocixpKSl9fSk7dmFyIE1jLERjLEFzLFRzPVEoKCk9PntcInVzZSBzdHJpY3RcIjtDZSgpO19lKCk7TWM9ZT0+e2lmKGVbMF0uZGltcy5sZW5ndGghPT0zKXRocm93IG5ldyBFcnJvcihcImlucHV0IHNob3VsZCBoYXZlIDMgZGltZW5zaW9uc1wiKTtpZighWzMyMCw2NDAsMTI4MF0uaW5jbHVkZXMoZVswXS5kaW1zWzJdKSl0aHJvdyBuZXcgRXJyb3IoXCJudW1iZXIgb2YgY2hhbm5lbHMgc2hvdWxkIGJlIDMyMCwgNjQwIG9yIDEyODBcIik7aWYoZVsxXS5kaW1zLmxlbmd0aCE9PTEpdGhyb3cgbmV3IEVycm9yKFwiYmlhcyBpcyBleHBlY3RlZCB0byBoYXZlIDEgZGltZW5zaW9uc1wiKTtpZihlWzBdLmRpbXNbMl0hPT1lWzFdLmRpbXNbMF0pdGhyb3cgbmV3IEVycm9yKFwibGFzdCBkaW1lbnNpb24gb2YgaW5wdXQgYW5kIGJpYXMgYXJlIG5vdCB0aGUgc2FtZVwiKX0sRGM9ZT0+e2xldCB0PWVbMF0uZGltcyxyPWVbMF0uZGltc1syXSxhPU4uc2l6ZSh0KS80LGk9ZVswXS5kYXRhVHlwZSxzPVcoXCJpbnB1dFwiLGksdCw0KSxvPVcoXCJiaWFzXCIsaSxbcl0sNCksYz1XKFwicmVzaWR1YWxcIixpLHQsNCkscD1KKFwib3V0cHV0XCIsaSx0LDQpO3JldHVybntuYW1lOlwiQmlhc0FkZFwiLGdldFJ1bkRhdGE6KCk9Pih7b3V0cHV0czpbe2RpbXM6dCxkYXRhVHlwZTplWzBdLmRhdGFUeXBlfV0sZGlzcGF0Y2hHcm91cDp7eDpNYXRoLmNlaWwoYS82NCl9fSksZ2V0U2hhZGVyU291cmNlOmw9PmBcbiAgY29uc3QgY2hhbm5lbHMgPSAke3J9dSAvIDQ7XG4gICR7bC5kZWNsYXJlVmFyaWFibGVzKHMsbyxjLHApfVxuXG4gICR7bC5tYWluU3RhcnQoKX1cbiAgICAke2wuZ3VhcmRBZ2FpbnN0T3V0T2ZCb3VuZHNXb3JrZ3JvdXBTaXplcyhhKX1cbiAgICBsZXQgdmFsdWUgPSAke3MuZ2V0QnlPZmZzZXQoXCJnbG9iYWxfaWR4XCIpfVxuICAgICAgKyAke28uZ2V0QnlPZmZzZXQoXCJnbG9iYWxfaWR4ICUgY2hhbm5lbHNcIil9ICsgJHtjLmdldEJ5T2Zmc2V0KFwiZ2xvYmFsX2lkeFwiKX07XG4gICAgJHtwLnNldEJ5T2Zmc2V0KFwiZ2xvYmFsX2lkeFwiLFwidmFsdWVcIil9XG4gIH1gfX0sQXM9ZT0+e01jKGUuaW5wdXRzKSxlLmNvbXB1dGUoRGMoZS5pbnB1dHMpKX19KTt2YXIgemMsRWUsRXMsT3Msa3MsUHMsUnMsQnMsTXMsRHMsenMsVWMsVXMsV3MsTnMsVnMsWm4sSHMsWG4sTHMsR3MsRnMscXMsanMsS3MsWXMsWnMsWHMsUXMsSnMsZXUsdHUscnUsbnUsYXUsaXUsb3Usc3UsWGE9USgoKT0+e1widXNlIHN0cmljdFwiO3plKCk7Q2UoKTtYZSgpO19lKCk7emM9KGUsdCxyLGEsaSxzKT0+e2xldCBvPU1hdGguY2VpbCh0LzQpLGM9XCJcIjt0eXBlb2YgaT09XCJzdHJpbmdcIj9jPWAke2l9KGEpYDpjPWkoXCJhXCIpO2xldCBwPVcoXCJpbnB1dERhdGFcIixyLFtvXSw0KSxtPUooXCJvdXRwdXREYXRhXCIsYSxbb10sNCk7cmV0dXJuYFxuICAgICAgJHtlLnJlZ2lzdGVyVW5pZm9ybShcInZlY19zaXplXCIsXCJ1MzJcIikuZGVjbGFyZVZhcmlhYmxlcyhwLG0pfVxuXG4gICR7cz8/XCJcIn1cblxuICAke2UubWFpblN0YXJ0KCl9XG4gICAgJHtlLmd1YXJkQWdhaW5zdE91dE9mQm91bmRzV29ya2dyb3VwU2l6ZXMoXCJ1bmlmb3Jtcy52ZWNfc2l6ZVwiKX1cblxuICAgIGxldCBhID0gJHtwLmdldEJ5T2Zmc2V0KFwiZ2xvYmFsX2lkeFwiKX07XG4gICAgJHttLnNldEJ5T2Zmc2V0KFwiZ2xvYmFsX2lkeFwiLGMpfVxuICB9YH0sRWU9KGUsdCxyLGEsaSxzPWUuZGF0YVR5cGUpPT4oe25hbWU6dCxzaGFkZXJDYWNoZTp7aGludDppLGlucHV0RGVwZW5kZW5jaWVzOltcInR5cGVcIl19LGdldFNoYWRlclNvdXJjZTpvPT56YyhvLE4uc2l6ZShlLmRpbXMpLGUuZGF0YVR5cGUscyxyLGEpLGdldFJ1bkRhdGE6bz0+KHtvdXRwdXRzOlt7ZGltczplLmRpbXMsZGF0YVR5cGU6c31dLGRpc3BhdGNoR3JvdXA6e3g6TWF0aC5jZWlsKE4uc2l6ZShvWzBdLmRpbXMpLzY0LzQpfSxwcm9ncmFtVW5pZm9ybXM6W3t0eXBlOlwidWludDMyXCIsZGF0YTpNYXRoLmNlaWwoTi5zaXplKGUuZGltcykvNCl9XX0pfSksRXM9ZT0+e2UuY29tcHV0ZShFZShlLmlucHV0c1swXSxcIkFic1wiLFwiYWJzXCIpKX0sT3M9ZT0+e2UuY29tcHV0ZShFZShlLmlucHV0c1swXSxcIkFjb3NcIixcImFjb3NcIikpfSxrcz1lPT57ZS5jb21wdXRlKEVlKGUuaW5wdXRzWzBdLFwiQWNvc2hcIixcImFjb3NoXCIpKX0sUHM9ZT0+e2UuY29tcHV0ZShFZShlLmlucHV0c1swXSxcIkFzaW5cIixcImFzaW5cIikpfSxScz1lPT57ZS5jb21wdXRlKEVlKGUuaW5wdXRzWzBdLFwiQXNpbmhcIixcImFzaW5oXCIpKX0sQnM9ZT0+e2UuY29tcHV0ZShFZShlLmlucHV0c1swXSxcIkF0YW5cIixcImF0YW5cIikpfSxNcz1lPT57ZS5jb21wdXRlKEVlKGUuaW5wdXRzWzBdLFwiQXRhbmhcIixcImF0YW5oXCIpKX0sRHM9ZT0+eGUoZSksenM9KGUsdCk9PntsZXQgcjtzd2l0Y2godC50byl7Y2FzZSAxMDpyPVwidmVjNDxmMTY+XCI7YnJlYWs7Y2FzZSAxOnI9XCJ2ZWM0PGYzMj5cIjticmVhaztjYXNlIDEyOnI9XCJ2ZWM0PHUzMj5cIjticmVhaztjYXNlIDY6cj1cInZlYzQ8aTMyPlwiO2JyZWFrO2Nhc2UgOTpyPVwidmVjNDxib29sPlwiO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IFJhbmdlRXJyb3IoYG5vdCBzdXBwb3J0ZWQgdHlwZSAoc3BlY2lmaWVkIGluIGF0dHJpYnV0ZSAndG8nIGZyb20gJ0Nhc3QnIG9wZXJhdG9yKTogJHt0LnRvfWApfWUuY29tcHV0ZShFZShlLmlucHV0c1swXSxcIkNhc3RcIixyLHZvaWQgMCx0LmNhY2hlS2V5LHQudG8pKX0sVWM9ZT0+e2xldCB0PWUubGVuZ3RoPj0yJiZlWzFdLmRhdGEhPT0wP2VbMV0uZ2V0RmxvYXQzMkFycmF5KClbMF06R24scj1lLmxlbmd0aD49MyYmZVsyXS5kYXRhIT09MD9lWzJdLmdldEZsb2F0MzJBcnJheSgpWzBdOkZuO3JldHVybiB4ZSh7bWluOnQsbWF4OnJ9KX0sVXM9KGUsdCk9PntsZXQgcj1lLmlucHV0cy5sZW5ndGg9PT0xP3Q6VWMoZS5pbnB1dHMpLGE9X3QoZS5pbnB1dHNbMF0uZGF0YVR5cGUpO2UuY29tcHV0ZShFZShlLmlucHV0c1swXSxcIkNsaXBcIixpPT5gY2xhbXAoJHtpfSwgY2xpcF9taW5fLCBjbGlwX21heF8pYCxgXG4gICAgY29uc3QgY2xpcF9taW5fOiB2ZWM0PCR7YX0+ID0gdmVjNCgke2F9KCR7ci5taW59KSk7XG4gICAgY29uc3QgY2xpcF9tYXhfOiB2ZWM0PCR7YX0+ID0gdmVjNCgke2F9KCR7ci5tYXh9KSk7XG5gLHIuY2FjaGVLZXkpLHtpbnB1dHM6WzBdfSl9LFdzPWU9PntlLmNvbXB1dGUoRWUoZS5pbnB1dHNbMF0sXCJDZWlsXCIsXCJjZWlsXCIpKX0sTnM9ZT0+e2UuY29tcHV0ZShFZShlLmlucHV0c1swXSxcIkNvc1wiLFwiY29zXCIpKX0sVnM9ZT0+e2UuY29tcHV0ZShFZShlLmlucHV0c1swXSxcIkNvc2hcIixcImNvc2hcIikpfSxabj1lPT54ZShlKSxIcz0oZSx0KT0+e2xldCByPV90KGUuaW5wdXRzWzBdLmRhdGFUeXBlKTtlLmNvbXB1dGUoRWUoZS5pbnB1dHNbMF0sXCJFbHVcIixhPT5gZWx1X3ZmMzIoJHthfSlgLGBcbiAgY29uc3QgZWx1X2FscGhhXyA9ICR7cn0oJHt0LmFscGhhfSk7XG5cbiAgZm4gZWx1X2YzMihhOiAke3J9KSAtPiAke3J9IHtcbiAgcmV0dXJuIHNlbGVjdCgoZXhwKGEpIC0gMS4wKSAqIGVsdV9hbHBoYV8sIGEsIGEgPj0gMC4wKTtcbiAgfVxuXG4gIGZuIGVsdV92ZjMyKHY6IHZlYzQ8JHtyfT4pIC0+IHZlYzQ8JHtyfT4ge1xuICByZXR1cm4gdmVjNChlbHVfZjMyKHYueCksIGVsdV9mMzIodi55KSwgZWx1X2YzMih2LnopLCBlbHVfZjMyKHYudykpO1xuICB9YCx0LmNhY2hlS2V5KSl9LFhuPShlLHQ9XCJmMzJcIik9PmBcbmNvbnN0IHIwOiAke3R9ID0gMC4zMjc1OTExO1xuY29uc3QgcjE6ICR7dH0gPSAwLjI1NDgyOTU5MjtcbmNvbnN0IHIyOiAke3R9ID0gLTAuMjg0NDk2NzM2O1xuY29uc3QgcjM6ICR7dH0gPSAxLjQyMTQxMzc0MTtcbmNvbnN0IHI0OiAke3R9ID0gLTEuNDUzMTUyMDI3O1xuY29uc3QgcjU6ICR7dH0gPSAxLjA2MTQwNTQyOTtcblxuZm4gZXJmX3ZmMzIodjogJHtlfSkgLT4gJHtlfSB7XG4gIGxldCBhYnN2ID0gYWJzKHYpO1xuICBsZXQgeCA9IDEuMCAvICgxLjAgKyByMCAqIGFic3YpO1xuICByZXR1cm4gc2lnbih2KSAqICgxLjAgLSAoKCgocjUgKiB4ICsgcjQpICogeCArIHIzKSAqIHggKyByMikgKiB4ICsgcjEpICogeCAqIGV4cCgtYWJzdiAqIGFic3YpKTtcbn1gLExzPWU9PntsZXQgdD1fdChlLmlucHV0c1swXS5kYXRhVHlwZSk7ZS5jb21wdXRlKEVlKGUuaW5wdXRzWzBdLFwiRXJmXCIscj0+YGVyZl92ZjMyKCR7cn0pYCxYbihgdmVjNDwke3R9PmAsdCkpKX0sR3M9ZT0+e2UuY29tcHV0ZShFZShlLmlucHV0c1swXSxcIkV4cFwiLFwiZXhwXCIpKX0sRnM9ZT0+e2UuY29tcHV0ZShFZShlLmlucHV0c1swXSxcIkZsb29yXCIsXCJmbG9vclwiKSl9LHFzPWU9PntsZXQgdD1fdChlLmlucHV0c1swXS5kYXRhVHlwZSk7ZS5jb21wdXRlKEVlKGUuaW5wdXRzWzBdLFwiR2VsdVwiLHI9PmAwLjUgKiAke3J9ICogKDEuMCArIGVyZl92ZjMyKCR7cn0gKiAwLjcwNzEwNjc4MTE4NjU0NzUpKWAsWG4oYHZlYzQ8JHt0fT5gLHQpKSl9LGpzPShlLHQpPT57bGV0IHI9X3QoZS5pbnB1dHNbMF0uZGF0YVR5cGUpO2UuY29tcHV0ZShFZShlLmlucHV0c1swXSxcIkxlYWt5UmVsdVwiLGE9PmBzZWxlY3QobGVha3lfcmVsdV9hbHBoYV8gKiAke2F9LCAke2F9LCAke2F9ID49IHZlYzQ8JHtyfT4oMC4wKSlgLGBjb25zdCBsZWFreV9yZWx1X2FscGhhXyA9ICR7cn0oJHt0LmFscGhhfSk7YCx0LmNhY2hlS2V5KSl9LEtzPWU9PntlLmNvbXB1dGUoRWUoZS5pbnB1dHNbMF0sXCJOb3RcIix0PT5gISR7dH1gKSl9LFlzPWU9PntlLmNvbXB1dGUoRWUoZS5pbnB1dHNbMF0sXCJOZWdcIix0PT5gLSR7dH1gKSl9LFpzPWU9PntlLmNvbXB1dGUoRWUoZS5pbnB1dHNbMF0sXCJSZWNpcHJvY2FsXCIsdD0+YDEuMC8ke3R9YCkpfSxYcz1lPT57bGV0IHQ9X3QoZS5pbnB1dHNbMF0uZGF0YVR5cGUpO2UuY29tcHV0ZShFZShlLmlucHV0c1swXSxcIlJlbHVcIixyPT5gc2VsZWN0KHZlYzQ8JHt0fT4oMC4wKSwgJHtyfSwgJHtyfSA+IHZlYzQ8JHt0fT4oMC4wKSlgKSl9LFFzPWU9PntlLmNvbXB1dGUoRWUoZS5pbnB1dHNbMF0sXCJTaWdtb2lkXCIsdD0+YCgxLjAgLyAoMS4wICsgZXhwKC0ke3R9KSkpYCkpfSxKcz1lPT54ZShlKSxldT0oZSx0KT0+e2xldCByPV90KGUuaW5wdXRzWzBdLmRhdGFUeXBlKTtlLmNvbXB1dGUoRWUoZS5pbnB1dHNbMF0sXCJIYXJkU2lnbW9pZFwiLGE9PmBtYXgodmVjNDwke3J9PigwLjApLCBtaW4odmVjNDwke3J9PigxLjApLCAke3QuYWxwaGF9ICogJHthfSArIHZlYzQ8JHtyfT4oJHt0LmJldGF9KSkpYCx2b2lkIDAsdC5jYWNoZUtleSkpfSx0dT1lPT57ZS5jb21wdXRlKEVlKGUuaW5wdXRzWzBdLFwiU2luXCIsXCJzaW5cIikpfSxydT1lPT57ZS5jb21wdXRlKEVlKGUuaW5wdXRzWzBdLFwiU2luaFwiLFwic2luaFwiKSl9LG51PWU9PntlLmNvbXB1dGUoRWUoZS5pbnB1dHNbMF0sXCJTcXJ0XCIsXCJzcXJ0XCIpKX0sYXU9ZT0+e2UuY29tcHV0ZShFZShlLmlucHV0c1swXSxcIlRhblwiLFwidGFuXCIpKX0saXU9ZT0+e2UuY29tcHV0ZShFZShlLmlucHV0c1swXSxcIlRhbmhcIix0PT5gc2lnbigke3R9KSAqICgxIC0gZXhwKC0yICogYWJzKCR7dH0pKSkgLyAoMSArIGV4cCgtMiAqIGFicygke3R9KSkpYCkpfSxvdT0oZSx0KT0+e2xldCByPV90KGUuaW5wdXRzWzBdLmRhdGFUeXBlKTtyZXR1cm4gZS5jb21wdXRlKEVlKGUuaW5wdXRzWzBdLFwiVGhyZXNob2xkZWRSZWx1XCIsYT0+YHNlbGVjdCh2ZWM0PCR7cn0+KDAuMCksICR7YX0sICR7YX0gPiB0aHJlc2hvbGRlZF9yZWx1X2FscGhhXylgLGBjb25zdCB0aHJlc2hvbGRlZF9yZWx1X2FscGhhXyA9IHZlYzQ8JHtyfT4oJHt0LmFscGhhfSk7YCx0LmNhY2hlS2V5KSksMH0sc3U9ZT0+e2UuY29tcHV0ZShFZShlLmlucHV0c1swXSxcIkxvZ1wiLFwibG9nXCIpKX19KTt2YXIgTmMsVmMsdXUsbHU9USgoKT0+e1widXNlIHN0cmljdFwiO0NlKCk7X2UoKTtYYSgpO05jPWU9PntpZihlWzBdLmRpbXMubGVuZ3RoIT09Myl0aHJvdyBuZXcgRXJyb3IoXCJpbnB1dCBzaG91bGQgaGF2ZSAzIGRpbWVuc2lvbnNcIik7aWYoIVsyNTYwLDUxMjAsMTAyNDBdLmluY2x1ZGVzKGVbMF0uZGltc1syXSkpdGhyb3cgbmV3IEVycm9yKFwiaGlkZGVuIHN0YXRlIHNob3VsZCBiZSAyNTYwLCA1MTIwIG9yIDEwMjQwXCIpO2lmKGVbMV0uZGltcy5sZW5ndGghPT0xKXRocm93IG5ldyBFcnJvcihcImJpYXMgaXMgZXhwZWN0ZWQgdG8gaGF2ZSAxIGRpbWVuc2lvbnNcIik7aWYoZVswXS5kaW1zWzJdIT09ZVsxXS5kaW1zWzBdKXRocm93IG5ldyBFcnJvcihcImxhc3QgZGltZW5zaW9uIG9mIGlucHV0IGFuZCBiaWFzIGFyZSBub3QgdGhlIHNhbWVcIil9LFZjPWU9PntsZXQgdD1lWzBdLmRpbXMuc2xpY2UoKTt0WzJdPXRbMl0vMjtsZXQgcj1XKFwiaW5wdXRcIixlWzBdLmRhdGFUeXBlLGVbMF0uZGltcyw0KSxhPVcoXCJiaWFzXCIsZVswXS5kYXRhVHlwZSxbZVswXS5kaW1zWzJdXSw0KSxpPUooXCJvdXRwdXRcIixlWzBdLmRhdGFUeXBlLHQsNCkscz1OLnNpemUodCkvNCxvPUhlKGVbMF0uZGF0YVR5cGUpO3JldHVybntuYW1lOlwiQmlhc1NwbGl0R2VsdVwiLGdldFJ1bkRhdGE6KCk9Pih7b3V0cHV0czpbe2RpbXM6dCxkYXRhVHlwZTplWzBdLmRhdGFUeXBlfV0sZGlzcGF0Y2hHcm91cDp7eDpNYXRoLmNlaWwocy82NCl9fSksZ2V0U2hhZGVyU291cmNlOnA9PmBcbiAgY29uc3QgTV9TUVJUMiA9IHNxcnQoMi4wKTtcbiAgY29uc3QgaGFsZkNoYW5uZWxzID0gJHtlWzBdLmRpbXNbMl0vNC8yfXU7XG5cbiAgJHtwLmRlY2xhcmVWYXJpYWJsZXMocixhLGkpfVxuXG4gICR7WG4oYHZlYzQ8JHtvfT5gLG8pfVxuXG4gICR7cC5tYWluU3RhcnQoKX1cbiAgICAke3AuZ3VhcmRBZ2FpbnN0T3V0T2ZCb3VuZHNXb3JrZ3JvdXBTaXplcyhzKX1cbiAgICBsZXQgYmlhc0lkeCA9IGdsb2JhbF9pZHggJSBoYWxmQ2hhbm5lbHM7XG4gICAgbGV0IGJhdGNoSW5kZXggPSBnbG9iYWxfaWR4IC8gaGFsZkNoYW5uZWxzO1xuICAgIGxldCBpbnB1dE9mZnNldCA9IGJpYXNJZHggKyBiYXRjaEluZGV4ICogaGFsZkNoYW5uZWxzICogMjtcbiAgICBsZXQgdmFsdWVMZWZ0ID0gaW5wdXRbaW5wdXRPZmZzZXRdICsgYmlhc1tiaWFzSWR4XTtcbiAgICBsZXQgdmFsdWVSaWdodCA9IGlucHV0W2lucHV0T2Zmc2V0ICsgaGFsZkNoYW5uZWxzXSArIGJpYXNbYmlhc0lkeCArIGhhbGZDaGFubmVsc107XG4gICAgbGV0IGdlbHVSaWdodCA9IHZhbHVlUmlnaHQgKiAwLjUgKiAoZXJmX3ZmMzIodmFsdWVSaWdodCAvIE1fU1FSVDIpICsgMSk7XG5cbiAgICAke2kuc2V0QnlPZmZzZXQoXCJnbG9iYWxfaWR4XCIsXCJ2YWx1ZUxlZnQgKiBnZWx1UmlnaHRcIil9XG4gIH1gfX0sdXU9ZT0+e05jKGUuaW5wdXRzKSxlLmNvbXB1dGUoVmMoZS5pbnB1dHMpKX19KTt2YXIgSGMsTGMsUHQsZHUsY3UscHUsZnUsbXUsaHUsZ3UseXUsYnUsdnUsd3U9USgoKT0+e1widXNlIHN0cmljdFwiO3plKCk7Q2UoKTtfZSgpO0hjPShlLHQscixhLGkscyxvLGMscCxtLGwsZyk9PntsZXQgYix3O3R5cGVvZiBjPT1cInN0cmluZ1wiP2I9dz0oUyxFKT0+YCR7Y30oKCR7U30pLCgke0V9KSlgOnR5cGVvZiBjPT1cImZ1bmN0aW9uXCI/Yj13PWM6KGI9Yy5zY2FsYXIsdz1jLnZlY3Rvcik7bGV0ICQ9SihcIm91dHB1dERhdGFcIixsLGEubGVuZ3RoLDQpLHg9VyhcImFEYXRhXCIscCx0Lmxlbmd0aCw0KSxUPVcoXCJiRGF0YVwiLG0sci5sZW5ndGgsNCksQztpZihpKWlmKHMpe2xldCBTPU4uc2l6ZSh0KT09PTEsRT1OLnNpemUocik9PT0xLE89dC5sZW5ndGg+MCYmdFt0Lmxlbmd0aC0xXSU0PT09MCxVPXIubGVuZ3RoPjAmJnJbci5sZW5ndGgtMV0lND09PTA7U3x8RT9DPSQuc2V0QnlPZmZzZXQoXCJnbG9iYWxfaWR4XCIsdyhTP2Ake3gudHlwZS52YWx1ZX0oJHt4LmdldEJ5T2Zmc2V0KFwiMFwiKX0ueClgOnguZ2V0QnlPZmZzZXQoXCJnbG9iYWxfaWR4XCIpLEU/YCR7VC50eXBlLnZhbHVlfSgke1QuZ2V0QnlPZmZzZXQoXCIwXCIpfS54KWA6VC5nZXRCeU9mZnNldChcImdsb2JhbF9pZHhcIikpKTpDPWBcbiAgICAgICAgICAgIGxldCBvdXRwdXRJbmRpY2VzID0gJHskLm9mZnNldFRvSW5kaWNlcyhcImdsb2JhbF9pZHggKiA0dVwiKX07XG4gICAgICAgICAgICBsZXQgb2Zmc2V0QSA9ICR7eC5icm9hZGNhc3RlZEluZGljZXNUb09mZnNldChcIm91dHB1dEluZGljZXNcIiwkKX07XG4gICAgICAgICAgICBsZXQgb2Zmc2V0QiA9ICR7VC5icm9hZGNhc3RlZEluZGljZXNUb09mZnNldChcIm91dHB1dEluZGljZXNcIiwkKX07XG4gICAgICAgICAgICAkeyQuc2V0QnlPZmZzZXQoXCJnbG9iYWxfaWR4XCIsdyhvfHxPP3guZ2V0QnlPZmZzZXQoXCJvZmZzZXRBIC8gNHVcIik6YCR7eC50eXBlLnZhbHVlfSgke3guZ2V0QnlPZmZzZXQoXCJvZmZzZXRBIC8gNHVcIil9W29mZnNldEEgJSA0dV0pYCxvfHxVP1QuZ2V0QnlPZmZzZXQoXCJvZmZzZXRCIC8gNHVcIik6YCR7VC50eXBlLnZhbHVlfSgke1QuZ2V0QnlPZmZzZXQoXCJvZmZzZXRCIC8gNHVcIil9W29mZnNldEIgJSA0dV0pYCkpfVxuICAgICAgICAgIGB9ZWxzZSBDPSQuc2V0QnlPZmZzZXQoXCJnbG9iYWxfaWR4XCIsdyh4LmdldEJ5T2Zmc2V0KFwiZ2xvYmFsX2lkeFwiKSxULmdldEJ5T2Zmc2V0KFwiZ2xvYmFsX2lkeFwiKSkpO2Vsc2V7aWYoIXMpdGhyb3cgbmV3IEVycm9yKFwibm8gbmVjZXNzYXJ5IHRvIHVzZSBzY2FsYXIgaW1wbGVtZW50YXRpb24gZm9yIGVsZW1lbnQtd2lzZSBiaW5hcnkgb3AgaW1wbGVtZW50YXRpb24uXCIpO2xldCBTPShFLE8sVT1cIlwiKT0+e2xldCBEPWBhRGF0YVtpbmRleEEke099XVtjb21wb25lbnRBJHtPfV1gLFY9YGJEYXRhW2luZGV4QiR7T31dW2NvbXBvbmVudEIke099XWA7cmV0dXJuYFxuICAgICAgICAgICAgbGV0IG91dHB1dEluZGljZXMke099ID0gJHskLm9mZnNldFRvSW5kaWNlcyhgZ2xvYmFsX2lkeCAqIDR1ICsgJHtPfXVgKX07XG4gICAgICAgICAgICBsZXQgb2Zmc2V0QSR7T30gPSAke3guYnJvYWRjYXN0ZWRJbmRpY2VzVG9PZmZzZXQoYG91dHB1dEluZGljZXMke099YCwkKX07XG4gICAgICAgICAgICBsZXQgb2Zmc2V0QiR7T30gPSAke1QuYnJvYWRjYXN0ZWRJbmRpY2VzVG9PZmZzZXQoYG91dHB1dEluZGljZXMke099YCwkKX07XG4gICAgICAgICAgICBsZXQgaW5kZXhBJHtPfSA9IG9mZnNldEEke099IC8gNHU7XG4gICAgICAgICAgICBsZXQgaW5kZXhCJHtPfSA9IG9mZnNldEIke099IC8gNHU7XG4gICAgICAgICAgICBsZXQgY29tcG9uZW50QSR7T30gPSBvZmZzZXRBJHtPfSAlIDR1O1xuICAgICAgICAgICAgbGV0IGNvbXBvbmVudEIke099ID0gb2Zmc2V0QiR7T30gJSA0dTtcbiAgICAgICAgICAgICR7RX1bJHtPfV0gPSAke1V9KCR7YihELFYpfSk7XG4gICAgICAgICAgYH07bD09PTk/Qz1gXG4gICAgICAgICAgICB2YXIgZGF0YSA9IHZlYzQ8dTMyPigwKTtcbiAgICAgICAgICAgICR7UyhcImRhdGFcIiwwLFwidTMyXCIpfVxuICAgICAgICAgICAgJHtTKFwiZGF0YVwiLDEsXCJ1MzJcIil9XG4gICAgICAgICAgICAke1MoXCJkYXRhXCIsMixcInUzMlwiKX1cbiAgICAgICAgICAgICR7UyhcImRhdGFcIiwzLFwidTMyXCIpfVxuICAgICAgICAgICAgb3V0cHV0RGF0YVtnbG9iYWxfaWR4XSA9IGRvdCh2ZWM0PHUzMj4oMHgxLCAweDEwMCwgMHgxMDAwMCwgMHgxMDAwMDAwKSwgdmVjNDx1MzI+KGRhdGEpKTtgOkM9YFxuICAgICAgICAgICAgJHtTKFwib3V0cHV0RGF0YVtnbG9iYWxfaWR4XVwiLDApfVxuICAgICAgICAgICAgJHtTKFwib3V0cHV0RGF0YVtnbG9iYWxfaWR4XVwiLDEpfVxuICAgICAgICAgICAgJHtTKFwib3V0cHV0RGF0YVtnbG9iYWxfaWR4XVwiLDIpfVxuICAgICAgICAgICAgJHtTKFwib3V0cHV0RGF0YVtnbG9iYWxfaWR4XVwiLDMpfVxuICAgICAgICAgIGB9cmV0dXJuYFxuICAgICAgICAke2UucmVnaXN0ZXJVbmlmb3JtKFwidmVjX3NpemVcIixcInUzMlwiKS5kZWNsYXJlVmFyaWFibGVzKHgsVCwkKX1cblxuICAgICAgICAke2c/P1wiXCJ9XG5cbiAgICAgICAgJHtlLm1haW5TdGFydCgpfVxuICAgICAgICAke2UuZ3VhcmRBZ2FpbnN0T3V0T2ZCb3VuZHNXb3JrZ3JvdXBTaXplcyhcInVuaWZvcm1zLnZlY19zaXplXCIpfVxuICAgICAgICAke0N9XG4gICAgICB9YH0sTGM9KGUsdCxyLGEsaSxzLG89ci5kYXRhVHlwZSk9PntsZXQgYz0hTi5hcmVFcXVhbChyLmRpbXMsYS5kaW1zKSxwPXIuZGltcyxtPU4uc2l6ZShyLmRpbXMpLGw9ITEsZz0hMSxiPVtjXTtpZihjKXtsZXQgdz1BdC5jYWxjU2hhcGUoci5kaW1zLGEuZGltcywhMSk7aWYoIXcpdGhyb3cgbmV3IEVycm9yKFwiQ2FuJ3QgcGVyZm9ybSBiaW5hcnkgb3Agb24gdGhlIGdpdmVuIHRlbnNvcnNcIik7cD13LG09Ti5zaXplKHApO2xldCAkPU4uc2l6ZShyLmRpbXMpPT09MSx4PU4uc2l6ZShhLmRpbXMpPT09MSxUPXIuZGltcy5sZW5ndGg+MCYmci5kaW1zW3IuZGltcy5sZW5ndGgtMV0lND09PTAsQz1hLmRpbXMubGVuZ3RoPjAmJmEuZGltc1thLmRpbXMubGVuZ3RoLTFdJTQ9PT0wO2IucHVzaCgkKSxiLnB1c2goeCksYi5wdXNoKFQpLGIucHVzaChDKTtsZXQgUz0xO2ZvcihsZXQgRT0xO0U8cC5sZW5ndGg7RSsrKXtsZXQgTz1yLmRpbXNbci5kaW1zLmxlbmd0aC1FXT8/MSxVPWEuZGltc1thLmRpbXMubGVuZ3RoLUVdPz8xO2lmKE89PT1VKVMqPU87ZWxzZSBicmVha31TJTQ9PT0wPyhnPSEwLGw9ITApOigkfHx4fHxUfHxDKSYmKGw9ITApfWVsc2UgbD0hMDtyZXR1cm4gYi5wdXNoKGwpLHtuYW1lOmUsc2hhZGVyQ2FjaGU6e2hpbnQ6dCtiLm1hcCh3PT53LnRvU3RyaW5nKCkpLmpvaW4oXCJfXCIpLGlucHV0RGVwZW5kZW5jaWVzOltcInJhbmtcIixcInJhbmtcIl19LGdldFNoYWRlclNvdXJjZTp3PT5IYyh3LHIuZGltcyxhLmRpbXMscCxsLGMsZyxpLHIuZGF0YVR5cGUsYS5kYXRhVHlwZSxvLHMpLGdldFJ1bkRhdGE6KCk9Pih7b3V0cHV0czpbe2RpbXM6cCxkYXRhVHlwZTpvfV0sZGlzcGF0Y2hHcm91cDp7eDpNYXRoLmNlaWwobS82NC80KX0scHJvZ3JhbVVuaWZvcm1zOlt7dHlwZTpcInVpbnQzMlwiLGRhdGE6TWF0aC5jZWlsKE4uc2l6ZShwKS80KX0sLi4uTChyLmRpbXMpLC4uLkwoYS5kaW1zKSwuLi5MKHApXX0pfX0sUHQ9KGUsdCxyLGEsaSxzKT0+e2UuY29tcHV0ZShMYyh0LGk/P1wiXCIsZS5pbnB1dHNbMF0sZS5pbnB1dHNbMV0scixhLHMpKX0sZHU9ZT0+e1B0KGUsXCJBZGRcIiwodCxyKT0+YCR7dH0rJHtyfWApfSxjdT1lPT57UHQoZSxcIkRpdlwiLCh0LHIpPT5gJHt0fS8ke3J9YCl9LHB1PWU9PntQdChlLFwiRXF1YWxcIix7c2NhbGFyOih0LHIpPT5gdTMyKCR7dH09PSR7cn0pYCx2ZWN0b3I6KHQscik9PmB2ZWM0PHUzMj4oJHt0fT09JHtyfSlgfSx2b2lkIDAsdm9pZCAwLDkpfSxmdT1lPT57UHQoZSxcIk11bFwiLCh0LHIpPT5gJHt0fSoke3J9YCl9LG11PWU9PntsZXQgdD1XKFwiaW5wdXRcIixlLmlucHV0c1swXS5kYXRhVHlwZSxlLmlucHV0c1swXS5kaW1zKS50eXBlLnZhbHVlO1B0KGUsXCJQb3dcIix7c2NhbGFyOihhLGkpPT5gcG93X2N1c3RvbSgke2F9LCR7aX0pYCx2ZWN0b3I6KGEsaSk9PmBwb3dfdmVjdG9yX2N1c3RvbSgke2F9LCR7aX0pYH0sYFxuICAgIGZuIHBvd19jdXN0b20oYSA6ICR7dH0sIGIgOiAke3R9KSAtPiAke3R9IHtcbiAgICAgIGlmIChiID09ICR7dH0oMC4wKSkge1xuICAgICAgICByZXR1cm4gJHt0fSgxLjApO1xuICAgICAgfSBlbHNlIGlmIChhIDwgJHt0fSgwLjApICYmIGYzMihiKSAhPSBmbG9vcihmMzIoYikpKSB7XG4gICAgICAgIHJldHVybiAke3R9KHBvdyhmMzIoYSksIGYzMihiKSkpOyAvLyBOYU5cbiAgICAgIH1cbiAgICAgIHJldHVybiBzZWxlY3Qoc2lnbihhKSwgJHt0fSgxLjApLCByb3VuZChmMzIoYWJzKGIpICUgJHt0fSgyLjApKSkgIT0gMS4wKSAqICR7dH0oJHt0PT09XCJpMzJcIj9cInJvdW5kXCI6XCJcIn0ocG93KGYzMihhYnMoYSkpLCBmMzIoYikpKSk7XG4gICAgfVxuICAgIGZuIHBvd192ZWN0b3JfY3VzdG9tKGEgOiB2ZWM0PCR7dH0+LCBiIDogdmVjNDwke3R9PikgLT4gdmVjNDwke3R9PiB7XG4gICAgICAvLyBUT0RPOiBpbXBsZW1lbnQgdmVjdG9yaXplZCBwb3dcbiAgICAgIHJldHVybiB2ZWM0PCR7dH0+KHBvd19jdXN0b20oYS54LCBiLngpLCBwb3dfY3VzdG9tKGEueSwgYi55KSwgcG93X2N1c3RvbShhLnosIGIueiksIHBvd19jdXN0b20oYS53LCBiLncpKTtcbiAgICB9XG4gICAgICBgKX0saHU9ZT0+e1B0KGUsXCJTdWJcIiwodCxyKT0+YCR7dH0tJHtyfWApfSxndT1lPT57UHQoZSxcIkdyZWF0ZXJcIix7c2NhbGFyOih0LHIpPT5gdTMyKCR7dH0+JHtyfSlgLHZlY3RvcjoodCxyKT0+YHZlYzQ8dTMyPigke3R9PiR7cn0pYH0sdm9pZCAwLHZvaWQgMCw5KX0seXU9ZT0+e1B0KGUsXCJMZXNzXCIse3NjYWxhcjoodCxyKT0+YHUzMigke3R9PCR7cn0pYCx2ZWN0b3I6KHQscik9PmB2ZWM0PHUzMj4oJHt0fTwke3J9KWB9LHZvaWQgMCx2b2lkIDAsOSl9LGJ1PWU9PntQdChlLFwiR3JlYXRlck9yRXF1YWxcIix7c2NhbGFyOih0LHIpPT5gdTMyKCR7dH0+PSR7cn0pYCx2ZWN0b3I6KHQscik9PmB2ZWM0PHUzMj4oJHt0fT49JHtyfSlgfSx2b2lkIDAsdm9pZCAwLDkpfSx2dT1lPT57UHQoZSxcIkxlc3NPckVxdWFsXCIse3NjYWxhcjoodCxyKT0+YHUzMigke3R9PD0ke3J9KWAsdmVjdG9yOih0LHIpPT5gdmVjNDx1MzI+KCR7dH08PSR7cn0pYH0sdm9pZCAwLHZvaWQgMCw5KX19KTt2YXIgRmMscWMsamMsS2MsJHUsX3UsU3U9USgoKT0+e1widXNlIHN0cmljdFwiO0NlKCk7WGUoKTtfZSgpO0ZjPWU9PntpZighZXx8ZS5sZW5ndGg8MSl0aHJvdyBuZXcgRXJyb3IoXCJ0b28gZmV3IGlucHV0c1wiKTtsZXQgdD1lWzBdLmRhdGFUeXBlLHI9ZVswXS5kaW1zLmxlbmd0aDtmb3IobGV0IGEgb2YgZSl7aWYoYS5kYXRhVHlwZSE9PXQpdGhyb3cgbmV3IEVycm9yKFwiaW5wdXQgdGVuc29ycyBzaG91bGQgYmUgb25lIHR5cGVcIik7aWYoYS5kaW1zLmxlbmd0aCE9PXIpdGhyb3cgbmV3IEVycm9yKFwiaW5wdXQgdGVuc29ycyBzaG91bGQgaGF2ZSB0aGUgc2FtZSBzaGFwZVwiKX19LHFjPShlLHQpPT5gXG4gIGZuIGNhbGN1bGF0ZUlucHV0SW5kZXgoaW5kZXg6IHUzMikgLT4gdTMyIHtcbiAgICBsZXQgc2l6ZUluQ29uY2F0QXhpcyA9IGFycmF5PHUzMiwgJHtlfXU+KCR7dH0pO1xuICAgIGZvciAodmFyIGk6IHUzMiA9IDB1OyBpIDwgJHtlfTsgaSArPSAxdSApIHtcbiAgICAgIGlmIChpbmRleCA8IHNpemVJbkNvbmNhdEF4aXNbaV0pIHtcbiAgICAgICAgcmV0dXJuIGk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAke2V9dTtcbiAgfWAsamM9KGUsdCk9PntsZXQgcj1lLmxlbmd0aCxhPVtdO2ZvcihsZXQgaT0wO2k8cjsrK2kpe2xldCBzPXQuc2V0QnlPZmZzZXQoXCJnbG9iYWxfaWR4XCIsZVtpXS5nZXRCeUluZGljZXMoXCJpbmRpY2VzXCIpKTtyPT09MT9hLnB1c2gocyk6aT09PTA/YS5wdXNoKGBpZiAoaW5wdXRJbmRleCA9PSAke2l9dSkgeyAke3N9IH1gKTppPT09ci0xP2EucHVzaChgZWxzZSB7ICR7c30gfWApOmEucHVzaChgZWxzZSBpZiAoaW5wdXRJbmRleCA9PSAke2l9KSB7ICR7c30gfWApfXJldHVybiBhLmpvaW4oYFxuYCl9LEtjPShlLHQpPT57bGV0IHI9ZVswXS5kaW1zLnNsaWNlKCk7aWYodD49ci5sZW5ndGh8fHQ8LTEqci5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKFwiYXhpcyBzcGVjaWZpZWQgZm9yIGNvbmNhdCBkb2Vzbid0IG1hdGNoIGlucHV0IGRpbWVuc2lvbmFsaXR5XCIpO2xldCBhPXQ8MD9yLmxlbmd0aCt0OnQsaT1yLnNsaWNlKDApO2ZvcihsZXQgQz0xO0M8ZS5sZW5ndGg7QysrKXtsZXQgUz1lW0NdLmRpbXMuc2xpY2UoKTtmb3IobGV0IEU9MDtFPHIubGVuZ3RoO0UrKylpZihFPT09YSlpW2FdKz1TW0VdO2Vsc2UgaWYocltFXSE9PVNbRV0pdGhyb3cgbmV3IEVycm9yKFwibm9uIGNvbmNhdCBkaW1lbnNpb25zIG11c3QgbWF0Y2hcIil9bGV0IHM9Ti5zaXplKGkpLG89bmV3IEFycmF5KGUubGVuZ3RoKSxjPW5ldyBBcnJheShlLmxlbmd0aCkscD1lWzBdLmRhdGFUeXBlLG09MCxsPVtdLGc9W10sYj1be3R5cGU6XCJ1aW50MzJcIixkYXRhOnN9XTtmb3IobGV0IEM9MDtDPGUubGVuZ3RoOysrQyltKz1lW0NdLmRpbXNbYV0sb1tDXT1tLGcucHVzaChlW0NdLmRpbXMubGVuZ3RoKSxjW0NdPVcoYGlucHV0JHtDfWAscCxnW0NdKSxsLnB1c2goXCJyYW5rXCIpLGIucHVzaCh7dHlwZTpcInVpbnQzMlwiLGRhdGE6b1tDXX0pO2ZvcihsZXQgQz0wO0M8ZS5sZW5ndGg7KytDKWIucHVzaCguLi5MKGVbQ10uZGltcykpO2IucHVzaCguLi5MKGkpKTtsZXQgdz1KKFwib3V0cHV0XCIscCxpLmxlbmd0aCksJD13LmluZGljZXNHZXQoXCJpbmRpY2VzXCIsYSkseD1BcnJheS5mcm9tKEFycmF5KG8ubGVuZ3RoKS5rZXlzKCkpLm1hcChDPT5gdW5pZm9ybXMuc2l6ZUluQ29uY2F0QXhpcyR7Q31gKS5qb2luKFwiLFwiKSxUPUM9PmBcblxuICAkeygoKT0+e0MucmVnaXN0ZXJVbmlmb3JtKFwib3V0cHV0U2l6ZVwiLFwidTMyXCIpO2ZvcihsZXQgUz0wO1M8ZS5sZW5ndGg7UysrKUMucmVnaXN0ZXJVbmlmb3JtKGBzaXplSW5Db25jYXRBeGlzJHtTfWAsXCJ1MzJcIik7cmV0dXJuIEMuZGVjbGFyZVZhcmlhYmxlcyguLi5jLHcpfSkoKX1cblxuICAke3FjKG8ubGVuZ3RoLHgpfVxuXG4gICR7Qy5tYWluU3RhcnQoKX1cbiAgICAke0MuZ3VhcmRBZ2FpbnN0T3V0T2ZCb3VuZHNXb3JrZ3JvdXBTaXplcyhcInVuaWZvcm1zLm91dHB1dFNpemVcIil9XG5cbiAgICB2YXIgaW5kaWNlcyA9ICR7dy5vZmZzZXRUb0luZGljZXMoXCJnbG9iYWxfaWR4XCIpfTtcblxuICAgIGxldCBpbnB1dEluZGV4ID0gY2FsY3VsYXRlSW5wdXRJbmRleCgkeyR9KTtcbiAgICBpZiAoaW5wdXRJbmRleCAhPSAwdSkge1xuICAgICAgbGV0IHNpemVJbkNvbmNhdEF4aXMgPSBhcnJheTx1MzIsICR7by5sZW5ndGh9dT4oJHt4fSk7XG4gICAgICAkeyR9IC09IHNpemVJbkNvbmNhdEF4aXNbaW5wdXRJbmRleCAtIDF1XTtcbiAgICB9XG5cbiAgICAke2pjKGMsdyl9XG4gIH1gO3JldHVybntuYW1lOlwiQ29uY2F0XCIsc2hhZGVyQ2FjaGU6e2hpbnQ6YCR7dH1gLGlucHV0RGVwZW5kZW5jaWVzOmx9LGdldFJ1bkRhdGE6KCk9Pih7b3V0cHV0czpbe2RpbXM6aSxkYXRhVHlwZTplWzBdLmRhdGFUeXBlfV0sZGlzcGF0Y2hHcm91cDp7eDpNYXRoLmNlaWwocy82NCl9LHByb2dyYW1Vbmlmb3JtczpifSksZ2V0U2hhZGVyU291cmNlOlR9fSwkdT0oZSx0KT0+e0ZjKGUuaW5wdXRzKSxlLmNvbXB1dGUoS2MoZS5pbnB1dHMsdC5heGlzKSl9LF91PWU9PnhlKHtheGlzOmUuYXhpc30pfSk7dmFyIFJ0LFFuLGp0PVEoKCk9PntcInVzZSBzdHJpY3RcIjtDZSgpO1J0PShlLHQpPT57c3dpdGNoKGUuYWN0aXZhdGlvbil7Y2FzZVwiUmVsdVwiOnJldHVybmB2YWx1ZSA9IG1heCh2YWx1ZSwgJHt0fSgwLjApKTtgO2Nhc2VcIlNpZ21vaWRcIjpyZXR1cm5gdmFsdWUgPSAoJHt0fSgxLjApIC8gKCR7dH0oMS4wKSArIGV4cCgtdmFsdWUpKSk7YDtjYXNlXCJDbGlwXCI6cmV0dXJuYHZhbHVlID0gY2xhbXAodmFsdWUsICR7dH0odW5pZm9ybXMuY2xpcF9taW4pLCAke3R9KHVuaWZvcm1zLmNsaXBfbWF4KSk7YDtkZWZhdWx0OnJldHVyblwiXCJ9fSxRbj1lPT57bGV0IHQ9ZT8uYWN0aXZhdGlvbnx8XCJcIjtpZih0PT09XCJDbGlwXCIpe2xldFtyLGFdPWU/LmFjdGl2YXRpb25fcGFyYW1zfHxbR24sRm5dO3JldHVybnthY3RpdmF0aW9uOnQsY2xpcE1heDphLGNsaXBNaW46cn19cmV0dXJue2FjdGl2YXRpb246dH19fSk7dmFyIGplLEpuLGVhPVEoKCk9PntcInVzZSBzdHJpY3RcIjtqZT0oZSx0KT0+e3N3aXRjaChlKXtjYXNlIDE6cmV0dXJuIHQ7Y2FzZSAyOnJldHVybmB2ZWMyPCR7dH0+YDtjYXNlIDM6cmV0dXJuYHZlYzM8JHt0fT5gO2Nhc2UgNDpyZXR1cm5gdmVjNDwke3R9PmA7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYCR7ZX0tY29tcG9uZW50IGlzIG5vdCBzdXBwb3J0ZWQuYCl9fSxKbj1lPT5gXG4gICAgICAke2U/XCJ2YWx1ZSA9IHZhbHVlICsgZ2V0Qmlhc0J5T3V0cHV0Q29vcmRzKGNvb3Jkcyk7XCI6XCJcIn1cbiAgICAgIGB9KTt2YXIgdGEsUWE9USgoKT0+e1widXNlIHN0cmljdFwiO3RhPWU9PmBcbmZuIGdldEluZGV4RnJvbUNvb3JkczREKGNvb3JkcyA6IHZlYzQ8aTMyPiwgc2hhcGUgOiB2ZWM0PGkzMj4pIC0+IGkzMiB7XG4gIHJldHVybiBkb3QoY29vcmRzLCB2ZWM0PGkzMj4oXG4gICAgICBzaGFwZS55ICogc2hhcGUueiAqIHNoYXBlLncsIHNoYXBlLnogKiBzaGFwZS53LCBzaGFwZS53LCAxKSk7XG59XG5mbiBnZXRPdXRwdXRJbmRleEZyb21Db29yZHMoY29vcmRzIDogdmVjNDxpMzI+KSAtPiBpMzIge1xuICByZXR1cm4gZG90KGNvb3JkcywgdmVjNDxpMzI+KFxuICAgIGkzMigke2V9LngpLCBpMzIoJHtlfS55KSwgaTMyKCR7ZX0ueiksIDEpKTtcbn1cbmB9KTt2YXIgWWMsWmMsWHIseHUsWGMsUXIsUWMscmEsSnI9USgoKT0+e1widXNlIHN0cmljdFwiO0NlKCk7X2UoKTtqdCgpO2VhKCk7WWM9KGUsdCk9PmU/YFxuICAgICAgICBtbV9Bc3ViW2lucHV0Um93XVtpbnB1dENvbF0gPSBtbV9yZWFkQShiYXRjaCxcbiAgICAgICAgICBrU3RhcnQgKyBpbnB1dFJvdyxcbiAgICAgICAgICBnbG9iYWxSb3dTdGFydCAvIGlubmVyRWxlbWVudFNpemUgKyBpbnB1dENvbCR7dD9cIiwgYmF0Y2hJbmRpY2VzXCI6XCJcIn0pO1xuICAgICAgICBgOmBcbiAgICAgICAgbW1fQXN1YltpbnB1dFJvd11baW5wdXRDb2xdID0gbW1fcmVhZEEoYmF0Y2gsXG4gICAgICAgICAgZ2xvYmFsUm93ICsgaW5uZXJSb3csXG4gICAgICAgICAga1N0YXJ0IC8gaW5uZXJFbGVtZW50U2l6ZSArIGlucHV0Q29sJHt0P1wiLCBiYXRjaEluZGljZXNcIjpcIlwifSk7XG4gICAgICAgIGAsWmM9KGUsdCk9PmU/YFxuICAgICAgICBsZXQgQUNhY2hlZDAgPSBtbV9Bc3ViW2sgKiBpbm5lckVsZW1lbnRTaXplXVtsb2NhbFJvd107XG4gICAgICAgIGxldCBBQ2FjaGVkMSA9IG1tX0FzdWJbayAqIGlubmVyRWxlbWVudFNpemUgKyAxXVtsb2NhbFJvd107XG4gICAgICAgIGxldCBBQ2FjaGVkMiA9IG1tX0FzdWJbayAqIGlubmVyRWxlbWVudFNpemUgKyAyXVtsb2NhbFJvd107XG4gICAgICAgICR7dD09PTM/XCJcIjpcImxldCBBQ2FjaGVkMyA9IG1tX0FzdWJbayAqIGlubmVyRWxlbWVudFNpemUgKyAzXVtsb2NhbFJvd107XCJ9XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcm93UGVyVGhyZWFkOyBpID0gaSArIDEpIHtcbiAgICAgICAgICBhY2NbaV0gPSBCQ2FjaGVkMCAqIEFDYWNoZWQwW2ldICsgYWNjW2ldO1xuICAgICAgICAgIGFjY1tpXSA9IEJDYWNoZWQxICogQUNhY2hlZDFbaV0gKyBhY2NbaV07XG4gICAgICAgICAgYWNjW2ldID0gQkNhY2hlZDIgKiBBQ2FjaGVkMltpXSArIGFjY1tpXTtcbiAgICAgICAgICAke3Q9PT0zP1wiXCI6XCJhY2NbaV0gPSBCQ2FjaGVkMyAqIEFDYWNoZWQzW2ldICsgYWNjW2ldO1wifVxuICAgICAgICB9YDpgXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcm93UGVyVGhyZWFkOyBpID0gaSArIDEpIHtcbiAgICAgICAgICBsZXQgQUNhY2hlZCA9IG1tX0FzdWJbdGlsZVJvdyArIGldW2tdO1xuICAgICAgICAgIGFjY1tpXSA9IEJDYWNoZWQwICogQUNhY2hlZC54ICsgYWNjW2ldO1xuICAgICAgICAgIGFjY1tpXSA9IEJDYWNoZWQxICogQUNhY2hlZC55ICsgYWNjW2ldO1xuICAgICAgICAgIGFjY1tpXSA9IEJDYWNoZWQyICogQUNhY2hlZC56ICsgYWNjW2ldO1xuICAgICAgICAgICR7dD09PTM/XCJcIjpcImFjY1tpXSA9IEJDYWNoZWQzICogQUNhY2hlZC53ICsgYWNjW2ldO1wifVxuICAgICAgICB9YCxYcj0oZSx0LHI9XCJmMzJcIixhLGk9ITEscz0zMixvPSExLGM9MzIpPT57bGV0IHA9dFsxXSplWzFdLG09dFswXSplWzBdLGw9aT9wOnMsZz1pP3M6cCxiPWwvdFswXSx3PXMvdFsxXTtpZighKChpJiZiPT09NCYmZVsxXT09PTR8fCFpJiYoYj09PTN8fGI9PT00KSkmJmwldFswXT09PTAmJnMldFsxXT09PTAmJmVbMF09PT00KSl0aHJvdyBuZXcgRXJyb3IoYElmIHRyYW5zcG9zZUEgJHtpfSBpcyB0cnVlLCBpbm5lckVsZW1lbnRTaXplICR7Yn0gYW5kIHdvcmtQZXJUaHJlYWRbMV0gJHtlWzFdfSBtdXN0IGJlIDQuXG4gICAgICBPdGhlcndpc2UsIGlubmVyRWxlbWVudFNpemUgJHtifSBtdXN0IGJlIDMgb3IgNC5cbiAgdGlsZUFXaWR0aCAke2x9IG11c3QgYmUgZGl2aXNpYmxlIGJ5IHdvcmtncm91cFNpemVbMF0ke3RbMF19LiB0aWxlSW5uZXIgJHtzfSBtdXN0IGJlIGRpdmlzaWJsZSBieSB3b3JrZ3JvdXBTaXplWzFdICR7dFsxXX0uIGNvbFBlclRocmVhZCAke2VbMF19IG11c3QgYmUgNC5gKTtyZXR1cm5gXG52YXI8d29ya2dyb3VwPiBtbV9Bc3ViOiBhcnJheTxhcnJheTx2ZWMke2J9PCR7cn0+LCAke2wvYn0+LCAke2d9PjtcbnZhcjx3b3JrZ3JvdXA+IG1tX0JzdWI6IGFycmF5PGFycmF5PHZlYzQ8JHtyfT4sICR7bS9lWzBdfT4sICR7c30+O1xuXG5jb25zdCByb3dQZXJUaHJlYWQgPSAke2VbMV19O1xuY29uc3QgY29sUGVyVGhyZWFkID0gJHtlWzBdfTtcbmNvbnN0IGlubmVyRWxlbWVudFNpemUgPSAke2J9O1xuY29uc3QgdGlsZUlubmVyID0gJHtzfTtcblxuQGNvbXB1dGUgQHdvcmtncm91cF9zaXplKCR7dFswXX0sICR7dFsxXX0sICR7dFsyXX0pXG5mbiBtYWluKEBidWlsdGluKGxvY2FsX2ludm9jYXRpb25faWQpIGxvY2FsSWQgOiB2ZWMzPHUzMj4sXG4gICAgICAgIEBidWlsdGluKGdsb2JhbF9pbnZvY2F0aW9uX2lkKSBnbG9iYWxJZCA6IHZlYzM8dTMyPixcbiAgICAgICAgQGJ1aWx0aW4od29ya2dyb3VwX2lkKSB3b3JrZ3JvdXBJZCA6IHZlYzM8dTMyPikge1xuICBsZXQgbG9jYWxSb3cgPSBpMzIobG9jYWxJZC55KTtcbiAgbGV0IHRpbGVSb3cgPSBsb2NhbFJvdyAqIHJvd1BlclRocmVhZDtcbiAgbGV0IHRpbGVDb2wgPSBpMzIobG9jYWxJZC54KTtcblxuICBsZXQgZ2xvYmFsUm93ID1pMzIoZ2xvYmFsSWQueSkgKiByb3dQZXJUaHJlYWQ7XG4gIGxldCBnbG9iYWxDb2wgPSBpMzIoZ2xvYmFsSWQueCk7XG4gIGxldCBiYXRjaCA9ICR7bz9cIjBcIjpcImkzMihnbG9iYWxJZC56KVwifTtcbiAgJHthP2BsZXQgYmF0Y2hJbmRpY2VzID0gJHthLm9mZnNldFRvSW5kaWNlcyhcInUzMihiYXRjaClcIil9O2A6XCJcIn1cbiAgbGV0IGdsb2JhbFJvd1N0YXJ0ID0gaTMyKHdvcmtncm91cElkLnkpICogJHtwfTtcblxuICBsZXQgbnVtX3RpbGVzID0gJHtvP2Ake01hdGguY2VpbChjL3MpfWA6XCIodW5pZm9ybXMuZGltX2lubmVyIC0gMSkgLyB0aWxlSW5uZXIgKyAxXCJ9O1xuICB2YXIga1N0YXJ0ID0gJHtvP2BpMzIoZ2xvYmFsSWQueikgKiAke2N9YDpcIjBcIn07XG5cbiAgdmFyIGFjYzogYXJyYXk8dmVjNDwke3J9Piwgcm93UGVyVGhyZWFkPjtcblxuICAvLyBMb29wIG92ZXIgc2hhcmVkIGRpbWVuc2lvbi5cbiAgbGV0IHRpbGVSb3dCID0gbG9jYWxSb3cgKiAke3d9O1xuICBmb3IgKHZhciB0ID0gMDsgdCA8IG51bV90aWxlczsgdCA9IHQgKyAxKSB7XG4gICAgICAvLyBMb2FkIG9uZSB0aWxlIG9mIEEgaW50byBsb2NhbCBtZW1vcnkuXG4gICAgICBmb3IgKHZhciBpbm5lclJvdyA9IDA7IGlubmVyUm93IDwgcm93UGVyVGhyZWFkOyBpbm5lclJvdyA9IGlubmVyUm93ICsgMSkge1xuICAgICAgICAgIGxldCBpbnB1dFJvdyA9IHRpbGVSb3cgKyBpbm5lclJvdztcbiAgICAgICAgICBsZXQgaW5wdXRDb2wgPSB0aWxlQ29sO1xuICAgICAgICAgICR7WWMoaSxhKX1cbiAgICAgIH1cblxuICAgICAgLy8gTG9hZCBvbmUgdGlsZSBvZiBCIGludG8gbG9jYWwgbWVtb3J5LlxuICAgICAgZm9yICh2YXIgaW5uZXJSb3cgPSAwOyBpbm5lclJvdyA8ICR7d307IGlubmVyUm93ID0gaW5uZXJSb3cgKyAxKSB7XG4gICAgICAgICAgbGV0IGlucHV0Um93ID0gdGlsZVJvd0IgKyBpbm5lclJvdztcbiAgICAgICAgICBsZXQgaW5wdXRDb2wgPSB0aWxlQ29sO1xuICAgICAgICAgIG1tX0JzdWJbaW5wdXRSb3ddW2lucHV0Q29sXSA9IG1tX3JlYWRCKGJhdGNoLCBrU3RhcnQgKyBpbnB1dFJvdywgZ2xvYmFsQ29sJHthP1wiLCBiYXRjaEluZGljZXNcIjpcIlwifSk7XG4gICAgICB9XG4gICAgICBrU3RhcnQgPSBrU3RhcnQgKyB0aWxlSW5uZXI7XG4gICAgICB3b3JrZ3JvdXBCYXJyaWVyKCk7XG5cbiAgICAgIC8vIENvbXB1dGUgYWNjIHZhbHVlcyBmb3IgYSBzaW5nbGUgdGhyZWFkLlxuICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCB0aWxlSW5uZXIgLyBpbm5lckVsZW1lbnRTaXplOyBrID0gayArIDEpIHtcbiAgICAgICAgICBsZXQgQkNhY2hlZDAgPSBtbV9Cc3ViW2sgKiBpbm5lckVsZW1lbnRTaXplXVt0aWxlQ29sXTtcbiAgICAgICAgICBsZXQgQkNhY2hlZDEgPSBtbV9Cc3ViW2sgKiBpbm5lckVsZW1lbnRTaXplICsgMV1bdGlsZUNvbF07XG4gICAgICAgICAgbGV0IEJDYWNoZWQyID0gbW1fQnN1YltrICogaW5uZXJFbGVtZW50U2l6ZSArIDJdW3RpbGVDb2xdO1xuICAgICAgICAgICR7Yj09PTM/XCJcIjpcImxldCBCQ2FjaGVkMyA9IG1tX0JzdWJbayAqIGlubmVyRWxlbWVudFNpemUgKyAzXVt0aWxlQ29sXTtcIn1cblxuICAgICAgICAgICR7WmMoaSxiKX1cbiAgICAgIH1cblxuICAgICAgd29ya2dyb3VwQmFycmllcigpO1xuICB9XG5cbiAgZm9yICh2YXIgaW5uZXJSb3cgPSAwOyBpbm5lclJvdyA8IHJvd1BlclRocmVhZDsgaW5uZXJSb3cgPSBpbm5lclJvdyArIDEpIHtcbiAgICAgIG1tX3dyaXRlKGJhdGNoLCBnbG9iYWxSb3cgKyBpbm5lclJvdywgZ2xvYmFsQ29sLCBhY2NbaW5uZXJSb3ddKTtcbiAgfVxufWB9LHh1PShlLHQpPT5lP2BcbiAgICAgICAgICAgIG1tX0FzdWJbaW5wdXRSb3ddW2lucHV0Q29sXSA9IG1tX3JlYWRBKGJhdGNoLFxuICAgICAgICAgICAgICBrU3RhcnQgKyBpbnB1dFJvdyxcbiAgICAgICAgICAgICAgZ2xvYmFsUm93U3RhcnQgKyBpbnB1dENvbCR7dD9cIiwgYmF0Y2hJbmRpY2VzXCI6XCJcIn0pO1xuICAgICAgICAgICAgYDpgXG4gICAgICAgICAgICBtbV9Bc3ViW2lucHV0Um93XVtpbnB1dENvbF0gPSBtbV9yZWFkQShiYXRjaCxcbiAgICAgICAgICAgICAgZ2xvYmFsUm93U3RhcnQgKyBpbnB1dFJvdyxcbiAgICAgICAgICAgICAga1N0YXJ0ICsgaW5wdXRDb2wke3Q/XCIsIGJhdGNoSW5kaWNlc1wiOlwiXCJ9KTtcbiAgICAgICAgICAgIGAsWGM9ZT0+ZT9cImxldCBBQ2FjaGVkID0gbW1fQXN1YltrXVt0aWxlUm93ICsgaW5uZXJSb3ddO1wiOlwibGV0IEFDYWNoZWQgPSBtbV9Bc3ViW3RpbGVSb3cgKyBpbm5lclJvd11ba107XCIsUXI9KGUsdCxyPVwiZjMyXCIsYSxpPSExLHM9MzIsbz0hMSxjPTMyLHA9ITEpPT57bGV0IG09ZVsxXSp0WzFdLGw9ZVswXSp0WzBdLGc9aT9tOnMsYj1pP3M6bTtpZighKGIldFsxXT09PTAmJmcldFswXT09PTAmJnMldFsxXT09PTApKXRocm93IG5ldyBFcnJvcihgdGlsZUFIaWdodCAke2J9IG11c3QgYmUgZGl2aXNpYmxlIGJ5IHdvcmtncm91cFNpemVbMV0ke3RbMV19LCB0aWxlQVdpZHRoICR7Z30gbXVzdCBiZSBkaXZpc2libGUgYnkgd29ya2dyb3VwU2l6ZVswXSR7dFswXX0sIHRpbGVJbm5lciAke3N9IG11c3QgYmUgZGl2aXNpYmxlIGJ5IHdvcmtncm91cFNpemVbMV0ke3RbMV19YCk7bGV0IHc9Yi90WzFdLCQ9Zy90WzBdLHg9cy90WzFdLFQ9cD9gXG4gICAgbGV0IGxvY2FsUm93ID0gaTMyKGxvY2FsSWQueSk7XG4gICAgbGV0IGxvY2FsQ29sID0gaTMyKGxvY2FsSWQueCk7XG4gICAgbGV0IGdsb2JhbFJvd1N0YXJ0ID0gaTMyKHdvcmtncm91cElkLnkpICogJHttfTtcbiAgICBsZXQgZ2xvYmFsQ29sU3RhcnQgPSBpMzIod29ya2dyb3VwSWQueCkgKiAke2x9O1xuXG4gICAgLy8gTG9vcCBvdmVyIHNoYXJlZCBkaW1lbnNpb24uXG4gICAgZm9yICh2YXIgdCA9IDA7IHQgPCBudW1fdGlsZXM7IHQgPSB0ICsgMSkge1xuICAgICAgLy8gTG9hZCBvbmUgdGlsZSBvZiBBIGludG8gbG9jYWwgbWVtb3J5LlxuICAgICAgZm9yICh2YXIgaW5wdXRSb3cgPSBsb2NhbFJvdzsgaW5wdXRSb3cgPCAke2J9OyBpbnB1dFJvdyA9IGlucHV0Um93ICsgJHt0WzFdfSkge1xuICAgICAgICBmb3IgKHZhciBpbnB1dENvbCA9IGxvY2FsQ29sOyBpbnB1dENvbCA8ICR7Z307IGlucHV0Q29sID0gaW5wdXRDb2wgKyAke3RbMF19KSB7XG4gICAgICAgICAgJHt4dShpLGEpfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBMb2FkIG9uZSB0aWxlIG9mIEIgaW50byBsb2NhbCBtZW1vcnkuXG4gICAgICBmb3IgKHZhciBpbnB1dFJvdyA9IGxvY2FsUm93OyBpbnB1dFJvdyA8ICR7c307IGlucHV0Um93ID0gaW5wdXRSb3cgKyAke3RbMV19KSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpbnB1dENvbCA9IGxvY2FsQ29sOyBpbnB1dENvbCA8ICR7bH07IGlucHV0Q29sID0gaW5wdXRDb2wgKyAke3RbMF19KSB7XG4gICAgICAgICAgbW1fQnN1YltpbnB1dFJvd11baW5wdXRDb2xdID0gbW1fcmVhZEIoYmF0Y2gsXG4gICAgICAgICAgICBrU3RhcnQgKyBpbnB1dFJvdyxcbiAgICAgICAgICAgIGdsb2JhbENvbFN0YXJ0ICsgaW5wdXRDb2wke2E/XCIsIGJhdGNoSW5kaWNlc1wiOlwiXCJ9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAga1N0YXJ0ID0ga1N0YXJ0ICsgdGlsZUlubmVyO1xuICAgICAgd29ya2dyb3VwQmFycmllcigpO1xuXG4gICAgICAvLyBDb21wdXRlIGFjYyB2YWx1ZXMgZm9yIGEgc2luZ2xlIHRocmVhZC5cbiAgICAgIHZhciBCQ2FjaGVkIDogYXJyYXk8JHtyfSwgY29sUGVyVGhyZWFkPjtcbiAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgdGlsZUlubmVyOyBrID0gayArIDEpIHtcbiAgICAgICAgZm9yICh2YXIgaW5uZXIgPSAwOyBpbm5lciA8IGNvbFBlclRocmVhZDsgaW5uZXIgPSBpbm5lciArIDEpIHtcbiAgICAgICAgICBCQ2FjaGVkW2lubmVyXSA9IG1tX0JzdWJba11bbG9jYWxDb2wgKyBpbm5lciAqICR7dFswXX1dO1xuICAgICAgICB9XG4gICAgICAgIGZvciAodmFyIGlubmVyUm93ID0gMDsgaW5uZXJSb3cgPCByb3dQZXJUaHJlYWQ7IGlubmVyUm93ID0gaW5uZXJSb3cgKyAxKSB7XG4gICAgICAgICAgbGV0IEFDYWNoZWQgPSAke2k/YG1tX0FzdWJba11bbG9jYWxSb3cgKyBpbm5lclJvdyAqICR7dFsxXX1dO2A6YG1tX0FzdWJbbG9jYWxSb3cgKyBpbm5lclJvdyAqICR7dFsxXX1dW2tdO2B9XG4gICAgICAgICAgZm9yICh2YXIgaW5uZXJDb2wgPSAwOyBpbm5lckNvbCA8IGNvbFBlclRocmVhZDsgaW5uZXJDb2wgPSBpbm5lckNvbCArIDEpIHtcbiAgICAgICAgICAgIGFjY1tpbm5lclJvd11baW5uZXJDb2xdID0gYWNjW2lubmVyUm93XVtpbm5lckNvbF0gK1xuICAgICAgICAgICAgICAgIEFDYWNoZWQgKiBCQ2FjaGVkW2lubmVyQ29sXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHdvcmtncm91cEJhcnJpZXIoKTtcbiAgICB9XG4gICAgZm9yICh2YXIgaW5uZXJSb3cgPSAwOyBpbm5lclJvdyA8IHJvd1BlclRocmVhZDsgaW5uZXJSb3cgPSBpbm5lclJvdyArIDEpIHtcbiAgICAgIGxldCBnUm93ID0gZ2xvYmFsUm93U3RhcnQgKyBsb2NhbFJvdyArIGlubmVyUm93ICogJHt0WzFdfTtcbiAgICAgIGZvciAodmFyIGlubmVyQ29sID0gMDsgaW5uZXJDb2wgPCBjb2xQZXJUaHJlYWQ7IGlubmVyQ29sID0gaW5uZXJDb2wgKyAxKSB7XG4gICAgICAgIGxldCBnQ29sID0gZ2xvYmFsQ29sU3RhcnQgKyBsb2NhbENvbCArIGlubmVyQ29sICogJHt0WzBdfTtcbiAgICAgICAgbW1fd3JpdGUoYmF0Y2gsIGdSb3csIGdDb2wsIGFjY1tpbm5lclJvd11baW5uZXJDb2xdKTtcbiAgICAgIH1cbiAgICB9XG4gICAgYDpgXG5sZXQgdGlsZVJvdyA9IGkzMihsb2NhbElkLnkpICogcm93UGVyVGhyZWFkO1xubGV0IHRpbGVDb2wgPSBpMzIobG9jYWxJZC54KSAqIGNvbFBlclRocmVhZDtcblxubGV0IGdsb2JhbFJvdyA9IGkzMihnbG9iYWxJZC55KSAqIHJvd1BlclRocmVhZDtcbmxldCBnbG9iYWxDb2wgPSBpMzIoZ2xvYmFsSWQueCkgKiBjb2xQZXJUaHJlYWQ7XG5sZXQgZ2xvYmFsUm93U3RhcnQgPSBpMzIod29ya2dyb3VwSWQueSkgKiAke219O1xuXG5sZXQgdGlsZVJvd0EgPSBpMzIobG9jYWxJZC55KSAqICR7d307XG5sZXQgdGlsZUNvbEEgPSBpMzIobG9jYWxJZC54KSAqICR7JH07XG5sZXQgdGlsZVJvd0IgPSBpMzIobG9jYWxJZC55KSAqICR7eH07XG4vLyBMb29wIG92ZXIgc2hhcmVkIGRpbWVuc2lvbi5cbmZvciAodmFyIHQgPSAwOyB0IDwgbnVtX3RpbGVzOyB0ID0gdCArIDEpIHtcbiAgLy8gTG9hZCBvbmUgdGlsZSBvZiBBIGludG8gbG9jYWwgbWVtb3J5LlxuICBmb3IgKHZhciBpbm5lclJvdyA9IDA7IGlubmVyUm93IDwgJHt3fTsgaW5uZXJSb3cgPSBpbm5lclJvdyArIDEpIHtcbiAgICBmb3IgKHZhciBpbm5lckNvbCA9IDA7IGlubmVyQ29sIDwgJHskfTsgaW5uZXJDb2wgPSBpbm5lckNvbCArIDEpIHtcbiAgICAgIGxldCBpbnB1dFJvdyA9IHRpbGVSb3dBICsgaW5uZXJSb3c7XG4gICAgICBsZXQgaW5wdXRDb2wgPSB0aWxlQ29sQSArIGlubmVyQ29sO1xuICAgICAgJHt4dShpLGEpfVxuICAgIH1cbiAgfVxuXG4gIC8vIExvYWQgb25lIHRpbGUgb2YgQiBpbnRvIGxvY2FsIG1lbW9yeS5cbiAgZm9yICh2YXIgaW5uZXJSb3cgPSAwOyBpbm5lclJvdyA8ICR7eH07IGlubmVyUm93ID0gaW5uZXJSb3cgKyAxKSB7XG4gICAgZm9yICh2YXIgaW5uZXJDb2wgPSAwOyBpbm5lckNvbCA8IGNvbFBlclRocmVhZDsgaW5uZXJDb2wgPSBpbm5lckNvbCArIDEpIHtcbiAgICAgIGxldCBpbnB1dFJvdyA9IHRpbGVSb3dCICsgaW5uZXJSb3c7XG4gICAgICBsZXQgaW5wdXRDb2wgPSB0aWxlQ29sICsgaW5uZXJDb2w7XG4gICAgICBtbV9Cc3ViW2lucHV0Um93XVtpbnB1dENvbF0gPSBtbV9yZWFkQihiYXRjaCxcbiAgICAgICAga1N0YXJ0ICsgaW5wdXRSb3csXG4gICAgICAgIGdsb2JhbENvbCArIGlubmVyQ29sJHthP1wiLCBiYXRjaEluZGljZXNcIjpcIlwifSk7XG4gICAgfVxuICB9XG4gIGtTdGFydCA9IGtTdGFydCArIHRpbGVJbm5lcjtcbiAgd29ya2dyb3VwQmFycmllcigpO1xuXG4gIC8vIENvbXB1dGUgYWNjIHZhbHVlcyBmb3IgYSBzaW5nbGUgdGhyZWFkLlxuICB2YXIgQkNhY2hlZCA6IGFycmF5PCR7cn0sIGNvbFBlclRocmVhZD47XG4gIGZvciAodmFyIGsgPSAwOyBrIDwgdGlsZUlubmVyOyBrID0gayArIDEpIHtcbiAgICBmb3IgKHZhciBpbm5lciA9IDA7IGlubmVyIDwgY29sUGVyVGhyZWFkOyBpbm5lciA9IGlubmVyICsgMSkge1xuICAgICAgQkNhY2hlZFtpbm5lcl0gPSBtbV9Cc3ViW2tdW3RpbGVDb2wgKyBpbm5lcl07XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaW5uZXJSb3cgPSAwOyBpbm5lclJvdyA8IHJvd1BlclRocmVhZDsgaW5uZXJSb3cgPSBpbm5lclJvdyArIDEpIHtcbiAgICAgICR7WGMoaSl9XG4gICAgICBmb3IgKHZhciBpbm5lckNvbCA9IDA7IGlubmVyQ29sIDwgY29sUGVyVGhyZWFkOyBpbm5lckNvbCA9IGlubmVyQ29sICsgMSkge1xuICAgICAgICBhY2NbaW5uZXJSb3ddW2lubmVyQ29sXSA9IGFjY1tpbm5lclJvd11baW5uZXJDb2xdICsgQUNhY2hlZCAqIEJDYWNoZWRbaW5uZXJDb2xdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHdvcmtncm91cEJhcnJpZXIoKTtcbn1cblxuZm9yICh2YXIgaW5uZXJSb3cgPSAwOyBpbm5lclJvdyA8IHJvd1BlclRocmVhZDsgaW5uZXJSb3cgPSBpbm5lclJvdyArIDEpIHtcbiAgZm9yICh2YXIgaW5uZXJDb2wgPSAwOyBpbm5lckNvbCA8IGNvbFBlclRocmVhZDsgaW5uZXJDb2wgPSBpbm5lckNvbCArIDEpIHtcbiAgICBtbV93cml0ZShiYXRjaCwgZ2xvYmFsUm93ICsgaW5uZXJSb3csIGdsb2JhbENvbCArIGlubmVyQ29sLFxuICAgICAgICBhY2NbaW5uZXJSb3ddW2lubmVyQ29sXSk7XG4gIH1cbn1cbmA7cmV0dXJuYFxuICB2YXI8d29ya2dyb3VwPiBtbV9Bc3ViIDogYXJyYXk8YXJyYXk8JHtyfSwgJHtnfT4sICR7Yn0+O1xuICB2YXI8d29ya2dyb3VwPiBtbV9Cc3ViIDogYXJyYXk8YXJyYXk8JHtyfSwgJHtsfT4sICR7c30+O1xuICBjb25zdCByb3dQZXJUaHJlYWQgPSAke2VbMV19O1xuICBjb25zdCBjb2xQZXJUaHJlYWQgPSAke2VbMF19O1xuICBjb25zdCB0aWxlSW5uZXIgPSAke3N9O1xuXG5AY29tcHV0ZSBAd29ya2dyb3VwX3NpemUoJHt0WzBdfSwgJHt0WzFdfSwgJHt0WzJdfSlcbmZuIG1haW4oQGJ1aWx0aW4obG9jYWxfaW52b2NhdGlvbl9pZCkgbG9jYWxJZCA6IHZlYzM8dTMyPixcbiAgICAgICAgQGJ1aWx0aW4oZ2xvYmFsX2ludm9jYXRpb25faWQpIGdsb2JhbElkIDogdmVjMzx1MzI+LFxuICAgICAgICBAYnVpbHRpbih3b3JrZ3JvdXBfaWQpIHdvcmtncm91cElkIDogdmVjMzx1MzI+KSB7XG4gICAgbGV0IGJhdGNoID0gJHtvP1wiMFwiOlwiaTMyKGdsb2JhbElkLnopXCJ9O1xuICAgICR7YT9gbGV0IGJhdGNoSW5kaWNlcyA9ICR7YS5vZmZzZXRUb0luZGljZXMoXCJ1MzIoYmF0Y2gpXCIpfTtgOlwiXCJ9XG4gICAgbGV0IG51bV90aWxlcyA9ICR7bz9gJHtNYXRoLmNlaWwoYy9zKX1gOlwiKHVuaWZvcm1zLmRpbV9pbm5lciAtIDEpIC8gdGlsZUlubmVyICsgMVwifTtcbiAgICB2YXIga1N0YXJ0ID0gJHtvP2BpMzIoZ2xvYmFsSWQueikgKiAke2N9YDpcIjBcIn07XG5cbiAgICB2YXIgYWNjIDogYXJyYXk8YXJyYXk8JHtyfSwgY29sUGVyVGhyZWFkPiwgcm93UGVyVGhyZWFkPjtcblxuICAgIC8vIFdpdGhvdXQgdGhpcyBpbml0aWFsaXphdGlvbiBzdHJhbmdlIHZhbHVlcyBzaG93IHVwIGluIGFjYy5cbiAgICBmb3IgKHZhciBpbm5lclJvdyA9IDA7IGlubmVyUm93IDwgcm93UGVyVGhyZWFkOyBpbm5lclJvdyA9IGlubmVyUm93ICsgMSkge1xuICAgICAgZm9yICh2YXIgaW5uZXJDb2wgPSAwOyBpbm5lckNvbCA8IGNvbFBlclRocmVhZDsgaW5uZXJDb2wgPSBpbm5lckNvbCArIDEpIHtcbiAgICAgICAgYWNjW2lubmVyUm93XVtpbm5lckNvbF0gPSAwLjA7XG4gICAgICB9XG4gICAgfVxuICAgICR7VH1cbiAgfVxuYH0sUWM9KGUsdCxyLGEsaSxzPSExKT0+e2xldFtvLGMscF09aSxbbSxsLGcsYl09YSx3PXdyKG8scCksJD13cihjLHApLHg9SGUoYVswXS50eXBlLnRlbnNvciksVD0oKT0+e2xldCBFPWwucmFuayxPPW0ucmFuayxVPWB2YXIgYUluZGljZXM6ICR7bC50eXBlLmluZGljZXN9O2A7Zm9yKGxldCBEPUUtMi0xLFY9Ty0xO0Q+PTA7RC0tLFYtLSlVKz1gXG5hSW5kaWNlc1ske0R9XSA9ICR7Tz4xP2BiYXRjaEluZGljZXNbJHtWfV1gOlwiYmF0Y2hJbmRpY2VzXCJ9O2A7cmV0dXJuIHcuZm9yRWFjaChEPT57VSs9YFxuYUluZGljZXNbJHtEfV0gPSAwO2B9KSxVKz1gXG5hSW5kaWNlc1ske0UtMn1dID0gdTMyKHJvdyk7XG4gICAgICAgICAgICAgICAgICAgYUluZGljZXNbJHtFLTF9XSA9IHUzMihjb2xJbik7YCxVfSxDPSgpPT57bGV0IEU9Zy5yYW5rLE89bS5yYW5rLFU9YHZhciBiSW5kaWNlczogJHtnLnR5cGUuaW5kaWNlc307YDtmb3IobGV0IEQ9RS0yLTEsVj1PLTE7RD49MDtELS0sVi0tKVUrPWBcbmJJbmRpY2VzWyR7RH1dID0gJHtPPjE/YGJhdGNoSW5kaWNlc1ske1Z9XWA6XCJiYXRjaEluZGljZXNcIn07YDtyZXR1cm4gJC5mb3JFYWNoKEQ9PntVKz1gXG5iSW5kaWNlc1ske0R9XSA9IDA7YH0pLFUrPWBcbmJJbmRpY2VzWyR7RS0yfV0gPSB1MzIocm93KTtcbiAgICAgICAgICAgICAgICAgICBiSW5kaWNlc1ske0UtMX1dID0gdTMyKGNvbEluKTtgLFV9O3JldHVybmBcbiAgICBmbiBtbV9yZWFkQShiYXRjaDogaTMyLCByb3c6IGkzMiwgY29sSW46IGkzMiwgYmF0Y2hJbmRpY2VzOiAke20udHlwZS5pbmRpY2VzfSkgLT4gJHtqZShlLHgpfSB7XG4gICAgICB2YXIgdmFsdWUgPSAke2plKGUseCl9KDAuMCk7XG4gICAgICBsZXQgY29sID0gY29sSW4gKiAke2V9O1xuICAgICAgaWYocm93IDwgdW5pZm9ybXMuZGltX2Ffb3V0ZXIgJiYgY29sIDwgdW5pZm9ybXMuZGltX2lubmVyKVxuICAgICAge1xuICAgICAgICAke1QoKX1cbiAgICAgICAgdmFsdWUgPSAke2wuZ2V0QnlJbmRpY2VzKFwiYUluZGljZXNcIil9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIGZuIG1tX3JlYWRCKGJhdGNoOiBpMzIsIHJvdzogaTMyLCBjb2xJbjogaTMyLCBiYXRjaEluZGljZXM6ICR7bS50eXBlLmluZGljZXN9KSAtPiAke2plKGUseCl9IHtcbiAgICAgIHZhciB2YWx1ZSA9ICR7amUoZSx4KX0oMC4wKTtcbiAgICAgIGxldCBjb2wgPSBjb2xJbiAqICR7ZX07XG4gICAgICBpZihyb3cgPCB1bmlmb3Jtcy5kaW1faW5uZXIgJiYgY29sIDwgdW5pZm9ybXMuZGltX2Jfb3V0ZXIpXG4gICAgICB7XG4gICAgICAgICR7QygpfVxuICAgICAgICB2YWx1ZSA9ICR7Zy5nZXRCeUluZGljZXMoXCJiSW5kaWNlc1wiKX07XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgZm4gbW1fd3JpdGUoYmF0Y2g6IGkzMiwgcm93OiBpMzIsIGNvbEluOiBpMzIsIHZhbHVlSW46ICR7amUoZSx4KX0pIHtcbiAgICAgIGxldCBjb2wgPSBjb2xJbiAqICR7ZX07XG4gICAgICBpZiAocm93IDwgdW5pZm9ybXMuZGltX2Ffb3V0ZXIgJiYgY29sIDwgdW5pZm9ybXMuZGltX2Jfb3V0ZXIpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gdmFsdWVJbjtcbiAgICAgICAgbGV0IGNvb3JkcyA9IHZlYzM8aTMyPihiYXRjaCwgcm93LCBjb2xJbik7XG4gICAgICAgICR7dD9gdmFsdWUgPSB2YWx1ZSArICR7cz9cImJpYXNbY29sSW5dXCI6YCR7amUoZSx4KX0oYmlhc1tyb3ddKWB9O2A6XCJcIn1cbiAgICAgICAgJHtyfVxuICAgICAgICAke2Iuc2V0QnlJbmRpY2VzKFwidmVjMzx1MzI+KGNvb3JkcylcIixcInZhbHVlXCIpfVxuICAgICAgfVxuICAgIH1cbiAgICBgfSxyYT0oZSx0LHIsYSxpPSExKT0+e2xldCBzPWVbMF0uZGltcyxvPWVbMV0uZGltcyxjPXMuc2xpY2UoMCwtMikscD1vLnNsaWNlKDAsLTIpLG09YT9hLnNsaWNlKDAsLTIpOnIuc2xpY2UoMCwtMiksbD1OLnNpemUobSksZz1zW3MubGVuZ3RoLTJdLGI9c1tzLmxlbmd0aC0xXSx3PW9bby5sZW5ndGgtMV0sJD1iJTQ9PT0wJiZ3JTQ9PT0wLHg9Zzw9OD9bNCwxLDFdOls0LDQsMV0sVD1bOCw4LDFdLEM9W01hdGguY2VpbCh3L1RbMF0veFswXSksTWF0aC5jZWlsKGcvVFsxXS94WzFdKSxNYXRoLmNlaWwobC9UWzJdL3hbMl0pXSxTPSQ/NDoxLEU9Wy4uLmMsZyxiL1NdLE89RS5sZW5ndGgsVT1bLi4ucCxiLHcvU10sRD1VLmxlbmd0aCxWPVtsLGcsdy9TXSxZPVt7dHlwZTpcImludDMyXCIsZGF0YTpnfSx7dHlwZTpcImludDMyXCIsZGF0YTp3fSx7dHlwZTpcImludDMyXCIsZGF0YTpifV07dC5hY3RpdmF0aW9uPT09XCJDbGlwXCImJlkucHVzaCh7dHlwZTpcImZsb2F0MzJcIixkYXRhOnQuY2xpcE1heH0se3R5cGU6XCJmbG9hdDMyXCIsZGF0YTp0LmNsaXBNaW59KSxZLnB1c2goLi4uTChtKSwuLi5MKEUpLC4uLkwoVSkpO2xldCBzZT1bXCJyYW5rXCIsXCJyYW5rXCJdLEI9ZS5sZW5ndGg+MjtCJiYoWS5wdXNoKC4uLkwoZVsyXS5kaW1zKSksc2UucHVzaChcInJhbmtcIikpLFkucHVzaCguLi5MKFYpKTtsZXQgdGU9a2U9PntsZXQgT2U9bS5sZW5ndGgsZWU9cW4oXCJiYXRjaERpbXNcIixlWzBdLmRhdGFUeXBlLE9lLDEpLGJlPUhlKGVbMF0uZGF0YVR5cGUpLFVlPVcoXCJhXCIsZVswXS5kYXRhVHlwZSxPLFMpLHBlPVcoXCJiXCIsZVsxXS5kYXRhVHlwZSxELFMpLHllPUooXCJyZXN1bHRcIixlWzBdLmRhdGFUeXBlLFYubGVuZ3RoLFMpLGRlPVtVZSxwZV07aWYoQil7bGV0IEdlPWk/UzoxO2RlLnB1c2goVyhcImJpYXNcIixlWzJdLmRhdGFUeXBlLGVbMl0uZGltcy5sZW5ndGgsR2UpKX1sZXQgdmU9W3tuYW1lOlwiZGltX2Ffb3V0ZXJcIix0eXBlOlwiaTMyXCJ9LHtuYW1lOlwiZGltX2Jfb3V0ZXJcIix0eXBlOlwiaTMyXCJ9LHtuYW1lOlwiZGltX2lubmVyXCIsdHlwZTpcImkzMlwifV07dC5hY3RpdmF0aW9uPT09XCJDbGlwXCImJnZlLnB1c2goe25hbWU6XCJjbGlwX21heFwiLHR5cGU6XCJmMzJcIn0se25hbWU6XCJjbGlwX21pblwiLHR5cGU6XCJmMzJcIn0pO2xldCBXZT1SdCh0LHllLnR5cGUudmFsdWUpLEJlPVFjKFMsQixXZSxbZWUsVWUscGUseWVdLFtjLHAsbV0saSk7cmV0dXJuYFxuICAke2tlLnJlZ2lzdGVyVW5pZm9ybXModmUpLnJlZ2lzdGVySW50ZXJuYWxWYXJpYWJsZXMoZWUpLmRlY2xhcmVWYXJpYWJsZXMoLi4uZGUseWUpfVxuICAke0JlfVxuICAkeyQ/WHIoeCxULGJlLGVlKTpRcih4LFQsYmUsZWUpfVxuICAgICAgICAgICAgICAgICAgIGB9O3JldHVybntuYW1lOlwiTWF0TXVsXCIsc2hhZGVyQ2FjaGU6e2hpbnQ6YCR7eH07JHt0LmFjdGl2YXRpb259OyR7JH07JHtpfWAsaW5wdXREZXBlbmRlbmNpZXM6c2V9LGdldFJ1bkRhdGE6KCk9Pih7b3V0cHV0czpbe2RpbXM6cixkYXRhVHlwZTplWzBdLmRhdGFUeXBlfV0sZGlzcGF0Y2hHcm91cDp7eDpDWzBdLHk6Q1sxXSx6OkNbMl19LHByb2dyYW1Vbmlmb3JtczpZfSksZ2V0U2hhZGVyU291cmNlOnRlfX19KTt2YXIgSmMsQ3UsSXU9USgoKT0+e1widXNlIHN0cmljdFwiO3F0KCk7X2UoKTtqdCgpO2VhKCk7UWEoKTtKcigpO0pjPShlLHQscixhLGk9ITEscyxvPTQsYz00LHA9NCxtPVwiZjMyXCIpPT57bGV0IGw9Qj0+e3N3aXRjaChCKXtjYXNlIDE6cmV0dXJuXCJyZXNEYXRhID0geFt4SW5kZXhdO1wiO2Nhc2UgMzpyZXR1cm5gcmVzRGF0YSA9IHZlYzM8JHttfT4oeFt4SW5kZXhdLCB4W3hJbmRleCArIDFdLCB4W3hJbmRleCArIDJdKTtgO2Nhc2UgNDpyZXR1cm5cInJlc0RhdGEgPSB4W3hJbmRleCAvIDRdO1wiO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBpbm5lckVsZW1lbnRTaXplICR7Qn0gaXMgbm90IHN1cHBvcnRlZC5gKX19LGc9Qj0+e3N3aXRjaChCKXtjYXNlIDE6cmV0dXJuXCJyZXR1cm4gd1tyb3cgKiBpMzIodW5pZm9ybXMud19zaGFwZVszXSkgKyBjb2xJbl07XCI7Y2FzZSA0OnJldHVyblwicmV0dXJuIHdbcm93ICogaTMyKHVuaWZvcm1zLndfc2hhcGVbM10pIC8gNCArIGNvbEluXTtcIjtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgaW5uZXJFbGVtZW50U2l6ZSAke0J9IGlzIG5vdCBzdXBwb3J0ZWQuYCl9fSxiPWU/YFxuICAgIGxldCBjb29yZCA9IHZlYzQ8aTMyPihiYXRjaCwgeFJvdywgeENvbCwgeENoKTtcbiAgICBgOmBcbiAgICBsZXQgY29vcmQgPSB2ZWM0PGkzMj4oYmF0Y2gsIHhDaCwgeFJvdywgeENvbCk7XG4gICAgYCx3PWU/YFxuICAgIGxldCBjb29yZHMgPSB2ZWM0PGkzMj4oXG4gICAgICBiYXRjaCxcbiAgICAgIHJvdyAvIG91dFdpZHRoLFxuICAgICAgcm93ICUgb3V0V2lkdGgsXG4gICAgICBjb2wpO1xuICAgIGA6YFxuICAgIGxldCBjb29yZHMgPSB2ZWM0PGkzMj4oXG4gICAgICBiYXRjaCxcbiAgICAgIHJvdyxcbiAgICAgIGNvbCAvIG91dFdpZHRoLFxuICAgICAgY29sICUgb3V0V2lkdGgpO1xuICAgIGAsJD1lP1wiaTMyKHVuaWZvcm1zLnhfc2hhcGVbMV0pXCI6XCJpMzIodW5pZm9ybXMueF9zaGFwZVsyXSlcIix4PWU/XCJpMzIodW5pZm9ybXMueF9zaGFwZVsyXSlcIjpcImkzMih1bmlmb3Jtcy54X3NoYXBlWzNdKVwiLFQ9ZT9cInJvd1wiOlwiY29sXCIsQz1lP1wiY29sXCI6XCJyb3dcIixTPWBcbiAgICBsZXQgaW5DaGFubmVscyA9IGkzMih1bmlmb3Jtcy53X3NoYXBlWzJdKTtcbiAgICBsZXQgb3V0V2lkdGggPSAke2U/XCJpMzIodW5pZm9ybXMucmVzdWx0X3NoYXBlWzJdKVwiOlwiaTMyKHVuaWZvcm1zLnJlc3VsdF9zaGFwZVszXSlcIn07XG4gICAgbGV0IG91dFJvdyA9ICR7VH0gLyBvdXRXaWR0aDtcbiAgICBsZXQgb3V0Q29sID0gJHtUfSAlIG91dFdpZHRoO1xuXG4gICAgbGV0IFdSb3cgPSAke0N9IC8gKGkzMih1bmlmb3Jtcy53X3NoYXBlWzFdKSAqIGluQ2hhbm5lbHMpO1xuICAgIGxldCBXQ29sID0gJHtDfSAvIGluQ2hhbm5lbHMgJSBpMzIodW5pZm9ybXMud19zaGFwZVsxXSk7XG4gICAgbGV0IHhSb3cgPSBvdXRSb3cgKiB1bmlmb3Jtcy5zdHJpZGVbMF0gKyB1bmlmb3Jtcy5kaWxhdGlvblswXSAqIFdSb3cgLSB1bmlmb3Jtcy5wYWRbMF07XG4gICAgbGV0IHhDb2wgPSBvdXRDb2wgKiB1bmlmb3Jtcy5zdHJpZGVbMV0gKyB1bmlmb3Jtcy5kaWxhdGlvblsxXSAqIFdDb2wgLSB1bmlmb3Jtcy5wYWRbMV07XG4gICAgbGV0IHhDaCA9ICR7Q30gJSBpbkNoYW5uZWxzO1xuICAgIHZhciByZXNEYXRhID0gJHtqZShvLG0pfSgwLjApO1xuICAgIC8vIFRoZSBib3VuZHMgY2hlY2tpbmcgaXMgYWx3YXlzIG5lZWRlZCBzaW5jZSB3ZSB1c2UgaXQgdG8gcGFkIHplcm8gZm9yXG4gICAgLy8gdGhlICdzYW1lJyBwYWRkaW5nIHR5cGUuXG4gICAgaWYgKHhSb3cgPj0gMCAmJiB4Um93IDwgJHskfSAmJiB4Q29sID49IDAgJiYgeENvbCA8ICR7eH0pIHtcbiAgICAgICR7Yn1cbiAgICAgIGxldCB4SW5kZXggPSBnZXRJbmRleEZyb21Db29yZHM0RChjb29yZCwgdmVjNDxpMzI+KHVuaWZvcm1zLnhfc2hhcGUpKTtcbiAgICAgICR7bChvKX1cbiAgICB9XG4gICAgcmV0dXJuIHJlc0RhdGE7YCxFPWU/dCYmYT9gXG4gICAgbGV0IGNvbCA9IGNvbEluICogJHtvfTtcbiAgICAke1N9YDpgXG4gICAgbGV0IGNvbCA9IGNvbEluICogJHtvfTtcbiAgICBpZiAocm93IDwgdW5pZm9ybXMuZGltX2Ffb3V0ZXIgJiYgY29sIDwgdW5pZm9ybXMuZGltX2lubmVyKSB7XG4gICAgICAke1N9XG4gICAgfVxuICAgIHJldHVybiAke2plKG8sbSl9KDAuMCk7YDphJiZyP2BcbiAgICBsZXQgY29sID0gY29sSW4gKiAke299O1xuICAgICR7U31gOmBcbiAgICBsZXQgY29sID0gY29sSW4gKiAke299O1xuICAgIGlmIChyb3cgPCB1bmlmb3Jtcy5kaW1faW5uZXIgJiYgY29sIDwgdW5pZm9ybXMuZGltX2Jfb3V0ZXIpIHtcbiAgICAgICR7U31cbiAgICB9XG4gICAgcmV0dXJuICR7amUobyxtKX0oMC4wKTtgLE89YCR7ZyhjKX1gLFU9amUocCxtKSxEPWU/amUobyxtKTpqZShjLG0pLFY9ZT9qZShjLG0pOmplKG8sbSksWT1SdChzLFUpO3JldHVybmBcbiAgICBmbiBtbV9yZWFkQShiYXRjaDogaTMyLCByb3cgOiBpMzIsIGNvbEluIDogaTMyKSAtPiAke0R9IHtcbiAgICAgICR7ZT9FOk99XG4gICAgfVxuXG4gICAgZm4gbW1fcmVhZEIoYmF0Y2g6IGkzMiwgcm93IDogaTMyLCBjb2xJbiA6IGkzMikgLT4gJHtWfSB7XG4gICAgICAke2U/TzpFfVxuICAgIH1cblxuICAgIGZuIG1tX3dyaXRlKGJhdGNoOiBpMzIsIHJvdyA6IGkzMiwgY29sSW4gOiBpMzIsIHZhbHVlSW4gOiAke1V9KSB7XG4gICAgICBsZXQgY29sID0gY29sSW4gKiAke3B9O1xuICAgICAgaWYgKHJvdyA8IHVuaWZvcm1zLmRpbV9hX291dGVyICYmIGNvbCA8IHVuaWZvcm1zLmRpbV9iX291dGVyKVxuICAgICAge1xuICAgICAgdmFyIHZhbHVlID0gdmFsdWVJbjtcbiAgICAgIGxldCBvdXRXaWR0aCA9ICR7ZT9cImkzMih1bmlmb3Jtcy5yZXN1bHRfc2hhcGVbMl0pXCI6XCJpMzIodW5pZm9ybXMucmVzdWx0X3NoYXBlWzNdKVwifTtcbiAgICAgICR7d31cbiAgICAgICR7Sm4oaSl9XG4gICAgICAke1l9XG4gICAgICBzZXRPdXRwdXRBdENvb3Jkcyhjb29yZHNbMF0sIGNvb3Jkc1sxXSwgY29vcmRzWzJdLCBjb29yZHNbM10sIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9YH0sQ3U9KGUsdCxyLGEsaSxzLG8sYyk9PntsZXQgcD10LmZvcm1hdD09PVwiTkhXQ1wiLG09cD9lWzBdLmRpbXNbM106ZVswXS5kaW1zWzFdLGw9clswXSxnPXA/clsyXTpyWzNdLGI9cD9yWzFdOnJbMl0sdz1wP3JbM106clsxXSwkPXAmJihtJTQ9PT0wfHxtJTM9PT0wKSYmdyU0PT09MCx4PXA/dzpnKmIsVD1wP2cqYjp3LEM9WzgsOCwxXSxTPWE8PTg/WzQsMSwxXTpbNCw0LDFdLEU9W01hdGguY2VpbCh4L0NbMF0vU1swXSksTWF0aC5jZWlsKFQvQ1sxXS9TWzFdKSxNYXRoLmNlaWwobC9DWzJdL1NbMl0pXTtEZShcInZlcmJvc2VcIiwoKT0+YFtjb252MmRfbW1fd2ViZ3B1XSBkaXNwYXRjaCA9ICR7RX1gKTtsZXQgTz0kP3AmJm0lNCE9PTA/Mzo0OjEsVT1DWzFdKlNbMV0sRD1DWzBdKlNbMF0sVj1NYXRoLm1heChDWzBdKk8sQ1sxXSksWT1hJVU9PT0wLHNlPWklRD09PTAsQj1zJVY9PT0wLHRlPSQ/W08sNCw0XTpbMSwxLDFdLGtlPVt7dHlwZTpcImludDMyXCIsZGF0YTphfSx7dHlwZTpcImludDMyXCIsZGF0YTppfSx7dHlwZTpcImludDMyXCIsZGF0YTpzfSx7dHlwZTpcImludDMyXCIsZGF0YTpbdC5wYWRzWzBdLHQucGFkc1sxXV19LHt0eXBlOlwiaW50MzJcIixkYXRhOnQuc3RyaWRlc30se3R5cGU6XCJpbnQzMlwiLGRhdGE6dC5kaWxhdGlvbnN9XTt0LmFjdGl2YXRpb249PT1cIkNsaXBcIiYma2UucHVzaCh7dHlwZTpcImZsb2F0MzJcIixkYXRhOnQuY2xpcE1heH0se3R5cGU6XCJmbG9hdDMyXCIsZGF0YTp0LmNsaXBNaW59KSxrZS5wdXNoKC4uLkwoZVswXS5kaW1zKSwuLi5MKGVbMV0uZGltcykpO2xldCBPZT1bXCJyYW5rXCIsXCJyYW5rXCJdO28mJihrZS5wdXNoKC4uLkwoZVsyXS5kaW1zKSksT2UucHVzaChcInJhbmtcIikpLGtlLnB1c2goLi4uTChyKSk7bGV0IGVlPWJlPT57bGV0IFVlPVt7bmFtZTpcImRpbV9hX291dGVyXCIsdHlwZTpcImkzMlwifSx7bmFtZTpcImRpbV9iX291dGVyXCIsdHlwZTpcImkzMlwifSx7bmFtZTpcImRpbV9pbm5lclwiLHR5cGU6XCJpMzJcIn0se25hbWU6XCJwYWRcIix0eXBlOlwiaTMyXCIsbGVuZ3RoOjJ9LHtuYW1lOlwic3RyaWRlXCIsdHlwZTpcImkzMlwiLGxlbmd0aDoyfSx7bmFtZTpcImRpbGF0aW9uXCIsdHlwZTpcImkzMlwiLGxlbmd0aDoyfV07dC5hY3RpdmF0aW9uPT09XCJDbGlwXCImJlVlLnB1c2goe25hbWU6XCJjbGlwX21heFwiLHR5cGU6XCJmMzJcIn0se25hbWU6XCJjbGlwX21pblwiLHR5cGU6XCJmMzJcIn0pO2xldCBwZT0kPzQ6MSx5ZT1IZShlWzBdLmRhdGFUeXBlKSxkZT1gXG4gICAgICBmbiBzZXRPdXRwdXRBdEluZGV4KGZsYXRJbmRleCA6IGkzMiwgdmFsdWUgOiAkeyQ/YHZlYzQ8JHt5ZX0+YDp5ZX0pIHtcbiAgICAgICAgcmVzdWx0W2ZsYXRJbmRleF0gPSAkeyQ/YHZlYzQ8JHt5ZX0+YDp5ZX0odmFsdWUpO1xuICAgICAgfVxuICAgICAgZm4gc2V0T3V0cHV0QXRDb29yZHMoZDAgOiBpMzIsIGQxIDogaTMyLCBkMiA6IGkzMiwgZDMgOiBpMzIsIHZhbHVlIDogJHskP2B2ZWM0PCR7eWV9PmA6eWV9KSB7XG4gICAgICAgIGxldCBmbGF0SW5kZXggPSBnZXRPdXRwdXRJbmRleEZyb21Db29yZHModmVjNDxpMzI+KGQwLCBkMSwgZDIsIGQzKSk7XG4gICAgICAgIHNldE91dHB1dEF0SW5kZXgoZmxhdEluZGV4ICR7JD9cIi8gNFwiOlwiXCJ9LCB2YWx1ZSk7XG4gICAgICB9YCx2ZT1XKFwieFwiLGVbMF0uZGF0YVR5cGUsZVswXS5kaW1zLmxlbmd0aCxPPT09Mz8xOk8pLFdlPVcoXCJ3XCIsZVsxXS5kYXRhVHlwZSxlWzFdLmRpbXMubGVuZ3RoLHBlKSxCZT1bdmUsV2VdLEdlPUooXCJyZXN1bHRcIixlWzBdLmRhdGFUeXBlLHIubGVuZ3RoLHBlKTtpZihvKXtsZXQgRj1XKFwiYmlhc1wiLGVbMl0uZGF0YVR5cGUsZVsyXS5kaW1zLmxlbmd0aCxwZSk7QmUucHVzaChGKSxkZSs9YFxuICAgICAgICBmbiBnZXRCaWFzQnlPdXRwdXRDb29yZHMoY29vcmRzIDogdmVjNDxpMzI+KSAtPiAkeyQ/YHZlYzQ8JHt5ZX0+YDp5ZX0ge1xuICAgICAgICAgIHJldHVybiBiaWFzW2Nvb3Jkcy4ke3A/XCJ3XCI6XCJ5XCJ9JHskP1wiLyA0XCI6XCJcIn1dO1xuICAgICAgICB9YH1yZXR1cm5gXG4gICAgICAgICR7dGEoXCJ1bmlmb3Jtcy5yZXN1bHRfc3RyaWRlc1wiKX1cbiAgICAgICAgLy9zdHJ1Y3QgVW5pZm9ybXMgeyB4U2hhcGUgOiB2ZWM0PGkzMj4sIHdTaGFwZSA6IHZlYzQ8aTMyPiwgb3V0U2hhcGUgOiB2ZWM0PGkzMj4sXG4gICAgICAgIC8vICBvdXRTaGFwZVN0cmlkZXM6IHZlYzM8aTMyPiwgZmlsdGVyRGltcyA6IHZlYzI8aTMyPiwgcGFkIDogdmVjMjxpMzI+LCBzdHJpZGUgOiB2ZWMyPGkzMj4sXG4gICAgICAgIC8vICBkaWxhdGlvbiA6IHZlYzI8aTMyPiwgZGltQU91dGVyIDogaTMyLCBkaW1CT3V0ZXIgOiBpMzIsIGRpbUlubmVyIDogaTMyIH07XG4gICAgICAgICR7YmUucmVnaXN0ZXJVbmlmb3JtcyhVZSkuZGVjbGFyZVZhcmlhYmxlcyguLi5CZSxHZSl9XG4gICAgICAgICR7ZGV9XG4gICAgICAgICR7SmMocCxZLHNlLEIsbyx0LHRlWzBdLHRlWzFdLHRlWzJdLHllKX1cbiAgICAgICAgJHskP1hyKFMsQyx5ZSx2b2lkIDAsIXAsVik6UXIoUyxDLHllLHZvaWQgMCwhcCxWLCExLHZvaWQgMCxjKX1gfTtyZXR1cm57bmFtZTpcIkNvbnYyRE1hdE11bFwiLHNoYWRlckNhY2hlOntoaW50OmAke3QuY2FjaGVLZXl9OyR7T307JHskfTske1l9OyR7c2V9OyR7Qn07JHtVfTske0R9OyR7Vn1gLGlucHV0RGVwZW5kZW5jaWVzOk9lfSxnZXRSdW5EYXRhOigpPT4oe291dHB1dHM6W3tkaW1zOnIsZGF0YVR5cGU6ZVswXS5kYXRhVHlwZX1dLGRpc3BhdGNoR3JvdXA6e3g6RVswXSx5OkVbMV0sejpFWzJdfSxwcm9ncmFtVW5pZm9ybXM6a2V9KSxnZXRTaGFkZXJTb3VyY2U6ZWV9fX0pO3ZhciBKYSxBdT1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7Q2UoKTtfZSgpO3RpKCk7anQoKTtKYT0oZSx0LHIpPT57bGV0IGE9ZS5sZW5ndGg+MixpPWE/XCJ2YWx1ZSArPSBiW291dHB1dF9jaGFubmVsXTtcIjpcIlwiLHM9ZVswXS5kaW1zLG89ZVsxXS5kaW1zLGM9b1swXS90Lmdyb3VwLHA9dC5mb3JtYXQ9PT1cIk5IV0NcIixtPWVpKHMsbyx0LmRpbGF0aW9ucyx0LnBhZHMsdC5zdHJpZGVzLHApLGw9Ti5zaXplKG0pLGc9W3t0eXBlOlwidWludDMyXCIsZGF0YTpsfSx7dHlwZTpcInVpbnQzMlwiLGRhdGE6dC5kaWxhdGlvbnN9LHt0eXBlOlwidWludDMyXCIsZGF0YTpbdC5zdHJpZGVzWzBdLHQuc3RyaWRlc1sxXV19LHt0eXBlOlwidWludDMyXCIsZGF0YTpbdC5wYWRzWzBdLHQucGFkc1sxXV19LHt0eXBlOlwidWludDMyXCIsZGF0YTpjfV07dC5hY3RpdmF0aW9uPT09XCJDbGlwXCImJmcucHVzaCh7dHlwZTpcImZsb2F0MzJcIixkYXRhOnQuY2xpcE1heH0se3R5cGU6XCJmbG9hdDMyXCIsZGF0YTp0LmNsaXBNaW59KSxnLnB1c2goLi4uTChzKSwuLi5MKG8pLC4uLkwobSkpO2xldCBiPVtcInJhbmtcIixcInJhbmtcIl07YSYmKGcucHVzaCguLi5MKGVbMl0uZGltcykpLGIucHVzaChcInJhbmtcIikpLGcucHVzaCguLi5MKG0pKTtsZXQgdz0kPT57bGV0IHg9SihcIm91dHB1dFwiLGVbMF0uZGF0YVR5cGUsbS5sZW5ndGgpLFQ9UnQodCx4LnR5cGUudmFsdWUpLEM9VyhcInhcIixlWzBdLmRhdGFUeXBlLHMubGVuZ3RoKSxTPVcoXCJ3XCIsZVsxXS5kYXRhVHlwZSxvLmxlbmd0aCksRT1bQyxTXTthJiZFLnB1c2goVyhcImJcIixlWzJdLmRhdGFUeXBlLGVbMl0uZGltcykpO2xldCBPPVt7bmFtZTpcIm91dHB1dF9zaXplXCIsdHlwZTpcInUzMlwifSx7bmFtZTpcImRpbGF0aW9uc1wiLHR5cGU6XCJ1MzJcIixsZW5ndGg6dC5kaWxhdGlvbnMubGVuZ3RofSx7bmFtZTpcInN0cmlkZXNcIix0eXBlOlwidTMyXCIsbGVuZ3RoOjJ9LHtuYW1lOlwicGFkc1wiLHR5cGU6XCJ1MzJcIixsZW5ndGg6Mn0se25hbWU6XCJvdXRwdXRfY2hhbm5lbHNfcGVyX2dyb3VwXCIsdHlwZTpcInUzMlwifV07cmV0dXJuIHQuYWN0aXZhdGlvbj09PVwiQ2xpcFwiJiZPLnB1c2goe25hbWU6XCJjbGlwX21heFwiLHR5cGU6XCJmMzJcIn0se25hbWU6XCJjbGlwX21pblwiLHR5cGU6XCJmMzJcIn0pLGBcbiAgJHskLnJlZ2lzdGVyVW5pZm9ybXMoTykuZGVjbGFyZVZhcmlhYmxlcyguLi5FLHgpfVxuXG4gICR7JC5tYWluU3RhcnQoKX1cbiAgICAkeyQuZ3VhcmRBZ2FpbnN0T3V0T2ZCb3VuZHNXb3JrZ3JvdXBTaXplcyhcInVuaWZvcm1zLm91dHB1dF9zaXplXCIpfVxuXG4gICAgbGV0IG91dHB1dEluZGljZXMgPSAke3gub2Zmc2V0VG9JbmRpY2VzKFwiZ2xvYmFsX2lkeFwiKX07XG4gICAgbGV0IGJhdGNoOiB1MzIgPSBvdXRwdXRJbmRpY2VzWzBdO1xuICAgIGxldCBvdXRwdXRfY2hhbm5lbDogdTMyID0gb3V0cHV0SW5kaWNlc1ske3A/MzoxfV07XG4gICAgbGV0IHhSQ0Nvcm5lcjogdmVjMjx1MzI+ID0gdmVjMjx1MzI+KG91dHB1dEluZGljZXNbJHtwPzE6Mn1dLCBvdXRwdXRJbmRpY2VzWyR7cD8yOjN9XSkgKiB1bmlmb3Jtcy5zdHJpZGVzIC0gdW5pZm9ybXMucGFkcztcbiAgICBsZXQgZ3JvdXBfaWQ6IHUzMiA9IG91dHB1dF9jaGFubmVsIC8gdW5pZm9ybXMub3V0cHV0X2NoYW5uZWxzX3Blcl9ncm91cDtcblxuICAgIHZhciB2YWx1ZTogJHt4LnR5cGUudmFsdWV9ID0gJHt4LnR5cGUudmFsdWV9KDApO1xuICAgIGZvciAodmFyIHdJbkNoYW5uZWw6IHUzMiA9IDB1OyB3SW5DaGFubmVsIDwgdW5pZm9ybXMud19zaGFwZVsxXTsgd0luQ2hhbm5lbCsrKSB7XG4gICAgICBsZXQgaW5wdXRfY2hhbm5lbCA9IGdyb3VwX2lkICogdW5pZm9ybXMud19zaGFwZVsxXSArIHdJbkNoYW5uZWw7XG4gICAgICBmb3IgKHZhciB3SGVpZ2h0OiB1MzIgPSAwdTsgd0hlaWdodCA8IHVuaWZvcm1zLndfc2hhcGVbMl07IHdIZWlnaHQrKykge1xuICAgICAgICBsZXQgeEhlaWdodCA9IHhSQ0Nvcm5lci54ICsgd0hlaWdodCAqIHVuaWZvcm1zLmRpbGF0aW9uc1swXTtcblxuICAgICAgICBpZiAoeEhlaWdodCA8IDB1IHx8IHhIZWlnaHQgPj0gdW5pZm9ybXMueF9zaGFwZVske3A/MToyfV0pIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAodmFyIHdXaWR0aDogdTMyID0gMHU7IHdXaWR0aCA8IHVuaWZvcm1zLndfc2hhcGVbM107IHdXaWR0aCsrKSB7XG4gICAgICAgICAgbGV0IHhXaWR0aCA9IHhSQ0Nvcm5lci55ICsgd1dpZHRoICogdW5pZm9ybXMuZGlsYXRpb25zWzFdO1xuICAgICAgICAgIGlmICh4V2lkdGggPCAwdSB8fCB4V2lkdGggPj0gdW5pZm9ybXMueF9zaGFwZVske3A/MjozfV0pIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGxldCB4VmFsID0gJHtwP0MuZ2V0KFwiYmF0Y2hcIixcInhIZWlnaHRcIixcInhXaWR0aFwiLFwiaW5wdXRfY2hhbm5lbFwiKTpDLmdldChcImJhdGNoXCIsXCJpbnB1dF9jaGFubmVsXCIsXCJ4SGVpZ2h0XCIsXCJ4V2lkdGhcIil9O1xuICAgICAgICAgIGxldCB3VmFsID0gJHtTLmdldChcIm91dHB1dF9jaGFubmVsXCIsXCJ3SW5DaGFubmVsXCIsXCJ3SGVpZ2h0XCIsXCJ3V2lkdGhcIil9O1xuICAgICAgICAgIHZhbHVlICs9IHhWYWwqd1ZhbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAke2l9XG4gICAgJHtUfVxuICAgICR7eC5zZXRCeU9mZnNldChcImdsb2JhbF9pZHhcIixcInZhbHVlXCIpfVxuICB9YH07cmV0dXJue25hbWU6XCJHcm91cGVkQ29udlwiLHNoYWRlckNhY2hlOntoaW50OnQuY2FjaGVLZXksaW5wdXREZXBlbmRlbmNpZXM6Yn0sZ2V0UnVuRGF0YTooKT0+KHtvdXRwdXRzOlt7ZGltczpyP3IobSk6bSxkYXRhVHlwZTplWzBdLmRhdGFUeXBlfV0sZGlzcGF0Y2hHcm91cDp7eDpNYXRoLmNlaWwobC82NCl9LHByb2dyYW1Vbmlmb3JtczpnfSksZ2V0U2hhZGVyU291cmNlOnd9fX0pO3ZhciByaSxlcCxUdSxuaT1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7Q2UoKTtKcigpO19lKCk7anQoKTtyaT0oZSx0LHIsYSxpPSExKT0+e2xldCBzPWVbMF0uZGltcyxvPWVbMV0uZGltcyxjPXNbcy5sZW5ndGgtMl0scD1vW28ubGVuZ3RoLTFdLG09c1tzLmxlbmd0aC0xXSxsPUxlKHApLGc9TGUobSksYj1MZShjKSx3PU4uc2l6ZShyKS9sL2IsJD1lLmxlbmd0aD4yLHg9YT9hLnNsaWNlKDAsLTIpOnIuc2xpY2UoMCwtMiksQz1bTi5zaXplKHgpLGMscF0sUz1be3R5cGU6XCJ1aW50MzJcIixkYXRhOnd9LHt0eXBlOlwidWludDMyXCIsZGF0YTpjfSx7dHlwZTpcInVpbnQzMlwiLGRhdGE6cH0se3R5cGU6XCJ1aW50MzJcIixkYXRhOm19XTt0LmFjdGl2YXRpb249PT1cIkNsaXBcIiYmUy5wdXNoKHt0eXBlOlwiZmxvYXQzMlwiLGRhdGE6dC5jbGlwTWF4fSx7dHlwZTpcImZsb2F0MzJcIixkYXRhOnQuY2xpcE1pbn0pLFMucHVzaCguLi5MKHgpLC4uLkwocyksLi4uTChvKSksJCYmUy5wdXNoKC4uLkwoZVsyXS5kaW1zKSksUy5wdXNoKC4uLkwoQykpO2xldCBFPU89PntsZXQgVT1xbihcImJhdGNoX2RpbXNcIixlWzBdLmRhdGFUeXBlLHgubGVuZ3RoKSxEPVcoXCJhXCIsZVswXS5kYXRhVHlwZSxzLmxlbmd0aCxnKSxWPVcoXCJiXCIsZVsxXS5kYXRhVHlwZSxvLmxlbmd0aCxsKSxZPUooXCJvdXRwdXRcIixlWzBdLmRhdGFUeXBlLEMubGVuZ3RoLGwpLHNlPVJ0KHQsWS50eXBlLnZhbHVlKSxCPVtELFZdLHRlPVwiXCI7aWYoJCl7bGV0IGRlPWk/bDoxO0IucHVzaChXKFwiYmlhc1wiLGVbMl0uZGF0YVR5cGUsZVsyXS5kaW1zLmxlbmd0aCxkZSkpLHRlPWAke2k/YHZhbHVlICs9IGJpYXNbY29sIC8gJHtkZX1dO2A6YHZhbHVlICs9ICR7WS50eXBlLnZhbHVlfShiaWFzW3JvdyArIGldKTtgfWB9bGV0IGtlPXMuc2xpY2UoMCwtMiksT2U9by5zbGljZSgwLC0yKSxlZT13cihrZSx4KSxiZT13cihPZSx4KSxVZT1be25hbWU6XCJvdXRwdXRfc2l6ZVwiLHR5cGU6XCJ1MzJcIn0se25hbWU6XCJNXCIsdHlwZTpcInUzMlwifSx7bmFtZTpcIk5cIix0eXBlOlwidTMyXCJ9LHtuYW1lOlwiS1wiLHR5cGU6XCJ1MzJcIn1dO3QuYWN0aXZhdGlvbj09PVwiQ2xpcFwiJiZVZS5wdXNoKHtuYW1lOlwiY2xpcF9tYXhcIix0eXBlOlwiZjMyXCJ9LHtuYW1lOlwiY2xpcF9taW5cIix0eXBlOlwiZjMyXCJ9KTtsZXQgcGU9KGRlLHZlKT0+e2xldCBXZT1kZS5yYW5rLEJlPWRlLm5hbWU7aWYoV2U9PT0yKXJldHVybmB2YXIgJHtCZX1faW5kaWNlcyA9ICR7ZGUudHlwZS5pbmRpY2VzfSgwdSwgMHUpO2A7bGV0IEdlPVUucmFuayxGPWB2YXIgJHtCZX1faW5kaWNlczogJHtkZS50eXBlLmluZGljZXN9O2A7Zm9yKGxldCBpZT1XZS0yLTEsaGU9R2UtMTtpZT49MDtpZS0tLGhlLS0pRis9YFxuJHtCZX1faW5kaWNlc1ske2llfV0gPSAke0dlPjE/YGJhdGNoX2luZGljZXNbJHtoZX1dYDpcImJhdGNoX2luZGljZXNcIn07YDtyZXR1cm4gdmUuZm9yRWFjaChpZT0+e0YrPWBcbiR7QmV9X2luZGljZXNbJHtpZX1dID0gMDtgfSksRis9YCR7QmV9X2luZGljZXNbJHtXZS0yfV0gPSAwdTtcbiAgICAgICAgICAgICAgICAgICAgICR7QmV9X2luZGljZXNbJHtXZS0xfV0gPSAwdTtgLEZ9LHllPSgpPT57bGV0IGRlPWB2YXIgYV9kYXRhOiAke0QudHlwZS52YWx1ZX07YDtmb3IobGV0IHZlPTA7dmU8Zzt2ZSsrKWRlKz1gXG4gICAgICAgICAgICAgIGxldCBiX2RhdGEke3ZlfSA9IGJbKGJfb2Zmc2V0ICsgKGsgKyAke3ZlfSkgKiB1bmlmb3Jtcy5OICsgY29sKSAvICR7bH1dO2A7Zm9yKGxldCB2ZT0wO3ZlPGI7dmUrKyl7ZGUrPWBhX2RhdGEgPSBhWyhhX29mZnNldCArIChyb3cgKyAke3ZlfSkgKiB1bmlmb3Jtcy5LICsgaykgLyAke2d9XTtgO2ZvcihsZXQgV2U9MDtXZTxnO1dlKyspZGUrPWBcbiAgICAgICAgICAgIHZhbHVlc1ske3ZlfV0gPSBmbWEoJHtWLnR5cGUudmFsdWV9KGFfZGF0YSR7Zz09PTE/XCJcIjpgWyR7V2V9XWB9KSwgYl9kYXRhJHtXZX0sIHZhbHVlc1ske3ZlfV0pO1xuYH1yZXR1cm4gZGV9O3JldHVybmBcbiAgJHtPLnJlZ2lzdGVyVW5pZm9ybXMoVWUpLnJlZ2lzdGVySW50ZXJuYWxWYXJpYWJsZXMoVSkuZGVjbGFyZVZhcmlhYmxlcyguLi5CLFkpfVxuICAke08ubWFpblN0YXJ0KCl9XG4gICAgJHtPLmd1YXJkQWdhaW5zdE91dE9mQm91bmRzV29ya2dyb3VwU2l6ZXMoXCJ1bmlmb3Jtcy5vdXRwdXRfc2l6ZVwiKX1cbiAgICBsZXQgY29sID0gKGdsb2JhbF9pZHggJSAodW5pZm9ybXMuTiAvICR7bH0pKSAqICR7bH07XG4gICAgdmFyIGluZGV4MSA9IGdsb2JhbF9pZHggLyAodW5pZm9ybXMuTiAvICR7bH0pO1xuICAgIGxldCBzdHJpZGUxID0gdW5pZm9ybXMuTSAvICR7Yn07XG4gICAgbGV0IHJvdyA9IChpbmRleDEgJSBzdHJpZGUxKSAqICR7Yn07XG4gICAgbGV0IGJhdGNoID0gaW5kZXgxIC8gc3RyaWRlMTtcblxuICAgICR7ci5sZW5ndGg9PT0yP1wiXCI6YGxldCBiYXRjaF9pbmRpY2VzID0gJHtVLm9mZnNldFRvSW5kaWNlcyhcImJhdGNoXCIpfTtgfVxuICAgICR7cGUoRCxlZSl9XG4gICAgbGV0IGFfb2Zmc2V0ID0gJHtELmluZGljZXNUb09mZnNldChcImFfaW5kaWNlc1wiKX07XG4gICAgJHtwZShWLGJlKX1cbiAgICBsZXQgYl9vZmZzZXQgPSAke1YuaW5kaWNlc1RvT2Zmc2V0KFwiYl9pbmRpY2VzXCIpfTtcbiAgICB2YXIgdmFsdWVzOiBhcnJheTwke1kudHlwZS52YWx1ZX0sICR7Yn0+O1xuICAgIGZvciAodmFyIGs6IHUzMiA9IDB1OyBrIDwgdW5pZm9ybXMuSzsgayA9IGsgKyAke2d9KSB7XG4gICAgICAke3llKCl9XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwdTsgaSA8ICR7Yn11OyBpKyspIHtcbiAgICAgIHZhciB2YWx1ZSA9IHZhbHVlc1tpXTtcbiAgICAgICR7dGV9XG4gICAgICAke3NlfVxuICAgICAgbGV0IGN1cl9pbmRpY2VzID0gJHtZLnR5cGUuaW5kaWNlc30oYmF0Y2gsIHJvdyArIGksIGNvbCk7XG4gICAgICBsZXQgb2Zmc2V0ID0gJHtZLmluZGljZXNUb09mZnNldChcImN1cl9pbmRpY2VzXCIpfTtcbiAgICAgICR7WS5zZXRCeU9mZnNldChgb2Zmc2V0IC8gJHtsfWAsXCJ2YWx1ZVwiKX07XG4gICAgfVxuICB9XG4gIGB9O3JldHVybntuYW1lOlwiTWF0TXVsTmFpdmVcIixzaGFkZXJDYWNoZTp7aGludDpgJHt0LmFjdGl2YXRpb259OyR7bH07JHtnfTske2J9OyR7aX1gLGlucHV0RGVwZW5kZW5jaWVzOiQ/W1wicmFua1wiLFwicmFua1wiLFwicmFua1wiXTpbXCJyYW5rXCIsXCJyYW5rXCJdfSxnZXRSdW5EYXRhOigpPT4oe291dHB1dHM6W3tkaW1zOnIsZGF0YVR5cGU6ZVswXS5kYXRhVHlwZX1dLGRpc3BhdGNoR3JvdXA6e3g6TWF0aC5jZWlsKHcvNjQpfSxwcm9ncmFtVW5pZm9ybXM6U30pLGdldFNoYWRlclNvdXJjZTpFfX0sZXA9ZT0+e2lmKCFlfHxlLmxlbmd0aCE9PTIpdGhyb3cgbmV3IEVycm9yKFwiTWF0TXVsIHJlcXVpcmVzIDIgaW5wdXRzLlwiKTtpZihlWzBdLmRpbXNbZVswXS5kaW1zLmxlbmd0aC0xXSE9PWVbMV0uZGltc1tlWzFdLmRpbXMubGVuZ3RoLTJdKXRocm93IG5ldyBFcnJvcihcInNoYXJlZCBkaW1lbnNpb24gZG9lcyBub3QgbWF0Y2guXCIpfSxUdT1lPT57ZXAoZS5pbnB1dHMpO2xldCB0PUF0LmNhbGNTaGFwZShlLmlucHV0c1swXS5kaW1zLGUuaW5wdXRzWzFdLmRpbXMsITApO2lmKCF0KXRocm93IG5ldyBFcnJvcihcIkNhbid0IHVzZSBtYXRtdWwgb24gdGhlIGdpdmVuIHRlbnNvcnNcIik7bGV0IHI9dFt0Lmxlbmd0aC0xXSxhPWUuaW5wdXRzWzBdLmRpbXNbZS5pbnB1dHNbMF0uZGltcy5sZW5ndGgtMV07cjw4JiZhPDg/ZS5jb21wdXRlKHJpKGUuaW5wdXRzLHthY3RpdmF0aW9uOlwiXCJ9LHQpKTplLmNvbXB1dGUocmEoZS5pbnB1dHMse2FjdGl2YXRpb246XCJcIn0sdCkpfX0pO3ZhciBlaSxFdSx0cCxPdSxhaSxycCxucCxpaSx0aT1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7Q2UoKTtJdSgpO0pyKCk7QXUoKTtqdCgpO25pKCk7JHIoKTtlaT0oZSx0LHIsYSxpLHMpPT57bGV0IG89ZVswXSxjPWUuc2xpY2Uocz8xOjIscz8zOjQpLHA9Yy5sZW5ndGgsbT10WzBdLGc9dC5zbGljZSgyKS5tYXAoKCQseCk9PiQrKCQtMSkqKHJbeF0tMSkpLHc9Yy5tYXAoKCQseCk9PiQrYVt4XSthW3grcF0pLm1hcCgoJCx4KT0+TWF0aC5mbG9vcigoJC1nW3hdK2lbeF0pL2lbeF0pKTtyZXR1cm4gdy5zcGxpY2UoMCwwLG8pLHcuc3BsaWNlKHM/MzoxLDAsbSksd30sRXU9WzIsMywxLDBdLHRwPShlLHQpPT57aWYoIWV8fGUubGVuZ3RoIT09MiYmZS5sZW5ndGghPT0zKXRocm93IG5ldyBFcnJvcihcIkNvbnYgcmVxdWlyZXMgMiBvciAzIGlucHV0c1wiKTtpZihlWzBdLmRpbXMubGVuZ3RoIT09NCYmZVswXS5kaW1zLmxlbmd0aCE9PTMpdGhyb3cgbmV3IEVycm9yKFwiY3VycmVudGx5IG9ubHkgc3VwcG9ydCBjb252IDFEIGFuZCAyRFwiKTtpZihlWzBdLmRpbXMubGVuZ3RoIT09ZVsxXS5kaW1zLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoXCJmaWx0ZXIgZG9lcyBub3QgaGF2ZSBzYW1lIGRpbWVuc2lvbiBhcyBpbnB1dFwiKTtsZXQgcj1lWzBdLmRpbXNbdC5mb3JtYXQ9PT1cIk5IV0NcIj9lWzBdLmRpbXMubGVuZ3RoLTE6MV0sYT1lWzFdLmRpbXNbMV0qdC5ncm91cDtpZihyIT09YSl0aHJvdyBuZXcgRXJyb3IoXCJGSUxURVJfSU5fQ0hBTk5FTCBzaG91bGQgYmUgZXF1YWwgdG8gREFUQV9DSEFOTkVMXCIpO2lmKGUubGVuZ3RoPT09MyYmKGVbMl0uZGltcy5sZW5ndGghPT0xfHxlWzFdLmRpbXNbMF0hPT1lWzJdLmRpbXNbMF0pKXRocm93IG5ldyBFcnJvcihcImludmFsaWQgYmlhc1wiKTtsZXQgaT1lWzBdLmRpbXMubGVuZ3RoLTI7aWYodC5kaWxhdGlvbnMubGVuZ3RoIT09aSl0aHJvdyBuZXcgRXJyb3IoYGRpbGF0aW9ucyBzaG91bGQgYmUgJHtpfURgKTtpZih0LnN0cmlkZXMubGVuZ3RoIT09aSl0aHJvdyBuZXcgRXJyb3IoYHN0cmlkZXMgc2hvdWxkIGJlICR7aX1EYCk7aWYodC5wYWRzLmxlbmd0aCE9PWkqMil0aHJvdyBuZXcgRXJyb3IoYHBhZHMgc2hvdWxkIGJlICR7aSoyfURgKTtpZih0Lmtlcm5lbFNoYXBlLmxlbmd0aCE9PTAmJnQua2VybmVsU2hhcGUubGVuZ3RoIT09ZVsxXS5kaW1zLmxlbmd0aC0yKXRocm93IG5ldyBFcnJvcihcImludmFsaWQga2VybmVsIHNoYXBlXCIpfSxPdT0oZSx0KT0+e2xldCByPWUua2VybmVsU2hhcGUuc2xpY2UoKTtmb3IobGV0IHM9MjtzPHRbMV0uZGltcy5sZW5ndGg7KytzKXJbcy0yXT09PTAmJihyW3MtMl09dFsxXS5kaW1zW3NdKTtsZXQgYT1lLnBhZHMuc2xpY2UoKTtvci5hZGp1c3RQYWRzQmFzZWRPbkF1dG9QYWQodFswXS5kaW1zLGUuc3RyaWRlcyxlLmRpbGF0aW9ucyxyLGEsZS5mb3JtYXQ9PT1cIk5IV0NcIixlLmF1dG9QYWQpO2xldCBpPU9iamVjdC5hc3NpZ24oe30sZSk7cmV0dXJuIE9iamVjdC5hc3NpZ24oaSx7a2VybmVsU2hhcGU6cixwYWRzOmF9KSxpfSxhaT1lPT57bGV0IHQ9UW4oZSkscj1lLmZvcm1hdCxhPVtcIk5PVFNFVFwiLFwiVkFMSURcIixcIlNBTUVfVVBQRVJcIixcIlNBTUVfTE9XRVJcIl1bZS5hdXRvX3BhZF0saT1lLmRpbGF0aW9ucyxzPWUuZ3JvdXAsbz1lLmtlcm5lbF9zaGFwZSxjPWUucGFkcyxwPWUuc3RyaWRlcyxtPWUud19pc19jb25zdCgpO3JldHVybnthdXRvUGFkOmEsZm9ybWF0OnIsZGlsYXRpb25zOmksZ3JvdXA6cyxrZXJuZWxTaGFwZTpvLHBhZHM6YyxzdHJpZGVzOnAsd0lzQ29uc3Q6bSwuLi50LGNhY2hlS2V5OmAke2UuZm9ybWF0fTske3QuYWN0aXZhdGlvbn07YH19LHJwPShlLHQscik9PntsZXQgYT1PdShyLHQpLGk9ci5mb3JtYXQ9PT1cIk5IV0NcIjtpZihyLmdyb3VwIT09MSl7ZS5jb21wdXRlKEphKHQsYSkpO3JldHVybn1sZXQgcz10Lmxlbmd0aD09PTMsbz10WzBdLmRpbXNbaT8xOjJdLGM9dFswXS5kaW1zW2k/MjozXSxwPXRbMF0uZGltc1tpPzM6MV0sbT10WzFdLmRpbXNbMl0sbD10WzFdLmRpbXNbM10sZz1laSh0WzBdLmRpbXMsdFsxXS5kaW1zLHIuZGlsYXRpb25zLGEucGFkcyxyLnN0cmlkZXMsaSksYj1nW2k/MToyXSx3PWdbaT8yOjNdLCQ9Z1tpPzM6MV0seD1pJiZtPT09byYmbD09PWMmJnIucGFkc1swXT09PTAmJnIucGFkc1sxXT09PTA7aWYoeHx8bT09PTEmJmw9PT0xJiZyLmRpbGF0aW9uc1swXT09PTEmJnIuZGlsYXRpb25zWzFdPT09MSYmci5zdHJpZGVzWzBdPT09MSYmci5zdHJpZGVzWzFdPT09MSYmci5wYWRzWzBdPT09MCYmci5wYWRzWzFdPT09MCl7bGV0IEQ9Z1swXSxWLFksc2UsQj1bXTtpZihpKXtsZXQgT2U9ZS5rZXJuZWxDdXN0b21EYXRhLndUPz9lLmNvbXB1dGUoeHQodFsxXSxFdSkse2lucHV0czpbMV0sb3V0cHV0czpbci53SXNDb25zdD8tMjotMV19KVswXTtpZihyLndJc0NvbnN0JiYhZS5rZXJuZWxDdXN0b21EYXRhLndUJiYoZS5rZXJuZWxDdXN0b21EYXRhLndUPU9lKSx4KXtsZXQgZWU9bypjKnA7Vj10WzBdLnJlc2hhcGUoWzEsRCxlZV0pLFk9T2UucmVzaGFwZShbMSxlZSwkXSksc2U9WzEsRCwkXX1lbHNlIFY9dFswXS5yZXNoYXBlKFtELG8qYyxwXSksWT1PZS5yZXNoYXBlKFsxLHAsJF0pLHNlPVtELGIqdywkXTtCLnB1c2goViksQi5wdXNoKFkpfWVsc2UgVj10WzBdLnJlc2hhcGUoW0QscCxvKmNdKSxZPXRbMV0ucmVzaGFwZShbMSwkLHBdKSxzZT1bRCwkLGIqd10sQi5wdXNoKFkpLEIucHVzaChWKTtzJiZCLnB1c2godFsyXSk7bGV0IHRlPXNlWzJdLGtlPUJbMF0uZGltc1tCWzBdLmRpbXMubGVuZ3RoLTFdO3RlPDgmJmtlPDg/ZS5jb21wdXRlKHJpKEIsYSxnLHNlLGkpLHtpbnB1dHM6Qn0pOmUuY29tcHV0ZShyYShCLGEsZyxzZSxpKSx7aW5wdXRzOkJ9KTtyZXR1cm59bGV0IFQ9ITAsQz1lLmtlcm5lbEN1c3RvbURhdGEud1Q/P2UuY29tcHV0ZSh4dCh0WzFdLEV1KSx7aW5wdXRzOlsxXSxvdXRwdXRzOltyLndJc0NvbnN0Py0yOi0xXX0pWzBdO3Iud0lzQ29uc3QmJiFlLmtlcm5lbEN1c3RvbURhdGEud1QmJihlLmtlcm5lbEN1c3RvbURhdGEud1Q9Qyk7bGV0IFM9W3RbMF0sQ107cyYmUy5wdXNoKHRbMl0pO2xldCBFPWk/Yip3OiQsTz1pPyQ6Yip3LFU9bSpsKnA7ZS5jb21wdXRlKEN1KFMsYSxnLEUsTyxVLHMsVCkse2lucHV0czpTfSl9LG5wPShlLHQpPT57bGV0IHI9dC5mb3JtYXQ9PT1cIk5IV0NcIixhPVtlLmlucHV0c1swXS5yZXNoYXBlKHI/W2UuaW5wdXRzWzBdLmRpbXNbMF0sMSxlLmlucHV0c1swXS5kaW1zWzFdLGUuaW5wdXRzWzBdLmRpbXNbMl1dOltlLmlucHV0c1swXS5kaW1zWzBdLGUuaW5wdXRzWzBdLmRpbXNbMV0sMSxlLmlucHV0c1swXS5kaW1zWzJdXSksZS5pbnB1dHNbMV0ucmVzaGFwZShbZS5pbnB1dHNbMV0uZGltc1swXSxlLmlucHV0c1sxXS5kaW1zWzFdLDEsZS5pbnB1dHNbMV0uZGltc1syXV0pXTtlLmlucHV0cy5sZW5ndGg9PT0zJiZhLnB1c2goZS5pbnB1dHNbMl0pO2xldCBpPVswLHQucGFkc1swXSwwLHQucGFkc1sxXV0scz1bMV0uY29uY2F0KHQuc3RyaWRlcyksbz1bMV0uY29uY2F0KHQuZGlsYXRpb25zKSxjPVsxXS5jb25jYXQodC5rZXJuZWxTaGFwZSkscD1PdSh7Li4udCxwYWRzOmksc3RyaWRlczpzLGRpbGF0aW9uczpvLGtlcm5lbFNoYXBlOmN9LGEpO2UuY29tcHV0ZShKYShhLHAsbT0+cj9bbVswXSxtWzJdLG1bM11dOltdKSl9LGlpPShlLHQpPT57dHAoZS5pbnB1dHMsdCksZS5pbnB1dHNbMF0uZGltcy5sZW5ndGg9PT0zP25wKGUsdCk6cnAoZSxlLmlucHV0cyx0KX19KTt2YXIgYXAsa3UsUHU9USgoKT0+e1widXNlIHN0cmljdFwiO3F0KCk7X2UoKTtqdCgpO2VhKCk7UWEoKTtKcigpO2FwPShlLHQ9ITEscixhPTQpPT57bGV0IGk9amUoYSxcImYzMlwiKSxzPUM9Pntzd2l0Y2goQyl7Y2FzZSAxOnJldHVyblwicmV0dXJuIHdbZ2V0SW5kZXhGcm9tQ29vcmRzNEQoY29vcmQsIHZlYzQ8aTMyPih1bmlmb3Jtcy53X3NoYXBlKSldO1wiO2Nhc2UgNDpyZXR1cm5gXG4gICAgICAgICAgICBsZXQgY29vcmQxID0gdmVjNDxpMzI+KGNvb3JkWCwgY29vcmRZLCBjb2wgKyAxLCByb3dJbm5lcik7XG4gICAgICAgICAgICBsZXQgY29vcmQyID0gdmVjNDxpMzI+KGNvb3JkWCwgY29vcmRZLCBjb2wgKyAyLCByb3dJbm5lcik7XG4gICAgICAgICAgICBsZXQgY29vcmQzID0gdmVjNDxpMzI+KGNvb3JkWCwgY29vcmRZLCBjb2wgKyAzLCByb3dJbm5lcik7XG4gICAgICAgICAgICBsZXQgdjAgPSB3W2dldEluZGV4RnJvbUNvb3JkczREKGNvb3JkLCB2ZWM0PGkzMj4odW5pZm9ybXMud19zaGFwZSkpXTtcbiAgICAgICAgICAgIGxldCB2MSA9IHdbZ2V0SW5kZXhGcm9tQ29vcmRzNEQoY29vcmQxLCB2ZWM0PGkzMj4odW5pZm9ybXMud19zaGFwZSkpXTtcbiAgICAgICAgICAgIGxldCB2MiA9IHdbZ2V0SW5kZXhGcm9tQ29vcmRzNEQoY29vcmQyLCB2ZWM0PGkzMj4odW5pZm9ybXMud19zaGFwZSkpXTtcbiAgICAgICAgICAgIGxldCB2MyA9IHdbZ2V0SW5kZXhGcm9tQ29vcmRzNEQoY29vcmQzLCB2ZWM0PGkzMj4odW5pZm9ybXMud19zaGFwZSkpXTtcbiAgICAgICAgICAgIHJldHVybiB2ZWM0PGYzMj4odjAsIHYxLCB2MiwgdjMpO1xuICAgICAgICAgICAgYDtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgaW5uZXJFbGVtZW50U2l6ZSAke0N9IGlzIG5vdCBzdXBwb3J0ZWQuYCl9fSxvPWU/YFxuICAgICAgbGV0IGNvb3JkID0gdmVjNDxpMzI+KGJhdGNoLCBpWFIsIGlYQywgeENoKTtcbiAgICAgIGA6YFxuICAgICAgbGV0IGNvb3JkID0gdmVjNDxpMzI+KGJhdGNoLCB4Q2gsIGlYUiwgaVhDKTtcbiAgICAgIGAsYz1lP2BcbiAgICBsZXQgY29vcmRzID0gdmVjNDxpMzI+KFxuICAgICAgYmF0Y2gsXG4gICAgICByb3cgLyBvdXRXaWR0aCxcbiAgICAgIHJvdyAlIG91dFdpZHRoLFxuICAgICAgY29sKTtcbiAgICBgOmBcbiAgICBsZXQgY29vcmRzID0gdmVjNDxpMzI+KFxuICAgICAgYmF0Y2gsXG4gICAgICByb3csXG4gICAgICBjb2wgLyBvdXRXaWR0aCxcbiAgICAgIGNvbCAlIG91dFdpZHRoKTtcbiAgICBgLHA9ZT9cImkzMih1bmlmb3Jtcy54X3NoYXBlWzFdKVwiOlwiaTMyKHVuaWZvcm1zLnhfc2hhcGVbMl0pXCIsbT1lP1wiaTMyKHVuaWZvcm1zLnhfc2hhcGVbMl0pXCI6XCJpMzIodW5pZm9ybXMueF9zaGFwZVszXSlcIixsPWU/XCJyb3dcIjpcImNvbFwiLGc9ZT9cImNvbFwiOlwicm93XCIsYj1gXG4gICAgICBsZXQgaW5DaGFubmVscyA9ICR7ZT9cImkzMih1bmlmb3Jtcy54X3NoYXBlWzNdKVwiOlwiaTMyKHVuaWZvcm1zLnhfc2hhcGVbMV0pXCJ9O1xuICAgICAgbGV0IG91dFdpZHRoID0gJHtlP1wiaTMyKHVuaWZvcm1zLnJlc3VsdF9zaGFwZVsyXSlcIjpcImkzMih1bmlmb3Jtcy5yZXN1bHRfc2hhcGVbM10pXCJ9O1xuICAgICAgbGV0IG91dFJvdyA9ICR7bH0gLyBvdXRXaWR0aDtcbiAgICAgIGxldCBvdXRDb2wgPSAke2x9ICUgb3V0V2lkdGg7XG5cbiAgICAgIGxldCBXUm93ID0gJHtnfSAvICh1bmlmb3Jtcy5maWx0ZXJfZGltc1sxXSAqIGluQ2hhbm5lbHMpO1xuICAgICAgbGV0IFdDb2wgPSAke2d9IC8gaW5DaGFubmVscyAlIHVuaWZvcm1zLmZpbHRlcl9kaW1zWzFdO1xuICAgICAgbGV0IHhSID0gZjMyKG91dFJvdyAtIHVuaWZvcm1zLnBhZHNbMF0gKyB1bmlmb3Jtcy5kaWxhdGlvbnNbMF0gKiBXUm93KSAvIGYzMih1bmlmb3Jtcy5zdHJpZGVzWzBdKTtcbiAgICAgIGxldCB4QyA9IGYzMihvdXRDb2wgLSB1bmlmb3Jtcy5wYWRzWzFdICsgdW5pZm9ybXMuZGlsYXRpb25zWzFdICogV0NvbCkgLyBmMzIodW5pZm9ybXMuc3RyaWRlc1sxXSk7XG4gICAgICBpZiAoeFIgPCAwLjAgfHwgeFIgPj0gZjMyKCR7cH0pIHx8IGZyYWN0KHhSKSA+IDAuMCkge1xuICAgICAgICByZXR1cm4gJHtpfSgwLjApO1xuICAgICAgfVxuICAgICAgaWYgKHhDIDwgMC4wIHx8IHhDID49IGYzMigke219KSB8fCBmcmFjdCh4QykgPiAwLjApIHtcbiAgICAgICAgcmV0dXJuICR7aX0oMC4wKTtcbiAgICAgIH1cbiAgICAgIGxldCBpWFIgPSBpMzIoeFIpO1xuICAgICAgbGV0IGlYQyA9IGkzMih4Qyk7XG4gICAgICBsZXQgeENoID0gJHtnfSAlIGluQ2hhbm5lbHM7XG4gICAgICAke299XG4gICAgICByZXR1cm4geFtnZXRJbmRleEZyb21Db29yZHM0RChjb29yZCwgdmVjNDxpMzI+KHVuaWZvcm1zLnhfc2hhcGUpKS8ke2F9XTtgLHc9ZT9gXG4gICAgICBsZXQgY29sID0gY29sSW4gKiAke2F9O1xuICAgICAgaWYgKHJvdyA8IHVuaWZvcm1zLmRpbV9hX291dGVyICYmIGNvbCA8IHVuaWZvcm1zLmRpbV9pbm5lcikge1xuICAgICAgICAke2J9XG4gICAgICB9XG4gICAgICByZXR1cm4gJHtpfSgwLjApO2A6YFxuICAgICAgbGV0IGNvbCA9IGNvbEluICogJHthfTtcbiAgICAgIGlmIChyb3cgPCB1bmlmb3Jtcy5kaW1faW5uZXIgJiYgY29sIDwgdW5pZm9ybXMuZGltX2Jfb3V0ZXIpIHtcbiAgICAgICAgJHtifVxuICAgICAgfVxuICAgICAgcmV0dXJuICR7aX0oMC4wKTtgLCQ9YFxuICAgICAgbGV0IGNvbCA9IGNvbEluICogJHthfTtcbiAgICAgIGxldCBpbkNoYW5uZWxzID0gJHtlP1wiaTMyKHVuaWZvcm1zLnhfc2hhcGVbM10pXCI6XCJpMzIodW5pZm9ybXMueF9zaGFwZVsxXSlcIn07XG4gICAgICBsZXQgY29vcmRYID0gdW5pZm9ybXMuZmlsdGVyX2RpbXNbMF0gLSAxIC0gcm93IC8gKHVuaWZvcm1zLmZpbHRlcl9kaW1zWzFdICogaW5DaGFubmVscyk7XG4gICAgICBsZXQgY29vcmRZID0gdW5pZm9ybXMuZmlsdGVyX2RpbXNbMV0gLSAxIC0gKHJvdyAvIGluQ2hhbm5lbHMpICUgdW5pZm9ybXMuZmlsdGVyX2RpbXNbMV07XG4gICAgICBpZiAoJHtlP1wicm93IDwgdW5pZm9ybXMuZGltX2lubmVyICYmIGNvbCA8IHVuaWZvcm1zLmRpbV9iX291dGVyXCI6XCJyb3cgPCB1bmlmb3Jtcy5kaW1faW5uZXIgJiYgY29sIDwgdW5pZm9ybXMuZGltX2Ffb3V0ZXJcIn0gICYmIGNvb3JkWCA+PSAwICYmIGNvb3JkWSA+PSAwKSB7XG4gICAgICAgIGxldCByb3dJbm5lciA9IHJvdyAlIGluQ2hhbm5lbHM7XG4gICAgICAgIGxldCBjb29yZCA9IHZlYzQ8aTMyPihjb29yZFgsIGNvb3JkWSwgY29sLCByb3dJbm5lcik7XG4gICAgICAgICR7cyhhKX1cbiAgICAgIH1cbiAgICAgIHJldHVybiAke2l9KDAuMCk7XG4gICAgICBgLHg9UnQocixpKTtyZXR1cm5gXG4gIGZuIG1tX3JlYWRBKGJhdGNoOiBpMzIsIHJvdyA6IGkzMiwgY29sSW4gOiBpMzIpIC0+ICR7aX0ge1xuICAgICR7ZT93OiR9XG4gIH1cblxuICBmbiBtbV9yZWFkQihiYXRjaDogaTMyLCByb3cgOiBpMzIsIGNvbEluIDogaTMyKSAtPiAke2l9IHtcbiAgICAke2U/JDp3fVxuICB9XG5cbiAgZm4gbW1fd3JpdGUoYmF0Y2g6IGkzMiwgcm93IDogaTMyLCBjb2xJbiA6IGkzMiwgdmFsdWVJbnB1dCA6ICR7aX0pIHtcbiAgICBsZXQgY29sID0gY29sSW4gKiAke2F9O1xuICAgIGlmIChyb3cgPCB1bmlmb3Jtcy5kaW1fYV9vdXRlciAmJiBjb2wgPCB1bmlmb3Jtcy5kaW1fYl9vdXRlcikge1xuICAgICAgdmFyIHZhbHVlID0gdmFsdWVJbnB1dDtcbiAgICAgIGxldCBvdXRXaWR0aCA9ICR7ZT9cImkzMih1bmlmb3Jtcy5yZXN1bHRfc2hhcGVbMl0pXCI6XCJpMzIodW5pZm9ybXMucmVzdWx0X3NoYXBlWzNdKVwifTtcbiAgICAgICR7Y31cbiAgICAgICR7Sm4odCl9XG4gICAgICAke3h9XG4gICAgICByZXN1bHRbZ2V0SW5kZXhGcm9tQ29vcmRzNEQoY29vcmRzLCB2ZWM0PGkzMj4odW5pZm9ybXMucmVzdWx0X3NoYXBlKSkvJHthfV0gPSB2YWx1ZTtcbiAgICB9XG4gIH1gfSxrdT0oZSx0LHIsYSxpLHMsbyxjKT0+e2xldCBwPXQuZm9ybWF0PT09XCJOSFdDXCIsbT1wP2VbMF0uZGltc1szXTplWzBdLmRpbXNbMV0sbD1yWzBdLGc9cD9yWzJdOnJbM10sYj1wP3JbMV06clsyXSx3PXA/clszXTpyWzFdLCQ9cD9tJTQ9PT0wJiZ3JTQ9PT0wOmclND09PTAmJnclND09PTAseD1wP3c6ZypiLFQ9cD9nKmI6dyxDPSQ/WzgsOCwxXTpbeDw9NHx8VDw9ND80OjE2LHg+NCYmVDw9ND80OjE2LDFdLFM9JD9bNCw0LDFdOlt4PD00PzE6NCx4PjQmJlQ8PTQ/MTo0LDFdLEU9W01hdGguY2VpbCh4L0NbMF0vU1swXSksTWF0aC5jZWlsKFQvQ1sxXS9TWzFdKSxNYXRoLmNlaWwobC9DWzJdL1NbMl0pXTtEZShcInZlcmJvc2VcIiwoKT0+YFtjb252X2JhY2twcm9wX21tX3dlYmdwdV0gZGlzcGF0Y2ggPSAke0V9YCk7bGV0IE89JD80OjEsVT1NYXRoLm1heChDWzBdKk8sQ1sxXSksRD0kPzQ6MSxWPVt0Lmtlcm5lbFNoYXBlW3A/MToyXSx0Lmtlcm5lbFNoYXBlW3A/MjozXV0sWT1bVlswXSsodC5kaWxhdGlvbnNbMF08PTE/MDooVlswXS0xKSoodC5kaWxhdGlvbnNbMF0tMSkpLFZbMV0rKHQuZGlsYXRpb25zWzFdPD0xPzA6KFZbMV0tMSkqKHQuZGlsYXRpb25zWzFdLTEpKV0sc2U9W1lbMF0tMS1NYXRoLmZsb29yKCh0LnBhZHNbMF0rdC5wYWRzWzJdKS8yKSxZWzFdLTEtTWF0aC5mbG9vcigodC5wYWRzWzFdK3QucGFkc1szXSkvMildLEI9W3t0eXBlOlwiaW50MzJcIixkYXRhOmF9LHt0eXBlOlwiaW50MzJcIixkYXRhOml9LHt0eXBlOlwiaW50MzJcIixkYXRhOnN9LHt0eXBlOlwiaW50MzJcIixkYXRhOnQuc3RyaWRlc30se3R5cGU6XCJpbnQzMlwiLGRhdGE6dC5kaWxhdGlvbnN9LHt0eXBlOlwiaW50MzJcIixkYXRhOlZ9LHt0eXBlOlwiaW50MzJcIixkYXRhOnNlfV07dC5hY3RpdmF0aW9uPT09XCJDbGlwXCImJkIucHVzaCh7dHlwZTpcImZsb2F0MzJcIixkYXRhOnQuY2xpcE1heH0se3R5cGU6XCJmbG9hdDMyXCIsZGF0YTp0LmNsaXBNaW59KSxCLnB1c2goLi4uTChlWzBdLmRpbXMpLC4uLkwoZVsxXS5kaW1zKSk7bGV0IHRlPVtcInJhbmtcIixcInJhbmtcIl07byYmKEIucHVzaCguLi5MKGVbMl0uZGltcykpLHRlLnB1c2goXCJyYW5rXCIpKSxCLnB1c2goLi4uTChyKSk7bGV0IGtlPU9lPT57bGV0IGVlPVcoXCJ4XCIsZVswXS5kYXRhVHlwZSxlWzBdLmRpbXMubGVuZ3RoLEQpLGJlPVcoXCJ3XCIsZVsxXS5kYXRhVHlwZSxlWzFdLmRpbXMubGVuZ3RoLDEpLFVlPUooXCJyZXN1bHRcIixlWzBdLmRhdGFUeXBlLHIubGVuZ3RoLEQpLHBlPVtlZSxiZV0seWU9XCJcIjtpZihvKXtsZXQgdmU9VyhcImJpYXNcIixlWzJdLmRhdGFUeXBlLGVbMl0uZGltcy5sZW5ndGgsRCk7cGUucHVzaCh2ZSkseWUrPWBcbiAgICAgICAgICBmbiBnZXRCaWFzQnlPdXRwdXRDb29yZHMoY29vcmRzIDogdmVjNDxpMzI+KSAtPiAkeyQ/XCJ2ZWM0PGYzMj5cIjpcImYzMlwifSB7XG4gICAgICAgICAgICByZXR1cm4gYmlhc1tjb29yZHMuJHtwP1wid1wiOlwieVwifSR7JD9cIi8gNFwiOlwiXCJ9XTtcbiAgICAgICAgICB9YH1sZXQgZGU9W3tuYW1lOlwiZGltX2Ffb3V0ZXJcIix0eXBlOlwiaTMyXCJ9LHtuYW1lOlwiZGltX2Jfb3V0ZXJcIix0eXBlOlwiaTMyXCJ9LHtuYW1lOlwiZGltX2lubmVyXCIsdHlwZTpcImkzMlwifSx7bmFtZTpcInN0cmlkZXNcIix0eXBlOlwiaTMyXCIsbGVuZ3RoOjJ9LHtuYW1lOlwiZGlsYXRpb25zXCIsdHlwZTpcImkzMlwiLGxlbmd0aDoyfSx7bmFtZTpcImZpbHRlcl9kaW1zXCIsdHlwZTpcImkzMlwiLGxlbmd0aDpWLmxlbmd0aH0se25hbWU6XCJwYWRzXCIsdHlwZTpcImkzMlwiLGxlbmd0aDpzZS5sZW5ndGh9XTtyZXR1cm4gdC5hY3RpdmF0aW9uPT09XCJDbGlwXCImJmRlLnB1c2goe25hbWU6XCJjbGlwX21heFwiLHR5cGU6XCJmMzJcIn0se25hbWU6XCJjbGlwX21pblwiLHR5cGU6XCJmMzJcIn0pLGBcbiAgICAgICAgJHt0YShcInVuaWZvcm1zLnJlc3VsdF9zdHJpZGVzXCIpfVxuICAgICAgICAke09lLnJlZ2lzdGVyVW5pZm9ybXMoZGUpLmRlY2xhcmVWYXJpYWJsZXMoLi4ucGUsVWUpfTtcbiAgICAgICAgJHt5ZX1cbiAgICAgICAgJHthcChwLG8sdCxPKX1cbiAgICAgICAgJHskP1hyKFMsQyxcImYzMlwiLHZvaWQgMCwhcCxVKTpRcihTLEMsXCJmMzJcIix2b2lkIDAsIXAsVSwhMSx2b2lkIDAsYyl9YH07cmV0dXJue25hbWU6XCJDb252MkRUcmFuc3Bvc2VNYXRNdWxcIixzaGFkZXJDYWNoZTp7aGludDpgJHt0LmNhY2hlS2V5fTske1N9OyR7Q307JHskfWAsaW5wdXREZXBlbmRlbmNpZXM6dGV9LGdldFJ1bkRhdGE6KCk9Pih7b3V0cHV0czpbe2RpbXM6cixkYXRhVHlwZTplWzBdLmRhdGFUeXBlfV0sZGlzcGF0Y2hHcm91cDp7eDpFWzBdLHk6RVsxXSx6OkVbMl19LHByb2dyYW1Vbmlmb3JtczpCfSksZ2V0U2hhZGVyU291cmNlOmtlfX19KTt2YXIgaXAsb2ksUnU9USgoKT0+e1widXNlIHN0cmljdFwiO3F0KCk7Q2UoKTtfZSgpO2lwPShlLHQscixhLGkscz0hMSxvLGMscD0hMSk9PntsZXQgbT1wPzE6MixsPXA/MjozLGc9cD8zOjEsYj1zPzI6MSx3PWBcbiAgZm4gc2V0T3V0cHV0QXRJbmRleChmbGF0SW5kZXggOiB1MzIsIHZhbHVlIDogJHtzP2B2ZWM0PCR7b30+YDpvfSkge1xuICAgIHJlc3VsdFtmbGF0SW5kZXhdID0gJHtzP2B2ZWM0PCR7b30+YDpvfSh2YWx1ZSk7XG4gIH1gO2EmJih3Kz1gXG4gICAgZm4gZ2V0Qmlhc0J5T3V0cHV0Q29vcmRzKGNvb3JkcyA6IHZlYzQ8dTMyPikgLT4gJHtzP2B2ZWM0PCR7b30+YDpvfSB7XG4gICAgICByZXR1cm4gYmlhc1tjb29yZHMuJHtwP1wid1wiOlwieVwifSR7cz9cIi8gNFwiOlwiXCJ9XTtcbiAgICB9YCk7bGV0ICQ9cz80OjEseD1XKFwiV1wiLHRbMV0uZGF0YVR5cGUsdFsxXS5kaW1zLmxlbmd0aCwkKSxUPVcoXCJEeVwiLHRbMF0uZGF0YVR5cGUsdFswXS5kaW1zLmxlbmd0aCwkKSxDPVtULHhdO2EmJkMucHVzaChXKFwiYmlhc1wiLHRbMl0uZGF0YVR5cGUsW3JbZ11dLmxlbmd0aCwkKSk7bGV0IFM9SihcInJlc3VsdFwiLHRbMF0uZGF0YVR5cGUsci5sZW5ndGgsJCksRT1ge1xuICAgICAgICBsZXQgYmF0Y2g6IHUzMiA9ICR7aT9cImdsb2JhbF9pZC56XCI6XCJ3b3JrZ3JvdXBfaWQuelwifSAvIHVuaWZvcm1zLnJlc3VsdF9zaGFwZVsxXTtcbiAgICAgICAgbGV0IHIgPSAke2k/XCJnbG9iYWxfaWQuelwiOlwid29ya2dyb3VwX2lkLnpcIn0gJSB1bmlmb3Jtcy5yZXN1bHRfc2hhcGVbMV07XG4gICAgICAgIGxldCBjID0gJHtpP1wiZ2xvYmFsX2lkLnlcIjpcIndvcmtncm91cF9pZC55XCJ9ICogJHtifTtcbiAgICAgICAgbGV0IGQxOiB1MzIgPSAke2k/XCJnbG9iYWxfaWQueFwiOlwid29ya2dyb3VwX2lkLnhcIn0gKiA0O1xuXG4gICAgICAgIGxldCBkeUNvcm5lciA9IHZlYzI8aTMyPihpMzIociksIGkzMihjKSkgLSB2ZWMyPGkzMj4odW5pZm9ybXMucGFkcyk7XG5cbiAgICAgICAgLy8gQ29udm9sdmUgZHkoPywgPywgZDIpIHdpdGggdyg6LCA6LCBkMSwgZDIpIHRvIGNvbXB1dGUgZHgoeFIsIHhDLCBkMSkuXG4gICAgICAgIC8vID8gPSB0byBiZSBkZXRlcm1pbmVkLiA6ID0gYWNyb3NzIGFsbCB2YWx1ZXMgaW4gdGhhdCBheGlzLlxuICAgICAgICB2YXIgZG90UHJvZDogYXJyYXk8dmVjNDwke299PiwgJHtifT47XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgJHtifTsgaSsrKSB7XG4gICAgICAgICAgZG90UHJvZFtpXSA9IHZlYzQ8JHtvfT4oMC4wKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKHZhciB3UjogdTMyID0gMDsgd1IgPCB1bmlmb3Jtcy5maWx0ZXJfZGltc1swXTsgd1IgPSB3UiArIDEpIHtcbiAgICAgICAgICB2YXIgZHlSID0gKCR7b30oZHlDb3JuZXIueCkgKyAke299KHdSKSkgLyAke299KHVuaWZvcm1zLnN0cmlkZXMueCk7XG4gICAgICAgICAgbGV0IHdSUGVybSA9IHVuaWZvcm1zLmZpbHRlcl9kaW1zWzBdIC0gMSAtIHdSO1xuICAgICAgICAgIGlmIChkeVIgPCAwLjAgfHwgZHlSID49ICR7b30odW5pZm9ybXMuRHlfc2hhcGVbMV0pIHx8XG4gICAgICAgICAgICAgIGZyYWN0KGR5UikgPiAwLjAgfHwgd1JQZXJtIDwgMCkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxldCBpZHlSOiB1MzIgPSB1MzIoZHlSKTtcblxuICAgICAgICAgIGZvciAodmFyIHdDOiB1MzIgPSAwOyB3QyA8IHVuaWZvcm1zLmZpbHRlcl9kaW1zWzFdOyB3QyA9IHdDICsgMSkge1xuICAgICAgICAgICAgbGV0IGR5QyA9ICgke299KGR5Q29ybmVyLnkpICsgJHtvfSh3QykpIC8gJHtvfSh1bmlmb3Jtcy5zdHJpZGVzLnkpO1xuICAgICAgICAgICAgbGV0IGR5QzIgPSAoJHtvfShkeUNvcm5lci55KSArIDEuMCArICR7b30od0MpKSAvICR7b30odW5pZm9ybXMuc3RyaWRlcy55KTtcbiAgICAgICAgICAgIGxldCB3Q1Blcm0gPSB1bmlmb3Jtcy5maWx0ZXJfZGltc1sxXSAtIDEgLSB3QztcbiAgICAgICAgICAgIGlmICh3Q1Blcm0gPCAwKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGJEeUNWYWwgPSB0cnVlO1xuICAgICAgICAgICAgdmFyIGJEeUNWYWwyID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmIChkeUMgPCAwLjAgfHwgZHlDID49ICR7b30odW5pZm9ybXMuRHlfc2hhcGVbMl0pIHx8XG4gICAgICAgICAgICAgICAgZnJhY3QoZHlDKSA+IDAuMCkge1xuICAgICAgICAgICAgICBiRHlDVmFsID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZHlDMiA8IDAuMCB8fCBkeUMyID49ICR7b30odW5pZm9ybXMuRHlfc2hhcGVbMl0pIHx8XG4gICAgICAgICAgICAgICAgZnJhY3QoZHlDMikgPiAwLjApIHtcbiAgICAgICAgICAgICAgYkR5Q1ZhbDIgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGlkeUM6IHUzMiA9IHUzMihkeUMpO1xuICAgICAgICAgICAgbGV0IGlkeUMyOiB1MzIgPSB1MzIoZHlDMik7XG4gICAgICAgICAgICBpZiAoYkR5Q1ZhbCAmJiBiRHlDVmFsMikge1xuICAgICAgICAgICAgICBsZXQgZDJMZW5ndGggPSB1bmlmb3Jtcy5EeV9zaGFwZVszXTtcbiAgICAgICAgICAgICAgZm9yICh2YXIgZDIgOnUzMiA9IDA7IGQyIDwgZDJMZW5ndGg7IGQyID0gZDIgKyA0KSB7XG4gICAgICAgICAgICAgICAgbGV0IHdWYWx1ZTAgPSAke3guZ2V0KFwidTMyKHdSUGVybSlcIixcInUzMih3Q1Blcm0pXCIsXCJkMVwiLFwiZDJcIil9O1xuICAgICAgICAgICAgICAgIGxldCB3VmFsdWUxID0gJHt4LmdldChcInUzMih3UlBlcm0pXCIsXCJ1MzIod0NQZXJtKVwiLFwiZDEgKyAxXCIsXCJkMlwiKX07XG4gICAgICAgICAgICAgICAgbGV0IHdWYWx1ZTIgPSAke3guZ2V0KFwidTMyKHdSUGVybSlcIixcInUzMih3Q1Blcm0pXCIsXCJkMSArIDJcIixcImQyXCIpfTtcbiAgICAgICAgICAgICAgICBsZXQgd1ZhbHVlMyA9ICR7eC5nZXQoXCJ1MzIod1JQZXJtKVwiLFwidTMyKHdDUGVybSlcIixcImQxICsgM1wiLFwiZDJcIil9O1xuXG4gICAgICAgICAgICAgICAgdmFyIHhWYWx1ZSA9ICR7VC5nZXQoXCJiYXRjaFwiLFwiaWR5UlwiLFwiaWR5Q1wiLFwiZDJcIil9O1xuICAgICAgICAgICAgICAgIGxldCB0bXB2YWwgPSB2ZWM0PCR7b30+KGRvdCh4VmFsdWUsIHdWYWx1ZTApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3QoeFZhbHVlLCB3VmFsdWUxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90KHhWYWx1ZSwgd1ZhbHVlMiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdCh4VmFsdWUsIHdWYWx1ZTMpKTtcbiAgICAgICAgICAgICAgICBkb3RQcm9kWzBdID0gZG90UHJvZFswXSArIHRtcHZhbDtcblxuICAgICAgICAgICAgICAgIHhWYWx1ZSA9ICAke1QuZ2V0KFwiYmF0Y2hcIixcImlkeVJcIixcImlkeUMyXCIsXCJkMlwiKX07XG5cbiAgICAgICAgICAgICAgICBkb3RQcm9kWzFdID0gZG90UHJvZFsxXSArIHZlYzQ8JHtvfT4oZG90KHhWYWx1ZSwgd1ZhbHVlMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90KHhWYWx1ZSwgd1ZhbHVlMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90KHhWYWx1ZSwgd1ZhbHVlMiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90KHhWYWx1ZSwgd1ZhbHVlMykpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGJEeUNWYWwpIHtcbiAgICAgICAgICAgICAgbGV0IGQyTGVuZ3RoID0gdW5pZm9ybXMuRHlfc2hhcGVbJHtnfV07XG4gICAgICAgICAgICAgIGZvciAodmFyIGQyOiB1MzIgPSAwOyBkMiA8IGQyTGVuZ3RoOyBkMiA9IGQyICsgNCkge1xuICAgICAgICAgICAgICAgIGxldCB3VmFsdWUwID0gJHt4LmdldChcInUzMih3UlBlcm0pXCIsXCJ1MzIod0NQZXJtKVwiLFwiZDFcIixcImQyXCIpfTtcbiAgICAgICAgICAgICAgICBsZXQgd1ZhbHVlMSA9ICR7eC5nZXQoXCJ1MzIod1JQZXJtKVwiLFwidTMyKHdDUGVybSlcIixcImQxICsgMVwiLFwiZDJcIil9O1xuICAgICAgICAgICAgICAgIGxldCB3VmFsdWUyID0gJHt4LmdldChcInUzMih3UlBlcm0pXCIsXCJ1MzIod0NQZXJtKVwiLFwiZDEgKyAyXCIsXCJkMlwiKX07XG4gICAgICAgICAgICAgICAgbGV0IHdWYWx1ZTMgPSAke3guZ2V0KFwidTMyKHdSUGVybSlcIixcInUzMih3Q1Blcm0pXCIsXCJkMSArIDNcIixcImQyXCIpfTtcblxuICAgICAgICAgICAgICAgIHZhciB4VmFsdWUgPSAke1QuZ2V0KFwiYmF0Y2hcIixcImlkeVJcIixcImlkeUNcIixcImQyXCIpfTtcbiAgICAgICAgICAgICAgICBsZXQgdG1wdmFsID0gdmVjNDwke299Pihkb3QoeFZhbHVlLCB3VmFsdWUwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90KHhWYWx1ZSwgd1ZhbHVlMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdCh4VmFsdWUsIHdWYWx1ZTIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3QoeFZhbHVlLCB3VmFsdWUzKSk7XG4gICAgICAgICAgICAgICAgZG90UHJvZFswXSA9IGRvdFByb2RbMF0gKyB0bXB2YWw7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYkR5Q1ZhbDIpIHtcbiAgICAgICAgICAgICAgbGV0IGQyTGVuZ3RoID0gdW5pZm9ybXMuRHlfc2hhcGVbM107XG4gICAgICAgICAgICAgIGZvciAodmFyIGQyOiB1MzIgPSAwOyBkMiA8IGQyTGVuZ3RoOyBkMiA9IGQyICsgNCkge1xuICAgICAgICAgICAgICAgIGxldCB3VmFsdWUwID0gJHt4LmdldChcInUzMih3UlBlcm0pXCIsXCJ1MzIod0NQZXJtKVwiLFwiZDFcIixcImQyXCIpfTtcbiAgICAgICAgICAgICAgICBsZXQgd1ZhbHVlMSA9ICR7eC5nZXQoXCJ1MzIod1JQZXJtKVwiLFwidTMyKHdDUGVybSlcIixcImQxICsgMVwiLFwiZDJcIil9O1xuICAgICAgICAgICAgICAgIGxldCB3VmFsdWUyID0gJHt4LmdldChcInUzMih3UlBlcm0pXCIsXCJ1MzIod0NQZXJtKVwiLFwiZDEgKyAyXCIsXCJkMlwiKX07XG4gICAgICAgICAgICAgICAgbGV0IHdWYWx1ZTMgPSAke3guZ2V0KFwidTMyKHdSUGVybSlcIixcInUzMih3Q1Blcm0pXCIsXCJkMSArIDNcIixcImQyXCIpfTtcblxuICAgICAgICAgICAgICAgIHZhciB4VmFsdWUgPSAke1QuZ2V0KFwiYmF0Y2hcIixcImlkeVJcIixcImlkeUMyXCIsXCJkMlwiKX07XG4gICAgICAgICAgICAgICAgbGV0IHRtcHZhbCA9IHZlYzQ8JHtvfT4oZG90KHhWYWx1ZSwgd1ZhbHVlMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdCh4VmFsdWUsIHdWYWx1ZTEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3QoeFZhbHVlLCB3VmFsdWUyKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90KHhWYWx1ZSwgd1ZhbHVlMykpO1xuICAgICAgICAgICAgICAgIGRvdFByb2RbMV0gPSBkb3RQcm9kWzFdICsgdG1wdmFsO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yICh2YXIgaTogdTMyID0gMDsgaSA8ICR7Yn07IGkgPSBpICsgMSkge1xuICAgICAgICAgIGxldCB2YWx1ZSA9IGRvdFByb2RbaV0gKyAke2E/XCJiaWFzW2MraV1cIjpgdmVjNDwke299PigwLjApYH07XG4gICAgICAgICAgJHtTLnNldChcImJhdGNoXCIsXCJyXCIsXCJjICsgaVwiLFwiZDFcIixcInZhbHVlXCIpfTtcbiAgICAgICAgfVxuICAgICAgfWAsTz1gXG4gICAgICAgICAgbGV0IG91dHB1dEluZGljZXMgPSAke1Mub2Zmc2V0VG9JbmRpY2VzKFwiZ2xvYmFsX2lkeFwiKX07XG4gICAgICAgICAgbGV0IGJhdGNoID0gJHtTLmluZGljZXNHZXQoXCJvdXRwdXRJbmRpY2VzXCIsMCl9O1xuICAgICAgICAgIGxldCBkMSA9ICR7Uy5pbmRpY2VzR2V0KFwib3V0cHV0SW5kaWNlc1wiLGcpfTtcbiAgICAgICAgICBsZXQgciA9ICR7Uy5pbmRpY2VzR2V0KFwib3V0cHV0SW5kaWNlc1wiLG0pfTtcbiAgICAgICAgICBsZXQgYyA9ICR7Uy5pbmRpY2VzR2V0KFwib3V0cHV0SW5kaWNlc1wiLGwpfTtcbiAgICAgICAgICBsZXQgZHlDb3JuZXIgPSB2ZWMyPGkzMj4oaTMyKHIpLCBpMzIoYykpIC0gdW5pZm9ybXMucGFkcztcbiAgICAgICAgICBsZXQgZHlSQ29ybmVyID0gZHlDb3JuZXIueDtcbiAgICAgICAgICBsZXQgZHlDQ29ybmVyID0gZHlDb3JuZXIueTtcbiAgICAgICAgICBsZXQgZ3JvdXBJZCA9IGQxIC8gdW5pZm9ybXMub3V0cHV0X2NoYW5uZWxzX3Blcl9ncm91cDtcbiAgICAgICAgICBsZXQgd091dENoYW5uZWwgPSBkMSAtIGdyb3VwSWQgKiB1bmlmb3Jtcy5vdXRwdXRfY2hhbm5lbHNfcGVyX2dyb3VwO1xuICAgICAgICAgIC8vIENvbnZvbHZlIGR5KD8sID8sIGQyKSB3aXRoIHcoOiwgOiwgZDEsIGQyKSB0byBjb21wdXRlIGR4KHhSLCB4QywgZDEpLlxuICAgICAgICAgIC8vID8gPSB0byBiZSBkZXRlcm1pbmVkLiA6ID0gYWNyb3NzIGFsbCB2YWx1ZXMgaW4gdGhhdCBheGlzLlxuICAgICAgICAgIHZhciBkb3RQcm9kID0gJHtvfSgwLjApO1xuICAgICAgICAgIGZvciAodmFyIHdSOiB1MzIgPSAwOyB3UiA8IHVuaWZvcm1zLmVmZmVjdGl2ZV9maWx0ZXJfZGltcy54OyB3UiA9IHdSICsgMSkge1xuICAgICAgICAgICAgaWYgKHdSICUgdW5pZm9ybXMuZGlsYXRpb25zLnggIT0gMCkge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBkeVIgPSAoJHtvfShkeVJDb3JuZXIpICsgJHtvfSh3UikpIC8gJHtvfSh1bmlmb3Jtcy5zdHJpZGVzWzBdKTtcbiAgICAgICAgICAgIGxldCB3UlBlcm0gPSB1bmlmb3Jtcy5maWx0ZXJfZGltcy54IC0gMSAtIHdSIC8gdW5pZm9ybXMuZGlsYXRpb25zLng7XG4gICAgICAgICAgICBpZiAoZHlSIDwgMC4wIHx8IGR5UiA+PSAke299KHVuaWZvcm1zLkR5X3NoYXBlWyR7bX1dKSB8fCBmcmFjdChkeVIpID4gMC4wIHx8XG4gICAgICAgICAgICAgICAgd1JQZXJtIDwgMCkge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBpZHlSOiB1MzIgPSB1MzIoZHlSKTtcblxuICAgICAgICAgICAgZm9yICh2YXIgd0M6IHUzMiA9IDA7IHdDIDwgdW5pZm9ybXMuZWZmZWN0aXZlX2ZpbHRlcl9kaW1zLnk7IHdDID0gd0MgKyAxKSB7XG4gICAgICAgICAgICAgIGlmICh3QyAlIHVuaWZvcm1zLmRpbGF0aW9ucy55ICE9IDApIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBsZXQgZHlDID0gKCR7b30oZHlDQ29ybmVyKSArICR7b30od0MpKSAvICR7b30odW5pZm9ybXMuc3RyaWRlcy55KTtcbiAgICAgICAgICAgICAgbGV0IHdDUGVybSA9IHVuaWZvcm1zLmZpbHRlcl9kaW1zLnkgLSAxIC0gd0MgLyB1bmlmb3Jtcy5kaWxhdGlvbnMueTtcbiAgICAgICAgICAgICAgaWYgKGR5QyA8IDAuMCB8fCBkeUMgPj0gJHtvfSh1bmlmb3Jtcy5EeV9zaGFwZVske2x9XSkgfHxcbiAgICAgICAgICAgICAgICAgIGZyYWN0KGR5QykgPiAwLjAgfHwgd0NQZXJtIDwgMCkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGxldCBpZHlDOiB1MzIgPSB1MzIoZHlDKTtcbiAgICAgICAgICAgICAgdmFyIGlucHV0Q2hhbm5lbCA9IGdyb3VwSWQgKiB1bmlmb3Jtcy5pbnB1dF9jaGFubmVsc19wZXJfZ3JvdXA7XG4gICAgICAgICAgICAgIGZvciAodmFyIGQyOiB1MzIgPSAwOyBkMiA8IHVuaWZvcm1zLmlucHV0X2NoYW5uZWxzX3Blcl9ncm91cDsgZDIgPSBkMiArIDEpIHtcbiAgICAgICAgICAgICAgICBsZXQgeFZhbHVlID0gJHtwP1QuZ2V0KFwiYmF0Y2hcIixcImlkeVJcIixcImlkeUNcIixcImlucHV0Q2hhbm5lbFwiKTpULmdldChcImJhdGNoXCIsXCJpbnB1dENoYW5uZWxcIixcImlkeVJcIixcImlkeUNcIil9O1xuICAgICAgICAgICAgICAgIGxldCB3VmFsdWUgPSAke3guZ2V0KFwiaW5wdXRDaGFubmVsXCIsXCJ3T3V0Q2hhbm5lbFwiLFwidTMyKHdSUGVybSlcIixcInUzMih3Q1Blcm0pXCIpfTtcbiAgICAgICAgICAgICAgICBkb3RQcm9kID0gZG90UHJvZCArIHhWYWx1ZSAqIHdWYWx1ZTtcbiAgICAgICAgICAgICAgICBpbnB1dENoYW5uZWwgPSBpbnB1dENoYW5uZWwgKyAxO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGxldCB2YWx1ZSA9IGRvdFByb2QgKyAke2E/XCJiaWFzW2QxXVwiOmAke299KDAuMClgfTtcbiAgICAgICAgICAke1Muc2V0QnlPZmZzZXQoXCJnbG9iYWxfaWR4XCIsXCJ2YWx1ZVwiKX07XG4gICAgICAgIGA7cmV0dXJuYFxuICAke2UucmVnaXN0ZXJVbmlmb3JtcyhjKS5kZWNsYXJlVmFyaWFibGVzKC4uLkMsUyl9XG4gICR7d31cblxuICAgICR7ZS5tYWluU3RhcnQoKX1cbiAgICAke2UuZ3VhcmRBZ2FpbnN0T3V0T2ZCb3VuZHNXb3JrZ3JvdXBTaXplcyhcInVuaWZvcm1zLm91dHB1dF9zaXplXCIpfTtcbiAgJHtzP0U6T319YH0sb2k9KGUsdCxyKT0+e2xldCBhPWUubGVuZ3RoPjIsaT10Lm91dHB1dFNoYXBlLHM9Ti5zaXplKGkpLG89W01hdGguY2VpbChzLzY0KSwxLDFdO0RlKFwidmVyYm9zZVwiLCgpPT5gW2NvbnYyZF9iYWNrcHJvcF93ZWJncHVdIGRpc3BhdGNoID0gJHtvfWApO2xldCBjPXQuZm9ybWF0PT09XCJOSFdDXCIscD1bXCJyYW5rXCIsXCJyYW5rXCJdLG09W3Quc3RyaWRlc1swXSx0LnN0cmlkZXNbMV1dLGw9W3Qua2VybmVsU2hhcGVbYz8xOjJdLHQua2VybmVsU2hhcGVbYz8yOjNdXSxnPVt0LmRpbGF0aW9uc1swXSx0LmRpbGF0aW9uc1sxXV0sYj1bbFswXSsodC5kaWxhdGlvbnNbMF08PTE/MDoodC5rZXJuZWxTaGFwZVtjPzE6Ml0tMSkqKHQuZGlsYXRpb25zWzBdLTEpKSxsWzFdKyh0LmRpbGF0aW9uc1sxXTw9MT8wOih0Lmtlcm5lbFNoYXBlW2M/MjozXS0xKSoodC5kaWxhdGlvbnNbMV0tMSkpXSx3PVtiWzBdLTEtTWF0aC5mbG9vcigodC5wYWRzWzBdK3QucGFkc1syXSkvMiksYlsxXS0xLU1hdGguZmxvb3IodC5wYWRzWzFdK3QucGFkc1szXSkvMl0sJD0hMSx4PXQuZ3JvdXAsVD1lWzFdLmRpbXMsQz1UWzBdL3gsUz1UWzFdLEU9W3t0eXBlOlwiaW50MzJcIixkYXRhOnN9LHt0eXBlOlwidWludDMyXCIsZGF0YTptfSx7dHlwZTpcInVpbnQzMlwiLGRhdGE6bH0se3R5cGU6XCJ1aW50MzJcIixkYXRhOmd9LHt0eXBlOlwidWludDMyXCIsZGF0YTpifSx7dHlwZTpcImludDMyXCIsZGF0YTp3fSx7dHlwZTpcInVpbnQzMlwiLGRhdGE6Q30se3R5cGU6XCJ1aW50MzJcIixkYXRhOlN9LC4uLkwoZVswXS5kaW1zKSwuLi5MKGVbMV0uZGltcyldO2EmJihFLnB1c2goLi4uTChlWzJdLmRpbXMpKSxwLnB1c2goXCJyYW5rXCIpKSxFLnB1c2goLi4uTChpKSk7bGV0IE89b1sxXT09PTEmJm9bMl09PT0xLFU9RD0+e2xldCBWPVt7bmFtZTpcIm91dHB1dF9zaXplXCIsdHlwZTpcInUzMlwifSx7bmFtZTpcInN0cmlkZXNcIix0eXBlOlwidTMyXCIsbGVuZ3RoOm0ubGVuZ3RofSx7bmFtZTpcImZpbHRlcl9kaW1zXCIsdHlwZTpcInUzMlwiLGxlbmd0aDpsLmxlbmd0aH0se25hbWU6XCJkaWxhdGlvbnNcIix0eXBlOlwidTMyXCIsbGVuZ3RoOmwubGVuZ3RofSx7bmFtZTpcImVmZmVjdGl2ZV9maWx0ZXJfZGltc1wiLHR5cGU6XCJ1MzJcIixsZW5ndGg6Yi5sZW5ndGh9LHtuYW1lOlwicGFkc1wiLHR5cGU6XCJpMzJcIixsZW5ndGg6dy5sZW5ndGh9LHtuYW1lOlwiaW5wdXRfY2hhbm5lbHNfcGVyX2dyb3VwXCIsdHlwZTpcInUzMlwifSx7bmFtZTpcIm91dHB1dF9jaGFubmVsc19wZXJfZ3JvdXBcIix0eXBlOlwidTMyXCJ9XSxZPUhlKGVbMF0uZGF0YVR5cGUpO3JldHVybmAke2lwKEQsZSxpLGEsTywkLFksVixjKX1gfTtyZXR1cm57bmFtZTpcIkNvbnZUcmFuc3Bvc2UyRFwiLHNoYWRlckNhY2hlOntoaW50OmAke3QuY2FjaGVLZXl9O2AsaW5wdXREZXBlbmRlbmNpZXM6cH0sZ2V0UnVuRGF0YTooKT0+KHtkaXNwYXRjaEdyb3VwOnt4Om9bMF0seTpvWzFdLHo6b1syXX0sb3V0cHV0czpbe2RpbXM6cj9yKGkpOmksZGF0YVR5cGU6ZVswXS5kYXRhVHlwZX1dLHByb2dyYW1Vbmlmb3JtczpFfSksZ2V0U2hhZGVyU291cmNlOlV9fX0pO3ZhciBvcCxzcCx1cCxCdSxNdSxscCxkcCxjcCxwcCxEdSx6dT1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7UHUoKTtSdSgpO2p0KCk7JHIoKTtvcD0oZSx0LHIsYSxpLHMpPT4oZS0xKSp0K3IrKGEtMSkqaSsxLXMsc3A9KGUsdCxyLGEsaSk9PntsZXQgcz1NYXRoLmZsb29yKGUvMik7dD09PVwiU0FNRV9VUFBFUlwiPyhyW2FdPXMscltpXT1lLXMpOnQ9PT1cIlNBTUVfTE9XRVJcIiYmKHJbYV09ZS1zLHJbaV09cyl9LHVwPShlLHQscixhLGkscyxvLGMscCxtKT0+e2xldCBsPWUubGVuZ3RoLTIsZz1tLmxlbmd0aD09PTA7aWYocC5sZW5ndGg9PT0wKWZvcihsZXQgJD0wOyQ8bDsrKyQpcC5wdXNoKDApO2xldCBiPWVbMF0sdz10W2M/MzoxXSppO2ZvcihsZXQgJD0wLHg9ZS5sZW5ndGgtbC0oYz8xOjApOyQ8bDsrKyQsKyt4KXtsZXQgVD1lW3hdLEM9Zz9UKm9bJF06bVskXSxTPW9wKFQsb1skXSxzWyRdLHRbeF0sclskXSxDKTtzcChTLGEscywkLCQrbCksZyYmbS5wdXNoKG9bJF0qKFQtMSkrcFskXSsodFt4XS0xKSpyWyRdKzEtc1skXS1zWyQrbF0pfW0uc3BsaWNlKDAsMCxiKSxtLnNwbGljZShjPzM6MSwwLHcpfSxCdT0oZSx0KT0+e2xldCByPWUua2VybmVsU2hhcGUuc2xpY2UoKTtpZihlLmtlcm5lbFNoYXBlLmxlbmd0aD09PTB8fGUua2VybmVsU2hhcGUucmVkdWNlKChnLGIpPT5nKmIsMSk9PT0wKXtyLmxlbmd0aD0wO2ZvcihsZXQgZz0yO2c8dFsxXS5kaW1zLmxlbmd0aDsrK2cpci5wdXNoKHRbMV0uZGltc1tnXSl9bGV0IGE9ZS5mb3JtYXQ9PT1cIk5IV0NcIjtyLnNwbGljZSgwLDAsdFsxXS5kaW1zWzBdKSxyLnNwbGljZShhPzM6MSwwLHRbMV0uZGltc1sxXSk7bGV0IGk9ZS5wYWRzLnNsaWNlKCkscz1lLm91dHB1dFNoYXBlLnNsaWNlKCksbz1lLm91dHB1dFBhZGRpbmcuc2xpY2UoKSxjPXRbMF0uZGltcyxwPWUuZGlsYXRpb25zLnNsaWNlKCk7aWYocC5yZWR1Y2UoKGcsYik9PmcrYiwwKT09PTApe2xldCBnPXRbMF0uZGltcy5sZW5ndGgtMjtwPW5ldyBBcnJheShnKS5maWxsKDEpfWxldCBtPWUuc3RyaWRlcy5zbGljZSgpO2lmKG0ucmVkdWNlKChnLGIpPT5nK2IsMCk9PT0wKXtsZXQgZz10WzBdLmRpbXMubGVuZ3RoLTI7bT1uZXcgQXJyYXkoZykuZmlsbCgxKX11cChjLHIscCxlLmF1dG9QYWQsZS5ncm91cCxpLG0sYSxvLHMpO2xldCBsPU9iamVjdC5hc3NpZ24oe30sZSk7cmV0dXJuIE9iamVjdC5hc3NpZ24obCx7a2VybmVsU2hhcGU6cixwYWRzOmksb3V0cHV0UGFkZGluZzpvLG91dHB1dFNoYXBlOnMsZGlsYXRpb25zOnAsc3RyaWRlczptfSksbH0sTXU9ZT0+e2xldCB0PVFuKGUpLHI9ZS5mb3JtYXQsYT1bXCJOT1RTRVRcIixcIlZBTElEXCIsXCJTQU1FX1VQUEVSXCIsXCJTQU1FX0xPV0VSXCJdW3R5cGVvZiBlLmF1dG9QYWQ+XCJ1XCI/MDplLmF1dG9QYWRdLGk9ZS5kaWxhdGlvbnMscz1lLmdyb3VwLG89ZS5rZXJuZWxTaGFwZSxjPWUucGFkcyxwPWUuc3RyaWRlcyxtPWUud0lzQ29uc3QoKSxsPWUub3V0cHV0UGFkZGluZyxnPWUub3V0cHV0U2hhcGU7cmV0dXJue2F1dG9QYWQ6YSxmb3JtYXQ6cixkaWxhdGlvbnM6aSxncm91cDpzLGtlcm5lbFNoYXBlOm8sb3V0cHV0UGFkZGluZzpsLG91dHB1dFNoYXBlOmcscGFkczpjLHN0cmlkZXM6cCx3SXNDb25zdDptLC4uLnQsY2FjaGVLZXk6YCR7ZS5mb3JtYXR9OyR7dC5hY3RpdmF0aW9ufTtgfX0sbHA9KGUsdCk9PntpZighZXx8ZS5sZW5ndGghPT0yJiZlLmxlbmd0aCE9PTMpdGhyb3cgbmV3IEVycm9yKFwiQ29udiByZXF1aXJlcyAyIG9yIDMgaW5wdXRzXCIpO2lmKGVbMF0uZGltcy5sZW5ndGghPT00JiZlWzBdLmRpbXMubGVuZ3RoIT09Myl0aHJvdyBuZXcgRXJyb3IoXCJjdXJyZW50bHkgb25seSBzdXBwb3J0IDItZGltZW5zaW9uYWwgY29udlwiKTtpZihlWzBdLmRpbXMubGVuZ3RoIT09ZVsxXS5kaW1zLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoXCJmaWx0ZXIgZG9lcyBub3QgaGF2ZSBzYW1lIGRpbWVuc2lvbiBhcyBpbnB1dFwiKTtsZXQgcj1lWzBdLmRpbXNbdC5mb3JtYXQ9PT1cIk5IV0NcIj9lWzBdLmRpbXMubGVuZ3RoLTE6MV0sYT1lWzFdLmRpbXNbMF07aWYociE9PWEpdGhyb3cgbmV3IEVycm9yKFwiRklMVEVSX0lOX0NIQU5ORUwgc2hvdWxkIGJlIGVxdWFsIHRvIERBVEFfQ0hBTk5FTFwiKTtsZXQgaT1lWzFdLmRpbXNbMV0qdC5ncm91cDtpZihlLmxlbmd0aD09PTMmJihlWzJdLmRpbXMubGVuZ3RoIT09MXx8ZVsyXS5kaW1zWzBdIT09aSkpdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBiaWFzXCIpO2xldCBzPWVbMF0uZGltcy5sZW5ndGgtMjtpZih0LmRpbGF0aW9ucy5yZWR1Y2UoKGwsZyk9PmwrZywwKT4wJiZ0LmRpbGF0aW9ucy5sZW5ndGghPT1zKXRocm93IG5ldyBFcnJvcihgZGlsYXRpb25zIHNob3VsZCBiZSAke3N9RGApO2lmKHQuc3RyaWRlcy5yZWR1Y2UoKGwsZyk9PmwrZywwKT4wJiZ0LnN0cmlkZXMubGVuZ3RoIT09cyl0aHJvdyBuZXcgRXJyb3IoYHN0cmlkZXMgc2hvdWxkIGJlICR7c31EYCk7aWYodC5wYWRzLnJlZHVjZSgobCxnKT0+bCtnLDApPjAmJnQucGFkcy5sZW5ndGghPT1zKjIpdGhyb3cgbmV3IEVycm9yKGBwYWRzIHNob3VsZCBiZSAke3MqMn1EYCk7aWYodC5vdXRwdXRQYWRkaW5nLmxlbmd0aCE9PXMmJnQub3V0cHV0UGFkZGluZy5sZW5ndGghPT0wKXRocm93IG5ldyBFcnJvcihgb3V0cHV0X3BhZGRpbmcgc2hvdWxkIGJlICR7c31EYCk7aWYodC5rZXJuZWxTaGFwZS5yZWR1Y2UoKGwsZyk9PmwrZywwKT4wJiZ0Lmtlcm5lbFNoYXBlLmxlbmd0aCE9PTAmJnQua2VybmVsU2hhcGUubGVuZ3RoIT09ZVsxXS5kaW1zLmxlbmd0aC0yKXRocm93IG5ldyBFcnJvcihcImludmFsaWQga2VybmVsIHNoYXBlXCIpO2lmKHQub3V0cHV0U2hhcGUubGVuZ3RoIT09MCYmdC5vdXRwdXRTaGFwZS5sZW5ndGghPT1lWzBdLmRpbXMubGVuZ3RoLTIpdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBvdXRwdXQgc2hhcGVcIil9LGRwPVsyLDMsMSwwXSxjcD0oZSx0LHIpPT57bGV0IGE9QnUocix0KSxpPXIuZm9ybWF0PT09XCJOSFdDXCIscz1hLm91dHB1dFNoYXBlLG89c1tpPzM6MV0sYz10WzBdLmRpbXNbaT8zOjFdO2lmKGEuZ3JvdXAhPT0xfHxvPT09MSYmYz09PTEpe2UuY29tcHV0ZShvaSh0LGEpKTtyZXR1cm59bGV0IHA9c1tpPzE6Ml0sbT1zW2k/MjozXSxsPXRbMV0uZGltc1syXSxnPXRbMV0uZGltc1szXSxiPWk/cCptOm8sdz1pP286cCptLCQ9bCpnKmMseD0hMCxUPWUua2VybmVsQ3VzdG9tRGF0YS53VD8/ZS5jb21wdXRlKHh0KHRbMV0sZHApLHtpbnB1dHM6WzFdLG91dHB1dHM6W3Iud0lzQ29uc3Q/LTI6LTFdfSlbMF07ci53SXNDb25zdCYmIWUua2VybmVsQ3VzdG9tRGF0YS53VCYmKGUua2VybmVsQ3VzdG9tRGF0YS53VD1UKTtsZXQgQz1bdFswXSxUXSxTPXQubGVuZ3RoPT09MztTJiYoIWkmJnRbMl0uZGltcy5sZW5ndGg9PT0xP0MucHVzaCh0WzJdLnJlc2hhcGUoW3RbMl0uZGltc1swXSwxLDFdKSk6Qy5wdXNoKHRbMl0pKSxlLmNvbXB1dGUoa3UoQyxhLHMsYix3LCQsUyx4KSx7aW5wdXRzOkN9KX0scHA9KGUsdCk9PntsZXQgcj10LmZvcm1hdD09PVwiTkhXQ1wiLGE9W2UuaW5wdXRzWzBdLnJlc2hhcGUocj9bZS5pbnB1dHNbMF0uZGltc1swXSwxLGUuaW5wdXRzWzBdLmRpbXNbMV0sZS5pbnB1dHNbMF0uZGltc1syXV06W2UuaW5wdXRzWzBdLmRpbXNbMF0sZS5pbnB1dHNbMF0uZGltc1sxXSwxLGUuaW5wdXRzWzBdLmRpbXNbMl1dKSxlLmlucHV0c1sxXS5yZXNoYXBlKFtlLmlucHV0c1sxXS5kaW1zWzBdLGUuaW5wdXRzWzFdLmRpbXNbMV0sMSxlLmlucHV0c1sxXS5kaW1zWzJdXSldO2EubGVuZ3RoPT09MyYmYS5wdXNoKGUuaW5wdXRzWzJdKTtsZXQgaT10Lmtlcm5lbFNoYXBlOyhpLmxlbmd0aD09PTB8fGlbMF09PT0wKSYmKGk9W2UuaW5wdXRzWzFdLmRpbXNbMl1dKTtsZXQgcz10LmRpbGF0aW9uczsocy5sZW5ndGg9PT0wfHxzWzBdPT09MCkmJihzPVsxXSk7bGV0IG89dC5zdHJpZGVzOyhvLmxlbmd0aD09PTB8fG9bMF09PT0wKSYmKG89WzFdKTtsZXQgYz10LnBhZHM7Yy5sZW5ndGg9PT0wJiYoYz1bMCwwXSksYz1bMCxjWzBdLDAsY1sxXV0sbz1bMV0uY29uY2F0KG8pLHM9WzFdLmNvbmNhdChzKSxpPVsxXS5jb25jYXQoaSk7bGV0IHA9QnUoey4uLnQscGFkczpjLHN0cmlkZXM6byxkaWxhdGlvbnM6cyxrZXJuZWxTaGFwZTppfSxhKTtlLmNvbXB1dGUob2koYSxwLG09PnI/W21bMF0sbVsyXSxtWzNdXTpbbVswXSxtWzFdLG1bM11dKSl9LER1PShlLHQpPT57bHAoZS5pbnB1dHMsdCksZS5pbnB1dHNbMF0uZGltcy5sZW5ndGg9PT0zP3BwKGUsdCk6Y3AoZSxlLmlucHV0cyx0KX19KTt2YXIgZnAsVXUsV3UsTnU9USgoKT0+e1widXNlIHN0cmljdFwiO3plKCk7Q2UoKTtYZSgpO19lKCk7ZnA9KGUsdCxyLGEpPT57bGV0IGk9Ti5zaXplKHQpLHM9dC5sZW5ndGgsbz1XKFwiaW5wdXRcIixlLHMpLGM9SihcIm91dHB1dFwiLGUscykscD1yLmRhdGFUeXBlPT09Nj9yLmdldEludDMyQXJyYXkoKVswXTpOdW1iZXIoci5nZXRCaWdJbnQ2NEFycmF5KClbMF0pLG09Ti5ub3JtYWxpemVBeGlzKHAscyksbD1nPT57bGV0IGI9YCBpMzIoJHtvLmluZGljZXNHZXQoXCJpbnB1dEluZGljZXNcIixcInVuaWZvcm1zLmF4aXNcIil9KSBgLHc9Y2UoXCJ1bmlmb3Jtcy5pbnB1dF9zaGFwZVwiLFwidW5pZm9ybXMuYXhpc1wiLHMpLCQ9YS5yZXZlcnNlP2IrKGEuZXhjbHVzaXZlP1wiICsgMVwiOlwiXCIpOlwiMFwiLHg9YS5yZXZlcnNlP3c6YisoYS5leGNsdXNpdmU/XCJcIjpcIiArIDFcIik7cmV0dXJuYFxuICAgICAgICAgICAgICAgICR7Zy5yZWdpc3RlclVuaWZvcm0oXCJvdXRwdXRTaXplXCIsXCJ1MzJcIikucmVnaXN0ZXJVbmlmb3JtKFwiYXhpc1wiLFwidTMyXCIpLmRlY2xhcmVWYXJpYWJsZXMobyxjKX1cbiAgICAgICAgICAgICAgICAke2cubWFpblN0YXJ0KCl9XG4gICAgICAgICAgICAgICAgICAke2cuZ3VhcmRBZ2FpbnN0T3V0T2ZCb3VuZHNXb3JrZ3JvdXBTaXplcyhcInVuaWZvcm1zLm91dHB1dFNpemVcIil9XG4gICAgICAgICAgICAgICAgICB2YXIgaW5wdXRJbmRpY2VzID0gJHtjLm9mZnNldFRvSW5kaWNlcyhcImdsb2JhbF9pZHhcIil9O1xuICAgICAgICAgICAgICAgICAgdmFyIHN1bSA9ICR7Yy50eXBlLnZhbHVlfSgwKTtcbiAgICAgICAgICAgICAgICAgIGxldCBmaXJzdCA6IGkzMiA9ICR7JH07XG4gICAgICAgICAgICAgICAgICBsZXQgbGFzdCA6IGkzMiA9ICR7eH07XG4gICAgICAgICAgICAgICAgICBmb3IgKHZhciBpIDogaTMyID0gZmlyc3Q7IGkgPCBsYXN0OyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgJHtvLmluZGljZXNTZXQoXCJpbnB1dEluZGljZXNcIixcInVuaWZvcm1zLmF4aXNcIixcInUzMihpKVwiKX07XG4gICAgICAgICAgICAgICAgICAgIHN1bSA9IHN1bSArICR7by5nZXRCeUluZGljZXMoXCJpbnB1dEluZGljZXNcIil9O1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgJHtjLnNldEJ5T2Zmc2V0KFwiZ2xvYmFsX2lkeFwiLFwic3VtXCIpfTtcbiAgICAgICAgICAgICAgICB9YH07cmV0dXJue25hbWU6XCJDdW1TdW1cIixzaGFkZXJDYWNoZTp7aGludDphLmNhY2hlS2V5LGlucHV0RGVwZW5kZW5jaWVzOltcInJhbmtcIl19LGdldFJ1bkRhdGE6KCk9Pih7b3V0cHV0czpbe2RpbXM6dCxkYXRhVHlwZTplfV0sZGlzcGF0Y2hHcm91cDp7eDpNYXRoLmNlaWwoaS82NCl9LHByb2dyYW1Vbmlmb3Jtczpbe3R5cGU6XCJ1aW50MzJcIixkYXRhOml9LHt0eXBlOlwiaW50MzJcIixkYXRhOm19LC4uLkwodCksLi4uTCh0KV19KSxnZXRTaGFkZXJTb3VyY2U6bH19LFV1PShlLHQpPT57bGV0IHI9ZS5pbnB1dHNbMF0uZGltcyxhPWUuaW5wdXRzWzBdLmRhdGFUeXBlLGk9ZS5pbnB1dHNbMV07ZS5jb21wdXRlKGZwKGEscixpLHQpLHtpbnB1dHM6WzBdfSl9LFd1PWU9PntsZXQgdD1lLmV4Y2x1c2l2ZT09PTEscj1lLnJldmVyc2U9PT0xO3JldHVybiB4ZSh7ZXhjbHVzaXZlOnQscmV2ZXJzZTpyfSl9fSk7dmFyIHNpLG5hLFZ1LG1wLGhwLHVpLGxpLEh1LGdwLEx1LEd1LEZ1PVEoKCk9PntcInVzZSBzdHJpY3RcIjtDZSgpO1hlKCk7X2UoKTtzaT1cIlthLXpBLVpdfFxcXFwuXFxcXC5cXFxcLlwiLG5hPVwiKFwiK3NpK1wiKStcIixWdT1cIl5cIituYStcIiRcIixtcD1cIihcIituYStcIiwpKlwiK25hLGhwPVwiXlwiK21wK1wiJFwiLHVpPWNsYXNze2NvbnN0cnVjdG9yKHQ9LTEpe3RoaXMuc3ltYm9sVG9JbmRpY2VzPW5ldyBNYXAsdGhpcy5pbnB1dEluZGV4PXR9YWRkU3ltYm9sKHQscil7bGV0IGE9dGhpcy5zeW1ib2xUb0luZGljZXMuZ2V0KHQpO2E9PT12b2lkIDA/YT1bcl06YS5wdXNoKHIpLHRoaXMuc3ltYm9sVG9JbmRpY2VzLnNldCh0LGEpfX0sbGk9Y2xhc3N7Y29uc3RydWN0b3IodCxyKXt0aGlzLmVxdWF0aW9uPXI7dGhpcy5oYXNFbGxpcHNpcz0hMSx0aGlzLnN5bWJvbFRvSW5mbz1uZXcgTWFwLHRoaXMubGhzPW5ldyBBcnJheSx0aGlzLm91dHB1dERpbXM9W107bGV0W2EsaV09ci5pbmNsdWRlcyhcIi0+XCIpP3Iuc3BsaXQoXCItPlwiLDIpOltyLFwiXCJdO2lmKCFhLm1hdGNoKFJlZ0V4cChocCkpKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgTEhTIHRlcm1cIik7aWYoYS5zcGxpdChcIixcIikuZm9yRWFjaCgoYyxwKT0+e2xldCBtPXRbcF0uZGltcy5zbGljZSgpO2lmKCFjLm1hdGNoKFJlZ0V4cChWdSkpKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgTEhTIHRlcm1cIik7bGV0IGw9dGhpcy5wcm9jZXNzVGVybShjLCEwLG0scCk7dGhpcy5saHMucHVzaChsKX0pLGk9PT1cIlwiKWkrPVsuLi50aGlzLnN5bWJvbFRvSW5mby5lbnRyaWVzKCldLmZpbHRlcigoW2MscF0pPT5wLmNvdW50PT09MXx8Yz09PVwiLi4uXCIpLm1hcCgoW2NdKT0+Yykuam9pbihcIlwiKTtlbHNlIGlmKCFpLm1hdGNoKFJlZ0V4cChuYSkpKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgUkhTXCIpO2kubWF0Y2goUmVnRXhwKHNpLFwiZ1wiKSk/LmZvckVhY2goYz0+e2lmKGM9PT1cIi4uLlwiKXRoaXMub3V0cHV0RGltcz10aGlzLm91dHB1dERpbXMuY29uY2F0KHRoaXMuZWxsaXBzaXNEaW1zKTtlbHNle2xldCBwPXRoaXMuc3ltYm9sVG9JbmZvLmdldChjKTtpZihwPT09dm9pZCAwKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgUkhTIHN5bWJvbFwiKTt0aGlzLm91dHB1dERpbXMucHVzaChwLmRpbVZhbHVlKX19KSx0aGlzLnJocz10aGlzLnByb2Nlc3NUZXJtKGksITEsdGhpcy5vdXRwdXREaW1zKX1hZGRTeW1ib2wodCxyLGEpe2xldCBpPXRoaXMuc3ltYm9sVG9JbmZvLmdldCh0KTtpZihpIT09dm9pZCAwKXtpZihpLmRpbVZhbHVlIT09ciYmaS5jb3VudCE9PTEpdGhyb3cgbmV3IEVycm9yKFwiRGltZW5zaW9uIG1pc21hdGNoXCIpO2kuY291bnQrKyxpLmlucHV0SW5kaWNlcy5wdXNoKGEpfWVsc2UgaT17Y291bnQ6MSxkaW1WYWx1ZTpyLGlucHV0SW5kaWNlczpbYV19O3RoaXMuc3ltYm9sVG9JbmZvLnNldCh0LGkpfXByb2Nlc3NUZXJtKHQscixhLGk9LTEpe2xldCBzPWEubGVuZ3RoLG89ITEsYz1bXSxwPTA7aWYoIXQubWF0Y2goUmVnRXhwKFZ1KSkmJiFyJiZ0IT09XCJcIil0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIExIUyB0ZXJtXCIpO2xldCBtPXQubWF0Y2goUmVnRXhwKHNpLFwiZ1wiKSksbD1uZXcgdWkoaSk7cmV0dXJuIG0/LmZvckVhY2goKGcsYik9PntpZihnPT09XCIuLi5cIil7aWYobyl0aHJvdyBuZXcgRXJyb3IoXCJPbmx5IG9uZSBlbGxpcHNpcyBpcyBhbGxvd2VkIHBlciBpbnB1dCB0ZXJtXCIpO289ITA7bGV0IHc9cy1tLmxlbmd0aCsxO2lmKHc8MCl0aHJvdyBuZXcgRXJyb3IoXCJFbGxpcHNpcyBvdXQgb2YgYm91bmRzXCIpO2lmKGM9YS5zbGljZShwLHArdyksdGhpcy5oYXNFbGxpcHNpcyl7aWYodGhpcy5lbGxpcHNpc0RpbXMubGVuZ3RoIT09Yy5sZW5ndGh8fHRoaXMuZWxsaXBzaXNEaW1zLnRvU3RyaW5nKCkhPT1jLnRvU3RyaW5nKCkpdGhyb3cgbmV3IEVycm9yKFwiRWxsaXBzaXMgZGltZW5zaW9ucyBtaXNtYXRjaFwiKX1lbHNlIGlmKHIpdGhpcy5oYXNFbGxpcHNpcz0hMCx0aGlzLmVsbGlwc2lzRGltcz1jO2Vsc2UgdGhyb3cgbmV3IEVycm9yKFwiRWxsaXBzaXMgbXVzdCBiZSBzcGVjaWZpZWQgaW4gdGhlIExIU1wiKTtmb3IobGV0ICQ9MDskPGMubGVuZ3RoOyQrKyl7bGV0IHg9U3RyaW5nLmZyb21DaGFyQ29kZShcIjBcIi5jaGFyQ29kZUF0KDApKyQpO2wuYWRkU3ltYm9sKHgsYiskKSx0aGlzLmFkZFN5bWJvbCh4LGFbcCsrXSxpKX19ZWxzZSBsLmFkZFN5bWJvbChnLGIrKHRoaXMuaGFzRWxsaXBzaXM/dGhpcy5lbGxpcHNpc0RpbXMubGVuZ3RoLTE6MCkpLHRoaXMuYWRkU3ltYm9sKGcsYVtwKytdLGkpfSksbH19LEh1PWU9PmUrXCJfbWF4XCIsZ3A9KGUsdCxyLGEpPT57bGV0IHM9ZS5tYXAobD0+bC5sZW5ndGgpLm1hcCgobCxnKT0+VyhgaW5wdXQke2d9YCx0LGwpKSxvPU4uc2l6ZShhKSxjPUooXCJvdXRwdXRcIix0LGEubGVuZ3RoKSxwPVsuLi5yLnN5bWJvbFRvSW5mby5rZXlzKCldLmZpbHRlcihsPT4hci5yaHMuc3ltYm9sVG9JbmRpY2VzLmhhcyhsKSksbT1sPT57bGV0IGc9W10sYj1cInZhciBwcm9kID0gMS4wO1wiLHc9XCJ2YXIgc3VtID0gMC4wO1wiLCQ9XCJzdW0gKz0gcHJvZDtcIix4PVtdLFQ9W10sQz1bXSxTPVtdLEU9ci5zeW1ib2xUb0luZm8uc2l6ZT09PXIucmhzLnN5bWJvbFRvSW5kaWNlcy5zaXplO3Iuc3ltYm9sVG9JbmZvLmZvckVhY2goKFUsRCk9PntpZihyLnJocy5zeW1ib2xUb0luZGljZXMuaGFzKEQpKXtsZXQgVj1yLnJocy5zeW1ib2xUb0luZGljZXMuZ2V0KEQpPy5bMF07ViE9PXZvaWQgMCYmci5saHMuZm9yRWFjaCgoWSxzZSk9PntpZihVLmlucHV0SW5kaWNlcy5pbmNsdWRlcyhzZSkpe2xldCBCPVkuc3ltYm9sVG9JbmRpY2VzLmdldChEKTtpZihCPT09dm9pZCAwKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgc3ltYm9sIGVycm9yXCIpO0IuZm9yRWFjaCh0ZT0+e2cucHVzaChgJHtzW3NlXS5pbmRpY2VzU2V0KGBpbnB1dCR7c2V9SW5kaWNlc2AsdGUsYy5pbmRpY2VzR2V0KFwib3V0cHV0SW5kaWNlc1wiLFYpKX1gKX0pfX0pfWVsc2Ugci5saHMuZm9yRWFjaCgoVixZKT0+e2lmKFUuaW5wdXRJbmRpY2VzLmluY2x1ZGVzKFkpKXtsZXQgc2U9Vi5zeW1ib2xUb0luZGljZXMuZ2V0KEQpO2lmKHNlPT09dm9pZCAwKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgc3ltYm9sIGVycm9yXCIpO3NlLmZvckVhY2goQj0+e3gucHVzaChgJHtzW1ldLmluZGljZXNTZXQoYGlucHV0JHtZfUluZGljZXNgLEIsYCR7RH1gKX1gKX0pLFMucHVzaChgcHJvZCAqPSAke3NbWV0uZ2V0QnlJbmRpY2VzKGBpbnB1dCR7WX1JbmRpY2VzYCl9O2ApfX0pLFQucHVzaChgZm9yKHZhciAke0R9OiB1MzIgPSAwOyAke0R9IDwgdW5pZm9ybXMuJHtIdShEKX07ICR7RH0rKykge2ApLEMucHVzaChcIn1cIil9KTtsZXQgTz1FP1suLi5nLGBsZXQgc3VtID0gJHtzLm1hcCgoVSxEKT0+VS5nZXRCeUluZGljZXMoYGlucHV0JHtEfUluZGljZXNgKSkuam9pbihcIiAqIFwiKX07YF06Wy4uLmcsdywuLi5ULC4uLngsYiwuLi5TLCQsLi4uQ107cmV0dXJuYFxuICAgICAgICAgICAgJHtsLnJlZ2lzdGVyVW5pZm9ybXMocC5tYXAoVT0+KHtuYW1lOmAke0h1KFUpfWAsdHlwZTpcInUzMlwifSkpKS5yZWdpc3RlclVuaWZvcm0oXCJvdXRwdXRTaXplXCIsXCJ1MzJcIikuZGVjbGFyZVZhcmlhYmxlcyguLi5zLGMpfVxuXG4gICAgICAgICAgICAke2wubWFpblN0YXJ0KCl9XG4gICAgICAgICAgICAke2wuZ3VhcmRBZ2FpbnN0T3V0T2ZCb3VuZHNXb3JrZ3JvdXBTaXplcyhcInVuaWZvcm1zLm91dHB1dFNpemVcIil9XG4gICAgICAgICAgICB2YXIgb3V0cHV0SW5kaWNlcyA9ICR7Yy5vZmZzZXRUb0luZGljZXMoXCJnbG9iYWxfaWR4XCIpfTtcbiAgICAgICAgICAgICR7cy5tYXAoKFUsRCk9PmB2YXIgaW5wdXQke0R9SW5kaWNlczogJHtzW0RdLnR5cGUuaW5kaWNlc307YCkuam9pbihgXG5gKX1cbiAgICAgICAgICAgICR7Ty5qb2luKGBcbmApfTtcbiAgICAgICAgICAgICR7Yy5zZXRCeU9mZnNldChcImdsb2JhbF9pZHhcIixcInN1bVwiKX07XG4gICAgICAgICAgfWB9O3JldHVybntuYW1lOlwiRWluc3VtXCIsc2hhZGVyQ2FjaGU6e2hpbnQ6ci5lcXVhdGlvbixpbnB1dERlcGVuZGVuY2llczplLm1hcCgoKT0+XCJyYW5rXCIpfSxnZXRSdW5EYXRhOigpPT57bGV0IGw9cC5maWx0ZXIoYj0+ci5zeW1ib2xUb0luZm8uaGFzKGIpKS5tYXAoYj0+KHt0eXBlOlwidWludDMyXCIsZGF0YTpyLnN5bWJvbFRvSW5mby5nZXQoYik/LmRpbVZhbHVlfHwwfSkpO2wucHVzaCh7dHlwZTpcInVpbnQzMlwiLGRhdGE6b30pO2xldCBnPWUubWFwKChiLHcpPT5bLi4uTChiKV0pLnJlZHVjZSgoYix3KT0+Yi5jb25jYXQodyksbCk7cmV0dXJuIGcucHVzaCguLi5MKGEpKSx7b3V0cHV0czpbe2RpbXM6YSxkYXRhVHlwZTp0fV0sZGlzcGF0Y2hHcm91cDp7eDpNYXRoLmNlaWwoby82NCl9LHByb2dyYW1Vbmlmb3JtczpnfX0sZ2V0U2hhZGVyU291cmNlOm19fSxMdT0oZSx0KT0+e2xldCByPW5ldyBsaShlLmlucHV0cyx0LmVxdWF0aW9uKSxhPXIub3V0cHV0RGltcyxpPWUuaW5wdXRzLm1hcCgocyxvKT0+cy5kaW1zKTtlLmNvbXB1dGUoZ3AoaSxlLmlucHV0c1swXS5kYXRhVHlwZSxyLGEpKX0sR3U9ZT0+e2xldCB0PWUuZXF1YXRpb24ucmVwbGFjZSgvXFxzKy9nLFwiXCIpO3JldHVybiB4ZSh7ZXF1YXRpb246dH0pfX0pO3ZhciB5cCxxdSxicCx2cCxqdSxLdT1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7emUoKTtDZSgpO19lKCk7eXA9ZT0+e2lmKCFlfHxlLmxlbmd0aCE9PTIpdGhyb3cgbmV3IEVycm9yKFwiRXhwYW5kIHJlcXVpcmVzIDIgaW5wdXQuXCIpO2xldCB0PWVbMF0uZGltcyxyPUFycmF5LmZyb20oZVsxXS5nZXRCaWdJbnQ2NEFycmF5KCksTnVtYmVyKSxhPXIubGVuZ3RoPHQubGVuZ3RoPzA6ci5sZW5ndGgtdC5sZW5ndGgsaT10Lmxlbmd0aDxyLmxlbmd0aD8wOnQubGVuZ3RoLXIubGVuZ3RoO2Zvcig7YTxyLmxlbmd0aCYmaTx0Lmxlbmd0aDsrK2EsKytpKWlmKHJbYV0hPT10W2ldJiZyW2FdIT09MSYmdFtpXSE9PTEpdGhyb3cgbmV3IEVycm9yKFwiRXhwYW5kIHJlcXVpcmVzIHNoYXBlIHRvIGJlIGJyb2FkY2FzdGFibGUgdG8gaW5wdXRcIil9LHF1PShlLHQpPT57bGV0IHI9ZS5sZW5ndGgtdC5sZW5ndGgsYT1bXTtmb3IobGV0IGk9MDtpPHI7KytpKWEucHVzaChlW2ldKTtmb3IobGV0IGk9MDtpPHQubGVuZ3RoOysraSlhLnB1c2godFtpXT09PTE/ZVtpK3JdOnRbaV0pO3JldHVybiBhfSxicD0oZSx0KT0+ZS5sZW5ndGg+dC5sZW5ndGg/cXUoZSx0KTpxdSh0LGUpLHZwPWU9PntsZXQgdD1lWzBdLmRpbXMscj1BcnJheS5mcm9tKGVbMV0uZ2V0QmlnSW50NjRBcnJheSgpLE51bWJlciksYT1icCh0LHIpLGk9ZVswXS5kYXRhVHlwZSxzPWk9PT05PzQ6MSxvPU1hdGguY2VpbChOLnNpemUoYSkvcyksYz1tPT57bGV0IGw9VyhcImlucHV0XCIsaSx0Lmxlbmd0aCxzKSxnPUooXCJvdXRwdXRcIixpLGEubGVuZ3RoLHMpLGI7aWYoaT09PTkpe2xldCB3PSgkLHgsVD1cIlwiKT0+YFxuICAgICAgICAgIGxldCBvdXRwdXRJbmRpY2VzJHt4fSA9ICR7Zy5vZmZzZXRUb0luZGljZXMoYG91dHB1dE9mZnNldCArICR7eH11YCl9O1xuICAgICAgICAgIGxldCBvZmZzZXQke3h9ID0gJHtsLmJyb2FkY2FzdGVkSW5kaWNlc1RvT2Zmc2V0KGBvdXRwdXRJbmRpY2VzJHt4fWAsZyl9O1xuICAgICAgICAgIGxldCBpbmRleCR7eH0gPSBvZmZzZXQke3h9IC8gNHU7XG4gICAgICAgICAgbGV0IGNvbXBvbmVudCR7eH0gPSBvZmZzZXQke3h9ICUgNHU7XG4gICAgICAgICAgJHskfVske3h9XSA9ICR7VH0oJHtsLmdldEJ5T2Zmc2V0KGBpbmRleCR7eH1gKX1bY29tcG9uZW50JHt4fV0pO1xuICAgICAgICBgO2I9YFxuICAgICAgICBsZXQgb3V0cHV0T2Zmc2V0ID0gZ2xvYmFsX2lkeCAqICR7c307XG4gICAgICAgIHZhciBkYXRhID0gdmVjNDx1MzI+KDApO1xuICAgICAgICAke3coXCJkYXRhXCIsMCxcInUzMlwiKX1cbiAgICAgICAgJHt3KFwiZGF0YVwiLDEsXCJ1MzJcIil9XG4gICAgICAgICR7dyhcImRhdGFcIiwyLFwidTMyXCIpfVxuICAgICAgICAke3coXCJkYXRhXCIsMyxcInUzMlwiKX1cbiAgICAgICAgJHtnLnNldEJ5T2Zmc2V0KFwiZ2xvYmFsX2lkeFwiLFwiZGF0YVwiKX1cbiAgICAgIH1gfWVsc2UgYj1gXG4gICAgICAgIGxldCBvdXRwdXRJbmRpY2VzID0gJHtnLm9mZnNldFRvSW5kaWNlcyhcImdsb2JhbF9pZHhcIil9O1xuICAgICAgICBsZXQgaW5wdXRPZmZzZXQgPSAke2wuYnJvYWRjYXN0ZWRJbmRpY2VzVG9PZmZzZXQoXCJvdXRwdXRJbmRpY2VzXCIsZyl9O1xuICAgICAgICAke2cuc2V0QnlPZmZzZXQoXCJnbG9iYWxfaWR4XCIsbC5nZXRCeU9mZnNldChcImlucHV0T2Zmc2V0XCIpKX1cbiAgICAgIH1gO3JldHVybmBcbiAgICAke20ucmVnaXN0ZXJVbmlmb3JtKFwidmVjX3NpemVcIixcInUzMlwiKS5kZWNsYXJlVmFyaWFibGVzKGwsZyl9XG4gICAgJHttLm1haW5TdGFydCgpfVxuICAgICR7bS5ndWFyZEFnYWluc3RPdXRPZkJvdW5kc1dvcmtncm91cFNpemVzKFwidW5pZm9ybXMudmVjX3NpemVcIil9XG4gICAgJHtifWB9LHA9W3t0eXBlOlwidWludDMyXCIsZGF0YTpvfSwuLi5MKHQpLC4uLkwoYSldO3JldHVybntuYW1lOlwiRXhwYW5kXCIsc2hhZGVyQ2FjaGU6e2hpbnQ6YCR7YS5sZW5ndGh9YCxpbnB1dERlcGVuZGVuY2llczpbXCJyYW5rXCJdfSxnZXRTaGFkZXJTb3VyY2U6YyxnZXRSdW5EYXRhOigpPT4oe291dHB1dHM6W3tkaW1zOmEsZGF0YVR5cGU6ZVswXS5kYXRhVHlwZX1dLGRpc3BhdGNoR3JvdXA6e3g6TWF0aC5jZWlsKG8vNjQpfSxwcm9ncmFtVW5pZm9ybXM6cH0pfX0sanU9ZT0+e3lwKGUuaW5wdXRzKSxlLmNvbXB1dGUodnAoZS5pbnB1dHMpLHtpbnB1dHM6WzBdfSl9fSk7dmFyIHdwLCRwLFl1LFp1LFh1PVEoKCk9PntcInVzZSBzdHJpY3RcIjt6ZSgpO0NlKCk7WGUoKTtfZSgpO3dwPWU9PntpZighZXx8ZS5sZW5ndGghPT0yKXRocm93IG5ldyBFcnJvcihcIkdhdGhlciByZXF1aXJlcyAyIGlucHV0cy5cIil9LCRwPShlLHQpPT57bGV0IHI9ZVswXS5kaW1zLGE9ZVsxXS5kaW1zLGk9ci5sZW5ndGgscz1OLm5vcm1hbGl6ZUF4aXModC5heGlzLGkpLG89ci5zbGljZSgwKTtvLnNwbGljZShzLDEsLi4uYSk7bGV0IGM9cltzXSxwPWVbMF0uZGF0YVR5cGU9PT05PzQ6MSxtPU1hdGguY2VpbChOLnNpemUobykvcCksbD1be3R5cGU6XCJ1aW50MzJcIixkYXRhOm19LHt0eXBlOlwiaW50MzJcIixkYXRhOmN9LHt0eXBlOlwidWludDMyXCIsZGF0YTpzfSwuLi5MKGVbMF0uZGltcyksLi4uTChlWzFdLmRpbXMpLC4uLkwobyldLGc9Yj0+e2xldCB3PVcoXCJkYXRhXCIsZVswXS5kYXRhVHlwZSxlWzBdLmRpbXMubGVuZ3RoLHApLCQ9VyhcImlucHV0SW5kaWNlc1wiLGVbMV0uZGF0YVR5cGUsZVsxXS5kaW1zLmxlbmd0aCkseD1KKFwib3V0cHV0XCIsZVswXS5kYXRhVHlwZSxvLmxlbmd0aCxwKSxUPVM9PntsZXQgRT1hLmxlbmd0aCxPPWB2YXIgaW5kaWNlc0luZGljZXMke1N9ICA9ICR7JC50eXBlLmluZGljZXN9KDApO2A7Zm9yKGxldCBVPTA7VTxFO1UrKylPKz1gJHtFPjE/YGluZGljZXNJbmRpY2VzJHtTfVske1V9XWA6YGluZGljZXNJbmRpY2VzJHtTfWB9ID0gJHtvLmxlbmd0aD4xP2BvdXRwdXRJbmRpY2VzJHtTfVt1bmlmb3Jtcy5heGlzICsgJHtVfV1gOmBvdXRwdXRJbmRpY2VzJHtTfWB9O2A7Tys9YFxuICAgICAgICAgIHZhciBpZHgke1N9ID0gJHskLmdldEJ5SW5kaWNlcyhgaW5kaWNlc0luZGljZXMke1N9YCl9O1xuICAgICAgICAgIGlmIChpZHgke1N9IDwgMCkge1xuICAgICAgICAgICAgaWR4JHtTfSA9IGlkeCR7U30gKyB1bmlmb3Jtcy5heGlzRGltTGltaXQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciBkYXRhSW5kaWNlcyR7U30gPSAke3cudHlwZS5pbmRpY2VzfSgwKTtcbiAgICAgICAgYDtmb3IobGV0IFU9MCxEPTA7VTxpO1UrKylVPT09cz8oTys9YCR7aT4xP2BkYXRhSW5kaWNlcyR7U31bJHtVfV1gOmBkYXRhSW5kaWNlcyR7U31gfSA9IHUzMihpZHgke1N9KTtgLEQrPUUpOihPKz1gJHtpPjE/YGRhdGFJbmRpY2VzJHtTfVske1V9XWA6YGRhdGFJbmRpY2VzJHtTfWB9ID0gJHtvLmxlbmd0aD4xP2BvdXRwdXRJbmRpY2VzJHtTfVske0R9XWA6YG91dHB1dEluZGljZXMke1N9YH07YCxEKyspO3JldHVybiBPfSxDO2lmKGVbMF0uZGF0YVR5cGU9PT05KXtsZXQgUz0oRSxPLFU9XCJcIik9PmBcbiAgICAgICAgICBsZXQgb3V0cHV0SW5kaWNlcyR7T30gPSAke3gub2Zmc2V0VG9JbmRpY2VzKGBvdXRwdXRPZmZzZXQgKyAke099dWApfTtcbiAgICAgICAgICAke1QoTyl9O1xuICAgICAgICAgIGxldCBvZmZzZXQke099ID0gJHt3LmluZGljZXNUb09mZnNldChgZGF0YUluZGljZXMke099YCl9O1xuICAgICAgICAgIGxldCBpbmRleCR7T30gPSBvZmZzZXQke099IC8gNHU7XG4gICAgICAgICAgbGV0IGNvbXBvbmVudCR7T30gPSBvZmZzZXQke099ICUgNHU7XG4gICAgICAgICAgJHtFfVske099XSA9ICR7VX0oJHt3LmdldEJ5T2Zmc2V0KGBpbmRleCR7T31gKX1bY29tcG9uZW50JHtPfV0pO1xuICAgICAgICBgO0M9YFxuICAgICAgICBsZXQgb3V0cHV0T2Zmc2V0ID0gZ2xvYmFsX2lkeCAqICR7cH07XG4gICAgICAgIHZhciB2YWx1ZSA9IHZlYzQ8dTMyPigwKTtcbiAgICAgICAgJHtTKFwidmFsdWVcIiwwLFwidTMyXCIpfVxuICAgICAgICAke1MoXCJ2YWx1ZVwiLDEsXCJ1MzJcIil9XG4gICAgICAgICR7UyhcInZhbHVlXCIsMixcInUzMlwiKX1cbiAgICAgICAgJHtTKFwidmFsdWVcIiwzLFwidTMyXCIpfVxuICAgICAgICAke3guc2V0QnlPZmZzZXQoXCJnbG9iYWxfaWR4XCIsXCJ2YWx1ZVwiKX1cbiAgICAgIGB9ZWxzZSBDPWBcbiAgICAgIGxldCBvdXRwdXRJbmRpY2VzID0gJHt4Lm9mZnNldFRvSW5kaWNlcyhcImdsb2JhbF9pZHhcIil9O1xuICAgICAgJHtUKFwiXCIpfTtcbiAgICAgIGxldCB2YWx1ZSA9ICR7dy5nZXRCeUluZGljZXMoXCJkYXRhSW5kaWNlc1wiKX07XG4gICAgICAke3guc2V0QnlPZmZzZXQoXCJnbG9iYWxfaWR4XCIsXCJ2YWx1ZVwiKX07XG4gICAgICBgO3JldHVybmBcbiAgICAgICR7Yi5yZWdpc3RlclVuaWZvcm0oXCJvdXRwdXRTaXplXCIsXCJ1MzJcIikucmVnaXN0ZXJVbmlmb3JtKFwiYXhpc0RpbUxpbWl0XCIsXCJpMzJcIikucmVnaXN0ZXJVbmlmb3JtKFwiYXhpc1wiLFwidTMyXCIpLmRlY2xhcmVWYXJpYWJsZXModywkLHgpfVxuICAgICAgJHtiLm1haW5TdGFydCgpfVxuICAgICAgICAke2IuZ3VhcmRBZ2FpbnN0T3V0T2ZCb3VuZHNXb3JrZ3JvdXBTaXplcyhcInVuaWZvcm1zLm91dHB1dFNpemVcIil9XG4gICAgICAgICR7Q31cbiAgICAgIH1gfTtyZXR1cm57bmFtZTpcIkdhdGhlclwiLHNoYWRlckNhY2hlOntoaW50OnQuY2FjaGVLZXksaW5wdXREZXBlbmRlbmNpZXM6W1wicmFua1wiLFwicmFua1wiXX0sZ2V0UnVuRGF0YTooKT0+KHtvdXRwdXRzOlt7ZGltczpvLGRhdGFUeXBlOmVbMF0uZGF0YVR5cGV9XSxkaXNwYXRjaEdyb3VwOnt4Ok1hdGguY2VpbChtLzY0KX0scHJvZ3JhbVVuaWZvcm1zOmx9KSxnZXRTaGFkZXJTb3VyY2U6Z319LFl1PWU9PnhlKHtheGlzOmUuYXhpc30pLFp1PShlLHQpPT57bGV0IHI9ZS5pbnB1dHM7d3AociksZS5jb21wdXRlKCRwKGUuaW5wdXRzLHQpKX19KTt2YXIgX3AsU3AsUXUsSnUsZWw9USgoKT0+e1widXNlIHN0cmljdFwiO0NlKCk7WGUoKTtfZSgpO19wPWU9PntpZighZXx8ZS5sZW5ndGghPT0yKXRocm93IG5ldyBFcnJvcihcIkdhdGhlckVsZW1lbnRzIHJlcXVpcmVzIDIgaW5wdXRzLlwiKTtpZihlWzBdLmRpbXMubGVuZ3RoPDEpdGhyb3cgbmV3IEVycm9yKFwiR2F0aGVyRWxlbWVudHMgcmVxdWlyZXMgdGhhdCB0aGUgZGF0YSBpbnB1dCBiZSByYW5rID49IDEuXCIpO2lmKGVbMF0uZGltcy5sZW5ndGghPT1lWzFdLmRpbXMubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgR2F0aGVyRWxlbWVudHMgcmVxdWlyZXMgdGhhdCB0aGUgZGF0YSBpbnB1dCBhbmRcbiAgICAgICAgICAgICAgICAgICAgIGluZGljZXMgaW5wdXQgdGVuc29ycyBiZSBvZiBzYW1lIHJhbmsuYCl9LFNwPShlLHQpPT57bGV0IHI9ZVswXS5kaW1zLGE9ZVswXS5kYXRhVHlwZSxpPXIubGVuZ3RoLHM9ZVsxXS5kaW1zLG89ZVsxXS5kYXRhVHlwZSxjPU4ubm9ybWFsaXplQXhpcyh0LmF4aXMsaSkscD1yW2NdLG09cy5zbGljZSgwKSxsPU4uc2l6ZShtKSxnPVcoXCJpbnB1dFwiLGEsaSksYj1XKFwiaW5kaWNlc0lucHV0XCIsbyxzLmxlbmd0aCksdz1KKFwib3V0cHV0XCIsYSxtLmxlbmd0aCksJD1be3R5cGU6XCJ1aW50MzJcIixkYXRhOmx9LHt0eXBlOlwiaW50MzJcIixkYXRhOnB9LHt0eXBlOlwidWludDMyXCIsZGF0YTpjfV07cmV0dXJuICQucHVzaCguLi5MKHIpKSwkLnB1c2goLi4uTChzKSksJC5wdXNoKC4uLkwobSkpLHtuYW1lOlwiR2F0aGVyRWxlbWVudHNcIixzaGFkZXJDYWNoZTp7aW5wdXREZXBlbmRlbmNpZXM6W1wicmFua1wiLFwicmFua1wiXX0sZ2V0UnVuRGF0YTooKT0+KHtvdXRwdXRzOlt7ZGltczptLGRhdGFUeXBlOmVbMF0uZGF0YVR5cGV9XSxkaXNwYXRjaEdyb3VwOnt4Ok1hdGguY2VpbChsLzY0KX0scHJvZ3JhbVVuaWZvcm1zOiR9KSxnZXRTaGFkZXJTb3VyY2U6Qz0+YFxuICAgICAgJHtDLnJlZ2lzdGVyVW5pZm9ybShcIm91dHB1dFNpemVcIixcInUzMlwiKS5yZWdpc3RlclVuaWZvcm0oXCJheGlzRGltTGltaXRcIixcImkzMlwiKS5yZWdpc3RlclVuaWZvcm0oXCJheGlzXCIsXCJ1MzJcIikuZGVjbGFyZVZhcmlhYmxlcyhnLGIsdyl9XG4gICAgICAke0MubWFpblN0YXJ0KCl9XG4gICAgICAke0MuZ3VhcmRBZ2FpbnN0T3V0T2ZCb3VuZHNXb3JrZ3JvdXBTaXplcyhcInVuaWZvcm1zLm91dHB1dFNpemVcIil9XG5cbiAgICAgIGxldCBvdXRwdXRJbmRpY2VzID0gJHt3Lm9mZnNldFRvSW5kaWNlcyhcImdsb2JhbF9pZHhcIil9O1xuXG4gICAgICB2YXIgaWR4ID0gJHtiLmdldEJ5T2Zmc2V0KFwiZ2xvYmFsX2lkeFwiKX07XG4gICAgICBpZiAoaWR4IDwgMCkge1xuICAgICAgICBpZHggPSBpZHggKyB1bmlmb3Jtcy5heGlzRGltTGltaXQ7XG4gICAgICB9XG4gICAgICB2YXIgaW5wdXRJbmRpY2VzID0gJHtnLnR5cGUuaW5kaWNlc30ob3V0cHV0SW5kaWNlcyk7XG4gICAgICAke2cuaW5kaWNlc1NldChcImlucHV0SW5kaWNlc1wiLFwidW5pZm9ybXMuYXhpc1wiLFwidTMyKGlkeClcIil9O1xuICAgICAgbGV0IHZhbHVlID0gJHtnLmdldEJ5SW5kaWNlcyhcImlucHV0SW5kaWNlc1wiKX07XG5cbiAgICAgICR7dy5zZXRCeU9mZnNldChcImdsb2JhbF9pZHhcIixcInZhbHVlXCIpfTtcbiAgfWB9fSxRdT1lPT54ZSh7YXhpczplLmF4aXN9KSxKdT0oZSx0KT0+e2xldCByPWUuaW5wdXRzO19wKHIpLGUuY29tcHV0ZShTcChlLmlucHV0cyx0KSl9fSk7dmFyIHhwLENwLHRsLHJsLG5sPVEoKCk9PntcInVzZSBzdHJpY3RcIjtDZSgpO19lKCk7eHA9ZT0+e2lmKCFlKXRocm93IG5ldyBFcnJvcihcIklucHV0IGlzIG1pc3NpbmdcIik7aWYoZS5sZW5ndGg8Mnx8ZS5sZW5ndGg+Myl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhaWQgaW5wdXQgbnVtYmVyLlwiKTtpZihlLmxlbmd0aD09PTMmJmVbMl0uZGltcy5sZW5ndGg+Mil0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGlucHV0IHNoYXBlIG9mIENcIik7aWYoZVswXS5kYXRhVHlwZSE9PWVbMV0uZGF0YVR5cGV8fGUubGVuZ3RoPT09MyYmZVswXS5kYXRhVHlwZSE9PWVbMl0uZGF0YVR5cGUpdGhyb3cgbmV3IEVycm9yKFwiSW5wdXQgdHlwZXMgYXJlIG1pc21hdGNoZWRcIil9LENwPShlLHQpPT57bGV0IHI9ZVswXS5kaW1zLnNsaWNlKCksYT1lWzFdLmRpbXMuc2xpY2UoKSxbaSxzLG9dPUxuLmdldFNoYXBlT2ZHZW1tUmVzdWx0KHIsdC50cmFuc0EsYSx0LnRyYW5zQixlLmxlbmd0aD09PTM/ZVsyXS5kaW1zOnZvaWQgMCksYz1baSxzXTtpZighYyl0aHJvdyBuZXcgRXJyb3IoXCJDYW4ndCB1c2UgZ2VtbSBvbiB0aGUgZ2l2ZW4gdGVuc29yc1wiKTtsZXQgcD1OLnNpemUoYyksbT1be3R5cGU6XCJ1aW50MzJcIixkYXRhOnB9LHt0eXBlOlwidWludDMyXCIsZGF0YTppfSx7dHlwZTpcInVpbnQzMlwiLGRhdGE6c30se3R5cGU6XCJ1aW50MzJcIixkYXRhOm99LHt0eXBlOlwiZmxvYXQzMlwiLGRhdGE6dC5hbHBoYX0se3R5cGU6XCJmbG9hdDMyXCIsZGF0YTp0LmJldGF9XSxsPVtcInR5cGVcIixcInR5cGVcIl07ZS5sZW5ndGg9PT0zJiYobS5wdXNoKC4uLkwoZVsyXS5kaW1zKSksbC5wdXNoKFwicmFua1wiKSksbS5wdXNoKC4uLkwoYykpO2xldCBnPWI9PntsZXQgdz1cIlwiO3QudHJhbnNBJiZ0LnRyYW5zQj93PVwidmFsdWUgKz0gYVtrICogdW5pZm9ybXMuTSArIG1dICogYltuICogdW5pZm9ybXMuSyArIGtdO1wiOnQudHJhbnNBJiYhdC50cmFuc0I/dz1cInZhbHVlICs9IGFbayAqIHVuaWZvcm1zLk0gKyBtXSAqIGJbayAqIHVuaWZvcm1zLk4gKyBuXTtcIjohdC50cmFuc0EmJnQudHJhbnNCP3c9XCJ2YWx1ZSArPSBhW20gKiB1bmlmb3Jtcy5LICsga10gKiBiW24gKiB1bmlmb3Jtcy5LICsga107XCI6IXQudHJhbnNBJiYhdC50cmFuc0ImJih3PVwidmFsdWUgKz0gYVttICogdW5pZm9ybXMuSyArIGtdICogYltrICogdW5pZm9ybXMuTiArIG5dO1wiKTtsZXQgJD10LmFscGhhPT09MT9cIlwiOlwidmFsdWUgKj0gdW5pZm9ybXMuYWxwaGE7XCIseD1XKFwiYVwiLGVbMF0uZGF0YVR5cGUsZVswXS5kaW1zKSxUPVcoXCJiXCIsZVsxXS5kYXRhVHlwZSxlWzFdLmRpbXMpLEM9eC50eXBlLnZhbHVlLFM9bnVsbCxFPVt4LFRdO2UubGVuZ3RoPT09MyYmKFM9VyhcImNcIixlWzJdLmRhdGFUeXBlLGVbMl0uZGltcy5sZW5ndGgpLEUucHVzaChTKSk7bGV0IE89SihcIm91dHB1dFwiLGVbMF0uZGF0YVR5cGUsYy5sZW5ndGgpO0UucHVzaChPKTtsZXQgVT1be25hbWU6XCJvdXRwdXRfc2l6ZVwiLHR5cGU6XCJ1MzJcIn0se25hbWU6XCJNXCIsdHlwZTpcInUzMlwifSx7bmFtZTpcIk5cIix0eXBlOlwidTMyXCJ9LHtuYW1lOlwiS1wiLHR5cGU6XCJ1MzJcIn0se25hbWU6XCJhbHBoYVwiLHR5cGU6XCJmMzJcIn0se25hbWU6XCJiZXRhXCIsdHlwZTpcImYzMlwifV07cmV0dXJuYFxuICAke2IucmVnaXN0ZXJVbmlmb3JtcyhVKS5kZWNsYXJlVmFyaWFibGVzKC4uLkUpfVxuXG4gICR7Yi5tYWluU3RhcnQoKX1cbiAgICAke2IuZ3VhcmRBZ2FpbnN0T3V0T2ZCb3VuZHNXb3JrZ3JvdXBTaXplcyhcInVuaWZvcm1zLm91dHB1dF9zaXplXCIpfVxuXG4gICAgbGV0IG0gPSBnbG9iYWxfaWR4IC8gdW5pZm9ybXMuTjtcbiAgICBsZXQgbiA9IGdsb2JhbF9pZHggJSB1bmlmb3Jtcy5OO1xuXG4gICAgdmFyIHZhbHVlID0gJHtDfSgwKTtcbiAgICBmb3IgKHZhciBrOiB1MzIgPSAwdTsgayA8IHVuaWZvcm1zLks7IGsrKykge1xuICAgICAgJHt3fVxuICAgIH1cblxuICAgICR7JH1cbiAgICAkeygoKT0+UyE9bnVsbD9gbGV0IGNPZmZzZXQgPSAke1MuYnJvYWRjYXN0ZWRJbmRpY2VzVG9PZmZzZXQoXCJ2ZWMyKG0sIG4pXCIsTyl9OyB2YWx1ZSArPSAke0N9KHVuaWZvcm1zLmJldGEpICogJHtTLmdldEJ5T2Zmc2V0KFwiY09mZnNldFwiKX07YDpcIlwiKSgpfVxuICAgIG91dHB1dFtnbG9iYWxfaWR4XSA9IHZhbHVlO1xuICB9YH07cmV0dXJue25hbWU6XCJHZW1tXCIsc2hhZGVyQ2FjaGU6e2hpbnQ6YCR7dC5jYWNoZUtleX1gLGlucHV0RGVwZW5kZW5jaWVzOmx9LGdldFJ1bkRhdGE6KCk9Pih7b3V0cHV0czpbe2RpbXM6YyxkYXRhVHlwZTplWzBdLmRhdGFUeXBlfV0sZGlzcGF0Y2hHcm91cDp7eDpNYXRoLmNlaWwocC82NCl9LHByb2dyYW1Vbmlmb3JtczptfSksZ2V0U2hhZGVyU291cmNlOmd9fSx0bD1lPT57bGV0IHQ9ZS50cmFuc0Escj1lLnRyYW5zQixhPWUuYWxwaGEsaT1lLmJldGE7cmV0dXJue3RyYW5zQTp0LHRyYW5zQjpyLGFscGhhOmEsYmV0YTppLGNhY2hlS2V5OmAke2UudHJhbnNBfTske2UudHJhbnNCfTske2UuYWxwaGE9PT0xfWB9fSxybD0oZSx0KT0+e3hwKGUuaW5wdXRzKSxlLmNvbXB1dGUoQ3AoZS5pbnB1dHMsdCkpfX0pO3ZhciBJcCxBcCxUcCxhbCxpbD1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7emUoKTtDZSgpO19lKCk7SXA9KGUsdCk9PntsZXQgcj1lWzBdLmRpbXMsYT1yLGk9MixzPU4uc2l6ZVRvRGltZW5zaW9uKHIsaSksbz1OLnNpemVGcm9tRGltZW5zaW9uKHIsaSksYz1MZShvKSxwPW8vYyxtPVtyWzBdLHJbMV0scF0sbD1bXCJyYW5rXCIsXCJ0eXBlXCIsXCJ0eXBlXCJdLGc9W3t0eXBlOlwidWludDMyXCIsZGF0YTpvfSx7dHlwZTpcInVpbnQzMlwiLGRhdGE6cH1dO2cucHVzaCguLi5MKG0pLC4uLkwobSkpO2xldCBiPXc9PntsZXQgJD1XKFwieFwiLGVbMF0uZGF0YVR5cGUsbS5sZW5ndGgsYykseD1XKFwic2NhbGVcIixlWzFdLmRhdGFUeXBlLGVbMV0uZGltcyksVD1XKFwiYmlhc1wiLGVbMl0uZGF0YVR5cGUsZVsyXS5kaW1zKSxDPUooXCJvdXRwdXRcIixlWzBdLmRhdGFUeXBlLG0ubGVuZ3RoLGMpLFM9WyQseCxULENdLEU9JC50eXBlLnZhbHVlLE89Yz09PTE/XCJmMzJcIjpgdmVjJHtjfTxmMzI+YCxVPTY0LEQ9W3tuYW1lOlwibm9ybVNpemVcIix0eXBlOlwidTMyXCJ9LHtuYW1lOlwibm9ybVBhY2tlZFNpemVcIix0eXBlOlwidTMyXCJ9XTtyZXR1cm5gXG4gIHZhcjx3b3JrZ3JvdXA+IG1lYW5TaGFyZWQgOiBmMzI7XG4gIHZhcjx3b3JrZ3JvdXA+IHNxdWFyZWROb3JtU2hhcmVkIDogZjMyO1xuICB2YXI8d29ya2dyb3VwPiB3b3JrZ3JvdXBTaGFyZWQgOiBhcnJheTwke099LCAke1V9PjtcbiAgY29uc3Qgd29ya2dyb3VwU2l6ZSA9ICR7VX11O1xuICAke3cucmVnaXN0ZXJVbmlmb3JtcyhEKS5kZWNsYXJlVmFyaWFibGVzKC4uLlMpfVxuICAke3cubWFpblN0YXJ0KFUpfVxuICAgIGxldCBub3JtID0gZ2xvYmFsX2lkeCAvIHdvcmtncm91cFNpemU7XG4gICAgbGV0IGJhdGNoID0gbm9ybSAvIHVuaWZvcm1zLnhfc2hhcGVbMV07XG4gICAgbGV0IGNoYW5uZWwgPSBub3JtICUgdW5pZm9ybXMueF9zaGFwZVsxXTtcbiAgICBsZXQgbG9jYWxJbmRleCA9IGxvY2FsX2lkLng7XG5cbiAgICAvLyBpbml0aWFsaXplIHdvcmtncm91cCBtZW1vcnlcbiAgICB2YXIgaW5pdGlhbCA9ICR7T30oMCk7XG4gICAgZm9yICh2YXIgaCA9IGxvY2FsSW5kZXg7IGggPCB1bmlmb3Jtcy5ub3JtUGFja2VkU2l6ZTsgaCArPSB3b3JrZ3JvdXBTaXplKSB7XG4gICAgICBpbml0aWFsID0gaW5pdGlhbCArICR7T30oJHskLmdldChcImJhdGNoXCIsXCJjaGFubmVsXCIsXCJoXCIpfSk7XG4gICAgfVxuICAgIHdvcmtncm91cFNoYXJlZFtsb2NhbEluZGV4XSA9IGluaXRpYWw7XG4gICAgd29ya2dyb3VwQmFycmllcigpO1xuXG4gICAgLy8gQ2FsY3VsYXRlIHRoZSBtZWFuIG9mIGN1cnJlbnQgY2hhbm5lbCBkYXRhLlxuICAgIGZvciAodmFyIGN1cnJTaXplID0gd29ya2dyb3VwU2l6ZSA+PiAxOyAgY3VyclNpemUgPiAwOyBjdXJyU2l6ZSA9IGN1cnJTaXplID4+IDEpIHtcbiAgICAgIGlmIChsb2NhbEluZGV4IDwgY3VyclNpemUpIHtcbiAgICAgICAgd29ya2dyb3VwU2hhcmVkW2xvY2FsSW5kZXhdID0gd29ya2dyb3VwU2hhcmVkW2xvY2FsSW5kZXhdICsgd29ya2dyb3VwU2hhcmVkW2xvY2FsSW5kZXggKyBjdXJyU2l6ZV07XG4gICAgICB9XG4gICAgICB3b3JrZ3JvdXBCYXJyaWVyKCk7XG4gICAgfVxuICAgIGlmIChsb2NhbEluZGV4ID09IDApIHtcbiAgICAgIG1lYW5TaGFyZWQgPSAke2Z0KFwid29ya2dyb3VwU2hhcmVkWzBdXCIsYyl9IC8gZjMyKHVuaWZvcm1zLm5vcm1TaXplKTtcbiAgICB9XG4gICAgd29ya2dyb3VwQmFycmllcigpO1xuXG4gICAgLy8gcmVpbml0aWFsaXplIHdvcmtncm91cCBtZW1vcnkuXG4gICAgaW5pdGlhbCA9ICR7T30oMCk7XG4gICAgZm9yICh2YXIgaCA9IGxvY2FsSW5kZXg7IGggPCB1bmlmb3Jtcy5ub3JtUGFja2VkU2l6ZTsgaCArPSB3b3JrZ3JvdXBTaXplKSB7XG4gICAgICBsZXQgZGV2aWF0aW9uID0gICR7T30oJHskLmdldChcImJhdGNoXCIsXCJjaGFubmVsXCIsXCJoXCIpfSkgLSAke099KG1lYW5TaGFyZWQpO1xuICAgICAgaW5pdGlhbCA9IGluaXRpYWwgKyBkZXZpYXRpb24gKiBkZXZpYXRpb247XG4gICAgfVxuICAgIHdvcmtncm91cFNoYXJlZFtsb2NhbEluZGV4XSA9IGluaXRpYWw7XG4gICAgd29ya2dyb3VwQmFycmllcigpO1xuXG4gICAgLy8gQ2FsY3VsYXRlIHRoZSBzdW0gb2Ygc3F1YXJlIG9mIGRldmlhdGlvbiBvZiBjdXJyZW50IGNoYW5uZWwgZGF0YS5cbiAgICBmb3IgKHZhciBjdXJyU2l6ZSA9IHdvcmtncm91cFNpemUgPj4gMTsgIGN1cnJTaXplID4gMDsgY3VyclNpemUgPSBjdXJyU2l6ZSA+PiAxKSB7XG4gICAgICBpZiAobG9jYWxJbmRleCA8IGN1cnJTaXplKSB7XG4gICAgICAgIHdvcmtncm91cFNoYXJlZFtsb2NhbEluZGV4XSA9IHdvcmtncm91cFNoYXJlZFtsb2NhbEluZGV4XSArIHdvcmtncm91cFNoYXJlZFtsb2NhbEluZGV4ICsgY3VyclNpemVdO1xuICAgICAgfVxuICAgICAgd29ya2dyb3VwQmFycmllcigpO1xuICAgIH1cbiAgICBpZiAobG9jYWxJbmRleCA9PSAwKSB7XG4gICAgICBzcXVhcmVkTm9ybVNoYXJlZCA9ICR7ZnQoXCJ3b3JrZ3JvdXBTaGFyZWRbMF1cIixjKX07XG4gICAgfVxuICAgIHdvcmtncm91cEJhcnJpZXIoKTtcblxuICAgIGxldCBpbnZTdGREZXYgPSBpbnZlcnNlU3FydChzcXVhcmVkTm9ybVNoYXJlZCAvIGYzMih1bmlmb3Jtcy5ub3JtU2l6ZSkgKyBmMzIoJHt0LmVwc2lsb259KSk7XG4gICAgbGV0IGNoYW5uZWxTY2FsZSA9IGludlN0ZERldiAqIGYzMigke3guZ2V0QnlPZmZzZXQoXCJjaGFubmVsXCIpfSk7XG4gICAgbGV0IGNoYW5uZWxTaGlmdCA9IGYzMigke1QuZ2V0QnlPZmZzZXQoXCJjaGFubmVsXCIpfSkgLSBtZWFuU2hhcmVkICogY2hhbm5lbFNjYWxlO1xuICAgIGZvciAodmFyIGggPSBsb2NhbEluZGV4OyBoIDwgdW5pZm9ybXMubm9ybVBhY2tlZFNpemU7IGggKz0gd29ya2dyb3VwU2l6ZSkge1xuICAgICAgbGV0IHZhbHVlID0gJHskLmdldChcImJhdGNoXCIsXCJjaGFubmVsXCIsXCJoXCIpfSAqICR7RX0oJHtPfShjaGFubmVsU2NhbGUpKSArICR7RX0oJHtPfShjaGFubmVsU2hpZnQpKTtcbiAgICAgICR7Qy5zZXQoXCJiYXRjaFwiLFwiY2hhbm5lbFwiLFwiaFwiLFwidmFsdWVcIil9O1xuICAgIH1cbiAgfWB9O3JldHVybntuYW1lOlwiSW5zdGFuY2VOb3JtYWxpemF0aW9uXCIsc2hhZGVyQ2FjaGU6e2hpbnQ6YCR7dC5lcHNpbG9ufTske2N9YCxpbnB1dERlcGVuZGVuY2llczpsfSxnZXRSdW5EYXRhOigpPT4oe291dHB1dHM6W3tkaW1zOmEsZGF0YVR5cGU6ZVswXS5kYXRhVHlwZX1dLGRpc3BhdGNoR3JvdXA6e3g6c30scHJvZ3JhbVVuaWZvcm1zOmd9KSxnZXRTaGFkZXJTb3VyY2U6Yn19LEFwPShlLHQscixhLGkscyxvLGMpPT57bGV0IHA9TGUobyksbT02NCxsPXA9PT0xP1widmVjMmZcIjpgbWF0Mngke3B9ZmAsZz1wPT09MT9cImYzMlwiOmB2ZWMke3B9ZmAsYj0oRCxWKT0+YCR7bH0oJHtEfSwgJHtWfSlgLHc9aSpvL3AsJD1NYXRoLmNlaWwocy9tKSx4PVtcInR5cGVcIl0sVD1be3R5cGU6XCJ1aW50MzJcIixkYXRhOiR9LHt0eXBlOlwidWludDMyXCIsZGF0YTpzfSx7dHlwZTpcInVpbnQzMlwiLGRhdGE6TWF0aC5mbG9vcihvL3ApfSx7dHlwZTpcInVpbnQzMlwiLGRhdGE6TWF0aC5mbG9vcihzKm8vcCl9XSxDPUQ9PntsZXQgVj1XKFwiaW5wdXRcIix0LmRhdGFUeXBlLHQuZGltcyxwKTtyZXR1cm5gXG4gICR7RC5kZWNsYXJlVmFyaWFibGVzKFYpfVxuICBAZ3JvdXAoMCkgQGJpbmRpbmcoMSkgdmFyPHN0b3JhZ2UsIHJlYWRfd3JpdGU+IG91dHB1dCA6IGFycmF5PCR7bH0+O1xuICBzdHJ1Y3QgVW5pZm9ybXMge3dnX3NpemU6dTMyLCBIOnUzMiwgQzp1MzIsIGltYWdlX3NpemU6dTMyfTtcbiAgQGdyb3VwKDApIEBiaW5kaW5nKDIpIHZhcjx1bmlmb3JtPiB1bmlmb3JtczogVW5pZm9ybXM7XG5cbiAgJHtELm1haW5TdGFydChtKX1cbiAgICBsZXQgY3VycmVudEltYWdlTnVtYmVyID0gZ2xvYmFsX2lkeCAvICR7bX0gLyB1bmlmb3Jtcy5DO1xuICAgIGxldCBjdXJyZW50Q2hhbm5lbE51bWJlciA9IChnbG9iYWxfaWR4IC8gJHttfSkgJSB1bmlmb3Jtcy5DO1xuICAgIGxldCB3Z0lkID0gZ2xvYmFsX2lkeCAlICR7bX07XG4gICAgbGV0IHdnT2Zmc2V0ID0gd2dJZCAqIHVuaWZvcm1zLndnX3NpemU7XG4gICAgaWYgKHdnT2Zmc2V0ID49IHVuaWZvcm1zLkgpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgd2dNYXggPSBtaW4od2dPZmZzZXQgKyB1bmlmb3Jtcy53Z19zaXplLCB1bmlmb3Jtcy5IKTtcblxuICAgIGxldCBvZmZzZXQgPSBjdXJyZW50SW1hZ2VOdW1iZXIgKiB1bmlmb3Jtcy5pbWFnZV9zaXplICsgY3VycmVudENoYW5uZWxOdW1iZXI7XG4gICAgdmFyIHN1bSA9ICR7UWUoXCJmMzJcIixwKX07XG4gICAgdmFyIHNxdWFyZWRTdW0gPSAke1FlKFwiZjMyXCIscCl9O1xuICAgIGZvciAodmFyIGk6IHUzMiA9IHdnT2Zmc2V0OyBpIDwgd2dNYXg7IGkrKykge1xuICAgICAgICBsZXQgdmFsdWUgPSAke2d9KGlucHV0W29mZnNldCArIGkgKiB1bmlmb3Jtcy5DXSk7XG4gICAgICAgIHN1bSArPSB2YWx1ZTtcbiAgICAgICAgc3F1YXJlZFN1bSArPSB2YWx1ZSAqIHZhbHVlO1xuICAgIH1cbiAgICBvdXRwdXRbZ2xvYmFsX2lkeF0gPSAke2IoXCJzdW1cIixcInNxdWFyZWRTdW1cIil9O1xuICB9YH0sUz1lLmNvbXB1dGUoe25hbWU6XCJJbnN0YW5jZU5vcm1Db21wdXRlTWVhblwiLHNoYWRlckNhY2hlOntoaW50OmAke3B9YCxpbnB1dERlcGVuZGVuY2llczp4fSxnZXRSdW5EYXRhOigpPT4oe291dHB1dHM6W3tkaW1zOltpLG8sbSwyXSxkYXRhVHlwZToxfV0sZGlzcGF0Y2hHcm91cDp7eDppKm8vcH0scHJvZ3JhbVVuaWZvcm1zOlR9KSxnZXRTaGFkZXJTb3VyY2U6Q30se2lucHV0czpbdF0sb3V0cHV0czpbLTFdfSlbMF0sRT1be3R5cGU6XCJ1aW50MzJcIixkYXRhOnd9LHt0eXBlOlwidWludDMyXCIsZGF0YTpzfSx7dHlwZTpcInVpbnQzMlwiLGRhdGE6TWF0aC5mbG9vcihvL3ApfSx7dHlwZTpcInVpbnQzMlwiLGRhdGE6TWF0aC5mbG9vcihtKm8vcCl9XSxPPVtcInR5cGVcIixcInR5cGVcIixcInR5cGVcIl0sVT1EPT57bGV0IFY9VyhcInNjYWxlXCIsci5kYXRhVHlwZSxyLmRpbXMscCksWT1XKFwiYmlhc1wiLGEuZGF0YVR5cGUsYS5kaW1zLHApO3JldHVybmBcbiAgQGdyb3VwKDApIEBiaW5kaW5nKDApIHZhcjxzdG9yYWdlLCByZWFkPiBpbnB1dCA6IGFycmF5PCR7bH0+O1xuICBAZ3JvdXAoMCkgQGJpbmRpbmcoMSkgdmFyPHN0b3JhZ2UsIHJlYWQ+IHNjYWxlIDogYXJyYXk8JHtWLnR5cGUuc3RvcmFnZX0+O1xuICBAZ3JvdXAoMCkgQGJpbmRpbmcoMikgdmFyPHN0b3JhZ2UsIHJlYWQ+IGJpYXMgOiBhcnJheTwke1kudHlwZS5zdG9yYWdlfT47XG4gIEBncm91cCgwKSBAYmluZGluZygzKSB2YXI8c3RvcmFnZSwgcmVhZF93cml0ZT4gb3V0cHV0IDogYXJyYXk8JHtsfT47XG4gIHN0cnVjdCBVbmlmb3JtcyB7dW5pdHNfb2Zfd29yayA6IHUzMiwgSDogdTMyLCBDIDogdTMyLCBpbWFnZV9zaXplIDogdTMyfTtcbiAgQGdyb3VwKDApIEBiaW5kaW5nKDQpIHZhcjx1bmlmb3JtPiB1bmlmb3JtczogVW5pZm9ybXM7XG5cbiAgJHtELm1haW5TdGFydCgpfVxuICAgICR7RC5ndWFyZEFnYWluc3RPdXRPZkJvdW5kc1dvcmtncm91cFNpemVzKFwidW5pZm9ybXMudW5pdHNfb2Zfd29ya1wiKX1cbiAgICBsZXQgY3VycmVudEltYWdlTnVtYmVyID0gZ2xvYmFsX2lkeCAvIHVuaWZvcm1zLkM7XG4gICAgbGV0IGN1cnJlbnRDaGFubmVsTnVtYmVyID0gZ2xvYmFsX2lkeCAlIHVuaWZvcm1zLkM7XG5cbiAgICBsZXQgb2Zmc2V0ID0gY3VycmVudEltYWdlTnVtYmVyICogdW5pZm9ybXMuaW1hZ2Vfc2l6ZTtcbiAgICB2YXIgc3VtID0gJHtRZShcImYzMlwiLHApfTtcbiAgICB2YXIgc3F1YXJlZFN1bSA9ICR7UWUoXCJmMzJcIixwKX07XG4gICAgZm9yICh2YXIgaTogdTMyID0gMDsgaSA8ICR7bX07IGkrKykge1xuICAgICAgICBsZXQgdmFsdWUgPSBpbnB1dFtvZmZzZXQgKyBpICsgY3VycmVudENoYW5uZWxOdW1iZXIgKiAke219XTtcbiAgICAgICAgc3VtICs9IHZhbHVlWzBdO1xuICAgICAgICBzcXVhcmVkU3VtICs9IHZhbHVlWzFdO1xuICAgIH1cbiAgICBzdW0gPSBzdW0gLyBmMzIodW5pZm9ybXMuSCk7XG4gICAgc3F1YXJlZFN1bSA9IHNxdWFyZWRTdW0gLyBmMzIodW5pZm9ybXMuSCk7XG4gICAgbGV0IGludlN0ZERldiA9IGludmVyc2VTcXJ0KHNxdWFyZWRTdW0gLSBzdW0gKiBzdW0gKyBmMzIoJHtjfSkpO1xuICAgIGxldCBjaGFubmVsU2NhbGUgPSBpbnZTdGREZXYgKiAke2d9KHNjYWxlW2N1cnJlbnRDaGFubmVsTnVtYmVyXSk7XG4gICAgbGV0IGNoYW5uZWxTaGlmdCA9ICR7Z30oYmlhc1tjdXJyZW50Q2hhbm5lbE51bWJlcl0pIC0gc3VtICogY2hhbm5lbFNjYWxlO1xuXG4gICAgb3V0cHV0W2dsb2JhbF9pZHhdID0gJHtiKFwiY2hhbm5lbFNjYWxlXCIsXCJjaGFubmVsU2hpZnRcIil9O1xuICB9YH07cmV0dXJuIGUuY29tcHV0ZSh7bmFtZTpcIkluc3RhbmNlTm9ybUNvbXB1dGVDaGFubmVsU2NhbGVTaGlmdFwiLHNoYWRlckNhY2hlOntoaW50OmAke3B9OyR7Y31gLGlucHV0RGVwZW5kZW5jaWVzOk99LGdldFJ1bkRhdGE6KCk9Pih7b3V0cHV0czpbe2RpbXM6W2ksbywyXSxkYXRhVHlwZToxfV0sZGlzcGF0Y2hHcm91cDp7eDpNYXRoLmNlaWwody82NCl9LHByb2dyYW1Vbmlmb3JtczpFfSksZ2V0U2hhZGVyU291cmNlOlV9LHtpbnB1dHM6W1MscixhXSxvdXRwdXRzOlstMV19KVswXX0sVHA9KGUsdCxyKT0+e2xldCBhPXRbMF0uZGltcyxpPWEscz1hWzBdLG89YVthLmxlbmd0aC0xXSxjPU4uc2l6ZUZyb21EaW1lbnNpb24oYSwxKS9vLHA9TGUobyksbT1OLnNpemUoaSkvcCxsPVt7dHlwZTpcInVpbnQzMlwiLGRhdGE6Y30se3R5cGU6XCJ1aW50MzJcIixkYXRhOk1hdGguZmxvb3Ioby9wKX1dLGc9W1widHlwZVwiLFwidHlwZVwiXSxiPUFwKGUsdFswXSx0WzFdLHRbMl0scyxjLG8sci5lcHNpbG9uKSx3PSQ9PntsZXQgeD1IZSh0WzBdLmRhdGFUeXBlKSxUPXA9PT0xP1widmVjMmZcIjpgbWF0Mngke3B9ZmAsQz1wPT09MT94OmB2ZWMke3B9PCR7eH0+YCxTPVcoXCJpbnB1dFwiLHRbMF0uZGF0YVR5cGUsdFswXS5kaW1zLHApLEU9SihcIm91dHB1dFwiLHRbMF0uZGF0YVR5cGUsaSxwKTtyZXR1cm5gXG4gIEBncm91cCgwKSBAYmluZGluZygwKSB2YXI8c3RvcmFnZSwgcmVhZD4gaW5wdXQgOiBhcnJheTwke1MudHlwZS5zdG9yYWdlfT47XG4gIEBncm91cCgwKSBAYmluZGluZygxKSB2YXI8c3RvcmFnZSwgcmVhZD4gc2NhbGVJbnB1dCA6IGFycmF5PCR7VH0+O1xuICBAZ3JvdXAoMCkgQGJpbmRpbmcoMikgdmFyPHN0b3JhZ2UsIHJlYWRfd3JpdGU+IG91dHB1dCA6IGFycmF5PCR7RS50eXBlLnN0b3JhZ2V9PjtcbiAgc3RydWN0IFVuaWZvcm1zIHtIOiB1MzIsIEMgOiB1MzJ9O1xuICBAZ3JvdXAoMCkgQGJpbmRpbmcoMykgdmFyPHVuaWZvcm0+IHVuaWZvcm1zOiBVbmlmb3JtcztcblxuICAkeyQubWFpblN0YXJ0KCl9XG4gICAgbGV0IGN1cnJlbnRJbWFnZU51bWJlciA9IGdsb2JhbF9pZHggLyAodW5pZm9ybXMuQyAqIHVuaWZvcm1zLkgpO1xuICAgIGxldCBjdXJyZW50Q2hhbm5lbE51bWJlciA9IGdsb2JhbF9pZHggJSB1bmlmb3Jtcy5DO1xuXG4gICAgbGV0IHNjYWxlT2Zmc2V0ID0gY3VycmVudEltYWdlTnVtYmVyICogdW5pZm9ybXMuQyArIGN1cnJlbnRDaGFubmVsTnVtYmVyO1xuICAgIGxldCBzY2FsZSA9IHNjYWxlSW5wdXRbc2NhbGVPZmZzZXRdO1xuICAgIG91dHB1dFtnbG9iYWxfaWR4XSA9IGZtYShpbnB1dFtnbG9iYWxfaWR4XSwgJHtDfShzY2FsZVswXSksICR7Q30oc2NhbGVbMV0pKTtcbiAgfWB9O2UuY29tcHV0ZSh7bmFtZTpcIkluc3RhbmNlTm9ybWFsaXphdGlvbk5IV0NcIixzaGFkZXJDYWNoZTp7aGludDpgJHtwfWAsaW5wdXREZXBlbmRlbmNpZXM6Z30sZ2V0UnVuRGF0YTooKT0+KHtvdXRwdXRzOlt7ZGltczppLGRhdGFUeXBlOnRbMF0uZGF0YVR5cGV9XSxkaXNwYXRjaEdyb3VwOnt4Ok1hdGguY2VpbChtLzY0KX0scHJvZ3JhbVVuaWZvcm1zOmx9KSxnZXRTaGFkZXJTb3VyY2U6d30se2lucHV0czpbdFswXSxiXX0pfSxhbD0oZSx0KT0+e3QuZm9ybWF0PT09XCJOSFdDXCI/VHAoZSxlLmlucHV0cyx0KTplLmNvbXB1dGUoSXAoZS5pbnB1dHMsdCkpfX0pO3ZhciBFcCxPcCxvbCxzbD1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7emUoKTtDZSgpO19lKCk7RXA9ZT0+e2lmKCFlfHxlLmxlbmd0aDwyKXRocm93IG5ldyBFcnJvcihcImxheWVyTm9ybSByZXF1aXJlcyBhdCBsZWFzdCAyIGlucHV0cy5cIil9LE9wPShlLHQscik9PntsZXQgYT1lWzBdLmRpbXMsaT1lWzFdLHM9ZVsyXSxvPWEsYz1OLm5vcm1hbGl6ZUF4aXModC5heGlzLGEubGVuZ3RoKSxwPU4uc2l6ZVRvRGltZW5zaW9uKGEsYyksbT1OLnNpemVGcm9tRGltZW5zaW9uKGEsYyksbD1OLnNpemUoaS5kaW1zKSxnPXM/Ti5zaXplKHMuZGltcyk6MDtpZihsIT09bXx8cyYmZyE9PW0pdGhyb3cgbmV3IEVycm9yKGBTaXplIG9mIFguc2hhcGUoKVtheGlzOl0gPT0gJHttfS5cbiAgICAgICBTaXplIG9mIHNjYWxlIGFuZCBiaWFzIChpZiBwcm92aWRlZCkgbXVzdCBtYXRjaCB0aGlzLlxuICAgICAgIEdvdCBzY2FsZSBzaXplIG9mICR7bH0gYW5kIGJpYXMgc2l6ZSBvZiAke2d9YCk7bGV0IGI9W107Zm9yKGxldCBPPTA7TzxhLmxlbmd0aDsrK08pTzxjP2IucHVzaChhW09dKTpiLnB1c2goMSk7bGV0IHc9TGUobSksJD1bXCJ0eXBlXCIsXCJ0eXBlXCJdLHg9W3t0eXBlOlwidWludDMyXCIsZGF0YTpwfSx7dHlwZTpcImZsb2F0MzJcIixkYXRhOm19LHt0eXBlOlwidWludDMyXCIsZGF0YTpNYXRoLmZsb29yKG0vdyl9LHt0eXBlOlwiZmxvYXQzMlwiLGRhdGE6dC5lcHNpbG9ufV07cyYmJC5wdXNoKFwidHlwZVwiKTtsZXQgVD1yPjEsQz1yPjIsUz1PPT57bGV0IFU9SGUoZVswXS5kYXRhVHlwZSksRD1bVyhcInhcIixlWzBdLmRhdGFUeXBlLGVbMF0uZGltcyx3KSxXKFwic2NhbGVcIixpLmRhdGFUeXBlLGkuZGltcyx3KV07cyYmRC5wdXNoKFcoXCJiaWFzXCIscy5kYXRhVHlwZSxzLmRpbXMsdykpLEQucHVzaChKKFwib3V0cHV0XCIsZVswXS5kYXRhVHlwZSxvLHcpKSxUJiZELnB1c2goSihcIm1lYW5fZGF0YV9vdXRwdXRcIiwxLGIpKSxDJiZELnB1c2goSihcImludl9zdGRfb3V0cHV0XCIsMSxiKSk7bGV0IFY9W3tuYW1lOlwibm9ybV9jb3VudFwiLHR5cGU6XCJ1MzJcIn0se25hbWU6XCJub3JtX3NpemVcIix0eXBlOlwiZjMyXCJ9LHtuYW1lOlwibm9ybV9zaXplX3ZlY3Rvcml6ZWRcIix0eXBlOlwidTMyXCJ9LHtuYW1lOlwiZXBzaWxvblwiLHR5cGU6XCJmMzJcIn1dO3JldHVybmBcbiAgJHtPLnJlZ2lzdGVyVW5pZm9ybXMoVikuZGVjbGFyZVZhcmlhYmxlcyguLi5EKX1cbiAgJHtPLm1haW5TdGFydCgpfVxuICAgICR7Ty5ndWFyZEFnYWluc3RPdXRPZkJvdW5kc1dvcmtncm91cFNpemVzKFwidW5pZm9ybXMubm9ybV9jb3VudFwiKX1cbiAgICBsZXQgb2Zmc2V0ID0gZ2xvYmFsX2lkeCAqIHVuaWZvcm1zLm5vcm1fc2l6ZV92ZWN0b3JpemVkO1xuICAgIHZhciBtZWFuVmVjdG9yID0gJHtRZShcImYzMlwiLHcpfTtcbiAgICB2YXIgbWVhblNxdWFyZVZlY3RvciA9ICR7UWUoXCJmMzJcIix3KX07XG5cbiAgICBmb3IgKHZhciBoOiB1MzIgPSAwdTsgaCA8IHVuaWZvcm1zLm5vcm1fc2l6ZV92ZWN0b3JpemVkOyBoKyspIHtcbiAgICAgIGxldCB2YWx1ZSA9ICR7U3QoVSx3LFwieFtoICsgb2Zmc2V0XVwiKX07XG4gICAgICBtZWFuVmVjdG9yICs9IHZhbHVlO1xuICAgICAgbWVhblNxdWFyZVZlY3RvciArPSB2YWx1ZSAqIHZhbHVlO1xuICAgIH1cbiAgICBsZXQgbWVhbiA9ICR7ZnQoXCJtZWFuVmVjdG9yXCIsdyl9IC8gdW5pZm9ybXMubm9ybV9zaXplO1xuICAgIGxldCBpbnZTdGREZXYgPVxuICAgICAgICBpbnZlcnNlU3FydCgke2Z0KFwibWVhblNxdWFyZVZlY3RvclwiLHcpfSAvIHVuaWZvcm1zLm5vcm1fc2l6ZSAtIG1lYW4gKiBtZWFuICsgdW5pZm9ybXMuZXBzaWxvbik7XG5cbiAgICBmb3IgKHZhciBqOiB1MzIgPSAwOyBqIDwgdW5pZm9ybXMubm9ybV9zaXplX3ZlY3Rvcml6ZWQ7IGorKykge1xuICAgICAgbGV0IGYzMmlucHV0ID0gJHtTdChVLHcsXCJ4W2ogKyBvZmZzZXRdXCIpfTtcbiAgICAgIGxldCBmMzJzY2FsZSA9ICR7U3QoVSx3LFwic2NhbGVbal1cIil9O1xuICAgICAgb3V0cHV0W2ogKyBvZmZzZXRdID0gJHtEWzBdLnR5cGUudmFsdWV9KChmMzJpbnB1dCAtIG1lYW4pICogaW52U3RkRGV2ICogZjMyc2NhbGVcbiAgICAgICAgJHtzP2ArICR7U3QoVSx3LFwiYmlhc1tqXVwiKX1gOlwiXCJ9XG4gICAgICApO1xuICAgIH1cblxuICAgICR7VD9cIm1lYW5fZGF0YV9vdXRwdXRbZ2xvYmFsX2lkeF0gPSBtZWFuXCI6XCJcIn07XG4gICAgJHtDP1wiaW52X3N0ZF9vdXRwdXRbZ2xvYmFsX2lkeF0gPSBpbnZTdGREZXZcIjpcIlwifTtcbiAgfWB9LEU9W3tkaW1zOm8sZGF0YVR5cGU6ZVswXS5kYXRhVHlwZX1dO3JldHVybiBUJiZFLnB1c2goe2RpbXM6YixkYXRhVHlwZToxfSksQyYmRS5wdXNoKHtkaW1zOmIsZGF0YVR5cGU6MX0pLHtuYW1lOlwiTGF5ZXJOb3JtYWxpemF0aW9uXCIsc2hhZGVyQ2FjaGU6e2hpbnQ6YCR7d307JHtyfWAsaW5wdXREZXBlbmRlbmNpZXM6JH0sZ2V0UnVuRGF0YTooKT0+KHtvdXRwdXRzOkUsZGlzcGF0Y2hHcm91cDp7eDpNYXRoLmNlaWwocC82NCl9LHByb2dyYW1Vbmlmb3Jtczp4fSksZ2V0U2hhZGVyU291cmNlOlN9fSxvbD0oZSx0KT0+e0VwKGUuaW5wdXRzKSxlLmNvbXB1dGUoT3AoZS5pbnB1dHMsdCxlLm91dHB1dENvdW50KSl9fSk7dmFyIGtwLGxsLHVsLFBwLGRpLGRsLGNsPVEoKCk9PntcInVzZSBzdHJpY3RcIjtDZSgpO1hlKCk7Vm4oKTtaYSgpO19lKCk7JHIoKTtrcD0oZSx0KT0+e2xldCByPWVbMF0sYT1lWzFdLGk9ZVsyXSxzPWVbM10sbz1lWzRdLGM9ZVs1XSxwPWVbNl0sbT1lWzddO2lmKHIuZGltcy5sZW5ndGghPT0zJiZyLmRpbXMubGVuZ3RoIT09NSl0aHJvdyBuZXcgRXJyb3IoXCJJbnB1dCBxdWVyeSBpcyBleHBlY3RlZCB0byBoYXZlIDMgb3IgNSBkaW1lbnNpb25zXCIpO2xldCBsPSExLGc9ci5kaW1zWzBdLGI9ci5kaW1zWzFdLHc9ci5kaW1zLmxlbmd0aD09PTM/bD9yLmRpbXNbMl0vMzpyLmRpbXNbMl06dC5udW1IZWFkcypyLmRpbXNbNF0sJD1iLHg9MCxUPTAsQz1NYXRoLmZsb29yKHcvdC5udW1IZWFkcyk7aWYocCYmbSl7aWYocC5kaW1zLmxlbmd0aCE9PTQpdGhyb3cgbmV3IEVycm9yKCdJbnB1dCBcInBhc3Rfa2V5XCIgaXMgZXhwZWN0ZWQgdG8gaGF2ZSA0IGRpbWVuc2lvbnMnKTtpZihtLmRpbXMubGVuZ3RoIT09NCl0aHJvdyBuZXcgRXJyb3IoJ0lucHV0IFwicGFzdF92YWx1ZVwiIGlzIGV4cGVjdGVkIHRvIGhhdmUgNCBkaW1lbnNpb25zJyk7eD1wLmRpbXNbMl0sVD1wLmRpbXNbMl19ZWxzZSBpZihwfHxtKXRocm93IG5ldyBFcnJvcignSW5wdXQgXCJwYXN0X2tleVwiIGFuZCBcInBhc3RfdmFsdWVcIiBzaGFsbCBiZSBib3RoIHByZXNlbnQgb3IgYm90aCBhYnNlbnQnKTtsZXQgUztpZihhKXtpZihyLmRpbXMubGVuZ3RoIT09Myl0aHJvdyBuZXcgRXJyb3IoJ0lucHV0IFwicXVlcnlcIiBpcyBleHBlY3RlZCB0byBoYXZlIDMgZGltZW5zaW9ucyB3aGVuIGtleSBpcyBnaXZlbicpO2lmKGEuZGltcy5sZW5ndGg8M3x8YS5kaW1zLmxlbmd0aD41KXRocm93IG5ldyBFcnJvcignSW5wdXQgXCJrZXlcIiBpcyBleHBlY3RlZCB0byBoYXZlIDMsIDQsIG9yIDUgZGltZW5zaW9ucycpO2lmKHIuZGltc1swXSE9PWEuZGltc1swXSl0aHJvdyBuZXcgRXJyb3IoJ0lucHV0IFwicXVlcnlcIiBhbmQgXCJrZXlcIiBzaGFsbCBoYXZlIHNhbWUgZGltIDAgKGJhdGNoIHNpemUpJyk7aWYoYS5kaW1zLmxlbmd0aD09PTMpe2lmKGEuZGltc1syXSE9PXIuZGltc1syXSl0aHJvdyBuZXcgRXJyb3IoJ0lucHV0IFwicXVlcnlcIiBhbmQgXCJrZXlcIiBzaGFsbCBoYXZlIHNhbWUgZGltIDIgKGhpZGRlbl9zaXplKScpO1M9MiwkPWEuZGltc1sxXX1lbHNlIGlmKGEuZGltcy5sZW5ndGg9PT01KXtpZihhLmRpbXNbMl0hPT10Lm51bUhlYWRzfHxhLmRpbXNbM10hPT0yfHxhLmRpbXNbNF0hPT1DKXRocm93IG5ldyBFcnJvcignRXhwZWN0IFwia2V5XCIgc2hhcGUgKGJhdGNoX3NpemUsIGt2X3NlcXVlbmNlX2xlbmd0aCwgbnVtX2hlYWRzLCAyLCBoZWFkX3NpemUpIGZvciBwYWNrZWQga3YnKTtpZihpKXRocm93IG5ldyBFcnJvcignRXhwZWN0IFwidmFsdWVcIiBiZSBub25lIHdoZW4gXCJrZXlcIiBoYXMgcGFja2VkIGt2IGZvcm1hdC4nKTtTPTUsJD1hLmRpbXNbMV19ZWxzZXtpZihhLmRpbXNbMV0hPT10Lm51bUhlYWRzfHxhLmRpbXNbM10hPT1DKXRocm93IG5ldyBFcnJvcignRXhwZWN0IFwia2V5XCIgc2hhcGUgKGJhdGNoX3NpemUsIG51bV9oZWFkcywga3Zfc2VxdWVuY2VfbGVuZ3RoLCBoZWFkX3NpemUpIGZvciBwYXN0X2tleScpO1M9MCwkPWEuZGltc1syXX19ZWxzZXtpZihyLmRpbXMubGVuZ3RoIT09MyYmci5kaW1zLmxlbmd0aCE9PTUpdGhyb3cgbmV3IEVycm9yKCdJbnB1dCBcInF1ZXJ5XCIgaXMgZXhwZWN0ZWQgdG8gaGF2ZSAzIG9yIDUgZGltZW5zaW9ucyB3aGVuIGtleSBpcyBlbXB0eScpO2lmKHIuZGltcy5sZW5ndGg9PT01JiYoci5kaW1zWzJdIT09dC5udW1IZWFkc3x8ci5kaW1zWzNdIT09MykpdGhyb3cgbmV3IEVycm9yKCdFeHBlY3QgXCJxdWVyeVwiIHNoYXBlIChiYXRjaF9zaXplLCBrdl9zZXF1ZW5jZV9sZW5ndGgsIG51bV9oZWFkcywgMywgaGVhZF9zaXplKSBmb3IgcGFja2VkIGt2Jyk7Uz0zfWlmKHMpe2lmKHMuZGltcy5sZW5ndGghPT0xKXRocm93IG5ldyBFcnJvcignSW5wdXQgXCJiaWFzXCIgaXMgZXhwZWN0ZWQgdG8gaGF2ZSAxIGRpbWVuc2lvbicpO2lmKGkmJnIuZGltcy5sZW5ndGg9PT01JiZyLmRpbXNbM109PT0yKXRocm93IG5ldyBFcnJvcihcImJpYXMgaXMgbm90IGFsbG93ZWQgZm9yIHBhY2tlZCBrdi5cIil9bGV0IEU9MDtpZihvKXtFPTg7bGV0IFk9by5kaW1zO3Rocm93IFkubGVuZ3RoPT09MT9ZWzBdPT09Zz9FPTE6WVswXT09PTMqZysyJiYoRT0zKTpZLmxlbmd0aD09PTImJllbMF09PT1nJiZZWzFdPT09JCYmKEU9NSksRT09PTg/bmV3IEVycm9yKCdJbnB1dCBcImtleV9wYWRkaW5nX21hc2tcIiBzaGFwZSBzaGFsbCBiZSAoYmF0Y2hfc2l6ZSkgb3IgKGJhdGNoX3NpemUsIGt2X3NlcXVlbmNlX2xlbmd0aCknKTpuZXcgRXJyb3IoXCJNYXNrIG5vdCBzdXBwb3J0ZWRcIil9bGV0IE89ITEsVT13O2lmKGkpe2lmKGkuZGltcy5sZW5ndGghPT0zJiZpLmRpbXMubGVuZ3RoIT09NCl0aHJvdyBuZXcgRXJyb3IoJ0lucHV0IFwidmFsdWVcIiBpcyBleHBlY3RlZCB0byBoYXZlIDMgb3IgNCBkaW1lbnNpb25zJyk7aWYoci5kaW1zWzBdIT09aS5kaW1zWzBdKXRocm93IG5ldyBFcnJvcignSW5wdXQgXCJxdWVyeVwiIGFuZCBcInZhbHVlXCIgc2hhbGwgaGF2ZSBzYW1lIGRpbSAwIChiYXRjaF9zaXplKScpO2lmKGkuZGltcy5sZW5ndGg9PT0zKXtpZigkIT09aS5kaW1zWzFdKXRocm93IG5ldyBFcnJvcignSW5wdXQgXCJrZXlcIiBhbmQgXCJ2YWx1ZVwiIHNoYWxsIGhhdmUgdGhlIHNhbWUgZGltIDEgKGt2X3NlcXVlbmNlX2xlbmd0aCknKTtVPWkuZGltc1syXX1lbHNle2lmKCQhPT1pLmRpbXNbMl0pdGhyb3cgbmV3IEVycm9yKCdJbnB1dCBcInBhc3Rfa2V5XCIgYW5kIFwicGFzdF92YWx1ZVwiIHNoYWxsIGhhdmUgdGhlIHNhbWUgZGltIDIgKGt2X3NlcXVlbmNlX2xlbmd0aCknKTtVPWkuZGltc1sxXSppLmRpbXNbM10sTz0hMH19bGV0IEQ9eCskLFY9ITE7aWYobyl0aHJvdyBuZXcgRXJyb3IoXCJLZXkgcGFkZGluZyBtYXNrIGlzIG5vdCBzdXBwb3J0ZWRcIik7aWYoYyl0aHJvdyBuZXcgRXJyb3IoXCJleHRyYUFkZFFrIGlzIG5vdCBzdXBwb3J0ZWRcIik7aWYocCl0aHJvdyBuZXcgRXJyb3IoXCJwYXN0S2V5IGlzIG5vdCBzdXBwb3J0ZWRcIik7aWYobSl0aHJvdyBuZXcgRXJyb3IoXCJwYXN0VmFsdWUgaXMgbm90IHN1cHBvcnRlZFwiKTtyZXR1cm57YmF0Y2hTaXplOmcsc2VxdWVuY2VMZW5ndGg6YixwYXN0U2VxdWVuY2VMZW5ndGg6eCxrdlNlcXVlbmNlTGVuZ3RoOiQsdG90YWxTZXF1ZW5jZUxlbmd0aDpELG1heFNlcXVlbmNlTGVuZ3RoOlQsaW5wdXRIaWRkZW5TaXplOjAsaGlkZGVuU2l6ZTp3LHZIaWRkZW5TaXplOlUsaGVhZFNpemU6Qyx2SGVhZFNpemU6TWF0aC5mbG9vcihVL3QubnVtSGVhZHMpLG51bUhlYWRzOnQubnVtSGVhZHMsaXNVbmlkaXJlY3Rpb25hbDohMSxwYXN0UHJlc2VudFNoYXJlQnVmZmVyOiExLG1hc2tGaWx0ZXJWYWx1ZTp0Lm1hc2tGaWx0ZXJWYWx1ZSxtYXNrVHlwZTpFLHNjYWxlOnQuc2NhbGUsYnJvYWRjYXN0UmVzUG9zQmlhczpWLHBhc3NQYXN0SW5LdjpPLHFrdkZvcm1hdDpTfX0sbGw9ZT0+eGUoey4uLmV9KSx1bD14ZSh7cGVybTpbMCwyLDEsM119KSxQcD0oZSx0LHIsYSxpLHMsbyk9PntsZXQgYz1bYSxpLHNdLHA9Ti5zaXplKGMpLG09W3t0eXBlOlwidWludDMyXCIsZGF0YTpwfSx7dHlwZTpcInVpbnQzMlwiLGRhdGE6b30se3R5cGU6XCJ1aW50MzJcIixkYXRhOnN9XSxsPWc9PntsZXQgYj1KKFwicWt2X3dpdGhfYmlhc1wiLHQuZGF0YVR5cGUsYyksdz1XKFwicWt2XCIsdC5kYXRhVHlwZSxjKSwkPVcoXCJiaWFzXCIsci5kYXRhVHlwZSxjKSx4PVt7bmFtZTpcIm91dHB1dF9zaXplXCIsdHlwZTpcInUzMlwifSx7bmFtZTpcImJpYXNfb2Zmc2V0XCIsdHlwZTpcInUzMlwifSx7bmFtZTpcImhpZGRlbl9zaXplXCIsdHlwZTpcInUzMlwifV07cmV0dXJuYFxuICAke2cucmVnaXN0ZXJVbmlmb3Jtcyh4KS5kZWNsYXJlVmFyaWFibGVzKHcsJCxiKX1cbiAgJHtnLm1haW5TdGFydCgpfVxuICAgICR7Zy5ndWFyZEFnYWluc3RPdXRPZkJvdW5kc1dvcmtncm91cFNpemVzKFwidW5pZm9ybXMub3V0cHV0X3NpemVcIil9XG4gICAgbGV0IGJpYXNfb2Zmc2V0X2lkeCA9IChnbG9iYWxfaWR4ICUgdW5pZm9ybXMuaGlkZGVuX3NpemUpICsgdW5pZm9ybXMuYmlhc19vZmZzZXQ7XG5cbiAgICBxa3Zfd2l0aF9iaWFzW2dsb2JhbF9pZHhdID0gcWt2W2dsb2JhbF9pZHhdICsgYmlhc1tiaWFzX29mZnNldF9pZHhdO1xuICB9YH07cmV0dXJuIGUuY29tcHV0ZSh7bmFtZTpcIk11bHRpSGVhZEF0dGVudGlvbkFkZEJpYXNcIixzaGFkZXJDYWNoZTp7aW5wdXREZXBlbmRlbmNpZXM6W1widHlwZVwiLFwidHlwZVwiXX0sZ2V0UnVuRGF0YTooKT0+KHtvdXRwdXRzOlt7ZGltczpjLGRhdGFUeXBlOnQuZGF0YVR5cGUsZ3B1RGF0YVR5cGU6MH1dLGRpc3BhdGNoR3JvdXA6e3g6TWF0aC5jZWlsKHAvNjQpfSxwcm9ncmFtVW5pZm9ybXM6bX0pLGdldFNoYWRlclNvdXJjZTpsfSx7aW5wdXRzOlt0LHJdLG91dHB1dHM6Wy0xXX0pWzBdfSxkaT0oZSx0LHIsYSxpLHMsbyxjKT0+e2xldCBwPXM7aWYobyl7aWYoYT09PTEpdGhyb3cgbmV3IEVycm9yKFwiQWRkQmlhc1Jlc2hhcGUgaXMgbm90IGltcGxlbWVudGVkLiBQbGVhc2UgZXhwb3J0IHlvdXIgbW9kZWwgd2l0aCBwYWNrZWQgUUtWIG9yIEtWXCIpO3JldHVybiBwPVBwKGUscyxvLHQsYSxyKmksYykscD1wLnJlc2hhcGUoW3QsYSxyLGldKSxlLmNvbXB1dGUoeHQocCx1bC5wZXJtKSx7aW5wdXRzOltwXSxvdXRwdXRzOlstMV19KVswXX1lbHNlIHJldHVybiBzLmRpbXMubGVuZ3RoPT09MyYmKHA9cy5yZXNoYXBlKFt0LGEscixpXSkpLGUuY29tcHV0ZSh4dChwLHVsLnBlcm0pLHtpbnB1dHM6W3BdLG91dHB1dHM6Wy0xXX0pWzBdfSxkbD0oZSx0KT0+e2xldCByPWtwKGUuaW5wdXRzLHQpO2lmKGUuaW5wdXRzWzBdLmRpbXMubGVuZ3RoPT09NSl0aHJvdyBuZXcgRXJyb3IoXCJQYWNrZWQgUUtWIGlzIG5vdCBpbXBsZW1lbnRlZFwiKTtpZihlLmlucHV0c1sxXT8uZGltcy5sZW5ndGg9PT01KXRocm93IG5ldyBFcnJvcihcIlBhY2tlZCBLViBpcyBub3QgaW1wbGVtZW50ZWRcIik7bGV0IGE9ZS5pbnB1dHNbMV0mJmUuaW5wdXRzWzJdJiZlLmlucHV0c1sxXS5kaW1zLmxlbmd0aD09PTQmJmUuaW5wdXRzWzJdLmRpbXMubGVuZ3RoPT09NCxpPWRpKGUsci5iYXRjaFNpemUsci5udW1IZWFkcyxyLnNlcXVlbmNlTGVuZ3RoLHIuaGVhZFNpemUsZS5pbnB1dHNbMF0sZS5pbnB1dHNbM10sMCk7aWYoYSlyZXR1cm4gWW4oZSxpLGUuaW5wdXRzWzFdLGUuaW5wdXRzWzJdLGUuaW5wdXRzWzRdLHZvaWQgMCx2b2lkIDAsdm9pZCAwLGUuaW5wdXRzWzVdLHIsdCk7bGV0IHM9ZGkoZSxyLmJhdGNoU2l6ZSxyLm51bUhlYWRzLHIua3ZTZXF1ZW5jZUxlbmd0aCxyLmhlYWRTaXplLGUuaW5wdXRzWzFdLGUuaW5wdXRzWzNdLHIuaGlkZGVuU2l6ZSksbz1kaShlLHIuYmF0Y2hTaXplLHIubnVtSGVhZHMsci5rdlNlcXVlbmNlTGVuZ3RoLHIudkhlYWRTaXplLGUuaW5wdXRzWzJdLGUuaW5wdXRzWzNdLDIqci5oaWRkZW5TaXplKTtZbihlLGkscyxvLGUuaW5wdXRzWzRdLHZvaWQgMCxlLmlucHV0c1s2XSxlLmlucHV0c1s3XSxlLmlucHV0c1s1XSxyLHQpfX0pO3ZhciBScCxCcCxNcCxEcCx6cCxVcCxXcCxOcCxwbCxmbD1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7emUoKTtDZSgpO19lKCk7UnA9ZT0+e2lmKCFlfHxlLmxlbmd0aDwxKXRocm93IG5ldyBFcnJvcihcIlRvbyBmZXcgaW5wdXRzXCIpO2lmKGVbMF0uZGF0YVR5cGUhPT0xJiZlWzBdLmRhdGFUeXBlIT09MTApdGhyb3cgbmV3IEVycm9yKFwiSW5wdXQgdHlwZSBtdXN0IGJlIGZsb2F0IG9yIGZsb2F0MTYuXCIpO2lmKGUubGVuZ3RoPj0yKXtsZXQgdD1lWzBdLmRpbXMubGVuZ3RoKjI9PT1lWzFdLmRpbXNbMF07aWYoZS5sZW5ndGg9PT00JiYodD1lWzNdLmRpbXNbMF0qMj09PWVbMV0uZGltc1swXSksIXQpdGhyb3cgbmV3IEVycm9yKFwiVGhlIHBhZHMgc2hvdWxkIGJlIGEgMUQgdGVuc29yIG9mIHNoYXBlIFsyICogaW5wdXRfcmFua10gb3IgWzIgKiBudW1fYXhlc10uXCIpfX0sQnA9KGUsdCxyKT0+e2xldCBhPVwiXCI7Zm9yKGxldCBpPXQtMTtpPj0wOy0taSlhKz1gXG4gICAgICAgICAgICBrID0gaTMyKCR7ZS5pbmRpY2VzR2V0KFwiaW5kaWNlc1wiLGkpfSkgLSAke2NlKFwidW5pZm9ybXMucGFkc1wiLGkscil9O1xuICAgICAgICAgICAgaWYgKGsgPCAwKSB7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGsgPj0gaTMyKCR7Y2UoXCJ1bmlmb3Jtcy54X3NoYXBlXCIsaSx0KX0pKSB7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb2Zmc2V0ICs9IGsgKiBpMzIoJHtjZShcInVuaWZvcm1zLnhfc3RyaWRlc1wiLGksdCl9KTtcbiAgICAgICAgYDtyZXR1cm5gXG4gICAgICAgICAgdmFsdWUgPSAke2UudHlwZS52YWx1ZX0odW5pZm9ybXMuY29uc3RhbnRfdmFsdWUpO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgb2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIHZhciBrID0gMDtcbiAgICAgICAgICAgICR7YX1cbiAgICAgICAgICAgIHZhbHVlID0geFtvZmZzZXRdO1xuICAgICAgICAgIH1cbiAgICAgIGB9LE1wPShlLHQscik9PntsZXQgYT1cIlwiO2ZvcihsZXQgaT10LTE7aT49MDstLWkpYSs9YFxuICAgICAgICAgICAgICAgIGsgPSBpMzIoJHtlLmluZGljZXNHZXQoXCJpbmRpY2VzXCIsaSl9KSAtICR7Y2UoXCJ1bmlmb3Jtcy5wYWRzXCIsaSxyKX07XG4gICAgICAgICAgICAgICAgaWYgKGsgPCAwKSB7XG4gICAgICAgICAgICAgICAgICBrID0gLWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGxldCBfMm5fMSA9IDIgKiAoaTMyKCR7Y2UoXCJ1bmlmb3Jtcy54X3NoYXBlXCIsaSx0KX0pIC0gMSk7XG4gICAgICAgICAgICAgICAgICBrID0gayAlIF8ybl8xO1xuICAgICAgICAgICAgICAgICAgaWYoayA+PSBpMzIoJHtjZShcInVuaWZvcm1zLnhfc2hhcGVcIixpLHQpfSkpIHtcbiAgICAgICAgICAgICAgICAgICAgayA9IF8ybl8xIC0gaztcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb2Zmc2V0ICs9IGsgKiBpMzIoJHtjZShcInVuaWZvcm1zLnhfc3RyaWRlc1wiLGksdCl9KTtcbiAgICAgICAgICAgIGA7cmV0dXJuYFxuICAgICAgICAgICAgICB2YXIgb2Zmc2V0ID0gMDtcbiAgICAgICAgICAgICAgdmFyIGsgPSAwO1xuICAgICAgICAgICAgICAke2F9XG4gICAgICAgICAgICAgIHZhbHVlID0geFtvZmZzZXRdO1xuICAgICAgICAgIGB9LERwPShlLHQscik9PntsZXQgYT1cIlwiO2ZvcihsZXQgaT10LTE7aT49MDstLWkpYSs9YFxuICAgICAgICAgICAgICAgIGsgPSBpMzIoJHtlLmluZGljZXNHZXQoXCJpbmRpY2VzXCIsaSl9KSAtICR7Y2UoXCJ1bmlmb3Jtcy5wYWRzXCIsaSxyKX07XG4gICAgICAgICAgICAgICAgaWYgKGsgPCAwKSB7XG4gICAgICAgICAgICAgICAgICBrID0gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGsgPj0gaTMyKCR7Y2UoXCJ1bmlmb3Jtcy54X3NoYXBlXCIsaSx0KX0pKSB7XG4gICAgICAgICAgICAgICAgICBrID0gaTMyKCR7Y2UoXCJ1bmlmb3Jtcy54X3NoYXBlXCIsaSx0KX0pIC0gMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb2Zmc2V0ICs9IGsgKiBpMzIoJHtjZShcInVuaWZvcm1zLnhfc3RyaWRlc1wiLGksdCl9KTtcbiAgICAgICAgICAgIGA7cmV0dXJuYFxuICAgICAgICAgICAgICB2YXIgb2Zmc2V0ID0gMDtcbiAgICAgICAgICAgICAgdmFyIGsgPSAwO1xuICAgICAgICAgICAgICAke2F9XG4gICAgICAgICAgICAgIHZhbHVlID0geFtvZmZzZXRdO1xuICAgICAgICAgIGB9LHpwPShlLHQscik9PntsZXQgYT1cIlwiO2ZvcihsZXQgaT10LTE7aT49MDstLWkpYSs9YFxuICAgICAgICAgICAgICAgIGsgPSBpMzIoJHtlLmluZGljZXNHZXQoXCJpbmRpY2VzXCIsaSl9KSAtICR7Y2UoXCJ1bmlmb3Jtcy5wYWRzXCIsaSxyKX07XG4gICAgICAgICAgICAgICAgaWYgKGsgPCAwKSAge1xuICAgICAgICAgICAgICAgICAgayArPSBpMzIoJHtjZShcInVuaWZvcm1zLnhfc2hhcGVcIixpLHQpfV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoayA+PSBpMzIoJHtjZShcInVuaWZvcm1zLnhfc2hhcGVcIixpLHQpfSkpIHtcbiAgICAgICAgICAgICAgICAgIGsgLT0gaTMyKCR7Y2UoXCJ1bmlmb3Jtcy54X3NoYXBlXCIsaSx0KX0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvZmZzZXQgKz0gayAqIGkzMigke2NlKFwidW5pZm9ybXMueF9zdHJpZGVzXCIsaSx0KX0pO1xuICAgICAgICAgICAgYDtyZXR1cm5gXG4gICAgICAgICAgICAgIHZhciBvZmZzZXQgPSAwO1xuICAgICAgICAgICAgICB2YXIgayA9IDA7XG4gICAgICAgICAgICAgICR7YX1cbiAgICAgICAgICAgICAgdmFsdWUgPSB4W29mZnNldF07XG4gICAgICAgICAgYH0sVXA9KGUsdCxyKT0+e3N3aXRjaChyLm1vZGUpe2Nhc2UgMDpyZXR1cm4gQnAoZSx0LHIucGFkcy5sZW5ndGgpO2Nhc2UgMTpyZXR1cm4gTXAoZSx0LHIucGFkcy5sZW5ndGgpO2Nhc2UgMjpyZXR1cm4gRHAoZSx0LHIucGFkcy5sZW5ndGgpO2Nhc2UgMzpyZXR1cm4genAoZSx0LHIucGFkcy5sZW5ndGgpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBtb2RlXCIpfX0sV3A9KGUsdCk9PntsZXQgcj1OLnBhZFNoYXBlKGVbMF0uZGltcy5zbGljZSgpLHQucGFkcyksYT1lWzBdLmRpbXMscz1be3R5cGU6XCJ1aW50MzJcIixkYXRhOk4uc2l6ZShyKX0se3R5cGU6XCJ1aW50MzJcIixkYXRhOnQucGFkc31dO2lmKHQubW9kZT09PTApe2xldCBwPXB0KGVbMF0uZGF0YVR5cGUpO3MucHVzaCh7dHlwZTpwLGRhdGE6dC52YWx1ZX0pfXMucHVzaCguLi5MKGVbMF0uZGltcyksLi4uTChyKSk7bGV0IG89W1wicmFua1wiXSxjPXA9PntsZXQgbT1KKFwib3V0cHV0XCIsZVswXS5kYXRhVHlwZSxyLmxlbmd0aCksbD1XKFwieFwiLGVbMF0uZGF0YVR5cGUsYS5sZW5ndGgpLGc9bC50eXBlLnZhbHVlLGI9VXAobSxhLmxlbmd0aCx0KSx3PVt7bmFtZTpcIm91dHB1dF9zaXplXCIsdHlwZTpcInUzMlwifSx7bmFtZTpcInBhZHNcIix0eXBlOlwiaTMyXCIsbGVuZ3RoOnQucGFkcy5sZW5ndGh9XTtyZXR1cm4gdC5tb2RlPT09MCYmdy5wdXNoKHtuYW1lOlwiY29uc3RhbnRfdmFsdWVcIix0eXBlOmd9KSxgXG4gICAgICAgICAgICAke3AucmVnaXN0ZXJVbmlmb3Jtcyh3KS5kZWNsYXJlVmFyaWFibGVzKGwsbSl9XG4gICAgICAgICAgICAke3AubWFpblN0YXJ0KCl9XG4gICAgICAgICAgICAke3AuZ3VhcmRBZ2FpbnN0T3V0T2ZCb3VuZHNXb3JrZ3JvdXBTaXplcyhcInVuaWZvcm1zLm91dHB1dF9zaXplXCIpfVxuXG4gICAgICAgICAgICBsZXQgaW5kaWNlcyA9ICR7bS5vZmZzZXRUb0luZGljZXMoXCJnbG9iYWxfaWR4XCIpfTtcblxuICAgICAgICAgICAgdmFyIHZhbHVlID0gJHtnfSgwKTtcbiAgICAgICAgICAgICR7Yn1cbiAgICAgICAgICAgIG91dHB1dFtnbG9iYWxfaWR4XSA9IHZhbHVlO1xuICAgICAgICB9YH07cmV0dXJue25hbWU6XCJQYWRcIixzaGFkZXJDYWNoZTp7aGludDpgJHt0Lm1vZGV9YCxpbnB1dERlcGVuZGVuY2llczpvfSxnZXRSdW5EYXRhOigpPT4oe291dHB1dHM6W3tkaW1zOnIsZGF0YVR5cGU6ZVswXS5kYXRhVHlwZX1dLGRpc3BhdGNoR3JvdXA6e3g6TWF0aC5jZWlsKE4uc2l6ZShyKS82NCl9LHByb2dyYW1Vbmlmb3JtczpzfSksZ2V0U2hhZGVyU291cmNlOmN9fSxOcD0oZSx0KT0+e2lmKGUubGVuZ3RoPjEpe2xldCByPWVbMV0uZ2V0QmlnSW50NjRBcnJheSgpLGE9ZS5sZW5ndGg+PTMmJmVbMl0uZGF0YT9lWzJdLmdldEZsb2F0MzJBcnJheSgpWzBdOjAsaT1lWzBdLmRpbXMubGVuZ3RoLHM9bmV3IEludDMyQXJyYXkoMippKS5maWxsKDApO2lmKGUubGVuZ3RoPj00KXtsZXQgYz1lWzNdLmdldEJpZ0ludDY0QXJyYXkoKTtmb3IobGV0IHA9MDtwPGMubGVuZ3RoO3ArKylzW051bWJlcihjW3BdKV09TnVtYmVyKHJbcF0pLHNbTnVtYmVyKGNbcF0pK2ldPU51bWJlcihyW3ArYy5sZW5ndGhdKX1lbHNlIHIuZm9yRWFjaCgoYyxwKT0+c1tOdW1iZXIocCldPU51bWJlcihjKSk7bGV0IG89W107cmV0dXJuIHMuZm9yRWFjaChjPT5vLnB1c2goYykpLHttb2RlOnQubW9kZSx2YWx1ZTphLHBhZHM6b319ZWxzZSByZXR1cm4gdH0scGw9KGUsdCk9PntScChlLmlucHV0cyk7bGV0IHI9TnAoZS5pbnB1dHMsdCk7ZS5jb21wdXRlKFdwKGUuaW5wdXRzLHIpLHtpbnB1dHM6WzBdfSl9fSk7dmFyIGFhLG1sLGhsLGdsLHlsLFZwLEhwLGJsLHZsLHdsLCRsLF9sLFNsLHhsLENsLElsLEFsLFRsLEVsLE9sPVEoKCk9PntcInVzZSBzdHJpY3RcIjtidCgpO0NlKCk7X2UoKTthYT1lPT57aWYoQWUud2ViZ3B1LnZhbGlkYXRlSW5wdXRDb250ZW50JiYoIWV8fGUubGVuZ3RoIT09MSkpdGhyb3cgbmV3IEVycm9yKFwiUG9vbCBvcHMgcmVxdWlyZXMgMSBpbnB1dC5cIil9LG1sPShlLHQscik9PntsZXQgYT10LmZvcm1hdD09PVwiTkhXQ1wiLGk9ZS5kaW1zLnNsaWNlKCk7YSYmaS5zcGxpY2UoMSwwLGkucG9wKCkpO2xldCBzPU9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsXCJkaWxhdGlvbnNcIiksbz10Lmtlcm5lbFNoYXBlLnNsaWNlKCksYz10LnN0cmlkZXMuc2xpY2UoKSxwPXM/dC5kaWxhdGlvbnMuc2xpY2UoKTpbXSxtPXQucGFkcy5zbGljZSgpO29yLmFkanVzdFBvb2xBdHRyaWJ1dGVzKHIsaSxvLGMscCxtKTtsZXQgbD1vci5jb21wdXRlUG9vbE91dHB1dFNoYXBlKHIsaSxjLHAsbyxtLHQuYXV0b1BhZCksZz1PYmplY3QuYXNzaWduKHt9LHQpO3M/T2JqZWN0LmFzc2lnbihnLHtrZXJuZWxTaGFwZTpvLHN0cmlkZXM6YyxwYWRzOm0sZGlsYXRpb25zOnAsY2FjaGVLZXk6dC5jYWNoZUtleX0pOk9iamVjdC5hc3NpZ24oZyx7a2VybmVsU2hhcGU6byxzdHJpZGVzOmMscGFkczptLGNhY2hlS2V5OnQuY2FjaGVLZXl9KTtsZXQgYj1sLnNsaWNlKCk7cmV0dXJuIGIucHVzaChiLnNwbGljZSgxLDEpWzBdKSxbZyxhP2I6bF19LGhsPShlLHQpPT57bGV0IHI9dC5mb3JtYXQ9PT1cIk5IV0NcIixhPU4uc2l6ZShlKSxpPU4uc2l6ZSh0Lmtlcm5lbFNoYXBlKSxzPVt7dHlwZTpcInVpbnQzMlwiLGRhdGE6YX0se3R5cGU6XCJ1aW50MzJcIixkYXRhOml9XSxvPVt7bmFtZTpcIm91dHB1dFNpemVcIix0eXBlOlwidTMyXCJ9LHtuYW1lOlwia2VybmVsU2l6ZVwiLHR5cGU6XCJ1MzJcIn1dO2lmKHQua2VybmVsU2hhcGUubGVuZ3RoPD0yKXtsZXQgYz10Lmtlcm5lbFNoYXBlW3Qua2VybmVsU2hhcGUubGVuZ3RoLTFdLHA9dC5zdHJpZGVzW3Quc3RyaWRlcy5sZW5ndGgtMV0sbT10LnBhZHNbdC5wYWRzLmxlbmd0aC8yLTFdLGw9dC5wYWRzW3QucGFkcy5sZW5ndGgtMV0sZz0hIShtK2wpO3MucHVzaCh7dHlwZTpcInVpbnQzMlwiLGRhdGE6Y30se3R5cGU6XCJ1aW50MzJcIixkYXRhOnB9LHt0eXBlOlwidWludDMyXCIsZGF0YTptfSx7dHlwZTpcInVpbnQzMlwiLGRhdGE6bH0pLG8ucHVzaCh7bmFtZTpcImt3XCIsdHlwZTpcInUzMlwifSx7bmFtZTpcInN3XCIsdHlwZTpcInUzMlwifSx7bmFtZTpcInB3U3RhcnRcIix0eXBlOlwidTMyXCJ9LHtuYW1lOlwicHdFbmRcIix0eXBlOlwidTMyXCJ9KTtsZXQgYj0hMTtpZih0Lmtlcm5lbFNoYXBlLmxlbmd0aD09PTIpe2xldCB3PXQua2VybmVsU2hhcGVbdC5rZXJuZWxTaGFwZS5sZW5ndGgtMl0sJD10LnN0cmlkZXNbdC5zdHJpZGVzLmxlbmd0aC0yXSx4PXQucGFkc1t0LnBhZHMubGVuZ3RoLzItMl0sVD10LnBhZHNbdC5wYWRzLmxlbmd0aC0yXTtiPSEhKHgrVCkscy5wdXNoKHt0eXBlOlwidWludDMyXCIsZGF0YTp3fSx7dHlwZTpcInVpbnQzMlwiLGRhdGE6JH0se3R5cGU6XCJ1aW50MzJcIixkYXRhOnh9LHt0eXBlOlwidWludDMyXCIsZGF0YTpUfSksby5wdXNoKHtuYW1lOlwia2hcIix0eXBlOlwidTMyXCJ9LHtuYW1lOlwic2hcIix0eXBlOlwidTMyXCJ9LHtuYW1lOlwicGhTdGFydFwiLHR5cGU6XCJ1MzJcIn0se25hbWU6XCJwaEVuZFwiLHR5cGU6XCJ1MzJcIn0pfXJldHVybltzLG8sITAsZyxiXX1lbHNle2lmKHIpdGhyb3cgbmV3IEVycm9yKFwiUG9vbGluZyB3aXRoIGtlcm5lbFNoYXBlLmxlbmd0aCA+IDIgaXMgbm90IHN1cHBvcnRlZCBmb3IgTkhXQyBmb3JtYXQuXCIpO2xldCBjPU4uY29tcHV0ZVN0cmlkZXModC5rZXJuZWxTaGFwZSk7cy5wdXNoKHt0eXBlOlwidWludDMyXCIsZGF0YTpjfSx7dHlwZTpcInVpbnQzMlwiLGRhdGE6dC5wYWRzfSx7dHlwZTpcInVpbnQzMlwiLGRhdGE6dC5zdHJpZGVzfSksby5wdXNoKHtuYW1lOlwia2VybmVsU3RyaWRlc1wiLHR5cGU6XCJ1MzJcIixsZW5ndGg6Yy5sZW5ndGh9LHtuYW1lOlwicGFkc1wiLHR5cGU6XCJ1MzJcIixsZW5ndGg6dC5wYWRzLmxlbmd0aH0se25hbWU6XCJzdHJpZGVzXCIsdHlwZTpcInUzMlwiLGxlbmd0aDp0LnN0cmlkZXMubGVuZ3RofSk7bGV0IHA9dC5wYWRzLnJlZHVjZSgobSxsKT0+bStsKTtyZXR1cm5bcyxvLCEhcCwhMSwhMV19fSxnbD0oZSx0LHIsYSxpLHMsbyxjLHAsbSxsLGcpPT57bGV0IGI9aS5mb3JtYXQ9PT1cIk5IV0NcIix3PXQudHlwZS52YWx1ZSwkPUooXCJvdXRwdXRcIix0LnR5cGUudGVuc29yLGEpO2lmKGkua2VybmVsU2hhcGUubGVuZ3RoPD0yKXtsZXQgeD1cIlwiLFQ9XCJcIixDPVwiXCIsUz1yLShiPzI6MSk7aWYobD94PWBcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpOiB1MzIgPSAwdTsgaSA8IHVuaWZvcm1zLmt3OyBpKyspIHtcbiAgICAgICAgICAgICAgICAgIHhJbmRpY2VzWyR7U31dID0gaW5kaWNlc1ske1N9XSAqIHVuaWZvcm1zLnN3IC0gdW5pZm9ybXMucHdTdGFydCArIGk7XG4gICAgICAgICAgICAgICAgICBpZiAoeEluZGljZXNbJHtTfV0gPCAwIHx8IHhJbmRpY2VzWyR7U31dXG4gICAgICAgICAgICAgICAgICAgICAgPj0gdW5pZm9ybXMueF9zaGFwZVske1N9XSkge1xuICAgICAgICAgICAgICAgICAgICBwYWQrKztcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBsZXQgeF92YWwgPSB4WyR7dC5pbmRpY2VzVG9PZmZzZXQoXCJ4SW5kaWNlc1wiKX1dO1xuICAgICAgICAgICAgICAgICAgJHtzfVxuICAgICAgICAgICAgICAgIH1gOng9YFxuICAgICAgICAgICAgICAgIGZvciAodmFyIGk6IHUzMiA9IDB1OyBpIDwgdW5pZm9ybXMua3c7IGkrKykge1xuICAgICAgICAgICAgICAgICAgeEluZGljZXNbJHtTfV0gPSBpbmRpY2VzWyR7U31dICogdW5pZm9ybXMuc3cgLSB1bmlmb3Jtcy5wd1N0YXJ0ICsgaTtcbiAgICAgICAgICAgICAgICAgIGxldCB4X3ZhbCA9IHhbJHt0LmluZGljZXNUb09mZnNldChcInhJbmRpY2VzXCIpfV07XG4gICAgICAgICAgICAgICAgICAke3N9XG4gICAgICAgICAgICAgICAgfWAsaS5rZXJuZWxTaGFwZS5sZW5ndGg9PT0yKXtsZXQgTz1yLShiPzM6Mik7Zz9UPWBcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBqOiB1MzIgPSAwdTsgaiA8IHVuaWZvcm1zLmtoOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgIHhJbmRpY2VzWyR7T31dID0gaW5kaWNlc1ske099XSAqIHVuaWZvcm1zLnNoIC0gdW5pZm9ybXMucGhTdGFydCArIGo7XG4gICAgICAgICAgICAgICAgICBpZiAoeEluZGljZXNbJHtPfV0gPCAwIHx8IHhJbmRpY2VzWyR7T31dID49IHVuaWZvcm1zLnhfc2hhcGVbJHtPfV0pIHtcbiAgICAgICAgICAgICAgICAgICAgcGFkICs9IGkzMih1bmlmb3Jtcy5rdyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBgOlQ9YFxuICAgICAgICAgICAgICAgIGZvciAodmFyIGo6IHUzMiA9IDB1OyBqIDwgdW5pZm9ybXMua2g7IGorKykge1xuICAgICAgICAgICAgICAgICAgeEluZGljZXNbJHtPfV0gPSBpbmRpY2VzWyR7T31dICogdW5pZm9ybXMuc2ggLSB1bmlmb3Jtcy5waFN0YXJ0ICsgajtcbiAgICAgICAgICAgICAgICBgLEM9YFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBgfXJldHVybmBcbiAgICAgICAgICAgICR7ZS5yZWdpc3RlclVuaWZvcm1zKHApLmRlY2xhcmVWYXJpYWJsZXModCwkKX1cblxuICAgICAgICAgICAgJHtlLm1haW5TdGFydCgpfVxuICAgICAgICAgICAgICAke2UuZ3VhcmRBZ2FpbnN0T3V0T2ZCb3VuZHNXb3JrZ3JvdXBTaXplcyhcInVuaWZvcm1zLm91dHB1dFNpemVcIil9XG5cbiAgICAgICAgICAgICAgbGV0IGluZGljZXMgPSAkeyQub2Zmc2V0VG9JbmRpY2VzKFwiZ2xvYmFsX2lkeFwiKX07XG4gICAgICAgICAgICAgIHZhciB4SW5kaWNlcyA9ICR7JC5vZmZzZXRUb0luZGljZXMoXCJnbG9iYWxfaWR4XCIpfTtcblxuICAgICAgICAgICAgICB2YXIgdmFsdWUgPSAke3d9KCR7Y30pO1xuICAgICAgICAgICAgICB2YXIgcGFkID0gMDtcbiAgICAgICAgICAgICAgJHtUfVxuICAgICAgICAgICAgICAke3h9XG4gICAgICAgICAgICAgICR7Q31cbiAgICAgICAgICAgICAgJHtvfVxuXG4gICAgICAgICAgICAgIG91dHB1dFtnbG9iYWxfaWR4XSA9IHZhbHVlO1xuICAgICAgICAgICAgfWB9ZWxzZXtpZihiKXRocm93IG5ldyBFcnJvcihcIlBvb2xpbmcgd2l0aCBrZXJuZWxTaGFwZS5sZW5ndGggPiAyIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIE5IV0MgZm9ybWF0LlwiKTtsZXQgeD1pLmtlcm5lbFNoYXBlLmxlbmd0aCxUPWkucGFkcy5sZW5ndGgsQz1cIlwiO3JldHVybiBtP0M9YFxuICAgICAgICAgICAgICAgIGlmICh4SW5kaWNlc1tqXSA+PSB1bmlmb3Jtcy54X3NoYXBlW2pdKSB7XG4gICAgICAgICAgICAgICAgICBwYWQrKztcbiAgICAgICAgICAgICAgICAgIGlzUGFkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoIWlzUGFkKSB7XG4gICAgICAgICAgICAgICAgbGV0IHhfdmFsID0geFske3QuaW5kaWNlc1RvT2Zmc2V0KFwieEluZGljZXNcIil9XTtcbiAgICAgICAgICAgICAgICAke3N9XG4gICAgICAgICAgICAgIH1gOkM9YFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGxldCB4X3ZhbCA9IHhbJHt0LmluZGljZXNUb09mZnNldChcInhJbmRpY2VzXCIpfV07XG4gICAgICAgICAgICAgICR7c31cbiAgICAgICAgICAgIGAsYFxuICAgICAgICAgICAgJHtlLnJlZ2lzdGVyVW5pZm9ybXMocCkuZGVjbGFyZVZhcmlhYmxlcyh0LCQpfVxuXG4gICAgICAgICAgICAke2UubWFpblN0YXJ0KCl9XG4gICAgICAgICAgICAgICR7ZS5ndWFyZEFnYWluc3RPdXRPZkJvdW5kc1dvcmtncm91cFNpemVzKFwidW5pZm9ybXMub3V0cHV0U2l6ZVwiKX1cbiAgICAgICAgICAgICAgbGV0IGluZGljZXMgPSAkeyQub2Zmc2V0VG9JbmRpY2VzKFwiZ2xvYmFsX2lkeFwiKX07XG4gICAgICAgICAgICAgIHZhciB4SW5kaWNlcyA9ICR7JC5vZmZzZXRUb0luZGljZXMoXCJnbG9iYWxfaWR4XCIpfTtcblxuICAgICAgICAgICAgICB2YXIgb2Zmc2V0czogYXJyYXk8dTMyLCAke3h9PjtcblxuICAgICAgICAgICAgICB2YXIgdmFsdWUgPSAke3d9KCR7Y30pO1xuICAgICAgICAgICAgICB2YXIgcGFkID0gMDtcbiAgICAgICAgICAgICAgdmFyIGlzUGFkID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgZm9yICh2YXIgaTogdTMyID0gMHU7IGkgPCB1bmlmb3Jtcy5rZXJuZWxTaXplOyBpKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgb2Zmc2V0ID0gaTtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMHU7IGogPCAke3gtMX11OyBqKyspIHtcbiAgICAgICAgICAgICAgICAgIG9mZnNldHNbal0gPSBvZmZzZXQgLyAke2NlKFwidW5pZm9ybXMua2VybmVsU3RyaWRlc1wiLFwialwiLHgpfTtcbiAgICAgICAgICAgICAgICAgIG9mZnNldCAtPSBvZmZzZXRzW2pdICogJHtjZShcInVuaWZvcm1zLmtlcm5lbFN0cmlkZXNcIixcImpcIix4KX07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9mZnNldHNbJHt4LTF9XSA9IG9mZnNldDtcblxuICAgICAgICAgICAgICAgIGlzUGFkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9ICR7ci14fXU7IGogPCAke3J9dTsgaisrKSB7XG4gICAgICAgICAgICAgICAgICB4SW5kaWNlc1tqXSA9IGluZGljZXNbal0gKiAke2NlKFwidW5pZm9ybXMuc3RyaWRlc1wiLGBqIC0gJHtyLXh9dWAseCl9XG4gICAgICAgICAgICAgICAgICAgICsgb2Zmc2V0c1tqIC0gJHtyLXh9dV0gLSAke2NlKFwidW5pZm9ybXMucGFkc1wiLFwiaiAtIDJ1XCIsVCl9O1xuICAgICAgICAgICAgICAgICAgJHtDfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICR7b31cblxuICAgICAgICAgICAgICBvdXRwdXRbZ2xvYmFsX2lkeF0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1gfX0seWw9ZT0+YCR7ZS5mb3JtYXR9OyR7ZS5jZWlsTW9kZX07JHtlLmF1dG9QYWR9OyR7ZS5rZXJuZWxTaGFwZS5sZW5ndGh9YCxWcD1lPT5gJHt5bChlKX07JHtlLmNvdW50SW5jbHVkZVBhZH1gLEhwPWU9PmAke3lsKGUpfTske2Uuc3RvcmFnZU9yZGVyfTske2UuZGlsYXRpb25zfWAsYmw9ZT0+KHtmb3JtYXQ6ZS5mb3JtYXQsYXV0b1BhZDpbXCJOT1RTRVRcIixcIlZBTElEXCIsXCJTQU1FX1VQUEVSXCIsXCJTQU1FX0xPV0VSXCJdW2UuYXV0b19wYWRdLGNlaWxNb2RlOmUuY2VpbF9tb2RlLGtlcm5lbFNoYXBlOmUua2VybmVsX3NoYXBlLHN0cmlkZXM6ZS5zdHJpZGVzLHBhZHM6ZS5wYWRzfSksdmw9KGUsdCxyLGEpPT57bGV0W2ksc109bWwodCxhLHIpLG89VyhcInhcIix0LmRhdGFUeXBlLHQuZGltcy5sZW5ndGgpLGM9by50eXBlLnZhbHVlLHA9XCJ2YWx1ZSArPSB4X3ZhbDtcIixtPVwiXCI7aS5jb3VudEluY2x1ZGVQYWQ/bSs9YHZhbHVlIC89ICR7Y30odW5pZm9ybXMua2VybmVsU2l6ZSk7YDptKz1gdmFsdWUgLz0gJHtjfShpMzIodW5pZm9ybXMua2VybmVsU2l6ZSkgLSBwYWQpO2A7bGV0W2wsZyxiLHcsJF09aGwocyxpKTtsLnB1c2goLi4uTCh0LmRpbXMpLC4uLkwocykpO2xldCB4PVtcInJhbmtcIl07cmV0dXJue25hbWU6ZSxzaGFkZXJDYWNoZTp7aGludDpgJHthLmNhY2hlS2V5fTske2J9OyR7d307JHskfWAsaW5wdXREZXBlbmRlbmNpZXM6eH0sZ2V0UnVuRGF0YTooKT0+KHtvdXRwdXRzOlt7ZGltczpzLGRhdGFUeXBlOnQuZGF0YVR5cGV9XSxkaXNwYXRjaEdyb3VwOnt4Ok1hdGguY2VpbChOLnNpemUocykvNjQpfSxwcm9ncmFtVW5pZm9ybXM6bH0pLGdldFNoYWRlclNvdXJjZTpUPT5nbChULG8sdC5kaW1zLmxlbmd0aCxzLmxlbmd0aCxpLHAsbSwwLGcsYix3LCQpfX0sd2w9ZT0+e2xldCB0PWUuY291bnRfaW5jbHVkZV9wYWQhPT0wLHI9YmwoZSk7aWYoci5jZWlsTW9kZSE9PTApdGhyb3cgbmV3IEVycm9yKFwidXNpbmcgY2VpbCgpIGluIHNoYXBlIGNvbXB1dGF0aW9uIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIGZvciBBdmVyYWdlUG9vbFwiKTtsZXQgYT17Y291bnRJbmNsdWRlUGFkOnQsLi4ucixjYWNoZUtleTpcIlwifTtyZXR1cm57Li4uYSxjYWNoZUtleTpWcChhKX19LCRsPShlLHQpPT57YWEoZS5pbnB1dHMpLGUuY29tcHV0ZSh2bChcIkF2ZXJhZ2VQb29sXCIsZS5pbnB1dHNbMF0sITEsdCkpfSxfbD17YXV0b1BhZDpcIlwiLGNlaWxNb2RlOjAsY291bnRJbmNsdWRlUGFkOiExLGtlcm5lbFNoYXBlOltdLHN0cmlkZXM6W10scGFkczpbXSxzdG9yYWdlT3JkZXI6MCxkaWxhdGlvbnM6W119LFNsPWU9PntsZXQgdD1lLmZvcm1hdDtyZXR1cm57Zm9ybWF0OnQsLi4uX2wsY2FjaGVLZXk6dH19LHhsPShlLHQpPT57YWEoZS5pbnB1dHMpLGUuY29tcHV0ZSh2bChcIkdsb2JhbEF2ZXJhZ2VQb29sXCIsZS5pbnB1dHNbMF0sITAsdCkpfSxDbD0oZSx0LHIsYSk9PntsZXRbaSxzXT1tbCh0LGEsciksbz1gXG4gICAgICB2YWx1ZSA9IG1heCh4X3ZhbCwgdmFsdWUpO1xuICAgIGAsYz1cIlwiLHA9VyhcInhcIix0LmRhdGFUeXBlLHQuZGltcy5sZW5ndGgpLG09W1wicmFua1wiXSxbbCxnLGIsdywkXT1obChzLGkpO3JldHVybiBsLnB1c2goLi4uTCh0LmRpbXMpLC4uLkwocykpLHtuYW1lOmUsc2hhZGVyQ2FjaGU6e2hpbnQ6YCR7YS5jYWNoZUtleX07JHtifTske3d9OyR7JH1gLGlucHV0RGVwZW5kZW5jaWVzOm19LGdldFJ1bkRhdGE6KCk9Pih7b3V0cHV0czpbe2RpbXM6cyxkYXRhVHlwZTp0LmRhdGFUeXBlfV0sZGlzcGF0Y2hHcm91cDp7eDpNYXRoLmNlaWwoTi5zaXplKHMpLzY0KX0scHJvZ3JhbVVuaWZvcm1zOmx9KSxnZXRTaGFkZXJTb3VyY2U6eD0+Z2woeCxwLHQuZGltcy5sZW5ndGgscy5sZW5ndGgsaSxvLGMsLTFlNSxnLGIsdywkKX19LElsPShlLHQpPT57YWEoZS5pbnB1dHMpLGUuY29tcHV0ZShDbChcIk1heFBvb2xcIixlLmlucHV0c1swXSwhMSx0KSl9LEFsPWU9PntsZXQgdD1lLnN0b3JhZ2Vfb3JkZXIscj1lLmRpbGF0aW9ucyxhPWJsKGUpO2lmKHQhPT0wKXRocm93IG5ldyBFcnJvcihcImNvbHVtbiBtYWpvciBzdG9yYWdlIG9yZGVyIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIGZvciBNYXhQb29sXCIpO2lmKGEuY2VpbE1vZGUhPT0wKXRocm93IG5ldyBFcnJvcihcInVzaW5nIGNlaWwoKSBpbiBzaGFwZSBjb21wdXRhdGlvbiBpcyBub3QgeWV0IHN1cHBvcnRlZCBmb3IgTWF4UG9vbFwiKTtsZXQgaT17c3RvcmFnZU9yZGVyOnQsZGlsYXRpb25zOnIsLi4uYSxjYWNoZUtleTpcIlwifTtyZXR1cm57Li4uaSxjYWNoZUtleTpIcChpKX19LFRsPWU9PntsZXQgdD1lLmZvcm1hdDtyZXR1cm57Zm9ybWF0OnQsLi4uX2wsY2FjaGVLZXk6dH19LEVsPShlLHQpPT57YWEoZS5pbnB1dHMpLGUuY29tcHV0ZShDbChcIkdsb2JhbE1heFBvb2xcIixlLmlucHV0c1swXSwhMCx0KSl9fSk7dmFyIEdwLEZwLGtsLFBsPVEoKCk9PntcInVzZSBzdHJpY3RcIjtidCgpO3plKCk7X2UoKTtHcD0oZSx0LHIpPT57bGV0IGE9ZT09PXQsaT1lPHQmJnI8MCxzPWU+dCYmcj4wO2lmKGF8fGl8fHMpdGhyb3cgbmV3IEVycm9yKFwiUmFuZ2UgdGhlc2UgaW5wdXRzJyBjb250ZW50cyBhcmUgaW52YWxpZC5cIil9LEZwPShlLHQscixhKT0+e2xldCBpPU1hdGguYWJzKE1hdGguY2VpbCgodC1lKS9yKSkscz1baV0sbz1pLGM9cHQoYSkscD1be3R5cGU6XCJ1aW50MzJcIixkYXRhOm99LHt0eXBlOmMsZGF0YTplfSx7dHlwZTpjLGRhdGE6cn0sLi4uTChzKV0sbT1sPT57bGV0IGc9SihcIm91dHB1dFwiLGEscy5sZW5ndGgpLGI9Zy50eXBlLnZhbHVlLHc9W3tuYW1lOlwib3V0cHV0U2l6ZVwiLHR5cGU6XCJ1MzJcIn0se25hbWU6XCJzdGFydFwiLHR5cGU6Yn0se25hbWU6XCJkZWx0YVwiLHR5cGU6Yn1dO3JldHVybmBcbiAgICAgICAgJHtsLnJlZ2lzdGVyVW5pZm9ybXModykuZGVjbGFyZVZhcmlhYmxlcyhnKX1cbiAgICAgICAgJHtsLm1haW5TdGFydCgpfVxuICAgICAgICAke2wuZ3VhcmRBZ2FpbnN0T3V0T2ZCb3VuZHNXb3JrZ3JvdXBTaXplcyhcInVuaWZvcm1zLm91dHB1dFNpemVcIil9XG4gICAgICAgIG91dHB1dFtnbG9iYWxfaWR4XSA9IHVuaWZvcm1zLnN0YXJ0ICsgJHtifShnbG9iYWxfaWR4KSAqIHVuaWZvcm1zLmRlbHRhO1xuICAgICAgfWB9O3JldHVybntuYW1lOlwiUmFuZ2VcIixzaGFkZXJDYWNoZTp7aGludDpgJHthfWB9LGdldFNoYWRlclNvdXJjZTptLGdldFJ1bkRhdGE6KCk9Pih7b3V0cHV0czpbe2RpbXM6cyxkYXRhVHlwZTphfV0sZGlzcGF0Y2hHcm91cDp7eDpNYXRoLmNlaWwoby82NCl9LHByb2dyYW1Vbmlmb3JtczpwfSl9fSxrbD1lPT57bGV0IHQ9MCxyPTAsYT0wO2UuaW5wdXRzWzBdLmRhdGFUeXBlPT09Nj8odD1lLmlucHV0c1swXS5nZXRJbnQzMkFycmF5KClbMF0scj1lLmlucHV0c1sxXS5nZXRJbnQzMkFycmF5KClbMF0sYT1lLmlucHV0c1syXS5nZXRJbnQzMkFycmF5KClbMF0pOmUuaW5wdXRzWzBdLmRhdGFUeXBlPT09MSYmKHQ9ZS5pbnB1dHNbMF0uZ2V0RmxvYXQzMkFycmF5KClbMF0scj1lLmlucHV0c1sxXS5nZXRGbG9hdDMyQXJyYXkoKVswXSxhPWUuaW5wdXRzWzJdLmdldEZsb2F0MzJBcnJheSgpWzBdKSxBZS53ZWJncHUudmFsaWRhdGVJbnB1dENvbnRlbnQmJkdwKHQscixhKSxlLmNvbXB1dGUoRnAodCxyLGEsZS5pbnB1dHNbMF0uZGF0YVR5cGUpLHtpbnB1dHM6W119KX19KTt2YXIgcXAsanAsS3AsWXAsWnAsWHAsUXAsSnAsZWYsdGYscmYsUmwsbmYsYWYsb2Ysc2YsdWYsQmwsTWwsRGw9USgoKT0+e1widXNlIHN0cmljdFwiO0NlKCk7WGUoKTtfZSgpO3FwPShlLHQpPT57aWYoZS5ldmVyeShyPT5yPjB8fCgoKT0+e3Rocm93IG5ldyBFcnJvcihcIlJlc2l6ZSByZXF1aXJlcyBzY2FsZXMgaW5wdXQgdmFsdWVzIHRvIGJlIHBvc2l0aXZlXCIpfSkpLGUubGVuZ3RoPjApe2lmKHQubW9kZT09PVwibGluZWFyXCIpe2lmKCEoZS5sZW5ndGg9PT0yfHxlLmxlbmd0aD09PTN8fGUubGVuZ3RoPT09NCYmZVswXT09PTEmJmVbMV09PT0xfHxlLmxlbmd0aD09PTQmJmVbMF09PT0xJiZlWzNdPT09MXx8ZS5sZW5ndGg9PT01JiZlWzBdPT09MSYmZVsxXT09PTEpKXRocm93IG5ldyBFcnJvcihgRm9yIGxpbmVhciBtb2RlLCBSZXNpemUgcmVxdWlyZXMgc2NhbGVzIHRvIGJlIDJELCAzRCwgNEQgd2l0aCBlaXRoZXIgdHdvIG91dGVybW9zdCBvciBvbmUgaW5uZXJtb3N0IGFuZFxuICAgICAgICAgICAgb25lIG91dGVybW9zdCBzY2FsZSB2YWx1ZXMgZXF1YWwgdG8gMSwgb3IgNUQgd2l0aCB0d28gb3V0ZXJtb3N0IHNjYWxlIHZhbHVlcyBlcXVhbCB0byAxYCl9ZWxzZSBpZih0Lm1vZGU9PT1cImN1YmljXCImJiEoZS5sZW5ndGg9PT0yfHxlLmxlbmd0aD09PTQmJmVbMF09PT0xJiZlWzFdPT09MXx8ZS5sZW5ndGg9PT00JiZlWzBdPT09MSYmZVszXT09PTEpKXRocm93IG5ldyBFcnJvcihcIlJlc2l6ZSByZXF1aXJlcyBzY2FsZXMgaW5wdXQgc2l6ZSB0byBiZSAyIG9yIDQgZm9yIGN1YmljIG1vZGVcIil9fSxqcD0oZSx0LHIpPT57dC5ldmVyeShpPT5pPj0wJiZpPHJ8fCgoKT0+e3Rocm93IG5ldyBFcnJvcihcIlJlc2l6ZSByZXF1aXJlcyBheGVzIGlucHV0IHZhbHVlcyB0byBiZSBwb3NpdGl2ZSBhbmQgbGVzcyB0aGFuIHJhbmtcIil9KSk7bGV0IGE9bmV3IEFycmF5KHIpLmZpbGwoMSk7cmV0dXJuIHQuZm9yRWFjaCgoaSxzKT0+YVtpXT1lW3NdKSxhfSxLcD0oZSx0LHIsYSxpLHMpPT57bGV0W28sYyxwXT1yPjEwP1sxLDIsM106Wy0xLGUubGVuZ3RoPjE/MTotMSwtMV0sbT1lWzBdLmRpbXMubGVuZ3RoO2lmKG8+MCYmZS5sZW5ndGg+byYmZVtvXS5kaW1zLmxlbmd0aD4wKWVbb10uZ2V0RmxvYXQzMkFycmF5KCkuZm9yRWFjaChsPT5zLnB1c2gobCkpO2Vsc2UgaWYodC5jb29yZGluYXRlVHJhbnNmb3JtTW9kZT09PVwidGZfY3JvcF9hbmRfcmVzaXplXCIpdGhyb3cgbmV3IEVycm9yKFwiUmVzaXplIHJlcXVpcmVzIFJvSSBpbnB1dCB0byBiZSBzcGVjaWZpZWQgd2hlbiBjb29yZGluYXRlVHJhbnNmb3JtTW9kZSBpcyB0ZkNyb3BBbmRSZXNpemVcIik7aWYoYz4wJiZlLmxlbmd0aD5jJiZlW2NdLmRpbXMubGVuZ3RoPjApe2lmKGVbY10uZ2V0RmxvYXQzMkFycmF5KCkuZm9yRWFjaChsPT5hLnB1c2gobCkpLGEubGVuZ3RoIT09MCYmYS5sZW5ndGghPT1tJiZyPj0xOCYmYS5sZW5ndGghPT10LmF4ZXMubGVuZ3RoKXRocm93IG5ldyBFcnJvcihcIlJlc2l6ZSByZXF1aXJlcyBzY2FsZXMgaW5wdXQgc2l6ZSB0byBiZSBzYW1lIGFzIGlucHV0IHJhbmsgb3IgYXhlcyBzaXplIGZvciBvcHNldCAxOCBhbmQgdXBcIik7cXAoYSx0KSx0LmF4ZXMubGVuZ3RoPjAmJmpwKGEsdC5heGVzLG0pLmZvckVhY2goKGwsZyk9PmFbZ109bCl9aWYocD4wJiZlLmxlbmd0aD5wJiYoZVtwXS5nZXRCaWdJbnQ2NEFycmF5KCkuZm9yRWFjaChsPT5pLnB1c2goTnVtYmVyKGwpKSksaS5sZW5ndGghPT1tfHxyPj0xOCYmaS5sZW5ndGg9PT10LmF4ZXMubGVuZ3RoKSl0aHJvdyBuZXcgRXJyb3IoXCJSZXNpemUgcmVxdWlyZXMgc2l6ZXMgaW5wdXQgc2l6ZSB0byBiZSBzYW1lIGFzIGlucHV0IHJhbmsgb3IgYXhlcyBzaXplIGZvciBvcHNldCAxOCBhbmQgdXBcIik7aWYodC5heGVzLmxlbmd0aD4wKXtpZihhLmxlbmd0aCE9PXQuYXhlcy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCdSZXNpemUgcmVxdWlyZXMgXCJzY2FsZXNcIiBpbnB1dCBzaXplIHRvIGJlIG9mIGF4ZXMgcmFuayB3aGVuIGF4ZXMgYXR0cmlidXRlcyBpcyBzcGVjaWZpZWQnKTtpZihpLmxlbmd0aCE9PXQuYXhlcy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCdSZXNpemUgcmVxdWlyZXMgXCJzaXplc1wiIGlucHV0IHNpemUgdG8gYmUgb2YgcmFuayBheGVzIHJhbmsgd2hlbiBheGVzIGF0dHJpYnV0ZXMgaXMgc3BlY2lmaWVkJyl9aWYodHlwZW9mIGE8XCJ1XCImJnR5cGVvZiBpPFwidVwiJiZhLmxlbmd0aD4wJiZpLmxlbmd0aD5tKXRocm93IG5ldyBFcnJvcihcIlJlc2l6ZSByZXF1aXJlcyBvbmx5IG9mIHNjYWxlcyBvciBzaXplcyB0byBiZSBzcGVjaWZpZWRcIil9LFlwPShlLHQpPT5gZm4gZ2V0T3JpZ2luYWxDb29yZGluYXRlRnJvbVJlc2l6ZWRDb29yZGluYXRlKHhSZXNpemVkOiB1MzIsIHhTY2FsZTogZjMyLCBsZW5ndGhSZXNpemVkOiB1MzIsXG4gICAgIGxlbmd0aE9yaWdpbmFsOiB1MzIsIHJvaVN0YXJ0OiBmMzIsIHJvaUVuZDogZjMyKSAtPiAke3R9IHsgYCsoKCk9Pntzd2l0Y2goZSl7Y2FzZVwiYXN5bW1ldHJpY1wiOnJldHVybmByZXR1cm4gJHt0fSh4UmVzaXplZCkgLyAke3R9KHhTY2FsZSk7YDtjYXNlXCJweXRvcmNoX2hhbGZfcGl4ZWxcIjpyZXR1cm5gaWYgKGxlbmd0aFJlc2l6ZWQgPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoJHt0fSh4UmVzaXplZCkgKyAwLjUpIC8gJHt0fSh4U2NhbGUpIC0gMC41O1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAuMDtcbiAgICAgICAgICAgICAgICAgIH1gO2Nhc2VcInRmX2hhbGZfcGl4ZWxfZm9yX25uXCI6cmV0dXJuYHJldHVybiAoJHt0fSh4UmVzaXplZCkgKyAwLjUpIC8gJHt0fSh4U2NhbGUpO2A7Y2FzZVwiYWxpZ25fY29ybmVyc1wiOnJldHVybmBpZiAobGVuZ3RoUmVzaXplZCA9PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAwLjA7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBUaGUgd2hvbGUgcGFydCBhbmQgdGhlIGZyYWN0aW9uYWwgcGFydCBhcmUgY2FsY3VsYXRlZCBzZXBhcmF0ZWx5IGR1ZSB0byBpbmFjY3VyYWN5IG9mIGZsb2F0aW5nXG4gICAgICAgICAgICAgICAgICAgIC8vIHBvaW50IGRpdmlzaW9uLiBBcyBhbiBleGFtcGxlLCBmMzIoMjEpIC8gZjMyKDcpIG1heSBldmFsdWF0ZSB0byAyLjk5Li4uIGluc3RlYWQgb2YgMywgY2F1c2luZyBhblxuICAgICAgICAgICAgICAgICAgICAvLyBvZmZzZXQtYnktb25lIGVycm9yIGxhdGVyIGluIGZsb29yKCkuXG4gICAgICAgICAgICAgICAgICAgIGxldCB3aG9sZSA9ICR7dH0oeFJlc2l6ZWQgKiAobGVuZ3RoT3JpZ2luYWwgLSAxKSAvIChsZW5ndGhSZXNpemVkIC0gMSkpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgZnJhY3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgJHt0fSh4UmVzaXplZCAqIChsZW5ndGhPcmlnaW5hbCAtIDEpICUgKGxlbmd0aFJlc2l6ZWQgLSAxKSkgLyAke3R9KGxlbmd0aFJlc2l6ZWQgLSAxKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdob2xlICsgZnJhY3Q7XG4gICAgICAgICAgICAgICAgICB9YDtjYXNlXCJ0Zl9jcm9wX2FuZF9yZXNpemVcIjpyZXR1cm5gaWYgKGxlbmd0aFJlc2l6ZWQgPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAke3R9KHJvaVN0YXJ0KSAqICR7dH0obGVuZ3RoT3JpZ2luYWwgLSAxKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAoJHt0fSh4UmVzaXplZCkgKiAke3R9KHJvaUVuZCAtIHJvaVN0YXJ0KSAqICR7dH0obGVuZ3RoT3JpZ2luYWwgLSAxKSkgL1xuICAgICAgICAgICAgICAgICAgICAgICAgJHt0fShsZW5ndGhSZXNpemVkIC0gMSk7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMC41ICogJHt0fShyb2lTdGFydCArIHJvaUVuZCkgKiAke3R9KGxlbmd0aE9yaWdpbmFsIC0gMSk7XG4gICAgICAgICAgICAgICAgICB9YDtjYXNlXCJoYWxmX3BpeGVsX3N5bW1ldHJpY1wiOnJldHVybmBjb25zdCBvdXRwdXRXaWR0aCA9ICR7dH14U2NhbGUgKiAke3R9KGxlbmd0aFJlc2l6ZWQpO1xuICAgICAgICAgICAgICAgICAgY29uc3QgYWRqdXN0bWVudCA9ICR7dH0obGVuZ3RoUmVzaXplZCkgLyBvdXRwdXRXaWR0aDtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGNlbnRlciA9ICR7dH0obGVuZ3RoT3JpZ2luYWwpIC8gMjtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IG9mZnNldCA9IGNlbnRlciAqICgxIC0gYWRqdXN0bWVudCk7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gb2Zmc2V0ICsgKCgke3R9KHhSZXNpemVkKSArIDAuNSkgLyAke3R9KHhTY2FsZSkpIC0gMC41O2A7Y2FzZVwiaGFsZl9waXhlbFwiOnJldHVybmByZXR1cm4gKCgke3R9KHhSZXNpemVkKSArIDAuNSkgLyAke3R9KHhTY2FsZSkpIC0gMC41O2A7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYENvb3JkaW5hdGUgdHJhbnNmb3JtIG1vZGUgJHtlfSBpcyBub3Qgc3VwcG9ydGVkYCl9fSkoKStcIn1cIixacD0oZSx0LHIpPT5gZm4gZ2V0TmVhcmVzdFBpeGVsRnJvbU9yaWdpbmFsKHhPcmlnaW5hbDogJHtyfSwgaXNEb3duU2FtcGxlOiBib29sKSAtPiAke3J9IHtgKygoKT0+e3N3aXRjaChlKXtjYXNlXCJyb3VuZF9wcmVmZXJfY2VpbFwiOnJldHVyblwiaWYgKGZyYWN0KHhPcmlnaW5hbCkgPT0gMC41KSB7ICAgICAgICAgICAgIHJldHVybiBjZWlsKHhPcmlnaW5hbCk7ICAgICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgICByZXR1cm4gcm91bmQoeE9yaWdpbmFsKTsgICAgICAgICAgIH1cIjtjYXNlXCJmbG9vclwiOnJldHVyblwicmV0dXJuIGZsb29yKHhPcmlnaW5hbCk7XCI7Y2FzZVwiY2VpbFwiOnJldHVyblwicmV0dXJuIGNlaWwoeE9yaWdpbmFsKTtcIjtjYXNlXCJyb3VuZF9wcmVmZXJfZmxvb3JcIjpyZXR1cm5cImlmIChmcmFjdCh4T3JpZ2luYWwpID09IDAuNSkgeyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmbG9vcih4T3JpZ2luYWwpOyAgICAgICAgICAgICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgICAgIHJldHVybiByb3VuZCh4T3JpZ2luYWwpOyAgICAgICAgICAgICAgICAgICB9XCI7Y2FzZVwic2ltcGxlXCI6ZGVmYXVsdDppZih0PDExKXJldHVyblwiaWYgKGlzRG93blNhbXBsZSkgICAgICAgICAgICAgICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2VpbCh4T3JpZ2luYWwpOyAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geE9yaWdpbmFsOyAgICAgICAgICAgICAgICAgICAgIH1cIjt0aHJvdyBuZXcgRXJyb3IoYE5lYXJlc3QgbW9kZSAke2V9IGlzIG5vdCBzdXBwb3J0ZWRgKX19KSgpK1wifVwiLFhwPShlLHQscik9PntsZXQgYT1uZXcgQXJyYXkocikuZmlsbCgwKS5jb25jYXQobmV3IEFycmF5KHIpLmZpbGwoMSkpLGk9ZS5sZW5ndGg9PT0wP2E6ZS5zbGljZSgpO3JldHVybiB0Lmxlbmd0aD4wPyh0LmZvckVhY2goKHMsbyk9PnthW3NdPWlbb10sYVtvK3JdPWlbdC5sZW5ndGgrb119KSxhKTppfSxRcD0oZSx0LHIsYSk9PntsZXQgaT1bXTtpZihyLmxlbmd0aD4wKWlmKGEubGVuZ3RoPjApe2lmKGUuZm9yRWFjaChzPT5pLnB1c2gocykpLE1hdGgubWF4KC4uLmEpPmUubGVuZ3RoKXRocm93IG5ldyBFcnJvcihcImF4ZXMgaXMgb3V0IG9mIGJvdW5kXCIpO2EuZm9yRWFjaCgocyxvKT0+aVtzXT1yW29dKX1lbHNlIHIuZm9yRWFjaChzPT5pLnB1c2gocykpO2Vsc2V7aWYodC5sZW5ndGg9PT0wKXRocm93IG5ldyBFcnJvcihcIlJlc2l6ZSByZXF1aXJlcyBlaXRoZXIgc2NhbGVzIG9yIHNpemVzLlwiKTtpPWUubWFwKChzLG8pPT5NYXRoLnJvdW5kKHMqdFtvXSkpfXJldHVybiBpfSxKcD0oZSx0LHIpPT57bGV0IGE9KCgpPT57c3dpdGNoKHIua2VlcEFzcGVjdFJhdGlvUG9saWN5KXtjYXNlXCJub3RfbGFyZ2VyXCI6cmV0dXJuIHIuYXhlcy5sZW5ndGg+MD9NYXRoLm1pbiguLi5yLmF4ZXMubWFwKHM9PnRbc10pLE51bWJlci5NQVhfVkFMVUUpOk1hdGgubWluKC4uLnQsTnVtYmVyLk1BWF9WQUxVRSk7Y2FzZVwibm90X3NtYWxsZXJcIjpyZXR1cm4gci5heGVzLmxlbmd0aD4wP01hdGgubWF4KC4uLnIuYXhlcy5tYXAocz0+dFtzXSksTnVtYmVyLk1JTl9WQUxVRSk6TWF0aC5tYXgoLi4udCxOdW1iZXIuTUlOX1ZBTFVFKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgS2VlcCBhc3BlY3QgcmF0aW8gcG9saWN5ICR7ci5rZWVwQXNwZWN0UmF0aW9Qb2xpY3l9IGlzIG5vdCBzdXBwb3J0ZWRgKX19KSgpO3QuZmlsbCgxLDAsdC5sZW5ndGgpO2xldCBpPWUuc2xpY2UoKTtyZXR1cm4gci5heGVzLmxlbmd0aD4wPyhyLmF4ZXMuZm9yRWFjaChzPT50W3NdPWEpLHIuYXhlcy5mb3JFYWNoKHM9Pmlbc109TWF0aC5yb3VuZChlW3NdKnRbc10pKSk6KHQuZmlsbChhLDAsdC5sZW5ndGgpLGkuZm9yRWFjaCgocyxvKT0+aVtvXT1NYXRoLnJvdW5kKHMqdFtvXSkpKSxpfSxlZj0oZSx0LHIsYSxpKT0+YFxuICAgIGZuIGNhbGN1bGF0ZU9yaWdpbmFsSW5kaWNlc0Zyb21PdXRwdXRJbmRpY2VzKG91dHB1dF9pbmRpY2VzOiAke2UudHlwZS5pbmRpY2VzfSkgLT4gYXJyYXk8JHtlLnR5cGUudmFsdWV9LCAke3IubGVuZ3RofT4ge1xuICAgICAgdmFyIG9yaWdpbmFsX2luZGljZXM6IGFycmF5PCR7ZS50eXBlLnZhbHVlfSwgJHtyLmxlbmd0aH0+O1xuICAgICAgZm9yICh2YXIgaTp1MzIgPSAwOyBpIDwgJHtyLmxlbmd0aH07IGkrKykge1xuICAgICAgICB2YXIgb3V0cHV0X2luZGV4ID0gJHtlLmluZGljZXNHZXQoXCJvdXRwdXRfaW5kaWNlc1wiLFwiaVwiKX07XG4gICAgICAgIHZhciBzY2FsZSA9ICR7Y2UoXCJ1bmlmb3Jtcy5zY2FsZXNcIixcImlcIixhKX07XG4gICAgICAgIHZhciByb2lfbG93ID0gJHtjZShcInVuaWZvcm1zLnJvaVwiLFwiaVwiLGkpfTtcbiAgICAgICAgdmFyIHJvaV9oaSA9ICR7Y2UoXCJ1bmlmb3Jtcy5yb2lcIixgaSArICR7dC5sZW5ndGh9YCxpKX07XG4gICAgICAgIGlmIChzY2FsZSA9PSAxLjApIHtcbiAgICAgICAgICBvcmlnaW5hbF9pbmRpY2VzW2ldID0gJHtlLnR5cGUudmFsdWV9KG91dHB1dF9pbmRleCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIGlucHV0X3NoYXBlX2kgPSAke2NlKFwidW5pZm9ybXMuaW5wdXRfc2hhcGVcIixcImlcIix0Lmxlbmd0aCl9O1xuICAgICAgICAgIHZhciBvdXRwdXRfc2hhcGVfaSA9ICR7Y2UoXCJ1bmlmb3Jtcy5vdXRwdXRfc2hhcGVcIixcImlcIixyLmxlbmd0aCl9O1xuICAgICAgICAgIG9yaWdpbmFsX2luZGljZXNbaV0gPSBnZXRPcmlnaW5hbENvb3JkaW5hdGVGcm9tUmVzaXplZENvb3JkaW5hdGUob3V0cHV0X2luZGV4LCBzY2FsZSwgb3V0cHV0X3NoYXBlX2ksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9zaGFwZV9pLCByb2lfbG93LCByb2lfaGkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gb3JpZ2luYWxfaW5kaWNlcztcbiAgICB9YCx0Zj0oZSx0LHIsYSxpLHMsbyk9PmBcbiAgICBmbiBjYWxjdWxhdGVJbnB1dEluZGljZXNGcm9tT3V0cHV0SW5kaWNlcyhvdXRwdXRfaW5kaWNlczogJHt0LnR5cGUuaW5kaWNlc30pIC0+ICR7ZS50eXBlLmluZGljZXN9IHtcbiAgICAgIHZhciBpbnB1dF9pbmRpY2VzOiAke2UudHlwZS5pbmRpY2VzfTtcbiAgICAgIGZvciAodmFyIGk6dTMyID0gMDsgaSA8ICR7YS5sZW5ndGh9OyBpKyspIHtcbiAgICAgICAgdmFyIG91dHB1dF9pbmRleCA9ICR7dC5pbmRpY2VzR2V0KFwib3V0cHV0X2luZGljZXNcIixcImlcIil9O1xuICAgICAgICB2YXIgaW5wdXRfaW5kZXg6IHUzMjtcbiAgICAgICAgdmFyIHNjYWxlID0gJHtjZShcInVuaWZvcm1zLnNjYWxlc1wiLFwiaVwiLGkpfTtcbiAgICAgICAgaWYgKHNjYWxlID09IDEuMCkge1xuICAgICAgICAgIGlucHV0X2luZGV4ID0gb3V0cHV0X2luZGV4O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciByb2lfbG93ID0gJHtjZShcInVuaWZvcm1zLnJvaVwiLFwiaVwiLHMpfTtcbiAgICAgICAgICB2YXIgcm9pX2hpID0gJHtjZShcInVuaWZvcm1zLnJvaVwiLGBpICsgJHtyLmxlbmd0aH1gLHMpfTtcbiAgICAgICAgICB2YXIgaW5wdXRfc2hhcGVfaSA9ICR7Y2UoXCJ1bmlmb3Jtcy5pbnB1dF9zaGFwZVwiLFwiaVwiLHIubGVuZ3RoKX07XG4gICAgICAgICAgdmFyIG91dHB1dF9zaGFwZV9pID0gJHtjZShcInVuaWZvcm1zLm91dHB1dF9zaGFwZVwiLFwiaVwiLGEubGVuZ3RoKX07XG4gICAgICAgICAgdmFyIG9yaWdpbmFsX2lkeCA9IGdldE9yaWdpbmFsQ29vcmRpbmF0ZUZyb21SZXNpemVkQ29vcmRpbmF0ZShvdXRwdXRfaW5kZXgsIHNjYWxlLCBvdXRwdXRfc2hhcGVfaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0X3NoYXBlX2ksIHJvaV9sb3csIHJvaV9oaSk7XG4gICAgICAgICAgaWYgKCEke299IHx8IChvcmlnaW5hbF9pZHggPj0gMCAmJiBvcmlnaW5hbF9pZHggPCAke3QudHlwZS52YWx1ZX0oaW5wdXRfc2hhcGVfaSkpKSB7XG4gICAgICAgICAgICBpZiAob3JpZ2luYWxfaWR4IDwgMCkge1xuICAgICAgICAgICAgICBpbnB1dF9pbmRleCA9IDA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG9yaWdpbmFsX2lkeCA+ICR7dC50eXBlLnZhbHVlfShpbnB1dF9zaGFwZV9pIC0gMSkpIHtcbiAgICAgICAgICAgICAgaW5wdXRfaW5kZXggPSBpbnB1dF9zaGFwZV9pIC0gMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGlucHV0X2luZGV4ID0gdTMyKGdldE5lYXJlc3RQaXhlbEZyb21PcmlnaW5hbChvcmlnaW5hbF9pZHgsIHNjYWxlIDwgMSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpbnB1dF9pbmRleCA9IHUzMihvcmlnaW5hbF9pZHgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAke2UuaW5kaWNlc1NldChcImlucHV0X2luZGljZXNcIixcImlcIixcIiBpbnB1dF9pbmRleFwiKX1cbiAgICAgIH1cbiAgICAgIHJldHVybiBpbnB1dF9pbmRpY2VzO1xuICAgIH1gLHJmPShlLHQpPT5gXG4gICAgZm4gY2hlY2tJbnB1dEluZGljZXMoaW5wdXRfaW5kaWNlczogJHtlLnR5cGUuaW5kaWNlc30pIC0+IGJvb2wge1xuICAgICAgZm9yICh2YXIgaTp1MzIgPSAwOyBpIDwgJHt0Lmxlbmd0aH07IGkrKykge1xuICAgICAgICB2YXIgaW5wdXRfaW5kZXggPSAke2UuaW5kaWNlc0dldChcImlucHV0X2luZGljZXNcIixcImlcIil9O1xuICAgICAgICBpZiAoaW5wdXRfaW5kZXggPCAwIHx8IGlucHV0X2luZGV4ID49ICR7Y2UoXCJ1bmlmb3Jtcy5pbnB1dF9zaGFwZVwiLFwiaVwiLHQubGVuZ3RoKX0pIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1gLFJsPShlLHQscixhKT0+ZS5yYW5rPmE/YFxuICAgICR7ZS5pbmRpY2VzU2V0KFwiaW5wdXRfaW5kaWNlc1wiLHQsXCJjaGFubmVsXCIpfTtcbiAgICAke2UuaW5kaWNlc1NldChcImlucHV0X2luZGljZXNcIixyLFwiYmF0Y2hcIil9O1xuYDpcIlwiLG5mPShlLHQscixhLGkpPT57bGV0W28sYyxwLG1dPXIubGVuZ3RoPT09Mj9bLTEsMCwxLC0xXTpbMCwyLDMsMV0sbD1lLnR5cGUudmFsdWU7cmV0dXJuYFxuICAgIGZuIGdldElucHV0VmFsdWUoYmF0Y2g6IHUzMiwgY2hhbm5lbDogdTMyLCByb3c6IHUzMiwgY29sOiB1MzIpIC0+ICR7bH0ge1xuICAgICAgdmFyIGlucHV0X2luZGljZXM6ICR7ZS50eXBlLmluZGljZXN9O1xuICAgICAgJHtlLmluZGljZXNTZXQoXCJpbnB1dF9pbmRpY2VzXCIsYyxgbWF4KDAsIG1pbihyb3csICR7cltjXX0gLSAxKSlgKX07XG4gICAgICAke2UuaW5kaWNlc1NldChcImlucHV0X2luZGljZXNcIixwLGBtYXgoMCwgbWluKGNvbCwgJHtyW3BdfSAtIDEpKWApfTtcbiAgICAgICR7UmwoZSxtLG8sMil9XG4gICAgICByZXR1cm4gJHtlLmdldEJ5SW5kaWNlcyhcImlucHV0X2luZGljZXNcIil9O1xuICAgIH1cblxuICAgIGZuIGJpbGluZWFySW50ZXJwb2xhdGlvbihvdXRwdXRfaW5kaWNlczogJHt0LnR5cGUuaW5kaWNlc30pIC0+ICR7bH0ge1xuICAgICAgdmFyIG9yaWdpbmFsSW5kaWNlcyA9IGNhbGN1bGF0ZU9yaWdpbmFsSW5kaWNlc0Zyb21PdXRwdXRJbmRpY2VzKG91dHB1dF9pbmRpY2VzKTtcbiAgICAgIHZhciByb3c6JHtsfSA9IG9yaWdpbmFsSW5kaWNlc1ske2N9XTtcbiAgICAgIHZhciBjb2w6JHtsfSA9IG9yaWdpbmFsSW5kaWNlc1ske3B9XTtcbiAgICAgICR7YT9gaWYgKHJvdyA8IDAgfHwgcm93ID4gKCR7cltjXX0gLSAxKSB8fCBjb2wgPCAwIHx8IGNvbCA+ICgke3JbcF19IC0gMSkpIHtcbiAgICAgICAgcmV0dXJuICR7aX07XG4gICAgICB9YDpcIlwifTtcbiAgICAgIHJvdyA9IG1heCgwLCBtaW4ocm93LCAke3JbY119IC0gMSkpO1xuICAgICAgY29sID0gbWF4KDAsIG1pbihjb2wsICR7cltwXX0gLSAxKSk7XG4gICAgICB2YXIgcm93MTogdTMyID0gdTMyKHJvdyk7XG4gICAgICB2YXIgY29sMTogdTMyID0gdTMyKGNvbCk7XG4gICAgICB2YXIgcm93MjogdTMyID0gdTMyKHJvdyArIDEpO1xuICAgICAgdmFyIGNvbDI6IHUzMiA9IHUzMihjb2wgKyAxKTtcbiAgICAgIHZhciBjaGFubmVsOiB1MzIgPSAke3IubGVuZ3RoPjI/YHUzMihvcmlnaW5hbEluZGljZXNbJHttfV0pYDpcIjBcIn07XG4gICAgICB2YXIgYmF0Y2g6IHUzMiA9ICAke3IubGVuZ3RoPjI/YHUzMihvcmlnaW5hbEluZGljZXNbJHtvfV0pYDpcIjBcIn07XG4gICAgICB2YXIgeDExOiAke2x9ID0gZ2V0SW5wdXRWYWx1ZShiYXRjaCwgY2hhbm5lbCwgcm93MSwgY29sMSk7XG4gICAgICB2YXIgeDEyOiAke2x9ID0gZ2V0SW5wdXRWYWx1ZShiYXRjaCwgY2hhbm5lbCwgcm93MSwgY29sMik7XG4gICAgICB2YXIgeDIxOiAke2x9ID0gZ2V0SW5wdXRWYWx1ZShiYXRjaCwgY2hhbm5lbCwgcm93MiwgY29sMSk7XG4gICAgICB2YXIgeDIyOiAke2x9ID0gZ2V0SW5wdXRWYWx1ZShiYXRjaCwgY2hhbm5lbCwgcm93MiwgY29sMik7XG4gICAgICB2YXIgZHgxOiAke2x9ID0gYWJzKHJvdyAtICR7bH0ocm93MSkpO1xuICAgICAgdmFyIGR4MjogJHtsfSA9IGFicygke2x9KHJvdzIpIC0gcm93KTtcbiAgICAgIHZhciBkeTE6ICR7bH0gPSBhYnMoY29sIC0gJHtsfShjb2wxKSk7XG4gICAgICB2YXIgZHkyOiAke2x9ID0gYWJzKCR7bH0oY29sMikgLSBjb2wpO1xuICAgICAgaWYgKHJvdzEgPT0gcm93Mikge1xuICAgICAgICBkeDEgPSAwLjU7XG4gICAgICAgIGR4MiA9IDAuNTtcbiAgICAgIH1cbiAgICAgIGlmIChjb2wxID09IGNvbDIpIHtcbiAgICAgICAgZHkxID0gMC41O1xuICAgICAgICBkeTIgPSAwLjU7XG4gICAgICB9XG4gICAgICByZXR1cm4gKHgxMSAqIGR4MiAqIGR5MiArIHgxMiAqIGR4MiAqIGR5MSArIHgyMSAqIGR4MSAqIGR5MiArIHgyMiAqIGR4MSAqIGR5MSk7XG4gICAgfWB9LGFmPShlLHQscixhLGkscyxvLGMscCxtKT0+e2xldCBsPXIubGVuZ3RoPT09MixnPSEwLFtiLHddPWw/WzAsMV06Zz9bMiwzXTpbMSwyXSwkPWUudHlwZS52YWx1ZSx4PVQ9PntsZXQgQz1UPT09Yj9cInJvd1wiOlwiY29sXCI7cmV0dXJuYFxuICAgICAgZm4gJHtDfUN1YmljSW50ZXJwb2xhdGlvbihpbnB1dF9pbmRpY2VzOiAke2UudHlwZS5pbmRpY2VzfSwgb3V0cHV0X2luZGljZXM6ICR7dC50eXBlLmluZGljZXN9KSAtPiAkeyR9IHtcbiAgICAgICAgdmFyIG91dHB1dF9pbmRleCA9ICR7dC5pbmRpY2VzR2V0KFwib3V0cHV0X2luZGljZXNcIixUKX07XG4gICAgICAgIHZhciBvcmlnaW5hbElkeDogJHskfSA9IGdldE9yaWdpbmFsQ29vcmRpbmF0ZUZyb21SZXNpemVkQ29vcmRpbmF0ZShvdXRwdXRfaW5kZXgsICR7aVtUXX0sXG4gICAgICAgICR7YVtUXX0sICR7cltUXX0sICR7c1tUXX0sICR7c1tUXX0gKyAke3IubGVuZ3RofSk7XG4gICAgICAgIHZhciBmcmFjdE9yaWdpbmFsSWR4OiAkeyR9ID0gb3JpZ2luYWxJZHggLSBmbG9vcihvcmlnaW5hbElkeCk7XG4gICAgICAgIHZhciBjb2VmcyA9IGdldEN1YmljSW50ZXJwb2xhdGlvbkNvZWZzKGZyYWN0T3JpZ2luYWxJZHgpO1xuXG4gICAgICAgIGlmICgke2N9ICYmIChvcmlnaW5hbElkeCA8IDAgfHwgb3JpZ2luYWxJZHggPiAoJHtyW1RdfSAtIDEpKSkge1xuICAgICAgICAgIHJldHVybiAke3B9O1xuICAgICAgICB9XG4gICAgICAgIHZhciBkYXRhOiBhcnJheTwkeyR9LCA0PiA9IGFycmF5PCR7JH0sIDQ+KDAuMCwgMC4wLCAwLjAsIDAuMCk7XG4gICAgICAgIGZvciAodmFyIGk6IGkzMiA9IC0xOyBpIDwgMzsgaSsrKSB7XG4gICAgICAgICAgdmFyICR7Q306ICR7JH0gPSBvcmlnaW5hbElkeCArICR7JH0oaSk7XG4gICAgICAgICAgaWYgKCR7Q30gPCAwIHx8ICR7Q30gPj0gJHtyW1RdfSkge1xuICAgICAgICAgICAgJHsoKCk9Pm0/YGNvZWZzW2kgKyAxXSA9IDAuMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO2A6Yz9gcmV0dXJuICR7cH07YDpgJHtDfSA9IG1heCgwLCBtaW4oJHtDfSwgJHtyW1RdfSAtIDEpKTtgKSgpfTtcbiAgICAgICAgICB9XG4gICAgICAgIHZhciBpbnB1dF9pbmRpY2VzX2NvcHk6ICR7ZS50eXBlLmluZGljZXN9ID0gaW5wdXRfaW5kaWNlcztcbiAgICAgICAgICAke2UuaW5kaWNlc1NldChcImlucHV0X2luZGljZXNfY29weVwiLFQsYHUzMigke0N9KWApfTtcbiAgICAgICAgICBkYXRhW2kgKyAxXSA9ICR7VD09PWI/ZS5nZXRCeUluZGljZXMoXCJpbnB1dF9pbmRpY2VzX2NvcHlcIik6XCJyb3dDdWJpY0ludGVycG9sYXRpb24oaW5wdXRfaW5kaWNlc19jb3B5LCBvdXRwdXRfaW5kaWNlcylcIn07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGN1YmljSW50ZXJwb2xhdGlvbjFEKGRhdGEsIGNvZWZzKTtcbiAgICAgIH1gfTtyZXR1cm5gXG4gICAgJHt4KGIpfTtcbiAgICAke3godyl9O1xuICBmbiBnZXRDdWJpY0ludGVycG9sYXRpb25Db2VmcyhzOiAkeyR9KSAtPiBhcnJheTwkeyR9LCA0PiB7XG4gICAgdmFyIGFic1MgPSBhYnMocyk7XG4gICAgdmFyIGNvZWZmczogYXJyYXk8JHskfSwgND4gPSBhcnJheTwkeyR9LCA0PigwLjAsIDAuMCwgMC4wLCAwLjApO1xuICAgIHZhciBvbmVNaW51c0Fic1M6ICR7JH0gPSAxLjAgLSBhYnNTO1xuICAgIHZhciB0d29NaW51c0Fic1M6ICR7JH0gPSAyLjAgLSBhYnNTO1xuICAgIHZhciBvbmVQbHVzQWJzUzogJHskfSA9IDEuMCArIGFic1M7XG4gICAgY29lZmZzWzBdID0gKCgke299ICogb25lUGx1c0Fic1MgLSA1ICogJHtvfSkgKiBvbmVQbHVzQWJzUyArIDggKiAke299KSAqIG9uZVBsdXNBYnNTIC0gNCAqICR7b307XG4gICAgY29lZmZzWzFdID0gKCgke299ICsgMikgKiBhYnNTIC0gKCR7b30gKyAzKSkgKiBhYnNTICogYWJzUyArIDE7XG4gICAgY29lZmZzWzJdID0gKCgke299ICsgMikgKiBvbmVNaW51c0Fic1MgLSAoJHtvfSArIDMpKSAqIG9uZU1pbnVzQWJzUyAqIG9uZU1pbnVzQWJzUyArIDE7XG4gICAgY29lZmZzWzNdID0gKCgke299ICogdHdvTWludXNBYnNTIC0gNSAqICR7b30pICogdHdvTWludXNBYnNTICsgOCAqICR7b30pICogdHdvTWludXNBYnNTIC0gNCAqICR7b307XG4gICAgcmV0dXJuIGNvZWZmcztcbiAgfVxuXG4gIGZuIGN1YmljSW50ZXJwb2xhdGlvbjFEKHg6IGFycmF5PCR7JH0sIDQ+LCBjb2VmczogYXJyYXk8JHskfSwgND4pIC0+ICR7JH0ge1xuICAgIHZhciBjb2Vmc1N1bTogJHskfSA9IGNvZWZzWzBdICsgY29lZnNbMV0gKyBjb2Vmc1syXSArIGNvZWZzWzNdO1xuICAgIHJldHVybiAoeFswXSAqIGNvZWZzWzBdICsgeFsxXSAqIGNvZWZzWzFdKyB4WzJdICogY29lZnNbMl0rIHhbM10gKiBjb2Vmc1szXSkgLyBjb2Vmc1N1bTtcbiAgfVxuXG4gIGZuIGJpY3ViaWNJbnRlcnBvbGF0aW9uKG91dHB1dF9pbmRpY2VzOiAke3QudHlwZS5pbmRpY2VzfSkgLT4gJHskfSB7XG4gICAgdmFyIGlucHV0X2luZGljZXM6ICR7ZS50eXBlLmluZGljZXN9ID0gb3V0cHV0X2luZGljZXM7XG4gICAgcmV0dXJuIGNvbEN1YmljSW50ZXJwb2xhdGlvbihpbnB1dF9pbmRpY2VzLCBvdXRwdXRfaW5kaWNlcyk7XG4gIH1cbiAgICBgfSxvZj0oZSx0LHIsYSxpKT0+e2xldFtvLGMscCxtLGxdPXIubGVuZ3RoPT09Mz9bLTEsMCwxLDIsLTFdOlswLDIsMyw0LDFdLGc9ZS50eXBlLnZhbHVlO3JldHVybmBcbiAgICBmbiBnZXRJbnB1dFZhbHVlKGJhdGNoOiB1MzIsIGNoYW5uZWw6IHUzMiwgZGVwdGg6dTMyLCBoZWlnaHQ6IHUzMiwgd2lkdGg6IHUzMikgLT4gJHtnfSB7XG4gICAgICB2YXIgaW5wdXRfaW5kaWNlczogJHtlLnR5cGUuaW5kaWNlc307XG4gICAgICAke2UuaW5kaWNlc1NldChcImlucHV0X2luZGljZXNcIixjLGBtYXgoMCwgbWluKGRlcHRoLCAke3JbY119IC0gMSkpYCl9O1xuICAgICAgJHtlLmluZGljZXNTZXQoXCJpbnB1dF9pbmRpY2VzXCIscCxgbWF4KDAsIG1pbihoZWlnaHQsICR7cltwXX0gLSAxKSlgKX07XG4gICAgICAke2UuaW5kaWNlc1NldChcImlucHV0X2luZGljZXNcIixtLGBtYXgoMCwgbWluKHdpZHRoLCAke3JbbV19IC0gMSkpYCl9O1xuICAgICAgJHtSbChlLGwsbywzKX1cbiAgICAgIHJldHVybiAke2UuZ2V0QnlJbmRpY2VzKFwiaW5wdXRfaW5kaWNlc1wiKX07XG4gICAgfVxuXG4gICAgZm4gdHJpbGluZWFySW50ZXJwb2xhdGlvbihvdXRwdXRfaW5kaWNlczogJHt0LnR5cGUuaW5kaWNlc30pIC0+ICR7Z30ge1xuICAgICAgdmFyIG9yaWdpbmFsSW5kaWNlcyA9IGNhbGN1bGF0ZU9yaWdpbmFsSW5kaWNlc0Zyb21PdXRwdXRJbmRpY2VzKG91dHB1dF9pbmRpY2VzKTtcbiAgICAgIHZhciBkZXB0aDoke2d9ID0gb3JpZ2luYWxJbmRpY2VzWyR7Y31dO1xuICAgICAgdmFyIGhlaWdodDoke2d9ID0gb3JpZ2luYWxJbmRpY2VzWyR7cH1dO1xuICAgICAgdmFyIHdpZHRoOiR7Z30gPSBvcmlnaW5hbEluZGljZXNbJHttfV07XG4gICAgICAke2E/YGlmIChkZXB0aCA8IDAgfHwgZGVwdGggPiAoJHtyW2NdfSAtIDEpIHx8IGhlaWdodCA8IDAgfHwgaGVpZ2h0ID4gKCR7cltwXX0gLSAxKSB8fCB3aWR0aCA8IDAgfHwgKHdpZHRoID4gJHtyW21dfSAtIDEpKSB7XG4gICAgICByZXR1cm4gJHtpfTtcbiAgICAgICAgfWA6XCJcIn07XG5cbiAgICBkZXB0aCA9IG1heCgwLCBtaW4oZGVwdGgsICR7cltjXX0gLSAxKSk7XG4gICAgICBoZWlnaHQgPSBtYXgoMCwgbWluKGhlaWdodCwgJHtyW3BdfSAtIDEpKTtcbiAgICAgIHdpZHRoID0gbWF4KDAsIG1pbih3aWR0aCwgJHtyW21dfSAtIDEpKTtcbiAgICAgIHZhciBkZXB0aDE6IHUzMiA9IHUzMihkZXB0aCk7XG4gICAgICB2YXIgaGVpZ2h0MTogdTMyID0gdTMyKGhlaWdodCk7XG4gICAgICB2YXIgd2lkdGgxOiB1MzIgPSB1MzIod2lkdGgpO1xuICAgICAgdmFyIGRlcHRoMjogdTMyID0gdTMyKGRlcHRoICsgMSk7XG4gICAgICB2YXIgaGVpZ2h0MjogdTMyID0gdTMyKGhlaWdodCArIDEpO1xuICAgICAgdmFyIHdpZHRoMjogdTMyID0gdTMyKHdpZHRoICsgMSk7XG4gICAgICB2YXIgY2hhbm5lbDogdTMyID0gJHtyLmxlbmd0aD4zP2B1MzIob3JpZ2luYWxJbmRpY2VzWyR7bH1dKWA6XCIwXCJ9O1xuICAgICAgdmFyIGJhdGNoOiB1MzIgPSAgJHtyLmxlbmd0aD4zP2B1MzIob3JpZ2luYWxJbmRpY2VzWyR7b31dKWA6XCIwXCJ9O1xuXG4gICAgICB2YXIgeDExMTogJHtnfSA9IGdldElucHV0VmFsdWUoYmF0Y2gsIGNoYW5uZWwsIGRlcHRoMSwgaGVpZ2h0MSwgd2lkdGgxKTtcbiAgICAgIHZhciB4MTEyOiAke2d9ID0gZ2V0SW5wdXRWYWx1ZShiYXRjaCwgY2hhbm5lbCwgZGVwdGgxLCBoZWlnaHQxLCB3aWR0aDIpO1xuICAgICAgdmFyIHgxMjE6ICR7Z30gPSBnZXRJbnB1dFZhbHVlKGJhdGNoLCBjaGFubmVsLCBkZXB0aDEsIGhlaWdodDIsIHdpZHRoMSk7XG4gICAgICB2YXIgeDEyMjogJHtnfSA9IGdldElucHV0VmFsdWUoYmF0Y2gsIGNoYW5uZWwsIGRlcHRoMSwgaGVpZ2h0Miwgd2lkdGgyKTtcbiAgICAgIHZhciB4MjExOiAke2d9ID0gZ2V0SW5wdXRWYWx1ZShiYXRjaCwgY2hhbm5lbCwgZGVwdGgyLCBoZWlnaHQxLCB3aWR0aDEpO1xuICAgICAgdmFyIHgyMTI6ICR7Z30gPSBnZXRJbnB1dFZhbHVlKGJhdGNoLCBjaGFubmVsLCBkZXB0aDIsIGhlaWdodDEsIHdpZHRoMik7XG4gICAgICB2YXIgeDIyMTogJHtnfSA9IGdldElucHV0VmFsdWUoYmF0Y2gsIGNoYW5uZWwsIGRlcHRoMiwgaGVpZ2h0Miwgd2lkdGgxKTtcbiAgICAgIHZhciB4MjIyOiAke2d9ID0gZ2V0SW5wdXRWYWx1ZShiYXRjaCwgY2hhbm5lbCwgZGVwdGgyLCBoZWlnaHQyLCB3aWR0aDIpO1xuICAgICAgdmFyIGR4MTogJHtnfSA9IGFicyhkZXB0aCAtICR7Z30oZGVwdGgxKSk7XG4gICAgICB2YXIgZHgyOiAke2d9ID0gYWJzKCR7Z30oZGVwdGgyKSAtIGRlcHRoKTtcbiAgICAgIHZhciBkeTE6ICR7Z30gPSBhYnMoaGVpZ2h0IC0gJHtnfShoZWlnaHQxKSk7XG4gICAgICB2YXIgZHkyOiAke2d9ID0gYWJzKCR7Z30oaGVpZ2h0MikgLSBoZWlnaHQpO1xuICAgICAgdmFyIGR6MTogJHtnfSA9IGFicyh3aWR0aCAtICR7Z30od2lkdGgxKSk7XG4gICAgICB2YXIgZHoyOiAke2d9ID0gYWJzKCR7Z30od2lkdGgyKSAtIHdpZHRoKTtcbiAgICAgIGlmIChkZXB0aDEgPT0gZGVwdGgyKSB7XG4gICAgICAgIGR4MSA9IDAuNTtcbiAgICAgICAgZHgyID0gMC41O1xuICAgICAgfVxuICAgICAgaWYgKGhlaWdodDEgPT0gaGVpZ2h0Mikge1xuICAgICAgICBkeTEgPSAwLjU7XG4gICAgICAgIGR5MiA9IDAuNTtcbiAgICAgIH1cbiAgICAgIGlmICh3aWR0aDEgPT0gd2lkdGgyKSB7XG4gICAgICAgIGR6MSA9IDAuNTtcbiAgICAgICAgZHoyID0gMC41O1xuICAgICAgfVxuICAgICAgcmV0dXJuICh4MTExICogZHgyICogZHkyICogZHoyICsgeDExMiAqIGR4MiAqIGR5MiAqIGR6MSArIHgxMjEgKiBkeDIgKiBkeTEgKmR6MiArIHgxMjIgKiBkeDIgKiBkeTEgKiBkejEgK1xuICAgICAgICAgICAgICB4MjExICogZHgxICogZHkyICogZHoyICsgeDIxMiAqIGR4MSAqIGR5MiAqIGR6MSArIHgyMjEgKiBkeDEgKiBkeTEgKmR6MiArIHgyMjIgKiBkeDEgKiBkeTEgKiBkejEpO1xuICAgIH1gfSxzZj0oZSx0LHIsYSxpLHMpPT57bGV0IG89ZS5kaW1zLGM9WHAocyx0LmF4ZXMsby5sZW5ndGgpLHA9UXAobyxhLGksdC5heGVzKSxtPWEuc2xpY2UoKTthLmxlbmd0aD09PTAmJihtPW8ubWFwKChTLEUpPT5TPT09MD8xOnBbRV0vUyksdC5rZWVwQXNwZWN0UmF0aW9Qb2xpY3khPT1cInN0cmV0Y2hcIiYmKHA9SnAobyxtLHQpKSk7bGV0IGw9SihcIm91dHB1dFwiLGUuZGF0YVR5cGUscC5sZW5ndGgpLGc9VyhcImlucHV0XCIsZS5kYXRhVHlwZSxvLmxlbmd0aCksYj1OLnNpemUocCksdz1vLmxlbmd0aD09PXAubGVuZ3RoJiZvLmV2ZXJ5KChTLEUpPT5TPT09cFtFXSksJD10LmNvb3JkaW5hdGVUcmFuc2Zvcm1Nb2RlPT09XCJ0Zl9jcm9wX2FuZF9yZXNpemVcIix4PXQuZXh0cmFwb2xhdGlvblZhbHVlLFQ9Zy50eXBlLnZhbHVlLEM9Uz0+YFxuICAgICAgJHt3P1wiXCI6YFxuICAgICAgJHtZcCh0LmNvb3JkaW5hdGVUcmFuc2Zvcm1Nb2RlLFQpfTtcbiAgICAgICR7KCgpPT57c3dpdGNoKHQubW9kZSl7Y2FzZVwibmVhcmVzdFwiOnJldHVybmBcbiAgICAgICAgICAgICAgJHtyZihnLG8pfTtcbiAgICAgICAgICAgICAgJHtacCh0Lm5lYXJlc3RNb2RlLHIsVCl9O1xuICAgICAgICAgICAgICAke3RmKGcsbCxvLHAsbS5sZW5ndGgsYy5sZW5ndGgsJCl9O1xuICAgICAgICAgICAgICBgO2Nhc2VcImxpbmVhclwiOnJldHVybmBcbiAgICAgICAgICAgICAgJHtlZihsLG8scCxtLmxlbmd0aCxjLmxlbmd0aCl9O1xuICAgICAgICAgICAgICAkeygoKT0+e2lmKG8ubGVuZ3RoPT09Mnx8by5sZW5ndGg9PT00KXJldHVybmAke25mKGcsbCxvLCQseCl9YDtpZihvLmxlbmd0aD09PTN8fG8ubGVuZ3RoPT09NSlyZXR1cm5gJHtvZihnLGwsbywkLHgpfWA7dGhyb3cgRXJyb3IoXCJMaW5lYXIgbW9kZSBvbmx5IHN1cHBvcnRzIGlucHV0IGRpbXMgMiwgMywgNCBhbmQgNSBhcmUgc3VwcG9ydGVkIGluIGxpbmVhciBtb2RlLlwiKX0pKCl9O1xuICAgICAgICAgICAgYDtjYXNlXCJjdWJpY1wiOnJldHVybmBcbiAgICAgICAgICAgICR7KCgpPT57aWYoby5sZW5ndGg9PT0yfHxvLmxlbmd0aD09PTQpcmV0dXJuYCR7YWYoZyxsLG8scCxtLGMsdC5jdWJpY0NvZWZmQSwkLHQuZXh0cmFwb2xhdGlvblZhbHVlLHQuZXhjbHVkZU91dHNpZGUpfWA7dGhyb3cgRXJyb3IoXCJDdWJpYyBtb2RlIG9ubHkgc3VwcG9ydHMgaW5wdXQgZGltcyAyIGFuZCA0IGFyZSBzdXBwb3J0ZWQgaW4gbGluZWFyIG1vZGUuXCIpfSkoKX07XG4gICAgICAgICAgICBgO2RlZmF1bHQ6dGhyb3cgRXJyb3IoXCJJbnZhbGlkIHJlc2l6ZSBtb2RlXCIpfX0pKCl9O1xuICAgICAgYH1cbiAgICAgICR7Uy5yZWdpc3RlclVuaWZvcm0oXCJvdXRwdXRfc2l6ZVwiLFwidTMyXCIpLnJlZ2lzdGVyVW5pZm9ybShcInNjYWxlc1wiLFwiZjMyXCIsbS5sZW5ndGgpLnJlZ2lzdGVyVW5pZm9ybShcInJvaVwiLFwiZjMyXCIsYy5sZW5ndGgpLmRlY2xhcmVWYXJpYWJsZXMoZyxsKX1cbiAgICAgICR7Uy5tYWluU3RhcnQoKX1cbiAgICAgICAgJHtTLmd1YXJkQWdhaW5zdE91dE9mQm91bmRzV29ya2dyb3VwU2l6ZXMoXCJ1bmlmb3Jtcy5vdXRwdXRfc2l6ZVwiKX1cbiAgICAgICAgJHt3P1wib3V0cHV0W2dsb2JhbF9pZHhdID0gaW5wdXRbZ2xvYmFsX2lkeF07XCI6YFxuICAgICAgICBsZXQgb3V0cHV0X2luZGljZXMgPSAke2wub2Zmc2V0VG9JbmRpY2VzKFwiZ2xvYmFsX2lkeFwiKX07XG4gICAgICAgIHZhciBpbnB1dF9pbmRpY2VzOiAke2cudHlwZS5pbmRpY2VzfTtcbiAgICAgICAgJHsoKCk9Pntzd2l0Y2godC5tb2RlKXtjYXNlXCJuZWFyZXN0XCI6cmV0dXJuYGlucHV0X2luZGljZXMgPSBjYWxjdWxhdGVJbnB1dEluZGljZXNGcm9tT3V0cHV0SW5kaWNlcyhvdXRwdXRfaW5kaWNlcyk7XG4gICAgICAgICAgICAgICAgaWYgKGNoZWNrSW5wdXRJbmRpY2VzKGlucHV0X2luZGljZXMpKSB7XG4gICAgICAgICAgICAgICAgICBvdXRwdXRbZ2xvYmFsX2lkeF0gPSAke2cuZ2V0QnlJbmRpY2VzKFwiaW5wdXRfaW5kaWNlc1wiKX07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIG91dHB1dFtnbG9iYWxfaWR4XSA9ICR7dC5leHRyYXBvbGF0aW9uVmFsdWV9O1xuICAgICAgICAgICAgICAgIH1gO2Nhc2VcImxpbmVhclwiOnJldHVybmBvdXRwdXRbZ2xvYmFsX2lkeF0gPSAke28ubGVuZ3RoPT09Mnx8by5sZW5ndGg9PT00P1wiYmlsaW5lYXJJbnRlcnBvbGF0aW9uXCI6XCJ0cmlsaW5lYXJJbnRlcnBvbGF0aW9uXCJ9KG91dHB1dF9pbmRpY2VzKTtgO2Nhc2VcImN1YmljXCI6cmV0dXJuXCJvdXRwdXRbZ2xvYmFsX2lkeF0gPSBiaWN1YmljSW50ZXJwb2xhdGlvbihvdXRwdXRfaW5kaWNlcyk7XCI7ZGVmYXVsdDp0aHJvdyBFcnJvcihgVW5zdXBwb3J0ZWQgcmVzaXplIG1vZGU6ICR7dC5tb2RlfWApfX0pKCl9O1xuYH1cbiAgICAgIH1gO3JldHVybntuYW1lOlwiUmVzaXplXCIsc2hhZGVyQ2FjaGU6e2hpbnQ6YCR7dC5jYWNoZUtleX18JHtyfXwke20ubGVuZ3RoPjA/bTpcIlwifXwke2kubGVuZ3RoPjA/aTpcIlwifXwke2MubGVuZ3RoPjA/YzpcIlwifXwke3d9fCR7b31gLGlucHV0RGVwZW5kZW5jaWVzOltcInJhbmtcIl19LGdldFNoYWRlclNvdXJjZTpDLGdldFJ1bkRhdGE6KCk9Pih7b3V0cHV0czpbe2RpbXM6cCxkYXRhVHlwZTplLmRhdGFUeXBlfV0sZGlzcGF0Y2hHcm91cDp7eDpNYXRoLmNlaWwoYi82NCl9LHByb2dyYW1Vbmlmb3Jtczpbe3R5cGU6XCJ1aW50MzJcIixkYXRhOmJ9LHt0eXBlOlwiZmxvYXQzMlwiLGRhdGE6bX0se3R5cGU6XCJmbG9hdDMyXCIsZGF0YTpjfSwuLi5MKG8pLC4uLkwocCldfSl9fSx1Zj1lPT57bGV0IHQ9ZS5jdXN0b21EYXRhQnVmZmVyO3JldHVybiBuZXcgVWludDMyQXJyYXkodCx0LmJ5dGVPZmZzZXQsMSlbMF19LEJsPShlLHQpPT57bGV0IHI9W10sYT1bXSxpPVtdLHM9dWYoZSk7aWYodC5hbnRpYWxpYXMhPT0wKXRocm93IEVycm9yKFwiT25seSBkZWZhdWx0IHZhbHVlICgwKSBmb3IgQW50aWFsaWFzIGF0dHJpYnV0ZSBpcyBzdXBwb3J0ZWRcIik7S3AoZS5pbnB1dHMsdCxzLHIsYSxpKSxlLmNvbXB1dGUoc2YoZS5pbnB1dHNbMF0sdCxzLHIsYSxpKSx7aW5wdXRzOlswXX0pfSxNbD1lPT57bGV0IHQ9ZS5hbnRpYWxpYXMscj1lLmF4ZXMsYT1lLmNvb3JkaW5hdGVUcmFuc2Zvcm1Nb2RlLGk9ZS5jdWJpY0NvZWZmQSxzPWUuZXhjbHVkZU91dHNpZGUhPT0wLG89ZS5leHRyYXBvbGF0aW9uVmFsdWUsYz1lLmtlZXBBc3BlY3RSYXRpb1BvbGljeSxwPWUubW9kZSxtPWUubmVhcmVzdE1vZGU9PT1cIlwiP1wic2ltcGxlXCI6ZS5uZWFyZXN0TW9kZTtyZXR1cm4geGUoe2FudGlhbGlhczp0LGF4ZXM6cixjb29yZGluYXRlVHJhbnNmb3JtTW9kZTphLGN1YmljQ29lZmZBOmksZXhjbHVkZU91dHNpZGU6cyxleHRyYXBvbGF0aW9uVmFsdWU6byxrZWVwQXNwZWN0UmF0aW9Qb2xpY3k6Yyxtb2RlOnAsbmVhcmVzdE1vZGU6bX0pfX0pO3ZhciBsZixkZix6bCxVbD1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7emUoKTtDZSgpO19lKCk7bGY9ZT0+e2lmKCFlfHxlLmxlbmd0aDwzKXRocm93IG5ldyBFcnJvcihcImxheWVyTm9ybSByZXF1aXJlcyBhdCBsZWFzdCAzIGlucHV0cy5cIik7bGV0IHQ9ZVswXSxyPWVbMV0sYT1lWzJdO2lmKHQuZGF0YVR5cGUhPT1yLmRhdGFUeXBlfHx0LmRhdGFUeXBlIT09YS5kYXRhVHlwZSl0aHJvdyBuZXcgRXJyb3IoXCJBbGwgaW5wdXRzIG11c3QgaGF2ZSB0aGUgc2FtZSBkYXRhIHR5cGVcIik7aWYodC5kaW1zLmxlbmd0aCE9PTMmJnQuZGltcy5sZW5ndGghPT0yKXRocm93IG5ldyBFcnJvcihcIklucHV0IG11c3QgYmUgMkQgb3IgM0RcIik7aWYoci5kaW1zLmxlbmd0aCE9PTMmJnIuZGltcy5sZW5ndGghPT0yKXRocm93IG5ldyBFcnJvcihcIlNraXAgbXVzdCBiZSAyRCBvciAzRFwiKTtsZXQgaT10LmRpbXNbdC5kaW1zLmxlbmd0aC0xXSxzPXQuZGltc1t0LmRpbXMubGVuZ3RoLTJdO2lmKHIuZGltc1tyLmRpbXMubGVuZ3RoLTFdIT09aSl0aHJvdyBuZXcgRXJyb3IoXCJTa2lwIG11c3QgaGF2ZSB0aGUgc2FtZSBoaWRkZW4gc2l6ZSBhcyBpbnB1dFwiKTtpZihyLmRpbXNbci5kaW1zLmxlbmd0aC0yXSE9PXMpdGhyb3cgbmV3IEVycm9yKFwiU2tpcCBtdXN0IGhhdmUgdGhlIHNhbWUgc2VxdWVuY2UgbGVuZ3RoIGFzIGlucHV0XCIpO2lmKGEuZGltcy5sZW5ndGghPT0xKXRocm93IG5ldyBFcnJvcihcIkdhbW1hIG11c3QgYmUgMURcIik7aWYoYS5kaW1zW2EuZGltcy5sZW5ndGgtMV0hPT1pKXRocm93IG5ldyBFcnJvcihcIkdhbW1hIG11c3QgaGF2ZSB0aGUgc2FtZSBoaWRkZW4gc2l6ZSBhcyBpbnB1dFwiKTtpZihlLmxlbmd0aD4zKXtsZXQgbz1lWzNdO2lmKG8uZGltcy5sZW5ndGghPT0xKXRocm93IG5ldyBFcnJvcihcIkJldGEgbXVzdCBiZSAxRFwiKTtpZihvLmRpbXNbby5kaW1zLmxlbmd0aC0xXSE9PWkpdGhyb3cgbmV3IEVycm9yKFwiQmV0YSBtdXN0IGhhdmUgdGhlIHNhbWUgaGlkZGVuIHNpemUgYXMgaW5wdXRcIil9aWYoZS5sZW5ndGg+NCl7bGV0IG89ZVs0XTtpZihvLmRpbXMubGVuZ3RoIT09MSl0aHJvdyBuZXcgRXJyb3IoXCJCaWFzIG11c3QgYmUgMURcIik7aWYoby5kaW1zW28uZGltcy5sZW5ndGgtMV0hPT1pKXRocm93IG5ldyBFcnJvcihcIkJpYXMgbXVzdCBoYXZlIHRoZSBzYW1lIGhpZGRlbiBzaXplIGFzIGlucHV0XCIpfX0sZGY9KGUsdCxyLGEpPT57bGV0IGk9ZVswXS5kaW1zLHM9Ti5zaXplKGkpLG89aSxjPXMscD1pLnNsaWNlKC0xKVswXSxtPWE/aS5zbGljZSgwLC0xKS5jb25jYXQoMSk6W10sbD1lLmxlbmd0aD4zLGc9ZS5sZW5ndGg+NCxiPWEmJnI+MSx3PWEmJnI+MiwkPXI+Myx4PUxlKHApLFQ9W3t0eXBlOlwidWludDMyXCIsZGF0YTpjfSx7dHlwZTpcInVpbnQzMlwiLGRhdGE6eH0se3R5cGU6XCJ1aW50MzJcIixkYXRhOnB9LHt0eXBlOlwiZmxvYXQzMlwiLGRhdGE6dC5lcHNpbG9ufV0sQz1FPT57bGV0IE89W3tuYW1lOlwib3V0cHV0X3NpemVcIix0eXBlOlwidTMyXCJ9LHtuYW1lOlwiY29tcG9uZW50c1wiLHR5cGU6XCJ1MzJcIn0se25hbWU6XCJoaWRkZW5fc2l6ZVwiLHR5cGU6XCJ1MzJcIn0se25hbWU6XCJlcHNpbG9uXCIsdHlwZTpcImYzMlwifV0sVT1bVyhcInhcIixlWzBdLmRhdGFUeXBlLGVbMF0uZGltcyx4KSxXKFwic2tpcFwiLGVbMV0uZGF0YVR5cGUsZVsxXS5kaW1zLHgpLFcoXCJnYW1tYVwiLGVbMl0uZGF0YVR5cGUsZVsyXS5kaW1zLHgpXTtsJiZVLnB1c2goVyhcImJldGFcIixlWzNdLmRhdGFUeXBlLGVbM10uZGltcyx4KSksZyYmVS5wdXNoKFcoXCJiaWFzXCIsZVs0XS5kYXRhVHlwZSxlWzRdLmRpbXMseCkpLFUucHVzaChKKFwib3V0cHV0XCIsZVswXS5kYXRhVHlwZSxvLHgpKSxiJiZVLnB1c2goSihcIm1lYW5fb3V0cHV0XCIsMSxtKSksdyYmVS5wdXNoKEooXCJpbnZfc3RkX291dHB1dFwiLDEsbSkpLCQmJlUucHVzaChKKFwiaW5wdXRfc2tpcF9iaWFzX3N1bVwiLGVbMF0uZGF0YVR5cGUsbyx4KSk7bGV0IEQ9SGUoZVswXS5kYXRhVHlwZSk7cmV0dXJuYFxuXG4gICAgICAke0UucmVnaXN0ZXJVbmlmb3JtcyhPKS5kZWNsYXJlVmFyaWFibGVzKC4uLlUpfVxuXG4gICAgICAke0UubWFpblN0YXJ0KCl9XG4gICAgICAgICR7RS5ndWFyZEFnYWluc3RPdXRPZkJvdW5kc1dvcmtncm91cFNpemVzKFwidW5pZm9ybXMub3V0cHV0X3NpemUgLyB1bmlmb3Jtcy5oaWRkZW5fc2l6ZVwiKX1cbiAgICAgICAgbGV0IGhpZGRlbl9zaXplX3ZlY3Rvcml6ZWQ6IHUzMiA9IHVuaWZvcm1zLmhpZGRlbl9zaXplIC8gdW5pZm9ybXMuY29tcG9uZW50cztcbiAgICAgICAgbGV0IG9mZnNldCA9IGdsb2JhbF9pZHggKiBoaWRkZW5fc2l6ZV92ZWN0b3JpemVkO1xuICAgICAgICB2YXIgc3VtID0gJHtRZShcImYzMlwiLHgpfTtcbiAgICAgICAgdmFyIHNxdWFyZVN1bSA9ICR7UWUoXCJmMzJcIix4KX07XG4gICAgICAgIGZvciAodmFyIGk6IHUzMiA9IDA7IGkgPCBoaWRkZW5fc2l6ZV92ZWN0b3JpemVkOyBpKyspIHtcbiAgICAgICAgICBsZXQgc2tpcF92YWx1ZSA9IHNraXBbb2Zmc2V0ICsgaV07XG4gICAgICAgICAgbGV0IGJpYXNfdmFsdWUgPSAke2c/XCJiaWFzW2ldXCI6XCIwLjBcIn07XG4gICAgICAgICAgbGV0IGlucHV0X3ZhbHVlID0geFtvZmZzZXQgKyBpXTtcbiAgICAgICAgICBsZXQgdmFsdWUgPSBpbnB1dF92YWx1ZSArIHNraXBfdmFsdWUgKyBiaWFzX3ZhbHVlO1xuICAgICAgICAgICR7JD9cImlucHV0X3NraXBfYmlhc19zdW1bb2Zmc2V0ICsgaV0gPSB2YWx1ZTtcIjpcIlwifVxuICAgICAgICAgIG91dHB1dFtvZmZzZXQgKyBpXSA9IHZhbHVlO1xuICAgICAgICAgIGxldCBmMzJfdmFsdWUgPSAke1N0KEQseCxcInZhbHVlXCIpfTtcbiAgICAgICAgICBzdW0gKz0gZjMyX3ZhbHVlO1xuICAgICAgICAgIHNxdWFyZVN1bSArPSBmMzJfdmFsdWUgKiBmMzJfdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IG1lYW4gPSAke2Z0KFwic3VtXCIseCl9IC8gZjMyKHVuaWZvcm1zLmhpZGRlbl9zaXplKTtcbiAgICAgICAgbGV0IGludl9zdGRfZGV2ID0gaW52ZXJzZVNxcnQoJHtmdChcInNxdWFyZVN1bVwiLHgpfSAvIGYzMih1bmlmb3Jtcy5oaWRkZW5fc2l6ZSkgLSBtZWFuICogbWVhbiArIHVuaWZvcm1zLmVwc2lsb24pO1xuICAgICAgICAke2I/XCJtZWFuX291dHB1dFtnbG9iYWxfaWR4XSA9IG1lYW47XCI6XCJcIn1cbiAgICAgICAgJHt3P1wiaW52X3N0ZF9vdXRwdXRbZ2xvYmFsX2lkeF0gPSBpbnZfc3RkX2RldjtcIjpcIlwifVxuICAgICAgICBmb3IgKHZhciBpOiB1MzIgPSAwOyBpIDwgaGlkZGVuX3NpemVfdmVjdG9yaXplZDsgaSsrKSB7XG4gICAgICAgICAgb3V0cHV0W29mZnNldCArIGldID0gKG91dHB1dFtvZmZzZXQgKyBpXSAtICR7RH0obWVhbikpICogJHtEfShpbnZfc3RkX2RldikgKiBnYW1tYVtpXSArICR7bD9cImJldGFbaV1cIjpcIjAuMFwifTtcbiAgICAgICAgfVxuICAgICAgfWB9LFM9W3tkaW1zOm8sZGF0YVR5cGU6ZVswXS5kYXRhVHlwZX1dO3JldHVybiByPjEmJlMucHVzaCh7ZGltczptLGRhdGFUeXBlOjF9KSxyPjImJlMucHVzaCh7ZGltczptLGRhdGFUeXBlOjF9KSxyPjMmJlMucHVzaCh7ZGltczppLGRhdGFUeXBlOmVbMF0uZGF0YVR5cGV9KSx7bmFtZTpcIlNraXBMYXllck5vcm1hbGl6YXRpb25cIixzaGFkZXJDYWNoZTp7aGludDpgJHt4fTske2J9OyR7d307JHskfWAsaW5wdXREZXBlbmRlbmNpZXM6ZS5tYXAoKEUsTyk9PlwidHlwZVwiKX0sZ2V0U2hhZGVyU291cmNlOkMsZ2V0UnVuRGF0YTooKT0+KHtvdXRwdXRzOlMsZGlzcGF0Y2hHcm91cDp7eDpNYXRoLmNlaWwoYy9wLzY0KX0scHJvZ3JhbVVuaWZvcm1zOlR9KX19LHpsPShlLHQpPT57bGYoZS5pbnB1dHMpO2xldCBhPVswXTtlLm91dHB1dENvdW50PjEmJmEucHVzaCgtMyksZS5vdXRwdXRDb3VudD4yJiZhLnB1c2goLTMpLGUub3V0cHV0Q291bnQ+MyYmYS5wdXNoKDMpLGUuY29tcHV0ZShkZihlLmlucHV0cyx0LGUub3V0cHV0Q291bnQsITEpLHtvdXRwdXRzOmF9KX19KTt2YXIgY2YsaWEscGYsV2wsZmYsbWYsTmwsVmwsSGw9USgoKT0+e1widXNlIHN0cmljdFwiO3plKCk7Q2UoKTtYZSgpO19lKCk7Y2Y9KGUsdCk9PntpZighZXx8ZS5sZW5ndGg8MSl0aHJvdyBuZXcgRXJyb3IoXCJ0b28gZmV3IGlucHV0c1wiKTtpZih0LmF4ZXMubGVuZ3RoIT09MCl7aWYodC5heGVzLmxlbmd0aCE9PXQuc3RhcnRzLmxlbmd0aHx8dC5heGVzLmxlbmd0aCE9PXQuZW5kcy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKFwiYXhlcywgc3RhcnRzIGFuZCBlbmRzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIil9ZWxzZSBpZih0LnN0YXJ0cy5sZW5ndGghPT10LmVuZHMubGVuZ3RoKXRocm93IG5ldyBFcnJvcihcInN0YXJ0cyBhbmQgZW5kcyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCIpO2Uuc2xpY2UoMSkuZm9yRWFjaCgocixhKT0+e2lmKGVbYSsxXS5kYXRhVHlwZSE9PTYmJmVbYSsxXS5kYXRhVHlwZSE9PTcpdGhyb3cgbmV3IEVycm9yKGBJbnB1dCAke2F9IG11c3QgYmUgYW4gYXJyYXkgb2YgaW50MzIgb3IgaW50NjRgKX0pfSxpYT0oZSx0KT0+e2xldCByPVtdO2lmKGUubGVuZ3RoPnQpaWYoZVt0XS5kYXRhVHlwZT09PTcpZVt0XS5nZXRCaWdJbnQ2NEFycmF5KCkuZm9yRWFjaChhPT5yLnB1c2goTnVtYmVyKGEpKSk7ZWxzZSBpZihlW3RdLmRhdGFUeXBlPT09NillW3RdLmdldEludDMyQXJyYXkoKS5mb3JFYWNoKGE9PnIucHVzaChOdW1iZXIoYSkpKTtlbHNlIHRocm93IG5ldyBFcnJvcihgSW5wdXQgJHt0fSBtdXN0IGJlIGFuIGFycmF5IG9mIGludDMyIG9yIGludDY0YCk7cmV0dXJuIHJ9LHBmPShlLHQpPT57aWYoZS5sZW5ndGg+MSl7bGV0IHI9aWEoZSwxKSxhPWlhKGUsMiksaT1pYShlLDMpO3JldHVybiBpLmxlbmd0aD09PTAmJihpPVsuLi5BcnJheShlWzBdLmRpbXMubGVuZ3RoKS5rZXlzKCldKSx4ZSh7c3RhcnRzOnIsZW5kczphLGF4ZXM6aX0pfWVsc2UgcmV0dXJuIHR9LFdsPShlLHQscixhLGkpPT57bGV0IHM9ZTtyZXR1cm4gZTwwJiYocys9clthW3RdXSksaVt0XTwwP01hdGgubWF4KDAsTWF0aC5taW4ocyxyW2FbdF1dLTEpKTpNYXRoLm1heCgwLE1hdGgubWluKHMsclthW3RdXSkpfSxmZj0oZSx0LHIpPT5gZm4gY2FsY3VsYXRlSW5wdXRJbmRpY2VzKG91dHB1dF9pbmRpY2VzOiAke3QudHlwZS5pbmRpY2VzfSkgLT4gJHtlLnR5cGUuaW5kaWNlc30ge1xuICAgICAgICAgIHZhciBpbnB1dF9pbmRpY2VzOiAke2UudHlwZS5pbmRpY2VzfTtcbiAgICAgICAgICB2YXIgY2FycnkgPSAwdTtcbiAgICAgICAgICBmb3IgKHZhciBpID0gJHtyLmxlbmd0aH07IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBsZXQgaW5wdXRfc2hhcGVfaSA9ICR7Y2UoXCJ1bmlmb3Jtcy5pbnB1dF9zaGFwZVwiLFwiaVwiLHIubGVuZ3RoKX07XG4gICAgICAgICAgICBsZXQgc3RlcHNfaSA9ICR7Y2UoXCJ1bmlmb3Jtcy5zdGVwc1wiLFwiaVwiLHIubGVuZ3RoKX07XG4gICAgICAgICAgICBsZXQgc2lnbnNfaSA9ICR7Y2UoXCJ1bmlmb3Jtcy5zaWduc1wiLFwiaVwiLHIubGVuZ3RoKX07XG4gICAgICAgICAgICBsZXQgc3RhcnRzX2kgPSAke2NlKFwidW5pZm9ybXMuc3RhcnRzXCIsXCJpXCIsci5sZW5ndGgpfTtcbiAgICAgICAgICAgIHZhciBvdXRwdXRfaW5kZXggPSAke3QuaW5kaWNlc0dldChcIm91dHB1dF9pbmRpY2VzXCIsXCJpXCIpfTtcbiAgICAgICAgICAgIHZhciBpbnB1dF9pbmRleCA9IG91dHB1dF9pbmRleCAqIHN0ZXBzX2kgKyBzdGFydHNfaSArIGNhcnJ5O1xuICAgICAgICAgICAgY2FycnkgPSBpbnB1dF9pbmRleCAvIGlucHV0X3NoYXBlX2k7XG4gICAgICAgICAgICBpbnB1dF9pbmRleCA9IGlucHV0X2luZGV4ICUgaW5wdXRfc2hhcGVfaTtcbiAgICAgICAgICAgIGlmIChzaWduc19pIDwgMCkge1xuICAgICAgICAgICAgICBpbnB1dF9pbmRleCA9IGlucHV0X3NoYXBlX2kgLSBpbnB1dF9pbmRleCAtIDF1ICsgc3RhcnRzX2k7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAke2UuaW5kaWNlc1NldChcImlucHV0X2luZGljZXNcIixcImlcIixcImlucHV0X2luZGV4XCIpfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGlucHV0X2luZGljZXM7XG4gICAgICB9YCxtZj0oZSx0KT0+e2xldCByPWVbMF0uZGltcyxhPU4uc2l6ZShyKSxpPXQuYXhlcy5sZW5ndGg+MD9OLm5vcm1hbGl6ZUF4ZXModC5heGVzLHIubGVuZ3RoKTpbLi4uQXJyYXkoci5sZW5ndGgpLmtleXMoKV0scz1pYShlLDQpO3MuZm9yRWFjaChDPT5DIT09MHx8KCgpPT57dGhyb3cgbmV3IEVycm9yKFwic3RlcCBjYW5ub3QgYmUgMFwiKX0pKSxzLmxlbmd0aD09PTAmJihzPUFycmF5KGkubGVuZ3RoKS5maWxsKDEpKTtsZXQgbz10LnN0YXJ0cy5tYXAoKEMsUyk9PldsKEMsUyxyLGkscykpLGM9dC5lbmRzLm1hcCgoQyxTKT0+V2woQyxTLHIsaSxzKSk7aWYoaS5sZW5ndGghPT1vLmxlbmd0aHx8aS5sZW5ndGghPT1jLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoXCJzdGFydCwgZW5kcyBhbmQgYXhlcyBzaG91bGQgaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2YgZWxlbWVudHNcIik7aWYoaS5sZW5ndGghPT1yLmxlbmd0aClmb3IobGV0IEM9MDtDPHIubGVuZ3RoOysrQylpLmluY2x1ZGVzKEMpfHwoby5zcGxpY2UoQywwLDApLGMuc3BsaWNlKEMsMCxyW0NdKSxzLnNwbGljZShDLDAsMSkpO2xldCBwPXMubWFwKEM9Pk1hdGguc2lnbihDKSk7cy5mb3JFYWNoKChDLFMsRSk9PntpZihDPDApe2xldCBPPShjW1NdLW9bU10pL0MsVT1vW1NdLEQ9VStPKnNbU107b1tTXT1ELGNbU109VSxFW1NdPS1DfX0pO2xldCBtPXIuc2xpY2UoMCk7aS5mb3JFYWNoKChDLFMpPT57bVtDXT1NYXRoLmNlaWwoKGNbQ10tb1tDXSkvc1tDXSl9KTtsZXQgbD17ZGltczptLGRhdGFUeXBlOmVbMF0uZGF0YVR5cGV9LGc9SihcIm91dHB1dFwiLGVbMF0uZGF0YVR5cGUsbS5sZW5ndGgpLGI9VyhcImlucHV0XCIsZVswXS5kYXRhVHlwZSxlWzBdLmRpbXMubGVuZ3RoKSx3PU4uc2l6ZShtKSwkPVt7bmFtZTpcIm91dHB1dFNpemVcIix0eXBlOlwidTMyXCJ9LHtuYW1lOlwic3RhcnRzXCIsdHlwZTpcInUzMlwiLGxlbmd0aDpvLmxlbmd0aH0se25hbWU6XCJzaWduc1wiLHR5cGU6XCJpMzJcIixsZW5ndGg6cC5sZW5ndGh9LHtuYW1lOlwic3RlcHNcIix0eXBlOlwidTMyXCIsbGVuZ3RoOnMubGVuZ3RofV0seD1be3R5cGU6XCJ1aW50MzJcIixkYXRhOnd9LHt0eXBlOlwidWludDMyXCIsZGF0YTpvfSx7dHlwZTpcImludDMyXCIsZGF0YTpwfSx7dHlwZTpcInVpbnQzMlwiLGRhdGE6c30sLi4uTChlWzBdLmRpbXMpLC4uLkwobSldLFQ9Qz0+YFxuICAgICAgJHtDLnJlZ2lzdGVyVW5pZm9ybXMoJCkuZGVjbGFyZVZhcmlhYmxlcyhiLGcpfVxuICAgICAgICAke2ZmKGIsZyxyKX1cbiAgICAgICAgJHtDLm1haW5TdGFydCgpfVxuICAgICAgICAgICR7Qy5ndWFyZEFnYWluc3RPdXRPZkJvdW5kc1dvcmtncm91cFNpemVzKFwidW5pZm9ybXMub3V0cHV0U2l6ZVwiKX1cbiAgICAgICAgICBsZXQgb3V0cHV0X2luZGljZXMgPSAke2cub2Zmc2V0VG9JbmRpY2VzKFwiZ2xvYmFsX2lkeFwiKX07XG4gICAgICAgICAgbGV0IGlucHV0X2luZGljZXMgPSBjYWxjdWxhdGVJbnB1dEluZGljZXMob3V0cHV0X2luZGljZXMpO1xuICAgICAgICAgICR7Zy5zZXRCeU9mZnNldChcImdsb2JhbF9pZHhcIixiLmdldEJ5SW5kaWNlcyhcImlucHV0X2luZGljZXNcIikpfVxuICAgICAgfWA7cmV0dXJue25hbWU6XCJTbGljZVwiLHNoYWRlckNhY2hlOntoaW50OmAke3AubGVuZ3RofV8ke28ubGVuZ3RofV8ke3MubGVuZ3RofWAsaW5wdXREZXBlbmRlbmNpZXM6W1wicmFua1wiXX0sZ2V0U2hhZGVyU291cmNlOlQsZ2V0UnVuRGF0YTooKT0+KHtvdXRwdXRzOltsXSxkaXNwYXRjaEdyb3VwOnt4Ok1hdGguY2VpbChhLzY0KX0scHJvZ3JhbVVuaWZvcm1zOnh9KX19LE5sPShlLHQpPT57Y2YoZS5pbnB1dHMsdCk7bGV0IHI9cGYoZS5pbnB1dHMsdCk7ZS5jb21wdXRlKG1mKGUuaW5wdXRzLHIpLHtpbnB1dHM6WzBdfSl9LFZsPWU9PntsZXQgdD1lLnN0YXJ0cyxyPWUuZW5kcyxhPWUuYXhlcztyZXR1cm4geGUoe3N0YXJ0czp0LGVuZHM6cixheGVzOmF9KX19KTt2YXIgaGYsZ2YsTGwsR2wsRmw9USgoKT0+e1widXNlIHN0cmljdFwiO0NlKCk7WGUoKTtfZSgpO2hmPWU9PntpZighZXx8ZS5sZW5ndGghPT0xKXRocm93IG5ldyBFcnJvcihcIlNvZnRtYXggb3AgcmVxdWlyZXMgMSBpbnB1dC5cIil9LGdmPShlLHQpPT57bGV0IHI9ZS5kaW1zLGE9Ti5zaXplKHIpLGk9NjQscz10LmF4aXM7aWYoczwwJiYocz1yLmxlbmd0aCtzKSxzPHIubGVuZ3RoLTEpdGhyb3cgbmV3IEVycm9yKFwic29mdG1heCBvbmx5IHN1cHBvcnRzIGxhc3QgYXhpcyBmb3Igbm93LlwiKTtsZXQgbz1yW3NdLGM9YS9vLHA9TGUobyksbT1vL3AsbD0oVCxDKT0+Qz09PTQ/YG1heChtYXgoJHtUfS54LCAke1R9LnkpLCBtYXgoJHtUfS56LCAke1R9LncpKWA6Qz09PTI/YG1heCgke1R9LngsICR7VH0ueSlgOkM9PT0zP2BtYXgobWF4KCR7VH0ueCwgJHtUfS55KSwgJHtUfS56KWA6VCxnPVcoXCJ4XCIsZS5kYXRhVHlwZSxlLmRpbXMscCksYj1KKFwicmVzdWx0XCIsZS5kYXRhVHlwZSxlLmRpbXMscCksdz1nLnR5cGUudmFsdWUsJD1IZShlLmRhdGFUeXBlKT09PVwiZjMyXCI/YHZhciB0aHJlYWRNYXggPSAke3d9KC0zLjQwMjgyM2UrMzhmKTtgOmB2YXIgdGhyZWFkTWF4ID0gJHt3fSgtNjU1MDQuMGgpO2AseD1UPT5gXG4gICAgICB2YXI8d29ya2dyb3VwPiByb3dNYXhTaGFyZWQgOiAke3d9O1xuICAgICAgdmFyPHdvcmtncm91cD4gcm93U3VtU2hhcmVkIDogJHt3fTtcbiAgICAgIHZhcjx3b3JrZ3JvdXA+IHRocmVhZFNoYXJlZCA6IGFycmF5PCR7d30sICR7aX0+O1xuXG4gICAgICBmbiBnZXRWYWx1ZShyb3c6IGkzMiwgY29sOiBpMzIsIHJvd19zdHJpZGU6IGkzMikgLT4gJHt3fSB7XG4gICAgICAgIGxldCBpbmRleCA9IHJvdyAqIHJvd19zdHJpZGUgKyBjb2w7XG4gICAgICAgIHJldHVybiB4W2luZGV4XTtcbiAgICAgIH1cblxuICAgICAgZm4gc2V0VmFsdWUocm93OiBpMzIsIGNvbDogaTMyLCByb3dfc3RyaWRlOiBpMzIsIHZhbHVlOiAke3d9KSB7XG4gICAgICAgIGxldCBpbmRleCA9IHJvdyAqIHJvd19zdHJpZGUgKyBjb2w7XG4gICAgICAgIHJlc3VsdFtpbmRleF0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICAgICR7VC5yZWdpc3RlclVuaWZvcm0oXCJwYWNrZWRDb2xzXCIsXCJpMzJcIikuZGVjbGFyZVZhcmlhYmxlcyhnLGIpfVxuICAgICAgJHtULm1haW5TdGFydCgpfVxuICAgICAgICBsZXQgZ2luZGV4ID0gaTMyKGdsb2JhbF9pZHgpO1xuICAgICAgICBsZXQgbGluZGV4ID0gaTMyKGxvY2FsX2lkeCk7XG4gICAgICAgIGNvbnN0IHdnID0gJHtpfTtcbiAgICAgICAgbGV0IHJvdyA9IGdpbmRleCAvIHdnO1xuICAgICAgICBsZXQgY29scyA9IHVuaWZvcm1zLnBhY2tlZENvbHM7XG4gICAgICAgIGxldCByb3dfc3RyaWRlIDogaTMyID0gdW5pZm9ybXMucGFja2VkQ29scztcblxuICAgICAgICAvLyBmaW5kIHRoZSByb3dzIG1heFxuICAgICAgICAkeyR9XG4gICAgICAgIGZvciAodmFyIGNvbCA9IGxpbmRleDsgY29sIDwgY29sczsgY29sICs9IHdnKSB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gZ2V0VmFsdWUocm93LCBjb2wsIHJvd19zdHJpZGUpO1xuICAgICAgICAgIHRocmVhZE1heCA9IG1heCh0aHJlYWRNYXgsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobGluZGV4IDwgY29scykge1xuICAgICAgICAgIHRocmVhZFNoYXJlZFtsaW5kZXhdID0gdGhyZWFkTWF4O1xuICAgICAgICB9XG4gICAgICAgIHdvcmtncm91cEJhcnJpZXIoKTtcblxuICAgICAgICB2YXIgcmVkdWNlU2l6ZSA9IG1pbihjb2xzLCB3Zyk7XG4gICAgICAgIGZvciAodmFyIGN1cnJTaXplID0gcmVkdWNlU2l6ZSA+PiAxOyAgY3VyclNpemUgPiAwOyBjdXJyU2l6ZSA9IHJlZHVjZVNpemUgPj4gMSkge1xuICAgICAgICAgIHJlZHVjZVNpemUgPSBjdXJyU2l6ZSArIChyZWR1Y2VTaXplICYgMSk7XG4gICAgICAgICAgaWYgKGxpbmRleCA8IGN1cnJTaXplKSB7XG4gICAgICAgICAgICB0aHJlYWRTaGFyZWRbbGluZGV4XSA9IG1heCh0aHJlYWRTaGFyZWRbbGluZGV4XSwgdGhyZWFkU2hhcmVkW2xpbmRleCArIHJlZHVjZVNpemVdKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgd29ya2dyb3VwQmFycmllcigpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsaW5kZXggPT0gMCkge1xuICAgICAgICAgIHJvd01heFNoYXJlZCA9ICR7d30oJHtsKFwidGhyZWFkU2hhcmVkWzBdXCIscCl9KTtcbiAgICAgICAgfVxuICAgICAgICB3b3JrZ3JvdXBCYXJyaWVyKCk7XG5cbiAgICAgICAgLy8gZmluZCB0aGUgcm93cyBzdW1cbiAgICAgICAgdmFyIHRocmVhZFN1bSA9ICR7d30oMC4wKTtcbiAgICAgICAgZm9yICh2YXIgY29sID0gbGluZGV4OyBjb2wgPCBjb2xzOyBjb2wgKz0gd2cpIHtcbiAgICAgICAgICBsZXQgc3ViRXhwID0gZXhwKGdldFZhbHVlKHJvdywgY29sLCByb3dfc3RyaWRlKSAtIHJvd01heFNoYXJlZCk7XG4gICAgICAgICAgdGhyZWFkU3VtICs9IHN1YkV4cDtcbiAgICAgICAgfVxuICAgICAgICB0aHJlYWRTaGFyZWRbbGluZGV4XSA9IHRocmVhZFN1bTtcbiAgICAgICAgd29ya2dyb3VwQmFycmllcigpO1xuXG4gICAgICAgIGZvciAodmFyIGN1cnJTaXplID0gd2cgPj4gMTsgIGN1cnJTaXplID4gMDsgY3VyclNpemUgPSBjdXJyU2l6ZSA+PiAxKSB7XG4gICAgICAgICAgaWYgKGxpbmRleCA8IGN1cnJTaXplKSB7XG4gICAgICAgICAgICB0aHJlYWRTaGFyZWRbbGluZGV4XSA9IHRocmVhZFNoYXJlZFtsaW5kZXhdICsgdGhyZWFkU2hhcmVkW2xpbmRleCArIGN1cnJTaXplXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgd29ya2dyb3VwQmFycmllcigpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsaW5kZXggPT0gMCkge1xuICAgICAgICAgIHJvd1N1bVNoYXJlZCA9ICR7d30oJHtmdChcInRocmVhZFNoYXJlZFswXVwiLHApfSk7XG4gICAgICAgIH1cbiAgICAgICAgd29ya2dyb3VwQmFycmllcigpO1xuXG4gICAgICAgIC8vIGNhbGN1bGF0ZSBmaW5hbCB2YWx1ZSBmb3IgZWFjaCBlbGVtZW50IGluIHRoZSByb3dcbiAgICAgICAgZm9yICh2YXIgY29sID0gbGluZGV4OyBjb2wgPCBjb2xzOyBjb2wgKz0gd2cpIHtcbiAgICAgICAgICBsZXQgdmFsdWUgPSBleHAoZ2V0VmFsdWUocm93LCBjb2wsIHJvd19zdHJpZGUpIC0gcm93TWF4U2hhcmVkKSAvIHJvd1N1bVNoYXJlZDtcbiAgICAgICAgICBzZXRWYWx1ZShyb3csIGNvbCwgcm93X3N0cmlkZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9YDtyZXR1cm57bmFtZTpcIlNvZnRtYXhcIixzaGFkZXJDYWNoZTp7aGludDpgJHtwfWAsaW5wdXREZXBlbmRlbmNpZXM6W1widHlwZVwiXX0sZ2V0UnVuRGF0YTooKT0+KHtvdXRwdXRzOlt7ZGltczpyLGRhdGFUeXBlOmUuZGF0YVR5cGV9XSxkaXNwYXRjaEdyb3VwOnt4OmN9LHByb2dyYW1Vbmlmb3Jtczpbe3R5cGU6XCJ1aW50MzJcIixkYXRhOm19XX0pLGdldFNoYWRlclNvdXJjZTp4fX0sTGw9KGUsdCk9PntoZihlLmlucHV0cyksZS5jb21wdXRlKGdmKGUuaW5wdXRzWzBdLHQpKX0sR2w9ZT0+eGUoe2F4aXM6ZS5heGlzfSl9KTt2YXIgeWYsYmYsdmYsd2YsJGYscWwsamwsS2w9USgoKT0+e1widXNlIHN0cmljdFwiO0NlKCk7WGUoKTtfZSgpO3lmPWU9PntpZighZXx8ZS5sZW5ndGg8MSl0aHJvdyBuZXcgRXJyb3IoXCJ0b28gZmV3IGlucHV0c1wiKX0sYmY9KGUsdCk9PntsZXQgcj1bXSxhPXQubnVtT3V0cHV0cztyZXR1cm4gZVsxXS5kaW1zWzBdPjAmJihlWzFdLmdldEJpZ0ludDY0QXJyYXkoKS5mb3JFYWNoKGk9PnIucHVzaChOdW1iZXIoaSkpKSxhPXIubGVuZ3RoKSx4ZSh7bnVtT3V0cHV0czphLGF4aXM6dC5heGlzLHNwbGl0U2l6ZXM6cn0pfSx2Zj1lPT5gXG5mbiBjYWxjdWxhdGVPdXRwdXRJbmRleChpbmRleDogdTMyKSAtPiB1MzIge1xuICAgIGZvciAodmFyIGk6IHUzMiA9IDB1OyBpIDwgJHtlfXU7IGkgKz0gMXUgKSB7XG4gICAgaWYgKGluZGV4IDwgJHtjZShcInVuaWZvcm1zLnNpemVfaW5fc3BsaXRfYXhpc1wiLFwiaVwiLGUpfSkge1xuICAgICAgICByZXR1cm4gaTtcbiAgICB9XG4gICAgfVxuICAgIHJldHVybiAke2V9dTtcbn1gLHdmPWU9PntsZXQgdD1lLmxlbmd0aCxyPVtdO2ZvcihsZXQgYT0wO2E8dDsrK2Epe2xldCBpPWVbYV0uc2V0QnlJbmRpY2VzKFwiaW5kaWNlc1wiLFwiaW5wdXRbZ2xvYmFsX2lkeF1cIik7dD09PTE/ci5wdXNoKGkpOmE9PT0wP3IucHVzaChgaWYgKG91dHB1dF9udW1iZXIgPT0gJHthfXUpIHsgJHtpfSB9YCk6YT09PXQtMT9yLnB1c2goYGVsc2UgeyAke2l9IH1gKTpyLnB1c2goYGVsc2UgaWYgKG91dHB1dF9udW1iZXIgPT0gJHthfSkgeyAke2l9IH1gKX1yZXR1cm5gXG4gICAgICBmbiB3cml0ZUJ1ZmZlckRhdGEob3V0cHV0X251bWJlcjogdTMyLCBpbmRpY2VzOiAke2VbMF0udHlwZS5pbmRpY2VzfSwgZ2xvYmFsX2lkeDogdTMyKSB7XG4gICAgICAgICR7ci5qb2luKGBcbmApfVxuICAgICAgfWB9LCRmPShlLHQpPT57bGV0IHI9ZVswXS5kaW1zLGE9Ti5zaXplKHIpLGk9ZVswXS5kYXRhVHlwZSxzPU4ubm9ybWFsaXplQXhpcyh0LmF4aXMsci5sZW5ndGgpLG89bmV3IEFycmF5KHQubnVtT3V0cHV0cyksYz1XKFwiaW5wdXRcIixpLHIpLHA9bmV3IEFycmF5KHQubnVtT3V0cHV0cyksbT1bXSxsPVtdLGc9MCxiPVt7dHlwZTpcInVpbnQzMlwiLGRhdGE6YX1dO2ZvcihsZXQgJD0wOyQ8dC5udW1PdXRwdXRzOyQrKyl7Zys9dC5zcGxpdFNpemVzWyRdLHBbJF09ZztsZXQgeD1yLnNsaWNlKCk7eFt0LmF4aXNdPXQuc3BsaXRTaXplc1skXSxsLnB1c2goeCksb1skXT1KKGBvdXRwdXQkeyR9YCxpLHgpLG0ucHVzaCh7ZGltczpsWyRdLGRhdGFUeXBlOmVbMF0uZGF0YVR5cGV9KX1iLnB1c2goe3R5cGU6XCJ1aW50MzJcIixkYXRhOnB9KSxiLnB1c2goLi4uTChyKSksbC5mb3JFYWNoKCQ9PmIucHVzaCguLi5MKCQpKSk7bGV0IHc9JD0+YFxuICAkeyQucmVnaXN0ZXJVbmlmb3JtKFwiaW5wdXRfc2l6ZVwiLFwidTMyXCIpLnJlZ2lzdGVyVW5pZm9ybShcInNpemVfaW5fc3BsaXRfYXhpc1wiLFwidTMyXCIscC5sZW5ndGgpLmRlY2xhcmVWYXJpYWJsZXMoYywuLi5vKX1cbiAgJHt2ZihwLmxlbmd0aCl9XG4gICR7d2Yobyl9XG5cbiAgJHskLm1haW5TdGFydCgpfVxuICAgICR7JC5ndWFyZEFnYWluc3RPdXRPZkJvdW5kc1dvcmtncm91cFNpemVzKFwidW5pZm9ybXMuaW5wdXRfc2l6ZVwiKX1cblxuICAgIHZhciBpbmRpY2VzID0gJHtjLm9mZnNldFRvSW5kaWNlcyhcImdsb2JhbF9pZHhcIil9O1xuICAgIHZhciBpbmRleCA9ICR7Yy5pbmRpY2VzR2V0KFwiaW5kaWNlc1wiLHMpfTtcbiAgICBsZXQgb3V0cHV0X251bWJlciA9IGNhbGN1bGF0ZU91dHB1dEluZGV4KGluZGV4KTtcbiAgICBpZiAob3V0cHV0X251bWJlciAhPSAwKSB7XG4gICAgICBpbmRleCAtPSAke2NlKFwidW5pZm9ybXMuc2l6ZV9pbl9zcGxpdF9heGlzXCIsXCJvdXRwdXRfbnVtYmVyIC0gMXVcIixwLmxlbmd0aCl9O1xuICAgICAgJHtjLmluZGljZXNTZXQoXCJpbmRpY2VzXCIscyxcImluZGV4XCIpfTtcbiAgICB9XG4gICAgd3JpdGVCdWZmZXJEYXRhKG91dHB1dF9udW1iZXIsIGluZGljZXMsIGdsb2JhbF9pZHgpO1xuICB9YDtyZXR1cm57bmFtZTpcIlNwbGl0XCIsc2hhZGVyQ2FjaGU6e2hpbnQ6dC5jYWNoZUtleSxpbnB1dERlcGVuZGVuY2llczpbXCJyYW5rXCJdfSxnZXRTaGFkZXJTb3VyY2U6dyxnZXRSdW5EYXRhOigpPT4oe291dHB1dHM6bSxkaXNwYXRjaEdyb3VwOnt4Ok1hdGguY2VpbChhLzY0KX0scHJvZ3JhbVVuaWZvcm1zOmJ9KX19LHFsPShlLHQpPT57eWYoZS5pbnB1dHMpO2xldCByPWUuaW5wdXRzLmxlbmd0aD09PTE/dDpiZihlLmlucHV0cyx0KTtlLmNvbXB1dGUoJGYoZS5pbnB1dHMscikse2lucHV0czpbMF19KX0samw9ZT0+e2xldCB0PWUuYXhpcyxyPWUuc3BsaXRTaXplcyxhPWUubnVtT3V0cHV0czwwP3IubGVuZ3RoOmUubnVtT3V0cHV0cztpZihhIT09ci5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKFwibnVtT3V0cHV0cyBhbmQgc3BsaXRTaXplcyBsZW5naCBtdXN0IGJlIGVxdWFsXCIpO3JldHVybiB4ZSh7YXhpczp0LG51bU91dHB1dHM6YSxzcGxpdFNpemVzOnJ9KX19KTt2YXIgWWwsX2YsU2YseGYsWmwsWGw9USgoKT0+e1widXNlIHN0cmljdFwiO3plKCk7Q2UoKTtfZSgpO1lsPWU9PkFycmF5LmZyb20oZS5nZXRCaWdJbnQ2NEFycmF5KCksTnVtYmVyKSxfZj1lPT57aWYoIWV8fGUubGVuZ3RoIT09Mil0aHJvdyBuZXcgRXJyb3IoXCJUaWxlIHJlcXVpcmVzIDIgaW5wdXRzLlwiKTtpZihlWzBdLmRhdGFUeXBlIT09MSYmZVswXS5kYXRhVHlwZSE9PTYmJmVbMF0uZGF0YVR5cGUhPT0xMil0aHJvdyBuZXcgRXJyb3IoXCJUaWxlIG9ubHkgc3VwcG9ydCBmbG9hdCwgaW50MzIsIGFuZCB1aW50MzIgZGF0YSB0eXBlc1wiKTtpZihlWzFdLmRhdGFUeXBlIT09Nyl0aHJvdyBuZXcgRXJyb3IoXCJUaWxlIGByZXBlYXRzYCBpbnB1dCBzaG91bGQgYmUgb2YgaW50NjQgZGF0YSB0eXBlXCIpO2lmKGVbMV0uZGltcy5sZW5ndGghPT0xKXRocm93IG5ldyBFcnJvcihcIlRpbGUgYHJlcGVhdHNgIGlucHV0IHNob3VsZCBiZSAxLURcIik7aWYoWWwoZVsxXSkubGVuZ3RoIT09ZVswXS5kaW1zLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoXCJUaWxlIGByZXBlYXRzYCBpbnB1dCBzaG91bGQgaGF2ZSBzYW1lIG51bWJlciBvZiBlbGVtZW50cyBhcyByYW5rIG9mIGlucHV0IGRhdGEgdGVuc29yXCIpfSxTZj0oZSx0KT0+e2xldCByPVtdO2ZvcihsZXQgYT0wO2E8ZS5sZW5ndGg7KythKXIucHVzaChlW2FdKnRbYV0pO3JldHVybiByfSx4Zj1lPT57bGV0IHQ9ZVswXS5kaW1zLHI9WWwoZVsxXSksYT1TZih0LHIpLGk9Ti5zaXplKGEpLHM9ZVswXS5kYXRhVHlwZSxvPVcoXCJpbnB1dFwiLHMsdC5sZW5ndGgpLGM9SihcIm91dHB1dFwiLHMsYS5sZW5ndGgpLHA9bT0+YFxuICAgICAgY29uc3QgaW5wdXRTaGFwZSA9ICR7by5pbmRpY2VzKC4uLnQpfTtcbiAgICAgICR7bS5yZWdpc3RlclVuaWZvcm0oXCJvdXRwdXRfc2l6ZVwiLFwidTMyXCIpLmRlY2xhcmVWYXJpYWJsZXMobyxjKX1cbiAgICAgICR7bS5tYWluU3RhcnQoKX1cbiAgICAgICR7bS5ndWFyZEFnYWluc3RPdXRPZkJvdW5kc1dvcmtncm91cFNpemVzKFwidW5pZm9ybXMub3V0cHV0X3NpemVcIil9XG4gICAgICBsZXQgb3V0cHV0X2luZGljZXMgPSAke2Mub2Zmc2V0VG9JbmRpY2VzKFwiZ2xvYmFsX2lkeFwiKX07XG4gICAgICB2YXIgaW5wdXRfaW5kaWNlczogJHtvLnR5cGUuaW5kaWNlc307XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8ICR7dC5sZW5ndGh9OyBpKyspIHtcbiAgICAgICAgbGV0IGlucHV0X2RpbV9pID0gJHtvLmluZGljZXNHZXQoXCJ1bmlmb3Jtcy5pbnB1dF9zaGFwZVwiLFwiaVwiKX07XG4gICAgICAgIGxldCBpbnB1dF9kaW1fdmFsdWUgPSAke2MuaW5kaWNlc0dldChcIm91dHB1dF9pbmRpY2VzXCIsXCJpXCIpfSAgJSBpbnB1dF9kaW1faTtcblxuICAgICAgICAke28uaW5kaWNlc1NldChcImlucHV0X2luZGljZXNcIixcImlcIixcImlucHV0X2RpbV92YWx1ZVwiKX1cbiAgICAgIH1cbiAgICAgICR7Yy5zZXRCeU9mZnNldChcImdsb2JhbF9pZHhcIixvLmdldEJ5SW5kaWNlcyhcImlucHV0X2luZGljZXNcIikpfVxuICAgIH1gO3JldHVybntuYW1lOlwiVGlsZVwiLHNoYWRlckNhY2hlOntoaW50OmAke3J9YCxpbnB1dERlcGVuZGVuY2llczpbXCJyYW5rXCJdfSxnZXRSdW5EYXRhOigpPT4oe291dHB1dHM6W3tkaW1zOmEsZGF0YVR5cGU6ZVswXS5kYXRhVHlwZX1dLGRpc3BhdGNoR3JvdXA6e3g6TWF0aC5jZWlsKGkvNjQpfSxwcm9ncmFtVW5pZm9ybXM6W3t0eXBlOlwidWludDMyXCIsZGF0YTppfSwuLi5MKGVbMF0uZGltcyksLi4uTChhKV19KSxnZXRTaGFkZXJTb3VyY2U6cH19LFpsPWU9PntfZihlLmlucHV0cyksZS5jb21wdXRlKHhmKGUuaW5wdXRzKSx7aW5wdXRzOlswXX0pfX0pO3ZhciBDZixJZixRbCxKbD1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7emUoKTtDZSgpO19lKCk7Q2Y9KGUsdCxyLGEsaSk9PntsZXQgcz1KKFwib3V0cHV0X2RhdGFcIixpLHIubGVuZ3RoLDQpLG89VyhcImFfZGF0YVwiLHRbMV0uZGF0YVR5cGUsdFsxXS5kaW1zLmxlbmd0aCw0KSxjPVcoXCJiX2RhdGFcIix0WzJdLmRhdGFUeXBlLHRbMl0uZGltcy5sZW5ndGgsNCkscD1XKFwiY19kYXRhXCIsdFswXS5kYXRhVHlwZSx0WzBdLmRpbXMubGVuZ3RoLDQpLG0sbD0oZyxiLHcpPT5gc2VsZWN0KCR7Yn0sICR7Z30sICR7d30pYDtpZighYSltPXMuc2V0QnlPZmZzZXQoXCJnbG9iYWxfaWR4XCIsbChvLmdldEJ5T2Zmc2V0KFwiZ2xvYmFsX2lkeFwiKSxjLmdldEJ5T2Zmc2V0KFwiZ2xvYmFsX2lkeFwiKSxwLmdldEJ5T2Zmc2V0KFwiZ2xvYmFsX2lkeFwiKSkpO2Vsc2V7bGV0IGc9KGIsdywkPVwiXCIpPT57bGV0IHg9YGFfZGF0YVtpbmRleF9hJHt3fV1bY29tcG9uZW50X2Eke3d9XWAsVD1gYl9kYXRhW2luZGV4X2Ike3d9XVtjb21wb25lbnRfYiR7d31dYCxDPWBib29sKGNfZGF0YVtpbmRleF9jJHt3fV0gJiAkezQyNzgxOTAwODA+Pj4oMy13KSo4fXUpYDtyZXR1cm5gXG4gICAgICAgICAgICBsZXQgb3V0cHV0X2luZGljZXMke3d9ID0gJHtzLm9mZnNldFRvSW5kaWNlcyhgZ2xvYmFsX2lkeCAqIDR1ICsgJHt3fXVgKX07XG4gICAgICAgICAgICBsZXQgb2Zmc2V0X2Eke3d9ID0gJHtvLmJyb2FkY2FzdGVkSW5kaWNlc1RvT2Zmc2V0KGBvdXRwdXRfaW5kaWNlcyR7d31gLHMpfTtcbiAgICAgICAgICAgIGxldCBvZmZzZXRfYiR7d30gPSAke2MuYnJvYWRjYXN0ZWRJbmRpY2VzVG9PZmZzZXQoYG91dHB1dF9pbmRpY2VzJHt3fWAscyl9O1xuICAgICAgICAgICAgbGV0IG9mZnNldF9jJHt3fSA9ICR7cC5icm9hZGNhc3RlZEluZGljZXNUb09mZnNldChgb3V0cHV0X2luZGljZXMke3d9YCxzKX07XG4gICAgICAgICAgICBsZXQgaW5kZXhfYSR7d30gPSBvZmZzZXRfYSR7d30gLyA0dTtcbiAgICAgICAgICAgIGxldCBpbmRleF9iJHt3fSA9IG9mZnNldF9iJHt3fSAvIDR1O1xuICAgICAgICAgICAgbGV0IGluZGV4X2Mke3d9ID0gb2Zmc2V0X2Mke3d9IC8gNHU7XG4gICAgICAgICAgICBsZXQgY29tcG9uZW50X2Eke3d9ID0gb2Zmc2V0X2Eke3d9ICUgNHU7XG4gICAgICAgICAgICBsZXQgY29tcG9uZW50X2Ike3d9ID0gb2Zmc2V0X2Ike3d9ICUgNHU7XG4gICAgICAgICAgICAke2J9WyR7d31dID0gJHskfSgke2woeCxULEMpfSk7XG4gICAgICAgICAgYH07aT09PTk/bT1gXG4gICAgICAgICAgICB2YXIgZGF0YSA9IHZlYzQ8dTMyPigwKTtcbiAgICAgICAgICAgICR7ZyhcImRhdGFcIiwwLFwidTMyXCIpfVxuICAgICAgICAgICAgJHtnKFwiZGF0YVwiLDEsXCJ1MzJcIil9XG4gICAgICAgICAgICAke2coXCJkYXRhXCIsMixcInUzMlwiKX1cbiAgICAgICAgICAgICR7ZyhcImRhdGFcIiwzLFwidTMyXCIpfVxuICAgICAgICAgICAgb3V0cHV0X2RhdGFbZ2xvYmFsX2lkeF0gPSBkb3QodmVjNDx1MzI+KDB4MSwgMHgxMDAsIDB4MTAwMDAsIDB4MTAwMDAwMCksIHZlYzQ8dTMyPihkYXRhKSk7YDptPWBcbiAgICAgICAgICAgICR7ZyhcIm91dHB1dF9kYXRhW2dsb2JhbF9pZHhdXCIsMCl9XG4gICAgICAgICAgICAke2coXCJvdXRwdXRfZGF0YVtnbG9iYWxfaWR4XVwiLDEpfVxuICAgICAgICAgICAgJHtnKFwib3V0cHV0X2RhdGFbZ2xvYmFsX2lkeF1cIiwyKX1cbiAgICAgICAgICAgICR7ZyhcIm91dHB1dF9kYXRhW2dsb2JhbF9pZHhdXCIsMyl9XG4gICAgICAgICAgYH1yZXR1cm5gXG4gICAgICAgICR7ZS5yZWdpc3RlclVuaWZvcm0oXCJ2ZWNfc2l6ZVwiLFwidTMyXCIpLmRlY2xhcmVWYXJpYWJsZXMocCxvLGMscyl9XG4gICAgICAgICR7ZS5tYWluU3RhcnQoKX1cbiAgICAgICAgJHtlLmd1YXJkQWdhaW5zdE91dE9mQm91bmRzV29ya2dyb3VwU2l6ZXMoXCJ1bmlmb3Jtcy52ZWNfc2l6ZVwiKX1cbiAgICAgICAgJHttfVxuICAgICAgfWB9LElmPWU9PntsZXQgdD1lWzFdLmRpbXMscj1lWzJdLmRpbXMsYT1lWzBdLmRpbXMsaT1lWzFdLmRhdGFUeXBlLHM9IShOLmFyZUVxdWFsKHQscikmJk4uYXJlRXF1YWwocixhKSksbz10LGM9Ti5zaXplKHQpO2lmKHMpe2xldCBtPUF0LmNhbGNTaGFwZShBdC5jYWxjU2hhcGUodCxyLCExKSxhLCExKTtpZighbSl0aHJvdyBuZXcgRXJyb3IoXCJDYW4ndCBwZXJmb3JtIHdoZXJlIG9wIG9uIHRoZSBnaXZlbiB0ZW5zb3JzXCIpO289bSxjPU4uc2l6ZShvKX1sZXQgcD1NYXRoLmNlaWwoYy80KTtyZXR1cm57bmFtZTpcIldoZXJlXCIsc2hhZGVyQ2FjaGU6e2lucHV0RGVwZW5kZW5jaWVzOltcInJhbmtcIixcInJhbmtcIixcInJhbmtcIl19LGdldFNoYWRlclNvdXJjZTptPT5DZihtLGUsbyxzLGkpLGdldFJ1bkRhdGE6KCk9Pih7b3V0cHV0czpbe2RpbXM6byxkYXRhVHlwZTppfV0sZGlzcGF0Y2hHcm91cDp7eDpNYXRoLmNlaWwoYy82NC80KX0scHJvZ3JhbVVuaWZvcm1zOlt7dHlwZTpcInVpbnQzMlwiLGRhdGE6cH0sLi4uTChhKSwuLi5MKHQpLC4uLkwociksLi4uTChvKV19KX19LFFsPWU9PntlLmNvbXB1dGUoSWYoZS5pbnB1dHMpKX19KTt2YXIgZWQsdGQ9USgoKT0+e1widXNlIHN0cmljdFwiO1NzKCk7WmEoKTtJcygpO1RzKCk7bHUoKTt3dSgpO1N1KCk7dGkoKTt6dSgpO051KCk7RnUoKTtLdSgpO1h1KCk7ZWwoKTtubCgpO2lsKCk7c2woKTtuaSgpO2NsKCk7ZmwoKTtPbCgpO1BsKCk7am4oKTtEbCgpO1VsKCk7SGwoKTtGbCgpO0tsKCk7WGwoKTskcigpO1hhKCk7SmwoKTtlZD1uZXcgTWFwKFtbXCJBYnNcIixbRXNdXSxbXCJBY29zXCIsW09zXV0sW1wiQWNvc2hcIixba3NdXSxbXCJBZGRcIixbZHVdXSxbXCJBcmdNYXhcIixbX3MsWWFdXSxbXCJBcmdNaW5cIixbJHMsWWFdXSxbXCJBc2luXCIsW1BzXV0sW1wiQXNpbmhcIixbUnNdXSxbXCJBdGFuXCIsW0JzXV0sW1wiQXRhbmhcIixbTXNdXSxbXCJBdHRlbnRpb25cIixbeHNdXSxbXCJBdmVyYWdlUG9vbFwiLFskbCx3bF1dLFtcIkJhdGNoTm9ybWFsaXphdGlvblwiLFtDc11dLFtcIkJpYXNBZGRcIixbQXNdXSxbXCJCaWFzU3BsaXRHZWx1XCIsW3V1XV0sW1wiQ2FzdFwiLFt6cyxEc11dLFtcIkNlaWxcIixbV3NdXSxbXCJDbGlwXCIsW1VzXV0sW1wiQ29uY2F0XCIsWyR1LF91XV0sW1wiQ29udlwiLFtpaSxhaV1dLFtcIkNvbnZUcmFuc3Bvc2VcIixbRHUsTXVdXSxbXCJDb3NcIixbTnNdXSxbXCJDb3NoXCIsW1ZzXV0sW1wiQ3VtU3VtXCIsW1V1LFd1XV0sW1wiRGl2XCIsW2N1XV0sW1wiRWluc3VtXCIsW0x1LEd1XV0sW1wiRWx1XCIsW0hzLFpuXV0sW1wiRXF1YWxcIixbcHVdXSxbXCJFcmZcIixbTHNdXSxbXCJFeHBcIixbR3NdXSxbXCJFeHBhbmRcIixbanVdXSxbXCJGbG9vclwiLFtGc11dLFtcIkZ1c2VkQ29udlwiLFtpaSxhaV1dLFtcIkdhdGhlclwiLFtadSxZdV1dLFtcIkdhdGhlckVsZW1lbnRzXCIsW0p1LFF1XV0sW1wiR2VsdVwiLFtxc11dLFtcIkdlbW1cIixbcmwsdGxdXSxbXCJHbG9iYWxBdmVyYWdlUG9vbFwiLFt4bCxTbF1dLFtcIkdsb2JhbE1heFBvb2xcIixbRWwsVGxdXSxbXCJHcmVhdGVyXCIsW2d1XV0sW1wiR3JlYXRlck9yRXF1YWxcIixbYnVdXSxbXCJIYXJkU2lnbW9pZFwiLFtldSxKc11dLFtcIkluc3RhbmNlTm9ybWFsaXphdGlvblwiLFthbF1dLFtcIkxheWVyTm9ybWFsaXphdGlvblwiLFtvbF1dLFtcIkxlYWt5UmVsdVwiLFtqcyxabl1dLFtcIkxlc3NcIixbeXVdXSxbXCJMZXNzT3JFcXVhbFwiLFt2dV1dLFtcIkxvZ1wiLFtzdV1dLFtcIk1hdE11bFwiLFtUdV1dLFtcIk1heFBvb2xcIixbSWwsQWxdXSxbXCJNdWxcIixbZnVdXSxbXCJNdWx0aUhlYWRBdHRlbnRpb25cIixbZGwsbGxdXSxbXCJOZWdcIixbWXNdXSxbXCJOb3RcIixbS3NdXSxbXCJQYWRcIixbcGxdXSxbXCJQb3dcIixbbXVdXSxbXCJSYW5nZVwiLFtrbF1dLFtcIlJlY2lwcm9jYWxcIixbWnNdXSxbXCJSZWR1Y2VNaW5cIixbaHNdXSxbXCJSZWR1Y2VNZWFuXCIsW2RzXV0sW1wiUmVkdWNlTWF4XCIsW21zXV0sW1wiUmVkdWNlU3VtXCIsW3lzXV0sW1wiUmVkdWNlUHJvZFwiLFtnc11dLFtcIlJlZHVjZUwxXCIsW2NzXV0sW1wiUmVkdWNlTDJcIixbcHNdXSxbXCJSZWR1Y2VMb2dTdW1cIixbdnNdXSxbXCJSZWR1Y2VMb2dTdW1FeHBcIixbZnNdXSxbXCJSZWR1Y2VTdW1TcXVhcmVcIixbYnNdXSxbXCJSZWx1XCIsW1hzXV0sW1wiUmVzaXplXCIsW0JsLE1sXV0sW1wiU2lnbW9pZFwiLFtRc11dLFtcIlNpblwiLFt0dV1dLFtcIlNpbmhcIixbcnVdXSxbXCJTbGljZVwiLFtObCxWbF1dLFtcIlNraXBMYXllck5vcm1hbGl6YXRpb25cIixbemxdXSxbXCJTcGxpdFwiLFtxbCxqbF1dLFtcIlNxcnRcIixbbnVdXSxbXCJTb2Z0bWF4XCIsW0xsLEdsXV0sW1wiU3ViXCIsW2h1XV0sW1wiVGFuXCIsW2F1XV0sW1wiVGFuaFwiLFtpdV1dLFtcIlRocmVzaG9sZGVkUmVsdVwiLFtvdSxabl1dLFtcIlRpbGVcIixbWmxdXSxbXCJUcmFuc3Bvc2VcIixbWG8sUW9dXSxbXCJXaGVyZVwiLFtRbF1dXSl9KTt2YXIgb2EscmQ9USgoKT0+e1widXNlIHN0cmljdFwiO2J0KCk7cXQoKTtfZSgpO29hPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuYmFja2VuZD10O3RoaXMucmVwbz1uZXcgTWFwLHRoaXMuYXR0cmlidXRlc0JvdW5kPSExfWdldEFydGlmYWN0KHQpe3JldHVybiB0aGlzLnJlcG8uZ2V0KHQpfXNldEFydGlmYWN0KHQscil7dGhpcy5yZXBvLnNldCh0LHIpfXJ1bih0LHIsYSxpLHMpe2R0KHQucHJvZ3JhbUluZm8ubmFtZSk7bGV0IG89dGhpcy5iYWNrZW5kLmRldmljZSxjPXRoaXMuYmFja2VuZC5nZXRDb21wdXRlUGFzc0VuY29kZXIoKTt0aGlzLmJhY2tlbmQud3JpdGVUaW1lc3RhbXAodGhpcy5iYWNrZW5kLnBlbmRpbmdEaXNwYXRjaE51bWJlcioyKSxjLnNldFBpcGVsaW5lKHQuY29tcHV0ZVBpcGVsaW5lKTtsZXQgcD1bXTtmb3IobGV0IGwgb2YgcilwLnB1c2goe2JpbmRpbmc6cC5sZW5ndGgscmVzb3VyY2U6e2J1ZmZlcjpsLmJ1ZmZlcn19KTtmb3IobGV0IGwgb2YgYSlwLnB1c2goe2JpbmRpbmc6cC5sZW5ndGgscmVzb3VyY2U6e2J1ZmZlcjpsLmJ1ZmZlcn19KTtzJiZwLnB1c2goe2JpbmRpbmc6cC5sZW5ndGgscmVzb3VyY2U6c30pO2xldCBtPW8uY3JlYXRlQmluZEdyb3VwKHtsYXlvdXQ6dC5jb21wdXRlUGlwZWxpbmUuZ2V0QmluZEdyb3VwTGF5b3V0KDApLGVudHJpZXM6cCxsYWJlbDp0LnByb2dyYW1JbmZvLm5hbWV9KTtjLnNldEJpbmRHcm91cCgwLG0pLGMuZGlzcGF0Y2hXb3JrZ3JvdXBzKC4uLmkpLHRoaXMuYmFja2VuZC53cml0ZVRpbWVzdGFtcCh0aGlzLmJhY2tlbmQucGVuZGluZ0Rpc3BhdGNoTnVtYmVyKjIrMSksdGhpcy5iYWNrZW5kLnBlbmRpbmdEaXNwYXRjaE51bWJlcisrLCh0aGlzLmJhY2tlbmQucGVuZGluZ0Rpc3BhdGNoTnVtYmVyPj10aGlzLmJhY2tlbmQubWF4RGlzcGF0Y2hOdW1iZXJ8fHRoaXMuYmFja2VuZC5xdWVyeVR5cGU9PT1cImF0LXBhc3Nlc1wiKSYmdGhpcy5iYWNrZW5kLmVuZENvbXB1dGVQYXNzKCksdGhpcy5iYWNrZW5kLnBlbmRpbmdEaXNwYXRjaE51bWJlcj49dGhpcy5iYWNrZW5kLm1heERpc3BhdGNoTnVtYmVyJiZ0aGlzLmJhY2tlbmQuZmx1c2goKSxjdCh0LnByb2dyYW1JbmZvLm5hbWUpfWRpc3Bvc2UoKXt9YnVpbGQodCxyKXtkdCh0Lm5hbWUpO2xldCBhPXRoaXMuYmFja2VuZC5kZXZpY2UsaT1bXTthLmZlYXR1cmVzLmhhcyhcInNoYWRlci1mMTZcIikmJmkucHVzaChcImVuYWJsZSBmMTY7XCIpO2xldCBzPVlvKHIpLG89dC5nZXRTaGFkZXJTb3VyY2UocyksYz1gJHtpLmpvaW4oYFxuYCl9XG4ke3MuYWRkaXRpb25hbEltcGxlbWVudGF0aW9uc31cbiR7b31gLHA9YS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6YyxsYWJlbDp0Lm5hbWV9KTtEZShcInZlcmJvc2VcIiwoKT0+YFtXZWJHUFVdICR7dC5uYW1lfSBzaGFkZXIgY29kZTogJHtjfWApO2xldCBtPWEuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKHtjb21wdXRlOnttb2R1bGU6cCxlbnRyeVBvaW50OlwibWFpblwifSxsYXlvdXQ6XCJhdXRvXCIsbGFiZWw6dC5uYW1lfSk7cmV0dXJuIGN0KHQubmFtZSkse3Byb2dyYW1JbmZvOnQsY29tcHV0ZVBpcGVsaW5lOm19fW5vcm1hbGl6ZURpc3BhdGNoR3JvdXBTaXplKHQpe2xldCByPXR5cGVvZiB0PT1cIm51bWJlclwiP3Q6dC54LGE9dHlwZW9mIHQ9PVwibnVtYmVyXCI/MTp0Lnl8fDEsaT10eXBlb2YgdD09XCJudW1iZXJcIj8xOnQuenx8MSxzPXRoaXMuYmFja2VuZC5kZXZpY2UubGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBzUGVyRGltZW5zaW9uO2lmKHI8PXMmJmE8PXMmJmk8PXMpcmV0dXJuW3IsYSxpXTtsZXQgbz1yKmEqaSxjPU1hdGguY2VpbChNYXRoLnNxcnQobykpO2lmKGM+cyl7aWYoYz1NYXRoLmNlaWwoTWF0aC5jYnJ0KG8pKSxjPnMpdGhyb3cgbmV3IEVycm9yKFwiVG90YWwgZGlzcGF0Y2ggc2l6ZSBleGNlZWRzIFdlYkdQVSBtYXhpbXVtLlwiKTtyZXR1cm5bYyxjLGNdfWVsc2UgcmV0dXJuW2MsYywxXX19fSk7dmFyIEFmLFRmLHNhLG5kPVEoKCk9PntcInVzZSBzdHJpY3RcIjtidCgpO3plKCk7cXQoKTtHbygpO0tvKCk7dGQoKTtyZCgpO0FmPShlLHQpPT57aWYodC5sZW5ndGghPT1lLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYGlucHV0RGVwZW5kZW5jaWVzIGxlbmd0aCAke3QubGVuZ3RofSBpcyBub3QgZXF1YWwgdG8gaW5wdXRUZW5zb3JzIGxlbmd0aCAke2UubGVuZ3RofS5gKTtsZXQgcj1bXTtmb3IobGV0IGE9MDthPGUubGVuZ3RoOysrYSl7bGV0IGk9ZVthXS5kYXRhVHlwZTtzd2l0Y2godFthXSl7Y2FzZVwibm9uZVwiOntyLnB1c2goXCJcIik7YnJlYWt9Y2FzZVwidHlwZVwiOntyLnB1c2goYCR7aX1gKTticmVha31jYXNlXCJyYW5rXCI6e2xldCBzPWVbYV0uZGltcy5sZW5ndGg7ci5wdXNoKGAke2l9OyR7c31gKTticmVha31jYXNlXCJkaW1zXCI6e2xldCBzPWVbYV0uZGltcy5qb2luKFwiLFwiKTtyLnB1c2goYCR7aX07JHtzfWApO2JyZWFrfWRlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGB1bnN1cHBvcnRlZCBpbnB1dCBkZXBlbmRlbmN5OiAke3RbYV19YCl9fXJldHVybiByLmpvaW4oXCJ8XCIpfSxUZj0oZSx0LHIpPT57bGV0IGE9ZS5uYW1lO3JldHVybiBlLnNoYWRlckNhY2hlPy5oaW50JiYoYSs9XCJbXCIrZS5zaGFkZXJDYWNoZS5oaW50K1wiXVwiKSxhKz1cIjpcIityK2A6JHtBZih0LGUuc2hhZGVyQ2FjaGU/LmlucHV0RGVwZW5kZW5jaWVzPz9uZXcgQXJyYXkodC5sZW5ndGgpLmZpbGwoXCJkaW1zXCIpKX1gLGF9LHNhPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5jdXJyZW50S2VybmVsSWQ9bnVsbDt0aGlzLmNvbW1hbmRFbmNvZGVyPW51bGw7dGhpcy5jb21wdXRlUGFzc0VuY29kZXI9bnVsbDt0aGlzLm1heERpc3BhdGNoTnVtYmVyPTE2O3RoaXMucGVuZGluZ0Rpc3BhdGNoTnVtYmVyPTA7dGhpcy5wZW5kaW5nS2VybmVscz1bXTt0aGlzLnBlbmRpbmdRdWVyaWVzPW5ldyBNYXA7dGhpcy5zZXNzaW9uRXh0ZXJuYWxEYXRhTWFwcGluZz1uZXcgTWFwfWdldCBjdXJyZW50S2VybmVsQ3VzdG9tRGF0YSgpe2lmKHRoaXMuY3VycmVudEtlcm5lbElkPT09bnVsbCl0aHJvdyBuZXcgRXJyb3IoXCJjdXJyZW50S2VybmVsQ3VzdG9tRGF0YSgpOiBjdXJyZW50S2VybmVsSWQgaXMgbnVsbC4gKHNob3VsZCBub3QgaGFwcGVuKVwiKTtsZXQgdD10aGlzLmtlcm5lbEN1c3RvbURhdGEuZ2V0KHRoaXMuY3VycmVudEtlcm5lbElkKTtyZXR1cm4gdHx8KHQ9e30sdGhpcy5rZXJuZWxDdXN0b21EYXRhLnNldCh0aGlzLmN1cnJlbnRLZXJuZWxJZCx0KSksdH1hc3luYyBpbml0aWFsaXplKHQscil7dGhpcy5lbnY9dDtsZXQgYT1bXSxpPXtyZXF1aXJlZExpbWl0czp7bWF4Q29tcHV0ZVdvcmtncm91cFN0b3JhZ2VTaXplOnIubGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBTdG9yYWdlU2l6ZSxtYXhDb21wdXRlV29ya2dyb3Vwc1BlckRpbWVuc2lvbjpyLmxpbWl0cy5tYXhDb21wdXRlV29ya2dyb3Vwc1BlckRpbWVuc2lvbixtYXhTdG9yYWdlQnVmZmVyQmluZGluZ1NpemU6ci5saW1pdHMubWF4U3RvcmFnZUJ1ZmZlckJpbmRpbmdTaXplLG1heEJ1ZmZlclNpemU6ci5saW1pdHMubWF4QnVmZmVyU2l6ZSxtYXhDb21wdXRlSW52b2NhdGlvbnNQZXJXb3JrZ3JvdXA6ci5saW1pdHMubWF4Q29tcHV0ZUludm9jYXRpb25zUGVyV29ya2dyb3VwLG1heENvbXB1dGVXb3JrZ3JvdXBTaXplWDpyLmxpbWl0cy5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVgsbWF4Q29tcHV0ZVdvcmtncm91cFNpemVZOnIubGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBTaXplWSxtYXhDb21wdXRlV29ya2dyb3VwU2l6ZVo6ci5saW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFNpemVafSxyZXF1aXJlZEZlYXR1cmVzOmF9O3IuZmVhdHVyZXMuaGFzKFwiY2hyb21pdW0tZXhwZXJpbWVudGFsLXRpbWVzdGFtcC1xdWVyeS1pbnNpZGUtcGFzc2VzXCIpP2EucHVzaChcImNocm9taXVtLWV4cGVyaW1lbnRhbC10aW1lc3RhbXAtcXVlcnktaW5zaWRlLXBhc3Nlc1wiKTpyLmZlYXR1cmVzLmhhcyhcInRpbWVzdGFtcC1xdWVyeVwiKSYmYS5wdXNoKFwidGltZXN0YW1wLXF1ZXJ5XCIpLHIuZmVhdHVyZXMuaGFzKFwic2hhZGVyLWYxNlwiKSYmYS5wdXNoKFwic2hhZGVyLWYxNlwiKSx0aGlzLmRldmljZT1hd2FpdCByLnJlcXVlc3REZXZpY2UoaSksdGhpcy5ncHVEYXRhTWFuYWdlcj1qbyh0aGlzKSx0aGlzLnByb2dyYW1NYW5hZ2VyPW5ldyBvYSh0aGlzKSx0aGlzLmtlcm5lbHM9bmV3IE1hcCx0aGlzLmtlcm5lbFBlcnNpc3RlbnREYXRhPW5ldyBNYXAsdGhpcy5rZXJuZWxDdXN0b21EYXRhPW5ldyBNYXAsSG8odC5sb2dMZXZlbCwhIXQuZGVidWcpLHRoaXMuZGV2aWNlLm9udW5jYXB0dXJlZGVycm9yPXM9PntzLmVycm9yIGluc3RhbmNlb2YgR1BVVmFsaWRhdGlvbkVycm9yJiZjb25zb2xlLmVycm9yKGBBbiB1bmNhdWdodCBXZWJHUFUgdmFsaWRhdGlvbiBlcnJvciB3YXMgcmFpc2VkOiAke3MuZXJyb3IubWVzc2FnZX1gKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMuZW52LndlYmdwdSxcImRldmljZVwiLHt2YWx1ZTp0aGlzLmRldmljZX0pLHRoaXMuc2V0UXVlcnlUeXBlKCl9ZGlzcG9zZSgpe3R5cGVvZiB0aGlzLnF1ZXJ5U2V0PFwidVwiJiZ0aGlzLnF1ZXJ5U2V0LmRlc3Ryb3koKSx0aGlzLmdwdURhdGFNYW5hZ2VyLmRpc3Bvc2UoKX1nZXRDb21tYW5kRW5jb2Rlcigpe3JldHVybiB0aGlzLmNvbW1hbmRFbmNvZGVyfHwodGhpcy5jb21tYW5kRW5jb2Rlcj10aGlzLmRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpKSx0aGlzLmNvbW1hbmRFbmNvZGVyfWdldENvbXB1dGVQYXNzRW5jb2Rlcigpe2lmKCF0aGlzLmNvbXB1dGVQYXNzRW5jb2Rlcil7bGV0IHQ9e307dGhpcy5xdWVyeVR5cGU9PT1cImF0LXBhc3Nlc1wiJiYodC50aW1lc3RhbXBXcml0ZXM9e3F1ZXJ5U2V0OnRoaXMucXVlcnlTZXQsYmVnaW5uaW5nT2ZQYXNzV3JpdGVJbmRleDp0aGlzLnBlbmRpbmdEaXNwYXRjaE51bWJlcioyLGVuZE9mUGFzc1dyaXRlSW5kZXg6dGhpcy5wZW5kaW5nRGlzcGF0Y2hOdW1iZXIqMisxfSksdGhpcy5jb21wdXRlUGFzc0VuY29kZXI9dGhpcy5nZXRDb21tYW5kRW5jb2RlcigpLmJlZ2luQ29tcHV0ZVBhc3ModCl9cmV0dXJuIHRoaXMuY29tcHV0ZVBhc3NFbmNvZGVyfWVuZENvbXB1dGVQYXNzKCl7dGhpcy5jb21wdXRlUGFzc0VuY29kZXImJih0aGlzLmNvbXB1dGVQYXNzRW5jb2Rlci5lbmQoKSx0aGlzLmNvbXB1dGVQYXNzRW5jb2Rlcj1udWxsKX1mbHVzaCgpe2lmKCF0aGlzLmNvbW1hbmRFbmNvZGVyKXJldHVybjtkdCgpLHRoaXMuZW5kQ29tcHV0ZVBhc3MoKTtsZXQgdDt0aGlzLnF1ZXJ5VHlwZSE9PVwibm9uZVwiJiYodGhpcy5jb21tYW5kRW5jb2Rlci5yZXNvbHZlUXVlcnlTZXQodGhpcy5xdWVyeVNldCwwLHRoaXMucGVuZGluZ0Rpc3BhdGNoTnVtYmVyKjIsdGhpcy5xdWVyeVJlc29sdmVCdWZmZXIsMCksdD10aGlzLmRldmljZS5jcmVhdGVCdWZmZXIoe3NpemU6dGhpcy5wZW5kaW5nRGlzcGF0Y2hOdW1iZXIqMio4LHVzYWdlOkdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEfEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUfSksdGhpcy5wZW5kaW5nUXVlcmllcy5zZXQodCx0aGlzLnBlbmRpbmdLZXJuZWxzKSx0aGlzLnBlbmRpbmdLZXJuZWxzPVtdLHRoaXMuY29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRvQnVmZmVyKHRoaXMucXVlcnlSZXNvbHZlQnVmZmVyLDAsdCwwLHRoaXMucGVuZGluZ0Rpc3BhdGNoTnVtYmVyKjIqOCkpLHRoaXMuZGV2aWNlLnF1ZXVlLnN1Ym1pdChbdGhpcy5jb21tYW5kRW5jb2Rlci5maW5pc2goKV0pLHRoaXMuZ3B1RGF0YU1hbmFnZXIucmVmcmVzaFBlbmRpbmdCdWZmZXJzKCksdGhpcy5jb21tYW5kRW5jb2Rlcj1udWxsLHRoaXMucGVuZGluZ0Rpc3BhdGNoTnVtYmVyPTAsdGhpcy5xdWVyeVR5cGUhPT1cIm5vbmVcIiYmdC5tYXBBc3luYyhHUFVNYXBNb2RlLlJFQUQpLnRoZW4oKCk9PntsZXQgcj1uZXcgQmlnVWludDY0QXJyYXkodC5nZXRNYXBwZWRSYW5nZSgpKSxhPXRoaXMucGVuZGluZ1F1ZXJpZXMuZ2V0KHQpO2ZvcihsZXQgaT0wO2k8ci5sZW5ndGgvMjtpKyspe2xldCBzPWFbaV0sbz1zLmtlcm5lbElkLGM9dGhpcy5rZXJuZWxzLmdldChvKSxwPWMua2VybmVsVHlwZSxtPWMua2VybmVsTmFtZSxsPXMucHJvZ3JhbU5hbWUsZz1zLmlucHV0VGVuc29yVmlld3MsYj1zLm91dHB1dFRlbnNvclZpZXdzLHc9cltpKjJdLCQ9cltpKjIrMV07dHlwZW9mIHRoaXMucXVlcnlUaW1lQmFzZT5cInVcIiYmKHRoaXMucXVlcnlUaW1lQmFzZT13KTtsZXQgeD1OdW1iZXIody10aGlzLnF1ZXJ5VGltZUJhc2UpLFQ9TnVtYmVyKCQtdGhpcy5xdWVyeVRpbWVCYXNlKTtpZighTnVtYmVyLmlzU2FmZUludGVnZXIoeCl8fCFOdW1iZXIuaXNTYWZlSW50ZWdlcihUKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcImluY29ycmVjdCB0aW1lc3RhbXAgcmFuZ2VcIik7aWYodGhpcy5lbnYud2ViZ3B1LnByb2ZpbGluZz8ub25kYXRhKXRoaXMuZW52LndlYmdwdS5wcm9maWxpbmcub25kYXRhKHt2ZXJzaW9uOjEsaW5wdXRzTWV0YWRhdGE6Zy5tYXAoQz0+KHtkaW1zOkMuZGltcyxkYXRhVHlwZTpwdChDLmRhdGFUeXBlKX0pKSxvdXRwdXRzTWV0YWRhdGE6Yi5tYXAoQz0+KHtkaW1zOkMuZGltcyxkYXRhVHlwZTpwdChDLmRhdGFUeXBlKX0pKSxrZXJuZWxJZDpvLGtlcm5lbFR5cGU6cCxrZXJuZWxOYW1lOm0scHJvZ3JhbU5hbWU6bCxzdGFydFRpbWU6eCxlbmRUaW1lOlR9KTtlbHNle2xldCBDPVwiXCI7Zy5mb3JFYWNoKChFLE8pPT57Qys9YGlucHV0WyR7T31dOiBbJHtFLmRpbXN9XSB8ICR7cHQoRS5kYXRhVHlwZSl9LCBgfSk7bGV0IFM9XCJcIjtiLmZvckVhY2goKEUsTyk9PntTKz1gb3V0cHV0WyR7T31dOiBbJHtFLmRpbXN9XSB8ICR7cHQoRS5kYXRhVHlwZSl9LCBgfSksY29uc29sZS5sb2coYFtwcm9maWxpbmddIGtlcm5lbCBcIiR7b318JHtwfXwke219fCR7bH1cIiAke0N9JHtTfWV4ZWN1dGlvbiB0aW1lOiAke1QteH0gbnNgKX1xcihcIkdQVVwiLGAke2x9Ojoke3d9OjokeyR9YCl9dC51bm1hcCgpLHRoaXMucGVuZGluZ1F1ZXJpZXMuZGVsZXRlKHQpfSksY3QoKX1ydW4odCxyLGEsaSxzKXtkdCh0Lm5hbWUpO2xldCBvPVtdO2ZvcihsZXQgUz0wO1M8ci5sZW5ndGg7KytTKXtsZXQgRT10aGlzLmdwdURhdGFNYW5hZ2VyLmdldChyW1NdLmRhdGEpO2lmKCFFKXRocm93IG5ldyBFcnJvcihgbm8gR1BVIGRhdGEgZm9yIGlucHV0OiAke3JbU10uZGF0YX1gKTtvW1NdPUV9bGV0e291dHB1dHM6YyxkaXNwYXRjaEdyb3VwOnAscHJvZ3JhbVVuaWZvcm1zOm19PXQuZ2V0UnVuRGF0YShyKSxsPWEubGVuZ3RoPT09MD9jLm1hcCgoUyxFKT0+RSk6YTtpZihsLmxlbmd0aCE9PWMubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgT3V0cHV0IHNpemUgJHtsLmxlbmd0aH0gbXVzdCBiZSBlcXVhbCB0byAke2MubGVuZ3RofS5gKTtsZXQgZz1bXSxiPVtdO2ZvcihsZXQgUz0wO1M8Yy5sZW5ndGg7KytTKXtpZighTnVtYmVyLmlzSW50ZWdlcihsW1NdKXx8bFtTXTwtM3x8bFtTXT49Yy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIG91dHB1dCBpbmRleDogJHtsW1NdfWApO2lmKGxbU109PT0tMyljb250aW51ZTtsZXQgRT1sW1NdPT09LTEsTz1sW1NdPT09LTIsVT1FfHxPP3MoY1tTXS5kYXRhVHlwZSxjW1NdLmRpbXMpOmkobFtTXSxjW1NdLmRhdGFUeXBlLGNbU10uZGltcyksRD10aGlzLmdwdURhdGFNYW5hZ2VyLmdldChVLmRhdGEpO2lmKCFEKXRocm93IG5ldyBFcnJvcihgbm8gR1BVIGRhdGEgZm9yIG91dHB1dDogJHtVLmRhdGF9YCk7aWYoRSYmdGhpcy50ZW1wb3JhcnlEYXRhLnB1c2goRCksTyl7bGV0IFY9dGhpcy5rZXJuZWxQZXJzaXN0ZW50RGF0YS5nZXQodGhpcy5jdXJyZW50S2VybmVsSWQpO1Z8fChWPVtdLHRoaXMua2VybmVsUGVyc2lzdGVudERhdGEuc2V0KHRoaXMuY3VycmVudEtlcm5lbElkLFYpKSxWLnB1c2goRCl9Zy5wdXNoKFUpLGIucHVzaChEKX1sZXQgdztpZihtKXtsZXQgUz0wLEU9W107bS5mb3JFYWNoKFY9PntsZXQgWT10eXBlb2YgVi5kYXRhPT1cIm51bWJlclwiP1tWLmRhdGFdOlYuZGF0YTtpZihZLmxlbmd0aD09PTApcmV0dXJuO2xldCBzZT1WLnR5cGU9PT1cImZsb2F0MTZcIj8yOjQsQix0ZTtWLnR5cGU9PT1cImZsb2F0MTZcIj8odGU9WS5sZW5ndGg+ND8xNjpZLmxlbmd0aD4yPzg6WS5sZW5ndGgqc2UsQj1ZLmxlbmd0aD40PzE2OnNlKlkubGVuZ3RoKToodGU9WS5sZW5ndGg8PTI/WS5sZW5ndGgqc2U6MTYsQj0xNiksUz1NYXRoLmNlaWwoUy90ZSkqdGUsRS5wdXNoKFMpO2xldCBrZT1WLnR5cGU9PT1cImZsb2F0MTZcIj84OjQ7Uys9WS5sZW5ndGg+ND9NYXRoLmNlaWwoWS5sZW5ndGgva2UpKkI6WS5sZW5ndGgqc2V9KTtsZXQgTz0xNjtTPU1hdGguY2VpbChTL08pKk87bGV0IFU9bmV3IEFycmF5QnVmZmVyKFMpO20uZm9yRWFjaCgoVixZKT0+e2xldCBzZT1FW1ldLEI9dHlwZW9mIFYuZGF0YT09XCJudW1iZXJcIj9bVi5kYXRhXTpWLmRhdGE7Vi50eXBlPT09XCJpbnQzMlwiP25ldyBJbnQzMkFycmF5KFUsc2UsQi5sZW5ndGgpLnNldChCKTpWLnR5cGU9PT1cInVpbnQzMlwiP25ldyBVaW50MzJBcnJheShVLHNlLEIubGVuZ3RoKS5zZXQoQik6Vi50eXBlPT09XCJmbG9hdDE2XCI/bmV3IFVpbnQxNkFycmF5KFUsc2UsQi5sZW5ndGgpLnNldChCKTpuZXcgRmxvYXQzMkFycmF5KFUsc2UsQi5sZW5ndGgpLnNldChCKX0pO2xldCBEPXRoaXMuZ3B1RGF0YU1hbmFnZXIuY3JlYXRlKFMsR1BVQnVmZmVyVXNhZ2UuQ09QWV9EU1R8R1BVQnVmZmVyVXNhZ2UuVU5JRk9STSk7dGhpcy5kZXZpY2UucXVldWUud3JpdGVCdWZmZXIoRC5idWZmZXIsMCxVLDAsUyksdGhpcy5ncHVEYXRhTWFuYWdlci5yZWxlYXNlKEQuaWQpLHc9e29mZnNldDowLHNpemU6UyxidWZmZXI6RC5idWZmZXJ9fWxldCAkPXRoaXMucHJvZ3JhbU1hbmFnZXIubm9ybWFsaXplRGlzcGF0Y2hHcm91cFNpemUocCkseD0kWzFdPT09MSYmJFsyXT09PTEsVD1UZih0LHIseCksQz10aGlzLnByb2dyYW1NYW5hZ2VyLmdldEFydGlmYWN0KFQpO2lmKEN8fChDPXRoaXMucHJvZ3JhbU1hbmFnZXIuYnVpbGQodCwkKSx0aGlzLnByb2dyYW1NYW5hZ2VyLnNldEFydGlmYWN0KFQsQyksRGUoXCJpbmZvXCIsKCk9PmBbYXJ0aWZhY3RdIGtleTogJHtUfSwgcHJvZ3JhbU5hbWU6ICR7dC5uYW1lfWApKSxEZShcImluZm9cIiwoKT0+YFtQcm9ncmFtTWFuYWdlcl0gcnVuIFwiJHt0Lm5hbWV9XCIgKGtleT0ke1R9KSB3aXRoICR7JFswXX14JHskWzFdfXgkeyRbMl19YCksdGhpcy5xdWVyeVR5cGUhPT1cIm5vbmVcIil7bGV0IFM9e2tlcm5lbElkOnRoaXMuY3VycmVudEtlcm5lbElkLHByb2dyYW1OYW1lOkMucHJvZ3JhbUluZm8ubmFtZSxpbnB1dFRlbnNvclZpZXdzOnIsb3V0cHV0VGVuc29yVmlld3M6Z307dGhpcy5wZW5kaW5nS2VybmVscy5wdXNoKFMpfXJldHVybiB0aGlzLnByb2dyYW1NYW5hZ2VyLnJ1bihDLG8sYiwkLHcpLGN0KHQubmFtZSksZ311cGxvYWQodCxyKXt0aGlzLmdwdURhdGFNYW5hZ2VyLnVwbG9hZCh0LHIpfW1lbWNweSh0LHIpe3RoaXMuZ3B1RGF0YU1hbmFnZXIubWVtY3B5KHQscil9YXN5bmMgZG93bmxvYWQodCxyKXthd2FpdCB0aGlzLmdwdURhdGFNYW5hZ2VyLmRvd25sb2FkKHQscil9YWxsb2ModCl7cmV0dXJuIHRoaXMuZ3B1RGF0YU1hbmFnZXIuY3JlYXRlKHQpLmlkfWZyZWUodCl7cmV0dXJuIHRoaXMuZ3B1RGF0YU1hbmFnZXIucmVsZWFzZSh0KX1jcmVhdGVLZXJuZWwodCxyLGEsaSl7bGV0IHM9ZWQuZ2V0KHQpO2lmKCFzKXRocm93IG5ldyBFcnJvcihga2VybmVsIG5vdCBpbXBsZW1lbnRlZDogJHt0fWApO2xldCBvPXtrZXJuZWxUeXBlOnQsa2VybmVsTmFtZTppLGtlcm5lbEVudHJ5OnNbMF0sYXR0cmlidXRlczpbc1sxXSxhXX07dGhpcy5rZXJuZWxzLnNldChyLG8pfXJlbGVhc2VLZXJuZWwodCl7bGV0IHI9dGhpcy5rZXJuZWxQZXJzaXN0ZW50RGF0YS5nZXQodCk7aWYocil7Zm9yKGxldCBhIG9mIHIpdGhpcy5ncHVEYXRhTWFuYWdlci5yZWxlYXNlKGEuaWQpO3RoaXMua2VybmVsUGVyc2lzdGVudERhdGEuZGVsZXRlKHQpfXRoaXMua2VybmVsQ3VzdG9tRGF0YS5kZWxldGUodCksdGhpcy5rZXJuZWxzLmRlbGV0ZSh0KX1jb21wdXRlS2VybmVsKHQscixhKXtsZXQgaT10aGlzLmtlcm5lbHMuZ2V0KHQpO2lmKCFpKXRocm93IG5ldyBFcnJvcihga2VybmVsIG5vdCBjcmVhdGVkOiAke3R9YCk7bGV0IHM9aS5rZXJuZWxUeXBlLG89aS5rZXJuZWxOYW1lLGM9aS5rZXJuZWxFbnRyeSxwPWkuYXR0cmlidXRlcztpZih0aGlzLmN1cnJlbnRLZXJuZWxJZCE9PW51bGwpdGhyb3cgbmV3IEVycm9yKGBrZXJuZWwgXCJbJHtzfV0gJHtvfVwiIGlzIG5vdCBhbGxvd2VkIHRvIGJlIGNhbGxlZCByZWN1cnNpdmVseWApO3RoaXMuY3VycmVudEtlcm5lbElkPXQscFswXSYmKHBbMV09cFswXShwWzFdKSxwWzBdPXZvaWQgMCksRGUoXCJpbmZvXCIsKCk9PmBbV2ViR1BVXSBTdGFydCB0byBydW4ga2VybmVsIFwiWyR7c31dICR7b31cIi4uLmApO2xldCBtPXRoaXMuZW52LmRlYnVnO3RoaXMudGVtcG9yYXJ5RGF0YT1bXTt0cnl7cmV0dXJuIG0mJnRoaXMuZGV2aWNlLnB1c2hFcnJvclNjb3BlKFwidmFsaWRhdGlvblwiKSxjKHIscFsxXSksMH1jYXRjaChsKXtyZXR1cm4gYS5wdXNoKFByb21pc2UucmVzb2x2ZShgW1dlYkdQVV0gS2VybmVsIFwiWyR7c31dICR7b31cIiBmYWlsZWQuICR7bH1gKSksMX1maW5hbGx5e20mJmEucHVzaCh0aGlzLmRldmljZS5wb3BFcnJvclNjb3BlKCkudGhlbihsPT5sP2BHUFUgdmFsaWRhdGlvbiBlcnJvciBmb3Iga2VybmVsIFwiWyR7c31dICR7b31cIjogJHtsLm1lc3NhZ2V9YDpudWxsKSk7Zm9yKGxldCBsIG9mIHRoaXMudGVtcG9yYXJ5RGF0YSl0aGlzLmdwdURhdGFNYW5hZ2VyLnJlbGVhc2UobC5pZCk7dGhpcy50ZW1wb3JhcnlEYXRhPVtdLHRoaXMuY3VycmVudEtlcm5lbElkPW51bGx9fXJlZ2lzdGVyQnVmZmVyKHQscixhLGkpe2xldCBzPXRoaXMuc2Vzc2lvbkV4dGVybmFsRGF0YU1hcHBpbmcuZ2V0KHQpO3N8fChzPW5ldyBNYXAsdGhpcy5zZXNzaW9uRXh0ZXJuYWxEYXRhTWFwcGluZy5zZXQodCxzKSk7bGV0IG89cy5nZXQociksYz10aGlzLmdwdURhdGFNYW5hZ2VyLnJlZ2lzdGVyRXh0ZXJuYWxCdWZmZXIoYSxpLG8/LlsxXSk7cmV0dXJuIHMuc2V0KHIsW2MsYV0pLGN9dW5yZWdpc3RlckJ1ZmZlcnModCl7bGV0IHI9dGhpcy5zZXNzaW9uRXh0ZXJuYWxEYXRhTWFwcGluZy5nZXQodCk7ciYmKHIuZm9yRWFjaChhPT50aGlzLmdwdURhdGFNYW5hZ2VyLnVucmVnaXN0ZXJFeHRlcm5hbEJ1ZmZlcihhWzFdKSksdGhpcy5zZXNzaW9uRXh0ZXJuYWxEYXRhTWFwcGluZy5kZWxldGUodCkpfWdldEJ1ZmZlcih0KXtsZXQgcj10aGlzLmdwdURhdGFNYW5hZ2VyLmdldCh0KTtpZighcil0aHJvdyBuZXcgRXJyb3IoYG5vIEdQVSBkYXRhIGZvciBidWZmZXI6ICR7dH1gKTtyZXR1cm4gci5idWZmZXJ9Y3JlYXRlRG93bmxvYWRlcih0LHIsYSl7cmV0dXJuIGFzeW5jKCk9PntsZXQgaT1hd2FpdCBIYSh0aGlzLHQscik7cmV0dXJuIExvKGkuYnVmZmVyLGEpfX13cml0ZVRpbWVzdGFtcCh0KXt0aGlzLnF1ZXJ5VHlwZT09PVwiaW5zaWRlLXBhc3Nlc1wiJiZ0aGlzLmNvbXB1dGVQYXNzRW5jb2Rlci53cml0ZVRpbWVzdGFtcCh0aGlzLnF1ZXJ5U2V0LHQpfXNldFF1ZXJ5VHlwZSgpe3RoaXMucXVlcnlUeXBlPVwibm9uZVwiLCh0aGlzLmVudi53ZWJncHUucHJvZmlsaW5nPy5tb2RlPT09XCJkZWZhdWx0XCJ8fHRoaXMuZW52Lndhc20udHJhY2UpJiYodGhpcy5kZXZpY2UuZmVhdHVyZXMuaGFzKFwiY2hyb21pdW0tZXhwZXJpbWVudGFsLXRpbWVzdGFtcC1xdWVyeS1pbnNpZGUtcGFzc2VzXCIpP3RoaXMucXVlcnlUeXBlPVwiaW5zaWRlLXBhc3Nlc1wiOnRoaXMuZGV2aWNlLmZlYXR1cmVzLmhhcyhcInRpbWVzdGFtcC1xdWVyeVwiKSYmKHRoaXMucXVlcnlUeXBlPVwiYXQtcGFzc2VzXCIpLHRoaXMucXVlcnlUeXBlIT09XCJub25lXCImJnR5cGVvZiB0aGlzLnF1ZXJ5U2V0PlwidVwiJiYodGhpcy5xdWVyeVNldD10aGlzLmRldmljZS5jcmVhdGVRdWVyeVNldCh7dHlwZTpcInRpbWVzdGFtcFwiLGNvdW50OnRoaXMubWF4RGlzcGF0Y2hOdW1iZXIqMn0pLHRoaXMucXVlcnlSZXNvbHZlQnVmZmVyPXRoaXMuZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7c2l6ZTp0aGlzLm1heERpc3BhdGNoTnVtYmVyKjIqOCx1c2FnZTpHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQ3xHUFVCdWZmZXJVc2FnZS5RVUVSWV9SRVNPTFZFfSkpKX1vblJ1blN0YXJ0KCl7dGhpcy5zZXRRdWVyeVR5cGUoKX19fSk7dmFyIGFkPXt9O25yKGFkLHtpbml0OigpPT5FZn0pO3ZhciBlbixjaSxFZixpZD1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7emUoKTtuZCgpO3F0KCk7Q2UoKTtlbj1jbGFzcyBle2NvbnN0cnVjdG9yKHQscixhLGkpe3RoaXMubW9kdWxlPXQ7dGhpcy5kYXRhVHlwZT1yO3RoaXMuZGF0YT1hO3RoaXMuZGltcz1pfWdldEZsb2F0MzJBcnJheSgpe2lmKHRoaXMuZGF0YVR5cGUhPT0xKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZGF0YSB0eXBlXCIpO2xldCB0PU4uc2l6ZSh0aGlzLmRpbXMpO3JldHVybiB0PT09MD9uZXcgRmxvYXQzMkFycmF5Om5ldyBGbG9hdDMyQXJyYXkodGhpcy5tb2R1bGUuSEVBUDguYnVmZmVyLHRoaXMuZGF0YSx0KX1nZXRCaWdJbnQ2NEFycmF5KCl7aWYodGhpcy5kYXRhVHlwZSE9PTcpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBkYXRhIHR5cGVcIik7bGV0IHQ9Ti5zaXplKHRoaXMuZGltcyk7cmV0dXJuIHQ9PT0wP25ldyBCaWdJbnQ2NEFycmF5Om5ldyBCaWdJbnQ2NEFycmF5KHRoaXMubW9kdWxlLkhFQVA4LmJ1ZmZlcix0aGlzLmRhdGEsdCl9Z2V0SW50MzJBcnJheSgpe2lmKHRoaXMuZGF0YVR5cGUhPT02KXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZGF0YSB0eXBlXCIpO2xldCB0PU4uc2l6ZSh0aGlzLmRpbXMpO3JldHVybiB0PT09MD9uZXcgSW50MzJBcnJheTpuZXcgSW50MzJBcnJheSh0aGlzLm1vZHVsZS5IRUFQOC5idWZmZXIsdGhpcy5kYXRhLHQpfXJlc2hhcGUodCl7aWYoTi5zaXplKHQpIT09Ti5zaXplKHRoaXMuZGltcykpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBuZXcgc2hhcGVcIik7cmV0dXJuIG5ldyBlKHRoaXMubW9kdWxlLHRoaXMuZGF0YVR5cGUsdGhpcy5kYXRhLHQpfX0sY2k9Y2xhc3N7Y29uc3RydWN0b3IodCxyLGEpe3RoaXMubW9kdWxlPXQ7dGhpcy5iYWNrZW5kPXI7dGhpcy5jdXN0b21EYXRhT2Zmc2V0PTA7dGhpcy5jdXN0b21EYXRhU2l6ZT0wO2xldCBpPXQuSEVBUFUzMixzPWE+Pj4yO3RoaXMub3BLZXJuZWxDb250ZXh0PWlbcysrXTtsZXQgbz1pW3MrK107dGhpcy5vdXRwdXRDb3VudD1pW3MrK10sdGhpcy5jdXN0b21EYXRhT2Zmc2V0PWlbcysrXSx0aGlzLmN1c3RvbURhdGFTaXplPWlbcysrXTtsZXQgYz1bXTtmb3IobGV0IHA9MDtwPG87cCsrKXtsZXQgbT1pW3MrK10sbD1pW3MrK10sZz1pW3MrK10sYj1bXTtmb3IobGV0IHc9MDt3PGc7dysrKWIucHVzaChpW3MrK10pO2MucHVzaChuZXcgZW4odCxtLGwsYikpfXRoaXMuaW5wdXRzPWN9Z2V0IGtlcm5lbEN1c3RvbURhdGEoKXtyZXR1cm4gdGhpcy5iYWNrZW5kLmN1cnJlbnRLZXJuZWxDdXN0b21EYXRhfWdldCBjdXN0b21EYXRhQnVmZmVyKCl7cmV0dXJuIHRoaXMubW9kdWxlLkhFQVBVOC5zdWJhcnJheSh0aGlzLmN1c3RvbURhdGFPZmZzZXQsdGhpcy5jdXN0b21EYXRhT2Zmc2V0K3RoaXMuY3VzdG9tRGF0YVNpemUpfWNvbXB1dGUodCxyKXtsZXQgYT1yPy5pbnB1dHM/Lm1hcChjPT50eXBlb2YgYz09XCJudW1iZXJcIj90aGlzLmlucHV0c1tjXTpjKT8/dGhpcy5pbnB1dHMsaT1yPy5vdXRwdXRzPz9bXSxzPShjLHAsbSk9Pm5ldyBlbih0aGlzLm1vZHVsZSxwLHRoaXMub3V0cHV0KGMsbSksbSksbz0oYyxwKT0+e2xldCBtPUtyKGMpO2lmKCFtKXRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgZGF0YSB0eXBlOiAke2N9YCk7bGV0IGw9bSpOLnNpemUocCk7cmV0dXJuIG5ldyBlbih0aGlzLm1vZHVsZSxjLHRoaXMuYmFja2VuZC5ncHVEYXRhTWFuYWdlci5jcmVhdGUobCkuaWQscCl9O3JldHVybiB0aGlzLmJhY2tlbmQucnVuKHQsYSxpLHMsbyl9b3V0cHV0KHQscil7bGV0IGE9dGhpcy5tb2R1bGUuc3RhY2tTYXZlKCk7dHJ5e2xldCBpPXRoaXMubW9kdWxlLnN0YWNrQWxsb2MoKDErci5sZW5ndGgpKjQpLHM9aT4+Mjt0aGlzLm1vZHVsZS5IRUFQVTMyW3MrK109ci5sZW5ndGg7Zm9yKGxldCBvPTA7bzxyLmxlbmd0aDtvKyspdGhpcy5tb2R1bGUuSEVBUFUzMltzKytdPXJbb107cmV0dXJuIHRoaXMubW9kdWxlLl9Kc2VwT3V0cHV0KHRoaXMub3BLZXJuZWxDb250ZXh0LHQsaSl9Y2F0Y2goaSl7dGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZ2VuZXJhdGUga2VybmVsJ3Mgb3V0cHV0WyR7dH1dIHdpdGggZGltcyBbJHtyfV0uIElmIHlvdSBhcmUgcnVubmluZyB3aXRoIHByZS1hbGxvY2F0ZWQgb3V0cHV0LCBwbGVhc2UgbWFrZSBzdXJlIHRoZSBvdXRwdXQgdHlwZS9kaW1zIGFyZSBjb3JyZWN0LiBFcnJvcjogJHtpfWApfWZpbmFsbHl7dGhpcy5tb2R1bGUuc3RhY2tSZXN0b3JlKGEpfX19LEVmPWFzeW5jKGUsdCxyKT0+e2xldCBhPWUuanNlcEluaXQ7aWYoIWEpdGhyb3cgbmV3IEVycm9yKFwiRmFpbGVkIHRvIGluaXRpYWxpemUgSlNFUC4gVGhlIFdlYkFzc2VtYmx5IG1vZHVsZSBpcyBub3QgYnVpbHQgd2l0aCBKU0VQIHN1cHBvcnQuXCIpO2xldCBpPW5ldyBzYTthd2FpdCBpLmluaXRpYWxpemUodCxyKSxhKGkscz0+aS5hbGxvYyhzKSxzPT5pLmZyZWUocyksKHMsbyxjLHA9ITEpPT57aWYocClEZShcInZlcmJvc2VcIiwoKT0+YFtXZWJHUFVdIGpzZXBDb3B5R3B1VG9HcHU6IHNyYz0ke3N9LCBkc3Q9JHtvfSwgc2l6ZT0ke2N9YCksaS5tZW1jcHkocyxvKTtlbHNle0RlKFwidmVyYm9zZVwiLCgpPT5gW1dlYkdQVV0ganNlcENvcHlDcHVUb0dwdTogZGF0YU9mZnNldD0ke3N9LCBncHVEYXRhSWQ9JHtvfSwgc2l6ZT0ke2N9YCk7bGV0IG09ZS5IRUFQVTguc3ViYXJyYXkocz4+PjAsKHM+Pj4wKStjKTtpLnVwbG9hZChvLG0pfX0sYXN5bmMocyxvLGMpPT57RGUoXCJ2ZXJib3NlXCIsKCk9PmBbV2ViR1BVXSBqc2VwQ29weUdwdVRvQ3B1OiBncHVEYXRhSWQ9JHtzfSwgZGF0YU9mZnNldD0ke299LCBzaXplPSR7Y31gKSxhd2FpdCBpLmRvd25sb2FkKHMsKCk9PmUuSEVBUFU4LnN1YmFycmF5KG8+Pj4wLChvPj4+MCkrYykpfSwocyxvLGMpPT5pLmNyZWF0ZUtlcm5lbChzLG8sYyxlLlVURjhUb1N0cmluZyhlLl9Kc2VwR2V0Tm9kZU5hbWUobykpKSxzPT5pLnJlbGVhc2VLZXJuZWwocyksKHMsbyxjLHApPT57RGUoXCJ2ZXJib3NlXCIsKCk9PmBbV2ViR1BVXSBqc2VwUnVuOiBzZXNzaW9uSGFuZGxlPSR7Y30sIGtlcm5lbD0ke3N9LCBjb250ZXh0RGF0YU9mZnNldD0ke299YCk7bGV0IG09bmV3IGNpKGUsaSxvKTtyZXR1cm4gaS5jb21wdXRlS2VybmVsKHMsbSxwKX0pfX0pO3ZhciBPZixzZCx1ZCx0bixrZixwaSxsZCxkZCxvZCxjZCxwZCxmZCxtZD1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7em8oKTtXbygpO3plKCk7dnIoKTtVbigpO05hKCk7T2Y9KGUsdCk9PntOZSgpLl9PcnRJbml0KGUsdCkhPT0wJiZNZShcIkNhbid0IGluaXRpYWxpemUgb25ueHJ1bnRpbWUuXCIpfSxzZD1hc3luYyBlPT57T2YoZS53YXNtLm51bVRocmVhZHMsWXIoZS5sb2dMZXZlbCkpfSx1ZD1hc3luYyhlLHQpPT57aWYodD09PVwid2ViZ3B1XCJ8fHQ9PT1cIndlYm5uXCIpe2lmKHR5cGVvZiBuYXZpZ2F0b3I+XCJ1XCJ8fCFuYXZpZ2F0b3IuZ3B1KXRocm93IG5ldyBFcnJvcihcIldlYkdQVSBpcyBub3Qgc3VwcG9ydGVkIGluIGN1cnJlbnQgZW52aXJvbm1lbnRcIik7bGV0IHI9YXdhaXQgbmF2aWdhdG9yLmdwdS5yZXF1ZXN0QWRhcHRlcigpO2lmKCFyKXRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGdldCBHUFUgYWRhcHRlci4gWW91IG1heSBuZWVkIHRvIGVuYWJsZSBmbGFnIFwiLS1lbmFibGUtdW5zYWZlLXdlYmdwdVwiIGlmIHlvdSBhcmUgdXNpbmcgQ2hyb21lLicpO2lmKCFlLndhc20uc2ltZCl0aHJvdyBuZXcgRXJyb3IoXCJOb3Qgc3VwcG9ydGVkIGZvciBXZWJHUFU9T04gYW5kIFNJTUQ9T0ZGLiBQbGVhc2Ugc2V0IGBlbnYud2FzbS5zaW1kYCB0byB0cnVlIHdoZW4gdXNpbmcgYHdlYmdwdWAgRVBcIik7bGV0IGE9KGlkKCksR3QoYWQpKS5pbml0O2F3YWl0IGEoTmUoKSxlLHIpfX0sdG49bmV3IE1hcCxrZj1lPT57bGV0IHQ9TmUoKSxyPXQuc3RhY2tTYXZlKCk7dHJ5e2xldCBhPXQuc3RhY2tBbGxvYyg4KTtyZXR1cm4gdC5fT3J0R2V0SW5wdXRPdXRwdXRDb3VudChlLGEsYSs0KSE9PTAmJk1lKFwiQ2FuJ3QgZ2V0IHNlc3Npb24gaW5wdXQvb3V0cHV0IGNvdW50LlwiKSxbdC5IRUFQMzJbYS80XSx0LkhFQVAzMlthLzQrMV1dfWZpbmFsbHl7dC5zdGFja1Jlc3RvcmUocil9fSxwaT1lPT57bGV0IHQ9TmUoKSxyPXQuX21hbGxvYyhlLmJ5dGVMZW5ndGgpO2lmKHI9PT0wKXRocm93IG5ldyBFcnJvcihgQ2FuJ3QgY3JlYXRlIGEgc2Vzc2lvbi4gZmFpbGVkIHRvIGFsbG9jYXRlIGEgYnVmZmVyIG9mIHNpemUgJHtlLmJ5dGVMZW5ndGh9LmApO3JldHVybiB0LkhFQVBVOC5zZXQoZSxyKSxbcixlLmJ5dGVMZW5ndGhdfSxsZD1hc3luYyhlLHQpPT57bGV0IHIsYSxpPU5lKCk7QXJyYXkuaXNBcnJheShlKT9bcixhXT1lOmUuYnVmZmVyPT09aS5IRUFQVTguYnVmZmVyP1tyLGFdPVtlLmJ5dGVPZmZzZXQsZS5ieXRlTGVuZ3RoXTpbcixhXT1waShlKTtsZXQgcz0wLG89MCxjPTAscD1bXSxtPVtdLGw9W107dHJ5e2lmKFtvLHBdPVVvKHQpLHQ/LmV4dGVybmFsRGF0YSYmaS5tb3VudEV4dGVybmFsRGF0YSl7bGV0IEM9W107Zm9yKGxldCBTIG9mIHQuZXh0ZXJuYWxEYXRhKXtsZXQgRT10eXBlb2YgUz09XCJzdHJpbmdcIj9TOlMucGF0aDtDLnB1c2goWnIodHlwZW9mIFM9PVwic3RyaW5nXCI/UzpTLmRhdGEpLnRoZW4oTz0+e2kubW91bnRFeHRlcm5hbERhdGEoRSxPKX0pKX1hd2FpdCBQcm9taXNlLmFsbChDKX1zPWF3YWl0IGkuX09ydENyZWF0ZVNlc3Npb24ocixhLG8pLHM9PT0wJiZNZShcIkNhbid0IGNyZWF0ZSBhIHNlc3Npb24uXCIpO2xldFtnLGJdPWtmKHMpLHc9W10sJD1bXSx4PVtdO2ZvcihsZXQgQz0wO0M8ZztDKyspe2xldCBTPWkuX09ydEdldElucHV0TmFtZShzLEMpO1M9PT0wJiZNZShcIkNhbid0IGdldCBhbiBpbnB1dCBuYW1lLlwiKSxtLnB1c2goUyksdy5wdXNoKGkuVVRGOFRvU3RyaW5nKFMpKX1mb3IobGV0IEM9MDtDPGI7QysrKXtsZXQgUz1pLl9PcnRHZXRPdXRwdXROYW1lKHMsQyk7Uz09PTAmJk1lKFwiQ2FuJ3QgZ2V0IGFuIG91dHB1dCBuYW1lLlwiKSxsLnB1c2goUyk7bGV0IEU9aS5VVEY4VG9TdHJpbmcoUyk7JC5wdXNoKEUpO3tsZXQgTz10eXBlb2YgdD8ucHJlZmVycmVkT3V0cHV0TG9jYXRpb249PVwic3RyaW5nXCI/dC5wcmVmZXJyZWRPdXRwdXRMb2NhdGlvbjp0Py5wcmVmZXJyZWRPdXRwdXRMb2NhdGlvbj8uW0VdPz9cImNwdVwiO2lmKE8hPT1cImNwdVwiJiZPIT09XCJjcHUtcGlubmVkXCImJk8hPT1cImdwdS1idWZmZXJcIil0aHJvdyBuZXcgRXJyb3IoYE5vdCBzdXBwb3J0ZWQgcHJlZmVycmVkIG91dHB1dCBsb2NhdGlvbjogJHtPfS5gKTt4LnB1c2goTyl9fWxldCBUPW51bGw7cmV0dXJuIHguc29tZShDPT5DPT09XCJncHUtYnVmZmVyXCIpJiYoYz1pLl9PcnRDcmVhdGVCaW5kaW5nKHMpLGM9PT0wJiZNZShcIkNhbid0IGNyZWF0ZSBJTyBiaW5kaW5nLlwiKSxUPXtoYW5kbGU6YyxvdXRwdXRQcmVmZXJyZWRMb2NhdGlvbnM6eCxvdXRwdXRQcmVmZXJyZWRMb2NhdGlvbnNFbmNvZGVkOngubWFwKEM9PldhKEMpKX0pLHRuLnNldChzLFtzLG0sbCxUXSksW3MsdywkXX1jYXRjaChnKXt0aHJvdyBtLmZvckVhY2goYj0+aS5fT3J0RnJlZShiKSksbC5mb3JFYWNoKGI9PmkuX09ydEZyZWUoYikpLGMhPT0wJiZpLl9PcnRSZWxlYXNlQmluZGluZyhjKSxzIT09MCYmaS5fT3J0UmVsZWFzZVNlc3Npb24ocyksZ31maW5hbGx5e2kuX2ZyZWUociksbyE9PTAmJmkuX09ydFJlbGVhc2VTZXNzaW9uT3B0aW9ucyhvKSxwLmZvckVhY2goZz0+aS5fZnJlZShnKSksaS51bm1vdW50RXh0ZXJuYWxEYXRhPy4oKX19LGRkPWU9PntsZXQgdD1OZSgpLHI9dG4uZ2V0KGUpO2lmKCFyKXRocm93IG5ldyBFcnJvcihgY2Fubm90IHJlbGVhc2Ugc2Vzc2lvbi4gaW52YWxpZCBzZXNzaW9uIGlkOiAke2V9YCk7bGV0W2EsaSxzLG9dPXI7byYmdC5fT3J0UmVsZWFzZUJpbmRpbmcoby5oYW5kbGUpLHQuanNlcFVucmVnaXN0ZXJCdWZmZXJzPy4oZSksaS5mb3JFYWNoKGM9PnQuX09ydEZyZWUoYykpLHMuZm9yRWFjaChjPT50Ll9PcnRGcmVlKGMpKSx0Ll9PcnRSZWxlYXNlU2Vzc2lvbihhKSx0bi5kZWxldGUoZSl9LG9kPShlLHQscixhLGkpPT57aWYoIWUpe3QucHVzaCgwKTtyZXR1cm59bGV0IHM9TmUoKSxvPWVbMF0sYz1lWzFdLHA9ZVszXSxtLGw7aWYobz09PVwic3RyaW5nXCImJnA9PT1cImdwdS1idWZmZXJcIil0aHJvdyBuZXcgRXJyb3IoXCJTdHJpbmcgdGVuc29yIGlzIG5vdCBzdXBwb3J0ZWQgb24gR1BVLlwiKTtpZihwPT09XCJncHUtYnVmZmVyXCIpe2xldCB3PWVbMl0uZ3B1QnVmZmVyLCQ9S3IoVWEobykpO2w9Yy5yZWR1Y2UoKHgsVCk9PngqVCwxKSokLG09cy5qc2VwUmVnaXN0ZXJCdWZmZXIoYSxpLHcsbCl9ZWxzZXtsZXQgdz1lWzJdO2lmKEFycmF5LmlzQXJyYXkodykpe2w9NCp3Lmxlbmd0aCxtPXMuX21hbGxvYyhsKSxyLnB1c2gobSk7bGV0ICQ9bS80O2ZvcihsZXQgeD0wO3g8dy5sZW5ndGg7eCsrKXtpZih0eXBlb2Ygd1t4XSE9XCJzdHJpbmdcIil0aHJvdyBuZXcgVHlwZUVycm9yKGB0ZW5zb3IgZGF0YSBhdCBpbmRleCAke3h9IGlzIG5vdCBhIHN0cmluZ2ApO3MuSEVBUFUzMlskKytdPVZlKHdbeF0scil9fWVsc2UgbD13LmJ5dGVMZW5ndGgsbT1zLl9tYWxsb2MobCksci5wdXNoKG0pLHMuSEVBUFU4LnNldChuZXcgVWludDhBcnJheSh3LmJ1ZmZlcix3LmJ5dGVPZmZzZXQsbCksbSl9bGV0IGc9cy5zdGFja1NhdmUoKSxiPXMuc3RhY2tBbGxvYyg0KmMubGVuZ3RoKTt0cnl7bGV0IHc9Yi80O2MuZm9yRWFjaCh4PT5zLkhFQVAzMlt3KytdPXgpO2xldCAkPXMuX09ydENyZWF0ZVRlbnNvcihVYShvKSxtLGwsYixjLmxlbmd0aCxXYShwKSk7JD09PTAmJk1lKGBDYW4ndCBjcmVhdGUgdGVuc29yIGZvciBpbnB1dC9vdXRwdXQuIHNlc3Npb249JHthfSwgaW5kZXg9JHtpfS5gKSx0LnB1c2goJCl9ZmluYWxseXtzLnN0YWNrUmVzdG9yZShnKX19LGNkPWFzeW5jKGUsdCxyLGEsaSxzKT0+e2xldCBvPU5lKCksYz10bi5nZXQoZSk7aWYoIWMpdGhyb3cgbmV3IEVycm9yKGBjYW5ub3QgcnVuIGluZmVyZW5jZS4gaW52YWxpZCBzZXNzaW9uIGlkOiAke2V9YCk7bGV0W3AsbSxsLGddPWMsYj10Lmxlbmd0aCx3PWEubGVuZ3RoLCQ9MCx4PVtdLFQ9W10sQz1bXSxTPVtdLEU9by5zdGFja1NhdmUoKSxPPW8uc3RhY2tBbGxvYyhiKjQpLFU9by5zdGFja0FsbG9jKGIqNCksRD1vLnN0YWNrQWxsb2Modyo0KSxWPW8uc3RhY2tBbGxvYyh3KjQpO3RyeXtbJCx4XT1EbyhzKTtmb3IobGV0IGVlPTA7ZWU8YjtlZSsrKW9kKHJbZWVdLFQsUyxlLHRbZWVdKTtmb3IobGV0IGVlPTA7ZWU8dztlZSsrKW9kKGlbZWVdLEMsUyxlLGIrYVtlZV0pO2xldCBZPU8vNCxzZT1VLzQsQj1ELzQsdGU9Vi80O2ZvcihsZXQgZWU9MDtlZTxiO2VlKyspby5IRUFQVTMyW1krK109VFtlZV0sby5IRUFQVTMyW3NlKytdPW1bdFtlZV1dO2ZvcihsZXQgZWU9MDtlZTx3O2VlKyspby5IRUFQVTMyW0IrK109Q1tlZV0sby5IRUFQVTMyW3RlKytdPWxbYVtlZV1dO2lmKGcpe2xldHtoYW5kbGU6ZWUsb3V0cHV0UHJlZmVycmVkTG9jYXRpb25zOmJlLG91dHB1dFByZWZlcnJlZExvY2F0aW9uc0VuY29kZWQ6VWV9PWc7aWYobS5sZW5ndGghPT1iKXRocm93IG5ldyBFcnJvcihgaW5wdXQgY291bnQgZnJvbSBmZWVkcyAoJHtifSkgaXMgZXhwZWN0ZWQgdG8gYmUgYWx3YXlzIGVxdWFsIHRvIG1vZGVsJ3MgaW5wdXQgY291bnQgKCR7bS5sZW5ndGh9KS5gKTtmb3IobGV0IHBlPTA7cGU8YjtwZSsrKXtsZXQgeWU9dFtwZV07YXdhaXQgby5fT3J0QmluZElucHV0KGVlLG1beWVdLFRbcGVdKSE9PTAmJk1lKGBDYW4ndCBiaW5kIGlucHV0WyR7cGV9XSBmb3Igc2Vzc2lvbj0ke2V9LmApfWZvcihsZXQgcGU9MDtwZTx3O3BlKyspe2xldCB5ZT1hW3BlXTtpW3BlXT8uWzNdP28uX09ydEJpbmRPdXRwdXQoZWUsbFt5ZV0sQ1twZV0sMCkhPT0wJiZNZShgQ2FuJ3QgYmluZCBwcmUtYWxsb2NhdGVkIG91dHB1dFske3BlfV0gZm9yIHNlc3Npb249JHtlfS5gKTpvLl9PcnRCaW5kT3V0cHV0KGVlLGxbeWVdLDAsVWVbeWVdKSE9PTAmJk1lKGBDYW4ndCBiaW5kIG91dHB1dFske3BlfV0gdG8gJHtiZVtwZV19IGZvciBzZXNzaW9uPSR7ZX0uYCl9fW8uanNlcE9uUnVuU3RhcnQ/LigpO2xldCBrZTtnP2tlPWF3YWl0IG8uX09ydFJ1bldpdGhCaW5kaW5nKHAsZy5oYW5kbGUsdyxELCQpOmtlPWF3YWl0IG8uX09ydFJ1bihwLFUsTyxiLFYsdyxELCQpLGtlIT09MCYmTWUoXCJmYWlsZWQgdG8gY2FsbCBPcnRSdW4oKS5cIik7bGV0IE9lPVtdO2ZvcihsZXQgZWU9MDtlZTx3O2VlKyspe2xldCBiZT1vLkhFQVBVMzJbRC80K2VlXTtpZihiZT09PUNbZWVdKXtPZS5wdXNoKGlbZWVdKTtjb250aW51ZX1sZXQgVWU9by5zdGFja1NhdmUoKSxwZT1vLnN0YWNrQWxsb2MoNCo0KSx5ZT0hMSxkZSx2ZT0wO3RyeXtvLl9PcnRHZXRUZW5zb3JEYXRhKGJlLHBlLHBlKzQscGUrOCxwZSsxMikhPT0wJiZNZShgQ2FuJ3QgYWNjZXNzIG91dHB1dCB0ZW5zb3IgZGF0YSBvbiBpbmRleCAke2VlfS5gKTtsZXQgQmU9cGUvNCxHZT1vLkhFQVBVMzJbQmUrK107dmU9by5IRUFQVTMyW0JlKytdO2xldCBGPW8uSEVBUFUzMltCZSsrXSxpZT1vLkhFQVBVMzJbQmUrK10saGU9W107Zm9yKGxldCBSZT0wO1JlPGllO1JlKyspaGUucHVzaChvLkhFQVBVMzJbRi80K1JlXSk7by5fT3J0RnJlZShGKTtsZXQgSmU9aGUucmVkdWNlKChSZSxGZSk9PlJlKkZlLDEpO2RlPXB0KEdlKTtsZXQgb3Q9Zz8ub3V0cHV0UHJlZmVycmVkTG9jYXRpb25zW2FbZWVdXTtpZihkZT09PVwic3RyaW5nXCIpe2lmKG90PT09XCJncHUtYnVmZmVyXCIpdGhyb3cgbmV3IEVycm9yKFwiU3RyaW5nIHRlbnNvciBpcyBub3Qgc3VwcG9ydGVkIG9uIEdQVS5cIik7bGV0IFJlPVtdLEZlPXZlLzQ7Zm9yKGxldCBCdD0wO0J0PEplO0J0Kyspe2xldCBNdD1vLkhFQVBVMzJbRmUrK10sS3Q9QnQ9PT1KZS0xP3ZvaWQgMDpvLkhFQVBVMzJbRmVdLU10O1JlLnB1c2goby5VVEY4VG9TdHJpbmcoTXQsS3QpKX1PZS5wdXNoKFtkZSxoZSxSZSxcImNwdVwiXSl9ZWxzZSBpZihvdD09PVwiZ3B1LWJ1ZmZlclwiJiZKZT4wKXtsZXQgUmU9by5qc2VwR2V0QnVmZmVyKHZlKSxGZT1LcihHZSk7aWYoRmU9PT12b2lkIDB8fCFObihkZSkpdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBkYXRhIHR5cGU6ICR7ZGV9YCk7eWU9ITAsT2UucHVzaChbZGUsaGUse2dwdUJ1ZmZlcjpSZSxkb3dubG9hZDpvLmpzZXBDcmVhdGVEb3dubG9hZGVyKFJlLEplKkZlLGRlKSxkaXNwb3NlOigpPT57by5fT3J0UmVsZWFzZVRlbnNvcihiZSl9fSxcImdwdS1idWZmZXJcIl0pfWVsc2V7bGV0IFJlPVduKGRlKSxGZT1uZXcgUmUoSmUpO25ldyBVaW50OEFycmF5KEZlLmJ1ZmZlcixGZS5ieXRlT2Zmc2V0LEZlLmJ5dGVMZW5ndGgpLnNldChvLkhFQVBVOC5zdWJhcnJheSh2ZSx2ZStGZS5ieXRlTGVuZ3RoKSksT2UucHVzaChbZGUsaGUsRmUsXCJjcHVcIl0pfX1maW5hbGx5e28uc3RhY2tSZXN0b3JlKFVlKSxkZT09PVwic3RyaW5nXCImJnZlJiZvLl9mcmVlKHZlKSx5ZXx8by5fT3J0UmVsZWFzZVRlbnNvcihiZSl9fXJldHVybiBnJiZvLl9PcnRDbGVhckJvdW5kT3V0cHV0cyhnLmhhbmRsZSksT2V9ZmluYWxseXtvLnN0YWNrUmVzdG9yZShFKSxULmZvckVhY2goWT0+by5fT3J0UmVsZWFzZVRlbnNvcihZKSksQy5mb3JFYWNoKFk9Pm8uX09ydFJlbGVhc2VUZW5zb3IoWSkpLFMuZm9yRWFjaChZPT5vLl9mcmVlKFkpKSwkIT09MCYmby5fT3J0UmVsZWFzZVJ1bk9wdGlvbnMoJCkseC5mb3JFYWNoKFk9Pm8uX2ZyZWUoWSkpfX0scGQ9ZT0+e2xldCB0PU5lKCkscj10bi5nZXQoZSk7aWYoIXIpdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBzZXNzaW9uIGlkXCIpO2xldCBhPXJbMF0saT10Ll9PcnRFbmRQcm9maWxpbmcoYSk7aT09PTAmJk1lKFwiQ2FuJ3QgZ2V0IGFuIHByb2ZpbGUgZmlsZSBuYW1lLlwiKSx0Ll9PcnRGcmVlKGkpfSxmZD1lPT57bGV0IHQ9W107Zm9yKGxldCByIG9mIGUpe2xldCBhPXJbMl07IUFycmF5LmlzQXJyYXkoYSkmJlwiYnVmZmVyXCJpbiBhJiZ0LnB1c2goYS5idWZmZXIpfXJldHVybiB0fX0pO3ZhciBoZD1icigoaHcsUmYpPT57UmYuZXhwb3J0cz0nLyohXFxuICogT05OWCBSdW50aW1lIFdlYiB2MS4xOC4wLWRldi4yMDI0MDEzMC05ZjY4YTI3YzdhXFxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXFxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxcbiAqL1xcblwidXNlIHN0cmljdFwiOygoKT0+e3ZhciBlbz1PYmplY3QuZGVmaW5lUHJvcGVydHk7dmFyIGtsPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7dmFyIFJsPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzO3ZhciBCbD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBRPShlLHQpPT4oKT0+KGUmJih0PWUoZT0wKSksdCk7dmFyIEJyPShlLHQpPT4oKT0+KHR8fGUoKHQ9e2V4cG9ydHM6e319KS5leHBvcnRzLHQpLHQuZXhwb3J0cyksaG49KGUsdCk9Pntmb3IodmFyIHIgaW4gdCllbyhlLHIse2dldDp0W3JdLGVudW1lcmFibGU6ITB9KX0sRGw9KGUsdCxyLG8pPT57aWYodCYmdHlwZW9mIHQ9PVwib2JqZWN0XCJ8fHR5cGVvZiB0PT1cImZ1bmN0aW9uXCIpZm9yKGxldCBpIG9mIFJsKHQpKSFCbC5jYWxsKGUsaSkmJmkhPT1yJiZlbyhlLGkse2dldDooKT0+dFtpXSxlbnVtZXJhYmxlOiEobz1rbCh0LGkpKXx8by5lbnVtZXJhYmxlfSk7cmV0dXJuIGV9O3ZhciB1cj1lPT5EbChlbyh7fSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxlKTt2YXIgdG89e307aG4odG8se2NyZWF0ZVJlYWRTdHJlYW06KCk9PnlpLHJlYWRGaWxlOigpPT5NbCxyZWFkRmlsZVN5bmM6KCk9PnpsfSk7dmFyIE1sLHpsLHlpLHJvPVEoKCk9PntNbD12b2lkIDAsemw9dm9pZCAwLHlpPXZvaWQgMH0pO3ZhciBubz17fTtobihubyx7am9pbjooKT0+VWx9KTt2YXIgVWwsb289USgoKT0+e1VsPXZvaWQgMH0pO3ZhciB2aT1Ccigod2ksaW8pPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIGJpPSgoKT0+e3ZhciBlPXR5cGVvZiBkb2N1bWVudDxcInVcIiYmZG9jdW1lbnQuY3VycmVudFNjcmlwdD9kb2N1bWVudC5jdXJyZW50U2NyaXB0LnNyYzp2b2lkIDA7cmV0dXJuIHR5cGVvZiBfX2ZpbGVuYW1lPFwidVwiJiYoZT1lfHxfX2ZpbGVuYW1lKSxmdW5jdGlvbih0PXt9KXt2YXIgcj10LG8saTtyLnJlYWR5PW5ldyBQcm9taXNlKChzLGMpPT57bz1zLGk9Y30pLHIubW91bnRFeHRlcm5hbERhdGE9KHMsYyk9Pnsoci5nYnx8KHIuZ2I9bmV3IE1hcCkpLnNldChzLGMpfSxyLnVubW91bnRFeHRlcm5hbERhdGE9KCk9PntkZWxldGUgci5nYn0sci5qc2VwSW5pdD0ocyxjLGcsJCxJLEQsSCxYKT0+e3IuRmI9cyxyLnZiPWMsci54Yj1nLHIub2I9JCxyLndiPUksci5TYT1ELHIueWI9SCxyLnpiPVgsYz0ocSxqLG5lKT0+KC4uLmZlKT0+e2xldCAkZT1KZSxrPWo/LigpO2ZlPXEoLi4uZmUpO2xldCBhZT1qPy4oKTtyZXR1cm4gayE9PWFlJiYocT1hZSxuZShrKSxqPW5lPW51bGwpLEplIT0kZT9acigpOmZlfSxnPXE9PmFzeW5jKC4uLmopPT57dHJ5e2lmKHIuZmIpdGhyb3cgRXJyb3IoXCJTZXNzaW9uIGFscmVhZHkgc3RhcnRlZFwiKTtsZXQgbmU9ci5mYj17QWI6alswXSxlcnJvcnM6W119LGZlPWF3YWl0IHEoLi4uaik7aWYoci5mYiE9PW5lKXRocm93IEVycm9yKFwiU2Vzc2lvbiBtaXNtYXRjaFwiKTtzLmZsdXNoKCk7bGV0ICRlPW5lLmVycm9ycztpZigwPCRlLmxlbmd0aCl7bGV0IGs9YXdhaXQgUHJvbWlzZS5hbGwoJGUpO2lmKGs9ay5maWx0ZXIoYWU9PmFlKSwwPGsubGVuZ3RoKXRocm93IEVycm9yKGsuam9pbihgXFxuYCkpfXJldHVybiBmZX1maW5hbGx5e3IuZmI9bnVsbH19LHIuX09ydENyZWF0ZVNlc3Npb249YyhyLl9PcnRDcmVhdGVTZXNzaW9uLCgpPT5yLl9PcnRDcmVhdGVTZXNzaW9uLHE9PnIuX09ydENyZWF0ZVNlc3Npb249cSksci5fT3J0UnVuPWcoYyhyLl9PcnRSdW4sKCk9PnIuX09ydFJ1bixxPT5yLl9PcnRSdW49cSkpLHIuX09ydFJ1bldpdGhCaW5kaW5nPWcoYyhyLl9PcnRSdW5XaXRoQmluZGluZywoKT0+ci5fT3J0UnVuV2l0aEJpbmRpbmcscT0+ci5fT3J0UnVuV2l0aEJpbmRpbmc9cSkpLHIuX09ydEJpbmRJbnB1dD1jKHIuX09ydEJpbmRJbnB1dCwoKT0+ci5fT3J0QmluZElucHV0LHE9PnIuX09ydEJpbmRJbnB1dD1xKSxyLmpzZXBSZWdpc3RlckJ1ZmZlcj0ocSxqLG5lLGZlKT0+cy5yZWdpc3RlckJ1ZmZlcihxLGosbmUsZmUpLHIuanNlcFVucmVnaXN0ZXJCdWZmZXJzPXE9PntzLnVucmVnaXN0ZXJCdWZmZXJzKHEpfSxyLmpzZXBHZXRCdWZmZXI9cT0+cy5nZXRCdWZmZXIocSksci5qc2VwQ3JlYXRlRG93bmxvYWRlcj0ocSxqLG5lKT0+cy5jcmVhdGVEb3dubG9hZGVyKHEsaixuZSksci5qc2VwT25SdW5TdGFydD0oKT0+cy5vblJ1blN0YXJ0KCl9O3ZhciB1PU9iamVjdC5hc3NpZ24oe30sciksYT1cIi4vdGhpcy5wcm9ncmFtXCIscD0ocyxjKT0+e3Rocm93IGN9LG09dHlwZW9mIHdpbmRvdz09XCJvYmplY3RcIixoPXR5cGVvZiBpbXBvcnRTY3JpcHRzPT1cImZ1bmN0aW9uXCIsZD10eXBlb2YgcHJvY2Vzcz09XCJvYmplY3RcIiYmdHlwZW9mIHByb2Nlc3MudmVyc2lvbnM9PVwib2JqZWN0XCImJnR5cGVvZiBwcm9jZXNzLnZlcnNpb25zLm5vZGU9PVwic3RyaW5nXCIseT1cIlwiLHcsXyx2O2lmKGQpe3ZhciB4PShybygpLHVyKHRvKSksVD0ob28oKSx1cihubykpO3k9aD9ULmRpcm5hbWUoeSkrXCIvXCI6X19kaXJuYW1lK1wiL1wiLHc9KHMsYyk9PihzPWllKHMpP25ldyBVUkwocyk6VC5ub3JtYWxpemUocykseC5yZWFkRmlsZVN5bmMocyxjP3ZvaWQgMDpcInV0ZjhcIikpLHY9cz0+KHM9dyhzLCEwKSxzLmJ1ZmZlcnx8KHM9bmV3IFVpbnQ4QXJyYXkocykpLHMpLF89KHMsYyxnLCQ9ITApPT57cz1pZShzKT9uZXcgVVJMKHMpOlQubm9ybWFsaXplKHMpLHgucmVhZEZpbGUocywkP3ZvaWQgMDpcInV0ZjhcIiwoSSxEKT0+e0k/ZyhJKTpjKCQ/RC5idWZmZXI6RCl9KX0sIXIudGhpc1Byb2dyYW0mJjE8cHJvY2Vzcy5hcmd2Lmxlbmd0aCYmKGE9cHJvY2Vzcy5hcmd2WzFdLnJlcGxhY2UoL1xcXFxcXFxcL2csXCIvXCIpKSxwcm9jZXNzLmFyZ3Yuc2xpY2UoMikscD0ocyxjKT0+e3Rocm93IHByb2Nlc3MuZXhpdENvZGU9cyxjfSxyLmluc3BlY3Q9KCk9PlwiW0Vtc2NyaXB0ZW4gTW9kdWxlIG9iamVjdF1cIn1lbHNlKG18fGgpJiYoaD95PXNlbGYubG9jYXRpb24uaHJlZjp0eXBlb2YgZG9jdW1lbnQ8XCJ1XCImJmRvY3VtZW50LmN1cnJlbnRTY3JpcHQmJih5PWRvY3VtZW50LmN1cnJlbnRTY3JpcHQuc3JjKSxlJiYoeT1lKSx5LmluZGV4T2YoXCJibG9iOlwiKSE9PTA/eT15LnN1YnN0cigwLHkucmVwbGFjZSgvWz8jXS4qLyxcIlwiKS5sYXN0SW5kZXhPZihcIi9cIikrMSk6eT1cIlwiLHc9cz0+e3ZhciBjPW5ldyBYTUxIdHRwUmVxdWVzdDtyZXR1cm4gYy5vcGVuKFwiR0VUXCIscywhMSksYy5zZW5kKG51bGwpLGMucmVzcG9uc2VUZXh0fSxoJiYodj1zPT57dmFyIGM9bmV3IFhNTEh0dHBSZXF1ZXN0O3JldHVybiBjLm9wZW4oXCJHRVRcIixzLCExKSxjLnJlc3BvbnNlVHlwZT1cImFycmF5YnVmZmVyXCIsYy5zZW5kKG51bGwpLG5ldyBVaW50OEFycmF5KGMucmVzcG9uc2UpfSksXz0ocyxjLGcpPT57dmFyICQ9bmV3IFhNTEh0dHBSZXF1ZXN0OyQub3BlbihcIkdFVFwiLHMsITApLCQucmVzcG9uc2VUeXBlPVwiYXJyYXlidWZmZXJcIiwkLm9ubG9hZD0oKT0+eyQuc3RhdHVzPT0yMDB8fCQuc3RhdHVzPT0wJiYkLnJlc3BvbnNlP2MoJC5yZXNwb25zZSk6ZygpfSwkLm9uZXJyb3I9ZywkLnNlbmQobnVsbCl9KTt2YXIgQz1jb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLFM9Y29uc29sZS5lcnJvci5iaW5kKGNvbnNvbGUpO09iamVjdC5hc3NpZ24ocix1KSx1PW51bGwsdHlwZW9mIFdlYkFzc2VtYmx5IT1cIm9iamVjdFwiJiZHZShcIm5vIG5hdGl2ZSB3YXNtIHN1cHBvcnQgZGV0ZWN0ZWRcIik7dmFyIEUsTz0hMSxVLE0sTixZLHNlLEIsdGUsUGUsRWUsZWUsYmU7ZnVuY3Rpb24gTWUoKXt2YXIgcz1FLmJ1ZmZlcjtyLkhFQVA4PU09bmV3IEludDhBcnJheShzKSxyLkhFQVAxNj1ZPW5ldyBJbnQxNkFycmF5KHMpLHIuSEVBUFU4PU49bmV3IFVpbnQ4QXJyYXkocyksci5IRUFQVTE2PXNlPW5ldyBVaW50MTZBcnJheShzKSxyLkhFQVAzMj1CPW5ldyBJbnQzMkFycmF5KHMpLHIuSEVBUFUzMj10ZT1uZXcgVWludDMyQXJyYXkocyksci5IRUFQRjMyPVBlPW5ldyBGbG9hdDMyQXJyYXkocyksci5IRUFQRjY0PWJlPW5ldyBGbG9hdDY0QXJyYXkocyksci5IRUFQNjQ9RWU9bmV3IEJpZ0ludDY0QXJyYXkocyksci5IRUFQVTY0PWVlPW5ldyBCaWdVaW50NjRBcnJheShzKX12YXIgcGU9W10seWU9W10sZGU9W10sd2U9MCx6ZT1udWxsLFJlPW51bGw7ZnVuY3Rpb24gR2Uocyl7dGhyb3cgcz1cIkFib3J0ZWQoXCIrcytcIilcIixTKHMpLE89ITAsVT0xLHM9bmV3IFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvcihzK1wiLiBCdWlsZCB3aXRoIC1zQVNTRVJUSU9OUyBmb3IgbW9yZSBpbmZvLlwiKSxpKHMpLHN9dmFyIEY9cz0+cy5zdGFydHNXaXRoKFwiZGF0YTphcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07YmFzZTY0LFwiKSxpZT1zPT5zLnN0YXJ0c1dpdGgoXCJmaWxlOi8vXCIpLGhlO2lmKGhlPVwib3J0LXdhc20tc2ltZC53YXNtXCIsIUYoaGUpKXt2YXIgWGU9aGU7aGU9ci5sb2NhdGVGaWxlP3IubG9jYXRlRmlsZShYZSx5KTp5K1hlfWZ1bmN0aW9uIG50KHMpe2lmKHYpcmV0dXJuIHYocyk7dGhyb3dcImJvdGggYXN5bmMgYW5kIHN5bmMgZmV0Y2hpbmcgb2YgdGhlIHdhc20gZmFpbGVkXCJ9ZnVuY3Rpb24ga2Uocyl7aWYobXx8aCl7aWYodHlwZW9mIGZldGNoPT1cImZ1bmN0aW9uXCImJiFpZShzKSlyZXR1cm4gZmV0Y2gocyx7Y3JlZGVudGlhbHM6XCJzYW1lLW9yaWdpblwifSkudGhlbihjPT57aWYoIWMub2spdGhyb3dcImZhaWxlZCB0byBsb2FkIHdhc20gYmluYXJ5IGZpbGUgYXQgXFwnXCIrcytcIlxcJ1wiO3JldHVybiBjLmFycmF5QnVmZmVyKCl9KS5jYXRjaCgoKT0+bnQocykpO2lmKF8pcmV0dXJuIG5ldyBQcm9taXNlKChjLGcpPT57XyhzLCQ9PmMobmV3IFVpbnQ4QXJyYXkoJCkpLGcpfSl9cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pm50KHMpKX1mdW5jdGlvbiBMZShzLGMsZyl7cmV0dXJuIGtlKHMpLnRoZW4oJD0+V2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoJCxjKSkudGhlbigkPT4kKS50aGVuKGcsJD0+e1MoYGZhaWxlZCB0byBhc3luY2hyb25vdXNseSBwcmVwYXJlIHdhc206ICR7JH1gKSxHZSgkKX0pfWZ1bmN0aW9uIEl0KHMsYyl7dmFyIGc9aGU7cmV0dXJuIHR5cGVvZiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZyE9XCJmdW5jdGlvblwifHxGKGcpfHxpZShnKXx8ZHx8dHlwZW9mIGZldGNoIT1cImZ1bmN0aW9uXCI/TGUoZyxzLGMpOmZldGNoKGcse2NyZWRlbnRpYWxzOlwic2FtZS1vcmlnaW5cIn0pLnRoZW4oJD0+V2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmcoJCxzKS50aGVuKGMsZnVuY3Rpb24oSSl7cmV0dXJuIFMoYHdhc20gc3RyZWFtaW5nIGNvbXBpbGUgZmFpbGVkOiAke0l9YCksUyhcImZhbGxpbmcgYmFjayB0byBBcnJheUJ1ZmZlciBpbnN0YW50aWF0aW9uXCIpLExlKGcscyxjKX0pKX12YXIgVHQ9ezk0NTE2ODoocyxjLGcsJCk9PntpZih0eXBlb2Ygcj5cInVcInx8IXIuZ2IpcmV0dXJuIDE7aWYocz1GZShzPj4+MCkscy5zdGFydHNXaXRoKFwiLi9cIikmJihzPXMuc3Vic3RyaW5nKDIpKSxzPXIuZ2IuZ2V0KHMpLCFzKXJldHVybiAyO2lmKGM+Pj49MCxnPj4+PTAsYytnPnMuYnl0ZUxlbmd0aClyZXR1cm4gMzt0cnl7cmV0dXJuIE4uc2V0KHMuc3ViYXJyYXkoYyxjK2cpLCQ+Pj4wPj4+MCksMH1jYXRjaHtyZXR1cm4gNH19LDk0NTY2OTpzPT5yLnZiKHMpLDk0NTcwMjpzPT5yLnhiKHMpLDk0NTczNDoocyxjLGcpPT57ci5vYihzLGMsZywhMCl9LDk0NTc3MzoocyxjLGcpPT57ci5vYihzLGMsZyl9LDk0NTgwNjpzPT57ci5TYShcIkFic1wiLHMsdm9pZCAwKX0sOTQ1ODU3OnM9PntyLlNhKFwiTmVnXCIscyx2b2lkIDApfSw5NDU5MDg6cz0+e3IuU2EoXCJGbG9vclwiLHMsdm9pZCAwKX0sOTQ1OTYxOnM9PntyLlNhKFwiQ2VpbFwiLHMsdm9pZCAwKX0sOTQ2MDEzOnM9PntyLlNhKFwiUmVjaXByb2NhbFwiLHMsdm9pZCAwKX0sOTQ2MDcxOnM9PntyLlNhKFwiU3FydFwiLHMsdm9pZCAwKX0sOTQ2MTIzOnM9PntyLlNhKFwiRXhwXCIscyx2b2lkIDApfSw5NDYxNzQ6cz0+e3IuU2EoXCJFcmZcIixzLHZvaWQgMCl9LDk0NjIyNTpzPT57ci5TYShcIlNpZ21vaWRcIixzLHZvaWQgMCl9LDk0NjI4MDoocyxjLGcpPT57ci5TYShcIkhhcmRTaWdtb2lkXCIscyx7YWxwaGE6YyxiZXRhOmd9KX0sOTQ2MzU5OnM9PntyLlNhKFwiTG9nXCIscyx2b2lkIDApfSw5NDY0MTA6cz0+e3IuU2EoXCJTaW5cIixzLHZvaWQgMCl9LDk0NjQ2MTpzPT57ci5TYShcIkNvc1wiLHMsdm9pZCAwKX0sOTQ2NTEyOnM9PntyLlNhKFwiVGFuXCIscyx2b2lkIDApfSw5NDY1NjM6cz0+e3IuU2EoXCJBc2luXCIscyx2b2lkIDApfSw5NDY2MTU6cz0+e3IuU2EoXCJBY29zXCIscyx2b2lkIDApfSw5NDY2Njc6cz0+e3IuU2EoXCJBdGFuXCIscyx2b2lkIDApfSw5NDY3MTk6cz0+e3IuU2EoXCJTaW5oXCIscyx2b2lkIDApfSw5NDY3NzE6cz0+e3IuU2EoXCJDb3NoXCIscyx2b2lkIDApfSw5NDY4MjM6cz0+e3IuU2EoXCJBc2luaFwiLHMsdm9pZCAwKX0sOTQ2ODc2OnM9PntyLlNhKFwiQWNvc2hcIixzLHZvaWQgMCl9LDk0NjkyOTpzPT57ci5TYShcIkF0YW5oXCIscyx2b2lkIDApfSw5NDY5ODI6cz0+e3IuU2EoXCJUYW5oXCIscyx2b2lkIDApfSw5NDcwMzQ6cz0+e3IuU2EoXCJOb3RcIixzLHZvaWQgMCl9LDk0NzA4NToocyxjLGcpPT57ci5TYShcIkNsaXBcIixzLHttaW46YyxtYXg6Z30pfSw5NDcxNTQ6cz0+e3IuU2EoXCJDbGlwXCIscyx2b2lkIDApfSw5NDcyMDY6KHMsYyk9PntyLlNhKFwiRWx1XCIscyx7YWxwaGE6Y30pfSw5NDcyNjQ6cz0+e3IuU2EoXCJSZWx1XCIscyx2b2lkIDApfSw5NDczMTY6KHMsYyk9PntyLlNhKFwiTGVha3lSZWx1XCIscyx7YWxwaGE6Y30pfSw5NDczODA6KHMsYyk9PntyLlNhKFwiVGhyZXNob2xkZWRSZWx1XCIscyx7YWxwaGE6Y30pfSw5NDc0NTA6KHMsYyk9PntyLlNhKFwiQ2FzdFwiLHMse3RvOmN9KX0sOTQ3NTA4OnM9PntyLlNhKFwiQWRkXCIscyx2b2lkIDApfSw5NDc1NTk6cz0+e3IuU2EoXCJTdWJcIixzLHZvaWQgMCl9LDk0NzYxMDpzPT57ci5TYShcIk11bFwiLHMsdm9pZCAwKX0sOTQ3NjYxOnM9PntyLlNhKFwiRGl2XCIscyx2b2lkIDApfSw5NDc3MTI6cz0+e3IuU2EoXCJQb3dcIixzLHZvaWQgMCl9LDk0Nzc2MzpzPT57ci5TYShcIkVxdWFsXCIscyx2b2lkIDApfSw5NDc4MTY6cz0+e3IuU2EoXCJHcmVhdGVyXCIscyx2b2lkIDApfSw5NDc4NzE6cz0+e3IuU2EoXCJHcmVhdGVyT3JFcXVhbFwiLHMsdm9pZCAwKX0sOTQ3OTMzOnM9PntyLlNhKFwiTGVzc1wiLHMsdm9pZCAwKX0sOTQ3OTg1OnM9PntyLlNhKFwiTGVzc09yRXF1YWxcIixzLHZvaWQgMCl9LDk0ODA0NDoocyxjLGcsJCxJKT0+e3IuU2EoXCJSZWR1Y2VNZWFuXCIscyx7a2VlcERpbXM6ISFjLG5vb3BXaXRoRW1wdHlBeGVzOiEhZyxheGVzOiQ/QXJyYXkuZnJvbShCLnN1YmFycmF5KCQ+Pj4wLEk+Pj4wKSk6W119KX0sOTQ4MjAzOihzLGMsZywkLEkpPT57ci5TYShcIlJlZHVjZU1heFwiLHMse2tlZXBEaW1zOiEhYyxub29wV2l0aEVtcHR5QXhlczohIWcsYXhlczokP0FycmF5LmZyb20oQi5zdWJhcnJheSgkPj4+MCxJPj4+MCkpOltdfSl9LDk0ODM2MToocyxjLGcsJCxJKT0+e3IuU2EoXCJSZWR1Y2VNaW5cIixzLHtrZWVwRGltczohIWMsbm9vcFdpdGhFbXB0eUF4ZXM6ISFnLGF4ZXM6JD9BcnJheS5mcm9tKEIuc3ViYXJyYXkoJD4+PjAsST4+PjApKTpbXX0pfSw5NDg1MTk6KHMsYyxnLCQsSSk9PntyLlNhKFwiUmVkdWNlUHJvZFwiLHMse2tlZXBEaW1zOiEhYyxub29wV2l0aEVtcHR5QXhlczohIWcsYXhlczokP0FycmF5LmZyb20oQi5zdWJhcnJheSgkPj4+MCxJPj4+MCkpOltdfSl9LDk0ODY3ODoocyxjLGcsJCxJKT0+e3IuU2EoXCJSZWR1Y2VTdW1cIixzLHtrZWVwRGltczohIWMsbm9vcFdpdGhFbXB0eUF4ZXM6ISFnLGF4ZXM6JD9BcnJheS5mcm9tKEIuc3ViYXJyYXkoJD4+PjAsST4+PjApKTpbXX0pfSw5NDg4MzY6KHMsYyxnLCQsSSk9PntyLlNhKFwiUmVkdWNlTDFcIixzLHtrZWVwRGltczohIWMsbm9vcFdpdGhFbXB0eUF4ZXM6ISFnLGF4ZXM6JD9BcnJheS5mcm9tKEIuc3ViYXJyYXkoJD4+PjAsST4+PjApKTpbXX0pfSw5NDg5OTM6KHMsYyxnLCQsSSk9PntyLlNhKFwiUmVkdWNlTDJcIixzLHtrZWVwRGltczohIWMsbm9vcFdpdGhFbXB0eUF4ZXM6ISFnLGF4ZXM6JD9BcnJheS5mcm9tKEIuc3ViYXJyYXkoJD4+PjAsST4+PjApKTpbXX0pfSw5NDkxNTA6KHMsYyxnLCQsSSk9PntyLlNhKFwiUmVkdWNlTG9nU3VtXCIscyx7a2VlcERpbXM6ISFjLG5vb3BXaXRoRW1wdHlBeGVzOiEhZyxheGVzOiQ/QXJyYXkuZnJvbShCLnN1YmFycmF5KCQ+Pj4wLEk+Pj4wKSk6W119KX0sOTQ5MzExOihzLGMsZywkLEkpPT57ci5TYShcIlJlZHVjZVN1bVNxdWFyZVwiLHMse2tlZXBEaW1zOiEhYyxub29wV2l0aEVtcHR5QXhlczohIWcsYXhlczokP0FycmF5LmZyb20oQi5zdWJhcnJheSgkPj4+MCxJPj4+MCkpOltdfSl9LDk0OTQ3NToocyxjLGcsJCxJKT0+e3IuU2EoXCJSZWR1Y2VMb2dTdW1FeHBcIixzLHtrZWVwRGltczohIWMsbm9vcFdpdGhFbXB0eUF4ZXM6ISFnLGF4ZXM6JD9BcnJheS5mcm9tKEIuc3ViYXJyYXkoJD4+PjAsST4+PjApKTpbXX0pfSw5NDk2Mzk6cz0+e3IuU2EoXCJXaGVyZVwiLHMsdm9pZCAwKX0sOTQ5NjkyOihzLGMsZyk9PntyLlNhKFwiVHJhbnNwb3NlXCIscyx7cGVybTpjP0FycmF5LmZyb20oQi5zdWJhcnJheShjPj4+MCxnPj4+MCkpOltdfSl9LDk0OTgwMDoocyxjLGcsJCxJLEQsSCxYLHEsaixuZSxmZSwkZSxrLGFlKT0+e3IuU2EoXCJDb252VHJhbnNwb3NlXCIscyx7Zm9ybWF0OnE/XCJOSFdDXCI6XCJOQ0hXXCIsYXV0b1BhZDpjLGRpbGF0aW9uczpbZ10sZ3JvdXA6JCxrZXJuZWxfc2hhcGU6W0ldLHBhZHM6W0QsSF0sc3RyaWRlczpbWF0sd0lzQ29uc3Q6KCk9PiEhTVtqPj4+MF0sb3V0cHV0UGFkZGluZzpuZT9BcnJheS5mcm9tKEIuc3ViYXJyYXkobmU+Pj4wLGZlPj4+MCkpOltdLG91dHB1dFNoYXBlOiRlP0FycmF5LmZyb20oQi5zdWJhcnJheSgkZT4+PjAsaz4+PjApKTpbXSxhY3RpdmF0aW9uOkZlKGFlKX0pfSw5NTAyMDI6KHMsYyxnLCQsSSxELEgsWCxxLGosbmUsZmUsJGUsayk9PntyLlNhKFwiQ29udlRyYW5zcG9zZVwiLHMse2Zvcm1hdDpYP1wiTkhXQ1wiOlwiTkNIV1wiLGF1dG9QYWQ6YyxkaWxhdGlvbnM6QXJyYXkuZnJvbShCLnN1YmFycmF5KGc+Pj4wLChnPj4+MCkrMj4+PjApKSxncm91cDokLGtlcm5lbFNoYXBlOkFycmF5LmZyb20oQi5zdWJhcnJheShJPj4+MCwoST4+PjApKzI+Pj4wKSkscGFkczpBcnJheS5mcm9tKEIuc3ViYXJyYXkoRD4+PjAsKEQ+Pj4wKSs0Pj4+MCkpLHN0cmlkZXM6QXJyYXkuZnJvbShCLnN1YmFycmF5KEg+Pj4wLChIPj4+MCkrMj4+PjApKSx3SXNDb25zdDooKT0+ISFNW3E+Pj4wXSxvdXRwdXRQYWRkaW5nOmo/QXJyYXkuZnJvbShCLnN1YmFycmF5KGo+Pj4wLG5lPj4+MCkpOltdLG91dHB1dFNoYXBlOmZlP0FycmF5LmZyb20oQi5zdWJhcnJheShmZT4+PjAsJGU+Pj4wKSk6W10sYWN0aXZhdGlvbjpGZShrKX0pfSw5NTA3Njc6KHMsYyxnLCQsSSxELEgsWCxxLGosbmUsZmUsJGUsayxhZSk9PntyLlNhKFwiQ29udlRyYW5zcG9zZVwiLHMse2Zvcm1hdDpxP1wiTkhXQ1wiOlwiTkNIV1wiLGF1dG9QYWQ6YyxkaWxhdGlvbnM6W2ddLGdyb3VwOiQsa2VybmVsX3NoYXBlOltJXSxwYWRzOltELEhdLHN0cmlkZXM6W1hdLHdJc0NvbnN0OigpPT4hIU1baj4+PjBdLG91dHB1dFBhZGRpbmc6bmU/QXJyYXkuZnJvbShCLnN1YmFycmF5KG5lPj4+MCxmZT4+PjApKTpbXSxvdXRwdXRTaGFwZTokZT9BcnJheS5mcm9tKEIuc3ViYXJyYXkoJGU+Pj4wLGs+Pj4wKSk6W10sYWN0aXZhdGlvbjpGZShhZSl9KX0sOTUxMTY5OihzLGMsZywkLEksRCxILFgscSxqLG5lLGZlLCRlLGspPT57ci5TYShcIkNvbnZUcmFuc3Bvc2VcIixzLHtmb3JtYXQ6WD9cIk5IV0NcIjpcIk5DSFdcIixhdXRvUGFkOmMsZGlsYXRpb25zOkFycmF5LmZyb20oQi5zdWJhcnJheShnPj4+MCwoZz4+PjApKzI+Pj4wKSksZ3JvdXA6JCxrZXJuZWxTaGFwZTpBcnJheS5mcm9tKEIuc3ViYXJyYXkoST4+PjAsKEk+Pj4wKSsyPj4+MCkpLHBhZHM6QXJyYXkuZnJvbShCLnN1YmFycmF5KEQ+Pj4wLChEPj4+MCkrND4+PjApKSxzdHJpZGVzOkFycmF5LmZyb20oQi5zdWJhcnJheShIPj4+MCwoSD4+PjApKzI+Pj4wKSksd0lzQ29uc3Q6KCk9PiEhTVtxPj4+MF0sb3V0cHV0UGFkZGluZzpqP0FycmF5LmZyb20oQi5zdWJhcnJheShqPj4+MCxuZT4+PjApKTpbXSxvdXRwdXRTaGFwZTpmZT9BcnJheS5mcm9tKEIuc3ViYXJyYXkoZmU+Pj4wLCRlPj4+MCkpOltdLGFjdGl2YXRpb246RmUoayl9KX0sOTUxNzM0OihzLGMpPT57ci5TYShcIkdsb2JhbEF2ZXJhZ2VQb29sXCIscyx7Zm9ybWF0OmM/XCJOSFdDXCI6XCJOQ0hXXCJ9KX0sOTUxODI1OihzLGMsZywkLEksRCxILFgscSxqLG5lLGZlLCRlLGssYWUsQWUpPT57ci5TYShcIkF2ZXJhZ2VQb29sXCIscyx7Zm9ybWF0OkFlP1wiTkhXQ1wiOlwiTkNIV1wiLGF1dG9fcGFkOmMsY2VpbF9tb2RlOmcsY291bnRfaW5jbHVkZV9wYWQ6JCxzdG9yYWdlX29yZGVyOkksZGlsYXRpb25zOltELEhdLGtlcm5lbF9zaGFwZTpbWCxxXSxwYWRzOltqLG5lLGZlLCRlXSxzdHJpZGVzOltrLGFlXX0pfSw5NTIxMDk6KHMsYyk9PntyLlNhKFwiR2xvYmFsQXZlcmFnZVBvb2xcIixzLHtmb3JtYXQ6Yz9cIk5IV0NcIjpcIk5DSFdcIn0pfSw5NTIyMDA6KHMsYyxnLCQsSSxELEgsWCxxLGosbmUsZmUsJGUsayxhZSxBZSk9PntyLlNhKFwiQXZlcmFnZVBvb2xcIixzLHtmb3JtYXQ6QWU/XCJOSFdDXCI6XCJOQ0hXXCIsYXV0b19wYWQ6YyxjZWlsX21vZGU6Zyxjb3VudF9pbmNsdWRlX3BhZDokLHN0b3JhZ2Vfb3JkZXI6SSxkaWxhdGlvbnM6W0QsSF0sa2VybmVsX3NoYXBlOltYLHFdLHBhZHM6W2osbmUsZmUsJGVdLHN0cmlkZXM6W2ssYWVdfSl9LDk1MjQ4NDoocyxjKT0+e3IuU2EoXCJHbG9iYWxNYXhQb29sXCIscyx7Zm9ybWF0OmM/XCJOSFdDXCI6XCJOQ0hXXCJ9KX0sOTUyNTcxOihzLGMsZywkLEksRCxILFgscSxqLG5lLGZlLCRlLGssYWUsQWUpPT57ci5TYShcIk1heFBvb2xcIixzLHtmb3JtYXQ6QWU/XCJOSFdDXCI6XCJOQ0hXXCIsYXV0b19wYWQ6YyxjZWlsX21vZGU6Zyxjb3VudF9pbmNsdWRlX3BhZDokLHN0b3JhZ2Vfb3JkZXI6SSxkaWxhdGlvbnM6W0QsSF0sa2VybmVsX3NoYXBlOltYLHFdLHBhZHM6W2osbmUsZmUsJGVdLHN0cmlkZXM6W2ssYWVdfSl9LDk1Mjg1MToocyxjKT0+e3IuU2EoXCJHbG9iYWxNYXhQb29sXCIscyx7Zm9ybWF0OmM/XCJOSFdDXCI6XCJOQ0hXXCJ9KX0sOTUyOTM4OihzLGMsZywkLEksRCxILFgscSxqLG5lLGZlLCRlLGssYWUsQWUpPT57ci5TYShcIk1heFBvb2xcIixzLHtmb3JtYXQ6QWU/XCJOSFdDXCI6XCJOQ0hXXCIsYXV0b19wYWQ6YyxjZWlsX21vZGU6Zyxjb3VudF9pbmNsdWRlX3BhZDokLHN0b3JhZ2Vfb3JkZXI6SSxkaWxhdGlvbnM6W0QsSF0sa2VybmVsX3NoYXBlOltYLHFdLHBhZHM6W2osbmUsZmUsJGVdLHN0cmlkZXM6W2ssYWVdfSl9LDk1MzIxODoocyxjLGcsJCxJKT0+e3IuU2EoXCJHZW1tXCIscyx7YWxwaGE6YyxiZXRhOmcsdHJhbnNBOiQsdHJhbnNCOkl9KX0sOTUzMzIyOnM9PntyLlNhKFwiTWF0TXVsXCIscyx2b2lkIDApfSw5NTMzNzY6KHMsYyxnLCQpPT57ci5TYShcIkFyZ01heFwiLHMse2tlZXBEaW1zOiEhYyxzZWxlY3RMYXN0SW5kZXg6ISFnLGF4aXM6JH0pfSw5NTM0ODQ6KHMsYyxnLCQpPT57ci5TYShcIkFyZ01pblwiLHMse2tlZXBEaW1zOiEhYyxzZWxlY3RMYXN0SW5kZXg6ISFnLGF4aXM6JH0pfSw5NTM1OTI6KHMsYyk9PntyLlNhKFwiU29mdG1heFwiLHMse2F4aXM6Y30pfSw5NTM2NTU6KHMsYyk9PntyLlNhKFwiQ29uY2F0XCIscyx7YXhpczpjfSl9LDk1MzcxNToocyxjLGcsJCxJKT0+e3IuU2EoXCJTcGxpdFwiLHMse2F4aXM6YyxudW1PdXRwdXRzOmcsc3BsaXRTaXplczokP0FycmF5LmZyb20oQi5zdWJhcnJheSgkPj4+MCxJPj4+MCkpOltdfSl9LDk1Mzg1NTpzPT57ci5TYShcIkV4cGFuZFwiLHMsdm9pZCAwKX0sOTUzOTA5OihzLGMpPT57ci5TYShcIkdhdGhlclwiLHMse2F4aXM6TnVtYmVyKGMpfSl9LDk1Mzk4MDoocyxjKT0+e3IuU2EoXCJHYXRoZXJFbGVtZW50c1wiLHMse2F4aXM6TnVtYmVyKGMpfSl9LDk1NDA1OToocyxjLGcsJCxJLEQsSCxYLHEsaixuZSk9PntyLlNhKFwiUmVzaXplXCIscyx7YW50aWFsaWFzOmMsYXhlczpnP0FycmF5LmZyb20oQi5zdWJhcnJheShnPj4+MCwkPj4+MCkpOltdLGNvb3JkaW5hdGVUcmFuc2Zvcm1Nb2RlOkZlKEkpLGN1YmljQ29lZmZBOkQsZXhjbHVkZU91dHNpZGU6SCxleHRyYXBvbGF0aW9uVmFsdWU6WCxrZWVwQXNwZWN0UmF0aW9Qb2xpY3k6RmUocSksbW9kZTpGZShqKSxuZWFyZXN0TW9kZTpGZShuZSl9KX0sOTU0NDA1OihzLGMsZywkLEksRCxIKT0+e3IuU2EoXCJTbGljZVwiLHMse3N0YXJ0czpjP0FycmF5LmZyb20oQi5zdWJhcnJheShjPj4+MCxnPj4+MCkpOltdLGVuZHM6JD9BcnJheS5mcm9tKEIuc3ViYXJyYXkoJD4+PjAsST4+PjApKTpbXSxheGVzOkQ/QXJyYXkuZnJvbShCLnN1YmFycmF5KEQ+Pj4wLEg+Pj4wKSk6W119KX0sOTU0NjIxOnM9PntyLlNhKFwiVGlsZVwiLHMsdm9pZCAwKX0sOTU0NjczOihzLGMsZyk9PntyLlNhKFwiTGF5ZXJOb3JtYWxpemF0aW9uXCIscyx7YXhpczpOdW1iZXIoYyksZXBzaWxvbjpOdW1iZXIoZyl9KX0sOTU0NzgwOihzLGMsZyk9PntyLlNhKFwiSW5zdGFuY2VOb3JtYWxpemF0aW9uXCIscyx7ZXBzaWxvbjpjLGZvcm1hdDpnP1wiTkhXQ1wiOlwiTkNIV1wifSl9LDk1NDg5NDoocyxjLGcpPT57ci5TYShcIkluc3RhbmNlTm9ybWFsaXphdGlvblwiLHMse2Vwc2lsb246Yyxmb3JtYXQ6Zz9cIk5IV0NcIjpcIk5DSFdcIn0pfSw5NTUwMDg6cz0+e3IuU2EoXCJSYW5nZVwiLHMsdm9pZCAwKX0sOTU1MDYxOihzLGMpPT57ci5TYShcIkVpbnN1bVwiLHMse2VxdWF0aW9uOkZlKGMpfSl9LDk1NTE0MjoocyxjLGcsJCxJKT0+e3IuU2EoXCJQYWRcIixzLHttb2RlOmMsdmFsdWU6ZyxwYWRzOiQ/QXJyYXkuZnJvbShCLnN1YmFycmF5KCQ+Pj4wLEk+Pj4wKSk6W119KX0sOTU1MjY5OihzLGMsZywkLEksRCk9PntyLlNhKFwiQmF0Y2hOb3JtYWxpemF0aW9uXCIscyx7ZXBzaWxvbjpjLG1vbWVudHVtOmcsc3BhdGlhbDohIUksdHJhaW5pbmdNb2RlOiEhJCxmb3JtYXQ6RD9cIk5IV0NcIjpcIk5DSFdcIn0pfSw5NTU0Mzg6KHMsYyxnLCQsSSxEKT0+e3IuU2EoXCJCYXRjaE5vcm1hbGl6YXRpb25cIixzLHtlcHNpbG9uOmMsbW9tZW50dW06ZyxzcGF0aWFsOiEhSSx0cmFpbmluZ01vZGU6ISEkLGZvcm1hdDpEP1wiTkhXQ1wiOlwiTkNIV1wifSl9LDk1NTYwNzoocyxjLGcpPT57ci5TYShcIkN1bVN1bVwiLHMse2V4Y2x1c2l2ZTpOdW1iZXIoYykscmV2ZXJzZTpOdW1iZXIoZyl9KX0sOTU1NzA0OihzLGMsZywkLEksRCxILFgscSk9PntyLlNhKFwiQXR0ZW50aW9uXCIscyx7bnVtSGVhZHM6Yyxpc1VuaWRpcmVjdGlvbmFsOmcsbWFza0ZpbHRlclZhbHVlOiQsc2NhbGU6SSxkb1JvdGFyeTpELHFrdkhpZGRlblNpemVzOkg/QXJyYXkuZnJvbShCLnN1YmFycmF5KE51bWJlcihYKT4+PjAsTnVtYmVyKFgpK0g+Pj4wKSk6W10scGFzdFByZXNlbnRTaGFyZUJ1ZmZlcjohIXF9KX0sOTU1OTc2OnM9PntyLlNhKFwiR2VsdVwiLHMsdm9pZCAwKX0sOTU2MDI4OihzLGMsZywkLEksRCk9PntyLlNhKFwiTXVsdGlIZWFkQXR0ZW50aW9uXCIscyx7bnVtSGVhZHM6Yyxpc1VuaWRpcmVjdGlvbmFsOmcsbWFza0ZpbHRlclZhbHVlOiQsc2NhbGU6SSxkb1JvdGFyeTpEfSl9LDk1NjE4NzpzPT57ci5TYShcIkJpYXNBZGRcIixzLHZvaWQgMCl9LDk1NjI0MjpzPT57ci5TYShcIkJpYXNTcGxpdEdlbHVcIixzLHZvaWQgMCl9LDk1NjMwMzoocyxjKT0+e3IuU2EoXCJTa2lwTGF5ZXJOb3JtYWxpemF0aW9uXCIscyx7ZXBzaWxvbjpjfSl9LDk1NjM4NDoocyxjLGcsJCxJLEQsSCxYLHEsaixuZSxmZSwkZSk9PntyLlNhKFwiQ29udlwiLHMse2Zvcm1hdDpxP1wiTkhXQ1wiOlwiTkNIV1wiLGF1dG9fcGFkOmMsZGlsYXRpb25zOltnXSxncm91cDokLGtlcm5lbF9zaGFwZTpbSV0scGFkczpEP0FycmF5LmZyb20oQi5zdWJhcnJheShEPj4+MCxIPj4+MCkpOltdLHN0cmlkZXM6W1hdLHdfaXNfY29uc3Q6KCk9PiEhTVtqPj4+MF0sYWN0aXZhdGlvbjpGZShuZSksYWN0aXZhdGlvbl9wYXJhbXM6ZmU/QXJyYXkuZnJvbShQZS5zdWJhcnJheShmZT4+PjAsJGU+Pj4wKSk6W119KX0sOTU2NzU0OihzLGMsZywkLEksRCxILFgscSxqLG5lLGZlLCRlLGssYWUsQWUpPT57ci5TYShcIkNvbnZcIixzLHtmb3JtYXQ6ZmU/XCJOSFdDXCI6XCJOQ0hXXCIsYXV0b19wYWQ6YyxkaWxhdGlvbnM6W2csJF0sZ3JvdXA6SSxrZXJuZWxfc2hhcGU6W0QsSF0scGFkczpYP0FycmF5LmZyb20oQi5zdWJhcnJheShYPj4+MCxxPj4+MCkpOltdLHN0cmlkZXM6W2osbmVdLHdfaXNfY29uc3Q6KCk9PiEhTVskZT4+PjBdLGFjdGl2YXRpb246RmUoayksYWN0aXZhdGlvbl9wYXJhbXM6YWU/QXJyYXkuZnJvbShQZS5zdWJhcnJheShhZT4+PjAsQWU+Pj4wKSk6W119KX0sOTU3MTQ1OnM9PntyLnliKHMpfSw5NTcxNzk6KHMsYyk9PnIuemIocyxjLHIuZmIuQWIsci5mYi5lcnJvcnMpfTtmdW5jdGlvbiBWdChzKXt0aGlzLm5hbWU9XCJFeGl0U3RhdHVzXCIsdGhpcy5tZXNzYWdlPWBQcm9ncmFtIHRlcm1pbmF0ZWQgd2l0aCBleGl0KCR7c30pYCx0aGlzLnN0YXR1cz1zfWZ1bmN0aW9uIFJ0KHMpe3RoaXMuY2I9cy0yNCx0aGlzLnJiPWZ1bmN0aW9uKGMpe3RlW3RoaXMuY2IrND4+PjI+Pj4wXT1jfSx0aGlzLnFiPWZ1bmN0aW9uKGMpe3RlW3RoaXMuY2IrOD4+PjI+Pj4wXT1jfSx0aGlzLmtiPWZ1bmN0aW9uKGMsZyl7dGhpcy5qYigpLHRoaXMucmIoYyksdGhpcy5xYihnKX0sdGhpcy5qYj1mdW5jdGlvbigpe3RlW3RoaXMuY2IrMTY+Pj4yPj4+MF09MH19dmFyIEp0PTAsV3Q9MCxtcj10eXBlb2YgVGV4dERlY29kZXI8XCJ1XCI/bmV3IFRleHREZWNvZGVyKFwidXRmOFwiKTp2b2lkIDAsQnQ9KHMsYyxnKT0+e2M+Pj49MDt2YXIgJD1jK2c7Zm9yKGc9YztzW2ddJiYhKGc+PSQpOykrK2c7aWYoMTY8Zy1jJiZzLmJ1ZmZlciYmbXIpcmV0dXJuIG1yLmRlY29kZShzLnN1YmFycmF5KGMsZykpO2ZvcigkPVwiXCI7YzxnOyl7dmFyIEk9c1tjKytdO2lmKEkmMTI4KXt2YXIgRD1zW2MrK10mNjM7aWYoKEkmMjI0KT09MTkyKSQrPVN0cmluZy5mcm9tQ2hhckNvZGUoKEkmMzEpPDw2fEQpO2Vsc2V7dmFyIEg9c1tjKytdJjYzO0k9KEkmMjQwKT09MjI0PyhJJjE1KTw8MTJ8RDw8NnxIOihJJjcpPDwxOHxEPDwxMnxIPDw2fHNbYysrXSY2Myw2NTUzNj5JPyQrPVN0cmluZy5mcm9tQ2hhckNvZGUoSSk6KEktPTY1NTM2LCQrPVN0cmluZy5mcm9tQ2hhckNvZGUoNTUyOTZ8ST4+MTAsNTYzMjB8SSYxMDIzKSl9fWVsc2UgJCs9U3RyaW5nLmZyb21DaGFyQ29kZShJKX1yZXR1cm4gJH0sRmU9KHMsYyk9PihzPj4+PTApP0J0KE4scyxjKTpcIlwiLEV0PXM9Pntmb3IodmFyIGM9MCxnPTA7ZzxzLmxlbmd0aDsrK2cpe3ZhciAkPXMuY2hhckNvZGVBdChnKTsxMjc+PSQ/YysrOjIwNDc+PSQ/Yys9Mjo1NTI5Njw9JCYmNTczNDM+PSQ/KGMrPTQsKytnKTpjKz0zfXJldHVybiBjfSxidD0ocyxjLGcsJCk9PntpZihnPj4+PTAsISgwPCQpKXJldHVybiAwO3ZhciBJPWc7JD1nKyQtMTtmb3IodmFyIEQ9MDtEPHMubGVuZ3RoOysrRCl7dmFyIEg9cy5jaGFyQ29kZUF0KEQpO2lmKDU1Mjk2PD1IJiY1NzM0Mz49SCl7dmFyIFg9cy5jaGFyQ29kZUF0KCsrRCk7SD02NTUzNisoKEgmMTAyMyk8PDEwKXxYJjEwMjN9aWYoMTI3Pj1IKXtpZihnPj0kKWJyZWFrO2NbZysrPj4+MF09SH1lbHNle2lmKDIwNDc+PUgpe2lmKGcrMT49JClicmVhaztjW2crKz4+PjBdPTE5MnxIPj42fWVsc2V7aWYoNjU1MzU+PUgpe2lmKGcrMj49JClicmVhaztjW2crKz4+PjBdPTIyNHxIPj4xMn1lbHNle2lmKGcrMz49JClicmVhaztjW2crKz4+PjBdPTI0MHxIPj4xOCxjW2crKz4+PjBdPTEyOHxIPj4xMiY2M31jW2crKz4+PjBdPTEyOHxIPj42JjYzfWNbZysrPj4+MF09MTI4fEgmNjN9fXJldHVybiBjW2c+Pj4wXT0wLGctSX0sZnI9cz0+e2lmKHM9PT1udWxsKXJldHVyblwibnVsbFwiO3ZhciBjPXR5cGVvZiBzO3JldHVybiBjPT09XCJvYmplY3RcInx8Yz09PVwiYXJyYXlcInx8Yz09PVwiZnVuY3Rpb25cIj9zLnRvU3RyaW5nKCk6XCJcIitzfSxHcixvdD1zPT57Zm9yKHZhciBjPVwiXCI7TltzPj4+MF07KWMrPUdyW05bcysrPj4+MF1dO3JldHVybiBjfSxocj17fSxOdD17fSxncj17fSxjdDtmdW5jdGlvbiBMcihzLGMsZz17fSl7dmFyICQ9Yy5uYW1lO2lmKCFzKXRocm93IG5ldyBjdChgdHlwZSBcIiR7JH1cIiBtdXN0IGhhdmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIHR5cGVpZCBwb2ludGVyYCk7aWYoTnQuaGFzT3duUHJvcGVydHkocykpe2lmKGcudGIpcmV0dXJuO3Rocm93IG5ldyBjdChgQ2Fubm90IHJlZ2lzdGVyIHR5cGUgXFwnJHskfVxcJyB0d2ljZWApfU50W3NdPWMsZGVsZXRlIGdyW3NdLGhyLmhhc093blByb3BlcnR5KHMpJiYoYz1ocltzXSxkZWxldGUgaHJbc10sYy5mb3JFYWNoKEk9PkkoKSkpfWZ1bmN0aW9uIHFlKHMsYyxnPXt9KXtpZighKFwiYXJnUGFja0FkdmFuY2VcImluIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJyZWdpc3RlclR5cGUgcmVnaXN0ZXJlZEluc3RhbmNlIHJlcXVpcmVzIGFyZ1BhY2tBZHZhbmNlXCIpO0xyKHMsYyxnKX12YXIgeXI9KHMsYyxnKT0+e3N3aXRjaChjKXtjYXNlIDE6cmV0dXJuIGc/JD0+TVskPj4+MD4+PjBdOiQ9Pk5bJD4+PjA+Pj4wXTtjYXNlIDI6cmV0dXJuIGc/JD0+WVskPj4+MT4+PjBdOiQ9PnNlWyQ+Pj4xPj4+MF07Y2FzZSA0OnJldHVybiBnPyQ9PkJbJD4+PjI+Pj4wXTokPT50ZVskPj4+Mj4+PjBdO2Nhc2UgODpyZXR1cm4gZz8kPT5FZVskPj4+M106JD0+ZWVbJD4+PjNdO2RlZmF1bHQ6dGhyb3cgbmV3IFR5cGVFcnJvcihgaW52YWxpZCBpbnRlZ2VyIHdpZHRoICgke2N9KTogJHtzfWApfX07ZnVuY3Rpb24gYnIoKXt0aGlzLiRhPVt2b2lkIDBdLHRoaXMubmI9W119dmFyIE9lPW5ldyBicjtmdW5jdGlvbiB3cihzKXtzPj4+PTAscz49T2UuY2ImJi0tT2UuZ2V0KHMpLnBiPT09MCYmT2UuamIocyl9dmFyIHZlPXM9PntpZighcyl0aHJvdyBuZXcgY3QoXCJDYW5ub3QgdXNlIGRlbGV0ZWQgdmFsLiBoYW5kbGUgPSBcIitzKTtyZXR1cm4gT2UuZ2V0KHMpLnZhbHVlfSxpdD1zPT57c3dpdGNoKHMpe2Nhc2Ugdm9pZCAwOnJldHVybiAxO2Nhc2UgbnVsbDpyZXR1cm4gMjtjYXNlITA6cmV0dXJuIDM7Y2FzZSExOnJldHVybiA0O2RlZmF1bHQ6cmV0dXJuIE9lLmtiKHtwYjoxLHZhbHVlOnN9KX19O2Z1bmN0aW9uIFF0KHMpe3JldHVybiB0aGlzLmZyb21XaXJlVHlwZShCW3M+Pj4yPj4+MF0pfXZhciB2cj0ocyxjKT0+e3N3aXRjaChjKXtjYXNlIDQ6cmV0dXJuIGZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmZyb21XaXJlVHlwZShQZVtnPj4+Mj4+PjBdKX07Y2FzZSA4OnJldHVybiBmdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5mcm9tV2lyZVR5cGUoYmVbZz4+PjM+Pj4wXSl9O2RlZmF1bHQ6dGhyb3cgbmV3IFR5cGVFcnJvcihgaW52YWxpZCBmbG9hdCB3aWR0aCAoJHtjfSk6ICR7c31gKX19O2Z1bmN0aW9uIEhuKHMpe3JldHVybiB0aGlzLmZyb21XaXJlVHlwZSh0ZVtzPj4+Mj4+PjBdKX12YXIgJHI9dHlwZW9mIFRleHREZWNvZGVyPFwidVwiP25ldyBUZXh0RGVjb2RlcihcInV0Zi0xNmxlXCIpOnZvaWQgMCxHbj0ocyxjKT0+e2Zvcih2YXIgZz1zPj4xLCQ9ZytjLzI7IShnPj0kKSYmc2VbZz4+PjBdOykrK2c7aWYoZzw8PTEsMzI8Zy1zJiYkcilyZXR1cm4gJHIuZGVjb2RlKE4uc3ViYXJyYXkocz4+PjAsZz4+PjApKTtmb3IoZz1cIlwiLCQ9MDshKCQ+PWMvMik7KyskKXt2YXIgST1ZW3MrMiokPj4+MT4+PjBdO2lmKEk9PTApYnJlYWs7Zys9U3RyaW5nLmZyb21DaGFyQ29kZShJKX1yZXR1cm4gZ30sbWU9KHMsYyxnKT0+e2lmKGc/Pz0yMTQ3NDgzNjQ3LDI+ZylyZXR1cm4gMDtnLT0yO3ZhciAkPWM7Zz1nPDIqcy5sZW5ndGg/Zy8yOnMubGVuZ3RoO2Zvcih2YXIgST0wO0k8ZzsrK0kpWVtjPj4+MT4+PjBdPXMuY2hhckNvZGVBdChJKSxjKz0yO3JldHVybiBZW2M+Pj4xPj4+MF09MCxjLSR9LGVyPXM9PjIqcy5sZW5ndGgsRnI9KHMsYyk9Pntmb3IodmFyIGc9MCwkPVwiXCI7IShnPj1jLzQpOyl7dmFyIEk9QltzKzQqZz4+PjI+Pj4wXTtpZihJPT0wKWJyZWFrOysrZyw2NTUzNjw9ST8oSS09NjU1MzYsJCs9U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NnxJPj4xMCw1NjMyMHxJJjEwMjMpKTokKz1TdHJpbmcuZnJvbUNoYXJDb2RlKEkpfXJldHVybiAkfSxMbj0ocyxjLGcpPT57aWYoYz4+Pj0wLGc/Pz0yMTQ3NDgzNjQ3LDQ+ZylyZXR1cm4gMDt2YXIgJD1jO2c9JCtnLTQ7Zm9yKHZhciBJPTA7STxzLmxlbmd0aDsrK0kpe3ZhciBEPXMuY2hhckNvZGVBdChJKTtpZig1NTI5Njw9RCYmNTczNDM+PUQpe3ZhciBIPXMuY2hhckNvZGVBdCgrK0kpO0Q9NjU1MzYrKChEJjEwMjMpPDwxMCl8SCYxMDIzfWlmKEJbYz4+PjI+Pj4wXT1ELGMrPTQsYys0PmcpYnJlYWt9cmV0dXJuIEJbYz4+PjI+Pj4wXT0wLGMtJH0sanI9cz0+e2Zvcih2YXIgYz0wLGc9MDtnPHMubGVuZ3RoOysrZyl7dmFyICQ9cy5jaGFyQ29kZUF0KGcpOzU1Mjk2PD0kJiY1NzM0Mz49JCYmKytnLGMrPTR9cmV0dXJuIGN9LF9yPShzLGMpPT57dmFyIGc9TnRbc107aWYoZz09PXZvaWQgMCl0aHJvdyBzPUZ0KHMpLGc9b3QocyksYXQocyksbmV3IGN0KGMrXCIgaGFzIHVua25vd24gdHlwZSBcIitnKTtyZXR1cm4gZ30sU3I9KHMsYyxnKT0+e3ZhciAkPVtdO3JldHVybiBzPXMudG9XaXJlVHlwZSgkLGcpLCQubGVuZ3RoJiYodGVbYz4+PjI+Pj4wXT1pdCgkKSksc30sSHQ9cz0+e3RyeXtzKCl9Y2F0Y2goYyl7R2UoYyl9fTtmdW5jdGlvbiBxcigpe3ZhciBzPXVlLGM9e307Zm9yKGxldFtnLCRdb2YgT2JqZWN0LmVudHJpZXMocykpY1tnXT10eXBlb2YgJD09XCJmdW5jdGlvblwiP2Z1bmN0aW9uKCl7RHQucHVzaChnKTt0cnl7cmV0dXJuICQuYXBwbHkobnVsbCxhcmd1bWVudHMpfWZpbmFsbHl7T3x8KER0LnBvcCgpLEplJiZtdD09PTEmJkR0Lmxlbmd0aD09PTAmJihtdD0wLEh0KGxuKSx0eXBlb2YgRmliZXJzPFwidVwiJiZGaWJlcnMuSGIoKSkpfX06JDtyZXR1cm4gY312YXIgbXQ9MCxKZT1udWxsLHhyPTAsRHQ9W10sQ3I9e30sQXI9e30sS3I9MCx0cj1udWxsLFlyPVtdO2Z1bmN0aW9uIFpyKCl7cmV0dXJuIG5ldyBQcm9taXNlKChzLGMpPT57dHI9e3Jlc29sdmU6cyxyZWplY3Q6Y319KX1mdW5jdGlvbiBYcigpe3ZhciBzPU10KDY1NTQ4KSxjPXMrMTI7dGVbcz4+PjI+Pj4wXT1jLHRlW3MrND4+PjI+Pj4wXT1jKzY1NTM2LGM9RHRbMF07dmFyIGc9Q3JbY107cmV0dXJuIGc9PT12b2lkIDAmJihnPUtyKyssQ3JbY109ZyxBcltnXT1jKSxCW3MrOD4+PjI+Pj4wXT1nLHN9ZnVuY3Rpb24gSnIocyl7aWYoIU8pe2lmKG10PT09MCl7dmFyIGM9ITEsZz0hMTtzKCgkPTApPT57aWYoIU8mJih4cj0kLGM9ITAsZykpe210PTIsSHQoKCk9PmZ0KEplKSksdHlwZW9mIEJyb3dzZXI8XCJ1XCImJkJyb3dzZXIubGIuc2ImJkJyb3dzZXIubGIucmVzdW1lKCksJD0hMTt0cnl7dmFyIEk9KDAsdWVbQXJbQltKZSs4Pj4+Mj4+PjBdXV0pKCl9Y2F0Y2goWCl7ST1YLCQ9ITB9dmFyIEQ9ITE7aWYoIUplKXt2YXIgSD10cjtIJiYodHI9bnVsbCwoJD9ILnJlamVjdDpILnJlc29sdmUpKEkpLEQ9ITApfWlmKCQmJiFEKXRocm93IEl9fSksZz0hMCxjfHwobXQ9MSxKZT1YcigpLHR5cGVvZiBCcm93c2VyPFwidVwiJiZCcm93c2VyLmxiLnNiJiZCcm93c2VyLmxiLnBhdXNlKCksSHQoKCk9Pmp0KEplKSkpfWVsc2UgbXQ9PT0yPyhtdD0wLEh0KGR0KSxhdChKZSksSmU9bnVsbCxZci5mb3JFYWNoKCQ9PntpZighTyl0cnl7JCgpO3RyeXtVPVU9JD1VLHIub25FeGl0Py4oJCksTz0hMCxwKCQsbmV3IFZ0KCQpKX1jYXRjaChJKXtJIGluc3RhbmNlb2YgVnR8fEk9PVwidW53aW5kXCJ8fHAoMSxJKX19Y2F0Y2goSSl7SSBpbnN0YW5jZW9mIFZ0fHxJPT1cInVud2luZFwifHxwKDEsSSl9fSkpOkdlKGBpbnZhbGlkIHN0YXRlOiAke210fWApO3JldHVybiB4cn19ZnVuY3Rpb24gSXIocyl7cmV0dXJuIEpyKGM9PntzKCkudGhlbihjKX0pfXZhciBHdD1bXSxRcj17fSxycj1zPT57dmFyIGM9UXJbc107cmV0dXJuIGM9PT12b2lkIDA/b3Qocyk6Y30sVHI9KCk9PnR5cGVvZiBnbG9iYWxUaGlzPT1cIm9iamVjdFwiP2dsb2JhbFRoaXM6RnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpLGx0PXM9Pnt2YXIgYz1HdC5sZW5ndGg7cmV0dXJuIEd0LnB1c2gocyksY30sRXI9KHMsYyk9Pntmb3IodmFyIGc9QXJyYXkocyksJD0wOyQ8czsrKyQpZ1skXT1fcih0ZVtjKzQqJD4+PjI+Pj4wXSxcInBhcmFtZXRlciBcIiskKTtyZXR1cm4gZ30sbnI9KHMsYyk9Pk9iamVjdC5kZWZpbmVQcm9wZXJ0eShjLFwibmFtZVwiLHt2YWx1ZTpzfSk7ZnVuY3Rpb24gRm4ocyl7dmFyIGM9RnVuY3Rpb247aWYoIShjIGluc3RhbmNlb2YgRnVuY3Rpb24pKXRocm93IG5ldyBUeXBlRXJyb3IoYG5ld18gY2FsbGVkIHdpdGggY29uc3RydWN0b3IgdHlwZSAke3R5cGVvZiBjfSB3aGljaCBpcyBub3QgYSBmdW5jdGlvbmApO3ZhciBnPW5yKGMubmFtZXx8XCJ1bmtub3duRnVuY3Rpb25OYW1lXCIsZnVuY3Rpb24oKXt9KTtyZXR1cm4gZy5wcm90b3R5cGU9Yy5wcm90b3R5cGUsZz1uZXcgZyxzPWMuYXBwbHkoZyxzKSxzIGluc3RhbmNlb2YgT2JqZWN0P3M6Z312YXIgUWU9cz0+cyU0PT09MCYmKHMlMTAwIT09MHx8cyU0MDA9PT0wKSxlbj1bMCwzMSw2MCw5MSwxMjEsMTUyLDE4MiwyMTMsMjQ0LDI3NCwzMDUsMzM1XSxwdD1bMCwzMSw1OSw5MCwxMjAsMTUxLDE4MSwyMTIsMjQzLDI3MywzMDQsMzM0XSxQcj1zPT57dmFyIGM9RXQocykrMSxnPU10KGMpO3JldHVybiBnJiZidChzLE4sZyxjKSxnfSxvcj1bXSxldD0ocyxjKT0+e29yLmxlbmd0aD0wO2Zvcih2YXIgZztnPU5bcysrPj4+MF07KXt2YXIgJD1nIT0xMDU7JCY9ZyE9MTEyLGMrPSQmJmMlOD80OjAsb3IucHVzaChnPT0xMTI/dGVbYz4+PjI+Pj4wXTpnPT0xMDY/RWVbYz4+PjNdOmc9PTEwNT9CW2M+Pj4yPj4+MF06YmVbYz4+PjM+Pj4wXSksYys9JD84OjR9cmV0dXJuIG9yfSxMdD17fSxLZT0oKT0+e2lmKCF0dCl7dmFyIHM9e1VTRVI6XCJ3ZWJfdXNlclwiLExPR05BTUU6XCJ3ZWJfdXNlclwiLFBBVEg6XCIvXCIsUFdEOlwiL1wiLEhPTUU6XCIvaG9tZS93ZWJfdXNlclwiLExBTkc6KHR5cGVvZiBuYXZpZ2F0b3I9PVwib2JqZWN0XCImJm5hdmlnYXRvci5sYW5ndWFnZXMmJm5hdmlnYXRvci5sYW5ndWFnZXNbMF18fFwiQ1wiKS5yZXBsYWNlKFwiLVwiLFwiX1wiKStcIi5VVEYtOFwiLF86YXx8XCIuL3RoaXMucHJvZ3JhbVwifSxjO2ZvcihjIGluIEx0KUx0W2NdPT09dm9pZCAwP2RlbGV0ZSBzW2NdOnNbY109THRbY107dmFyIGc9W107Zm9yKGMgaW4gcylnLnB1c2goYCR7Y309JHtzW2NdfWApO3R0PWd9cmV0dXJuIHR0fSx0dCx0bj1bbnVsbCxbXSxbXV0scm49WzMxLDI5LDMxLDMwLDMxLDMwLDMxLDMxLDMwLDMxLDMwLDMxXSxubj1bMzEsMjgsMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzFdO2Z1bmN0aW9uIG9uKHMpe3ZhciBjPUFycmF5KEV0KHMpKzEpO3JldHVybiBidChzLGMsMCxjLmxlbmd0aCksY31mdW5jdGlvbiBhbihzLGMsZywkKXtmdW5jdGlvbiBJKGssYWUsQWUpe2ZvcihrPXR5cGVvZiBrPT1cIm51bWJlclwiP2sudG9TdHJpbmcoKTprfHxcIlwiO2subGVuZ3RoPGFlOylrPUFlWzBdK2s7cmV0dXJuIGt9ZnVuY3Rpb24gRChrLGFlKXtyZXR1cm4gSShrLGFlLFwiMFwiKX1mdW5jdGlvbiBIKGssYWUpe2Z1bmN0aW9uIEFlKGt0KXtyZXR1cm4gMD5rdD8tMTowPGt0PzE6MH12YXIgT3Q7cmV0dXJuKE90PUFlKGsuZ2V0RnVsbFllYXIoKS1hZS5nZXRGdWxsWWVhcigpKSk9PT0wJiYoT3Q9QWUoay5nZXRNb250aCgpLWFlLmdldE1vbnRoKCkpKT09PTAmJihPdD1BZShrLmdldERhdGUoKS1hZS5nZXREYXRlKCkpKSxPdH1mdW5jdGlvbiBYKGspe3N3aXRjaChrLmdldERheSgpKXtjYXNlIDA6cmV0dXJuIG5ldyBEYXRlKGsuZ2V0RnVsbFllYXIoKS0xLDExLDI5KTtjYXNlIDE6cmV0dXJuIGs7Y2FzZSAyOnJldHVybiBuZXcgRGF0ZShrLmdldEZ1bGxZZWFyKCksMCwzKTtjYXNlIDM6cmV0dXJuIG5ldyBEYXRlKGsuZ2V0RnVsbFllYXIoKSwwLDIpO2Nhc2UgNDpyZXR1cm4gbmV3IERhdGUoay5nZXRGdWxsWWVhcigpLDAsMSk7Y2FzZSA1OnJldHVybiBuZXcgRGF0ZShrLmdldEZ1bGxZZWFyKCktMSwxMSwzMSk7Y2FzZSA2OnJldHVybiBuZXcgRGF0ZShrLmdldEZ1bGxZZWFyKCktMSwxMSwzMCl9fWZ1bmN0aW9uIHEoayl7dmFyIGFlPWsuYWI7Zm9yKGs9bmV3IERhdGUobmV3IERhdGUoay5iYisxOTAwLDAsMSkuZ2V0VGltZSgpKTswPGFlOyl7dmFyIEFlPWsuZ2V0TW9udGgoKSxPdD0oUWUoay5nZXRGdWxsWWVhcigpKT9ybjpubilbQWVdO2lmKGFlPk90LWsuZ2V0RGF0ZSgpKWFlLT1PdC1rLmdldERhdGUoKSsxLGsuc2V0RGF0ZSgxKSwxMT5BZT9rLnNldE1vbnRoKEFlKzEpOihrLnNldE1vbnRoKDApLGsuc2V0RnVsbFllYXIoay5nZXRGdWxsWWVhcigpKzEpKTtlbHNle2suc2V0RGF0ZShrLmdldERhdGUoKSthZSk7YnJlYWt9fXJldHVybiBBZT1uZXcgRGF0ZShrLmdldEZ1bGxZZWFyKCkrMSwwLDQpLGFlPVgobmV3IERhdGUoay5nZXRGdWxsWWVhcigpLDAsNCkpLEFlPVgoQWUpLDA+PUgoYWUsayk/MD49SChBZSxrKT9rLmdldEZ1bGxZZWFyKCkrMTprLmdldEZ1bGxZZWFyKCk6ay5nZXRGdWxsWWVhcigpLTF9cz4+Pj0wLGM+Pj49MCxnPj4+PTAsJD4+Pj0wO3ZhciBqPXRlWyQrNDA+Pj4yPj4+MF07JD17RGI6QlskPj4+Mj4+PjBdLENiOkJbJCs0Pj4+Mj4+PjBdLGhiOkJbJCs4Pj4+Mj4+PjBdLG1iOkJbJCsxMj4+PjI+Pj4wXSxpYjpCWyQrMTY+Pj4yPj4+MF0sYmI6QlskKzIwPj4+Mj4+PjBdLFdhOkJbJCsyND4+PjI+Pj4wXSxhYjpCWyQrMjg+Pj4yPj4+MF0sR2I6QlskKzMyPj4+Mj4+PjBdLEJiOkJbJCszNj4+PjI+Pj4wXSxFYjpqP0ZlKGopOlwiXCJ9LGc9RmUoZyksaj17XCIlY1wiOlwiJWEgJWIgJWQgJUg6JU06JVMgJVlcIixcIiVEXCI6XCIlbS8lZC8leVwiLFwiJUZcIjpcIiVZLSVtLSVkXCIsXCIlaFwiOlwiJWJcIixcIiVyXCI6XCIlSTolTTolUyAlcFwiLFwiJVJcIjpcIiVIOiVNXCIsXCIlVFwiOlwiJUg6JU06JVNcIixcIiV4XCI6XCIlbS8lZC8leVwiLFwiJVhcIjpcIiVIOiVNOiVTXCIsXCIlRWNcIjpcIiVjXCIsXCIlRUNcIjpcIiVDXCIsXCIlRXhcIjpcIiVtLyVkLyV5XCIsXCIlRVhcIjpcIiVIOiVNOiVTXCIsXCIlRXlcIjpcIiV5XCIsXCIlRVlcIjpcIiVZXCIsXCIlT2RcIjpcIiVkXCIsXCIlT2VcIjpcIiVlXCIsXCIlT0hcIjpcIiVIXCIsXCIlT0lcIjpcIiVJXCIsXCIlT21cIjpcIiVtXCIsXCIlT01cIjpcIiVNXCIsXCIlT1NcIjpcIiVTXCIsXCIlT3VcIjpcIiV1XCIsXCIlT1VcIjpcIiVVXCIsXCIlT1ZcIjpcIiVWXCIsXCIlT3dcIjpcIiV3XCIsXCIlT1dcIjpcIiVXXCIsXCIlT3lcIjpcIiV5XCJ9O2Zvcih2YXIgbmUgaW4gailnPWcucmVwbGFjZShuZXcgUmVnRXhwKG5lLFwiZ1wiKSxqW25lXSk7dmFyIGZlPVwiU3VuZGF5IE1vbmRheSBUdWVzZGF5IFdlZG5lc2RheSBUaHVyc2RheSBGcmlkYXkgU2F0dXJkYXlcIi5zcGxpdChcIiBcIiksJGU9XCJKYW51YXJ5IEZlYnJ1YXJ5IE1hcmNoIEFwcmlsIE1heSBKdW5lIEp1bHkgQXVndXN0IFNlcHRlbWJlciBPY3RvYmVyIE5vdmVtYmVyIERlY2VtYmVyXCIuc3BsaXQoXCIgXCIpO2o9e1wiJWFcIjprPT5mZVtrLldhXS5zdWJzdHJpbmcoMCwzKSxcIiVBXCI6az0+ZmVbay5XYV0sXCIlYlwiOms9PiRlW2suaWJdLnN1YnN0cmluZygwLDMpLFwiJUJcIjprPT4kZVtrLmliXSxcIiVDXCI6az0+RCgoay5iYisxOTAwKS8xMDB8MCwyKSxcIiVkXCI6az0+RChrLm1iLDIpLFwiJWVcIjprPT5JKGsubWIsMixcIiBcIiksXCIlZ1wiOms9PnEoaykudG9TdHJpbmcoKS5zdWJzdHJpbmcoMiksXCIlR1wiOms9PnEoayksXCIlSFwiOms9PkQoay5oYiwyKSxcIiVJXCI6az0+KGs9ay5oYixrPT0wP2s9MTI6MTI8ayYmKGstPTEyKSxEKGssMikpLFwiJWpcIjprPT57Zm9yKHZhciBhZT0wLEFlPTA7QWU8PWsuaWItMTthZSs9KFFlKGsuYmIrMTkwMCk/cm46bm4pW0FlKytdKTtyZXR1cm4gRChrLm1iK2FlLDMpfSxcIiVtXCI6az0+RChrLmliKzEsMiksXCIlTVwiOms9PkQoay5DYiwyKSxcIiVuXCI6KCk9PmBcXG5gLFwiJXBcIjprPT4wPD1rLmhiJiYxMj5rLmhiP1wiQU1cIjpcIlBNXCIsXCIlU1wiOms9PkQoay5EYiwyKSxcIiV0XCI6KCk9PlwiXHRcIixcIiV1XCI6az0+ay5XYXx8NyxcIiVVXCI6az0+RChNYXRoLmZsb29yKChrLmFiKzctay5XYSkvNyksMiksXCIlVlwiOms9Pnt2YXIgYWU9TWF0aC5mbG9vcigoay5hYis3LShrLldhKzYpJTcpLzcpO2lmKDI+PShrLldhKzM3MS1rLmFiLTIpJTcmJmFlKyssYWUpYWU9PTUzJiYoQWU9KGsuV2ErMzcxLWsuYWIpJTcsQWU9PTR8fEFlPT0zJiZRZShrLmJiKXx8KGFlPTEpKTtlbHNle2FlPTUyO3ZhciBBZT0oay5XYSs3LWsuYWItMSklNzsoQWU9PTR8fEFlPT01JiZRZShrLmJiJTQwMC0xKSkmJmFlKyt9cmV0dXJuIEQoYWUsMil9LFwiJXdcIjprPT5rLldhLFwiJVdcIjprPT5EKE1hdGguZmxvb3IoKGsuYWIrNy0oay5XYSs2KSU3KS83KSwyKSxcIiV5XCI6az0+KGsuYmIrMTkwMCkudG9TdHJpbmcoKS5zdWJzdHJpbmcoMiksXCIlWVwiOms9PmsuYmIrMTkwMCxcIiV6XCI6az0+e2s9ay5CYjt2YXIgYWU9MDw9aztyZXR1cm4gaz1NYXRoLmFicyhrKS82MCwoYWU/XCIrXCI6XCItXCIpKyhcIjAwMDBcIisoay82MCoxMDArayU2MCkpLnNsaWNlKC00KX0sXCIlWlwiOms9PmsuRWIsXCIlJVwiOigpPT5cIiVcIn0sZz1nLnJlcGxhY2UoLyUlL2csXCJcXFxcMFxcXFwwXCIpO2ZvcihuZSBpbiBqKWcuaW5jbHVkZXMobmUpJiYoZz1nLnJlcGxhY2UobmV3IFJlZ0V4cChuZSxcImdcIiksaltuZV0oJCkpKTtyZXR1cm4gZz1nLnJlcGxhY2UoL1xcXFwwXFxcXDAvZyxcIiVcIiksbmU9b24oZyksbmUubGVuZ3RoPmM/MDooTS5zZXQobmUscz4+PjApLG5lLmxlbmd0aC0xKX1mb3IodmFyIHNuPUFycmF5KDI1NiksaXI9MDsyNTY+aXI7Kytpcilzbltpcl09U3RyaW5nLmZyb21DaGFyQ29kZShpcik7R3I9c24sY3Q9ci5CaW5kaW5nRXJyb3I9Y2xhc3MgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihzKXtzdXBlcihzKSx0aGlzLm5hbWU9XCJCaW5kaW5nRXJyb3JcIn19LHIuSW50ZXJuYWxFcnJvcj1jbGFzcyBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKHMpe3N1cGVyKHMpLHRoaXMubmFtZT1cIkludGVybmFsRXJyb3JcIn19LE9iamVjdC5hc3NpZ24oYnIucHJvdG90eXBlLHtnZXQocyl7cmV0dXJuIHRoaXMuJGFbc119LGhhcyhzKXtyZXR1cm4gdGhpcy4kYVtzXSE9PXZvaWQgMH0sa2Iocyl7dmFyIGM9dGhpcy5uYi5wb3AoKXx8dGhpcy4kYS5sZW5ndGg7cmV0dXJuIHRoaXMuJGFbY109cyxjfSxqYihzKXt0aGlzLiRhW3NdPXZvaWQgMCx0aGlzLm5iLnB1c2gocyl9fSksT2UuJGEucHVzaCh7dmFsdWU6dm9pZCAwfSx7dmFsdWU6bnVsbH0se3ZhbHVlOiEwfSx7dmFsdWU6ITF9KSxPZS5jYj1PZS4kYS5sZW5ndGgsci5jb3VudF9lbXZhbF9oYW5kbGVzPSgpPT57Zm9yKHZhciBzPTAsYz1PZS5jYjtjPE9lLiRhLmxlbmd0aDsrK2MpT2UuJGFbY10hPT12b2lkIDAmJisrcztyZXR1cm4gc307dmFyIGpuPXtpYTpmdW5jdGlvbihzLGMsZyl7cmV0dXJuIElyKGFzeW5jKCk9Pnthd2FpdCByLndiKHMsYyxnKX0pfSxhOmZ1bmN0aW9uKHMsYyxnKXt0aHJvdyBzPj4+PTAsbmV3IFJ0KHMpLmtiKGM+Pj4wLGc+Pj4wKSxKdD1zLFd0KyssSnR9LHg6ZnVuY3Rpb24oKXtyZXR1cm4gMH0sYmE6ZnVuY3Rpb24oKXt9LE86ZnVuY3Rpb24oKXt9LFE6ZnVuY3Rpb24oKXt9LGNhOmZ1bmN0aW9uKCl7cmV0dXJuIDB9LCQ6ZnVuY3Rpb24oKXt9LFc6ZnVuY3Rpb24oKXt9LF86ZnVuY3Rpb24oKXt9LEQ6ZnVuY3Rpb24oKXt9LFA6ZnVuY3Rpb24oKXt9LE06ZnVuY3Rpb24oKXt9LGFhOmZ1bmN0aW9uKCl7fSxOOmZ1bmN0aW9uKCl7fSxHOmZ1bmN0aW9uKHMsYyxnLCQsSSl7Yz4+Pj0wLGM9b3QoYyk7dmFyIEQ9Yy5pbmRleE9mKFwidVwiKSE9LTE7RCYmKEk9KDFuPDw2NG4pLTFuKSxxZShzPj4+MCx7bmFtZTpjLGZyb21XaXJlVHlwZTpIPT5ILHRvV2lyZVR5cGU6ZnVuY3Rpb24oSCxYKXtpZih0eXBlb2YgWCE9XCJiaWdpbnRcIiYmdHlwZW9mIFghPVwibnVtYmVyXCIpdGhyb3cgbmV3IFR5cGVFcnJvcihgQ2Fubm90IGNvbnZlcnQgXCIke2ZyKFgpfVwiIHRvICR7dGhpcy5uYW1lfWApO2lmKFg8JHx8WD5JKXRocm93IG5ldyBUeXBlRXJyb3IoYFBhc3NpbmcgYSBudW1iZXIgXCIke2ZyKFgpfVwiIGZyb20gSlMgc2lkZSB0byBDL0MrKyBzaWRlIHRvIGFuIGFyZ3VtZW50IG9mIHR5cGUgXCIke2N9XCIsIHdoaWNoIGlzIG91dHNpZGUgdGhlIHZhbGlkIHJhbmdlIFskeyR9LCAke0l9XSFgKTtyZXR1cm4gWH0sYXJnUGFja0FkdmFuY2U6OCxyZWFkVmFsdWVGcm9tUG9pbnRlcjp5cihjLGc+Pj4wLCFEKSxlYjpudWxsfSl9LGdhOmZ1bmN0aW9uKHMsYyxnLCQpe2M9b3QoYz4+PjApLHFlKHM+Pj4wLHtuYW1lOmMsZnJvbVdpcmVUeXBlOmZ1bmN0aW9uKEkpe3JldHVybiEhSX0sdG9XaXJlVHlwZTpmdW5jdGlvbihJLEQpe3JldHVybiBEP2c6JH0sYXJnUGFja0FkdmFuY2U6OCxyZWFkVmFsdWVGcm9tUG9pbnRlcjpmdW5jdGlvbihJKXtyZXR1cm4gdGhpcy5mcm9tV2lyZVR5cGUoTltJPj4+MF0pfSxlYjpudWxsfSl9LGZhOmZ1bmN0aW9uKHMsYyl7Yz1vdChjPj4+MCkscWUocz4+PjAse25hbWU6Yyxmcm9tV2lyZVR5cGU6Zz0+e3ZhciAkPXZlKGcpO3JldHVybiB3cihnKSwkfSx0b1dpcmVUeXBlOihnLCQpPT5pdCgkKSxhcmdQYWNrQWR2YW5jZTo4LHJlYWRWYWx1ZUZyb21Qb2ludGVyOlF0LGViOm51bGx9KX0sRjpmdW5jdGlvbihzLGMsZyl7Yz1vdChjPj4+MCkscWUocz4+PjAse25hbWU6Yyxmcm9tV2lyZVR5cGU6JD0+JCx0b1dpcmVUeXBlOigkLEkpPT5JLGFyZ1BhY2tBZHZhbmNlOjgscmVhZFZhbHVlRnJvbVBvaW50ZXI6dnIoYyxnPj4+MCksZWI6bnVsbH0pfSx0OmZ1bmN0aW9uKHMsYyxnLCQsSSl7aWYocz4+Pj0wLGc+Pj49MCxjPW90KGM+Pj4wKSxJPT09LTEmJihJPTQyOTQ5NjcyOTUpLEk9WD0+WCwkPT09MCl7dmFyIEQ9MzItOCpnO0k9WD0+WDw8RD4+PkR9dmFyIEg9Yy5pbmNsdWRlcyhcInVuc2lnbmVkXCIpP2Z1bmN0aW9uKFgscSl7cmV0dXJuIHE+Pj4wfTpmdW5jdGlvbihYLHEpe3JldHVybiBxfTtxZShzLHtuYW1lOmMsZnJvbVdpcmVUeXBlOkksdG9XaXJlVHlwZTpILGFyZ1BhY2tBZHZhbmNlOjgscmVhZFZhbHVlRnJvbVBvaW50ZXI6eXIoYyxnLCQhPT0wKSxlYjpudWxsfSl9LG46ZnVuY3Rpb24ocyxjLGcpe2Z1bmN0aW9uICQoRCl7cmV0dXJuIG5ldyBJKE0uYnVmZmVyLHRlW0QrND4+PjI+Pj4wXSx0ZVtEPj4+Mj4+PjBdKX12YXIgST1bSW50OEFycmF5LFVpbnQ4QXJyYXksSW50MTZBcnJheSxVaW50MTZBcnJheSxJbnQzMkFycmF5LFVpbnQzMkFycmF5LEZsb2F0MzJBcnJheSxGbG9hdDY0QXJyYXksQmlnSW50NjRBcnJheSxCaWdVaW50NjRBcnJheV1bY107Zz1vdChnPj4+MCkscWUocz4+PjAse25hbWU6Zyxmcm9tV2lyZVR5cGU6JCxhcmdQYWNrQWR2YW5jZTo4LHJlYWRWYWx1ZUZyb21Qb2ludGVyOiR9LHt0YjohMH0pfSxIOmZ1bmN0aW9uKHMsYyl7Yz1vdChjPj4+MCk7dmFyIGc9Yz09PVwic3RkOjpzdHJpbmdcIjtxZShzPj4+MCx7bmFtZTpjLGZyb21XaXJlVHlwZTpmdW5jdGlvbigkKXt2YXIgST10ZVskPj4+Mj4+PjBdLEQ9JCs0O2lmKGcpZm9yKHZhciBIPUQsWD0wO1g8PUk7KytYKXt2YXIgcT1EK1g7aWYoWD09SXx8TltxPj4+MF09PTApe2lmKEg9RmUoSCxxLUgpLGo9PT12b2lkIDApdmFyIGo9SDtlbHNlIGorPVN0cmluZy5mcm9tQ2hhckNvZGUoMCksais9SDtIPXErMX19ZWxzZXtmb3Ioaj1BcnJheShJKSxYPTA7WDxJOysrWClqW1hdPVN0cmluZy5mcm9tQ2hhckNvZGUoTltEK1g+Pj4wXSk7aj1qLmpvaW4oXCJcIil9cmV0dXJuIGF0KCQpLGp9LHRvV2lyZVR5cGU6ZnVuY3Rpb24oJCxJKXtJIGluc3RhbmNlb2YgQXJyYXlCdWZmZXImJihJPW5ldyBVaW50OEFycmF5KEkpKTt2YXIgRD10eXBlb2YgST09XCJzdHJpbmdcIjtpZighKER8fEkgaW5zdGFuY2VvZiBVaW50OEFycmF5fHxJIGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXl8fEkgaW5zdGFuY2VvZiBJbnQ4QXJyYXkpKXRocm93IG5ldyBjdChcIkNhbm5vdCBwYXNzIG5vbi1zdHJpbmcgdG8gc3RkOjpzdHJpbmdcIik7dmFyIEg9ZyYmRD9FdChJKTpJLmxlbmd0aCxYPU10KDQrSCsxKSxxPVgrNDtpZih0ZVtYPj4+Mj4+PjBdPUgsZyYmRClidChJLE4scSxIKzEpO2Vsc2UgaWYoRClmb3IoRD0wO0Q8SDsrK0Qpe3ZhciBqPUkuY2hhckNvZGVBdChEKTtpZigyNTU8ail0aHJvdyBhdChxKSxuZXcgY3QoXCJTdHJpbmcgaGFzIFVURi0xNiBjb2RlIHVuaXRzIHRoYXQgZG8gbm90IGZpdCBpbiA4IGJpdHNcIik7TltxK0Q+Pj4wXT1qfWVsc2UgZm9yKEQ9MDtEPEg7KytEKU5bcStEPj4+MF09SVtEXTtyZXR1cm4gJCE9PW51bGwmJiQucHVzaChhdCxYKSxYfSxhcmdQYWNrQWR2YW5jZTo4LHJlYWRWYWx1ZUZyb21Qb2ludGVyOkhuLGViKCQpe2F0KCQpfX0pfSx6OmZ1bmN0aW9uKHMsYyxnKXtpZihjPj4+PTAsZz4+Pj0wLGc9b3QoZyksYz09PTIpdmFyICQ9R24sST1tZSxEPWVyLEg9KCk9PnNlLFg9MTtlbHNlIGM9PT00JiYoJD1GcixJPUxuLEQ9anIsSD0oKT0+dGUsWD0yKTtxZShzPj4+MCx7bmFtZTpnLGZyb21XaXJlVHlwZTpxPT57Zm9yKHZhciBqPXRlW3E+Pj4yPj4+MF0sbmU9SCgpLGZlLCRlPXErNCxrPTA7azw9ajsrK2spe3ZhciBhZT1xKzQraypjOyhrPT1qfHxuZVthZT4+PlhdPT0wKSYmKCRlPSQoJGUsYWUtJGUpLGZlPT09dm9pZCAwP2ZlPSRlOihmZSs9U3RyaW5nLmZyb21DaGFyQ29kZSgwKSxmZSs9JGUpLCRlPWFlK2MpfXJldHVybiBhdChxKSxmZX0sdG9XaXJlVHlwZToocSxqKT0+e2lmKHR5cGVvZiBqIT1cInN0cmluZ1wiKXRocm93IG5ldyBjdChgQ2Fubm90IHBhc3Mgbm9uLXN0cmluZyB0byBDKysgc3RyaW5nIHR5cGUgJHtnfWApO3ZhciBuZT1EKGopLGZlPU10KDQrbmUrYyk7cmV0dXJuIHRlW2ZlPj4+Ml09bmU+PlgsSShqLGZlKzQsbmUrYykscSE9PW51bGwmJnEucHVzaChhdCxmZSksZmV9LGFyZ1BhY2tBZHZhbmNlOjgscmVhZFZhbHVlRnJvbVBvaW50ZXI6UXQsZWIocSl7YXQocSl9fSl9LGhhOmZ1bmN0aW9uKHMsYyl7Yz1vdChjPj4+MCkscWUocz4+PjAse3ViOiEwLG5hbWU6YyxhcmdQYWNrQWR2YW5jZTowLGZyb21XaXJlVHlwZTooKT0+e30sdG9XaXJlVHlwZTooKT0+e319KX0sZGE6KCk9PjEsczpmdW5jdGlvbihzLGMsZyl7cmV0dXJuIGM+Pj49MCxnPj4+PTAscz12ZShzPj4+MCksYz1fcihjLFwiZW12YWw6OmFzXCIpLFNyKGMsZyxzKX0sdzpmdW5jdGlvbihzKXtyZXR1cm4gcz4+Pj0wLElyKCgpPT4ocz12ZShzKSxzLnRoZW4oaXQpKSl9LG86ZnVuY3Rpb24ocyxjLGcsJCl7cmV0dXJuIGc+Pj49MCwkPj4+PTAscz1HdFtzPj4+MF0sYz12ZShjPj4+MCkscyhudWxsLGMsZywkKX0sazpmdW5jdGlvbihzLGMsZywkLEkpe3JldHVybiBnPj4+PTAsJD4+Pj0wLEk+Pj49MCxzPUd0W3M+Pj4wXSxjPXZlKGM+Pj4wKSxnPXJyKGcpLHMoYyxjW2ddLCQsSSl9LGI6d3IsQTpmdW5jdGlvbihzLGMpe3JldHVybiBjPj4+PTAscz12ZShzPj4+MCksYz12ZShjKSxzPT1jfSxtOmZ1bmN0aW9uKHMpe3JldHVybiBzPj4+PTAscz09PTA/aXQoVHIoKSk6KHM9cnIocyksaXQoVHIoKVtzXSkpfSxpOmZ1bmN0aW9uKHMsYyxnKXtjPUVyKHMsYz4+PjApO3ZhciAkPWMuc2hpZnQoKTtzLS07dmFyIEk9YHJldHVybiBmdW5jdGlvbiAob2JqLCBmdW5jLCBkZXN0cnVjdG9yc1JlZiwgYXJncykge1xcbmAsRD0wLEg9W107Zz09PTAmJkgucHVzaChcIm9ialwiKTtmb3IodmFyIFg9W1wicmV0VHlwZVwiXSxxPVskXSxqPTA7ajxzOysrailILnB1c2goXCJhcmdcIitqKSxYLnB1c2goXCJhcmdUeXBlXCIraikscS5wdXNoKGNbal0pLEkrPWAgIHZhciBhcmcke2p9ID0gYXJnVHlwZSR7an0ucmVhZFZhbHVlRnJvbVBvaW50ZXIoYXJncyR7RD9cIitcIitEOlwiXCJ9KTtcXG5gLEQrPWNbal0uYXJnUGFja0FkdmFuY2U7Zm9yKEkrPWAgIHZhciBydiA9ICR7Zz09PTE/XCJuZXcgZnVuY1wiOlwiZnVuYy5jYWxsXCJ9KCR7SC5qb2luKFwiLCBcIil9KTtcXG5gLGo9MDtqPHM7KytqKWNbal0uZGVsZXRlT2JqZWN0JiYoSSs9YCAgYXJnVHlwZSR7an0uZGVsZXRlT2JqZWN0KGFyZyR7an0pO1xcbmApO3JldHVybiAkLnVifHwoWC5wdXNoKFwiZW12YWxfcmV0dXJuVmFsdWVcIikscS5wdXNoKFNyKSxJKz1gICByZXR1cm4gZW12YWxfcmV0dXJuVmFsdWUocmV0VHlwZSwgZGVzdHJ1Y3RvcnNSZWYsIHJ2KTtcXG5gKSxYLnB1c2goSStgfTtcXG5gKSxzPUZuKFgpLmFwcGx5KG51bGwscSksZz1gbWV0aG9kQ2FsbGVyPCgke2MubWFwKG5lPT5uZS5uYW1lKS5qb2luKFwiLCBcIil9KSA9PiAkeyQubmFtZX0+YCxsdChucihnLHMpKX0scjpmdW5jdGlvbihzLGMpe3JldHVybiBjPj4+PTAscz12ZShzPj4+MCksYz12ZShjKSxpdChzW2NdKX0sZTpmdW5jdGlvbihzKXtzPj4+PTAsNDxzJiYoT2UuZ2V0KHMpLnBiKz0xKX0sdTpmdW5jdGlvbigpe3JldHVybiBpdChbXSl9LGw6ZnVuY3Rpb24ocyl7cz12ZShzPj4+MCk7Zm9yKHZhciBjPUFycmF5KHMubGVuZ3RoKSxnPTA7ZzxzLmxlbmd0aDtnKyspY1tnXT1zW2ddO3JldHVybiBpdChjKX0sZDpmdW5jdGlvbihzKXtyZXR1cm4gaXQocnIocz4+PjApKX0sajpmdW5jdGlvbigpe3JldHVybiBpdCh7fSl9LGg6ZnVuY3Rpb24ocyl7cz4+Pj0wO2Zvcih2YXIgYz12ZShzKTtjLmxlbmd0aDspe3ZhciBnPWMucG9wKCk7Yy5wb3AoKShnKX13cihzKX0sZzpmdW5jdGlvbihzLGMsZyl7Yz4+Pj0wLGc+Pj49MCxzPXZlKHM+Pj4wKSxjPXZlKGMpLGc9dmUoZyksc1tjXT1nfSxjOmZ1bmN0aW9uKHMsYyl7cmV0dXJuIGM+Pj49MCxzPV9yKHM+Pj4wLFwiX2VtdmFsX3Rha2VfdmFsdWVcIikscz1zLnJlYWRWYWx1ZUZyb21Qb2ludGVyKGMpLGl0KHMpfSxUOmZ1bmN0aW9uKHMsYyl7cz0tOTAwNzE5OTI1NDc0MDk5Mj5zfHw5MDA3MTk5MjU0NzQwOTkyPHM/TmFOOk51bWJlcihzKSxjPj4+PTAscz1uZXcgRGF0ZSgxZTMqcyksQltjPj4+Mj4+PjBdPXMuZ2V0VVRDU2Vjb25kcygpLEJbYys0Pj4+Mj4+PjBdPXMuZ2V0VVRDTWludXRlcygpLEJbYys4Pj4+Mj4+PjBdPXMuZ2V0VVRDSG91cnMoKSxCW2MrMTI+Pj4yPj4+MF09cy5nZXRVVENEYXRlKCksQltjKzE2Pj4+Mj4+PjBdPXMuZ2V0VVRDTW9udGgoKSxCW2MrMjA+Pj4yPj4+MF09cy5nZXRVVENGdWxsWWVhcigpLTE5MDAsQltjKzI0Pj4+Mj4+PjBdPXMuZ2V0VVRDRGF5KCksQltjKzI4Pj4+Mj4+PjBdPShzLmdldFRpbWUoKS1EYXRlLlVUQyhzLmdldFVUQ0Z1bGxZZWFyKCksMCwxLDAsMCwwLDApKS84NjRlNXwwfSxVOmZ1bmN0aW9uKHMsYyl7cz0tOTAwNzE5OTI1NDc0MDk5Mj5zfHw5MDA3MTk5MjU0NzQwOTkyPHM/TmFOOk51bWJlcihzKSxjPj4+PTAscz1uZXcgRGF0ZSgxZTMqcyksQltjPj4+Mj4+PjBdPXMuZ2V0U2Vjb25kcygpLEJbYys0Pj4+Mj4+PjBdPXMuZ2V0TWludXRlcygpLEJbYys4Pj4+Mj4+PjBdPXMuZ2V0SG91cnMoKSxCW2MrMTI+Pj4yPj4+MF09cy5nZXREYXRlKCksQltjKzE2Pj4+Mj4+PjBdPXMuZ2V0TW9udGgoKSxCW2MrMjA+Pj4yPj4+MF09cy5nZXRGdWxsWWVhcigpLTE5MDAsQltjKzI0Pj4+Mj4+PjBdPXMuZ2V0RGF5KCksQltjKzI4Pj4+Mj4+PjBdPShRZShzLmdldEZ1bGxZZWFyKCkpP2VuOnB0KVtzLmdldE1vbnRoKCldK3MuZ2V0RGF0ZSgpLTF8MCxCW2MrMzY+Pj4yPj4+MF09LSg2MCpzLmdldFRpbWV6b25lT2Zmc2V0KCkpO3ZhciBnPW5ldyBEYXRlKHMuZ2V0RnVsbFllYXIoKSw2LDEpLmdldFRpbWV6b25lT2Zmc2V0KCksJD1uZXcgRGF0ZShzLmdldEZ1bGxZZWFyKCksMCwxKS5nZXRUaW1lem9uZU9mZnNldCgpO0JbYyszMj4+PjI+Pj4wXT0oZyE9JCYmcy5nZXRUaW1lem9uZU9mZnNldCgpPT1NYXRoLm1pbigkLGcpKXwwfSxWOmZ1bmN0aW9uKHMpe3M+Pj49MDt2YXIgYz1uZXcgRGF0ZShCW3MrMjA+Pj4yPj4+MF0rMTkwMCxCW3MrMTY+Pj4yPj4+MF0sQltzKzEyPj4+Mj4+PjBdLEJbcys4Pj4+Mj4+PjBdLEJbcys0Pj4+Mj4+PjBdLEJbcz4+PjI+Pj4wXSwwKSxnPUJbcyszMj4+PjI+Pj4wXSwkPWMuZ2V0VGltZXpvbmVPZmZzZXQoKSxJPW5ldyBEYXRlKGMuZ2V0RnVsbFllYXIoKSw2LDEpLmdldFRpbWV6b25lT2Zmc2V0KCksRD1uZXcgRGF0ZShjLmdldEZ1bGxZZWFyKCksMCwxKS5nZXRUaW1lem9uZU9mZnNldCgpLEg9TWF0aC5taW4oRCxJKTtyZXR1cm4gMD5nP0JbcyszMj4+PjI+Pj4wXT0rKEkhPUQmJkg9PSQpOjA8ZyE9KEg9PSQpJiYoST1NYXRoLm1heChELEkpLGMuc2V0VGltZShjLmdldFRpbWUoKSs2ZTQqKCgwPGc/SDpJKS0kKSkpLEJbcysyND4+PjI+Pj4wXT1jLmdldERheSgpLEJbcysyOD4+PjI+Pj4wXT0oUWUoYy5nZXRGdWxsWWVhcigpKT9lbjpwdClbYy5nZXRNb250aCgpXStjLmdldERhdGUoKS0xfDAsQltzPj4+Mj4+PjBdPWMuZ2V0U2Vjb25kcygpLEJbcys0Pj4+Mj4+PjBdPWMuZ2V0TWludXRlcygpLEJbcys4Pj4+Mj4+PjBdPWMuZ2V0SG91cnMoKSxCW3MrMTI+Pj4yPj4+MF09Yy5nZXREYXRlKCksQltzKzE2Pj4+Mj4+PjBdPWMuZ2V0TW9udGgoKSxCW3MrMjA+Pj4yPj4+MF09Yy5nZXRZZWFyKCkscz1jLmdldFRpbWUoKSxpc05hTihzKT8oQlt1bigpPj4+Mj4+PjBdPTYxLHM9LTEpOnMvPTFlMyxCaWdJbnQocyl9LFI6ZnVuY3Rpb24oKXtyZXR1cm4tNTJ9LFM6ZnVuY3Rpb24oKXt9LEs6ZnVuY3Rpb24ocyxjLGcpe2Z1bmN0aW9uICQocSl7cmV0dXJuKHE9cS50b1RpbWVTdHJpbmcoKS5tYXRjaCgvXFxcXCgoW0EtWmEteiBdKylcXFxcKSQvKSk/cVsxXTpcIkdNVFwifWc+Pj49MDt2YXIgST1uZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCksRD1uZXcgRGF0ZShJLDAsMSksSD1uZXcgRGF0ZShJLDYsMSk7ST1ELmdldFRpbWV6b25lT2Zmc2V0KCk7dmFyIFg9SC5nZXRUaW1lem9uZU9mZnNldCgpO3RlW3M+Pj4wPj4+Mj4+PjBdPTYwKk1hdGgubWF4KEksWCksQltjPj4+MD4+PjI+Pj4wXT0rKEkhPVgpLHM9JChEKSxjPSQoSCkscz1QcihzKSxjPVByKGMpLFg8ST8odGVbZz4+PjI+Pj4wXT1zLHRlW2crND4+PjI+Pj4wXT1jKToodGVbZz4+PjI+Pj4wXT1jLHRlW2crND4+PjI+Pj4wXT1zKX0sdjooKT0+e0dlKFwiXCIpfSxmOmZ1bmN0aW9uKHMsYyxnKXtyZXR1cm4gcz4+Pj0wLGM9ZXQoYz4+PjAsZz4+PjApLFR0W3NdLmFwcGx5KG51bGwsYyl9LEk6ZnVuY3Rpb24ocyxjLGcpe3JldHVybiBzPj4+PTAsYz1ldChjPj4+MCxnPj4+MCksVHRbc10uYXBwbHkobnVsbCxjKX0sRTooKT0+RGF0ZS5ub3coKSxMOmZ1bmN0aW9uKCl7cmV0dXJuIDQyOTQ5MDE3NjB9LHE6KCk9PnBlcmZvcm1hbmNlLm5vdygpLEo6ZnVuY3Rpb24ocyl7cz4+Pj0wO3ZhciBjPU4ubGVuZ3RoO2lmKDQyOTQ5MDE3NjA8cylyZXR1cm4hMTtmb3IodmFyIGc9MTs0Pj1nO2cqPTIpe3ZhciAkPWMqKDErLjIvZyk7JD1NYXRoLm1pbigkLHMrMTAwNjYzMjk2KTt2YXIgST1NYXRoOyQ9TWF0aC5tYXgocywkKTtlOntJPShJLm1pbi5jYWxsKEksNDI5NDkwMTc2MCwkKyg2NTUzNi0kJTY1NTM2KSU2NTUzNiktRS5idWZmZXIuYnl0ZUxlbmd0aCs2NTUzNSkvNjU1MzY7dHJ5e0UuZ3JvdyhJKSxNZSgpO3ZhciBEPTE7YnJlYWsgZX1jYXRjaHt9RD12b2lkIDB9aWYoRClyZXR1cm4hMH1yZXR1cm4hMX0sWTpmdW5jdGlvbihzLGMpe3M+Pj49MCxjPj4+PTA7dmFyIGc9MDtyZXR1cm4gS2UoKS5mb3JFYWNoKCgkLEkpPT57dmFyIEQ9YytnO2ZvcihJPXRlW3MrNCpJPj4+Mj4+PjBdPUQsRD0wO0Q8JC5sZW5ndGg7KytEKU1bSSsrPj4+MD4+PjBdPSQuY2hhckNvZGVBdChEKTtNW0k+Pj4wPj4+MF09MCxnKz0kLmxlbmd0aCsxfSksMH0sWjpmdW5jdGlvbihzLGMpe3M+Pj49MCxjPj4+PTA7dmFyIGc9S2UoKTt0ZVtzPj4+Mj4+PjBdPWcubGVuZ3RoO3ZhciAkPTA7cmV0dXJuIGcuZm9yRWFjaChJPT4kKz1JLmxlbmd0aCsxKSx0ZVtjPj4+Mj4+PjBdPSQsMH0seTooKT0+NTIsQzpmdW5jdGlvbigpe3JldHVybiA1Mn0sWDpmdW5jdGlvbigpe3JldHVybiA3MH0sQjpmdW5jdGlvbihzLGMsZywkKXtjPj4+PTAsZz4+Pj0wLCQ+Pj49MDtmb3IodmFyIEk9MCxEPTA7RDxnO0QrKyl7dmFyIEg9dGVbYz4+PjI+Pj4wXSxYPXRlW2MrND4+PjI+Pj4wXTtjKz04O2Zvcih2YXIgcT0wO3E8WDtxKyspe3ZhciBqPU5bSCtxPj4+MF0sbmU9dG5bc107aj09PTB8fGo9PT0xMD8oKHM9PT0xP0M6UykoQnQobmUsMCkpLG5lLmxlbmd0aD0wKTpuZS5wdXNoKGopfUkrPVh9cmV0dXJuIHRlWyQ+Pj4yPj4+MF09SSwwfSxlYTphbixwOmZ1bmN0aW9uKHMsYyxnLCQpe3JldHVybiBhbihzPj4+MCxjPj4+MCxnPj4+MCwkPj4+MCl9fSx1ZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHMoZyl7cmV0dXJuIHVlPWcuZXhwb3J0cyx1ZT1xcigpLHVlPWRuKCksRT11ZS5qYSxNZSgpLHllLnVuc2hpZnQodWUua2EpLHdlLS0sd2U9PTAmJih6ZSE9PW51bGwmJihjbGVhckludGVydmFsKHplKSx6ZT1udWxsKSxSZSYmKGc9UmUsUmU9bnVsbCxnKCkpKSx1ZX12YXIgYz17YTpqbn07aWYod2UrKyxyLmluc3RhbnRpYXRlV2FzbSl0cnl7cmV0dXJuIHIuaW5zdGFudGlhdGVXYXNtKGMscyl9Y2F0Y2goZyl7UyhgTW9kdWxlLmluc3RhbnRpYXRlV2FzbSBjYWxsYmFjayBmYWlsZWQgd2l0aCBlcnJvcjogJHtnfWApLGkoZyl9cmV0dXJuIEl0KGMsZnVuY3Rpb24oZyl7cyhnLmluc3RhbmNlKX0pLmNhdGNoKGkpLHt9fSgpO3IuX09ydEluaXQ9KHMsYyk9PihyLl9PcnRJbml0PXVlLmxhKShzLGMpLHIuX09ydEdldExhc3RFcnJvcj0ocyxjKT0+KHIuX09ydEdldExhc3RFcnJvcj11ZS5tYSkocyxjKSxyLl9PcnRDcmVhdGVTZXNzaW9uT3B0aW9ucz0ocyxjLGcsJCxJLEQsSCxYLHEsaik9PihyLl9PcnRDcmVhdGVTZXNzaW9uT3B0aW9ucz11ZS5uYSkocyxjLGcsJCxJLEQsSCxYLHEsaiksci5fT3J0QXBwZW5kRXhlY3V0aW9uUHJvdmlkZXI9KHMsYyk9PihyLl9PcnRBcHBlbmRFeGVjdXRpb25Qcm92aWRlcj11ZS5vYSkocyxjKSxyLl9PcnRBZGRGcmVlRGltZW5zaW9uT3ZlcnJpZGU9KHMsYyxnKT0+KHIuX09ydEFkZEZyZWVEaW1lbnNpb25PdmVycmlkZT11ZS5wYSkocyxjLGcpLHIuX09ydEFkZFNlc3Npb25Db25maWdFbnRyeT0ocyxjLGcpPT4oci5fT3J0QWRkU2Vzc2lvbkNvbmZpZ0VudHJ5PXVlLnFhKShzLGMsZyksci5fT3J0UmVsZWFzZVNlc3Npb25PcHRpb25zPXM9PihyLl9PcnRSZWxlYXNlU2Vzc2lvbk9wdGlvbnM9dWUucmEpKHMpLHIuX09ydENyZWF0ZVNlc3Npb249KHMsYyxnKT0+KHIuX09ydENyZWF0ZVNlc3Npb249dWUuc2EpKHMsYyxnKSxyLl9PcnRSZWxlYXNlU2Vzc2lvbj1zPT4oci5fT3J0UmVsZWFzZVNlc3Npb249dWUudGEpKHMpLHIuX09ydEdldElucHV0T3V0cHV0Q291bnQ9KHMsYyxnKT0+KHIuX09ydEdldElucHV0T3V0cHV0Q291bnQ9dWUudWEpKHMsYyxnKSxyLl9PcnRHZXRJbnB1dE5hbWU9KHMsYyk9PihyLl9PcnRHZXRJbnB1dE5hbWU9dWUudmEpKHMsYyksci5fT3J0R2V0T3V0cHV0TmFtZT0ocyxjKT0+KHIuX09ydEdldE91dHB1dE5hbWU9dWUud2EpKHMsYyksci5fT3J0RnJlZT1zPT4oci5fT3J0RnJlZT11ZS54YSkocyksci5fT3J0Q3JlYXRlVGVuc29yPShzLGMsZywkLEksRCk9PihyLl9PcnRDcmVhdGVUZW5zb3I9dWUueWEpKHMsYyxnLCQsSSxEKSxyLl9PcnRHZXRUZW5zb3JEYXRhPShzLGMsZywkLEkpPT4oci5fT3J0R2V0VGVuc29yRGF0YT11ZS56YSkocyxjLGcsJCxJKSxyLl9PcnRSZWxlYXNlVGVuc29yPXM9PihyLl9PcnRSZWxlYXNlVGVuc29yPXVlLkFhKShzKSxyLl9PcnRDcmVhdGVSdW5PcHRpb25zPShzLGMsZywkKT0+KHIuX09ydENyZWF0ZVJ1bk9wdGlvbnM9dWUuQmEpKHMsYyxnLCQpLHIuX09ydEFkZFJ1bkNvbmZpZ0VudHJ5PShzLGMsZyk9PihyLl9PcnRBZGRSdW5Db25maWdFbnRyeT11ZS5DYSkocyxjLGcpLHIuX09ydFJlbGVhc2VSdW5PcHRpb25zPXM9PihyLl9PcnRSZWxlYXNlUnVuT3B0aW9ucz11ZS5EYSkocyksci5fT3J0Q3JlYXRlQmluZGluZz1zPT4oci5fT3J0Q3JlYXRlQmluZGluZz11ZS5FYSkocyksci5fT3J0QmluZElucHV0PShzLGMsZyk9PihyLl9PcnRCaW5kSW5wdXQ9dWUuRmEpKHMsYyxnKSxyLl9PcnRCaW5kT3V0cHV0PShzLGMsZywkKT0+KHIuX09ydEJpbmRPdXRwdXQ9dWUuR2EpKHMsYyxnLCQpLHIuX09ydENsZWFyQm91bmRPdXRwdXRzPXM9PihyLl9PcnRDbGVhckJvdW5kT3V0cHV0cz11ZS5IYSkocyksci5fT3J0UmVsZWFzZUJpbmRpbmc9cz0+KHIuX09ydFJlbGVhc2VCaW5kaW5nPXVlLklhKShzKSxyLl9PcnRSdW5XaXRoQmluZGluZz0ocyxjLGcsJCxJKT0+KHIuX09ydFJ1bldpdGhCaW5kaW5nPXVlLkphKShzLGMsZywkLEkpLHIuX09ydFJ1bj0ocyxjLGcsJCxJLEQsSCxYKT0+KHIuX09ydFJ1bj11ZS5LYSkocyxjLGcsJCxJLEQsSCxYKSxyLl9PcnRFbmRQcm9maWxpbmc9cz0+KHIuX09ydEVuZFByb2ZpbGluZz11ZS5MYSkocyksci5fSnNlcE91dHB1dD0ocyxjLGcpPT4oci5fSnNlcE91dHB1dD11ZS5NYSkocyxjLGcpLHIuX0pzZXBHZXROb2RlTmFtZT1zPT4oci5fSnNlcEdldE5vZGVOYW1lPXVlLk5hKShzKTt2YXIgdW49KCk9Pih1bj11ZS5PYSkoKSxNdD1yLl9tYWxsb2M9cz0+KE10PXIuX21hbGxvYz11ZS5QYSkocyksYXQ9ci5fZnJlZT1zPT4oYXQ9ci5fZnJlZT11ZS5RYSkocyksRnQ9cz0+KEZ0PXVlLlJhKShzKSxhcj0oKT0+KGFyPXVlLlRhKSgpLHNyPXM9Pihzcj11ZS5VYSkocyksT3I9cz0+KE9yPXVlLlZhKShzKSxqdD1zPT4oanQ9dWUuWGEpKHMpLGxuPSgpPT4obG49dWUuWWEpKCksZnQ9cz0+KGZ0PXVlLlphKShzKSxkdD0oKT0+KGR0PXVlLl9hKSgpO3IuX19fc3RhcnRfZW1fanM9OTU3MjkxLHIuX19fc3RvcF9lbV9qcz05NTc0NTI7ZnVuY3Rpb24gZG4oKXt2YXIgcz11ZTtzPU9iamVjdC5hc3NpZ24oe30scyk7dmFyIGM9JD0+KCk9PiQoKT4+PjAsZz0kPT5JPT4kKEkpPj4+MDtyZXR1cm4gcy5PYT1jKHMuT2EpLHMuUGE9ZyhzLlBhKSxzLlJhPWcocy5SYSkscy5UYT1jKHMuVGEpLHMuVmE9ZyhzLlZhKSxzfXIuc3RhY2tBbGxvYz1PcixyLnN0YWNrU2F2ZT1hcixyLnN0YWNrUmVzdG9yZT1zcixyLlVURjhUb1N0cmluZz1GZSxyLnN0cmluZ1RvVVRGOD0ocyxjLGcpPT5idChzLE4sYyxnKSxyLmxlbmd0aEJ5dGVzVVRGOD1FdDt2YXIgUHQ7UmU9ZnVuY3Rpb24gcygpe1B0fHxrcigpLFB0fHwoUmU9cyl9O2Z1bmN0aW9uIGtyKCl7aWYoISgwPHdlKSl7aWYoci5wcmVSdW4pZm9yKHR5cGVvZiByLnByZVJ1bj09XCJmdW5jdGlvblwiJiYoci5wcmVSdW49W3IucHJlUnVuXSk7ci5wcmVSdW4ubGVuZ3RoOyl7dmFyIHM9ci5wcmVSdW4uc2hpZnQoKTtwZS51bnNoaWZ0KHMpfWZvcig7MDxwZS5sZW5ndGg7KXBlLnNoaWZ0KCkocik7aWYoISgwPHdlfHxQdHx8KFB0PSEwLHIuY2FsbGVkUnVuPSEwLE8pKSl7Zm9yKDswPHllLmxlbmd0aDspeWUuc2hpZnQoKShyKTtmb3IobyhyKTswPGRlLmxlbmd0aDspZGUuc2hpZnQoKShyKX19fXJldHVybiBrcigpLHQucmVhZHl9fSkoKTt0eXBlb2Ygd2k9PVwib2JqZWN0XCImJnR5cGVvZiBpbz09XCJvYmplY3RcIj9pby5leHBvcnRzPWJpOnR5cGVvZiBkZWZpbmU9PVwiZnVuY3Rpb25cIiYmZGVmaW5lLmFtZCYmZGVmaW5lKFtdLCgpPT5iaSl9KTt2YXIgJGk9QnIoKCk9Pnt9KTt2YXIgX2k9QnIoKCk9Pnt9KTt2YXIgU2k9e307aG4oU2kse2NwdXM6KCk9PlZsfSk7dmFyIFZsLHhpPVEoKCk9PntWbD12b2lkIDB9KTt2YXIgSWk9QnIoKEFpLGFvKT0+e1widXNlIHN0cmljdFwiO3ZhciBDaT0oKCk9Pnt2YXIgZT10eXBlb2YgZG9jdW1lbnQ8XCJ1XCImJmRvY3VtZW50LmN1cnJlbnRTY3JpcHQ/ZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmM6dm9pZCAwO3JldHVybiB0eXBlb2YgX19maWxlbmFtZTxcInVcIiYmKGU9ZXx8X19maWxlbmFtZSksZnVuY3Rpb24odD17fSl7ZnVuY3Rpb24gcigpe3JldHVybiBiZS5idWZmZXIhPWRlLmJ1ZmZlciYma2UoKSxkZX1mdW5jdGlvbiBvKCl7cmV0dXJuIGJlLmJ1ZmZlciE9ZGUuYnVmZmVyJiZrZSgpLHdlfWZ1bmN0aW9uIGkoKXtyZXR1cm4gYmUuYnVmZmVyIT1kZS5idWZmZXImJmtlKCksemV9ZnVuY3Rpb24gdSgpe3JldHVybiBiZS5idWZmZXIhPWRlLmJ1ZmZlciYma2UoKSxSZX1mdW5jdGlvbiBhKCl7cmV0dXJuIGJlLmJ1ZmZlciE9ZGUuYnVmZmVyJiZrZSgpLEdlfWZ1bmN0aW9uIHAoKXtyZXR1cm4gYmUuYnVmZmVyIT1kZS5idWZmZXImJmtlKCksRn1mdW5jdGlvbiBtKCl7cmV0dXJuIGJlLmJ1ZmZlciE9ZGUuYnVmZmVyJiZrZSgpLGllfWZ1bmN0aW9uIGgoKXtyZXR1cm4gYmUuYnVmZmVyIT1kZS5idWZmZXImJmtlKCksbnR9dmFyIGQ9dCx5LHc7ZC5yZWFkeT1uZXcgUHJvbWlzZSgobixsKT0+e3k9bix3PWx9KSxkLm1vdW50RXh0ZXJuYWxEYXRhPShuLGwpPT57KGQuRmJ8fChkLkZiPW5ldyBNYXApKS5zZXQobixsKX0sZC51bm1vdW50RXh0ZXJuYWxEYXRhPSgpPT57ZGVsZXRlIGQuRmJ9LGQuanNlcEluaXQ9KG4sbCxmLGIsQSxQLHosTCk9PntkLnJjPW4sZC4kYj1sLGQuYmM9ZixkLk9iPWIsZC5hYz1BLGQuZWI9UCxkLmNjPXosZC5kYz1MLGw9KFosSyxvZSk9PiguLi5nZSk9PntsZXQgU2U9ZHQsUj1LPy4oKTtnZT1aKC4uLmdlKTtsZXQgbGU9Sz8uKCk7cmV0dXJuIFIhPT1sZSYmKFo9bGUsb2UoUiksSz1vZT1udWxsKSxkdCE9U2U/SSgpOmdlfSxmPVo9PmFzeW5jKC4uLkspPT57dHJ5e2lmKGQuRWIpdGhyb3cgRXJyb3IoXCJTZXNzaW9uIGFscmVhZHkgc3RhcnRlZFwiKTtsZXQgb2U9ZC5FYj17ZmM6S1swXSxlcnJvcnM6W119LGdlPWF3YWl0IFooLi4uSyk7aWYoZC5FYiE9PW9lKXRocm93IEVycm9yKFwiU2Vzc2lvbiBtaXNtYXRjaFwiKTtuLmZsdXNoKCk7bGV0IFNlPW9lLmVycm9ycztpZigwPFNlLmxlbmd0aCl7bGV0IFI9YXdhaXQgUHJvbWlzZS5hbGwoU2UpO2lmKFI9Ui5maWx0ZXIobGU9PmxlKSwwPFIubGVuZ3RoKXRocm93IEVycm9yKFIuam9pbihgXFxuYCkpfXJldHVybiBnZX1maW5hbGx5e2QuRWI9bnVsbH19LGQuX09ydENyZWF0ZVNlc3Npb249bChkLl9PcnRDcmVhdGVTZXNzaW9uLCgpPT5kLl9PcnRDcmVhdGVTZXNzaW9uLFo9PmQuX09ydENyZWF0ZVNlc3Npb249WiksZC5fT3J0UnVuPWYobChkLl9PcnRSdW4sKCk9PmQuX09ydFJ1bixaPT5kLl9PcnRSdW49WikpLGQuX09ydFJ1bldpdGhCaW5kaW5nPWYobChkLl9PcnRSdW5XaXRoQmluZGluZywoKT0+ZC5fT3J0UnVuV2l0aEJpbmRpbmcsWj0+ZC5fT3J0UnVuV2l0aEJpbmRpbmc9WikpLGQuX09ydEJpbmRJbnB1dD1sKGQuX09ydEJpbmRJbnB1dCwoKT0+ZC5fT3J0QmluZElucHV0LFo9PmQuX09ydEJpbmRJbnB1dD1aKSxkLmpzZXBSZWdpc3RlckJ1ZmZlcj0oWixLLG9lLGdlKT0+bi5yZWdpc3RlckJ1ZmZlcihaLEssb2UsZ2UpLGQuanNlcFVucmVnaXN0ZXJCdWZmZXJzPVo9PntuLnVucmVnaXN0ZXJCdWZmZXJzKFopfSxkLmpzZXBHZXRCdWZmZXI9Wj0+bi5nZXRCdWZmZXIoWiksZC5qc2VwQ3JlYXRlRG93bmxvYWRlcj0oWixLLG9lKT0+bi5jcmVhdGVEb3dubG9hZGVyKFosSyxvZSksZC5qc2VwT25SdW5TdGFydD0oKT0+bi5vblJ1blN0YXJ0KCl9O3ZhciBfPU9iamVjdC5hc3NpZ24oe30sZCksdj1cIi4vdGhpcy5wcm9ncmFtXCIseD0obixsKT0+e3Rocm93IGx9LFQ9dHlwZW9mIHdpbmRvdz09XCJvYmplY3RcIixDPXR5cGVvZiBpbXBvcnRTY3JpcHRzPT1cImZ1bmN0aW9uXCIsUz10eXBlb2YgcHJvY2Vzcz09XCJvYmplY3RcIiYmdHlwZW9mIHByb2Nlc3MudmVyc2lvbnM9PVwib2JqZWN0XCImJnR5cGVvZiBwcm9jZXNzLnZlcnNpb25zLm5vZGU9PVwic3RyaW5nXCIsRT1kLkVOVklST05NRU5UX0lTX1BUSFJFQUR8fCExLE89XCJcIjtmdW5jdGlvbiBVKG4pe3JldHVybiBkLmxvY2F0ZUZpbGU/ZC5sb2NhdGVGaWxlKG4sTyk6TytufXZhciBNLE4sWTtpZihTKXt2YXIgc2U9KHJvKCksdXIodG8pKSxCPShvbygpLHVyKG5vKSk7Tz1DP0IuZGlybmFtZShPKStcIi9cIjpfX2Rpcm5hbWUrXCIvXCIsTT0obCxmKT0+KGw9RXQobCk/bmV3IFVSTChsKTpCLm5vcm1hbGl6ZShsKSxzZS5yZWFkRmlsZVN5bmMobCxmP3ZvaWQgMDpcInV0ZjhcIikpLFk9bD0+KGw9TShsLCEwKSxsLmJ1ZmZlcnx8KGw9bmV3IFVpbnQ4QXJyYXkobCkpLGwpLE49KGwsZixiLEE9ITApPT57bD1FdChsKT9uZXcgVVJMKGwpOkIubm9ybWFsaXplKGwpLHNlLnJlYWRGaWxlKGwsQT92b2lkIDA6XCJ1dGY4XCIsKFAseik9PntQP2IoUCk6ZihBP3ouYnVmZmVyOnopfSl9LCFkLnRoaXNQcm9ncmFtJiYxPHByb2Nlc3MuYXJndi5sZW5ndGgmJih2PXByb2Nlc3MuYXJndlsxXS5yZXBsYWNlKC9cXFxcXFxcXC9nLFwiL1wiKSkscHJvY2Vzcy5hcmd2LnNsaWNlKDIpLHg9KGwsZik9Pnt0aHJvdyBwcm9jZXNzLmV4aXRDb2RlPWwsZn0sZC5pbnNwZWN0PSgpPT5cIltFbXNjcmlwdGVuIE1vZHVsZSBvYmplY3RdXCI7bGV0IG47dHJ5e249JGkoKX1jYXRjaChsKXt0aHJvdyBjb25zb2xlLmVycm9yKFxcJ1RoZSBcIndvcmtlcl90aHJlYWRzXCIgbW9kdWxlIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBub2RlLmpzIGJ1aWxkIC0gcGVyaGFwcyBhIG5ld2VyIHZlcnNpb24gaXMgbmVlZGVkP1xcJyksbH1nbG9iYWwuV29ya2VyPW4uV29ya2VyfWVsc2UoVHx8QykmJihDP089c2VsZi5sb2NhdGlvbi5ocmVmOnR5cGVvZiBkb2N1bWVudDxcInVcIiYmZG9jdW1lbnQuY3VycmVudFNjcmlwdCYmKE89ZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmMpLHR5cGVvZiBlPFwidVwiJiZlJiYoTz1lKSxPLmluZGV4T2YoXCJibG9iOlwiKSE9PTA/Tz1PLnN1YnN0cigwLE8ucmVwbGFjZSgvWz8jXS4qLyxcIlwiKS5sYXN0SW5kZXhPZihcIi9cIikrMSk6Tz1cIlwiLFN8fChNPW49Pnt2YXIgbD1uZXcgWE1MSHR0cFJlcXVlc3Q7cmV0dXJuIGwub3BlbihcIkdFVFwiLG4sITEpLGwuc2VuZChudWxsKSxsLnJlc3BvbnNlVGV4dH0sQyYmKFk9bj0+e3ZhciBsPW5ldyBYTUxIdHRwUmVxdWVzdDtyZXR1cm4gbC5vcGVuKFwiR0VUXCIsbiwhMSksbC5yZXNwb25zZVR5cGU9XCJhcnJheWJ1ZmZlclwiLGwuc2VuZChudWxsKSxuZXcgVWludDhBcnJheShsLnJlc3BvbnNlKX0pLE49KG4sbCxmKT0+e3ZhciBiPW5ldyBYTUxIdHRwUmVxdWVzdDtiLm9wZW4oXCJHRVRcIixuLCEwKSxiLnJlc3BvbnNlVHlwZT1cImFycmF5YnVmZmVyXCIsYi5vbmxvYWQ9KCk9PntiLnN0YXR1cz09MjAwfHxiLnN0YXR1cz09MCYmYi5yZXNwb25zZT9sKGIucmVzcG9uc2UpOmYoKX0sYi5vbmVycm9yPWYsYi5zZW5kKG51bGwpfSkpO1MmJnR5cGVvZiBwZXJmb3JtYW5jZT5cInVcIiYmKGdsb2JhbC5wZXJmb3JtYW5jZT1faSgpLnBlcmZvcm1hbmNlKTt2YXIgdGU9Y29uc29sZS5sb2cuYmluZChjb25zb2xlKSxQZT1jb25zb2xlLmVycm9yLmJpbmQoY29uc29sZSk7UyYmKHRlPSguLi5uKT0+c2Uud3JpdGVTeW5jKDEsbi5qb2luKFwiIFwiKStgXFxuYCksUGU9KC4uLm4pPT5zZS53cml0ZVN5bmMoMixuLmpvaW4oXCIgXCIpK2BcXG5gKSk7dmFyIEVlPXRlLGVlPVBlO09iamVjdC5hc3NpZ24oZCxfKSxfPW51bGwsdHlwZW9mIFdlYkFzc2VtYmx5IT1cIm9iamVjdFwiJiZCdChcIm5vIG5hdGl2ZSB3YXNtIHN1cHBvcnQgZGV0ZWN0ZWRcIik7dmFyIGJlLE1lLHBlPSExLHllLGRlLHdlLHplLFJlLEdlLEYsaWUsaGUsWGUsbnQ7ZnVuY3Rpb24ga2UoKXt2YXIgbj1iZS5idWZmZXI7ZC5IRUFQOD1kZT1uZXcgSW50OEFycmF5KG4pLGQuSEVBUDE2PXplPW5ldyBJbnQxNkFycmF5KG4pLGQuSEVBUFU4PXdlPW5ldyBVaW50OEFycmF5KG4pLGQuSEVBUFUxNj1SZT1uZXcgVWludDE2QXJyYXkobiksZC5IRUFQMzI9R2U9bmV3IEludDMyQXJyYXkobiksZC5IRUFQVTMyPUY9bmV3IFVpbnQzMkFycmF5KG4pLGQuSEVBUEYzMj1pZT1uZXcgRmxvYXQzMkFycmF5KG4pLGQuSEVBUEY2ND1udD1uZXcgRmxvYXQ2NEFycmF5KG4pLGQuSEVBUDY0PWhlPW5ldyBCaWdJbnQ2NEFycmF5KG4pLGQuSEVBUFU2ND1YZT1uZXcgQmlnVWludDY0QXJyYXkobil9dmFyIExlPTE2Nzc3MjE2O2lmKEUpYmU9ZC53YXNtTWVtb3J5O2Vsc2UgaWYoZC53YXNtTWVtb3J5KWJlPWQud2FzbU1lbW9yeTtlbHNlIGlmKGJlPW5ldyBXZWJBc3NlbWJseS5NZW1vcnkoe2luaXRpYWw6TGUvNjU1MzYsbWF4aW11bTo2NTUzNixzaGFyZWQ6ITB9KSwhKGJlLmJ1ZmZlciBpbnN0YW5jZW9mIFNoYXJlZEFycmF5QnVmZmVyKSl0aHJvdyBlZShcInJlcXVlc3RlZCBhIHNoYXJlZCBXZWJBc3NlbWJseS5NZW1vcnkgYnV0IHRoZSByZXR1cm5lZCBidWZmZXIgaXMgbm90IGEgU2hhcmVkQXJyYXlCdWZmZXIsIGluZGljYXRpbmcgdGhhdCB3aGlsZSB0aGUgYnJvd3NlciBoYXMgU2hhcmVkQXJyYXlCdWZmZXIgaXQgZG9lcyBub3QgaGF2ZSBXZWJBc3NlbWJseSB0aHJlYWRzIHN1cHBvcnQgLSB5b3UgbWF5IG5lZWQgdG8gc2V0IGEgZmxhZ1wiKSxTJiZlZShcIihvbiBub2RlIHlvdSBtYXkgbmVlZDogLS1leHBlcmltZW50YWwtd2FzbS10aHJlYWRzIC0tZXhwZXJpbWVudGFsLXdhc20tYnVsay1tZW1vcnkgYW5kL29yIHJlY2VudCB2ZXJzaW9uKVwiKSxFcnJvcihcImJhZCBtZW1vcnlcIik7a2UoKSxMZT1iZS5idWZmZXIuYnl0ZUxlbmd0aDt2YXIgSXQ9W10sVHQ9W10sVnQ9W10sUnQ9MCxKdD1udWxsLFd0PW51bGw7ZnVuY3Rpb24gbXIoKXtpZihSdC0tLFJ0PT0wJiYoSnQhPT1udWxsJiYoY2xlYXJJbnRlcnZhbChKdCksSnQ9bnVsbCksV3QpKXt2YXIgbj1XdDtXdD1udWxsLG4oKX19ZnVuY3Rpb24gQnQobil7dGhyb3cgbj1cIkFib3J0ZWQoXCIrbitcIilcIixlZShuKSxwZT0hMCx5ZT0xLG49bmV3IFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvcihuK1wiLiBCdWlsZCB3aXRoIC1zQVNTRVJUSU9OUyBmb3IgbW9yZSBpbmZvLlwiKSx3KG4pLG59dmFyIEZlPW49Pm4uc3RhcnRzV2l0aChcImRhdGE6YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtO2Jhc2U2NCxcIiksRXQ9bj0+bi5zdGFydHNXaXRoKFwiZmlsZTovL1wiKSxidDtidD1cIm9ydC13YXNtLXNpbWQtdGhyZWFkZWQud2FzbVwiLEZlKGJ0KXx8KGJ0PVUoYnQpKTtmdW5jdGlvbiBmcihuKXtpZihZKXJldHVybiBZKG4pO3Rocm93XCJib3RoIGFzeW5jIGFuZCBzeW5jIGZldGNoaW5nIG9mIHRoZSB3YXNtIGZhaWxlZFwifWZ1bmN0aW9uIEdyKG4pe2lmKFR8fEMpe2lmKHR5cGVvZiBmZXRjaD09XCJmdW5jdGlvblwiJiYhRXQobikpcmV0dXJuIGZldGNoKG4se2NyZWRlbnRpYWxzOlwic2FtZS1vcmlnaW5cIn0pLnRoZW4obD0+e2lmKCFsLm9rKXRocm93XCJmYWlsZWQgdG8gbG9hZCB3YXNtIGJpbmFyeSBmaWxlIGF0IFxcJ1wiK24rXCJcXCdcIjtyZXR1cm4gbC5hcnJheUJ1ZmZlcigpfSkuY2F0Y2goKCk9PmZyKG4pKTtpZihOKXJldHVybiBuZXcgUHJvbWlzZSgobCxmKT0+e04obixiPT5sKG5ldyBVaW50OEFycmF5KGIpKSxmKX0pfXJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5mcihuKSl9ZnVuY3Rpb24gb3QobixsLGYpe3JldHVybiBHcihuKS50aGVuKGI9PldlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKGIsbCkpLnRoZW4oYj0+YikudGhlbihmLGI9PntlZShgZmFpbGVkIHRvIGFzeW5jaHJvbm91c2x5IHByZXBhcmUgd2FzbTogJHtifWApLEJ0KGIpfSl9ZnVuY3Rpb24gaHIobixsKXt2YXIgZj1idDtyZXR1cm4gdHlwZW9mIFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlU3RyZWFtaW5nIT1cImZ1bmN0aW9uXCJ8fEZlKGYpfHxFdChmKXx8U3x8dHlwZW9mIGZldGNoIT1cImZ1bmN0aW9uXCI/b3QoZixuLGwpOmZldGNoKGYse2NyZWRlbnRpYWxzOlwic2FtZS1vcmlnaW5cIn0pLnRoZW4oYj0+V2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmcoYixuKS50aGVuKGwsZnVuY3Rpb24oQSl7cmV0dXJuIGVlKGB3YXNtIHN0cmVhbWluZyBjb21waWxlIGZhaWxlZDogJHtBfWApLGVlKFwiZmFsbGluZyBiYWNrIHRvIEFycmF5QnVmZmVyIGluc3RhbnRpYXRpb25cIiksb3QoZixuLGwpfSkpfXZhciBOdD17OTQ2NzQ4OihuLGwsZixiKT0+e2lmKHR5cGVvZiBkPlwidVwifHwhZC5GYilyZXR1cm4gMTtpZihuPU9lKG4+Pj4wKSxuLnN0YXJ0c1dpdGgoXCIuL1wiKSYmKG49bi5zdWJzdHJpbmcoMikpLG49ZC5GYi5nZXQobiksIW4pcmV0dXJuIDI7aWYobD4+Pj0wLGY+Pj49MCxiPj4+PTAsbCtmPm4uYnl0ZUxlbmd0aClyZXR1cm4gMzt0cnl7cmV0dXJuIG8oKS5zZXQobi5zdWJhcnJheShsLGwrZiksYj4+PjApLDB9Y2F0Y2h7cmV0dXJuIDR9fSw5NDcyNDk6bj0+ZC4kYihuKSw5NDcyODI6bj0+ZC5iYyhuKSw5NDczMTQ6KG4sbCxmKT0+e2QuT2IobixsLGYsITApfSw5NDczNTM6KG4sbCxmKT0+e2QuT2IobixsLGYpfSw5NDczODY6bj0+e2QuZWIoXCJBYnNcIixuLHZvaWQgMCl9LDk0NzQzNzpuPT57ZC5lYihcIk5lZ1wiLG4sdm9pZCAwKX0sOTQ3NDg4Om49PntkLmViKFwiRmxvb3JcIixuLHZvaWQgMCl9LDk0NzU0MTpuPT57ZC5lYihcIkNlaWxcIixuLHZvaWQgMCl9LDk0NzU5MzpuPT57ZC5lYihcIlJlY2lwcm9jYWxcIixuLHZvaWQgMCl9LDk0NzY1MTpuPT57ZC5lYihcIlNxcnRcIixuLHZvaWQgMCl9LDk0NzcwMzpuPT57ZC5lYihcIkV4cFwiLG4sdm9pZCAwKX0sOTQ3NzU0Om49PntkLmViKFwiRXJmXCIsbix2b2lkIDApfSw5NDc4MDU6bj0+e2QuZWIoXCJTaWdtb2lkXCIsbix2b2lkIDApfSw5NDc4NjA6KG4sbCxmKT0+e2QuZWIoXCJIYXJkU2lnbW9pZFwiLG4se2FscGhhOmwsYmV0YTpmfSl9LDk0NzkzOTpuPT57ZC5lYihcIkxvZ1wiLG4sdm9pZCAwKX0sOTQ3OTkwOm49PntkLmViKFwiU2luXCIsbix2b2lkIDApfSw5NDgwNDE6bj0+e2QuZWIoXCJDb3NcIixuLHZvaWQgMCl9LDk0ODA5MjpuPT57ZC5lYihcIlRhblwiLG4sdm9pZCAwKX0sOTQ4MTQzOm49PntkLmViKFwiQXNpblwiLG4sdm9pZCAwKX0sOTQ4MTk1Om49PntkLmViKFwiQWNvc1wiLG4sdm9pZCAwKX0sOTQ4MjQ3Om49PntkLmViKFwiQXRhblwiLG4sdm9pZCAwKX0sOTQ4Mjk5Om49PntkLmViKFwiU2luaFwiLG4sdm9pZCAwKX0sOTQ4MzUxOm49PntkLmViKFwiQ29zaFwiLG4sdm9pZCAwKX0sOTQ4NDAzOm49PntkLmViKFwiQXNpbmhcIixuLHZvaWQgMCl9LDk0ODQ1NjpuPT57ZC5lYihcIkFjb3NoXCIsbix2b2lkIDApfSw5NDg1MDk6bj0+e2QuZWIoXCJBdGFuaFwiLG4sdm9pZCAwKX0sOTQ4NTYyOm49PntkLmViKFwiVGFuaFwiLG4sdm9pZCAwKX0sOTQ4NjE0Om49PntkLmViKFwiTm90XCIsbix2b2lkIDApfSw5NDg2NjU6KG4sbCxmKT0+e2QuZWIoXCJDbGlwXCIsbix7bWluOmwsbWF4OmZ9KX0sOTQ4NzM0Om49PntkLmViKFwiQ2xpcFwiLG4sdm9pZCAwKX0sOTQ4Nzg2OihuLGwpPT57ZC5lYihcIkVsdVwiLG4se2FscGhhOmx9KX0sOTQ4ODQ0Om49PntkLmViKFwiUmVsdVwiLG4sdm9pZCAwKX0sOTQ4ODk2OihuLGwpPT57ZC5lYihcIkxlYWt5UmVsdVwiLG4se2FscGhhOmx9KX0sOTQ4OTYwOihuLGwpPT57ZC5lYihcIlRocmVzaG9sZGVkUmVsdVwiLG4se2FscGhhOmx9KX0sOTQ5MDMwOihuLGwpPT57ZC5lYihcIkNhc3RcIixuLHt0bzpsfSl9LDk0OTA4ODpuPT57ZC5lYihcIkFkZFwiLG4sdm9pZCAwKX0sOTQ5MTM5Om49PntkLmViKFwiU3ViXCIsbix2b2lkIDApfSw5NDkxOTA6bj0+e2QuZWIoXCJNdWxcIixuLHZvaWQgMCl9LDk0OTI0MTpuPT57ZC5lYihcIkRpdlwiLG4sdm9pZCAwKX0sOTQ5MjkyOm49PntkLmViKFwiUG93XCIsbix2b2lkIDApfSw5NDkzNDM6bj0+e2QuZWIoXCJFcXVhbFwiLG4sdm9pZCAwKX0sOTQ5Mzk2Om49PntkLmViKFwiR3JlYXRlclwiLG4sdm9pZCAwKX0sOTQ5NDUxOm49PntkLmViKFwiR3JlYXRlck9yRXF1YWxcIixuLHZvaWQgMCl9LDk0OTUxMzpuPT57ZC5lYihcIkxlc3NcIixuLHZvaWQgMCl9LDk0OTU2NTpuPT57ZC5lYihcIkxlc3NPckVxdWFsXCIsbix2b2lkIDApfSw5NDk2MjQ6KG4sbCxmLGIsQSk9PntkLmViKFwiUmVkdWNlTWVhblwiLG4se2tlZXBEaW1zOiEhbCxub29wV2l0aEVtcHR5QXhlczohIWYsYXhlczpiP0FycmF5LmZyb20oYSgpLnN1YmFycmF5KGI+Pj4wLEE+Pj4wKSk6W119KX0sOTQ5NzgzOihuLGwsZixiLEEpPT57ZC5lYihcIlJlZHVjZU1heFwiLG4se2tlZXBEaW1zOiEhbCxub29wV2l0aEVtcHR5QXhlczohIWYsYXhlczpiP0FycmF5LmZyb20oYSgpLnN1YmFycmF5KGI+Pj4wLEE+Pj4wKSk6W119KX0sOTQ5OTQxOihuLGwsZixiLEEpPT57ZC5lYihcIlJlZHVjZU1pblwiLG4se2tlZXBEaW1zOiEhbCxub29wV2l0aEVtcHR5QXhlczohIWYsYXhlczpiP0FycmF5LmZyb20oYSgpLnN1YmFycmF5KGI+Pj4wLEE+Pj4wKSk6W119KX0sOTUwMDk5OihuLGwsZixiLEEpPT57ZC5lYihcIlJlZHVjZVByb2RcIixuLHtrZWVwRGltczohIWwsbm9vcFdpdGhFbXB0eUF4ZXM6ISFmLGF4ZXM6Yj9BcnJheS5mcm9tKGEoKS5zdWJhcnJheShiPj4+MCxBPj4+MCkpOltdfSl9LDk1MDI1ODoobixsLGYsYixBKT0+e2QuZWIoXCJSZWR1Y2VTdW1cIixuLHtrZWVwRGltczohIWwsbm9vcFdpdGhFbXB0eUF4ZXM6ISFmLGF4ZXM6Yj9BcnJheS5mcm9tKGEoKS5zdWJhcnJheShiPj4+MCxBPj4+MCkpOltdfSl9LDk1MDQxNjoobixsLGYsYixBKT0+e2QuZWIoXCJSZWR1Y2VMMVwiLG4se2tlZXBEaW1zOiEhbCxub29wV2l0aEVtcHR5QXhlczohIWYsYXhlczpiP0FycmF5LmZyb20oYSgpLnN1YmFycmF5KGI+Pj4wLEE+Pj4wKSk6W119KX0sOTUwNTczOihuLGwsZixiLEEpPT57ZC5lYihcIlJlZHVjZUwyXCIsbix7a2VlcERpbXM6ISFsLG5vb3BXaXRoRW1wdHlBeGVzOiEhZixheGVzOmI/QXJyYXkuZnJvbShhKCkuc3ViYXJyYXkoYj4+PjAsQT4+PjApKTpbXX0pfSw5NTA3MzA6KG4sbCxmLGIsQSk9PntkLmViKFwiUmVkdWNlTG9nU3VtXCIsbix7a2VlcERpbXM6ISFsLG5vb3BXaXRoRW1wdHlBeGVzOiEhZixheGVzOmI/QXJyYXkuZnJvbShhKCkuc3ViYXJyYXkoYj4+PjAsQT4+PjApKTpbXX0pfSw5NTA4OTE6KG4sbCxmLGIsQSk9PntkLmViKFwiUmVkdWNlU3VtU3F1YXJlXCIsbix7a2VlcERpbXM6ISFsLG5vb3BXaXRoRW1wdHlBeGVzOiEhZixheGVzOmI/QXJyYXkuZnJvbShhKCkuc3ViYXJyYXkoYj4+PjAsQT4+PjApKTpbXX0pfSw5NTEwNTU6KG4sbCxmLGIsQSk9PntkLmViKFwiUmVkdWNlTG9nU3VtRXhwXCIsbix7a2VlcERpbXM6ISFsLG5vb3BXaXRoRW1wdHlBeGVzOiEhZixheGVzOmI/QXJyYXkuZnJvbShhKCkuc3ViYXJyYXkoYj4+PjAsQT4+PjApKTpbXX0pfSw5NTEyMTk6bj0+e2QuZWIoXCJXaGVyZVwiLG4sdm9pZCAwKX0sOTUxMjcyOihuLGwsZik9PntkLmViKFwiVHJhbnNwb3NlXCIsbix7cGVybTpsP0FycmF5LmZyb20oYSgpLnN1YmFycmF5KGw+Pj4wLGY+Pj4wKSk6W119KX0sOTUxMzgwOihuLGwsZixiLEEsUCx6LEwsWixLLG9lLGdlLFNlLFIsbGUpPT57ZC5lYihcIkNvbnZUcmFuc3Bvc2VcIixuLHtmb3JtYXQ6Wj9cIk5IV0NcIjpcIk5DSFdcIixhdXRvUGFkOmwsZGlsYXRpb25zOltmXSxncm91cDpiLGtlcm5lbF9zaGFwZTpbQV0scGFkczpbUCx6XSxzdHJpZGVzOltMXSx3SXNDb25zdDooKT0+ISFyKClbSz4+PjBdLG91dHB1dFBhZGRpbmc6b2U/QXJyYXkuZnJvbShhKCkuc3ViYXJyYXkob2U+Pj4wLGdlPj4+MCkpOltdLG91dHB1dFNoYXBlOlNlP0FycmF5LmZyb20oYSgpLnN1YmFycmF5KFNlPj4+MCxSPj4+MCkpOltdLGFjdGl2YXRpb246T2UobGUpfSl9LDk1MTc4MjoobixsLGYsYixBLFAseixMLFosSyxvZSxnZSxTZSxSKT0+e2QuZWIoXCJDb252VHJhbnNwb3NlXCIsbix7Zm9ybWF0Okw/XCJOSFdDXCI6XCJOQ0hXXCIsYXV0b1BhZDpsLGRpbGF0aW9uczpBcnJheS5mcm9tKGEoKS5zdWJhcnJheShmPj4+MCwoZj4+PjApKzI+Pj4wKSksZ3JvdXA6YixrZXJuZWxTaGFwZTpBcnJheS5mcm9tKGEoKS5zdWJhcnJheShBPj4+MCwoQT4+PjApKzI+Pj4wKSkscGFkczpBcnJheS5mcm9tKGEoKS5zdWJhcnJheShQPj4+MCwoUD4+PjApKzQ+Pj4wKSksc3RyaWRlczpBcnJheS5mcm9tKGEoKS5zdWJhcnJheSh6Pj4+MCwoej4+PjApKzI+Pj4wKSksd0lzQ29uc3Q6KCk9PiEhcigpW1o+Pj4wXSxvdXRwdXRQYWRkaW5nOks/QXJyYXkuZnJvbShhKCkuc3ViYXJyYXkoSz4+PjAsb2U+Pj4wKSk6W10sb3V0cHV0U2hhcGU6Z2U/QXJyYXkuZnJvbShhKCkuc3ViYXJyYXkoZ2U+Pj4wLFNlPj4+MCkpOltdLGFjdGl2YXRpb246T2UoUil9KX0sOTUyMzQ3OihuLGwsZixiLEEsUCx6LEwsWixLLG9lLGdlLFNlLFIsbGUpPT57ZC5lYihcIkNvbnZUcmFuc3Bvc2VcIixuLHtmb3JtYXQ6Wj9cIk5IV0NcIjpcIk5DSFdcIixhdXRvUGFkOmwsZGlsYXRpb25zOltmXSxncm91cDpiLGtlcm5lbF9zaGFwZTpbQV0scGFkczpbUCx6XSxzdHJpZGVzOltMXSx3SXNDb25zdDooKT0+ISFyKClbSz4+PjBdLG91dHB1dFBhZGRpbmc6b2U/QXJyYXkuZnJvbShhKCkuc3ViYXJyYXkob2U+Pj4wLGdlPj4+MCkpOltdLG91dHB1dFNoYXBlOlNlP0FycmF5LmZyb20oYSgpLnN1YmFycmF5KFNlPj4+MCxSPj4+MCkpOltdLGFjdGl2YXRpb246T2UobGUpfSl9LDk1Mjc0OToobixsLGYsYixBLFAseixMLFosSyxvZSxnZSxTZSxSKT0+e2QuZWIoXCJDb252VHJhbnNwb3NlXCIsbix7Zm9ybWF0Okw/XCJOSFdDXCI6XCJOQ0hXXCIsYXV0b1BhZDpsLGRpbGF0aW9uczpBcnJheS5mcm9tKGEoKS5zdWJhcnJheShmPj4+MCwoZj4+PjApKzI+Pj4wKSksZ3JvdXA6YixrZXJuZWxTaGFwZTpBcnJheS5mcm9tKGEoKS5zdWJhcnJheShBPj4+MCwoQT4+PjApKzI+Pj4wKSkscGFkczpBcnJheS5mcm9tKGEoKS5zdWJhcnJheShQPj4+MCwoUD4+PjApKzQ+Pj4wKSksc3RyaWRlczpBcnJheS5mcm9tKGEoKS5zdWJhcnJheSh6Pj4+MCwoej4+PjApKzI+Pj4wKSksd0lzQ29uc3Q6KCk9PiEhcigpW1o+Pj4wXSxvdXRwdXRQYWRkaW5nOks/QXJyYXkuZnJvbShhKCkuc3ViYXJyYXkoSz4+PjAsb2U+Pj4wKSk6W10sb3V0cHV0U2hhcGU6Z2U/QXJyYXkuZnJvbShhKCkuc3ViYXJyYXkoZ2U+Pj4wLFNlPj4+MCkpOltdLGFjdGl2YXRpb246T2UoUil9KX0sOTUzMzE0OihuLGwpPT57ZC5lYihcIkdsb2JhbEF2ZXJhZ2VQb29sXCIsbix7Zm9ybWF0Omw/XCJOSFdDXCI6XCJOQ0hXXCJ9KX0sOTUzNDA1OihuLGwsZixiLEEsUCx6LEwsWixLLG9lLGdlLFNlLFIsbGUsSWUpPT57ZC5lYihcIkF2ZXJhZ2VQb29sXCIsbix7Zm9ybWF0OkllP1wiTkhXQ1wiOlwiTkNIV1wiLGF1dG9fcGFkOmwsY2VpbF9tb2RlOmYsY291bnRfaW5jbHVkZV9wYWQ6YixzdG9yYWdlX29yZGVyOkEsZGlsYXRpb25zOltQLHpdLGtlcm5lbF9zaGFwZTpbTCxaXSxwYWRzOltLLG9lLGdlLFNlXSxzdHJpZGVzOltSLGxlXX0pfSw5NTM2ODk6KG4sbCk9PntkLmViKFwiR2xvYmFsQXZlcmFnZVBvb2xcIixuLHtmb3JtYXQ6bD9cIk5IV0NcIjpcIk5DSFdcIn0pfSw5NTM3ODA6KG4sbCxmLGIsQSxQLHosTCxaLEssb2UsZ2UsU2UsUixsZSxJZSk9PntkLmViKFwiQXZlcmFnZVBvb2xcIixuLHtmb3JtYXQ6SWU/XCJOSFdDXCI6XCJOQ0hXXCIsYXV0b19wYWQ6bCxjZWlsX21vZGU6Zixjb3VudF9pbmNsdWRlX3BhZDpiLHN0b3JhZ2Vfb3JkZXI6QSxkaWxhdGlvbnM6W1Asel0sa2VybmVsX3NoYXBlOltMLFpdLHBhZHM6W0ssb2UsZ2UsU2VdLHN0cmlkZXM6W1IsbGVdfSl9LDk1NDA2NDoobixsKT0+e2QuZWIoXCJHbG9iYWxNYXhQb29sXCIsbix7Zm9ybWF0Omw/XCJOSFdDXCI6XCJOQ0hXXCJ9KX0sOTU0MTUxOihuLGwsZixiLEEsUCx6LEwsWixLLG9lLGdlLFNlLFIsbGUsSWUpPT57ZC5lYihcIk1heFBvb2xcIixuLHtmb3JtYXQ6SWU/XCJOSFdDXCI6XCJOQ0hXXCIsYXV0b19wYWQ6bCxjZWlsX21vZGU6Zixjb3VudF9pbmNsdWRlX3BhZDpiLHN0b3JhZ2Vfb3JkZXI6QSxkaWxhdGlvbnM6W1Asel0sa2VybmVsX3NoYXBlOltMLFpdLHBhZHM6W0ssb2UsZ2UsU2VdLHN0cmlkZXM6W1IsbGVdfSl9LDk1NDQzMToobixsKT0+e2QuZWIoXCJHbG9iYWxNYXhQb29sXCIsbix7Zm9ybWF0Omw/XCJOSFdDXCI6XCJOQ0hXXCJ9KX0sOTU0NTE4OihuLGwsZixiLEEsUCx6LEwsWixLLG9lLGdlLFNlLFIsbGUsSWUpPT57ZC5lYihcIk1heFBvb2xcIixuLHtmb3JtYXQ6SWU/XCJOSFdDXCI6XCJOQ0hXXCIsYXV0b19wYWQ6bCxjZWlsX21vZGU6Zixjb3VudF9pbmNsdWRlX3BhZDpiLHN0b3JhZ2Vfb3JkZXI6QSxkaWxhdGlvbnM6W1Asel0sa2VybmVsX3NoYXBlOltMLFpdLHBhZHM6W0ssb2UsZ2UsU2VdLHN0cmlkZXM6W1IsbGVdfSl9LDk1NDc5ODoobixsLGYsYixBKT0+e2QuZWIoXCJHZW1tXCIsbix7YWxwaGE6bCxiZXRhOmYsdHJhbnNBOmIsdHJhbnNCOkF9KX0sOTU0OTAyOm49PntkLmViKFwiTWF0TXVsXCIsbix2b2lkIDApfSw5NTQ5NTY6KG4sbCxmLGIpPT57ZC5lYihcIkFyZ01heFwiLG4se2tlZXBEaW1zOiEhbCxzZWxlY3RMYXN0SW5kZXg6ISFmLGF4aXM6Yn0pfSw5NTUwNjQ6KG4sbCxmLGIpPT57ZC5lYihcIkFyZ01pblwiLG4se2tlZXBEaW1zOiEhbCxzZWxlY3RMYXN0SW5kZXg6ISFmLGF4aXM6Yn0pfSw5NTUxNzI6KG4sbCk9PntkLmViKFwiU29mdG1heFwiLG4se2F4aXM6bH0pfSw5NTUyMzU6KG4sbCk9PntkLmViKFwiQ29uY2F0XCIsbix7YXhpczpsfSl9LDk1NTI5NToobixsLGYsYixBKT0+e2QuZWIoXCJTcGxpdFwiLG4se2F4aXM6bCxudW1PdXRwdXRzOmYsc3BsaXRTaXplczpiP0FycmF5LmZyb20oYSgpLnN1YmFycmF5KGI+Pj4wLEE+Pj4wKSk6W119KX0sOTU1NDM1Om49PntkLmViKFwiRXhwYW5kXCIsbix2b2lkIDApfSw5NTU0ODk6KG4sbCk9PntkLmViKFwiR2F0aGVyXCIsbix7YXhpczpOdW1iZXIobCl9KX0sOTU1NTYwOihuLGwpPT57ZC5lYihcIkdhdGhlckVsZW1lbnRzXCIsbix7YXhpczpOdW1iZXIobCl9KX0sOTU1NjM5OihuLGwsZixiLEEsUCx6LEwsWixLLG9lKT0+e2QuZWIoXCJSZXNpemVcIixuLHthbnRpYWxpYXM6bCxheGVzOmY/QXJyYXkuZnJvbShhKCkuc3ViYXJyYXkoZj4+PjAsYj4+PjApKTpbXSxjb29yZGluYXRlVHJhbnNmb3JtTW9kZTpPZShBKSxjdWJpY0NvZWZmQTpQLGV4Y2x1ZGVPdXRzaWRlOnosZXh0cmFwb2xhdGlvblZhbHVlOkwsa2VlcEFzcGVjdFJhdGlvUG9saWN5Ok9lKFopLG1vZGU6T2UoSyksbmVhcmVzdE1vZGU6T2Uob2UpfSl9LDk1NTk4NToobixsLGYsYixBLFAseik9PntkLmViKFwiU2xpY2VcIixuLHtzdGFydHM6bD9BcnJheS5mcm9tKGEoKS5zdWJhcnJheShsPj4+MCxmPj4+MCkpOltdLGVuZHM6Yj9BcnJheS5mcm9tKGEoKS5zdWJhcnJheShiPj4+MCxBPj4+MCkpOltdLGF4ZXM6UD9BcnJheS5mcm9tKGEoKS5zdWJhcnJheShQPj4+MCx6Pj4+MCkpOltdfSl9LDk1NjIwMTpuPT57ZC5lYihcIlRpbGVcIixuLHZvaWQgMCl9LDk1NjI1MzoobixsLGYpPT57ZC5lYihcIkxheWVyTm9ybWFsaXphdGlvblwiLG4se2F4aXM6TnVtYmVyKGwpLGVwc2lsb246TnVtYmVyKGYpfSl9LDk1NjM2MDoobixsLGYpPT57ZC5lYihcIkluc3RhbmNlTm9ybWFsaXphdGlvblwiLG4se2Vwc2lsb246bCxmb3JtYXQ6Zj9cIk5IV0NcIjpcIk5DSFdcIn0pfSw5NTY0NzQ6KG4sbCxmKT0+e2QuZWIoXCJJbnN0YW5jZU5vcm1hbGl6YXRpb25cIixuLHtlcHNpbG9uOmwsZm9ybWF0OmY/XCJOSFdDXCI6XCJOQ0hXXCJ9KX0sOTU2NTg4Om49PntkLmViKFwiUmFuZ2VcIixuLHZvaWQgMCl9LDk1NjY0MToobixsKT0+e2QuZWIoXCJFaW5zdW1cIixuLHtlcXVhdGlvbjpPZShsKX0pfSw5NTY3MjI6KG4sbCxmLGIsQSk9PntkLmViKFwiUGFkXCIsbix7bW9kZTpsLHZhbHVlOmYscGFkczpiP0FycmF5LmZyb20oYSgpLnN1YmFycmF5KGI+Pj4wLEE+Pj4wKSk6W119KX0sOTU2ODQ5OihuLGwsZixiLEEsUCk9PntkLmViKFwiQmF0Y2hOb3JtYWxpemF0aW9uXCIsbix7ZXBzaWxvbjpsLG1vbWVudHVtOmYsc3BhdGlhbDohIUEsdHJhaW5pbmdNb2RlOiEhYixmb3JtYXQ6UD9cIk5IV0NcIjpcIk5DSFdcIn0pfSw5NTcwMTg6KG4sbCxmLGIsQSxQKT0+e2QuZWIoXCJCYXRjaE5vcm1hbGl6YXRpb25cIixuLHtlcHNpbG9uOmwsbW9tZW50dW06ZixzcGF0aWFsOiEhQSx0cmFpbmluZ01vZGU6ISFiLGZvcm1hdDpQP1wiTkhXQ1wiOlwiTkNIV1wifSl9LDk1NzE4NzoobixsLGYpPT57ZC5lYihcIkN1bVN1bVwiLG4se2V4Y2x1c2l2ZTpOdW1iZXIobCkscmV2ZXJzZTpOdW1iZXIoZil9KX0sOTU3Mjg0OihuLGwsZixiLEEsUCx6LEwsWik9PntkLmViKFwiQXR0ZW50aW9uXCIsbix7bnVtSGVhZHM6bCxpc1VuaWRpcmVjdGlvbmFsOmYsbWFza0ZpbHRlclZhbHVlOmIsc2NhbGU6QSxkb1JvdGFyeTpQLHFrdkhpZGRlblNpemVzOno/QXJyYXkuZnJvbShhKCkuc3ViYXJyYXkoTnVtYmVyKEwpPj4+MCxOdW1iZXIoTCkrej4+PjApKTpbXSxwYXN0UHJlc2VudFNoYXJlQnVmZmVyOiEhWn0pfSw5NTc1NTY6bj0+e2QuZWIoXCJHZWx1XCIsbix2b2lkIDApfSw5NTc2MDg6KG4sbCxmLGIsQSxQKT0+e2QuZWIoXCJNdWx0aUhlYWRBdHRlbnRpb25cIixuLHtudW1IZWFkczpsLGlzVW5pZGlyZWN0aW9uYWw6ZixtYXNrRmlsdGVyVmFsdWU6YixzY2FsZTpBLGRvUm90YXJ5OlB9KX0sOTU3NzY3Om49PntkLmViKFwiQmlhc0FkZFwiLG4sdm9pZCAwKX0sOTU3ODIyOm49PntkLmViKFwiQmlhc1NwbGl0R2VsdVwiLG4sdm9pZCAwKX0sOTU3ODgzOihuLGwpPT57ZC5lYihcIlNraXBMYXllck5vcm1hbGl6YXRpb25cIixuLHtlcHNpbG9uOmx9KX0sOTU3OTY0OihuLGwsZixiLEEsUCx6LEwsWixLLG9lLGdlLFNlKT0+e2QuZWIoXCJDb252XCIsbix7Zm9ybWF0Olo/XCJOSFdDXCI6XCJOQ0hXXCIsYXV0b19wYWQ6bCxkaWxhdGlvbnM6W2ZdLGdyb3VwOmIsa2VybmVsX3NoYXBlOltBXSxwYWRzOlA/QXJyYXkuZnJvbShhKCkuc3ViYXJyYXkoUD4+PjAsej4+PjApKTpbXSxzdHJpZGVzOltMXSx3X2lzX2NvbnN0OigpPT4hIXIoKVtLPj4+MF0sYWN0aXZhdGlvbjpPZShvZSksYWN0aXZhdGlvbl9wYXJhbXM6Z2U/QXJyYXkuZnJvbShtKCkuc3ViYXJyYXkoZ2U+Pj4wLFNlPj4+MCkpOltdfSl9LDk1ODMzNDoobixsLGYsYixBLFAseixMLFosSyxvZSxnZSxTZSxSLGxlLEllKT0+e2QuZWIoXCJDb252XCIsbix7Zm9ybWF0OmdlP1wiTkhXQ1wiOlwiTkNIV1wiLGF1dG9fcGFkOmwsZGlsYXRpb25zOltmLGJdLGdyb3VwOkEsa2VybmVsX3NoYXBlOltQLHpdLHBhZHM6TD9BcnJheS5mcm9tKGEoKS5zdWJhcnJheShMPj4+MCxaPj4+MCkpOltdLHN0cmlkZXM6W0ssb2VdLHdfaXNfY29uc3Q6KCk9PiEhcigpW1NlPj4+MF0sYWN0aXZhdGlvbjpPZShSKSxhY3RpdmF0aW9uX3BhcmFtczpsZT9BcnJheS5mcm9tKG0oKS5zdWJhcnJheShsZT4+PjAsSWU+Pj4wKSk6W119KX0sOTU4NzI1Om49PntkLmNjKG4pfSw5NTg3NTk6KG4sbCk9PmQuZGMobixsLGQuRWIuZmMsZC5FYi5lcnJvcnMpfTtmdW5jdGlvbiBncihuKXt0aGlzLm5hbWU9XCJFeGl0U3RhdHVzXCIsdGhpcy5tZXNzYWdlPWBQcm9ncmFtIHRlcm1pbmF0ZWQgd2l0aCBleGl0KCR7bn0pYCx0aGlzLnN0YXR1cz1ufXZhciBjdD1uPT57bi50ZXJtaW5hdGUoKSxuLm9ubWVzc2FnZT0oKT0+e319LExyPW49PnttZS55Yi5sZW5ndGg9PTAmJigkcigpLG1lLlBiKG1lLnliWzBdKSk7dmFyIGw9bWUueWIucG9wKCk7aWYoIWwpcmV0dXJuIDY7bWUuemIucHVzaChsKSxtZS5wYltuLnhiXT1sLGwueGI9bi54Yjt2YXIgZj17Y21kOlwicnVuXCIsc3RhcnRfcm91dGluZTpuLmhjLGFyZzpuLlZiLHB0aHJlYWRfcHRyOm4ueGJ9O3JldHVybiBTJiZsLnVucmVmKCksbC5wb3N0TWVzc2FnZShmLG4ubmMpLDB9LHFlPTAseXI9dHlwZW9mIFRleHREZWNvZGVyPFwidVwiP25ldyBUZXh0RGVjb2RlcihcInV0ZjhcIik6dm9pZCAwLGJyPShuLGwsZik9PntsPj4+PTA7dmFyIGI9bCtmO2ZvcihmPWw7bltmXSYmIShmPj1iKTspKytmO2lmKDE2PGYtbCYmbi5idWZmZXImJnlyKXJldHVybiB5ci5kZWNvZGUobi5idWZmZXIgaW5zdGFuY2VvZiBTaGFyZWRBcnJheUJ1ZmZlcj9uLnNsaWNlKGwsZik6bi5zdWJhcnJheShsLGYpKTtmb3IoYj1cIlwiO2w8Zjspe3ZhciBBPW5bbCsrXTtpZihBJjEyOCl7dmFyIFA9bltsKytdJjYzO2lmKChBJjIyNCk9PTE5MiliKz1TdHJpbmcuZnJvbUNoYXJDb2RlKChBJjMxKTw8NnxQKTtlbHNle3ZhciB6PW5bbCsrXSY2MztBPShBJjI0MCk9PTIyND8oQSYxNSk8PDEyfFA8PDZ8ejooQSY3KTw8MTh8UDw8MTJ8ejw8NnxuW2wrK10mNjMsNjU1MzY+QT9iKz1TdHJpbmcuZnJvbUNoYXJDb2RlKEEpOihBLT02NTUzNixiKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDU1Mjk2fEE+PjEwLDU2MzIwfEEmMTAyMykpfX1lbHNlIGIrPVN0cmluZy5mcm9tQ2hhckNvZGUoQSl9cmV0dXJuIGJ9LE9lPShuLGwpPT4obj4+Pj0wKT9icihvKCksbixsKTpcIlwiLHdyPW49Pnt2YXIgbD1KbigpO3JldHVybiBuPW4oKSxtbihsKSxufTtmdW5jdGlvbiB2ZShuLGwpe3ZhciBmPWFyZ3VtZW50cy5sZW5ndGgtMixiPWFyZ3VtZW50cztyZXR1cm4gd3IoKCk9Pntmb3IodmFyIEE9MipmLFA9UW4oOCpBKSx6PVA+Pj4zLEw9MDtMPGY7TCsrKXt2YXIgWj1iWzIrTF07dHlwZW9mIFo9PVwiYmlnaW50XCI/KGhlW3orMipMXT0xbixoZVt6KzIqTCsxXT1aKTooaGVbeisyKkxdPTBuLGgoKVt6KzIqTCsxPj4+MF09Wil9cmV0dXJuIHNpKG4sQSxQLGwpfSl9ZnVuY3Rpb24gaXQobil7aWYoRSlyZXR1cm4gdmUoMCwxLG4pO3llPW4sMDxxZXx8KG1lLmljKCksZC5vbkV4aXQ/LihuKSxwZT0hMCkseChuLG5ldyBncihuKSl9dmFyIFF0PW49PntpZih5ZT1uLEUpdGhyb3cgRnIobiksXCJ1bndpbmRcIjtpdChuKX0sdnI9bj0+e24gaW5zdGFuY2VvZiBncnx8bj09XCJ1bndpbmRcInx8eCgxLG4pfTtmdW5jdGlvbiBIbigpe2Zvcih2YXIgbj1kLm51bVRocmVhZHM7bi0tOykkcigpO0l0LnVuc2hpZnQoKCk9PntSdCsrLEduKCgpPT5tcigpKX0pfWZ1bmN0aW9uICRyKCl7dmFyIG49VShcIm9ydC13YXNtLXNpbWQtdGhyZWFkZWQud29ya2VyLmpzXCIpO249bmV3IFdvcmtlcihuKSxtZS55Yi5wdXNoKG4pfWZ1bmN0aW9uIEduKG4pe0U/bigpOlByb21pc2UuYWxsKG1lLnliLm1hcChtZS5QYikpLnRoZW4obil9dmFyIG1lPXt5YjpbXSx6YjpbXSxVYjpbXSxwYjp7fSxJYigpe0U/KG1lLnJlY2VpdmVPYmplY3RUcmFuc2Zlcj1tZS5lYyxtZS50aHJlYWRJbml0VExTPW1lLlRiLG1lLnNldEV4aXRTdGF0dXM9bWUuU2IpOkhuKCl9LFNiOm49PnllPW4sc2M6W1wiJHRlcm1pbmF0ZVdvcmtlclwiXSxpYzooKT0+e2Zvcih2YXIgbiBvZiBtZS56YiljdChuKTtmb3IobiBvZiBtZS55YiljdChuKTttZS55Yj1bXSxtZS56Yj1bXSxtZS5wYj1bXX0sUmI6bj0+e3ZhciBsPW4ueGI7ZGVsZXRlIG1lLnBiW2xdLG1lLnliLnB1c2gobiksbWUuemIuc3BsaWNlKG1lLnpiLmluZGV4T2YobiksMSksbi54Yj0wLFpuKGwpfSxlYygpe30sVGIoKXttZS5VYi5mb3JFYWNoKG49Pm4oKSl9LFBiOm49Pm5ldyBQcm9taXNlKGw9PntuLm9ubWVzc2FnZT1QPT57UD1QLmRhdGE7dmFyIHo9UC5jbWQ7aWYoUC50YXJnZXRUaHJlYWQmJlAudGFyZ2V0VGhyZWFkIT1wbigpKXt2YXIgTD1tZS5wYltQLnRhcmdldFRocmVhZF07TD9MLnBvc3RNZXNzYWdlKFAsUC50cmFuc2Zlckxpc3QpOmVlKGBJbnRlcm5hbCBlcnJvciEgV29ya2VyIHNlbnQgYSBtZXNzYWdlIFwiJHt6fVwiIHRvIHRhcmdldCBwdGhyZWFkICR7UC50YXJnZXRUaHJlYWR9LCBidXQgdGhhdCB0aHJlYWQgbm8gbG9uZ2VyIGV4aXN0cyFgKX1lbHNlIHo9PT1cImNoZWNrTWFpbGJveFwiP0Z0KCk6ej09PVwic3Bhd25UaHJlYWRcIj9McihQKTp6PT09XCJjbGVhbnVwVGhyZWFkXCI/bWUuUmIobWUucGJbUC50aHJlYWRdKTp6PT09XCJraWxsVGhyZWFkXCI/KFA9UC50aHJlYWQsej1tZS5wYltQXSxkZWxldGUgbWUucGJbUF0sY3QoeiksWm4oUCksbWUuemIuc3BsaWNlKG1lLnpiLmluZGV4T2YoeiksMSksei54Yj0wKTp6PT09XCJjYW5jZWxUaHJlYWRcIj9tZS5wYltQLnRocmVhZF0ucG9zdE1lc3NhZ2Uoe2NtZDpcImNhbmNlbFwifSk6ej09PVwibG9hZGVkXCI/KG4ubG9hZGVkPSEwLFMmJiFuLnhiJiZuLnVucmVmKCksbChuKSk6ej09PVwiYWxlcnRcIj9hbGVydChgVGhyZWFkICR7UC50aHJlYWRJZH06ICR7UC50ZXh0fWApOlAudGFyZ2V0PT09XCJzZXRpbW1lZGlhdGVcIj9uLnBvc3RNZXNzYWdlKFApOno9PT1cImNhbGxIYW5kbGVyXCI/ZFtQLmhhbmRsZXJdKC4uLlAuYXJncyk6eiYmZWUoYHdvcmtlciBzZW50IGFuIHVua25vd24gY29tbWFuZCAke3p9YCl9LG4ub25lcnJvcj1QPT57dGhyb3cgZWUoYHdvcmtlciBzZW50IGFuIGVycm9yISAke1AuZmlsZW5hbWV9OiR7UC5saW5lbm99OiAke1AubWVzc2FnZX1gKSxQfSxTJiYobi5vbihcIm1lc3NhZ2VcIixQPT5uLm9ubWVzc2FnZSh7ZGF0YTpQfSkpLG4ub24oXCJlcnJvclwiLFA9Pm4ub25lcnJvcihQKSkpO3ZhciBmPVtdLGI9W1wib25FeGl0XCJdLEE7Zm9yKEEgb2YgYilkLmhhc093blByb3BlcnR5KEEpJiZmLnB1c2goQSk7bi5wb3N0TWVzc2FnZSh7Y21kOlwibG9hZFwiLGhhbmRsZXJzOmYsdXJsT3JCbG9iOmQubWFpblNjcmlwdFVybE9yQmxvYnx8ZSx3YXNtTWVtb3J5OmJlLHdhc21Nb2R1bGU6TWV9KX0pfTtkLlBUaHJlYWQ9bWU7dmFyIGVyPW49Pntmb3IoOzA8bi5sZW5ndGg7KW4uc2hpZnQoKShkKX07ZC5lc3RhYmxpc2hTdGFja1NwYWNlPSgpPT57dmFyIG49cG4oKSxsPXAoKVtuKzUyPj4+Mj4+PjBdO249cCgpW24rNTY+Pj4yPj4+MF0sbGkobCxsLW4pLG1uKGwpfTtmdW5jdGlvbiBGcihuKXtpZihFKXJldHVybiB2ZSgxLDAsbik7UXQobil9ZC5pbnZva2VFbnRyeVBvaW50PShuLGwpPT57bj1kaS5hcHBseShudWxsLFtuLGxdKSwwPHFlP21lLlNiKG4pOlhuKG4pfTtmdW5jdGlvbiBMbihuKXt0aGlzLkRiPW4tMjQsdGhpcy5wYz1mdW5jdGlvbihsKXtwKClbdGhpcy5EYis0Pj4+Mj4+PjBdPWx9LHRoaXMuTWI9ZnVuY3Rpb24obCl7cCgpW3RoaXMuRGIrOD4+PjI+Pj4wXT1sfSx0aGlzLkliPWZ1bmN0aW9uKGwsZil7dGhpcy5LYigpLHRoaXMucGMobCksdGhpcy5NYihmKX0sdGhpcy5LYj1mdW5jdGlvbigpe3AoKVt0aGlzLkRiKzE2Pj4+Mj4+PjBdPTB9fXZhciBqcj0wLF9yPTA7ZnVuY3Rpb24gU3IobixsLGYsYil7cmV0dXJuIEU/dmUoMiwxLG4sbCxmLGIpOkh0KG4sbCxmLGIpfWZ1bmN0aW9uIEh0KG4sbCxmLGIpe2lmKG4+Pj49MCxsPj4+PTAsZj4+Pj0wLGI+Pj49MCx0eXBlb2YgU2hhcmVkQXJyYXlCdWZmZXI+XCJ1XCIpcmV0dXJuIGVlKFwiQ3VycmVudCBlbnZpcm9ubWVudCBkb2VzIG5vdCBzdXBwb3J0IFNoYXJlZEFycmF5QnVmZmVyLCBwdGhyZWFkcyBhcmUgbm90IGF2YWlsYWJsZSFcIiksNjt2YXIgQT1bXTtyZXR1cm4gRSYmQS5sZW5ndGg9PT0wP1NyKG4sbCxmLGIpOihuPXtoYzpmLHhiOm4sVmI6YixuYzpBfSxFPyhuLnFjPVwic3Bhd25UaHJlYWRcIixwb3N0TWVzc2FnZShuLEEpLDApOkxyKG4pKX1mdW5jdGlvbiBxcihuLGwsZil7cmV0dXJuIEU/dmUoMywxLG4sbCxmKTowfWZ1bmN0aW9uIG10KG4sbCl7aWYoRSlyZXR1cm4gdmUoNCwxLG4sbCl9dmFyIEplPW49Pntmb3IodmFyIGw9MCxmPTA7ZjxuLmxlbmd0aDsrK2Ype3ZhciBiPW4uY2hhckNvZGVBdChmKTsxMjc+PWI/bCsrOjIwNDc+PWI/bCs9Mjo1NTI5Njw9YiYmNTczNDM+PWI/KGwrPTQsKytmKTpsKz0zfXJldHVybiBsfSx4cj0obixsLGYsYik9PntpZihmPj4+PTAsISgwPGIpKXJldHVybiAwO3ZhciBBPWY7Yj1mK2ItMTtmb3IodmFyIFA9MDtQPG4ubGVuZ3RoOysrUCl7dmFyIHo9bi5jaGFyQ29kZUF0KFApO2lmKDU1Mjk2PD16JiY1NzM0Mz49eil7dmFyIEw9bi5jaGFyQ29kZUF0KCsrUCk7ej02NTUzNisoKHomMTAyMyk8PDEwKXxMJjEwMjN9aWYoMTI3Pj16KXtpZihmPj1iKWJyZWFrO2xbZisrPj4+MF09en1lbHNle2lmKDIwNDc+PXope2lmKGYrMT49YilicmVhaztsW2YrKz4+PjBdPTE5Mnx6Pj42fWVsc2V7aWYoNjU1MzU+PXope2lmKGYrMj49YilicmVhaztsW2YrKz4+PjBdPTIyNHx6Pj4xMn1lbHNle2lmKGYrMz49YilicmVhaztsW2YrKz4+PjBdPTI0MHx6Pj4xOCxsW2YrKz4+PjBdPTEyOHx6Pj4xMiY2M31sW2YrKz4+PjBdPTEyOHx6Pj42JjYzfWxbZisrPj4+MF09MTI4fHomNjN9fXJldHVybiBsW2Y+Pj4wXT0wLGYtQX0sRHQ9KG4sbCxmKT0+eHIobixvKCksbCxmKTtmdW5jdGlvbiBDcihuLGwpe2lmKEUpcmV0dXJuIHZlKDUsMSxuLGwpfWZ1bmN0aW9uIEFyKG4sbCxmKXtpZihFKXJldHVybiB2ZSg2LDEsbixsLGYpfWZ1bmN0aW9uIEtyKG4sbCxmKXtyZXR1cm4gRT92ZSg3LDEsbixsLGYpOjB9ZnVuY3Rpb24gdHIobixsKXtpZihFKXJldHVybiB2ZSg4LDEsbixsKX1mdW5jdGlvbiBZcihuLGwsZil7aWYoRSlyZXR1cm4gdmUoOSwxLG4sbCxmKX1mdW5jdGlvbiBacihuLGwsZixiKXtpZihFKXJldHVybiB2ZSgxMCwxLG4sbCxmLGIpfWZ1bmN0aW9uIFhyKG4sbCxmLGIpe2lmKEUpcmV0dXJuIHZlKDExLDEsbixsLGYsYil9ZnVuY3Rpb24gSnIobixsLGYsYil7aWYoRSlyZXR1cm4gdmUoMTIsMSxuLGwsZixiKX1mdW5jdGlvbiBJcihuKXtpZihFKXJldHVybiB2ZSgxMywxLG4pfWZ1bmN0aW9uIEd0KG4sbCl7aWYoRSlyZXR1cm4gdmUoMTQsMSxuLGwpfWZ1bmN0aW9uIFFyKG4sbCxmKXtpZihFKXJldHVybiB2ZSgxNSwxLG4sbCxmKX12YXIgcnI9bj0+e2lmKG49PT1udWxsKXJldHVyblwibnVsbFwiO3ZhciBsPXR5cGVvZiBuO3JldHVybiBsPT09XCJvYmplY3RcInx8bD09PVwiYXJyYXlcInx8bD09PVwiZnVuY3Rpb25cIj9uLnRvU3RyaW5nKCk6XCJcIitufSxUcixsdD1uPT57Zm9yKHZhciBsPVwiXCI7bygpW24+Pj4wXTspbCs9VHJbbygpW24rKz4+PjBdXTtyZXR1cm4gbH0sRXI9e30sbnI9e30sRm49e30sUWU7ZnVuY3Rpb24gZW4obixsLGY9e30pe3ZhciBiPWwubmFtZTtpZighbil0aHJvdyBuZXcgUWUoYHR5cGUgXCIke2J9XCIgbXVzdCBoYXZlIGEgcG9zaXRpdmUgaW50ZWdlciB0eXBlaWQgcG9pbnRlcmApO2lmKG5yLmhhc093blByb3BlcnR5KG4pKXtpZihmLlliKXJldHVybjt0aHJvdyBuZXcgUWUoYENhbm5vdCByZWdpc3RlciB0eXBlIFxcJyR7Yn1cXCcgdHdpY2VgKX1ucltuXT1sLGRlbGV0ZSBGbltuXSxFci5oYXNPd25Qcm9wZXJ0eShuKSYmKGw9RXJbbl0sZGVsZXRlIEVyW25dLGwuZm9yRWFjaChBPT5BKCkpKX1mdW5jdGlvbiBwdChuLGwsZj17fSl7aWYoIShcImFyZ1BhY2tBZHZhbmNlXCJpbiBsKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwicmVnaXN0ZXJUeXBlIHJlZ2lzdGVyZWRJbnN0YW5jZSByZXF1aXJlcyBhcmdQYWNrQWR2YW5jZVwiKTtlbihuLGwsZil9dmFyIFByPShuLGwsZik9Pntzd2l0Y2gobCl7Y2FzZSAxOnJldHVybiBmP2I9PnIoKVtiPj4+MD4+PjBdOmI9Pm8oKVtiPj4+MD4+PjBdO2Nhc2UgMjpyZXR1cm4gZj9iPT5pKClbYj4+PjE+Pj4wXTpiPT51KClbYj4+PjE+Pj4wXTtjYXNlIDQ6cmV0dXJuIGY/Yj0+YSgpW2I+Pj4yPj4+MF06Yj0+cCgpW2I+Pj4yPj4+MF07Y2FzZSA4OnJldHVybiBmP2I9PmhlW2I+Pj4zXTpiPT5YZVtiPj4+M107ZGVmYXVsdDp0aHJvdyBuZXcgVHlwZUVycm9yKGBpbnZhbGlkIGludGVnZXIgd2lkdGggKCR7bH0pOiAke259YCl9fTtmdW5jdGlvbiBvcigpe3RoaXMud2I9W3ZvaWQgMF0sdGhpcy5OYj1bXX12YXIgZXQ9bmV3IG9yO2Z1bmN0aW9uIEx0KG4pe24+Pj49MCxuPj1ldC5EYiYmLS1ldC5nZXQobikuUWI9PT0wJiZldC5NYihuKX12YXIgS2U9bj0+e2lmKCFuKXRocm93IG5ldyBRZShcIkNhbm5vdCB1c2UgZGVsZXRlZCB2YWwuIGhhbmRsZSA9IFwiK24pO3JldHVybiBldC5nZXQobikudmFsdWV9LHR0PW49Pntzd2l0Y2gobil7Y2FzZSB2b2lkIDA6cmV0dXJuIDE7Y2FzZSBudWxsOnJldHVybiAyO2Nhc2UhMDpyZXR1cm4gMztjYXNlITE6cmV0dXJuIDQ7ZGVmYXVsdDpyZXR1cm4gZXQuS2Ioe1FiOjEsdmFsdWU6bn0pfX07ZnVuY3Rpb24gdG4obil7cmV0dXJuIHRoaXMuZnJvbVdpcmVUeXBlKGEoKVtuPj4+Mj4+PjBdKX12YXIgcm49KG4sbCk9Pntzd2l0Y2gobCl7Y2FzZSA0OnJldHVybiBmdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5mcm9tV2lyZVR5cGUobSgpW2Y+Pj4yPj4+MF0pfTtjYXNlIDg6cmV0dXJuIGZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmZyb21XaXJlVHlwZShoKClbZj4+PjM+Pj4wXSl9O2RlZmF1bHQ6dGhyb3cgbmV3IFR5cGVFcnJvcihgaW52YWxpZCBmbG9hdCB3aWR0aCAoJHtsfSk6ICR7bn1gKX19O2Z1bmN0aW9uIG5uKG4pe3JldHVybiB0aGlzLmZyb21XaXJlVHlwZShwKClbbj4+PjI+Pj4wXSl9dmFyIG9uPXR5cGVvZiBUZXh0RGVjb2RlcjxcInVcIj9uZXcgVGV4dERlY29kZXIoXCJ1dGYtMTZsZVwiKTp2b2lkIDAsYW49KG4sbCk9Pntmb3IodmFyIGY9bj4+MSxiPWYrbC8yOyEoZj49YikmJnUoKVtmPj4+MF07KSsrZjtpZihmPDw9MSwzMjxmLW4mJm9uKXJldHVybiBvbi5kZWNvZGUobygpLnNsaWNlKG4sZikpO2ZvcihmPVwiXCIsYj0wOyEoYj49bC8yKTsrK2Ipe3ZhciBBPWkoKVtuKzIqYj4+PjE+Pj4wXTtpZihBPT0wKWJyZWFrO2YrPVN0cmluZy5mcm9tQ2hhckNvZGUoQSl9cmV0dXJuIGZ9LHNuPShuLGwsZik9PntpZihmPz89MjE0NzQ4MzY0NywyPmYpcmV0dXJuIDA7Zi09Mjt2YXIgYj1sO2Y9ZjwyKm4ubGVuZ3RoP2YvMjpuLmxlbmd0aDtmb3IodmFyIEE9MDtBPGY7KytBKXt2YXIgUD1uLmNoYXJDb2RlQXQoQSk7aSgpW2w+Pj4xPj4+MF09UCxsKz0yfXJldHVybiBpKClbbD4+PjE+Pj4wXT0wLGwtYn0saXI9bj0+MipuLmxlbmd0aCxqbj0obixsKT0+e2Zvcih2YXIgZj0wLGI9XCJcIjshKGY+PWwvNCk7KXt2YXIgQT1hKClbbis0KmY+Pj4yPj4+MF07aWYoQT09MClicmVhazsrK2YsNjU1MzY8PUE/KEEtPTY1NTM2LGIrPVN0cmluZy5mcm9tQ2hhckNvZGUoNTUyOTZ8QT4+MTAsNTYzMjB8QSYxMDIzKSk6Yis9U3RyaW5nLmZyb21DaGFyQ29kZShBKX1yZXR1cm4gYn0sdWU9KG4sbCxmKT0+e2lmKGw+Pj49MCxmPz89MjE0NzQ4MzY0Nyw0PmYpcmV0dXJuIDA7dmFyIGI9bDtmPWIrZi00O2Zvcih2YXIgQT0wO0E8bi5sZW5ndGg7KytBKXt2YXIgUD1uLmNoYXJDb2RlQXQoQSk7aWYoNTUyOTY8PVAmJjU3MzQzPj1QKXt2YXIgej1uLmNoYXJDb2RlQXQoKytBKTtQPTY1NTM2KygoUCYxMDIzKTw8MTApfHomMTAyM31pZihhKClbbD4+PjI+Pj4wXT1QLGwrPTQsbCs0PmYpYnJlYWt9cmV0dXJuIGEoKVtsPj4+Mj4+PjBdPTAsbC1ifSx1bj1uPT57Zm9yKHZhciBsPTAsZj0wO2Y8bi5sZW5ndGg7KytmKXt2YXIgYj1uLmNoYXJDb2RlQXQoZik7NTUyOTY8PWImJjU3MzQzPj1iJiYrK2YsbCs9NH1yZXR1cm4gbH0sTXQ9KCk9PntpZighKDA8cWUpKXRyeXtFP1huKHllKTpRdCh5ZSl9Y2F0Y2gobil7dnIobil9fTtmdW5jdGlvbiBhdChuKXtuPj4+PTAsdHlwZW9mIEF0b21pY3Mub2M9PVwiZnVuY3Rpb25cIiYmKEF0b21pY3Mub2MoYSgpLG4+Pj4yLG4pLnZhbHVlLnRoZW4oRnQpLG4rPTEyOCxBdG9taWNzLnN0b3JlKGEoKSxuPj4+MiwxKSl9ZC5fX2Vtc2NyaXB0ZW5fdGhyZWFkX21haWxib3hfYXdhaXQ9YXQ7dmFyIEZ0PSgpPT57dmFyIG49cG4oKTtpZihuJiYoYXQobiksIXBlKSl0cnl7dWkoKSxNdCgpfWNhdGNoKGwpe3ZyKGwpfX07ZC5jaGVja01haWxib3g9RnQ7dmFyIGFyPVtdLHNyPShuLGwpPT57dmFyIGY9bnJbbl07aWYoZj09PXZvaWQgMCl0aHJvdyBuPWlpKG4pLGY9bHQobiksd3QobiksbmV3IFFlKGwrXCIgaGFzIHVua25vd24gdHlwZSBcIitmKTtyZXR1cm4gZn0sT3I9KG4sbCxmKT0+e3ZhciBiPVtdO3JldHVybiBuPW4udG9XaXJlVHlwZShiLGYpLGIubGVuZ3RoJiYocCgpW2w+Pj4yPj4+MF09dHQoYikpLG59LGp0PW49Pnt0cnl7bigpfWNhdGNoKGwpe0J0KGwpfX07ZnVuY3Rpb24gbG4oKXt2YXIgbj1yZSxsPXt9O2ZvcihsZXRbZixiXW9mIE9iamVjdC5lbnRyaWVzKG4pKWxbZl09dHlwZW9mIGI9PVwiZnVuY3Rpb25cIj9mdW5jdGlvbigpe1B0LnB1c2goZik7dHJ5e3JldHVybiBiLmFwcGx5KG51bGwsYXJndW1lbnRzKX1maW5hbGx5e3BlfHwoUHQucG9wKCksZHQmJmZ0PT09MSYmUHQubGVuZ3RoPT09MCYmKGZ0PTAscWUrPTEsanQocGkpLHR5cGVvZiBGaWJlcnM8XCJ1XCImJkZpYmVycy51YygpKSl9fTpiO3JldHVybiBsfXZhciBmdD0wLGR0PW51bGwsZG49MCxQdD1bXSxrcj17fSxzPXt9LGM9MCxnPW51bGwsJD1bXTtmdW5jdGlvbiBJKCl7cmV0dXJuIG5ldyBQcm9taXNlKChuLGwpPT57Zz17cmVzb2x2ZTpuLHJlamVjdDpsfX0pfWZ1bmN0aW9uIEQoKXt2YXIgbj1Scig2NTU0OCksbD1uKzEyO3AoKVtuPj4+Mj4+PjBdPWwscCgpW24rND4+PjI+Pj4wXT1sKzY1NTM2LGw9UHRbMF07dmFyIGY9a3JbbF07cmV0dXJuIGY9PT12b2lkIDAmJihmPWMrKyxrcltsXT1mLHNbZl09bCksbD1mLGEoKVtuKzg+Pj4yPj4+MF09bCxufWZ1bmN0aW9uIEgoKXt2YXIgbj1hKClbZHQrOD4+PjI+Pj4wXTtyZXR1cm4gbj1yZVtzW25dXSwtLXFlLG4oKX1mdW5jdGlvbiBYKG4pe2lmKCFwZSl7aWYoZnQ9PT0wKXt2YXIgbD0hMSxmPSExO24oKGI9MCk9PntpZighcGUmJihkbj1iLGw9ITAsZikpe2Z0PTIsanQoKCk9Pm1pKGR0KSksdHlwZW9mIEJyb3dzZXI8XCJ1XCImJkJyb3dzZXIuSmIuWGImJkJyb3dzZXIuSmIucmVzdW1lKCksYj0hMTt0cnl7dmFyIEE9SCgpfWNhdGNoKEwpe0E9TCxiPSEwfXZhciBQPSExO2lmKCFkdCl7dmFyIHo9Zzt6JiYoZz1udWxsLChiP3oucmVqZWN0OnoucmVzb2x2ZSkoQSksUD0hMCl9aWYoYiYmIVApdGhyb3cgQX19KSxmPSEwLGx8fChmdD0xLGR0PUQoKSx0eXBlb2YgQnJvd3NlcjxcInVcIiYmQnJvd3Nlci5KYi5YYiYmQnJvd3Nlci5KYi5wYXVzZSgpLGp0KCgpPT5jaShkdCkpKX1lbHNlIGZ0PT09Mj8oZnQ9MCxqdChmaSksd3QoZHQpLGR0PW51bGwsJC5mb3JFYWNoKGI9PntpZighcGUpdHJ5e2IoKSxNdCgpfWNhdGNoKEEpe3ZyKEEpfX0pKTpCdChgaW52YWxpZCBzdGF0ZTogJHtmdH1gKTtyZXR1cm4gZG59fWZ1bmN0aW9uIHEobil7cmV0dXJuIFgobD0+e24oKS50aGVuKGwpfSl9dmFyIGo9W10sbmU9e30sZmU9bj0+e3ZhciBsPW5lW25dO3JldHVybiBsPT09dm9pZCAwP2x0KG4pOmx9LCRlPSgpPT50eXBlb2YgZ2xvYmFsVGhpcz09XCJvYmplY3RcIj9nbG9iYWxUaGlzOkZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKSxrPW49Pnt2YXIgbD1qLmxlbmd0aDtyZXR1cm4gai5wdXNoKG4pLGx9LGFlPShuLGwpPT57Zm9yKHZhciBmPUFycmF5KG4pLGI9MDtiPG47KytiKWZbYl09c3IocCgpW2wrNCpiPj4+Mj4+PjBdLFwicGFyYW1ldGVyIFwiK2IpO3JldHVybiBmfSxBZT0obixsKT0+T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsXCJuYW1lXCIse3ZhbHVlOm59KTtmdW5jdGlvbiBPdChuKXt2YXIgbD1GdW5jdGlvbjtpZighKGwgaW5zdGFuY2VvZiBGdW5jdGlvbikpdGhyb3cgbmV3IFR5cGVFcnJvcihgbmV3XyBjYWxsZWQgd2l0aCBjb25zdHJ1Y3RvciB0eXBlICR7dHlwZW9mIGx9IHdoaWNoIGlzIG5vdCBhIGZ1bmN0aW9uYCk7dmFyIGY9QWUobC5uYW1lfHxcInVua25vd25GdW5jdGlvbk5hbWVcIixmdW5jdGlvbigpe30pO3JldHVybiBmLnByb3RvdHlwZT1sLnByb3RvdHlwZSxmPW5ldyBmLG49bC5hcHBseShmLG4pLG4gaW5zdGFuY2VvZiBPYmplY3Q/bjpmfXZhciBrdD1uPT5uJTQ9PT0wJiYobiUxMDAhPT0wfHxuJTQwMD09PTApLE5vPVswLDMxLDYwLDkxLDEyMSwxNTIsMTgyLDIxMywyNDQsMjc0LDMwNSwzMzVdLEhvPVswLDMxLDU5LDkwLDEyMCwxNTEsMTgxLDIxMiwyNDMsMjczLDMwNCwzMzRdO2Z1bmN0aW9uIEdvKG4sbCxmLGIsQSxQLHope3JldHVybiBFP3ZlKDE2LDEsbixsLGYsYixBLFAseik6LTUyfWZ1bmN0aW9uIExvKG4sbCxmLGIsQSxQKXtpZihFKXJldHVybiB2ZSgxNywxLG4sbCxmLGIsQSxQKX12YXIgRm89bj0+e3ZhciBsPUplKG4pKzEsZj1ScihsKTtyZXR1cm4gZiYmRHQobixmLGwpLGZ9LHFuPVtdLGpvPShuLGwpPT57cW4ubGVuZ3RoPTA7Zm9yKHZhciBmO2Y9bygpW24rKz4+PjBdOyl7dmFyIGI9ZiE9MTA1O2ImPWYhPTExMixsKz1iJiZsJTg/NDowLHFuLnB1c2goZj09MTEyP3AoKVtsPj4+Mj4+PjBdOmY9PTEwNj9oZVtsPj4+M106Zj09MTA1P2EoKVtsPj4+Mj4+PjBdOmgoKVtsPj4+Mz4+PjBdKSxsKz1iPzg6NH1yZXR1cm4gcW59LEtuPXt9LHFvPSgpPT57aWYoIVluKXt2YXIgbj17VVNFUjpcIndlYl91c2VyXCIsTE9HTkFNRTpcIndlYl91c2VyXCIsUEFUSDpcIi9cIixQV0Q6XCIvXCIsSE9NRTpcIi9ob21lL3dlYl91c2VyXCIsTEFORzoodHlwZW9mIG5hdmlnYXRvcj09XCJvYmplY3RcIiYmbmF2aWdhdG9yLmxhbmd1YWdlcyYmbmF2aWdhdG9yLmxhbmd1YWdlc1swXXx8XCJDXCIpLnJlcGxhY2UoXCItXCIsXCJfXCIpK1wiLlVURi04XCIsXzp2fHxcIi4vdGhpcy5wcm9ncmFtXCJ9LGw7Zm9yKGwgaW4gS24pS25bbF09PT12b2lkIDA/ZGVsZXRlIG5bbF06bltsXT1LbltsXTt2YXIgZj1bXTtmb3IobCBpbiBuKWYucHVzaChgJHtsfT0ke25bbF19YCk7WW49Zn1yZXR1cm4gWW59LFluO2Z1bmN0aW9uIEtvKG4sbCl7aWYoRSlyZXR1cm4gdmUoMTgsMSxuLGwpO24+Pj49MCxsPj4+PTA7dmFyIGY9MDtyZXR1cm4gcW8oKS5mb3JFYWNoKChiLEEpPT57dmFyIFA9bCtmO2ZvcihBPXAoKVtuKzQqQT4+PjI+Pj4wXT1QLFA9MDtQPGIubGVuZ3RoOysrUClyKClbQSsrPj4+MD4+PjBdPWIuY2hhckNvZGVBdChQKTtyKClbQT4+PjA+Pj4wXT0wLGYrPWIubGVuZ3RoKzF9KSwwfWZ1bmN0aW9uIFlvKG4sbCl7aWYoRSlyZXR1cm4gdmUoMTksMSxuLGwpO24+Pj49MCxsPj4+PTA7dmFyIGY9cW8oKTtwKClbbj4+PjI+Pj4wXT1mLmxlbmd0aDt2YXIgYj0wO3JldHVybiBmLmZvckVhY2goQT0+Yis9QS5sZW5ndGgrMSkscCgpW2w+Pj4yPj4+MF09YiwwfWZ1bmN0aW9uIFpvKG4pe3JldHVybiBFP3ZlKDIwLDEsbik6NTJ9ZnVuY3Rpb24gWG8obixsLGYsYil7cmV0dXJuIEU/dmUoMjEsMSxuLGwsZixiKTo1Mn1mdW5jdGlvbiBKbyhuLGwsZixiKXtyZXR1cm4gRT92ZSgyMiwxLG4sbCxmLGIpOjcwfXZhciBBbD1bbnVsbCxbXSxbXV07ZnVuY3Rpb24gUW8obixsLGYsYil7aWYoRSlyZXR1cm4gdmUoMjMsMSxuLGwsZixiKTtsPj4+PTAsZj4+Pj0wLGI+Pj49MDtmb3IodmFyIEE9MCxQPTA7UDxmO1ArKyl7dmFyIHo9cCgpW2w+Pj4yPj4+MF0sTD1wKClbbCs0Pj4+Mj4+PjBdO2wrPTg7Zm9yKHZhciBaPTA7WjxMO1orKyl7dmFyIEs9bygpW3orWj4+PjBdLG9lPUFsW25dO0s9PT0wfHxLPT09MTA/KChuPT09MT9FZTplZSkoYnIob2UsMCkpLG9lLmxlbmd0aD0wKTpvZS5wdXNoKEspfUErPUx9cmV0dXJuIHAoKVtiPj4+Mj4+PjBdPUEsMH12YXIgZWk9WzMxLDI5LDMxLDMwLDMxLDMwLDMxLDMxLDMwLDMxLDMwLDMxXSx0aT1bMzEsMjgsMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzFdO2Z1bmN0aW9uIElsKG4pe3ZhciBsPUFycmF5KEplKG4pKzEpO3JldHVybiB4cihuLGwsMCxsLmxlbmd0aCksbH12YXIgVGw9KG4sbCk9PntyKCkuc2V0KG4sbD4+PjApfTtmdW5jdGlvbiByaShuLGwsZixiKXtmdW5jdGlvbiBBKFIsbGUsSWUpe2ZvcihSPXR5cGVvZiBSPT1cIm51bWJlclwiP1IudG9TdHJpbmcoKTpSfHxcIlwiO1IubGVuZ3RoPGxlOylSPUllWzBdK1I7cmV0dXJuIFJ9ZnVuY3Rpb24gUChSLGxlKXtyZXR1cm4gQShSLGxlLFwiMFwiKX1mdW5jdGlvbiB6KFIsbGUpe2Z1bmN0aW9uIEllKGdpKXtyZXR1cm4gMD5naT8tMTowPGdpPzE6MH12YXIgcXQ7cmV0dXJuKHF0PUllKFIuZ2V0RnVsbFllYXIoKS1sZS5nZXRGdWxsWWVhcigpKSk9PT0wJiYocXQ9SWUoUi5nZXRNb250aCgpLWxlLmdldE1vbnRoKCkpKT09PTAmJihxdD1JZShSLmdldERhdGUoKS1sZS5nZXREYXRlKCkpKSxxdH1mdW5jdGlvbiBMKFIpe3N3aXRjaChSLmdldERheSgpKXtjYXNlIDA6cmV0dXJuIG5ldyBEYXRlKFIuZ2V0RnVsbFllYXIoKS0xLDExLDI5KTtjYXNlIDE6cmV0dXJuIFI7Y2FzZSAyOnJldHVybiBuZXcgRGF0ZShSLmdldEZ1bGxZZWFyKCksMCwzKTtjYXNlIDM6cmV0dXJuIG5ldyBEYXRlKFIuZ2V0RnVsbFllYXIoKSwwLDIpO2Nhc2UgNDpyZXR1cm4gbmV3IERhdGUoUi5nZXRGdWxsWWVhcigpLDAsMSk7Y2FzZSA1OnJldHVybiBuZXcgRGF0ZShSLmdldEZ1bGxZZWFyKCktMSwxMSwzMSk7Y2FzZSA2OnJldHVybiBuZXcgRGF0ZShSLmdldEZ1bGxZZWFyKCktMSwxMSwzMCl9fWZ1bmN0aW9uIFooUil7dmFyIGxlPVIuQWI7Zm9yKFI9bmV3IERhdGUobmV3IERhdGUoUi5CYisxOTAwLDAsMSkuZ2V0VGltZSgpKTswPGxlOyl7dmFyIEllPVIuZ2V0TW9udGgoKSxxdD0oa3QoUi5nZXRGdWxsWWVhcigpKT9laTp0aSlbSWVdO2lmKGxlPnF0LVIuZ2V0RGF0ZSgpKWxlLT1xdC1SLmdldERhdGUoKSsxLFIuc2V0RGF0ZSgxKSwxMT5JZT9SLnNldE1vbnRoKEllKzEpOihSLnNldE1vbnRoKDApLFIuc2V0RnVsbFllYXIoUi5nZXRGdWxsWWVhcigpKzEpKTtlbHNle1Iuc2V0RGF0ZShSLmdldERhdGUoKStsZSk7YnJlYWt9fXJldHVybiBJZT1uZXcgRGF0ZShSLmdldEZ1bGxZZWFyKCkrMSwwLDQpLGxlPUwobmV3IERhdGUoUi5nZXRGdWxsWWVhcigpLDAsNCkpLEllPUwoSWUpLDA+PXoobGUsUik/MD49eihJZSxSKT9SLmdldEZ1bGxZZWFyKCkrMTpSLmdldEZ1bGxZZWFyKCk6Ui5nZXRGdWxsWWVhcigpLTF9bj4+Pj0wLGw+Pj49MCxmPj4+PTAsYj4+Pj0wO3ZhciBLPXAoKVtiKzQwPj4+Mj4+PjBdO2I9e2xjOmEoKVtiPj4+Mj4+PjBdLGtjOmEoKVtiKzQ+Pj4yPj4+MF0sR2I6YSgpW2IrOD4+PjI+Pj4wXSxMYjphKClbYisxMj4+PjI+Pj4wXSxIYjphKClbYisxNj4+PjI+Pj4wXSxCYjphKClbYisyMD4+PjI+Pj4wXSx2YjphKClbYisyND4+PjI+Pj4wXSxBYjphKClbYisyOD4+PjI+Pj4wXSx0YzphKClbYiszMj4+PjI+Pj4wXSxqYzphKClbYiszNj4+PjI+Pj4wXSxtYzpLP09lKEspOlwiXCJ9LGY9T2UoZiksSz17XCIlY1wiOlwiJWEgJWIgJWQgJUg6JU06JVMgJVlcIixcIiVEXCI6XCIlbS8lZC8leVwiLFwiJUZcIjpcIiVZLSVtLSVkXCIsXCIlaFwiOlwiJWJcIixcIiVyXCI6XCIlSTolTTolUyAlcFwiLFwiJVJcIjpcIiVIOiVNXCIsXCIlVFwiOlwiJUg6JU06JVNcIixcIiV4XCI6XCIlbS8lZC8leVwiLFwiJVhcIjpcIiVIOiVNOiVTXCIsXCIlRWNcIjpcIiVjXCIsXCIlRUNcIjpcIiVDXCIsXCIlRXhcIjpcIiVtLyVkLyV5XCIsXCIlRVhcIjpcIiVIOiVNOiVTXCIsXCIlRXlcIjpcIiV5XCIsXCIlRVlcIjpcIiVZXCIsXCIlT2RcIjpcIiVkXCIsXCIlT2VcIjpcIiVlXCIsXCIlT0hcIjpcIiVIXCIsXCIlT0lcIjpcIiVJXCIsXCIlT21cIjpcIiVtXCIsXCIlT01cIjpcIiVNXCIsXCIlT1NcIjpcIiVTXCIsXCIlT3VcIjpcIiV1XCIsXCIlT1VcIjpcIiVVXCIsXCIlT1ZcIjpcIiVWXCIsXCIlT3dcIjpcIiV3XCIsXCIlT1dcIjpcIiVXXCIsXCIlT3lcIjpcIiV5XCJ9O2Zvcih2YXIgb2UgaW4gSylmPWYucmVwbGFjZShuZXcgUmVnRXhwKG9lLFwiZ1wiKSxLW29lXSk7dmFyIGdlPVwiU3VuZGF5IE1vbmRheSBUdWVzZGF5IFdlZG5lc2RheSBUaHVyc2RheSBGcmlkYXkgU2F0dXJkYXlcIi5zcGxpdChcIiBcIiksU2U9XCJKYW51YXJ5IEZlYnJ1YXJ5IE1hcmNoIEFwcmlsIE1heSBKdW5lIEp1bHkgQXVndXN0IFNlcHRlbWJlciBPY3RvYmVyIE5vdmVtYmVyIERlY2VtYmVyXCIuc3BsaXQoXCIgXCIpO0s9e1wiJWFcIjpSPT5nZVtSLnZiXS5zdWJzdHJpbmcoMCwzKSxcIiVBXCI6Uj0+Z2VbUi52Yl0sXCIlYlwiOlI9PlNlW1IuSGJdLnN1YnN0cmluZygwLDMpLFwiJUJcIjpSPT5TZVtSLkhiXSxcIiVDXCI6Uj0+UCgoUi5CYisxOTAwKS8xMDB8MCwyKSxcIiVkXCI6Uj0+UChSLkxiLDIpLFwiJWVcIjpSPT5BKFIuTGIsMixcIiBcIiksXCIlZ1wiOlI9PlooUikudG9TdHJpbmcoKS5zdWJzdHJpbmcoMiksXCIlR1wiOlI9PlooUiksXCIlSFwiOlI9PlAoUi5HYiwyKSxcIiVJXCI6Uj0+KFI9Ui5HYixSPT0wP1I9MTI6MTI8UiYmKFItPTEyKSxQKFIsMikpLFwiJWpcIjpSPT57Zm9yKHZhciBsZT0wLEllPTA7SWU8PVIuSGItMTtsZSs9KGt0KFIuQmIrMTkwMCk/ZWk6dGkpW0llKytdKTtyZXR1cm4gUChSLkxiK2xlLDMpfSxcIiVtXCI6Uj0+UChSLkhiKzEsMiksXCIlTVwiOlI9PlAoUi5rYywyKSxcIiVuXCI6KCk9PmBcXG5gLFwiJXBcIjpSPT4wPD1SLkdiJiYxMj5SLkdiP1wiQU1cIjpcIlBNXCIsXCIlU1wiOlI9PlAoUi5sYywyKSxcIiV0XCI6KCk9PlwiXHRcIixcIiV1XCI6Uj0+Ui52Ynx8NyxcIiVVXCI6Uj0+UChNYXRoLmZsb29yKChSLkFiKzctUi52YikvNyksMiksXCIlVlwiOlI9Pnt2YXIgbGU9TWF0aC5mbG9vcigoUi5BYis3LShSLnZiKzYpJTcpLzcpO2lmKDI+PShSLnZiKzM3MS1SLkFiLTIpJTcmJmxlKyssbGUpbGU9PTUzJiYoSWU9KFIudmIrMzcxLVIuQWIpJTcsSWU9PTR8fEllPT0zJiZrdChSLkJiKXx8KGxlPTEpKTtlbHNle2xlPTUyO3ZhciBJZT0oUi52Yis3LVIuQWItMSklNzsoSWU9PTR8fEllPT01JiZrdChSLkJiJTQwMC0xKSkmJmxlKyt9cmV0dXJuIFAobGUsMil9LFwiJXdcIjpSPT5SLnZiLFwiJVdcIjpSPT5QKE1hdGguZmxvb3IoKFIuQWIrNy0oUi52Yis2KSU3KS83KSwyKSxcIiV5XCI6Uj0+KFIuQmIrMTkwMCkudG9TdHJpbmcoKS5zdWJzdHJpbmcoMiksXCIlWVwiOlI9PlIuQmIrMTkwMCxcIiV6XCI6Uj0+e1I9Ui5qYzt2YXIgbGU9MDw9UjtyZXR1cm4gUj1NYXRoLmFicyhSKS82MCwobGU/XCIrXCI6XCItXCIpKyhcIjAwMDBcIisoUi82MCoxMDArUiU2MCkpLnNsaWNlKC00KX0sXCIlWlwiOlI9PlIubWMsXCIlJVwiOigpPT5cIiVcIn0sZj1mLnJlcGxhY2UoLyUlL2csXCJcXFxcMFxcXFwwXCIpO2ZvcihvZSBpbiBLKWYuaW5jbHVkZXMob2UpJiYoZj1mLnJlcGxhY2UobmV3IFJlZ0V4cChvZSxcImdcIiksS1tvZV0oYikpKTtyZXR1cm4gZj1mLnJlcGxhY2UoL1xcXFwwXFxcXDAvZyxcIiVcIiksb2U9SWwoZiksb2UubGVuZ3RoPmw/MDooVGwob2Usbiksb2UubGVuZ3RoLTEpfW1lLkliKCk7Zm9yKHZhciBuaT1BcnJheSgyNTYpLGNuPTA7MjU2PmNuOysrY24pbmlbY25dPVN0cmluZy5mcm9tQ2hhckNvZGUoY24pO1RyPW5pLFFlPWQuQmluZGluZ0Vycm9yPWNsYXNzIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3Iobil7c3VwZXIobiksdGhpcy5uYW1lPVwiQmluZGluZ0Vycm9yXCJ9fSxkLkludGVybmFsRXJyb3I9Y2xhc3MgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihuKXtzdXBlcihuKSx0aGlzLm5hbWU9XCJJbnRlcm5hbEVycm9yXCJ9fSxPYmplY3QuYXNzaWduKG9yLnByb3RvdHlwZSx7Z2V0KG4pe3JldHVybiB0aGlzLndiW25dfSxoYXMobil7cmV0dXJuIHRoaXMud2Jbbl0hPT12b2lkIDB9LEtiKG4pe3ZhciBsPXRoaXMuTmIucG9wKCl8fHRoaXMud2IubGVuZ3RoO3JldHVybiB0aGlzLndiW2xdPW4sbH0sTWIobil7dGhpcy53YltuXT12b2lkIDAsdGhpcy5OYi5wdXNoKG4pfX0pLGV0LndiLnB1c2goe3ZhbHVlOnZvaWQgMH0se3ZhbHVlOm51bGx9LHt2YWx1ZTohMH0se3ZhbHVlOiExfSksZXQuRGI9ZXQud2IubGVuZ3RoLGQuY291bnRfZW12YWxfaGFuZGxlcz0oKT0+e2Zvcih2YXIgbj0wLGw9ZXQuRGI7bDxldC53Yi5sZW5ndGg7KytsKWV0LndiW2xdIT09dm9pZCAwJiYrK247cmV0dXJuIG59O3ZhciBFbD1baXQsRnIsU3IscXIsbXQsQ3IsQXIsS3IsdHIsWXIsWnIsWHIsSnIsSXIsR3QsUXIsR28sTG8sS28sWW8sWm8sWG8sSm8sUW9dLFBsPXt1YTpmdW5jdGlvbihuLGwsZil7cmV0dXJuIHEoYXN5bmMoKT0+e2F3YWl0IGQuYWMobixsLGYpfSl9LGI6ZnVuY3Rpb24obixsLGYpe3Rocm93IG4+Pj49MCxuZXcgTG4obikuSWIobD4+PjAsZj4+PjApLGpyPW4sX3IrKyxqcn0sZmE6ZnVuY3Rpb24obil7YWkobj4+PjAsIUMsMSwhVCwxMzEwNzIsITEpLG1lLlRiKCl9LEQ6ZnVuY3Rpb24obil7bj4+Pj0wLEU/cG9zdE1lc3NhZ2Uoe2NtZDpcImNsZWFudXBUaHJlYWRcIix0aHJlYWQ6bn0pOm1lLlJiKG1lLnBiW25dKX0sWDpIdCx6OnFyLGxhOm10LFQ6Q3IsVjpBcixtYTpLcixqYTp0cixjYTpZcixpYTpacixIOlhyLFU6SnIsUjpJcixrYTpHdCxTOlFyLEs6ZnVuY3Rpb24obixsLGYsYixBKXtuPj4+PTAsbD4+Pj0wLGY+Pj49MCxsPWx0KGwpO3ZhciBQPWwuaW5kZXhPZihcInVcIikhPS0xO1AmJihBPSgxbjw8NjRuKS0xbikscHQobix7bmFtZTpsLGZyb21XaXJlVHlwZTp6PT56LHRvV2lyZVR5cGU6ZnVuY3Rpb24oeixMKXtpZih0eXBlb2YgTCE9XCJiaWdpbnRcIiYmdHlwZW9mIEwhPVwibnVtYmVyXCIpdGhyb3cgbmV3IFR5cGVFcnJvcihgQ2Fubm90IGNvbnZlcnQgXCIke3JyKEwpfVwiIHRvICR7dGhpcy5uYW1lfWApO2lmKEw8Ynx8TD5BKXRocm93IG5ldyBUeXBlRXJyb3IoYFBhc3NpbmcgYSBudW1iZXIgXCIke3JyKEwpfVwiIGZyb20gSlMgc2lkZSB0byBDL0MrKyBzaWRlIHRvIGFuIGFyZ3VtZW50IG9mIHR5cGUgXCIke2x9XCIsIHdoaWNoIGlzIG91dHNpZGUgdGhlIHZhbGlkIHJhbmdlIFske2J9LCAke0F9XSFgKTtyZXR1cm4gTH0sYXJnUGFja0FkdmFuY2U6OCxyZWFkVmFsdWVGcm9tUG9pbnRlcjpQcihsLGYsIVApLENiOm51bGx9KX0sc2E6ZnVuY3Rpb24obixsLGYsYil7bj4+Pj0wLGw9bHQobD4+PjApLHB0KG4se25hbWU6bCxmcm9tV2lyZVR5cGU6ZnVuY3Rpb24oQSl7cmV0dXJuISFBfSx0b1dpcmVUeXBlOmZ1bmN0aW9uKEEsUCl7cmV0dXJuIFA/ZjpifSxhcmdQYWNrQWR2YW5jZTo4LHJlYWRWYWx1ZUZyb21Qb2ludGVyOmZ1bmN0aW9uKEEpe3JldHVybiB0aGlzLmZyb21XaXJlVHlwZShvKClbQT4+PjBdKX0sQ2I6bnVsbH0pfSxyYTpmdW5jdGlvbihuLGwpe24+Pj49MCxsPWx0KGw+Pj4wKSxwdChuLHtuYW1lOmwsZnJvbVdpcmVUeXBlOmY9Pnt2YXIgYj1LZShmKTtyZXR1cm4gTHQoZiksYn0sdG9XaXJlVHlwZTooZixiKT0+dHQoYiksYXJnUGFja0FkdmFuY2U6OCxyZWFkVmFsdWVGcm9tUG9pbnRlcjp0bixDYjpudWxsfSl9LEo6ZnVuY3Rpb24obixsLGYpe24+Pj49MCxmPj4+PTAsbD1sdChsPj4+MCkscHQobix7bmFtZTpsLGZyb21XaXJlVHlwZTpiPT5iLHRvV2lyZVR5cGU6KGIsQSk9PkEsYXJnUGFja0FkdmFuY2U6OCxyZWFkVmFsdWVGcm9tUG9pbnRlcjpybihsLGYpLENiOm51bGx9KX0sdjpmdW5jdGlvbihuLGwsZixiLEEpe2lmKG4+Pj49MCxmPj4+PTAsbD1sdChsPj4+MCksQT09PS0xJiYoQT00Mjk0OTY3Mjk1KSxBPUw9PkwsYj09PTApe3ZhciBQPTMyLTgqZjtBPUw9Pkw8PFA+Pj5QfXZhciB6PWwuaW5jbHVkZXMoXCJ1bnNpZ25lZFwiKT9mdW5jdGlvbihMLFope3JldHVybiBaPj4+MH06ZnVuY3Rpb24oTCxaKXtyZXR1cm4gWn07cHQobix7bmFtZTpsLGZyb21XaXJlVHlwZTpBLHRvV2lyZVR5cGU6eixhcmdQYWNrQWR2YW5jZTo4LHJlYWRWYWx1ZUZyb21Qb2ludGVyOlByKGwsZixiIT09MCksQ2I6bnVsbH0pfSxvOmZ1bmN0aW9uKG4sbCxmKXtmdW5jdGlvbiBiKFApe3ZhciB6PXAoKVtQPj4+Mj4+PjBdO3JldHVybiBQPXAoKVtQKzQ+Pj4yPj4+MF0sbmV3IEEocigpLmJ1ZmZlcixQLHopfW4+Pj49MDt2YXIgQT1bSW50OEFycmF5LFVpbnQ4QXJyYXksSW50MTZBcnJheSxVaW50MTZBcnJheSxJbnQzMkFycmF5LFVpbnQzMkFycmF5LEZsb2F0MzJBcnJheSxGbG9hdDY0QXJyYXksQmlnSW50NjRBcnJheSxCaWdVaW50NjRBcnJheV1bbF07Zj1sdChmPj4+MCkscHQobix7bmFtZTpmLGZyb21XaXJlVHlwZTpiLGFyZ1BhY2tBZHZhbmNlOjgscmVhZFZhbHVlRnJvbVBvaW50ZXI6Yn0se1liOiEwfSl9LEw6ZnVuY3Rpb24obixsKXtuPj4+PTAsbD1sdChsPj4+MCk7dmFyIGY9bD09PVwic3RkOjpzdHJpbmdcIjtwdChuLHtuYW1lOmwsZnJvbVdpcmVUeXBlOmZ1bmN0aW9uKGIpe3ZhciBBPXAoKVtiPj4+Mj4+PjBdLFA9Yis0O2lmKGYpZm9yKHZhciB6PVAsTD0wO0w8PUE7KytMKXt2YXIgWj1QK0w7aWYoTD09QXx8bygpW1o+Pj4wXT09MCl7aWYoej1PZSh6LFoteiksSz09PXZvaWQgMCl2YXIgSz16O2Vsc2UgSys9U3RyaW5nLmZyb21DaGFyQ29kZSgwKSxLKz16O3o9WisxfX1lbHNle2ZvcihLPUFycmF5KEEpLEw9MDtMPEE7KytMKUtbTF09U3RyaW5nLmZyb21DaGFyQ29kZShvKClbUCtMPj4+MF0pO0s9Sy5qb2luKFwiXCIpfXJldHVybiB3dChiKSxLfSx0b1dpcmVUeXBlOmZ1bmN0aW9uKGIsQSl7QSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyJiYoQT1uZXcgVWludDhBcnJheShBKSk7dmFyIFA9dHlwZW9mIEE9PVwic3RyaW5nXCI7aWYoIShQfHxBIGluc3RhbmNlb2YgVWludDhBcnJheXx8QSBpbnN0YW5jZW9mIFVpbnQ4Q2xhbXBlZEFycmF5fHxBIGluc3RhbmNlb2YgSW50OEFycmF5KSl0aHJvdyBuZXcgUWUoXCJDYW5ub3QgcGFzcyBub24tc3RyaW5nIHRvIHN0ZDo6c3RyaW5nXCIpO3ZhciB6PWYmJlA/SmUoQSk6QS5sZW5ndGgsTD1Scig0K3orMSksWj1MKzQ7aWYocCgpW0w+Pj4yPj4+MF09eixmJiZQKUR0KEEsWix6KzEpO2Vsc2UgaWYoUClmb3IoUD0wO1A8ejsrK1Ape3ZhciBLPUEuY2hhckNvZGVBdChQKTtpZigyNTU8Syl0aHJvdyB3dChaKSxuZXcgUWUoXCJTdHJpbmcgaGFzIFVURi0xNiBjb2RlIHVuaXRzIHRoYXQgZG8gbm90IGZpdCBpbiA4IGJpdHNcIik7bygpW1orUD4+PjBdPUt9ZWxzZSBmb3IoUD0wO1A8ejsrK1ApbygpW1orUD4+PjBdPUFbUF07cmV0dXJuIGIhPT1udWxsJiZiLnB1c2god3QsTCksTH0sYXJnUGFja0FkdmFuY2U6OCxyZWFkVmFsdWVGcm9tUG9pbnRlcjpubixDYihiKXt3dChiKX19KX0sQjpmdW5jdGlvbihuLGwsZil7aWYobj4+Pj0wLGw+Pj49MCxmPj4+PTAsZj1sdChmKSxsPT09Mil2YXIgYj1hbixBPXNuLFA9aXIsej0oKT0+dSgpLEw9MTtlbHNlIGw9PT00JiYoYj1qbixBPXVlLFA9dW4sej0oKT0+cCgpLEw9Mik7cHQobix7bmFtZTpmLGZyb21XaXJlVHlwZTpaPT57Zm9yKHZhciBLPXAoKVtaPj4+Mj4+PjBdLG9lPXooKSxnZSxTZT1aKzQsUj0wO1I8PUs7KytSKXt2YXIgbGU9Wis0K1IqbDsoUj09S3x8b2VbbGU+Pj5MXT09MCkmJihTZT1iKFNlLGxlLVNlKSxnZT09PXZvaWQgMD9nZT1TZTooZ2UrPVN0cmluZy5mcm9tQ2hhckNvZGUoMCksZ2UrPVNlKSxTZT1sZStsKX1yZXR1cm4gd3QoWiksZ2V9LHRvV2lyZVR5cGU6KFosSyk9PntpZih0eXBlb2YgSyE9XCJzdHJpbmdcIil0aHJvdyBuZXcgUWUoYENhbm5vdCBwYXNzIG5vbi1zdHJpbmcgdG8gQysrIHN0cmluZyB0eXBlICR7Zn1gKTt2YXIgb2U9UChLKSxnZT1Scig0K29lK2wpO3JldHVybiBwKClbZ2U+Pj4yXT1vZT4+TCxBKEssZ2UrNCxvZStsKSxaIT09bnVsbCYmWi5wdXNoKHd0LGdlKSxnZX0sYXJnUGFja0FkdmFuY2U6OCxyZWFkVmFsdWVGcm9tUG9pbnRlcjp0bixDYihaKXt3dChaKX19KX0sdGE6ZnVuY3Rpb24obixsKXtuPj4+PTAsbD1sdChsPj4+MCkscHQobix7WmI6ITAsbmFtZTpsLGFyZ1BhY2tBZHZhbmNlOjAsZnJvbVdpcmVUeXBlOigpPT57fSx0b1dpcmVUeXBlOigpPT57fX0pfSxxYTooKT0+MSxQOmZ1bmN0aW9uKG4sbCl7bj4+Pj0wLG49PWw+Pj4wP3NldFRpbWVvdXQoKCk9PkZ0KCkpOkU/cG9zdE1lc3NhZ2Uoe3RhcmdldFRocmVhZDpuLGNtZDpcImNoZWNrTWFpbGJveFwifSk6KG49bWUucGJbbl0pJiZuLnBvc3RNZXNzYWdlKHtjbWQ6XCJjaGVja01haWxib3hcIn0pfSxZOmZ1bmN0aW9uKG4sbCxmLGIpe2w+Pj49MCxmLz0yLGFyLmxlbmd0aD1mLGI9Yj4+PjA+Pj4zO2Zvcih2YXIgQT0wO0E8ZjtBKyspYXJbQV09aGVbYisyKkFdP2hlW2IrMipBKzFdOmgoKVtiKzIqQSsxPj4+MF07cmV0dXJuIG49MD5uP050Wy1uLTFdOkVsW25dLG1lLldiPWwsbD1uLmFwcGx5KG51bGwsYXIpLG1lLldiPTAsbH0sZWE6YXQscGE6ZnVuY3Rpb24obil7UyYmbWUucGJbbj4+PjBdLnJlZigpfSx0OmZ1bmN0aW9uKG4sbCxmKXtyZXR1cm4gbD4+Pj0wLGY+Pj49MCxuPUtlKG4+Pj4wKSxsPXNyKGwsXCJlbXZhbDo6YXNcIiksT3IobCxmLG4pfSx5OmZ1bmN0aW9uKG4pe3JldHVybiBuPj4+PTAscSgoKT0+KG49S2Uobiksbi50aGVuKHR0KSkpfSxwOmZ1bmN0aW9uKG4sbCxmLGIpe3JldHVybiBmPj4+PTAsYj4+Pj0wLG49altuPj4+MF0sbD1LZShsPj4+MCksbihudWxsLGwsZixiKX0sazpmdW5jdGlvbihuLGwsZixiLEEpe3JldHVybiBmPj4+PTAsYj4+Pj0wLEE+Pj49MCxuPWpbbj4+PjBdLGw9S2UobD4+PjApLGY9ZmUoZiksbihsLGxbZl0sYixBKX0sYzpMdCxDOmZ1bmN0aW9uKG4sbCl7cmV0dXJuIGw+Pj49MCxuPUtlKG4+Pj4wKSxsPUtlKGwpLG49PWx9LG46ZnVuY3Rpb24obil7cmV0dXJuIG4+Pj49MCxuPT09MD90dCgkZSgpKToobj1mZShuKSx0dCgkZSgpW25dKSl9LGo6ZnVuY3Rpb24obixsLGYpe2w9YWUobixsPj4+MCk7dmFyIGI9bC5zaGlmdCgpO24tLTt2YXIgQT1gcmV0dXJuIGZ1bmN0aW9uIChvYmosIGZ1bmMsIGRlc3RydWN0b3JzUmVmLCBhcmdzKSB7XFxuYCxQPTAsej1bXTtmPT09MCYmei5wdXNoKFwib2JqXCIpO2Zvcih2YXIgTD1bXCJyZXRUeXBlXCJdLFo9W2JdLEs9MDtLPG47KytLKXoucHVzaChcImFyZ1wiK0spLEwucHVzaChcImFyZ1R5cGVcIitLKSxaLnB1c2gobFtLXSksQSs9YCAgdmFyIGFyZyR7S30gPSBhcmdUeXBlJHtLfS5yZWFkVmFsdWVGcm9tUG9pbnRlcihhcmdzJHtQP1wiK1wiK1A6XCJcIn0pO1xcbmAsUCs9bFtLXS5hcmdQYWNrQWR2YW5jZTtmb3IoQSs9YCAgdmFyIHJ2ID0gJHtmPT09MT9cIm5ldyBmdW5jXCI6XCJmdW5jLmNhbGxcIn0oJHt6LmpvaW4oXCIsIFwiKX0pO1xcbmAsSz0wO0s8bjsrK0spbFtLXS5kZWxldGVPYmplY3QmJihBKz1gICBhcmdUeXBlJHtLfS5kZWxldGVPYmplY3QoYXJnJHtLfSk7XFxuYCk7cmV0dXJuIGIuWmJ8fChMLnB1c2goXCJlbXZhbF9yZXR1cm5WYWx1ZVwiKSxaLnB1c2goT3IpLEErPWAgIHJldHVybiBlbXZhbF9yZXR1cm5WYWx1ZShyZXRUeXBlLCBkZXN0cnVjdG9yc1JlZiwgcnYpO1xcbmApLEwucHVzaChBK2B9O1xcbmApLG49T3QoTCkuYXBwbHkobnVsbCxaKSxmPWBtZXRob2RDYWxsZXI8KCR7bC5tYXAob2U9Pm9lLm5hbWUpLmpvaW4oXCIsIFwiKX0pID0+ICR7Yi5uYW1lfT5gLGsoQWUoZixuKSl9LHM6ZnVuY3Rpb24obixsKXtyZXR1cm4gbD4+Pj0wLG49S2Uobj4+PjApLGw9S2UobCksdHQobltsXSl9LGU6ZnVuY3Rpb24obil7bj4+Pj0wLDQ8biYmKGV0LmdldChuKS5RYis9MSl9LHc6ZnVuY3Rpb24oKXtyZXR1cm4gdHQoW10pfSxtOmZ1bmN0aW9uKG4pe249S2Uobj4+PjApO2Zvcih2YXIgbD1BcnJheShuLmxlbmd0aCksZj0wO2Y8bi5sZW5ndGg7ZisrKWxbZl09bltmXTtyZXR1cm4gdHQobCl9LGY6ZnVuY3Rpb24obil7cmV0dXJuIHR0KGZlKG4+Pj4wKSl9LGw6ZnVuY3Rpb24oKXtyZXR1cm4gdHQoe30pfSxpOmZ1bmN0aW9uKG4pe24+Pj49MDtmb3IodmFyIGw9S2Uobik7bC5sZW5ndGg7KXt2YXIgZj1sLnBvcCgpO2wucG9wKCkoZil9THQobil9LGg6ZnVuY3Rpb24obixsLGYpe2w+Pj49MCxmPj4+PTAsbj1LZShuPj4+MCksbD1LZShsKSxmPUtlKGYpLG5bbF09Zn0sZDpmdW5jdGlvbihuLGwpe3JldHVybiBsPj4+PTAsbj1zcihuPj4+MCxcIl9lbXZhbF90YWtlX3ZhbHVlXCIpLG49bi5yZWFkVmFsdWVGcm9tUG9pbnRlcihsKSx0dChuKX0sJDpmdW5jdGlvbihuLGwpe249LTkwMDcxOTkyNTQ3NDA5OTI+bnx8OTAwNzE5OTI1NDc0MDk5MjxuP05hTjpOdW1iZXIobiksbD4+Pj0wLG49bmV3IERhdGUoMWUzKm4pLGEoKVtsPj4+Mj4+PjBdPW4uZ2V0VVRDU2Vjb25kcygpLGEoKVtsKzQ+Pj4yPj4+MF09bi5nZXRVVENNaW51dGVzKCksYSgpW2wrOD4+PjI+Pj4wXT1uLmdldFVUQ0hvdXJzKCksYSgpW2wrMTI+Pj4yPj4+MF09bi5nZXRVVENEYXRlKCksYSgpW2wrMTY+Pj4yPj4+MF09bi5nZXRVVENNb250aCgpLGEoKVtsKzIwPj4+Mj4+PjBdPW4uZ2V0VVRDRnVsbFllYXIoKS0xOTAwLGEoKVtsKzI0Pj4+Mj4+PjBdPW4uZ2V0VVRDRGF5KCksbj0obi5nZXRUaW1lKCktRGF0ZS5VVEMobi5nZXRVVENGdWxsWWVhcigpLDAsMSwwLDAsMCwwKSkvODY0ZTV8MCxhKClbbCsyOD4+PjI+Pj4wXT1ufSxhYTpmdW5jdGlvbihuLGwpe249LTkwMDcxOTkyNTQ3NDA5OTI+bnx8OTAwNzE5OTI1NDc0MDk5MjxuP05hTjpOdW1iZXIobiksbD4+Pj0wLG49bmV3IERhdGUoMWUzKm4pLGEoKVtsPj4+Mj4+PjBdPW4uZ2V0U2Vjb25kcygpLGEoKVtsKzQ+Pj4yPj4+MF09bi5nZXRNaW51dGVzKCksYSgpW2wrOD4+PjI+Pj4wXT1uLmdldEhvdXJzKCksYSgpW2wrMTI+Pj4yPj4+MF09bi5nZXREYXRlKCksYSgpW2wrMTY+Pj4yPj4+MF09bi5nZXRNb250aCgpLGEoKVtsKzIwPj4+Mj4+PjBdPW4uZ2V0RnVsbFllYXIoKS0xOTAwLGEoKVtsKzI0Pj4+Mj4+PjBdPW4uZ2V0RGF5KCk7dmFyIGY9KGt0KG4uZ2V0RnVsbFllYXIoKSk/Tm86SG8pW24uZ2V0TW9udGgoKV0rbi5nZXREYXRlKCktMXwwO2EoKVtsKzI4Pj4+Mj4+PjBdPWYsYSgpW2wrMzY+Pj4yPj4+MF09LSg2MCpuLmdldFRpbWV6b25lT2Zmc2V0KCkpLGY9bmV3IERhdGUobi5nZXRGdWxsWWVhcigpLDYsMSkuZ2V0VGltZXpvbmVPZmZzZXQoKTt2YXIgYj1uZXcgRGF0ZShuLmdldEZ1bGxZZWFyKCksMCwxKS5nZXRUaW1lem9uZU9mZnNldCgpO249KGYhPWImJm4uZ2V0VGltZXpvbmVPZmZzZXQoKT09TWF0aC5taW4oYixmKSl8MCxhKClbbCszMj4+PjI+Pj4wXT1ufSxiYTpmdW5jdGlvbihuKXtuPj4+PTA7dmFyIGw9bmV3IERhdGUoYSgpW24rMjA+Pj4yPj4+MF0rMTkwMCxhKClbbisxNj4+PjI+Pj4wXSxhKClbbisxMj4+PjI+Pj4wXSxhKClbbis4Pj4+Mj4+PjBdLGEoKVtuKzQ+Pj4yPj4+MF0sYSgpW24+Pj4yPj4+MF0sMCksZj1hKClbbiszMj4+PjI+Pj4wXSxiPWwuZ2V0VGltZXpvbmVPZmZzZXQoKSxBPW5ldyBEYXRlKGwuZ2V0RnVsbFllYXIoKSw2LDEpLmdldFRpbWV6b25lT2Zmc2V0KCksUD1uZXcgRGF0ZShsLmdldEZ1bGxZZWFyKCksMCwxKS5nZXRUaW1lem9uZU9mZnNldCgpLHo9TWF0aC5taW4oUCxBKTtyZXR1cm4gMD5mP2EoKVtuKzMyPj4+Mj4+PjBdPSsoQSE9UCYmej09Yik6MDxmIT0oej09YikmJihBPU1hdGgubWF4KFAsQSksbC5zZXRUaW1lKGwuZ2V0VGltZSgpKzZlNCooKDA8Zj96OkEpLWIpKSksYSgpW24rMjQ+Pj4yPj4+MF09bC5nZXREYXkoKSxmPShrdChsLmdldEZ1bGxZZWFyKCkpP05vOkhvKVtsLmdldE1vbnRoKCldK2wuZ2V0RGF0ZSgpLTF8MCxhKClbbisyOD4+PjI+Pj4wXT1mLGEoKVtuPj4+Mj4+PjBdPWwuZ2V0U2Vjb25kcygpLGEoKVtuKzQ+Pj4yPj4+MF09bC5nZXRNaW51dGVzKCksYSgpW24rOD4+PjI+Pj4wXT1sLmdldEhvdXJzKCksYSgpW24rMTI+Pj4yPj4+MF09bC5nZXREYXRlKCksYSgpW24rMTY+Pj4yPj4+MF09bC5nZXRNb250aCgpLGEoKVtuKzIwPj4+Mj4+PjBdPWwuZ2V0WWVhcigpLG49bC5nZXRUaW1lKCksaXNOYU4obik/KGEoKVtvaSgpPj4+Mj4+PjBdPTYxLG49LTEpOm4vPTFlMyxCaWdJbnQobil9LFo6R28sXzpMbyxPOmZ1bmN0aW9uKG4sbCxmKXtmdW5jdGlvbiBiKEspe3JldHVybihLPUsudG9UaW1lU3RyaW5nKCkubWF0Y2goL1xcXFwoKFtBLVphLXogXSspXFxcXCkkLykpP0tbMV06XCJHTVRcIn1uPj4+PTAsbD4+Pj0wLGY+Pj49MDt2YXIgQT1uZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCksUD1uZXcgRGF0ZShBLDAsMSksej1uZXcgRGF0ZShBLDYsMSk7QT1QLmdldFRpbWV6b25lT2Zmc2V0KCk7dmFyIEw9ei5nZXRUaW1lem9uZU9mZnNldCgpLFo9TWF0aC5tYXgoQSxMKTtwKClbbj4+PjI+Pj4wXT02MCpaLGEoKVtsPj4+Mj4+PjBdPSsoQSE9TCksbj1iKFApLGw9Yih6KSxuPUZvKG4pLGw9Rm8obCksTDxBPyhwKClbZj4+PjI+Pj4wXT1uLHAoKVtmKzQ+Pj4yPj4+MF09bCk6KHAoKVtmPj4+Mj4+PjBdPWwscCgpW2YrND4+PjI+Pj4wXT1uKX0scTooKT0+e0J0KFwiXCIpfSxnOmZ1bmN0aW9uKG4sbCxmKXtyZXR1cm4gbj4+Pj0wLGw9am8obD4+PjAsZj4+PjApLE50W25dLmFwcGx5KG51bGwsbCl9LE06ZnVuY3Rpb24obixsLGYpe3JldHVybiBuPj4+PTAsbD1qbyhsPj4+MCxmPj4+MCksTnRbbl0uYXBwbHkobnVsbCxsKX0sRTooKT0+e30sSTooKT0+RGF0ZS5ub3coKSxvYTooKT0+e3Rocm93IHFlKz0xLFwidW53aW5kXCJ9LFE6ZnVuY3Rpb24oKXtyZXR1cm4gNDI5NDkwMTc2MH0sdTooKT0+cGVyZm9ybWFuY2UudGltZU9yaWdpbitwZXJmb3JtYW5jZS5ub3coKSx4OigpPT5TPyh4aSgpLHVyKFNpKSkuY3B1cygpLmxlbmd0aDpuYXZpZ2F0b3IuaGFyZHdhcmVDb25jdXJyZW5jeSxOOmZ1bmN0aW9uKG4pe24+Pj49MDt2YXIgbD1vKCkubGVuZ3RoO2lmKG48PWx8fDQyOTQ5MDE3NjA8bilyZXR1cm4hMTtmb3IodmFyIGY9MTs0Pj1mO2YqPTIpe3ZhciBiPWwqKDErLjIvZik7Yj1NYXRoLm1pbihiLG4rMTAwNjYzMjk2KTt2YXIgQT1NYXRoO2I9TWF0aC5tYXgobixiKTtlOntBPShBLm1pbi5jYWxsKEEsNDI5NDkwMTc2MCxiKyg2NTUzNi1iJTY1NTM2KSU2NTUzNiktYmUuYnVmZmVyLmJ5dGVMZW5ndGgrNjU1MzUpLzY1NTM2O3RyeXtiZS5ncm93KEEpLGtlKCk7dmFyIFA9MTticmVhayBlfWNhdGNoe31QPXZvaWQgMH1pZihQKXJldHVybiEwfXJldHVybiExfSxnYTpLbyxoYTpZbyxXOlF0LEE6Wm8sRzpYbyxkYTpKbyxGOlFvLGE6YmV8fGQud2FzbU1lbW9yeSxuYTpyaSxyOmZ1bmN0aW9uKG4sbCxmLGIpe3JldHVybiByaShuPj4+MCxsPj4+MCxmPj4+MCxiPj4+MCl9fSxyZT1mdW5jdGlvbigpe2Z1bmN0aW9uIG4oZixiKXtyZXR1cm4gcmU9Zi5leHBvcnRzLHJlPWxuKCkscmU9T2woKSxtZS5VYi5wdXNoKHJlLmJiKSxUdC51bnNoaWZ0KHJlLnZhKSxNZT1iLG1yKCkscmV9dmFyIGw9e2E6UGx9O2lmKFJ0KyssZC5pbnN0YW50aWF0ZVdhc20pdHJ5e3JldHVybiBkLmluc3RhbnRpYXRlV2FzbShsLG4pfWNhdGNoKGYpe2VlKGBNb2R1bGUuaW5zdGFudGlhdGVXYXNtIGNhbGxiYWNrIGZhaWxlZCB3aXRoIGVycm9yOiAke2Z9YCksdyhmKX1yZXR1cm4gaHIobCxmdW5jdGlvbihmKXtuKGYuaW5zdGFuY2UsZi5tb2R1bGUpfSkuY2F0Y2godykse319KCk7ZC5fT3J0SW5pdD0obixsKT0+KGQuX09ydEluaXQ9cmUud2EpKG4sbCksZC5fT3J0R2V0TGFzdEVycm9yPShuLGwpPT4oZC5fT3J0R2V0TGFzdEVycm9yPXJlLnhhKShuLGwpLGQuX09ydENyZWF0ZVNlc3Npb25PcHRpb25zPShuLGwsZixiLEEsUCx6LEwsWixLKT0+KGQuX09ydENyZWF0ZVNlc3Npb25PcHRpb25zPXJlLnlhKShuLGwsZixiLEEsUCx6LEwsWixLKSxkLl9PcnRBcHBlbmRFeGVjdXRpb25Qcm92aWRlcj0obixsKT0+KGQuX09ydEFwcGVuZEV4ZWN1dGlvblByb3ZpZGVyPXJlLnphKShuLGwpLGQuX09ydEFkZEZyZWVEaW1lbnNpb25PdmVycmlkZT0obixsLGYpPT4oZC5fT3J0QWRkRnJlZURpbWVuc2lvbk92ZXJyaWRlPXJlLkFhKShuLGwsZiksZC5fT3J0QWRkU2Vzc2lvbkNvbmZpZ0VudHJ5PShuLGwsZik9PihkLl9PcnRBZGRTZXNzaW9uQ29uZmlnRW50cnk9cmUuQmEpKG4sbCxmKSxkLl9PcnRSZWxlYXNlU2Vzc2lvbk9wdGlvbnM9bj0+KGQuX09ydFJlbGVhc2VTZXNzaW9uT3B0aW9ucz1yZS5DYSkobiksZC5fT3J0Q3JlYXRlU2Vzc2lvbj0obixsLGYpPT4oZC5fT3J0Q3JlYXRlU2Vzc2lvbj1yZS5EYSkobixsLGYpLGQuX09ydFJlbGVhc2VTZXNzaW9uPW49PihkLl9PcnRSZWxlYXNlU2Vzc2lvbj1yZS5FYSkobiksZC5fT3J0R2V0SW5wdXRPdXRwdXRDb3VudD0obixsLGYpPT4oZC5fT3J0R2V0SW5wdXRPdXRwdXRDb3VudD1yZS5GYSkobixsLGYpLGQuX09ydEdldElucHV0TmFtZT0obixsKT0+KGQuX09ydEdldElucHV0TmFtZT1yZS5HYSkobixsKSxkLl9PcnRHZXRPdXRwdXROYW1lPShuLGwpPT4oZC5fT3J0R2V0T3V0cHV0TmFtZT1yZS5IYSkobixsKSxkLl9PcnRGcmVlPW49PihkLl9PcnRGcmVlPXJlLklhKShuKSxkLl9PcnRDcmVhdGVUZW5zb3I9KG4sbCxmLGIsQSxQKT0+KGQuX09ydENyZWF0ZVRlbnNvcj1yZS5KYSkobixsLGYsYixBLFApLGQuX09ydEdldFRlbnNvckRhdGE9KG4sbCxmLGIsQSk9PihkLl9PcnRHZXRUZW5zb3JEYXRhPXJlLkthKShuLGwsZixiLEEpLGQuX09ydFJlbGVhc2VUZW5zb3I9bj0+KGQuX09ydFJlbGVhc2VUZW5zb3I9cmUuTGEpKG4pLGQuX09ydENyZWF0ZVJ1bk9wdGlvbnM9KG4sbCxmLGIpPT4oZC5fT3J0Q3JlYXRlUnVuT3B0aW9ucz1yZS5NYSkobixsLGYsYiksZC5fT3J0QWRkUnVuQ29uZmlnRW50cnk9KG4sbCxmKT0+KGQuX09ydEFkZFJ1bkNvbmZpZ0VudHJ5PXJlLk5hKShuLGwsZiksZC5fT3J0UmVsZWFzZVJ1bk9wdGlvbnM9bj0+KGQuX09ydFJlbGVhc2VSdW5PcHRpb25zPXJlLk9hKShuKSxkLl9PcnRDcmVhdGVCaW5kaW5nPW49PihkLl9PcnRDcmVhdGVCaW5kaW5nPXJlLlBhKShuKSxkLl9PcnRCaW5kSW5wdXQ9KG4sbCxmKT0+KGQuX09ydEJpbmRJbnB1dD1yZS5RYSkobixsLGYpLGQuX09ydEJpbmRPdXRwdXQ9KG4sbCxmLGIpPT4oZC5fT3J0QmluZE91dHB1dD1yZS5SYSkobixsLGYsYiksZC5fT3J0Q2xlYXJCb3VuZE91dHB1dHM9bj0+KGQuX09ydENsZWFyQm91bmRPdXRwdXRzPXJlLlNhKShuKSxkLl9PcnRSZWxlYXNlQmluZGluZz1uPT4oZC5fT3J0UmVsZWFzZUJpbmRpbmc9cmUuVGEpKG4pLGQuX09ydFJ1bldpdGhCaW5kaW5nPShuLGwsZixiLEEpPT4oZC5fT3J0UnVuV2l0aEJpbmRpbmc9cmUuVWEpKG4sbCxmLGIsQSksZC5fT3J0UnVuPShuLGwsZixiLEEsUCx6LEwpPT4oZC5fT3J0UnVuPXJlLlZhKShuLGwsZixiLEEsUCx6LEwpLGQuX09ydEVuZFByb2ZpbGluZz1uPT4oZC5fT3J0RW5kUHJvZmlsaW5nPXJlLldhKShuKSxkLl9Kc2VwT3V0cHV0PShuLGwsZik9PihkLl9Kc2VwT3V0cHV0PXJlLlhhKShuLGwsZiksZC5fSnNlcEdldE5vZGVOYW1lPW49PihkLl9Kc2VwR2V0Tm9kZU5hbWU9cmUuWWEpKG4pO3ZhciBvaT0oKT0+KG9pPXJlLlphKSgpLHBuPWQuX3B0aHJlYWRfc2VsZj0oKT0+KHBuPWQuX3B0aHJlYWRfc2VsZj1yZS5fYSkoKSxScj1kLl9tYWxsb2M9bj0+KFJyPWQuX21hbGxvYz1yZS4kYSkobiksd3Q9ZC5fZnJlZT1uPT4od3Q9ZC5fZnJlZT1yZS5hYikobik7ZC5fX2Vtc2NyaXB0ZW5fdGxzX2luaXQ9KCk9PihkLl9fZW1zY3JpcHRlbl90bHNfaW5pdD1yZS5iYikoKTt2YXIgaWk9bj0+KGlpPXJlLmNiKShuKTtkLl9fZW1iaW5kX2luaXRpYWxpemVfYmluZGluZ3M9KCk9PihkLl9fZW1iaW5kX2luaXRpYWxpemVfYmluZGluZ3M9cmUuZGIpKCk7dmFyIGFpPWQuX19lbXNjcmlwdGVuX3RocmVhZF9pbml0PShuLGwsZixiLEEsUCk9PihhaT1kLl9fZW1zY3JpcHRlbl90aHJlYWRfaW5pdD1yZS5mYikobixsLGYsYixBLFApO2QuX19lbXNjcmlwdGVuX3RocmVhZF9jcmFzaGVkPSgpPT4oZC5fX2Vtc2NyaXB0ZW5fdGhyZWFkX2NyYXNoZWQ9cmUuZ2IpKCk7dmFyIHNpPShuLGwsZixiKT0+KHNpPXJlLmhiKShuLGwsZixiKSxabj1uPT4oWm49cmUuaWIpKG4pLFhuPWQuX19lbXNjcmlwdGVuX3RocmVhZF9leGl0PW49PihYbj1kLl9fZW1zY3JpcHRlbl90aHJlYWRfZXhpdD1yZS5qYikobiksdWk9KCk9Pih1aT1yZS5rYikoKSxsaT0obixsKT0+KGxpPXJlLmxiKShuLGwpLEpuPSgpPT4oSm49cmUubWIpKCksbW49bj0+KG1uPXJlLm5iKShuKSxRbj1uPT4oUW49cmUub2IpKG4pLGRpPWQuZHluQ2FsbF9paT0obixsKT0+KGRpPWQuZHluQ2FsbF9paT1yZS5xYikobixsKSxjaT1uPT4oY2k9cmUucmIpKG4pLHBpPSgpPT4ocGk9cmUuc2IpKCksbWk9bj0+KG1pPXJlLnRiKShuKSxmaT0oKT0+KGZpPXJlLnViKSgpO2QuX19fc3RhcnRfZW1fanM9OTU4ODcxLGQuX19fc3RvcF9lbV9qcz05NTkwMzI7ZnVuY3Rpb24gT2woKXt2YXIgbj1yZTtuPU9iamVjdC5hc3NpZ24oe30sbik7dmFyIGw9Yj0+KCk9PmIoKT4+PjAsZj1iPT5BPT5iKEEpPj4+MDtyZXR1cm4gbi5aYT1sKG4uWmEpLG4uX2E9bChuLl9hKSxuLiRhPWYobi4kYSksbi5jYj1mKG4uY2IpLG4uZW1zY3JpcHRlbl9tYWluX3J1bnRpbWVfdGhyZWFkX2lkPWwobi5lbXNjcmlwdGVuX21haW5fcnVudGltZV90aHJlYWRfaWQpLG4ubWI9bChuLm1iKSxuLm9iPWYobi5vYiksbn1kLndhc21NZW1vcnk9YmUsZC5zdGFja0FsbG9jPVFuLGQuc3RhY2tTYXZlPUpuLGQuc3RhY2tSZXN0b3JlPW1uLGQua2VlcFJ1bnRpbWVBbGl2ZT0oKT0+MDxxZSxkLlVURjhUb1N0cmluZz1PZSxkLnN0cmluZ1RvVVRGOD1EdCxkLmxlbmd0aEJ5dGVzVVRGOD1KZSxkLkV4aXRTdGF0dXM9Z3IsZC5QVGhyZWFkPW1lO3ZhciBmbjtXdD1mdW5jdGlvbiBuKCl7Zm58fGhpKCksZm58fChXdD1uKX07ZnVuY3Rpb24gaGkoKXtpZighKDA8UnQpKWlmKEUpeShkKSxFfHxlcihUdCksc3RhcnRXb3JrZXIoZCk7ZWxzZXtpZihkLnByZVJ1bilmb3IodHlwZW9mIGQucHJlUnVuPT1cImZ1bmN0aW9uXCImJihkLnByZVJ1bj1bZC5wcmVSdW5dKTtkLnByZVJ1bi5sZW5ndGg7KUl0LnVuc2hpZnQoZC5wcmVSdW4uc2hpZnQoKSk7ZXIoSXQpLDA8UnR8fGZufHwoZm49ITAsZC5jYWxsZWRSdW49ITAscGV8fChFfHxlcihUdCkseShkKSxFfHxlcihWdCkpKX19cmV0dXJuIGhpKCksdC5yZWFkeX19KSgpO3R5cGVvZiBBaT09XCJvYmplY3RcIiYmdHlwZW9mIGFvPT1cIm9iamVjdFwiP2FvLmV4cG9ydHM9Q2k6dHlwZW9mIGRlZmluZT09XCJmdW5jdGlvblwiJiZkZWZpbmUuYW1kJiZkZWZpbmUoW10sKCk9PkNpKX0pO3ZhciBUaT1CcigoVnAsV2wpPT57V2wuZXhwb3J0cz1cXCdcInVzZSBzdHJpY3RcIjt2YXIgTW9kdWxlPXt9LEVOVklST05NRU5UX0lTX05PREU9dHlwZW9mIHByb2Nlc3M9PVwib2JqZWN0XCImJnR5cGVvZiBwcm9jZXNzLnZlcnNpb25zPT1cIm9iamVjdFwiJiZ0eXBlb2YgcHJvY2Vzcy52ZXJzaW9ucy5ub2RlPT1cInN0cmluZ1wiO2lmKEVOVklST05NRU5UX0lTX05PREUpe3ZhciBub2RlV29ya2VyVGhyZWFkcz1yZXF1aXJlKFwid29ya2VyX3RocmVhZHNcIikscGFyZW50UG9ydD1ub2RlV29ya2VyVGhyZWFkcy5wYXJlbnRQb3J0O3BhcmVudFBvcnQub24oXCJtZXNzYWdlXCIsZT0+b25tZXNzYWdlKHtkYXRhOmV9KSk7dmFyIGZzPXJlcXVpcmUoXCJmc1wiKSx2bT1yZXF1aXJlKFwidm1cIik7T2JqZWN0LmFzc2lnbihnbG9iYWwse3NlbGY6Z2xvYmFsLHJlcXVpcmUsTW9kdWxlLGxvY2F0aW9uOntocmVmOl9fZmlsZW5hbWV9LFdvcmtlcjpub2RlV29ya2VyVGhyZWFkcy5Xb3JrZXIsaW1wb3J0U2NyaXB0czplPT52bS5ydW5JblRoaXNDb250ZXh0KGZzLnJlYWRGaWxlU3luYyhlLFwidXRmOFwiKSx7ZmlsZW5hbWU6ZX0pLHBvc3RNZXNzYWdlOmU9PnBhcmVudFBvcnQucG9zdE1lc3NhZ2UoZSkscGVyZm9ybWFuY2U6Z2xvYmFsLnBlcmZvcm1hbmNlfHx7bm93OkRhdGUubm93fX0pfXZhciBpbml0aWFsaXplZEpTPSExO2Z1bmN0aW9uIHRocmVhZFByaW50RXJyKCl7dmFyIGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKS5qb2luKFwiIFwiKTtpZihFTlZJUk9OTUVOVF9JU19OT0RFKXtmcy53cml0ZVN5bmMoMixlK2BcXFxcbmApO3JldHVybn1jb25zb2xlLmVycm9yKGUpfWZ1bmN0aW9uIHRocmVhZEFsZXJ0KCl7dmFyIGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKS5qb2luKFwiIFwiKTtwb3N0TWVzc2FnZSh7Y21kOlwiYWxlcnRcIix0ZXh0OmUsdGhyZWFkSWQ6TW9kdWxlLl9wdGhyZWFkX3NlbGYoKX0pfXZhciBlcnI9dGhyZWFkUHJpbnRFcnI7c2VsZi5hbGVydD10aHJlYWRBbGVydCxNb2R1bGUuaW5zdGFudGlhdGVXYXNtPShlLHQpPT57dmFyIGE9TW9kdWxlLndhc21Nb2R1bGU7TW9kdWxlLndhc21Nb2R1bGU9bnVsbDt2YXIgcj1uZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UoYSxlKTtyZXR1cm4gdChyKX0sc2VsZi5vbnVuaGFuZGxlZHJlamVjdGlvbj1lPT57dGhyb3cgZS5yZWFzb258fGV9O2Z1bmN0aW9uIGhhbmRsZU1lc3NhZ2UoZSl7dHJ5e2lmKGUuZGF0YS5jbWQ9PT1cImxvYWRcIil7bGV0IGE9W107c2VsZi5vbm1lc3NhZ2U9cj0+YS5wdXNoKHIpLHNlbGYuc3RhcnRXb3JrZXI9cj0+e01vZHVsZT1yLHBvc3RNZXNzYWdlKHtjbWQ6XCJsb2FkZWRcIn0pO2ZvcihsZXQgcyBvZiBhKWhhbmRsZU1lc3NhZ2Uocyk7c2VsZi5vbm1lc3NhZ2U9aGFuZGxlTWVzc2FnZX0sTW9kdWxlLndhc21Nb2R1bGU9ZS5kYXRhLndhc21Nb2R1bGU7Zm9yKGNvbnN0IHIgb2YgZS5kYXRhLmhhbmRsZXJzKU1vZHVsZVtyXT0oLi4ucyk9Pntwb3N0TWVzc2FnZSh7Y21kOlwiY2FsbEhhbmRsZXJcIixoYW5kbGVyOnIsYXJnczpzfSl9O2lmKE1vZHVsZS53YXNtTWVtb3J5PWUuZGF0YS53YXNtTWVtb3J5LE1vZHVsZS5idWZmZXI9TW9kdWxlLndhc21NZW1vcnkuYnVmZmVyLE1vZHVsZS5FTlZJUk9OTUVOVF9JU19QVEhSRUFEPSEwLHR5cGVvZiBlLmRhdGEudXJsT3JCbG9iPT1cInN0cmluZ1wiKWltcG9ydFNjcmlwdHMoZS5kYXRhLnVybE9yQmxvYik7ZWxzZXt2YXIgdD1VUkwuY3JlYXRlT2JqZWN0VVJMKGUuZGF0YS51cmxPckJsb2IpO2ltcG9ydFNjcmlwdHModCksVVJMLnJldm9rZU9iamVjdFVSTCh0KX1vcnRXYXNtVGhyZWFkZWQoTW9kdWxlKX1lbHNlIGlmKGUuZGF0YS5jbWQ9PT1cInJ1blwiKXtNb2R1bGUuX19lbXNjcmlwdGVuX3RocmVhZF9pbml0KGUuZGF0YS5wdGhyZWFkX3B0ciwwLDAsMSksTW9kdWxlLl9fZW1zY3JpcHRlbl90aHJlYWRfbWFpbGJveF9hd2FpdChlLmRhdGEucHRocmVhZF9wdHIpLE1vZHVsZS5lc3RhYmxpc2hTdGFja1NwYWNlKCksTW9kdWxlLlBUaHJlYWQucmVjZWl2ZU9iamVjdFRyYW5zZmVyKGUuZGF0YSksTW9kdWxlLlBUaHJlYWQudGhyZWFkSW5pdFRMUygpLGluaXRpYWxpemVkSlN8fChpbml0aWFsaXplZEpTPSEwKTt0cnl7TW9kdWxlLmludm9rZUVudHJ5UG9pbnQoZS5kYXRhLnN0YXJ0X3JvdXRpbmUsZS5kYXRhLmFyZyl9Y2F0Y2goYSl7aWYoYSE9XCJ1bndpbmRcIil0aHJvdyBhfX1lbHNlIGUuZGF0YS5jbWQ9PT1cImNhbmNlbFwiP01vZHVsZS5fcHRocmVhZF9zZWxmKCkmJk1vZHVsZS5fX2Vtc2NyaXB0ZW5fdGhyZWFkX2V4aXQoLTEpOmUuZGF0YS50YXJnZXQ9PT1cInNldGltbWVkaWF0ZVwifHwoZS5kYXRhLmNtZD09PVwiY2hlY2tNYWlsYm94XCI/aW5pdGlhbGl6ZWRKUyYmTW9kdWxlLmNoZWNrTWFpbGJveCgpOmUuZGF0YS5jbWQmJihlcnIoYHdvcmtlci5qcyByZWNlaXZlZCB1bmtub3duIGNvbW1hbmQgJHtlLmRhdGEuY21kfWApLGVycihlLmRhdGEpKSl9Y2F0Y2goYSl7dGhyb3cgTW9kdWxlLl9fZW1zY3JpcHRlbl90aHJlYWRfY3Jhc2hlZD8uKCksYX19c2VsZi5vbm1lc3NhZ2U9aGFuZGxlTWVzc2FnZTtcXFxcblxcJ30pO3ZhciBsbyxzdCxNcix5bix6cixCaSxjbyxWZT1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7bG89ZT0+e3N3aXRjaChlKXtjYXNlXCJpbnQ4XCI6cmV0dXJuIDM7Y2FzZVwidWludDhcIjpyZXR1cm4gMjtjYXNlXCJib29sXCI6cmV0dXJuIDk7Y2FzZVwiaW50MTZcIjpyZXR1cm4gNTtjYXNlXCJ1aW50MTZcIjpyZXR1cm4gNDtjYXNlXCJpbnQzMlwiOnJldHVybiA2O2Nhc2VcInVpbnQzMlwiOnJldHVybiAxMjtjYXNlXCJmbG9hdDE2XCI6cmV0dXJuIDEwO2Nhc2VcImZsb2F0MzJcIjpyZXR1cm4gMTtjYXNlXCJmbG9hdDY0XCI6cmV0dXJuIDExO2Nhc2VcInN0cmluZ1wiOnJldHVybiA4O2Nhc2VcImludDY0XCI6cmV0dXJuIDc7Y2FzZVwidWludDY0XCI6cmV0dXJuIDEzO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGB1bnN1cHBvcnRlZCBkYXRhIHR5cGU6ICR7ZX1gKX19LHN0PWU9Pntzd2l0Y2goZSl7Y2FzZSAzOnJldHVyblwiaW50OFwiO2Nhc2UgMjpyZXR1cm5cInVpbnQ4XCI7Y2FzZSA5OnJldHVyblwiYm9vbFwiO2Nhc2UgNTpyZXR1cm5cImludDE2XCI7Y2FzZSA0OnJldHVyblwidWludDE2XCI7Y2FzZSA2OnJldHVyblwiaW50MzJcIjtjYXNlIDEyOnJldHVyblwidWludDMyXCI7Y2FzZSAxMDpyZXR1cm5cImZsb2F0MTZcIjtjYXNlIDE6cmV0dXJuXCJmbG9hdDMyXCI7Y2FzZSAxMTpyZXR1cm5cImZsb2F0NjRcIjtjYXNlIDg6cmV0dXJuXCJzdHJpbmdcIjtjYXNlIDc6cmV0dXJuXCJpbnQ2NFwiO2Nhc2UgMTM6cmV0dXJuXCJ1aW50NjRcIjtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgdW5zdXBwb3J0ZWQgZGF0YSB0eXBlOiAke2V9YCl9fSxNcj1lPT5bdm9pZCAwLDQsMSwxLDIsMiw0LDgsdm9pZCAwLDEsMiw4LDQsOCx2b2lkIDAsdm9pZCAwLHZvaWQgMF1bZV0seW49ZT0+e3N3aXRjaChlKXtjYXNlXCJmbG9hdDE2XCI6cmV0dXJuIFVpbnQxNkFycmF5O2Nhc2VcImZsb2F0MzJcIjpyZXR1cm4gRmxvYXQzMkFycmF5O2Nhc2VcInVpbnQ4XCI6cmV0dXJuIFVpbnQ4QXJyYXk7Y2FzZVwiaW50OFwiOnJldHVybiBJbnQ4QXJyYXk7Y2FzZVwidWludDE2XCI6cmV0dXJuIFVpbnQxNkFycmF5O2Nhc2VcImludDE2XCI6cmV0dXJuIEludDE2QXJyYXk7Y2FzZVwiaW50MzJcIjpyZXR1cm4gSW50MzJBcnJheTtjYXNlXCJib29sXCI6cmV0dXJuIFVpbnQ4QXJyYXk7Y2FzZVwiZmxvYXQ2NFwiOnJldHVybiBGbG9hdDY0QXJyYXk7Y2FzZVwidWludDMyXCI6cmV0dXJuIFVpbnQzMkFycmF5O2Nhc2VcImludDY0XCI6cmV0dXJuIEJpZ0ludDY0QXJyYXk7Y2FzZVwidWludDY0XCI6cmV0dXJuIEJpZ1VpbnQ2NEFycmF5O2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGB1bnN1cHBvcnRlZCB0eXBlOiAke2V9YCl9fSx6cj1lPT57c3dpdGNoKGUpe2Nhc2VcInZlcmJvc2VcIjpyZXR1cm4gMDtjYXNlXCJpbmZvXCI6cmV0dXJuIDE7Y2FzZVwid2FybmluZ1wiOnJldHVybiAyO2Nhc2VcImVycm9yXCI6cmV0dXJuIDM7Y2FzZVwiZmF0YWxcIjpyZXR1cm4gNDtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgdW5zdXBwb3J0ZWQgbG9nZ2luZyBsZXZlbDogJHtlfWApfX0sQmk9ZT0+ZT09PVwiZmxvYXQzMlwifHxlPT09XCJpbnQzMlwifHxlPT09XCJpbnQ2NFwifHxlPT09XCJib29sXCJ8fGU9PT1cImZsb2F0MTZcInx8ZT09PVwidWludDMyXCIsY289ZT0+e3N3aXRjaChlKXtjYXNlXCJub25lXCI6cmV0dXJuIDA7Y2FzZVwiY3B1XCI6cmV0dXJuIDE7Y2FzZVwiY3B1LXBpbm5lZFwiOnJldHVybiAyO2Nhc2VcInRleHR1cmVcIjpyZXR1cm4gMztjYXNlXCJncHUtYnVmZmVyXCI6cmV0dXJuIDQ7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYHVuc3VwcG9ydGVkIGRhdGEgbG9jYXRpb246ICR7ZX1gKX19fSk7dmFyIGJuPVEoKCk9PntcInVzZSBzdHJpY3RcIn0pO3ZhciBNaT1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7Ym4oKX0pO3ZhciB6aSxVaT1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7emk9XCIxLjE3LjAtZGV2LjIwMjQwMTE2LTgwZjI3NGNhNmZcIn0pO3ZhciBWaSxLdCxwbz1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7VWkoKTtWaT1cIndhcm5pbmdcIixLdD17d2FzbTp7fSx3ZWJnbDp7fSx3ZWJncHU6e30sdmVyc2lvbnM6e2NvbW1vbjp6aX0sc2V0IGxvZ0xldmVsKGUpe2lmKGUhPT12b2lkIDApe2lmKHR5cGVvZiBlIT1cInN0cmluZ1wifHxbXCJ2ZXJib3NlXCIsXCJpbmZvXCIsXCJ3YXJuaW5nXCIsXCJlcnJvclwiLFwiZmF0YWxcIl0uaW5kZXhPZihlKT09PS0xKXRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgbG9nZ2luZyBsZXZlbDogJHtlfWApO1ZpPWV9fSxnZXQgbG9nTGV2ZWwoKXtyZXR1cm4gVml9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoS3QsXCJsb2dMZXZlbFwiLHtlbnVtZXJhYmxlOiEwfSl9KTt2YXIgbHIsV2k9USgoKT0+e1widXNlIHN0cmljdFwiO3BvKCk7bHI9S3R9KTt2YXIgTmk9USgoKT0+e1widXNlIHN0cmljdFwifSk7dmFyIEhpPVEoKCk9PntcInVzZSBzdHJpY3RcIjt3bigpfSk7dmFyIExpPVEoKCk9PntcInVzZSBzdHJpY3RcIn0pO3ZhciBGaT1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7d24oKX0pO3ZhciB3bj1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7TmkoKTtIaSgpO0xpKCk7RmkoKX0pO3ZhciB2bj1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7d24oKX0pO3ZhciBtbyxqaSxZdCxadCxmbz1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7cG8oKTttbz0oZSx0KT0+e0t0Lndhc20udHJhY2UmJmNvbnNvbGUudGltZVN0YW1wKGAke2V9OjpPUlQ6OiR7dH1gKX0samk9KGUsdCk9PntsZXQgcj1uZXcgRXJyb3IoKS5zdGFjaz8uc3BsaXQoL1xcXFxyXFxcXG58XFxcXHJ8XFxcXG4vZyl8fFtdLG89ITE7Zm9yKGxldCBpPTA7aTxyLmxlbmd0aDtpKyspe2lmKG8mJiFyW2ldLmluY2x1ZGVzKFwiVFJBQ0VfRlVOQ1wiKSl7bGV0IHU9YEZVTkNfJHtlfTo6JHtyW2ldLnRyaW0oKS5zcGxpdChcIiBcIilbMV19YDt0JiYodSs9YDo6JHt0fWApLG1vKFwiQ1BVXCIsdSk7cmV0dXJufXJbaV0uaW5jbHVkZXMoXCJUUkFDRV9GVU5DXCIpJiYobz0hMCl9fSxZdD1lPT57S3Qud2FzbS50cmFjZSYmamkoXCJCRUdJTlwiLGUpfSxadD1lPT57S3Qud2FzbS50cmFjZSYmamkoXCJFTkRcIixlKX19KTt2YXIgcWk9USgoKT0+e1widXNlIHN0cmljdFwiO2JuKCk7dm4oKTtmbygpfSk7dmFyIEtpPVEoKCk9PntcInVzZSBzdHJpY3RcIjtxaSgpfSk7dmFyIFlpPVEoKCk9PntcInVzZSBzdHJpY3RcIn0pO3ZhciBaaT1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7Ym4oKTt2bigpfSk7dmFyIFhpPVEoKCk9PntcInVzZSBzdHJpY3RcIjtaaSgpfSk7dmFyIGRyPVEoKCk9PntcInVzZSBzdHJpY3RcIjtNaSgpO1dpKCk7S2koKTt2bigpO2ZvKCk7WWkoKTtYaSgpfSk7dmFyIFhsLEpsLEppLFFpLGVhLFFsLERlLHp0PVEoKCk9PntcInVzZSBzdHJpY3RcIjtWZSgpO1hsPVtcIlZcIixcIklcIixcIldcIixcIkVcIixcIkZcIl0sSmw9KGUsdCk9Pntjb25zb2xlLmxvZyhgWyR7WGxbZV19LCR7bmV3IERhdGUoKS50b0lTT1N0cmluZygpfV0ke3R9YCl9LGVhPShlLHQpPT57Smk9ZSxRaT10fSxRbD0oZSx0KT0+e2xldCByPXpyKGUpLG89enIoSmkpO3I+PW8mJkpsKHIsdHlwZW9mIHQ9PVwiZnVuY3Rpb25cIj90KCk6dCl9LERlPSguLi5lKT0+e1FpJiZRbCguLi5lKX19KTt2YXIgdGEscmE9USgoKT0+e1widXNlIHN0cmljdFwiO1ZlKCk7dGE9KGUsdCk9Pm5ldyh5bih0KSkoZSl9KTt2YXIgJG49USgoKT0+e1widXNlIHN0cmljdFwifSk7dmFyIF9uLGVkLG5hLGdvLGhvLGlhLGFhPVEoKCk9PntcInVzZSBzdHJpY3RcIjt6dCgpOyRuKCk7X249ZT0+TWF0aC5jZWlsKGUvMTYpKjE2LGVkPTEsbmE9KCk9PmVkKyssZ289YXN5bmMoZSx0LHIsbyk9PntsZXQgaT1fbihyKSx1PWUuZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7c2l6ZTppLHVzYWdlOkdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUfEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEfSk7dHJ5e2xldCBhPWUuZ2V0Q29tbWFuZEVuY29kZXIoKTtlLmVuZENvbXB1dGVQYXNzKCksYS5jb3B5QnVmZmVyVG9CdWZmZXIodCwwLHUsMCxpKSxlLmZsdXNoKCksYXdhaXQgdS5tYXBBc3luYyhHUFVNYXBNb2RlLlJFQUQpO2xldCBwPXUuZ2V0TWFwcGVkUmFuZ2UoKTtpZihvKXtsZXQgbT1vKCk7cmV0dXJuIG0uc2V0KG5ldyBVaW50OEFycmF5KHAsMCxyKSksbX1lbHNlIHJldHVybiBuZXcgVWludDhBcnJheShwLnNsaWNlKDAscikpfWZpbmFsbHl7dS5kZXN0cm95KCl9fSxobz1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLmJhY2tlbmQ9dDt0aGlzLnN0b3JhZ2VDYWNoZT1uZXcgTWFwLHRoaXMuZnJlZUJ1ZmZlcnM9bmV3IE1hcCx0aGlzLmZyZWVVbmlmb3JtQnVmZmVycz1uZXcgTWFwLHRoaXMuYnVmZmVyc0ZvclVwbG9hZGluZ1BlbmRpbmc9W10sdGhpcy5idWZmZXJzUGVuZGluZz1bXSx0aGlzLmV4dGVybmFsQnVmZmVycz1uZXcgTWFwfXVwbG9hZCh0LHIpe2xldCBvPXIuYnVmZmVyLGk9ci5ieXRlT2Zmc2V0LHU9ci5ieXRlTGVuZ3RoLGE9X24odSkscD10aGlzLnN0b3JhZ2VDYWNoZS5nZXQodCk7aWYoIXApdGhyb3cgbmV3IEVycm9yKFwiZ3B1IGRhdGEgZm9yIHVwbG9hZGluZyBkb2VzIG5vdCBleGlzdFwiKTtpZihwLm9yaWdpbmFsU2l6ZSE9PXUpdGhyb3cgbmV3IEVycm9yKGBpbmNvbnNpc3RlbnQgZGF0YSBzaXplLiBncHUgZGF0YSBzaXplPSR7cC5vcmlnaW5hbFNpemV9LCBkYXRhIHNpemU9JHt1fWApO2xldCBtPXRoaXMuYmFja2VuZC5kZXZpY2UuY3JlYXRlQnVmZmVyKHttYXBwZWRBdENyZWF0aW9uOiEwLHNpemU6YSx1c2FnZTpHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV8R1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkN9KSxoPW0uZ2V0TWFwcGVkUmFuZ2UoKTtuZXcgVWludDhBcnJheShoKS5zZXQobmV3IFVpbnQ4QXJyYXkobyxpLHUpKSxtLnVubWFwKCk7bGV0IGQ9dGhpcy5iYWNrZW5kLmdldENvbW1hbmRFbmNvZGVyKCk7dGhpcy5iYWNrZW5kLmVuZENvbXB1dGVQYXNzKCksZC5jb3B5QnVmZmVyVG9CdWZmZXIobSwwLHAuZ3B1RGF0YS5idWZmZXIsMCxhKSxEZShcInZlcmJvc2VcIiwoKT0+YFtXZWJHUFVdIEdwdURhdGFNYW5hZ2VyLnVwbG9hZChpZD0ke3R9KWApLHRoaXMuYnVmZmVyc0ZvclVwbG9hZGluZ1BlbmRpbmcucHVzaChtKX1tZW1jcHkodCxyKXtsZXQgbz10aGlzLnN0b3JhZ2VDYWNoZS5nZXQodCk7aWYoIW8pdGhyb3cgbmV3IEVycm9yKFwic291cmNlIGdwdSBkYXRhIGZvciBtZW1jcHkgZG9lcyBub3QgZXhpc3RcIik7bGV0IGk9dGhpcy5zdG9yYWdlQ2FjaGUuZ2V0KHIpO2lmKCFpKXRocm93IG5ldyBFcnJvcihcImRlc3RpbmF0aW9uIGdwdSBkYXRhIGZvciBtZW1jcHkgZG9lcyBub3QgZXhpc3RcIik7aWYoby5vcmlnaW5hbFNpemUhPT1pLm9yaWdpbmFsU2l6ZSl0aHJvdyBuZXcgRXJyb3IoXCJpbmNvbnNpc3RlbnQgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBncHUgZGF0YSBzaXplXCIpO2xldCB1PV9uKG8ub3JpZ2luYWxTaXplKSxhPXRoaXMuYmFja2VuZC5nZXRDb21tYW5kRW5jb2RlcigpO3RoaXMuYmFja2VuZC5lbmRDb21wdXRlUGFzcygpLGEuY29weUJ1ZmZlclRvQnVmZmVyKG8uZ3B1RGF0YS5idWZmZXIsMCxpLmdwdURhdGEuYnVmZmVyLDAsdSl9cmVnaXN0ZXJFeHRlcm5hbEJ1ZmZlcih0LHIsbyl7bGV0IGk7aWYobyl7aWYoaT10aGlzLmV4dGVybmFsQnVmZmVycy5nZXQobyksaT09PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoXCJwcmV2aW91cyBidWZmZXIgaXMgbm90IHJlZ2lzdGVyZWRcIik7aWYodD09PW8pcmV0dXJuIERlKFwidmVyYm9zZVwiLCgpPT5gW1dlYkdQVV0gR3B1RGF0YU1hbmFnZXIucmVnaXN0ZXJFeHRlcm5hbEJ1ZmZlcihzaXplPSR7cn0pID0+IGlkPSR7aX0sIGJ1ZmZlciBpcyB0aGUgc2FtZSwgc2tpcC5gKSxpO3RoaXMuZXh0ZXJuYWxCdWZmZXJzLmRlbGV0ZShvKX1lbHNlIGk9bmEoKTtyZXR1cm4gdGhpcy5zdG9yYWdlQ2FjaGUuc2V0KGkse2dwdURhdGE6e2lkOmksdHlwZTowLGJ1ZmZlcjp0fSxvcmlnaW5hbFNpemU6cn0pLHRoaXMuZXh0ZXJuYWxCdWZmZXJzLnNldCh0LGkpLERlKFwidmVyYm9zZVwiLCgpPT5gW1dlYkdQVV0gR3B1RGF0YU1hbmFnZXIucmVnaXN0ZXJFeHRlcm5hbEJ1ZmZlcihzaXplPSR7cn0pID0+IGlkPSR7aX0sIHJlZ2lzdGVyZWQuYCksaX11bnJlZ2lzdGVyRXh0ZXJuYWxCdWZmZXIodCl7bGV0IHI9dGhpcy5leHRlcm5hbEJ1ZmZlcnMuZ2V0KHQpO3IhPT12b2lkIDAmJih0aGlzLnN0b3JhZ2VDYWNoZS5kZWxldGUociksdGhpcy5leHRlcm5hbEJ1ZmZlcnMuZGVsZXRlKHQpLERlKFwidmVyYm9zZVwiLCgpPT5gW1dlYkdQVV0gR3B1RGF0YU1hbmFnZXIudW5yZWdpc3RlckV4dGVybmFsQnVmZmVyKCkgPT4gaWQ9JHtyfWApKX1jcmVhdGUodCxyPUdQVUJ1ZmZlclVzYWdlLlNUT1JBR0V8R1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkN8R1BVQnVmZmVyVXNhZ2UuQ09QWV9EU1Qpe2xldCBvPV9uKHQpLGksdT0ociZHUFVCdWZmZXJVc2FnZS5TVE9SQUdFKT09PUdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UsYT0ociZHUFVCdWZmZXJVc2FnZS5VTklGT1JNKT09PUdQVUJ1ZmZlclVzYWdlLlVOSUZPUk07aWYodXx8YSl7bGV0IG09dT90aGlzLmZyZWVCdWZmZXJzOnRoaXMuZnJlZVVuaWZvcm1CdWZmZXJzLGg9bS5nZXQobyk7aHx8KGg9W10sbS5zZXQobyxoKSksaC5sZW5ndGg+MD9pPWgucG9wKCk6aT10aGlzLmJhY2tlbmQuZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7c2l6ZTpvLHVzYWdlOnJ9KX1lbHNlIGk9dGhpcy5iYWNrZW5kLmRldmljZS5jcmVhdGVCdWZmZXIoe3NpemU6byx1c2FnZTpyfSk7bGV0IHA9e2lkOm5hKCksdHlwZTowLGJ1ZmZlcjppfTtyZXR1cm4gdGhpcy5zdG9yYWdlQ2FjaGUuc2V0KHAuaWQse2dwdURhdGE6cCxvcmlnaW5hbFNpemU6dH0pLERlKFwidmVyYm9zZVwiLCgpPT5gW1dlYkdQVV0gR3B1RGF0YU1hbmFnZXIuY3JlYXRlKHNpemU9JHt0fSkgPT4gaWQ9JHtwLmlkfWApLHB9Z2V0KHQpe3JldHVybiB0aGlzLnN0b3JhZ2VDYWNoZS5nZXQodCk/LmdwdURhdGF9cmVsZWFzZSh0KXtsZXQgcj10aGlzLnN0b3JhZ2VDYWNoZS5nZXQodCk7aWYoIXIpdGhyb3cgbmV3IEVycm9yKFwicmVsZWFzaW5nIGRhdGEgZG9lcyBub3QgZXhpc3RcIik7cmV0dXJuIERlKFwidmVyYm9zZVwiLCgpPT5gW1dlYkdQVV0gR3B1RGF0YU1hbmFnZXIucmVsZWFzZShpZD0ke3R9KSwgZ3B1RGF0YUlkPSR7ci5ncHVEYXRhLmlkfWApLHRoaXMuc3RvcmFnZUNhY2hlLmRlbGV0ZSh0KSx0aGlzLmJ1ZmZlcnNQZW5kaW5nLnB1c2goci5ncHVEYXRhLmJ1ZmZlciksci5vcmlnaW5hbFNpemV9YXN5bmMgZG93bmxvYWQodCxyKXtsZXQgbz10aGlzLnN0b3JhZ2VDYWNoZS5nZXQodCk7aWYoIW8pdGhyb3cgbmV3IEVycm9yKFwiZGF0YSBkb2VzIG5vdCBleGlzdFwiKTthd2FpdCBnbyh0aGlzLmJhY2tlbmQsby5ncHVEYXRhLmJ1ZmZlcixvLm9yaWdpbmFsU2l6ZSxyKX1yZWZyZXNoUGVuZGluZ0J1ZmZlcnMoKXtmb3IobGV0IHQgb2YgdGhpcy5idWZmZXJzRm9yVXBsb2FkaW5nUGVuZGluZyl0LmRlc3Ryb3koKTt0aGlzLmJ1ZmZlcnNGb3JVcGxvYWRpbmdQZW5kaW5nPVtdO2ZvcihsZXQgdCBvZiB0aGlzLmJ1ZmZlcnNQZW5kaW5nKSh0LnVzYWdlJkdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UpPT09R1BVQnVmZmVyVXNhZ2UuU1RPUkFHRT90aGlzLmZyZWVCdWZmZXJzLmdldCh0LnNpemUpLnB1c2godCk6KHQudXNhZ2UmR1BVQnVmZmVyVXNhZ2UuVU5JRk9STSk9PT1HUFVCdWZmZXJVc2FnZS5VTklGT1JNP3RoaXMuZnJlZVVuaWZvcm1CdWZmZXJzLmdldCh0LnNpemUpLnB1c2godCk6dC5kZXN0cm95KCk7dGhpcy5idWZmZXJzUGVuZGluZz1bXX1kaXNwb3NlKCl7dGhpcy5mcmVlQnVmZmVycy5mb3JFYWNoKHQ9Pnt0LmZvckVhY2gocj0+e3IuZGVzdHJveSgpfSl9KSx0aGlzLmZyZWVVbmlmb3JtQnVmZmVycy5mb3JFYWNoKHQ9Pnt0LmZvckVhY2gocj0+e3IuZGVzdHJveSgpfSl9KSx0aGlzLnN0b3JhZ2VDYWNoZS5mb3JFYWNoKHQ9Pnt0LmdwdURhdGEuYnVmZmVyLmRlc3Ryb3koKX0pLHRoaXMuc3RvcmFnZUNhY2hlPW5ldyBNYXAsdGhpcy5mcmVlQnVmZmVycz1uZXcgTWFwLHRoaXMuZnJlZVVuaWZvcm1CdWZmZXJzPW5ldyBNYXB9fSxpYT0oLi4uZSk9Pm5ldyBobyguLi5lKX0pO3ZhciB5byx4ZSxZZT1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7eW89Y2xhc3N7Y29uc3RydWN0b3IodCl7T2JqZWN0LmFzc2lnbih0aGlzLHQpfWdldCBjYWNoZUtleSgpe3JldHVybiB0aGlzLmtleXx8KHRoaXMua2V5PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpLnNvcnQoKS5tYXAodD0+YCR7dGhpc1t0XX1gKS5qb2luKFwiO1wiKSksdGhpcy5rZXl9fSx4ZT1lPT5uZXcgeW8oZSl9KTt2YXIgYm8sdnQsVyxYdCxTbix4bixDbixDZT1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7Ym89Y2xhc3N7c3RhdGljIGNhbGNNYXRNdWxTaGFwZSh0LHIpe3JldHVybiB0WzFdIT09clswXT92b2lkIDA6W3RbMF0sclsxXV19fSx2dD1jbGFzc3tzdGF0aWMgY2FsY1NoYXBlKHQscixvPSExKXtsZXQgaT10Lmxlbmd0aCx1PXIubGVuZ3RoO2lmKGk9PT0wKXJldHVybiByO2lmKHU9PT0wKXJldHVybiB0O2xldCBhPU1hdGgubWF4KHQubGVuZ3RoLHIubGVuZ3RoKSxwPW5ldyBBcnJheShhKTtpZihvKXtpZihpPDJ8fHU8MilyZXR1cm47bGV0IG09Ym8uY2FsY01hdE11bFNoYXBlKFt0W2ktMl0sdFtpLTFdXSxbclt1LTJdLHJbdS0xXV0pO2lmKG09PT12b2lkIDApcmV0dXJuO1twW2EtMl0scFthLTFdXT1tfWZvcihsZXQgbT1vPzM6MTttPD1hO20rKyl7bGV0IGg9aS1tPDA/MTp0W2ktbV0sZD11LW08MD8xOnJbdS1tXTtpZihoIT09ZCYmaD4xJiZkPjEpcmV0dXJuO3BbYS1tXT1NYXRoLm1heChoLGQpfXJldHVybiBwfXN0YXRpYyBpc1ZhbGlkQnJvYWRjYXN0KHQscil7bGV0IG89dC5sZW5ndGgsaT1yLmxlbmd0aDtpZihvPmkpcmV0dXJuITE7Zm9yKGxldCB1PTE7dTw9bzt1KyspaWYodFtvLXVdIT09MSYmdFtvLXVdIT09cltpLXVdKXJldHVybiExO3JldHVybiEwfX0sVz1jbGFzcyBle3N0YXRpYyBzaXplKHQpe3JldHVybiBlLmdldFNpemVGcm9tRGltZW5zaW9uUmFuZ2UodCwwLHQubGVuZ3RoKX1zdGF0aWMgc2l6ZUZyb21EaW1lbnNpb24odCxyKXtpZihyPDB8fHI+dC5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIGRpbWVuc2lvbiBvZiAke3J9IGZvciBzaXplRnJvbURpbWVuc2lvbiBhcyBUZW5zb3IgaGFzICR7dC5sZW5ndGh9IGRpbWVuc2lvbnMuYCk7cmV0dXJuIGUuZ2V0U2l6ZUZyb21EaW1lbnNpb25SYW5nZSh0LHIsdC5sZW5ndGgpfXN0YXRpYyBzaXplVG9EaW1lbnNpb24odCxyKXtpZihyPDB8fHI+dC5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIGRpbWVuc2lvbiBvZiAke3J9IGZvciBzaXplVG9EaW1lbnNpb24gYXMgVGVuc29yIGhhcyAke3QubGVuZ3RofSBkaW1lbnNpb25zLmApO3JldHVybiBlLmdldFNpemVGcm9tRGltZW5zaW9uUmFuZ2UodCwwLHIpfXN0YXRpYyBnZXRTaXplRnJvbURpbWVuc2lvblJhbmdlKHQscixvKXtsZXQgaT0xO2ZvcihsZXQgdT1yO3U8bzt1Kyspe2lmKHRbdV08MCl0aHJvdyBuZXcgRXJyb3IoXCJjYW5ub3QgZ2V0IHZhbGlkIHNpemUgZnJvbSBzcGVjaWZpZWQgZGltZW5zaW9uIHJhbmdlLiBNb3N0IGxpa2VseSB0aGUgcmFuZ2UgY29udGFpbnMgbmVnYXRpdmUgdmFsdWVzIGluIHRoZW0uXCIpO2kqPXRbdV19cmV0dXJuIGl9c3RhdGljIGNvbXB1dGVTdHJpZGVzKHQpe2xldCByPXQubGVuZ3RoO2lmKHI9PT0wKXJldHVybltdO2lmKHI9PT0xKXJldHVyblsxXTtsZXQgbz1uZXcgQXJyYXkocik7b1tyLTFdPTEsb1tyLTJdPXRbci0xXTtmb3IobGV0IGk9ci0zO2k+PTA7LS1pKW9baV09b1tpKzFdKnRbaSsxXTtyZXR1cm4gb31zdGF0aWMgbm9ybWFsaXplQXhpcyh0LHIpe2lmKHQ8LXImJnQ+PXIpdGhyb3cgbmV3IEVycm9yKFwidW5zdXBwb3J0ZWQgYXhpcyBmb3IgdGhpcyBvcGVyYXRpb24uXCIpO3JldHVybiB0PDA/dCtyOnR9c3RhdGljIG5vcm1hbGl6ZUF4ZXModCxyKXtyZXR1cm4gdC5tYXAobz0+dGhpcy5ub3JtYWxpemVBeGlzKG8scj8/dC5sZW5ndGgpKX1zdGF0aWMgc29ydEJhc2VkT25QZXJtKHQscil7cmV0dXJuIHI/ci5tYXAobz0+dFtvXSk6dC5zbGljZSgpLnJldmVyc2UoKX1zdGF0aWMgcGFkU2hhcGUodCxyKXtsZXQgbz10Lmxlbmd0aDtyZXR1cm4gdC5tYXAoKGksdSk9Pmkrclt1XStyW3Urb10pfXN0YXRpYyBhcmVFcXVhbCh0LHIpe3JldHVybiB0Lmxlbmd0aCE9PXIubGVuZ3RoPyExOnQuZXZlcnkoKG8saSk9Pm89PT1yW2ldKX19LFh0PWNsYXNzIGV7c3RhdGljIGFkanVzdFBvb2xBdHRyaWJ1dGVzKHQscixvLGksdSxhKXtpZighdCYmby5sZW5ndGghPT1yLmxlbmd0aC0yKXRocm93IG5ldyBFcnJvcihcImxlbmd0aCBvZiBzcGVjaWZpZWQga2VybmVsIHNoYXBlcyBzaG91bGQgYmUgMiBsZXNzIHRoYW4gbGVuZ3RoIG9mIGlucHV0IGRpbWVuc2lvbnNcIik7aWYodClmb3IobGV0IHA9MDtwPHIubGVuZ3RoLTI7cCsrKXA+PW8ubGVuZ3RoP28ucHVzaChyW3ArMl0pOm9bcF09cltwKzJdO2ZvcihsZXQgcD0wO3A8by5sZW5ndGg7cCsrKWlmKHA8aS5sZW5ndGgpe2lmKGlbcF08MCl0aHJvdyBuZXcgRXJyb3IoXCJzdHJpZGVzIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMVwiKX1lbHNlIGkucHVzaCgxKTtmb3IobGV0IHA9MDtwPG8ubGVuZ3RoO3ArKylpZihwPHUubGVuZ3RoKXtpZih1W3BdPDApdGhyb3cgbmV3IEVycm9yKFwiZGlsYXRpb25zIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMVwiKX1lbHNlIHUucHVzaCgxKTtmb3IobGV0IHA9MDtwPG8ubGVuZ3RoKjI7cCsrKWlmKHA8YS5sZW5ndGgpe2lmKGFbcF08MCl0aHJvdyBuZXcgRXJyb3IoXCJwYWQgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAxXCIpfWVsc2UgYS5wdXNoKDApO2ZvcihsZXQgcD0wO3A8by5sZW5ndGg7cCsrKXtpZihvW3BdPD0wKXRocm93IG5ldyBFcnJvcihcImtlcm5lbCBzaGFwZXMgbmVlZCB0byBiZSBncmVhdGVyIHRoYW4gMFwiKTtpZihhW3BdPj1vW3BdfHxhW3Arby5sZW5ndGhdPj1vW3BdKXRocm93IG5ldyBFcnJvcihcInBhZHMgc2hvdWxkIGJlIHNtYWxsZXIgdGhhbiBrZXJuZWxcIil9fXN0YXRpYyBhZGp1c3RQYWRzQmFzZWRPbkF1dG9QYWQodCxyLG8saSx1LGEscCl7aWYocCl7aWYodS5sZW5ndGghPT0yKih0Lmxlbmd0aC0yKSl0aHJvdyBuZXcgRXJyb3IoXCJsZW5ndGggb2YgcGFkcyBzaG91bGQgYmUgdHdpY2UgdGhlIGxlbmd0aCBvZiBkYXRhIGRpbWVuc2lvbnNcIik7aWYoci5sZW5ndGghPT10Lmxlbmd0aC0yKXRocm93IG5ldyBFcnJvcihcImxlbmd0aCBvZiBzdHJpZGVzIHNob3VsZCBiZSB0aGUgbGVuZ3RoIG9mIGRhdGEgZGltZW5zaW9uc1wiKTtpZihpLmxlbmd0aCE9PXQubGVuZ3RoLTIpdGhyb3cgbmV3IEVycm9yKFwibGVuZ3RoIG9mIGtlcm5lbCBzaGFwZXMgc2hvdWxkIGJlIHRoZSBsZW5ndGggb2YgZGF0YSBkaW1lbnNpb25zXCIpO2ZvcihsZXQgbT0wO208dC5sZW5ndGgtMjttKyspZS5hZGp1c3RQYWRBbmRSZXR1cm5TaGFwZSh0W20rKGE/MToyKV0sclttXSxvW21dLGlbbV0sdSxtLG0rdC5sZW5ndGgtMixwKX19c3RhdGljIGNvbXB1dGVQb29sT3V0cHV0U2hhcGUodCxyLG8saSx1LGEscCl7aWYoci5sZW5ndGg8PTApdGhyb3cgbmV3IEVycm9yKFwiaW5wdXQgc2hhcGUgbXVzdCBiZSBvZiBzaXplIGdyZWF0ZXIgdGhhbiAwXCIpO2xldCBtPVtyWzBdLHJbMV1dO3JldHVybiBlLmNvbXB1dGVTaGFwZUhlbHBlcih0LHIsbSxvLGksdSxhLHApLG19c3RhdGljIGNvbXB1dGVDb252T3V0cHV0U2hhcGUodCxyLG8saSx1LGEscCl7aWYodC5sZW5ndGg8PTB8fHIubGVuZ3RoPD0wKXRocm93IG5ldyBFcnJvcihcImludmFsaWQgaW5wdXQgdGVuc29yIGRpbXMgb3IgaW52YWxpZCBmaWx0ZXIgdGVuc29yIGRpbXNcIik7bGV0IG09W3RbMF0sclswXV07cmV0dXJuIGUuY29tcHV0ZVNoYXBlSGVscGVyKCExLHQsbSxvLGksdSxhLHApLG19c3RhdGljIGNvbXB1dGVTaGFwZUhlbHBlcih0LHIsbyxpLHUsYSxwLG0pe2lmKHQpZm9yKGxldCBoPTA7aDxyLmxlbmd0aC0yO2grKylvLnB1c2goMSk7ZWxzZSBmb3IobGV0IGg9MDtoPHIubGVuZ3RoLTI7aCsrKW8ucHVzaChlLmFkanVzdFBhZEFuZFJldHVyblNoYXBlKHJbaCsyXSxpW2hdLHVbaF0sYVtoXSxwLGgsaCtyLmxlbmd0aC0yLG0pKX1zdGF0aWMgYWRqdXN0UGFkQW5kUmV0dXJuU2hhcGUodCxyLG8saSx1LGEscCxtKXtsZXQgaD1vKihpLTEpKzE7aWYobSYmbSE9PVwiTk9UU0VUXCIpc3dpdGNoKG0pe2Nhc2VcIlZBTElEXCI6cmV0dXJuIHVbYV09MCx1W3BdPTAsTWF0aC5mbG9vcigodC1oKS9yKzEpO2Nhc2VcIlNBTUVfTE9XRVJcIjpjYXNlXCJTQU1FX1VQUEVSXCI6aWYobyE9PTEpdGhyb3cgbmV3IEVycm9yKFwiRGlsYXRpb24gbm90IHN1cHBvcnRlZCBmb3IgU0FNRV9VUFBFUiBvciBTQU1FX0xPV0VSXCIpO3tsZXQgeT0oKHQrci0xKS9yLTEpKnIraS10O3JldHVybiB1W2FdPU1hdGguZmxvb3IobT09PVwiU0FNRV9MT1dFUlwiPyh5KzEpLzI6eS8yKSx1W3BdPXktdVthXSxNYXRoLmZsb29yKCh0K3ktaSkvcisxKX1kZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIEF1dG9QYWQgdHlwZVwiKX1lbHNlIHJldHVybiBNYXRoLmZsb29yKCh0K3VbYV0rdVtwXS1oKS9yKzEpfX0sU249Y2xhc3N7c3RhdGljIGdldFNoYXBlT2ZHZW1tUmVzdWx0KHQscixvLGksdSl7aWYodC5sZW5ndGghPT0yfHxvLmxlbmd0aCE9PTIpdGhyb3cgbmV3IEVycm9yKFwic2hhcGUgbmVlZCB0byBiZSBvZiBzaXplIDJcIik7bGV0IGEscCxtO3I/KGE9dFsxXSxwPXRbMF0pOihhPXRbMF0scD10WzFdKTtsZXQgaD0tMTtpZihpPyhtPW9bMF0saD0xKToobT1vWzFdLGg9MCksb1toXSE9PXApdGhyb3cgbmV3IEVycm9yKFwiZGltZW5zaW9uIG1pc21hdGNoXCIpO2lmKGE8PTB8fG08PTB8fHA8PTApdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBzaGFwZSBzcGVjaWZpZWRcIik7aWYodSYmIXZ0LmlzVmFsaWRCcm9hZGNhc3QodSxbYSxtXSkpdGhyb3cgbmV3IEVycm9yKFwiZ2VtbTogaW52YWxpZCBiaWFzIHNoYXBlIGZvciBicm9hZGNhc3RcIik7cmV0dXJuW2EsbSxwXX19LHhuPS0zNDAyODIzNDY2Mzg1Mjg4NmUyMixDbj0zNDAyODIzNDY2Mzg1Mjg4NmUyMn0pO3ZhciB0ZCx2byxOZSxodCxHLEhlLFplLGd0LHV0LGNlLCRvLFYsSixBbix3byxzYSxjcixfZT1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7VmUoKTtDZSgpO3RkPTY0LHZvPShlLHQpPT57aWYodD09PTMpdGhyb3cgbmV3IEVycm9yKFwidmVjMyBoYXMgc2FtZSBhbGlnbm1lbnQgYXMgdmVjNCwgdXNlIHZlYzQgaW5zdGVhZFwiKTtzd2l0Y2goZSl7Y2FzZSAxMDpyZXR1cm4gdD4xP2B2ZWMke3R9PGYxNj5gOlwiZjE2XCI7Y2FzZSAxOnJldHVybiB0PjE/YHZlYyR7dH08ZjMyPmA6XCJmMzJcIjtjYXNlIDY6cmV0dXJuIHQ+MT9gdmVjJHt0fTxpMzI+YDpcImkzMlwiO2Nhc2UgMTI6cmV0dXJuIHQ+MT9gdmVjJHt0fTx1MzI+YDpcInUzMlwiO2Nhc2UgNzppZih0PjEpdGhyb3cgbmV3IEVycm9yKFwiY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQgdmVjWCBvZiB1aW50NjQgeWV0XCIpO3JldHVybltcInZlYzI8dTMyPlwiLFwiaTMyXCJdO2Nhc2UgMTM6aWYodD4xKXRocm93IG5ldyBFcnJvcihcImN1cnJlbnRseSBub3Qgc3VwcG9ydGVkIHZlY1ggb2YgdWludDY0IHlldFwiKTtyZXR1cm5bXCJ2ZWMyPHUzMj5cIixcInUzMlwiXTtjYXNlIDk6aWYodCE9PTQpdGhyb3cgbmV3IEVycm9yKFwiYm9vbCBtdXN0IGJlIHZlYzRcIik7cmV0dXJuW1widTMyXCIsXCJ2ZWM0PGJvb2w+XCJdO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGRhdGEgdHlwZTogJHtlfWApfX0sTmU9KGUsdD0xKT0+e2xldCByPXZvKGUsdCk7cmV0dXJuIHR5cGVvZiByPT1cInN0cmluZ1wiP3I6clswXX0saHQ9KGUsdD0xKT0+e2xldCByPXZvKGUsdCk7cmV0dXJuIHR5cGVvZiByPT1cInN0cmluZ1wiP3I6clsxXX0sRz1lPT5lLmxlbmd0aD09PTA/W106W3t0eXBlOlwidWludDMyXCIsZGF0YTplfSx7dHlwZTpcInVpbnQzMlwiLGRhdGE6Vy5jb21wdXRlU3RyaWRlcyhlKX1dLEhlPWU9PmUlND09PTA/NDplJTI9PT0wPzI6MSxaZT0oZT1cImYzMlwiLHQscj1cIjBcIik9PiF0fHx0PT09MT9gJHtlfSgke3J9KWA6YHZlYyR7dH08JHtlfT4oJHtyfSlgLGd0PShlLHQscik9PmU9PT1cImYzMlwiP3I6dD09PTE/YGYzMigke3J9KWA6YHZlYyR7dH1mKCR7cn0pYCx1dD0oZSx0KT0+dD09PTQ/YCgke2V9LnggKyAke2V9LnkgKyAke2V9LnogKyAke2V9LncpYDp0PT09Mj9gKCR7ZX0ueCArICR7ZX0ueSlgOnQ9PT0zP2AoJHtlfS54ICsgJHtlfS55ICsgJHtlfS56KWA6ZSxjZT0oZSx0LHIsbyk9PmUuc3RhcnRzV2l0aChcInVuaWZvcm1zLlwiKSYmcj40P3R5cGVvZiB0PT1cInN0cmluZ1wiP289PT1cImYxNlwiP2Ake2V9Wygke3R9KSAvIDhdWygke3R9KSAlIDggLyA0XVsoJHt0fSkgJSA4ICUgNF1gOmAke2V9Wygke3R9KSAvIDRdWygke3R9KSAlIDRdYDpvPT09XCJmMTZcIj9gJHtlfVske01hdGguZmxvb3IodC84KX1dWyR7TWF0aC5mbG9vcih0JTgvNCl9XVske3QlOCU0fV1gOmAke2V9WyR7TWF0aC5mbG9vcih0LzQpfV1bJHt0JTR9XWA6cj4xP2Ake2V9WyR7dH1dYDplLCRvPShlLHQscixvLGkpPT57bGV0IHU9dHlwZW9mIHI9PVwibnVtYmVyXCIsYT11P3I6ci5sZW5ndGgscD1bLi4ubmV3IEFycmF5KGEpLmtleXMoKV0sbT1hPDI/XCJ1MzJcIjphPD00P2B2ZWMke2F9PHUzMj5gOmBhcnJheTx1MzIsICR7YX0+YCxoPXZvKHQsaSksZD10eXBlb2YgaD09XCJzdHJpbmdcIj9oOmhbMV0seT10eXBlb2YgaD09XCJzdHJpbmdcIj9oOmhbMF0sdz17aW5kaWNlczptLHZhbHVlOmQsc3RvcmFnZTp5LHRlbnNvcjp0fSxfPUY9PnR5cGVvZiBGPT1cInN0cmluZ1wiP0Y6YCR7Rn11YCx2PXtvZmZzZXRUb0luZGljZXM6ITEsaW5kaWNlc1RvT2Zmc2V0OiExLGJyb2FkY2FzdGVkSW5kaWNlc1RvT2Zmc2V0OiExLHNldDohMSxzZXRCeUluZGljZXM6ITEsZ2V0OiExLGdldEJ5SW5kaWNlczohMX0seD11P1widW5pZm9ybXMuXCI6XCJcIixUPWAke3h9JHtlfV9zaGFwZWAsQz1gJHt4fSR7ZX1fc3RyaWRlc2AsUz1cIlwiO2ZvcihsZXQgRj0wO0Y8YS0xO0YrKylTKz1gXFxuICAgIGxldCBkaW0ke0Z9ID0gY3VycmVudCAvICR7Y2UoQyxGLGEpfTtcXG4gICAgbGV0IHJlc3Qke0Z9ID0gY3VycmVudCAlICR7Y2UoQyxGLGEpfTtcXG4gICAgaW5kaWNlc1ske0Z9XSA9IGRpbSR7Rn07XFxuICAgIGN1cnJlbnQgPSByZXN0JHtGfTtcXG4gICAgYDtTKz1gaW5kaWNlc1ske2EtMX1dID0gY3VycmVudDtgO2xldCBFPWE8Mj9cIlwiOmBcXG4gIGZuIG8yaV8ke2V9KG9mZnNldDogdTMyKSAtPiAke3cuaW5kaWNlc30ge1xcbiAgICB2YXIgaW5kaWNlczogJHt3LmluZGljZXN9O1xcbiAgICB2YXIgY3VycmVudCA9IG9mZnNldDtcXG4gICAgJHtTfVxcbiAgICByZXR1cm4gaW5kaWNlcztcXG4gIH1gLE89Rj0+KHYub2Zmc2V0VG9JbmRpY2VzPSEwLGE8Mj9GOmBvMmlfJHtlfSgke0Z9KWApLFU9W107aWYoYT49Milmb3IobGV0IEY9YS0xO0Y+PTA7Ri0tKVUucHVzaChgJHtjZShDLEYsYSl9ICogKGluZGljZXNbJHtGfV0pYCk7bGV0IE09YTwyP1wiXCI6YFxcbiAgZm4gaTJvXyR7ZX0oaW5kaWNlczogJHt3LmluZGljZXN9KSAtPiB1MzIge1xcbiAgICByZXR1cm4gJHtVLmpvaW4oXCIrXCIpfTtcXG4gIH1gLE49Rj0+KHYuaW5kaWNlc1RvT2Zmc2V0PSEwLGE8Mj9GOmBpMm9fJHtlfSgke0Z9KWApLFk9KC4uLkYpPT5hPT09MD9cIjB1XCI6YCR7dy5pbmRpY2VzfSgke0YubWFwKF8pLmpvaW4oXCIsXCIpfSlgLHNlPShGLGllKT0+YTwyP2Ake0Z9YDpgJHtjZShGLGllLGEpfWAsQj0oRixpZSxoZSk9PmE8Mj9gJHtGfT0ke2hlfTtgOmAke2NlKEYsaWUsYSl9PSR7aGV9O2AsdGU9e30sUGU9KEYsaWUpPT57di5icm9hZGNhc3RlZEluZGljZXNUb09mZnNldD0hMDtsZXQgaGU9YCR7aWUubmFtZX1icm9hZGNhc3RlZEluZGljZXNUbyR7ZX1PZmZzZXRgO2lmKGhlIGluIHRlKXJldHVybmAke2hlfSgke0Z9KWA7bGV0IFhlPVtdO2ZvcihsZXQgbnQ9YS0xO250Pj0wO250LS0pe2xldCBrZT1pZS5pbmRpY2VzR2V0KFwib3V0cHV0SW5kaWNlc1wiLG50K2llLnJhbmstYSk7WGUucHVzaChgJHtzZShDLG50KX0gKiAoJHtrZX0gJSAke3NlKFQsbnQpfSlgKX1yZXR1cm4gdGVbaGVdPWBmbiAke2hlfShvdXRwdXRJbmRpY2VzOiAke2llLnR5cGUuaW5kaWNlc30pIC0+IHUzMiB7XFxuICAgICAgICAgICAgIHJldHVybiAke1hlLmxlbmd0aD4wP1hlLmpvaW4oXCIrXCIpOlwiMHVcIn07XFxuICAgICAgICAgICB9YCxgJHtoZX0oJHtGfSlgfSxFZT0oRixpZSk9PigoKT0+e2lmKHcuc3RvcmFnZT09PXcudmFsdWUpcmV0dXJuYCR7ZX1bJHtGfV09JHtpZX07YDtpZih3LnN0b3JhZ2U9PT1cInZlYzI8dTMyPlwiJiZ3LnZhbHVlPT09XCJpMzJcIilyZXR1cm5gJHtlfVske0Z9XT12ZWMyPHUzMj4odTMyKCR7aWV9KSwgc2VsZWN0KDB1LCAweEZGRkZGRkZGdSwgJHtpZX0gPCAwKSk7YDtpZih3LnN0b3JhZ2U9PT1cInZlYzI8dTMyPlwiJiZ3LnZhbHVlPT09XCJ1MzJcIilyZXR1cm5gJHtlfVske0Z9XT12ZWMyPHUzMj4odTMyKCR7aWV9KSwgMHUpO2A7aWYody5zdG9yYWdlPT09XCJ1MzJcIiYmdy52YWx1ZT09PVwidmVjNDxib29sPlwiKXJldHVybmAke2V9WyR7Rn1dPWRvdCh2ZWM0PHUzMj4oMHgxLCAweDEwMCwgMHgxMDAwMCwgMHgxMDAwMDAwKSwgdmVjNDx1MzI+KCR7aWV9KSk7YDt0aHJvdyBuZXcgRXJyb3IoYG5vdCBzdXBwb3J0ZWQgY29tYmluYXRpb24gb2Ygc3RvcmFnZSB0eXBlICR7dy5zdG9yYWdlfSBhbmQgdmFsdWUgdHlwZSAke3cudmFsdWV9IHlldGApfSkoKSxlZT1GPT4oKCk9PntpZih3LnN0b3JhZ2U9PT13LnZhbHVlKXJldHVybmAke2V9WyR7Rn1dYDtpZih3LnN0b3JhZ2U9PT1cInZlYzI8dTMyPlwiJiZ3LnZhbHVlPT09XCJpMzJcIilyZXR1cm5gaTMyKCR7ZX1bJHtGfV0ueClgO2lmKHcuc3RvcmFnZT09PVwidmVjMjx1MzI+XCImJncudmFsdWU9PT1cInUzMlwiKXJldHVybmB1MzIoJHtlfVske0Z9XS54KWA7aWYody5zdG9yYWdlPT09XCJ1MzJcIiYmdy52YWx1ZT09PVwidmVjNDxib29sPlwiKXJldHVybmB2ZWM0PGJvb2w+KGJvb2woJHtlfVske0Z9XSAmIDB4RkZ1KSwgYm9vbCgke2V9WyR7Rn1dICYgMHhGRjAwdSksIGJvb2woJHtlfVske0Z9XSAmIDB4RkYwMDAwdSksIGJvb2woJHtlfVske0Z9XSAmIDB4RkYwMDAwMDB1KSlgO3Rocm93IG5ldyBFcnJvcihgbm90IHN1cHBvcnRlZCBjb21iaW5hdGlvbiBvZiBzdG9yYWdlIHR5cGUgJHt3LnN0b3JhZ2V9IGFuZCB2YWx1ZSB0eXBlICR7dy52YWx1ZX0geWV0YCl9KSgpLGJlPWE8Mj9cIlwiOmBcXG4gIGZuIGdldF8ke2V9QnlJbmRpY2VzKGluZGljZXM6ICR7dy5pbmRpY2VzfSkgLT4gJHtkfSB7XFxuICAgIHJldHVybiAke2VlKGBpMm9fJHtlfShpbmRpY2VzKWApfTtcXG4gIH1gLE1lPWE8Mj9cIlwiOigoKT0+e2xldCBGPXAubWFwKGhlPT5gZCR7aGV9OiB1MzJgKS5qb2luKFwiLCBcIiksaWU9cC5tYXAoaGU9PmBkJHtoZX1gKS5qb2luKFwiLCBcIik7cmV0dXJuYFxcbiAgZm4gZ2V0XyR7ZX0oJHtGfSkgLT4gJHtkfSB7XFxuICAgIHJldHVybiBnZXRfJHtlfUJ5SW5kaWNlcygke1koaWUpfSk7XFxuICB9YH0pKCkscGU9KC4uLkYpPT57aWYoRi5sZW5ndGghPT1hKXRocm93IG5ldyBFcnJvcihgaW5kaWNlcyBsZW5ndGggbXVzdCBiZSAke2F9YCk7bGV0IGllPUYubWFwKF8pLmpvaW4oXCIsXCIpO3JldHVybiBhPT09MD9lZShcIjB1XCIpOmE9PT0xP2VlKGllWzBdKToodi5nZXQ9ITAsdi5nZXRCeUluZGljZXM9ITAsdi5pbmRpY2VzVG9PZmZzZXQ9ITAsYGdldF8ke2V9KCR7aWV9KWApfSx5ZT1GPT5hPDI/ZWUoRik6KHYuZ2V0QnlJbmRpY2VzPSEwLHYuaW5kaWNlc1RvT2Zmc2V0PSEwLGBnZXRfJHtlfUJ5SW5kaWNlcygke0Z9KWApLGRlPWE8Mj9cIlwiOmBcXG4gIGZuIHNldF8ke2V9QnlJbmRpY2VzKGluZGljZXM6ICR7dy5pbmRpY2VzfSwgdmFsdWU6ICR7ZH0pIHtcXG4gICAgJHtFZShgaTJvXyR7ZX0oaW5kaWNlcylgLFwidmFsdWVcIil9XFxuICB9YCx3ZT1hPDI/XCJcIjooKCk9PntsZXQgRj1wLm1hcChoZT0+YGQke2hlfTogdTMyYCkuam9pbihcIiwgXCIpLGllPXAubWFwKGhlPT5gZCR7aGV9YCkuam9pbihcIiwgXCIpO3JldHVybmBcXG4gIGZuIHNldF8ke2V9KCR7Rn0sIHZhbHVlOiAke2R9KSB7XFxuICAgIHNldF8ke2V9QnlJbmRpY2VzKCR7WShpZSl9LCB2YWx1ZSk7XFxuICB9YH0pKCk7cmV0dXJue2ltcGw6KCk9PntsZXQgRj1bXSxpZT0hMTtyZXR1cm4gdi5vZmZzZXRUb0luZGljZXMmJihGLnB1c2goRSksaWU9ITApLHYuaW5kaWNlc1RvT2Zmc2V0JiYoRi5wdXNoKE0pLGllPSEwKSx2LmJyb2FkY2FzdGVkSW5kaWNlc1RvT2Zmc2V0JiYoT2JqZWN0LnZhbHVlcyh0ZSkuZm9yRWFjaChoZT0+Ri5wdXNoKGhlKSksaWU9ITApLHYuc2V0JiYoRi5wdXNoKHdlKSxpZT0hMCksdi5zZXRCeUluZGljZXMmJihGLnB1c2goZGUpLGllPSEwKSx2LmdldCYmKEYucHVzaChNZSksaWU9ITApLHYuZ2V0QnlJbmRpY2VzJiYoRi5wdXNoKGJlKSxpZT0hMCksIXUmJmllJiZGLnVuc2hpZnQoYGNvbnN0ICR7VH0gPSAke3cuaW5kaWNlc30oJHtyLmpvaW4oXCIsXCIpfSk7YCxgY29uc3QgJHtDfSA9ICR7dy5pbmRpY2VzfSgke1cuY29tcHV0ZVN0cmlkZXMocikuam9pbihcIixcIil9KTtgKSxGLmpvaW4oYFxcbmApfSx0eXBlOncsb2Zmc2V0VG9JbmRpY2VzOk8saW5kaWNlc1RvT2Zmc2V0Ok4sYnJvYWRjYXN0ZWRJbmRpY2VzVG9PZmZzZXQ6UGUsaW5kaWNlczpZLGluZGljZXNHZXQ6c2UsaW5kaWNlc1NldDpCLHNldDooLi4uRik9PntpZihGLmxlbmd0aCE9PWErMSl0aHJvdyBuZXcgRXJyb3IoYGluZGljZXMgbGVuZ3RoIG11c3QgYmUgJHthfWApO2xldCBpZT1GW2FdO2lmKHR5cGVvZiBpZSE9XCJzdHJpbmdcIil0aHJvdyBuZXcgRXJyb3IoXCJ2YWx1ZSBtdXN0IGJlIHN0cmluZ1wiKTtsZXQgaGU9Ri5zbGljZSgwLGEpLm1hcChfKS5qb2luKFwiLFwiKTtyZXR1cm4gYT09PTA/RWUoXCIwdVwiLGllKTphPT09MT9FZShoZVswXSxpZSk6KHYuc2V0PSEwLHYuc2V0QnlJbmRpY2VzPSEwLHYuaW5kaWNlc1RvT2Zmc2V0PSEwLGBzZXRfJHtlfSgke2hlfSwgJHtpZX0pYCl9LHNldEJ5T2Zmc2V0OkVlLHNldEJ5SW5kaWNlczooRixpZSk9PmE8Mj9FZShGLGllKToodi5zZXRCeUluZGljZXM9ITAsdi5pbmRpY2VzVG9PZmZzZXQ9ITAsYHNldF8ke2V9QnlJbmRpY2VzKCR7Rn0sICR7aWV9KTtgKSxnZXQ6cGUsZ2V0QnlPZmZzZXQ6ZWUsZ2V0QnlJbmRpY2VzOnllLHVzYWdlOm8sbmFtZTplLHN0cmlkZXM6QyxzaGFwZTpULHJhbms6YX19LFY9KGUsdCxyLG89MSk9PiRvKGUsdCxyLFwiaW5wdXRcIixvKSxKPShlLHQscixvPTEpPT4kbyhlLHQscixcIm91dHB1dFwiLG8pLEFuPShlLHQscixvPTEpPT4kbyhlLHQscixcImludGVybmFsXCIsbyksd289Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5ub3JtYWxpemVkRGlzcGF0Y2hHcm91cD10O3RoaXMuaW50ZXJuYWxWYXJpYWJsZXM9W107dGhpcy52YXJpYWJsZXM9W107dGhpcy51bmlmb3Jtcz1bXTt0aGlzLnZhcmlhYmxlSW5kZXg9MH1ndWFyZEFnYWluc3RPdXRPZkJvdW5kc1dvcmtncm91cFNpemVzKHQpe3JldHVybmBpZiAoZ2xvYmFsX2lkeCA+PSAke3R5cGVvZiB0PT1cIm51bWJlclwiP2Ake3R9dWA6dH0pIHsgcmV0dXJuOyB9YH1tYWluU3RhcnQodD10ZCl7bGV0IHI9dHlwZW9mIHQ9PVwibnVtYmVyXCI/dDp0WzBdLG89dHlwZW9mIHQ9PVwibnVtYmVyXCI/MTp0WzFdLGk9dHlwZW9mIHQ9PVwibnVtYmVyXCI/MTp0WzJdLHU9dGhpcy5ub3JtYWxpemVkRGlzcGF0Y2hHcm91cFsxXT09PTEmJnRoaXMubm9ybWFsaXplZERpc3BhdGNoR3JvdXBbMl09PT0xLGE9dT9gQGJ1aWx0aW4oZ2xvYmFsX2ludm9jYXRpb25faWQpIGdsb2JhbF9pZCA6IHZlYzM8dTMyPixcXG4gICAgQGJ1aWx0aW4od29ya2dyb3VwX2lkKSB3b3JrZ3JvdXBfaWQgOiB2ZWMzPHUzMj4sXFxuICAgIEBidWlsdGluKGxvY2FsX2ludm9jYXRpb25faWQpIGxvY2FsX2lkIDogdmVjMzx1MzI+YDpgQGJ1aWx0aW4obG9jYWxfaW52b2NhdGlvbl9pZCkgbG9jYWxfaWQgOiB2ZWMzPHUzMj4sXFxuICAgIEBidWlsdGluKGxvY2FsX2ludm9jYXRpb25faW5kZXgpIGxvY2FsX2lkeCA6IHUzMixcXG4gICAgQGJ1aWx0aW4od29ya2dyb3VwX2lkKSB3b3JrZ3JvdXBfaWQgOiB2ZWMzPHUzMj4sXFxuICAgIEBidWlsdGluKG51bV93b3JrZ3JvdXBzKSBudW1fd29ya2dyb3VwcyA6IHZlYzM8dTMyPmAscD11P1wibGV0IGdsb2JhbF9pZHggPSBnbG9iYWxfaWQueDsgbGV0IGxvY2FsX2lkeCA9IGxvY2FsX2lkLng7XCI6YGxldCBnbG9iYWxfaWR4ID0gKHdvcmtncm91cF9pZC56ICogbnVtX3dvcmtncm91cHNbMF0gKiBudW1fd29ya2dyb3Vwc1sxXSArXFxuICAgICAgICAgIHdvcmtncm91cF9pZC55ICogbnVtX3dvcmtncm91cHNbMF0gKyB3b3JrZ3JvdXBfaWQueCkgKiAke3IqbyppfXUgKyBsb2NhbF9pZHg7YDtyZXR1cm5gQGNvbXB1dGUgQHdvcmtncm91cF9zaXplKCR7cn0sICR7b30sICR7aX0pXFxuICBmbiBtYWluKCR7YX0pIHtcXG4gICAgJHtwfVxcbiAgYH1hcHBlbmRWYXJpYWJsZVVuaWZvcm1zKHQpe3QucmFuayE9PTAmJih0LnNoYXBlLnN0YXJ0c1dpdGgoXCJ1bmlmb3Jtcy5cIikmJnRoaXMudW5pZm9ybXMucHVzaCh7bmFtZTp0LnNoYXBlLnJlcGxhY2UoXCJ1bmlmb3Jtcy5cIixcIlwiKSx0eXBlOlwidTMyXCIsbGVuZ3RoOnQucmFua30pLHQuc3RyaWRlcy5zdGFydHNXaXRoKFwidW5pZm9ybXMuXCIpJiZ0aGlzLnVuaWZvcm1zLnB1c2goe25hbWU6dC5zdHJpZGVzLnJlcGxhY2UoXCJ1bmlmb3Jtcy5cIixcIlwiKSx0eXBlOlwidTMyXCIsbGVuZ3RoOnQucmFua30pKX1kZWNsYXJlVmFyaWFibGUodCxyKXtpZih0LnVzYWdlPT09XCJpbnRlcm5hbFwiKXRocm93IG5ldyBFcnJvcihcImNhbm5vdCB1c2UgaW50ZXJuYWwgdmFyaWFibGUgd2l0aCBkZWNsYXJlVmFyaWFibGUoKS4gdXNlIHJlZ2lzdGVySW50ZXJuYWxWYXJpYWJsZXMoKSBpbnN0ZWFkLlwiKTt0aGlzLnZhcmlhYmxlcy5wdXNoKHQpLHRoaXMuYXBwZW5kVmFyaWFibGVVbmlmb3Jtcyh0KTtsZXQgbz10LnVzYWdlPT09XCJpbnB1dFwiP1wicmVhZFwiOlwicmVhZF93cml0ZVwiLGk9dC50eXBlLnN0b3JhZ2U7cmV0dXJuYEBncm91cCgwKSBAYmluZGluZygke3J9KSB2YXI8c3RvcmFnZSwgJHtvfT4gJHt0Lm5hbWV9OiBhcnJheTwke2l9PjtgfWRlY2xhcmVWYXJpYWJsZXMoLi4udCl7cmV0dXJuIHQubWFwKHI9PnRoaXMuZGVjbGFyZVZhcmlhYmxlKHIsdGhpcy52YXJpYWJsZUluZGV4KyspKS5qb2luKGBcXG5gKX1yZWdpc3RlckludGVybmFsVmFyaWFibGUodCl7aWYodC51c2FnZSE9PVwiaW50ZXJuYWxcIil0aHJvdyBuZXcgRXJyb3IoXCJjYW5ub3QgdXNlIGlucHV0IG9yIG91dHB1dCB2YXJpYWJsZSB3aXRoIHJlZ2lzdGVySW50ZXJuYWxWYXJpYWJsZSgpLiB1c2UgZGVjbGFyZVZhcmlhYmxlcygpIGluc3RlYWQuXCIpO3RoaXMuaW50ZXJuYWxWYXJpYWJsZXMucHVzaCh0KSx0aGlzLmFwcGVuZFZhcmlhYmxlVW5pZm9ybXModCl9cmVnaXN0ZXJJbnRlcm5hbFZhcmlhYmxlcyguLi50KXtyZXR1cm4gdC5mb3JFYWNoKHI9PnRoaXMucmVnaXN0ZXJJbnRlcm5hbFZhcmlhYmxlKHIpKSx0aGlzfXJlZ2lzdGVyVW5pZm9ybSh0LHIsbz0xKXtyZXR1cm4gdGhpcy51bmlmb3Jtcy5wdXNoKHtuYW1lOnQsdHlwZTpyLGxlbmd0aDpvfSksdGhpc31yZWdpc3RlclVuaWZvcm1zKHQpe3JldHVybiB0aGlzLnVuaWZvcm1zPXRoaXMudW5pZm9ybXMuY29uY2F0KHQpLHRoaXN9dW5pZm9ybURlY2xhcmF0aW9uKCl7aWYodGhpcy51bmlmb3Jtcy5sZW5ndGg9PT0wKXJldHVyblwiXCI7bGV0IHQ9W107Zm9yKGxldHtuYW1lOnIsdHlwZTpvLGxlbmd0aDppfW9mIHRoaXMudW5pZm9ybXMpaWYoaSYmaT40KW89PT1cImYxNlwiP3QucHVzaChgQGFsaWduKDE2KSAke3J9OmFycmF5PG1hdDJ4NDwke299PiwgJHtNYXRoLmNlaWwoaS84KX0+YCk6dC5wdXNoKGAke3J9OmFycmF5PHZlYzQ8JHtvfT4sICR7TWF0aC5jZWlsKGkvNCl9PmApO2Vsc2V7bGV0IHU9aT09bnVsbHx8aT09PTE/bzpgdmVjJHtpfTwke299PmA7dC5wdXNoKGAke3J9OiR7dX1gKX1yZXR1cm5gXFxuICAgICAgc3RydWN0IFVuaWZvcm1zIHsgJHt0LmpvaW4oXCIsIFwiKX0gfTtcXG4gICAgICBAZ3JvdXAoMCkgQGJpbmRpbmcoJHt0aGlzLnZhcmlhYmxlSW5kZXh9KSB2YXI8dW5pZm9ybT4gdW5pZm9ybXM6IFVuaWZvcm1zO2B9Z2V0IGFkZGl0aW9uYWxJbXBsZW1lbnRhdGlvbnMoKXtyZXR1cm4gdGhpcy51bmlmb3JtRGVjbGFyYXRpb24oKSt0aGlzLnZhcmlhYmxlcy5tYXAodD0+dC5pbXBsKCkpLmpvaW4oYFxcbmApK3RoaXMuaW50ZXJuYWxWYXJpYWJsZXMubWFwKHQ9PnQuaW1wbCgpKS5qb2luKGBcXG5gKX19LHNhPWU9Pm5ldyB3byhlKSxjcj0oZSx0KT0+e2xldCByPWUubGVuZ3RoLG89W107Zm9yKGxldCBpPTA7aTxyO2krKyl7bGV0IHU9ci0xLWksYT1lW3VdfHwxOyh0W3QubGVuZ3RoLTEtaV18fDEpPjEmJmE9PT0xJiZvLnVuc2hpZnQodSl9cmV0dXJuIG99fSk7dmFyIHJkLHVhLG5kLG9kLHl0LGxhLGRhLHByPVEoKCk9PntcInVzZSBzdHJpY3RcIjtDZSgpO1llKCk7X2UoKTtyZD1lPT57aWYoIWV8fGUubGVuZ3RoIT09MSl0aHJvdyBuZXcgRXJyb3IoXCJUcmFuc3Bvc2UgcmVxdWlyZXMgMSBpbnB1dC5cIil9LHVhPShlLHQpPT50JiZ0Lmxlbmd0aCE9PWU/Wy4uLm5ldyBBcnJheShlKS5rZXlzKCldLnJldmVyc2UoKTp0LG5kPShlLHQpPT5XLnNvcnRCYXNlZE9uUGVybShlLHVhKGUubGVuZ3RoLHQpKSxvZD0oZSx0LHIsbyk9PntsZXQgaT1bXTtpLnB1c2goYGZuIHBlcm0oaTogJHtvLnR5cGUuaW5kaWNlc30pIC0+ICR7ci50eXBlLmluZGljZXN9IHtcXG4gICAgdmFyIGE6ICR7ci50eXBlLmluZGljZXN9O2ApO2ZvcihsZXQgdT0wO3U8dDsrK3UpaS5wdXNoKHIuaW5kaWNlc1NldChcImFcIixlW3VdLGBpWyR7dX1dYCkpO3JldHVybiBpLnB1c2goXCJyZXR1cm4gYTt9XCIpLGkuam9pbihgXFxuYCl9LHl0PShlLHQpPT57bGV0IHI9ZS5kYXRhVHlwZSxvPWUuZGltcy5sZW5ndGgsaT11YShvLHQpLHU9bmQoZS5kaW1zLGkpLGE9SihcIm91dHB1dFwiLHIsdS5sZW5ndGgpLHA9VihcImFcIixyLG8pLG09aD0+YFxcbiAgJHtoLnJlZ2lzdGVyVW5pZm9ybShcIm91dHB1dF9zaXplXCIsXCJ1MzJcIikuZGVjbGFyZVZhcmlhYmxlcyhwLGEpfVxcblxcbiAgJHtvZChpLG8scCxhKX1cXG5cXG4gICR7aC5tYWluU3RhcnQoKX1cXG4gICAgJHtoLmd1YXJkQWdhaW5zdE91dE9mQm91bmRzV29ya2dyb3VwU2l6ZXMoXCJ1bmlmb3Jtcy5vdXRwdXRfc2l6ZVwiKX1cXG5cXG4gICAgbGV0IGluZGljZXMgPSAke2Eub2Zmc2V0VG9JbmRpY2VzKFwiZ2xvYmFsX2lkeFwiKX07XFxuICAgIGxldCBhSW5kaWNlcyA9IHBlcm0oaW5kaWNlcyk7XFxuXFxuICAgICR7YS5zZXRCeU9mZnNldChcImdsb2JhbF9pZHhcIixwLmdldEJ5SW5kaWNlcyhcImFJbmRpY2VzXCIpKX1cXG4gIH1gO3JldHVybntuYW1lOlwiVHJhbnNwb3NlXCIsc2hhZGVyQ2FjaGU6e2hpbnQ6YCR7dH1gLGlucHV0RGVwZW5kZW5jaWVzOltcInJhbmtcIl19LGdldFJ1bkRhdGE6aD0+e2xldCBkPVcuc2l6ZSh1KTtyZXR1cm57b3V0cHV0czpbe2RpbXM6dSxkYXRhVHlwZTpoWzBdLmRhdGFUeXBlfV0sZGlzcGF0Y2hHcm91cDp7eDpNYXRoLmNlaWwoZC82NCl9LHByb2dyYW1Vbmlmb3Jtczpbe3R5cGU6XCJ1aW50MzJcIixkYXRhOmR9LC4uLkcoaFswXS5kaW1zKSwuLi5HKHUpXX19LGdldFNoYWRlclNvdXJjZTptfX0sbGE9KGUsdCk9PntyZChlLmlucHV0cyksZS5jb21wdXRlKHl0KGUuaW5wdXRzWzBdLHQucGVybSkpfSxkYT1lPT54ZSh7cGVybTplLnBlcm19KX0pO3ZhciBpZCxhZCxzZCx1ZCxsZCxkZCxjZCxwZCxtZCxmZCwkdCxjYSxwYSxtYSxmYSxoYSxnYSx5YSxiYSx3YSx2YSwkYT1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7Q2UoKTtfZSgpO0luKCk7cHIoKTtpZD17bWF4Olwic2VsZWN0KGJlc3RWYWx1ZSwgY2FuZGlkYXRlLCBjYW5kaWRhdGUgPiBiZXN0VmFsdWUpXCIsbWluOlwic2VsZWN0KGJlc3RWYWx1ZSwgY2FuZGlkYXRlLCBjYW5kaWRhdGUgPCBiZXN0VmFsdWUpXCIsbWVhbjpcImJlc3RWYWx1ZSArIGNhbmRpZGF0ZVwiLHN1bTpcImJlc3RWYWx1ZSArIGNhbmRpZGF0ZVwiLHByb2Q6XCJiZXN0VmFsdWUgKiBjYW5kaWRhdGVcIixzdW1TcXVhcmU6XCJiZXN0VmFsdWUgKyBjYW5kaWRhdGUgKiBjYW5kaWRhdGVcIixsb2dTdW1FeHA6XCJiZXN0VmFsdWUgKyBleHAoY2FuZGlkYXRlKVwiLGwxOlwiYmVzdFZhbHVlICsgYWJzKGNhbmRpZGF0ZSlcIixsMjpcImJlc3RWYWx1ZSArIGNhbmRpZGF0ZSAqIGNhbmRpZGF0ZVwiLGxvZ1N1bTpcImJlc3RWYWx1ZSArIGNhbmRpZGF0ZVwifSxhZD17bWF4Olwic2VsZWN0KGJlc3RWYWx1ZSwgY2FuZGlkYXRlLCBjYW5kaWRhdGUgPiBiZXN0VmFsdWUpXCIsbWluOlwic2VsZWN0KGJlc3RWYWx1ZSwgY2FuZGlkYXRlLCBjYW5kaWRhdGUgPCBiZXN0VmFsdWUpXCIsbWVhbjpcImJlc3RWYWx1ZSArIGNhbmRpZGF0ZVwiLHN1bTpcImJlc3RWYWx1ZSArIGNhbmRpZGF0ZVwiLHByb2Q6XCJiZXN0VmFsdWUgKiBjYW5kaWRhdGVcIixzdW1TcXVhcmU6XCJiZXN0VmFsdWUgKyBjYW5kaWRhdGVcIixsb2dTdW1FeHA6XCJiZXN0VmFsdWUgKyBjYW5kaWRhdGVcIixsMTpcImJlc3RWYWx1ZSArIGNhbmRpZGF0ZVwiLGwyOlwiYmVzdFZhbHVlICsgY2FuZGlkYXRlXCIsbG9nU3VtOlwiYmVzdFZhbHVlICsgY2FuZGlkYXRlXCJ9LHNkPXttYXg6XCJfQVtvZmZzZXRdXCIsbWluOlwiX0Fbb2Zmc2V0XVwiLG1lYW46XCIwXCIsc3VtOlwiMFwiLHByb2Q6XCIxXCIsc3VtU3F1YXJlOlwiMFwiLGxvZ1N1bUV4cDpcIjBcIixsMTpcIjBcIixsMjpcIjBcIixsb2dTdW06XCIwXCJ9LHVkPXttYXg6XCJiZXN0VmFsdWVcIixtaW46XCJiZXN0VmFsdWVcIixzdW06XCJiZXN0VmFsdWVcIixwcm9kOlwiYmVzdFZhbHVlXCIsc3VtU3F1YXJlOlwiYmVzdFZhbHVlXCIsbG9nU3VtRXhwOlwibG9nKGJlc3RWYWx1ZSlcIixsMTpcImJlc3RWYWx1ZVwiLGwyOlwic3FydChiZXN0VmFsdWUpXCIsbG9nU3VtOlwibG9nKGJlc3RWYWx1ZSlcIn0sbGQ9KGUsdCk9PntsZXQgcj1bXTtmb3IobGV0IG89dC1lO288dDsrK28pci5wdXNoKG8pO3JldHVybiByfSxkZD0oZSx0KT0+e2xldCByPVtdLG89ZS5sZW5ndGg7Zm9yKGxldCB1PTA7dTxvO3UrKyl0LmluZGV4T2YodSk9PT0tMSYmci5wdXNoKGVbdV0pO2xldCBpPXQubWFwKHU9PmVbdV0pO3JldHVybltyLGldfSxjZD0oZSx0KT0+e2xldCByPWUubGVuZ3RoK3QubGVuZ3RoLG89W10saT0wO2ZvcihsZXQgdT0wO3U8cjt1KyspdC5pbmRleE9mKHUpPT09LTE/by5wdXNoKGVbaSsrXSk6by5wdXNoKDEpO3JldHVybiBvfSxwZD0oZSx0KT0+e2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7KytyKWlmKGVbZS5sZW5ndGgtci0xXSE9PXQtMS1yKXJldHVybiExO3JldHVybiEwfSxtZD0oZSx0KT0+e2xldCByPVtdO2lmKCFwZChlLHQpKXtmb3IobGV0IG89MDtvPHQ7KytvKWUuaW5kZXhPZihvKT09PS0xJiZyLnB1c2gobyk7ZS5mb3JFYWNoKG89PnIucHVzaChvKSl9cmV0dXJuIHJ9LGZkPShlLHQscixvLGksdSxhKT0+e2xldCBwPXJbMF0uZGltcyxtPVcuc2l6ZSh1KSxoPVcuc2l6ZShhKSxkPVYoXCJfQVwiLHJbMF0uZGF0YVR5cGUscCkseT1KKFwib3V0cHV0XCIsaSx1KSx3PTMyLF89YFxcbiAgICAgICAgICB2YXI8d29ya2dyb3VwPiBhQmVzdFZhbHVlcyA6IGFycmF5PCR7eS50eXBlLnN0b3JhZ2V9LCAke3d9PjtcXG4gICAgICAgYDtyZXR1cm57bmFtZTplLHNoYWRlckNhY2hlOnQsZ2V0U2hhZGVyU291cmNlOng9PmBcXG4gICAgICAgICR7eC5yZWdpc3RlclVuaWZvcm0oXCJyZWR1Y2VTaXplXCIsXCJ1MzJcIikuZGVjbGFyZVZhcmlhYmxlcyhkLHkpfVxcbiAgICAgICAgJHtffVxcbiAgICAgICAgZm4gRElWX0NFSUwoYSA6IHUzMiwgYiA6IHUzMikgLT4gdTMyIHtcXG4gICAgICAgICAgcmV0dXJuICgoYSAtIDF1KSAvIGIgKyAxdSk7XFxuICAgICAgICAgfVxcbiAgICAgICAgICR7eC5tYWluU3RhcnQodyl9XFxuXFxuICAgICAgICAgIGxldCBvdXRwdXRJbmRleCA9IGdsb2JhbF9pZHggLyAke3d9O1xcbiAgICAgICAgICBsZXQgb2Zmc2V0ID0gb3V0cHV0SW5kZXggKiB1bmlmb3Jtcy5yZWR1Y2VTaXplO1xcblxcbiAgICAgICAgICB2YXIgYmVzdFZhbHVlID0gJHt5LnR5cGUuc3RvcmFnZX0oJHtzZFtvXX0pO1xcbiAgICAgICAgICBsZXQgTGVuZ3RoID0gdW5pZm9ybXMucmVkdWNlU2l6ZTtcXG4gICAgICAgICAgZm9yICh2YXIgayA9IGxvY2FsX2lkeDsgayA8IExlbmd0aDsgayA9IGsgKyAke3d9KSB7XFxuICAgICAgICAgICBsZXQgY2FuZGlkYXRlID0gJHt5LnR5cGUuc3RvcmFnZX0oJHtkLmdldEJ5T2Zmc2V0KFwib2Zmc2V0ICsga1wiKX0pO1xcbiAgICAgICAgICAgYmVzdFZhbHVlID0gJHtpZFtvXX07XFxuICAgICAgICAgIH1cXG4gICAgICAgICAgYUJlc3RWYWx1ZXNbbG9jYWxfaWR4XSA9IGJlc3RWYWx1ZTtcXG4gICAgICAgICAgd29ya2dyb3VwQmFycmllcigpO1xcblxcbiAgICAgICAgIHZhciByZWR1Y2VTaXplID0gbWluKExlbmd0aCwgJHt3fXUpO1xcbiAgICAgICAgIGZvciAodmFyIGN1cnJlbnRTaXplID0gcmVkdWNlU2l6ZSAvIDJ1OyByZWR1Y2VTaXplID4gMXU7XFxuICAgICAgICAgICAgIGN1cnJlbnRTaXplID0gcmVkdWNlU2l6ZSAvIDJ1KSB7XFxuICAgICAgICAgICBsZXQgaW50ZXJ2YWwgPSBESVZfQ0VJTChyZWR1Y2VTaXplLCAydSk7XFxuICAgICAgICAgICBpZiAobG9jYWxfaWR4IDwgY3VycmVudFNpemUpIHtcXG4gICAgICAgICAgICBsZXQgY2FuZGlkYXRlID0gYUJlc3RWYWx1ZXNbbG9jYWxfaWR4ICsgaW50ZXJ2YWxdO1xcbiAgICAgICAgICAgIGJlc3RWYWx1ZSA9ICR7YWRbb119O1xcbiAgICAgICAgICAgIGFCZXN0VmFsdWVzW2xvY2FsX2lkeF0gPSBiZXN0VmFsdWU7XFxuICAgICAgICAgICB9XFxuICAgICAgICAgICByZWR1Y2VTaXplID0gaW50ZXJ2YWw7XFxuICAgICAgICAgICB3b3JrZ3JvdXBCYXJyaWVyKCk7XFxuICAgICAgICAgfVxcblxcbiAgICAgICAgIGlmIChsb2NhbF9pZHggPT0gMHUpIHtcXG4gICAgICAgICAgJHt5LnNldEJ5T2Zmc2V0KFwib3V0cHV0SW5kZXhcIixgJHtvPT09XCJtZWFuXCI/YGJlc3RWYWx1ZSAvICR7eS50eXBlLnN0b3JhZ2V9KHVuaWZvcm1zLnJlZHVjZVNpemUpYDpgJHt1ZFtvXX1gfWApfTtcXG4gICAgICAgICB9XFxuICAgICAgICB9YCxnZXRSdW5EYXRhOigpPT4oe291dHB1dHM6W3tkaW1zOnUsZGF0YVR5cGU6aX1dLGRpc3BhdGNoR3JvdXA6e3g6bX0scHJvZ3JhbVVuaWZvcm1zOlt7dHlwZTpcInVpbnQzMlwiLGRhdGE6aH1dfSl9fSwkdD0oZSx0LHIsbyk9PntsZXQgaT1lLmlucHV0cy5sZW5ndGg9PT0xP3I6X28oZS5pbnB1dHMsciksdT1pLmF4ZXM7dS5sZW5ndGg9PT0wJiYhaS5ub29wV2l0aEVtcHR5QXhlcyYmKHU9ZS5pbnB1dHNbMF0uZGltcy5tYXAoKF8sdik9PnYpKTtsZXQgYT1XLm5vcm1hbGl6ZUF4ZXModSxlLmlucHV0c1swXS5kaW1zLmxlbmd0aCkscD1hLG09ZS5pbnB1dHNbMF0saD1tZChwLGUuaW5wdXRzWzBdLmRpbXMubGVuZ3RoKTtoLmxlbmd0aD4wJiYobT1lLmNvbXB1dGUoeXQoZS5pbnB1dHNbMF0saCkse2lucHV0czpbMF0sb3V0cHV0czpbLTFdfSlbMF0scD1sZChwLmxlbmd0aCxtLmRpbXMubGVuZ3RoKSk7bGV0W2QseV09ZGQobS5kaW1zLHApLHc9ZDtpLmtlZXBEaW1zJiYodz1jZChkLGEpKSxlLmNvbXB1dGUoZmQodCx7aGludDppLmNhY2hlS2V5LGlucHV0RGVwZW5kZW5jaWVzOltcInR5cGVcIl19LFttXSxvLGUuaW5wdXRzWzBdLmRhdGFUeXBlLHcseSkse2lucHV0czpbbV19KX0sY2E9KGUsdCk9PnskdChlLFwiUmVkdWNlTWVhblNoYXJlZFwiLHQsXCJtZWFuXCIpfSxwYT0oZSx0KT0+eyR0KGUsXCJSZWR1Y2VMMVNoYXJlZFwiLHQsXCJsMVwiKX0sbWE9KGUsdCk9PnskdChlLFwiUmVkdWNlTDJTaGFyZWRcIix0LFwibDJcIil9LGZhPShlLHQpPT57JHQoZSxcIlJlZHVjZUxvZ1N1bUV4cFNoYXJlZFwiLHQsXCJsb2dTdW1FeHBcIil9LGhhPShlLHQpPT57JHQoZSxcIlJlZHVjZU1heFNoYXJlZFwiLHQsXCJtYXhcIil9LGdhPShlLHQpPT57JHQoZSxcIlJlZHVjZU1pblNoYXJlZFwiLHQsXCJtaW5cIil9LHlhPShlLHQpPT57JHQoZSxcIlJlZHVjZVByb2RTaGFyZWRcIix0LFwicHJvZFwiKX0sYmE9KGUsdCk9PnskdChlLFwiUmVkdWNlU3VtU2hhcmVkXCIsdCxcInN1bVwiKX0sd2E9KGUsdCk9PnskdChlLFwiUmVkdWNlU3VtU3F1YXJlU2hhcmVkXCIsdCxcInN1bVNxdWFyZVwiKX0sdmE9KGUsdCk9PnskdChlLFwiUmVkdWNlTG9nU3VtU2hhcmVkXCIsdCxcImxvZ1N1bVwiKX19KTt2YXIgX3QsaGQsVG4sX28sU3QsZ2QseWQsYmQsd2QsdmQsJGQsX2QsU2QseGQsQ2QseHQsX2EsU2EseGEsQ2EsQWEsSWEsVGEsRWEsUGEsT2EsSW49USgoKT0+e1widXNlIHN0cmljdFwiO0NlKCk7WWUoKTtfZSgpOyRhKCk7X3Q9ZT0+e2lmKCFlfHxlLmxlbmd0aD09PTB8fGUubGVuZ3RoPjIpdGhyb3cgbmV3IEVycm9yKFwiUmVkdWNlIG9wIHJlcXVpcmVzIDEgb3IgMiBpbnB1dHMuXCIpO2lmKGUubGVuZ3RoPT09MiYmZVsxXS5kaW1zLmxlbmd0aCE9PTEpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBheGVzIGlucHV0IGRpbXMuXCIpfSxoZD1lPT5bXCJcIixcIlwiLGB2YXIgdmFsdWUgPSAke2UuZ2V0QnlJbmRpY2VzKFwiaW5wdXRfaW5kaWNlc1wiKX07YCxcIlwiXSxUbj0oZSx0LHIsbyxpLHUsYT0hMSxwPSExKT0+e2xldCBtPVtdLGg9clswXS5kaW1zLGQ9aC5sZW5ndGgseT1XLm5vcm1hbGl6ZUF4ZXMoaSxkKSx3PSFwJiZ5Lmxlbmd0aD09PTA7aC5mb3JFYWNoKChULEMpPT57d3x8eS5pbmRleE9mKEMpPj0wP2EmJm0ucHVzaCgxKTptLnB1c2goVCl9KTtsZXQgXz1tLmxlbmd0aCx2PVcuc2l6ZShtKTtyZXR1cm57bmFtZTplLHNoYWRlckNhY2hlOnQsZ2V0U2hhZGVyU291cmNlOlQ9PntsZXQgQz1bXSxTPVYoXCJfQVwiLHJbMF0uZGF0YVR5cGUsZCksRT1KKFwib3V0cHV0XCIsdSxfKSxPPW8oUyxFLHkpLFU9T1syXTtmb3IobGV0IE09MCxOPTA7TTxkO00rKyl3fHx5LmluZGV4T2YoTSk+PTA/KGEmJk4rKyxVPWBmb3IodmFyIGoke019OiB1MzIgPSAwOyBqJHtNfSA8ICR7aFtNXX07IGoke019KyspIHtcXG4gICAgICAgICAgICAgICAgICAke09bMl0uaW5jbHVkZXMoXCJsYXN0X2luZGV4XCIpP2BsZXQgbGFzdF9pbmRleCA9IGoke019O2A6XCJcIn1cXG4gICAgICAgICAgICAgICAgICAke1MuaW5kaWNlc1NldChcImlucHV0X2luZGljZXNcIixNLGBqJHtNfWApfVxcbiAgICAgICAgICAgICAgICAgICR7VX1cXG4gICAgICAgICAgICAgICAgfWApOihDLnB1c2goYCR7Uy5pbmRpY2VzU2V0KFwiaW5wdXRfaW5kaWNlc1wiLE0sRS5pbmRpY2VzR2V0KFwib3V0cHV0X2luZGljZXNcIixOKSl9O2ApLE4rKyk7cmV0dXJuYFxcblxcbiAgICAgICAgJHtULnJlZ2lzdGVyVW5pZm9ybShcIm91dHB1dF9zaXplXCIsXCJ1MzJcIikuZGVjbGFyZVZhcmlhYmxlcyhTLEUpfVxcblxcbiAgICAgICAgJHtULm1haW5TdGFydCgpfVxcbiAgICAgICAgICAke1QuZ3VhcmRBZ2FpbnN0T3V0T2ZCb3VuZHNXb3JrZ3JvdXBTaXplcyhcInVuaWZvcm1zLm91dHB1dF9zaXplXCIpfVxcbiAgICAgICAgICB2YXIgaW5wdXRfaW5kaWNlczogJHtTLnR5cGUuaW5kaWNlc307XFxuICAgICAgICAgIGxldCBvdXRwdXRfaW5kaWNlcyA9ICR7RS5vZmZzZXRUb0luZGljZXMoXCJnbG9iYWxfaWR4XCIpfTtcXG5cXG4gICAgICAgICAgJHtDLmpvaW4oYFxcbmApfVxcbiAgICAgICAgICAke09bMF19ICAgICAgIC8vIGluaXQgb3BzIGZvciByZWR1Y2UgbWF4L21pblxcbiAgICAgICAgICAke09bMV19XFxuICAgICAgICAgICR7VX1cXG4gICAgICAgICAgJHtPWzNdfVxcbiAgICAgICAgICAke08ubGVuZ3RoPT09ND9FLnNldEJ5T2Zmc2V0KFwiZ2xvYmFsX2lkeFwiLFwidmFsdWVcIik6Ty5zbGljZSg0KS5qb2luKGBcXG5gKX1cXG4gICAgICAgIH1gfSxnZXRSdW5EYXRhOigpPT4oe291dHB1dHM6W3tkaW1zOm0sZGF0YVR5cGU6dX1dLGRpc3BhdGNoR3JvdXA6e3g6TWF0aC5jZWlsKHYvNjQpfSxwcm9ncmFtVW5pZm9ybXM6W3t0eXBlOlwidWludDMyXCIsZGF0YTp2fSwuLi5HKGgpLC4uLkcobSldfSl9fSxfbz0oZSx0KT0+e2xldCByPVtdO3JldHVybiBlWzFdLmRpbXNbMF0+MCYmZVsxXS5nZXRCaWdJbnQ2NEFycmF5KCkuZm9yRWFjaChvPT5yLnB1c2goTnVtYmVyKG8pKSkseGUoe2F4ZXM6cixrZWVwRGltczp0LmtlZXBEaW1zLG5vb3BXaXRoRW1wdHlBeGVzOnQubm9vcFdpdGhFbXB0eUF4ZXN9KX0sU3Q9KGUsdCxyLG8pPT57bGV0IGk9ZS5pbnB1dHMsdT1pLmxlbmd0aD09PTE/cjpfbyhpLHIpO2UuY29tcHV0ZShUbih0LHtoaW50OnUuY2FjaGVLZXksaW5wdXREZXBlbmRlbmNpZXM6W1wicmFua1wiXX0sW2lbMF1dLHUubm9vcFdpdGhFbXB0eUF4ZXMmJnUuYXhlcy5sZW5ndGg9PT0wP2hkOm8sdS5heGVzLGlbMF0uZGF0YVR5cGUsdS5rZWVwRGltcyx1Lm5vb3BXaXRoRW1wdHlBeGVzKSx7aW5wdXRzOlswXX0pfSxnZD0oZSx0KT0+e190KGUuaW5wdXRzKSxTdChlLFwiUmVkdWNlTG9nU3VtXCIsdCwobyxpKT0+W2B2YXIgdmFsdWUgPSAke2kudHlwZS5zdG9yYWdlfSgwKTtgLFwiXCIsYHZhbHVlICs9ICR7by5nZXRCeUluZGljZXMoXCJpbnB1dF9pbmRpY2VzXCIpfTtgLFwidmFsdWUgPSBsb2codmFsdWUpO1wiXSl9LHlkPShlLHQpPT57X3QoZS5pbnB1dHMpLFN0KGUsXCJSZWR1Y2VMMVwiLHQsKG8saSk9PltgdmFyIHZhbHVlID0gJHtpLnR5cGUuc3RvcmFnZX0oMCk7YCxcIlwiLGB2YWx1ZSArPSBhYnMoJHtvLmdldEJ5SW5kaWNlcyhcImlucHV0X2luZGljZXNcIil9KTtgLFwiXCJdKX0sYmQ9KGUsdCk9PntfdChlLmlucHV0cyksU3QoZSxcIlJlZHVjZUwyXCIsdCwobyxpKT0+W2B2YXIgdCA9ICR7aS50eXBlLnZhbHVlfSgwKTsgdmFyIHZhbHVlID0gJHtpLnR5cGUudmFsdWV9KDApO2AsXCJcIixgdCA9ICR7by5nZXRCeUluZGljZXMoXCJpbnB1dF9pbmRpY2VzXCIpfTsgdmFsdWUgKz0gKHQgKiB0KTtgLFwidmFsdWUgPSBzcXJ0KHZhbHVlKTtcIl0pfSx3ZD0oZSx0KT0+e190KGUuaW5wdXRzKSxTdChlLFwiUmVkdWNlTG9nU3VtRXhwXCIsdCwobyxpKT0+W2B2YXIgdmFsdWUgPSAke2kudHlwZS5zdG9yYWdlfSgwKTtgLFwiXCIsYHZhbHVlICs9IGV4cCgke28uZ2V0QnlJbmRpY2VzKFwiaW5wdXRfaW5kaWNlc1wiKX0pO2AsXCJ2YWx1ZSA9IGxvZyh2YWx1ZSk7XCJdKX0sdmQ9KGUsdCk9PntfdChlLmlucHV0cyksU3QoZSxcIlJlZHVjZU1heFwiLHQsKG8saSx1KT0+e2xldCBhPVtdO2ZvcihsZXQgcD0wO3A8by5yYW5rO3ArKykodS5pbmRleE9mKHApPj0wfHx1Lmxlbmd0aD09PTApJiZhLnB1c2goby5pbmRpY2VzU2V0KFwiaW5wdXRfaW5kaWNlc1wiLHAsMCkpO3JldHVybltgJHthLmpvaW4oYFxcbmApfWAsYHZhciB2YWx1ZSA9ICR7by5nZXRCeUluZGljZXMoXCJpbnB1dF9pbmRpY2VzXCIpfTtgLGB2YWx1ZSA9IG1heCh2YWx1ZSwgJHtvLmdldEJ5SW5kaWNlcyhcImlucHV0X2luZGljZXNcIil9KTtgLFwiXCJdfSl9LCRkPShlLHQpPT57X3QoZS5pbnB1dHMpLFN0KGUsXCJSZWR1Y2VNZWFuXCIsdCwobyxpLHUpPT57bGV0IGE9MTtmb3IobGV0IHA9MDtwPG8ucmFuaztwKyspKHUuaW5kZXhPZihwKT49MHx8dS5sZW5ndGg9PT0wKSYmKGEqPWUuaW5wdXRzWzBdLmRpbXNbcF0pO3JldHVybltcInZhciBzdW0gPSBmMzIoMCk7XCIsXCJcIixgc3VtICs9IGYzMigke28uZ2V0QnlJbmRpY2VzKFwiaW5wdXRfaW5kaWNlc1wiKX0pO2AsYGxldCB2YWx1ZSA9ICR7aS50eXBlLnZhbHVlfShzdW0gLyAke2F9KTtgXX0pfSxfZD0oZSx0KT0+e190KGUuaW5wdXRzKSxTdChlLFwiUmVkdWNlTWluXCIsdCwobyxpLHUpPT57bGV0IGE9W107Zm9yKGxldCBwPTA7cDxvLnJhbms7cCsrKSh1LmluZGV4T2YocCk+PTB8fHUubGVuZ3RoPT09MCkmJmEucHVzaChgaW5wdXRfaW5kaWNlc1ske3B9XSA9IDA7YCk7cmV0dXJuW2Ake2Euam9pbihgXFxuYCl9YCxgdmFyIHZhbHVlID0gJHtvLmdldEJ5SW5kaWNlcyhcImlucHV0X2luZGljZXNcIil9O2AsYHZhbHVlID0gbWluKHZhbHVlLCAke28uZ2V0QnlJbmRpY2VzKFwiaW5wdXRfaW5kaWNlc1wiKX0pO2AsXCJcIl19KX0sU2Q9KGUsdCk9PntfdChlLmlucHV0cyksU3QoZSxcIlJlZHVjZVByb2RcIix0LChvLGkpPT5bYHZhciB2YWx1ZSA9ICR7aS50eXBlLnN0b3JhZ2V9KDEpO2AsXCJcIixgdmFsdWUgKj0gJHtvLmdldEJ5SW5kaWNlcyhcImlucHV0X2luZGljZXNcIil9O2AsXCJcIl0pfSx4ZD0oZSx0KT0+e190KGUuaW5wdXRzKSxTdChlLFwiUmVkdWNlU3VtXCIsdCwobyxpKT0+W2B2YXIgdmFsdWUgPSAke2kudHlwZS5zdG9yYWdlfSgwKTtgLFwiXCIsYHZhbHVlICs9ICR7by5nZXRCeUluZGljZXMoXCJpbnB1dF9pbmRpY2VzXCIpfTtgLFwiXCJdKX0sQ2Q9KGUsdCk9PntfdChlLmlucHV0cyksU3QoZSxcIlJlZHVjZVN1bVNxdWFyZVwiLHQsKG8saSk9PltgdmFyIHQgPSAke2kudHlwZS52YWx1ZX0oMCk7IHZhciB2YWx1ZSA9ICR7aS50eXBlLnZhbHVlfSgwKTtgLFwiXCIsYHQgPSAke28uZ2V0QnlJbmRpY2VzKFwiaW5wdXRfaW5kaWNlc1wiKX07IHZhbHVlICs9IHQgKiB0O2AsXCJcIl0pfSx4dD0oZSx0LHIpPT57aWYodC5sZW5ndGg9PT0wKXJldHVybiByO2xldCBvPTEsaT0xO2ZvcihsZXQgdT0wO3U8dC5sZW5ndGg7dSsrKXQuaW5kZXhPZih1KT09PS0xP28qPWVbdV06aSo9ZVt1XTtyZXR1cm4gaTwzMiYmbz4xMDI0fSxfYT0oZSx0KT0+e3h0KGUuaW5wdXRzWzBdLmRpbXMsdC5heGVzLHQubm9vcFdpdGhFbXB0eUF4ZXMpPyRkKGUsdCk6Y2EoZSx0KX0sU2E9KGUsdCk9Pnt4dChlLmlucHV0c1swXS5kaW1zLHQuYXhlcyx0Lm5vb3BXaXRoRW1wdHlBeGVzKT95ZChlLHQpOnBhKGUsdCl9LHhhPShlLHQpPT57eHQoZS5pbnB1dHNbMF0uZGltcyx0LmF4ZXMsdC5ub29wV2l0aEVtcHR5QXhlcyk/YmQoZSx0KTptYShlLHQpfSxDYT0oZSx0KT0+e3h0KGUuaW5wdXRzWzBdLmRpbXMsdC5heGVzLHQubm9vcFdpdGhFbXB0eUF4ZXMpP3dkKGUsdCk6ZmEoZSx0KX0sQWE9KGUsdCk9Pnt4dChlLmlucHV0c1swXS5kaW1zLHQuYXhlcyx0Lm5vb3BXaXRoRW1wdHlBeGVzKT92ZChlLHQpOmhhKGUsdCl9LElhPShlLHQpPT57eHQoZS5pbnB1dHNbMF0uZGltcyx0LmF4ZXMsdC5ub29wV2l0aEVtcHR5QXhlcyk/X2QoZSx0KTpnYShlLHQpfSxUYT0oZSx0KT0+e3h0KGUuaW5wdXRzWzBdLmRpbXMsdC5heGVzLHQubm9vcFdpdGhFbXB0eUF4ZXMpP1NkKGUsdCk6eWEoZSx0KX0sRWE9KGUsdCk9Pnt4dChlLmlucHV0c1swXS5kaW1zLHQuYXhlcyx0Lm5vb3BXaXRoRW1wdHlBeGVzKT94ZChlLHQpOmJhKGUsdCl9LFBhPShlLHQpPT57eHQoZS5pbnB1dHNbMF0uZGltcyx0LmF4ZXMsdC5ub29wV2l0aEVtcHR5QXhlcyk/Q2QoZSx0KTp3YShlLHQpfSxPYT0oZSx0KT0+e3h0KGUuaW5wdXRzWzBdLmRpbXMsdC5heGVzLHQubm9vcFdpdGhFbXB0eUF4ZXMpP2dkKGUsdCk6dmEoZSx0KX19KTt2YXIga2EsUmEsQmEsU28sRGE9USgoKT0+e1widXNlIHN0cmljdFwiO1ZlKCk7WWUoKTtJbigpO2thPWU9PntpZighZXx8ZS5sZW5ndGg9PT0wfHxlLmxlbmd0aD4yKXRocm93IG5ldyBFcnJvcihcIkFyZ01pbk1heE9wIG9wIHJlcXVpcmVzIDEgb3IgMiBpbnB1dHMuXCIpO2lmKGVbMF0uZGF0YVR5cGUhPT0xKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgaW5wdXQgdHlwZS5cIil9LFJhPShlLHQpPT57a2EoZS5pbnB1dHMpO2xldCByPShvLGksdSk9PntsZXQgYT1bXTtmb3IobGV0IHA9MDtwPG8ucmFuaztwKyspKHUuaW5kZXhPZihwKT49MHx8dS5sZW5ndGg9PT0wKSYmYS5wdXNoKGBpbnB1dF9pbmRpY2VzWyR7cH1dID0gMDtgKTtyZXR1cm5bYCR7YS5qb2luKGBcXG5gKX1gLGB2YXIgdmFsdWUgPSAke28uZ2V0QnlJbmRpY2VzKFwiaW5wdXRfaW5kaWNlc1wiKX07XFxudmFyIGJlc3RfaW5kZXggOiBpMzIgPSAwO2AsYGlmICgke28uZ2V0QnlJbmRpY2VzKFwiaW5wdXRfaW5kaWNlc1wiKX0gJHt0LnNlbGVjdExhc3RJbmRleD4wP1wiPD1cIjpcIjxcIn0gdmFsdWUpIHtcXG4gICAgICAgICB2YWx1ZSA9ICR7by5nZXRCeUluZGljZXMoXCJpbnB1dF9pbmRpY2VzXCIpfTtcXG4gICAgICAgICBiZXN0X2luZGV4ID0gaTMyKGxhc3RfaW5kZXgpO1xcbiAgICAgICB9YCxcIlwiLGkuc2V0QnlPZmZzZXQoXCJnbG9iYWxfaWR4XCIsXCJiZXN0X2luZGV4XCIpXX07ZS5jb21wdXRlKFRuKFwiQXJnTWluXCIse2hpbnQ6dC5jYWNoZUtleSxpbnB1dERlcGVuZGVuY2llczpbXCJyYW5rXCJdfSxbZS5pbnB1dHNbMF1dLHIsW3QuYXhpc10sNyx0LmtlZXBEaW1zKSx7aW5wdXRzOlswXX0pfSxCYT0oZSx0KT0+e2thKGUuaW5wdXRzKTtsZXQgcj0obyxpLHUpPT57bGV0IGE9W107Zm9yKGxldCBwPTA7cDxvLnJhbms7cCsrKSh1LmluZGV4T2YocCk+PTB8fHUubGVuZ3RoPT09MCkmJmEucHVzaChgaW5wdXRfaW5kaWNlc1ske3B9XSA9IDA7YCk7cmV0dXJuW2Ake2Euam9pbihgXFxuYCl9YCxgdmFyIHZhbHVlID0gJHtvLmdldEJ5SW5kaWNlcyhcImlucHV0X2luZGljZXNcIil9O1xcbnZhciBiZXN0X2luZGV4IDogaTMyID0gMDtgLGBpZiAoJHtvLmdldEJ5SW5kaWNlcyhcImlucHV0X2luZGljZXNcIil9ICR7dC5zZWxlY3RMYXN0SW5kZXg+MD9cIj49XCI6XCI+XCJ9IHZhbHVlKSB7XFxuICAgICAgICAgdmFsdWUgPSAke28uZ2V0QnlJbmRpY2VzKFwiaW5wdXRfaW5kaWNlc1wiKX07XFxuICAgICAgICAgYmVzdF9pbmRleCA9IGkzMihsYXN0X2luZGV4KTtcXG4gICAgICAgfWAsXCJcIixpLnNldEJ5T2Zmc2V0KFwiZ2xvYmFsX2lkeFwiLFwiYmVzdF9pbmRleFwiKV19O2UuY29tcHV0ZShUbihcImFyZ01heFwiLHtoaW50OnQuY2FjaGVLZXksaW5wdXREZXBlbmRlbmNpZXM6W1wicmFua1wiXX0sW2UuaW5wdXRzWzBdXSxyLFt0LmF4aXNdLDcsdC5rZWVwRGltcykse2lucHV0czpbMF19KX0sU289ZT0+eGUoZSl9KTt2YXIgQWQsSWQsVGQsRWQsRW4sUGQsTWEseG89USgoKT0+e1widXNlIHN0cmljdFwiO1ZlKCk7JG4oKTtfZSgpO0FkPShlLHQpPT57bGV0IHI9ZVswXSxvPWVbMV0saT1lWzJdLHU9ZVszXSxhPWVbNF0scD1lWzVdO2lmKGEmJnApdGhyb3cgbmV3IEVycm9yKFwiQXR0ZW50aW9uIGNhbm5vdCBoYXZlIGJvdGggcGFzdCBhbmQgcmVsYXRpdmVfcG9zaXRpb25fYmlhc1wiKTtpZihyLmRpbXMubGVuZ3RoIT09Myl0aHJvdyBuZXcgRXJyb3IoXFwnSW5wdXQgXCJpbnB1dFwiIG11c3QgaGF2ZSAzIGRpbWVuc2lvbnNcXCcpO2xldCBtPXIuZGltc1swXSxoPXIuZGltc1sxXSxkPXIuZGltc1syXTtpZihpLmRpbXMubGVuZ3RoIT09MSl0aHJvdyBuZXcgRXJyb3IoXFwnSW5wdXQgXCJiaWFzXCIgaXMgZXhwZWN0ZWQgdG8gaGF2ZSAxIGRpbWVuc2lvbnNcXCcpO2lmKG8uZGltcy5sZW5ndGghPT0yKXRocm93IG5ldyBFcnJvcihcXCdJbnB1dCBcIndlaWdodHNcIiBpcyBleHBlY3RlZCB0byBoYXZlIDIgZGltZW5zaW9uc1xcJyk7aWYoby5kaW1zWzBdIT09ZCl0aHJvdyBuZXcgRXJyb3IoXCJJbnB1dCAxIGRpbWVuc2lvbiAwIHNob3VsZCBoYXZlIHNhbWUgbGVuZ3RoIGFzIGRpbWVuc2lvbiAyIG9mIGlucHV0IDBcIik7aWYoaS5kaW1zWzBdIT09by5kaW1zWzFdKXRocm93IG5ldyBFcnJvcihcXCdJbnB1dCBcImJpYXNcIiBkaW1lbnNpb24gMCBzaG91bGQgaGF2ZSBzYW1lIGxlbmd0aCBhcyBkaW1lbnNpb24gMSBvZiBpbnB1dCBcIndlaWdodHNcIlxcJyk7bGV0IHk9aS5kaW1zWzBdLzMsdz15LF89dztpZih0LnFrdkhpZGRlblNpemVzLmxlbmd0aD4wKXtpZih0LnFrdkhpZGRlblNpemVzLmxlbmd0aCE9PTMpdGhyb3cgbmV3IEVycm9yKFwicWt2X2hpZGRlbl9zaXplcyBhdHRyaWJ1dGUgc2hvdWxkIGhhdmUgMyBlbGVtZW50c1wiKTtmb3IobGV0IEUgb2YgdC5xa3ZIaWRkZW5TaXplcylpZihFJXQubnVtSGVhZHMhPT0wKXRocm93IG5ldyBFcnJvcihcInFrdl9oaWRkZW5fc2l6ZXMgc2hvdWxkIGJlIGRpdmlzaWJsZSBieSBudW1faGVhZHNcIik7eT10LnFrdkhpZGRlblNpemVzWzBdLHc9dC5xa3ZIaWRkZW5TaXplc1sxXSxfPXQucWt2SGlkZGVuU2l6ZXNbMl19bGV0IHY9aDtpZih5IT09dyl0aHJvdyBuZXcgRXJyb3IoXCJxa3ZfaGlkZGVuX3NpemVzIGZpcnN0IGVsZW1lbnQgc2hvdWxkIGJlIHNhbWUgYXMgdGhlIHNlY29uZFwiKTtpZihpLmRpbXNbMF0hPT15K3crXyl0aHJvdyBuZXcgRXJyb3IoXFwnSW5wdXQgXCJiaWFzXCIgZGltZW5zaW9uIDAgc2hvdWxkIGhhdmUgc2FtZSBsZW5ndGggYXMgc3VtIG9mIFEvSy9WIGhpZGRlbiBzaXplc1xcJyk7bGV0IHg9MDtpZihhKXtpZih3IT09Xyl0aHJvdyBuZXcgRXJyb3IoXFwnSW5wdXQgXCJwYXN0XCIgZXhwZWN0IGtfaGlkZGVuX3NpemUgPT0gdl9oaWRkZW5fc2l6ZVxcJyk7aWYoYS5kaW1zLmxlbmd0aCE9PTUpdGhyb3cgbmV3IEVycm9yKFxcJ0lucHV0IFwicGFzdFwiIG11c3QgaGF2ZSA1IGRpbWVuc2lvbnNcXCcpO2lmKGEuZGltc1swXSE9PTIpdGhyb3cgbmV3IEVycm9yKFxcJ0lucHV0IFwicGFzdFwiIGZpcnN0IGRpbWVuc2lvbiBtdXN0IGJlIDJcXCcpO2lmKGEuZGltc1sxXSE9PW0pdGhyb3cgbmV3IEVycm9yKFxcJ0lucHV0IFwicGFzdFwiIHNlY29uZCBkaW1lbnNpb24gbXVzdCBiZSBiYXRjaF9zaXplXFwnKTtpZihhLmRpbXNbMl0hPT10Lm51bUhlYWRzKXRocm93IG5ldyBFcnJvcihcXCdJbnB1dCBcInBhc3RcIiB0aGlyZCBkaW1lbnNpb24gbXVzdCBiZSBudW1faGVhZHNcXCcpO2lmKGEuZGltc1s0XSE9PXcvdC5udW1IZWFkcyl0aHJvdyBuZXcgRXJyb3IoXFwnSW5wdXQgXCJwYXN0XCIgZmlmdGggZGltZW5zaW9uIG11c3QgYmUga19oaWRkZW5fc2l6ZSAvIG51bV9oZWFkc1xcJyk7dC5wYXN0UHJlc2VudFNoYXJlQnVmZmVyfHwoeD1hLmRpbXNbM10pfWxldCBUPXYreCxDPS0xLFM9MDtpZih1KXRocm93IG5ldyBFcnJvcihcIk1hc2sgbm90IHN1cHBvcnRlZFwiKTtpZihhKXRocm93IG5ldyBFcnJvcihcInBhc3QgaXMgbm90IHN1cHBvcnRlZFwiKTtpZihwKXRocm93IG5ldyBFcnJvcihcInJlbGF0aXZlUG9zaXRpb25CaWFzIGlzIG5vdCBzdXBwb3J0ZWRcIik7cmV0dXJue2JhdGNoU2l6ZTptLHNlcXVlbmNlTGVuZ3RoOmgscGFzdFNlcXVlbmNlTGVuZ3RoOngsa3ZTZXF1ZW5jZUxlbmd0aDp2LHRvdGFsU2VxdWVuY2VMZW5ndGg6VCxtYXhTZXF1ZW5jZUxlbmd0aDpDLGlucHV0SGlkZGVuU2l6ZTpkLGhpZGRlblNpemU6eSx2SGlkZGVuU2l6ZTpfLGhlYWRTaXplOk1hdGguZmxvb3IoeS90Lm51bUhlYWRzKSx2SGVhZFNpemU6TWF0aC5mbG9vcihfL3QubnVtSGVhZHMpLG51bUhlYWRzOnQubnVtSGVhZHMsaXNVbmlkaXJlY3Rpb25hbDohMSxwYXN0UHJlc2VudFNoYXJlQnVmZmVyOiExLG1hc2tGaWx0ZXJWYWx1ZTp0Lm1hc2tGaWx0ZXJWYWx1ZSxtYXNrVHlwZTpTLHNjYWxlOnQuc2NhbGUsYnJvYWRjYXN0UmVzUG9zQmlhczohMSxwYXNzUGFzdEluS3Y6ITEscWt2Rm9ybWF0OjF9fSxJZD0oZSx0LHIsbyk9PntsZXQgaT1IZShvKSx1PTY0LGE9by9pO2E8dT91PTE6YS84PDY0JiYodT1NYXRoLmNlaWwoYS84KSk7bGV0IHA9TWF0aC5jZWlsKG8vaS91KSxoPVt7dHlwZTpzdCh0LmRhdGFUeXBlKSxkYXRhOjEvb30se3R5cGU6XCJ1aW50MzJcIixkYXRhOmF9LHt0eXBlOlwidWludDMyXCIsZGF0YTpwfV0sZD1OZSh0LmRhdGFUeXBlLGkpLHk9dz0+e2xldCBfPUooXCJ4XCIsdC5kYXRhVHlwZSx0LmRpbXMsaSksdj1cInRocmVhZF9tYXhfdmVjdG9yXCI7aT09PTI/dj1cIm1heCh0aHJlYWRfbWF4X3ZlY3Rvci54LCB0aHJlYWRfbWF4X3ZlY3Rvci55KVwiOmk9PT00JiYodj1cIm1heChtYXgodGhyZWFkX21heF92ZWN0b3IueCwgdGhyZWFkX21heF92ZWN0b3IueSksIG1heCh0aHJlYWRfbWF4X3ZlY3Rvci56LCB0aHJlYWRfbWF4X3ZlY3Rvci53KSlcIik7bGV0IHg9aHQodC5kYXRhVHlwZSksVD1be25hbWU6XCJkX2ludlwiLHR5cGU6eH0se25hbWU6XCJkX2NvbXBcIix0eXBlOlwidTMyXCJ9LHtuYW1lOlwiZWxlbWVudHNfcGVyX3dnXCIsdHlwZTpcInUzMlwifV07cmV0dXJuYFxcbiAgdmFyPHdvcmtncm91cD4gd2dNYXg6IGFycmF5PGYzMiwgJHt1fT47XFxuICB2YXI8d29ya2dyb3VwPiB3Z1N1bTogYXJyYXk8ZjMyLCAke3V9PjtcXG4gICR7dy5yZWdpc3RlclVuaWZvcm1zKFQpLmRlY2xhcmVWYXJpYWJsZXMoXyl9XFxuICAke3cubWFpblN0YXJ0KFt1LDEsMV0pfVxcbiAgICBsZXQgbG9jYWxPZmZzZXQgPSBsb2NhbF9pZHggKiB1bmlmb3Jtcy5lbGVtZW50c19wZXJfd2c7XFxuICAgIGxldCBvZmZzZXQ6IHUzMiA9IHdvcmtncm91cF9pZC54ICogdW5pZm9ybXMuZF9jb21wICsgbG9jYWxPZmZzZXQ7XFxuXFxuICAgIHZhciB0aHJlYWRfbWF4X3ZlY3RvciA9ICR7WmUoXCJmMzJcIixpLFwiLTMuNDAyODIzZSszOGZcIil9O1xcbiAgICBmb3IgKHZhciBpOiB1MzIgPSAwOyBpIDwgdW5pZm9ybXMuZWxlbWVudHNfcGVyX3dnICYmIGkgKyBsb2NhbE9mZnNldCA8IHVuaWZvcm1zLmRfY29tcDsgaSsrKSB7XFxuICAgICAgdGhyZWFkX21heF92ZWN0b3IgPSBtYXgoJHtndCh4LGksXCJ4W29mZnNldCArIGldXCIpfSwgdGhyZWFkX21heF92ZWN0b3IpO1xcbiAgICB9XFxuICAgIHdnTWF4W2xvY2FsX2lkeF0gPSAke3Z9O1xcbiAgICB3b3JrZ3JvdXBCYXJyaWVyKCk7XFxuXFxuICAgIHZhciBtYXhWYWx1ZSA9IC0zLjQwMjgyM2UrMzhmO1xcbiAgICBmb3IgKHZhciBpID0gMHU7IGkgPCAke3V9OyBpKyspIHtcXG4gICAgICBtYXhWYWx1ZSA9IG1heCh3Z01heFtpXSwgbWF4VmFsdWUpO1xcbiAgICB9XFxuXFxuICAgIHZhciBzdW1WZWN0b3IgPSAke1plKFwiZjMyXCIsaSxcIjBcIil9O1xcbiAgICBmb3IgKHZhciBpOiB1MzIgPSAwOyBpIDwgdW5pZm9ybXMuZWxlbWVudHNfcGVyX3dnICYmIGkgKyBsb2NhbE9mZnNldCA8IHVuaWZvcm1zLmRfY29tcDsgaSsrKSB7XFxuICAgICAgc3VtVmVjdG9yICs9IGV4cCgke2d0KHgsaSxcInhbb2Zmc2V0ICsgaV1cIil9IC0gbWF4VmFsdWUpO1xcbiAgICB9XFxuICAgIHdnU3VtW2xvY2FsX2lkeF0gPSAke3V0KFwic3VtVmVjdG9yXCIsaSl9O1xcbiAgICB3b3JrZ3JvdXBCYXJyaWVyKCk7XFxuXFxuICAgIHZhciBzdW06IGYzMiA9IDA7XFxuICAgIGZvciAodmFyIGkgPSAwdTsgaSA8ICR7dX07IGkrKykge1xcbiAgICAgIHN1bSArPSB3Z1N1bVtpXTtcXG4gICAgfVxcblxcbiAgICBpZiAoc3VtID09IDApIHtcXG4gICAgICBmb3IgKHZhciBpOiB1MzIgPSAwOyBpIDwgdW5pZm9ybXMuZWxlbWVudHNfcGVyX3dnICYmIGkgKyBsb2NhbE9mZnNldCA8IHVuaWZvcm1zLmRfY29tcDsgaSsrKSB7XFxuICAgICAgICB4W29mZnNldCArIGldID0gJHtaZSh4LGksXCJ1bmlmb3Jtcy5kX2ludlwiKX07XFxuICAgICAgfVxcbiAgICB9IGVsc2Uge1xcbiAgICAgIGZvciAodmFyIGk6IHUzMiA9IDA7IGkgPCB1bmlmb3Jtcy5lbGVtZW50c19wZXJfd2cgJiYgaSArIGxvY2FsT2Zmc2V0IDwgdW5pZm9ybXMuZF9jb21wOyBpKyspIHtcXG4gICAgICAgIGxldCBmMzJpbnB1dCA9ICR7Z3QoeCxpLFwieFtvZmZzZXQgKyBpXVwiKX07XFxuICAgICAgICB4W29mZnNldCArIGldID0gJHtfLnR5cGUudmFsdWV9KGV4cChmMzJpbnB1dCAtIG1heFZhbHVlKSAvIHN1bSk7XFxuICAgICAgfVxcbiAgICB9XFxuICB9YH07ZS5jb21wdXRlKHtuYW1lOlwiQXR0ZW50aW9uUHJvYnNTb2Z0bWF4XCIsc2hhZGVyQ2FjaGU6e2hpbnQ6YCR7dX07JHtkfTske2l9YH0sZ2V0U2hhZGVyU291cmNlOnksZ2V0UnVuRGF0YTooKT0+KHtvdXRwdXRzOltdLGRpc3BhdGNoR3JvdXA6e3g6cn0scHJvZ3JhbVVuaWZvcm1zOmh9KX0se2lucHV0czpbdF0sb3V0cHV0czpbXX0pfSxUZD0oZSx0LHIsbyxpLHUpPT57bGV0IGE9W2kuYmF0Y2hTaXplLGkubnVtSGVhZHMsaS5zZXF1ZW5jZUxlbmd0aCxpLmt2U2VxdWVuY2VMZW5ndGgraS5wYXN0U2VxdWVuY2VMZW5ndGhdLHA9dS5zY2FsZT09PTA/MS9NYXRoLnNxcnQoaS5oZWFkU2l6ZSk6dS5zY2FsZSxtPUhlKGkuaGVhZFNpemUpLGg9aS5oZWFkU2l6ZS9tLGQ9MTIseT17eDpNYXRoLmNlaWwoaS50b3RhbFNlcXVlbmNlTGVuZ3RoL2QpLHk6TWF0aC5jZWlsKGkuc2VxdWVuY2VMZW5ndGgvZCksejppLmJhdGNoU2l6ZSppLm51bUhlYWRzfSx3PXN0KHQuZGF0YVR5cGUpLF89W3t0eXBlOlwidWludDMyXCIsZGF0YTppLnNlcXVlbmNlTGVuZ3RofSx7dHlwZTpcInVpbnQzMlwiLGRhdGE6aH0se3R5cGU6XCJ1aW50MzJcIixkYXRhOmkudG90YWxTZXF1ZW5jZUxlbmd0aH0se3R5cGU6XCJ1aW50MzJcIixkYXRhOmkua3ZTZXF1ZW5jZUxlbmd0aH0se3R5cGU6dyxkYXRhOnB9XSx2PVt0LHJdLHg9Qz0+e2xldCBTPVYoXCJxXCIsdC5kYXRhVHlwZSx0LmRpbXMsbSksRT1WKFwia2V5XCIsci5kYXRhVHlwZSxyLmRpbXMsbSksTz1KKFwib3V0cHV0XCIsdC5kYXRhVHlwZSxhKSxVPU5lKHQuZGF0YVR5cGUpLE09W3tuYW1lOlwiTVwiLHR5cGU6XCJ1MzJcIn0se25hbWU6XCJLXCIsdHlwZTpcInUzMlwifSx7bmFtZTpcIk5cIix0eXBlOlwidTMyXCJ9LHtuYW1lOlwia3Zfc2VxdWVuY2VfbGVuZ3RoXCIsdHlwZTpcInUzMlwifSx7bmFtZTpcImFscGhhXCIsdHlwZTpVfV07cmV0dXJuYFxcbiAgY29uc3QgYmV0YTogJHtVfSA9IDEuMDtcXG4gIGNvbnN0IFRJTEVfU0laRSA9ICR7ZH11O1xcblxcbiAgdmFyPHdvcmtncm91cD4gdGlsZVE6IGFycmF5PCR7Uy50eXBlLnN0b3JhZ2V9LCAke2QqZH0+O1xcbiAgdmFyPHdvcmtncm91cD4gdGlsZUs6IGFycmF5PCR7Uy50eXBlLnN0b3JhZ2V9LCAke2QqZH0+O1xcbiAgJHtDLnJlZ2lzdGVyVW5pZm9ybXMoTSkuZGVjbGFyZVZhcmlhYmxlcyhTLEUsTyl9XFxuICAke0MubWFpblN0YXJ0KFtkLGQsMV0pfVxcbiAgICAvLyB4IGhvbGRzIHRoZSBOIGFuZCB5IGhvbGRzIHRoZSBNXFxuICAgIGxldCBoZWFkSWR4ID0gd29ya2dyb3VwX2lkLno7XFxuICAgIGxldCBtID0gd29ya2dyb3VwX2lkLnkgKiBUSUxFX1NJWkU7XFxuICAgIGxldCBuID0gd29ya2dyb3VwX2lkLnggKiBUSUxFX1NJWkU7XFxuICAgIGxldCBsbSA9IG0gKyBsb2NhbF9pZC55O1xcbiAgICBsZXQgbG4gPSBuICsgbG9jYWxfaWQueDtcXG5cXG4gICAgbGV0IHFPZmZzZXQgPSB1bmlmb3Jtcy5NICogdW5pZm9ybXMuSyAqIGhlYWRJZHggKyBtICogdW5pZm9ybXMuSztcXG4gICAgbGV0IGtPZmZzZXQgPSB1bmlmb3Jtcy5rdl9zZXF1ZW5jZV9sZW5ndGggKiB1bmlmb3Jtcy5LICogaGVhZElkeCArIG4gKiB1bmlmb3Jtcy5LO1xcblxcbiAgICB2YXIgdmFsdWUgPSAke1plKFUsbSl9O1xcbiAgICBmb3IgKHZhciB3OiB1MzIgPSAwdTsgdyA8IHVuaWZvcm1zLks7IHcgKz0gVElMRV9TSVpFKSB7XFxuICAgICAgaWYgKG0gKyBsb2NhbF9pZC55IDwgdW5pZm9ybXMuTSAmJiB3ICsgbG9jYWxfaWQueCA8IHVuaWZvcm1zLkspIHtcXG4gICAgICAgIHRpbGVRW1RJTEVfU0laRSAqIGxvY2FsX2lkLnkgKyBsb2NhbF9pZC54XSA9IHFbcU9mZnNldCArIGxvY2FsX2lkLnkgKiB1bmlmb3Jtcy5LICsgdyArIGxvY2FsX2lkLnhdO1xcbiAgICAgIH1cXG4gICAgICBpZiAobiArIGxvY2FsX2lkLnkgPCB1bmlmb3Jtcy5OICYmIHcgKyBsb2NhbF9pZC54IDwgdW5pZm9ybXMuSykge1xcbiAgICAgICAgdGlsZUtbVElMRV9TSVpFICogbG9jYWxfaWQueSArIGxvY2FsX2lkLnhdID0ga2V5W2tPZmZzZXQgKyBsb2NhbF9pZC55ICogdW5pZm9ybXMuSyArIHcgKyBsb2NhbF9pZC54XTtcXG4gICAgICB9XFxuICAgICAgd29ya2dyb3VwQmFycmllcigpO1xcblxcbiAgICAgIGZvciAodmFyIGs6IHUzMiA9IDB1OyBrPFRJTEVfU0laRSAmJiB3K2sgPCB1bmlmb3Jtcy5LOyBrKyspIHtcXG4gICAgICAgIHZhbHVlICs9IHRpbGVRW1RJTEVfU0laRSAqIGxvY2FsX2lkLnkgKyBrXSAqIHRpbGVLW1RJTEVfU0laRSAqIGxvY2FsX2lkLnggKyBrXTtcXG4gICAgICB9XFxuXFxuICAgICAgd29ya2dyb3VwQmFycmllcigpO1xcbiAgICB9XFxuXFxuICAgIGxldCBoZWFkT2Zmc2V0ID0gaGVhZElkeCAqIHVuaWZvcm1zLk0gKiB1bmlmb3Jtcy5OO1xcbiAgICBpZiAobG0gPCB1bmlmb3Jtcy5NICYmIGxuIDwgdW5pZm9ybXMuTikge1xcbiAgICAgIGxldCBvdXRwdXRJZHggPSBoZWFkT2Zmc2V0ICsgbG0gKiB1bmlmb3Jtcy5OICsgbG47XFxuICAgICAgb3V0cHV0W291dHB1dElkeF0gPSAke3V0KFwidmFsdWVcIixtKX0gKiB1bmlmb3Jtcy5hbHBoYTtcXG4gICAgfVxcbiAgfWB9LFQ9ZS5jb21wdXRlKHtuYW1lOlwiQXR0ZW50aW9uUHJvYnNcIixzaGFkZXJDYWNoZTp7aGludDpgJHttfWAsaW5wdXREZXBlbmRlbmNpZXM6W1widHlwZVwiLFwidHlwZVwiXX0sZ2V0UnVuRGF0YTooKT0+KHtvdXRwdXRzOlt7ZGltczphLGRhdGFUeXBlOnQuZGF0YVR5cGUsZ3B1RGF0YVR5cGU6MH1dLGRpc3BhdGNoR3JvdXA6eSxwcm9ncmFtVW5pZm9ybXM6X30pLGdldFNoYWRlclNvdXJjZTp4fSx7aW5wdXRzOnYsb3V0cHV0czpbLTFdfSlbMF07cmV0dXJuIElkKGUsVCxpLmJhdGNoU2l6ZSppLm51bUhlYWRzKmkuc2VxdWVuY2VMZW5ndGgsaS50b3RhbFNlcXVlbmNlTGVuZ3RoKSxUfSxFZD0oZSx0LHIsbyk9PntsZXQgaT1bby5iYXRjaFNpemUsby5zZXF1ZW5jZUxlbmd0aCxvLnZIaWRkZW5TaXplXSx1PTEyLGE9e3g6TWF0aC5jZWlsKG8udkhlYWRTaXplL3UpLHk6TWF0aC5jZWlsKG8uc2VxdWVuY2VMZW5ndGgvdSksejpvLmJhdGNoU2l6ZSpvLm51bUhlYWRzfSxwPVt7dHlwZTpcInVpbnQzMlwiLGRhdGE6by5zZXF1ZW5jZUxlbmd0aH0se3R5cGU6XCJ1aW50MzJcIixkYXRhOm8udG90YWxTZXF1ZW5jZUxlbmd0aH0se3R5cGU6XCJ1aW50MzJcIixkYXRhOm8udkhlYWRTaXplfSx7dHlwZTpcInVpbnQzMlwiLGRhdGE6by5udW1IZWFkc30se3R5cGU6XCJ1aW50MzJcIixkYXRhOm8udkhpZGRlblNpemV9XSxtPWg9PntsZXQgZD1WKFwicHJvYnNcIix0LmRhdGFUeXBlLHQuZGltcykseT1WKFwidlwiLHIuZGF0YVR5cGUsci5kaW1zKSx3PUooXCJvdXRwdXRcIix0LmRhdGFUeXBlLGkpLF89W3tuYW1lOlwiTVwiLHR5cGU6XCJ1MzJcIn0se25hbWU6XCJLXCIsdHlwZTpcInUzMlwifSx7bmFtZTpcIk5cIix0eXBlOlwidTMyXCJ9LHtuYW1lOlwibnVtX2hlYWRzXCIsdHlwZTpcInUzMlwifSx7bmFtZTpcInZfaGlkZGVuX3NpemVcIix0eXBlOlwidTMyXCJ9XTtyZXR1cm5gXFxuICBjb25zdCBUSUxFX1NJWkUgPSAke3V9dTtcXG4gIHZhcjx3b3JrZ3JvdXA+IHRpbGVROiBhcnJheTwke2QudHlwZS52YWx1ZX0sICR7dSp1fT47XFxuICB2YXI8d29ya2dyb3VwPiB0aWxlSzogYXJyYXk8JHtkLnR5cGUudmFsdWV9LCAke3UqdX0+O1xcbiAgJHtoLnJlZ2lzdGVyVW5pZm9ybXMoXykuZGVjbGFyZVZhcmlhYmxlcyhkLHksdyl9XFxuICAke2gubWFpblN0YXJ0KFt1LHUsMV0pfVxcbiAgIGxldCBoZWFkSWR4ID0gd29ya2dyb3VwX2lkLno7XFxuICAgbGV0IG0gPSB3b3JrZ3JvdXBfaWQueSAqIFRJTEVfU0laRSArIGxvY2FsX2lkLnk7XFxuICAgbGV0IG4gPSB3b3JrZ3JvdXBfaWQueCAqIFRJTEVfU0laRSArIGxvY2FsX2lkLng7XFxuXFxuICAgbGV0IG9mZnNldEEgPSBoZWFkSWR4ICogKHVuaWZvcm1zLk0gKiB1bmlmb3Jtcy5LKSArIG0gKiB1bmlmb3Jtcy5LO1xcbiAgIGxldCBvZmZzZXRCID0gaGVhZElkeCAqICh1bmlmb3Jtcy5OICogdW5pZm9ybXMuSykgKyBuO1xcblxcbiAgIHZhciB2YWx1ZSA9ICR7ZC50eXBlLnN0b3JhZ2V9KDApO1xcbiAgIGZvciAodmFyIHc6IHUzMiA9IDB1OyB3IDwgdW5pZm9ybXMuSzsgdyArPSBUSUxFX1NJWkUpIHtcXG4gICAgIGlmIChtIDwgdW5pZm9ybXMuTSAmJiB3ICsgbG9jYWxfaWQueCA8IHVuaWZvcm1zLkspIHtcXG4gICAgICAgdGlsZVFbVElMRV9TSVpFICogbG9jYWxfaWQueSArIGxvY2FsX2lkLnhdID0gcHJvYnNbb2Zmc2V0QSArIHcgKyBsb2NhbF9pZC54XTtcXG4gICAgIH1cXG4gICAgIGlmIChuIDwgdW5pZm9ybXMuTiAmJiB3ICsgbG9jYWxfaWQueSA8IHVuaWZvcm1zLkspIHtcXG4gICAgICAgdGlsZUtbVElMRV9TSVpFICogbG9jYWxfaWQueSArIGxvY2FsX2lkLnhdID0gdltvZmZzZXRCICsgKHcgKyBsb2NhbF9pZC55KSAqIHVuaWZvcm1zLk5dO1xcbiAgICAgfVxcbiAgICAgd29ya2dyb3VwQmFycmllcigpO1xcbiAgICAgZm9yICh2YXIgazogdTMyID0gMHU7IGs8VElMRV9TSVpFICYmIHcrayA8IHVuaWZvcm1zLks7IGsrKykge1xcbiAgICAgICB2YWx1ZSArPSB0aWxlUVtUSUxFX1NJWkUgKiBsb2NhbF9pZC55ICsga10gKiB0aWxlS1tUSUxFX1NJWkUgKiBrICsgbG9jYWxfaWQueF07XFxuICAgICB9XFxuICAgICB3b3JrZ3JvdXBCYXJyaWVyKCk7XFxuICAgfVxcblxcbiAgIC8vIHdlIG5lZWQgdG8gdHJhbnNwb3NlIG91dHB1dCBmcm9tIEJOU0hfdiB0byBCU05EX3ZcXG4gICBsZXQgYmF0Y2hJZHggPSB3b3JrZ3JvdXBfaWQueiAvIHVuaWZvcm1zLm51bV9oZWFkcztcXG4gICBsZXQgY3VycmVudEJhdGNoSGVhZE51bWJlciA9IHdvcmtncm91cF9pZC56ICUgdW5pZm9ybXMubnVtX2hlYWRzO1xcbiAgIGxldCBoZWFkT2Zmc2V0ID0gKGJhdGNoSWR4ICogdW5pZm9ybXMuTSAqIHVuaWZvcm1zLm51bV9oZWFkcyArIGN1cnJlbnRCYXRjaEhlYWROdW1iZXIpICogdW5pZm9ybXMuTjtcXG4gICBpZiAobSA8IHVuaWZvcm1zLk0gJiYgbiA8IHVuaWZvcm1zLk4pIHtcXG4gICAgIGxldCBvdXRwdXRJZHggPSBiYXRjaElkeCAqIHVuaWZvcm1zLk0gKnVuaWZvcm1zLnZfaGlkZGVuX3NpemUgKyBtICogdW5pZm9ybXMudl9oaWRkZW5fc2l6ZVxcbiAgICAgICArIGN1cnJlbnRCYXRjaEhlYWROdW1iZXIgKiB1bmlmb3Jtcy5OICsgbjtcXG4gICAgIG91dHB1dFtvdXRwdXRJZHhdID0gdmFsdWU7XFxuICAgfVxcbiAgfWB9O3JldHVybiBlLmNvbXB1dGUoe25hbWU6XCJBdHRlbnRpb25TY29yZVwiLHNoYWRlckNhY2hlOntpbnB1dERlcGVuZGVuY2llczpbXCJ0eXBlXCIsXCJ0eXBlXCJdfSxnZXRSdW5EYXRhOigpPT4oe291dHB1dHM6W3tkaW1zOmksZGF0YVR5cGU6dC5kYXRhVHlwZSxncHVEYXRhVHlwZTowfV0sZGlzcGF0Y2hHcm91cDphLHByb2dyYW1Vbmlmb3JtczpwfSksZ2V0U2hhZGVyU291cmNlOm19LHtpbnB1dHM6W3Qscl0sb3V0cHV0czpbMF19KVswXX0sRW49KGUsdCxyLG8saSx1LGEscCxtLGgsZCk9PntsZXQgeT1UZChlLHQscixtLGgsZCk7RWQoZSx5LG8saCl9LFBkPShlLHQpPT57bGV0IHI9W3QuYmF0Y2hTaXplLHQubnVtSGVhZHMsdC5zZXF1ZW5jZUxlbmd0aCx0LmhlYWRTaXplXSxvPXQuc2VxdWVuY2VMZW5ndGgsaT10LmlucHV0SGlkZGVuU2l6ZSx1PXQuaGVhZFNpemUsYT0xMixwPXt4Ok1hdGguY2VpbCh0LmhlYWRTaXplL2EpLHk6TWF0aC5jZWlsKHQuc2VxdWVuY2VMZW5ndGgvYSksejp0LmJhdGNoU2l6ZSp0Lm51bUhlYWRzfSxtPVtlLmlucHV0c1swXSxlLmlucHV0c1sxXSxlLmlucHV0c1syXV0saD1be3R5cGU6XCJ1aW50MzJcIixkYXRhOm99LHt0eXBlOlwidWludDMyXCIsZGF0YTppfSx7dHlwZTpcInVpbnQzMlwiLGRhdGE6dX0se3R5cGU6XCJ1aW50MzJcIixkYXRhOnQubnVtSGVhZHN9LHt0eXBlOlwidWludDMyXCIsZGF0YTp0LmhlYWRTaXplfSx7dHlwZTpcInVpbnQzMlwiLGRhdGE6dC5oaWRkZW5TaXplfSx7dHlwZTpcInVpbnQzMlwiLGRhdGE6dC5oaWRkZW5TaXplK3QuaGlkZGVuU2l6ZSt0LnZIaWRkZW5TaXplfV0sZD15PT57bGV0IHc9SihcIm91dHB1dF9xXCIsbVswXS5kYXRhVHlwZSxyKSxfPUooXCJvdXRwdXRfa1wiLG1bMF0uZGF0YVR5cGUsciksdj1KKFwib3V0cHV0X3ZcIixtWzBdLmRhdGFUeXBlLHIpLHg9VihcImlucHV0XCIsbVswXS5kYXRhVHlwZSxtWzBdLmRpbXMpLFQ9VihcIndlaWdodFwiLG1bMV0uZGF0YVR5cGUsbVsxXS5kaW1zKSxDPVYoXCJiaWFzXCIsbVsyXS5kYXRhVHlwZSxtWzJdLmRpbXMpLFM9eC50eXBlLnN0b3JhZ2UsRT1be25hbWU6XCJNXCIsdHlwZTpcInUzMlwifSx7bmFtZTpcIktcIix0eXBlOlwidTMyXCJ9LHtuYW1lOlwiTlwiLHR5cGU6XCJ1MzJcIn0se25hbWU6XCJudW1faGVhZHNcIix0eXBlOlwidTMyXCJ9LHtuYW1lOlwiaGVhZF9zaXplXCIsdHlwZTpcInUzMlwifSx7bmFtZTpcImhpZGRlbl9zaXplXCIsdHlwZTpcInUzMlwifSx7bmFtZTpcImxkYlwiLHR5cGU6XCJ1MzJcIn1dO3JldHVybmBcXG4gIGNvbnN0IFRJTEVfU0laRSA9ICR7YX11O1xcbiAgdmFyPHdvcmtncm91cD4gdGlsZUlucHV0OiBhcnJheTwke1N9LCAke2EqYX0+O1xcbiAgdmFyPHdvcmtncm91cD4gdGlsZVdlaWdodFE6IGFycmF5PCR7U30sICR7YSphfT47XFxuICB2YXI8d29ya2dyb3VwPiB0aWxlV2VpZ2h0SzogYXJyYXk8JHtTfSwgJHthKmF9PjtcXG4gIHZhcjx3b3JrZ3JvdXA+IHRpbGVXZWlnaHRWOiBhcnJheTwke1N9LCAke2EqYX0+O1xcbiAgJHt5LnJlZ2lzdGVyVW5pZm9ybXMoRSkuZGVjbGFyZVZhcmlhYmxlcyh4LFQsQyx3LF8sdil9XFxuICAke3kubWFpblN0YXJ0KFthLGEsMV0pfVxcbiAgICBsZXQgYmF0Y2hJbmRleCA9IHdvcmtncm91cF9pZC56IC8gdW5pZm9ybXMubnVtX2hlYWRzO1xcbiAgICBsZXQgaGVhZE51bWJlciA9IHdvcmtncm91cF9pZC56ICUgdW5pZm9ybXMubnVtX2hlYWRzO1xcbiAgICBsZXQgbSA9IHdvcmtncm91cF9pZC55ICogVElMRV9TSVpFICsgbG9jYWxfaWQueTtcXG4gICAgbGV0IG4gPSB3b3JrZ3JvdXBfaWQueCAqIFRJTEVfU0laRSArIGxvY2FsX2lkLng7XFxuXFxuICAgIGxldCBpbnB1dE9mZnNldCA9IGJhdGNoSW5kZXggKiAodW5pZm9ybXMuTSAqIHVuaWZvcm1zLkspICsgbSAqIHVuaWZvcm1zLks7XFxuICAgIGxldCBiaWFzT2Zmc2V0USA9IGhlYWROdW1iZXIgKiB1bmlmb3Jtcy5oZWFkX3NpemU7XFxuICAgIGxldCBiaWFzT2Zmc2V0SyA9IHVuaWZvcm1zLmhpZGRlbl9zaXplICsgYmlhc09mZnNldFE7XFxuICAgIGxldCBiaWFzT2Zmc2V0ViA9IHVuaWZvcm1zLmhpZGRlbl9zaXplICsgYmlhc09mZnNldEs7XFxuXFxuICAgIHZhciB2YWx1ZVEgPSAke1N9KDApO1xcbiAgICB2YXIgdmFsdWVLID0gJHtTfSgwKTtcXG4gICAgdmFyIHZhbHVlViA9ICR7U30oMCk7XFxuICAgIGZvciAodmFyIHc6IHUzMiA9IDB1OyB3IDwgdW5pZm9ybXMuSzsgdyArPSBUSUxFX1NJWkUpIHtcXG4gICAgICBpZiAobSA8IHVuaWZvcm1zLk0gJiYgdyArIGxvY2FsX2lkLnggPCB1bmlmb3Jtcy5LKSB7XFxuICAgICAgICB0aWxlSW5wdXRbVElMRV9TSVpFICogbG9jYWxfaWQueSArIGxvY2FsX2lkLnhdID0gaW5wdXRbaW5wdXRPZmZzZXQgKyB3ICsgbG9jYWxfaWQueF07XFxuICAgICAgfVxcbiAgICAgIGlmIChuIDwgdW5pZm9ybXMuTiAmJiB3ICsgbG9jYWxfaWQueSA8IHVuaWZvcm1zLkspIHtcXG4gICAgICAgIGxldCBvZmZzZXQgPSBuICsgKHcgKyBsb2NhbF9pZC55KSAqIHVuaWZvcm1zLmxkYjtcXG4gICAgICAgIHRpbGVXZWlnaHRRW1RJTEVfU0laRSAqIGxvY2FsX2lkLnkgKyBsb2NhbF9pZC54XSA9IHdlaWdodFtiaWFzT2Zmc2V0USArIG9mZnNldF07XFxuICAgICAgICB0aWxlV2VpZ2h0S1tUSUxFX1NJWkUgKiBsb2NhbF9pZC55ICsgbG9jYWxfaWQueF0gPSB3ZWlnaHRbYmlhc09mZnNldEsgKyBvZmZzZXRdO1xcbiAgICAgICAgdGlsZVdlaWdodFZbVElMRV9TSVpFICogbG9jYWxfaWQueSArIGxvY2FsX2lkLnhdID0gd2VpZ2h0W2JpYXNPZmZzZXRWICsgb2Zmc2V0XTtcXG4gICAgICB9XFxuICAgICAgd29ya2dyb3VwQmFycmllcigpO1xcbiAgICAgIGZvciAodmFyIGs6IHUzMiA9IDB1OyBrPFRJTEVfU0laRSAmJiB3K2sgPCB1bmlmb3Jtcy5LOyBrKyspIHtcXG4gICAgICAgIGxldCBpbnB1dFRpbGVPZmZzZXQgPSBUSUxFX1NJWkUgKiBsb2NhbF9pZC55ICsgaztcXG4gICAgICAgIGxldCB3ZWlnaHRUaWxlT2Zmc2V0ID0gVElMRV9TSVpFICogayArIGxvY2FsX2lkLng7XFxuICAgICAgICB2YWx1ZVEgKz0gdGlsZUlucHV0W2lucHV0VGlsZU9mZnNldF0gKiB0aWxlV2VpZ2h0UVt3ZWlnaHRUaWxlT2Zmc2V0XTtcXG4gICAgICAgIHZhbHVlSyArPSB0aWxlSW5wdXRbaW5wdXRUaWxlT2Zmc2V0XSAqIHRpbGVXZWlnaHRLW3dlaWdodFRpbGVPZmZzZXRdO1xcbiAgICAgICAgdmFsdWVWICs9IHRpbGVJbnB1dFtpbnB1dFRpbGVPZmZzZXRdICogdGlsZVdlaWdodFZbd2VpZ2h0VGlsZU9mZnNldF07XFxuICAgICAgfVxcblxcbiAgICAgIHdvcmtncm91cEJhcnJpZXIoKTtcXG4gICAgfVxcblxcbiAgICBsZXQgaGVhZE9mZnNldCA9IChtICogdW5pZm9ybXMuTiArIG4pICUgdW5pZm9ybXMuaGVhZF9zaXplO1xcbiAgICB2YWx1ZVEgKz0gYmlhc1toZWFkT2Zmc2V0ICsgYmlhc09mZnNldFFdO1xcbiAgICB2YWx1ZUsgKz0gYmlhc1toZWFkT2Zmc2V0ICsgYmlhc09mZnNldEtdO1xcbiAgICB2YWx1ZVYgKz0gYmlhc1toZWFkT2Zmc2V0ICsgYmlhc09mZnNldFZdO1xcblxcbiAgICBsZXQgb2Zmc2V0ID0gd29ya2dyb3VwX2lkLnogKiB1bmlmb3Jtcy5NICogdW5pZm9ybXMuTjtcXG4gICAgaWYgKG0gPCB1bmlmb3Jtcy5NICYmIG4gPCB1bmlmb3Jtcy5OKSB7XFxuICAgICAgbGV0IG91dHB1dElkeCA9IG9mZnNldCArIG0gKiB1bmlmb3Jtcy5OICsgbjtcXG4gICAgICBvdXRwdXRfcVtvdXRwdXRJZHhdID0gdmFsdWVRO1xcbiAgICAgIG91dHB1dF9rW291dHB1dElkeF0gPSB2YWx1ZUs7XFxuICAgICAgb3V0cHV0X3Zbb3V0cHV0SWR4XSA9IHZhbHVlVjtcXG4gICAgfVxcbiAgfWB9O3JldHVybiBlLmNvbXB1dGUoe25hbWU6XCJBdHRlbnRpb25QcmVwYXJlXCIsc2hhZGVyQ2FjaGU6e2lucHV0RGVwZW5kZW5jaWVzOltcInR5cGVcIixcInR5cGVcIixcInR5cGVcIl19LGdldFJ1bkRhdGE6KCk9Pih7b3V0cHV0czpbe2RpbXM6cixkYXRhVHlwZTplLmlucHV0c1swXS5kYXRhVHlwZSxncHVEYXRhVHlwZTowfSx7ZGltczpyLGRhdGFUeXBlOmUuaW5wdXRzWzBdLmRhdGFUeXBlLGdwdURhdGFUeXBlOjB9LHtkaW1zOnIsZGF0YVR5cGU6ZS5pbnB1dHNbMF0uZGF0YVR5cGUsZ3B1RGF0YVR5cGU6MH1dLGRpc3BhdGNoR3JvdXA6cCxwcm9ncmFtVW5pZm9ybXM6aH0pLGdldFNoYWRlclNvdXJjZTpkfSx7aW5wdXRzOm0sb3V0cHV0czpbLTEsLTEsLTFdfSl9LE1hPShlLHQpPT57bGV0IHI9QWQoZS5pbnB1dHMsdCksW28saSx1XT1QZChlLHIpO3JldHVybiBFbihlLG8saSx1LGUuaW5wdXRzWzRdLHZvaWQgMCx2b2lkIDAsdm9pZCAwLGUuaW5wdXRzWzVdLHIsdCl9fSk7dmFyIE9kLGtkLFJkLHphLFVhPVEoKCk9PntcInVzZSBzdHJpY3RcIjtkcigpO0NlKCk7WWUoKTtfZSgpO09kPShlLHQpPT57aWYoIWV8fGUubGVuZ3RoIT09NSl0aHJvdyBuZXcgRXJyb3IoXCJCYXRjaE5vcm1hbGl6YXRpb24gcmVxdWlyZXMgNSBpbnB1dHNcIik7bGV0IHI9KG8saSx1KT0+e2xldCBhPWkubGVuZ3RoO2lmKGEhPT1vLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYCR7dX06IG51bSBkaW1lbnNpb25zICE9ICR7YX1gKTtpLmZvckVhY2goKHAsbSk9PntpZihwIT09b1ttXSl0aHJvdyBuZXcgRXJyb3IoYCR7dX06IGRpbVske219XSBkbyBub3QgbWF0Y2hgKX0pfTtpZihlWzBdLmRpbXMubGVuZ3RoPjEpe2xldCBvPXQuZm9ybWF0PT09XCJOSFdDXCI/dC5zcGF0aWFsP2VbMF0uZGltcy5zbGljZSgtMSk6ZVswXS5kaW1zLnNsaWNlKC0xKS5jb25jYXQoZVswXS5kaW1zLnNsaWNlKDEsZVswXS5kaW1zLmxlbmd0aC0xKSk6ZVswXS5kaW1zLnNsaWNlKDEsdC5zcGF0aWFsPzI6dm9pZCAwKTtyKGVbMV0uZGltcyxvLFwiSW52YWxpZCBpbnB1dCBzY2FsZVwiKSxyKGVbMl0uZGltcyxvLFwiSW52YWxpZCBpbnB1dCBCXCIpLHIoZVszXS5kaW1zLG8sXCJJbnZhbGlkIGlucHV0IG1lYW5cIikscihlWzRdLmRpbXMsbyxcIkludmFsaWQgaW5wdXQgdmFyXCIpfWVsc2UgcihlWzFdLmRpbXMsWzFdLFwiSW52YWxpZCBpbnB1dCBzY2FsZVwiKSxyKGVbMl0uZGltcyxbMV0sXCJJbnZhbGlkIGlucHV0IEJcIikscihlWzNdLmRpbXMsWzFdLFwiSW52YWxpZCBpbnB1dCBtZWFuXCIpLHIoZVs0XS5kaW1zLFsxXSxcIkludmFsaWQgaW5wdXQgdmFyXCIpfSxrZD0oZSx0KT0+e2xldHtlcHNpbG9uOnIsc3BhdGlhbDpvLGZvcm1hdDppfT10LHU9ZVswXS5kaW1zLGE9bz9IZSh1W3UubGVuZ3RoLTFdKToxLHA9aT09PVwiTkhXQ1wiJiZ1Lmxlbmd0aD4xP2E6MSxtPVcuc2l6ZSh1KS9hLGg9byxkPWg/dS5sZW5ndGg6dSx5PVYoXCJ4XCIsZVswXS5kYXRhVHlwZSxlWzBdLmRpbXMsYSksdz1WKFwic2NhbGVcIixlWzFdLmRhdGFUeXBlLGVbMV0uZGltcyxwKSxfPVYoXCJiaWFzXCIsZVsyXS5kYXRhVHlwZSxlWzJdLmRpbXMscCksdj1WKFwiaW5wdXRNZWFuXCIsZVszXS5kYXRhVHlwZSxlWzNdLmRpbXMscCkseD1WKFwiaW5wdXRWYXJcIixlWzRdLmRhdGFUeXBlLGVbNF0uZGltcyxwKSxUPUooXCJ5XCIsZVswXS5kYXRhVHlwZSxkLGEpLEM9KCk9PntsZXQgRT1cIlwiO2lmKG8pRT1gbGV0IGNPZmZzZXQgPSAke3UubGVuZ3RoPT09MT9cIjB1XCI6aT09PVwiTkhXQ1wiP2BvdXRwdXRJbmRpY2VzWyR7dS5sZW5ndGgtMX1dIC8gJHthfWA6XCJvdXRwdXRJbmRpY2VzWzFdXCJ9O2A7ZWxzZSBpZihpPT09XCJOQ0hXXCIpRT1gXFxuICAgICAgICAgICAgJHtULmluZGljZXNTZXQoXCJvdXRwdXRJbmRpY2VzXCIsXCIwXCIsXCIwXCIpfVxcbiAgICAgICAgICAgIGxldCBjT2Zmc2V0ID0gJHtULmluZGljZXNUb09mZnNldChcIm91dHB1dEluZGljZXNcIil9O2A7ZWxzZXtFPWB2YXIgY0luZGljZXMgPSAke3cudHlwZS5pbmRpY2VzfSgwKTtcXG4gICAgICAgICAgICAgICAgICAgICAgIGNJbmRpY2VzWzBdID0gb3V0cHV0SW5kaWNlc1ske3UubGVuZ3RoLTF9XTtgO2ZvcihsZXQgTz0xO088dy5yYW5rO08rKylFKz1gY0luZGljZXNbJHtPfV0gPSBvdXRwdXRJbmRpY2VzWyR7T31dO2A7RSs9YGxldCBjT2Zmc2V0ID0gJHt3LmluZGljZXNUb09mZnNldChcImNJbmRpY2VzXCIpfTtgfXJldHVybiBFfSxTPUU9PmBcXG4gIGNvbnN0IGVwc2lsb24gPSAke3J9O1xcbiAgJHtFLnJlZ2lzdGVyVW5pZm9ybShcIm91dHB1dFNpemVcIixcInUzMlwiKS5kZWNsYXJlVmFyaWFibGVzKHksdyxfLHYseCxUKX1cXG4gICR7RS5tYWluU3RhcnQoKX1cXG4gICR7RS5ndWFyZEFnYWluc3RPdXRPZkJvdW5kc1dvcmtncm91cFNpemVzKFwidW5pZm9ybXMub3V0cHV0U2l6ZVwiKX1cXG4gICAgdmFyIG91dHB1dEluZGljZXMgPSAke1Qub2Zmc2V0VG9JbmRpY2VzKGBnbG9iYWxfaWR4ICogJHthfWApfTtcXG4gICAgJHtDKCl9XFxuICAgIGxldCBzY2FsZSA9ICR7dy5nZXRCeU9mZnNldChcImNPZmZzZXRcIil9O1xcbiAgICBsZXQgYmlhcyA9ICR7Xy5nZXRCeU9mZnNldChcImNPZmZzZXRcIil9O1xcbiAgICBsZXQgaW5wdXRNZWFuID0gJHt2LmdldEJ5T2Zmc2V0KFwiY09mZnNldFwiKX07XFxuICAgIGxldCBpbnB1dFZhciA9ICR7eC5nZXRCeU9mZnNldChcImNPZmZzZXRcIil9O1xcbiAgICBsZXQgeCA9ICR7eS5nZXRCeU9mZnNldChcImdsb2JhbF9pZHhcIil9O1xcbiAgICBsZXQgdmFsdWUgPSAoeCAtIGlucHV0TWVhbikgKiBpbnZlcnNlU3FydChpbnB1dFZhciArIGVwc2lsb24pICogc2NhbGUgKyBiaWFzO1xcbiAgICAke1Quc2V0QnlPZmZzZXQoXCJnbG9iYWxfaWR4XCIsXCJ2YWx1ZVwiKX1cXG4gIH1gO3JldHVybntuYW1lOlwiQmF0Y2hOb3JtYWxpemF0aW9uXCIsc2hhZGVyQ2FjaGU6e2hpbnQ6YCR7dC5lcHNpbG9ufV8ke3QuZm9ybWF0fV8ke299XyR7YX1gLGlucHV0RGVwZW5kZW5jaWVzOmg/W1wicmFua1wiLFwidHlwZVwiLFwidHlwZVwiLFwidHlwZVwiLFwidHlwZVwiXTp2b2lkIDB9LGdldFNoYWRlclNvdXJjZTpTLGdldFJ1bkRhdGE6KCk9Pih7b3V0cHV0czpbe2RpbXM6ZVswXS5kaW1zLGRhdGFUeXBlOmVbMF0uZGF0YVR5cGV9XSxkaXNwYXRjaEdyb3VwOnt4Ok1hdGguY2VpbChtLzY0KX0scHJvZ3JhbVVuaWZvcm1zOmg/W3t0eXBlOlwidWludDMyXCIsZGF0YTptfSwuLi5HKHUpXTpbe3R5cGU6XCJ1aW50MzJcIixkYXRhOm19XX0pfX0sUmQ9ZT0+eGUoZSksemE9KGUsdCk9PntsZXR7aW5wdXRzOnIsb3V0cHV0Q291bnQ6b309ZSxpPVJkKHsuLi50LG91dHB1dENvdW50Om99KTtpZihsci53ZWJncHUudmFsaWRhdGVJbnB1dENvbnRlbnQmJk9kKHIsaSksdC50cmFpbmluZ01vZGUpdGhyb3cgbmV3IEVycm9yKFwiQmF0Y2hOb3JtYWxpemF0aW9uIHRyYWluaW5nTW9kZSBpcyBub3Qgc3VwcG9ydGVkIHlldC5cIik7ZS5jb21wdXRlKGtkKHIsaSkpfX0pO3ZhciBCZCxEZCxWYSxXYT1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7Q2UoKTtfZSgpO0JkPWU9PntpZihlWzBdLmRpbXMubGVuZ3RoIT09Myl0aHJvdyBuZXcgRXJyb3IoXCJpbnB1dCBzaG91bGQgaGF2ZSAzIGRpbWVuc2lvbnNcIik7aWYoIVszMjAsNjQwLDEyODBdLmluY2x1ZGVzKGVbMF0uZGltc1syXSkpdGhyb3cgbmV3IEVycm9yKFwibnVtYmVyIG9mIGNoYW5uZWxzIHNob3VsZCBiZSAzMjAsIDY0MCBvciAxMjgwXCIpO2lmKGVbMV0uZGltcy5sZW5ndGghPT0xKXRocm93IG5ldyBFcnJvcihcImJpYXMgaXMgZXhwZWN0ZWQgdG8gaGF2ZSAxIGRpbWVuc2lvbnNcIik7aWYoZVswXS5kaW1zWzJdIT09ZVsxXS5kaW1zWzBdKXRocm93IG5ldyBFcnJvcihcImxhc3QgZGltZW5zaW9uIG9mIGlucHV0IGFuZCBiaWFzIGFyZSBub3QgdGhlIHNhbWVcIil9LERkPWU9PntsZXQgdD1lWzBdLmRpbXMscj1lWzBdLmRpbXNbMl0sbz1XLnNpemUodCkvNCxpPWVbMF0uZGF0YVR5cGUsdT1WKFwiaW5wdXRcIixpLHQsNCksYT1WKFwiYmlhc1wiLGksW3JdLDQpLHA9VihcInJlc2lkdWFsXCIsaSx0LDQpLG09SihcIm91dHB1dFwiLGksdCw0KTtyZXR1cm57bmFtZTpcIkJpYXNBZGRcIixnZXRSdW5EYXRhOigpPT4oe291dHB1dHM6W3tkaW1zOnQsZGF0YVR5cGU6ZVswXS5kYXRhVHlwZX1dLGRpc3BhdGNoR3JvdXA6e3g6TWF0aC5jZWlsKG8vNjQpfX0pLGdldFNoYWRlclNvdXJjZTpkPT5gXFxuICBjb25zdCBjaGFubmVscyA9ICR7cn11IC8gNDtcXG4gICR7ZC5kZWNsYXJlVmFyaWFibGVzKHUsYSxwLG0pfVxcblxcbiAgJHtkLm1haW5TdGFydCgpfVxcbiAgICAke2QuZ3VhcmRBZ2FpbnN0T3V0T2ZCb3VuZHNXb3JrZ3JvdXBTaXplcyhvKX1cXG4gICAgbGV0IHZhbHVlID0gJHt1LmdldEJ5T2Zmc2V0KFwiZ2xvYmFsX2lkeFwiKX1cXG4gICAgICArICR7YS5nZXRCeU9mZnNldChcImdsb2JhbF9pZHggJSBjaGFubmVsc1wiKX0gKyAke3AuZ2V0QnlPZmZzZXQoXCJnbG9iYWxfaWR4XCIpfTtcXG4gICAgJHttLnNldEJ5T2Zmc2V0KFwiZ2xvYmFsX2lkeFwiLFwidmFsdWVcIil9XFxuICB9YH19LFZhPWU9PntCZChlLmlucHV0cyksZS5jb21wdXRlKERkKGUuaW5wdXRzKSl9fSk7dmFyIE1kLFRlLE5hLEhhLEdhLExhLEZhLGphLHFhLEthLFlhLHpkLFphLFhhLEphLFFhLFBuLGVzLE9uLHRzLHJzLG5zLG9zLGlzLGFzLHNzLHVzLGxzLGRzLGNzLHBzLG1zLGZzLGhzLGdzLHlzLGJzLHdzLENvPVEoKCk9PntcInVzZSBzdHJpY3RcIjtWZSgpO0NlKCk7WWUoKTtfZSgpO01kPShlLHQscixvLGksdSk9PntsZXQgYT1NYXRoLmNlaWwodC80KSxwPVwiXCI7dHlwZW9mIGk9PVwic3RyaW5nXCI/cD1gJHtpfShhKWA6cD1pKFwiYVwiKTtsZXQgbT1WKFwiaW5wdXREYXRhXCIscixbYV0sNCksaD1KKFwib3V0cHV0RGF0YVwiLG8sW2FdLDQpO3JldHVybmBcXG4gICAgICAke2UucmVnaXN0ZXJVbmlmb3JtKFwidmVjX3NpemVcIixcInUzMlwiKS5kZWNsYXJlVmFyaWFibGVzKG0saCl9XFxuXFxuICAke3U/P1wiXCJ9XFxuXFxuICAke2UubWFpblN0YXJ0KCl9XFxuICAgICR7ZS5ndWFyZEFnYWluc3RPdXRPZkJvdW5kc1dvcmtncm91cFNpemVzKFwidW5pZm9ybXMudmVjX3NpemVcIil9XFxuXFxuICAgIGxldCBhID0gJHttLmdldEJ5T2Zmc2V0KFwiZ2xvYmFsX2lkeFwiKX07XFxuICAgICR7aC5zZXRCeU9mZnNldChcImdsb2JhbF9pZHhcIixwKX1cXG4gIH1gfSxUZT0oZSx0LHIsbyxpLHU9ZS5kYXRhVHlwZSk9Pih7bmFtZTp0LHNoYWRlckNhY2hlOntoaW50OmksaW5wdXREZXBlbmRlbmNpZXM6W1widHlwZVwiXX0sZ2V0U2hhZGVyU291cmNlOmE9Pk1kKGEsVy5zaXplKGUuZGltcyksZS5kYXRhVHlwZSx1LHIsbyksZ2V0UnVuRGF0YTphPT4oe291dHB1dHM6W3tkaW1zOmUuZGltcyxkYXRhVHlwZTp1fV0sZGlzcGF0Y2hHcm91cDp7eDpNYXRoLmNlaWwoVy5zaXplKGFbMF0uZGltcykvNjQvNCl9LHByb2dyYW1Vbmlmb3Jtczpbe3R5cGU6XCJ1aW50MzJcIixkYXRhOk1hdGguY2VpbChXLnNpemUoZS5kaW1zKS80KX1dfSl9KSxOYT1lPT57ZS5jb21wdXRlKFRlKGUuaW5wdXRzWzBdLFwiQWJzXCIsXCJhYnNcIikpfSxIYT1lPT57ZS5jb21wdXRlKFRlKGUuaW5wdXRzWzBdLFwiQWNvc1wiLFwiYWNvc1wiKSl9LEdhPWU9PntlLmNvbXB1dGUoVGUoZS5pbnB1dHNbMF0sXCJBY29zaFwiLFwiYWNvc2hcIikpfSxMYT1lPT57ZS5jb21wdXRlKFRlKGUuaW5wdXRzWzBdLFwiQXNpblwiLFwiYXNpblwiKSl9LEZhPWU9PntlLmNvbXB1dGUoVGUoZS5pbnB1dHNbMF0sXCJBc2luaFwiLFwiYXNpbmhcIikpfSxqYT1lPT57ZS5jb21wdXRlKFRlKGUuaW5wdXRzWzBdLFwiQXRhblwiLFwiYXRhblwiKSl9LHFhPWU9PntlLmNvbXB1dGUoVGUoZS5pbnB1dHNbMF0sXCJBdGFuaFwiLFwiYXRhbmhcIikpfSxLYT1lPT54ZShlKSxZYT0oZSx0KT0+e2xldCByO3N3aXRjaCh0LnRvKXtjYXNlIDEwOnI9XCJ2ZWM0PGYxNj5cIjticmVhaztjYXNlIDE6cj1cInZlYzQ8ZjMyPlwiO2JyZWFrO2Nhc2UgMTI6cj1cInZlYzQ8dTMyPlwiO2JyZWFrO2Nhc2UgNjpyPVwidmVjNDxpMzI+XCI7YnJlYWs7Y2FzZSA5OnI9XCJ2ZWM0PGJvb2w+XCI7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgUmFuZ2VFcnJvcihgbm90IHN1cHBvcnRlZCB0eXBlIChzcGVjaWZpZWQgaW4gYXR0cmlidXRlIFxcJ3RvXFwnIGZyb20gXFwnQ2FzdFxcJyBvcGVyYXRvcik6ICR7dC50b31gKX1lLmNvbXB1dGUoVGUoZS5pbnB1dHNbMF0sXCJDYXN0XCIscix2b2lkIDAsdC5jYWNoZUtleSx0LnRvKSl9LHpkPWU9PntsZXQgdD1lLmxlbmd0aD49MiYmZVsxXS5kYXRhIT09MD9lWzFdLmdldEZsb2F0MzJBcnJheSgpWzBdOnhuLHI9ZS5sZW5ndGg+PTMmJmVbMl0uZGF0YSE9PTA/ZVsyXS5nZXRGbG9hdDMyQXJyYXkoKVswXTpDbjtyZXR1cm4geGUoe21pbjp0LG1heDpyfSl9LFphPShlLHQpPT57bGV0IHI9ZS5pbnB1dHMubGVuZ3RoPT09MT90OnpkKGUuaW5wdXRzKSxvPWh0KGUuaW5wdXRzWzBdLmRhdGFUeXBlKTtlLmNvbXB1dGUoVGUoZS5pbnB1dHNbMF0sXCJDbGlwXCIsaT0+YGNsYW1wKCR7aX0sIGNsaXBfbWluXywgY2xpcF9tYXhfKWAsYFxcbiAgICBjb25zdCBjbGlwX21pbl86IHZlYzQ8JHtvfT4gPSB2ZWM0KCR7b30oJHtyLm1pbn0pKTtcXG4gICAgY29uc3QgY2xpcF9tYXhfOiB2ZWM0PCR7b30+ID0gdmVjNCgke299KCR7ci5tYXh9KSk7XFxuYCxyLmNhY2hlS2V5KSx7aW5wdXRzOlswXX0pfSxYYT1lPT57ZS5jb21wdXRlKFRlKGUuaW5wdXRzWzBdLFwiQ2VpbFwiLFwiY2VpbFwiKSl9LEphPWU9PntlLmNvbXB1dGUoVGUoZS5pbnB1dHNbMF0sXCJDb3NcIixcImNvc1wiKSl9LFFhPWU9PntlLmNvbXB1dGUoVGUoZS5pbnB1dHNbMF0sXCJDb3NoXCIsXCJjb3NoXCIpKX0sUG49ZT0+eGUoZSksZXM9KGUsdCk9PntsZXQgcj1odChlLmlucHV0c1swXS5kYXRhVHlwZSk7ZS5jb21wdXRlKFRlKGUuaW5wdXRzWzBdLFwiRWx1XCIsbz0+YGVsdV92ZjMyKCR7b30pYCxgXFxuICBjb25zdCBlbHVfYWxwaGFfID0gJHtyfSgke3QuYWxwaGF9KTtcXG5cXG4gIGZuIGVsdV9mMzIoYTogJHtyfSkgLT4gJHtyfSB7XFxuICByZXR1cm4gc2VsZWN0KChleHAoYSkgLSAxLjApICogZWx1X2FscGhhXywgYSwgYSA+PSAwLjApO1xcbiAgfVxcblxcbiAgZm4gZWx1X3ZmMzIodjogdmVjNDwke3J9PikgLT4gdmVjNDwke3J9PiB7XFxuICByZXR1cm4gdmVjNChlbHVfZjMyKHYueCksIGVsdV9mMzIodi55KSwgZWx1X2YzMih2LnopLCBlbHVfZjMyKHYudykpO1xcbiAgfWAsdC5jYWNoZUtleSkpfSxPbj0oZSx0PVwiZjMyXCIpPT5gXFxuY29uc3QgcjA6ICR7dH0gPSAwLjMyNzU5MTE7XFxuY29uc3QgcjE6ICR7dH0gPSAwLjI1NDgyOTU5MjtcXG5jb25zdCByMjogJHt0fSA9IC0wLjI4NDQ5NjczNjtcXG5jb25zdCByMzogJHt0fSA9IDEuNDIxNDEzNzQxO1xcbmNvbnN0IHI0OiAke3R9ID0gLTEuNDUzMTUyMDI3O1xcbmNvbnN0IHI1OiAke3R9ID0gMS4wNjE0MDU0Mjk7XFxuXFxuZm4gZXJmX3ZmMzIodjogJHtlfSkgLT4gJHtlfSB7XFxuICBsZXQgYWJzdiA9IGFicyh2KTtcXG4gIGxldCB4ID0gMS4wIC8gKDEuMCArIHIwICogYWJzdik7XFxuICByZXR1cm4gc2lnbih2KSAqICgxLjAgLSAoKCgocjUgKiB4ICsgcjQpICogeCArIHIzKSAqIHggKyByMikgKiB4ICsgcjEpICogeCAqIGV4cCgtYWJzdiAqIGFic3YpKTtcXG59YCx0cz1lPT57bGV0IHQ9aHQoZS5pbnB1dHNbMF0uZGF0YVR5cGUpO2UuY29tcHV0ZShUZShlLmlucHV0c1swXSxcIkVyZlwiLHI9PmBlcmZfdmYzMigke3J9KWAsT24oYHZlYzQ8JHt0fT5gLHQpKSl9LHJzPWU9PntlLmNvbXB1dGUoVGUoZS5pbnB1dHNbMF0sXCJFeHBcIixcImV4cFwiKSl9LG5zPWU9PntlLmNvbXB1dGUoVGUoZS5pbnB1dHNbMF0sXCJGbG9vclwiLFwiZmxvb3JcIikpfSxvcz1lPT57bGV0IHQ9aHQoZS5pbnB1dHNbMF0uZGF0YVR5cGUpO2UuY29tcHV0ZShUZShlLmlucHV0c1swXSxcIkdlbHVcIixyPT5gMC41ICogJHtyfSAqICgxLjAgKyBlcmZfdmYzMigke3J9ICogMC43MDcxMDY3ODExODY1NDc1KSlgLE9uKGB2ZWM0PCR7dH0+YCx0KSkpfSxpcz0oZSx0KT0+e2xldCByPWh0KGUuaW5wdXRzWzBdLmRhdGFUeXBlKTtlLmNvbXB1dGUoVGUoZS5pbnB1dHNbMF0sXCJMZWFreVJlbHVcIixvPT5gc2VsZWN0KGxlYWt5X3JlbHVfYWxwaGFfICogJHtvfSwgJHtvfSwgJHtvfSA+PSB2ZWM0PCR7cn0+KDAuMCkpYCxgY29uc3QgbGVha3lfcmVsdV9hbHBoYV8gPSAke3J9KCR7dC5hbHBoYX0pO2AsdC5jYWNoZUtleSkpfSxhcz1lPT57ZS5jb21wdXRlKFRlKGUuaW5wdXRzWzBdLFwiTm90XCIsdD0+YCEke3R9YCkpfSxzcz1lPT57ZS5jb21wdXRlKFRlKGUuaW5wdXRzWzBdLFwiTmVnXCIsdD0+YC0ke3R9YCkpfSx1cz1lPT57ZS5jb21wdXRlKFRlKGUuaW5wdXRzWzBdLFwiUmVjaXByb2NhbFwiLHQ9PmAxLjAvJHt0fWApKX0sbHM9ZT0+e2xldCB0PWh0KGUuaW5wdXRzWzBdLmRhdGFUeXBlKTtlLmNvbXB1dGUoVGUoZS5pbnB1dHNbMF0sXCJSZWx1XCIscj0+YHNlbGVjdCh2ZWM0PCR7dH0+KDAuMCksICR7cn0sICR7cn0gPiB2ZWM0PCR7dH0+KDAuMCkpYCkpfSxkcz1lPT57ZS5jb21wdXRlKFRlKGUuaW5wdXRzWzBdLFwiU2lnbW9pZFwiLHQ9PmAoMS4wIC8gKDEuMCArIGV4cCgtJHt0fSkpKWApKX0sY3M9ZT0+eGUoZSkscHM9KGUsdCk9PntsZXQgcj1odChlLmlucHV0c1swXS5kYXRhVHlwZSk7ZS5jb21wdXRlKFRlKGUuaW5wdXRzWzBdLFwiSGFyZFNpZ21vaWRcIixvPT5gbWF4KHZlYzQ8JHtyfT4oMC4wKSwgbWluKHZlYzQ8JHtyfT4oMS4wKSwgJHt0LmFscGhhfSAqICR7b30gKyB2ZWM0PCR7cn0+KCR7dC5iZXRhfSkpKWAsdm9pZCAwLHQuY2FjaGVLZXkpKX0sbXM9ZT0+e2UuY29tcHV0ZShUZShlLmlucHV0c1swXSxcIlNpblwiLFwic2luXCIpKX0sZnM9ZT0+e2UuY29tcHV0ZShUZShlLmlucHV0c1swXSxcIlNpbmhcIixcInNpbmhcIikpfSxocz1lPT57ZS5jb21wdXRlKFRlKGUuaW5wdXRzWzBdLFwiU3FydFwiLFwic3FydFwiKSl9LGdzPWU9PntlLmNvbXB1dGUoVGUoZS5pbnB1dHNbMF0sXCJUYW5cIixcInRhblwiKSl9LHlzPWU9PntlLmNvbXB1dGUoVGUoZS5pbnB1dHNbMF0sXCJUYW5oXCIsdD0+YHNpZ24oJHt0fSkgKiAoMSAtIGV4cCgtMiAqIGFicygke3R9KSkpIC8gKDEgKyBleHAoLTIgKiBhYnMoJHt0fSkpKWApKX0sYnM9KGUsdCk9PntsZXQgcj1odChlLmlucHV0c1swXS5kYXRhVHlwZSk7cmV0dXJuIGUuY29tcHV0ZShUZShlLmlucHV0c1swXSxcIlRocmVzaG9sZGVkUmVsdVwiLG89PmBzZWxlY3QodmVjNDwke3J9PigwLjApLCAke299LCAke299ID4gdGhyZXNob2xkZWRfcmVsdV9hbHBoYV8pYCxgY29uc3QgdGhyZXNob2xkZWRfcmVsdV9hbHBoYV8gPSB2ZWM0PCR7cn0+KCR7dC5hbHBoYX0pO2AsdC5jYWNoZUtleSkpLDB9LHdzPWU9PntlLmNvbXB1dGUoVGUoZS5pbnB1dHNbMF0sXCJMb2dcIixcImxvZ1wiKSl9fSk7dmFyIFZkLFdkLHZzLCRzPVEoKCk9PntcInVzZSBzdHJpY3RcIjtDZSgpO19lKCk7Q28oKTtWZD1lPT57aWYoZVswXS5kaW1zLmxlbmd0aCE9PTMpdGhyb3cgbmV3IEVycm9yKFwiaW5wdXQgc2hvdWxkIGhhdmUgMyBkaW1lbnNpb25zXCIpO2lmKCFbMjU2MCw1MTIwLDEwMjQwXS5pbmNsdWRlcyhlWzBdLmRpbXNbMl0pKXRocm93IG5ldyBFcnJvcihcImhpZGRlbiBzdGF0ZSBzaG91bGQgYmUgMjU2MCwgNTEyMCBvciAxMDI0MFwiKTtpZihlWzFdLmRpbXMubGVuZ3RoIT09MSl0aHJvdyBuZXcgRXJyb3IoXCJiaWFzIGlzIGV4cGVjdGVkIHRvIGhhdmUgMSBkaW1lbnNpb25zXCIpO2lmKGVbMF0uZGltc1syXSE9PWVbMV0uZGltc1swXSl0aHJvdyBuZXcgRXJyb3IoXCJsYXN0IGRpbWVuc2lvbiBvZiBpbnB1dCBhbmQgYmlhcyBhcmUgbm90IHRoZSBzYW1lXCIpfSxXZD1lPT57bGV0IHQ9ZVswXS5kaW1zLnNsaWNlKCk7dFsyXT10WzJdLzI7bGV0IHI9VihcImlucHV0XCIsZVswXS5kYXRhVHlwZSxlWzBdLmRpbXMsNCksbz1WKFwiYmlhc1wiLGVbMF0uZGF0YVR5cGUsW2VbMF0uZGltc1syXV0sNCksaT1KKFwib3V0cHV0XCIsZVswXS5kYXRhVHlwZSx0LDQpLHU9Vy5zaXplKHQpLzQsYT1OZShlWzBdLmRhdGFUeXBlKTtyZXR1cm57bmFtZTpcIkJpYXNTcGxpdEdlbHVcIixnZXRSdW5EYXRhOigpPT4oe291dHB1dHM6W3tkaW1zOnQsZGF0YVR5cGU6ZVswXS5kYXRhVHlwZX1dLGRpc3BhdGNoR3JvdXA6e3g6TWF0aC5jZWlsKHUvNjQpfX0pLGdldFNoYWRlclNvdXJjZTptPT5gXFxuICBjb25zdCBNX1NRUlQyID0gc3FydCgyLjApO1xcbiAgY29uc3QgaGFsZkNoYW5uZWxzID0gJHtlWzBdLmRpbXNbMl0vNC8yfXU7XFxuXFxuICAke20uZGVjbGFyZVZhcmlhYmxlcyhyLG8saSl9XFxuXFxuICAke09uKGB2ZWM0PCR7YX0+YCxhKX1cXG5cXG4gICR7bS5tYWluU3RhcnQoKX1cXG4gICAgJHttLmd1YXJkQWdhaW5zdE91dE9mQm91bmRzV29ya2dyb3VwU2l6ZXModSl9XFxuICAgIGxldCBiaWFzSWR4ID0gZ2xvYmFsX2lkeCAlIGhhbGZDaGFubmVscztcXG4gICAgbGV0IGJhdGNoSW5kZXggPSBnbG9iYWxfaWR4IC8gaGFsZkNoYW5uZWxzO1xcbiAgICBsZXQgaW5wdXRPZmZzZXQgPSBiaWFzSWR4ICsgYmF0Y2hJbmRleCAqIGhhbGZDaGFubmVscyAqIDI7XFxuICAgIGxldCB2YWx1ZUxlZnQgPSBpbnB1dFtpbnB1dE9mZnNldF0gKyBiaWFzW2JpYXNJZHhdO1xcbiAgICBsZXQgdmFsdWVSaWdodCA9IGlucHV0W2lucHV0T2Zmc2V0ICsgaGFsZkNoYW5uZWxzXSArIGJpYXNbYmlhc0lkeCArIGhhbGZDaGFubmVsc107XFxuICAgIGxldCBnZWx1UmlnaHQgPSB2YWx1ZVJpZ2h0ICogMC41ICogKGVyZl92ZjMyKHZhbHVlUmlnaHQgLyBNX1NRUlQyKSArIDEpO1xcblxcbiAgICAke2kuc2V0QnlPZmZzZXQoXCJnbG9iYWxfaWR4XCIsXCJ2YWx1ZUxlZnQgKiBnZWx1UmlnaHRcIil9XFxuICB9YH19LHZzPWU9PntWZChlLmlucHV0cyksZS5jb21wdXRlKFdkKGUuaW5wdXRzKSl9fSk7dmFyIE5kLEhkLEN0LF9zLFNzLHhzLENzLEFzLElzLFRzLEVzLFBzLE9zLGtzPVEoKCk9PntcInVzZSBzdHJpY3RcIjtWZSgpO0NlKCk7X2UoKTtOZD0oZSx0LHIsbyxpLHUsYSxwLG0saCxkLHkpPT57bGV0IHcsXzt0eXBlb2YgcD09XCJzdHJpbmdcIj93PV89KFMsRSk9PmAke3B9KCgke1N9KSwoJHtFfSkpYDp0eXBlb2YgcD09XCJmdW5jdGlvblwiP3c9Xz1wOih3PXAuc2NhbGFyLF89cC52ZWN0b3IpO2xldCB2PUooXCJvdXRwdXREYXRhXCIsZCxvLmxlbmd0aCw0KSx4PVYoXCJhRGF0YVwiLG0sdC5sZW5ndGgsNCksVD1WKFwiYkRhdGFcIixoLHIubGVuZ3RoLDQpLEM7aWYoaSlpZih1KXtsZXQgUz1XLnNpemUodCk9PT0xLEU9Vy5zaXplKHIpPT09MSxPPXQubGVuZ3RoPjAmJnRbdC5sZW5ndGgtMV0lND09PTAsVT1yLmxlbmd0aD4wJiZyW3IubGVuZ3RoLTFdJTQ9PT0wO1N8fEU/Qz12LnNldEJ5T2Zmc2V0KFwiZ2xvYmFsX2lkeFwiLF8oUz9gJHt4LnR5cGUudmFsdWV9KCR7eC5nZXRCeU9mZnNldChcIjBcIil9LngpYDp4LmdldEJ5T2Zmc2V0KFwiZ2xvYmFsX2lkeFwiKSxFP2Ake1QudHlwZS52YWx1ZX0oJHtULmdldEJ5T2Zmc2V0KFwiMFwiKX0ueClgOlQuZ2V0QnlPZmZzZXQoXCJnbG9iYWxfaWR4XCIpKSk6Qz1gXFxuICAgICAgICAgICAgbGV0IG91dHB1dEluZGljZXMgPSAke3Yub2Zmc2V0VG9JbmRpY2VzKFwiZ2xvYmFsX2lkeCAqIDR1XCIpfTtcXG4gICAgICAgICAgICBsZXQgb2Zmc2V0QSA9ICR7eC5icm9hZGNhc3RlZEluZGljZXNUb09mZnNldChcIm91dHB1dEluZGljZXNcIix2KX07XFxuICAgICAgICAgICAgbGV0IG9mZnNldEIgPSAke1QuYnJvYWRjYXN0ZWRJbmRpY2VzVG9PZmZzZXQoXCJvdXRwdXRJbmRpY2VzXCIsdil9O1xcbiAgICAgICAgICAgICR7di5zZXRCeU9mZnNldChcImdsb2JhbF9pZHhcIixfKGF8fE8/eC5nZXRCeU9mZnNldChcIm9mZnNldEEgLyA0dVwiKTpgJHt4LnR5cGUudmFsdWV9KCR7eC5nZXRCeU9mZnNldChcIm9mZnNldEEgLyA0dVwiKX1bb2Zmc2V0QSAlIDR1XSlgLGF8fFU/VC5nZXRCeU9mZnNldChcIm9mZnNldEIgLyA0dVwiKTpgJHtULnR5cGUudmFsdWV9KCR7VC5nZXRCeU9mZnNldChcIm9mZnNldEIgLyA0dVwiKX1bb2Zmc2V0QiAlIDR1XSlgKSl9XFxuICAgICAgICAgIGB9ZWxzZSBDPXYuc2V0QnlPZmZzZXQoXCJnbG9iYWxfaWR4XCIsXyh4LmdldEJ5T2Zmc2V0KFwiZ2xvYmFsX2lkeFwiKSxULmdldEJ5T2Zmc2V0KFwiZ2xvYmFsX2lkeFwiKSkpO2Vsc2V7aWYoIXUpdGhyb3cgbmV3IEVycm9yKFwibm8gbmVjZXNzYXJ5IHRvIHVzZSBzY2FsYXIgaW1wbGVtZW50YXRpb24gZm9yIGVsZW1lbnQtd2lzZSBiaW5hcnkgb3AgaW1wbGVtZW50YXRpb24uXCIpO2xldCBTPShFLE8sVT1cIlwiKT0+e2xldCBNPWBhRGF0YVtpbmRleEEke099XVtjb21wb25lbnRBJHtPfV1gLE49YGJEYXRhW2luZGV4QiR7T31dW2NvbXBvbmVudEIke099XWA7cmV0dXJuYFxcbiAgICAgICAgICAgIGxldCBvdXRwdXRJbmRpY2VzJHtPfSA9ICR7di5vZmZzZXRUb0luZGljZXMoYGdsb2JhbF9pZHggKiA0dSArICR7T311YCl9O1xcbiAgICAgICAgICAgIGxldCBvZmZzZXRBJHtPfSA9ICR7eC5icm9hZGNhc3RlZEluZGljZXNUb09mZnNldChgb3V0cHV0SW5kaWNlcyR7T31gLHYpfTtcXG4gICAgICAgICAgICBsZXQgb2Zmc2V0QiR7T30gPSAke1QuYnJvYWRjYXN0ZWRJbmRpY2VzVG9PZmZzZXQoYG91dHB1dEluZGljZXMke099YCx2KX07XFxuICAgICAgICAgICAgbGV0IGluZGV4QSR7T30gPSBvZmZzZXRBJHtPfSAvIDR1O1xcbiAgICAgICAgICAgIGxldCBpbmRleEIke099ID0gb2Zmc2V0QiR7T30gLyA0dTtcXG4gICAgICAgICAgICBsZXQgY29tcG9uZW50QSR7T30gPSBvZmZzZXRBJHtPfSAlIDR1O1xcbiAgICAgICAgICAgIGxldCBjb21wb25lbnRCJHtPfSA9IG9mZnNldEIke099ICUgNHU7XFxuICAgICAgICAgICAgJHtFfVske099XSA9ICR7VX0oJHt3KE0sTil9KTtcXG4gICAgICAgICAgYH07ZD09PTk/Qz1gXFxuICAgICAgICAgICAgdmFyIGRhdGEgPSB2ZWM0PHUzMj4oMCk7XFxuICAgICAgICAgICAgJHtTKFwiZGF0YVwiLDAsXCJ1MzJcIil9XFxuICAgICAgICAgICAgJHtTKFwiZGF0YVwiLDEsXCJ1MzJcIil9XFxuICAgICAgICAgICAgJHtTKFwiZGF0YVwiLDIsXCJ1MzJcIil9XFxuICAgICAgICAgICAgJHtTKFwiZGF0YVwiLDMsXCJ1MzJcIil9XFxuICAgICAgICAgICAgb3V0cHV0RGF0YVtnbG9iYWxfaWR4XSA9IGRvdCh2ZWM0PHUzMj4oMHgxLCAweDEwMCwgMHgxMDAwMCwgMHgxMDAwMDAwKSwgdmVjNDx1MzI+KGRhdGEpKTtgOkM9YFxcbiAgICAgICAgICAgICR7UyhcIm91dHB1dERhdGFbZ2xvYmFsX2lkeF1cIiwwKX1cXG4gICAgICAgICAgICAke1MoXCJvdXRwdXREYXRhW2dsb2JhbF9pZHhdXCIsMSl9XFxuICAgICAgICAgICAgJHtTKFwib3V0cHV0RGF0YVtnbG9iYWxfaWR4XVwiLDIpfVxcbiAgICAgICAgICAgICR7UyhcIm91dHB1dERhdGFbZ2xvYmFsX2lkeF1cIiwzKX1cXG4gICAgICAgICAgYH1yZXR1cm5gXFxuICAgICAgICAke2UucmVnaXN0ZXJVbmlmb3JtKFwidmVjX3NpemVcIixcInUzMlwiKS5kZWNsYXJlVmFyaWFibGVzKHgsVCx2KX1cXG5cXG4gICAgICAgICR7eT8/XCJcIn1cXG5cXG4gICAgICAgICR7ZS5tYWluU3RhcnQoKX1cXG4gICAgICAgICR7ZS5ndWFyZEFnYWluc3RPdXRPZkJvdW5kc1dvcmtncm91cFNpemVzKFwidW5pZm9ybXMudmVjX3NpemVcIil9XFxuICAgICAgICAke0N9XFxuICAgICAgfWB9LEhkPShlLHQscixvLGksdSxhPXIuZGF0YVR5cGUpPT57bGV0IHA9IVcuYXJlRXF1YWwoci5kaW1zLG8uZGltcyksbT1yLmRpbXMsaD1XLnNpemUoci5kaW1zKSxkPSExLHk9ITEsdz1bcF07aWYocCl7bGV0IF89dnQuY2FsY1NoYXBlKHIuZGltcyxvLmRpbXMsITEpO2lmKCFfKXRocm93IG5ldyBFcnJvcihcIkNhblxcJ3QgcGVyZm9ybSBiaW5hcnkgb3Agb24gdGhlIGdpdmVuIHRlbnNvcnNcIik7bT1fLGg9Vy5zaXplKG0pO2xldCB2PVcuc2l6ZShyLmRpbXMpPT09MSx4PVcuc2l6ZShvLmRpbXMpPT09MSxUPXIuZGltcy5sZW5ndGg+MCYmci5kaW1zW3IuZGltcy5sZW5ndGgtMV0lND09PTAsQz1vLmRpbXMubGVuZ3RoPjAmJm8uZGltc1tvLmRpbXMubGVuZ3RoLTFdJTQ9PT0wO3cucHVzaCh2KSx3LnB1c2goeCksdy5wdXNoKFQpLHcucHVzaChDKTtsZXQgUz0xO2ZvcihsZXQgRT0xO0U8bS5sZW5ndGg7RSsrKXtsZXQgTz1yLmRpbXNbci5kaW1zLmxlbmd0aC1FXT8/MSxVPW8uZGltc1tvLmRpbXMubGVuZ3RoLUVdPz8xO2lmKE89PT1VKVMqPU87ZWxzZSBicmVha31TJTQ9PT0wPyh5PSEwLGQ9ITApOih2fHx4fHxUfHxDKSYmKGQ9ITApfWVsc2UgZD0hMDtyZXR1cm4gdy5wdXNoKGQpLHtuYW1lOmUsc2hhZGVyQ2FjaGU6e2hpbnQ6dCt3Lm1hcChfPT5fLnRvU3RyaW5nKCkpLmpvaW4oXCJfXCIpLGlucHV0RGVwZW5kZW5jaWVzOltcInJhbmtcIixcInJhbmtcIl19LGdldFNoYWRlclNvdXJjZTpfPT5OZChfLHIuZGltcyxvLmRpbXMsbSxkLHAseSxpLHIuZGF0YVR5cGUsby5kYXRhVHlwZSxhLHUpLGdldFJ1bkRhdGE6KCk9Pih7b3V0cHV0czpbe2RpbXM6bSxkYXRhVHlwZTphfV0sZGlzcGF0Y2hHcm91cDp7eDpNYXRoLmNlaWwoaC82NC80KX0scHJvZ3JhbVVuaWZvcm1zOlt7dHlwZTpcInVpbnQzMlwiLGRhdGE6TWF0aC5jZWlsKFcuc2l6ZShtKS80KX0sLi4uRyhyLmRpbXMpLC4uLkcoby5kaW1zKSwuLi5HKG0pXX0pfX0sQ3Q9KGUsdCxyLG8saSx1KT0+e2UuY29tcHV0ZShIZCh0LGk/P1wiXCIsZS5pbnB1dHNbMF0sZS5pbnB1dHNbMV0scixvLHUpKX0sX3M9ZT0+e0N0KGUsXCJBZGRcIiwodCxyKT0+YCR7dH0rJHtyfWApfSxTcz1lPT57Q3QoZSxcIkRpdlwiLCh0LHIpPT5gJHt0fS8ke3J9YCl9LHhzPWU9PntDdChlLFwiRXF1YWxcIix7c2NhbGFyOih0LHIpPT5gdTMyKCR7dH09PSR7cn0pYCx2ZWN0b3I6KHQscik9PmB2ZWM0PHUzMj4oJHt0fT09JHtyfSlgfSx2b2lkIDAsdm9pZCAwLDkpfSxDcz1lPT57Q3QoZSxcIk11bFwiLCh0LHIpPT5gJHt0fSoke3J9YCl9LEFzPWU9PntsZXQgdD1WKFwiaW5wdXRcIixlLmlucHV0c1swXS5kYXRhVHlwZSxlLmlucHV0c1swXS5kaW1zKS50eXBlLnZhbHVlO0N0KGUsXCJQb3dcIix7c2NhbGFyOihvLGkpPT5gcG93X2N1c3RvbSgke299LCR7aX0pYCx2ZWN0b3I6KG8saSk9PmBwb3dfdmVjdG9yX2N1c3RvbSgke299LCR7aX0pYH0sYFxcbiAgICBmbiBwb3dfY3VzdG9tKGEgOiAke3R9LCBiIDogJHt0fSkgLT4gJHt0fSB7XFxuICAgICAgaWYgKGIgPT0gJHt0fSgwLjApKSB7XFxuICAgICAgICByZXR1cm4gJHt0fSgxLjApO1xcbiAgICAgIH0gZWxzZSBpZiAoYSA8ICR7dH0oMC4wKSAmJiBmMzIoYikgIT0gZmxvb3IoZjMyKGIpKSkge1xcbiAgICAgICAgcmV0dXJuICR7dH0ocG93KGYzMihhKSwgZjMyKGIpKSk7IC8vIE5hTlxcbiAgICAgIH1cXG4gICAgICByZXR1cm4gc2VsZWN0KHNpZ24oYSksICR7dH0oMS4wKSwgcm91bmQoZjMyKGFicyhiKSAlICR7dH0oMi4wKSkpICE9IDEuMCkgKiAke3R9KCR7dD09PVwiaTMyXCI/XCJyb3VuZFwiOlwiXCJ9KHBvdyhmMzIoYWJzKGEpKSwgZjMyKGIpKSkpO1xcbiAgICB9XFxuICAgIGZuIHBvd192ZWN0b3JfY3VzdG9tKGEgOiB2ZWM0PCR7dH0+LCBiIDogdmVjNDwke3R9PikgLT4gdmVjNDwke3R9PiB7XFxuICAgICAgLy8gVE9ETzogaW1wbGVtZW50IHZlY3Rvcml6ZWQgcG93XFxuICAgICAgcmV0dXJuIHZlYzQ8JHt0fT4ocG93X2N1c3RvbShhLngsIGIueCksIHBvd19jdXN0b20oYS55LCBiLnkpLCBwb3dfY3VzdG9tKGEueiwgYi56KSwgcG93X2N1c3RvbShhLncsIGIudykpO1xcbiAgICB9XFxuICAgICAgYCl9LElzPWU9PntDdChlLFwiU3ViXCIsKHQscik9PmAke3R9LSR7cn1gKX0sVHM9ZT0+e0N0KGUsXCJHcmVhdGVyXCIse3NjYWxhcjoodCxyKT0+YHUzMigke3R9PiR7cn0pYCx2ZWN0b3I6KHQscik9PmB2ZWM0PHUzMj4oJHt0fT4ke3J9KWB9LHZvaWQgMCx2b2lkIDAsOSl9LEVzPWU9PntDdChlLFwiTGVzc1wiLHtzY2FsYXI6KHQscik9PmB1MzIoJHt0fTwke3J9KWAsdmVjdG9yOih0LHIpPT5gdmVjNDx1MzI+KCR7dH08JHtyfSlgfSx2b2lkIDAsdm9pZCAwLDkpfSxQcz1lPT57Q3QoZSxcIkdyZWF0ZXJPckVxdWFsXCIse3NjYWxhcjoodCxyKT0+YHUzMigke3R9Pj0ke3J9KWAsdmVjdG9yOih0LHIpPT5gdmVjNDx1MzI+KCR7dH0+PSR7cn0pYH0sdm9pZCAwLHZvaWQgMCw5KX0sT3M9ZT0+e0N0KGUsXCJMZXNzT3JFcXVhbFwiLHtzY2FsYXI6KHQscik9PmB1MzIoJHt0fTw9JHtyfSlgLHZlY3RvcjoodCxyKT0+YHZlYzQ8dTMyPigke3R9PD0ke3J9KWB9LHZvaWQgMCx2b2lkIDAsOSl9fSk7dmFyIExkLEZkLGpkLHFkLFJzLEJzLERzPVEoKCk9PntcInVzZSBzdHJpY3RcIjtDZSgpO1llKCk7X2UoKTtMZD1lPT57aWYoIWV8fGUubGVuZ3RoPDEpdGhyb3cgbmV3IEVycm9yKFwidG9vIGZldyBpbnB1dHNcIik7bGV0IHQ9ZVswXS5kYXRhVHlwZSxyPWVbMF0uZGltcy5sZW5ndGg7Zm9yKGxldCBvIG9mIGUpe2lmKG8uZGF0YVR5cGUhPT10KXRocm93IG5ldyBFcnJvcihcImlucHV0IHRlbnNvcnMgc2hvdWxkIGJlIG9uZSB0eXBlXCIpO2lmKG8uZGltcy5sZW5ndGghPT1yKXRocm93IG5ldyBFcnJvcihcImlucHV0IHRlbnNvcnMgc2hvdWxkIGhhdmUgdGhlIHNhbWUgc2hhcGVcIil9fSxGZD0oZSx0KT0+YFxcbiAgZm4gY2FsY3VsYXRlSW5wdXRJbmRleChpbmRleDogdTMyKSAtPiB1MzIge1xcbiAgICBsZXQgc2l6ZUluQ29uY2F0QXhpcyA9IGFycmF5PHUzMiwgJHtlfXU+KCR7dH0pO1xcbiAgICBmb3IgKHZhciBpOiB1MzIgPSAwdTsgaSA8ICR7ZX07IGkgKz0gMXUgKSB7XFxuICAgICAgaWYgKGluZGV4IDwgc2l6ZUluQ29uY2F0QXhpc1tpXSkge1xcbiAgICAgICAgcmV0dXJuIGk7XFxuICAgICAgfVxcbiAgICB9XFxuICAgIHJldHVybiAke2V9dTtcXG4gIH1gLGpkPShlLHQpPT57bGV0IHI9ZS5sZW5ndGgsbz1bXTtmb3IobGV0IGk9MDtpPHI7KytpKXtsZXQgdT10LnNldEJ5T2Zmc2V0KFwiZ2xvYmFsX2lkeFwiLGVbaV0uZ2V0QnlJbmRpY2VzKFwiaW5kaWNlc1wiKSk7cj09PTE/by5wdXNoKHUpOmk9PT0wP28ucHVzaChgaWYgKGlucHV0SW5kZXggPT0gJHtpfXUpIHsgJHt1fSB9YCk6aT09PXItMT9vLnB1c2goYGVsc2UgeyAke3V9IH1gKTpvLnB1c2goYGVsc2UgaWYgKGlucHV0SW5kZXggPT0gJHtpfSkgeyAke3V9IH1gKX1yZXR1cm4gby5qb2luKGBcXG5gKX0scWQ9KGUsdCk9PntsZXQgcj1lWzBdLmRpbXMuc2xpY2UoKTtpZih0Pj1yLmxlbmd0aHx8dDwtMSpyLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoXCJheGlzIHNwZWNpZmllZCBmb3IgY29uY2F0IGRvZXNuXFwndCBtYXRjaCBpbnB1dCBkaW1lbnNpb25hbGl0eVwiKTtsZXQgbz10PDA/ci5sZW5ndGgrdDp0LGk9ci5zbGljZSgwKTtmb3IobGV0IEM9MTtDPGUubGVuZ3RoO0MrKyl7bGV0IFM9ZVtDXS5kaW1zLnNsaWNlKCk7Zm9yKGxldCBFPTA7RTxyLmxlbmd0aDtFKyspaWYoRT09PW8paVtvXSs9U1tFXTtlbHNlIGlmKHJbRV0hPT1TW0VdKXRocm93IG5ldyBFcnJvcihcIm5vbiBjb25jYXQgZGltZW5zaW9ucyBtdXN0IG1hdGNoXCIpfWxldCB1PVcuc2l6ZShpKSxhPW5ldyBBcnJheShlLmxlbmd0aCkscD1uZXcgQXJyYXkoZS5sZW5ndGgpLG09ZVswXS5kYXRhVHlwZSxoPTAsZD1bXSx5PVtdLHc9W3t0eXBlOlwidWludDMyXCIsZGF0YTp1fV07Zm9yKGxldCBDPTA7QzxlLmxlbmd0aDsrK0MpaCs9ZVtDXS5kaW1zW29dLGFbQ109aCx5LnB1c2goZVtDXS5kaW1zLmxlbmd0aCkscFtDXT1WKGBpbnB1dCR7Q31gLG0seVtDXSksZC5wdXNoKFwicmFua1wiKSx3LnB1c2goe3R5cGU6XCJ1aW50MzJcIixkYXRhOmFbQ119KTtmb3IobGV0IEM9MDtDPGUubGVuZ3RoOysrQyl3LnB1c2goLi4uRyhlW0NdLmRpbXMpKTt3LnB1c2goLi4uRyhpKSk7bGV0IF89SihcIm91dHB1dFwiLG0saS5sZW5ndGgpLHY9Xy5pbmRpY2VzR2V0KFwiaW5kaWNlc1wiLG8pLHg9QXJyYXkuZnJvbShBcnJheShhLmxlbmd0aCkua2V5cygpKS5tYXAoQz0+YHVuaWZvcm1zLnNpemVJbkNvbmNhdEF4aXMke0N9YCkuam9pbihcIixcIiksVD1DPT5gXFxuXFxuICAkeygoKT0+e0MucmVnaXN0ZXJVbmlmb3JtKFwib3V0cHV0U2l6ZVwiLFwidTMyXCIpO2ZvcihsZXQgUz0wO1M8ZS5sZW5ndGg7UysrKUMucmVnaXN0ZXJVbmlmb3JtKGBzaXplSW5Db25jYXRBeGlzJHtTfWAsXCJ1MzJcIik7cmV0dXJuIEMuZGVjbGFyZVZhcmlhYmxlcyguLi5wLF8pfSkoKX1cXG5cXG4gICR7RmQoYS5sZW5ndGgseCl9XFxuXFxuICAke0MubWFpblN0YXJ0KCl9XFxuICAgICR7Qy5ndWFyZEFnYWluc3RPdXRPZkJvdW5kc1dvcmtncm91cFNpemVzKFwidW5pZm9ybXMub3V0cHV0U2l6ZVwiKX1cXG5cXG4gICAgdmFyIGluZGljZXMgPSAke18ub2Zmc2V0VG9JbmRpY2VzKFwiZ2xvYmFsX2lkeFwiKX07XFxuXFxuICAgIGxldCBpbnB1dEluZGV4ID0gY2FsY3VsYXRlSW5wdXRJbmRleCgke3Z9KTtcXG4gICAgaWYgKGlucHV0SW5kZXggIT0gMHUpIHtcXG4gICAgICBsZXQgc2l6ZUluQ29uY2F0QXhpcyA9IGFycmF5PHUzMiwgJHthLmxlbmd0aH11Pigke3h9KTtcXG4gICAgICAke3Z9IC09IHNpemVJbkNvbmNhdEF4aXNbaW5wdXRJbmRleCAtIDF1XTtcXG4gICAgfVxcblxcbiAgICAke2pkKHAsXyl9XFxuICB9YDtyZXR1cm57bmFtZTpcIkNvbmNhdFwiLHNoYWRlckNhY2hlOntoaW50OmAke3R9YCxpbnB1dERlcGVuZGVuY2llczpkfSxnZXRSdW5EYXRhOigpPT4oe291dHB1dHM6W3tkaW1zOmksZGF0YVR5cGU6ZVswXS5kYXRhVHlwZX1dLGRpc3BhdGNoR3JvdXA6e3g6TWF0aC5jZWlsKHUvNjQpfSxwcm9ncmFtVW5pZm9ybXM6d30pLGdldFNoYWRlclNvdXJjZTpUfX0sUnM9KGUsdCk9PntMZChlLmlucHV0cyksZS5jb21wdXRlKHFkKGUuaW5wdXRzLHQuYXhpcykpfSxCcz1lPT54ZSh7YXhpczplLmF4aXN9KX0pO3ZhciBBdCxrbixVdD1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7Q2UoKTtBdD0oZSx0KT0+e3N3aXRjaChlLmFjdGl2YXRpb24pe2Nhc2VcIlJlbHVcIjpyZXR1cm5gdmFsdWUgPSBtYXgodmFsdWUsICR7dH0oMC4wKSk7YDtjYXNlXCJTaWdtb2lkXCI6cmV0dXJuYHZhbHVlID0gKCR7dH0oMS4wKSAvICgke3R9KDEuMCkgKyBleHAoLXZhbHVlKSkpO2A7Y2FzZVwiQ2xpcFwiOnJldHVybmB2YWx1ZSA9IGNsYW1wKHZhbHVlLCAke3R9KHVuaWZvcm1zLmNsaXBfbWluKSwgJHt0fSh1bmlmb3Jtcy5jbGlwX21heCkpO2A7ZGVmYXVsdDpyZXR1cm5cIlwifX0sa249ZT0+e2xldCB0PWU/LmFjdGl2YXRpb258fFwiXCI7aWYodD09PVwiQ2xpcFwiKXtsZXRbcixvXT1lPy5hY3RpdmF0aW9uX3BhcmFtc3x8W3huLENuXTtyZXR1cm57YWN0aXZhdGlvbjp0LGNsaXBNYXg6byxjbGlwTWluOnJ9fXJldHVybnthY3RpdmF0aW9uOnR9fX0pO3ZhciBqZSxSbixCbj1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7amU9KGUsdCk9Pntzd2l0Y2goZSl7Y2FzZSAxOnJldHVybiB0O2Nhc2UgMjpyZXR1cm5gdmVjMjwke3R9PmA7Y2FzZSAzOnJldHVybmB2ZWMzPCR7dH0+YDtjYXNlIDQ6cmV0dXJuYHZlYzQ8JHt0fT5gO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGAke2V9LWNvbXBvbmVudCBpcyBub3Qgc3VwcG9ydGVkLmApfX0sUm49ZT0+YFxcbiAgICAgICR7ZT9cInZhbHVlID0gdmFsdWUgKyBnZXRCaWFzQnlPdXRwdXRDb29yZHMoY29vcmRzKTtcIjpcIlwifVxcbiAgICAgIGB9KTt2YXIgRG4sQW89USgoKT0+e1widXNlIHN0cmljdFwiO0RuPWU9PmBcXG5mbiBnZXRJbmRleEZyb21Db29yZHM0RChjb29yZHMgOiB2ZWM0PGkzMj4sIHNoYXBlIDogdmVjNDxpMzI+KSAtPiBpMzIge1xcbiAgcmV0dXJuIGRvdChjb29yZHMsIHZlYzQ8aTMyPihcXG4gICAgICBzaGFwZS55ICogc2hhcGUueiAqIHNoYXBlLncsIHNoYXBlLnogKiBzaGFwZS53LCBzaGFwZS53LCAxKSk7XFxufVxcbmZuIGdldE91dHB1dEluZGV4RnJvbUNvb3Jkcyhjb29yZHMgOiB2ZWM0PGkzMj4pIC0+IGkzMiB7XFxuICByZXR1cm4gZG90KGNvb3JkcywgdmVjNDxpMzI+KFxcbiAgICBpMzIoJHtlfS54KSwgaTMyKCR7ZX0ueSksIGkzMigke2V9LnopLCAxKSk7XFxufVxcbmB9KTt2YXIgS2QsWWQsVXIsTXMsWmQsVnIsWGQsTW4sV3I9USgoKT0+e1widXNlIHN0cmljdFwiO0NlKCk7X2UoKTtVdCgpO0JuKCk7S2Q9KGUsdCk9PmU/YFxcbiAgICAgICAgbW1fQXN1YltpbnB1dFJvd11baW5wdXRDb2xdID0gbW1fcmVhZEEoYmF0Y2gsXFxuICAgICAgICAgIGtTdGFydCArIGlucHV0Um93LFxcbiAgICAgICAgICBnbG9iYWxSb3dTdGFydCAvIGlubmVyRWxlbWVudFNpemUgKyBpbnB1dENvbCR7dD9cIiwgYmF0Y2hJbmRpY2VzXCI6XCJcIn0pO1xcbiAgICAgICAgYDpgXFxuICAgICAgICBtbV9Bc3ViW2lucHV0Um93XVtpbnB1dENvbF0gPSBtbV9yZWFkQShiYXRjaCxcXG4gICAgICAgICAgZ2xvYmFsUm93ICsgaW5uZXJSb3csXFxuICAgICAgICAgIGtTdGFydCAvIGlubmVyRWxlbWVudFNpemUgKyBpbnB1dENvbCR7dD9cIiwgYmF0Y2hJbmRpY2VzXCI6XCJcIn0pO1xcbiAgICAgICAgYCxZZD0oZSx0KT0+ZT9gXFxuICAgICAgICBsZXQgQUNhY2hlZDAgPSBtbV9Bc3ViW2sgKiBpbm5lckVsZW1lbnRTaXplXVtsb2NhbFJvd107XFxuICAgICAgICBsZXQgQUNhY2hlZDEgPSBtbV9Bc3ViW2sgKiBpbm5lckVsZW1lbnRTaXplICsgMV1bbG9jYWxSb3ddO1xcbiAgICAgICAgbGV0IEFDYWNoZWQyID0gbW1fQXN1YltrICogaW5uZXJFbGVtZW50U2l6ZSArIDJdW2xvY2FsUm93XTtcXG4gICAgICAgICR7dD09PTM/XCJcIjpcImxldCBBQ2FjaGVkMyA9IG1tX0FzdWJbayAqIGlubmVyRWxlbWVudFNpemUgKyAzXVtsb2NhbFJvd107XCJ9XFxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJvd1BlclRocmVhZDsgaSA9IGkgKyAxKSB7XFxuICAgICAgICAgIGFjY1tpXSA9IEJDYWNoZWQwICogQUNhY2hlZDBbaV0gKyBhY2NbaV07XFxuICAgICAgICAgIGFjY1tpXSA9IEJDYWNoZWQxICogQUNhY2hlZDFbaV0gKyBhY2NbaV07XFxuICAgICAgICAgIGFjY1tpXSA9IEJDYWNoZWQyICogQUNhY2hlZDJbaV0gKyBhY2NbaV07XFxuICAgICAgICAgICR7dD09PTM/XCJcIjpcImFjY1tpXSA9IEJDYWNoZWQzICogQUNhY2hlZDNbaV0gKyBhY2NbaV07XCJ9XFxuICAgICAgICB9YDpgXFxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJvd1BlclRocmVhZDsgaSA9IGkgKyAxKSB7XFxuICAgICAgICAgIGxldCBBQ2FjaGVkID0gbW1fQXN1Ylt0aWxlUm93ICsgaV1ba107XFxuICAgICAgICAgIGFjY1tpXSA9IEJDYWNoZWQwICogQUNhY2hlZC54ICsgYWNjW2ldO1xcbiAgICAgICAgICBhY2NbaV0gPSBCQ2FjaGVkMSAqIEFDYWNoZWQueSArIGFjY1tpXTtcXG4gICAgICAgICAgYWNjW2ldID0gQkNhY2hlZDIgKiBBQ2FjaGVkLnogKyBhY2NbaV07XFxuICAgICAgICAgICR7dD09PTM/XCJcIjpcImFjY1tpXSA9IEJDYWNoZWQzICogQUNhY2hlZC53ICsgYWNjW2ldO1wifVxcbiAgICAgICAgfWAsVXI9KGUsdCxyPVwiZjMyXCIsbyxpPSExLHU9MzIsYT0hMSxwPTMyKT0+e2xldCBtPXRbMV0qZVsxXSxoPXRbMF0qZVswXSxkPWk/bTp1LHk9aT91Om0sdz1kL3RbMF0sXz11L3RbMV07aWYoISgoaSYmdz09PTQmJmVbMV09PT00fHwhaSYmKHc9PT0zfHx3PT09NCkpJiZkJXRbMF09PT0wJiZ1JXRbMV09PT0wJiZlWzBdPT09NCkpdGhyb3cgbmV3IEVycm9yKGBJZiB0cmFuc3Bvc2VBICR7aX0gaXMgdHJ1ZSwgaW5uZXJFbGVtZW50U2l6ZSAke3d9IGFuZCB3b3JrUGVyVGhyZWFkWzFdICR7ZVsxXX0gbXVzdCBiZSA0LlxcbiAgICAgIE90aGVyd2lzZSwgaW5uZXJFbGVtZW50U2l6ZSAke3d9IG11c3QgYmUgMyBvciA0LlxcbiAgdGlsZUFXaWR0aCAke2R9IG11c3QgYmUgZGl2aXNpYmxlIGJ5IHdvcmtncm91cFNpemVbMF0ke3RbMF19LiB0aWxlSW5uZXIgJHt1fSBtdXN0IGJlIGRpdmlzaWJsZSBieSB3b3JrZ3JvdXBTaXplWzFdICR7dFsxXX0uIGNvbFBlclRocmVhZCAke2VbMF19IG11c3QgYmUgNC5gKTtyZXR1cm5gXFxudmFyPHdvcmtncm91cD4gbW1fQXN1YjogYXJyYXk8YXJyYXk8dmVjJHt3fTwke3J9PiwgJHtkL3d9PiwgJHt5fT47XFxudmFyPHdvcmtncm91cD4gbW1fQnN1YjogYXJyYXk8YXJyYXk8dmVjNDwke3J9PiwgJHtoL2VbMF19PiwgJHt1fT47XFxuXFxuY29uc3Qgcm93UGVyVGhyZWFkID0gJHtlWzFdfTtcXG5jb25zdCBjb2xQZXJUaHJlYWQgPSAke2VbMF19O1xcbmNvbnN0IGlubmVyRWxlbWVudFNpemUgPSAke3d9O1xcbmNvbnN0IHRpbGVJbm5lciA9ICR7dX07XFxuXFxuQGNvbXB1dGUgQHdvcmtncm91cF9zaXplKCR7dFswXX0sICR7dFsxXX0sICR7dFsyXX0pXFxuZm4gbWFpbihAYnVpbHRpbihsb2NhbF9pbnZvY2F0aW9uX2lkKSBsb2NhbElkIDogdmVjMzx1MzI+LFxcbiAgICAgICAgQGJ1aWx0aW4oZ2xvYmFsX2ludm9jYXRpb25faWQpIGdsb2JhbElkIDogdmVjMzx1MzI+LFxcbiAgICAgICAgQGJ1aWx0aW4od29ya2dyb3VwX2lkKSB3b3JrZ3JvdXBJZCA6IHZlYzM8dTMyPikge1xcbiAgbGV0IGxvY2FsUm93ID0gaTMyKGxvY2FsSWQueSk7XFxuICBsZXQgdGlsZVJvdyA9IGxvY2FsUm93ICogcm93UGVyVGhyZWFkO1xcbiAgbGV0IHRpbGVDb2wgPSBpMzIobG9jYWxJZC54KTtcXG5cXG4gIGxldCBnbG9iYWxSb3cgPWkzMihnbG9iYWxJZC55KSAqIHJvd1BlclRocmVhZDtcXG4gIGxldCBnbG9iYWxDb2wgPSBpMzIoZ2xvYmFsSWQueCk7XFxuICBsZXQgYmF0Y2ggPSAke2E/XCIwXCI6XCJpMzIoZ2xvYmFsSWQueilcIn07XFxuICAke28/YGxldCBiYXRjaEluZGljZXMgPSAke28ub2Zmc2V0VG9JbmRpY2VzKFwidTMyKGJhdGNoKVwiKX07YDpcIlwifVxcbiAgbGV0IGdsb2JhbFJvd1N0YXJ0ID0gaTMyKHdvcmtncm91cElkLnkpICogJHttfTtcXG5cXG4gIGxldCBudW1fdGlsZXMgPSAke2E/YCR7TWF0aC5jZWlsKHAvdSl9YDpcIih1bmlmb3Jtcy5kaW1faW5uZXIgLSAxKSAvIHRpbGVJbm5lciArIDFcIn07XFxuICB2YXIga1N0YXJ0ID0gJHthP2BpMzIoZ2xvYmFsSWQueikgKiAke3B9YDpcIjBcIn07XFxuXFxuICB2YXIgYWNjOiBhcnJheTx2ZWM0PCR7cn0+LCByb3dQZXJUaHJlYWQ+O1xcblxcbiAgLy8gTG9vcCBvdmVyIHNoYXJlZCBkaW1lbnNpb24uXFxuICBsZXQgdGlsZVJvd0IgPSBsb2NhbFJvdyAqICR7X307XFxuICBmb3IgKHZhciB0ID0gMDsgdCA8IG51bV90aWxlczsgdCA9IHQgKyAxKSB7XFxuICAgICAgLy8gTG9hZCBvbmUgdGlsZSBvZiBBIGludG8gbG9jYWwgbWVtb3J5LlxcbiAgICAgIGZvciAodmFyIGlubmVyUm93ID0gMDsgaW5uZXJSb3cgPCByb3dQZXJUaHJlYWQ7IGlubmVyUm93ID0gaW5uZXJSb3cgKyAxKSB7XFxuICAgICAgICAgIGxldCBpbnB1dFJvdyA9IHRpbGVSb3cgKyBpbm5lclJvdztcXG4gICAgICAgICAgbGV0IGlucHV0Q29sID0gdGlsZUNvbDtcXG4gICAgICAgICAgJHtLZChpLG8pfVxcbiAgICAgIH1cXG5cXG4gICAgICAvLyBMb2FkIG9uZSB0aWxlIG9mIEIgaW50byBsb2NhbCBtZW1vcnkuXFxuICAgICAgZm9yICh2YXIgaW5uZXJSb3cgPSAwOyBpbm5lclJvdyA8ICR7X307IGlubmVyUm93ID0gaW5uZXJSb3cgKyAxKSB7XFxuICAgICAgICAgIGxldCBpbnB1dFJvdyA9IHRpbGVSb3dCICsgaW5uZXJSb3c7XFxuICAgICAgICAgIGxldCBpbnB1dENvbCA9IHRpbGVDb2w7XFxuICAgICAgICAgIG1tX0JzdWJbaW5wdXRSb3ddW2lucHV0Q29sXSA9IG1tX3JlYWRCKGJhdGNoLCBrU3RhcnQgKyBpbnB1dFJvdywgZ2xvYmFsQ29sJHtvP1wiLCBiYXRjaEluZGljZXNcIjpcIlwifSk7XFxuICAgICAgfVxcbiAgICAgIGtTdGFydCA9IGtTdGFydCArIHRpbGVJbm5lcjtcXG4gICAgICB3b3JrZ3JvdXBCYXJyaWVyKCk7XFxuXFxuICAgICAgLy8gQ29tcHV0ZSBhY2MgdmFsdWVzIGZvciBhIHNpbmdsZSB0aHJlYWQuXFxuICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCB0aWxlSW5uZXIgLyBpbm5lckVsZW1lbnRTaXplOyBrID0gayArIDEpIHtcXG4gICAgICAgICAgbGV0IEJDYWNoZWQwID0gbW1fQnN1YltrICogaW5uZXJFbGVtZW50U2l6ZV1bdGlsZUNvbF07XFxuICAgICAgICAgIGxldCBCQ2FjaGVkMSA9IG1tX0JzdWJbayAqIGlubmVyRWxlbWVudFNpemUgKyAxXVt0aWxlQ29sXTtcXG4gICAgICAgICAgbGV0IEJDYWNoZWQyID0gbW1fQnN1YltrICogaW5uZXJFbGVtZW50U2l6ZSArIDJdW3RpbGVDb2xdO1xcbiAgICAgICAgICAke3c9PT0zP1wiXCI6XCJsZXQgQkNhY2hlZDMgPSBtbV9Cc3ViW2sgKiBpbm5lckVsZW1lbnRTaXplICsgM11bdGlsZUNvbF07XCJ9XFxuXFxuICAgICAgICAgICR7WWQoaSx3KX1cXG4gICAgICB9XFxuXFxuICAgICAgd29ya2dyb3VwQmFycmllcigpO1xcbiAgfVxcblxcbiAgZm9yICh2YXIgaW5uZXJSb3cgPSAwOyBpbm5lclJvdyA8IHJvd1BlclRocmVhZDsgaW5uZXJSb3cgPSBpbm5lclJvdyArIDEpIHtcXG4gICAgICBtbV93cml0ZShiYXRjaCwgZ2xvYmFsUm93ICsgaW5uZXJSb3csIGdsb2JhbENvbCwgYWNjW2lubmVyUm93XSk7XFxuICB9XFxufWB9LE1zPShlLHQpPT5lP2BcXG4gICAgICAgICAgICBtbV9Bc3ViW2lucHV0Um93XVtpbnB1dENvbF0gPSBtbV9yZWFkQShiYXRjaCxcXG4gICAgICAgICAgICAgIGtTdGFydCArIGlucHV0Um93LFxcbiAgICAgICAgICAgICAgZ2xvYmFsUm93U3RhcnQgKyBpbnB1dENvbCR7dD9cIiwgYmF0Y2hJbmRpY2VzXCI6XCJcIn0pO1xcbiAgICAgICAgICAgIGA6YFxcbiAgICAgICAgICAgIG1tX0FzdWJbaW5wdXRSb3ddW2lucHV0Q29sXSA9IG1tX3JlYWRBKGJhdGNoLFxcbiAgICAgICAgICAgICAgZ2xvYmFsUm93U3RhcnQgKyBpbnB1dFJvdyxcXG4gICAgICAgICAgICAgIGtTdGFydCArIGlucHV0Q29sJHt0P1wiLCBiYXRjaEluZGljZXNcIjpcIlwifSk7XFxuICAgICAgICAgICAgYCxaZD1lPT5lP1wibGV0IEFDYWNoZWQgPSBtbV9Bc3ViW2tdW3RpbGVSb3cgKyBpbm5lclJvd107XCI6XCJsZXQgQUNhY2hlZCA9IG1tX0FzdWJbdGlsZVJvdyArIGlubmVyUm93XVtrXTtcIixWcj0oZSx0LHI9XCJmMzJcIixvLGk9ITEsdT0zMixhPSExLHA9MzIsbT0hMSk9PntsZXQgaD1lWzFdKnRbMV0sZD1lWzBdKnRbMF0seT1pP2g6dSx3PWk/dTpoO2lmKCEodyV0WzFdPT09MCYmeSV0WzBdPT09MCYmdSV0WzFdPT09MCkpdGhyb3cgbmV3IEVycm9yKGB0aWxlQUhpZ2h0ICR7d30gbXVzdCBiZSBkaXZpc2libGUgYnkgd29ya2dyb3VwU2l6ZVsxXSR7dFsxXX0sIHRpbGVBV2lkdGggJHt5fSBtdXN0IGJlIGRpdmlzaWJsZSBieSB3b3JrZ3JvdXBTaXplWzBdJHt0WzBdfSwgdGlsZUlubmVyICR7dX0gbXVzdCBiZSBkaXZpc2libGUgYnkgd29ya2dyb3VwU2l6ZVsxXSR7dFsxXX1gKTtsZXQgXz13L3RbMV0sdj15L3RbMF0seD11L3RbMV0sVD1tP2BcXG4gICAgbGV0IGxvY2FsUm93ID0gaTMyKGxvY2FsSWQueSk7XFxuICAgIGxldCBsb2NhbENvbCA9IGkzMihsb2NhbElkLngpO1xcbiAgICBsZXQgZ2xvYmFsUm93U3RhcnQgPSBpMzIod29ya2dyb3VwSWQueSkgKiAke2h9O1xcbiAgICBsZXQgZ2xvYmFsQ29sU3RhcnQgPSBpMzIod29ya2dyb3VwSWQueCkgKiAke2R9O1xcblxcbiAgICAvLyBMb29wIG92ZXIgc2hhcmVkIGRpbWVuc2lvbi5cXG4gICAgZm9yICh2YXIgdCA9IDA7IHQgPCBudW1fdGlsZXM7IHQgPSB0ICsgMSkge1xcbiAgICAgIC8vIExvYWQgb25lIHRpbGUgb2YgQSBpbnRvIGxvY2FsIG1lbW9yeS5cXG4gICAgICBmb3IgKHZhciBpbnB1dFJvdyA9IGxvY2FsUm93OyBpbnB1dFJvdyA8ICR7d307IGlucHV0Um93ID0gaW5wdXRSb3cgKyAke3RbMV19KSB7XFxuICAgICAgICBmb3IgKHZhciBpbnB1dENvbCA9IGxvY2FsQ29sOyBpbnB1dENvbCA8ICR7eX07IGlucHV0Q29sID0gaW5wdXRDb2wgKyAke3RbMF19KSB7XFxuICAgICAgICAgICR7TXMoaSxvKX1cXG4gICAgICAgIH1cXG4gICAgICB9XFxuICAgICAgLy8gTG9hZCBvbmUgdGlsZSBvZiBCIGludG8gbG9jYWwgbWVtb3J5LlxcbiAgICAgIGZvciAodmFyIGlucHV0Um93ID0gbG9jYWxSb3c7IGlucHV0Um93IDwgJHt1fTsgaW5wdXRSb3cgPSBpbnB1dFJvdyArICR7dFsxXX0pIHtcXG4gICAgICAgICAgICBmb3IgKHZhciBpbnB1dENvbCA9IGxvY2FsQ29sOyBpbnB1dENvbCA8ICR7ZH07IGlucHV0Q29sID0gaW5wdXRDb2wgKyAke3RbMF19KSB7XFxuICAgICAgICAgIG1tX0JzdWJbaW5wdXRSb3ddW2lucHV0Q29sXSA9IG1tX3JlYWRCKGJhdGNoLFxcbiAgICAgICAgICAgIGtTdGFydCArIGlucHV0Um93LFxcbiAgICAgICAgICAgIGdsb2JhbENvbFN0YXJ0ICsgaW5wdXRDb2wke28/XCIsIGJhdGNoSW5kaWNlc1wiOlwiXCJ9KTtcXG4gICAgICAgIH1cXG4gICAgICB9XFxuICAgICAga1N0YXJ0ID0ga1N0YXJ0ICsgdGlsZUlubmVyO1xcbiAgICAgIHdvcmtncm91cEJhcnJpZXIoKTtcXG5cXG4gICAgICAvLyBDb21wdXRlIGFjYyB2YWx1ZXMgZm9yIGEgc2luZ2xlIHRocmVhZC5cXG4gICAgICB2YXIgQkNhY2hlZCA6IGFycmF5PCR7cn0sIGNvbFBlclRocmVhZD47XFxuICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCB0aWxlSW5uZXI7IGsgPSBrICsgMSkge1xcbiAgICAgICAgZm9yICh2YXIgaW5uZXIgPSAwOyBpbm5lciA8IGNvbFBlclRocmVhZDsgaW5uZXIgPSBpbm5lciArIDEpIHtcXG4gICAgICAgICAgQkNhY2hlZFtpbm5lcl0gPSBtbV9Cc3ViW2tdW2xvY2FsQ29sICsgaW5uZXIgKiAke3RbMF19XTtcXG4gICAgICAgIH1cXG4gICAgICAgIGZvciAodmFyIGlubmVyUm93ID0gMDsgaW5uZXJSb3cgPCByb3dQZXJUaHJlYWQ7IGlubmVyUm93ID0gaW5uZXJSb3cgKyAxKSB7XFxuICAgICAgICAgIGxldCBBQ2FjaGVkID0gJHtpP2BtbV9Bc3ViW2tdW2xvY2FsUm93ICsgaW5uZXJSb3cgKiAke3RbMV19XTtgOmBtbV9Bc3ViW2xvY2FsUm93ICsgaW5uZXJSb3cgKiAke3RbMV19XVtrXTtgfVxcbiAgICAgICAgICBmb3IgKHZhciBpbm5lckNvbCA9IDA7IGlubmVyQ29sIDwgY29sUGVyVGhyZWFkOyBpbm5lckNvbCA9IGlubmVyQ29sICsgMSkge1xcbiAgICAgICAgICAgIGFjY1tpbm5lclJvd11baW5uZXJDb2xdID0gYWNjW2lubmVyUm93XVtpbm5lckNvbF0gK1xcbiAgICAgICAgICAgICAgICBBQ2FjaGVkICogQkNhY2hlZFtpbm5lckNvbF07XFxuICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICB9XFxuICAgICAgd29ya2dyb3VwQmFycmllcigpO1xcbiAgICB9XFxuICAgIGZvciAodmFyIGlubmVyUm93ID0gMDsgaW5uZXJSb3cgPCByb3dQZXJUaHJlYWQ7IGlubmVyUm93ID0gaW5uZXJSb3cgKyAxKSB7XFxuICAgICAgbGV0IGdSb3cgPSBnbG9iYWxSb3dTdGFydCArIGxvY2FsUm93ICsgaW5uZXJSb3cgKiAke3RbMV19O1xcbiAgICAgIGZvciAodmFyIGlubmVyQ29sID0gMDsgaW5uZXJDb2wgPCBjb2xQZXJUaHJlYWQ7IGlubmVyQ29sID0gaW5uZXJDb2wgKyAxKSB7XFxuICAgICAgICBsZXQgZ0NvbCA9IGdsb2JhbENvbFN0YXJ0ICsgbG9jYWxDb2wgKyBpbm5lckNvbCAqICR7dFswXX07XFxuICAgICAgICBtbV93cml0ZShiYXRjaCwgZ1JvdywgZ0NvbCwgYWNjW2lubmVyUm93XVtpbm5lckNvbF0pO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgICBgOmBcXG5sZXQgdGlsZVJvdyA9IGkzMihsb2NhbElkLnkpICogcm93UGVyVGhyZWFkO1xcbmxldCB0aWxlQ29sID0gaTMyKGxvY2FsSWQueCkgKiBjb2xQZXJUaHJlYWQ7XFxuXFxubGV0IGdsb2JhbFJvdyA9IGkzMihnbG9iYWxJZC55KSAqIHJvd1BlclRocmVhZDtcXG5sZXQgZ2xvYmFsQ29sID0gaTMyKGdsb2JhbElkLngpICogY29sUGVyVGhyZWFkO1xcbmxldCBnbG9iYWxSb3dTdGFydCA9IGkzMih3b3JrZ3JvdXBJZC55KSAqICR7aH07XFxuXFxubGV0IHRpbGVSb3dBID0gaTMyKGxvY2FsSWQueSkgKiAke199O1xcbmxldCB0aWxlQ29sQSA9IGkzMihsb2NhbElkLngpICogJHt2fTtcXG5sZXQgdGlsZVJvd0IgPSBpMzIobG9jYWxJZC55KSAqICR7eH07XFxuLy8gTG9vcCBvdmVyIHNoYXJlZCBkaW1lbnNpb24uXFxuZm9yICh2YXIgdCA9IDA7IHQgPCBudW1fdGlsZXM7IHQgPSB0ICsgMSkge1xcbiAgLy8gTG9hZCBvbmUgdGlsZSBvZiBBIGludG8gbG9jYWwgbWVtb3J5LlxcbiAgZm9yICh2YXIgaW5uZXJSb3cgPSAwOyBpbm5lclJvdyA8ICR7X307IGlubmVyUm93ID0gaW5uZXJSb3cgKyAxKSB7XFxuICAgIGZvciAodmFyIGlubmVyQ29sID0gMDsgaW5uZXJDb2wgPCAke3Z9OyBpbm5lckNvbCA9IGlubmVyQ29sICsgMSkge1xcbiAgICAgIGxldCBpbnB1dFJvdyA9IHRpbGVSb3dBICsgaW5uZXJSb3c7XFxuICAgICAgbGV0IGlucHV0Q29sID0gdGlsZUNvbEEgKyBpbm5lckNvbDtcXG4gICAgICAke01zKGksbyl9XFxuICAgIH1cXG4gIH1cXG5cXG4gIC8vIExvYWQgb25lIHRpbGUgb2YgQiBpbnRvIGxvY2FsIG1lbW9yeS5cXG4gIGZvciAodmFyIGlubmVyUm93ID0gMDsgaW5uZXJSb3cgPCAke3h9OyBpbm5lclJvdyA9IGlubmVyUm93ICsgMSkge1xcbiAgICBmb3IgKHZhciBpbm5lckNvbCA9IDA7IGlubmVyQ29sIDwgY29sUGVyVGhyZWFkOyBpbm5lckNvbCA9IGlubmVyQ29sICsgMSkge1xcbiAgICAgIGxldCBpbnB1dFJvdyA9IHRpbGVSb3dCICsgaW5uZXJSb3c7XFxuICAgICAgbGV0IGlucHV0Q29sID0gdGlsZUNvbCArIGlubmVyQ29sO1xcbiAgICAgIG1tX0JzdWJbaW5wdXRSb3ddW2lucHV0Q29sXSA9IG1tX3JlYWRCKGJhdGNoLFxcbiAgICAgICAga1N0YXJ0ICsgaW5wdXRSb3csXFxuICAgICAgICBnbG9iYWxDb2wgKyBpbm5lckNvbCR7bz9cIiwgYmF0Y2hJbmRpY2VzXCI6XCJcIn0pO1xcbiAgICB9XFxuICB9XFxuICBrU3RhcnQgPSBrU3RhcnQgKyB0aWxlSW5uZXI7XFxuICB3b3JrZ3JvdXBCYXJyaWVyKCk7XFxuXFxuICAvLyBDb21wdXRlIGFjYyB2YWx1ZXMgZm9yIGEgc2luZ2xlIHRocmVhZC5cXG4gIHZhciBCQ2FjaGVkIDogYXJyYXk8JHtyfSwgY29sUGVyVGhyZWFkPjtcXG4gIGZvciAodmFyIGsgPSAwOyBrIDwgdGlsZUlubmVyOyBrID0gayArIDEpIHtcXG4gICAgZm9yICh2YXIgaW5uZXIgPSAwOyBpbm5lciA8IGNvbFBlclRocmVhZDsgaW5uZXIgPSBpbm5lciArIDEpIHtcXG4gICAgICBCQ2FjaGVkW2lubmVyXSA9IG1tX0JzdWJba11bdGlsZUNvbCArIGlubmVyXTtcXG4gICAgfVxcblxcbiAgICBmb3IgKHZhciBpbm5lclJvdyA9IDA7IGlubmVyUm93IDwgcm93UGVyVGhyZWFkOyBpbm5lclJvdyA9IGlubmVyUm93ICsgMSkge1xcbiAgICAgICR7WmQoaSl9XFxuICAgICAgZm9yICh2YXIgaW5uZXJDb2wgPSAwOyBpbm5lckNvbCA8IGNvbFBlclRocmVhZDsgaW5uZXJDb2wgPSBpbm5lckNvbCArIDEpIHtcXG4gICAgICAgIGFjY1tpbm5lclJvd11baW5uZXJDb2xdID0gYWNjW2lubmVyUm93XVtpbm5lckNvbF0gKyBBQ2FjaGVkICogQkNhY2hlZFtpbm5lckNvbF07XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxuXFxuICB3b3JrZ3JvdXBCYXJyaWVyKCk7XFxufVxcblxcbmZvciAodmFyIGlubmVyUm93ID0gMDsgaW5uZXJSb3cgPCByb3dQZXJUaHJlYWQ7IGlubmVyUm93ID0gaW5uZXJSb3cgKyAxKSB7XFxuICBmb3IgKHZhciBpbm5lckNvbCA9IDA7IGlubmVyQ29sIDwgY29sUGVyVGhyZWFkOyBpbm5lckNvbCA9IGlubmVyQ29sICsgMSkge1xcbiAgICBtbV93cml0ZShiYXRjaCwgZ2xvYmFsUm93ICsgaW5uZXJSb3csIGdsb2JhbENvbCArIGlubmVyQ29sLFxcbiAgICAgICAgYWNjW2lubmVyUm93XVtpbm5lckNvbF0pO1xcbiAgfVxcbn1cXG5gO3JldHVybmBcXG4gIHZhcjx3b3JrZ3JvdXA+IG1tX0FzdWIgOiBhcnJheTxhcnJheTwke3J9LCAke3l9PiwgJHt3fT47XFxuICB2YXI8d29ya2dyb3VwPiBtbV9Cc3ViIDogYXJyYXk8YXJyYXk8JHtyfSwgJHtkfT4sICR7dX0+O1xcbiAgY29uc3Qgcm93UGVyVGhyZWFkID0gJHtlWzFdfTtcXG4gIGNvbnN0IGNvbFBlclRocmVhZCA9ICR7ZVswXX07XFxuICBjb25zdCB0aWxlSW5uZXIgPSAke3V9O1xcblxcbkBjb21wdXRlIEB3b3JrZ3JvdXBfc2l6ZSgke3RbMF19LCAke3RbMV19LCAke3RbMl19KVxcbmZuIG1haW4oQGJ1aWx0aW4obG9jYWxfaW52b2NhdGlvbl9pZCkgbG9jYWxJZCA6IHZlYzM8dTMyPixcXG4gICAgICAgIEBidWlsdGluKGdsb2JhbF9pbnZvY2F0aW9uX2lkKSBnbG9iYWxJZCA6IHZlYzM8dTMyPixcXG4gICAgICAgIEBidWlsdGluKHdvcmtncm91cF9pZCkgd29ya2dyb3VwSWQgOiB2ZWMzPHUzMj4pIHtcXG4gICAgbGV0IGJhdGNoID0gJHthP1wiMFwiOlwiaTMyKGdsb2JhbElkLnopXCJ9O1xcbiAgICAke28/YGxldCBiYXRjaEluZGljZXMgPSAke28ub2Zmc2V0VG9JbmRpY2VzKFwidTMyKGJhdGNoKVwiKX07YDpcIlwifVxcbiAgICBsZXQgbnVtX3RpbGVzID0gJHthP2Ake01hdGguY2VpbChwL3UpfWA6XCIodW5pZm9ybXMuZGltX2lubmVyIC0gMSkgLyB0aWxlSW5uZXIgKyAxXCJ9O1xcbiAgICB2YXIga1N0YXJ0ID0gJHthP2BpMzIoZ2xvYmFsSWQueikgKiAke3B9YDpcIjBcIn07XFxuXFxuICAgIHZhciBhY2MgOiBhcnJheTxhcnJheTwke3J9LCBjb2xQZXJUaHJlYWQ+LCByb3dQZXJUaHJlYWQ+O1xcblxcbiAgICAvLyBXaXRob3V0IHRoaXMgaW5pdGlhbGl6YXRpb24gc3RyYW5nZSB2YWx1ZXMgc2hvdyB1cCBpbiBhY2MuXFxuICAgIGZvciAodmFyIGlubmVyUm93ID0gMDsgaW5uZXJSb3cgPCByb3dQZXJUaHJlYWQ7IGlubmVyUm93ID0gaW5uZXJSb3cgKyAxKSB7XFxuICAgICAgZm9yICh2YXIgaW5uZXJDb2wgPSAwOyBpbm5lckNvbCA8IGNvbFBlclRocmVhZDsgaW5uZXJDb2wgPSBpbm5lckNvbCArIDEpIHtcXG4gICAgICAgIGFjY1tpbm5lclJvd11baW5uZXJDb2xdID0gMC4wO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgICAke1R9XFxuICB9XFxuYH0sWGQ9KGUsdCxyLG8saSx1PSExKT0+e2xldFthLHAsbV09aSxbaCxkLHksd109byxfPWNyKGEsbSksdj1jcihwLG0pLHg9TmUob1swXS50eXBlLnRlbnNvciksVD0oKT0+e2xldCBFPWQucmFuayxPPWgucmFuayxVPWB2YXIgYUluZGljZXM6ICR7ZC50eXBlLmluZGljZXN9O2A7Zm9yKGxldCBNPUUtMi0xLE49Ty0xO00+PTA7TS0tLE4tLSlVKz1gXFxuYUluZGljZXNbJHtNfV0gPSAke08+MT9gYmF0Y2hJbmRpY2VzWyR7Tn1dYDpcImJhdGNoSW5kaWNlc1wifTtgO3JldHVybiBfLmZvckVhY2goTT0+e1UrPWBcXG5hSW5kaWNlc1ske019XSA9IDA7YH0pLFUrPWBcXG5hSW5kaWNlc1ske0UtMn1dID0gdTMyKHJvdyk7XFxuICAgICAgICAgICAgICAgICAgIGFJbmRpY2VzWyR7RS0xfV0gPSB1MzIoY29sSW4pO2AsVX0sQz0oKT0+e2xldCBFPXkucmFuayxPPWgucmFuayxVPWB2YXIgYkluZGljZXM6ICR7eS50eXBlLmluZGljZXN9O2A7Zm9yKGxldCBNPUUtMi0xLE49Ty0xO00+PTA7TS0tLE4tLSlVKz1gXFxuYkluZGljZXNbJHtNfV0gPSAke08+MT9gYmF0Y2hJbmRpY2VzWyR7Tn1dYDpcImJhdGNoSW5kaWNlc1wifTtgO3JldHVybiB2LmZvckVhY2goTT0+e1UrPWBcXG5iSW5kaWNlc1ske019XSA9IDA7YH0pLFUrPWBcXG5iSW5kaWNlc1ske0UtMn1dID0gdTMyKHJvdyk7XFxuICAgICAgICAgICAgICAgICAgIGJJbmRpY2VzWyR7RS0xfV0gPSB1MzIoY29sSW4pO2AsVX07cmV0dXJuYFxcbiAgICBmbiBtbV9yZWFkQShiYXRjaDogaTMyLCByb3c6IGkzMiwgY29sSW46IGkzMiwgYmF0Y2hJbmRpY2VzOiAke2gudHlwZS5pbmRpY2VzfSkgLT4gJHtqZShlLHgpfSB7XFxuICAgICAgdmFyIHZhbHVlID0gJHtqZShlLHgpfSgwLjApO1xcbiAgICAgIGxldCBjb2wgPSBjb2xJbiAqICR7ZX07XFxuICAgICAgaWYocm93IDwgdW5pZm9ybXMuZGltX2Ffb3V0ZXIgJiYgY29sIDwgdW5pZm9ybXMuZGltX2lubmVyKVxcbiAgICAgIHtcXG4gICAgICAgICR7VCgpfVxcbiAgICAgICAgdmFsdWUgPSAke2QuZ2V0QnlJbmRpY2VzKFwiYUluZGljZXNcIil9O1xcbiAgICAgIH1cXG4gICAgICByZXR1cm4gdmFsdWU7XFxuICAgIH1cXG5cXG4gICAgZm4gbW1fcmVhZEIoYmF0Y2g6IGkzMiwgcm93OiBpMzIsIGNvbEluOiBpMzIsIGJhdGNoSW5kaWNlczogJHtoLnR5cGUuaW5kaWNlc30pIC0+ICR7amUoZSx4KX0ge1xcbiAgICAgIHZhciB2YWx1ZSA9ICR7amUoZSx4KX0oMC4wKTtcXG4gICAgICBsZXQgY29sID0gY29sSW4gKiAke2V9O1xcbiAgICAgIGlmKHJvdyA8IHVuaWZvcm1zLmRpbV9pbm5lciAmJiBjb2wgPCB1bmlmb3Jtcy5kaW1fYl9vdXRlcilcXG4gICAgICB7XFxuICAgICAgICAke0MoKX1cXG4gICAgICAgIHZhbHVlID0gJHt5LmdldEJ5SW5kaWNlcyhcImJJbmRpY2VzXCIpfTtcXG4gICAgICB9XFxuICAgICAgcmV0dXJuIHZhbHVlO1xcbiAgICB9XFxuXFxuICAgIGZuIG1tX3dyaXRlKGJhdGNoOiBpMzIsIHJvdzogaTMyLCBjb2xJbjogaTMyLCB2YWx1ZUluOiAke2plKGUseCl9KSB7XFxuICAgICAgbGV0IGNvbCA9IGNvbEluICogJHtlfTtcXG4gICAgICBpZiAocm93IDwgdW5pZm9ybXMuZGltX2Ffb3V0ZXIgJiYgY29sIDwgdW5pZm9ybXMuZGltX2Jfb3V0ZXIpIHtcXG4gICAgICAgIHZhciB2YWx1ZSA9IHZhbHVlSW47XFxuICAgICAgICBsZXQgY29vcmRzID0gdmVjMzxpMzI+KGJhdGNoLCByb3csIGNvbEluKTtcXG4gICAgICAgICR7dD9gdmFsdWUgPSB2YWx1ZSArICR7dT9cImJpYXNbY29sSW5dXCI6YCR7amUoZSx4KX0oYmlhc1tyb3ddKWB9O2A6XCJcIn1cXG4gICAgICAgICR7cn1cXG4gICAgICAgICR7dy5zZXRCeUluZGljZXMoXCJ2ZWMzPHUzMj4oY29vcmRzKVwiLFwidmFsdWVcIil9XFxuICAgICAgfVxcbiAgICB9XFxuICAgIGB9LE1uPShlLHQscixvLGk9ITEpPT57bGV0IHU9ZVswXS5kaW1zLGE9ZVsxXS5kaW1zLHA9dS5zbGljZSgwLC0yKSxtPWEuc2xpY2UoMCwtMiksaD1vP28uc2xpY2UoMCwtMik6ci5zbGljZSgwLC0yKSxkPVcuc2l6ZShoKSx5PXVbdS5sZW5ndGgtMl0sdz11W3UubGVuZ3RoLTFdLF89YVthLmxlbmd0aC0xXSx2PXclND09PTAmJl8lND09PTAseD15PD04P1s0LDEsMV06WzQsNCwxXSxUPVs4LDgsMV0sQz1bTWF0aC5jZWlsKF8vVFswXS94WzBdKSxNYXRoLmNlaWwoeS9UWzFdL3hbMV0pLE1hdGguY2VpbChkL1RbMl0veFsyXSldLFM9dj80OjEsRT1bLi4ucCx5LHcvU10sTz1FLmxlbmd0aCxVPVsuLi5tLHcsXy9TXSxNPVUubGVuZ3RoLE49W2QseSxfL1NdLFk9W3t0eXBlOlwiaW50MzJcIixkYXRhOnl9LHt0eXBlOlwiaW50MzJcIixkYXRhOl99LHt0eXBlOlwiaW50MzJcIixkYXRhOnd9XTt0LmFjdGl2YXRpb249PT1cIkNsaXBcIiYmWS5wdXNoKHt0eXBlOlwiZmxvYXQzMlwiLGRhdGE6dC5jbGlwTWF4fSx7dHlwZTpcImZsb2F0MzJcIixkYXRhOnQuY2xpcE1pbn0pLFkucHVzaCguLi5HKGgpLC4uLkcoRSksLi4uRyhVKSk7bGV0IHNlPVtcInJhbmtcIixcInJhbmtcIl0sQj1lLmxlbmd0aD4yO0ImJihZLnB1c2goLi4uRyhlWzJdLmRpbXMpKSxzZS5wdXNoKFwicmFua1wiKSksWS5wdXNoKC4uLkcoTikpO2xldCB0ZT1QZT0+e2xldCBFZT1oLmxlbmd0aCxlZT1BbihcImJhdGNoRGltc1wiLGVbMF0uZGF0YVR5cGUsRWUsMSksYmU9TmUoZVswXS5kYXRhVHlwZSksTWU9VihcImFcIixlWzBdLmRhdGFUeXBlLE8sUykscGU9VihcImJcIixlWzFdLmRhdGFUeXBlLE0sUykseWU9SihcInJlc3VsdFwiLGVbMF0uZGF0YVR5cGUsTi5sZW5ndGgsUyksZGU9W01lLHBlXTtpZihCKXtsZXQgR2U9aT9TOjE7ZGUucHVzaChWKFwiYmlhc1wiLGVbMl0uZGF0YVR5cGUsZVsyXS5kaW1zLmxlbmd0aCxHZSkpfWxldCB3ZT1be25hbWU6XCJkaW1fYV9vdXRlclwiLHR5cGU6XCJpMzJcIn0se25hbWU6XCJkaW1fYl9vdXRlclwiLHR5cGU6XCJpMzJcIn0se25hbWU6XCJkaW1faW5uZXJcIix0eXBlOlwiaTMyXCJ9XTt0LmFjdGl2YXRpb249PT1cIkNsaXBcIiYmd2UucHVzaCh7bmFtZTpcImNsaXBfbWF4XCIsdHlwZTpcImYzMlwifSx7bmFtZTpcImNsaXBfbWluXCIsdHlwZTpcImYzMlwifSk7bGV0IHplPUF0KHQseWUudHlwZS52YWx1ZSksUmU9WGQoUyxCLHplLFtlZSxNZSxwZSx5ZV0sW3AsbSxoXSxpKTtyZXR1cm5gXFxuICAke1BlLnJlZ2lzdGVyVW5pZm9ybXMod2UpLnJlZ2lzdGVySW50ZXJuYWxWYXJpYWJsZXMoZWUpLmRlY2xhcmVWYXJpYWJsZXMoLi4uZGUseWUpfVxcbiAgJHtSZX1cXG4gICR7dj9Vcih4LFQsYmUsZWUpOlZyKHgsVCxiZSxlZSl9XFxuICAgICAgICAgICAgICAgICAgIGB9O3JldHVybntuYW1lOlwiTWF0TXVsXCIsc2hhZGVyQ2FjaGU6e2hpbnQ6YCR7eH07JHt0LmFjdGl2YXRpb259OyR7dn07JHtpfWAsaW5wdXREZXBlbmRlbmNpZXM6c2V9LGdldFJ1bkRhdGE6KCk9Pih7b3V0cHV0czpbe2RpbXM6cixkYXRhVHlwZTplWzBdLmRhdGFUeXBlfV0sZGlzcGF0Y2hHcm91cDp7eDpDWzBdLHk6Q1sxXSx6OkNbMl19LHByb2dyYW1Vbmlmb3JtczpZfSksZ2V0U2hhZGVyU291cmNlOnRlfX19KTt2YXIgSmQsenMsVXM9USgoKT0+e1widXNlIHN0cmljdFwiO3p0KCk7X2UoKTtVdCgpO0JuKCk7QW8oKTtXcigpO0pkPShlLHQscixvLGk9ITEsdSxhPTQscD00LG09NCxoPVwiZjMyXCIpPT57bGV0IGQ9Qj0+e3N3aXRjaChCKXtjYXNlIDE6cmV0dXJuXCJyZXNEYXRhID0geFt4SW5kZXhdO1wiO2Nhc2UgMzpyZXR1cm5gcmVzRGF0YSA9IHZlYzM8JHtofT4oeFt4SW5kZXhdLCB4W3hJbmRleCArIDFdLCB4W3hJbmRleCArIDJdKTtgO2Nhc2UgNDpyZXR1cm5cInJlc0RhdGEgPSB4W3hJbmRleCAvIDRdO1wiO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBpbm5lckVsZW1lbnRTaXplICR7Qn0gaXMgbm90IHN1cHBvcnRlZC5gKX19LHk9Qj0+e3N3aXRjaChCKXtjYXNlIDE6cmV0dXJuXCJyZXR1cm4gd1tyb3cgKiBpMzIodW5pZm9ybXMud19zaGFwZVszXSkgKyBjb2xJbl07XCI7Y2FzZSA0OnJldHVyblwicmV0dXJuIHdbcm93ICogaTMyKHVuaWZvcm1zLndfc2hhcGVbM10pIC8gNCArIGNvbEluXTtcIjtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgaW5uZXJFbGVtZW50U2l6ZSAke0J9IGlzIG5vdCBzdXBwb3J0ZWQuYCl9fSx3PWU/YFxcbiAgICBsZXQgY29vcmQgPSB2ZWM0PGkzMj4oYmF0Y2gsIHhSb3csIHhDb2wsIHhDaCk7XFxuICAgIGA6YFxcbiAgICBsZXQgY29vcmQgPSB2ZWM0PGkzMj4oYmF0Y2gsIHhDaCwgeFJvdywgeENvbCk7XFxuICAgIGAsXz1lP2BcXG4gICAgbGV0IGNvb3JkcyA9IHZlYzQ8aTMyPihcXG4gICAgICBiYXRjaCxcXG4gICAgICByb3cgLyBvdXRXaWR0aCxcXG4gICAgICByb3cgJSBvdXRXaWR0aCxcXG4gICAgICBjb2wpO1xcbiAgICBgOmBcXG4gICAgbGV0IGNvb3JkcyA9IHZlYzQ8aTMyPihcXG4gICAgICBiYXRjaCxcXG4gICAgICByb3csXFxuICAgICAgY29sIC8gb3V0V2lkdGgsXFxuICAgICAgY29sICUgb3V0V2lkdGgpO1xcbiAgICBgLHY9ZT9cImkzMih1bmlmb3Jtcy54X3NoYXBlWzFdKVwiOlwiaTMyKHVuaWZvcm1zLnhfc2hhcGVbMl0pXCIseD1lP1wiaTMyKHVuaWZvcm1zLnhfc2hhcGVbMl0pXCI6XCJpMzIodW5pZm9ybXMueF9zaGFwZVszXSlcIixUPWU/XCJyb3dcIjpcImNvbFwiLEM9ZT9cImNvbFwiOlwicm93XCIsUz1gXFxuICAgIGxldCBpbkNoYW5uZWxzID0gaTMyKHVuaWZvcm1zLndfc2hhcGVbMl0pO1xcbiAgICBsZXQgb3V0V2lkdGggPSAke2U/XCJpMzIodW5pZm9ybXMucmVzdWx0X3NoYXBlWzJdKVwiOlwiaTMyKHVuaWZvcm1zLnJlc3VsdF9zaGFwZVszXSlcIn07XFxuICAgIGxldCBvdXRSb3cgPSAke1R9IC8gb3V0V2lkdGg7XFxuICAgIGxldCBvdXRDb2wgPSAke1R9ICUgb3V0V2lkdGg7XFxuXFxuICAgIGxldCBXUm93ID0gJHtDfSAvIChpMzIodW5pZm9ybXMud19zaGFwZVsxXSkgKiBpbkNoYW5uZWxzKTtcXG4gICAgbGV0IFdDb2wgPSAke0N9IC8gaW5DaGFubmVscyAlIGkzMih1bmlmb3Jtcy53X3NoYXBlWzFdKTtcXG4gICAgbGV0IHhSb3cgPSBvdXRSb3cgKiB1bmlmb3Jtcy5zdHJpZGVbMF0gKyB1bmlmb3Jtcy5kaWxhdGlvblswXSAqIFdSb3cgLSB1bmlmb3Jtcy5wYWRbMF07XFxuICAgIGxldCB4Q29sID0gb3V0Q29sICogdW5pZm9ybXMuc3RyaWRlWzFdICsgdW5pZm9ybXMuZGlsYXRpb25bMV0gKiBXQ29sIC0gdW5pZm9ybXMucGFkWzFdO1xcbiAgICBsZXQgeENoID0gJHtDfSAlIGluQ2hhbm5lbHM7XFxuICAgIHZhciByZXNEYXRhID0gJHtqZShhLGgpfSgwLjApO1xcbiAgICAvLyBUaGUgYm91bmRzIGNoZWNraW5nIGlzIGFsd2F5cyBuZWVkZWQgc2luY2Ugd2UgdXNlIGl0IHRvIHBhZCB6ZXJvIGZvclxcbiAgICAvLyB0aGUgXFwnc2FtZVxcJyBwYWRkaW5nIHR5cGUuXFxuICAgIGlmICh4Um93ID49IDAgJiYgeFJvdyA8ICR7dn0gJiYgeENvbCA+PSAwICYmIHhDb2wgPCAke3h9KSB7XFxuICAgICAgJHt3fVxcbiAgICAgIGxldCB4SW5kZXggPSBnZXRJbmRleEZyb21Db29yZHM0RChjb29yZCwgdmVjNDxpMzI+KHVuaWZvcm1zLnhfc2hhcGUpKTtcXG4gICAgICAke2QoYSl9XFxuICAgIH1cXG4gICAgcmV0dXJuIHJlc0RhdGE7YCxFPWU/dCYmbz9gXFxuICAgIGxldCBjb2wgPSBjb2xJbiAqICR7YX07XFxuICAgICR7U31gOmBcXG4gICAgbGV0IGNvbCA9IGNvbEluICogJHthfTtcXG4gICAgaWYgKHJvdyA8IHVuaWZvcm1zLmRpbV9hX291dGVyICYmIGNvbCA8IHVuaWZvcm1zLmRpbV9pbm5lcikge1xcbiAgICAgICR7U31cXG4gICAgfVxcbiAgICByZXR1cm4gJHtqZShhLGgpfSgwLjApO2A6byYmcj9gXFxuICAgIGxldCBjb2wgPSBjb2xJbiAqICR7YX07XFxuICAgICR7U31gOmBcXG4gICAgbGV0IGNvbCA9IGNvbEluICogJHthfTtcXG4gICAgaWYgKHJvdyA8IHVuaWZvcm1zLmRpbV9pbm5lciAmJiBjb2wgPCB1bmlmb3Jtcy5kaW1fYl9vdXRlcikge1xcbiAgICAgICR7U31cXG4gICAgfVxcbiAgICByZXR1cm4gJHtqZShhLGgpfSgwLjApO2AsTz1gJHt5KHApfWAsVT1qZShtLGgpLE09ZT9qZShhLGgpOmplKHAsaCksTj1lP2plKHAsaCk6amUoYSxoKSxZPUF0KHUsVSk7cmV0dXJuYFxcbiAgICBmbiBtbV9yZWFkQShiYXRjaDogaTMyLCByb3cgOiBpMzIsIGNvbEluIDogaTMyKSAtPiAke019IHtcXG4gICAgICAke2U/RTpPfVxcbiAgICB9XFxuXFxuICAgIGZuIG1tX3JlYWRCKGJhdGNoOiBpMzIsIHJvdyA6IGkzMiwgY29sSW4gOiBpMzIpIC0+ICR7Tn0ge1xcbiAgICAgICR7ZT9POkV9XFxuICAgIH1cXG5cXG4gICAgZm4gbW1fd3JpdGUoYmF0Y2g6IGkzMiwgcm93IDogaTMyLCBjb2xJbiA6IGkzMiwgdmFsdWVJbiA6ICR7VX0pIHtcXG4gICAgICBsZXQgY29sID0gY29sSW4gKiAke219O1xcbiAgICAgIGlmIChyb3cgPCB1bmlmb3Jtcy5kaW1fYV9vdXRlciAmJiBjb2wgPCB1bmlmb3Jtcy5kaW1fYl9vdXRlcilcXG4gICAgICB7XFxuICAgICAgdmFyIHZhbHVlID0gdmFsdWVJbjtcXG4gICAgICBsZXQgb3V0V2lkdGggPSAke2U/XCJpMzIodW5pZm9ybXMucmVzdWx0X3NoYXBlWzJdKVwiOlwiaTMyKHVuaWZvcm1zLnJlc3VsdF9zaGFwZVszXSlcIn07XFxuICAgICAgJHtffVxcbiAgICAgICR7Um4oaSl9XFxuICAgICAgJHtZfVxcbiAgICAgIHNldE91dHB1dEF0Q29vcmRzKGNvb3Jkc1swXSwgY29vcmRzWzFdLCBjb29yZHNbMl0sIGNvb3Jkc1szXSwgdmFsdWUpO1xcbiAgICAgIH1cXG4gICAgfWB9LHpzPShlLHQscixvLGksdSxhLHApPT57bGV0IG09dC5mb3JtYXQ9PT1cIk5IV0NcIixoPW0/ZVswXS5kaW1zWzNdOmVbMF0uZGltc1sxXSxkPXJbMF0seT1tP3JbMl06clszXSx3PW0/clsxXTpyWzJdLF89bT9yWzNdOnJbMV0sdj1tJiYoaCU0PT09MHx8aCUzPT09MCkmJl8lND09PTAseD1tP186eSp3LFQ9bT95Knc6XyxDPVs4LDgsMV0sUz1vPD04P1s0LDEsMV06WzQsNCwxXSxFPVtNYXRoLmNlaWwoeC9DWzBdL1NbMF0pLE1hdGguY2VpbChUL0NbMV0vU1sxXSksTWF0aC5jZWlsKGQvQ1syXS9TWzJdKV07RGUoXCJ2ZXJib3NlXCIsKCk9PmBbY29udjJkX21tX3dlYmdwdV0gZGlzcGF0Y2ggPSAke0V9YCk7bGV0IE89dj9tJiZoJTQhPT0wPzM6NDoxLFU9Q1sxXSpTWzFdLE09Q1swXSpTWzBdLE49TWF0aC5tYXgoQ1swXSpPLENbMV0pLFk9byVVPT09MCxzZT1pJU09PT0wLEI9dSVOPT09MCx0ZT12P1tPLDQsNF06WzEsMSwxXSxQZT1be3R5cGU6XCJpbnQzMlwiLGRhdGE6b30se3R5cGU6XCJpbnQzMlwiLGRhdGE6aX0se3R5cGU6XCJpbnQzMlwiLGRhdGE6dX0se3R5cGU6XCJpbnQzMlwiLGRhdGE6W3QucGFkc1swXSx0LnBhZHNbMV1dfSx7dHlwZTpcImludDMyXCIsZGF0YTp0LnN0cmlkZXN9LHt0eXBlOlwiaW50MzJcIixkYXRhOnQuZGlsYXRpb25zfV07dC5hY3RpdmF0aW9uPT09XCJDbGlwXCImJlBlLnB1c2goe3R5cGU6XCJmbG9hdDMyXCIsZGF0YTp0LmNsaXBNYXh9LHt0eXBlOlwiZmxvYXQzMlwiLGRhdGE6dC5jbGlwTWlufSksUGUucHVzaCguLi5HKGVbMF0uZGltcyksLi4uRyhlWzFdLmRpbXMpKTtsZXQgRWU9W1wicmFua1wiLFwicmFua1wiXTthJiYoUGUucHVzaCguLi5HKGVbMl0uZGltcykpLEVlLnB1c2goXCJyYW5rXCIpKSxQZS5wdXNoKC4uLkcocikpO2xldCBlZT1iZT0+e2xldCBNZT1be25hbWU6XCJkaW1fYV9vdXRlclwiLHR5cGU6XCJpMzJcIn0se25hbWU6XCJkaW1fYl9vdXRlclwiLHR5cGU6XCJpMzJcIn0se25hbWU6XCJkaW1faW5uZXJcIix0eXBlOlwiaTMyXCJ9LHtuYW1lOlwicGFkXCIsdHlwZTpcImkzMlwiLGxlbmd0aDoyfSx7bmFtZTpcInN0cmlkZVwiLHR5cGU6XCJpMzJcIixsZW5ndGg6Mn0se25hbWU6XCJkaWxhdGlvblwiLHR5cGU6XCJpMzJcIixsZW5ndGg6Mn1dO3QuYWN0aXZhdGlvbj09PVwiQ2xpcFwiJiZNZS5wdXNoKHtuYW1lOlwiY2xpcF9tYXhcIix0eXBlOlwiZjMyXCJ9LHtuYW1lOlwiY2xpcF9taW5cIix0eXBlOlwiZjMyXCJ9KTtsZXQgcGU9dj80OjEseWU9TmUoZVswXS5kYXRhVHlwZSksZGU9YFxcbiAgICAgIGZuIHNldE91dHB1dEF0SW5kZXgoZmxhdEluZGV4IDogaTMyLCB2YWx1ZSA6ICR7dj9gdmVjNDwke3llfT5gOnllfSkge1xcbiAgICAgICAgcmVzdWx0W2ZsYXRJbmRleF0gPSAke3Y/YHZlYzQ8JHt5ZX0+YDp5ZX0odmFsdWUpO1xcbiAgICAgIH1cXG4gICAgICBmbiBzZXRPdXRwdXRBdENvb3JkcyhkMCA6IGkzMiwgZDEgOiBpMzIsIGQyIDogaTMyLCBkMyA6IGkzMiwgdmFsdWUgOiAke3Y/YHZlYzQ8JHt5ZX0+YDp5ZX0pIHtcXG4gICAgICAgIGxldCBmbGF0SW5kZXggPSBnZXRPdXRwdXRJbmRleEZyb21Db29yZHModmVjNDxpMzI+KGQwLCBkMSwgZDIsIGQzKSk7XFxuICAgICAgICBzZXRPdXRwdXRBdEluZGV4KGZsYXRJbmRleCAke3Y/XCIvIDRcIjpcIlwifSwgdmFsdWUpO1xcbiAgICAgIH1gLHdlPVYoXCJ4XCIsZVswXS5kYXRhVHlwZSxlWzBdLmRpbXMubGVuZ3RoLE89PT0zPzE6TyksemU9VihcIndcIixlWzFdLmRhdGFUeXBlLGVbMV0uZGltcy5sZW5ndGgscGUpLFJlPVt3ZSx6ZV0sR2U9SihcInJlc3VsdFwiLGVbMF0uZGF0YVR5cGUsci5sZW5ndGgscGUpO2lmKGEpe2xldCBGPVYoXCJiaWFzXCIsZVsyXS5kYXRhVHlwZSxlWzJdLmRpbXMubGVuZ3RoLHBlKTtSZS5wdXNoKEYpLGRlKz1gXFxuICAgICAgICBmbiBnZXRCaWFzQnlPdXRwdXRDb29yZHMoY29vcmRzIDogdmVjNDxpMzI+KSAtPiAke3Y/YHZlYzQ8JHt5ZX0+YDp5ZX0ge1xcbiAgICAgICAgICByZXR1cm4gYmlhc1tjb29yZHMuJHttP1wid1wiOlwieVwifSR7dj9cIi8gNFwiOlwiXCJ9XTtcXG4gICAgICAgIH1gfXJldHVybmBcXG4gICAgICAgICR7RG4oXCJ1bmlmb3Jtcy5yZXN1bHRfc3RyaWRlc1wiKX1cXG4gICAgICAgIC8vc3RydWN0IFVuaWZvcm1zIHsgeFNoYXBlIDogdmVjNDxpMzI+LCB3U2hhcGUgOiB2ZWM0PGkzMj4sIG91dFNoYXBlIDogdmVjNDxpMzI+LFxcbiAgICAgICAgLy8gIG91dFNoYXBlU3RyaWRlczogdmVjMzxpMzI+LCBmaWx0ZXJEaW1zIDogdmVjMjxpMzI+LCBwYWQgOiB2ZWMyPGkzMj4sIHN0cmlkZSA6IHZlYzI8aTMyPixcXG4gICAgICAgIC8vICBkaWxhdGlvbiA6IHZlYzI8aTMyPiwgZGltQU91dGVyIDogaTMyLCBkaW1CT3V0ZXIgOiBpMzIsIGRpbUlubmVyIDogaTMyIH07XFxuICAgICAgICAke2JlLnJlZ2lzdGVyVW5pZm9ybXMoTWUpLmRlY2xhcmVWYXJpYWJsZXMoLi4uUmUsR2UpfVxcbiAgICAgICAgJHtkZX1cXG4gICAgICAgICR7SmQobSxZLHNlLEIsYSx0LHRlWzBdLHRlWzFdLHRlWzJdLHllKX1cXG4gICAgICAgICR7dj9VcihTLEMseWUsdm9pZCAwLCFtLE4pOlZyKFMsQyx5ZSx2b2lkIDAsIW0sTiwhMSx2b2lkIDAscCl9YH07cmV0dXJue25hbWU6XCJDb252MkRNYXRNdWxcIixzaGFkZXJDYWNoZTp7aGludDpgJHt0LmNhY2hlS2V5fTske099OyR7dn07JHtZfTske3NlfTske0J9OyR7VX07JHtNfTske059YCxpbnB1dERlcGVuZGVuY2llczpFZX0sZ2V0UnVuRGF0YTooKT0+KHtvdXRwdXRzOlt7ZGltczpyLGRhdGFUeXBlOmVbMF0uZGF0YVR5cGV9XSxkaXNwYXRjaEdyb3VwOnt4OkVbMF0seTpFWzFdLHo6RVsyXX0scHJvZ3JhbVVuaWZvcm1zOlBlfSksZ2V0U2hhZGVyU291cmNlOmVlfX19KTt2YXIgSW8sVnM9USgoKT0+e1widXNlIHN0cmljdFwiO0NlKCk7X2UoKTtFbygpO1V0KCk7SW89KGUsdCxyKT0+e2xldCBvPWUubGVuZ3RoPjIsaT1vP1widmFsdWUgKz0gYltvdXRwdXRfY2hhbm5lbF07XCI6XCJcIix1PWVbMF0uZGltcyxhPWVbMV0uZGltcyxwPWFbMF0vdC5ncm91cCxtPXQuZm9ybWF0PT09XCJOSFdDXCIsaD1Ubyh1LGEsdC5kaWxhdGlvbnMsdC5wYWRzLHQuc3RyaWRlcyxtKSxkPVcuc2l6ZShoKSx5PVt7dHlwZTpcInVpbnQzMlwiLGRhdGE6ZH0se3R5cGU6XCJ1aW50MzJcIixkYXRhOnQuZGlsYXRpb25zfSx7dHlwZTpcInVpbnQzMlwiLGRhdGE6W3Quc3RyaWRlc1swXSx0LnN0cmlkZXNbMV1dfSx7dHlwZTpcInVpbnQzMlwiLGRhdGE6W3QucGFkc1swXSx0LnBhZHNbMV1dfSx7dHlwZTpcInVpbnQzMlwiLGRhdGE6cH1dO3QuYWN0aXZhdGlvbj09PVwiQ2xpcFwiJiZ5LnB1c2goe3R5cGU6XCJmbG9hdDMyXCIsZGF0YTp0LmNsaXBNYXh9LHt0eXBlOlwiZmxvYXQzMlwiLGRhdGE6dC5jbGlwTWlufSkseS5wdXNoKC4uLkcodSksLi4uRyhhKSwuLi5HKGgpKTtsZXQgdz1bXCJyYW5rXCIsXCJyYW5rXCJdO28mJih5LnB1c2goLi4uRyhlWzJdLmRpbXMpKSx3LnB1c2goXCJyYW5rXCIpKSx5LnB1c2goLi4uRyhoKSk7bGV0IF89dj0+e2xldCB4PUooXCJvdXRwdXRcIixlWzBdLmRhdGFUeXBlLGgubGVuZ3RoKSxUPUF0KHQseC50eXBlLnZhbHVlKSxDPVYoXCJ4XCIsZVswXS5kYXRhVHlwZSx1Lmxlbmd0aCksUz1WKFwid1wiLGVbMV0uZGF0YVR5cGUsYS5sZW5ndGgpLEU9W0MsU107byYmRS5wdXNoKFYoXCJiXCIsZVsyXS5kYXRhVHlwZSxlWzJdLmRpbXMpKTtsZXQgTz1be25hbWU6XCJvdXRwdXRfc2l6ZVwiLHR5cGU6XCJ1MzJcIn0se25hbWU6XCJkaWxhdGlvbnNcIix0eXBlOlwidTMyXCIsbGVuZ3RoOnQuZGlsYXRpb25zLmxlbmd0aH0se25hbWU6XCJzdHJpZGVzXCIsdHlwZTpcInUzMlwiLGxlbmd0aDoyfSx7bmFtZTpcInBhZHNcIix0eXBlOlwidTMyXCIsbGVuZ3RoOjJ9LHtuYW1lOlwib3V0cHV0X2NoYW5uZWxzX3Blcl9ncm91cFwiLHR5cGU6XCJ1MzJcIn1dO3JldHVybiB0LmFjdGl2YXRpb249PT1cIkNsaXBcIiYmTy5wdXNoKHtuYW1lOlwiY2xpcF9tYXhcIix0eXBlOlwiZjMyXCJ9LHtuYW1lOlwiY2xpcF9taW5cIix0eXBlOlwiZjMyXCJ9KSxgXFxuICAke3YucmVnaXN0ZXJVbmlmb3JtcyhPKS5kZWNsYXJlVmFyaWFibGVzKC4uLkUseCl9XFxuXFxuICAke3YubWFpblN0YXJ0KCl9XFxuICAgICR7di5ndWFyZEFnYWluc3RPdXRPZkJvdW5kc1dvcmtncm91cFNpemVzKFwidW5pZm9ybXMub3V0cHV0X3NpemVcIil9XFxuXFxuICAgIGxldCBvdXRwdXRJbmRpY2VzID0gJHt4Lm9mZnNldFRvSW5kaWNlcyhcImdsb2JhbF9pZHhcIil9O1xcbiAgICBsZXQgYmF0Y2g6IHUzMiA9IG91dHB1dEluZGljZXNbMF07XFxuICAgIGxldCBvdXRwdXRfY2hhbm5lbDogdTMyID0gb3V0cHV0SW5kaWNlc1ske20/MzoxfV07XFxuICAgIGxldCB4UkNDb3JuZXI6IHZlYzI8dTMyPiA9IHZlYzI8dTMyPihvdXRwdXRJbmRpY2VzWyR7bT8xOjJ9XSwgb3V0cHV0SW5kaWNlc1ske20/MjozfV0pICogdW5pZm9ybXMuc3RyaWRlcyAtIHVuaWZvcm1zLnBhZHM7XFxuICAgIGxldCBncm91cF9pZDogdTMyID0gb3V0cHV0X2NoYW5uZWwgLyB1bmlmb3Jtcy5vdXRwdXRfY2hhbm5lbHNfcGVyX2dyb3VwO1xcblxcbiAgICB2YXIgdmFsdWU6ICR7eC50eXBlLnZhbHVlfSA9ICR7eC50eXBlLnZhbHVlfSgwKTtcXG4gICAgZm9yICh2YXIgd0luQ2hhbm5lbDogdTMyID0gMHU7IHdJbkNoYW5uZWwgPCB1bmlmb3Jtcy53X3NoYXBlWzFdOyB3SW5DaGFubmVsKyspIHtcXG4gICAgICBsZXQgaW5wdXRfY2hhbm5lbCA9IGdyb3VwX2lkICogdW5pZm9ybXMud19zaGFwZVsxXSArIHdJbkNoYW5uZWw7XFxuICAgICAgZm9yICh2YXIgd0hlaWdodDogdTMyID0gMHU7IHdIZWlnaHQgPCB1bmlmb3Jtcy53X3NoYXBlWzJdOyB3SGVpZ2h0KyspIHtcXG4gICAgICAgIGxldCB4SGVpZ2h0ID0geFJDQ29ybmVyLnggKyB3SGVpZ2h0ICogdW5pZm9ybXMuZGlsYXRpb25zWzBdO1xcblxcbiAgICAgICAgaWYgKHhIZWlnaHQgPCAwdSB8fCB4SGVpZ2h0ID49IHVuaWZvcm1zLnhfc2hhcGVbJHttPzE6Mn1dKSB7XFxuICAgICAgICAgIGNvbnRpbnVlO1xcbiAgICAgICAgfVxcblxcbiAgICAgICAgZm9yICh2YXIgd1dpZHRoOiB1MzIgPSAwdTsgd1dpZHRoIDwgdW5pZm9ybXMud19zaGFwZVszXTsgd1dpZHRoKyspIHtcXG4gICAgICAgICAgbGV0IHhXaWR0aCA9IHhSQ0Nvcm5lci55ICsgd1dpZHRoICogdW5pZm9ybXMuZGlsYXRpb25zWzFdO1xcbiAgICAgICAgICBpZiAoeFdpZHRoIDwgMHUgfHwgeFdpZHRoID49IHVuaWZvcm1zLnhfc2hhcGVbJHttPzI6M31dKSB7XFxuICAgICAgICAgICAgY29udGludWU7XFxuICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgbGV0IHhWYWwgPSAke20/Qy5nZXQoXCJiYXRjaFwiLFwieEhlaWdodFwiLFwieFdpZHRoXCIsXCJpbnB1dF9jaGFubmVsXCIpOkMuZ2V0KFwiYmF0Y2hcIixcImlucHV0X2NoYW5uZWxcIixcInhIZWlnaHRcIixcInhXaWR0aFwiKX07XFxuICAgICAgICAgIGxldCB3VmFsID0gJHtTLmdldChcIm91dHB1dF9jaGFubmVsXCIsXCJ3SW5DaGFubmVsXCIsXCJ3SGVpZ2h0XCIsXCJ3V2lkdGhcIil9O1xcbiAgICAgICAgICB2YWx1ZSArPSB4VmFsKndWYWw7XFxuICAgICAgICB9XFxuICAgICAgfVxcbiAgICB9XFxuICAgICR7aX1cXG4gICAgJHtUfVxcbiAgICAke3guc2V0QnlPZmZzZXQoXCJnbG9iYWxfaWR4XCIsXCJ2YWx1ZVwiKX1cXG4gIH1gfTtyZXR1cm57bmFtZTpcIkdyb3VwZWRDb252XCIsc2hhZGVyQ2FjaGU6e2hpbnQ6dC5jYWNoZUtleSxpbnB1dERlcGVuZGVuY2llczp3fSxnZXRSdW5EYXRhOigpPT4oe291dHB1dHM6W3tkaW1zOnI/cihoKTpoLGRhdGFUeXBlOmVbMF0uZGF0YVR5cGV9XSxkaXNwYXRjaEdyb3VwOnt4Ok1hdGguY2VpbChkLzY0KX0scHJvZ3JhbVVuaWZvcm1zOnl9KSxnZXRTaGFkZXJTb3VyY2U6X319fSk7dmFyIFBvLFFkLFdzLE9vPVEoKCk9PntcInVzZSBzdHJpY3RcIjtDZSgpO1dyKCk7X2UoKTtVdCgpO1BvPShlLHQscixvLGk9ITEpPT57bGV0IHU9ZVswXS5kaW1zLGE9ZVsxXS5kaW1zLHA9dVt1Lmxlbmd0aC0yXSxtPWFbYS5sZW5ndGgtMV0saD11W3UubGVuZ3RoLTFdLGQ9SGUobSkseT1IZShoKSx3PUhlKHApLF89Vy5zaXplKHIpL2Qvdyx2PWUubGVuZ3RoPjIseD1vP28uc2xpY2UoMCwtMik6ci5zbGljZSgwLC0yKSxDPVtXLnNpemUoeCkscCxtXSxTPVt7dHlwZTpcInVpbnQzMlwiLGRhdGE6X30se3R5cGU6XCJ1aW50MzJcIixkYXRhOnB9LHt0eXBlOlwidWludDMyXCIsZGF0YTptfSx7dHlwZTpcInVpbnQzMlwiLGRhdGE6aH1dO3QuYWN0aXZhdGlvbj09PVwiQ2xpcFwiJiZTLnB1c2goe3R5cGU6XCJmbG9hdDMyXCIsZGF0YTp0LmNsaXBNYXh9LHt0eXBlOlwiZmxvYXQzMlwiLGRhdGE6dC5jbGlwTWlufSksUy5wdXNoKC4uLkcoeCksLi4uRyh1KSwuLi5HKGEpKSx2JiZTLnB1c2goLi4uRyhlWzJdLmRpbXMpKSxTLnB1c2goLi4uRyhDKSk7bGV0IEU9Tz0+e2xldCBVPUFuKFwiYmF0Y2hfZGltc1wiLGVbMF0uZGF0YVR5cGUseC5sZW5ndGgpLE09VihcImFcIixlWzBdLmRhdGFUeXBlLHUubGVuZ3RoLHkpLE49VihcImJcIixlWzFdLmRhdGFUeXBlLGEubGVuZ3RoLGQpLFk9SihcIm91dHB1dFwiLGVbMF0uZGF0YVR5cGUsQy5sZW5ndGgsZCksc2U9QXQodCxZLnR5cGUudmFsdWUpLEI9W00sTl0sdGU9XCJcIjtpZih2KXtsZXQgZGU9aT9kOjE7Qi5wdXNoKFYoXCJiaWFzXCIsZVsyXS5kYXRhVHlwZSxlWzJdLmRpbXMubGVuZ3RoLGRlKSksdGU9YCR7aT9gdmFsdWUgKz0gYmlhc1tjb2wgLyAke2RlfV07YDpgdmFsdWUgKz0gJHtZLnR5cGUudmFsdWV9KGJpYXNbcm93ICsgaV0pO2B9YH1sZXQgUGU9dS5zbGljZSgwLC0yKSxFZT1hLnNsaWNlKDAsLTIpLGVlPWNyKFBlLHgpLGJlPWNyKEVlLHgpLE1lPVt7bmFtZTpcIm91dHB1dF9zaXplXCIsdHlwZTpcInUzMlwifSx7bmFtZTpcIk1cIix0eXBlOlwidTMyXCJ9LHtuYW1lOlwiTlwiLHR5cGU6XCJ1MzJcIn0se25hbWU6XCJLXCIsdHlwZTpcInUzMlwifV07dC5hY3RpdmF0aW9uPT09XCJDbGlwXCImJk1lLnB1c2goe25hbWU6XCJjbGlwX21heFwiLHR5cGU6XCJmMzJcIn0se25hbWU6XCJjbGlwX21pblwiLHR5cGU6XCJmMzJcIn0pO2xldCBwZT0oZGUsd2UpPT57bGV0IHplPWRlLnJhbmssUmU9ZGUubmFtZTtpZih6ZT09PTIpcmV0dXJuYHZhciAke1JlfV9pbmRpY2VzID0gJHtkZS50eXBlLmluZGljZXN9KDB1LCAwdSk7YDtsZXQgR2U9VS5yYW5rLEY9YHZhciAke1JlfV9pbmRpY2VzOiAke2RlLnR5cGUuaW5kaWNlc307YDtmb3IobGV0IGllPXplLTItMSxoZT1HZS0xO2llPj0wO2llLS0saGUtLSlGKz1gXFxuJHtSZX1faW5kaWNlc1ske2llfV0gPSAke0dlPjE/YGJhdGNoX2luZGljZXNbJHtoZX1dYDpcImJhdGNoX2luZGljZXNcIn07YDtyZXR1cm4gd2UuZm9yRWFjaChpZT0+e0YrPWBcXG4ke1JlfV9pbmRpY2VzWyR7aWV9XSA9IDA7YH0pLEYrPWAke1JlfV9pbmRpY2VzWyR7emUtMn1dID0gMHU7XFxuICAgICAgICAgICAgICAgICAgICAgJHtSZX1faW5kaWNlc1ske3plLTF9XSA9IDB1O2AsRn0seWU9KCk9PntsZXQgZGU9YHZhciBhX2RhdGE6ICR7TS50eXBlLnZhbHVlfTtgO2ZvcihsZXQgd2U9MDt3ZTx5O3dlKyspZGUrPWBcXG4gICAgICAgICAgICAgIGxldCBiX2RhdGEke3dlfSA9IGJbKGJfb2Zmc2V0ICsgKGsgKyAke3dlfSkgKiB1bmlmb3Jtcy5OICsgY29sKSAvICR7ZH1dO2A7Zm9yKGxldCB3ZT0wO3dlPHc7d2UrKyl7ZGUrPWBhX2RhdGEgPSBhWyhhX29mZnNldCArIChyb3cgKyAke3dlfSkgKiB1bmlmb3Jtcy5LICsgaykgLyAke3l9XTtgO2ZvcihsZXQgemU9MDt6ZTx5O3plKyspZGUrPWBcXG4gICAgICAgICAgICB2YWx1ZXNbJHt3ZX1dID0gZm1hKCR7Ti50eXBlLnZhbHVlfShhX2RhdGEke3k9PT0xP1wiXCI6YFske3plfV1gfSksIGJfZGF0YSR7emV9LCB2YWx1ZXNbJHt3ZX1dKTtcXG5gfXJldHVybiBkZX07cmV0dXJuYFxcbiAgJHtPLnJlZ2lzdGVyVW5pZm9ybXMoTWUpLnJlZ2lzdGVySW50ZXJuYWxWYXJpYWJsZXMoVSkuZGVjbGFyZVZhcmlhYmxlcyguLi5CLFkpfVxcbiAgJHtPLm1haW5TdGFydCgpfVxcbiAgICAke08uZ3VhcmRBZ2FpbnN0T3V0T2ZCb3VuZHNXb3JrZ3JvdXBTaXplcyhcInVuaWZvcm1zLm91dHB1dF9zaXplXCIpfVxcbiAgICBsZXQgY29sID0gKGdsb2JhbF9pZHggJSAodW5pZm9ybXMuTiAvICR7ZH0pKSAqICR7ZH07XFxuICAgIHZhciBpbmRleDEgPSBnbG9iYWxfaWR4IC8gKHVuaWZvcm1zLk4gLyAke2R9KTtcXG4gICAgbGV0IHN0cmlkZTEgPSB1bmlmb3Jtcy5NIC8gJHt3fTtcXG4gICAgbGV0IHJvdyA9IChpbmRleDEgJSBzdHJpZGUxKSAqICR7d307XFxuICAgIGxldCBiYXRjaCA9IGluZGV4MSAvIHN0cmlkZTE7XFxuXFxuICAgICR7ci5sZW5ndGg9PT0yP1wiXCI6YGxldCBiYXRjaF9pbmRpY2VzID0gJHtVLm9mZnNldFRvSW5kaWNlcyhcImJhdGNoXCIpfTtgfVxcbiAgICAke3BlKE0sZWUpfVxcbiAgICBsZXQgYV9vZmZzZXQgPSAke00uaW5kaWNlc1RvT2Zmc2V0KFwiYV9pbmRpY2VzXCIpfTtcXG4gICAgJHtwZShOLGJlKX1cXG4gICAgbGV0IGJfb2Zmc2V0ID0gJHtOLmluZGljZXNUb09mZnNldChcImJfaW5kaWNlc1wiKX07XFxuICAgIHZhciB2YWx1ZXM6IGFycmF5PCR7WS50eXBlLnZhbHVlfSwgJHt3fT47XFxuICAgIGZvciAodmFyIGs6IHUzMiA9IDB1OyBrIDwgdW5pZm9ybXMuSzsgayA9IGsgKyAke3l9KSB7XFxuICAgICAgJHt5ZSgpfVxcbiAgICB9XFxuICAgIGZvciAodmFyIGkgPSAwdTsgaSA8ICR7d311OyBpKyspIHtcXG4gICAgICB2YXIgdmFsdWUgPSB2YWx1ZXNbaV07XFxuICAgICAgJHt0ZX1cXG4gICAgICAke3NlfVxcbiAgICAgIGxldCBjdXJfaW5kaWNlcyA9ICR7WS50eXBlLmluZGljZXN9KGJhdGNoLCByb3cgKyBpLCBjb2wpO1xcbiAgICAgIGxldCBvZmZzZXQgPSAke1kuaW5kaWNlc1RvT2Zmc2V0KFwiY3VyX2luZGljZXNcIil9O1xcbiAgICAgICR7WS5zZXRCeU9mZnNldChgb2Zmc2V0IC8gJHtkfWAsXCJ2YWx1ZVwiKX07XFxuICAgIH1cXG4gIH1cXG4gIGB9O3JldHVybntuYW1lOlwiTWF0TXVsTmFpdmVcIixzaGFkZXJDYWNoZTp7aGludDpgJHt0LmFjdGl2YXRpb259OyR7ZH07JHt5fTske3d9OyR7aX1gLGlucHV0RGVwZW5kZW5jaWVzOnY/W1wicmFua1wiLFwicmFua1wiLFwicmFua1wiXTpbXCJyYW5rXCIsXCJyYW5rXCJdfSxnZXRSdW5EYXRhOigpPT4oe291dHB1dHM6W3tkaW1zOnIsZGF0YVR5cGU6ZVswXS5kYXRhVHlwZX1dLGRpc3BhdGNoR3JvdXA6e3g6TWF0aC5jZWlsKF8vNjQpfSxwcm9ncmFtVW5pZm9ybXM6U30pLGdldFNoYWRlclNvdXJjZTpFfX0sUWQ9ZT0+e2lmKCFlfHxlLmxlbmd0aCE9PTIpdGhyb3cgbmV3IEVycm9yKFwiTWF0TXVsIHJlcXVpcmVzIDIgaW5wdXRzLlwiKTtpZihlWzBdLmRpbXNbZVswXS5kaW1zLmxlbmd0aC0xXSE9PWVbMV0uZGltc1tlWzFdLmRpbXMubGVuZ3RoLTJdKXRocm93IG5ldyBFcnJvcihcInNoYXJlZCBkaW1lbnNpb24gZG9lcyBub3QgbWF0Y2guXCIpfSxXcz1lPT57UWQoZS5pbnB1dHMpO2xldCB0PXZ0LmNhbGNTaGFwZShlLmlucHV0c1swXS5kaW1zLGUuaW5wdXRzWzFdLmRpbXMsITApO2lmKCF0KXRocm93IG5ldyBFcnJvcihcIkNhblxcJ3QgdXNlIG1hdG11bCBvbiB0aGUgZ2l2ZW4gdGVuc29yc1wiKTtsZXQgcj10W3QubGVuZ3RoLTFdLG89ZS5pbnB1dHNbMF0uZGltc1tlLmlucHV0c1swXS5kaW1zLmxlbmd0aC0xXTtyPDgmJm88OD9lLmNvbXB1dGUoUG8oZS5pbnB1dHMse2FjdGl2YXRpb246XCJcIn0sdCkpOmUuY29tcHV0ZShNbihlLmlucHV0cyx7YWN0aXZhdGlvbjpcIlwifSx0KSl9fSk7dmFyIFRvLE5zLGVjLEhzLGtvLHRjLHJjLFJvLEVvPVEoKCk9PntcInVzZSBzdHJpY3RcIjtDZSgpO1VzKCk7V3IoKTtWcygpO1V0KCk7T28oKTtwcigpO1RvPShlLHQscixvLGksdSk9PntsZXQgYT1lWzBdLHA9ZS5zbGljZSh1PzE6Mix1PzM6NCksbT1wLmxlbmd0aCxoPXRbMF0seT10LnNsaWNlKDIpLm1hcCgodix4KT0+disodi0xKSooclt4XS0xKSksXz1wLm1hcCgodix4KT0+ditvW3hdK29beCttXSkubWFwKCh2LHgpPT5NYXRoLmZsb29yKCh2LXlbeF0raVt4XSkvaVt4XSkpO3JldHVybiBfLnNwbGljZSgwLDAsYSksXy5zcGxpY2UodT8zOjEsMCxoKSxffSxOcz1bMiwzLDEsMF0sZWM9KGUsdCk9PntpZighZXx8ZS5sZW5ndGghPT0yJiZlLmxlbmd0aCE9PTMpdGhyb3cgbmV3IEVycm9yKFwiQ29udiByZXF1aXJlcyAyIG9yIDMgaW5wdXRzXCIpO2lmKGVbMF0uZGltcy5sZW5ndGghPT00JiZlWzBdLmRpbXMubGVuZ3RoIT09Myl0aHJvdyBuZXcgRXJyb3IoXCJjdXJyZW50bHkgb25seSBzdXBwb3J0IGNvbnYgMUQgYW5kIDJEXCIpO2lmKGVbMF0uZGltcy5sZW5ndGghPT1lWzFdLmRpbXMubGVuZ3RoKXRocm93IG5ldyBFcnJvcihcImZpbHRlciBkb2VzIG5vdCBoYXZlIHNhbWUgZGltZW5zaW9uIGFzIGlucHV0XCIpO2xldCByPWVbMF0uZGltc1t0LmZvcm1hdD09PVwiTkhXQ1wiP2VbMF0uZGltcy5sZW5ndGgtMToxXSxvPWVbMV0uZGltc1sxXSp0Lmdyb3VwO2lmKHIhPT1vKXRocm93IG5ldyBFcnJvcihcIkZJTFRFUl9JTl9DSEFOTkVMIHNob3VsZCBiZSBlcXVhbCB0byBEQVRBX0NIQU5ORUxcIik7aWYoZS5sZW5ndGg9PT0zJiYoZVsyXS5kaW1zLmxlbmd0aCE9PTF8fGVbMV0uZGltc1swXSE9PWVbMl0uZGltc1swXSkpdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBiaWFzXCIpO2xldCBpPWVbMF0uZGltcy5sZW5ndGgtMjtpZih0LmRpbGF0aW9ucy5sZW5ndGghPT1pKXRocm93IG5ldyBFcnJvcihgZGlsYXRpb25zIHNob3VsZCBiZSAke2l9RGApO2lmKHQuc3RyaWRlcy5sZW5ndGghPT1pKXRocm93IG5ldyBFcnJvcihgc3RyaWRlcyBzaG91bGQgYmUgJHtpfURgKTtpZih0LnBhZHMubGVuZ3RoIT09aSoyKXRocm93IG5ldyBFcnJvcihgcGFkcyBzaG91bGQgYmUgJHtpKjJ9RGApO2lmKHQua2VybmVsU2hhcGUubGVuZ3RoIT09MCYmdC5rZXJuZWxTaGFwZS5sZW5ndGghPT1lWzFdLmRpbXMubGVuZ3RoLTIpdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBrZXJuZWwgc2hhcGVcIil9LEhzPShlLHQpPT57bGV0IHI9ZS5rZXJuZWxTaGFwZS5zbGljZSgpO2ZvcihsZXQgdT0yO3U8dFsxXS5kaW1zLmxlbmd0aDsrK3Upclt1LTJdPT09MCYmKHJbdS0yXT10WzFdLmRpbXNbdV0pO2xldCBvPWUucGFkcy5zbGljZSgpO1h0LmFkanVzdFBhZHNCYXNlZE9uQXV0b1BhZCh0WzBdLmRpbXMsZS5zdHJpZGVzLGUuZGlsYXRpb25zLHIsbyxlLmZvcm1hdD09PVwiTkhXQ1wiLGUuYXV0b1BhZCk7bGV0IGk9T2JqZWN0LmFzc2lnbih7fSxlKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihpLHtrZXJuZWxTaGFwZTpyLHBhZHM6b30pLGl9LGtvPWU9PntsZXQgdD1rbihlKSxyPWUuZm9ybWF0LG89W1wiTk9UU0VUXCIsXCJWQUxJRFwiLFwiU0FNRV9VUFBFUlwiLFwiU0FNRV9MT1dFUlwiXVtlLmF1dG9fcGFkXSxpPWUuZGlsYXRpb25zLHU9ZS5ncm91cCxhPWUua2VybmVsX3NoYXBlLHA9ZS5wYWRzLG09ZS5zdHJpZGVzLGg9ZS53X2lzX2NvbnN0KCk7cmV0dXJue2F1dG9QYWQ6byxmb3JtYXQ6cixkaWxhdGlvbnM6aSxncm91cDp1LGtlcm5lbFNoYXBlOmEscGFkczpwLHN0cmlkZXM6bSx3SXNDb25zdDpoLC4uLnQsY2FjaGVLZXk6YCR7ZS5mb3JtYXR9OyR7dC5hY3RpdmF0aW9ufTtgfX0sdGM9KGUsdCxyKT0+e2xldCBvPUhzKHIsdCksaT1yLmZvcm1hdD09PVwiTkhXQ1wiO2lmKHIuZ3JvdXAhPT0xKXtlLmNvbXB1dGUoSW8odCxvKSk7cmV0dXJufWxldCB1PXQubGVuZ3RoPT09MyxhPXRbMF0uZGltc1tpPzE6Ml0scD10WzBdLmRpbXNbaT8yOjNdLG09dFswXS5kaW1zW2k/MzoxXSxoPXRbMV0uZGltc1syXSxkPXRbMV0uZGltc1szXSx5PVRvKHRbMF0uZGltcyx0WzFdLmRpbXMsci5kaWxhdGlvbnMsby5wYWRzLHIuc3RyaWRlcyxpKSx3PXlbaT8xOjJdLF89eVtpPzI6M10sdj15W2k/MzoxXSx4PWkmJmg9PT1hJiZkPT09cCYmci5wYWRzWzBdPT09MCYmci5wYWRzWzFdPT09MDtpZih4fHxoPT09MSYmZD09PTEmJnIuZGlsYXRpb25zWzBdPT09MSYmci5kaWxhdGlvbnNbMV09PT0xJiZyLnN0cmlkZXNbMF09PT0xJiZyLnN0cmlkZXNbMV09PT0xJiZyLnBhZHNbMF09PT0wJiZyLnBhZHNbMV09PT0wKXtsZXQgTT15WzBdLE4sWSxzZSxCPVtdO2lmKGkpe2xldCBFZT1lLmtlcm5lbEN1c3RvbURhdGEud1Q/P2UuY29tcHV0ZSh5dCh0WzFdLE5zKSx7aW5wdXRzOlsxXSxvdXRwdXRzOltyLndJc0NvbnN0Py0yOi0xXX0pWzBdO2lmKHIud0lzQ29uc3QmJiFlLmtlcm5lbEN1c3RvbURhdGEud1QmJihlLmtlcm5lbEN1c3RvbURhdGEud1Q9RWUpLHgpe2xldCBlZT1hKnAqbTtOPXRbMF0ucmVzaGFwZShbMSxNLGVlXSksWT1FZS5yZXNoYXBlKFsxLGVlLHZdKSxzZT1bMSxNLHZdfWVsc2UgTj10WzBdLnJlc2hhcGUoW00sYSpwLG1dKSxZPUVlLnJlc2hhcGUoWzEsbSx2XSksc2U9W00sdypfLHZdO0IucHVzaChOKSxCLnB1c2goWSl9ZWxzZSBOPXRbMF0ucmVzaGFwZShbTSxtLGEqcF0pLFk9dFsxXS5yZXNoYXBlKFsxLHYsbV0pLHNlPVtNLHYsdypfXSxCLnB1c2goWSksQi5wdXNoKE4pO3UmJkIucHVzaCh0WzJdKTtsZXQgdGU9c2VbMl0sUGU9QlswXS5kaW1zW0JbMF0uZGltcy5sZW5ndGgtMV07dGU8OCYmUGU8OD9lLmNvbXB1dGUoUG8oQixvLHksc2UsaSkse2lucHV0czpCfSk6ZS5jb21wdXRlKE1uKEIsbyx5LHNlLGkpLHtpbnB1dHM6Qn0pO3JldHVybn1sZXQgVD0hMCxDPWUua2VybmVsQ3VzdG9tRGF0YS53VD8/ZS5jb21wdXRlKHl0KHRbMV0sTnMpLHtpbnB1dHM6WzFdLG91dHB1dHM6W3Iud0lzQ29uc3Q/LTI6LTFdfSlbMF07ci53SXNDb25zdCYmIWUua2VybmVsQ3VzdG9tRGF0YS53VCYmKGUua2VybmVsQ3VzdG9tRGF0YS53VD1DKTtsZXQgUz1bdFswXSxDXTt1JiZTLnB1c2godFsyXSk7bGV0IEU9aT93Kl86dixPPWk/djp3Kl8sVT1oKmQqbTtlLmNvbXB1dGUoenMoUyxvLHksRSxPLFUsdSxUKSx7aW5wdXRzOlN9KX0scmM9KGUsdCk9PntsZXQgcj10LmZvcm1hdD09PVwiTkhXQ1wiLG89W2UuaW5wdXRzWzBdLnJlc2hhcGUocj9bZS5pbnB1dHNbMF0uZGltc1swXSwxLGUuaW5wdXRzWzBdLmRpbXNbMV0sZS5pbnB1dHNbMF0uZGltc1syXV06W2UuaW5wdXRzWzBdLmRpbXNbMF0sZS5pbnB1dHNbMF0uZGltc1sxXSwxLGUuaW5wdXRzWzBdLmRpbXNbMl1dKSxlLmlucHV0c1sxXS5yZXNoYXBlKFtlLmlucHV0c1sxXS5kaW1zWzBdLGUuaW5wdXRzWzFdLmRpbXNbMV0sMSxlLmlucHV0c1sxXS5kaW1zWzJdXSldO2UuaW5wdXRzLmxlbmd0aD09PTMmJm8ucHVzaChlLmlucHV0c1syXSk7bGV0IGk9WzAsdC5wYWRzWzBdLDAsdC5wYWRzWzFdXSx1PVsxXS5jb25jYXQodC5zdHJpZGVzKSxhPVsxXS5jb25jYXQodC5kaWxhdGlvbnMpLHA9WzFdLmNvbmNhdCh0Lmtlcm5lbFNoYXBlKSxtPUhzKHsuLi50LHBhZHM6aSxzdHJpZGVzOnUsZGlsYXRpb25zOmEsa2VybmVsU2hhcGU6cH0sbyk7ZS5jb21wdXRlKElvKG8sbSxoPT5yP1toWzBdLGhbMl0saFszXV06W10pKX0sUm89KGUsdCk9PntlYyhlLmlucHV0cyx0KSxlLmlucHV0c1swXS5kaW1zLmxlbmd0aD09PTM/cmMoZSx0KTp0YyhlLGUuaW5wdXRzLHQpfX0pO3ZhciBuYyxHcyxMcz1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7enQoKTtfZSgpO1V0KCk7Qm4oKTtBbygpO1dyKCk7bmM9KGUsdD0hMSxyLG89NCk9PntsZXQgaT1qZShvLFwiZjMyXCIpLHU9Qz0+e3N3aXRjaChDKXtjYXNlIDE6cmV0dXJuXCJyZXR1cm4gd1tnZXRJbmRleEZyb21Db29yZHM0RChjb29yZCwgdmVjNDxpMzI+KHVuaWZvcm1zLndfc2hhcGUpKV07XCI7Y2FzZSA0OnJldHVybmBcXG4gICAgICAgICAgICBsZXQgY29vcmQxID0gdmVjNDxpMzI+KGNvb3JkWCwgY29vcmRZLCBjb2wgKyAxLCByb3dJbm5lcik7XFxuICAgICAgICAgICAgbGV0IGNvb3JkMiA9IHZlYzQ8aTMyPihjb29yZFgsIGNvb3JkWSwgY29sICsgMiwgcm93SW5uZXIpO1xcbiAgICAgICAgICAgIGxldCBjb29yZDMgPSB2ZWM0PGkzMj4oY29vcmRYLCBjb29yZFksIGNvbCArIDMsIHJvd0lubmVyKTtcXG4gICAgICAgICAgICBsZXQgdjAgPSB3W2dldEluZGV4RnJvbUNvb3JkczREKGNvb3JkLCB2ZWM0PGkzMj4odW5pZm9ybXMud19zaGFwZSkpXTtcXG4gICAgICAgICAgICBsZXQgdjEgPSB3W2dldEluZGV4RnJvbUNvb3JkczREKGNvb3JkMSwgdmVjNDxpMzI+KHVuaWZvcm1zLndfc2hhcGUpKV07XFxuICAgICAgICAgICAgbGV0IHYyID0gd1tnZXRJbmRleEZyb21Db29yZHM0RChjb29yZDIsIHZlYzQ8aTMyPih1bmlmb3Jtcy53X3NoYXBlKSldO1xcbiAgICAgICAgICAgIGxldCB2MyA9IHdbZ2V0SW5kZXhGcm9tQ29vcmRzNEQoY29vcmQzLCB2ZWM0PGkzMj4odW5pZm9ybXMud19zaGFwZSkpXTtcXG4gICAgICAgICAgICByZXR1cm4gdmVjNDxmMzI+KHYwLCB2MSwgdjIsIHYzKTtcXG4gICAgICAgICAgICBgO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBpbm5lckVsZW1lbnRTaXplICR7Q30gaXMgbm90IHN1cHBvcnRlZC5gKX19LGE9ZT9gXFxuICAgICAgbGV0IGNvb3JkID0gdmVjNDxpMzI+KGJhdGNoLCBpWFIsIGlYQywgeENoKTtcXG4gICAgICBgOmBcXG4gICAgICBsZXQgY29vcmQgPSB2ZWM0PGkzMj4oYmF0Y2gsIHhDaCwgaVhSLCBpWEMpO1xcbiAgICAgIGAscD1lP2BcXG4gICAgbGV0IGNvb3JkcyA9IHZlYzQ8aTMyPihcXG4gICAgICBiYXRjaCxcXG4gICAgICByb3cgLyBvdXRXaWR0aCxcXG4gICAgICByb3cgJSBvdXRXaWR0aCxcXG4gICAgICBjb2wpO1xcbiAgICBgOmBcXG4gICAgbGV0IGNvb3JkcyA9IHZlYzQ8aTMyPihcXG4gICAgICBiYXRjaCxcXG4gICAgICByb3csXFxuICAgICAgY29sIC8gb3V0V2lkdGgsXFxuICAgICAgY29sICUgb3V0V2lkdGgpO1xcbiAgICBgLG09ZT9cImkzMih1bmlmb3Jtcy54X3NoYXBlWzFdKVwiOlwiaTMyKHVuaWZvcm1zLnhfc2hhcGVbMl0pXCIsaD1lP1wiaTMyKHVuaWZvcm1zLnhfc2hhcGVbMl0pXCI6XCJpMzIodW5pZm9ybXMueF9zaGFwZVszXSlcIixkPWU/XCJyb3dcIjpcImNvbFwiLHk9ZT9cImNvbFwiOlwicm93XCIsdz1gXFxuICAgICAgbGV0IGluQ2hhbm5lbHMgPSAke2U/XCJpMzIodW5pZm9ybXMueF9zaGFwZVszXSlcIjpcImkzMih1bmlmb3Jtcy54X3NoYXBlWzFdKVwifTtcXG4gICAgICBsZXQgb3V0V2lkdGggPSAke2U/XCJpMzIodW5pZm9ybXMucmVzdWx0X3NoYXBlWzJdKVwiOlwiaTMyKHVuaWZvcm1zLnJlc3VsdF9zaGFwZVszXSlcIn07XFxuICAgICAgbGV0IG91dFJvdyA9ICR7ZH0gLyBvdXRXaWR0aDtcXG4gICAgICBsZXQgb3V0Q29sID0gJHtkfSAlIG91dFdpZHRoO1xcblxcbiAgICAgIGxldCBXUm93ID0gJHt5fSAvICh1bmlmb3Jtcy5maWx0ZXJfZGltc1sxXSAqIGluQ2hhbm5lbHMpO1xcbiAgICAgIGxldCBXQ29sID0gJHt5fSAvIGluQ2hhbm5lbHMgJSB1bmlmb3Jtcy5maWx0ZXJfZGltc1sxXTtcXG4gICAgICBsZXQgeFIgPSBmMzIob3V0Um93IC0gdW5pZm9ybXMucGFkc1swXSArIHVuaWZvcm1zLmRpbGF0aW9uc1swXSAqIFdSb3cpIC8gZjMyKHVuaWZvcm1zLnN0cmlkZXNbMF0pO1xcbiAgICAgIGxldCB4QyA9IGYzMihvdXRDb2wgLSB1bmlmb3Jtcy5wYWRzWzFdICsgdW5pZm9ybXMuZGlsYXRpb25zWzFdICogV0NvbCkgLyBmMzIodW5pZm9ybXMuc3RyaWRlc1sxXSk7XFxuICAgICAgaWYgKHhSIDwgMC4wIHx8IHhSID49IGYzMigke219KSB8fCBmcmFjdCh4UikgPiAwLjApIHtcXG4gICAgICAgIHJldHVybiAke2l9KDAuMCk7XFxuICAgICAgfVxcbiAgICAgIGlmICh4QyA8IDAuMCB8fCB4QyA+PSBmMzIoJHtofSkgfHwgZnJhY3QoeEMpID4gMC4wKSB7XFxuICAgICAgICByZXR1cm4gJHtpfSgwLjApO1xcbiAgICAgIH1cXG4gICAgICBsZXQgaVhSID0gaTMyKHhSKTtcXG4gICAgICBsZXQgaVhDID0gaTMyKHhDKTtcXG4gICAgICBsZXQgeENoID0gJHt5fSAlIGluQ2hhbm5lbHM7XFxuICAgICAgJHthfVxcbiAgICAgIHJldHVybiB4W2dldEluZGV4RnJvbUNvb3JkczREKGNvb3JkLCB2ZWM0PGkzMj4odW5pZm9ybXMueF9zaGFwZSkpLyR7b31dO2AsXz1lP2BcXG4gICAgICBsZXQgY29sID0gY29sSW4gKiAke299O1xcbiAgICAgIGlmIChyb3cgPCB1bmlmb3Jtcy5kaW1fYV9vdXRlciAmJiBjb2wgPCB1bmlmb3Jtcy5kaW1faW5uZXIpIHtcXG4gICAgICAgICR7d31cXG4gICAgICB9XFxuICAgICAgcmV0dXJuICR7aX0oMC4wKTtgOmBcXG4gICAgICBsZXQgY29sID0gY29sSW4gKiAke299O1xcbiAgICAgIGlmIChyb3cgPCB1bmlmb3Jtcy5kaW1faW5uZXIgJiYgY29sIDwgdW5pZm9ybXMuZGltX2Jfb3V0ZXIpIHtcXG4gICAgICAgICR7d31cXG4gICAgICB9XFxuICAgICAgcmV0dXJuICR7aX0oMC4wKTtgLHY9YFxcbiAgICAgIGxldCBjb2wgPSBjb2xJbiAqICR7b307XFxuICAgICAgbGV0IGluQ2hhbm5lbHMgPSAke2U/XCJpMzIodW5pZm9ybXMueF9zaGFwZVszXSlcIjpcImkzMih1bmlmb3Jtcy54X3NoYXBlWzFdKVwifTtcXG4gICAgICBsZXQgY29vcmRYID0gdW5pZm9ybXMuZmlsdGVyX2RpbXNbMF0gLSAxIC0gcm93IC8gKHVuaWZvcm1zLmZpbHRlcl9kaW1zWzFdICogaW5DaGFubmVscyk7XFxuICAgICAgbGV0IGNvb3JkWSA9IHVuaWZvcm1zLmZpbHRlcl9kaW1zWzFdIC0gMSAtIChyb3cgLyBpbkNoYW5uZWxzKSAlIHVuaWZvcm1zLmZpbHRlcl9kaW1zWzFdO1xcbiAgICAgIGlmICgke2U/XCJyb3cgPCB1bmlmb3Jtcy5kaW1faW5uZXIgJiYgY29sIDwgdW5pZm9ybXMuZGltX2Jfb3V0ZXJcIjpcInJvdyA8IHVuaWZvcm1zLmRpbV9pbm5lciAmJiBjb2wgPCB1bmlmb3Jtcy5kaW1fYV9vdXRlclwifSAgJiYgY29vcmRYID49IDAgJiYgY29vcmRZID49IDApIHtcXG4gICAgICAgIGxldCByb3dJbm5lciA9IHJvdyAlIGluQ2hhbm5lbHM7XFxuICAgICAgICBsZXQgY29vcmQgPSB2ZWM0PGkzMj4oY29vcmRYLCBjb29yZFksIGNvbCwgcm93SW5uZXIpO1xcbiAgICAgICAgJHt1KG8pfVxcbiAgICAgIH1cXG4gICAgICByZXR1cm4gJHtpfSgwLjApO1xcbiAgICAgIGAseD1BdChyLGkpO3JldHVybmBcXG4gIGZuIG1tX3JlYWRBKGJhdGNoOiBpMzIsIHJvdyA6IGkzMiwgY29sSW4gOiBpMzIpIC0+ICR7aX0ge1xcbiAgICAke2U/Xzp2fVxcbiAgfVxcblxcbiAgZm4gbW1fcmVhZEIoYmF0Y2g6IGkzMiwgcm93IDogaTMyLCBjb2xJbiA6IGkzMikgLT4gJHtpfSB7XFxuICAgICR7ZT92Ol99XFxuICB9XFxuXFxuICBmbiBtbV93cml0ZShiYXRjaDogaTMyLCByb3cgOiBpMzIsIGNvbEluIDogaTMyLCB2YWx1ZUlucHV0IDogJHtpfSkge1xcbiAgICBsZXQgY29sID0gY29sSW4gKiAke299O1xcbiAgICBpZiAocm93IDwgdW5pZm9ybXMuZGltX2Ffb3V0ZXIgJiYgY29sIDwgdW5pZm9ybXMuZGltX2Jfb3V0ZXIpIHtcXG4gICAgICB2YXIgdmFsdWUgPSB2YWx1ZUlucHV0O1xcbiAgICAgIGxldCBvdXRXaWR0aCA9ICR7ZT9cImkzMih1bmlmb3Jtcy5yZXN1bHRfc2hhcGVbMl0pXCI6XCJpMzIodW5pZm9ybXMucmVzdWx0X3NoYXBlWzNdKVwifTtcXG4gICAgICAke3B9XFxuICAgICAgJHtSbih0KX1cXG4gICAgICAke3h9XFxuICAgICAgcmVzdWx0W2dldEluZGV4RnJvbUNvb3JkczREKGNvb3JkcywgdmVjNDxpMzI+KHVuaWZvcm1zLnJlc3VsdF9zaGFwZSkpLyR7b31dID0gdmFsdWU7XFxuICAgIH1cXG4gIH1gfSxHcz0oZSx0LHIsbyxpLHUsYSxwKT0+e2xldCBtPXQuZm9ybWF0PT09XCJOSFdDXCIsaD1tP2VbMF0uZGltc1szXTplWzBdLmRpbXNbMV0sZD1yWzBdLHk9bT9yWzJdOnJbM10sdz1tP3JbMV06clsyXSxfPW0/clszXTpyWzFdLHY9bT9oJTQ9PT0wJiZfJTQ9PT0wOnklND09PTAmJl8lND09PTAseD1tP186eSp3LFQ9bT95Knc6XyxDPXY/WzgsOCwxXTpbeDw9NHx8VDw9ND80OjE2LHg+NCYmVDw9ND80OjE2LDFdLFM9dj9bNCw0LDFdOlt4PD00PzE6NCx4PjQmJlQ8PTQ/MTo0LDFdLEU9W01hdGguY2VpbCh4L0NbMF0vU1swXSksTWF0aC5jZWlsKFQvQ1sxXS9TWzFdKSxNYXRoLmNlaWwoZC9DWzJdL1NbMl0pXTtEZShcInZlcmJvc2VcIiwoKT0+YFtjb252X2JhY2twcm9wX21tX3dlYmdwdV0gZGlzcGF0Y2ggPSAke0V9YCk7bGV0IE89dj80OjEsVT1NYXRoLm1heChDWzBdKk8sQ1sxXSksTT12PzQ6MSxOPVt0Lmtlcm5lbFNoYXBlW20/MToyXSx0Lmtlcm5lbFNoYXBlW20/MjozXV0sWT1bTlswXSsodC5kaWxhdGlvbnNbMF08PTE/MDooTlswXS0xKSoodC5kaWxhdGlvbnNbMF0tMSkpLE5bMV0rKHQuZGlsYXRpb25zWzFdPD0xPzA6KE5bMV0tMSkqKHQuZGlsYXRpb25zWzFdLTEpKV0sc2U9W1lbMF0tMS1NYXRoLmZsb29yKCh0LnBhZHNbMF0rdC5wYWRzWzJdKS8yKSxZWzFdLTEtTWF0aC5mbG9vcigodC5wYWRzWzFdK3QucGFkc1szXSkvMildLEI9W3t0eXBlOlwiaW50MzJcIixkYXRhOm99LHt0eXBlOlwiaW50MzJcIixkYXRhOml9LHt0eXBlOlwiaW50MzJcIixkYXRhOnV9LHt0eXBlOlwiaW50MzJcIixkYXRhOnQuc3RyaWRlc30se3R5cGU6XCJpbnQzMlwiLGRhdGE6dC5kaWxhdGlvbnN9LHt0eXBlOlwiaW50MzJcIixkYXRhOk59LHt0eXBlOlwiaW50MzJcIixkYXRhOnNlfV07dC5hY3RpdmF0aW9uPT09XCJDbGlwXCImJkIucHVzaCh7dHlwZTpcImZsb2F0MzJcIixkYXRhOnQuY2xpcE1heH0se3R5cGU6XCJmbG9hdDMyXCIsZGF0YTp0LmNsaXBNaW59KSxCLnB1c2goLi4uRyhlWzBdLmRpbXMpLC4uLkcoZVsxXS5kaW1zKSk7bGV0IHRlPVtcInJhbmtcIixcInJhbmtcIl07YSYmKEIucHVzaCguLi5HKGVbMl0uZGltcykpLHRlLnB1c2goXCJyYW5rXCIpKSxCLnB1c2goLi4uRyhyKSk7bGV0IFBlPUVlPT57bGV0IGVlPVYoXCJ4XCIsZVswXS5kYXRhVHlwZSxlWzBdLmRpbXMubGVuZ3RoLE0pLGJlPVYoXCJ3XCIsZVsxXS5kYXRhVHlwZSxlWzFdLmRpbXMubGVuZ3RoLDEpLE1lPUooXCJyZXN1bHRcIixlWzBdLmRhdGFUeXBlLHIubGVuZ3RoLE0pLHBlPVtlZSxiZV0seWU9XCJcIjtpZihhKXtsZXQgd2U9VihcImJpYXNcIixlWzJdLmRhdGFUeXBlLGVbMl0uZGltcy5sZW5ndGgsTSk7cGUucHVzaCh3ZSkseWUrPWBcXG4gICAgICAgICAgZm4gZ2V0Qmlhc0J5T3V0cHV0Q29vcmRzKGNvb3JkcyA6IHZlYzQ8aTMyPikgLT4gJHt2P1widmVjNDxmMzI+XCI6XCJmMzJcIn0ge1xcbiAgICAgICAgICAgIHJldHVybiBiaWFzW2Nvb3Jkcy4ke20/XCJ3XCI6XCJ5XCJ9JHt2P1wiLyA0XCI6XCJcIn1dO1xcbiAgICAgICAgICB9YH1sZXQgZGU9W3tuYW1lOlwiZGltX2Ffb3V0ZXJcIix0eXBlOlwiaTMyXCJ9LHtuYW1lOlwiZGltX2Jfb3V0ZXJcIix0eXBlOlwiaTMyXCJ9LHtuYW1lOlwiZGltX2lubmVyXCIsdHlwZTpcImkzMlwifSx7bmFtZTpcInN0cmlkZXNcIix0eXBlOlwiaTMyXCIsbGVuZ3RoOjJ9LHtuYW1lOlwiZGlsYXRpb25zXCIsdHlwZTpcImkzMlwiLGxlbmd0aDoyfSx7bmFtZTpcImZpbHRlcl9kaW1zXCIsdHlwZTpcImkzMlwiLGxlbmd0aDpOLmxlbmd0aH0se25hbWU6XCJwYWRzXCIsdHlwZTpcImkzMlwiLGxlbmd0aDpzZS5sZW5ndGh9XTtyZXR1cm4gdC5hY3RpdmF0aW9uPT09XCJDbGlwXCImJmRlLnB1c2goe25hbWU6XCJjbGlwX21heFwiLHR5cGU6XCJmMzJcIn0se25hbWU6XCJjbGlwX21pblwiLHR5cGU6XCJmMzJcIn0pLGBcXG4gICAgICAgICR7RG4oXCJ1bmlmb3Jtcy5yZXN1bHRfc3RyaWRlc1wiKX1cXG4gICAgICAgICR7RWUucmVnaXN0ZXJVbmlmb3JtcyhkZSkuZGVjbGFyZVZhcmlhYmxlcyguLi5wZSxNZSl9O1xcbiAgICAgICAgJHt5ZX1cXG4gICAgICAgICR7bmMobSxhLHQsTyl9XFxuICAgICAgICAke3Y/VXIoUyxDLFwiZjMyXCIsdm9pZCAwLCFtLFUpOlZyKFMsQyxcImYzMlwiLHZvaWQgMCwhbSxVLCExLHZvaWQgMCxwKX1gfTtyZXR1cm57bmFtZTpcIkNvbnYyRFRyYW5zcG9zZU1hdE11bFwiLHNoYWRlckNhY2hlOntoaW50OmAke3QuY2FjaGVLZXl9OyR7U307JHtDfTske3Z9YCxpbnB1dERlcGVuZGVuY2llczp0ZX0sZ2V0UnVuRGF0YTooKT0+KHtvdXRwdXRzOlt7ZGltczpyLGRhdGFUeXBlOmVbMF0uZGF0YVR5cGV9XSxkaXNwYXRjaEdyb3VwOnt4OkVbMF0seTpFWzFdLHo6RVsyXX0scHJvZ3JhbVVuaWZvcm1zOkJ9KSxnZXRTaGFkZXJTb3VyY2U6UGV9fX0pO3ZhciBvYyxCbyxGcz1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7enQoKTtDZSgpO19lKCk7b2M9KGUsdCxyLG8saSx1PSExLGEscCxtPSExKT0+e2xldCBoPW0/MToyLGQ9bT8yOjMseT1tPzM6MSx3PXU/MjoxLF89YFxcbiAgZm4gc2V0T3V0cHV0QXRJbmRleChmbGF0SW5kZXggOiB1MzIsIHZhbHVlIDogJHt1P2B2ZWM0PCR7YX0+YDphfSkge1xcbiAgICByZXN1bHRbZmxhdEluZGV4XSA9ICR7dT9gdmVjNDwke2F9PmA6YX0odmFsdWUpO1xcbiAgfWA7byYmKF8rPWBcXG4gICAgZm4gZ2V0Qmlhc0J5T3V0cHV0Q29vcmRzKGNvb3JkcyA6IHZlYzQ8dTMyPikgLT4gJHt1P2B2ZWM0PCR7YX0+YDphfSB7XFxuICAgICAgcmV0dXJuIGJpYXNbY29vcmRzLiR7bT9cIndcIjpcInlcIn0ke3U/XCIvIDRcIjpcIlwifV07XFxuICAgIH1gKTtsZXQgdj11PzQ6MSx4PVYoXCJXXCIsdFsxXS5kYXRhVHlwZSx0WzFdLmRpbXMubGVuZ3RoLHYpLFQ9VihcIkR5XCIsdFswXS5kYXRhVHlwZSx0WzBdLmRpbXMubGVuZ3RoLHYpLEM9W1QseF07byYmQy5wdXNoKFYoXCJiaWFzXCIsdFsyXS5kYXRhVHlwZSxbclt5XV0ubGVuZ3RoLHYpKTtsZXQgUz1KKFwicmVzdWx0XCIsdFswXS5kYXRhVHlwZSxyLmxlbmd0aCx2KSxFPWB7XFxuICAgICAgICBsZXQgYmF0Y2g6IHUzMiA9ICR7aT9cImdsb2JhbF9pZC56XCI6XCJ3b3JrZ3JvdXBfaWQuelwifSAvIHVuaWZvcm1zLnJlc3VsdF9zaGFwZVsxXTtcXG4gICAgICAgIGxldCByID0gJHtpP1wiZ2xvYmFsX2lkLnpcIjpcIndvcmtncm91cF9pZC56XCJ9ICUgdW5pZm9ybXMucmVzdWx0X3NoYXBlWzFdO1xcbiAgICAgICAgbGV0IGMgPSAke2k/XCJnbG9iYWxfaWQueVwiOlwid29ya2dyb3VwX2lkLnlcIn0gKiAke3d9O1xcbiAgICAgICAgbGV0IGQxOiB1MzIgPSAke2k/XCJnbG9iYWxfaWQueFwiOlwid29ya2dyb3VwX2lkLnhcIn0gKiA0O1xcblxcbiAgICAgICAgbGV0IGR5Q29ybmVyID0gdmVjMjxpMzI+KGkzMihyKSwgaTMyKGMpKSAtIHZlYzI8aTMyPih1bmlmb3Jtcy5wYWRzKTtcXG5cXG4gICAgICAgIC8vIENvbnZvbHZlIGR5KD8sID8sIGQyKSB3aXRoIHcoOiwgOiwgZDEsIGQyKSB0byBjb21wdXRlIGR4KHhSLCB4QywgZDEpLlxcbiAgICAgICAgLy8gPyA9IHRvIGJlIGRldGVybWluZWQuIDogPSBhY3Jvc3MgYWxsIHZhbHVlcyBpbiB0aGF0IGF4aXMuXFxuICAgICAgICB2YXIgZG90UHJvZDogYXJyYXk8dmVjNDwke2F9PiwgJHt3fT47XFxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8ICR7d307IGkrKykge1xcbiAgICAgICAgICBkb3RQcm9kW2ldID0gdmVjNDwke2F9PigwLjApO1xcbiAgICAgICAgfVxcbiAgICAgICAgZm9yICh2YXIgd1I6IHUzMiA9IDA7IHdSIDwgdW5pZm9ybXMuZmlsdGVyX2RpbXNbMF07IHdSID0gd1IgKyAxKSB7XFxuICAgICAgICAgIHZhciBkeVIgPSAoJHthfShkeUNvcm5lci54KSArICR7YX0od1IpKSAvICR7YX0odW5pZm9ybXMuc3RyaWRlcy54KTtcXG4gICAgICAgICAgbGV0IHdSUGVybSA9IHVuaWZvcm1zLmZpbHRlcl9kaW1zWzBdIC0gMSAtIHdSO1xcbiAgICAgICAgICBpZiAoZHlSIDwgMC4wIHx8IGR5UiA+PSAke2F9KHVuaWZvcm1zLkR5X3NoYXBlWzFdKSB8fFxcbiAgICAgICAgICAgICAgZnJhY3QoZHlSKSA+IDAuMCB8fCB3UlBlcm0gPCAwKSB7XFxuICAgICAgICAgICAgY29udGludWU7XFxuICAgICAgICAgIH1cXG4gICAgICAgICAgbGV0IGlkeVI6IHUzMiA9IHUzMihkeVIpO1xcblxcbiAgICAgICAgICBmb3IgKHZhciB3QzogdTMyID0gMDsgd0MgPCB1bmlmb3Jtcy5maWx0ZXJfZGltc1sxXTsgd0MgPSB3QyArIDEpIHtcXG4gICAgICAgICAgICBsZXQgZHlDID0gKCR7YX0oZHlDb3JuZXIueSkgKyAke2F9KHdDKSkgLyAke2F9KHVuaWZvcm1zLnN0cmlkZXMueSk7XFxuICAgICAgICAgICAgbGV0IGR5QzIgPSAoJHthfShkeUNvcm5lci55KSArIDEuMCArICR7YX0od0MpKSAvICR7YX0odW5pZm9ybXMuc3RyaWRlcy55KTtcXG4gICAgICAgICAgICBsZXQgd0NQZXJtID0gdW5pZm9ybXMuZmlsdGVyX2RpbXNbMV0gLSAxIC0gd0M7XFxuICAgICAgICAgICAgaWYgKHdDUGVybSA8IDApIHtcXG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB2YXIgYkR5Q1ZhbCA9IHRydWU7XFxuICAgICAgICAgICAgdmFyIGJEeUNWYWwyID0gdHJ1ZTtcXG4gICAgICAgICAgICBpZiAoZHlDIDwgMC4wIHx8IGR5QyA+PSAke2F9KHVuaWZvcm1zLkR5X3NoYXBlWzJdKSB8fFxcbiAgICAgICAgICAgICAgICBmcmFjdChkeUMpID4gMC4wKSB7XFxuICAgICAgICAgICAgICBiRHlDVmFsID0gZmFsc2U7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGlmIChkeUMyIDwgMC4wIHx8IGR5QzIgPj0gJHthfSh1bmlmb3Jtcy5EeV9zaGFwZVsyXSkgfHxcXG4gICAgICAgICAgICAgICAgZnJhY3QoZHlDMikgPiAwLjApIHtcXG4gICAgICAgICAgICAgIGJEeUNWYWwyID0gZmFsc2U7XFxuICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgIGxldCBpZHlDOiB1MzIgPSB1MzIoZHlDKTtcXG4gICAgICAgICAgICBsZXQgaWR5QzI6IHUzMiA9IHUzMihkeUMyKTtcXG4gICAgICAgICAgICBpZiAoYkR5Q1ZhbCAmJiBiRHlDVmFsMikge1xcbiAgICAgICAgICAgICAgbGV0IGQyTGVuZ3RoID0gdW5pZm9ybXMuRHlfc2hhcGVbM107XFxuICAgICAgICAgICAgICBmb3IgKHZhciBkMiA6dTMyID0gMDsgZDIgPCBkMkxlbmd0aDsgZDIgPSBkMiArIDQpIHtcXG4gICAgICAgICAgICAgICAgbGV0IHdWYWx1ZTAgPSAke3guZ2V0KFwidTMyKHdSUGVybSlcIixcInUzMih3Q1Blcm0pXCIsXCJkMVwiLFwiZDJcIil9O1xcbiAgICAgICAgICAgICAgICBsZXQgd1ZhbHVlMSA9ICR7eC5nZXQoXCJ1MzIod1JQZXJtKVwiLFwidTMyKHdDUGVybSlcIixcImQxICsgMVwiLFwiZDJcIil9O1xcbiAgICAgICAgICAgICAgICBsZXQgd1ZhbHVlMiA9ICR7eC5nZXQoXCJ1MzIod1JQZXJtKVwiLFwidTMyKHdDUGVybSlcIixcImQxICsgMlwiLFwiZDJcIil9O1xcbiAgICAgICAgICAgICAgICBsZXQgd1ZhbHVlMyA9ICR7eC5nZXQoXCJ1MzIod1JQZXJtKVwiLFwidTMyKHdDUGVybSlcIixcImQxICsgM1wiLFwiZDJcIil9O1xcblxcbiAgICAgICAgICAgICAgICB2YXIgeFZhbHVlID0gJHtULmdldChcImJhdGNoXCIsXCJpZHlSXCIsXCJpZHlDXCIsXCJkMlwiKX07XFxuICAgICAgICAgICAgICAgIGxldCB0bXB2YWwgPSB2ZWM0PCR7YX0+KGRvdCh4VmFsdWUsIHdWYWx1ZTApLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90KHhWYWx1ZSwgd1ZhbHVlMSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3QoeFZhbHVlLCB3VmFsdWUyKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdCh4VmFsdWUsIHdWYWx1ZTMpKTtcXG4gICAgICAgICAgICAgICAgZG90UHJvZFswXSA9IGRvdFByb2RbMF0gKyB0bXB2YWw7XFxuXFxuICAgICAgICAgICAgICAgIHhWYWx1ZSA9ICAke1QuZ2V0KFwiYmF0Y2hcIixcImlkeVJcIixcImlkeUMyXCIsXCJkMlwiKX07XFxuXFxuICAgICAgICAgICAgICAgIGRvdFByb2RbMV0gPSBkb3RQcm9kWzFdICsgdmVjNDwke2F9Pihkb3QoeFZhbHVlLCB3VmFsdWUwKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90KHhWYWx1ZSwgd1ZhbHVlMSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdCh4VmFsdWUsIHdWYWx1ZTIpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3QoeFZhbHVlLCB3VmFsdWUzKSk7XFxuICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSBlbHNlIGlmIChiRHlDVmFsKSB7XFxuICAgICAgICAgICAgICBsZXQgZDJMZW5ndGggPSB1bmlmb3Jtcy5EeV9zaGFwZVske3l9XTtcXG4gICAgICAgICAgICAgIGZvciAodmFyIGQyOiB1MzIgPSAwOyBkMiA8IGQyTGVuZ3RoOyBkMiA9IGQyICsgNCkge1xcbiAgICAgICAgICAgICAgICBsZXQgd1ZhbHVlMCA9ICR7eC5nZXQoXCJ1MzIod1JQZXJtKVwiLFwidTMyKHdDUGVybSlcIixcImQxXCIsXCJkMlwiKX07XFxuICAgICAgICAgICAgICAgIGxldCB3VmFsdWUxID0gJHt4LmdldChcInUzMih3UlBlcm0pXCIsXCJ1MzIod0NQZXJtKVwiLFwiZDEgKyAxXCIsXCJkMlwiKX07XFxuICAgICAgICAgICAgICAgIGxldCB3VmFsdWUyID0gJHt4LmdldChcInUzMih3UlBlcm0pXCIsXCJ1MzIod0NQZXJtKVwiLFwiZDEgKyAyXCIsXCJkMlwiKX07XFxuICAgICAgICAgICAgICAgIGxldCB3VmFsdWUzID0gJHt4LmdldChcInUzMih3UlBlcm0pXCIsXCJ1MzIod0NQZXJtKVwiLFwiZDEgKyAzXCIsXCJkMlwiKX07XFxuXFxuICAgICAgICAgICAgICAgIHZhciB4VmFsdWUgPSAke1QuZ2V0KFwiYmF0Y2hcIixcImlkeVJcIixcImlkeUNcIixcImQyXCIpfTtcXG4gICAgICAgICAgICAgICAgbGV0IHRtcHZhbCA9IHZlYzQ8JHthfT4oZG90KHhWYWx1ZSwgd1ZhbHVlMCksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3QoeFZhbHVlLCB3VmFsdWUxKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdCh4VmFsdWUsIHdWYWx1ZTIpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90KHhWYWx1ZSwgd1ZhbHVlMykpO1xcbiAgICAgICAgICAgICAgICBkb3RQcm9kWzBdID0gZG90UHJvZFswXSArIHRtcHZhbDtcXG4gICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGJEeUNWYWwyKSB7XFxuICAgICAgICAgICAgICBsZXQgZDJMZW5ndGggPSB1bmlmb3Jtcy5EeV9zaGFwZVszXTtcXG4gICAgICAgICAgICAgIGZvciAodmFyIGQyOiB1MzIgPSAwOyBkMiA8IGQyTGVuZ3RoOyBkMiA9IGQyICsgNCkge1xcbiAgICAgICAgICAgICAgICBsZXQgd1ZhbHVlMCA9ICR7eC5nZXQoXCJ1MzIod1JQZXJtKVwiLFwidTMyKHdDUGVybSlcIixcImQxXCIsXCJkMlwiKX07XFxuICAgICAgICAgICAgICAgIGxldCB3VmFsdWUxID0gJHt4LmdldChcInUzMih3UlBlcm0pXCIsXCJ1MzIod0NQZXJtKVwiLFwiZDEgKyAxXCIsXCJkMlwiKX07XFxuICAgICAgICAgICAgICAgIGxldCB3VmFsdWUyID0gJHt4LmdldChcInUzMih3UlBlcm0pXCIsXCJ1MzIod0NQZXJtKVwiLFwiZDEgKyAyXCIsXCJkMlwiKX07XFxuICAgICAgICAgICAgICAgIGxldCB3VmFsdWUzID0gJHt4LmdldChcInUzMih3UlBlcm0pXCIsXCJ1MzIod0NQZXJtKVwiLFwiZDEgKyAzXCIsXCJkMlwiKX07XFxuXFxuICAgICAgICAgICAgICAgIHZhciB4VmFsdWUgPSAke1QuZ2V0KFwiYmF0Y2hcIixcImlkeVJcIixcImlkeUMyXCIsXCJkMlwiKX07XFxuICAgICAgICAgICAgICAgIGxldCB0bXB2YWwgPSB2ZWM0PCR7YX0+KGRvdCh4VmFsdWUsIHdWYWx1ZTApLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90KHhWYWx1ZSwgd1ZhbHVlMSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3QoeFZhbHVlLCB3VmFsdWUyKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdCh4VmFsdWUsIHdWYWx1ZTMpKTtcXG4gICAgICAgICAgICAgICAgZG90UHJvZFsxXSA9IGRvdFByb2RbMV0gKyB0bXB2YWw7XFxuICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICB9XFxuICAgICAgICB9XFxuXFxuICAgICAgICBmb3IgKHZhciBpOiB1MzIgPSAwOyBpIDwgJHt3fTsgaSA9IGkgKyAxKSB7XFxuICAgICAgICAgIGxldCB2YWx1ZSA9IGRvdFByb2RbaV0gKyAke28/XCJiaWFzW2MraV1cIjpgdmVjNDwke2F9PigwLjApYH07XFxuICAgICAgICAgICR7Uy5zZXQoXCJiYXRjaFwiLFwiclwiLFwiYyArIGlcIixcImQxXCIsXCJ2YWx1ZVwiKX07XFxuICAgICAgICB9XFxuICAgICAgfWAsTz1gXFxuICAgICAgICAgIGxldCBvdXRwdXRJbmRpY2VzID0gJHtTLm9mZnNldFRvSW5kaWNlcyhcImdsb2JhbF9pZHhcIil9O1xcbiAgICAgICAgICBsZXQgYmF0Y2ggPSAke1MuaW5kaWNlc0dldChcIm91dHB1dEluZGljZXNcIiwwKX07XFxuICAgICAgICAgIGxldCBkMSA9ICR7Uy5pbmRpY2VzR2V0KFwib3V0cHV0SW5kaWNlc1wiLHkpfTtcXG4gICAgICAgICAgbGV0IHIgPSAke1MuaW5kaWNlc0dldChcIm91dHB1dEluZGljZXNcIixoKX07XFxuICAgICAgICAgIGxldCBjID0gJHtTLmluZGljZXNHZXQoXCJvdXRwdXRJbmRpY2VzXCIsZCl9O1xcbiAgICAgICAgICBsZXQgZHlDb3JuZXIgPSB2ZWMyPGkzMj4oaTMyKHIpLCBpMzIoYykpIC0gdW5pZm9ybXMucGFkcztcXG4gICAgICAgICAgbGV0IGR5UkNvcm5lciA9IGR5Q29ybmVyLng7XFxuICAgICAgICAgIGxldCBkeUNDb3JuZXIgPSBkeUNvcm5lci55O1xcbiAgICAgICAgICBsZXQgZ3JvdXBJZCA9IGQxIC8gdW5pZm9ybXMub3V0cHV0X2NoYW5uZWxzX3Blcl9ncm91cDtcXG4gICAgICAgICAgbGV0IHdPdXRDaGFubmVsID0gZDEgLSBncm91cElkICogdW5pZm9ybXMub3V0cHV0X2NoYW5uZWxzX3Blcl9ncm91cDtcXG4gICAgICAgICAgLy8gQ29udm9sdmUgZHkoPywgPywgZDIpIHdpdGggdyg6LCA6LCBkMSwgZDIpIHRvIGNvbXB1dGUgZHgoeFIsIHhDLCBkMSkuXFxuICAgICAgICAgIC8vID8gPSB0byBiZSBkZXRlcm1pbmVkLiA6ID0gYWNyb3NzIGFsbCB2YWx1ZXMgaW4gdGhhdCBheGlzLlxcbiAgICAgICAgICB2YXIgZG90UHJvZCA9ICR7YX0oMC4wKTtcXG4gICAgICAgICAgZm9yICh2YXIgd1I6IHUzMiA9IDA7IHdSIDwgdW5pZm9ybXMuZWZmZWN0aXZlX2ZpbHRlcl9kaW1zLng7IHdSID0gd1IgKyAxKSB7XFxuICAgICAgICAgICAgaWYgKHdSICUgdW5pZm9ybXMuZGlsYXRpb25zLnggIT0gMCkge1xcbiAgICAgICAgICAgICAgY29udGludWU7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGxldCBkeVIgPSAoJHthfShkeVJDb3JuZXIpICsgJHthfSh3UikpIC8gJHthfSh1bmlmb3Jtcy5zdHJpZGVzWzBdKTtcXG4gICAgICAgICAgICBsZXQgd1JQZXJtID0gdW5pZm9ybXMuZmlsdGVyX2RpbXMueCAtIDEgLSB3UiAvIHVuaWZvcm1zLmRpbGF0aW9ucy54O1xcbiAgICAgICAgICAgIGlmIChkeVIgPCAwLjAgfHwgZHlSID49ICR7YX0odW5pZm9ybXMuRHlfc2hhcGVbJHtofV0pIHx8IGZyYWN0KGR5UikgPiAwLjAgfHxcXG4gICAgICAgICAgICAgICAgd1JQZXJtIDwgMCkge1xcbiAgICAgICAgICAgICAgY29udGludWU7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGxldCBpZHlSOiB1MzIgPSB1MzIoZHlSKTtcXG5cXG4gICAgICAgICAgICBmb3IgKHZhciB3QzogdTMyID0gMDsgd0MgPCB1bmlmb3Jtcy5lZmZlY3RpdmVfZmlsdGVyX2RpbXMueTsgd0MgPSB3QyArIDEpIHtcXG4gICAgICAgICAgICAgIGlmICh3QyAlIHVuaWZvcm1zLmRpbGF0aW9ucy55ICE9IDApIHtcXG4gICAgICAgICAgICAgICAgY29udGludWU7XFxuICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICBsZXQgZHlDID0gKCR7YX0oZHlDQ29ybmVyKSArICR7YX0od0MpKSAvICR7YX0odW5pZm9ybXMuc3RyaWRlcy55KTtcXG4gICAgICAgICAgICAgIGxldCB3Q1Blcm0gPSB1bmlmb3Jtcy5maWx0ZXJfZGltcy55IC0gMSAtIHdDIC8gdW5pZm9ybXMuZGlsYXRpb25zLnk7XFxuICAgICAgICAgICAgICBpZiAoZHlDIDwgMC4wIHx8IGR5QyA+PSAke2F9KHVuaWZvcm1zLkR5X3NoYXBlWyR7ZH1dKSB8fFxcbiAgICAgICAgICAgICAgICAgIGZyYWN0KGR5QykgPiAwLjAgfHwgd0NQZXJtIDwgMCkge1xcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcXG4gICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgIGxldCBpZHlDOiB1MzIgPSB1MzIoZHlDKTtcXG4gICAgICAgICAgICAgIHZhciBpbnB1dENoYW5uZWwgPSBncm91cElkICogdW5pZm9ybXMuaW5wdXRfY2hhbm5lbHNfcGVyX2dyb3VwO1xcbiAgICAgICAgICAgICAgZm9yICh2YXIgZDI6IHUzMiA9IDA7IGQyIDwgdW5pZm9ybXMuaW5wdXRfY2hhbm5lbHNfcGVyX2dyb3VwOyBkMiA9IGQyICsgMSkge1xcbiAgICAgICAgICAgICAgICBsZXQgeFZhbHVlID0gJHttP1QuZ2V0KFwiYmF0Y2hcIixcImlkeVJcIixcImlkeUNcIixcImlucHV0Q2hhbm5lbFwiKTpULmdldChcImJhdGNoXCIsXCJpbnB1dENoYW5uZWxcIixcImlkeVJcIixcImlkeUNcIil9O1xcbiAgICAgICAgICAgICAgICBsZXQgd1ZhbHVlID0gJHt4LmdldChcImlucHV0Q2hhbm5lbFwiLFwid091dENoYW5uZWxcIixcInUzMih3UlBlcm0pXCIsXCJ1MzIod0NQZXJtKVwiKX07XFxuICAgICAgICAgICAgICAgIGRvdFByb2QgPSBkb3RQcm9kICsgeFZhbHVlICogd1ZhbHVlO1xcbiAgICAgICAgICAgICAgICBpbnB1dENoYW5uZWwgPSBpbnB1dENoYW5uZWwgKyAxO1xcbiAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgfVxcbiAgICAgICAgICBsZXQgdmFsdWUgPSBkb3RQcm9kICsgJHtvP1wiYmlhc1tkMV1cIjpgJHthfSgwLjApYH07XFxuICAgICAgICAgICR7Uy5zZXRCeU9mZnNldChcImdsb2JhbF9pZHhcIixcInZhbHVlXCIpfTtcXG4gICAgICAgIGA7cmV0dXJuYFxcbiAgJHtlLnJlZ2lzdGVyVW5pZm9ybXMocCkuZGVjbGFyZVZhcmlhYmxlcyguLi5DLFMpfVxcbiAgJHtffVxcblxcbiAgICAke2UubWFpblN0YXJ0KCl9XFxuICAgICR7ZS5ndWFyZEFnYWluc3RPdXRPZkJvdW5kc1dvcmtncm91cFNpemVzKFwidW5pZm9ybXMub3V0cHV0X3NpemVcIil9O1xcbiAgJHt1P0U6T319YH0sQm89KGUsdCxyKT0+e2xldCBvPWUubGVuZ3RoPjIsaT10Lm91dHB1dFNoYXBlLHU9Vy5zaXplKGkpLGE9W01hdGguY2VpbCh1LzY0KSwxLDFdO0RlKFwidmVyYm9zZVwiLCgpPT5gW2NvbnYyZF9iYWNrcHJvcF93ZWJncHVdIGRpc3BhdGNoID0gJHthfWApO2xldCBwPXQuZm9ybWF0PT09XCJOSFdDXCIsbT1bXCJyYW5rXCIsXCJyYW5rXCJdLGg9W3Quc3RyaWRlc1swXSx0LnN0cmlkZXNbMV1dLGQ9W3Qua2VybmVsU2hhcGVbcD8xOjJdLHQua2VybmVsU2hhcGVbcD8yOjNdXSx5PVt0LmRpbGF0aW9uc1swXSx0LmRpbGF0aW9uc1sxXV0sdz1bZFswXSsodC5kaWxhdGlvbnNbMF08PTE/MDoodC5rZXJuZWxTaGFwZVtwPzE6Ml0tMSkqKHQuZGlsYXRpb25zWzBdLTEpKSxkWzFdKyh0LmRpbGF0aW9uc1sxXTw9MT8wOih0Lmtlcm5lbFNoYXBlW3A/MjozXS0xKSoodC5kaWxhdGlvbnNbMV0tMSkpXSxfPVt3WzBdLTEtTWF0aC5mbG9vcigodC5wYWRzWzBdK3QucGFkc1syXSkvMiksd1sxXS0xLU1hdGguZmxvb3IodC5wYWRzWzFdK3QucGFkc1szXSkvMl0sdj0hMSx4PXQuZ3JvdXAsVD1lWzFdLmRpbXMsQz1UWzBdL3gsUz1UWzFdLEU9W3t0eXBlOlwiaW50MzJcIixkYXRhOnV9LHt0eXBlOlwidWludDMyXCIsZGF0YTpofSx7dHlwZTpcInVpbnQzMlwiLGRhdGE6ZH0se3R5cGU6XCJ1aW50MzJcIixkYXRhOnl9LHt0eXBlOlwidWludDMyXCIsZGF0YTp3fSx7dHlwZTpcImludDMyXCIsZGF0YTpffSx7dHlwZTpcInVpbnQzMlwiLGRhdGE6Q30se3R5cGU6XCJ1aW50MzJcIixkYXRhOlN9LC4uLkcoZVswXS5kaW1zKSwuLi5HKGVbMV0uZGltcyldO28mJihFLnB1c2goLi4uRyhlWzJdLmRpbXMpKSxtLnB1c2goXCJyYW5rXCIpKSxFLnB1c2goLi4uRyhpKSk7bGV0IE89YVsxXT09PTEmJmFbMl09PT0xLFU9TT0+e2xldCBOPVt7bmFtZTpcIm91dHB1dF9zaXplXCIsdHlwZTpcInUzMlwifSx7bmFtZTpcInN0cmlkZXNcIix0eXBlOlwidTMyXCIsbGVuZ3RoOmgubGVuZ3RofSx7bmFtZTpcImZpbHRlcl9kaW1zXCIsdHlwZTpcInUzMlwiLGxlbmd0aDpkLmxlbmd0aH0se25hbWU6XCJkaWxhdGlvbnNcIix0eXBlOlwidTMyXCIsbGVuZ3RoOmQubGVuZ3RofSx7bmFtZTpcImVmZmVjdGl2ZV9maWx0ZXJfZGltc1wiLHR5cGU6XCJ1MzJcIixsZW5ndGg6dy5sZW5ndGh9LHtuYW1lOlwicGFkc1wiLHR5cGU6XCJpMzJcIixsZW5ndGg6Xy5sZW5ndGh9LHtuYW1lOlwiaW5wdXRfY2hhbm5lbHNfcGVyX2dyb3VwXCIsdHlwZTpcInUzMlwifSx7bmFtZTpcIm91dHB1dF9jaGFubmVsc19wZXJfZ3JvdXBcIix0eXBlOlwidTMyXCJ9XSxZPU5lKGVbMF0uZGF0YVR5cGUpO3JldHVybmAke29jKE0sZSxpLG8sTyx2LFksTixwKX1gfTtyZXR1cm57bmFtZTpcIkNvbnZUcmFuc3Bvc2UyRFwiLHNoYWRlckNhY2hlOntoaW50OmAke3QuY2FjaGVLZXl9O2AsaW5wdXREZXBlbmRlbmNpZXM6bX0sZ2V0UnVuRGF0YTooKT0+KHtkaXNwYXRjaEdyb3VwOnt4OmFbMF0seTphWzFdLHo6YVsyXX0sb3V0cHV0czpbe2RpbXM6cj9yKGkpOmksZGF0YVR5cGU6ZVswXS5kYXRhVHlwZX1dLHByb2dyYW1Vbmlmb3JtczpFfSksZ2V0U2hhZGVyU291cmNlOlV9fX0pO3ZhciBpYyxhYyxzYyxqcyxxcyx1YyxsYyxkYyxjYyxLcyxZcz1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7THMoKTtGcygpO1V0KCk7cHIoKTtpYz0oZSx0LHIsbyxpLHUpPT4oZS0xKSp0K3IrKG8tMSkqaSsxLXUsYWM9KGUsdCxyLG8saSk9PntsZXQgdT1NYXRoLmZsb29yKGUvMik7dD09PVwiU0FNRV9VUFBFUlwiPyhyW29dPXUscltpXT1lLXUpOnQ9PT1cIlNBTUVfTE9XRVJcIiYmKHJbb109ZS11LHJbaV09dSl9LHNjPShlLHQscixvLGksdSxhLHAsbSxoKT0+e2xldCBkPWUubGVuZ3RoLTIseT1oLmxlbmd0aD09PTA7aWYobS5sZW5ndGg9PT0wKWZvcihsZXQgdj0wO3Y8ZDsrK3YpbS5wdXNoKDApO2xldCB3PWVbMF0sXz10W3A/MzoxXSppO2ZvcihsZXQgdj0wLHg9ZS5sZW5ndGgtZC0ocD8xOjApO3Y8ZDsrK3YsKyt4KXtsZXQgVD1lW3hdLEM9eT9UKmFbdl06aFt2XSxTPWljKFQsYVt2XSx1W3ZdLHRbeF0sclt2XSxDKTthYyhTLG8sdSx2LHYrZCkseSYmaC5wdXNoKGFbdl0qKFQtMSkrbVt2XSsodFt4XS0xKSpyW3ZdKzEtdVt2XS11W3YrZF0pfWguc3BsaWNlKDAsMCx3KSxoLnNwbGljZShwPzM6MSwwLF8pfSxqcz0oZSx0KT0+e2xldCByPWUua2VybmVsU2hhcGUuc2xpY2UoKTtpZihlLmtlcm5lbFNoYXBlLmxlbmd0aD09PTB8fGUua2VybmVsU2hhcGUucmVkdWNlKCh5LHcpPT55KncsMSk9PT0wKXtyLmxlbmd0aD0wO2ZvcihsZXQgeT0yO3k8dFsxXS5kaW1zLmxlbmd0aDsrK3kpci5wdXNoKHRbMV0uZGltc1t5XSl9bGV0IG89ZS5mb3JtYXQ9PT1cIk5IV0NcIjtyLnNwbGljZSgwLDAsdFsxXS5kaW1zWzBdKSxyLnNwbGljZShvPzM6MSwwLHRbMV0uZGltc1sxXSk7bGV0IGk9ZS5wYWRzLnNsaWNlKCksdT1lLm91dHB1dFNoYXBlLnNsaWNlKCksYT1lLm91dHB1dFBhZGRpbmcuc2xpY2UoKSxwPXRbMF0uZGltcyxtPWUuZGlsYXRpb25zLnNsaWNlKCk7aWYobS5yZWR1Y2UoKHksdyk9PnkrdywwKT09PTApe2xldCB5PXRbMF0uZGltcy5sZW5ndGgtMjttPW5ldyBBcnJheSh5KS5maWxsKDEpfWxldCBoPWUuc3RyaWRlcy5zbGljZSgpO2lmKGgucmVkdWNlKCh5LHcpPT55K3csMCk9PT0wKXtsZXQgeT10WzBdLmRpbXMubGVuZ3RoLTI7aD1uZXcgQXJyYXkoeSkuZmlsbCgxKX1zYyhwLHIsbSxlLmF1dG9QYWQsZS5ncm91cCxpLGgsbyxhLHUpO2xldCBkPU9iamVjdC5hc3NpZ24oe30sZSk7cmV0dXJuIE9iamVjdC5hc3NpZ24oZCx7a2VybmVsU2hhcGU6cixwYWRzOmksb3V0cHV0UGFkZGluZzphLG91dHB1dFNoYXBlOnUsZGlsYXRpb25zOm0sc3RyaWRlczpofSksZH0scXM9ZT0+e2xldCB0PWtuKGUpLHI9ZS5mb3JtYXQsbz1bXCJOT1RTRVRcIixcIlZBTElEXCIsXCJTQU1FX1VQUEVSXCIsXCJTQU1FX0xPV0VSXCJdW3R5cGVvZiBlLmF1dG9QYWQ+XCJ1XCI/MDplLmF1dG9QYWRdLGk9ZS5kaWxhdGlvbnMsdT1lLmdyb3VwLGE9ZS5rZXJuZWxTaGFwZSxwPWUucGFkcyxtPWUuc3RyaWRlcyxoPWUud0lzQ29uc3QoKSxkPWUub3V0cHV0UGFkZGluZyx5PWUub3V0cHV0U2hhcGU7cmV0dXJue2F1dG9QYWQ6byxmb3JtYXQ6cixkaWxhdGlvbnM6aSxncm91cDp1LGtlcm5lbFNoYXBlOmEsb3V0cHV0UGFkZGluZzpkLG91dHB1dFNoYXBlOnkscGFkczpwLHN0cmlkZXM6bSx3SXNDb25zdDpoLC4uLnQsY2FjaGVLZXk6YCR7ZS5mb3JtYXR9OyR7dC5hY3RpdmF0aW9ufTtgfX0sdWM9KGUsdCk9PntpZighZXx8ZS5sZW5ndGghPT0yJiZlLmxlbmd0aCE9PTMpdGhyb3cgbmV3IEVycm9yKFwiQ29udiByZXF1aXJlcyAyIG9yIDMgaW5wdXRzXCIpO2lmKGVbMF0uZGltcy5sZW5ndGghPT00JiZlWzBdLmRpbXMubGVuZ3RoIT09Myl0aHJvdyBuZXcgRXJyb3IoXCJjdXJyZW50bHkgb25seSBzdXBwb3J0IDItZGltZW5zaW9uYWwgY29udlwiKTtpZihlWzBdLmRpbXMubGVuZ3RoIT09ZVsxXS5kaW1zLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoXCJmaWx0ZXIgZG9lcyBub3QgaGF2ZSBzYW1lIGRpbWVuc2lvbiBhcyBpbnB1dFwiKTtsZXQgcj1lWzBdLmRpbXNbdC5mb3JtYXQ9PT1cIk5IV0NcIj9lWzBdLmRpbXMubGVuZ3RoLTE6MV0sbz1lWzFdLmRpbXNbMF07aWYociE9PW8pdGhyb3cgbmV3IEVycm9yKFwiRklMVEVSX0lOX0NIQU5ORUwgc2hvdWxkIGJlIGVxdWFsIHRvIERBVEFfQ0hBTk5FTFwiKTtsZXQgaT1lWzFdLmRpbXNbMV0qdC5ncm91cDtpZihlLmxlbmd0aD09PTMmJihlWzJdLmRpbXMubGVuZ3RoIT09MXx8ZVsyXS5kaW1zWzBdIT09aSkpdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBiaWFzXCIpO2xldCB1PWVbMF0uZGltcy5sZW5ndGgtMjtpZih0LmRpbGF0aW9ucy5yZWR1Y2UoKGQseSk9PmQreSwwKT4wJiZ0LmRpbGF0aW9ucy5sZW5ndGghPT11KXRocm93IG5ldyBFcnJvcihgZGlsYXRpb25zIHNob3VsZCBiZSAke3V9RGApO2lmKHQuc3RyaWRlcy5yZWR1Y2UoKGQseSk9PmQreSwwKT4wJiZ0LnN0cmlkZXMubGVuZ3RoIT09dSl0aHJvdyBuZXcgRXJyb3IoYHN0cmlkZXMgc2hvdWxkIGJlICR7dX1EYCk7aWYodC5wYWRzLnJlZHVjZSgoZCx5KT0+ZCt5LDApPjAmJnQucGFkcy5sZW5ndGghPT11KjIpdGhyb3cgbmV3IEVycm9yKGBwYWRzIHNob3VsZCBiZSAke3UqMn1EYCk7aWYodC5vdXRwdXRQYWRkaW5nLmxlbmd0aCE9PXUmJnQub3V0cHV0UGFkZGluZy5sZW5ndGghPT0wKXRocm93IG5ldyBFcnJvcihgb3V0cHV0X3BhZGRpbmcgc2hvdWxkIGJlICR7dX1EYCk7aWYodC5rZXJuZWxTaGFwZS5yZWR1Y2UoKGQseSk9PmQreSwwKT4wJiZ0Lmtlcm5lbFNoYXBlLmxlbmd0aCE9PTAmJnQua2VybmVsU2hhcGUubGVuZ3RoIT09ZVsxXS5kaW1zLmxlbmd0aC0yKXRocm93IG5ldyBFcnJvcihcImludmFsaWQga2VybmVsIHNoYXBlXCIpO2lmKHQub3V0cHV0U2hhcGUubGVuZ3RoIT09MCYmdC5vdXRwdXRTaGFwZS5sZW5ndGghPT1lWzBdLmRpbXMubGVuZ3RoLTIpdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBvdXRwdXQgc2hhcGVcIil9LGxjPVsyLDMsMSwwXSxkYz0oZSx0LHIpPT57bGV0IG89anMocix0KSxpPXIuZm9ybWF0PT09XCJOSFdDXCIsdT1vLm91dHB1dFNoYXBlLGE9dVtpPzM6MV0scD10WzBdLmRpbXNbaT8zOjFdO2lmKG8uZ3JvdXAhPT0xfHxhPT09MSYmcD09PTEpe2UuY29tcHV0ZShCbyh0LG8pKTtyZXR1cm59bGV0IG09dVtpPzE6Ml0saD11W2k/MjozXSxkPXRbMV0uZGltc1syXSx5PXRbMV0uZGltc1szXSx3PWk/bSpoOmEsXz1pP2E6bSpoLHY9ZCp5KnAseD0hMCxUPWUua2VybmVsQ3VzdG9tRGF0YS53VD8/ZS5jb21wdXRlKHl0KHRbMV0sbGMpLHtpbnB1dHM6WzFdLG91dHB1dHM6W3Iud0lzQ29uc3Q/LTI6LTFdfSlbMF07ci53SXNDb25zdCYmIWUua2VybmVsQ3VzdG9tRGF0YS53VCYmKGUua2VybmVsQ3VzdG9tRGF0YS53VD1UKTtsZXQgQz1bdFswXSxUXSxTPXQubGVuZ3RoPT09MztTJiYoIWkmJnRbMl0uZGltcy5sZW5ndGg9PT0xP0MucHVzaCh0WzJdLnJlc2hhcGUoW3RbMl0uZGltc1swXSwxLDFdKSk6Qy5wdXNoKHRbMl0pKSxlLmNvbXB1dGUoR3MoQyxvLHUsdyxfLHYsUyx4KSx7aW5wdXRzOkN9KX0sY2M9KGUsdCk9PntsZXQgcj10LmZvcm1hdD09PVwiTkhXQ1wiLG89W2UuaW5wdXRzWzBdLnJlc2hhcGUocj9bZS5pbnB1dHNbMF0uZGltc1swXSwxLGUuaW5wdXRzWzBdLmRpbXNbMV0sZS5pbnB1dHNbMF0uZGltc1syXV06W2UuaW5wdXRzWzBdLmRpbXNbMF0sZS5pbnB1dHNbMF0uZGltc1sxXSwxLGUuaW5wdXRzWzBdLmRpbXNbMl1dKSxlLmlucHV0c1sxXS5yZXNoYXBlKFtlLmlucHV0c1sxXS5kaW1zWzBdLGUuaW5wdXRzWzFdLmRpbXNbMV0sMSxlLmlucHV0c1sxXS5kaW1zWzJdXSldO28ubGVuZ3RoPT09MyYmby5wdXNoKGUuaW5wdXRzWzJdKTtsZXQgaT10Lmtlcm5lbFNoYXBlOyhpLmxlbmd0aD09PTB8fGlbMF09PT0wKSYmKGk9W2UuaW5wdXRzWzFdLmRpbXNbMl1dKTtsZXQgdT10LmRpbGF0aW9uczsodS5sZW5ndGg9PT0wfHx1WzBdPT09MCkmJih1PVsxXSk7bGV0IGE9dC5zdHJpZGVzOyhhLmxlbmd0aD09PTB8fGFbMF09PT0wKSYmKGE9WzFdKTtsZXQgcD10LnBhZHM7cC5sZW5ndGg9PT0wJiYocD1bMCwwXSkscD1bMCxwWzBdLDAscFsxXV0sYT1bMV0uY29uY2F0KGEpLHU9WzFdLmNvbmNhdCh1KSxpPVsxXS5jb25jYXQoaSk7bGV0IG09anMoey4uLnQscGFkczpwLHN0cmlkZXM6YSxkaWxhdGlvbnM6dSxrZXJuZWxTaGFwZTppfSxvKTtlLmNvbXB1dGUoQm8obyxtLGg9PnI/W2hbMF0saFsyXSxoWzNdXTpbaFswXSxoWzFdLGhbM11dKSl9LEtzPShlLHQpPT57dWMoZS5pbnB1dHMsdCksZS5pbnB1dHNbMF0uZGltcy5sZW5ndGg9PT0zP2NjKGUsdCk6ZGMoZSxlLmlucHV0cyx0KX19KTt2YXIgcGMsWnMsWHMsSnM9USgoKT0+e1widXNlIHN0cmljdFwiO1ZlKCk7Q2UoKTtZZSgpO19lKCk7cGM9KGUsdCxyLG8pPT57bGV0IGk9Vy5zaXplKHQpLHU9dC5sZW5ndGgsYT1WKFwiaW5wdXRcIixlLHUpLHA9SihcIm91dHB1dFwiLGUsdSksbT1yLmRhdGFUeXBlPT09Nj9yLmdldEludDMyQXJyYXkoKVswXTpOdW1iZXIoci5nZXRCaWdJbnQ2NEFycmF5KClbMF0pLGg9Vy5ub3JtYWxpemVBeGlzKG0sdSksZD15PT57bGV0IHc9YCBpMzIoJHthLmluZGljZXNHZXQoXCJpbnB1dEluZGljZXNcIixcInVuaWZvcm1zLmF4aXNcIil9KSBgLF89Y2UoXCJ1bmlmb3Jtcy5pbnB1dF9zaGFwZVwiLFwidW5pZm9ybXMuYXhpc1wiLHUpLHY9by5yZXZlcnNlP3crKG8uZXhjbHVzaXZlP1wiICsgMVwiOlwiXCIpOlwiMFwiLHg9by5yZXZlcnNlP186dysoby5leGNsdXNpdmU/XCJcIjpcIiArIDFcIik7cmV0dXJuYFxcbiAgICAgICAgICAgICAgICAke3kucmVnaXN0ZXJVbmlmb3JtKFwib3V0cHV0U2l6ZVwiLFwidTMyXCIpLnJlZ2lzdGVyVW5pZm9ybShcImF4aXNcIixcInUzMlwiKS5kZWNsYXJlVmFyaWFibGVzKGEscCl9XFxuICAgICAgICAgICAgICAgICR7eS5tYWluU3RhcnQoKX1cXG4gICAgICAgICAgICAgICAgICAke3kuZ3VhcmRBZ2FpbnN0T3V0T2ZCb3VuZHNXb3JrZ3JvdXBTaXplcyhcInVuaWZvcm1zLm91dHB1dFNpemVcIil9XFxuICAgICAgICAgICAgICAgICAgdmFyIGlucHV0SW5kaWNlcyA9ICR7cC5vZmZzZXRUb0luZGljZXMoXCJnbG9iYWxfaWR4XCIpfTtcXG4gICAgICAgICAgICAgICAgICB2YXIgc3VtID0gJHtwLnR5cGUudmFsdWV9KDApO1xcbiAgICAgICAgICAgICAgICAgIGxldCBmaXJzdCA6IGkzMiA9ICR7dn07XFxuICAgICAgICAgICAgICAgICAgbGV0IGxhc3QgOiBpMzIgPSAke3h9O1xcbiAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgOiBpMzIgPSBmaXJzdDsgaSA8IGxhc3Q7IGkrKykge1xcbiAgICAgICAgICAgICAgICAgICAgJHthLmluZGljZXNTZXQoXCJpbnB1dEluZGljZXNcIixcInVuaWZvcm1zLmF4aXNcIixcInUzMihpKVwiKX07XFxuICAgICAgICAgICAgICAgICAgICBzdW0gPSBzdW0gKyAke2EuZ2V0QnlJbmRpY2VzKFwiaW5wdXRJbmRpY2VzXCIpfTtcXG4gICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgJHtwLnNldEJ5T2Zmc2V0KFwiZ2xvYmFsX2lkeFwiLFwic3VtXCIpfTtcXG4gICAgICAgICAgICAgICAgfWB9O3JldHVybntuYW1lOlwiQ3VtU3VtXCIsc2hhZGVyQ2FjaGU6e2hpbnQ6by5jYWNoZUtleSxpbnB1dERlcGVuZGVuY2llczpbXCJyYW5rXCJdfSxnZXRSdW5EYXRhOigpPT4oe291dHB1dHM6W3tkaW1zOnQsZGF0YVR5cGU6ZX1dLGRpc3BhdGNoR3JvdXA6e3g6TWF0aC5jZWlsKGkvNjQpfSxwcm9ncmFtVW5pZm9ybXM6W3t0eXBlOlwidWludDMyXCIsZGF0YTppfSx7dHlwZTpcImludDMyXCIsZGF0YTpofSwuLi5HKHQpLC4uLkcodCldfSksZ2V0U2hhZGVyU291cmNlOmR9fSxacz0oZSx0KT0+e2xldCByPWUuaW5wdXRzWzBdLmRpbXMsbz1lLmlucHV0c1swXS5kYXRhVHlwZSxpPWUuaW5wdXRzWzFdO2UuY29tcHV0ZShwYyhvLHIsaSx0KSx7aW5wdXRzOlswXX0pfSxYcz1lPT57bGV0IHQ9ZS5leGNsdXNpdmU9PT0xLHI9ZS5yZXZlcnNlPT09MTtyZXR1cm4geGUoe2V4Y2x1c2l2ZTp0LHJldmVyc2U6cn0pfX0pO3ZhciBEbyx6bixRcyxtYyxmYyxNbyx6byxldSxoYyx0dSxydSxudT1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7Q2UoKTtZZSgpO19lKCk7RG89XCJbYS16QS1aXXxcXFxcXFxcXC5cXFxcXFxcXC5cXFxcXFxcXC5cIix6bj1cIihcIitEbytcIikrXCIsUXM9XCJeXCIrem4rXCIkXCIsbWM9XCIoXCIrem4rXCIsKSpcIit6bixmYz1cIl5cIittYytcIiRcIixNbz1jbGFzc3tjb25zdHJ1Y3Rvcih0PS0xKXt0aGlzLnN5bWJvbFRvSW5kaWNlcz1uZXcgTWFwLHRoaXMuaW5wdXRJbmRleD10fWFkZFN5bWJvbCh0LHIpe2xldCBvPXRoaXMuc3ltYm9sVG9JbmRpY2VzLmdldCh0KTtvPT09dm9pZCAwP289W3JdOm8ucHVzaChyKSx0aGlzLnN5bWJvbFRvSW5kaWNlcy5zZXQodCxvKX19LHpvPWNsYXNze2NvbnN0cnVjdG9yKHQscil7dGhpcy5lcXVhdGlvbj1yO3RoaXMuaGFzRWxsaXBzaXM9ITEsdGhpcy5zeW1ib2xUb0luZm89bmV3IE1hcCx0aGlzLmxocz1uZXcgQXJyYXksdGhpcy5vdXRwdXREaW1zPVtdO2xldFtvLGldPXIuaW5jbHVkZXMoXCItPlwiKT9yLnNwbGl0KFwiLT5cIiwyKTpbcixcIlwiXTtpZighby5tYXRjaChSZWdFeHAoZmMpKSl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIExIUyB0ZXJtXCIpO2lmKG8uc3BsaXQoXCIsXCIpLmZvckVhY2goKHAsbSk9PntsZXQgaD10W21dLmRpbXMuc2xpY2UoKTtpZighcC5tYXRjaChSZWdFeHAoUXMpKSl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIExIUyB0ZXJtXCIpO2xldCBkPXRoaXMucHJvY2Vzc1Rlcm0ocCwhMCxoLG0pO3RoaXMubGhzLnB1c2goZCl9KSxpPT09XCJcIilpKz1bLi4udGhpcy5zeW1ib2xUb0luZm8uZW50cmllcygpXS5maWx0ZXIoKFtwLG1dKT0+bS5jb3VudD09PTF8fHA9PT1cIi4uLlwiKS5tYXAoKFtwXSk9PnApLmpvaW4oXCJcIik7ZWxzZSBpZighaS5tYXRjaChSZWdFeHAoem4pKSl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIFJIU1wiKTtpLm1hdGNoKFJlZ0V4cChEbyxcImdcIikpPy5mb3JFYWNoKHA9PntpZihwPT09XCIuLi5cIil0aGlzLm91dHB1dERpbXM9dGhpcy5vdXRwdXREaW1zLmNvbmNhdCh0aGlzLmVsbGlwc2lzRGltcyk7ZWxzZXtsZXQgbT10aGlzLnN5bWJvbFRvSW5mby5nZXQocCk7aWYobT09PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIFJIUyBzeW1ib2xcIik7dGhpcy5vdXRwdXREaW1zLnB1c2gobS5kaW1WYWx1ZSl9fSksdGhpcy5yaHM9dGhpcy5wcm9jZXNzVGVybShpLCExLHRoaXMub3V0cHV0RGltcyl9YWRkU3ltYm9sKHQscixvKXtsZXQgaT10aGlzLnN5bWJvbFRvSW5mby5nZXQodCk7aWYoaSE9PXZvaWQgMCl7aWYoaS5kaW1WYWx1ZSE9PXImJmkuY291bnQhPT0xKXRocm93IG5ldyBFcnJvcihcIkRpbWVuc2lvbiBtaXNtYXRjaFwiKTtpLmNvdW50KyssaS5pbnB1dEluZGljZXMucHVzaChvKX1lbHNlIGk9e2NvdW50OjEsZGltVmFsdWU6cixpbnB1dEluZGljZXM6W29dfTt0aGlzLnN5bWJvbFRvSW5mby5zZXQodCxpKX1wcm9jZXNzVGVybSh0LHIsbyxpPS0xKXtsZXQgdT1vLmxlbmd0aCxhPSExLHA9W10sbT0wO2lmKCF0Lm1hdGNoKFJlZ0V4cChRcykpJiYhciYmdCE9PVwiXCIpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBMSFMgdGVybVwiKTtsZXQgaD10Lm1hdGNoKFJlZ0V4cChEbyxcImdcIikpLGQ9bmV3IE1vKGkpO3JldHVybiBoPy5mb3JFYWNoKCh5LHcpPT57aWYoeT09PVwiLi4uXCIpe2lmKGEpdGhyb3cgbmV3IEVycm9yKFwiT25seSBvbmUgZWxsaXBzaXMgaXMgYWxsb3dlZCBwZXIgaW5wdXQgdGVybVwiKTthPSEwO2xldCBfPXUtaC5sZW5ndGgrMTtpZihfPDApdGhyb3cgbmV3IEVycm9yKFwiRWxsaXBzaXMgb3V0IG9mIGJvdW5kc1wiKTtpZihwPW8uc2xpY2UobSxtK18pLHRoaXMuaGFzRWxsaXBzaXMpe2lmKHRoaXMuZWxsaXBzaXNEaW1zLmxlbmd0aCE9PXAubGVuZ3RofHx0aGlzLmVsbGlwc2lzRGltcy50b1N0cmluZygpIT09cC50b1N0cmluZygpKXRocm93IG5ldyBFcnJvcihcIkVsbGlwc2lzIGRpbWVuc2lvbnMgbWlzbWF0Y2hcIil9ZWxzZSBpZihyKXRoaXMuaGFzRWxsaXBzaXM9ITAsdGhpcy5lbGxpcHNpc0RpbXM9cDtlbHNlIHRocm93IG5ldyBFcnJvcihcIkVsbGlwc2lzIG11c3QgYmUgc3BlY2lmaWVkIGluIHRoZSBMSFNcIik7Zm9yKGxldCB2PTA7djxwLmxlbmd0aDt2Kyspe2xldCB4PVN0cmluZy5mcm9tQ2hhckNvZGUoXCIwXCIuY2hhckNvZGVBdCgwKSt2KTtkLmFkZFN5bWJvbCh4LHcrdiksdGhpcy5hZGRTeW1ib2woeCxvW20rK10saSl9fWVsc2UgZC5hZGRTeW1ib2woeSx3Kyh0aGlzLmhhc0VsbGlwc2lzP3RoaXMuZWxsaXBzaXNEaW1zLmxlbmd0aC0xOjApKSx0aGlzLmFkZFN5bWJvbCh5LG9bbSsrXSxpKX0pLGR9fSxldT1lPT5lK1wiX21heFwiLGhjPShlLHQscixvKT0+e2xldCB1PWUubWFwKGQ9PmQubGVuZ3RoKS5tYXAoKGQseSk9PlYoYGlucHV0JHt5fWAsdCxkKSksYT1XLnNpemUobykscD1KKFwib3V0cHV0XCIsdCxvLmxlbmd0aCksbT1bLi4uci5zeW1ib2xUb0luZm8ua2V5cygpXS5maWx0ZXIoZD0+IXIucmhzLnN5bWJvbFRvSW5kaWNlcy5oYXMoZCkpLGg9ZD0+e2xldCB5PVtdLHc9XCJ2YXIgcHJvZCA9IDEuMDtcIixfPVwidmFyIHN1bSA9IDAuMDtcIix2PVwic3VtICs9IHByb2Q7XCIseD1bXSxUPVtdLEM9W10sUz1bXSxFPXIuc3ltYm9sVG9JbmZvLnNpemU9PT1yLnJocy5zeW1ib2xUb0luZGljZXMuc2l6ZTtyLnN5bWJvbFRvSW5mby5mb3JFYWNoKChVLE0pPT57aWYoci5yaHMuc3ltYm9sVG9JbmRpY2VzLmhhcyhNKSl7bGV0IE49ci5yaHMuc3ltYm9sVG9JbmRpY2VzLmdldChNKT8uWzBdO04hPT12b2lkIDAmJnIubGhzLmZvckVhY2goKFksc2UpPT57aWYoVS5pbnB1dEluZGljZXMuaW5jbHVkZXMoc2UpKXtsZXQgQj1ZLnN5bWJvbFRvSW5kaWNlcy5nZXQoTSk7aWYoQj09PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHN5bWJvbCBlcnJvclwiKTtCLmZvckVhY2godGU9Pnt5LnB1c2goYCR7dVtzZV0uaW5kaWNlc1NldChgaW5wdXQke3NlfUluZGljZXNgLHRlLHAuaW5kaWNlc0dldChcIm91dHB1dEluZGljZXNcIixOKSl9YCl9KX19KX1lbHNlIHIubGhzLmZvckVhY2goKE4sWSk9PntpZihVLmlucHV0SW5kaWNlcy5pbmNsdWRlcyhZKSl7bGV0IHNlPU4uc3ltYm9sVG9JbmRpY2VzLmdldChNKTtpZihzZT09PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHN5bWJvbCBlcnJvclwiKTtzZS5mb3JFYWNoKEI9Pnt4LnB1c2goYCR7dVtZXS5pbmRpY2VzU2V0KGBpbnB1dCR7WX1JbmRpY2VzYCxCLGAke019YCl9YCl9KSxTLnB1c2goYHByb2QgKj0gJHt1W1ldLmdldEJ5SW5kaWNlcyhgaW5wdXQke1l9SW5kaWNlc2ApfTtgKX19KSxULnB1c2goYGZvcih2YXIgJHtNfTogdTMyID0gMDsgJHtNfSA8IHVuaWZvcm1zLiR7ZXUoTSl9OyAke019KyspIHtgKSxDLnB1c2goXCJ9XCIpfSk7bGV0IE89RT9bLi4ueSxgbGV0IHN1bSA9ICR7dS5tYXAoKFUsTSk9PlUuZ2V0QnlJbmRpY2VzKGBpbnB1dCR7TX1JbmRpY2VzYCkpLmpvaW4oXCIgKiBcIil9O2BdOlsuLi55LF8sLi4uVCwuLi54LHcsLi4uUyx2LC4uLkNdO3JldHVybmBcXG4gICAgICAgICAgICAke2QucmVnaXN0ZXJVbmlmb3JtcyhtLm1hcChVPT4oe25hbWU6YCR7ZXUoVSl9YCx0eXBlOlwidTMyXCJ9KSkpLnJlZ2lzdGVyVW5pZm9ybShcIm91dHB1dFNpemVcIixcInUzMlwiKS5kZWNsYXJlVmFyaWFibGVzKC4uLnUscCl9XFxuXFxuICAgICAgICAgICAgJHtkLm1haW5TdGFydCgpfVxcbiAgICAgICAgICAgICR7ZC5ndWFyZEFnYWluc3RPdXRPZkJvdW5kc1dvcmtncm91cFNpemVzKFwidW5pZm9ybXMub3V0cHV0U2l6ZVwiKX1cXG4gICAgICAgICAgICB2YXIgb3V0cHV0SW5kaWNlcyA9ICR7cC5vZmZzZXRUb0luZGljZXMoXCJnbG9iYWxfaWR4XCIpfTtcXG4gICAgICAgICAgICAke3UubWFwKChVLE0pPT5gdmFyIGlucHV0JHtNfUluZGljZXM6ICR7dVtNXS50eXBlLmluZGljZXN9O2ApLmpvaW4oYFxcbmApfVxcbiAgICAgICAgICAgICR7Ty5qb2luKGBcXG5gKX07XFxuICAgICAgICAgICAgJHtwLnNldEJ5T2Zmc2V0KFwiZ2xvYmFsX2lkeFwiLFwic3VtXCIpfTtcXG4gICAgICAgICAgfWB9O3JldHVybntuYW1lOlwiRWluc3VtXCIsc2hhZGVyQ2FjaGU6e2hpbnQ6ci5lcXVhdGlvbixpbnB1dERlcGVuZGVuY2llczplLm1hcCgoKT0+XCJyYW5rXCIpfSxnZXRSdW5EYXRhOigpPT57bGV0IGQ9bS5maWx0ZXIodz0+ci5zeW1ib2xUb0luZm8uaGFzKHcpKS5tYXAodz0+KHt0eXBlOlwidWludDMyXCIsZGF0YTpyLnN5bWJvbFRvSW5mby5nZXQodyk/LmRpbVZhbHVlfHwwfSkpO2QucHVzaCh7dHlwZTpcInVpbnQzMlwiLGRhdGE6YX0pO2xldCB5PWUubWFwKCh3LF8pPT5bLi4uRyh3KV0pLnJlZHVjZSgodyxfKT0+dy5jb25jYXQoXyksZCk7cmV0dXJuIHkucHVzaCguLi5HKG8pKSx7b3V0cHV0czpbe2RpbXM6byxkYXRhVHlwZTp0fV0sZGlzcGF0Y2hHcm91cDp7eDpNYXRoLmNlaWwoYS82NCl9LHByb2dyYW1Vbmlmb3Jtczp5fX0sZ2V0U2hhZGVyU291cmNlOmh9fSx0dT0oZSx0KT0+e2xldCByPW5ldyB6byhlLmlucHV0cyx0LmVxdWF0aW9uKSxvPXIub3V0cHV0RGltcyxpPWUuaW5wdXRzLm1hcCgodSxhKT0+dS5kaW1zKTtlLmNvbXB1dGUoaGMoaSxlLmlucHV0c1swXS5kYXRhVHlwZSxyLG8pKX0scnU9ZT0+e2xldCB0PWUuZXF1YXRpb24ucmVwbGFjZSgvXFxcXHMrL2csXCJcIik7cmV0dXJuIHhlKHtlcXVhdGlvbjp0fSl9fSk7dmFyIGdjLG91LHljLGJjLGl1LGF1PVEoKCk9PntcInVzZSBzdHJpY3RcIjtWZSgpO0NlKCk7X2UoKTtnYz1lPT57aWYoIWV8fGUubGVuZ3RoIT09Mil0aHJvdyBuZXcgRXJyb3IoXCJFeHBhbmQgcmVxdWlyZXMgMiBpbnB1dC5cIik7bGV0IHQ9ZVswXS5kaW1zLHI9QXJyYXkuZnJvbShlWzFdLmdldEJpZ0ludDY0QXJyYXkoKSxOdW1iZXIpLG89ci5sZW5ndGg8dC5sZW5ndGg/MDpyLmxlbmd0aC10Lmxlbmd0aCxpPXQubGVuZ3RoPHIubGVuZ3RoPzA6dC5sZW5ndGgtci5sZW5ndGg7Zm9yKDtvPHIubGVuZ3RoJiZpPHQubGVuZ3RoOysrbywrK2kpaWYocltvXSE9PXRbaV0mJnJbb10hPT0xJiZ0W2ldIT09MSl0aHJvdyBuZXcgRXJyb3IoXCJFeHBhbmQgcmVxdWlyZXMgc2hhcGUgdG8gYmUgYnJvYWRjYXN0YWJsZSB0byBpbnB1dFwiKX0sb3U9KGUsdCk9PntsZXQgcj1lLmxlbmd0aC10Lmxlbmd0aCxvPVtdO2ZvcihsZXQgaT0wO2k8cjsrK2kpby5wdXNoKGVbaV0pO2ZvcihsZXQgaT0wO2k8dC5sZW5ndGg7KytpKW8ucHVzaCh0W2ldPT09MT9lW2krcl06dFtpXSk7cmV0dXJuIG99LHljPShlLHQpPT5lLmxlbmd0aD50Lmxlbmd0aD9vdShlLHQpOm91KHQsZSksYmM9ZT0+e2xldCB0PWVbMF0uZGltcyxyPUFycmF5LmZyb20oZVsxXS5nZXRCaWdJbnQ2NEFycmF5KCksTnVtYmVyKSxvPXljKHQsciksaT1lWzBdLmRhdGFUeXBlLHU9aT09PTk/NDoxLGE9TWF0aC5jZWlsKFcuc2l6ZShvKS91KSxwPWg9PntsZXQgZD1WKFwiaW5wdXRcIixpLHQubGVuZ3RoLHUpLHk9SihcIm91dHB1dFwiLGksby5sZW5ndGgsdSksdztpZihpPT09OSl7bGV0IF89KHYseCxUPVwiXCIpPT5gXFxuICAgICAgICAgIGxldCBvdXRwdXRJbmRpY2VzJHt4fSA9ICR7eS5vZmZzZXRUb0luZGljZXMoYG91dHB1dE9mZnNldCArICR7eH11YCl9O1xcbiAgICAgICAgICBsZXQgb2Zmc2V0JHt4fSA9ICR7ZC5icm9hZGNhc3RlZEluZGljZXNUb09mZnNldChgb3V0cHV0SW5kaWNlcyR7eH1gLHkpfTtcXG4gICAgICAgICAgbGV0IGluZGV4JHt4fSA9IG9mZnNldCR7eH0gLyA0dTtcXG4gICAgICAgICAgbGV0IGNvbXBvbmVudCR7eH0gPSBvZmZzZXQke3h9ICUgNHU7XFxuICAgICAgICAgICR7dn1bJHt4fV0gPSAke1R9KCR7ZC5nZXRCeU9mZnNldChgaW5kZXgke3h9YCl9W2NvbXBvbmVudCR7eH1dKTtcXG4gICAgICAgIGA7dz1gXFxuICAgICAgICBsZXQgb3V0cHV0T2Zmc2V0ID0gZ2xvYmFsX2lkeCAqICR7dX07XFxuICAgICAgICB2YXIgZGF0YSA9IHZlYzQ8dTMyPigwKTtcXG4gICAgICAgICR7XyhcImRhdGFcIiwwLFwidTMyXCIpfVxcbiAgICAgICAgJHtfKFwiZGF0YVwiLDEsXCJ1MzJcIil9XFxuICAgICAgICAke18oXCJkYXRhXCIsMixcInUzMlwiKX1cXG4gICAgICAgICR7XyhcImRhdGFcIiwzLFwidTMyXCIpfVxcbiAgICAgICAgJHt5LnNldEJ5T2Zmc2V0KFwiZ2xvYmFsX2lkeFwiLFwiZGF0YVwiKX1cXG4gICAgICB9YH1lbHNlIHc9YFxcbiAgICAgICAgbGV0IG91dHB1dEluZGljZXMgPSAke3kub2Zmc2V0VG9JbmRpY2VzKFwiZ2xvYmFsX2lkeFwiKX07XFxuICAgICAgICBsZXQgaW5wdXRPZmZzZXQgPSAke2QuYnJvYWRjYXN0ZWRJbmRpY2VzVG9PZmZzZXQoXCJvdXRwdXRJbmRpY2VzXCIseSl9O1xcbiAgICAgICAgJHt5LnNldEJ5T2Zmc2V0KFwiZ2xvYmFsX2lkeFwiLGQuZ2V0QnlPZmZzZXQoXCJpbnB1dE9mZnNldFwiKSl9XFxuICAgICAgfWA7cmV0dXJuYFxcbiAgICAke2gucmVnaXN0ZXJVbmlmb3JtKFwidmVjX3NpemVcIixcInUzMlwiKS5kZWNsYXJlVmFyaWFibGVzKGQseSl9XFxuICAgICR7aC5tYWluU3RhcnQoKX1cXG4gICAgJHtoLmd1YXJkQWdhaW5zdE91dE9mQm91bmRzV29ya2dyb3VwU2l6ZXMoXCJ1bmlmb3Jtcy52ZWNfc2l6ZVwiKX1cXG4gICAgJHt3fWB9LG09W3t0eXBlOlwidWludDMyXCIsZGF0YTphfSwuLi5HKHQpLC4uLkcobyldO3JldHVybntuYW1lOlwiRXhwYW5kXCIsc2hhZGVyQ2FjaGU6e2hpbnQ6YCR7by5sZW5ndGh9YCxpbnB1dERlcGVuZGVuY2llczpbXCJyYW5rXCJdfSxnZXRTaGFkZXJTb3VyY2U6cCxnZXRSdW5EYXRhOigpPT4oe291dHB1dHM6W3tkaW1zOm8sZGF0YVR5cGU6ZVswXS5kYXRhVHlwZX1dLGRpc3BhdGNoR3JvdXA6e3g6TWF0aC5jZWlsKGEvNjQpfSxwcm9ncmFtVW5pZm9ybXM6bX0pfX0saXU9ZT0+e2djKGUuaW5wdXRzKSxlLmNvbXB1dGUoYmMoZS5pbnB1dHMpLHtpbnB1dHM6WzBdfSl9fSk7dmFyIHdjLHZjLHN1LHV1LGx1PVEoKCk9PntcInVzZSBzdHJpY3RcIjtWZSgpO0NlKCk7WWUoKTtfZSgpO3djPWU9PntpZighZXx8ZS5sZW5ndGghPT0yKXRocm93IG5ldyBFcnJvcihcIkdhdGhlciByZXF1aXJlcyAyIGlucHV0cy5cIil9LHZjPShlLHQpPT57bGV0IHI9ZVswXS5kaW1zLG89ZVsxXS5kaW1zLGk9ci5sZW5ndGgsdT1XLm5vcm1hbGl6ZUF4aXModC5heGlzLGkpLGE9ci5zbGljZSgwKTthLnNwbGljZSh1LDEsLi4ubyk7bGV0IHA9clt1XSxtPWVbMF0uZGF0YVR5cGU9PT05PzQ6MSxoPU1hdGguY2VpbChXLnNpemUoYSkvbSksZD1be3R5cGU6XCJ1aW50MzJcIixkYXRhOmh9LHt0eXBlOlwiaW50MzJcIixkYXRhOnB9LHt0eXBlOlwidWludDMyXCIsZGF0YTp1fSwuLi5HKGVbMF0uZGltcyksLi4uRyhlWzFdLmRpbXMpLC4uLkcoYSldLHk9dz0+e2xldCBfPVYoXCJkYXRhXCIsZVswXS5kYXRhVHlwZSxlWzBdLmRpbXMubGVuZ3RoLG0pLHY9VihcImlucHV0SW5kaWNlc1wiLGVbMV0uZGF0YVR5cGUsZVsxXS5kaW1zLmxlbmd0aCkseD1KKFwib3V0cHV0XCIsZVswXS5kYXRhVHlwZSxhLmxlbmd0aCxtKSxUPVM9PntsZXQgRT1vLmxlbmd0aCxPPWB2YXIgaW5kaWNlc0luZGljZXMke1N9ICA9ICR7di50eXBlLmluZGljZXN9KDApO2A7Zm9yKGxldCBVPTA7VTxFO1UrKylPKz1gJHtFPjE/YGluZGljZXNJbmRpY2VzJHtTfVske1V9XWA6YGluZGljZXNJbmRpY2VzJHtTfWB9ID0gJHthLmxlbmd0aD4xP2BvdXRwdXRJbmRpY2VzJHtTfVt1bmlmb3Jtcy5heGlzICsgJHtVfV1gOmBvdXRwdXRJbmRpY2VzJHtTfWB9O2A7Tys9YFxcbiAgICAgICAgICB2YXIgaWR4JHtTfSA9ICR7di5nZXRCeUluZGljZXMoYGluZGljZXNJbmRpY2VzJHtTfWApfTtcXG4gICAgICAgICAgaWYgKGlkeCR7U30gPCAwKSB7XFxuICAgICAgICAgICAgaWR4JHtTfSA9IGlkeCR7U30gKyB1bmlmb3Jtcy5heGlzRGltTGltaXQ7XFxuICAgICAgICAgIH1cXG4gICAgICAgICAgdmFyIGRhdGFJbmRpY2VzJHtTfSA9ICR7Xy50eXBlLmluZGljZXN9KDApO1xcbiAgICAgICAgYDtmb3IobGV0IFU9MCxNPTA7VTxpO1UrKylVPT09dT8oTys9YCR7aT4xP2BkYXRhSW5kaWNlcyR7U31bJHtVfV1gOmBkYXRhSW5kaWNlcyR7U31gfSA9IHUzMihpZHgke1N9KTtgLE0rPUUpOihPKz1gJHtpPjE/YGRhdGFJbmRpY2VzJHtTfVske1V9XWA6YGRhdGFJbmRpY2VzJHtTfWB9ID0gJHthLmxlbmd0aD4xP2BvdXRwdXRJbmRpY2VzJHtTfVske019XWA6YG91dHB1dEluZGljZXMke1N9YH07YCxNKyspO3JldHVybiBPfSxDO2lmKGVbMF0uZGF0YVR5cGU9PT05KXtsZXQgUz0oRSxPLFU9XCJcIik9PmBcXG4gICAgICAgICAgbGV0IG91dHB1dEluZGljZXMke099ID0gJHt4Lm9mZnNldFRvSW5kaWNlcyhgb3V0cHV0T2Zmc2V0ICsgJHtPfXVgKX07XFxuICAgICAgICAgICR7VChPKX07XFxuICAgICAgICAgIGxldCBvZmZzZXQke099ID0gJHtfLmluZGljZXNUb09mZnNldChgZGF0YUluZGljZXMke099YCl9O1xcbiAgICAgICAgICBsZXQgaW5kZXgke099ID0gb2Zmc2V0JHtPfSAvIDR1O1xcbiAgICAgICAgICBsZXQgY29tcG9uZW50JHtPfSA9IG9mZnNldCR7T30gJSA0dTtcXG4gICAgICAgICAgJHtFfVske099XSA9ICR7VX0oJHtfLmdldEJ5T2Zmc2V0KGBpbmRleCR7T31gKX1bY29tcG9uZW50JHtPfV0pO1xcbiAgICAgICAgYDtDPWBcXG4gICAgICAgIGxldCBvdXRwdXRPZmZzZXQgPSBnbG9iYWxfaWR4ICogJHttfTtcXG4gICAgICAgIHZhciB2YWx1ZSA9IHZlYzQ8dTMyPigwKTtcXG4gICAgICAgICR7UyhcInZhbHVlXCIsMCxcInUzMlwiKX1cXG4gICAgICAgICR7UyhcInZhbHVlXCIsMSxcInUzMlwiKX1cXG4gICAgICAgICR7UyhcInZhbHVlXCIsMixcInUzMlwiKX1cXG4gICAgICAgICR7UyhcInZhbHVlXCIsMyxcInUzMlwiKX1cXG4gICAgICAgICR7eC5zZXRCeU9mZnNldChcImdsb2JhbF9pZHhcIixcInZhbHVlXCIpfVxcbiAgICAgIGB9ZWxzZSBDPWBcXG4gICAgICBsZXQgb3V0cHV0SW5kaWNlcyA9ICR7eC5vZmZzZXRUb0luZGljZXMoXCJnbG9iYWxfaWR4XCIpfTtcXG4gICAgICAke1QoXCJcIil9O1xcbiAgICAgIGxldCB2YWx1ZSA9ICR7Xy5nZXRCeUluZGljZXMoXCJkYXRhSW5kaWNlc1wiKX07XFxuICAgICAgJHt4LnNldEJ5T2Zmc2V0KFwiZ2xvYmFsX2lkeFwiLFwidmFsdWVcIil9O1xcbiAgICAgIGA7cmV0dXJuYFxcbiAgICAgICR7dy5yZWdpc3RlclVuaWZvcm0oXCJvdXRwdXRTaXplXCIsXCJ1MzJcIikucmVnaXN0ZXJVbmlmb3JtKFwiYXhpc0RpbUxpbWl0XCIsXCJpMzJcIikucmVnaXN0ZXJVbmlmb3JtKFwiYXhpc1wiLFwidTMyXCIpLmRlY2xhcmVWYXJpYWJsZXMoXyx2LHgpfVxcbiAgICAgICR7dy5tYWluU3RhcnQoKX1cXG4gICAgICAgICR7dy5ndWFyZEFnYWluc3RPdXRPZkJvdW5kc1dvcmtncm91cFNpemVzKFwidW5pZm9ybXMub3V0cHV0U2l6ZVwiKX1cXG4gICAgICAgICR7Q31cXG4gICAgICB9YH07cmV0dXJue25hbWU6XCJHYXRoZXJcIixzaGFkZXJDYWNoZTp7aGludDp0LmNhY2hlS2V5LGlucHV0RGVwZW5kZW5jaWVzOltcInJhbmtcIixcInJhbmtcIl19LGdldFJ1bkRhdGE6KCk9Pih7b3V0cHV0czpbe2RpbXM6YSxkYXRhVHlwZTplWzBdLmRhdGFUeXBlfV0sZGlzcGF0Y2hHcm91cDp7eDpNYXRoLmNlaWwoaC82NCl9LHByb2dyYW1Vbmlmb3JtczpkfSksZ2V0U2hhZGVyU291cmNlOnl9fSxzdT1lPT54ZSh7YXhpczplLmF4aXN9KSx1dT0oZSx0KT0+e2xldCByPWUuaW5wdXRzO3djKHIpLGUuY29tcHV0ZSh2YyhlLmlucHV0cyx0KSl9fSk7dmFyICRjLF9jLGR1LGN1LHB1PVEoKCk9PntcInVzZSBzdHJpY3RcIjtDZSgpO1llKCk7X2UoKTskYz1lPT57aWYoIWV8fGUubGVuZ3RoIT09Mil0aHJvdyBuZXcgRXJyb3IoXCJHYXRoZXJFbGVtZW50cyByZXF1aXJlcyAyIGlucHV0cy5cIik7aWYoZVswXS5kaW1zLmxlbmd0aDwxKXRocm93IG5ldyBFcnJvcihcIkdhdGhlckVsZW1lbnRzIHJlcXVpcmVzIHRoYXQgdGhlIGRhdGEgaW5wdXQgYmUgcmFuayA+PSAxLlwiKTtpZihlWzBdLmRpbXMubGVuZ3RoIT09ZVsxXS5kaW1zLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYEdhdGhlckVsZW1lbnRzIHJlcXVpcmVzIHRoYXQgdGhlIGRhdGEgaW5wdXQgYW5kXFxuICAgICAgICAgICAgICAgICAgICAgaW5kaWNlcyBpbnB1dCB0ZW5zb3JzIGJlIG9mIHNhbWUgcmFuay5gKX0sX2M9KGUsdCk9PntsZXQgcj1lWzBdLmRpbXMsbz1lWzBdLmRhdGFUeXBlLGk9ci5sZW5ndGgsdT1lWzFdLmRpbXMsYT1lWzFdLmRhdGFUeXBlLHA9Vy5ub3JtYWxpemVBeGlzKHQuYXhpcyxpKSxtPXJbcF0saD11LnNsaWNlKDApLGQ9Vy5zaXplKGgpLHk9VihcImlucHV0XCIsbyxpKSx3PVYoXCJpbmRpY2VzSW5wdXRcIixhLHUubGVuZ3RoKSxfPUooXCJvdXRwdXRcIixvLGgubGVuZ3RoKSx2PVt7dHlwZTpcInVpbnQzMlwiLGRhdGE6ZH0se3R5cGU6XCJpbnQzMlwiLGRhdGE6bX0se3R5cGU6XCJ1aW50MzJcIixkYXRhOnB9XTtyZXR1cm4gdi5wdXNoKC4uLkcocikpLHYucHVzaCguLi5HKHUpKSx2LnB1c2goLi4uRyhoKSkse25hbWU6XCJHYXRoZXJFbGVtZW50c1wiLHNoYWRlckNhY2hlOntpbnB1dERlcGVuZGVuY2llczpbXCJyYW5rXCIsXCJyYW5rXCJdfSxnZXRSdW5EYXRhOigpPT4oe291dHB1dHM6W3tkaW1zOmgsZGF0YVR5cGU6ZVswXS5kYXRhVHlwZX1dLGRpc3BhdGNoR3JvdXA6e3g6TWF0aC5jZWlsKGQvNjQpfSxwcm9ncmFtVW5pZm9ybXM6dn0pLGdldFNoYWRlclNvdXJjZTpDPT5gXFxuICAgICAgJHtDLnJlZ2lzdGVyVW5pZm9ybShcIm91dHB1dFNpemVcIixcInUzMlwiKS5yZWdpc3RlclVuaWZvcm0oXCJheGlzRGltTGltaXRcIixcImkzMlwiKS5yZWdpc3RlclVuaWZvcm0oXCJheGlzXCIsXCJ1MzJcIikuZGVjbGFyZVZhcmlhYmxlcyh5LHcsXyl9XFxuICAgICAgJHtDLm1haW5TdGFydCgpfVxcbiAgICAgICR7Qy5ndWFyZEFnYWluc3RPdXRPZkJvdW5kc1dvcmtncm91cFNpemVzKFwidW5pZm9ybXMub3V0cHV0U2l6ZVwiKX1cXG5cXG4gICAgICBsZXQgb3V0cHV0SW5kaWNlcyA9ICR7Xy5vZmZzZXRUb0luZGljZXMoXCJnbG9iYWxfaWR4XCIpfTtcXG5cXG4gICAgICB2YXIgaWR4ID0gJHt3LmdldEJ5T2Zmc2V0KFwiZ2xvYmFsX2lkeFwiKX07XFxuICAgICAgaWYgKGlkeCA8IDApIHtcXG4gICAgICAgIGlkeCA9IGlkeCArIHVuaWZvcm1zLmF4aXNEaW1MaW1pdDtcXG4gICAgICB9XFxuICAgICAgdmFyIGlucHV0SW5kaWNlcyA9ICR7eS50eXBlLmluZGljZXN9KG91dHB1dEluZGljZXMpO1xcbiAgICAgICR7eS5pbmRpY2VzU2V0KFwiaW5wdXRJbmRpY2VzXCIsXCJ1bmlmb3Jtcy5heGlzXCIsXCJ1MzIoaWR4KVwiKX07XFxuICAgICAgbGV0IHZhbHVlID0gJHt5LmdldEJ5SW5kaWNlcyhcImlucHV0SW5kaWNlc1wiKX07XFxuXFxuICAgICAgJHtfLnNldEJ5T2Zmc2V0KFwiZ2xvYmFsX2lkeFwiLFwidmFsdWVcIil9O1xcbiAgfWB9fSxkdT1lPT54ZSh7YXhpczplLmF4aXN9KSxjdT0oZSx0KT0+e2xldCByPWUuaW5wdXRzOyRjKHIpLGUuY29tcHV0ZShfYyhlLmlucHV0cyx0KSl9fSk7dmFyIFNjLHhjLG11LGZ1LGh1PVEoKCk9PntcInVzZSBzdHJpY3RcIjtDZSgpO19lKCk7U2M9ZT0+e2lmKCFlKXRocm93IG5ldyBFcnJvcihcIklucHV0IGlzIG1pc3NpbmdcIik7aWYoZS5sZW5ndGg8Mnx8ZS5sZW5ndGg+Myl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhaWQgaW5wdXQgbnVtYmVyLlwiKTtpZihlLmxlbmd0aD09PTMmJmVbMl0uZGltcy5sZW5ndGg+Mil0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGlucHV0IHNoYXBlIG9mIENcIik7aWYoZVswXS5kYXRhVHlwZSE9PWVbMV0uZGF0YVR5cGV8fGUubGVuZ3RoPT09MyYmZVswXS5kYXRhVHlwZSE9PWVbMl0uZGF0YVR5cGUpdGhyb3cgbmV3IEVycm9yKFwiSW5wdXQgdHlwZXMgYXJlIG1pc21hdGNoZWRcIil9LHhjPShlLHQpPT57bGV0IHI9ZVswXS5kaW1zLnNsaWNlKCksbz1lWzFdLmRpbXMuc2xpY2UoKSxbaSx1LGFdPVNuLmdldFNoYXBlT2ZHZW1tUmVzdWx0KHIsdC50cmFuc0Esbyx0LnRyYW5zQixlLmxlbmd0aD09PTM/ZVsyXS5kaW1zOnZvaWQgMCkscD1baSx1XTtpZighcCl0aHJvdyBuZXcgRXJyb3IoXCJDYW5cXCd0IHVzZSBnZW1tIG9uIHRoZSBnaXZlbiB0ZW5zb3JzXCIpO2xldCBtPVcuc2l6ZShwKSxoPVt7dHlwZTpcInVpbnQzMlwiLGRhdGE6bX0se3R5cGU6XCJ1aW50MzJcIixkYXRhOml9LHt0eXBlOlwidWludDMyXCIsZGF0YTp1fSx7dHlwZTpcInVpbnQzMlwiLGRhdGE6YX0se3R5cGU6XCJmbG9hdDMyXCIsZGF0YTp0LmFscGhhfSx7dHlwZTpcImZsb2F0MzJcIixkYXRhOnQuYmV0YX1dLGQ9W1widHlwZVwiLFwidHlwZVwiXTtlLmxlbmd0aD09PTMmJihoLnB1c2goLi4uRyhlWzJdLmRpbXMpKSxkLnB1c2goXCJyYW5rXCIpKSxoLnB1c2goLi4uRyhwKSk7bGV0IHk9dz0+e2xldCBfPVwiXCI7dC50cmFuc0EmJnQudHJhbnNCP189XCJ2YWx1ZSArPSBhW2sgKiB1bmlmb3Jtcy5NICsgbV0gKiBiW24gKiB1bmlmb3Jtcy5LICsga107XCI6dC50cmFuc0EmJiF0LnRyYW5zQj9fPVwidmFsdWUgKz0gYVtrICogdW5pZm9ybXMuTSArIG1dICogYltrICogdW5pZm9ybXMuTiArIG5dO1wiOiF0LnRyYW5zQSYmdC50cmFuc0I/Xz1cInZhbHVlICs9IGFbbSAqIHVuaWZvcm1zLksgKyBrXSAqIGJbbiAqIHVuaWZvcm1zLksgKyBrXTtcIjohdC50cmFuc0EmJiF0LnRyYW5zQiYmKF89XCJ2YWx1ZSArPSBhW20gKiB1bmlmb3Jtcy5LICsga10gKiBiW2sgKiB1bmlmb3Jtcy5OICsgbl07XCIpO2xldCB2PXQuYWxwaGE9PT0xP1wiXCI6XCJ2YWx1ZSAqPSB1bmlmb3Jtcy5hbHBoYTtcIix4PVYoXCJhXCIsZVswXS5kYXRhVHlwZSxlWzBdLmRpbXMpLFQ9VihcImJcIixlWzFdLmRhdGFUeXBlLGVbMV0uZGltcyksQz14LnR5cGUudmFsdWUsUz1udWxsLEU9W3gsVF07ZS5sZW5ndGg9PT0zJiYoUz1WKFwiY1wiLGVbMl0uZGF0YVR5cGUsZVsyXS5kaW1zLmxlbmd0aCksRS5wdXNoKFMpKTtsZXQgTz1KKFwib3V0cHV0XCIsZVswXS5kYXRhVHlwZSxwLmxlbmd0aCk7RS5wdXNoKE8pO2xldCBVPVt7bmFtZTpcIm91dHB1dF9zaXplXCIsdHlwZTpcInUzMlwifSx7bmFtZTpcIk1cIix0eXBlOlwidTMyXCJ9LHtuYW1lOlwiTlwiLHR5cGU6XCJ1MzJcIn0se25hbWU6XCJLXCIsdHlwZTpcInUzMlwifSx7bmFtZTpcImFscGhhXCIsdHlwZTpcImYzMlwifSx7bmFtZTpcImJldGFcIix0eXBlOlwiZjMyXCJ9XTtyZXR1cm5gXFxuICAke3cucmVnaXN0ZXJVbmlmb3JtcyhVKS5kZWNsYXJlVmFyaWFibGVzKC4uLkUpfVxcblxcbiAgJHt3Lm1haW5TdGFydCgpfVxcbiAgICAke3cuZ3VhcmRBZ2FpbnN0T3V0T2ZCb3VuZHNXb3JrZ3JvdXBTaXplcyhcInVuaWZvcm1zLm91dHB1dF9zaXplXCIpfVxcblxcbiAgICBsZXQgbSA9IGdsb2JhbF9pZHggLyB1bmlmb3Jtcy5OO1xcbiAgICBsZXQgbiA9IGdsb2JhbF9pZHggJSB1bmlmb3Jtcy5OO1xcblxcbiAgICB2YXIgdmFsdWUgPSAke0N9KDApO1xcbiAgICBmb3IgKHZhciBrOiB1MzIgPSAwdTsgayA8IHVuaWZvcm1zLks7IGsrKykge1xcbiAgICAgICR7X31cXG4gICAgfVxcblxcbiAgICAke3Z9XFxuICAgICR7KCgpPT5TIT1udWxsP2BsZXQgY09mZnNldCA9ICR7Uy5icm9hZGNhc3RlZEluZGljZXNUb09mZnNldChcInZlYzIobSwgbilcIixPKX07IHZhbHVlICs9ICR7Q30odW5pZm9ybXMuYmV0YSkgKiAke1MuZ2V0QnlPZmZzZXQoXCJjT2Zmc2V0XCIpfTtgOlwiXCIpKCl9XFxuICAgIG91dHB1dFtnbG9iYWxfaWR4XSA9IHZhbHVlO1xcbiAgfWB9O3JldHVybntuYW1lOlwiR2VtbVwiLHNoYWRlckNhY2hlOntoaW50OmAke3QuY2FjaGVLZXl9YCxpbnB1dERlcGVuZGVuY2llczpkfSxnZXRSdW5EYXRhOigpPT4oe291dHB1dHM6W3tkaW1zOnAsZGF0YVR5cGU6ZVswXS5kYXRhVHlwZX1dLGRpc3BhdGNoR3JvdXA6e3g6TWF0aC5jZWlsKG0vNjQpfSxwcm9ncmFtVW5pZm9ybXM6aH0pLGdldFNoYWRlclNvdXJjZTp5fX0sbXU9ZT0+e2xldCB0PWUudHJhbnNBLHI9ZS50cmFuc0Isbz1lLmFscGhhLGk9ZS5iZXRhO3JldHVybnt0cmFuc0E6dCx0cmFuc0I6cixhbHBoYTpvLGJldGE6aSxjYWNoZUtleTpgJHtlLnRyYW5zQX07JHtlLnRyYW5zQn07JHtlLmFscGhhPT09MX1gfX0sZnU9KGUsdCk9PntTYyhlLmlucHV0cyksZS5jb21wdXRlKHhjKGUuaW5wdXRzLHQpKX19KTt2YXIgQ2MsQWMsSWMsZ3UseXU9USgoKT0+e1widXNlIHN0cmljdFwiO1ZlKCk7Q2UoKTtfZSgpO0NjPShlLHQpPT57bGV0IHI9ZVswXS5kaW1zLG89cixpPTIsdT1XLnNpemVUb0RpbWVuc2lvbihyLGkpLGE9Vy5zaXplRnJvbURpbWVuc2lvbihyLGkpLHA9SGUoYSksbT1hL3AsaD1bclswXSxyWzFdLG1dLGQ9W1wicmFua1wiLFwidHlwZVwiLFwidHlwZVwiXSx5PVt7dHlwZTpcInVpbnQzMlwiLGRhdGE6YX0se3R5cGU6XCJ1aW50MzJcIixkYXRhOm19XTt5LnB1c2goLi4uRyhoKSwuLi5HKGgpKTtsZXQgdz1fPT57bGV0IHY9VihcInhcIixlWzBdLmRhdGFUeXBlLGgubGVuZ3RoLHApLHg9VihcInNjYWxlXCIsZVsxXS5kYXRhVHlwZSxlWzFdLmRpbXMpLFQ9VihcImJpYXNcIixlWzJdLmRhdGFUeXBlLGVbMl0uZGltcyksQz1KKFwib3V0cHV0XCIsZVswXS5kYXRhVHlwZSxoLmxlbmd0aCxwKSxTPVt2LHgsVCxDXSxFPXYudHlwZS52YWx1ZSxPPXA9PT0xP1wiZjMyXCI6YHZlYyR7cH08ZjMyPmAsVT02NCxNPVt7bmFtZTpcIm5vcm1TaXplXCIsdHlwZTpcInUzMlwifSx7bmFtZTpcIm5vcm1QYWNrZWRTaXplXCIsdHlwZTpcInUzMlwifV07cmV0dXJuYFxcbiAgdmFyPHdvcmtncm91cD4gbWVhblNoYXJlZCA6IGYzMjtcXG4gIHZhcjx3b3JrZ3JvdXA+IHNxdWFyZWROb3JtU2hhcmVkIDogZjMyO1xcbiAgdmFyPHdvcmtncm91cD4gd29ya2dyb3VwU2hhcmVkIDogYXJyYXk8JHtPfSwgJHtVfT47XFxuICBjb25zdCB3b3JrZ3JvdXBTaXplID0gJHtVfXU7XFxuICAke18ucmVnaXN0ZXJVbmlmb3JtcyhNKS5kZWNsYXJlVmFyaWFibGVzKC4uLlMpfVxcbiAgJHtfLm1haW5TdGFydChVKX1cXG4gICAgbGV0IG5vcm0gPSBnbG9iYWxfaWR4IC8gd29ya2dyb3VwU2l6ZTtcXG4gICAgbGV0IGJhdGNoID0gbm9ybSAvIHVuaWZvcm1zLnhfc2hhcGVbMV07XFxuICAgIGxldCBjaGFubmVsID0gbm9ybSAlIHVuaWZvcm1zLnhfc2hhcGVbMV07XFxuICAgIGxldCBsb2NhbEluZGV4ID0gbG9jYWxfaWQueDtcXG5cXG4gICAgLy8gaW5pdGlhbGl6ZSB3b3JrZ3JvdXAgbWVtb3J5XFxuICAgIHZhciBpbml0aWFsID0gJHtPfSgwKTtcXG4gICAgZm9yICh2YXIgaCA9IGxvY2FsSW5kZXg7IGggPCB1bmlmb3Jtcy5ub3JtUGFja2VkU2l6ZTsgaCArPSB3b3JrZ3JvdXBTaXplKSB7XFxuICAgICAgaW5pdGlhbCA9IGluaXRpYWwgKyAke099KCR7di5nZXQoXCJiYXRjaFwiLFwiY2hhbm5lbFwiLFwiaFwiKX0pO1xcbiAgICB9XFxuICAgIHdvcmtncm91cFNoYXJlZFtsb2NhbEluZGV4XSA9IGluaXRpYWw7XFxuICAgIHdvcmtncm91cEJhcnJpZXIoKTtcXG5cXG4gICAgLy8gQ2FsY3VsYXRlIHRoZSBtZWFuIG9mIGN1cnJlbnQgY2hhbm5lbCBkYXRhLlxcbiAgICBmb3IgKHZhciBjdXJyU2l6ZSA9IHdvcmtncm91cFNpemUgPj4gMTsgIGN1cnJTaXplID4gMDsgY3VyclNpemUgPSBjdXJyU2l6ZSA+PiAxKSB7XFxuICAgICAgaWYgKGxvY2FsSW5kZXggPCBjdXJyU2l6ZSkge1xcbiAgICAgICAgd29ya2dyb3VwU2hhcmVkW2xvY2FsSW5kZXhdID0gd29ya2dyb3VwU2hhcmVkW2xvY2FsSW5kZXhdICsgd29ya2dyb3VwU2hhcmVkW2xvY2FsSW5kZXggKyBjdXJyU2l6ZV07XFxuICAgICAgfVxcbiAgICAgIHdvcmtncm91cEJhcnJpZXIoKTtcXG4gICAgfVxcbiAgICBpZiAobG9jYWxJbmRleCA9PSAwKSB7XFxuICAgICAgbWVhblNoYXJlZCA9ICR7dXQoXCJ3b3JrZ3JvdXBTaGFyZWRbMF1cIixwKX0gLyBmMzIodW5pZm9ybXMubm9ybVNpemUpO1xcbiAgICB9XFxuICAgIHdvcmtncm91cEJhcnJpZXIoKTtcXG5cXG4gICAgLy8gcmVpbml0aWFsaXplIHdvcmtncm91cCBtZW1vcnkuXFxuICAgIGluaXRpYWwgPSAke099KDApO1xcbiAgICBmb3IgKHZhciBoID0gbG9jYWxJbmRleDsgaCA8IHVuaWZvcm1zLm5vcm1QYWNrZWRTaXplOyBoICs9IHdvcmtncm91cFNpemUpIHtcXG4gICAgICBsZXQgZGV2aWF0aW9uID0gICR7T30oJHt2LmdldChcImJhdGNoXCIsXCJjaGFubmVsXCIsXCJoXCIpfSkgLSAke099KG1lYW5TaGFyZWQpO1xcbiAgICAgIGluaXRpYWwgPSBpbml0aWFsICsgZGV2aWF0aW9uICogZGV2aWF0aW9uO1xcbiAgICB9XFxuICAgIHdvcmtncm91cFNoYXJlZFtsb2NhbEluZGV4XSA9IGluaXRpYWw7XFxuICAgIHdvcmtncm91cEJhcnJpZXIoKTtcXG5cXG4gICAgLy8gQ2FsY3VsYXRlIHRoZSBzdW0gb2Ygc3F1YXJlIG9mIGRldmlhdGlvbiBvZiBjdXJyZW50IGNoYW5uZWwgZGF0YS5cXG4gICAgZm9yICh2YXIgY3VyclNpemUgPSB3b3JrZ3JvdXBTaXplID4+IDE7ICBjdXJyU2l6ZSA+IDA7IGN1cnJTaXplID0gY3VyclNpemUgPj4gMSkge1xcbiAgICAgIGlmIChsb2NhbEluZGV4IDwgY3VyclNpemUpIHtcXG4gICAgICAgIHdvcmtncm91cFNoYXJlZFtsb2NhbEluZGV4XSA9IHdvcmtncm91cFNoYXJlZFtsb2NhbEluZGV4XSArIHdvcmtncm91cFNoYXJlZFtsb2NhbEluZGV4ICsgY3VyclNpemVdO1xcbiAgICAgIH1cXG4gICAgICB3b3JrZ3JvdXBCYXJyaWVyKCk7XFxuICAgIH1cXG4gICAgaWYgKGxvY2FsSW5kZXggPT0gMCkge1xcbiAgICAgIHNxdWFyZWROb3JtU2hhcmVkID0gJHt1dChcIndvcmtncm91cFNoYXJlZFswXVwiLHApfTtcXG4gICAgfVxcbiAgICB3b3JrZ3JvdXBCYXJyaWVyKCk7XFxuXFxuICAgIGxldCBpbnZTdGREZXYgPSBpbnZlcnNlU3FydChzcXVhcmVkTm9ybVNoYXJlZCAvIGYzMih1bmlmb3Jtcy5ub3JtU2l6ZSkgKyBmMzIoJHt0LmVwc2lsb259KSk7XFxuICAgIGxldCBjaGFubmVsU2NhbGUgPSBpbnZTdGREZXYgKiBmMzIoJHt4LmdldEJ5T2Zmc2V0KFwiY2hhbm5lbFwiKX0pO1xcbiAgICBsZXQgY2hhbm5lbFNoaWZ0ID0gZjMyKCR7VC5nZXRCeU9mZnNldChcImNoYW5uZWxcIil9KSAtIG1lYW5TaGFyZWQgKiBjaGFubmVsU2NhbGU7XFxuICAgIGZvciAodmFyIGggPSBsb2NhbEluZGV4OyBoIDwgdW5pZm9ybXMubm9ybVBhY2tlZFNpemU7IGggKz0gd29ya2dyb3VwU2l6ZSkge1xcbiAgICAgIGxldCB2YWx1ZSA9ICR7di5nZXQoXCJiYXRjaFwiLFwiY2hhbm5lbFwiLFwiaFwiKX0gKiAke0V9KCR7T30oY2hhbm5lbFNjYWxlKSkgKyAke0V9KCR7T30oY2hhbm5lbFNoaWZ0KSk7XFxuICAgICAgJHtDLnNldChcImJhdGNoXCIsXCJjaGFubmVsXCIsXCJoXCIsXCJ2YWx1ZVwiKX07XFxuICAgIH1cXG4gIH1gfTtyZXR1cm57bmFtZTpcIkluc3RhbmNlTm9ybWFsaXphdGlvblwiLHNoYWRlckNhY2hlOntoaW50OmAke3QuZXBzaWxvbn07JHtwfWAsaW5wdXREZXBlbmRlbmNpZXM6ZH0sZ2V0UnVuRGF0YTooKT0+KHtvdXRwdXRzOlt7ZGltczpvLGRhdGFUeXBlOmVbMF0uZGF0YVR5cGV9XSxkaXNwYXRjaEdyb3VwOnt4OnV9LHByb2dyYW1Vbmlmb3Jtczp5fSksZ2V0U2hhZGVyU291cmNlOnd9fSxBYz0oZSx0LHIsbyxpLHUsYSxwKT0+e2xldCBtPUhlKGEpLGg9NjQsZD1tPT09MT9cInZlYzJmXCI6YG1hdDJ4JHttfWZgLHk9bT09PTE/XCJmMzJcIjpgdmVjJHttfWZgLHc9KE0sTik9PmAke2R9KCR7TX0sICR7Tn0pYCxfPWkqYS9tLHY9TWF0aC5jZWlsKHUvaCkseD1bXCJ0eXBlXCJdLFQ9W3t0eXBlOlwidWludDMyXCIsZGF0YTp2fSx7dHlwZTpcInVpbnQzMlwiLGRhdGE6dX0se3R5cGU6XCJ1aW50MzJcIixkYXRhOk1hdGguZmxvb3IoYS9tKX0se3R5cGU6XCJ1aW50MzJcIixkYXRhOk1hdGguZmxvb3IodSphL20pfV0sQz1NPT57bGV0IE49VihcImlucHV0XCIsdC5kYXRhVHlwZSx0LmRpbXMsbSk7cmV0dXJuYFxcbiAgJHtNLmRlY2xhcmVWYXJpYWJsZXMoTil9XFxuICBAZ3JvdXAoMCkgQGJpbmRpbmcoMSkgdmFyPHN0b3JhZ2UsIHJlYWRfd3JpdGU+IG91dHB1dCA6IGFycmF5PCR7ZH0+O1xcbiAgc3RydWN0IFVuaWZvcm1zIHt3Z19zaXplOnUzMiwgSDp1MzIsIEM6dTMyLCBpbWFnZV9zaXplOnUzMn07XFxuICBAZ3JvdXAoMCkgQGJpbmRpbmcoMikgdmFyPHVuaWZvcm0+IHVuaWZvcm1zOiBVbmlmb3JtcztcXG5cXG4gICR7TS5tYWluU3RhcnQoaCl9XFxuICAgIGxldCBjdXJyZW50SW1hZ2VOdW1iZXIgPSBnbG9iYWxfaWR4IC8gJHtofSAvIHVuaWZvcm1zLkM7XFxuICAgIGxldCBjdXJyZW50Q2hhbm5lbE51bWJlciA9IChnbG9iYWxfaWR4IC8gJHtofSkgJSB1bmlmb3Jtcy5DO1xcbiAgICBsZXQgd2dJZCA9IGdsb2JhbF9pZHggJSAke2h9O1xcbiAgICBsZXQgd2dPZmZzZXQgPSB3Z0lkICogdW5pZm9ybXMud2dfc2l6ZTtcXG4gICAgaWYgKHdnT2Zmc2V0ID49IHVuaWZvcm1zLkgpIHtcXG4gICAgICAgIHJldHVybjtcXG4gICAgfVxcbiAgICBsZXQgd2dNYXggPSBtaW4od2dPZmZzZXQgKyB1bmlmb3Jtcy53Z19zaXplLCB1bmlmb3Jtcy5IKTtcXG5cXG4gICAgbGV0IG9mZnNldCA9IGN1cnJlbnRJbWFnZU51bWJlciAqIHVuaWZvcm1zLmltYWdlX3NpemUgKyBjdXJyZW50Q2hhbm5lbE51bWJlcjtcXG4gICAgdmFyIHN1bSA9ICR7WmUoXCJmMzJcIixtKX07XFxuICAgIHZhciBzcXVhcmVkU3VtID0gJHtaZShcImYzMlwiLG0pfTtcXG4gICAgZm9yICh2YXIgaTogdTMyID0gd2dPZmZzZXQ7IGkgPCB3Z01heDsgaSsrKSB7XFxuICAgICAgICBsZXQgdmFsdWUgPSAke3l9KGlucHV0W29mZnNldCArIGkgKiB1bmlmb3Jtcy5DXSk7XFxuICAgICAgICBzdW0gKz0gdmFsdWU7XFxuICAgICAgICBzcXVhcmVkU3VtICs9IHZhbHVlICogdmFsdWU7XFxuICAgIH1cXG4gICAgb3V0cHV0W2dsb2JhbF9pZHhdID0gJHt3KFwic3VtXCIsXCJzcXVhcmVkU3VtXCIpfTtcXG4gIH1gfSxTPWUuY29tcHV0ZSh7bmFtZTpcIkluc3RhbmNlTm9ybUNvbXB1dGVNZWFuXCIsc2hhZGVyQ2FjaGU6e2hpbnQ6YCR7bX1gLGlucHV0RGVwZW5kZW5jaWVzOnh9LGdldFJ1bkRhdGE6KCk9Pih7b3V0cHV0czpbe2RpbXM6W2ksYSxoLDJdLGRhdGFUeXBlOjF9XSxkaXNwYXRjaEdyb3VwOnt4OmkqYS9tfSxwcm9ncmFtVW5pZm9ybXM6VH0pLGdldFNoYWRlclNvdXJjZTpDfSx7aW5wdXRzOlt0XSxvdXRwdXRzOlstMV19KVswXSxFPVt7dHlwZTpcInVpbnQzMlwiLGRhdGE6X30se3R5cGU6XCJ1aW50MzJcIixkYXRhOnV9LHt0eXBlOlwidWludDMyXCIsZGF0YTpNYXRoLmZsb29yKGEvbSl9LHt0eXBlOlwidWludDMyXCIsZGF0YTpNYXRoLmZsb29yKGgqYS9tKX1dLE89W1widHlwZVwiLFwidHlwZVwiLFwidHlwZVwiXSxVPU09PntsZXQgTj1WKFwic2NhbGVcIixyLmRhdGFUeXBlLHIuZGltcyxtKSxZPVYoXCJiaWFzXCIsby5kYXRhVHlwZSxvLmRpbXMsbSk7cmV0dXJuYFxcbiAgQGdyb3VwKDApIEBiaW5kaW5nKDApIHZhcjxzdG9yYWdlLCByZWFkPiBpbnB1dCA6IGFycmF5PCR7ZH0+O1xcbiAgQGdyb3VwKDApIEBiaW5kaW5nKDEpIHZhcjxzdG9yYWdlLCByZWFkPiBzY2FsZSA6IGFycmF5PCR7Ti50eXBlLnN0b3JhZ2V9PjtcXG4gIEBncm91cCgwKSBAYmluZGluZygyKSB2YXI8c3RvcmFnZSwgcmVhZD4gYmlhcyA6IGFycmF5PCR7WS50eXBlLnN0b3JhZ2V9PjtcXG4gIEBncm91cCgwKSBAYmluZGluZygzKSB2YXI8c3RvcmFnZSwgcmVhZF93cml0ZT4gb3V0cHV0IDogYXJyYXk8JHtkfT47XFxuICBzdHJ1Y3QgVW5pZm9ybXMge3VuaXRzX29mX3dvcmsgOiB1MzIsIEg6IHUzMiwgQyA6IHUzMiwgaW1hZ2Vfc2l6ZSA6IHUzMn07XFxuICBAZ3JvdXAoMCkgQGJpbmRpbmcoNCkgdmFyPHVuaWZvcm0+IHVuaWZvcm1zOiBVbmlmb3JtcztcXG5cXG4gICR7TS5tYWluU3RhcnQoKX1cXG4gICAgJHtNLmd1YXJkQWdhaW5zdE91dE9mQm91bmRzV29ya2dyb3VwU2l6ZXMoXCJ1bmlmb3Jtcy51bml0c19vZl93b3JrXCIpfVxcbiAgICBsZXQgY3VycmVudEltYWdlTnVtYmVyID0gZ2xvYmFsX2lkeCAvIHVuaWZvcm1zLkM7XFxuICAgIGxldCBjdXJyZW50Q2hhbm5lbE51bWJlciA9IGdsb2JhbF9pZHggJSB1bmlmb3Jtcy5DO1xcblxcbiAgICBsZXQgb2Zmc2V0ID0gY3VycmVudEltYWdlTnVtYmVyICogdW5pZm9ybXMuaW1hZ2Vfc2l6ZTtcXG4gICAgdmFyIHN1bSA9ICR7WmUoXCJmMzJcIixtKX07XFxuICAgIHZhciBzcXVhcmVkU3VtID0gJHtaZShcImYzMlwiLG0pfTtcXG4gICAgZm9yICh2YXIgaTogdTMyID0gMDsgaSA8ICR7aH07IGkrKykge1xcbiAgICAgICAgbGV0IHZhbHVlID0gaW5wdXRbb2Zmc2V0ICsgaSArIGN1cnJlbnRDaGFubmVsTnVtYmVyICogJHtofV07XFxuICAgICAgICBzdW0gKz0gdmFsdWVbMF07XFxuICAgICAgICBzcXVhcmVkU3VtICs9IHZhbHVlWzFdO1xcbiAgICB9XFxuICAgIHN1bSA9IHN1bSAvIGYzMih1bmlmb3Jtcy5IKTtcXG4gICAgc3F1YXJlZFN1bSA9IHNxdWFyZWRTdW0gLyBmMzIodW5pZm9ybXMuSCk7XFxuICAgIGxldCBpbnZTdGREZXYgPSBpbnZlcnNlU3FydChzcXVhcmVkU3VtIC0gc3VtICogc3VtICsgZjMyKCR7cH0pKTtcXG4gICAgbGV0IGNoYW5uZWxTY2FsZSA9IGludlN0ZERldiAqICR7eX0oc2NhbGVbY3VycmVudENoYW5uZWxOdW1iZXJdKTtcXG4gICAgbGV0IGNoYW5uZWxTaGlmdCA9ICR7eX0oYmlhc1tjdXJyZW50Q2hhbm5lbE51bWJlcl0pIC0gc3VtICogY2hhbm5lbFNjYWxlO1xcblxcbiAgICBvdXRwdXRbZ2xvYmFsX2lkeF0gPSAke3coXCJjaGFubmVsU2NhbGVcIixcImNoYW5uZWxTaGlmdFwiKX07XFxuICB9YH07cmV0dXJuIGUuY29tcHV0ZSh7bmFtZTpcIkluc3RhbmNlTm9ybUNvbXB1dGVDaGFubmVsU2NhbGVTaGlmdFwiLHNoYWRlckNhY2hlOntoaW50OmAke219OyR7cH1gLGlucHV0RGVwZW5kZW5jaWVzOk99LGdldFJ1bkRhdGE6KCk9Pih7b3V0cHV0czpbe2RpbXM6W2ksYSwyXSxkYXRhVHlwZToxfV0sZGlzcGF0Y2hHcm91cDp7eDpNYXRoLmNlaWwoXy82NCl9LHByb2dyYW1Vbmlmb3JtczpFfSksZ2V0U2hhZGVyU291cmNlOlV9LHtpbnB1dHM6W1MscixvXSxvdXRwdXRzOlstMV19KVswXX0sSWM9KGUsdCxyKT0+e2xldCBvPXRbMF0uZGltcyxpPW8sdT1vWzBdLGE9b1tvLmxlbmd0aC0xXSxwPVcuc2l6ZUZyb21EaW1lbnNpb24obywxKS9hLG09SGUoYSksaD1XLnNpemUoaSkvbSxkPVt7dHlwZTpcInVpbnQzMlwiLGRhdGE6cH0se3R5cGU6XCJ1aW50MzJcIixkYXRhOk1hdGguZmxvb3IoYS9tKX1dLHk9W1widHlwZVwiLFwidHlwZVwiXSx3PUFjKGUsdFswXSx0WzFdLHRbMl0sdSxwLGEsci5lcHNpbG9uKSxfPXY9PntsZXQgeD1OZSh0WzBdLmRhdGFUeXBlKSxUPW09PT0xP1widmVjMmZcIjpgbWF0Mngke219ZmAsQz1tPT09MT94OmB2ZWMke219PCR7eH0+YCxTPVYoXCJpbnB1dFwiLHRbMF0uZGF0YVR5cGUsdFswXS5kaW1zLG0pLEU9SihcIm91dHB1dFwiLHRbMF0uZGF0YVR5cGUsaSxtKTtyZXR1cm5gXFxuICBAZ3JvdXAoMCkgQGJpbmRpbmcoMCkgdmFyPHN0b3JhZ2UsIHJlYWQ+IGlucHV0IDogYXJyYXk8JHtTLnR5cGUuc3RvcmFnZX0+O1xcbiAgQGdyb3VwKDApIEBiaW5kaW5nKDEpIHZhcjxzdG9yYWdlLCByZWFkPiBzY2FsZUlucHV0IDogYXJyYXk8JHtUfT47XFxuICBAZ3JvdXAoMCkgQGJpbmRpbmcoMikgdmFyPHN0b3JhZ2UsIHJlYWRfd3JpdGU+IG91dHB1dCA6IGFycmF5PCR7RS50eXBlLnN0b3JhZ2V9PjtcXG4gIHN0cnVjdCBVbmlmb3JtcyB7SDogdTMyLCBDIDogdTMyfTtcXG4gIEBncm91cCgwKSBAYmluZGluZygzKSB2YXI8dW5pZm9ybT4gdW5pZm9ybXM6IFVuaWZvcm1zO1xcblxcbiAgJHt2Lm1haW5TdGFydCgpfVxcbiAgICBsZXQgY3VycmVudEltYWdlTnVtYmVyID0gZ2xvYmFsX2lkeCAvICh1bmlmb3Jtcy5DICogdW5pZm9ybXMuSCk7XFxuICAgIGxldCBjdXJyZW50Q2hhbm5lbE51bWJlciA9IGdsb2JhbF9pZHggJSB1bmlmb3Jtcy5DO1xcblxcbiAgICBsZXQgc2NhbGVPZmZzZXQgPSBjdXJyZW50SW1hZ2VOdW1iZXIgKiB1bmlmb3Jtcy5DICsgY3VycmVudENoYW5uZWxOdW1iZXI7XFxuICAgIGxldCBzY2FsZSA9IHNjYWxlSW5wdXRbc2NhbGVPZmZzZXRdO1xcbiAgICBvdXRwdXRbZ2xvYmFsX2lkeF0gPSBmbWEoaW5wdXRbZ2xvYmFsX2lkeF0sICR7Q30oc2NhbGVbMF0pLCAke0N9KHNjYWxlWzFdKSk7XFxuICB9YH07ZS5jb21wdXRlKHtuYW1lOlwiSW5zdGFuY2VOb3JtYWxpemF0aW9uTkhXQ1wiLHNoYWRlckNhY2hlOntoaW50OmAke219YCxpbnB1dERlcGVuZGVuY2llczp5fSxnZXRSdW5EYXRhOigpPT4oe291dHB1dHM6W3tkaW1zOmksZGF0YVR5cGU6dFswXS5kYXRhVHlwZX1dLGRpc3BhdGNoR3JvdXA6e3g6TWF0aC5jZWlsKGgvNjQpfSxwcm9ncmFtVW5pZm9ybXM6ZH0pLGdldFNoYWRlclNvdXJjZTpffSx7aW5wdXRzOlt0WzBdLHddfSl9LGd1PShlLHQpPT57dC5mb3JtYXQ9PT1cIk5IV0NcIj9JYyhlLGUuaW5wdXRzLHQpOmUuY29tcHV0ZShDYyhlLmlucHV0cyx0KSl9fSk7dmFyIFRjLEVjLGJ1LHd1PVEoKCk9PntcInVzZSBzdHJpY3RcIjtWZSgpO0NlKCk7X2UoKTtUYz1lPT57aWYoIWV8fGUubGVuZ3RoPDIpdGhyb3cgbmV3IEVycm9yKFwibGF5ZXJOb3JtIHJlcXVpcmVzIGF0IGxlYXN0IDIgaW5wdXRzLlwiKX0sRWM9KGUsdCxyKT0+e2xldCBvPWVbMF0uZGltcyxpPWVbMV0sdT1lWzJdLGE9byxwPVcubm9ybWFsaXplQXhpcyh0LmF4aXMsby5sZW5ndGgpLG09Vy5zaXplVG9EaW1lbnNpb24obyxwKSxoPVcuc2l6ZUZyb21EaW1lbnNpb24obyxwKSxkPVcuc2l6ZShpLmRpbXMpLHk9dT9XLnNpemUodS5kaW1zKTowO2lmKGQhPT1ofHx1JiZ5IT09aCl0aHJvdyBuZXcgRXJyb3IoYFNpemUgb2YgWC5zaGFwZSgpW2F4aXM6XSA9PSAke2h9LlxcbiAgICAgICBTaXplIG9mIHNjYWxlIGFuZCBiaWFzIChpZiBwcm92aWRlZCkgbXVzdCBtYXRjaCB0aGlzLlxcbiAgICAgICBHb3Qgc2NhbGUgc2l6ZSBvZiAke2R9IGFuZCBiaWFzIHNpemUgb2YgJHt5fWApO2xldCB3PVtdO2ZvcihsZXQgTz0wO088by5sZW5ndGg7KytPKU88cD93LnB1c2gob1tPXSk6dy5wdXNoKDEpO2xldCBfPUhlKGgpLHY9W1widHlwZVwiLFwidHlwZVwiXSx4PVt7dHlwZTpcInVpbnQzMlwiLGRhdGE6bX0se3R5cGU6XCJmbG9hdDMyXCIsZGF0YTpofSx7dHlwZTpcInVpbnQzMlwiLGRhdGE6TWF0aC5mbG9vcihoL18pfSx7dHlwZTpcImZsb2F0MzJcIixkYXRhOnQuZXBzaWxvbn1dO3UmJnYucHVzaChcInR5cGVcIik7bGV0IFQ9cj4xLEM9cj4yLFM9Tz0+e2xldCBVPU5lKGVbMF0uZGF0YVR5cGUpLE09W1YoXCJ4XCIsZVswXS5kYXRhVHlwZSxlWzBdLmRpbXMsXyksVihcInNjYWxlXCIsaS5kYXRhVHlwZSxpLmRpbXMsXyldO3UmJk0ucHVzaChWKFwiYmlhc1wiLHUuZGF0YVR5cGUsdS5kaW1zLF8pKSxNLnB1c2goSihcIm91dHB1dFwiLGVbMF0uZGF0YVR5cGUsYSxfKSksVCYmTS5wdXNoKEooXCJtZWFuX2RhdGFfb3V0cHV0XCIsMSx3KSksQyYmTS5wdXNoKEooXCJpbnZfc3RkX291dHB1dFwiLDEsdykpO2xldCBOPVt7bmFtZTpcIm5vcm1fY291bnRcIix0eXBlOlwidTMyXCJ9LHtuYW1lOlwibm9ybV9zaXplXCIsdHlwZTpcImYzMlwifSx7bmFtZTpcIm5vcm1fc2l6ZV92ZWN0b3JpemVkXCIsdHlwZTpcInUzMlwifSx7bmFtZTpcImVwc2lsb25cIix0eXBlOlwiZjMyXCJ9XTtyZXR1cm5gXFxuICAke08ucmVnaXN0ZXJVbmlmb3JtcyhOKS5kZWNsYXJlVmFyaWFibGVzKC4uLk0pfVxcbiAgJHtPLm1haW5TdGFydCgpfVxcbiAgICAke08uZ3VhcmRBZ2FpbnN0T3V0T2ZCb3VuZHNXb3JrZ3JvdXBTaXplcyhcInVuaWZvcm1zLm5vcm1fY291bnRcIil9XFxuICAgIGxldCBvZmZzZXQgPSBnbG9iYWxfaWR4ICogdW5pZm9ybXMubm9ybV9zaXplX3ZlY3Rvcml6ZWQ7XFxuICAgIHZhciBtZWFuVmVjdG9yID0gJHtaZShcImYzMlwiLF8pfTtcXG4gICAgdmFyIG1lYW5TcXVhcmVWZWN0b3IgPSAke1plKFwiZjMyXCIsXyl9O1xcblxcbiAgICBmb3IgKHZhciBoOiB1MzIgPSAwdTsgaCA8IHVuaWZvcm1zLm5vcm1fc2l6ZV92ZWN0b3JpemVkOyBoKyspIHtcXG4gICAgICBsZXQgdmFsdWUgPSAke2d0KFUsXyxcInhbaCArIG9mZnNldF1cIil9O1xcbiAgICAgIG1lYW5WZWN0b3IgKz0gdmFsdWU7XFxuICAgICAgbWVhblNxdWFyZVZlY3RvciArPSB2YWx1ZSAqIHZhbHVlO1xcbiAgICB9XFxuICAgIGxldCBtZWFuID0gJHt1dChcIm1lYW5WZWN0b3JcIixfKX0gLyB1bmlmb3Jtcy5ub3JtX3NpemU7XFxuICAgIGxldCBpbnZTdGREZXYgPVxcbiAgICAgICAgaW52ZXJzZVNxcnQoJHt1dChcIm1lYW5TcXVhcmVWZWN0b3JcIixfKX0gLyB1bmlmb3Jtcy5ub3JtX3NpemUgLSBtZWFuICogbWVhbiArIHVuaWZvcm1zLmVwc2lsb24pO1xcblxcbiAgICBmb3IgKHZhciBqOiB1MzIgPSAwOyBqIDwgdW5pZm9ybXMubm9ybV9zaXplX3ZlY3Rvcml6ZWQ7IGorKykge1xcbiAgICAgIGxldCBmMzJpbnB1dCA9ICR7Z3QoVSxfLFwieFtqICsgb2Zmc2V0XVwiKX07XFxuICAgICAgbGV0IGYzMnNjYWxlID0gJHtndChVLF8sXCJzY2FsZVtqXVwiKX07XFxuICAgICAgb3V0cHV0W2ogKyBvZmZzZXRdID0gJHtNWzBdLnR5cGUudmFsdWV9KChmMzJpbnB1dCAtIG1lYW4pICogaW52U3RkRGV2ICogZjMyc2NhbGVcXG4gICAgICAgICR7dT9gKyAke2d0KFUsXyxcImJpYXNbal1cIil9YDpcIlwifVxcbiAgICAgICk7XFxuICAgIH1cXG5cXG4gICAgJHtUP1wibWVhbl9kYXRhX291dHB1dFtnbG9iYWxfaWR4XSA9IG1lYW5cIjpcIlwifTtcXG4gICAgJHtDP1wiaW52X3N0ZF9vdXRwdXRbZ2xvYmFsX2lkeF0gPSBpbnZTdGREZXZcIjpcIlwifTtcXG4gIH1gfSxFPVt7ZGltczphLGRhdGFUeXBlOmVbMF0uZGF0YVR5cGV9XTtyZXR1cm4gVCYmRS5wdXNoKHtkaW1zOncsZGF0YVR5cGU6MX0pLEMmJkUucHVzaCh7ZGltczp3LGRhdGFUeXBlOjF9KSx7bmFtZTpcIkxheWVyTm9ybWFsaXphdGlvblwiLHNoYWRlckNhY2hlOntoaW50OmAke199OyR7cn1gLGlucHV0RGVwZW5kZW5jaWVzOnZ9LGdldFJ1bkRhdGE6KCk9Pih7b3V0cHV0czpFLGRpc3BhdGNoR3JvdXA6e3g6TWF0aC5jZWlsKG0vNjQpfSxwcm9ncmFtVW5pZm9ybXM6eH0pLGdldFNoYWRlclNvdXJjZTpTfX0sYnU9KGUsdCk9PntUYyhlLmlucHV0cyksZS5jb21wdXRlKEVjKGUuaW5wdXRzLHQsZS5vdXRwdXRDb3VudCkpfX0pO3ZhciBQYywkdSx2dSxPYyxVbyxfdSxTdT1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7Q2UoKTtZZSgpOyRuKCk7eG8oKTtfZSgpO3ByKCk7UGM9KGUsdCk9PntsZXQgcj1lWzBdLG89ZVsxXSxpPWVbMl0sdT1lWzNdLGE9ZVs0XSxwPWVbNV0sbT1lWzZdLGg9ZVs3XTtpZihyLmRpbXMubGVuZ3RoIT09MyYmci5kaW1zLmxlbmd0aCE9PTUpdGhyb3cgbmV3IEVycm9yKFwiSW5wdXQgcXVlcnkgaXMgZXhwZWN0ZWQgdG8gaGF2ZSAzIG9yIDUgZGltZW5zaW9uc1wiKTtsZXQgZD0hMSx5PXIuZGltc1swXSx3PXIuZGltc1sxXSxfPXIuZGltcy5sZW5ndGg9PT0zP2Q/ci5kaW1zWzJdLzM6ci5kaW1zWzJdOnQubnVtSGVhZHMqci5kaW1zWzRdLHY9dyx4PTAsVD0wLEM9TWF0aC5mbG9vcihfL3QubnVtSGVhZHMpO2lmKG0mJmgpe2lmKG0uZGltcy5sZW5ndGghPT00KXRocm93IG5ldyBFcnJvcihcXCdJbnB1dCBcInBhc3Rfa2V5XCIgaXMgZXhwZWN0ZWQgdG8gaGF2ZSA0IGRpbWVuc2lvbnNcXCcpO2lmKGguZGltcy5sZW5ndGghPT00KXRocm93IG5ldyBFcnJvcihcXCdJbnB1dCBcInBhc3RfdmFsdWVcIiBpcyBleHBlY3RlZCB0byBoYXZlIDQgZGltZW5zaW9uc1xcJyk7eD1tLmRpbXNbMl0sVD1tLmRpbXNbMl19ZWxzZSBpZihtfHxoKXRocm93IG5ldyBFcnJvcihcXCdJbnB1dCBcInBhc3Rfa2V5XCIgYW5kIFwicGFzdF92YWx1ZVwiIHNoYWxsIGJlIGJvdGggcHJlc2VudCBvciBib3RoIGFic2VudFxcJyk7bGV0IFM7aWYobyl7aWYoci5kaW1zLmxlbmd0aCE9PTMpdGhyb3cgbmV3IEVycm9yKFxcJ0lucHV0IFwicXVlcnlcIiBpcyBleHBlY3RlZCB0byBoYXZlIDMgZGltZW5zaW9ucyB3aGVuIGtleSBpcyBnaXZlblxcJyk7aWYoby5kaW1zLmxlbmd0aDwzfHxvLmRpbXMubGVuZ3RoPjUpdGhyb3cgbmV3IEVycm9yKFxcJ0lucHV0IFwia2V5XCIgaXMgZXhwZWN0ZWQgdG8gaGF2ZSAzLCA0LCBvciA1IGRpbWVuc2lvbnNcXCcpO2lmKHIuZGltc1swXSE9PW8uZGltc1swXSl0aHJvdyBuZXcgRXJyb3IoXFwnSW5wdXQgXCJxdWVyeVwiIGFuZCBcImtleVwiIHNoYWxsIGhhdmUgc2FtZSBkaW0gMCAoYmF0Y2ggc2l6ZSlcXCcpO2lmKG8uZGltcy5sZW5ndGg9PT0zKXtpZihvLmRpbXNbMl0hPT1yLmRpbXNbMl0pdGhyb3cgbmV3IEVycm9yKFxcJ0lucHV0IFwicXVlcnlcIiBhbmQgXCJrZXlcIiBzaGFsbCBoYXZlIHNhbWUgZGltIDIgKGhpZGRlbl9zaXplKVxcJyk7Uz0yLHY9by5kaW1zWzFdfWVsc2UgaWYoby5kaW1zLmxlbmd0aD09PTUpe2lmKG8uZGltc1syXSE9PXQubnVtSGVhZHN8fG8uZGltc1szXSE9PTJ8fG8uZGltc1s0XSE9PUMpdGhyb3cgbmV3IEVycm9yKFxcJ0V4cGVjdCBcImtleVwiIHNoYXBlIChiYXRjaF9zaXplLCBrdl9zZXF1ZW5jZV9sZW5ndGgsIG51bV9oZWFkcywgMiwgaGVhZF9zaXplKSBmb3IgcGFja2VkIGt2XFwnKTtpZihpKXRocm93IG5ldyBFcnJvcihcXCdFeHBlY3QgXCJ2YWx1ZVwiIGJlIG5vbmUgd2hlbiBcImtleVwiIGhhcyBwYWNrZWQga3YgZm9ybWF0LlxcJyk7Uz01LHY9by5kaW1zWzFdfWVsc2V7aWYoby5kaW1zWzFdIT09dC5udW1IZWFkc3x8by5kaW1zWzNdIT09Qyl0aHJvdyBuZXcgRXJyb3IoXFwnRXhwZWN0IFwia2V5XCIgc2hhcGUgKGJhdGNoX3NpemUsIG51bV9oZWFkcywga3Zfc2VxdWVuY2VfbGVuZ3RoLCBoZWFkX3NpemUpIGZvciBwYXN0X2tleVxcJyk7Uz0wLHY9by5kaW1zWzJdfX1lbHNle2lmKHIuZGltcy5sZW5ndGghPT0zJiZyLmRpbXMubGVuZ3RoIT09NSl0aHJvdyBuZXcgRXJyb3IoXFwnSW5wdXQgXCJxdWVyeVwiIGlzIGV4cGVjdGVkIHRvIGhhdmUgMyBvciA1IGRpbWVuc2lvbnMgd2hlbiBrZXkgaXMgZW1wdHlcXCcpO2lmKHIuZGltcy5sZW5ndGg9PT01JiYoci5kaW1zWzJdIT09dC5udW1IZWFkc3x8ci5kaW1zWzNdIT09MykpdGhyb3cgbmV3IEVycm9yKFxcJ0V4cGVjdCBcInF1ZXJ5XCIgc2hhcGUgKGJhdGNoX3NpemUsIGt2X3NlcXVlbmNlX2xlbmd0aCwgbnVtX2hlYWRzLCAzLCBoZWFkX3NpemUpIGZvciBwYWNrZWQga3ZcXCcpO1M9M31pZih1KXtpZih1LmRpbXMubGVuZ3RoIT09MSl0aHJvdyBuZXcgRXJyb3IoXFwnSW5wdXQgXCJiaWFzXCIgaXMgZXhwZWN0ZWQgdG8gaGF2ZSAxIGRpbWVuc2lvblxcJyk7aWYoaSYmci5kaW1zLmxlbmd0aD09PTUmJnIuZGltc1szXT09PTIpdGhyb3cgbmV3IEVycm9yKFwiYmlhcyBpcyBub3QgYWxsb3dlZCBmb3IgcGFja2VkIGt2LlwiKX1sZXQgRT0wO2lmKGEpe0U9ODtsZXQgWT1hLmRpbXM7dGhyb3cgWS5sZW5ndGg9PT0xP1lbMF09PT15P0U9MTpZWzBdPT09Myp5KzImJihFPTMpOlkubGVuZ3RoPT09MiYmWVswXT09PXkmJllbMV09PT12JiYoRT01KSxFPT09OD9uZXcgRXJyb3IoXFwnSW5wdXQgXCJrZXlfcGFkZGluZ19tYXNrXCIgc2hhcGUgc2hhbGwgYmUgKGJhdGNoX3NpemUpIG9yIChiYXRjaF9zaXplLCBrdl9zZXF1ZW5jZV9sZW5ndGgpXFwnKTpuZXcgRXJyb3IoXCJNYXNrIG5vdCBzdXBwb3J0ZWRcIil9bGV0IE89ITEsVT1fO2lmKGkpe2lmKGkuZGltcy5sZW5ndGghPT0zJiZpLmRpbXMubGVuZ3RoIT09NCl0aHJvdyBuZXcgRXJyb3IoXFwnSW5wdXQgXCJ2YWx1ZVwiIGlzIGV4cGVjdGVkIHRvIGhhdmUgMyBvciA0IGRpbWVuc2lvbnNcXCcpO2lmKHIuZGltc1swXSE9PWkuZGltc1swXSl0aHJvdyBuZXcgRXJyb3IoXFwnSW5wdXQgXCJxdWVyeVwiIGFuZCBcInZhbHVlXCIgc2hhbGwgaGF2ZSBzYW1lIGRpbSAwIChiYXRjaF9zaXplKVxcJyk7aWYoaS5kaW1zLmxlbmd0aD09PTMpe2lmKHYhPT1pLmRpbXNbMV0pdGhyb3cgbmV3IEVycm9yKFxcJ0lucHV0IFwia2V5XCIgYW5kIFwidmFsdWVcIiBzaGFsbCBoYXZlIHRoZSBzYW1lIGRpbSAxIChrdl9zZXF1ZW5jZV9sZW5ndGgpXFwnKTtVPWkuZGltc1syXX1lbHNle2lmKHYhPT1pLmRpbXNbMl0pdGhyb3cgbmV3IEVycm9yKFxcJ0lucHV0IFwicGFzdF9rZXlcIiBhbmQgXCJwYXN0X3ZhbHVlXCIgc2hhbGwgaGF2ZSB0aGUgc2FtZSBkaW0gMiAoa3Zfc2VxdWVuY2VfbGVuZ3RoKVxcJyk7VT1pLmRpbXNbMV0qaS5kaW1zWzNdLE89ITB9fWxldCBNPXgrdixOPSExO2lmKGEpdGhyb3cgbmV3IEVycm9yKFwiS2V5IHBhZGRpbmcgbWFzayBpcyBub3Qgc3VwcG9ydGVkXCIpO2lmKHApdGhyb3cgbmV3IEVycm9yKFwiZXh0cmFBZGRRayBpcyBub3Qgc3VwcG9ydGVkXCIpO2lmKG0pdGhyb3cgbmV3IEVycm9yKFwicGFzdEtleSBpcyBub3Qgc3VwcG9ydGVkXCIpO2lmKGgpdGhyb3cgbmV3IEVycm9yKFwicGFzdFZhbHVlIGlzIG5vdCBzdXBwb3J0ZWRcIik7cmV0dXJue2JhdGNoU2l6ZTp5LHNlcXVlbmNlTGVuZ3RoOncscGFzdFNlcXVlbmNlTGVuZ3RoOngsa3ZTZXF1ZW5jZUxlbmd0aDp2LHRvdGFsU2VxdWVuY2VMZW5ndGg6TSxtYXhTZXF1ZW5jZUxlbmd0aDpULGlucHV0SGlkZGVuU2l6ZTowLGhpZGRlblNpemU6Xyx2SGlkZGVuU2l6ZTpVLGhlYWRTaXplOkMsdkhlYWRTaXplOk1hdGguZmxvb3IoVS90Lm51bUhlYWRzKSxudW1IZWFkczp0Lm51bUhlYWRzLGlzVW5pZGlyZWN0aW9uYWw6ITEscGFzdFByZXNlbnRTaGFyZUJ1ZmZlcjohMSxtYXNrRmlsdGVyVmFsdWU6dC5tYXNrRmlsdGVyVmFsdWUsbWFza1R5cGU6RSxzY2FsZTp0LnNjYWxlLGJyb2FkY2FzdFJlc1Bvc0JpYXM6TixwYXNzUGFzdEluS3Y6Tyxxa3ZGb3JtYXQ6U319LCR1PWU9PnhlKHsuLi5lfSksdnU9eGUoe3Blcm06WzAsMiwxLDNdfSksT2M9KGUsdCxyLG8saSx1LGEpPT57bGV0IHA9W28saSx1XSxtPVcuc2l6ZShwKSxoPVt7dHlwZTpcInVpbnQzMlwiLGRhdGE6bX0se3R5cGU6XCJ1aW50MzJcIixkYXRhOmF9LHt0eXBlOlwidWludDMyXCIsZGF0YTp1fV0sZD15PT57bGV0IHc9SihcInFrdl93aXRoX2JpYXNcIix0LmRhdGFUeXBlLHApLF89VihcInFrdlwiLHQuZGF0YVR5cGUscCksdj1WKFwiYmlhc1wiLHIuZGF0YVR5cGUscCkseD1be25hbWU6XCJvdXRwdXRfc2l6ZVwiLHR5cGU6XCJ1MzJcIn0se25hbWU6XCJiaWFzX29mZnNldFwiLHR5cGU6XCJ1MzJcIn0se25hbWU6XCJoaWRkZW5fc2l6ZVwiLHR5cGU6XCJ1MzJcIn1dO3JldHVybmBcXG4gICR7eS5yZWdpc3RlclVuaWZvcm1zKHgpLmRlY2xhcmVWYXJpYWJsZXMoXyx2LHcpfVxcbiAgJHt5Lm1haW5TdGFydCgpfVxcbiAgICAke3kuZ3VhcmRBZ2FpbnN0T3V0T2ZCb3VuZHNXb3JrZ3JvdXBTaXplcyhcInVuaWZvcm1zLm91dHB1dF9zaXplXCIpfVxcbiAgICBsZXQgYmlhc19vZmZzZXRfaWR4ID0gKGdsb2JhbF9pZHggJSB1bmlmb3Jtcy5oaWRkZW5fc2l6ZSkgKyB1bmlmb3Jtcy5iaWFzX29mZnNldDtcXG5cXG4gICAgcWt2X3dpdGhfYmlhc1tnbG9iYWxfaWR4XSA9IHFrdltnbG9iYWxfaWR4XSArIGJpYXNbYmlhc19vZmZzZXRfaWR4XTtcXG4gIH1gfTtyZXR1cm4gZS5jb21wdXRlKHtuYW1lOlwiTXVsdGlIZWFkQXR0ZW50aW9uQWRkQmlhc1wiLHNoYWRlckNhY2hlOntpbnB1dERlcGVuZGVuY2llczpbXCJ0eXBlXCIsXCJ0eXBlXCJdfSxnZXRSdW5EYXRhOigpPT4oe291dHB1dHM6W3tkaW1zOnAsZGF0YVR5cGU6dC5kYXRhVHlwZSxncHVEYXRhVHlwZTowfV0sZGlzcGF0Y2hHcm91cDp7eDpNYXRoLmNlaWwobS82NCl9LHByb2dyYW1Vbmlmb3JtczpofSksZ2V0U2hhZGVyU291cmNlOmR9LHtpbnB1dHM6W3Qscl0sb3V0cHV0czpbLTFdfSlbMF19LFVvPShlLHQscixvLGksdSxhLHApPT57bGV0IG09dTtpZihhKXtpZihvPT09MSl0aHJvdyBuZXcgRXJyb3IoXCJBZGRCaWFzUmVzaGFwZSBpcyBub3QgaW1wbGVtZW50ZWQuIFBsZWFzZSBleHBvcnQgeW91ciBtb2RlbCB3aXRoIHBhY2tlZCBRS1Ygb3IgS1ZcIik7cmV0dXJuIG09T2MoZSx1LGEsdCxvLHIqaSxwKSxtPW0ucmVzaGFwZShbdCxvLHIsaV0pLGUuY29tcHV0ZSh5dChtLHZ1LnBlcm0pLHtpbnB1dHM6W21dLG91dHB1dHM6Wy0xXX0pWzBdfWVsc2UgcmV0dXJuIHUuZGltcy5sZW5ndGg9PT0zJiYobT11LnJlc2hhcGUoW3QsbyxyLGldKSksZS5jb21wdXRlKHl0KG0sdnUucGVybSkse2lucHV0czpbbV0sb3V0cHV0czpbLTFdfSlbMF19LF91PShlLHQpPT57bGV0IHI9UGMoZS5pbnB1dHMsdCk7aWYoZS5pbnB1dHNbMF0uZGltcy5sZW5ndGg9PT01KXRocm93IG5ldyBFcnJvcihcIlBhY2tlZCBRS1YgaXMgbm90IGltcGxlbWVudGVkXCIpO2lmKGUuaW5wdXRzWzFdPy5kaW1zLmxlbmd0aD09PTUpdGhyb3cgbmV3IEVycm9yKFwiUGFja2VkIEtWIGlzIG5vdCBpbXBsZW1lbnRlZFwiKTtsZXQgbz1lLmlucHV0c1sxXSYmZS5pbnB1dHNbMl0mJmUuaW5wdXRzWzFdLmRpbXMubGVuZ3RoPT09NCYmZS5pbnB1dHNbMl0uZGltcy5sZW5ndGg9PT00LGk9VW8oZSxyLmJhdGNoU2l6ZSxyLm51bUhlYWRzLHIuc2VxdWVuY2VMZW5ndGgsci5oZWFkU2l6ZSxlLmlucHV0c1swXSxlLmlucHV0c1szXSwwKTtpZihvKXJldHVybiBFbihlLGksZS5pbnB1dHNbMV0sZS5pbnB1dHNbMl0sZS5pbnB1dHNbNF0sdm9pZCAwLHZvaWQgMCx2b2lkIDAsZS5pbnB1dHNbNV0scix0KTtsZXQgdT1VbyhlLHIuYmF0Y2hTaXplLHIubnVtSGVhZHMsci5rdlNlcXVlbmNlTGVuZ3RoLHIuaGVhZFNpemUsZS5pbnB1dHNbMV0sZS5pbnB1dHNbM10sci5oaWRkZW5TaXplKSxhPVVvKGUsci5iYXRjaFNpemUsci5udW1IZWFkcyxyLmt2U2VxdWVuY2VMZW5ndGgsci52SGVhZFNpemUsZS5pbnB1dHNbMl0sZS5pbnB1dHNbM10sMipyLmhpZGRlblNpemUpO0VuKGUsaSx1LGEsZS5pbnB1dHNbNF0sdm9pZCAwLGUuaW5wdXRzWzZdLGUuaW5wdXRzWzddLGUuaW5wdXRzWzVdLHIsdCl9fSk7dmFyIGtjLFJjLEJjLERjLE1jLHpjLFVjLFZjLHh1LEN1PVEoKCk9PntcInVzZSBzdHJpY3RcIjtWZSgpO0NlKCk7X2UoKTtrYz1lPT57aWYoIWV8fGUubGVuZ3RoPDEpdGhyb3cgbmV3IEVycm9yKFwiVG9vIGZldyBpbnB1dHNcIik7aWYoZVswXS5kYXRhVHlwZSE9PTEmJmVbMF0uZGF0YVR5cGUhPT0xMCl0aHJvdyBuZXcgRXJyb3IoXCJJbnB1dCB0eXBlIG11c3QgYmUgZmxvYXQgb3IgZmxvYXQxNi5cIik7aWYoZS5sZW5ndGg+PTIpe2xldCB0PWVbMF0uZGltcy5sZW5ndGgqMj09PWVbMV0uZGltc1swXTtpZihlLmxlbmd0aD09PTQmJih0PWVbM10uZGltc1swXSoyPT09ZVsxXS5kaW1zWzBdKSwhdCl0aHJvdyBuZXcgRXJyb3IoXCJUaGUgcGFkcyBzaG91bGQgYmUgYSAxRCB0ZW5zb3Igb2Ygc2hhcGUgWzIgKiBpbnB1dF9yYW5rXSBvciBbMiAqIG51bV9heGVzXS5cIil9fSxSYz0oZSx0LHIpPT57bGV0IG89XCJcIjtmb3IobGV0IGk9dC0xO2k+PTA7LS1pKW8rPWBcXG4gICAgICAgICAgICBrID0gaTMyKCR7ZS5pbmRpY2VzR2V0KFwiaW5kaWNlc1wiLGkpfSkgLSAke2NlKFwidW5pZm9ybXMucGFkc1wiLGkscil9O1xcbiAgICAgICAgICAgIGlmIChrIDwgMCkge1xcbiAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGlmIChrID49IGkzMigke2NlKFwidW5pZm9ybXMueF9zaGFwZVwiLGksdCl9KSkge1xcbiAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIG9mZnNldCArPSBrICogaTMyKCR7Y2UoXCJ1bmlmb3Jtcy54X3N0cmlkZXNcIixpLHQpfSk7XFxuICAgICAgICBgO3JldHVybmBcXG4gICAgICAgICAgdmFsdWUgPSAke2UudHlwZS52YWx1ZX0odW5pZm9ybXMuY29uc3RhbnRfdmFsdWUpO1xcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDE7IGkrKykge1xcbiAgICAgICAgICAgIHZhciBvZmZzZXQgPSAwO1xcbiAgICAgICAgICAgIHZhciBrID0gMDtcXG4gICAgICAgICAgICAke299XFxuICAgICAgICAgICAgdmFsdWUgPSB4W29mZnNldF07XFxuICAgICAgICAgIH1cXG4gICAgICBgfSxCYz0oZSx0LHIpPT57bGV0IG89XCJcIjtmb3IobGV0IGk9dC0xO2k+PTA7LS1pKW8rPWBcXG4gICAgICAgICAgICAgICAgayA9IGkzMigke2UuaW5kaWNlc0dldChcImluZGljZXNcIixpKX0pIC0gJHtjZShcInVuaWZvcm1zLnBhZHNcIixpLHIpfTtcXG4gICAgICAgICAgICAgICAgaWYgKGsgPCAwKSB7XFxuICAgICAgICAgICAgICAgICAgayA9IC1rO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIHtcXG4gICAgICAgICAgICAgICAgICBsZXQgXzJuXzEgPSAyICogKGkzMigke2NlKFwidW5pZm9ybXMueF9zaGFwZVwiLGksdCl9KSAtIDEpO1xcbiAgICAgICAgICAgICAgICAgIGsgPSBrICUgXzJuXzE7XFxuICAgICAgICAgICAgICAgICAgaWYoayA+PSBpMzIoJHtjZShcInVuaWZvcm1zLnhfc2hhcGVcIixpLHQpfSkpIHtcXG4gICAgICAgICAgICAgICAgICAgIGsgPSBfMm5fMSAtIGs7XFxuICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIG9mZnNldCArPSBrICogaTMyKCR7Y2UoXCJ1bmlmb3Jtcy54X3N0cmlkZXNcIixpLHQpfSk7XFxuICAgICAgICAgICAgYDtyZXR1cm5gXFxuICAgICAgICAgICAgICB2YXIgb2Zmc2V0ID0gMDtcXG4gICAgICAgICAgICAgIHZhciBrID0gMDtcXG4gICAgICAgICAgICAgICR7b31cXG4gICAgICAgICAgICAgIHZhbHVlID0geFtvZmZzZXRdO1xcbiAgICAgICAgICBgfSxEYz0oZSx0LHIpPT57bGV0IG89XCJcIjtmb3IobGV0IGk9dC0xO2k+PTA7LS1pKW8rPWBcXG4gICAgICAgICAgICAgICAgayA9IGkzMigke2UuaW5kaWNlc0dldChcImluZGljZXNcIixpKX0pIC0gJHtjZShcInVuaWZvcm1zLnBhZHNcIixpLHIpfTtcXG4gICAgICAgICAgICAgICAgaWYgKGsgPCAwKSB7XFxuICAgICAgICAgICAgICAgICAgayA9IDA7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgaWYgKGsgPj0gaTMyKCR7Y2UoXCJ1bmlmb3Jtcy54X3NoYXBlXCIsaSx0KX0pKSB7XFxuICAgICAgICAgICAgICAgICAgayA9IGkzMigke2NlKFwidW5pZm9ybXMueF9zaGFwZVwiLGksdCl9KSAtIDE7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgb2Zmc2V0ICs9IGsgKiBpMzIoJHtjZShcInVuaWZvcm1zLnhfc3RyaWRlc1wiLGksdCl9KTtcXG4gICAgICAgICAgICBgO3JldHVybmBcXG4gICAgICAgICAgICAgIHZhciBvZmZzZXQgPSAwO1xcbiAgICAgICAgICAgICAgdmFyIGsgPSAwO1xcbiAgICAgICAgICAgICAgJHtvfVxcbiAgICAgICAgICAgICAgdmFsdWUgPSB4W29mZnNldF07XFxuICAgICAgICAgIGB9LE1jPShlLHQscik9PntsZXQgbz1cIlwiO2ZvcihsZXQgaT10LTE7aT49MDstLWkpbys9YFxcbiAgICAgICAgICAgICAgICBrID0gaTMyKCR7ZS5pbmRpY2VzR2V0KFwiaW5kaWNlc1wiLGkpfSkgLSAke2NlKFwidW5pZm9ybXMucGFkc1wiLGkscil9O1xcbiAgICAgICAgICAgICAgICBpZiAoayA8IDApICB7XFxuICAgICAgICAgICAgICAgICAgayArPSBpMzIoJHtjZShcInVuaWZvcm1zLnhfc2hhcGVcIixpLHQpfV0pO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGlmIChrID49IGkzMigke2NlKFwidW5pZm9ybXMueF9zaGFwZVwiLGksdCl9KSkge1xcbiAgICAgICAgICAgICAgICAgIGsgLT0gaTMyKCR7Y2UoXCJ1bmlmb3Jtcy54X3NoYXBlXCIsaSx0KX0pO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIG9mZnNldCArPSBrICogaTMyKCR7Y2UoXCJ1bmlmb3Jtcy54X3N0cmlkZXNcIixpLHQpfSk7XFxuICAgICAgICAgICAgYDtyZXR1cm5gXFxuICAgICAgICAgICAgICB2YXIgb2Zmc2V0ID0gMDtcXG4gICAgICAgICAgICAgIHZhciBrID0gMDtcXG4gICAgICAgICAgICAgICR7b31cXG4gICAgICAgICAgICAgIHZhbHVlID0geFtvZmZzZXRdO1xcbiAgICAgICAgICBgfSx6Yz0oZSx0LHIpPT57c3dpdGNoKHIubW9kZSl7Y2FzZSAwOnJldHVybiBSYyhlLHQsci5wYWRzLmxlbmd0aCk7Y2FzZSAxOnJldHVybiBCYyhlLHQsci5wYWRzLmxlbmd0aCk7Y2FzZSAyOnJldHVybiBEYyhlLHQsci5wYWRzLmxlbmd0aCk7Y2FzZSAzOnJldHVybiBNYyhlLHQsci5wYWRzLmxlbmd0aCk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIG1vZGVcIil9fSxVYz0oZSx0KT0+e2xldCByPVcucGFkU2hhcGUoZVswXS5kaW1zLnNsaWNlKCksdC5wYWRzKSxvPWVbMF0uZGltcyx1PVt7dHlwZTpcInVpbnQzMlwiLGRhdGE6Vy5zaXplKHIpfSx7dHlwZTpcInVpbnQzMlwiLGRhdGE6dC5wYWRzfV07aWYodC5tb2RlPT09MCl7bGV0IG09c3QoZVswXS5kYXRhVHlwZSk7dS5wdXNoKHt0eXBlOm0sZGF0YTp0LnZhbHVlfSl9dS5wdXNoKC4uLkcoZVswXS5kaW1zKSwuLi5HKHIpKTtsZXQgYT1bXCJyYW5rXCJdLHA9bT0+e2xldCBoPUooXCJvdXRwdXRcIixlWzBdLmRhdGFUeXBlLHIubGVuZ3RoKSxkPVYoXCJ4XCIsZVswXS5kYXRhVHlwZSxvLmxlbmd0aCkseT1kLnR5cGUudmFsdWUsdz16YyhoLG8ubGVuZ3RoLHQpLF89W3tuYW1lOlwib3V0cHV0X3NpemVcIix0eXBlOlwidTMyXCJ9LHtuYW1lOlwicGFkc1wiLHR5cGU6XCJpMzJcIixsZW5ndGg6dC5wYWRzLmxlbmd0aH1dO3JldHVybiB0Lm1vZGU9PT0wJiZfLnB1c2goe25hbWU6XCJjb25zdGFudF92YWx1ZVwiLHR5cGU6eX0pLGBcXG4gICAgICAgICAgICAke20ucmVnaXN0ZXJVbmlmb3JtcyhfKS5kZWNsYXJlVmFyaWFibGVzKGQsaCl9XFxuICAgICAgICAgICAgJHttLm1haW5TdGFydCgpfVxcbiAgICAgICAgICAgICR7bS5ndWFyZEFnYWluc3RPdXRPZkJvdW5kc1dvcmtncm91cFNpemVzKFwidW5pZm9ybXMub3V0cHV0X3NpemVcIil9XFxuXFxuICAgICAgICAgICAgbGV0IGluZGljZXMgPSAke2gub2Zmc2V0VG9JbmRpY2VzKFwiZ2xvYmFsX2lkeFwiKX07XFxuXFxuICAgICAgICAgICAgdmFyIHZhbHVlID0gJHt5fSgwKTtcXG4gICAgICAgICAgICAke3d9XFxuICAgICAgICAgICAgb3V0cHV0W2dsb2JhbF9pZHhdID0gdmFsdWU7XFxuICAgICAgICB9YH07cmV0dXJue25hbWU6XCJQYWRcIixzaGFkZXJDYWNoZTp7aGludDpgJHt0Lm1vZGV9YCxpbnB1dERlcGVuZGVuY2llczphfSxnZXRSdW5EYXRhOigpPT4oe291dHB1dHM6W3tkaW1zOnIsZGF0YVR5cGU6ZVswXS5kYXRhVHlwZX1dLGRpc3BhdGNoR3JvdXA6e3g6TWF0aC5jZWlsKFcuc2l6ZShyKS82NCl9LHByb2dyYW1Vbmlmb3Jtczp1fSksZ2V0U2hhZGVyU291cmNlOnB9fSxWYz0oZSx0KT0+e2lmKGUubGVuZ3RoPjEpe2xldCByPWVbMV0uZ2V0QmlnSW50NjRBcnJheSgpLG89ZS5sZW5ndGg+PTMmJmVbMl0uZGF0YT9lWzJdLmdldEZsb2F0MzJBcnJheSgpWzBdOjAsaT1lWzBdLmRpbXMubGVuZ3RoLHU9bmV3IEludDMyQXJyYXkoMippKS5maWxsKDApO2lmKGUubGVuZ3RoPj00KXtsZXQgcD1lWzNdLmdldEJpZ0ludDY0QXJyYXkoKTtmb3IobGV0IG09MDttPHAubGVuZ3RoO20rKyl1W051bWJlcihwW21dKV09TnVtYmVyKHJbbV0pLHVbTnVtYmVyKHBbbV0pK2ldPU51bWJlcihyW20rcC5sZW5ndGhdKX1lbHNlIHIuZm9yRWFjaCgocCxtKT0+dVtOdW1iZXIobSldPU51bWJlcihwKSk7bGV0IGE9W107cmV0dXJuIHUuZm9yRWFjaChwPT5hLnB1c2gocCkpLHttb2RlOnQubW9kZSx2YWx1ZTpvLHBhZHM6YX19ZWxzZSByZXR1cm4gdH0seHU9KGUsdCk9PntrYyhlLmlucHV0cyk7bGV0IHI9VmMoZS5pbnB1dHMsdCk7ZS5jb21wdXRlKFVjKGUuaW5wdXRzLHIpLHtpbnB1dHM6WzBdfSl9fSk7dmFyIFVuLEF1LEl1LFR1LEV1LFdjLE5jLFB1LE91LGt1LFJ1LEJ1LER1LE11LHp1LFV1LFZ1LFd1LE51LEh1PVEoKCk9PntcInVzZSBzdHJpY3RcIjtkcigpO0NlKCk7X2UoKTtVbj1lPT57aWYobHIud2ViZ3B1LnZhbGlkYXRlSW5wdXRDb250ZW50JiYoIWV8fGUubGVuZ3RoIT09MSkpdGhyb3cgbmV3IEVycm9yKFwiUG9vbCBvcHMgcmVxdWlyZXMgMSBpbnB1dC5cIil9LEF1PShlLHQscik9PntsZXQgbz10LmZvcm1hdD09PVwiTkhXQ1wiLGk9ZS5kaW1zLnNsaWNlKCk7byYmaS5zcGxpY2UoMSwwLGkucG9wKCkpO2xldCB1PU9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsXCJkaWxhdGlvbnNcIiksYT10Lmtlcm5lbFNoYXBlLnNsaWNlKCkscD10LnN0cmlkZXMuc2xpY2UoKSxtPXU/dC5kaWxhdGlvbnMuc2xpY2UoKTpbXSxoPXQucGFkcy5zbGljZSgpO1h0LmFkanVzdFBvb2xBdHRyaWJ1dGVzKHIsaSxhLHAsbSxoKTtsZXQgZD1YdC5jb21wdXRlUG9vbE91dHB1dFNoYXBlKHIsaSxwLG0sYSxoLHQuYXV0b1BhZCkseT1PYmplY3QuYXNzaWduKHt9LHQpO3U/T2JqZWN0LmFzc2lnbih5LHtrZXJuZWxTaGFwZTphLHN0cmlkZXM6cCxwYWRzOmgsZGlsYXRpb25zOm0sY2FjaGVLZXk6dC5jYWNoZUtleX0pOk9iamVjdC5hc3NpZ24oeSx7a2VybmVsU2hhcGU6YSxzdHJpZGVzOnAscGFkczpoLGNhY2hlS2V5OnQuY2FjaGVLZXl9KTtsZXQgdz1kLnNsaWNlKCk7cmV0dXJuIHcucHVzaCh3LnNwbGljZSgxLDEpWzBdKSxbeSxvP3c6ZF19LEl1PShlLHQpPT57bGV0IHI9dC5mb3JtYXQ9PT1cIk5IV0NcIixvPVcuc2l6ZShlKSxpPVcuc2l6ZSh0Lmtlcm5lbFNoYXBlKSx1PVt7dHlwZTpcInVpbnQzMlwiLGRhdGE6b30se3R5cGU6XCJ1aW50MzJcIixkYXRhOml9XSxhPVt7bmFtZTpcIm91dHB1dFNpemVcIix0eXBlOlwidTMyXCJ9LHtuYW1lOlwia2VybmVsU2l6ZVwiLHR5cGU6XCJ1MzJcIn1dO2lmKHQua2VybmVsU2hhcGUubGVuZ3RoPD0yKXtsZXQgcD10Lmtlcm5lbFNoYXBlW3Qua2VybmVsU2hhcGUubGVuZ3RoLTFdLG09dC5zdHJpZGVzW3Quc3RyaWRlcy5sZW5ndGgtMV0saD10LnBhZHNbdC5wYWRzLmxlbmd0aC8yLTFdLGQ9dC5wYWRzW3QucGFkcy5sZW5ndGgtMV0seT0hIShoK2QpO3UucHVzaCh7dHlwZTpcInVpbnQzMlwiLGRhdGE6cH0se3R5cGU6XCJ1aW50MzJcIixkYXRhOm19LHt0eXBlOlwidWludDMyXCIsZGF0YTpofSx7dHlwZTpcInVpbnQzMlwiLGRhdGE6ZH0pLGEucHVzaCh7bmFtZTpcImt3XCIsdHlwZTpcInUzMlwifSx7bmFtZTpcInN3XCIsdHlwZTpcInUzMlwifSx7bmFtZTpcInB3U3RhcnRcIix0eXBlOlwidTMyXCJ9LHtuYW1lOlwicHdFbmRcIix0eXBlOlwidTMyXCJ9KTtsZXQgdz0hMTtpZih0Lmtlcm5lbFNoYXBlLmxlbmd0aD09PTIpe2xldCBfPXQua2VybmVsU2hhcGVbdC5rZXJuZWxTaGFwZS5sZW5ndGgtMl0sdj10LnN0cmlkZXNbdC5zdHJpZGVzLmxlbmd0aC0yXSx4PXQucGFkc1t0LnBhZHMubGVuZ3RoLzItMl0sVD10LnBhZHNbdC5wYWRzLmxlbmd0aC0yXTt3PSEhKHgrVCksdS5wdXNoKHt0eXBlOlwidWludDMyXCIsZGF0YTpffSx7dHlwZTpcInVpbnQzMlwiLGRhdGE6dn0se3R5cGU6XCJ1aW50MzJcIixkYXRhOnh9LHt0eXBlOlwidWludDMyXCIsZGF0YTpUfSksYS5wdXNoKHtuYW1lOlwia2hcIix0eXBlOlwidTMyXCJ9LHtuYW1lOlwic2hcIix0eXBlOlwidTMyXCJ9LHtuYW1lOlwicGhTdGFydFwiLHR5cGU6XCJ1MzJcIn0se25hbWU6XCJwaEVuZFwiLHR5cGU6XCJ1MzJcIn0pfXJldHVyblt1LGEsITAseSx3XX1lbHNle2lmKHIpdGhyb3cgbmV3IEVycm9yKFwiUG9vbGluZyB3aXRoIGtlcm5lbFNoYXBlLmxlbmd0aCA+IDIgaXMgbm90IHN1cHBvcnRlZCBmb3IgTkhXQyBmb3JtYXQuXCIpO2xldCBwPVcuY29tcHV0ZVN0cmlkZXModC5rZXJuZWxTaGFwZSk7dS5wdXNoKHt0eXBlOlwidWludDMyXCIsZGF0YTpwfSx7dHlwZTpcInVpbnQzMlwiLGRhdGE6dC5wYWRzfSx7dHlwZTpcInVpbnQzMlwiLGRhdGE6dC5zdHJpZGVzfSksYS5wdXNoKHtuYW1lOlwia2VybmVsU3RyaWRlc1wiLHR5cGU6XCJ1MzJcIixsZW5ndGg6cC5sZW5ndGh9LHtuYW1lOlwicGFkc1wiLHR5cGU6XCJ1MzJcIixsZW5ndGg6dC5wYWRzLmxlbmd0aH0se25hbWU6XCJzdHJpZGVzXCIsdHlwZTpcInUzMlwiLGxlbmd0aDp0LnN0cmlkZXMubGVuZ3RofSk7bGV0IG09dC5wYWRzLnJlZHVjZSgoaCxkKT0+aCtkKTtyZXR1cm5bdSxhLCEhbSwhMSwhMV19fSxUdT0oZSx0LHIsbyxpLHUsYSxwLG0saCxkLHkpPT57bGV0IHc9aS5mb3JtYXQ9PT1cIk5IV0NcIixfPXQudHlwZS52YWx1ZSx2PUooXCJvdXRwdXRcIix0LnR5cGUudGVuc29yLG8pO2lmKGkua2VybmVsU2hhcGUubGVuZ3RoPD0yKXtsZXQgeD1cIlwiLFQ9XCJcIixDPVwiXCIsUz1yLSh3PzI6MSk7aWYoZD94PWBcXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaTogdTMyID0gMHU7IGkgPCB1bmlmb3Jtcy5rdzsgaSsrKSB7XFxuICAgICAgICAgICAgICAgICAgeEluZGljZXNbJHtTfV0gPSBpbmRpY2VzWyR7U31dICogdW5pZm9ybXMuc3cgLSB1bmlmb3Jtcy5wd1N0YXJ0ICsgaTtcXG4gICAgICAgICAgICAgICAgICBpZiAoeEluZGljZXNbJHtTfV0gPCAwIHx8IHhJbmRpY2VzWyR7U31dXFxuICAgICAgICAgICAgICAgICAgICAgID49IHVuaWZvcm1zLnhfc2hhcGVbJHtTfV0pIHtcXG4gICAgICAgICAgICAgICAgICAgIHBhZCsrO1xcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XFxuICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgIGxldCB4X3ZhbCA9IHhbJHt0LmluZGljZXNUb09mZnNldChcInhJbmRpY2VzXCIpfV07XFxuICAgICAgICAgICAgICAgICAgJHt1fVxcbiAgICAgICAgICAgICAgICB9YDp4PWBcXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaTogdTMyID0gMHU7IGkgPCB1bmlmb3Jtcy5rdzsgaSsrKSB7XFxuICAgICAgICAgICAgICAgICAgeEluZGljZXNbJHtTfV0gPSBpbmRpY2VzWyR7U31dICogdW5pZm9ybXMuc3cgLSB1bmlmb3Jtcy5wd1N0YXJ0ICsgaTtcXG4gICAgICAgICAgICAgICAgICBsZXQgeF92YWwgPSB4WyR7dC5pbmRpY2VzVG9PZmZzZXQoXCJ4SW5kaWNlc1wiKX1dO1xcbiAgICAgICAgICAgICAgICAgICR7dX1cXG4gICAgICAgICAgICAgICAgfWAsaS5rZXJuZWxTaGFwZS5sZW5ndGg9PT0yKXtsZXQgTz1yLSh3PzM6Mik7eT9UPWBcXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgajogdTMyID0gMHU7IGogPCB1bmlmb3Jtcy5raDsgaisrKSB7XFxuICAgICAgICAgICAgICAgICAgeEluZGljZXNbJHtPfV0gPSBpbmRpY2VzWyR7T31dICogdW5pZm9ybXMuc2ggLSB1bmlmb3Jtcy5waFN0YXJ0ICsgajtcXG4gICAgICAgICAgICAgICAgICBpZiAoeEluZGljZXNbJHtPfV0gPCAwIHx8IHhJbmRpY2VzWyR7T31dID49IHVuaWZvcm1zLnhfc2hhcGVbJHtPfV0pIHtcXG4gICAgICAgICAgICAgICAgICAgIHBhZCArPSBpMzIodW5pZm9ybXMua3cpO1xcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XFxuICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgYDpUPWBcXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgajogdTMyID0gMHU7IGogPCB1bmlmb3Jtcy5raDsgaisrKSB7XFxuICAgICAgICAgICAgICAgICAgeEluZGljZXNbJHtPfV0gPSBpbmRpY2VzWyR7T31dICogdW5pZm9ybXMuc2ggLSB1bmlmb3Jtcy5waFN0YXJ0ICsgajtcXG4gICAgICAgICAgICAgICAgYCxDPWBcXG4gICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBgfXJldHVybmBcXG4gICAgICAgICAgICAke2UucmVnaXN0ZXJVbmlmb3JtcyhtKS5kZWNsYXJlVmFyaWFibGVzKHQsdil9XFxuXFxuICAgICAgICAgICAgJHtlLm1haW5TdGFydCgpfVxcbiAgICAgICAgICAgICAgJHtlLmd1YXJkQWdhaW5zdE91dE9mQm91bmRzV29ya2dyb3VwU2l6ZXMoXCJ1bmlmb3Jtcy5vdXRwdXRTaXplXCIpfVxcblxcbiAgICAgICAgICAgICAgbGV0IGluZGljZXMgPSAke3Yub2Zmc2V0VG9JbmRpY2VzKFwiZ2xvYmFsX2lkeFwiKX07XFxuICAgICAgICAgICAgICB2YXIgeEluZGljZXMgPSAke3Yub2Zmc2V0VG9JbmRpY2VzKFwiZ2xvYmFsX2lkeFwiKX07XFxuXFxuICAgICAgICAgICAgICB2YXIgdmFsdWUgPSAke199KCR7cH0pO1xcbiAgICAgICAgICAgICAgdmFyIHBhZCA9IDA7XFxuICAgICAgICAgICAgICAke1R9XFxuICAgICAgICAgICAgICAke3h9XFxuICAgICAgICAgICAgICAke0N9XFxuICAgICAgICAgICAgICAke2F9XFxuXFxuICAgICAgICAgICAgICBvdXRwdXRbZ2xvYmFsX2lkeF0gPSB2YWx1ZTtcXG4gICAgICAgICAgICB9YH1lbHNle2lmKHcpdGhyb3cgbmV3IEVycm9yKFwiUG9vbGluZyB3aXRoIGtlcm5lbFNoYXBlLmxlbmd0aCA+IDIgaXMgbm90IHN1cHBvcnRlZCBmb3IgTkhXQyBmb3JtYXQuXCIpO2xldCB4PWkua2VybmVsU2hhcGUubGVuZ3RoLFQ9aS5wYWRzLmxlbmd0aCxDPVwiXCI7cmV0dXJuIGg/Qz1gXFxuICAgICAgICAgICAgICAgIGlmICh4SW5kaWNlc1tqXSA+PSB1bmlmb3Jtcy54X3NoYXBlW2pdKSB7XFxuICAgICAgICAgICAgICAgICAgcGFkKys7XFxuICAgICAgICAgICAgICAgICAgaXNQYWQgPSB0cnVlO1xcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICBpZiAoIWlzUGFkKSB7XFxuICAgICAgICAgICAgICAgIGxldCB4X3ZhbCA9IHhbJHt0LmluZGljZXNUb09mZnNldChcInhJbmRpY2VzXCIpfV07XFxuICAgICAgICAgICAgICAgICR7dX1cXG4gICAgICAgICAgICAgIH1gOkM9YFxcbiAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgbGV0IHhfdmFsID0geFske3QuaW5kaWNlc1RvT2Zmc2V0KFwieEluZGljZXNcIil9XTtcXG4gICAgICAgICAgICAgICR7dX1cXG4gICAgICAgICAgICBgLGBcXG4gICAgICAgICAgICAke2UucmVnaXN0ZXJVbmlmb3JtcyhtKS5kZWNsYXJlVmFyaWFibGVzKHQsdil9XFxuXFxuICAgICAgICAgICAgJHtlLm1haW5TdGFydCgpfVxcbiAgICAgICAgICAgICAgJHtlLmd1YXJkQWdhaW5zdE91dE9mQm91bmRzV29ya2dyb3VwU2l6ZXMoXCJ1bmlmb3Jtcy5vdXRwdXRTaXplXCIpfVxcbiAgICAgICAgICAgICAgbGV0IGluZGljZXMgPSAke3Yub2Zmc2V0VG9JbmRpY2VzKFwiZ2xvYmFsX2lkeFwiKX07XFxuICAgICAgICAgICAgICB2YXIgeEluZGljZXMgPSAke3Yub2Zmc2V0VG9JbmRpY2VzKFwiZ2xvYmFsX2lkeFwiKX07XFxuXFxuICAgICAgICAgICAgICB2YXIgb2Zmc2V0czogYXJyYXk8dTMyLCAke3h9PjtcXG5cXG4gICAgICAgICAgICAgIHZhciB2YWx1ZSA9ICR7X30oJHtwfSk7XFxuICAgICAgICAgICAgICB2YXIgcGFkID0gMDtcXG4gICAgICAgICAgICAgIHZhciBpc1BhZCA9IGZhbHNlO1xcblxcbiAgICAgICAgICAgICAgZm9yICh2YXIgaTogdTMyID0gMHU7IGkgPCB1bmlmb3Jtcy5rZXJuZWxTaXplOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgdmFyIG9mZnNldCA9IGk7XFxuICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwdTsgaiA8ICR7eC0xfXU7IGorKykge1xcbiAgICAgICAgICAgICAgICAgIG9mZnNldHNbal0gPSBvZmZzZXQgLyAke2NlKFwidW5pZm9ybXMua2VybmVsU3RyaWRlc1wiLFwialwiLHgpfTtcXG4gICAgICAgICAgICAgICAgICBvZmZzZXQgLT0gb2Zmc2V0c1tqXSAqICR7Y2UoXCJ1bmlmb3Jtcy5rZXJuZWxTdHJpZGVzXCIsXCJqXCIseCl9O1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIG9mZnNldHNbJHt4LTF9XSA9IG9mZnNldDtcXG5cXG4gICAgICAgICAgICAgICAgaXNQYWQgPSBmYWxzZTtcXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9ICR7ci14fXU7IGogPCAke3J9dTsgaisrKSB7XFxuICAgICAgICAgICAgICAgICAgeEluZGljZXNbal0gPSBpbmRpY2VzW2pdICogJHtjZShcInVuaWZvcm1zLnN0cmlkZXNcIixgaiAtICR7ci14fXVgLHgpfVxcbiAgICAgICAgICAgICAgICAgICAgKyBvZmZzZXRzW2ogLSAke3IteH11XSAtICR7Y2UoXCJ1bmlmb3Jtcy5wYWRzXCIsXCJqIC0gMnVcIixUKX07XFxuICAgICAgICAgICAgICAgICAgJHtDfVxcbiAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgJHthfVxcblxcbiAgICAgICAgICAgICAgb3V0cHV0W2dsb2JhbF9pZHhdID0gdmFsdWU7XFxuICAgICAgICAgICAgfWB9fSxFdT1lPT5gJHtlLmZvcm1hdH07JHtlLmNlaWxNb2RlfTske2UuYXV0b1BhZH07JHtlLmtlcm5lbFNoYXBlLmxlbmd0aH1gLFdjPWU9PmAke0V1KGUpfTske2UuY291bnRJbmNsdWRlUGFkfWAsTmM9ZT0+YCR7RXUoZSl9OyR7ZS5zdG9yYWdlT3JkZXJ9OyR7ZS5kaWxhdGlvbnN9YCxQdT1lPT4oe2Zvcm1hdDplLmZvcm1hdCxhdXRvUGFkOltcIk5PVFNFVFwiLFwiVkFMSURcIixcIlNBTUVfVVBQRVJcIixcIlNBTUVfTE9XRVJcIl1bZS5hdXRvX3BhZF0sY2VpbE1vZGU6ZS5jZWlsX21vZGUsa2VybmVsU2hhcGU6ZS5rZXJuZWxfc2hhcGUsc3RyaWRlczplLnN0cmlkZXMscGFkczplLnBhZHN9KSxPdT0oZSx0LHIsbyk9PntsZXRbaSx1XT1BdSh0LG8sciksYT1WKFwieFwiLHQuZGF0YVR5cGUsdC5kaW1zLmxlbmd0aCkscD1hLnR5cGUudmFsdWUsbT1cInZhbHVlICs9IHhfdmFsO1wiLGg9XCJcIjtpLmNvdW50SW5jbHVkZVBhZD9oKz1gdmFsdWUgLz0gJHtwfSh1bmlmb3Jtcy5rZXJuZWxTaXplKTtgOmgrPWB2YWx1ZSAvPSAke3B9KGkzMih1bmlmb3Jtcy5rZXJuZWxTaXplKSAtIHBhZCk7YDtsZXRbZCx5LHcsXyx2XT1JdSh1LGkpO2QucHVzaCguLi5HKHQuZGltcyksLi4uRyh1KSk7bGV0IHg9W1wicmFua1wiXTtyZXR1cm57bmFtZTplLHNoYWRlckNhY2hlOntoaW50OmAke28uY2FjaGVLZXl9OyR7d307JHtffTske3Z9YCxpbnB1dERlcGVuZGVuY2llczp4fSxnZXRSdW5EYXRhOigpPT4oe291dHB1dHM6W3tkaW1zOnUsZGF0YVR5cGU6dC5kYXRhVHlwZX1dLGRpc3BhdGNoR3JvdXA6e3g6TWF0aC5jZWlsKFcuc2l6ZSh1KS82NCl9LHByb2dyYW1Vbmlmb3JtczpkfSksZ2V0U2hhZGVyU291cmNlOlQ9PlR1KFQsYSx0LmRpbXMubGVuZ3RoLHUubGVuZ3RoLGksbSxoLDAseSx3LF8sdil9fSxrdT1lPT57bGV0IHQ9ZS5jb3VudF9pbmNsdWRlX3BhZCE9PTAscj1QdShlKTtpZihyLmNlaWxNb2RlIT09MCl0aHJvdyBuZXcgRXJyb3IoXCJ1c2luZyBjZWlsKCkgaW4gc2hhcGUgY29tcHV0YXRpb24gaXMgbm90IHlldCBzdXBwb3J0ZWQgZm9yIEF2ZXJhZ2VQb29sXCIpO2xldCBvPXtjb3VudEluY2x1ZGVQYWQ6dCwuLi5yLGNhY2hlS2V5OlwiXCJ9O3JldHVybnsuLi5vLGNhY2hlS2V5OldjKG8pfX0sUnU9KGUsdCk9PntVbihlLmlucHV0cyksZS5jb21wdXRlKE91KFwiQXZlcmFnZVBvb2xcIixlLmlucHV0c1swXSwhMSx0KSl9LEJ1PXthdXRvUGFkOlwiXCIsY2VpbE1vZGU6MCxjb3VudEluY2x1ZGVQYWQ6ITEsa2VybmVsU2hhcGU6W10sc3RyaWRlczpbXSxwYWRzOltdLHN0b3JhZ2VPcmRlcjowLGRpbGF0aW9uczpbXX0sRHU9ZT0+e2xldCB0PWUuZm9ybWF0O3JldHVybntmb3JtYXQ6dCwuLi5CdSxjYWNoZUtleTp0fX0sTXU9KGUsdCk9PntVbihlLmlucHV0cyksZS5jb21wdXRlKE91KFwiR2xvYmFsQXZlcmFnZVBvb2xcIixlLmlucHV0c1swXSwhMCx0KSl9LHp1PShlLHQscixvKT0+e2xldFtpLHVdPUF1KHQsbyxyKSxhPWBcXG4gICAgICB2YWx1ZSA9IG1heCh4X3ZhbCwgdmFsdWUpO1xcbiAgICBgLHA9XCJcIixtPVYoXCJ4XCIsdC5kYXRhVHlwZSx0LmRpbXMubGVuZ3RoKSxoPVtcInJhbmtcIl0sW2QseSx3LF8sdl09SXUodSxpKTtyZXR1cm4gZC5wdXNoKC4uLkcodC5kaW1zKSwuLi5HKHUpKSx7bmFtZTplLHNoYWRlckNhY2hlOntoaW50OmAke28uY2FjaGVLZXl9OyR7d307JHtffTske3Z9YCxpbnB1dERlcGVuZGVuY2llczpofSxnZXRSdW5EYXRhOigpPT4oe291dHB1dHM6W3tkaW1zOnUsZGF0YVR5cGU6dC5kYXRhVHlwZX1dLGRpc3BhdGNoR3JvdXA6e3g6TWF0aC5jZWlsKFcuc2l6ZSh1KS82NCl9LHByb2dyYW1Vbmlmb3JtczpkfSksZ2V0U2hhZGVyU291cmNlOng9PlR1KHgsbSx0LmRpbXMubGVuZ3RoLHUubGVuZ3RoLGksYSxwLC0xZTUseSx3LF8sdil9fSxVdT0oZSx0KT0+e1VuKGUuaW5wdXRzKSxlLmNvbXB1dGUoenUoXCJNYXhQb29sXCIsZS5pbnB1dHNbMF0sITEsdCkpfSxWdT1lPT57bGV0IHQ9ZS5zdG9yYWdlX29yZGVyLHI9ZS5kaWxhdGlvbnMsbz1QdShlKTtpZih0IT09MCl0aHJvdyBuZXcgRXJyb3IoXCJjb2x1bW4gbWFqb3Igc3RvcmFnZSBvcmRlciBpcyBub3QgeWV0IHN1cHBvcnRlZCBmb3IgTWF4UG9vbFwiKTtpZihvLmNlaWxNb2RlIT09MCl0aHJvdyBuZXcgRXJyb3IoXCJ1c2luZyBjZWlsKCkgaW4gc2hhcGUgY29tcHV0YXRpb24gaXMgbm90IHlldCBzdXBwb3J0ZWQgZm9yIE1heFBvb2xcIik7bGV0IGk9e3N0b3JhZ2VPcmRlcjp0LGRpbGF0aW9uczpyLC4uLm8sY2FjaGVLZXk6XCJcIn07cmV0dXJuey4uLmksY2FjaGVLZXk6TmMoaSl9fSxXdT1lPT57bGV0IHQ9ZS5mb3JtYXQ7cmV0dXJue2Zvcm1hdDp0LC4uLkJ1LGNhY2hlS2V5OnR9fSxOdT0oZSx0KT0+e1VuKGUuaW5wdXRzKSxlLmNvbXB1dGUoenUoXCJHbG9iYWxNYXhQb29sXCIsZS5pbnB1dHNbMF0sITAsdCkpfX0pO3ZhciBHYyxMYyxHdSxMdT1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7ZHIoKTtWZSgpO19lKCk7R2M9KGUsdCxyKT0+e2xldCBvPWU9PT10LGk9ZTx0JiZyPDAsdT1lPnQmJnI+MDtpZihvfHxpfHx1KXRocm93IG5ldyBFcnJvcihcIlJhbmdlIHRoZXNlIGlucHV0c1xcJyBjb250ZW50cyBhcmUgaW52YWxpZC5cIil9LExjPShlLHQscixvKT0+e2xldCBpPU1hdGguYWJzKE1hdGguY2VpbCgodC1lKS9yKSksdT1baV0sYT1pLHA9c3QobyksbT1be3R5cGU6XCJ1aW50MzJcIixkYXRhOmF9LHt0eXBlOnAsZGF0YTplfSx7dHlwZTpwLGRhdGE6cn0sLi4uRyh1KV0saD1kPT57bGV0IHk9SihcIm91dHB1dFwiLG8sdS5sZW5ndGgpLHc9eS50eXBlLnZhbHVlLF89W3tuYW1lOlwib3V0cHV0U2l6ZVwiLHR5cGU6XCJ1MzJcIn0se25hbWU6XCJzdGFydFwiLHR5cGU6d30se25hbWU6XCJkZWx0YVwiLHR5cGU6d31dO3JldHVybmBcXG4gICAgICAgICR7ZC5yZWdpc3RlclVuaWZvcm1zKF8pLmRlY2xhcmVWYXJpYWJsZXMoeSl9XFxuICAgICAgICAke2QubWFpblN0YXJ0KCl9XFxuICAgICAgICAke2QuZ3VhcmRBZ2FpbnN0T3V0T2ZCb3VuZHNXb3JrZ3JvdXBTaXplcyhcInVuaWZvcm1zLm91dHB1dFNpemVcIil9XFxuICAgICAgICBvdXRwdXRbZ2xvYmFsX2lkeF0gPSB1bmlmb3Jtcy5zdGFydCArICR7d30oZ2xvYmFsX2lkeCkgKiB1bmlmb3Jtcy5kZWx0YTtcXG4gICAgICB9YH07cmV0dXJue25hbWU6XCJSYW5nZVwiLHNoYWRlckNhY2hlOntoaW50OmAke299YH0sZ2V0U2hhZGVyU291cmNlOmgsZ2V0UnVuRGF0YTooKT0+KHtvdXRwdXRzOlt7ZGltczp1LGRhdGFUeXBlOm99XSxkaXNwYXRjaEdyb3VwOnt4Ok1hdGguY2VpbChhLzY0KX0scHJvZ3JhbVVuaWZvcm1zOm19KX19LEd1PWU9PntsZXQgdD0wLHI9MCxvPTA7ZS5pbnB1dHNbMF0uZGF0YVR5cGU9PT02Pyh0PWUuaW5wdXRzWzBdLmdldEludDMyQXJyYXkoKVswXSxyPWUuaW5wdXRzWzFdLmdldEludDMyQXJyYXkoKVswXSxvPWUuaW5wdXRzWzJdLmdldEludDMyQXJyYXkoKVswXSk6ZS5pbnB1dHNbMF0uZGF0YVR5cGU9PT0xJiYodD1lLmlucHV0c1swXS5nZXRGbG9hdDMyQXJyYXkoKVswXSxyPWUuaW5wdXRzWzFdLmdldEZsb2F0MzJBcnJheSgpWzBdLG89ZS5pbnB1dHNbMl0uZ2V0RmxvYXQzMkFycmF5KClbMF0pLGxyLndlYmdwdS52YWxpZGF0ZUlucHV0Q29udGVudCYmR2ModCxyLG8pLGUuY29tcHV0ZShMYyh0LHIsbyxlLmlucHV0c1swXS5kYXRhVHlwZSkse2lucHV0czpbXX0pfX0pO3ZhciBGYyxqYyxxYyxLYyxZYyxaYyxYYyxKYyxRYyxlcCx0cCxGdSxycCxucCxvcCxpcCxhcCxqdSxxdSxLdT1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7Q2UoKTtZZSgpO19lKCk7RmM9KGUsdCk9PntpZihlLmV2ZXJ5KHI9PnI+MHx8KCgpPT57dGhyb3cgbmV3IEVycm9yKFwiUmVzaXplIHJlcXVpcmVzIHNjYWxlcyBpbnB1dCB2YWx1ZXMgdG8gYmUgcG9zaXRpdmVcIil9KSksZS5sZW5ndGg+MCl7aWYodC5tb2RlPT09XCJsaW5lYXJcIil7aWYoIShlLmxlbmd0aD09PTJ8fGUubGVuZ3RoPT09M3x8ZS5sZW5ndGg9PT00JiZlWzBdPT09MSYmZVsxXT09PTF8fGUubGVuZ3RoPT09NCYmZVswXT09PTEmJmVbM109PT0xfHxlLmxlbmd0aD09PTUmJmVbMF09PT0xJiZlWzFdPT09MSkpdGhyb3cgbmV3IEVycm9yKGBGb3IgbGluZWFyIG1vZGUsIFJlc2l6ZSByZXF1aXJlcyBzY2FsZXMgdG8gYmUgMkQsIDNELCA0RCB3aXRoIGVpdGhlciB0d28gb3V0ZXJtb3N0IG9yIG9uZSBpbm5lcm1vc3QgYW5kXFxuICAgICAgICAgICAgb25lIG91dGVybW9zdCBzY2FsZSB2YWx1ZXMgZXF1YWwgdG8gMSwgb3IgNUQgd2l0aCB0d28gb3V0ZXJtb3N0IHNjYWxlIHZhbHVlcyBlcXVhbCB0byAxYCl9ZWxzZSBpZih0Lm1vZGU9PT1cImN1YmljXCImJiEoZS5sZW5ndGg9PT0yfHxlLmxlbmd0aD09PTQmJmVbMF09PT0xJiZlWzFdPT09MXx8ZS5sZW5ndGg9PT00JiZlWzBdPT09MSYmZVszXT09PTEpKXRocm93IG5ldyBFcnJvcihcIlJlc2l6ZSByZXF1aXJlcyBzY2FsZXMgaW5wdXQgc2l6ZSB0byBiZSAyIG9yIDQgZm9yIGN1YmljIG1vZGVcIil9fSxqYz0oZSx0LHIpPT57dC5ldmVyeShpPT5pPj0wJiZpPHJ8fCgoKT0+e3Rocm93IG5ldyBFcnJvcihcIlJlc2l6ZSByZXF1aXJlcyBheGVzIGlucHV0IHZhbHVlcyB0byBiZSBwb3NpdGl2ZSBhbmQgbGVzcyB0aGFuIHJhbmtcIil9KSk7bGV0IG89bmV3IEFycmF5KHIpLmZpbGwoMSk7cmV0dXJuIHQuZm9yRWFjaCgoaSx1KT0+b1tpXT1lW3VdKSxvfSxxYz0oZSx0LHIsbyxpLHUpPT57bGV0W2EscCxtXT1yPjEwP1sxLDIsM106Wy0xLGUubGVuZ3RoPjE/MTotMSwtMV0saD1lWzBdLmRpbXMubGVuZ3RoO2lmKGE+MCYmZS5sZW5ndGg+YSYmZVthXS5kaW1zLmxlbmd0aD4wKWVbYV0uZ2V0RmxvYXQzMkFycmF5KCkuZm9yRWFjaChkPT51LnB1c2goZCkpO2Vsc2UgaWYodC5jb29yZGluYXRlVHJhbnNmb3JtTW9kZT09PVwidGZfY3JvcF9hbmRfcmVzaXplXCIpdGhyb3cgbmV3IEVycm9yKFwiUmVzaXplIHJlcXVpcmVzIFJvSSBpbnB1dCB0byBiZSBzcGVjaWZpZWQgd2hlbiBjb29yZGluYXRlVHJhbnNmb3JtTW9kZSBpcyB0ZkNyb3BBbmRSZXNpemVcIik7aWYocD4wJiZlLmxlbmd0aD5wJiZlW3BdLmRpbXMubGVuZ3RoPjApe2lmKGVbcF0uZ2V0RmxvYXQzMkFycmF5KCkuZm9yRWFjaChkPT5vLnB1c2goZCkpLG8ubGVuZ3RoIT09MCYmby5sZW5ndGghPT1oJiZyPj0xOCYmby5sZW5ndGghPT10LmF4ZXMubGVuZ3RoKXRocm93IG5ldyBFcnJvcihcIlJlc2l6ZSByZXF1aXJlcyBzY2FsZXMgaW5wdXQgc2l6ZSB0byBiZSBzYW1lIGFzIGlucHV0IHJhbmsgb3IgYXhlcyBzaXplIGZvciBvcHNldCAxOCBhbmQgdXBcIik7RmMobyx0KSx0LmF4ZXMubGVuZ3RoPjAmJmpjKG8sdC5heGVzLGgpLmZvckVhY2goKGQseSk9Pm9beV09ZCl9aWYobT4wJiZlLmxlbmd0aD5tJiYoZVttXS5nZXRCaWdJbnQ2NEFycmF5KCkuZm9yRWFjaChkPT5pLnB1c2goTnVtYmVyKGQpKSksaS5sZW5ndGghPT1ofHxyPj0xOCYmaS5sZW5ndGg9PT10LmF4ZXMubGVuZ3RoKSl0aHJvdyBuZXcgRXJyb3IoXCJSZXNpemUgcmVxdWlyZXMgc2l6ZXMgaW5wdXQgc2l6ZSB0byBiZSBzYW1lIGFzIGlucHV0IHJhbmsgb3IgYXhlcyBzaXplIGZvciBvcHNldCAxOCBhbmQgdXBcIik7aWYodC5heGVzLmxlbmd0aD4wKXtpZihvLmxlbmd0aCE9PXQuYXhlcy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKFxcJ1Jlc2l6ZSByZXF1aXJlcyBcInNjYWxlc1wiIGlucHV0IHNpemUgdG8gYmUgb2YgYXhlcyByYW5rIHdoZW4gYXhlcyBhdHRyaWJ1dGVzIGlzIHNwZWNpZmllZFxcJyk7aWYoaS5sZW5ndGghPT10LmF4ZXMubGVuZ3RoKXRocm93IG5ldyBFcnJvcihcXCdSZXNpemUgcmVxdWlyZXMgXCJzaXplc1wiIGlucHV0IHNpemUgdG8gYmUgb2YgcmFuayBheGVzIHJhbmsgd2hlbiBheGVzIGF0dHJpYnV0ZXMgaXMgc3BlY2lmaWVkXFwnKX1pZih0eXBlb2YgbzxcInVcIiYmdHlwZW9mIGk8XCJ1XCImJm8ubGVuZ3RoPjAmJmkubGVuZ3RoPmgpdGhyb3cgbmV3IEVycm9yKFwiUmVzaXplIHJlcXVpcmVzIG9ubHkgb2Ygc2NhbGVzIG9yIHNpemVzIHRvIGJlIHNwZWNpZmllZFwiKX0sS2M9KGUsdCk9PmBmbiBnZXRPcmlnaW5hbENvb3JkaW5hdGVGcm9tUmVzaXplZENvb3JkaW5hdGUoeFJlc2l6ZWQ6IHUzMiwgeFNjYWxlOiBmMzIsIGxlbmd0aFJlc2l6ZWQ6IHUzMixcXG4gICAgIGxlbmd0aE9yaWdpbmFsOiB1MzIsIHJvaVN0YXJ0OiBmMzIsIHJvaUVuZDogZjMyKSAtPiAke3R9IHsgYCsoKCk9Pntzd2l0Y2goZSl7Y2FzZVwiYXN5bW1ldHJpY1wiOnJldHVybmByZXR1cm4gJHt0fSh4UmVzaXplZCkgLyAke3R9KHhTY2FsZSk7YDtjYXNlXCJweXRvcmNoX2hhbGZfcGl4ZWxcIjpyZXR1cm5gaWYgKGxlbmd0aFJlc2l6ZWQgPiAxKSB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCR7dH0oeFJlc2l6ZWQpICsgMC41KSAvICR7dH0oeFNjYWxlKSAtIDAuNTtcXG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAuMDtcXG4gICAgICAgICAgICAgICAgICB9YDtjYXNlXCJ0Zl9oYWxmX3BpeGVsX2Zvcl9ublwiOnJldHVybmByZXR1cm4gKCR7dH0oeFJlc2l6ZWQpICsgMC41KSAvICR7dH0oeFNjYWxlKTtgO2Nhc2VcImFsaWduX2Nvcm5lcnNcIjpyZXR1cm5gaWYgKGxlbmd0aFJlc2l6ZWQgPT0gMSkge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAuMDtcXG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHdob2xlIHBhcnQgYW5kIHRoZSBmcmFjdGlvbmFsIHBhcnQgYXJlIGNhbGN1bGF0ZWQgc2VwYXJhdGVseSBkdWUgdG8gaW5hY2N1cmFjeSBvZiBmbG9hdGluZ1xcbiAgICAgICAgICAgICAgICAgICAgLy8gcG9pbnQgZGl2aXNpb24uIEFzIGFuIGV4YW1wbGUsIGYzMigyMSkgLyBmMzIoNykgbWF5IGV2YWx1YXRlIHRvIDIuOTkuLi4gaW5zdGVhZCBvZiAzLCBjYXVzaW5nIGFuXFxuICAgICAgICAgICAgICAgICAgICAvLyBvZmZzZXQtYnktb25lIGVycm9yIGxhdGVyIGluIGZsb29yKCkuXFxuICAgICAgICAgICAgICAgICAgICBsZXQgd2hvbGUgPSAke3R9KHhSZXNpemVkICogKGxlbmd0aE9yaWdpbmFsIC0gMSkgLyAobGVuZ3RoUmVzaXplZCAtIDEpKTtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBmcmFjdCA9XFxuICAgICAgICAgICAgICAgICAgICAgICAgJHt0fSh4UmVzaXplZCAqIChsZW5ndGhPcmlnaW5hbCAtIDEpICUgKGxlbmd0aFJlc2l6ZWQgLSAxKSkgLyAke3R9KGxlbmd0aFJlc2l6ZWQgLSAxKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB3aG9sZSArIGZyYWN0O1xcbiAgICAgICAgICAgICAgICAgIH1gO2Nhc2VcInRmX2Nyb3BfYW5kX3Jlc2l6ZVwiOnJldHVybmBpZiAobGVuZ3RoUmVzaXplZCA+IDEpIHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAke3R9KHJvaVN0YXJ0KSAqICR7dH0obGVuZ3RoT3JpZ2luYWwgLSAxKSArXFxuICAgICAgICAgICAgICAgICAgICAgICAgKCR7dH0oeFJlc2l6ZWQpICogJHt0fShyb2lFbmQgLSByb2lTdGFydCkgKiAke3R9KGxlbmd0aE9yaWdpbmFsIC0gMSkpIC9cXG4gICAgICAgICAgICAgICAgICAgICAgICAke3R9KGxlbmd0aFJlc2l6ZWQgLSAxKTtcXG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAuNSAqICR7dH0ocm9pU3RhcnQgKyByb2lFbmQpICogJHt0fShsZW5ndGhPcmlnaW5hbCAtIDEpO1xcbiAgICAgICAgICAgICAgICAgIH1gO2Nhc2VcImhhbGZfcGl4ZWxfc3ltbWV0cmljXCI6cmV0dXJuYGNvbnN0IG91dHB1dFdpZHRoID0gJHt0fXhTY2FsZSAqICR7dH0obGVuZ3RoUmVzaXplZCk7XFxuICAgICAgICAgICAgICAgICAgY29uc3QgYWRqdXN0bWVudCA9ICR7dH0obGVuZ3RoUmVzaXplZCkgLyBvdXRwdXRXaWR0aDtcXG4gICAgICAgICAgICAgICAgICBjb25zdCBjZW50ZXIgPSAke3R9KGxlbmd0aE9yaWdpbmFsKSAvIDI7XFxuICAgICAgICAgICAgICAgICAgY29uc3Qgb2Zmc2V0ID0gY2VudGVyICogKDEgLSBhZGp1c3RtZW50KTtcXG4gICAgICAgICAgICAgICAgICByZXR1cm4gb2Zmc2V0ICsgKCgke3R9KHhSZXNpemVkKSArIDAuNSkgLyAke3R9KHhTY2FsZSkpIC0gMC41O2A7Y2FzZVwiaGFsZl9waXhlbFwiOnJldHVybmByZXR1cm4gKCgke3R9KHhSZXNpemVkKSArIDAuNSkgLyAke3R9KHhTY2FsZSkpIC0gMC41O2A7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYENvb3JkaW5hdGUgdHJhbnNmb3JtIG1vZGUgJHtlfSBpcyBub3Qgc3VwcG9ydGVkYCl9fSkoKStcIn1cIixZYz0oZSx0LHIpPT5gZm4gZ2V0TmVhcmVzdFBpeGVsRnJvbU9yaWdpbmFsKHhPcmlnaW5hbDogJHtyfSwgaXNEb3duU2FtcGxlOiBib29sKSAtPiAke3J9IHtgKygoKT0+e3N3aXRjaChlKXtjYXNlXCJyb3VuZF9wcmVmZXJfY2VpbFwiOnJldHVyblwiaWYgKGZyYWN0KHhPcmlnaW5hbCkgPT0gMC41KSB7ICAgICAgICAgICAgIHJldHVybiBjZWlsKHhPcmlnaW5hbCk7ICAgICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgICByZXR1cm4gcm91bmQoeE9yaWdpbmFsKTsgICAgICAgICAgIH1cIjtjYXNlXCJmbG9vclwiOnJldHVyblwicmV0dXJuIGZsb29yKHhPcmlnaW5hbCk7XCI7Y2FzZVwiY2VpbFwiOnJldHVyblwicmV0dXJuIGNlaWwoeE9yaWdpbmFsKTtcIjtjYXNlXCJyb3VuZF9wcmVmZXJfZmxvb3JcIjpyZXR1cm5cImlmIChmcmFjdCh4T3JpZ2luYWwpID09IDAuNSkgeyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmbG9vcih4T3JpZ2luYWwpOyAgICAgICAgICAgICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgICAgIHJldHVybiByb3VuZCh4T3JpZ2luYWwpOyAgICAgICAgICAgICAgICAgICB9XCI7Y2FzZVwic2ltcGxlXCI6ZGVmYXVsdDppZih0PDExKXJldHVyblwiaWYgKGlzRG93blNhbXBsZSkgICAgICAgICAgICAgICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2VpbCh4T3JpZ2luYWwpOyAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geE9yaWdpbmFsOyAgICAgICAgICAgICAgICAgICAgIH1cIjt0aHJvdyBuZXcgRXJyb3IoYE5lYXJlc3QgbW9kZSAke2V9IGlzIG5vdCBzdXBwb3J0ZWRgKX19KSgpK1wifVwiLFpjPShlLHQscik9PntsZXQgbz1uZXcgQXJyYXkocikuZmlsbCgwKS5jb25jYXQobmV3IEFycmF5KHIpLmZpbGwoMSkpLGk9ZS5sZW5ndGg9PT0wP286ZS5zbGljZSgpO3JldHVybiB0Lmxlbmd0aD4wPyh0LmZvckVhY2goKHUsYSk9PntvW3VdPWlbYV0sb1thK3JdPWlbdC5sZW5ndGgrYV19KSxvKTppfSxYYz0oZSx0LHIsbyk9PntsZXQgaT1bXTtpZihyLmxlbmd0aD4wKWlmKG8ubGVuZ3RoPjApe2lmKGUuZm9yRWFjaCh1PT5pLnB1c2godSkpLE1hdGgubWF4KC4uLm8pPmUubGVuZ3RoKXRocm93IG5ldyBFcnJvcihcImF4ZXMgaXMgb3V0IG9mIGJvdW5kXCIpO28uZm9yRWFjaCgodSxhKT0+aVt1XT1yW2FdKX1lbHNlIHIuZm9yRWFjaCh1PT5pLnB1c2godSkpO2Vsc2V7aWYodC5sZW5ndGg9PT0wKXRocm93IG5ldyBFcnJvcihcIlJlc2l6ZSByZXF1aXJlcyBlaXRoZXIgc2NhbGVzIG9yIHNpemVzLlwiKTtpPWUubWFwKCh1LGEpPT5NYXRoLnJvdW5kKHUqdFthXSkpfXJldHVybiBpfSxKYz0oZSx0LHIpPT57bGV0IG89KCgpPT57c3dpdGNoKHIua2VlcEFzcGVjdFJhdGlvUG9saWN5KXtjYXNlXCJub3RfbGFyZ2VyXCI6cmV0dXJuIHIuYXhlcy5sZW5ndGg+MD9NYXRoLm1pbiguLi5yLmF4ZXMubWFwKHU9PnRbdV0pLE51bWJlci5NQVhfVkFMVUUpOk1hdGgubWluKC4uLnQsTnVtYmVyLk1BWF9WQUxVRSk7Y2FzZVwibm90X3NtYWxsZXJcIjpyZXR1cm4gci5heGVzLmxlbmd0aD4wP01hdGgubWF4KC4uLnIuYXhlcy5tYXAodT0+dFt1XSksTnVtYmVyLk1JTl9WQUxVRSk6TWF0aC5tYXgoLi4udCxOdW1iZXIuTUlOX1ZBTFVFKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgS2VlcCBhc3BlY3QgcmF0aW8gcG9saWN5ICR7ci5rZWVwQXNwZWN0UmF0aW9Qb2xpY3l9IGlzIG5vdCBzdXBwb3J0ZWRgKX19KSgpO3QuZmlsbCgxLDAsdC5sZW5ndGgpO2xldCBpPWUuc2xpY2UoKTtyZXR1cm4gci5heGVzLmxlbmd0aD4wPyhyLmF4ZXMuZm9yRWFjaCh1PT50W3VdPW8pLHIuYXhlcy5mb3JFYWNoKHU9PmlbdV09TWF0aC5yb3VuZChlW3VdKnRbdV0pKSk6KHQuZmlsbChvLDAsdC5sZW5ndGgpLGkuZm9yRWFjaCgodSxhKT0+aVthXT1NYXRoLnJvdW5kKHUqdFthXSkpKSxpfSxRYz0oZSx0LHIsbyxpKT0+YFxcbiAgICBmbiBjYWxjdWxhdGVPcmlnaW5hbEluZGljZXNGcm9tT3V0cHV0SW5kaWNlcyhvdXRwdXRfaW5kaWNlczogJHtlLnR5cGUuaW5kaWNlc30pIC0+IGFycmF5PCR7ZS50eXBlLnZhbHVlfSwgJHtyLmxlbmd0aH0+IHtcXG4gICAgICB2YXIgb3JpZ2luYWxfaW5kaWNlczogYXJyYXk8JHtlLnR5cGUudmFsdWV9LCAke3IubGVuZ3RofT47XFxuICAgICAgZm9yICh2YXIgaTp1MzIgPSAwOyBpIDwgJHtyLmxlbmd0aH07IGkrKykge1xcbiAgICAgICAgdmFyIG91dHB1dF9pbmRleCA9ICR7ZS5pbmRpY2VzR2V0KFwib3V0cHV0X2luZGljZXNcIixcImlcIil9O1xcbiAgICAgICAgdmFyIHNjYWxlID0gJHtjZShcInVuaWZvcm1zLnNjYWxlc1wiLFwiaVwiLG8pfTtcXG4gICAgICAgIHZhciByb2lfbG93ID0gJHtjZShcInVuaWZvcm1zLnJvaVwiLFwiaVwiLGkpfTtcXG4gICAgICAgIHZhciByb2lfaGkgPSAke2NlKFwidW5pZm9ybXMucm9pXCIsYGkgKyAke3QubGVuZ3RofWAsaSl9O1xcbiAgICAgICAgaWYgKHNjYWxlID09IDEuMCkge1xcbiAgICAgICAgICBvcmlnaW5hbF9pbmRpY2VzW2ldID0gJHtlLnR5cGUudmFsdWV9KG91dHB1dF9pbmRleCk7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICB2YXIgaW5wdXRfc2hhcGVfaSA9ICR7Y2UoXCJ1bmlmb3Jtcy5pbnB1dF9zaGFwZVwiLFwiaVwiLHQubGVuZ3RoKX07XFxuICAgICAgICAgIHZhciBvdXRwdXRfc2hhcGVfaSA9ICR7Y2UoXCJ1bmlmb3Jtcy5vdXRwdXRfc2hhcGVcIixcImlcIixyLmxlbmd0aCl9O1xcbiAgICAgICAgICBvcmlnaW5hbF9pbmRpY2VzW2ldID0gZ2V0T3JpZ2luYWxDb29yZGluYXRlRnJvbVJlc2l6ZWRDb29yZGluYXRlKG91dHB1dF9pbmRleCwgc2NhbGUsIG91dHB1dF9zaGFwZV9pLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0X3NoYXBlX2ksIHJvaV9sb3csIHJvaV9oaSk7XFxuICAgICAgICB9XFxuICAgICAgfVxcbiAgICAgIHJldHVybiBvcmlnaW5hbF9pbmRpY2VzO1xcbiAgICB9YCxlcD0oZSx0LHIsbyxpLHUsYSk9PmBcXG4gICAgZm4gY2FsY3VsYXRlSW5wdXRJbmRpY2VzRnJvbU91dHB1dEluZGljZXMob3V0cHV0X2luZGljZXM6ICR7dC50eXBlLmluZGljZXN9KSAtPiAke2UudHlwZS5pbmRpY2VzfSB7XFxuICAgICAgdmFyIGlucHV0X2luZGljZXM6ICR7ZS50eXBlLmluZGljZXN9O1xcbiAgICAgIGZvciAodmFyIGk6dTMyID0gMDsgaSA8ICR7by5sZW5ndGh9OyBpKyspIHtcXG4gICAgICAgIHZhciBvdXRwdXRfaW5kZXggPSAke3QuaW5kaWNlc0dldChcIm91dHB1dF9pbmRpY2VzXCIsXCJpXCIpfTtcXG4gICAgICAgIHZhciBpbnB1dF9pbmRleDogdTMyO1xcbiAgICAgICAgdmFyIHNjYWxlID0gJHtjZShcInVuaWZvcm1zLnNjYWxlc1wiLFwiaVwiLGkpfTtcXG4gICAgICAgIGlmIChzY2FsZSA9PSAxLjApIHtcXG4gICAgICAgICAgaW5wdXRfaW5kZXggPSBvdXRwdXRfaW5kZXg7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICB2YXIgcm9pX2xvdyA9ICR7Y2UoXCJ1bmlmb3Jtcy5yb2lcIixcImlcIix1KX07XFxuICAgICAgICAgIHZhciByb2lfaGkgPSAke2NlKFwidW5pZm9ybXMucm9pXCIsYGkgKyAke3IubGVuZ3RofWAsdSl9O1xcbiAgICAgICAgICB2YXIgaW5wdXRfc2hhcGVfaSA9ICR7Y2UoXCJ1bmlmb3Jtcy5pbnB1dF9zaGFwZVwiLFwiaVwiLHIubGVuZ3RoKX07XFxuICAgICAgICAgIHZhciBvdXRwdXRfc2hhcGVfaSA9ICR7Y2UoXCJ1bmlmb3Jtcy5vdXRwdXRfc2hhcGVcIixcImlcIixvLmxlbmd0aCl9O1xcbiAgICAgICAgICB2YXIgb3JpZ2luYWxfaWR4ID0gZ2V0T3JpZ2luYWxDb29yZGluYXRlRnJvbVJlc2l6ZWRDb29yZGluYXRlKG91dHB1dF9pbmRleCwgc2NhbGUsIG91dHB1dF9zaGFwZV9pLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0X3NoYXBlX2ksIHJvaV9sb3csIHJvaV9oaSk7XFxuICAgICAgICAgIGlmICghJHthfSB8fCAob3JpZ2luYWxfaWR4ID49IDAgJiYgb3JpZ2luYWxfaWR4IDwgJHt0LnR5cGUudmFsdWV9KGlucHV0X3NoYXBlX2kpKSkge1xcbiAgICAgICAgICAgIGlmIChvcmlnaW5hbF9pZHggPCAwKSB7XFxuICAgICAgICAgICAgICBpbnB1dF9pbmRleCA9IDA7XFxuICAgICAgICAgICAgfSBlbHNlIGlmIChvcmlnaW5hbF9pZHggPiAke3QudHlwZS52YWx1ZX0oaW5wdXRfc2hhcGVfaSAtIDEpKSB7XFxuICAgICAgICAgICAgICBpbnB1dF9pbmRleCA9IGlucHV0X3NoYXBlX2kgLSAxO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICBpbnB1dF9pbmRleCA9IHUzMihnZXROZWFyZXN0UGl4ZWxGcm9tT3JpZ2luYWwob3JpZ2luYWxfaWR4LCBzY2FsZSA8IDEpKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgaW5wdXRfaW5kZXggPSB1MzIob3JpZ2luYWxfaWR4KTtcXG4gICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgJHtlLmluZGljZXNTZXQoXCJpbnB1dF9pbmRpY2VzXCIsXCJpXCIsXCIgaW5wdXRfaW5kZXhcIil9XFxuICAgICAgfVxcbiAgICAgIHJldHVybiBpbnB1dF9pbmRpY2VzO1xcbiAgICB9YCx0cD0oZSx0KT0+YFxcbiAgICBmbiBjaGVja0lucHV0SW5kaWNlcyhpbnB1dF9pbmRpY2VzOiAke2UudHlwZS5pbmRpY2VzfSkgLT4gYm9vbCB7XFxuICAgICAgZm9yICh2YXIgaTp1MzIgPSAwOyBpIDwgJHt0Lmxlbmd0aH07IGkrKykge1xcbiAgICAgICAgdmFyIGlucHV0X2luZGV4ID0gJHtlLmluZGljZXNHZXQoXCJpbnB1dF9pbmRpY2VzXCIsXCJpXCIpfTtcXG4gICAgICAgIGlmIChpbnB1dF9pbmRleCA8IDAgfHwgaW5wdXRfaW5kZXggPj0gJHtjZShcInVuaWZvcm1zLmlucHV0X3NoYXBlXCIsXCJpXCIsdC5sZW5ndGgpfSkge1xcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XFxuICAgICAgICB9XFxuICAgICAgfVxcbiAgICAgIHJldHVybiB0cnVlO1xcbiAgICB9YCxGdT0oZSx0LHIsbyk9PmUucmFuaz5vP2BcXG4gICAgJHtlLmluZGljZXNTZXQoXCJpbnB1dF9pbmRpY2VzXCIsdCxcImNoYW5uZWxcIil9O1xcbiAgICAke2UuaW5kaWNlc1NldChcImlucHV0X2luZGljZXNcIixyLFwiYmF0Y2hcIil9O1xcbmA6XCJcIixycD0oZSx0LHIsbyxpKT0+e2xldFthLHAsbSxoXT1yLmxlbmd0aD09PTI/Wy0xLDAsMSwtMV06WzAsMiwzLDFdLGQ9ZS50eXBlLnZhbHVlO3JldHVybmBcXG4gICAgZm4gZ2V0SW5wdXRWYWx1ZShiYXRjaDogdTMyLCBjaGFubmVsOiB1MzIsIHJvdzogdTMyLCBjb2w6IHUzMikgLT4gJHtkfSB7XFxuICAgICAgdmFyIGlucHV0X2luZGljZXM6ICR7ZS50eXBlLmluZGljZXN9O1xcbiAgICAgICR7ZS5pbmRpY2VzU2V0KFwiaW5wdXRfaW5kaWNlc1wiLHAsYG1heCgwLCBtaW4ocm93LCAke3JbcF19IC0gMSkpYCl9O1xcbiAgICAgICR7ZS5pbmRpY2VzU2V0KFwiaW5wdXRfaW5kaWNlc1wiLG0sYG1heCgwLCBtaW4oY29sLCAke3JbbV19IC0gMSkpYCl9O1xcbiAgICAgICR7RnUoZSxoLGEsMil9XFxuICAgICAgcmV0dXJuICR7ZS5nZXRCeUluZGljZXMoXCJpbnB1dF9pbmRpY2VzXCIpfTtcXG4gICAgfVxcblxcbiAgICBmbiBiaWxpbmVhckludGVycG9sYXRpb24ob3V0cHV0X2luZGljZXM6ICR7dC50eXBlLmluZGljZXN9KSAtPiAke2R9IHtcXG4gICAgICB2YXIgb3JpZ2luYWxJbmRpY2VzID0gY2FsY3VsYXRlT3JpZ2luYWxJbmRpY2VzRnJvbU91dHB1dEluZGljZXMob3V0cHV0X2luZGljZXMpO1xcbiAgICAgIHZhciByb3c6JHtkfSA9IG9yaWdpbmFsSW5kaWNlc1ske3B9XTtcXG4gICAgICB2YXIgY29sOiR7ZH0gPSBvcmlnaW5hbEluZGljZXNbJHttfV07XFxuICAgICAgJHtvP2BpZiAocm93IDwgMCB8fCByb3cgPiAoJHtyW3BdfSAtIDEpIHx8IGNvbCA8IDAgfHwgY29sID4gKCR7clttXX0gLSAxKSkge1xcbiAgICAgICAgcmV0dXJuICR7aX07XFxuICAgICAgfWA6XCJcIn07XFxuICAgICAgcm93ID0gbWF4KDAsIG1pbihyb3csICR7cltwXX0gLSAxKSk7XFxuICAgICAgY29sID0gbWF4KDAsIG1pbihjb2wsICR7clttXX0gLSAxKSk7XFxuICAgICAgdmFyIHJvdzE6IHUzMiA9IHUzMihyb3cpO1xcbiAgICAgIHZhciBjb2wxOiB1MzIgPSB1MzIoY29sKTtcXG4gICAgICB2YXIgcm93MjogdTMyID0gdTMyKHJvdyArIDEpO1xcbiAgICAgIHZhciBjb2wyOiB1MzIgPSB1MzIoY29sICsgMSk7XFxuICAgICAgdmFyIGNoYW5uZWw6IHUzMiA9ICR7ci5sZW5ndGg+Mj9gdTMyKG9yaWdpbmFsSW5kaWNlc1ske2h9XSlgOlwiMFwifTtcXG4gICAgICB2YXIgYmF0Y2g6IHUzMiA9ICAke3IubGVuZ3RoPjI/YHUzMihvcmlnaW5hbEluZGljZXNbJHthfV0pYDpcIjBcIn07XFxuICAgICAgdmFyIHgxMTogJHtkfSA9IGdldElucHV0VmFsdWUoYmF0Y2gsIGNoYW5uZWwsIHJvdzEsIGNvbDEpO1xcbiAgICAgIHZhciB4MTI6ICR7ZH0gPSBnZXRJbnB1dFZhbHVlKGJhdGNoLCBjaGFubmVsLCByb3cxLCBjb2wyKTtcXG4gICAgICB2YXIgeDIxOiAke2R9ID0gZ2V0SW5wdXRWYWx1ZShiYXRjaCwgY2hhbm5lbCwgcm93MiwgY29sMSk7XFxuICAgICAgdmFyIHgyMjogJHtkfSA9IGdldElucHV0VmFsdWUoYmF0Y2gsIGNoYW5uZWwsIHJvdzIsIGNvbDIpO1xcbiAgICAgIHZhciBkeDE6ICR7ZH0gPSBhYnMocm93IC0gJHtkfShyb3cxKSk7XFxuICAgICAgdmFyIGR4MjogJHtkfSA9IGFicygke2R9KHJvdzIpIC0gcm93KTtcXG4gICAgICB2YXIgZHkxOiAke2R9ID0gYWJzKGNvbCAtICR7ZH0oY29sMSkpO1xcbiAgICAgIHZhciBkeTI6ICR7ZH0gPSBhYnMoJHtkfShjb2wyKSAtIGNvbCk7XFxuICAgICAgaWYgKHJvdzEgPT0gcm93Mikge1xcbiAgICAgICAgZHgxID0gMC41O1xcbiAgICAgICAgZHgyID0gMC41O1xcbiAgICAgIH1cXG4gICAgICBpZiAoY29sMSA9PSBjb2wyKSB7XFxuICAgICAgICBkeTEgPSAwLjU7XFxuICAgICAgICBkeTIgPSAwLjU7XFxuICAgICAgfVxcbiAgICAgIHJldHVybiAoeDExICogZHgyICogZHkyICsgeDEyICogZHgyICogZHkxICsgeDIxICogZHgxICogZHkyICsgeDIyICogZHgxICogZHkxKTtcXG4gICAgfWB9LG5wPShlLHQscixvLGksdSxhLHAsbSxoKT0+e2xldCBkPXIubGVuZ3RoPT09Mix5PSEwLFt3LF9dPWQ/WzAsMV06eT9bMiwzXTpbMSwyXSx2PWUudHlwZS52YWx1ZSx4PVQ9PntsZXQgQz1UPT09dz9cInJvd1wiOlwiY29sXCI7cmV0dXJuYFxcbiAgICAgIGZuICR7Q31DdWJpY0ludGVycG9sYXRpb24oaW5wdXRfaW5kaWNlczogJHtlLnR5cGUuaW5kaWNlc30sIG91dHB1dF9pbmRpY2VzOiAke3QudHlwZS5pbmRpY2VzfSkgLT4gJHt2fSB7XFxuICAgICAgICB2YXIgb3V0cHV0X2luZGV4ID0gJHt0LmluZGljZXNHZXQoXCJvdXRwdXRfaW5kaWNlc1wiLFQpfTtcXG4gICAgICAgIHZhciBvcmlnaW5hbElkeDogJHt2fSA9IGdldE9yaWdpbmFsQ29vcmRpbmF0ZUZyb21SZXNpemVkQ29vcmRpbmF0ZShvdXRwdXRfaW5kZXgsICR7aVtUXX0sXFxuICAgICAgICAke29bVF19LCAke3JbVF19LCAke3VbVF19LCAke3VbVF19ICsgJHtyLmxlbmd0aH0pO1xcbiAgICAgICAgdmFyIGZyYWN0T3JpZ2luYWxJZHg6ICR7dn0gPSBvcmlnaW5hbElkeCAtIGZsb29yKG9yaWdpbmFsSWR4KTtcXG4gICAgICAgIHZhciBjb2VmcyA9IGdldEN1YmljSW50ZXJwb2xhdGlvbkNvZWZzKGZyYWN0T3JpZ2luYWxJZHgpO1xcblxcbiAgICAgICAgaWYgKCR7cH0gJiYgKG9yaWdpbmFsSWR4IDwgMCB8fCBvcmlnaW5hbElkeCA+ICgke3JbVF19IC0gMSkpKSB7XFxuICAgICAgICAgIHJldHVybiAke219O1xcbiAgICAgICAgfVxcbiAgICAgICAgdmFyIGRhdGE6IGFycmF5PCR7dn0sIDQ+ID0gYXJyYXk8JHt2fSwgND4oMC4wLCAwLjAsIDAuMCwgMC4wKTtcXG4gICAgICAgIGZvciAodmFyIGk6IGkzMiA9IC0xOyBpIDwgMzsgaSsrKSB7XFxuICAgICAgICAgIHZhciAke0N9OiAke3Z9ID0gb3JpZ2luYWxJZHggKyAke3Z9KGkpO1xcbiAgICAgICAgICBpZiAoJHtDfSA8IDAgfHwgJHtDfSA+PSAke3JbVF19KSB7XFxuICAgICAgICAgICAgJHsoKCk9Pmg/YGNvZWZzW2kgKyAxXSA9IDAuMDtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtgOnA/YHJldHVybiAke219O2A6YCR7Q30gPSBtYXgoMCwgbWluKCR7Q30sICR7cltUXX0gLSAxKSk7YCkoKX07XFxuICAgICAgICAgIH1cXG4gICAgICAgIHZhciBpbnB1dF9pbmRpY2VzX2NvcHk6ICR7ZS50eXBlLmluZGljZXN9ID0gaW5wdXRfaW5kaWNlcztcXG4gICAgICAgICAgJHtlLmluZGljZXNTZXQoXCJpbnB1dF9pbmRpY2VzX2NvcHlcIixULGB1MzIoJHtDfSlgKX07XFxuICAgICAgICAgIGRhdGFbaSArIDFdID0gJHtUPT09dz9lLmdldEJ5SW5kaWNlcyhcImlucHV0X2luZGljZXNfY29weVwiKTpcInJvd0N1YmljSW50ZXJwb2xhdGlvbihpbnB1dF9pbmRpY2VzX2NvcHksIG91dHB1dF9pbmRpY2VzKVwifTtcXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiBjdWJpY0ludGVycG9sYXRpb24xRChkYXRhLCBjb2Vmcyk7XFxuICAgICAgfWB9O3JldHVybmBcXG4gICAgJHt4KHcpfTtcXG4gICAgJHt4KF8pfTtcXG4gIGZuIGdldEN1YmljSW50ZXJwb2xhdGlvbkNvZWZzKHM6ICR7dn0pIC0+IGFycmF5PCR7dn0sIDQ+IHtcXG4gICAgdmFyIGFic1MgPSBhYnMocyk7XFxuICAgIHZhciBjb2VmZnM6IGFycmF5PCR7dn0sIDQ+ID0gYXJyYXk8JHt2fSwgND4oMC4wLCAwLjAsIDAuMCwgMC4wKTtcXG4gICAgdmFyIG9uZU1pbnVzQWJzUzogJHt2fSA9IDEuMCAtIGFic1M7XFxuICAgIHZhciB0d29NaW51c0Fic1M6ICR7dn0gPSAyLjAgLSBhYnNTO1xcbiAgICB2YXIgb25lUGx1c0Fic1M6ICR7dn0gPSAxLjAgKyBhYnNTO1xcbiAgICBjb2VmZnNbMF0gPSAoKCR7YX0gKiBvbmVQbHVzQWJzUyAtIDUgKiAke2F9KSAqIG9uZVBsdXNBYnNTICsgOCAqICR7YX0pICogb25lUGx1c0Fic1MgLSA0ICogJHthfTtcXG4gICAgY29lZmZzWzFdID0gKCgke2F9ICsgMikgKiBhYnNTIC0gKCR7YX0gKyAzKSkgKiBhYnNTICogYWJzUyArIDE7XFxuICAgIGNvZWZmc1syXSA9ICgoJHthfSArIDIpICogb25lTWludXNBYnNTIC0gKCR7YX0gKyAzKSkgKiBvbmVNaW51c0Fic1MgKiBvbmVNaW51c0Fic1MgKyAxO1xcbiAgICBjb2VmZnNbM10gPSAoKCR7YX0gKiB0d29NaW51c0Fic1MgLSA1ICogJHthfSkgKiB0d29NaW51c0Fic1MgKyA4ICogJHthfSkgKiB0d29NaW51c0Fic1MgLSA0ICogJHthfTtcXG4gICAgcmV0dXJuIGNvZWZmcztcXG4gIH1cXG5cXG4gIGZuIGN1YmljSW50ZXJwb2xhdGlvbjFEKHg6IGFycmF5PCR7dn0sIDQ+LCBjb2VmczogYXJyYXk8JHt2fSwgND4pIC0+ICR7dn0ge1xcbiAgICB2YXIgY29lZnNTdW06ICR7dn0gPSBjb2Vmc1swXSArIGNvZWZzWzFdICsgY29lZnNbMl0gKyBjb2Vmc1szXTtcXG4gICAgcmV0dXJuICh4WzBdICogY29lZnNbMF0gKyB4WzFdICogY29lZnNbMV0rIHhbMl0gKiBjb2Vmc1syXSsgeFszXSAqIGNvZWZzWzNdKSAvIGNvZWZzU3VtO1xcbiAgfVxcblxcbiAgZm4gYmljdWJpY0ludGVycG9sYXRpb24ob3V0cHV0X2luZGljZXM6ICR7dC50eXBlLmluZGljZXN9KSAtPiAke3Z9IHtcXG4gICAgdmFyIGlucHV0X2luZGljZXM6ICR7ZS50eXBlLmluZGljZXN9ID0gb3V0cHV0X2luZGljZXM7XFxuICAgIHJldHVybiBjb2xDdWJpY0ludGVycG9sYXRpb24oaW5wdXRfaW5kaWNlcywgb3V0cHV0X2luZGljZXMpO1xcbiAgfVxcbiAgICBgfSxvcD0oZSx0LHIsbyxpKT0+e2xldFthLHAsbSxoLGRdPXIubGVuZ3RoPT09Mz9bLTEsMCwxLDIsLTFdOlswLDIsMyw0LDFdLHk9ZS50eXBlLnZhbHVlO3JldHVybmBcXG4gICAgZm4gZ2V0SW5wdXRWYWx1ZShiYXRjaDogdTMyLCBjaGFubmVsOiB1MzIsIGRlcHRoOnUzMiwgaGVpZ2h0OiB1MzIsIHdpZHRoOiB1MzIpIC0+ICR7eX0ge1xcbiAgICAgIHZhciBpbnB1dF9pbmRpY2VzOiAke2UudHlwZS5pbmRpY2VzfTtcXG4gICAgICAke2UuaW5kaWNlc1NldChcImlucHV0X2luZGljZXNcIixwLGBtYXgoMCwgbWluKGRlcHRoLCAke3JbcF19IC0gMSkpYCl9O1xcbiAgICAgICR7ZS5pbmRpY2VzU2V0KFwiaW5wdXRfaW5kaWNlc1wiLG0sYG1heCgwLCBtaW4oaGVpZ2h0LCAke3JbbV19IC0gMSkpYCl9O1xcbiAgICAgICR7ZS5pbmRpY2VzU2V0KFwiaW5wdXRfaW5kaWNlc1wiLGgsYG1heCgwLCBtaW4od2lkdGgsICR7cltoXX0gLSAxKSlgKX07XFxuICAgICAgJHtGdShlLGQsYSwzKX1cXG4gICAgICByZXR1cm4gJHtlLmdldEJ5SW5kaWNlcyhcImlucHV0X2luZGljZXNcIil9O1xcbiAgICB9XFxuXFxuICAgIGZuIHRyaWxpbmVhckludGVycG9sYXRpb24ob3V0cHV0X2luZGljZXM6ICR7dC50eXBlLmluZGljZXN9KSAtPiAke3l9IHtcXG4gICAgICB2YXIgb3JpZ2luYWxJbmRpY2VzID0gY2FsY3VsYXRlT3JpZ2luYWxJbmRpY2VzRnJvbU91dHB1dEluZGljZXMob3V0cHV0X2luZGljZXMpO1xcbiAgICAgIHZhciBkZXB0aDoke3l9ID0gb3JpZ2luYWxJbmRpY2VzWyR7cH1dO1xcbiAgICAgIHZhciBoZWlnaHQ6JHt5fSA9IG9yaWdpbmFsSW5kaWNlc1ske219XTtcXG4gICAgICB2YXIgd2lkdGg6JHt5fSA9IG9yaWdpbmFsSW5kaWNlc1ske2h9XTtcXG4gICAgICAke28/YGlmIChkZXB0aCA8IDAgfHwgZGVwdGggPiAoJHtyW3BdfSAtIDEpIHx8IGhlaWdodCA8IDAgfHwgaGVpZ2h0ID4gKCR7clttXX0gLSAxKSB8fCB3aWR0aCA8IDAgfHwgKHdpZHRoID4gJHtyW2hdfSAtIDEpKSB7XFxuICAgICAgcmV0dXJuICR7aX07XFxuICAgICAgICB9YDpcIlwifTtcXG5cXG4gICAgZGVwdGggPSBtYXgoMCwgbWluKGRlcHRoLCAke3JbcF19IC0gMSkpO1xcbiAgICAgIGhlaWdodCA9IG1heCgwLCBtaW4oaGVpZ2h0LCAke3JbbV19IC0gMSkpO1xcbiAgICAgIHdpZHRoID0gbWF4KDAsIG1pbih3aWR0aCwgJHtyW2hdfSAtIDEpKTtcXG4gICAgICB2YXIgZGVwdGgxOiB1MzIgPSB1MzIoZGVwdGgpO1xcbiAgICAgIHZhciBoZWlnaHQxOiB1MzIgPSB1MzIoaGVpZ2h0KTtcXG4gICAgICB2YXIgd2lkdGgxOiB1MzIgPSB1MzIod2lkdGgpO1xcbiAgICAgIHZhciBkZXB0aDI6IHUzMiA9IHUzMihkZXB0aCArIDEpO1xcbiAgICAgIHZhciBoZWlnaHQyOiB1MzIgPSB1MzIoaGVpZ2h0ICsgMSk7XFxuICAgICAgdmFyIHdpZHRoMjogdTMyID0gdTMyKHdpZHRoICsgMSk7XFxuICAgICAgdmFyIGNoYW5uZWw6IHUzMiA9ICR7ci5sZW5ndGg+Mz9gdTMyKG9yaWdpbmFsSW5kaWNlc1ske2R9XSlgOlwiMFwifTtcXG4gICAgICB2YXIgYmF0Y2g6IHUzMiA9ICAke3IubGVuZ3RoPjM/YHUzMihvcmlnaW5hbEluZGljZXNbJHthfV0pYDpcIjBcIn07XFxuXFxuICAgICAgdmFyIHgxMTE6ICR7eX0gPSBnZXRJbnB1dFZhbHVlKGJhdGNoLCBjaGFubmVsLCBkZXB0aDEsIGhlaWdodDEsIHdpZHRoMSk7XFxuICAgICAgdmFyIHgxMTI6ICR7eX0gPSBnZXRJbnB1dFZhbHVlKGJhdGNoLCBjaGFubmVsLCBkZXB0aDEsIGhlaWdodDEsIHdpZHRoMik7XFxuICAgICAgdmFyIHgxMjE6ICR7eX0gPSBnZXRJbnB1dFZhbHVlKGJhdGNoLCBjaGFubmVsLCBkZXB0aDEsIGhlaWdodDIsIHdpZHRoMSk7XFxuICAgICAgdmFyIHgxMjI6ICR7eX0gPSBnZXRJbnB1dFZhbHVlKGJhdGNoLCBjaGFubmVsLCBkZXB0aDEsIGhlaWdodDIsIHdpZHRoMik7XFxuICAgICAgdmFyIHgyMTE6ICR7eX0gPSBnZXRJbnB1dFZhbHVlKGJhdGNoLCBjaGFubmVsLCBkZXB0aDIsIGhlaWdodDEsIHdpZHRoMSk7XFxuICAgICAgdmFyIHgyMTI6ICR7eX0gPSBnZXRJbnB1dFZhbHVlKGJhdGNoLCBjaGFubmVsLCBkZXB0aDIsIGhlaWdodDEsIHdpZHRoMik7XFxuICAgICAgdmFyIHgyMjE6ICR7eX0gPSBnZXRJbnB1dFZhbHVlKGJhdGNoLCBjaGFubmVsLCBkZXB0aDIsIGhlaWdodDIsIHdpZHRoMSk7XFxuICAgICAgdmFyIHgyMjI6ICR7eX0gPSBnZXRJbnB1dFZhbHVlKGJhdGNoLCBjaGFubmVsLCBkZXB0aDIsIGhlaWdodDIsIHdpZHRoMik7XFxuICAgICAgdmFyIGR4MTogJHt5fSA9IGFicyhkZXB0aCAtICR7eX0oZGVwdGgxKSk7XFxuICAgICAgdmFyIGR4MjogJHt5fSA9IGFicygke3l9KGRlcHRoMikgLSBkZXB0aCk7XFxuICAgICAgdmFyIGR5MTogJHt5fSA9IGFicyhoZWlnaHQgLSAke3l9KGhlaWdodDEpKTtcXG4gICAgICB2YXIgZHkyOiAke3l9ID0gYWJzKCR7eX0oaGVpZ2h0MikgLSBoZWlnaHQpO1xcbiAgICAgIHZhciBkejE6ICR7eX0gPSBhYnMod2lkdGggLSAke3l9KHdpZHRoMSkpO1xcbiAgICAgIHZhciBkejI6ICR7eX0gPSBhYnMoJHt5fSh3aWR0aDIpIC0gd2lkdGgpO1xcbiAgICAgIGlmIChkZXB0aDEgPT0gZGVwdGgyKSB7XFxuICAgICAgICBkeDEgPSAwLjU7XFxuICAgICAgICBkeDIgPSAwLjU7XFxuICAgICAgfVxcbiAgICAgIGlmIChoZWlnaHQxID09IGhlaWdodDIpIHtcXG4gICAgICAgIGR5MSA9IDAuNTtcXG4gICAgICAgIGR5MiA9IDAuNTtcXG4gICAgICB9XFxuICAgICAgaWYgKHdpZHRoMSA9PSB3aWR0aDIpIHtcXG4gICAgICAgIGR6MSA9IDAuNTtcXG4gICAgICAgIGR6MiA9IDAuNTtcXG4gICAgICB9XFxuICAgICAgcmV0dXJuICh4MTExICogZHgyICogZHkyICogZHoyICsgeDExMiAqIGR4MiAqIGR5MiAqIGR6MSArIHgxMjEgKiBkeDIgKiBkeTEgKmR6MiArIHgxMjIgKiBkeDIgKiBkeTEgKiBkejEgK1xcbiAgICAgICAgICAgICAgeDIxMSAqIGR4MSAqIGR5MiAqIGR6MiArIHgyMTIgKiBkeDEgKiBkeTIgKiBkejEgKyB4MjIxICogZHgxICogZHkxICpkejIgKyB4MjIyICogZHgxICogZHkxICogZHoxKTtcXG4gICAgfWB9LGlwPShlLHQscixvLGksdSk9PntsZXQgYT1lLmRpbXMscD1aYyh1LHQuYXhlcyxhLmxlbmd0aCksbT1YYyhhLG8saSx0LmF4ZXMpLGg9by5zbGljZSgpO28ubGVuZ3RoPT09MCYmKGg9YS5tYXAoKFMsRSk9PlM9PT0wPzE6bVtFXS9TKSx0LmtlZXBBc3BlY3RSYXRpb1BvbGljeSE9PVwic3RyZXRjaFwiJiYobT1KYyhhLGgsdCkpKTtsZXQgZD1KKFwib3V0cHV0XCIsZS5kYXRhVHlwZSxtLmxlbmd0aCkseT1WKFwiaW5wdXRcIixlLmRhdGFUeXBlLGEubGVuZ3RoKSx3PVcuc2l6ZShtKSxfPWEubGVuZ3RoPT09bS5sZW5ndGgmJmEuZXZlcnkoKFMsRSk9PlM9PT1tW0VdKSx2PXQuY29vcmRpbmF0ZVRyYW5zZm9ybU1vZGU9PT1cInRmX2Nyb3BfYW5kX3Jlc2l6ZVwiLHg9dC5leHRyYXBvbGF0aW9uVmFsdWUsVD15LnR5cGUudmFsdWUsQz1TPT5gXFxuICAgICAgJHtfP1wiXCI6YFxcbiAgICAgICR7S2ModC5jb29yZGluYXRlVHJhbnNmb3JtTW9kZSxUKX07XFxuICAgICAgJHsoKCk9Pntzd2l0Y2godC5tb2RlKXtjYXNlXCJuZWFyZXN0XCI6cmV0dXJuYFxcbiAgICAgICAgICAgICAgJHt0cCh5LGEpfTtcXG4gICAgICAgICAgICAgICR7WWModC5uZWFyZXN0TW9kZSxyLFQpfTtcXG4gICAgICAgICAgICAgICR7ZXAoeSxkLGEsbSxoLmxlbmd0aCxwLmxlbmd0aCx2KX07XFxuICAgICAgICAgICAgICBgO2Nhc2VcImxpbmVhclwiOnJldHVybmBcXG4gICAgICAgICAgICAgICR7UWMoZCxhLG0saC5sZW5ndGgscC5sZW5ndGgpfTtcXG4gICAgICAgICAgICAgICR7KCgpPT57aWYoYS5sZW5ndGg9PT0yfHxhLmxlbmd0aD09PTQpcmV0dXJuYCR7cnAoeSxkLGEsdix4KX1gO2lmKGEubGVuZ3RoPT09M3x8YS5sZW5ndGg9PT01KXJldHVybmAke29wKHksZCxhLHYseCl9YDt0aHJvdyBFcnJvcihcIkxpbmVhciBtb2RlIG9ubHkgc3VwcG9ydHMgaW5wdXQgZGltcyAyLCAzLCA0IGFuZCA1IGFyZSBzdXBwb3J0ZWQgaW4gbGluZWFyIG1vZGUuXCIpfSkoKX07XFxuICAgICAgICAgICAgYDtjYXNlXCJjdWJpY1wiOnJldHVybmBcXG4gICAgICAgICAgICAkeygoKT0+e2lmKGEubGVuZ3RoPT09Mnx8YS5sZW5ndGg9PT00KXJldHVybmAke25wKHksZCxhLG0saCxwLHQuY3ViaWNDb2VmZkEsdix0LmV4dHJhcG9sYXRpb25WYWx1ZSx0LmV4Y2x1ZGVPdXRzaWRlKX1gO3Rocm93IEVycm9yKFwiQ3ViaWMgbW9kZSBvbmx5IHN1cHBvcnRzIGlucHV0IGRpbXMgMiBhbmQgNCBhcmUgc3VwcG9ydGVkIGluIGxpbmVhciBtb2RlLlwiKX0pKCl9O1xcbiAgICAgICAgICAgIGA7ZGVmYXVsdDp0aHJvdyBFcnJvcihcIkludmFsaWQgcmVzaXplIG1vZGVcIil9fSkoKX07XFxuICAgICAgYH1cXG4gICAgICAke1MucmVnaXN0ZXJVbmlmb3JtKFwib3V0cHV0X3NpemVcIixcInUzMlwiKS5yZWdpc3RlclVuaWZvcm0oXCJzY2FsZXNcIixcImYzMlwiLGgubGVuZ3RoKS5yZWdpc3RlclVuaWZvcm0oXCJyb2lcIixcImYzMlwiLHAubGVuZ3RoKS5kZWNsYXJlVmFyaWFibGVzKHksZCl9XFxuICAgICAgJHtTLm1haW5TdGFydCgpfVxcbiAgICAgICAgJHtTLmd1YXJkQWdhaW5zdE91dE9mQm91bmRzV29ya2dyb3VwU2l6ZXMoXCJ1bmlmb3Jtcy5vdXRwdXRfc2l6ZVwiKX1cXG4gICAgICAgICR7Xz9cIm91dHB1dFtnbG9iYWxfaWR4XSA9IGlucHV0W2dsb2JhbF9pZHhdO1wiOmBcXG4gICAgICAgIGxldCBvdXRwdXRfaW5kaWNlcyA9ICR7ZC5vZmZzZXRUb0luZGljZXMoXCJnbG9iYWxfaWR4XCIpfTtcXG4gICAgICAgIHZhciBpbnB1dF9pbmRpY2VzOiAke3kudHlwZS5pbmRpY2VzfTtcXG4gICAgICAgICR7KCgpPT57c3dpdGNoKHQubW9kZSl7Y2FzZVwibmVhcmVzdFwiOnJldHVybmBpbnB1dF9pbmRpY2VzID0gY2FsY3VsYXRlSW5wdXRJbmRpY2VzRnJvbU91dHB1dEluZGljZXMob3V0cHV0X2luZGljZXMpO1xcbiAgICAgICAgICAgICAgICBpZiAoY2hlY2tJbnB1dEluZGljZXMoaW5wdXRfaW5kaWNlcykpIHtcXG4gICAgICAgICAgICAgICAgICBvdXRwdXRbZ2xvYmFsX2lkeF0gPSAke3kuZ2V0QnlJbmRpY2VzKFwiaW5wdXRfaW5kaWNlc1wiKX07XFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgb3V0cHV0W2dsb2JhbF9pZHhdID0gJHt0LmV4dHJhcG9sYXRpb25WYWx1ZX07XFxuICAgICAgICAgICAgICAgIH1gO2Nhc2VcImxpbmVhclwiOnJldHVybmBvdXRwdXRbZ2xvYmFsX2lkeF0gPSAke2EubGVuZ3RoPT09Mnx8YS5sZW5ndGg9PT00P1wiYmlsaW5lYXJJbnRlcnBvbGF0aW9uXCI6XCJ0cmlsaW5lYXJJbnRlcnBvbGF0aW9uXCJ9KG91dHB1dF9pbmRpY2VzKTtgO2Nhc2VcImN1YmljXCI6cmV0dXJuXCJvdXRwdXRbZ2xvYmFsX2lkeF0gPSBiaWN1YmljSW50ZXJwb2xhdGlvbihvdXRwdXRfaW5kaWNlcyk7XCI7ZGVmYXVsdDp0aHJvdyBFcnJvcihgVW5zdXBwb3J0ZWQgcmVzaXplIG1vZGU6ICR7dC5tb2RlfWApfX0pKCl9O1xcbmB9XFxuICAgICAgfWA7cmV0dXJue25hbWU6XCJSZXNpemVcIixzaGFkZXJDYWNoZTp7aGludDpgJHt0LmNhY2hlS2V5fXwke3J9fCR7aC5sZW5ndGg+MD9oOlwiXCJ9fCR7aS5sZW5ndGg+MD9pOlwiXCJ9fCR7cC5sZW5ndGg+MD9wOlwiXCJ9fCR7X318JHthfWAsaW5wdXREZXBlbmRlbmNpZXM6W1wicmFua1wiXX0sZ2V0U2hhZGVyU291cmNlOkMsZ2V0UnVuRGF0YTooKT0+KHtvdXRwdXRzOlt7ZGltczptLGRhdGFUeXBlOmUuZGF0YVR5cGV9XSxkaXNwYXRjaEdyb3VwOnt4Ok1hdGguY2VpbCh3LzY0KX0scHJvZ3JhbVVuaWZvcm1zOlt7dHlwZTpcInVpbnQzMlwiLGRhdGE6d30se3R5cGU6XCJmbG9hdDMyXCIsZGF0YTpofSx7dHlwZTpcImZsb2F0MzJcIixkYXRhOnB9LC4uLkcoYSksLi4uRyhtKV19KX19LGFwPWU9PntsZXQgdD1lLmN1c3RvbURhdGFCdWZmZXI7cmV0dXJuIG5ldyBVaW50MzJBcnJheSh0LHQuYnl0ZU9mZnNldCwxKVswXX0sanU9KGUsdCk9PntsZXQgcj1bXSxvPVtdLGk9W10sdT1hcChlKTtpZih0LmFudGlhbGlhcyE9PTApdGhyb3cgRXJyb3IoXCJPbmx5IGRlZmF1bHQgdmFsdWUgKDApIGZvciBBbnRpYWxpYXMgYXR0cmlidXRlIGlzIHN1cHBvcnRlZFwiKTtxYyhlLmlucHV0cyx0LHUscixvLGkpLGUuY29tcHV0ZShpcChlLmlucHV0c1swXSx0LHUscixvLGkpLHtpbnB1dHM6WzBdfSl9LHF1PWU9PntsZXQgdD1lLmFudGlhbGlhcyxyPWUuYXhlcyxvPWUuY29vcmRpbmF0ZVRyYW5zZm9ybU1vZGUsaT1lLmN1YmljQ29lZmZBLHU9ZS5leGNsdWRlT3V0c2lkZSE9PTAsYT1lLmV4dHJhcG9sYXRpb25WYWx1ZSxwPWUua2VlcEFzcGVjdFJhdGlvUG9saWN5LG09ZS5tb2RlLGg9ZS5uZWFyZXN0TW9kZT09PVwiXCI/XCJzaW1wbGVcIjplLm5lYXJlc3RNb2RlO3JldHVybiB4ZSh7YW50aWFsaWFzOnQsYXhlczpyLGNvb3JkaW5hdGVUcmFuc2Zvcm1Nb2RlOm8sY3ViaWNDb2VmZkE6aSxleGNsdWRlT3V0c2lkZTp1LGV4dHJhcG9sYXRpb25WYWx1ZTphLGtlZXBBc3BlY3RSYXRpb1BvbGljeTpwLG1vZGU6bSxuZWFyZXN0TW9kZTpofSl9fSk7dmFyIHNwLHVwLFl1LFp1PVEoKCk9PntcInVzZSBzdHJpY3RcIjtWZSgpO0NlKCk7X2UoKTtzcD1lPT57aWYoIWV8fGUubGVuZ3RoPDMpdGhyb3cgbmV3IEVycm9yKFwibGF5ZXJOb3JtIHJlcXVpcmVzIGF0IGxlYXN0IDMgaW5wdXRzLlwiKTtsZXQgdD1lWzBdLHI9ZVsxXSxvPWVbMl07aWYodC5kYXRhVHlwZSE9PXIuZGF0YVR5cGV8fHQuZGF0YVR5cGUhPT1vLmRhdGFUeXBlKXRocm93IG5ldyBFcnJvcihcIkFsbCBpbnB1dHMgbXVzdCBoYXZlIHRoZSBzYW1lIGRhdGEgdHlwZVwiKTtpZih0LmRpbXMubGVuZ3RoIT09MyYmdC5kaW1zLmxlbmd0aCE9PTIpdGhyb3cgbmV3IEVycm9yKFwiSW5wdXQgbXVzdCBiZSAyRCBvciAzRFwiKTtpZihyLmRpbXMubGVuZ3RoIT09MyYmci5kaW1zLmxlbmd0aCE9PTIpdGhyb3cgbmV3IEVycm9yKFwiU2tpcCBtdXN0IGJlIDJEIG9yIDNEXCIpO2xldCBpPXQuZGltc1t0LmRpbXMubGVuZ3RoLTFdLHU9dC5kaW1zW3QuZGltcy5sZW5ndGgtMl07aWYoci5kaW1zW3IuZGltcy5sZW5ndGgtMV0hPT1pKXRocm93IG5ldyBFcnJvcihcIlNraXAgbXVzdCBoYXZlIHRoZSBzYW1lIGhpZGRlbiBzaXplIGFzIGlucHV0XCIpO2lmKHIuZGltc1tyLmRpbXMubGVuZ3RoLTJdIT09dSl0aHJvdyBuZXcgRXJyb3IoXCJTa2lwIG11c3QgaGF2ZSB0aGUgc2FtZSBzZXF1ZW5jZSBsZW5ndGggYXMgaW5wdXRcIik7aWYoby5kaW1zLmxlbmd0aCE9PTEpdGhyb3cgbmV3IEVycm9yKFwiR2FtbWEgbXVzdCBiZSAxRFwiKTtpZihvLmRpbXNbby5kaW1zLmxlbmd0aC0xXSE9PWkpdGhyb3cgbmV3IEVycm9yKFwiR2FtbWEgbXVzdCBoYXZlIHRoZSBzYW1lIGhpZGRlbiBzaXplIGFzIGlucHV0XCIpO2lmKGUubGVuZ3RoPjMpe2xldCBhPWVbM107aWYoYS5kaW1zLmxlbmd0aCE9PTEpdGhyb3cgbmV3IEVycm9yKFwiQmV0YSBtdXN0IGJlIDFEXCIpO2lmKGEuZGltc1thLmRpbXMubGVuZ3RoLTFdIT09aSl0aHJvdyBuZXcgRXJyb3IoXCJCZXRhIG11c3QgaGF2ZSB0aGUgc2FtZSBoaWRkZW4gc2l6ZSBhcyBpbnB1dFwiKX1pZihlLmxlbmd0aD40KXtsZXQgYT1lWzRdO2lmKGEuZGltcy5sZW5ndGghPT0xKXRocm93IG5ldyBFcnJvcihcIkJpYXMgbXVzdCBiZSAxRFwiKTtpZihhLmRpbXNbYS5kaW1zLmxlbmd0aC0xXSE9PWkpdGhyb3cgbmV3IEVycm9yKFwiQmlhcyBtdXN0IGhhdmUgdGhlIHNhbWUgaGlkZGVuIHNpemUgYXMgaW5wdXRcIil9fSx1cD0oZSx0LHIsbyk9PntsZXQgaT1lWzBdLmRpbXMsdT1XLnNpemUoaSksYT1pLHA9dSxtPWkuc2xpY2UoLTEpWzBdLGg9bz9pLnNsaWNlKDAsLTEpLmNvbmNhdCgxKTpbXSxkPWUubGVuZ3RoPjMseT1lLmxlbmd0aD40LHc9byYmcj4xLF89byYmcj4yLHY9cj4zLHg9SGUobSksVD1be3R5cGU6XCJ1aW50MzJcIixkYXRhOnB9LHt0eXBlOlwidWludDMyXCIsZGF0YTp4fSx7dHlwZTpcInVpbnQzMlwiLGRhdGE6bX0se3R5cGU6XCJmbG9hdDMyXCIsZGF0YTp0LmVwc2lsb259XSxDPUU9PntsZXQgTz1be25hbWU6XCJvdXRwdXRfc2l6ZVwiLHR5cGU6XCJ1MzJcIn0se25hbWU6XCJjb21wb25lbnRzXCIsdHlwZTpcInUzMlwifSx7bmFtZTpcImhpZGRlbl9zaXplXCIsdHlwZTpcInUzMlwifSx7bmFtZTpcImVwc2lsb25cIix0eXBlOlwiZjMyXCJ9XSxVPVtWKFwieFwiLGVbMF0uZGF0YVR5cGUsZVswXS5kaW1zLHgpLFYoXCJza2lwXCIsZVsxXS5kYXRhVHlwZSxlWzFdLmRpbXMseCksVihcImdhbW1hXCIsZVsyXS5kYXRhVHlwZSxlWzJdLmRpbXMseCldO2QmJlUucHVzaChWKFwiYmV0YVwiLGVbM10uZGF0YVR5cGUsZVszXS5kaW1zLHgpKSx5JiZVLnB1c2goVihcImJpYXNcIixlWzRdLmRhdGFUeXBlLGVbNF0uZGltcyx4KSksVS5wdXNoKEooXCJvdXRwdXRcIixlWzBdLmRhdGFUeXBlLGEseCkpLHcmJlUucHVzaChKKFwibWVhbl9vdXRwdXRcIiwxLGgpKSxfJiZVLnB1c2goSihcImludl9zdGRfb3V0cHV0XCIsMSxoKSksdiYmVS5wdXNoKEooXCJpbnB1dF9za2lwX2JpYXNfc3VtXCIsZVswXS5kYXRhVHlwZSxhLHgpKTtsZXQgTT1OZShlWzBdLmRhdGFUeXBlKTtyZXR1cm5gXFxuXFxuICAgICAgJHtFLnJlZ2lzdGVyVW5pZm9ybXMoTykuZGVjbGFyZVZhcmlhYmxlcyguLi5VKX1cXG5cXG4gICAgICAke0UubWFpblN0YXJ0KCl9XFxuICAgICAgICAke0UuZ3VhcmRBZ2FpbnN0T3V0T2ZCb3VuZHNXb3JrZ3JvdXBTaXplcyhcInVuaWZvcm1zLm91dHB1dF9zaXplIC8gdW5pZm9ybXMuaGlkZGVuX3NpemVcIil9XFxuICAgICAgICBsZXQgaGlkZGVuX3NpemVfdmVjdG9yaXplZDogdTMyID0gdW5pZm9ybXMuaGlkZGVuX3NpemUgLyB1bmlmb3Jtcy5jb21wb25lbnRzO1xcbiAgICAgICAgbGV0IG9mZnNldCA9IGdsb2JhbF9pZHggKiBoaWRkZW5fc2l6ZV92ZWN0b3JpemVkO1xcbiAgICAgICAgdmFyIHN1bSA9ICR7WmUoXCJmMzJcIix4KX07XFxuICAgICAgICB2YXIgc3F1YXJlU3VtID0gJHtaZShcImYzMlwiLHgpfTtcXG4gICAgICAgIGZvciAodmFyIGk6IHUzMiA9IDA7IGkgPCBoaWRkZW5fc2l6ZV92ZWN0b3JpemVkOyBpKyspIHtcXG4gICAgICAgICAgbGV0IHNraXBfdmFsdWUgPSBza2lwW29mZnNldCArIGldO1xcbiAgICAgICAgICBsZXQgYmlhc192YWx1ZSA9ICR7eT9cImJpYXNbaV1cIjpcIjAuMFwifTtcXG4gICAgICAgICAgbGV0IGlucHV0X3ZhbHVlID0geFtvZmZzZXQgKyBpXTtcXG4gICAgICAgICAgbGV0IHZhbHVlID0gaW5wdXRfdmFsdWUgKyBza2lwX3ZhbHVlICsgYmlhc192YWx1ZTtcXG4gICAgICAgICAgJHt2P1wiaW5wdXRfc2tpcF9iaWFzX3N1bVtvZmZzZXQgKyBpXSA9IHZhbHVlO1wiOlwiXCJ9XFxuICAgICAgICAgIG91dHB1dFtvZmZzZXQgKyBpXSA9IHZhbHVlO1xcbiAgICAgICAgICBsZXQgZjMyX3ZhbHVlID0gJHtndChNLHgsXCJ2YWx1ZVwiKX07XFxuICAgICAgICAgIHN1bSArPSBmMzJfdmFsdWU7XFxuICAgICAgICAgIHNxdWFyZVN1bSArPSBmMzJfdmFsdWUgKiBmMzJfdmFsdWU7XFxuICAgICAgICB9XFxuICAgICAgICBsZXQgbWVhbiA9ICR7dXQoXCJzdW1cIix4KX0gLyBmMzIodW5pZm9ybXMuaGlkZGVuX3NpemUpO1xcbiAgICAgICAgbGV0IGludl9zdGRfZGV2ID0gaW52ZXJzZVNxcnQoJHt1dChcInNxdWFyZVN1bVwiLHgpfSAvIGYzMih1bmlmb3Jtcy5oaWRkZW5fc2l6ZSkgLSBtZWFuICogbWVhbiArIHVuaWZvcm1zLmVwc2lsb24pO1xcbiAgICAgICAgJHt3P1wibWVhbl9vdXRwdXRbZ2xvYmFsX2lkeF0gPSBtZWFuO1wiOlwiXCJ9XFxuICAgICAgICAke18/XCJpbnZfc3RkX291dHB1dFtnbG9iYWxfaWR4XSA9IGludl9zdGRfZGV2O1wiOlwiXCJ9XFxuICAgICAgICBmb3IgKHZhciBpOiB1MzIgPSAwOyBpIDwgaGlkZGVuX3NpemVfdmVjdG9yaXplZDsgaSsrKSB7XFxuICAgICAgICAgIG91dHB1dFtvZmZzZXQgKyBpXSA9IChvdXRwdXRbb2Zmc2V0ICsgaV0gLSAke019KG1lYW4pKSAqICR7TX0oaW52X3N0ZF9kZXYpICogZ2FtbWFbaV0gKyAke2Q/XCJiZXRhW2ldXCI6XCIwLjBcIn07XFxuICAgICAgICB9XFxuICAgICAgfWB9LFM9W3tkaW1zOmEsZGF0YVR5cGU6ZVswXS5kYXRhVHlwZX1dO3JldHVybiByPjEmJlMucHVzaCh7ZGltczpoLGRhdGFUeXBlOjF9KSxyPjImJlMucHVzaCh7ZGltczpoLGRhdGFUeXBlOjF9KSxyPjMmJlMucHVzaCh7ZGltczppLGRhdGFUeXBlOmVbMF0uZGF0YVR5cGV9KSx7bmFtZTpcIlNraXBMYXllck5vcm1hbGl6YXRpb25cIixzaGFkZXJDYWNoZTp7aGludDpgJHt4fTske3d9OyR7X307JHt2fWAsaW5wdXREZXBlbmRlbmNpZXM6ZS5tYXAoKEUsTyk9PlwidHlwZVwiKX0sZ2V0U2hhZGVyU291cmNlOkMsZ2V0UnVuRGF0YTooKT0+KHtvdXRwdXRzOlMsZGlzcGF0Y2hHcm91cDp7eDpNYXRoLmNlaWwocC9tLzY0KX0scHJvZ3JhbVVuaWZvcm1zOlR9KX19LFl1PShlLHQpPT57c3AoZS5pbnB1dHMpO2xldCBvPVswXTtlLm91dHB1dENvdW50PjEmJm8ucHVzaCgtMyksZS5vdXRwdXRDb3VudD4yJiZvLnB1c2goLTMpLGUub3V0cHV0Q291bnQ+MyYmby5wdXNoKDMpLGUuY29tcHV0ZSh1cChlLmlucHV0cyx0LGUub3V0cHV0Q291bnQsITEpLHtvdXRwdXRzOm99KX19KTt2YXIgbHAsVm4sZHAsWHUsY3AscHAsSnUsUXUsZWw9USgoKT0+e1widXNlIHN0cmljdFwiO1ZlKCk7Q2UoKTtZZSgpO19lKCk7bHA9KGUsdCk9PntpZighZXx8ZS5sZW5ndGg8MSl0aHJvdyBuZXcgRXJyb3IoXCJ0b28gZmV3IGlucHV0c1wiKTtpZih0LmF4ZXMubGVuZ3RoIT09MCl7aWYodC5heGVzLmxlbmd0aCE9PXQuc3RhcnRzLmxlbmd0aHx8dC5heGVzLmxlbmd0aCE9PXQuZW5kcy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKFwiYXhlcywgc3RhcnRzIGFuZCBlbmRzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIil9ZWxzZSBpZih0LnN0YXJ0cy5sZW5ndGghPT10LmVuZHMubGVuZ3RoKXRocm93IG5ldyBFcnJvcihcInN0YXJ0cyBhbmQgZW5kcyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCIpO2Uuc2xpY2UoMSkuZm9yRWFjaCgocixvKT0+e2lmKGVbbysxXS5kYXRhVHlwZSE9PTYmJmVbbysxXS5kYXRhVHlwZSE9PTcpdGhyb3cgbmV3IEVycm9yKGBJbnB1dCAke299IG11c3QgYmUgYW4gYXJyYXkgb2YgaW50MzIgb3IgaW50NjRgKX0pfSxWbj0oZSx0KT0+e2xldCByPVtdO2lmKGUubGVuZ3RoPnQpaWYoZVt0XS5kYXRhVHlwZT09PTcpZVt0XS5nZXRCaWdJbnQ2NEFycmF5KCkuZm9yRWFjaChvPT5yLnB1c2goTnVtYmVyKG8pKSk7ZWxzZSBpZihlW3RdLmRhdGFUeXBlPT09NillW3RdLmdldEludDMyQXJyYXkoKS5mb3JFYWNoKG89PnIucHVzaChOdW1iZXIobykpKTtlbHNlIHRocm93IG5ldyBFcnJvcihgSW5wdXQgJHt0fSBtdXN0IGJlIGFuIGFycmF5IG9mIGludDMyIG9yIGludDY0YCk7cmV0dXJuIHJ9LGRwPShlLHQpPT57aWYoZS5sZW5ndGg+MSl7bGV0IHI9Vm4oZSwxKSxvPVZuKGUsMiksaT1WbihlLDMpO3JldHVybiBpLmxlbmd0aD09PTAmJihpPVsuLi5BcnJheShlWzBdLmRpbXMubGVuZ3RoKS5rZXlzKCldKSx4ZSh7c3RhcnRzOnIsZW5kczpvLGF4ZXM6aX0pfWVsc2UgcmV0dXJuIHR9LFh1PShlLHQscixvLGkpPT57bGV0IHU9ZTtyZXR1cm4gZTwwJiYodSs9cltvW3RdXSksaVt0XTwwP01hdGgubWF4KDAsTWF0aC5taW4odSxyW29bdF1dLTEpKTpNYXRoLm1heCgwLE1hdGgubWluKHUscltvW3RdXSkpfSxjcD0oZSx0LHIpPT5gZm4gY2FsY3VsYXRlSW5wdXRJbmRpY2VzKG91dHB1dF9pbmRpY2VzOiAke3QudHlwZS5pbmRpY2VzfSkgLT4gJHtlLnR5cGUuaW5kaWNlc30ge1xcbiAgICAgICAgICB2YXIgaW5wdXRfaW5kaWNlczogJHtlLnR5cGUuaW5kaWNlc307XFxuICAgICAgICAgIHZhciBjYXJyeSA9IDB1O1xcbiAgICAgICAgICBmb3IgKHZhciBpID0gJHtyLmxlbmd0aH07IGkgPj0gMDsgaS0tKSB7XFxuICAgICAgICAgICAgbGV0IGlucHV0X3NoYXBlX2kgPSAke2NlKFwidW5pZm9ybXMuaW5wdXRfc2hhcGVcIixcImlcIixyLmxlbmd0aCl9O1xcbiAgICAgICAgICAgIGxldCBzdGVwc19pID0gJHtjZShcInVuaWZvcm1zLnN0ZXBzXCIsXCJpXCIsci5sZW5ndGgpfTtcXG4gICAgICAgICAgICBsZXQgc2lnbnNfaSA9ICR7Y2UoXCJ1bmlmb3Jtcy5zaWduc1wiLFwiaVwiLHIubGVuZ3RoKX07XFxuICAgICAgICAgICAgbGV0IHN0YXJ0c19pID0gJHtjZShcInVuaWZvcm1zLnN0YXJ0c1wiLFwiaVwiLHIubGVuZ3RoKX07XFxuICAgICAgICAgICAgdmFyIG91dHB1dF9pbmRleCA9ICR7dC5pbmRpY2VzR2V0KFwib3V0cHV0X2luZGljZXNcIixcImlcIil9O1xcbiAgICAgICAgICAgIHZhciBpbnB1dF9pbmRleCA9IG91dHB1dF9pbmRleCAqIHN0ZXBzX2kgKyBzdGFydHNfaSArIGNhcnJ5O1xcbiAgICAgICAgICAgIGNhcnJ5ID0gaW5wdXRfaW5kZXggLyBpbnB1dF9zaGFwZV9pO1xcbiAgICAgICAgICAgIGlucHV0X2luZGV4ID0gaW5wdXRfaW5kZXggJSBpbnB1dF9zaGFwZV9pO1xcbiAgICAgICAgICAgIGlmIChzaWduc19pIDwgMCkge1xcbiAgICAgICAgICAgICAgaW5wdXRfaW5kZXggPSBpbnB1dF9zaGFwZV9pIC0gaW5wdXRfaW5kZXggLSAxdSArIHN0YXJ0c19pO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAke2UuaW5kaWNlc1NldChcImlucHV0X2luZGljZXNcIixcImlcIixcImlucHV0X2luZGV4XCIpfTtcXG4gICAgICAgICAgfVxcbiAgICAgICAgICByZXR1cm4gaW5wdXRfaW5kaWNlcztcXG4gICAgICB9YCxwcD0oZSx0KT0+e2xldCByPWVbMF0uZGltcyxvPVcuc2l6ZShyKSxpPXQuYXhlcy5sZW5ndGg+MD9XLm5vcm1hbGl6ZUF4ZXModC5heGVzLHIubGVuZ3RoKTpbLi4uQXJyYXkoci5sZW5ndGgpLmtleXMoKV0sdT1WbihlLDQpO3UuZm9yRWFjaChDPT5DIT09MHx8KCgpPT57dGhyb3cgbmV3IEVycm9yKFwic3RlcCBjYW5ub3QgYmUgMFwiKX0pKSx1Lmxlbmd0aD09PTAmJih1PUFycmF5KGkubGVuZ3RoKS5maWxsKDEpKTtsZXQgYT10LnN0YXJ0cy5tYXAoKEMsUyk9Plh1KEMsUyxyLGksdSkpLHA9dC5lbmRzLm1hcCgoQyxTKT0+WHUoQyxTLHIsaSx1KSk7aWYoaS5sZW5ndGghPT1hLmxlbmd0aHx8aS5sZW5ndGghPT1wLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoXCJzdGFydCwgZW5kcyBhbmQgYXhlcyBzaG91bGQgaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2YgZWxlbWVudHNcIik7aWYoaS5sZW5ndGghPT1yLmxlbmd0aClmb3IobGV0IEM9MDtDPHIubGVuZ3RoOysrQylpLmluY2x1ZGVzKEMpfHwoYS5zcGxpY2UoQywwLDApLHAuc3BsaWNlKEMsMCxyW0NdKSx1LnNwbGljZShDLDAsMSkpO2xldCBtPXUubWFwKEM9Pk1hdGguc2lnbihDKSk7dS5mb3JFYWNoKChDLFMsRSk9PntpZihDPDApe2xldCBPPShwW1NdLWFbU10pL0MsVT1hW1NdLE09VStPKnVbU107YVtTXT1NLHBbU109VSxFW1NdPS1DfX0pO2xldCBoPXIuc2xpY2UoMCk7aS5mb3JFYWNoKChDLFMpPT57aFtDXT1NYXRoLmNlaWwoKHBbQ10tYVtDXSkvdVtDXSl9KTtsZXQgZD17ZGltczpoLGRhdGFUeXBlOmVbMF0uZGF0YVR5cGV9LHk9SihcIm91dHB1dFwiLGVbMF0uZGF0YVR5cGUsaC5sZW5ndGgpLHc9VihcImlucHV0XCIsZVswXS5kYXRhVHlwZSxlWzBdLmRpbXMubGVuZ3RoKSxfPVcuc2l6ZShoKSx2PVt7bmFtZTpcIm91dHB1dFNpemVcIix0eXBlOlwidTMyXCJ9LHtuYW1lOlwic3RhcnRzXCIsdHlwZTpcInUzMlwiLGxlbmd0aDphLmxlbmd0aH0se25hbWU6XCJzaWduc1wiLHR5cGU6XCJpMzJcIixsZW5ndGg6bS5sZW5ndGh9LHtuYW1lOlwic3RlcHNcIix0eXBlOlwidTMyXCIsbGVuZ3RoOnUubGVuZ3RofV0seD1be3R5cGU6XCJ1aW50MzJcIixkYXRhOl99LHt0eXBlOlwidWludDMyXCIsZGF0YTphfSx7dHlwZTpcImludDMyXCIsZGF0YTptfSx7dHlwZTpcInVpbnQzMlwiLGRhdGE6dX0sLi4uRyhlWzBdLmRpbXMpLC4uLkcoaCldLFQ9Qz0+YFxcbiAgICAgICR7Qy5yZWdpc3RlclVuaWZvcm1zKHYpLmRlY2xhcmVWYXJpYWJsZXModyx5KX1cXG4gICAgICAgICR7Y3Aodyx5LHIpfVxcbiAgICAgICAgJHtDLm1haW5TdGFydCgpfVxcbiAgICAgICAgICAke0MuZ3VhcmRBZ2FpbnN0T3V0T2ZCb3VuZHNXb3JrZ3JvdXBTaXplcyhcInVuaWZvcm1zLm91dHB1dFNpemVcIil9XFxuICAgICAgICAgIGxldCBvdXRwdXRfaW5kaWNlcyA9ICR7eS5vZmZzZXRUb0luZGljZXMoXCJnbG9iYWxfaWR4XCIpfTtcXG4gICAgICAgICAgbGV0IGlucHV0X2luZGljZXMgPSBjYWxjdWxhdGVJbnB1dEluZGljZXMob3V0cHV0X2luZGljZXMpO1xcbiAgICAgICAgICAke3kuc2V0QnlPZmZzZXQoXCJnbG9iYWxfaWR4XCIsdy5nZXRCeUluZGljZXMoXCJpbnB1dF9pbmRpY2VzXCIpKX1cXG4gICAgICB9YDtyZXR1cm57bmFtZTpcIlNsaWNlXCIsc2hhZGVyQ2FjaGU6e2hpbnQ6YCR7bS5sZW5ndGh9XyR7YS5sZW5ndGh9XyR7dS5sZW5ndGh9YCxpbnB1dERlcGVuZGVuY2llczpbXCJyYW5rXCJdfSxnZXRTaGFkZXJTb3VyY2U6VCxnZXRSdW5EYXRhOigpPT4oe291dHB1dHM6W2RdLGRpc3BhdGNoR3JvdXA6e3g6TWF0aC5jZWlsKG8vNjQpfSxwcm9ncmFtVW5pZm9ybXM6eH0pfX0sSnU9KGUsdCk9PntscChlLmlucHV0cyx0KTtsZXQgcj1kcChlLmlucHV0cyx0KTtlLmNvbXB1dGUocHAoZS5pbnB1dHMscikse2lucHV0czpbMF19KX0sUXU9ZT0+e2xldCB0PWUuc3RhcnRzLHI9ZS5lbmRzLG89ZS5heGVzO3JldHVybiB4ZSh7c3RhcnRzOnQsZW5kczpyLGF4ZXM6b30pfX0pO3ZhciBtcCxmcCx0bCxybCxubD1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7Q2UoKTtZZSgpO19lKCk7bXA9ZT0+e2lmKCFlfHxlLmxlbmd0aCE9PTEpdGhyb3cgbmV3IEVycm9yKFwiU29mdG1heCBvcCByZXF1aXJlcyAxIGlucHV0LlwiKX0sZnA9KGUsdCk9PntsZXQgcj1lLmRpbXMsbz1XLnNpemUociksaT02NCx1PXQuYXhpcztpZih1PDAmJih1PXIubGVuZ3RoK3UpLHU8ci5sZW5ndGgtMSl0aHJvdyBuZXcgRXJyb3IoXCJzb2Z0bWF4IG9ubHkgc3VwcG9ydHMgbGFzdCBheGlzIGZvciBub3cuXCIpO2xldCBhPXJbdV0scD1vL2EsbT1IZShhKSxoPWEvbSxkPShULEMpPT5DPT09ND9gbWF4KG1heCgke1R9LngsICR7VH0ueSksIG1heCgke1R9LnosICR7VH0udykpYDpDPT09Mj9gbWF4KCR7VH0ueCwgJHtUfS55KWA6Qz09PTM/YG1heChtYXgoJHtUfS54LCAke1R9LnkpLCAke1R9LnopYDpULHk9VihcInhcIixlLmRhdGFUeXBlLGUuZGltcyxtKSx3PUooXCJyZXN1bHRcIixlLmRhdGFUeXBlLGUuZGltcyxtKSxfPXkudHlwZS52YWx1ZSx2PU5lKGUuZGF0YVR5cGUpPT09XCJmMzJcIj9gdmFyIHRocmVhZE1heCA9ICR7X30oLTMuNDAyODIzZSszOGYpO2A6YHZhciB0aHJlYWRNYXggPSAke199KC02NTUwNC4waCk7YCx4PVQ9PmBcXG4gICAgICB2YXI8d29ya2dyb3VwPiByb3dNYXhTaGFyZWQgOiAke199O1xcbiAgICAgIHZhcjx3b3JrZ3JvdXA+IHJvd1N1bVNoYXJlZCA6ICR7X307XFxuICAgICAgdmFyPHdvcmtncm91cD4gdGhyZWFkU2hhcmVkIDogYXJyYXk8JHtffSwgJHtpfT47XFxuXFxuICAgICAgZm4gZ2V0VmFsdWUocm93OiBpMzIsIGNvbDogaTMyLCByb3dfc3RyaWRlOiBpMzIpIC0+ICR7X30ge1xcbiAgICAgICAgbGV0IGluZGV4ID0gcm93ICogcm93X3N0cmlkZSArIGNvbDtcXG4gICAgICAgIHJldHVybiB4W2luZGV4XTtcXG4gICAgICB9XFxuXFxuICAgICAgZm4gc2V0VmFsdWUocm93OiBpMzIsIGNvbDogaTMyLCByb3dfc3RyaWRlOiBpMzIsIHZhbHVlOiAke199KSB7XFxuICAgICAgICBsZXQgaW5kZXggPSByb3cgKiByb3dfc3RyaWRlICsgY29sO1xcbiAgICAgICAgcmVzdWx0W2luZGV4XSA9IHZhbHVlO1xcbiAgICAgIH1cXG4gICAgICAke1QucmVnaXN0ZXJVbmlmb3JtKFwicGFja2VkQ29sc1wiLFwiaTMyXCIpLmRlY2xhcmVWYXJpYWJsZXMoeSx3KX1cXG4gICAgICAke1QubWFpblN0YXJ0KCl9XFxuICAgICAgICBsZXQgZ2luZGV4ID0gaTMyKGdsb2JhbF9pZHgpO1xcbiAgICAgICAgbGV0IGxpbmRleCA9IGkzMihsb2NhbF9pZHgpO1xcbiAgICAgICAgY29uc3Qgd2cgPSAke2l9O1xcbiAgICAgICAgbGV0IHJvdyA9IGdpbmRleCAvIHdnO1xcbiAgICAgICAgbGV0IGNvbHMgPSB1bmlmb3Jtcy5wYWNrZWRDb2xzO1xcbiAgICAgICAgbGV0IHJvd19zdHJpZGUgOiBpMzIgPSB1bmlmb3Jtcy5wYWNrZWRDb2xzO1xcblxcbiAgICAgICAgLy8gZmluZCB0aGUgcm93cyBtYXhcXG4gICAgICAgICR7dn1cXG4gICAgICAgIGZvciAodmFyIGNvbCA9IGxpbmRleDsgY29sIDwgY29sczsgY29sICs9IHdnKSB7XFxuICAgICAgICAgIGxldCB2YWx1ZSA9IGdldFZhbHVlKHJvdywgY29sLCByb3dfc3RyaWRlKTtcXG4gICAgICAgICAgdGhyZWFkTWF4ID0gbWF4KHRocmVhZE1heCwgdmFsdWUpO1xcbiAgICAgICAgfVxcbiAgICAgICAgaWYgKGxpbmRleCA8IGNvbHMpIHtcXG4gICAgICAgICAgdGhyZWFkU2hhcmVkW2xpbmRleF0gPSB0aHJlYWRNYXg7XFxuICAgICAgICB9XFxuICAgICAgICB3b3JrZ3JvdXBCYXJyaWVyKCk7XFxuXFxuICAgICAgICB2YXIgcmVkdWNlU2l6ZSA9IG1pbihjb2xzLCB3Zyk7XFxuICAgICAgICBmb3IgKHZhciBjdXJyU2l6ZSA9IHJlZHVjZVNpemUgPj4gMTsgIGN1cnJTaXplID4gMDsgY3VyclNpemUgPSByZWR1Y2VTaXplID4+IDEpIHtcXG4gICAgICAgICAgcmVkdWNlU2l6ZSA9IGN1cnJTaXplICsgKHJlZHVjZVNpemUgJiAxKTtcXG4gICAgICAgICAgaWYgKGxpbmRleCA8IGN1cnJTaXplKSB7XFxuICAgICAgICAgICAgdGhyZWFkU2hhcmVkW2xpbmRleF0gPSBtYXgodGhyZWFkU2hhcmVkW2xpbmRleF0sIHRocmVhZFNoYXJlZFtsaW5kZXggKyByZWR1Y2VTaXplXSk7XFxuICAgICAgICAgIH1cXG4gICAgICAgICAgd29ya2dyb3VwQmFycmllcigpO1xcbiAgICAgICAgfVxcbiAgICAgICAgaWYgKGxpbmRleCA9PSAwKSB7XFxuICAgICAgICAgIHJvd01heFNoYXJlZCA9ICR7X30oJHtkKFwidGhyZWFkU2hhcmVkWzBdXCIsbSl9KTtcXG4gICAgICAgIH1cXG4gICAgICAgIHdvcmtncm91cEJhcnJpZXIoKTtcXG5cXG4gICAgICAgIC8vIGZpbmQgdGhlIHJvd3Mgc3VtXFxuICAgICAgICB2YXIgdGhyZWFkU3VtID0gJHtffSgwLjApO1xcbiAgICAgICAgZm9yICh2YXIgY29sID0gbGluZGV4OyBjb2wgPCBjb2xzOyBjb2wgKz0gd2cpIHtcXG4gICAgICAgICAgbGV0IHN1YkV4cCA9IGV4cChnZXRWYWx1ZShyb3csIGNvbCwgcm93X3N0cmlkZSkgLSByb3dNYXhTaGFyZWQpO1xcbiAgICAgICAgICB0aHJlYWRTdW0gKz0gc3ViRXhwO1xcbiAgICAgICAgfVxcbiAgICAgICAgdGhyZWFkU2hhcmVkW2xpbmRleF0gPSB0aHJlYWRTdW07XFxuICAgICAgICB3b3JrZ3JvdXBCYXJyaWVyKCk7XFxuXFxuICAgICAgICBmb3IgKHZhciBjdXJyU2l6ZSA9IHdnID4+IDE7ICBjdXJyU2l6ZSA+IDA7IGN1cnJTaXplID0gY3VyclNpemUgPj4gMSkge1xcbiAgICAgICAgICBpZiAobGluZGV4IDwgY3VyclNpemUpIHtcXG4gICAgICAgICAgICB0aHJlYWRTaGFyZWRbbGluZGV4XSA9IHRocmVhZFNoYXJlZFtsaW5kZXhdICsgdGhyZWFkU2hhcmVkW2xpbmRleCArIGN1cnJTaXplXTtcXG4gICAgICAgICAgfVxcbiAgICAgICAgICB3b3JrZ3JvdXBCYXJyaWVyKCk7XFxuICAgICAgICB9XFxuICAgICAgICBpZiAobGluZGV4ID09IDApIHtcXG4gICAgICAgICAgcm93U3VtU2hhcmVkID0gJHtffSgke3V0KFwidGhyZWFkU2hhcmVkWzBdXCIsbSl9KTtcXG4gICAgICAgIH1cXG4gICAgICAgIHdvcmtncm91cEJhcnJpZXIoKTtcXG5cXG4gICAgICAgIC8vIGNhbGN1bGF0ZSBmaW5hbCB2YWx1ZSBmb3IgZWFjaCBlbGVtZW50IGluIHRoZSByb3dcXG4gICAgICAgIGZvciAodmFyIGNvbCA9IGxpbmRleDsgY29sIDwgY29sczsgY29sICs9IHdnKSB7XFxuICAgICAgICAgIGxldCB2YWx1ZSA9IGV4cChnZXRWYWx1ZShyb3csIGNvbCwgcm93X3N0cmlkZSkgLSByb3dNYXhTaGFyZWQpIC8gcm93U3VtU2hhcmVkO1xcbiAgICAgICAgICBzZXRWYWx1ZShyb3csIGNvbCwgcm93X3N0cmlkZSwgdmFsdWUpO1xcbiAgICAgICAgfVxcbiAgICAgIH1gO3JldHVybntuYW1lOlwiU29mdG1heFwiLHNoYWRlckNhY2hlOntoaW50OmAke219YCxpbnB1dERlcGVuZGVuY2llczpbXCJ0eXBlXCJdfSxnZXRSdW5EYXRhOigpPT4oe291dHB1dHM6W3tkaW1zOnIsZGF0YVR5cGU6ZS5kYXRhVHlwZX1dLGRpc3BhdGNoR3JvdXA6e3g6cH0scHJvZ3JhbVVuaWZvcm1zOlt7dHlwZTpcInVpbnQzMlwiLGRhdGE6aH1dfSksZ2V0U2hhZGVyU291cmNlOnh9fSx0bD0oZSx0KT0+e21wKGUuaW5wdXRzKSxlLmNvbXB1dGUoZnAoZS5pbnB1dHNbMF0sdCkpfSxybD1lPT54ZSh7YXhpczplLmF4aXN9KX0pO3ZhciBocCxncCx5cCxicCx3cCxvbCxpbCxhbD1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7Q2UoKTtZZSgpO19lKCk7aHA9ZT0+e2lmKCFlfHxlLmxlbmd0aDwxKXRocm93IG5ldyBFcnJvcihcInRvbyBmZXcgaW5wdXRzXCIpfSxncD0oZSx0KT0+e2xldCByPVtdLG89dC5udW1PdXRwdXRzO3JldHVybiBlWzFdLmRpbXNbMF0+MCYmKGVbMV0uZ2V0QmlnSW50NjRBcnJheSgpLmZvckVhY2goaT0+ci5wdXNoKE51bWJlcihpKSkpLG89ci5sZW5ndGgpLHhlKHtudW1PdXRwdXRzOm8sYXhpczp0LmF4aXMsc3BsaXRTaXplczpyfSl9LHlwPWU9PmBcXG5mbiBjYWxjdWxhdGVPdXRwdXRJbmRleChpbmRleDogdTMyKSAtPiB1MzIge1xcbiAgICBmb3IgKHZhciBpOiB1MzIgPSAwdTsgaSA8ICR7ZX11OyBpICs9IDF1ICkge1xcbiAgICBpZiAoaW5kZXggPCAke2NlKFwidW5pZm9ybXMuc2l6ZV9pbl9zcGxpdF9heGlzXCIsXCJpXCIsZSl9KSB7XFxuICAgICAgICByZXR1cm4gaTtcXG4gICAgfVxcbiAgICB9XFxuICAgIHJldHVybiAke2V9dTtcXG59YCxicD1lPT57bGV0IHQ9ZS5sZW5ndGgscj1bXTtmb3IobGV0IG89MDtvPHQ7KytvKXtsZXQgaT1lW29dLnNldEJ5SW5kaWNlcyhcImluZGljZXNcIixcImlucHV0W2dsb2JhbF9pZHhdXCIpO3Q9PT0xP3IucHVzaChpKTpvPT09MD9yLnB1c2goYGlmIChvdXRwdXRfbnVtYmVyID09ICR7b311KSB7ICR7aX0gfWApOm89PT10LTE/ci5wdXNoKGBlbHNlIHsgJHtpfSB9YCk6ci5wdXNoKGBlbHNlIGlmIChvdXRwdXRfbnVtYmVyID09ICR7b30pIHsgJHtpfSB9YCl9cmV0dXJuYFxcbiAgICAgIGZuIHdyaXRlQnVmZmVyRGF0YShvdXRwdXRfbnVtYmVyOiB1MzIsIGluZGljZXM6ICR7ZVswXS50eXBlLmluZGljZXN9LCBnbG9iYWxfaWR4OiB1MzIpIHtcXG4gICAgICAgICR7ci5qb2luKGBcXG5gKX1cXG4gICAgICB9YH0sd3A9KGUsdCk9PntsZXQgcj1lWzBdLmRpbXMsbz1XLnNpemUociksaT1lWzBdLmRhdGFUeXBlLHU9Vy5ub3JtYWxpemVBeGlzKHQuYXhpcyxyLmxlbmd0aCksYT1uZXcgQXJyYXkodC5udW1PdXRwdXRzKSxwPVYoXCJpbnB1dFwiLGksciksbT1uZXcgQXJyYXkodC5udW1PdXRwdXRzKSxoPVtdLGQ9W10seT0wLHc9W3t0eXBlOlwidWludDMyXCIsZGF0YTpvfV07Zm9yKGxldCB2PTA7djx0Lm51bU91dHB1dHM7disrKXt5Kz10LnNwbGl0U2l6ZXNbdl0sbVt2XT15O2xldCB4PXIuc2xpY2UoKTt4W3QuYXhpc109dC5zcGxpdFNpemVzW3ZdLGQucHVzaCh4KSxhW3ZdPUooYG91dHB1dCR7dn1gLGkseCksaC5wdXNoKHtkaW1zOmRbdl0sZGF0YVR5cGU6ZVswXS5kYXRhVHlwZX0pfXcucHVzaCh7dHlwZTpcInVpbnQzMlwiLGRhdGE6bX0pLHcucHVzaCguLi5HKHIpKSxkLmZvckVhY2godj0+dy5wdXNoKC4uLkcodikpKTtsZXQgXz12PT5gXFxuICAke3YucmVnaXN0ZXJVbmlmb3JtKFwiaW5wdXRfc2l6ZVwiLFwidTMyXCIpLnJlZ2lzdGVyVW5pZm9ybShcInNpemVfaW5fc3BsaXRfYXhpc1wiLFwidTMyXCIsbS5sZW5ndGgpLmRlY2xhcmVWYXJpYWJsZXMocCwuLi5hKX1cXG4gICR7eXAobS5sZW5ndGgpfVxcbiAgJHticChhKX1cXG5cXG4gICR7di5tYWluU3RhcnQoKX1cXG4gICAgJHt2Lmd1YXJkQWdhaW5zdE91dE9mQm91bmRzV29ya2dyb3VwU2l6ZXMoXCJ1bmlmb3Jtcy5pbnB1dF9zaXplXCIpfVxcblxcbiAgICB2YXIgaW5kaWNlcyA9ICR7cC5vZmZzZXRUb0luZGljZXMoXCJnbG9iYWxfaWR4XCIpfTtcXG4gICAgdmFyIGluZGV4ID0gJHtwLmluZGljZXNHZXQoXCJpbmRpY2VzXCIsdSl9O1xcbiAgICBsZXQgb3V0cHV0X251bWJlciA9IGNhbGN1bGF0ZU91dHB1dEluZGV4KGluZGV4KTtcXG4gICAgaWYgKG91dHB1dF9udW1iZXIgIT0gMCkge1xcbiAgICAgIGluZGV4IC09ICR7Y2UoXCJ1bmlmb3Jtcy5zaXplX2luX3NwbGl0X2F4aXNcIixcIm91dHB1dF9udW1iZXIgLSAxdVwiLG0ubGVuZ3RoKX07XFxuICAgICAgJHtwLmluZGljZXNTZXQoXCJpbmRpY2VzXCIsdSxcImluZGV4XCIpfTtcXG4gICAgfVxcbiAgICB3cml0ZUJ1ZmZlckRhdGEob3V0cHV0X251bWJlciwgaW5kaWNlcywgZ2xvYmFsX2lkeCk7XFxuICB9YDtyZXR1cm57bmFtZTpcIlNwbGl0XCIsc2hhZGVyQ2FjaGU6e2hpbnQ6dC5jYWNoZUtleSxpbnB1dERlcGVuZGVuY2llczpbXCJyYW5rXCJdfSxnZXRTaGFkZXJTb3VyY2U6XyxnZXRSdW5EYXRhOigpPT4oe291dHB1dHM6aCxkaXNwYXRjaEdyb3VwOnt4Ok1hdGguY2VpbChvLzY0KX0scHJvZ3JhbVVuaWZvcm1zOnd9KX19LG9sPShlLHQpPT57aHAoZS5pbnB1dHMpO2xldCByPWUuaW5wdXRzLmxlbmd0aD09PTE/dDpncChlLmlucHV0cyx0KTtlLmNvbXB1dGUod3AoZS5pbnB1dHMscikse2lucHV0czpbMF19KX0saWw9ZT0+e2xldCB0PWUuYXhpcyxyPWUuc3BsaXRTaXplcyxvPWUubnVtT3V0cHV0czwwP3IubGVuZ3RoOmUubnVtT3V0cHV0cztpZihvIT09ci5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKFwibnVtT3V0cHV0cyBhbmQgc3BsaXRTaXplcyBsZW5naCBtdXN0IGJlIGVxdWFsXCIpO3JldHVybiB4ZSh7YXhpczp0LG51bU91dHB1dHM6byxzcGxpdFNpemVzOnJ9KX19KTt2YXIgc2wsdnAsJHAsX3AsdWwsbGw9USgoKT0+e1widXNlIHN0cmljdFwiO1ZlKCk7Q2UoKTtfZSgpO3NsPWU9PkFycmF5LmZyb20oZS5nZXRCaWdJbnQ2NEFycmF5KCksTnVtYmVyKSx2cD1lPT57aWYoIWV8fGUubGVuZ3RoIT09Mil0aHJvdyBuZXcgRXJyb3IoXCJUaWxlIHJlcXVpcmVzIDIgaW5wdXRzLlwiKTtpZihlWzBdLmRhdGFUeXBlIT09MSYmZVswXS5kYXRhVHlwZSE9PTYmJmVbMF0uZGF0YVR5cGUhPT0xMil0aHJvdyBuZXcgRXJyb3IoXCJUaWxlIG9ubHkgc3VwcG9ydCBmbG9hdCwgaW50MzIsIGFuZCB1aW50MzIgZGF0YSB0eXBlc1wiKTtpZihlWzFdLmRhdGFUeXBlIT09Nyl0aHJvdyBuZXcgRXJyb3IoXCJUaWxlIGByZXBlYXRzYCBpbnB1dCBzaG91bGQgYmUgb2YgaW50NjQgZGF0YSB0eXBlXCIpO2lmKGVbMV0uZGltcy5sZW5ndGghPT0xKXRocm93IG5ldyBFcnJvcihcIlRpbGUgYHJlcGVhdHNgIGlucHV0IHNob3VsZCBiZSAxLURcIik7aWYoc2woZVsxXSkubGVuZ3RoIT09ZVswXS5kaW1zLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoXCJUaWxlIGByZXBlYXRzYCBpbnB1dCBzaG91bGQgaGF2ZSBzYW1lIG51bWJlciBvZiBlbGVtZW50cyBhcyByYW5rIG9mIGlucHV0IGRhdGEgdGVuc29yXCIpfSwkcD0oZSx0KT0+e2xldCByPVtdO2ZvcihsZXQgbz0wO288ZS5sZW5ndGg7KytvKXIucHVzaChlW29dKnRbb10pO3JldHVybiByfSxfcD1lPT57bGV0IHQ9ZVswXS5kaW1zLHI9c2woZVsxXSksbz0kcCh0LHIpLGk9Vy5zaXplKG8pLHU9ZVswXS5kYXRhVHlwZSxhPVYoXCJpbnB1dFwiLHUsdC5sZW5ndGgpLHA9SihcIm91dHB1dFwiLHUsby5sZW5ndGgpLG09aD0+YFxcbiAgICAgIGNvbnN0IGlucHV0U2hhcGUgPSAke2EuaW5kaWNlcyguLi50KX07XFxuICAgICAgJHtoLnJlZ2lzdGVyVW5pZm9ybShcIm91dHB1dF9zaXplXCIsXCJ1MzJcIikuZGVjbGFyZVZhcmlhYmxlcyhhLHApfVxcbiAgICAgICR7aC5tYWluU3RhcnQoKX1cXG4gICAgICAke2guZ3VhcmRBZ2FpbnN0T3V0T2ZCb3VuZHNXb3JrZ3JvdXBTaXplcyhcInVuaWZvcm1zLm91dHB1dF9zaXplXCIpfVxcbiAgICAgIGxldCBvdXRwdXRfaW5kaWNlcyA9ICR7cC5vZmZzZXRUb0luZGljZXMoXCJnbG9iYWxfaWR4XCIpfTtcXG4gICAgICB2YXIgaW5wdXRfaW5kaWNlczogJHthLnR5cGUuaW5kaWNlc307XFxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAke3QubGVuZ3RofTsgaSsrKSB7XFxuICAgICAgICBsZXQgaW5wdXRfZGltX2kgPSAke2EuaW5kaWNlc0dldChcInVuaWZvcm1zLmlucHV0X3NoYXBlXCIsXCJpXCIpfTtcXG4gICAgICAgIGxldCBpbnB1dF9kaW1fdmFsdWUgPSAke3AuaW5kaWNlc0dldChcIm91dHB1dF9pbmRpY2VzXCIsXCJpXCIpfSAgJSBpbnB1dF9kaW1faTtcXG5cXG4gICAgICAgICR7YS5pbmRpY2VzU2V0KFwiaW5wdXRfaW5kaWNlc1wiLFwiaVwiLFwiaW5wdXRfZGltX3ZhbHVlXCIpfVxcbiAgICAgIH1cXG4gICAgICAke3Auc2V0QnlPZmZzZXQoXCJnbG9iYWxfaWR4XCIsYS5nZXRCeUluZGljZXMoXCJpbnB1dF9pbmRpY2VzXCIpKX1cXG4gICAgfWA7cmV0dXJue25hbWU6XCJUaWxlXCIsc2hhZGVyQ2FjaGU6e2hpbnQ6YCR7cn1gLGlucHV0RGVwZW5kZW5jaWVzOltcInJhbmtcIl19LGdldFJ1bkRhdGE6KCk9Pih7b3V0cHV0czpbe2RpbXM6byxkYXRhVHlwZTplWzBdLmRhdGFUeXBlfV0sZGlzcGF0Y2hHcm91cDp7eDpNYXRoLmNlaWwoaS82NCl9LHByb2dyYW1Vbmlmb3Jtczpbe3R5cGU6XCJ1aW50MzJcIixkYXRhOml9LC4uLkcoZVswXS5kaW1zKSwuLi5HKG8pXX0pLGdldFNoYWRlclNvdXJjZTptfX0sdWw9ZT0+e3ZwKGUuaW5wdXRzKSxlLmNvbXB1dGUoX3AoZS5pbnB1dHMpLHtpbnB1dHM6WzBdfSl9fSk7dmFyIFNwLHhwLGRsLGNsPVEoKCk9PntcInVzZSBzdHJpY3RcIjtWZSgpO0NlKCk7X2UoKTtTcD0oZSx0LHIsbyxpKT0+e2xldCB1PUooXCJvdXRwdXRfZGF0YVwiLGksci5sZW5ndGgsNCksYT1WKFwiYV9kYXRhXCIsdFsxXS5kYXRhVHlwZSx0WzFdLmRpbXMubGVuZ3RoLDQpLHA9VihcImJfZGF0YVwiLHRbMl0uZGF0YVR5cGUsdFsyXS5kaW1zLmxlbmd0aCw0KSxtPVYoXCJjX2RhdGFcIix0WzBdLmRhdGFUeXBlLHRbMF0uZGltcy5sZW5ndGgsNCksaCxkPSh5LHcsXyk9PmBzZWxlY3QoJHt3fSwgJHt5fSwgJHtffSlgO2lmKCFvKWg9dS5zZXRCeU9mZnNldChcImdsb2JhbF9pZHhcIixkKGEuZ2V0QnlPZmZzZXQoXCJnbG9iYWxfaWR4XCIpLHAuZ2V0QnlPZmZzZXQoXCJnbG9iYWxfaWR4XCIpLG0uZ2V0QnlPZmZzZXQoXCJnbG9iYWxfaWR4XCIpKSk7ZWxzZXtsZXQgeT0odyxfLHY9XCJcIik9PntsZXQgeD1gYV9kYXRhW2luZGV4X2Eke199XVtjb21wb25lbnRfYSR7X31dYCxUPWBiX2RhdGFbaW5kZXhfYiR7X31dW2NvbXBvbmVudF9iJHtffV1gLEM9YGJvb2woY19kYXRhW2luZGV4X2Mke199XSAmICR7NDI3ODE5MDA4MD4+PigzLV8pKjh9dSlgO3JldHVybmBcXG4gICAgICAgICAgICBsZXQgb3V0cHV0X2luZGljZXMke199ID0gJHt1Lm9mZnNldFRvSW5kaWNlcyhgZ2xvYmFsX2lkeCAqIDR1ICsgJHtffXVgKX07XFxuICAgICAgICAgICAgbGV0IG9mZnNldF9hJHtffSA9ICR7YS5icm9hZGNhc3RlZEluZGljZXNUb09mZnNldChgb3V0cHV0X2luZGljZXMke199YCx1KX07XFxuICAgICAgICAgICAgbGV0IG9mZnNldF9iJHtffSA9ICR7cC5icm9hZGNhc3RlZEluZGljZXNUb09mZnNldChgb3V0cHV0X2luZGljZXMke199YCx1KX07XFxuICAgICAgICAgICAgbGV0IG9mZnNldF9jJHtffSA9ICR7bS5icm9hZGNhc3RlZEluZGljZXNUb09mZnNldChgb3V0cHV0X2luZGljZXMke199YCx1KX07XFxuICAgICAgICAgICAgbGV0IGluZGV4X2Eke199ID0gb2Zmc2V0X2Eke199IC8gNHU7XFxuICAgICAgICAgICAgbGV0IGluZGV4X2Ike199ID0gb2Zmc2V0X2Ike199IC8gNHU7XFxuICAgICAgICAgICAgbGV0IGluZGV4X2Mke199ID0gb2Zmc2V0X2Mke199IC8gNHU7XFxuICAgICAgICAgICAgbGV0IGNvbXBvbmVudF9hJHtffSA9IG9mZnNldF9hJHtffSAlIDR1O1xcbiAgICAgICAgICAgIGxldCBjb21wb25lbnRfYiR7X30gPSBvZmZzZXRfYiR7X30gJSA0dTtcXG4gICAgICAgICAgICAke3d9WyR7X31dID0gJHt2fSgke2QoeCxULEMpfSk7XFxuICAgICAgICAgIGB9O2k9PT05P2g9YFxcbiAgICAgICAgICAgIHZhciBkYXRhID0gdmVjNDx1MzI+KDApO1xcbiAgICAgICAgICAgICR7eShcImRhdGFcIiwwLFwidTMyXCIpfVxcbiAgICAgICAgICAgICR7eShcImRhdGFcIiwxLFwidTMyXCIpfVxcbiAgICAgICAgICAgICR7eShcImRhdGFcIiwyLFwidTMyXCIpfVxcbiAgICAgICAgICAgICR7eShcImRhdGFcIiwzLFwidTMyXCIpfVxcbiAgICAgICAgICAgIG91dHB1dF9kYXRhW2dsb2JhbF9pZHhdID0gZG90KHZlYzQ8dTMyPigweDEsIDB4MTAwLCAweDEwMDAwLCAweDEwMDAwMDApLCB2ZWM0PHUzMj4oZGF0YSkpO2A6aD1gXFxuICAgICAgICAgICAgJHt5KFwib3V0cHV0X2RhdGFbZ2xvYmFsX2lkeF1cIiwwKX1cXG4gICAgICAgICAgICAke3koXCJvdXRwdXRfZGF0YVtnbG9iYWxfaWR4XVwiLDEpfVxcbiAgICAgICAgICAgICR7eShcIm91dHB1dF9kYXRhW2dsb2JhbF9pZHhdXCIsMil9XFxuICAgICAgICAgICAgJHt5KFwib3V0cHV0X2RhdGFbZ2xvYmFsX2lkeF1cIiwzKX1cXG4gICAgICAgICAgYH1yZXR1cm5gXFxuICAgICAgICAke2UucmVnaXN0ZXJVbmlmb3JtKFwidmVjX3NpemVcIixcInUzMlwiKS5kZWNsYXJlVmFyaWFibGVzKG0sYSxwLHUpfVxcbiAgICAgICAgJHtlLm1haW5TdGFydCgpfVxcbiAgICAgICAgJHtlLmd1YXJkQWdhaW5zdE91dE9mQm91bmRzV29ya2dyb3VwU2l6ZXMoXCJ1bmlmb3Jtcy52ZWNfc2l6ZVwiKX1cXG4gICAgICAgICR7aH1cXG4gICAgICB9YH0seHA9ZT0+e2xldCB0PWVbMV0uZGltcyxyPWVbMl0uZGltcyxvPWVbMF0uZGltcyxpPWVbMV0uZGF0YVR5cGUsdT0hKFcuYXJlRXF1YWwodCxyKSYmVy5hcmVFcXVhbChyLG8pKSxhPXQscD1XLnNpemUodCk7aWYodSl7bGV0IGg9dnQuY2FsY1NoYXBlKHZ0LmNhbGNTaGFwZSh0LHIsITEpLG8sITEpO2lmKCFoKXRocm93IG5ldyBFcnJvcihcIkNhblxcJ3QgcGVyZm9ybSB3aGVyZSBvcCBvbiB0aGUgZ2l2ZW4gdGVuc29yc1wiKTthPWgscD1XLnNpemUoYSl9bGV0IG09TWF0aC5jZWlsKHAvNCk7cmV0dXJue25hbWU6XCJXaGVyZVwiLHNoYWRlckNhY2hlOntpbnB1dERlcGVuZGVuY2llczpbXCJyYW5rXCIsXCJyYW5rXCIsXCJyYW5rXCJdfSxnZXRTaGFkZXJTb3VyY2U6aD0+U3AoaCxlLGEsdSxpKSxnZXRSdW5EYXRhOigpPT4oe291dHB1dHM6W3tkaW1zOmEsZGF0YVR5cGU6aX1dLGRpc3BhdGNoR3JvdXA6e3g6TWF0aC5jZWlsKHAvNjQvNCl9LHByb2dyYW1Vbmlmb3Jtczpbe3R5cGU6XCJ1aW50MzJcIixkYXRhOm19LC4uLkcobyksLi4uRyh0KSwuLi5HKHIpLC4uLkcoYSldfSl9fSxkbD1lPT57ZS5jb21wdXRlKHhwKGUuaW5wdXRzKSl9fSk7dmFyIHBsLG1sPVEoKCk9PntcInVzZSBzdHJpY3RcIjtEYSgpO3hvKCk7VWEoKTtXYSgpOyRzKCk7a3MoKTtEcygpO0VvKCk7WXMoKTtKcygpO251KCk7YXUoKTtsdSgpO3B1KCk7aHUoKTt5dSgpO3d1KCk7T28oKTtTdSgpO0N1KCk7SHUoKTtMdSgpO0luKCk7S3UoKTtadSgpO2VsKCk7bmwoKTthbCgpO2xsKCk7cHIoKTtDbygpO2NsKCk7cGw9bmV3IE1hcChbW1wiQWJzXCIsW05hXV0sW1wiQWNvc1wiLFtIYV1dLFtcIkFjb3NoXCIsW0dhXV0sW1wiQWRkXCIsW19zXV0sW1wiQXJnTWF4XCIsW0JhLFNvXV0sW1wiQXJnTWluXCIsW1JhLFNvXV0sW1wiQXNpblwiLFtMYV1dLFtcIkFzaW5oXCIsW0ZhXV0sW1wiQXRhblwiLFtqYV1dLFtcIkF0YW5oXCIsW3FhXV0sW1wiQXR0ZW50aW9uXCIsW01hXV0sW1wiQXZlcmFnZVBvb2xcIixbUnUsa3VdXSxbXCJCYXRjaE5vcm1hbGl6YXRpb25cIixbemFdXSxbXCJCaWFzQWRkXCIsW1ZhXV0sW1wiQmlhc1NwbGl0R2VsdVwiLFt2c11dLFtcIkNhc3RcIixbWWEsS2FdXSxbXCJDZWlsXCIsW1hhXV0sW1wiQ2xpcFwiLFtaYV1dLFtcIkNvbmNhdFwiLFtScyxCc11dLFtcIkNvbnZcIixbUm8sa29dXSxbXCJDb252VHJhbnNwb3NlXCIsW0tzLHFzXV0sW1wiQ29zXCIsW0phXV0sW1wiQ29zaFwiLFtRYV1dLFtcIkN1bVN1bVwiLFtacyxYc11dLFtcIkRpdlwiLFtTc11dLFtcIkVpbnN1bVwiLFt0dSxydV1dLFtcIkVsdVwiLFtlcyxQbl1dLFtcIkVxdWFsXCIsW3hzXV0sW1wiRXJmXCIsW3RzXV0sW1wiRXhwXCIsW3JzXV0sW1wiRXhwYW5kXCIsW2l1XV0sW1wiRmxvb3JcIixbbnNdXSxbXCJGdXNlZENvbnZcIixbUm8sa29dXSxbXCJHYXRoZXJcIixbdXUsc3VdXSxbXCJHYXRoZXJFbGVtZW50c1wiLFtjdSxkdV1dLFtcIkdlbHVcIixbb3NdXSxbXCJHZW1tXCIsW2Z1LG11XV0sW1wiR2xvYmFsQXZlcmFnZVBvb2xcIixbTXUsRHVdXSxbXCJHbG9iYWxNYXhQb29sXCIsW051LFd1XV0sW1wiR3JlYXRlclwiLFtUc11dLFtcIkdyZWF0ZXJPckVxdWFsXCIsW1BzXV0sW1wiSGFyZFNpZ21vaWRcIixbcHMsY3NdXSxbXCJJbnN0YW5jZU5vcm1hbGl6YXRpb25cIixbZ3VdXSxbXCJMYXllck5vcm1hbGl6YXRpb25cIixbYnVdXSxbXCJMZWFreVJlbHVcIixbaXMsUG5dXSxbXCJMZXNzXCIsW0VzXV0sW1wiTGVzc09yRXF1YWxcIixbT3NdXSxbXCJMb2dcIixbd3NdXSxbXCJNYXRNdWxcIixbV3NdXSxbXCJNYXhQb29sXCIsW1V1LFZ1XV0sW1wiTXVsXCIsW0NzXV0sW1wiTXVsdGlIZWFkQXR0ZW50aW9uXCIsW191LCR1XV0sW1wiTmVnXCIsW3NzXV0sW1wiTm90XCIsW2FzXV0sW1wiUGFkXCIsW3h1XV0sW1wiUG93XCIsW0FzXV0sW1wiUmFuZ2VcIixbR3VdXSxbXCJSZWNpcHJvY2FsXCIsW3VzXV0sW1wiUmVkdWNlTWluXCIsW0lhXV0sW1wiUmVkdWNlTWVhblwiLFtfYV1dLFtcIlJlZHVjZU1heFwiLFtBYV1dLFtcIlJlZHVjZVN1bVwiLFtFYV1dLFtcIlJlZHVjZVByb2RcIixbVGFdXSxbXCJSZWR1Y2VMMVwiLFtTYV1dLFtcIlJlZHVjZUwyXCIsW3hhXV0sW1wiUmVkdWNlTG9nU3VtXCIsW09hXV0sW1wiUmVkdWNlTG9nU3VtRXhwXCIsW0NhXV0sW1wiUmVkdWNlU3VtU3F1YXJlXCIsW1BhXV0sW1wiUmVsdVwiLFtsc11dLFtcIlJlc2l6ZVwiLFtqdSxxdV1dLFtcIlNpZ21vaWRcIixbZHNdXSxbXCJTaW5cIixbbXNdXSxbXCJTaW5oXCIsW2ZzXV0sW1wiU2xpY2VcIixbSnUsUXVdXSxbXCJTa2lwTGF5ZXJOb3JtYWxpemF0aW9uXCIsW1l1XV0sW1wiU3BsaXRcIixbb2wsaWxdXSxbXCJTcXJ0XCIsW2hzXV0sW1wiU29mdG1heFwiLFt0bCxybF1dLFtcIlN1YlwiLFtJc11dLFtcIlRhblwiLFtnc11dLFtcIlRhbmhcIixbeXNdXSxbXCJUaHJlc2hvbGRlZFJlbHVcIixbYnMsUG5dXSxbXCJUaWxlXCIsW3VsXV0sW1wiVHJhbnNwb3NlXCIsW2xhLGRhXV0sW1wiV2hlcmVcIixbZGxdXV0pfSk7dmFyIFduLGZsPVEoKCk9PntcInVzZSBzdHJpY3RcIjtkcigpO3p0KCk7X2UoKTtXbj1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLmJhY2tlbmQ9dDt0aGlzLnJlcG89bmV3IE1hcCx0aGlzLmF0dHJpYnV0ZXNCb3VuZD0hMX1nZXRBcnRpZmFjdCh0KXtyZXR1cm4gdGhpcy5yZXBvLmdldCh0KX1zZXRBcnRpZmFjdCh0LHIpe3RoaXMucmVwby5zZXQodCxyKX1ydW4odCxyLG8saSx1KXtZdCh0LnByb2dyYW1JbmZvLm5hbWUpO2xldCBhPXRoaXMuYmFja2VuZC5kZXZpY2UscD10aGlzLmJhY2tlbmQuZ2V0Q29tcHV0ZVBhc3NFbmNvZGVyKCk7dGhpcy5iYWNrZW5kLndyaXRlVGltZXN0YW1wKHRoaXMuYmFja2VuZC5wZW5kaW5nRGlzcGF0Y2hOdW1iZXIqMikscC5zZXRQaXBlbGluZSh0LmNvbXB1dGVQaXBlbGluZSk7bGV0IG09W107Zm9yKGxldCBkIG9mIHIpbS5wdXNoKHtiaW5kaW5nOm0ubGVuZ3RoLHJlc291cmNlOntidWZmZXI6ZC5idWZmZXJ9fSk7Zm9yKGxldCBkIG9mIG8pbS5wdXNoKHtiaW5kaW5nOm0ubGVuZ3RoLHJlc291cmNlOntidWZmZXI6ZC5idWZmZXJ9fSk7dSYmbS5wdXNoKHtiaW5kaW5nOm0ubGVuZ3RoLHJlc291cmNlOnV9KTtsZXQgaD1hLmNyZWF0ZUJpbmRHcm91cCh7bGF5b3V0OnQuY29tcHV0ZVBpcGVsaW5lLmdldEJpbmRHcm91cExheW91dCgwKSxlbnRyaWVzOm0sbGFiZWw6dC5wcm9ncmFtSW5mby5uYW1lfSk7cC5zZXRCaW5kR3JvdXAoMCxoKSxwLmRpc3BhdGNoV29ya2dyb3VwcyguLi5pKSx0aGlzLmJhY2tlbmQud3JpdGVUaW1lc3RhbXAodGhpcy5iYWNrZW5kLnBlbmRpbmdEaXNwYXRjaE51bWJlcioyKzEpLHRoaXMuYmFja2VuZC5wZW5kaW5nRGlzcGF0Y2hOdW1iZXIrKywodGhpcy5iYWNrZW5kLnBlbmRpbmdEaXNwYXRjaE51bWJlcj49dGhpcy5iYWNrZW5kLm1heERpc3BhdGNoTnVtYmVyfHx0aGlzLmJhY2tlbmQucXVlcnlUeXBlPT09XCJhdC1wYXNzZXNcIikmJnRoaXMuYmFja2VuZC5lbmRDb21wdXRlUGFzcygpLHRoaXMuYmFja2VuZC5wZW5kaW5nRGlzcGF0Y2hOdW1iZXI+PXRoaXMuYmFja2VuZC5tYXhEaXNwYXRjaE51bWJlciYmdGhpcy5iYWNrZW5kLmZsdXNoKCksWnQodC5wcm9ncmFtSW5mby5uYW1lKX1kaXNwb3NlKCl7fWJ1aWxkKHQscil7WXQodC5uYW1lKTtsZXQgbz10aGlzLmJhY2tlbmQuZGV2aWNlLGk9W107by5mZWF0dXJlcy5oYXMoXCJzaGFkZXItZjE2XCIpJiZpLnB1c2goXCJlbmFibGUgZjE2O1wiKTtsZXQgdT1zYShyKSxhPXQuZ2V0U2hhZGVyU291cmNlKHUpLHA9YCR7aS5qb2luKGBcXG5gKX1cXG4ke3UuYWRkaXRpb25hbEltcGxlbWVudGF0aW9uc31cXG4ke2F9YCxtPW8uY3JlYXRlU2hhZGVyTW9kdWxlKHtjb2RlOnAsbGFiZWw6dC5uYW1lfSk7RGUoXCJ2ZXJib3NlXCIsKCk9PmBbV2ViR1BVXSAke3QubmFtZX0gc2hhZGVyIGNvZGU6ICR7cH1gKTtsZXQgaD1vLmNyZWF0ZUNvbXB1dGVQaXBlbGluZSh7Y29tcHV0ZTp7bW9kdWxlOm0sZW50cnlQb2ludDpcIm1haW5cIn0sbGF5b3V0OlwiYXV0b1wiLGxhYmVsOnQubmFtZX0pO3JldHVybiBadCh0Lm5hbWUpLHtwcm9ncmFtSW5mbzp0LGNvbXB1dGVQaXBlbGluZTpofX1ub3JtYWxpemVEaXNwYXRjaEdyb3VwU2l6ZSh0KXtsZXQgcj10eXBlb2YgdD09XCJudW1iZXJcIj90OnQueCxvPXR5cGVvZiB0PT1cIm51bWJlclwiPzE6dC55fHwxLGk9dHlwZW9mIHQ9PVwibnVtYmVyXCI/MTp0Lnp8fDEsdT10aGlzLmJhY2tlbmQuZGV2aWNlLmxpbWl0cy5tYXhDb21wdXRlV29ya2dyb3Vwc1BlckRpbWVuc2lvbjtpZihyPD11JiZvPD11JiZpPD11KXJldHVybltyLG8saV07bGV0IGE9cipvKmkscD1NYXRoLmNlaWwoTWF0aC5zcXJ0KGEpKTtpZihwPnUpe2lmKHA9TWF0aC5jZWlsKE1hdGguY2JydChhKSkscD51KXRocm93IG5ldyBFcnJvcihcIlRvdGFsIGRpc3BhdGNoIHNpemUgZXhjZWVkcyBXZWJHUFUgbWF4aW11bS5cIik7cmV0dXJuW3AscCxwXX1lbHNlIHJldHVybltwLHAsMV19fX0pO3ZhciBDcCxBcCxObixobD1RKCgpPT57XCJ1c2Ugc3RyaWN0XCI7ZHIoKTtWZSgpO3p0KCk7cmEoKTthYSgpO21sKCk7ZmwoKTtDcD0oZSx0KT0+e2lmKHQubGVuZ3RoIT09ZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKGBpbnB1dERlcGVuZGVuY2llcyBsZW5ndGggJHt0Lmxlbmd0aH0gaXMgbm90IGVxdWFsIHRvIGlucHV0VGVuc29ycyBsZW5ndGggJHtlLmxlbmd0aH0uYCk7bGV0IHI9W107Zm9yKGxldCBvPTA7bzxlLmxlbmd0aDsrK28pe2xldCBpPWVbb10uZGF0YVR5cGU7c3dpdGNoKHRbb10pe2Nhc2VcIm5vbmVcIjp7ci5wdXNoKFwiXCIpO2JyZWFrfWNhc2VcInR5cGVcIjp7ci5wdXNoKGAke2l9YCk7YnJlYWt9Y2FzZVwicmFua1wiOntsZXQgdT1lW29dLmRpbXMubGVuZ3RoO3IucHVzaChgJHtpfTske3V9YCk7YnJlYWt9Y2FzZVwiZGltc1wiOntsZXQgdT1lW29dLmRpbXMuam9pbihcIixcIik7ci5wdXNoKGAke2l9OyR7dX1gKTticmVha31kZWZhdWx0OnRocm93IG5ldyBFcnJvcihgdW5zdXBwb3J0ZWQgaW5wdXQgZGVwZW5kZW5jeTogJHt0W29dfWApfX1yZXR1cm4gci5qb2luKFwifFwiKX0sQXA9KGUsdCxyKT0+e2xldCBvPWUubmFtZTtyZXR1cm4gZS5zaGFkZXJDYWNoZT8uaGludCYmKG8rPVwiW1wiK2Uuc2hhZGVyQ2FjaGUuaGludCtcIl1cIiksbys9XCI6XCIrcitgOiR7Q3AodCxlLnNoYWRlckNhY2hlPy5pbnB1dERlcGVuZGVuY2llcz8/bmV3IEFycmF5KHQubGVuZ3RoKS5maWxsKFwiZGltc1wiKSl9YCxvfSxObj1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuY3VycmVudEtlcm5lbElkPW51bGw7dGhpcy5jb21tYW5kRW5jb2Rlcj1udWxsO3RoaXMuY29tcHV0ZVBhc3NFbmNvZGVyPW51bGw7dGhpcy5tYXhEaXNwYXRjaE51bWJlcj0xNjt0aGlzLnBlbmRpbmdEaXNwYXRjaE51bWJlcj0wO3RoaXMucGVuZGluZ0tlcm5lbHM9W107dGhpcy5wZW5kaW5nUXVlcmllcz1uZXcgTWFwO3RoaXMuc2Vzc2lvbkV4dGVybmFsRGF0YU1hcHBpbmc9bmV3IE1hcH1nZXQgY3VycmVudEtlcm5lbEN1c3RvbURhdGEoKXtpZih0aGlzLmN1cnJlbnRLZXJuZWxJZD09PW51bGwpdGhyb3cgbmV3IEVycm9yKFwiY3VycmVudEtlcm5lbEN1c3RvbURhdGEoKTogY3VycmVudEtlcm5lbElkIGlzIG51bGwuIChzaG91bGQgbm90IGhhcHBlbilcIik7bGV0IHQ9dGhpcy5rZXJuZWxDdXN0b21EYXRhLmdldCh0aGlzLmN1cnJlbnRLZXJuZWxJZCk7cmV0dXJuIHR8fCh0PXt9LHRoaXMua2VybmVsQ3VzdG9tRGF0YS5zZXQodGhpcy5jdXJyZW50S2VybmVsSWQsdCkpLHR9YXN5bmMgaW5pdGlhbGl6ZSh0LHIpe3RoaXMuZW52PXQ7bGV0IG89W10saT17cmVxdWlyZWRMaW1pdHM6e21heENvbXB1dGVXb3JrZ3JvdXBTdG9yYWdlU2l6ZTpyLmxpbWl0cy5tYXhDb21wdXRlV29ya2dyb3VwU3RvcmFnZVNpemUsbWF4Q29tcHV0ZVdvcmtncm91cHNQZXJEaW1lbnNpb246ci5saW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cHNQZXJEaW1lbnNpb24sbWF4U3RvcmFnZUJ1ZmZlckJpbmRpbmdTaXplOnIubGltaXRzLm1heFN0b3JhZ2VCdWZmZXJCaW5kaW5nU2l6ZSxtYXhCdWZmZXJTaXplOnIubGltaXRzLm1heEJ1ZmZlclNpemUsbWF4Q29tcHV0ZUludm9jYXRpb25zUGVyV29ya2dyb3VwOnIubGltaXRzLm1heENvbXB1dGVJbnZvY2F0aW9uc1Blcldvcmtncm91cCxtYXhDb21wdXRlV29ya2dyb3VwU2l6ZVg6ci5saW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFNpemVYLG1heENvbXB1dGVXb3JrZ3JvdXBTaXplWTpyLmxpbWl0cy5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVksbWF4Q29tcHV0ZVdvcmtncm91cFNpemVaOnIubGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBTaXplWn0scmVxdWlyZWRGZWF0dXJlczpvfTtyLmZlYXR1cmVzLmhhcyhcImNocm9taXVtLWV4cGVyaW1lbnRhbC10aW1lc3RhbXAtcXVlcnktaW5zaWRlLXBhc3Nlc1wiKT9vLnB1c2goXCJjaHJvbWl1bS1leHBlcmltZW50YWwtdGltZXN0YW1wLXF1ZXJ5LWluc2lkZS1wYXNzZXNcIik6ci5mZWF0dXJlcy5oYXMoXCJ0aW1lc3RhbXAtcXVlcnlcIikmJm8ucHVzaChcInRpbWVzdGFtcC1xdWVyeVwiKSxyLmZlYXR1cmVzLmhhcyhcInNoYWRlci1mMTZcIikmJm8ucHVzaChcInNoYWRlci1mMTZcIiksdGhpcy5kZXZpY2U9YXdhaXQgci5yZXF1ZXN0RGV2aWNlKGkpLHRoaXMuZ3B1RGF0YU1hbmFnZXI9aWEodGhpcyksdGhpcy5wcm9ncmFtTWFuYWdlcj1uZXcgV24odGhpcyksdGhpcy5rZXJuZWxzPW5ldyBNYXAsdGhpcy5rZXJuZWxQZXJzaXN0ZW50RGF0YT1uZXcgTWFwLHRoaXMua2VybmVsQ3VzdG9tRGF0YT1uZXcgTWFwLGVhKHQubG9nTGV2ZWwsISF0LmRlYnVnKSx0aGlzLmRldmljZS5vbnVuY2FwdHVyZWRlcnJvcj11PT57dS5lcnJvciBpbnN0YW5jZW9mIEdQVVZhbGlkYXRpb25FcnJvciYmY29uc29sZS5lcnJvcihgQW4gdW5jYXVnaHQgV2ViR1BVIHZhbGlkYXRpb24gZXJyb3Igd2FzIHJhaXNlZDogJHt1LmVycm9yLm1lc3NhZ2V9YCl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLmVudi53ZWJncHUsXCJkZXZpY2VcIix7dmFsdWU6dGhpcy5kZXZpY2V9KSx0aGlzLnNldFF1ZXJ5VHlwZSgpfWRpc3Bvc2UoKXt0eXBlb2YgdGhpcy5xdWVyeVNldDxcInVcIiYmdGhpcy5xdWVyeVNldC5kZXN0cm95KCksdGhpcy5ncHVEYXRhTWFuYWdlci5kaXNwb3NlKCl9Z2V0Q29tbWFuZEVuY29kZXIoKXtyZXR1cm4gdGhpcy5jb21tYW5kRW5jb2Rlcnx8KHRoaXMuY29tbWFuZEVuY29kZXI9dGhpcy5kZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKSksdGhpcy5jb21tYW5kRW5jb2Rlcn1nZXRDb21wdXRlUGFzc0VuY29kZXIoKXtpZighdGhpcy5jb21wdXRlUGFzc0VuY29kZXIpe2xldCB0PXt9O3RoaXMucXVlcnlUeXBlPT09XCJhdC1wYXNzZXNcIiYmKHQudGltZXN0YW1wV3JpdGVzPXtxdWVyeVNldDp0aGlzLnF1ZXJ5U2V0LGJlZ2lubmluZ09mUGFzc1dyaXRlSW5kZXg6dGhpcy5wZW5kaW5nRGlzcGF0Y2hOdW1iZXIqMixlbmRPZlBhc3NXcml0ZUluZGV4OnRoaXMucGVuZGluZ0Rpc3BhdGNoTnVtYmVyKjIrMX0pLHRoaXMuY29tcHV0ZVBhc3NFbmNvZGVyPXRoaXMuZ2V0Q29tbWFuZEVuY29kZXIoKS5iZWdpbkNvbXB1dGVQYXNzKHQpfXJldHVybiB0aGlzLmNvbXB1dGVQYXNzRW5jb2Rlcn1lbmRDb21wdXRlUGFzcygpe3RoaXMuY29tcHV0ZVBhc3NFbmNvZGVyJiYodGhpcy5jb21wdXRlUGFzc0VuY29kZXIuZW5kKCksdGhpcy5jb21wdXRlUGFzc0VuY29kZXI9bnVsbCl9Zmx1c2goKXtpZighdGhpcy5jb21tYW5kRW5jb2RlcilyZXR1cm47WXQoKSx0aGlzLmVuZENvbXB1dGVQYXNzKCk7bGV0IHQ7dGhpcy5xdWVyeVR5cGUhPT1cIm5vbmVcIiYmKHRoaXMuY29tbWFuZEVuY29kZXIucmVzb2x2ZVF1ZXJ5U2V0KHRoaXMucXVlcnlTZXQsMCx0aGlzLnBlbmRpbmdEaXNwYXRjaE51bWJlcioyLHRoaXMucXVlcnlSZXNvbHZlQnVmZmVyLDApLHQ9dGhpcy5kZXZpY2UuY3JlYXRlQnVmZmVyKHtzaXplOnRoaXMucGVuZGluZ0Rpc3BhdGNoTnVtYmVyKjIqOCx1c2FnZTpHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRHxHUFVCdWZmZXJVc2FnZS5DT1BZX0RTVH0pLHRoaXMucGVuZGluZ1F1ZXJpZXMuc2V0KHQsdGhpcy5wZW5kaW5nS2VybmVscyksdGhpcy5wZW5kaW5nS2VybmVscz1bXSx0aGlzLmNvbW1hbmRFbmNvZGVyLmNvcHlCdWZmZXJUb0J1ZmZlcih0aGlzLnF1ZXJ5UmVzb2x2ZUJ1ZmZlciwwLHQsMCx0aGlzLnBlbmRpbmdEaXNwYXRjaE51bWJlcioyKjgpKSx0aGlzLmRldmljZS5xdWV1ZS5zdWJtaXQoW3RoaXMuY29tbWFuZEVuY29kZXIuZmluaXNoKCldKSx0aGlzLmdwdURhdGFNYW5hZ2VyLnJlZnJlc2hQZW5kaW5nQnVmZmVycygpLHRoaXMuY29tbWFuZEVuY29kZXI9bnVsbCx0aGlzLnBlbmRpbmdEaXNwYXRjaE51bWJlcj0wLHRoaXMucXVlcnlUeXBlIT09XCJub25lXCImJnQubWFwQXN5bmMoR1BVTWFwTW9kZS5SRUFEKS50aGVuKCgpPT57bGV0IHI9bmV3IEJpZ1VpbnQ2NEFycmF5KHQuZ2V0TWFwcGVkUmFuZ2UoKSksbz10aGlzLnBlbmRpbmdRdWVyaWVzLmdldCh0KTtmb3IobGV0IGk9MDtpPHIubGVuZ3RoLzI7aSsrKXtsZXQgdT1vW2ldLGE9dS5rZXJuZWxJZCxwPXRoaXMua2VybmVscy5nZXQoYSksbT1wLmtlcm5lbFR5cGUsaD1wLmtlcm5lbE5hbWUsZD11LnByb2dyYW1OYW1lLHk9dS5pbnB1dFRlbnNvclZpZXdzLHc9dS5vdXRwdXRUZW5zb3JWaWV3cyxfPXJbaSoyXSx2PXJbaSoyKzFdO3R5cGVvZiB0aGlzLnF1ZXJ5VGltZUJhc2U+XCJ1XCImJih0aGlzLnF1ZXJ5VGltZUJhc2U9Xyk7bGV0IHg9TnVtYmVyKF8tdGhpcy5xdWVyeVRpbWVCYXNlKSxUPU51bWJlcih2LXRoaXMucXVlcnlUaW1lQmFzZSk7aWYoIU51bWJlci5pc1NhZmVJbnRlZ2VyKHgpfHwhTnVtYmVyLmlzU2FmZUludGVnZXIoVCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJpbmNvcnJlY3QgdGltZXN0YW1wIHJhbmdlXCIpO2lmKHRoaXMuZW52LndlYmdwdS5wcm9maWxpbmc/Lm9uZGF0YSl0aGlzLmVudi53ZWJncHUucHJvZmlsaW5nLm9uZGF0YSh7dmVyc2lvbjoxLGlucHV0c01ldGFkYXRhOnkubWFwKEM9Pih7ZGltczpDLmRpbXMsZGF0YVR5cGU6c3QoQy5kYXRhVHlwZSl9KSksb3V0cHV0c01ldGFkYXRhOncubWFwKEM9Pih7ZGltczpDLmRpbXMsZGF0YVR5cGU6c3QoQy5kYXRhVHlwZSl9KSksa2VybmVsSWQ6YSxrZXJuZWxUeXBlOm0sa2VybmVsTmFtZTpoLHByb2dyYW1OYW1lOmQsc3RhcnRUaW1lOngsZW5kVGltZTpUfSk7ZWxzZXtsZXQgQz1cIlwiO3kuZm9yRWFjaCgoRSxPKT0+e0MrPWBpbnB1dFske099XTogWyR7RS5kaW1zfV0gfCAke3N0KEUuZGF0YVR5cGUpfSwgYH0pO2xldCBTPVwiXCI7dy5mb3JFYWNoKChFLE8pPT57Uys9YG91dHB1dFske099XTogWyR7RS5kaW1zfV0gfCAke3N0KEUuZGF0YVR5cGUpfSwgYH0pLGNvbnNvbGUubG9nKGBbcHJvZmlsaW5nXSBrZXJuZWwgXCIke2F9fCR7bX18JHtofXwke2R9XCIgJHtDfSR7U31leGVjdXRpb24gdGltZTogJHtULXh9IG5zYCl9bW8oXCJHUFVcIixgJHtkfTo6JHtffTo6JHt2fWApfXQudW5tYXAoKSx0aGlzLnBlbmRpbmdRdWVyaWVzLmRlbGV0ZSh0KX0pLFp0KCl9cnVuKHQscixvLGksdSl7WXQodC5uYW1lKTtsZXQgYT1bXTtmb3IobGV0IFM9MDtTPHIubGVuZ3RoOysrUyl7bGV0IEU9dGhpcy5ncHVEYXRhTWFuYWdlci5nZXQocltTXS5kYXRhKTtpZighRSl0aHJvdyBuZXcgRXJyb3IoYG5vIEdQVSBkYXRhIGZvciBpbnB1dDogJHtyW1NdLmRhdGF9YCk7YVtTXT1FfWxldHtvdXRwdXRzOnAsZGlzcGF0Y2hHcm91cDptLHByb2dyYW1Vbmlmb3JtczpofT10LmdldFJ1bkRhdGEociksZD1vLmxlbmd0aD09PTA/cC5tYXAoKFMsRSk9PkUpOm87aWYoZC5sZW5ndGghPT1wLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYE91dHB1dCBzaXplICR7ZC5sZW5ndGh9IG11c3QgYmUgZXF1YWwgdG8gJHtwLmxlbmd0aH0uYCk7bGV0IHk9W10sdz1bXTtmb3IobGV0IFM9MDtTPHAubGVuZ3RoOysrUyl7aWYoIU51bWJlci5pc0ludGVnZXIoZFtTXSl8fGRbU108LTN8fGRbU10+PXAubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBvdXRwdXQgaW5kZXg6ICR7ZFtTXX1gKTtpZihkW1NdPT09LTMpY29udGludWU7bGV0IEU9ZFtTXT09PS0xLE89ZFtTXT09PS0yLFU9RXx8Tz91KHBbU10uZGF0YVR5cGUscFtTXS5kaW1zKTppKGRbU10scFtTXS5kYXRhVHlwZSxwW1NdLmRpbXMpLE09dGhpcy5ncHVEYXRhTWFuYWdlci5nZXQoVS5kYXRhKTtpZighTSl0aHJvdyBuZXcgRXJyb3IoYG5vIEdQVSBkYXRhIGZvciBvdXRwdXQ6ICR7VS5kYXRhfWApO2lmKEUmJnRoaXMudGVtcG9yYXJ5RGF0YS5wdXNoKE0pLE8pe2xldCBOPXRoaXMua2VybmVsUGVyc2lzdGVudERhdGEuZ2V0KHRoaXMuY3VycmVudEtlcm5lbElkKTtOfHwoTj1bXSx0aGlzLmtlcm5lbFBlcnNpc3RlbnREYXRhLnNldCh0aGlzLmN1cnJlbnRLZXJuZWxJZCxOKSksTi5wdXNoKE0pfXkucHVzaChVKSx3LnB1c2goTSl9bGV0IF87aWYoaCl7bGV0IFM9MCxFPVtdO2guZm9yRWFjaChOPT57bGV0IFk9dHlwZW9mIE4uZGF0YT09XCJudW1iZXJcIj9bTi5kYXRhXTpOLmRhdGE7aWYoWS5sZW5ndGg9PT0wKXJldHVybjtsZXQgc2U9Ti50eXBlPT09XCJmbG9hdDE2XCI/Mjo0LEIsdGU7Ti50eXBlPT09XCJmbG9hdDE2XCI/KHRlPVkubGVuZ3RoPjQ/MTY6WS5sZW5ndGg+Mj84OlkubGVuZ3RoKnNlLEI9WS5sZW5ndGg+ND8xNjpzZSpZLmxlbmd0aCk6KHRlPVkubGVuZ3RoPD0yP1kubGVuZ3RoKnNlOjE2LEI9MTYpLFM9TWF0aC5jZWlsKFMvdGUpKnRlLEUucHVzaChTKTtsZXQgUGU9Ti50eXBlPT09XCJmbG9hdDE2XCI/ODo0O1MrPVkubGVuZ3RoPjQ/TWF0aC5jZWlsKFkubGVuZ3RoL1BlKSpCOlkubGVuZ3RoKnNlfSk7bGV0IE89MTY7Uz1NYXRoLmNlaWwoUy9PKSpPO2xldCBVPW5ldyBBcnJheUJ1ZmZlcihTKTtoLmZvckVhY2goKE4sWSk9PntsZXQgc2U9RVtZXSxCPXR5cGVvZiBOLmRhdGE9PVwibnVtYmVyXCI/W04uZGF0YV06Ti5kYXRhO04udHlwZT09PVwiaW50MzJcIj9uZXcgSW50MzJBcnJheShVLHNlLEIubGVuZ3RoKS5zZXQoQik6Ti50eXBlPT09XCJ1aW50MzJcIj9uZXcgVWludDMyQXJyYXkoVSxzZSxCLmxlbmd0aCkuc2V0KEIpOk4udHlwZT09PVwiZmxvYXQxNlwiP25ldyBVaW50MTZBcnJheShVLHNlLEIubGVuZ3RoKS5zZXQoQik6bmV3IEZsb2F0MzJBcnJheShVLHNlLEIubGVuZ3RoKS5zZXQoQil9KTtsZXQgTT10aGlzLmdwdURhdGFNYW5hZ2VyLmNyZWF0ZShTLEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUfEdQVUJ1ZmZlclVzYWdlLlVOSUZPUk0pO3RoaXMuZGV2aWNlLnF1ZXVlLndyaXRlQnVmZmVyKE0uYnVmZmVyLDAsVSwwLFMpLHRoaXMuZ3B1RGF0YU1hbmFnZXIucmVsZWFzZShNLmlkKSxfPXtvZmZzZXQ6MCxzaXplOlMsYnVmZmVyOk0uYnVmZmVyfX1sZXQgdj10aGlzLnByb2dyYW1NYW5hZ2VyLm5vcm1hbGl6ZURpc3BhdGNoR3JvdXBTaXplKG0pLHg9dlsxXT09PTEmJnZbMl09PT0xLFQ9QXAodCxyLHgpLEM9dGhpcy5wcm9ncmFtTWFuYWdlci5nZXRBcnRpZmFjdChUKTtpZihDfHwoQz10aGlzLnByb2dyYW1NYW5hZ2VyLmJ1aWxkKHQsdiksdGhpcy5wcm9ncmFtTWFuYWdlci5zZXRBcnRpZmFjdChULEMpLERlKFwiaW5mb1wiLCgpPT5gW2FydGlmYWN0XSBrZXk6ICR7VH0sIHByb2dyYW1OYW1lOiAke3QubmFtZX1gKSksRGUoXCJpbmZvXCIsKCk9PmBbUHJvZ3JhbU1hbmFnZXJdIHJ1biBcIiR7dC5uYW1lfVwiIChrZXk9JHtUfSkgd2l0aCAke3ZbMF19eCR7dlsxXX14JHt2WzJdfWApLHRoaXMucXVlcnlUeXBlIT09XCJub25lXCIpe2xldCBTPXtrZXJuZWxJZDp0aGlzLmN1cnJlbnRLZXJuZWxJZCxwcm9ncmFtTmFtZTpDLnByb2dyYW1JbmZvLm5hbWUsaW5wdXRUZW5zb3JWaWV3czpyLG91dHB1dFRlbnNvclZpZXdzOnl9O3RoaXMucGVuZGluZ0tlcm5lbHMucHVzaChTKX1yZXR1cm4gdGhpcy5wcm9ncmFtTWFuYWdlci5ydW4oQyxhLHcsdixfKSxadCh0Lm5hbWUpLHl9dXBsb2FkKHQscil7dGhpcy5ncHVEYXRhTWFuYWdlci51cGxvYWQodCxyKX1tZW1jcHkodCxyKXt0aGlzLmdwdURhdGFNYW5hZ2VyLm1lbWNweSh0LHIpfWFzeW5jIGRvd25sb2FkKHQscil7YXdhaXQgdGhpcy5ncHVEYXRhTWFuYWdlci5kb3dubG9hZCh0LHIpfWFsbG9jKHQpe3JldHVybiB0aGlzLmdwdURhdGFNYW5hZ2VyLmNyZWF0ZSh0KS5pZH1mcmVlKHQpe3JldHVybiB0aGlzLmdwdURhdGFNYW5hZ2VyLnJlbGVhc2UodCl9Y3JlYXRlS2VybmVsKHQscixvLGkpe2xldCB1PXBsLmdldCh0KTtpZighdSl0aHJvdyBuZXcgRXJyb3IoYGtlcm5lbCBub3QgaW1wbGVtZW50ZWQ6ICR7dH1gKTtsZXQgYT17a2VybmVsVHlwZTp0LGtlcm5lbE5hbWU6aSxrZXJuZWxFbnRyeTp1WzBdLGF0dHJpYnV0ZXM6W3VbMV0sb119O3RoaXMua2VybmVscy5zZXQocixhKX1yZWxlYXNlS2VybmVsKHQpe2xldCByPXRoaXMua2VybmVsUGVyc2lzdGVudERhdGEuZ2V0KHQpO2lmKHIpe2ZvcihsZXQgbyBvZiByKXRoaXMuZ3B1RGF0YU1hbmFnZXIucmVsZWFzZShvLmlkKTt0aGlzLmtlcm5lbFBlcnNpc3RlbnREYXRhLmRlbGV0ZSh0KX10aGlzLmtlcm5lbEN1c3RvbURhdGEuZGVsZXRlKHQpLHRoaXMua2VybmVscy5kZWxldGUodCl9Y29tcHV0ZUtlcm5lbCh0LHIsbyl7bGV0IGk9dGhpcy5rZXJuZWxzLmdldCh0KTtpZighaSl0aHJvdyBuZXcgRXJyb3IoYGtlcm5lbCBub3QgY3JlYXRlZDogJHt0fWApO2xldCB1PWkua2VybmVsVHlwZSxhPWkua2VybmVsTmFtZSxwPWkua2VybmVsRW50cnksbT1pLmF0dHJpYnV0ZXM7aWYodGhpcy5jdXJyZW50S2VybmVsSWQhPT1udWxsKXRocm93IG5ldyBFcnJvcihga2VybmVsIFwiWyR7dX1dICR7YX1cIiBpcyBub3QgYWxsb3dlZCB0byBiZSBjYWxsZWQgcmVjdXJzaXZlbHlgKTt0aGlzLmN1cnJlbnRLZXJuZWxJZD10LG1bMF0mJihtWzFdPW1bMF0obVsxXSksbVswXT12b2lkIDApLERlKFwiaW5mb1wiLCgpPT5gW1dlYkdQVV0gU3RhcnQgdG8gcnVuIGtlcm5lbCBcIlske3V9XSAke2F9XCIuLi5gKTtsZXQgaD10aGlzLmVudi5kZWJ1Zzt0aGlzLnRlbXBvcmFyeURhdGE9W107dHJ5e3JldHVybiBoJiZ0aGlzLmRldmljZS5wdXNoRXJyb3JTY29wZShcInZhbGlkYXRpb25cIikscChyLG1bMV0pLDB9Y2F0Y2goZCl7cmV0dXJuIG8ucHVzaChQcm9taXNlLnJlc29sdmUoYFtXZWJHUFVdIEtlcm5lbCBcIlske3V9XSAke2F9XCIgZmFpbGVkLiAke2R9YCkpLDF9ZmluYWxseXtoJiZvLnB1c2godGhpcy5kZXZpY2UucG9wRXJyb3JTY29wZSgpLnRoZW4oZD0+ZD9gR1BVIHZhbGlkYXRpb24gZXJyb3IgZm9yIGtlcm5lbCBcIlske3V9XSAke2F9XCI6ICR7ZC5tZXNzYWdlfWA6bnVsbCkpO2ZvcihsZXQgZCBvZiB0aGlzLnRlbXBvcmFyeURhdGEpdGhpcy5ncHVEYXRhTWFuYWdlci5yZWxlYXNlKGQuaWQpO3RoaXMudGVtcG9yYXJ5RGF0YT1bXSx0aGlzLmN1cnJlbnRLZXJuZWxJZD1udWxsfX1yZWdpc3RlckJ1ZmZlcih0LHIsbyxpKXtsZXQgdT10aGlzLnNlc3Npb25FeHRlcm5hbERhdGFNYXBwaW5nLmdldCh0KTt1fHwodT1uZXcgTWFwLHRoaXMuc2Vzc2lvbkV4dGVybmFsRGF0YU1hcHBpbmcuc2V0KHQsdSkpO2xldCBhPXUuZ2V0KHIpLHA9dGhpcy5ncHVEYXRhTWFuYWdlci5yZWdpc3RlckV4dGVybmFsQnVmZmVyKG8saSxhPy5bMV0pO3JldHVybiB1LnNldChyLFtwLG9dKSxwfXVucmVnaXN0ZXJCdWZmZXJzKHQpe2xldCByPXRoaXMuc2Vzc2lvbkV4dGVybmFsRGF0YU1hcHBpbmcuZ2V0KHQpO3ImJihyLmZvckVhY2gobz0+dGhpcy5ncHVEYXRhTWFuYWdlci51bnJlZ2lzdGVyRXh0ZXJuYWxCdWZmZXIob1sxXSkpLHRoaXMuc2Vzc2lvbkV4dGVybmFsRGF0YU1hcHBpbmcuZGVsZXRlKHQpKX1nZXRCdWZmZXIodCl7bGV0IHI9dGhpcy5ncHVEYXRhTWFuYWdlci5nZXQodCk7aWYoIXIpdGhyb3cgbmV3IEVycm9yKGBubyBHUFUgZGF0YSBmb3IgYnVmZmVyOiAke3R9YCk7cmV0dXJuIHIuYnVmZmVyfWNyZWF0ZURvd25sb2FkZXIodCxyLG8pe3JldHVybiBhc3luYygpPT57bGV0IGk9YXdhaXQgZ28odGhpcyx0LHIpO3JldHVybiB0YShpLmJ1ZmZlcixvKX19d3JpdGVUaW1lc3RhbXAodCl7dGhpcy5xdWVyeVR5cGU9PT1cImluc2lkZS1wYXNzZXNcIiYmdGhpcy5jb21wdXRlUGFzc0VuY29kZXIud3JpdGVUaW1lc3RhbXAodGhpcy5xdWVyeVNldCx0KX1zZXRRdWVyeVR5cGUoKXt0aGlzLnF1ZXJ5VHlwZT1cIm5vbmVcIiwodGhpcy5lbnYud2ViZ3B1LnByb2ZpbGluZz8ubW9kZT09PVwiZGVmYXVsdFwifHx0aGlzLmVudi53YXNtLnRyYWNlKSYmKHRoaXMuZGV2aWNlLmZlYXR1cmVzLmhhcyhcImNocm9taXVtLWV4cGVyaW1lbnRhbC10aW1lc3RhbXAtcXVlcnktaW5zaWRlLXBhc3Nlc1wiKT90aGlzLnF1ZXJ5VHlwZT1cImluc2lkZS1wYXNzZXNcIjp0aGlzLmRldmljZS5mZWF0dXJlcy5oYXMoXCJ0aW1lc3RhbXAtcXVlcnlcIikmJih0aGlzLnF1ZXJ5VHlwZT1cImF0LXBhc3Nlc1wiKSx0aGlzLnF1ZXJ5VHlwZSE9PVwibm9uZVwiJiZ0eXBlb2YgdGhpcy5xdWVyeVNldD5cInVcIiYmKHRoaXMucXVlcnlTZXQ9dGhpcy5kZXZpY2UuY3JlYXRlUXVlcnlTZXQoe3R5cGU6XCJ0aW1lc3RhbXBcIixjb3VudDp0aGlzLm1heERpc3BhdGNoTnVtYmVyKjJ9KSx0aGlzLnF1ZXJ5UmVzb2x2ZUJ1ZmZlcj10aGlzLmRldmljZS5jcmVhdGVCdWZmZXIoe3NpemU6dGhpcy5tYXhEaXNwYXRjaE51bWJlcioyKjgsdXNhZ2U6R1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkN8R1BVQnVmZmVyVXNhZ2UuUVVFUllfUkVTT0xWRX0pKSl9b25SdW5TdGFydCgpe3RoaXMuc2V0UXVlcnlUeXBlKCl9fX0pO3ZhciBnbD17fTtobihnbCx7aW5pdDooKT0+SXB9KTt2YXIgTnIsVm8sSXAseWw9USgoKT0+e1widXNlIHN0cmljdFwiO1ZlKCk7aGwoKTt6dCgpO0NlKCk7TnI9Y2xhc3MgZXtjb25zdHJ1Y3Rvcih0LHIsbyxpKXt0aGlzLm1vZHVsZT10O3RoaXMuZGF0YVR5cGU9cjt0aGlzLmRhdGE9bzt0aGlzLmRpbXM9aX1nZXRGbG9hdDMyQXJyYXkoKXtpZih0aGlzLmRhdGFUeXBlIT09MSl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGRhdGEgdHlwZVwiKTtsZXQgdD1XLnNpemUodGhpcy5kaW1zKTtyZXR1cm4gdD09PTA/bmV3IEZsb2F0MzJBcnJheTpuZXcgRmxvYXQzMkFycmF5KHRoaXMubW9kdWxlLkhFQVA4LmJ1ZmZlcix0aGlzLmRhdGEsdCl9Z2V0QmlnSW50NjRBcnJheSgpe2lmKHRoaXMuZGF0YVR5cGUhPT03KXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZGF0YSB0eXBlXCIpO2xldCB0PVcuc2l6ZSh0aGlzLmRpbXMpO3JldHVybiB0PT09MD9uZXcgQmlnSW50NjRBcnJheTpuZXcgQmlnSW50NjRBcnJheSh0aGlzLm1vZHVsZS5IRUFQOC5idWZmZXIsdGhpcy5kYXRhLHQpfWdldEludDMyQXJyYXkoKXtpZih0aGlzLmRhdGFUeXBlIT09Nil0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGRhdGEgdHlwZVwiKTtsZXQgdD1XLnNpemUodGhpcy5kaW1zKTtyZXR1cm4gdD09PTA/bmV3IEludDMyQXJyYXk6bmV3IEludDMyQXJyYXkodGhpcy5tb2R1bGUuSEVBUDguYnVmZmVyLHRoaXMuZGF0YSx0KX1yZXNoYXBlKHQpe2lmKFcuc2l6ZSh0KSE9PVcuc2l6ZSh0aGlzLmRpbXMpKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgbmV3IHNoYXBlXCIpO3JldHVybiBuZXcgZSh0aGlzLm1vZHVsZSx0aGlzLmRhdGFUeXBlLHRoaXMuZGF0YSx0KX19LFZvPWNsYXNze2NvbnN0cnVjdG9yKHQscixvKXt0aGlzLm1vZHVsZT10O3RoaXMuYmFja2VuZD1yO3RoaXMuY3VzdG9tRGF0YU9mZnNldD0wO3RoaXMuY3VzdG9tRGF0YVNpemU9MDtsZXQgaT10LkhFQVBVMzIsdT1vPj4+Mjt0aGlzLm9wS2VybmVsQ29udGV4dD1pW3UrK107bGV0IGE9aVt1KytdO3RoaXMub3V0cHV0Q291bnQ9aVt1KytdLHRoaXMuY3VzdG9tRGF0YU9mZnNldD1pW3UrK10sdGhpcy5jdXN0b21EYXRhU2l6ZT1pW3UrK107bGV0IHA9W107Zm9yKGxldCBtPTA7bTxhO20rKyl7bGV0IGg9aVt1KytdLGQ9aVt1KytdLHk9aVt1KytdLHc9W107Zm9yKGxldCBfPTA7Xzx5O18rKyl3LnB1c2goaVt1KytdKTtwLnB1c2gobmV3IE5yKHQsaCxkLHcpKX10aGlzLmlucHV0cz1wfWdldCBrZXJuZWxDdXN0b21EYXRhKCl7cmV0dXJuIHRoaXMuYmFja2VuZC5jdXJyZW50S2VybmVsQ3VzdG9tRGF0YX1nZXQgY3VzdG9tRGF0YUJ1ZmZlcigpe3JldHVybiB0aGlzLm1vZHVsZS5IRUFQVTguc3ViYXJyYXkodGhpcy5jdXN0b21EYXRhT2Zmc2V0LHRoaXMuY3VzdG9tRGF0YU9mZnNldCt0aGlzLmN1c3RvbURhdGFTaXplKX1jb21wdXRlKHQscil7bGV0IG89cj8uaW5wdXRzPy5tYXAocD0+dHlwZW9mIHA9PVwibnVtYmVyXCI/dGhpcy5pbnB1dHNbcF06cCk/P3RoaXMuaW5wdXRzLGk9cj8ub3V0cHV0cz8/W10sdT0ocCxtLGgpPT5uZXcgTnIodGhpcy5tb2R1bGUsbSx0aGlzLm91dHB1dChwLGgpLGgpLGE9KHAsbSk9PntsZXQgaD1NcihwKTtpZighaCl0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGRhdGEgdHlwZTogJHtwfWApO2xldCBkPWgqVy5zaXplKG0pO3JldHVybiBuZXcgTnIodGhpcy5tb2R1bGUscCx0aGlzLmJhY2tlbmQuZ3B1RGF0YU1hbmFnZXIuY3JlYXRlKGQpLmlkLG0pfTtyZXR1cm4gdGhpcy5iYWNrZW5kLnJ1bih0LG8saSx1LGEpfW91dHB1dCh0LHIpe2xldCBvPXRoaXMubW9kdWxlLnN0YWNrU2F2ZSgpO3RyeXtsZXQgaT10aGlzLm1vZHVsZS5zdGFja0FsbG9jKCgxK3IubGVuZ3RoKSo0KSx1PWk+PjI7dGhpcy5tb2R1bGUuSEVBUFUzMlt1KytdPXIubGVuZ3RoO2ZvcihsZXQgYT0wO2E8ci5sZW5ndGg7YSsrKXRoaXMubW9kdWxlLkhFQVBVMzJbdSsrXT1yW2FdO3JldHVybiB0aGlzLm1vZHVsZS5fSnNlcE91dHB1dCh0aGlzLm9wS2VybmVsQ29udGV4dCx0LGkpfWNhdGNoKGkpe3Rocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGdlbmVyYXRlIGtlcm5lbFxcJ3Mgb3V0cHV0WyR7dH1dIHdpdGggZGltcyBbJHtyfV0uIElmIHlvdSBhcmUgcnVubmluZyB3aXRoIHByZS1hbGxvY2F0ZWQgb3V0cHV0LCBwbGVhc2UgbWFrZSBzdXJlIHRoZSBvdXRwdXQgdHlwZS9kaW1zIGFyZSBjb3JyZWN0LiBFcnJvcjogJHtpfWApfWZpbmFsbHl7dGhpcy5tb2R1bGUuc3RhY2tSZXN0b3JlKG8pfX19LElwPWFzeW5jKGUsdCxyKT0+e2xldCBvPWUuanNlcEluaXQ7aWYoIW8pdGhyb3cgbmV3IEVycm9yKFwiRmFpbGVkIHRvIGluaXRpYWxpemUgSlNFUC4gVGhlIFdlYkFzc2VtYmx5IG1vZHVsZSBpcyBub3QgYnVpbHQgd2l0aCBKU0VQIHN1cHBvcnQuXCIpO2xldCBpPW5ldyBObjthd2FpdCBpLmluaXRpYWxpemUodCxyKSxvKGksdT0+aS5hbGxvYyh1KSx1PT5pLmZyZWUodSksKHUsYSxwLG09ITEpPT57aWYobSlEZShcInZlcmJvc2VcIiwoKT0+YFtXZWJHUFVdIGpzZXBDb3B5R3B1VG9HcHU6IHNyYz0ke3V9LCBkc3Q9JHthfSwgc2l6ZT0ke3B9YCksaS5tZW1jcHkodSxhKTtlbHNle0RlKFwidmVyYm9zZVwiLCgpPT5gW1dlYkdQVV0ganNlcENvcHlDcHVUb0dwdTogZGF0YU9mZnNldD0ke3V9LCBncHVEYXRhSWQ9JHthfSwgc2l6ZT0ke3B9YCk7bGV0IGg9ZS5IRUFQVTguc3ViYXJyYXkodT4+PjAsKHU+Pj4wKStwKTtpLnVwbG9hZChhLGgpfX0sYXN5bmModSxhLHApPT57RGUoXCJ2ZXJib3NlXCIsKCk9PmBbV2ViR1BVXSBqc2VwQ29weUdwdVRvQ3B1OiBncHVEYXRhSWQ9JHt1fSwgZGF0YU9mZnNldD0ke2F9LCBzaXplPSR7cH1gKSxhd2FpdCBpLmRvd25sb2FkKHUsKCk9PmUuSEVBUFU4LnN1YmFycmF5KGE+Pj4wLChhPj4+MCkrcCkpfSwodSxhLHApPT5pLmNyZWF0ZUtlcm5lbCh1LGEscCxlLlVURjhUb1N0cmluZyhlLl9Kc2VwR2V0Tm9kZU5hbWUoYSkpKSx1PT5pLnJlbGVhc2VLZXJuZWwodSksKHUsYSxwLG0pPT57RGUoXCJ2ZXJib3NlXCIsKCk9PmBbV2ViR1BVXSBqc2VwUnVuOiBzZXNzaW9uSGFuZGxlPSR7cH0sIGtlcm5lbD0ke3V9LCBjb250ZXh0RGF0YU9mZnNldD0ke2F9YCk7bGV0IGg9bmV3IFZvKGUsaSxhKTtyZXR1cm4gaS5jb21wdXRlS2VybmVsKHUsaCxtKX0pfX0pO3ZhciBQaTtQaT12aSgpO3ZhciBObD1JaSgpLHNvLHVvPSExLGduPSExLEVpPSExLEhsPWU9PntpZihlPT09MSlyZXR1cm4hMTtpZih0eXBlb2YgU2hhcmVkQXJyYXlCdWZmZXI+XCJ1XCIpcmV0dXJuIHR5cGVvZiBzZWxmPFwidVwiJiYhc2VsZi5jcm9zc09yaWdpbklzb2xhdGVkJiZjb25zb2xlLndhcm4oXCJlbnYud2FzbS5udW1UaHJlYWRzIGlzIHNldCB0byBcIitlK1wiLCBidXQgdGhpcyB3aWxsIG5vdCB3b3JrIHVubGVzcyB5b3UgZW5hYmxlIGNyb3NzT3JpZ2luSXNvbGF0ZWQgbW9kZS4gU2VlIGh0dHBzOi8vd2ViLmRldi9jcm9zcy1vcmlnaW4taXNvbGF0aW9uLWd1aWRlLyBmb3IgbW9yZSBpbmZvLlwiKSwhMTt0eXBlb2YgcHJvY2VzczxcInVcIiYmcHJvY2Vzcy52ZXJzaW9ucyYmcHJvY2Vzcy52ZXJzaW9ucy5ub2RlJiZjb25zb2xlLndhcm4oXCJlbnYud2FzbS5udW1UaHJlYWRzIGlzIHNldCB0byBcIitlK1wiLCBob3dldmVyLCBjdXJyZW50bHkgb25ueHJ1bnRpbWUtd2ViIGRvZXMgbm90IHN1cHBvcnQgbXVsdGktdGhyZWFkcyBpbiBOb2RlLmpzLiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgb25ueHJ1bnRpbWUtbm9kZSBmb3IgcGVyZm9ybWFuY2UgY3JpdGljYWwgc2NlbmFyaW9zLlwiKTt0cnl7cmV0dXJuIHR5cGVvZiBNZXNzYWdlQ2hhbm5lbDxcInVcIiYmbmV3IE1lc3NhZ2VDaGFubmVsKCkucG9ydDEucG9zdE1lc3NhZ2UobmV3IFNoYXJlZEFycmF5QnVmZmVyKDEpKSxXZWJBc3NlbWJseS52YWxpZGF0ZShuZXcgVWludDhBcnJheShbMCw5NywxMTUsMTA5LDEsMCwwLDAsMSw0LDEsOTYsMCwwLDMsMiwxLDAsNSw0LDEsMywxLDEsMTAsMTEsMSw5LDAsNjUsMCwyNTQsMTYsMiwwLDI2LDExXSkpfWNhdGNoe3JldHVybiExfX0sR2w9KCk9Pnt0cnl7cmV0dXJuIFdlYkFzc2VtYmx5LnZhbGlkYXRlKG5ldyBVaW50OEFycmF5KFswLDk3LDExNSwxMDksMSwwLDAsMCwxLDQsMSw5NiwwLDAsMywyLDEsMCwxMCwzMCwxLDI4LDAsNjUsMCwyNTMsMTUsMjUzLDEyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMjUzLDE4NiwxLDI2LDExXSkpfWNhdGNoe3JldHVybiExfX0sTGw9KGUsdCk9PmU/dD9cIm9ydC13YXNtLXNpbWQtdGhyZWFkZWQud2FzbVwiOlwib3J0LXdhc20tc2ltZC53YXNtXCI6dD9cIm9ydC13YXNtLXRocmVhZGVkLndhc21cIjpcIm9ydC13YXNtLndhc21cIixPaT1hc3luYyBlPT57aWYodW8pcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO2lmKGduKXRocm93IG5ldyBFcnJvcihcIm11bHRpcGxlIGNhbGxzIHRvIFxcJ2luaXRpYWxpemVXZWJBc3NlbWJseSgpXFwnIGRldGVjdGVkLlwiKTtpZihFaSl0aHJvdyBuZXcgRXJyb3IoXCJwcmV2aW91cyBjYWxsIHRvIFxcJ2luaXRpYWxpemVXZWJBc3NlbWJseSgpXFwnIGZhaWxlZC5cIik7Z249ITA7bGV0IHQ9ZS5pbml0VGltZW91dCxyPWUubnVtVGhyZWFkcyxvPWUuc2ltZCxpPUhsKHIpLHU9byYmR2woKSxhPWUud2FzbVBhdGhzLHA9dHlwZW9mIGE9PVwic3RyaW5nXCI/YTp2b2lkIDAsbT1MbCh1LGkpLGg9dHlwZW9mIGE9PVwib2JqZWN0XCI/YVttXTp2b2lkIDAsZD0hMSx5PVtdO2lmKHQ+MCYmeS5wdXNoKG5ldyBQcm9taXNlKHc9PntzZXRUaW1lb3V0KCgpPT57ZD0hMCx3KCl9LHQpfSkpLHkucHVzaChuZXcgUHJvbWlzZSgodyxfKT0+e2xldCB2PWk/Tmw6UGkseD17bG9jYXRlRmlsZTooVCxDKT0+e2lmKGkmJlQuZW5kc1dpdGgoXCIud29ya2VyLmpzXCIpJiZ0eXBlb2YgQmxvYjxcInVcIilyZXR1cm4gVVJMLmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihbVGkoKV0se3R5cGU6XCJ0ZXh0L2phdmFzY3JpcHRcIn0pKTtpZihULmVuZHNXaXRoKFwiLndhc21cIikpe2lmKGgpcmV0dXJuIGg7bGV0IFM9cD8/QztyZXR1cm4gbT09PVwib3J0LXdhc20tc2ltZC53YXNtXCI/UytcIm9ydC13YXNtLXNpbWQuanNlcC53YXNtXCI6bT09PVwib3J0LXdhc20tc2ltZC10aHJlYWRlZC53YXNtXCI/UytcIm9ydC13YXNtLXNpbWQtdGhyZWFkZWQuanNlcC53YXNtXCI6UyttfXJldHVybiBDK1R9fTtpZihpKWlmKHgubnVtVGhyZWFkcz1yLHR5cGVvZiBCbG9iPlwidVwiKXgubWFpblNjcmlwdFVybE9yQmxvYj0odm9pZCAwKShfX2Rpcm5hbWUsXCJvcnQtd2FzbS10aHJlYWRlZC5qc1wiKTtlbHNle2xldCBUPWB2YXIgb3J0V2FzbVRocmVhZGVkPSR7di50b1N0cmluZygpfTtgO3gubWFpblNjcmlwdFVybE9yQmxvYj1uZXcgQmxvYihbVF0se3R5cGU6XCJ0ZXh0L2phdmFzY3JpcHRcIn0pfXYoeCkudGhlbihUPT57Z249ITEsdW89ITAsc289VCx3KCl9LFQ9Pntnbj0hMSxFaT0hMCxfKFQpfSl9KSksYXdhaXQgUHJvbWlzZS5yYWNlKHkpLGQpdGhyb3cgbmV3IEVycm9yKGBXZWJBc3NlbWJseSBiYWNrZW5kIGluaXRpYWxpemluZyBmYWlsZWQgZHVlIHRvIHRpbWVvdXQ6ICR7dH1tc2ApfSxVZT0oKT0+e2lmKHVvJiZzbylyZXR1cm4gc287dGhyb3cgbmV3IEVycm9yKFwiV2ViQXNzZW1ibHkgaXMgbm90IGluaXRpYWxpemVkIHlldC5cIil9O3ZhciBXZT0oZSx0KT0+e2xldCByPVVlKCksbz1yLmxlbmd0aEJ5dGVzVVRGOChlKSsxLGk9ci5fbWFsbG9jKG8pO3JldHVybiByLnN0cmluZ1RvVVRGOChlLGksbyksdC5wdXNoKGkpLGl9LERyPShlLHQscixvKT0+e2lmKHR5cGVvZiBlPT1cIm9iamVjdFwiJiZlIT09bnVsbCl7aWYoci5oYXMoZSkpdGhyb3cgbmV3IEVycm9yKFwiQ2lyY3VsYXIgcmVmZXJlbmNlIGluIG9wdGlvbnNcIik7ci5hZGQoZSl9T2JqZWN0LmVudHJpZXMoZSkuZm9yRWFjaCgoW2ksdV0pPT57bGV0IGE9dD90K2k6aTtpZih0eXBlb2YgdT09XCJvYmplY3RcIilEcih1LGErXCIuXCIscixvKTtlbHNlIGlmKHR5cGVvZiB1PT1cInN0cmluZ1wifHx0eXBlb2YgdT09XCJudW1iZXJcIilvKGEsdS50b1N0cmluZygpKTtlbHNlIGlmKHR5cGVvZiB1PT1cImJvb2xlYW5cIilvKGEsdT9cIjFcIjpcIjBcIik7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoYENhblxcJ3QgaGFuZGxlIGV4dHJhIGNvbmZpZyB0eXBlOiAke3R5cGVvZiB1fWApfSl9LEJlPWU9PntsZXQgdD1VZSgpLHI9dC5zdGFja1NhdmUoKTt0cnl7bGV0IG89dC5zdGFja0FsbG9jKDgpO3QuX09ydEdldExhc3RFcnJvcihvLG8rNCk7bGV0IGk9dC5IRUFQMzJbby80XSx1PXQuSEVBUFUzMltvLzQrMV0sYT11P3QuVVRGOFRvU3RyaW5nKHUpOlwiXCI7dGhyb3cgbmV3IEVycm9yKGAke2V9IEVSUk9SX0NPREU6ICR7aX0sIEVSUk9SX01FU1NBR0U6ICR7YX1gKX1maW5hbGx5e3Quc3RhY2tSZXN0b3JlKHIpfX07dmFyIGtpPWU9PntsZXQgdD1VZSgpLHI9MCxvPVtdLGk9ZXx8e307dHJ5e2lmKGU/LmxvZ1NldmVyaXR5TGV2ZWw9PT12b2lkIDApaS5sb2dTZXZlcml0eUxldmVsPTI7ZWxzZSBpZih0eXBlb2YgZS5sb2dTZXZlcml0eUxldmVsIT1cIm51bWJlclwifHwhTnVtYmVyLmlzSW50ZWdlcihlLmxvZ1NldmVyaXR5TGV2ZWwpfHxlLmxvZ1NldmVyaXR5TGV2ZWw8MHx8ZS5sb2dTZXZlcml0eUxldmVsPjQpdGhyb3cgbmV3IEVycm9yKGBsb2cgc2VydmVyaXR5IGxldmVsIGlzIG5vdCB2YWxpZDogJHtlLmxvZ1NldmVyaXR5TGV2ZWx9YCk7aWYoZT8ubG9nVmVyYm9zaXR5TGV2ZWw9PT12b2lkIDApaS5sb2dWZXJib3NpdHlMZXZlbD0wO2Vsc2UgaWYodHlwZW9mIGUubG9nVmVyYm9zaXR5TGV2ZWwhPVwibnVtYmVyXCJ8fCFOdW1iZXIuaXNJbnRlZ2VyKGUubG9nVmVyYm9zaXR5TGV2ZWwpKXRocm93IG5ldyBFcnJvcihgbG9nIHZlcmJvc2l0eSBsZXZlbCBpcyBub3QgdmFsaWQ6ICR7ZS5sb2dWZXJib3NpdHlMZXZlbH1gKTtlPy50ZXJtaW5hdGU9PT12b2lkIDAmJihpLnRlcm1pbmF0ZT0hMSk7bGV0IHU9MDtyZXR1cm4gZT8udGFnIT09dm9pZCAwJiYodT1XZShlLnRhZyxvKSkscj10Ll9PcnRDcmVhdGVSdW5PcHRpb25zKGkubG9nU2V2ZXJpdHlMZXZlbCxpLmxvZ1ZlcmJvc2l0eUxldmVsLCEhaS50ZXJtaW5hdGUsdSkscj09PTAmJkJlKFwiQ2FuXFwndCBjcmVhdGUgcnVuIG9wdGlvbnMuXCIpLGU/LmV4dHJhIT09dm9pZCAwJiZEcihlLmV4dHJhLFwiXCIsbmV3IFdlYWtTZXQsKGEscCk9PntsZXQgbT1XZShhLG8pLGg9V2UocCxvKTt0Ll9PcnRBZGRSdW5Db25maWdFbnRyeShyLG0saCkhPT0wJiZCZShgQ2FuXFwndCBzZXQgYSBydW4gY29uZmlnIGVudHJ5OiAke2F9IC0gJHtwfS5gKX0pLFtyLG9dfWNhdGNoKHUpe3Rocm93IHIhPT0wJiZ0Ll9PcnRSZWxlYXNlUnVuT3B0aW9ucyhyKSxvLmZvckVhY2goYT0+dC5fZnJlZShhKSksdX19O3ZhciBGbD1lPT57c3dpdGNoKGUpe2Nhc2VcImRpc2FibGVkXCI6cmV0dXJuIDA7Y2FzZVwiYmFzaWNcIjpyZXR1cm4gMTtjYXNlXCJleHRlbmRlZFwiOnJldHVybiAyO2Nhc2VcImFsbFwiOnJldHVybiA5OTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgdW5zdXBwb3J0ZWQgZ3JhcGggb3B0aW1pemF0aW9uIGxldmVsOiAke2V9YCl9fSxqbD1lPT57c3dpdGNoKGUpe2Nhc2VcInNlcXVlbnRpYWxcIjpyZXR1cm4gMDtjYXNlXCJwYXJhbGxlbFwiOnJldHVybiAxO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGB1bnN1cHBvcnRlZCBleGVjdXRpb24gbW9kZTogJHtlfWApfX0scWw9ZT0+e2UuZXh0cmF8fChlLmV4dHJhPXt9KSxlLmV4dHJhLnNlc3Npb258fChlLmV4dHJhLnNlc3Npb249e30pO2xldCB0PWUuZXh0cmEuc2Vzc2lvbjt0LnVzZV9vcnRfbW9kZWxfYnl0ZXNfZGlyZWN0bHl8fCh0LnVzZV9vcnRfbW9kZWxfYnl0ZXNfZGlyZWN0bHk9XCIxXCIpLGUuZXhlY3V0aW9uUHJvdmlkZXJzJiZlLmV4ZWN1dGlvblByb3ZpZGVycy5zb21lKHI9Pih0eXBlb2Ygcj09XCJzdHJpbmdcIj9yOnIubmFtZSk9PT1cIndlYmdwdVwiKSYmKGUuZW5hYmxlTWVtUGF0dGVybj0hMSl9LEtsPShlLHQscik9Pntmb3IobGV0IG8gb2YgdCl7bGV0IGk9dHlwZW9mIG89PVwic3RyaW5nXCI/bzpvLm5hbWU7c3dpdGNoKGkpe2Nhc2VcIndlYm5uXCI6aWYoaT1cIldFQk5OXCIsdHlwZW9mIG8hPVwic3RyaW5nXCIpe2xldCBhPW87aWYoYT8uZGV2aWNlVHlwZSl7bGV0IHA9V2UoXCJkZXZpY2VUeXBlXCIsciksbT1XZShhLmRldmljZVR5cGUscik7VWUoKS5fT3J0QWRkU2Vzc2lvbkNvbmZpZ0VudHJ5KGUscCxtKSE9PTAmJkJlKGBDYW5cXCd0IHNldCBhIHNlc3Npb24gY29uZmlnIGVudHJ5OiBcXCdkZXZpY2VUeXBlXFwnIC0gJHthLmRldmljZVR5cGV9LmApfWlmKGE/Lm51bVRocmVhZHMpe2xldCBwPWEubnVtVGhyZWFkczsodHlwZW9mIHAhPVwibnVtYmVyXCJ8fCFOdW1iZXIuaXNJbnRlZ2VyKHApfHxwPDApJiYocD0wKTtsZXQgbT1XZShcIm51bVRocmVhZHNcIixyKSxoPVdlKHAudG9TdHJpbmcoKSxyKTtVZSgpLl9PcnRBZGRTZXNzaW9uQ29uZmlnRW50cnkoZSxtLGgpIT09MCYmQmUoYENhblxcJ3Qgc2V0IGEgc2Vzc2lvbiBjb25maWcgZW50cnk6IFxcJ251bVRocmVhZHNcXCcgLSAke2EubnVtVGhyZWFkc30uYCl9aWYoYT8ucG93ZXJQcmVmZXJlbmNlKXtsZXQgcD1XZShcInBvd2VyUHJlZmVyZW5jZVwiLHIpLG09V2UoYS5wb3dlclByZWZlcmVuY2Uscik7VWUoKS5fT3J0QWRkU2Vzc2lvbkNvbmZpZ0VudHJ5KGUscCxtKSE9PTAmJkJlKGBDYW5cXCd0IHNldCBhIHNlc3Npb24gY29uZmlnIGVudHJ5OiBcXCdwb3dlclByZWZlcmVuY2VcXCcgLSAke2EucG93ZXJQcmVmZXJlbmNlfS5gKX19YnJlYWs7Y2FzZVwid2ViZ3B1XCI6aWYoaT1cIkpTXCIsdHlwZW9mIG8hPVwic3RyaW5nXCIpe2xldCBhPW87aWYoYT8ucHJlZmVycmVkTGF5b3V0KXtpZihhLnByZWZlcnJlZExheW91dCE9PVwiTkNIV1wiJiZhLnByZWZlcnJlZExheW91dCE9PVwiTkhXQ1wiKXRocm93IG5ldyBFcnJvcihgcHJlZmVycmVkTGF5b3V0IG11c3QgYmUgZWl0aGVyIFxcJ05DSFdcXCcgb3IgXFwnTkhXQ1xcJzogJHthLnByZWZlcnJlZExheW91dH1gKTtsZXQgcD1XZShcInByZWZlcnJlZExheW91dFwiLHIpLG09V2UoYS5wcmVmZXJyZWRMYXlvdXQscik7VWUoKS5fT3J0QWRkU2Vzc2lvbkNvbmZpZ0VudHJ5KGUscCxtKSE9PTAmJkJlKGBDYW5cXCd0IHNldCBhIHNlc3Npb24gY29uZmlnIGVudHJ5OiBcXCdwcmVmZXJyZWRMYXlvdXRcXCcgLSAke2EucHJlZmVycmVkTGF5b3V0fS5gKX19YnJlYWs7Y2FzZVwid2FzbVwiOmNhc2VcImNwdVwiOmNvbnRpbnVlO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBub3Qgc3VwcG9ydGVkIGV4ZWN1dGlvbiBwcm92aWRlcjogJHtpfWApfWxldCB1PVdlKGkscik7VWUoKS5fT3J0QXBwZW5kRXhlY3V0aW9uUHJvdmlkZXIoZSx1KSE9PTAmJkJlKGBDYW5cXCd0IGFwcGVuZCBleGVjdXRpb24gcHJvdmlkZXI6ICR7aX0uYCl9fSxSaT1lPT57bGV0IHQ9VWUoKSxyPTAsbz1bXSxpPWV8fHt9O3FsKGkpO3RyeXtsZXQgdT1GbChpLmdyYXBoT3B0aW1pemF0aW9uTGV2ZWw/P1wiYWxsXCIpLGE9amwoaS5leGVjdXRpb25Nb2RlPz9cInNlcXVlbnRpYWxcIikscD10eXBlb2YgaS5sb2dJZD09XCJzdHJpbmdcIj9XZShpLmxvZ0lkLG8pOjAsbT1pLmxvZ1NldmVyaXR5TGV2ZWw/PzI7aWYoIU51bWJlci5pc0ludGVnZXIobSl8fG08MHx8bT40KXRocm93IG5ldyBFcnJvcihgbG9nIHNlcnZlcml0eSBsZXZlbCBpcyBub3QgdmFsaWQ6ICR7bX1gKTtsZXQgaD1pLmxvZ1ZlcmJvc2l0eUxldmVsPz8wO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGgpfHxoPDB8fGg+NCl0aHJvdyBuZXcgRXJyb3IoYGxvZyB2ZXJib3NpdHkgbGV2ZWwgaXMgbm90IHZhbGlkOiAke2h9YCk7bGV0IGQ9dHlwZW9mIGkub3B0aW1pemVkTW9kZWxGaWxlUGF0aD09XCJzdHJpbmdcIj9XZShpLm9wdGltaXplZE1vZGVsRmlsZVBhdGgsbyk6MDtpZihyPXQuX09ydENyZWF0ZVNlc3Npb25PcHRpb25zKHUsISFpLmVuYWJsZUNwdU1lbUFyZW5hLCEhaS5lbmFibGVNZW1QYXR0ZXJuLGEsISFpLmVuYWJsZVByb2ZpbGluZywwLHAsbSxoLGQpLHI9PT0wJiZCZShcIkNhblxcJ3QgY3JlYXRlIHNlc3Npb24gb3B0aW9ucy5cIiksaS5leGVjdXRpb25Qcm92aWRlcnMmJktsKHIsaS5leGVjdXRpb25Qcm92aWRlcnMsbyksaS5mcmVlRGltZW5zaW9uT3ZlcnJpZGVzKWZvcihsZXRbeSx3XW9mIE9iamVjdC5lbnRyaWVzKGkuZnJlZURpbWVuc2lvbk92ZXJyaWRlcykpe2lmKHR5cGVvZiB5IT1cInN0cmluZ1wiKXRocm93IG5ldyBFcnJvcihgZnJlZSBkaW1lbnNpb24gb3ZlcnJpZGUgbmFtZSBtdXN0IGJlIGEgc3RyaW5nOiAke3l9YCk7aWYodHlwZW9mIHchPVwibnVtYmVyXCJ8fCFOdW1iZXIuaXNJbnRlZ2VyKHcpfHx3PDApdGhyb3cgbmV3IEVycm9yKGBmcmVlIGRpbWVuc2lvbiBvdmVycmlkZSB2YWx1ZSBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXI6ICR7d31gKTtsZXQgXz1XZSh5LG8pO3QuX09ydEFkZEZyZWVEaW1lbnNpb25PdmVycmlkZShyLF8sdykhPT0wJiZCZShgQ2FuXFwndCBzZXQgYSBmcmVlIGRpbWVuc2lvbiBvdmVycmlkZTogJHt5fSAtICR7d30uYCl9cmV0dXJuIGkuZXh0cmEhPT12b2lkIDAmJkRyKGkuZXh0cmEsXCJcIixuZXcgV2Vha1NldCwoeSx3KT0+e2xldCBfPVdlKHksbyksdj1XZSh3LG8pO3QuX09ydEFkZFNlc3Npb25Db25maWdFbnRyeShyLF8sdikhPT0wJiZCZShgQ2FuXFwndCBzZXQgYSBzZXNzaW9uIGNvbmZpZyBlbnRyeTogJHt5fSAtICR7d30uYCl9KSxbcixvXX1jYXRjaCh1KXt0aHJvdyByIT09MCYmdC5fT3J0UmVsZWFzZVNlc3Npb25PcHRpb25zKHIpLG8uZm9yRWFjaChhPT50Ll9mcmVlKGEpKSx1fX07VmUoKTt2YXIgRGk9YXN5bmMgZT0+e2lmKHR5cGVvZiBlPT1cInN0cmluZ1wiKWlmKHR5cGVvZiBwcm9jZXNzPFwidVwiJiZwcm9jZXNzLnZlcnNpb25zJiZwcm9jZXNzLnZlcnNpb25zLm5vZGUpdHJ5e3JldHVybiBuZXcgVWludDhBcnJheShhd2FpdCh2b2lkIDApKGUpKX1jYXRjaCh0KXtpZih0LmNvZGU9PT1cIkVSUl9GU19GSUxFX1RPT19MQVJHRVwiKXtsZXQgcj0odm9pZCAwKShlKSxvPVtdO2ZvciBhd2FpdChsZXQgaSBvZiByKW8ucHVzaChpKTtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoQnVmZmVyLmNvbmNhdChvKSl9dGhyb3cgdH1lbHNle2xldCB0PWF3YWl0IGZldGNoKGUpO2lmKCF0Lm9rKXRocm93IG5ldyBFcnJvcihgZmFpbGVkIHRvIGxvYWQgZXh0ZXJuYWwgZGF0YSBmaWxlOiAke2V9YCk7bGV0IHI9dC5oZWFkZXJzLmdldChcIkNvbnRlbnQtTGVuZ3RoXCIpLG89cj9wYXJzZUludChyLDEwKTowO2lmKG88MTA3Mzc0MTgyNClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYXdhaXQgdC5hcnJheUJ1ZmZlcigpKTt7aWYoIXQuYm9keSl0aHJvdyBuZXcgRXJyb3IoYGZhaWxlZCB0byBsb2FkIGV4dGVybmFsIGRhdGEgZmlsZTogJHtlfSwgbm8gcmVzcG9uc2UgYm9keS5gKTtsZXQgaT10LmJvZHkuZ2V0UmVhZGVyKCksdTt0cnl7dT1uZXcgQXJyYXlCdWZmZXIobyl9Y2F0Y2gocCl7aWYocCBpbnN0YW5jZW9mIFJhbmdlRXJyb3Ipe2xldCBtPU1hdGguY2VpbChvLzY1NTM2KTt1PW5ldyBXZWJBc3NlbWJseS5NZW1vcnkoe2luaXRpYWw6bSxtYXhpbXVtOm19KS5idWZmZXJ9ZWxzZSB0aHJvdyBwfWxldCBhPTA7Zm9yKDs7KXtsZXR7ZG9uZTpwLHZhbHVlOm19PWF3YWl0IGkucmVhZCgpO2lmKHApYnJlYWs7bGV0IGg9bS5ieXRlTGVuZ3RoO25ldyBVaW50OEFycmF5KHUsYSxoKS5zZXQobSksYSs9aH1yZXR1cm4gbmV3IFVpbnQ4QXJyYXkodSwwLG8pfX1lbHNlIHJldHVybiBlIGluc3RhbmNlb2YgQmxvYj9uZXcgVWludDhBcnJheShhd2FpdCBlLmFycmF5QnVmZmVyKCkpOmUgaW5zdGFuY2VvZiBVaW50OEFycmF5P2U6bmV3IFVpbnQ4QXJyYXkoZSl9O3ZhciBUcD0oZSx0KT0+e1VlKCkuX09ydEluaXQoZSx0KSE9PTAmJkJlKFwiQ2FuXFwndCBpbml0aWFsaXplIG9ubnhydW50aW1lLlwiKX0sd2w9YXN5bmMgZT0+e1RwKGUud2FzbS5udW1UaHJlYWRzLHpyKGUubG9nTGV2ZWwpKX0sdmw9YXN5bmMoZSx0KT0+e2lmKHQ9PT1cIndlYmdwdVwifHx0PT09XCJ3ZWJublwiKXtpZih0eXBlb2YgbmF2aWdhdG9yPlwidVwifHwhbmF2aWdhdG9yLmdwdSl0aHJvdyBuZXcgRXJyb3IoXCJXZWJHUFUgaXMgbm90IHN1cHBvcnRlZCBpbiBjdXJyZW50IGVudmlyb25tZW50XCIpO2xldCByPWF3YWl0IG5hdmlnYXRvci5ncHUucmVxdWVzdEFkYXB0ZXIoKTtpZighcil0aHJvdyBuZXcgRXJyb3IoXFwnRmFpbGVkIHRvIGdldCBHUFUgYWRhcHRlci4gWW91IG1heSBuZWVkIHRvIGVuYWJsZSBmbGFnIFwiLS1lbmFibGUtdW5zYWZlLXdlYmdwdVwiIGlmIHlvdSBhcmUgdXNpbmcgQ2hyb21lLlxcJyk7aWYoIWUud2FzbS5zaW1kKXRocm93IG5ldyBFcnJvcihcIk5vdCBzdXBwb3J0ZWQgZm9yIFdlYkdQVT1PTiBhbmQgU0lNRD1PRkYuIFBsZWFzZSBzZXQgYGVudi53YXNtLnNpbWRgIHRvIHRydWUgd2hlbiB1c2luZyBgd2ViZ3B1YCBFUFwiKTtsZXQgbz0oeWwoKSx1cihnbCkpLmluaXQ7YXdhaXQgbyhVZSgpLGUscil9fSxIcj1uZXcgTWFwLEVwPWU9PntsZXQgdD1VZSgpLHI9dC5zdGFja1NhdmUoKTt0cnl7bGV0IG89dC5zdGFja0FsbG9jKDgpO3JldHVybiB0Ll9PcnRHZXRJbnB1dE91dHB1dENvdW50KGUsbyxvKzQpIT09MCYmQmUoXCJDYW5cXCd0IGdldCBzZXNzaW9uIGlucHV0L291dHB1dCBjb3VudC5cIiksW3QuSEVBUDMyW28vNF0sdC5IRUFQMzJbby80KzFdXX1maW5hbGx5e3Quc3RhY2tSZXN0b3JlKHIpfX0sV289ZT0+e2xldCB0PVVlKCkscj10Ll9tYWxsb2MoZS5ieXRlTGVuZ3RoKTtpZihyPT09MCl0aHJvdyBuZXcgRXJyb3IoYENhblxcJ3QgY3JlYXRlIGEgc2Vzc2lvbi4gZmFpbGVkIHRvIGFsbG9jYXRlIGEgYnVmZmVyIG9mIHNpemUgJHtlLmJ5dGVMZW5ndGh9LmApO3JldHVybiB0LkhFQVBVOC5zZXQoZSxyKSxbcixlLmJ5dGVMZW5ndGhdfSwkbD1hc3luYyhlLHQpPT57bGV0IHIsbyxpPVVlKCk7QXJyYXkuaXNBcnJheShlKT9bcixvXT1lOmUuYnVmZmVyPT09aS5IRUFQVTguYnVmZmVyP1tyLG9dPVtlLmJ5dGVPZmZzZXQsZS5ieXRlTGVuZ3RoXTpbcixvXT1XbyhlKTtsZXQgdT0wLGE9MCxwPTAsbT1bXSxoPVtdLGQ9W107dHJ5e2lmKFthLG1dPVJpKHQpLHQ/LmV4dGVybmFsRGF0YSYmaS5tb3VudEV4dGVybmFsRGF0YSl7bGV0IEM9W107Zm9yKGxldCBTIG9mIHQuZXh0ZXJuYWxEYXRhKXtsZXQgRT10eXBlb2YgUz09XCJzdHJpbmdcIj9TOlMucGF0aDtDLnB1c2goRGkodHlwZW9mIFM9PVwic3RyaW5nXCI/UzpTLmRhdGEpLnRoZW4oTz0+e2kubW91bnRFeHRlcm5hbERhdGEoRSxPKX0pKX1hd2FpdCBQcm9taXNlLmFsbChDKX11PWF3YWl0IGkuX09ydENyZWF0ZVNlc3Npb24ocixvLGEpLHU9PT0wJiZCZShcIkNhblxcJ3QgY3JlYXRlIGEgc2Vzc2lvbi5cIik7bGV0W3ksd109RXAodSksXz1bXSx2PVtdLHg9W107Zm9yKGxldCBDPTA7Qzx5O0MrKyl7bGV0IFM9aS5fT3J0R2V0SW5wdXROYW1lKHUsQyk7Uz09PTAmJkJlKFwiQ2FuXFwndCBnZXQgYW4gaW5wdXQgbmFtZS5cIiksaC5wdXNoKFMpLF8ucHVzaChpLlVURjhUb1N0cmluZyhTKSl9Zm9yKGxldCBDPTA7Qzx3O0MrKyl7bGV0IFM9aS5fT3J0R2V0T3V0cHV0TmFtZSh1LEMpO1M9PT0wJiZCZShcIkNhblxcJ3QgZ2V0IGFuIG91dHB1dCBuYW1lLlwiKSxkLnB1c2goUyk7bGV0IEU9aS5VVEY4VG9TdHJpbmcoUyk7di5wdXNoKEUpO3tsZXQgTz10eXBlb2YgdD8ucHJlZmVycmVkT3V0cHV0TG9jYXRpb249PVwic3RyaW5nXCI/dC5wcmVmZXJyZWRPdXRwdXRMb2NhdGlvbjp0Py5wcmVmZXJyZWRPdXRwdXRMb2NhdGlvbj8uW0VdPz9cImNwdVwiO2lmKE8hPT1cImNwdVwiJiZPIT09XCJjcHUtcGlubmVkXCImJk8hPT1cImdwdS1idWZmZXJcIil0aHJvdyBuZXcgRXJyb3IoYE5vdCBzdXBwb3J0ZWQgcHJlZmVycmVkIG91dHB1dCBsb2NhdGlvbjogJHtPfS5gKTt4LnB1c2goTyl9fWxldCBUPW51bGw7cmV0dXJuIHguc29tZShDPT5DPT09XCJncHUtYnVmZmVyXCIpJiYocD1pLl9PcnRDcmVhdGVCaW5kaW5nKHUpLHA9PT0wJiZCZShcIkNhblxcJ3QgY3JlYXRlIElPIGJpbmRpbmcuXCIpLFQ9e2hhbmRsZTpwLG91dHB1dFByZWZlcnJlZExvY2F0aW9uczp4LG91dHB1dFByZWZlcnJlZExvY2F0aW9uc0VuY29kZWQ6eC5tYXAoQz0+Y28oQykpfSksSHIuc2V0KHUsW3UsaCxkLFRdKSxbdSxfLHZdfWNhdGNoKHkpe3Rocm93IGguZm9yRWFjaCh3PT5pLl9PcnRGcmVlKHcpKSxkLmZvckVhY2godz0+aS5fT3J0RnJlZSh3KSkscCE9PTAmJmkuX09ydFJlbGVhc2VCaW5kaW5nKHApLHUhPT0wJiZpLl9PcnRSZWxlYXNlU2Vzc2lvbih1KSx5fWZpbmFsbHl7aS5fZnJlZShyKSxhIT09MCYmaS5fT3J0UmVsZWFzZVNlc3Npb25PcHRpb25zKGEpLG0uZm9yRWFjaCh5PT5pLl9mcmVlKHkpKSxpLnVubW91bnRFeHRlcm5hbERhdGE/LigpfX0sX2w9ZT0+e2xldCB0PVVlKCkscj1Ici5nZXQoZSk7aWYoIXIpdGhyb3cgbmV3IEVycm9yKGBjYW5ub3QgcmVsZWFzZSBzZXNzaW9uLiBpbnZhbGlkIHNlc3Npb24gaWQ6ICR7ZX1gKTtsZXRbbyxpLHUsYV09cjthJiZ0Ll9PcnRSZWxlYXNlQmluZGluZyhhLmhhbmRsZSksdC5qc2VwVW5yZWdpc3RlckJ1ZmZlcnM/LihlKSxpLmZvckVhY2gocD0+dC5fT3J0RnJlZShwKSksdS5mb3JFYWNoKHA9PnQuX09ydEZyZWUocCkpLHQuX09ydFJlbGVhc2VTZXNzaW9uKG8pLEhyLmRlbGV0ZShlKX0sYmw9KGUsdCxyLG8saSk9PntpZighZSl7dC5wdXNoKDApO3JldHVybn1sZXQgdT1VZSgpLGE9ZVswXSxwPWVbMV0sbT1lWzNdLGgsZDtpZihhPT09XCJzdHJpbmdcIiYmbT09PVwiZ3B1LWJ1ZmZlclwiKXRocm93IG5ldyBFcnJvcihcIlN0cmluZyB0ZW5zb3IgaXMgbm90IHN1cHBvcnRlZCBvbiBHUFUuXCIpO2lmKG09PT1cImdwdS1idWZmZXJcIil7bGV0IF89ZVsyXS5ncHVCdWZmZXIsdj1NcihsbyhhKSk7ZD1wLnJlZHVjZSgoeCxUKT0+eCpULDEpKnYsaD11LmpzZXBSZWdpc3RlckJ1ZmZlcihvLGksXyxkKX1lbHNle2xldCBfPWVbMl07aWYoQXJyYXkuaXNBcnJheShfKSl7ZD00Kl8ubGVuZ3RoLGg9dS5fbWFsbG9jKGQpLHIucHVzaChoKTtsZXQgdj1oLzQ7Zm9yKGxldCB4PTA7eDxfLmxlbmd0aDt4Kyspe2lmKHR5cGVvZiBfW3hdIT1cInN0cmluZ1wiKXRocm93IG5ldyBUeXBlRXJyb3IoYHRlbnNvciBkYXRhIGF0IGluZGV4ICR7eH0gaXMgbm90IGEgc3RyaW5nYCk7dS5IRUFQVTMyW3YrK109V2UoX1t4XSxyKX19ZWxzZSBkPV8uYnl0ZUxlbmd0aCxoPXUuX21hbGxvYyhkKSxyLnB1c2goaCksdS5IRUFQVTguc2V0KG5ldyBVaW50OEFycmF5KF8uYnVmZmVyLF8uYnl0ZU9mZnNldCxkKSxoKX1sZXQgeT11LnN0YWNrU2F2ZSgpLHc9dS5zdGFja0FsbG9jKDQqcC5sZW5ndGgpO3RyeXtsZXQgXz13LzQ7cC5mb3JFYWNoKHg9PnUuSEVBUDMyW18rK109eCk7bGV0IHY9dS5fT3J0Q3JlYXRlVGVuc29yKGxvKGEpLGgsZCx3LHAubGVuZ3RoLGNvKG0pKTt2PT09MCYmQmUoYENhblxcJ3QgY3JlYXRlIHRlbnNvciBmb3IgaW5wdXQvb3V0cHV0LiBzZXNzaW9uPSR7b30sIGluZGV4PSR7aX0uYCksdC5wdXNoKHYpfWZpbmFsbHl7dS5zdGFja1Jlc3RvcmUoeSl9fSxTbD1hc3luYyhlLHQscixvLGksdSk9PntsZXQgYT1VZSgpLHA9SHIuZ2V0KGUpO2lmKCFwKXRocm93IG5ldyBFcnJvcihgY2Fubm90IHJ1biBpbmZlcmVuY2UuIGludmFsaWQgc2Vzc2lvbiBpZDogJHtlfWApO2xldFttLGgsZCx5XT1wLHc9dC5sZW5ndGgsXz1vLmxlbmd0aCx2PTAseD1bXSxUPVtdLEM9W10sUz1bXSxFPWEuc3RhY2tTYXZlKCksTz1hLnN0YWNrQWxsb2Modyo0KSxVPWEuc3RhY2tBbGxvYyh3KjQpLE09YS5zdGFja0FsbG9jKF8qNCksTj1hLnN0YWNrQWxsb2MoXyo0KTt0cnl7W3YseF09a2kodSk7Zm9yKGxldCBlZT0wO2VlPHc7ZWUrKylibChyW2VlXSxULFMsZSx0W2VlXSk7Zm9yKGxldCBlZT0wO2VlPF87ZWUrKylibChpW2VlXSxDLFMsZSx3K29bZWVdKTtsZXQgWT1PLzQsc2U9VS80LEI9TS80LHRlPU4vNDtmb3IobGV0IGVlPTA7ZWU8dztlZSsrKWEuSEVBUFUzMltZKytdPVRbZWVdLGEuSEVBUFUzMltzZSsrXT1oW3RbZWVdXTtmb3IobGV0IGVlPTA7ZWU8XztlZSsrKWEuSEVBUFUzMltCKytdPUNbZWVdLGEuSEVBUFUzMlt0ZSsrXT1kW29bZWVdXTtpZih5KXtsZXR7aGFuZGxlOmVlLG91dHB1dFByZWZlcnJlZExvY2F0aW9uczpiZSxvdXRwdXRQcmVmZXJyZWRMb2NhdGlvbnNFbmNvZGVkOk1lfT15O2lmKGgubGVuZ3RoIT09dyl0aHJvdyBuZXcgRXJyb3IoYGlucHV0IGNvdW50IGZyb20gZmVlZHMgKCR7d30pIGlzIGV4cGVjdGVkIHRvIGJlIGFsd2F5cyBlcXVhbCB0byBtb2RlbFxcJ3MgaW5wdXQgY291bnQgKCR7aC5sZW5ndGh9KS5gKTtmb3IobGV0IHBlPTA7cGU8dztwZSsrKXtsZXQgeWU9dFtwZV07YXdhaXQgYS5fT3J0QmluZElucHV0KGVlLGhbeWVdLFRbcGVdKSE9PTAmJkJlKGBDYW5cXCd0IGJpbmQgaW5wdXRbJHtwZX1dIGZvciBzZXNzaW9uPSR7ZX0uYCl9Zm9yKGxldCBwZT0wO3BlPF87cGUrKyl7bGV0IHllPW9bcGVdO2lbcGVdPy5bM10/YS5fT3J0QmluZE91dHB1dChlZSxkW3llXSxDW3BlXSwwKSE9PTAmJkJlKGBDYW5cXCd0IGJpbmQgcHJlLWFsbG9jYXRlZCBvdXRwdXRbJHtwZX1dIGZvciBzZXNzaW9uPSR7ZX0uYCk6YS5fT3J0QmluZE91dHB1dChlZSxkW3llXSwwLE1lW3llXSkhPT0wJiZCZShgQ2FuXFwndCBiaW5kIG91dHB1dFske3BlfV0gdG8gJHtiZVtwZV19IGZvciBzZXNzaW9uPSR7ZX0uYCl9fWEuanNlcE9uUnVuU3RhcnQ/LigpO2xldCBQZTt5P1BlPWF3YWl0IGEuX09ydFJ1bldpdGhCaW5kaW5nKG0seS5oYW5kbGUsXyxNLHYpOlBlPWF3YWl0IGEuX09ydFJ1bihtLFUsTyx3LE4sXyxNLHYpLFBlIT09MCYmQmUoXCJmYWlsZWQgdG8gY2FsbCBPcnRSdW4oKS5cIik7bGV0IEVlPVtdO2ZvcihsZXQgZWU9MDtlZTxfO2VlKyspe2xldCBiZT1hLkhFQVBVMzJbTS80K2VlXTtpZihiZT09PUNbZWVdKXtFZS5wdXNoKGlbZWVdKTtjb250aW51ZX1sZXQgTWU9YS5zdGFja1NhdmUoKSxwZT1hLnN0YWNrQWxsb2MoNCo0KSx5ZT0hMSxkZSx3ZT0wO3RyeXthLl9PcnRHZXRUZW5zb3JEYXRhKGJlLHBlLHBlKzQscGUrOCxwZSsxMikhPT0wJiZCZShgQ2FuXFwndCBhY2Nlc3Mgb3V0cHV0IHRlbnNvciBkYXRhIG9uIGluZGV4ICR7ZWV9LmApO2xldCBSZT1wZS80LEdlPWEuSEVBUFUzMltSZSsrXTt3ZT1hLkhFQVBVMzJbUmUrK107bGV0IEY9YS5IRUFQVTMyW1JlKytdLGllPWEuSEVBUFUzMltSZSsrXSxoZT1bXTtmb3IobGV0IGtlPTA7a2U8aWU7a2UrKyloZS5wdXNoKGEuSEVBUFUzMltGLzQra2VdKTthLl9PcnRGcmVlKEYpO2xldCBYZT1oZS5yZWR1Y2UoKGtlLExlKT0+a2UqTGUsMSk7ZGU9c3QoR2UpO2xldCBudD15Py5vdXRwdXRQcmVmZXJyZWRMb2NhdGlvbnNbb1tlZV1dO2lmKGRlPT09XCJzdHJpbmdcIil7aWYobnQ9PT1cImdwdS1idWZmZXJcIil0aHJvdyBuZXcgRXJyb3IoXCJTdHJpbmcgdGVuc29yIGlzIG5vdCBzdXBwb3J0ZWQgb24gR1BVLlwiKTtsZXQga2U9W10sTGU9d2UvNDtmb3IobGV0IEl0PTA7SXQ8WGU7SXQrKyl7bGV0IFR0PWEuSEVBUFUzMltMZSsrXSxWdD1JdD09PVhlLTE/dm9pZCAwOmEuSEVBUFUzMltMZV0tVHQ7a2UucHVzaChhLlVURjhUb1N0cmluZyhUdCxWdCkpfUVlLnB1c2goW2RlLGhlLGtlLFwiY3B1XCJdKX1lbHNlIGlmKG50PT09XCJncHUtYnVmZmVyXCImJlhlPjApe2xldCBrZT1hLmpzZXBHZXRCdWZmZXIod2UpLExlPU1yKEdlKTtpZihMZT09PXZvaWQgMHx8IUJpKGRlKSl0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGRhdGEgdHlwZTogJHtkZX1gKTt5ZT0hMCxFZS5wdXNoKFtkZSxoZSx7Z3B1QnVmZmVyOmtlLGRvd25sb2FkOmEuanNlcENyZWF0ZURvd25sb2FkZXIoa2UsWGUqTGUsZGUpLGRpc3Bvc2U6KCk9PnthLl9PcnRSZWxlYXNlVGVuc29yKGJlKX19LFwiZ3B1LWJ1ZmZlclwiXSl9ZWxzZXtsZXQga2U9eW4oZGUpLExlPW5ldyBrZShYZSk7bmV3IFVpbnQ4QXJyYXkoTGUuYnVmZmVyLExlLmJ5dGVPZmZzZXQsTGUuYnl0ZUxlbmd0aCkuc2V0KGEuSEVBUFU4LnN1YmFycmF5KHdlLHdlK0xlLmJ5dGVMZW5ndGgpKSxFZS5wdXNoKFtkZSxoZSxMZSxcImNwdVwiXSl9fWZpbmFsbHl7YS5zdGFja1Jlc3RvcmUoTWUpLGRlPT09XCJzdHJpbmdcIiYmd2UmJmEuX2ZyZWUod2UpLHllfHxhLl9PcnRSZWxlYXNlVGVuc29yKGJlKX19cmV0dXJuIHkmJmEuX09ydENsZWFyQm91bmRPdXRwdXRzKHkuaGFuZGxlKSxFZX1maW5hbGx5e2Euc3RhY2tSZXN0b3JlKEUpLFQuZm9yRWFjaChZPT5hLl9PcnRSZWxlYXNlVGVuc29yKFkpKSxDLmZvckVhY2goWT0+YS5fT3J0UmVsZWFzZVRlbnNvcihZKSksUy5mb3JFYWNoKFk9PmEuX2ZyZWUoWSkpLHYhPT0wJiZhLl9PcnRSZWxlYXNlUnVuT3B0aW9ucyh2KSx4LmZvckVhY2goWT0+YS5fZnJlZShZKSl9fSx4bD1lPT57bGV0IHQ9VWUoKSxyPUhyLmdldChlKTtpZighcil0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHNlc3Npb24gaWRcIik7bGV0IG89clswXSxpPXQuX09ydEVuZFByb2ZpbGluZyhvKTtpPT09MCYmQmUoXCJDYW5cXCd0IGdldCBhbiBwcm9maWxlIGZpbGUgbmFtZS5cIiksdC5fT3J0RnJlZShpKX0sQ2w9ZT0+e2xldCB0PVtdO2ZvcihsZXQgciBvZiBlKXtsZXQgbz1yWzJdOyFBcnJheS5pc0FycmF5KG8pJiZcImJ1ZmZlclwiaW4gbyYmdC5wdXNoKG8uYnVmZmVyKX1yZXR1cm4gdH07c2VsZi5vbm1lc3NhZ2U9ZT0+e2xldHt0eXBlOnQsaW46cn09ZS5kYXRhO3RyeXtzd2l0Y2godCl7Y2FzZVwiaW5pdC13YXNtXCI6T2koci53YXNtKS50aGVuKCgpPT57d2wocikudGhlbigoKT0+e3Bvc3RNZXNzYWdlKHt0eXBlOnR9KX0sbz0+e3Bvc3RNZXNzYWdlKHt0eXBlOnQsZXJyOm99KX0pfSxvPT57cG9zdE1lc3NhZ2Uoe3R5cGU6dCxlcnI6b30pfSk7YnJlYWs7Y2FzZVwiaW5pdC1lcFwiOntsZXR7ZXBOYW1lOm8sZW52Oml9PXI7dmwoaSxvKS50aGVuKCgpPT57cG9zdE1lc3NhZ2Uoe3R5cGU6dH0pfSx1PT57cG9zdE1lc3NhZ2Uoe3R5cGU6dCxlcnI6dX0pfSk7YnJlYWt9Y2FzZVwiY29weS1mcm9tXCI6e2xldHtidWZmZXI6b309cixpPVdvKG8pO3Bvc3RNZXNzYWdlKHt0eXBlOnQsb3V0Oml9KTticmVha31jYXNlXCJjcmVhdGVcIjp7bGV0e21vZGVsOm8sb3B0aW9uczppfT1yOyRsKG8saSkudGhlbih1PT57cG9zdE1lc3NhZ2Uoe3R5cGU6dCxvdXQ6dX0pfSx1PT57cG9zdE1lc3NhZ2Uoe3R5cGU6dCxlcnI6dX0pfSk7YnJlYWt9Y2FzZVwicmVsZWFzZVwiOl9sKHIpLHBvc3RNZXNzYWdlKHt0eXBlOnR9KTticmVhaztjYXNlXCJydW5cIjp7bGV0e3Nlc3Npb25JZDpvLGlucHV0SW5kaWNlczppLGlucHV0czp1LG91dHB1dEluZGljZXM6YSxvcHRpb25zOnB9PXI7U2wobyxpLHUsYSxuZXcgQXJyYXkoYS5sZW5ndGgpLmZpbGwobnVsbCkscCkudGhlbihtPT57bS5zb21lKGg9PmhbM10hPT1cImNwdVwiKT9wb3N0TWVzc2FnZSh7dHlwZTp0LGVycjpcIlByb3h5IGRvZXMgbm90IHN1cHBvcnQgbm9uLWNwdSB0ZW5zb3IgbG9jYXRpb24uXCJ9KTpwb3N0TWVzc2FnZSh7dHlwZTp0LG91dDptfSxDbChtKSl9LG09Pntwb3N0TWVzc2FnZSh7dHlwZTp0LGVycjptfSl9KTticmVha31jYXNlXCJlbmQtcHJvZmlsaW5nXCI6eGwocikscG9zdE1lc3NhZ2Uoe3R5cGU6dH0pO2JyZWFrO2RlZmF1bHQ6fX1jYXRjaChvKXtwb3N0TWVzc2FnZSh7dHlwZTp0LGVycjpvfSl9fTt9KSgpO1xcbi8qKlxcbiAqIEBsaWNlbnNlXFxuICogQ29weXJpZ2h0IDIwMjEgR29vZ2xlIExMQy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcXG4gKlxcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxcbiAqXFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXFxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG4gKi9cXG4vKipcXG4gKiBAbGljZW5zZVxcbiAqIENvcHlyaWdodCAyMDIwIEdvb2dsZSBMTEMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXFxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcXG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXFxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XFxuICpcXG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcXG4gKlxcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXFxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuICovXFxuLyoqXFxuICogQGxpY2Vuc2VcXG4gKiBDb3B5cmlnaHQgMjAxOSBHb29nbGUgTExDLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XFxuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxcbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxcbiAqXFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXFxuICpcXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXFxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxcbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcbiAqL1xcbid9KTt2YXIgc3IsdnQscm4sbGEsZGEsZmksbWksX3IsU3IsQmYsdWEsZ2QseWQsYmQsdmQsd2QsJGQsX2QsaGk9USgoKT0+e1widXNlIHN0cmljdFwiO2J0KCk7bWQoKTt2cigpO3NyPSgpPT4hIUFlLndhc20ucHJveHkmJnR5cGVvZiBkb2N1bWVudDxcInVcIixybj0hMSxsYT0hMSxkYT0hMSxtaT1uZXcgTWFwLF9yPShlLHQpPT57bGV0IHI9bWkuZ2V0KGUpO3I/ci5wdXNoKHQpOm1pLnNldChlLFt0XSl9LFNyPSgpPT57aWYocm58fCFsYXx8ZGF8fCF2dCl0aHJvdyBuZXcgRXJyb3IoXCJ3b3JrZXIgbm90IHJlYWR5XCIpfSxCZj1lPT57c3dpdGNoKGUuZGF0YS50eXBlKXtjYXNlXCJpbml0LXdhc21cIjpybj0hMSxlLmRhdGEuZXJyPyhkYT0hMCxmaVsxXShlLmRhdGEuZXJyKSk6KGxhPSEwLGZpWzBdKCkpO2JyZWFrO2Nhc2VcImluaXQtZXBcIjpjYXNlXCJjb3B5LWZyb21cIjpjYXNlXCJjcmVhdGVcIjpjYXNlXCJyZWxlYXNlXCI6Y2FzZVwicnVuXCI6Y2FzZVwiZW5kLXByb2ZpbGluZ1wiOntsZXQgdD1taS5nZXQoZS5kYXRhLnR5cGUpO2UuZGF0YS5lcnI/dC5zaGlmdCgpWzFdKGUuZGF0YS5lcnIpOnQuc2hpZnQoKVswXShlLmRhdGEub3V0KTticmVha31kZWZhdWx0On19LHVhPXR5cGVvZiBkb2N1bWVudDxcInVcIj9kb2N1bWVudD8uY3VycmVudFNjcmlwdD8uc3JjOnZvaWQgMCxnZD1hc3luYygpPT57aWYoIWxhKXtpZihybil0aHJvdyBuZXcgRXJyb3IoXCJtdWx0aXBsZSBjYWxscyB0byAnaW5pdFdhc20oKScgZGV0ZWN0ZWQuXCIpO2lmKGRhKXRocm93IG5ldyBFcnJvcihcInByZXZpb3VzIGNhbGwgdG8gJ2luaXRXYXNtKCknIGZhaWxlZC5cIik7aWYocm49ITAsc3IoKSlyZXR1cm4gQWUud2FzbS53YXNtUGF0aHM9PT12b2lkIDAmJnVhJiZ1YS5pbmRleE9mKFwiYmxvYjpcIikhPT0wJiYoQWUud2FzbS53YXNtUGF0aHM9dWEuc3Vic3RyKDAsK3VhLmxhc3RJbmRleE9mKFwiL1wiKSsxKSksbmV3IFByb21pc2UoKGUsdCk9Pnt2dD8udGVybWluYXRlKCk7bGV0IHI9VVJMLmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihbaGQoKV0se3R5cGU6XCJ0ZXh0L2phdmFzY3JpcHRcIn0pKTt2dD1uZXcgV29ya2VyKHIse25hbWU6XCJvcnQtd2FzbS1wcm94eS13b3JrZXJcIn0pLHZ0Lm9uZXJyb3I9aT0+dChpKSx2dC5vbm1lc3NhZ2U9QmYsVVJMLnJldm9rZU9iamVjdFVSTChyKSxmaT1bZSx0XTtsZXQgYT17dHlwZTpcImluaXQtd2FzbVwiLGluOkFlfTt2dC5wb3N0TWVzc2FnZShhKX0pO3RyeXthd2FpdCBNbyhBZS53YXNtKSxhd2FpdCBzZChBZSksbGE9ITB9Y2F0Y2goZSl7dGhyb3cgZGE9ITAsZX1maW5hbGx5e3JuPSExfX19LHlkPWFzeW5jIGU9PntpZihzcigpKXJldHVybiBTcigpLG5ldyBQcm9taXNlKCh0LHIpPT57X3IoXCJpbml0LWVwXCIsW3Qscl0pO2xldCBhPXt0eXBlOlwiaW5pdC1lcFwiLGluOntlcE5hbWU6ZSxlbnY6QWV9fTt2dC5wb3N0TWVzc2FnZShhKX0pO2F3YWl0IHVkKEFlLGUpfSxiZD1hc3luYyBlPT5zcigpPyhTcigpLG5ldyBQcm9taXNlKCh0LHIpPT57X3IoXCJjb3B5LWZyb21cIixbdCxyXSk7bGV0IGE9e3R5cGU6XCJjb3B5LWZyb21cIixpbjp7YnVmZmVyOmV9fTt2dC5wb3N0TWVzc2FnZShhLFtlLmJ1ZmZlcl0pfSkpOnBpKGUpLHZkPWFzeW5jKGUsdCk9PntpZihzcigpKXtpZih0Py5wcmVmZXJyZWRPdXRwdXRMb2NhdGlvbil0aHJvdyBuZXcgRXJyb3IoJ3Nlc3Npb24gb3B0aW9uIFwicHJlZmVycmVkT3V0cHV0TG9jYXRpb25cIiBpcyBub3Qgc3VwcG9ydGVkIGZvciBwcm94eS4nKTtyZXR1cm4gU3IoKSxuZXcgUHJvbWlzZSgocixhKT0+e19yKFwiY3JlYXRlXCIsW3IsYV0pO2xldCBpPXt0eXBlOlwiY3JlYXRlXCIsaW46e21vZGVsOmUsb3B0aW9uczp0fX0scz1bXTtlIGluc3RhbmNlb2YgVWludDhBcnJheSYmcy5wdXNoKGUuYnVmZmVyKSx2dC5wb3N0TWVzc2FnZShpLHMpfSl9ZWxzZSByZXR1cm4gbGQoZSx0KX0sd2Q9YXN5bmMgZT0+e2lmKHNyKCkpcmV0dXJuIFNyKCksbmV3IFByb21pc2UoKHQscik9PntfcihcInJlbGVhc2VcIixbdCxyXSk7bGV0IGE9e3R5cGU6XCJyZWxlYXNlXCIsaW46ZX07dnQucG9zdE1lc3NhZ2UoYSl9KTtkZChlKX0sJGQ9YXN5bmMoZSx0LHIsYSxpLHMpPT57aWYoc3IoKSl7aWYoci5zb21lKG89Pm9bM10hPT1cImNwdVwiKSl0aHJvdyBuZXcgRXJyb3IoXCJpbnB1dCB0ZW5zb3Igb24gR1BVIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHByb3h5LlwiKTtpZihpLnNvbWUobz0+bykpdGhyb3cgbmV3IEVycm9yKFwicHJlLWFsbG9jYXRlZCBvdXRwdXQgdGVuc29yIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHByb3h5LlwiKTtyZXR1cm4gU3IoKSxuZXcgUHJvbWlzZSgobyxjKT0+e19yKFwicnVuXCIsW28sY10pO2xldCBwPXIsbT17dHlwZTpcInJ1blwiLGluOntzZXNzaW9uSWQ6ZSxpbnB1dEluZGljZXM6dCxpbnB1dHM6cCxvdXRwdXRJbmRpY2VzOmEsb3B0aW9uczpzfX07dnQucG9zdE1lc3NhZ2UobSxmZChwKSl9KX1lbHNlIHJldHVybiBjZChlLHQscixhLGkscyl9LF9kPWFzeW5jIGU9PntpZihzcigpKXJldHVybiBTcigpLG5ldyBQcm9taXNlKCh0LHIpPT57X3IoXCJlbmQtcHJvZmlsaW5nXCIsW3Qscl0pO2xldCBhPXt0eXBlOlwiZW5kLXByb2ZpbGluZ1wiLGluOmV9O3Z0LnBvc3RNZXNzYWdlKGEpfSk7cGQoZSl9fSk7dmFyIFNkLE1mLGNhLHhkPVEoKCk9PntcInVzZSBzdHJpY3RcIjtidCgpO2hpKCk7emUoKTtOYSgpO1NkPShlLHQpPT57c3dpdGNoKGUubG9jYXRpb24pe2Nhc2VcImNwdVwiOnJldHVybltlLnR5cGUsZS5kaW1zLGUuZGF0YSxcImNwdVwiXTtjYXNlXCJncHUtYnVmZmVyXCI6cmV0dXJuW2UudHlwZSxlLmRpbXMse2dwdUJ1ZmZlcjplLmdwdUJ1ZmZlcn0sXCJncHUtYnVmZmVyXCJdO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIGRhdGEgbG9jYXRpb246ICR7ZS5sb2NhdGlvbn0gZm9yICR7dCgpfWApfX0sTWY9ZT0+e3N3aXRjaChlWzNdKXtjYXNlXCJjcHVcIjpyZXR1cm4gbmV3IFplKGVbMF0sZVsyXSxlWzFdKTtjYXNlXCJncHUtYnVmZmVyXCI6e2xldCB0PWVbMF07aWYoIU5uKHQpKXRocm93IG5ldyBFcnJvcihgbm90IHN1cHBvcnRlZCBkYXRhIHR5cGU6ICR7dH0gZm9yIGRlc2VyaWFsaXppbmcgR1BVIHRlbnNvcmApO2xldHtncHVCdWZmZXI6cixkb3dubG9hZDphLGRpc3Bvc2U6aX09ZVsyXTtyZXR1cm4gWmUuZnJvbUdwdUJ1ZmZlcihyLHtkYXRhVHlwZTp0LGRpbXM6ZVsxXSxkb3dubG9hZDphLGRpc3Bvc2U6aX0pfWRlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIGRhdGEgbG9jYXRpb246ICR7ZVszXX1gKX19LGNhPWNsYXNze2FzeW5jIGZldGNoTW9kZWxBbmRDb3B5VG9XYXNtTWVtb3J5KHQpe3JldHVybiBiZChhd2FpdCBacih0KSl9YXN5bmMgbG9hZE1vZGVsKHQscil7ZHQoKTtsZXQgYTt0eXBlb2YgdD09XCJzdHJpbmdcIj90eXBlb2YgcHJvY2VzczxcInVcIiYmcHJvY2Vzcy52ZXJzaW9ucyYmcHJvY2Vzcy52ZXJzaW9ucy5ub2RlP2E9YXdhaXQgWnIodCk6YT1hd2FpdCB0aGlzLmZldGNoTW9kZWxBbmRDb3B5VG9XYXNtTWVtb3J5KHQpOmE9dCxbdGhpcy5zZXNzaW9uSWQsdGhpcy5pbnB1dE5hbWVzLHRoaXMub3V0cHV0TmFtZXNdPWF3YWl0IHZkKGEsciksY3QoKX1hc3luYyBkaXNwb3NlKCl7cmV0dXJuIHdkKHRoaXMuc2Vzc2lvbklkKX1hc3luYyBydW4odCxyLGEpe2R0KCk7bGV0IGk9W10scz1bXTtPYmplY3QuZW50cmllcyh0KS5mb3JFYWNoKGI9PntsZXQgdz1iWzBdLCQ9YlsxXSx4PXRoaXMuaW5wdXROYW1lcy5pbmRleE9mKHcpO2lmKHg9PT0tMSl0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgaW5wdXQgJyR7d30nYCk7aS5wdXNoKCQpLHMucHVzaCh4KX0pO2xldCBvPVtdLGM9W107T2JqZWN0LmVudHJpZXMocikuZm9yRWFjaChiPT57bGV0IHc9YlswXSwkPWJbMV0seD10aGlzLm91dHB1dE5hbWVzLmluZGV4T2Yodyk7aWYoeD09PS0xKXRocm93IG5ldyBFcnJvcihgaW52YWxpZCBvdXRwdXQgJyR7d30nYCk7by5wdXNoKCQpLGMucHVzaCh4KX0pO2xldCBwPWkubWFwKChiLHcpPT5TZChiLCgpPT5gaW5wdXQgXCIke3RoaXMuaW5wdXROYW1lc1tzW3ddXX1cImApKSxtPW8ubWFwKChiLHcpPT5iP1NkKGIsKCk9PmBvdXRwdXQgXCIke3RoaXMub3V0cHV0TmFtZXNbY1t3XV19XCJgKTpudWxsKSxsPWF3YWl0ICRkKHRoaXMuc2Vzc2lvbklkLHMscCxjLG0sYSksZz17fTtmb3IobGV0IGI9MDtiPGwubGVuZ3RoO2IrKylnW3RoaXMub3V0cHV0TmFtZXNbY1tiXV1dPW9bYl0/P01mKGxbYl0pO3JldHVybiBjdCgpLGd9c3RhcnRQcm9maWxpbmcoKXt9ZW5kUHJvZmlsaW5nKCl7X2QodGhpcy5zZXNzaW9uSWQpfX19KTt2YXIgRGYscGEsQ2Q9USgoKT0+e1widXNlIHN0cmljdFwiO2J0KCk7aGkoKTt4ZCgpO0RmPSgpPT57aWYoKHR5cGVvZiBBZS53YXNtLmluaXRUaW1lb3V0IT1cIm51bWJlclwifHxBZS53YXNtLmluaXRUaW1lb3V0PDApJiYoQWUud2FzbS5pbml0VGltZW91dD0wKSx0eXBlb2YgQWUud2FzbS5zaW1kIT1cImJvb2xlYW5cIiYmKEFlLndhc20uc2ltZD0hMCksdHlwZW9mIEFlLndhc20ucHJveHkhPVwiYm9vbGVhblwiJiYoQWUud2FzbS5wcm94eT0hMSksdHlwZW9mIEFlLndhc20udHJhY2UhPVwiYm9vbGVhblwiJiYoQWUud2FzbS50cmFjZT0hMSksdHlwZW9mIEFlLndhc20ubnVtVGhyZWFkcyE9XCJudW1iZXJcInx8IU51bWJlci5pc0ludGVnZXIoQWUud2FzbS5udW1UaHJlYWRzKXx8QWUud2FzbS5udW1UaHJlYWRzPD0wKXsodHlwZW9mIHNlbGY8XCJ1XCImJiFzZWxmLmNyb3NzT3JpZ2luSXNvbGF0ZWR8fHR5cGVvZiBwcm9jZXNzPFwidVwiJiZwcm9jZXNzLnZlcnNpb25zJiZwcm9jZXNzLnZlcnNpb25zLm5vZGUpJiYoQWUud2FzbS5udW1UaHJlYWRzPTEpO2xldCBlPXR5cGVvZiBuYXZpZ2F0b3I+XCJ1XCI/KHZvaWQgMCkoKS5sZW5ndGg6bmF2aWdhdG9yLmhhcmR3YXJlQ29uY3VycmVuY3k7QWUud2FzbS5udW1UaHJlYWRzPU1hdGgubWluKDQsTWF0aC5jZWlsKChlfHwxKS8yKSl9fSxwYT1jbGFzc3thc3luYyBpbml0KHQpe0RmKCksYXdhaXQgZ2QoKSxhd2FpdCB5ZCh0KX1hc3luYyBjcmVhdGVJbmZlcmVuY2VTZXNzaW9uSGFuZGxlcih0LHIpe2xldCBhPW5ldyBjYTtyZXR1cm4gYXdhaXQgYS5sb2FkTW9kZWwodCxyKSxQcm9taXNlLnJlc29sdmUoYSl9fX0pO3ZhciBJZD17fTtucihJZCx7d2FzbUJhY2tlbmQ6KCk9PnpmfSk7dmFyIHpmLEFkPVEoKCk9PntcInVzZSBzdHJpY3RcIjtDZCgpO3pmPW5ldyBwYX0pO3ZhciBXZj17fTtucihXZix7SW5mZXJlbmNlU2Vzc2lvbjooKT0+bW8sVFJBQ0U6KCk9PnFyLFRSQUNFX0ZVTkNfQkVHSU46KCk9PmR0LFRSQUNFX0ZVTkNfRU5EOigpPT5jdCxUZW5zb3I6KCk9PlplLFRyYWluaW5nU2Vzc2lvbjooKT0+Ym8sZGVmYXVsdDooKT0+VWYsZW52OigpPT5BZSxyZWdpc3RlckJhY2tlbmQ6KCk9PkZ0fSk7bW9kdWxlLmV4cG9ydHM9R3QoV2YpO2J0KCk7YnQoKTtidCgpO3ZhciB3bz1cIjEuMTguMC1kZXYuMjAyNDAxMzAtOWY2OGEyN2M3YVwiO3ZhciBVZj1FYTt7bGV0IGU9KEFkKCksR3QoSWQpKS53YXNtQmFja2VuZDtGdChcIndlYmdwdVwiLGUsNSksRnQoXCJ3ZWJublwiLGUsNSksRnQoXCJjcHVcIixlLDEwKSxGdChcIndhc21cIixlLDEwKX1PYmplY3QuZGVmaW5lUHJvcGVydHkoQWUudmVyc2lvbnMsXCJ3ZWJcIix7dmFsdWU6d28sZW51bWVyYWJsZTohMH0pO1xuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IDIwMjEgR29vZ2xlIExMQy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqL1xuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IDIwMjAgR29vZ2xlIExMQy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqL1xuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IDIwMTkgR29vZ2xlIExMQy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqL1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9b3J0LndlYmdwdS5taW4uanMubWFwXG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiX193ZWJwYWNrX3JlcXVpcmVfXy5nID0gKGZ1bmN0aW9uKCkge1xuXHRpZiAodHlwZW9mIGdsb2JhbFRoaXMgPT09ICdvYmplY3QnKSByZXR1cm4gZ2xvYmFsVGhpcztcblx0dHJ5IHtcblx0XHRyZXR1cm4gdGhpcyB8fCBuZXcgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdGlmICh0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0JykgcmV0dXJuIHdpbmRvdztcblx0fVxufSkoKTsiLCIvLyBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cbi8vIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbi8vXG4vLyBBbiBleGFtcGxlIGhvdyB0byBydW4gc2VnbWVudC1hbnl0aGluZyB3aXRoIHdlYmdwdSBpbiBvbm54cnVudGltZS13ZWIuXG4vL1xuXG5jb25zdCBvcnQgPSByZXF1aXJlKCdvbm54cnVudGltZS13ZWIvd2ViZ3B1Jyk7XG5cbmNvbnN0IE1BWF9XSURUSCA9IDUwMDtcbmNvbnN0IE1BWF9IRUlHSFQgPSA1MDA7XG5jb25zdCBNT0RFTF9XSURUSCA9IDEwMjQ7XG5jb25zdCBNT0RFTF9IRUlHSFQgPSAxMDI0O1xuXG5jb25zdCBNT0RFTF9NQVAgPSB7XG4gICAgc2FtX2I6IFtcbiAgICAgICAgXCJodHRwczovL2h1Z2dpbmdmYWNlLmNvL3NjaG11ZWxsL3NhbS1iLWZwMTYvcmVzb2x2ZS9tYWluL3NhbV92aXRfYl8wMWVjNjQuZW5jb2Rlci1mcDE2Lm9ubnhcIixcbiAgICAgICAgXCJodHRwczovL2h1Z2dpbmdmYWNlLmNvL3NjaG11ZWxsL3NhbS1iLWZwMTYvcmVzb2x2ZS9tYWluL3NhbV92aXRfYl8wMWVjNjQuZGVjb2Rlci5vbm54XCJcbiAgICBdLFxuICAgIHNhbV9iX2xvY2FsOiBbXCJtb2RlbHMvc2FtX3ZpdF9iXzAxZWM2NC5lbmNvZGVyLWZwMTYub25ueFwiLCBcIm1vZGVscy9zYW1fdml0X2JfMDFlYzY0LmRlY29kZXIub25ueFwiXSxcbn07XG5cbmNvbnN0IGNvbmZpZyA9IGdldENvbmZpZygpO1xuXG5vcnQuZW52Lndhc20ubnVtVGhyZWFkcyA9IGNvbmZpZy50aHJlYWRzO1xub3J0LmVudi53YXNtLnByb3h5ID0gdHJ1ZTtcblxubGV0IGNhbnZhcztcbmxldCBmaWxlaW47XG5sZXQgZGVjb2Rlcl9sYXRlbmN5O1xuXG52YXIgaW1hZ2VfZW1iZWRkaW5ncztcbnZhciBzZXNzID0gW107XG52YXIgcG9pbnRzID0gW107XG52YXIgbGFiZWxzID0gW107XG52YXIgaW1hZ2VJbWFnZURhdGE7XG52YXIgaXNDbGlja2VkID0gZmFsc2U7XG5cbmZ1bmN0aW9uIGxvZyhpKSB7XG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0YXR1cycpLmlubmVyVGV4dCArPSBgXFxuJHtpfWA7XG59XG5cbi8qKlxuICogZ2V0IHNvbWUgcGFyYW1ldGVycyBmcm9tIHVybFxuICovXG5mdW5jdGlvbiBnZXRDb25maWcoKSB7XG4gICAgY29uc3QgcXVlcnkgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoLnN1YnN0cmluZygxKTtcbiAgICB2YXIgY29uZmlnID0ge1xuICAgICAgICBtb2RlbDogXCJzYW1fYlwiLFxuICAgICAgICBwcm92aWRlcjogXCJ3ZWJncHVcIixcbiAgICAgICAgZGV2aWNlOiBcImdwdVwiLFxuICAgICAgICB0aHJlYWRzOiBcIjFcIixcbiAgICB9O1xuICAgIGxldCB2YXJzID0gcXVlcnkuc3BsaXQoXCImXCIpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFycy5sZW5ndGg7IGkrKykge1xuICAgICAgICBsZXQgcGFpciA9IHZhcnNbaV0uc3BsaXQoXCI9XCIpO1xuICAgICAgICBpZiAocGFpclswXSBpbiBjb25maWcpIHtcbiAgICAgICAgICAgIGNvbmZpZ1twYWlyWzBdXSA9IGRlY29kZVVSSUNvbXBvbmVudChwYWlyWzFdKTtcbiAgICAgICAgfSBlbHNlIGlmIChwYWlyWzBdLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInVua25vd24gYXJndW1lbnQ6IFwiICsgcGFpclswXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uZmlnLnRocmVhZHMgPSBwYXJzZUludChjb25maWcudGhyZWFkcyk7XG4gICAgcmV0dXJuIGNvbmZpZztcbn1cblxuLyoqXG4gKiBoYW5kbGVyIHRvIGhhbmRsZSBjbGljayBvbiB0aGUgaW1hZ2UgY2FudmFzXG4gKiAgd2l0aCBjdGw6IGFkZCBwb2ludFxuICogIHdpdGggc2hpZnQ6IGZvcmdyb3VuZCBsYWJlbFxuICovXG5hc3luYyBmdW5jdGlvbiBoYW5kbGVDbGljayhldmVudCkge1xuICAgIGlmIChpc0NsaWNrZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBpc0NsaWNrZWQgPSB0cnVlO1xuICAgICAgICBjYW52YXMuc3R5bGUuY3Vyc29yID0gXCJ3YWl0XCI7XG5cbiAgICAgICAgY29uc3QgcmVjdCA9IGNhbnZhcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgeCA9IGV2ZW50LmNsaWVudFggLSByZWN0LmxlZnQ7XG4gICAgICAgIGNvbnN0IHkgPSBldmVudC5jbGllbnRZIC0gcmVjdC50b3A7XG4gICAgICAgIGNvbnN0IGxhYmVsID0gKGV2ZW50LnNoaWZ0S2V5KSA/IDAgOiAxO1xuXG4gICAgICAgIGlmIChpbWFnZV9lbWJlZGRpbmdzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGF3YWl0IHNlc3NbMF07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZW1iID0gYXdhaXQgaW1hZ2VfZW1iZWRkaW5ncztcblxuICAgICAgICBpZiAoIWV2ZW50LmN0cmxLZXkpIHtcbiAgICAgICAgICAgIHBvaW50cyA9IFtdO1xuICAgICAgICAgICAgbGFiZWxzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgcG9pbnRzLnB1c2goeCwgeSk7XG4gICAgICAgIGxhYmVscy5wdXNoKGxhYmVsKTtcblxuICAgICAgICBsZXQgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgIGN0eC5jbGVhclJlY3QoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTtcbiAgICAgICAgY2FudmFzLndpZHRoID0gaW1hZ2VJbWFnZURhdGEud2lkdGg7XG4gICAgICAgIGNhbnZhcy5oZWlnaHQgPSBpbWFnZUltYWdlRGF0YS5oZWlnaHQ7XG4gICAgICAgIGN0eC5wdXRJbWFnZURhdGEoaW1hZ2VJbWFnZURhdGEsIDAsIDApO1xuICAgICAgICBjdHguZmlsbFN0eWxlID0gJ2JsdWUnO1xuICAgICAgICBjdHguZmlsbFJlY3QoeCwgeSwgMTAsIDEwKTtcblxuICAgICAgICBjb25zdCBwb2ludENvb3JkcyA9IG5ldyBvcnQuVGVuc29yKG5ldyBGbG9hdDMyQXJyYXkocG9pbnRzKSwgWzEsIHBvaW50cy5sZW5ndGggLyAyLCAyXSk7XG4gICAgICAgIGNvbnN0IHBvaW50TGFiZWxzID0gbmV3IG9ydC5UZW5zb3IobmV3IEZsb2F0MzJBcnJheShsYWJlbHMpLCBbMSwgbGFiZWxzLmxlbmd0aF0pO1xuICAgICAgICBjb25zdCBtYXNrSW5wdXQgPSBuZXcgb3J0LlRlbnNvcihuZXcgRmxvYXQzMkFycmF5KDI1NiAqIDI1NiksIFsxLCAxLCAyNTYsIDI1Nl0pO1xuICAgICAgICBjb25zdCBoYXNNYXNrID0gbmV3IG9ydC5UZW5zb3IobmV3IEZsb2F0MzJBcnJheShbMF0pLCBbMSxdKTtcbiAgICAgICAgY29uc3Qgb3JpZ2lhbmxJbWFnZVNpemUgPSBuZXcgb3J0LlRlbnNvcihuZXcgRmxvYXQzMkFycmF5KFtNT0RFTF9IRUlHSFQsIE1PREVMX1dJRFRIXSksIFsyLF0pO1xuXG4gICAgICAgIGNvbnN0IHMgPSBhd2FpdCBzZXNzWzFdO1xuICAgICAgICBjb25zdCB0ID0gbmV3IG9ydC5UZW5zb3IoZW1iLmltYWdlX2VtYmVkZGluZ3MudHlwZSwgRmxvYXQzMkFycmF5LmZyb20oZW1iLmltYWdlX2VtYmVkZGluZ3MuZGF0YSksIGVtYi5pbWFnZV9lbWJlZGRpbmdzLmRpbXMpO1xuICAgICAgICBjb25zdCBmZWVkID0ge1xuICAgICAgICAgICAgXCJpbWFnZV9lbWJlZGRpbmdzXCI6IHQsXG4gICAgICAgICAgICBcInBvaW50X2Nvb3Jkc1wiOiBwb2ludENvb3JkcyxcbiAgICAgICAgICAgIFwicG9pbnRfbGFiZWxzXCI6IHBvaW50TGFiZWxzLFxuICAgICAgICAgICAgXCJtYXNrX2lucHV0XCI6IG1hc2tJbnB1dCxcbiAgICAgICAgICAgIFwiaGFzX21hc2tfaW5wdXRcIjogaGFzTWFzayxcbiAgICAgICAgICAgIFwib3JpZ19pbV9zaXplXCI6IG9yaWdpYW5sSW1hZ2VTaXplXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3RhcnQgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgcy5ydW4oZmVlZCk7XG4gICAgICAgIGRlY29kZXJfbGF0ZW5jeS5pbm5lclRleHQgPSBgJHsocGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydCkudG9GaXhlZCgxKX1tc2A7XG4gICAgICAgIGNvbnN0IG1hc2sgPSByZXMubWFza3M7XG4gICAgICAgIGNvbnN0IG1hc2tJbWFnZURhdGEgPSBtYXNrLnRvSW1hZ2VEYXRhKCk7XG4gICAgICAgIGN0eC5nbG9iYWxBbHBoYSA9IDAuMztcbiAgICAgICAgY3R4LmRyYXdJbWFnZShhd2FpdCBjcmVhdGVJbWFnZUJpdG1hcChtYXNrSW1hZ2VEYXRhKSwgMCwgMCk7XG4gICAgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICBjYW52YXMuc3R5bGUuY3Vyc29yID0gXCJkZWZhdWx0XCI7XG4gICAgICAgIGlzQ2xpY2tlZCA9IGZhbHNlO1xuICAgIH1cbn1cblxuXG4vKipcbiAqIGhhbmRsZXIgY2FsbGVkIHdoZW4gaW1hZ2UgYXZhaWxhYmxlXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGhhbmRsZUltYWdlKGltZykge1xuICAgIGNvbnN0IGVuY29kZXJfbGF0ZW5jeSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZW5jb2Rlcl9sYXRlbmN5XCIpO1xuICAgIGVuY29kZXJfbGF0ZW5jeS5pbm5lclRleHQgPSBcIlwiO1xuICAgIGZpbGVpbi5kaXNhYmxlZCA9IHRydWU7XG4gICAgZGVjb2Rlcl9sYXRlbmN5LmlubmVyVGV4dCA9IFwiXCI7XG4gICAgY2FudmFzLnN0eWxlLmN1cnNvciA9IFwid2FpdFwiO1xuICAgIGltYWdlX2VtYmVkZGluZ3MgPSB1bmRlZmluZWQ7XG4gICAgdmFyIHdpZHRoID0gaW1nLndpZHRoO1xuICAgIHZhciBoZWlnaHQgPSBpbWcuaGVpZ2h0O1xuXG4gICAgaWYgKHdpZHRoID4gaGVpZ2h0KSB7XG4gICAgICAgIGlmICh3aWR0aCA+IE1BWF9XSURUSCkge1xuICAgICAgICAgICAgaGVpZ2h0ID0gaGVpZ2h0ICogKE1BWF9XSURUSCAvIHdpZHRoKTtcbiAgICAgICAgICAgIHdpZHRoID0gTUFYX1dJRFRIO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGhlaWdodCA+IE1BWF9IRUlHSFQpIHtcbiAgICAgICAgICAgIHdpZHRoID0gd2lkdGggKiAoTUFYX0hFSUdIVCAvIGhlaWdodCk7XG4gICAgICAgICAgICBoZWlnaHQgPSBNQVhfSEVJR0hUO1xuICAgICAgICB9XG4gICAgfVxuICAgIHdpZHRoID0gTWF0aC5yb3VuZCh3aWR0aCk7XG4gICAgaGVpZ2h0ID0gTWF0aC5yb3VuZChoZWlnaHQpO1xuXG4gICAgY2FudmFzLndpZHRoID0gd2lkdGg7XG4gICAgY2FudmFzLmhlaWdodCA9IGhlaWdodDtcbiAgICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcbiAgICBjdHguZHJhd0ltYWdlKGltZywgMCwgMCwgd2lkdGgsIGhlaWdodCk7XG5cbiAgICBpbWFnZUltYWdlRGF0YSA9IGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgd2lkdGgsIGhlaWdodCk7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgICBjb25zdCB0ID0gYXdhaXQgb3J0LlRlbnNvci5mcm9tSW1hZ2UoaW1hZ2VJbWFnZURhdGEsIG9wdGlvbnMgPSB7IHJlc2l6ZWRXaWR0aDogTU9ERUxfV0lEVEgsIHJlc2l6ZWRIZWlnaHQ6IE1PREVMX0hFSUdIVCB9KTtcbiAgICBjb25zdCBmZWVkID0geyBcImlucHV0X2ltYWdlXCI6IHQgfTtcbiAgICBjb25zdCBzID0gYXdhaXQgc2Vzc1swXTtcblxuICAgIGNvbnN0IHN0YXJ0ID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gICAgaW1hZ2VfZW1iZWRkaW5ncyA9IHMucnVuKGZlZWQpO1xuICAgIGltYWdlX2VtYmVkZGluZ3MudGhlbigoKSA9PiB7XG4gICAgICAgIGVuY29kZXJfbGF0ZW5jeS5pbm5lclRleHQgPSBgJHsocGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydCkudG9GaXhlZCgxKX1tc2A7XG4gICAgICAgIGNhbnZhcy5zdHlsZS5jdXJzb3IgPSBcImRlZmF1bHRcIjtcbiAgICB9KTtcbiAgICBmaWxlaW4uZGlzYWJsZWQgPSBmYWxzZTtcbn1cblxuXG4vKipcbiAqIGZldGNoIGFuZCBjYWNoZSB1cmxcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZmV0Y2hBbmRDYWNoZSh1cmwpIHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBjYWNoZSA9IGF3YWl0IGNhY2hlcy5vcGVuKFwib25ueFwiKTtcbiAgICAgICAgaWYgKGNvbmZpZy5jbGVhcl9jYWNoZSkge1xuICAgICAgICAgICAgY2FjaGUuZGVsZXRlKHVybCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGNhY2hlZFJlc3BvbnNlID0gYXdhaXQgY2FjaGUubWF0Y2godXJsKTtcbiAgICAgICAgaWYgKGNhY2hlZFJlc3BvbnNlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgYXdhaXQgY2FjaGUuYWRkKHVybCk7XG4gICAgICAgICAgICBjYWNoZWRSZXNwb25zZSA9IGF3YWl0IGNhY2hlLm1hdGNoKHVybCk7XG4gICAgICAgICAgICBsb2coYCR7dXJsfSAoZnJvbSBuZXR3b3JrKWApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbG9nKGAke3VybH0gKGZyb20gY2FjaGUpYCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IGNhY2hlZFJlc3BvbnNlLmFycmF5QnVmZmVyKCk7XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxvZyhgJHt1cmx9IChmcm9tIG5ldHdvcmspYCk7XG4gICAgICAgIHJldHVybiBhd2FpdCBmZXRjaCh1cmwpLnRoZW4ocmVzcG9uc2UgPT4gcmVzcG9uc2UuYXJyYXlCdWZmZXIoKSk7XG4gICAgfVxufVxuXG4vKlxuICogbG9hZCBlbmNvZGVyIGFuZCBkZWNvZGVyIHNlcXVlbnRpYWxseVxuICovXG5hc3luYyBmdW5jdGlvbiBsb2FkX21vZGVsKG1vZGVsLCBpZHgsIGltZykge1xuICAgIGxldCBwcm92aWRlciA9IGNvbmZpZy5wcm92aWRlcjtcblxuICAgIHN3aXRjaCAocHJvdmlkZXIpIHtcbiAgICAgICAgY2FzZSBcIndlYm5uXCI6XG4gICAgICAgICAgICBpZiAoIShcIm1sXCIgaW4gbmF2aWdhdG9yKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIndlYm5uIGlzIE5PVCBzdXBwb3J0ZWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwcm92aWRlciA9IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBcIndlYm5uXCIsXG4gICAgICAgICAgICAgICAgZGV2aWNlVHlwZTogY29uZmlnLmRldmljZSxcbiAgICAgICAgICAgICAgICBwb3dlclByZWZlcmVuY2U6ICdkZWZhdWx0J1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwid2ViZ3B1XCI6XG4gICAgICAgICAgICBpZiAoIW5hdmlnYXRvci5ncHUpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ3ZWJncHUgaXMgTk9UIHN1cHBvcnRlZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNvbnN0IG9wdCA9IHsgZXhlY3V0aW9uUHJvdmlkZXJzOiBbcHJvdmlkZXJdIH07XG5cbiAgICBmZXRjaEFuZENhY2hlKG1vZGVsW2lkeF0pLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgc2Vzc1tpZHhdID0gb3J0LkluZmVyZW5jZVNlc3Npb24uY3JlYXRlKGRhdGEsIG9wdCk7XG4gICAgICAgIHNlc3NbaWR4XS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIGxvZyhgJHttb2RlbFtpZHhdfSBsb2FkZWQuYCk7XG4gICAgICAgICAgICBpZiAoaWR4ID09IDApIHtcbiAgICAgICAgICAgICAgICBsb2FkX21vZGVsKG1vZGVsLCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgKGUpID0+IHtcbiAgICAgICAgICAgIGxvZyhgJHttb2RlbFtpZHhdfSBmYWlsZWQgd2l0aCAke2V9LmApO1xuICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChpbWcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaGFuZGxlSW1hZ2UoaW1nKTtcbiAgICAgICAgfVxuICAgIH0pXG59XG5cbmFzeW5jIGZ1bmN0aW9uIG1haW4oKSB7XG4gICAgY29uc3QgbW9kZWwgPSBNT0RFTF9NQVBbY29uZmlnLm1vZGVsXTtcblxuICAgIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiaW1nX2NhbnZhc1wiKTtcbiAgICBjYW52YXMuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUNsaWNrKTtcbiAgICBjYW52YXMuc3R5bGUuY3Vyc29yID0gXCJ3YWl0XCI7XG5cbiAgICBmaWxlaW4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImZpbGUtaW5cIik7XG4gICAgZGVjb2Rlcl9sYXRlbmN5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJkZWNvZGVyX2xhdGVuY3lcIik7XG5cbiAgICBsZXQgaW1nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJvcmlnaW5hbC1pbWFnZVwiKTtcblxuICAgIGxvYWRfbW9kZWwobW9kZWwsIDAsIGltZykudGhlbigoKSA9PiB7fSwgKGUpID0+IHtcbiAgICAgICAgbG9nKGUpO1xuICAgIH0pO1xuXG4gICAgLy8gaW1hZ2UgdXBsb2FkXG4gICAgZmlsZWluLm9uY2hhbmdlID0gZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICBsZXQgdGFyZ2V0ID0gZXZ0LnRhcmdldCB8fCB3aW5kb3cuZXZlbnQuc3JjLCBmaWxlcyA9IHRhcmdldC5maWxlcztcbiAgICAgICAgaWYgKEZpbGVSZWFkZXIgJiYgZmlsZXMgJiYgZmlsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBsZXQgZmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgICAgICBmaWxlUmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICBpbWcub25sb2FkID0gKCkgPT4gaGFuZGxlSW1hZ2UoaW1nKTtcbiAgICAgICAgICAgICAgICBpbWcuc3JjID0gZmlsZVJlYWRlci5yZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaWxlUmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZXNbMF0pO1xuICAgICAgICB9XG4gICAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaGFzRnAxNigpIHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBhZGFwdGVyID0gYXdhaXQgbmF2aWdhdG9yLmdwdS5yZXF1ZXN0QWRhcHRlcigpXG4gICAgICAgIHJldHVybiBhZGFwdGVyLmZlYXR1cmVzLmhhcygnc2hhZGVyLWYxNicpXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG59XG5cbmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJET01Db250ZW50TG9hZGVkXCIsICgpID0+IHsgXG4gICAgaGFzRnAxNigpLnRoZW4oKGZwMTYpID0+IHtcbiAgICAgICAgaWYgKGZwMTYpIHtcbiAgICAgICAgICAgIG1haW4oKTsgXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsb2coXCJZb3VyIEdQVSBvciBCcm93c2VyIGRvZXNuJ3Qgc3VwcG9ydCB3ZWJncHUvZjE2XCIpO1xuICAgICAgICB9XG4gICAgfSk7XG59KTtcbiJdLCJuYW1lcyI6WyJyb290IiwiZmFjdG9yeSIsImV4cG9ydHMiLCJtb2R1bGUiLCJkZWZpbmUiLCJhbWQiLCJhIiwiaSIsInNlbGYiLCJFbiIsImFyIiwiRnQiLCJPbiIsImppIiwiWWkiLCJpciIsIkFlIiwiWGkiLCJRaSIsIkFhIiwiZW8iLCJ0byIsInJvIiwibm8iLCJGciIsIlJuIiwiaW8iLCJvbyIsInVvIiwibG8iLCJhdCIsIlplIiwicXIiLCJwbyIsImR0IiwiY3QiLCJNbiIsIm1vIiwiRG4iLCJibyIsIkNhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJCZCIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIk1kIiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsIkRkIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJRIiwiZSIsInQiLCJiciIsIm5yIiwiciIsImdldCIsImVudW1lcmFibGUiLCJHdCIsImNhbGwiLCJ6ZCIsInZhbHVlIiwia24iLCJNYXAiLCJpbml0IiwiY3JlYXRlSW5mZXJlbmNlU2Vzc2lvbkhhbmRsZXIiLCJUeXBlRXJyb3IiLCJzZXQiLCJiYWNrZW5kIiwicHJpb3JpdHkiLCJFcnJvciIsImluZGV4T2YiLCJzcGxpY2UiLCJzIiwibGVuZ3RoIiwicHVzaCIsImFzeW5jIiwiaW5pdGlhbGl6ZWQiLCJhYm9ydGVkIiwiaW5pdFByb21pc2UiLCJvIiwibmFtZSIsImVyciIsIm1hcCIsImpvaW4iLCJxaSIsIktpIiwiSWEiLCJ3YXNtIiwid2ViZ2wiLCJ3ZWJncHUiLCJ2ZXJzaW9ucyIsImNvbW1vbiIsImxvZ0xldmVsIiwiWmkiLCJKaSIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsIk9mZnNjcmVlbkNhbnZhcyIsIndpZHRoIiwiZGltcyIsImhlaWdodCIsImdldENvbnRleHQiLCJ0ZW5zb3JMYXlvdXQiLCJwIiwibSIsImZvcm1hdCIsImMiLCJub3JtIiwibWVhbiIsImJpYXMiLCJsIiwiZyIsImIiLCJ3IiwiJCIsIngiLCJUIiwiQyIsImRhdGEiLCJTIiwiRSIsIk8iLCJmaWxsU3R5bGUiLCJmaWxsUmVjdCIsInRvRGF0YVVSTCIsImNyZWF0ZUltYWdlRGF0YSIsIlUiLCJhbyIsIlBuIiwidGVuc29yRm9ybWF0IiwiRmxvYXQzMkFycmF5IiwiSFRNTEltYWdlRWxlbWVudCIsIkltYWdlRGF0YSIsIkltYWdlQml0bWFwIiwiSFRNTENhbnZhc0VsZW1lbnQiLCJyZXNpemVkSGVpZ2h0IiwicmVzaXplZFdpZHRoIiwiZHJhd0ltYWdlIiwiZ2V0SW1hZ2VEYXRhIiwiUHJvbWlzZSIsIkltYWdlIiwiY3Jvc3NPcmlnaW4iLCJzcmMiLCJvbmxvYWQiLCJwdXRJbWFnZURhdGEiLCJkb3dubG9hZCIsImRpc3Bvc2UiLCJsb2NhdGlvbiIsInR5cGUiLCJ0ZXh0dXJlIiwiZGF0YVR5cGUiLCJncHVCdWZmZXIiLCJzbyIsIlVpbnQ4QXJyYXkiLCJJbnQ4QXJyYXkiLCJVaW50MTZBcnJheSIsIkludDE2QXJyYXkiLCJJbnQzMkFycmF5IiwiRmxvYXQ2NEFycmF5IiwiVWludDMyQXJyYXkiLCJCaWdJbnQ2NEFycmF5IiwiZnJvbSIsIkJpZ1VpbnQ2NEFycmF5IiwiY28iLCJOdW1iZXIiLCJpc1NhZmVJbnRlZ2VyIiwiUmFuZ2VFcnJvciIsImNvbnN0cnVjdG9yIiwidGhpcyIsImRhdGFMb2NhdGlvbiIsImNwdURhdGEiLCJncHVUZXh0dXJlRGF0YSIsImRvd25sb2FkZXIiLCJkaXNwb3NlciIsImdwdUJ1ZmZlckRhdGEiLCJBcnJheSIsImlzQXJyYXkiLCJCaWdJbnQiLCJzaXplIiwiZnJvbUltYWdlIiwiZnJvbVRleHR1cmUiLCJmcm9tR3B1QnVmZmVyIiwiZnJvbVBpbm5lZEJ1ZmZlciIsInRvSW1hZ2VEYXRhIiwiZW5zdXJlVmFsaWQiLCJnZXREYXRhIiwiaXNEb3dubG9hZGluZyIsInJlc2hhcGUiLCJCbiIsIlRhIiwidHJhY2UiLCJjb25zb2xlIiwidGltZVN0YW1wIiwic3RhY2siLCJzcGxpdCIsImluY2x1ZGVzIiwidHJpbSIsImZvIiwiaGFuZGxlciIsInJ1biIsIm91dHB1dE5hbWVzIiwiaW5wdXROYW1lcyIsInJlbGVhc2UiLCJjcmVhdGUiLCJBcnJheUJ1ZmZlciIsIlNoYXJlZEFycmF5QnVmZmVyIiwiYnl0ZUxlbmd0aCIsImV4ZWN1dGlvblByb3ZpZGVycyIsInN0YXJ0UHJvZmlsaW5nIiwiZW5kUHJvZmlsaW5nIiwiaG8iLCJnbyIsInlvIiwiaGFzT3B0aW1pemVyTW9kZWwiLCJoYXNFdmFsTW9kZWwiLCJ0cmFpbmluZ0lucHV0TmFtZXMiLCJ0cmFpbmluZ091dHB1dE5hbWVzIiwiZXZhbElucHV0TmFtZXMiLCJldmFsT3V0cHV0TmFtZXMiLCJldmFsTW9kZWwiLCJvcHRpbWl6ZXJNb2RlbCIsImNyZWF0ZVRyYWluaW5nU2Vzc2lvbkhhbmRsZXIiLCJjaGVja3BvaW50U3RhdGUiLCJ0cmFpbk1vZGVsIiwidHlwZU5hcnJvd2luZ0ZvclJ1blN0ZXAiLCJjb252ZXJ0SGFuZGxlclJldHVyblR5cGVUb01hcE9mVGVuc29ycyIsImxhenlSZXNldEdyYWQiLCJydW5UcmFpblN0ZXAiLCJydW5PcHRpbWl6ZXJTdGVwIiwicnVuRXZhbFN0ZXAiLCJnZXRQYXJhbWV0ZXJzU2l6ZSIsImxvYWRQYXJhbWV0ZXJzQnVmZmVyIiwiZ2V0Q29udGlndW91c1BhcmFtZXRlcnMiLCJ2byIsIkVhIiwiSW5mZXJlbmNlU2Vzc2lvbiIsIlRSQUNFIiwiVFJBQ0VfRlVOQ19CRUdJTiIsIlRSQUNFX0ZVTkNfRU5EIiwiVGVuc29yIiwiVHJhaW5pbmdTZXNzaW9uIiwiZW52IiwicmVnaXN0ZXJCYWNrZW5kIiwiYnQiLCJPYSIsImNyZWF0ZVJlYWRTdHJlYW0iLCIkbyIsInJlYWRGaWxlIiwiV2QiLCJyZWFkRmlsZVN5bmMiLCJOZCIsImthIiwiUGEiLCJWZCIsIlJhIiwieG8iLCJTbyIsIkJhIiwiX28iLCJjdXJyZW50U2NyaXB0IiwiX19maWxlbmFtZSIsInJlYWR5IiwidSIsImYiLCJtb3VudEV4dGVybmFsRGF0YSIsImdiIiwidW5tb3VudEV4dGVybmFsRGF0YSIsImpzZXBJbml0IiwieSIsIl8iLCJBIiwiTSIsIkgiLCJYIiwiRmIiLCJ2YiIsInhiIiwib2IiLCJ3YiIsIlNhIiwieWIiLCJ6YiIsImoiLCJxIiwibmUiLCJtZSIsIiRlIiwiZXQiLCJQIiwib2UiLCJjciIsInJlc29sdmUiLCJyZWplY3QiLCJmYiIsIkFiIiwiZXJyb3JzIiwiZmx1c2giLCJhbGwiLCJmaWx0ZXIiLCJfT3J0Q3JlYXRlU2Vzc2lvbiIsIl9PcnRSdW4iLCJfT3J0UnVuV2l0aEJpbmRpbmciLCJfT3J0QmluZElucHV0IiwianNlcFJlZ2lzdGVyQnVmZmVyIiwicmVnaXN0ZXJCdWZmZXIiLCJqc2VwVW5yZWdpc3RlckJ1ZmZlcnMiLCJ1bnJlZ2lzdGVyQnVmZmVycyIsImpzZXBHZXRCdWZmZXIiLCJnZXRCdWZmZXIiLCJqc2VwQ3JlYXRlRG93bmxvYWRlciIsImNyZWF0ZURvd25sb2FkZXIiLCJqc2VwT25SdW5TdGFydCIsIm9uUnVuU3RhcnQiLCJhc3NpZ24iLCJ3aW5kb3ciLCJpbXBvcnRTY3JpcHRzIiwicHJvY2VzcyIsIm5vZGUiLCJkaXJuYW1lIiwiX19kaXJuYW1lIiwiaWUiLCJVUkwiLCJub3JtYWxpemUiLCJidWZmZXIiLCJ0aGlzUHJvZ3JhbSIsImFyZ3YiLCJyZXBsYWNlIiwic2xpY2UiLCJleGl0Q29kZSIsImluc3BlY3QiLCJocmVmIiwic3Vic3RyIiwibGFzdEluZGV4T2YiLCJYTUxIdHRwUmVxdWVzdCIsIm9wZW4iLCJzZW5kIiwicmVzcG9uc2VUZXh0IiwicmVzcG9uc2VUeXBlIiwicmVzcG9uc2UiLCJzdGF0dXMiLCJvbmVycm9yIiwibG9nIiwiYmluZCIsImVycm9yIiwiV2ViQXNzZW1ibHkiLCJHZSIsIkQiLCJWIiwiWSIsInNlIiwiQiIsInRlIiwia2UiLCJPZSIsImVlIiwiYmUiLCJVZSIsIkhFQVA4IiwiSEVBUDE2IiwiSEVBUFU4IiwiSEVBUFUxNiIsIkhFQVAzMiIsIkhFQVBVMzIiLCJIRUFQRjMyIiwiSEVBUEY2NCIsIkhFQVA2NCIsIkhFQVBVNjQiLCJwZSIsInllIiwiZGUiLCJ2ZSIsIldlIiwiQmUiLCJSdW50aW1lRXJyb3IiLCJoZSIsIkYiLCJzdGFydHNXaXRoIiwiSmUiLCJsb2NhdGVGaWxlIiwib3QiLCJGZSIsImZldGNoIiwiY3JlZGVudGlhbHMiLCJ0aGVuIiwib2siLCJhcnJheUJ1ZmZlciIsImNhdGNoIiwiUmUiLCJpbnN0YW50aWF0ZSIsIk10IiwicWUiLCJzdWJzdHJpbmciLCJzdWJhcnJheSIsImFscGhhIiwiYmV0YSIsIm1pbiIsIm1heCIsImtlZXBEaW1zIiwibm9vcFdpdGhFbXB0eUF4ZXMiLCJheGVzIiwicGVybSIsImF1dG9QYWQiLCJkaWxhdGlvbnMiLCJncm91cCIsImtlcm5lbF9zaGFwZSIsInBhZHMiLCJzdHJpZGVzIiwid0lzQ29uc3QiLCJvdXRwdXRQYWRkaW5nIiwib3V0cHV0U2hhcGUiLCJhY3RpdmF0aW9uIiwia2VybmVsU2hhcGUiLCJJZSIsImF1dG9fcGFkIiwiY2VpbF9tb2RlIiwiY291bnRfaW5jbHVkZV9wYWQiLCJzdG9yYWdlX29yZGVyIiwidHJhbnNBIiwidHJhbnNCIiwic2VsZWN0TGFzdEluZGV4IiwiYXhpcyIsIm51bU91dHB1dHMiLCJzcGxpdFNpemVzIiwiYW50aWFsaWFzIiwiY29vcmRpbmF0ZVRyYW5zZm9ybU1vZGUiLCJjdWJpY0NvZWZmQSIsImV4Y2x1ZGVPdXRzaWRlIiwiZXh0cmFwb2xhdGlvblZhbHVlIiwia2VlcEFzcGVjdFJhdGlvUG9saWN5IiwibW9kZSIsIm5lYXJlc3RNb2RlIiwic3RhcnRzIiwiZW5kcyIsImVwc2lsb24iLCJlcXVhdGlvbiIsIm1vbWVudHVtIiwic3BhdGlhbCIsInRyYWluaW5nTW9kZSIsImV4Y2x1c2l2ZSIsInJldmVyc2UiLCJudW1IZWFkcyIsImlzVW5pZGlyZWN0aW9uYWwiLCJtYXNrRmlsdGVyVmFsdWUiLCJzY2FsZSIsImRvUm90YXJ5IiwicWt2SGlkZGVuU2l6ZXMiLCJwYXN0UHJlc2VudFNoYXJlQnVmZmVyIiwid19pc19jb25zdCIsImFjdGl2YXRpb25fcGFyYW1zIiwiS3QiLCJtZXNzYWdlIiwiTnQiLCJjYiIsInJiIiwicWIiLCJrYiIsImpiIiwibm4iLCJndCIsInhyIiwiVGV4dERlY29kZXIiLCJWdCIsImRlY29kZSIsIlN0cmluZyIsImZyb21DaGFyQ29kZSIsIkR0IiwiY2hhckNvZGVBdCIsIkN0IiwiQ3IiLCJ0b1N0cmluZyIsInN0IiwiSXIiLCJadCIsIkFyIiwiS2UiLCJ0YiIsImZvckVhY2giLCJhbiIsIlRyIiwiRXIiLCIkYSIsIm5iIiwiUGUiLCJPciIsInBiIiwid2UiLCJ1dCIsImxyIiwiZnJvbVdpcmVUeXBlIiwia3IiLCJmYSIsIlByIiwibWEiLCJmZSIsImRyIiwib24iLCJoYSIsInNuIiwiUnIiLCJlciIsImx0IiwiQnIiLCJ0b1dpcmVUeXBlIiwiWHQiLCJ3dCIsIk1yIiwiSHQiLCJEciIsInpyIiwibG4iLCJkbiIsIlVyIiwiJHQiLCJCcm93c2VyIiwibGIiLCJzYiIsInJlc3VtZSIsInVlIiwiTHQiLCJwbiIsInBhdXNlIiwidHIiLCJodCIsIm9uRXhpdCIsImZuIiwibnQiLCJRdCIsIm1uIiwicHIiLCJXciIsImdsb2JhbFRoaXMiLCJGdW5jdGlvbiIsImZyIiwidHQiLCJobiIsInl0IiwiVnIiLCJtciIsInJ0IiwiSnQiLCJZZSIsIlVTRVIiLCJMT0dOQU1FIiwiUEFUSCIsIlBXRCIsIkhPTUUiLCJMQU5HIiwibmF2aWdhdG9yIiwibGFuZ3VhZ2VzIiwiZ24iLCJ5biIsImJuIiwid24iLCJXdCIsIlV0IiwiZ2V0RnVsbFllYXIiLCJnZXRNb250aCIsImdldERhdGUiLCJnZXREYXkiLCJEYXRlIiwiYWIiLCJiYiIsImdldFRpbWUiLCJzZXREYXRlIiwic2V0TW9udGgiLCJzZXRGdWxsWWVhciIsIkRiIiwiQ2IiLCJoYiIsIm1iIiwiaWIiLCJXYSIsIkdiIiwiQmIiLCJFYiIsIlJlZ0V4cCIsIk1hdGgiLCJmbG9vciIsImFicyIsInZuIiwiJG4iLCJociIsIkJpbmRpbmdFcnJvciIsInN1cGVyIiwiSW50ZXJuYWxFcnJvciIsImhhcyIsInBvcCIsImNvdW50X2VtdmFsX2hhbmRsZXMiLCJ5YSIsImlhIiwiYmEiLCJjYSIsIlciLCJhYSIsIk4iLCJHIiwiYXJnUGFja0FkdmFuY2UiLCJyZWFkVmFsdWVGcm9tUG9pbnRlciIsImViIiwiZ2EiLCJuIiwiVWludDhDbGFtcGVkQXJyYXkiLCJ6IiwidWIiLCJkYSIsImsiLCJOciIsInNoaWZ0IiwiZGVsZXRlT2JqZWN0IiwiYXBwbHkiLCJtdCIsImQiLCJoIiwiTmFOIiwiZ2V0VVRDU2Vjb25kcyIsImdldFVUQ01pbnV0ZXMiLCJnZXRVVENIb3VycyIsImdldFVUQ0RhdGUiLCJnZXRVVENNb250aCIsImdldFVUQ0Z1bGxZZWFyIiwiZ2V0VVRDRGF5IiwiVVRDIiwiZ2V0U2Vjb25kcyIsImdldE1pbnV0ZXMiLCJnZXRIb3VycyIsImdldFRpbWV6b25lT2Zmc2V0Iiwic2V0VGltZSIsImdldFllYXIiLCJpc05hTiIsIl9uIiwiUiIsIksiLCJ0b1RpbWVTdHJpbmciLCJtYXRjaCIsInYiLCJJIiwibm93IiwiTCIsInBlcmZvcm1hbmNlIiwiSiIsImdyb3ciLCJaIiwiZWEiLCJlbnRyaWVzIiwiYXJndW1lbnRzIiwiU24iLCJGaWJlcnMiLCJIYiIsInVuIiwiVmEiLCJ4biIsImphIiwidW5zaGlmdCIsImNsZWFySW50ZXJ2YWwiLCJpbnN0YW50aWF0ZVdhc20iLCJpbnN0YW50aWF0ZVN0cmVhbWluZyIsIkJ0IiwiaW5zdGFuY2UiLCJfT3J0SW5pdCIsImxhIiwiX09ydEdldExhc3RFcnJvciIsIl9PcnRDcmVhdGVTZXNzaW9uT3B0aW9ucyIsIm5hIiwiX09ydEFwcGVuZEV4ZWN1dGlvblByb3ZpZGVyIiwib2EiLCJfT3J0QWRkRnJlZURpbWVuc2lvbk92ZXJyaWRlIiwicGEiLCJfT3J0QWRkU2Vzc2lvbkNvbmZpZ0VudHJ5IiwicWEiLCJfT3J0UmVsZWFzZVNlc3Npb25PcHRpb25zIiwicmEiLCJzYSIsIl9PcnRSZWxlYXNlU2Vzc2lvbiIsInRhIiwiX09ydEdldElucHV0T3V0cHV0Q291bnQiLCJ1YSIsIl9PcnRHZXRJbnB1dE5hbWUiLCJ2YSIsIl9PcnRHZXRPdXRwdXROYW1lIiwid2EiLCJfT3J0RnJlZSIsInhhIiwiX09ydENyZWF0ZVRlbnNvciIsIl9PcnRHZXRUZW5zb3JEYXRhIiwiemEiLCJfT3J0UmVsZWFzZVRlbnNvciIsIl9PcnRDcmVhdGVSdW5PcHRpb25zIiwiX09ydEFkZFJ1bkNvbmZpZ0VudHJ5IiwiX09ydFJlbGVhc2VSdW5PcHRpb25zIiwiRGEiLCJfT3J0Q3JlYXRlQmluZGluZyIsIkZhIiwiX09ydEJpbmRPdXRwdXQiLCJHYSIsIl9PcnRDbGVhckJvdW5kT3V0cHV0cyIsIkhhIiwiX09ydFJlbGVhc2VCaW5kaW5nIiwiSmEiLCJLYSIsIl9PcnRFbmRQcm9maWxpbmciLCJMYSIsIl9Kc2VwT3V0cHV0IiwiTWEiLCJfSnNlcEdldE5vZGVOYW1lIiwiTmEiLCJ6dCIsIl9tYWxsb2MiLCJfZnJlZSIsIlFhIiwiZ3IiLCJ5ciIsIlVhIiwiSHIiLCJYYSIsIllhIiwiWmEiLCJfYSIsIkxyIiwicHJlUnVuIiwiY2FsbGVkUnVuIiwiX19fc3RhcnRfZW1fanMiLCJfX19zdG9wX2VtX2pzIiwic3RhY2tBbGxvYyIsInN0YWNrU2F2ZSIsInN0YWNrUmVzdG9yZSIsIlVURjhUb1N0cmluZyIsInN0cmluZ1RvVVRGOCIsImxlbmd0aEJ5dGVzVVRGOCIsIkNvIiwiSW8iLCJBbyIsImNwdXMiLCJIZCIsIkJvIiwiR2QiLCJ6biIsIlJvIiwiRmQiLCJxZCIsImpkIiwiTW8iLCJOZSIsIlZlIiwianIiLCJNZSIsIkRvIiwiS2QiLCJZZCIsIlpkIiwiWGQiLCJVbyIsInB0IiwiS3IiLCJXbiIsIllyIiwiTm4iLCJaciIsIlFkIiwiSmQiLCJObyIsIlZvIiwiSG8iLCJlYyIsIkRlIiwiTG8iLCJIbiIsInRjIiwiRm8iLCJqbyIsInhlIiwiQXQiLCJvciIsIkxuIiwiR24iLCJGbiIsIkhlIiwiX3QiLCJMZSIsIlFlIiwiU3QiLCJmdCIsImNlIiwicW4iLCJZbyIsIndyIiwibmMiLCJabyIsImFjIiwiaWMiLCJ4dCIsIlhvIiwiUW8iLCJvYyIsInNjIiwidWMiLCJsYyIsImRjIiwiY2MiLCJwYyIsImZjIiwibWMiLCJoYyIsIlR0IiwiSm8iLCJlcyIsInRzIiwicnMiLCJucyIsImFzIiwiaXMiLCJvcyIsInNzIiwidXMiLCJFdCIsImdjIiwiS24iLCJPdCIsInljIiwiYmMiLCJ2YyIsIndjIiwiJGMiLCJfYyIsIlNjIiwieGMiLCJDYyIsIkljIiwia3QiLCJkcyIsImNzIiwicHMiLCJmcyIsIm1zIiwiaHMiLCJncyIsInlzIiwiYnMiLCJ2cyIsIndzIiwiJHMiLCJfcyIsIkFjIiwiVGMiLCJFYyIsIk9jIiwiWW4iLCJrYyIsInhzIiwiUGMiLCJSYyIsIkJjIiwiQ3MiLCJNYyIsIkRjIiwiQXMiLCJ6YyIsIkVlIiwiRXMiLCJPcyIsImtzIiwiUHMiLCJScyIsIkJzIiwiTXMiLCJEcyIsInpzIiwiVWMiLCJVcyIsIldzIiwiTnMiLCJWcyIsIlpuIiwiSHMiLCJYbiIsIkxzIiwiR3MiLCJGcyIsInFzIiwianMiLCJLcyIsIllzIiwiWnMiLCJYcyIsIlFzIiwiSnMiLCJldSIsInR1IiwicnUiLCJudSIsImF1IiwiaXUiLCJvdSIsInN1IiwiTmMiLCJWYyIsInV1IiwiSGMiLCJMYyIsIlB0IiwiZHUiLCJjdSIsInB1IiwiZnUiLCJtdSIsImh1IiwiZ3UiLCJ5dSIsImJ1IiwidnUiLCJGYyIsInFjIiwiamMiLCJLYyIsIiR1IiwiX3UiLCJSdCIsIlFuIiwiamUiLCJKbiIsIlljIiwiWmMiLCJYciIsInh1IiwiWGMiLCJRciIsIlFjIiwiSmMiLCJDdSIsInJpIiwiZXAiLCJUdSIsImVpIiwiRXUiLCJ0cCIsIk91IiwiYWkiLCJycCIsIm5wIiwiaWkiLCJhcCIsImt1IiwiaXAiLCJvaSIsIm9wIiwic3AiLCJ1cCIsIkJ1IiwiTXUiLCJscCIsImRwIiwiY3AiLCJwcCIsIkR1IiwiZnAiLCJVdSIsIld1Iiwic2kiLCJWdSIsImhwIiwidWkiLCJsaSIsIkh1IiwiZ3AiLCJMdSIsIkd1IiwieXAiLCJxdSIsImJwIiwidnAiLCJqdSIsIndwIiwiJHAiLCJZdSIsIlp1IiwiX3AiLCJTcCIsIlF1IiwiSnUiLCJ4cCIsIkNwIiwidGwiLCJybCIsIklwIiwiQXAiLCJUcCIsImFsIiwiRXAiLCJPcCIsIm9sIiwia3AiLCJsbCIsInVsIiwiUHAiLCJkaSIsImRsIiwiUnAiLCJCcCIsIk1wIiwiRHAiLCJ6cCIsIlVwIiwiV3AiLCJOcCIsInBsIiwibWwiLCJobCIsImdsIiwieWwiLCJWcCIsIkhwIiwiYmwiLCJ2bCIsIndsIiwiJGwiLCJfbCIsIlNsIiwieGwiLCJDbCIsIklsIiwiQWwiLCJUbCIsIkVsIiwiR3AiLCJGcCIsImtsIiwicXAiLCJqcCIsIktwIiwiWXAiLCJacCIsIlhwIiwiUXAiLCJKcCIsImVmIiwidGYiLCJyZiIsIlJsIiwibmYiLCJhZiIsIm9mIiwic2YiLCJ1ZiIsIkJsIiwiTWwiLCJsZiIsImRmIiwiemwiLCJjZiIsInBmIiwiV2wiLCJmZiIsIm1mIiwiTmwiLCJWbCIsImhmIiwiZ2YiLCJMbCIsIkdsIiwieWYiLCJiZiIsInZmIiwid2YiLCIkZiIsInFsIiwiamwiLCJZbCIsIl9mIiwiU2YiLCJ4ZiIsIlpsIiwiQ2YiLCJJZiIsIlFsIiwiZWQiLCJBZiIsIlRmIiwiVG8iLCJrbyIsIk9vIiwiRW8iLCJyYyIsIiRiIiwiT2IiLCJhZSIsImdlIiwiU2UiLCJsZSIsIkVOVklST05NRU5UX0lTX1BUSFJFQUQiLCJXb3JrZXIiLCJ3cml0ZVN5bmMiLCJ3YXNtTWVtb3J5IiwiTWVtb3J5IiwiaW5pdGlhbCIsIm1heGltdW0iLCJzaGFyZWQiLCJ1ciIsIll0IiwiVGUiLCJ0ZXJtaW5hdGUiLCJvbm1lc3NhZ2UiLCJQYiIsImNtZCIsInN0YXJ0X3JvdXRpbmUiLCJhcmciLCJWYiIsInB0aHJlYWRfcHRyIiwidW5yZWYiLCJwb3N0TWVzc2FnZSIsIkFuIiwiRGkiLCJVYiIsIkliIiwicmVjZWl2ZU9iamVjdFRyYW5zZmVyIiwidGhyZWFkSW5pdFRMUyIsIlRiIiwic2V0RXhpdFN0YXR1cyIsIlNiIiwibnVtVGhyZWFkcyIsIlJiIiwidGFyZ2V0VGhyZWFkIiwiSW4iLCJ0cmFuc2Zlckxpc3QiLCJ0aHJlYWQiLCJsb2FkZWQiLCJhbGVydCIsInRocmVhZElkIiwidGV4dCIsInRhcmdldCIsImFyZ3MiLCJmaWxlbmFtZSIsImxpbmVubyIsImhhbmRsZXJzIiwidXJsT3JCbG9iIiwibWFpblNjcmlwdFVybE9yQmxvYiIsIndhc21Nb2R1bGUiLCJQVGhyZWFkIiwiTWIiLCJLYiIsImVzdGFibGlzaFN0YWNrU3BhY2UiLCJVaSIsImludm9rZUVudHJ5UG9pbnQiLCJXaSIsImNuIiwiWWIiLCJOYiIsIlFiIiwiQXRvbWljcyIsInN0b3JlIiwiX19lbXNjcmlwdGVuX3RocmVhZF9tYWlsYm94X2F3YWl0IiwiemkiLCJjaGVja01haWxib3giLCJCaSIsIkl0IiwiSGkiLCJKYiIsIlhiIiwicmUiLCJHciIsIk5pIiwiTGkiLCJnaSIsInlpIiwiYmkiLCJ2aSIsIndpIiwiJGkiLCJfaSIsIlNpIiwieGkiLCJDaSIsIklpIiwiQWkiLCJUZCIsIlRpIiwiRWkiLCJPaSIsImtpIiwiRmkiLCJyciIsIkxiIiwiRWQiLCJPZCIsIlBpIiwiQ24iLCJrZCIsIlBkIiwiTWkiLCJaYiIsInNldFRpbWVvdXQiLCJXYiIsInJlZiIsIlJpIiwidGltZU9yaWdpbiIsImhhcmR3YXJlQ29uY3VycmVuY3kiLCJWaSIsImVtc2NyaXB0ZW5fbWFpbl9ydW50aW1lX3RocmVhZF9pZCIsIlJkIiwiX3B0aHJlYWRfc2VsZiIsIl9fZW1zY3JpcHRlbl90bHNfaW5pdCIsIl9fZW1iaW5kX2luaXRpYWxpemVfYmluZGluZ3MiLCJkYiIsIl9fZW1zY3JpcHRlbl90aHJlYWRfaW5pdCIsIl9fZW1zY3JpcHRlbl90aHJlYWRfY3Jhc2hlZCIsIlRuIiwiX19lbXNjcmlwdGVuX3RocmVhZF9leGl0IiwiZHluQ2FsbF9paSIsIkdpIiwic3RhcnRXb3JrZXIiLCJrZWVwUnVudGltZUFsaXZlIiwiRXhpdFN0YXR1cyIsIlBvIiwiem0iLCJMZCIsInZyIiwiY3Jvc3NPcmlnaW5Jc29sYXRlZCIsIndhcm4iLCJNZXNzYWdlQ2hhbm5lbCIsInBvcnQxIiwidmFsaWRhdGUiLCJpbml0VGltZW91dCIsInNpbWQiLCJ3YXNtUGF0aHMiLCJlbmRzV2l0aCIsIkJsb2IiLCJjcmVhdGVPYmplY3RVUkwiLCJyYWNlIiwiVW4iLCJhZGQiLCJ6byIsImxvZ1NldmVyaXR5TGV2ZWwiLCJpc0ludGVnZXIiLCJsb2dWZXJib3NpdHlMZXZlbCIsInRhZyIsImV4dHJhIiwiV2Vha1NldCIsIldvIiwic2Vzc2lvbiIsInVzZV9vcnRfbW9kZWxfYnl0ZXNfZGlyZWN0bHkiLCJzb21lIiwiZW5hYmxlTWVtUGF0dGVybiIsImRldmljZVR5cGUiLCJwb3dlclByZWZlcmVuY2UiLCJwcmVmZXJyZWRMYXlvdXQiLCJncmFwaE9wdGltaXphdGlvbkxldmVsIiwiZXhlY3V0aW9uTW9kZSIsImxvZ0lkIiwib3B0aW1pemVkTW9kZWxGaWxlUGF0aCIsImVuYWJsZUNwdU1lbUFyZW5hIiwiZW5hYmxlUHJvZmlsaW5nIiwiZnJlZURpbWVuc2lvbk92ZXJyaWRlcyIsInplIiwiaGVhZGVycyIsInBhcnNlSW50IiwiYm9keSIsImdldFJlYWRlciIsImNlaWwiLCJkb25lIiwicmVhZCIsImNvZGUiLCJCdWZmZXIiLCJjb25jYXQiLCJxdCIsInRvSVNPU3RyaW5nIiwiR28iLCJWbiIsIktvIiwiZGV2aWNlIiwiY3JlYXRlQnVmZmVyIiwidXNhZ2UiLCJHUFVCdWZmZXJVc2FnZSIsIkNPUFlfRFNUIiwiTUFQX1JFQUQiLCJnZXRDb21tYW5kRW5jb2RlciIsImVuZENvbXB1dGVQYXNzIiwiY29weUJ1ZmZlclRvQnVmZmVyIiwibWFwQXN5bmMiLCJHUFVNYXBNb2RlIiwiUkVBRCIsImdldE1hcHBlZFJhbmdlIiwiZGVzdHJveSIsInN0b3JhZ2VDYWNoZSIsImZyZWVCdWZmZXJzIiwiZnJlZVVuaWZvcm1CdWZmZXJzIiwiYnVmZmVyc0ZvclVwbG9hZGluZ1BlbmRpbmciLCJidWZmZXJzUGVuZGluZyIsImV4dGVybmFsQnVmZmVycyIsInVwbG9hZCIsImJ5dGVPZmZzZXQiLCJvcmlnaW5hbFNpemUiLCJtYXBwZWRBdENyZWF0aW9uIiwiTUFQX1dSSVRFIiwiQ09QWV9TUkMiLCJ1bm1hcCIsImdwdURhdGEiLCJtZW1jcHkiLCJyZWdpc3RlckV4dGVybmFsQnVmZmVyIiwiZGVsZXRlIiwiaWQiLCJ1bnJlZ2lzdGVyRXh0ZXJuYWxCdWZmZXIiLCJTVE9SQUdFIiwiVU5JRk9STSIsInJlZnJlc2hQZW5kaW5nQnVmZmVycyIsIlhlIiwiY2FjaGVLZXkiLCJrZXkiLCJzb3J0IiwiQ2UiLCJjYWxjTWF0TXVsU2hhcGUiLCJjYWxjU2hhcGUiLCJpc1ZhbGlkQnJvYWRjYXN0IiwiZ2V0U2l6ZUZyb21EaW1lbnNpb25SYW5nZSIsInNpemVGcm9tRGltZW5zaW9uIiwic2l6ZVRvRGltZW5zaW9uIiwiY29tcHV0ZVN0cmlkZXMiLCJub3JtYWxpemVBeGlzIiwibm9ybWFsaXplQXhlcyIsInNvcnRCYXNlZE9uUGVybSIsInBhZFNoYXBlIiwiYXJlRXF1YWwiLCJldmVyeSIsImFkanVzdFBvb2xBdHRyaWJ1dGVzIiwiYWRqdXN0UGFkc0Jhc2VkT25BdXRvUGFkIiwiYWRqdXN0UGFkQW5kUmV0dXJuU2hhcGUiLCJjb21wdXRlUG9vbE91dHB1dFNoYXBlIiwiY29tcHV0ZVNoYXBlSGVscGVyIiwiY29tcHV0ZUNvbnZPdXRwdXRTaGFwZSIsImdldFNoYXBlT2ZHZW1tUmVzdWx0IiwiX2UiLCJrZXlzIiwiaW5kaWNlcyIsInN0b3JhZ2UiLCJ0ZW5zb3IiLCJvZmZzZXRUb0luZGljZXMiLCJpbmRpY2VzVG9PZmZzZXQiLCJicm9hZGNhc3RlZEluZGljZXNUb09mZnNldCIsInNldEJ5SW5kaWNlcyIsImdldEJ5SW5kaWNlcyIsImltcGwiLCJ2YWx1ZXMiLCJpbmRpY2VzR2V0IiwicmFuayIsImluZGljZXNTZXQiLCJzZXRCeU9mZnNldCIsImdldEJ5T2Zmc2V0Iiwic2hhcGUiLCJub3JtYWxpemVkRGlzcGF0Y2hHcm91cCIsImludGVybmFsVmFyaWFibGVzIiwidmFyaWFibGVzIiwidW5pZm9ybXMiLCJ2YXJpYWJsZUluZGV4IiwiZ3VhcmRBZ2FpbnN0T3V0T2ZCb3VuZHNXb3JrZ3JvdXBTaXplcyIsIm1haW5TdGFydCIsImFwcGVuZFZhcmlhYmxlVW5pZm9ybXMiLCJkZWNsYXJlVmFyaWFibGUiLCJkZWNsYXJlVmFyaWFibGVzIiwicmVnaXN0ZXJJbnRlcm5hbFZhcmlhYmxlIiwicmVnaXN0ZXJJbnRlcm5hbFZhcmlhYmxlcyIsInJlZ2lzdGVyVW5pZm9ybSIsInJlZ2lzdGVyVW5pZm9ybXMiLCJ1bmlmb3JtRGVjbGFyYXRpb24iLCJhZGRpdGlvbmFsSW1wbGVtZW50YXRpb25zIiwiJHIiLCJzaGFkZXJDYWNoZSIsImhpbnQiLCJpbnB1dERlcGVuZGVuY2llcyIsImdldFJ1bkRhdGEiLCJvdXRwdXRzIiwiZGlzcGF0Y2hHcm91cCIsInByb2dyYW1Vbmlmb3JtcyIsImdldFNoYWRlclNvdXJjZSIsImlucHV0cyIsImNvbXB1dGUiLCJscyIsImpuIiwic3VtIiwicHJvZCIsInN1bVNxdWFyZSIsImxvZ1N1bUV4cCIsImwxIiwibDIiLCJsb2dTdW0iLCJnZXRCaWdJbnQ2NEFycmF5IiwiU3MiLCJiYXRjaFNpemUiLCJzZXF1ZW5jZUxlbmd0aCIsInBhc3RTZXF1ZW5jZUxlbmd0aCIsImt2U2VxdWVuY2VMZW5ndGgiLCJ0b3RhbFNlcXVlbmNlTGVuZ3RoIiwibWF4U2VxdWVuY2VMZW5ndGgiLCJpbnB1dEhpZGRlblNpemUiLCJoaWRkZW5TaXplIiwidkhpZGRlblNpemUiLCJoZWFkU2l6ZSIsInZIZWFkU2l6ZSIsIm1hc2tUeXBlIiwiYnJvYWRjYXN0UmVzUG9zQmlhcyIsInBhc3NQYXN0SW5LdiIsInFrdkZvcm1hdCIsInNxcnQiLCJncHVEYXRhVHlwZSIsIklzIiwib3V0cHV0Q291bnQiLCJ2YWxpZGF0ZUlucHV0Q29udGVudCIsIlRzIiwiZ2V0RmxvYXQzMkFycmF5IiwibHUiLCJ3dSIsInNjYWxhciIsInZlY3RvciIsIlN1IiwianQiLCJjbGlwTWF4IiwiY2xpcE1pbiIsIkpyIiwiSXUiLCJBdSIsInRpIiwibmkiLCJrZXJuZWxDdXN0b21EYXRhIiwid1QiLCJQdSIsIlJ1IiwienUiLCJyZWR1Y2UiLCJmaWxsIiwiTnUiLCJnZXRJbnQzMkFycmF5IiwiRnUiLCJzeW1ib2xUb0luZGljZXMiLCJpbnB1dEluZGV4IiwiYWRkU3ltYm9sIiwiaGFzRWxsaXBzaXMiLCJzeW1ib2xUb0luZm8iLCJsaHMiLCJvdXRwdXREaW1zIiwicHJvY2Vzc1Rlcm0iLCJjb3VudCIsImVsbGlwc2lzRGltcyIsImRpbVZhbHVlIiwicmhzIiwiaW5wdXRJbmRpY2VzIiwiS3UiLCJYdSIsImVsIiwibmwiLCJpbCIsInNsIiwiY2wiLCJmbCIsIk9sIiwiY2VpbE1vZGUiLCJjb3VudEluY2x1ZGVQYWQiLCJzdG9yYWdlT3JkZXIiLCJQbCIsIkRsIiwicm91bmQiLCJNQVhfVkFMVUUiLCJNSU5fVkFMVUUiLCJjdXN0b21EYXRhQnVmZmVyIiwiVWwiLCJIbCIsInNpZ24iLCJGbCIsIktsIiwiWGwiLCJKbCIsInRkIiwicmQiLCJyZXBvIiwiYXR0cmlidXRlc0JvdW5kIiwiZ2V0QXJ0aWZhY3QiLCJzZXRBcnRpZmFjdCIsInByb2dyYW1JbmZvIiwiZ2V0Q29tcHV0ZVBhc3NFbmNvZGVyIiwid3JpdGVUaW1lc3RhbXAiLCJwZW5kaW5nRGlzcGF0Y2hOdW1iZXIiLCJzZXRQaXBlbGluZSIsImNvbXB1dGVQaXBlbGluZSIsImJpbmRpbmciLCJyZXNvdXJjZSIsImNyZWF0ZUJpbmRHcm91cCIsImxheW91dCIsImdldEJpbmRHcm91cExheW91dCIsImxhYmVsIiwic2V0QmluZEdyb3VwIiwiZGlzcGF0Y2hXb3JrZ3JvdXBzIiwibWF4RGlzcGF0Y2hOdW1iZXIiLCJxdWVyeVR5cGUiLCJidWlsZCIsImZlYXR1cmVzIiwiY3JlYXRlU2hhZGVyTW9kdWxlIiwiY3JlYXRlQ29tcHV0ZVBpcGVsaW5lIiwiZW50cnlQb2ludCIsIm5vcm1hbGl6ZURpc3BhdGNoR3JvdXBTaXplIiwibGltaXRzIiwibWF4Q29tcHV0ZVdvcmtncm91cHNQZXJEaW1lbnNpb24iLCJjYnJ0IiwibmQiLCJjdXJyZW50S2VybmVsSWQiLCJjb21tYW5kRW5jb2RlciIsImNvbXB1dGVQYXNzRW5jb2RlciIsInBlbmRpbmdLZXJuZWxzIiwicGVuZGluZ1F1ZXJpZXMiLCJzZXNzaW9uRXh0ZXJuYWxEYXRhTWFwcGluZyIsImN1cnJlbnRLZXJuZWxDdXN0b21EYXRhIiwiaW5pdGlhbGl6ZSIsInJlcXVpcmVkTGltaXRzIiwibWF4Q29tcHV0ZVdvcmtncm91cFN0b3JhZ2VTaXplIiwibWF4U3RvcmFnZUJ1ZmZlckJpbmRpbmdTaXplIiwibWF4QnVmZmVyU2l6ZSIsIm1heENvbXB1dGVJbnZvY2F0aW9uc1Blcldvcmtncm91cCIsIm1heENvbXB1dGVXb3JrZ3JvdXBTaXplWCIsIm1heENvbXB1dGVXb3JrZ3JvdXBTaXplWSIsIm1heENvbXB1dGVXb3JrZ3JvdXBTaXplWiIsInJlcXVpcmVkRmVhdHVyZXMiLCJyZXF1ZXN0RGV2aWNlIiwiZ3B1RGF0YU1hbmFnZXIiLCJwcm9ncmFtTWFuYWdlciIsImtlcm5lbHMiLCJrZXJuZWxQZXJzaXN0ZW50RGF0YSIsImRlYnVnIiwib251bmNhcHR1cmVkZXJyb3IiLCJHUFVWYWxpZGF0aW9uRXJyb3IiLCJzZXRRdWVyeVR5cGUiLCJxdWVyeVNldCIsImNyZWF0ZUNvbW1hbmRFbmNvZGVyIiwidGltZXN0YW1wV3JpdGVzIiwiYmVnaW5uaW5nT2ZQYXNzV3JpdGVJbmRleCIsImVuZE9mUGFzc1dyaXRlSW5kZXgiLCJiZWdpbkNvbXB1dGVQYXNzIiwiZW5kIiwicmVzb2x2ZVF1ZXJ5U2V0IiwicXVlcnlSZXNvbHZlQnVmZmVyIiwicXVldWUiLCJzdWJtaXQiLCJmaW5pc2giLCJrZXJuZWxJZCIsImtlcm5lbFR5cGUiLCJrZXJuZWxOYW1lIiwicHJvZ3JhbU5hbWUiLCJpbnB1dFRlbnNvclZpZXdzIiwib3V0cHV0VGVuc29yVmlld3MiLCJxdWVyeVRpbWVCYXNlIiwicHJvZmlsaW5nIiwib25kYXRhIiwidmVyc2lvbiIsImlucHV0c01ldGFkYXRhIiwib3V0cHV0c01ldGFkYXRhIiwic3RhcnRUaW1lIiwiZW5kVGltZSIsInRlbXBvcmFyeURhdGEiLCJ3cml0ZUJ1ZmZlciIsIm9mZnNldCIsImFsbG9jIiwiZnJlZSIsImNyZWF0ZUtlcm5lbCIsImtlcm5lbEVudHJ5IiwiYXR0cmlidXRlcyIsInJlbGVhc2VLZXJuZWwiLCJjb21wdXRlS2VybmVsIiwicHVzaEVycm9yU2NvcGUiLCJwb3BFcnJvclNjb3BlIiwiY3JlYXRlUXVlcnlTZXQiLCJRVUVSWV9SRVNPTFZFIiwiYWQiLCJFZiIsImVuIiwiY2kiLCJPZiIsInNkIiwidWQiLCJ0biIsImtmIiwicGkiLCJsZCIsImRkIiwib2QiLCJjZCIsInBkIiwiZmQiLCJzciIsInZ0Iiwicm4iLCJmaSIsIm1pIiwiX3IiLCJTciIsIkJmIiwiZ2QiLCJ5ZCIsImJkIiwidmQiLCJ3ZCIsIiRkIiwiX2QiLCJTZCIsIk1mIiwiRGYiLCJjdXN0b21EYXRhT2Zmc2V0IiwiY3VzdG9tRGF0YVNpemUiLCJvcEtlcm5lbENvbnRleHQiLCJvdXRwdXQiLCJtZCIsImdwdSIsInJlcXVlc3RBZGFwdGVyIiwiZXh0ZXJuYWxEYXRhIiwicGF0aCIsInByZWZlcnJlZE91dHB1dExvY2F0aW9uIiwiaGFuZGxlIiwib3V0cHV0UHJlZmVycmVkTG9jYXRpb25zIiwib3V0cHV0UHJlZmVycmVkTG9jYXRpb25zRW5jb2RlZCIsImhkIiwiaHciLCJSZiIsImhpIiwicHJveHkiLCJvdXQiLCJyZXZva2VPYmplY3RVUkwiLCJpbiIsImVwTmFtZSIsIm1vZGVsIiwib3B0aW9ucyIsInNlc3Npb25JZCIsIm91dHB1dEluZGljZXMiLCJ4ZCIsImZldGNoTW9kZWxBbmRDb3B5VG9XYXNtTWVtb3J5IiwibG9hZE1vZGVsIiwiQ2QiLCJJZCIsIndhc21CYWNrZW5kIiwiemYiLCJBZCIsIldmIiwiZGVmYXVsdCIsIlVmIiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiY2FjaGVkTW9kdWxlIiwidW5kZWZpbmVkIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsIm9ydCIsIk1BWF9XSURUSCIsIk1BWF9IRUlHSFQiLCJNT0RFTF9XSURUSCIsIk1PREVMX0hFSUdIVCIsIk1PREVMX01BUCIsInNhbV9iIiwic2FtX2JfbG9jYWwiLCJjb25maWciLCJwcm92aWRlciIsInRocmVhZHMiLCJ2YXJzIiwic2VhcmNoIiwicGFpciIsImRlY29kZVVSSUNvbXBvbmVudCIsImdldENvbmZpZyIsImNhbnZhcyIsImZpbGVpbiIsImRlY29kZXJfbGF0ZW5jeSIsImltYWdlX2VtYmVkZGluZ3MiLCJpbWFnZUltYWdlRGF0YSIsInNlc3MiLCJwb2ludHMiLCJsYWJlbHMiLCJpc0NsaWNrZWQiLCJnZXRFbGVtZW50QnlJZCIsImlubmVyVGV4dCIsImhhbmRsZUNsaWNrIiwiZXZlbnQiLCJzdHlsZSIsImN1cnNvciIsInJlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJjbGllbnRYIiwibGVmdCIsImNsaWVudFkiLCJ0b3AiLCJlbWIiLCJjdHJsS2V5IiwiY3R4IiwiY2xlYXJSZWN0IiwicG9pbnRDb29yZHMiLCJwb2ludExhYmVscyIsIm1hc2tJbnB1dCIsImhhc01hc2siLCJvcmlnaWFubEltYWdlU2l6ZSIsImZlZWQiLCJzdGFydCIsInJlcyIsInRvRml4ZWQiLCJtYXNrSW1hZ2VEYXRhIiwibWFza3MiLCJnbG9iYWxBbHBoYSIsImNyZWF0ZUltYWdlQml0bWFwIiwiaGFuZGxlSW1hZ2UiLCJpbWciLCJlbmNvZGVyX2xhdGVuY3kiLCJkaXNhYmxlZCIsImxvYWRfbW9kZWwiLCJpZHgiLCJvcHQiLCJ1cmwiLCJjYWNoZSIsImNhY2hlcyIsImNsZWFyX2NhY2hlIiwiY2FjaGVkUmVzcG9uc2UiLCJmZXRjaEFuZENhY2hlIiwiYWRkRXZlbnRMaXN0ZW5lciIsImhhc0ZwMTYiLCJmcDE2Iiwib25jaGFuZ2UiLCJldnQiLCJmaWxlcyIsIkZpbGVSZWFkZXIiLCJmaWxlUmVhZGVyIiwicmVzdWx0IiwicmVhZEFzRGF0YVVSTCIsIm1haW4iXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/segment-anything/dist/bundle.min.js.LICENSE.txt b/segment-anything/dist/bundle.min.js.LICENSE.txt deleted file mode 100644 index b73410f..0000000 --- a/segment-anything/dist/bundle.min.js.LICENSE.txt +++ /dev/null @@ -1,50 +0,0 @@ -/** - * @license - * Copyright 2019 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - -/** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - -/** - * @license - * Copyright 2021 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ diff --git a/segment-anything/dist/index.js b/segment-anything/dist/index.js new file mode 100644 index 0000000..40a598b --- /dev/null +++ b/segment-anything/dist/index.js @@ -0,0 +1,2649 @@ +/******/ var __webpack_modules__ = ({ + +/***/ "./node_modules/onnxruntime-web/dist/esm/ort.webgpu.min.js": +/*!*****************************************************************!*\ + !*** ./node_modules/onnxruntime-web/dist/esm/ort.webgpu.min.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ InferenceSession: () => (/* binding */ Kl), +/* harmony export */ TRACE: () => (/* binding */ Jr), +/* harmony export */ TRACE_FUNC_BEGIN: () => (/* binding */ at), +/* harmony export */ TRACE_FUNC_END: () => (/* binding */ it), +/* harmony export */ Tensor: () => (/* binding */ Xe), +/* harmony export */ TrainingSession: () => (/* binding */ Zl), +/* harmony export */ "default": () => (/* binding */ Vw), +/* harmony export */ env: () => (/* binding */ Se), +/* harmony export */ registerBackend: () => (/* binding */ Qt) +/* harmony export */ }); +/*! + * ONNX Runtime Web v1.17.1 + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. + */ +var Wn=Object.defineProperty;var Gl=Object.getOwnPropertyDescriptor;var Fl=Object.getOwnPropertyNames;var ql=Object.prototype.hasOwnProperty;var F=(e,t)=>()=>(e&&(t=e(e=0)),t);var Zt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Xt=(e,t)=>{for(var r in t)Wn(e,r,{get:t[r],enumerable:!0})},jl=(e,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Fl(t))!ql.call(e,n)&&n!==r&&Wn(e,n,{get:()=>t[n],enumerable:!(a=Gl(t,n))||a.enumerable});return e};var Ut=e=>jl(Wn({},"__esModule",{value:!0}),e);var jr,Nt,Qt,Kr,Yr=F(()=>{"use strict";jr=new Map,Nt=[],Qt=(e,t,r)=>{if(t&&typeof t.init=="function"&&typeof t.createInferenceSessionHandler=="function"){let a=jr.get(e);if(a===void 0)jr.set(e,{backend:t,priority:r});else{if(a.priority>r)return;if(a.priority===r&&a.backend!==t)throw new Error(`cannot register backend "${e}" using priority ${r}`)}if(r>=0){let n=Nt.indexOf(e);n!==-1&&Nt.splice(n,1);for(let o=0;o{let t=e.length===0?Nt:e,r=[];for(let a of t){let n=jr.get(a);if(n){if(n.initialized)return n.backend;if(n.aborted)continue;let o=!!n.initPromise;try{return o||(n.initPromise=n.backend.init(a)),await n.initPromise,n.initialized=!0,n.backend}catch(u){o||r.push({name:a,err:u}),n.aborted=!0}finally{delete n.initPromise}}}throw new Error(`no available backend found. ERR: ${r.map(a=>`[${a.name}] ${a.err}`).join(", ")}`)}});var Qa=F(()=>{"use strict";Yr()});var Ja,ei=F(()=>{"use strict";Ja="1.17.1"});var ti,Wt,Vn=F(()=>{"use strict";ei();ti="warning",Wt={wasm:{},webgl:{},webgpu:{},versions:{common:Ja},set logLevel(e){if(e!==void 0){if(typeof e!="string"||["verbose","info","warning","error","fatal"].indexOf(e)===-1)throw new Error(`Unsupported logging level: ${e}`);ti=e}},get logLevel(){return ti}};Object.defineProperty(Wt,"logLevel",{enumerable:!0})});var Se,ri=F(()=>{"use strict";Vn();Se=Wt});var ni,ai,ii=F(()=>{"use strict";ni=(e,t)=>{let r=typeof document<"u"?document.createElement("canvas"):new OffscreenCanvas(1,1);r.width=e.dims[3],r.height=e.dims[2];let a=r.getContext("2d");if(a!=null){let n,o;t?.tensorLayout!==void 0&&t.tensorLayout==="NHWC"?(n=e.dims[2],o=e.dims[3]):(n=e.dims[3],o=e.dims[2]);let u=t?.format!==void 0?t.format:"RGB",l=t?.norm,i,c;l===void 0||l.mean===void 0?i=[255,255,255,255]:typeof l.mean=="number"?i=[l.mean,l.mean,l.mean,l.mean]:(i=[l.mean[0],l.mean[1],l.mean[2],0],l.mean[3]!==void 0&&(i[3]=l.mean[3])),l===void 0||l.bias===void 0?c=[0,0,0,0]:typeof l.bias=="number"?c=[l.bias,l.bias,l.bias,l.bias]:(c=[l.bias[0],l.bias[1],l.bias[2],0],l.bias[3]!==void 0&&(c[3]=l.bias[3]));let m=o*n,f=0,h=m,b=m*2,w=-1;u==="RGBA"?(f=0,h=m,b=m*2,w=m*3):u==="RGB"?(f=0,h=m,b=m*2):u==="RBG"&&(f=0,b=m,h=m*2);for(let _=0;_{let r=typeof document<"u"?document.createElement("canvas").getContext("2d"):new OffscreenCanvas(1,1).getContext("2d"),a;if(r!=null){let n,o,u;t?.tensorLayout!==void 0&&t.tensorLayout==="NHWC"?(n=e.dims[2],o=e.dims[1],u=e.dims[3]):(n=e.dims[3],o=e.dims[2],u=e.dims[1]);let l=t!==void 0&&t.format!==void 0?t.format:"RGB",i=t?.norm,c,m;i===void 0||i.mean===void 0?c=[255,255,255,255]:typeof i.mean=="number"?c=[i.mean,i.mean,i.mean,i.mean]:(c=[i.mean[0],i.mean[1],i.mean[2],255],i.mean[3]!==void 0&&(c[3]=i.mean[3])),i===void 0||i.bias===void 0?m=[0,0,0,0]:typeof i.bias=="number"?m=[i.bias,i.bias,i.bias,i.bias]:(m=[i.bias[0],i.bias[1],i.bias[2],0],i.bias[3]!==void 0&&(m[3]=i.bias[3]));let f=o*n;if(t!==void 0&&(t.format!==void 0&&u===4&&t.format!=="RGBA"||u===3&&t.format!=="RGB"&&t.format!=="BGR"))throw new Error("Tensor format doesn't match input tensor dims");let h=4,b=0,w=1,_=2,I=3,$=0,x=f,T=f*2,A=-1;l==="RGBA"?($=0,x=f,T=f*2,A=f*3):l==="RGB"?($=0,x=f,T=f*2):l==="RBG"&&($=0,T=f,x=f*2),a=r.createImageData(n,o);for(let z=0;z{"use strict";Zr();Hn=(e,t)=>{if(e===void 0)throw new Error("Image buffer must be defined");if(t.height===void 0||t.width===void 0)throw new Error("Image height and width must be defined");if(t.tensorLayout==="NHWC")throw new Error("NHWC Tensor layout is not supported yet");let{height:r,width:a}=t,n=t.norm??{mean:255,bias:0},o,u;typeof n.mean=="number"?o=[n.mean,n.mean,n.mean,n.mean]:o=[n.mean[0],n.mean[1],n.mean[2],n.mean[3]??255],typeof n.bias=="number"?u=[n.bias,n.bias,n.bias,n.bias]:u=[n.bias[0],n.bias[1],n.bias[2],n.bias[3]??0];let l=t.format!==void 0?t.format:"RGBA",i=t.tensorFormat!==void 0&&t.tensorFormat!==void 0?t.tensorFormat:"RGB",c=r*a,m=i==="RGBA"?new Float32Array(c*4):new Float32Array(c*3),f=4,h=0,b=1,w=2,_=3,I=0,$=c,x=c*2,T=-1;l==="RGB"&&(f=3,h=0,b=1,w=2,_=-1),i==="RGBA"?T=c*3:i==="RBG"?(I=0,x=c,$=c*2):i==="BGR"&&(x=0,$=c,I=c*2);for(let z=0;z{let r=typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement,a=typeof ImageData<"u"&&e instanceof ImageData,n=typeof ImageBitmap<"u"&&e instanceof ImageBitmap,o=typeof e=="string",u,l=t??{},i=()=>{if(typeof document<"u")return document.createElement("canvas");if(typeof OffscreenCanvas<"u")return new OffscreenCanvas(1,1);throw new Error("Canvas is not supported")},c=m=>m instanceof HTMLCanvasElement||m instanceof OffscreenCanvas?m.getContext("2d"):null;if(r){let m=i();m.width=e.width,m.height=e.height;let f=c(m);if(f!=null){let h=e.height,b=e.width;if(t!==void 0&&t.resizedHeight!==void 0&&t.resizedWidth!==void 0&&(h=t.resizedHeight,b=t.resizedWidth),t!==void 0){if(l=t,t.tensorFormat!==void 0)throw new Error("Image input config format must be RGBA for HTMLImageElement");l.tensorFormat="RGBA",l.height=h,l.width=b}else l.tensorFormat="RGBA",l.height=h,l.width=b;f.drawImage(e,0,0),u=f.getImageData(0,0,b,h).data}else throw new Error("Can not access image data")}else if(a){let m,f;if(t!==void 0&&t.resizedWidth!==void 0&&t.resizedHeight!==void 0?(m=t.resizedHeight,f=t.resizedWidth):(m=e.height,f=e.width),t!==void 0&&(l=t),l.format="RGBA",l.height=m,l.width=f,t!==void 0){let h=i();h.width=f,h.height=m;let b=c(h);if(b!=null)b.putImageData(e,0,0),u=b.getImageData(0,0,f,m).data;else throw new Error("Can not access image data")}else u=e.data}else if(n){if(t===void 0)throw new Error("Please provide image config with format for Imagebitmap");let m=i();m.width=e.width,m.height=e.height;let f=c(m);if(f!=null){let h=e.height,b=e.width;return f.drawImage(e,0,0,b,h),u=f.getImageData(0,0,b,h).data,l.height=h,l.width=b,Hn(u,l)}else throw new Error("Can not access image data")}else{if(o)return new Promise((m,f)=>{let h=i(),b=c(h);if(!e||!b)return f();let w=new Image;w.crossOrigin="Anonymous",w.src=e,w.onload=()=>{h.width=w.width,h.height=w.height,b.drawImage(w,0,0,h.width,h.height);let _=b.getImageData(0,0,h.width,h.height);l.height=h.height,l.width=h.width,m(Hn(_.data,l))}});throw new Error("Input data provided is not supported - aborted tensor creation")}if(u!==void 0)return Hn(u,l);throw new Error("Input data provided is not supported - aborted tensor creation")},si=(e,t)=>{let{width:r,height:a,download:n,dispose:o}=t,u=[1,a,r,4];return new Je({location:"texture",type:"float32",texture:e,dims:u,download:n,dispose:o})},ui=(e,t)=>{let{dataType:r,dims:a,download:n,dispose:o}=t;return new Je({location:"gpu-buffer",type:r??"float32",gpuBuffer:e,dims:a,download:n,dispose:o})},li=(e,t,r)=>new Je({location:"cpu-pinned",type:e,data:t,dims:r??[t.length]})});var vr,Xr,ci,pi,mi=F(()=>{"use strict";vr=new Map([["float32",Float32Array],["uint8",Uint8Array],["int8",Int8Array],["uint16",Uint16Array],["float16",Uint16Array],["int16",Int16Array],["int32",Int32Array],["bool",Uint8Array],["float64",Float64Array],["uint32",Uint32Array]]),Xr=new Map([[Float32Array,"float32"],[Uint8Array,"uint8"],[Int8Array,"int8"],[Uint16Array,"uint16"],[Int16Array,"int16"],[Int32Array,"int32"],[Float64Array,"float64"],[Uint32Array,"uint32"]]),ci=!1,pi=()=>{if(!ci){ci=!0;let e=typeof BigInt64Array<"u"&&typeof BigInt64Array.from=="function",t=typeof BigUint64Array<"u"&&typeof BigUint64Array.from=="function";e&&(vr.set("int64",BigInt64Array),Xr.set(BigInt64Array,"int64")),t&&(vr.set("uint64",BigUint64Array),Xr.set(BigUint64Array,"uint64"))}}});var fi,hi,gi=F(()=>{"use strict";Zr();fi=e=>{let t=1;for(let r=0;r{switch(e.location){case"cpu":return new Je(e.type,e.data,t);case"cpu-pinned":return new Je({location:"cpu-pinned",data:e.data,type:e.type,dims:t});case"texture":return new Je({location:"texture",texture:e.texture,type:e.type,dims:t});case"gpu-buffer":return new Je({location:"gpu-buffer",gpuBuffer:e.gpuBuffer,type:e.type,dims:t});default:throw new Error(`tensorReshape: tensor location ${e.location} is not supported`)}}});var Je,Zr=F(()=>{"use strict";ii();di();mi();gi();Je=class{constructor(t,r,a){pi();let n,o;if(typeof t=="object"&&"location"in t)switch(this.dataLocation=t.location,n=t.type,o=t.dims,t.location){case"cpu-pinned":{let l=vr.get(n);if(!l)throw new TypeError(`unsupported type "${n}" to create tensor from pinned buffer`);if(!(t.data instanceof l))throw new TypeError(`buffer should be of type ${l.name}`);this.cpuData=t.data;break}case"texture":{if(n!=="float32")throw new TypeError(`unsupported type "${n}" to create tensor from texture`);this.gpuTextureData=t.texture,this.downloader=t.download,this.disposer=t.dispose;break}case"gpu-buffer":{if(n!=="float32"&&n!=="float16"&&n!=="int32"&&n!=="int64"&&n!=="uint32"&&n!=="bool")throw new TypeError(`unsupported type "${n}" to create tensor from gpu buffer`);this.gpuBufferData=t.gpuBuffer,this.downloader=t.download,this.disposer=t.dispose;break}default:throw new Error(`Tensor constructor: unsupported location '${this.dataLocation}'`)}else{let l,i;if(typeof t=="string")if(n=t,i=a,t==="string"){if(!Array.isArray(r))throw new TypeError("A string tensor's data must be a string array.");l=r}else{let c=vr.get(t);if(c===void 0)throw new TypeError(`Unsupported tensor type: ${t}.`);if(Array.isArray(r)){if(t==="float16")throw new TypeError("Creating a float16 tensor from number array is not supported. Please use Uint16Array as data.");t==="uint64"||t==="int64"?l=c.from(r,BigInt):l=c.from(r)}else if(r instanceof c)l=r;else throw new TypeError(`A ${n} tensor's data must be type of ${c}`)}else if(i=r,Array.isArray(t)){if(t.length===0)throw new TypeError("Tensor type cannot be inferred from an empty array.");let c=typeof t[0];if(c==="string")n="string",l=t;else if(c==="boolean")n="bool",l=Uint8Array.from(t);else throw new TypeError(`Invalid element type of data array: ${c}.`)}else{let c=Xr.get(t.constructor);if(c===void 0)throw new TypeError(`Unsupported type for tensor data: ${t.constructor}.`);n=c,l=t}if(i===void 0)i=[l.length];else if(!Array.isArray(i))throw new TypeError("A tensor's dims must be a number array");o=i,this.cpuData=l,this.dataLocation="cpu"}let u=fi(o);if(this.cpuData&&u!==this.cpuData.length)throw new Error(`Tensor's size(${u}) does not match data length(${this.cpuData.length}).`);this.type=n,this.dims=o,this.size=u}static async fromImage(t,r){return oi(t,r)}static fromTexture(t,r){return si(t,r)}static fromGpuBuffer(t,r){return ui(t,r)}static fromPinnedBuffer(t,r,a){return li(t,r,a)}toDataURL(t){return ni(this,t)}toImageData(t){return ai(this,t)}get data(){if(this.ensureValid(),!this.cpuData)throw new Error("The data is not on CPU. Use `getData()` to download GPU data to CPU, or use `texture` or `gpuBuffer` property to access the GPU data directly.");return this.cpuData}get location(){return this.dataLocation}get texture(){if(this.ensureValid(),!this.gpuTextureData)throw new Error("The data is not stored as a WebGL texture.");return this.gpuTextureData}get gpuBuffer(){if(this.ensureValid(),!this.gpuBufferData)throw new Error("The data is not stored as a WebGPU buffer.");return this.gpuBufferData}async getData(t){switch(this.ensureValid(),this.dataLocation){case"cpu":case"cpu-pinned":return this.data;case"texture":case"gpu-buffer":{if(!this.downloader)throw new Error("The current tensor is not created with a specified data downloader.");if(this.isDownloading)throw new Error("The current tensor is being downloaded.");try{this.isDownloading=!0;let r=await this.downloader();return this.downloader=void 0,this.dataLocation="cpu",this.cpuData=r,t&&this.disposer&&(this.disposer(),this.disposer=void 0),r}finally{this.isDownloading=!1}}default:throw new Error(`cannot get data from location: ${this.dataLocation}`)}}dispose(){if(this.isDownloading)throw new Error("The current tensor is being downloaded.");this.disposer&&(this.disposer(),this.disposer=void 0),this.cpuData=void 0,this.gpuTextureData=void 0,this.gpuBufferData=void 0,this.downloader=void 0,this.isDownloading=void 0,this.dataLocation="none"}ensureValid(){if(this.dataLocation==="none")throw new Error("The tensor is disposed.")}reshape(t){if(this.ensureValid(),this.downloader||this.disposer)throw new Error("Cannot reshape a tensor that owns GPU resource.");return hi(this,t)}}});var Xe,Qr=F(()=>{"use strict";Zr();Xe=Je});var Jr,yi,at,it,Ln=F(()=>{"use strict";Vn();Jr=(e,t)=>{Wt.wasm.trace&&console.timeStamp(`${e}::ORT::${t}`)},yi=(e,t)=>{let r=new Error().stack?.split(/\r\n|\r|\n/g)||[],a=!1;for(let n=0;n{Wt.wasm.trace&&yi("BEGIN",e)},it=e=>{Wt.wasm.trace&&yi("END",e)}});var en,bi=F(()=>{"use strict";Yr();Qr();Ln();en=class e{constructor(t){this.handler=t}async run(t,r,a){at();let n={},o={};if(typeof t!="object"||t===null||t instanceof Xe||Array.isArray(t))throw new TypeError("'feeds' must be an object that use input names as keys and OnnxValue as corresponding values.");let u=!0;if(typeof r=="object"){if(r===null)throw new TypeError("Unexpected argument[1]: cannot be null.");if(r instanceof Xe)throw new TypeError("'fetches' cannot be a Tensor");if(Array.isArray(r)){if(r.length===0)throw new TypeError("'fetches' cannot be an empty array.");u=!1;for(let c of r){if(typeof c!="string")throw new TypeError("'fetches' must be a string array or an object.");if(this.outputNames.indexOf(c)===-1)throw new RangeError(`'fetches' contains invalid output name: ${c}.`);n[c]=null}if(typeof a=="object"&&a!==null)o=a;else if(typeof a<"u")throw new TypeError("'options' must be an object.")}else{let c=!1,m=Object.getOwnPropertyNames(r);for(let f of this.outputNames)if(m.indexOf(f)!==-1){let h=r[f];(h===null||h instanceof Xe)&&(c=!0,u=!1,n[f]=h)}if(c){if(typeof a=="object"&&a!==null)o=a;else if(typeof a<"u")throw new TypeError("'options' must be an object.")}else o=r}}else if(typeof r<"u")throw new TypeError("Unexpected argument[1]: must be 'fetches' or 'options'.");for(let c of this.inputNames)if(typeof t[c]>"u")throw new Error(`input '${c}' is missing in 'feeds'.`);if(u)for(let c of this.outputNames)n[c]=null;let l=await this.handler.run(t,n,o),i={};for(let c in l)if(Object.hasOwnProperty.call(l,c)){let m=l[c];m instanceof Xe?i[c]=m:i[c]=new Xe(m.type,m.data,m.dims)}return it(),i}async release(){return this.handler.dispose()}static async create(t,r,a,n){at();let o,u={};if(typeof t=="string"){if(o=t,typeof r=="object"&&r!==null)u=r;else if(typeof r<"u")throw new TypeError("'options' must be an object.")}else if(t instanceof Uint8Array){if(o=t,typeof r=="object"&&r!==null)u=r;else if(typeof r<"u")throw new TypeError("'options' must be an object.")}else if(t instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&t instanceof SharedArrayBuffer){let f=t,h=0,b=t.byteLength;if(typeof r=="object"&&r!==null)u=r;else if(typeof r=="number"){if(h=r,!Number.isSafeInteger(h))throw new RangeError("'byteOffset' must be an integer.");if(h<0||h>=f.byteLength)throw new RangeError(`'byteOffset' is out of range [0, ${f.byteLength}).`);if(b=t.byteLength-h,typeof a=="number"){if(b=a,!Number.isSafeInteger(b))throw new RangeError("'byteLength' must be an integer.");if(b<=0||h+b>f.byteLength)throw new RangeError(`'byteLength' is out of range (0, ${f.byteLength-h}].`);if(typeof n=="object"&&n!==null)u=n;else if(typeof n<"u")throw new TypeError("'options' must be an object.")}else if(typeof a<"u")throw new TypeError("'byteLength' must be a number.")}else if(typeof r<"u")throw new TypeError("'options' must be an object.");o=new Uint8Array(f,h,b)}else throw new TypeError("Unexpected argument[0]: must be 'path' or 'buffer'.");let i=(u.executionProviders||[]).map(f=>typeof f=="string"?f:f.name),m=await(await Kr(i)).createInferenceSessionHandler(o,u);return it(),new e(m)}startProfiling(){this.handler.startProfiling()}endProfiling(){this.handler.endProfiling()}get inputNames(){return this.handler.inputNames}get outputNames(){return this.handler.outputNames}}});var Kl,wi=F(()=>{"use strict";bi();Kl=en});var vi=F(()=>{"use strict"});var Yl,tn,$i=F(()=>{"use strict";Yr();Qr();Yl="Training backend could not be resolved. Make sure you're using the correct configuration & WebAssembly files.",tn=class e{constructor(t,r,a){this.handler=t,this.hasOptimizerModel=r,this.hasEvalModel=a}get trainingInputNames(){return this.handler.inputNames}get trainingOutputNames(){return this.handler.outputNames}get evalInputNames(){if(this.hasEvalModel)return this.handler.evalInputNames;throw new Error("This training session has no evalModel loaded.")}get evalOutputNames(){if(this.hasEvalModel)return this.handler.evalOutputNames;throw new Error("This training session has no evalModel loaded.")}static async create(t,r){let a=t.evalModel||"",n=t.optimizerModel||"",o=r||{},l=(o.executionProviders||[]).map(c=>typeof c=="string"?c:c.name),i=await Kr(l);if(i.createTrainingSessionHandler){let c=await i.createTrainingSessionHandler(t.checkpointState,t.trainModel,a,n,o);return new e(c,!!t.optimizerModel,!!t.evalModel)}else throw new Error(Yl)}typeNarrowingForRunStep(t,r,a,n,o){let u={},l={};if(typeof a!="object"||a===null||a instanceof Xe||Array.isArray(a))throw new TypeError("'feeds' must be an object that use input names as keys and OnnxValue as corresponding values.");let i=!0;if(typeof n=="object"){if(n===null)throw new TypeError("Unexpected argument[1]: cannot be null.");if(n instanceof Xe)throw new TypeError("'fetches' cannot be a Tensor");if(Array.isArray(n)){if(n.length===0)throw new TypeError("'fetches' cannot be an empty array.");i=!1;for(let c of n){if(typeof c!="string")throw new TypeError("'fetches' must be a string array or an object.");if(r.indexOf(c)===-1)throw new RangeError(`'fetches' contains invalid output name: ${c}.`);u[c]=null}if(typeof o=="object"&&o!==null)l=o;else if(typeof o<"u")throw new TypeError("'options' must be an object.")}else{let c=!1,m=Object.getOwnPropertyNames(n);for(let f of r)if(m.indexOf(f)!==-1){let h=n[f];(h===null||h instanceof Xe)&&(c=!0,i=!1,u[f]=h)}if(c){if(typeof o=="object"&&o!==null)l=o;else if(typeof o<"u")throw new TypeError("'options' must be an object.")}else l=n}}else if(typeof n<"u")throw new TypeError("Unexpected argument[1]: must be 'fetches' or 'options'.");for(let c of t)if(typeof a[c]>"u")throw new Error(`input '${c}' is missing in 'feeds'.`);if(i)for(let c of r)u[c]=null;return[u,l]}convertHandlerReturnTypeToMapOfTensors(t){let r={};for(let a in t)if(Object.hasOwnProperty.call(t,a)){let n=t[a];n instanceof Xe?r[a]=n:r[a]=new Xe(n.type,n.data,n.dims)}return r}async lazyResetGrad(){await this.handler.lazyResetGrad()}async runTrainStep(t,r,a){let[n,o]=this.typeNarrowingForRunStep(this.trainingInputNames,this.trainingOutputNames,t,r,a),u=await this.handler.runTrainStep(t,n,o);return this.convertHandlerReturnTypeToMapOfTensors(u)}async runOptimizerStep(t){if(this.hasOptimizerModel)await this.handler.runOptimizerStep(t||{});else throw new Error("This TrainingSession has no OptimizerModel loaded.")}async runEvalStep(t,r,a){if(this.hasEvalModel){let[n,o]=this.typeNarrowingForRunStep(this.evalInputNames,this.evalOutputNames,t,r,a),u=await this.handler.runEvalStep(t,n,o);return this.convertHandlerReturnTypeToMapOfTensors(u)}else throw new Error("This TrainingSession has no EvalModel loaded.")}async getParametersSize(t=!0){return this.handler.getParametersSize(t)}async loadParametersBuffer(t,r=!0){let a=await this.getParametersSize(r);if(t.length!==4*a)throw new Error("Size of the buffer passed into loadParametersBuffer must match the number of parameters in the model. Please use getParametersSize method to check.");return this.handler.loadParametersBuffer(t,r)}async getContiguousParameters(t=!0){return this.handler.getContiguousParameters(t)}async release(){return this.handler.dispose()}}});var Zl,_i=F(()=>{"use strict";$i();Zl=tn});var Gn={};Xt(Gn,{InferenceSession:()=>Kl,TRACE:()=>Jr,TRACE_FUNC_BEGIN:()=>at,TRACE_FUNC_END:()=>it,Tensor:()=>Xe,TrainingSession:()=>Zl,env:()=>Se,registerBackend:()=>Qt});var st=F(()=>{"use strict";Qa();ri();wi();Qr();Ln();vi();_i()});var Fn={};Xt(Fn,{createReadStream:()=>Si,readFile:()=>Xl,readFileSync:()=>Ql});var Xl,Ql,Si,qn=F(()=>{Xl=void 0,Ql=void 0,Si=void 0});var jn={};Xt(jn,{join:()=>Jl});var Jl,Kn=F(()=>{Jl=void 0});var Ai=Zt((Ci,Yn)=>{"use strict";var Ii=(()=>{var e=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(e=e||__filename),function(t={}){var r=t,a,n;r.ready=new Promise((d,g)=>{a=d,n=g}),r.mountExternalData=(d,g)=>{(r.Fa||(r.Fa=new Map)).set(d,g)},r.unmountExternalData=()=>{delete r.Fa},r.jsepInit=(d,g,v,C,B,H,j,de)=>{r.ab=d,r.Qa=g,r.Sa=v,r.La=C,r.Ra=B,r.sa=H,r.Ta=j,r.Ua=de,g=(J,re,se)=>(...we)=>{let Ie=ot,k=re?.();we=J(...we);let ue=re?.();return k!==ue&&(J=ue,se(k),re=se=null),ot!=Ie?zr():we},v=J=>async(...re)=>{try{if(r.Ea)throw Error("Session already started");let se=r.Ea={Va:re[0],errors:[]},we=await J(...re);if(r.Ea!==se)throw Error("Session mismatch");d.flush();let Ie=se.errors;if(0ue),0r._OrtRun,J=>r._OrtRun=J)),r._OrtRunWithBinding=v(g(r._OrtRunWithBinding,()=>r._OrtRunWithBinding,J=>r._OrtRunWithBinding=J)),r._OrtBindInput=g(r._OrtBindInput,()=>r._OrtBindInput,J=>r._OrtBindInput=J),r.jsepRegisterBuffer=(J,re,se,we)=>d.registerBuffer(J,re,se,we),r.jsepUnregisterBuffers=J=>{d.unregisterBuffers(J)},r.jsepGetBuffer=J=>d.getBuffer(J),r.jsepCreateDownloader=(J,re,se)=>d.createDownloader(J,re,se)};var o=Object.assign({},r),u="./this.program",l=(d,g)=>{throw g},i=typeof window=="object",c=typeof importScripts=="function",m=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",f="",h,b,w;if(m){var _=(qn(),Ut(Fn)),I=(Kn(),Ut(jn));f=c?I.dirname(f)+"/":__dirname+"/",h=(d,g)=>(d=He(d)?new URL(d):I.normalize(d),_.readFileSync(d,g?void 0:"utf8")),w=d=>(d=h(d,!0),d.buffer||(d=new Uint8Array(d)),d),b=(d,g,v,C=!0)=>{d=He(d)?new URL(d):I.normalize(d),_.readFile(d,C?void 0:"utf8",(B,H)=>{B?v(B):g(C?H.buffer:H)})},!r.thisProgram&&1{throw process.exitCode=d,g},r.inspect=()=>"[Emscripten Module object]"}else(i||c)&&(c?f=self.location.href:typeof document<"u"&&document.currentScript&&(f=document.currentScript.src),e&&(f=e),f.indexOf("blob:")!==0?f=f.substr(0,f.replace(/[?#].*/,"").lastIndexOf("/")+1):f="",h=d=>{var g=new XMLHttpRequest;return g.open("GET",d,!1),g.send(null),g.responseText},c&&(w=d=>{var g=new XMLHttpRequest;return g.open("GET",d,!1),g.responseType="arraybuffer",g.send(null),new Uint8Array(g.response)}),b=(d,g,v)=>{var C=new XMLHttpRequest;C.open("GET",d,!0),C.responseType="arraybuffer",C.onload=()=>{C.status==200||C.status==0&&C.response?g(C.response):v()},C.onerror=v,C.send(null)});var $=console.log.bind(console),x=console.error.bind(console);Object.assign(r,o),o=null,typeof WebAssembly!="object"&&he("no native wasm support detected");var T,A=!1,z,R,N,E,W,te,Y;function K(){var d=T.buffer;r.HEAP8=R=new Int8Array(d),r.HEAP16=new Int16Array(d),r.HEAPU8=N=new Uint8Array(d),r.HEAPU16=new Uint16Array(d),r.HEAP32=E=new Int32Array(d),r.HEAPU32=W=new Uint32Array(d),r.HEAPF32=te=new Float32Array(d),r.HEAPF64=Y=new Float64Array(d)}var X=[],Z=[],Oe=[],Pe=0,fe=null,Ae=null;function he(d){throw d="Aborted("+d+")",x(d),A=!0,z=1,d=new WebAssembly.RuntimeError(d+". Build with -sASSERTIONS for more info."),n(d),d}var ye=d=>d.startsWith("data:application/octet-stream;base64,"),He=d=>d.startsWith("file://"),ze;if(ze="ort-wasm-simd.wasm",!ye(ze)){var Ge=ze;ze=r.locateFile?r.locateFile(Ge,f):f+Ge}function L(d){if(w)return w(d);throw"both async and sync fetching of the wasm failed"}function ee(d){if(i||c){if(typeof fetch=="function"&&!He(d))return fetch(d,{credentials:"same-origin"}).then(g=>{if(!g.ok)throw"failed to load wasm binary file at '"+d+"'";return g.arrayBuffer()}).catch(()=>L(d));if(b)return new Promise((g,v)=>{b(d,C=>g(new Uint8Array(C)),v)})}return Promise.resolve().then(()=>L(d))}function be(d,g,v){return ee(d).then(C=>WebAssembly.instantiate(C,g)).then(C=>C).then(v,C=>{x(`failed to asynchronously prepare wasm: ${C}`),he(C)})}function nt(d,g){var v=ze;return typeof WebAssembly.instantiateStreaming!="function"||ye(v)||He(v)||m||typeof fetch!="function"?be(v,d,g):fetch(v,{credentials:"same-origin"}).then(C=>WebAssembly.instantiateStreaming(C,d).then(g,function(B){return x(`wasm streaming compile failed: ${B}`),x("falling back to ArrayBuffer instantiation"),be(v,d,g)}))}var Ne,We={931056:(d,g,v,C)=>{if(typeof r>"u"||!r.Fa)return 1;if(d=Ke(d>>>0),d.startsWith("./")&&(d=d.substring(2)),d=r.Fa.get(d),!d)return 2;if(g>>>=0,v>>>=0,g+v>d.byteLength)return 3;try{return N.set(d.subarray(g,g+v),C>>>0>>>0),0}catch{return 4}},931557:d=>r.Qa(d),931590:d=>r.Sa(d),931622:(d,g,v)=>{r.La(d,g,v,!0)},931661:(d,g,v)=>{r.La(d,g,v)},931694:d=>{r.sa("Abs",d,void 0)},931745:d=>{r.sa("Neg",d,void 0)},931796:d=>{r.sa("Floor",d,void 0)},931849:d=>{r.sa("Ceil",d,void 0)},931901:d=>{r.sa("Reciprocal",d,void 0)},931959:d=>{r.sa("Sqrt",d,void 0)},932011:d=>{r.sa("Exp",d,void 0)},932062:d=>{r.sa("Erf",d,void 0)},932113:d=>{r.sa("Sigmoid",d,void 0)},932168:d=>{r.sa("Log",d,void 0)},932219:d=>{r.sa("Sin",d,void 0)},932270:d=>{r.sa("Cos",d,void 0)},932321:d=>{r.sa("Tan",d,void 0)},932372:d=>{r.sa("Asin",d,void 0)},932424:d=>{r.sa("Acos",d,void 0)},932476:d=>{r.sa("Atan",d,void 0)},932528:d=>{r.sa("Sinh",d,void 0)},932580:d=>{r.sa("Cosh",d,void 0)},932632:d=>{r.sa("Asinh",d,void 0)},932685:d=>{r.sa("Acosh",d,void 0)},932738:d=>{r.sa("Atanh",d,void 0)},932791:d=>{r.sa("Tanh",d,void 0)},932843:d=>{r.sa("Not",d,void 0)},932894:(d,g,v)=>{r.sa("Clip",d,{min:g,max:v})},932963:d=>{r.sa("Clip",d,void 0)},933015:(d,g)=>{r.sa("Elu",d,{alpha:g})},933073:d=>{r.sa("Relu",d,void 0)},933125:(d,g)=>{r.sa("LeakyRelu",d,{alpha:g})},933189:(d,g)=>{r.sa("ThresholdedRelu",d,{alpha:g})},933259:(d,g)=>{r.sa("Cast",d,{to:g})},933317:d=>{r.sa("Add",d,void 0)},933368:d=>{r.sa("Sub",d,void 0)},933419:d=>{r.sa("Mul",d,void 0)},933470:d=>{r.sa("Div",d,void 0)},933521:d=>{r.sa("Pow",d,void 0)},933572:d=>{r.sa("Equal",d,void 0)},933625:d=>{r.sa("Greater",d,void 0)},933680:d=>{r.sa("GreaterOrEqual",d,void 0)},933742:d=>{r.sa("Less",d,void 0)},933794:d=>{r.sa("LessOrEqual",d,void 0)},933853:(d,g,v,C,B)=>{r.sa("ReduceMean",d,{keepDims:!!g,noopWithEmptyAxes:!!v,axes:C?Array.from(E.subarray(C>>>0,B>>>0)):[]})},934012:(d,g,v,C,B)=>{r.sa("ReduceMax",d,{keepDims:!!g,noopWithEmptyAxes:!!v,axes:C?Array.from(E.subarray(C>>>0,B>>>0)):[]})},934170:(d,g,v,C,B)=>{r.sa("ReduceMin",d,{keepDims:!!g,noopWithEmptyAxes:!!v,axes:C?Array.from(E.subarray(C>>>0,B>>>0)):[]})},934328:(d,g,v,C,B)=>{r.sa("ReduceProd",d,{keepDims:!!g,noopWithEmptyAxes:!!v,axes:C?Array.from(E.subarray(C>>>0,B>>>0)):[]})},934487:(d,g,v,C,B)=>{r.sa("ReduceSum",d,{keepDims:!!g,noopWithEmptyAxes:!!v,axes:C?Array.from(E.subarray(C>>>0,B>>>0)):[]})},934645:(d,g,v,C,B)=>{r.sa("ReduceL1",d,{keepDims:!!g,noopWithEmptyAxes:!!v,axes:C?Array.from(E.subarray(C>>>0,B>>>0)):[]})},934802:(d,g,v,C,B)=>{r.sa("ReduceL2",d,{keepDims:!!g,noopWithEmptyAxes:!!v,axes:C?Array.from(E.subarray(C>>>0,B>>>0)):[]})},934959:(d,g,v,C,B)=>{r.sa("ReduceLogSum",d,{keepDims:!!g,noopWithEmptyAxes:!!v,axes:C?Array.from(E.subarray(C>>>0,B>>>0)):[]})},935120:(d,g,v,C,B)=>{r.sa("ReduceSumSquare",d,{keepDims:!!g,noopWithEmptyAxes:!!v,axes:C?Array.from(E.subarray(C>>>0,B>>>0)):[]})},935284:(d,g,v,C,B)=>{r.sa("ReduceLogSumExp",d,{keepDims:!!g,noopWithEmptyAxes:!!v,axes:C?Array.from(E.subarray(C>>>0,B>>>0)):[]})},935448:d=>{r.sa("Where",d,void 0)},935501:(d,g,v)=>{r.sa("Transpose",d,{perm:g?Array.from(E.subarray(g>>>0,v>>>0)):[]})},935609:(d,g,v,C,B,H,j,de,J,re,se,we,Ie,k,ue)=>{r.sa("ConvTranspose",d,{format:J?"NHWC":"NCHW",autoPad:g,dilations:[v],group:C,kernel_shape:[B],pads:[H,j],strides:[de],wIsConst:()=>!!R[re>>>0],outputPadding:se?Array.from(E.subarray(se>>>0,we>>>0)):[],outputShape:Ie?Array.from(E.subarray(Ie>>>0,k>>>0)):[],activation:Ke(ue)})},936011:(d,g,v,C,B,H,j,de,J,re,se,we,Ie,k)=>{r.sa("ConvTranspose",d,{format:de?"NHWC":"NCHW",autoPad:g,dilations:Array.from(E.subarray(v>>>0,(v>>>0)+2>>>0)),group:C,kernelShape:Array.from(E.subarray(B>>>0,(B>>>0)+2>>>0)),pads:Array.from(E.subarray(H>>>0,(H>>>0)+4>>>0)),strides:Array.from(E.subarray(j>>>0,(j>>>0)+2>>>0)),wIsConst:()=>!!R[J>>>0],outputPadding:re?Array.from(E.subarray(re>>>0,se>>>0)):[],outputShape:we?Array.from(E.subarray(we>>>0,Ie>>>0)):[],activation:Ke(k)})},936576:(d,g,v,C,B,H,j,de,J,re,se,we,Ie,k,ue)=>{r.sa("ConvTranspose",d,{format:J?"NHWC":"NCHW",autoPad:g,dilations:[v],group:C,kernel_shape:[B],pads:[H,j],strides:[de],wIsConst:()=>!!R[re>>>0],outputPadding:se?Array.from(E.subarray(se>>>0,we>>>0)):[],outputShape:Ie?Array.from(E.subarray(Ie>>>0,k>>>0)):[],activation:Ke(ue)})},936978:(d,g,v,C,B,H,j,de,J,re,se,we,Ie,k)=>{r.sa("ConvTranspose",d,{format:de?"NHWC":"NCHW",autoPad:g,dilations:Array.from(E.subarray(v>>>0,(v>>>0)+2>>>0)),group:C,kernelShape:Array.from(E.subarray(B>>>0,(B>>>0)+2>>>0)),pads:Array.from(E.subarray(H>>>0,(H>>>0)+4>>>0)),strides:Array.from(E.subarray(j>>>0,(j>>>0)+2>>>0)),wIsConst:()=>!!R[J>>>0],outputPadding:re?Array.from(E.subarray(re>>>0,se>>>0)):[],outputShape:we?Array.from(E.subarray(we>>>0,Ie>>>0)):[],activation:Ke(k)})},937543:(d,g)=>{r.sa("GlobalAveragePool",d,{format:g?"NHWC":"NCHW"})},937634:(d,g,v,C,B,H,j,de,J,re,se,we,Ie,k,ue,_e)=>{r.sa("AveragePool",d,{format:_e?"NHWC":"NCHW",auto_pad:g,ceil_mode:v,count_include_pad:C,storage_order:B,dilations:[H,j],kernel_shape:[de,J],pads:[re,se,we,Ie],strides:[k,ue]})},937918:(d,g)=>{r.sa("GlobalAveragePool",d,{format:g?"NHWC":"NCHW"})},938009:(d,g,v,C,B,H,j,de,J,re,se,we,Ie,k,ue,_e)=>{r.sa("AveragePool",d,{format:_e?"NHWC":"NCHW",auto_pad:g,ceil_mode:v,count_include_pad:C,storage_order:B,dilations:[H,j],kernel_shape:[de,J],pads:[re,se,we,Ie],strides:[k,ue]})},938293:(d,g)=>{r.sa("GlobalMaxPool",d,{format:g?"NHWC":"NCHW"})},938380:(d,g,v,C,B,H,j,de,J,re,se,we,Ie,k,ue,_e)=>{r.sa("MaxPool",d,{format:_e?"NHWC":"NCHW",auto_pad:g,ceil_mode:v,count_include_pad:C,storage_order:B,dilations:[H,j],kernel_shape:[de,J],pads:[re,se,we,Ie],strides:[k,ue]})},938660:(d,g)=>{r.sa("GlobalMaxPool",d,{format:g?"NHWC":"NCHW"})},938747:(d,g,v,C,B,H,j,de,J,re,se,we,Ie,k,ue,_e)=>{r.sa("MaxPool",d,{format:_e?"NHWC":"NCHW",auto_pad:g,ceil_mode:v,count_include_pad:C,storage_order:B,dilations:[H,j],kernel_shape:[de,J],pads:[re,se,we,Ie],strides:[k,ue]})},939027:(d,g,v,C,B)=>{r.sa("Gemm",d,{alpha:g,beta:v,transA:C,transB:B})},939131:d=>{r.sa("MatMul",d,void 0)},939185:(d,g,v,C)=>{r.sa("ArgMax",d,{keepDims:!!g,selectLastIndex:!!v,axis:C})},939293:(d,g,v,C)=>{r.sa("ArgMin",d,{keepDims:!!g,selectLastIndex:!!v,axis:C})},939401:(d,g)=>{r.sa("Softmax",d,{axis:g})},939464:(d,g)=>{r.sa("Concat",d,{axis:g})},939524:(d,g,v,C,B)=>{r.sa("Split",d,{axis:g,numOutputs:v,splitSizes:C?Array.from(E.subarray(C>>>0,B>>>0)):[]})},939664:d=>{r.sa("Expand",d,void 0)},939718:(d,g)=>{r.sa("Gather",d,{axis:Number(g)})},939789:(d,g)=>{r.sa("GatherElements",d,{axis:Number(g)})},939868:(d,g,v,C,B,H,j,de,J,re,se)=>{r.sa("Resize",d,{antialias:g,axes:v?Array.from(E.subarray(v>>>0,C>>>0)):[],coordinateTransformMode:Ke(B),cubicCoeffA:H,excludeOutside:j,extrapolationValue:de,keepAspectRatioPolicy:Ke(J),mode:Ke(re),nearestMode:Ke(se)})},940214:(d,g,v,C,B,H,j)=>{r.sa("Slice",d,{starts:g?Array.from(E.subarray(g>>>0,v>>>0)):[],ends:C?Array.from(E.subarray(C>>>0,B>>>0)):[],axes:H?Array.from(E.subarray(H>>>0,j>>>0)):[]})},940430:d=>{r.sa("Tile",d,void 0)},940482:(d,g,v)=>{r.sa("LayerNormalization",d,{axis:Number(g),epsilon:Number(v)})},940589:(d,g,v)=>{r.sa("InstanceNormalization",d,{epsilon:g,format:v?"NHWC":"NCHW"})},940703:(d,g,v)=>{r.sa("InstanceNormalization",d,{epsilon:g,format:v?"NHWC":"NCHW"})},940817:d=>{r.sa("Range",d,void 0)},940870:(d,g)=>{r.sa("Einsum",d,{equation:Ke(g)})},940951:(d,g,v,C,B)=>{r.sa("Pad",d,{mode:g,value:v,pads:C?Array.from(E.subarray(C>>>0,B>>>0)):[]})},941078:(d,g,v,C,B,H)=>{r.sa("BatchNormalization",d,{epsilon:g,momentum:v,spatial:!!B,trainingMode:!!C,format:H?"NHWC":"NCHW"})},941247:(d,g,v,C,B,H)=>{r.sa("BatchNormalization",d,{epsilon:g,momentum:v,spatial:!!B,trainingMode:!!C,format:H?"NHWC":"NCHW"})},941416:(d,g,v)=>{r.sa("CumSum",d,{exclusive:Number(g),reverse:Number(v)})},941513:(d,g,v,C,B,H,j,de,J)=>{r.sa("Attention",d,{numHeads:g,isUnidirectional:v,maskFilterValue:C,scale:B,doRotary:H,qkvHiddenSizes:j?Array.from(E.subarray(Number(de)>>>0,Number(de)+j>>>0)):[],pastPresentShareBuffer:!!J})},941785:d=>{r.sa("Gelu",d,void 0)},941837:(d,g,v,C,B,H)=>{r.sa("MultiHeadAttention",d,{numHeads:g,isUnidirectional:v,maskFilterValue:C,scale:B,doRotary:H})},941996:d=>{r.sa("BiasAdd",d,void 0)},942051:d=>{r.sa("BiasSplitGelu",d,void 0)},942112:(d,g)=>{r.sa("SkipLayerNormalization",d,{epsilon:g})},942193:(d,g,v,C,B,H,j,de,J,re,se,we,Ie)=>{r.sa("Conv",d,{format:J?"NHWC":"NCHW",auto_pad:g,dilations:[v],group:C,kernel_shape:[B],pads:H?Array.from(E.subarray(H>>>0,j>>>0)):[],strides:[de],w_is_const:()=>!!R[re>>>0],activation:Ke(se),activation_params:we?Array.from(te.subarray(we>>>0,Ie>>>0)):[]})},942563:(d,g,v,C,B,H,j,de,J,re,se,we,Ie,k,ue,_e)=>{r.sa("Conv",d,{format:we?"NHWC":"NCHW",auto_pad:g,dilations:[v,C],group:B,kernel_shape:[H,j],pads:de?Array.from(E.subarray(de>>>0,J>>>0)):[],strides:[re,se],w_is_const:()=>!!R[Ie>>>0],activation:Ke(k),activation_params:ue?Array.from(te.subarray(ue>>>0,_e>>>0)):[]})},942954:d=>{r.Ta(d)},942988:(d,g)=>r.Ua(d,g,r.Ea.Va,r.Ea.errors)};function Me(d){this.name="ExitStatus",this.message=`Program terminated with exit(${d})`,this.status=d}function Ct(d){this.Ja=d-24,this.Oa=function(g){W[this.Ja+4>>>2>>>0]=g},this.Na=function(g){W[this.Ja+8>>>2>>>0]=g},this.$a=function(g,v){this.Ma(),this.Oa(g),this.Na(v)},this.Ma=function(){W[this.Ja+16>>>2>>>0]=0}}var lt=0,Lt=0,Bt=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,At=(d,g,v)=>{g>>>=0;var C=g+v;for(v=g;d[v]&&!(v>=C);)++v;if(16B?C+=String.fromCharCode(B):(B-=65536,C+=String.fromCharCode(55296|B>>10,56320|B&1023))}}else C+=String.fromCharCode(B)}return C},Ke=(d,g)=>(d>>>=0)?At(N,d,g):"",ar=d=>{for(var g=0,v=0;v=C?g++:2047>=C?g+=2:55296<=C&&57343>=C?(g+=4,++v):g+=3}return g},Gt=(d,g,v,C)=>{if(v>>>=0,!(0=j){var de=d.charCodeAt(++H);j=65536+((j&1023)<<10)|de&1023}if(127>=j){if(v>=C)break;g[v++>>>0]=j}else{if(2047>=j){if(v+1>=C)break;g[v++>>>0]=192|j>>6}else{if(65535>=j){if(v+2>=C)break;g[v++>>>0]=224|j>>12}else{if(v+3>=C)break;g[v++>>>0]=240|j>>18,g[v++>>>0]=128|j>>12&63}g[v++>>>0]=128|j>>6&63}g[v++>>>0]=128|j&63}}return g[v>>>0]=0,v-B},Et=d=>d%4===0&&(d%100!==0||d%400===0),St=[0,31,60,91,121,152,182,213,244,274,305,335],Ft=[0,31,59,90,120,151,181,212,243,273,304,334],qt=d=>{var g=ar(d)+1,v=Yt(g);return v&&Gt(d,N,v,g),v},Dt=[],ir=(d,g)=>{Dt.length=0;for(var v;v=N[d++>>>0];){var C=v!=105;C&=v!=112,g+=C&&g%8?4:0,Dt.push(v==112?W[g>>>2>>>0]:v==105?E[g>>>2>>>0]:Y[g>>>3>>>0]),g+=C?8:4}return Dt},dt={},or=()=>{if(!jt){var d={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:u||"./this.program"},g;for(g in dt)dt[g]===void 0?delete d[g]:d[g]=dt[g];var v=[];for(g in d)v.push(`${g}=${d[g]}`);jt=v}return jt},jt,Ze=[null,[],[]],kr=[31,29,31,30,31,30,31,31,30,31,30,31],ke=[31,28,31,30,31,30,31,31,30,31,30,31];function Pr(d){var g=Array(ar(d)+1);return Gt(d,g,0,g.length),g}function Kt(d,g,v,C){function B(k,ue,_e){for(k=typeof k=="number"?k.toString():k||"";k.lengthVr?-1:0ft-k.getDate())ue-=ft-k.getDate()+1,k.setDate(1),11>_e?k.setMonth(_e+1):(k.setMonth(0),k.setFullYear(k.getFullYear()+1));else{k.setDate(k.getDate()+ue);break}}return _e=new Date(k.getFullYear()+1,0,4),ue=de(new Date(k.getFullYear(),0,4)),_e=de(_e),0>=j(ue,k)?0>=j(_e,k)?k.getFullYear()+1:k.getFullYear():k.getFullYear()-1}d>>>=0,g>>>=0,v>>>=0,C>>>=0;var re=W[C+40>>>2>>>0];C={Ya:E[C>>>2>>>0],Xa:E[C+4>>>2>>>0],Ga:E[C+8>>>2>>>0],Ka:E[C+12>>>2>>>0],Ha:E[C+16>>>2>>>0],Da:E[C+20>>>2>>>0],xa:E[C+24>>>2>>>0],Ca:E[C+28>>>2>>>0],bb:E[C+32>>>2>>>0],Wa:E[C+36>>>2>>>0],Za:re?Ke(re):""},v=Ke(v),re={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var se in re)v=v.replace(new RegExp(se,"g"),re[se]);var we="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),Ie="January February March April May June July August September October November December".split(" ");re={"%a":k=>we[k.xa].substring(0,3),"%A":k=>we[k.xa],"%b":k=>Ie[k.Ha].substring(0,3),"%B":k=>Ie[k.Ha],"%C":k=>H((k.Da+1900)/100|0,2),"%d":k=>H(k.Ka,2),"%e":k=>B(k.Ka,2," "),"%g":k=>J(k).toString().substring(2),"%G":k=>J(k),"%H":k=>H(k.Ga,2),"%I":k=>(k=k.Ga,k==0?k=12:12{for(var ue=0,_e=0;_e<=k.Ha-1;ue+=(Et(k.Da+1900)?kr:ke)[_e++]);return H(k.Ka+ue,3)},"%m":k=>H(k.Ha+1,2),"%M":k=>H(k.Xa,2),"%n":()=>` +`,"%p":k=>0<=k.Ga&&12>k.Ga?"AM":"PM","%S":k=>H(k.Ya,2),"%t":()=>" ","%u":k=>k.xa||7,"%U":k=>H(Math.floor((k.Ca+7-k.xa)/7),2),"%V":k=>{var ue=Math.floor((k.Ca+7-(k.xa+6)%7)/7);if(2>=(k.xa+371-k.Ca-2)%7&&ue++,ue)ue==53&&(_e=(k.xa+371-k.Ca)%7,_e==4||_e==3&&Et(k.Da)||(ue=1));else{ue=52;var _e=(k.xa+7-k.Ca-1)%7;(_e==4||_e==5&&Et(k.Da%400-1))&&ue++}return H(ue,2)},"%w":k=>k.xa,"%W":k=>H(Math.floor((k.Ca+7-(k.xa+6)%7)/7),2),"%y":k=>(k.Da+1900).toString().substring(2),"%Y":k=>k.Da+1900,"%z":k=>{k=k.Wa;var ue=0<=k;return k=Math.abs(k)/60,(ue?"+":"-")+("0000"+(k/60*100+k%60)).slice(-4)},"%Z":k=>k.Za,"%%":()=>"%"},v=v.replace(/%%/g,"\0\0");for(se in re)v.includes(se)&&(v=v.replace(new RegExp(se,"g"),re[se](C)));return v=v.replace(/\0\0/g,"%"),se=Pr(v),se.length>g?0:(R.set(se,d>>>0),se.length-1)}var Tt=d=>{try{d()}catch(g){he(g)}};function Rn(){var d=ie,g={};for(let[v,C]of Object.entries(d))g[v]=typeof C=="function"?function(){It.push(v);try{return C.apply(null,arguments)}finally{A||(It.pop(),ot&&ct===1&&It.length===0&&(ct=0,Tt(yr),typeof Fibers<"u"&&Fibers.cb()))}}:C;return g}var ct=0,ot=null,le=0,It=[],sr={},Rr={},Br=0,ur=null,Dr=[];function zr(){return new Promise((d,g)=>{ur={resolve:d,reject:g}})}function Mr(){var d=Yt(65548),g=d+12;W[d>>>2>>>0]=g,W[d+4>>>2>>>0]=g+65536,g=It[0];var v=sr[g];return v===void 0&&(v=Br++,sr[g]=v,Rr[v]=g),E[d+8>>>2>>>0]=v,d}function Ur(d){if(!A){if(ct===0){var g=!1,v=!1;d((C=0)=>{if(!A&&(le=C,g=!0,v)){ct=2,Tt(()=>br(ot)),typeof Browser<"u"&&Browser.Ia.Pa&&Browser.Ia.resume(),C=!1;try{var B=(0,ie[Rr[E[ot+8>>>2>>>0]]])()}catch(de){B=de,C=!0}var H=!1;if(!ot){var j=ur;j&&(ur=null,(C?j.reject:j.resolve)(B),H=!0)}if(C&&!H)throw B}}),v=!0,g||(ct=1,ot=Mr(),typeof Browser<"u"&&Browser.Ia.Pa&&Browser.Ia.pause(),Tt(()=>gr(ot)))}else ct===2?(ct=0,Tt(wr),cr(ot),ot=null,Dr.forEach(C=>{if(!A)try{C();try{z=z=C=z,r.onExit?.(C),A=!0,l(C,new Me(C))}catch(B){B instanceof Me||B=="unwind"||l(1,B)}}catch(B){B instanceof Me||B=="unwind"||l(1,B)}})):he(`invalid state: ${ct}`);return le}}function lr(d){return Ur(g=>{d().then(g)})}var Nr={n:function(d,g,v){return lr(async()=>{await r.Ra(d,g,v)})},a:function(d,g,v){throw d>>>=0,new Ct(d).$a(g>>>0,v>>>0),lt=d,Lt++,lt},g:function(){return 0},J:function(){},A:function(){},C:function(){},L:function(){return 0},H:function(){},D:function(){},G:function(){},l:function(){},B:function(){},y:function(){},I:function(){},z:function(){},m:()=>1,q:function(d,g,v){d=g+2097152>>>0<4194305-!!d?(d>>>0)+4294967296*g:NaN,v>>>=0,d=new Date(1e3*d),E[v>>>2>>>0]=d.getUTCSeconds(),E[v+4>>>2>>>0]=d.getUTCMinutes(),E[v+8>>>2>>>0]=d.getUTCHours(),E[v+12>>>2>>>0]=d.getUTCDate(),E[v+16>>>2>>>0]=d.getUTCMonth(),E[v+20>>>2>>>0]=d.getUTCFullYear()-1900,E[v+24>>>2>>>0]=d.getUTCDay(),E[v+28>>>2>>>0]=(d.getTime()-Date.UTC(d.getUTCFullYear(),0,1,0,0,0,0))/864e5|0},r:function(d,g,v){d=g+2097152>>>0<4194305-!!d?(d>>>0)+4294967296*g:NaN,v>>>=0,d=new Date(1e3*d),E[v>>>2>>>0]=d.getSeconds(),E[v+4>>>2>>>0]=d.getMinutes(),E[v+8>>>2>>>0]=d.getHours(),E[v+12>>>2>>>0]=d.getDate(),E[v+16>>>2>>>0]=d.getMonth(),E[v+20>>>2>>>0]=d.getFullYear()-1900,E[v+24>>>2>>>0]=d.getDay(),E[v+28>>>2>>>0]=(Et(d.getFullYear())?St:Ft)[d.getMonth()]+d.getDate()-1|0,E[v+36>>>2>>>0]=-(60*d.getTimezoneOffset()),g=new Date(d.getFullYear(),6,1).getTimezoneOffset();var C=new Date(d.getFullYear(),0,1).getTimezoneOffset();E[v+32>>>2>>>0]=(g!=C&&d.getTimezoneOffset()==Math.min(C,g))|0},s:function(d){d>>>=0;var g=new Date(E[d+20>>>2>>>0]+1900,E[d+16>>>2>>>0],E[d+12>>>2>>>0],E[d+8>>>2>>>0],E[d+4>>>2>>>0],E[d>>>2>>>0],0),v=E[d+32>>>2>>>0],C=g.getTimezoneOffset(),B=new Date(g.getFullYear(),6,1).getTimezoneOffset(),H=new Date(g.getFullYear(),0,1).getTimezoneOffset(),j=Math.min(H,B);return 0>v?E[d+32>>>2>>>0]=+(B!=H&&j==C):0>>2>>>0]=g.getDay(),E[d+28>>>2>>>0]=(Et(g.getFullYear())?St:Ft)[g.getMonth()]+g.getDate()-1|0,E[d>>>2>>>0]=g.getSeconds(),E[d+4>>>2>>>0]=g.getMinutes(),E[d+8>>>2>>>0]=g.getHours(),E[d+12>>>2>>>0]=g.getDate(),E[d+16>>>2>>>0]=g.getMonth(),E[d+20>>>2>>>0]=g.getYear(),d=g.getTime(),isNaN(d)?(E[dr()>>>2>>>0]=61,d=-1):d/=1e3,pr((Ne=d,1<=+Math.abs(Ne)?0>>0:~~+Math.ceil((Ne-+(~~Ne>>>0))/4294967296)>>>0:0)),d>>>0},o:function(){return-52},p:function(){},w:function(d,g,v){function C(J){return(J=J.toTimeString().match(/\(([A-Za-z ]+)\)$/))?J[1]:"GMT"}v>>>=0;var B=new Date().getFullYear(),H=new Date(B,0,1),j=new Date(B,6,1);B=H.getTimezoneOffset();var de=j.getTimezoneOffset();W[d>>>0>>>2>>>0]=60*Math.max(B,de),E[g>>>0>>>2>>>0]=+(B!=de),d=C(H),g=C(j),d=qt(d),g=qt(g),de>>2>>>0]=d,W[v+4>>>2>>>0]=g):(W[v>>>2>>>0]=g,W[v+4>>>2>>>0]=d)},e:()=>{he("")},b:function(d,g,v){return d>>>=0,g=ir(g>>>0,v>>>0),We[d].apply(null,g)},i:function(d,g,v){return d>>>=0,g=ir(g>>>0,v>>>0),We[d].apply(null,g)},h:()=>Date.now(),x:function(){return 4294901760},c:()=>performance.now(),K:function(d,g,v){return g>>>=0,N.copyWithin(d>>>0>>>0,g>>>0,g+(v>>>0)>>>0)},u:function(d){d>>>=0;var g=N.length;if(4294901760=v;v*=2){var C=g*(1+.2/v);C=Math.min(C,d+100663296);var B=Math;C=Math.max(d,C);e:{B=(B.min.call(B,4294901760,C+(65536-C%65536)%65536)-T.buffer.byteLength+65535)/65536;try{T.grow(B),K();var H=1;break e}catch{}H=void 0}if(H)return!0}return!1},E:function(d,g){d>>>=0,g>>>=0;var v=0;return or().forEach((C,B)=>{var H=g+v;for(B=W[d+4*B>>>2>>>0]=H,H=0;H>>0>>>0]=C.charCodeAt(H);R[B>>>0>>>0]=0,v+=C.length+1}),0},F:function(d,g){d>>>=0,g>>>=0;var v=or();W[d>>>2>>>0]=v.length;var C=0;return v.forEach(B=>C+=B.length+1),W[g>>>2>>>0]=C,0},f:()=>52,k:function(){return 52},t:function(){return 70},j:function(d,g,v,C){g>>>=0,v>>>=0,C>>>=0;for(var B=0,H=0;H>>2>>>0],de=W[g+4>>>2>>>0];g+=8;for(var J=0;J>>0],se=Ze[d];re===0||re===10?((d===1?$:x)(At(se,0)),se.length=0):se.push(re)}B+=de}return W[C>>>2>>>0]=B,0},v:Kt,d:function(d,g,v,C){return Kt(d>>>0,g>>>0,v>>>0,C>>>0)}},ie=function(){function d(v){return ie=v.exports,ie=Rn(),ie=Wr(),T=ie.M,K(),Z.unshift(ie.N),Pe--,Pe==0&&(fe!==null&&(clearInterval(fe),fe=null),Ae&&(v=Ae,Ae=null,v())),ie}var g={a:Nr};if(Pe++,r.instantiateWasm)try{return r.instantiateWasm(g,d)}catch(v){x(`Module.instantiateWasm callback failed with error: ${v}`),n(v)}return nt(g,function(v){d(v.instance)}).catch(n),{}}();r._OrtInit=(d,g)=>(r._OrtInit=ie.O)(d,g),r._OrtGetLastError=(d,g)=>(r._OrtGetLastError=ie.P)(d,g),r._OrtCreateSessionOptions=(d,g,v,C,B,H,j,de,J,re)=>(r._OrtCreateSessionOptions=ie.Q)(d,g,v,C,B,H,j,de,J,re),r._OrtAppendExecutionProvider=(d,g)=>(r._OrtAppendExecutionProvider=ie.R)(d,g),r._OrtAddFreeDimensionOverride=(d,g,v)=>(r._OrtAddFreeDimensionOverride=ie.S)(d,g,v),r._OrtAddSessionConfigEntry=(d,g,v)=>(r._OrtAddSessionConfigEntry=ie.T)(d,g,v),r._OrtReleaseSessionOptions=d=>(r._OrtReleaseSessionOptions=ie.U)(d),r._OrtCreateSession=(d,g,v)=>(r._OrtCreateSession=ie.V)(d,g,v),r._OrtReleaseSession=d=>(r._OrtReleaseSession=ie.W)(d),r._OrtGetInputOutputCount=(d,g,v)=>(r._OrtGetInputOutputCount=ie.X)(d,g,v),r._OrtGetInputName=(d,g)=>(r._OrtGetInputName=ie.Y)(d,g),r._OrtGetOutputName=(d,g)=>(r._OrtGetOutputName=ie.Z)(d,g),r._OrtFree=d=>(r._OrtFree=ie._)(d),r._OrtCreateTensor=(d,g,v,C,B,H)=>(r._OrtCreateTensor=ie.$)(d,g,v,C,B,H),r._OrtGetTensorData=(d,g,v,C,B)=>(r._OrtGetTensorData=ie.aa)(d,g,v,C,B),r._OrtReleaseTensor=d=>(r._OrtReleaseTensor=ie.ba)(d),r._OrtCreateRunOptions=(d,g,v,C)=>(r._OrtCreateRunOptions=ie.ca)(d,g,v,C),r._OrtAddRunConfigEntry=(d,g,v)=>(r._OrtAddRunConfigEntry=ie.da)(d,g,v),r._OrtReleaseRunOptions=d=>(r._OrtReleaseRunOptions=ie.ea)(d),r._OrtCreateBinding=d=>(r._OrtCreateBinding=ie.fa)(d),r._OrtBindInput=(d,g,v)=>(r._OrtBindInput=ie.ga)(d,g,v),r._OrtBindOutput=(d,g,v,C)=>(r._OrtBindOutput=ie.ha)(d,g,v,C),r._OrtClearBoundOutputs=d=>(r._OrtClearBoundOutputs=ie.ia)(d),r._OrtReleaseBinding=d=>(r._OrtReleaseBinding=ie.ja)(d),r._OrtRunWithBinding=(d,g,v,C,B)=>(r._OrtRunWithBinding=ie.ka)(d,g,v,C,B),r._OrtRun=(d,g,v,C,B,H,j,de)=>(r._OrtRun=ie.la)(d,g,v,C,B,H,j,de),r._OrtEndProfiling=d=>(r._OrtEndProfiling=ie.ma)(d),r._JsepOutput=(d,g,v)=>(r._JsepOutput=ie.na)(d,g,v),r._JsepGetNodeName=d=>(r._JsepGetNodeName=ie.oa)(d);var dr=()=>(dr=ie.pa)(),Yt=r._malloc=d=>(Yt=r._malloc=ie.qa)(d),cr=r._free=d=>(cr=r._free=ie.ra)(d),pr=d=>(pr=ie.ta)(d),mr=()=>(mr=ie.ua)(),fr=d=>(fr=ie.va)(d),hr=d=>(hr=ie.wa)(d),gr=d=>(gr=ie.ya)(d),yr=()=>(yr=ie.za)(),br=d=>(br=ie.Aa)(d),wr=()=>(wr=ie.Ba)();r.___start_em_js=943100,r.___stop_em_js=943261;function Wr(){var d=ie;d=Object.assign({},d);var g=C=>()=>C()>>>0,v=C=>B=>C(B)>>>0;return d.pa=g(d.pa),d.qa=v(d.qa),d.ua=g(d.ua),d.wa=v(d.wa),d}r.stackAlloc=hr,r.stackSave=mr,r.stackRestore=fr,r.UTF8ToString=Ke,r.stringToUTF8=(d,g,v)=>Gt(d,N,g,v),r.lengthBytesUTF8=ar;var Ot;Ae=function d(){Ot||zt(),Ot||(Ae=d)};function zt(){if(!(0Ii)});var Ei=Zt(()=>{});var Ti=Zt(()=>{});var Oi={};Xt(Oi,{cpus:()=>ed});var ed,ki=F(()=>{ed=void 0});var Bi=Zt((Ri,Zn)=>{"use strict";var Pi=(()=>{var e=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(e=e||__filename),function(t={}){function r(){return X.buffer!=fe.buffer&&Ge(),fe}function a(){return X.buffer!=fe.buffer&&Ge(),Ae}function n(){return X.buffer!=fe.buffer&&Ge(),he}function o(){return X.buffer!=fe.buffer&&Ge(),ye}function u(){return X.buffer!=fe.buffer&&Ge(),He}function l(){return X.buffer!=fe.buffer&&Ge(),ze}var i=t,c,m;i.ready=new Promise((s,p)=>{c=s,m=p}),i.mountExternalData=(s,p)=>{(i.cb||(i.cb=new Map)).set(s,p)},i.unmountExternalData=()=>{delete i.cb},i.jsepInit=(s,p,y,S,O,D,V,oe)=>{i.Mb=s,i.wb=p,i.yb=y,i.kb=S,i.xb=O,i.Ea=D,i.zb=V,i.Ab=oe,p=(ne,ae,pe)=>(...xe)=>{let Te=ht,P=ae?.();xe=ne(...xe);let me=ae?.();return P!==me&&(ne=me,pe(P),ae=pe=null),ht!=Te?zl():xe},y=ne=>async(...ae)=>{try{if(i.bb)throw Error("Session already started");let pe=i.bb={Cb:ae[0],errors:[]},xe=await ne(...ae);if(i.bb!==pe)throw Error("Session mismatch");s.flush();let Te=pe.errors;if(0me),0i._OrtRun,ne=>i._OrtRun=ne)),i._OrtRunWithBinding=y(p(i._OrtRunWithBinding,()=>i._OrtRunWithBinding,ne=>i._OrtRunWithBinding=ne)),i._OrtBindInput=p(i._OrtBindInput,()=>i._OrtBindInput,ne=>i._OrtBindInput=ne),i.jsepRegisterBuffer=(ne,ae,pe,xe)=>s.registerBuffer(ne,ae,pe,xe),i.jsepUnregisterBuffers=ne=>{s.unregisterBuffers(ne)},i.jsepGetBuffer=ne=>s.getBuffer(ne),i.jsepCreateDownloader=(ne,ae,pe)=>s.createDownloader(ne,ae,pe)};var f=Object.assign({},i),h="./this.program",b=(s,p)=>{throw p},w=typeof window=="object",_=typeof importScripts=="function",I=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",$=i.ENVIRONMENT_IS_PTHREAD||!1,x="";function T(s){return i.locateFile?i.locateFile(s,x):x+s}var A,z,R;if(I){var N=(qn(),Ut(Fn)),E=(Kn(),Ut(jn));x=_?E.dirname(x)+"/":__dirname+"/",A=(p,y)=>(p=Bt(p)?new URL(p):E.normalize(p),N.readFileSync(p,y?void 0:"utf8")),R=p=>(p=A(p,!0),p.buffer||(p=new Uint8Array(p)),p),z=(p,y,S,O=!0)=>{p=Bt(p)?new URL(p):E.normalize(p),N.readFile(p,O?void 0:"utf8",(D,V)=>{D?S(D):y(O?V.buffer:V)})},!i.thisProgram&&1{throw process.exitCode=p,y},i.inspect=()=>"[Emscripten Module object]";let s;try{s=Ei()}catch(p){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),p}global.Worker=s.Worker}else(w||_)&&(_?x=self.location.href:typeof document<"u"&&document.currentScript&&(x=document.currentScript.src),typeof e<"u"&&e&&(x=e),x.indexOf("blob:")!==0?x=x.substr(0,x.replace(/[?#].*/,"").lastIndexOf("/")+1):x="",I||(A=s=>{var p=new XMLHttpRequest;return p.open("GET",s,!1),p.send(null),p.responseText},_&&(R=s=>{var p=new XMLHttpRequest;return p.open("GET",s,!1),p.responseType="arraybuffer",p.send(null),new Uint8Array(p.response)}),z=(s,p,y)=>{var S=new XMLHttpRequest;S.open("GET",s,!0),S.responseType="arraybuffer",S.onload=()=>{S.status==200||S.status==0&&S.response?p(S.response):y()},S.onerror=y,S.send(null)}));I&&typeof performance>"u"&&(global.performance=Ti().performance);var W=console.log.bind(console),te=console.error.bind(console);I&&(W=(...s)=>N.writeSync(1,s.join(" ")+` +`),te=(...s)=>N.writeSync(2,s.join(" ")+` +`));var Y=W,K=te;Object.assign(i,f),f=null,typeof WebAssembly!="object"&<("no native wasm support detected");var X,Z,Oe=!1,Pe,fe,Ae,he,ye,He,ze;function Ge(){var s=X.buffer;i.HEAP8=fe=new Int8Array(s),i.HEAP16=new Int16Array(s),i.HEAPU8=Ae=new Uint8Array(s),i.HEAPU16=new Uint16Array(s),i.HEAP32=he=new Int32Array(s),i.HEAPU32=ye=new Uint32Array(s),i.HEAPF32=He=new Float32Array(s),i.HEAPF64=ze=new Float64Array(s)}var L=16777216;if($)X=i.wasmMemory;else if(i.wasmMemory)X=i.wasmMemory;else if(X=new WebAssembly.Memory({initial:L/65536,maximum:65536,shared:!0}),!(X.buffer instanceof SharedArrayBuffer))throw K("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"),I&&K("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)"),Error("bad memory");Ge(),L=X.buffer.byteLength;var ee=[],be=[],nt=[],Ne=0,We=null,Me=null;function Ct(){if(Ne--,Ne==0&&(We!==null&&(clearInterval(We),We=null),Me)){var s=Me;Me=null,s()}}function lt(s){throw s="Aborted("+s+")",K(s),Oe=!0,Pe=1,s=new WebAssembly.RuntimeError(s+". Build with -sASSERTIONS for more info."),m(s),s}var Lt=s=>s.startsWith("data:application/octet-stream;base64,"),Bt=s=>s.startsWith("file://"),At;At="ort-wasm-simd-threaded.wasm",Lt(At)||(At=T(At));function Ke(s){if(R)return R(s);throw"both async and sync fetching of the wasm failed"}function ar(s){if(w||_){if(typeof fetch=="function"&&!Bt(s))return fetch(s,{credentials:"same-origin"}).then(p=>{if(!p.ok)throw"failed to load wasm binary file at '"+s+"'";return p.arrayBuffer()}).catch(()=>Ke(s));if(z)return new Promise((p,y)=>{z(s,S=>p(new Uint8Array(S)),y)})}return Promise.resolve().then(()=>Ke(s))}function Gt(s,p,y){return ar(s).then(S=>WebAssembly.instantiate(S,p)).then(S=>S).then(y,S=>{K(`failed to asynchronously prepare wasm: ${S}`),lt(S)})}function Et(s,p){var y=At;return typeof WebAssembly.instantiateStreaming!="function"||Lt(y)||Bt(y)||I||typeof fetch!="function"?Gt(y,s,p):fetch(y,{credentials:"same-origin"}).then(S=>WebAssembly.instantiateStreaming(S,s).then(p,function(O){return K(`wasm streaming compile failed: ${O}`),K("falling back to ArrayBuffer instantiation"),Gt(y,s,p)}))}var St,Ft={932428:(s,p,y,S)=>{if(typeof i>"u"||!i.cb)return 1;if(s=Ze(s>>>0),s.startsWith("./")&&(s=s.substring(2)),s=i.cb.get(s),!s)return 2;if(p>>>=0,y>>>=0,S>>>=0,p+y>s.byteLength)return 3;try{return a().set(s.subarray(p,p+y),S>>>0),0}catch{return 4}},932929:s=>i.wb(s),932962:s=>i.yb(s),932994:(s,p,y)=>{i.kb(s,p,y,!0)},933033:(s,p,y)=>{i.kb(s,p,y)},933066:s=>{i.Ea("Abs",s,void 0)},933117:s=>{i.Ea("Neg",s,void 0)},933168:s=>{i.Ea("Floor",s,void 0)},933221:s=>{i.Ea("Ceil",s,void 0)},933273:s=>{i.Ea("Reciprocal",s,void 0)},933331:s=>{i.Ea("Sqrt",s,void 0)},933383:s=>{i.Ea("Exp",s,void 0)},933434:s=>{i.Ea("Erf",s,void 0)},933485:s=>{i.Ea("Sigmoid",s,void 0)},933540:s=>{i.Ea("Log",s,void 0)},933591:s=>{i.Ea("Sin",s,void 0)},933642:s=>{i.Ea("Cos",s,void 0)},933693:s=>{i.Ea("Tan",s,void 0)},933744:s=>{i.Ea("Asin",s,void 0)},933796:s=>{i.Ea("Acos",s,void 0)},933848:s=>{i.Ea("Atan",s,void 0)},933900:s=>{i.Ea("Sinh",s,void 0)},933952:s=>{i.Ea("Cosh",s,void 0)},934004:s=>{i.Ea("Asinh",s,void 0)},934057:s=>{i.Ea("Acosh",s,void 0)},934110:s=>{i.Ea("Atanh",s,void 0)},934163:s=>{i.Ea("Tanh",s,void 0)},934215:s=>{i.Ea("Not",s,void 0)},934266:(s,p,y)=>{i.Ea("Clip",s,{min:p,max:y})},934335:s=>{i.Ea("Clip",s,void 0)},934387:(s,p)=>{i.Ea("Elu",s,{alpha:p})},934445:s=>{i.Ea("Relu",s,void 0)},934497:(s,p)=>{i.Ea("LeakyRelu",s,{alpha:p})},934561:(s,p)=>{i.Ea("ThresholdedRelu",s,{alpha:p})},934631:(s,p)=>{i.Ea("Cast",s,{to:p})},934689:s=>{i.Ea("Add",s,void 0)},934740:s=>{i.Ea("Sub",s,void 0)},934791:s=>{i.Ea("Mul",s,void 0)},934842:s=>{i.Ea("Div",s,void 0)},934893:s=>{i.Ea("Pow",s,void 0)},934944:s=>{i.Ea("Equal",s,void 0)},934997:s=>{i.Ea("Greater",s,void 0)},935052:s=>{i.Ea("GreaterOrEqual",s,void 0)},935114:s=>{i.Ea("Less",s,void 0)},935166:s=>{i.Ea("LessOrEqual",s,void 0)},935225:(s,p,y,S,O)=>{i.Ea("ReduceMean",s,{keepDims:!!p,noopWithEmptyAxes:!!y,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},935384:(s,p,y,S,O)=>{i.Ea("ReduceMax",s,{keepDims:!!p,noopWithEmptyAxes:!!y,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},935542:(s,p,y,S,O)=>{i.Ea("ReduceMin",s,{keepDims:!!p,noopWithEmptyAxes:!!y,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},935700:(s,p,y,S,O)=>{i.Ea("ReduceProd",s,{keepDims:!!p,noopWithEmptyAxes:!!y,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},935859:(s,p,y,S,O)=>{i.Ea("ReduceSum",s,{keepDims:!!p,noopWithEmptyAxes:!!y,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},936017:(s,p,y,S,O)=>{i.Ea("ReduceL1",s,{keepDims:!!p,noopWithEmptyAxes:!!y,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},936174:(s,p,y,S,O)=>{i.Ea("ReduceL2",s,{keepDims:!!p,noopWithEmptyAxes:!!y,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},936331:(s,p,y,S,O)=>{i.Ea("ReduceLogSum",s,{keepDims:!!p,noopWithEmptyAxes:!!y,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},936492:(s,p,y,S,O)=>{i.Ea("ReduceSumSquare",s,{keepDims:!!p,noopWithEmptyAxes:!!y,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},936656:(s,p,y,S,O)=>{i.Ea("ReduceLogSumExp",s,{keepDims:!!p,noopWithEmptyAxes:!!y,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},936820:s=>{i.Ea("Where",s,void 0)},936873:(s,p,y)=>{i.Ea("Transpose",s,{perm:p?Array.from(n().subarray(p>>>0,y>>>0)):[]})},936981:(s,p,y,S,O,D,V,oe,ne,ae,pe,xe,Te,P,me)=>{i.Ea("ConvTranspose",s,{format:ne?"NHWC":"NCHW",autoPad:p,dilations:[y],group:S,kernel_shape:[O],pads:[D,V],strides:[oe],wIsConst:()=>!!r()[ae>>>0],outputPadding:pe?Array.from(n().subarray(pe>>>0,xe>>>0)):[],outputShape:Te?Array.from(n().subarray(Te>>>0,P>>>0)):[],activation:Ze(me)})},937383:(s,p,y,S,O,D,V,oe,ne,ae,pe,xe,Te,P)=>{i.Ea("ConvTranspose",s,{format:oe?"NHWC":"NCHW",autoPad:p,dilations:Array.from(n().subarray(y>>>0,(y>>>0)+2>>>0)),group:S,kernelShape:Array.from(n().subarray(O>>>0,(O>>>0)+2>>>0)),pads:Array.from(n().subarray(D>>>0,(D>>>0)+4>>>0)),strides:Array.from(n().subarray(V>>>0,(V>>>0)+2>>>0)),wIsConst:()=>!!r()[ne>>>0],outputPadding:ae?Array.from(n().subarray(ae>>>0,pe>>>0)):[],outputShape:xe?Array.from(n().subarray(xe>>>0,Te>>>0)):[],activation:Ze(P)})},937948:(s,p,y,S,O,D,V,oe,ne,ae,pe,xe,Te,P,me)=>{i.Ea("ConvTranspose",s,{format:ne?"NHWC":"NCHW",autoPad:p,dilations:[y],group:S,kernel_shape:[O],pads:[D,V],strides:[oe],wIsConst:()=>!!r()[ae>>>0],outputPadding:pe?Array.from(n().subarray(pe>>>0,xe>>>0)):[],outputShape:Te?Array.from(n().subarray(Te>>>0,P>>>0)):[],activation:Ze(me)})},938350:(s,p,y,S,O,D,V,oe,ne,ae,pe,xe,Te,P)=>{i.Ea("ConvTranspose",s,{format:oe?"NHWC":"NCHW",autoPad:p,dilations:Array.from(n().subarray(y>>>0,(y>>>0)+2>>>0)),group:S,kernelShape:Array.from(n().subarray(O>>>0,(O>>>0)+2>>>0)),pads:Array.from(n().subarray(D>>>0,(D>>>0)+4>>>0)),strides:Array.from(n().subarray(V>>>0,(V>>>0)+2>>>0)),wIsConst:()=>!!r()[ne>>>0],outputPadding:ae?Array.from(n().subarray(ae>>>0,pe>>>0)):[],outputShape:xe?Array.from(n().subarray(xe>>>0,Te>>>0)):[],activation:Ze(P)})},938915:(s,p)=>{i.Ea("GlobalAveragePool",s,{format:p?"NHWC":"NCHW"})},939006:(s,p,y,S,O,D,V,oe,ne,ae,pe,xe,Te,P,me,Ce)=>{i.Ea("AveragePool",s,{format:Ce?"NHWC":"NCHW",auto_pad:p,ceil_mode:y,count_include_pad:S,storage_order:O,dilations:[D,V],kernel_shape:[oe,ne],pads:[ae,pe,xe,Te],strides:[P,me]})},939290:(s,p)=>{i.Ea("GlobalAveragePool",s,{format:p?"NHWC":"NCHW"})},939381:(s,p,y,S,O,D,V,oe,ne,ae,pe,xe,Te,P,me,Ce)=>{i.Ea("AveragePool",s,{format:Ce?"NHWC":"NCHW",auto_pad:p,ceil_mode:y,count_include_pad:S,storage_order:O,dilations:[D,V],kernel_shape:[oe,ne],pads:[ae,pe,xe,Te],strides:[P,me]})},939665:(s,p)=>{i.Ea("GlobalMaxPool",s,{format:p?"NHWC":"NCHW"})},939752:(s,p,y,S,O,D,V,oe,ne,ae,pe,xe,Te,P,me,Ce)=>{i.Ea("MaxPool",s,{format:Ce?"NHWC":"NCHW",auto_pad:p,ceil_mode:y,count_include_pad:S,storage_order:O,dilations:[D,V],kernel_shape:[oe,ne],pads:[ae,pe,xe,Te],strides:[P,me]})},940032:(s,p)=>{i.Ea("GlobalMaxPool",s,{format:p?"NHWC":"NCHW"})},940119:(s,p,y,S,O,D,V,oe,ne,ae,pe,xe,Te,P,me,Ce)=>{i.Ea("MaxPool",s,{format:Ce?"NHWC":"NCHW",auto_pad:p,ceil_mode:y,count_include_pad:S,storage_order:O,dilations:[D,V],kernel_shape:[oe,ne],pads:[ae,pe,xe,Te],strides:[P,me]})},940399:(s,p,y,S,O)=>{i.Ea("Gemm",s,{alpha:p,beta:y,transA:S,transB:O})},940503:s=>{i.Ea("MatMul",s,void 0)},940557:(s,p,y,S)=>{i.Ea("ArgMax",s,{keepDims:!!p,selectLastIndex:!!y,axis:S})},940665:(s,p,y,S)=>{i.Ea("ArgMin",s,{keepDims:!!p,selectLastIndex:!!y,axis:S})},940773:(s,p)=>{i.Ea("Softmax",s,{axis:p})},940836:(s,p)=>{i.Ea("Concat",s,{axis:p})},940896:(s,p,y,S,O)=>{i.Ea("Split",s,{axis:p,numOutputs:y,splitSizes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},941036:s=>{i.Ea("Expand",s,void 0)},941090:(s,p)=>{i.Ea("Gather",s,{axis:Number(p)})},941161:(s,p)=>{i.Ea("GatherElements",s,{axis:Number(p)})},941240:(s,p,y,S,O,D,V,oe,ne,ae,pe)=>{i.Ea("Resize",s,{antialias:p,axes:y?Array.from(n().subarray(y>>>0,S>>>0)):[],coordinateTransformMode:Ze(O),cubicCoeffA:D,excludeOutside:V,extrapolationValue:oe,keepAspectRatioPolicy:Ze(ne),mode:Ze(ae),nearestMode:Ze(pe)})},941586:(s,p,y,S,O,D,V)=>{i.Ea("Slice",s,{starts:p?Array.from(n().subarray(p>>>0,y>>>0)):[],ends:S?Array.from(n().subarray(S>>>0,O>>>0)):[],axes:D?Array.from(n().subarray(D>>>0,V>>>0)):[]})},941802:s=>{i.Ea("Tile",s,void 0)},941854:(s,p,y)=>{i.Ea("LayerNormalization",s,{axis:Number(p),epsilon:Number(y)})},941961:(s,p,y)=>{i.Ea("InstanceNormalization",s,{epsilon:p,format:y?"NHWC":"NCHW"})},942075:(s,p,y)=>{i.Ea("InstanceNormalization",s,{epsilon:p,format:y?"NHWC":"NCHW"})},942189:s=>{i.Ea("Range",s,void 0)},942242:(s,p)=>{i.Ea("Einsum",s,{equation:Ze(p)})},942323:(s,p,y,S,O)=>{i.Ea("Pad",s,{mode:p,value:y,pads:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},942450:(s,p,y,S,O,D)=>{i.Ea("BatchNormalization",s,{epsilon:p,momentum:y,spatial:!!O,trainingMode:!!S,format:D?"NHWC":"NCHW"})},942619:(s,p,y,S,O,D)=>{i.Ea("BatchNormalization",s,{epsilon:p,momentum:y,spatial:!!O,trainingMode:!!S,format:D?"NHWC":"NCHW"})},942788:(s,p,y)=>{i.Ea("CumSum",s,{exclusive:Number(p),reverse:Number(y)})},942885:(s,p,y,S,O,D,V,oe,ne)=>{i.Ea("Attention",s,{numHeads:p,isUnidirectional:y,maskFilterValue:S,scale:O,doRotary:D,qkvHiddenSizes:V?Array.from(n().subarray(Number(oe)>>>0,Number(oe)+V>>>0)):[],pastPresentShareBuffer:!!ne})},943157:s=>{i.Ea("Gelu",s,void 0)},943209:(s,p,y,S,O,D)=>{i.Ea("MultiHeadAttention",s,{numHeads:p,isUnidirectional:y,maskFilterValue:S,scale:O,doRotary:D})},943368:s=>{i.Ea("BiasAdd",s,void 0)},943423:s=>{i.Ea("BiasSplitGelu",s,void 0)},943484:(s,p)=>{i.Ea("SkipLayerNormalization",s,{epsilon:p})},943565:(s,p,y,S,O,D,V,oe,ne,ae,pe,xe,Te)=>{i.Ea("Conv",s,{format:ne?"NHWC":"NCHW",auto_pad:p,dilations:[y],group:S,kernel_shape:[O],pads:D?Array.from(n().subarray(D>>>0,V>>>0)):[],strides:[oe],w_is_const:()=>!!r()[ae>>>0],activation:Ze(pe),activation_params:xe?Array.from(u().subarray(xe>>>0,Te>>>0)):[]})},943935:(s,p,y,S,O,D,V,oe,ne,ae,pe,xe,Te,P,me,Ce)=>{i.Ea("Conv",s,{format:xe?"NHWC":"NCHW",auto_pad:p,dilations:[y,S],group:O,kernel_shape:[D,V],pads:oe?Array.from(n().subarray(oe>>>0,ne>>>0)):[],strides:[ae,pe],w_is_const:()=>!!r()[Te>>>0],activation:Ze(P),activation_params:me?Array.from(u().subarray(me>>>0,Ce>>>0)):[]})},944326:s=>{i.zb(s)},944360:(s,p)=>i.Ab(s,p,i.bb.Cb,i.bb.errors)};function qt(s){this.name="ExitStatus",this.message=`Program terminated with exit(${s})`,this.status=s}var Dt=s=>{s.terminate(),s.onmessage=()=>{}},ir=s=>{le.Ya.length==0&&(ct(),le.lb(le.Ya[0]));var p=le.Ya.pop();if(!p)return 6;le.Za.push(p),le.Qa[s.Xa]=p,p.Xa=s.Xa;var y={cmd:"run",start_routine:s.Db,arg:s.tb,pthread_ptr:s.Xa};return I&&p.unref(),p.postMessage(y,s.Jb),0},dt=0,or=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,jt=(s,p,y)=>{p>>>=0;var S=p+y;for(y=p;s[y]&&!(y>=S);)++y;if(16O?S+=String.fromCharCode(O):(O-=65536,S+=String.fromCharCode(55296|O>>10,56320|O&1023))}}else S+=String.fromCharCode(O)}return S},Ze=(s,p)=>(s>>>=0)?jt(a(),s,p):"",kr=s=>{var p=Un();return s=s(),Fr(p),s};function ke(s,p){var y=arguments.length-2,S=arguments;return kr(()=>{for(var O=Nn(8*y),D=O>>>3,V=0;V>>0]=oe}return Va(s,y,O,p)})}function Pr(s){if($)return ke(0,1,s);Pe=s,0{if(Pe=s,$)throw sr(s),"unwind";Pr(s)},Tt=s=>{s instanceof qt||s=="unwind"||b(1,s)};function Rn(){for(var s=i.numThreads;s--;)ct();ee.unshift(()=>{Ne++,ot(()=>Ct())})}function ct(){var s=T("ort-wasm-simd-threaded.worker.js");s=new Worker(s),le.Ya.push(s)}function ot(s){$?s():Promise.all(le.Ya.map(le.lb)).then(s)}var le={Ya:[],Za:[],pb:[],Qa:{},hb(){$?(le.receiveObjectTransfer=le.Bb,le.threadInitTLS=le.ob,le.setExitStatus=le.nb):Rn()},nb:s=>Pe=s,Nb:["$terminateWorker"],Eb:()=>{for(var s of le.Za)Dt(s);for(s of le.Ya)Dt(s);le.Ya=[],le.Za=[],le.Qa=[]},mb:s=>{var p=s.Xa;delete le.Qa[p],le.Ya.push(s),le.Za.splice(le.Za.indexOf(s),1),s.Xa=0,zn(p)},Bb(){},ob(){le.pb.forEach(s=>s())},lb:s=>new Promise(p=>{s.onmessage=D=>{D=D.data;var V=D.cmd;if(D.targetThread&&D.targetThread!=Gr()){var oe=le.Qa[D.targetThread];oe?oe.postMessage(D,D.transferList):K(`Internal error! Worker sent a message "${V}" to target pthread ${D.targetThread}, but that thread no longer exists!`)}else V==="checkMailbox"?zt():V==="spawnThread"?ir(D):V==="cleanupThread"?le.mb(le.Qa[D.thread]):V==="killThread"?(D=D.thread,V=le.Qa[D],delete le.Qa[D],Dt(V),zn(D),le.Za.splice(le.Za.indexOf(V),1),V.Xa=0):V==="cancelThread"?le.Qa[D.thread].postMessage({cmd:"cancel"}):V==="loaded"?(s.loaded=!0,I&&!s.Xa&&s.unref(),p(s)):V==="alert"?alert(`Thread ${D.threadId}: ${D.text}`):D.target==="setimmediate"?s.postMessage(D):V==="callHandler"?i[D.handler](...D.args):V&&K(`worker sent an unknown command ${V}`)},s.onerror=D=>{throw K(`worker sent an error! ${D.filename}:${D.lineno}: ${D.message}`),D},I&&(s.on("message",D=>s.onmessage({data:D})),s.on("error",D=>s.onerror(D)));var y=[],S=["onExit"],O;for(O of S)i.hasOwnProperty(O)&&y.push(O);s.postMessage({cmd:"load",handlers:y,urlOrBlob:i.mainScriptUrlOrBlob||e,wasmMemory:X,wasmModule:Z})})};i.PThread=le;var It=s=>{for(;0{var s=Gr(),p=o()[s+52>>>2>>>0];s=o()[s+56>>>2>>>0],Ga(p,p-s),Fr(p)};function sr(s){if($)return ke(1,0,s);Kt(s)}i.invokeEntryPoint=(s,p)=>{s=Fa.apply(null,[s,p]),0>>2>>>0]=p},this.rb=function(p){o()[this.gb+8>>>2>>>0]=p},this.hb=function(p,y){this.qb(),this.sb(p),this.rb(y)},this.qb=function(){o()[this.gb+16>>>2>>>0]=0}}var Br=0,ur=0;function Dr(s,p,y,S){return $?ke(2,1,s,p,y,S):zr(s,p,y,S)}function zr(s,p,y,S){if(s>>>=0,p>>>=0,y>>>=0,S>>>=0,typeof SharedArrayBuffer>"u")return K("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;var O=[];return $&&O.length===0?Dr(s,p,y,S):(s={Db:y,Xa:s,tb:S,Jb:O},$?(s.Lb="spawnThread",postMessage(s,O),0):ir(s))}function Mr(s,p,y){return $?ke(3,1,s,p,y):0}function Ur(s,p){if($)return ke(4,1,s,p)}var lr=s=>{for(var p=0,y=0;y=S?p++:2047>=S?p+=2:55296<=S&&57343>=S?(p+=4,++y):p+=3}return p},Nr=(s,p,y,S)=>{if(y>>>=0,!(0=V){var oe=s.charCodeAt(++D);V=65536+((V&1023)<<10)|oe&1023}if(127>=V){if(y>=S)break;p[y++>>>0]=V}else{if(2047>=V){if(y+1>=S)break;p[y++>>>0]=192|V>>6}else{if(65535>=V){if(y+2>=S)break;p[y++>>>0]=224|V>>12}else{if(y+3>=S)break;p[y++>>>0]=240|V>>18,p[y++>>>0]=128|V>>12&63}p[y++>>>0]=128|V>>6&63}p[y++>>>0]=128|V&63}}return p[y>>>0]=0,y-O},ie=(s,p,y)=>Nr(s,a(),p,y);function dr(s,p){if($)return ke(5,1,s,p)}function Yt(s,p,y){if($)return ke(6,1,s,p,y)}function cr(s,p,y){return $?ke(7,1,s,p,y):0}function pr(s,p){if($)return ke(8,1,s,p)}function mr(s,p,y){if($)return ke(9,1,s,p,y)}function fr(s,p,y,S){if($)return ke(10,1,s,p,y,S)}function hr(s,p,y,S){if($)return ke(11,1,s,p,y,S)}function gr(s,p,y,S){if($)return ke(12,1,s,p,y,S)}function yr(s){if($)return ke(13,1,s)}function br(s,p){if($)return ke(14,1,s,p)}function wr(s,p,y){if($)return ke(15,1,s,p,y)}var Wr=()=>{if(!(0>>=0,typeof Atomics.Kb=="function"&&(Atomics.Kb(n(),s>>>2,s).value.then(zt),s+=128,Atomics.store(n(),s>>>2,1))}i.__emscripten_thread_mailbox_await=Ot;var zt=()=>{var s=Gr();if(s&&(Ot(s),!Oe))try{Ha(),Wr()}catch(p){Tt(p)}};i.checkMailbox=zt;var d=[],g=s=>s%4===0&&(s%100!==0||s%400===0),v=[0,31,60,91,121,152,182,213,244,274,305,335],C=[0,31,59,90,120,151,181,212,243,273,304,334];function B(s,p,y,S,O,D,V,oe){return $?ke(16,1,s,p,y,S,O,D,V,oe):-52}function H(s,p,y,S,O,D,V){if($)return ke(17,1,s,p,y,S,O,D,V)}var j=s=>{var p=lr(s)+1,y=Dn(p);return y&&ie(s,y,p),y},de=[],J=(s,p)=>{de.length=0;for(var y;y=a()[s++>>>0];){var S=y!=105;S&=y!=112,p+=S&&p%8?4:0,de.push(y==112?o()[p>>>2>>>0]:y==105?n()[p>>>2>>>0]:l()[p>>>3>>>0]),p+=S?8:4}return de},re={},se=()=>{if(!we){var s={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:h||"./this.program"},p;for(p in re)re[p]===void 0?delete s[p]:s[p]=re[p];var y=[];for(p in s)y.push(`${p}=${s[p]}`);we=y}return we},we;function Ie(s,p){if($)return ke(18,1,s,p);s>>>=0,p>>>=0;var y=0;return se().forEach((S,O)=>{var D=p+y;for(O=o()[s+4*O>>>2>>>0]=D,D=0;D>>0>>>0]=S.charCodeAt(D);r()[O>>>0>>>0]=0,y+=S.length+1}),0}function k(s,p){if($)return ke(19,1,s,p);s>>>=0,p>>>=0;var y=se();o()[s>>>2>>>0]=y.length;var S=0;return y.forEach(O=>S+=O.length+1),o()[p>>>2>>>0]=S,0}function ue(s){return $?ke(20,1,s):52}function _e(s,p,y,S){return $?ke(21,1,s,p,y,S):52}function ft(s,p,y,S,O){return $?ke(22,1,s,p,y,S,O):70}var Vr=[null,[],[]];function ka(s,p,y,S){if($)return ke(23,1,s,p,y,S);p>>>=0,y>>>=0,S>>>=0;for(var O=0,D=0;D>>2>>>0],oe=o()[p+4>>>2>>>0];p+=8;for(var ne=0;ne>>0],pe=Vr[s];ae===0||ae===10?((s===1?Y:K)(jt(pe,0)),pe.length=0):pe.push(ae)}O+=oe}return o()[S>>>2>>>0]=O,0}var Pa=[31,29,31,30,31,30,31,31,30,31,30,31],Ra=[31,28,31,30,31,30,31,31,30,31,30,31];function kl(s){var p=Array(lr(s)+1);return Nr(s,p,0,p.length),p}var Pl=(s,p)=>{r().set(s,p>>>0)};function Ba(s,p,y,S){function O(P,me,Ce){for(P=typeof P=="number"?P.toString():P||"";P.lengthXa?-1:0Mt-P.getDate())me-=Mt-P.getDate()+1,P.setDate(1),11>Ce?P.setMonth(Ce+1):(P.setMonth(0),P.setFullYear(P.getFullYear()+1));else{P.setDate(P.getDate()+me);break}}return Ce=new Date(P.getFullYear()+1,0,4),me=oe(new Date(P.getFullYear(),0,4)),Ce=oe(Ce),0>=V(me,P)?0>=V(Ce,P)?P.getFullYear()+1:P.getFullYear():P.getFullYear()-1}s>>>=0,p>>>=0,y>>>=0,S>>>=0;var ae=o()[S+40>>>2>>>0];S={Hb:n()[S>>>2>>>0],Gb:n()[S+4>>>2>>>0],eb:n()[S+8>>>2>>>0],jb:n()[S+12>>>2>>>0],fb:n()[S+16>>>2>>>0],ab:n()[S+20>>>2>>>0],Wa:n()[S+24>>>2>>>0],$a:n()[S+28>>>2>>>0],Ob:n()[S+32>>>2>>>0],Fb:n()[S+36>>>2>>>0],Ib:ae?Ze(ae):""},y=Ze(y),ae={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var pe in ae)y=y.replace(new RegExp(pe,"g"),ae[pe]);var xe="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),Te="January February March April May June July August September October November December".split(" ");ae={"%a":P=>xe[P.Wa].substring(0,3),"%A":P=>xe[P.Wa],"%b":P=>Te[P.fb].substring(0,3),"%B":P=>Te[P.fb],"%C":P=>D((P.ab+1900)/100|0,2),"%d":P=>D(P.jb,2),"%e":P=>O(P.jb,2," "),"%g":P=>ne(P).toString().substring(2),"%G":P=>ne(P),"%H":P=>D(P.eb,2),"%I":P=>(P=P.eb,P==0?P=12:12{for(var me=0,Ce=0;Ce<=P.fb-1;me+=(g(P.ab+1900)?Pa:Ra)[Ce++]);return D(P.jb+me,3)},"%m":P=>D(P.fb+1,2),"%M":P=>D(P.Gb,2),"%n":()=>` +`,"%p":P=>0<=P.eb&&12>P.eb?"AM":"PM","%S":P=>D(P.Hb,2),"%t":()=>" ","%u":P=>P.Wa||7,"%U":P=>D(Math.floor((P.$a+7-P.Wa)/7),2),"%V":P=>{var me=Math.floor((P.$a+7-(P.Wa+6)%7)/7);if(2>=(P.Wa+371-P.$a-2)%7&&me++,me)me==53&&(Ce=(P.Wa+371-P.$a)%7,Ce==4||Ce==3&&g(P.ab)||(me=1));else{me=52;var Ce=(P.Wa+7-P.$a-1)%7;(Ce==4||Ce==5&&g(P.ab%400-1))&&me++}return D(me,2)},"%w":P=>P.Wa,"%W":P=>D(Math.floor((P.$a+7-(P.Wa+6)%7)/7),2),"%y":P=>(P.ab+1900).toString().substring(2),"%Y":P=>P.ab+1900,"%z":P=>{P=P.Fb;var me=0<=P;return P=Math.abs(P)/60,(me?"+":"-")+("0000"+(P/60*100+P%60)).slice(-4)},"%Z":P=>P.Ib,"%%":()=>"%"},y=y.replace(/%%/g,"\0\0");for(pe in ae)y.includes(pe)&&(y=y.replace(new RegExp(pe,"g"),ae[pe](S)));return y=y.replace(/\0\0/g,"%"),pe=kl(y),pe.length>p?0:(Pl(pe,s),pe.length-1)}var Hr=s=>{try{s()}catch(p){lt(p)}};function Rl(){var s=Q,p={};for(let[y,S]of Object.entries(s))p[y]=typeof S=="function"?function(){Lr.push(y);try{return S.apply(null,arguments)}finally{Oe||(Lr.pop(),ht&&kt===1&&Lr.length===0&&(kt=0,dt+=1,Hr(ja),typeof Fibers<"u"&&Fibers.Pb()))}}:S;return p}var kt=0,ht=null,Da=0,Lr=[],za={},Ma={},Bl=0,Bn=null,Dl=[];function zl(){return new Promise((s,p)=>{Bn={resolve:s,reject:p}})}function Ml(){var s=Dn(65548),p=s+12;o()[s>>>2>>>0]=p,o()[s+4>>>2>>>0]=p+65536,p=Lr[0];var y=za[p];return y===void 0&&(y=Bl++,za[p]=y,Ma[y]=p),p=y,n()[s+8>>>2>>>0]=p,s}function Ul(){var s=n()[ht+8>>>2>>>0];return s=Q[Ma[s]],--dt,s()}function Nl(s){if(!Oe){if(kt===0){var p=!1,y=!1;s((S=0)=>{if(!Oe&&(Da=S,p=!0,y)){kt=2,Hr(()=>Ka(ht)),typeof Browser<"u"&&Browser.ib.vb&&Browser.ib.resume(),S=!1;try{var O=Ul()}catch(oe){O=oe,S=!0}var D=!1;if(!ht){var V=Bn;V&&(Bn=null,(S?V.reject:V.resolve)(O),D=!0)}if(S&&!D)throw O}}),y=!0,p||(kt=1,ht=Ml(),typeof Browser<"u"&&Browser.ib.vb&&Browser.ib.pause(),Hr(()=>qa(ht)))}else kt===2?(kt=0,Hr(Ya),Na(ht),ht=null,Dl.forEach(S=>{if(!Oe)try{S(),Wr()}catch(O){Tt(O)}})):lt(`invalid state: ${kt}`);return Da}}function Wl(s){return Nl(p=>{s().then(p)})}le.hb();var Vl=[Pr,sr,Dr,Mr,Ur,dr,Yt,cr,pr,mr,fr,hr,gr,yr,br,wr,B,H,Ie,k,ue,_e,ft,ka],Hl={r:function(s,p,y){return Wl(async()=>{await i.xb(s,p,y)})},b:function(s,p,y){throw s>>>=0,new Rr(s).hb(p>>>0,y>>>0),Br=s,ur++,Br},N:function(s){Wa(s>>>0,!_,1,!w,131072,!1),le.ob()},l:function(s){s>>>=0,$?postMessage({cmd:"cleanupThread",thread:s}):le.mb(le.Qa[s])},J:zr,i:Mr,T:Ur,F:dr,H:Yt,U:cr,R:pr,L:mr,Q:fr,p:hr,G:gr,D:yr,S:br,E:wr,q:()=>1,B:function(s,p){s>>>=0,s==p>>>0?setTimeout(()=>zt()):$?postMessage({targetThread:s,cmd:"checkMailbox"}):(s=le.Qa[s])&&s.postMessage({cmd:"checkMailbox"})},K:function(s,p,y,S){p>>>=0,d.length=y,S=S>>>0>>>3;for(var O=0;O>>0];return s=0>s?Ft[-s-1]:Vl[s],le.ub=p,p=s.apply(null,d),le.ub=0,p},M:Ot,W:function(s){I&&le.Qa[s>>>0].ref()},u:function(s,p,y){s=p+2097152>>>0<4194305-!!s?(s>>>0)+4294967296*p:NaN,y>>>=0,s=new Date(1e3*s),n()[y>>>2>>>0]=s.getUTCSeconds(),n()[y+4>>>2>>>0]=s.getUTCMinutes(),n()[y+8>>>2>>>0]=s.getUTCHours(),n()[y+12>>>2>>>0]=s.getUTCDate(),n()[y+16>>>2>>>0]=s.getUTCMonth(),n()[y+20>>>2>>>0]=s.getUTCFullYear()-1900,n()[y+24>>>2>>>0]=s.getUTCDay(),s=(s.getTime()-Date.UTC(s.getUTCFullYear(),0,1,0,0,0,0))/864e5|0,n()[y+28>>>2>>>0]=s},v:function(s,p,y){s=p+2097152>>>0<4194305-!!s?(s>>>0)+4294967296*p:NaN,y>>>=0,s=new Date(1e3*s),n()[y>>>2>>>0]=s.getSeconds(),n()[y+4>>>2>>>0]=s.getMinutes(),n()[y+8>>>2>>>0]=s.getHours(),n()[y+12>>>2>>>0]=s.getDate(),n()[y+16>>>2>>>0]=s.getMonth(),n()[y+20>>>2>>>0]=s.getFullYear()-1900,n()[y+24>>>2>>>0]=s.getDay(),p=(g(s.getFullYear())?v:C)[s.getMonth()]+s.getDate()-1|0,n()[y+28>>>2>>>0]=p,n()[y+36>>>2>>>0]=-(60*s.getTimezoneOffset()),p=new Date(s.getFullYear(),6,1).getTimezoneOffset();var S=new Date(s.getFullYear(),0,1).getTimezoneOffset();s=(p!=S&&s.getTimezoneOffset()==Math.min(S,p))|0,n()[y+32>>>2>>>0]=s},w:function(s){s>>>=0;var p=new Date(n()[s+20>>>2>>>0]+1900,n()[s+16>>>2>>>0],n()[s+12>>>2>>>0],n()[s+8>>>2>>>0],n()[s+4>>>2>>>0],n()[s>>>2>>>0],0),y=n()[s+32>>>2>>>0],S=p.getTimezoneOffset(),O=new Date(p.getFullYear(),6,1).getTimezoneOffset(),D=new Date(p.getFullYear(),0,1).getTimezoneOffset(),V=Math.min(D,O);return 0>y?n()[s+32>>>2>>>0]=+(O!=D&&V==S):0>>2>>>0]=p.getDay(),y=(g(p.getFullYear())?v:C)[p.getMonth()]+p.getDate()-1|0,n()[s+28>>>2>>>0]=y,n()[s>>>2>>>0]=p.getSeconds(),n()[s+4>>>2>>>0]=p.getMinutes(),n()[s+8>>>2>>>0]=p.getHours(),n()[s+12>>>2>>>0]=p.getDate(),n()[s+16>>>2>>>0]=p.getMonth(),n()[s+20>>>2>>>0]=p.getYear(),s=p.getTime(),isNaN(s)?(n()[Ua()>>>2>>>0]=61,s=-1):s/=1e3,La((St=s,1<=+Math.abs(St)?0>>0:~~+Math.ceil((St-+(~~St>>>0))/4294967296)>>>0:0)),s>>>0},s:B,t:H,A:function(s,p,y){function S(ae){return(ae=ae.toTimeString().match(/\(([A-Za-z ]+)\)$/))?ae[1]:"GMT"}s>>>=0,p>>>=0,y>>>=0;var O=new Date().getFullYear(),D=new Date(O,0,1),V=new Date(O,6,1);O=D.getTimezoneOffset();var oe=V.getTimezoneOffset(),ne=Math.max(O,oe);o()[s>>>2>>>0]=60*ne,n()[p>>>2>>>0]=+(O!=oe),s=S(D),p=S(V),s=j(s),p=j(p),oe>>2>>>0]=s,o()[y+4>>>2>>>0]=p):(o()[y>>>2>>>0]=p,o()[y+4>>>2>>>0]=s)},d:()=>{lt("")},c:function(s,p,y){return s>>>=0,p=J(p>>>0,y>>>0),Ft[s].apply(null,p)},k:function(s,p,y){return s>>>=0,p=J(p>>>0,y>>>0),Ft[s].apply(null,p)},m:()=>{},j:()=>Date.now(),V:()=>{throw dt+=1,"unwind"},C:function(){return 4294901760},f:()=>performance.timeOrigin+performance.now(),g:()=>I?(ki(),Ut(Oi)).cpus().length:navigator.hardwareConcurrency,y:function(s){s>>>=0;var p=a().length;if(s<=p||4294901760=y;y*=2){var S=p*(1+.2/y);S=Math.min(S,s+100663296);var O=Math;S=Math.max(s,S);e:{O=(O.min.call(O,4294901760,S+(65536-S%65536)%65536)-X.buffer.byteLength+65535)/65536;try{X.grow(O),Ge();var D=1;break e}catch{}D=void 0}if(D)return!0}return!1},O:Ie,P:k,I:Kt,h:ue,o:_e,x:ft,n:ka,a:X||i.wasmMemory,z:Ba,e:function(s,p,y,S){return Ba(s>>>0,p>>>0,y>>>0,S>>>0)}},Q=function(){function s(y,S){return Q=y.exports,Q=Rl(),Q=Ll(),le.pb.push(Q.Da),be.unshift(Q.X),Z=S,Ct(),Q}var p={a:Hl};if(Ne++,i.instantiateWasm)try{return i.instantiateWasm(p,s)}catch(y){K(`Module.instantiateWasm callback failed with error: ${y}`),m(y)}return Et(p,function(y){s(y.instance,y.module)}).catch(m),{}}();i._OrtInit=(s,p)=>(i._OrtInit=Q.Y)(s,p),i._OrtGetLastError=(s,p)=>(i._OrtGetLastError=Q.Z)(s,p),i._OrtCreateSessionOptions=(s,p,y,S,O,D,V,oe,ne,ae)=>(i._OrtCreateSessionOptions=Q._)(s,p,y,S,O,D,V,oe,ne,ae),i._OrtAppendExecutionProvider=(s,p)=>(i._OrtAppendExecutionProvider=Q.$)(s,p),i._OrtAddFreeDimensionOverride=(s,p,y)=>(i._OrtAddFreeDimensionOverride=Q.aa)(s,p,y),i._OrtAddSessionConfigEntry=(s,p,y)=>(i._OrtAddSessionConfigEntry=Q.ba)(s,p,y),i._OrtReleaseSessionOptions=s=>(i._OrtReleaseSessionOptions=Q.ca)(s),i._OrtCreateSession=(s,p,y)=>(i._OrtCreateSession=Q.da)(s,p,y),i._OrtReleaseSession=s=>(i._OrtReleaseSession=Q.ea)(s),i._OrtGetInputOutputCount=(s,p,y)=>(i._OrtGetInputOutputCount=Q.fa)(s,p,y),i._OrtGetInputName=(s,p)=>(i._OrtGetInputName=Q.ga)(s,p),i._OrtGetOutputName=(s,p)=>(i._OrtGetOutputName=Q.ha)(s,p),i._OrtFree=s=>(i._OrtFree=Q.ia)(s),i._OrtCreateTensor=(s,p,y,S,O,D)=>(i._OrtCreateTensor=Q.ja)(s,p,y,S,O,D),i._OrtGetTensorData=(s,p,y,S,O)=>(i._OrtGetTensorData=Q.ka)(s,p,y,S,O),i._OrtReleaseTensor=s=>(i._OrtReleaseTensor=Q.la)(s),i._OrtCreateRunOptions=(s,p,y,S)=>(i._OrtCreateRunOptions=Q.ma)(s,p,y,S),i._OrtAddRunConfigEntry=(s,p,y)=>(i._OrtAddRunConfigEntry=Q.na)(s,p,y),i._OrtReleaseRunOptions=s=>(i._OrtReleaseRunOptions=Q.oa)(s),i._OrtCreateBinding=s=>(i._OrtCreateBinding=Q.pa)(s),i._OrtBindInput=(s,p,y)=>(i._OrtBindInput=Q.qa)(s,p,y),i._OrtBindOutput=(s,p,y,S)=>(i._OrtBindOutput=Q.ra)(s,p,y,S),i._OrtClearBoundOutputs=s=>(i._OrtClearBoundOutputs=Q.sa)(s),i._OrtReleaseBinding=s=>(i._OrtReleaseBinding=Q.ta)(s),i._OrtRunWithBinding=(s,p,y,S,O)=>(i._OrtRunWithBinding=Q.ua)(s,p,y,S,O),i._OrtRun=(s,p,y,S,O,D,V,oe)=>(i._OrtRun=Q.va)(s,p,y,S,O,D,V,oe),i._OrtEndProfiling=s=>(i._OrtEndProfiling=Q.wa)(s),i._JsepOutput=(s,p,y)=>(i._JsepOutput=Q.xa)(s,p,y),i._JsepGetNodeName=s=>(i._JsepGetNodeName=Q.ya)(s);var Ua=()=>(Ua=Q.za)(),Gr=i._pthread_self=()=>(Gr=i._pthread_self=Q.Aa)(),Dn=i._malloc=s=>(Dn=i._malloc=Q.Ba)(s),Na=i._free=s=>(Na=i._free=Q.Ca)(s);i.__emscripten_tls_init=()=>(i.__emscripten_tls_init=Q.Da)();var Wa=i.__emscripten_thread_init=(s,p,y,S,O,D)=>(Wa=i.__emscripten_thread_init=Q.Fa)(s,p,y,S,O,D);i.__emscripten_thread_crashed=()=>(i.__emscripten_thread_crashed=Q.Ga)();var Va=(s,p,y,S)=>(Va=Q.Ha)(s,p,y,S),zn=s=>(zn=Q.Ia)(s),Mn=i.__emscripten_thread_exit=s=>(Mn=i.__emscripten_thread_exit=Q.Ja)(s),Ha=()=>(Ha=Q.Ka)(),La=s=>(La=Q.La)(s),Ga=(s,p)=>(Ga=Q.Ma)(s,p),Un=()=>(Un=Q.Na)(),Fr=s=>(Fr=Q.Oa)(s),Nn=s=>(Nn=Q.Pa)(s),Fa=i.dynCall_ii=(s,p)=>(Fa=i.dynCall_ii=Q.Ra)(s,p),qa=s=>(qa=Q.Sa)(s),ja=()=>(ja=Q.Ta)(),Ka=s=>(Ka=Q.Ua)(s),Ya=()=>(Ya=Q.Va)();i.___start_em_js=944472,i.___stop_em_js=944633;function Ll(){var s=Q;s=Object.assign({},s);var p=S=>()=>S()>>>0,y=S=>O=>S(O)>>>0;return s.za=p(s.za),s.Aa=p(s.Aa),s.Ba=y(s.Ba),s.emscripten_main_runtime_thread_id=p(s.emscripten_main_runtime_thread_id),s.Na=p(s.Na),s.Pa=y(s.Pa),s}i.wasmMemory=X,i.stackAlloc=Nn,i.stackSave=Un,i.stackRestore=Fr,i.keepRuntimeAlive=()=>0Pi)});var Di=Zt((Hm,td)=>{td.exports='"use strict";var Module={},ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";if(ENVIRONMENT_IS_NODE){var nodeWorkerThreads=require("worker_threads"),parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",e=>onmessage({data:e}));var fs=require("fs"),vm=require("vm");Object.assign(global,{self:global,require,Module,location:{href:__filename},Worker:nodeWorkerThreads.Worker,importScripts:e=>vm.runInThisContext(fs.readFileSync(e,"utf8"),{filename:e}),postMessage:e=>parentPort.postMessage(e),performance:global.performance||{now:Date.now}})}var initializedJS=!1;function threadPrintErr(){var e=Array.prototype.slice.call(arguments).join(" ");if(ENVIRONMENT_IS_NODE){fs.writeSync(2,e+`\n`);return}console.error(e)}function threadAlert(){var e=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:e,threadId:Module._pthread_self()})}var err=threadPrintErr;self.alert=threadAlert,Module.instantiateWasm=(e,t)=>{var a=Module.wasmModule;Module.wasmModule=null;var r=new WebAssembly.Instance(a,e);return t(r)},self.onunhandledrejection=e=>{throw e.reason||e};function handleMessage(e){try{if(e.data.cmd==="load"){let a=[];self.onmessage=r=>a.push(r),self.startWorker=r=>{Module=r,postMessage({cmd:"loaded"});for(let s of a)handleMessage(s);self.onmessage=handleMessage},Module.wasmModule=e.data.wasmModule;for(const r of e.data.handlers)Module[r]=(...s)=>{postMessage({cmd:"callHandler",handler:r,args:s})};if(Module.wasmMemory=e.data.wasmMemory,Module.buffer=Module.wasmMemory.buffer,Module.ENVIRONMENT_IS_PTHREAD=!0,typeof e.data.urlOrBlob=="string")importScripts(e.data.urlOrBlob);else{var t=URL.createObjectURL(e.data.urlOrBlob);importScripts(t),URL.revokeObjectURL(t)}ortWasmThreaded(Module)}else if(e.data.cmd==="run"){Module.__emscripten_thread_init(e.data.pthread_ptr,0,0,1),Module.__emscripten_thread_mailbox_await(e.data.pthread_ptr),Module.establishStackSpace(),Module.PThread.receiveObjectTransfer(e.data),Module.PThread.threadInitTLS(),initializedJS||(initializedJS=!0);try{Module.invokeEntryPoint(e.data.start_routine,e.data.arg)}catch(a){if(a!="unwind")throw a}}else e.data.cmd==="cancel"?Module._pthread_self()&&Module.__emscripten_thread_exit(-1):e.data.target==="setimmediate"||(e.data.cmd==="checkMailbox"?initializedJS&&Module.checkMailbox():e.data.cmd&&(err(`worker.js received unknown command ${e.data.cmd}`),err(e.data)))}catch(a){throw Module.__emscripten_thread_crashed?.(),a}}self.onmessage=handleMessage;\n'});var Mi,rd,Xn,Qn,rn,zi,nd,ad,id,Ui,Ve,Jt=F(()=>{"use strict";Mi=Ai();rd=Bi(),Qn=!1,rn=!1,zi=!1,nd=e=>{if(e===1)return!1;if(typeof SharedArrayBuffer>"u")return typeof self<"u"&&!self.crossOriginIsolated&&console.warn("env.wasm.numThreads is set to "+e+", but this will not work unless you enable crossOriginIsolated mode. See https://web.dev/cross-origin-isolation-guide/ for more info."),!1;typeof process<"u"&&process.versions&&process.versions.node&&console.warn("env.wasm.numThreads is set to "+e+", however, currently onnxruntime-web does not support multi-threads in Node.js. Please consider using onnxruntime-node for performance critical scenarios.");try{return typeof MessageChannel<"u"&&new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch{return!1}},ad=()=>{try{return WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,30,1,28,0,65,0,253,15,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,186,1,26,11]))}catch{return!1}},id=(e,t)=>e?t?"ort-wasm-simd-threaded.wasm":"ort-wasm-simd.wasm":t?"ort-wasm-threaded.wasm":"ort-wasm.wasm",Ui=async e=>{if(Qn)return Promise.resolve();if(rn)throw new Error("multiple calls to 'initializeWebAssembly()' detected.");if(zi)throw new Error("previous call to 'initializeWebAssembly()' failed.");rn=!0;let t=e.initTimeout,r=e.numThreads,a=e.simd,n=nd(r),o=a&&ad(),u=e.wasmPaths,l=typeof u=="string"?u:void 0,i=id(o,n),c=typeof u=="object"?u[i]:void 0,m=!1,f=[];if(t>0&&f.push(new Promise(h=>{setTimeout(()=>{m=!0,h()},t)})),f.push(new Promise((h,b)=>{let w=n?rd:Mi,_={locateFile:(I,$)=>{if(n&&I.endsWith(".worker.js")&&typeof Blob<"u")return URL.createObjectURL(new Blob([Di()],{type:"text/javascript"}));if(I.endsWith(".wasm")){if(c)return c;let x=l??$;return i==="ort-wasm-simd.wasm"?x+"ort-wasm-simd.jsep.wasm":i==="ort-wasm-simd-threaded.wasm"?x+"ort-wasm-simd-threaded.jsep.wasm":x+i}return $+I}};if(n)if(_.numThreads=r,typeof Blob>"u")_.mainScriptUrlOrBlob=(void 0)(__dirname,"ort-wasm-threaded.js");else{let I=`var ortWasmThreaded=${w.toString()};`;_.mainScriptUrlOrBlob=new Blob([I],{type:"text/javascript"})}w(_).then(I=>{rn=!1,Qn=!0,Xn=I,h()},I=>{rn=!1,zi=!0,b(I)})})),await Promise.race(f),m)throw new Error(`WebAssembly backend initializing failed due to timeout: ${t}ms`)},Ve=()=>{if(Qn&&Xn)return Xn;throw new Error("WebAssembly is not initialized yet.")}});var Le,$r,Re,nn=F(()=>{"use strict";Jt();Le=(e,t)=>{let r=Ve(),a=r.lengthBytesUTF8(e)+1,n=r._malloc(a);return r.stringToUTF8(e,n,a),t.push(n),n},$r=(e,t,r,a)=>{if(typeof e=="object"&&e!==null){if(r.has(e))throw new Error("Circular reference in options");r.add(e)}Object.entries(e).forEach(([n,o])=>{let u=t?t+n:n;if(typeof o=="object")$r(o,u+".",r,a);else if(typeof o=="string"||typeof o=="number")a(u,o.toString());else if(typeof o=="boolean")a(u,o?"1":"0");else throw new Error(`Can't handle extra config type: ${typeof o}`)})},Re=e=>{let t=Ve(),r=t.stackSave();try{let a=t.stackAlloc(8);t._OrtGetLastError(a,a+4);let n=t.HEAP32[a/4],o=t.HEAPU32[a/4+1],u=o?t.UTF8ToString(o):"";throw new Error(`${e} ERROR_CODE: ${n}, ERROR_MESSAGE: ${u}`)}finally{t.stackRestore(r)}}});var Ni,Wi=F(()=>{"use strict";Jt();nn();Ni=e=>{let t=Ve(),r=0,a=[],n=e||{};try{if(e?.logSeverityLevel===void 0)n.logSeverityLevel=2;else if(typeof e.logSeverityLevel!="number"||!Number.isInteger(e.logSeverityLevel)||e.logSeverityLevel<0||e.logSeverityLevel>4)throw new Error(`log serverity level is not valid: ${e.logSeverityLevel}`);if(e?.logVerbosityLevel===void 0)n.logVerbosityLevel=0;else if(typeof e.logVerbosityLevel!="number"||!Number.isInteger(e.logVerbosityLevel))throw new Error(`log verbosity level is not valid: ${e.logVerbosityLevel}`);e?.terminate===void 0&&(n.terminate=!1);let o=0;return e?.tag!==void 0&&(o=Le(e.tag,a)),r=t._OrtCreateRunOptions(n.logSeverityLevel,n.logVerbosityLevel,!!n.terminate,o),r===0&&Re("Can't create run options."),e?.extra!==void 0&&$r(e.extra,"",new WeakSet,(u,l)=>{let i=Le(u,a),c=Le(l,a);t._OrtAddRunConfigEntry(r,i,c)!==0&&Re(`Can't set a run config entry: ${u} - ${l}.`)}),[r,a]}catch(o){throw r!==0&&t._OrtReleaseRunOptions(r),a.forEach(u=>t._free(u)),o}}});var od,sd,ud,ld,Vi,Hi=F(()=>{"use strict";Jt();nn();od=e=>{switch(e){case"disabled":return 0;case"basic":return 1;case"extended":return 2;case"all":return 99;default:throw new Error(`unsupported graph optimization level: ${e}`)}},sd=e=>{switch(e){case"sequential":return 0;case"parallel":return 1;default:throw new Error(`unsupported execution mode: ${e}`)}},ud=e=>{e.extra||(e.extra={}),e.extra.session||(e.extra.session={});let t=e.extra.session;t.use_ort_model_bytes_directly||(t.use_ort_model_bytes_directly="1"),e.executionProviders&&e.executionProviders.some(r=>(typeof r=="string"?r:r.name)==="webgpu")&&(e.enableMemPattern=!1)},ld=(e,t,r)=>{for(let a of t){let n=typeof a=="string"?a:a.name;switch(n){case"webnn":if(n="WEBNN",typeof a!="string"){let u=a;if(u?.deviceType){let l=Le("deviceType",r),i=Le(u.deviceType,r);Ve()._OrtAddSessionConfigEntry(e,l,i)!==0&&Re(`Can't set a session config entry: 'deviceType' - ${u.deviceType}.`)}if(u?.numThreads){let l=u.numThreads;(typeof l!="number"||!Number.isInteger(l)||l<0)&&(l=0);let i=Le("numThreads",r),c=Le(l.toString(),r);Ve()._OrtAddSessionConfigEntry(e,i,c)!==0&&Re(`Can't set a session config entry: 'numThreads' - ${u.numThreads}.`)}if(u?.powerPreference){let l=Le("powerPreference",r),i=Le(u.powerPreference,r);Ve()._OrtAddSessionConfigEntry(e,l,i)!==0&&Re(`Can't set a session config entry: 'powerPreference' - ${u.powerPreference}.`)}}break;case"webgpu":if(n="JS",typeof a!="string"){let u=a;if(u?.preferredLayout){if(u.preferredLayout!=="NCHW"&&u.preferredLayout!=="NHWC")throw new Error(`preferredLayout must be either 'NCHW' or 'NHWC': ${u.preferredLayout}`);let l=Le("preferredLayout",r),i=Le(u.preferredLayout,r);Ve()._OrtAddSessionConfigEntry(e,l,i)!==0&&Re(`Can't set a session config entry: 'preferredLayout' - ${u.preferredLayout}.`)}}break;case"wasm":case"cpu":continue;default:throw new Error(`not supported execution provider: ${n}`)}let o=Le(n,r);Ve()._OrtAppendExecutionProvider(e,o)!==0&&Re(`Can't append execution provider: ${n}.`)}},Vi=e=>{let t=Ve(),r=0,a=[],n=e||{};ud(n);try{let o=od(n.graphOptimizationLevel??"all"),u=sd(n.executionMode??"sequential"),l=typeof n.logId=="string"?Le(n.logId,a):0,i=n.logSeverityLevel??2;if(!Number.isInteger(i)||i<0||i>4)throw new Error(`log serverity level is not valid: ${i}`);let c=n.logVerbosityLevel??0;if(!Number.isInteger(c)||c<0||c>4)throw new Error(`log verbosity level is not valid: ${c}`);let m=typeof n.optimizedModelFilePath=="string"?Le(n.optimizedModelFilePath,a):0;if(r=t._OrtCreateSessionOptions(o,!!n.enableCpuMemArena,!!n.enableMemPattern,u,!!n.enableProfiling,0,l,i,c,m),r===0&&Re("Can't create session options."),n.executionProviders&&ld(r,n.executionProviders,a),n.freeDimensionOverrides)for(let[f,h]of Object.entries(n.freeDimensionOverrides)){if(typeof f!="string")throw new Error(`free dimension override name must be a string: ${f}`);if(typeof h!="number"||!Number.isInteger(h)||h<0)throw new Error(`free dimension override value must be a non-negative integer: ${h}`);let b=Le(f,a);t._OrtAddFreeDimensionOverride(r,b,h)!==0&&Re(`Can't set a free dimension override: ${f} - ${h}.`)}return n.extra!==void 0&&$r(n.extra,"",new WeakSet,(f,h)=>{let b=Le(f,a),w=Le(h,a);t._OrtAddSessionConfigEntry(r,b,w)!==0&&Re(`Can't set a session config entry: ${f} - ${h}.`)}),[r,a]}catch(o){throw r!==0&&t._OrtReleaseSessionOptions(r),a.forEach(u=>t._free(u)),o}}});var Jn,tt,_r,an,xr,on,ea,Ue=F(()=>{"use strict";Jn=e=>{switch(e){case"int8":return 3;case"uint8":return 2;case"bool":return 9;case"int16":return 5;case"uint16":return 4;case"int32":return 6;case"uint32":return 12;case"float16":return 10;case"float32":return 1;case"float64":return 11;case"string":return 8;case"int64":return 7;case"uint64":return 13;default:throw new Error(`unsupported data type: ${e}`)}},tt=e=>{switch(e){case 3:return"int8";case 2:return"uint8";case 9:return"bool";case 5:return"int16";case 4:return"uint16";case 6:return"int32";case 12:return"uint32";case 10:return"float16";case 1:return"float32";case 11:return"float64";case 8:return"string";case 7:return"int64";case 13:return"uint64";default:throw new Error(`unsupported data type: ${e}`)}},_r=e=>[void 0,4,1,1,2,2,4,8,void 0,1,2,8,4,8,void 0,void 0,void 0][e],an=e=>{switch(e){case"float16":return Uint16Array;case"float32":return Float32Array;case"uint8":return Uint8Array;case"int8":return Int8Array;case"uint16":return Uint16Array;case"int16":return Int16Array;case"int32":return Int32Array;case"bool":return Uint8Array;case"float64":return Float64Array;case"uint32":return Uint32Array;case"int64":return BigInt64Array;case"uint64":return BigUint64Array;default:throw new Error(`unsupported type: ${e}`)}},xr=e=>{switch(e){case"verbose":return 0;case"info":return 1;case"warning":return 2;case"error":return 3;case"fatal":return 4;default:throw new Error(`unsupported logging level: ${e}`)}},on=e=>e==="float32"||e==="int32"||e==="int64"||e==="bool"||e==="float16"||e==="uint32",ea=e=>{switch(e){case"none":return 0;case"cpu":return 1;case"cpu-pinned":return 2;case"texture":return 3;case"gpu-buffer":return 4;default:throw new Error(`unsupported data location: ${e}`)}}});var Sr,ta=F(()=>{"use strict";Sr=async e=>{if(typeof e=="string")if(typeof process<"u"&&process.versions&&process.versions.node)try{return new Uint8Array(await(void 0)(e))}catch(t){if(t.code==="ERR_FS_FILE_TOO_LARGE"){let r=(void 0)(e),a=[];for await(let n of r)a.push(n);return new Uint8Array(Buffer.concat(a))}throw t}else{let t=await fetch(e);if(!t.ok)throw new Error(`failed to load external data file: ${e}`);let r=t.headers.get("Content-Length"),a=r?parseInt(r,10):0;if(a<1073741824)return new Uint8Array(await t.arrayBuffer());{if(!t.body)throw new Error(`failed to load external data file: ${e}, no response body.`);let n=t.body.getReader(),o;try{o=new ArrayBuffer(a)}catch(l){if(l instanceof RangeError){let i=Math.ceil(a/65536);o=new WebAssembly.Memory({initial:i,maximum:i}).buffer}else throw l}let u=0;for(;;){let{done:l,value:i}=await n.read();if(l)break;let c=i.byteLength;new Uint8Array(o,u,c).set(i),u+=c}return new Uint8Array(o,0,a)}}else return e instanceof Blob?new Uint8Array(await e.arrayBuffer()):e instanceof Uint8Array?e:new Uint8Array(e)}});var dd,cd,Li,Gi,Fi,pd,De,Pt=F(()=>{"use strict";Ue();dd=["V","I","W","E","F"],cd=(e,t)=>{console.log(`[${dd[e]},${new Date().toISOString()}]${t}`)},Fi=(e,t)=>{Li=e,Gi=t},pd=(e,t)=>{let r=xr(e),a=xr(Li);r>=a&&cd(r,typeof t=="function"?t():t)},De=(...e)=>{Gi&&pd(...e)}});var qi,ji=F(()=>{"use strict";Ue();qi=(e,t)=>new(an(t))(e)});var sn=F(()=>{"use strict"});var un,md,Ki,na,ra,Zi,Xi=F(()=>{"use strict";Pt();sn();un=e=>Math.ceil(e/16)*16,md=1,Ki=()=>md++,na=async(e,t,r,a)=>{let n=un(r),o=e.device.createBuffer({size:n,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ});try{let u=e.getCommandEncoder();e.endComputePass(),u.copyBufferToBuffer(t,0,o,0,n),e.flush(),await o.mapAsync(GPUMapMode.READ);let l=o.getMappedRange();if(a){let i=a();return i.set(new Uint8Array(l,0,r)),i}else return new Uint8Array(l.slice(0,r))}finally{o.destroy()}},ra=class{constructor(t){this.backend=t;this.storageCache=new Map,this.freeBuffers=new Map,this.freeUniformBuffers=new Map,this.buffersForUploadingPending=[],this.buffersPending=[],this.externalBuffers=new Map}upload(t,r){let a=r.buffer,n=r.byteOffset,o=r.byteLength,u=un(o),l=this.storageCache.get(t);if(!l)throw new Error("gpu data for uploading does not exist");if(l.originalSize!==o)throw new Error(`inconsistent data size. gpu data size=${l.originalSize}, data size=${o}`);let i=this.backend.device.createBuffer({mappedAtCreation:!0,size:u,usage:GPUBufferUsage.MAP_WRITE|GPUBufferUsage.COPY_SRC}),c=i.getMappedRange();new Uint8Array(c).set(new Uint8Array(a,n,o)),i.unmap();let m=this.backend.getCommandEncoder();this.backend.endComputePass(),m.copyBufferToBuffer(i,0,l.gpuData.buffer,0,u),De("verbose",()=>`[WebGPU] GpuDataManager.upload(id=${t})`),this.buffersForUploadingPending.push(i)}memcpy(t,r){let a=this.storageCache.get(t);if(!a)throw new Error("source gpu data for memcpy does not exist");let n=this.storageCache.get(r);if(!n)throw new Error("destination gpu data for memcpy does not exist");if(a.originalSize!==n.originalSize)throw new Error("inconsistent source and destination gpu data size");let o=un(a.originalSize),u=this.backend.getCommandEncoder();this.backend.endComputePass(),u.copyBufferToBuffer(a.gpuData.buffer,0,n.gpuData.buffer,0,o)}registerExternalBuffer(t,r,a){let n;if(a){if(n=this.externalBuffers.get(a),n===void 0)throw new Error("previous buffer is not registered");if(t===a)return De("verbose",()=>`[WebGPU] GpuDataManager.registerExternalBuffer(size=${r}) => id=${n}, buffer is the same, skip.`),n;this.externalBuffers.delete(a)}else n=Ki();return this.storageCache.set(n,{gpuData:{id:n,type:0,buffer:t},originalSize:r}),this.externalBuffers.set(t,n),De("verbose",()=>`[WebGPU] GpuDataManager.registerExternalBuffer(size=${r}) => id=${n}, registered.`),n}unregisterExternalBuffer(t){let r=this.externalBuffers.get(t);r!==void 0&&(this.storageCache.delete(r),this.externalBuffers.delete(t),De("verbose",()=>`[WebGPU] GpuDataManager.unregisterExternalBuffer() => id=${r}`))}create(t,r=GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST){let a=un(t),n,o=(r&GPUBufferUsage.STORAGE)===GPUBufferUsage.STORAGE,u=(r&GPUBufferUsage.UNIFORM)===GPUBufferUsage.UNIFORM;if(o||u){let i=o?this.freeBuffers:this.freeUniformBuffers,c=i.get(a);c||(c=[],i.set(a,c)),c.length>0?n=c.pop():n=this.backend.device.createBuffer({size:a,usage:r})}else n=this.backend.device.createBuffer({size:a,usage:r});let l={id:Ki(),type:0,buffer:n};return this.storageCache.set(l.id,{gpuData:l,originalSize:t}),De("verbose",()=>`[WebGPU] GpuDataManager.create(size=${t}) => id=${l.id}`),l}get(t){return this.storageCache.get(t)?.gpuData}release(t){let r=this.storageCache.get(t);if(!r)throw new Error("releasing data does not exist");return De("verbose",()=>`[WebGPU] GpuDataManager.release(id=${t}), gpuDataId=${r.gpuData.id}`),this.storageCache.delete(t),this.buffersPending.push(r.gpuData.buffer),r.originalSize}async download(t,r){let a=this.storageCache.get(t);if(!a)throw new Error("data does not exist");await na(this.backend,a.gpuData.buffer,a.originalSize,r)}refreshPendingBuffers(){for(let t of this.buffersForUploadingPending)t.destroy();this.buffersForUploadingPending=[];for(let t of this.buffersPending)(t.usage&GPUBufferUsage.STORAGE)===GPUBufferUsage.STORAGE?this.freeBuffers.get(t.size).push(t):(t.usage&GPUBufferUsage.UNIFORM)===GPUBufferUsage.UNIFORM?this.freeUniformBuffers.get(t.size).push(t):t.destroy();this.buffersPending=[]}dispose(){this.freeBuffers.forEach(t=>{t.forEach(r=>{r.destroy()})}),this.freeUniformBuffers.forEach(t=>{t.forEach(r=>{r.destroy()})}),this.storageCache.forEach(t=>{t.gpuData.buffer.destroy()}),this.storageCache=new Map,this.freeBuffers=new Map,this.freeUniformBuffers=new Map}},Zi=(...e)=>new ra(...e)});var aa,ge,je=F(()=>{"use strict";aa=class{constructor(t){Object.assign(this,t)}get cacheKey(){return this.key||(this.key=Object.getOwnPropertyNames(this).sort().map(t=>`${this[t]}`).join(";")),this.key}},ge=e=>new aa(e)});var ia,gt,U,Vt,ln,dn,cn,$e=F(()=>{"use strict";ia=class{static calcMatMulShape(t,r){return t[1]!==r[0]?void 0:[t[0],r[1]]}},gt=class{static calcShape(t,r,a=!1){let n=t.length,o=r.length;if(n===0)return r;if(o===0)return t;let u=Math.max(t.length,r.length),l=new Array(u);if(a){if(n<2||o<2)return;let i=ia.calcMatMulShape([t[n-2],t[n-1]],[r[o-2],r[o-1]]);if(i===void 0)return;[l[u-2],l[u-1]]=i}for(let i=a?3:1;i<=u;i++){let c=n-i<0?1:t[n-i],m=o-i<0?1:r[o-i];if(c!==m&&c>1&&m>1)return;l[u-i]=Math.max(c,m)}return l}static isValidBroadcast(t,r){let a=t.length,n=r.length;if(a>n)return!1;for(let o=1;o<=a;o++)if(t[a-o]!==1&&t[a-o]!==r[n-o])return!1;return!0}},U=class e{static size(t){return e.getSizeFromDimensionRange(t,0,t.length)}static sizeFromDimension(t,r){if(r<0||r>t.length)throw new Error(`invalid dimension of ${r} for sizeFromDimension as Tensor has ${t.length} dimensions.`);return e.getSizeFromDimensionRange(t,r,t.length)}static sizeToDimension(t,r){if(r<0||r>t.length)throw new Error(`invalid dimension of ${r} for sizeToDimension as Tensor has ${t.length} dimensions.`);return e.getSizeFromDimensionRange(t,0,r)}static getSizeFromDimensionRange(t,r,a){let n=1;for(let o=r;o=0;--n)a[n]=a[n+1]*t[n+1];return a}static normalizeAxis(t,r){if(t<-r&&t>=r)throw new Error("unsupported axis for this operation.");return t<0?t+r:t}static normalizeAxes(t,r){return t.map(a=>this.normalizeAxis(a,r??t.length))}static sortBasedOnPerm(t,r){return r?r.map(a=>t[a]):t.slice().reverse()}static padShape(t,r){let a=t.length;return t.map((n,o)=>n+r[o]+r[o+a])}static areEqual(t,r){return t.length!==r.length?!1:t.every((a,n)=>a===r[n])}},Vt=class e{static adjustPoolAttributes(t,r,a,n,o,u){if(!t&&a.length!==r.length-2)throw new Error("length of specified kernel shapes should be 2 less than length of input dimensions");if(t)for(let l=0;l=a.length?a.push(r[l+2]):a[l]=r[l+2];for(let l=0;l=a[l]||u[l+a.length]>=a[l])throw new Error("pads should be smaller than kernel")}}static adjustPadsBasedOnAutoPad(t,r,a,n,o,u,l){if(l){if(o.length!==2*(t.length-2))throw new Error("length of pads should be twice the length of data dimensions");if(r.length!==t.length-2)throw new Error("length of strides should be the length of data dimensions");if(n.length!==t.length-2)throw new Error("length of kernel shapes should be the length of data dimensions");for(let i=0;i{"use strict";Ue();$e();fd=64,sa=(e,t)=>{if(t===3)throw new Error("vec3 has same alignment as vec4, use vec4 instead");switch(e){case 10:return t>1?`vec${t}`:"f16";case 1:return t>1?`vec${t}`:"f32";case 6:return t>1?`vec${t}`:"i32";case 12:return t>1?`vec${t}`:"u32";case 7:if(t>1)throw new Error("currently not supported vecX of uint64 yet");return["vec2","i32"];case 13:if(t>1)throw new Error("currently not supported vecX of uint64 yet");return["vec2","u32"];case 9:if(t!==4)throw new Error("bool must be vec4");return["u32","vec4"];default:throw new Error(`Unknown data type: ${e}`)}},Fe=(e,t=1)=>{let r=sa(e,t);return typeof r=="string"?r:r[0]},yt=(e,t=1)=>{let r=sa(e,t);return typeof r=="string"?r:r[1]},G=e=>e.length===0?[]:[{type:"uint32",data:e},{type:"uint32",data:U.computeStrides(e)}],qe=e=>e%4===0?4:e%2===0?2:1,Qe=(e="f32",t,r="0")=>!t||t===1?`${e}(${r})`:`vec${t}<${e}>(${r})`,pt=(e,t,r)=>e==="f32"?r:t===1?`f32(${r})`:`vec${t}f(${r})`,rt=(e,t)=>t===4?`(${e}.x + ${e}.y + ${e}.z + ${e}.w)`:t===2?`(${e}.x + ${e}.y)`:t===3?`(${e}.x + ${e}.y + ${e}.z)`:e,ce=(e,t,r)=>e.startsWith("uniforms.")&&r>4?typeof t=="string"?`${e}[(${t}) / 4][(${t}) % 4]`:`${e}[${Math.floor(t/4)}][${t%4}]`:r>1?`${e}[${t}]`:e,ua=(e,t,r,a,n)=>{let o=typeof r=="number",u=o?r:r.length,l=[...new Array(u).keys()],i=u<2?"u32":u<=4?`vec${u}`:`array`,c=sa(t,n),m=typeof c=="string"?c:c[1],f=typeof c=="string"?c:c[0],h={indices:i,value:m,storage:f,tensor:t},b=L=>typeof L=="string"?L:`${L}u`,w={offsetToIndices:!1,indicesToOffset:!1,broadcastedIndicesToOffset:!1,set:!1,setByIndices:!1,get:!1,getByIndices:!1},_=o?"uniforms.":"",I=`${_}${e}_shape`,$=`${_}${e}_strides`,x="";for(let L=0;L ${h.indices} { + var indices: ${h.indices}; + var current = offset; + ${x} + return indices; + }`,A=L=>(w.offsetToIndices=!0,u<2?L:`o2i_${e}(${L})`),z=[];if(u>=2)for(let L=u-1;L>=0;L--)z.push(`${ce($,L,u)} * (indices[${L}])`);let R=u<2?"":` + fn i2o_${e}(indices: ${h.indices}) -> u32 { + return ${z.join("+")}; + }`,N=L=>(w.indicesToOffset=!0,u<2?L:`i2o_${e}(${L})`),E=(...L)=>u===0?"0u":`${h.indices}(${L.map(b).join(",")})`,W=(L,ee)=>u<2?`${L}`:`${ce(L,ee,u)}`,te=(L,ee,be)=>u<2?`${L}=${be};`:`${ce(L,ee,u)}=${be};`,Y={},K=(L,ee)=>{w.broadcastedIndicesToOffset=!0;let be=`${ee.name}broadcastedIndicesTo${e}Offset`;if(be in Y)return`${be}(${L})`;let nt=[];for(let Ne=u-1;Ne>=0;Ne--){let We=ee.indicesGet("outputIndices",Ne+ee.rank-u);nt.push(`${W($,Ne)} * (${We} % ${W(I,Ne)})`)}return Y[be]=`fn ${be}(outputIndices: ${ee.type.indices}) -> u32 { + return ${nt.length>0?nt.join("+"):"0u"}; + }`,`${be}(${L})`},X=(L,ee)=>(()=>{if(h.storage===h.value)return`${e}[${L}]=${ee};`;if(h.storage==="vec2"&&h.value==="i32")return`${e}[${L}]=vec2(u32(${ee}), select(0u, 0xFFFFFFFFu, ${ee} < 0));`;if(h.storage==="vec2"&&h.value==="u32")return`${e}[${L}]=vec2(u32(${ee}), 0u);`;if(h.storage==="u32"&&h.value==="vec4")return`${e}[${L}]=dot(vec4(0x1, 0x100, 0x10000, 0x1000000), vec4(${ee}));`;throw new Error(`not supported combination of storage type ${h.storage} and value type ${h.value} yet`)})(),Z=L=>(()=>{if(h.storage===h.value)return`${e}[${L}]`;if(h.storage==="vec2"&&h.value==="i32")return`i32(${e}[${L}].x)`;if(h.storage==="vec2"&&h.value==="u32")return`u32(${e}[${L}].x)`;if(h.storage==="u32"&&h.value==="vec4")return`vec4(bool(${e}[${L}] & 0xFFu), bool(${e}[${L}] & 0xFF00u), bool(${e}[${L}] & 0xFF0000u), bool(${e}[${L}] & 0xFF000000u))`;throw new Error(`not supported combination of storage type ${h.storage} and value type ${h.value} yet`)})(),Oe=u<2?"":` + fn get_${e}ByIndices(indices: ${h.indices}) -> ${m} { + return ${Z(`i2o_${e}(indices)`)}; + }`,Pe=u<2?"":(()=>{let L=l.map(be=>`d${be}: u32`).join(", "),ee=l.map(be=>`d${be}`).join(", ");return` + fn get_${e}(${L}) -> ${m} { + return get_${e}ByIndices(${E(ee)}); + }`})(),fe=(...L)=>{if(L.length!==u)throw new Error(`indices length must be ${u}`);let ee=L.map(b).join(",");return u===0?Z("0u"):u===1?Z(ee[0]):(w.get=!0,w.getByIndices=!0,w.indicesToOffset=!0,`get_${e}(${ee})`)},Ae=L=>u<2?Z(L):(w.getByIndices=!0,w.indicesToOffset=!0,`get_${e}ByIndices(${L})`),he=u<2?"":` + fn set_${e}ByIndices(indices: ${h.indices}, value: ${m}) { + ${X(`i2o_${e}(indices)`,"value")} + }`,ye=u<2?"":(()=>{let L=l.map(be=>`d${be}: u32`).join(", "),ee=l.map(be=>`d${be}`).join(", ");return` + fn set_${e}(${L}, value: ${m}) { + set_${e}ByIndices(${E(ee)}, value); + }`})();return{impl:()=>{let L=[],ee=!1;return w.offsetToIndices&&(L.push(T),ee=!0),w.indicesToOffset&&(L.push(R),ee=!0),w.broadcastedIndicesToOffset&&(Object.values(Y).forEach(be=>L.push(be)),ee=!0),w.set&&(L.push(ye),ee=!0),w.setByIndices&&(L.push(he),ee=!0),w.get&&(L.push(Pe),ee=!0),w.getByIndices&&(L.push(Oe),ee=!0),!o&&ee&&L.unshift(`const ${I} = ${h.indices}(${r.join(",")});`,`const ${$} = ${h.indices}(${U.computeStrides(r).join(",")});`),L.join(` +`)},type:h,offsetToIndices:A,indicesToOffset:N,broadcastedIndicesToOffset:K,indices:E,indicesGet:W,indicesSet:te,set:(...L)=>{if(L.length!==u+1)throw new Error(`indices length must be ${u}`);let ee=L[u];if(typeof ee!="string")throw new Error("value must be string");let be=L.slice(0,u).map(b).join(",");return u===0?X("0u",ee):u===1?X(be[0],ee):(w.set=!0,w.setByIndices=!0,w.indicesToOffset=!0,`set_${e}(${be}, ${ee})`)},setByOffset:X,setByIndices:(L,ee)=>u<2?X(L,ee):(w.setByIndices=!0,w.indicesToOffset=!0,`set_${e}ByIndices(${L}, ${ee});`),get:fe,getByOffset:Z,getByIndices:Ae,usage:a,name:e,strides:$,shape:I,rank:u}},M=(e,t,r,a=1)=>ua(e,t,r,"input",a),q=(e,t,r,a=1)=>ua(e,t,r,"output",a),pn=(e,t,r,a=1)=>ua(e,t,r,"internal",a),oa=class{constructor(t){this.normalizedDispatchGroup=t;this.internalVariables=[];this.variables=[];this.uniforms=[];this.variableIndex=0}guardAgainstOutOfBoundsWorkgroupSizes(t){return`if (global_idx >= ${typeof t=="number"?`${t}u`:t}) { return; }`}mainStart(t=fd){let r=typeof t=="number"?t:t[0],a=typeof t=="number"?1:t[1],n=typeof t=="number"?1:t[2],o=this.normalizedDispatchGroup[1]===1&&this.normalizedDispatchGroup[2]===1,u=o?`@builtin(global_invocation_id) global_id : vec3, + @builtin(workgroup_id) workgroup_id : vec3, + @builtin(local_invocation_id) local_id : vec3`:`@builtin(local_invocation_id) local_id : vec3, + @builtin(local_invocation_index) local_idx : u32, + @builtin(workgroup_id) workgroup_id : vec3, + @builtin(num_workgroups) num_workgroups : vec3`,l=o?"let global_idx = global_id.x; let local_idx = local_id.x;":`let global_idx = (workgroup_id.z * num_workgroups[0] * num_workgroups[1] + + workgroup_id.y * num_workgroups[0] + workgroup_id.x) * ${r*a*n}u + local_idx;`;return`@compute @workgroup_size(${r}, ${a}, ${n}) + fn main(${u}) { + ${l} + `}appendVariableUniforms(t){t.rank!==0&&(t.shape.startsWith("uniforms.")&&this.uniforms.push({name:t.shape.replace("uniforms.",""),type:"u32",length:t.rank}),t.strides.startsWith("uniforms.")&&this.uniforms.push({name:t.strides.replace("uniforms.",""),type:"u32",length:t.rank}))}declareVariable(t,r){if(t.usage==="internal")throw new Error("cannot use internal variable with declareVariable(). use registerInternalVariables() instead.");this.variables.push(t),this.appendVariableUniforms(t);let a=t.usage==="input"?"read":"read_write",n=t.type.storage;return`@group(0) @binding(${r}) var ${t.name}: array<${n}>;`}declareVariables(...t){return t.map(r=>this.declareVariable(r,this.variableIndex++)).join(` +`)}registerInternalVariable(t){if(t.usage!=="internal")throw new Error("cannot use input or output variable with registerInternalVariable(). use declareVariables() instead.");this.internalVariables.push(t),this.appendVariableUniforms(t)}registerInternalVariables(...t){return t.forEach(r=>this.registerInternalVariable(r)),this}registerUniform(t,r,a=1){return this.uniforms.push({name:t,type:r,length:a}),this}registerUniforms(t){return this.uniforms=this.uniforms.concat(t),this}uniformDeclaration(){if(this.uniforms.length===0)return"";let t=[];for(let{name:r,type:a,length:n}of this.uniforms)if(n&&n>4)t.push(`${r}:array, ${Math.ceil(n/4)}>`);else{let o=n==null||n===1?a:`vec${n}<${a}>`;t.push(`${r}:${o}`)}return` + struct Uniforms { ${t.join(", ")} }; + @group(0) @binding(${this.variableIndex}) var uniforms: Uniforms;`}get additionalImplementations(){return this.uniformDeclaration()+this.variables.map(t=>t.impl()).join(` +`)+this.internalVariables.map(t=>t.impl()).join(` +`)}},Qi=e=>new oa(e),er=(e,t)=>{let r=e.length,a=[];for(let n=0;n1&&u===1&&a.unshift(o)}return a},Be=e=>!0});var hd,Ji,gd,yd,mt,eo,to,tr=F(()=>{"use strict";$e();je();ve();hd=e=>{if(!e||e.length!==1)throw new Error("Transpose requires 1 input.")},Ji=(e,t)=>t&&t.length!==e?[...new Array(e).keys()].reverse():t,gd=(e,t)=>U.sortBasedOnPerm(e,Ji(e.length,t)),yd=(e,t,r,a)=>{let n=[];n.push(`fn perm(i: ${a.type.indices}) -> ${r.type.indices} { + var a: ${r.type.indices};`);for(let o=0;o{let r=e.dataType,a=e.dims.length,n=Ji(a,t),o=Be(a),u=gd(e.dims,n),l=o?u.length:u,i=o?a:e.dims,c=q("output",r,l),m=M("a",r,i),f=h=>` + ${h.registerUniform("output_size","u32").declareVariables(m,c)} + + ${yd(n,a,m,c)} + + ${h.mainStart()} + ${h.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} + + let indices = ${c.offsetToIndices("global_idx")}; + let aIndices = perm(indices); + + ${c.setByOffset("global_idx",m.getByIndices("aIndices"))} + }`;return{name:"Transpose",shaderCache:{hint:`${t}`,inputDependencies:o?["rank"]:["dims"]},getRunData:h=>{let b=U.size(u);return{outputs:[{dims:u,dataType:h[0].dataType}],dispatchGroup:{x:Math.ceil(b/64)},programUniforms:o?[{type:"uint32",data:b},...G(h[0].dims),...G(u)]:[{type:"uint32",data:b}]}},getShaderSource:f}},eo=(e,t)=>{hd(e.inputs),e.compute(mt(e.inputs[0],t.perm))},to=e=>ge({perm:e.perm})});var bd,wd,vd,$d,_d,xd,Sd,Id,Cd,Ad,bt,ro,no,ao,io,oo,so,uo,lo,co,po,mo=F(()=>{"use strict";$e();ve();mn();tr();bd={max:"select(bestValue, candidate, candidate > bestValue)",min:"select(bestValue, candidate, candidate < bestValue)",mean:"bestValue + candidate",sum:"bestValue + candidate",prod:"bestValue * candidate",sumSquare:"bestValue + candidate * candidate",logSumExp:"bestValue + exp(candidate)",l1:"bestValue + abs(candidate)",l2:"bestValue + candidate * candidate",logSum:"bestValue + candidate"},wd={max:"select(bestValue, candidate, candidate > bestValue)",min:"select(bestValue, candidate, candidate < bestValue)",mean:"bestValue + candidate",sum:"bestValue + candidate",prod:"bestValue * candidate",sumSquare:"bestValue + candidate",logSumExp:"bestValue + candidate",l1:"bestValue + candidate",l2:"bestValue + candidate",logSum:"bestValue + candidate"},vd={max:"_A[offset]",min:"_A[offset]",mean:"0",sum:"0",prod:"1",sumSquare:"0",logSumExp:"0",l1:"0",l2:"0",logSum:"0"},$d={max:"bestValue",min:"bestValue",sum:"bestValue",prod:"bestValue",sumSquare:"bestValue",logSumExp:"log(bestValue)",l1:"bestValue",l2:"sqrt(bestValue)",logSum:"log(bestValue)"},_d=(e,t)=>{let r=[];for(let a=t-e;a{let r=[],a=e.length;for(let o=0;oe[o]);return[r,n]},Sd=(e,t)=>{let r=e.length+t.length,a=[],n=0;for(let o=0;o{for(let r=0;r{let r=[];if(!Id(e,t)){for(let a=0;ar.push(a))}return r},Ad=(e,t,r,a,n,o,u)=>{let l=r[0].dims,i=U.size(o),c=U.size(u),m=M("_A",r[0].dataType,l),f=q("output",n,o),h=32,b=` + var aBestValues : array<${f.type.storage}, ${h}>; + `;return{name:e,shaderCache:t,getShaderSource:_=>` + ${_.registerUniform("reduceSize","u32").declareVariables(m,f)} + ${b} + fn DIV_CEIL(a : u32, b : u32) -> u32 { + return ((a - 1u) / b + 1u); + } + ${_.mainStart(h)} + + let outputIndex = global_idx / ${h}; + let offset = outputIndex * uniforms.reduceSize; + + var bestValue = ${f.type.storage}(${vd[a]}); + let Length = uniforms.reduceSize; + for (var k = local_idx; k < Length; k = k + ${h}) { + let candidate = ${f.type.storage}(${m.getByOffset("offset + k")}); + bestValue = ${bd[a]}; + } + aBestValues[local_idx] = bestValue; + workgroupBarrier(); + + var reduceSize = min(Length, ${h}u); + for (var currentSize = reduceSize / 2u; reduceSize > 1u; + currentSize = reduceSize / 2u) { + let interval = DIV_CEIL(reduceSize, 2u); + if (local_idx < currentSize) { + let candidate = aBestValues[local_idx + interval]; + bestValue = ${wd[a]}; + aBestValues[local_idx] = bestValue; + } + reduceSize = interval; + workgroupBarrier(); + } + + if (local_idx == 0u) { + ${f.setByOffset("outputIndex",`${a==="mean"?`bestValue / ${f.type.storage}(uniforms.reduceSize)`:`${$d[a]}`}`)}; + } + }`,getRunData:()=>({outputs:[{dims:o,dataType:n}],dispatchGroup:{x:i},programUniforms:[{type:"uint32",data:c}]})}},bt=(e,t,r,a)=>{let n=e.inputs.length===1?r:la(e.inputs,r),o=n.axes;o.length===0&&!n.noopWithEmptyAxes&&(o=e.inputs[0].dims.map((b,w)=>w));let u=U.normalizeAxes(o,e.inputs[0].dims.length),l=u,i=e.inputs[0],c=Cd(l,e.inputs[0].dims.length);c.length>0&&(i=e.compute(mt(e.inputs[0],c),{inputs:[0],outputs:[-1]})[0],l=_d(l.length,i.dims.length));let[m,f]=xd(i.dims,l),h=m;n.keepDims&&(h=Sd(m,u)),e.compute(Ad(t,{hint:n.cacheKey,inputDependencies:["type"]},[i],a,e.inputs[0].dataType,h,f),{inputs:[i]})},ro=(e,t)=>{bt(e,"ReduceMeanShared",t,"mean")},no=(e,t)=>{bt(e,"ReduceL1Shared",t,"l1")},ao=(e,t)=>{bt(e,"ReduceL2Shared",t,"l2")},io=(e,t)=>{bt(e,"ReduceLogSumExpShared",t,"logSumExp")},oo=(e,t)=>{bt(e,"ReduceMaxShared",t,"max")},so=(e,t)=>{bt(e,"ReduceMinShared",t,"min")},uo=(e,t)=>{bt(e,"ReduceProdShared",t,"prod")},lo=(e,t)=>{bt(e,"ReduceSumShared",t,"sum")},co=(e,t)=>{bt(e,"ReduceSumSquareShared",t,"sumSquare")},po=(e,t)=>{bt(e,"ReduceLogSumShared",t,"logSum")}});var wt,Ed,fn,la,vt,Td,Od,kd,Pd,Rd,Bd,Dd,zd,Md,Ud,$t,fo,ho,go,yo,bo,wo,vo,$o,_o,xo,mn=F(()=>{"use strict";$e();je();ve();mo();wt=e=>{if(!e||e.length===0||e.length>2)throw new Error("Reduce op requires 1 or 2 inputs.");if(e.length===2&&e[1].dims.length!==1)throw new Error("Invalid axes input dims.")},Ed=e=>["","",`var value = ${e.getByIndices("input_indices")};`,""],fn=(e,t,r,a,n,o,u=!1,l=!1)=>{let i=[],c=r[0].dims,m=c.length,f=U.normalizeAxes(n,m),h=!l&&f.length===0;c.forEach((I,$)=>{h||f.indexOf($)>=0?u&&i.push(1):i.push(I)});let b=i.length,w=U.size(i);return{name:e,shaderCache:t,getShaderSource:I=>{let $=[],x=M("_A",r[0].dataType,m),T=q("output",o,b),A=a(x,T,f),z=A[2];for(let R=0,N=0;R=0?(u&&N++,z=`for(var j${R}: u32 = 0; j${R} < ${c[R]}; j${R}++) { + ${A[2].includes("last_index")?`let last_index = j${R};`:""} + ${x.indicesSet("input_indices",R,`j${R}`)} + ${z} + }`):($.push(`${x.indicesSet("input_indices",R,T.indicesGet("output_indices",N))};`),N++);return` + + ${I.registerUniform("output_size","u32").declareVariables(x,T)} + + ${I.mainStart()} + ${I.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} + var input_indices: ${x.type.indices}; + let output_indices = ${T.offsetToIndices("global_idx")}; + + ${$.join(` +`)} + ${A[0]} // init ops for reduce max/min + ${A[1]} + ${z} + ${A[3]} + ${A.length===4?T.setByOffset("global_idx","value"):A.slice(4).join(` +`)} + }`},getRunData:()=>({outputs:[{dims:i,dataType:o}],dispatchGroup:{x:Math.ceil(w/64)},programUniforms:[{type:"uint32",data:w},...G(c),...G(i)]})}},la=(e,t)=>{let r=[];return e[1].dims[0]>0&&e[1].getBigInt64Array().forEach(a=>r.push(Number(a))),ge({axes:r,keepDims:t.keepDims,noopWithEmptyAxes:t.noopWithEmptyAxes})},vt=(e,t,r,a)=>{let n=e.inputs,o=n.length===1?r:la(n,r);e.compute(fn(t,{hint:o.cacheKey,inputDependencies:["rank"]},[n[0]],o.noopWithEmptyAxes&&o.axes.length===0?Ed:a,o.axes,n[0].dataType,o.keepDims,o.noopWithEmptyAxes),{inputs:[0]})},Td=(e,t)=>{wt(e.inputs),vt(e,"ReduceLogSum",t,(a,n)=>[`var value = ${n.type.storage}(0);`,"",`value += ${a.getByIndices("input_indices")};`,"value = log(value);"])},Od=(e,t)=>{wt(e.inputs),vt(e,"ReduceL1",t,(a,n)=>[`var value = ${n.type.storage}(0);`,"",`value += abs(${a.getByIndices("input_indices")});`,""])},kd=(e,t)=>{wt(e.inputs),vt(e,"ReduceL2",t,(a,n)=>[`var t = ${n.type.value}(0); var value = ${n.type.value}(0);`,"",`t = ${a.getByIndices("input_indices")}; value += (t * t);`,"value = sqrt(value);"])},Pd=(e,t)=>{wt(e.inputs),vt(e,"ReduceLogSumExp",t,(a,n)=>[`var value = ${n.type.storage}(0);`,"",`value += exp(${a.getByIndices("input_indices")});`,"value = log(value);"])},Rd=(e,t)=>{wt(e.inputs),vt(e,"ReduceMax",t,(a,n,o)=>{let u=[];for(let l=0;l=0||o.length===0)&&u.push(a.indicesSet("input_indices",l,0));return[`${u.join(` +`)}`,`var value = ${a.getByIndices("input_indices")};`,`value = max(value, ${a.getByIndices("input_indices")});`,""]})},Bd=(e,t)=>{wt(e.inputs),vt(e,"ReduceMean",t,(a,n,o)=>{let u=1;for(let l=0;l=0||o.length===0)&&(u*=e.inputs[0].dims[l]);return["var sum = f32(0);","",`sum += f32(${a.getByIndices("input_indices")});`,`let value = ${n.type.value}(sum / ${u});`]})},Dd=(e,t)=>{wt(e.inputs),vt(e,"ReduceMin",t,(a,n,o)=>{let u=[];for(let l=0;l=0||o.length===0)&&u.push(`input_indices[${l}] = 0;`);return[`${u.join(` +`)}`,`var value = ${a.getByIndices("input_indices")};`,`value = min(value, ${a.getByIndices("input_indices")});`,""]})},zd=(e,t)=>{wt(e.inputs),vt(e,"ReduceProd",t,(a,n)=>[`var value = ${n.type.storage}(1);`,"",`value *= ${a.getByIndices("input_indices")};`,""])},Md=(e,t)=>{wt(e.inputs),vt(e,"ReduceSum",t,(a,n)=>[`var value = ${n.type.storage}(0);`,"",`value += ${a.getByIndices("input_indices")};`,""])},Ud=(e,t)=>{wt(e.inputs),vt(e,"ReduceSumSquare",t,(a,n)=>[`var t = ${n.type.value}(0); var value = ${n.type.value}(0);`,"",`t = ${a.getByIndices("input_indices")}; value += t * t;`,""])},$t=(e,t,r)=>{if(t.length===0)return r;let a=1,n=1;for(let o=0;o1024},fo=(e,t)=>{$t(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Bd(e,t):ro(e,t)},ho=(e,t)=>{$t(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Od(e,t):no(e,t)},go=(e,t)=>{$t(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?kd(e,t):ao(e,t)},yo=(e,t)=>{$t(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Pd(e,t):io(e,t)},bo=(e,t)=>{$t(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Rd(e,t):oo(e,t)},wo=(e,t)=>{$t(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Dd(e,t):so(e,t)},vo=(e,t)=>{$t(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?zd(e,t):uo(e,t)},$o=(e,t)=>{$t(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Md(e,t):lo(e,t)},_o=(e,t)=>{$t(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Ud(e,t):co(e,t)},xo=(e,t)=>{$t(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Td(e,t):po(e,t)}});var So,Io,Co,da,Ao=F(()=>{"use strict";Ue();je();mn();So=e=>{if(!e||e.length===0||e.length>2)throw new Error("ArgMinMaxOp op requires 1 or 2 inputs.");if(e[0].dataType!==1)throw new Error("Invalid input type.")},Io=(e,t)=>{So(e.inputs);let r=(a,n,o)=>{let u=[];for(let l=0;l=0||o.length===0)&&u.push(`input_indices[${l}] = 0;`);return[`${u.join(` +`)}`,`var value = ${a.getByIndices("input_indices")}; +var best_index : i32 = 0;`,`if (${a.getByIndices("input_indices")} ${t.selectLastIndex>0?"<=":"<"} value) { + value = ${a.getByIndices("input_indices")}; + best_index = i32(last_index); + }`,"",n.setByOffset("global_idx","best_index")]};e.compute(fn("ArgMin",{hint:t.cacheKey,inputDependencies:["rank"]},[e.inputs[0]],r,[t.axis],7,t.keepDims),{inputs:[0]})},Co=(e,t)=>{So(e.inputs);let r=(a,n,o)=>{let u=[];for(let l=0;l=0||o.length===0)&&u.push(`input_indices[${l}] = 0;`);return[`${u.join(` +`)}`,`var value = ${a.getByIndices("input_indices")}; +var best_index : i32 = 0;`,`if (${a.getByIndices("input_indices")} ${t.selectLastIndex>0?">=":">"} value) { + value = ${a.getByIndices("input_indices")}; + best_index = i32(last_index); + }`,"",n.setByOffset("global_idx","best_index")]};e.compute(fn("argMax",{hint:t.cacheKey,inputDependencies:["rank"]},[e.inputs[0]],r,[t.axis],7,t.keepDims),{inputs:[0]})},da=e=>ge(e)});var Nd,Wd,Vd,Hd,hn,Ld,Eo,ca=F(()=>{"use strict";Ue();sn();ve();Nd=(e,t)=>{let r=e[0],a=e[1],n=e[2],o=e[3],u=e[4],l=e[5];if(u&&l)throw new Error("Attention cannot have both past and relative_position_bias");if(r.dims.length!==3)throw new Error('Input "input" must have 3 dimensions');let i=r.dims[0],c=r.dims[1],m=r.dims[2];if(n.dims.length!==1)throw new Error('Input "bias" is expected to have 1 dimensions');if(a.dims.length!==2)throw new Error('Input "weights" is expected to have 2 dimensions');if(a.dims[0]!==m)throw new Error("Input 1 dimension 0 should have same length as dimension 2 of input 0");if(n.dims[0]!==a.dims[1])throw new Error('Input "bias" dimension 0 should have same length as dimension 1 of input "weights"');let f=n.dims[0]/3,h=f,b=h;if(t.qkvHiddenSizes.length>0){if(t.qkvHiddenSizes.length!==3)throw new Error("qkv_hidden_sizes attribute should have 3 elements");for(let T of t.qkvHiddenSizes)if(T%t.numHeads!==0)throw new Error("qkv_hidden_sizes should be divisible by num_heads");f=t.qkvHiddenSizes[0],h=t.qkvHiddenSizes[1],b=t.qkvHiddenSizes[2]}let w=c;if(f!==h)throw new Error("qkv_hidden_sizes first element should be same as the second");if(n.dims[0]!==f+h+b)throw new Error('Input "bias" dimension 0 should have same length as sum of Q/K/V hidden sizes');let _=0;if(u){if(h!==b)throw new Error('Input "past" expect k_hidden_size == v_hidden_size');if(u.dims.length!==5)throw new Error('Input "past" must have 5 dimensions');if(u.dims[0]!==2)throw new Error('Input "past" first dimension must be 2');if(u.dims[1]!==i)throw new Error('Input "past" second dimension must be batch_size');if(u.dims[2]!==t.numHeads)throw new Error('Input "past" third dimension must be num_heads');if(u.dims[4]!==h/t.numHeads)throw new Error('Input "past" fifth dimension must be k_hidden_size / num_heads');t.pastPresentShareBuffer||(_=u.dims[3])}let I=w+_,$=-1,x=0;if(o)throw new Error("Mask not supported");if(u)throw new Error("past is not supported");if(l)throw new Error("relativePositionBias is not supported");return{batchSize:i,sequenceLength:c,pastSequenceLength:_,kvSequenceLength:w,totalSequenceLength:I,maxSequenceLength:$,inputHiddenSize:m,hiddenSize:f,vHiddenSize:b,headSize:Math.floor(f/t.numHeads),vHeadSize:Math.floor(b/t.numHeads),numHeads:t.numHeads,isUnidirectional:!1,pastPresentShareBuffer:!1,maskFilterValue:t.maskFilterValue,maskType:x,scale:t.scale,broadcastResPosBias:!1,passPastInKv:!1,qkvFormat:1}},Wd=(e,t,r,a)=>{let n=qe(a),o=64,u=a/n;u{let b=q("x",t.dataType,t.dims,n),w="thread_max_vector";n===2?w="max(thread_max_vector.x, thread_max_vector.y)":n===4&&(w="max(max(thread_max_vector.x, thread_max_vector.y), max(thread_max_vector.z, thread_max_vector.w))");let _=yt(t.dataType),I=[{name:"d_inv",type:_},{name:"d_comp",type:"u32"},{name:"elements_per_wg",type:"u32"}];return` + var wgMax: array; + var wgSum: array; + ${h.registerUniforms(I).declareVariables(b)} + ${h.mainStart([o,1,1])} + let localOffset = local_idx * uniforms.elements_per_wg; + let offset: u32 = workgroup_id.x * uniforms.d_comp + localOffset; + + var thread_max_vector = ${Qe("f32",n,"-3.402823e+38f")}; + for (var i: u32 = 0; i < uniforms.elements_per_wg && i + localOffset < uniforms.d_comp; i++) { + thread_max_vector = max(${pt(_,n,"x[offset + i]")}, thread_max_vector); + } + wgMax[local_idx] = ${w}; + workgroupBarrier(); + + var maxValue = -3.402823e+38f; + for (var i = 0u; i < ${o}; i++) { + maxValue = max(wgMax[i], maxValue); + } + + var sumVector = ${Qe("f32",n,"0")}; + for (var i: u32 = 0; i < uniforms.elements_per_wg && i + localOffset < uniforms.d_comp; i++) { + sumVector += exp(${pt(_,n,"x[offset + i]")} - maxValue); + } + wgSum[local_idx] = ${rt("sumVector",n)}; + workgroupBarrier(); + + var sum: f32 = 0; + for (var i = 0u; i < ${o}; i++) { + sum += wgSum[i]; + } + + if (sum == 0) { + for (var i: u32 = 0; i < uniforms.elements_per_wg && i + localOffset < uniforms.d_comp; i++) { + x[offset + i] = ${Qe("f32",n,"uniforms.d_inv")}; + } + } else { + for (var i: u32 = 0; i < uniforms.elements_per_wg && i + localOffset < uniforms.d_comp; i++) { + let f32input = ${pt(_,n,"x[offset + i]")}; + x[offset + i] = ${b.type.value}(exp(f32input - maxValue) / sum); + } + } + }`};e.compute({name:"AttentionProbsSoftmax",shaderCache:{hint:`${o};${m};${n}`},getShaderSource:f,getRunData:()=>({outputs:[],dispatchGroup:{x:r},programUniforms:c})},{inputs:[t],outputs:[]})},Vd=(e,t,r,a,n,o)=>{let u=[n.batchSize,n.numHeads,n.sequenceLength,n.kvSequenceLength+n.pastSequenceLength],l=o.scale===0?1/Math.sqrt(n.headSize):o.scale,i=qe(n.headSize),c=n.headSize/i,m=12,f={x:Math.ceil(n.totalSequenceLength/m),y:Math.ceil(n.sequenceLength/m),z:n.batchSize*n.numHeads},h=tt(t.dataType),b=[{type:"uint32",data:n.sequenceLength},{type:"uint32",data:c},{type:"uint32",data:n.totalSequenceLength},{type:"uint32",data:n.kvSequenceLength},{type:h,data:l}],w=[t,r],_=$=>{let x=M("q",t.dataType,t.dims,i),T=M("key",r.dataType,r.dims,i),A=q("output",t.dataType,u),z=Fe(t.dataType),R=[{name:"M",type:"u32"},{name:"K",type:"u32"},{name:"N",type:"u32"},{name:"kv_sequence_length",type:"u32"},{name:"alpha",type:z}];return` + const beta: ${z} = 1.0; + const TILE_SIZE = ${m}u; + + var tileQ: array<${x.type.storage}, ${m*m}>; + var tileK: array<${x.type.storage}, ${m*m}>; + ${$.registerUniforms(R).declareVariables(x,T,A)} + ${$.mainStart([m,m,1])} + // x holds the N and y holds the M + let headIdx = workgroup_id.z; + let m = workgroup_id.y * TILE_SIZE; + let n = workgroup_id.x * TILE_SIZE; + let lm = m + local_id.y; + let ln = n + local_id.x; + + let qOffset = uniforms.M * uniforms.K * headIdx + m * uniforms.K; + let kOffset = uniforms.kv_sequence_length * uniforms.K * headIdx + n * uniforms.K; + + var value = ${Qe(z,i)}; + for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) { + if (m + local_id.y < uniforms.M && w + local_id.x < uniforms.K) { + tileQ[TILE_SIZE * local_id.y + local_id.x] = q[qOffset + local_id.y * uniforms.K + w + local_id.x]; + } + if (n + local_id.y < uniforms.N && w + local_id.x < uniforms.K) { + tileK[TILE_SIZE * local_id.y + local_id.x] = key[kOffset + local_id.y * uniforms.K + w + local_id.x]; + } + workgroupBarrier(); + + for (var k: u32 = 0u; k({outputs:[{dims:u,dataType:t.dataType,gpuDataType:0}],dispatchGroup:f,programUniforms:b}),getShaderSource:_},{inputs:w,outputs:[-1]})[0];return Wd(e,I,n.batchSize*n.numHeads*n.sequenceLength,n.totalSequenceLength),I},Hd=(e,t,r,a)=>{let n=[a.batchSize,a.sequenceLength,a.vHiddenSize],o=12,u={x:Math.ceil(a.vHeadSize/o),y:Math.ceil(a.sequenceLength/o),z:a.batchSize*a.numHeads},l=[{type:"uint32",data:a.sequenceLength},{type:"uint32",data:a.totalSequenceLength},{type:"uint32",data:a.vHeadSize},{type:"uint32",data:a.numHeads},{type:"uint32",data:a.vHiddenSize}],i=c=>{let m=M("probs",t.dataType,t.dims),f=M("v",r.dataType,r.dims),h=q("output",t.dataType,n),b=[{name:"M",type:"u32"},{name:"K",type:"u32"},{name:"N",type:"u32"},{name:"num_heads",type:"u32"},{name:"v_hidden_size",type:"u32"}];return` + const TILE_SIZE = ${o}u; + var tileQ: array<${m.type.value}, ${o*o}>; + var tileK: array<${m.type.value}, ${o*o}>; + ${c.registerUniforms(b).declareVariables(m,f,h)} + ${c.mainStart([o,o,1])} + let headIdx = workgroup_id.z; + let m = workgroup_id.y * TILE_SIZE + local_id.y; + let n = workgroup_id.x * TILE_SIZE + local_id.x; + + let offsetA = headIdx * (uniforms.M * uniforms.K) + m * uniforms.K; + let offsetB = headIdx * (uniforms.N * uniforms.K) + n; + + var value = ${m.type.storage}(0); + for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) { + if (m < uniforms.M && w + local_id.x < uniforms.K) { + tileQ[TILE_SIZE * local_id.y + local_id.x] = probs[offsetA + w + local_id.x]; + } + if (n < uniforms.N && w + local_id.y < uniforms.K) { + tileK[TILE_SIZE * local_id.y + local_id.x] = v[offsetB + (w + local_id.y) * uniforms.N]; + } + workgroupBarrier(); + for (var k: u32 = 0u; k({outputs:[{dims:n,dataType:t.dataType,gpuDataType:0}],dispatchGroup:u,programUniforms:l}),getShaderSource:i},{inputs:[t,r],outputs:[0]})[0]},hn=(e,t,r,a,n,o,u,l,i,c,m)=>{let f=Vd(e,t,r,i,c,m);Hd(e,f,a,c)},Ld=(e,t)=>{let r=[t.batchSize,t.numHeads,t.sequenceLength,t.headSize],a=t.sequenceLength,n=t.inputHiddenSize,o=t.headSize,u=12,l={x:Math.ceil(t.headSize/u),y:Math.ceil(t.sequenceLength/u),z:t.batchSize*t.numHeads},i=[e.inputs[0],e.inputs[1],e.inputs[2]],c=[{type:"uint32",data:a},{type:"uint32",data:n},{type:"uint32",data:o},{type:"uint32",data:t.numHeads},{type:"uint32",data:t.headSize},{type:"uint32",data:t.hiddenSize},{type:"uint32",data:t.hiddenSize+t.hiddenSize+t.vHiddenSize}],m=f=>{let h=q("output_q",i[0].dataType,r),b=q("output_k",i[0].dataType,r),w=q("output_v",i[0].dataType,r),_=M("input",i[0].dataType,i[0].dims),I=M("weight",i[1].dataType,i[1].dims),$=M("bias",i[2].dataType,i[2].dims),x=_.type.storage,T=[{name:"M",type:"u32"},{name:"K",type:"u32"},{name:"N",type:"u32"},{name:"num_heads",type:"u32"},{name:"head_size",type:"u32"},{name:"hidden_size",type:"u32"},{name:"ldb",type:"u32"}];return` + const TILE_SIZE = ${u}u; + var tileInput: array<${x}, ${u*u}>; + var tileWeightQ: array<${x}, ${u*u}>; + var tileWeightK: array<${x}, ${u*u}>; + var tileWeightV: array<${x}, ${u*u}>; + ${f.registerUniforms(T).declareVariables(_,I,$,h,b,w)} + ${f.mainStart([u,u,1])} + let batchIndex = workgroup_id.z / uniforms.num_heads; + let headNumber = workgroup_id.z % uniforms.num_heads; + let m = workgroup_id.y * TILE_SIZE + local_id.y; + let n = workgroup_id.x * TILE_SIZE + local_id.x; + + let inputOffset = batchIndex * (uniforms.M * uniforms.K) + m * uniforms.K; + let biasOffsetQ = headNumber * uniforms.head_size; + let biasOffsetK = uniforms.hidden_size + biasOffsetQ; + let biasOffsetV = uniforms.hidden_size + biasOffsetK; + + var valueQ = ${x}(0); + var valueK = ${x}(0); + var valueV = ${x}(0); + for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) { + if (m < uniforms.M && w + local_id.x < uniforms.K) { + tileInput[TILE_SIZE * local_id.y + local_id.x] = input[inputOffset + w + local_id.x]; + } + if (n < uniforms.N && w + local_id.y < uniforms.K) { + let offset = n + (w + local_id.y) * uniforms.ldb; + tileWeightQ[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetQ + offset]; + tileWeightK[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetK + offset]; + tileWeightV[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetV + offset]; + } + workgroupBarrier(); + for (var k: u32 = 0u; k({outputs:[{dims:r,dataType:e.inputs[0].dataType,gpuDataType:0},{dims:r,dataType:e.inputs[0].dataType,gpuDataType:0},{dims:r,dataType:e.inputs[0].dataType,gpuDataType:0}],dispatchGroup:l,programUniforms:c}),getShaderSource:m},{inputs:i,outputs:[-1,-1,-1]})},Eo=(e,t)=>{let r=Nd(e.inputs,t),[a,n,o]=Ld(e,r);return hn(e,a,n,o,e.inputs[4],void 0,void 0,void 0,e.inputs[5],r,t)}});var Gd,Fd,qd,To,Oo=F(()=>{"use strict";st();$e();je();ve();Gd=(e,t)=>{if(!e||e.length!==5)throw new Error("BatchNormalization requires 5 inputs");let r=(a,n,o)=>{let u=n.length;if(u!==a.length)throw new Error(`${o}: num dimensions != ${u}`);n.forEach((l,i)=>{if(l!==a[i])throw new Error(`${o}: dim[${i}] do not match`)})};if(e[0].dims.length>1){let a=t.format==="NHWC"?t.spatial?e[0].dims.slice(-1):e[0].dims.slice(-1).concat(e[0].dims.slice(1,e[0].dims.length-1)):e[0].dims.slice(1,t.spatial?2:void 0);r(e[1].dims,a,"Invalid input scale"),r(e[2].dims,a,"Invalid input B"),r(e[3].dims,a,"Invalid input mean"),r(e[4].dims,a,"Invalid input var")}else r(e[1].dims,[1],"Invalid input scale"),r(e[2].dims,[1],"Invalid input B"),r(e[3].dims,[1],"Invalid input mean"),r(e[4].dims,[1],"Invalid input var")},Fd=(e,t)=>{let{epsilon:r,spatial:a,format:n}=t,o=e[0].dims,u=a?qe(o[o.length-1]):1,l=n==="NHWC"&&o.length>1?u:1,i=U.size(o)/u,c=Be(o.length)&&a,m=c?o.length:o,f=M("x",e[0].dataType,e[0].dims,u),h=M("scale",e[1].dataType,e[1].dims,l),b=M("bias",e[2].dataType,e[2].dims,l),w=M("inputMean",e[3].dataType,e[3].dims,l),_=M("inputVar",e[4].dataType,e[4].dims,l),I=q("y",e[0].dataType,m,u),$=()=>{let T="";if(a)T=`let cOffset = ${o.length===1?"0u":n==="NHWC"?`outputIndices[${o.length-1}] / ${u}`:"outputIndices[1]"};`;else if(n==="NCHW")T=` + ${I.indicesSet("outputIndices","0","0")} + let cOffset = ${I.indicesToOffset("outputIndices")};`;else{T=`var cIndices = ${h.type.indices}(0); + cIndices[0] = outputIndices[${o.length-1}];`;for(let A=1;A` + const epsilon = ${r}; + ${T.registerUniform("outputSize","u32").declareVariables(f,h,b,w,_,I)} + ${T.mainStart()} + ${T.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} + var outputIndices = ${I.offsetToIndices(`global_idx * ${u}`)}; + ${$()} + let scale = ${h.getByOffset("cOffset")}; + let bias = ${b.getByOffset("cOffset")}; + let inputMean = ${w.getByOffset("cOffset")}; + let inputVar = ${_.getByOffset("cOffset")}; + let x = ${f.getByOffset("global_idx")}; + let value = (x - inputMean) * inverseSqrt(inputVar + epsilon) * scale + bias; + ${I.setByOffset("global_idx","value")} + }`;return{name:"BatchNormalization",shaderCache:{hint:`${t.epsilon}_${t.format}_${a}_${u}`,inputDependencies:c?["rank","type","type","type","type"]:void 0},getShaderSource:x,getRunData:()=>({outputs:[{dims:e[0].dims,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(i/64)},programUniforms:c?[{type:"uint32",data:i},...G(o)]:[{type:"uint32",data:i}]})}},qd=e=>ge(e),To=(e,t)=>{let{inputs:r,outputCount:a}=e,n=qd({...t,outputCount:a});if(Se.webgpu.validateInputContent&&Gd(r,n),t.trainingMode)throw new Error("BatchNormalization trainingMode is not supported yet.");e.compute(Fd(r,n))}});var jd,Kd,ko,Po=F(()=>{"use strict";$e();ve();jd=e=>{if(e[0].dims.length!==3)throw new Error("input should have 3 dimensions");if(![320,640,1280].includes(e[0].dims[2]))throw new Error("number of channels should be 320, 640 or 1280");if(e[1].dims.length!==1)throw new Error("bias is expected to have 1 dimensions");if(e[0].dims[2]!==e[1].dims[0])throw new Error("last dimension of input and bias are not the same")},Kd=e=>{let t=e[0].dims,r=e[0].dims[2],a=U.size(t)/4,n=e[0].dataType,o=M("input",n,t,4),u=M("bias",n,[r],4),l=M("residual",n,t,4),i=q("output",n,t,4);return{name:"BiasAdd",getRunData:()=>({outputs:[{dims:t,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(a/64)}}),getShaderSource:m=>` + const channels = ${r}u / 4; + ${m.declareVariables(o,u,l,i)} + + ${m.mainStart()} + ${m.guardAgainstOutOfBoundsWorkgroupSizes(a)} + let value = ${o.getByOffset("global_idx")} + + ${u.getByOffset("global_idx % channels")} + ${l.getByOffset("global_idx")}; + ${i.setByOffset("global_idx","value")} + }`}},ko=e=>{jd(e.inputs),e.compute(Kd(e.inputs))}});var Yd,Ee,Ro,Bo,Do,zo,Mo,Uo,No,Wo,Vo,Zd,Ho,Lo,Go,Fo,gn,qo,yn,jo,Ko,Yo,Zo,Xo,Qo,Jo,es,ts,rs,ns,as,is,os,ss,us,ls,pa=F(()=>{"use strict";Ue();$e();je();ve();Yd=(e,t,r,a,n,o)=>{let u=Math.ceil(t/4),l="";typeof n=="string"?l=`${n}(a)`:l=n("a");let i=M("inputData",r,[u],4),c=q("outputData",a,[u],4);return` + ${e.registerUniform("vec_size","u32").declareVariables(i,c)} + + ${o??""} + + ${e.mainStart()} + ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")} + + let a = ${i.getByOffset("global_idx")}; + ${c.setByOffset("global_idx",l)} + }`},Ee=(e,t,r,a,n,o=e.dataType)=>({name:t,shaderCache:{hint:n,inputDependencies:["type"]},getShaderSource:u=>Yd(u,U.size(e.dims),e.dataType,o,r,a),getRunData:u=>({outputs:[{dims:e.dims,dataType:o}],dispatchGroup:{x:Math.ceil(U.size(u[0].dims)/64/4)},programUniforms:[{type:"uint32",data:Math.ceil(U.size(e.dims)/4)}]})}),Ro=e=>{e.compute(Ee(e.inputs[0],"Abs","abs"))},Bo=e=>{e.compute(Ee(e.inputs[0],"Acos","acos"))},Do=e=>{e.compute(Ee(e.inputs[0],"Acosh","acosh"))},zo=e=>{e.compute(Ee(e.inputs[0],"Asin","asin"))},Mo=e=>{e.compute(Ee(e.inputs[0],"Asinh","asinh"))},Uo=e=>{e.compute(Ee(e.inputs[0],"Atan","atan"))},No=e=>{e.compute(Ee(e.inputs[0],"Atanh","atanh"))},Wo=e=>ge(e),Vo=(e,t)=>{let r;switch(t.to){case 10:r="vec4";break;case 1:r="vec4";break;case 12:r="vec4";break;case 6:r="vec4";break;case 9:r="vec4";break;default:throw new RangeError(`not supported type (specified in attribute 'to' from 'Cast' operator): ${t.to}`)}e.compute(Ee(e.inputs[0],"Cast",r,void 0,t.cacheKey,t.to))},Zd=e=>{let t=e.length>=2&&e[1].data!==0?e[1].getFloat32Array()[0]:dn,r=e.length>=3&&e[2].data!==0?e[2].getFloat32Array()[0]:cn;return ge({min:t,max:r})},Ho=(e,t)=>{let r=e.inputs.length===1?t:Zd(e.inputs),a=yt(e.inputs[0].dataType);e.compute(Ee(e.inputs[0],"Clip",n=>`clamp(${n}, clip_min_, clip_max_)`,` + const clip_min_: vec4<${a}> = vec4(${a}(${r.min})); + const clip_max_: vec4<${a}> = vec4(${a}(${r.max})); +`,r.cacheKey),{inputs:[0]})},Lo=e=>{e.compute(Ee(e.inputs[0],"Ceil","ceil"))},Go=e=>{e.compute(Ee(e.inputs[0],"Cos","cos"))},Fo=e=>{e.compute(Ee(e.inputs[0],"Cosh","cosh"))},gn=e=>ge(e),qo=(e,t)=>{let r=yt(e.inputs[0].dataType);e.compute(Ee(e.inputs[0],"Elu",a=>`elu_vf32(${a})`,` + const elu_alpha_ = ${r}(${t.alpha}); + + fn elu_f32(a: ${r}) -> ${r} { + return select((exp(a) - 1.0) * elu_alpha_, a, a >= 0.0); + } + + fn elu_vf32(v: vec4<${r}>) -> vec4<${r}> { + return vec4(elu_f32(v.x), elu_f32(v.y), elu_f32(v.z), elu_f32(v.w)); + }`,t.cacheKey))},yn=(e,t="f32")=>` +const r0: ${t} = 0.3275911; +const r1: ${t} = 0.254829592; +const r2: ${t} = -0.284496736; +const r3: ${t} = 1.421413741; +const r4: ${t} = -1.453152027; +const r5: ${t} = 1.061405429; + +fn erf_vf32(v: ${e}) -> ${e} { + let absv = abs(v); + let x = 1.0 / (1.0 + r0 * absv); + return sign(v) * (1.0 - ((((r5 * x + r4) * x + r3) * x + r2) * x + r1) * x * exp(-absv * absv)); +}`,jo=e=>{let t=yt(e.inputs[0].dataType);e.compute(Ee(e.inputs[0],"Erf",r=>`erf_vf32(${r})`,yn(`vec4<${t}>`,t)))},Ko=e=>{e.compute(Ee(e.inputs[0],"Exp","exp"))},Yo=e=>{e.compute(Ee(e.inputs[0],"Floor","floor"))},Zo=e=>{let t=yt(e.inputs[0].dataType);e.compute(Ee(e.inputs[0],"Gelu",r=>`0.5 * ${r} * (1.0 + erf_vf32(${r} * 0.7071067811865475))`,yn(`vec4<${t}>`,t)))},Xo=(e,t)=>{let r=yt(e.inputs[0].dataType);e.compute(Ee(e.inputs[0],"LeakyRelu",a=>`select(leaky_relu_alpha_ * ${a}, ${a}, ${a} >= vec4<${r}>(0.0))`,`const leaky_relu_alpha_ = ${r}(${t.alpha});`,t.cacheKey))},Qo=e=>{e.compute(Ee(e.inputs[0],"Not",t=>`!${t}`))},Jo=e=>{e.compute(Ee(e.inputs[0],"Neg",t=>`-${t}`))},es=e=>{e.compute(Ee(e.inputs[0],"Reciprocal",t=>`1.0/${t}`))},ts=e=>{let t=yt(e.inputs[0].dataType);e.compute(Ee(e.inputs[0],"Relu",r=>`select(vec4<${t}>(0.0), ${r}, ${r} > vec4<${t}>(0.0))`))},rs=e=>{e.compute(Ee(e.inputs[0],"Sigmoid",t=>`(1.0 / (1.0 + exp(-${t})))`))},ns=e=>{e.compute(Ee(e.inputs[0],"Sin","sin"))},as=e=>{e.compute(Ee(e.inputs[0],"Sinh","sinh"))},is=e=>{e.compute(Ee(e.inputs[0],"Sqrt","sqrt"))},os=e=>{e.compute(Ee(e.inputs[0],"Tan","tan"))},ss=e=>{e.compute(Ee(e.inputs[0],"Tanh","tanh"))},us=(e,t)=>{let r=yt(e.inputs[0].dataType);return e.compute(Ee(e.inputs[0],"ThresholdedRelu",a=>`select(vec4<${r}>(0.0), ${a}, ${a} > thresholded_relu_alpha_)`,`const thresholded_relu_alpha_ = vec4<${r}>(${t.alpha});`,t.cacheKey)),0},ls=e=>{e.compute(Ee(e.inputs[0],"Log","log"))}});var Qd,Jd,ds,cs=F(()=>{"use strict";$e();ve();pa();Qd=e=>{if(e[0].dims.length!==3)throw new Error("input should have 3 dimensions");if(![2560,5120,10240].includes(e[0].dims[2]))throw new Error("hidden state should be 2560, 5120 or 10240");if(e[1].dims.length!==1)throw new Error("bias is expected to have 1 dimensions");if(e[0].dims[2]!==e[1].dims[0])throw new Error("last dimension of input and bias are not the same")},Jd=e=>{let t=e[0].dims.slice();t[2]=t[2]/2;let r=M("input",e[0].dataType,e[0].dims,4),a=M("bias",e[0].dataType,[e[0].dims[2]],4),n=q("output",e[0].dataType,t,4),o=U.size(t)/4,u=Fe(e[0].dataType);return{name:"BiasSplitGelu",getRunData:()=>({outputs:[{dims:t,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(o/64)}}),getShaderSource:i=>` + const M_SQRT2 = sqrt(2.0); + const halfChannels = ${e[0].dims[2]/4/2}u; + + ${i.declareVariables(r,a,n)} + + ${yn(`vec4<${u}>`,u)} + + ${i.mainStart()} + ${i.guardAgainstOutOfBoundsWorkgroupSizes(o)} + let biasIdx = global_idx % halfChannels; + let batchIndex = global_idx / halfChannels; + let inputOffset = biasIdx + batchIndex * halfChannels * 2; + let valueLeft = input[inputOffset] + bias[biasIdx]; + let valueRight = input[inputOffset + halfChannels] + bias[biasIdx + halfChannels]; + let geluRight = valueRight * 0.5 * (erf_vf32(valueRight / M_SQRT2) + 1); + + ${n.setByOffset("global_idx","valueLeft * geluRight")} + }`}},ds=e=>{Qd(e.inputs),e.compute(Jd(e.inputs))}});var ec,tc,_t,ps,ms,fs,hs,gs,ys,bs,ws,vs,$s,_s=F(()=>{"use strict";Ue();$e();ve();ec=(e,t,r,a,n,o,u,l,i,c,m,f,h)=>{let b,w;typeof l=="string"?b=w=(R,N)=>`${l}((${R}),(${N}))`:typeof l=="function"?b=w=l:(b=l.scalar,w=l.vector);let _=f?t.length:t,I=f?r.length:r,$=f?a.length:a,x=q("outputData",m,$,4),T=M("aData",i,_,4),A=M("bData",c,I,4),z;if(n)if(o){let R=U.size(t)===1,N=U.size(r)===1,E=t.length>0&&t[t.length-1]%4===0,W=r.length>0&&r[r.length-1]%4===0;R||N?z=x.setByOffset("global_idx",w(R?`${T.type.value}(${T.getByOffset("0")}.x)`:T.getByOffset("global_idx"),N?`${A.type.value}(${A.getByOffset("0")}.x)`:A.getByOffset("global_idx"))):z=` + let outputIndices = ${x.offsetToIndices("global_idx * 4u")}; + let offsetA = ${T.broadcastedIndicesToOffset("outputIndices",x)}; + let offsetB = ${A.broadcastedIndicesToOffset("outputIndices",x)}; + ${x.setByOffset("global_idx",w(u||E?T.getByOffset("offsetA / 4u"):`${T.type.value}(${T.getByOffset("offsetA / 4u")}[offsetA % 4u])`,u||W?A.getByOffset("offsetB / 4u"):`${A.type.value}(${A.getByOffset("offsetB / 4u")}[offsetB % 4u])`))} + `}else z=x.setByOffset("global_idx",w(T.getByOffset("global_idx"),A.getByOffset("global_idx")));else{if(!o)throw new Error("no necessary to use scalar implementation for element-wise binary op implementation.");let R=(N,E,W="")=>{let te=`aData[indexA${E}][componentA${E}]`,Y=`bData[indexB${E}][componentB${E}]`;return` + let outputIndices${E} = ${x.offsetToIndices(`global_idx * 4u + ${E}u`)}; + let offsetA${E} = ${T.broadcastedIndicesToOffset(`outputIndices${E}`,x)}; + let offsetB${E} = ${A.broadcastedIndicesToOffset(`outputIndices${E}`,x)}; + let indexA${E} = offsetA${E} / 4u; + let indexB${E} = offsetB${E} / 4u; + let componentA${E} = offsetA${E} % 4u; + let componentB${E} = offsetB${E} % 4u; + ${N}[${E}] = ${W}(${b(te,Y)}); + `};m===9?z=` + var data = vec4(0); + ${R("data",0,"u32")} + ${R("data",1,"u32")} + ${R("data",2,"u32")} + ${R("data",3,"u32")} + outputData[global_idx] = dot(vec4(0x1, 0x100, 0x10000, 0x1000000), vec4(data));`:z=` + ${R("outputData[global_idx]",0)} + ${R("outputData[global_idx]",1)} + ${R("outputData[global_idx]",2)} + ${R("outputData[global_idx]",3)} + `}return` + ${e.registerUniform("vec_size","u32").declareVariables(T,A,x)} + + ${h??""} + + ${e.mainStart()} + ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")} + ${z} + }`},tc=(e,t,r,a,n,o,u=r.dataType)=>{let l=!U.areEqual(r.dims,a.dims),i=r.dims,c=U.size(r.dims),m=!1,f=!1,h=[l];if(l){let w=gt.calcShape(r.dims,a.dims,!1);if(!w)throw new Error("Can't perform binary op on the given tensors");i=w,c=U.size(i);let _=U.size(r.dims)===1,I=U.size(a.dims)===1,$=r.dims.length>0&&r.dims[r.dims.length-1]%4===0,x=a.dims.length>0&&a.dims[a.dims.length-1]%4===0;h.push(_),h.push(I),h.push($),h.push(x);let T=1;for(let A=1;Aw.toString()).join("_"),inputDependencies:b?["rank","rank"]:["dims","dims"]},getShaderSource:w=>ec(w,r.dims,a.dims,i,m,l,f,n,r.dataType,a.dataType,u,b,o),getRunData:()=>({outputs:[{dims:i,dataType:u}],dispatchGroup:{x:Math.ceil(c/64/4)},programUniforms:b?[{type:"uint32",data:Math.ceil(U.size(i)/4)},...G(r.dims),...G(a.dims),...G(i)]:[{type:"uint32",data:Math.ceil(U.size(i)/4)}]})}},_t=(e,t,r,a,n,o)=>{e.compute(tc(t,n??"",e.inputs[0],e.inputs[1],r,a,o))},ps=e=>{_t(e,"Add",(t,r)=>`${t}+${r}`)},ms=e=>{_t(e,"Div",(t,r)=>`${t}/${r}`)},fs=e=>{_t(e,"Equal",{scalar:(t,r)=>`u32(${t}==${r})`,vector:(t,r)=>`vec4(${t}==${r})`},void 0,void 0,9)},hs=e=>{_t(e,"Mul",(t,r)=>`${t}*${r}`)},gs=e=>{let t=M("input",e.inputs[0].dataType,e.inputs[0].dims).type.value;_t(e,"Pow",{scalar:(a,n)=>`pow_custom(${a},${n})`,vector:(a,n)=>`pow_vector_custom(${a},${n})`},` + fn pow_custom(a : ${t}, b : ${t}) -> ${t} { + if (b == ${t}(0.0)) { + return ${t}(1.0); + } else if (a < ${t}(0.0) && f32(b) != floor(f32(b))) { + return ${t}(pow(f32(a), f32(b))); // NaN + } + return select(sign(a), ${t}(1.0), round(f32(abs(b) % ${t}(2.0))) != 1.0) * ${t}(${t==="i32"?"round":""}(pow(f32(abs(a)), f32(b)))); + } + fn pow_vector_custom(a : vec4<${t}>, b : vec4<${t}>) -> vec4<${t}> { + // TODO: implement vectorized pow + return vec4<${t}>(pow_custom(a.x, b.x), pow_custom(a.y, b.y), pow_custom(a.z, b.z), pow_custom(a.w, b.w)); + } + `)},ys=e=>{_t(e,"Sub",(t,r)=>`${t}-${r}`)},bs=e=>{_t(e,"Greater",{scalar:(t,r)=>`u32(${t}>${r})`,vector:(t,r)=>`vec4(${t}>${r})`},void 0,void 0,9)},ws=e=>{_t(e,"Less",{scalar:(t,r)=>`u32(${t}<${r})`,vector:(t,r)=>`vec4(${t}<${r})`},void 0,void 0,9)},vs=e=>{_t(e,"GreaterOrEqual",{scalar:(t,r)=>`u32(${t}>=${r})`,vector:(t,r)=>`vec4(${t}>=${r})`},void 0,void 0,9)},$s=e=>{_t(e,"LessOrEqual",{scalar:(t,r)=>`u32(${t}<=${r})`,vector:(t,r)=>`vec4(${t}<=${r})`},void 0,void 0,9)}});var nc,ac,ic,oc,xs,Ss,Is=F(()=>{"use strict";$e();je();ve();nc=e=>{if(!e||e.length<1)throw new Error("too few inputs");let t=e[0].dataType,r=e[0].dims.length;for(let a of e){if(a.dataType!==t)throw new Error("input tensors should be one type");if(a.dims.length!==r)throw new Error("input tensors should have the same shape")}},ac=(e,t)=>` + fn calculateInputIndex(index: u32) -> u32 { + let sizeInConcatAxis = array(${t}); + for (var i: u32 = 0u; i < ${e}; i += 1u ) { + if (index < sizeInConcatAxis[i]) { + return i; + } + } + return ${e}u; + }`,ic=(e,t)=>{let r=e.length,a=[];for(let n=0;n{let r=e[0].dims.slice();if(t>=r.length||t<-1*r.length)throw new Error("axis specified for concat doesn't match input dimensionality");let a=t<0?r.length+t:t,n=r.slice(0);for(let A=1;A`uniforms.sizeInConcatAxis${A}`).join(","),T=A=>` + + ${(()=>{A.registerUniform("outputSize","u32");for(let z=0;z(${x}); + ${$} -= sizeInConcatAxis[inputIndex - 1u]; + } + + ${ic(l,I)} + }`;return{name:"Concat",shaderCache:{hint:`${t}`,inputDependencies:m},getRunData:()=>({outputs:[{dims:n,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(o/64)},programUniforms:b}),getShaderSource:T}},xs=(e,t)=>{nc(e.inputs),e.compute(oc(e.inputs,t.axis))},Ss=e=>ge({axis:e.axis})});var xt,bn,Rt=F(()=>{"use strict";$e();xt=(e,t)=>{switch(e.activation){case"Relu":return{activationFunction:"",applyActivation:`value = max(value, ${t}(0.0));`};case"Sigmoid":return{activationFunction:"",applyActivation:`value = (${t}(1.0) / (${t}(1.0) + exp(-value)));`};case"Clip":return{activationFunction:`const clip_min_=${t}(${e.clipMin});const clip_max_=${t}(${e.clipMax});`,applyActivation:"value = clamp(value, clip_min_, clip_max_);"};default:return{activationFunction:"",applyActivation:""}}},bn=e=>{let t=e?.activation||"";if(t==="Clip"){let[r,a]=e?.activation_params||[dn,cn];return{activation:t,clipMax:a,clipMin:r,activationCacheKey:`${t}:${r},${a}`}}return{activation:t,activationCacheKey:t}}});var Ye,wn,vn=F(()=>{"use strict";Ye=(e,t)=>{switch(e){case 1:return t;case 2:return`vec2<${t}>`;case 3:return`vec3<${t}>`;case 4:return`vec4<${t}>`;default:throw new Error(`${e}-component is not supported.`)}},wn=e=>` + ${e?"value = value + getBiasByOutputCoords(coords);":""} + `});var $n,ma=F(()=>{"use strict";$n=e=>` +fn getIndexFromCoords4D(coords : vec4, shape : vec4) -> i32 { + return dot(coords, vec4( + shape.y * shape.z * shape.w, shape.z * shape.w, shape.w, 1)); +} +fn getOutputIndexFromCoords(coords : vec4) -> i32 { + return dot(coords, vec4( + i32(${e}.x), i32(${e}.y), i32(${e}.z), 1)); +} +`});var sc,uc,Ir,Cs,lc,Cr,dc,_n,Ar=F(()=>{"use strict";$e();ve();Rt();vn();sc=(e,t)=>e?` + mm_Asub[inputRow][inputCol] = mm_readA(batch, + kStart + inputRow, + globalRowStart / innerElementSize + inputCol${t?", batchIndices":""}); + `:` + mm_Asub[inputRow][inputCol] = mm_readA(batch, + globalRow + innerRow, + kStart / innerElementSize + inputCol${t?", batchIndices":""}); + `,uc=(e,t)=>e?` + let ACached0 = mm_Asub[k * innerElementSize][localRow]; + let ACached1 = mm_Asub[k * innerElementSize + 1][localRow]; + let ACached2 = mm_Asub[k * innerElementSize + 2][localRow]; + ${t===3?"":"let ACached3 = mm_Asub[k * innerElementSize + 3][localRow];"} + for (var i = 0; i < rowPerThread; i = i + 1) { + acc[i] = BCached0 * ACached0[i] + acc[i]; + acc[i] = BCached1 * ACached1[i] + acc[i]; + acc[i] = BCached2 * ACached2[i] + acc[i]; + ${t===3?"":"acc[i] = BCached3 * ACached3[i] + acc[i];"} + }`:` + for (var i = 0; i < rowPerThread; i = i + 1) { + let ACached = mm_Asub[tileRow + i][k]; + acc[i] = BCached0 * ACached.x + acc[i]; + acc[i] = BCached1 * ACached.y + acc[i]; + acc[i] = BCached2 * ACached.z + acc[i]; + ${t===3?"":"acc[i] = BCached3 * ACached.w + acc[i];"} + }`,Ir=(e,t,r="f32",a,n=!1,o=32,u=!1,l=32)=>{let i=t[1]*e[1],c=t[0]*e[0],m=n?i:o,f=n?o:i,h=m/t[0],b=o/t[1];if(!((n&&h===4&&e[1]===4||!n&&(h===3||h===4))&&m%t[0]===0&&o%t[1]===0&&e[0]===4))throw new Error(`If transposeA ${n} is true, innerElementSize ${h} and workPerThread[1] ${e[1]} must be 4. + Otherwise, innerElementSize ${h} must be 3 or 4. + tileAWidth ${m} must be divisible by workgroupSize[0]${t[0]}. tileInner ${o} must be divisible by workgroupSize[1] ${t[1]}. colPerThread ${e[0]} must be 4.`);return` +var mm_Asub: array, ${m/h}>, ${f}>; +var mm_Bsub: array, ${c/e[0]}>, ${o}>; + +const rowPerThread = ${e[1]}; +const colPerThread = ${e[0]}; +const innerElementSize = ${h}; +const tileInner = ${o}; + +@compute @workgroup_size(${t[0]}, ${t[1]}, ${t[2]}) +fn main(@builtin(local_invocation_id) localId : vec3, + @builtin(global_invocation_id) globalId : vec3, + @builtin(workgroup_id) workgroupId : vec3) { + let localRow = i32(localId.y); + let tileRow = localRow * rowPerThread; + let tileCol = i32(localId.x); + + let globalRow =i32(globalId.y) * rowPerThread; + let globalCol = i32(globalId.x); + let batch = ${u?"0":"i32(globalId.z)"}; + ${a?`let batchIndices = ${a.offsetToIndices("u32(batch)")};`:""} + let globalRowStart = i32(workgroupId.y) * ${i}; + + let numTiles = ${u?`${Math.ceil(l/o)}`:"(uniforms.dimInner - 1) / tileInner + 1"}; + var kStart = ${u?`i32(globalId.z) * ${l}`:"0"}; + + var acc: array, rowPerThread>; + + // Loop over shared dimension. + let tileRowB = localRow * ${b}; + for (var t = 0; t < numTiles; t = t + 1) { + // Load one tile of A into local memory. + for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) { + let inputRow = tileRow + innerRow; + let inputCol = tileCol; + ${sc(n,a)} + } + + // Load one tile of B into local memory. + for (var innerRow = 0; innerRow < ${b}; innerRow = innerRow + 1) { + let inputRow = tileRowB + innerRow; + let inputCol = tileCol; + mm_Bsub[inputRow][inputCol] = mm_readB(batch, kStart + inputRow, globalCol${a?", batchIndices":""}); + } + kStart = kStart + tileInner; + workgroupBarrier(); + + // Compute acc values for a single thread. + for (var k = 0; k < tileInner / innerElementSize; k = k + 1) { + let BCached0 = mm_Bsub[k * innerElementSize][tileCol]; + let BCached1 = mm_Bsub[k * innerElementSize + 1][tileCol]; + let BCached2 = mm_Bsub[k * innerElementSize + 2][tileCol]; + ${h===3?"":"let BCached3 = mm_Bsub[k * innerElementSize + 3][tileCol];"} + + ${uc(n,h)} + } + + workgroupBarrier(); + } + + for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) { + mm_write(batch, globalRow + innerRow, globalCol, acc[innerRow]); + } +}`},Cs=(e,t)=>e?` + mm_Asub[inputRow][inputCol] = mm_readA(batch, + kStart + inputRow, + globalRowStart + inputCol${t?", batchIndices":""}); + `:` + mm_Asub[inputRow][inputCol] = mm_readA(batch, + globalRowStart + inputRow, + kStart + inputCol${t?", batchIndices":""}); + `,lc=e=>e?"let ACached = mm_Asub[k][tileRow + innerRow];":"let ACached = mm_Asub[tileRow + innerRow][k];",Cr=(e,t,r="f32",a,n=!1,o=32,u=!1,l=32,i=!1)=>{let c=e[1]*t[1],m=e[0]*t[0],f=n?c:o,h=n?o:c;if(!(h%t[1]===0&&f%t[0]===0&&o%t[1]===0))throw new Error(`tileAHight ${h} must be divisible by workgroupSize[1]${t[1]}, tileAWidth ${f} must be divisible by workgroupSize[0]${t[0]}, tileInner ${o} must be divisible by workgroupSize[1]${t[1]}`);let b=h/t[1],w=f/t[0],_=o/t[1],I=i?` + let localRow = i32(localId.y); + let localCol = i32(localId.x); + let globalRowStart = i32(workgroupId.y) * ${c}; + let globalColStart = i32(workgroupId.x) * ${m}; + + // Loop over shared dimension. + for (var t = 0; t < numTiles; t = t + 1) { + // Load one tile of A into local memory. + for (var inputRow = localRow; inputRow < ${h}; inputRow = inputRow + ${t[1]}) { + for (var inputCol = localCol; inputCol < ${f}; inputCol = inputCol + ${t[0]}) { + ${Cs(n,a)} + } + } + // Load one tile of B into local memory. + for (var inputRow = localRow; inputRow < ${o}; inputRow = inputRow + ${t[1]}) { + for (var inputCol = localCol; inputCol < ${m}; inputCol = inputCol + ${t[0]}) { + mm_Bsub[inputRow][inputCol] = mm_readB(batch, + kStart + inputRow, + globalColStart + inputCol${a?", batchIndices":""}); + } + } + kStart = kStart + tileInner; + workgroupBarrier(); + + // Compute acc values for a single thread. + var BCached : array<${r}, colPerThread>; + for (var k = 0; k < tileInner; k = k + 1) { + for (var inner = 0; inner < colPerThread; inner = inner + 1) { + BCached[inner] = mm_Bsub[k][localCol + inner * ${t[0]}]; + } + for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) { + let ACached = ${n?`mm_Asub[k][localRow + innerRow * ${t[1]}];`:`mm_Asub[localRow + innerRow * ${t[1]}][k];`} + for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) { + acc[innerRow][innerCol] = acc[innerRow][innerCol] + + ACached * BCached[innerCol]; + } + } + } + workgroupBarrier(); + } + for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) { + let gRow = globalRowStart + localRow + innerRow * ${t[1]}; + for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) { + let gCol = globalColStart + localCol + innerCol * ${t[0]}; + mm_write(batch, gRow, gCol, acc[innerRow][innerCol]); + } + } + `:` +let tileRow = i32(localId.y) * rowPerThread; +let tileCol = i32(localId.x) * colPerThread; + +let globalRow = i32(globalId.y) * rowPerThread; +let globalCol = i32(globalId.x) * colPerThread; +let globalRowStart = i32(workgroupId.y) * ${c}; + +let tileRowA = i32(localId.y) * ${b}; +let tileColA = i32(localId.x) * ${w}; +let tileRowB = i32(localId.y) * ${_}; +// Loop over shared dimension. +for (var t = 0; t < numTiles; t = t + 1) { + // Load one tile of A into local memory. + for (var innerRow = 0; innerRow < ${b}; innerRow = innerRow + 1) { + for (var innerCol = 0; innerCol < ${w}; innerCol = innerCol + 1) { + let inputRow = tileRowA + innerRow; + let inputCol = tileColA + innerCol; + ${Cs(n,a)} + } + } + + // Load one tile of B into local memory. + for (var innerRow = 0; innerRow < ${_}; innerRow = innerRow + 1) { + for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) { + let inputRow = tileRowB + innerRow; + let inputCol = tileCol + innerCol; + mm_Bsub[inputRow][inputCol] = mm_readB(batch, + kStart + inputRow, + globalCol + innerCol${a?", batchIndices":""}); + } + } + kStart = kStart + tileInner; + workgroupBarrier(); + + // Compute acc values for a single thread. + var BCached : array<${r}, colPerThread>; + for (var k = 0; k < tileInner; k = k + 1) { + for (var inner = 0; inner < colPerThread; inner = inner + 1) { + BCached[inner] = mm_Bsub[k][tileCol + inner]; + } + + for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) { + ${lc(n)} + for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) { + acc[innerRow][innerCol] = acc[innerRow][innerCol] + ACached * BCached[innerCol]; + } + } + } + + workgroupBarrier(); +} + +for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) { + for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) { + mm_write(batch, globalRow + innerRow, globalCol + innerCol, + acc[innerRow][innerCol]); + } +} +`;return` + var mm_Asub : array, ${h}>; + var mm_Bsub : array, ${o}>; + const rowPerThread = ${e[1]}; + const colPerThread = ${e[0]}; + const tileInner = ${o}; + +@compute @workgroup_size(${t[0]}, ${t[1]}, ${t[2]}) +fn main(@builtin(local_invocation_id) localId : vec3, + @builtin(global_invocation_id) globalId : vec3, + @builtin(workgroup_id) workgroupId : vec3) { + let batch = ${u?"0":"i32(globalId.z)"}; + ${a?`let batchIndices = ${a.offsetToIndices("u32(batch)")};`:""} + let numTiles = ${u?`${Math.ceil(l/o)}`:"(uniforms.dimInner - 1) / tileInner + 1"}; + var kStart = ${u?`i32(globalId.z) * ${l}`:"0"}; + + var acc : array, rowPerThread>; + + // Without this initialization strange values show up in acc. + for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) { + for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) { + acc[innerRow][innerCol] = 0.0; + } + } + ${I} + } +`},dc=(e,t,r,a,n,o=!1)=>{let[u,l,i]=n,[c,m,f,h]=a,b=er(u,i),w=er(l,i),_=Fe(a[0].type.tensor),I=()=>{let T=m.rank,A=c.rank,z=`var aIndices: ${m.type.indices};`;for(let R=T-2-1,N=A-1;R>=0;R--,N--)z+=` +aIndices[${R}] = ${A>1?`batchIndices[${N}]`:"batchIndices"};`;return b.forEach(R=>{z+=` +aIndices[${R}] = 0;`}),z+=` +aIndices[${T-2}] = u32(row); + aIndices[${T-1}] = u32(colIn);`,z},$=()=>{let T=f.rank,A=c.rank,z=`var bIndices: ${f.type.indices};`;for(let R=T-2-1,N=A-1;R>=0;R--,N--)z+=` +bIndices[${R}] = ${A>1?`batchIndices[${N}]`:"batchIndices"};`;return w.forEach(R=>{z+=` +bIndices[${R}] = 0;`}),z+=` +bIndices[${T-2}] = u32(row); + bIndices[${T-1}] = u32(colIn);`,z};return` + fn mm_readA(batch: i32, row: i32, colIn: i32, batchIndices: ${c.type.indices}) -> ${Ye(e,_)} { + var value = ${Ye(e,_)}(0.0); + let col = colIn * ${e}; + if(row < uniforms.dimAOuter && col < uniforms.dimInner) + { + ${I()} + value = ${m.getByIndices("aIndices")}; + } + return value; + } + + fn mm_readB(batch: i32, row: i32, colIn: i32, batchIndices: ${c.type.indices}) -> ${Ye(e,_)} { + var value = ${Ye(e,_)}(0.0); + let col = colIn * ${e}; + if(row < uniforms.dimInner && col < uniforms.dimBOuter) + { + ${$()} + value = ${f.getByIndices("bIndices")}; + } + return value; + } + + fn mm_write(batch: i32, row: i32, colIn: i32, valueIn: ${Ye(e,_)}) { + let col = colIn * ${e}; + if (row < uniforms.dimAOuter && col < uniforms.dimBOuter) { + var value = valueIn; + let coords = vec3(batch, row, colIn); + ${t?`value = value + ${o?"bias[colIn]":`${Ye(e,_)}(bias[row])`};`:""} + ${r} + ${h.setByIndices("vec3(coords)","value")} + } + } + `},_n=(e,t,r,a,n=!1)=>{let o=e[0].dims,u=e[1].dims,l=o.slice(0,-2),i=u.slice(0,-2),c=a?a.slice(0,-2):r.slice(0,-2),m=Be(c.length),f=m?c.length:c,h=pn("batchDims",e[0].dataType,f,1),b=U.size(c),w=o[o.length-2],_=o[o.length-1],I=u[u.length-1],$=_%4===0&&I%4===0,x=w<=8?[4,1,1]:[4,4,1],T=[8,8,1],A=[Math.ceil(I/T[0]/x[0]),Math.ceil(w/T[1]/x[1]),Math.ceil(b/T[2]/x[2])],z=Fe(e[0].dataType),R=$?4:1,N=[...l,w,_/R],E=Be(N.length),W=E?N.length:N,te=[...i,_,I/R],Y=Be(te.length),K=Y?te.length:te,X=[b,w,I/R],Z=M("a",e[0].dataType,W,R),Oe=M("b",e[1].dataType,K,R),Pe=q("result",e[0].dataType,X.length,R),fe=[Z,Oe],Ae=[{type:"int32",data:w},{type:"int32",data:I},{type:"int32",data:_}];m&&Ae.push(...G(c)),E&&Ae.push(...G(N)),Y&&Ae.push(...G(te));let he=[];he.push(E?"rank":"dims"),he.push(Y?"rank":"dims");let ye=e.length>2,{activationFunction:He,applyActivation:ze}=xt(t,Pe.type.value),Ge=dc(R,ye,ze,[h,Z,Oe,Pe],[l,i,c],n);if(ye){let ee=n?R:1;fe.push(M("bias",e[2].dataType,e[2].dims.length,ee)),Ae.push(...G(e[2].dims)),he.push("rank")}Ae.push(...G(X));let L=ee=>` + ${ee.registerUniform("dimAOuter","i32").registerUniform("dimBOuter","i32").registerUniform("dimInner","i32").registerInternalVariables(h).declareVariables(...fe,Pe)} + ${He} + ${Ge} + ${$?Ir(x,T,z,h):Cr(x,T,z,h)} + `;return{name:"MatMul",shaderCache:{hint:t.activationCacheKey+`${x}${$}${n}`,inputDependencies:he},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:A[0],y:A[1],z:A[2]},programUniforms:Ae}),getShaderSource:L}}});var cc,As,Es=F(()=>{"use strict";Pt();ve();Rt();vn();ma();Ar();cc=(e,t,r,a,n=!1,o,u=4,l=4,i=4,c="f32")=>{let m=Y=>{switch(Y){case 1:return"resData = x[xIndex];";case 3:return`resData = vec3<${c}>(x[xIndex], x[xIndex + 1], x[xIndex + 2]);`;case 4:return"resData = x[xIndex / 4];";default:throw new Error(`innerElementSize ${Y} is not supported.`)}},f=Y=>{switch(Y){case 1:return"return w[row * i32(uniforms.w_shape[3]) + colIn];";case 4:return"return w[row * i32(uniforms.w_shape[3]) / 4 + colIn];";default:throw new Error(`innerElementSize ${Y} is not supported.`)}},h=e?` + let coord = vec4(batch, xRow, xCol, xCh); + `:` + let coord = vec4(batch, xCh, xRow, xCol); + `,b=e?` + let coords = vec4( + batch, + row / outWidth, + row % outWidth, + col); + `:` + let coords = vec4( + batch, + row, + col / outWidth, + col % outWidth); + `,w=e?"i32(uniforms.x_shape[1])":"i32(uniforms.x_shape[2])",_=e?"i32(uniforms.x_shape[2])":"i32(uniforms.x_shape[3])",I=e?"row":"col",$=e?"col":"row",x=` + let inChannels = i32(uniforms.w_shape[2]); + let outWidth = ${e?"i32(uniforms.result_shape[2])":"i32(uniforms.result_shape[3])"}; + let outRow = ${I} / outWidth; + let outCol = ${I} % outWidth; + + let WRow = ${$} / (filterDims[1] * inChannels); + let WCol = ${$} / inChannels % filterDims[1]; + let xRow = outRow * stride[0] + dilation[0] * WRow - pad[0]; + let xCol = outCol * stride[1] + dilation[1] * WCol - pad[1]; + let xCh = ${$} % inChannels; + var resData = ${Ye(u,c)}(0.0); + // The bounds checking is always needed since we use it to pad zero for + // the 'same' padding type. + if (xRow >= 0 && xRow < ${w} && xCol >= 0 && xCol < ${_}) { + ${h} + let xIndex = getIndexFromCoords4D(coord, vec4(uniforms.x_shape)); + ${m(u)} + } + return resData;`,T=e?t&&a?` + let col = colIn * ${u}; + ${x}`:` + let col = colIn * ${u}; + if (row < uniforms.dimAOuter && col < uniforms.dimInner) { + ${x} + } + return ${Ye(u,c)}(0.0);`:a&&r?` + let col = colIn * ${u}; + ${x}`:` + let col = colIn * ${u}; + if (row < uniforms.dimInner && col < uniforms.dimBOuter) { + ${x} + } + return ${Ye(u,c)}(0.0);`,A=`${f(l)}`,z=Ye(i,c),R=e?Ye(u,c):Ye(l,c),N=e?Ye(l,c):Ye(u,c),{activationFunction:E,applyActivation:W}=xt(o,z);return` + ${E} + fn mm_readA(batch: i32, row : i32, colIn : i32) -> ${R} { + ${e?T:A} + } + + fn mm_readB(batch: i32, row : i32, colIn : i32) -> ${N} { + ${e?A:T} + } + + fn mm_write(batch: i32, row : i32, colIn : i32, valueIn : ${z}) { + let col = colIn * ${i}; + if (row < uniforms.dimAOuter && col < uniforms.dimBOuter) + { + var value = valueIn; + let outWidth = ${e?"i32(uniforms.result_shape[2])":"i32(uniforms.result_shape[3])"}; + ${b} + ${wn(n)} + ${W} + setOutputAtCoords(coords[0], coords[1], coords[2], coords[3], value); + } + }`},As=(e,t,r,a,n,o,u,l)=>{let i=t.format==="NHWC",c=i?e[0].dims[3]:e[0].dims[1],m=r[0],f=i?r[2]:r[3],h=i?r[1]:r[2],b=i?r[3]:r[1],w=i&&(c%4===0||c%3===0)&&b%4===0,_=i?b:f*h,I=i?f*h:b,$=[8,8,1],x=a<=8?[4,1,1]:[4,4,1],T=[Math.ceil(_/$[0]/x[0]),Math.ceil(I/$[1]/x[1]),Math.ceil(m/$[2]/x[2])];De("verbose",()=>`[conv2d_mm_webgpu] dispatch = ${T}`);let A=w?i&&c%4!==0?3:4:1,z=$[1]*x[1],R=$[0]*x[0],N=Math.max($[0]*A,$[1]),E=a%z===0,W=n%R===0,te=o%N===0,Y=w?[A,4,4]:[1,1,1],K=Fe(e[0].dataType),X=w?4:1,Z=[{type:"int32",data:a},{type:"int32",data:n},{type:"int32",data:o}],Oe=M("x",e[0].dataType,e[0].dims.length,A===3?1:A),Pe=M("w",e[1].dataType,e[1].dims.length,X),fe=[Oe,Pe];Z.push(...G(e[0].dims)),Z.push(...G(e[1].dims));let Ae=` + fn setOutputAtIndex(flatIndex : i32, value : ${w?`vec4<${K}>`:K}) { + result[flatIndex] = ${w?`vec4<${K}>`:K}(value); + } + fn setOutputAtCoords(d0 : i32, d1 : i32, d2 : i32, d3 : i32, value : ${w?`vec4<${K}>`:K}) { + let flatIndex = getOutputIndexFromCoords(vec4(d0, d1, d2, d3)); + setOutputAtIndex(flatIndex ${w?"/ 4":""}, value); + }`;if(u){let ye=M("bias",e[2].dataType,e[2].dims.length,X);fe.push(ye),Z.push(...G(e[2].dims)),Ae+=` + fn getBiasByOutputCoords(coords : vec4) -> ${w?`vec4<${K}>`:K} { + return bias[coords.${i?"w":"y"}${w?"/ 4":""}]; + }`}let he=q("result",e[0].dataType,r.length,X);return Z.push(...G(r)),{name:"Conv2DMatMul",shaderCache:{hint:t.cacheKey},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:T[0],y:T[1],z:T[2]},programUniforms:Z}),getShaderSource:ye=>` + ${$n("uniforms.result_strides")} + //struct Uniforms { xShape : vec4, wShape : vec4, outShape : vec4, + // outShapeStrides: vec3, filterDims : vec2, pad : vec2, stride : vec2, + // dilation : vec2, dimAOuter : i32, dimBOuter : i32, dimInner : i32 }; + ${ye.registerUniform("dimAOuter","i32").registerUniform("dimBOuter","i32").registerUniform("dimInner","i32").declareVariables(...fe,he)} + const filterDims : vec2 = vec2(${t.kernelShape[0]}, ${t.kernelShape[1]}); + const pad : vec2 = vec2(${t.pads[0]}, ${t.pads[1]}); + const stride : vec2 = vec2(${t.strides[0]}, ${t.strides[1]}); + const dilation : vec2 = vec2(${t.dilations[0]}, ${t.dilations[1]}); + ${Ae} + ${cc(i,E,W,te,u,t,Y[0],Y[1],Y[2],K)} + ${w?Ir(x,$,K,void 0,!i,N):Cr(x,$,K,void 0,!i,N,!1,void 0,l)}`}}});var fa,Ts=F(()=>{"use strict";$e();ve();ga();Rt();fa=(e,t,r)=>{let a=e.length>2,n=a?"value += b[output_channel];":"",o=e[0].dims,u=e[1].dims,l=u[0]/t.group,i=t.format==="NHWC",c=ha(o,u,t.dilations,t.pads,t.strides,i),m=U.size(c),f=q("output",e[0].dataType,c),{activationFunction:h,applyActivation:b}=xt(t,f.type.value),w=M("x",e[0].dataType,o),_=M("w",e[1].dataType,u),I=[w,_];a&&I.push(M("b",e[2].dataType,e[2].dims));let $=x=>` + const strides: vec2 = vec2(${t.strides[0]}u, ${t.strides[1]}u); + const pads: vec2 = vec2(${t.pads[0]}u, ${t.pads[1]}u); + + ${x.declareVariables(...I,f)} + + ${h} + + ${x.mainStart()} + ${x.guardAgainstOutOfBoundsWorkgroupSizes(m)} + + let outputIndices = ${f.offsetToIndices("global_idx")}; + let batch: u32 = outputIndices[0]; + let output_channel: u32 = outputIndices[${i?3:1}]; + let xRCCorner: vec2 = vec2(outputIndices[${i?1:2}], outputIndices[${i?2:3}]) * strides - pads; + let group_id: u32 = output_channel / ${l}u; + + var value: ${f.type.value} = ${f.type.value}(0); + for (var wInChannel: u32 = 0u; wInChannel < ${u[1]}u; wInChannel++) { + let input_channel = group_id * ${u[1]}u + wInChannel; + for (var wHeight: u32 = 0u; wHeight < ${u[2]}u; wHeight++) { + let xHeight = xRCCorner.x + wHeight * ${t.dilations[0]}u; + + if (xHeight < 0u || xHeight >= ${o[i?1:2]}u) { + continue; + } + + for (var wWidth: u32 = 0u; wWidth < ${u[3]}u; wWidth++) { + let xWidth = xRCCorner.y + wWidth * ${t.dilations[1]}u; + if (xWidth < 0u || xWidth >= ${o[i?2:3]}u) { + continue; + } + + let xVal = ${i?w.get("batch","xHeight","xWidth","input_channel"):w.get("batch","input_channel","xHeight","xWidth")}; + let wVal = ${_.get("output_channel","wInChannel","wHeight","wWidth")}; + value += xVal*wVal; + } + } + } + ${n} + ${b} + ${f.setByOffset("global_idx","value")} + }`;return{name:"GroupedConv",shaderCache:{hint:t.cacheKey},getRunData:()=>({outputs:[{dims:r?r(c):c,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(m/64)}}),getShaderSource:$}}});var ya,pc,Os,ba=F(()=>{"use strict";$e();Ar();ve();Rt();ya=(e,t,r,a,n=!1)=>{let o=e[0].dims,u=e[1].dims,l=o[o.length-2],i=u[u.length-1],c=o[o.length-1],m=qe(i),f=qe(c),h=qe(l),b=U.size(r)/m/h,w=e.length>2,_=a?a.slice(0,-2):r.slice(0,-2),$=[U.size(_),l,i],x=[{type:"uint32",data:b},{type:"uint32",data:l},{type:"uint32",data:i},{type:"uint32",data:c},...G(_),...G(o),...G(u)];w&&x.push(...G(e[2].dims)),x.push(...G($));let T=A=>{let z=pn("batch_dims",e[0].dataType,_.length),R=M("a",e[0].dataType,o.length,f),N=M("b",e[1].dataType,u.length,m),E=q("output",e[0].dataType,$.length,m),{activationFunction:W,applyActivation:te}=xt(t,E.type.value),Y=[R,N],K="";if(w){let he=n?m:1;Y.push(M("bias",e[2].dataType,e[2].dims.length,he)),K=`${n?`value += bias[col / ${he}];`:`value += ${E.type.value}(bias[row + i]);`}`}let X=o.slice(0,-2),Z=u.slice(0,-2),Oe=er(X,_),Pe=er(Z,_),fe=(he,ye)=>{let He=he.rank,ze=he.name;if(He===2)return`var ${ze}_indices = ${he.type.indices}(0u, 0u);`;let Ge=z.rank,L=`var ${ze}_indices: ${he.type.indices};`;for(let ee=He-2-1,be=Ge-1;ee>=0;ee--,be--)L+=` +${ze}_indices[${ee}] = ${Ge>1?`batch_indices[${be}]`:"batch_indices"};`;return ye.forEach(ee=>{L+=` +${ze}_indices[${ee}] = 0;`}),L+=`${ze}_indices[${He-2}] = 0u; + ${ze}_indices[${He-1}] = 0u;`,L},Ae=()=>{let he=`var a_data: ${R.type.value};`;for(let ye=0;ye; + for (var k: u32 = 0u; k < uniforms.K; k = k + ${f}) { + ${Ae()} + } + for (var i = 0u; i < ${h}u; i++) { + var value = values[i]; + ${K} + ${te} + let cur_indices = ${E.type.indices}(batch, row + i, col); + let offset = ${E.indicesToOffset("cur_indices")}; + ${E.setByOffset(`offset / ${m}`,"value")}; + } + } + `};return{name:"MatMulNaive",shaderCache:{hint:`${t.activationCacheKey}_${m}_${f}_${h}_${n}`,inputDependencies:w?["rank","rank","rank"]:["rank","rank"]},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(b/64)},programUniforms:x}),getShaderSource:T}},pc=e=>{if(!e||e.length!==2)throw new Error("MatMul requires 2 inputs.");if(e[0].dims[e[0].dims.length-1]!==e[1].dims[e[1].dims.length-2])throw new Error("shared dimension does not match.")},Os=e=>{pc(e.inputs);let t=gt.calcShape(e.inputs[0].dims,e.inputs[1].dims,!0);if(!t)throw new Error("Can't use matmul on the given tensors");let r=t[t.length-1],a=e.inputs[0].dims[e.inputs[0].dims.length-1];r<8&&a<8?e.compute(ya(e.inputs,{activation:"",activationCacheKey:""},t)):e.compute(_n(e.inputs,{activation:"",activationCacheKey:""},t))}});var ha,ks,mc,Ps,wa,fc,hc,va,ga=F(()=>{"use strict";$e();je();Es();Ar();Ts();Rt();ba();tr();ha=(e,t,r,a,n,o)=>{let u=e[0],l=e.slice(o?1:2,o?3:4),i=l.length,c=t[0],f=t.slice(2).map((w,_)=>w+(w-1)*(r[_]-1)),b=l.map((w,_)=>w+a[_]+a[_+i]).map((w,_)=>Math.floor((w-f[_]+n[_])/n[_]));return b.splice(0,0,u),b.splice(o?3:1,0,c),b},ks=[2,3,1,0],mc=(e,t)=>{if(!e||e.length!==2&&e.length!==3)throw new Error("Conv requires 2 or 3 inputs");if(e[0].dims.length!==4&&e[0].dims.length!==3)throw new Error("currently only support conv 1D and 2D");if(e[0].dims.length!==e[1].dims.length)throw new Error("filter does not have same dimension as input");let r=e[0].dims[t.format==="NHWC"?e[0].dims.length-1:1],a=e[1].dims[1]*t.group;if(r!==a)throw new Error("FILTER_IN_CHANNEL should be equal to DATA_CHANNEL");if(e.length===3&&(e[2].dims.length!==1||e[1].dims[0]!==e[2].dims[0]))throw new Error("invalid bias");let n=e[0].dims.length-2;if(t.dilations.length!==n)throw new Error(`dilations should be ${n}D`);if(t.strides.length!==n)throw new Error(`strides should be ${n}D`);if(t.pads.length!==n*2)throw new Error(`pads should be ${n*2}D`);if(t.kernelShape.length!==0&&t.kernelShape.length!==e[1].dims.length-2)throw new Error("invalid kernel shape")},Ps=(e,t)=>{let r=e.kernelShape.slice();for(let o=2;o{let t=bn(e),r=e.format,a=["NOTSET","VALID","SAME_UPPER","SAME_LOWER"][e.auto_pad],n=e.dilations,o=e.group,u=e.kernel_shape,l=e.pads,i=e.strides,c=e.w_is_const();return ge({autoPad:a,format:r,dilations:n,group:o,kernelShape:u,pads:l,strides:i,wIsConst:c,...t})},fc=(e,t,r)=>{let a=Ps(r,t),n=r.format==="NHWC";if(r.group!==1){e.compute(fa(t,a));return}let o=t.length===3,u=t[0].dims[n?1:2],l=t[0].dims[n?2:3],i=t[0].dims[n?3:1],c=t[1].dims[2],m=t[1].dims[3],f=ha(t[0].dims,t[1].dims,r.dilations,a.pads,r.strides,n),h=f[n?1:2],b=f[n?2:3],w=f[n?3:1],_=n&&c===u&&m===l&&r.pads[0]===0&&r.pads[1]===0;if(_||c===1&&m===1&&r.dilations[0]===1&&r.dilations[1]===1&&r.strides[0]===1&&r.strides[1]===1&&r.pads[0]===0&&r.pads[1]===0){let R=f[0],N,E,W,te=[];if(n){let X=e.kernelCustomData.wT??e.compute(mt(t[1],ks),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];if(r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=X),_){let Z=u*l*i;N=t[0].reshape([1,R,Z]),E=X.reshape([1,Z,w]),W=[1,R,w]}else N=t[0].reshape([R,u*l,i]),E=X.reshape([1,i,w]),W=[R,h*b,w];te.push(N),te.push(E)}else N=t[0].reshape([R,i,u*l]),E=t[1].reshape([1,w,i]),W=[R,w,h*b],te.push(E),te.push(N);o&&te.push(t[2]);let Y=W[2],K=te[0].dims[te[0].dims.length-1];Y<8&&K<8?e.compute(ya(te,a,f,W,n),{inputs:te}):e.compute(_n(te,a,f,W,n),{inputs:te});return}let I=!0,$=e.kernelCustomData.wT??e.compute(mt(t[1],ks),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=$);let x=[t[0],$];o&&x.push(t[2]);let T=n?h*b:w,A=n?w:h*b,z=c*m*i;e.compute(As(x,a,f,T,A,z,o,I),{inputs:x})},hc=(e,t)=>{let r=t.format==="NHWC",a=[e.inputs[0].reshape(r?[e.inputs[0].dims[0],1,e.inputs[0].dims[1],e.inputs[0].dims[2]]:[e.inputs[0].dims[0],e.inputs[0].dims[1],1,e.inputs[0].dims[2]]),e.inputs[1].reshape([e.inputs[1].dims[0],e.inputs[1].dims[1],1,e.inputs[1].dims[2]])];e.inputs.length===3&&a.push(e.inputs[2]);let n=[0,t.pads[0],0,t.pads[1]],o=[1].concat(t.strides),u=[1].concat(t.dilations),l=[1].concat(t.kernelShape),i=Ps({...t,pads:n,strides:o,dilations:u,kernelShape:l},a);e.compute(fa(a,i,c=>r?[c[0],c[2],c[3]]:[]))},va=(e,t)=>{mc(e.inputs,t),e.inputs[0].dims.length===3?hc(e,t):fc(e,e.inputs,t)}});var gc,Rs,Bs=F(()=>{"use strict";Pt();ve();Rt();vn();ma();Ar();gc=(e,t=!1,r,a=4)=>{let n=Ye(a,"f32"),o=x=>{switch(x){case 1:return"return w[getIndexFromCoords4D(coord, vec4(uniforms.w_shape))];";case 4:return` + let coord1 = vec4(coordX, coordY, col + 1, rowInner); + let coord2 = vec4(coordX, coordY, col + 2, rowInner); + let coord3 = vec4(coordX, coordY, col + 3, rowInner); + let v0 = w[getIndexFromCoords4D(coord, vec4(uniforms.w_shape))]; + let v1 = w[getIndexFromCoords4D(coord1, vec4(uniforms.w_shape))]; + let v2 = w[getIndexFromCoords4D(coord2, vec4(uniforms.w_shape))]; + let v3 = w[getIndexFromCoords4D(coord3, vec4(uniforms.w_shape))]; + return vec4(v0, v1, v2, v3); + `;default:throw new Error(`innerElementSize ${x} is not supported.`)}},u=e?` + let coord = vec4(batch, iXR, iXC, xCh); + `:` + let coord = vec4(batch, xCh, iXR, iXC); + `,l=e?` + let coords = vec4( + batch, + row / outWidth, + row % outWidth, + col); + `:` + let coords = vec4( + batch, + row, + col / outWidth, + col % outWidth); + `,i=e?"outBackprop[1]":"outBackprop[2]",c=e?"outBackprop[2]":"outBackprop[3]",m=e?"row":"col",f=e?"col":"row",h=` + let inChannels = ${e?"outBackprop[3]":"outBackprop[1]"}; + let outWidth = ${e?"i32(uniforms.result_shape[2])":"i32(uniforms.result_shape[3])"}; + let outRow = ${m} / outWidth; + let outCol = ${m} % outWidth; + + let WRow = ${f} / (filterDims[1] * inChannels); + let WCol = ${f} / inChannels % filterDims[1]; + let xR = f32(outRow - pads[0] + dilation[0] * WRow) / f32(strides[0]); + let xC = f32(outCol - pads[1] + dilation[1] * WCol) / f32(strides[1]); + if (xR < 0.0 || xR >= f32(${i}) || fract(xR) > 0.0) { + return ${n}(0.0); + } + if (xC < 0.0 || xC >= f32(${c}) || fract(xC) > 0.0) { + return ${n}(0.0); + } + let iXR = i32(xR); + let iXC = i32(xC); + let xCh = ${f} % inChannels; + ${u} + return x[getIndexFromCoords4D(coord, vec4(uniforms.x_shape))/${a}];`,b=e?` + let col = colIn * ${a}; + if (row < uniforms.dimAOuter && col < uniforms.dimInner) { + ${h} + } + return ${n}(0.0);`:` + let col = colIn * ${a}; + if (row < uniforms.dimInner && col < uniforms.dimBOuter) { + ${h} + } + return ${n}(0.0);`,w=` + let col = colIn * ${a}; + let inChannels = ${e?"outBackprop[3]":"outBackprop[1]"}; + let coordX = filterDims.x - 1 - row / (filterDims[1] * inChannels); + let coordY = filterDims.y - 1 - (row / inChannels) % filterDims[1]; + if (${e?"row < uniforms.dimInner && col < uniforms.dimBOuter":"row < uniforms.dimInner && col < uniforms.dimAOuter"} && coordX >= 0 && coordY >= 0) { + let rowInner = row % inChannels; + let coord = vec4(coordX, coordY, col, rowInner); + ${o(a)} + } + return ${n}(0.0); + `,{activationFunction:_,applyActivation:I}=xt(r,n);return` + ${_} + fn mm_readA(batch: i32, row : i32, colIn : i32) -> ${n} { + ${e?b:w} + } + + fn mm_readB(batch: i32, row : i32, colIn : i32) -> ${n} { + ${e?w:b} + } + + fn mm_write(batch: i32, row : i32, colIn : i32, valueInput : ${n}) { + let col = colIn * ${a}; + if (row < uniforms.dimAOuter && col < uniforms.dimBOuter) { + var value = valueInput; + let outWidth = ${e?"i32(uniforms.result_shape[2])":"i32(uniforms.result_shape[3])"}; + ${l} + ${wn(t)} + ${I} + result[getIndexFromCoords4D(coords, vec4(uniforms.result_shape))/${a}] = value; + } + }`},Rs=(e,t,r,a,n,o,u,l)=>{let i=t.format==="NHWC",c=i?e[0].dims[3]:e[0].dims[1],m=r[0],f=i?r[2]:r[3],h=i?r[1]:r[2],b=i?r[3]:r[1],w=i?c%4===0&&b%4===0:f%4===0&&b%4===0,_=i?b:f*h,I=i?f*h:b,$=w?[8,8,1]:[_<=4||I<=4?4:16,_>4&&I<=4?4:16,1],x=w?[4,4,1]:[_<=4?1:4,_>4&&I<=4?1:4,1],T=[Math.ceil(_/$[0]/x[0]),Math.ceil(I/$[1]/x[1]),Math.ceil(m/$[2]/x[2])];De("verbose",()=>`[conv_backprop_mm_webgpu] dispatch = ${T}`);let A=w?4:1,z=Math.max($[0]*A,$[1]),R=w?4:1,N=[{type:"int32",data:a},{type:"int32",data:n},{type:"int32",data:o}],E=M("x",e[0].dataType,e[0].dims.length,R),W=M("w",e[1].dataType,e[1].dims.length,1),te=q("result",e[0].dataType,r.length,R),Y=[E,W];N.push(...G(e[0].dims)),N.push(...G(e[1].dims));let K="";if(u){let X=M("bias",e[2].dataType,e[2].dims.length,R);Y.push(X),N.push(...G(e[2].dims)),K+=` + fn getBiasByOutputCoords(coords : vec4) -> ${w?"vec4":"f32"} { + return bias[coords.${i?"w":"y"}${w?"/ 4":""}]; + }`}return N.push(...G(r)),{name:"Conv2DTransposeMatMul",shaderCache:{hint:t.cacheKey},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:T[0],y:T[1],z:T[2]},programUniforms:N}),getShaderSource:X=>` + ${$n("uniforms.result_strides")} + ${X.registerUniform("dimAOuter","i32").registerUniform("dimBOuter","i32").registerUniform("dimInner","i32").declareVariables(...Y,te)}; + const outBackprop : vec4 = vec4(${e[0].dims.join(",")}); + const filterDims : vec2 = vec2(${t.kernelShape[i?1:2]}, ${t.kernelShape[i?2:3]}); + const effectiveFilterDims : vec2 = filterDims + vec2( + ${t.dilations[0]<=1?0:(t.kernelShape[i?1:2]-1)*(t.dilations[0]-1)}, + ${t.dilations[1]<=1?0:(t.kernelShape[i?2:3]-1)*(t.dilations[1]-1)}); + const pads : vec2 = vec2(i32(effectiveFilterDims[0]) - 1 - (${t.pads[0]+t.pads[2]})/2, + i32(effectiveFilterDims[1]) - 1 - (${t.pads[1]+t.pads[3]})/2); + const strides : vec2 = vec2(${t.strides[0]}, ${t.strides[1]}); + const dilation : vec2 = vec2(${t.dilations[0]}, ${t.dilations[1]}); + const dimAOuter : i32 = ${a}; + const dimBOuter : i32 = ${n}; + const dimInner : i32 = ${o}; + ${K} + ${gc(i,u,t,A)} + ${w?Ir(x,$,"f32",void 0,!i,z):Cr(x,$,"f32",void 0,!i,z,!1,void 0,l)}`}}});var yc,$a,Ds=F(()=>{"use strict";Pt();$e();ve();yc=(e,t,r,a,n,o,u=!1,l)=>{let i=r.format==="NHWC",c=i?1:2,m=i?2:3,f=i?3:1,h=U.size(a),b=u?2:1,w=r.group,_=t[1].dims,I=_[0]/w,$=_[1],x=` + fn setOutputAtIndex(flatIndex : u32, value : ${u?`vec4<${l}>`:l}) { + result[flatIndex] = ${u?`vec4<${l}>`:l}(value); + }`;n&&(x+=` + fn getBiasByOutputCoords(coords : vec4) -> ${u?`vec4<${l}>`:l} { + return bias[coords.${i?"w":"y"}${u?"/ 4":""}]; + }`);let T=u?4:1,A=M("W",t[1].dataType,t[1].dims,T),z=M("Dy",t[0].dataType,t[0].dims,T),R=[z,A];n&&R.push(M("bias",t[2].dataType,[a[f]],T));let N=q("result",t[0].dataType,a,T),E=`{ + let batch: u32 = ${o?"global_id.z":"workgroup_id.z"} / outShape[1]; + let r = ${o?"global_id.z":"workgroup_id.z"} % outShape[1]; + let c = ${o?"global_id.y":"workgroup_id.y"} * ${b}; + let d1: u32 = ${o?"global_id.x":"workgroup_id.x"} * 4; + + let dyCorner = vec2(i32(r), i32(c)) - vec2(pads); + + // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1). + // ? = to be determined. : = across all values in that axis. + var dotProd: array, ${b}>; + for (var i = 0; i < ${b}; i++) { + dotProd[i] = vec4<${l}>(0.0); + } + for (var wR: u32 = 0; wR < filterDims[0]; wR = wR + 1) { + var dyR = (${l}(dyCorner.x) + ${l}(wR)) / ${l}(strides.x); + let wRPerm = filterDims[0] - 1 - wR; + if (dyR < 0.0 || dyR >= ${l}(outBackprop[1]) || + fract(dyR) > 0.0 || wRPerm < 0) { + continue; + } + let idyR: u32 = u32(dyR); + + for (var wC: u32 = 0; wC < filterDims[1]; wC = wC + 1) { + let dyC = (${l}(dyCorner.y) + ${l}(wC)) / ${l}(strides.y); + let dyC2 = (${l}(dyCorner.y) + 1.0 + ${l}(wC)) / ${l}(strides.y); + let wCPerm = filterDims[1] - 1 - wC; + if (wCPerm < 0) { + continue; + } + var bDyCVal = true; + var bDyCVal2 = true; + if (dyC < 0.0 || dyC >= ${l}(outBackprop[2]) || + fract(dyC) > 0.0) { + bDyCVal = false; + } + if (dyC2 < 0.0 || dyC2 >= ${l}(outBackprop[2]) || + fract(dyC2) > 0.0) { + bDyCVal2 = false; + } + + let idyC: u32 = u32(dyC); + let idyC2: u32 = u32(dyC2); + if (bDyCVal && bDyCVal2) { + let d2Length = outBackprop[3]; + for (var d2 :u32 = 0; d2 < d2Length; d2 = d2 + 4) { + let wValue0 = ${A.get("u32(wRPerm)","u32(wCPerm)","d1","d2")}; + let wValue1 = ${A.get("u32(wRPerm)","u32(wCPerm)","d1 + 1","d2")}; + let wValue2 = ${A.get("u32(wRPerm)","u32(wCPerm)","d1 + 2","d2")}; + let wValue3 = ${A.get("u32(wRPerm)","u32(wCPerm)","d1 + 3","d2")}; + + var xValue = ${z.get("batch","idyR","idyC","d2")}; + let tmpval = vec4<${l}>(dot(xValue, wValue0), + dot(xValue, wValue1), + dot(xValue, wValue2), + dot(xValue, wValue3)); + dotProd[0] = dotProd[0] + tmpval; + + xValue = ${z.get("batch","idyR","idyC2","d2")}; + + dotProd[1] = dotProd[1] + vec4<${l}>(dot(xValue, wValue0), + dot(xValue, wValue1), + dot(xValue, wValue2), + dot(xValue, wValue3)); + } + } else if (bDyCVal) { + let d2Length = outBackprop[${f}]; + for (var d2: u32 = 0; d2 < d2Length; d2 = d2 + 4) { + let wValue0 = ${A.get("u32(wRPerm)","u32(wCPerm)","d1","d2")}; + let wValue1 = ${A.get("u32(wRPerm)","u32(wCPerm)","d1 + 1","d2")}; + let wValue2 = ${A.get("u32(wRPerm)","u32(wCPerm)","d1 + 2","d2")}; + let wValue3 = ${A.get("u32(wRPerm)","u32(wCPerm)","d1 + 3","d2")}; + + var xValue = ${z.get("batch","idyR","idyC","d2")}; + let tmpval = vec4<${l}>(dot(xValue, wValue0), + dot(xValue, wValue1), + dot(xValue, wValue2), + dot(xValue, wValue3)); + dotProd[0] = dotProd[0] + tmpval; + } + } else if (bDyCVal2) { + let d2Length = outBackprop[3]; + for (var d2: u32 = 0; d2 < d2Length; d2 = d2 + 4) { + let wValue0 = ${A.get("u32(wRPerm)","u32(wCPerm)","d1","d2")}; + let wValue1 = ${A.get("u32(wRPerm)","u32(wCPerm)","d1 + 1","d2")}; + let wValue2 = ${A.get("u32(wRPerm)","u32(wCPerm)","d1 + 2","d2")}; + let wValue3 = ${A.get("u32(wRPerm)","u32(wCPerm)","d1 + 3","d2")}; + + var xValue = ${z.get("batch","idyR","idyC2","d2")}; + let tmpval = vec4<${l}>(dot(xValue, wValue0), + dot(xValue, wValue1), + dot(xValue, wValue2), + dot(xValue, wValue3)); + dotProd[1] = dotProd[1] + tmpval; + } + } + } + } + + for (var i: u32 = 0; i < ${b}; i = i + 1) { + let value = dotProd[i] + ${n?"bias[c+i]":`vec4<${l}>(0.0)`}; + ${N.set("batch","r","c + i","d1","value")}; + } + }`,W=` + let outputIndices = ${N.offsetToIndices("global_idx")}; + let batch = ${N.indicesGet("outputIndices",0)}; + let d1 = ${N.indicesGet("outputIndices",f)}; + let r = ${N.indicesGet("outputIndices",c)}; + let c = ${N.indicesGet("outputIndices",m)}; + let dyCorner = vec2(i32(r), i32(c)) - pads; + let dyRCorner = dyCorner.x; + let dyCCorner = dyCorner.y; + let groupId = d1 / ${$}; + let wOutChannel = d1 - groupId * ${$}; + // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1). + // ? = to be determined. : = across all values in that axis. + var dotProd = ${l}(0.0); + for (var wR: u32 = 0; wR < effectiveFilterDims.x; wR = wR + 1) { + if (wR % dilations.x != 0) { + continue; + } + let dyR = (${l}(dyRCorner) + ${l}(wR)) / ${l}(strides[0]); + let wRPerm = filterDims.x - 1 - wR / dilations.x; + if (dyR < 0.0 || dyR >= ${l}(outBackprop[${c}]) || fract(dyR) > 0.0 || + wRPerm < 0) { + continue; + } + let idyR: u32 = u32(dyR); + + for (var wC: u32 = 0; wC < effectiveFilterDims.y; wC = wC + 1) { + if (wC % dilations.y != 0) { + continue; + } + let dyC = (${l}(dyCCorner) + ${l}(wC)) / ${l}(strides.y); + let wCPerm = filterDims.y - 1 - wC / dilations.y; + if (dyC < 0.0 || dyC >= ${l}(outBackprop[${m}]) || + fract(dyC) > 0.0 || wCPerm < 0) { + continue; + } + let idyC: u32 = u32(dyC); + var inputChannel = groupId * ${I}; + for (var d2: u32 = 0; d2 < ${I}; d2 = d2 + 1) { + let xValue = ${i?z.get("batch","idyR","idyC","inputChannel"):z.get("batch","inputChannel","idyR","idyC")}; + let wValue = ${A.get("inputChannel","wOutChannel","u32(wRPerm)","u32(wCPerm)")}; + dotProd = dotProd + xValue * wValue; + inputChannel = inputChannel + 1; + } + } + } + let value = dotProd + ${n?"bias[d1]":`${l}(0.0)`}; + ${N.setByOffset("global_idx","value")}; + `;return` + ${e.declareVariables(...R,N)} + ${x} + const outShape : vec4 = vec4(${a.join(",")}); + const outBackprop : vec4 = vec4(${t[0].dims.join(",")}); + const strides : vec2 = vec2(${r.strides[0]}, ${r.strides[1]}); + const filterDims : vec2 = vec2(${r.kernelShape[i?1:2]}, ${r.kernelShape[i?2:3]}); + const dilations : vec2 = vec2(${r.dilations[0]}, ${r.dilations[1]}); + const effectiveFilterDims : vec2 = filterDims + vec2( + ${r.dilations[0]<=1?0:(r.kernelShape[i?1:2]-1)*(r.dilations[0]-1)}, + ${r.dilations[1]<=1?0:(r.kernelShape[i?2:3]-1)*(r.dilations[1]-1)}); + const pads : vec2 = vec2(i32(effectiveFilterDims[0]) - 1 - (${r.pads[0]+r.pads[2]})/2, + i32(effectiveFilterDims[1]) - 1 - (${r.pads[1]+r.pads[3]})/2); + ${e.mainStart()} + ${e.guardAgainstOutOfBoundsWorkgroupSizes(h)}; + ${u?E:W}}`},$a=(e,t,r)=>{let a=e.length>2,n=t.outputShape,o=U.size(n),u=[Math.ceil(o/64),1,1];De("verbose",()=>`[conv2d_backprop_webgpu] dispatch = ${u}`);let l=Fe(e[0].dataType);return{name:"ConvTranspose2D",shaderCache:{hint:t.cacheKey},getRunData:()=>({dispatchGroup:{x:u[0],y:u[1],z:u[2]},outputs:[{dims:r?r(n):n,dataType:e[0].dataType}]}),getShaderSource:i=>yc(i,e,t,n,a,u[1]===1&&u[2]===1,!1,l)}}});var bc,wc,vc,zs,Ms,$c,_c,xc,Sc,Us,Ns=F(()=>{"use strict";je();Bs();Ds();Rt();tr();bc=(e,t,r,a,n,o)=>(e-1)*t+r+(a-1)*n+1-o,wc=(e,t,r,a,n)=>{let o=Math.floor(e/2);t==="SAME_UPPER"?(r[a]=o,r[n]=e-o):t==="SAME_LOWER"&&(r[a]=e-o,r[n]=o)},vc=(e,t,r,a,n,o,u,l,i,c)=>{let m=e.length-2,f=c.length===0;if(i.length===0)for(let w=0;w{let r=e.kernelShape.slice();if(e.kernelShape.length===0||e.kernelShape.reduce((h,b)=>h*b,1)===0){r.length=0;for(let h=2;hh+b,0)===0){let h=t[0].dims.length-2;i=new Array(h).fill(1)}let c=e.strides.slice();if(c.reduce((h,b)=>h+b,0)===0){let h=t[0].dims.length-2;c=new Array(h).fill(1)}vc(l,r,i,e.autoPad,e.group,n,c,a,u,o);let m=Object.assign({},e),f=e.cacheKey+[r.join("n,"),n.join(","),c.join(","),u.join(","),o.join(","),i.join(",")].join("_");return Object.assign(m,{kernelShape:r,pads:n,outputPadding:u,outputShape:o,dilations:i,strides:c,cacheKey:f}),m},Ms=e=>{let t=bn(e),r=e.format,a=["NOTSET","VALID","SAME_UPPER","SAME_LOWER"][typeof e.autoPad>"u"?0:e.autoPad],n=e.dilations,o=e.group,u=e.kernelShape,l=e.pads,i=e.strides,c=e.wIsConst(),m=e.outputPadding,f=e.outputShape;return ge({autoPad:a,format:r,dilations:n,group:o,kernelShape:u,outputPadding:m,outputShape:f,pads:l,strides:i,wIsConst:c,...t})},$c=(e,t)=>{if(!e||e.length!==2&&e.length!==3)throw new Error("Conv requires 2 or 3 inputs");if(e[0].dims.length!==4&&e[0].dims.length!==3)throw new Error("currently only support 2-dimensional conv");if(e[0].dims.length!==e[1].dims.length)throw new Error("filter does not have same dimension as input");let r=e[0].dims[t.format==="NHWC"?e[0].dims.length-1:1],a=e[1].dims[0];if(r!==a)throw new Error("FILTER_IN_CHANNEL should be equal to DATA_CHANNEL");let n=e[1].dims[1]*t.group;if(e.length===3&&(e[2].dims.length!==1||e[2].dims[0]!==n))throw new Error("invalid bias");let o=e[0].dims.length-2;if(t.dilations.reduce((m,f)=>m+f,0)>0&&t.dilations.length!==o)throw new Error(`dilations should be ${o}D`);if(t.strides.reduce((m,f)=>m+f,0)>0&&t.strides.length!==o)throw new Error(`strides should be ${o}D`);if(t.pads.reduce((m,f)=>m+f,0)>0&&t.pads.length!==o*2)throw new Error(`pads should be ${o*2}D`);if(t.outputPadding.length!==o&&t.outputPadding.length!==0)throw new Error(`output_padding should be ${o}D`);if(t.kernelShape.reduce((m,f)=>m+f,0)>0&&t.kernelShape.length!==0&&t.kernelShape.length!==e[1].dims.length-2)throw new Error("invalid kernel shape");if(t.outputShape.length!==0&&t.outputShape.length!==e[0].dims.length-2)throw new Error("invalid output shape")},_c=[2,3,1,0],xc=(e,t,r)=>{let a=zs(r,t),n=r.format==="NHWC",o=a.outputShape,u=o[n?3:1],l=t[0].dims[n?3:1];if(a.group!==1||u===1&&l===1){e.compute($a(t,a));return}let i=o[n?1:2],c=o[n?2:3],m=t[1].dims[2],f=t[1].dims[3],h=n?i*c:u,b=n?u:i*c,w=m*f*l,_=!0,I=e.kernelCustomData.wT??e.compute(mt(t[1],_c),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=I);let $=[t[0],I],x=t.length===3;x&&(!n&&t[2].dims.length===1?$.push(t[2].reshape([t[2].dims[0],1,1])):$.push(t[2])),e.compute(Rs($,a,o,h,b,w,x,_),{inputs:$})},Sc=(e,t)=>{let r=t.format==="NHWC",a=[e.inputs[0].reshape(r?[e.inputs[0].dims[0],1,e.inputs[0].dims[1],e.inputs[0].dims[2]]:[e.inputs[0].dims[0],e.inputs[0].dims[1],1,e.inputs[0].dims[2]]),e.inputs[1].reshape([e.inputs[1].dims[0],e.inputs[1].dims[1],1,e.inputs[1].dims[2]])];a.length===3&&a.push(e.inputs[2]);let n=t.kernelShape;(n.length===0||n[0]===0)&&(n=[e.inputs[1].dims[2]]);let o=t.dilations;(o.length===0||o[0]===0)&&(o=[1]);let u=t.strides;(u.length===0||u[0]===0)&&(u=[1]);let l=t.pads;l.length===0&&(l=[0,0]),l=[0,l[0],0,l[1]],u=[1].concat(u),o=[1].concat(o),n=[1].concat(n);let i=zs({...t,pads:l,strides:u,dilations:o,kernelShape:n},a);e.compute($a(a,i,c=>r?[c[0],c[2],c[3]]:[c[0],c[1],c[3]]))},Us=(e,t)=>{$c(e.inputs,t),e.inputs[0].dims.length===3?Sc(e,t):xc(e,e.inputs,t)}});var Ic,Ws,Vs,Hs=F(()=>{"use strict";Ue();$e();je();ve();Ic=(e,t,r,a)=>{let n=U.size(t),o=t.length,u=M("input",e,o),l=q("output",e,o),i=r.dataType===6?r.getInt32Array()[0]:Number(r.getBigInt64Array()[0]),c=U.normalizeAxis(i,o),m=f=>{let h=` i32(${u.indicesGet("inputIndices","uniforms.axis")}) `,b=ce("uniforms.input_shape","uniforms.axis",o),w=a.reverse?h+(a.exclusive?" + 1":""):"0",_=a.reverse?b:h+(a.exclusive?"":" + 1");return` + ${f.registerUniform("outputSize","u32").registerUniform("axis","u32").declareVariables(u,l)} + ${f.mainStart()} + ${f.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} + var inputIndices = ${l.offsetToIndices("global_idx")}; + var sum = ${l.type.value}(0); + let first : i32 = ${w}; + let last : i32 = ${_}; + for (var i : i32 = first; i < last; i++) { + ${u.indicesSet("inputIndices","uniforms.axis","u32(i)")}; + sum = sum + ${u.getByIndices("inputIndices")}; + } + ${l.setByOffset("global_idx","sum")}; + }`};return{name:"CumSum",shaderCache:{hint:a.cacheKey,inputDependencies:["rank"]},getRunData:()=>({outputs:[{dims:t,dataType:e}],dispatchGroup:{x:Math.ceil(n/64)},programUniforms:[{type:"uint32",data:n},{type:"int32",data:c},...G(t),...G(t)]}),getShaderSource:m}},Ws=(e,t)=>{let r=e.inputs[0].dims,a=e.inputs[0].dataType,n=e.inputs[1];e.compute(Ic(a,r,n,t),{inputs:[0]})},Vs=e=>{let t=e.exclusive===1,r=e.reverse===1;return ge({exclusive:t,reverse:r})}});var _a,xn,Ls,Cc,Ac,xa,Sa,Gs,Ec,Fs,qs,js=F(()=>{"use strict";$e();je();ve();_a="[a-zA-Z]|\\.\\.\\.",xn="("+_a+")+",Ls="^"+xn+"$",Cc="("+xn+",)*"+xn,Ac="^"+Cc+"$",xa=class{constructor(t=-1){this.symbolToIndices=new Map,this.inputIndex=t}addSymbol(t,r){let a=this.symbolToIndices.get(t);a===void 0?a=[r]:a.push(r),this.symbolToIndices.set(t,a)}},Sa=class{constructor(t,r){this.equation=r;this.hasEllipsis=!1,this.symbolToInfo=new Map,this.lhs=new Array,this.outputDims=[];let[a,n]=r.includes("->")?r.split("->",2):[r,""];if(!a.match(RegExp(Ac)))throw new Error("Invalid LHS term");if(a.split(",").forEach((l,i)=>{let c=t[i].dims.slice();if(!l.match(RegExp(Ls)))throw new Error("Invalid LHS term");let m=this.processTerm(l,!0,c,i);this.lhs.push(m)}),n==="")n+=[...this.symbolToInfo.entries()].filter(([l,i])=>i.count===1||l==="...").map(([l])=>l).join("");else if(!n.match(RegExp(xn)))throw new Error("Invalid RHS");n.match(RegExp(_a,"g"))?.forEach(l=>{if(l==="...")this.outputDims=this.outputDims.concat(this.ellipsisDims);else{let i=this.symbolToInfo.get(l);if(i===void 0)throw new Error("Invalid RHS symbol");this.outputDims.push(i.dimValue)}}),this.rhs=this.processTerm(n,!1,this.outputDims)}addSymbol(t,r,a){let n=this.symbolToInfo.get(t);if(n!==void 0){if(n.dimValue!==r&&n.count!==1)throw new Error("Dimension mismatch");n.count++,n.inputIndices.push(a)}else n={count:1,dimValue:r,inputIndices:[a]};this.symbolToInfo.set(t,n)}processTerm(t,r,a,n=-1){let o=a.length,u=!1,l=[],i=0;if(!t.match(RegExp(Ls))&&!r&&t!=="")throw new Error("Invalid LHS term");let c=t.match(RegExp(_a,"g")),m=new xa(n);return c?.forEach((f,h)=>{if(f==="..."){if(u)throw new Error("Only one ellipsis is allowed per input term");u=!0;let b=o-c.length+1;if(b<0)throw new Error("Ellipsis out of bounds");if(l=a.slice(i,i+b),this.hasEllipsis){if(this.ellipsisDims.length!==l.length||this.ellipsisDims.toString()!==l.toString())throw new Error("Ellipsis dimensions mismatch")}else if(r)this.hasEllipsis=!0,this.ellipsisDims=l;else throw new Error("Ellipsis must be specified in the LHS");for(let w=0;we+"_max",Ec=(e,t,r,a,n)=>{let u=t.map((b,w)=>e[w]?b.length:b).map((b,w)=>M(`input${w}`,r,b)),l=U.size(n),i=Be(n.length),c=i?n.length:n,m=q("output",r,c),f=[...a.symbolToInfo.keys()].filter(b=>!a.rhs.symbolToIndices.has(b)),h=b=>{let w=[],_="var prod = 1.0;",I="var sum = 0.0;",$="sum += prod;",x=[],T=[],A=[],z=[],R=a.symbolToInfo.size===a.rhs.symbolToIndices.size;a.symbolToInfo.forEach((E,W)=>{if(a.rhs.symbolToIndices.has(W)){let te=a.rhs.symbolToIndices.get(W)?.[0];te!==void 0&&a.lhs.forEach((Y,K)=>{if(E.inputIndices.includes(K)){let X=Y.symbolToIndices.get(W);if(X===void 0)throw new Error("Invalid symbol error");X.forEach(Z=>{w.push(`${u[K].indicesSet(`input${K}Indices`,Z,m.indicesGet("outputIndices",te))}`)})}})}else a.lhs.forEach((te,Y)=>{if(E.inputIndices.includes(Y)){let K=te.symbolToIndices.get(W);if(K===void 0)throw new Error("Invalid symbol error");K.forEach(X=>{x.push(`${u[Y].indicesSet(`input${Y}Indices`,X,`${W}`)}`)}),z.push(`prod *= ${u[Y].getByIndices(`input${Y}Indices`)};`)}}),T.push(`for(var ${W}: u32 = 0; ${W} < uniforms.${Gs(W)}; ${W}++) {`),A.push("}")});let N=R?[...w,`let sum = ${u.map((E,W)=>E.getByIndices(`input${W}Indices`)).join(" * ")};`]:[...w,I,...T,...x,_,...z,$,...A];return` + ${b.registerUniforms(f.map(E=>({name:`${Gs(E)}`,type:"u32"}))).registerUniform("outputSize","u32").declareVariables(...u,m)} + + ${b.mainStart()} + ${b.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} + var outputIndices = ${m.offsetToIndices("global_idx")}; + ${u.map((E,W)=>`var input${W}Indices: ${u[W].type.indices};`).join(` +`)} + ${N.join(` +`)}; + ${m.setByOffset("global_idx","sum")}; + }`};return{name:"Einsum",shaderCache:{hint:a.equation,inputDependencies:e.map(b=>b?"rank":"dims")},getRunData:()=>{let b=f.filter(_=>a.symbolToInfo.has(_)).map(_=>({type:"uint32",data:a.symbolToInfo.get(_)?.dimValue||0}));b.push({type:"uint32",data:l});let w=t.filter((_,I)=>e[I]).map((_,I)=>[...G(_)]).reduce((_,I)=>_.concat(I),b);return i&&w.push(...G(n)),{outputs:[{dims:n,dataType:r}],dispatchGroup:{x:Math.ceil(l/64)},programUniforms:w}},getShaderSource:h}},Fs=(e,t)=>{let r=new Sa(e.inputs,t.equation),a=e.inputs.map((u,l)=>Be(u.dims.length)),n=r.outputDims,o=e.inputs.map((u,l)=>u.dims);e.compute(Ec(a,o,e.inputs[0].dataType,r,n))},qs=e=>{let t=e.equation.replace(/\s+/g,"");return ge({equation:t})}});var Tc,Ks,Oc,kc,Ys,Zs=F(()=>{"use strict";Ue();$e();ve();Tc=e=>{if(!e||e.length!==2)throw new Error("Expand requires 2 input.");let t=e[0].dims,r=Array.from(e[1].getBigInt64Array(),Number),a=r.length{let r=e.length-t.length,a=[];for(let n=0;ne.length>t.length?Ks(e,t):Ks(t,e),kc=e=>{let t=e[0].dims,r=Array.from(e[1].getBigInt64Array(),Number),a=Oc(t,r),n=e[0].dataType,o=n===9?4:1,u=Math.ceil(U.size(a)/o),l=Be(t.length),i=Be(a.length),c=f=>{let h=l?t.length:t,b=i?a.length:a,w=M("input",n,h,o),_=q("output",n,b,o),I;if(n===9){let $=(x,T,A="")=>` + let outputIndices${T} = ${_.offsetToIndices(`outputOffset + ${T}u`)}; + let offset${T} = ${w.broadcastedIndicesToOffset(`outputIndices${T}`,_)}; + let index${T} = offset${T} / 4u; + let component${T} = offset${T} % 4u; + ${x}[${T}] = ${A}(${w.getByOffset(`index${T}`)}[component${T}]); + `;I=` + let outputOffset = global_idx * ${o}; + var data = vec4(0); + ${$("data",0,"u32")} + ${$("data",1,"u32")} + ${$("data",2,"u32")} + ${$("data",3,"u32")} + ${_.setByOffset("global_idx","data")} + }`}else I=` + let outputIndices = ${_.offsetToIndices("global_idx")}; + let inputOffset = ${w.broadcastedIndicesToOffset("outputIndices",_)}; + ${_.setByOffset("global_idx",w.getByOffset("inputOffset"))} + }`;return` + ${f.registerUniform("vec_size","u32").declareVariables(w,_)} + ${f.mainStart()} + ${f.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")} + ${I}`},m=[{type:"uint32",data:u}];return l&&m.push(...G(t)),i&&m.push(...G(a)),{name:"Expand",shaderCache:{hint:`${a.length}`,inputDependencies:[l?"rank":"dims"]},getShaderSource:c,getRunData:()=>({outputs:[{dims:a,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:m})}},Ys=e=>{Tc(e.inputs),e.compute(kc(e.inputs),{inputs:[0]})}});var Pc,Rc,Xs,Qs,Js=F(()=>{"use strict";Ue();$e();je();ve();Pc=e=>{if(!e||e.length!==2)throw new Error("Gather requires 2 inputs.")},Rc=(e,t)=>{let r=e[0].dims,a=e[1].dims,n=r.length,o=U.normalizeAxis(t.axis,n),u=r.slice(0);u.splice(o,1,...a);let l=r[o],i=e[0].dataType===9?4:1,c=Math.ceil(U.size(u)/i),m=Be(e[0].dims.length),f=m?e[0].dims.length:e[0].dims,h=Be(e[1].dims.length),b=h?e[1].dims.length:e[1].dims,w=Be(u.length),_=w?u.length:u,I=[{type:"uint32",data:c},{type:"int32",data:l},{type:"uint32",data:o}];m&&I.push(...G(e[0].dims)),h&&I.push(...G(e[1].dims)),w&&I.push(...G(u));let $=[];$.push(m?"rank":"dims"),$.push(h?"rank":"dims");let x=T=>{let A=M("data",e[0].dataType,f,i),z=M("inputIndices",e[1].dataType,b),R=q("output",e[0].dataType,_,i),N=W=>{let te=a.length,Y=`var indicesIndices${W} = ${z.type.indices}(0);`;for(let K=0;K1?`indicesIndices${W}[${K}]`:`indicesIndices${W}`} = ${u.length>1?`outputIndices${W}[uniforms.axis + ${K}]`:`outputIndices${W}`};`;Y+=` + var idx${W} = ${z.getByIndices(`indicesIndices${W}`)}; + if (idx${W} < 0) { + idx${W} = idx${W} + uniforms.axisDimLimit; + } + var dataIndices${W} = ${A.type.indices}(0); + `;for(let K=0,X=0;K1?`dataIndices${W}[${K}]`:`dataIndices${W}`} = u32(idx${W});`,X+=te):(Y+=`${n>1?`dataIndices${W}[${K}]`:`dataIndices${W}`} = ${u.length>1?`outputIndices${W}[${X}]`:`outputIndices${W}`};`,X++);return Y},E;if(e[0].dataType===9){let W=(te,Y,K="")=>` + let outputIndices${Y} = ${R.offsetToIndices(`outputOffset + ${Y}u`)}; + ${N(Y)}; + let offset${Y} = ${A.indicesToOffset(`dataIndices${Y}`)}; + let index${Y} = offset${Y} / 4u; + let component${Y} = offset${Y} % 4u; + ${te}[${Y}] = ${K}(${A.getByOffset(`index${Y}`)}[component${Y}]); + `;E=` + let outputOffset = global_idx * ${i}; + var value = vec4(0); + ${W("value",0,"u32")} + ${W("value",1,"u32")} + ${W("value",2,"u32")} + ${W("value",3,"u32")} + ${R.setByOffset("global_idx","value")} + `}else E=` + let outputIndices = ${R.offsetToIndices("global_idx")}; + ${N("")}; + let value = ${A.getByIndices("dataIndices")}; + ${R.setByOffset("global_idx","value")}; + `;return` + ${T.registerUniform("outputSize","u32").registerUniform("axisDimLimit","i32").registerUniform("axis","u32").declareVariables(A,z,R)} + ${T.mainStart()} + ${T.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} + ${E} + }`};return{name:"Gather",shaderCache:{hint:t.cacheKey,inputDependencies:$},getRunData:()=>({outputs:[{dims:u,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(c/64)},programUniforms:I}),getShaderSource:x}},Xs=e=>ge({axis:e.axis}),Qs=(e,t)=>{let r=e.inputs;Pc(r),e.compute(Rc(e.inputs,t))}});var Bc,Dc,eu,tu,ru=F(()=>{"use strict";$e();je();ve();Bc=e=>{if(!e||e.length!==2)throw new Error("GatherElements requires 2 inputs.");if(e[0].dims.length<1)throw new Error("GatherElements requires that the data input be rank >= 1.");if(e[0].dims.length!==e[1].dims.length)throw new Error(`GatherElements requires that the data input and + indices input tensors be of same rank.`)},Dc=(e,t)=>{let r=e[0].dims,a=e[0].dataType,n=r.length,o=e[1].dims,u=e[1].dataType,l=U.normalizeAxis(t.axis,n),i=r[l],c=o.slice(0),m=U.size(c),f=M("input",a,n),h=M("indicesInput",u,o.length),b=q("output",a,c.length),w=[{type:"uint32",data:m},{type:"int32",data:i},{type:"uint32",data:l}];return w.push(...G(r)),w.push(...G(o)),w.push(...G(c)),{name:"GatherElements",shaderCache:{inputDependencies:["rank","rank"]},getRunData:()=>({outputs:[{dims:c,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(m/64)},programUniforms:w}),getShaderSource:$=>` + ${$.registerUniform("outputSize","u32").registerUniform("axisDimLimit","i32").registerUniform("axis","u32").declareVariables(f,h,b)} + ${$.mainStart()} + ${$.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} + + let outputIndices = ${b.offsetToIndices("global_idx")}; + + var idx = ${h.getByOffset("global_idx")}; + if (idx < 0) { + idx = idx + uniforms.axisDimLimit; + } + var inputIndices = ${f.type.indices}(outputIndices); + ${f.indicesSet("inputIndices","uniforms.axis","u32(idx)")}; + let value = ${f.getByIndices("inputIndices")}; + + ${b.setByOffset("global_idx","value")}; + }`}},eu=e=>ge({axis:e.axis}),tu=(e,t)=>{let r=e.inputs;Bc(r),e.compute(Dc(e.inputs,t))}});var zc,Mc,nu,au,iu=F(()=>{"use strict";$e();ve();zc=e=>{if(!e)throw new Error("Input is missing");if(e.length<2||e.length>3)throw new Error("Invaid input number.");if(e.length===3&&e[2].dims.length>2)throw new Error("Invalid input shape of C");if(e[0].dataType!==e[1].dataType||e.length===3&&e[0].dataType!==e[2].dataType)throw new Error("Input types are mismatched")},Mc=(e,t)=>{let r=e[0].dims.slice(),a=e[1].dims.slice(),[n,o,u]=ln.getShapeOfGemmResult(r,t.transA,a,t.transB,e.length===3?e[2].dims:void 0),l=[n,o];if(!l)throw new Error("Can't use gemm on the given tensors");let i=U.size(l),c=[{type:"uint32",data:i},{type:"uint32",data:n},{type:"uint32",data:o},{type:"uint32",data:u},{type:"float32",data:t.alpha},{type:"float32",data:t.beta}],m=["type","type"];e.length===3&&(c.push(...G(e[2].dims)),m.push("rank")),c.push(...G(l));let f=h=>{let b="";t.transA&&t.transB?b="value += a[k * uniforms.M + m] * b[n * uniforms.K + k];":t.transA&&!t.transB?b="value += a[k * uniforms.M + m] * b[k * uniforms.N + n];":!t.transA&&t.transB?b="value += a[m * uniforms.K + k] * b[n * uniforms.K + k];":!t.transA&&!t.transB&&(b="value += a[m * uniforms.K + k] * b[k * uniforms.N + n];");let w=t.alpha===1?"":"value *= uniforms.alpha;",_=M("a",e[0].dataType,e[0].dims),I=M("b",e[1].dataType,e[1].dims),$=_.type.value,x=null,T=[_,I];e.length===3&&(x=M("c",e[2].dataType,e[2].dims.length),T.push(x));let A=q("output",e[0].dataType,l.length);T.push(A);let z=[{name:"output_size",type:"u32"},{name:"M",type:"u32"},{name:"N",type:"u32"},{name:"K",type:"u32"},{name:"alpha",type:"f32"},{name:"beta",type:"f32"}];return` + ${h.registerUniforms(z).declareVariables(...T)} + + ${h.mainStart()} + ${h.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} + + let m = global_idx / uniforms.N; + let n = global_idx % uniforms.N; + + var value = ${$}(0); + for (var k: u32 = 0u; k < uniforms.K; k++) { + ${b} + } + + ${w} + ${(()=>x!=null?`let cOffset = ${x.broadcastedIndicesToOffset("vec2(m, n)",A)}; value += ${$}(uniforms.beta) * ${x.getByOffset("cOffset")};`:"")()} + output[global_idx] = value; + }`};return{name:"Gemm",shaderCache:{hint:`${t.cacheKey}`,inputDependencies:m},getRunData:()=>({outputs:[{dims:l,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(i/64)},programUniforms:c}),getShaderSource:f}},nu=e=>{let t=e.transA,r=e.transB,a=e.alpha,n=e.beta;return{transA:t,transB:r,alpha:a,beta:n,cacheKey:`${e.transA};${e.transB};${e.alpha===1}`}},au=(e,t)=>{zc(e.inputs),e.compute(Mc(e.inputs,t))}});var Uc,Nc,Wc,ou,su=F(()=>{"use strict";Ue();$e();ve();Uc=(e,t)=>{let r=e[0].dims,a=r,n=2,o=U.sizeToDimension(r,n),u=U.sizeFromDimension(r,n),l=qe(u),i=u/l,c=[r[0],r[1],i],m=["rank","type","type"],f=[{type:"uint32",data:u},{type:"uint32",data:i}];f.push(...G(c),...G(c));let h=b=>{let w=M("x",e[0].dataType,c.length,l),_=M("scale",e[1].dataType,e[1].dims),I=M("bias",e[2].dataType,e[2].dims),$=q("output",e[0].dataType,c.length,l),x=[w,_,I,$],T=w.type.value,A=l===1?"f32":`vec${l}`,z=64,R=[{name:"normSize",type:"u32"},{name:"normPackedSize",type:"u32"}];return` + var meanShared : f32; + var squaredNormShared : f32; + var workgroupShared : array<${A}, ${z}>; + const workgroupSize = ${z}u; + ${b.registerUniforms(R).declareVariables(...x)} + ${b.mainStart(z)} + let norm = global_idx / workgroupSize; + let batch = norm / uniforms.x_shape[1]; + let channel = norm % uniforms.x_shape[1]; + let localIndex = local_id.x; + + // initialize workgroup memory + var initial = ${A}(0); + for (var h = localIndex; h < uniforms.normPackedSize; h += workgroupSize) { + initial = initial + ${A}(${w.get("batch","channel","h")}); + } + workgroupShared[localIndex] = initial; + workgroupBarrier(); + + // Calculate the mean of current channel data. + for (var currSize = workgroupSize >> 1; currSize > 0; currSize = currSize >> 1) { + if (localIndex < currSize) { + workgroupShared[localIndex] = workgroupShared[localIndex] + workgroupShared[localIndex + currSize]; + } + workgroupBarrier(); + } + if (localIndex == 0) { + meanShared = ${rt("workgroupShared[0]",l)} / f32(uniforms.normSize); + } + workgroupBarrier(); + + // reinitialize workgroup memory. + initial = ${A}(0); + for (var h = localIndex; h < uniforms.normPackedSize; h += workgroupSize) { + let deviation = ${A}(${w.get("batch","channel","h")}) - ${A}(meanShared); + initial = initial + deviation * deviation; + } + workgroupShared[localIndex] = initial; + workgroupBarrier(); + + // Calculate the sum of square of deviation of current channel data. + for (var currSize = workgroupSize >> 1; currSize > 0; currSize = currSize >> 1) { + if (localIndex < currSize) { + workgroupShared[localIndex] = workgroupShared[localIndex] + workgroupShared[localIndex + currSize]; + } + workgroupBarrier(); + } + if (localIndex == 0) { + squaredNormShared = ${rt("workgroupShared[0]",l)}; + } + workgroupBarrier(); + + let invStdDev = inverseSqrt(squaredNormShared / f32(uniforms.normSize) + f32(${t.epsilon})); + let channelScale = invStdDev * f32(${_.getByOffset("channel")}); + let channelShift = f32(${I.getByOffset("channel")}) - meanShared * channelScale; + for (var h = localIndex; h < uniforms.normPackedSize; h += workgroupSize) { + let value = ${w.get("batch","channel","h")} * ${T}(${A}(channelScale)) + ${T}(${A}(channelShift)); + ${$.set("batch","channel","h","value")}; + } + }`};return{name:"InstanceNormalization",shaderCache:{hint:`${t.epsilon};${l}`,inputDependencies:m},getRunData:()=>({outputs:[{dims:a,dataType:e[0].dataType}],dispatchGroup:{x:o},programUniforms:f}),getShaderSource:h}},Nc=(e,t,r,a,n,o,u,l)=>{let i=qe(u),c=64,m=i===1?"vec2f":`mat2x${i}f`,f=i===1?"f32":`vec${i}f`,h=(R,N)=>`${m}(${R}, ${N})`,b=n*u/i,w=Math.ceil(o/c),_=["type"],I=[{type:"uint32",data:w},{type:"uint32",data:o},{type:"uint32",data:Math.floor(u/i)},{type:"uint32",data:Math.floor(o*u/i)}],$=R=>{let N=M("input",t.dataType,t.dims,i);return` + ${R.declareVariables(N)} + @group(0) @binding(1) var output : array<${m}>; + struct Uniforms {wg_size:u32, H:u32, C:u32, image_size:u32}; + @group(0) @binding(2) var uniforms: Uniforms; + + ${R.mainStart(c)} + let currentImageNumber = global_idx / ${c} / uniforms.C; + let currentChannelNumber = (global_idx / ${c}) % uniforms.C; + let wgId = global_idx % ${c}; + let wgOffset = wgId * uniforms.wg_size; + if (wgOffset >= uniforms.H) { + return; + } + let wgMax = min(wgOffset + uniforms.wg_size, uniforms.H); + + let offset = currentImageNumber * uniforms.image_size + currentChannelNumber; + var sum = ${Qe("f32",i)}; + var squaredSum = ${Qe("f32",i)}; + for (var i: u32 = wgOffset; i < wgMax; i++) { + let value = ${f}(input[offset + i * uniforms.C]); + sum += value; + squaredSum += value * value; + } + output[global_idx] = ${h("sum","squaredSum")}; + }`},x=e.compute({name:"InstanceNormComputeMean",shaderCache:{hint:`${i}`,inputDependencies:_},getRunData:()=>({outputs:[{dims:[n,u,c,2],dataType:1}],dispatchGroup:{x:n*u/i},programUniforms:I}),getShaderSource:$},{inputs:[t],outputs:[-1]})[0],T=[{type:"uint32",data:b},{type:"uint32",data:o},{type:"uint32",data:Math.floor(u/i)},{type:"uint32",data:Math.floor(c*u/i)}],A=["type","type","type"],z=R=>{let N=M("scale",r.dataType,r.dims,i),E=M("bias",a.dataType,a.dims,i);return` + @group(0) @binding(0) var input : array<${m}>; + @group(0) @binding(1) var scale : array<${N.type.storage}>; + @group(0) @binding(2) var bias : array<${E.type.storage}>; + @group(0) @binding(3) var output : array<${m}>; + struct Uniforms {units_of_work : u32, H: u32, C : u32, image_size : u32}; + @group(0) @binding(4) var uniforms: Uniforms; + + ${R.mainStart()} + ${R.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.units_of_work")} + let currentImageNumber = global_idx / uniforms.C; + let currentChannelNumber = global_idx % uniforms.C; + + let offset = currentImageNumber * uniforms.image_size; + var sum = ${Qe("f32",i)}; + var squaredSum = ${Qe("f32",i)}; + for (var i: u32 = 0; i < ${c}; i++) { + let value = input[offset + i + currentChannelNumber * ${c}]; + sum += value[0]; + squaredSum += value[1]; + } + sum = sum / f32(uniforms.H); + squaredSum = squaredSum / f32(uniforms.H); + let invStdDev = inverseSqrt(squaredSum - sum * sum + f32(${l})); + let channelScale = invStdDev * ${f}(scale[currentChannelNumber]); + let channelShift = ${f}(bias[currentChannelNumber]) - sum * channelScale; + + output[global_idx] = ${h("channelScale","channelShift")}; + }`};return e.compute({name:"InstanceNormComputeChannelScaleShift",shaderCache:{hint:`${i};${l}`,inputDependencies:A},getRunData:()=>({outputs:[{dims:[n,u,2],dataType:1}],dispatchGroup:{x:Math.ceil(b/64)},programUniforms:T}),getShaderSource:z},{inputs:[x,r,a],outputs:[-1]})[0]},Wc=(e,t,r)=>{let a=t[0].dims,n=a,o=a[0],u=a[a.length-1],l=U.sizeFromDimension(a,1)/u,i=qe(u),c=U.size(n)/i,m=[{type:"uint32",data:l},{type:"uint32",data:Math.floor(u/i)}],f=["type","type"],h=Nc(e,t[0],t[1],t[2],o,l,u,r.epsilon),b=w=>{let _=Fe(t[0].dataType),I=i===1?"vec2f":`mat2x${i}f`,$=i===1?_:`vec${i}<${_}>`,x=M("input",t[0].dataType,t[0].dims,i),T=q("output",t[0].dataType,n,i);return` + @group(0) @binding(0) var input : array<${x.type.storage}>; + @group(0) @binding(1) var scaleInput : array<${I}>; + @group(0) @binding(2) var output : array<${T.type.storage}>; + struct Uniforms {H: u32, C : u32}; + @group(0) @binding(3) var uniforms: Uniforms; + + ${w.mainStart()} + let currentImageNumber = global_idx / (uniforms.C * uniforms.H); + let currentChannelNumber = global_idx % uniforms.C; + + let scaleOffset = currentImageNumber * uniforms.C + currentChannelNumber; + let scale = scaleInput[scaleOffset]; + output[global_idx] = fma(input[global_idx], ${$}(scale[0]), ${$}(scale[1])); + }`};e.compute({name:"InstanceNormalizationNHWC",shaderCache:{hint:`${i}`,inputDependencies:f},getRunData:()=>({outputs:[{dims:n,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(c/64)},programUniforms:m}),getShaderSource:b},{inputs:[t[0],h]})},ou=(e,t)=>{t.format==="NHWC"?Wc(e,e.inputs,t):e.compute(Uc(e.inputs,t))}});var Vc,Hc,uu,lu=F(()=>{"use strict";Ue();$e();ve();Vc=e=>{if(!e||e.length<2)throw new Error("layerNorm requires at least 2 inputs.")},Hc=(e,t,r)=>{let a=e[0].dims,n=e[1],o=e[2],u=a,l=U.normalizeAxis(t.axis,a.length),i=U.sizeToDimension(a,l),c=U.sizeFromDimension(a,l),m=U.size(n.dims),f=o?U.size(o.dims):0;if(m!==c||o&&f!==c)throw new Error(`Size of X.shape()[axis:] == ${c}. + Size of scale and bias (if provided) must match this. + Got scale size of ${m} and bias size of ${f}`);let h=[];for(let A=0;A1,$=r>2,x=A=>{let z=Fe(e[0].dataType),R=[M("x",e[0].dataType,e[0].dims,b),M("scale",n.dataType,n.dims,b)];o&&R.push(M("bias",o.dataType,o.dims,b)),R.push(q("output",e[0].dataType,u,b)),I&&R.push(q("mean_data_output",1,h)),$&&R.push(q("inv_std_output",1,h));let N=[{name:"norm_count",type:"u32"},{name:"norm_size",type:"f32"},{name:"norm_size_vectorized",type:"u32"},{name:"epsilon",type:"f32"}];return` + ${A.registerUniforms(N).declareVariables(...R)} + ${A.mainStart()} + ${A.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.norm_count")} + let offset = global_idx * uniforms.norm_size_vectorized; + var meanVector = ${Qe("f32",b)}; + var meanSquareVector = ${Qe("f32",b)}; + + for (var h: u32 = 0u; h < uniforms.norm_size_vectorized; h++) { + let value = ${pt(z,b,"x[h + offset]")}; + meanVector += value; + meanSquareVector += value * value; + } + let mean = ${rt("meanVector",b)} / uniforms.norm_size; + let invStdDev = + inverseSqrt(${rt("meanSquareVector",b)} / uniforms.norm_size - mean * mean + uniforms.epsilon); + + for (var j: u32 = 0; j < uniforms.norm_size_vectorized; j++) { + let f32input = ${pt(z,b,"x[j + offset]")}; + let f32scale = ${pt(z,b,"scale[j]")}; + output[j + offset] = ${R[0].type.value}((f32input - mean) * invStdDev * f32scale + ${o?`+ ${pt(z,b,"bias[j]")}`:""} + ); + } + + ${I?"mean_data_output[global_idx] = mean":""}; + ${$?"inv_std_output[global_idx] = invStdDev":""}; + }`},T=[{dims:u,dataType:e[0].dataType}];return I&&T.push({dims:h,dataType:1}),$&&T.push({dims:h,dataType:1}),{name:"LayerNormalization",shaderCache:{hint:`${b};${r}`,inputDependencies:w},getRunData:()=>({outputs:T,dispatchGroup:{x:Math.ceil(i/64)},programUniforms:_}),getShaderSource:x}},uu=(e,t)=>{Vc(e.inputs),e.compute(Hc(e.inputs,t,e.outputCount))}});var Lc,cu,du,Gc,Ia,pu,mu=F(()=>{"use strict";$e();je();sn();ca();ve();tr();Lc=(e,t)=>{let r=e[0],a=e[1],n=e[2],o=e[3],u=e[4],l=e[5],i=e[6],c=e[7];if(r.dims.length!==3&&r.dims.length!==5)throw new Error("Input query is expected to have 3 or 5 dimensions");let m=!1,f=r.dims[0],h=r.dims[1],b=r.dims.length===3?m?r.dims[2]/3:r.dims[2]:t.numHeads*r.dims[4],w=h,_=0,I=0,$=Math.floor(b/t.numHeads);if(i&&c){if(i.dims.length!==4)throw new Error('Input "past_key" is expected to have 4 dimensions');if(c.dims.length!==4)throw new Error('Input "past_value" is expected to have 4 dimensions');_=i.dims[2],I=i.dims[2]}else if(i||c)throw new Error('Input "past_key" and "past_value" shall be both present or both absent');let x;if(a){if(r.dims.length!==3)throw new Error('Input "query" is expected to have 3 dimensions when key is given');if(a.dims.length<3||a.dims.length>5)throw new Error('Input "key" is expected to have 3, 4, or 5 dimensions');if(r.dims[0]!==a.dims[0])throw new Error('Input "query" and "key" shall have same dim 0 (batch size)');if(a.dims.length===3){if(a.dims[2]!==r.dims[2])throw new Error('Input "query" and "key" shall have same dim 2 (hidden_size)');x=2,w=a.dims[1]}else if(a.dims.length===5){if(a.dims[2]!==t.numHeads||a.dims[3]!==2||a.dims[4]!==$)throw new Error('Expect "key" shape (batch_size, kv_sequence_length, num_heads, 2, head_size) for packed kv');if(n)throw new Error('Expect "value" be none when "key" has packed kv format.');x=5,w=a.dims[1]}else{if(a.dims[1]!==t.numHeads||a.dims[3]!==$)throw new Error('Expect "key" shape (batch_size, num_heads, kv_sequence_length, head_size) for past_key');x=0,w=a.dims[2]}}else{if(r.dims.length!==3&&r.dims.length!==5)throw new Error('Input "query" is expected to have 3 or 5 dimensions when key is empty');if(r.dims.length===5&&(r.dims[2]!==t.numHeads||r.dims[3]!==3))throw new Error('Expect "query" shape (batch_size, kv_sequence_length, num_heads, 3, head_size) for packed kv');x=3}if(o){if(o.dims.length!==1)throw new Error('Input "bias" is expected to have 1 dimension');if(n&&r.dims.length===5&&r.dims[3]===2)throw new Error("bias is not allowed for packed kv.")}let T=0;if(u){T=8;let E=u.dims;throw E.length===1?E[0]===f?T=1:E[0]===3*f+2&&(T=3):E.length===2&&E[0]===f&&E[1]===w&&(T=5),T===8?new Error('Input "key_padding_mask" shape shall be (batch_size) or (batch_size, kv_sequence_length)'):new Error("Mask not supported")}let A=!1,z=b;if(n){if(n.dims.length!==3&&n.dims.length!==4)throw new Error('Input "value" is expected to have 3 or 4 dimensions');if(r.dims[0]!==n.dims[0])throw new Error('Input "query" and "value" shall have same dim 0 (batch_size)');if(n.dims.length===3){if(w!==n.dims[1])throw new Error('Input "key" and "value" shall have the same dim 1 (kv_sequence_length)');z=n.dims[2]}else{if(w!==n.dims[2])throw new Error('Input "past_key" and "past_value" shall have the same dim 2 (kv_sequence_length)');z=n.dims[1]*n.dims[3],A=!0}}let R=_+w,N=!1;if(u)throw new Error("Key padding mask is not supported");if(l)throw new Error("extraAddQk is not supported");if(i)throw new Error("pastKey is not supported");if(c)throw new Error("pastValue is not supported");return{batchSize:f,sequenceLength:h,pastSequenceLength:_,kvSequenceLength:w,totalSequenceLength:R,maxSequenceLength:I,inputHiddenSize:0,hiddenSize:b,vHiddenSize:z,headSize:$,vHeadSize:Math.floor(z/t.numHeads),numHeads:t.numHeads,isUnidirectional:!1,pastPresentShareBuffer:!1,maskFilterValue:t.maskFilterValue,maskType:T,scale:t.scale,broadcastResPosBias:N,passPastInKv:A,qkvFormat:x}},cu=e=>ge({...e}),du=ge({perm:[0,2,1,3]}),Gc=(e,t,r,a,n,o,u)=>{let l=[a,n,o],i=U.size(l),c=[{type:"uint32",data:i},{type:"uint32",data:u},{type:"uint32",data:o}],m=f=>{let h=q("qkv_with_bias",t.dataType,l),b=M("qkv",t.dataType,l),w=M("bias",r.dataType,l),_=[{name:"output_size",type:"u32"},{name:"bias_offset",type:"u32"},{name:"hidden_size",type:"u32"}];return` + ${f.registerUniforms(_).declareVariables(b,w,h)} + ${f.mainStart()} + ${f.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} + let bias_offset_idx = (global_idx % uniforms.hidden_size) + uniforms.bias_offset; + + qkv_with_bias[global_idx] = qkv[global_idx] + bias[bias_offset_idx]; + }`};return e.compute({name:"MultiHeadAttentionAddBias",shaderCache:{inputDependencies:["type","type"]},getRunData:()=>({outputs:[{dims:l,dataType:t.dataType,gpuDataType:0}],dispatchGroup:{x:Math.ceil(i/64)},programUniforms:c}),getShaderSource:m},{inputs:[t,r],outputs:[-1]})[0]},Ia=(e,t,r,a,n,o,u,l)=>{let i=o;if(u){if(a===1)throw new Error("AddBiasReshape is not implemented. Please export your model with packed QKV or KV");return i=Gc(e,o,u,t,a,r*n,l),i=i.reshape([t,a,r,n]),e.compute(mt(i,du.perm),{inputs:[i],outputs:[-1]})[0]}else return o.dims.length===3&&(i=o.reshape([t,a,r,n])),e.compute(mt(i,du.perm),{inputs:[i],outputs:[-1]})[0]},pu=(e,t)=>{let r=Lc(e.inputs,t);if(e.inputs[0].dims.length===5)throw new Error("Packed QKV is not implemented");if(e.inputs[1]?.dims.length===5)throw new Error("Packed KV is not implemented");let a=e.inputs[1]&&e.inputs[2]&&e.inputs[1].dims.length===4&&e.inputs[2].dims.length===4,n=Ia(e,r.batchSize,r.numHeads,r.sequenceLength,r.headSize,e.inputs[0],e.inputs[3],0);if(a)return hn(e,n,e.inputs[1],e.inputs[2],e.inputs[4],void 0,void 0,void 0,e.inputs[5],r,t);let o=Ia(e,r.batchSize,r.numHeads,r.kvSequenceLength,r.headSize,e.inputs[1],e.inputs[3],r.hiddenSize),u=Ia(e,r.batchSize,r.numHeads,r.kvSequenceLength,r.vHeadSize,e.inputs[2],e.inputs[3],2*r.hiddenSize);hn(e,n,o,u,e.inputs[4],void 0,e.inputs[6],e.inputs[7],e.inputs[5],r,t)}});var Fc,qc,jc,Kc,Yc,Zc,Xc,Qc,fu,hu=F(()=>{"use strict";Ue();$e();ve();Fc=e=>{if(!e||e.length<1)throw new Error("Too few inputs");if(e[0].dataType!==1)throw new Error("Input type must be float.");if(e.length>=2){let t=e[0].dims.length*2===e[1].dims[0];if(e.length===4&&(t=e[3].dims[0]*2===e[1].dims[0]),!t)throw new Error("The pads should be a 1D tensor of shape [2 * input_rank] or [2 * num_axes].")}},qc=(e,t,r)=>{let a="";for(let n=t-1;n>=0;--n)a+=` + k = i32(${e.indicesGet("indices",n)}) - ${ce("uniforms.pads",n,r)}; + if (k < 0) { + break; + } + if (k >= i32(${ce("uniforms.x_shape",n,t)})) { + break; + } + offset += k * i32(${ce("uniforms.x_strides",n,t)}); + `;return` + value = ${e.type.value}(uniforms.constant_value); + for (var i = 0; i < 1; i++) { + var offset = 0; + var k = 0; + ${a} + value = x[offset]; + } + `},jc=(e,t,r)=>{let a="";for(let n=t-1;n>=0;--n)a+=` + k = i32(${e.indicesGet("indices",n)}) - ${ce("uniforms.pads",n,r)}; + if (k < 0) { + k = -k; + } + { + let _2n_1 = 2 * (i32(${ce("uniforms.x_shape",n,t)}) - 1); + k = k % _2n_1; + if(k >= i32(${ce("uniforms.x_shape",n,t)})) { + k = _2n_1 - k; + } + } + offset += k * i32(${ce("uniforms.x_strides",n,t)}); + `;return` + var offset = 0; + var k = 0; + ${a} + value = x[offset]; + `},Kc=(e,t,r)=>{let a="";for(let n=t-1;n>=0;--n)a+=` + k = i32(${e.indicesGet("indices",n)}) - ${ce("uniforms.pads",n,r)}; + if (k < 0) { + k = 0; + } + if (k >= i32(${ce("uniforms.x_shape",n,t)})) { + k = i32(${ce("uniforms.x_shape",n,t)}) - 1; + } + offset += k * i32(${ce("uniforms.x_strides",n,t)}); + `;return` + var offset = 0; + var k = 0; + ${a} + value = x[offset]; + `},Yc=(e,t,r)=>{let a="";for(let n=t-1;n>=0;--n)a+=` + k = i32(${e.indicesGet("indices",n)}) - ${ce("uniforms.pads",n,r)}; + if (k < 0) { + k += i32(${ce("uniforms.x_shape",n,t)}]); + } + if (k >= i32(${ce("uniforms.x_shape",n,t)})) { + k -= i32(${ce("uniforms.x_shape",n,t)}); + } + offset += k * i32(${ce("uniforms.x_strides",n,t)}); + `;return` + var offset = 0; + var k = 0; + ${a} + value = x[offset]; + `},Zc=(e,t,r)=>{switch(r.mode){case 0:return qc(e,t,r.pads.length);case 1:return jc(e,t,r.pads.length);case 2:return Kc(e,t,r.pads.length);case 3:return Yc(e,t,r.pads.length);default:throw new Error("Invalid mode")}},Xc=(e,t)=>{let r=U.padShape(e[0].dims.slice(),t.pads),a=e[0].dims,o=[{type:"uint32",data:U.size(r)},{type:"uint32",data:t.pads}];if(t.mode===0){let i=tt(e[0].dataType);o.push({type:i,data:t.value})}o.push(...G(e[0].dims),...G(r));let u=["rank"],l=i=>{let c=q("output",e[0].dataType,r.length),m=M("x",e[0].dataType,a.length),f=m.type.value,h=Zc(c,a.length,t),b=[{name:"output_size",type:"u32"},{name:"pads",type:"i32",length:t.pads.length}];return t.mode===0&&b.push({name:"constant_value",type:f}),` + ${i.registerUniforms(b).declareVariables(m,c)} + ${i.mainStart()} + ${i.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} + + let indices = ${c.offsetToIndices("global_idx")}; + + var value = ${f}(0); + ${h} + output[global_idx] = value; + }`};return{name:"Pad",shaderCache:{hint:`${t.mode}`,inputDependencies:u},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(U.size(r)/64)},programUniforms:o}),getShaderSource:l}},Qc=(e,t)=>{if(e.length>1){let r=e[1].getBigInt64Array(),a=e.length>=3&&e[2].data?e[2].getFloat32Array()[0]:0,n=e[0].dims.length,o=new Int32Array(2*n).fill(0);if(e.length>=4){let l=e[3].getBigInt64Array();for(let i=0;io[Number(i)]=Number(l));let u=[];return o.forEach(l=>u.push(l)),{mode:t.mode,value:a,pads:u}}else return t},fu=(e,t)=>{Fc(e.inputs);let r=Qc(e.inputs,t);e.compute(Xc(e.inputs,r),{inputs:[0]})}});var Sn,gu,yu,bu,wu,Jc,ep,vu,$u,_u,xu,Su,Iu,Cu,Au,Eu,Tu,Ou,ku,Pu=F(()=>{"use strict";st();$e();ve();Sn=e=>{if(Se.webgpu.validateInputContent&&(!e||e.length!==1))throw new Error("Pool ops requires 1 input.")},gu=(e,t,r)=>{let a=t.format==="NHWC",n=e.dims.slice();a&&n.splice(1,0,n.pop());let o=Object.hasOwnProperty.call(t,"dilations"),u=t.kernelShape.slice(),l=t.strides.slice(),i=o?t.dilations.slice():[],c=t.pads.slice();Vt.adjustPoolAttributes(r,n,u,l,i,c);let m=Vt.computePoolOutputShape(r,n,l,i,u,c,t.autoPad),f=Object.assign({},t);o?Object.assign(f,{kernelShape:u,strides:l,pads:c,dilations:i,cacheKey:t.cacheKey}):Object.assign(f,{kernelShape:u,strides:l,pads:c,cacheKey:t.cacheKey});let h=m.slice();return h.push(h.splice(1,1)[0]),[f,a?h:m]},yu=(e,t)=>{let r=t.format==="NHWC",a=U.size(e),n=U.size(t.kernelShape),o=[{type:"uint32",data:a},{type:"uint32",data:n}],u=[{name:"outputSize",type:"u32"},{name:"kernelSize",type:"u32"}];if(t.kernelShape.length<=2){let l=t.kernelShape[t.kernelShape.length-1],i=t.strides[t.strides.length-1],c=t.pads[t.pads.length/2-1],m=t.pads[t.pads.length-1],f=!!(c+m);o.push({type:"uint32",data:l},{type:"uint32",data:i},{type:"uint32",data:c},{type:"uint32",data:m}),u.push({name:"kw",type:"u32"},{name:"sw",type:"u32"},{name:"pwStart",type:"u32"},{name:"pwEnd",type:"u32"});let h=!1;if(t.kernelShape.length===2){let b=t.kernelShape[t.kernelShape.length-2],w=t.strides[t.strides.length-2],_=t.pads[t.pads.length/2-2],I=t.pads[t.pads.length-2];h=!!(_+I),o.push({type:"uint32",data:b},{type:"uint32",data:w},{type:"uint32",data:_},{type:"uint32",data:I}),u.push({name:"kh",type:"u32"},{name:"sh",type:"u32"},{name:"phStart",type:"u32"},{name:"phEnd",type:"u32"})}return[o,u,!0,f,h]}else{if(r)throw new Error("Pooling with kernelShape.length > 2 is not supported for NHWC format.");let l=U.computeStrides(t.kernelShape);o.push({type:"uint32",data:l},{type:"uint32",data:t.pads},{type:"uint32",data:t.strides}),u.push({name:"kernelStrides",type:"u32",length:l.length},{name:"pads",type:"u32",length:t.pads.length},{name:"strides",type:"u32",length:t.strides.length});let i=t.pads.reduce((c,m)=>c+m);return[o,u,!!i,!1,!1]}},bu=(e,t,r,a,n,o,u,l,i,c,m,f)=>{let h=n.format==="NHWC",b=t.type.value,w=q("output",t.type.tensor,a);if(n.kernelShape.length<=2){let _="",I="",$="",x=r-(h?2:1);if(m?_=` + for (var i: u32 = 0u; i < uniforms.kw; i++) { + xIndices[${x}] = indices[${x}] * uniforms.sw - uniforms.pwStart + i; + if (xIndices[${x}] < 0 || xIndices[${x}] + >= uniforms.x_shape[${x}]) { + pad++; + continue; + } + let x_val = x[${t.indicesToOffset("xIndices")}]; + ${o} + }`:_=` + for (var i: u32 = 0u; i < uniforms.kw; i++) { + xIndices[${x}] = indices[${x}] * uniforms.sw - uniforms.pwStart + i; + let x_val = x[${t.indicesToOffset("xIndices")}]; + ${o} + }`,n.kernelShape.length===2){let A=r-(h?3:2);f?I=` + for (var j: u32 = 0u; j < uniforms.kh; j++) { + xIndices[${A}] = indices[${A}] * uniforms.sh - uniforms.phStart + j; + if (xIndices[${A}] < 0 || xIndices[${A}] >= uniforms.x_shape[${A}]) { + pad += i32(uniforms.kw); + continue; + } + `:I=` + for (var j: u32 = 0u; j < uniforms.kh; j++) { + xIndices[${A}] = indices[${A}] * uniforms.sh - uniforms.phStart + j; + `,$=` + } + `}return` + ${e.registerUniforms(i).declareVariables(t,w)} + + ${e.mainStart()} + ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} + + let indices = ${w.offsetToIndices("global_idx")}; + var xIndices = ${w.offsetToIndices("global_idx")}; + + var value = ${b}(${l}); + var pad = 0; + ${I} + ${_} + ${$} + ${u} + + output[global_idx] = value; + }`}else{if(h)throw new Error("Pooling with kernelShape.length > 2 is not supported for NHWC format.");let _=n.kernelShape.length,I=n.pads.length,$="";return c?$=` + if (xIndices[j] >= uniforms.x_shape[j]) { + pad++; + isPad = true; + break; + } + } + if (!isPad) { + let x_val = x[${t.indicesToOffset("xIndices")}]; + ${o} + }`:$=` + } + let x_val = x[${t.indicesToOffset("xIndices")}]; + ${o} + `,` + ${e.registerUniforms(i).declareVariables(t,w)} + + ${e.mainStart()} + ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} + let indices = ${w.offsetToIndices("global_idx")}; + var xIndices = ${w.offsetToIndices("global_idx")}; + + var offsets: array; + + var value = ${b}(${l}); + var pad = 0; + var isPad = false; + + for (var i: u32 = 0u; i < uniforms.kernelSize; i++) { + var offset = i; + for (var j = 0u; j < ${_-1}u; j++) { + offsets[j] = offset / ${ce("uniforms.kernelStrides","j",_)}; + offset -= offsets[j] * ${ce("uniforms.kernelStrides","j",_)}; + } + offsets[${_-1}] = offset; + + isPad = false; + for (var j = ${r-_}u; j < ${r}u; j++) { + xIndices[j] = indices[j] * ${ce("uniforms.strides",`j - ${r-_}u`,_)} + + offsets[j - ${r-_}u] - ${ce("uniforms.pads","j - 2u",I)}; + ${$} + } + ${u} + + output[global_idx] = value; + }`}},wu=e=>`${e.format};${e.ceilMode};${e.autoPad};${e.kernelShape.length}`,Jc=e=>`${wu(e)};${e.countIncludePad}`,ep=e=>`${wu(e)};${e.storageOrder};${e.dilations}`,vu=e=>({format:e.format,autoPad:["NOTSET","VALID","SAME_UPPER","SAME_LOWER"][e.auto_pad],ceilMode:e.ceil_mode,kernelShape:e.kernel_shape,strides:e.strides,pads:e.pads}),$u=(e,t,r,a)=>{let[n,o]=gu(t,a,r),u=M("x",t.dataType,t.dims.length),l=u.type.value,i="value += x_val;",c="";n.countIncludePad?c+=`value /= ${l}(uniforms.kernelSize);`:c+=`value /= ${l}(i32(uniforms.kernelSize) - pad);`;let[m,f,h,b,w]=yu(o,n);m.push(...G(t.dims),...G(o));let _=["rank"];return{name:e,shaderCache:{hint:`${a.cacheKey};${h};${b};${w}`,inputDependencies:_},getRunData:()=>({outputs:[{dims:o,dataType:t.dataType}],dispatchGroup:{x:Math.ceil(U.size(o)/64)},programUniforms:m}),getShaderSource:I=>bu(I,u,t.dims.length,o.length,n,i,c,0,f,h,b,w)}},_u=e=>{let t=e.count_include_pad!==0,r=vu(e);if(r.ceilMode!==0)throw new Error("using ceil() in shape computation is not yet supported for AveragePool");let a={countIncludePad:t,...r,cacheKey:""};return{...a,cacheKey:Jc(a)}},xu=(e,t)=>{Sn(e.inputs),e.compute($u("AveragePool",e.inputs[0],!1,t))},Su={autoPad:"",ceilMode:0,countIncludePad:!1,kernelShape:[],strides:[],pads:[],storageOrder:0,dilations:[]},Iu=e=>{let t=e.format;return{format:t,...Su,cacheKey:t}},Cu=(e,t)=>{Sn(e.inputs),e.compute($u("GlobalAveragePool",e.inputs[0],!0,t))},Au=(e,t,r,a)=>{let[n,o]=gu(t,a,r),u=` + value = max(x_val, value); + `,l="",i=M("x",t.dataType,t.dims.length),c=["rank"],[m,f,h,b,w]=yu(o,n);return m.push(...G(t.dims),...G(o)),{name:e,shaderCache:{hint:`${a.cacheKey};${h};${b};${w}`,inputDependencies:c},getRunData:()=>({outputs:[{dims:o,dataType:t.dataType}],dispatchGroup:{x:Math.ceil(U.size(o)/64)},programUniforms:m}),getShaderSource:_=>bu(_,i,t.dims.length,o.length,n,u,l,-1e5,f,h,b,w)}},Eu=(e,t)=>{Sn(e.inputs),e.compute(Au("MaxPool",e.inputs[0],!1,t))},Tu=e=>{let t=e.storage_order,r=e.dilations,a=vu(e);if(t!==0)throw new Error("column major storage order is not yet supported for MaxPool");if(a.ceilMode!==0)throw new Error("using ceil() in shape computation is not yet supported for MaxPool");let n={storageOrder:t,dilations:r,...a,cacheKey:""};return{...n,cacheKey:ep(n)}},Ou=e=>{let t=e.format;return{format:t,...Su,cacheKey:t}},ku=(e,t)=>{Sn(e.inputs),e.compute(Au("GlobalMaxPool",e.inputs[0],!0,t))}});var rp,np,Ru,Bu=F(()=>{"use strict";st();Ue();ve();rp=(e,t,r)=>{let a=e===t,n=et&&r>0;if(a||n||o)throw new Error("Range these inputs' contents are invalid.")},np=(e,t,r,a)=>{let n=Math.abs(Math.ceil((t-e)/r)),o=[n],u=n,l=tt(a),i=[{type:"uint32",data:u},{type:l,data:e},{type:l,data:r},...G(o)],c=m=>{let f=q("output",a,o.length),h=f.type.value,b=[{name:"outputSize",type:"u32"},{name:"start",type:h},{name:"delta",type:h}];return` + ${m.registerUniforms(b).declareVariables(f)} + ${m.mainStart()} + ${m.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} + output[global_idx] = uniforms.start + ${h}(global_idx) * uniforms.delta; + }`};return{name:"Range",shaderCache:{hint:`${a}`},getShaderSource:c,getRunData:()=>({outputs:[{dims:o,dataType:a}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:i})}},Ru=e=>{let t=0,r=0,a=0;e.inputs[0].dataType===6?(t=e.inputs[0].getInt32Array()[0],r=e.inputs[1].getInt32Array()[0],a=e.inputs[2].getInt32Array()[0]):e.inputs[0].dataType===1&&(t=e.inputs[0].getFloat32Array()[0],r=e.inputs[1].getFloat32Array()[0],a=e.inputs[2].getFloat32Array()[0]),Se.webgpu.validateInputContent&&rp(t,r,a),e.compute(np(t,r,a,e.inputs[0].dataType),{inputs:[]})}});var ap,ip,op,sp,up,lp,dp,cp,pp,mp,fp,Du,hp,gp,yp,bp,wp,zu,Mu,Uu=F(()=>{"use strict";$e();je();ve();ap=(e,t)=>{if(e.every(r=>r>0||(()=>{throw new Error("Resize requires scales input values to be positive")})),e.length>0){if(t.mode==="linear"){if(!(e.length===2||e.length===3||e.length===4&&e[0]===1&&e[1]===1||e.length===4&&e[0]===1&&e[3]===1||e.length===5&&e[0]===1&&e[1]===1))throw new Error(`For linear mode, Resize requires scales to be 2D, 3D, 4D with either two outermost or one innermost and + one outermost scale values equal to 1, or 5D with two outermost scale values equal to 1`)}else if(t.mode==="cubic"&&!(e.length===2||e.length===4&&e[0]===1&&e[1]===1||e.length===4&&e[0]===1&&e[3]===1))throw new Error("Resize requires scales input size to be 2 or 4 for cubic mode")}},ip=(e,t,r)=>{t.every(n=>n>=0&&n{throw new Error("Resize requires axes input values to be positive and less than rank")}));let a=new Array(r).fill(1);return t.forEach((n,o)=>a[n]=e[o]),a},op=(e,t,r,a,n,o)=>{let[u,l,i]=r>10?[1,2,3]:[-1,e.length>1?1:-1,-1],c=e[0].dims.length;if(u>0&&e.length>u&&e[u].dims.length>0)e[u].getFloat32Array().forEach(m=>o.push(m));else if(t.coordinateTransformMode==="tf_crop_and_resize")throw new Error("Resize requires RoI input to be specified when coordinateTransformMode is tfCropAndResize");if(l>0&&e.length>l&&e[l].dims.length>0){if(e[l].getFloat32Array().forEach(m=>a.push(m)),a.length!==0&&a.length!==c&&r>=18&&a.length!==t.axes.length)throw new Error("Resize requires scales input size to be same as input rank or axes size for opset 18 and up");ap(a,t),t.axes.length>0&&ip(a,t.axes,c).forEach((m,f)=>a[f]=m)}if(i>0&&e.length>i&&(e[i].getBigInt64Array().forEach(m=>n.push(Number(m))),n.length!==c||r>=18&&n.length===t.axes.length))throw new Error("Resize requires sizes input size to be same as input rank or axes size for opset 18 and up");if(t.axes.length>0){if(a.length!==t.axes.length)throw new Error('Resize requires "scales" input size to be of axes rank when axes attributes is specified');if(n.length!==t.axes.length)throw new Error('Resize requires "sizes" input size to be of rank axes rank when axes attributes is specified')}if(typeof a<"u"&&typeof n<"u"&&a.length>0&&n.length>c)throw new Error("Resize requires only of scales or sizes to be specified")},sp=(e,t)=>`fn getOriginalCoordinateFromResizedCoordinate(xResized: u32, xScale: f32, lengthResized: u32, + lengthOriginal: u32, roiStart: f32, roiEnd: f32) -> ${t} { `+(()=>{switch(e){case"asymmetric":return`return ${t}(xResized) / ${t}(xScale);`;case"pytorch_half_pixel":return`if (lengthResized > 1) { + return (${t}(xResized) + 0.5) / ${t}(xScale) - 0.5; + } else { + return 0.0; + }`;case"tf_half_pixel_for_nn":return`return (${t}(xResized) + 0.5) / ${t}(xScale);`;case"align_corners":return`if (lengthResized == 1) { + return 0.0; + } else { + // The whole part and the fractional part are calculated separately due to inaccuracy of floating + // point division. As an example, f32(21) / f32(7) may evaluate to 2.99... instead of 3, causing an + // offset-by-one error later in floor(). + let whole = ${t}(xResized * (lengthOriginal - 1) / (lengthResized - 1)); + let fract = + ${t}(xResized * (lengthOriginal - 1) % (lengthResized - 1)) / ${t}(lengthResized - 1); + return whole + fract; + }`;case"tf_crop_and_resize":return`if (lengthResized > 1) { + return ${t}(roiStart) * ${t}(lengthOriginal - 1) + + (${t}(xResized) * ${t}(roiEnd - roiStart) * ${t}(lengthOriginal - 1)) / + ${t}(lengthResized - 1); + } else { + return 0.5 * ${t}(roiStart + roiEnd) * ${t}(lengthOriginal - 1); + }`;case"half_pixel_symmetric":return`const outputWidth = ${t}xScale * ${t}(lengthResized); + const adjustment = ${t}(lengthResized) / outputWidth; + const center = ${t}(lengthOriginal) / 2; + const offset = center * (1 - adjustment); + return offset + ((${t}(xResized) + 0.5) / ${t}(xScale)) - 0.5;`;case"half_pixel":return`return ((${t}(xResized) + 0.5) / ${t}(xScale)) - 0.5;`;default:throw new Error(`Coordinate transform mode ${e} is not supported`)}})()+"}",up=(e,t,r)=>`fn getNearestPixelFromOriginal(xOriginal: ${r}, isDownSample: bool) -> ${r} {`+(()=>{switch(e){case"round_prefer_ceil":return"if (fract(xOriginal) == 0.5) { return ceil(xOriginal); } else { return round(xOriginal); }";case"floor":return"return floor(xOriginal);";case"ceil":return"return ceil(xOriginal);";case"round_prefer_floor":return"if (fract(xOriginal) == 0.5) { return floor(xOriginal); } else { return round(xOriginal); }";case"simple":default:if(t<11)return"if (isDownSample) { return ceil(xOriginal); } else { return xOriginal; }";throw new Error(`Nearest mode ${e} is not supported`)}})()+"}",lp=(e,t,r)=>{let a=new Array(r).fill(0).concat(new Array(r).fill(1)),n=e.length===0?a:e.slice();return t.length>0?(t.forEach((o,u)=>{a[o]=n[u],a[u+r]=n[t.length+u]}),a):n},dp=(e,t,r,a)=>{let n=[];if(r.length>0)if(a.length>0){if(e.forEach(o=>n.push(o)),Math.max(...a)>e.length)throw new Error("axes is out of bound");a.forEach((o,u)=>n[o]=r[u])}else r.forEach(o=>n.push(o));else{if(t.length===0)throw new Error("Resize requires either scales or sizes.");n=e.map((o,u)=>Math.round(o*t[u]))}return n},cp=(e,t,r)=>{let a=(()=>{switch(r.keepAspectRatioPolicy){case"not_larger":return r.axes.length>0?Math.min(...r.axes.map(o=>t[o]),Number.MAX_VALUE):Math.min(...t,Number.MAX_VALUE);case"not_smaller":return r.axes.length>0?Math.max(...r.axes.map(o=>t[o]),Number.MIN_VALUE):Math.max(...t,Number.MIN_VALUE);default:throw new Error(`Keep aspect ratio policy ${r.keepAspectRatioPolicy} is not supported`)}})();t.fill(1,0,t.length);let n=e.slice();return r.axes.length>0?(r.axes.forEach(o=>t[o]=a),r.axes.forEach(o=>n[o]=Math.round(e[o]*t[o]))):(t.fill(a,0,t.length),n.forEach((o,u)=>n[u]=Math.round(o*t[u]))),n},pp=(e,t,r,a,n)=>` + fn calculateOriginalIndicesFromOutputIndices(output_indices: ${e.type.indices}) -> array<${e.type.value}, ${r.length}> { + var original_indices: array<${e.type.value}, ${r.length}>; + for (var i:u32 = 0; i < ${r.length}; i++) { + var output_index = ${e.indicesGet("output_indices","i")}; + var scale = ${ce("uniforms.scales","i",a)}; + var roi_low = ${ce("uniforms.roi","i",n)}; + var roi_hi = ${ce("uniforms.roi",`i + ${t.length}`,n)}; + if (scale == 1.0) { + original_indices[i] = ${e.type.value}(output_index); + } else { + var input_shape_i = ${ce("uniforms.input_shape","i",t.length)}; + var output_shape_i = ${ce("uniforms.output_shape","i",r.length)}; + original_indices[i] = getOriginalCoordinateFromResizedCoordinate(output_index, scale, output_shape_i, + input_shape_i, roi_low, roi_hi); + } + } + return original_indices; + }`,mp=(e,t,r,a,n,o,u)=>` + fn calculateInputIndicesFromOutputIndices(output_indices: ${t.type.indices}) -> ${e.type.indices} { + var input_indices: ${e.type.indices}; + for (var i:u32 = 0; i < ${a.length}; i++) { + var output_index = ${t.indicesGet("output_indices","i")}; + var input_index: u32; + var scale = ${ce("uniforms.scales","i",n)}; + if (scale == 1.0) { + input_index = output_index; + } else { + var roi_low = ${ce("uniforms.roi","i",o)}; + var roi_hi = ${ce("uniforms.roi",`i + ${r.length}`,o)}; + var input_shape_i = ${ce("uniforms.input_shape","i",r.length)}; + var output_shape_i = ${ce("uniforms.output_shape","i",a.length)}; + var original_idx = getOriginalCoordinateFromResizedCoordinate(output_index, scale, output_shape_i, + input_shape_i, roi_low, roi_hi); + if (!${u} || (original_idx >= 0 && original_idx < ${t.type.value}(input_shape_i))) { + if (original_idx < 0) { + input_index = 0; + } else if (original_idx > ${t.type.value}(input_shape_i - 1)) { + input_index = input_shape_i - 1; + } else { + input_index = u32(getNearestPixelFromOriginal(original_idx, scale < 1)); + } + } else { + input_index = u32(original_idx); + } + } + ${e.indicesSet("input_indices","i"," input_index")} + } + return input_indices; + }`,fp=(e,t)=>` + fn checkInputIndices(input_indices: ${e.type.indices}) -> bool { + for (var i:u32 = 0; i < ${t.length}; i++) { + var input_index = ${e.indicesGet("input_indices","i")}; + if (input_index < 0 || input_index >= ${ce("uniforms.input_shape","i",t.length)}) { + return false; + } + } + return true; + }`,Du=(e,t,r,a)=>e.rank>a?` + ${e.indicesSet("input_indices",t,"channel")}; + ${e.indicesSet("input_indices",r,"batch")}; +`:"",hp=(e,t,r,a,n)=>{let[u,l,i,c]=r.length===2?[-1,0,1,-1]:[0,2,3,1],m=e.type.value;return` + fn getInputValue(batch: u32, channel: u32, row: u32, col: u32) -> ${m} { + var input_indices: ${e.type.indices}; + ${e.indicesSet("input_indices",l,`max(0, min(row, ${r[l]} - 1))`)}; + ${e.indicesSet("input_indices",i,`max(0, min(col, ${r[i]} - 1))`)}; + ${Du(e,c,u,2)} + return ${e.getByIndices("input_indices")}; + } + + fn bilinearInterpolation(output_indices: ${t.type.indices}) -> ${m} { + var originalIndices = calculateOriginalIndicesFromOutputIndices(output_indices); + var row:${m} = originalIndices[${l}]; + var col:${m} = originalIndices[${i}]; + ${a?`if (row < 0 || row > (${r[l]} - 1) || col < 0 || col > (${r[i]} - 1)) { + return ${n}; + }`:""}; + row = max(0, min(row, ${r[l]} - 1)); + col = max(0, min(col, ${r[i]} - 1)); + var row1: u32 = u32(row); + var col1: u32 = u32(col); + var row2: u32 = u32(row + 1); + var col2: u32 = u32(col + 1); + var channel: u32 = ${r.length>2?`u32(originalIndices[${c}])`:"0"}; + var batch: u32 = ${r.length>2?`u32(originalIndices[${u}])`:"0"}; + var x11: ${m} = getInputValue(batch, channel, row1, col1); + var x12: ${m} = getInputValue(batch, channel, row1, col2); + var x21: ${m} = getInputValue(batch, channel, row2, col1); + var x22: ${m} = getInputValue(batch, channel, row2, col2); + var dx1: ${m} = abs(row - ${m}(row1)); + var dx2: ${m} = abs(${m}(row2) - row); + var dy1: ${m} = abs(col - ${m}(col1)); + var dy2: ${m} = abs(${m}(col2) - col); + if (row1 == row2) { + dx1 = 0.5; + dx2 = 0.5; + } + if (col1 == col2) { + dy1 = 0.5; + dy2 = 0.5; + } + return (x11 * dx2 * dy2 + x12 * dx2 * dy1 + x21 * dx1 * dy2 + x22 * dx1 * dy1); + }`},gp=(e,t,r,a,n,o,u,l,i,c)=>{let m=r.length===2,f=!0,[h,b]=m?[0,1]:f?[2,3]:[1,2],w=e.type.value,_=I=>{let $=I===h?"row":"col";return` + fn ${$}CubicInterpolation(input_indices: ${e.type.indices}, output_indices: ${t.type.indices}) -> ${w} { + var output_index = ${t.indicesGet("output_indices",I)}; + var originalIdx: ${w} = getOriginalCoordinateFromResizedCoordinate(output_index, ${n[I]}, + ${a[I]}, ${r[I]}, ${o[I]}, ${o[I]} + ${r.length}); + var fractOriginalIdx: ${w} = originalIdx - floor(originalIdx); + var coefs = getCubicInterpolationCoefs(fractOriginalIdx); + + if (${l} && (originalIdx < 0 || originalIdx > (${r[I]} - 1))) { + return ${i}; + } + var data: array<${w}, 4> = array<${w}, 4>(0.0, 0.0, 0.0, 0.0); + for (var i: i32 = -1; i < 3; i++) { + var ${$}: ${w} = originalIdx + ${w}(i); + if (${$} < 0 || ${$} >= ${r[I]}) { + ${(()=>c?`coefs[i + 1] = 0.0; + continue;`:l?`return ${i};`:`${$} = max(0, min(${$}, ${r[I]} - 1));`)()}; + } + var input_indices_copy: ${e.type.indices} = input_indices; + ${e.indicesSet("input_indices_copy",I,`u32(${$})`)}; + data[i + 1] = ${I===h?e.getByIndices("input_indices_copy"):"rowCubicInterpolation(input_indices_copy, output_indices)"}; + } + return cubicInterpolation1D(data, coefs); + }`};return` + ${_(h)}; + ${_(b)}; + fn getCubicInterpolationCoefs(s: ${w}) -> array<${w}, 4> { + var absS = abs(s); + var coeffs: array<${w}, 4> = array<${w}, 4>(0.0, 0.0, 0.0, 0.0); + var oneMinusAbsS: ${w} = 1.0 - absS; + var twoMinusAbsS: ${w} = 2.0 - absS; + var onePlusAbsS: ${w} = 1.0 + absS; + coeffs[0] = ((${u} * onePlusAbsS - 5 * ${u}) * onePlusAbsS + 8 * ${u}) * onePlusAbsS - 4 * ${u}; + coeffs[1] = ((${u} + 2) * absS - (${u} + 3)) * absS * absS + 1; + coeffs[2] = ((${u} + 2) * oneMinusAbsS - (${u} + 3)) * oneMinusAbsS * oneMinusAbsS + 1; + coeffs[3] = ((${u} * twoMinusAbsS - 5 * ${u}) * twoMinusAbsS + 8 * ${u}) * twoMinusAbsS - 4 * ${u}; + return coeffs; + } + + fn cubicInterpolation1D(x: array<${w}, 4>, coefs: array<${w}, 4>) -> ${w} { + var coefsSum: ${w} = coefs[0] + coefs[1] + coefs[2] + coefs[3]; + return (x[0] * coefs[0] + x[1] * coefs[1]+ x[2] * coefs[2]+ x[3] * coefs[3]) / coefsSum; + } + + fn bicubicInterpolation(output_indices: ${t.type.indices}) -> ${w} { + var input_indices: ${e.type.indices} = output_indices; + return colCubicInterpolation(input_indices, output_indices); + } + `},yp=(e,t,r,a,n)=>{let[u,l,i,c,m]=r.length===3?[-1,0,1,2,-1]:[0,2,3,4,1],f=e.type.value;return` + fn getInputValue(batch: u32, channel: u32, depth:u32, height: u32, width: u32) -> ${f} { + var input_indices: ${e.type.indices}; + ${e.indicesSet("input_indices",l,`max(0, min(depth, ${r[l]} - 1))`)}; + ${e.indicesSet("input_indices",i,`max(0, min(height, ${r[i]} - 1))`)}; + ${e.indicesSet("input_indices",c,`max(0, min(width, ${r[c]} - 1))`)}; + ${Du(e,m,u,3)} + return ${e.getByIndices("input_indices")}; + } + + fn trilinearInterpolation(output_indices: ${t.type.indices}) -> ${f} { + var originalIndices = calculateOriginalIndicesFromOutputIndices(output_indices); + var depth:${f} = originalIndices[${l}]; + var height:${f} = originalIndices[${i}]; + var width:${f} = originalIndices[${c}]; + ${a?`if (depth < 0 || depth > (${r[l]} - 1) || height < 0 || height > (${r[i]} - 1) || width < 0 || (width > ${r[c]} - 1)) { + return ${n}; + }`:""}; + + depth = max(0, min(depth, ${r[l]} - 1)); + height = max(0, min(height, ${r[i]} - 1)); + width = max(0, min(width, ${r[c]} - 1)); + var depth1: u32 = u32(depth); + var height1: u32 = u32(height); + var width1: u32 = u32(width); + var depth2: u32 = u32(depth + 1); + var height2: u32 = u32(height + 1); + var width2: u32 = u32(width + 1); + var channel: u32 = ${r.length>3?`u32(originalIndices[${m}])`:"0"}; + var batch: u32 = ${r.length>3?`u32(originalIndices[${u}])`:"0"}; + + var x111: ${f} = getInputValue(batch, channel, depth1, height1, width1); + var x112: ${f} = getInputValue(batch, channel, depth1, height1, width2); + var x121: ${f} = getInputValue(batch, channel, depth1, height2, width1); + var x122: ${f} = getInputValue(batch, channel, depth1, height2, width2); + var x211: ${f} = getInputValue(batch, channel, depth2, height1, width1); + var x212: ${f} = getInputValue(batch, channel, depth2, height1, width2); + var x221: ${f} = getInputValue(batch, channel, depth2, height2, width1); + var x222: ${f} = getInputValue(batch, channel, depth2, height2, width2); + var dx1: ${f} = abs(depth - ${f}(depth1)); + var dx2: ${f} = abs(${f}(depth2) - depth); + var dy1: ${f} = abs(height - ${f}(height1)); + var dy2: ${f} = abs(${f}(height2) - height); + var dz1: ${f} = abs(width - ${f}(width1)); + var dz2: ${f} = abs(${f}(width2) - width); + if (depth1 == depth2) { + dx1 = 0.5; + dx2 = 0.5; + } + if (height1 == height2) { + dy1 = 0.5; + dy2 = 0.5; + } + if (width1 == width2) { + dz1 = 0.5; + dz2 = 0.5; + } + return (x111 * dx2 * dy2 * dz2 + x112 * dx2 * dy2 * dz1 + x121 * dx2 * dy1 *dz2 + x122 * dx2 * dy1 * dz1 + + x211 * dx1 * dy2 * dz2 + x212 * dx1 * dy2 * dz1 + x221 * dx1 * dy1 *dz2 + x222 * dx1 * dy1 * dz1); + }`},bp=(e,t,r,a,n,o)=>{let u=e.dims,l=lp(o,t.axes,u.length),i=dp(u,a,n,t.axes),c=a.slice();a.length===0&&(c=u.map((x,T)=>x===0?1:i[T]/x),t.keepAspectRatioPolicy!=="stretch"&&(i=cp(u,c,t)));let m=q("output",e.dataType,i.length),f=M("input",e.dataType,u.length),h=U.size(i),b=u.length===i.length&&u.every((x,T)=>x===i[T]),w=t.coordinateTransformMode==="tf_crop_and_resize",_=t.extrapolationValue,I=f.type.value,$=x=>` + ${b?"":` + ${sp(t.coordinateTransformMode,I)}; + ${(()=>{switch(t.mode){case"nearest":return` + ${fp(f,u)}; + ${up(t.nearestMode,r,I)}; + ${mp(f,m,u,i,c.length,l.length,w)}; + `;case"linear":return` + ${pp(m,u,i,c.length,l.length)}; + ${(()=>{if(u.length===2||u.length===4)return`${hp(f,m,u,w,_)}`;if(u.length===3||u.length===5)return`${yp(f,m,u,w,_)}`;throw Error("Linear mode only supports input dims 2, 3, 4 and 5 are supported in linear mode.")})()}; + `;case"cubic":return` + ${(()=>{if(u.length===2||u.length===4)return`${gp(f,m,u,i,c,l,t.cubicCoeffA,w,t.extrapolationValue,t.excludeOutside)}`;throw Error("Cubic mode only supports input dims 2 and 4 are supported in linear mode.")})()}; + `;default:throw Error("Invalid resize mode")}})()}; + `} + ${x.registerUniform("output_size","u32").registerUniform("scales","f32",c.length).registerUniform("roi","f32",l.length).declareVariables(f,m)} + ${x.mainStart()} + ${x.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} + ${b?"output[global_idx] = input[global_idx];":` + let output_indices = ${m.offsetToIndices("global_idx")}; + var input_indices: ${f.type.indices}; + ${(()=>{switch(t.mode){case"nearest":return`input_indices = calculateInputIndicesFromOutputIndices(output_indices); + if (checkInputIndices(input_indices)) { + output[global_idx] = ${f.getByIndices("input_indices")}; + } else { + output[global_idx] = ${t.extrapolationValue}; + }`;case"linear":return`output[global_idx] = ${u.length===2||u.length===4?"bilinearInterpolation":"trilinearInterpolation"}(output_indices);`;case"cubic":return"output[global_idx] = bicubicInterpolation(output_indices);";default:throw Error(`Unsupported resize mode: ${t.mode}`)}})()}; +`} + }`;return{name:"Resize",shaderCache:{hint:`${t.cacheKey}|${r}|${c.length>0?c:""}|${n.length>0?n:""}|${l.length>0?l:""}|${b}|${u}`,inputDependencies:["rank"]},getShaderSource:$,getRunData:()=>({outputs:[{dims:i,dataType:e.dataType}],dispatchGroup:{x:Math.ceil(h/64)},programUniforms:[{type:"uint32",data:h},{type:"float32",data:c},{type:"float32",data:l},...G(u),...G(i)]})}},wp=e=>{let t=e.customDataBuffer;return new Uint32Array(t,t.byteOffset,1)[0]},zu=(e,t)=>{let r=[],a=[],n=[],o=wp(e);if(t.antialias!==0)throw Error("Only default value (0) for Antialias attribute is supported");op(e.inputs,t,o,r,a,n),e.compute(bp(e.inputs[0],t,o,r,a,n),{inputs:[0]})},Mu=e=>{let t=e.antialias,r=e.axes,a=e.coordinateTransformMode,n=e.cubicCoeffA,o=e.excludeOutside!==0,u=e.extrapolationValue,l=e.keepAspectRatioPolicy,i=e.mode,c=e.nearestMode===""?"simple":e.nearestMode;return ge({antialias:t,axes:r,coordinateTransformMode:a,cubicCoeffA:n,excludeOutside:o,extrapolationValue:u,keepAspectRatioPolicy:l,mode:i,nearestMode:c})}});var vp,$p,Nu,Wu,Vu=F(()=>{"use strict";Ue();$e();je();ve();vp=e=>{if(!e||e.length<3)throw new Error("layerNorm requires at least 3 inputs.");let t=e[0],r=e[1],a=e[2];if(t.dataType!==r.dataType||t.dataType!==a.dataType)throw new Error("All inputs must have the same data type");if(t.dims.length!==3&&t.dims.length!==2)throw new Error("Input must be 2D or 3D");if(r.dims.length!==3&&r.dims.length!==2)throw new Error("Skip must be 2D or 3D");let n=t.dims[t.dims.length-1],o=t.dims[t.dims.length-2];if(r.dims[r.dims.length-1]!==n)throw new Error("Skip must have the same hidden size as input");if(r.dims[r.dims.length-2]!==o)throw new Error("Skip must have the same sequence length as input");if(a.dims.length!==1)throw new Error("Gamma must be 1D");if(a.dims[a.dims.length-1]!==n)throw new Error("Gamma must have the same hidden size as input");if(e.length>3){let u=e[3];if(u.dims.length!==1)throw new Error("Beta must be 1D");if(u.dims[u.dims.length-1]!==n)throw new Error("Beta must have the same hidden size as input")}if(e.length>4){let u=e[4];if(u.dims.length!==1)throw new Error("Bias must be 1D");if(u.dims[u.dims.length-1]!==n)throw new Error("Bias must have the same hidden size as input")}},$p=(e,t,r,a)=>{let n=e[0].dims,o=U.size(n),u=n,l=o,i=n.slice(-1)[0],c=a?n.slice(0,-1).concat(1):[],m=e.length>3,f=e.length>4,h=a&&r>1,b=a&&r>2,w=r>3,_=qe(i),I=[M("x",e[0].dataType,e[0].dims,_),M("skip",e[1].dataType,e[1].dims,_),M("gamma",e[2].dataType,e[2].dims,_)];m&&I.push(M("beta",e[3].dataType,e[3].dims,_)),f&&I.push(M("bias",e[4].dataType,e[4].dims,_)),I.push(q("output",e[0].dataType,u,_)),h&&I.push(q("meanOutput",1,c)),b&&I.push(q("invStdOutput",1,c)),w&&I.push(q("inputSkipBiasSum",e[0].dataType,u,_));let $=Fe(e[0].dataType),x=A=>` + const hiddenSize: f32 = ${i}; + const hiddenSizeVectorized: u32 = ${i/_}; + const epsilon: f32 = ${t.epsilon}; + + ${A.declareVariables(...I)} + + ${A.mainStart()} + ${A.guardAgainstOutOfBoundsWorkgroupSizes(l/i)} + let offset = global_idx * hiddenSizeVectorized; + var sum = ${Qe("f32",_)}; + var squareSum = ${Qe("f32",_)}; + for (var i: u32 = 0; i < hiddenSizeVectorized; i++) { + let skipValue = skip[offset + i]; + let biasValue = ${f?"bias[i]":"0.0"}; + let inputValue = x[offset + i]; + let value = inputValue + skipValue + biasValue; + ${w?"inputSkipBiasSum[offset + i] = value;":""} + output[offset + i] = value; + let f32Value = ${pt($,_,"value")}; + sum += f32Value; + squareSum += f32Value * f32Value; + } + let mean = ${rt("sum",_)} / hiddenSize; + let invStdDev = inverseSqrt(${rt("squareSum",_)} / hiddenSize - mean * mean + epsilon); + ${h?"meanOutput[global_idx] = mean;":""} + ${b?"invStdOutput[global_idx] = invStdDev;":""} + for (var i: u32 = 0; i < hiddenSizeVectorized; i++) { + output[offset + i] = (output[offset + i] - ${$}(mean)) * ${$}(invStdDev) * gamma[i] + + ${m?"beta[i]":"0.0"}; + } + }`,T=[{dims:u,dataType:e[0].dataType}];return r>1&&T.push({dims:c,dataType:1}),r>2&&T.push({dims:c,dataType:1}),r>3&&T.push({dims:n,dataType:e[0].dataType}),{name:"SkipLayerNormalization",shaderCache:{hint:t.cacheKey},getShaderSource:x,getRunData:()=>({outputs:T,dispatchGroup:{x:Math.ceil(l/i/64)}})}},Nu=(e,t)=>{vp(e.inputs);let a=[0];e.outputCount>1&&a.push(-3),e.outputCount>2&&a.push(-3),e.outputCount>3&&a.push(3),e.compute($p(e.inputs,t,e.outputCount,!1),{outputs:a})},Wu=e=>{let t=e.epsilon;return ge({epsilon:t})}});var _p,In,xp,Hu,Sp,Ip,Lu,Gu,Fu=F(()=>{"use strict";Ue();$e();je();ve();_p=(e,t)=>{if(!e||e.length<1)throw new Error("too few inputs");if(t.axes.length!==0){if(t.axes.length!==t.starts.length||t.axes.length!==t.ends.length)throw new Error("axes, starts and ends must have the same length")}else if(t.starts.length!==t.ends.length)throw new Error("starts and ends must have the same length");e.slice(1).forEach((r,a)=>{if(e[a+1].dataType!==6&&e[a+1].dataType!==7)throw new Error(`Input ${a} must be an array of int32 or int64`)})},In=(e,t)=>{let r=[];if(e.length>t)if(e[t].dataType===7)e[t].getBigInt64Array().forEach(a=>r.push(Number(a)));else if(e[t].dataType===6)e[t].getInt32Array().forEach(a=>r.push(Number(a)));else throw new Error(`Input ${t} must be an array of int32 or int64`);return r},xp=(e,t)=>{if(e.length>1){let r=In(e,1),a=In(e,2),n=In(e,3);return n.length===0&&(n=[...Array(e[0].dims.length).keys()]),ge({starts:r,ends:a,axes:n})}else return t},Hu=(e,t,r,a,n)=>{let o=e;return e<0&&(o+=r[a[t]]),n[t]<0?Math.max(0,Math.min(o,r[a[t]]-1)):Math.max(0,Math.min(o,r[a[t]]))},Sp=(e,t,r)=>`fn calculateInputIndices(output_indices: ${t.type.indices}) -> ${e.type.indices} { + var input_indices: ${e.type.indices}; + var carry = 0u; + for (var i = ${r.length}; i >= 0; i--) { + let input_shape_i = ${ce("uniforms.input_shape","i",r.length)}; + let steps_i = ${ce("uniforms.steps","i",r.length)}; + let signs_i = ${ce("uniforms.signs","i",r.length)}; + let starts_i = ${ce("uniforms.starts","i",r.length)}; + var output_index = ${t.indicesGet("output_indices","i")}; + var input_index = output_index * steps_i + starts_i + carry; + carry = input_index / input_shape_i; + input_index = input_index % input_shape_i; + if (signs_i < 0) { + input_index = input_shape_i - input_index - 1u + starts_i; + } + ${e.indicesSet("input_indices","i","input_index")}; + } + return input_indices; + }`,Ip=(e,t)=>{let r=e[0].dims,a=U.size(r),n=t.axes.length>0?U.normalizeAxes(t.axes,r.length):[...Array(r.length).keys()],o=In(e,4);o.forEach($=>$!==0||(()=>{throw new Error("step cannot be 0")})),o.length===0&&(o=Array(n.length).fill(1));let u=t.starts.map(($,x)=>Hu($,x,r,n,o)),l=t.ends.map(($,x)=>Hu($,x,r,n,o));if(n.length!==u.length||n.length!==l.length)throw new Error("start, ends and axes should have the same number of elements");if(n.length!==r.length)for(let $=0;$Math.sign($));o.forEach(($,x,T)=>{if($<0){let A=(l[x]-u[x])/$,z=u[x],R=z+A*o[x];u[x]=R,l[x]=z,T[x]=-$}});let c=r.slice(0);n.forEach(($,x)=>{c[$]=Math.ceil((l[$]-u[$])/o[$])});let m={dims:c,dataType:e[0].dataType},f=q("output",e[0].dataType,c.length),h=M("input",e[0].dataType,e[0].dims.length),b=U.size(c),w=[{name:"outputSize",type:"u32"},{name:"starts",type:"u32",length:u.length},{name:"signs",type:"i32",length:i.length},{name:"steps",type:"u32",length:o.length}],_=[{type:"uint32",data:b},{type:"uint32",data:u},{type:"int32",data:i},{type:"uint32",data:o},...G(e[0].dims),...G(c)],I=$=>` + ${$.registerUniforms(w).declareVariables(h,f)} + ${Sp(h,f,r)} + ${$.mainStart()} + ${$.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} + let output_indices = ${f.offsetToIndices("global_idx")}; + let input_indices = calculateInputIndices(output_indices); + ${f.setByOffset("global_idx",h.getByIndices("input_indices"))} + }`;return{name:"Slice",shaderCache:{hint:`${i.length}_${u.length}_${o.length}`,inputDependencies:["rank"]},getShaderSource:I,getRunData:()=>({outputs:[m],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:_})}},Lu=(e,t)=>{_p(e.inputs,t);let r=xp(e.inputs,t);e.compute(Ip(e.inputs,r),{inputs:[0]})},Gu=e=>{let t=e.starts,r=e.ends,a=e.axes;return ge({starts:t,ends:r,axes:a})}});var Cp,Ap,qu,ju,Ku=F(()=>{"use strict";$e();je();ve();Cp=e=>{if(!e||e.length!==1)throw new Error("Softmax op requires 1 input.")},Ap=(e,t)=>{let r=e.dims,a=U.size(r),n=64,o=t.axis;if(o<0&&(o=r.length+o),o$===4?`max(max(${I}.x, ${I}.y), max(${I}.z, ${I}.w))`:$===2?`max(${I}.x, ${I}.y)`:$===3?`max(max(${I}.x, ${I}.y), ${I}.z)`:I,f=M("x",e.dataType,e.dims,i),h=q("result",e.dataType,e.dims,i),b=f.type.value,w=Fe(e.dataType)==="f32"?`var threadMax = ${b}(-3.402823e+38f);`:`var threadMax = ${b}(-65504.0h);`,_=I=>` + var rowMaxShared : ${b}; + var rowSumShared : ${b}; + var threadShared : array<${b}, ${n}>; + + fn getValue(row: i32, col: i32, row_stride: i32) -> ${b} { + let index = row * row_stride + col; + return x[index]; + } + + fn setValue(row: i32, col: i32, row_stride: i32, value: ${b}) { + let index = row * row_stride + col; + result[index] = value; + } + ${I.registerUniform("packedCols","i32").declareVariables(f,h)} + ${I.mainStart()} + let gindex = i32(global_idx); + let lindex = i32(local_idx); + const wg = ${n}; + let row = gindex / wg; + let cols = uniforms.packedCols; + let row_stride : i32 = uniforms.packedCols; + + // find the rows max + ${w} + for (var col = lindex; col < cols; col += wg) { + let value = getValue(row, col, row_stride); + threadMax = max(threadMax, value); + } + if (lindex < cols) { + threadShared[lindex] = threadMax; + } + workgroupBarrier(); + + var reduceSize = min(cols, wg); + for (var currSize = reduceSize >> 1; currSize > 0; currSize = reduceSize >> 1) { + reduceSize = currSize + (reduceSize & 1); + if (lindex < currSize) { + threadShared[lindex] = max(threadShared[lindex], threadShared[lindex + reduceSize]); + } + workgroupBarrier(); + } + if (lindex == 0) { + rowMaxShared = ${b}(${m("threadShared[0]",i)}); + } + workgroupBarrier(); + + // find the rows sum + var threadSum = ${b}(0.0); + for (var col = lindex; col < cols; col += wg) { + let subExp = exp(getValue(row, col, row_stride) - rowMaxShared); + threadSum += subExp; + } + threadShared[lindex] = threadSum; + workgroupBarrier(); + + for (var currSize = wg >> 1; currSize > 0; currSize = currSize >> 1) { + if (lindex < currSize) { + threadShared[lindex] = threadShared[lindex] + threadShared[lindex + currSize]; + } + workgroupBarrier(); + } + if (lindex == 0) { + rowSumShared = ${b}(${rt("threadShared[0]",i)}); + } + workgroupBarrier(); + + // calculate final value for each element in the row + for (var col = lindex; col < cols; col += wg) { + let value = exp(getValue(row, col, row_stride) - rowMaxShared) / rowSumShared; + setValue(row, col, row_stride, value); + } + }`;return{name:"Softmax",shaderCache:{hint:`${i}`,inputDependencies:["type"]},getRunData:()=>({outputs:[{dims:r,dataType:e.dataType}],dispatchGroup:{x:l},programUniforms:[{type:"uint32",data:c}]}),getShaderSource:_}},qu=(e,t)=>{Cp(e.inputs),e.compute(Ap(e.inputs[0],t))},ju=e=>ge({axis:e.axis})});var Ep,Tp,Op,kp,Pp,Yu,Zu,Xu=F(()=>{"use strict";$e();je();ve();Ep=e=>{if(!e||e.length<1)throw new Error("too few inputs")},Tp=(e,t)=>{let r=[],a=t.numOutputs;return e[1].dims[0]>0&&(e[1].getBigInt64Array().forEach(n=>r.push(Number(n))),a=r.length),ge({numOutputs:a,axis:t.axis,splitSizes:r})},Op=e=>` +fn calculateOutputIndex(index: u32) -> u32 { + for (var i: u32 = 0u; i < ${e}u; i += 1u ) { + if (index < ${ce("uniforms.size_in_split_axis","i",e)}) { + return i; + } + } + return ${e}u; +}`,kp=e=>{let t=e.length,r=[];for(let a=0;a{let r=e[0].dims,a=U.size(r),n=e[0].dataType,o=U.normalizeAxis(t.axis,r.length),u=new Array(t.numOutputs),l=M("input",n,r),i=new Array(t.numOutputs),c=[],m=[],f=0,h=[{type:"uint32",data:a}];for(let w=0;wh.push(...G(w)));let b=w=>` + ${w.registerUniform("input_size","u32").registerUniform("size_in_split_axis","u32",i.length).declareVariables(l,...u)} + ${Op(i.length)} + ${kp(u)} + + ${w.mainStart()} + ${w.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.input_size")} + + var indices = ${l.offsetToIndices("global_idx")}; + var index = ${l.indicesGet("indices",o)}; + let output_number = calculateOutputIndex(index); + if (output_number != 0) { + index -= ${ce("uniforms.size_in_split_axis","output_number - 1u",i.length)}; + ${l.indicesSet("indices",o,"index")}; + } + writeBufferData(output_number, indices, global_idx); + }`;return{name:"Split",shaderCache:{hint:t.cacheKey,inputDependencies:["rank"]},getShaderSource:b,getRunData:()=>({outputs:c,dispatchGroup:{x:Math.ceil(a/64)},programUniforms:h})}},Yu=(e,t)=>{Ep(e.inputs);let r=e.inputs.length===1?t:Tp(e.inputs,t);e.compute(Pp(e.inputs,r),{inputs:[0]})},Zu=e=>{let t=e.axis,r=e.splitSizes,a=e.numOutputs<0?r.length:e.numOutputs;if(a!==r.length)throw new Error("numOutputs and splitSizes lengh must be equal");return ge({axis:t,numOutputs:a,splitSizes:r})}});var Qu,Rp,Bp,Dp,Ju,el=F(()=>{"use strict";Ue();$e();ve();Qu=e=>Array.from(e.getBigInt64Array(),Number),Rp=e=>{if(!e||e.length!==2)throw new Error("Tile requires 2 inputs.");if(e[0].dataType!==1&&e[0].dataType!==6&&e[0].dataType!==12)throw new Error("Tile only support float, int32, and uint32 data types");if(e[1].dataType!==7)throw new Error("Tile `repeats` input should be of int64 data type");if(e[1].dims.length!==1)throw new Error("Tile `repeats` input should be 1-D");if(Qu(e[1]).length!==e[0].dims.length)throw new Error("Tile `repeats` input should have same number of elements as rank of input data tensor")},Bp=(e,t)=>{let r=[];for(let a=0;a{let t=e[0].dims,r=Qu(e[1]),a=Bp(t,r),n=U.size(a),o=e[0].dataType,u=M("input",o,t.length),l=q("output",o,a.length),i=c=>` + const inputShape = ${u.indices(...t)}; + ${c.registerUniform("output_size","u32").declareVariables(u,l)} + ${c.mainStart()} + ${c.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} + let output_indices = ${l.offsetToIndices("global_idx")}; + var input_indices: ${u.type.indices}; + for (var i = 0; i < ${t.length}; i++) { + let input_dim_i = ${u.indicesGet("uniforms.input_shape","i")}; + let input_dim_value = ${l.indicesGet("output_indices","i")} % input_dim_i; + + ${u.indicesSet("input_indices","i","input_dim_value")} + } + ${l.setByOffset("global_idx",u.getByIndices("input_indices"))} + }`;return{name:"Tile",shaderCache:{hint:`${r}`,inputDependencies:["rank"]},getRunData:()=>({outputs:[{dims:a,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(n/64)},programUniforms:[{type:"uint32",data:n},...G(e[0].dims),...G(a)]}),getShaderSource:i}},Ju=e=>{Rp(e.inputs),e.compute(Dp(e.inputs),{inputs:[0]})}});var zp,Mp,tl,rl=F(()=>{"use strict";Ue();$e();ve();zp=(e,t,r,a,n)=>{let o=q("output_data",n,r.length,4),u=M("a_data",t[1].dataType,t[1].dims.length,4),l=M("b_data",t[2].dataType,t[2].dims.length,4),i=M("c_data",t[0].dataType,t[0].dims.length,4),c,m=(f,h,b)=>`select(${h}, ${f}, ${b})`;if(!a)c=o.setByOffset("global_idx",m(u.getByOffset("global_idx"),l.getByOffset("global_idx"),i.getByOffset("global_idx")));else{let f=(h,b,w="")=>{let _=`a_data[index_a${b}][component_a${b}]`,I=`b_data[index_b${b}][component_b${b}]`,$=`bool(c_data[index_c${b}] & ${4278190080>>>(3-b)*8}u)`;return` + let output_indices${b} = ${o.offsetToIndices(`global_idx * 4u + ${b}u`)}; + let offset_a${b} = ${u.broadcastedIndicesToOffset(`output_indices${b}`,o)}; + let offset_b${b} = ${l.broadcastedIndicesToOffset(`output_indices${b}`,o)}; + let offset_c${b} = ${i.broadcastedIndicesToOffset(`output_indices${b}`,o)}; + let index_a${b} = offset_a${b} / 4u; + let index_b${b} = offset_b${b} / 4u; + let index_c${b} = offset_c${b} / 4u; + let component_a${b} = offset_a${b} % 4u; + let component_b${b} = offset_b${b} % 4u; + ${h}[${b}] = ${w}(${m(_,I,$)}); + `};n===9?c=` + var data = vec4(0); + ${f("data",0,"u32")} + ${f("data",1,"u32")} + ${f("data",2,"u32")} + ${f("data",3,"u32")} + output_data[global_idx] = dot(vec4(0x1, 0x100, 0x10000, 0x1000000), vec4(data));`:c=` + ${f("output_data[global_idx]",0)} + ${f("output_data[global_idx]",1)} + ${f("output_data[global_idx]",2)} + ${f("output_data[global_idx]",3)} + `}return` + ${e.registerUniform("vec_size","u32").declareVariables(i,u,l,o)} + ${e.mainStart()} + ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")} + ${c} + }`},Mp=e=>{let t=e[1].dims,r=e[2].dims,a=e[0].dims,n=e[1].dataType,o=!(U.areEqual(t,r)&&U.areEqual(r,a)),u=t,l=U.size(t);if(o){let c=gt.calcShape(gt.calcShape(t,r,!1),a,!1);if(!c)throw new Error("Can't perform where op on the given tensors");u=c,l=U.size(u)}let i=Math.ceil(l/4);return{name:"Where",shaderCache:{inputDependencies:["rank","rank","rank"]},getShaderSource:c=>zp(c,e,u,o,n),getRunData:()=>({outputs:[{dims:u,dataType:n}],dispatchGroup:{x:Math.ceil(l/64/4)},programUniforms:[{type:"uint32",data:i},...G(a),...G(t),...G(r),...G(u)]})}},tl=e=>{e.compute(Mp(e.inputs))}});var nl,al=F(()=>{"use strict";Ao();ca();Oo();Po();cs();_s();Is();ga();Ns();Hs();js();Zs();Js();ru();iu();su();lu();ba();mu();hu();Pu();Bu();mn();Uu();Vu();Fu();Ku();Xu();el();tr();pa();rl();nl=new Map([["Abs",[Ro]],["Acos",[Bo]],["Acosh",[Do]],["Add",[ps]],["ArgMax",[Co,da]],["ArgMin",[Io,da]],["Asin",[zo]],["Asinh",[Mo]],["Atan",[Uo]],["Atanh",[No]],["Attention",[Eo]],["AveragePool",[xu,_u]],["BatchNormalization",[To]],["BiasAdd",[ko]],["BiasSplitGelu",[ds]],["Cast",[Vo,Wo]],["Ceil",[Lo]],["Clip",[Ho]],["Concat",[xs,Ss]],["Conv",[va,wa]],["ConvTranspose",[Us,Ms]],["Cos",[Go]],["Cosh",[Fo]],["CumSum",[Ws,Vs]],["Div",[ms]],["Einsum",[Fs,qs]],["Elu",[qo,gn]],["Equal",[fs]],["Erf",[jo]],["Exp",[Ko]],["Expand",[Ys]],["Floor",[Yo]],["FusedConv",[va,wa]],["Gather",[Qs,Xs]],["GatherElements",[tu,eu]],["Gelu",[Zo]],["Gemm",[au,nu]],["GlobalAveragePool",[Cu,Iu]],["GlobalMaxPool",[ku,Ou]],["Greater",[bs]],["GreaterOrEqual",[vs]],["InstanceNormalization",[ou]],["LayerNormalization",[uu]],["LeakyRelu",[Xo,gn]],["Less",[ws]],["LessOrEqual",[$s]],["Log",[ls]],["MatMul",[Os]],["MaxPool",[Eu,Tu]],["Mul",[hs]],["MultiHeadAttention",[pu,cu]],["Neg",[Jo]],["Not",[Qo]],["Pad",[fu]],["Pow",[gs]],["Range",[Ru]],["Reciprocal",[es]],["ReduceMin",[wo]],["ReduceMean",[fo]],["ReduceMax",[bo]],["ReduceSum",[$o]],["ReduceProd",[vo]],["ReduceL1",[ho]],["ReduceL2",[go]],["ReduceLogSum",[xo]],["ReduceLogSumExp",[yo]],["ReduceSumSquare",[_o]],["Relu",[ts]],["Resize",[zu,Mu]],["Sigmoid",[rs]],["Sin",[ns]],["Sinh",[as]],["Slice",[Lu,Gu]],["SkipLayerNormalization",[Nu,Wu]],["Split",[Yu,Zu]],["Sqrt",[is]],["Softmax",[qu,ju]],["Sub",[ys]],["Tan",[os]],["Tanh",[ss]],["ThresholdedRelu",[us,gn]],["Tile",[Ju]],["Transpose",[eo,to]],["Where",[tl]]])});var Cn,il=F(()=>{"use strict";st();Pt();ve();Cn=class{constructor(t){this.backend=t;this.repo=new Map,this.attributesBound=!1}getArtifact(t){return this.repo.get(t)}setArtifact(t,r){this.repo.set(t,r)}run(t,r,a,n,o){at(t.programInfo.name);let u=this.backend.device,l=this.backend.getComputePassEncoder();this.backend.writeTimestamp(this.backend.pendingDispatchNumber*2),l.setPipeline(t.computePipeline);let i=[];for(let m of r)i.push({binding:i.length,resource:{buffer:m.buffer}});for(let m of a)i.push({binding:i.length,resource:{buffer:m.buffer}});o&&i.push({binding:i.length,resource:o});let c=u.createBindGroup({layout:t.computePipeline.getBindGroupLayout(0),entries:i,label:t.programInfo.name});l.setBindGroup(0,c),l.dispatchWorkgroups(...n),this.backend.writeTimestamp(this.backend.pendingDispatchNumber*2+1),this.backend.pendingDispatchNumber++,(this.backend.pendingDispatchNumber>=this.backend.maxDispatchNumber||this.backend.queryType==="at-passes")&&this.backend.endComputePass(),this.backend.pendingDispatchNumber>=this.backend.maxDispatchNumber&&this.backend.flush(),it(t.programInfo.name)}dispose(){}build(t,r){at(t.name);let a=this.backend.device,n=[];a.features.has("shader-f16")&&n.push("enable f16;");let o=Qi(r),u=t.getShaderSource(o),l=`${n.join(` +`)} +${o.additionalImplementations} +${u}`,i=a.createShaderModule({code:l,label:t.name});De("verbose",()=>`[WebGPU] ${t.name} shader code: ${l}`);let c=a.createComputePipeline({compute:{module:i,entryPoint:"main"},layout:"auto",label:t.name});return it(t.name),{programInfo:t,computePipeline:c}}normalizeDispatchGroupSize(t){let r=typeof t=="number"?t:t.x,a=typeof t=="number"?1:t.y||1,n=typeof t=="number"?1:t.z||1,o=this.backend.device.limits.maxComputeWorkgroupsPerDimension;if(r<=o&&a<=o&&n<=o)return[r,a,n];let u=r*a*n,l=Math.ceil(Math.sqrt(u));if(l>o){if(l=Math.ceil(Math.cbrt(u)),l>o)throw new Error("Total dispatch size exceeds WebGPU maximum.");return[l,l,l]}else return[l,l,1]}}});var Up,Np,An,ol=F(()=>{"use strict";st();Ue();Pt();ji();Xi();al();il();Up=(e,t)=>{if(t.length!==e.length)throw new Error(`inputDependencies length ${t.length} is not equal to inputTensors length ${e.length}.`);let r=[];for(let a=0;a{let a=e.name;return e.shaderCache?.hint&&(a+="["+e.shaderCache.hint+"]"),a+=":"+r+`:${Up(t,e.shaderCache?.inputDependencies??new Array(t.length).fill("dims"))}`,a},An=class{constructor(){this.currentKernelId=null;this.commandEncoder=null;this.computePassEncoder=null;this.maxDispatchNumber=16;this.pendingDispatchNumber=0;this.pendingKernels=[];this.pendingQueries=new Map;this.sessionExternalDataMapping=new Map}get currentKernelCustomData(){if(this.currentKernelId===null)throw new Error("currentKernelCustomData(): currentKernelId is null. (should not happen)");let t=this.kernelCustomData.get(this.currentKernelId);return t||(t={},this.kernelCustomData.set(this.currentKernelId,t)),t}async initialize(t,r){this.env=t;let a=[],n={requiredLimits:{maxComputeWorkgroupStorageSize:r.limits.maxComputeWorkgroupStorageSize,maxComputeWorkgroupsPerDimension:r.limits.maxComputeWorkgroupsPerDimension,maxStorageBufferBindingSize:r.limits.maxStorageBufferBindingSize,maxBufferSize:r.limits.maxBufferSize,maxComputeInvocationsPerWorkgroup:r.limits.maxComputeInvocationsPerWorkgroup,maxComputeWorkgroupSizeX:r.limits.maxComputeWorkgroupSizeX,maxComputeWorkgroupSizeY:r.limits.maxComputeWorkgroupSizeY,maxComputeWorkgroupSizeZ:r.limits.maxComputeWorkgroupSizeZ},requiredFeatures:a};r.features.has("chromium-experimental-timestamp-query-inside-passes")?a.push("chromium-experimental-timestamp-query-inside-passes"):r.features.has("timestamp-query")&&a.push("timestamp-query"),r.features.has("shader-f16")&&a.push("shader-f16"),this.device=await r.requestDevice(n),this.gpuDataManager=Zi(this),this.programManager=new Cn(this),this.kernels=new Map,this.kernelPersistentData=new Map,this.kernelCustomData=new Map,Fi(t.logLevel,!!t.debug),this.device.onuncapturederror=o=>{o.error instanceof GPUValidationError&&console.error(`An uncaught WebGPU validation error was raised: ${o.error.message}`)},Object.defineProperty(this.env.webgpu,"device",{value:this.device}),this.setQueryType()}dispose(){typeof this.querySet<"u"&&this.querySet.destroy(),this.gpuDataManager.dispose()}getCommandEncoder(){return this.commandEncoder||(this.commandEncoder=this.device.createCommandEncoder(),this.setQueryType(),this.queryType!=="none"&&typeof this.querySet>"u"&&(this.querySet=this.device.createQuerySet({type:"timestamp",count:this.maxDispatchNumber*2}),this.queryResolveBuffer=this.device.createBuffer({size:this.maxDispatchNumber*2*8,usage:GPUBufferUsage.COPY_SRC|GPUBufferUsage.QUERY_RESOLVE}))),this.commandEncoder}getComputePassEncoder(){if(!this.computePassEncoder){let t={};this.queryType==="at-passes"&&(t.timestampWrites={querySet:this.querySet,beginningOfPassWriteIndex:this.pendingDispatchNumber*2,endOfPassWriteIndex:this.pendingDispatchNumber*2+1}),this.computePassEncoder=this.getCommandEncoder().beginComputePass(t)}return this.computePassEncoder}endComputePass(){this.computePassEncoder&&(this.computePassEncoder.end(),this.computePassEncoder=null)}flush(){if(!this.commandEncoder)return;at(),this.endComputePass();let t;this.queryType!=="none"&&(this.commandEncoder.resolveQuerySet(this.querySet,0,this.pendingDispatchNumber*2,this.queryResolveBuffer,0),t=this.device.createBuffer({size:this.pendingDispatchNumber*2*8,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST}),this.pendingQueries.set(t,this.pendingKernels),this.pendingKernels=[],this.commandEncoder.copyBufferToBuffer(this.queryResolveBuffer,0,t,0,this.pendingDispatchNumber*2*8)),this.device.queue.submit([this.commandEncoder.finish()]),this.gpuDataManager.refreshPendingBuffers(),this.commandEncoder=null,this.pendingDispatchNumber=0,this.queryType!=="none"&&t.mapAsync(GPUMapMode.READ).then(()=>{let r=new BigUint64Array(t.getMappedRange()),a=this.pendingQueries.get(t);for(let n=0;n"u"&&(this.queryTimeBase=b);let _=Number(b-this.queryTimeBase),I=Number(w-this.queryTimeBase);if(!Number.isSafeInteger(_)||!Number.isSafeInteger(I))throw new RangeError("incorrect timestamp range");if(this.env.webgpu.profiling?.ondata)this.env.webgpu.profiling.ondata({version:1,inputsMetadata:f.map($=>({dims:$.dims,dataType:tt($.dataType)})),outputsMetadata:h.map($=>({dims:$.dims,dataType:tt($.dataType)})),kernelId:u,kernelType:i,kernelName:c,programName:m,startTime:_,endTime:I});else{let $="";f.forEach((T,A)=>{$+=`input[${A}]: [${T.dims}] | ${tt(T.dataType)}, `});let x="";h.forEach((T,A)=>{x+=`output[${A}]: [${T.dims}] | ${tt(T.dataType)}, `}),console.log(`[profiling] kernel "${u}|${i}|${c}|${m}" ${$}${x}execution time: ${I-_} ns`)}Jr("GPU",`${m}::${b}::${w}`)}t.unmap(),this.pendingQueries.delete(t)}),it()}run(t,r,a,n,o){at(t.name);let u=[];for(let x=0;xT):a;if(m.length!==l.length)throw new Error(`Output size ${m.length} must be equal to ${l.length}.`);let f=[],h=[];for(let x=0;x=l.length)throw new Error(`Invalid output index: ${m[x]}`);if(m[x]===-3)continue;let T=m[x]===-1,A=m[x]===-2,z=T||A?o(l[x].dataType,l[x].dims):n(m[x],l[x].dataType,l[x].dims),R=this.gpuDataManager.get(z.data);if(!R)throw new Error(`no GPU data for output: ${z.data}`);if(T&&this.temporaryData.push(R),A){let N=this.kernelPersistentData.get(this.currentKernelId);N||(N=[],this.kernelPersistentData.set(this.currentKernelId,N)),N.push(R)}f.push(z),h.push(R)}let b;if(c){let x=0,T=[];c.forEach(N=>{let E=typeof N.data=="number"?[N.data]:N.data;if(E.length===0)return;let W=E.length<=2?E.length*4:16;x=Math.ceil(x/W)*W,T.push(x),x+=E.length>4?Math.ceil(E.length/4)*16:E.length*4});let A=16;x=Math.ceil(x/A)*A;let z=new ArrayBuffer(x);c.forEach((N,E)=>{let W=T[E],te=typeof N.data=="number"?[N.data]:N.data;N.type==="int32"?new Int32Array(z,W,te.length).set(te):N.type==="uint32"?new Uint32Array(z,W,te.length).set(te):new Float32Array(z,W,te.length).set(te)});let R=this.gpuDataManager.create(x,GPUBufferUsage.COPY_DST|GPUBufferUsage.UNIFORM);this.device.queue.writeBuffer(R.buffer,0,z,0,x),this.gpuDataManager.release(R.id),b={offset:0,size:x,buffer:R.buffer}}let w=this.programManager.normalizeDispatchGroupSize(i),_=w[1]===1&&w[2]===1,I=Np(t,r,_),$=this.programManager.getArtifact(I);if($||($=this.programManager.build(t,w),this.programManager.setArtifact(I,$),De("info",()=>`[artifact] key: ${I}, programName: ${t.name}`)),De("info",()=>`[ProgramManager] run "${t.name}" (key=${I}) with ${w[0]}x${w[1]}x${w[2]}`),this.queryType!=="none"){let x={kernelId:this.currentKernelId,programName:$.programInfo.name,inputTensorViews:r,outputTensorViews:f};this.pendingKernels.push(x)}return this.programManager.run($,u,h,w,b),it(t.name),f}upload(t,r){this.gpuDataManager.upload(t,r)}memcpy(t,r){this.gpuDataManager.memcpy(t,r)}async download(t,r){await this.gpuDataManager.download(t,r)}alloc(t){return this.gpuDataManager.create(t).id}free(t){return this.gpuDataManager.release(t)}createKernel(t,r,a,n){let o=nl.get(t);if(!o)throw new Error(`kernel not implemented: ${t}`);let u={kernelType:t,kernelName:n,kernelEntry:o[0],attributes:[o[1],a]};this.kernels.set(r,u)}releaseKernel(t){let r=this.kernelPersistentData.get(t);if(r){for(let a of r)this.gpuDataManager.release(a.id);this.kernelPersistentData.delete(t)}this.kernelCustomData.delete(t),this.kernels.delete(t)}computeKernel(t,r,a){let n=this.kernels.get(t);if(!n)throw new Error(`kernel not created: ${t}`);let o=n.kernelType,u=n.kernelName,l=n.kernelEntry,i=n.attributes;if(this.currentKernelId!==null)throw new Error(`kernel "[${o}] ${u}" is not allowed to be called recursively`);this.currentKernelId=t,i[0]&&(i[1]=i[0](i[1]),i[0]=void 0),De("info",()=>`[WebGPU] Start to run kernel "[${o}] ${u}"...`);let c=this.env.debug;this.temporaryData=[];try{return c&&this.device.pushErrorScope("validation"),l(r,i[1]),0}catch(m){return a.push(Promise.resolve(`[WebGPU] Kernel "[${o}] ${u}" failed. ${m}`)),1}finally{c&&a.push(this.device.popErrorScope().then(m=>m?`GPU validation error for kernel "[${o}] ${u}": ${m.message}`:null));for(let m of this.temporaryData)this.gpuDataManager.release(m.id);this.temporaryData=[],this.currentKernelId=null}}registerBuffer(t,r,a,n){let o=this.sessionExternalDataMapping.get(t);o||(o=new Map,this.sessionExternalDataMapping.set(t,o));let u=o.get(r),l=this.gpuDataManager.registerExternalBuffer(a,n,u?.[1]);return o.set(r,[l,a]),l}unregisterBuffers(t){let r=this.sessionExternalDataMapping.get(t);r&&(r.forEach(a=>this.gpuDataManager.unregisterExternalBuffer(a[1])),this.sessionExternalDataMapping.delete(t))}getBuffer(t){let r=this.gpuDataManager.get(t);if(!r)throw new Error(`no GPU data for buffer: ${t}`);return r.buffer}createDownloader(t,r,a){return async()=>{let n=await na(this,t,r);return qi(n.buffer,a)}}writeTimestamp(t){this.queryType==="inside-passes"&&this.computePassEncoder.writeTimestamp(this.querySet,t)}setQueryType(){this.queryType="none",(this.env.webgpu.profiling?.mode==="default"||this.env.wasm.trace)&&(this.device.features.has("chromium-experimental-timestamp-query-inside-passes")?this.queryType="inside-passes":this.device.features.has("timestamp-query")&&(this.queryType="at-passes"))}}});var sl={};Xt(sl,{init:()=>Wp});var Er,Ca,Wp,ul=F(()=>{"use strict";Ue();ol();Pt();$e();Er=class e{constructor(t,r,a,n){this.module=t;this.dataType=r;this.data=a;this.dims=n}getFloat32Array(){if(this.dataType!==1)throw new Error("Invalid data type");let t=U.size(this.dims);return t===0?new Float32Array:new Float32Array(this.module.HEAP8.buffer,this.data,t)}getBigInt64Array(){if(this.dataType!==7)throw new Error("Invalid data type");let t=U.size(this.dims);return t===0?new BigInt64Array:new BigInt64Array(this.module.HEAP8.buffer,this.data,t)}getInt32Array(){if(this.dataType!==6)throw new Error("Invalid data type");let t=U.size(this.dims);return t===0?new Int32Array:new Int32Array(this.module.HEAP8.buffer,this.data,t)}reshape(t){if(U.size(t)!==U.size(this.dims))throw new Error("Invalid new shape");return new e(this.module,this.dataType,this.data,t)}},Ca=class{constructor(t,r,a){this.module=t;this.backend=r;this.customDataOffset=0;this.customDataSize=0;let n=t.HEAPU32,o=a>>>2;this.opKernelContext=n[o++];let u=n[o++];this.outputCount=n[o++],this.customDataOffset=n[o++],this.customDataSize=n[o++];let l=[];for(let i=0;itypeof l=="number"?this.inputs[l]:l)??this.inputs,n=r?.outputs??[],o=(l,i,c)=>new Er(this.module,i,this.output(l,c),c),u=(l,i)=>{let c=_r(l);if(!c)throw new Error(`Unsupported data type: ${l}`);let m=c*U.size(i);return new Er(this.module,l,this.backend.gpuDataManager.create(m).id,i)};return this.backend.run(t,a,n,o,u)}output(t,r){let a=this.module.stackSave();try{let n=this.module.stackAlloc((1+r.length)*4),o=n>>2;this.module.HEAPU32[o++]=r.length;for(let u=0;u{let a=e.jsepInit;if(!a)throw new Error("Failed to initialize JSEP. The WebAssembly module is not built with JSEP support.");let n=new An;await n.initialize(t,r),a(n,o=>n.alloc(o),o=>n.free(o),(o,u,l,i=!1)=>{if(i)De("verbose",()=>`[WebGPU] jsepCopyGpuToGpu: src=${o}, dst=${u}, size=${l}`),n.memcpy(o,u);else{De("verbose",()=>`[WebGPU] jsepCopyCpuToGpu: dataOffset=${o}, gpuDataId=${u}, size=${l}`);let c=e.HEAPU8.subarray(o>>>0,(o>>>0)+l);n.upload(u,c)}},async(o,u,l)=>{De("verbose",()=>`[WebGPU] jsepCopyGpuToCpu: gpuDataId=${o}, dataOffset=${u}, size=${l}`),await n.download(o,()=>e.HEAPU8.subarray(u>>>0,(u>>>0)+l))},(o,u,l)=>n.createKernel(o,u,l,e.UTF8ToString(e._JsepGetNodeName(u))),o=>n.releaseKernel(o),(o,u,l,i)=>{De("verbose",()=>`[WebGPU] jsepRun: sessionHandle=${l}, kernel=${o}, contextDataOffset=${u}`);let c=new Ca(e,n,u);return n.computeKernel(o,c,i)})}});var Vp,dl,cl,Tr,Hp,Aa,pl,ml,ll,fl,hl,gl,yl=F(()=>{"use strict";Wi();Hi();Ue();Jt();nn();ta();Vp=(e,t)=>{Ve()._OrtInit(e,t)!==0&&Re("Can't initialize onnxruntime.")},dl=async e=>{Vp(e.wasm.numThreads,xr(e.logLevel))},cl=async(e,t)=>{if(t==="webgpu"){if(typeof navigator>"u"||!navigator.gpu)throw new Error("WebGPU is not supported in current environment");let r=await navigator.gpu.requestAdapter();if(!r)throw new Error('Failed to get GPU adapter. You may need to enable flag "--enable-unsafe-webgpu" if you are using Chrome.');if(!e.wasm.simd)throw new Error("Not supported for WebGPU=ON and SIMD=OFF. Please set `env.wasm.simd` to true when using `webgpu` EP");let a=(ul(),Ut(sl)).init;await a(Ve(),e,r)}},Tr=new Map,Hp=e=>{let t=Ve(),r=t.stackSave();try{let a=t.stackAlloc(8);return t._OrtGetInputOutputCount(e,a,a+4)!==0&&Re("Can't get session input/output count."),[t.HEAP32[a/4],t.HEAP32[a/4+1]]}finally{t.stackRestore(r)}},Aa=e=>{let t=Ve(),r=t._malloc(e.byteLength);if(r===0)throw new Error(`Can't create a session. failed to allocate a buffer of size ${e.byteLength}.`);return t.HEAPU8.set(e,r),[r,e.byteLength]},pl=async(e,t)=>{let r,a,n=Ve();Array.isArray(e)?[r,a]=e:e.buffer===n.HEAPU8.buffer?[r,a]=[e.byteOffset,e.byteLength]:[r,a]=Aa(e);let o=0,u=0,l=0,i=[],c=[],m=[];try{if([u,i]=Vi(t),t?.externalData&&n.mountExternalData){let $=[];for(let x of t.externalData){let T=typeof x=="string"?x:x.path;$.push(Sr(typeof x=="string"?x:x.data).then(A=>{n.mountExternalData(T,A)}))}await Promise.all($)}o=n._OrtCreateSession(r,a,u),o===0&&Re("Can't create a session.");let[f,h]=Hp(o),b=[],w=[],_=[];for(let $=0;$$==="gpu-buffer")&&(l=n._OrtCreateBinding(o),l===0&&Re("Can't create IO binding."),I={handle:l,outputPreferredLocations:_,outputPreferredLocationsEncoded:_.map($=>ea($))}),Tr.set(o,[o,c,m,I]),[o,b,w]}catch(f){throw c.forEach(h=>n._OrtFree(h)),m.forEach(h=>n._OrtFree(h)),l!==0&&n._OrtReleaseBinding(l),o!==0&&n._OrtReleaseSession(o),f}finally{n._free(r),u!==0&&n._OrtReleaseSessionOptions(u),i.forEach(f=>n._free(f)),n.unmountExternalData?.()}},ml=e=>{let t=Ve(),r=Tr.get(e);if(!r)throw new Error(`cannot release session. invalid session id: ${e}`);let[a,n,o,u]=r;u&&t._OrtReleaseBinding(u.handle),t.jsepUnregisterBuffers?.(e),n.forEach(l=>t._OrtFree(l)),o.forEach(l=>t._OrtFree(l)),t._OrtReleaseSession(a),Tr.delete(e)},ll=(e,t,r,a,n)=>{if(!e){t.push(0);return}let o=Ve(),u=e[0],l=e[1],i=e[3],c,m;if(u==="string"&&i==="gpu-buffer")throw new Error("String tensor is not supported on GPU.");if(i==="gpu-buffer"){let b=e[2].gpuBuffer,w=_r(Jn(u));m=l.reduce((_,I)=>_*I,1)*w,c=o.jsepRegisterBuffer(a,n,b,m)}else{let b=e[2];if(Array.isArray(b)){m=4*b.length,c=o._malloc(m),r.push(c);let w=c/4;for(let _=0;_o.HEAP32[b++]=_);let w=o._OrtCreateTensor(Jn(u),c,m,h,l.length,ea(i));w===0&&Re(`Can't create tensor for input/output. session=${a}, index=${n}.`),t.push(w)}finally{o.stackRestore(f)}},fl=async(e,t,r,a,n,o)=>{let u=Ve(),l=Tr.get(e);if(!l)throw new Error(`cannot run inference. invalid session id: ${e}`);let[i,c,m,f]=l,h=t.length,b=a.length,w=0,_=[],I=[],$=[],x=[],T=u.stackSave(),A=u.stackAlloc(h*4),z=u.stackAlloc(h*4),R=u.stackAlloc(b*4),N=u.stackAlloc(b*4);try{[w,_]=Ni(o);for(let Z=0;ZWe*Me,1);he=tt(Ge);let Ne=f?.outputPreferredLocations[a[Z]];if(he==="string"){if(Ne==="gpu-buffer")throw new Error("String tensor is not supported on GPU.");let We=[],Me=ye/4;for(let Ct=0;Ct0){let We=u.jsepGetBuffer(ye),Me=_r(Ge);if(Me===void 0||!on(he))throw new Error(`Unsupported data type: ${he}`);Ae=!0,X.push([he,be,{gpuBuffer:We,download:u.jsepCreateDownloader(We,nt*Me,he),dispose:()=>{u._OrtReleaseTensor(Oe)}},"gpu-buffer"])}else{let We=an(he),Me=new We(nt);new Uint8Array(Me.buffer,Me.byteOffset,Me.byteLength).set(u.HEAPU8.subarray(ye,ye+Me.byteLength)),X.push([he,be,Me,"cpu"])}}finally{u.stackRestore(Pe),he==="string"&&ye&&u._free(ye),Ae||u._OrtReleaseTensor(Oe)}}return f&&u._OrtClearBoundOutputs(f.handle),X}finally{u.stackRestore(T),I.forEach(E=>u._OrtReleaseTensor(E)),$.forEach(E=>u._OrtReleaseTensor(E)),x.forEach(E=>u._free(E)),w!==0&&u._OrtReleaseRunOptions(w),_.forEach(E=>u._free(E))}},hl=e=>{let t=Ve(),r=Tr.get(e);if(!r)throw new Error("invalid session id");let a=r[0],n=t._OrtEndProfiling(a);n===0&&Re("Can't get an profile file name."),t._OrtFree(n)},gl=e=>{let t=[];for(let r of e){let a=r[2];!Array.isArray(a)&&"buffer"in a&&t.push(a.buffer)}return t}});var bl=Zt((ww,Gp)=>{Gp.exports='/*!\n * ONNX Runtime Web v1.17.1\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n"use strict";(()=>{var hn=Object.defineProperty;var Lu=Object.getOwnPropertyDescriptor;var Fu=Object.getOwnPropertyNames;var ju=Object.prototype.hasOwnProperty;var j=(e,t)=>()=>(e&&(t=e(e=0)),t);var dr=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Br=(e,t)=>{for(var r in t)hn(e,r,{get:t[r],enumerable:!0})},qu=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Fu(t))!ju.call(e,n)&&n!==r&&hn(e,n,{get:()=>t[n],enumerable:!(o=Lu(t,n))||o.enumerable});return e};var Ht=e=>qu(hn({},"__esModule",{value:!0}),e);var gn={};Br(gn,{createReadStream:()=>xo,readFile:()=>Ku,readFileSync:()=>Yu});var Ku,Yu,xo,yn=j(()=>{Ku=void 0,Yu=void 0,xo=void 0});var bn={};Br(bn,{join:()=>Zu});var Zu,wn=j(()=>{Zu=void 0});var Io=dr((Co,vn)=>{"use strict";var _o=(()=>{var e=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(e=e||__filename),function(t={}){var r=t,o,n;r.ready=new Promise((d,m)=>{o=d,n=m}),r.mountExternalData=(d,m)=>{(r.Fa||(r.Fa=new Map)).set(d,m)},r.unmountExternalData=()=>{delete r.Fa},r.jsepInit=(d,m,v,C,B,H,q,le)=>{r.ab=d,r.Qa=m,r.Sa=v,r.La=C,r.Ra=B,r.sa=H,r.Ta=q,r.Ua=le,m=(J,re,se)=>(...we)=>{let _e=tt,P=re?.();we=J(...we);let ue=re?.();return P!==ue&&(J=ue,se(P),re=se=null),tt!=_e?xr():we},v=J=>async(...re)=>{try{if(r.Ea)throw Error("Session already started");let se=r.Ea={Va:re[0],errors:[]},we=await J(...re);if(r.Ea!==se)throw Error("Session mismatch");d.flush();let _e=se.errors;if(0<_e.length){let P=await Promise.all(_e);if(P=P.filter(ue=>ue),0r._OrtRun,J=>r._OrtRun=J)),r._OrtRunWithBinding=v(m(r._OrtRunWithBinding,()=>r._OrtRunWithBinding,J=>r._OrtRunWithBinding=J)),r._OrtBindInput=m(r._OrtBindInput,()=>r._OrtBindInput,J=>r._OrtBindInput=J),r.jsepRegisterBuffer=(J,re,se,we)=>d.registerBuffer(J,re,se,we),r.jsepUnregisterBuffers=J=>{d.unregisterBuffers(J)},r.jsepGetBuffer=J=>d.getBuffer(J),r.jsepCreateDownloader=(J,re,se)=>d.createDownloader(J,re,se)};var s=Object.assign({},r),u="./this.program",l=(d,m)=>{throw m},a=typeof window=="object",p=typeof importScripts=="function",h=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",g="",b,w,y;if(h){var _=(yn(),Ht(gn)),I=(wn(),Ht(bn));g=p?I.dirname(g)+"/":__dirname+"/",b=(d,m)=>(d=We(d)?new URL(d):I.normalize(d),_.readFileSync(d,m?void 0:"utf8")),y=d=>(d=b(d,!0),d.buffer||(d=new Uint8Array(d)),d),w=(d,m,v,C=!0)=>{d=We(d)?new URL(d):I.normalize(d),_.readFile(d,C?void 0:"utf8",(B,H)=>{B?v(B):m(C?H.buffer:H)})},!r.thisProgram&&1{throw process.exitCode=d,m},r.inspect=()=>"[Emscripten Module object]"}else(a||p)&&(p?g=self.location.href:typeof document<"u"&&document.currentScript&&(g=document.currentScript.src),e&&(g=e),g.indexOf("blob:")!==0?g=g.substr(0,g.replace(/[?#].*/,"").lastIndexOf("/")+1):g="",b=d=>{var m=new XMLHttpRequest;return m.open("GET",d,!1),m.send(null),m.responseText},p&&(y=d=>{var m=new XMLHttpRequest;return m.open("GET",d,!1),m.responseType="arraybuffer",m.send(null),new Uint8Array(m.response)}),w=(d,m,v)=>{var C=new XMLHttpRequest;C.open("GET",d,!0),C.responseType="arraybuffer",C.onload=()=>{C.status==200||C.status==0&&C.response?m(C.response):v()},C.onerror=v,C.send(null)});var $=console.log.bind(console),x=console.error.bind(console);Object.assign(r,s),s=null,typeof WebAssembly!="object"&&he("no native wasm support detected");var E,A=!1,z,R,V,T,N,te,Y;function K(){var d=E.buffer;r.HEAP8=R=new Int8Array(d),r.HEAP16=new Int16Array(d),r.HEAPU8=V=new Uint8Array(d),r.HEAPU16=new Uint16Array(d),r.HEAP32=T=new Int32Array(d),r.HEAPU32=N=new Uint32Array(d),r.HEAPF32=te=new Float32Array(d),r.HEAPF64=Y=new Float64Array(d)}var Q=[],Z=[],Ee=[],Pe=0,fe=null,Ie=null;function he(d){throw d="Aborted("+d+")",x(d),A=!0,z=1,d=new WebAssembly.RuntimeError(d+". Build with -sASSERTIONS for more info."),n(d),d}var ye=d=>d.startsWith("data:application/octet-stream;base64,"),We=d=>d.startsWith("file://"),De;if(De="ort-wasm-simd.wasm",!ye(De)){var Ge=De;De=r.locateFile?r.locateFile(Ge,g):g+Ge}function G(d){if(y)return y(d);throw"both async and sync fetching of the wasm failed"}function ee(d){if(a||p){if(typeof fetch=="function"&&!We(d))return fetch(d,{credentials:"same-origin"}).then(m=>{if(!m.ok)throw"failed to load wasm binary file at \'"+d+"\'";return m.arrayBuffer()}).catch(()=>G(d));if(w)return new Promise((m,v)=>{w(d,C=>m(new Uint8Array(C)),v)})}return Promise.resolve().then(()=>G(d))}function be(d,m,v){return ee(d).then(C=>WebAssembly.instantiate(C,m)).then(C=>C).then(v,C=>{x(`failed to asynchronously prepare wasm: ${C}`),he(C)})}function et(d,m){var v=De;return typeof WebAssembly.instantiateStreaming!="function"||ye(v)||We(v)||h||typeof fetch!="function"?be(v,d,m):fetch(v,{credentials:"same-origin"}).then(C=>WebAssembly.instantiateStreaming(C,d).then(m,function(B){return x(`wasm streaming compile failed: ${B}`),x("falling back to ArrayBuffer instantiation"),be(v,d,m)}))}var ze,Ue={931056:(d,m,v,C)=>{if(typeof r>"u"||!r.Fa)return 1;if(d=qe(d>>>0),d.startsWith("./")&&(d=d.substring(2)),d=r.Fa.get(d),!d)return 2;if(m>>>=0,v>>>=0,m+v>d.byteLength)return 3;try{return V.set(d.subarray(m,m+v),C>>>0>>>0),0}catch{return 4}},931557:d=>r.Qa(d),931590:d=>r.Sa(d),931622:(d,m,v)=>{r.La(d,m,v,!0)},931661:(d,m,v)=>{r.La(d,m,v)},931694:d=>{r.sa("Abs",d,void 0)},931745:d=>{r.sa("Neg",d,void 0)},931796:d=>{r.sa("Floor",d,void 0)},931849:d=>{r.sa("Ceil",d,void 0)},931901:d=>{r.sa("Reciprocal",d,void 0)},931959:d=>{r.sa("Sqrt",d,void 0)},932011:d=>{r.sa("Exp",d,void 0)},932062:d=>{r.sa("Erf",d,void 0)},932113:d=>{r.sa("Sigmoid",d,void 0)},932168:d=>{r.sa("Log",d,void 0)},932219:d=>{r.sa("Sin",d,void 0)},932270:d=>{r.sa("Cos",d,void 0)},932321:d=>{r.sa("Tan",d,void 0)},932372:d=>{r.sa("Asin",d,void 0)},932424:d=>{r.sa("Acos",d,void 0)},932476:d=>{r.sa("Atan",d,void 0)},932528:d=>{r.sa("Sinh",d,void 0)},932580:d=>{r.sa("Cosh",d,void 0)},932632:d=>{r.sa("Asinh",d,void 0)},932685:d=>{r.sa("Acosh",d,void 0)},932738:d=>{r.sa("Atanh",d,void 0)},932791:d=>{r.sa("Tanh",d,void 0)},932843:d=>{r.sa("Not",d,void 0)},932894:(d,m,v)=>{r.sa("Clip",d,{min:m,max:v})},932963:d=>{r.sa("Clip",d,void 0)},933015:(d,m)=>{r.sa("Elu",d,{alpha:m})},933073:d=>{r.sa("Relu",d,void 0)},933125:(d,m)=>{r.sa("LeakyRelu",d,{alpha:m})},933189:(d,m)=>{r.sa("ThresholdedRelu",d,{alpha:m})},933259:(d,m)=>{r.sa("Cast",d,{to:m})},933317:d=>{r.sa("Add",d,void 0)},933368:d=>{r.sa("Sub",d,void 0)},933419:d=>{r.sa("Mul",d,void 0)},933470:d=>{r.sa("Div",d,void 0)},933521:d=>{r.sa("Pow",d,void 0)},933572:d=>{r.sa("Equal",d,void 0)},933625:d=>{r.sa("Greater",d,void 0)},933680:d=>{r.sa("GreaterOrEqual",d,void 0)},933742:d=>{r.sa("Less",d,void 0)},933794:d=>{r.sa("LessOrEqual",d,void 0)},933853:(d,m,v,C,B)=>{r.sa("ReduceMean",d,{keepDims:!!m,noopWithEmptyAxes:!!v,axes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},934012:(d,m,v,C,B)=>{r.sa("ReduceMax",d,{keepDims:!!m,noopWithEmptyAxes:!!v,axes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},934170:(d,m,v,C,B)=>{r.sa("ReduceMin",d,{keepDims:!!m,noopWithEmptyAxes:!!v,axes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},934328:(d,m,v,C,B)=>{r.sa("ReduceProd",d,{keepDims:!!m,noopWithEmptyAxes:!!v,axes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},934487:(d,m,v,C,B)=>{r.sa("ReduceSum",d,{keepDims:!!m,noopWithEmptyAxes:!!v,axes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},934645:(d,m,v,C,B)=>{r.sa("ReduceL1",d,{keepDims:!!m,noopWithEmptyAxes:!!v,axes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},934802:(d,m,v,C,B)=>{r.sa("ReduceL2",d,{keepDims:!!m,noopWithEmptyAxes:!!v,axes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},934959:(d,m,v,C,B)=>{r.sa("ReduceLogSum",d,{keepDims:!!m,noopWithEmptyAxes:!!v,axes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},935120:(d,m,v,C,B)=>{r.sa("ReduceSumSquare",d,{keepDims:!!m,noopWithEmptyAxes:!!v,axes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},935284:(d,m,v,C,B)=>{r.sa("ReduceLogSumExp",d,{keepDims:!!m,noopWithEmptyAxes:!!v,axes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},935448:d=>{r.sa("Where",d,void 0)},935501:(d,m,v)=>{r.sa("Transpose",d,{perm:m?Array.from(T.subarray(m>>>0,v>>>0)):[]})},935609:(d,m,v,C,B,H,q,le,J,re,se,we,_e,P,ue)=>{r.sa("ConvTranspose",d,{format:J?"NHWC":"NCHW",autoPad:m,dilations:[v],group:C,kernel_shape:[B],pads:[H,q],strides:[le],wIsConst:()=>!!R[re>>>0],outputPadding:se?Array.from(T.subarray(se>>>0,we>>>0)):[],outputShape:_e?Array.from(T.subarray(_e>>>0,P>>>0)):[],activation:qe(ue)})},936011:(d,m,v,C,B,H,q,le,J,re,se,we,_e,P)=>{r.sa("ConvTranspose",d,{format:le?"NHWC":"NCHW",autoPad:m,dilations:Array.from(T.subarray(v>>>0,(v>>>0)+2>>>0)),group:C,kernelShape:Array.from(T.subarray(B>>>0,(B>>>0)+2>>>0)),pads:Array.from(T.subarray(H>>>0,(H>>>0)+4>>>0)),strides:Array.from(T.subarray(q>>>0,(q>>>0)+2>>>0)),wIsConst:()=>!!R[J>>>0],outputPadding:re?Array.from(T.subarray(re>>>0,se>>>0)):[],outputShape:we?Array.from(T.subarray(we>>>0,_e>>>0)):[],activation:qe(P)})},936576:(d,m,v,C,B,H,q,le,J,re,se,we,_e,P,ue)=>{r.sa("ConvTranspose",d,{format:J?"NHWC":"NCHW",autoPad:m,dilations:[v],group:C,kernel_shape:[B],pads:[H,q],strides:[le],wIsConst:()=>!!R[re>>>0],outputPadding:se?Array.from(T.subarray(se>>>0,we>>>0)):[],outputShape:_e?Array.from(T.subarray(_e>>>0,P>>>0)):[],activation:qe(ue)})},936978:(d,m,v,C,B,H,q,le,J,re,se,we,_e,P)=>{r.sa("ConvTranspose",d,{format:le?"NHWC":"NCHW",autoPad:m,dilations:Array.from(T.subarray(v>>>0,(v>>>0)+2>>>0)),group:C,kernelShape:Array.from(T.subarray(B>>>0,(B>>>0)+2>>>0)),pads:Array.from(T.subarray(H>>>0,(H>>>0)+4>>>0)),strides:Array.from(T.subarray(q>>>0,(q>>>0)+2>>>0)),wIsConst:()=>!!R[J>>>0],outputPadding:re?Array.from(T.subarray(re>>>0,se>>>0)):[],outputShape:we?Array.from(T.subarray(we>>>0,_e>>>0)):[],activation:qe(P)})},937543:(d,m)=>{r.sa("GlobalAveragePool",d,{format:m?"NHWC":"NCHW"})},937634:(d,m,v,C,B,H,q,le,J,re,se,we,_e,P,ue,Se)=>{r.sa("AveragePool",d,{format:Se?"NHWC":"NCHW",auto_pad:m,ceil_mode:v,count_include_pad:C,storage_order:B,dilations:[H,q],kernel_shape:[le,J],pads:[re,se,we,_e],strides:[P,ue]})},937918:(d,m)=>{r.sa("GlobalAveragePool",d,{format:m?"NHWC":"NCHW"})},938009:(d,m,v,C,B,H,q,le,J,re,se,we,_e,P,ue,Se)=>{r.sa("AveragePool",d,{format:Se?"NHWC":"NCHW",auto_pad:m,ceil_mode:v,count_include_pad:C,storage_order:B,dilations:[H,q],kernel_shape:[le,J],pads:[re,se,we,_e],strides:[P,ue]})},938293:(d,m)=>{r.sa("GlobalMaxPool",d,{format:m?"NHWC":"NCHW"})},938380:(d,m,v,C,B,H,q,le,J,re,se,we,_e,P,ue,Se)=>{r.sa("MaxPool",d,{format:Se?"NHWC":"NCHW",auto_pad:m,ceil_mode:v,count_include_pad:C,storage_order:B,dilations:[H,q],kernel_shape:[le,J],pads:[re,se,we,_e],strides:[P,ue]})},938660:(d,m)=>{r.sa("GlobalMaxPool",d,{format:m?"NHWC":"NCHW"})},938747:(d,m,v,C,B,H,q,le,J,re,se,we,_e,P,ue,Se)=>{r.sa("MaxPool",d,{format:Se?"NHWC":"NCHW",auto_pad:m,ceil_mode:v,count_include_pad:C,storage_order:B,dilations:[H,q],kernel_shape:[le,J],pads:[re,se,we,_e],strides:[P,ue]})},939027:(d,m,v,C,B)=>{r.sa("Gemm",d,{alpha:m,beta:v,transA:C,transB:B})},939131:d=>{r.sa("MatMul",d,void 0)},939185:(d,m,v,C)=>{r.sa("ArgMax",d,{keepDims:!!m,selectLastIndex:!!v,axis:C})},939293:(d,m,v,C)=>{r.sa("ArgMin",d,{keepDims:!!m,selectLastIndex:!!v,axis:C})},939401:(d,m)=>{r.sa("Softmax",d,{axis:m})},939464:(d,m)=>{r.sa("Concat",d,{axis:m})},939524:(d,m,v,C,B)=>{r.sa("Split",d,{axis:m,numOutputs:v,splitSizes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},939664:d=>{r.sa("Expand",d,void 0)},939718:(d,m)=>{r.sa("Gather",d,{axis:Number(m)})},939789:(d,m)=>{r.sa("GatherElements",d,{axis:Number(m)})},939868:(d,m,v,C,B,H,q,le,J,re,se)=>{r.sa("Resize",d,{antialias:m,axes:v?Array.from(T.subarray(v>>>0,C>>>0)):[],coordinateTransformMode:qe(B),cubicCoeffA:H,excludeOutside:q,extrapolationValue:le,keepAspectRatioPolicy:qe(J),mode:qe(re),nearestMode:qe(se)})},940214:(d,m,v,C,B,H,q)=>{r.sa("Slice",d,{starts:m?Array.from(T.subarray(m>>>0,v>>>0)):[],ends:C?Array.from(T.subarray(C>>>0,B>>>0)):[],axes:H?Array.from(T.subarray(H>>>0,q>>>0)):[]})},940430:d=>{r.sa("Tile",d,void 0)},940482:(d,m,v)=>{r.sa("LayerNormalization",d,{axis:Number(m),epsilon:Number(v)})},940589:(d,m,v)=>{r.sa("InstanceNormalization",d,{epsilon:m,format:v?"NHWC":"NCHW"})},940703:(d,m,v)=>{r.sa("InstanceNormalization",d,{epsilon:m,format:v?"NHWC":"NCHW"})},940817:d=>{r.sa("Range",d,void 0)},940870:(d,m)=>{r.sa("Einsum",d,{equation:qe(m)})},940951:(d,m,v,C,B)=>{r.sa("Pad",d,{mode:m,value:v,pads:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},941078:(d,m,v,C,B,H)=>{r.sa("BatchNormalization",d,{epsilon:m,momentum:v,spatial:!!B,trainingMode:!!C,format:H?"NHWC":"NCHW"})},941247:(d,m,v,C,B,H)=>{r.sa("BatchNormalization",d,{epsilon:m,momentum:v,spatial:!!B,trainingMode:!!C,format:H?"NHWC":"NCHW"})},941416:(d,m,v)=>{r.sa("CumSum",d,{exclusive:Number(m),reverse:Number(v)})},941513:(d,m,v,C,B,H,q,le,J)=>{r.sa("Attention",d,{numHeads:m,isUnidirectional:v,maskFilterValue:C,scale:B,doRotary:H,qkvHiddenSizes:q?Array.from(T.subarray(Number(le)>>>0,Number(le)+q>>>0)):[],pastPresentShareBuffer:!!J})},941785:d=>{r.sa("Gelu",d,void 0)},941837:(d,m,v,C,B,H)=>{r.sa("MultiHeadAttention",d,{numHeads:m,isUnidirectional:v,maskFilterValue:C,scale:B,doRotary:H})},941996:d=>{r.sa("BiasAdd",d,void 0)},942051:d=>{r.sa("BiasSplitGelu",d,void 0)},942112:(d,m)=>{r.sa("SkipLayerNormalization",d,{epsilon:m})},942193:(d,m,v,C,B,H,q,le,J,re,se,we,_e)=>{r.sa("Conv",d,{format:J?"NHWC":"NCHW",auto_pad:m,dilations:[v],group:C,kernel_shape:[B],pads:H?Array.from(T.subarray(H>>>0,q>>>0)):[],strides:[le],w_is_const:()=>!!R[re>>>0],activation:qe(se),activation_params:we?Array.from(te.subarray(we>>>0,_e>>>0)):[]})},942563:(d,m,v,C,B,H,q,le,J,re,se,we,_e,P,ue,Se)=>{r.sa("Conv",d,{format:we?"NHWC":"NCHW",auto_pad:m,dilations:[v,C],group:B,kernel_shape:[H,q],pads:le?Array.from(T.subarray(le>>>0,J>>>0)):[],strides:[re,se],w_is_const:()=>!!R[_e>>>0],activation:qe(P),activation_params:ue?Array.from(te.subarray(ue>>>0,Se>>>0)):[]})},942954:d=>{r.Ta(d)},942988:(d,m)=>r.Ua(d,m,r.Ea.Va,r.Ea.errors)};function Me(d){this.name="ExitStatus",this.message=`Program terminated with exit(${d})`,this.status=d}function wt(d){this.Ja=d-24,this.Oa=function(m){N[this.Ja+4>>>2>>>0]=m},this.Na=function(m){N[this.Ja+8>>>2>>>0]=m},this.$a=function(m,v){this.Ma(),this.Oa(m),this.Na(v)},this.Ma=function(){N[this.Ja+16>>>2>>>0]=0}}var rt=0,Dt=0,At=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,vt=(d,m,v)=>{m>>>=0;var C=m+v;for(v=m;d[v]&&!(v>=C);)++v;if(16B?C+=String.fromCharCode(B):(B-=65536,C+=String.fromCharCode(55296|B>>10,56320|B&1023))}}else C+=String.fromCharCode(B)}return C},qe=(d,m)=>(d>>>=0)?vt(V,d,m):"",qt=d=>{for(var m=0,v=0;v=C?m++:2047>=C?m+=2:55296<=C&&57343>=C?(m+=4,++v):m+=3}return m},Mt=(d,m,v,C)=>{if(v>>>=0,!(0=q){var le=d.charCodeAt(++H);q=65536+((q&1023)<<10)|le&1023}if(127>=q){if(v>=C)break;m[v++>>>0]=q}else{if(2047>=q){if(v+1>=C)break;m[v++>>>0]=192|q>>6}else{if(65535>=q){if(v+2>=C)break;m[v++>>>0]=224|q>>12}else{if(v+3>=C)break;m[v++>>>0]=240|q>>18,m[v++>>>0]=128|q>>12&63}m[v++>>>0]=128|q>>6&63}m[v++>>>0]=128|q&63}}return m[v>>>0]=0,v-B},$t=d=>d%4===0&&(d%100!==0||d%400===0),yt=[0,31,60,91,121,152,182,213,244,274,305,335],zt=[0,31,59,90,120,151,181,212,243,273,304,334],Ut=d=>{var m=qt(d)+1,v=Wt(m);return v&&Mt(d,V,v,m),v},Tt=[],Kt=(d,m)=>{Tt.length=0;for(var v;v=V[d++>>>0];){var C=v!=105;C&=v!=112,m+=C&&m%8?4:0,Tt.push(v==112?N[m>>>2>>>0]:v==105?T[m>>>2>>>0]:Y[m>>>3>>>0]),m+=C?8:4}return Tt},nt={},Yt=()=>{if(!Vt){var d={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:u||"./this.program"},m;for(m in nt)nt[m]===void 0?delete d[m]:d[m]=nt[m];var v=[];for(m in d)v.push(`${m}=${d[m]}`);Vt=v}return Vt},Vt,Ye=[null,[],[]],br=[31,29,31,30,31,30,31,31,30,31,30,31],Oe=[31,28,31,30,31,30,31,31,30,31,30,31];function wr(d){var m=Array(qt(d)+1);return Mt(d,m,0,m.length),m}function Nt(d,m,v,C){function B(P,ue,Se){for(P=typeof P=="number"?P.toString():P||"";P.lengthTr?-1:0st-P.getDate())ue-=st-P.getDate()+1,P.setDate(1),11>Se?P.setMonth(Se+1):(P.setMonth(0),P.setFullYear(P.getFullYear()+1));else{P.setDate(P.getDate()+ue);break}}return Se=new Date(P.getFullYear()+1,0,4),ue=le(new Date(P.getFullYear(),0,4)),Se=le(Se),0>=q(ue,P)?0>=q(Se,P)?P.getFullYear()+1:P.getFullYear():P.getFullYear()-1}d>>>=0,m>>>=0,v>>>=0,C>>>=0;var re=N[C+40>>>2>>>0];C={Ya:T[C>>>2>>>0],Xa:T[C+4>>>2>>>0],Ga:T[C+8>>>2>>>0],Ka:T[C+12>>>2>>>0],Ha:T[C+16>>>2>>>0],Da:T[C+20>>>2>>>0],xa:T[C+24>>>2>>>0],Ca:T[C+28>>>2>>>0],bb:T[C+32>>>2>>>0],Wa:T[C+36>>>2>>>0],Za:re?qe(re):""},v=qe(v),re={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var se in re)v=v.replace(new RegExp(se,"g"),re[se]);var we="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),_e="January February March April May June July August September October November December".split(" ");re={"%a":P=>we[P.xa].substring(0,3),"%A":P=>we[P.xa],"%b":P=>_e[P.Ha].substring(0,3),"%B":P=>_e[P.Ha],"%C":P=>H((P.Da+1900)/100|0,2),"%d":P=>H(P.Ka,2),"%e":P=>B(P.Ka,2," "),"%g":P=>J(P).toString().substring(2),"%G":P=>J(P),"%H":P=>H(P.Ga,2),"%I":P=>(P=P.Ga,P==0?P=12:12{for(var ue=0,Se=0;Se<=P.Ha-1;ue+=($t(P.Da+1900)?br:Oe)[Se++]);return H(P.Ka+ue,3)},"%m":P=>H(P.Ha+1,2),"%M":P=>H(P.Xa,2),"%n":()=>`\n`,"%p":P=>0<=P.Ga&&12>P.Ga?"AM":"PM","%S":P=>H(P.Ya,2),"%t":()=>" ","%u":P=>P.xa||7,"%U":P=>H(Math.floor((P.Ca+7-P.xa)/7),2),"%V":P=>{var ue=Math.floor((P.Ca+7-(P.xa+6)%7)/7);if(2>=(P.xa+371-P.Ca-2)%7&&ue++,ue)ue==53&&(Se=(P.xa+371-P.Ca)%7,Se==4||Se==3&&$t(P.Da)||(ue=1));else{ue=52;var Se=(P.xa+7-P.Ca-1)%7;(Se==4||Se==5&&$t(P.Da%400-1))&&ue++}return H(ue,2)},"%w":P=>P.xa,"%W":P=>H(Math.floor((P.Ca+7-(P.xa+6)%7)/7),2),"%y":P=>(P.Da+1900).toString().substring(2),"%Y":P=>P.Da+1900,"%z":P=>{P=P.Wa;var ue=0<=P;return P=Math.abs(P)/60,(ue?"+":"-")+("0000"+(P/60*100+P%60)).slice(-4)},"%Z":P=>P.Za,"%%":()=>"%"},v=v.replace(/%%/g,"\\0\\0");for(se in re)v.includes(se)&&(v=v.replace(new RegExp(se,"g"),re[se](C)));return v=v.replace(/\\0\\0/g,"%"),se=wr(v),se.length>m?0:(R.set(se,d>>>0),se.length-1)}var St=d=>{try{d()}catch(m){he(m)}};function un(){var d=ae,m={};for(let[v,C]of Object.entries(d))m[v]=typeof C=="function"?function(){bt.push(v);try{return C.apply(null,arguments)}finally{A||(bt.pop(),tt&&ot===1&&bt.length===0&&(ot=0,St(ir),typeof Fibers<"u"&&Fibers.cb()))}}:C;return m}var ot=0,tt=null,de=0,bt=[],Zt={},vr={},$r=0,Qt=null,Sr=[];function xr(){return new Promise((d,m)=>{Qt={resolve:d,reject:m}})}function _r(){var d=Wt(65548),m=d+12;N[d>>>2>>>0]=m,N[d+4>>>2>>>0]=m+65536,m=bt[0];var v=Zt[m];return v===void 0&&(v=$r++,Zt[m]=v,vr[v]=m),T[d+8>>>2>>>0]=v,d}function Cr(d){if(!A){if(ot===0){var m=!1,v=!1;d((C=0)=>{if(!A&&(de=C,m=!0,v)){ot=2,St(()=>sr(tt)),typeof Browser<"u"&&Browser.Ia.Pa&&Browser.Ia.resume(),C=!1;try{var B=(0,ae[vr[T[tt+8>>>2>>>0]]])()}catch(le){B=le,C=!0}var H=!1;if(!tt){var q=Qt;q&&(Qt=null,(C?q.reject:q.resolve)(B),H=!0)}if(C&&!H)throw B}}),v=!0,m||(ot=1,tt=_r(),typeof Browser<"u"&&Browser.Ia.Pa&&Browser.Ia.pause(),St(()=>ar(tt)))}else ot===2?(ot=0,St(ur),er(tt),tt=null,Sr.forEach(C=>{if(!A)try{C();try{z=z=C=z,r.onExit?.(C),A=!0,l(C,new Me(C))}catch(B){B instanceof Me||B=="unwind"||l(1,B)}}catch(B){B instanceof Me||B=="unwind"||l(1,B)}})):he(`invalid state: ${ot}`);return de}}function Xt(d){return Cr(m=>{d().then(m)})}var Ir={n:function(d,m,v){return Xt(async()=>{await r.Ra(d,m,v)})},a:function(d,m,v){throw d>>>=0,new wt(d).$a(m>>>0,v>>>0),rt=d,Dt++,rt},g:function(){return 0},J:function(){},A:function(){},C:function(){},L:function(){return 0},H:function(){},D:function(){},G:function(){},l:function(){},B:function(){},y:function(){},I:function(){},z:function(){},m:()=>1,q:function(d,m,v){d=m+2097152>>>0<4194305-!!d?(d>>>0)+4294967296*m:NaN,v>>>=0,d=new Date(1e3*d),T[v>>>2>>>0]=d.getUTCSeconds(),T[v+4>>>2>>>0]=d.getUTCMinutes(),T[v+8>>>2>>>0]=d.getUTCHours(),T[v+12>>>2>>>0]=d.getUTCDate(),T[v+16>>>2>>>0]=d.getUTCMonth(),T[v+20>>>2>>>0]=d.getUTCFullYear()-1900,T[v+24>>>2>>>0]=d.getUTCDay(),T[v+28>>>2>>>0]=(d.getTime()-Date.UTC(d.getUTCFullYear(),0,1,0,0,0,0))/864e5|0},r:function(d,m,v){d=m+2097152>>>0<4194305-!!d?(d>>>0)+4294967296*m:NaN,v>>>=0,d=new Date(1e3*d),T[v>>>2>>>0]=d.getSeconds(),T[v+4>>>2>>>0]=d.getMinutes(),T[v+8>>>2>>>0]=d.getHours(),T[v+12>>>2>>>0]=d.getDate(),T[v+16>>>2>>>0]=d.getMonth(),T[v+20>>>2>>>0]=d.getFullYear()-1900,T[v+24>>>2>>>0]=d.getDay(),T[v+28>>>2>>>0]=($t(d.getFullYear())?yt:zt)[d.getMonth()]+d.getDate()-1|0,T[v+36>>>2>>>0]=-(60*d.getTimezoneOffset()),m=new Date(d.getFullYear(),6,1).getTimezoneOffset();var C=new Date(d.getFullYear(),0,1).getTimezoneOffset();T[v+32>>>2>>>0]=(m!=C&&d.getTimezoneOffset()==Math.min(C,m))|0},s:function(d){d>>>=0;var m=new Date(T[d+20>>>2>>>0]+1900,T[d+16>>>2>>>0],T[d+12>>>2>>>0],T[d+8>>>2>>>0],T[d+4>>>2>>>0],T[d>>>2>>>0],0),v=T[d+32>>>2>>>0],C=m.getTimezoneOffset(),B=new Date(m.getFullYear(),6,1).getTimezoneOffset(),H=new Date(m.getFullYear(),0,1).getTimezoneOffset(),q=Math.min(H,B);return 0>v?T[d+32>>>2>>>0]=+(B!=H&&q==C):0>>2>>>0]=m.getDay(),T[d+28>>>2>>>0]=($t(m.getFullYear())?yt:zt)[m.getMonth()]+m.getDate()-1|0,T[d>>>2>>>0]=m.getSeconds(),T[d+4>>>2>>>0]=m.getMinutes(),T[d+8>>>2>>>0]=m.getHours(),T[d+12>>>2>>>0]=m.getDate(),T[d+16>>>2>>>0]=m.getMonth(),T[d+20>>>2>>>0]=m.getYear(),d=m.getTime(),isNaN(d)?(T[Jt()>>>2>>>0]=61,d=-1):d/=1e3,tr((ze=d,1<=+Math.abs(ze)?0>>0:~~+Math.ceil((ze-+(~~ze>>>0))/4294967296)>>>0:0)),d>>>0},o:function(){return-52},p:function(){},w:function(d,m,v){function C(J){return(J=J.toTimeString().match(/\\(([A-Za-z ]+)\\)$/))?J[1]:"GMT"}v>>>=0;var B=new Date().getFullYear(),H=new Date(B,0,1),q=new Date(B,6,1);B=H.getTimezoneOffset();var le=q.getTimezoneOffset();N[d>>>0>>>2>>>0]=60*Math.max(B,le),T[m>>>0>>>2>>>0]=+(B!=le),d=C(H),m=C(q),d=Ut(d),m=Ut(m),le>>2>>>0]=d,N[v+4>>>2>>>0]=m):(N[v>>>2>>>0]=m,N[v+4>>>2>>>0]=d)},e:()=>{he("")},b:function(d,m,v){return d>>>=0,m=Kt(m>>>0,v>>>0),Ue[d].apply(null,m)},i:function(d,m,v){return d>>>=0,m=Kt(m>>>0,v>>>0),Ue[d].apply(null,m)},h:()=>Date.now(),x:function(){return 4294901760},c:()=>performance.now(),K:function(d,m,v){return m>>>=0,V.copyWithin(d>>>0>>>0,m>>>0,m+(v>>>0)>>>0)},u:function(d){d>>>=0;var m=V.length;if(4294901760=v;v*=2){var C=m*(1+.2/v);C=Math.min(C,d+100663296);var B=Math;C=Math.max(d,C);e:{B=(B.min.call(B,4294901760,C+(65536-C%65536)%65536)-E.buffer.byteLength+65535)/65536;try{E.grow(B),K();var H=1;break e}catch{}H=void 0}if(H)return!0}return!1},E:function(d,m){d>>>=0,m>>>=0;var v=0;return Yt().forEach((C,B)=>{var H=m+v;for(B=N[d+4*B>>>2>>>0]=H,H=0;H>>0>>>0]=C.charCodeAt(H);R[B>>>0>>>0]=0,v+=C.length+1}),0},F:function(d,m){d>>>=0,m>>>=0;var v=Yt();N[d>>>2>>>0]=v.length;var C=0;return v.forEach(B=>C+=B.length+1),N[m>>>2>>>0]=C,0},f:()=>52,k:function(){return 52},t:function(){return 70},j:function(d,m,v,C){m>>>=0,v>>>=0,C>>>=0;for(var B=0,H=0;H>>2>>>0],le=N[m+4>>>2>>>0];m+=8;for(var J=0;J>>0],se=Ye[d];re===0||re===10?((d===1?$:x)(vt(se,0)),se.length=0):se.push(re)}B+=le}return N[C>>>2>>>0]=B,0},v:Nt,d:function(d,m,v,C){return Nt(d>>>0,m>>>0,v>>>0,C>>>0)}},ae=function(){function d(v){return ae=v.exports,ae=un(),ae=Ar(),E=ae.M,K(),Z.unshift(ae.N),Pe--,Pe==0&&(fe!==null&&(clearInterval(fe),fe=null),Ie&&(v=Ie,Ie=null,v())),ae}var m={a:Ir};if(Pe++,r.instantiateWasm)try{return r.instantiateWasm(m,d)}catch(v){x(`Module.instantiateWasm callback failed with error: ${v}`),n(v)}return et(m,function(v){d(v.instance)}).catch(n),{}}();r._OrtInit=(d,m)=>(r._OrtInit=ae.O)(d,m),r._OrtGetLastError=(d,m)=>(r._OrtGetLastError=ae.P)(d,m),r._OrtCreateSessionOptions=(d,m,v,C,B,H,q,le,J,re)=>(r._OrtCreateSessionOptions=ae.Q)(d,m,v,C,B,H,q,le,J,re),r._OrtAppendExecutionProvider=(d,m)=>(r._OrtAppendExecutionProvider=ae.R)(d,m),r._OrtAddFreeDimensionOverride=(d,m,v)=>(r._OrtAddFreeDimensionOverride=ae.S)(d,m,v),r._OrtAddSessionConfigEntry=(d,m,v)=>(r._OrtAddSessionConfigEntry=ae.T)(d,m,v),r._OrtReleaseSessionOptions=d=>(r._OrtReleaseSessionOptions=ae.U)(d),r._OrtCreateSession=(d,m,v)=>(r._OrtCreateSession=ae.V)(d,m,v),r._OrtReleaseSession=d=>(r._OrtReleaseSession=ae.W)(d),r._OrtGetInputOutputCount=(d,m,v)=>(r._OrtGetInputOutputCount=ae.X)(d,m,v),r._OrtGetInputName=(d,m)=>(r._OrtGetInputName=ae.Y)(d,m),r._OrtGetOutputName=(d,m)=>(r._OrtGetOutputName=ae.Z)(d,m),r._OrtFree=d=>(r._OrtFree=ae._)(d),r._OrtCreateTensor=(d,m,v,C,B,H)=>(r._OrtCreateTensor=ae.$)(d,m,v,C,B,H),r._OrtGetTensorData=(d,m,v,C,B)=>(r._OrtGetTensorData=ae.aa)(d,m,v,C,B),r._OrtReleaseTensor=d=>(r._OrtReleaseTensor=ae.ba)(d),r._OrtCreateRunOptions=(d,m,v,C)=>(r._OrtCreateRunOptions=ae.ca)(d,m,v,C),r._OrtAddRunConfigEntry=(d,m,v)=>(r._OrtAddRunConfigEntry=ae.da)(d,m,v),r._OrtReleaseRunOptions=d=>(r._OrtReleaseRunOptions=ae.ea)(d),r._OrtCreateBinding=d=>(r._OrtCreateBinding=ae.fa)(d),r._OrtBindInput=(d,m,v)=>(r._OrtBindInput=ae.ga)(d,m,v),r._OrtBindOutput=(d,m,v,C)=>(r._OrtBindOutput=ae.ha)(d,m,v,C),r._OrtClearBoundOutputs=d=>(r._OrtClearBoundOutputs=ae.ia)(d),r._OrtReleaseBinding=d=>(r._OrtReleaseBinding=ae.ja)(d),r._OrtRunWithBinding=(d,m,v,C,B)=>(r._OrtRunWithBinding=ae.ka)(d,m,v,C,B),r._OrtRun=(d,m,v,C,B,H,q,le)=>(r._OrtRun=ae.la)(d,m,v,C,B,H,q,le),r._OrtEndProfiling=d=>(r._OrtEndProfiling=ae.ma)(d),r._JsepOutput=(d,m,v)=>(r._JsepOutput=ae.na)(d,m,v),r._JsepGetNodeName=d=>(r._JsepGetNodeName=ae.oa)(d);var Jt=()=>(Jt=ae.pa)(),Wt=r._malloc=d=>(Wt=r._malloc=ae.qa)(d),er=r._free=d=>(er=r._free=ae.ra)(d),tr=d=>(tr=ae.ta)(d),rr=()=>(rr=ae.ua)(),nr=d=>(nr=ae.va)(d),or=d=>(or=ae.wa)(d),ar=d=>(ar=ae.ya)(d),ir=()=>(ir=ae.za)(),sr=d=>(sr=ae.Aa)(d),ur=()=>(ur=ae.Ba)();r.___start_em_js=943100,r.___stop_em_js=943261;function Ar(){var d=ae;d=Object.assign({},d);var m=C=>()=>C()>>>0,v=C=>B=>C(B)>>>0;return d.pa=m(d.pa),d.qa=v(d.qa),d.ua=m(d.ua),d.wa=v(d.wa),d}r.stackAlloc=or,r.stackSave=rr,r.stackRestore=nr,r.UTF8ToString=qe,r.stringToUTF8=(d,m,v)=>Mt(d,V,m,v),r.lengthBytesUTF8=qt;var xt;Ie=function d(){xt||Et(),xt||(Ie=d)};function Et(){if(!(0_o)});var Ao=dr(()=>{});var To=dr(()=>{});var Eo={};Br(Eo,{cpus:()=>Qu});var Qu,Oo=j(()=>{Qu=void 0});var Ro=dr((ko,$n)=>{"use strict";var Po=(()=>{var e=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(e=e||__filename),function(t={}){function r(){return Q.buffer!=fe.buffer&&Ge(),fe}function o(){return Q.buffer!=fe.buffer&&Ge(),Ie}function n(){return Q.buffer!=fe.buffer&&Ge(),he}function s(){return Q.buffer!=fe.buffer&&Ge(),ye}function u(){return Q.buffer!=fe.buffer&&Ge(),We}function l(){return Q.buffer!=fe.buffer&&Ge(),De}var a=t,p,h;a.ready=new Promise((i,c)=>{p=i,h=c}),a.mountExternalData=(i,c)=>{(a.cb||(a.cb=new Map)).set(i,c)},a.unmountExternalData=()=>{delete a.cb},a.jsepInit=(i,c,f,S,O,D,W,ie)=>{a.Mb=i,a.wb=c,a.yb=f,a.kb=S,a.xb=O,a.Ea=D,a.zb=W,a.Ab=ie,c=(ne,oe,pe)=>(...xe)=>{let Te=ut,k=oe?.();xe=ne(...xe);let me=oe?.();return k!==me&&(ne=me,pe(k),oe=pe=null),ut!=Te?Mu():xe},f=ne=>async(...oe)=>{try{if(a.bb)throw Error("Session already started");let pe=a.bb={Cb:oe[0],errors:[]},xe=await ne(...oe);if(a.bb!==pe)throw Error("Session mismatch");i.flush();let Te=pe.errors;if(0me),0a._OrtRun,ne=>a._OrtRun=ne)),a._OrtRunWithBinding=f(c(a._OrtRunWithBinding,()=>a._OrtRunWithBinding,ne=>a._OrtRunWithBinding=ne)),a._OrtBindInput=c(a._OrtBindInput,()=>a._OrtBindInput,ne=>a._OrtBindInput=ne),a.jsepRegisterBuffer=(ne,oe,pe,xe)=>i.registerBuffer(ne,oe,pe,xe),a.jsepUnregisterBuffers=ne=>{i.unregisterBuffers(ne)},a.jsepGetBuffer=ne=>i.getBuffer(ne),a.jsepCreateDownloader=(ne,oe,pe)=>i.createDownloader(ne,oe,pe)};var g=Object.assign({},a),b="./this.program",w=(i,c)=>{throw c},y=typeof window=="object",_=typeof importScripts=="function",I=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",$=a.ENVIRONMENT_IS_PTHREAD||!1,x="";function E(i){return a.locateFile?a.locateFile(i,x):x+i}var A,z,R;if(I){var V=(yn(),Ht(gn)),T=(wn(),Ht(bn));x=_?T.dirname(x)+"/":__dirname+"/",A=(c,f)=>(c=At(c)?new URL(c):T.normalize(c),V.readFileSync(c,f?void 0:"utf8")),R=c=>(c=A(c,!0),c.buffer||(c=new Uint8Array(c)),c),z=(c,f,S,O=!0)=>{c=At(c)?new URL(c):T.normalize(c),V.readFile(c,O?void 0:"utf8",(D,W)=>{D?S(D):f(O?W.buffer:W)})},!a.thisProgram&&1{throw process.exitCode=c,f},a.inspect=()=>"[Emscripten Module object]";let i;try{i=Ao()}catch(c){throw console.error(\'The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?\'),c}global.Worker=i.Worker}else(y||_)&&(_?x=self.location.href:typeof document<"u"&&document.currentScript&&(x=document.currentScript.src),typeof e<"u"&&e&&(x=e),x.indexOf("blob:")!==0?x=x.substr(0,x.replace(/[?#].*/,"").lastIndexOf("/")+1):x="",I||(A=i=>{var c=new XMLHttpRequest;return c.open("GET",i,!1),c.send(null),c.responseText},_&&(R=i=>{var c=new XMLHttpRequest;return c.open("GET",i,!1),c.responseType="arraybuffer",c.send(null),new Uint8Array(c.response)}),z=(i,c,f)=>{var S=new XMLHttpRequest;S.open("GET",i,!0),S.responseType="arraybuffer",S.onload=()=>{S.status==200||S.status==0&&S.response?c(S.response):f()},S.onerror=f,S.send(null)}));I&&typeof performance>"u"&&(global.performance=To().performance);var N=console.log.bind(console),te=console.error.bind(console);I&&(N=(...i)=>V.writeSync(1,i.join(" ")+`\n`),te=(...i)=>V.writeSync(2,i.join(" ")+`\n`));var Y=N,K=te;Object.assign(a,g),g=null,typeof WebAssembly!="object"&&rt("no native wasm support detected");var Q,Z,Ee=!1,Pe,fe,Ie,he,ye,We,De;function Ge(){var i=Q.buffer;a.HEAP8=fe=new Int8Array(i),a.HEAP16=new Int16Array(i),a.HEAPU8=Ie=new Uint8Array(i),a.HEAPU16=new Uint16Array(i),a.HEAP32=he=new Int32Array(i),a.HEAPU32=ye=new Uint32Array(i),a.HEAPF32=We=new Float32Array(i),a.HEAPF64=De=new Float64Array(i)}var G=16777216;if($)Q=a.wasmMemory;else if(a.wasmMemory)Q=a.wasmMemory;else if(Q=new WebAssembly.Memory({initial:G/65536,maximum:65536,shared:!0}),!(Q.buffer instanceof SharedArrayBuffer))throw K("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"),I&&K("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)"),Error("bad memory");Ge(),G=Q.buffer.byteLength;var ee=[],be=[],et=[],ze=0,Ue=null,Me=null;function wt(){if(ze--,ze==0&&(Ue!==null&&(clearInterval(Ue),Ue=null),Me)){var i=Me;Me=null,i()}}function rt(i){throw i="Aborted("+i+")",K(i),Ee=!0,Pe=1,i=new WebAssembly.RuntimeError(i+". Build with -sASSERTIONS for more info."),h(i),i}var Dt=i=>i.startsWith("data:application/octet-stream;base64,"),At=i=>i.startsWith("file://"),vt;vt="ort-wasm-simd-threaded.wasm",Dt(vt)||(vt=E(vt));function qe(i){if(R)return R(i);throw"both async and sync fetching of the wasm failed"}function qt(i){if(y||_){if(typeof fetch=="function"&&!At(i))return fetch(i,{credentials:"same-origin"}).then(c=>{if(!c.ok)throw"failed to load wasm binary file at \'"+i+"\'";return c.arrayBuffer()}).catch(()=>qe(i));if(z)return new Promise((c,f)=>{z(i,S=>c(new Uint8Array(S)),f)})}return Promise.resolve().then(()=>qe(i))}function Mt(i,c,f){return qt(i).then(S=>WebAssembly.instantiate(S,c)).then(S=>S).then(f,S=>{K(`failed to asynchronously prepare wasm: ${S}`),rt(S)})}function $t(i,c){var f=vt;return typeof WebAssembly.instantiateStreaming!="function"||Dt(f)||At(f)||I||typeof fetch!="function"?Mt(f,i,c):fetch(f,{credentials:"same-origin"}).then(S=>WebAssembly.instantiateStreaming(S,i).then(c,function(O){return K(`wasm streaming compile failed: ${O}`),K("falling back to ArrayBuffer instantiation"),Mt(f,i,c)}))}var yt,zt={932428:(i,c,f,S)=>{if(typeof a>"u"||!a.cb)return 1;if(i=Ye(i>>>0),i.startsWith("./")&&(i=i.substring(2)),i=a.cb.get(i),!i)return 2;if(c>>>=0,f>>>=0,S>>>=0,c+f>i.byteLength)return 3;try{return o().set(i.subarray(c,c+f),S>>>0),0}catch{return 4}},932929:i=>a.wb(i),932962:i=>a.yb(i),932994:(i,c,f)=>{a.kb(i,c,f,!0)},933033:(i,c,f)=>{a.kb(i,c,f)},933066:i=>{a.Ea("Abs",i,void 0)},933117:i=>{a.Ea("Neg",i,void 0)},933168:i=>{a.Ea("Floor",i,void 0)},933221:i=>{a.Ea("Ceil",i,void 0)},933273:i=>{a.Ea("Reciprocal",i,void 0)},933331:i=>{a.Ea("Sqrt",i,void 0)},933383:i=>{a.Ea("Exp",i,void 0)},933434:i=>{a.Ea("Erf",i,void 0)},933485:i=>{a.Ea("Sigmoid",i,void 0)},933540:i=>{a.Ea("Log",i,void 0)},933591:i=>{a.Ea("Sin",i,void 0)},933642:i=>{a.Ea("Cos",i,void 0)},933693:i=>{a.Ea("Tan",i,void 0)},933744:i=>{a.Ea("Asin",i,void 0)},933796:i=>{a.Ea("Acos",i,void 0)},933848:i=>{a.Ea("Atan",i,void 0)},933900:i=>{a.Ea("Sinh",i,void 0)},933952:i=>{a.Ea("Cosh",i,void 0)},934004:i=>{a.Ea("Asinh",i,void 0)},934057:i=>{a.Ea("Acosh",i,void 0)},934110:i=>{a.Ea("Atanh",i,void 0)},934163:i=>{a.Ea("Tanh",i,void 0)},934215:i=>{a.Ea("Not",i,void 0)},934266:(i,c,f)=>{a.Ea("Clip",i,{min:c,max:f})},934335:i=>{a.Ea("Clip",i,void 0)},934387:(i,c)=>{a.Ea("Elu",i,{alpha:c})},934445:i=>{a.Ea("Relu",i,void 0)},934497:(i,c)=>{a.Ea("LeakyRelu",i,{alpha:c})},934561:(i,c)=>{a.Ea("ThresholdedRelu",i,{alpha:c})},934631:(i,c)=>{a.Ea("Cast",i,{to:c})},934689:i=>{a.Ea("Add",i,void 0)},934740:i=>{a.Ea("Sub",i,void 0)},934791:i=>{a.Ea("Mul",i,void 0)},934842:i=>{a.Ea("Div",i,void 0)},934893:i=>{a.Ea("Pow",i,void 0)},934944:i=>{a.Ea("Equal",i,void 0)},934997:i=>{a.Ea("Greater",i,void 0)},935052:i=>{a.Ea("GreaterOrEqual",i,void 0)},935114:i=>{a.Ea("Less",i,void 0)},935166:i=>{a.Ea("LessOrEqual",i,void 0)},935225:(i,c,f,S,O)=>{a.Ea("ReduceMean",i,{keepDims:!!c,noopWithEmptyAxes:!!f,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},935384:(i,c,f,S,O)=>{a.Ea("ReduceMax",i,{keepDims:!!c,noopWithEmptyAxes:!!f,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},935542:(i,c,f,S,O)=>{a.Ea("ReduceMin",i,{keepDims:!!c,noopWithEmptyAxes:!!f,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},935700:(i,c,f,S,O)=>{a.Ea("ReduceProd",i,{keepDims:!!c,noopWithEmptyAxes:!!f,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},935859:(i,c,f,S,O)=>{a.Ea("ReduceSum",i,{keepDims:!!c,noopWithEmptyAxes:!!f,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},936017:(i,c,f,S,O)=>{a.Ea("ReduceL1",i,{keepDims:!!c,noopWithEmptyAxes:!!f,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},936174:(i,c,f,S,O)=>{a.Ea("ReduceL2",i,{keepDims:!!c,noopWithEmptyAxes:!!f,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},936331:(i,c,f,S,O)=>{a.Ea("ReduceLogSum",i,{keepDims:!!c,noopWithEmptyAxes:!!f,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},936492:(i,c,f,S,O)=>{a.Ea("ReduceSumSquare",i,{keepDims:!!c,noopWithEmptyAxes:!!f,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},936656:(i,c,f,S,O)=>{a.Ea("ReduceLogSumExp",i,{keepDims:!!c,noopWithEmptyAxes:!!f,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},936820:i=>{a.Ea("Where",i,void 0)},936873:(i,c,f)=>{a.Ea("Transpose",i,{perm:c?Array.from(n().subarray(c>>>0,f>>>0)):[]})},936981:(i,c,f,S,O,D,W,ie,ne,oe,pe,xe,Te,k,me)=>{a.Ea("ConvTranspose",i,{format:ne?"NHWC":"NCHW",autoPad:c,dilations:[f],group:S,kernel_shape:[O],pads:[D,W],strides:[ie],wIsConst:()=>!!r()[oe>>>0],outputPadding:pe?Array.from(n().subarray(pe>>>0,xe>>>0)):[],outputShape:Te?Array.from(n().subarray(Te>>>0,k>>>0)):[],activation:Ye(me)})},937383:(i,c,f,S,O,D,W,ie,ne,oe,pe,xe,Te,k)=>{a.Ea("ConvTranspose",i,{format:ie?"NHWC":"NCHW",autoPad:c,dilations:Array.from(n().subarray(f>>>0,(f>>>0)+2>>>0)),group:S,kernelShape:Array.from(n().subarray(O>>>0,(O>>>0)+2>>>0)),pads:Array.from(n().subarray(D>>>0,(D>>>0)+4>>>0)),strides:Array.from(n().subarray(W>>>0,(W>>>0)+2>>>0)),wIsConst:()=>!!r()[ne>>>0],outputPadding:oe?Array.from(n().subarray(oe>>>0,pe>>>0)):[],outputShape:xe?Array.from(n().subarray(xe>>>0,Te>>>0)):[],activation:Ye(k)})},937948:(i,c,f,S,O,D,W,ie,ne,oe,pe,xe,Te,k,me)=>{a.Ea("ConvTranspose",i,{format:ne?"NHWC":"NCHW",autoPad:c,dilations:[f],group:S,kernel_shape:[O],pads:[D,W],strides:[ie],wIsConst:()=>!!r()[oe>>>0],outputPadding:pe?Array.from(n().subarray(pe>>>0,xe>>>0)):[],outputShape:Te?Array.from(n().subarray(Te>>>0,k>>>0)):[],activation:Ye(me)})},938350:(i,c,f,S,O,D,W,ie,ne,oe,pe,xe,Te,k)=>{a.Ea("ConvTranspose",i,{format:ie?"NHWC":"NCHW",autoPad:c,dilations:Array.from(n().subarray(f>>>0,(f>>>0)+2>>>0)),group:S,kernelShape:Array.from(n().subarray(O>>>0,(O>>>0)+2>>>0)),pads:Array.from(n().subarray(D>>>0,(D>>>0)+4>>>0)),strides:Array.from(n().subarray(W>>>0,(W>>>0)+2>>>0)),wIsConst:()=>!!r()[ne>>>0],outputPadding:oe?Array.from(n().subarray(oe>>>0,pe>>>0)):[],outputShape:xe?Array.from(n().subarray(xe>>>0,Te>>>0)):[],activation:Ye(k)})},938915:(i,c)=>{a.Ea("GlobalAveragePool",i,{format:c?"NHWC":"NCHW"})},939006:(i,c,f,S,O,D,W,ie,ne,oe,pe,xe,Te,k,me,Ce)=>{a.Ea("AveragePool",i,{format:Ce?"NHWC":"NCHW",auto_pad:c,ceil_mode:f,count_include_pad:S,storage_order:O,dilations:[D,W],kernel_shape:[ie,ne],pads:[oe,pe,xe,Te],strides:[k,me]})},939290:(i,c)=>{a.Ea("GlobalAveragePool",i,{format:c?"NHWC":"NCHW"})},939381:(i,c,f,S,O,D,W,ie,ne,oe,pe,xe,Te,k,me,Ce)=>{a.Ea("AveragePool",i,{format:Ce?"NHWC":"NCHW",auto_pad:c,ceil_mode:f,count_include_pad:S,storage_order:O,dilations:[D,W],kernel_shape:[ie,ne],pads:[oe,pe,xe,Te],strides:[k,me]})},939665:(i,c)=>{a.Ea("GlobalMaxPool",i,{format:c?"NHWC":"NCHW"})},939752:(i,c,f,S,O,D,W,ie,ne,oe,pe,xe,Te,k,me,Ce)=>{a.Ea("MaxPool",i,{format:Ce?"NHWC":"NCHW",auto_pad:c,ceil_mode:f,count_include_pad:S,storage_order:O,dilations:[D,W],kernel_shape:[ie,ne],pads:[oe,pe,xe,Te],strides:[k,me]})},940032:(i,c)=>{a.Ea("GlobalMaxPool",i,{format:c?"NHWC":"NCHW"})},940119:(i,c,f,S,O,D,W,ie,ne,oe,pe,xe,Te,k,me,Ce)=>{a.Ea("MaxPool",i,{format:Ce?"NHWC":"NCHW",auto_pad:c,ceil_mode:f,count_include_pad:S,storage_order:O,dilations:[D,W],kernel_shape:[ie,ne],pads:[oe,pe,xe,Te],strides:[k,me]})},940399:(i,c,f,S,O)=>{a.Ea("Gemm",i,{alpha:c,beta:f,transA:S,transB:O})},940503:i=>{a.Ea("MatMul",i,void 0)},940557:(i,c,f,S)=>{a.Ea("ArgMax",i,{keepDims:!!c,selectLastIndex:!!f,axis:S})},940665:(i,c,f,S)=>{a.Ea("ArgMin",i,{keepDims:!!c,selectLastIndex:!!f,axis:S})},940773:(i,c)=>{a.Ea("Softmax",i,{axis:c})},940836:(i,c)=>{a.Ea("Concat",i,{axis:c})},940896:(i,c,f,S,O)=>{a.Ea("Split",i,{axis:c,numOutputs:f,splitSizes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},941036:i=>{a.Ea("Expand",i,void 0)},941090:(i,c)=>{a.Ea("Gather",i,{axis:Number(c)})},941161:(i,c)=>{a.Ea("GatherElements",i,{axis:Number(c)})},941240:(i,c,f,S,O,D,W,ie,ne,oe,pe)=>{a.Ea("Resize",i,{antialias:c,axes:f?Array.from(n().subarray(f>>>0,S>>>0)):[],coordinateTransformMode:Ye(O),cubicCoeffA:D,excludeOutside:W,extrapolationValue:ie,keepAspectRatioPolicy:Ye(ne),mode:Ye(oe),nearestMode:Ye(pe)})},941586:(i,c,f,S,O,D,W)=>{a.Ea("Slice",i,{starts:c?Array.from(n().subarray(c>>>0,f>>>0)):[],ends:S?Array.from(n().subarray(S>>>0,O>>>0)):[],axes:D?Array.from(n().subarray(D>>>0,W>>>0)):[]})},941802:i=>{a.Ea("Tile",i,void 0)},941854:(i,c,f)=>{a.Ea("LayerNormalization",i,{axis:Number(c),epsilon:Number(f)})},941961:(i,c,f)=>{a.Ea("InstanceNormalization",i,{epsilon:c,format:f?"NHWC":"NCHW"})},942075:(i,c,f)=>{a.Ea("InstanceNormalization",i,{epsilon:c,format:f?"NHWC":"NCHW"})},942189:i=>{a.Ea("Range",i,void 0)},942242:(i,c)=>{a.Ea("Einsum",i,{equation:Ye(c)})},942323:(i,c,f,S,O)=>{a.Ea("Pad",i,{mode:c,value:f,pads:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},942450:(i,c,f,S,O,D)=>{a.Ea("BatchNormalization",i,{epsilon:c,momentum:f,spatial:!!O,trainingMode:!!S,format:D?"NHWC":"NCHW"})},942619:(i,c,f,S,O,D)=>{a.Ea("BatchNormalization",i,{epsilon:c,momentum:f,spatial:!!O,trainingMode:!!S,format:D?"NHWC":"NCHW"})},942788:(i,c,f)=>{a.Ea("CumSum",i,{exclusive:Number(c),reverse:Number(f)})},942885:(i,c,f,S,O,D,W,ie,ne)=>{a.Ea("Attention",i,{numHeads:c,isUnidirectional:f,maskFilterValue:S,scale:O,doRotary:D,qkvHiddenSizes:W?Array.from(n().subarray(Number(ie)>>>0,Number(ie)+W>>>0)):[],pastPresentShareBuffer:!!ne})},943157:i=>{a.Ea("Gelu",i,void 0)},943209:(i,c,f,S,O,D)=>{a.Ea("MultiHeadAttention",i,{numHeads:c,isUnidirectional:f,maskFilterValue:S,scale:O,doRotary:D})},943368:i=>{a.Ea("BiasAdd",i,void 0)},943423:i=>{a.Ea("BiasSplitGelu",i,void 0)},943484:(i,c)=>{a.Ea("SkipLayerNormalization",i,{epsilon:c})},943565:(i,c,f,S,O,D,W,ie,ne,oe,pe,xe,Te)=>{a.Ea("Conv",i,{format:ne?"NHWC":"NCHW",auto_pad:c,dilations:[f],group:S,kernel_shape:[O],pads:D?Array.from(n().subarray(D>>>0,W>>>0)):[],strides:[ie],w_is_const:()=>!!r()[oe>>>0],activation:Ye(pe),activation_params:xe?Array.from(u().subarray(xe>>>0,Te>>>0)):[]})},943935:(i,c,f,S,O,D,W,ie,ne,oe,pe,xe,Te,k,me,Ce)=>{a.Ea("Conv",i,{format:xe?"NHWC":"NCHW",auto_pad:c,dilations:[f,S],group:O,kernel_shape:[D,W],pads:ie?Array.from(n().subarray(ie>>>0,ne>>>0)):[],strides:[oe,pe],w_is_const:()=>!!r()[Te>>>0],activation:Ye(k),activation_params:me?Array.from(u().subarray(me>>>0,Ce>>>0)):[]})},944326:i=>{a.zb(i)},944360:(i,c)=>a.Ab(i,c,a.bb.Cb,a.bb.errors)};function Ut(i){this.name="ExitStatus",this.message=`Program terminated with exit(${i})`,this.status=i}var Tt=i=>{i.terminate(),i.onmessage=()=>{}},Kt=i=>{de.Ya.length==0&&(ot(),de.lb(de.Ya[0]));var c=de.Ya.pop();if(!c)return 6;de.Za.push(c),de.Qa[i.Xa]=c,c.Xa=i.Xa;var f={cmd:"run",start_routine:i.Db,arg:i.tb,pthread_ptr:i.Xa};return I&&c.unref(),c.postMessage(f,i.Jb),0},nt=0,Yt=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,Vt=(i,c,f)=>{c>>>=0;var S=c+f;for(f=c;i[f]&&!(f>=S);)++f;if(16O?S+=String.fromCharCode(O):(O-=65536,S+=String.fromCharCode(55296|O>>10,56320|O&1023))}}else S+=String.fromCharCode(O)}return S},Ye=(i,c)=>(i>>>=0)?Vt(o(),i,c):"",br=i=>{var c=mn();return i=i(),kr(c),i};function Oe(i,c){var f=arguments.length-2,S=arguments;return br(()=>{for(var O=fn(8*f),D=O>>>3,W=0;W>>0]=ie}return po(i,f,O,c)})}function wr(i){if($)return Oe(0,1,i);Pe=i,0{if(Pe=i,$)throw Zt(i),"unwind";wr(i)},St=i=>{i instanceof Ut||i=="unwind"||w(1,i)};function un(){for(var i=a.numThreads;i--;)ot();ee.unshift(()=>{ze++,tt(()=>wt())})}function ot(){var i=E("ort-wasm-simd-threaded.worker.js");i=new Worker(i),de.Ya.push(i)}function tt(i){$?i():Promise.all(de.Ya.map(de.lb)).then(i)}var de={Ya:[],Za:[],pb:[],Qa:{},hb(){$?(de.receiveObjectTransfer=de.Bb,de.threadInitTLS=de.ob,de.setExitStatus=de.nb):un()},nb:i=>Pe=i,Nb:["$terminateWorker"],Eb:()=>{for(var i of de.Za)Tt(i);for(i of de.Ya)Tt(i);de.Ya=[],de.Za=[],de.Qa=[]},mb:i=>{var c=i.Xa;delete de.Qa[c],de.Ya.push(i),de.Za.splice(de.Za.indexOf(i),1),i.Xa=0,cn(c)},Bb(){},ob(){de.pb.forEach(i=>i())},lb:i=>new Promise(c=>{i.onmessage=D=>{D=D.data;var W=D.cmd;if(D.targetThread&&D.targetThread!=Pr()){var ie=de.Qa[D.targetThread];ie?ie.postMessage(D,D.transferList):K(`Internal error! Worker sent a message "${W}" to target pthread ${D.targetThread}, but that thread no longer exists!`)}else W==="checkMailbox"?Et():W==="spawnThread"?Kt(D):W==="cleanupThread"?de.mb(de.Qa[D.thread]):W==="killThread"?(D=D.thread,W=de.Qa[D],delete de.Qa[D],Tt(W),cn(D),de.Za.splice(de.Za.indexOf(W),1),W.Xa=0):W==="cancelThread"?de.Qa[D.thread].postMessage({cmd:"cancel"}):W==="loaded"?(i.loaded=!0,I&&!i.Xa&&i.unref(),c(i)):W==="alert"?alert(`Thread ${D.threadId}: ${D.text}`):D.target==="setimmediate"?i.postMessage(D):W==="callHandler"?a[D.handler](...D.args):W&&K(`worker sent an unknown command ${W}`)},i.onerror=D=>{throw K(`worker sent an error! ${D.filename}:${D.lineno}: ${D.message}`),D},I&&(i.on("message",D=>i.onmessage({data:D})),i.on("error",D=>i.onerror(D)));var f=[],S=["onExit"],O;for(O of S)a.hasOwnProperty(O)&&f.push(O);i.postMessage({cmd:"load",handlers:f,urlOrBlob:a.mainScriptUrlOrBlob||e,wasmMemory:Q,wasmModule:Z})})};a.PThread=de;var bt=i=>{for(;0{var i=Pr(),c=s()[i+52>>>2>>>0];i=s()[i+56>>>2>>>0],ho(c,c-i),kr(c)};function Zt(i){if($)return Oe(1,0,i);Nt(i)}a.invokeEntryPoint=(i,c)=>{i=go.apply(null,[i,c]),0>>2>>>0]=c},this.rb=function(c){s()[this.gb+8>>>2>>>0]=c},this.hb=function(c,f){this.qb(),this.sb(c),this.rb(f)},this.qb=function(){s()[this.gb+16>>>2>>>0]=0}}var $r=0,Qt=0;function Sr(i,c,f,S){return $?Oe(2,1,i,c,f,S):xr(i,c,f,S)}function xr(i,c,f,S){if(i>>>=0,c>>>=0,f>>>=0,S>>>=0,typeof SharedArrayBuffer>"u")return K("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;var O=[];return $&&O.length===0?Sr(i,c,f,S):(i={Db:f,Xa:i,tb:S,Jb:O},$?(i.Lb="spawnThread",postMessage(i,O),0):Kt(i))}function _r(i,c,f){return $?Oe(3,1,i,c,f):0}function Cr(i,c){if($)return Oe(4,1,i,c)}var Xt=i=>{for(var c=0,f=0;f=S?c++:2047>=S?c+=2:55296<=S&&57343>=S?(c+=4,++f):c+=3}return c},Ir=(i,c,f,S)=>{if(f>>>=0,!(0=W){var ie=i.charCodeAt(++D);W=65536+((W&1023)<<10)|ie&1023}if(127>=W){if(f>=S)break;c[f++>>>0]=W}else{if(2047>=W){if(f+1>=S)break;c[f++>>>0]=192|W>>6}else{if(65535>=W){if(f+2>=S)break;c[f++>>>0]=224|W>>12}else{if(f+3>=S)break;c[f++>>>0]=240|W>>18,c[f++>>>0]=128|W>>12&63}c[f++>>>0]=128|W>>6&63}c[f++>>>0]=128|W&63}}return c[f>>>0]=0,f-O},ae=(i,c,f)=>Ir(i,o(),c,f);function Jt(i,c){if($)return Oe(5,1,i,c)}function Wt(i,c,f){if($)return Oe(6,1,i,c,f)}function er(i,c,f){return $?Oe(7,1,i,c,f):0}function tr(i,c){if($)return Oe(8,1,i,c)}function rr(i,c,f){if($)return Oe(9,1,i,c,f)}function nr(i,c,f,S){if($)return Oe(10,1,i,c,f,S)}function or(i,c,f,S){if($)return Oe(11,1,i,c,f,S)}function ar(i,c,f,S){if($)return Oe(12,1,i,c,f,S)}function ir(i){if($)return Oe(13,1,i)}function sr(i,c){if($)return Oe(14,1,i,c)}function ur(i,c,f){if($)return Oe(15,1,i,c,f)}var Ar=()=>{if(!(0>>=0,typeof Atomics.Kb=="function"&&(Atomics.Kb(n(),i>>>2,i).value.then(Et),i+=128,Atomics.store(n(),i>>>2,1))}a.__emscripten_thread_mailbox_await=xt;var Et=()=>{var i=Pr();if(i&&(xt(i),!Ee))try{mo(),Ar()}catch(c){St(c)}};a.checkMailbox=Et;var d=[],m=i=>i%4===0&&(i%100!==0||i%400===0),v=[0,31,60,91,121,152,182,213,244,274,305,335],C=[0,31,59,90,120,151,181,212,243,273,304,334];function B(i,c,f,S,O,D,W,ie){return $?Oe(16,1,i,c,f,S,O,D,W,ie):-52}function H(i,c,f,S,O,D,W){if($)return Oe(17,1,i,c,f,S,O,D,W)}var q=i=>{var c=Xt(i)+1,f=ln(c);return f&&ae(i,f,c),f},le=[],J=(i,c)=>{le.length=0;for(var f;f=o()[i++>>>0];){var S=f!=105;S&=f!=112,c+=S&&c%8?4:0,le.push(f==112?s()[c>>>2>>>0]:f==105?n()[c>>>2>>>0]:l()[c>>>3>>>0]),c+=S?8:4}return le},re={},se=()=>{if(!we){var i={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:b||"./this.program"},c;for(c in re)re[c]===void 0?delete i[c]:i[c]=re[c];var f=[];for(c in i)f.push(`${c}=${i[c]}`);we=f}return we},we;function _e(i,c){if($)return Oe(18,1,i,c);i>>>=0,c>>>=0;var f=0;return se().forEach((S,O)=>{var D=c+f;for(O=s()[i+4*O>>>2>>>0]=D,D=0;D>>0>>>0]=S.charCodeAt(D);r()[O>>>0>>>0]=0,f+=S.length+1}),0}function P(i,c){if($)return Oe(19,1,i,c);i>>>=0,c>>>=0;var f=se();s()[i>>>2>>>0]=f.length;var S=0;return f.forEach(O=>S+=O.length+1),s()[c>>>2>>>0]=S,0}function ue(i){return $?Oe(20,1,i):52}function Se(i,c,f,S){return $?Oe(21,1,i,c,f,S):52}function st(i,c,f,S,O){return $?Oe(22,1,i,c,f,S,O):70}var Tr=[null,[],[]];function to(i,c,f,S){if($)return Oe(23,1,i,c,f,S);c>>>=0,f>>>=0,S>>>=0;for(var O=0,D=0;D>>2>>>0],ie=s()[c+4>>>2>>>0];c+=8;for(var ne=0;ne>>0],pe=Tr[i];oe===0||oe===10?((i===1?Y:K)(Vt(pe,0)),pe.length=0):pe.push(oe)}O+=ie}return s()[S>>>2>>>0]=O,0}var ro=[31,29,31,30,31,30,31,31,30,31,30,31],no=[31,28,31,30,31,30,31,31,30,31,30,31];function Pu(i){var c=Array(Xt(i)+1);return Ir(i,c,0,c.length),c}var ku=(i,c)=>{r().set(i,c>>>0)};function oo(i,c,f,S){function O(k,me,Ce){for(k=typeof k=="number"?k.toString():k||"";k.lengthSo?-1:0Ot-k.getDate())me-=Ot-k.getDate()+1,k.setDate(1),11>Ce?k.setMonth(Ce+1):(k.setMonth(0),k.setFullYear(k.getFullYear()+1));else{k.setDate(k.getDate()+me);break}}return Ce=new Date(k.getFullYear()+1,0,4),me=ie(new Date(k.getFullYear(),0,4)),Ce=ie(Ce),0>=W(me,k)?0>=W(Ce,k)?k.getFullYear()+1:k.getFullYear():k.getFullYear()-1}i>>>=0,c>>>=0,f>>>=0,S>>>=0;var oe=s()[S+40>>>2>>>0];S={Hb:n()[S>>>2>>>0],Gb:n()[S+4>>>2>>>0],eb:n()[S+8>>>2>>>0],jb:n()[S+12>>>2>>>0],fb:n()[S+16>>>2>>>0],ab:n()[S+20>>>2>>>0],Wa:n()[S+24>>>2>>>0],$a:n()[S+28>>>2>>>0],Ob:n()[S+32>>>2>>>0],Fb:n()[S+36>>>2>>>0],Ib:oe?Ye(oe):""},f=Ye(f),oe={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var pe in oe)f=f.replace(new RegExp(pe,"g"),oe[pe]);var xe="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),Te="January February March April May June July August September October November December".split(" ");oe={"%a":k=>xe[k.Wa].substring(0,3),"%A":k=>xe[k.Wa],"%b":k=>Te[k.fb].substring(0,3),"%B":k=>Te[k.fb],"%C":k=>D((k.ab+1900)/100|0,2),"%d":k=>D(k.jb,2),"%e":k=>O(k.jb,2," "),"%g":k=>ne(k).toString().substring(2),"%G":k=>ne(k),"%H":k=>D(k.eb,2),"%I":k=>(k=k.eb,k==0?k=12:12{for(var me=0,Ce=0;Ce<=k.fb-1;me+=(m(k.ab+1900)?ro:no)[Ce++]);return D(k.jb+me,3)},"%m":k=>D(k.fb+1,2),"%M":k=>D(k.Gb,2),"%n":()=>`\n`,"%p":k=>0<=k.eb&&12>k.eb?"AM":"PM","%S":k=>D(k.Hb,2),"%t":()=>" ","%u":k=>k.Wa||7,"%U":k=>D(Math.floor((k.$a+7-k.Wa)/7),2),"%V":k=>{var me=Math.floor((k.$a+7-(k.Wa+6)%7)/7);if(2>=(k.Wa+371-k.$a-2)%7&&me++,me)me==53&&(Ce=(k.Wa+371-k.$a)%7,Ce==4||Ce==3&&m(k.ab)||(me=1));else{me=52;var Ce=(k.Wa+7-k.$a-1)%7;(Ce==4||Ce==5&&m(k.ab%400-1))&&me++}return D(me,2)},"%w":k=>k.Wa,"%W":k=>D(Math.floor((k.$a+7-(k.Wa+6)%7)/7),2),"%y":k=>(k.ab+1900).toString().substring(2),"%Y":k=>k.ab+1900,"%z":k=>{k=k.Fb;var me=0<=k;return k=Math.abs(k)/60,(me?"+":"-")+("0000"+(k/60*100+k%60)).slice(-4)},"%Z":k=>k.Ib,"%%":()=>"%"},f=f.replace(/%%/g,"\\0\\0");for(pe in oe)f.includes(pe)&&(f=f.replace(new RegExp(pe,"g"),oe[pe](S)));return f=f.replace(/\\0\\0/g,"%"),pe=Pu(f),pe.length>c?0:(ku(pe,i),pe.length-1)}var Er=i=>{try{i()}catch(c){rt(c)}};function Ru(){var i=X,c={};for(let[f,S]of Object.entries(i))c[f]=typeof S=="function"?function(){Or.push(f);try{return S.apply(null,arguments)}finally{Ee||(Or.pop(),ut&&_t===1&&Or.length===0&&(_t=0,nt+=1,Er(bo),typeof Fibers<"u"&&Fibers.Pb()))}}:S;return c}var _t=0,ut=null,ao=0,Or=[],io={},so={},Bu=0,dn=null,Du=[];function Mu(){return new Promise((i,c)=>{dn={resolve:i,reject:c}})}function zu(){var i=ln(65548),c=i+12;s()[i>>>2>>>0]=c,s()[i+4>>>2>>>0]=c+65536,c=Or[0];var f=io[c];return f===void 0&&(f=Bu++,io[c]=f,so[f]=c),c=f,n()[i+8>>>2>>>0]=c,i}function Uu(){var i=n()[ut+8>>>2>>>0];return i=X[so[i]],--nt,i()}function Vu(i){if(!Ee){if(_t===0){var c=!1,f=!1;i((S=0)=>{if(!Ee&&(ao=S,c=!0,f)){_t=2,Er(()=>wo(ut)),typeof Browser<"u"&&Browser.ib.vb&&Browser.ib.resume(),S=!1;try{var O=Uu()}catch(ie){O=ie,S=!0}var D=!1;if(!ut){var W=dn;W&&(dn=null,(S?W.reject:W.resolve)(O),D=!0)}if(S&&!D)throw O}}),f=!0,c||(_t=1,ut=zu(),typeof Browser<"u"&&Browser.ib.vb&&Browser.ib.pause(),Er(()=>yo(ut)))}else _t===2?(_t=0,Er(vo),lo(ut),ut=null,Du.forEach(S=>{if(!Ee)try{S(),Ar()}catch(O){St(O)}})):rt(`invalid state: ${_t}`);return ao}}function Nu(i){return Vu(c=>{i().then(c)})}de.hb();var Wu=[wr,Zt,Sr,_r,Cr,Jt,Wt,er,tr,rr,nr,or,ar,ir,sr,ur,B,H,_e,P,ue,Se,st,to],Hu={r:function(i,c,f){return Nu(async()=>{await a.xb(i,c,f)})},b:function(i,c,f){throw i>>>=0,new vr(i).hb(c>>>0,f>>>0),$r=i,Qt++,$r},N:function(i){co(i>>>0,!_,1,!y,131072,!1),de.ob()},l:function(i){i>>>=0,$?postMessage({cmd:"cleanupThread",thread:i}):de.mb(de.Qa[i])},J:xr,i:_r,T:Cr,F:Jt,H:Wt,U:er,R:tr,L:rr,Q:nr,p:or,G:ar,D:ir,S:sr,E:ur,q:()=>1,B:function(i,c){i>>>=0,i==c>>>0?setTimeout(()=>Et()):$?postMessage({targetThread:i,cmd:"checkMailbox"}):(i=de.Qa[i])&&i.postMessage({cmd:"checkMailbox"})},K:function(i,c,f,S){c>>>=0,d.length=f,S=S>>>0>>>3;for(var O=0;O>>0];return i=0>i?zt[-i-1]:Wu[i],de.ub=c,c=i.apply(null,d),de.ub=0,c},M:xt,W:function(i){I&&de.Qa[i>>>0].ref()},u:function(i,c,f){i=c+2097152>>>0<4194305-!!i?(i>>>0)+4294967296*c:NaN,f>>>=0,i=new Date(1e3*i),n()[f>>>2>>>0]=i.getUTCSeconds(),n()[f+4>>>2>>>0]=i.getUTCMinutes(),n()[f+8>>>2>>>0]=i.getUTCHours(),n()[f+12>>>2>>>0]=i.getUTCDate(),n()[f+16>>>2>>>0]=i.getUTCMonth(),n()[f+20>>>2>>>0]=i.getUTCFullYear()-1900,n()[f+24>>>2>>>0]=i.getUTCDay(),i=(i.getTime()-Date.UTC(i.getUTCFullYear(),0,1,0,0,0,0))/864e5|0,n()[f+28>>>2>>>0]=i},v:function(i,c,f){i=c+2097152>>>0<4194305-!!i?(i>>>0)+4294967296*c:NaN,f>>>=0,i=new Date(1e3*i),n()[f>>>2>>>0]=i.getSeconds(),n()[f+4>>>2>>>0]=i.getMinutes(),n()[f+8>>>2>>>0]=i.getHours(),n()[f+12>>>2>>>0]=i.getDate(),n()[f+16>>>2>>>0]=i.getMonth(),n()[f+20>>>2>>>0]=i.getFullYear()-1900,n()[f+24>>>2>>>0]=i.getDay(),c=(m(i.getFullYear())?v:C)[i.getMonth()]+i.getDate()-1|0,n()[f+28>>>2>>>0]=c,n()[f+36>>>2>>>0]=-(60*i.getTimezoneOffset()),c=new Date(i.getFullYear(),6,1).getTimezoneOffset();var S=new Date(i.getFullYear(),0,1).getTimezoneOffset();i=(c!=S&&i.getTimezoneOffset()==Math.min(S,c))|0,n()[f+32>>>2>>>0]=i},w:function(i){i>>>=0;var c=new Date(n()[i+20>>>2>>>0]+1900,n()[i+16>>>2>>>0],n()[i+12>>>2>>>0],n()[i+8>>>2>>>0],n()[i+4>>>2>>>0],n()[i>>>2>>>0],0),f=n()[i+32>>>2>>>0],S=c.getTimezoneOffset(),O=new Date(c.getFullYear(),6,1).getTimezoneOffset(),D=new Date(c.getFullYear(),0,1).getTimezoneOffset(),W=Math.min(D,O);return 0>f?n()[i+32>>>2>>>0]=+(O!=D&&W==S):0>>2>>>0]=c.getDay(),f=(m(c.getFullYear())?v:C)[c.getMonth()]+c.getDate()-1|0,n()[i+28>>>2>>>0]=f,n()[i>>>2>>>0]=c.getSeconds(),n()[i+4>>>2>>>0]=c.getMinutes(),n()[i+8>>>2>>>0]=c.getHours(),n()[i+12>>>2>>>0]=c.getDate(),n()[i+16>>>2>>>0]=c.getMonth(),n()[i+20>>>2>>>0]=c.getYear(),i=c.getTime(),isNaN(i)?(n()[uo()>>>2>>>0]=61,i=-1):i/=1e3,fo((yt=i,1<=+Math.abs(yt)?0>>0:~~+Math.ceil((yt-+(~~yt>>>0))/4294967296)>>>0:0)),i>>>0},s:B,t:H,A:function(i,c,f){function S(oe){return(oe=oe.toTimeString().match(/\\(([A-Za-z ]+)\\)$/))?oe[1]:"GMT"}i>>>=0,c>>>=0,f>>>=0;var O=new Date().getFullYear(),D=new Date(O,0,1),W=new Date(O,6,1);O=D.getTimezoneOffset();var ie=W.getTimezoneOffset(),ne=Math.max(O,ie);s()[i>>>2>>>0]=60*ne,n()[c>>>2>>>0]=+(O!=ie),i=S(D),c=S(W),i=q(i),c=q(c),ie>>2>>>0]=i,s()[f+4>>>2>>>0]=c):(s()[f>>>2>>>0]=c,s()[f+4>>>2>>>0]=i)},d:()=>{rt("")},c:function(i,c,f){return i>>>=0,c=J(c>>>0,f>>>0),zt[i].apply(null,c)},k:function(i,c,f){return i>>>=0,c=J(c>>>0,f>>>0),zt[i].apply(null,c)},m:()=>{},j:()=>Date.now(),V:()=>{throw nt+=1,"unwind"},C:function(){return 4294901760},f:()=>performance.timeOrigin+performance.now(),g:()=>I?(Oo(),Ht(Eo)).cpus().length:navigator.hardwareConcurrency,y:function(i){i>>>=0;var c=o().length;if(i<=c||4294901760=f;f*=2){var S=c*(1+.2/f);S=Math.min(S,i+100663296);var O=Math;S=Math.max(i,S);e:{O=(O.min.call(O,4294901760,S+(65536-S%65536)%65536)-Q.buffer.byteLength+65535)/65536;try{Q.grow(O),Ge();var D=1;break e}catch{}D=void 0}if(D)return!0}return!1},O:_e,P,I:Nt,h:ue,o:Se,x:st,n:to,a:Q||a.wasmMemory,z:oo,e:function(i,c,f,S){return oo(i>>>0,c>>>0,f>>>0,S>>>0)}},X=function(){function i(f,S){return X=f.exports,X=Ru(),X=Gu(),de.pb.push(X.Da),be.unshift(X.X),Z=S,wt(),X}var c={a:Hu};if(ze++,a.instantiateWasm)try{return a.instantiateWasm(c,i)}catch(f){K(`Module.instantiateWasm callback failed with error: ${f}`),h(f)}return $t(c,function(f){i(f.instance,f.module)}).catch(h),{}}();a._OrtInit=(i,c)=>(a._OrtInit=X.Y)(i,c),a._OrtGetLastError=(i,c)=>(a._OrtGetLastError=X.Z)(i,c),a._OrtCreateSessionOptions=(i,c,f,S,O,D,W,ie,ne,oe)=>(a._OrtCreateSessionOptions=X._)(i,c,f,S,O,D,W,ie,ne,oe),a._OrtAppendExecutionProvider=(i,c)=>(a._OrtAppendExecutionProvider=X.$)(i,c),a._OrtAddFreeDimensionOverride=(i,c,f)=>(a._OrtAddFreeDimensionOverride=X.aa)(i,c,f),a._OrtAddSessionConfigEntry=(i,c,f)=>(a._OrtAddSessionConfigEntry=X.ba)(i,c,f),a._OrtReleaseSessionOptions=i=>(a._OrtReleaseSessionOptions=X.ca)(i),a._OrtCreateSession=(i,c,f)=>(a._OrtCreateSession=X.da)(i,c,f),a._OrtReleaseSession=i=>(a._OrtReleaseSession=X.ea)(i),a._OrtGetInputOutputCount=(i,c,f)=>(a._OrtGetInputOutputCount=X.fa)(i,c,f),a._OrtGetInputName=(i,c)=>(a._OrtGetInputName=X.ga)(i,c),a._OrtGetOutputName=(i,c)=>(a._OrtGetOutputName=X.ha)(i,c),a._OrtFree=i=>(a._OrtFree=X.ia)(i),a._OrtCreateTensor=(i,c,f,S,O,D)=>(a._OrtCreateTensor=X.ja)(i,c,f,S,O,D),a._OrtGetTensorData=(i,c,f,S,O)=>(a._OrtGetTensorData=X.ka)(i,c,f,S,O),a._OrtReleaseTensor=i=>(a._OrtReleaseTensor=X.la)(i),a._OrtCreateRunOptions=(i,c,f,S)=>(a._OrtCreateRunOptions=X.ma)(i,c,f,S),a._OrtAddRunConfigEntry=(i,c,f)=>(a._OrtAddRunConfigEntry=X.na)(i,c,f),a._OrtReleaseRunOptions=i=>(a._OrtReleaseRunOptions=X.oa)(i),a._OrtCreateBinding=i=>(a._OrtCreateBinding=X.pa)(i),a._OrtBindInput=(i,c,f)=>(a._OrtBindInput=X.qa)(i,c,f),a._OrtBindOutput=(i,c,f,S)=>(a._OrtBindOutput=X.ra)(i,c,f,S),a._OrtClearBoundOutputs=i=>(a._OrtClearBoundOutputs=X.sa)(i),a._OrtReleaseBinding=i=>(a._OrtReleaseBinding=X.ta)(i),a._OrtRunWithBinding=(i,c,f,S,O)=>(a._OrtRunWithBinding=X.ua)(i,c,f,S,O),a._OrtRun=(i,c,f,S,O,D,W,ie)=>(a._OrtRun=X.va)(i,c,f,S,O,D,W,ie),a._OrtEndProfiling=i=>(a._OrtEndProfiling=X.wa)(i),a._JsepOutput=(i,c,f)=>(a._JsepOutput=X.xa)(i,c,f),a._JsepGetNodeName=i=>(a._JsepGetNodeName=X.ya)(i);var uo=()=>(uo=X.za)(),Pr=a._pthread_self=()=>(Pr=a._pthread_self=X.Aa)(),ln=a._malloc=i=>(ln=a._malloc=X.Ba)(i),lo=a._free=i=>(lo=a._free=X.Ca)(i);a.__emscripten_tls_init=()=>(a.__emscripten_tls_init=X.Da)();var co=a.__emscripten_thread_init=(i,c,f,S,O,D)=>(co=a.__emscripten_thread_init=X.Fa)(i,c,f,S,O,D);a.__emscripten_thread_crashed=()=>(a.__emscripten_thread_crashed=X.Ga)();var po=(i,c,f,S)=>(po=X.Ha)(i,c,f,S),cn=i=>(cn=X.Ia)(i),pn=a.__emscripten_thread_exit=i=>(pn=a.__emscripten_thread_exit=X.Ja)(i),mo=()=>(mo=X.Ka)(),fo=i=>(fo=X.La)(i),ho=(i,c)=>(ho=X.Ma)(i,c),mn=()=>(mn=X.Na)(),kr=i=>(kr=X.Oa)(i),fn=i=>(fn=X.Pa)(i),go=a.dynCall_ii=(i,c)=>(go=a.dynCall_ii=X.Ra)(i,c),yo=i=>(yo=X.Sa)(i),bo=()=>(bo=X.Ta)(),wo=i=>(wo=X.Ua)(i),vo=()=>(vo=X.Va)();a.___start_em_js=944472,a.___stop_em_js=944633;function Gu(){var i=X;i=Object.assign({},i);var c=S=>()=>S()>>>0,f=S=>O=>S(O)>>>0;return i.za=c(i.za),i.Aa=c(i.Aa),i.Ba=f(i.Ba),i.emscripten_main_runtime_thread_id=c(i.emscripten_main_runtime_thread_id),i.Na=c(i.Na),i.Pa=f(i.Pa),i}a.wasmMemory=Q,a.stackAlloc=fn,a.stackSave=mn,a.stackRestore=kr,a.keepRuntimeAlive=()=>0Po)});var Bo=dr((qc,Xu)=>{Xu.exports=\'"use strict";var Module={},ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";if(ENVIRONMENT_IS_NODE){var nodeWorkerThreads=require("worker_threads"),parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",e=>onmessage({data:e}));var fs=require("fs"),vm=require("vm");Object.assign(global,{self:global,require,Module,location:{href:__filename},Worker:nodeWorkerThreads.Worker,importScripts:e=>vm.runInThisContext(fs.readFileSync(e,"utf8"),{filename:e}),postMessage:e=>parentPort.postMessage(e),performance:global.performance||{now:Date.now}})}var initializedJS=!1;function threadPrintErr(){var e=Array.prototype.slice.call(arguments).join(" ");if(ENVIRONMENT_IS_NODE){fs.writeSync(2,e+`\\n`);return}console.error(e)}function threadAlert(){var e=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:e,threadId:Module._pthread_self()})}var err=threadPrintErr;self.alert=threadAlert,Module.instantiateWasm=(e,t)=>{var a=Module.wasmModule;Module.wasmModule=null;var r=new WebAssembly.Instance(a,e);return t(r)},self.onunhandledrejection=e=>{throw e.reason||e};function handleMessage(e){try{if(e.data.cmd==="load"){let a=[];self.onmessage=r=>a.push(r),self.startWorker=r=>{Module=r,postMessage({cmd:"loaded"});for(let s of a)handleMessage(s);self.onmessage=handleMessage},Module.wasmModule=e.data.wasmModule;for(const r of e.data.handlers)Module[r]=(...s)=>{postMessage({cmd:"callHandler",handler:r,args:s})};if(Module.wasmMemory=e.data.wasmMemory,Module.buffer=Module.wasmMemory.buffer,Module.ENVIRONMENT_IS_PTHREAD=!0,typeof e.data.urlOrBlob=="string")importScripts(e.data.urlOrBlob);else{var t=URL.createObjectURL(e.data.urlOrBlob);importScripts(t),URL.revokeObjectURL(t)}ortWasmThreaded(Module)}else if(e.data.cmd==="run"){Module.__emscripten_thread_init(e.data.pthread_ptr,0,0,1),Module.__emscripten_thread_mailbox_await(e.data.pthread_ptr),Module.establishStackSpace(),Module.PThread.receiveObjectTransfer(e.data),Module.PThread.threadInitTLS(),initializedJS||(initializedJS=!0);try{Module.invokeEntryPoint(e.data.start_routine,e.data.arg)}catch(a){if(a!="unwind")throw a}}else e.data.cmd==="cancel"?Module._pthread_self()&&Module.__emscripten_thread_exit(-1):e.data.target==="setimmediate"||(e.data.cmd==="checkMailbox"?initializedJS&&Module.checkMailbox():e.data.cmd&&(err(`worker.js received unknown command ${e.data.cmd}`),err(e.data)))}catch(a){throw Module.__emscripten_thread_crashed?.(),a}}self.onmessage=handleMessage;\\n\'});var _n,Xe,cr,Mr,pr,No,Cn,Ne=j(()=>{"use strict";_n=e=>{switch(e){case"int8":return 3;case"uint8":return 2;case"bool":return 9;case"int16":return 5;case"uint16":return 4;case"int32":return 6;case"uint32":return 12;case"float16":return 10;case"float32":return 1;case"float64":return 11;case"string":return 8;case"int64":return 7;case"uint64":return 13;default:throw new Error(`unsupported data type: ${e}`)}},Xe=e=>{switch(e){case 3:return"int8";case 2:return"uint8";case 9:return"bool";case 5:return"int16";case 4:return"uint16";case 6:return"int32";case 12:return"uint32";case 10:return"float16";case 1:return"float32";case 11:return"float64";case 8:return"string";case 7:return"int64";case 13:return"uint64";default:throw new Error(`unsupported data type: ${e}`)}},cr=e=>[void 0,4,1,1,2,2,4,8,void 0,1,2,8,4,8,void 0,void 0,void 0][e],Mr=e=>{switch(e){case"float16":return Uint16Array;case"float32":return Float32Array;case"uint8":return Uint8Array;case"int8":return Int8Array;case"uint16":return Uint16Array;case"int16":return Int16Array;case"int32":return Int32Array;case"bool":return Uint8Array;case"float64":return Float64Array;case"uint32":return Uint32Array;case"int64":return BigInt64Array;case"uint64":return BigUint64Array;default:throw new Error(`unsupported type: ${e}`)}},pr=e=>{switch(e){case"verbose":return 0;case"info":return 1;case"warning":return 2;case"error":return 3;case"fatal":return 4;default:throw new Error(`unsupported logging level: ${e}`)}},No=e=>e==="float32"||e==="int32"||e==="int64"||e==="bool"||e==="float16"||e==="uint32",Cn=e=>{switch(e){case"none":return 0;case"cpu":return 1;case"cpu-pinned":return 2;case"texture":return 3;case"gpu-buffer":return 4;default:throw new Error(`unsupported data location: ${e}`)}}});var zr=j(()=>{"use strict"});var Ho=j(()=>{"use strict";zr()});var Go,Lo=j(()=>{"use strict";Go="1.17.1"});var Fo,Pt,In=j(()=>{"use strict";Lo();Fo="warning",Pt={wasm:{},webgl:{},webgpu:{},versions:{common:Go},set logLevel(e){if(e!==void 0){if(typeof e!="string"||["verbose","info","warning","error","fatal"].indexOf(e)===-1)throw new Error(`Unsupported logging level: ${e}`);Fo=e}},get logLevel(){return Fo}};Object.defineProperty(Pt,"logLevel",{enumerable:!0})});var Gt,jo=j(()=>{"use strict";In();Gt=Pt});var qo=j(()=>{"use strict"});var Ko=j(()=>{"use strict";Ur()});var Zo=j(()=>{"use strict"});var Qo=j(()=>{"use strict";Ur()});var Ur=j(()=>{"use strict";qo();Ko();Zo();Qo()});var Vr=j(()=>{"use strict";Ur()});var An,Xo,kt,Rt,Tn=j(()=>{"use strict";In();An=(e,t)=>{Pt.wasm.trace&&console.timeStamp(`${e}::ORT::${t}`)},Xo=(e,t)=>{let r=new Error().stack?.split(/\\r\\n|\\r|\\n/g)||[],o=!1;for(let n=0;n{Pt.wasm.trace&&Xo("BEGIN",e)},Rt=e=>{Pt.wasm.trace&&Xo("END",e)}});var Jo=j(()=>{"use strict";zr();Vr();Tn()});var ea=j(()=>{"use strict";Jo()});var ta=j(()=>{"use strict"});var ra=j(()=>{"use strict";zr();Vr()});var na=j(()=>{"use strict";ra()});var Lt=j(()=>{"use strict";Ho();jo();ea();Vr();Tn();ta();na()});var dd,ld,oa,aa,ia,cd,Be,Ct=j(()=>{"use strict";Ne();dd=["V","I","W","E","F"],ld=(e,t)=>{console.log(`[${dd[e]},${new Date().toISOString()}]${t}`)},ia=(e,t)=>{oa=e,aa=t},cd=(e,t)=>{let r=pr(e),o=pr(oa);r>=o&&ld(r,typeof t=="function"?t():t)},Be=(...e)=>{aa&&cd(...e)}});var sa,ua=j(()=>{"use strict";Ne();sa=(e,t)=>new(Mr(t))(e)});var Nr=j(()=>{"use strict"});var Wr,pd,da,On,En,ca,pa=j(()=>{"use strict";Ct();Nr();Wr=e=>Math.ceil(e/16)*16,pd=1,da=()=>pd++,On=async(e,t,r,o)=>{let n=Wr(r),s=e.device.createBuffer({size:n,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ});try{let u=e.getCommandEncoder();e.endComputePass(),u.copyBufferToBuffer(t,0,s,0,n),e.flush(),await s.mapAsync(GPUMapMode.READ);let l=s.getMappedRange();if(o){let a=o();return a.set(new Uint8Array(l,0,r)),a}else return new Uint8Array(l.slice(0,r))}finally{s.destroy()}},En=class{constructor(t){this.backend=t;this.storageCache=new Map,this.freeBuffers=new Map,this.freeUniformBuffers=new Map,this.buffersForUploadingPending=[],this.buffersPending=[],this.externalBuffers=new Map}upload(t,r){let o=r.buffer,n=r.byteOffset,s=r.byteLength,u=Wr(s),l=this.storageCache.get(t);if(!l)throw new Error("gpu data for uploading does not exist");if(l.originalSize!==s)throw new Error(`inconsistent data size. gpu data size=${l.originalSize}, data size=${s}`);let a=this.backend.device.createBuffer({mappedAtCreation:!0,size:u,usage:GPUBufferUsage.MAP_WRITE|GPUBufferUsage.COPY_SRC}),p=a.getMappedRange();new Uint8Array(p).set(new Uint8Array(o,n,s)),a.unmap();let h=this.backend.getCommandEncoder();this.backend.endComputePass(),h.copyBufferToBuffer(a,0,l.gpuData.buffer,0,u),Be("verbose",()=>`[WebGPU] GpuDataManager.upload(id=${t})`),this.buffersForUploadingPending.push(a)}memcpy(t,r){let o=this.storageCache.get(t);if(!o)throw new Error("source gpu data for memcpy does not exist");let n=this.storageCache.get(r);if(!n)throw new Error("destination gpu data for memcpy does not exist");if(o.originalSize!==n.originalSize)throw new Error("inconsistent source and destination gpu data size");let s=Wr(o.originalSize),u=this.backend.getCommandEncoder();this.backend.endComputePass(),u.copyBufferToBuffer(o.gpuData.buffer,0,n.gpuData.buffer,0,s)}registerExternalBuffer(t,r,o){let n;if(o){if(n=this.externalBuffers.get(o),n===void 0)throw new Error("previous buffer is not registered");if(t===o)return Be("verbose",()=>`[WebGPU] GpuDataManager.registerExternalBuffer(size=${r}) => id=${n}, buffer is the same, skip.`),n;this.externalBuffers.delete(o)}else n=da();return this.storageCache.set(n,{gpuData:{id:n,type:0,buffer:t},originalSize:r}),this.externalBuffers.set(t,n),Be("verbose",()=>`[WebGPU] GpuDataManager.registerExternalBuffer(size=${r}) => id=${n}, registered.`),n}unregisterExternalBuffer(t){let r=this.externalBuffers.get(t);r!==void 0&&(this.storageCache.delete(r),this.externalBuffers.delete(t),Be("verbose",()=>`[WebGPU] GpuDataManager.unregisterExternalBuffer() => id=${r}`))}create(t,r=GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST){let o=Wr(t),n,s=(r&GPUBufferUsage.STORAGE)===GPUBufferUsage.STORAGE,u=(r&GPUBufferUsage.UNIFORM)===GPUBufferUsage.UNIFORM;if(s||u){let a=s?this.freeBuffers:this.freeUniformBuffers,p=a.get(o);p||(p=[],a.set(o,p)),p.length>0?n=p.pop():n=this.backend.device.createBuffer({size:o,usage:r})}else n=this.backend.device.createBuffer({size:o,usage:r});let l={id:da(),type:0,buffer:n};return this.storageCache.set(l.id,{gpuData:l,originalSize:t}),Be("verbose",()=>`[WebGPU] GpuDataManager.create(size=${t}) => id=${l.id}`),l}get(t){return this.storageCache.get(t)?.gpuData}release(t){let r=this.storageCache.get(t);if(!r)throw new Error("releasing data does not exist");return Be("verbose",()=>`[WebGPU] GpuDataManager.release(id=${t}), gpuDataId=${r.gpuData.id}`),this.storageCache.delete(t),this.buffersPending.push(r.gpuData.buffer),r.originalSize}async download(t,r){let o=this.storageCache.get(t);if(!o)throw new Error("data does not exist");await On(this.backend,o.gpuData.buffer,o.originalSize,r)}refreshPendingBuffers(){for(let t of this.buffersForUploadingPending)t.destroy();this.buffersForUploadingPending=[];for(let t of this.buffersPending)(t.usage&GPUBufferUsage.STORAGE)===GPUBufferUsage.STORAGE?this.freeBuffers.get(t.size).push(t):(t.usage&GPUBufferUsage.UNIFORM)===GPUBufferUsage.UNIFORM?this.freeUniformBuffers.get(t.size).push(t):t.destroy();this.buffersPending=[]}dispose(){this.freeBuffers.forEach(t=>{t.forEach(r=>{r.destroy()})}),this.freeUniformBuffers.forEach(t=>{t.forEach(r=>{r.destroy()})}),this.storageCache.forEach(t=>{t.gpuData.buffer.destroy()}),this.storageCache=new Map,this.freeBuffers=new Map,this.freeUniformBuffers=new Map}},ca=(...e)=>new En(...e)});var Pn,ge,je=j(()=>{"use strict";Pn=class{constructor(t){Object.assign(this,t)}get cacheKey(){return this.key||(this.key=Object.getOwnPropertyNames(this).sort().map(t=>`${this[t]}`).join(";")),this.key}},ge=e=>new Pn(e)});var kn,dt,U,Bt,Hr,Gr,Lr,$e=j(()=>{"use strict";kn=class{static calcMatMulShape(t,r){return t[1]!==r[0]?void 0:[t[0],r[1]]}},dt=class{static calcShape(t,r,o=!1){let n=t.length,s=r.length;if(n===0)return r;if(s===0)return t;let u=Math.max(t.length,r.length),l=new Array(u);if(o){if(n<2||s<2)return;let a=kn.calcMatMulShape([t[n-2],t[n-1]],[r[s-2],r[s-1]]);if(a===void 0)return;[l[u-2],l[u-1]]=a}for(let a=o?3:1;a<=u;a++){let p=n-a<0?1:t[n-a],h=s-a<0?1:r[s-a];if(p!==h&&p>1&&h>1)return;l[u-a]=Math.max(p,h)}return l}static isValidBroadcast(t,r){let o=t.length,n=r.length;if(o>n)return!1;for(let s=1;s<=o;s++)if(t[o-s]!==1&&t[o-s]!==r[n-s])return!1;return!0}},U=class e{static size(t){return e.getSizeFromDimensionRange(t,0,t.length)}static sizeFromDimension(t,r){if(r<0||r>t.length)throw new Error(`invalid dimension of ${r} for sizeFromDimension as Tensor has ${t.length} dimensions.`);return e.getSizeFromDimensionRange(t,r,t.length)}static sizeToDimension(t,r){if(r<0||r>t.length)throw new Error(`invalid dimension of ${r} for sizeToDimension as Tensor has ${t.length} dimensions.`);return e.getSizeFromDimensionRange(t,0,r)}static getSizeFromDimensionRange(t,r,o){let n=1;for(let s=r;s=0;--n)o[n]=o[n+1]*t[n+1];return o}static normalizeAxis(t,r){if(t<-r&&t>=r)throw new Error("unsupported axis for this operation.");return t<0?t+r:t}static normalizeAxes(t,r){return t.map(o=>this.normalizeAxis(o,r??t.length))}static sortBasedOnPerm(t,r){return r?r.map(o=>t[o]):t.slice().reverse()}static padShape(t,r){let o=t.length;return t.map((n,s)=>n+r[s]+r[s+o])}static areEqual(t,r){return t.length!==r.length?!1:t.every((o,n)=>o===r[n])}},Bt=class e{static adjustPoolAttributes(t,r,o,n,s,u){if(!t&&o.length!==r.length-2)throw new Error("length of specified kernel shapes should be 2 less than length of input dimensions");if(t)for(let l=0;l=o.length?o.push(r[l+2]):o[l]=r[l+2];for(let l=0;l=o[l]||u[l+o.length]>=o[l])throw new Error("pads should be smaller than kernel")}}static adjustPadsBasedOnAutoPad(t,r,o,n,s,u,l){if(l){if(s.length!==2*(t.length-2))throw new Error("length of pads should be twice the length of data dimensions");if(r.length!==t.length-2)throw new Error("length of strides should be the length of data dimensions");if(n.length!==t.length-2)throw new Error("length of kernel shapes should be the length of data dimensions");for(let a=0;a{"use strict";Ne();$e();md=64,Bn=(e,t)=>{if(t===3)throw new Error("vec3 has same alignment as vec4, use vec4 instead");switch(e){case 10:return t>1?`vec${t}`:"f16";case 1:return t>1?`vec${t}`:"f32";case 6:return t>1?`vec${t}`:"i32";case 12:return t>1?`vec${t}`:"u32";case 7:if(t>1)throw new Error("currently not supported vecX of uint64 yet");return["vec2","i32"];case 13:if(t>1)throw new Error("currently not supported vecX of uint64 yet");return["vec2","u32"];case 9:if(t!==4)throw new Error("bool must be vec4");return["u32","vec4"];default:throw new Error(`Unknown data type: ${e}`)}},Le=(e,t=1)=>{let r=Bn(e,t);return typeof r=="string"?r:r[0]},lt=(e,t=1)=>{let r=Bn(e,t);return typeof r=="string"?r:r[1]},L=e=>e.length===0?[]:[{type:"uint32",data:e},{type:"uint32",data:U.computeStrides(e)}],Fe=e=>e%4===0?4:e%2===0?2:1,Ze=(e="f32",t,r="0")=>!t||t===1?`${e}(${r})`:`vec${t}<${e}>(${r})`,at=(e,t,r)=>e==="f32"?r:t===1?`f32(${r})`:`vec${t}f(${r})`,Je=(e,t)=>t===4?`(${e}.x + ${e}.y + ${e}.z + ${e}.w)`:t===2?`(${e}.x + ${e}.y)`:t===3?`(${e}.x + ${e}.y + ${e}.z)`:e,ce=(e,t,r)=>e.startsWith("uniforms.")&&r>4?typeof t=="string"?`${e}[(${t}) / 4][(${t}) % 4]`:`${e}[${Math.floor(t/4)}][${t%4}]`:r>1?`${e}[${t}]`:e,Dn=(e,t,r,o,n)=>{let s=typeof r=="number",u=s?r:r.length,l=[...new Array(u).keys()],a=u<2?"u32":u<=4?`vec${u}`:`array`,p=Bn(t,n),h=typeof p=="string"?p:p[1],g=typeof p=="string"?p:p[0],b={indices:a,value:h,storage:g,tensor:t},w=G=>typeof G=="string"?G:`${G}u`,y={offsetToIndices:!1,indicesToOffset:!1,broadcastedIndicesToOffset:!1,set:!1,setByIndices:!1,get:!1,getByIndices:!1},_=s?"uniforms.":"",I=`${_}${e}_shape`,$=`${_}${e}_strides`,x="";for(let G=0;G ${b.indices} {\n var indices: ${b.indices};\n var current = offset;\n ${x}\n return indices;\n }`,A=G=>(y.offsetToIndices=!0,u<2?G:`o2i_${e}(${G})`),z=[];if(u>=2)for(let G=u-1;G>=0;G--)z.push(`${ce($,G,u)} * (indices[${G}])`);let R=u<2?"":`\n fn i2o_${e}(indices: ${b.indices}) -> u32 {\n return ${z.join("+")};\n }`,V=G=>(y.indicesToOffset=!0,u<2?G:`i2o_${e}(${G})`),T=(...G)=>u===0?"0u":`${b.indices}(${G.map(w).join(",")})`,N=(G,ee)=>u<2?`${G}`:`${ce(G,ee,u)}`,te=(G,ee,be)=>u<2?`${G}=${be};`:`${ce(G,ee,u)}=${be};`,Y={},K=(G,ee)=>{y.broadcastedIndicesToOffset=!0;let be=`${ee.name}broadcastedIndicesTo${e}Offset`;if(be in Y)return`${be}(${G})`;let et=[];for(let ze=u-1;ze>=0;ze--){let Ue=ee.indicesGet("outputIndices",ze+ee.rank-u);et.push(`${N($,ze)} * (${Ue} % ${N(I,ze)})`)}return Y[be]=`fn ${be}(outputIndices: ${ee.type.indices}) -> u32 {\n return ${et.length>0?et.join("+"):"0u"};\n }`,`${be}(${G})`},Q=(G,ee)=>(()=>{if(b.storage===b.value)return`${e}[${G}]=${ee};`;if(b.storage==="vec2"&&b.value==="i32")return`${e}[${G}]=vec2(u32(${ee}), select(0u, 0xFFFFFFFFu, ${ee} < 0));`;if(b.storage==="vec2"&&b.value==="u32")return`${e}[${G}]=vec2(u32(${ee}), 0u);`;if(b.storage==="u32"&&b.value==="vec4")return`${e}[${G}]=dot(vec4(0x1, 0x100, 0x10000, 0x1000000), vec4(${ee}));`;throw new Error(`not supported combination of storage type ${b.storage} and value type ${b.value} yet`)})(),Z=G=>(()=>{if(b.storage===b.value)return`${e}[${G}]`;if(b.storage==="vec2"&&b.value==="i32")return`i32(${e}[${G}].x)`;if(b.storage==="vec2"&&b.value==="u32")return`u32(${e}[${G}].x)`;if(b.storage==="u32"&&b.value==="vec4")return`vec4(bool(${e}[${G}] & 0xFFu), bool(${e}[${G}] & 0xFF00u), bool(${e}[${G}] & 0xFF0000u), bool(${e}[${G}] & 0xFF000000u))`;throw new Error(`not supported combination of storage type ${b.storage} and value type ${b.value} yet`)})(),Ee=u<2?"":`\n fn get_${e}ByIndices(indices: ${b.indices}) -> ${h} {\n return ${Z(`i2o_${e}(indices)`)};\n }`,Pe=u<2?"":(()=>{let G=l.map(be=>`d${be}: u32`).join(", "),ee=l.map(be=>`d${be}`).join(", ");return`\n fn get_${e}(${G}) -> ${h} {\n return get_${e}ByIndices(${T(ee)});\n }`})(),fe=(...G)=>{if(G.length!==u)throw new Error(`indices length must be ${u}`);let ee=G.map(w).join(",");return u===0?Z("0u"):u===1?Z(ee[0]):(y.get=!0,y.getByIndices=!0,y.indicesToOffset=!0,`get_${e}(${ee})`)},Ie=G=>u<2?Z(G):(y.getByIndices=!0,y.indicesToOffset=!0,`get_${e}ByIndices(${G})`),he=u<2?"":`\n fn set_${e}ByIndices(indices: ${b.indices}, value: ${h}) {\n ${Q(`i2o_${e}(indices)`,"value")}\n }`,ye=u<2?"":(()=>{let G=l.map(be=>`d${be}: u32`).join(", "),ee=l.map(be=>`d${be}`).join(", ");return`\n fn set_${e}(${G}, value: ${h}) {\n set_${e}ByIndices(${T(ee)}, value);\n }`})();return{impl:()=>{let G=[],ee=!1;return y.offsetToIndices&&(G.push(E),ee=!0),y.indicesToOffset&&(G.push(R),ee=!0),y.broadcastedIndicesToOffset&&(Object.values(Y).forEach(be=>G.push(be)),ee=!0),y.set&&(G.push(ye),ee=!0),y.setByIndices&&(G.push(he),ee=!0),y.get&&(G.push(Pe),ee=!0),y.getByIndices&&(G.push(Ee),ee=!0),!s&&ee&&G.unshift(`const ${I} = ${b.indices}(${r.join(",")});`,`const ${$} = ${b.indices}(${U.computeStrides(r).join(",")});`),G.join(`\n`)},type:b,offsetToIndices:A,indicesToOffset:V,broadcastedIndicesToOffset:K,indices:T,indicesGet:N,indicesSet:te,set:(...G)=>{if(G.length!==u+1)throw new Error(`indices length must be ${u}`);let ee=G[u];if(typeof ee!="string")throw new Error("value must be string");let be=G.slice(0,u).map(w).join(",");return u===0?Q("0u",ee):u===1?Q(be[0],ee):(y.set=!0,y.setByIndices=!0,y.indicesToOffset=!0,`set_${e}(${be}, ${ee})`)},setByOffset:Q,setByIndices:(G,ee)=>u<2?Q(G,ee):(y.setByIndices=!0,y.indicesToOffset=!0,`set_${e}ByIndices(${G}, ${ee});`),get:fe,getByOffset:Z,getByIndices:Ie,usage:o,name:e,strides:$,shape:I,rank:u}},M=(e,t,r,o=1)=>Dn(e,t,r,"input",o),F=(e,t,r,o=1)=>Dn(e,t,r,"output",o),Fr=(e,t,r,o=1)=>Dn(e,t,r,"internal",o),Rn=class{constructor(t){this.normalizedDispatchGroup=t;this.internalVariables=[];this.variables=[];this.uniforms=[];this.variableIndex=0}guardAgainstOutOfBoundsWorkgroupSizes(t){return`if (global_idx >= ${typeof t=="number"?`${t}u`:t}) { return; }`}mainStart(t=md){let r=typeof t=="number"?t:t[0],o=typeof t=="number"?1:t[1],n=typeof t=="number"?1:t[2],s=this.normalizedDispatchGroup[1]===1&&this.normalizedDispatchGroup[2]===1,u=s?`@builtin(global_invocation_id) global_id : vec3,\n @builtin(workgroup_id) workgroup_id : vec3,\n @builtin(local_invocation_id) local_id : vec3`:`@builtin(local_invocation_id) local_id : vec3,\n @builtin(local_invocation_index) local_idx : u32,\n @builtin(workgroup_id) workgroup_id : vec3,\n @builtin(num_workgroups) num_workgroups : vec3`,l=s?"let global_idx = global_id.x; let local_idx = local_id.x;":`let global_idx = (workgroup_id.z * num_workgroups[0] * num_workgroups[1] +\n workgroup_id.y * num_workgroups[0] + workgroup_id.x) * ${r*o*n}u + local_idx;`;return`@compute @workgroup_size(${r}, ${o}, ${n})\n fn main(${u}) {\n ${l}\n `}appendVariableUniforms(t){t.rank!==0&&(t.shape.startsWith("uniforms.")&&this.uniforms.push({name:t.shape.replace("uniforms.",""),type:"u32",length:t.rank}),t.strides.startsWith("uniforms.")&&this.uniforms.push({name:t.strides.replace("uniforms.",""),type:"u32",length:t.rank}))}declareVariable(t,r){if(t.usage==="internal")throw new Error("cannot use internal variable with declareVariable(). use registerInternalVariables() instead.");this.variables.push(t),this.appendVariableUniforms(t);let o=t.usage==="input"?"read":"read_write",n=t.type.storage;return`@group(0) @binding(${r}) var ${t.name}: array<${n}>;`}declareVariables(...t){return t.map(r=>this.declareVariable(r,this.variableIndex++)).join(`\n`)}registerInternalVariable(t){if(t.usage!=="internal")throw new Error("cannot use input or output variable with registerInternalVariable(). use declareVariables() instead.");this.internalVariables.push(t),this.appendVariableUniforms(t)}registerInternalVariables(...t){return t.forEach(r=>this.registerInternalVariable(r)),this}registerUniform(t,r,o=1){return this.uniforms.push({name:t,type:r,length:o}),this}registerUniforms(t){return this.uniforms=this.uniforms.concat(t),this}uniformDeclaration(){if(this.uniforms.length===0)return"";let t=[];for(let{name:r,type:o,length:n}of this.uniforms)if(n&&n>4)t.push(`${r}:array, ${Math.ceil(n/4)}>`);else{let s=n==null||n===1?o:`vec${n}<${o}>`;t.push(`${r}:${s}`)}return`\n struct Uniforms { ${t.join(", ")} };\n @group(0) @binding(${this.variableIndex}) var uniforms: Uniforms;`}get additionalImplementations(){return this.uniformDeclaration()+this.variables.map(t=>t.impl()).join(`\n`)+this.internalVariables.map(t=>t.impl()).join(`\n`)}},ma=e=>new Rn(e),Ft=(e,t)=>{let r=e.length,o=[];for(let n=0;n1&&u===1&&o.unshift(s)}return o},Re=e=>!0});var fd,fa,hd,gd,it,ha,ga,jt=j(()=>{"use strict";$e();je();ve();fd=e=>{if(!e||e.length!==1)throw new Error("Transpose requires 1 input.")},fa=(e,t)=>t&&t.length!==e?[...new Array(e).keys()].reverse():t,hd=(e,t)=>U.sortBasedOnPerm(e,fa(e.length,t)),gd=(e,t,r,o)=>{let n=[];n.push(`fn perm(i: ${o.type.indices}) -> ${r.type.indices} {\n var a: ${r.type.indices};`);for(let s=0;s{let r=e.dataType,o=e.dims.length,n=fa(o,t),s=Re(o),u=hd(e.dims,n),l=s?u.length:u,a=s?o:e.dims,p=F("output",r,l),h=M("a",r,a),g=b=>`\n ${b.registerUniform("output_size","u32").declareVariables(h,p)}\n\n ${gd(n,o,h,p)}\n\n ${b.mainStart()}\n ${b.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}\n\n let indices = ${p.offsetToIndices("global_idx")};\n let aIndices = perm(indices);\n\n ${p.setByOffset("global_idx",h.getByIndices("aIndices"))}\n }`;return{name:"Transpose",shaderCache:{hint:`${t}`,inputDependencies:s?["rank"]:["dims"]},getRunData:b=>{let w=U.size(u);return{outputs:[{dims:u,dataType:b[0].dataType}],dispatchGroup:{x:Math.ceil(w/64)},programUniforms:s?[{type:"uint32",data:w},...L(b[0].dims),...L(u)]:[{type:"uint32",data:w}]}},getShaderSource:g}},ha=(e,t)=>{fd(e.inputs),e.compute(it(e.inputs[0],t.perm))},ga=e=>ge({perm:e.perm})});var yd,bd,wd,vd,$d,Sd,xd,_d,Cd,Id,ct,ya,ba,wa,va,$a,Sa,xa,_a,Ca,Ia,Aa=j(()=>{"use strict";$e();ve();jr();jt();yd={max:"select(bestValue, candidate, candidate > bestValue)",min:"select(bestValue, candidate, candidate < bestValue)",mean:"bestValue + candidate",sum:"bestValue + candidate",prod:"bestValue * candidate",sumSquare:"bestValue + candidate * candidate",logSumExp:"bestValue + exp(candidate)",l1:"bestValue + abs(candidate)",l2:"bestValue + candidate * candidate",logSum:"bestValue + candidate"},bd={max:"select(bestValue, candidate, candidate > bestValue)",min:"select(bestValue, candidate, candidate < bestValue)",mean:"bestValue + candidate",sum:"bestValue + candidate",prod:"bestValue * candidate",sumSquare:"bestValue + candidate",logSumExp:"bestValue + candidate",l1:"bestValue + candidate",l2:"bestValue + candidate",logSum:"bestValue + candidate"},wd={max:"_A[offset]",min:"_A[offset]",mean:"0",sum:"0",prod:"1",sumSquare:"0",logSumExp:"0",l1:"0",l2:"0",logSum:"0"},vd={max:"bestValue",min:"bestValue",sum:"bestValue",prod:"bestValue",sumSquare:"bestValue",logSumExp:"log(bestValue)",l1:"bestValue",l2:"sqrt(bestValue)",logSum:"log(bestValue)"},$d=(e,t)=>{let r=[];for(let o=t-e;o{let r=[],o=e.length;for(let s=0;se[s]);return[r,n]},xd=(e,t)=>{let r=e.length+t.length,o=[],n=0;for(let s=0;s{for(let r=0;r{let r=[];if(!_d(e,t)){for(let o=0;or.push(o))}return r},Id=(e,t,r,o,n,s,u)=>{let l=r[0].dims,a=U.size(s),p=U.size(u),h=M("_A",r[0].dataType,l),g=F("output",n,s),b=32,w=`\n var aBestValues : array<${g.type.storage}, ${b}>;\n `;return{name:e,shaderCache:t,getShaderSource:_=>`\n ${_.registerUniform("reduceSize","u32").declareVariables(h,g)}\n ${w}\n fn DIV_CEIL(a : u32, b : u32) -> u32 {\n return ((a - 1u) / b + 1u);\n }\n ${_.mainStart(b)}\n\n let outputIndex = global_idx / ${b};\n let offset = outputIndex * uniforms.reduceSize;\n\n var bestValue = ${g.type.storage}(${wd[o]});\n let Length = uniforms.reduceSize;\n for (var k = local_idx; k < Length; k = k + ${b}) {\n let candidate = ${g.type.storage}(${h.getByOffset("offset + k")});\n bestValue = ${yd[o]};\n }\n aBestValues[local_idx] = bestValue;\n workgroupBarrier();\n\n var reduceSize = min(Length, ${b}u);\n for (var currentSize = reduceSize / 2u; reduceSize > 1u;\n currentSize = reduceSize / 2u) {\n let interval = DIV_CEIL(reduceSize, 2u);\n if (local_idx < currentSize) {\n let candidate = aBestValues[local_idx + interval];\n bestValue = ${bd[o]};\n aBestValues[local_idx] = bestValue;\n }\n reduceSize = interval;\n workgroupBarrier();\n }\n\n if (local_idx == 0u) {\n ${g.setByOffset("outputIndex",`${o==="mean"?`bestValue / ${g.type.storage}(uniforms.reduceSize)`:`${vd[o]}`}`)};\n }\n }`,getRunData:()=>({outputs:[{dims:s,dataType:n}],dispatchGroup:{x:a},programUniforms:[{type:"uint32",data:p}]})}},ct=(e,t,r,o)=>{let n=e.inputs.length===1?r:Mn(e.inputs,r),s=n.axes;s.length===0&&!n.noopWithEmptyAxes&&(s=e.inputs[0].dims.map((w,y)=>y));let u=U.normalizeAxes(s,e.inputs[0].dims.length),l=u,a=e.inputs[0],p=Cd(l,e.inputs[0].dims.length);p.length>0&&(a=e.compute(it(e.inputs[0],p),{inputs:[0],outputs:[-1]})[0],l=$d(l.length,a.dims.length));let[h,g]=Sd(a.dims,l),b=h;n.keepDims&&(b=xd(h,u)),e.compute(Id(t,{hint:n.cacheKey,inputDependencies:["type"]},[a],o,e.inputs[0].dataType,b,g),{inputs:[a]})},ya=(e,t)=>{ct(e,"ReduceMeanShared",t,"mean")},ba=(e,t)=>{ct(e,"ReduceL1Shared",t,"l1")},wa=(e,t)=>{ct(e,"ReduceL2Shared",t,"l2")},va=(e,t)=>{ct(e,"ReduceLogSumExpShared",t,"logSumExp")},$a=(e,t)=>{ct(e,"ReduceMaxShared",t,"max")},Sa=(e,t)=>{ct(e,"ReduceMinShared",t,"min")},xa=(e,t)=>{ct(e,"ReduceProdShared",t,"prod")},_a=(e,t)=>{ct(e,"ReduceSumShared",t,"sum")},Ca=(e,t)=>{ct(e,"ReduceSumSquareShared",t,"sumSquare")},Ia=(e,t)=>{ct(e,"ReduceLogSumShared",t,"logSum")}});var pt,Ad,qr,Mn,mt,Td,Ed,Od,Pd,kd,Rd,Bd,Dd,Md,zd,ft,Ta,Ea,Oa,Pa,ka,Ra,Ba,Da,Ma,za,jr=j(()=>{"use strict";$e();je();ve();Aa();pt=e=>{if(!e||e.length===0||e.length>2)throw new Error("Reduce op requires 1 or 2 inputs.");if(e.length===2&&e[1].dims.length!==1)throw new Error("Invalid axes input dims.")},Ad=e=>["","",`var value = ${e.getByIndices("input_indices")};`,""],qr=(e,t,r,o,n,s,u=!1,l=!1)=>{let a=[],p=r[0].dims,h=p.length,g=U.normalizeAxes(n,h),b=!l&&g.length===0;p.forEach((I,$)=>{b||g.indexOf($)>=0?u&&a.push(1):a.push(I)});let w=a.length,y=U.size(a);return{name:e,shaderCache:t,getShaderSource:I=>{let $=[],x=M("_A",r[0].dataType,h),E=F("output",s,w),A=o(x,E,g),z=A[2];for(let R=0,V=0;R=0?(u&&V++,z=`for(var j${R}: u32 = 0; j${R} < ${p[R]}; j${R}++) {\n ${A[2].includes("last_index")?`let last_index = j${R};`:""}\n ${x.indicesSet("input_indices",R,`j${R}`)}\n ${z}\n }`):($.push(`${x.indicesSet("input_indices",R,E.indicesGet("output_indices",V))};`),V++);return`\n\n ${I.registerUniform("output_size","u32").declareVariables(x,E)}\n\n ${I.mainStart()}\n ${I.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}\n var input_indices: ${x.type.indices};\n let output_indices = ${E.offsetToIndices("global_idx")};\n\n ${$.join(`\n`)}\n ${A[0]} // init ops for reduce max/min\n ${A[1]}\n ${z}\n ${A[3]}\n ${A.length===4?E.setByOffset("global_idx","value"):A.slice(4).join(`\n`)}\n }`},getRunData:()=>({outputs:[{dims:a,dataType:s}],dispatchGroup:{x:Math.ceil(y/64)},programUniforms:[{type:"uint32",data:y},...L(p),...L(a)]})}},Mn=(e,t)=>{let r=[];return e[1].dims[0]>0&&e[1].getBigInt64Array().forEach(o=>r.push(Number(o))),ge({axes:r,keepDims:t.keepDims,noopWithEmptyAxes:t.noopWithEmptyAxes})},mt=(e,t,r,o)=>{let n=e.inputs,s=n.length===1?r:Mn(n,r);e.compute(qr(t,{hint:s.cacheKey,inputDependencies:["rank"]},[n[0]],s.noopWithEmptyAxes&&s.axes.length===0?Ad:o,s.axes,n[0].dataType,s.keepDims,s.noopWithEmptyAxes),{inputs:[0]})},Td=(e,t)=>{pt(e.inputs),mt(e,"ReduceLogSum",t,(o,n)=>[`var value = ${n.type.storage}(0);`,"",`value += ${o.getByIndices("input_indices")};`,"value = log(value);"])},Ed=(e,t)=>{pt(e.inputs),mt(e,"ReduceL1",t,(o,n)=>[`var value = ${n.type.storage}(0);`,"",`value += abs(${o.getByIndices("input_indices")});`,""])},Od=(e,t)=>{pt(e.inputs),mt(e,"ReduceL2",t,(o,n)=>[`var t = ${n.type.value}(0); var value = ${n.type.value}(0);`,"",`t = ${o.getByIndices("input_indices")}; value += (t * t);`,"value = sqrt(value);"])},Pd=(e,t)=>{pt(e.inputs),mt(e,"ReduceLogSumExp",t,(o,n)=>[`var value = ${n.type.storage}(0);`,"",`value += exp(${o.getByIndices("input_indices")});`,"value = log(value);"])},kd=(e,t)=>{pt(e.inputs),mt(e,"ReduceMax",t,(o,n,s)=>{let u=[];for(let l=0;l=0||s.length===0)&&u.push(o.indicesSet("input_indices",l,0));return[`${u.join(`\n`)}`,`var value = ${o.getByIndices("input_indices")};`,`value = max(value, ${o.getByIndices("input_indices")});`,""]})},Rd=(e,t)=>{pt(e.inputs),mt(e,"ReduceMean",t,(o,n,s)=>{let u=1;for(let l=0;l=0||s.length===0)&&(u*=e.inputs[0].dims[l]);return["var sum = f32(0);","",`sum += f32(${o.getByIndices("input_indices")});`,`let value = ${n.type.value}(sum / ${u});`]})},Bd=(e,t)=>{pt(e.inputs),mt(e,"ReduceMin",t,(o,n,s)=>{let u=[];for(let l=0;l=0||s.length===0)&&u.push(`input_indices[${l}] = 0;`);return[`${u.join(`\n`)}`,`var value = ${o.getByIndices("input_indices")};`,`value = min(value, ${o.getByIndices("input_indices")});`,""]})},Dd=(e,t)=>{pt(e.inputs),mt(e,"ReduceProd",t,(o,n)=>[`var value = ${n.type.storage}(1);`,"",`value *= ${o.getByIndices("input_indices")};`,""])},Md=(e,t)=>{pt(e.inputs),mt(e,"ReduceSum",t,(o,n)=>[`var value = ${n.type.storage}(0);`,"",`value += ${o.getByIndices("input_indices")};`,""])},zd=(e,t)=>{pt(e.inputs),mt(e,"ReduceSumSquare",t,(o,n)=>[`var t = ${n.type.value}(0); var value = ${n.type.value}(0);`,"",`t = ${o.getByIndices("input_indices")}; value += t * t;`,""])},ft=(e,t,r)=>{if(t.length===0)return r;let o=1,n=1;for(let s=0;s1024},Ta=(e,t)=>{ft(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Rd(e,t):ya(e,t)},Ea=(e,t)=>{ft(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Ed(e,t):ba(e,t)},Oa=(e,t)=>{ft(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Od(e,t):wa(e,t)},Pa=(e,t)=>{ft(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Pd(e,t):va(e,t)},ka=(e,t)=>{ft(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?kd(e,t):$a(e,t)},Ra=(e,t)=>{ft(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Bd(e,t):Sa(e,t)},Ba=(e,t)=>{ft(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Dd(e,t):xa(e,t)},Da=(e,t)=>{ft(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Md(e,t):_a(e,t)},Ma=(e,t)=>{ft(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?zd(e,t):Ca(e,t)},za=(e,t)=>{ft(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Td(e,t):Ia(e,t)}});var Ua,Va,Na,zn,Wa=j(()=>{"use strict";Ne();je();jr();Ua=e=>{if(!e||e.length===0||e.length>2)throw new Error("ArgMinMaxOp op requires 1 or 2 inputs.");if(e[0].dataType!==1)throw new Error("Invalid input type.")},Va=(e,t)=>{Ua(e.inputs);let r=(o,n,s)=>{let u=[];for(let l=0;l=0||s.length===0)&&u.push(`input_indices[${l}] = 0;`);return[`${u.join(`\n`)}`,`var value = ${o.getByIndices("input_indices")};\nvar best_index : i32 = 0;`,`if (${o.getByIndices("input_indices")} ${t.selectLastIndex>0?"<=":"<"} value) {\n value = ${o.getByIndices("input_indices")};\n best_index = i32(last_index);\n }`,"",n.setByOffset("global_idx","best_index")]};e.compute(qr("ArgMin",{hint:t.cacheKey,inputDependencies:["rank"]},[e.inputs[0]],r,[t.axis],7,t.keepDims),{inputs:[0]})},Na=(e,t)=>{Ua(e.inputs);let r=(o,n,s)=>{let u=[];for(let l=0;l=0||s.length===0)&&u.push(`input_indices[${l}] = 0;`);return[`${u.join(`\n`)}`,`var value = ${o.getByIndices("input_indices")};\nvar best_index : i32 = 0;`,`if (${o.getByIndices("input_indices")} ${t.selectLastIndex>0?">=":">"} value) {\n value = ${o.getByIndices("input_indices")};\n best_index = i32(last_index);\n }`,"",n.setByOffset("global_idx","best_index")]};e.compute(qr("argMax",{hint:t.cacheKey,inputDependencies:["rank"]},[e.inputs[0]],r,[t.axis],7,t.keepDims),{inputs:[0]})},zn=e=>ge(e)});var Ud,Vd,Nd,Wd,Kr,Hd,Ha,Un=j(()=>{"use strict";Ne();Nr();ve();Ud=(e,t)=>{let r=e[0],o=e[1],n=e[2],s=e[3],u=e[4],l=e[5];if(u&&l)throw new Error("Attention cannot have both past and relative_position_bias");if(r.dims.length!==3)throw new Error(\'Input "input" must have 3 dimensions\');let a=r.dims[0],p=r.dims[1],h=r.dims[2];if(n.dims.length!==1)throw new Error(\'Input "bias" is expected to have 1 dimensions\');if(o.dims.length!==2)throw new Error(\'Input "weights" is expected to have 2 dimensions\');if(o.dims[0]!==h)throw new Error("Input 1 dimension 0 should have same length as dimension 2 of input 0");if(n.dims[0]!==o.dims[1])throw new Error(\'Input "bias" dimension 0 should have same length as dimension 1 of input "weights"\');let g=n.dims[0]/3,b=g,w=b;if(t.qkvHiddenSizes.length>0){if(t.qkvHiddenSizes.length!==3)throw new Error("qkv_hidden_sizes attribute should have 3 elements");for(let E of t.qkvHiddenSizes)if(E%t.numHeads!==0)throw new Error("qkv_hidden_sizes should be divisible by num_heads");g=t.qkvHiddenSizes[0],b=t.qkvHiddenSizes[1],w=t.qkvHiddenSizes[2]}let y=p;if(g!==b)throw new Error("qkv_hidden_sizes first element should be same as the second");if(n.dims[0]!==g+b+w)throw new Error(\'Input "bias" dimension 0 should have same length as sum of Q/K/V hidden sizes\');let _=0;if(u){if(b!==w)throw new Error(\'Input "past" expect k_hidden_size == v_hidden_size\');if(u.dims.length!==5)throw new Error(\'Input "past" must have 5 dimensions\');if(u.dims[0]!==2)throw new Error(\'Input "past" first dimension must be 2\');if(u.dims[1]!==a)throw new Error(\'Input "past" second dimension must be batch_size\');if(u.dims[2]!==t.numHeads)throw new Error(\'Input "past" third dimension must be num_heads\');if(u.dims[4]!==b/t.numHeads)throw new Error(\'Input "past" fifth dimension must be k_hidden_size / num_heads\');t.pastPresentShareBuffer||(_=u.dims[3])}let I=y+_,$=-1,x=0;if(s)throw new Error("Mask not supported");if(u)throw new Error("past is not supported");if(l)throw new Error("relativePositionBias is not supported");return{batchSize:a,sequenceLength:p,pastSequenceLength:_,kvSequenceLength:y,totalSequenceLength:I,maxSequenceLength:$,inputHiddenSize:h,hiddenSize:g,vHiddenSize:w,headSize:Math.floor(g/t.numHeads),vHeadSize:Math.floor(w/t.numHeads),numHeads:t.numHeads,isUnidirectional:!1,pastPresentShareBuffer:!1,maskFilterValue:t.maskFilterValue,maskType:x,scale:t.scale,broadcastResPosBias:!1,passPastInKv:!1,qkvFormat:1}},Vd=(e,t,r,o)=>{let n=Fe(o),s=64,u=o/n;u{let w=F("x",t.dataType,t.dims,n),y="thread_max_vector";n===2?y="max(thread_max_vector.x, thread_max_vector.y)":n===4&&(y="max(max(thread_max_vector.x, thread_max_vector.y), max(thread_max_vector.z, thread_max_vector.w))");let _=lt(t.dataType),I=[{name:"d_inv",type:_},{name:"d_comp",type:"u32"},{name:"elements_per_wg",type:"u32"}];return`\n var wgMax: array;\n var wgSum: array;\n ${b.registerUniforms(I).declareVariables(w)}\n ${b.mainStart([s,1,1])}\n let localOffset = local_idx * uniforms.elements_per_wg;\n let offset: u32 = workgroup_id.x * uniforms.d_comp + localOffset;\n\n var thread_max_vector = ${Ze("f32",n,"-3.402823e+38f")};\n for (var i: u32 = 0; i < uniforms.elements_per_wg && i + localOffset < uniforms.d_comp; i++) {\n thread_max_vector = max(${at(_,n,"x[offset + i]")}, thread_max_vector);\n }\n wgMax[local_idx] = ${y};\n workgroupBarrier();\n\n var maxValue = -3.402823e+38f;\n for (var i = 0u; i < ${s}; i++) {\n maxValue = max(wgMax[i], maxValue);\n }\n\n var sumVector = ${Ze("f32",n,"0")};\n for (var i: u32 = 0; i < uniforms.elements_per_wg && i + localOffset < uniforms.d_comp; i++) {\n sumVector += exp(${at(_,n,"x[offset + i]")} - maxValue);\n }\n wgSum[local_idx] = ${Je("sumVector",n)};\n workgroupBarrier();\n\n var sum: f32 = 0;\n for (var i = 0u; i < ${s}; i++) {\n sum += wgSum[i];\n }\n\n if (sum == 0) {\n for (var i: u32 = 0; i < uniforms.elements_per_wg && i + localOffset < uniforms.d_comp; i++) {\n x[offset + i] = ${Ze("f32",n,"uniforms.d_inv")};\n }\n } else {\n for (var i: u32 = 0; i < uniforms.elements_per_wg && i + localOffset < uniforms.d_comp; i++) {\n let f32input = ${at(_,n,"x[offset + i]")};\n x[offset + i] = ${w.type.value}(exp(f32input - maxValue) / sum);\n }\n }\n }`};e.compute({name:"AttentionProbsSoftmax",shaderCache:{hint:`${s};${h};${n}`},getShaderSource:g,getRunData:()=>({outputs:[],dispatchGroup:{x:r},programUniforms:p})},{inputs:[t],outputs:[]})},Nd=(e,t,r,o,n,s)=>{let u=[n.batchSize,n.numHeads,n.sequenceLength,n.kvSequenceLength+n.pastSequenceLength],l=s.scale===0?1/Math.sqrt(n.headSize):s.scale,a=Fe(n.headSize),p=n.headSize/a,h=12,g={x:Math.ceil(n.totalSequenceLength/h),y:Math.ceil(n.sequenceLength/h),z:n.batchSize*n.numHeads},b=Xe(t.dataType),w=[{type:"uint32",data:n.sequenceLength},{type:"uint32",data:p},{type:"uint32",data:n.totalSequenceLength},{type:"uint32",data:n.kvSequenceLength},{type:b,data:l}],y=[t,r],_=$=>{let x=M("q",t.dataType,t.dims,a),E=M("key",r.dataType,r.dims,a),A=F("output",t.dataType,u),z=Le(t.dataType),R=[{name:"M",type:"u32"},{name:"K",type:"u32"},{name:"N",type:"u32"},{name:"kv_sequence_length",type:"u32"},{name:"alpha",type:z}];return`\n const beta: ${z} = 1.0;\n const TILE_SIZE = ${h}u;\n\n var tileQ: array<${x.type.storage}, ${h*h}>;\n var tileK: array<${x.type.storage}, ${h*h}>;\n ${$.registerUniforms(R).declareVariables(x,E,A)}\n ${$.mainStart([h,h,1])}\n // x holds the N and y holds the M\n let headIdx = workgroup_id.z;\n let m = workgroup_id.y * TILE_SIZE;\n let n = workgroup_id.x * TILE_SIZE;\n let lm = m + local_id.y;\n let ln = n + local_id.x;\n\n let qOffset = uniforms.M * uniforms.K * headIdx + m * uniforms.K;\n let kOffset = uniforms.kv_sequence_length * uniforms.K * headIdx + n * uniforms.K;\n\n var value = ${Ze(z,a)};\n for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {\n if (m + local_id.y < uniforms.M && w + local_id.x < uniforms.K) {\n tileQ[TILE_SIZE * local_id.y + local_id.x] = q[qOffset + local_id.y * uniforms.K + w + local_id.x];\n }\n if (n + local_id.y < uniforms.N && w + local_id.x < uniforms.K) {\n tileK[TILE_SIZE * local_id.y + local_id.x] = key[kOffset + local_id.y * uniforms.K + w + local_id.x];\n }\n workgroupBarrier();\n\n for (var k: u32 = 0u; k({outputs:[{dims:u,dataType:t.dataType,gpuDataType:0}],dispatchGroup:g,programUniforms:w}),getShaderSource:_},{inputs:y,outputs:[-1]})[0];return Vd(e,I,n.batchSize*n.numHeads*n.sequenceLength,n.totalSequenceLength),I},Wd=(e,t,r,o)=>{let n=[o.batchSize,o.sequenceLength,o.vHiddenSize],s=12,u={x:Math.ceil(o.vHeadSize/s),y:Math.ceil(o.sequenceLength/s),z:o.batchSize*o.numHeads},l=[{type:"uint32",data:o.sequenceLength},{type:"uint32",data:o.totalSequenceLength},{type:"uint32",data:o.vHeadSize},{type:"uint32",data:o.numHeads},{type:"uint32",data:o.vHiddenSize}],a=p=>{let h=M("probs",t.dataType,t.dims),g=M("v",r.dataType,r.dims),b=F("output",t.dataType,n),w=[{name:"M",type:"u32"},{name:"K",type:"u32"},{name:"N",type:"u32"},{name:"num_heads",type:"u32"},{name:"v_hidden_size",type:"u32"}];return`\n const TILE_SIZE = ${s}u;\n var tileQ: array<${h.type.value}, ${s*s}>;\n var tileK: array<${h.type.value}, ${s*s}>;\n ${p.registerUniforms(w).declareVariables(h,g,b)}\n ${p.mainStart([s,s,1])}\n let headIdx = workgroup_id.z;\n let m = workgroup_id.y * TILE_SIZE + local_id.y;\n let n = workgroup_id.x * TILE_SIZE + local_id.x;\n\n let offsetA = headIdx * (uniforms.M * uniforms.K) + m * uniforms.K;\n let offsetB = headIdx * (uniforms.N * uniforms.K) + n;\n\n var value = ${h.type.storage}(0);\n for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {\n if (m < uniforms.M && w + local_id.x < uniforms.K) {\n tileQ[TILE_SIZE * local_id.y + local_id.x] = probs[offsetA + w + local_id.x];\n }\n if (n < uniforms.N && w + local_id.y < uniforms.K) {\n tileK[TILE_SIZE * local_id.y + local_id.x] = v[offsetB + (w + local_id.y) * uniforms.N];\n }\n workgroupBarrier();\n for (var k: u32 = 0u; k({outputs:[{dims:n,dataType:t.dataType,gpuDataType:0}],dispatchGroup:u,programUniforms:l}),getShaderSource:a},{inputs:[t,r],outputs:[0]})[0]},Kr=(e,t,r,o,n,s,u,l,a,p,h)=>{let g=Nd(e,t,r,a,p,h);Wd(e,g,o,p)},Hd=(e,t)=>{let r=[t.batchSize,t.numHeads,t.sequenceLength,t.headSize],o=t.sequenceLength,n=t.inputHiddenSize,s=t.headSize,u=12,l={x:Math.ceil(t.headSize/u),y:Math.ceil(t.sequenceLength/u),z:t.batchSize*t.numHeads},a=[e.inputs[0],e.inputs[1],e.inputs[2]],p=[{type:"uint32",data:o},{type:"uint32",data:n},{type:"uint32",data:s},{type:"uint32",data:t.numHeads},{type:"uint32",data:t.headSize},{type:"uint32",data:t.hiddenSize},{type:"uint32",data:t.hiddenSize+t.hiddenSize+t.vHiddenSize}],h=g=>{let b=F("output_q",a[0].dataType,r),w=F("output_k",a[0].dataType,r),y=F("output_v",a[0].dataType,r),_=M("input",a[0].dataType,a[0].dims),I=M("weight",a[1].dataType,a[1].dims),$=M("bias",a[2].dataType,a[2].dims),x=_.type.storage,E=[{name:"M",type:"u32"},{name:"K",type:"u32"},{name:"N",type:"u32"},{name:"num_heads",type:"u32"},{name:"head_size",type:"u32"},{name:"hidden_size",type:"u32"},{name:"ldb",type:"u32"}];return`\n const TILE_SIZE = ${u}u;\n var tileInput: array<${x}, ${u*u}>;\n var tileWeightQ: array<${x}, ${u*u}>;\n var tileWeightK: array<${x}, ${u*u}>;\n var tileWeightV: array<${x}, ${u*u}>;\n ${g.registerUniforms(E).declareVariables(_,I,$,b,w,y)}\n ${g.mainStart([u,u,1])}\n let batchIndex = workgroup_id.z / uniforms.num_heads;\n let headNumber = workgroup_id.z % uniforms.num_heads;\n let m = workgroup_id.y * TILE_SIZE + local_id.y;\n let n = workgroup_id.x * TILE_SIZE + local_id.x;\n\n let inputOffset = batchIndex * (uniforms.M * uniforms.K) + m * uniforms.K;\n let biasOffsetQ = headNumber * uniforms.head_size;\n let biasOffsetK = uniforms.hidden_size + biasOffsetQ;\n let biasOffsetV = uniforms.hidden_size + biasOffsetK;\n\n var valueQ = ${x}(0);\n var valueK = ${x}(0);\n var valueV = ${x}(0);\n for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {\n if (m < uniforms.M && w + local_id.x < uniforms.K) {\n tileInput[TILE_SIZE * local_id.y + local_id.x] = input[inputOffset + w + local_id.x];\n }\n if (n < uniforms.N && w + local_id.y < uniforms.K) {\n let offset = n + (w + local_id.y) * uniforms.ldb;\n tileWeightQ[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetQ + offset];\n tileWeightK[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetK + offset];\n tileWeightV[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetV + offset];\n }\n workgroupBarrier();\n for (var k: u32 = 0u; k({outputs:[{dims:r,dataType:e.inputs[0].dataType,gpuDataType:0},{dims:r,dataType:e.inputs[0].dataType,gpuDataType:0},{dims:r,dataType:e.inputs[0].dataType,gpuDataType:0}],dispatchGroup:l,programUniforms:p}),getShaderSource:h},{inputs:a,outputs:[-1,-1,-1]})},Ha=(e,t)=>{let r=Ud(e.inputs,t),[o,n,s]=Hd(e,r);return Kr(e,o,n,s,e.inputs[4],void 0,void 0,void 0,e.inputs[5],r,t)}});var Gd,Ld,Fd,Ga,La=j(()=>{"use strict";Lt();$e();je();ve();Gd=(e,t)=>{if(!e||e.length!==5)throw new Error("BatchNormalization requires 5 inputs");let r=(o,n,s)=>{let u=n.length;if(u!==o.length)throw new Error(`${s}: num dimensions != ${u}`);n.forEach((l,a)=>{if(l!==o[a])throw new Error(`${s}: dim[${a}] do not match`)})};if(e[0].dims.length>1){let o=t.format==="NHWC"?t.spatial?e[0].dims.slice(-1):e[0].dims.slice(-1).concat(e[0].dims.slice(1,e[0].dims.length-1)):e[0].dims.slice(1,t.spatial?2:void 0);r(e[1].dims,o,"Invalid input scale"),r(e[2].dims,o,"Invalid input B"),r(e[3].dims,o,"Invalid input mean"),r(e[4].dims,o,"Invalid input var")}else r(e[1].dims,[1],"Invalid input scale"),r(e[2].dims,[1],"Invalid input B"),r(e[3].dims,[1],"Invalid input mean"),r(e[4].dims,[1],"Invalid input var")},Ld=(e,t)=>{let{epsilon:r,spatial:o,format:n}=t,s=e[0].dims,u=o?Fe(s[s.length-1]):1,l=n==="NHWC"&&s.length>1?u:1,a=U.size(s)/u,p=Re(s.length)&&o,h=p?s.length:s,g=M("x",e[0].dataType,e[0].dims,u),b=M("scale",e[1].dataType,e[1].dims,l),w=M("bias",e[2].dataType,e[2].dims,l),y=M("inputMean",e[3].dataType,e[3].dims,l),_=M("inputVar",e[4].dataType,e[4].dims,l),I=F("y",e[0].dataType,h,u),$=()=>{let E="";if(o)E=`let cOffset = ${s.length===1?"0u":n==="NHWC"?`outputIndices[${s.length-1}] / ${u}`:"outputIndices[1]"};`;else if(n==="NCHW")E=`\n ${I.indicesSet("outputIndices","0","0")}\n let cOffset = ${I.indicesToOffset("outputIndices")};`;else{E=`var cIndices = ${b.type.indices}(0);\n cIndices[0] = outputIndices[${s.length-1}];`;for(let A=1;A`\n const epsilon = ${r};\n ${E.registerUniform("outputSize","u32").declareVariables(g,b,w,y,_,I)}\n ${E.mainStart()}\n ${E.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n var outputIndices = ${I.offsetToIndices(`global_idx * ${u}`)};\n ${$()}\n let scale = ${b.getByOffset("cOffset")};\n let bias = ${w.getByOffset("cOffset")};\n let inputMean = ${y.getByOffset("cOffset")};\n let inputVar = ${_.getByOffset("cOffset")};\n let x = ${g.getByOffset("global_idx")};\n let value = (x - inputMean) * inverseSqrt(inputVar + epsilon) * scale + bias;\n ${I.setByOffset("global_idx","value")}\n }`;return{name:"BatchNormalization",shaderCache:{hint:`${t.epsilon}_${t.format}_${o}_${u}`,inputDependencies:p?["rank","type","type","type","type"]:void 0},getShaderSource:x,getRunData:()=>({outputs:[{dims:e[0].dims,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:p?[{type:"uint32",data:a},...L(s)]:[{type:"uint32",data:a}]})}},Fd=e=>ge(e),Ga=(e,t)=>{let{inputs:r,outputCount:o}=e,n=Fd({...t,outputCount:o});if(Gt.webgpu.validateInputContent&&Gd(r,n),t.trainingMode)throw new Error("BatchNormalization trainingMode is not supported yet.");e.compute(Ld(r,n))}});var jd,qd,Fa,ja=j(()=>{"use strict";$e();ve();jd=e=>{if(e[0].dims.length!==3)throw new Error("input should have 3 dimensions");if(![320,640,1280].includes(e[0].dims[2]))throw new Error("number of channels should be 320, 640 or 1280");if(e[1].dims.length!==1)throw new Error("bias is expected to have 1 dimensions");if(e[0].dims[2]!==e[1].dims[0])throw new Error("last dimension of input and bias are not the same")},qd=e=>{let t=e[0].dims,r=e[0].dims[2],o=U.size(t)/4,n=e[0].dataType,s=M("input",n,t,4),u=M("bias",n,[r],4),l=M("residual",n,t,4),a=F("output",n,t,4);return{name:"BiasAdd",getRunData:()=>({outputs:[{dims:t,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(o/64)}}),getShaderSource:h=>`\n const channels = ${r}u / 4;\n ${h.declareVariables(s,u,l,a)}\n\n ${h.mainStart()}\n ${h.guardAgainstOutOfBoundsWorkgroupSizes(o)}\n let value = ${s.getByOffset("global_idx")}\n + ${u.getByOffset("global_idx % channels")} + ${l.getByOffset("global_idx")};\n ${a.setByOffset("global_idx","value")}\n }`}},Fa=e=>{jd(e.inputs),e.compute(qd(e.inputs))}});var Kd,Ae,qa,Ka,Ya,Za,Qa,Xa,Ja,ei,ti,Yd,ri,ni,oi,ai,Yr,ii,Zr,si,ui,di,li,ci,pi,mi,fi,hi,gi,yi,bi,wi,vi,$i,Si,xi,Vn=j(()=>{"use strict";Ne();$e();je();ve();Kd=(e,t,r,o,n,s)=>{let u=Math.ceil(t/4),l="";typeof n=="string"?l=`${n}(a)`:l=n("a");let a=M("inputData",r,[u],4),p=F("outputData",o,[u],4);return`\n ${e.registerUniform("vec_size","u32").declareVariables(a,p)}\n\n ${s??""}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")}\n\n let a = ${a.getByOffset("global_idx")};\n ${p.setByOffset("global_idx",l)}\n }`},Ae=(e,t,r,o,n,s=e.dataType)=>({name:t,shaderCache:{hint:n,inputDependencies:["type"]},getShaderSource:u=>Kd(u,U.size(e.dims),e.dataType,s,r,o),getRunData:u=>({outputs:[{dims:e.dims,dataType:s}],dispatchGroup:{x:Math.ceil(U.size(u[0].dims)/64/4)},programUniforms:[{type:"uint32",data:Math.ceil(U.size(e.dims)/4)}]})}),qa=e=>{e.compute(Ae(e.inputs[0],"Abs","abs"))},Ka=e=>{e.compute(Ae(e.inputs[0],"Acos","acos"))},Ya=e=>{e.compute(Ae(e.inputs[0],"Acosh","acosh"))},Za=e=>{e.compute(Ae(e.inputs[0],"Asin","asin"))},Qa=e=>{e.compute(Ae(e.inputs[0],"Asinh","asinh"))},Xa=e=>{e.compute(Ae(e.inputs[0],"Atan","atan"))},Ja=e=>{e.compute(Ae(e.inputs[0],"Atanh","atanh"))},ei=e=>ge(e),ti=(e,t)=>{let r;switch(t.to){case 10:r="vec4";break;case 1:r="vec4";break;case 12:r="vec4";break;case 6:r="vec4";break;case 9:r="vec4";break;default:throw new RangeError(`not supported type (specified in attribute \'to\' from \'Cast\' operator): ${t.to}`)}e.compute(Ae(e.inputs[0],"Cast",r,void 0,t.cacheKey,t.to))},Yd=e=>{let t=e.length>=2&&e[1].data!==0?e[1].getFloat32Array()[0]:Gr,r=e.length>=3&&e[2].data!==0?e[2].getFloat32Array()[0]:Lr;return ge({min:t,max:r})},ri=(e,t)=>{let r=e.inputs.length===1?t:Yd(e.inputs),o=lt(e.inputs[0].dataType);e.compute(Ae(e.inputs[0],"Clip",n=>`clamp(${n}, clip_min_, clip_max_)`,`\n const clip_min_: vec4<${o}> = vec4(${o}(${r.min}));\n const clip_max_: vec4<${o}> = vec4(${o}(${r.max}));\n`,r.cacheKey),{inputs:[0]})},ni=e=>{e.compute(Ae(e.inputs[0],"Ceil","ceil"))},oi=e=>{e.compute(Ae(e.inputs[0],"Cos","cos"))},ai=e=>{e.compute(Ae(e.inputs[0],"Cosh","cosh"))},Yr=e=>ge(e),ii=(e,t)=>{let r=lt(e.inputs[0].dataType);e.compute(Ae(e.inputs[0],"Elu",o=>`elu_vf32(${o})`,`\n const elu_alpha_ = ${r}(${t.alpha});\n\n fn elu_f32(a: ${r}) -> ${r} {\n return select((exp(a) - 1.0) * elu_alpha_, a, a >= 0.0);\n }\n\n fn elu_vf32(v: vec4<${r}>) -> vec4<${r}> {\n return vec4(elu_f32(v.x), elu_f32(v.y), elu_f32(v.z), elu_f32(v.w));\n }`,t.cacheKey))},Zr=(e,t="f32")=>`\nconst r0: ${t} = 0.3275911;\nconst r1: ${t} = 0.254829592;\nconst r2: ${t} = -0.284496736;\nconst r3: ${t} = 1.421413741;\nconst r4: ${t} = -1.453152027;\nconst r5: ${t} = 1.061405429;\n\nfn erf_vf32(v: ${e}) -> ${e} {\n let absv = abs(v);\n let x = 1.0 / (1.0 + r0 * absv);\n return sign(v) * (1.0 - ((((r5 * x + r4) * x + r3) * x + r2) * x + r1) * x * exp(-absv * absv));\n}`,si=e=>{let t=lt(e.inputs[0].dataType);e.compute(Ae(e.inputs[0],"Erf",r=>`erf_vf32(${r})`,Zr(`vec4<${t}>`,t)))},ui=e=>{e.compute(Ae(e.inputs[0],"Exp","exp"))},di=e=>{e.compute(Ae(e.inputs[0],"Floor","floor"))},li=e=>{let t=lt(e.inputs[0].dataType);e.compute(Ae(e.inputs[0],"Gelu",r=>`0.5 * ${r} * (1.0 + erf_vf32(${r} * 0.7071067811865475))`,Zr(`vec4<${t}>`,t)))},ci=(e,t)=>{let r=lt(e.inputs[0].dataType);e.compute(Ae(e.inputs[0],"LeakyRelu",o=>`select(leaky_relu_alpha_ * ${o}, ${o}, ${o} >= vec4<${r}>(0.0))`,`const leaky_relu_alpha_ = ${r}(${t.alpha});`,t.cacheKey))},pi=e=>{e.compute(Ae(e.inputs[0],"Not",t=>`!${t}`))},mi=e=>{e.compute(Ae(e.inputs[0],"Neg",t=>`-${t}`))},fi=e=>{e.compute(Ae(e.inputs[0],"Reciprocal",t=>`1.0/${t}`))},hi=e=>{let t=lt(e.inputs[0].dataType);e.compute(Ae(e.inputs[0],"Relu",r=>`select(vec4<${t}>(0.0), ${r}, ${r} > vec4<${t}>(0.0))`))},gi=e=>{e.compute(Ae(e.inputs[0],"Sigmoid",t=>`(1.0 / (1.0 + exp(-${t})))`))},yi=e=>{e.compute(Ae(e.inputs[0],"Sin","sin"))},bi=e=>{e.compute(Ae(e.inputs[0],"Sinh","sinh"))},wi=e=>{e.compute(Ae(e.inputs[0],"Sqrt","sqrt"))},vi=e=>{e.compute(Ae(e.inputs[0],"Tan","tan"))},$i=e=>{e.compute(Ae(e.inputs[0],"Tanh","tanh"))},Si=(e,t)=>{let r=lt(e.inputs[0].dataType);return e.compute(Ae(e.inputs[0],"ThresholdedRelu",o=>`select(vec4<${r}>(0.0), ${o}, ${o} > thresholded_relu_alpha_)`,`const thresholded_relu_alpha_ = vec4<${r}>(${t.alpha});`,t.cacheKey)),0},xi=e=>{e.compute(Ae(e.inputs[0],"Log","log"))}});var Qd,Xd,_i,Ci=j(()=>{"use strict";$e();ve();Vn();Qd=e=>{if(e[0].dims.length!==3)throw new Error("input should have 3 dimensions");if(![2560,5120,10240].includes(e[0].dims[2]))throw new Error("hidden state should be 2560, 5120 or 10240");if(e[1].dims.length!==1)throw new Error("bias is expected to have 1 dimensions");if(e[0].dims[2]!==e[1].dims[0])throw new Error("last dimension of input and bias are not the same")},Xd=e=>{let t=e[0].dims.slice();t[2]=t[2]/2;let r=M("input",e[0].dataType,e[0].dims,4),o=M("bias",e[0].dataType,[e[0].dims[2]],4),n=F("output",e[0].dataType,t,4),s=U.size(t)/4,u=Le(e[0].dataType);return{name:"BiasSplitGelu",getRunData:()=>({outputs:[{dims:t,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(s/64)}}),getShaderSource:a=>`\n const M_SQRT2 = sqrt(2.0);\n const halfChannels = ${e[0].dims[2]/4/2}u;\n\n ${a.declareVariables(r,o,n)}\n\n ${Zr(`vec4<${u}>`,u)}\n\n ${a.mainStart()}\n ${a.guardAgainstOutOfBoundsWorkgroupSizes(s)}\n let biasIdx = global_idx % halfChannels;\n let batchIndex = global_idx / halfChannels;\n let inputOffset = biasIdx + batchIndex * halfChannels * 2;\n let valueLeft = input[inputOffset] + bias[biasIdx];\n let valueRight = input[inputOffset + halfChannels] + bias[biasIdx + halfChannels];\n let geluRight = valueRight * 0.5 * (erf_vf32(valueRight / M_SQRT2) + 1);\n\n ${n.setByOffset("global_idx","valueLeft * geluRight")}\n }`}},_i=e=>{Qd(e.inputs),e.compute(Xd(e.inputs))}});var Jd,el,ht,Ii,Ai,Ti,Ei,Oi,Pi,ki,Ri,Bi,Di,Mi=j(()=>{"use strict";Ne();$e();ve();Jd=(e,t,r,o,n,s,u,l,a,p,h,g,b)=>{let w,y;typeof l=="string"?w=y=(R,V)=>`${l}((${R}),(${V}))`:typeof l=="function"?w=y=l:(w=l.scalar,y=l.vector);let _=g?t.length:t,I=g?r.length:r,$=g?o.length:o,x=F("outputData",h,$,4),E=M("aData",a,_,4),A=M("bData",p,I,4),z;if(n)if(s){let R=U.size(t)===1,V=U.size(r)===1,T=t.length>0&&t[t.length-1]%4===0,N=r.length>0&&r[r.length-1]%4===0;R||V?z=x.setByOffset("global_idx",y(R?`${E.type.value}(${E.getByOffset("0")}.x)`:E.getByOffset("global_idx"),V?`${A.type.value}(${A.getByOffset("0")}.x)`:A.getByOffset("global_idx"))):z=`\n let outputIndices = ${x.offsetToIndices("global_idx * 4u")};\n let offsetA = ${E.broadcastedIndicesToOffset("outputIndices",x)};\n let offsetB = ${A.broadcastedIndicesToOffset("outputIndices",x)};\n ${x.setByOffset("global_idx",y(u||T?E.getByOffset("offsetA / 4u"):`${E.type.value}(${E.getByOffset("offsetA / 4u")}[offsetA % 4u])`,u||N?A.getByOffset("offsetB / 4u"):`${A.type.value}(${A.getByOffset("offsetB / 4u")}[offsetB % 4u])`))}\n `}else z=x.setByOffset("global_idx",y(E.getByOffset("global_idx"),A.getByOffset("global_idx")));else{if(!s)throw new Error("no necessary to use scalar implementation for element-wise binary op implementation.");let R=(V,T,N="")=>{let te=`aData[indexA${T}][componentA${T}]`,Y=`bData[indexB${T}][componentB${T}]`;return`\n let outputIndices${T} = ${x.offsetToIndices(`global_idx * 4u + ${T}u`)};\n let offsetA${T} = ${E.broadcastedIndicesToOffset(`outputIndices${T}`,x)};\n let offsetB${T} = ${A.broadcastedIndicesToOffset(`outputIndices${T}`,x)};\n let indexA${T} = offsetA${T} / 4u;\n let indexB${T} = offsetB${T} / 4u;\n let componentA${T} = offsetA${T} % 4u;\n let componentB${T} = offsetB${T} % 4u;\n ${V}[${T}] = ${N}(${w(te,Y)});\n `};h===9?z=`\n var data = vec4(0);\n ${R("data",0,"u32")}\n ${R("data",1,"u32")}\n ${R("data",2,"u32")}\n ${R("data",3,"u32")}\n outputData[global_idx] = dot(vec4(0x1, 0x100, 0x10000, 0x1000000), vec4(data));`:z=`\n ${R("outputData[global_idx]",0)}\n ${R("outputData[global_idx]",1)}\n ${R("outputData[global_idx]",2)}\n ${R("outputData[global_idx]",3)}\n `}return`\n ${e.registerUniform("vec_size","u32").declareVariables(E,A,x)}\n\n ${b??""}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")}\n ${z}\n }`},el=(e,t,r,o,n,s,u=r.dataType)=>{let l=!U.areEqual(r.dims,o.dims),a=r.dims,p=U.size(r.dims),h=!1,g=!1,b=[l];if(l){let y=dt.calcShape(r.dims,o.dims,!1);if(!y)throw new Error("Can\'t perform binary op on the given tensors");a=y,p=U.size(a);let _=U.size(r.dims)===1,I=U.size(o.dims)===1,$=r.dims.length>0&&r.dims[r.dims.length-1]%4===0,x=o.dims.length>0&&o.dims[o.dims.length-1]%4===0;b.push(_),b.push(I),b.push($),b.push(x);let E=1;for(let A=1;Ay.toString()).join("_"),inputDependencies:w?["rank","rank"]:["dims","dims"]},getShaderSource:y=>Jd(y,r.dims,o.dims,a,h,l,g,n,r.dataType,o.dataType,u,w,s),getRunData:()=>({outputs:[{dims:a,dataType:u}],dispatchGroup:{x:Math.ceil(p/64/4)},programUniforms:w?[{type:"uint32",data:Math.ceil(U.size(a)/4)},...L(r.dims),...L(o.dims),...L(a)]:[{type:"uint32",data:Math.ceil(U.size(a)/4)}]})}},ht=(e,t,r,o,n,s)=>{e.compute(el(t,n??"",e.inputs[0],e.inputs[1],r,o,s))},Ii=e=>{ht(e,"Add",(t,r)=>`${t}+${r}`)},Ai=e=>{ht(e,"Div",(t,r)=>`${t}/${r}`)},Ti=e=>{ht(e,"Equal",{scalar:(t,r)=>`u32(${t}==${r})`,vector:(t,r)=>`vec4(${t}==${r})`},void 0,void 0,9)},Ei=e=>{ht(e,"Mul",(t,r)=>`${t}*${r}`)},Oi=e=>{let t=M("input",e.inputs[0].dataType,e.inputs[0].dims).type.value;ht(e,"Pow",{scalar:(o,n)=>`pow_custom(${o},${n})`,vector:(o,n)=>`pow_vector_custom(${o},${n})`},`\n fn pow_custom(a : ${t}, b : ${t}) -> ${t} {\n if (b == ${t}(0.0)) {\n return ${t}(1.0);\n } else if (a < ${t}(0.0) && f32(b) != floor(f32(b))) {\n return ${t}(pow(f32(a), f32(b))); // NaN\n }\n return select(sign(a), ${t}(1.0), round(f32(abs(b) % ${t}(2.0))) != 1.0) * ${t}(${t==="i32"?"round":""}(pow(f32(abs(a)), f32(b))));\n }\n fn pow_vector_custom(a : vec4<${t}>, b : vec4<${t}>) -> vec4<${t}> {\n // TODO: implement vectorized pow\n return vec4<${t}>(pow_custom(a.x, b.x), pow_custom(a.y, b.y), pow_custom(a.z, b.z), pow_custom(a.w, b.w));\n }\n `)},Pi=e=>{ht(e,"Sub",(t,r)=>`${t}-${r}`)},ki=e=>{ht(e,"Greater",{scalar:(t,r)=>`u32(${t}>${r})`,vector:(t,r)=>`vec4(${t}>${r})`},void 0,void 0,9)},Ri=e=>{ht(e,"Less",{scalar:(t,r)=>`u32(${t}<${r})`,vector:(t,r)=>`vec4(${t}<${r})`},void 0,void 0,9)},Bi=e=>{ht(e,"GreaterOrEqual",{scalar:(t,r)=>`u32(${t}>=${r})`,vector:(t,r)=>`vec4(${t}>=${r})`},void 0,void 0,9)},Di=e=>{ht(e,"LessOrEqual",{scalar:(t,r)=>`u32(${t}<=${r})`,vector:(t,r)=>`vec4(${t}<=${r})`},void 0,void 0,9)}});var rl,nl,ol,al,zi,Ui,Vi=j(()=>{"use strict";$e();je();ve();rl=e=>{if(!e||e.length<1)throw new Error("too few inputs");let t=e[0].dataType,r=e[0].dims.length;for(let o of e){if(o.dataType!==t)throw new Error("input tensors should be one type");if(o.dims.length!==r)throw new Error("input tensors should have the same shape")}},nl=(e,t)=>`\n fn calculateInputIndex(index: u32) -> u32 {\n let sizeInConcatAxis = array(${t});\n for (var i: u32 = 0u; i < ${e}; i += 1u ) {\n if (index < sizeInConcatAxis[i]) {\n return i;\n }\n }\n return ${e}u;\n }`,ol=(e,t)=>{let r=e.length,o=[];for(let n=0;n{let r=e[0].dims.slice();if(t>=r.length||t<-1*r.length)throw new Error("axis specified for concat doesn\'t match input dimensionality");let o=t<0?r.length+t:t,n=r.slice(0);for(let A=1;A`uniforms.sizeInConcatAxis${A}`).join(","),E=A=>`\n\n ${(()=>{A.registerUniform("outputSize","u32");for(let z=0;z(${x});\n ${$} -= sizeInConcatAxis[inputIndex - 1u];\n }\n\n ${ol(l,I)}\n }`;return{name:"Concat",shaderCache:{hint:`${t}`,inputDependencies:h},getRunData:()=>({outputs:[{dims:n,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(s/64)},programUniforms:w}),getShaderSource:E}},zi=(e,t)=>{rl(e.inputs),e.compute(al(e.inputs,t.axis))},Ui=e=>ge({axis:e.axis})});var gt,Qr,It=j(()=>{"use strict";$e();gt=(e,t)=>{switch(e.activation){case"Relu":return{activationFunction:"",applyActivation:`value = max(value, ${t}(0.0));`};case"Sigmoid":return{activationFunction:"",applyActivation:`value = (${t}(1.0) / (${t}(1.0) + exp(-value)));`};case"Clip":return{activationFunction:`const clip_min_=${t}(${e.clipMin});const clip_max_=${t}(${e.clipMax});`,applyActivation:"value = clamp(value, clip_min_, clip_max_);"};default:return{activationFunction:"",applyActivation:""}}},Qr=e=>{let t=e?.activation||"";if(t==="Clip"){let[r,o]=e?.activation_params||[Gr,Lr];return{activation:t,clipMax:o,clipMin:r,activationCacheKey:`${t}:${r},${o}`}}return{activation:t,activationCacheKey:t}}});var Ke,Xr,Jr=j(()=>{"use strict";Ke=(e,t)=>{switch(e){case 1:return t;case 2:return`vec2<${t}>`;case 3:return`vec3<${t}>`;case 4:return`vec4<${t}>`;default:throw new Error(`${e}-component is not supported.`)}},Xr=e=>`\n ${e?"value = value + getBiasByOutputCoords(coords);":""}\n `});var en,Nn=j(()=>{"use strict";en=e=>`\nfn getIndexFromCoords4D(coords : vec4, shape : vec4) -> i32 {\n return dot(coords, vec4(\n shape.y * shape.z * shape.w, shape.z * shape.w, shape.w, 1));\n}\nfn getOutputIndexFromCoords(coords : vec4) -> i32 {\n return dot(coords, vec4(\n i32(${e}.x), i32(${e}.y), i32(${e}.z), 1));\n}\n`});var il,sl,mr,Ni,ul,fr,dl,tn,hr=j(()=>{"use strict";$e();ve();It();Jr();il=(e,t)=>e?`\n mm_Asub[inputRow][inputCol] = mm_readA(batch,\n kStart + inputRow,\n globalRowStart / innerElementSize + inputCol${t?", batchIndices":""});\n `:`\n mm_Asub[inputRow][inputCol] = mm_readA(batch,\n globalRow + innerRow,\n kStart / innerElementSize + inputCol${t?", batchIndices":""});\n `,sl=(e,t)=>e?`\n let ACached0 = mm_Asub[k * innerElementSize][localRow];\n let ACached1 = mm_Asub[k * innerElementSize + 1][localRow];\n let ACached2 = mm_Asub[k * innerElementSize + 2][localRow];\n ${t===3?"":"let ACached3 = mm_Asub[k * innerElementSize + 3][localRow];"}\n for (var i = 0; i < rowPerThread; i = i + 1) {\n acc[i] = BCached0 * ACached0[i] + acc[i];\n acc[i] = BCached1 * ACached1[i] + acc[i];\n acc[i] = BCached2 * ACached2[i] + acc[i];\n ${t===3?"":"acc[i] = BCached3 * ACached3[i] + acc[i];"}\n }`:`\n for (var i = 0; i < rowPerThread; i = i + 1) {\n let ACached = mm_Asub[tileRow + i][k];\n acc[i] = BCached0 * ACached.x + acc[i];\n acc[i] = BCached1 * ACached.y + acc[i];\n acc[i] = BCached2 * ACached.z + acc[i];\n ${t===3?"":"acc[i] = BCached3 * ACached.w + acc[i];"}\n }`,mr=(e,t,r="f32",o,n=!1,s=32,u=!1,l=32)=>{let a=t[1]*e[1],p=t[0]*e[0],h=n?a:s,g=n?s:a,b=h/t[0],w=s/t[1];if(!((n&&b===4&&e[1]===4||!n&&(b===3||b===4))&&h%t[0]===0&&s%t[1]===0&&e[0]===4))throw new Error(`If transposeA ${n} is true, innerElementSize ${b} and workPerThread[1] ${e[1]} must be 4.\n Otherwise, innerElementSize ${b} must be 3 or 4.\n tileAWidth ${h} must be divisible by workgroupSize[0]${t[0]}. tileInner ${s} must be divisible by workgroupSize[1] ${t[1]}. colPerThread ${e[0]} must be 4.`);return`\nvar mm_Asub: array, ${h/b}>, ${g}>;\nvar mm_Bsub: array, ${p/e[0]}>, ${s}>;\n\nconst rowPerThread = ${e[1]};\nconst colPerThread = ${e[0]};\nconst innerElementSize = ${b};\nconst tileInner = ${s};\n\n@compute @workgroup_size(${t[0]}, ${t[1]}, ${t[2]})\nfn main(@builtin(local_invocation_id) localId : vec3,\n @builtin(global_invocation_id) globalId : vec3,\n @builtin(workgroup_id) workgroupId : vec3) {\n let localRow = i32(localId.y);\n let tileRow = localRow * rowPerThread;\n let tileCol = i32(localId.x);\n\n let globalRow =i32(globalId.y) * rowPerThread;\n let globalCol = i32(globalId.x);\n let batch = ${u?"0":"i32(globalId.z)"};\n ${o?`let batchIndices = ${o.offsetToIndices("u32(batch)")};`:""}\n let globalRowStart = i32(workgroupId.y) * ${a};\n\n let numTiles = ${u?`${Math.ceil(l/s)}`:"(uniforms.dimInner - 1) / tileInner + 1"};\n var kStart = ${u?`i32(globalId.z) * ${l}`:"0"};\n\n var acc: array, rowPerThread>;\n\n // Loop over shared dimension.\n let tileRowB = localRow * ${w};\n for (var t = 0; t < numTiles; t = t + 1) {\n // Load one tile of A into local memory.\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n let inputRow = tileRow + innerRow;\n let inputCol = tileCol;\n ${il(n,o)}\n }\n\n // Load one tile of B into local memory.\n for (var innerRow = 0; innerRow < ${w}; innerRow = innerRow + 1) {\n let inputRow = tileRowB + innerRow;\n let inputCol = tileCol;\n mm_Bsub[inputRow][inputCol] = mm_readB(batch, kStart + inputRow, globalCol${o?", batchIndices":""});\n }\n kStart = kStart + tileInner;\n workgroupBarrier();\n\n // Compute acc values for a single thread.\n for (var k = 0; k < tileInner / innerElementSize; k = k + 1) {\n let BCached0 = mm_Bsub[k * innerElementSize][tileCol];\n let BCached1 = mm_Bsub[k * innerElementSize + 1][tileCol];\n let BCached2 = mm_Bsub[k * innerElementSize + 2][tileCol];\n ${b===3?"":"let BCached3 = mm_Bsub[k * innerElementSize + 3][tileCol];"}\n\n ${sl(n,b)}\n }\n\n workgroupBarrier();\n }\n\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n mm_write(batch, globalRow + innerRow, globalCol, acc[innerRow]);\n }\n}`},Ni=(e,t)=>e?`\n mm_Asub[inputRow][inputCol] = mm_readA(batch,\n kStart + inputRow,\n globalRowStart + inputCol${t?", batchIndices":""});\n `:`\n mm_Asub[inputRow][inputCol] = mm_readA(batch,\n globalRowStart + inputRow,\n kStart + inputCol${t?", batchIndices":""});\n `,ul=e=>e?"let ACached = mm_Asub[k][tileRow + innerRow];":"let ACached = mm_Asub[tileRow + innerRow][k];",fr=(e,t,r="f32",o,n=!1,s=32,u=!1,l=32,a=!1)=>{let p=e[1]*t[1],h=e[0]*t[0],g=n?p:s,b=n?s:p;if(!(b%t[1]===0&&g%t[0]===0&&s%t[1]===0))throw new Error(`tileAHight ${b} must be divisible by workgroupSize[1]${t[1]}, tileAWidth ${g} must be divisible by workgroupSize[0]${t[0]}, tileInner ${s} must be divisible by workgroupSize[1]${t[1]}`);let w=b/t[1],y=g/t[0],_=s/t[1],I=a?`\n let localRow = i32(localId.y);\n let localCol = i32(localId.x);\n let globalRowStart = i32(workgroupId.y) * ${p};\n let globalColStart = i32(workgroupId.x) * ${h};\n\n // Loop over shared dimension.\n for (var t = 0; t < numTiles; t = t + 1) {\n // Load one tile of A into local memory.\n for (var inputRow = localRow; inputRow < ${b}; inputRow = inputRow + ${t[1]}) {\n for (var inputCol = localCol; inputCol < ${g}; inputCol = inputCol + ${t[0]}) {\n ${Ni(n,o)}\n }\n }\n // Load one tile of B into local memory.\n for (var inputRow = localRow; inputRow < ${s}; inputRow = inputRow + ${t[1]}) {\n for (var inputCol = localCol; inputCol < ${h}; inputCol = inputCol + ${t[0]}) {\n mm_Bsub[inputRow][inputCol] = mm_readB(batch,\n kStart + inputRow,\n globalColStart + inputCol${o?", batchIndices":""});\n }\n }\n kStart = kStart + tileInner;\n workgroupBarrier();\n\n // Compute acc values for a single thread.\n var BCached : array<${r}, colPerThread>;\n for (var k = 0; k < tileInner; k = k + 1) {\n for (var inner = 0; inner < colPerThread; inner = inner + 1) {\n BCached[inner] = mm_Bsub[k][localCol + inner * ${t[0]}];\n }\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n let ACached = ${n?`mm_Asub[k][localRow + innerRow * ${t[1]}];`:`mm_Asub[localRow + innerRow * ${t[1]}][k];`}\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n acc[innerRow][innerCol] = acc[innerRow][innerCol] +\n ACached * BCached[innerCol];\n }\n }\n }\n workgroupBarrier();\n }\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n let gRow = globalRowStart + localRow + innerRow * ${t[1]};\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n let gCol = globalColStart + localCol + innerCol * ${t[0]};\n mm_write(batch, gRow, gCol, acc[innerRow][innerCol]);\n }\n }\n `:`\nlet tileRow = i32(localId.y) * rowPerThread;\nlet tileCol = i32(localId.x) * colPerThread;\n\nlet globalRow = i32(globalId.y) * rowPerThread;\nlet globalCol = i32(globalId.x) * colPerThread;\nlet globalRowStart = i32(workgroupId.y) * ${p};\n\nlet tileRowA = i32(localId.y) * ${w};\nlet tileColA = i32(localId.x) * ${y};\nlet tileRowB = i32(localId.y) * ${_};\n// Loop over shared dimension.\nfor (var t = 0; t < numTiles; t = t + 1) {\n // Load one tile of A into local memory.\n for (var innerRow = 0; innerRow < ${w}; innerRow = innerRow + 1) {\n for (var innerCol = 0; innerCol < ${y}; innerCol = innerCol + 1) {\n let inputRow = tileRowA + innerRow;\n let inputCol = tileColA + innerCol;\n ${Ni(n,o)}\n }\n }\n\n // Load one tile of B into local memory.\n for (var innerRow = 0; innerRow < ${_}; innerRow = innerRow + 1) {\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n let inputRow = tileRowB + innerRow;\n let inputCol = tileCol + innerCol;\n mm_Bsub[inputRow][inputCol] = mm_readB(batch,\n kStart + inputRow,\n globalCol + innerCol${o?", batchIndices":""});\n }\n }\n kStart = kStart + tileInner;\n workgroupBarrier();\n\n // Compute acc values for a single thread.\n var BCached : array<${r}, colPerThread>;\n for (var k = 0; k < tileInner; k = k + 1) {\n for (var inner = 0; inner < colPerThread; inner = inner + 1) {\n BCached[inner] = mm_Bsub[k][tileCol + inner];\n }\n\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n ${ul(n)}\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n acc[innerRow][innerCol] = acc[innerRow][innerCol] + ACached * BCached[innerCol];\n }\n }\n }\n\n workgroupBarrier();\n}\n\nfor (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n mm_write(batch, globalRow + innerRow, globalCol + innerCol,\n acc[innerRow][innerCol]);\n }\n}\n`;return`\n var mm_Asub : array, ${b}>;\n var mm_Bsub : array, ${s}>;\n const rowPerThread = ${e[1]};\n const colPerThread = ${e[0]};\n const tileInner = ${s};\n\n@compute @workgroup_size(${t[0]}, ${t[1]}, ${t[2]})\nfn main(@builtin(local_invocation_id) localId : vec3,\n @builtin(global_invocation_id) globalId : vec3,\n @builtin(workgroup_id) workgroupId : vec3) {\n let batch = ${u?"0":"i32(globalId.z)"};\n ${o?`let batchIndices = ${o.offsetToIndices("u32(batch)")};`:""}\n let numTiles = ${u?`${Math.ceil(l/s)}`:"(uniforms.dimInner - 1) / tileInner + 1"};\n var kStart = ${u?`i32(globalId.z) * ${l}`:"0"};\n\n var acc : array, rowPerThread>;\n\n // Without this initialization strange values show up in acc.\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n acc[innerRow][innerCol] = 0.0;\n }\n }\n ${I}\n }\n`},dl=(e,t,r,o,n,s=!1)=>{let[u,l,a]=n,[p,h,g,b]=o,w=Ft(u,a),y=Ft(l,a),_=Le(o[0].type.tensor),I=()=>{let E=h.rank,A=p.rank,z=`var aIndices: ${h.type.indices};`;for(let R=E-2-1,V=A-1;R>=0;R--,V--)z+=`\naIndices[${R}] = ${A>1?`batchIndices[${V}]`:"batchIndices"};`;return w.forEach(R=>{z+=`\naIndices[${R}] = 0;`}),z+=`\naIndices[${E-2}] = u32(row);\n aIndices[${E-1}] = u32(colIn);`,z},$=()=>{let E=g.rank,A=p.rank,z=`var bIndices: ${g.type.indices};`;for(let R=E-2-1,V=A-1;R>=0;R--,V--)z+=`\nbIndices[${R}] = ${A>1?`batchIndices[${V}]`:"batchIndices"};`;return y.forEach(R=>{z+=`\nbIndices[${R}] = 0;`}),z+=`\nbIndices[${E-2}] = u32(row);\n bIndices[${E-1}] = u32(colIn);`,z};return`\n fn mm_readA(batch: i32, row: i32, colIn: i32, batchIndices: ${p.type.indices}) -> ${Ke(e,_)} {\n var value = ${Ke(e,_)}(0.0);\n let col = colIn * ${e};\n if(row < uniforms.dimAOuter && col < uniforms.dimInner)\n {\n ${I()}\n value = ${h.getByIndices("aIndices")};\n }\n return value;\n }\n\n fn mm_readB(batch: i32, row: i32, colIn: i32, batchIndices: ${p.type.indices}) -> ${Ke(e,_)} {\n var value = ${Ke(e,_)}(0.0);\n let col = colIn * ${e};\n if(row < uniforms.dimInner && col < uniforms.dimBOuter)\n {\n ${$()}\n value = ${g.getByIndices("bIndices")};\n }\n return value;\n }\n\n fn mm_write(batch: i32, row: i32, colIn: i32, valueIn: ${Ke(e,_)}) {\n let col = colIn * ${e};\n if (row < uniforms.dimAOuter && col < uniforms.dimBOuter) {\n var value = valueIn;\n let coords = vec3(batch, row, colIn);\n ${t?`value = value + ${s?"bias[colIn]":`${Ke(e,_)}(bias[row])`};`:""}\n ${r}\n ${b.setByIndices("vec3(coords)","value")}\n }\n }\n `},tn=(e,t,r,o,n=!1)=>{let s=e[0].dims,u=e[1].dims,l=s.slice(0,-2),a=u.slice(0,-2),p=o?o.slice(0,-2):r.slice(0,-2),h=Re(p.length),g=h?p.length:p,b=Fr("batchDims",e[0].dataType,g,1),w=U.size(p),y=s[s.length-2],_=s[s.length-1],I=u[u.length-1],$=_%4===0&&I%4===0,x=y<=8?[4,1,1]:[4,4,1],E=[8,8,1],A=[Math.ceil(I/E[0]/x[0]),Math.ceil(y/E[1]/x[1]),Math.ceil(w/E[2]/x[2])],z=Le(e[0].dataType),R=$?4:1,V=[...l,y,_/R],T=Re(V.length),N=T?V.length:V,te=[...a,_,I/R],Y=Re(te.length),K=Y?te.length:te,Q=[w,y,I/R],Z=M("a",e[0].dataType,N,R),Ee=M("b",e[1].dataType,K,R),Pe=F("result",e[0].dataType,Q.length,R),fe=[Z,Ee],Ie=[{type:"int32",data:y},{type:"int32",data:I},{type:"int32",data:_}];h&&Ie.push(...L(p)),T&&Ie.push(...L(V)),Y&&Ie.push(...L(te));let he=[];he.push(T?"rank":"dims"),he.push(Y?"rank":"dims");let ye=e.length>2,{activationFunction:We,applyActivation:De}=gt(t,Pe.type.value),Ge=dl(R,ye,De,[b,Z,Ee,Pe],[l,a,p],n);if(ye){let ee=n?R:1;fe.push(M("bias",e[2].dataType,e[2].dims.length,ee)),Ie.push(...L(e[2].dims)),he.push("rank")}Ie.push(...L(Q));let G=ee=>`\n ${ee.registerUniform("dimAOuter","i32").registerUniform("dimBOuter","i32").registerUniform("dimInner","i32").registerInternalVariables(b).declareVariables(...fe,Pe)}\n ${We}\n ${Ge}\n ${$?mr(x,E,z,b):fr(x,E,z,b)}\n `;return{name:"MatMul",shaderCache:{hint:t.activationCacheKey+`${x}${$}${n}`,inputDependencies:he},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:A[0],y:A[1],z:A[2]},programUniforms:Ie}),getShaderSource:G}}});var ll,Wi,Hi=j(()=>{"use strict";Ct();ve();It();Jr();Nn();hr();ll=(e,t,r,o,n=!1,s,u=4,l=4,a=4,p="f32")=>{let h=Y=>{switch(Y){case 1:return"resData = x[xIndex];";case 3:return`resData = vec3<${p}>(x[xIndex], x[xIndex + 1], x[xIndex + 2]);`;case 4:return"resData = x[xIndex / 4];";default:throw new Error(`innerElementSize ${Y} is not supported.`)}},g=Y=>{switch(Y){case 1:return"return w[row * i32(uniforms.w_shape[3]) + colIn];";case 4:return"return w[row * i32(uniforms.w_shape[3]) / 4 + colIn];";default:throw new Error(`innerElementSize ${Y} is not supported.`)}},b=e?`\n let coord = vec4(batch, xRow, xCol, xCh);\n `:`\n let coord = vec4(batch, xCh, xRow, xCol);\n `,w=e?`\n let coords = vec4(\n batch,\n row / outWidth,\n row % outWidth,\n col);\n `:`\n let coords = vec4(\n batch,\n row,\n col / outWidth,\n col % outWidth);\n `,y=e?"i32(uniforms.x_shape[1])":"i32(uniforms.x_shape[2])",_=e?"i32(uniforms.x_shape[2])":"i32(uniforms.x_shape[3])",I=e?"row":"col",$=e?"col":"row",x=`\n let inChannels = i32(uniforms.w_shape[2]);\n let outWidth = ${e?"i32(uniforms.result_shape[2])":"i32(uniforms.result_shape[3])"};\n let outRow = ${I} / outWidth;\n let outCol = ${I} % outWidth;\n\n let WRow = ${$} / (filterDims[1] * inChannels);\n let WCol = ${$} / inChannels % filterDims[1];\n let xRow = outRow * stride[0] + dilation[0] * WRow - pad[0];\n let xCol = outCol * stride[1] + dilation[1] * WCol - pad[1];\n let xCh = ${$} % inChannels;\n var resData = ${Ke(u,p)}(0.0);\n // The bounds checking is always needed since we use it to pad zero for\n // the \'same\' padding type.\n if (xRow >= 0 && xRow < ${y} && xCol >= 0 && xCol < ${_}) {\n ${b}\n let xIndex = getIndexFromCoords4D(coord, vec4(uniforms.x_shape));\n ${h(u)}\n }\n return resData;`,E=e?t&&o?`\n let col = colIn * ${u};\n ${x}`:`\n let col = colIn * ${u};\n if (row < uniforms.dimAOuter && col < uniforms.dimInner) {\n ${x}\n }\n return ${Ke(u,p)}(0.0);`:o&&r?`\n let col = colIn * ${u};\n ${x}`:`\n let col = colIn * ${u};\n if (row < uniforms.dimInner && col < uniforms.dimBOuter) {\n ${x}\n }\n return ${Ke(u,p)}(0.0);`,A=`${g(l)}`,z=Ke(a,p),R=e?Ke(u,p):Ke(l,p),V=e?Ke(l,p):Ke(u,p),{activationFunction:T,applyActivation:N}=gt(s,z);return`\n ${T}\n fn mm_readA(batch: i32, row : i32, colIn : i32) -> ${R} {\n ${e?E:A}\n }\n\n fn mm_readB(batch: i32, row : i32, colIn : i32) -> ${V} {\n ${e?A:E}\n }\n\n fn mm_write(batch: i32, row : i32, colIn : i32, valueIn : ${z}) {\n let col = colIn * ${a};\n if (row < uniforms.dimAOuter && col < uniforms.dimBOuter)\n {\n var value = valueIn;\n let outWidth = ${e?"i32(uniforms.result_shape[2])":"i32(uniforms.result_shape[3])"};\n ${w}\n ${Xr(n)}\n ${N}\n setOutputAtCoords(coords[0], coords[1], coords[2], coords[3], value);\n }\n }`},Wi=(e,t,r,o,n,s,u,l)=>{let a=t.format==="NHWC",p=a?e[0].dims[3]:e[0].dims[1],h=r[0],g=a?r[2]:r[3],b=a?r[1]:r[2],w=a?r[3]:r[1],y=a&&(p%4===0||p%3===0)&&w%4===0,_=a?w:g*b,I=a?g*b:w,$=[8,8,1],x=o<=8?[4,1,1]:[4,4,1],E=[Math.ceil(_/$[0]/x[0]),Math.ceil(I/$[1]/x[1]),Math.ceil(h/$[2]/x[2])];Be("verbose",()=>`[conv2d_mm_webgpu] dispatch = ${E}`);let A=y?a&&p%4!==0?3:4:1,z=$[1]*x[1],R=$[0]*x[0],V=Math.max($[0]*A,$[1]),T=o%z===0,N=n%R===0,te=s%V===0,Y=y?[A,4,4]:[1,1,1],K=Le(e[0].dataType),Q=y?4:1,Z=[{type:"int32",data:o},{type:"int32",data:n},{type:"int32",data:s}],Ee=M("x",e[0].dataType,e[0].dims.length,A===3?1:A),Pe=M("w",e[1].dataType,e[1].dims.length,Q),fe=[Ee,Pe];Z.push(...L(e[0].dims)),Z.push(...L(e[1].dims));let Ie=`\n fn setOutputAtIndex(flatIndex : i32, value : ${y?`vec4<${K}>`:K}) {\n result[flatIndex] = ${y?`vec4<${K}>`:K}(value);\n }\n fn setOutputAtCoords(d0 : i32, d1 : i32, d2 : i32, d3 : i32, value : ${y?`vec4<${K}>`:K}) {\n let flatIndex = getOutputIndexFromCoords(vec4(d0, d1, d2, d3));\n setOutputAtIndex(flatIndex ${y?"/ 4":""}, value);\n }`;if(u){let ye=M("bias",e[2].dataType,e[2].dims.length,Q);fe.push(ye),Z.push(...L(e[2].dims)),Ie+=`\n fn getBiasByOutputCoords(coords : vec4) -> ${y?`vec4<${K}>`:K} {\n return bias[coords.${a?"w":"y"}${y?"/ 4":""}];\n }`}let he=F("result",e[0].dataType,r.length,Q);return Z.push(...L(r)),{name:"Conv2DMatMul",shaderCache:{hint:t.cacheKey},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:E[0],y:E[1],z:E[2]},programUniforms:Z}),getShaderSource:ye=>`\n ${en("uniforms.result_strides")}\n //struct Uniforms { xShape : vec4, wShape : vec4, outShape : vec4,\n // outShapeStrides: vec3, filterDims : vec2, pad : vec2, stride : vec2,\n // dilation : vec2, dimAOuter : i32, dimBOuter : i32, dimInner : i32 };\n ${ye.registerUniform("dimAOuter","i32").registerUniform("dimBOuter","i32").registerUniform("dimInner","i32").declareVariables(...fe,he)}\n const filterDims : vec2 = vec2(${t.kernelShape[0]}, ${t.kernelShape[1]});\n const pad : vec2 = vec2(${t.pads[0]}, ${t.pads[1]});\n const stride : vec2 = vec2(${t.strides[0]}, ${t.strides[1]});\n const dilation : vec2 = vec2(${t.dilations[0]}, ${t.dilations[1]});\n ${Ie}\n ${ll(a,T,N,te,u,t,Y[0],Y[1],Y[2],K)}\n ${y?mr(x,$,K,void 0,!a,V):fr(x,$,K,void 0,!a,V,!1,void 0,l)}`}}});var Wn,Gi=j(()=>{"use strict";$e();ve();Gn();It();Wn=(e,t,r)=>{let o=e.length>2,n=o?"value += b[output_channel];":"",s=e[0].dims,u=e[1].dims,l=u[0]/t.group,a=t.format==="NHWC",p=Hn(s,u,t.dilations,t.pads,t.strides,a),h=U.size(p),g=F("output",e[0].dataType,p),{activationFunction:b,applyActivation:w}=gt(t,g.type.value),y=M("x",e[0].dataType,s),_=M("w",e[1].dataType,u),I=[y,_];o&&I.push(M("b",e[2].dataType,e[2].dims));let $=x=>`\n const strides: vec2 = vec2(${t.strides[0]}u, ${t.strides[1]}u);\n const pads: vec2 = vec2(${t.pads[0]}u, ${t.pads[1]}u);\n\n ${x.declareVariables(...I,g)}\n\n ${b}\n\n ${x.mainStart()}\n ${x.guardAgainstOutOfBoundsWorkgroupSizes(h)}\n\n let outputIndices = ${g.offsetToIndices("global_idx")};\n let batch: u32 = outputIndices[0];\n let output_channel: u32 = outputIndices[${a?3:1}];\n let xRCCorner: vec2 = vec2(outputIndices[${a?1:2}], outputIndices[${a?2:3}]) * strides - pads;\n let group_id: u32 = output_channel / ${l}u;\n\n var value: ${g.type.value} = ${g.type.value}(0);\n for (var wInChannel: u32 = 0u; wInChannel < ${u[1]}u; wInChannel++) {\n let input_channel = group_id * ${u[1]}u + wInChannel;\n for (var wHeight: u32 = 0u; wHeight < ${u[2]}u; wHeight++) {\n let xHeight = xRCCorner.x + wHeight * ${t.dilations[0]}u;\n\n if (xHeight < 0u || xHeight >= ${s[a?1:2]}u) {\n continue;\n }\n\n for (var wWidth: u32 = 0u; wWidth < ${u[3]}u; wWidth++) {\n let xWidth = xRCCorner.y + wWidth * ${t.dilations[1]}u;\n if (xWidth < 0u || xWidth >= ${s[a?2:3]}u) {\n continue;\n }\n\n let xVal = ${a?y.get("batch","xHeight","xWidth","input_channel"):y.get("batch","input_channel","xHeight","xWidth")};\n let wVal = ${_.get("output_channel","wInChannel","wHeight","wWidth")};\n value += xVal*wVal;\n }\n }\n }\n ${n}\n ${w}\n ${g.setByOffset("global_idx","value")}\n }`;return{name:"GroupedConv",shaderCache:{hint:t.cacheKey},getRunData:()=>({outputs:[{dims:r?r(p):p,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(h/64)}}),getShaderSource:$}}});var Ln,cl,Li,Fn=j(()=>{"use strict";$e();hr();ve();It();Ln=(e,t,r,o,n=!1)=>{let s=e[0].dims,u=e[1].dims,l=s[s.length-2],a=u[u.length-1],p=s[s.length-1],h=Fe(a),g=Fe(p),b=Fe(l),w=U.size(r)/h/b,y=e.length>2,_=o?o.slice(0,-2):r.slice(0,-2),$=[U.size(_),l,a],x=[{type:"uint32",data:w},{type:"uint32",data:l},{type:"uint32",data:a},{type:"uint32",data:p},...L(_),...L(s),...L(u)];y&&x.push(...L(e[2].dims)),x.push(...L($));let E=A=>{let z=Fr("batch_dims",e[0].dataType,_.length),R=M("a",e[0].dataType,s.length,g),V=M("b",e[1].dataType,u.length,h),T=F("output",e[0].dataType,$.length,h),{activationFunction:N,applyActivation:te}=gt(t,T.type.value),Y=[R,V],K="";if(y){let he=n?h:1;Y.push(M("bias",e[2].dataType,e[2].dims.length,he)),K=`${n?`value += bias[col / ${he}];`:`value += ${T.type.value}(bias[row + i]);`}`}let Q=s.slice(0,-2),Z=u.slice(0,-2),Ee=Ft(Q,_),Pe=Ft(Z,_),fe=(he,ye)=>{let We=he.rank,De=he.name;if(We===2)return`var ${De}_indices = ${he.type.indices}(0u, 0u);`;let Ge=z.rank,G=`var ${De}_indices: ${he.type.indices};`;for(let ee=We-2-1,be=Ge-1;ee>=0;ee--,be--)G+=`\n${De}_indices[${ee}] = ${Ge>1?`batch_indices[${be}]`:"batch_indices"};`;return ye.forEach(ee=>{G+=`\n${De}_indices[${ee}] = 0;`}),G+=`${De}_indices[${We-2}] = 0u;\n ${De}_indices[${We-1}] = 0u;`,G},Ie=()=>{let he=`var a_data: ${R.type.value};`;for(let ye=0;ye;\n for (var k: u32 = 0u; k < uniforms.K; k = k + ${g}) {\n ${Ie()}\n }\n for (var i = 0u; i < ${b}u; i++) {\n var value = values[i];\n ${K}\n ${te}\n let cur_indices = ${T.type.indices}(batch, row + i, col);\n let offset = ${T.indicesToOffset("cur_indices")};\n ${T.setByOffset(`offset / ${h}`,"value")};\n }\n }\n `};return{name:"MatMulNaive",shaderCache:{hint:`${t.activationCacheKey}_${h}_${g}_${b}_${n}`,inputDependencies:y?["rank","rank","rank"]:["rank","rank"]},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(w/64)},programUniforms:x}),getShaderSource:E}},cl=e=>{if(!e||e.length!==2)throw new Error("MatMul requires 2 inputs.");if(e[0].dims[e[0].dims.length-1]!==e[1].dims[e[1].dims.length-2])throw new Error("shared dimension does not match.")},Li=e=>{cl(e.inputs);let t=dt.calcShape(e.inputs[0].dims,e.inputs[1].dims,!0);if(!t)throw new Error("Can\'t use matmul on the given tensors");let r=t[t.length-1],o=e.inputs[0].dims[e.inputs[0].dims.length-1];r<8&&o<8?e.compute(Ln(e.inputs,{activation:"",activationCacheKey:""},t)):e.compute(tn(e.inputs,{activation:"",activationCacheKey:""},t))}});var Hn,Fi,pl,ji,jn,ml,fl,qn,Gn=j(()=>{"use strict";$e();je();Hi();hr();Gi();It();Fn();jt();Hn=(e,t,r,o,n,s)=>{let u=e[0],l=e.slice(s?1:2,s?3:4),a=l.length,p=t[0],g=t.slice(2).map((y,_)=>y+(y-1)*(r[_]-1)),w=l.map((y,_)=>y+o[_]+o[_+a]).map((y,_)=>Math.floor((y-g[_]+n[_])/n[_]));return w.splice(0,0,u),w.splice(s?3:1,0,p),w},Fi=[2,3,1,0],pl=(e,t)=>{if(!e||e.length!==2&&e.length!==3)throw new Error("Conv requires 2 or 3 inputs");if(e[0].dims.length!==4&&e[0].dims.length!==3)throw new Error("currently only support conv 1D and 2D");if(e[0].dims.length!==e[1].dims.length)throw new Error("filter does not have same dimension as input");let r=e[0].dims[t.format==="NHWC"?e[0].dims.length-1:1],o=e[1].dims[1]*t.group;if(r!==o)throw new Error("FILTER_IN_CHANNEL should be equal to DATA_CHANNEL");if(e.length===3&&(e[2].dims.length!==1||e[1].dims[0]!==e[2].dims[0]))throw new Error("invalid bias");let n=e[0].dims.length-2;if(t.dilations.length!==n)throw new Error(`dilations should be ${n}D`);if(t.strides.length!==n)throw new Error(`strides should be ${n}D`);if(t.pads.length!==n*2)throw new Error(`pads should be ${n*2}D`);if(t.kernelShape.length!==0&&t.kernelShape.length!==e[1].dims.length-2)throw new Error("invalid kernel shape")},ji=(e,t)=>{let r=e.kernelShape.slice();for(let s=2;s{let t=Qr(e),r=e.format,o=["NOTSET","VALID","SAME_UPPER","SAME_LOWER"][e.auto_pad],n=e.dilations,s=e.group,u=e.kernel_shape,l=e.pads,a=e.strides,p=e.w_is_const();return ge({autoPad:o,format:r,dilations:n,group:s,kernelShape:u,pads:l,strides:a,wIsConst:p,...t})},ml=(e,t,r)=>{let o=ji(r,t),n=r.format==="NHWC";if(r.group!==1){e.compute(Wn(t,o));return}let s=t.length===3,u=t[0].dims[n?1:2],l=t[0].dims[n?2:3],a=t[0].dims[n?3:1],p=t[1].dims[2],h=t[1].dims[3],g=Hn(t[0].dims,t[1].dims,r.dilations,o.pads,r.strides,n),b=g[n?1:2],w=g[n?2:3],y=g[n?3:1],_=n&&p===u&&h===l&&r.pads[0]===0&&r.pads[1]===0;if(_||p===1&&h===1&&r.dilations[0]===1&&r.dilations[1]===1&&r.strides[0]===1&&r.strides[1]===1&&r.pads[0]===0&&r.pads[1]===0){let R=g[0],V,T,N,te=[];if(n){let Q=e.kernelCustomData.wT??e.compute(it(t[1],Fi),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];if(r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=Q),_){let Z=u*l*a;V=t[0].reshape([1,R,Z]),T=Q.reshape([1,Z,y]),N=[1,R,y]}else V=t[0].reshape([R,u*l,a]),T=Q.reshape([1,a,y]),N=[R,b*w,y];te.push(V),te.push(T)}else V=t[0].reshape([R,a,u*l]),T=t[1].reshape([1,y,a]),N=[R,y,b*w],te.push(T),te.push(V);s&&te.push(t[2]);let Y=N[2],K=te[0].dims[te[0].dims.length-1];Y<8&&K<8?e.compute(Ln(te,o,g,N,n),{inputs:te}):e.compute(tn(te,o,g,N,n),{inputs:te});return}let I=!0,$=e.kernelCustomData.wT??e.compute(it(t[1],Fi),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=$);let x=[t[0],$];s&&x.push(t[2]);let E=n?b*w:y,A=n?y:b*w,z=p*h*a;e.compute(Wi(x,o,g,E,A,z,s,I),{inputs:x})},fl=(e,t)=>{let r=t.format==="NHWC",o=[e.inputs[0].reshape(r?[e.inputs[0].dims[0],1,e.inputs[0].dims[1],e.inputs[0].dims[2]]:[e.inputs[0].dims[0],e.inputs[0].dims[1],1,e.inputs[0].dims[2]]),e.inputs[1].reshape([e.inputs[1].dims[0],e.inputs[1].dims[1],1,e.inputs[1].dims[2]])];e.inputs.length===3&&o.push(e.inputs[2]);let n=[0,t.pads[0],0,t.pads[1]],s=[1].concat(t.strides),u=[1].concat(t.dilations),l=[1].concat(t.kernelShape),a=ji({...t,pads:n,strides:s,dilations:u,kernelShape:l},o);e.compute(Wn(o,a,p=>r?[p[0],p[2],p[3]]:[]))},qn=(e,t)=>{pl(e.inputs,t),e.inputs[0].dims.length===3?fl(e,t):ml(e,e.inputs,t)}});var hl,qi,Ki=j(()=>{"use strict";Ct();ve();It();Jr();Nn();hr();hl=(e,t=!1,r,o=4)=>{let n=Ke(o,"f32"),s=x=>{switch(x){case 1:return"return w[getIndexFromCoords4D(coord, vec4(uniforms.w_shape))];";case 4:return`\n let coord1 = vec4(coordX, coordY, col + 1, rowInner);\n let coord2 = vec4(coordX, coordY, col + 2, rowInner);\n let coord3 = vec4(coordX, coordY, col + 3, rowInner);\n let v0 = w[getIndexFromCoords4D(coord, vec4(uniforms.w_shape))];\n let v1 = w[getIndexFromCoords4D(coord1, vec4(uniforms.w_shape))];\n let v2 = w[getIndexFromCoords4D(coord2, vec4(uniforms.w_shape))];\n let v3 = w[getIndexFromCoords4D(coord3, vec4(uniforms.w_shape))];\n return vec4(v0, v1, v2, v3);\n `;default:throw new Error(`innerElementSize ${x} is not supported.`)}},u=e?`\n let coord = vec4(batch, iXR, iXC, xCh);\n `:`\n let coord = vec4(batch, xCh, iXR, iXC);\n `,l=e?`\n let coords = vec4(\n batch,\n row / outWidth,\n row % outWidth,\n col);\n `:`\n let coords = vec4(\n batch,\n row,\n col / outWidth,\n col % outWidth);\n `,a=e?"outBackprop[1]":"outBackprop[2]",p=e?"outBackprop[2]":"outBackprop[3]",h=e?"row":"col",g=e?"col":"row",b=`\n let inChannels = ${e?"outBackprop[3]":"outBackprop[1]"};\n let outWidth = ${e?"i32(uniforms.result_shape[2])":"i32(uniforms.result_shape[3])"};\n let outRow = ${h} / outWidth;\n let outCol = ${h} % outWidth;\n\n let WRow = ${g} / (filterDims[1] * inChannels);\n let WCol = ${g} / inChannels % filterDims[1];\n let xR = f32(outRow - pads[0] + dilation[0] * WRow) / f32(strides[0]);\n let xC = f32(outCol - pads[1] + dilation[1] * WCol) / f32(strides[1]);\n if (xR < 0.0 || xR >= f32(${a}) || fract(xR) > 0.0) {\n return ${n}(0.0);\n }\n if (xC < 0.0 || xC >= f32(${p}) || fract(xC) > 0.0) {\n return ${n}(0.0);\n }\n let iXR = i32(xR);\n let iXC = i32(xC);\n let xCh = ${g} % inChannels;\n ${u}\n return x[getIndexFromCoords4D(coord, vec4(uniforms.x_shape))/${o}];`,w=e?`\n let col = colIn * ${o};\n if (row < uniforms.dimAOuter && col < uniforms.dimInner) {\n ${b}\n }\n return ${n}(0.0);`:`\n let col = colIn * ${o};\n if (row < uniforms.dimInner && col < uniforms.dimBOuter) {\n ${b}\n }\n return ${n}(0.0);`,y=`\n let col = colIn * ${o};\n let inChannels = ${e?"outBackprop[3]":"outBackprop[1]"};\n let coordX = filterDims.x - 1 - row / (filterDims[1] * inChannels);\n let coordY = filterDims.y - 1 - (row / inChannels) % filterDims[1];\n if (${e?"row < uniforms.dimInner && col < uniforms.dimBOuter":"row < uniforms.dimInner && col < uniforms.dimAOuter"} && coordX >= 0 && coordY >= 0) {\n let rowInner = row % inChannels;\n let coord = vec4(coordX, coordY, col, rowInner);\n ${s(o)}\n }\n return ${n}(0.0);\n `,{activationFunction:_,applyActivation:I}=gt(r,n);return`\n ${_}\n fn mm_readA(batch: i32, row : i32, colIn : i32) -> ${n} {\n ${e?w:y}\n }\n\n fn mm_readB(batch: i32, row : i32, colIn : i32) -> ${n} {\n ${e?y:w}\n }\n\n fn mm_write(batch: i32, row : i32, colIn : i32, valueInput : ${n}) {\n let col = colIn * ${o};\n if (row < uniforms.dimAOuter && col < uniforms.dimBOuter) {\n var value = valueInput;\n let outWidth = ${e?"i32(uniforms.result_shape[2])":"i32(uniforms.result_shape[3])"};\n ${l}\n ${Xr(t)}\n ${I}\n result[getIndexFromCoords4D(coords, vec4(uniforms.result_shape))/${o}] = value;\n }\n }`},qi=(e,t,r,o,n,s,u,l)=>{let a=t.format==="NHWC",p=a?e[0].dims[3]:e[0].dims[1],h=r[0],g=a?r[2]:r[3],b=a?r[1]:r[2],w=a?r[3]:r[1],y=a?p%4===0&&w%4===0:g%4===0&&w%4===0,_=a?w:g*b,I=a?g*b:w,$=y?[8,8,1]:[_<=4||I<=4?4:16,_>4&&I<=4?4:16,1],x=y?[4,4,1]:[_<=4?1:4,_>4&&I<=4?1:4,1],E=[Math.ceil(_/$[0]/x[0]),Math.ceil(I/$[1]/x[1]),Math.ceil(h/$[2]/x[2])];Be("verbose",()=>`[conv_backprop_mm_webgpu] dispatch = ${E}`);let A=y?4:1,z=Math.max($[0]*A,$[1]),R=y?4:1,V=[{type:"int32",data:o},{type:"int32",data:n},{type:"int32",data:s}],T=M("x",e[0].dataType,e[0].dims.length,R),N=M("w",e[1].dataType,e[1].dims.length,1),te=F("result",e[0].dataType,r.length,R),Y=[T,N];V.push(...L(e[0].dims)),V.push(...L(e[1].dims));let K="";if(u){let Q=M("bias",e[2].dataType,e[2].dims.length,R);Y.push(Q),V.push(...L(e[2].dims)),K+=`\n fn getBiasByOutputCoords(coords : vec4) -> ${y?"vec4":"f32"} {\n return bias[coords.${a?"w":"y"}${y?"/ 4":""}];\n }`}return V.push(...L(r)),{name:"Conv2DTransposeMatMul",shaderCache:{hint:t.cacheKey},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:E[0],y:E[1],z:E[2]},programUniforms:V}),getShaderSource:Q=>`\n ${en("uniforms.result_strides")}\n ${Q.registerUniform("dimAOuter","i32").registerUniform("dimBOuter","i32").registerUniform("dimInner","i32").declareVariables(...Y,te)};\n const outBackprop : vec4 = vec4(${e[0].dims.join(",")});\n const filterDims : vec2 = vec2(${t.kernelShape[a?1:2]}, ${t.kernelShape[a?2:3]});\n const effectiveFilterDims : vec2 = filterDims + vec2(\n ${t.dilations[0]<=1?0:(t.kernelShape[a?1:2]-1)*(t.dilations[0]-1)},\n ${t.dilations[1]<=1?0:(t.kernelShape[a?2:3]-1)*(t.dilations[1]-1)});\n const pads : vec2 = vec2(i32(effectiveFilterDims[0]) - 1 - (${t.pads[0]+t.pads[2]})/2,\n i32(effectiveFilterDims[1]) - 1 - (${t.pads[1]+t.pads[3]})/2);\n const strides : vec2 = vec2(${t.strides[0]}, ${t.strides[1]});\n const dilation : vec2 = vec2(${t.dilations[0]}, ${t.dilations[1]});\n const dimAOuter : i32 = ${o};\n const dimBOuter : i32 = ${n};\n const dimInner : i32 = ${s};\n ${K}\n ${hl(a,u,t,A)}\n ${y?mr(x,$,"f32",void 0,!a,z):fr(x,$,"f32",void 0,!a,z,!1,void 0,l)}`}}});var gl,Kn,Yi=j(()=>{"use strict";Ct();$e();ve();gl=(e,t,r,o,n,s,u=!1,l)=>{let a=r.format==="NHWC",p=a?1:2,h=a?2:3,g=a?3:1,b=U.size(o),w=u?2:1,y=r.group,_=t[1].dims,I=_[0]/y,$=_[1],x=`\n fn setOutputAtIndex(flatIndex : u32, value : ${u?`vec4<${l}>`:l}) {\n result[flatIndex] = ${u?`vec4<${l}>`:l}(value);\n }`;n&&(x+=`\n fn getBiasByOutputCoords(coords : vec4) -> ${u?`vec4<${l}>`:l} {\n return bias[coords.${a?"w":"y"}${u?"/ 4":""}];\n }`);let E=u?4:1,A=M("W",t[1].dataType,t[1].dims,E),z=M("Dy",t[0].dataType,t[0].dims,E),R=[z,A];n&&R.push(M("bias",t[2].dataType,[o[g]],E));let V=F("result",t[0].dataType,o,E),T=`{\n let batch: u32 = ${s?"global_id.z":"workgroup_id.z"} / outShape[1];\n let r = ${s?"global_id.z":"workgroup_id.z"} % outShape[1];\n let c = ${s?"global_id.y":"workgroup_id.y"} * ${w};\n let d1: u32 = ${s?"global_id.x":"workgroup_id.x"} * 4;\n\n let dyCorner = vec2(i32(r), i32(c)) - vec2(pads);\n\n // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).\n // ? = to be determined. : = across all values in that axis.\n var dotProd: array, ${w}>;\n for (var i = 0; i < ${w}; i++) {\n dotProd[i] = vec4<${l}>(0.0);\n }\n for (var wR: u32 = 0; wR < filterDims[0]; wR = wR + 1) {\n var dyR = (${l}(dyCorner.x) + ${l}(wR)) / ${l}(strides.x);\n let wRPerm = filterDims[0] - 1 - wR;\n if (dyR < 0.0 || dyR >= ${l}(outBackprop[1]) ||\n fract(dyR) > 0.0 || wRPerm < 0) {\n continue;\n }\n let idyR: u32 = u32(dyR);\n\n for (var wC: u32 = 0; wC < filterDims[1]; wC = wC + 1) {\n let dyC = (${l}(dyCorner.y) + ${l}(wC)) / ${l}(strides.y);\n let dyC2 = (${l}(dyCorner.y) + 1.0 + ${l}(wC)) / ${l}(strides.y);\n let wCPerm = filterDims[1] - 1 - wC;\n if (wCPerm < 0) {\n continue;\n }\n var bDyCVal = true;\n var bDyCVal2 = true;\n if (dyC < 0.0 || dyC >= ${l}(outBackprop[2]) ||\n fract(dyC) > 0.0) {\n bDyCVal = false;\n }\n if (dyC2 < 0.0 || dyC2 >= ${l}(outBackprop[2]) ||\n fract(dyC2) > 0.0) {\n bDyCVal2 = false;\n }\n\n let idyC: u32 = u32(dyC);\n let idyC2: u32 = u32(dyC2);\n if (bDyCVal && bDyCVal2) {\n let d2Length = outBackprop[3];\n for (var d2 :u32 = 0; d2 < d2Length; d2 = d2 + 4) {\n let wValue0 = ${A.get("u32(wRPerm)","u32(wCPerm)","d1","d2")};\n let wValue1 = ${A.get("u32(wRPerm)","u32(wCPerm)","d1 + 1","d2")};\n let wValue2 = ${A.get("u32(wRPerm)","u32(wCPerm)","d1 + 2","d2")};\n let wValue3 = ${A.get("u32(wRPerm)","u32(wCPerm)","d1 + 3","d2")};\n\n var xValue = ${z.get("batch","idyR","idyC","d2")};\n let tmpval = vec4<${l}>(dot(xValue, wValue0),\n dot(xValue, wValue1),\n dot(xValue, wValue2),\n dot(xValue, wValue3));\n dotProd[0] = dotProd[0] + tmpval;\n\n xValue = ${z.get("batch","idyR","idyC2","d2")};\n\n dotProd[1] = dotProd[1] + vec4<${l}>(dot(xValue, wValue0),\n dot(xValue, wValue1),\n dot(xValue, wValue2),\n dot(xValue, wValue3));\n }\n } else if (bDyCVal) {\n let d2Length = outBackprop[${g}];\n for (var d2: u32 = 0; d2 < d2Length; d2 = d2 + 4) {\n let wValue0 = ${A.get("u32(wRPerm)","u32(wCPerm)","d1","d2")};\n let wValue1 = ${A.get("u32(wRPerm)","u32(wCPerm)","d1 + 1","d2")};\n let wValue2 = ${A.get("u32(wRPerm)","u32(wCPerm)","d1 + 2","d2")};\n let wValue3 = ${A.get("u32(wRPerm)","u32(wCPerm)","d1 + 3","d2")};\n\n var xValue = ${z.get("batch","idyR","idyC","d2")};\n let tmpval = vec4<${l}>(dot(xValue, wValue0),\n dot(xValue, wValue1),\n dot(xValue, wValue2),\n dot(xValue, wValue3));\n dotProd[0] = dotProd[0] + tmpval;\n }\n } else if (bDyCVal2) {\n let d2Length = outBackprop[3];\n for (var d2: u32 = 0; d2 < d2Length; d2 = d2 + 4) {\n let wValue0 = ${A.get("u32(wRPerm)","u32(wCPerm)","d1","d2")};\n let wValue1 = ${A.get("u32(wRPerm)","u32(wCPerm)","d1 + 1","d2")};\n let wValue2 = ${A.get("u32(wRPerm)","u32(wCPerm)","d1 + 2","d2")};\n let wValue3 = ${A.get("u32(wRPerm)","u32(wCPerm)","d1 + 3","d2")};\n\n var xValue = ${z.get("batch","idyR","idyC2","d2")};\n let tmpval = vec4<${l}>(dot(xValue, wValue0),\n dot(xValue, wValue1),\n dot(xValue, wValue2),\n dot(xValue, wValue3));\n dotProd[1] = dotProd[1] + tmpval;\n }\n }\n }\n }\n\n for (var i: u32 = 0; i < ${w}; i = i + 1) {\n let value = dotProd[i] + ${n?"bias[c+i]":`vec4<${l}>(0.0)`};\n ${V.set("batch","r","c + i","d1","value")};\n }\n }`,N=`\n let outputIndices = ${V.offsetToIndices("global_idx")};\n let batch = ${V.indicesGet("outputIndices",0)};\n let d1 = ${V.indicesGet("outputIndices",g)};\n let r = ${V.indicesGet("outputIndices",p)};\n let c = ${V.indicesGet("outputIndices",h)};\n let dyCorner = vec2(i32(r), i32(c)) - pads;\n let dyRCorner = dyCorner.x;\n let dyCCorner = dyCorner.y;\n let groupId = d1 / ${$};\n let wOutChannel = d1 - groupId * ${$};\n // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).\n // ? = to be determined. : = across all values in that axis.\n var dotProd = ${l}(0.0);\n for (var wR: u32 = 0; wR < effectiveFilterDims.x; wR = wR + 1) {\n if (wR % dilations.x != 0) {\n continue;\n }\n let dyR = (${l}(dyRCorner) + ${l}(wR)) / ${l}(strides[0]);\n let wRPerm = filterDims.x - 1 - wR / dilations.x;\n if (dyR < 0.0 || dyR >= ${l}(outBackprop[${p}]) || fract(dyR) > 0.0 ||\n wRPerm < 0) {\n continue;\n }\n let idyR: u32 = u32(dyR);\n\n for (var wC: u32 = 0; wC < effectiveFilterDims.y; wC = wC + 1) {\n if (wC % dilations.y != 0) {\n continue;\n }\n let dyC = (${l}(dyCCorner) + ${l}(wC)) / ${l}(strides.y);\n let wCPerm = filterDims.y - 1 - wC / dilations.y;\n if (dyC < 0.0 || dyC >= ${l}(outBackprop[${h}]) ||\n fract(dyC) > 0.0 || wCPerm < 0) {\n continue;\n }\n let idyC: u32 = u32(dyC);\n var inputChannel = groupId * ${I};\n for (var d2: u32 = 0; d2 < ${I}; d2 = d2 + 1) {\n let xValue = ${a?z.get("batch","idyR","idyC","inputChannel"):z.get("batch","inputChannel","idyR","idyC")};\n let wValue = ${A.get("inputChannel","wOutChannel","u32(wRPerm)","u32(wCPerm)")};\n dotProd = dotProd + xValue * wValue;\n inputChannel = inputChannel + 1;\n }\n }\n }\n let value = dotProd + ${n?"bias[d1]":`${l}(0.0)`};\n ${V.setByOffset("global_idx","value")};\n `;return`\n ${e.declareVariables(...R,V)}\n ${x}\n const outShape : vec4 = vec4(${o.join(",")});\n const outBackprop : vec4 = vec4(${t[0].dims.join(",")});\n const strides : vec2 = vec2(${r.strides[0]}, ${r.strides[1]});\n const filterDims : vec2 = vec2(${r.kernelShape[a?1:2]}, ${r.kernelShape[a?2:3]});\n const dilations : vec2 = vec2(${r.dilations[0]}, ${r.dilations[1]});\n const effectiveFilterDims : vec2 = filterDims + vec2(\n ${r.dilations[0]<=1?0:(r.kernelShape[a?1:2]-1)*(r.dilations[0]-1)},\n ${r.dilations[1]<=1?0:(r.kernelShape[a?2:3]-1)*(r.dilations[1]-1)});\n const pads : vec2 = vec2(i32(effectiveFilterDims[0]) - 1 - (${r.pads[0]+r.pads[2]})/2,\n i32(effectiveFilterDims[1]) - 1 - (${r.pads[1]+r.pads[3]})/2);\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes(b)};\n ${u?T:N}}`},Kn=(e,t,r)=>{let o=e.length>2,n=t.outputShape,s=U.size(n),u=[Math.ceil(s/64),1,1];Be("verbose",()=>`[conv2d_backprop_webgpu] dispatch = ${u}`);let l=Le(e[0].dataType);return{name:"ConvTranspose2D",shaderCache:{hint:t.cacheKey},getRunData:()=>({dispatchGroup:{x:u[0],y:u[1],z:u[2]},outputs:[{dims:r?r(n):n,dataType:e[0].dataType}]}),getShaderSource:a=>gl(a,e,t,n,o,u[1]===1&&u[2]===1,!1,l)}}});var yl,bl,wl,Zi,Qi,vl,$l,Sl,xl,Xi,Ji=j(()=>{"use strict";je();Ki();Yi();It();jt();yl=(e,t,r,o,n,s)=>(e-1)*t+r+(o-1)*n+1-s,bl=(e,t,r,o,n)=>{let s=Math.floor(e/2);t==="SAME_UPPER"?(r[o]=s,r[n]=e-s):t==="SAME_LOWER"&&(r[o]=e-s,r[n]=s)},wl=(e,t,r,o,n,s,u,l,a,p)=>{let h=e.length-2,g=p.length===0;if(a.length===0)for(let y=0;y{let r=e.kernelShape.slice();if(e.kernelShape.length===0||e.kernelShape.reduce((b,w)=>b*w,1)===0){r.length=0;for(let b=2;bb+w,0)===0){let b=t[0].dims.length-2;a=new Array(b).fill(1)}let p=e.strides.slice();if(p.reduce((b,w)=>b+w,0)===0){let b=t[0].dims.length-2;p=new Array(b).fill(1)}wl(l,r,a,e.autoPad,e.group,n,p,o,u,s);let h=Object.assign({},e),g=e.cacheKey+[r.join("n,"),n.join(","),p.join(","),u.join(","),s.join(","),a.join(",")].join("_");return Object.assign(h,{kernelShape:r,pads:n,outputPadding:u,outputShape:s,dilations:a,strides:p,cacheKey:g}),h},Qi=e=>{let t=Qr(e),r=e.format,o=["NOTSET","VALID","SAME_UPPER","SAME_LOWER"][typeof e.autoPad>"u"?0:e.autoPad],n=e.dilations,s=e.group,u=e.kernelShape,l=e.pads,a=e.strides,p=e.wIsConst(),h=e.outputPadding,g=e.outputShape;return ge({autoPad:o,format:r,dilations:n,group:s,kernelShape:u,outputPadding:h,outputShape:g,pads:l,strides:a,wIsConst:p,...t})},vl=(e,t)=>{if(!e||e.length!==2&&e.length!==3)throw new Error("Conv requires 2 or 3 inputs");if(e[0].dims.length!==4&&e[0].dims.length!==3)throw new Error("currently only support 2-dimensional conv");if(e[0].dims.length!==e[1].dims.length)throw new Error("filter does not have same dimension as input");let r=e[0].dims[t.format==="NHWC"?e[0].dims.length-1:1],o=e[1].dims[0];if(r!==o)throw new Error("FILTER_IN_CHANNEL should be equal to DATA_CHANNEL");let n=e[1].dims[1]*t.group;if(e.length===3&&(e[2].dims.length!==1||e[2].dims[0]!==n))throw new Error("invalid bias");let s=e[0].dims.length-2;if(t.dilations.reduce((h,g)=>h+g,0)>0&&t.dilations.length!==s)throw new Error(`dilations should be ${s}D`);if(t.strides.reduce((h,g)=>h+g,0)>0&&t.strides.length!==s)throw new Error(`strides should be ${s}D`);if(t.pads.reduce((h,g)=>h+g,0)>0&&t.pads.length!==s*2)throw new Error(`pads should be ${s*2}D`);if(t.outputPadding.length!==s&&t.outputPadding.length!==0)throw new Error(`output_padding should be ${s}D`);if(t.kernelShape.reduce((h,g)=>h+g,0)>0&&t.kernelShape.length!==0&&t.kernelShape.length!==e[1].dims.length-2)throw new Error("invalid kernel shape");if(t.outputShape.length!==0&&t.outputShape.length!==e[0].dims.length-2)throw new Error("invalid output shape")},$l=[2,3,1,0],Sl=(e,t,r)=>{let o=Zi(r,t),n=r.format==="NHWC",s=o.outputShape,u=s[n?3:1],l=t[0].dims[n?3:1];if(o.group!==1||u===1&&l===1){e.compute(Kn(t,o));return}let a=s[n?1:2],p=s[n?2:3],h=t[1].dims[2],g=t[1].dims[3],b=n?a*p:u,w=n?u:a*p,y=h*g*l,_=!0,I=e.kernelCustomData.wT??e.compute(it(t[1],$l),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=I);let $=[t[0],I],x=t.length===3;x&&(!n&&t[2].dims.length===1?$.push(t[2].reshape([t[2].dims[0],1,1])):$.push(t[2])),e.compute(qi($,o,s,b,w,y,x,_),{inputs:$})},xl=(e,t)=>{let r=t.format==="NHWC",o=[e.inputs[0].reshape(r?[e.inputs[0].dims[0],1,e.inputs[0].dims[1],e.inputs[0].dims[2]]:[e.inputs[0].dims[0],e.inputs[0].dims[1],1,e.inputs[0].dims[2]]),e.inputs[1].reshape([e.inputs[1].dims[0],e.inputs[1].dims[1],1,e.inputs[1].dims[2]])];o.length===3&&o.push(e.inputs[2]);let n=t.kernelShape;(n.length===0||n[0]===0)&&(n=[e.inputs[1].dims[2]]);let s=t.dilations;(s.length===0||s[0]===0)&&(s=[1]);let u=t.strides;(u.length===0||u[0]===0)&&(u=[1]);let l=t.pads;l.length===0&&(l=[0,0]),l=[0,l[0],0,l[1]],u=[1].concat(u),s=[1].concat(s),n=[1].concat(n);let a=Zi({...t,pads:l,strides:u,dilations:s,kernelShape:n},o);e.compute(Kn(o,a,p=>r?[p[0],p[2],p[3]]:[p[0],p[1],p[3]]))},Xi=(e,t)=>{vl(e.inputs,t),e.inputs[0].dims.length===3?xl(e,t):Sl(e,e.inputs,t)}});var _l,es,ts,rs=j(()=>{"use strict";Ne();$e();je();ve();_l=(e,t,r,o)=>{let n=U.size(t),s=t.length,u=M("input",e,s),l=F("output",e,s),a=r.dataType===6?r.getInt32Array()[0]:Number(r.getBigInt64Array()[0]),p=U.normalizeAxis(a,s),h=g=>{let b=` i32(${u.indicesGet("inputIndices","uniforms.axis")}) `,w=ce("uniforms.input_shape","uniforms.axis",s),y=o.reverse?b+(o.exclusive?" + 1":""):"0",_=o.reverse?w:b+(o.exclusive?"":" + 1");return`\n ${g.registerUniform("outputSize","u32").registerUniform("axis","u32").declareVariables(u,l)}\n ${g.mainStart()}\n ${g.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n var inputIndices = ${l.offsetToIndices("global_idx")};\n var sum = ${l.type.value}(0);\n let first : i32 = ${y};\n let last : i32 = ${_};\n for (var i : i32 = first; i < last; i++) {\n ${u.indicesSet("inputIndices","uniforms.axis","u32(i)")};\n sum = sum + ${u.getByIndices("inputIndices")};\n }\n ${l.setByOffset("global_idx","sum")};\n }`};return{name:"CumSum",shaderCache:{hint:o.cacheKey,inputDependencies:["rank"]},getRunData:()=>({outputs:[{dims:t,dataType:e}],dispatchGroup:{x:Math.ceil(n/64)},programUniforms:[{type:"uint32",data:n},{type:"int32",data:p},...L(t),...L(t)]}),getShaderSource:h}},es=(e,t)=>{let r=e.inputs[0].dims,o=e.inputs[0].dataType,n=e.inputs[1];e.compute(_l(o,r,n,t),{inputs:[0]})},ts=e=>{let t=e.exclusive===1,r=e.reverse===1;return ge({exclusive:t,reverse:r})}});var Yn,rn,ns,Cl,Il,Zn,Qn,os,Al,as,is,ss=j(()=>{"use strict";$e();je();ve();Yn="[a-zA-Z]|\\\\.\\\\.\\\\.",rn="("+Yn+")+",ns="^"+rn+"$",Cl="("+rn+",)*"+rn,Il="^"+Cl+"$",Zn=class{constructor(t=-1){this.symbolToIndices=new Map,this.inputIndex=t}addSymbol(t,r){let o=this.symbolToIndices.get(t);o===void 0?o=[r]:o.push(r),this.symbolToIndices.set(t,o)}},Qn=class{constructor(t,r){this.equation=r;this.hasEllipsis=!1,this.symbolToInfo=new Map,this.lhs=new Array,this.outputDims=[];let[o,n]=r.includes("->")?r.split("->",2):[r,""];if(!o.match(RegExp(Il)))throw new Error("Invalid LHS term");if(o.split(",").forEach((l,a)=>{let p=t[a].dims.slice();if(!l.match(RegExp(ns)))throw new Error("Invalid LHS term");let h=this.processTerm(l,!0,p,a);this.lhs.push(h)}),n==="")n+=[...this.symbolToInfo.entries()].filter(([l,a])=>a.count===1||l==="...").map(([l])=>l).join("");else if(!n.match(RegExp(rn)))throw new Error("Invalid RHS");n.match(RegExp(Yn,"g"))?.forEach(l=>{if(l==="...")this.outputDims=this.outputDims.concat(this.ellipsisDims);else{let a=this.symbolToInfo.get(l);if(a===void 0)throw new Error("Invalid RHS symbol");this.outputDims.push(a.dimValue)}}),this.rhs=this.processTerm(n,!1,this.outputDims)}addSymbol(t,r,o){let n=this.symbolToInfo.get(t);if(n!==void 0){if(n.dimValue!==r&&n.count!==1)throw new Error("Dimension mismatch");n.count++,n.inputIndices.push(o)}else n={count:1,dimValue:r,inputIndices:[o]};this.symbolToInfo.set(t,n)}processTerm(t,r,o,n=-1){let s=o.length,u=!1,l=[],a=0;if(!t.match(RegExp(ns))&&!r&&t!=="")throw new Error("Invalid LHS term");let p=t.match(RegExp(Yn,"g")),h=new Zn(n);return p?.forEach((g,b)=>{if(g==="..."){if(u)throw new Error("Only one ellipsis is allowed per input term");u=!0;let w=s-p.length+1;if(w<0)throw new Error("Ellipsis out of bounds");if(l=o.slice(a,a+w),this.hasEllipsis){if(this.ellipsisDims.length!==l.length||this.ellipsisDims.toString()!==l.toString())throw new Error("Ellipsis dimensions mismatch")}else if(r)this.hasEllipsis=!0,this.ellipsisDims=l;else throw new Error("Ellipsis must be specified in the LHS");for(let y=0;ye+"_max",Al=(e,t,r,o,n)=>{let u=t.map((w,y)=>e[y]?w.length:w).map((w,y)=>M(`input${y}`,r,w)),l=U.size(n),a=Re(n.length),p=a?n.length:n,h=F("output",r,p),g=[...o.symbolToInfo.keys()].filter(w=>!o.rhs.symbolToIndices.has(w)),b=w=>{let y=[],_="var prod = 1.0;",I="var sum = 0.0;",$="sum += prod;",x=[],E=[],A=[],z=[],R=o.symbolToInfo.size===o.rhs.symbolToIndices.size;o.symbolToInfo.forEach((T,N)=>{if(o.rhs.symbolToIndices.has(N)){let te=o.rhs.symbolToIndices.get(N)?.[0];te!==void 0&&o.lhs.forEach((Y,K)=>{if(T.inputIndices.includes(K)){let Q=Y.symbolToIndices.get(N);if(Q===void 0)throw new Error("Invalid symbol error");Q.forEach(Z=>{y.push(`${u[K].indicesSet(`input${K}Indices`,Z,h.indicesGet("outputIndices",te))}`)})}})}else o.lhs.forEach((te,Y)=>{if(T.inputIndices.includes(Y)){let K=te.symbolToIndices.get(N);if(K===void 0)throw new Error("Invalid symbol error");K.forEach(Q=>{x.push(`${u[Y].indicesSet(`input${Y}Indices`,Q,`${N}`)}`)}),z.push(`prod *= ${u[Y].getByIndices(`input${Y}Indices`)};`)}}),E.push(`for(var ${N}: u32 = 0; ${N} < uniforms.${os(N)}; ${N}++) {`),A.push("}")});let V=R?[...y,`let sum = ${u.map((T,N)=>T.getByIndices(`input${N}Indices`)).join(" * ")};`]:[...y,I,...E,...x,_,...z,$,...A];return`\n ${w.registerUniforms(g.map(T=>({name:`${os(T)}`,type:"u32"}))).registerUniform("outputSize","u32").declareVariables(...u,h)}\n\n ${w.mainStart()}\n ${w.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n var outputIndices = ${h.offsetToIndices("global_idx")};\n ${u.map((T,N)=>`var input${N}Indices: ${u[N].type.indices};`).join(`\n`)}\n ${V.join(`\n`)};\n ${h.setByOffset("global_idx","sum")};\n }`};return{name:"Einsum",shaderCache:{hint:o.equation,inputDependencies:e.map(w=>w?"rank":"dims")},getRunData:()=>{let w=g.filter(_=>o.symbolToInfo.has(_)).map(_=>({type:"uint32",data:o.symbolToInfo.get(_)?.dimValue||0}));w.push({type:"uint32",data:l});let y=t.filter((_,I)=>e[I]).map((_,I)=>[...L(_)]).reduce((_,I)=>_.concat(I),w);return a&&y.push(...L(n)),{outputs:[{dims:n,dataType:r}],dispatchGroup:{x:Math.ceil(l/64)},programUniforms:y}},getShaderSource:b}},as=(e,t)=>{let r=new Qn(e.inputs,t.equation),o=e.inputs.map((u,l)=>Re(u.dims.length)),n=r.outputDims,s=e.inputs.map((u,l)=>u.dims);e.compute(Al(o,s,e.inputs[0].dataType,r,n))},is=e=>{let t=e.equation.replace(/\\s+/g,"");return ge({equation:t})}});var Tl,us,El,Ol,ds,ls=j(()=>{"use strict";Ne();$e();ve();Tl=e=>{if(!e||e.length!==2)throw new Error("Expand requires 2 input.");let t=e[0].dims,r=Array.from(e[1].getBigInt64Array(),Number),o=r.length{let r=e.length-t.length,o=[];for(let n=0;ne.length>t.length?us(e,t):us(t,e),Ol=e=>{let t=e[0].dims,r=Array.from(e[1].getBigInt64Array(),Number),o=El(t,r),n=e[0].dataType,s=n===9?4:1,u=Math.ceil(U.size(o)/s),l=Re(t.length),a=Re(o.length),p=g=>{let b=l?t.length:t,w=a?o.length:o,y=M("input",n,b,s),_=F("output",n,w,s),I;if(n===9){let $=(x,E,A="")=>`\n let outputIndices${E} = ${_.offsetToIndices(`outputOffset + ${E}u`)};\n let offset${E} = ${y.broadcastedIndicesToOffset(`outputIndices${E}`,_)};\n let index${E} = offset${E} / 4u;\n let component${E} = offset${E} % 4u;\n ${x}[${E}] = ${A}(${y.getByOffset(`index${E}`)}[component${E}]);\n `;I=`\n let outputOffset = global_idx * ${s};\n var data = vec4(0);\n ${$("data",0,"u32")}\n ${$("data",1,"u32")}\n ${$("data",2,"u32")}\n ${$("data",3,"u32")}\n ${_.setByOffset("global_idx","data")}\n }`}else I=`\n let outputIndices = ${_.offsetToIndices("global_idx")};\n let inputOffset = ${y.broadcastedIndicesToOffset("outputIndices",_)};\n ${_.setByOffset("global_idx",y.getByOffset("inputOffset"))}\n }`;return`\n ${g.registerUniform("vec_size","u32").declareVariables(y,_)}\n ${g.mainStart()}\n ${g.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")}\n ${I}`},h=[{type:"uint32",data:u}];return l&&h.push(...L(t)),a&&h.push(...L(o)),{name:"Expand",shaderCache:{hint:`${o.length}`,inputDependencies:[l?"rank":"dims"]},getShaderSource:p,getRunData:()=>({outputs:[{dims:o,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:h})}},ds=e=>{Tl(e.inputs),e.compute(Ol(e.inputs),{inputs:[0]})}});var Pl,kl,cs,ps,ms=j(()=>{"use strict";Ne();$e();je();ve();Pl=e=>{if(!e||e.length!==2)throw new Error("Gather requires 2 inputs.")},kl=(e,t)=>{let r=e[0].dims,o=e[1].dims,n=r.length,s=U.normalizeAxis(t.axis,n),u=r.slice(0);u.splice(s,1,...o);let l=r[s],a=e[0].dataType===9?4:1,p=Math.ceil(U.size(u)/a),h=Re(e[0].dims.length),g=h?e[0].dims.length:e[0].dims,b=Re(e[1].dims.length),w=b?e[1].dims.length:e[1].dims,y=Re(u.length),_=y?u.length:u,I=[{type:"uint32",data:p},{type:"int32",data:l},{type:"uint32",data:s}];h&&I.push(...L(e[0].dims)),b&&I.push(...L(e[1].dims)),y&&I.push(...L(u));let $=[];$.push(h?"rank":"dims"),$.push(b?"rank":"dims");let x=E=>{let A=M("data",e[0].dataType,g,a),z=M("inputIndices",e[1].dataType,w),R=F("output",e[0].dataType,_,a),V=N=>{let te=o.length,Y=`var indicesIndices${N} = ${z.type.indices}(0);`;for(let K=0;K1?`indicesIndices${N}[${K}]`:`indicesIndices${N}`} = ${u.length>1?`outputIndices${N}[uniforms.axis + ${K}]`:`outputIndices${N}`};`;Y+=`\n var idx${N} = ${z.getByIndices(`indicesIndices${N}`)};\n if (idx${N} < 0) {\n idx${N} = idx${N} + uniforms.axisDimLimit;\n }\n var dataIndices${N} = ${A.type.indices}(0);\n `;for(let K=0,Q=0;K1?`dataIndices${N}[${K}]`:`dataIndices${N}`} = u32(idx${N});`,Q+=te):(Y+=`${n>1?`dataIndices${N}[${K}]`:`dataIndices${N}`} = ${u.length>1?`outputIndices${N}[${Q}]`:`outputIndices${N}`};`,Q++);return Y},T;if(e[0].dataType===9){let N=(te,Y,K="")=>`\n let outputIndices${Y} = ${R.offsetToIndices(`outputOffset + ${Y}u`)};\n ${V(Y)};\n let offset${Y} = ${A.indicesToOffset(`dataIndices${Y}`)};\n let index${Y} = offset${Y} / 4u;\n let component${Y} = offset${Y} % 4u;\n ${te}[${Y}] = ${K}(${A.getByOffset(`index${Y}`)}[component${Y}]);\n `;T=`\n let outputOffset = global_idx * ${a};\n var value = vec4(0);\n ${N("value",0,"u32")}\n ${N("value",1,"u32")}\n ${N("value",2,"u32")}\n ${N("value",3,"u32")}\n ${R.setByOffset("global_idx","value")}\n `}else T=`\n let outputIndices = ${R.offsetToIndices("global_idx")};\n ${V("")};\n let value = ${A.getByIndices("dataIndices")};\n ${R.setByOffset("global_idx","value")};\n `;return`\n ${E.registerUniform("outputSize","u32").registerUniform("axisDimLimit","i32").registerUniform("axis","u32").declareVariables(A,z,R)}\n ${E.mainStart()}\n ${E.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n ${T}\n }`};return{name:"Gather",shaderCache:{hint:t.cacheKey,inputDependencies:$},getRunData:()=>({outputs:[{dims:u,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(p/64)},programUniforms:I}),getShaderSource:x}},cs=e=>ge({axis:e.axis}),ps=(e,t)=>{let r=e.inputs;Pl(r),e.compute(kl(e.inputs,t))}});var Rl,Bl,fs,hs,gs=j(()=>{"use strict";$e();je();ve();Rl=e=>{if(!e||e.length!==2)throw new Error("GatherElements requires 2 inputs.");if(e[0].dims.length<1)throw new Error("GatherElements requires that the data input be rank >= 1.");if(e[0].dims.length!==e[1].dims.length)throw new Error(`GatherElements requires that the data input and\n indices input tensors be of same rank.`)},Bl=(e,t)=>{let r=e[0].dims,o=e[0].dataType,n=r.length,s=e[1].dims,u=e[1].dataType,l=U.normalizeAxis(t.axis,n),a=r[l],p=s.slice(0),h=U.size(p),g=M("input",o,n),b=M("indicesInput",u,s.length),w=F("output",o,p.length),y=[{type:"uint32",data:h},{type:"int32",data:a},{type:"uint32",data:l}];return y.push(...L(r)),y.push(...L(s)),y.push(...L(p)),{name:"GatherElements",shaderCache:{inputDependencies:["rank","rank"]},getRunData:()=>({outputs:[{dims:p,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(h/64)},programUniforms:y}),getShaderSource:$=>`\n ${$.registerUniform("outputSize","u32").registerUniform("axisDimLimit","i32").registerUniform("axis","u32").declareVariables(g,b,w)}\n ${$.mainStart()}\n ${$.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n\n let outputIndices = ${w.offsetToIndices("global_idx")};\n\n var idx = ${b.getByOffset("global_idx")};\n if (idx < 0) {\n idx = idx + uniforms.axisDimLimit;\n }\n var inputIndices = ${g.type.indices}(outputIndices);\n ${g.indicesSet("inputIndices","uniforms.axis","u32(idx)")};\n let value = ${g.getByIndices("inputIndices")};\n\n ${w.setByOffset("global_idx","value")};\n }`}},fs=e=>ge({axis:e.axis}),hs=(e,t)=>{let r=e.inputs;Rl(r),e.compute(Bl(e.inputs,t))}});var Dl,Ml,ys,bs,ws=j(()=>{"use strict";$e();ve();Dl=e=>{if(!e)throw new Error("Input is missing");if(e.length<2||e.length>3)throw new Error("Invaid input number.");if(e.length===3&&e[2].dims.length>2)throw new Error("Invalid input shape of C");if(e[0].dataType!==e[1].dataType||e.length===3&&e[0].dataType!==e[2].dataType)throw new Error("Input types are mismatched")},Ml=(e,t)=>{let r=e[0].dims.slice(),o=e[1].dims.slice(),[n,s,u]=Hr.getShapeOfGemmResult(r,t.transA,o,t.transB,e.length===3?e[2].dims:void 0),l=[n,s];if(!l)throw new Error("Can\'t use gemm on the given tensors");let a=U.size(l),p=[{type:"uint32",data:a},{type:"uint32",data:n},{type:"uint32",data:s},{type:"uint32",data:u},{type:"float32",data:t.alpha},{type:"float32",data:t.beta}],h=["type","type"];e.length===3&&(p.push(...L(e[2].dims)),h.push("rank")),p.push(...L(l));let g=b=>{let w="";t.transA&&t.transB?w="value += a[k * uniforms.M + m] * b[n * uniforms.K + k];":t.transA&&!t.transB?w="value += a[k * uniforms.M + m] * b[k * uniforms.N + n];":!t.transA&&t.transB?w="value += a[m * uniforms.K + k] * b[n * uniforms.K + k];":!t.transA&&!t.transB&&(w="value += a[m * uniforms.K + k] * b[k * uniforms.N + n];");let y=t.alpha===1?"":"value *= uniforms.alpha;",_=M("a",e[0].dataType,e[0].dims),I=M("b",e[1].dataType,e[1].dims),$=_.type.value,x=null,E=[_,I];e.length===3&&(x=M("c",e[2].dataType,e[2].dims.length),E.push(x));let A=F("output",e[0].dataType,l.length);E.push(A);let z=[{name:"output_size",type:"u32"},{name:"M",type:"u32"},{name:"N",type:"u32"},{name:"K",type:"u32"},{name:"alpha",type:"f32"},{name:"beta",type:"f32"}];return`\n ${b.registerUniforms(z).declareVariables(...E)}\n\n ${b.mainStart()}\n ${b.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}\n\n let m = global_idx / uniforms.N;\n let n = global_idx % uniforms.N;\n\n var value = ${$}(0);\n for (var k: u32 = 0u; k < uniforms.K; k++) {\n ${w}\n }\n\n ${y}\n ${(()=>x!=null?`let cOffset = ${x.broadcastedIndicesToOffset("vec2(m, n)",A)}; value += ${$}(uniforms.beta) * ${x.getByOffset("cOffset")};`:"")()}\n output[global_idx] = value;\n }`};return{name:"Gemm",shaderCache:{hint:`${t.cacheKey}`,inputDependencies:h},getRunData:()=>({outputs:[{dims:l,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:p}),getShaderSource:g}},ys=e=>{let t=e.transA,r=e.transB,o=e.alpha,n=e.beta;return{transA:t,transB:r,alpha:o,beta:n,cacheKey:`${e.transA};${e.transB};${e.alpha===1}`}},bs=(e,t)=>{Dl(e.inputs),e.compute(Ml(e.inputs,t))}});var zl,Ul,Vl,vs,$s=j(()=>{"use strict";Ne();$e();ve();zl=(e,t)=>{let r=e[0].dims,o=r,n=2,s=U.sizeToDimension(r,n),u=U.sizeFromDimension(r,n),l=Fe(u),a=u/l,p=[r[0],r[1],a],h=["rank","type","type"],g=[{type:"uint32",data:u},{type:"uint32",data:a}];g.push(...L(p),...L(p));let b=w=>{let y=M("x",e[0].dataType,p.length,l),_=M("scale",e[1].dataType,e[1].dims),I=M("bias",e[2].dataType,e[2].dims),$=F("output",e[0].dataType,p.length,l),x=[y,_,I,$],E=y.type.value,A=l===1?"f32":`vec${l}`,z=64,R=[{name:"normSize",type:"u32"},{name:"normPackedSize",type:"u32"}];return`\n var meanShared : f32;\n var squaredNormShared : f32;\n var workgroupShared : array<${A}, ${z}>;\n const workgroupSize = ${z}u;\n ${w.registerUniforms(R).declareVariables(...x)}\n ${w.mainStart(z)}\n let norm = global_idx / workgroupSize;\n let batch = norm / uniforms.x_shape[1];\n let channel = norm % uniforms.x_shape[1];\n let localIndex = local_id.x;\n\n // initialize workgroup memory\n var initial = ${A}(0);\n for (var h = localIndex; h < uniforms.normPackedSize; h += workgroupSize) {\n initial = initial + ${A}(${y.get("batch","channel","h")});\n }\n workgroupShared[localIndex] = initial;\n workgroupBarrier();\n\n // Calculate the mean of current channel data.\n for (var currSize = workgroupSize >> 1; currSize > 0; currSize = currSize >> 1) {\n if (localIndex < currSize) {\n workgroupShared[localIndex] = workgroupShared[localIndex] + workgroupShared[localIndex + currSize];\n }\n workgroupBarrier();\n }\n if (localIndex == 0) {\n meanShared = ${Je("workgroupShared[0]",l)} / f32(uniforms.normSize);\n }\n workgroupBarrier();\n\n // reinitialize workgroup memory.\n initial = ${A}(0);\n for (var h = localIndex; h < uniforms.normPackedSize; h += workgroupSize) {\n let deviation = ${A}(${y.get("batch","channel","h")}) - ${A}(meanShared);\n initial = initial + deviation * deviation;\n }\n workgroupShared[localIndex] = initial;\n workgroupBarrier();\n\n // Calculate the sum of square of deviation of current channel data.\n for (var currSize = workgroupSize >> 1; currSize > 0; currSize = currSize >> 1) {\n if (localIndex < currSize) {\n workgroupShared[localIndex] = workgroupShared[localIndex] + workgroupShared[localIndex + currSize];\n }\n workgroupBarrier();\n }\n if (localIndex == 0) {\n squaredNormShared = ${Je("workgroupShared[0]",l)};\n }\n workgroupBarrier();\n\n let invStdDev = inverseSqrt(squaredNormShared / f32(uniforms.normSize) + f32(${t.epsilon}));\n let channelScale = invStdDev * f32(${_.getByOffset("channel")});\n let channelShift = f32(${I.getByOffset("channel")}) - meanShared * channelScale;\n for (var h = localIndex; h < uniforms.normPackedSize; h += workgroupSize) {\n let value = ${y.get("batch","channel","h")} * ${E}(${A}(channelScale)) + ${E}(${A}(channelShift));\n ${$.set("batch","channel","h","value")};\n }\n }`};return{name:"InstanceNormalization",shaderCache:{hint:`${t.epsilon};${l}`,inputDependencies:h},getRunData:()=>({outputs:[{dims:o,dataType:e[0].dataType}],dispatchGroup:{x:s},programUniforms:g}),getShaderSource:b}},Ul=(e,t,r,o,n,s,u,l)=>{let a=Fe(u),p=64,h=a===1?"vec2f":`mat2x${a}f`,g=a===1?"f32":`vec${a}f`,b=(R,V)=>`${h}(${R}, ${V})`,w=n*u/a,y=Math.ceil(s/p),_=["type"],I=[{type:"uint32",data:y},{type:"uint32",data:s},{type:"uint32",data:Math.floor(u/a)},{type:"uint32",data:Math.floor(s*u/a)}],$=R=>{let V=M("input",t.dataType,t.dims,a);return`\n ${R.declareVariables(V)}\n @group(0) @binding(1) var output : array<${h}>;\n struct Uniforms {wg_size:u32, H:u32, C:u32, image_size:u32};\n @group(0) @binding(2) var uniforms: Uniforms;\n\n ${R.mainStart(p)}\n let currentImageNumber = global_idx / ${p} / uniforms.C;\n let currentChannelNumber = (global_idx / ${p}) % uniforms.C;\n let wgId = global_idx % ${p};\n let wgOffset = wgId * uniforms.wg_size;\n if (wgOffset >= uniforms.H) {\n return;\n }\n let wgMax = min(wgOffset + uniforms.wg_size, uniforms.H);\n\n let offset = currentImageNumber * uniforms.image_size + currentChannelNumber;\n var sum = ${Ze("f32",a)};\n var squaredSum = ${Ze("f32",a)};\n for (var i: u32 = wgOffset; i < wgMax; i++) {\n let value = ${g}(input[offset + i * uniforms.C]);\n sum += value;\n squaredSum += value * value;\n }\n output[global_idx] = ${b("sum","squaredSum")};\n }`},x=e.compute({name:"InstanceNormComputeMean",shaderCache:{hint:`${a}`,inputDependencies:_},getRunData:()=>({outputs:[{dims:[n,u,p,2],dataType:1}],dispatchGroup:{x:n*u/a},programUniforms:I}),getShaderSource:$},{inputs:[t],outputs:[-1]})[0],E=[{type:"uint32",data:w},{type:"uint32",data:s},{type:"uint32",data:Math.floor(u/a)},{type:"uint32",data:Math.floor(p*u/a)}],A=["type","type","type"],z=R=>{let V=M("scale",r.dataType,r.dims,a),T=M("bias",o.dataType,o.dims,a);return`\n @group(0) @binding(0) var input : array<${h}>;\n @group(0) @binding(1) var scale : array<${V.type.storage}>;\n @group(0) @binding(2) var bias : array<${T.type.storage}>;\n @group(0) @binding(3) var output : array<${h}>;\n struct Uniforms {units_of_work : u32, H: u32, C : u32, image_size : u32};\n @group(0) @binding(4) var uniforms: Uniforms;\n\n ${R.mainStart()}\n ${R.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.units_of_work")}\n let currentImageNumber = global_idx / uniforms.C;\n let currentChannelNumber = global_idx % uniforms.C;\n\n let offset = currentImageNumber * uniforms.image_size;\n var sum = ${Ze("f32",a)};\n var squaredSum = ${Ze("f32",a)};\n for (var i: u32 = 0; i < ${p}; i++) {\n let value = input[offset + i + currentChannelNumber * ${p}];\n sum += value[0];\n squaredSum += value[1];\n }\n sum = sum / f32(uniforms.H);\n squaredSum = squaredSum / f32(uniforms.H);\n let invStdDev = inverseSqrt(squaredSum - sum * sum + f32(${l}));\n let channelScale = invStdDev * ${g}(scale[currentChannelNumber]);\n let channelShift = ${g}(bias[currentChannelNumber]) - sum * channelScale;\n\n output[global_idx] = ${b("channelScale","channelShift")};\n }`};return e.compute({name:"InstanceNormComputeChannelScaleShift",shaderCache:{hint:`${a};${l}`,inputDependencies:A},getRunData:()=>({outputs:[{dims:[n,u,2],dataType:1}],dispatchGroup:{x:Math.ceil(w/64)},programUniforms:E}),getShaderSource:z},{inputs:[x,r,o],outputs:[-1]})[0]},Vl=(e,t,r)=>{let o=t[0].dims,n=o,s=o[0],u=o[o.length-1],l=U.sizeFromDimension(o,1)/u,a=Fe(u),p=U.size(n)/a,h=[{type:"uint32",data:l},{type:"uint32",data:Math.floor(u/a)}],g=["type","type"],b=Ul(e,t[0],t[1],t[2],s,l,u,r.epsilon),w=y=>{let _=Le(t[0].dataType),I=a===1?"vec2f":`mat2x${a}f`,$=a===1?_:`vec${a}<${_}>`,x=M("input",t[0].dataType,t[0].dims,a),E=F("output",t[0].dataType,n,a);return`\n @group(0) @binding(0) var input : array<${x.type.storage}>;\n @group(0) @binding(1) var scaleInput : array<${I}>;\n @group(0) @binding(2) var output : array<${E.type.storage}>;\n struct Uniforms {H: u32, C : u32};\n @group(0) @binding(3) var uniforms: Uniforms;\n\n ${y.mainStart()}\n let currentImageNumber = global_idx / (uniforms.C * uniforms.H);\n let currentChannelNumber = global_idx % uniforms.C;\n\n let scaleOffset = currentImageNumber * uniforms.C + currentChannelNumber;\n let scale = scaleInput[scaleOffset];\n output[global_idx] = fma(input[global_idx], ${$}(scale[0]), ${$}(scale[1]));\n }`};e.compute({name:"InstanceNormalizationNHWC",shaderCache:{hint:`${a}`,inputDependencies:g},getRunData:()=>({outputs:[{dims:n,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(p/64)},programUniforms:h}),getShaderSource:w},{inputs:[t[0],b]})},vs=(e,t)=>{t.format==="NHWC"?Vl(e,e.inputs,t):e.compute(zl(e.inputs,t))}});var Nl,Wl,Ss,xs=j(()=>{"use strict";Ne();$e();ve();Nl=e=>{if(!e||e.length<2)throw new Error("layerNorm requires at least 2 inputs.")},Wl=(e,t,r)=>{let o=e[0].dims,n=e[1],s=e[2],u=o,l=U.normalizeAxis(t.axis,o.length),a=U.sizeToDimension(o,l),p=U.sizeFromDimension(o,l),h=U.size(n.dims),g=s?U.size(s.dims):0;if(h!==p||s&&g!==p)throw new Error(`Size of X.shape()[axis:] == ${p}.\n Size of scale and bias (if provided) must match this.\n Got scale size of ${h} and bias size of ${g}`);let b=[];for(let A=0;A1,$=r>2,x=A=>{let z=Le(e[0].dataType),R=[M("x",e[0].dataType,e[0].dims,w),M("scale",n.dataType,n.dims,w)];s&&R.push(M("bias",s.dataType,s.dims,w)),R.push(F("output",e[0].dataType,u,w)),I&&R.push(F("mean_data_output",1,b)),$&&R.push(F("inv_std_output",1,b));let V=[{name:"norm_count",type:"u32"},{name:"norm_size",type:"f32"},{name:"norm_size_vectorized",type:"u32"},{name:"epsilon",type:"f32"}];return`\n ${A.registerUniforms(V).declareVariables(...R)}\n ${A.mainStart()}\n ${A.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.norm_count")}\n let offset = global_idx * uniforms.norm_size_vectorized;\n var meanVector = ${Ze("f32",w)};\n var meanSquareVector = ${Ze("f32",w)};\n\n for (var h: u32 = 0u; h < uniforms.norm_size_vectorized; h++) {\n let value = ${at(z,w,"x[h + offset]")};\n meanVector += value;\n meanSquareVector += value * value;\n }\n let mean = ${Je("meanVector",w)} / uniforms.norm_size;\n let invStdDev =\n inverseSqrt(${Je("meanSquareVector",w)} / uniforms.norm_size - mean * mean + uniforms.epsilon);\n\n for (var j: u32 = 0; j < uniforms.norm_size_vectorized; j++) {\n let f32input = ${at(z,w,"x[j + offset]")};\n let f32scale = ${at(z,w,"scale[j]")};\n output[j + offset] = ${R[0].type.value}((f32input - mean) * invStdDev * f32scale\n ${s?`+ ${at(z,w,"bias[j]")}`:""}\n );\n }\n\n ${I?"mean_data_output[global_idx] = mean":""};\n ${$?"inv_std_output[global_idx] = invStdDev":""};\n }`},E=[{dims:u,dataType:e[0].dataType}];return I&&E.push({dims:b,dataType:1}),$&&E.push({dims:b,dataType:1}),{name:"LayerNormalization",shaderCache:{hint:`${w};${r}`,inputDependencies:y},getRunData:()=>({outputs:E,dispatchGroup:{x:Math.ceil(a/64)},programUniforms:_}),getShaderSource:x}},Ss=(e,t)=>{Nl(e.inputs),e.compute(Wl(e.inputs,t,e.outputCount))}});var Hl,Cs,_s,Gl,Xn,Is,As=j(()=>{"use strict";$e();je();Nr();Un();ve();jt();Hl=(e,t)=>{let r=e[0],o=e[1],n=e[2],s=e[3],u=e[4],l=e[5],a=e[6],p=e[7];if(r.dims.length!==3&&r.dims.length!==5)throw new Error("Input query is expected to have 3 or 5 dimensions");let h=!1,g=r.dims[0],b=r.dims[1],w=r.dims.length===3?h?r.dims[2]/3:r.dims[2]:t.numHeads*r.dims[4],y=b,_=0,I=0,$=Math.floor(w/t.numHeads);if(a&&p){if(a.dims.length!==4)throw new Error(\'Input "past_key" is expected to have 4 dimensions\');if(p.dims.length!==4)throw new Error(\'Input "past_value" is expected to have 4 dimensions\');_=a.dims[2],I=a.dims[2]}else if(a||p)throw new Error(\'Input "past_key" and "past_value" shall be both present or both absent\');let x;if(o){if(r.dims.length!==3)throw new Error(\'Input "query" is expected to have 3 dimensions when key is given\');if(o.dims.length<3||o.dims.length>5)throw new Error(\'Input "key" is expected to have 3, 4, or 5 dimensions\');if(r.dims[0]!==o.dims[0])throw new Error(\'Input "query" and "key" shall have same dim 0 (batch size)\');if(o.dims.length===3){if(o.dims[2]!==r.dims[2])throw new Error(\'Input "query" and "key" shall have same dim 2 (hidden_size)\');x=2,y=o.dims[1]}else if(o.dims.length===5){if(o.dims[2]!==t.numHeads||o.dims[3]!==2||o.dims[4]!==$)throw new Error(\'Expect "key" shape (batch_size, kv_sequence_length, num_heads, 2, head_size) for packed kv\');if(n)throw new Error(\'Expect "value" be none when "key" has packed kv format.\');x=5,y=o.dims[1]}else{if(o.dims[1]!==t.numHeads||o.dims[3]!==$)throw new Error(\'Expect "key" shape (batch_size, num_heads, kv_sequence_length, head_size) for past_key\');x=0,y=o.dims[2]}}else{if(r.dims.length!==3&&r.dims.length!==5)throw new Error(\'Input "query" is expected to have 3 or 5 dimensions when key is empty\');if(r.dims.length===5&&(r.dims[2]!==t.numHeads||r.dims[3]!==3))throw new Error(\'Expect "query" shape (batch_size, kv_sequence_length, num_heads, 3, head_size) for packed kv\');x=3}if(s){if(s.dims.length!==1)throw new Error(\'Input "bias" is expected to have 1 dimension\');if(n&&r.dims.length===5&&r.dims[3]===2)throw new Error("bias is not allowed for packed kv.")}let E=0;if(u){E=8;let T=u.dims;throw T.length===1?T[0]===g?E=1:T[0]===3*g+2&&(E=3):T.length===2&&T[0]===g&&T[1]===y&&(E=5),E===8?new Error(\'Input "key_padding_mask" shape shall be (batch_size) or (batch_size, kv_sequence_length)\'):new Error("Mask not supported")}let A=!1,z=w;if(n){if(n.dims.length!==3&&n.dims.length!==4)throw new Error(\'Input "value" is expected to have 3 or 4 dimensions\');if(r.dims[0]!==n.dims[0])throw new Error(\'Input "query" and "value" shall have same dim 0 (batch_size)\');if(n.dims.length===3){if(y!==n.dims[1])throw new Error(\'Input "key" and "value" shall have the same dim 1 (kv_sequence_length)\');z=n.dims[2]}else{if(y!==n.dims[2])throw new Error(\'Input "past_key" and "past_value" shall have the same dim 2 (kv_sequence_length)\');z=n.dims[1]*n.dims[3],A=!0}}let R=_+y,V=!1;if(u)throw new Error("Key padding mask is not supported");if(l)throw new Error("extraAddQk is not supported");if(a)throw new Error("pastKey is not supported");if(p)throw new Error("pastValue is not supported");return{batchSize:g,sequenceLength:b,pastSequenceLength:_,kvSequenceLength:y,totalSequenceLength:R,maxSequenceLength:I,inputHiddenSize:0,hiddenSize:w,vHiddenSize:z,headSize:$,vHeadSize:Math.floor(z/t.numHeads),numHeads:t.numHeads,isUnidirectional:!1,pastPresentShareBuffer:!1,maskFilterValue:t.maskFilterValue,maskType:E,scale:t.scale,broadcastResPosBias:V,passPastInKv:A,qkvFormat:x}},Cs=e=>ge({...e}),_s=ge({perm:[0,2,1,3]}),Gl=(e,t,r,o,n,s,u)=>{let l=[o,n,s],a=U.size(l),p=[{type:"uint32",data:a},{type:"uint32",data:u},{type:"uint32",data:s}],h=g=>{let b=F("qkv_with_bias",t.dataType,l),w=M("qkv",t.dataType,l),y=M("bias",r.dataType,l),_=[{name:"output_size",type:"u32"},{name:"bias_offset",type:"u32"},{name:"hidden_size",type:"u32"}];return`\n ${g.registerUniforms(_).declareVariables(w,y,b)}\n ${g.mainStart()}\n ${g.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}\n let bias_offset_idx = (global_idx % uniforms.hidden_size) + uniforms.bias_offset;\n\n qkv_with_bias[global_idx] = qkv[global_idx] + bias[bias_offset_idx];\n }`};return e.compute({name:"MultiHeadAttentionAddBias",shaderCache:{inputDependencies:["type","type"]},getRunData:()=>({outputs:[{dims:l,dataType:t.dataType,gpuDataType:0}],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:p}),getShaderSource:h},{inputs:[t,r],outputs:[-1]})[0]},Xn=(e,t,r,o,n,s,u,l)=>{let a=s;if(u){if(o===1)throw new Error("AddBiasReshape is not implemented. Please export your model with packed QKV or KV");return a=Gl(e,s,u,t,o,r*n,l),a=a.reshape([t,o,r,n]),e.compute(it(a,_s.perm),{inputs:[a],outputs:[-1]})[0]}else return s.dims.length===3&&(a=s.reshape([t,o,r,n])),e.compute(it(a,_s.perm),{inputs:[a],outputs:[-1]})[0]},Is=(e,t)=>{let r=Hl(e.inputs,t);if(e.inputs[0].dims.length===5)throw new Error("Packed QKV is not implemented");if(e.inputs[1]?.dims.length===5)throw new Error("Packed KV is not implemented");let o=e.inputs[1]&&e.inputs[2]&&e.inputs[1].dims.length===4&&e.inputs[2].dims.length===4,n=Xn(e,r.batchSize,r.numHeads,r.sequenceLength,r.headSize,e.inputs[0],e.inputs[3],0);if(o)return Kr(e,n,e.inputs[1],e.inputs[2],e.inputs[4],void 0,void 0,void 0,e.inputs[5],r,t);let s=Xn(e,r.batchSize,r.numHeads,r.kvSequenceLength,r.headSize,e.inputs[1],e.inputs[3],r.hiddenSize),u=Xn(e,r.batchSize,r.numHeads,r.kvSequenceLength,r.vHeadSize,e.inputs[2],e.inputs[3],2*r.hiddenSize);Kr(e,n,s,u,e.inputs[4],void 0,e.inputs[6],e.inputs[7],e.inputs[5],r,t)}});var Ll,Fl,jl,ql,Kl,Yl,Zl,Ql,Ts,Es=j(()=>{"use strict";Ne();$e();ve();Ll=e=>{if(!e||e.length<1)throw new Error("Too few inputs");if(e[0].dataType!==1)throw new Error("Input type must be float.");if(e.length>=2){let t=e[0].dims.length*2===e[1].dims[0];if(e.length===4&&(t=e[3].dims[0]*2===e[1].dims[0]),!t)throw new Error("The pads should be a 1D tensor of shape [2 * input_rank] or [2 * num_axes].")}},Fl=(e,t,r)=>{let o="";for(let n=t-1;n>=0;--n)o+=`\n k = i32(${e.indicesGet("indices",n)}) - ${ce("uniforms.pads",n,r)};\n if (k < 0) {\n break;\n }\n if (k >= i32(${ce("uniforms.x_shape",n,t)})) {\n break;\n }\n offset += k * i32(${ce("uniforms.x_strides",n,t)});\n `;return`\n value = ${e.type.value}(uniforms.constant_value);\n for (var i = 0; i < 1; i++) {\n var offset = 0;\n var k = 0;\n ${o}\n value = x[offset];\n }\n `},jl=(e,t,r)=>{let o="";for(let n=t-1;n>=0;--n)o+=`\n k = i32(${e.indicesGet("indices",n)}) - ${ce("uniforms.pads",n,r)};\n if (k < 0) {\n k = -k;\n }\n {\n let _2n_1 = 2 * (i32(${ce("uniforms.x_shape",n,t)}) - 1);\n k = k % _2n_1;\n if(k >= i32(${ce("uniforms.x_shape",n,t)})) {\n k = _2n_1 - k;\n }\n }\n offset += k * i32(${ce("uniforms.x_strides",n,t)});\n `;return`\n var offset = 0;\n var k = 0;\n ${o}\n value = x[offset];\n `},ql=(e,t,r)=>{let o="";for(let n=t-1;n>=0;--n)o+=`\n k = i32(${e.indicesGet("indices",n)}) - ${ce("uniforms.pads",n,r)};\n if (k < 0) {\n k = 0;\n }\n if (k >= i32(${ce("uniforms.x_shape",n,t)})) {\n k = i32(${ce("uniforms.x_shape",n,t)}) - 1;\n }\n offset += k * i32(${ce("uniforms.x_strides",n,t)});\n `;return`\n var offset = 0;\n var k = 0;\n ${o}\n value = x[offset];\n `},Kl=(e,t,r)=>{let o="";for(let n=t-1;n>=0;--n)o+=`\n k = i32(${e.indicesGet("indices",n)}) - ${ce("uniforms.pads",n,r)};\n if (k < 0) {\n k += i32(${ce("uniforms.x_shape",n,t)}]);\n }\n if (k >= i32(${ce("uniforms.x_shape",n,t)})) {\n k -= i32(${ce("uniforms.x_shape",n,t)});\n }\n offset += k * i32(${ce("uniforms.x_strides",n,t)});\n `;return`\n var offset = 0;\n var k = 0;\n ${o}\n value = x[offset];\n `},Yl=(e,t,r)=>{switch(r.mode){case 0:return Fl(e,t,r.pads.length);case 1:return jl(e,t,r.pads.length);case 2:return ql(e,t,r.pads.length);case 3:return Kl(e,t,r.pads.length);default:throw new Error("Invalid mode")}},Zl=(e,t)=>{let r=U.padShape(e[0].dims.slice(),t.pads),o=e[0].dims,s=[{type:"uint32",data:U.size(r)},{type:"uint32",data:t.pads}];if(t.mode===0){let a=Xe(e[0].dataType);s.push({type:a,data:t.value})}s.push(...L(e[0].dims),...L(r));let u=["rank"],l=a=>{let p=F("output",e[0].dataType,r.length),h=M("x",e[0].dataType,o.length),g=h.type.value,b=Yl(p,o.length,t),w=[{name:"output_size",type:"u32"},{name:"pads",type:"i32",length:t.pads.length}];return t.mode===0&&w.push({name:"constant_value",type:g}),`\n ${a.registerUniforms(w).declareVariables(h,p)}\n ${a.mainStart()}\n ${a.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}\n\n let indices = ${p.offsetToIndices("global_idx")};\n\n var value = ${g}(0);\n ${b}\n output[global_idx] = value;\n }`};return{name:"Pad",shaderCache:{hint:`${t.mode}`,inputDependencies:u},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(U.size(r)/64)},programUniforms:s}),getShaderSource:l}},Ql=(e,t)=>{if(e.length>1){let r=e[1].getBigInt64Array(),o=e.length>=3&&e[2].data?e[2].getFloat32Array()[0]:0,n=e[0].dims.length,s=new Int32Array(2*n).fill(0);if(e.length>=4){let l=e[3].getBigInt64Array();for(let a=0;as[Number(a)]=Number(l));let u=[];return s.forEach(l=>u.push(l)),{mode:t.mode,value:o,pads:u}}else return t},Ts=(e,t)=>{Ll(e.inputs);let r=Ql(e.inputs,t);e.compute(Zl(e.inputs,r),{inputs:[0]})}});var nn,Os,Ps,ks,Rs,Xl,Jl,Bs,Ds,Ms,zs,Us,Vs,Ns,Ws,Hs,Gs,Ls,Fs,js=j(()=>{"use strict";Lt();$e();ve();nn=e=>{if(Gt.webgpu.validateInputContent&&(!e||e.length!==1))throw new Error("Pool ops requires 1 input.")},Os=(e,t,r)=>{let o=t.format==="NHWC",n=e.dims.slice();o&&n.splice(1,0,n.pop());let s=Object.hasOwnProperty.call(t,"dilations"),u=t.kernelShape.slice(),l=t.strides.slice(),a=s?t.dilations.slice():[],p=t.pads.slice();Bt.adjustPoolAttributes(r,n,u,l,a,p);let h=Bt.computePoolOutputShape(r,n,l,a,u,p,t.autoPad),g=Object.assign({},t);s?Object.assign(g,{kernelShape:u,strides:l,pads:p,dilations:a,cacheKey:t.cacheKey}):Object.assign(g,{kernelShape:u,strides:l,pads:p,cacheKey:t.cacheKey});let b=h.slice();return b.push(b.splice(1,1)[0]),[g,o?b:h]},Ps=(e,t)=>{let r=t.format==="NHWC",o=U.size(e),n=U.size(t.kernelShape),s=[{type:"uint32",data:o},{type:"uint32",data:n}],u=[{name:"outputSize",type:"u32"},{name:"kernelSize",type:"u32"}];if(t.kernelShape.length<=2){let l=t.kernelShape[t.kernelShape.length-1],a=t.strides[t.strides.length-1],p=t.pads[t.pads.length/2-1],h=t.pads[t.pads.length-1],g=!!(p+h);s.push({type:"uint32",data:l},{type:"uint32",data:a},{type:"uint32",data:p},{type:"uint32",data:h}),u.push({name:"kw",type:"u32"},{name:"sw",type:"u32"},{name:"pwStart",type:"u32"},{name:"pwEnd",type:"u32"});let b=!1;if(t.kernelShape.length===2){let w=t.kernelShape[t.kernelShape.length-2],y=t.strides[t.strides.length-2],_=t.pads[t.pads.length/2-2],I=t.pads[t.pads.length-2];b=!!(_+I),s.push({type:"uint32",data:w},{type:"uint32",data:y},{type:"uint32",data:_},{type:"uint32",data:I}),u.push({name:"kh",type:"u32"},{name:"sh",type:"u32"},{name:"phStart",type:"u32"},{name:"phEnd",type:"u32"})}return[s,u,!0,g,b]}else{if(r)throw new Error("Pooling with kernelShape.length > 2 is not supported for NHWC format.");let l=U.computeStrides(t.kernelShape);s.push({type:"uint32",data:l},{type:"uint32",data:t.pads},{type:"uint32",data:t.strides}),u.push({name:"kernelStrides",type:"u32",length:l.length},{name:"pads",type:"u32",length:t.pads.length},{name:"strides",type:"u32",length:t.strides.length});let a=t.pads.reduce((p,h)=>p+h);return[s,u,!!a,!1,!1]}},ks=(e,t,r,o,n,s,u,l,a,p,h,g)=>{let b=n.format==="NHWC",w=t.type.value,y=F("output",t.type.tensor,o);if(n.kernelShape.length<=2){let _="",I="",$="",x=r-(b?2:1);if(h?_=`\n for (var i: u32 = 0u; i < uniforms.kw; i++) {\n xIndices[${x}] = indices[${x}] * uniforms.sw - uniforms.pwStart + i;\n if (xIndices[${x}] < 0 || xIndices[${x}]\n >= uniforms.x_shape[${x}]) {\n pad++;\n continue;\n }\n let x_val = x[${t.indicesToOffset("xIndices")}];\n ${s}\n }`:_=`\n for (var i: u32 = 0u; i < uniforms.kw; i++) {\n xIndices[${x}] = indices[${x}] * uniforms.sw - uniforms.pwStart + i;\n let x_val = x[${t.indicesToOffset("xIndices")}];\n ${s}\n }`,n.kernelShape.length===2){let A=r-(b?3:2);g?I=`\n for (var j: u32 = 0u; j < uniforms.kh; j++) {\n xIndices[${A}] = indices[${A}] * uniforms.sh - uniforms.phStart + j;\n if (xIndices[${A}] < 0 || xIndices[${A}] >= uniforms.x_shape[${A}]) {\n pad += i32(uniforms.kw);\n continue;\n }\n `:I=`\n for (var j: u32 = 0u; j < uniforms.kh; j++) {\n xIndices[${A}] = indices[${A}] * uniforms.sh - uniforms.phStart + j;\n `,$=`\n }\n `}return`\n ${e.registerUniforms(a).declareVariables(t,y)}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n\n let indices = ${y.offsetToIndices("global_idx")};\n var xIndices = ${y.offsetToIndices("global_idx")};\n\n var value = ${w}(${l});\n var pad = 0;\n ${I}\n ${_}\n ${$}\n ${u}\n\n output[global_idx] = value;\n }`}else{if(b)throw new Error("Pooling with kernelShape.length > 2 is not supported for NHWC format.");let _=n.kernelShape.length,I=n.pads.length,$="";return p?$=`\n if (xIndices[j] >= uniforms.x_shape[j]) {\n pad++;\n isPad = true;\n break;\n }\n }\n if (!isPad) {\n let x_val = x[${t.indicesToOffset("xIndices")}];\n ${s}\n }`:$=`\n }\n let x_val = x[${t.indicesToOffset("xIndices")}];\n ${s}\n `,`\n ${e.registerUniforms(a).declareVariables(t,y)}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n let indices = ${y.offsetToIndices("global_idx")};\n var xIndices = ${y.offsetToIndices("global_idx")};\n\n var offsets: array;\n\n var value = ${w}(${l});\n var pad = 0;\n var isPad = false;\n\n for (var i: u32 = 0u; i < uniforms.kernelSize; i++) {\n var offset = i;\n for (var j = 0u; j < ${_-1}u; j++) {\n offsets[j] = offset / ${ce("uniforms.kernelStrides","j",_)};\n offset -= offsets[j] * ${ce("uniforms.kernelStrides","j",_)};\n }\n offsets[${_-1}] = offset;\n\n isPad = false;\n for (var j = ${r-_}u; j < ${r}u; j++) {\n xIndices[j] = indices[j] * ${ce("uniforms.strides",`j - ${r-_}u`,_)}\n + offsets[j - ${r-_}u] - ${ce("uniforms.pads","j - 2u",I)};\n ${$}\n }\n ${u}\n\n output[global_idx] = value;\n }`}},Rs=e=>`${e.format};${e.ceilMode};${e.autoPad};${e.kernelShape.length}`,Xl=e=>`${Rs(e)};${e.countIncludePad}`,Jl=e=>`${Rs(e)};${e.storageOrder};${e.dilations}`,Bs=e=>({format:e.format,autoPad:["NOTSET","VALID","SAME_UPPER","SAME_LOWER"][e.auto_pad],ceilMode:e.ceil_mode,kernelShape:e.kernel_shape,strides:e.strides,pads:e.pads}),Ds=(e,t,r,o)=>{let[n,s]=Os(t,o,r),u=M("x",t.dataType,t.dims.length),l=u.type.value,a="value += x_val;",p="";n.countIncludePad?p+=`value /= ${l}(uniforms.kernelSize);`:p+=`value /= ${l}(i32(uniforms.kernelSize) - pad);`;let[h,g,b,w,y]=Ps(s,n);h.push(...L(t.dims),...L(s));let _=["rank"];return{name:e,shaderCache:{hint:`${o.cacheKey};${b};${w};${y}`,inputDependencies:_},getRunData:()=>({outputs:[{dims:s,dataType:t.dataType}],dispatchGroup:{x:Math.ceil(U.size(s)/64)},programUniforms:h}),getShaderSource:I=>ks(I,u,t.dims.length,s.length,n,a,p,0,g,b,w,y)}},Ms=e=>{let t=e.count_include_pad!==0,r=Bs(e);if(r.ceilMode!==0)throw new Error("using ceil() in shape computation is not yet supported for AveragePool");let o={countIncludePad:t,...r,cacheKey:""};return{...o,cacheKey:Xl(o)}},zs=(e,t)=>{nn(e.inputs),e.compute(Ds("AveragePool",e.inputs[0],!1,t))},Us={autoPad:"",ceilMode:0,countIncludePad:!1,kernelShape:[],strides:[],pads:[],storageOrder:0,dilations:[]},Vs=e=>{let t=e.format;return{format:t,...Us,cacheKey:t}},Ns=(e,t)=>{nn(e.inputs),e.compute(Ds("GlobalAveragePool",e.inputs[0],!0,t))},Ws=(e,t,r,o)=>{let[n,s]=Os(t,o,r),u=`\n value = max(x_val, value);\n `,l="",a=M("x",t.dataType,t.dims.length),p=["rank"],[h,g,b,w,y]=Ps(s,n);return h.push(...L(t.dims),...L(s)),{name:e,shaderCache:{hint:`${o.cacheKey};${b};${w};${y}`,inputDependencies:p},getRunData:()=>({outputs:[{dims:s,dataType:t.dataType}],dispatchGroup:{x:Math.ceil(U.size(s)/64)},programUniforms:h}),getShaderSource:_=>ks(_,a,t.dims.length,s.length,n,u,l,-1e5,g,b,w,y)}},Hs=(e,t)=>{nn(e.inputs),e.compute(Ws("MaxPool",e.inputs[0],!1,t))},Gs=e=>{let t=e.storage_order,r=e.dilations,o=Bs(e);if(t!==0)throw new Error("column major storage order is not yet supported for MaxPool");if(o.ceilMode!==0)throw new Error("using ceil() in shape computation is not yet supported for MaxPool");let n={storageOrder:t,dilations:r,...o,cacheKey:""};return{...n,cacheKey:Jl(n)}},Ls=e=>{let t=e.format;return{format:t,...Us,cacheKey:t}},Fs=(e,t)=>{nn(e.inputs),e.compute(Ws("GlobalMaxPool",e.inputs[0],!0,t))}});var tc,rc,qs,Ks=j(()=>{"use strict";Lt();Ne();ve();tc=(e,t,r)=>{let o=e===t,n=et&&r>0;if(o||n||s)throw new Error("Range these inputs\' contents are invalid.")},rc=(e,t,r,o)=>{let n=Math.abs(Math.ceil((t-e)/r)),s=[n],u=n,l=Xe(o),a=[{type:"uint32",data:u},{type:l,data:e},{type:l,data:r},...L(s)],p=h=>{let g=F("output",o,s.length),b=g.type.value,w=[{name:"outputSize",type:"u32"},{name:"start",type:b},{name:"delta",type:b}];return`\n ${h.registerUniforms(w).declareVariables(g)}\n ${h.mainStart()}\n ${h.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n output[global_idx] = uniforms.start + ${b}(global_idx) * uniforms.delta;\n }`};return{name:"Range",shaderCache:{hint:`${o}`},getShaderSource:p,getRunData:()=>({outputs:[{dims:s,dataType:o}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:a})}},qs=e=>{let t=0,r=0,o=0;e.inputs[0].dataType===6?(t=e.inputs[0].getInt32Array()[0],r=e.inputs[1].getInt32Array()[0],o=e.inputs[2].getInt32Array()[0]):e.inputs[0].dataType===1&&(t=e.inputs[0].getFloat32Array()[0],r=e.inputs[1].getFloat32Array()[0],o=e.inputs[2].getFloat32Array()[0]),Gt.webgpu.validateInputContent&&tc(t,r,o),e.compute(rc(t,r,o,e.inputs[0].dataType),{inputs:[]})}});var nc,oc,ac,ic,sc,uc,dc,lc,cc,pc,mc,Ys,fc,hc,gc,yc,bc,Zs,Qs,Xs=j(()=>{"use strict";$e();je();ve();nc=(e,t)=>{if(e.every(r=>r>0||(()=>{throw new Error("Resize requires scales input values to be positive")})),e.length>0){if(t.mode==="linear"){if(!(e.length===2||e.length===3||e.length===4&&e[0]===1&&e[1]===1||e.length===4&&e[0]===1&&e[3]===1||e.length===5&&e[0]===1&&e[1]===1))throw new Error(`For linear mode, Resize requires scales to be 2D, 3D, 4D with either two outermost or one innermost and\n one outermost scale values equal to 1, or 5D with two outermost scale values equal to 1`)}else if(t.mode==="cubic"&&!(e.length===2||e.length===4&&e[0]===1&&e[1]===1||e.length===4&&e[0]===1&&e[3]===1))throw new Error("Resize requires scales input size to be 2 or 4 for cubic mode")}},oc=(e,t,r)=>{t.every(n=>n>=0&&n{throw new Error("Resize requires axes input values to be positive and less than rank")}));let o=new Array(r).fill(1);return t.forEach((n,s)=>o[n]=e[s]),o},ac=(e,t,r,o,n,s)=>{let[u,l,a]=r>10?[1,2,3]:[-1,e.length>1?1:-1,-1],p=e[0].dims.length;if(u>0&&e.length>u&&e[u].dims.length>0)e[u].getFloat32Array().forEach(h=>s.push(h));else if(t.coordinateTransformMode==="tf_crop_and_resize")throw new Error("Resize requires RoI input to be specified when coordinateTransformMode is tfCropAndResize");if(l>0&&e.length>l&&e[l].dims.length>0){if(e[l].getFloat32Array().forEach(h=>o.push(h)),o.length!==0&&o.length!==p&&r>=18&&o.length!==t.axes.length)throw new Error("Resize requires scales input size to be same as input rank or axes size for opset 18 and up");nc(o,t),t.axes.length>0&&oc(o,t.axes,p).forEach((h,g)=>o[g]=h)}if(a>0&&e.length>a&&(e[a].getBigInt64Array().forEach(h=>n.push(Number(h))),n.length!==p||r>=18&&n.length===t.axes.length))throw new Error("Resize requires sizes input size to be same as input rank or axes size for opset 18 and up");if(t.axes.length>0){if(o.length!==t.axes.length)throw new Error(\'Resize requires "scales" input size to be of axes rank when axes attributes is specified\');if(n.length!==t.axes.length)throw new Error(\'Resize requires "sizes" input size to be of rank axes rank when axes attributes is specified\')}if(typeof o<"u"&&typeof n<"u"&&o.length>0&&n.length>p)throw new Error("Resize requires only of scales or sizes to be specified")},ic=(e,t)=>`fn getOriginalCoordinateFromResizedCoordinate(xResized: u32, xScale: f32, lengthResized: u32,\n lengthOriginal: u32, roiStart: f32, roiEnd: f32) -> ${t} { `+(()=>{switch(e){case"asymmetric":return`return ${t}(xResized) / ${t}(xScale);`;case"pytorch_half_pixel":return`if (lengthResized > 1) {\n return (${t}(xResized) + 0.5) / ${t}(xScale) - 0.5;\n } else {\n return 0.0;\n }`;case"tf_half_pixel_for_nn":return`return (${t}(xResized) + 0.5) / ${t}(xScale);`;case"align_corners":return`if (lengthResized == 1) {\n return 0.0;\n } else {\n // The whole part and the fractional part are calculated separately due to inaccuracy of floating\n // point division. As an example, f32(21) / f32(7) may evaluate to 2.99... instead of 3, causing an\n // offset-by-one error later in floor().\n let whole = ${t}(xResized * (lengthOriginal - 1) / (lengthResized - 1));\n let fract =\n ${t}(xResized * (lengthOriginal - 1) % (lengthResized - 1)) / ${t}(lengthResized - 1);\n return whole + fract;\n }`;case"tf_crop_and_resize":return`if (lengthResized > 1) {\n return ${t}(roiStart) * ${t}(lengthOriginal - 1) +\n (${t}(xResized) * ${t}(roiEnd - roiStart) * ${t}(lengthOriginal - 1)) /\n ${t}(lengthResized - 1);\n } else {\n return 0.5 * ${t}(roiStart + roiEnd) * ${t}(lengthOriginal - 1);\n }`;case"half_pixel_symmetric":return`const outputWidth = ${t}xScale * ${t}(lengthResized);\n const adjustment = ${t}(lengthResized) / outputWidth;\n const center = ${t}(lengthOriginal) / 2;\n const offset = center * (1 - adjustment);\n return offset + ((${t}(xResized) + 0.5) / ${t}(xScale)) - 0.5;`;case"half_pixel":return`return ((${t}(xResized) + 0.5) / ${t}(xScale)) - 0.5;`;default:throw new Error(`Coordinate transform mode ${e} is not supported`)}})()+"}",sc=(e,t,r)=>`fn getNearestPixelFromOriginal(xOriginal: ${r}, isDownSample: bool) -> ${r} {`+(()=>{switch(e){case"round_prefer_ceil":return"if (fract(xOriginal) == 0.5) { return ceil(xOriginal); } else { return round(xOriginal); }";case"floor":return"return floor(xOriginal);";case"ceil":return"return ceil(xOriginal);";case"round_prefer_floor":return"if (fract(xOriginal) == 0.5) { return floor(xOriginal); } else { return round(xOriginal); }";case"simple":default:if(t<11)return"if (isDownSample) { return ceil(xOriginal); } else { return xOriginal; }";throw new Error(`Nearest mode ${e} is not supported`)}})()+"}",uc=(e,t,r)=>{let o=new Array(r).fill(0).concat(new Array(r).fill(1)),n=e.length===0?o:e.slice();return t.length>0?(t.forEach((s,u)=>{o[s]=n[u],o[u+r]=n[t.length+u]}),o):n},dc=(e,t,r,o)=>{let n=[];if(r.length>0)if(o.length>0){if(e.forEach(s=>n.push(s)),Math.max(...o)>e.length)throw new Error("axes is out of bound");o.forEach((s,u)=>n[s]=r[u])}else r.forEach(s=>n.push(s));else{if(t.length===0)throw new Error("Resize requires either scales or sizes.");n=e.map((s,u)=>Math.round(s*t[u]))}return n},lc=(e,t,r)=>{let o=(()=>{switch(r.keepAspectRatioPolicy){case"not_larger":return r.axes.length>0?Math.min(...r.axes.map(s=>t[s]),Number.MAX_VALUE):Math.min(...t,Number.MAX_VALUE);case"not_smaller":return r.axes.length>0?Math.max(...r.axes.map(s=>t[s]),Number.MIN_VALUE):Math.max(...t,Number.MIN_VALUE);default:throw new Error(`Keep aspect ratio policy ${r.keepAspectRatioPolicy} is not supported`)}})();t.fill(1,0,t.length);let n=e.slice();return r.axes.length>0?(r.axes.forEach(s=>t[s]=o),r.axes.forEach(s=>n[s]=Math.round(e[s]*t[s]))):(t.fill(o,0,t.length),n.forEach((s,u)=>n[u]=Math.round(s*t[u]))),n},cc=(e,t,r,o,n)=>`\n fn calculateOriginalIndicesFromOutputIndices(output_indices: ${e.type.indices}) -> array<${e.type.value}, ${r.length}> {\n var original_indices: array<${e.type.value}, ${r.length}>;\n for (var i:u32 = 0; i < ${r.length}; i++) {\n var output_index = ${e.indicesGet("output_indices","i")};\n var scale = ${ce("uniforms.scales","i",o)};\n var roi_low = ${ce("uniforms.roi","i",n)};\n var roi_hi = ${ce("uniforms.roi",`i + ${t.length}`,n)};\n if (scale == 1.0) {\n original_indices[i] = ${e.type.value}(output_index);\n } else {\n var input_shape_i = ${ce("uniforms.input_shape","i",t.length)};\n var output_shape_i = ${ce("uniforms.output_shape","i",r.length)};\n original_indices[i] = getOriginalCoordinateFromResizedCoordinate(output_index, scale, output_shape_i,\n input_shape_i, roi_low, roi_hi);\n }\n }\n return original_indices;\n }`,pc=(e,t,r,o,n,s,u)=>`\n fn calculateInputIndicesFromOutputIndices(output_indices: ${t.type.indices}) -> ${e.type.indices} {\n var input_indices: ${e.type.indices};\n for (var i:u32 = 0; i < ${o.length}; i++) {\n var output_index = ${t.indicesGet("output_indices","i")};\n var input_index: u32;\n var scale = ${ce("uniforms.scales","i",n)};\n if (scale == 1.0) {\n input_index = output_index;\n } else {\n var roi_low = ${ce("uniforms.roi","i",s)};\n var roi_hi = ${ce("uniforms.roi",`i + ${r.length}`,s)};\n var input_shape_i = ${ce("uniforms.input_shape","i",r.length)};\n var output_shape_i = ${ce("uniforms.output_shape","i",o.length)};\n var original_idx = getOriginalCoordinateFromResizedCoordinate(output_index, scale, output_shape_i,\n input_shape_i, roi_low, roi_hi);\n if (!${u} || (original_idx >= 0 && original_idx < ${t.type.value}(input_shape_i))) {\n if (original_idx < 0) {\n input_index = 0;\n } else if (original_idx > ${t.type.value}(input_shape_i - 1)) {\n input_index = input_shape_i - 1;\n } else {\n input_index = u32(getNearestPixelFromOriginal(original_idx, scale < 1));\n }\n } else {\n input_index = u32(original_idx);\n }\n }\n ${e.indicesSet("input_indices","i"," input_index")}\n }\n return input_indices;\n }`,mc=(e,t)=>`\n fn checkInputIndices(input_indices: ${e.type.indices}) -> bool {\n for (var i:u32 = 0; i < ${t.length}; i++) {\n var input_index = ${e.indicesGet("input_indices","i")};\n if (input_index < 0 || input_index >= ${ce("uniforms.input_shape","i",t.length)}) {\n return false;\n }\n }\n return true;\n }`,Ys=(e,t,r,o)=>e.rank>o?`\n ${e.indicesSet("input_indices",t,"channel")};\n ${e.indicesSet("input_indices",r,"batch")};\n`:"",fc=(e,t,r,o,n)=>{let[u,l,a,p]=r.length===2?[-1,0,1,-1]:[0,2,3,1],h=e.type.value;return`\n fn getInputValue(batch: u32, channel: u32, row: u32, col: u32) -> ${h} {\n var input_indices: ${e.type.indices};\n ${e.indicesSet("input_indices",l,`max(0, min(row, ${r[l]} - 1))`)};\n ${e.indicesSet("input_indices",a,`max(0, min(col, ${r[a]} - 1))`)};\n ${Ys(e,p,u,2)}\n return ${e.getByIndices("input_indices")};\n }\n\n fn bilinearInterpolation(output_indices: ${t.type.indices}) -> ${h} {\n var originalIndices = calculateOriginalIndicesFromOutputIndices(output_indices);\n var row:${h} = originalIndices[${l}];\n var col:${h} = originalIndices[${a}];\n ${o?`if (row < 0 || row > (${r[l]} - 1) || col < 0 || col > (${r[a]} - 1)) {\n return ${n};\n }`:""};\n row = max(0, min(row, ${r[l]} - 1));\n col = max(0, min(col, ${r[a]} - 1));\n var row1: u32 = u32(row);\n var col1: u32 = u32(col);\n var row2: u32 = u32(row + 1);\n var col2: u32 = u32(col + 1);\n var channel: u32 = ${r.length>2?`u32(originalIndices[${p}])`:"0"};\n var batch: u32 = ${r.length>2?`u32(originalIndices[${u}])`:"0"};\n var x11: ${h} = getInputValue(batch, channel, row1, col1);\n var x12: ${h} = getInputValue(batch, channel, row1, col2);\n var x21: ${h} = getInputValue(batch, channel, row2, col1);\n var x22: ${h} = getInputValue(batch, channel, row2, col2);\n var dx1: ${h} = abs(row - ${h}(row1));\n var dx2: ${h} = abs(${h}(row2) - row);\n var dy1: ${h} = abs(col - ${h}(col1));\n var dy2: ${h} = abs(${h}(col2) - col);\n if (row1 == row2) {\n dx1 = 0.5;\n dx2 = 0.5;\n }\n if (col1 == col2) {\n dy1 = 0.5;\n dy2 = 0.5;\n }\n return (x11 * dx2 * dy2 + x12 * dx2 * dy1 + x21 * dx1 * dy2 + x22 * dx1 * dy1);\n }`},hc=(e,t,r,o,n,s,u,l,a,p)=>{let h=r.length===2,g=!0,[b,w]=h?[0,1]:g?[2,3]:[1,2],y=e.type.value,_=I=>{let $=I===b?"row":"col";return`\n fn ${$}CubicInterpolation(input_indices: ${e.type.indices}, output_indices: ${t.type.indices}) -> ${y} {\n var output_index = ${t.indicesGet("output_indices",I)};\n var originalIdx: ${y} = getOriginalCoordinateFromResizedCoordinate(output_index, ${n[I]},\n ${o[I]}, ${r[I]}, ${s[I]}, ${s[I]} + ${r.length});\n var fractOriginalIdx: ${y} = originalIdx - floor(originalIdx);\n var coefs = getCubicInterpolationCoefs(fractOriginalIdx);\n\n if (${l} && (originalIdx < 0 || originalIdx > (${r[I]} - 1))) {\n return ${a};\n }\n var data: array<${y}, 4> = array<${y}, 4>(0.0, 0.0, 0.0, 0.0);\n for (var i: i32 = -1; i < 3; i++) {\n var ${$}: ${y} = originalIdx + ${y}(i);\n if (${$} < 0 || ${$} >= ${r[I]}) {\n ${(()=>p?`coefs[i + 1] = 0.0;\n continue;`:l?`return ${a};`:`${$} = max(0, min(${$}, ${r[I]} - 1));`)()};\n }\n var input_indices_copy: ${e.type.indices} = input_indices;\n ${e.indicesSet("input_indices_copy",I,`u32(${$})`)};\n data[i + 1] = ${I===b?e.getByIndices("input_indices_copy"):"rowCubicInterpolation(input_indices_copy, output_indices)"};\n }\n return cubicInterpolation1D(data, coefs);\n }`};return`\n ${_(b)};\n ${_(w)};\n fn getCubicInterpolationCoefs(s: ${y}) -> array<${y}, 4> {\n var absS = abs(s);\n var coeffs: array<${y}, 4> = array<${y}, 4>(0.0, 0.0, 0.0, 0.0);\n var oneMinusAbsS: ${y} = 1.0 - absS;\n var twoMinusAbsS: ${y} = 2.0 - absS;\n var onePlusAbsS: ${y} = 1.0 + absS;\n coeffs[0] = ((${u} * onePlusAbsS - 5 * ${u}) * onePlusAbsS + 8 * ${u}) * onePlusAbsS - 4 * ${u};\n coeffs[1] = ((${u} + 2) * absS - (${u} + 3)) * absS * absS + 1;\n coeffs[2] = ((${u} + 2) * oneMinusAbsS - (${u} + 3)) * oneMinusAbsS * oneMinusAbsS + 1;\n coeffs[3] = ((${u} * twoMinusAbsS - 5 * ${u}) * twoMinusAbsS + 8 * ${u}) * twoMinusAbsS - 4 * ${u};\n return coeffs;\n }\n\n fn cubicInterpolation1D(x: array<${y}, 4>, coefs: array<${y}, 4>) -> ${y} {\n var coefsSum: ${y} = coefs[0] + coefs[1] + coefs[2] + coefs[3];\n return (x[0] * coefs[0] + x[1] * coefs[1]+ x[2] * coefs[2]+ x[3] * coefs[3]) / coefsSum;\n }\n\n fn bicubicInterpolation(output_indices: ${t.type.indices}) -> ${y} {\n var input_indices: ${e.type.indices} = output_indices;\n return colCubicInterpolation(input_indices, output_indices);\n }\n `},gc=(e,t,r,o,n)=>{let[u,l,a,p,h]=r.length===3?[-1,0,1,2,-1]:[0,2,3,4,1],g=e.type.value;return`\n fn getInputValue(batch: u32, channel: u32, depth:u32, height: u32, width: u32) -> ${g} {\n var input_indices: ${e.type.indices};\n ${e.indicesSet("input_indices",l,`max(0, min(depth, ${r[l]} - 1))`)};\n ${e.indicesSet("input_indices",a,`max(0, min(height, ${r[a]} - 1))`)};\n ${e.indicesSet("input_indices",p,`max(0, min(width, ${r[p]} - 1))`)};\n ${Ys(e,h,u,3)}\n return ${e.getByIndices("input_indices")};\n }\n\n fn trilinearInterpolation(output_indices: ${t.type.indices}) -> ${g} {\n var originalIndices = calculateOriginalIndicesFromOutputIndices(output_indices);\n var depth:${g} = originalIndices[${l}];\n var height:${g} = originalIndices[${a}];\n var width:${g} = originalIndices[${p}];\n ${o?`if (depth < 0 || depth > (${r[l]} - 1) || height < 0 || height > (${r[a]} - 1) || width < 0 || (width > ${r[p]} - 1)) {\n return ${n};\n }`:""};\n\n depth = max(0, min(depth, ${r[l]} - 1));\n height = max(0, min(height, ${r[a]} - 1));\n width = max(0, min(width, ${r[p]} - 1));\n var depth1: u32 = u32(depth);\n var height1: u32 = u32(height);\n var width1: u32 = u32(width);\n var depth2: u32 = u32(depth + 1);\n var height2: u32 = u32(height + 1);\n var width2: u32 = u32(width + 1);\n var channel: u32 = ${r.length>3?`u32(originalIndices[${h}])`:"0"};\n var batch: u32 = ${r.length>3?`u32(originalIndices[${u}])`:"0"};\n\n var x111: ${g} = getInputValue(batch, channel, depth1, height1, width1);\n var x112: ${g} = getInputValue(batch, channel, depth1, height1, width2);\n var x121: ${g} = getInputValue(batch, channel, depth1, height2, width1);\n var x122: ${g} = getInputValue(batch, channel, depth1, height2, width2);\n var x211: ${g} = getInputValue(batch, channel, depth2, height1, width1);\n var x212: ${g} = getInputValue(batch, channel, depth2, height1, width2);\n var x221: ${g} = getInputValue(batch, channel, depth2, height2, width1);\n var x222: ${g} = getInputValue(batch, channel, depth2, height2, width2);\n var dx1: ${g} = abs(depth - ${g}(depth1));\n var dx2: ${g} = abs(${g}(depth2) - depth);\n var dy1: ${g} = abs(height - ${g}(height1));\n var dy2: ${g} = abs(${g}(height2) - height);\n var dz1: ${g} = abs(width - ${g}(width1));\n var dz2: ${g} = abs(${g}(width2) - width);\n if (depth1 == depth2) {\n dx1 = 0.5;\n dx2 = 0.5;\n }\n if (height1 == height2) {\n dy1 = 0.5;\n dy2 = 0.5;\n }\n if (width1 == width2) {\n dz1 = 0.5;\n dz2 = 0.5;\n }\n return (x111 * dx2 * dy2 * dz2 + x112 * dx2 * dy2 * dz1 + x121 * dx2 * dy1 *dz2 + x122 * dx2 * dy1 * dz1 +\n x211 * dx1 * dy2 * dz2 + x212 * dx1 * dy2 * dz1 + x221 * dx1 * dy1 *dz2 + x222 * dx1 * dy1 * dz1);\n }`},yc=(e,t,r,o,n,s)=>{let u=e.dims,l=uc(s,t.axes,u.length),a=dc(u,o,n,t.axes),p=o.slice();o.length===0&&(p=u.map((x,E)=>x===0?1:a[E]/x),t.keepAspectRatioPolicy!=="stretch"&&(a=lc(u,p,t)));let h=F("output",e.dataType,a.length),g=M("input",e.dataType,u.length),b=U.size(a),w=u.length===a.length&&u.every((x,E)=>x===a[E]),y=t.coordinateTransformMode==="tf_crop_and_resize",_=t.extrapolationValue,I=g.type.value,$=x=>`\n ${w?"":`\n ${ic(t.coordinateTransformMode,I)};\n ${(()=>{switch(t.mode){case"nearest":return`\n ${mc(g,u)};\n ${sc(t.nearestMode,r,I)};\n ${pc(g,h,u,a,p.length,l.length,y)};\n `;case"linear":return`\n ${cc(h,u,a,p.length,l.length)};\n ${(()=>{if(u.length===2||u.length===4)return`${fc(g,h,u,y,_)}`;if(u.length===3||u.length===5)return`${gc(g,h,u,y,_)}`;throw Error("Linear mode only supports input dims 2, 3, 4 and 5 are supported in linear mode.")})()};\n `;case"cubic":return`\n ${(()=>{if(u.length===2||u.length===4)return`${hc(g,h,u,a,p,l,t.cubicCoeffA,y,t.extrapolationValue,t.excludeOutside)}`;throw Error("Cubic mode only supports input dims 2 and 4 are supported in linear mode.")})()};\n `;default:throw Error("Invalid resize mode")}})()};\n `}\n ${x.registerUniform("output_size","u32").registerUniform("scales","f32",p.length).registerUniform("roi","f32",l.length).declareVariables(g,h)}\n ${x.mainStart()}\n ${x.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}\n ${w?"output[global_idx] = input[global_idx];":`\n let output_indices = ${h.offsetToIndices("global_idx")};\n var input_indices: ${g.type.indices};\n ${(()=>{switch(t.mode){case"nearest":return`input_indices = calculateInputIndicesFromOutputIndices(output_indices);\n if (checkInputIndices(input_indices)) {\n output[global_idx] = ${g.getByIndices("input_indices")};\n } else {\n output[global_idx] = ${t.extrapolationValue};\n }`;case"linear":return`output[global_idx] = ${u.length===2||u.length===4?"bilinearInterpolation":"trilinearInterpolation"}(output_indices);`;case"cubic":return"output[global_idx] = bicubicInterpolation(output_indices);";default:throw Error(`Unsupported resize mode: ${t.mode}`)}})()};\n`}\n }`;return{name:"Resize",shaderCache:{hint:`${t.cacheKey}|${r}|${p.length>0?p:""}|${n.length>0?n:""}|${l.length>0?l:""}|${w}|${u}`,inputDependencies:["rank"]},getShaderSource:$,getRunData:()=>({outputs:[{dims:a,dataType:e.dataType}],dispatchGroup:{x:Math.ceil(b/64)},programUniforms:[{type:"uint32",data:b},{type:"float32",data:p},{type:"float32",data:l},...L(u),...L(a)]})}},bc=e=>{let t=e.customDataBuffer;return new Uint32Array(t,t.byteOffset,1)[0]},Zs=(e,t)=>{let r=[],o=[],n=[],s=bc(e);if(t.antialias!==0)throw Error("Only default value (0) for Antialias attribute is supported");ac(e.inputs,t,s,r,o,n),e.compute(yc(e.inputs[0],t,s,r,o,n),{inputs:[0]})},Qs=e=>{let t=e.antialias,r=e.axes,o=e.coordinateTransformMode,n=e.cubicCoeffA,s=e.excludeOutside!==0,u=e.extrapolationValue,l=e.keepAspectRatioPolicy,a=e.mode,p=e.nearestMode===""?"simple":e.nearestMode;return ge({antialias:t,axes:r,coordinateTransformMode:o,cubicCoeffA:n,excludeOutside:s,extrapolationValue:u,keepAspectRatioPolicy:l,mode:a,nearestMode:p})}});var wc,vc,Js,eu,tu=j(()=>{"use strict";Ne();$e();je();ve();wc=e=>{if(!e||e.length<3)throw new Error("layerNorm requires at least 3 inputs.");let t=e[0],r=e[1],o=e[2];if(t.dataType!==r.dataType||t.dataType!==o.dataType)throw new Error("All inputs must have the same data type");if(t.dims.length!==3&&t.dims.length!==2)throw new Error("Input must be 2D or 3D");if(r.dims.length!==3&&r.dims.length!==2)throw new Error("Skip must be 2D or 3D");let n=t.dims[t.dims.length-1],s=t.dims[t.dims.length-2];if(r.dims[r.dims.length-1]!==n)throw new Error("Skip must have the same hidden size as input");if(r.dims[r.dims.length-2]!==s)throw new Error("Skip must have the same sequence length as input");if(o.dims.length!==1)throw new Error("Gamma must be 1D");if(o.dims[o.dims.length-1]!==n)throw new Error("Gamma must have the same hidden size as input");if(e.length>3){let u=e[3];if(u.dims.length!==1)throw new Error("Beta must be 1D");if(u.dims[u.dims.length-1]!==n)throw new Error("Beta must have the same hidden size as input")}if(e.length>4){let u=e[4];if(u.dims.length!==1)throw new Error("Bias must be 1D");if(u.dims[u.dims.length-1]!==n)throw new Error("Bias must have the same hidden size as input")}},vc=(e,t,r,o)=>{let n=e[0].dims,s=U.size(n),u=n,l=s,a=n.slice(-1)[0],p=o?n.slice(0,-1).concat(1):[],h=e.length>3,g=e.length>4,b=o&&r>1,w=o&&r>2,y=r>3,_=Fe(a),I=[M("x",e[0].dataType,e[0].dims,_),M("skip",e[1].dataType,e[1].dims,_),M("gamma",e[2].dataType,e[2].dims,_)];h&&I.push(M("beta",e[3].dataType,e[3].dims,_)),g&&I.push(M("bias",e[4].dataType,e[4].dims,_)),I.push(F("output",e[0].dataType,u,_)),b&&I.push(F("meanOutput",1,p)),w&&I.push(F("invStdOutput",1,p)),y&&I.push(F("inputSkipBiasSum",e[0].dataType,u,_));let $=Le(e[0].dataType),x=A=>`\n const hiddenSize: f32 = ${a};\n const hiddenSizeVectorized: u32 = ${a/_};\n const epsilon: f32 = ${t.epsilon};\n\n ${A.declareVariables(...I)}\n\n ${A.mainStart()}\n ${A.guardAgainstOutOfBoundsWorkgroupSizes(l/a)}\n let offset = global_idx * hiddenSizeVectorized;\n var sum = ${Ze("f32",_)};\n var squareSum = ${Ze("f32",_)};\n for (var i: u32 = 0; i < hiddenSizeVectorized; i++) {\n let skipValue = skip[offset + i];\n let biasValue = ${g?"bias[i]":"0.0"};\n let inputValue = x[offset + i];\n let value = inputValue + skipValue + biasValue;\n ${y?"inputSkipBiasSum[offset + i] = value;":""}\n output[offset + i] = value;\n let f32Value = ${at($,_,"value")};\n sum += f32Value;\n squareSum += f32Value * f32Value;\n }\n let mean = ${Je("sum",_)} / hiddenSize;\n let invStdDev = inverseSqrt(${Je("squareSum",_)} / hiddenSize - mean * mean + epsilon);\n ${b?"meanOutput[global_idx] = mean;":""}\n ${w?"invStdOutput[global_idx] = invStdDev;":""}\n for (var i: u32 = 0; i < hiddenSizeVectorized; i++) {\n output[offset + i] = (output[offset + i] - ${$}(mean)) * ${$}(invStdDev) * gamma[i]\n + ${h?"beta[i]":"0.0"};\n }\n }`,E=[{dims:u,dataType:e[0].dataType}];return r>1&&E.push({dims:p,dataType:1}),r>2&&E.push({dims:p,dataType:1}),r>3&&E.push({dims:n,dataType:e[0].dataType}),{name:"SkipLayerNormalization",shaderCache:{hint:t.cacheKey},getShaderSource:x,getRunData:()=>({outputs:E,dispatchGroup:{x:Math.ceil(l/a/64)}})}},Js=(e,t)=>{wc(e.inputs);let o=[0];e.outputCount>1&&o.push(-3),e.outputCount>2&&o.push(-3),e.outputCount>3&&o.push(3),e.compute(vc(e.inputs,t,e.outputCount,!1),{outputs:o})},eu=e=>{let t=e.epsilon;return ge({epsilon:t})}});var $c,on,Sc,ru,xc,_c,nu,ou,au=j(()=>{"use strict";Ne();$e();je();ve();$c=(e,t)=>{if(!e||e.length<1)throw new Error("too few inputs");if(t.axes.length!==0){if(t.axes.length!==t.starts.length||t.axes.length!==t.ends.length)throw new Error("axes, starts and ends must have the same length")}else if(t.starts.length!==t.ends.length)throw new Error("starts and ends must have the same length");e.slice(1).forEach((r,o)=>{if(e[o+1].dataType!==6&&e[o+1].dataType!==7)throw new Error(`Input ${o} must be an array of int32 or int64`)})},on=(e,t)=>{let r=[];if(e.length>t)if(e[t].dataType===7)e[t].getBigInt64Array().forEach(o=>r.push(Number(o)));else if(e[t].dataType===6)e[t].getInt32Array().forEach(o=>r.push(Number(o)));else throw new Error(`Input ${t} must be an array of int32 or int64`);return r},Sc=(e,t)=>{if(e.length>1){let r=on(e,1),o=on(e,2),n=on(e,3);return n.length===0&&(n=[...Array(e[0].dims.length).keys()]),ge({starts:r,ends:o,axes:n})}else return t},ru=(e,t,r,o,n)=>{let s=e;return e<0&&(s+=r[o[t]]),n[t]<0?Math.max(0,Math.min(s,r[o[t]]-1)):Math.max(0,Math.min(s,r[o[t]]))},xc=(e,t,r)=>`fn calculateInputIndices(output_indices: ${t.type.indices}) -> ${e.type.indices} {\n var input_indices: ${e.type.indices};\n var carry = 0u;\n for (var i = ${r.length}; i >= 0; i--) {\n let input_shape_i = ${ce("uniforms.input_shape","i",r.length)};\n let steps_i = ${ce("uniforms.steps","i",r.length)};\n let signs_i = ${ce("uniforms.signs","i",r.length)};\n let starts_i = ${ce("uniforms.starts","i",r.length)};\n var output_index = ${t.indicesGet("output_indices","i")};\n var input_index = output_index * steps_i + starts_i + carry;\n carry = input_index / input_shape_i;\n input_index = input_index % input_shape_i;\n if (signs_i < 0) {\n input_index = input_shape_i - input_index - 1u + starts_i;\n }\n ${e.indicesSet("input_indices","i","input_index")};\n }\n return input_indices;\n }`,_c=(e,t)=>{let r=e[0].dims,o=U.size(r),n=t.axes.length>0?U.normalizeAxes(t.axes,r.length):[...Array(r.length).keys()],s=on(e,4);s.forEach($=>$!==0||(()=>{throw new Error("step cannot be 0")})),s.length===0&&(s=Array(n.length).fill(1));let u=t.starts.map(($,x)=>ru($,x,r,n,s)),l=t.ends.map(($,x)=>ru($,x,r,n,s));if(n.length!==u.length||n.length!==l.length)throw new Error("start, ends and axes should have the same number of elements");if(n.length!==r.length)for(let $=0;$Math.sign($));s.forEach(($,x,E)=>{if($<0){let A=(l[x]-u[x])/$,z=u[x],R=z+A*s[x];u[x]=R,l[x]=z,E[x]=-$}});let p=r.slice(0);n.forEach(($,x)=>{p[$]=Math.ceil((l[$]-u[$])/s[$])});let h={dims:p,dataType:e[0].dataType},g=F("output",e[0].dataType,p.length),b=M("input",e[0].dataType,e[0].dims.length),w=U.size(p),y=[{name:"outputSize",type:"u32"},{name:"starts",type:"u32",length:u.length},{name:"signs",type:"i32",length:a.length},{name:"steps",type:"u32",length:s.length}],_=[{type:"uint32",data:w},{type:"uint32",data:u},{type:"int32",data:a},{type:"uint32",data:s},...L(e[0].dims),...L(p)],I=$=>`\n ${$.registerUniforms(y).declareVariables(b,g)}\n ${xc(b,g,r)}\n ${$.mainStart()}\n ${$.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n let output_indices = ${g.offsetToIndices("global_idx")};\n let input_indices = calculateInputIndices(output_indices);\n ${g.setByOffset("global_idx",b.getByIndices("input_indices"))}\n }`;return{name:"Slice",shaderCache:{hint:`${a.length}_${u.length}_${s.length}`,inputDependencies:["rank"]},getShaderSource:I,getRunData:()=>({outputs:[h],dispatchGroup:{x:Math.ceil(o/64)},programUniforms:_})}},nu=(e,t)=>{$c(e.inputs,t);let r=Sc(e.inputs,t);e.compute(_c(e.inputs,r),{inputs:[0]})},ou=e=>{let t=e.starts,r=e.ends,o=e.axes;return ge({starts:t,ends:r,axes:o})}});var Cc,Ic,iu,su,uu=j(()=>{"use strict";$e();je();ve();Cc=e=>{if(!e||e.length!==1)throw new Error("Softmax op requires 1 input.")},Ic=(e,t)=>{let r=e.dims,o=U.size(r),n=64,s=t.axis;if(s<0&&(s=r.length+s),s$===4?`max(max(${I}.x, ${I}.y), max(${I}.z, ${I}.w))`:$===2?`max(${I}.x, ${I}.y)`:$===3?`max(max(${I}.x, ${I}.y), ${I}.z)`:I,g=M("x",e.dataType,e.dims,a),b=F("result",e.dataType,e.dims,a),w=g.type.value,y=Le(e.dataType)==="f32"?`var threadMax = ${w}(-3.402823e+38f);`:`var threadMax = ${w}(-65504.0h);`,_=I=>`\n var rowMaxShared : ${w};\n var rowSumShared : ${w};\n var threadShared : array<${w}, ${n}>;\n\n fn getValue(row: i32, col: i32, row_stride: i32) -> ${w} {\n let index = row * row_stride + col;\n return x[index];\n }\n\n fn setValue(row: i32, col: i32, row_stride: i32, value: ${w}) {\n let index = row * row_stride + col;\n result[index] = value;\n }\n ${I.registerUniform("packedCols","i32").declareVariables(g,b)}\n ${I.mainStart()}\n let gindex = i32(global_idx);\n let lindex = i32(local_idx);\n const wg = ${n};\n let row = gindex / wg;\n let cols = uniforms.packedCols;\n let row_stride : i32 = uniforms.packedCols;\n\n // find the rows max\n ${y}\n for (var col = lindex; col < cols; col += wg) {\n let value = getValue(row, col, row_stride);\n threadMax = max(threadMax, value);\n }\n if (lindex < cols) {\n threadShared[lindex] = threadMax;\n }\n workgroupBarrier();\n\n var reduceSize = min(cols, wg);\n for (var currSize = reduceSize >> 1; currSize > 0; currSize = reduceSize >> 1) {\n reduceSize = currSize + (reduceSize & 1);\n if (lindex < currSize) {\n threadShared[lindex] = max(threadShared[lindex], threadShared[lindex + reduceSize]);\n }\n workgroupBarrier();\n }\n if (lindex == 0) {\n rowMaxShared = ${w}(${h("threadShared[0]",a)});\n }\n workgroupBarrier();\n\n // find the rows sum\n var threadSum = ${w}(0.0);\n for (var col = lindex; col < cols; col += wg) {\n let subExp = exp(getValue(row, col, row_stride) - rowMaxShared);\n threadSum += subExp;\n }\n threadShared[lindex] = threadSum;\n workgroupBarrier();\n\n for (var currSize = wg >> 1; currSize > 0; currSize = currSize >> 1) {\n if (lindex < currSize) {\n threadShared[lindex] = threadShared[lindex] + threadShared[lindex + currSize];\n }\n workgroupBarrier();\n }\n if (lindex == 0) {\n rowSumShared = ${w}(${Je("threadShared[0]",a)});\n }\n workgroupBarrier();\n\n // calculate final value for each element in the row\n for (var col = lindex; col < cols; col += wg) {\n let value = exp(getValue(row, col, row_stride) - rowMaxShared) / rowSumShared;\n setValue(row, col, row_stride, value);\n }\n }`;return{name:"Softmax",shaderCache:{hint:`${a}`,inputDependencies:["type"]},getRunData:()=>({outputs:[{dims:r,dataType:e.dataType}],dispatchGroup:{x:l},programUniforms:[{type:"uint32",data:p}]}),getShaderSource:_}},iu=(e,t)=>{Cc(e.inputs),e.compute(Ic(e.inputs[0],t))},su=e=>ge({axis:e.axis})});var Ac,Tc,Ec,Oc,Pc,du,lu,cu=j(()=>{"use strict";$e();je();ve();Ac=e=>{if(!e||e.length<1)throw new Error("too few inputs")},Tc=(e,t)=>{let r=[],o=t.numOutputs;return e[1].dims[0]>0&&(e[1].getBigInt64Array().forEach(n=>r.push(Number(n))),o=r.length),ge({numOutputs:o,axis:t.axis,splitSizes:r})},Ec=e=>`\nfn calculateOutputIndex(index: u32) -> u32 {\n for (var i: u32 = 0u; i < ${e}u; i += 1u ) {\n if (index < ${ce("uniforms.size_in_split_axis","i",e)}) {\n return i;\n }\n }\n return ${e}u;\n}`,Oc=e=>{let t=e.length,r=[];for(let o=0;o{let r=e[0].dims,o=U.size(r),n=e[0].dataType,s=U.normalizeAxis(t.axis,r.length),u=new Array(t.numOutputs),l=M("input",n,r),a=new Array(t.numOutputs),p=[],h=[],g=0,b=[{type:"uint32",data:o}];for(let y=0;yb.push(...L(y)));let w=y=>`\n ${y.registerUniform("input_size","u32").registerUniform("size_in_split_axis","u32",a.length).declareVariables(l,...u)}\n ${Ec(a.length)}\n ${Oc(u)}\n\n ${y.mainStart()}\n ${y.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.input_size")}\n\n var indices = ${l.offsetToIndices("global_idx")};\n var index = ${l.indicesGet("indices",s)};\n let output_number = calculateOutputIndex(index);\n if (output_number != 0) {\n index -= ${ce("uniforms.size_in_split_axis","output_number - 1u",a.length)};\n ${l.indicesSet("indices",s,"index")};\n }\n writeBufferData(output_number, indices, global_idx);\n }`;return{name:"Split",shaderCache:{hint:t.cacheKey,inputDependencies:["rank"]},getShaderSource:w,getRunData:()=>({outputs:p,dispatchGroup:{x:Math.ceil(o/64)},programUniforms:b})}},du=(e,t)=>{Ac(e.inputs);let r=e.inputs.length===1?t:Tc(e.inputs,t);e.compute(Pc(e.inputs,r),{inputs:[0]})},lu=e=>{let t=e.axis,r=e.splitSizes,o=e.numOutputs<0?r.length:e.numOutputs;if(o!==r.length)throw new Error("numOutputs and splitSizes lengh must be equal");return ge({axis:t,numOutputs:o,splitSizes:r})}});var pu,kc,Rc,Bc,mu,fu=j(()=>{"use strict";Ne();$e();ve();pu=e=>Array.from(e.getBigInt64Array(),Number),kc=e=>{if(!e||e.length!==2)throw new Error("Tile requires 2 inputs.");if(e[0].dataType!==1&&e[0].dataType!==6&&e[0].dataType!==12)throw new Error("Tile only support float, int32, and uint32 data types");if(e[1].dataType!==7)throw new Error("Tile `repeats` input should be of int64 data type");if(e[1].dims.length!==1)throw new Error("Tile `repeats` input should be 1-D");if(pu(e[1]).length!==e[0].dims.length)throw new Error("Tile `repeats` input should have same number of elements as rank of input data tensor")},Rc=(e,t)=>{let r=[];for(let o=0;o{let t=e[0].dims,r=pu(e[1]),o=Rc(t,r),n=U.size(o),s=e[0].dataType,u=M("input",s,t.length),l=F("output",s,o.length),a=p=>`\n const inputShape = ${u.indices(...t)};\n ${p.registerUniform("output_size","u32").declareVariables(u,l)}\n ${p.mainStart()}\n ${p.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}\n let output_indices = ${l.offsetToIndices("global_idx")};\n var input_indices: ${u.type.indices};\n for (var i = 0; i < ${t.length}; i++) {\n let input_dim_i = ${u.indicesGet("uniforms.input_shape","i")};\n let input_dim_value = ${l.indicesGet("output_indices","i")} % input_dim_i;\n\n ${u.indicesSet("input_indices","i","input_dim_value")}\n }\n ${l.setByOffset("global_idx",u.getByIndices("input_indices"))}\n }`;return{name:"Tile",shaderCache:{hint:`${r}`,inputDependencies:["rank"]},getRunData:()=>({outputs:[{dims:o,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(n/64)},programUniforms:[{type:"uint32",data:n},...L(e[0].dims),...L(o)]}),getShaderSource:a}},mu=e=>{kc(e.inputs),e.compute(Bc(e.inputs),{inputs:[0]})}});var Dc,Mc,hu,gu=j(()=>{"use strict";Ne();$e();ve();Dc=(e,t,r,o,n)=>{let s=F("output_data",n,r.length,4),u=M("a_data",t[1].dataType,t[1].dims.length,4),l=M("b_data",t[2].dataType,t[2].dims.length,4),a=M("c_data",t[0].dataType,t[0].dims.length,4),p,h=(g,b,w)=>`select(${b}, ${g}, ${w})`;if(!o)p=s.setByOffset("global_idx",h(u.getByOffset("global_idx"),l.getByOffset("global_idx"),a.getByOffset("global_idx")));else{let g=(b,w,y="")=>{let _=`a_data[index_a${w}][component_a${w}]`,I=`b_data[index_b${w}][component_b${w}]`,$=`bool(c_data[index_c${w}] & ${4278190080>>>(3-w)*8}u)`;return`\n let output_indices${w} = ${s.offsetToIndices(`global_idx * 4u + ${w}u`)};\n let offset_a${w} = ${u.broadcastedIndicesToOffset(`output_indices${w}`,s)};\n let offset_b${w} = ${l.broadcastedIndicesToOffset(`output_indices${w}`,s)};\n let offset_c${w} = ${a.broadcastedIndicesToOffset(`output_indices${w}`,s)};\n let index_a${w} = offset_a${w} / 4u;\n let index_b${w} = offset_b${w} / 4u;\n let index_c${w} = offset_c${w} / 4u;\n let component_a${w} = offset_a${w} % 4u;\n let component_b${w} = offset_b${w} % 4u;\n ${b}[${w}] = ${y}(${h(_,I,$)});\n `};n===9?p=`\n var data = vec4(0);\n ${g("data",0,"u32")}\n ${g("data",1,"u32")}\n ${g("data",2,"u32")}\n ${g("data",3,"u32")}\n output_data[global_idx] = dot(vec4(0x1, 0x100, 0x10000, 0x1000000), vec4(data));`:p=`\n ${g("output_data[global_idx]",0)}\n ${g("output_data[global_idx]",1)}\n ${g("output_data[global_idx]",2)}\n ${g("output_data[global_idx]",3)}\n `}return`\n ${e.registerUniform("vec_size","u32").declareVariables(a,u,l,s)}\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")}\n ${p}\n }`},Mc=e=>{let t=e[1].dims,r=e[2].dims,o=e[0].dims,n=e[1].dataType,s=!(U.areEqual(t,r)&&U.areEqual(r,o)),u=t,l=U.size(t);if(s){let p=dt.calcShape(dt.calcShape(t,r,!1),o,!1);if(!p)throw new Error("Can\'t perform where op on the given tensors");u=p,l=U.size(u)}let a=Math.ceil(l/4);return{name:"Where",shaderCache:{inputDependencies:["rank","rank","rank"]},getShaderSource:p=>Dc(p,e,u,s,n),getRunData:()=>({outputs:[{dims:u,dataType:n}],dispatchGroup:{x:Math.ceil(l/64/4)},programUniforms:[{type:"uint32",data:a},...L(o),...L(t),...L(r),...L(u)]})}},hu=e=>{e.compute(Mc(e.inputs))}});var yu,bu=j(()=>{"use strict";Wa();Un();La();ja();Ci();Mi();Vi();Gn();Ji();rs();ss();ls();ms();gs();ws();$s();xs();Fn();As();Es();js();Ks();jr();Xs();tu();au();uu();cu();fu();jt();Vn();gu();yu=new Map([["Abs",[qa]],["Acos",[Ka]],["Acosh",[Ya]],["Add",[Ii]],["ArgMax",[Na,zn]],["ArgMin",[Va,zn]],["Asin",[Za]],["Asinh",[Qa]],["Atan",[Xa]],["Atanh",[Ja]],["Attention",[Ha]],["AveragePool",[zs,Ms]],["BatchNormalization",[Ga]],["BiasAdd",[Fa]],["BiasSplitGelu",[_i]],["Cast",[ti,ei]],["Ceil",[ni]],["Clip",[ri]],["Concat",[zi,Ui]],["Conv",[qn,jn]],["ConvTranspose",[Xi,Qi]],["Cos",[oi]],["Cosh",[ai]],["CumSum",[es,ts]],["Div",[Ai]],["Einsum",[as,is]],["Elu",[ii,Yr]],["Equal",[Ti]],["Erf",[si]],["Exp",[ui]],["Expand",[ds]],["Floor",[di]],["FusedConv",[qn,jn]],["Gather",[ps,cs]],["GatherElements",[hs,fs]],["Gelu",[li]],["Gemm",[bs,ys]],["GlobalAveragePool",[Ns,Vs]],["GlobalMaxPool",[Fs,Ls]],["Greater",[ki]],["GreaterOrEqual",[Bi]],["InstanceNormalization",[vs]],["LayerNormalization",[Ss]],["LeakyRelu",[ci,Yr]],["Less",[Ri]],["LessOrEqual",[Di]],["Log",[xi]],["MatMul",[Li]],["MaxPool",[Hs,Gs]],["Mul",[Ei]],["MultiHeadAttention",[Is,Cs]],["Neg",[mi]],["Not",[pi]],["Pad",[Ts]],["Pow",[Oi]],["Range",[qs]],["Reciprocal",[fi]],["ReduceMin",[Ra]],["ReduceMean",[Ta]],["ReduceMax",[ka]],["ReduceSum",[Da]],["ReduceProd",[Ba]],["ReduceL1",[Ea]],["ReduceL2",[Oa]],["ReduceLogSum",[za]],["ReduceLogSumExp",[Pa]],["ReduceSumSquare",[Ma]],["Relu",[hi]],["Resize",[Zs,Qs]],["Sigmoid",[gi]],["Sin",[yi]],["Sinh",[bi]],["Slice",[nu,ou]],["SkipLayerNormalization",[Js,eu]],["Split",[du,lu]],["Sqrt",[wi]],["Softmax",[iu,su]],["Sub",[Pi]],["Tan",[vi]],["Tanh",[$i]],["ThresholdedRelu",[Si,Yr]],["Tile",[mu]],["Transpose",[ha,ga]],["Where",[hu]]])});var an,wu=j(()=>{"use strict";Lt();Ct();ve();an=class{constructor(t){this.backend=t;this.repo=new Map,this.attributesBound=!1}getArtifact(t){return this.repo.get(t)}setArtifact(t,r){this.repo.set(t,r)}run(t,r,o,n,s){kt(t.programInfo.name);let u=this.backend.device,l=this.backend.getComputePassEncoder();this.backend.writeTimestamp(this.backend.pendingDispatchNumber*2),l.setPipeline(t.computePipeline);let a=[];for(let h of r)a.push({binding:a.length,resource:{buffer:h.buffer}});for(let h of o)a.push({binding:a.length,resource:{buffer:h.buffer}});s&&a.push({binding:a.length,resource:s});let p=u.createBindGroup({layout:t.computePipeline.getBindGroupLayout(0),entries:a,label:t.programInfo.name});l.setBindGroup(0,p),l.dispatchWorkgroups(...n),this.backend.writeTimestamp(this.backend.pendingDispatchNumber*2+1),this.backend.pendingDispatchNumber++,(this.backend.pendingDispatchNumber>=this.backend.maxDispatchNumber||this.backend.queryType==="at-passes")&&this.backend.endComputePass(),this.backend.pendingDispatchNumber>=this.backend.maxDispatchNumber&&this.backend.flush(),Rt(t.programInfo.name)}dispose(){}build(t,r){kt(t.name);let o=this.backend.device,n=[];o.features.has("shader-f16")&&n.push("enable f16;");let s=ma(r),u=t.getShaderSource(s),l=`${n.join(`\n`)}\n${s.additionalImplementations}\n${u}`,a=o.createShaderModule({code:l,label:t.name});Be("verbose",()=>`[WebGPU] ${t.name} shader code: ${l}`);let p=o.createComputePipeline({compute:{module:a,entryPoint:"main"},layout:"auto",label:t.name});return Rt(t.name),{programInfo:t,computePipeline:p}}normalizeDispatchGroupSize(t){let r=typeof t=="number"?t:t.x,o=typeof t=="number"?1:t.y||1,n=typeof t=="number"?1:t.z||1,s=this.backend.device.limits.maxComputeWorkgroupsPerDimension;if(r<=s&&o<=s&&n<=s)return[r,o,n];let u=r*o*n,l=Math.ceil(Math.sqrt(u));if(l>s){if(l=Math.ceil(Math.cbrt(u)),l>s)throw new Error("Total dispatch size exceeds WebGPU maximum.");return[l,l,l]}else return[l,l,1]}}});var zc,Uc,sn,vu=j(()=>{"use strict";Lt();Ne();Ct();ua();pa();bu();wu();zc=(e,t)=>{if(t.length!==e.length)throw new Error(`inputDependencies length ${t.length} is not equal to inputTensors length ${e.length}.`);let r=[];for(let o=0;o{let o=e.name;return e.shaderCache?.hint&&(o+="["+e.shaderCache.hint+"]"),o+=":"+r+`:${zc(t,e.shaderCache?.inputDependencies??new Array(t.length).fill("dims"))}`,o},sn=class{constructor(){this.currentKernelId=null;this.commandEncoder=null;this.computePassEncoder=null;this.maxDispatchNumber=16;this.pendingDispatchNumber=0;this.pendingKernels=[];this.pendingQueries=new Map;this.sessionExternalDataMapping=new Map}get currentKernelCustomData(){if(this.currentKernelId===null)throw new Error("currentKernelCustomData(): currentKernelId is null. (should not happen)");let t=this.kernelCustomData.get(this.currentKernelId);return t||(t={},this.kernelCustomData.set(this.currentKernelId,t)),t}async initialize(t,r){this.env=t;let o=[],n={requiredLimits:{maxComputeWorkgroupStorageSize:r.limits.maxComputeWorkgroupStorageSize,maxComputeWorkgroupsPerDimension:r.limits.maxComputeWorkgroupsPerDimension,maxStorageBufferBindingSize:r.limits.maxStorageBufferBindingSize,maxBufferSize:r.limits.maxBufferSize,maxComputeInvocationsPerWorkgroup:r.limits.maxComputeInvocationsPerWorkgroup,maxComputeWorkgroupSizeX:r.limits.maxComputeWorkgroupSizeX,maxComputeWorkgroupSizeY:r.limits.maxComputeWorkgroupSizeY,maxComputeWorkgroupSizeZ:r.limits.maxComputeWorkgroupSizeZ},requiredFeatures:o};r.features.has("chromium-experimental-timestamp-query-inside-passes")?o.push("chromium-experimental-timestamp-query-inside-passes"):r.features.has("timestamp-query")&&o.push("timestamp-query"),r.features.has("shader-f16")&&o.push("shader-f16"),this.device=await r.requestDevice(n),this.gpuDataManager=ca(this),this.programManager=new an(this),this.kernels=new Map,this.kernelPersistentData=new Map,this.kernelCustomData=new Map,ia(t.logLevel,!!t.debug),this.device.onuncapturederror=s=>{s.error instanceof GPUValidationError&&console.error(`An uncaught WebGPU validation error was raised: ${s.error.message}`)},Object.defineProperty(this.env.webgpu,"device",{value:this.device}),this.setQueryType()}dispose(){typeof this.querySet<"u"&&this.querySet.destroy(),this.gpuDataManager.dispose()}getCommandEncoder(){return this.commandEncoder||(this.commandEncoder=this.device.createCommandEncoder(),this.setQueryType(),this.queryType!=="none"&&typeof this.querySet>"u"&&(this.querySet=this.device.createQuerySet({type:"timestamp",count:this.maxDispatchNumber*2}),this.queryResolveBuffer=this.device.createBuffer({size:this.maxDispatchNumber*2*8,usage:GPUBufferUsage.COPY_SRC|GPUBufferUsage.QUERY_RESOLVE}))),this.commandEncoder}getComputePassEncoder(){if(!this.computePassEncoder){let t={};this.queryType==="at-passes"&&(t.timestampWrites={querySet:this.querySet,beginningOfPassWriteIndex:this.pendingDispatchNumber*2,endOfPassWriteIndex:this.pendingDispatchNumber*2+1}),this.computePassEncoder=this.getCommandEncoder().beginComputePass(t)}return this.computePassEncoder}endComputePass(){this.computePassEncoder&&(this.computePassEncoder.end(),this.computePassEncoder=null)}flush(){if(!this.commandEncoder)return;kt(),this.endComputePass();let t;this.queryType!=="none"&&(this.commandEncoder.resolveQuerySet(this.querySet,0,this.pendingDispatchNumber*2,this.queryResolveBuffer,0),t=this.device.createBuffer({size:this.pendingDispatchNumber*2*8,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST}),this.pendingQueries.set(t,this.pendingKernels),this.pendingKernels=[],this.commandEncoder.copyBufferToBuffer(this.queryResolveBuffer,0,t,0,this.pendingDispatchNumber*2*8)),this.device.queue.submit([this.commandEncoder.finish()]),this.gpuDataManager.refreshPendingBuffers(),this.commandEncoder=null,this.pendingDispatchNumber=0,this.queryType!=="none"&&t.mapAsync(GPUMapMode.READ).then(()=>{let r=new BigUint64Array(t.getMappedRange()),o=this.pendingQueries.get(t);for(let n=0;n"u"&&(this.queryTimeBase=w);let _=Number(w-this.queryTimeBase),I=Number(y-this.queryTimeBase);if(!Number.isSafeInteger(_)||!Number.isSafeInteger(I))throw new RangeError("incorrect timestamp range");if(this.env.webgpu.profiling?.ondata)this.env.webgpu.profiling.ondata({version:1,inputsMetadata:g.map($=>({dims:$.dims,dataType:Xe($.dataType)})),outputsMetadata:b.map($=>({dims:$.dims,dataType:Xe($.dataType)})),kernelId:u,kernelType:a,kernelName:p,programName:h,startTime:_,endTime:I});else{let $="";g.forEach((E,A)=>{$+=`input[${A}]: [${E.dims}] | ${Xe(E.dataType)}, `});let x="";b.forEach((E,A)=>{x+=`output[${A}]: [${E.dims}] | ${Xe(E.dataType)}, `}),console.log(`[profiling] kernel "${u}|${a}|${p}|${h}" ${$}${x}execution time: ${I-_} ns`)}An("GPU",`${h}::${w}::${y}`)}t.unmap(),this.pendingQueries.delete(t)}),Rt()}run(t,r,o,n,s){kt(t.name);let u=[];for(let x=0;xE):o;if(h.length!==l.length)throw new Error(`Output size ${h.length} must be equal to ${l.length}.`);let g=[],b=[];for(let x=0;x=l.length)throw new Error(`Invalid output index: ${h[x]}`);if(h[x]===-3)continue;let E=h[x]===-1,A=h[x]===-2,z=E||A?s(l[x].dataType,l[x].dims):n(h[x],l[x].dataType,l[x].dims),R=this.gpuDataManager.get(z.data);if(!R)throw new Error(`no GPU data for output: ${z.data}`);if(E&&this.temporaryData.push(R),A){let V=this.kernelPersistentData.get(this.currentKernelId);V||(V=[],this.kernelPersistentData.set(this.currentKernelId,V)),V.push(R)}g.push(z),b.push(R)}let w;if(p){let x=0,E=[];p.forEach(V=>{let T=typeof V.data=="number"?[V.data]:V.data;if(T.length===0)return;let N=T.length<=2?T.length*4:16;x=Math.ceil(x/N)*N,E.push(x),x+=T.length>4?Math.ceil(T.length/4)*16:T.length*4});let A=16;x=Math.ceil(x/A)*A;let z=new ArrayBuffer(x);p.forEach((V,T)=>{let N=E[T],te=typeof V.data=="number"?[V.data]:V.data;V.type==="int32"?new Int32Array(z,N,te.length).set(te):V.type==="uint32"?new Uint32Array(z,N,te.length).set(te):new Float32Array(z,N,te.length).set(te)});let R=this.gpuDataManager.create(x,GPUBufferUsage.COPY_DST|GPUBufferUsage.UNIFORM);this.device.queue.writeBuffer(R.buffer,0,z,0,x),this.gpuDataManager.release(R.id),w={offset:0,size:x,buffer:R.buffer}}let y=this.programManager.normalizeDispatchGroupSize(a),_=y[1]===1&&y[2]===1,I=Uc(t,r,_),$=this.programManager.getArtifact(I);if($||($=this.programManager.build(t,y),this.programManager.setArtifact(I,$),Be("info",()=>`[artifact] key: ${I}, programName: ${t.name}`)),Be("info",()=>`[ProgramManager] run "${t.name}" (key=${I}) with ${y[0]}x${y[1]}x${y[2]}`),this.queryType!=="none"){let x={kernelId:this.currentKernelId,programName:$.programInfo.name,inputTensorViews:r,outputTensorViews:g};this.pendingKernels.push(x)}return this.programManager.run($,u,b,y,w),Rt(t.name),g}upload(t,r){this.gpuDataManager.upload(t,r)}memcpy(t,r){this.gpuDataManager.memcpy(t,r)}async download(t,r){await this.gpuDataManager.download(t,r)}alloc(t){return this.gpuDataManager.create(t).id}free(t){return this.gpuDataManager.release(t)}createKernel(t,r,o,n){let s=yu.get(t);if(!s)throw new Error(`kernel not implemented: ${t}`);let u={kernelType:t,kernelName:n,kernelEntry:s[0],attributes:[s[1],o]};this.kernels.set(r,u)}releaseKernel(t){let r=this.kernelPersistentData.get(t);if(r){for(let o of r)this.gpuDataManager.release(o.id);this.kernelPersistentData.delete(t)}this.kernelCustomData.delete(t),this.kernels.delete(t)}computeKernel(t,r,o){let n=this.kernels.get(t);if(!n)throw new Error(`kernel not created: ${t}`);let s=n.kernelType,u=n.kernelName,l=n.kernelEntry,a=n.attributes;if(this.currentKernelId!==null)throw new Error(`kernel "[${s}] ${u}" is not allowed to be called recursively`);this.currentKernelId=t,a[0]&&(a[1]=a[0](a[1]),a[0]=void 0),Be("info",()=>`[WebGPU] Start to run kernel "[${s}] ${u}"...`);let p=this.env.debug;this.temporaryData=[];try{return p&&this.device.pushErrorScope("validation"),l(r,a[1]),0}catch(h){return o.push(Promise.resolve(`[WebGPU] Kernel "[${s}] ${u}" failed. ${h}`)),1}finally{p&&o.push(this.device.popErrorScope().then(h=>h?`GPU validation error for kernel "[${s}] ${u}": ${h.message}`:null));for(let h of this.temporaryData)this.gpuDataManager.release(h.id);this.temporaryData=[],this.currentKernelId=null}}registerBuffer(t,r,o,n){let s=this.sessionExternalDataMapping.get(t);s||(s=new Map,this.sessionExternalDataMapping.set(t,s));let u=s.get(r),l=this.gpuDataManager.registerExternalBuffer(o,n,u?.[1]);return s.set(r,[l,o]),l}unregisterBuffers(t){let r=this.sessionExternalDataMapping.get(t);r&&(r.forEach(o=>this.gpuDataManager.unregisterExternalBuffer(o[1])),this.sessionExternalDataMapping.delete(t))}getBuffer(t){let r=this.gpuDataManager.get(t);if(!r)throw new Error(`no GPU data for buffer: ${t}`);return r.buffer}createDownloader(t,r,o){return async()=>{let n=await On(this,t,r);return sa(n.buffer,o)}}writeTimestamp(t){this.queryType==="inside-passes"&&this.computePassEncoder.writeTimestamp(this.querySet,t)}setQueryType(){this.queryType="none",(this.env.webgpu.profiling?.mode==="default"||this.env.wasm.trace)&&(this.device.features.has("chromium-experimental-timestamp-query-inside-passes")?this.queryType="inside-passes":this.device.features.has("timestamp-query")&&(this.queryType="at-passes"))}}});var $u={};Br($u,{init:()=>Vc});var gr,Jn,Vc,Su=j(()=>{"use strict";Ne();vu();Ct();$e();gr=class e{constructor(t,r,o,n){this.module=t;this.dataType=r;this.data=o;this.dims=n}getFloat32Array(){if(this.dataType!==1)throw new Error("Invalid data type");let t=U.size(this.dims);return t===0?new Float32Array:new Float32Array(this.module.HEAP8.buffer,this.data,t)}getBigInt64Array(){if(this.dataType!==7)throw new Error("Invalid data type");let t=U.size(this.dims);return t===0?new BigInt64Array:new BigInt64Array(this.module.HEAP8.buffer,this.data,t)}getInt32Array(){if(this.dataType!==6)throw new Error("Invalid data type");let t=U.size(this.dims);return t===0?new Int32Array:new Int32Array(this.module.HEAP8.buffer,this.data,t)}reshape(t){if(U.size(t)!==U.size(this.dims))throw new Error("Invalid new shape");return new e(this.module,this.dataType,this.data,t)}},Jn=class{constructor(t,r,o){this.module=t;this.backend=r;this.customDataOffset=0;this.customDataSize=0;let n=t.HEAPU32,s=o>>>2;this.opKernelContext=n[s++];let u=n[s++];this.outputCount=n[s++],this.customDataOffset=n[s++],this.customDataSize=n[s++];let l=[];for(let a=0;atypeof l=="number"?this.inputs[l]:l)??this.inputs,n=r?.outputs??[],s=(l,a,p)=>new gr(this.module,a,this.output(l,p),p),u=(l,a)=>{let p=cr(l);if(!p)throw new Error(`Unsupported data type: ${l}`);let h=p*U.size(a);return new gr(this.module,l,this.backend.gpuDataManager.create(h).id,a)};return this.backend.run(t,o,n,s,u)}output(t,r){let o=this.module.stackSave();try{let n=this.module.stackAlloc((1+r.length)*4),s=n>>2;this.module.HEAPU32[s++]=r.length;for(let u=0;u{let o=e.jsepInit;if(!o)throw new Error("Failed to initialize JSEP. The WebAssembly module is not built with JSEP support.");let n=new sn;await n.initialize(t,r),o(n,s=>n.alloc(s),s=>n.free(s),(s,u,l,a=!1)=>{if(a)Be("verbose",()=>`[WebGPU] jsepCopyGpuToGpu: src=${s}, dst=${u}, size=${l}`),n.memcpy(s,u);else{Be("verbose",()=>`[WebGPU] jsepCopyCpuToGpu: dataOffset=${s}, gpuDataId=${u}, size=${l}`);let p=e.HEAPU8.subarray(s>>>0,(s>>>0)+l);n.upload(u,p)}},async(s,u,l)=>{Be("verbose",()=>`[WebGPU] jsepCopyGpuToCpu: gpuDataId=${s}, dataOffset=${u}, size=${l}`),await n.download(s,()=>e.HEAPU8.subarray(u>>>0,(u>>>0)+l))},(s,u,l)=>n.createKernel(s,u,l,e.UTF8ToString(e._JsepGetNodeName(u))),s=>n.releaseKernel(s),(s,u,l,a)=>{Be("verbose",()=>`[WebGPU] jsepRun: sessionHandle=${l}, kernel=${s}, contextDataOffset=${u}`);let p=new Jn(e,n,u);return n.computeKernel(s,p,a)})}});var Mo;Mo=Io();var Ju=Ro(),Sn,xn=!1,Dr=!1,Do=!1,ed=e=>{if(e===1)return!1;if(typeof SharedArrayBuffer>"u")return typeof self<"u"&&!self.crossOriginIsolated&&console.warn("env.wasm.numThreads is set to "+e+", but this will not work unless you enable crossOriginIsolated mode. See https://web.dev/cross-origin-isolation-guide/ for more info."),!1;typeof process<"u"&&process.versions&&process.versions.node&&console.warn("env.wasm.numThreads is set to "+e+", however, currently onnxruntime-web does not support multi-threads in Node.js. Please consider using onnxruntime-node for performance critical scenarios.");try{return typeof MessageChannel<"u"&&new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch{return!1}},td=()=>{try{return WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,30,1,28,0,65,0,253,15,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,186,1,26,11]))}catch{return!1}},rd=(e,t)=>e?t?"ort-wasm-simd-threaded.wasm":"ort-wasm-simd.wasm":t?"ort-wasm-threaded.wasm":"ort-wasm.wasm",zo=async e=>{if(xn)return Promise.resolve();if(Dr)throw new Error("multiple calls to \'initializeWebAssembly()\' detected.");if(Do)throw new Error("previous call to \'initializeWebAssembly()\' failed.");Dr=!0;let t=e.initTimeout,r=e.numThreads,o=e.simd,n=ed(r),s=o&&td(),u=e.wasmPaths,l=typeof u=="string"?u:void 0,a=rd(s,n),p=typeof u=="object"?u[a]:void 0,h=!1,g=[];if(t>0&&g.push(new Promise(b=>{setTimeout(()=>{h=!0,b()},t)})),g.push(new Promise((b,w)=>{let y=n?Ju:Mo,_={locateFile:(I,$)=>{if(n&&I.endsWith(".worker.js")&&typeof Blob<"u")return URL.createObjectURL(new Blob([Bo()],{type:"text/javascript"}));if(I.endsWith(".wasm")){if(p)return p;let x=l??$;return a==="ort-wasm-simd.wasm"?x+"ort-wasm-simd.jsep.wasm":a==="ort-wasm-simd-threaded.wasm"?x+"ort-wasm-simd-threaded.jsep.wasm":x+a}return $+I}};if(n)if(_.numThreads=r,typeof Blob>"u")_.mainScriptUrlOrBlob=(void 0)(__dirname,"ort-wasm-threaded.js");else{let I=`var ortWasmThreaded=${y.toString()};`;_.mainScriptUrlOrBlob=new Blob([I],{type:"text/javascript"})}y(_).then(I=>{Dr=!1,xn=!0,Sn=I,b()},I=>{Dr=!1,Do=!0,w(I)})})),await Promise.race(g),h)throw new Error(`WebAssembly backend initializing failed due to timeout: ${t}ms`)},Ve=()=>{if(xn&&Sn)return Sn;throw new Error("WebAssembly is not initialized yet.")};var He=(e,t)=>{let r=Ve(),o=r.lengthBytesUTF8(e)+1,n=r._malloc(o);return r.stringToUTF8(e,n,o),t.push(n),n},lr=(e,t,r,o)=>{if(typeof e=="object"&&e!==null){if(r.has(e))throw new Error("Circular reference in options");r.add(e)}Object.entries(e).forEach(([n,s])=>{let u=t?t+n:n;if(typeof s=="object")lr(s,u+".",r,o);else if(typeof s=="string"||typeof s=="number")o(u,s.toString());else if(typeof s=="boolean")o(u,s?"1":"0");else throw new Error(`Can\'t handle extra config type: ${typeof s}`)})},ke=e=>{let t=Ve(),r=t.stackSave();try{let o=t.stackAlloc(8);t._OrtGetLastError(o,o+4);let n=t.HEAP32[o/4],s=t.HEAPU32[o/4+1],u=s?t.UTF8ToString(s):"";throw new Error(`${e} ERROR_CODE: ${n}, ERROR_MESSAGE: ${u}`)}finally{t.stackRestore(r)}};var Uo=e=>{let t=Ve(),r=0,o=[],n=e||{};try{if(e?.logSeverityLevel===void 0)n.logSeverityLevel=2;else if(typeof e.logSeverityLevel!="number"||!Number.isInteger(e.logSeverityLevel)||e.logSeverityLevel<0||e.logSeverityLevel>4)throw new Error(`log serverity level is not valid: ${e.logSeverityLevel}`);if(e?.logVerbosityLevel===void 0)n.logVerbosityLevel=0;else if(typeof e.logVerbosityLevel!="number"||!Number.isInteger(e.logVerbosityLevel))throw new Error(`log verbosity level is not valid: ${e.logVerbosityLevel}`);e?.terminate===void 0&&(n.terminate=!1);let s=0;return e?.tag!==void 0&&(s=He(e.tag,o)),r=t._OrtCreateRunOptions(n.logSeverityLevel,n.logVerbosityLevel,!!n.terminate,s),r===0&&ke("Can\'t create run options."),e?.extra!==void 0&&lr(e.extra,"",new WeakSet,(u,l)=>{let a=He(u,o),p=He(l,o);t._OrtAddRunConfigEntry(r,a,p)!==0&&ke(`Can\'t set a run config entry: ${u} - ${l}.`)}),[r,o]}catch(s){throw r!==0&&t._OrtReleaseRunOptions(r),o.forEach(u=>t._free(u)),s}};var nd=e=>{switch(e){case"disabled":return 0;case"basic":return 1;case"extended":return 2;case"all":return 99;default:throw new Error(`unsupported graph optimization level: ${e}`)}},od=e=>{switch(e){case"sequential":return 0;case"parallel":return 1;default:throw new Error(`unsupported execution mode: ${e}`)}},ad=e=>{e.extra||(e.extra={}),e.extra.session||(e.extra.session={});let t=e.extra.session;t.use_ort_model_bytes_directly||(t.use_ort_model_bytes_directly="1"),e.executionProviders&&e.executionProviders.some(r=>(typeof r=="string"?r:r.name)==="webgpu")&&(e.enableMemPattern=!1)},id=(e,t,r)=>{for(let o of t){let n=typeof o=="string"?o:o.name;switch(n){case"webnn":if(n="WEBNN",typeof o!="string"){let u=o;if(u?.deviceType){let l=He("deviceType",r),a=He(u.deviceType,r);Ve()._OrtAddSessionConfigEntry(e,l,a)!==0&&ke(`Can\'t set a session config entry: \'deviceType\' - ${u.deviceType}.`)}if(u?.numThreads){let l=u.numThreads;(typeof l!="number"||!Number.isInteger(l)||l<0)&&(l=0);let a=He("numThreads",r),p=He(l.toString(),r);Ve()._OrtAddSessionConfigEntry(e,a,p)!==0&&ke(`Can\'t set a session config entry: \'numThreads\' - ${u.numThreads}.`)}if(u?.powerPreference){let l=He("powerPreference",r),a=He(u.powerPreference,r);Ve()._OrtAddSessionConfigEntry(e,l,a)!==0&&ke(`Can\'t set a session config entry: \'powerPreference\' - ${u.powerPreference}.`)}}break;case"webgpu":if(n="JS",typeof o!="string"){let u=o;if(u?.preferredLayout){if(u.preferredLayout!=="NCHW"&&u.preferredLayout!=="NHWC")throw new Error(`preferredLayout must be either \'NCHW\' or \'NHWC\': ${u.preferredLayout}`);let l=He("preferredLayout",r),a=He(u.preferredLayout,r);Ve()._OrtAddSessionConfigEntry(e,l,a)!==0&&ke(`Can\'t set a session config entry: \'preferredLayout\' - ${u.preferredLayout}.`)}}break;case"wasm":case"cpu":continue;default:throw new Error(`not supported execution provider: ${n}`)}let s=He(n,r);Ve()._OrtAppendExecutionProvider(e,s)!==0&&ke(`Can\'t append execution provider: ${n}.`)}},Vo=e=>{let t=Ve(),r=0,o=[],n=e||{};ad(n);try{let s=nd(n.graphOptimizationLevel??"all"),u=od(n.executionMode??"sequential"),l=typeof n.logId=="string"?He(n.logId,o):0,a=n.logSeverityLevel??2;if(!Number.isInteger(a)||a<0||a>4)throw new Error(`log serverity level is not valid: ${a}`);let p=n.logVerbosityLevel??0;if(!Number.isInteger(p)||p<0||p>4)throw new Error(`log verbosity level is not valid: ${p}`);let h=typeof n.optimizedModelFilePath=="string"?He(n.optimizedModelFilePath,o):0;if(r=t._OrtCreateSessionOptions(s,!!n.enableCpuMemArena,!!n.enableMemPattern,u,!!n.enableProfiling,0,l,a,p,h),r===0&&ke("Can\'t create session options."),n.executionProviders&&id(r,n.executionProviders,o),n.freeDimensionOverrides)for(let[g,b]of Object.entries(n.freeDimensionOverrides)){if(typeof g!="string")throw new Error(`free dimension override name must be a string: ${g}`);if(typeof b!="number"||!Number.isInteger(b)||b<0)throw new Error(`free dimension override value must be a non-negative integer: ${b}`);let w=He(g,o);t._OrtAddFreeDimensionOverride(r,w,b)!==0&&ke(`Can\'t set a free dimension override: ${g} - ${b}.`)}return n.extra!==void 0&&lr(n.extra,"",new WeakSet,(g,b)=>{let w=He(g,o),y=He(b,o);t._OrtAddSessionConfigEntry(r,w,y)!==0&&ke(`Can\'t set a session config entry: ${g} - ${b}.`)}),[r,o]}catch(s){throw r!==0&&t._OrtReleaseSessionOptions(r),o.forEach(u=>t._free(u)),s}};Ne();var Wo=async e=>{if(typeof e=="string")if(typeof process<"u"&&process.versions&&process.versions.node)try{return new Uint8Array(await(void 0)(e))}catch(t){if(t.code==="ERR_FS_FILE_TOO_LARGE"){let r=(void 0)(e),o=[];for await(let n of r)o.push(n);return new Uint8Array(Buffer.concat(o))}throw t}else{let t=await fetch(e);if(!t.ok)throw new Error(`failed to load external data file: ${e}`);let r=t.headers.get("Content-Length"),o=r?parseInt(r,10):0;if(o<1073741824)return new Uint8Array(await t.arrayBuffer());{if(!t.body)throw new Error(`failed to load external data file: ${e}, no response body.`);let n=t.body.getReader(),s;try{s=new ArrayBuffer(o)}catch(l){if(l instanceof RangeError){let a=Math.ceil(o/65536);s=new WebAssembly.Memory({initial:a,maximum:a}).buffer}else throw l}let u=0;for(;;){let{done:l,value:a}=await n.read();if(l)break;let p=a.byteLength;new Uint8Array(s,u,p).set(a),u+=p}return new Uint8Array(s,0,o)}}else return e instanceof Blob?new Uint8Array(await e.arrayBuffer()):e instanceof Uint8Array?e:new Uint8Array(e)};var Nc=(e,t)=>{Ve()._OrtInit(e,t)!==0&&ke("Can\'t initialize onnxruntime.")},_u=async e=>{Nc(e.wasm.numThreads,pr(e.logLevel))},Cu=async(e,t)=>{if(t==="webgpu"){if(typeof navigator>"u"||!navigator.gpu)throw new Error("WebGPU is not supported in current environment");let r=await navigator.gpu.requestAdapter();if(!r)throw new Error(\'Failed to get GPU adapter. You may need to enable flag "--enable-unsafe-webgpu" if you are using Chrome.\');if(!e.wasm.simd)throw new Error("Not supported for WebGPU=ON and SIMD=OFF. Please set `env.wasm.simd` to true when using `webgpu` EP");let o=(Su(),Ht($u)).init;await o(Ve(),e,r)}},yr=new Map,Wc=e=>{let t=Ve(),r=t.stackSave();try{let o=t.stackAlloc(8);return t._OrtGetInputOutputCount(e,o,o+4)!==0&&ke("Can\'t get session input/output count."),[t.HEAP32[o/4],t.HEAP32[o/4+1]]}finally{t.stackRestore(r)}},eo=e=>{let t=Ve(),r=t._malloc(e.byteLength);if(r===0)throw new Error(`Can\'t create a session. failed to allocate a buffer of size ${e.byteLength}.`);return t.HEAPU8.set(e,r),[r,e.byteLength]},Iu=async(e,t)=>{let r,o,n=Ve();Array.isArray(e)?[r,o]=e:e.buffer===n.HEAPU8.buffer?[r,o]=[e.byteOffset,e.byteLength]:[r,o]=eo(e);let s=0,u=0,l=0,a=[],p=[],h=[];try{if([u,a]=Vo(t),t?.externalData&&n.mountExternalData){let $=[];for(let x of t.externalData){let E=typeof x=="string"?x:x.path;$.push(Wo(typeof x=="string"?x:x.data).then(A=>{n.mountExternalData(E,A)}))}await Promise.all($)}s=n._OrtCreateSession(r,o,u),s===0&&ke("Can\'t create a session.");let[g,b]=Wc(s),w=[],y=[],_=[];for(let $=0;$$==="gpu-buffer")&&(l=n._OrtCreateBinding(s),l===0&&ke("Can\'t create IO binding."),I={handle:l,outputPreferredLocations:_,outputPreferredLocationsEncoded:_.map($=>Cn($))}),yr.set(s,[s,p,h,I]),[s,w,y]}catch(g){throw p.forEach(b=>n._OrtFree(b)),h.forEach(b=>n._OrtFree(b)),l!==0&&n._OrtReleaseBinding(l),s!==0&&n._OrtReleaseSession(s),g}finally{n._free(r),u!==0&&n._OrtReleaseSessionOptions(u),a.forEach(g=>n._free(g)),n.unmountExternalData?.()}},Au=e=>{let t=Ve(),r=yr.get(e);if(!r)throw new Error(`cannot release session. invalid session id: ${e}`);let[o,n,s,u]=r;u&&t._OrtReleaseBinding(u.handle),t.jsepUnregisterBuffers?.(e),n.forEach(l=>t._OrtFree(l)),s.forEach(l=>t._OrtFree(l)),t._OrtReleaseSession(o),yr.delete(e)},xu=(e,t,r,o,n)=>{if(!e){t.push(0);return}let s=Ve(),u=e[0],l=e[1],a=e[3],p,h;if(u==="string"&&a==="gpu-buffer")throw new Error("String tensor is not supported on GPU.");if(a==="gpu-buffer"){let w=e[2].gpuBuffer,y=cr(_n(u));h=l.reduce((_,I)=>_*I,1)*y,p=s.jsepRegisterBuffer(o,n,w,h)}else{let w=e[2];if(Array.isArray(w)){h=4*w.length,p=s._malloc(h),r.push(p);let y=p/4;for(let _=0;_s.HEAP32[w++]=_);let y=s._OrtCreateTensor(_n(u),p,h,b,l.length,Cn(a));y===0&&ke(`Can\'t create tensor for input/output. session=${o}, index=${n}.`),t.push(y)}finally{s.stackRestore(g)}},Tu=async(e,t,r,o,n,s)=>{let u=Ve(),l=yr.get(e);if(!l)throw new Error(`cannot run inference. invalid session id: ${e}`);let[a,p,h,g]=l,b=t.length,w=o.length,y=0,_=[],I=[],$=[],x=[],E=u.stackSave(),A=u.stackAlloc(b*4),z=u.stackAlloc(b*4),R=u.stackAlloc(w*4),V=u.stackAlloc(w*4);try{[y,_]=Uo(s);for(let Z=0;ZUe*Me,1);he=Xe(Ge);let ze=g?.outputPreferredLocations[o[Z]];if(he==="string"){if(ze==="gpu-buffer")throw new Error("String tensor is not supported on GPU.");let Ue=[],Me=ye/4;for(let wt=0;wt0){let Ue=u.jsepGetBuffer(ye),Me=cr(Ge);if(Me===void 0||!No(he))throw new Error(`Unsupported data type: ${he}`);Ie=!0,Q.push([he,be,{gpuBuffer:Ue,download:u.jsepCreateDownloader(Ue,et*Me,he),dispose:()=>{u._OrtReleaseTensor(Ee)}},"gpu-buffer"])}else{let Ue=Mr(he),Me=new Ue(et);new Uint8Array(Me.buffer,Me.byteOffset,Me.byteLength).set(u.HEAPU8.subarray(ye,ye+Me.byteLength)),Q.push([he,be,Me,"cpu"])}}finally{u.stackRestore(Pe),he==="string"&&ye&&u._free(ye),Ie||u._OrtReleaseTensor(Ee)}}return g&&u._OrtClearBoundOutputs(g.handle),Q}finally{u.stackRestore(E),I.forEach(T=>u._OrtReleaseTensor(T)),$.forEach(T=>u._OrtReleaseTensor(T)),x.forEach(T=>u._free(T)),y!==0&&u._OrtReleaseRunOptions(y),_.forEach(T=>u._free(T))}},Eu=e=>{let t=Ve(),r=yr.get(e);if(!r)throw new Error("invalid session id");let o=r[0],n=t._OrtEndProfiling(o);n===0&&ke("Can\'t get an profile file name."),t._OrtFree(n)},Ou=e=>{let t=[];for(let r of e){let o=r[2];!Array.isArray(o)&&"buffer"in o&&t.push(o.buffer)}return t};self.onmessage=e=>{let{type:t,in:r}=e.data;try{switch(t){case"init-wasm":zo(r.wasm).then(()=>{_u(r).then(()=>{postMessage({type:t})},o=>{postMessage({type:t,err:o})})},o=>{postMessage({type:t,err:o})});break;case"init-ep":{let{epName:o,env:n}=r;Cu(n,o).then(()=>{postMessage({type:t})},s=>{postMessage({type:t,err:s})});break}case"copy-from":{let{buffer:o}=r,n=eo(o);postMessage({type:t,out:n});break}case"create":{let{model:o,options:n}=r;Iu(o,n).then(s=>{postMessage({type:t,out:s})},s=>{postMessage({type:t,err:s})});break}case"release":Au(r),postMessage({type:t});break;case"run":{let{sessionId:o,inputIndices:n,inputs:s,outputIndices:u,options:l}=r;Tu(o,n,s,u,new Array(u.length).fill(null),l).then(a=>{a.some(p=>p[3]!=="cpu")?postMessage({type:t,err:"Proxy does not support non-cpu tensor location."}):postMessage({type:t,out:a},Ou(a))},a=>{postMessage({type:t,err:a})});break}case"end-profiling":Eu(r),postMessage({type:t});break;default:}}catch(o){postMessage({type:t,err:o})}};})();\n/**\n * @license\n * Copyright 2021 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the "License");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an "AS IS" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the "License");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an "AS IS" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n/**\n * @license\n * Copyright 2019 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the "License");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an "AS IS" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n'});var Ht,ut,Or,Tn,On,Ea,Ta,rr,nr,Fp,En,wl,vl,$l,_l,xl,Sl,Il,Oa=F(()=>{"use strict";st();yl();Jt();Ht=()=>!!Se.wasm.proxy&&typeof document<"u",Or=!1,Tn=!1,On=!1,Ta=new Map,rr=(e,t)=>{let r=Ta.get(e);r?r.push(t):Ta.set(e,[t])},nr=()=>{if(Or||!Tn||On||!ut)throw new Error("worker not ready")},Fp=e=>{switch(e.data.type){case"init-wasm":Or=!1,e.data.err?(On=!0,Ea[1](e.data.err)):(Tn=!0,Ea[0]());break;case"init-ep":case"copy-from":case"create":case"release":case"run":case"end-profiling":{let t=Ta.get(e.data.type);e.data.err?t.shift()[1](e.data.err):t.shift()[0](e.data.out);break}default:}},En=typeof document<"u"?document?.currentScript?.src:void 0,wl=async()=>{if(!Tn){if(Or)throw new Error("multiple calls to 'initWasm()' detected.");if(On)throw new Error("previous call to 'initWasm()' failed.");if(Or=!0,Ht())return Se.wasm.wasmPaths===void 0&&En&&En.indexOf("blob:")!==0&&(Se.wasm.wasmPaths=En.substr(0,+En.lastIndexOf("/")+1)),new Promise((e,t)=>{ut?.terminate();let r=URL.createObjectURL(new Blob([bl()],{type:"text/javascript"}));ut=new Worker(r,{name:"ort-wasm-proxy-worker"}),ut.onerror=n=>t(n),ut.onmessage=Fp,URL.revokeObjectURL(r),Ea=[e,t];let a={type:"init-wasm",in:Se};ut.postMessage(a)});try{await Ui(Se.wasm),await dl(Se),Tn=!0}catch(e){throw On=!0,e}finally{Or=!1}}},vl=async e=>{if(Ht())return nr(),new Promise((t,r)=>{rr("init-ep",[t,r]);let a={type:"init-ep",in:{epName:e,env:Se}};ut.postMessage(a)});await cl(Se,e)},$l=async e=>Ht()?(nr(),new Promise((t,r)=>{rr("copy-from",[t,r]);let a={type:"copy-from",in:{buffer:e}};ut.postMessage(a,[e.buffer])})):Aa(e),_l=async(e,t)=>{if(Ht()){if(t?.preferredOutputLocation)throw new Error('session option "preferredOutputLocation" is not supported for proxy.');return nr(),new Promise((r,a)=>{rr("create",[r,a]);let n={type:"create",in:{model:e,options:t}},o=[];e instanceof Uint8Array&&o.push(e.buffer),ut.postMessage(n,o)})}else return pl(e,t)},xl=async e=>{if(Ht())return nr(),new Promise((t,r)=>{rr("release",[t,r]);let a={type:"release",in:e};ut.postMessage(a)});ml(e)},Sl=async(e,t,r,a,n,o)=>{if(Ht()){if(r.some(u=>u[3]!=="cpu"))throw new Error("input tensor on GPU is not supported for proxy.");if(n.some(u=>u))throw new Error("pre-allocated output tensor is not supported for proxy.");return nr(),new Promise((u,l)=>{rr("run",[u,l]);let i=r,c={type:"run",in:{sessionId:e,inputIndices:t,inputs:i,outputIndices:a,options:o}};ut.postMessage(c,gl(i))})}else return fl(e,t,r,a,n,o)},Il=async e=>{if(Ht())return nr(),new Promise((t,r)=>{rr("end-profiling",[t,r]);let a={type:"end-profiling",in:e};ut.postMessage(a)});hl(e)}});var Cl,qp,kn,Al=F(()=>{"use strict";st();Oa();Ue();ta();Cl=(e,t)=>{switch(e.location){case"cpu":return[e.type,e.dims,e.data,"cpu"];case"gpu-buffer":return[e.type,e.dims,{gpuBuffer:e.gpuBuffer},"gpu-buffer"];default:throw new Error(`invalid data location: ${e.location} for ${t()}`)}},qp=e=>{switch(e[3]){case"cpu":return new Xe(e[0],e[2],e[1]);case"gpu-buffer":{let t=e[0];if(!on(t))throw new Error(`not supported data type: ${t} for deserializing GPU tensor`);let{gpuBuffer:r,download:a,dispose:n}=e[2];return Xe.fromGpuBuffer(r,{dataType:t,dims:e[1],download:a,dispose:n})}default:throw new Error(`invalid data location: ${e[3]}`)}},kn=class{async fetchModelAndCopyToWasmMemory(t){return $l(await Sr(t))}async loadModel(t,r){at();let a;typeof t=="string"?typeof process<"u"&&process.versions&&process.versions.node?a=await Sr(t):a=await this.fetchModelAndCopyToWasmMemory(t):a=t,[this.sessionId,this.inputNames,this.outputNames]=await _l(a,r),it()}async dispose(){return xl(this.sessionId)}async run(t,r,a){at();let n=[],o=[];Object.entries(t).forEach(h=>{let b=h[0],w=h[1],_=this.inputNames.indexOf(b);if(_===-1)throw new Error(`invalid input '${b}'`);n.push(w),o.push(_)});let u=[],l=[];Object.entries(r).forEach(h=>{let b=h[0],w=h[1],_=this.outputNames.indexOf(b);if(_===-1)throw new Error(`invalid output '${b}'`);u.push(w),l.push(_)});let i=n.map((h,b)=>Cl(h,()=>`input "${this.inputNames[o[b]]}"`)),c=u.map((h,b)=>h?Cl(h,()=>`output "${this.outputNames[l[b]]}"`):null),m=await Sl(this.sessionId,o,i,l,c,a),f={};for(let h=0;h{"use strict";st();Oa();Al();jp=()=>{if((typeof Se.wasm.initTimeout!="number"||Se.wasm.initTimeout<0)&&(Se.wasm.initTimeout=0),typeof Se.wasm.simd!="boolean"&&(Se.wasm.simd=!0),typeof Se.wasm.proxy!="boolean"&&(Se.wasm.proxy=!1),typeof Se.wasm.trace!="boolean"&&(Se.wasm.trace=!1),typeof Se.wasm.numThreads!="number"||!Number.isInteger(Se.wasm.numThreads)||Se.wasm.numThreads<=0){(typeof self<"u"&&!self.crossOriginIsolated||typeof process<"u"&&process.versions&&process.versions.node)&&(Se.wasm.numThreads=1);let e=typeof navigator>"u"?(void 0)().length:navigator.hardwareConcurrency;Se.wasm.numThreads=Math.min(4,Math.ceil((e||1)/2))}},Pn=class{async init(t){jp(),await wl(),await vl(t)}async createInferenceSessionHandler(t,r){let a=new kn;return await a.loadModel(t,r),Promise.resolve(a)}}});var Tl={};Xt(Tl,{wasmBackend:()=>Kp});var Kp,Ol=F(()=>{"use strict";El();Kp=new Pn});st();st();st();var xi="1.17.1";var Vw=Gn;{let e=(Ol(),Ut(Tl)).wasmBackend;Qt("webgpu",e,5),Qt("cpu",e,10),Qt("wasm",e,10)}Object.defineProperty(Se.versions,"web",{value:xi,enumerable:!0}); +/** + * @license + * Copyright 2021 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +/** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +/** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +//# sourceMappingURL=ort.webgpu.min.js.map + + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/define property getters */ +/******/ (() => { +/******/ // define getter functions for harmony exports +/******/ __webpack_require__.d = (exports, definition) => { +/******/ for(var key in definition) { +/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) +/******/ })(); +/******/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __webpack_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk. +(() => { +/*!******************!*\ + !*** ./index.js ***! + \******************/ +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var onnxruntime_web_webgpu__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! onnxruntime-web/webgpu */ "./node_modules/onnxruntime-web/dist/esm/ort.webgpu.min.js"); +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +// +// An example how to run segment-anything with webgpu in onnxruntime-web. +// + + + +// the image size on canvas +const MAX_WIDTH = 500; +const MAX_HEIGHT = 500; + +// the image size supported by the model +const MODEL_WIDTH = 1024; +const MODEL_HEIGHT = 1024; + +const MODELS = { + sam_b: [ + { + name: "sam-b-encoder", + url: "https://huggingface.co/schmuell/sam-b-fp16/resolve/main/sam_vit_b_01ec64.encoder-fp16.onnx", + size: 180, + }, + { + name: "sam-b-decoder", + url: "https://huggingface.co/schmuell/sam-b-fp16/resolve/main/sam_vit_b_01ec64.decoder.onnx", + size: 17, + }, + ], + slimsam: [ + { + name: "slimsam-encoder", + url: "https://huggingface.co/Xenova/slimsam-77-uniform/resolve/main/onnx/vision_encoder.onnx", + size: 24, + }, + { + name: "slimsam-decoder", + url: "https://huggingface.co/Xenova/slimsam-77-uniform/resolve/main/onnx/prompt_encoder_mask_decoder.onnx", + size: 16, + } + ], +}; + +const config = getConfig(); + +onnxruntime_web_webgpu__WEBPACK_IMPORTED_MODULE_0__["default"].env.wasm.wasmPaths = 'dist/'; +onnxruntime_web_webgpu__WEBPACK_IMPORTED_MODULE_0__["default"].env.wasm.numThreads = config.threads; +onnxruntime_web_webgpu__WEBPACK_IMPORTED_MODULE_0__["default"].env.wasm.proxy = false; + +let canvas; +let filein; +let decoder_latency; + +var image_embeddings; +var points = []; +var labels = []; +var imageImageData; +var isClicked = false; +var maskImageData; + +function log(i) { + document.getElementById('status').innerText += `\n${i}`; +} + +/** + * create config from url + */ +function getConfig() { + const query = window.location.search.substring(1); + var config = { + model: "sam_b", + provider: "webgpu", + device: "gpu", + threads: "1", + }; + let vars = query.split("&"); + for (var i = 0; i < vars.length; i++) { + let pair = vars[i].split("="); + if (pair[0] in config) { + config[pair[0]] = decodeURIComponent(pair[1]); + } else if (pair[0].length > 0) { + throw new Error("unknown argument: " + pair[0]); + } + } + config.threads = parseInt(config.threads); + config.local = parseInt(config.local); + config.isSlimSam = config.model.includes("slimsam"); + + return config; +} + +/** + * clone tensor + */ +function cloneTensor(t) { + return new onnxruntime_web_webgpu__WEBPACK_IMPORTED_MODULE_0__["default"].Tensor(t.type, Float32Array.from(t.data), t.dims); +} + +/* + * create feed for slimsam models + */ +function feedForSlim(emb, points, labels) { + const pointCoords = new onnxruntime_web_webgpu__WEBPACK_IMPORTED_MODULE_0__["default"].Tensor(new Float32Array(points), [1, 1, points.length / 2, 2]); + const pointLabels = new onnxruntime_web_webgpu__WEBPACK_IMPORTED_MODULE_0__["default"].Tensor(BigInt64Array.from(labels.map((x) => BigInt(x))), [1, 1, labels.length]); + + return { + "image_embeddings": cloneTensor(emb.image_embeddings), + "image_positional_embeddings": cloneTensor(emb.image_positional_embeddings), + "input_points": pointCoords, + "input_labels": pointLabels, + } +} + +/* + * create feed for the original facebook model + */ +function feedForSam(emb, points, labels) { + const maskInput = new onnxruntime_web_webgpu__WEBPACK_IMPORTED_MODULE_0__["default"].Tensor(new Float32Array(256 * 256), [1, 1, 256, 256]); + const hasMask = new onnxruntime_web_webgpu__WEBPACK_IMPORTED_MODULE_0__["default"].Tensor(new Float32Array([0]), [1,]); + const origianlImageSize = new onnxruntime_web_webgpu__WEBPACK_IMPORTED_MODULE_0__["default"].Tensor(new Float32Array([MODEL_HEIGHT, MODEL_WIDTH]), [2,]); + const pointCoords = new onnxruntime_web_webgpu__WEBPACK_IMPORTED_MODULE_0__["default"].Tensor(new Float32Array(points), [1, points.length / 2, 2]); + const pointLabels = new onnxruntime_web_webgpu__WEBPACK_IMPORTED_MODULE_0__["default"].Tensor(new Float32Array(labels), [1, labels.length]); + + return { + "image_embeddings": cloneTensor(emb.image_embeddings), + "point_coords": pointCoords, + "point_labels": pointLabels, + "mask_input": maskInput, + "has_mask_input": hasMask, + "orig_im_size": origianlImageSize + } +} + +async function handleCut(event) { + if (points.length == 0) { + return; + } + + const [w, h] = [canvas.width, canvas.height]; + + // cutout + const cutCanvas = new OffscreenCanvas(w, h); + const cutContext = cutCanvas.getContext('2d'); + const cutPixelData = cutContext.getImageData(0, 0, w, h); + + // need to rescale mask to image size + const maskCanvas = new OffscreenCanvas(w, h); + const maskContext = maskCanvas.getContext('2d'); + maskContext.drawImage(await createImageBitmap(maskImageData), 0, 0); + const maskPixelData = maskContext.getImageData(0, 0, w, h); + + for (let i = 0; i < maskPixelData.data.length; i += 4) { + if (maskPixelData.data[i] > 0) { + for (let j = 0; j < 4; ++j) { + const offset = i + j; + cutPixelData.data[offset] = imageImageData.data[offset]; + } + } + } + cutContext.putImageData(cutPixelData, 0, 0); + + // Download image + const link = document.createElement('a'); + link.download = 'image.png'; + link.href = URL.createObjectURL(await cutCanvas.convertToBlob()); + link.click(); + link.remove(); +} + +/** + * handler to handle click event on canvas + * with ctl: add point + * with shift: forground label + */ +async function handleClick(event) { + + if (isClicked) { + return; + } + try { + isClicked = true; + canvas.style.cursor = "wait"; + + const rect = canvas.getBoundingClientRect(); + const x = Math.trunc(event.clientX - rect.left); + const y = Math.trunc(event.clientY - rect.top); + const label = (event.shiftKey) ? 0 : 1; + + // need to wait for encoer to be ready + if (image_embeddings === undefined) { + await MODELS[config.model][0].sess; + } + + // wait for encder to deliver embeddings + const emb = await image_embeddings; + if (!event.ctrlKey) { + points = []; + labels = []; + } + points.push(x, y); + labels.push(label); + + let ctx = canvas.getContext('2d'); + ctx.clearRect(0, 0, canvas.width, canvas.height); + canvas.width = imageImageData.width; + canvas.height = imageImageData.height; + ctx.putImageData(imageImageData, 0, 0); + for (let i = 0; i < points.length; i += 2) { + ctx.fillStyle = 'blue'; + ctx.fillRect(points[i], points[i + 1], 10, 10); + } + + // the decoder + const session = MODELS[config.model][1].sess; + + const feed = (config.isSlimSam) ? feedForSlim(emb, points, labels) : feedForSam(emb, points, labels); + const start = performance.now(); + const res = await session.run(feed); + decoder_latency.innerText = `${(performance.now() - start).toFixed(1)}ms`; + + const mask = (config.isSlimSam) ? res.pred_masks : res.masks; + maskImageData = mask.toImageData(); + ctx.globalAlpha = 0.3; + ctx.drawImage(await createImageBitmap(maskImageData), 0, 0); + } + finally { + canvas.style.cursor = "default"; + isClicked = false; + } +} + + +/** + * handler called when image available + */ +async function handleImage(img) { + const encoder_latency = document.getElementById("encoder_latency"); + encoder_latency.innerText = ""; + filein.disabled = true; + decoder_latency.innerText = ""; + canvas.style.cursor = "wait"; + image_embeddings = undefined; + var width = img.width; + var height = img.height; + + if (width > height) { + if (width > MAX_WIDTH) { + height = height * (MAX_WIDTH / width); + width = MAX_WIDTH; + } + } else { + if (height > MAX_HEIGHT) { + width = width * (MAX_HEIGHT / height); + height = MAX_HEIGHT; + } + } + width = Math.round(width); + height = Math.round(height); + + canvas.width = width; + canvas.height = height; + var ctx = canvas.getContext("2d"); + ctx.drawImage(img, 0, 0, width, height); + + imageImageData = ctx.getImageData(0, 0, width, height); + + //const t = await ort.Tensor.fromImage(imageImageData, options = ); + const t = await onnxruntime_web_webgpu__WEBPACK_IMPORTED_MODULE_0__["default"].Tensor.fromImage(imageImageData, { resizedWidth: MODEL_WIDTH, resizedHeight: MODEL_HEIGHT }); + const feed = (config.isSlimSam) ? { "pixel_values": t } : { "input_image": t }; + const session = await MODELS[config.model][0].sess; + + const start = performance.now(); + image_embeddings = session.run(feed); + image_embeddings.then(() => { + encoder_latency.innerText = `${(performance.now() - start).toFixed(1)}ms`; + canvas.style.cursor = "default"; + }); + filein.disabled = false; +} + + +/* + * fetch and cache url + */ +async function fetchAndCache(url, name) { + try { + const cache = await caches.open("onnx"); + let cachedResponse = await cache.match(url); + if (cachedResponse == undefined) { + await cache.add(url); + cachedResponse = await cache.match(url); + log(`${name} (network)`); + } else { + log(`${name} (cached)`); + } + const data = await cachedResponse.arrayBuffer(); + return data; + } catch (error) { + log(`${name} (network)`); + return await fetch(url).then(response => response.arrayBuffer()); + } +} + + +/* + * load models one at a time + */ +async function load_models(models) { + const cache = await caches.open("onnx"); + let missing = 0; + for (const [name, model] of Object.entries(models)) { + let cachedResponse = await cache.match(model.url); + if (cachedResponse === undefined) { + missing += model.size; + } + } + if (missing > 0) { + log(`downloading ${missing} MB from network ... it might take a while`); + } else { + log("loading..."); + } + const start = performance.now(); + for (const [name, model] of Object.entries(models)) { + try { + const opt = { + executionProviders: [config.provider], + enableMemPattern: false, + enableCpuMemArena: false, + extra: { + session: { + disable_prepacking: "1", + use_device_allocator_for_initializers: "1", + use_ort_model_bytes_directly: "1", + use_ort_model_bytes_for_initializers: "1" + } + }, + }; + const model_bytes = await fetchAndCache(model.url, model.name); + const extra_opt = model.opt || {}; + const sess_opt = { ...opt, ...extra_opt }; + model.sess = await onnxruntime_web_webgpu__WEBPACK_IMPORTED_MODULE_0__["default"].InferenceSession.create(model_bytes, sess_opt); + } catch (e) { + log(`${model.url} failed, ${e}`); + } + } + const stop = performance.now(); + log(`ready, ${(stop - start).toFixed(1)}ms`); +} + +async function main() { + const model = MODELS[config.model]; + + canvas = document.getElementById("img_canvas"); + canvas.style.cursor = "wait"; + + filein = document.getElementById("file-in"); + decoder_latency = document.getElementById("decoder_latency"); + + let img = document.getElementById("original-image"); + + await load_models(MODELS[config.model]).then(() => { + canvas.addEventListener("click", handleClick); + document.getElementById("cut-button").addEventListener("click", handleCut); + + // image upload + filein.onchange = function (evt) { + let target = evt.target || window.event.src, files = target.files; + if (FileReader && files && files.length) { + let fileReader = new FileReader(); + fileReader.onload = () => { + img.onload = () => handleImage(img); + img.src = fileReader.result; + } + fileReader.readAsDataURL(files[0]); + } + }; + handleImage(img); + }, (e) => { + log(e); + }); +} + +async function hasFp16() { + try { + const adapter = await navigator.gpu.requestAdapter() + return adapter.features.has('shader-f16') + } catch (e) { + return false + } +} + +document.addEventListener("DOMContentLoaded", () => { + hasFp16().then((fp16) => { + if (fp16) { + main(); + } else { + log("Your GPU or Browser doesn't support webgpu/f16"); + } + }); +}); + +})(); + + +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/segment-anything/dist/index.js.map b/segment-anything/dist/index.js.map new file mode 100644 index 0000000..39c5bdc --- /dev/null +++ b/segment-anything/dist/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"dist/index.js","mappings":"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WAAW,6CAA6C,cAAc,kBAAkB,eAAe,qBAAqB,EAAE,oBAAoB,aAAa,KAAK,KAAK,KAAK,QAAQ,uVAAuV,kIAAkI,2EAA2E,oDAAoD,UAAU,cAAc,4BAA4B,yCAAyC,aAAa,mDAAmD,EAAE,UAAU,OAAO,mBAAmB,EAAE,iBAAiB,aAAa,KAAK,UAAU,EAAE,KAAK,KAAK,KAAK,gBAAgB,WAAW,gCAAgC,gDAAgD,yCAAyC,uBAAuB,EAA0K;AACl0/T;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;SC3mEA;SACA;;SAEA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;;SAEA;SACA;;SAEA;SACA;SACA;;;;;UCtBA;UACA;UACA;UACA;UACA,yCAAyC,wCAAwC;UACjF;UACA;UACA;;;;;UCPA;;;;;UCAA;UACA;UACA;UACA,uDAAuD,iBAAiB;UACxE;UACA,gDAAgD,aAAa;UAC7D;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;;AAEyC;;AAEzC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,kEAAO;AACP,kEAAO;AACP,kEAAO;;AAEP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wDAAwD,EAAE;AAC1D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,qEAAU;AACzB;;AAEA;AACA;AACA;AACA;AACA,4BAA4B,qEAAU;AACtC,4BAA4B,qEAAU;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,0BAA0B,qEAAU;AACpC,wBAAwB,qEAAU;AAClC,kCAAkC,qEAAU;AAC5C,4BAA4B,qEAAU;AACtC,4BAA4B,qEAAU;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,+BAA+B;AACnD;AACA,4BAA4B,OAAO;AACnC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,uCAAuC,uCAAuC;;AAE9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,oBAAoB,qEAAU,6BAA6B,wDAAwD;AACnH,wCAAwC,oBAAoB,IAAI;AAChE;;AAEA;AACA;AACA;AACA,uCAAuC,uCAAuC;AAC9E;AACA,KAAK;AACL;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,MAAM;AACzB,UAAU;AACV,mBAAmB,MAAM;AACzB;AACA;AACA;AACA,MAAM;AACN,eAAe,MAAM;AACrB;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,+BAA+B;AAC/B,+BAA+B,+EAAoB;AACnD,UAAU;AACV,mBAAmB,WAAW,UAAU,EAAE;AAC1C;AACA;AACA;AACA,kBAAkB,0BAA0B;AAC5C;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;AACL,CAAC","sources":["webpack://segment-anything-demo/./node_modules/onnxruntime-web/dist/esm/ort.webgpu.min.js","webpack://segment-anything-demo/webpack/bootstrap","webpack://segment-anything-demo/webpack/runtime/define property getters","webpack://segment-anything-demo/webpack/runtime/hasOwnProperty shorthand","webpack://segment-anything-demo/webpack/runtime/make namespace object","webpack://segment-anything-demo/./index.js"],"sourcesContent":["/*!\n * ONNX Runtime Web v1.17.1\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar Wn=Object.defineProperty;var Gl=Object.getOwnPropertyDescriptor;var Fl=Object.getOwnPropertyNames;var ql=Object.prototype.hasOwnProperty;var F=(e,t)=>()=>(e&&(t=e(e=0)),t);var Zt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Xt=(e,t)=>{for(var r in t)Wn(e,r,{get:t[r],enumerable:!0})},jl=(e,t,r,a)=>{if(t&&typeof t==\"object\"||typeof t==\"function\")for(let n of Fl(t))!ql.call(e,n)&&n!==r&&Wn(e,n,{get:()=>t[n],enumerable:!(a=Gl(t,n))||a.enumerable});return e};var Ut=e=>jl(Wn({},\"__esModule\",{value:!0}),e);var jr,Nt,Qt,Kr,Yr=F(()=>{\"use strict\";jr=new Map,Nt=[],Qt=(e,t,r)=>{if(t&&typeof t.init==\"function\"&&typeof t.createInferenceSessionHandler==\"function\"){let a=jr.get(e);if(a===void 0)jr.set(e,{backend:t,priority:r});else{if(a.priority>r)return;if(a.priority===r&&a.backend!==t)throw new Error(`cannot register backend \"${e}\" using priority ${r}`)}if(r>=0){let n=Nt.indexOf(e);n!==-1&&Nt.splice(n,1);for(let o=0;o{let t=e.length===0?Nt:e,r=[];for(let a of t){let n=jr.get(a);if(n){if(n.initialized)return n.backend;if(n.aborted)continue;let o=!!n.initPromise;try{return o||(n.initPromise=n.backend.init(a)),await n.initPromise,n.initialized=!0,n.backend}catch(u){o||r.push({name:a,err:u}),n.aborted=!0}finally{delete n.initPromise}}}throw new Error(`no available backend found. ERR: ${r.map(a=>`[${a.name}] ${a.err}`).join(\", \")}`)}});var Qa=F(()=>{\"use strict\";Yr()});var Ja,ei=F(()=>{\"use strict\";Ja=\"1.17.1\"});var ti,Wt,Vn=F(()=>{\"use strict\";ei();ti=\"warning\",Wt={wasm:{},webgl:{},webgpu:{},versions:{common:Ja},set logLevel(e){if(e!==void 0){if(typeof e!=\"string\"||[\"verbose\",\"info\",\"warning\",\"error\",\"fatal\"].indexOf(e)===-1)throw new Error(`Unsupported logging level: ${e}`);ti=e}},get logLevel(){return ti}};Object.defineProperty(Wt,\"logLevel\",{enumerable:!0})});var Se,ri=F(()=>{\"use strict\";Vn();Se=Wt});var ni,ai,ii=F(()=>{\"use strict\";ni=(e,t)=>{let r=typeof document<\"u\"?document.createElement(\"canvas\"):new OffscreenCanvas(1,1);r.width=e.dims[3],r.height=e.dims[2];let a=r.getContext(\"2d\");if(a!=null){let n,o;t?.tensorLayout!==void 0&&t.tensorLayout===\"NHWC\"?(n=e.dims[2],o=e.dims[3]):(n=e.dims[3],o=e.dims[2]);let u=t?.format!==void 0?t.format:\"RGB\",l=t?.norm,i,c;l===void 0||l.mean===void 0?i=[255,255,255,255]:typeof l.mean==\"number\"?i=[l.mean,l.mean,l.mean,l.mean]:(i=[l.mean[0],l.mean[1],l.mean[2],0],l.mean[3]!==void 0&&(i[3]=l.mean[3])),l===void 0||l.bias===void 0?c=[0,0,0,0]:typeof l.bias==\"number\"?c=[l.bias,l.bias,l.bias,l.bias]:(c=[l.bias[0],l.bias[1],l.bias[2],0],l.bias[3]!==void 0&&(c[3]=l.bias[3]));let m=o*n,f=0,h=m,b=m*2,w=-1;u===\"RGBA\"?(f=0,h=m,b=m*2,w=m*3):u===\"RGB\"?(f=0,h=m,b=m*2):u===\"RBG\"&&(f=0,b=m,h=m*2);for(let _=0;_{let r=typeof document<\"u\"?document.createElement(\"canvas\").getContext(\"2d\"):new OffscreenCanvas(1,1).getContext(\"2d\"),a;if(r!=null){let n,o,u;t?.tensorLayout!==void 0&&t.tensorLayout===\"NHWC\"?(n=e.dims[2],o=e.dims[1],u=e.dims[3]):(n=e.dims[3],o=e.dims[2],u=e.dims[1]);let l=t!==void 0&&t.format!==void 0?t.format:\"RGB\",i=t?.norm,c,m;i===void 0||i.mean===void 0?c=[255,255,255,255]:typeof i.mean==\"number\"?c=[i.mean,i.mean,i.mean,i.mean]:(c=[i.mean[0],i.mean[1],i.mean[2],255],i.mean[3]!==void 0&&(c[3]=i.mean[3])),i===void 0||i.bias===void 0?m=[0,0,0,0]:typeof i.bias==\"number\"?m=[i.bias,i.bias,i.bias,i.bias]:(m=[i.bias[0],i.bias[1],i.bias[2],0],i.bias[3]!==void 0&&(m[3]=i.bias[3]));let f=o*n;if(t!==void 0&&(t.format!==void 0&&u===4&&t.format!==\"RGBA\"||u===3&&t.format!==\"RGB\"&&t.format!==\"BGR\"))throw new Error(\"Tensor format doesn't match input tensor dims\");let h=4,b=0,w=1,_=2,I=3,$=0,x=f,T=f*2,A=-1;l===\"RGBA\"?($=0,x=f,T=f*2,A=f*3):l===\"RGB\"?($=0,x=f,T=f*2):l===\"RBG\"&&($=0,T=f,x=f*2),a=r.createImageData(n,o);for(let z=0;z{\"use strict\";Zr();Hn=(e,t)=>{if(e===void 0)throw new Error(\"Image buffer must be defined\");if(t.height===void 0||t.width===void 0)throw new Error(\"Image height and width must be defined\");if(t.tensorLayout===\"NHWC\")throw new Error(\"NHWC Tensor layout is not supported yet\");let{height:r,width:a}=t,n=t.norm??{mean:255,bias:0},o,u;typeof n.mean==\"number\"?o=[n.mean,n.mean,n.mean,n.mean]:o=[n.mean[0],n.mean[1],n.mean[2],n.mean[3]??255],typeof n.bias==\"number\"?u=[n.bias,n.bias,n.bias,n.bias]:u=[n.bias[0],n.bias[1],n.bias[2],n.bias[3]??0];let l=t.format!==void 0?t.format:\"RGBA\",i=t.tensorFormat!==void 0&&t.tensorFormat!==void 0?t.tensorFormat:\"RGB\",c=r*a,m=i===\"RGBA\"?new Float32Array(c*4):new Float32Array(c*3),f=4,h=0,b=1,w=2,_=3,I=0,$=c,x=c*2,T=-1;l===\"RGB\"&&(f=3,h=0,b=1,w=2,_=-1),i===\"RGBA\"?T=c*3:i===\"RBG\"?(I=0,x=c,$=c*2):i===\"BGR\"&&(x=0,$=c,I=c*2);for(let z=0;z{let r=typeof HTMLImageElement<\"u\"&&e instanceof HTMLImageElement,a=typeof ImageData<\"u\"&&e instanceof ImageData,n=typeof ImageBitmap<\"u\"&&e instanceof ImageBitmap,o=typeof e==\"string\",u,l=t??{},i=()=>{if(typeof document<\"u\")return document.createElement(\"canvas\");if(typeof OffscreenCanvas<\"u\")return new OffscreenCanvas(1,1);throw new Error(\"Canvas is not supported\")},c=m=>m instanceof HTMLCanvasElement||m instanceof OffscreenCanvas?m.getContext(\"2d\"):null;if(r){let m=i();m.width=e.width,m.height=e.height;let f=c(m);if(f!=null){let h=e.height,b=e.width;if(t!==void 0&&t.resizedHeight!==void 0&&t.resizedWidth!==void 0&&(h=t.resizedHeight,b=t.resizedWidth),t!==void 0){if(l=t,t.tensorFormat!==void 0)throw new Error(\"Image input config format must be RGBA for HTMLImageElement\");l.tensorFormat=\"RGBA\",l.height=h,l.width=b}else l.tensorFormat=\"RGBA\",l.height=h,l.width=b;f.drawImage(e,0,0),u=f.getImageData(0,0,b,h).data}else throw new Error(\"Can not access image data\")}else if(a){let m,f;if(t!==void 0&&t.resizedWidth!==void 0&&t.resizedHeight!==void 0?(m=t.resizedHeight,f=t.resizedWidth):(m=e.height,f=e.width),t!==void 0&&(l=t),l.format=\"RGBA\",l.height=m,l.width=f,t!==void 0){let h=i();h.width=f,h.height=m;let b=c(h);if(b!=null)b.putImageData(e,0,0),u=b.getImageData(0,0,f,m).data;else throw new Error(\"Can not access image data\")}else u=e.data}else if(n){if(t===void 0)throw new Error(\"Please provide image config with format for Imagebitmap\");let m=i();m.width=e.width,m.height=e.height;let f=c(m);if(f!=null){let h=e.height,b=e.width;return f.drawImage(e,0,0,b,h),u=f.getImageData(0,0,b,h).data,l.height=h,l.width=b,Hn(u,l)}else throw new Error(\"Can not access image data\")}else{if(o)return new Promise((m,f)=>{let h=i(),b=c(h);if(!e||!b)return f();let w=new Image;w.crossOrigin=\"Anonymous\",w.src=e,w.onload=()=>{h.width=w.width,h.height=w.height,b.drawImage(w,0,0,h.width,h.height);let _=b.getImageData(0,0,h.width,h.height);l.height=h.height,l.width=h.width,m(Hn(_.data,l))}});throw new Error(\"Input data provided is not supported - aborted tensor creation\")}if(u!==void 0)return Hn(u,l);throw new Error(\"Input data provided is not supported - aborted tensor creation\")},si=(e,t)=>{let{width:r,height:a,download:n,dispose:o}=t,u=[1,a,r,4];return new Je({location:\"texture\",type:\"float32\",texture:e,dims:u,download:n,dispose:o})},ui=(e,t)=>{let{dataType:r,dims:a,download:n,dispose:o}=t;return new Je({location:\"gpu-buffer\",type:r??\"float32\",gpuBuffer:e,dims:a,download:n,dispose:o})},li=(e,t,r)=>new Je({location:\"cpu-pinned\",type:e,data:t,dims:r??[t.length]})});var vr,Xr,ci,pi,mi=F(()=>{\"use strict\";vr=new Map([[\"float32\",Float32Array],[\"uint8\",Uint8Array],[\"int8\",Int8Array],[\"uint16\",Uint16Array],[\"float16\",Uint16Array],[\"int16\",Int16Array],[\"int32\",Int32Array],[\"bool\",Uint8Array],[\"float64\",Float64Array],[\"uint32\",Uint32Array]]),Xr=new Map([[Float32Array,\"float32\"],[Uint8Array,\"uint8\"],[Int8Array,\"int8\"],[Uint16Array,\"uint16\"],[Int16Array,\"int16\"],[Int32Array,\"int32\"],[Float64Array,\"float64\"],[Uint32Array,\"uint32\"]]),ci=!1,pi=()=>{if(!ci){ci=!0;let e=typeof BigInt64Array<\"u\"&&typeof BigInt64Array.from==\"function\",t=typeof BigUint64Array<\"u\"&&typeof BigUint64Array.from==\"function\";e&&(vr.set(\"int64\",BigInt64Array),Xr.set(BigInt64Array,\"int64\")),t&&(vr.set(\"uint64\",BigUint64Array),Xr.set(BigUint64Array,\"uint64\"))}}});var fi,hi,gi=F(()=>{\"use strict\";Zr();fi=e=>{let t=1;for(let r=0;r{switch(e.location){case\"cpu\":return new Je(e.type,e.data,t);case\"cpu-pinned\":return new Je({location:\"cpu-pinned\",data:e.data,type:e.type,dims:t});case\"texture\":return new Je({location:\"texture\",texture:e.texture,type:e.type,dims:t});case\"gpu-buffer\":return new Je({location:\"gpu-buffer\",gpuBuffer:e.gpuBuffer,type:e.type,dims:t});default:throw new Error(`tensorReshape: tensor location ${e.location} is not supported`)}}});var Je,Zr=F(()=>{\"use strict\";ii();di();mi();gi();Je=class{constructor(t,r,a){pi();let n,o;if(typeof t==\"object\"&&\"location\"in t)switch(this.dataLocation=t.location,n=t.type,o=t.dims,t.location){case\"cpu-pinned\":{let l=vr.get(n);if(!l)throw new TypeError(`unsupported type \"${n}\" to create tensor from pinned buffer`);if(!(t.data instanceof l))throw new TypeError(`buffer should be of type ${l.name}`);this.cpuData=t.data;break}case\"texture\":{if(n!==\"float32\")throw new TypeError(`unsupported type \"${n}\" to create tensor from texture`);this.gpuTextureData=t.texture,this.downloader=t.download,this.disposer=t.dispose;break}case\"gpu-buffer\":{if(n!==\"float32\"&&n!==\"float16\"&&n!==\"int32\"&&n!==\"int64\"&&n!==\"uint32\"&&n!==\"bool\")throw new TypeError(`unsupported type \"${n}\" to create tensor from gpu buffer`);this.gpuBufferData=t.gpuBuffer,this.downloader=t.download,this.disposer=t.dispose;break}default:throw new Error(`Tensor constructor: unsupported location '${this.dataLocation}'`)}else{let l,i;if(typeof t==\"string\")if(n=t,i=a,t===\"string\"){if(!Array.isArray(r))throw new TypeError(\"A string tensor's data must be a string array.\");l=r}else{let c=vr.get(t);if(c===void 0)throw new TypeError(`Unsupported tensor type: ${t}.`);if(Array.isArray(r)){if(t===\"float16\")throw new TypeError(\"Creating a float16 tensor from number array is not supported. Please use Uint16Array as data.\");t===\"uint64\"||t===\"int64\"?l=c.from(r,BigInt):l=c.from(r)}else if(r instanceof c)l=r;else throw new TypeError(`A ${n} tensor's data must be type of ${c}`)}else if(i=r,Array.isArray(t)){if(t.length===0)throw new TypeError(\"Tensor type cannot be inferred from an empty array.\");let c=typeof t[0];if(c===\"string\")n=\"string\",l=t;else if(c===\"boolean\")n=\"bool\",l=Uint8Array.from(t);else throw new TypeError(`Invalid element type of data array: ${c}.`)}else{let c=Xr.get(t.constructor);if(c===void 0)throw new TypeError(`Unsupported type for tensor data: ${t.constructor}.`);n=c,l=t}if(i===void 0)i=[l.length];else if(!Array.isArray(i))throw new TypeError(\"A tensor's dims must be a number array\");o=i,this.cpuData=l,this.dataLocation=\"cpu\"}let u=fi(o);if(this.cpuData&&u!==this.cpuData.length)throw new Error(`Tensor's size(${u}) does not match data length(${this.cpuData.length}).`);this.type=n,this.dims=o,this.size=u}static async fromImage(t,r){return oi(t,r)}static fromTexture(t,r){return si(t,r)}static fromGpuBuffer(t,r){return ui(t,r)}static fromPinnedBuffer(t,r,a){return li(t,r,a)}toDataURL(t){return ni(this,t)}toImageData(t){return ai(this,t)}get data(){if(this.ensureValid(),!this.cpuData)throw new Error(\"The data is not on CPU. Use `getData()` to download GPU data to CPU, or use `texture` or `gpuBuffer` property to access the GPU data directly.\");return this.cpuData}get location(){return this.dataLocation}get texture(){if(this.ensureValid(),!this.gpuTextureData)throw new Error(\"The data is not stored as a WebGL texture.\");return this.gpuTextureData}get gpuBuffer(){if(this.ensureValid(),!this.gpuBufferData)throw new Error(\"The data is not stored as a WebGPU buffer.\");return this.gpuBufferData}async getData(t){switch(this.ensureValid(),this.dataLocation){case\"cpu\":case\"cpu-pinned\":return this.data;case\"texture\":case\"gpu-buffer\":{if(!this.downloader)throw new Error(\"The current tensor is not created with a specified data downloader.\");if(this.isDownloading)throw new Error(\"The current tensor is being downloaded.\");try{this.isDownloading=!0;let r=await this.downloader();return this.downloader=void 0,this.dataLocation=\"cpu\",this.cpuData=r,t&&this.disposer&&(this.disposer(),this.disposer=void 0),r}finally{this.isDownloading=!1}}default:throw new Error(`cannot get data from location: ${this.dataLocation}`)}}dispose(){if(this.isDownloading)throw new Error(\"The current tensor is being downloaded.\");this.disposer&&(this.disposer(),this.disposer=void 0),this.cpuData=void 0,this.gpuTextureData=void 0,this.gpuBufferData=void 0,this.downloader=void 0,this.isDownloading=void 0,this.dataLocation=\"none\"}ensureValid(){if(this.dataLocation===\"none\")throw new Error(\"The tensor is disposed.\")}reshape(t){if(this.ensureValid(),this.downloader||this.disposer)throw new Error(\"Cannot reshape a tensor that owns GPU resource.\");return hi(this,t)}}});var Xe,Qr=F(()=>{\"use strict\";Zr();Xe=Je});var Jr,yi,at,it,Ln=F(()=>{\"use strict\";Vn();Jr=(e,t)=>{Wt.wasm.trace&&console.timeStamp(`${e}::ORT::${t}`)},yi=(e,t)=>{let r=new Error().stack?.split(/\\r\\n|\\r|\\n/g)||[],a=!1;for(let n=0;n{Wt.wasm.trace&&yi(\"BEGIN\",e)},it=e=>{Wt.wasm.trace&&yi(\"END\",e)}});var en,bi=F(()=>{\"use strict\";Yr();Qr();Ln();en=class e{constructor(t){this.handler=t}async run(t,r,a){at();let n={},o={};if(typeof t!=\"object\"||t===null||t instanceof Xe||Array.isArray(t))throw new TypeError(\"'feeds' must be an object that use input names as keys and OnnxValue as corresponding values.\");let u=!0;if(typeof r==\"object\"){if(r===null)throw new TypeError(\"Unexpected argument[1]: cannot be null.\");if(r instanceof Xe)throw new TypeError(\"'fetches' cannot be a Tensor\");if(Array.isArray(r)){if(r.length===0)throw new TypeError(\"'fetches' cannot be an empty array.\");u=!1;for(let c of r){if(typeof c!=\"string\")throw new TypeError(\"'fetches' must be a string array or an object.\");if(this.outputNames.indexOf(c)===-1)throw new RangeError(`'fetches' contains invalid output name: ${c}.`);n[c]=null}if(typeof a==\"object\"&&a!==null)o=a;else if(typeof a<\"u\")throw new TypeError(\"'options' must be an object.\")}else{let c=!1,m=Object.getOwnPropertyNames(r);for(let f of this.outputNames)if(m.indexOf(f)!==-1){let h=r[f];(h===null||h instanceof Xe)&&(c=!0,u=!1,n[f]=h)}if(c){if(typeof a==\"object\"&&a!==null)o=a;else if(typeof a<\"u\")throw new TypeError(\"'options' must be an object.\")}else o=r}}else if(typeof r<\"u\")throw new TypeError(\"Unexpected argument[1]: must be 'fetches' or 'options'.\");for(let c of this.inputNames)if(typeof t[c]>\"u\")throw new Error(`input '${c}' is missing in 'feeds'.`);if(u)for(let c of this.outputNames)n[c]=null;let l=await this.handler.run(t,n,o),i={};for(let c in l)if(Object.hasOwnProperty.call(l,c)){let m=l[c];m instanceof Xe?i[c]=m:i[c]=new Xe(m.type,m.data,m.dims)}return it(),i}async release(){return this.handler.dispose()}static async create(t,r,a,n){at();let o,u={};if(typeof t==\"string\"){if(o=t,typeof r==\"object\"&&r!==null)u=r;else if(typeof r<\"u\")throw new TypeError(\"'options' must be an object.\")}else if(t instanceof Uint8Array){if(o=t,typeof r==\"object\"&&r!==null)u=r;else if(typeof r<\"u\")throw new TypeError(\"'options' must be an object.\")}else if(t instanceof ArrayBuffer||typeof SharedArrayBuffer<\"u\"&&t instanceof SharedArrayBuffer){let f=t,h=0,b=t.byteLength;if(typeof r==\"object\"&&r!==null)u=r;else if(typeof r==\"number\"){if(h=r,!Number.isSafeInteger(h))throw new RangeError(\"'byteOffset' must be an integer.\");if(h<0||h>=f.byteLength)throw new RangeError(`'byteOffset' is out of range [0, ${f.byteLength}).`);if(b=t.byteLength-h,typeof a==\"number\"){if(b=a,!Number.isSafeInteger(b))throw new RangeError(\"'byteLength' must be an integer.\");if(b<=0||h+b>f.byteLength)throw new RangeError(`'byteLength' is out of range (0, ${f.byteLength-h}].`);if(typeof n==\"object\"&&n!==null)u=n;else if(typeof n<\"u\")throw new TypeError(\"'options' must be an object.\")}else if(typeof a<\"u\")throw new TypeError(\"'byteLength' must be a number.\")}else if(typeof r<\"u\")throw new TypeError(\"'options' must be an object.\");o=new Uint8Array(f,h,b)}else throw new TypeError(\"Unexpected argument[0]: must be 'path' or 'buffer'.\");let i=(u.executionProviders||[]).map(f=>typeof f==\"string\"?f:f.name),m=await(await Kr(i)).createInferenceSessionHandler(o,u);return it(),new e(m)}startProfiling(){this.handler.startProfiling()}endProfiling(){this.handler.endProfiling()}get inputNames(){return this.handler.inputNames}get outputNames(){return this.handler.outputNames}}});var Kl,wi=F(()=>{\"use strict\";bi();Kl=en});var vi=F(()=>{\"use strict\"});var Yl,tn,$i=F(()=>{\"use strict\";Yr();Qr();Yl=\"Training backend could not be resolved. Make sure you're using the correct configuration & WebAssembly files.\",tn=class e{constructor(t,r,a){this.handler=t,this.hasOptimizerModel=r,this.hasEvalModel=a}get trainingInputNames(){return this.handler.inputNames}get trainingOutputNames(){return this.handler.outputNames}get evalInputNames(){if(this.hasEvalModel)return this.handler.evalInputNames;throw new Error(\"This training session has no evalModel loaded.\")}get evalOutputNames(){if(this.hasEvalModel)return this.handler.evalOutputNames;throw new Error(\"This training session has no evalModel loaded.\")}static async create(t,r){let a=t.evalModel||\"\",n=t.optimizerModel||\"\",o=r||{},l=(o.executionProviders||[]).map(c=>typeof c==\"string\"?c:c.name),i=await Kr(l);if(i.createTrainingSessionHandler){let c=await i.createTrainingSessionHandler(t.checkpointState,t.trainModel,a,n,o);return new e(c,!!t.optimizerModel,!!t.evalModel)}else throw new Error(Yl)}typeNarrowingForRunStep(t,r,a,n,o){let u={},l={};if(typeof a!=\"object\"||a===null||a instanceof Xe||Array.isArray(a))throw new TypeError(\"'feeds' must be an object that use input names as keys and OnnxValue as corresponding values.\");let i=!0;if(typeof n==\"object\"){if(n===null)throw new TypeError(\"Unexpected argument[1]: cannot be null.\");if(n instanceof Xe)throw new TypeError(\"'fetches' cannot be a Tensor\");if(Array.isArray(n)){if(n.length===0)throw new TypeError(\"'fetches' cannot be an empty array.\");i=!1;for(let c of n){if(typeof c!=\"string\")throw new TypeError(\"'fetches' must be a string array or an object.\");if(r.indexOf(c)===-1)throw new RangeError(`'fetches' contains invalid output name: ${c}.`);u[c]=null}if(typeof o==\"object\"&&o!==null)l=o;else if(typeof o<\"u\")throw new TypeError(\"'options' must be an object.\")}else{let c=!1,m=Object.getOwnPropertyNames(n);for(let f of r)if(m.indexOf(f)!==-1){let h=n[f];(h===null||h instanceof Xe)&&(c=!0,i=!1,u[f]=h)}if(c){if(typeof o==\"object\"&&o!==null)l=o;else if(typeof o<\"u\")throw new TypeError(\"'options' must be an object.\")}else l=n}}else if(typeof n<\"u\")throw new TypeError(\"Unexpected argument[1]: must be 'fetches' or 'options'.\");for(let c of t)if(typeof a[c]>\"u\")throw new Error(`input '${c}' is missing in 'feeds'.`);if(i)for(let c of r)u[c]=null;return[u,l]}convertHandlerReturnTypeToMapOfTensors(t){let r={};for(let a in t)if(Object.hasOwnProperty.call(t,a)){let n=t[a];n instanceof Xe?r[a]=n:r[a]=new Xe(n.type,n.data,n.dims)}return r}async lazyResetGrad(){await this.handler.lazyResetGrad()}async runTrainStep(t,r,a){let[n,o]=this.typeNarrowingForRunStep(this.trainingInputNames,this.trainingOutputNames,t,r,a),u=await this.handler.runTrainStep(t,n,o);return this.convertHandlerReturnTypeToMapOfTensors(u)}async runOptimizerStep(t){if(this.hasOptimizerModel)await this.handler.runOptimizerStep(t||{});else throw new Error(\"This TrainingSession has no OptimizerModel loaded.\")}async runEvalStep(t,r,a){if(this.hasEvalModel){let[n,o]=this.typeNarrowingForRunStep(this.evalInputNames,this.evalOutputNames,t,r,a),u=await this.handler.runEvalStep(t,n,o);return this.convertHandlerReturnTypeToMapOfTensors(u)}else throw new Error(\"This TrainingSession has no EvalModel loaded.\")}async getParametersSize(t=!0){return this.handler.getParametersSize(t)}async loadParametersBuffer(t,r=!0){let a=await this.getParametersSize(r);if(t.length!==4*a)throw new Error(\"Size of the buffer passed into loadParametersBuffer must match the number of parameters in the model. Please use getParametersSize method to check.\");return this.handler.loadParametersBuffer(t,r)}async getContiguousParameters(t=!0){return this.handler.getContiguousParameters(t)}async release(){return this.handler.dispose()}}});var Zl,_i=F(()=>{\"use strict\";$i();Zl=tn});var Gn={};Xt(Gn,{InferenceSession:()=>Kl,TRACE:()=>Jr,TRACE_FUNC_BEGIN:()=>at,TRACE_FUNC_END:()=>it,Tensor:()=>Xe,TrainingSession:()=>Zl,env:()=>Se,registerBackend:()=>Qt});var st=F(()=>{\"use strict\";Qa();ri();wi();Qr();Ln();vi();_i()});var Fn={};Xt(Fn,{createReadStream:()=>Si,readFile:()=>Xl,readFileSync:()=>Ql});var Xl,Ql,Si,qn=F(()=>{Xl=void 0,Ql=void 0,Si=void 0});var jn={};Xt(jn,{join:()=>Jl});var Jl,Kn=F(()=>{Jl=void 0});var Ai=Zt((Ci,Yn)=>{\"use strict\";var Ii=(()=>{var e=typeof document<\"u\"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<\"u\"&&(e=e||__filename),function(t={}){var r=t,a,n;r.ready=new Promise((d,g)=>{a=d,n=g}),r.mountExternalData=(d,g)=>{(r.Fa||(r.Fa=new Map)).set(d,g)},r.unmountExternalData=()=>{delete r.Fa},r.jsepInit=(d,g,v,C,B,H,j,de)=>{r.ab=d,r.Qa=g,r.Sa=v,r.La=C,r.Ra=B,r.sa=H,r.Ta=j,r.Ua=de,g=(J,re,se)=>(...we)=>{let Ie=ot,k=re?.();we=J(...we);let ue=re?.();return k!==ue&&(J=ue,se(k),re=se=null),ot!=Ie?zr():we},v=J=>async(...re)=>{try{if(r.Ea)throw Error(\"Session already started\");let se=r.Ea={Va:re[0],errors:[]},we=await J(...re);if(r.Ea!==se)throw Error(\"Session mismatch\");d.flush();let Ie=se.errors;if(0ue),0r._OrtRun,J=>r._OrtRun=J)),r._OrtRunWithBinding=v(g(r._OrtRunWithBinding,()=>r._OrtRunWithBinding,J=>r._OrtRunWithBinding=J)),r._OrtBindInput=g(r._OrtBindInput,()=>r._OrtBindInput,J=>r._OrtBindInput=J),r.jsepRegisterBuffer=(J,re,se,we)=>d.registerBuffer(J,re,se,we),r.jsepUnregisterBuffers=J=>{d.unregisterBuffers(J)},r.jsepGetBuffer=J=>d.getBuffer(J),r.jsepCreateDownloader=(J,re,se)=>d.createDownloader(J,re,se)};var o=Object.assign({},r),u=\"./this.program\",l=(d,g)=>{throw g},i=typeof window==\"object\",c=typeof importScripts==\"function\",m=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\",f=\"\",h,b,w;if(m){var _=(qn(),Ut(Fn)),I=(Kn(),Ut(jn));f=c?I.dirname(f)+\"/\":__dirname+\"/\",h=(d,g)=>(d=He(d)?new URL(d):I.normalize(d),_.readFileSync(d,g?void 0:\"utf8\")),w=d=>(d=h(d,!0),d.buffer||(d=new Uint8Array(d)),d),b=(d,g,v,C=!0)=>{d=He(d)?new URL(d):I.normalize(d),_.readFile(d,C?void 0:\"utf8\",(B,H)=>{B?v(B):g(C?H.buffer:H)})},!r.thisProgram&&1{throw process.exitCode=d,g},r.inspect=()=>\"[Emscripten Module object]\"}else(i||c)&&(c?f=self.location.href:typeof document<\"u\"&&document.currentScript&&(f=document.currentScript.src),e&&(f=e),f.indexOf(\"blob:\")!==0?f=f.substr(0,f.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1):f=\"\",h=d=>{var g=new XMLHttpRequest;return g.open(\"GET\",d,!1),g.send(null),g.responseText},c&&(w=d=>{var g=new XMLHttpRequest;return g.open(\"GET\",d,!1),g.responseType=\"arraybuffer\",g.send(null),new Uint8Array(g.response)}),b=(d,g,v)=>{var C=new XMLHttpRequest;C.open(\"GET\",d,!0),C.responseType=\"arraybuffer\",C.onload=()=>{C.status==200||C.status==0&&C.response?g(C.response):v()},C.onerror=v,C.send(null)});var $=console.log.bind(console),x=console.error.bind(console);Object.assign(r,o),o=null,typeof WebAssembly!=\"object\"&&he(\"no native wasm support detected\");var T,A=!1,z,R,N,E,W,te,Y;function K(){var d=T.buffer;r.HEAP8=R=new Int8Array(d),r.HEAP16=new Int16Array(d),r.HEAPU8=N=new Uint8Array(d),r.HEAPU16=new Uint16Array(d),r.HEAP32=E=new Int32Array(d),r.HEAPU32=W=new Uint32Array(d),r.HEAPF32=te=new Float32Array(d),r.HEAPF64=Y=new Float64Array(d)}var X=[],Z=[],Oe=[],Pe=0,fe=null,Ae=null;function he(d){throw d=\"Aborted(\"+d+\")\",x(d),A=!0,z=1,d=new WebAssembly.RuntimeError(d+\". Build with -sASSERTIONS for more info.\"),n(d),d}var ye=d=>d.startsWith(\"data:application/octet-stream;base64,\"),He=d=>d.startsWith(\"file://\"),ze;if(ze=\"ort-wasm-simd.wasm\",!ye(ze)){var Ge=ze;ze=r.locateFile?r.locateFile(Ge,f):f+Ge}function L(d){if(w)return w(d);throw\"both async and sync fetching of the wasm failed\"}function ee(d){if(i||c){if(typeof fetch==\"function\"&&!He(d))return fetch(d,{credentials:\"same-origin\"}).then(g=>{if(!g.ok)throw\"failed to load wasm binary file at '\"+d+\"'\";return g.arrayBuffer()}).catch(()=>L(d));if(b)return new Promise((g,v)=>{b(d,C=>g(new Uint8Array(C)),v)})}return Promise.resolve().then(()=>L(d))}function be(d,g,v){return ee(d).then(C=>WebAssembly.instantiate(C,g)).then(C=>C).then(v,C=>{x(`failed to asynchronously prepare wasm: ${C}`),he(C)})}function nt(d,g){var v=ze;return typeof WebAssembly.instantiateStreaming!=\"function\"||ye(v)||He(v)||m||typeof fetch!=\"function\"?be(v,d,g):fetch(v,{credentials:\"same-origin\"}).then(C=>WebAssembly.instantiateStreaming(C,d).then(g,function(B){return x(`wasm streaming compile failed: ${B}`),x(\"falling back to ArrayBuffer instantiation\"),be(v,d,g)}))}var Ne,We={931056:(d,g,v,C)=>{if(typeof r>\"u\"||!r.Fa)return 1;if(d=Ke(d>>>0),d.startsWith(\"./\")&&(d=d.substring(2)),d=r.Fa.get(d),!d)return 2;if(g>>>=0,v>>>=0,g+v>d.byteLength)return 3;try{return N.set(d.subarray(g,g+v),C>>>0>>>0),0}catch{return 4}},931557:d=>r.Qa(d),931590:d=>r.Sa(d),931622:(d,g,v)=>{r.La(d,g,v,!0)},931661:(d,g,v)=>{r.La(d,g,v)},931694:d=>{r.sa(\"Abs\",d,void 0)},931745:d=>{r.sa(\"Neg\",d,void 0)},931796:d=>{r.sa(\"Floor\",d,void 0)},931849:d=>{r.sa(\"Ceil\",d,void 0)},931901:d=>{r.sa(\"Reciprocal\",d,void 0)},931959:d=>{r.sa(\"Sqrt\",d,void 0)},932011:d=>{r.sa(\"Exp\",d,void 0)},932062:d=>{r.sa(\"Erf\",d,void 0)},932113:d=>{r.sa(\"Sigmoid\",d,void 0)},932168:d=>{r.sa(\"Log\",d,void 0)},932219:d=>{r.sa(\"Sin\",d,void 0)},932270:d=>{r.sa(\"Cos\",d,void 0)},932321:d=>{r.sa(\"Tan\",d,void 0)},932372:d=>{r.sa(\"Asin\",d,void 0)},932424:d=>{r.sa(\"Acos\",d,void 0)},932476:d=>{r.sa(\"Atan\",d,void 0)},932528:d=>{r.sa(\"Sinh\",d,void 0)},932580:d=>{r.sa(\"Cosh\",d,void 0)},932632:d=>{r.sa(\"Asinh\",d,void 0)},932685:d=>{r.sa(\"Acosh\",d,void 0)},932738:d=>{r.sa(\"Atanh\",d,void 0)},932791:d=>{r.sa(\"Tanh\",d,void 0)},932843:d=>{r.sa(\"Not\",d,void 0)},932894:(d,g,v)=>{r.sa(\"Clip\",d,{min:g,max:v})},932963:d=>{r.sa(\"Clip\",d,void 0)},933015:(d,g)=>{r.sa(\"Elu\",d,{alpha:g})},933073:d=>{r.sa(\"Relu\",d,void 0)},933125:(d,g)=>{r.sa(\"LeakyRelu\",d,{alpha:g})},933189:(d,g)=>{r.sa(\"ThresholdedRelu\",d,{alpha:g})},933259:(d,g)=>{r.sa(\"Cast\",d,{to:g})},933317:d=>{r.sa(\"Add\",d,void 0)},933368:d=>{r.sa(\"Sub\",d,void 0)},933419:d=>{r.sa(\"Mul\",d,void 0)},933470:d=>{r.sa(\"Div\",d,void 0)},933521:d=>{r.sa(\"Pow\",d,void 0)},933572:d=>{r.sa(\"Equal\",d,void 0)},933625:d=>{r.sa(\"Greater\",d,void 0)},933680:d=>{r.sa(\"GreaterOrEqual\",d,void 0)},933742:d=>{r.sa(\"Less\",d,void 0)},933794:d=>{r.sa(\"LessOrEqual\",d,void 0)},933853:(d,g,v,C,B)=>{r.sa(\"ReduceMean\",d,{keepDims:!!g,noopWithEmptyAxes:!!v,axes:C?Array.from(E.subarray(C>>>0,B>>>0)):[]})},934012:(d,g,v,C,B)=>{r.sa(\"ReduceMax\",d,{keepDims:!!g,noopWithEmptyAxes:!!v,axes:C?Array.from(E.subarray(C>>>0,B>>>0)):[]})},934170:(d,g,v,C,B)=>{r.sa(\"ReduceMin\",d,{keepDims:!!g,noopWithEmptyAxes:!!v,axes:C?Array.from(E.subarray(C>>>0,B>>>0)):[]})},934328:(d,g,v,C,B)=>{r.sa(\"ReduceProd\",d,{keepDims:!!g,noopWithEmptyAxes:!!v,axes:C?Array.from(E.subarray(C>>>0,B>>>0)):[]})},934487:(d,g,v,C,B)=>{r.sa(\"ReduceSum\",d,{keepDims:!!g,noopWithEmptyAxes:!!v,axes:C?Array.from(E.subarray(C>>>0,B>>>0)):[]})},934645:(d,g,v,C,B)=>{r.sa(\"ReduceL1\",d,{keepDims:!!g,noopWithEmptyAxes:!!v,axes:C?Array.from(E.subarray(C>>>0,B>>>0)):[]})},934802:(d,g,v,C,B)=>{r.sa(\"ReduceL2\",d,{keepDims:!!g,noopWithEmptyAxes:!!v,axes:C?Array.from(E.subarray(C>>>0,B>>>0)):[]})},934959:(d,g,v,C,B)=>{r.sa(\"ReduceLogSum\",d,{keepDims:!!g,noopWithEmptyAxes:!!v,axes:C?Array.from(E.subarray(C>>>0,B>>>0)):[]})},935120:(d,g,v,C,B)=>{r.sa(\"ReduceSumSquare\",d,{keepDims:!!g,noopWithEmptyAxes:!!v,axes:C?Array.from(E.subarray(C>>>0,B>>>0)):[]})},935284:(d,g,v,C,B)=>{r.sa(\"ReduceLogSumExp\",d,{keepDims:!!g,noopWithEmptyAxes:!!v,axes:C?Array.from(E.subarray(C>>>0,B>>>0)):[]})},935448:d=>{r.sa(\"Where\",d,void 0)},935501:(d,g,v)=>{r.sa(\"Transpose\",d,{perm:g?Array.from(E.subarray(g>>>0,v>>>0)):[]})},935609:(d,g,v,C,B,H,j,de,J,re,se,we,Ie,k,ue)=>{r.sa(\"ConvTranspose\",d,{format:J?\"NHWC\":\"NCHW\",autoPad:g,dilations:[v],group:C,kernel_shape:[B],pads:[H,j],strides:[de],wIsConst:()=>!!R[re>>>0],outputPadding:se?Array.from(E.subarray(se>>>0,we>>>0)):[],outputShape:Ie?Array.from(E.subarray(Ie>>>0,k>>>0)):[],activation:Ke(ue)})},936011:(d,g,v,C,B,H,j,de,J,re,se,we,Ie,k)=>{r.sa(\"ConvTranspose\",d,{format:de?\"NHWC\":\"NCHW\",autoPad:g,dilations:Array.from(E.subarray(v>>>0,(v>>>0)+2>>>0)),group:C,kernelShape:Array.from(E.subarray(B>>>0,(B>>>0)+2>>>0)),pads:Array.from(E.subarray(H>>>0,(H>>>0)+4>>>0)),strides:Array.from(E.subarray(j>>>0,(j>>>0)+2>>>0)),wIsConst:()=>!!R[J>>>0],outputPadding:re?Array.from(E.subarray(re>>>0,se>>>0)):[],outputShape:we?Array.from(E.subarray(we>>>0,Ie>>>0)):[],activation:Ke(k)})},936576:(d,g,v,C,B,H,j,de,J,re,se,we,Ie,k,ue)=>{r.sa(\"ConvTranspose\",d,{format:J?\"NHWC\":\"NCHW\",autoPad:g,dilations:[v],group:C,kernel_shape:[B],pads:[H,j],strides:[de],wIsConst:()=>!!R[re>>>0],outputPadding:se?Array.from(E.subarray(se>>>0,we>>>0)):[],outputShape:Ie?Array.from(E.subarray(Ie>>>0,k>>>0)):[],activation:Ke(ue)})},936978:(d,g,v,C,B,H,j,de,J,re,se,we,Ie,k)=>{r.sa(\"ConvTranspose\",d,{format:de?\"NHWC\":\"NCHW\",autoPad:g,dilations:Array.from(E.subarray(v>>>0,(v>>>0)+2>>>0)),group:C,kernelShape:Array.from(E.subarray(B>>>0,(B>>>0)+2>>>0)),pads:Array.from(E.subarray(H>>>0,(H>>>0)+4>>>0)),strides:Array.from(E.subarray(j>>>0,(j>>>0)+2>>>0)),wIsConst:()=>!!R[J>>>0],outputPadding:re?Array.from(E.subarray(re>>>0,se>>>0)):[],outputShape:we?Array.from(E.subarray(we>>>0,Ie>>>0)):[],activation:Ke(k)})},937543:(d,g)=>{r.sa(\"GlobalAveragePool\",d,{format:g?\"NHWC\":\"NCHW\"})},937634:(d,g,v,C,B,H,j,de,J,re,se,we,Ie,k,ue,_e)=>{r.sa(\"AveragePool\",d,{format:_e?\"NHWC\":\"NCHW\",auto_pad:g,ceil_mode:v,count_include_pad:C,storage_order:B,dilations:[H,j],kernel_shape:[de,J],pads:[re,se,we,Ie],strides:[k,ue]})},937918:(d,g)=>{r.sa(\"GlobalAveragePool\",d,{format:g?\"NHWC\":\"NCHW\"})},938009:(d,g,v,C,B,H,j,de,J,re,se,we,Ie,k,ue,_e)=>{r.sa(\"AveragePool\",d,{format:_e?\"NHWC\":\"NCHW\",auto_pad:g,ceil_mode:v,count_include_pad:C,storage_order:B,dilations:[H,j],kernel_shape:[de,J],pads:[re,se,we,Ie],strides:[k,ue]})},938293:(d,g)=>{r.sa(\"GlobalMaxPool\",d,{format:g?\"NHWC\":\"NCHW\"})},938380:(d,g,v,C,B,H,j,de,J,re,se,we,Ie,k,ue,_e)=>{r.sa(\"MaxPool\",d,{format:_e?\"NHWC\":\"NCHW\",auto_pad:g,ceil_mode:v,count_include_pad:C,storage_order:B,dilations:[H,j],kernel_shape:[de,J],pads:[re,se,we,Ie],strides:[k,ue]})},938660:(d,g)=>{r.sa(\"GlobalMaxPool\",d,{format:g?\"NHWC\":\"NCHW\"})},938747:(d,g,v,C,B,H,j,de,J,re,se,we,Ie,k,ue,_e)=>{r.sa(\"MaxPool\",d,{format:_e?\"NHWC\":\"NCHW\",auto_pad:g,ceil_mode:v,count_include_pad:C,storage_order:B,dilations:[H,j],kernel_shape:[de,J],pads:[re,se,we,Ie],strides:[k,ue]})},939027:(d,g,v,C,B)=>{r.sa(\"Gemm\",d,{alpha:g,beta:v,transA:C,transB:B})},939131:d=>{r.sa(\"MatMul\",d,void 0)},939185:(d,g,v,C)=>{r.sa(\"ArgMax\",d,{keepDims:!!g,selectLastIndex:!!v,axis:C})},939293:(d,g,v,C)=>{r.sa(\"ArgMin\",d,{keepDims:!!g,selectLastIndex:!!v,axis:C})},939401:(d,g)=>{r.sa(\"Softmax\",d,{axis:g})},939464:(d,g)=>{r.sa(\"Concat\",d,{axis:g})},939524:(d,g,v,C,B)=>{r.sa(\"Split\",d,{axis:g,numOutputs:v,splitSizes:C?Array.from(E.subarray(C>>>0,B>>>0)):[]})},939664:d=>{r.sa(\"Expand\",d,void 0)},939718:(d,g)=>{r.sa(\"Gather\",d,{axis:Number(g)})},939789:(d,g)=>{r.sa(\"GatherElements\",d,{axis:Number(g)})},939868:(d,g,v,C,B,H,j,de,J,re,se)=>{r.sa(\"Resize\",d,{antialias:g,axes:v?Array.from(E.subarray(v>>>0,C>>>0)):[],coordinateTransformMode:Ke(B),cubicCoeffA:H,excludeOutside:j,extrapolationValue:de,keepAspectRatioPolicy:Ke(J),mode:Ke(re),nearestMode:Ke(se)})},940214:(d,g,v,C,B,H,j)=>{r.sa(\"Slice\",d,{starts:g?Array.from(E.subarray(g>>>0,v>>>0)):[],ends:C?Array.from(E.subarray(C>>>0,B>>>0)):[],axes:H?Array.from(E.subarray(H>>>0,j>>>0)):[]})},940430:d=>{r.sa(\"Tile\",d,void 0)},940482:(d,g,v)=>{r.sa(\"LayerNormalization\",d,{axis:Number(g),epsilon:Number(v)})},940589:(d,g,v)=>{r.sa(\"InstanceNormalization\",d,{epsilon:g,format:v?\"NHWC\":\"NCHW\"})},940703:(d,g,v)=>{r.sa(\"InstanceNormalization\",d,{epsilon:g,format:v?\"NHWC\":\"NCHW\"})},940817:d=>{r.sa(\"Range\",d,void 0)},940870:(d,g)=>{r.sa(\"Einsum\",d,{equation:Ke(g)})},940951:(d,g,v,C,B)=>{r.sa(\"Pad\",d,{mode:g,value:v,pads:C?Array.from(E.subarray(C>>>0,B>>>0)):[]})},941078:(d,g,v,C,B,H)=>{r.sa(\"BatchNormalization\",d,{epsilon:g,momentum:v,spatial:!!B,trainingMode:!!C,format:H?\"NHWC\":\"NCHW\"})},941247:(d,g,v,C,B,H)=>{r.sa(\"BatchNormalization\",d,{epsilon:g,momentum:v,spatial:!!B,trainingMode:!!C,format:H?\"NHWC\":\"NCHW\"})},941416:(d,g,v)=>{r.sa(\"CumSum\",d,{exclusive:Number(g),reverse:Number(v)})},941513:(d,g,v,C,B,H,j,de,J)=>{r.sa(\"Attention\",d,{numHeads:g,isUnidirectional:v,maskFilterValue:C,scale:B,doRotary:H,qkvHiddenSizes:j?Array.from(E.subarray(Number(de)>>>0,Number(de)+j>>>0)):[],pastPresentShareBuffer:!!J})},941785:d=>{r.sa(\"Gelu\",d,void 0)},941837:(d,g,v,C,B,H)=>{r.sa(\"MultiHeadAttention\",d,{numHeads:g,isUnidirectional:v,maskFilterValue:C,scale:B,doRotary:H})},941996:d=>{r.sa(\"BiasAdd\",d,void 0)},942051:d=>{r.sa(\"BiasSplitGelu\",d,void 0)},942112:(d,g)=>{r.sa(\"SkipLayerNormalization\",d,{epsilon:g})},942193:(d,g,v,C,B,H,j,de,J,re,se,we,Ie)=>{r.sa(\"Conv\",d,{format:J?\"NHWC\":\"NCHW\",auto_pad:g,dilations:[v],group:C,kernel_shape:[B],pads:H?Array.from(E.subarray(H>>>0,j>>>0)):[],strides:[de],w_is_const:()=>!!R[re>>>0],activation:Ke(se),activation_params:we?Array.from(te.subarray(we>>>0,Ie>>>0)):[]})},942563:(d,g,v,C,B,H,j,de,J,re,se,we,Ie,k,ue,_e)=>{r.sa(\"Conv\",d,{format:we?\"NHWC\":\"NCHW\",auto_pad:g,dilations:[v,C],group:B,kernel_shape:[H,j],pads:de?Array.from(E.subarray(de>>>0,J>>>0)):[],strides:[re,se],w_is_const:()=>!!R[Ie>>>0],activation:Ke(k),activation_params:ue?Array.from(te.subarray(ue>>>0,_e>>>0)):[]})},942954:d=>{r.Ta(d)},942988:(d,g)=>r.Ua(d,g,r.Ea.Va,r.Ea.errors)};function Me(d){this.name=\"ExitStatus\",this.message=`Program terminated with exit(${d})`,this.status=d}function Ct(d){this.Ja=d-24,this.Oa=function(g){W[this.Ja+4>>>2>>>0]=g},this.Na=function(g){W[this.Ja+8>>>2>>>0]=g},this.$a=function(g,v){this.Ma(),this.Oa(g),this.Na(v)},this.Ma=function(){W[this.Ja+16>>>2>>>0]=0}}var lt=0,Lt=0,Bt=typeof TextDecoder<\"u\"?new TextDecoder(\"utf8\"):void 0,At=(d,g,v)=>{g>>>=0;var C=g+v;for(v=g;d[v]&&!(v>=C);)++v;if(16B?C+=String.fromCharCode(B):(B-=65536,C+=String.fromCharCode(55296|B>>10,56320|B&1023))}}else C+=String.fromCharCode(B)}return C},Ke=(d,g)=>(d>>>=0)?At(N,d,g):\"\",ar=d=>{for(var g=0,v=0;v=C?g++:2047>=C?g+=2:55296<=C&&57343>=C?(g+=4,++v):g+=3}return g},Gt=(d,g,v,C)=>{if(v>>>=0,!(0=j){var de=d.charCodeAt(++H);j=65536+((j&1023)<<10)|de&1023}if(127>=j){if(v>=C)break;g[v++>>>0]=j}else{if(2047>=j){if(v+1>=C)break;g[v++>>>0]=192|j>>6}else{if(65535>=j){if(v+2>=C)break;g[v++>>>0]=224|j>>12}else{if(v+3>=C)break;g[v++>>>0]=240|j>>18,g[v++>>>0]=128|j>>12&63}g[v++>>>0]=128|j>>6&63}g[v++>>>0]=128|j&63}}return g[v>>>0]=0,v-B},Et=d=>d%4===0&&(d%100!==0||d%400===0),St=[0,31,60,91,121,152,182,213,244,274,305,335],Ft=[0,31,59,90,120,151,181,212,243,273,304,334],qt=d=>{var g=ar(d)+1,v=Yt(g);return v&&Gt(d,N,v,g),v},Dt=[],ir=(d,g)=>{Dt.length=0;for(var v;v=N[d++>>>0];){var C=v!=105;C&=v!=112,g+=C&&g%8?4:0,Dt.push(v==112?W[g>>>2>>>0]:v==105?E[g>>>2>>>0]:Y[g>>>3>>>0]),g+=C?8:4}return Dt},dt={},or=()=>{if(!jt){var d={USER:\"web_user\",LOGNAME:\"web_user\",PATH:\"/\",PWD:\"/\",HOME:\"/home/web_user\",LANG:(typeof navigator==\"object\"&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\",_:u||\"./this.program\"},g;for(g in dt)dt[g]===void 0?delete d[g]:d[g]=dt[g];var v=[];for(g in d)v.push(`${g}=${d[g]}`);jt=v}return jt},jt,Ze=[null,[],[]],kr=[31,29,31,30,31,30,31,31,30,31,30,31],ke=[31,28,31,30,31,30,31,31,30,31,30,31];function Pr(d){var g=Array(ar(d)+1);return Gt(d,g,0,g.length),g}function Kt(d,g,v,C){function B(k,ue,_e){for(k=typeof k==\"number\"?k.toString():k||\"\";k.lengthVr?-1:0ft-k.getDate())ue-=ft-k.getDate()+1,k.setDate(1),11>_e?k.setMonth(_e+1):(k.setMonth(0),k.setFullYear(k.getFullYear()+1));else{k.setDate(k.getDate()+ue);break}}return _e=new Date(k.getFullYear()+1,0,4),ue=de(new Date(k.getFullYear(),0,4)),_e=de(_e),0>=j(ue,k)?0>=j(_e,k)?k.getFullYear()+1:k.getFullYear():k.getFullYear()-1}d>>>=0,g>>>=0,v>>>=0,C>>>=0;var re=W[C+40>>>2>>>0];C={Ya:E[C>>>2>>>0],Xa:E[C+4>>>2>>>0],Ga:E[C+8>>>2>>>0],Ka:E[C+12>>>2>>>0],Ha:E[C+16>>>2>>>0],Da:E[C+20>>>2>>>0],xa:E[C+24>>>2>>>0],Ca:E[C+28>>>2>>>0],bb:E[C+32>>>2>>>0],Wa:E[C+36>>>2>>>0],Za:re?Ke(re):\"\"},v=Ke(v),re={\"%c\":\"%a %b %d %H:%M:%S %Y\",\"%D\":\"%m/%d/%y\",\"%F\":\"%Y-%m-%d\",\"%h\":\"%b\",\"%r\":\"%I:%M:%S %p\",\"%R\":\"%H:%M\",\"%T\":\"%H:%M:%S\",\"%x\":\"%m/%d/%y\",\"%X\":\"%H:%M:%S\",\"%Ec\":\"%c\",\"%EC\":\"%C\",\"%Ex\":\"%m/%d/%y\",\"%EX\":\"%H:%M:%S\",\"%Ey\":\"%y\",\"%EY\":\"%Y\",\"%Od\":\"%d\",\"%Oe\":\"%e\",\"%OH\":\"%H\",\"%OI\":\"%I\",\"%Om\":\"%m\",\"%OM\":\"%M\",\"%OS\":\"%S\",\"%Ou\":\"%u\",\"%OU\":\"%U\",\"%OV\":\"%V\",\"%Ow\":\"%w\",\"%OW\":\"%W\",\"%Oy\":\"%y\"};for(var se in re)v=v.replace(new RegExp(se,\"g\"),re[se]);var we=\"Sunday Monday Tuesday Wednesday Thursday Friday Saturday\".split(\" \"),Ie=\"January February March April May June July August September October November December\".split(\" \");re={\"%a\":k=>we[k.xa].substring(0,3),\"%A\":k=>we[k.xa],\"%b\":k=>Ie[k.Ha].substring(0,3),\"%B\":k=>Ie[k.Ha],\"%C\":k=>H((k.Da+1900)/100|0,2),\"%d\":k=>H(k.Ka,2),\"%e\":k=>B(k.Ka,2,\" \"),\"%g\":k=>J(k).toString().substring(2),\"%G\":k=>J(k),\"%H\":k=>H(k.Ga,2),\"%I\":k=>(k=k.Ga,k==0?k=12:12{for(var ue=0,_e=0;_e<=k.Ha-1;ue+=(Et(k.Da+1900)?kr:ke)[_e++]);return H(k.Ka+ue,3)},\"%m\":k=>H(k.Ha+1,2),\"%M\":k=>H(k.Xa,2),\"%n\":()=>`\n`,\"%p\":k=>0<=k.Ga&&12>k.Ga?\"AM\":\"PM\",\"%S\":k=>H(k.Ya,2),\"%t\":()=>\"\t\",\"%u\":k=>k.xa||7,\"%U\":k=>H(Math.floor((k.Ca+7-k.xa)/7),2),\"%V\":k=>{var ue=Math.floor((k.Ca+7-(k.xa+6)%7)/7);if(2>=(k.xa+371-k.Ca-2)%7&&ue++,ue)ue==53&&(_e=(k.xa+371-k.Ca)%7,_e==4||_e==3&&Et(k.Da)||(ue=1));else{ue=52;var _e=(k.xa+7-k.Ca-1)%7;(_e==4||_e==5&&Et(k.Da%400-1))&&ue++}return H(ue,2)},\"%w\":k=>k.xa,\"%W\":k=>H(Math.floor((k.Ca+7-(k.xa+6)%7)/7),2),\"%y\":k=>(k.Da+1900).toString().substring(2),\"%Y\":k=>k.Da+1900,\"%z\":k=>{k=k.Wa;var ue=0<=k;return k=Math.abs(k)/60,(ue?\"+\":\"-\")+(\"0000\"+(k/60*100+k%60)).slice(-4)},\"%Z\":k=>k.Za,\"%%\":()=>\"%\"},v=v.replace(/%%/g,\"\\0\\0\");for(se in re)v.includes(se)&&(v=v.replace(new RegExp(se,\"g\"),re[se](C)));return v=v.replace(/\\0\\0/g,\"%\"),se=Pr(v),se.length>g?0:(R.set(se,d>>>0),se.length-1)}var Tt=d=>{try{d()}catch(g){he(g)}};function Rn(){var d=ie,g={};for(let[v,C]of Object.entries(d))g[v]=typeof C==\"function\"?function(){It.push(v);try{return C.apply(null,arguments)}finally{A||(It.pop(),ot&&ct===1&&It.length===0&&(ct=0,Tt(yr),typeof Fibers<\"u\"&&Fibers.cb()))}}:C;return g}var ct=0,ot=null,le=0,It=[],sr={},Rr={},Br=0,ur=null,Dr=[];function zr(){return new Promise((d,g)=>{ur={resolve:d,reject:g}})}function Mr(){var d=Yt(65548),g=d+12;W[d>>>2>>>0]=g,W[d+4>>>2>>>0]=g+65536,g=It[0];var v=sr[g];return v===void 0&&(v=Br++,sr[g]=v,Rr[v]=g),E[d+8>>>2>>>0]=v,d}function Ur(d){if(!A){if(ct===0){var g=!1,v=!1;d((C=0)=>{if(!A&&(le=C,g=!0,v)){ct=2,Tt(()=>br(ot)),typeof Browser<\"u\"&&Browser.Ia.Pa&&Browser.Ia.resume(),C=!1;try{var B=(0,ie[Rr[E[ot+8>>>2>>>0]]])()}catch(de){B=de,C=!0}var H=!1;if(!ot){var j=ur;j&&(ur=null,(C?j.reject:j.resolve)(B),H=!0)}if(C&&!H)throw B}}),v=!0,g||(ct=1,ot=Mr(),typeof Browser<\"u\"&&Browser.Ia.Pa&&Browser.Ia.pause(),Tt(()=>gr(ot)))}else ct===2?(ct=0,Tt(wr),cr(ot),ot=null,Dr.forEach(C=>{if(!A)try{C();try{z=z=C=z,r.onExit?.(C),A=!0,l(C,new Me(C))}catch(B){B instanceof Me||B==\"unwind\"||l(1,B)}}catch(B){B instanceof Me||B==\"unwind\"||l(1,B)}})):he(`invalid state: ${ct}`);return le}}function lr(d){return Ur(g=>{d().then(g)})}var Nr={n:function(d,g,v){return lr(async()=>{await r.Ra(d,g,v)})},a:function(d,g,v){throw d>>>=0,new Ct(d).$a(g>>>0,v>>>0),lt=d,Lt++,lt},g:function(){return 0},J:function(){},A:function(){},C:function(){},L:function(){return 0},H:function(){},D:function(){},G:function(){},l:function(){},B:function(){},y:function(){},I:function(){},z:function(){},m:()=>1,q:function(d,g,v){d=g+2097152>>>0<4194305-!!d?(d>>>0)+4294967296*g:NaN,v>>>=0,d=new Date(1e3*d),E[v>>>2>>>0]=d.getUTCSeconds(),E[v+4>>>2>>>0]=d.getUTCMinutes(),E[v+8>>>2>>>0]=d.getUTCHours(),E[v+12>>>2>>>0]=d.getUTCDate(),E[v+16>>>2>>>0]=d.getUTCMonth(),E[v+20>>>2>>>0]=d.getUTCFullYear()-1900,E[v+24>>>2>>>0]=d.getUTCDay(),E[v+28>>>2>>>0]=(d.getTime()-Date.UTC(d.getUTCFullYear(),0,1,0,0,0,0))/864e5|0},r:function(d,g,v){d=g+2097152>>>0<4194305-!!d?(d>>>0)+4294967296*g:NaN,v>>>=0,d=new Date(1e3*d),E[v>>>2>>>0]=d.getSeconds(),E[v+4>>>2>>>0]=d.getMinutes(),E[v+8>>>2>>>0]=d.getHours(),E[v+12>>>2>>>0]=d.getDate(),E[v+16>>>2>>>0]=d.getMonth(),E[v+20>>>2>>>0]=d.getFullYear()-1900,E[v+24>>>2>>>0]=d.getDay(),E[v+28>>>2>>>0]=(Et(d.getFullYear())?St:Ft)[d.getMonth()]+d.getDate()-1|0,E[v+36>>>2>>>0]=-(60*d.getTimezoneOffset()),g=new Date(d.getFullYear(),6,1).getTimezoneOffset();var C=new Date(d.getFullYear(),0,1).getTimezoneOffset();E[v+32>>>2>>>0]=(g!=C&&d.getTimezoneOffset()==Math.min(C,g))|0},s:function(d){d>>>=0;var g=new Date(E[d+20>>>2>>>0]+1900,E[d+16>>>2>>>0],E[d+12>>>2>>>0],E[d+8>>>2>>>0],E[d+4>>>2>>>0],E[d>>>2>>>0],0),v=E[d+32>>>2>>>0],C=g.getTimezoneOffset(),B=new Date(g.getFullYear(),6,1).getTimezoneOffset(),H=new Date(g.getFullYear(),0,1).getTimezoneOffset(),j=Math.min(H,B);return 0>v?E[d+32>>>2>>>0]=+(B!=H&&j==C):0>>2>>>0]=g.getDay(),E[d+28>>>2>>>0]=(Et(g.getFullYear())?St:Ft)[g.getMonth()]+g.getDate()-1|0,E[d>>>2>>>0]=g.getSeconds(),E[d+4>>>2>>>0]=g.getMinutes(),E[d+8>>>2>>>0]=g.getHours(),E[d+12>>>2>>>0]=g.getDate(),E[d+16>>>2>>>0]=g.getMonth(),E[d+20>>>2>>>0]=g.getYear(),d=g.getTime(),isNaN(d)?(E[dr()>>>2>>>0]=61,d=-1):d/=1e3,pr((Ne=d,1<=+Math.abs(Ne)?0>>0:~~+Math.ceil((Ne-+(~~Ne>>>0))/4294967296)>>>0:0)),d>>>0},o:function(){return-52},p:function(){},w:function(d,g,v){function C(J){return(J=J.toTimeString().match(/\\(([A-Za-z ]+)\\)$/))?J[1]:\"GMT\"}v>>>=0;var B=new Date().getFullYear(),H=new Date(B,0,1),j=new Date(B,6,1);B=H.getTimezoneOffset();var de=j.getTimezoneOffset();W[d>>>0>>>2>>>0]=60*Math.max(B,de),E[g>>>0>>>2>>>0]=+(B!=de),d=C(H),g=C(j),d=qt(d),g=qt(g),de>>2>>>0]=d,W[v+4>>>2>>>0]=g):(W[v>>>2>>>0]=g,W[v+4>>>2>>>0]=d)},e:()=>{he(\"\")},b:function(d,g,v){return d>>>=0,g=ir(g>>>0,v>>>0),We[d].apply(null,g)},i:function(d,g,v){return d>>>=0,g=ir(g>>>0,v>>>0),We[d].apply(null,g)},h:()=>Date.now(),x:function(){return 4294901760},c:()=>performance.now(),K:function(d,g,v){return g>>>=0,N.copyWithin(d>>>0>>>0,g>>>0,g+(v>>>0)>>>0)},u:function(d){d>>>=0;var g=N.length;if(4294901760=v;v*=2){var C=g*(1+.2/v);C=Math.min(C,d+100663296);var B=Math;C=Math.max(d,C);e:{B=(B.min.call(B,4294901760,C+(65536-C%65536)%65536)-T.buffer.byteLength+65535)/65536;try{T.grow(B),K();var H=1;break e}catch{}H=void 0}if(H)return!0}return!1},E:function(d,g){d>>>=0,g>>>=0;var v=0;return or().forEach((C,B)=>{var H=g+v;for(B=W[d+4*B>>>2>>>0]=H,H=0;H>>0>>>0]=C.charCodeAt(H);R[B>>>0>>>0]=0,v+=C.length+1}),0},F:function(d,g){d>>>=0,g>>>=0;var v=or();W[d>>>2>>>0]=v.length;var C=0;return v.forEach(B=>C+=B.length+1),W[g>>>2>>>0]=C,0},f:()=>52,k:function(){return 52},t:function(){return 70},j:function(d,g,v,C){g>>>=0,v>>>=0,C>>>=0;for(var B=0,H=0;H>>2>>>0],de=W[g+4>>>2>>>0];g+=8;for(var J=0;J>>0],se=Ze[d];re===0||re===10?((d===1?$:x)(At(se,0)),se.length=0):se.push(re)}B+=de}return W[C>>>2>>>0]=B,0},v:Kt,d:function(d,g,v,C){return Kt(d>>>0,g>>>0,v>>>0,C>>>0)}},ie=function(){function d(v){return ie=v.exports,ie=Rn(),ie=Wr(),T=ie.M,K(),Z.unshift(ie.N),Pe--,Pe==0&&(fe!==null&&(clearInterval(fe),fe=null),Ae&&(v=Ae,Ae=null,v())),ie}var g={a:Nr};if(Pe++,r.instantiateWasm)try{return r.instantiateWasm(g,d)}catch(v){x(`Module.instantiateWasm callback failed with error: ${v}`),n(v)}return nt(g,function(v){d(v.instance)}).catch(n),{}}();r._OrtInit=(d,g)=>(r._OrtInit=ie.O)(d,g),r._OrtGetLastError=(d,g)=>(r._OrtGetLastError=ie.P)(d,g),r._OrtCreateSessionOptions=(d,g,v,C,B,H,j,de,J,re)=>(r._OrtCreateSessionOptions=ie.Q)(d,g,v,C,B,H,j,de,J,re),r._OrtAppendExecutionProvider=(d,g)=>(r._OrtAppendExecutionProvider=ie.R)(d,g),r._OrtAddFreeDimensionOverride=(d,g,v)=>(r._OrtAddFreeDimensionOverride=ie.S)(d,g,v),r._OrtAddSessionConfigEntry=(d,g,v)=>(r._OrtAddSessionConfigEntry=ie.T)(d,g,v),r._OrtReleaseSessionOptions=d=>(r._OrtReleaseSessionOptions=ie.U)(d),r._OrtCreateSession=(d,g,v)=>(r._OrtCreateSession=ie.V)(d,g,v),r._OrtReleaseSession=d=>(r._OrtReleaseSession=ie.W)(d),r._OrtGetInputOutputCount=(d,g,v)=>(r._OrtGetInputOutputCount=ie.X)(d,g,v),r._OrtGetInputName=(d,g)=>(r._OrtGetInputName=ie.Y)(d,g),r._OrtGetOutputName=(d,g)=>(r._OrtGetOutputName=ie.Z)(d,g),r._OrtFree=d=>(r._OrtFree=ie._)(d),r._OrtCreateTensor=(d,g,v,C,B,H)=>(r._OrtCreateTensor=ie.$)(d,g,v,C,B,H),r._OrtGetTensorData=(d,g,v,C,B)=>(r._OrtGetTensorData=ie.aa)(d,g,v,C,B),r._OrtReleaseTensor=d=>(r._OrtReleaseTensor=ie.ba)(d),r._OrtCreateRunOptions=(d,g,v,C)=>(r._OrtCreateRunOptions=ie.ca)(d,g,v,C),r._OrtAddRunConfigEntry=(d,g,v)=>(r._OrtAddRunConfigEntry=ie.da)(d,g,v),r._OrtReleaseRunOptions=d=>(r._OrtReleaseRunOptions=ie.ea)(d),r._OrtCreateBinding=d=>(r._OrtCreateBinding=ie.fa)(d),r._OrtBindInput=(d,g,v)=>(r._OrtBindInput=ie.ga)(d,g,v),r._OrtBindOutput=(d,g,v,C)=>(r._OrtBindOutput=ie.ha)(d,g,v,C),r._OrtClearBoundOutputs=d=>(r._OrtClearBoundOutputs=ie.ia)(d),r._OrtReleaseBinding=d=>(r._OrtReleaseBinding=ie.ja)(d),r._OrtRunWithBinding=(d,g,v,C,B)=>(r._OrtRunWithBinding=ie.ka)(d,g,v,C,B),r._OrtRun=(d,g,v,C,B,H,j,de)=>(r._OrtRun=ie.la)(d,g,v,C,B,H,j,de),r._OrtEndProfiling=d=>(r._OrtEndProfiling=ie.ma)(d),r._JsepOutput=(d,g,v)=>(r._JsepOutput=ie.na)(d,g,v),r._JsepGetNodeName=d=>(r._JsepGetNodeName=ie.oa)(d);var dr=()=>(dr=ie.pa)(),Yt=r._malloc=d=>(Yt=r._malloc=ie.qa)(d),cr=r._free=d=>(cr=r._free=ie.ra)(d),pr=d=>(pr=ie.ta)(d),mr=()=>(mr=ie.ua)(),fr=d=>(fr=ie.va)(d),hr=d=>(hr=ie.wa)(d),gr=d=>(gr=ie.ya)(d),yr=()=>(yr=ie.za)(),br=d=>(br=ie.Aa)(d),wr=()=>(wr=ie.Ba)();r.___start_em_js=943100,r.___stop_em_js=943261;function Wr(){var d=ie;d=Object.assign({},d);var g=C=>()=>C()>>>0,v=C=>B=>C(B)>>>0;return d.pa=g(d.pa),d.qa=v(d.qa),d.ua=g(d.ua),d.wa=v(d.wa),d}r.stackAlloc=hr,r.stackSave=mr,r.stackRestore=fr,r.UTF8ToString=Ke,r.stringToUTF8=(d,g,v)=>Gt(d,N,g,v),r.lengthBytesUTF8=ar;var Ot;Ae=function d(){Ot||zt(),Ot||(Ae=d)};function zt(){if(!(0Ii)});var Ei=Zt(()=>{});var Ti=Zt(()=>{});var Oi={};Xt(Oi,{cpus:()=>ed});var ed,ki=F(()=>{ed=void 0});var Bi=Zt((Ri,Zn)=>{\"use strict\";var Pi=(()=>{var e=typeof document<\"u\"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<\"u\"&&(e=e||__filename),function(t={}){function r(){return X.buffer!=fe.buffer&&Ge(),fe}function a(){return X.buffer!=fe.buffer&&Ge(),Ae}function n(){return X.buffer!=fe.buffer&&Ge(),he}function o(){return X.buffer!=fe.buffer&&Ge(),ye}function u(){return X.buffer!=fe.buffer&&Ge(),He}function l(){return X.buffer!=fe.buffer&&Ge(),ze}var i=t,c,m;i.ready=new Promise((s,p)=>{c=s,m=p}),i.mountExternalData=(s,p)=>{(i.cb||(i.cb=new Map)).set(s,p)},i.unmountExternalData=()=>{delete i.cb},i.jsepInit=(s,p,y,S,O,D,V,oe)=>{i.Mb=s,i.wb=p,i.yb=y,i.kb=S,i.xb=O,i.Ea=D,i.zb=V,i.Ab=oe,p=(ne,ae,pe)=>(...xe)=>{let Te=ht,P=ae?.();xe=ne(...xe);let me=ae?.();return P!==me&&(ne=me,pe(P),ae=pe=null),ht!=Te?zl():xe},y=ne=>async(...ae)=>{try{if(i.bb)throw Error(\"Session already started\");let pe=i.bb={Cb:ae[0],errors:[]},xe=await ne(...ae);if(i.bb!==pe)throw Error(\"Session mismatch\");s.flush();let Te=pe.errors;if(0me),0i._OrtRun,ne=>i._OrtRun=ne)),i._OrtRunWithBinding=y(p(i._OrtRunWithBinding,()=>i._OrtRunWithBinding,ne=>i._OrtRunWithBinding=ne)),i._OrtBindInput=p(i._OrtBindInput,()=>i._OrtBindInput,ne=>i._OrtBindInput=ne),i.jsepRegisterBuffer=(ne,ae,pe,xe)=>s.registerBuffer(ne,ae,pe,xe),i.jsepUnregisterBuffers=ne=>{s.unregisterBuffers(ne)},i.jsepGetBuffer=ne=>s.getBuffer(ne),i.jsepCreateDownloader=(ne,ae,pe)=>s.createDownloader(ne,ae,pe)};var f=Object.assign({},i),h=\"./this.program\",b=(s,p)=>{throw p},w=typeof window==\"object\",_=typeof importScripts==\"function\",I=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\",$=i.ENVIRONMENT_IS_PTHREAD||!1,x=\"\";function T(s){return i.locateFile?i.locateFile(s,x):x+s}var A,z,R;if(I){var N=(qn(),Ut(Fn)),E=(Kn(),Ut(jn));x=_?E.dirname(x)+\"/\":__dirname+\"/\",A=(p,y)=>(p=Bt(p)?new URL(p):E.normalize(p),N.readFileSync(p,y?void 0:\"utf8\")),R=p=>(p=A(p,!0),p.buffer||(p=new Uint8Array(p)),p),z=(p,y,S,O=!0)=>{p=Bt(p)?new URL(p):E.normalize(p),N.readFile(p,O?void 0:\"utf8\",(D,V)=>{D?S(D):y(O?V.buffer:V)})},!i.thisProgram&&1{throw process.exitCode=p,y},i.inspect=()=>\"[Emscripten Module object]\";let s;try{s=Ei()}catch(p){throw console.error('The \"worker_threads\" module is not supported in this node.js build - perhaps a newer version is needed?'),p}global.Worker=s.Worker}else(w||_)&&(_?x=self.location.href:typeof document<\"u\"&&document.currentScript&&(x=document.currentScript.src),typeof e<\"u\"&&e&&(x=e),x.indexOf(\"blob:\")!==0?x=x.substr(0,x.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1):x=\"\",I||(A=s=>{var p=new XMLHttpRequest;return p.open(\"GET\",s,!1),p.send(null),p.responseText},_&&(R=s=>{var p=new XMLHttpRequest;return p.open(\"GET\",s,!1),p.responseType=\"arraybuffer\",p.send(null),new Uint8Array(p.response)}),z=(s,p,y)=>{var S=new XMLHttpRequest;S.open(\"GET\",s,!0),S.responseType=\"arraybuffer\",S.onload=()=>{S.status==200||S.status==0&&S.response?p(S.response):y()},S.onerror=y,S.send(null)}));I&&typeof performance>\"u\"&&(global.performance=Ti().performance);var W=console.log.bind(console),te=console.error.bind(console);I&&(W=(...s)=>N.writeSync(1,s.join(\" \")+`\n`),te=(...s)=>N.writeSync(2,s.join(\" \")+`\n`));var Y=W,K=te;Object.assign(i,f),f=null,typeof WebAssembly!=\"object\"&<(\"no native wasm support detected\");var X,Z,Oe=!1,Pe,fe,Ae,he,ye,He,ze;function Ge(){var s=X.buffer;i.HEAP8=fe=new Int8Array(s),i.HEAP16=new Int16Array(s),i.HEAPU8=Ae=new Uint8Array(s),i.HEAPU16=new Uint16Array(s),i.HEAP32=he=new Int32Array(s),i.HEAPU32=ye=new Uint32Array(s),i.HEAPF32=He=new Float32Array(s),i.HEAPF64=ze=new Float64Array(s)}var L=16777216;if($)X=i.wasmMemory;else if(i.wasmMemory)X=i.wasmMemory;else if(X=new WebAssembly.Memory({initial:L/65536,maximum:65536,shared:!0}),!(X.buffer instanceof SharedArrayBuffer))throw K(\"requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag\"),I&&K(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)\"),Error(\"bad memory\");Ge(),L=X.buffer.byteLength;var ee=[],be=[],nt=[],Ne=0,We=null,Me=null;function Ct(){if(Ne--,Ne==0&&(We!==null&&(clearInterval(We),We=null),Me)){var s=Me;Me=null,s()}}function lt(s){throw s=\"Aborted(\"+s+\")\",K(s),Oe=!0,Pe=1,s=new WebAssembly.RuntimeError(s+\". Build with -sASSERTIONS for more info.\"),m(s),s}var Lt=s=>s.startsWith(\"data:application/octet-stream;base64,\"),Bt=s=>s.startsWith(\"file://\"),At;At=\"ort-wasm-simd-threaded.wasm\",Lt(At)||(At=T(At));function Ke(s){if(R)return R(s);throw\"both async and sync fetching of the wasm failed\"}function ar(s){if(w||_){if(typeof fetch==\"function\"&&!Bt(s))return fetch(s,{credentials:\"same-origin\"}).then(p=>{if(!p.ok)throw\"failed to load wasm binary file at '\"+s+\"'\";return p.arrayBuffer()}).catch(()=>Ke(s));if(z)return new Promise((p,y)=>{z(s,S=>p(new Uint8Array(S)),y)})}return Promise.resolve().then(()=>Ke(s))}function Gt(s,p,y){return ar(s).then(S=>WebAssembly.instantiate(S,p)).then(S=>S).then(y,S=>{K(`failed to asynchronously prepare wasm: ${S}`),lt(S)})}function Et(s,p){var y=At;return typeof WebAssembly.instantiateStreaming!=\"function\"||Lt(y)||Bt(y)||I||typeof fetch!=\"function\"?Gt(y,s,p):fetch(y,{credentials:\"same-origin\"}).then(S=>WebAssembly.instantiateStreaming(S,s).then(p,function(O){return K(`wasm streaming compile failed: ${O}`),K(\"falling back to ArrayBuffer instantiation\"),Gt(y,s,p)}))}var St,Ft={932428:(s,p,y,S)=>{if(typeof i>\"u\"||!i.cb)return 1;if(s=Ze(s>>>0),s.startsWith(\"./\")&&(s=s.substring(2)),s=i.cb.get(s),!s)return 2;if(p>>>=0,y>>>=0,S>>>=0,p+y>s.byteLength)return 3;try{return a().set(s.subarray(p,p+y),S>>>0),0}catch{return 4}},932929:s=>i.wb(s),932962:s=>i.yb(s),932994:(s,p,y)=>{i.kb(s,p,y,!0)},933033:(s,p,y)=>{i.kb(s,p,y)},933066:s=>{i.Ea(\"Abs\",s,void 0)},933117:s=>{i.Ea(\"Neg\",s,void 0)},933168:s=>{i.Ea(\"Floor\",s,void 0)},933221:s=>{i.Ea(\"Ceil\",s,void 0)},933273:s=>{i.Ea(\"Reciprocal\",s,void 0)},933331:s=>{i.Ea(\"Sqrt\",s,void 0)},933383:s=>{i.Ea(\"Exp\",s,void 0)},933434:s=>{i.Ea(\"Erf\",s,void 0)},933485:s=>{i.Ea(\"Sigmoid\",s,void 0)},933540:s=>{i.Ea(\"Log\",s,void 0)},933591:s=>{i.Ea(\"Sin\",s,void 0)},933642:s=>{i.Ea(\"Cos\",s,void 0)},933693:s=>{i.Ea(\"Tan\",s,void 0)},933744:s=>{i.Ea(\"Asin\",s,void 0)},933796:s=>{i.Ea(\"Acos\",s,void 0)},933848:s=>{i.Ea(\"Atan\",s,void 0)},933900:s=>{i.Ea(\"Sinh\",s,void 0)},933952:s=>{i.Ea(\"Cosh\",s,void 0)},934004:s=>{i.Ea(\"Asinh\",s,void 0)},934057:s=>{i.Ea(\"Acosh\",s,void 0)},934110:s=>{i.Ea(\"Atanh\",s,void 0)},934163:s=>{i.Ea(\"Tanh\",s,void 0)},934215:s=>{i.Ea(\"Not\",s,void 0)},934266:(s,p,y)=>{i.Ea(\"Clip\",s,{min:p,max:y})},934335:s=>{i.Ea(\"Clip\",s,void 0)},934387:(s,p)=>{i.Ea(\"Elu\",s,{alpha:p})},934445:s=>{i.Ea(\"Relu\",s,void 0)},934497:(s,p)=>{i.Ea(\"LeakyRelu\",s,{alpha:p})},934561:(s,p)=>{i.Ea(\"ThresholdedRelu\",s,{alpha:p})},934631:(s,p)=>{i.Ea(\"Cast\",s,{to:p})},934689:s=>{i.Ea(\"Add\",s,void 0)},934740:s=>{i.Ea(\"Sub\",s,void 0)},934791:s=>{i.Ea(\"Mul\",s,void 0)},934842:s=>{i.Ea(\"Div\",s,void 0)},934893:s=>{i.Ea(\"Pow\",s,void 0)},934944:s=>{i.Ea(\"Equal\",s,void 0)},934997:s=>{i.Ea(\"Greater\",s,void 0)},935052:s=>{i.Ea(\"GreaterOrEqual\",s,void 0)},935114:s=>{i.Ea(\"Less\",s,void 0)},935166:s=>{i.Ea(\"LessOrEqual\",s,void 0)},935225:(s,p,y,S,O)=>{i.Ea(\"ReduceMean\",s,{keepDims:!!p,noopWithEmptyAxes:!!y,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},935384:(s,p,y,S,O)=>{i.Ea(\"ReduceMax\",s,{keepDims:!!p,noopWithEmptyAxes:!!y,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},935542:(s,p,y,S,O)=>{i.Ea(\"ReduceMin\",s,{keepDims:!!p,noopWithEmptyAxes:!!y,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},935700:(s,p,y,S,O)=>{i.Ea(\"ReduceProd\",s,{keepDims:!!p,noopWithEmptyAxes:!!y,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},935859:(s,p,y,S,O)=>{i.Ea(\"ReduceSum\",s,{keepDims:!!p,noopWithEmptyAxes:!!y,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},936017:(s,p,y,S,O)=>{i.Ea(\"ReduceL1\",s,{keepDims:!!p,noopWithEmptyAxes:!!y,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},936174:(s,p,y,S,O)=>{i.Ea(\"ReduceL2\",s,{keepDims:!!p,noopWithEmptyAxes:!!y,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},936331:(s,p,y,S,O)=>{i.Ea(\"ReduceLogSum\",s,{keepDims:!!p,noopWithEmptyAxes:!!y,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},936492:(s,p,y,S,O)=>{i.Ea(\"ReduceSumSquare\",s,{keepDims:!!p,noopWithEmptyAxes:!!y,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},936656:(s,p,y,S,O)=>{i.Ea(\"ReduceLogSumExp\",s,{keepDims:!!p,noopWithEmptyAxes:!!y,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},936820:s=>{i.Ea(\"Where\",s,void 0)},936873:(s,p,y)=>{i.Ea(\"Transpose\",s,{perm:p?Array.from(n().subarray(p>>>0,y>>>0)):[]})},936981:(s,p,y,S,O,D,V,oe,ne,ae,pe,xe,Te,P,me)=>{i.Ea(\"ConvTranspose\",s,{format:ne?\"NHWC\":\"NCHW\",autoPad:p,dilations:[y],group:S,kernel_shape:[O],pads:[D,V],strides:[oe],wIsConst:()=>!!r()[ae>>>0],outputPadding:pe?Array.from(n().subarray(pe>>>0,xe>>>0)):[],outputShape:Te?Array.from(n().subarray(Te>>>0,P>>>0)):[],activation:Ze(me)})},937383:(s,p,y,S,O,D,V,oe,ne,ae,pe,xe,Te,P)=>{i.Ea(\"ConvTranspose\",s,{format:oe?\"NHWC\":\"NCHW\",autoPad:p,dilations:Array.from(n().subarray(y>>>0,(y>>>0)+2>>>0)),group:S,kernelShape:Array.from(n().subarray(O>>>0,(O>>>0)+2>>>0)),pads:Array.from(n().subarray(D>>>0,(D>>>0)+4>>>0)),strides:Array.from(n().subarray(V>>>0,(V>>>0)+2>>>0)),wIsConst:()=>!!r()[ne>>>0],outputPadding:ae?Array.from(n().subarray(ae>>>0,pe>>>0)):[],outputShape:xe?Array.from(n().subarray(xe>>>0,Te>>>0)):[],activation:Ze(P)})},937948:(s,p,y,S,O,D,V,oe,ne,ae,pe,xe,Te,P,me)=>{i.Ea(\"ConvTranspose\",s,{format:ne?\"NHWC\":\"NCHW\",autoPad:p,dilations:[y],group:S,kernel_shape:[O],pads:[D,V],strides:[oe],wIsConst:()=>!!r()[ae>>>0],outputPadding:pe?Array.from(n().subarray(pe>>>0,xe>>>0)):[],outputShape:Te?Array.from(n().subarray(Te>>>0,P>>>0)):[],activation:Ze(me)})},938350:(s,p,y,S,O,D,V,oe,ne,ae,pe,xe,Te,P)=>{i.Ea(\"ConvTranspose\",s,{format:oe?\"NHWC\":\"NCHW\",autoPad:p,dilations:Array.from(n().subarray(y>>>0,(y>>>0)+2>>>0)),group:S,kernelShape:Array.from(n().subarray(O>>>0,(O>>>0)+2>>>0)),pads:Array.from(n().subarray(D>>>0,(D>>>0)+4>>>0)),strides:Array.from(n().subarray(V>>>0,(V>>>0)+2>>>0)),wIsConst:()=>!!r()[ne>>>0],outputPadding:ae?Array.from(n().subarray(ae>>>0,pe>>>0)):[],outputShape:xe?Array.from(n().subarray(xe>>>0,Te>>>0)):[],activation:Ze(P)})},938915:(s,p)=>{i.Ea(\"GlobalAveragePool\",s,{format:p?\"NHWC\":\"NCHW\"})},939006:(s,p,y,S,O,D,V,oe,ne,ae,pe,xe,Te,P,me,Ce)=>{i.Ea(\"AveragePool\",s,{format:Ce?\"NHWC\":\"NCHW\",auto_pad:p,ceil_mode:y,count_include_pad:S,storage_order:O,dilations:[D,V],kernel_shape:[oe,ne],pads:[ae,pe,xe,Te],strides:[P,me]})},939290:(s,p)=>{i.Ea(\"GlobalAveragePool\",s,{format:p?\"NHWC\":\"NCHW\"})},939381:(s,p,y,S,O,D,V,oe,ne,ae,pe,xe,Te,P,me,Ce)=>{i.Ea(\"AveragePool\",s,{format:Ce?\"NHWC\":\"NCHW\",auto_pad:p,ceil_mode:y,count_include_pad:S,storage_order:O,dilations:[D,V],kernel_shape:[oe,ne],pads:[ae,pe,xe,Te],strides:[P,me]})},939665:(s,p)=>{i.Ea(\"GlobalMaxPool\",s,{format:p?\"NHWC\":\"NCHW\"})},939752:(s,p,y,S,O,D,V,oe,ne,ae,pe,xe,Te,P,me,Ce)=>{i.Ea(\"MaxPool\",s,{format:Ce?\"NHWC\":\"NCHW\",auto_pad:p,ceil_mode:y,count_include_pad:S,storage_order:O,dilations:[D,V],kernel_shape:[oe,ne],pads:[ae,pe,xe,Te],strides:[P,me]})},940032:(s,p)=>{i.Ea(\"GlobalMaxPool\",s,{format:p?\"NHWC\":\"NCHW\"})},940119:(s,p,y,S,O,D,V,oe,ne,ae,pe,xe,Te,P,me,Ce)=>{i.Ea(\"MaxPool\",s,{format:Ce?\"NHWC\":\"NCHW\",auto_pad:p,ceil_mode:y,count_include_pad:S,storage_order:O,dilations:[D,V],kernel_shape:[oe,ne],pads:[ae,pe,xe,Te],strides:[P,me]})},940399:(s,p,y,S,O)=>{i.Ea(\"Gemm\",s,{alpha:p,beta:y,transA:S,transB:O})},940503:s=>{i.Ea(\"MatMul\",s,void 0)},940557:(s,p,y,S)=>{i.Ea(\"ArgMax\",s,{keepDims:!!p,selectLastIndex:!!y,axis:S})},940665:(s,p,y,S)=>{i.Ea(\"ArgMin\",s,{keepDims:!!p,selectLastIndex:!!y,axis:S})},940773:(s,p)=>{i.Ea(\"Softmax\",s,{axis:p})},940836:(s,p)=>{i.Ea(\"Concat\",s,{axis:p})},940896:(s,p,y,S,O)=>{i.Ea(\"Split\",s,{axis:p,numOutputs:y,splitSizes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},941036:s=>{i.Ea(\"Expand\",s,void 0)},941090:(s,p)=>{i.Ea(\"Gather\",s,{axis:Number(p)})},941161:(s,p)=>{i.Ea(\"GatherElements\",s,{axis:Number(p)})},941240:(s,p,y,S,O,D,V,oe,ne,ae,pe)=>{i.Ea(\"Resize\",s,{antialias:p,axes:y?Array.from(n().subarray(y>>>0,S>>>0)):[],coordinateTransformMode:Ze(O),cubicCoeffA:D,excludeOutside:V,extrapolationValue:oe,keepAspectRatioPolicy:Ze(ne),mode:Ze(ae),nearestMode:Ze(pe)})},941586:(s,p,y,S,O,D,V)=>{i.Ea(\"Slice\",s,{starts:p?Array.from(n().subarray(p>>>0,y>>>0)):[],ends:S?Array.from(n().subarray(S>>>0,O>>>0)):[],axes:D?Array.from(n().subarray(D>>>0,V>>>0)):[]})},941802:s=>{i.Ea(\"Tile\",s,void 0)},941854:(s,p,y)=>{i.Ea(\"LayerNormalization\",s,{axis:Number(p),epsilon:Number(y)})},941961:(s,p,y)=>{i.Ea(\"InstanceNormalization\",s,{epsilon:p,format:y?\"NHWC\":\"NCHW\"})},942075:(s,p,y)=>{i.Ea(\"InstanceNormalization\",s,{epsilon:p,format:y?\"NHWC\":\"NCHW\"})},942189:s=>{i.Ea(\"Range\",s,void 0)},942242:(s,p)=>{i.Ea(\"Einsum\",s,{equation:Ze(p)})},942323:(s,p,y,S,O)=>{i.Ea(\"Pad\",s,{mode:p,value:y,pads:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},942450:(s,p,y,S,O,D)=>{i.Ea(\"BatchNormalization\",s,{epsilon:p,momentum:y,spatial:!!O,trainingMode:!!S,format:D?\"NHWC\":\"NCHW\"})},942619:(s,p,y,S,O,D)=>{i.Ea(\"BatchNormalization\",s,{epsilon:p,momentum:y,spatial:!!O,trainingMode:!!S,format:D?\"NHWC\":\"NCHW\"})},942788:(s,p,y)=>{i.Ea(\"CumSum\",s,{exclusive:Number(p),reverse:Number(y)})},942885:(s,p,y,S,O,D,V,oe,ne)=>{i.Ea(\"Attention\",s,{numHeads:p,isUnidirectional:y,maskFilterValue:S,scale:O,doRotary:D,qkvHiddenSizes:V?Array.from(n().subarray(Number(oe)>>>0,Number(oe)+V>>>0)):[],pastPresentShareBuffer:!!ne})},943157:s=>{i.Ea(\"Gelu\",s,void 0)},943209:(s,p,y,S,O,D)=>{i.Ea(\"MultiHeadAttention\",s,{numHeads:p,isUnidirectional:y,maskFilterValue:S,scale:O,doRotary:D})},943368:s=>{i.Ea(\"BiasAdd\",s,void 0)},943423:s=>{i.Ea(\"BiasSplitGelu\",s,void 0)},943484:(s,p)=>{i.Ea(\"SkipLayerNormalization\",s,{epsilon:p})},943565:(s,p,y,S,O,D,V,oe,ne,ae,pe,xe,Te)=>{i.Ea(\"Conv\",s,{format:ne?\"NHWC\":\"NCHW\",auto_pad:p,dilations:[y],group:S,kernel_shape:[O],pads:D?Array.from(n().subarray(D>>>0,V>>>0)):[],strides:[oe],w_is_const:()=>!!r()[ae>>>0],activation:Ze(pe),activation_params:xe?Array.from(u().subarray(xe>>>0,Te>>>0)):[]})},943935:(s,p,y,S,O,D,V,oe,ne,ae,pe,xe,Te,P,me,Ce)=>{i.Ea(\"Conv\",s,{format:xe?\"NHWC\":\"NCHW\",auto_pad:p,dilations:[y,S],group:O,kernel_shape:[D,V],pads:oe?Array.from(n().subarray(oe>>>0,ne>>>0)):[],strides:[ae,pe],w_is_const:()=>!!r()[Te>>>0],activation:Ze(P),activation_params:me?Array.from(u().subarray(me>>>0,Ce>>>0)):[]})},944326:s=>{i.zb(s)},944360:(s,p)=>i.Ab(s,p,i.bb.Cb,i.bb.errors)};function qt(s){this.name=\"ExitStatus\",this.message=`Program terminated with exit(${s})`,this.status=s}var Dt=s=>{s.terminate(),s.onmessage=()=>{}},ir=s=>{le.Ya.length==0&&(ct(),le.lb(le.Ya[0]));var p=le.Ya.pop();if(!p)return 6;le.Za.push(p),le.Qa[s.Xa]=p,p.Xa=s.Xa;var y={cmd:\"run\",start_routine:s.Db,arg:s.tb,pthread_ptr:s.Xa};return I&&p.unref(),p.postMessage(y,s.Jb),0},dt=0,or=typeof TextDecoder<\"u\"?new TextDecoder(\"utf8\"):void 0,jt=(s,p,y)=>{p>>>=0;var S=p+y;for(y=p;s[y]&&!(y>=S);)++y;if(16O?S+=String.fromCharCode(O):(O-=65536,S+=String.fromCharCode(55296|O>>10,56320|O&1023))}}else S+=String.fromCharCode(O)}return S},Ze=(s,p)=>(s>>>=0)?jt(a(),s,p):\"\",kr=s=>{var p=Un();return s=s(),Fr(p),s};function ke(s,p){var y=arguments.length-2,S=arguments;return kr(()=>{for(var O=Nn(8*y),D=O>>>3,V=0;V>>0]=oe}return Va(s,y,O,p)})}function Pr(s){if($)return ke(0,1,s);Pe=s,0{if(Pe=s,$)throw sr(s),\"unwind\";Pr(s)},Tt=s=>{s instanceof qt||s==\"unwind\"||b(1,s)};function Rn(){for(var s=i.numThreads;s--;)ct();ee.unshift(()=>{Ne++,ot(()=>Ct())})}function ct(){var s=T(\"ort-wasm-simd-threaded.worker.js\");s=new Worker(s),le.Ya.push(s)}function ot(s){$?s():Promise.all(le.Ya.map(le.lb)).then(s)}var le={Ya:[],Za:[],pb:[],Qa:{},hb(){$?(le.receiveObjectTransfer=le.Bb,le.threadInitTLS=le.ob,le.setExitStatus=le.nb):Rn()},nb:s=>Pe=s,Nb:[\"$terminateWorker\"],Eb:()=>{for(var s of le.Za)Dt(s);for(s of le.Ya)Dt(s);le.Ya=[],le.Za=[],le.Qa=[]},mb:s=>{var p=s.Xa;delete le.Qa[p],le.Ya.push(s),le.Za.splice(le.Za.indexOf(s),1),s.Xa=0,zn(p)},Bb(){},ob(){le.pb.forEach(s=>s())},lb:s=>new Promise(p=>{s.onmessage=D=>{D=D.data;var V=D.cmd;if(D.targetThread&&D.targetThread!=Gr()){var oe=le.Qa[D.targetThread];oe?oe.postMessage(D,D.transferList):K(`Internal error! Worker sent a message \"${V}\" to target pthread ${D.targetThread}, but that thread no longer exists!`)}else V===\"checkMailbox\"?zt():V===\"spawnThread\"?ir(D):V===\"cleanupThread\"?le.mb(le.Qa[D.thread]):V===\"killThread\"?(D=D.thread,V=le.Qa[D],delete le.Qa[D],Dt(V),zn(D),le.Za.splice(le.Za.indexOf(V),1),V.Xa=0):V===\"cancelThread\"?le.Qa[D.thread].postMessage({cmd:\"cancel\"}):V===\"loaded\"?(s.loaded=!0,I&&!s.Xa&&s.unref(),p(s)):V===\"alert\"?alert(`Thread ${D.threadId}: ${D.text}`):D.target===\"setimmediate\"?s.postMessage(D):V===\"callHandler\"?i[D.handler](...D.args):V&&K(`worker sent an unknown command ${V}`)},s.onerror=D=>{throw K(`worker sent an error! ${D.filename}:${D.lineno}: ${D.message}`),D},I&&(s.on(\"message\",D=>s.onmessage({data:D})),s.on(\"error\",D=>s.onerror(D)));var y=[],S=[\"onExit\"],O;for(O of S)i.hasOwnProperty(O)&&y.push(O);s.postMessage({cmd:\"load\",handlers:y,urlOrBlob:i.mainScriptUrlOrBlob||e,wasmMemory:X,wasmModule:Z})})};i.PThread=le;var It=s=>{for(;0{var s=Gr(),p=o()[s+52>>>2>>>0];s=o()[s+56>>>2>>>0],Ga(p,p-s),Fr(p)};function sr(s){if($)return ke(1,0,s);Kt(s)}i.invokeEntryPoint=(s,p)=>{s=Fa.apply(null,[s,p]),0>>2>>>0]=p},this.rb=function(p){o()[this.gb+8>>>2>>>0]=p},this.hb=function(p,y){this.qb(),this.sb(p),this.rb(y)},this.qb=function(){o()[this.gb+16>>>2>>>0]=0}}var Br=0,ur=0;function Dr(s,p,y,S){return $?ke(2,1,s,p,y,S):zr(s,p,y,S)}function zr(s,p,y,S){if(s>>>=0,p>>>=0,y>>>=0,S>>>=0,typeof SharedArrayBuffer>\"u\")return K(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\"),6;var O=[];return $&&O.length===0?Dr(s,p,y,S):(s={Db:y,Xa:s,tb:S,Jb:O},$?(s.Lb=\"spawnThread\",postMessage(s,O),0):ir(s))}function Mr(s,p,y){return $?ke(3,1,s,p,y):0}function Ur(s,p){if($)return ke(4,1,s,p)}var lr=s=>{for(var p=0,y=0;y=S?p++:2047>=S?p+=2:55296<=S&&57343>=S?(p+=4,++y):p+=3}return p},Nr=(s,p,y,S)=>{if(y>>>=0,!(0=V){var oe=s.charCodeAt(++D);V=65536+((V&1023)<<10)|oe&1023}if(127>=V){if(y>=S)break;p[y++>>>0]=V}else{if(2047>=V){if(y+1>=S)break;p[y++>>>0]=192|V>>6}else{if(65535>=V){if(y+2>=S)break;p[y++>>>0]=224|V>>12}else{if(y+3>=S)break;p[y++>>>0]=240|V>>18,p[y++>>>0]=128|V>>12&63}p[y++>>>0]=128|V>>6&63}p[y++>>>0]=128|V&63}}return p[y>>>0]=0,y-O},ie=(s,p,y)=>Nr(s,a(),p,y);function dr(s,p){if($)return ke(5,1,s,p)}function Yt(s,p,y){if($)return ke(6,1,s,p,y)}function cr(s,p,y){return $?ke(7,1,s,p,y):0}function pr(s,p){if($)return ke(8,1,s,p)}function mr(s,p,y){if($)return ke(9,1,s,p,y)}function fr(s,p,y,S){if($)return ke(10,1,s,p,y,S)}function hr(s,p,y,S){if($)return ke(11,1,s,p,y,S)}function gr(s,p,y,S){if($)return ke(12,1,s,p,y,S)}function yr(s){if($)return ke(13,1,s)}function br(s,p){if($)return ke(14,1,s,p)}function wr(s,p,y){if($)return ke(15,1,s,p,y)}var Wr=()=>{if(!(0>>=0,typeof Atomics.Kb==\"function\"&&(Atomics.Kb(n(),s>>>2,s).value.then(zt),s+=128,Atomics.store(n(),s>>>2,1))}i.__emscripten_thread_mailbox_await=Ot;var zt=()=>{var s=Gr();if(s&&(Ot(s),!Oe))try{Ha(),Wr()}catch(p){Tt(p)}};i.checkMailbox=zt;var d=[],g=s=>s%4===0&&(s%100!==0||s%400===0),v=[0,31,60,91,121,152,182,213,244,274,305,335],C=[0,31,59,90,120,151,181,212,243,273,304,334];function B(s,p,y,S,O,D,V,oe){return $?ke(16,1,s,p,y,S,O,D,V,oe):-52}function H(s,p,y,S,O,D,V){if($)return ke(17,1,s,p,y,S,O,D,V)}var j=s=>{var p=lr(s)+1,y=Dn(p);return y&&ie(s,y,p),y},de=[],J=(s,p)=>{de.length=0;for(var y;y=a()[s++>>>0];){var S=y!=105;S&=y!=112,p+=S&&p%8?4:0,de.push(y==112?o()[p>>>2>>>0]:y==105?n()[p>>>2>>>0]:l()[p>>>3>>>0]),p+=S?8:4}return de},re={},se=()=>{if(!we){var s={USER:\"web_user\",LOGNAME:\"web_user\",PATH:\"/\",PWD:\"/\",HOME:\"/home/web_user\",LANG:(typeof navigator==\"object\"&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\",_:h||\"./this.program\"},p;for(p in re)re[p]===void 0?delete s[p]:s[p]=re[p];var y=[];for(p in s)y.push(`${p}=${s[p]}`);we=y}return we},we;function Ie(s,p){if($)return ke(18,1,s,p);s>>>=0,p>>>=0;var y=0;return se().forEach((S,O)=>{var D=p+y;for(O=o()[s+4*O>>>2>>>0]=D,D=0;D>>0>>>0]=S.charCodeAt(D);r()[O>>>0>>>0]=0,y+=S.length+1}),0}function k(s,p){if($)return ke(19,1,s,p);s>>>=0,p>>>=0;var y=se();o()[s>>>2>>>0]=y.length;var S=0;return y.forEach(O=>S+=O.length+1),o()[p>>>2>>>0]=S,0}function ue(s){return $?ke(20,1,s):52}function _e(s,p,y,S){return $?ke(21,1,s,p,y,S):52}function ft(s,p,y,S,O){return $?ke(22,1,s,p,y,S,O):70}var Vr=[null,[],[]];function ka(s,p,y,S){if($)return ke(23,1,s,p,y,S);p>>>=0,y>>>=0,S>>>=0;for(var O=0,D=0;D>>2>>>0],oe=o()[p+4>>>2>>>0];p+=8;for(var ne=0;ne>>0],pe=Vr[s];ae===0||ae===10?((s===1?Y:K)(jt(pe,0)),pe.length=0):pe.push(ae)}O+=oe}return o()[S>>>2>>>0]=O,0}var Pa=[31,29,31,30,31,30,31,31,30,31,30,31],Ra=[31,28,31,30,31,30,31,31,30,31,30,31];function kl(s){var p=Array(lr(s)+1);return Nr(s,p,0,p.length),p}var Pl=(s,p)=>{r().set(s,p>>>0)};function Ba(s,p,y,S){function O(P,me,Ce){for(P=typeof P==\"number\"?P.toString():P||\"\";P.lengthXa?-1:0Mt-P.getDate())me-=Mt-P.getDate()+1,P.setDate(1),11>Ce?P.setMonth(Ce+1):(P.setMonth(0),P.setFullYear(P.getFullYear()+1));else{P.setDate(P.getDate()+me);break}}return Ce=new Date(P.getFullYear()+1,0,4),me=oe(new Date(P.getFullYear(),0,4)),Ce=oe(Ce),0>=V(me,P)?0>=V(Ce,P)?P.getFullYear()+1:P.getFullYear():P.getFullYear()-1}s>>>=0,p>>>=0,y>>>=0,S>>>=0;var ae=o()[S+40>>>2>>>0];S={Hb:n()[S>>>2>>>0],Gb:n()[S+4>>>2>>>0],eb:n()[S+8>>>2>>>0],jb:n()[S+12>>>2>>>0],fb:n()[S+16>>>2>>>0],ab:n()[S+20>>>2>>>0],Wa:n()[S+24>>>2>>>0],$a:n()[S+28>>>2>>>0],Ob:n()[S+32>>>2>>>0],Fb:n()[S+36>>>2>>>0],Ib:ae?Ze(ae):\"\"},y=Ze(y),ae={\"%c\":\"%a %b %d %H:%M:%S %Y\",\"%D\":\"%m/%d/%y\",\"%F\":\"%Y-%m-%d\",\"%h\":\"%b\",\"%r\":\"%I:%M:%S %p\",\"%R\":\"%H:%M\",\"%T\":\"%H:%M:%S\",\"%x\":\"%m/%d/%y\",\"%X\":\"%H:%M:%S\",\"%Ec\":\"%c\",\"%EC\":\"%C\",\"%Ex\":\"%m/%d/%y\",\"%EX\":\"%H:%M:%S\",\"%Ey\":\"%y\",\"%EY\":\"%Y\",\"%Od\":\"%d\",\"%Oe\":\"%e\",\"%OH\":\"%H\",\"%OI\":\"%I\",\"%Om\":\"%m\",\"%OM\":\"%M\",\"%OS\":\"%S\",\"%Ou\":\"%u\",\"%OU\":\"%U\",\"%OV\":\"%V\",\"%Ow\":\"%w\",\"%OW\":\"%W\",\"%Oy\":\"%y\"};for(var pe in ae)y=y.replace(new RegExp(pe,\"g\"),ae[pe]);var xe=\"Sunday Monday Tuesday Wednesday Thursday Friday Saturday\".split(\" \"),Te=\"January February March April May June July August September October November December\".split(\" \");ae={\"%a\":P=>xe[P.Wa].substring(0,3),\"%A\":P=>xe[P.Wa],\"%b\":P=>Te[P.fb].substring(0,3),\"%B\":P=>Te[P.fb],\"%C\":P=>D((P.ab+1900)/100|0,2),\"%d\":P=>D(P.jb,2),\"%e\":P=>O(P.jb,2,\" \"),\"%g\":P=>ne(P).toString().substring(2),\"%G\":P=>ne(P),\"%H\":P=>D(P.eb,2),\"%I\":P=>(P=P.eb,P==0?P=12:12{for(var me=0,Ce=0;Ce<=P.fb-1;me+=(g(P.ab+1900)?Pa:Ra)[Ce++]);return D(P.jb+me,3)},\"%m\":P=>D(P.fb+1,2),\"%M\":P=>D(P.Gb,2),\"%n\":()=>`\n`,\"%p\":P=>0<=P.eb&&12>P.eb?\"AM\":\"PM\",\"%S\":P=>D(P.Hb,2),\"%t\":()=>\"\t\",\"%u\":P=>P.Wa||7,\"%U\":P=>D(Math.floor((P.$a+7-P.Wa)/7),2),\"%V\":P=>{var me=Math.floor((P.$a+7-(P.Wa+6)%7)/7);if(2>=(P.Wa+371-P.$a-2)%7&&me++,me)me==53&&(Ce=(P.Wa+371-P.$a)%7,Ce==4||Ce==3&&g(P.ab)||(me=1));else{me=52;var Ce=(P.Wa+7-P.$a-1)%7;(Ce==4||Ce==5&&g(P.ab%400-1))&&me++}return D(me,2)},\"%w\":P=>P.Wa,\"%W\":P=>D(Math.floor((P.$a+7-(P.Wa+6)%7)/7),2),\"%y\":P=>(P.ab+1900).toString().substring(2),\"%Y\":P=>P.ab+1900,\"%z\":P=>{P=P.Fb;var me=0<=P;return P=Math.abs(P)/60,(me?\"+\":\"-\")+(\"0000\"+(P/60*100+P%60)).slice(-4)},\"%Z\":P=>P.Ib,\"%%\":()=>\"%\"},y=y.replace(/%%/g,\"\\0\\0\");for(pe in ae)y.includes(pe)&&(y=y.replace(new RegExp(pe,\"g\"),ae[pe](S)));return y=y.replace(/\\0\\0/g,\"%\"),pe=kl(y),pe.length>p?0:(Pl(pe,s),pe.length-1)}var Hr=s=>{try{s()}catch(p){lt(p)}};function Rl(){var s=Q,p={};for(let[y,S]of Object.entries(s))p[y]=typeof S==\"function\"?function(){Lr.push(y);try{return S.apply(null,arguments)}finally{Oe||(Lr.pop(),ht&&kt===1&&Lr.length===0&&(kt=0,dt+=1,Hr(ja),typeof Fibers<\"u\"&&Fibers.Pb()))}}:S;return p}var kt=0,ht=null,Da=0,Lr=[],za={},Ma={},Bl=0,Bn=null,Dl=[];function zl(){return new Promise((s,p)=>{Bn={resolve:s,reject:p}})}function Ml(){var s=Dn(65548),p=s+12;o()[s>>>2>>>0]=p,o()[s+4>>>2>>>0]=p+65536,p=Lr[0];var y=za[p];return y===void 0&&(y=Bl++,za[p]=y,Ma[y]=p),p=y,n()[s+8>>>2>>>0]=p,s}function Ul(){var s=n()[ht+8>>>2>>>0];return s=Q[Ma[s]],--dt,s()}function Nl(s){if(!Oe){if(kt===0){var p=!1,y=!1;s((S=0)=>{if(!Oe&&(Da=S,p=!0,y)){kt=2,Hr(()=>Ka(ht)),typeof Browser<\"u\"&&Browser.ib.vb&&Browser.ib.resume(),S=!1;try{var O=Ul()}catch(oe){O=oe,S=!0}var D=!1;if(!ht){var V=Bn;V&&(Bn=null,(S?V.reject:V.resolve)(O),D=!0)}if(S&&!D)throw O}}),y=!0,p||(kt=1,ht=Ml(),typeof Browser<\"u\"&&Browser.ib.vb&&Browser.ib.pause(),Hr(()=>qa(ht)))}else kt===2?(kt=0,Hr(Ya),Na(ht),ht=null,Dl.forEach(S=>{if(!Oe)try{S(),Wr()}catch(O){Tt(O)}})):lt(`invalid state: ${kt}`);return Da}}function Wl(s){return Nl(p=>{s().then(p)})}le.hb();var Vl=[Pr,sr,Dr,Mr,Ur,dr,Yt,cr,pr,mr,fr,hr,gr,yr,br,wr,B,H,Ie,k,ue,_e,ft,ka],Hl={r:function(s,p,y){return Wl(async()=>{await i.xb(s,p,y)})},b:function(s,p,y){throw s>>>=0,new Rr(s).hb(p>>>0,y>>>0),Br=s,ur++,Br},N:function(s){Wa(s>>>0,!_,1,!w,131072,!1),le.ob()},l:function(s){s>>>=0,$?postMessage({cmd:\"cleanupThread\",thread:s}):le.mb(le.Qa[s])},J:zr,i:Mr,T:Ur,F:dr,H:Yt,U:cr,R:pr,L:mr,Q:fr,p:hr,G:gr,D:yr,S:br,E:wr,q:()=>1,B:function(s,p){s>>>=0,s==p>>>0?setTimeout(()=>zt()):$?postMessage({targetThread:s,cmd:\"checkMailbox\"}):(s=le.Qa[s])&&s.postMessage({cmd:\"checkMailbox\"})},K:function(s,p,y,S){p>>>=0,d.length=y,S=S>>>0>>>3;for(var O=0;O>>0];return s=0>s?Ft[-s-1]:Vl[s],le.ub=p,p=s.apply(null,d),le.ub=0,p},M:Ot,W:function(s){I&&le.Qa[s>>>0].ref()},u:function(s,p,y){s=p+2097152>>>0<4194305-!!s?(s>>>0)+4294967296*p:NaN,y>>>=0,s=new Date(1e3*s),n()[y>>>2>>>0]=s.getUTCSeconds(),n()[y+4>>>2>>>0]=s.getUTCMinutes(),n()[y+8>>>2>>>0]=s.getUTCHours(),n()[y+12>>>2>>>0]=s.getUTCDate(),n()[y+16>>>2>>>0]=s.getUTCMonth(),n()[y+20>>>2>>>0]=s.getUTCFullYear()-1900,n()[y+24>>>2>>>0]=s.getUTCDay(),s=(s.getTime()-Date.UTC(s.getUTCFullYear(),0,1,0,0,0,0))/864e5|0,n()[y+28>>>2>>>0]=s},v:function(s,p,y){s=p+2097152>>>0<4194305-!!s?(s>>>0)+4294967296*p:NaN,y>>>=0,s=new Date(1e3*s),n()[y>>>2>>>0]=s.getSeconds(),n()[y+4>>>2>>>0]=s.getMinutes(),n()[y+8>>>2>>>0]=s.getHours(),n()[y+12>>>2>>>0]=s.getDate(),n()[y+16>>>2>>>0]=s.getMonth(),n()[y+20>>>2>>>0]=s.getFullYear()-1900,n()[y+24>>>2>>>0]=s.getDay(),p=(g(s.getFullYear())?v:C)[s.getMonth()]+s.getDate()-1|0,n()[y+28>>>2>>>0]=p,n()[y+36>>>2>>>0]=-(60*s.getTimezoneOffset()),p=new Date(s.getFullYear(),6,1).getTimezoneOffset();var S=new Date(s.getFullYear(),0,1).getTimezoneOffset();s=(p!=S&&s.getTimezoneOffset()==Math.min(S,p))|0,n()[y+32>>>2>>>0]=s},w:function(s){s>>>=0;var p=new Date(n()[s+20>>>2>>>0]+1900,n()[s+16>>>2>>>0],n()[s+12>>>2>>>0],n()[s+8>>>2>>>0],n()[s+4>>>2>>>0],n()[s>>>2>>>0],0),y=n()[s+32>>>2>>>0],S=p.getTimezoneOffset(),O=new Date(p.getFullYear(),6,1).getTimezoneOffset(),D=new Date(p.getFullYear(),0,1).getTimezoneOffset(),V=Math.min(D,O);return 0>y?n()[s+32>>>2>>>0]=+(O!=D&&V==S):0>>2>>>0]=p.getDay(),y=(g(p.getFullYear())?v:C)[p.getMonth()]+p.getDate()-1|0,n()[s+28>>>2>>>0]=y,n()[s>>>2>>>0]=p.getSeconds(),n()[s+4>>>2>>>0]=p.getMinutes(),n()[s+8>>>2>>>0]=p.getHours(),n()[s+12>>>2>>>0]=p.getDate(),n()[s+16>>>2>>>0]=p.getMonth(),n()[s+20>>>2>>>0]=p.getYear(),s=p.getTime(),isNaN(s)?(n()[Ua()>>>2>>>0]=61,s=-1):s/=1e3,La((St=s,1<=+Math.abs(St)?0>>0:~~+Math.ceil((St-+(~~St>>>0))/4294967296)>>>0:0)),s>>>0},s:B,t:H,A:function(s,p,y){function S(ae){return(ae=ae.toTimeString().match(/\\(([A-Za-z ]+)\\)$/))?ae[1]:\"GMT\"}s>>>=0,p>>>=0,y>>>=0;var O=new Date().getFullYear(),D=new Date(O,0,1),V=new Date(O,6,1);O=D.getTimezoneOffset();var oe=V.getTimezoneOffset(),ne=Math.max(O,oe);o()[s>>>2>>>0]=60*ne,n()[p>>>2>>>0]=+(O!=oe),s=S(D),p=S(V),s=j(s),p=j(p),oe>>2>>>0]=s,o()[y+4>>>2>>>0]=p):(o()[y>>>2>>>0]=p,o()[y+4>>>2>>>0]=s)},d:()=>{lt(\"\")},c:function(s,p,y){return s>>>=0,p=J(p>>>0,y>>>0),Ft[s].apply(null,p)},k:function(s,p,y){return s>>>=0,p=J(p>>>0,y>>>0),Ft[s].apply(null,p)},m:()=>{},j:()=>Date.now(),V:()=>{throw dt+=1,\"unwind\"},C:function(){return 4294901760},f:()=>performance.timeOrigin+performance.now(),g:()=>I?(ki(),Ut(Oi)).cpus().length:navigator.hardwareConcurrency,y:function(s){s>>>=0;var p=a().length;if(s<=p||4294901760=y;y*=2){var S=p*(1+.2/y);S=Math.min(S,s+100663296);var O=Math;S=Math.max(s,S);e:{O=(O.min.call(O,4294901760,S+(65536-S%65536)%65536)-X.buffer.byteLength+65535)/65536;try{X.grow(O),Ge();var D=1;break e}catch{}D=void 0}if(D)return!0}return!1},O:Ie,P:k,I:Kt,h:ue,o:_e,x:ft,n:ka,a:X||i.wasmMemory,z:Ba,e:function(s,p,y,S){return Ba(s>>>0,p>>>0,y>>>0,S>>>0)}},Q=function(){function s(y,S){return Q=y.exports,Q=Rl(),Q=Ll(),le.pb.push(Q.Da),be.unshift(Q.X),Z=S,Ct(),Q}var p={a:Hl};if(Ne++,i.instantiateWasm)try{return i.instantiateWasm(p,s)}catch(y){K(`Module.instantiateWasm callback failed with error: ${y}`),m(y)}return Et(p,function(y){s(y.instance,y.module)}).catch(m),{}}();i._OrtInit=(s,p)=>(i._OrtInit=Q.Y)(s,p),i._OrtGetLastError=(s,p)=>(i._OrtGetLastError=Q.Z)(s,p),i._OrtCreateSessionOptions=(s,p,y,S,O,D,V,oe,ne,ae)=>(i._OrtCreateSessionOptions=Q._)(s,p,y,S,O,D,V,oe,ne,ae),i._OrtAppendExecutionProvider=(s,p)=>(i._OrtAppendExecutionProvider=Q.$)(s,p),i._OrtAddFreeDimensionOverride=(s,p,y)=>(i._OrtAddFreeDimensionOverride=Q.aa)(s,p,y),i._OrtAddSessionConfigEntry=(s,p,y)=>(i._OrtAddSessionConfigEntry=Q.ba)(s,p,y),i._OrtReleaseSessionOptions=s=>(i._OrtReleaseSessionOptions=Q.ca)(s),i._OrtCreateSession=(s,p,y)=>(i._OrtCreateSession=Q.da)(s,p,y),i._OrtReleaseSession=s=>(i._OrtReleaseSession=Q.ea)(s),i._OrtGetInputOutputCount=(s,p,y)=>(i._OrtGetInputOutputCount=Q.fa)(s,p,y),i._OrtGetInputName=(s,p)=>(i._OrtGetInputName=Q.ga)(s,p),i._OrtGetOutputName=(s,p)=>(i._OrtGetOutputName=Q.ha)(s,p),i._OrtFree=s=>(i._OrtFree=Q.ia)(s),i._OrtCreateTensor=(s,p,y,S,O,D)=>(i._OrtCreateTensor=Q.ja)(s,p,y,S,O,D),i._OrtGetTensorData=(s,p,y,S,O)=>(i._OrtGetTensorData=Q.ka)(s,p,y,S,O),i._OrtReleaseTensor=s=>(i._OrtReleaseTensor=Q.la)(s),i._OrtCreateRunOptions=(s,p,y,S)=>(i._OrtCreateRunOptions=Q.ma)(s,p,y,S),i._OrtAddRunConfigEntry=(s,p,y)=>(i._OrtAddRunConfigEntry=Q.na)(s,p,y),i._OrtReleaseRunOptions=s=>(i._OrtReleaseRunOptions=Q.oa)(s),i._OrtCreateBinding=s=>(i._OrtCreateBinding=Q.pa)(s),i._OrtBindInput=(s,p,y)=>(i._OrtBindInput=Q.qa)(s,p,y),i._OrtBindOutput=(s,p,y,S)=>(i._OrtBindOutput=Q.ra)(s,p,y,S),i._OrtClearBoundOutputs=s=>(i._OrtClearBoundOutputs=Q.sa)(s),i._OrtReleaseBinding=s=>(i._OrtReleaseBinding=Q.ta)(s),i._OrtRunWithBinding=(s,p,y,S,O)=>(i._OrtRunWithBinding=Q.ua)(s,p,y,S,O),i._OrtRun=(s,p,y,S,O,D,V,oe)=>(i._OrtRun=Q.va)(s,p,y,S,O,D,V,oe),i._OrtEndProfiling=s=>(i._OrtEndProfiling=Q.wa)(s),i._JsepOutput=(s,p,y)=>(i._JsepOutput=Q.xa)(s,p,y),i._JsepGetNodeName=s=>(i._JsepGetNodeName=Q.ya)(s);var Ua=()=>(Ua=Q.za)(),Gr=i._pthread_self=()=>(Gr=i._pthread_self=Q.Aa)(),Dn=i._malloc=s=>(Dn=i._malloc=Q.Ba)(s),Na=i._free=s=>(Na=i._free=Q.Ca)(s);i.__emscripten_tls_init=()=>(i.__emscripten_tls_init=Q.Da)();var Wa=i.__emscripten_thread_init=(s,p,y,S,O,D)=>(Wa=i.__emscripten_thread_init=Q.Fa)(s,p,y,S,O,D);i.__emscripten_thread_crashed=()=>(i.__emscripten_thread_crashed=Q.Ga)();var Va=(s,p,y,S)=>(Va=Q.Ha)(s,p,y,S),zn=s=>(zn=Q.Ia)(s),Mn=i.__emscripten_thread_exit=s=>(Mn=i.__emscripten_thread_exit=Q.Ja)(s),Ha=()=>(Ha=Q.Ka)(),La=s=>(La=Q.La)(s),Ga=(s,p)=>(Ga=Q.Ma)(s,p),Un=()=>(Un=Q.Na)(),Fr=s=>(Fr=Q.Oa)(s),Nn=s=>(Nn=Q.Pa)(s),Fa=i.dynCall_ii=(s,p)=>(Fa=i.dynCall_ii=Q.Ra)(s,p),qa=s=>(qa=Q.Sa)(s),ja=()=>(ja=Q.Ta)(),Ka=s=>(Ka=Q.Ua)(s),Ya=()=>(Ya=Q.Va)();i.___start_em_js=944472,i.___stop_em_js=944633;function Ll(){var s=Q;s=Object.assign({},s);var p=S=>()=>S()>>>0,y=S=>O=>S(O)>>>0;return s.za=p(s.za),s.Aa=p(s.Aa),s.Ba=y(s.Ba),s.emscripten_main_runtime_thread_id=p(s.emscripten_main_runtime_thread_id),s.Na=p(s.Na),s.Pa=y(s.Pa),s}i.wasmMemory=X,i.stackAlloc=Nn,i.stackSave=Un,i.stackRestore=Fr,i.keepRuntimeAlive=()=>0Pi)});var Di=Zt((Hm,td)=>{td.exports='\"use strict\";var Module={},ENVIRONMENT_IS_NODE=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\";if(ENVIRONMENT_IS_NODE){var nodeWorkerThreads=require(\"worker_threads\"),parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",e=>onmessage({data:e}));var fs=require(\"fs\"),vm=require(\"vm\");Object.assign(global,{self:global,require,Module,location:{href:__filename},Worker:nodeWorkerThreads.Worker,importScripts:e=>vm.runInThisContext(fs.readFileSync(e,\"utf8\"),{filename:e}),postMessage:e=>parentPort.postMessage(e),performance:global.performance||{now:Date.now}})}var initializedJS=!1;function threadPrintErr(){var e=Array.prototype.slice.call(arguments).join(\" \");if(ENVIRONMENT_IS_NODE){fs.writeSync(2,e+`\\n`);return}console.error(e)}function threadAlert(){var e=Array.prototype.slice.call(arguments).join(\" \");postMessage({cmd:\"alert\",text:e,threadId:Module._pthread_self()})}var err=threadPrintErr;self.alert=threadAlert,Module.instantiateWasm=(e,t)=>{var a=Module.wasmModule;Module.wasmModule=null;var r=new WebAssembly.Instance(a,e);return t(r)},self.onunhandledrejection=e=>{throw e.reason||e};function handleMessage(e){try{if(e.data.cmd===\"load\"){let a=[];self.onmessage=r=>a.push(r),self.startWorker=r=>{Module=r,postMessage({cmd:\"loaded\"});for(let s of a)handleMessage(s);self.onmessage=handleMessage},Module.wasmModule=e.data.wasmModule;for(const r of e.data.handlers)Module[r]=(...s)=>{postMessage({cmd:\"callHandler\",handler:r,args:s})};if(Module.wasmMemory=e.data.wasmMemory,Module.buffer=Module.wasmMemory.buffer,Module.ENVIRONMENT_IS_PTHREAD=!0,typeof e.data.urlOrBlob==\"string\")importScripts(e.data.urlOrBlob);else{var t=URL.createObjectURL(e.data.urlOrBlob);importScripts(t),URL.revokeObjectURL(t)}ortWasmThreaded(Module)}else if(e.data.cmd===\"run\"){Module.__emscripten_thread_init(e.data.pthread_ptr,0,0,1),Module.__emscripten_thread_mailbox_await(e.data.pthread_ptr),Module.establishStackSpace(),Module.PThread.receiveObjectTransfer(e.data),Module.PThread.threadInitTLS(),initializedJS||(initializedJS=!0);try{Module.invokeEntryPoint(e.data.start_routine,e.data.arg)}catch(a){if(a!=\"unwind\")throw a}}else e.data.cmd===\"cancel\"?Module._pthread_self()&&Module.__emscripten_thread_exit(-1):e.data.target===\"setimmediate\"||(e.data.cmd===\"checkMailbox\"?initializedJS&&Module.checkMailbox():e.data.cmd&&(err(`worker.js received unknown command ${e.data.cmd}`),err(e.data)))}catch(a){throw Module.__emscripten_thread_crashed?.(),a}}self.onmessage=handleMessage;\\n'});var Mi,rd,Xn,Qn,rn,zi,nd,ad,id,Ui,Ve,Jt=F(()=>{\"use strict\";Mi=Ai();rd=Bi(),Qn=!1,rn=!1,zi=!1,nd=e=>{if(e===1)return!1;if(typeof SharedArrayBuffer>\"u\")return typeof self<\"u\"&&!self.crossOriginIsolated&&console.warn(\"env.wasm.numThreads is set to \"+e+\", but this will not work unless you enable crossOriginIsolated mode. See https://web.dev/cross-origin-isolation-guide/ for more info.\"),!1;typeof process<\"u\"&&process.versions&&process.versions.node&&console.warn(\"env.wasm.numThreads is set to \"+e+\", however, currently onnxruntime-web does not support multi-threads in Node.js. Please consider using onnxruntime-node for performance critical scenarios.\");try{return typeof MessageChannel<\"u\"&&new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch{return!1}},ad=()=>{try{return WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,30,1,28,0,65,0,253,15,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,186,1,26,11]))}catch{return!1}},id=(e,t)=>e?t?\"ort-wasm-simd-threaded.wasm\":\"ort-wasm-simd.wasm\":t?\"ort-wasm-threaded.wasm\":\"ort-wasm.wasm\",Ui=async e=>{if(Qn)return Promise.resolve();if(rn)throw new Error(\"multiple calls to 'initializeWebAssembly()' detected.\");if(zi)throw new Error(\"previous call to 'initializeWebAssembly()' failed.\");rn=!0;let t=e.initTimeout,r=e.numThreads,a=e.simd,n=nd(r),o=a&&ad(),u=e.wasmPaths,l=typeof u==\"string\"?u:void 0,i=id(o,n),c=typeof u==\"object\"?u[i]:void 0,m=!1,f=[];if(t>0&&f.push(new Promise(h=>{setTimeout(()=>{m=!0,h()},t)})),f.push(new Promise((h,b)=>{let w=n?rd:Mi,_={locateFile:(I,$)=>{if(n&&I.endsWith(\".worker.js\")&&typeof Blob<\"u\")return URL.createObjectURL(new Blob([Di()],{type:\"text/javascript\"}));if(I.endsWith(\".wasm\")){if(c)return c;let x=l??$;return i===\"ort-wasm-simd.wasm\"?x+\"ort-wasm-simd.jsep.wasm\":i===\"ort-wasm-simd-threaded.wasm\"?x+\"ort-wasm-simd-threaded.jsep.wasm\":x+i}return $+I}};if(n)if(_.numThreads=r,typeof Blob>\"u\")_.mainScriptUrlOrBlob=(void 0)(__dirname,\"ort-wasm-threaded.js\");else{let I=`var ortWasmThreaded=${w.toString()};`;_.mainScriptUrlOrBlob=new Blob([I],{type:\"text/javascript\"})}w(_).then(I=>{rn=!1,Qn=!0,Xn=I,h()},I=>{rn=!1,zi=!0,b(I)})})),await Promise.race(f),m)throw new Error(`WebAssembly backend initializing failed due to timeout: ${t}ms`)},Ve=()=>{if(Qn&&Xn)return Xn;throw new Error(\"WebAssembly is not initialized yet.\")}});var Le,$r,Re,nn=F(()=>{\"use strict\";Jt();Le=(e,t)=>{let r=Ve(),a=r.lengthBytesUTF8(e)+1,n=r._malloc(a);return r.stringToUTF8(e,n,a),t.push(n),n},$r=(e,t,r,a)=>{if(typeof e==\"object\"&&e!==null){if(r.has(e))throw new Error(\"Circular reference in options\");r.add(e)}Object.entries(e).forEach(([n,o])=>{let u=t?t+n:n;if(typeof o==\"object\")$r(o,u+\".\",r,a);else if(typeof o==\"string\"||typeof o==\"number\")a(u,o.toString());else if(typeof o==\"boolean\")a(u,o?\"1\":\"0\");else throw new Error(`Can't handle extra config type: ${typeof o}`)})},Re=e=>{let t=Ve(),r=t.stackSave();try{let a=t.stackAlloc(8);t._OrtGetLastError(a,a+4);let n=t.HEAP32[a/4],o=t.HEAPU32[a/4+1],u=o?t.UTF8ToString(o):\"\";throw new Error(`${e} ERROR_CODE: ${n}, ERROR_MESSAGE: ${u}`)}finally{t.stackRestore(r)}}});var Ni,Wi=F(()=>{\"use strict\";Jt();nn();Ni=e=>{let t=Ve(),r=0,a=[],n=e||{};try{if(e?.logSeverityLevel===void 0)n.logSeverityLevel=2;else if(typeof e.logSeverityLevel!=\"number\"||!Number.isInteger(e.logSeverityLevel)||e.logSeverityLevel<0||e.logSeverityLevel>4)throw new Error(`log serverity level is not valid: ${e.logSeverityLevel}`);if(e?.logVerbosityLevel===void 0)n.logVerbosityLevel=0;else if(typeof e.logVerbosityLevel!=\"number\"||!Number.isInteger(e.logVerbosityLevel))throw new Error(`log verbosity level is not valid: ${e.logVerbosityLevel}`);e?.terminate===void 0&&(n.terminate=!1);let o=0;return e?.tag!==void 0&&(o=Le(e.tag,a)),r=t._OrtCreateRunOptions(n.logSeverityLevel,n.logVerbosityLevel,!!n.terminate,o),r===0&&Re(\"Can't create run options.\"),e?.extra!==void 0&&$r(e.extra,\"\",new WeakSet,(u,l)=>{let i=Le(u,a),c=Le(l,a);t._OrtAddRunConfigEntry(r,i,c)!==0&&Re(`Can't set a run config entry: ${u} - ${l}.`)}),[r,a]}catch(o){throw r!==0&&t._OrtReleaseRunOptions(r),a.forEach(u=>t._free(u)),o}}});var od,sd,ud,ld,Vi,Hi=F(()=>{\"use strict\";Jt();nn();od=e=>{switch(e){case\"disabled\":return 0;case\"basic\":return 1;case\"extended\":return 2;case\"all\":return 99;default:throw new Error(`unsupported graph optimization level: ${e}`)}},sd=e=>{switch(e){case\"sequential\":return 0;case\"parallel\":return 1;default:throw new Error(`unsupported execution mode: ${e}`)}},ud=e=>{e.extra||(e.extra={}),e.extra.session||(e.extra.session={});let t=e.extra.session;t.use_ort_model_bytes_directly||(t.use_ort_model_bytes_directly=\"1\"),e.executionProviders&&e.executionProviders.some(r=>(typeof r==\"string\"?r:r.name)===\"webgpu\")&&(e.enableMemPattern=!1)},ld=(e,t,r)=>{for(let a of t){let n=typeof a==\"string\"?a:a.name;switch(n){case\"webnn\":if(n=\"WEBNN\",typeof a!=\"string\"){let u=a;if(u?.deviceType){let l=Le(\"deviceType\",r),i=Le(u.deviceType,r);Ve()._OrtAddSessionConfigEntry(e,l,i)!==0&&Re(`Can't set a session config entry: 'deviceType' - ${u.deviceType}.`)}if(u?.numThreads){let l=u.numThreads;(typeof l!=\"number\"||!Number.isInteger(l)||l<0)&&(l=0);let i=Le(\"numThreads\",r),c=Le(l.toString(),r);Ve()._OrtAddSessionConfigEntry(e,i,c)!==0&&Re(`Can't set a session config entry: 'numThreads' - ${u.numThreads}.`)}if(u?.powerPreference){let l=Le(\"powerPreference\",r),i=Le(u.powerPreference,r);Ve()._OrtAddSessionConfigEntry(e,l,i)!==0&&Re(`Can't set a session config entry: 'powerPreference' - ${u.powerPreference}.`)}}break;case\"webgpu\":if(n=\"JS\",typeof a!=\"string\"){let u=a;if(u?.preferredLayout){if(u.preferredLayout!==\"NCHW\"&&u.preferredLayout!==\"NHWC\")throw new Error(`preferredLayout must be either 'NCHW' or 'NHWC': ${u.preferredLayout}`);let l=Le(\"preferredLayout\",r),i=Le(u.preferredLayout,r);Ve()._OrtAddSessionConfigEntry(e,l,i)!==0&&Re(`Can't set a session config entry: 'preferredLayout' - ${u.preferredLayout}.`)}}break;case\"wasm\":case\"cpu\":continue;default:throw new Error(`not supported execution provider: ${n}`)}let o=Le(n,r);Ve()._OrtAppendExecutionProvider(e,o)!==0&&Re(`Can't append execution provider: ${n}.`)}},Vi=e=>{let t=Ve(),r=0,a=[],n=e||{};ud(n);try{let o=od(n.graphOptimizationLevel??\"all\"),u=sd(n.executionMode??\"sequential\"),l=typeof n.logId==\"string\"?Le(n.logId,a):0,i=n.logSeverityLevel??2;if(!Number.isInteger(i)||i<0||i>4)throw new Error(`log serverity level is not valid: ${i}`);let c=n.logVerbosityLevel??0;if(!Number.isInteger(c)||c<0||c>4)throw new Error(`log verbosity level is not valid: ${c}`);let m=typeof n.optimizedModelFilePath==\"string\"?Le(n.optimizedModelFilePath,a):0;if(r=t._OrtCreateSessionOptions(o,!!n.enableCpuMemArena,!!n.enableMemPattern,u,!!n.enableProfiling,0,l,i,c,m),r===0&&Re(\"Can't create session options.\"),n.executionProviders&&ld(r,n.executionProviders,a),n.freeDimensionOverrides)for(let[f,h]of Object.entries(n.freeDimensionOverrides)){if(typeof f!=\"string\")throw new Error(`free dimension override name must be a string: ${f}`);if(typeof h!=\"number\"||!Number.isInteger(h)||h<0)throw new Error(`free dimension override value must be a non-negative integer: ${h}`);let b=Le(f,a);t._OrtAddFreeDimensionOverride(r,b,h)!==0&&Re(`Can't set a free dimension override: ${f} - ${h}.`)}return n.extra!==void 0&&$r(n.extra,\"\",new WeakSet,(f,h)=>{let b=Le(f,a),w=Le(h,a);t._OrtAddSessionConfigEntry(r,b,w)!==0&&Re(`Can't set a session config entry: ${f} - ${h}.`)}),[r,a]}catch(o){throw r!==0&&t._OrtReleaseSessionOptions(r),a.forEach(u=>t._free(u)),o}}});var Jn,tt,_r,an,xr,on,ea,Ue=F(()=>{\"use strict\";Jn=e=>{switch(e){case\"int8\":return 3;case\"uint8\":return 2;case\"bool\":return 9;case\"int16\":return 5;case\"uint16\":return 4;case\"int32\":return 6;case\"uint32\":return 12;case\"float16\":return 10;case\"float32\":return 1;case\"float64\":return 11;case\"string\":return 8;case\"int64\":return 7;case\"uint64\":return 13;default:throw new Error(`unsupported data type: ${e}`)}},tt=e=>{switch(e){case 3:return\"int8\";case 2:return\"uint8\";case 9:return\"bool\";case 5:return\"int16\";case 4:return\"uint16\";case 6:return\"int32\";case 12:return\"uint32\";case 10:return\"float16\";case 1:return\"float32\";case 11:return\"float64\";case 8:return\"string\";case 7:return\"int64\";case 13:return\"uint64\";default:throw new Error(`unsupported data type: ${e}`)}},_r=e=>[void 0,4,1,1,2,2,4,8,void 0,1,2,8,4,8,void 0,void 0,void 0][e],an=e=>{switch(e){case\"float16\":return Uint16Array;case\"float32\":return Float32Array;case\"uint8\":return Uint8Array;case\"int8\":return Int8Array;case\"uint16\":return Uint16Array;case\"int16\":return Int16Array;case\"int32\":return Int32Array;case\"bool\":return Uint8Array;case\"float64\":return Float64Array;case\"uint32\":return Uint32Array;case\"int64\":return BigInt64Array;case\"uint64\":return BigUint64Array;default:throw new Error(`unsupported type: ${e}`)}},xr=e=>{switch(e){case\"verbose\":return 0;case\"info\":return 1;case\"warning\":return 2;case\"error\":return 3;case\"fatal\":return 4;default:throw new Error(`unsupported logging level: ${e}`)}},on=e=>e===\"float32\"||e===\"int32\"||e===\"int64\"||e===\"bool\"||e===\"float16\"||e===\"uint32\",ea=e=>{switch(e){case\"none\":return 0;case\"cpu\":return 1;case\"cpu-pinned\":return 2;case\"texture\":return 3;case\"gpu-buffer\":return 4;default:throw new Error(`unsupported data location: ${e}`)}}});var Sr,ta=F(()=>{\"use strict\";Sr=async e=>{if(typeof e==\"string\")if(typeof process<\"u\"&&process.versions&&process.versions.node)try{return new Uint8Array(await(void 0)(e))}catch(t){if(t.code===\"ERR_FS_FILE_TOO_LARGE\"){let r=(void 0)(e),a=[];for await(let n of r)a.push(n);return new Uint8Array(Buffer.concat(a))}throw t}else{let t=await fetch(e);if(!t.ok)throw new Error(`failed to load external data file: ${e}`);let r=t.headers.get(\"Content-Length\"),a=r?parseInt(r,10):0;if(a<1073741824)return new Uint8Array(await t.arrayBuffer());{if(!t.body)throw new Error(`failed to load external data file: ${e}, no response body.`);let n=t.body.getReader(),o;try{o=new ArrayBuffer(a)}catch(l){if(l instanceof RangeError){let i=Math.ceil(a/65536);o=new WebAssembly.Memory({initial:i,maximum:i}).buffer}else throw l}let u=0;for(;;){let{done:l,value:i}=await n.read();if(l)break;let c=i.byteLength;new Uint8Array(o,u,c).set(i),u+=c}return new Uint8Array(o,0,a)}}else return e instanceof Blob?new Uint8Array(await e.arrayBuffer()):e instanceof Uint8Array?e:new Uint8Array(e)}});var dd,cd,Li,Gi,Fi,pd,De,Pt=F(()=>{\"use strict\";Ue();dd=[\"V\",\"I\",\"W\",\"E\",\"F\"],cd=(e,t)=>{console.log(`[${dd[e]},${new Date().toISOString()}]${t}`)},Fi=(e,t)=>{Li=e,Gi=t},pd=(e,t)=>{let r=xr(e),a=xr(Li);r>=a&&cd(r,typeof t==\"function\"?t():t)},De=(...e)=>{Gi&&pd(...e)}});var qi,ji=F(()=>{\"use strict\";Ue();qi=(e,t)=>new(an(t))(e)});var sn=F(()=>{\"use strict\"});var un,md,Ki,na,ra,Zi,Xi=F(()=>{\"use strict\";Pt();sn();un=e=>Math.ceil(e/16)*16,md=1,Ki=()=>md++,na=async(e,t,r,a)=>{let n=un(r),o=e.device.createBuffer({size:n,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ});try{let u=e.getCommandEncoder();e.endComputePass(),u.copyBufferToBuffer(t,0,o,0,n),e.flush(),await o.mapAsync(GPUMapMode.READ);let l=o.getMappedRange();if(a){let i=a();return i.set(new Uint8Array(l,0,r)),i}else return new Uint8Array(l.slice(0,r))}finally{o.destroy()}},ra=class{constructor(t){this.backend=t;this.storageCache=new Map,this.freeBuffers=new Map,this.freeUniformBuffers=new Map,this.buffersForUploadingPending=[],this.buffersPending=[],this.externalBuffers=new Map}upload(t,r){let a=r.buffer,n=r.byteOffset,o=r.byteLength,u=un(o),l=this.storageCache.get(t);if(!l)throw new Error(\"gpu data for uploading does not exist\");if(l.originalSize!==o)throw new Error(`inconsistent data size. gpu data size=${l.originalSize}, data size=${o}`);let i=this.backend.device.createBuffer({mappedAtCreation:!0,size:u,usage:GPUBufferUsage.MAP_WRITE|GPUBufferUsage.COPY_SRC}),c=i.getMappedRange();new Uint8Array(c).set(new Uint8Array(a,n,o)),i.unmap();let m=this.backend.getCommandEncoder();this.backend.endComputePass(),m.copyBufferToBuffer(i,0,l.gpuData.buffer,0,u),De(\"verbose\",()=>`[WebGPU] GpuDataManager.upload(id=${t})`),this.buffersForUploadingPending.push(i)}memcpy(t,r){let a=this.storageCache.get(t);if(!a)throw new Error(\"source gpu data for memcpy does not exist\");let n=this.storageCache.get(r);if(!n)throw new Error(\"destination gpu data for memcpy does not exist\");if(a.originalSize!==n.originalSize)throw new Error(\"inconsistent source and destination gpu data size\");let o=un(a.originalSize),u=this.backend.getCommandEncoder();this.backend.endComputePass(),u.copyBufferToBuffer(a.gpuData.buffer,0,n.gpuData.buffer,0,o)}registerExternalBuffer(t,r,a){let n;if(a){if(n=this.externalBuffers.get(a),n===void 0)throw new Error(\"previous buffer is not registered\");if(t===a)return De(\"verbose\",()=>`[WebGPU] GpuDataManager.registerExternalBuffer(size=${r}) => id=${n}, buffer is the same, skip.`),n;this.externalBuffers.delete(a)}else n=Ki();return this.storageCache.set(n,{gpuData:{id:n,type:0,buffer:t},originalSize:r}),this.externalBuffers.set(t,n),De(\"verbose\",()=>`[WebGPU] GpuDataManager.registerExternalBuffer(size=${r}) => id=${n}, registered.`),n}unregisterExternalBuffer(t){let r=this.externalBuffers.get(t);r!==void 0&&(this.storageCache.delete(r),this.externalBuffers.delete(t),De(\"verbose\",()=>`[WebGPU] GpuDataManager.unregisterExternalBuffer() => id=${r}`))}create(t,r=GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST){let a=un(t),n,o=(r&GPUBufferUsage.STORAGE)===GPUBufferUsage.STORAGE,u=(r&GPUBufferUsage.UNIFORM)===GPUBufferUsage.UNIFORM;if(o||u){let i=o?this.freeBuffers:this.freeUniformBuffers,c=i.get(a);c||(c=[],i.set(a,c)),c.length>0?n=c.pop():n=this.backend.device.createBuffer({size:a,usage:r})}else n=this.backend.device.createBuffer({size:a,usage:r});let l={id:Ki(),type:0,buffer:n};return this.storageCache.set(l.id,{gpuData:l,originalSize:t}),De(\"verbose\",()=>`[WebGPU] GpuDataManager.create(size=${t}) => id=${l.id}`),l}get(t){return this.storageCache.get(t)?.gpuData}release(t){let r=this.storageCache.get(t);if(!r)throw new Error(\"releasing data does not exist\");return De(\"verbose\",()=>`[WebGPU] GpuDataManager.release(id=${t}), gpuDataId=${r.gpuData.id}`),this.storageCache.delete(t),this.buffersPending.push(r.gpuData.buffer),r.originalSize}async download(t,r){let a=this.storageCache.get(t);if(!a)throw new Error(\"data does not exist\");await na(this.backend,a.gpuData.buffer,a.originalSize,r)}refreshPendingBuffers(){for(let t of this.buffersForUploadingPending)t.destroy();this.buffersForUploadingPending=[];for(let t of this.buffersPending)(t.usage&GPUBufferUsage.STORAGE)===GPUBufferUsage.STORAGE?this.freeBuffers.get(t.size).push(t):(t.usage&GPUBufferUsage.UNIFORM)===GPUBufferUsage.UNIFORM?this.freeUniformBuffers.get(t.size).push(t):t.destroy();this.buffersPending=[]}dispose(){this.freeBuffers.forEach(t=>{t.forEach(r=>{r.destroy()})}),this.freeUniformBuffers.forEach(t=>{t.forEach(r=>{r.destroy()})}),this.storageCache.forEach(t=>{t.gpuData.buffer.destroy()}),this.storageCache=new Map,this.freeBuffers=new Map,this.freeUniformBuffers=new Map}},Zi=(...e)=>new ra(...e)});var aa,ge,je=F(()=>{\"use strict\";aa=class{constructor(t){Object.assign(this,t)}get cacheKey(){return this.key||(this.key=Object.getOwnPropertyNames(this).sort().map(t=>`${this[t]}`).join(\";\")),this.key}},ge=e=>new aa(e)});var ia,gt,U,Vt,ln,dn,cn,$e=F(()=>{\"use strict\";ia=class{static calcMatMulShape(t,r){return t[1]!==r[0]?void 0:[t[0],r[1]]}},gt=class{static calcShape(t,r,a=!1){let n=t.length,o=r.length;if(n===0)return r;if(o===0)return t;let u=Math.max(t.length,r.length),l=new Array(u);if(a){if(n<2||o<2)return;let i=ia.calcMatMulShape([t[n-2],t[n-1]],[r[o-2],r[o-1]]);if(i===void 0)return;[l[u-2],l[u-1]]=i}for(let i=a?3:1;i<=u;i++){let c=n-i<0?1:t[n-i],m=o-i<0?1:r[o-i];if(c!==m&&c>1&&m>1)return;l[u-i]=Math.max(c,m)}return l}static isValidBroadcast(t,r){let a=t.length,n=r.length;if(a>n)return!1;for(let o=1;o<=a;o++)if(t[a-o]!==1&&t[a-o]!==r[n-o])return!1;return!0}},U=class e{static size(t){return e.getSizeFromDimensionRange(t,0,t.length)}static sizeFromDimension(t,r){if(r<0||r>t.length)throw new Error(`invalid dimension of ${r} for sizeFromDimension as Tensor has ${t.length} dimensions.`);return e.getSizeFromDimensionRange(t,r,t.length)}static sizeToDimension(t,r){if(r<0||r>t.length)throw new Error(`invalid dimension of ${r} for sizeToDimension as Tensor has ${t.length} dimensions.`);return e.getSizeFromDimensionRange(t,0,r)}static getSizeFromDimensionRange(t,r,a){let n=1;for(let o=r;o=0;--n)a[n]=a[n+1]*t[n+1];return a}static normalizeAxis(t,r){if(t<-r&&t>=r)throw new Error(\"unsupported axis for this operation.\");return t<0?t+r:t}static normalizeAxes(t,r){return t.map(a=>this.normalizeAxis(a,r??t.length))}static sortBasedOnPerm(t,r){return r?r.map(a=>t[a]):t.slice().reverse()}static padShape(t,r){let a=t.length;return t.map((n,o)=>n+r[o]+r[o+a])}static areEqual(t,r){return t.length!==r.length?!1:t.every((a,n)=>a===r[n])}},Vt=class e{static adjustPoolAttributes(t,r,a,n,o,u){if(!t&&a.length!==r.length-2)throw new Error(\"length of specified kernel shapes should be 2 less than length of input dimensions\");if(t)for(let l=0;l=a.length?a.push(r[l+2]):a[l]=r[l+2];for(let l=0;l=a[l]||u[l+a.length]>=a[l])throw new Error(\"pads should be smaller than kernel\")}}static adjustPadsBasedOnAutoPad(t,r,a,n,o,u,l){if(l){if(o.length!==2*(t.length-2))throw new Error(\"length of pads should be twice the length of data dimensions\");if(r.length!==t.length-2)throw new Error(\"length of strides should be the length of data dimensions\");if(n.length!==t.length-2)throw new Error(\"length of kernel shapes should be the length of data dimensions\");for(let i=0;i{\"use strict\";Ue();$e();fd=64,sa=(e,t)=>{if(t===3)throw new Error(\"vec3 has same alignment as vec4, use vec4 instead\");switch(e){case 10:return t>1?`vec${t}`:\"f16\";case 1:return t>1?`vec${t}`:\"f32\";case 6:return t>1?`vec${t}`:\"i32\";case 12:return t>1?`vec${t}`:\"u32\";case 7:if(t>1)throw new Error(\"currently not supported vecX of uint64 yet\");return[\"vec2\",\"i32\"];case 13:if(t>1)throw new Error(\"currently not supported vecX of uint64 yet\");return[\"vec2\",\"u32\"];case 9:if(t!==4)throw new Error(\"bool must be vec4\");return[\"u32\",\"vec4\"];default:throw new Error(`Unknown data type: ${e}`)}},Fe=(e,t=1)=>{let r=sa(e,t);return typeof r==\"string\"?r:r[0]},yt=(e,t=1)=>{let r=sa(e,t);return typeof r==\"string\"?r:r[1]},G=e=>e.length===0?[]:[{type:\"uint32\",data:e},{type:\"uint32\",data:U.computeStrides(e)}],qe=e=>e%4===0?4:e%2===0?2:1,Qe=(e=\"f32\",t,r=\"0\")=>!t||t===1?`${e}(${r})`:`vec${t}<${e}>(${r})`,pt=(e,t,r)=>e===\"f32\"?r:t===1?`f32(${r})`:`vec${t}f(${r})`,rt=(e,t)=>t===4?`(${e}.x + ${e}.y + ${e}.z + ${e}.w)`:t===2?`(${e}.x + ${e}.y)`:t===3?`(${e}.x + ${e}.y + ${e}.z)`:e,ce=(e,t,r)=>e.startsWith(\"uniforms.\")&&r>4?typeof t==\"string\"?`${e}[(${t}) / 4][(${t}) % 4]`:`${e}[${Math.floor(t/4)}][${t%4}]`:r>1?`${e}[${t}]`:e,ua=(e,t,r,a,n)=>{let o=typeof r==\"number\",u=o?r:r.length,l=[...new Array(u).keys()],i=u<2?\"u32\":u<=4?`vec${u}`:`array`,c=sa(t,n),m=typeof c==\"string\"?c:c[1],f=typeof c==\"string\"?c:c[0],h={indices:i,value:m,storage:f,tensor:t},b=L=>typeof L==\"string\"?L:`${L}u`,w={offsetToIndices:!1,indicesToOffset:!1,broadcastedIndicesToOffset:!1,set:!1,setByIndices:!1,get:!1,getByIndices:!1},_=o?\"uniforms.\":\"\",I=`${_}${e}_shape`,$=`${_}${e}_strides`,x=\"\";for(let L=0;L ${h.indices} {\n var indices: ${h.indices};\n var current = offset;\n ${x}\n return indices;\n }`,A=L=>(w.offsetToIndices=!0,u<2?L:`o2i_${e}(${L})`),z=[];if(u>=2)for(let L=u-1;L>=0;L--)z.push(`${ce($,L,u)} * (indices[${L}])`);let R=u<2?\"\":`\n fn i2o_${e}(indices: ${h.indices}) -> u32 {\n return ${z.join(\"+\")};\n }`,N=L=>(w.indicesToOffset=!0,u<2?L:`i2o_${e}(${L})`),E=(...L)=>u===0?\"0u\":`${h.indices}(${L.map(b).join(\",\")})`,W=(L,ee)=>u<2?`${L}`:`${ce(L,ee,u)}`,te=(L,ee,be)=>u<2?`${L}=${be};`:`${ce(L,ee,u)}=${be};`,Y={},K=(L,ee)=>{w.broadcastedIndicesToOffset=!0;let be=`${ee.name}broadcastedIndicesTo${e}Offset`;if(be in Y)return`${be}(${L})`;let nt=[];for(let Ne=u-1;Ne>=0;Ne--){let We=ee.indicesGet(\"outputIndices\",Ne+ee.rank-u);nt.push(`${W($,Ne)} * (${We} % ${W(I,Ne)})`)}return Y[be]=`fn ${be}(outputIndices: ${ee.type.indices}) -> u32 {\n return ${nt.length>0?nt.join(\"+\"):\"0u\"};\n }`,`${be}(${L})`},X=(L,ee)=>(()=>{if(h.storage===h.value)return`${e}[${L}]=${ee};`;if(h.storage===\"vec2\"&&h.value===\"i32\")return`${e}[${L}]=vec2(u32(${ee}), select(0u, 0xFFFFFFFFu, ${ee} < 0));`;if(h.storage===\"vec2\"&&h.value===\"u32\")return`${e}[${L}]=vec2(u32(${ee}), 0u);`;if(h.storage===\"u32\"&&h.value===\"vec4\")return`${e}[${L}]=dot(vec4(0x1, 0x100, 0x10000, 0x1000000), vec4(${ee}));`;throw new Error(`not supported combination of storage type ${h.storage} and value type ${h.value} yet`)})(),Z=L=>(()=>{if(h.storage===h.value)return`${e}[${L}]`;if(h.storage===\"vec2\"&&h.value===\"i32\")return`i32(${e}[${L}].x)`;if(h.storage===\"vec2\"&&h.value===\"u32\")return`u32(${e}[${L}].x)`;if(h.storage===\"u32\"&&h.value===\"vec4\")return`vec4(bool(${e}[${L}] & 0xFFu), bool(${e}[${L}] & 0xFF00u), bool(${e}[${L}] & 0xFF0000u), bool(${e}[${L}] & 0xFF000000u))`;throw new Error(`not supported combination of storage type ${h.storage} and value type ${h.value} yet`)})(),Oe=u<2?\"\":`\n fn get_${e}ByIndices(indices: ${h.indices}) -> ${m} {\n return ${Z(`i2o_${e}(indices)`)};\n }`,Pe=u<2?\"\":(()=>{let L=l.map(be=>`d${be}: u32`).join(\", \"),ee=l.map(be=>`d${be}`).join(\", \");return`\n fn get_${e}(${L}) -> ${m} {\n return get_${e}ByIndices(${E(ee)});\n }`})(),fe=(...L)=>{if(L.length!==u)throw new Error(`indices length must be ${u}`);let ee=L.map(b).join(\",\");return u===0?Z(\"0u\"):u===1?Z(ee[0]):(w.get=!0,w.getByIndices=!0,w.indicesToOffset=!0,`get_${e}(${ee})`)},Ae=L=>u<2?Z(L):(w.getByIndices=!0,w.indicesToOffset=!0,`get_${e}ByIndices(${L})`),he=u<2?\"\":`\n fn set_${e}ByIndices(indices: ${h.indices}, value: ${m}) {\n ${X(`i2o_${e}(indices)`,\"value\")}\n }`,ye=u<2?\"\":(()=>{let L=l.map(be=>`d${be}: u32`).join(\", \"),ee=l.map(be=>`d${be}`).join(\", \");return`\n fn set_${e}(${L}, value: ${m}) {\n set_${e}ByIndices(${E(ee)}, value);\n }`})();return{impl:()=>{let L=[],ee=!1;return w.offsetToIndices&&(L.push(T),ee=!0),w.indicesToOffset&&(L.push(R),ee=!0),w.broadcastedIndicesToOffset&&(Object.values(Y).forEach(be=>L.push(be)),ee=!0),w.set&&(L.push(ye),ee=!0),w.setByIndices&&(L.push(he),ee=!0),w.get&&(L.push(Pe),ee=!0),w.getByIndices&&(L.push(Oe),ee=!0),!o&&ee&&L.unshift(`const ${I} = ${h.indices}(${r.join(\",\")});`,`const ${$} = ${h.indices}(${U.computeStrides(r).join(\",\")});`),L.join(`\n`)},type:h,offsetToIndices:A,indicesToOffset:N,broadcastedIndicesToOffset:K,indices:E,indicesGet:W,indicesSet:te,set:(...L)=>{if(L.length!==u+1)throw new Error(`indices length must be ${u}`);let ee=L[u];if(typeof ee!=\"string\")throw new Error(\"value must be string\");let be=L.slice(0,u).map(b).join(\",\");return u===0?X(\"0u\",ee):u===1?X(be[0],ee):(w.set=!0,w.setByIndices=!0,w.indicesToOffset=!0,`set_${e}(${be}, ${ee})`)},setByOffset:X,setByIndices:(L,ee)=>u<2?X(L,ee):(w.setByIndices=!0,w.indicesToOffset=!0,`set_${e}ByIndices(${L}, ${ee});`),get:fe,getByOffset:Z,getByIndices:Ae,usage:a,name:e,strides:$,shape:I,rank:u}},M=(e,t,r,a=1)=>ua(e,t,r,\"input\",a),q=(e,t,r,a=1)=>ua(e,t,r,\"output\",a),pn=(e,t,r,a=1)=>ua(e,t,r,\"internal\",a),oa=class{constructor(t){this.normalizedDispatchGroup=t;this.internalVariables=[];this.variables=[];this.uniforms=[];this.variableIndex=0}guardAgainstOutOfBoundsWorkgroupSizes(t){return`if (global_idx >= ${typeof t==\"number\"?`${t}u`:t}) { return; }`}mainStart(t=fd){let r=typeof t==\"number\"?t:t[0],a=typeof t==\"number\"?1:t[1],n=typeof t==\"number\"?1:t[2],o=this.normalizedDispatchGroup[1]===1&&this.normalizedDispatchGroup[2]===1,u=o?`@builtin(global_invocation_id) global_id : vec3,\n @builtin(workgroup_id) workgroup_id : vec3,\n @builtin(local_invocation_id) local_id : vec3`:`@builtin(local_invocation_id) local_id : vec3,\n @builtin(local_invocation_index) local_idx : u32,\n @builtin(workgroup_id) workgroup_id : vec3,\n @builtin(num_workgroups) num_workgroups : vec3`,l=o?\"let global_idx = global_id.x; let local_idx = local_id.x;\":`let global_idx = (workgroup_id.z * num_workgroups[0] * num_workgroups[1] +\n workgroup_id.y * num_workgroups[0] + workgroup_id.x) * ${r*a*n}u + local_idx;`;return`@compute @workgroup_size(${r}, ${a}, ${n})\n fn main(${u}) {\n ${l}\n `}appendVariableUniforms(t){t.rank!==0&&(t.shape.startsWith(\"uniforms.\")&&this.uniforms.push({name:t.shape.replace(\"uniforms.\",\"\"),type:\"u32\",length:t.rank}),t.strides.startsWith(\"uniforms.\")&&this.uniforms.push({name:t.strides.replace(\"uniforms.\",\"\"),type:\"u32\",length:t.rank}))}declareVariable(t,r){if(t.usage===\"internal\")throw new Error(\"cannot use internal variable with declareVariable(). use registerInternalVariables() instead.\");this.variables.push(t),this.appendVariableUniforms(t);let a=t.usage===\"input\"?\"read\":\"read_write\",n=t.type.storage;return`@group(0) @binding(${r}) var ${t.name}: array<${n}>;`}declareVariables(...t){return t.map(r=>this.declareVariable(r,this.variableIndex++)).join(`\n`)}registerInternalVariable(t){if(t.usage!==\"internal\")throw new Error(\"cannot use input or output variable with registerInternalVariable(). use declareVariables() instead.\");this.internalVariables.push(t),this.appendVariableUniforms(t)}registerInternalVariables(...t){return t.forEach(r=>this.registerInternalVariable(r)),this}registerUniform(t,r,a=1){return this.uniforms.push({name:t,type:r,length:a}),this}registerUniforms(t){return this.uniforms=this.uniforms.concat(t),this}uniformDeclaration(){if(this.uniforms.length===0)return\"\";let t=[];for(let{name:r,type:a,length:n}of this.uniforms)if(n&&n>4)t.push(`${r}:array, ${Math.ceil(n/4)}>`);else{let o=n==null||n===1?a:`vec${n}<${a}>`;t.push(`${r}:${o}`)}return`\n struct Uniforms { ${t.join(\", \")} };\n @group(0) @binding(${this.variableIndex}) var uniforms: Uniforms;`}get additionalImplementations(){return this.uniformDeclaration()+this.variables.map(t=>t.impl()).join(`\n`)+this.internalVariables.map(t=>t.impl()).join(`\n`)}},Qi=e=>new oa(e),er=(e,t)=>{let r=e.length,a=[];for(let n=0;n1&&u===1&&a.unshift(o)}return a},Be=e=>!0});var hd,Ji,gd,yd,mt,eo,to,tr=F(()=>{\"use strict\";$e();je();ve();hd=e=>{if(!e||e.length!==1)throw new Error(\"Transpose requires 1 input.\")},Ji=(e,t)=>t&&t.length!==e?[...new Array(e).keys()].reverse():t,gd=(e,t)=>U.sortBasedOnPerm(e,Ji(e.length,t)),yd=(e,t,r,a)=>{let n=[];n.push(`fn perm(i: ${a.type.indices}) -> ${r.type.indices} {\n var a: ${r.type.indices};`);for(let o=0;o{let r=e.dataType,a=e.dims.length,n=Ji(a,t),o=Be(a),u=gd(e.dims,n),l=o?u.length:u,i=o?a:e.dims,c=q(\"output\",r,l),m=M(\"a\",r,i),f=h=>`\n ${h.registerUniform(\"output_size\",\"u32\").declareVariables(m,c)}\n\n ${yd(n,a,m,c)}\n\n ${h.mainStart()}\n ${h.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n\n let indices = ${c.offsetToIndices(\"global_idx\")};\n let aIndices = perm(indices);\n\n ${c.setByOffset(\"global_idx\",m.getByIndices(\"aIndices\"))}\n }`;return{name:\"Transpose\",shaderCache:{hint:`${t}`,inputDependencies:o?[\"rank\"]:[\"dims\"]},getRunData:h=>{let b=U.size(u);return{outputs:[{dims:u,dataType:h[0].dataType}],dispatchGroup:{x:Math.ceil(b/64)},programUniforms:o?[{type:\"uint32\",data:b},...G(h[0].dims),...G(u)]:[{type:\"uint32\",data:b}]}},getShaderSource:f}},eo=(e,t)=>{hd(e.inputs),e.compute(mt(e.inputs[0],t.perm))},to=e=>ge({perm:e.perm})});var bd,wd,vd,$d,_d,xd,Sd,Id,Cd,Ad,bt,ro,no,ao,io,oo,so,uo,lo,co,po,mo=F(()=>{\"use strict\";$e();ve();mn();tr();bd={max:\"select(bestValue, candidate, candidate > bestValue)\",min:\"select(bestValue, candidate, candidate < bestValue)\",mean:\"bestValue + candidate\",sum:\"bestValue + candidate\",prod:\"bestValue * candidate\",sumSquare:\"bestValue + candidate * candidate\",logSumExp:\"bestValue + exp(candidate)\",l1:\"bestValue + abs(candidate)\",l2:\"bestValue + candidate * candidate\",logSum:\"bestValue + candidate\"},wd={max:\"select(bestValue, candidate, candidate > bestValue)\",min:\"select(bestValue, candidate, candidate < bestValue)\",mean:\"bestValue + candidate\",sum:\"bestValue + candidate\",prod:\"bestValue * candidate\",sumSquare:\"bestValue + candidate\",logSumExp:\"bestValue + candidate\",l1:\"bestValue + candidate\",l2:\"bestValue + candidate\",logSum:\"bestValue + candidate\"},vd={max:\"_A[offset]\",min:\"_A[offset]\",mean:\"0\",sum:\"0\",prod:\"1\",sumSquare:\"0\",logSumExp:\"0\",l1:\"0\",l2:\"0\",logSum:\"0\"},$d={max:\"bestValue\",min:\"bestValue\",sum:\"bestValue\",prod:\"bestValue\",sumSquare:\"bestValue\",logSumExp:\"log(bestValue)\",l1:\"bestValue\",l2:\"sqrt(bestValue)\",logSum:\"log(bestValue)\"},_d=(e,t)=>{let r=[];for(let a=t-e;a{let r=[],a=e.length;for(let o=0;oe[o]);return[r,n]},Sd=(e,t)=>{let r=e.length+t.length,a=[],n=0;for(let o=0;o{for(let r=0;r{let r=[];if(!Id(e,t)){for(let a=0;ar.push(a))}return r},Ad=(e,t,r,a,n,o,u)=>{let l=r[0].dims,i=U.size(o),c=U.size(u),m=M(\"_A\",r[0].dataType,l),f=q(\"output\",n,o),h=32,b=`\n var aBestValues : array<${f.type.storage}, ${h}>;\n `;return{name:e,shaderCache:t,getShaderSource:_=>`\n ${_.registerUniform(\"reduceSize\",\"u32\").declareVariables(m,f)}\n ${b}\n fn DIV_CEIL(a : u32, b : u32) -> u32 {\n return ((a - 1u) / b + 1u);\n }\n ${_.mainStart(h)}\n\n let outputIndex = global_idx / ${h};\n let offset = outputIndex * uniforms.reduceSize;\n\n var bestValue = ${f.type.storage}(${vd[a]});\n let Length = uniforms.reduceSize;\n for (var k = local_idx; k < Length; k = k + ${h}) {\n let candidate = ${f.type.storage}(${m.getByOffset(\"offset + k\")});\n bestValue = ${bd[a]};\n }\n aBestValues[local_idx] = bestValue;\n workgroupBarrier();\n\n var reduceSize = min(Length, ${h}u);\n for (var currentSize = reduceSize / 2u; reduceSize > 1u;\n currentSize = reduceSize / 2u) {\n let interval = DIV_CEIL(reduceSize, 2u);\n if (local_idx < currentSize) {\n let candidate = aBestValues[local_idx + interval];\n bestValue = ${wd[a]};\n aBestValues[local_idx] = bestValue;\n }\n reduceSize = interval;\n workgroupBarrier();\n }\n\n if (local_idx == 0u) {\n ${f.setByOffset(\"outputIndex\",`${a===\"mean\"?`bestValue / ${f.type.storage}(uniforms.reduceSize)`:`${$d[a]}`}`)};\n }\n }`,getRunData:()=>({outputs:[{dims:o,dataType:n}],dispatchGroup:{x:i},programUniforms:[{type:\"uint32\",data:c}]})}},bt=(e,t,r,a)=>{let n=e.inputs.length===1?r:la(e.inputs,r),o=n.axes;o.length===0&&!n.noopWithEmptyAxes&&(o=e.inputs[0].dims.map((b,w)=>w));let u=U.normalizeAxes(o,e.inputs[0].dims.length),l=u,i=e.inputs[0],c=Cd(l,e.inputs[0].dims.length);c.length>0&&(i=e.compute(mt(e.inputs[0],c),{inputs:[0],outputs:[-1]})[0],l=_d(l.length,i.dims.length));let[m,f]=xd(i.dims,l),h=m;n.keepDims&&(h=Sd(m,u)),e.compute(Ad(t,{hint:n.cacheKey,inputDependencies:[\"type\"]},[i],a,e.inputs[0].dataType,h,f),{inputs:[i]})},ro=(e,t)=>{bt(e,\"ReduceMeanShared\",t,\"mean\")},no=(e,t)=>{bt(e,\"ReduceL1Shared\",t,\"l1\")},ao=(e,t)=>{bt(e,\"ReduceL2Shared\",t,\"l2\")},io=(e,t)=>{bt(e,\"ReduceLogSumExpShared\",t,\"logSumExp\")},oo=(e,t)=>{bt(e,\"ReduceMaxShared\",t,\"max\")},so=(e,t)=>{bt(e,\"ReduceMinShared\",t,\"min\")},uo=(e,t)=>{bt(e,\"ReduceProdShared\",t,\"prod\")},lo=(e,t)=>{bt(e,\"ReduceSumShared\",t,\"sum\")},co=(e,t)=>{bt(e,\"ReduceSumSquareShared\",t,\"sumSquare\")},po=(e,t)=>{bt(e,\"ReduceLogSumShared\",t,\"logSum\")}});var wt,Ed,fn,la,vt,Td,Od,kd,Pd,Rd,Bd,Dd,zd,Md,Ud,$t,fo,ho,go,yo,bo,wo,vo,$o,_o,xo,mn=F(()=>{\"use strict\";$e();je();ve();mo();wt=e=>{if(!e||e.length===0||e.length>2)throw new Error(\"Reduce op requires 1 or 2 inputs.\");if(e.length===2&&e[1].dims.length!==1)throw new Error(\"Invalid axes input dims.\")},Ed=e=>[\"\",\"\",`var value = ${e.getByIndices(\"input_indices\")};`,\"\"],fn=(e,t,r,a,n,o,u=!1,l=!1)=>{let i=[],c=r[0].dims,m=c.length,f=U.normalizeAxes(n,m),h=!l&&f.length===0;c.forEach((I,$)=>{h||f.indexOf($)>=0?u&&i.push(1):i.push(I)});let b=i.length,w=U.size(i);return{name:e,shaderCache:t,getShaderSource:I=>{let $=[],x=M(\"_A\",r[0].dataType,m),T=q(\"output\",o,b),A=a(x,T,f),z=A[2];for(let R=0,N=0;R=0?(u&&N++,z=`for(var j${R}: u32 = 0; j${R} < ${c[R]}; j${R}++) {\n ${A[2].includes(\"last_index\")?`let last_index = j${R};`:\"\"}\n ${x.indicesSet(\"input_indices\",R,`j${R}`)}\n ${z}\n }`):($.push(`${x.indicesSet(\"input_indices\",R,T.indicesGet(\"output_indices\",N))};`),N++);return`\n\n ${I.registerUniform(\"output_size\",\"u32\").declareVariables(x,T)}\n\n ${I.mainStart()}\n ${I.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n var input_indices: ${x.type.indices};\n let output_indices = ${T.offsetToIndices(\"global_idx\")};\n\n ${$.join(`\n`)}\n ${A[0]} // init ops for reduce max/min\n ${A[1]}\n ${z}\n ${A[3]}\n ${A.length===4?T.setByOffset(\"global_idx\",\"value\"):A.slice(4).join(`\n`)}\n }`},getRunData:()=>({outputs:[{dims:i,dataType:o}],dispatchGroup:{x:Math.ceil(w/64)},programUniforms:[{type:\"uint32\",data:w},...G(c),...G(i)]})}},la=(e,t)=>{let r=[];return e[1].dims[0]>0&&e[1].getBigInt64Array().forEach(a=>r.push(Number(a))),ge({axes:r,keepDims:t.keepDims,noopWithEmptyAxes:t.noopWithEmptyAxes})},vt=(e,t,r,a)=>{let n=e.inputs,o=n.length===1?r:la(n,r);e.compute(fn(t,{hint:o.cacheKey,inputDependencies:[\"rank\"]},[n[0]],o.noopWithEmptyAxes&&o.axes.length===0?Ed:a,o.axes,n[0].dataType,o.keepDims,o.noopWithEmptyAxes),{inputs:[0]})},Td=(e,t)=>{wt(e.inputs),vt(e,\"ReduceLogSum\",t,(a,n)=>[`var value = ${n.type.storage}(0);`,\"\",`value += ${a.getByIndices(\"input_indices\")};`,\"value = log(value);\"])},Od=(e,t)=>{wt(e.inputs),vt(e,\"ReduceL1\",t,(a,n)=>[`var value = ${n.type.storage}(0);`,\"\",`value += abs(${a.getByIndices(\"input_indices\")});`,\"\"])},kd=(e,t)=>{wt(e.inputs),vt(e,\"ReduceL2\",t,(a,n)=>[`var t = ${n.type.value}(0); var value = ${n.type.value}(0);`,\"\",`t = ${a.getByIndices(\"input_indices\")}; value += (t * t);`,\"value = sqrt(value);\"])},Pd=(e,t)=>{wt(e.inputs),vt(e,\"ReduceLogSumExp\",t,(a,n)=>[`var value = ${n.type.storage}(0);`,\"\",`value += exp(${a.getByIndices(\"input_indices\")});`,\"value = log(value);\"])},Rd=(e,t)=>{wt(e.inputs),vt(e,\"ReduceMax\",t,(a,n,o)=>{let u=[];for(let l=0;l=0||o.length===0)&&u.push(a.indicesSet(\"input_indices\",l,0));return[`${u.join(`\n`)}`,`var value = ${a.getByIndices(\"input_indices\")};`,`value = max(value, ${a.getByIndices(\"input_indices\")});`,\"\"]})},Bd=(e,t)=>{wt(e.inputs),vt(e,\"ReduceMean\",t,(a,n,o)=>{let u=1;for(let l=0;l=0||o.length===0)&&(u*=e.inputs[0].dims[l]);return[\"var sum = f32(0);\",\"\",`sum += f32(${a.getByIndices(\"input_indices\")});`,`let value = ${n.type.value}(sum / ${u});`]})},Dd=(e,t)=>{wt(e.inputs),vt(e,\"ReduceMin\",t,(a,n,o)=>{let u=[];for(let l=0;l=0||o.length===0)&&u.push(`input_indices[${l}] = 0;`);return[`${u.join(`\n`)}`,`var value = ${a.getByIndices(\"input_indices\")};`,`value = min(value, ${a.getByIndices(\"input_indices\")});`,\"\"]})},zd=(e,t)=>{wt(e.inputs),vt(e,\"ReduceProd\",t,(a,n)=>[`var value = ${n.type.storage}(1);`,\"\",`value *= ${a.getByIndices(\"input_indices\")};`,\"\"])},Md=(e,t)=>{wt(e.inputs),vt(e,\"ReduceSum\",t,(a,n)=>[`var value = ${n.type.storage}(0);`,\"\",`value += ${a.getByIndices(\"input_indices\")};`,\"\"])},Ud=(e,t)=>{wt(e.inputs),vt(e,\"ReduceSumSquare\",t,(a,n)=>[`var t = ${n.type.value}(0); var value = ${n.type.value}(0);`,\"\",`t = ${a.getByIndices(\"input_indices\")}; value += t * t;`,\"\"])},$t=(e,t,r)=>{if(t.length===0)return r;let a=1,n=1;for(let o=0;o1024},fo=(e,t)=>{$t(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Bd(e,t):ro(e,t)},ho=(e,t)=>{$t(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Od(e,t):no(e,t)},go=(e,t)=>{$t(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?kd(e,t):ao(e,t)},yo=(e,t)=>{$t(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Pd(e,t):io(e,t)},bo=(e,t)=>{$t(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Rd(e,t):oo(e,t)},wo=(e,t)=>{$t(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Dd(e,t):so(e,t)},vo=(e,t)=>{$t(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?zd(e,t):uo(e,t)},$o=(e,t)=>{$t(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Md(e,t):lo(e,t)},_o=(e,t)=>{$t(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Ud(e,t):co(e,t)},xo=(e,t)=>{$t(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Td(e,t):po(e,t)}});var So,Io,Co,da,Ao=F(()=>{\"use strict\";Ue();je();mn();So=e=>{if(!e||e.length===0||e.length>2)throw new Error(\"ArgMinMaxOp op requires 1 or 2 inputs.\");if(e[0].dataType!==1)throw new Error(\"Invalid input type.\")},Io=(e,t)=>{So(e.inputs);let r=(a,n,o)=>{let u=[];for(let l=0;l=0||o.length===0)&&u.push(`input_indices[${l}] = 0;`);return[`${u.join(`\n`)}`,`var value = ${a.getByIndices(\"input_indices\")};\nvar best_index : i32 = 0;`,`if (${a.getByIndices(\"input_indices\")} ${t.selectLastIndex>0?\"<=\":\"<\"} value) {\n value = ${a.getByIndices(\"input_indices\")};\n best_index = i32(last_index);\n }`,\"\",n.setByOffset(\"global_idx\",\"best_index\")]};e.compute(fn(\"ArgMin\",{hint:t.cacheKey,inputDependencies:[\"rank\"]},[e.inputs[0]],r,[t.axis],7,t.keepDims),{inputs:[0]})},Co=(e,t)=>{So(e.inputs);let r=(a,n,o)=>{let u=[];for(let l=0;l=0||o.length===0)&&u.push(`input_indices[${l}] = 0;`);return[`${u.join(`\n`)}`,`var value = ${a.getByIndices(\"input_indices\")};\nvar best_index : i32 = 0;`,`if (${a.getByIndices(\"input_indices\")} ${t.selectLastIndex>0?\">=\":\">\"} value) {\n value = ${a.getByIndices(\"input_indices\")};\n best_index = i32(last_index);\n }`,\"\",n.setByOffset(\"global_idx\",\"best_index\")]};e.compute(fn(\"argMax\",{hint:t.cacheKey,inputDependencies:[\"rank\"]},[e.inputs[0]],r,[t.axis],7,t.keepDims),{inputs:[0]})},da=e=>ge(e)});var Nd,Wd,Vd,Hd,hn,Ld,Eo,ca=F(()=>{\"use strict\";Ue();sn();ve();Nd=(e,t)=>{let r=e[0],a=e[1],n=e[2],o=e[3],u=e[4],l=e[5];if(u&&l)throw new Error(\"Attention cannot have both past and relative_position_bias\");if(r.dims.length!==3)throw new Error('Input \"input\" must have 3 dimensions');let i=r.dims[0],c=r.dims[1],m=r.dims[2];if(n.dims.length!==1)throw new Error('Input \"bias\" is expected to have 1 dimensions');if(a.dims.length!==2)throw new Error('Input \"weights\" is expected to have 2 dimensions');if(a.dims[0]!==m)throw new Error(\"Input 1 dimension 0 should have same length as dimension 2 of input 0\");if(n.dims[0]!==a.dims[1])throw new Error('Input \"bias\" dimension 0 should have same length as dimension 1 of input \"weights\"');let f=n.dims[0]/3,h=f,b=h;if(t.qkvHiddenSizes.length>0){if(t.qkvHiddenSizes.length!==3)throw new Error(\"qkv_hidden_sizes attribute should have 3 elements\");for(let T of t.qkvHiddenSizes)if(T%t.numHeads!==0)throw new Error(\"qkv_hidden_sizes should be divisible by num_heads\");f=t.qkvHiddenSizes[0],h=t.qkvHiddenSizes[1],b=t.qkvHiddenSizes[2]}let w=c;if(f!==h)throw new Error(\"qkv_hidden_sizes first element should be same as the second\");if(n.dims[0]!==f+h+b)throw new Error('Input \"bias\" dimension 0 should have same length as sum of Q/K/V hidden sizes');let _=0;if(u){if(h!==b)throw new Error('Input \"past\" expect k_hidden_size == v_hidden_size');if(u.dims.length!==5)throw new Error('Input \"past\" must have 5 dimensions');if(u.dims[0]!==2)throw new Error('Input \"past\" first dimension must be 2');if(u.dims[1]!==i)throw new Error('Input \"past\" second dimension must be batch_size');if(u.dims[2]!==t.numHeads)throw new Error('Input \"past\" third dimension must be num_heads');if(u.dims[4]!==h/t.numHeads)throw new Error('Input \"past\" fifth dimension must be k_hidden_size / num_heads');t.pastPresentShareBuffer||(_=u.dims[3])}let I=w+_,$=-1,x=0;if(o)throw new Error(\"Mask not supported\");if(u)throw new Error(\"past is not supported\");if(l)throw new Error(\"relativePositionBias is not supported\");return{batchSize:i,sequenceLength:c,pastSequenceLength:_,kvSequenceLength:w,totalSequenceLength:I,maxSequenceLength:$,inputHiddenSize:m,hiddenSize:f,vHiddenSize:b,headSize:Math.floor(f/t.numHeads),vHeadSize:Math.floor(b/t.numHeads),numHeads:t.numHeads,isUnidirectional:!1,pastPresentShareBuffer:!1,maskFilterValue:t.maskFilterValue,maskType:x,scale:t.scale,broadcastResPosBias:!1,passPastInKv:!1,qkvFormat:1}},Wd=(e,t,r,a)=>{let n=qe(a),o=64,u=a/n;u{let b=q(\"x\",t.dataType,t.dims,n),w=\"thread_max_vector\";n===2?w=\"max(thread_max_vector.x, thread_max_vector.y)\":n===4&&(w=\"max(max(thread_max_vector.x, thread_max_vector.y), max(thread_max_vector.z, thread_max_vector.w))\");let _=yt(t.dataType),I=[{name:\"d_inv\",type:_},{name:\"d_comp\",type:\"u32\"},{name:\"elements_per_wg\",type:\"u32\"}];return`\n var wgMax: array;\n var wgSum: array;\n ${h.registerUniforms(I).declareVariables(b)}\n ${h.mainStart([o,1,1])}\n let localOffset = local_idx * uniforms.elements_per_wg;\n let offset: u32 = workgroup_id.x * uniforms.d_comp + localOffset;\n\n var thread_max_vector = ${Qe(\"f32\",n,\"-3.402823e+38f\")};\n for (var i: u32 = 0; i < uniforms.elements_per_wg && i + localOffset < uniforms.d_comp; i++) {\n thread_max_vector = max(${pt(_,n,\"x[offset + i]\")}, thread_max_vector);\n }\n wgMax[local_idx] = ${w};\n workgroupBarrier();\n\n var maxValue = -3.402823e+38f;\n for (var i = 0u; i < ${o}; i++) {\n maxValue = max(wgMax[i], maxValue);\n }\n\n var sumVector = ${Qe(\"f32\",n,\"0\")};\n for (var i: u32 = 0; i < uniforms.elements_per_wg && i + localOffset < uniforms.d_comp; i++) {\n sumVector += exp(${pt(_,n,\"x[offset + i]\")} - maxValue);\n }\n wgSum[local_idx] = ${rt(\"sumVector\",n)};\n workgroupBarrier();\n\n var sum: f32 = 0;\n for (var i = 0u; i < ${o}; i++) {\n sum += wgSum[i];\n }\n\n if (sum == 0) {\n for (var i: u32 = 0; i < uniforms.elements_per_wg && i + localOffset < uniforms.d_comp; i++) {\n x[offset + i] = ${Qe(\"f32\",n,\"uniforms.d_inv\")};\n }\n } else {\n for (var i: u32 = 0; i < uniforms.elements_per_wg && i + localOffset < uniforms.d_comp; i++) {\n let f32input = ${pt(_,n,\"x[offset + i]\")};\n x[offset + i] = ${b.type.value}(exp(f32input - maxValue) / sum);\n }\n }\n }`};e.compute({name:\"AttentionProbsSoftmax\",shaderCache:{hint:`${o};${m};${n}`},getShaderSource:f,getRunData:()=>({outputs:[],dispatchGroup:{x:r},programUniforms:c})},{inputs:[t],outputs:[]})},Vd=(e,t,r,a,n,o)=>{let u=[n.batchSize,n.numHeads,n.sequenceLength,n.kvSequenceLength+n.pastSequenceLength],l=o.scale===0?1/Math.sqrt(n.headSize):o.scale,i=qe(n.headSize),c=n.headSize/i,m=12,f={x:Math.ceil(n.totalSequenceLength/m),y:Math.ceil(n.sequenceLength/m),z:n.batchSize*n.numHeads},h=tt(t.dataType),b=[{type:\"uint32\",data:n.sequenceLength},{type:\"uint32\",data:c},{type:\"uint32\",data:n.totalSequenceLength},{type:\"uint32\",data:n.kvSequenceLength},{type:h,data:l}],w=[t,r],_=$=>{let x=M(\"q\",t.dataType,t.dims,i),T=M(\"key\",r.dataType,r.dims,i),A=q(\"output\",t.dataType,u),z=Fe(t.dataType),R=[{name:\"M\",type:\"u32\"},{name:\"K\",type:\"u32\"},{name:\"N\",type:\"u32\"},{name:\"kv_sequence_length\",type:\"u32\"},{name:\"alpha\",type:z}];return`\n const beta: ${z} = 1.0;\n const TILE_SIZE = ${m}u;\n\n var tileQ: array<${x.type.storage}, ${m*m}>;\n var tileK: array<${x.type.storage}, ${m*m}>;\n ${$.registerUniforms(R).declareVariables(x,T,A)}\n ${$.mainStart([m,m,1])}\n // x holds the N and y holds the M\n let headIdx = workgroup_id.z;\n let m = workgroup_id.y * TILE_SIZE;\n let n = workgroup_id.x * TILE_SIZE;\n let lm = m + local_id.y;\n let ln = n + local_id.x;\n\n let qOffset = uniforms.M * uniforms.K * headIdx + m * uniforms.K;\n let kOffset = uniforms.kv_sequence_length * uniforms.K * headIdx + n * uniforms.K;\n\n var value = ${Qe(z,i)};\n for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {\n if (m + local_id.y < uniforms.M && w + local_id.x < uniforms.K) {\n tileQ[TILE_SIZE * local_id.y + local_id.x] = q[qOffset + local_id.y * uniforms.K + w + local_id.x];\n }\n if (n + local_id.y < uniforms.N && w + local_id.x < uniforms.K) {\n tileK[TILE_SIZE * local_id.y + local_id.x] = key[kOffset + local_id.y * uniforms.K + w + local_id.x];\n }\n workgroupBarrier();\n\n for (var k: u32 = 0u; k({outputs:[{dims:u,dataType:t.dataType,gpuDataType:0}],dispatchGroup:f,programUniforms:b}),getShaderSource:_},{inputs:w,outputs:[-1]})[0];return Wd(e,I,n.batchSize*n.numHeads*n.sequenceLength,n.totalSequenceLength),I},Hd=(e,t,r,a)=>{let n=[a.batchSize,a.sequenceLength,a.vHiddenSize],o=12,u={x:Math.ceil(a.vHeadSize/o),y:Math.ceil(a.sequenceLength/o),z:a.batchSize*a.numHeads},l=[{type:\"uint32\",data:a.sequenceLength},{type:\"uint32\",data:a.totalSequenceLength},{type:\"uint32\",data:a.vHeadSize},{type:\"uint32\",data:a.numHeads},{type:\"uint32\",data:a.vHiddenSize}],i=c=>{let m=M(\"probs\",t.dataType,t.dims),f=M(\"v\",r.dataType,r.dims),h=q(\"output\",t.dataType,n),b=[{name:\"M\",type:\"u32\"},{name:\"K\",type:\"u32\"},{name:\"N\",type:\"u32\"},{name:\"num_heads\",type:\"u32\"},{name:\"v_hidden_size\",type:\"u32\"}];return`\n const TILE_SIZE = ${o}u;\n var tileQ: array<${m.type.value}, ${o*o}>;\n var tileK: array<${m.type.value}, ${o*o}>;\n ${c.registerUniforms(b).declareVariables(m,f,h)}\n ${c.mainStart([o,o,1])}\n let headIdx = workgroup_id.z;\n let m = workgroup_id.y * TILE_SIZE + local_id.y;\n let n = workgroup_id.x * TILE_SIZE + local_id.x;\n\n let offsetA = headIdx * (uniforms.M * uniforms.K) + m * uniforms.K;\n let offsetB = headIdx * (uniforms.N * uniforms.K) + n;\n\n var value = ${m.type.storage}(0);\n for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {\n if (m < uniforms.M && w + local_id.x < uniforms.K) {\n tileQ[TILE_SIZE * local_id.y + local_id.x] = probs[offsetA + w + local_id.x];\n }\n if (n < uniforms.N && w + local_id.y < uniforms.K) {\n tileK[TILE_SIZE * local_id.y + local_id.x] = v[offsetB + (w + local_id.y) * uniforms.N];\n }\n workgroupBarrier();\n for (var k: u32 = 0u; k({outputs:[{dims:n,dataType:t.dataType,gpuDataType:0}],dispatchGroup:u,programUniforms:l}),getShaderSource:i},{inputs:[t,r],outputs:[0]})[0]},hn=(e,t,r,a,n,o,u,l,i,c,m)=>{let f=Vd(e,t,r,i,c,m);Hd(e,f,a,c)},Ld=(e,t)=>{let r=[t.batchSize,t.numHeads,t.sequenceLength,t.headSize],a=t.sequenceLength,n=t.inputHiddenSize,o=t.headSize,u=12,l={x:Math.ceil(t.headSize/u),y:Math.ceil(t.sequenceLength/u),z:t.batchSize*t.numHeads},i=[e.inputs[0],e.inputs[1],e.inputs[2]],c=[{type:\"uint32\",data:a},{type:\"uint32\",data:n},{type:\"uint32\",data:o},{type:\"uint32\",data:t.numHeads},{type:\"uint32\",data:t.headSize},{type:\"uint32\",data:t.hiddenSize},{type:\"uint32\",data:t.hiddenSize+t.hiddenSize+t.vHiddenSize}],m=f=>{let h=q(\"output_q\",i[0].dataType,r),b=q(\"output_k\",i[0].dataType,r),w=q(\"output_v\",i[0].dataType,r),_=M(\"input\",i[0].dataType,i[0].dims),I=M(\"weight\",i[1].dataType,i[1].dims),$=M(\"bias\",i[2].dataType,i[2].dims),x=_.type.storage,T=[{name:\"M\",type:\"u32\"},{name:\"K\",type:\"u32\"},{name:\"N\",type:\"u32\"},{name:\"num_heads\",type:\"u32\"},{name:\"head_size\",type:\"u32\"},{name:\"hidden_size\",type:\"u32\"},{name:\"ldb\",type:\"u32\"}];return`\n const TILE_SIZE = ${u}u;\n var tileInput: array<${x}, ${u*u}>;\n var tileWeightQ: array<${x}, ${u*u}>;\n var tileWeightK: array<${x}, ${u*u}>;\n var tileWeightV: array<${x}, ${u*u}>;\n ${f.registerUniforms(T).declareVariables(_,I,$,h,b,w)}\n ${f.mainStart([u,u,1])}\n let batchIndex = workgroup_id.z / uniforms.num_heads;\n let headNumber = workgroup_id.z % uniforms.num_heads;\n let m = workgroup_id.y * TILE_SIZE + local_id.y;\n let n = workgroup_id.x * TILE_SIZE + local_id.x;\n\n let inputOffset = batchIndex * (uniforms.M * uniforms.K) + m * uniforms.K;\n let biasOffsetQ = headNumber * uniforms.head_size;\n let biasOffsetK = uniforms.hidden_size + biasOffsetQ;\n let biasOffsetV = uniforms.hidden_size + biasOffsetK;\n\n var valueQ = ${x}(0);\n var valueK = ${x}(0);\n var valueV = ${x}(0);\n for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {\n if (m < uniforms.M && w + local_id.x < uniforms.K) {\n tileInput[TILE_SIZE * local_id.y + local_id.x] = input[inputOffset + w + local_id.x];\n }\n if (n < uniforms.N && w + local_id.y < uniforms.K) {\n let offset = n + (w + local_id.y) * uniforms.ldb;\n tileWeightQ[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetQ + offset];\n tileWeightK[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetK + offset];\n tileWeightV[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetV + offset];\n }\n workgroupBarrier();\n for (var k: u32 = 0u; k({outputs:[{dims:r,dataType:e.inputs[0].dataType,gpuDataType:0},{dims:r,dataType:e.inputs[0].dataType,gpuDataType:0},{dims:r,dataType:e.inputs[0].dataType,gpuDataType:0}],dispatchGroup:l,programUniforms:c}),getShaderSource:m},{inputs:i,outputs:[-1,-1,-1]})},Eo=(e,t)=>{let r=Nd(e.inputs,t),[a,n,o]=Ld(e,r);return hn(e,a,n,o,e.inputs[4],void 0,void 0,void 0,e.inputs[5],r,t)}});var Gd,Fd,qd,To,Oo=F(()=>{\"use strict\";st();$e();je();ve();Gd=(e,t)=>{if(!e||e.length!==5)throw new Error(\"BatchNormalization requires 5 inputs\");let r=(a,n,o)=>{let u=n.length;if(u!==a.length)throw new Error(`${o}: num dimensions != ${u}`);n.forEach((l,i)=>{if(l!==a[i])throw new Error(`${o}: dim[${i}] do not match`)})};if(e[0].dims.length>1){let a=t.format===\"NHWC\"?t.spatial?e[0].dims.slice(-1):e[0].dims.slice(-1).concat(e[0].dims.slice(1,e[0].dims.length-1)):e[0].dims.slice(1,t.spatial?2:void 0);r(e[1].dims,a,\"Invalid input scale\"),r(e[2].dims,a,\"Invalid input B\"),r(e[3].dims,a,\"Invalid input mean\"),r(e[4].dims,a,\"Invalid input var\")}else r(e[1].dims,[1],\"Invalid input scale\"),r(e[2].dims,[1],\"Invalid input B\"),r(e[3].dims,[1],\"Invalid input mean\"),r(e[4].dims,[1],\"Invalid input var\")},Fd=(e,t)=>{let{epsilon:r,spatial:a,format:n}=t,o=e[0].dims,u=a?qe(o[o.length-1]):1,l=n===\"NHWC\"&&o.length>1?u:1,i=U.size(o)/u,c=Be(o.length)&&a,m=c?o.length:o,f=M(\"x\",e[0].dataType,e[0].dims,u),h=M(\"scale\",e[1].dataType,e[1].dims,l),b=M(\"bias\",e[2].dataType,e[2].dims,l),w=M(\"inputMean\",e[3].dataType,e[3].dims,l),_=M(\"inputVar\",e[4].dataType,e[4].dims,l),I=q(\"y\",e[0].dataType,m,u),$=()=>{let T=\"\";if(a)T=`let cOffset = ${o.length===1?\"0u\":n===\"NHWC\"?`outputIndices[${o.length-1}] / ${u}`:\"outputIndices[1]\"};`;else if(n===\"NCHW\")T=`\n ${I.indicesSet(\"outputIndices\",\"0\",\"0\")}\n let cOffset = ${I.indicesToOffset(\"outputIndices\")};`;else{T=`var cIndices = ${h.type.indices}(0);\n cIndices[0] = outputIndices[${o.length-1}];`;for(let A=1;A`\n const epsilon = ${r};\n ${T.registerUniform(\"outputSize\",\"u32\").declareVariables(f,h,b,w,_,I)}\n ${T.mainStart()}\n ${T.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\n var outputIndices = ${I.offsetToIndices(`global_idx * ${u}`)};\n ${$()}\n let scale = ${h.getByOffset(\"cOffset\")};\n let bias = ${b.getByOffset(\"cOffset\")};\n let inputMean = ${w.getByOffset(\"cOffset\")};\n let inputVar = ${_.getByOffset(\"cOffset\")};\n let x = ${f.getByOffset(\"global_idx\")};\n let value = (x - inputMean) * inverseSqrt(inputVar + epsilon) * scale + bias;\n ${I.setByOffset(\"global_idx\",\"value\")}\n }`;return{name:\"BatchNormalization\",shaderCache:{hint:`${t.epsilon}_${t.format}_${a}_${u}`,inputDependencies:c?[\"rank\",\"type\",\"type\",\"type\",\"type\"]:void 0},getShaderSource:x,getRunData:()=>({outputs:[{dims:e[0].dims,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(i/64)},programUniforms:c?[{type:\"uint32\",data:i},...G(o)]:[{type:\"uint32\",data:i}]})}},qd=e=>ge(e),To=(e,t)=>{let{inputs:r,outputCount:a}=e,n=qd({...t,outputCount:a});if(Se.webgpu.validateInputContent&&Gd(r,n),t.trainingMode)throw new Error(\"BatchNormalization trainingMode is not supported yet.\");e.compute(Fd(r,n))}});var jd,Kd,ko,Po=F(()=>{\"use strict\";$e();ve();jd=e=>{if(e[0].dims.length!==3)throw new Error(\"input should have 3 dimensions\");if(![320,640,1280].includes(e[0].dims[2]))throw new Error(\"number of channels should be 320, 640 or 1280\");if(e[1].dims.length!==1)throw new Error(\"bias is expected to have 1 dimensions\");if(e[0].dims[2]!==e[1].dims[0])throw new Error(\"last dimension of input and bias are not the same\")},Kd=e=>{let t=e[0].dims,r=e[0].dims[2],a=U.size(t)/4,n=e[0].dataType,o=M(\"input\",n,t,4),u=M(\"bias\",n,[r],4),l=M(\"residual\",n,t,4),i=q(\"output\",n,t,4);return{name:\"BiasAdd\",getRunData:()=>({outputs:[{dims:t,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(a/64)}}),getShaderSource:m=>`\n const channels = ${r}u / 4;\n ${m.declareVariables(o,u,l,i)}\n\n ${m.mainStart()}\n ${m.guardAgainstOutOfBoundsWorkgroupSizes(a)}\n let value = ${o.getByOffset(\"global_idx\")}\n + ${u.getByOffset(\"global_idx % channels\")} + ${l.getByOffset(\"global_idx\")};\n ${i.setByOffset(\"global_idx\",\"value\")}\n }`}},ko=e=>{jd(e.inputs),e.compute(Kd(e.inputs))}});var Yd,Ee,Ro,Bo,Do,zo,Mo,Uo,No,Wo,Vo,Zd,Ho,Lo,Go,Fo,gn,qo,yn,jo,Ko,Yo,Zo,Xo,Qo,Jo,es,ts,rs,ns,as,is,os,ss,us,ls,pa=F(()=>{\"use strict\";Ue();$e();je();ve();Yd=(e,t,r,a,n,o)=>{let u=Math.ceil(t/4),l=\"\";typeof n==\"string\"?l=`${n}(a)`:l=n(\"a\");let i=M(\"inputData\",r,[u],4),c=q(\"outputData\",a,[u],4);return`\n ${e.registerUniform(\"vec_size\",\"u32\").declareVariables(i,c)}\n\n ${o??\"\"}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.vec_size\")}\n\n let a = ${i.getByOffset(\"global_idx\")};\n ${c.setByOffset(\"global_idx\",l)}\n }`},Ee=(e,t,r,a,n,o=e.dataType)=>({name:t,shaderCache:{hint:n,inputDependencies:[\"type\"]},getShaderSource:u=>Yd(u,U.size(e.dims),e.dataType,o,r,a),getRunData:u=>({outputs:[{dims:e.dims,dataType:o}],dispatchGroup:{x:Math.ceil(U.size(u[0].dims)/64/4)},programUniforms:[{type:\"uint32\",data:Math.ceil(U.size(e.dims)/4)}]})}),Ro=e=>{e.compute(Ee(e.inputs[0],\"Abs\",\"abs\"))},Bo=e=>{e.compute(Ee(e.inputs[0],\"Acos\",\"acos\"))},Do=e=>{e.compute(Ee(e.inputs[0],\"Acosh\",\"acosh\"))},zo=e=>{e.compute(Ee(e.inputs[0],\"Asin\",\"asin\"))},Mo=e=>{e.compute(Ee(e.inputs[0],\"Asinh\",\"asinh\"))},Uo=e=>{e.compute(Ee(e.inputs[0],\"Atan\",\"atan\"))},No=e=>{e.compute(Ee(e.inputs[0],\"Atanh\",\"atanh\"))},Wo=e=>ge(e),Vo=(e,t)=>{let r;switch(t.to){case 10:r=\"vec4\";break;case 1:r=\"vec4\";break;case 12:r=\"vec4\";break;case 6:r=\"vec4\";break;case 9:r=\"vec4\";break;default:throw new RangeError(`not supported type (specified in attribute 'to' from 'Cast' operator): ${t.to}`)}e.compute(Ee(e.inputs[0],\"Cast\",r,void 0,t.cacheKey,t.to))},Zd=e=>{let t=e.length>=2&&e[1].data!==0?e[1].getFloat32Array()[0]:dn,r=e.length>=3&&e[2].data!==0?e[2].getFloat32Array()[0]:cn;return ge({min:t,max:r})},Ho=(e,t)=>{let r=e.inputs.length===1?t:Zd(e.inputs),a=yt(e.inputs[0].dataType);e.compute(Ee(e.inputs[0],\"Clip\",n=>`clamp(${n}, clip_min_, clip_max_)`,`\n const clip_min_: vec4<${a}> = vec4(${a}(${r.min}));\n const clip_max_: vec4<${a}> = vec4(${a}(${r.max}));\n`,r.cacheKey),{inputs:[0]})},Lo=e=>{e.compute(Ee(e.inputs[0],\"Ceil\",\"ceil\"))},Go=e=>{e.compute(Ee(e.inputs[0],\"Cos\",\"cos\"))},Fo=e=>{e.compute(Ee(e.inputs[0],\"Cosh\",\"cosh\"))},gn=e=>ge(e),qo=(e,t)=>{let r=yt(e.inputs[0].dataType);e.compute(Ee(e.inputs[0],\"Elu\",a=>`elu_vf32(${a})`,`\n const elu_alpha_ = ${r}(${t.alpha});\n\n fn elu_f32(a: ${r}) -> ${r} {\n return select((exp(a) - 1.0) * elu_alpha_, a, a >= 0.0);\n }\n\n fn elu_vf32(v: vec4<${r}>) -> vec4<${r}> {\n return vec4(elu_f32(v.x), elu_f32(v.y), elu_f32(v.z), elu_f32(v.w));\n }`,t.cacheKey))},yn=(e,t=\"f32\")=>`\nconst r0: ${t} = 0.3275911;\nconst r1: ${t} = 0.254829592;\nconst r2: ${t} = -0.284496736;\nconst r3: ${t} = 1.421413741;\nconst r4: ${t} = -1.453152027;\nconst r5: ${t} = 1.061405429;\n\nfn erf_vf32(v: ${e}) -> ${e} {\n let absv = abs(v);\n let x = 1.0 / (1.0 + r0 * absv);\n return sign(v) * (1.0 - ((((r5 * x + r4) * x + r3) * x + r2) * x + r1) * x * exp(-absv * absv));\n}`,jo=e=>{let t=yt(e.inputs[0].dataType);e.compute(Ee(e.inputs[0],\"Erf\",r=>`erf_vf32(${r})`,yn(`vec4<${t}>`,t)))},Ko=e=>{e.compute(Ee(e.inputs[0],\"Exp\",\"exp\"))},Yo=e=>{e.compute(Ee(e.inputs[0],\"Floor\",\"floor\"))},Zo=e=>{let t=yt(e.inputs[0].dataType);e.compute(Ee(e.inputs[0],\"Gelu\",r=>`0.5 * ${r} * (1.0 + erf_vf32(${r} * 0.7071067811865475))`,yn(`vec4<${t}>`,t)))},Xo=(e,t)=>{let r=yt(e.inputs[0].dataType);e.compute(Ee(e.inputs[0],\"LeakyRelu\",a=>`select(leaky_relu_alpha_ * ${a}, ${a}, ${a} >= vec4<${r}>(0.0))`,`const leaky_relu_alpha_ = ${r}(${t.alpha});`,t.cacheKey))},Qo=e=>{e.compute(Ee(e.inputs[0],\"Not\",t=>`!${t}`))},Jo=e=>{e.compute(Ee(e.inputs[0],\"Neg\",t=>`-${t}`))},es=e=>{e.compute(Ee(e.inputs[0],\"Reciprocal\",t=>`1.0/${t}`))},ts=e=>{let t=yt(e.inputs[0].dataType);e.compute(Ee(e.inputs[0],\"Relu\",r=>`select(vec4<${t}>(0.0), ${r}, ${r} > vec4<${t}>(0.0))`))},rs=e=>{e.compute(Ee(e.inputs[0],\"Sigmoid\",t=>`(1.0 / (1.0 + exp(-${t})))`))},ns=e=>{e.compute(Ee(e.inputs[0],\"Sin\",\"sin\"))},as=e=>{e.compute(Ee(e.inputs[0],\"Sinh\",\"sinh\"))},is=e=>{e.compute(Ee(e.inputs[0],\"Sqrt\",\"sqrt\"))},os=e=>{e.compute(Ee(e.inputs[0],\"Tan\",\"tan\"))},ss=e=>{e.compute(Ee(e.inputs[0],\"Tanh\",\"tanh\"))},us=(e,t)=>{let r=yt(e.inputs[0].dataType);return e.compute(Ee(e.inputs[0],\"ThresholdedRelu\",a=>`select(vec4<${r}>(0.0), ${a}, ${a} > thresholded_relu_alpha_)`,`const thresholded_relu_alpha_ = vec4<${r}>(${t.alpha});`,t.cacheKey)),0},ls=e=>{e.compute(Ee(e.inputs[0],\"Log\",\"log\"))}});var Qd,Jd,ds,cs=F(()=>{\"use strict\";$e();ve();pa();Qd=e=>{if(e[0].dims.length!==3)throw new Error(\"input should have 3 dimensions\");if(![2560,5120,10240].includes(e[0].dims[2]))throw new Error(\"hidden state should be 2560, 5120 or 10240\");if(e[1].dims.length!==1)throw new Error(\"bias is expected to have 1 dimensions\");if(e[0].dims[2]!==e[1].dims[0])throw new Error(\"last dimension of input and bias are not the same\")},Jd=e=>{let t=e[0].dims.slice();t[2]=t[2]/2;let r=M(\"input\",e[0].dataType,e[0].dims,4),a=M(\"bias\",e[0].dataType,[e[0].dims[2]],4),n=q(\"output\",e[0].dataType,t,4),o=U.size(t)/4,u=Fe(e[0].dataType);return{name:\"BiasSplitGelu\",getRunData:()=>({outputs:[{dims:t,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(o/64)}}),getShaderSource:i=>`\n const M_SQRT2 = sqrt(2.0);\n const halfChannels = ${e[0].dims[2]/4/2}u;\n\n ${i.declareVariables(r,a,n)}\n\n ${yn(`vec4<${u}>`,u)}\n\n ${i.mainStart()}\n ${i.guardAgainstOutOfBoundsWorkgroupSizes(o)}\n let biasIdx = global_idx % halfChannels;\n let batchIndex = global_idx / halfChannels;\n let inputOffset = biasIdx + batchIndex * halfChannels * 2;\n let valueLeft = input[inputOffset] + bias[biasIdx];\n let valueRight = input[inputOffset + halfChannels] + bias[biasIdx + halfChannels];\n let geluRight = valueRight * 0.5 * (erf_vf32(valueRight / M_SQRT2) + 1);\n\n ${n.setByOffset(\"global_idx\",\"valueLeft * geluRight\")}\n }`}},ds=e=>{Qd(e.inputs),e.compute(Jd(e.inputs))}});var ec,tc,_t,ps,ms,fs,hs,gs,ys,bs,ws,vs,$s,_s=F(()=>{\"use strict\";Ue();$e();ve();ec=(e,t,r,a,n,o,u,l,i,c,m,f,h)=>{let b,w;typeof l==\"string\"?b=w=(R,N)=>`${l}((${R}),(${N}))`:typeof l==\"function\"?b=w=l:(b=l.scalar,w=l.vector);let _=f?t.length:t,I=f?r.length:r,$=f?a.length:a,x=q(\"outputData\",m,$,4),T=M(\"aData\",i,_,4),A=M(\"bData\",c,I,4),z;if(n)if(o){let R=U.size(t)===1,N=U.size(r)===1,E=t.length>0&&t[t.length-1]%4===0,W=r.length>0&&r[r.length-1]%4===0;R||N?z=x.setByOffset(\"global_idx\",w(R?`${T.type.value}(${T.getByOffset(\"0\")}.x)`:T.getByOffset(\"global_idx\"),N?`${A.type.value}(${A.getByOffset(\"0\")}.x)`:A.getByOffset(\"global_idx\"))):z=`\n let outputIndices = ${x.offsetToIndices(\"global_idx * 4u\")};\n let offsetA = ${T.broadcastedIndicesToOffset(\"outputIndices\",x)};\n let offsetB = ${A.broadcastedIndicesToOffset(\"outputIndices\",x)};\n ${x.setByOffset(\"global_idx\",w(u||E?T.getByOffset(\"offsetA / 4u\"):`${T.type.value}(${T.getByOffset(\"offsetA / 4u\")}[offsetA % 4u])`,u||W?A.getByOffset(\"offsetB / 4u\"):`${A.type.value}(${A.getByOffset(\"offsetB / 4u\")}[offsetB % 4u])`))}\n `}else z=x.setByOffset(\"global_idx\",w(T.getByOffset(\"global_idx\"),A.getByOffset(\"global_idx\")));else{if(!o)throw new Error(\"no necessary to use scalar implementation for element-wise binary op implementation.\");let R=(N,E,W=\"\")=>{let te=`aData[indexA${E}][componentA${E}]`,Y=`bData[indexB${E}][componentB${E}]`;return`\n let outputIndices${E} = ${x.offsetToIndices(`global_idx * 4u + ${E}u`)};\n let offsetA${E} = ${T.broadcastedIndicesToOffset(`outputIndices${E}`,x)};\n let offsetB${E} = ${A.broadcastedIndicesToOffset(`outputIndices${E}`,x)};\n let indexA${E} = offsetA${E} / 4u;\n let indexB${E} = offsetB${E} / 4u;\n let componentA${E} = offsetA${E} % 4u;\n let componentB${E} = offsetB${E} % 4u;\n ${N}[${E}] = ${W}(${b(te,Y)});\n `};m===9?z=`\n var data = vec4(0);\n ${R(\"data\",0,\"u32\")}\n ${R(\"data\",1,\"u32\")}\n ${R(\"data\",2,\"u32\")}\n ${R(\"data\",3,\"u32\")}\n outputData[global_idx] = dot(vec4(0x1, 0x100, 0x10000, 0x1000000), vec4(data));`:z=`\n ${R(\"outputData[global_idx]\",0)}\n ${R(\"outputData[global_idx]\",1)}\n ${R(\"outputData[global_idx]\",2)}\n ${R(\"outputData[global_idx]\",3)}\n `}return`\n ${e.registerUniform(\"vec_size\",\"u32\").declareVariables(T,A,x)}\n\n ${h??\"\"}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.vec_size\")}\n ${z}\n }`},tc=(e,t,r,a,n,o,u=r.dataType)=>{let l=!U.areEqual(r.dims,a.dims),i=r.dims,c=U.size(r.dims),m=!1,f=!1,h=[l];if(l){let w=gt.calcShape(r.dims,a.dims,!1);if(!w)throw new Error(\"Can't perform binary op on the given tensors\");i=w,c=U.size(i);let _=U.size(r.dims)===1,I=U.size(a.dims)===1,$=r.dims.length>0&&r.dims[r.dims.length-1]%4===0,x=a.dims.length>0&&a.dims[a.dims.length-1]%4===0;h.push(_),h.push(I),h.push($),h.push(x);let T=1;for(let A=1;Aw.toString()).join(\"_\"),inputDependencies:b?[\"rank\",\"rank\"]:[\"dims\",\"dims\"]},getShaderSource:w=>ec(w,r.dims,a.dims,i,m,l,f,n,r.dataType,a.dataType,u,b,o),getRunData:()=>({outputs:[{dims:i,dataType:u}],dispatchGroup:{x:Math.ceil(c/64/4)},programUniforms:b?[{type:\"uint32\",data:Math.ceil(U.size(i)/4)},...G(r.dims),...G(a.dims),...G(i)]:[{type:\"uint32\",data:Math.ceil(U.size(i)/4)}]})}},_t=(e,t,r,a,n,o)=>{e.compute(tc(t,n??\"\",e.inputs[0],e.inputs[1],r,a,o))},ps=e=>{_t(e,\"Add\",(t,r)=>`${t}+${r}`)},ms=e=>{_t(e,\"Div\",(t,r)=>`${t}/${r}`)},fs=e=>{_t(e,\"Equal\",{scalar:(t,r)=>`u32(${t}==${r})`,vector:(t,r)=>`vec4(${t}==${r})`},void 0,void 0,9)},hs=e=>{_t(e,\"Mul\",(t,r)=>`${t}*${r}`)},gs=e=>{let t=M(\"input\",e.inputs[0].dataType,e.inputs[0].dims).type.value;_t(e,\"Pow\",{scalar:(a,n)=>`pow_custom(${a},${n})`,vector:(a,n)=>`pow_vector_custom(${a},${n})`},`\n fn pow_custom(a : ${t}, b : ${t}) -> ${t} {\n if (b == ${t}(0.0)) {\n return ${t}(1.0);\n } else if (a < ${t}(0.0) && f32(b) != floor(f32(b))) {\n return ${t}(pow(f32(a), f32(b))); // NaN\n }\n return select(sign(a), ${t}(1.0), round(f32(abs(b) % ${t}(2.0))) != 1.0) * ${t}(${t===\"i32\"?\"round\":\"\"}(pow(f32(abs(a)), f32(b))));\n }\n fn pow_vector_custom(a : vec4<${t}>, b : vec4<${t}>) -> vec4<${t}> {\n // TODO: implement vectorized pow\n return vec4<${t}>(pow_custom(a.x, b.x), pow_custom(a.y, b.y), pow_custom(a.z, b.z), pow_custom(a.w, b.w));\n }\n `)},ys=e=>{_t(e,\"Sub\",(t,r)=>`${t}-${r}`)},bs=e=>{_t(e,\"Greater\",{scalar:(t,r)=>`u32(${t}>${r})`,vector:(t,r)=>`vec4(${t}>${r})`},void 0,void 0,9)},ws=e=>{_t(e,\"Less\",{scalar:(t,r)=>`u32(${t}<${r})`,vector:(t,r)=>`vec4(${t}<${r})`},void 0,void 0,9)},vs=e=>{_t(e,\"GreaterOrEqual\",{scalar:(t,r)=>`u32(${t}>=${r})`,vector:(t,r)=>`vec4(${t}>=${r})`},void 0,void 0,9)},$s=e=>{_t(e,\"LessOrEqual\",{scalar:(t,r)=>`u32(${t}<=${r})`,vector:(t,r)=>`vec4(${t}<=${r})`},void 0,void 0,9)}});var nc,ac,ic,oc,xs,Ss,Is=F(()=>{\"use strict\";$e();je();ve();nc=e=>{if(!e||e.length<1)throw new Error(\"too few inputs\");let t=e[0].dataType,r=e[0].dims.length;for(let a of e){if(a.dataType!==t)throw new Error(\"input tensors should be one type\");if(a.dims.length!==r)throw new Error(\"input tensors should have the same shape\")}},ac=(e,t)=>`\n fn calculateInputIndex(index: u32) -> u32 {\n let sizeInConcatAxis = array(${t});\n for (var i: u32 = 0u; i < ${e}; i += 1u ) {\n if (index < sizeInConcatAxis[i]) {\n return i;\n }\n }\n return ${e}u;\n }`,ic=(e,t)=>{let r=e.length,a=[];for(let n=0;n{let r=e[0].dims.slice();if(t>=r.length||t<-1*r.length)throw new Error(\"axis specified for concat doesn't match input dimensionality\");let a=t<0?r.length+t:t,n=r.slice(0);for(let A=1;A`uniforms.sizeInConcatAxis${A}`).join(\",\"),T=A=>`\n\n ${(()=>{A.registerUniform(\"outputSize\",\"u32\");for(let z=0;z(${x});\n ${$} -= sizeInConcatAxis[inputIndex - 1u];\n }\n\n ${ic(l,I)}\n }`;return{name:\"Concat\",shaderCache:{hint:`${t}`,inputDependencies:m},getRunData:()=>({outputs:[{dims:n,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(o/64)},programUniforms:b}),getShaderSource:T}},xs=(e,t)=>{nc(e.inputs),e.compute(oc(e.inputs,t.axis))},Ss=e=>ge({axis:e.axis})});var xt,bn,Rt=F(()=>{\"use strict\";$e();xt=(e,t)=>{switch(e.activation){case\"Relu\":return{activationFunction:\"\",applyActivation:`value = max(value, ${t}(0.0));`};case\"Sigmoid\":return{activationFunction:\"\",applyActivation:`value = (${t}(1.0) / (${t}(1.0) + exp(-value)));`};case\"Clip\":return{activationFunction:`const clip_min_=${t}(${e.clipMin});const clip_max_=${t}(${e.clipMax});`,applyActivation:\"value = clamp(value, clip_min_, clip_max_);\"};default:return{activationFunction:\"\",applyActivation:\"\"}}},bn=e=>{let t=e?.activation||\"\";if(t===\"Clip\"){let[r,a]=e?.activation_params||[dn,cn];return{activation:t,clipMax:a,clipMin:r,activationCacheKey:`${t}:${r},${a}`}}return{activation:t,activationCacheKey:t}}});var Ye,wn,vn=F(()=>{\"use strict\";Ye=(e,t)=>{switch(e){case 1:return t;case 2:return`vec2<${t}>`;case 3:return`vec3<${t}>`;case 4:return`vec4<${t}>`;default:throw new Error(`${e}-component is not supported.`)}},wn=e=>`\n ${e?\"value = value + getBiasByOutputCoords(coords);\":\"\"}\n `});var $n,ma=F(()=>{\"use strict\";$n=e=>`\nfn getIndexFromCoords4D(coords : vec4, shape : vec4) -> i32 {\n return dot(coords, vec4(\n shape.y * shape.z * shape.w, shape.z * shape.w, shape.w, 1));\n}\nfn getOutputIndexFromCoords(coords : vec4) -> i32 {\n return dot(coords, vec4(\n i32(${e}.x), i32(${e}.y), i32(${e}.z), 1));\n}\n`});var sc,uc,Ir,Cs,lc,Cr,dc,_n,Ar=F(()=>{\"use strict\";$e();ve();Rt();vn();sc=(e,t)=>e?`\n mm_Asub[inputRow][inputCol] = mm_readA(batch,\n kStart + inputRow,\n globalRowStart / innerElementSize + inputCol${t?\", batchIndices\":\"\"});\n `:`\n mm_Asub[inputRow][inputCol] = mm_readA(batch,\n globalRow + innerRow,\n kStart / innerElementSize + inputCol${t?\", batchIndices\":\"\"});\n `,uc=(e,t)=>e?`\n let ACached0 = mm_Asub[k * innerElementSize][localRow];\n let ACached1 = mm_Asub[k * innerElementSize + 1][localRow];\n let ACached2 = mm_Asub[k * innerElementSize + 2][localRow];\n ${t===3?\"\":\"let ACached3 = mm_Asub[k * innerElementSize + 3][localRow];\"}\n for (var i = 0; i < rowPerThread; i = i + 1) {\n acc[i] = BCached0 * ACached0[i] + acc[i];\n acc[i] = BCached1 * ACached1[i] + acc[i];\n acc[i] = BCached2 * ACached2[i] + acc[i];\n ${t===3?\"\":\"acc[i] = BCached3 * ACached3[i] + acc[i];\"}\n }`:`\n for (var i = 0; i < rowPerThread; i = i + 1) {\n let ACached = mm_Asub[tileRow + i][k];\n acc[i] = BCached0 * ACached.x + acc[i];\n acc[i] = BCached1 * ACached.y + acc[i];\n acc[i] = BCached2 * ACached.z + acc[i];\n ${t===3?\"\":\"acc[i] = BCached3 * ACached.w + acc[i];\"}\n }`,Ir=(e,t,r=\"f32\",a,n=!1,o=32,u=!1,l=32)=>{let i=t[1]*e[1],c=t[0]*e[0],m=n?i:o,f=n?o:i,h=m/t[0],b=o/t[1];if(!((n&&h===4&&e[1]===4||!n&&(h===3||h===4))&&m%t[0]===0&&o%t[1]===0&&e[0]===4))throw new Error(`If transposeA ${n} is true, innerElementSize ${h} and workPerThread[1] ${e[1]} must be 4.\n Otherwise, innerElementSize ${h} must be 3 or 4.\n tileAWidth ${m} must be divisible by workgroupSize[0]${t[0]}. tileInner ${o} must be divisible by workgroupSize[1] ${t[1]}. colPerThread ${e[0]} must be 4.`);return`\nvar mm_Asub: array, ${m/h}>, ${f}>;\nvar mm_Bsub: array, ${c/e[0]}>, ${o}>;\n\nconst rowPerThread = ${e[1]};\nconst colPerThread = ${e[0]};\nconst innerElementSize = ${h};\nconst tileInner = ${o};\n\n@compute @workgroup_size(${t[0]}, ${t[1]}, ${t[2]})\nfn main(@builtin(local_invocation_id) localId : vec3,\n @builtin(global_invocation_id) globalId : vec3,\n @builtin(workgroup_id) workgroupId : vec3) {\n let localRow = i32(localId.y);\n let tileRow = localRow * rowPerThread;\n let tileCol = i32(localId.x);\n\n let globalRow =i32(globalId.y) * rowPerThread;\n let globalCol = i32(globalId.x);\n let batch = ${u?\"0\":\"i32(globalId.z)\"};\n ${a?`let batchIndices = ${a.offsetToIndices(\"u32(batch)\")};`:\"\"}\n let globalRowStart = i32(workgroupId.y) * ${i};\n\n let numTiles = ${u?`${Math.ceil(l/o)}`:\"(uniforms.dimInner - 1) / tileInner + 1\"};\n var kStart = ${u?`i32(globalId.z) * ${l}`:\"0\"};\n\n var acc: array, rowPerThread>;\n\n // Loop over shared dimension.\n let tileRowB = localRow * ${b};\n for (var t = 0; t < numTiles; t = t + 1) {\n // Load one tile of A into local memory.\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n let inputRow = tileRow + innerRow;\n let inputCol = tileCol;\n ${sc(n,a)}\n }\n\n // Load one tile of B into local memory.\n for (var innerRow = 0; innerRow < ${b}; innerRow = innerRow + 1) {\n let inputRow = tileRowB + innerRow;\n let inputCol = tileCol;\n mm_Bsub[inputRow][inputCol] = mm_readB(batch, kStart + inputRow, globalCol${a?\", batchIndices\":\"\"});\n }\n kStart = kStart + tileInner;\n workgroupBarrier();\n\n // Compute acc values for a single thread.\n for (var k = 0; k < tileInner / innerElementSize; k = k + 1) {\n let BCached0 = mm_Bsub[k * innerElementSize][tileCol];\n let BCached1 = mm_Bsub[k * innerElementSize + 1][tileCol];\n let BCached2 = mm_Bsub[k * innerElementSize + 2][tileCol];\n ${h===3?\"\":\"let BCached3 = mm_Bsub[k * innerElementSize + 3][tileCol];\"}\n\n ${uc(n,h)}\n }\n\n workgroupBarrier();\n }\n\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n mm_write(batch, globalRow + innerRow, globalCol, acc[innerRow]);\n }\n}`},Cs=(e,t)=>e?`\n mm_Asub[inputRow][inputCol] = mm_readA(batch,\n kStart + inputRow,\n globalRowStart + inputCol${t?\", batchIndices\":\"\"});\n `:`\n mm_Asub[inputRow][inputCol] = mm_readA(batch,\n globalRowStart + inputRow,\n kStart + inputCol${t?\", batchIndices\":\"\"});\n `,lc=e=>e?\"let ACached = mm_Asub[k][tileRow + innerRow];\":\"let ACached = mm_Asub[tileRow + innerRow][k];\",Cr=(e,t,r=\"f32\",a,n=!1,o=32,u=!1,l=32,i=!1)=>{let c=e[1]*t[1],m=e[0]*t[0],f=n?c:o,h=n?o:c;if(!(h%t[1]===0&&f%t[0]===0&&o%t[1]===0))throw new Error(`tileAHight ${h} must be divisible by workgroupSize[1]${t[1]}, tileAWidth ${f} must be divisible by workgroupSize[0]${t[0]}, tileInner ${o} must be divisible by workgroupSize[1]${t[1]}`);let b=h/t[1],w=f/t[0],_=o/t[1],I=i?`\n let localRow = i32(localId.y);\n let localCol = i32(localId.x);\n let globalRowStart = i32(workgroupId.y) * ${c};\n let globalColStart = i32(workgroupId.x) * ${m};\n\n // Loop over shared dimension.\n for (var t = 0; t < numTiles; t = t + 1) {\n // Load one tile of A into local memory.\n for (var inputRow = localRow; inputRow < ${h}; inputRow = inputRow + ${t[1]}) {\n for (var inputCol = localCol; inputCol < ${f}; inputCol = inputCol + ${t[0]}) {\n ${Cs(n,a)}\n }\n }\n // Load one tile of B into local memory.\n for (var inputRow = localRow; inputRow < ${o}; inputRow = inputRow + ${t[1]}) {\n for (var inputCol = localCol; inputCol < ${m}; inputCol = inputCol + ${t[0]}) {\n mm_Bsub[inputRow][inputCol] = mm_readB(batch,\n kStart + inputRow,\n globalColStart + inputCol${a?\", batchIndices\":\"\"});\n }\n }\n kStart = kStart + tileInner;\n workgroupBarrier();\n\n // Compute acc values for a single thread.\n var BCached : array<${r}, colPerThread>;\n for (var k = 0; k < tileInner; k = k + 1) {\n for (var inner = 0; inner < colPerThread; inner = inner + 1) {\n BCached[inner] = mm_Bsub[k][localCol + inner * ${t[0]}];\n }\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n let ACached = ${n?`mm_Asub[k][localRow + innerRow * ${t[1]}];`:`mm_Asub[localRow + innerRow * ${t[1]}][k];`}\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n acc[innerRow][innerCol] = acc[innerRow][innerCol] +\n ACached * BCached[innerCol];\n }\n }\n }\n workgroupBarrier();\n }\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n let gRow = globalRowStart + localRow + innerRow * ${t[1]};\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n let gCol = globalColStart + localCol + innerCol * ${t[0]};\n mm_write(batch, gRow, gCol, acc[innerRow][innerCol]);\n }\n }\n `:`\nlet tileRow = i32(localId.y) * rowPerThread;\nlet tileCol = i32(localId.x) * colPerThread;\n\nlet globalRow = i32(globalId.y) * rowPerThread;\nlet globalCol = i32(globalId.x) * colPerThread;\nlet globalRowStart = i32(workgroupId.y) * ${c};\n\nlet tileRowA = i32(localId.y) * ${b};\nlet tileColA = i32(localId.x) * ${w};\nlet tileRowB = i32(localId.y) * ${_};\n// Loop over shared dimension.\nfor (var t = 0; t < numTiles; t = t + 1) {\n // Load one tile of A into local memory.\n for (var innerRow = 0; innerRow < ${b}; innerRow = innerRow + 1) {\n for (var innerCol = 0; innerCol < ${w}; innerCol = innerCol + 1) {\n let inputRow = tileRowA + innerRow;\n let inputCol = tileColA + innerCol;\n ${Cs(n,a)}\n }\n }\n\n // Load one tile of B into local memory.\n for (var innerRow = 0; innerRow < ${_}; innerRow = innerRow + 1) {\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n let inputRow = tileRowB + innerRow;\n let inputCol = tileCol + innerCol;\n mm_Bsub[inputRow][inputCol] = mm_readB(batch,\n kStart + inputRow,\n globalCol + innerCol${a?\", batchIndices\":\"\"});\n }\n }\n kStart = kStart + tileInner;\n workgroupBarrier();\n\n // Compute acc values for a single thread.\n var BCached : array<${r}, colPerThread>;\n for (var k = 0; k < tileInner; k = k + 1) {\n for (var inner = 0; inner < colPerThread; inner = inner + 1) {\n BCached[inner] = mm_Bsub[k][tileCol + inner];\n }\n\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n ${lc(n)}\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n acc[innerRow][innerCol] = acc[innerRow][innerCol] + ACached * BCached[innerCol];\n }\n }\n }\n\n workgroupBarrier();\n}\n\nfor (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n mm_write(batch, globalRow + innerRow, globalCol + innerCol,\n acc[innerRow][innerCol]);\n }\n}\n`;return`\n var mm_Asub : array, ${h}>;\n var mm_Bsub : array, ${o}>;\n const rowPerThread = ${e[1]};\n const colPerThread = ${e[0]};\n const tileInner = ${o};\n\n@compute @workgroup_size(${t[0]}, ${t[1]}, ${t[2]})\nfn main(@builtin(local_invocation_id) localId : vec3,\n @builtin(global_invocation_id) globalId : vec3,\n @builtin(workgroup_id) workgroupId : vec3) {\n let batch = ${u?\"0\":\"i32(globalId.z)\"};\n ${a?`let batchIndices = ${a.offsetToIndices(\"u32(batch)\")};`:\"\"}\n let numTiles = ${u?`${Math.ceil(l/o)}`:\"(uniforms.dimInner - 1) / tileInner + 1\"};\n var kStart = ${u?`i32(globalId.z) * ${l}`:\"0\"};\n\n var acc : array, rowPerThread>;\n\n // Without this initialization strange values show up in acc.\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n acc[innerRow][innerCol] = 0.0;\n }\n }\n ${I}\n }\n`},dc=(e,t,r,a,n,o=!1)=>{let[u,l,i]=n,[c,m,f,h]=a,b=er(u,i),w=er(l,i),_=Fe(a[0].type.tensor),I=()=>{let T=m.rank,A=c.rank,z=`var aIndices: ${m.type.indices};`;for(let R=T-2-1,N=A-1;R>=0;R--,N--)z+=`\naIndices[${R}] = ${A>1?`batchIndices[${N}]`:\"batchIndices\"};`;return b.forEach(R=>{z+=`\naIndices[${R}] = 0;`}),z+=`\naIndices[${T-2}] = u32(row);\n aIndices[${T-1}] = u32(colIn);`,z},$=()=>{let T=f.rank,A=c.rank,z=`var bIndices: ${f.type.indices};`;for(let R=T-2-1,N=A-1;R>=0;R--,N--)z+=`\nbIndices[${R}] = ${A>1?`batchIndices[${N}]`:\"batchIndices\"};`;return w.forEach(R=>{z+=`\nbIndices[${R}] = 0;`}),z+=`\nbIndices[${T-2}] = u32(row);\n bIndices[${T-1}] = u32(colIn);`,z};return`\n fn mm_readA(batch: i32, row: i32, colIn: i32, batchIndices: ${c.type.indices}) -> ${Ye(e,_)} {\n var value = ${Ye(e,_)}(0.0);\n let col = colIn * ${e};\n if(row < uniforms.dimAOuter && col < uniforms.dimInner)\n {\n ${I()}\n value = ${m.getByIndices(\"aIndices\")};\n }\n return value;\n }\n\n fn mm_readB(batch: i32, row: i32, colIn: i32, batchIndices: ${c.type.indices}) -> ${Ye(e,_)} {\n var value = ${Ye(e,_)}(0.0);\n let col = colIn * ${e};\n if(row < uniforms.dimInner && col < uniforms.dimBOuter)\n {\n ${$()}\n value = ${f.getByIndices(\"bIndices\")};\n }\n return value;\n }\n\n fn mm_write(batch: i32, row: i32, colIn: i32, valueIn: ${Ye(e,_)}) {\n let col = colIn * ${e};\n if (row < uniforms.dimAOuter && col < uniforms.dimBOuter) {\n var value = valueIn;\n let coords = vec3(batch, row, colIn);\n ${t?`value = value + ${o?\"bias[colIn]\":`${Ye(e,_)}(bias[row])`};`:\"\"}\n ${r}\n ${h.setByIndices(\"vec3(coords)\",\"value\")}\n }\n }\n `},_n=(e,t,r,a,n=!1)=>{let o=e[0].dims,u=e[1].dims,l=o.slice(0,-2),i=u.slice(0,-2),c=a?a.slice(0,-2):r.slice(0,-2),m=Be(c.length),f=m?c.length:c,h=pn(\"batchDims\",e[0].dataType,f,1),b=U.size(c),w=o[o.length-2],_=o[o.length-1],I=u[u.length-1],$=_%4===0&&I%4===0,x=w<=8?[4,1,1]:[4,4,1],T=[8,8,1],A=[Math.ceil(I/T[0]/x[0]),Math.ceil(w/T[1]/x[1]),Math.ceil(b/T[2]/x[2])],z=Fe(e[0].dataType),R=$?4:1,N=[...l,w,_/R],E=Be(N.length),W=E?N.length:N,te=[...i,_,I/R],Y=Be(te.length),K=Y?te.length:te,X=[b,w,I/R],Z=M(\"a\",e[0].dataType,W,R),Oe=M(\"b\",e[1].dataType,K,R),Pe=q(\"result\",e[0].dataType,X.length,R),fe=[Z,Oe],Ae=[{type:\"int32\",data:w},{type:\"int32\",data:I},{type:\"int32\",data:_}];m&&Ae.push(...G(c)),E&&Ae.push(...G(N)),Y&&Ae.push(...G(te));let he=[];he.push(E?\"rank\":\"dims\"),he.push(Y?\"rank\":\"dims\");let ye=e.length>2,{activationFunction:He,applyActivation:ze}=xt(t,Pe.type.value),Ge=dc(R,ye,ze,[h,Z,Oe,Pe],[l,i,c],n);if(ye){let ee=n?R:1;fe.push(M(\"bias\",e[2].dataType,e[2].dims.length,ee)),Ae.push(...G(e[2].dims)),he.push(\"rank\")}Ae.push(...G(X));let L=ee=>`\n ${ee.registerUniform(\"dimAOuter\",\"i32\").registerUniform(\"dimBOuter\",\"i32\").registerUniform(\"dimInner\",\"i32\").registerInternalVariables(h).declareVariables(...fe,Pe)}\n ${He}\n ${Ge}\n ${$?Ir(x,T,z,h):Cr(x,T,z,h)}\n `;return{name:\"MatMul\",shaderCache:{hint:t.activationCacheKey+`${x}${$}${n}`,inputDependencies:he},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:A[0],y:A[1],z:A[2]},programUniforms:Ae}),getShaderSource:L}}});var cc,As,Es=F(()=>{\"use strict\";Pt();ve();Rt();vn();ma();Ar();cc=(e,t,r,a,n=!1,o,u=4,l=4,i=4,c=\"f32\")=>{let m=Y=>{switch(Y){case 1:return\"resData = x[xIndex];\";case 3:return`resData = vec3<${c}>(x[xIndex], x[xIndex + 1], x[xIndex + 2]);`;case 4:return\"resData = x[xIndex / 4];\";default:throw new Error(`innerElementSize ${Y} is not supported.`)}},f=Y=>{switch(Y){case 1:return\"return w[row * i32(uniforms.w_shape[3]) + colIn];\";case 4:return\"return w[row * i32(uniforms.w_shape[3]) / 4 + colIn];\";default:throw new Error(`innerElementSize ${Y} is not supported.`)}},h=e?`\n let coord = vec4(batch, xRow, xCol, xCh);\n `:`\n let coord = vec4(batch, xCh, xRow, xCol);\n `,b=e?`\n let coords = vec4(\n batch,\n row / outWidth,\n row % outWidth,\n col);\n `:`\n let coords = vec4(\n batch,\n row,\n col / outWidth,\n col % outWidth);\n `,w=e?\"i32(uniforms.x_shape[1])\":\"i32(uniforms.x_shape[2])\",_=e?\"i32(uniforms.x_shape[2])\":\"i32(uniforms.x_shape[3])\",I=e?\"row\":\"col\",$=e?\"col\":\"row\",x=`\n let inChannels = i32(uniforms.w_shape[2]);\n let outWidth = ${e?\"i32(uniforms.result_shape[2])\":\"i32(uniforms.result_shape[3])\"};\n let outRow = ${I} / outWidth;\n let outCol = ${I} % outWidth;\n\n let WRow = ${$} / (filterDims[1] * inChannels);\n let WCol = ${$} / inChannels % filterDims[1];\n let xRow = outRow * stride[0] + dilation[0] * WRow - pad[0];\n let xCol = outCol * stride[1] + dilation[1] * WCol - pad[1];\n let xCh = ${$} % inChannels;\n var resData = ${Ye(u,c)}(0.0);\n // The bounds checking is always needed since we use it to pad zero for\n // the 'same' padding type.\n if (xRow >= 0 && xRow < ${w} && xCol >= 0 && xCol < ${_}) {\n ${h}\n let xIndex = getIndexFromCoords4D(coord, vec4(uniforms.x_shape));\n ${m(u)}\n }\n return resData;`,T=e?t&&a?`\n let col = colIn * ${u};\n ${x}`:`\n let col = colIn * ${u};\n if (row < uniforms.dimAOuter && col < uniforms.dimInner) {\n ${x}\n }\n return ${Ye(u,c)}(0.0);`:a&&r?`\n let col = colIn * ${u};\n ${x}`:`\n let col = colIn * ${u};\n if (row < uniforms.dimInner && col < uniforms.dimBOuter) {\n ${x}\n }\n return ${Ye(u,c)}(0.0);`,A=`${f(l)}`,z=Ye(i,c),R=e?Ye(u,c):Ye(l,c),N=e?Ye(l,c):Ye(u,c),{activationFunction:E,applyActivation:W}=xt(o,z);return`\n ${E}\n fn mm_readA(batch: i32, row : i32, colIn : i32) -> ${R} {\n ${e?T:A}\n }\n\n fn mm_readB(batch: i32, row : i32, colIn : i32) -> ${N} {\n ${e?A:T}\n }\n\n fn mm_write(batch: i32, row : i32, colIn : i32, valueIn : ${z}) {\n let col = colIn * ${i};\n if (row < uniforms.dimAOuter && col < uniforms.dimBOuter)\n {\n var value = valueIn;\n let outWidth = ${e?\"i32(uniforms.result_shape[2])\":\"i32(uniforms.result_shape[3])\"};\n ${b}\n ${wn(n)}\n ${W}\n setOutputAtCoords(coords[0], coords[1], coords[2], coords[3], value);\n }\n }`},As=(e,t,r,a,n,o,u,l)=>{let i=t.format===\"NHWC\",c=i?e[0].dims[3]:e[0].dims[1],m=r[0],f=i?r[2]:r[3],h=i?r[1]:r[2],b=i?r[3]:r[1],w=i&&(c%4===0||c%3===0)&&b%4===0,_=i?b:f*h,I=i?f*h:b,$=[8,8,1],x=a<=8?[4,1,1]:[4,4,1],T=[Math.ceil(_/$[0]/x[0]),Math.ceil(I/$[1]/x[1]),Math.ceil(m/$[2]/x[2])];De(\"verbose\",()=>`[conv2d_mm_webgpu] dispatch = ${T}`);let A=w?i&&c%4!==0?3:4:1,z=$[1]*x[1],R=$[0]*x[0],N=Math.max($[0]*A,$[1]),E=a%z===0,W=n%R===0,te=o%N===0,Y=w?[A,4,4]:[1,1,1],K=Fe(e[0].dataType),X=w?4:1,Z=[{type:\"int32\",data:a},{type:\"int32\",data:n},{type:\"int32\",data:o}],Oe=M(\"x\",e[0].dataType,e[0].dims.length,A===3?1:A),Pe=M(\"w\",e[1].dataType,e[1].dims.length,X),fe=[Oe,Pe];Z.push(...G(e[0].dims)),Z.push(...G(e[1].dims));let Ae=`\n fn setOutputAtIndex(flatIndex : i32, value : ${w?`vec4<${K}>`:K}) {\n result[flatIndex] = ${w?`vec4<${K}>`:K}(value);\n }\n fn setOutputAtCoords(d0 : i32, d1 : i32, d2 : i32, d3 : i32, value : ${w?`vec4<${K}>`:K}) {\n let flatIndex = getOutputIndexFromCoords(vec4(d0, d1, d2, d3));\n setOutputAtIndex(flatIndex ${w?\"/ 4\":\"\"}, value);\n }`;if(u){let ye=M(\"bias\",e[2].dataType,e[2].dims.length,X);fe.push(ye),Z.push(...G(e[2].dims)),Ae+=`\n fn getBiasByOutputCoords(coords : vec4) -> ${w?`vec4<${K}>`:K} {\n return bias[coords.${i?\"w\":\"y\"}${w?\"/ 4\":\"\"}];\n }`}let he=q(\"result\",e[0].dataType,r.length,X);return Z.push(...G(r)),{name:\"Conv2DMatMul\",shaderCache:{hint:t.cacheKey},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:T[0],y:T[1],z:T[2]},programUniforms:Z}),getShaderSource:ye=>`\n ${$n(\"uniforms.result_strides\")}\n //struct Uniforms { xShape : vec4, wShape : vec4, outShape : vec4,\n // outShapeStrides: vec3, filterDims : vec2, pad : vec2, stride : vec2,\n // dilation : vec2, dimAOuter : i32, dimBOuter : i32, dimInner : i32 };\n ${ye.registerUniform(\"dimAOuter\",\"i32\").registerUniform(\"dimBOuter\",\"i32\").registerUniform(\"dimInner\",\"i32\").declareVariables(...fe,he)}\n const filterDims : vec2 = vec2(${t.kernelShape[0]}, ${t.kernelShape[1]});\n const pad : vec2 = vec2(${t.pads[0]}, ${t.pads[1]});\n const stride : vec2 = vec2(${t.strides[0]}, ${t.strides[1]});\n const dilation : vec2 = vec2(${t.dilations[0]}, ${t.dilations[1]});\n ${Ae}\n ${cc(i,E,W,te,u,t,Y[0],Y[1],Y[2],K)}\n ${w?Ir(x,$,K,void 0,!i,N):Cr(x,$,K,void 0,!i,N,!1,void 0,l)}`}}});var fa,Ts=F(()=>{\"use strict\";$e();ve();ga();Rt();fa=(e,t,r)=>{let a=e.length>2,n=a?\"value += b[output_channel];\":\"\",o=e[0].dims,u=e[1].dims,l=u[0]/t.group,i=t.format===\"NHWC\",c=ha(o,u,t.dilations,t.pads,t.strides,i),m=U.size(c),f=q(\"output\",e[0].dataType,c),{activationFunction:h,applyActivation:b}=xt(t,f.type.value),w=M(\"x\",e[0].dataType,o),_=M(\"w\",e[1].dataType,u),I=[w,_];a&&I.push(M(\"b\",e[2].dataType,e[2].dims));let $=x=>`\n const strides: vec2 = vec2(${t.strides[0]}u, ${t.strides[1]}u);\n const pads: vec2 = vec2(${t.pads[0]}u, ${t.pads[1]}u);\n\n ${x.declareVariables(...I,f)}\n\n ${h}\n\n ${x.mainStart()}\n ${x.guardAgainstOutOfBoundsWorkgroupSizes(m)}\n\n let outputIndices = ${f.offsetToIndices(\"global_idx\")};\n let batch: u32 = outputIndices[0];\n let output_channel: u32 = outputIndices[${i?3:1}];\n let xRCCorner: vec2 = vec2(outputIndices[${i?1:2}], outputIndices[${i?2:3}]) * strides - pads;\n let group_id: u32 = output_channel / ${l}u;\n\n var value: ${f.type.value} = ${f.type.value}(0);\n for (var wInChannel: u32 = 0u; wInChannel < ${u[1]}u; wInChannel++) {\n let input_channel = group_id * ${u[1]}u + wInChannel;\n for (var wHeight: u32 = 0u; wHeight < ${u[2]}u; wHeight++) {\n let xHeight = xRCCorner.x + wHeight * ${t.dilations[0]}u;\n\n if (xHeight < 0u || xHeight >= ${o[i?1:2]}u) {\n continue;\n }\n\n for (var wWidth: u32 = 0u; wWidth < ${u[3]}u; wWidth++) {\n let xWidth = xRCCorner.y + wWidth * ${t.dilations[1]}u;\n if (xWidth < 0u || xWidth >= ${o[i?2:3]}u) {\n continue;\n }\n\n let xVal = ${i?w.get(\"batch\",\"xHeight\",\"xWidth\",\"input_channel\"):w.get(\"batch\",\"input_channel\",\"xHeight\",\"xWidth\")};\n let wVal = ${_.get(\"output_channel\",\"wInChannel\",\"wHeight\",\"wWidth\")};\n value += xVal*wVal;\n }\n }\n }\n ${n}\n ${b}\n ${f.setByOffset(\"global_idx\",\"value\")}\n }`;return{name:\"GroupedConv\",shaderCache:{hint:t.cacheKey},getRunData:()=>({outputs:[{dims:r?r(c):c,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(m/64)}}),getShaderSource:$}}});var ya,pc,Os,ba=F(()=>{\"use strict\";$e();Ar();ve();Rt();ya=(e,t,r,a,n=!1)=>{let o=e[0].dims,u=e[1].dims,l=o[o.length-2],i=u[u.length-1],c=o[o.length-1],m=qe(i),f=qe(c),h=qe(l),b=U.size(r)/m/h,w=e.length>2,_=a?a.slice(0,-2):r.slice(0,-2),$=[U.size(_),l,i],x=[{type:\"uint32\",data:b},{type:\"uint32\",data:l},{type:\"uint32\",data:i},{type:\"uint32\",data:c},...G(_),...G(o),...G(u)];w&&x.push(...G(e[2].dims)),x.push(...G($));let T=A=>{let z=pn(\"batch_dims\",e[0].dataType,_.length),R=M(\"a\",e[0].dataType,o.length,f),N=M(\"b\",e[1].dataType,u.length,m),E=q(\"output\",e[0].dataType,$.length,m),{activationFunction:W,applyActivation:te}=xt(t,E.type.value),Y=[R,N],K=\"\";if(w){let he=n?m:1;Y.push(M(\"bias\",e[2].dataType,e[2].dims.length,he)),K=`${n?`value += bias[col / ${he}];`:`value += ${E.type.value}(bias[row + i]);`}`}let X=o.slice(0,-2),Z=u.slice(0,-2),Oe=er(X,_),Pe=er(Z,_),fe=(he,ye)=>{let He=he.rank,ze=he.name;if(He===2)return`var ${ze}_indices = ${he.type.indices}(0u, 0u);`;let Ge=z.rank,L=`var ${ze}_indices: ${he.type.indices};`;for(let ee=He-2-1,be=Ge-1;ee>=0;ee--,be--)L+=`\n${ze}_indices[${ee}] = ${Ge>1?`batch_indices[${be}]`:\"batch_indices\"};`;return ye.forEach(ee=>{L+=`\n${ze}_indices[${ee}] = 0;`}),L+=`${ze}_indices[${He-2}] = 0u;\n ${ze}_indices[${He-1}] = 0u;`,L},Ae=()=>{let he=`var a_data: ${R.type.value};`;for(let ye=0;ye;\n for (var k: u32 = 0u; k < uniforms.K; k = k + ${f}) {\n ${Ae()}\n }\n for (var i = 0u; i < ${h}u; i++) {\n var value = values[i];\n ${K}\n ${te}\n let cur_indices = ${E.type.indices}(batch, row + i, col);\n let offset = ${E.indicesToOffset(\"cur_indices\")};\n ${E.setByOffset(`offset / ${m}`,\"value\")};\n }\n }\n `};return{name:\"MatMulNaive\",shaderCache:{hint:`${t.activationCacheKey}_${m}_${f}_${h}_${n}`,inputDependencies:w?[\"rank\",\"rank\",\"rank\"]:[\"rank\",\"rank\"]},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(b/64)},programUniforms:x}),getShaderSource:T}},pc=e=>{if(!e||e.length!==2)throw new Error(\"MatMul requires 2 inputs.\");if(e[0].dims[e[0].dims.length-1]!==e[1].dims[e[1].dims.length-2])throw new Error(\"shared dimension does not match.\")},Os=e=>{pc(e.inputs);let t=gt.calcShape(e.inputs[0].dims,e.inputs[1].dims,!0);if(!t)throw new Error(\"Can't use matmul on the given tensors\");let r=t[t.length-1],a=e.inputs[0].dims[e.inputs[0].dims.length-1];r<8&&a<8?e.compute(ya(e.inputs,{activation:\"\",activationCacheKey:\"\"},t)):e.compute(_n(e.inputs,{activation:\"\",activationCacheKey:\"\"},t))}});var ha,ks,mc,Ps,wa,fc,hc,va,ga=F(()=>{\"use strict\";$e();je();Es();Ar();Ts();Rt();ba();tr();ha=(e,t,r,a,n,o)=>{let u=e[0],l=e.slice(o?1:2,o?3:4),i=l.length,c=t[0],f=t.slice(2).map((w,_)=>w+(w-1)*(r[_]-1)),b=l.map((w,_)=>w+a[_]+a[_+i]).map((w,_)=>Math.floor((w-f[_]+n[_])/n[_]));return b.splice(0,0,u),b.splice(o?3:1,0,c),b},ks=[2,3,1,0],mc=(e,t)=>{if(!e||e.length!==2&&e.length!==3)throw new Error(\"Conv requires 2 or 3 inputs\");if(e[0].dims.length!==4&&e[0].dims.length!==3)throw new Error(\"currently only support conv 1D and 2D\");if(e[0].dims.length!==e[1].dims.length)throw new Error(\"filter does not have same dimension as input\");let r=e[0].dims[t.format===\"NHWC\"?e[0].dims.length-1:1],a=e[1].dims[1]*t.group;if(r!==a)throw new Error(\"FILTER_IN_CHANNEL should be equal to DATA_CHANNEL\");if(e.length===3&&(e[2].dims.length!==1||e[1].dims[0]!==e[2].dims[0]))throw new Error(\"invalid bias\");let n=e[0].dims.length-2;if(t.dilations.length!==n)throw new Error(`dilations should be ${n}D`);if(t.strides.length!==n)throw new Error(`strides should be ${n}D`);if(t.pads.length!==n*2)throw new Error(`pads should be ${n*2}D`);if(t.kernelShape.length!==0&&t.kernelShape.length!==e[1].dims.length-2)throw new Error(\"invalid kernel shape\")},Ps=(e,t)=>{let r=e.kernelShape.slice();for(let o=2;o{let t=bn(e),r=e.format,a=[\"NOTSET\",\"VALID\",\"SAME_UPPER\",\"SAME_LOWER\"][e.auto_pad],n=e.dilations,o=e.group,u=e.kernel_shape,l=e.pads,i=e.strides,c=e.w_is_const();return ge({autoPad:a,format:r,dilations:n,group:o,kernelShape:u,pads:l,strides:i,wIsConst:c,...t})},fc=(e,t,r)=>{let a=Ps(r,t),n=r.format===\"NHWC\";if(r.group!==1){e.compute(fa(t,a));return}let o=t.length===3,u=t[0].dims[n?1:2],l=t[0].dims[n?2:3],i=t[0].dims[n?3:1],c=t[1].dims[2],m=t[1].dims[3],f=ha(t[0].dims,t[1].dims,r.dilations,a.pads,r.strides,n),h=f[n?1:2],b=f[n?2:3],w=f[n?3:1],_=n&&c===u&&m===l&&r.pads[0]===0&&r.pads[1]===0;if(_||c===1&&m===1&&r.dilations[0]===1&&r.dilations[1]===1&&r.strides[0]===1&&r.strides[1]===1&&r.pads[0]===0&&r.pads[1]===0){let R=f[0],N,E,W,te=[];if(n){let X=e.kernelCustomData.wT??e.compute(mt(t[1],ks),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];if(r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=X),_){let Z=u*l*i;N=t[0].reshape([1,R,Z]),E=X.reshape([1,Z,w]),W=[1,R,w]}else N=t[0].reshape([R,u*l,i]),E=X.reshape([1,i,w]),W=[R,h*b,w];te.push(N),te.push(E)}else N=t[0].reshape([R,i,u*l]),E=t[1].reshape([1,w,i]),W=[R,w,h*b],te.push(E),te.push(N);o&&te.push(t[2]);let Y=W[2],K=te[0].dims[te[0].dims.length-1];Y<8&&K<8?e.compute(ya(te,a,f,W,n),{inputs:te}):e.compute(_n(te,a,f,W,n),{inputs:te});return}let I=!0,$=e.kernelCustomData.wT??e.compute(mt(t[1],ks),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=$);let x=[t[0],$];o&&x.push(t[2]);let T=n?h*b:w,A=n?w:h*b,z=c*m*i;e.compute(As(x,a,f,T,A,z,o,I),{inputs:x})},hc=(e,t)=>{let r=t.format===\"NHWC\",a=[e.inputs[0].reshape(r?[e.inputs[0].dims[0],1,e.inputs[0].dims[1],e.inputs[0].dims[2]]:[e.inputs[0].dims[0],e.inputs[0].dims[1],1,e.inputs[0].dims[2]]),e.inputs[1].reshape([e.inputs[1].dims[0],e.inputs[1].dims[1],1,e.inputs[1].dims[2]])];e.inputs.length===3&&a.push(e.inputs[2]);let n=[0,t.pads[0],0,t.pads[1]],o=[1].concat(t.strides),u=[1].concat(t.dilations),l=[1].concat(t.kernelShape),i=Ps({...t,pads:n,strides:o,dilations:u,kernelShape:l},a);e.compute(fa(a,i,c=>r?[c[0],c[2],c[3]]:[]))},va=(e,t)=>{mc(e.inputs,t),e.inputs[0].dims.length===3?hc(e,t):fc(e,e.inputs,t)}});var gc,Rs,Bs=F(()=>{\"use strict\";Pt();ve();Rt();vn();ma();Ar();gc=(e,t=!1,r,a=4)=>{let n=Ye(a,\"f32\"),o=x=>{switch(x){case 1:return\"return w[getIndexFromCoords4D(coord, vec4(uniforms.w_shape))];\";case 4:return`\n let coord1 = vec4(coordX, coordY, col + 1, rowInner);\n let coord2 = vec4(coordX, coordY, col + 2, rowInner);\n let coord3 = vec4(coordX, coordY, col + 3, rowInner);\n let v0 = w[getIndexFromCoords4D(coord, vec4(uniforms.w_shape))];\n let v1 = w[getIndexFromCoords4D(coord1, vec4(uniforms.w_shape))];\n let v2 = w[getIndexFromCoords4D(coord2, vec4(uniforms.w_shape))];\n let v3 = w[getIndexFromCoords4D(coord3, vec4(uniforms.w_shape))];\n return vec4(v0, v1, v2, v3);\n `;default:throw new Error(`innerElementSize ${x} is not supported.`)}},u=e?`\n let coord = vec4(batch, iXR, iXC, xCh);\n `:`\n let coord = vec4(batch, xCh, iXR, iXC);\n `,l=e?`\n let coords = vec4(\n batch,\n row / outWidth,\n row % outWidth,\n col);\n `:`\n let coords = vec4(\n batch,\n row,\n col / outWidth,\n col % outWidth);\n `,i=e?\"outBackprop[1]\":\"outBackprop[2]\",c=e?\"outBackprop[2]\":\"outBackprop[3]\",m=e?\"row\":\"col\",f=e?\"col\":\"row\",h=`\n let inChannels = ${e?\"outBackprop[3]\":\"outBackprop[1]\"};\n let outWidth = ${e?\"i32(uniforms.result_shape[2])\":\"i32(uniforms.result_shape[3])\"};\n let outRow = ${m} / outWidth;\n let outCol = ${m} % outWidth;\n\n let WRow = ${f} / (filterDims[1] * inChannels);\n let WCol = ${f} / inChannels % filterDims[1];\n let xR = f32(outRow - pads[0] + dilation[0] * WRow) / f32(strides[0]);\n let xC = f32(outCol - pads[1] + dilation[1] * WCol) / f32(strides[1]);\n if (xR < 0.0 || xR >= f32(${i}) || fract(xR) > 0.0) {\n return ${n}(0.0);\n }\n if (xC < 0.0 || xC >= f32(${c}) || fract(xC) > 0.0) {\n return ${n}(0.0);\n }\n let iXR = i32(xR);\n let iXC = i32(xC);\n let xCh = ${f} % inChannels;\n ${u}\n return x[getIndexFromCoords4D(coord, vec4(uniforms.x_shape))/${a}];`,b=e?`\n let col = colIn * ${a};\n if (row < uniforms.dimAOuter && col < uniforms.dimInner) {\n ${h}\n }\n return ${n}(0.0);`:`\n let col = colIn * ${a};\n if (row < uniforms.dimInner && col < uniforms.dimBOuter) {\n ${h}\n }\n return ${n}(0.0);`,w=`\n let col = colIn * ${a};\n let inChannels = ${e?\"outBackprop[3]\":\"outBackprop[1]\"};\n let coordX = filterDims.x - 1 - row / (filterDims[1] * inChannels);\n let coordY = filterDims.y - 1 - (row / inChannels) % filterDims[1];\n if (${e?\"row < uniforms.dimInner && col < uniforms.dimBOuter\":\"row < uniforms.dimInner && col < uniforms.dimAOuter\"} && coordX >= 0 && coordY >= 0) {\n let rowInner = row % inChannels;\n let coord = vec4(coordX, coordY, col, rowInner);\n ${o(a)}\n }\n return ${n}(0.0);\n `,{activationFunction:_,applyActivation:I}=xt(r,n);return`\n ${_}\n fn mm_readA(batch: i32, row : i32, colIn : i32) -> ${n} {\n ${e?b:w}\n }\n\n fn mm_readB(batch: i32, row : i32, colIn : i32) -> ${n} {\n ${e?w:b}\n }\n\n fn mm_write(batch: i32, row : i32, colIn : i32, valueInput : ${n}) {\n let col = colIn * ${a};\n if (row < uniforms.dimAOuter && col < uniforms.dimBOuter) {\n var value = valueInput;\n let outWidth = ${e?\"i32(uniforms.result_shape[2])\":\"i32(uniforms.result_shape[3])\"};\n ${l}\n ${wn(t)}\n ${I}\n result[getIndexFromCoords4D(coords, vec4(uniforms.result_shape))/${a}] = value;\n }\n }`},Rs=(e,t,r,a,n,o,u,l)=>{let i=t.format===\"NHWC\",c=i?e[0].dims[3]:e[0].dims[1],m=r[0],f=i?r[2]:r[3],h=i?r[1]:r[2],b=i?r[3]:r[1],w=i?c%4===0&&b%4===0:f%4===0&&b%4===0,_=i?b:f*h,I=i?f*h:b,$=w?[8,8,1]:[_<=4||I<=4?4:16,_>4&&I<=4?4:16,1],x=w?[4,4,1]:[_<=4?1:4,_>4&&I<=4?1:4,1],T=[Math.ceil(_/$[0]/x[0]),Math.ceil(I/$[1]/x[1]),Math.ceil(m/$[2]/x[2])];De(\"verbose\",()=>`[conv_backprop_mm_webgpu] dispatch = ${T}`);let A=w?4:1,z=Math.max($[0]*A,$[1]),R=w?4:1,N=[{type:\"int32\",data:a},{type:\"int32\",data:n},{type:\"int32\",data:o}],E=M(\"x\",e[0].dataType,e[0].dims.length,R),W=M(\"w\",e[1].dataType,e[1].dims.length,1),te=q(\"result\",e[0].dataType,r.length,R),Y=[E,W];N.push(...G(e[0].dims)),N.push(...G(e[1].dims));let K=\"\";if(u){let X=M(\"bias\",e[2].dataType,e[2].dims.length,R);Y.push(X),N.push(...G(e[2].dims)),K+=`\n fn getBiasByOutputCoords(coords : vec4) -> ${w?\"vec4\":\"f32\"} {\n return bias[coords.${i?\"w\":\"y\"}${w?\"/ 4\":\"\"}];\n }`}return N.push(...G(r)),{name:\"Conv2DTransposeMatMul\",shaderCache:{hint:t.cacheKey},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:T[0],y:T[1],z:T[2]},programUniforms:N}),getShaderSource:X=>`\n ${$n(\"uniforms.result_strides\")}\n ${X.registerUniform(\"dimAOuter\",\"i32\").registerUniform(\"dimBOuter\",\"i32\").registerUniform(\"dimInner\",\"i32\").declareVariables(...Y,te)};\n const outBackprop : vec4 = vec4(${e[0].dims.join(\",\")});\n const filterDims : vec2 = vec2(${t.kernelShape[i?1:2]}, ${t.kernelShape[i?2:3]});\n const effectiveFilterDims : vec2 = filterDims + vec2(\n ${t.dilations[0]<=1?0:(t.kernelShape[i?1:2]-1)*(t.dilations[0]-1)},\n ${t.dilations[1]<=1?0:(t.kernelShape[i?2:3]-1)*(t.dilations[1]-1)});\n const pads : vec2 = vec2(i32(effectiveFilterDims[0]) - 1 - (${t.pads[0]+t.pads[2]})/2,\n i32(effectiveFilterDims[1]) - 1 - (${t.pads[1]+t.pads[3]})/2);\n const strides : vec2 = vec2(${t.strides[0]}, ${t.strides[1]});\n const dilation : vec2 = vec2(${t.dilations[0]}, ${t.dilations[1]});\n const dimAOuter : i32 = ${a};\n const dimBOuter : i32 = ${n};\n const dimInner : i32 = ${o};\n ${K}\n ${gc(i,u,t,A)}\n ${w?Ir(x,$,\"f32\",void 0,!i,z):Cr(x,$,\"f32\",void 0,!i,z,!1,void 0,l)}`}}});var yc,$a,Ds=F(()=>{\"use strict\";Pt();$e();ve();yc=(e,t,r,a,n,o,u=!1,l)=>{let i=r.format===\"NHWC\",c=i?1:2,m=i?2:3,f=i?3:1,h=U.size(a),b=u?2:1,w=r.group,_=t[1].dims,I=_[0]/w,$=_[1],x=`\n fn setOutputAtIndex(flatIndex : u32, value : ${u?`vec4<${l}>`:l}) {\n result[flatIndex] = ${u?`vec4<${l}>`:l}(value);\n }`;n&&(x+=`\n fn getBiasByOutputCoords(coords : vec4) -> ${u?`vec4<${l}>`:l} {\n return bias[coords.${i?\"w\":\"y\"}${u?\"/ 4\":\"\"}];\n }`);let T=u?4:1,A=M(\"W\",t[1].dataType,t[1].dims,T),z=M(\"Dy\",t[0].dataType,t[0].dims,T),R=[z,A];n&&R.push(M(\"bias\",t[2].dataType,[a[f]],T));let N=q(\"result\",t[0].dataType,a,T),E=`{\n let batch: u32 = ${o?\"global_id.z\":\"workgroup_id.z\"} / outShape[1];\n let r = ${o?\"global_id.z\":\"workgroup_id.z\"} % outShape[1];\n let c = ${o?\"global_id.y\":\"workgroup_id.y\"} * ${b};\n let d1: u32 = ${o?\"global_id.x\":\"workgroup_id.x\"} * 4;\n\n let dyCorner = vec2(i32(r), i32(c)) - vec2(pads);\n\n // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).\n // ? = to be determined. : = across all values in that axis.\n var dotProd: array, ${b}>;\n for (var i = 0; i < ${b}; i++) {\n dotProd[i] = vec4<${l}>(0.0);\n }\n for (var wR: u32 = 0; wR < filterDims[0]; wR = wR + 1) {\n var dyR = (${l}(dyCorner.x) + ${l}(wR)) / ${l}(strides.x);\n let wRPerm = filterDims[0] - 1 - wR;\n if (dyR < 0.0 || dyR >= ${l}(outBackprop[1]) ||\n fract(dyR) > 0.0 || wRPerm < 0) {\n continue;\n }\n let idyR: u32 = u32(dyR);\n\n for (var wC: u32 = 0; wC < filterDims[1]; wC = wC + 1) {\n let dyC = (${l}(dyCorner.y) + ${l}(wC)) / ${l}(strides.y);\n let dyC2 = (${l}(dyCorner.y) + 1.0 + ${l}(wC)) / ${l}(strides.y);\n let wCPerm = filterDims[1] - 1 - wC;\n if (wCPerm < 0) {\n continue;\n }\n var bDyCVal = true;\n var bDyCVal2 = true;\n if (dyC < 0.0 || dyC >= ${l}(outBackprop[2]) ||\n fract(dyC) > 0.0) {\n bDyCVal = false;\n }\n if (dyC2 < 0.0 || dyC2 >= ${l}(outBackprop[2]) ||\n fract(dyC2) > 0.0) {\n bDyCVal2 = false;\n }\n\n let idyC: u32 = u32(dyC);\n let idyC2: u32 = u32(dyC2);\n if (bDyCVal && bDyCVal2) {\n let d2Length = outBackprop[3];\n for (var d2 :u32 = 0; d2 < d2Length; d2 = d2 + 4) {\n let wValue0 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1\",\"d2\")};\n let wValue1 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 1\",\"d2\")};\n let wValue2 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 2\",\"d2\")};\n let wValue3 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 3\",\"d2\")};\n\n var xValue = ${z.get(\"batch\",\"idyR\",\"idyC\",\"d2\")};\n let tmpval = vec4<${l}>(dot(xValue, wValue0),\n dot(xValue, wValue1),\n dot(xValue, wValue2),\n dot(xValue, wValue3));\n dotProd[0] = dotProd[0] + tmpval;\n\n xValue = ${z.get(\"batch\",\"idyR\",\"idyC2\",\"d2\")};\n\n dotProd[1] = dotProd[1] + vec4<${l}>(dot(xValue, wValue0),\n dot(xValue, wValue1),\n dot(xValue, wValue2),\n dot(xValue, wValue3));\n }\n } else if (bDyCVal) {\n let d2Length = outBackprop[${f}];\n for (var d2: u32 = 0; d2 < d2Length; d2 = d2 + 4) {\n let wValue0 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1\",\"d2\")};\n let wValue1 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 1\",\"d2\")};\n let wValue2 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 2\",\"d2\")};\n let wValue3 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 3\",\"d2\")};\n\n var xValue = ${z.get(\"batch\",\"idyR\",\"idyC\",\"d2\")};\n let tmpval = vec4<${l}>(dot(xValue, wValue0),\n dot(xValue, wValue1),\n dot(xValue, wValue2),\n dot(xValue, wValue3));\n dotProd[0] = dotProd[0] + tmpval;\n }\n } else if (bDyCVal2) {\n let d2Length = outBackprop[3];\n for (var d2: u32 = 0; d2 < d2Length; d2 = d2 + 4) {\n let wValue0 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1\",\"d2\")};\n let wValue1 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 1\",\"d2\")};\n let wValue2 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 2\",\"d2\")};\n let wValue3 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 3\",\"d2\")};\n\n var xValue = ${z.get(\"batch\",\"idyR\",\"idyC2\",\"d2\")};\n let tmpval = vec4<${l}>(dot(xValue, wValue0),\n dot(xValue, wValue1),\n dot(xValue, wValue2),\n dot(xValue, wValue3));\n dotProd[1] = dotProd[1] + tmpval;\n }\n }\n }\n }\n\n for (var i: u32 = 0; i < ${b}; i = i + 1) {\n let value = dotProd[i] + ${n?\"bias[c+i]\":`vec4<${l}>(0.0)`};\n ${N.set(\"batch\",\"r\",\"c + i\",\"d1\",\"value\")};\n }\n }`,W=`\n let outputIndices = ${N.offsetToIndices(\"global_idx\")};\n let batch = ${N.indicesGet(\"outputIndices\",0)};\n let d1 = ${N.indicesGet(\"outputIndices\",f)};\n let r = ${N.indicesGet(\"outputIndices\",c)};\n let c = ${N.indicesGet(\"outputIndices\",m)};\n let dyCorner = vec2(i32(r), i32(c)) - pads;\n let dyRCorner = dyCorner.x;\n let dyCCorner = dyCorner.y;\n let groupId = d1 / ${$};\n let wOutChannel = d1 - groupId * ${$};\n // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).\n // ? = to be determined. : = across all values in that axis.\n var dotProd = ${l}(0.0);\n for (var wR: u32 = 0; wR < effectiveFilterDims.x; wR = wR + 1) {\n if (wR % dilations.x != 0) {\n continue;\n }\n let dyR = (${l}(dyRCorner) + ${l}(wR)) / ${l}(strides[0]);\n let wRPerm = filterDims.x - 1 - wR / dilations.x;\n if (dyR < 0.0 || dyR >= ${l}(outBackprop[${c}]) || fract(dyR) > 0.0 ||\n wRPerm < 0) {\n continue;\n }\n let idyR: u32 = u32(dyR);\n\n for (var wC: u32 = 0; wC < effectiveFilterDims.y; wC = wC + 1) {\n if (wC % dilations.y != 0) {\n continue;\n }\n let dyC = (${l}(dyCCorner) + ${l}(wC)) / ${l}(strides.y);\n let wCPerm = filterDims.y - 1 - wC / dilations.y;\n if (dyC < 0.0 || dyC >= ${l}(outBackprop[${m}]) ||\n fract(dyC) > 0.0 || wCPerm < 0) {\n continue;\n }\n let idyC: u32 = u32(dyC);\n var inputChannel = groupId * ${I};\n for (var d2: u32 = 0; d2 < ${I}; d2 = d2 + 1) {\n let xValue = ${i?z.get(\"batch\",\"idyR\",\"idyC\",\"inputChannel\"):z.get(\"batch\",\"inputChannel\",\"idyR\",\"idyC\")};\n let wValue = ${A.get(\"inputChannel\",\"wOutChannel\",\"u32(wRPerm)\",\"u32(wCPerm)\")};\n dotProd = dotProd + xValue * wValue;\n inputChannel = inputChannel + 1;\n }\n }\n }\n let value = dotProd + ${n?\"bias[d1]\":`${l}(0.0)`};\n ${N.setByOffset(\"global_idx\",\"value\")};\n `;return`\n ${e.declareVariables(...R,N)}\n ${x}\n const outShape : vec4 = vec4(${a.join(\",\")});\n const outBackprop : vec4 = vec4(${t[0].dims.join(\",\")});\n const strides : vec2 = vec2(${r.strides[0]}, ${r.strides[1]});\n const filterDims : vec2 = vec2(${r.kernelShape[i?1:2]}, ${r.kernelShape[i?2:3]});\n const dilations : vec2 = vec2(${r.dilations[0]}, ${r.dilations[1]});\n const effectiveFilterDims : vec2 = filterDims + vec2(\n ${r.dilations[0]<=1?0:(r.kernelShape[i?1:2]-1)*(r.dilations[0]-1)},\n ${r.dilations[1]<=1?0:(r.kernelShape[i?2:3]-1)*(r.dilations[1]-1)});\n const pads : vec2 = vec2(i32(effectiveFilterDims[0]) - 1 - (${r.pads[0]+r.pads[2]})/2,\n i32(effectiveFilterDims[1]) - 1 - (${r.pads[1]+r.pads[3]})/2);\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes(h)};\n ${u?E:W}}`},$a=(e,t,r)=>{let a=e.length>2,n=t.outputShape,o=U.size(n),u=[Math.ceil(o/64),1,1];De(\"verbose\",()=>`[conv2d_backprop_webgpu] dispatch = ${u}`);let l=Fe(e[0].dataType);return{name:\"ConvTranspose2D\",shaderCache:{hint:t.cacheKey},getRunData:()=>({dispatchGroup:{x:u[0],y:u[1],z:u[2]},outputs:[{dims:r?r(n):n,dataType:e[0].dataType}]}),getShaderSource:i=>yc(i,e,t,n,a,u[1]===1&&u[2]===1,!1,l)}}});var bc,wc,vc,zs,Ms,$c,_c,xc,Sc,Us,Ns=F(()=>{\"use strict\";je();Bs();Ds();Rt();tr();bc=(e,t,r,a,n,o)=>(e-1)*t+r+(a-1)*n+1-o,wc=(e,t,r,a,n)=>{let o=Math.floor(e/2);t===\"SAME_UPPER\"?(r[a]=o,r[n]=e-o):t===\"SAME_LOWER\"&&(r[a]=e-o,r[n]=o)},vc=(e,t,r,a,n,o,u,l,i,c)=>{let m=e.length-2,f=c.length===0;if(i.length===0)for(let w=0;w{let r=e.kernelShape.slice();if(e.kernelShape.length===0||e.kernelShape.reduce((h,b)=>h*b,1)===0){r.length=0;for(let h=2;hh+b,0)===0){let h=t[0].dims.length-2;i=new Array(h).fill(1)}let c=e.strides.slice();if(c.reduce((h,b)=>h+b,0)===0){let h=t[0].dims.length-2;c=new Array(h).fill(1)}vc(l,r,i,e.autoPad,e.group,n,c,a,u,o);let m=Object.assign({},e),f=e.cacheKey+[r.join(\"n,\"),n.join(\",\"),c.join(\",\"),u.join(\",\"),o.join(\",\"),i.join(\",\")].join(\"_\");return Object.assign(m,{kernelShape:r,pads:n,outputPadding:u,outputShape:o,dilations:i,strides:c,cacheKey:f}),m},Ms=e=>{let t=bn(e),r=e.format,a=[\"NOTSET\",\"VALID\",\"SAME_UPPER\",\"SAME_LOWER\"][typeof e.autoPad>\"u\"?0:e.autoPad],n=e.dilations,o=e.group,u=e.kernelShape,l=e.pads,i=e.strides,c=e.wIsConst(),m=e.outputPadding,f=e.outputShape;return ge({autoPad:a,format:r,dilations:n,group:o,kernelShape:u,outputPadding:m,outputShape:f,pads:l,strides:i,wIsConst:c,...t})},$c=(e,t)=>{if(!e||e.length!==2&&e.length!==3)throw new Error(\"Conv requires 2 or 3 inputs\");if(e[0].dims.length!==4&&e[0].dims.length!==3)throw new Error(\"currently only support 2-dimensional conv\");if(e[0].dims.length!==e[1].dims.length)throw new Error(\"filter does not have same dimension as input\");let r=e[0].dims[t.format===\"NHWC\"?e[0].dims.length-1:1],a=e[1].dims[0];if(r!==a)throw new Error(\"FILTER_IN_CHANNEL should be equal to DATA_CHANNEL\");let n=e[1].dims[1]*t.group;if(e.length===3&&(e[2].dims.length!==1||e[2].dims[0]!==n))throw new Error(\"invalid bias\");let o=e[0].dims.length-2;if(t.dilations.reduce((m,f)=>m+f,0)>0&&t.dilations.length!==o)throw new Error(`dilations should be ${o}D`);if(t.strides.reduce((m,f)=>m+f,0)>0&&t.strides.length!==o)throw new Error(`strides should be ${o}D`);if(t.pads.reduce((m,f)=>m+f,0)>0&&t.pads.length!==o*2)throw new Error(`pads should be ${o*2}D`);if(t.outputPadding.length!==o&&t.outputPadding.length!==0)throw new Error(`output_padding should be ${o}D`);if(t.kernelShape.reduce((m,f)=>m+f,0)>0&&t.kernelShape.length!==0&&t.kernelShape.length!==e[1].dims.length-2)throw new Error(\"invalid kernel shape\");if(t.outputShape.length!==0&&t.outputShape.length!==e[0].dims.length-2)throw new Error(\"invalid output shape\")},_c=[2,3,1,0],xc=(e,t,r)=>{let a=zs(r,t),n=r.format===\"NHWC\",o=a.outputShape,u=o[n?3:1],l=t[0].dims[n?3:1];if(a.group!==1||u===1&&l===1){e.compute($a(t,a));return}let i=o[n?1:2],c=o[n?2:3],m=t[1].dims[2],f=t[1].dims[3],h=n?i*c:u,b=n?u:i*c,w=m*f*l,_=!0,I=e.kernelCustomData.wT??e.compute(mt(t[1],_c),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=I);let $=[t[0],I],x=t.length===3;x&&(!n&&t[2].dims.length===1?$.push(t[2].reshape([t[2].dims[0],1,1])):$.push(t[2])),e.compute(Rs($,a,o,h,b,w,x,_),{inputs:$})},Sc=(e,t)=>{let r=t.format===\"NHWC\",a=[e.inputs[0].reshape(r?[e.inputs[0].dims[0],1,e.inputs[0].dims[1],e.inputs[0].dims[2]]:[e.inputs[0].dims[0],e.inputs[0].dims[1],1,e.inputs[0].dims[2]]),e.inputs[1].reshape([e.inputs[1].dims[0],e.inputs[1].dims[1],1,e.inputs[1].dims[2]])];a.length===3&&a.push(e.inputs[2]);let n=t.kernelShape;(n.length===0||n[0]===0)&&(n=[e.inputs[1].dims[2]]);let o=t.dilations;(o.length===0||o[0]===0)&&(o=[1]);let u=t.strides;(u.length===0||u[0]===0)&&(u=[1]);let l=t.pads;l.length===0&&(l=[0,0]),l=[0,l[0],0,l[1]],u=[1].concat(u),o=[1].concat(o),n=[1].concat(n);let i=zs({...t,pads:l,strides:u,dilations:o,kernelShape:n},a);e.compute($a(a,i,c=>r?[c[0],c[2],c[3]]:[c[0],c[1],c[3]]))},Us=(e,t)=>{$c(e.inputs,t),e.inputs[0].dims.length===3?Sc(e,t):xc(e,e.inputs,t)}});var Ic,Ws,Vs,Hs=F(()=>{\"use strict\";Ue();$e();je();ve();Ic=(e,t,r,a)=>{let n=U.size(t),o=t.length,u=M(\"input\",e,o),l=q(\"output\",e,o),i=r.dataType===6?r.getInt32Array()[0]:Number(r.getBigInt64Array()[0]),c=U.normalizeAxis(i,o),m=f=>{let h=` i32(${u.indicesGet(\"inputIndices\",\"uniforms.axis\")}) `,b=ce(\"uniforms.input_shape\",\"uniforms.axis\",o),w=a.reverse?h+(a.exclusive?\" + 1\":\"\"):\"0\",_=a.reverse?b:h+(a.exclusive?\"\":\" + 1\");return`\n ${f.registerUniform(\"outputSize\",\"u32\").registerUniform(\"axis\",\"u32\").declareVariables(u,l)}\n ${f.mainStart()}\n ${f.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\n var inputIndices = ${l.offsetToIndices(\"global_idx\")};\n var sum = ${l.type.value}(0);\n let first : i32 = ${w};\n let last : i32 = ${_};\n for (var i : i32 = first; i < last; i++) {\n ${u.indicesSet(\"inputIndices\",\"uniforms.axis\",\"u32(i)\")};\n sum = sum + ${u.getByIndices(\"inputIndices\")};\n }\n ${l.setByOffset(\"global_idx\",\"sum\")};\n }`};return{name:\"CumSum\",shaderCache:{hint:a.cacheKey,inputDependencies:[\"rank\"]},getRunData:()=>({outputs:[{dims:t,dataType:e}],dispatchGroup:{x:Math.ceil(n/64)},programUniforms:[{type:\"uint32\",data:n},{type:\"int32\",data:c},...G(t),...G(t)]}),getShaderSource:m}},Ws=(e,t)=>{let r=e.inputs[0].dims,a=e.inputs[0].dataType,n=e.inputs[1];e.compute(Ic(a,r,n,t),{inputs:[0]})},Vs=e=>{let t=e.exclusive===1,r=e.reverse===1;return ge({exclusive:t,reverse:r})}});var _a,xn,Ls,Cc,Ac,xa,Sa,Gs,Ec,Fs,qs,js=F(()=>{\"use strict\";$e();je();ve();_a=\"[a-zA-Z]|\\\\.\\\\.\\\\.\",xn=\"(\"+_a+\")+\",Ls=\"^\"+xn+\"$\",Cc=\"(\"+xn+\",)*\"+xn,Ac=\"^\"+Cc+\"$\",xa=class{constructor(t=-1){this.symbolToIndices=new Map,this.inputIndex=t}addSymbol(t,r){let a=this.symbolToIndices.get(t);a===void 0?a=[r]:a.push(r),this.symbolToIndices.set(t,a)}},Sa=class{constructor(t,r){this.equation=r;this.hasEllipsis=!1,this.symbolToInfo=new Map,this.lhs=new Array,this.outputDims=[];let[a,n]=r.includes(\"->\")?r.split(\"->\",2):[r,\"\"];if(!a.match(RegExp(Ac)))throw new Error(\"Invalid LHS term\");if(a.split(\",\").forEach((l,i)=>{let c=t[i].dims.slice();if(!l.match(RegExp(Ls)))throw new Error(\"Invalid LHS term\");let m=this.processTerm(l,!0,c,i);this.lhs.push(m)}),n===\"\")n+=[...this.symbolToInfo.entries()].filter(([l,i])=>i.count===1||l===\"...\").map(([l])=>l).join(\"\");else if(!n.match(RegExp(xn)))throw new Error(\"Invalid RHS\");n.match(RegExp(_a,\"g\"))?.forEach(l=>{if(l===\"...\")this.outputDims=this.outputDims.concat(this.ellipsisDims);else{let i=this.symbolToInfo.get(l);if(i===void 0)throw new Error(\"Invalid RHS symbol\");this.outputDims.push(i.dimValue)}}),this.rhs=this.processTerm(n,!1,this.outputDims)}addSymbol(t,r,a){let n=this.symbolToInfo.get(t);if(n!==void 0){if(n.dimValue!==r&&n.count!==1)throw new Error(\"Dimension mismatch\");n.count++,n.inputIndices.push(a)}else n={count:1,dimValue:r,inputIndices:[a]};this.symbolToInfo.set(t,n)}processTerm(t,r,a,n=-1){let o=a.length,u=!1,l=[],i=0;if(!t.match(RegExp(Ls))&&!r&&t!==\"\")throw new Error(\"Invalid LHS term\");let c=t.match(RegExp(_a,\"g\")),m=new xa(n);return c?.forEach((f,h)=>{if(f===\"...\"){if(u)throw new Error(\"Only one ellipsis is allowed per input term\");u=!0;let b=o-c.length+1;if(b<0)throw new Error(\"Ellipsis out of bounds\");if(l=a.slice(i,i+b),this.hasEllipsis){if(this.ellipsisDims.length!==l.length||this.ellipsisDims.toString()!==l.toString())throw new Error(\"Ellipsis dimensions mismatch\")}else if(r)this.hasEllipsis=!0,this.ellipsisDims=l;else throw new Error(\"Ellipsis must be specified in the LHS\");for(let w=0;we+\"_max\",Ec=(e,t,r,a,n)=>{let u=t.map((b,w)=>e[w]?b.length:b).map((b,w)=>M(`input${w}`,r,b)),l=U.size(n),i=Be(n.length),c=i?n.length:n,m=q(\"output\",r,c),f=[...a.symbolToInfo.keys()].filter(b=>!a.rhs.symbolToIndices.has(b)),h=b=>{let w=[],_=\"var prod = 1.0;\",I=\"var sum = 0.0;\",$=\"sum += prod;\",x=[],T=[],A=[],z=[],R=a.symbolToInfo.size===a.rhs.symbolToIndices.size;a.symbolToInfo.forEach((E,W)=>{if(a.rhs.symbolToIndices.has(W)){let te=a.rhs.symbolToIndices.get(W)?.[0];te!==void 0&&a.lhs.forEach((Y,K)=>{if(E.inputIndices.includes(K)){let X=Y.symbolToIndices.get(W);if(X===void 0)throw new Error(\"Invalid symbol error\");X.forEach(Z=>{w.push(`${u[K].indicesSet(`input${K}Indices`,Z,m.indicesGet(\"outputIndices\",te))}`)})}})}else a.lhs.forEach((te,Y)=>{if(E.inputIndices.includes(Y)){let K=te.symbolToIndices.get(W);if(K===void 0)throw new Error(\"Invalid symbol error\");K.forEach(X=>{x.push(`${u[Y].indicesSet(`input${Y}Indices`,X,`${W}`)}`)}),z.push(`prod *= ${u[Y].getByIndices(`input${Y}Indices`)};`)}}),T.push(`for(var ${W}: u32 = 0; ${W} < uniforms.${Gs(W)}; ${W}++) {`),A.push(\"}\")});let N=R?[...w,`let sum = ${u.map((E,W)=>E.getByIndices(`input${W}Indices`)).join(\" * \")};`]:[...w,I,...T,...x,_,...z,$,...A];return`\n ${b.registerUniforms(f.map(E=>({name:`${Gs(E)}`,type:\"u32\"}))).registerUniform(\"outputSize\",\"u32\").declareVariables(...u,m)}\n\n ${b.mainStart()}\n ${b.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\n var outputIndices = ${m.offsetToIndices(\"global_idx\")};\n ${u.map((E,W)=>`var input${W}Indices: ${u[W].type.indices};`).join(`\n`)}\n ${N.join(`\n`)};\n ${m.setByOffset(\"global_idx\",\"sum\")};\n }`};return{name:\"Einsum\",shaderCache:{hint:a.equation,inputDependencies:e.map(b=>b?\"rank\":\"dims\")},getRunData:()=>{let b=f.filter(_=>a.symbolToInfo.has(_)).map(_=>({type:\"uint32\",data:a.symbolToInfo.get(_)?.dimValue||0}));b.push({type:\"uint32\",data:l});let w=t.filter((_,I)=>e[I]).map((_,I)=>[...G(_)]).reduce((_,I)=>_.concat(I),b);return i&&w.push(...G(n)),{outputs:[{dims:n,dataType:r}],dispatchGroup:{x:Math.ceil(l/64)},programUniforms:w}},getShaderSource:h}},Fs=(e,t)=>{let r=new Sa(e.inputs,t.equation),a=e.inputs.map((u,l)=>Be(u.dims.length)),n=r.outputDims,o=e.inputs.map((u,l)=>u.dims);e.compute(Ec(a,o,e.inputs[0].dataType,r,n))},qs=e=>{let t=e.equation.replace(/\\s+/g,\"\");return ge({equation:t})}});var Tc,Ks,Oc,kc,Ys,Zs=F(()=>{\"use strict\";Ue();$e();ve();Tc=e=>{if(!e||e.length!==2)throw new Error(\"Expand requires 2 input.\");let t=e[0].dims,r=Array.from(e[1].getBigInt64Array(),Number),a=r.length{let r=e.length-t.length,a=[];for(let n=0;ne.length>t.length?Ks(e,t):Ks(t,e),kc=e=>{let t=e[0].dims,r=Array.from(e[1].getBigInt64Array(),Number),a=Oc(t,r),n=e[0].dataType,o=n===9?4:1,u=Math.ceil(U.size(a)/o),l=Be(t.length),i=Be(a.length),c=f=>{let h=l?t.length:t,b=i?a.length:a,w=M(\"input\",n,h,o),_=q(\"output\",n,b,o),I;if(n===9){let $=(x,T,A=\"\")=>`\n let outputIndices${T} = ${_.offsetToIndices(`outputOffset + ${T}u`)};\n let offset${T} = ${w.broadcastedIndicesToOffset(`outputIndices${T}`,_)};\n let index${T} = offset${T} / 4u;\n let component${T} = offset${T} % 4u;\n ${x}[${T}] = ${A}(${w.getByOffset(`index${T}`)}[component${T}]);\n `;I=`\n let outputOffset = global_idx * ${o};\n var data = vec4(0);\n ${$(\"data\",0,\"u32\")}\n ${$(\"data\",1,\"u32\")}\n ${$(\"data\",2,\"u32\")}\n ${$(\"data\",3,\"u32\")}\n ${_.setByOffset(\"global_idx\",\"data\")}\n }`}else I=`\n let outputIndices = ${_.offsetToIndices(\"global_idx\")};\n let inputOffset = ${w.broadcastedIndicesToOffset(\"outputIndices\",_)};\n ${_.setByOffset(\"global_idx\",w.getByOffset(\"inputOffset\"))}\n }`;return`\n ${f.registerUniform(\"vec_size\",\"u32\").declareVariables(w,_)}\n ${f.mainStart()}\n ${f.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.vec_size\")}\n ${I}`},m=[{type:\"uint32\",data:u}];return l&&m.push(...G(t)),i&&m.push(...G(a)),{name:\"Expand\",shaderCache:{hint:`${a.length}`,inputDependencies:[l?\"rank\":\"dims\"]},getShaderSource:c,getRunData:()=>({outputs:[{dims:a,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:m})}},Ys=e=>{Tc(e.inputs),e.compute(kc(e.inputs),{inputs:[0]})}});var Pc,Rc,Xs,Qs,Js=F(()=>{\"use strict\";Ue();$e();je();ve();Pc=e=>{if(!e||e.length!==2)throw new Error(\"Gather requires 2 inputs.\")},Rc=(e,t)=>{let r=e[0].dims,a=e[1].dims,n=r.length,o=U.normalizeAxis(t.axis,n),u=r.slice(0);u.splice(o,1,...a);let l=r[o],i=e[0].dataType===9?4:1,c=Math.ceil(U.size(u)/i),m=Be(e[0].dims.length),f=m?e[0].dims.length:e[0].dims,h=Be(e[1].dims.length),b=h?e[1].dims.length:e[1].dims,w=Be(u.length),_=w?u.length:u,I=[{type:\"uint32\",data:c},{type:\"int32\",data:l},{type:\"uint32\",data:o}];m&&I.push(...G(e[0].dims)),h&&I.push(...G(e[1].dims)),w&&I.push(...G(u));let $=[];$.push(m?\"rank\":\"dims\"),$.push(h?\"rank\":\"dims\");let x=T=>{let A=M(\"data\",e[0].dataType,f,i),z=M(\"inputIndices\",e[1].dataType,b),R=q(\"output\",e[0].dataType,_,i),N=W=>{let te=a.length,Y=`var indicesIndices${W} = ${z.type.indices}(0);`;for(let K=0;K1?`indicesIndices${W}[${K}]`:`indicesIndices${W}`} = ${u.length>1?`outputIndices${W}[uniforms.axis + ${K}]`:`outputIndices${W}`};`;Y+=`\n var idx${W} = ${z.getByIndices(`indicesIndices${W}`)};\n if (idx${W} < 0) {\n idx${W} = idx${W} + uniforms.axisDimLimit;\n }\n var dataIndices${W} = ${A.type.indices}(0);\n `;for(let K=0,X=0;K1?`dataIndices${W}[${K}]`:`dataIndices${W}`} = u32(idx${W});`,X+=te):(Y+=`${n>1?`dataIndices${W}[${K}]`:`dataIndices${W}`} = ${u.length>1?`outputIndices${W}[${X}]`:`outputIndices${W}`};`,X++);return Y},E;if(e[0].dataType===9){let W=(te,Y,K=\"\")=>`\n let outputIndices${Y} = ${R.offsetToIndices(`outputOffset + ${Y}u`)};\n ${N(Y)};\n let offset${Y} = ${A.indicesToOffset(`dataIndices${Y}`)};\n let index${Y} = offset${Y} / 4u;\n let component${Y} = offset${Y} % 4u;\n ${te}[${Y}] = ${K}(${A.getByOffset(`index${Y}`)}[component${Y}]);\n `;E=`\n let outputOffset = global_idx * ${i};\n var value = vec4(0);\n ${W(\"value\",0,\"u32\")}\n ${W(\"value\",1,\"u32\")}\n ${W(\"value\",2,\"u32\")}\n ${W(\"value\",3,\"u32\")}\n ${R.setByOffset(\"global_idx\",\"value\")}\n `}else E=`\n let outputIndices = ${R.offsetToIndices(\"global_idx\")};\n ${N(\"\")};\n let value = ${A.getByIndices(\"dataIndices\")};\n ${R.setByOffset(\"global_idx\",\"value\")};\n `;return`\n ${T.registerUniform(\"outputSize\",\"u32\").registerUniform(\"axisDimLimit\",\"i32\").registerUniform(\"axis\",\"u32\").declareVariables(A,z,R)}\n ${T.mainStart()}\n ${T.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\n ${E}\n }`};return{name:\"Gather\",shaderCache:{hint:t.cacheKey,inputDependencies:$},getRunData:()=>({outputs:[{dims:u,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(c/64)},programUniforms:I}),getShaderSource:x}},Xs=e=>ge({axis:e.axis}),Qs=(e,t)=>{let r=e.inputs;Pc(r),e.compute(Rc(e.inputs,t))}});var Bc,Dc,eu,tu,ru=F(()=>{\"use strict\";$e();je();ve();Bc=e=>{if(!e||e.length!==2)throw new Error(\"GatherElements requires 2 inputs.\");if(e[0].dims.length<1)throw new Error(\"GatherElements requires that the data input be rank >= 1.\");if(e[0].dims.length!==e[1].dims.length)throw new Error(`GatherElements requires that the data input and\n indices input tensors be of same rank.`)},Dc=(e,t)=>{let r=e[0].dims,a=e[0].dataType,n=r.length,o=e[1].dims,u=e[1].dataType,l=U.normalizeAxis(t.axis,n),i=r[l],c=o.slice(0),m=U.size(c),f=M(\"input\",a,n),h=M(\"indicesInput\",u,o.length),b=q(\"output\",a,c.length),w=[{type:\"uint32\",data:m},{type:\"int32\",data:i},{type:\"uint32\",data:l}];return w.push(...G(r)),w.push(...G(o)),w.push(...G(c)),{name:\"GatherElements\",shaderCache:{inputDependencies:[\"rank\",\"rank\"]},getRunData:()=>({outputs:[{dims:c,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(m/64)},programUniforms:w}),getShaderSource:$=>`\n ${$.registerUniform(\"outputSize\",\"u32\").registerUniform(\"axisDimLimit\",\"i32\").registerUniform(\"axis\",\"u32\").declareVariables(f,h,b)}\n ${$.mainStart()}\n ${$.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\n\n let outputIndices = ${b.offsetToIndices(\"global_idx\")};\n\n var idx = ${h.getByOffset(\"global_idx\")};\n if (idx < 0) {\n idx = idx + uniforms.axisDimLimit;\n }\n var inputIndices = ${f.type.indices}(outputIndices);\n ${f.indicesSet(\"inputIndices\",\"uniforms.axis\",\"u32(idx)\")};\n let value = ${f.getByIndices(\"inputIndices\")};\n\n ${b.setByOffset(\"global_idx\",\"value\")};\n }`}},eu=e=>ge({axis:e.axis}),tu=(e,t)=>{let r=e.inputs;Bc(r),e.compute(Dc(e.inputs,t))}});var zc,Mc,nu,au,iu=F(()=>{\"use strict\";$e();ve();zc=e=>{if(!e)throw new Error(\"Input is missing\");if(e.length<2||e.length>3)throw new Error(\"Invaid input number.\");if(e.length===3&&e[2].dims.length>2)throw new Error(\"Invalid input shape of C\");if(e[0].dataType!==e[1].dataType||e.length===3&&e[0].dataType!==e[2].dataType)throw new Error(\"Input types are mismatched\")},Mc=(e,t)=>{let r=e[0].dims.slice(),a=e[1].dims.slice(),[n,o,u]=ln.getShapeOfGemmResult(r,t.transA,a,t.transB,e.length===3?e[2].dims:void 0),l=[n,o];if(!l)throw new Error(\"Can't use gemm on the given tensors\");let i=U.size(l),c=[{type:\"uint32\",data:i},{type:\"uint32\",data:n},{type:\"uint32\",data:o},{type:\"uint32\",data:u},{type:\"float32\",data:t.alpha},{type:\"float32\",data:t.beta}],m=[\"type\",\"type\"];e.length===3&&(c.push(...G(e[2].dims)),m.push(\"rank\")),c.push(...G(l));let f=h=>{let b=\"\";t.transA&&t.transB?b=\"value += a[k * uniforms.M + m] * b[n * uniforms.K + k];\":t.transA&&!t.transB?b=\"value += a[k * uniforms.M + m] * b[k * uniforms.N + n];\":!t.transA&&t.transB?b=\"value += a[m * uniforms.K + k] * b[n * uniforms.K + k];\":!t.transA&&!t.transB&&(b=\"value += a[m * uniforms.K + k] * b[k * uniforms.N + n];\");let w=t.alpha===1?\"\":\"value *= uniforms.alpha;\",_=M(\"a\",e[0].dataType,e[0].dims),I=M(\"b\",e[1].dataType,e[1].dims),$=_.type.value,x=null,T=[_,I];e.length===3&&(x=M(\"c\",e[2].dataType,e[2].dims.length),T.push(x));let A=q(\"output\",e[0].dataType,l.length);T.push(A);let z=[{name:\"output_size\",type:\"u32\"},{name:\"M\",type:\"u32\"},{name:\"N\",type:\"u32\"},{name:\"K\",type:\"u32\"},{name:\"alpha\",type:\"f32\"},{name:\"beta\",type:\"f32\"}];return`\n ${h.registerUniforms(z).declareVariables(...T)}\n\n ${h.mainStart()}\n ${h.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n\n let m = global_idx / uniforms.N;\n let n = global_idx % uniforms.N;\n\n var value = ${$}(0);\n for (var k: u32 = 0u; k < uniforms.K; k++) {\n ${b}\n }\n\n ${w}\n ${(()=>x!=null?`let cOffset = ${x.broadcastedIndicesToOffset(\"vec2(m, n)\",A)}; value += ${$}(uniforms.beta) * ${x.getByOffset(\"cOffset\")};`:\"\")()}\n output[global_idx] = value;\n }`};return{name:\"Gemm\",shaderCache:{hint:`${t.cacheKey}`,inputDependencies:m},getRunData:()=>({outputs:[{dims:l,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(i/64)},programUniforms:c}),getShaderSource:f}},nu=e=>{let t=e.transA,r=e.transB,a=e.alpha,n=e.beta;return{transA:t,transB:r,alpha:a,beta:n,cacheKey:`${e.transA};${e.transB};${e.alpha===1}`}},au=(e,t)=>{zc(e.inputs),e.compute(Mc(e.inputs,t))}});var Uc,Nc,Wc,ou,su=F(()=>{\"use strict\";Ue();$e();ve();Uc=(e,t)=>{let r=e[0].dims,a=r,n=2,o=U.sizeToDimension(r,n),u=U.sizeFromDimension(r,n),l=qe(u),i=u/l,c=[r[0],r[1],i],m=[\"rank\",\"type\",\"type\"],f=[{type:\"uint32\",data:u},{type:\"uint32\",data:i}];f.push(...G(c),...G(c));let h=b=>{let w=M(\"x\",e[0].dataType,c.length,l),_=M(\"scale\",e[1].dataType,e[1].dims),I=M(\"bias\",e[2].dataType,e[2].dims),$=q(\"output\",e[0].dataType,c.length,l),x=[w,_,I,$],T=w.type.value,A=l===1?\"f32\":`vec${l}`,z=64,R=[{name:\"normSize\",type:\"u32\"},{name:\"normPackedSize\",type:\"u32\"}];return`\n var meanShared : f32;\n var squaredNormShared : f32;\n var workgroupShared : array<${A}, ${z}>;\n const workgroupSize = ${z}u;\n ${b.registerUniforms(R).declareVariables(...x)}\n ${b.mainStart(z)}\n let norm = global_idx / workgroupSize;\n let batch = norm / uniforms.x_shape[1];\n let channel = norm % uniforms.x_shape[1];\n let localIndex = local_id.x;\n\n // initialize workgroup memory\n var initial = ${A}(0);\n for (var h = localIndex; h < uniforms.normPackedSize; h += workgroupSize) {\n initial = initial + ${A}(${w.get(\"batch\",\"channel\",\"h\")});\n }\n workgroupShared[localIndex] = initial;\n workgroupBarrier();\n\n // Calculate the mean of current channel data.\n for (var currSize = workgroupSize >> 1; currSize > 0; currSize = currSize >> 1) {\n if (localIndex < currSize) {\n workgroupShared[localIndex] = workgroupShared[localIndex] + workgroupShared[localIndex + currSize];\n }\n workgroupBarrier();\n }\n if (localIndex == 0) {\n meanShared = ${rt(\"workgroupShared[0]\",l)} / f32(uniforms.normSize);\n }\n workgroupBarrier();\n\n // reinitialize workgroup memory.\n initial = ${A}(0);\n for (var h = localIndex; h < uniforms.normPackedSize; h += workgroupSize) {\n let deviation = ${A}(${w.get(\"batch\",\"channel\",\"h\")}) - ${A}(meanShared);\n initial = initial + deviation * deviation;\n }\n workgroupShared[localIndex] = initial;\n workgroupBarrier();\n\n // Calculate the sum of square of deviation of current channel data.\n for (var currSize = workgroupSize >> 1; currSize > 0; currSize = currSize >> 1) {\n if (localIndex < currSize) {\n workgroupShared[localIndex] = workgroupShared[localIndex] + workgroupShared[localIndex + currSize];\n }\n workgroupBarrier();\n }\n if (localIndex == 0) {\n squaredNormShared = ${rt(\"workgroupShared[0]\",l)};\n }\n workgroupBarrier();\n\n let invStdDev = inverseSqrt(squaredNormShared / f32(uniforms.normSize) + f32(${t.epsilon}));\n let channelScale = invStdDev * f32(${_.getByOffset(\"channel\")});\n let channelShift = f32(${I.getByOffset(\"channel\")}) - meanShared * channelScale;\n for (var h = localIndex; h < uniforms.normPackedSize; h += workgroupSize) {\n let value = ${w.get(\"batch\",\"channel\",\"h\")} * ${T}(${A}(channelScale)) + ${T}(${A}(channelShift));\n ${$.set(\"batch\",\"channel\",\"h\",\"value\")};\n }\n }`};return{name:\"InstanceNormalization\",shaderCache:{hint:`${t.epsilon};${l}`,inputDependencies:m},getRunData:()=>({outputs:[{dims:a,dataType:e[0].dataType}],dispatchGroup:{x:o},programUniforms:f}),getShaderSource:h}},Nc=(e,t,r,a,n,o,u,l)=>{let i=qe(u),c=64,m=i===1?\"vec2f\":`mat2x${i}f`,f=i===1?\"f32\":`vec${i}f`,h=(R,N)=>`${m}(${R}, ${N})`,b=n*u/i,w=Math.ceil(o/c),_=[\"type\"],I=[{type:\"uint32\",data:w},{type:\"uint32\",data:o},{type:\"uint32\",data:Math.floor(u/i)},{type:\"uint32\",data:Math.floor(o*u/i)}],$=R=>{let N=M(\"input\",t.dataType,t.dims,i);return`\n ${R.declareVariables(N)}\n @group(0) @binding(1) var output : array<${m}>;\n struct Uniforms {wg_size:u32, H:u32, C:u32, image_size:u32};\n @group(0) @binding(2) var uniforms: Uniforms;\n\n ${R.mainStart(c)}\n let currentImageNumber = global_idx / ${c} / uniforms.C;\n let currentChannelNumber = (global_idx / ${c}) % uniforms.C;\n let wgId = global_idx % ${c};\n let wgOffset = wgId * uniforms.wg_size;\n if (wgOffset >= uniforms.H) {\n return;\n }\n let wgMax = min(wgOffset + uniforms.wg_size, uniforms.H);\n\n let offset = currentImageNumber * uniforms.image_size + currentChannelNumber;\n var sum = ${Qe(\"f32\",i)};\n var squaredSum = ${Qe(\"f32\",i)};\n for (var i: u32 = wgOffset; i < wgMax; i++) {\n let value = ${f}(input[offset + i * uniforms.C]);\n sum += value;\n squaredSum += value * value;\n }\n output[global_idx] = ${h(\"sum\",\"squaredSum\")};\n }`},x=e.compute({name:\"InstanceNormComputeMean\",shaderCache:{hint:`${i}`,inputDependencies:_},getRunData:()=>({outputs:[{dims:[n,u,c,2],dataType:1}],dispatchGroup:{x:n*u/i},programUniforms:I}),getShaderSource:$},{inputs:[t],outputs:[-1]})[0],T=[{type:\"uint32\",data:b},{type:\"uint32\",data:o},{type:\"uint32\",data:Math.floor(u/i)},{type:\"uint32\",data:Math.floor(c*u/i)}],A=[\"type\",\"type\",\"type\"],z=R=>{let N=M(\"scale\",r.dataType,r.dims,i),E=M(\"bias\",a.dataType,a.dims,i);return`\n @group(0) @binding(0) var input : array<${m}>;\n @group(0) @binding(1) var scale : array<${N.type.storage}>;\n @group(0) @binding(2) var bias : array<${E.type.storage}>;\n @group(0) @binding(3) var output : array<${m}>;\n struct Uniforms {units_of_work : u32, H: u32, C : u32, image_size : u32};\n @group(0) @binding(4) var uniforms: Uniforms;\n\n ${R.mainStart()}\n ${R.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.units_of_work\")}\n let currentImageNumber = global_idx / uniforms.C;\n let currentChannelNumber = global_idx % uniforms.C;\n\n let offset = currentImageNumber * uniforms.image_size;\n var sum = ${Qe(\"f32\",i)};\n var squaredSum = ${Qe(\"f32\",i)};\n for (var i: u32 = 0; i < ${c}; i++) {\n let value = input[offset + i + currentChannelNumber * ${c}];\n sum += value[0];\n squaredSum += value[1];\n }\n sum = sum / f32(uniforms.H);\n squaredSum = squaredSum / f32(uniforms.H);\n let invStdDev = inverseSqrt(squaredSum - sum * sum + f32(${l}));\n let channelScale = invStdDev * ${f}(scale[currentChannelNumber]);\n let channelShift = ${f}(bias[currentChannelNumber]) - sum * channelScale;\n\n output[global_idx] = ${h(\"channelScale\",\"channelShift\")};\n }`};return e.compute({name:\"InstanceNormComputeChannelScaleShift\",shaderCache:{hint:`${i};${l}`,inputDependencies:A},getRunData:()=>({outputs:[{dims:[n,u,2],dataType:1}],dispatchGroup:{x:Math.ceil(b/64)},programUniforms:T}),getShaderSource:z},{inputs:[x,r,a],outputs:[-1]})[0]},Wc=(e,t,r)=>{let a=t[0].dims,n=a,o=a[0],u=a[a.length-1],l=U.sizeFromDimension(a,1)/u,i=qe(u),c=U.size(n)/i,m=[{type:\"uint32\",data:l},{type:\"uint32\",data:Math.floor(u/i)}],f=[\"type\",\"type\"],h=Nc(e,t[0],t[1],t[2],o,l,u,r.epsilon),b=w=>{let _=Fe(t[0].dataType),I=i===1?\"vec2f\":`mat2x${i}f`,$=i===1?_:`vec${i}<${_}>`,x=M(\"input\",t[0].dataType,t[0].dims,i),T=q(\"output\",t[0].dataType,n,i);return`\n @group(0) @binding(0) var input : array<${x.type.storage}>;\n @group(0) @binding(1) var scaleInput : array<${I}>;\n @group(0) @binding(2) var output : array<${T.type.storage}>;\n struct Uniforms {H: u32, C : u32};\n @group(0) @binding(3) var uniforms: Uniforms;\n\n ${w.mainStart()}\n let currentImageNumber = global_idx / (uniforms.C * uniforms.H);\n let currentChannelNumber = global_idx % uniforms.C;\n\n let scaleOffset = currentImageNumber * uniforms.C + currentChannelNumber;\n let scale = scaleInput[scaleOffset];\n output[global_idx] = fma(input[global_idx], ${$}(scale[0]), ${$}(scale[1]));\n }`};e.compute({name:\"InstanceNormalizationNHWC\",shaderCache:{hint:`${i}`,inputDependencies:f},getRunData:()=>({outputs:[{dims:n,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(c/64)},programUniforms:m}),getShaderSource:b},{inputs:[t[0],h]})},ou=(e,t)=>{t.format===\"NHWC\"?Wc(e,e.inputs,t):e.compute(Uc(e.inputs,t))}});var Vc,Hc,uu,lu=F(()=>{\"use strict\";Ue();$e();ve();Vc=e=>{if(!e||e.length<2)throw new Error(\"layerNorm requires at least 2 inputs.\")},Hc=(e,t,r)=>{let a=e[0].dims,n=e[1],o=e[2],u=a,l=U.normalizeAxis(t.axis,a.length),i=U.sizeToDimension(a,l),c=U.sizeFromDimension(a,l),m=U.size(n.dims),f=o?U.size(o.dims):0;if(m!==c||o&&f!==c)throw new Error(`Size of X.shape()[axis:] == ${c}.\n Size of scale and bias (if provided) must match this.\n Got scale size of ${m} and bias size of ${f}`);let h=[];for(let A=0;A1,$=r>2,x=A=>{let z=Fe(e[0].dataType),R=[M(\"x\",e[0].dataType,e[0].dims,b),M(\"scale\",n.dataType,n.dims,b)];o&&R.push(M(\"bias\",o.dataType,o.dims,b)),R.push(q(\"output\",e[0].dataType,u,b)),I&&R.push(q(\"mean_data_output\",1,h)),$&&R.push(q(\"inv_std_output\",1,h));let N=[{name:\"norm_count\",type:\"u32\"},{name:\"norm_size\",type:\"f32\"},{name:\"norm_size_vectorized\",type:\"u32\"},{name:\"epsilon\",type:\"f32\"}];return`\n ${A.registerUniforms(N).declareVariables(...R)}\n ${A.mainStart()}\n ${A.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.norm_count\")}\n let offset = global_idx * uniforms.norm_size_vectorized;\n var meanVector = ${Qe(\"f32\",b)};\n var meanSquareVector = ${Qe(\"f32\",b)};\n\n for (var h: u32 = 0u; h < uniforms.norm_size_vectorized; h++) {\n let value = ${pt(z,b,\"x[h + offset]\")};\n meanVector += value;\n meanSquareVector += value * value;\n }\n let mean = ${rt(\"meanVector\",b)} / uniforms.norm_size;\n let invStdDev =\n inverseSqrt(${rt(\"meanSquareVector\",b)} / uniforms.norm_size - mean * mean + uniforms.epsilon);\n\n for (var j: u32 = 0; j < uniforms.norm_size_vectorized; j++) {\n let f32input = ${pt(z,b,\"x[j + offset]\")};\n let f32scale = ${pt(z,b,\"scale[j]\")};\n output[j + offset] = ${R[0].type.value}((f32input - mean) * invStdDev * f32scale\n ${o?`+ ${pt(z,b,\"bias[j]\")}`:\"\"}\n );\n }\n\n ${I?\"mean_data_output[global_idx] = mean\":\"\"};\n ${$?\"inv_std_output[global_idx] = invStdDev\":\"\"};\n }`},T=[{dims:u,dataType:e[0].dataType}];return I&&T.push({dims:h,dataType:1}),$&&T.push({dims:h,dataType:1}),{name:\"LayerNormalization\",shaderCache:{hint:`${b};${r}`,inputDependencies:w},getRunData:()=>({outputs:T,dispatchGroup:{x:Math.ceil(i/64)},programUniforms:_}),getShaderSource:x}},uu=(e,t)=>{Vc(e.inputs),e.compute(Hc(e.inputs,t,e.outputCount))}});var Lc,cu,du,Gc,Ia,pu,mu=F(()=>{\"use strict\";$e();je();sn();ca();ve();tr();Lc=(e,t)=>{let r=e[0],a=e[1],n=e[2],o=e[3],u=e[4],l=e[5],i=e[6],c=e[7];if(r.dims.length!==3&&r.dims.length!==5)throw new Error(\"Input query is expected to have 3 or 5 dimensions\");let m=!1,f=r.dims[0],h=r.dims[1],b=r.dims.length===3?m?r.dims[2]/3:r.dims[2]:t.numHeads*r.dims[4],w=h,_=0,I=0,$=Math.floor(b/t.numHeads);if(i&&c){if(i.dims.length!==4)throw new Error('Input \"past_key\" is expected to have 4 dimensions');if(c.dims.length!==4)throw new Error('Input \"past_value\" is expected to have 4 dimensions');_=i.dims[2],I=i.dims[2]}else if(i||c)throw new Error('Input \"past_key\" and \"past_value\" shall be both present or both absent');let x;if(a){if(r.dims.length!==3)throw new Error('Input \"query\" is expected to have 3 dimensions when key is given');if(a.dims.length<3||a.dims.length>5)throw new Error('Input \"key\" is expected to have 3, 4, or 5 dimensions');if(r.dims[0]!==a.dims[0])throw new Error('Input \"query\" and \"key\" shall have same dim 0 (batch size)');if(a.dims.length===3){if(a.dims[2]!==r.dims[2])throw new Error('Input \"query\" and \"key\" shall have same dim 2 (hidden_size)');x=2,w=a.dims[1]}else if(a.dims.length===5){if(a.dims[2]!==t.numHeads||a.dims[3]!==2||a.dims[4]!==$)throw new Error('Expect \"key\" shape (batch_size, kv_sequence_length, num_heads, 2, head_size) for packed kv');if(n)throw new Error('Expect \"value\" be none when \"key\" has packed kv format.');x=5,w=a.dims[1]}else{if(a.dims[1]!==t.numHeads||a.dims[3]!==$)throw new Error('Expect \"key\" shape (batch_size, num_heads, kv_sequence_length, head_size) for past_key');x=0,w=a.dims[2]}}else{if(r.dims.length!==3&&r.dims.length!==5)throw new Error('Input \"query\" is expected to have 3 or 5 dimensions when key is empty');if(r.dims.length===5&&(r.dims[2]!==t.numHeads||r.dims[3]!==3))throw new Error('Expect \"query\" shape (batch_size, kv_sequence_length, num_heads, 3, head_size) for packed kv');x=3}if(o){if(o.dims.length!==1)throw new Error('Input \"bias\" is expected to have 1 dimension');if(n&&r.dims.length===5&&r.dims[3]===2)throw new Error(\"bias is not allowed for packed kv.\")}let T=0;if(u){T=8;let E=u.dims;throw E.length===1?E[0]===f?T=1:E[0]===3*f+2&&(T=3):E.length===2&&E[0]===f&&E[1]===w&&(T=5),T===8?new Error('Input \"key_padding_mask\" shape shall be (batch_size) or (batch_size, kv_sequence_length)'):new Error(\"Mask not supported\")}let A=!1,z=b;if(n){if(n.dims.length!==3&&n.dims.length!==4)throw new Error('Input \"value\" is expected to have 3 or 4 dimensions');if(r.dims[0]!==n.dims[0])throw new Error('Input \"query\" and \"value\" shall have same dim 0 (batch_size)');if(n.dims.length===3){if(w!==n.dims[1])throw new Error('Input \"key\" and \"value\" shall have the same dim 1 (kv_sequence_length)');z=n.dims[2]}else{if(w!==n.dims[2])throw new Error('Input \"past_key\" and \"past_value\" shall have the same dim 2 (kv_sequence_length)');z=n.dims[1]*n.dims[3],A=!0}}let R=_+w,N=!1;if(u)throw new Error(\"Key padding mask is not supported\");if(l)throw new Error(\"extraAddQk is not supported\");if(i)throw new Error(\"pastKey is not supported\");if(c)throw new Error(\"pastValue is not supported\");return{batchSize:f,sequenceLength:h,pastSequenceLength:_,kvSequenceLength:w,totalSequenceLength:R,maxSequenceLength:I,inputHiddenSize:0,hiddenSize:b,vHiddenSize:z,headSize:$,vHeadSize:Math.floor(z/t.numHeads),numHeads:t.numHeads,isUnidirectional:!1,pastPresentShareBuffer:!1,maskFilterValue:t.maskFilterValue,maskType:T,scale:t.scale,broadcastResPosBias:N,passPastInKv:A,qkvFormat:x}},cu=e=>ge({...e}),du=ge({perm:[0,2,1,3]}),Gc=(e,t,r,a,n,o,u)=>{let l=[a,n,o],i=U.size(l),c=[{type:\"uint32\",data:i},{type:\"uint32\",data:u},{type:\"uint32\",data:o}],m=f=>{let h=q(\"qkv_with_bias\",t.dataType,l),b=M(\"qkv\",t.dataType,l),w=M(\"bias\",r.dataType,l),_=[{name:\"output_size\",type:\"u32\"},{name:\"bias_offset\",type:\"u32\"},{name:\"hidden_size\",type:\"u32\"}];return`\n ${f.registerUniforms(_).declareVariables(b,w,h)}\n ${f.mainStart()}\n ${f.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n let bias_offset_idx = (global_idx % uniforms.hidden_size) + uniforms.bias_offset;\n\n qkv_with_bias[global_idx] = qkv[global_idx] + bias[bias_offset_idx];\n }`};return e.compute({name:\"MultiHeadAttentionAddBias\",shaderCache:{inputDependencies:[\"type\",\"type\"]},getRunData:()=>({outputs:[{dims:l,dataType:t.dataType,gpuDataType:0}],dispatchGroup:{x:Math.ceil(i/64)},programUniforms:c}),getShaderSource:m},{inputs:[t,r],outputs:[-1]})[0]},Ia=(e,t,r,a,n,o,u,l)=>{let i=o;if(u){if(a===1)throw new Error(\"AddBiasReshape is not implemented. Please export your model with packed QKV or KV\");return i=Gc(e,o,u,t,a,r*n,l),i=i.reshape([t,a,r,n]),e.compute(mt(i,du.perm),{inputs:[i],outputs:[-1]})[0]}else return o.dims.length===3&&(i=o.reshape([t,a,r,n])),e.compute(mt(i,du.perm),{inputs:[i],outputs:[-1]})[0]},pu=(e,t)=>{let r=Lc(e.inputs,t);if(e.inputs[0].dims.length===5)throw new Error(\"Packed QKV is not implemented\");if(e.inputs[1]?.dims.length===5)throw new Error(\"Packed KV is not implemented\");let a=e.inputs[1]&&e.inputs[2]&&e.inputs[1].dims.length===4&&e.inputs[2].dims.length===4,n=Ia(e,r.batchSize,r.numHeads,r.sequenceLength,r.headSize,e.inputs[0],e.inputs[3],0);if(a)return hn(e,n,e.inputs[1],e.inputs[2],e.inputs[4],void 0,void 0,void 0,e.inputs[5],r,t);let o=Ia(e,r.batchSize,r.numHeads,r.kvSequenceLength,r.headSize,e.inputs[1],e.inputs[3],r.hiddenSize),u=Ia(e,r.batchSize,r.numHeads,r.kvSequenceLength,r.vHeadSize,e.inputs[2],e.inputs[3],2*r.hiddenSize);hn(e,n,o,u,e.inputs[4],void 0,e.inputs[6],e.inputs[7],e.inputs[5],r,t)}});var Fc,qc,jc,Kc,Yc,Zc,Xc,Qc,fu,hu=F(()=>{\"use strict\";Ue();$e();ve();Fc=e=>{if(!e||e.length<1)throw new Error(\"Too few inputs\");if(e[0].dataType!==1)throw new Error(\"Input type must be float.\");if(e.length>=2){let t=e[0].dims.length*2===e[1].dims[0];if(e.length===4&&(t=e[3].dims[0]*2===e[1].dims[0]),!t)throw new Error(\"The pads should be a 1D tensor of shape [2 * input_rank] or [2 * num_axes].\")}},qc=(e,t,r)=>{let a=\"\";for(let n=t-1;n>=0;--n)a+=`\n k = i32(${e.indicesGet(\"indices\",n)}) - ${ce(\"uniforms.pads\",n,r)};\n if (k < 0) {\n break;\n }\n if (k >= i32(${ce(\"uniforms.x_shape\",n,t)})) {\n break;\n }\n offset += k * i32(${ce(\"uniforms.x_strides\",n,t)});\n `;return`\n value = ${e.type.value}(uniforms.constant_value);\n for (var i = 0; i < 1; i++) {\n var offset = 0;\n var k = 0;\n ${a}\n value = x[offset];\n }\n `},jc=(e,t,r)=>{let a=\"\";for(let n=t-1;n>=0;--n)a+=`\n k = i32(${e.indicesGet(\"indices\",n)}) - ${ce(\"uniforms.pads\",n,r)};\n if (k < 0) {\n k = -k;\n }\n {\n let _2n_1 = 2 * (i32(${ce(\"uniforms.x_shape\",n,t)}) - 1);\n k = k % _2n_1;\n if(k >= i32(${ce(\"uniforms.x_shape\",n,t)})) {\n k = _2n_1 - k;\n }\n }\n offset += k * i32(${ce(\"uniforms.x_strides\",n,t)});\n `;return`\n var offset = 0;\n var k = 0;\n ${a}\n value = x[offset];\n `},Kc=(e,t,r)=>{let a=\"\";for(let n=t-1;n>=0;--n)a+=`\n k = i32(${e.indicesGet(\"indices\",n)}) - ${ce(\"uniforms.pads\",n,r)};\n if (k < 0) {\n k = 0;\n }\n if (k >= i32(${ce(\"uniforms.x_shape\",n,t)})) {\n k = i32(${ce(\"uniforms.x_shape\",n,t)}) - 1;\n }\n offset += k * i32(${ce(\"uniforms.x_strides\",n,t)});\n `;return`\n var offset = 0;\n var k = 0;\n ${a}\n value = x[offset];\n `},Yc=(e,t,r)=>{let a=\"\";for(let n=t-1;n>=0;--n)a+=`\n k = i32(${e.indicesGet(\"indices\",n)}) - ${ce(\"uniforms.pads\",n,r)};\n if (k < 0) {\n k += i32(${ce(\"uniforms.x_shape\",n,t)}]);\n }\n if (k >= i32(${ce(\"uniforms.x_shape\",n,t)})) {\n k -= i32(${ce(\"uniforms.x_shape\",n,t)});\n }\n offset += k * i32(${ce(\"uniforms.x_strides\",n,t)});\n `;return`\n var offset = 0;\n var k = 0;\n ${a}\n value = x[offset];\n `},Zc=(e,t,r)=>{switch(r.mode){case 0:return qc(e,t,r.pads.length);case 1:return jc(e,t,r.pads.length);case 2:return Kc(e,t,r.pads.length);case 3:return Yc(e,t,r.pads.length);default:throw new Error(\"Invalid mode\")}},Xc=(e,t)=>{let r=U.padShape(e[0].dims.slice(),t.pads),a=e[0].dims,o=[{type:\"uint32\",data:U.size(r)},{type:\"uint32\",data:t.pads}];if(t.mode===0){let i=tt(e[0].dataType);o.push({type:i,data:t.value})}o.push(...G(e[0].dims),...G(r));let u=[\"rank\"],l=i=>{let c=q(\"output\",e[0].dataType,r.length),m=M(\"x\",e[0].dataType,a.length),f=m.type.value,h=Zc(c,a.length,t),b=[{name:\"output_size\",type:\"u32\"},{name:\"pads\",type:\"i32\",length:t.pads.length}];return t.mode===0&&b.push({name:\"constant_value\",type:f}),`\n ${i.registerUniforms(b).declareVariables(m,c)}\n ${i.mainStart()}\n ${i.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n\n let indices = ${c.offsetToIndices(\"global_idx\")};\n\n var value = ${f}(0);\n ${h}\n output[global_idx] = value;\n }`};return{name:\"Pad\",shaderCache:{hint:`${t.mode}`,inputDependencies:u},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(U.size(r)/64)},programUniforms:o}),getShaderSource:l}},Qc=(e,t)=>{if(e.length>1){let r=e[1].getBigInt64Array(),a=e.length>=3&&e[2].data?e[2].getFloat32Array()[0]:0,n=e[0].dims.length,o=new Int32Array(2*n).fill(0);if(e.length>=4){let l=e[3].getBigInt64Array();for(let i=0;io[Number(i)]=Number(l));let u=[];return o.forEach(l=>u.push(l)),{mode:t.mode,value:a,pads:u}}else return t},fu=(e,t)=>{Fc(e.inputs);let r=Qc(e.inputs,t);e.compute(Xc(e.inputs,r),{inputs:[0]})}});var Sn,gu,yu,bu,wu,Jc,ep,vu,$u,_u,xu,Su,Iu,Cu,Au,Eu,Tu,Ou,ku,Pu=F(()=>{\"use strict\";st();$e();ve();Sn=e=>{if(Se.webgpu.validateInputContent&&(!e||e.length!==1))throw new Error(\"Pool ops requires 1 input.\")},gu=(e,t,r)=>{let a=t.format===\"NHWC\",n=e.dims.slice();a&&n.splice(1,0,n.pop());let o=Object.hasOwnProperty.call(t,\"dilations\"),u=t.kernelShape.slice(),l=t.strides.slice(),i=o?t.dilations.slice():[],c=t.pads.slice();Vt.adjustPoolAttributes(r,n,u,l,i,c);let m=Vt.computePoolOutputShape(r,n,l,i,u,c,t.autoPad),f=Object.assign({},t);o?Object.assign(f,{kernelShape:u,strides:l,pads:c,dilations:i,cacheKey:t.cacheKey}):Object.assign(f,{kernelShape:u,strides:l,pads:c,cacheKey:t.cacheKey});let h=m.slice();return h.push(h.splice(1,1)[0]),[f,a?h:m]},yu=(e,t)=>{let r=t.format===\"NHWC\",a=U.size(e),n=U.size(t.kernelShape),o=[{type:\"uint32\",data:a},{type:\"uint32\",data:n}],u=[{name:\"outputSize\",type:\"u32\"},{name:\"kernelSize\",type:\"u32\"}];if(t.kernelShape.length<=2){let l=t.kernelShape[t.kernelShape.length-1],i=t.strides[t.strides.length-1],c=t.pads[t.pads.length/2-1],m=t.pads[t.pads.length-1],f=!!(c+m);o.push({type:\"uint32\",data:l},{type:\"uint32\",data:i},{type:\"uint32\",data:c},{type:\"uint32\",data:m}),u.push({name:\"kw\",type:\"u32\"},{name:\"sw\",type:\"u32\"},{name:\"pwStart\",type:\"u32\"},{name:\"pwEnd\",type:\"u32\"});let h=!1;if(t.kernelShape.length===2){let b=t.kernelShape[t.kernelShape.length-2],w=t.strides[t.strides.length-2],_=t.pads[t.pads.length/2-2],I=t.pads[t.pads.length-2];h=!!(_+I),o.push({type:\"uint32\",data:b},{type:\"uint32\",data:w},{type:\"uint32\",data:_},{type:\"uint32\",data:I}),u.push({name:\"kh\",type:\"u32\"},{name:\"sh\",type:\"u32\"},{name:\"phStart\",type:\"u32\"},{name:\"phEnd\",type:\"u32\"})}return[o,u,!0,f,h]}else{if(r)throw new Error(\"Pooling with kernelShape.length > 2 is not supported for NHWC format.\");let l=U.computeStrides(t.kernelShape);o.push({type:\"uint32\",data:l},{type:\"uint32\",data:t.pads},{type:\"uint32\",data:t.strides}),u.push({name:\"kernelStrides\",type:\"u32\",length:l.length},{name:\"pads\",type:\"u32\",length:t.pads.length},{name:\"strides\",type:\"u32\",length:t.strides.length});let i=t.pads.reduce((c,m)=>c+m);return[o,u,!!i,!1,!1]}},bu=(e,t,r,a,n,o,u,l,i,c,m,f)=>{let h=n.format===\"NHWC\",b=t.type.value,w=q(\"output\",t.type.tensor,a);if(n.kernelShape.length<=2){let _=\"\",I=\"\",$=\"\",x=r-(h?2:1);if(m?_=`\n for (var i: u32 = 0u; i < uniforms.kw; i++) {\n xIndices[${x}] = indices[${x}] * uniforms.sw - uniforms.pwStart + i;\n if (xIndices[${x}] < 0 || xIndices[${x}]\n >= uniforms.x_shape[${x}]) {\n pad++;\n continue;\n }\n let x_val = x[${t.indicesToOffset(\"xIndices\")}];\n ${o}\n }`:_=`\n for (var i: u32 = 0u; i < uniforms.kw; i++) {\n xIndices[${x}] = indices[${x}] * uniforms.sw - uniforms.pwStart + i;\n let x_val = x[${t.indicesToOffset(\"xIndices\")}];\n ${o}\n }`,n.kernelShape.length===2){let A=r-(h?3:2);f?I=`\n for (var j: u32 = 0u; j < uniforms.kh; j++) {\n xIndices[${A}] = indices[${A}] * uniforms.sh - uniforms.phStart + j;\n if (xIndices[${A}] < 0 || xIndices[${A}] >= uniforms.x_shape[${A}]) {\n pad += i32(uniforms.kw);\n continue;\n }\n `:I=`\n for (var j: u32 = 0u; j < uniforms.kh; j++) {\n xIndices[${A}] = indices[${A}] * uniforms.sh - uniforms.phStart + j;\n `,$=`\n }\n `}return`\n ${e.registerUniforms(i).declareVariables(t,w)}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\n\n let indices = ${w.offsetToIndices(\"global_idx\")};\n var xIndices = ${w.offsetToIndices(\"global_idx\")};\n\n var value = ${b}(${l});\n var pad = 0;\n ${I}\n ${_}\n ${$}\n ${u}\n\n output[global_idx] = value;\n }`}else{if(h)throw new Error(\"Pooling with kernelShape.length > 2 is not supported for NHWC format.\");let _=n.kernelShape.length,I=n.pads.length,$=\"\";return c?$=`\n if (xIndices[j] >= uniforms.x_shape[j]) {\n pad++;\n isPad = true;\n break;\n }\n }\n if (!isPad) {\n let x_val = x[${t.indicesToOffset(\"xIndices\")}];\n ${o}\n }`:$=`\n }\n let x_val = x[${t.indicesToOffset(\"xIndices\")}];\n ${o}\n `,`\n ${e.registerUniforms(i).declareVariables(t,w)}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\n let indices = ${w.offsetToIndices(\"global_idx\")};\n var xIndices = ${w.offsetToIndices(\"global_idx\")};\n\n var offsets: array;\n\n var value = ${b}(${l});\n var pad = 0;\n var isPad = false;\n\n for (var i: u32 = 0u; i < uniforms.kernelSize; i++) {\n var offset = i;\n for (var j = 0u; j < ${_-1}u; j++) {\n offsets[j] = offset / ${ce(\"uniforms.kernelStrides\",\"j\",_)};\n offset -= offsets[j] * ${ce(\"uniforms.kernelStrides\",\"j\",_)};\n }\n offsets[${_-1}] = offset;\n\n isPad = false;\n for (var j = ${r-_}u; j < ${r}u; j++) {\n xIndices[j] = indices[j] * ${ce(\"uniforms.strides\",`j - ${r-_}u`,_)}\n + offsets[j - ${r-_}u] - ${ce(\"uniforms.pads\",\"j - 2u\",I)};\n ${$}\n }\n ${u}\n\n output[global_idx] = value;\n }`}},wu=e=>`${e.format};${e.ceilMode};${e.autoPad};${e.kernelShape.length}`,Jc=e=>`${wu(e)};${e.countIncludePad}`,ep=e=>`${wu(e)};${e.storageOrder};${e.dilations}`,vu=e=>({format:e.format,autoPad:[\"NOTSET\",\"VALID\",\"SAME_UPPER\",\"SAME_LOWER\"][e.auto_pad],ceilMode:e.ceil_mode,kernelShape:e.kernel_shape,strides:e.strides,pads:e.pads}),$u=(e,t,r,a)=>{let[n,o]=gu(t,a,r),u=M(\"x\",t.dataType,t.dims.length),l=u.type.value,i=\"value += x_val;\",c=\"\";n.countIncludePad?c+=`value /= ${l}(uniforms.kernelSize);`:c+=`value /= ${l}(i32(uniforms.kernelSize) - pad);`;let[m,f,h,b,w]=yu(o,n);m.push(...G(t.dims),...G(o));let _=[\"rank\"];return{name:e,shaderCache:{hint:`${a.cacheKey};${h};${b};${w}`,inputDependencies:_},getRunData:()=>({outputs:[{dims:o,dataType:t.dataType}],dispatchGroup:{x:Math.ceil(U.size(o)/64)},programUniforms:m}),getShaderSource:I=>bu(I,u,t.dims.length,o.length,n,i,c,0,f,h,b,w)}},_u=e=>{let t=e.count_include_pad!==0,r=vu(e);if(r.ceilMode!==0)throw new Error(\"using ceil() in shape computation is not yet supported for AveragePool\");let a={countIncludePad:t,...r,cacheKey:\"\"};return{...a,cacheKey:Jc(a)}},xu=(e,t)=>{Sn(e.inputs),e.compute($u(\"AveragePool\",e.inputs[0],!1,t))},Su={autoPad:\"\",ceilMode:0,countIncludePad:!1,kernelShape:[],strides:[],pads:[],storageOrder:0,dilations:[]},Iu=e=>{let t=e.format;return{format:t,...Su,cacheKey:t}},Cu=(e,t)=>{Sn(e.inputs),e.compute($u(\"GlobalAveragePool\",e.inputs[0],!0,t))},Au=(e,t,r,a)=>{let[n,o]=gu(t,a,r),u=`\n value = max(x_val, value);\n `,l=\"\",i=M(\"x\",t.dataType,t.dims.length),c=[\"rank\"],[m,f,h,b,w]=yu(o,n);return m.push(...G(t.dims),...G(o)),{name:e,shaderCache:{hint:`${a.cacheKey};${h};${b};${w}`,inputDependencies:c},getRunData:()=>({outputs:[{dims:o,dataType:t.dataType}],dispatchGroup:{x:Math.ceil(U.size(o)/64)},programUniforms:m}),getShaderSource:_=>bu(_,i,t.dims.length,o.length,n,u,l,-1e5,f,h,b,w)}},Eu=(e,t)=>{Sn(e.inputs),e.compute(Au(\"MaxPool\",e.inputs[0],!1,t))},Tu=e=>{let t=e.storage_order,r=e.dilations,a=vu(e);if(t!==0)throw new Error(\"column major storage order is not yet supported for MaxPool\");if(a.ceilMode!==0)throw new Error(\"using ceil() in shape computation is not yet supported for MaxPool\");let n={storageOrder:t,dilations:r,...a,cacheKey:\"\"};return{...n,cacheKey:ep(n)}},Ou=e=>{let t=e.format;return{format:t,...Su,cacheKey:t}},ku=(e,t)=>{Sn(e.inputs),e.compute(Au(\"GlobalMaxPool\",e.inputs[0],!0,t))}});var rp,np,Ru,Bu=F(()=>{\"use strict\";st();Ue();ve();rp=(e,t,r)=>{let a=e===t,n=et&&r>0;if(a||n||o)throw new Error(\"Range these inputs' contents are invalid.\")},np=(e,t,r,a)=>{let n=Math.abs(Math.ceil((t-e)/r)),o=[n],u=n,l=tt(a),i=[{type:\"uint32\",data:u},{type:l,data:e},{type:l,data:r},...G(o)],c=m=>{let f=q(\"output\",a,o.length),h=f.type.value,b=[{name:\"outputSize\",type:\"u32\"},{name:\"start\",type:h},{name:\"delta\",type:h}];return`\n ${m.registerUniforms(b).declareVariables(f)}\n ${m.mainStart()}\n ${m.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\n output[global_idx] = uniforms.start + ${h}(global_idx) * uniforms.delta;\n }`};return{name:\"Range\",shaderCache:{hint:`${a}`},getShaderSource:c,getRunData:()=>({outputs:[{dims:o,dataType:a}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:i})}},Ru=e=>{let t=0,r=0,a=0;e.inputs[0].dataType===6?(t=e.inputs[0].getInt32Array()[0],r=e.inputs[1].getInt32Array()[0],a=e.inputs[2].getInt32Array()[0]):e.inputs[0].dataType===1&&(t=e.inputs[0].getFloat32Array()[0],r=e.inputs[1].getFloat32Array()[0],a=e.inputs[2].getFloat32Array()[0]),Se.webgpu.validateInputContent&&rp(t,r,a),e.compute(np(t,r,a,e.inputs[0].dataType),{inputs:[]})}});var ap,ip,op,sp,up,lp,dp,cp,pp,mp,fp,Du,hp,gp,yp,bp,wp,zu,Mu,Uu=F(()=>{\"use strict\";$e();je();ve();ap=(e,t)=>{if(e.every(r=>r>0||(()=>{throw new Error(\"Resize requires scales input values to be positive\")})),e.length>0){if(t.mode===\"linear\"){if(!(e.length===2||e.length===3||e.length===4&&e[0]===1&&e[1]===1||e.length===4&&e[0]===1&&e[3]===1||e.length===5&&e[0]===1&&e[1]===1))throw new Error(`For linear mode, Resize requires scales to be 2D, 3D, 4D with either two outermost or one innermost and\n one outermost scale values equal to 1, or 5D with two outermost scale values equal to 1`)}else if(t.mode===\"cubic\"&&!(e.length===2||e.length===4&&e[0]===1&&e[1]===1||e.length===4&&e[0]===1&&e[3]===1))throw new Error(\"Resize requires scales input size to be 2 or 4 for cubic mode\")}},ip=(e,t,r)=>{t.every(n=>n>=0&&n{throw new Error(\"Resize requires axes input values to be positive and less than rank\")}));let a=new Array(r).fill(1);return t.forEach((n,o)=>a[n]=e[o]),a},op=(e,t,r,a,n,o)=>{let[u,l,i]=r>10?[1,2,3]:[-1,e.length>1?1:-1,-1],c=e[0].dims.length;if(u>0&&e.length>u&&e[u].dims.length>0)e[u].getFloat32Array().forEach(m=>o.push(m));else if(t.coordinateTransformMode===\"tf_crop_and_resize\")throw new Error(\"Resize requires RoI input to be specified when coordinateTransformMode is tfCropAndResize\");if(l>0&&e.length>l&&e[l].dims.length>0){if(e[l].getFloat32Array().forEach(m=>a.push(m)),a.length!==0&&a.length!==c&&r>=18&&a.length!==t.axes.length)throw new Error(\"Resize requires scales input size to be same as input rank or axes size for opset 18 and up\");ap(a,t),t.axes.length>0&&ip(a,t.axes,c).forEach((m,f)=>a[f]=m)}if(i>0&&e.length>i&&(e[i].getBigInt64Array().forEach(m=>n.push(Number(m))),n.length!==c||r>=18&&n.length===t.axes.length))throw new Error(\"Resize requires sizes input size to be same as input rank or axes size for opset 18 and up\");if(t.axes.length>0){if(a.length!==t.axes.length)throw new Error('Resize requires \"scales\" input size to be of axes rank when axes attributes is specified');if(n.length!==t.axes.length)throw new Error('Resize requires \"sizes\" input size to be of rank axes rank when axes attributes is specified')}if(typeof a<\"u\"&&typeof n<\"u\"&&a.length>0&&n.length>c)throw new Error(\"Resize requires only of scales or sizes to be specified\")},sp=(e,t)=>`fn getOriginalCoordinateFromResizedCoordinate(xResized: u32, xScale: f32, lengthResized: u32,\n lengthOriginal: u32, roiStart: f32, roiEnd: f32) -> ${t} { `+(()=>{switch(e){case\"asymmetric\":return`return ${t}(xResized) / ${t}(xScale);`;case\"pytorch_half_pixel\":return`if (lengthResized > 1) {\n return (${t}(xResized) + 0.5) / ${t}(xScale) - 0.5;\n } else {\n return 0.0;\n }`;case\"tf_half_pixel_for_nn\":return`return (${t}(xResized) + 0.5) / ${t}(xScale);`;case\"align_corners\":return`if (lengthResized == 1) {\n return 0.0;\n } else {\n // The whole part and the fractional part are calculated separately due to inaccuracy of floating\n // point division. As an example, f32(21) / f32(7) may evaluate to 2.99... instead of 3, causing an\n // offset-by-one error later in floor().\n let whole = ${t}(xResized * (lengthOriginal - 1) / (lengthResized - 1));\n let fract =\n ${t}(xResized * (lengthOriginal - 1) % (lengthResized - 1)) / ${t}(lengthResized - 1);\n return whole + fract;\n }`;case\"tf_crop_and_resize\":return`if (lengthResized > 1) {\n return ${t}(roiStart) * ${t}(lengthOriginal - 1) +\n (${t}(xResized) * ${t}(roiEnd - roiStart) * ${t}(lengthOriginal - 1)) /\n ${t}(lengthResized - 1);\n } else {\n return 0.5 * ${t}(roiStart + roiEnd) * ${t}(lengthOriginal - 1);\n }`;case\"half_pixel_symmetric\":return`const outputWidth = ${t}xScale * ${t}(lengthResized);\n const adjustment = ${t}(lengthResized) / outputWidth;\n const center = ${t}(lengthOriginal) / 2;\n const offset = center * (1 - adjustment);\n return offset + ((${t}(xResized) + 0.5) / ${t}(xScale)) - 0.5;`;case\"half_pixel\":return`return ((${t}(xResized) + 0.5) / ${t}(xScale)) - 0.5;`;default:throw new Error(`Coordinate transform mode ${e} is not supported`)}})()+\"}\",up=(e,t,r)=>`fn getNearestPixelFromOriginal(xOriginal: ${r}, isDownSample: bool) -> ${r} {`+(()=>{switch(e){case\"round_prefer_ceil\":return\"if (fract(xOriginal) == 0.5) { return ceil(xOriginal); } else { return round(xOriginal); }\";case\"floor\":return\"return floor(xOriginal);\";case\"ceil\":return\"return ceil(xOriginal);\";case\"round_prefer_floor\":return\"if (fract(xOriginal) == 0.5) { return floor(xOriginal); } else { return round(xOriginal); }\";case\"simple\":default:if(t<11)return\"if (isDownSample) { return ceil(xOriginal); } else { return xOriginal; }\";throw new Error(`Nearest mode ${e} is not supported`)}})()+\"}\",lp=(e,t,r)=>{let a=new Array(r).fill(0).concat(new Array(r).fill(1)),n=e.length===0?a:e.slice();return t.length>0?(t.forEach((o,u)=>{a[o]=n[u],a[u+r]=n[t.length+u]}),a):n},dp=(e,t,r,a)=>{let n=[];if(r.length>0)if(a.length>0){if(e.forEach(o=>n.push(o)),Math.max(...a)>e.length)throw new Error(\"axes is out of bound\");a.forEach((o,u)=>n[o]=r[u])}else r.forEach(o=>n.push(o));else{if(t.length===0)throw new Error(\"Resize requires either scales or sizes.\");n=e.map((o,u)=>Math.round(o*t[u]))}return n},cp=(e,t,r)=>{let a=(()=>{switch(r.keepAspectRatioPolicy){case\"not_larger\":return r.axes.length>0?Math.min(...r.axes.map(o=>t[o]),Number.MAX_VALUE):Math.min(...t,Number.MAX_VALUE);case\"not_smaller\":return r.axes.length>0?Math.max(...r.axes.map(o=>t[o]),Number.MIN_VALUE):Math.max(...t,Number.MIN_VALUE);default:throw new Error(`Keep aspect ratio policy ${r.keepAspectRatioPolicy} is not supported`)}})();t.fill(1,0,t.length);let n=e.slice();return r.axes.length>0?(r.axes.forEach(o=>t[o]=a),r.axes.forEach(o=>n[o]=Math.round(e[o]*t[o]))):(t.fill(a,0,t.length),n.forEach((o,u)=>n[u]=Math.round(o*t[u]))),n},pp=(e,t,r,a,n)=>`\n fn calculateOriginalIndicesFromOutputIndices(output_indices: ${e.type.indices}) -> array<${e.type.value}, ${r.length}> {\n var original_indices: array<${e.type.value}, ${r.length}>;\n for (var i:u32 = 0; i < ${r.length}; i++) {\n var output_index = ${e.indicesGet(\"output_indices\",\"i\")};\n var scale = ${ce(\"uniforms.scales\",\"i\",a)};\n var roi_low = ${ce(\"uniforms.roi\",\"i\",n)};\n var roi_hi = ${ce(\"uniforms.roi\",`i + ${t.length}`,n)};\n if (scale == 1.0) {\n original_indices[i] = ${e.type.value}(output_index);\n } else {\n var input_shape_i = ${ce(\"uniforms.input_shape\",\"i\",t.length)};\n var output_shape_i = ${ce(\"uniforms.output_shape\",\"i\",r.length)};\n original_indices[i] = getOriginalCoordinateFromResizedCoordinate(output_index, scale, output_shape_i,\n input_shape_i, roi_low, roi_hi);\n }\n }\n return original_indices;\n }`,mp=(e,t,r,a,n,o,u)=>`\n fn calculateInputIndicesFromOutputIndices(output_indices: ${t.type.indices}) -> ${e.type.indices} {\n var input_indices: ${e.type.indices};\n for (var i:u32 = 0; i < ${a.length}; i++) {\n var output_index = ${t.indicesGet(\"output_indices\",\"i\")};\n var input_index: u32;\n var scale = ${ce(\"uniforms.scales\",\"i\",n)};\n if (scale == 1.0) {\n input_index = output_index;\n } else {\n var roi_low = ${ce(\"uniforms.roi\",\"i\",o)};\n var roi_hi = ${ce(\"uniforms.roi\",`i + ${r.length}`,o)};\n var input_shape_i = ${ce(\"uniforms.input_shape\",\"i\",r.length)};\n var output_shape_i = ${ce(\"uniforms.output_shape\",\"i\",a.length)};\n var original_idx = getOriginalCoordinateFromResizedCoordinate(output_index, scale, output_shape_i,\n input_shape_i, roi_low, roi_hi);\n if (!${u} || (original_idx >= 0 && original_idx < ${t.type.value}(input_shape_i))) {\n if (original_idx < 0) {\n input_index = 0;\n } else if (original_idx > ${t.type.value}(input_shape_i - 1)) {\n input_index = input_shape_i - 1;\n } else {\n input_index = u32(getNearestPixelFromOriginal(original_idx, scale < 1));\n }\n } else {\n input_index = u32(original_idx);\n }\n }\n ${e.indicesSet(\"input_indices\",\"i\",\" input_index\")}\n }\n return input_indices;\n }`,fp=(e,t)=>`\n fn checkInputIndices(input_indices: ${e.type.indices}) -> bool {\n for (var i:u32 = 0; i < ${t.length}; i++) {\n var input_index = ${e.indicesGet(\"input_indices\",\"i\")};\n if (input_index < 0 || input_index >= ${ce(\"uniforms.input_shape\",\"i\",t.length)}) {\n return false;\n }\n }\n return true;\n }`,Du=(e,t,r,a)=>e.rank>a?`\n ${e.indicesSet(\"input_indices\",t,\"channel\")};\n ${e.indicesSet(\"input_indices\",r,\"batch\")};\n`:\"\",hp=(e,t,r,a,n)=>{let[u,l,i,c]=r.length===2?[-1,0,1,-1]:[0,2,3,1],m=e.type.value;return`\n fn getInputValue(batch: u32, channel: u32, row: u32, col: u32) -> ${m} {\n var input_indices: ${e.type.indices};\n ${e.indicesSet(\"input_indices\",l,`max(0, min(row, ${r[l]} - 1))`)};\n ${e.indicesSet(\"input_indices\",i,`max(0, min(col, ${r[i]} - 1))`)};\n ${Du(e,c,u,2)}\n return ${e.getByIndices(\"input_indices\")};\n }\n\n fn bilinearInterpolation(output_indices: ${t.type.indices}) -> ${m} {\n var originalIndices = calculateOriginalIndicesFromOutputIndices(output_indices);\n var row:${m} = originalIndices[${l}];\n var col:${m} = originalIndices[${i}];\n ${a?`if (row < 0 || row > (${r[l]} - 1) || col < 0 || col > (${r[i]} - 1)) {\n return ${n};\n }`:\"\"};\n row = max(0, min(row, ${r[l]} - 1));\n col = max(0, min(col, ${r[i]} - 1));\n var row1: u32 = u32(row);\n var col1: u32 = u32(col);\n var row2: u32 = u32(row + 1);\n var col2: u32 = u32(col + 1);\n var channel: u32 = ${r.length>2?`u32(originalIndices[${c}])`:\"0\"};\n var batch: u32 = ${r.length>2?`u32(originalIndices[${u}])`:\"0\"};\n var x11: ${m} = getInputValue(batch, channel, row1, col1);\n var x12: ${m} = getInputValue(batch, channel, row1, col2);\n var x21: ${m} = getInputValue(batch, channel, row2, col1);\n var x22: ${m} = getInputValue(batch, channel, row2, col2);\n var dx1: ${m} = abs(row - ${m}(row1));\n var dx2: ${m} = abs(${m}(row2) - row);\n var dy1: ${m} = abs(col - ${m}(col1));\n var dy2: ${m} = abs(${m}(col2) - col);\n if (row1 == row2) {\n dx1 = 0.5;\n dx2 = 0.5;\n }\n if (col1 == col2) {\n dy1 = 0.5;\n dy2 = 0.5;\n }\n return (x11 * dx2 * dy2 + x12 * dx2 * dy1 + x21 * dx1 * dy2 + x22 * dx1 * dy1);\n }`},gp=(e,t,r,a,n,o,u,l,i,c)=>{let m=r.length===2,f=!0,[h,b]=m?[0,1]:f?[2,3]:[1,2],w=e.type.value,_=I=>{let $=I===h?\"row\":\"col\";return`\n fn ${$}CubicInterpolation(input_indices: ${e.type.indices}, output_indices: ${t.type.indices}) -> ${w} {\n var output_index = ${t.indicesGet(\"output_indices\",I)};\n var originalIdx: ${w} = getOriginalCoordinateFromResizedCoordinate(output_index, ${n[I]},\n ${a[I]}, ${r[I]}, ${o[I]}, ${o[I]} + ${r.length});\n var fractOriginalIdx: ${w} = originalIdx - floor(originalIdx);\n var coefs = getCubicInterpolationCoefs(fractOriginalIdx);\n\n if (${l} && (originalIdx < 0 || originalIdx > (${r[I]} - 1))) {\n return ${i};\n }\n var data: array<${w}, 4> = array<${w}, 4>(0.0, 0.0, 0.0, 0.0);\n for (var i: i32 = -1; i < 3; i++) {\n var ${$}: ${w} = originalIdx + ${w}(i);\n if (${$} < 0 || ${$} >= ${r[I]}) {\n ${(()=>c?`coefs[i + 1] = 0.0;\n continue;`:l?`return ${i};`:`${$} = max(0, min(${$}, ${r[I]} - 1));`)()};\n }\n var input_indices_copy: ${e.type.indices} = input_indices;\n ${e.indicesSet(\"input_indices_copy\",I,`u32(${$})`)};\n data[i + 1] = ${I===h?e.getByIndices(\"input_indices_copy\"):\"rowCubicInterpolation(input_indices_copy, output_indices)\"};\n }\n return cubicInterpolation1D(data, coefs);\n }`};return`\n ${_(h)};\n ${_(b)};\n fn getCubicInterpolationCoefs(s: ${w}) -> array<${w}, 4> {\n var absS = abs(s);\n var coeffs: array<${w}, 4> = array<${w}, 4>(0.0, 0.0, 0.0, 0.0);\n var oneMinusAbsS: ${w} = 1.0 - absS;\n var twoMinusAbsS: ${w} = 2.0 - absS;\n var onePlusAbsS: ${w} = 1.0 + absS;\n coeffs[0] = ((${u} * onePlusAbsS - 5 * ${u}) * onePlusAbsS + 8 * ${u}) * onePlusAbsS - 4 * ${u};\n coeffs[1] = ((${u} + 2) * absS - (${u} + 3)) * absS * absS + 1;\n coeffs[2] = ((${u} + 2) * oneMinusAbsS - (${u} + 3)) * oneMinusAbsS * oneMinusAbsS + 1;\n coeffs[3] = ((${u} * twoMinusAbsS - 5 * ${u}) * twoMinusAbsS + 8 * ${u}) * twoMinusAbsS - 4 * ${u};\n return coeffs;\n }\n\n fn cubicInterpolation1D(x: array<${w}, 4>, coefs: array<${w}, 4>) -> ${w} {\n var coefsSum: ${w} = coefs[0] + coefs[1] + coefs[2] + coefs[3];\n return (x[0] * coefs[0] + x[1] * coefs[1]+ x[2] * coefs[2]+ x[3] * coefs[3]) / coefsSum;\n }\n\n fn bicubicInterpolation(output_indices: ${t.type.indices}) -> ${w} {\n var input_indices: ${e.type.indices} = output_indices;\n return colCubicInterpolation(input_indices, output_indices);\n }\n `},yp=(e,t,r,a,n)=>{let[u,l,i,c,m]=r.length===3?[-1,0,1,2,-1]:[0,2,3,4,1],f=e.type.value;return`\n fn getInputValue(batch: u32, channel: u32, depth:u32, height: u32, width: u32) -> ${f} {\n var input_indices: ${e.type.indices};\n ${e.indicesSet(\"input_indices\",l,`max(0, min(depth, ${r[l]} - 1))`)};\n ${e.indicesSet(\"input_indices\",i,`max(0, min(height, ${r[i]} - 1))`)};\n ${e.indicesSet(\"input_indices\",c,`max(0, min(width, ${r[c]} - 1))`)};\n ${Du(e,m,u,3)}\n return ${e.getByIndices(\"input_indices\")};\n }\n\n fn trilinearInterpolation(output_indices: ${t.type.indices}) -> ${f} {\n var originalIndices = calculateOriginalIndicesFromOutputIndices(output_indices);\n var depth:${f} = originalIndices[${l}];\n var height:${f} = originalIndices[${i}];\n var width:${f} = originalIndices[${c}];\n ${a?`if (depth < 0 || depth > (${r[l]} - 1) || height < 0 || height > (${r[i]} - 1) || width < 0 || (width > ${r[c]} - 1)) {\n return ${n};\n }`:\"\"};\n\n depth = max(0, min(depth, ${r[l]} - 1));\n height = max(0, min(height, ${r[i]} - 1));\n width = max(0, min(width, ${r[c]} - 1));\n var depth1: u32 = u32(depth);\n var height1: u32 = u32(height);\n var width1: u32 = u32(width);\n var depth2: u32 = u32(depth + 1);\n var height2: u32 = u32(height + 1);\n var width2: u32 = u32(width + 1);\n var channel: u32 = ${r.length>3?`u32(originalIndices[${m}])`:\"0\"};\n var batch: u32 = ${r.length>3?`u32(originalIndices[${u}])`:\"0\"};\n\n var x111: ${f} = getInputValue(batch, channel, depth1, height1, width1);\n var x112: ${f} = getInputValue(batch, channel, depth1, height1, width2);\n var x121: ${f} = getInputValue(batch, channel, depth1, height2, width1);\n var x122: ${f} = getInputValue(batch, channel, depth1, height2, width2);\n var x211: ${f} = getInputValue(batch, channel, depth2, height1, width1);\n var x212: ${f} = getInputValue(batch, channel, depth2, height1, width2);\n var x221: ${f} = getInputValue(batch, channel, depth2, height2, width1);\n var x222: ${f} = getInputValue(batch, channel, depth2, height2, width2);\n var dx1: ${f} = abs(depth - ${f}(depth1));\n var dx2: ${f} = abs(${f}(depth2) - depth);\n var dy1: ${f} = abs(height - ${f}(height1));\n var dy2: ${f} = abs(${f}(height2) - height);\n var dz1: ${f} = abs(width - ${f}(width1));\n var dz2: ${f} = abs(${f}(width2) - width);\n if (depth1 == depth2) {\n dx1 = 0.5;\n dx2 = 0.5;\n }\n if (height1 == height2) {\n dy1 = 0.5;\n dy2 = 0.5;\n }\n if (width1 == width2) {\n dz1 = 0.5;\n dz2 = 0.5;\n }\n return (x111 * dx2 * dy2 * dz2 + x112 * dx2 * dy2 * dz1 + x121 * dx2 * dy1 *dz2 + x122 * dx2 * dy1 * dz1 +\n x211 * dx1 * dy2 * dz2 + x212 * dx1 * dy2 * dz1 + x221 * dx1 * dy1 *dz2 + x222 * dx1 * dy1 * dz1);\n }`},bp=(e,t,r,a,n,o)=>{let u=e.dims,l=lp(o,t.axes,u.length),i=dp(u,a,n,t.axes),c=a.slice();a.length===0&&(c=u.map((x,T)=>x===0?1:i[T]/x),t.keepAspectRatioPolicy!==\"stretch\"&&(i=cp(u,c,t)));let m=q(\"output\",e.dataType,i.length),f=M(\"input\",e.dataType,u.length),h=U.size(i),b=u.length===i.length&&u.every((x,T)=>x===i[T]),w=t.coordinateTransformMode===\"tf_crop_and_resize\",_=t.extrapolationValue,I=f.type.value,$=x=>`\n ${b?\"\":`\n ${sp(t.coordinateTransformMode,I)};\n ${(()=>{switch(t.mode){case\"nearest\":return`\n ${fp(f,u)};\n ${up(t.nearestMode,r,I)};\n ${mp(f,m,u,i,c.length,l.length,w)};\n `;case\"linear\":return`\n ${pp(m,u,i,c.length,l.length)};\n ${(()=>{if(u.length===2||u.length===4)return`${hp(f,m,u,w,_)}`;if(u.length===3||u.length===5)return`${yp(f,m,u,w,_)}`;throw Error(\"Linear mode only supports input dims 2, 3, 4 and 5 are supported in linear mode.\")})()};\n `;case\"cubic\":return`\n ${(()=>{if(u.length===2||u.length===4)return`${gp(f,m,u,i,c,l,t.cubicCoeffA,w,t.extrapolationValue,t.excludeOutside)}`;throw Error(\"Cubic mode only supports input dims 2 and 4 are supported in linear mode.\")})()};\n `;default:throw Error(\"Invalid resize mode\")}})()};\n `}\n ${x.registerUniform(\"output_size\",\"u32\").registerUniform(\"scales\",\"f32\",c.length).registerUniform(\"roi\",\"f32\",l.length).declareVariables(f,m)}\n ${x.mainStart()}\n ${x.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n ${b?\"output[global_idx] = input[global_idx];\":`\n let output_indices = ${m.offsetToIndices(\"global_idx\")};\n var input_indices: ${f.type.indices};\n ${(()=>{switch(t.mode){case\"nearest\":return`input_indices = calculateInputIndicesFromOutputIndices(output_indices);\n if (checkInputIndices(input_indices)) {\n output[global_idx] = ${f.getByIndices(\"input_indices\")};\n } else {\n output[global_idx] = ${t.extrapolationValue};\n }`;case\"linear\":return`output[global_idx] = ${u.length===2||u.length===4?\"bilinearInterpolation\":\"trilinearInterpolation\"}(output_indices);`;case\"cubic\":return\"output[global_idx] = bicubicInterpolation(output_indices);\";default:throw Error(`Unsupported resize mode: ${t.mode}`)}})()};\n`}\n }`;return{name:\"Resize\",shaderCache:{hint:`${t.cacheKey}|${r}|${c.length>0?c:\"\"}|${n.length>0?n:\"\"}|${l.length>0?l:\"\"}|${b}|${u}`,inputDependencies:[\"rank\"]},getShaderSource:$,getRunData:()=>({outputs:[{dims:i,dataType:e.dataType}],dispatchGroup:{x:Math.ceil(h/64)},programUniforms:[{type:\"uint32\",data:h},{type:\"float32\",data:c},{type:\"float32\",data:l},...G(u),...G(i)]})}},wp=e=>{let t=e.customDataBuffer;return new Uint32Array(t,t.byteOffset,1)[0]},zu=(e,t)=>{let r=[],a=[],n=[],o=wp(e);if(t.antialias!==0)throw Error(\"Only default value (0) for Antialias attribute is supported\");op(e.inputs,t,o,r,a,n),e.compute(bp(e.inputs[0],t,o,r,a,n),{inputs:[0]})},Mu=e=>{let t=e.antialias,r=e.axes,a=e.coordinateTransformMode,n=e.cubicCoeffA,o=e.excludeOutside!==0,u=e.extrapolationValue,l=e.keepAspectRatioPolicy,i=e.mode,c=e.nearestMode===\"\"?\"simple\":e.nearestMode;return ge({antialias:t,axes:r,coordinateTransformMode:a,cubicCoeffA:n,excludeOutside:o,extrapolationValue:u,keepAspectRatioPolicy:l,mode:i,nearestMode:c})}});var vp,$p,Nu,Wu,Vu=F(()=>{\"use strict\";Ue();$e();je();ve();vp=e=>{if(!e||e.length<3)throw new Error(\"layerNorm requires at least 3 inputs.\");let t=e[0],r=e[1],a=e[2];if(t.dataType!==r.dataType||t.dataType!==a.dataType)throw new Error(\"All inputs must have the same data type\");if(t.dims.length!==3&&t.dims.length!==2)throw new Error(\"Input must be 2D or 3D\");if(r.dims.length!==3&&r.dims.length!==2)throw new Error(\"Skip must be 2D or 3D\");let n=t.dims[t.dims.length-1],o=t.dims[t.dims.length-2];if(r.dims[r.dims.length-1]!==n)throw new Error(\"Skip must have the same hidden size as input\");if(r.dims[r.dims.length-2]!==o)throw new Error(\"Skip must have the same sequence length as input\");if(a.dims.length!==1)throw new Error(\"Gamma must be 1D\");if(a.dims[a.dims.length-1]!==n)throw new Error(\"Gamma must have the same hidden size as input\");if(e.length>3){let u=e[3];if(u.dims.length!==1)throw new Error(\"Beta must be 1D\");if(u.dims[u.dims.length-1]!==n)throw new Error(\"Beta must have the same hidden size as input\")}if(e.length>4){let u=e[4];if(u.dims.length!==1)throw new Error(\"Bias must be 1D\");if(u.dims[u.dims.length-1]!==n)throw new Error(\"Bias must have the same hidden size as input\")}},$p=(e,t,r,a)=>{let n=e[0].dims,o=U.size(n),u=n,l=o,i=n.slice(-1)[0],c=a?n.slice(0,-1).concat(1):[],m=e.length>3,f=e.length>4,h=a&&r>1,b=a&&r>2,w=r>3,_=qe(i),I=[M(\"x\",e[0].dataType,e[0].dims,_),M(\"skip\",e[1].dataType,e[1].dims,_),M(\"gamma\",e[2].dataType,e[2].dims,_)];m&&I.push(M(\"beta\",e[3].dataType,e[3].dims,_)),f&&I.push(M(\"bias\",e[4].dataType,e[4].dims,_)),I.push(q(\"output\",e[0].dataType,u,_)),h&&I.push(q(\"meanOutput\",1,c)),b&&I.push(q(\"invStdOutput\",1,c)),w&&I.push(q(\"inputSkipBiasSum\",e[0].dataType,u,_));let $=Fe(e[0].dataType),x=A=>`\n const hiddenSize: f32 = ${i};\n const hiddenSizeVectorized: u32 = ${i/_};\n const epsilon: f32 = ${t.epsilon};\n\n ${A.declareVariables(...I)}\n\n ${A.mainStart()}\n ${A.guardAgainstOutOfBoundsWorkgroupSizes(l/i)}\n let offset = global_idx * hiddenSizeVectorized;\n var sum = ${Qe(\"f32\",_)};\n var squareSum = ${Qe(\"f32\",_)};\n for (var i: u32 = 0; i < hiddenSizeVectorized; i++) {\n let skipValue = skip[offset + i];\n let biasValue = ${f?\"bias[i]\":\"0.0\"};\n let inputValue = x[offset + i];\n let value = inputValue + skipValue + biasValue;\n ${w?\"inputSkipBiasSum[offset + i] = value;\":\"\"}\n output[offset + i] = value;\n let f32Value = ${pt($,_,\"value\")};\n sum += f32Value;\n squareSum += f32Value * f32Value;\n }\n let mean = ${rt(\"sum\",_)} / hiddenSize;\n let invStdDev = inverseSqrt(${rt(\"squareSum\",_)} / hiddenSize - mean * mean + epsilon);\n ${h?\"meanOutput[global_idx] = mean;\":\"\"}\n ${b?\"invStdOutput[global_idx] = invStdDev;\":\"\"}\n for (var i: u32 = 0; i < hiddenSizeVectorized; i++) {\n output[offset + i] = (output[offset + i] - ${$}(mean)) * ${$}(invStdDev) * gamma[i]\n + ${m?\"beta[i]\":\"0.0\"};\n }\n }`,T=[{dims:u,dataType:e[0].dataType}];return r>1&&T.push({dims:c,dataType:1}),r>2&&T.push({dims:c,dataType:1}),r>3&&T.push({dims:n,dataType:e[0].dataType}),{name:\"SkipLayerNormalization\",shaderCache:{hint:t.cacheKey},getShaderSource:x,getRunData:()=>({outputs:T,dispatchGroup:{x:Math.ceil(l/i/64)}})}},Nu=(e,t)=>{vp(e.inputs);let a=[0];e.outputCount>1&&a.push(-3),e.outputCount>2&&a.push(-3),e.outputCount>3&&a.push(3),e.compute($p(e.inputs,t,e.outputCount,!1),{outputs:a})},Wu=e=>{let t=e.epsilon;return ge({epsilon:t})}});var _p,In,xp,Hu,Sp,Ip,Lu,Gu,Fu=F(()=>{\"use strict\";Ue();$e();je();ve();_p=(e,t)=>{if(!e||e.length<1)throw new Error(\"too few inputs\");if(t.axes.length!==0){if(t.axes.length!==t.starts.length||t.axes.length!==t.ends.length)throw new Error(\"axes, starts and ends must have the same length\")}else if(t.starts.length!==t.ends.length)throw new Error(\"starts and ends must have the same length\");e.slice(1).forEach((r,a)=>{if(e[a+1].dataType!==6&&e[a+1].dataType!==7)throw new Error(`Input ${a} must be an array of int32 or int64`)})},In=(e,t)=>{let r=[];if(e.length>t)if(e[t].dataType===7)e[t].getBigInt64Array().forEach(a=>r.push(Number(a)));else if(e[t].dataType===6)e[t].getInt32Array().forEach(a=>r.push(Number(a)));else throw new Error(`Input ${t} must be an array of int32 or int64`);return r},xp=(e,t)=>{if(e.length>1){let r=In(e,1),a=In(e,2),n=In(e,3);return n.length===0&&(n=[...Array(e[0].dims.length).keys()]),ge({starts:r,ends:a,axes:n})}else return t},Hu=(e,t,r,a,n)=>{let o=e;return e<0&&(o+=r[a[t]]),n[t]<0?Math.max(0,Math.min(o,r[a[t]]-1)):Math.max(0,Math.min(o,r[a[t]]))},Sp=(e,t,r)=>`fn calculateInputIndices(output_indices: ${t.type.indices}) -> ${e.type.indices} {\n var input_indices: ${e.type.indices};\n var carry = 0u;\n for (var i = ${r.length}; i >= 0; i--) {\n let input_shape_i = ${ce(\"uniforms.input_shape\",\"i\",r.length)};\n let steps_i = ${ce(\"uniforms.steps\",\"i\",r.length)};\n let signs_i = ${ce(\"uniforms.signs\",\"i\",r.length)};\n let starts_i = ${ce(\"uniforms.starts\",\"i\",r.length)};\n var output_index = ${t.indicesGet(\"output_indices\",\"i\")};\n var input_index = output_index * steps_i + starts_i + carry;\n carry = input_index / input_shape_i;\n input_index = input_index % input_shape_i;\n if (signs_i < 0) {\n input_index = input_shape_i - input_index - 1u + starts_i;\n }\n ${e.indicesSet(\"input_indices\",\"i\",\"input_index\")};\n }\n return input_indices;\n }`,Ip=(e,t)=>{let r=e[0].dims,a=U.size(r),n=t.axes.length>0?U.normalizeAxes(t.axes,r.length):[...Array(r.length).keys()],o=In(e,4);o.forEach($=>$!==0||(()=>{throw new Error(\"step cannot be 0\")})),o.length===0&&(o=Array(n.length).fill(1));let u=t.starts.map(($,x)=>Hu($,x,r,n,o)),l=t.ends.map(($,x)=>Hu($,x,r,n,o));if(n.length!==u.length||n.length!==l.length)throw new Error(\"start, ends and axes should have the same number of elements\");if(n.length!==r.length)for(let $=0;$Math.sign($));o.forEach(($,x,T)=>{if($<0){let A=(l[x]-u[x])/$,z=u[x],R=z+A*o[x];u[x]=R,l[x]=z,T[x]=-$}});let c=r.slice(0);n.forEach(($,x)=>{c[$]=Math.ceil((l[$]-u[$])/o[$])});let m={dims:c,dataType:e[0].dataType},f=q(\"output\",e[0].dataType,c.length),h=M(\"input\",e[0].dataType,e[0].dims.length),b=U.size(c),w=[{name:\"outputSize\",type:\"u32\"},{name:\"starts\",type:\"u32\",length:u.length},{name:\"signs\",type:\"i32\",length:i.length},{name:\"steps\",type:\"u32\",length:o.length}],_=[{type:\"uint32\",data:b},{type:\"uint32\",data:u},{type:\"int32\",data:i},{type:\"uint32\",data:o},...G(e[0].dims),...G(c)],I=$=>`\n ${$.registerUniforms(w).declareVariables(h,f)}\n ${Sp(h,f,r)}\n ${$.mainStart()}\n ${$.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\n let output_indices = ${f.offsetToIndices(\"global_idx\")};\n let input_indices = calculateInputIndices(output_indices);\n ${f.setByOffset(\"global_idx\",h.getByIndices(\"input_indices\"))}\n }`;return{name:\"Slice\",shaderCache:{hint:`${i.length}_${u.length}_${o.length}`,inputDependencies:[\"rank\"]},getShaderSource:I,getRunData:()=>({outputs:[m],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:_})}},Lu=(e,t)=>{_p(e.inputs,t);let r=xp(e.inputs,t);e.compute(Ip(e.inputs,r),{inputs:[0]})},Gu=e=>{let t=e.starts,r=e.ends,a=e.axes;return ge({starts:t,ends:r,axes:a})}});var Cp,Ap,qu,ju,Ku=F(()=>{\"use strict\";$e();je();ve();Cp=e=>{if(!e||e.length!==1)throw new Error(\"Softmax op requires 1 input.\")},Ap=(e,t)=>{let r=e.dims,a=U.size(r),n=64,o=t.axis;if(o<0&&(o=r.length+o),o$===4?`max(max(${I}.x, ${I}.y), max(${I}.z, ${I}.w))`:$===2?`max(${I}.x, ${I}.y)`:$===3?`max(max(${I}.x, ${I}.y), ${I}.z)`:I,f=M(\"x\",e.dataType,e.dims,i),h=q(\"result\",e.dataType,e.dims,i),b=f.type.value,w=Fe(e.dataType)===\"f32\"?`var threadMax = ${b}(-3.402823e+38f);`:`var threadMax = ${b}(-65504.0h);`,_=I=>`\n var rowMaxShared : ${b};\n var rowSumShared : ${b};\n var threadShared : array<${b}, ${n}>;\n\n fn getValue(row: i32, col: i32, row_stride: i32) -> ${b} {\n let index = row * row_stride + col;\n return x[index];\n }\n\n fn setValue(row: i32, col: i32, row_stride: i32, value: ${b}) {\n let index = row * row_stride + col;\n result[index] = value;\n }\n ${I.registerUniform(\"packedCols\",\"i32\").declareVariables(f,h)}\n ${I.mainStart()}\n let gindex = i32(global_idx);\n let lindex = i32(local_idx);\n const wg = ${n};\n let row = gindex / wg;\n let cols = uniforms.packedCols;\n let row_stride : i32 = uniforms.packedCols;\n\n // find the rows max\n ${w}\n for (var col = lindex; col < cols; col += wg) {\n let value = getValue(row, col, row_stride);\n threadMax = max(threadMax, value);\n }\n if (lindex < cols) {\n threadShared[lindex] = threadMax;\n }\n workgroupBarrier();\n\n var reduceSize = min(cols, wg);\n for (var currSize = reduceSize >> 1; currSize > 0; currSize = reduceSize >> 1) {\n reduceSize = currSize + (reduceSize & 1);\n if (lindex < currSize) {\n threadShared[lindex] = max(threadShared[lindex], threadShared[lindex + reduceSize]);\n }\n workgroupBarrier();\n }\n if (lindex == 0) {\n rowMaxShared = ${b}(${m(\"threadShared[0]\",i)});\n }\n workgroupBarrier();\n\n // find the rows sum\n var threadSum = ${b}(0.0);\n for (var col = lindex; col < cols; col += wg) {\n let subExp = exp(getValue(row, col, row_stride) - rowMaxShared);\n threadSum += subExp;\n }\n threadShared[lindex] = threadSum;\n workgroupBarrier();\n\n for (var currSize = wg >> 1; currSize > 0; currSize = currSize >> 1) {\n if (lindex < currSize) {\n threadShared[lindex] = threadShared[lindex] + threadShared[lindex + currSize];\n }\n workgroupBarrier();\n }\n if (lindex == 0) {\n rowSumShared = ${b}(${rt(\"threadShared[0]\",i)});\n }\n workgroupBarrier();\n\n // calculate final value for each element in the row\n for (var col = lindex; col < cols; col += wg) {\n let value = exp(getValue(row, col, row_stride) - rowMaxShared) / rowSumShared;\n setValue(row, col, row_stride, value);\n }\n }`;return{name:\"Softmax\",shaderCache:{hint:`${i}`,inputDependencies:[\"type\"]},getRunData:()=>({outputs:[{dims:r,dataType:e.dataType}],dispatchGroup:{x:l},programUniforms:[{type:\"uint32\",data:c}]}),getShaderSource:_}},qu=(e,t)=>{Cp(e.inputs),e.compute(Ap(e.inputs[0],t))},ju=e=>ge({axis:e.axis})});var Ep,Tp,Op,kp,Pp,Yu,Zu,Xu=F(()=>{\"use strict\";$e();je();ve();Ep=e=>{if(!e||e.length<1)throw new Error(\"too few inputs\")},Tp=(e,t)=>{let r=[],a=t.numOutputs;return e[1].dims[0]>0&&(e[1].getBigInt64Array().forEach(n=>r.push(Number(n))),a=r.length),ge({numOutputs:a,axis:t.axis,splitSizes:r})},Op=e=>`\nfn calculateOutputIndex(index: u32) -> u32 {\n for (var i: u32 = 0u; i < ${e}u; i += 1u ) {\n if (index < ${ce(\"uniforms.size_in_split_axis\",\"i\",e)}) {\n return i;\n }\n }\n return ${e}u;\n}`,kp=e=>{let t=e.length,r=[];for(let a=0;a{let r=e[0].dims,a=U.size(r),n=e[0].dataType,o=U.normalizeAxis(t.axis,r.length),u=new Array(t.numOutputs),l=M(\"input\",n,r),i=new Array(t.numOutputs),c=[],m=[],f=0,h=[{type:\"uint32\",data:a}];for(let w=0;wh.push(...G(w)));let b=w=>`\n ${w.registerUniform(\"input_size\",\"u32\").registerUniform(\"size_in_split_axis\",\"u32\",i.length).declareVariables(l,...u)}\n ${Op(i.length)}\n ${kp(u)}\n\n ${w.mainStart()}\n ${w.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.input_size\")}\n\n var indices = ${l.offsetToIndices(\"global_idx\")};\n var index = ${l.indicesGet(\"indices\",o)};\n let output_number = calculateOutputIndex(index);\n if (output_number != 0) {\n index -= ${ce(\"uniforms.size_in_split_axis\",\"output_number - 1u\",i.length)};\n ${l.indicesSet(\"indices\",o,\"index\")};\n }\n writeBufferData(output_number, indices, global_idx);\n }`;return{name:\"Split\",shaderCache:{hint:t.cacheKey,inputDependencies:[\"rank\"]},getShaderSource:b,getRunData:()=>({outputs:c,dispatchGroup:{x:Math.ceil(a/64)},programUniforms:h})}},Yu=(e,t)=>{Ep(e.inputs);let r=e.inputs.length===1?t:Tp(e.inputs,t);e.compute(Pp(e.inputs,r),{inputs:[0]})},Zu=e=>{let t=e.axis,r=e.splitSizes,a=e.numOutputs<0?r.length:e.numOutputs;if(a!==r.length)throw new Error(\"numOutputs and splitSizes lengh must be equal\");return ge({axis:t,numOutputs:a,splitSizes:r})}});var Qu,Rp,Bp,Dp,Ju,el=F(()=>{\"use strict\";Ue();$e();ve();Qu=e=>Array.from(e.getBigInt64Array(),Number),Rp=e=>{if(!e||e.length!==2)throw new Error(\"Tile requires 2 inputs.\");if(e[0].dataType!==1&&e[0].dataType!==6&&e[0].dataType!==12)throw new Error(\"Tile only support float, int32, and uint32 data types\");if(e[1].dataType!==7)throw new Error(\"Tile `repeats` input should be of int64 data type\");if(e[1].dims.length!==1)throw new Error(\"Tile `repeats` input should be 1-D\");if(Qu(e[1]).length!==e[0].dims.length)throw new Error(\"Tile `repeats` input should have same number of elements as rank of input data tensor\")},Bp=(e,t)=>{let r=[];for(let a=0;a{let t=e[0].dims,r=Qu(e[1]),a=Bp(t,r),n=U.size(a),o=e[0].dataType,u=M(\"input\",o,t.length),l=q(\"output\",o,a.length),i=c=>`\n const inputShape = ${u.indices(...t)};\n ${c.registerUniform(\"output_size\",\"u32\").declareVariables(u,l)}\n ${c.mainStart()}\n ${c.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n let output_indices = ${l.offsetToIndices(\"global_idx\")};\n var input_indices: ${u.type.indices};\n for (var i = 0; i < ${t.length}; i++) {\n let input_dim_i = ${u.indicesGet(\"uniforms.input_shape\",\"i\")};\n let input_dim_value = ${l.indicesGet(\"output_indices\",\"i\")} % input_dim_i;\n\n ${u.indicesSet(\"input_indices\",\"i\",\"input_dim_value\")}\n }\n ${l.setByOffset(\"global_idx\",u.getByIndices(\"input_indices\"))}\n }`;return{name:\"Tile\",shaderCache:{hint:`${r}`,inputDependencies:[\"rank\"]},getRunData:()=>({outputs:[{dims:a,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(n/64)},programUniforms:[{type:\"uint32\",data:n},...G(e[0].dims),...G(a)]}),getShaderSource:i}},Ju=e=>{Rp(e.inputs),e.compute(Dp(e.inputs),{inputs:[0]})}});var zp,Mp,tl,rl=F(()=>{\"use strict\";Ue();$e();ve();zp=(e,t,r,a,n)=>{let o=q(\"output_data\",n,r.length,4),u=M(\"a_data\",t[1].dataType,t[1].dims.length,4),l=M(\"b_data\",t[2].dataType,t[2].dims.length,4),i=M(\"c_data\",t[0].dataType,t[0].dims.length,4),c,m=(f,h,b)=>`select(${h}, ${f}, ${b})`;if(!a)c=o.setByOffset(\"global_idx\",m(u.getByOffset(\"global_idx\"),l.getByOffset(\"global_idx\"),i.getByOffset(\"global_idx\")));else{let f=(h,b,w=\"\")=>{let _=`a_data[index_a${b}][component_a${b}]`,I=`b_data[index_b${b}][component_b${b}]`,$=`bool(c_data[index_c${b}] & ${4278190080>>>(3-b)*8}u)`;return`\n let output_indices${b} = ${o.offsetToIndices(`global_idx * 4u + ${b}u`)};\n let offset_a${b} = ${u.broadcastedIndicesToOffset(`output_indices${b}`,o)};\n let offset_b${b} = ${l.broadcastedIndicesToOffset(`output_indices${b}`,o)};\n let offset_c${b} = ${i.broadcastedIndicesToOffset(`output_indices${b}`,o)};\n let index_a${b} = offset_a${b} / 4u;\n let index_b${b} = offset_b${b} / 4u;\n let index_c${b} = offset_c${b} / 4u;\n let component_a${b} = offset_a${b} % 4u;\n let component_b${b} = offset_b${b} % 4u;\n ${h}[${b}] = ${w}(${m(_,I,$)});\n `};n===9?c=`\n var data = vec4(0);\n ${f(\"data\",0,\"u32\")}\n ${f(\"data\",1,\"u32\")}\n ${f(\"data\",2,\"u32\")}\n ${f(\"data\",3,\"u32\")}\n output_data[global_idx] = dot(vec4(0x1, 0x100, 0x10000, 0x1000000), vec4(data));`:c=`\n ${f(\"output_data[global_idx]\",0)}\n ${f(\"output_data[global_idx]\",1)}\n ${f(\"output_data[global_idx]\",2)}\n ${f(\"output_data[global_idx]\",3)}\n `}return`\n ${e.registerUniform(\"vec_size\",\"u32\").declareVariables(i,u,l,o)}\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.vec_size\")}\n ${c}\n }`},Mp=e=>{let t=e[1].dims,r=e[2].dims,a=e[0].dims,n=e[1].dataType,o=!(U.areEqual(t,r)&&U.areEqual(r,a)),u=t,l=U.size(t);if(o){let c=gt.calcShape(gt.calcShape(t,r,!1),a,!1);if(!c)throw new Error(\"Can't perform where op on the given tensors\");u=c,l=U.size(u)}let i=Math.ceil(l/4);return{name:\"Where\",shaderCache:{inputDependencies:[\"rank\",\"rank\",\"rank\"]},getShaderSource:c=>zp(c,e,u,o,n),getRunData:()=>({outputs:[{dims:u,dataType:n}],dispatchGroup:{x:Math.ceil(l/64/4)},programUniforms:[{type:\"uint32\",data:i},...G(a),...G(t),...G(r),...G(u)]})}},tl=e=>{e.compute(Mp(e.inputs))}});var nl,al=F(()=>{\"use strict\";Ao();ca();Oo();Po();cs();_s();Is();ga();Ns();Hs();js();Zs();Js();ru();iu();su();lu();ba();mu();hu();Pu();Bu();mn();Uu();Vu();Fu();Ku();Xu();el();tr();pa();rl();nl=new Map([[\"Abs\",[Ro]],[\"Acos\",[Bo]],[\"Acosh\",[Do]],[\"Add\",[ps]],[\"ArgMax\",[Co,da]],[\"ArgMin\",[Io,da]],[\"Asin\",[zo]],[\"Asinh\",[Mo]],[\"Atan\",[Uo]],[\"Atanh\",[No]],[\"Attention\",[Eo]],[\"AveragePool\",[xu,_u]],[\"BatchNormalization\",[To]],[\"BiasAdd\",[ko]],[\"BiasSplitGelu\",[ds]],[\"Cast\",[Vo,Wo]],[\"Ceil\",[Lo]],[\"Clip\",[Ho]],[\"Concat\",[xs,Ss]],[\"Conv\",[va,wa]],[\"ConvTranspose\",[Us,Ms]],[\"Cos\",[Go]],[\"Cosh\",[Fo]],[\"CumSum\",[Ws,Vs]],[\"Div\",[ms]],[\"Einsum\",[Fs,qs]],[\"Elu\",[qo,gn]],[\"Equal\",[fs]],[\"Erf\",[jo]],[\"Exp\",[Ko]],[\"Expand\",[Ys]],[\"Floor\",[Yo]],[\"FusedConv\",[va,wa]],[\"Gather\",[Qs,Xs]],[\"GatherElements\",[tu,eu]],[\"Gelu\",[Zo]],[\"Gemm\",[au,nu]],[\"GlobalAveragePool\",[Cu,Iu]],[\"GlobalMaxPool\",[ku,Ou]],[\"Greater\",[bs]],[\"GreaterOrEqual\",[vs]],[\"InstanceNormalization\",[ou]],[\"LayerNormalization\",[uu]],[\"LeakyRelu\",[Xo,gn]],[\"Less\",[ws]],[\"LessOrEqual\",[$s]],[\"Log\",[ls]],[\"MatMul\",[Os]],[\"MaxPool\",[Eu,Tu]],[\"Mul\",[hs]],[\"MultiHeadAttention\",[pu,cu]],[\"Neg\",[Jo]],[\"Not\",[Qo]],[\"Pad\",[fu]],[\"Pow\",[gs]],[\"Range\",[Ru]],[\"Reciprocal\",[es]],[\"ReduceMin\",[wo]],[\"ReduceMean\",[fo]],[\"ReduceMax\",[bo]],[\"ReduceSum\",[$o]],[\"ReduceProd\",[vo]],[\"ReduceL1\",[ho]],[\"ReduceL2\",[go]],[\"ReduceLogSum\",[xo]],[\"ReduceLogSumExp\",[yo]],[\"ReduceSumSquare\",[_o]],[\"Relu\",[ts]],[\"Resize\",[zu,Mu]],[\"Sigmoid\",[rs]],[\"Sin\",[ns]],[\"Sinh\",[as]],[\"Slice\",[Lu,Gu]],[\"SkipLayerNormalization\",[Nu,Wu]],[\"Split\",[Yu,Zu]],[\"Sqrt\",[is]],[\"Softmax\",[qu,ju]],[\"Sub\",[ys]],[\"Tan\",[os]],[\"Tanh\",[ss]],[\"ThresholdedRelu\",[us,gn]],[\"Tile\",[Ju]],[\"Transpose\",[eo,to]],[\"Where\",[tl]]])});var Cn,il=F(()=>{\"use strict\";st();Pt();ve();Cn=class{constructor(t){this.backend=t;this.repo=new Map,this.attributesBound=!1}getArtifact(t){return this.repo.get(t)}setArtifact(t,r){this.repo.set(t,r)}run(t,r,a,n,o){at(t.programInfo.name);let u=this.backend.device,l=this.backend.getComputePassEncoder();this.backend.writeTimestamp(this.backend.pendingDispatchNumber*2),l.setPipeline(t.computePipeline);let i=[];for(let m of r)i.push({binding:i.length,resource:{buffer:m.buffer}});for(let m of a)i.push({binding:i.length,resource:{buffer:m.buffer}});o&&i.push({binding:i.length,resource:o});let c=u.createBindGroup({layout:t.computePipeline.getBindGroupLayout(0),entries:i,label:t.programInfo.name});l.setBindGroup(0,c),l.dispatchWorkgroups(...n),this.backend.writeTimestamp(this.backend.pendingDispatchNumber*2+1),this.backend.pendingDispatchNumber++,(this.backend.pendingDispatchNumber>=this.backend.maxDispatchNumber||this.backend.queryType===\"at-passes\")&&this.backend.endComputePass(),this.backend.pendingDispatchNumber>=this.backend.maxDispatchNumber&&this.backend.flush(),it(t.programInfo.name)}dispose(){}build(t,r){at(t.name);let a=this.backend.device,n=[];a.features.has(\"shader-f16\")&&n.push(\"enable f16;\");let o=Qi(r),u=t.getShaderSource(o),l=`${n.join(`\n`)}\n${o.additionalImplementations}\n${u}`,i=a.createShaderModule({code:l,label:t.name});De(\"verbose\",()=>`[WebGPU] ${t.name} shader code: ${l}`);let c=a.createComputePipeline({compute:{module:i,entryPoint:\"main\"},layout:\"auto\",label:t.name});return it(t.name),{programInfo:t,computePipeline:c}}normalizeDispatchGroupSize(t){let r=typeof t==\"number\"?t:t.x,a=typeof t==\"number\"?1:t.y||1,n=typeof t==\"number\"?1:t.z||1,o=this.backend.device.limits.maxComputeWorkgroupsPerDimension;if(r<=o&&a<=o&&n<=o)return[r,a,n];let u=r*a*n,l=Math.ceil(Math.sqrt(u));if(l>o){if(l=Math.ceil(Math.cbrt(u)),l>o)throw new Error(\"Total dispatch size exceeds WebGPU maximum.\");return[l,l,l]}else return[l,l,1]}}});var Up,Np,An,ol=F(()=>{\"use strict\";st();Ue();Pt();ji();Xi();al();il();Up=(e,t)=>{if(t.length!==e.length)throw new Error(`inputDependencies length ${t.length} is not equal to inputTensors length ${e.length}.`);let r=[];for(let a=0;a{let a=e.name;return e.shaderCache?.hint&&(a+=\"[\"+e.shaderCache.hint+\"]\"),a+=\":\"+r+`:${Up(t,e.shaderCache?.inputDependencies??new Array(t.length).fill(\"dims\"))}`,a},An=class{constructor(){this.currentKernelId=null;this.commandEncoder=null;this.computePassEncoder=null;this.maxDispatchNumber=16;this.pendingDispatchNumber=0;this.pendingKernels=[];this.pendingQueries=new Map;this.sessionExternalDataMapping=new Map}get currentKernelCustomData(){if(this.currentKernelId===null)throw new Error(\"currentKernelCustomData(): currentKernelId is null. (should not happen)\");let t=this.kernelCustomData.get(this.currentKernelId);return t||(t={},this.kernelCustomData.set(this.currentKernelId,t)),t}async initialize(t,r){this.env=t;let a=[],n={requiredLimits:{maxComputeWorkgroupStorageSize:r.limits.maxComputeWorkgroupStorageSize,maxComputeWorkgroupsPerDimension:r.limits.maxComputeWorkgroupsPerDimension,maxStorageBufferBindingSize:r.limits.maxStorageBufferBindingSize,maxBufferSize:r.limits.maxBufferSize,maxComputeInvocationsPerWorkgroup:r.limits.maxComputeInvocationsPerWorkgroup,maxComputeWorkgroupSizeX:r.limits.maxComputeWorkgroupSizeX,maxComputeWorkgroupSizeY:r.limits.maxComputeWorkgroupSizeY,maxComputeWorkgroupSizeZ:r.limits.maxComputeWorkgroupSizeZ},requiredFeatures:a};r.features.has(\"chromium-experimental-timestamp-query-inside-passes\")?a.push(\"chromium-experimental-timestamp-query-inside-passes\"):r.features.has(\"timestamp-query\")&&a.push(\"timestamp-query\"),r.features.has(\"shader-f16\")&&a.push(\"shader-f16\"),this.device=await r.requestDevice(n),this.gpuDataManager=Zi(this),this.programManager=new Cn(this),this.kernels=new Map,this.kernelPersistentData=new Map,this.kernelCustomData=new Map,Fi(t.logLevel,!!t.debug),this.device.onuncapturederror=o=>{o.error instanceof GPUValidationError&&console.error(`An uncaught WebGPU validation error was raised: ${o.error.message}`)},Object.defineProperty(this.env.webgpu,\"device\",{value:this.device}),this.setQueryType()}dispose(){typeof this.querySet<\"u\"&&this.querySet.destroy(),this.gpuDataManager.dispose()}getCommandEncoder(){return this.commandEncoder||(this.commandEncoder=this.device.createCommandEncoder(),this.setQueryType(),this.queryType!==\"none\"&&typeof this.querySet>\"u\"&&(this.querySet=this.device.createQuerySet({type:\"timestamp\",count:this.maxDispatchNumber*2}),this.queryResolveBuffer=this.device.createBuffer({size:this.maxDispatchNumber*2*8,usage:GPUBufferUsage.COPY_SRC|GPUBufferUsage.QUERY_RESOLVE}))),this.commandEncoder}getComputePassEncoder(){if(!this.computePassEncoder){let t={};this.queryType===\"at-passes\"&&(t.timestampWrites={querySet:this.querySet,beginningOfPassWriteIndex:this.pendingDispatchNumber*2,endOfPassWriteIndex:this.pendingDispatchNumber*2+1}),this.computePassEncoder=this.getCommandEncoder().beginComputePass(t)}return this.computePassEncoder}endComputePass(){this.computePassEncoder&&(this.computePassEncoder.end(),this.computePassEncoder=null)}flush(){if(!this.commandEncoder)return;at(),this.endComputePass();let t;this.queryType!==\"none\"&&(this.commandEncoder.resolveQuerySet(this.querySet,0,this.pendingDispatchNumber*2,this.queryResolveBuffer,0),t=this.device.createBuffer({size:this.pendingDispatchNumber*2*8,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST}),this.pendingQueries.set(t,this.pendingKernels),this.pendingKernels=[],this.commandEncoder.copyBufferToBuffer(this.queryResolveBuffer,0,t,0,this.pendingDispatchNumber*2*8)),this.device.queue.submit([this.commandEncoder.finish()]),this.gpuDataManager.refreshPendingBuffers(),this.commandEncoder=null,this.pendingDispatchNumber=0,this.queryType!==\"none\"&&t.mapAsync(GPUMapMode.READ).then(()=>{let r=new BigUint64Array(t.getMappedRange()),a=this.pendingQueries.get(t);for(let n=0;n\"u\"&&(this.queryTimeBase=b);let _=Number(b-this.queryTimeBase),I=Number(w-this.queryTimeBase);if(!Number.isSafeInteger(_)||!Number.isSafeInteger(I))throw new RangeError(\"incorrect timestamp range\");if(this.env.webgpu.profiling?.ondata)this.env.webgpu.profiling.ondata({version:1,inputsMetadata:f.map($=>({dims:$.dims,dataType:tt($.dataType)})),outputsMetadata:h.map($=>({dims:$.dims,dataType:tt($.dataType)})),kernelId:u,kernelType:i,kernelName:c,programName:m,startTime:_,endTime:I});else{let $=\"\";f.forEach((T,A)=>{$+=`input[${A}]: [${T.dims}] | ${tt(T.dataType)}, `});let x=\"\";h.forEach((T,A)=>{x+=`output[${A}]: [${T.dims}] | ${tt(T.dataType)}, `}),console.log(`[profiling] kernel \"${u}|${i}|${c}|${m}\" ${$}${x}execution time: ${I-_} ns`)}Jr(\"GPU\",`${m}::${b}::${w}`)}t.unmap(),this.pendingQueries.delete(t)}),it()}run(t,r,a,n,o){at(t.name);let u=[];for(let x=0;xT):a;if(m.length!==l.length)throw new Error(`Output size ${m.length} must be equal to ${l.length}.`);let f=[],h=[];for(let x=0;x=l.length)throw new Error(`Invalid output index: ${m[x]}`);if(m[x]===-3)continue;let T=m[x]===-1,A=m[x]===-2,z=T||A?o(l[x].dataType,l[x].dims):n(m[x],l[x].dataType,l[x].dims),R=this.gpuDataManager.get(z.data);if(!R)throw new Error(`no GPU data for output: ${z.data}`);if(T&&this.temporaryData.push(R),A){let N=this.kernelPersistentData.get(this.currentKernelId);N||(N=[],this.kernelPersistentData.set(this.currentKernelId,N)),N.push(R)}f.push(z),h.push(R)}let b;if(c){let x=0,T=[];c.forEach(N=>{let E=typeof N.data==\"number\"?[N.data]:N.data;if(E.length===0)return;let W=E.length<=2?E.length*4:16;x=Math.ceil(x/W)*W,T.push(x),x+=E.length>4?Math.ceil(E.length/4)*16:E.length*4});let A=16;x=Math.ceil(x/A)*A;let z=new ArrayBuffer(x);c.forEach((N,E)=>{let W=T[E],te=typeof N.data==\"number\"?[N.data]:N.data;N.type===\"int32\"?new Int32Array(z,W,te.length).set(te):N.type===\"uint32\"?new Uint32Array(z,W,te.length).set(te):new Float32Array(z,W,te.length).set(te)});let R=this.gpuDataManager.create(x,GPUBufferUsage.COPY_DST|GPUBufferUsage.UNIFORM);this.device.queue.writeBuffer(R.buffer,0,z,0,x),this.gpuDataManager.release(R.id),b={offset:0,size:x,buffer:R.buffer}}let w=this.programManager.normalizeDispatchGroupSize(i),_=w[1]===1&&w[2]===1,I=Np(t,r,_),$=this.programManager.getArtifact(I);if($||($=this.programManager.build(t,w),this.programManager.setArtifact(I,$),De(\"info\",()=>`[artifact] key: ${I}, programName: ${t.name}`)),De(\"info\",()=>`[ProgramManager] run \"${t.name}\" (key=${I}) with ${w[0]}x${w[1]}x${w[2]}`),this.queryType!==\"none\"){let x={kernelId:this.currentKernelId,programName:$.programInfo.name,inputTensorViews:r,outputTensorViews:f};this.pendingKernels.push(x)}return this.programManager.run($,u,h,w,b),it(t.name),f}upload(t,r){this.gpuDataManager.upload(t,r)}memcpy(t,r){this.gpuDataManager.memcpy(t,r)}async download(t,r){await this.gpuDataManager.download(t,r)}alloc(t){return this.gpuDataManager.create(t).id}free(t){return this.gpuDataManager.release(t)}createKernel(t,r,a,n){let o=nl.get(t);if(!o)throw new Error(`kernel not implemented: ${t}`);let u={kernelType:t,kernelName:n,kernelEntry:o[0],attributes:[o[1],a]};this.kernels.set(r,u)}releaseKernel(t){let r=this.kernelPersistentData.get(t);if(r){for(let a of r)this.gpuDataManager.release(a.id);this.kernelPersistentData.delete(t)}this.kernelCustomData.delete(t),this.kernels.delete(t)}computeKernel(t,r,a){let n=this.kernels.get(t);if(!n)throw new Error(`kernel not created: ${t}`);let o=n.kernelType,u=n.kernelName,l=n.kernelEntry,i=n.attributes;if(this.currentKernelId!==null)throw new Error(`kernel \"[${o}] ${u}\" is not allowed to be called recursively`);this.currentKernelId=t,i[0]&&(i[1]=i[0](i[1]),i[0]=void 0),De(\"info\",()=>`[WebGPU] Start to run kernel \"[${o}] ${u}\"...`);let c=this.env.debug;this.temporaryData=[];try{return c&&this.device.pushErrorScope(\"validation\"),l(r,i[1]),0}catch(m){return a.push(Promise.resolve(`[WebGPU] Kernel \"[${o}] ${u}\" failed. ${m}`)),1}finally{c&&a.push(this.device.popErrorScope().then(m=>m?`GPU validation error for kernel \"[${o}] ${u}\": ${m.message}`:null));for(let m of this.temporaryData)this.gpuDataManager.release(m.id);this.temporaryData=[],this.currentKernelId=null}}registerBuffer(t,r,a,n){let o=this.sessionExternalDataMapping.get(t);o||(o=new Map,this.sessionExternalDataMapping.set(t,o));let u=o.get(r),l=this.gpuDataManager.registerExternalBuffer(a,n,u?.[1]);return o.set(r,[l,a]),l}unregisterBuffers(t){let r=this.sessionExternalDataMapping.get(t);r&&(r.forEach(a=>this.gpuDataManager.unregisterExternalBuffer(a[1])),this.sessionExternalDataMapping.delete(t))}getBuffer(t){let r=this.gpuDataManager.get(t);if(!r)throw new Error(`no GPU data for buffer: ${t}`);return r.buffer}createDownloader(t,r,a){return async()=>{let n=await na(this,t,r);return qi(n.buffer,a)}}writeTimestamp(t){this.queryType===\"inside-passes\"&&this.computePassEncoder.writeTimestamp(this.querySet,t)}setQueryType(){this.queryType=\"none\",(this.env.webgpu.profiling?.mode===\"default\"||this.env.wasm.trace)&&(this.device.features.has(\"chromium-experimental-timestamp-query-inside-passes\")?this.queryType=\"inside-passes\":this.device.features.has(\"timestamp-query\")&&(this.queryType=\"at-passes\"))}}});var sl={};Xt(sl,{init:()=>Wp});var Er,Ca,Wp,ul=F(()=>{\"use strict\";Ue();ol();Pt();$e();Er=class e{constructor(t,r,a,n){this.module=t;this.dataType=r;this.data=a;this.dims=n}getFloat32Array(){if(this.dataType!==1)throw new Error(\"Invalid data type\");let t=U.size(this.dims);return t===0?new Float32Array:new Float32Array(this.module.HEAP8.buffer,this.data,t)}getBigInt64Array(){if(this.dataType!==7)throw new Error(\"Invalid data type\");let t=U.size(this.dims);return t===0?new BigInt64Array:new BigInt64Array(this.module.HEAP8.buffer,this.data,t)}getInt32Array(){if(this.dataType!==6)throw new Error(\"Invalid data type\");let t=U.size(this.dims);return t===0?new Int32Array:new Int32Array(this.module.HEAP8.buffer,this.data,t)}reshape(t){if(U.size(t)!==U.size(this.dims))throw new Error(\"Invalid new shape\");return new e(this.module,this.dataType,this.data,t)}},Ca=class{constructor(t,r,a){this.module=t;this.backend=r;this.customDataOffset=0;this.customDataSize=0;let n=t.HEAPU32,o=a>>>2;this.opKernelContext=n[o++];let u=n[o++];this.outputCount=n[o++],this.customDataOffset=n[o++],this.customDataSize=n[o++];let l=[];for(let i=0;itypeof l==\"number\"?this.inputs[l]:l)??this.inputs,n=r?.outputs??[],o=(l,i,c)=>new Er(this.module,i,this.output(l,c),c),u=(l,i)=>{let c=_r(l);if(!c)throw new Error(`Unsupported data type: ${l}`);let m=c*U.size(i);return new Er(this.module,l,this.backend.gpuDataManager.create(m).id,i)};return this.backend.run(t,a,n,o,u)}output(t,r){let a=this.module.stackSave();try{let n=this.module.stackAlloc((1+r.length)*4),o=n>>2;this.module.HEAPU32[o++]=r.length;for(let u=0;u{let a=e.jsepInit;if(!a)throw new Error(\"Failed to initialize JSEP. The WebAssembly module is not built with JSEP support.\");let n=new An;await n.initialize(t,r),a(n,o=>n.alloc(o),o=>n.free(o),(o,u,l,i=!1)=>{if(i)De(\"verbose\",()=>`[WebGPU] jsepCopyGpuToGpu: src=${o}, dst=${u}, size=${l}`),n.memcpy(o,u);else{De(\"verbose\",()=>`[WebGPU] jsepCopyCpuToGpu: dataOffset=${o}, gpuDataId=${u}, size=${l}`);let c=e.HEAPU8.subarray(o>>>0,(o>>>0)+l);n.upload(u,c)}},async(o,u,l)=>{De(\"verbose\",()=>`[WebGPU] jsepCopyGpuToCpu: gpuDataId=${o}, dataOffset=${u}, size=${l}`),await n.download(o,()=>e.HEAPU8.subarray(u>>>0,(u>>>0)+l))},(o,u,l)=>n.createKernel(o,u,l,e.UTF8ToString(e._JsepGetNodeName(u))),o=>n.releaseKernel(o),(o,u,l,i)=>{De(\"verbose\",()=>`[WebGPU] jsepRun: sessionHandle=${l}, kernel=${o}, contextDataOffset=${u}`);let c=new Ca(e,n,u);return n.computeKernel(o,c,i)})}});var Vp,dl,cl,Tr,Hp,Aa,pl,ml,ll,fl,hl,gl,yl=F(()=>{\"use strict\";Wi();Hi();Ue();Jt();nn();ta();Vp=(e,t)=>{Ve()._OrtInit(e,t)!==0&&Re(\"Can't initialize onnxruntime.\")},dl=async e=>{Vp(e.wasm.numThreads,xr(e.logLevel))},cl=async(e,t)=>{if(t===\"webgpu\"){if(typeof navigator>\"u\"||!navigator.gpu)throw new Error(\"WebGPU is not supported in current environment\");let r=await navigator.gpu.requestAdapter();if(!r)throw new Error('Failed to get GPU adapter. You may need to enable flag \"--enable-unsafe-webgpu\" if you are using Chrome.');if(!e.wasm.simd)throw new Error(\"Not supported for WebGPU=ON and SIMD=OFF. Please set `env.wasm.simd` to true when using `webgpu` EP\");let a=(ul(),Ut(sl)).init;await a(Ve(),e,r)}},Tr=new Map,Hp=e=>{let t=Ve(),r=t.stackSave();try{let a=t.stackAlloc(8);return t._OrtGetInputOutputCount(e,a,a+4)!==0&&Re(\"Can't get session input/output count.\"),[t.HEAP32[a/4],t.HEAP32[a/4+1]]}finally{t.stackRestore(r)}},Aa=e=>{let t=Ve(),r=t._malloc(e.byteLength);if(r===0)throw new Error(`Can't create a session. failed to allocate a buffer of size ${e.byteLength}.`);return t.HEAPU8.set(e,r),[r,e.byteLength]},pl=async(e,t)=>{let r,a,n=Ve();Array.isArray(e)?[r,a]=e:e.buffer===n.HEAPU8.buffer?[r,a]=[e.byteOffset,e.byteLength]:[r,a]=Aa(e);let o=0,u=0,l=0,i=[],c=[],m=[];try{if([u,i]=Vi(t),t?.externalData&&n.mountExternalData){let $=[];for(let x of t.externalData){let T=typeof x==\"string\"?x:x.path;$.push(Sr(typeof x==\"string\"?x:x.data).then(A=>{n.mountExternalData(T,A)}))}await Promise.all($)}o=n._OrtCreateSession(r,a,u),o===0&&Re(\"Can't create a session.\");let[f,h]=Hp(o),b=[],w=[],_=[];for(let $=0;$$===\"gpu-buffer\")&&(l=n._OrtCreateBinding(o),l===0&&Re(\"Can't create IO binding.\"),I={handle:l,outputPreferredLocations:_,outputPreferredLocationsEncoded:_.map($=>ea($))}),Tr.set(o,[o,c,m,I]),[o,b,w]}catch(f){throw c.forEach(h=>n._OrtFree(h)),m.forEach(h=>n._OrtFree(h)),l!==0&&n._OrtReleaseBinding(l),o!==0&&n._OrtReleaseSession(o),f}finally{n._free(r),u!==0&&n._OrtReleaseSessionOptions(u),i.forEach(f=>n._free(f)),n.unmountExternalData?.()}},ml=e=>{let t=Ve(),r=Tr.get(e);if(!r)throw new Error(`cannot release session. invalid session id: ${e}`);let[a,n,o,u]=r;u&&t._OrtReleaseBinding(u.handle),t.jsepUnregisterBuffers?.(e),n.forEach(l=>t._OrtFree(l)),o.forEach(l=>t._OrtFree(l)),t._OrtReleaseSession(a),Tr.delete(e)},ll=(e,t,r,a,n)=>{if(!e){t.push(0);return}let o=Ve(),u=e[0],l=e[1],i=e[3],c,m;if(u===\"string\"&&i===\"gpu-buffer\")throw new Error(\"String tensor is not supported on GPU.\");if(i===\"gpu-buffer\"){let b=e[2].gpuBuffer,w=_r(Jn(u));m=l.reduce((_,I)=>_*I,1)*w,c=o.jsepRegisterBuffer(a,n,b,m)}else{let b=e[2];if(Array.isArray(b)){m=4*b.length,c=o._malloc(m),r.push(c);let w=c/4;for(let _=0;_o.HEAP32[b++]=_);let w=o._OrtCreateTensor(Jn(u),c,m,h,l.length,ea(i));w===0&&Re(`Can't create tensor for input/output. session=${a}, index=${n}.`),t.push(w)}finally{o.stackRestore(f)}},fl=async(e,t,r,a,n,o)=>{let u=Ve(),l=Tr.get(e);if(!l)throw new Error(`cannot run inference. invalid session id: ${e}`);let[i,c,m,f]=l,h=t.length,b=a.length,w=0,_=[],I=[],$=[],x=[],T=u.stackSave(),A=u.stackAlloc(h*4),z=u.stackAlloc(h*4),R=u.stackAlloc(b*4),N=u.stackAlloc(b*4);try{[w,_]=Ni(o);for(let Z=0;ZWe*Me,1);he=tt(Ge);let Ne=f?.outputPreferredLocations[a[Z]];if(he===\"string\"){if(Ne===\"gpu-buffer\")throw new Error(\"String tensor is not supported on GPU.\");let We=[],Me=ye/4;for(let Ct=0;Ct0){let We=u.jsepGetBuffer(ye),Me=_r(Ge);if(Me===void 0||!on(he))throw new Error(`Unsupported data type: ${he}`);Ae=!0,X.push([he,be,{gpuBuffer:We,download:u.jsepCreateDownloader(We,nt*Me,he),dispose:()=>{u._OrtReleaseTensor(Oe)}},\"gpu-buffer\"])}else{let We=an(he),Me=new We(nt);new Uint8Array(Me.buffer,Me.byteOffset,Me.byteLength).set(u.HEAPU8.subarray(ye,ye+Me.byteLength)),X.push([he,be,Me,\"cpu\"])}}finally{u.stackRestore(Pe),he===\"string\"&&ye&&u._free(ye),Ae||u._OrtReleaseTensor(Oe)}}return f&&u._OrtClearBoundOutputs(f.handle),X}finally{u.stackRestore(T),I.forEach(E=>u._OrtReleaseTensor(E)),$.forEach(E=>u._OrtReleaseTensor(E)),x.forEach(E=>u._free(E)),w!==0&&u._OrtReleaseRunOptions(w),_.forEach(E=>u._free(E))}},hl=e=>{let t=Ve(),r=Tr.get(e);if(!r)throw new Error(\"invalid session id\");let a=r[0],n=t._OrtEndProfiling(a);n===0&&Re(\"Can't get an profile file name.\"),t._OrtFree(n)},gl=e=>{let t=[];for(let r of e){let a=r[2];!Array.isArray(a)&&\"buffer\"in a&&t.push(a.buffer)}return t}});var bl=Zt((ww,Gp)=>{Gp.exports='/*!\\n * ONNX Runtime Web v1.17.1\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\n * Licensed under the MIT License.\\n */\\n\"use strict\";(()=>{var hn=Object.defineProperty;var Lu=Object.getOwnPropertyDescriptor;var Fu=Object.getOwnPropertyNames;var ju=Object.prototype.hasOwnProperty;var j=(e,t)=>()=>(e&&(t=e(e=0)),t);var dr=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Br=(e,t)=>{for(var r in t)hn(e,r,{get:t[r],enumerable:!0})},qu=(e,t,r,o)=>{if(t&&typeof t==\"object\"||typeof t==\"function\")for(let n of Fu(t))!ju.call(e,n)&&n!==r&&hn(e,n,{get:()=>t[n],enumerable:!(o=Lu(t,n))||o.enumerable});return e};var Ht=e=>qu(hn({},\"__esModule\",{value:!0}),e);var gn={};Br(gn,{createReadStream:()=>xo,readFile:()=>Ku,readFileSync:()=>Yu});var Ku,Yu,xo,yn=j(()=>{Ku=void 0,Yu=void 0,xo=void 0});var bn={};Br(bn,{join:()=>Zu});var Zu,wn=j(()=>{Zu=void 0});var Io=dr((Co,vn)=>{\"use strict\";var _o=(()=>{var e=typeof document<\"u\"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<\"u\"&&(e=e||__filename),function(t={}){var r=t,o,n;r.ready=new Promise((d,m)=>{o=d,n=m}),r.mountExternalData=(d,m)=>{(r.Fa||(r.Fa=new Map)).set(d,m)},r.unmountExternalData=()=>{delete r.Fa},r.jsepInit=(d,m,v,C,B,H,q,le)=>{r.ab=d,r.Qa=m,r.Sa=v,r.La=C,r.Ra=B,r.sa=H,r.Ta=q,r.Ua=le,m=(J,re,se)=>(...we)=>{let _e=tt,P=re?.();we=J(...we);let ue=re?.();return P!==ue&&(J=ue,se(P),re=se=null),tt!=_e?xr():we},v=J=>async(...re)=>{try{if(r.Ea)throw Error(\"Session already started\");let se=r.Ea={Va:re[0],errors:[]},we=await J(...re);if(r.Ea!==se)throw Error(\"Session mismatch\");d.flush();let _e=se.errors;if(0<_e.length){let P=await Promise.all(_e);if(P=P.filter(ue=>ue),0r._OrtRun,J=>r._OrtRun=J)),r._OrtRunWithBinding=v(m(r._OrtRunWithBinding,()=>r._OrtRunWithBinding,J=>r._OrtRunWithBinding=J)),r._OrtBindInput=m(r._OrtBindInput,()=>r._OrtBindInput,J=>r._OrtBindInput=J),r.jsepRegisterBuffer=(J,re,se,we)=>d.registerBuffer(J,re,se,we),r.jsepUnregisterBuffers=J=>{d.unregisterBuffers(J)},r.jsepGetBuffer=J=>d.getBuffer(J),r.jsepCreateDownloader=(J,re,se)=>d.createDownloader(J,re,se)};var s=Object.assign({},r),u=\"./this.program\",l=(d,m)=>{throw m},a=typeof window==\"object\",p=typeof importScripts==\"function\",h=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\",g=\"\",b,w,y;if(h){var _=(yn(),Ht(gn)),I=(wn(),Ht(bn));g=p?I.dirname(g)+\"/\":__dirname+\"/\",b=(d,m)=>(d=We(d)?new URL(d):I.normalize(d),_.readFileSync(d,m?void 0:\"utf8\")),y=d=>(d=b(d,!0),d.buffer||(d=new Uint8Array(d)),d),w=(d,m,v,C=!0)=>{d=We(d)?new URL(d):I.normalize(d),_.readFile(d,C?void 0:\"utf8\",(B,H)=>{B?v(B):m(C?H.buffer:H)})},!r.thisProgram&&1{throw process.exitCode=d,m},r.inspect=()=>\"[Emscripten Module object]\"}else(a||p)&&(p?g=self.location.href:typeof document<\"u\"&&document.currentScript&&(g=document.currentScript.src),e&&(g=e),g.indexOf(\"blob:\")!==0?g=g.substr(0,g.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1):g=\"\",b=d=>{var m=new XMLHttpRequest;return m.open(\"GET\",d,!1),m.send(null),m.responseText},p&&(y=d=>{var m=new XMLHttpRequest;return m.open(\"GET\",d,!1),m.responseType=\"arraybuffer\",m.send(null),new Uint8Array(m.response)}),w=(d,m,v)=>{var C=new XMLHttpRequest;C.open(\"GET\",d,!0),C.responseType=\"arraybuffer\",C.onload=()=>{C.status==200||C.status==0&&C.response?m(C.response):v()},C.onerror=v,C.send(null)});var $=console.log.bind(console),x=console.error.bind(console);Object.assign(r,s),s=null,typeof WebAssembly!=\"object\"&&he(\"no native wasm support detected\");var E,A=!1,z,R,V,T,N,te,Y;function K(){var d=E.buffer;r.HEAP8=R=new Int8Array(d),r.HEAP16=new Int16Array(d),r.HEAPU8=V=new Uint8Array(d),r.HEAPU16=new Uint16Array(d),r.HEAP32=T=new Int32Array(d),r.HEAPU32=N=new Uint32Array(d),r.HEAPF32=te=new Float32Array(d),r.HEAPF64=Y=new Float64Array(d)}var Q=[],Z=[],Ee=[],Pe=0,fe=null,Ie=null;function he(d){throw d=\"Aborted(\"+d+\")\",x(d),A=!0,z=1,d=new WebAssembly.RuntimeError(d+\". Build with -sASSERTIONS for more info.\"),n(d),d}var ye=d=>d.startsWith(\"data:application/octet-stream;base64,\"),We=d=>d.startsWith(\"file://\"),De;if(De=\"ort-wasm-simd.wasm\",!ye(De)){var Ge=De;De=r.locateFile?r.locateFile(Ge,g):g+Ge}function G(d){if(y)return y(d);throw\"both async and sync fetching of the wasm failed\"}function ee(d){if(a||p){if(typeof fetch==\"function\"&&!We(d))return fetch(d,{credentials:\"same-origin\"}).then(m=>{if(!m.ok)throw\"failed to load wasm binary file at \\'\"+d+\"\\'\";return m.arrayBuffer()}).catch(()=>G(d));if(w)return new Promise((m,v)=>{w(d,C=>m(new Uint8Array(C)),v)})}return Promise.resolve().then(()=>G(d))}function be(d,m,v){return ee(d).then(C=>WebAssembly.instantiate(C,m)).then(C=>C).then(v,C=>{x(`failed to asynchronously prepare wasm: ${C}`),he(C)})}function et(d,m){var v=De;return typeof WebAssembly.instantiateStreaming!=\"function\"||ye(v)||We(v)||h||typeof fetch!=\"function\"?be(v,d,m):fetch(v,{credentials:\"same-origin\"}).then(C=>WebAssembly.instantiateStreaming(C,d).then(m,function(B){return x(`wasm streaming compile failed: ${B}`),x(\"falling back to ArrayBuffer instantiation\"),be(v,d,m)}))}var ze,Ue={931056:(d,m,v,C)=>{if(typeof r>\"u\"||!r.Fa)return 1;if(d=qe(d>>>0),d.startsWith(\"./\")&&(d=d.substring(2)),d=r.Fa.get(d),!d)return 2;if(m>>>=0,v>>>=0,m+v>d.byteLength)return 3;try{return V.set(d.subarray(m,m+v),C>>>0>>>0),0}catch{return 4}},931557:d=>r.Qa(d),931590:d=>r.Sa(d),931622:(d,m,v)=>{r.La(d,m,v,!0)},931661:(d,m,v)=>{r.La(d,m,v)},931694:d=>{r.sa(\"Abs\",d,void 0)},931745:d=>{r.sa(\"Neg\",d,void 0)},931796:d=>{r.sa(\"Floor\",d,void 0)},931849:d=>{r.sa(\"Ceil\",d,void 0)},931901:d=>{r.sa(\"Reciprocal\",d,void 0)},931959:d=>{r.sa(\"Sqrt\",d,void 0)},932011:d=>{r.sa(\"Exp\",d,void 0)},932062:d=>{r.sa(\"Erf\",d,void 0)},932113:d=>{r.sa(\"Sigmoid\",d,void 0)},932168:d=>{r.sa(\"Log\",d,void 0)},932219:d=>{r.sa(\"Sin\",d,void 0)},932270:d=>{r.sa(\"Cos\",d,void 0)},932321:d=>{r.sa(\"Tan\",d,void 0)},932372:d=>{r.sa(\"Asin\",d,void 0)},932424:d=>{r.sa(\"Acos\",d,void 0)},932476:d=>{r.sa(\"Atan\",d,void 0)},932528:d=>{r.sa(\"Sinh\",d,void 0)},932580:d=>{r.sa(\"Cosh\",d,void 0)},932632:d=>{r.sa(\"Asinh\",d,void 0)},932685:d=>{r.sa(\"Acosh\",d,void 0)},932738:d=>{r.sa(\"Atanh\",d,void 0)},932791:d=>{r.sa(\"Tanh\",d,void 0)},932843:d=>{r.sa(\"Not\",d,void 0)},932894:(d,m,v)=>{r.sa(\"Clip\",d,{min:m,max:v})},932963:d=>{r.sa(\"Clip\",d,void 0)},933015:(d,m)=>{r.sa(\"Elu\",d,{alpha:m})},933073:d=>{r.sa(\"Relu\",d,void 0)},933125:(d,m)=>{r.sa(\"LeakyRelu\",d,{alpha:m})},933189:(d,m)=>{r.sa(\"ThresholdedRelu\",d,{alpha:m})},933259:(d,m)=>{r.sa(\"Cast\",d,{to:m})},933317:d=>{r.sa(\"Add\",d,void 0)},933368:d=>{r.sa(\"Sub\",d,void 0)},933419:d=>{r.sa(\"Mul\",d,void 0)},933470:d=>{r.sa(\"Div\",d,void 0)},933521:d=>{r.sa(\"Pow\",d,void 0)},933572:d=>{r.sa(\"Equal\",d,void 0)},933625:d=>{r.sa(\"Greater\",d,void 0)},933680:d=>{r.sa(\"GreaterOrEqual\",d,void 0)},933742:d=>{r.sa(\"Less\",d,void 0)},933794:d=>{r.sa(\"LessOrEqual\",d,void 0)},933853:(d,m,v,C,B)=>{r.sa(\"ReduceMean\",d,{keepDims:!!m,noopWithEmptyAxes:!!v,axes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},934012:(d,m,v,C,B)=>{r.sa(\"ReduceMax\",d,{keepDims:!!m,noopWithEmptyAxes:!!v,axes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},934170:(d,m,v,C,B)=>{r.sa(\"ReduceMin\",d,{keepDims:!!m,noopWithEmptyAxes:!!v,axes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},934328:(d,m,v,C,B)=>{r.sa(\"ReduceProd\",d,{keepDims:!!m,noopWithEmptyAxes:!!v,axes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},934487:(d,m,v,C,B)=>{r.sa(\"ReduceSum\",d,{keepDims:!!m,noopWithEmptyAxes:!!v,axes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},934645:(d,m,v,C,B)=>{r.sa(\"ReduceL1\",d,{keepDims:!!m,noopWithEmptyAxes:!!v,axes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},934802:(d,m,v,C,B)=>{r.sa(\"ReduceL2\",d,{keepDims:!!m,noopWithEmptyAxes:!!v,axes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},934959:(d,m,v,C,B)=>{r.sa(\"ReduceLogSum\",d,{keepDims:!!m,noopWithEmptyAxes:!!v,axes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},935120:(d,m,v,C,B)=>{r.sa(\"ReduceSumSquare\",d,{keepDims:!!m,noopWithEmptyAxes:!!v,axes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},935284:(d,m,v,C,B)=>{r.sa(\"ReduceLogSumExp\",d,{keepDims:!!m,noopWithEmptyAxes:!!v,axes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},935448:d=>{r.sa(\"Where\",d,void 0)},935501:(d,m,v)=>{r.sa(\"Transpose\",d,{perm:m?Array.from(T.subarray(m>>>0,v>>>0)):[]})},935609:(d,m,v,C,B,H,q,le,J,re,se,we,_e,P,ue)=>{r.sa(\"ConvTranspose\",d,{format:J?\"NHWC\":\"NCHW\",autoPad:m,dilations:[v],group:C,kernel_shape:[B],pads:[H,q],strides:[le],wIsConst:()=>!!R[re>>>0],outputPadding:se?Array.from(T.subarray(se>>>0,we>>>0)):[],outputShape:_e?Array.from(T.subarray(_e>>>0,P>>>0)):[],activation:qe(ue)})},936011:(d,m,v,C,B,H,q,le,J,re,se,we,_e,P)=>{r.sa(\"ConvTranspose\",d,{format:le?\"NHWC\":\"NCHW\",autoPad:m,dilations:Array.from(T.subarray(v>>>0,(v>>>0)+2>>>0)),group:C,kernelShape:Array.from(T.subarray(B>>>0,(B>>>0)+2>>>0)),pads:Array.from(T.subarray(H>>>0,(H>>>0)+4>>>0)),strides:Array.from(T.subarray(q>>>0,(q>>>0)+2>>>0)),wIsConst:()=>!!R[J>>>0],outputPadding:re?Array.from(T.subarray(re>>>0,se>>>0)):[],outputShape:we?Array.from(T.subarray(we>>>0,_e>>>0)):[],activation:qe(P)})},936576:(d,m,v,C,B,H,q,le,J,re,se,we,_e,P,ue)=>{r.sa(\"ConvTranspose\",d,{format:J?\"NHWC\":\"NCHW\",autoPad:m,dilations:[v],group:C,kernel_shape:[B],pads:[H,q],strides:[le],wIsConst:()=>!!R[re>>>0],outputPadding:se?Array.from(T.subarray(se>>>0,we>>>0)):[],outputShape:_e?Array.from(T.subarray(_e>>>0,P>>>0)):[],activation:qe(ue)})},936978:(d,m,v,C,B,H,q,le,J,re,se,we,_e,P)=>{r.sa(\"ConvTranspose\",d,{format:le?\"NHWC\":\"NCHW\",autoPad:m,dilations:Array.from(T.subarray(v>>>0,(v>>>0)+2>>>0)),group:C,kernelShape:Array.from(T.subarray(B>>>0,(B>>>0)+2>>>0)),pads:Array.from(T.subarray(H>>>0,(H>>>0)+4>>>0)),strides:Array.from(T.subarray(q>>>0,(q>>>0)+2>>>0)),wIsConst:()=>!!R[J>>>0],outputPadding:re?Array.from(T.subarray(re>>>0,se>>>0)):[],outputShape:we?Array.from(T.subarray(we>>>0,_e>>>0)):[],activation:qe(P)})},937543:(d,m)=>{r.sa(\"GlobalAveragePool\",d,{format:m?\"NHWC\":\"NCHW\"})},937634:(d,m,v,C,B,H,q,le,J,re,se,we,_e,P,ue,Se)=>{r.sa(\"AveragePool\",d,{format:Se?\"NHWC\":\"NCHW\",auto_pad:m,ceil_mode:v,count_include_pad:C,storage_order:B,dilations:[H,q],kernel_shape:[le,J],pads:[re,se,we,_e],strides:[P,ue]})},937918:(d,m)=>{r.sa(\"GlobalAveragePool\",d,{format:m?\"NHWC\":\"NCHW\"})},938009:(d,m,v,C,B,H,q,le,J,re,se,we,_e,P,ue,Se)=>{r.sa(\"AveragePool\",d,{format:Se?\"NHWC\":\"NCHW\",auto_pad:m,ceil_mode:v,count_include_pad:C,storage_order:B,dilations:[H,q],kernel_shape:[le,J],pads:[re,se,we,_e],strides:[P,ue]})},938293:(d,m)=>{r.sa(\"GlobalMaxPool\",d,{format:m?\"NHWC\":\"NCHW\"})},938380:(d,m,v,C,B,H,q,le,J,re,se,we,_e,P,ue,Se)=>{r.sa(\"MaxPool\",d,{format:Se?\"NHWC\":\"NCHW\",auto_pad:m,ceil_mode:v,count_include_pad:C,storage_order:B,dilations:[H,q],kernel_shape:[le,J],pads:[re,se,we,_e],strides:[P,ue]})},938660:(d,m)=>{r.sa(\"GlobalMaxPool\",d,{format:m?\"NHWC\":\"NCHW\"})},938747:(d,m,v,C,B,H,q,le,J,re,se,we,_e,P,ue,Se)=>{r.sa(\"MaxPool\",d,{format:Se?\"NHWC\":\"NCHW\",auto_pad:m,ceil_mode:v,count_include_pad:C,storage_order:B,dilations:[H,q],kernel_shape:[le,J],pads:[re,se,we,_e],strides:[P,ue]})},939027:(d,m,v,C,B)=>{r.sa(\"Gemm\",d,{alpha:m,beta:v,transA:C,transB:B})},939131:d=>{r.sa(\"MatMul\",d,void 0)},939185:(d,m,v,C)=>{r.sa(\"ArgMax\",d,{keepDims:!!m,selectLastIndex:!!v,axis:C})},939293:(d,m,v,C)=>{r.sa(\"ArgMin\",d,{keepDims:!!m,selectLastIndex:!!v,axis:C})},939401:(d,m)=>{r.sa(\"Softmax\",d,{axis:m})},939464:(d,m)=>{r.sa(\"Concat\",d,{axis:m})},939524:(d,m,v,C,B)=>{r.sa(\"Split\",d,{axis:m,numOutputs:v,splitSizes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},939664:d=>{r.sa(\"Expand\",d,void 0)},939718:(d,m)=>{r.sa(\"Gather\",d,{axis:Number(m)})},939789:(d,m)=>{r.sa(\"GatherElements\",d,{axis:Number(m)})},939868:(d,m,v,C,B,H,q,le,J,re,se)=>{r.sa(\"Resize\",d,{antialias:m,axes:v?Array.from(T.subarray(v>>>0,C>>>0)):[],coordinateTransformMode:qe(B),cubicCoeffA:H,excludeOutside:q,extrapolationValue:le,keepAspectRatioPolicy:qe(J),mode:qe(re),nearestMode:qe(se)})},940214:(d,m,v,C,B,H,q)=>{r.sa(\"Slice\",d,{starts:m?Array.from(T.subarray(m>>>0,v>>>0)):[],ends:C?Array.from(T.subarray(C>>>0,B>>>0)):[],axes:H?Array.from(T.subarray(H>>>0,q>>>0)):[]})},940430:d=>{r.sa(\"Tile\",d,void 0)},940482:(d,m,v)=>{r.sa(\"LayerNormalization\",d,{axis:Number(m),epsilon:Number(v)})},940589:(d,m,v)=>{r.sa(\"InstanceNormalization\",d,{epsilon:m,format:v?\"NHWC\":\"NCHW\"})},940703:(d,m,v)=>{r.sa(\"InstanceNormalization\",d,{epsilon:m,format:v?\"NHWC\":\"NCHW\"})},940817:d=>{r.sa(\"Range\",d,void 0)},940870:(d,m)=>{r.sa(\"Einsum\",d,{equation:qe(m)})},940951:(d,m,v,C,B)=>{r.sa(\"Pad\",d,{mode:m,value:v,pads:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},941078:(d,m,v,C,B,H)=>{r.sa(\"BatchNormalization\",d,{epsilon:m,momentum:v,spatial:!!B,trainingMode:!!C,format:H?\"NHWC\":\"NCHW\"})},941247:(d,m,v,C,B,H)=>{r.sa(\"BatchNormalization\",d,{epsilon:m,momentum:v,spatial:!!B,trainingMode:!!C,format:H?\"NHWC\":\"NCHW\"})},941416:(d,m,v)=>{r.sa(\"CumSum\",d,{exclusive:Number(m),reverse:Number(v)})},941513:(d,m,v,C,B,H,q,le,J)=>{r.sa(\"Attention\",d,{numHeads:m,isUnidirectional:v,maskFilterValue:C,scale:B,doRotary:H,qkvHiddenSizes:q?Array.from(T.subarray(Number(le)>>>0,Number(le)+q>>>0)):[],pastPresentShareBuffer:!!J})},941785:d=>{r.sa(\"Gelu\",d,void 0)},941837:(d,m,v,C,B,H)=>{r.sa(\"MultiHeadAttention\",d,{numHeads:m,isUnidirectional:v,maskFilterValue:C,scale:B,doRotary:H})},941996:d=>{r.sa(\"BiasAdd\",d,void 0)},942051:d=>{r.sa(\"BiasSplitGelu\",d,void 0)},942112:(d,m)=>{r.sa(\"SkipLayerNormalization\",d,{epsilon:m})},942193:(d,m,v,C,B,H,q,le,J,re,se,we,_e)=>{r.sa(\"Conv\",d,{format:J?\"NHWC\":\"NCHW\",auto_pad:m,dilations:[v],group:C,kernel_shape:[B],pads:H?Array.from(T.subarray(H>>>0,q>>>0)):[],strides:[le],w_is_const:()=>!!R[re>>>0],activation:qe(se),activation_params:we?Array.from(te.subarray(we>>>0,_e>>>0)):[]})},942563:(d,m,v,C,B,H,q,le,J,re,se,we,_e,P,ue,Se)=>{r.sa(\"Conv\",d,{format:we?\"NHWC\":\"NCHW\",auto_pad:m,dilations:[v,C],group:B,kernel_shape:[H,q],pads:le?Array.from(T.subarray(le>>>0,J>>>0)):[],strides:[re,se],w_is_const:()=>!!R[_e>>>0],activation:qe(P),activation_params:ue?Array.from(te.subarray(ue>>>0,Se>>>0)):[]})},942954:d=>{r.Ta(d)},942988:(d,m)=>r.Ua(d,m,r.Ea.Va,r.Ea.errors)};function Me(d){this.name=\"ExitStatus\",this.message=`Program terminated with exit(${d})`,this.status=d}function wt(d){this.Ja=d-24,this.Oa=function(m){N[this.Ja+4>>>2>>>0]=m},this.Na=function(m){N[this.Ja+8>>>2>>>0]=m},this.$a=function(m,v){this.Ma(),this.Oa(m),this.Na(v)},this.Ma=function(){N[this.Ja+16>>>2>>>0]=0}}var rt=0,Dt=0,At=typeof TextDecoder<\"u\"?new TextDecoder(\"utf8\"):void 0,vt=(d,m,v)=>{m>>>=0;var C=m+v;for(v=m;d[v]&&!(v>=C);)++v;if(16B?C+=String.fromCharCode(B):(B-=65536,C+=String.fromCharCode(55296|B>>10,56320|B&1023))}}else C+=String.fromCharCode(B)}return C},qe=(d,m)=>(d>>>=0)?vt(V,d,m):\"\",qt=d=>{for(var m=0,v=0;v=C?m++:2047>=C?m+=2:55296<=C&&57343>=C?(m+=4,++v):m+=3}return m},Mt=(d,m,v,C)=>{if(v>>>=0,!(0=q){var le=d.charCodeAt(++H);q=65536+((q&1023)<<10)|le&1023}if(127>=q){if(v>=C)break;m[v++>>>0]=q}else{if(2047>=q){if(v+1>=C)break;m[v++>>>0]=192|q>>6}else{if(65535>=q){if(v+2>=C)break;m[v++>>>0]=224|q>>12}else{if(v+3>=C)break;m[v++>>>0]=240|q>>18,m[v++>>>0]=128|q>>12&63}m[v++>>>0]=128|q>>6&63}m[v++>>>0]=128|q&63}}return m[v>>>0]=0,v-B},$t=d=>d%4===0&&(d%100!==0||d%400===0),yt=[0,31,60,91,121,152,182,213,244,274,305,335],zt=[0,31,59,90,120,151,181,212,243,273,304,334],Ut=d=>{var m=qt(d)+1,v=Wt(m);return v&&Mt(d,V,v,m),v},Tt=[],Kt=(d,m)=>{Tt.length=0;for(var v;v=V[d++>>>0];){var C=v!=105;C&=v!=112,m+=C&&m%8?4:0,Tt.push(v==112?N[m>>>2>>>0]:v==105?T[m>>>2>>>0]:Y[m>>>3>>>0]),m+=C?8:4}return Tt},nt={},Yt=()=>{if(!Vt){var d={USER:\"web_user\",LOGNAME:\"web_user\",PATH:\"/\",PWD:\"/\",HOME:\"/home/web_user\",LANG:(typeof navigator==\"object\"&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\",_:u||\"./this.program\"},m;for(m in nt)nt[m]===void 0?delete d[m]:d[m]=nt[m];var v=[];for(m in d)v.push(`${m}=${d[m]}`);Vt=v}return Vt},Vt,Ye=[null,[],[]],br=[31,29,31,30,31,30,31,31,30,31,30,31],Oe=[31,28,31,30,31,30,31,31,30,31,30,31];function wr(d){var m=Array(qt(d)+1);return Mt(d,m,0,m.length),m}function Nt(d,m,v,C){function B(P,ue,Se){for(P=typeof P==\"number\"?P.toString():P||\"\";P.lengthTr?-1:0st-P.getDate())ue-=st-P.getDate()+1,P.setDate(1),11>Se?P.setMonth(Se+1):(P.setMonth(0),P.setFullYear(P.getFullYear()+1));else{P.setDate(P.getDate()+ue);break}}return Se=new Date(P.getFullYear()+1,0,4),ue=le(new Date(P.getFullYear(),0,4)),Se=le(Se),0>=q(ue,P)?0>=q(Se,P)?P.getFullYear()+1:P.getFullYear():P.getFullYear()-1}d>>>=0,m>>>=0,v>>>=0,C>>>=0;var re=N[C+40>>>2>>>0];C={Ya:T[C>>>2>>>0],Xa:T[C+4>>>2>>>0],Ga:T[C+8>>>2>>>0],Ka:T[C+12>>>2>>>0],Ha:T[C+16>>>2>>>0],Da:T[C+20>>>2>>>0],xa:T[C+24>>>2>>>0],Ca:T[C+28>>>2>>>0],bb:T[C+32>>>2>>>0],Wa:T[C+36>>>2>>>0],Za:re?qe(re):\"\"},v=qe(v),re={\"%c\":\"%a %b %d %H:%M:%S %Y\",\"%D\":\"%m/%d/%y\",\"%F\":\"%Y-%m-%d\",\"%h\":\"%b\",\"%r\":\"%I:%M:%S %p\",\"%R\":\"%H:%M\",\"%T\":\"%H:%M:%S\",\"%x\":\"%m/%d/%y\",\"%X\":\"%H:%M:%S\",\"%Ec\":\"%c\",\"%EC\":\"%C\",\"%Ex\":\"%m/%d/%y\",\"%EX\":\"%H:%M:%S\",\"%Ey\":\"%y\",\"%EY\":\"%Y\",\"%Od\":\"%d\",\"%Oe\":\"%e\",\"%OH\":\"%H\",\"%OI\":\"%I\",\"%Om\":\"%m\",\"%OM\":\"%M\",\"%OS\":\"%S\",\"%Ou\":\"%u\",\"%OU\":\"%U\",\"%OV\":\"%V\",\"%Ow\":\"%w\",\"%OW\":\"%W\",\"%Oy\":\"%y\"};for(var se in re)v=v.replace(new RegExp(se,\"g\"),re[se]);var we=\"Sunday Monday Tuesday Wednesday Thursday Friday Saturday\".split(\" \"),_e=\"January February March April May June July August September October November December\".split(\" \");re={\"%a\":P=>we[P.xa].substring(0,3),\"%A\":P=>we[P.xa],\"%b\":P=>_e[P.Ha].substring(0,3),\"%B\":P=>_e[P.Ha],\"%C\":P=>H((P.Da+1900)/100|0,2),\"%d\":P=>H(P.Ka,2),\"%e\":P=>B(P.Ka,2,\" \"),\"%g\":P=>J(P).toString().substring(2),\"%G\":P=>J(P),\"%H\":P=>H(P.Ga,2),\"%I\":P=>(P=P.Ga,P==0?P=12:12{for(var ue=0,Se=0;Se<=P.Ha-1;ue+=($t(P.Da+1900)?br:Oe)[Se++]);return H(P.Ka+ue,3)},\"%m\":P=>H(P.Ha+1,2),\"%M\":P=>H(P.Xa,2),\"%n\":()=>`\\n`,\"%p\":P=>0<=P.Ga&&12>P.Ga?\"AM\":\"PM\",\"%S\":P=>H(P.Ya,2),\"%t\":()=>\"\t\",\"%u\":P=>P.xa||7,\"%U\":P=>H(Math.floor((P.Ca+7-P.xa)/7),2),\"%V\":P=>{var ue=Math.floor((P.Ca+7-(P.xa+6)%7)/7);if(2>=(P.xa+371-P.Ca-2)%7&&ue++,ue)ue==53&&(Se=(P.xa+371-P.Ca)%7,Se==4||Se==3&&$t(P.Da)||(ue=1));else{ue=52;var Se=(P.xa+7-P.Ca-1)%7;(Se==4||Se==5&&$t(P.Da%400-1))&&ue++}return H(ue,2)},\"%w\":P=>P.xa,\"%W\":P=>H(Math.floor((P.Ca+7-(P.xa+6)%7)/7),2),\"%y\":P=>(P.Da+1900).toString().substring(2),\"%Y\":P=>P.Da+1900,\"%z\":P=>{P=P.Wa;var ue=0<=P;return P=Math.abs(P)/60,(ue?\"+\":\"-\")+(\"0000\"+(P/60*100+P%60)).slice(-4)},\"%Z\":P=>P.Za,\"%%\":()=>\"%\"},v=v.replace(/%%/g,\"\\\\0\\\\0\");for(se in re)v.includes(se)&&(v=v.replace(new RegExp(se,\"g\"),re[se](C)));return v=v.replace(/\\\\0\\\\0/g,\"%\"),se=wr(v),se.length>m?0:(R.set(se,d>>>0),se.length-1)}var St=d=>{try{d()}catch(m){he(m)}};function un(){var d=ae,m={};for(let[v,C]of Object.entries(d))m[v]=typeof C==\"function\"?function(){bt.push(v);try{return C.apply(null,arguments)}finally{A||(bt.pop(),tt&&ot===1&&bt.length===0&&(ot=0,St(ir),typeof Fibers<\"u\"&&Fibers.cb()))}}:C;return m}var ot=0,tt=null,de=0,bt=[],Zt={},vr={},$r=0,Qt=null,Sr=[];function xr(){return new Promise((d,m)=>{Qt={resolve:d,reject:m}})}function _r(){var d=Wt(65548),m=d+12;N[d>>>2>>>0]=m,N[d+4>>>2>>>0]=m+65536,m=bt[0];var v=Zt[m];return v===void 0&&(v=$r++,Zt[m]=v,vr[v]=m),T[d+8>>>2>>>0]=v,d}function Cr(d){if(!A){if(ot===0){var m=!1,v=!1;d((C=0)=>{if(!A&&(de=C,m=!0,v)){ot=2,St(()=>sr(tt)),typeof Browser<\"u\"&&Browser.Ia.Pa&&Browser.Ia.resume(),C=!1;try{var B=(0,ae[vr[T[tt+8>>>2>>>0]]])()}catch(le){B=le,C=!0}var H=!1;if(!tt){var q=Qt;q&&(Qt=null,(C?q.reject:q.resolve)(B),H=!0)}if(C&&!H)throw B}}),v=!0,m||(ot=1,tt=_r(),typeof Browser<\"u\"&&Browser.Ia.Pa&&Browser.Ia.pause(),St(()=>ar(tt)))}else ot===2?(ot=0,St(ur),er(tt),tt=null,Sr.forEach(C=>{if(!A)try{C();try{z=z=C=z,r.onExit?.(C),A=!0,l(C,new Me(C))}catch(B){B instanceof Me||B==\"unwind\"||l(1,B)}}catch(B){B instanceof Me||B==\"unwind\"||l(1,B)}})):he(`invalid state: ${ot}`);return de}}function Xt(d){return Cr(m=>{d().then(m)})}var Ir={n:function(d,m,v){return Xt(async()=>{await r.Ra(d,m,v)})},a:function(d,m,v){throw d>>>=0,new wt(d).$a(m>>>0,v>>>0),rt=d,Dt++,rt},g:function(){return 0},J:function(){},A:function(){},C:function(){},L:function(){return 0},H:function(){},D:function(){},G:function(){},l:function(){},B:function(){},y:function(){},I:function(){},z:function(){},m:()=>1,q:function(d,m,v){d=m+2097152>>>0<4194305-!!d?(d>>>0)+4294967296*m:NaN,v>>>=0,d=new Date(1e3*d),T[v>>>2>>>0]=d.getUTCSeconds(),T[v+4>>>2>>>0]=d.getUTCMinutes(),T[v+8>>>2>>>0]=d.getUTCHours(),T[v+12>>>2>>>0]=d.getUTCDate(),T[v+16>>>2>>>0]=d.getUTCMonth(),T[v+20>>>2>>>0]=d.getUTCFullYear()-1900,T[v+24>>>2>>>0]=d.getUTCDay(),T[v+28>>>2>>>0]=(d.getTime()-Date.UTC(d.getUTCFullYear(),0,1,0,0,0,0))/864e5|0},r:function(d,m,v){d=m+2097152>>>0<4194305-!!d?(d>>>0)+4294967296*m:NaN,v>>>=0,d=new Date(1e3*d),T[v>>>2>>>0]=d.getSeconds(),T[v+4>>>2>>>0]=d.getMinutes(),T[v+8>>>2>>>0]=d.getHours(),T[v+12>>>2>>>0]=d.getDate(),T[v+16>>>2>>>0]=d.getMonth(),T[v+20>>>2>>>0]=d.getFullYear()-1900,T[v+24>>>2>>>0]=d.getDay(),T[v+28>>>2>>>0]=($t(d.getFullYear())?yt:zt)[d.getMonth()]+d.getDate()-1|0,T[v+36>>>2>>>0]=-(60*d.getTimezoneOffset()),m=new Date(d.getFullYear(),6,1).getTimezoneOffset();var C=new Date(d.getFullYear(),0,1).getTimezoneOffset();T[v+32>>>2>>>0]=(m!=C&&d.getTimezoneOffset()==Math.min(C,m))|0},s:function(d){d>>>=0;var m=new Date(T[d+20>>>2>>>0]+1900,T[d+16>>>2>>>0],T[d+12>>>2>>>0],T[d+8>>>2>>>0],T[d+4>>>2>>>0],T[d>>>2>>>0],0),v=T[d+32>>>2>>>0],C=m.getTimezoneOffset(),B=new Date(m.getFullYear(),6,1).getTimezoneOffset(),H=new Date(m.getFullYear(),0,1).getTimezoneOffset(),q=Math.min(H,B);return 0>v?T[d+32>>>2>>>0]=+(B!=H&&q==C):0>>2>>>0]=m.getDay(),T[d+28>>>2>>>0]=($t(m.getFullYear())?yt:zt)[m.getMonth()]+m.getDate()-1|0,T[d>>>2>>>0]=m.getSeconds(),T[d+4>>>2>>>0]=m.getMinutes(),T[d+8>>>2>>>0]=m.getHours(),T[d+12>>>2>>>0]=m.getDate(),T[d+16>>>2>>>0]=m.getMonth(),T[d+20>>>2>>>0]=m.getYear(),d=m.getTime(),isNaN(d)?(T[Jt()>>>2>>>0]=61,d=-1):d/=1e3,tr((ze=d,1<=+Math.abs(ze)?0>>0:~~+Math.ceil((ze-+(~~ze>>>0))/4294967296)>>>0:0)),d>>>0},o:function(){return-52},p:function(){},w:function(d,m,v){function C(J){return(J=J.toTimeString().match(/\\\\(([A-Za-z ]+)\\\\)$/))?J[1]:\"GMT\"}v>>>=0;var B=new Date().getFullYear(),H=new Date(B,0,1),q=new Date(B,6,1);B=H.getTimezoneOffset();var le=q.getTimezoneOffset();N[d>>>0>>>2>>>0]=60*Math.max(B,le),T[m>>>0>>>2>>>0]=+(B!=le),d=C(H),m=C(q),d=Ut(d),m=Ut(m),le>>2>>>0]=d,N[v+4>>>2>>>0]=m):(N[v>>>2>>>0]=m,N[v+4>>>2>>>0]=d)},e:()=>{he(\"\")},b:function(d,m,v){return d>>>=0,m=Kt(m>>>0,v>>>0),Ue[d].apply(null,m)},i:function(d,m,v){return d>>>=0,m=Kt(m>>>0,v>>>0),Ue[d].apply(null,m)},h:()=>Date.now(),x:function(){return 4294901760},c:()=>performance.now(),K:function(d,m,v){return m>>>=0,V.copyWithin(d>>>0>>>0,m>>>0,m+(v>>>0)>>>0)},u:function(d){d>>>=0;var m=V.length;if(4294901760=v;v*=2){var C=m*(1+.2/v);C=Math.min(C,d+100663296);var B=Math;C=Math.max(d,C);e:{B=(B.min.call(B,4294901760,C+(65536-C%65536)%65536)-E.buffer.byteLength+65535)/65536;try{E.grow(B),K();var H=1;break e}catch{}H=void 0}if(H)return!0}return!1},E:function(d,m){d>>>=0,m>>>=0;var v=0;return Yt().forEach((C,B)=>{var H=m+v;for(B=N[d+4*B>>>2>>>0]=H,H=0;H>>0>>>0]=C.charCodeAt(H);R[B>>>0>>>0]=0,v+=C.length+1}),0},F:function(d,m){d>>>=0,m>>>=0;var v=Yt();N[d>>>2>>>0]=v.length;var C=0;return v.forEach(B=>C+=B.length+1),N[m>>>2>>>0]=C,0},f:()=>52,k:function(){return 52},t:function(){return 70},j:function(d,m,v,C){m>>>=0,v>>>=0,C>>>=0;for(var B=0,H=0;H>>2>>>0],le=N[m+4>>>2>>>0];m+=8;for(var J=0;J>>0],se=Ye[d];re===0||re===10?((d===1?$:x)(vt(se,0)),se.length=0):se.push(re)}B+=le}return N[C>>>2>>>0]=B,0},v:Nt,d:function(d,m,v,C){return Nt(d>>>0,m>>>0,v>>>0,C>>>0)}},ae=function(){function d(v){return ae=v.exports,ae=un(),ae=Ar(),E=ae.M,K(),Z.unshift(ae.N),Pe--,Pe==0&&(fe!==null&&(clearInterval(fe),fe=null),Ie&&(v=Ie,Ie=null,v())),ae}var m={a:Ir};if(Pe++,r.instantiateWasm)try{return r.instantiateWasm(m,d)}catch(v){x(`Module.instantiateWasm callback failed with error: ${v}`),n(v)}return et(m,function(v){d(v.instance)}).catch(n),{}}();r._OrtInit=(d,m)=>(r._OrtInit=ae.O)(d,m),r._OrtGetLastError=(d,m)=>(r._OrtGetLastError=ae.P)(d,m),r._OrtCreateSessionOptions=(d,m,v,C,B,H,q,le,J,re)=>(r._OrtCreateSessionOptions=ae.Q)(d,m,v,C,B,H,q,le,J,re),r._OrtAppendExecutionProvider=(d,m)=>(r._OrtAppendExecutionProvider=ae.R)(d,m),r._OrtAddFreeDimensionOverride=(d,m,v)=>(r._OrtAddFreeDimensionOverride=ae.S)(d,m,v),r._OrtAddSessionConfigEntry=(d,m,v)=>(r._OrtAddSessionConfigEntry=ae.T)(d,m,v),r._OrtReleaseSessionOptions=d=>(r._OrtReleaseSessionOptions=ae.U)(d),r._OrtCreateSession=(d,m,v)=>(r._OrtCreateSession=ae.V)(d,m,v),r._OrtReleaseSession=d=>(r._OrtReleaseSession=ae.W)(d),r._OrtGetInputOutputCount=(d,m,v)=>(r._OrtGetInputOutputCount=ae.X)(d,m,v),r._OrtGetInputName=(d,m)=>(r._OrtGetInputName=ae.Y)(d,m),r._OrtGetOutputName=(d,m)=>(r._OrtGetOutputName=ae.Z)(d,m),r._OrtFree=d=>(r._OrtFree=ae._)(d),r._OrtCreateTensor=(d,m,v,C,B,H)=>(r._OrtCreateTensor=ae.$)(d,m,v,C,B,H),r._OrtGetTensorData=(d,m,v,C,B)=>(r._OrtGetTensorData=ae.aa)(d,m,v,C,B),r._OrtReleaseTensor=d=>(r._OrtReleaseTensor=ae.ba)(d),r._OrtCreateRunOptions=(d,m,v,C)=>(r._OrtCreateRunOptions=ae.ca)(d,m,v,C),r._OrtAddRunConfigEntry=(d,m,v)=>(r._OrtAddRunConfigEntry=ae.da)(d,m,v),r._OrtReleaseRunOptions=d=>(r._OrtReleaseRunOptions=ae.ea)(d),r._OrtCreateBinding=d=>(r._OrtCreateBinding=ae.fa)(d),r._OrtBindInput=(d,m,v)=>(r._OrtBindInput=ae.ga)(d,m,v),r._OrtBindOutput=(d,m,v,C)=>(r._OrtBindOutput=ae.ha)(d,m,v,C),r._OrtClearBoundOutputs=d=>(r._OrtClearBoundOutputs=ae.ia)(d),r._OrtReleaseBinding=d=>(r._OrtReleaseBinding=ae.ja)(d),r._OrtRunWithBinding=(d,m,v,C,B)=>(r._OrtRunWithBinding=ae.ka)(d,m,v,C,B),r._OrtRun=(d,m,v,C,B,H,q,le)=>(r._OrtRun=ae.la)(d,m,v,C,B,H,q,le),r._OrtEndProfiling=d=>(r._OrtEndProfiling=ae.ma)(d),r._JsepOutput=(d,m,v)=>(r._JsepOutput=ae.na)(d,m,v),r._JsepGetNodeName=d=>(r._JsepGetNodeName=ae.oa)(d);var Jt=()=>(Jt=ae.pa)(),Wt=r._malloc=d=>(Wt=r._malloc=ae.qa)(d),er=r._free=d=>(er=r._free=ae.ra)(d),tr=d=>(tr=ae.ta)(d),rr=()=>(rr=ae.ua)(),nr=d=>(nr=ae.va)(d),or=d=>(or=ae.wa)(d),ar=d=>(ar=ae.ya)(d),ir=()=>(ir=ae.za)(),sr=d=>(sr=ae.Aa)(d),ur=()=>(ur=ae.Ba)();r.___start_em_js=943100,r.___stop_em_js=943261;function Ar(){var d=ae;d=Object.assign({},d);var m=C=>()=>C()>>>0,v=C=>B=>C(B)>>>0;return d.pa=m(d.pa),d.qa=v(d.qa),d.ua=m(d.ua),d.wa=v(d.wa),d}r.stackAlloc=or,r.stackSave=rr,r.stackRestore=nr,r.UTF8ToString=qe,r.stringToUTF8=(d,m,v)=>Mt(d,V,m,v),r.lengthBytesUTF8=qt;var xt;Ie=function d(){xt||Et(),xt||(Ie=d)};function Et(){if(!(0_o)});var Ao=dr(()=>{});var To=dr(()=>{});var Eo={};Br(Eo,{cpus:()=>Qu});var Qu,Oo=j(()=>{Qu=void 0});var Ro=dr((ko,$n)=>{\"use strict\";var Po=(()=>{var e=typeof document<\"u\"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<\"u\"&&(e=e||__filename),function(t={}){function r(){return Q.buffer!=fe.buffer&&Ge(),fe}function o(){return Q.buffer!=fe.buffer&&Ge(),Ie}function n(){return Q.buffer!=fe.buffer&&Ge(),he}function s(){return Q.buffer!=fe.buffer&&Ge(),ye}function u(){return Q.buffer!=fe.buffer&&Ge(),We}function l(){return Q.buffer!=fe.buffer&&Ge(),De}var a=t,p,h;a.ready=new Promise((i,c)=>{p=i,h=c}),a.mountExternalData=(i,c)=>{(a.cb||(a.cb=new Map)).set(i,c)},a.unmountExternalData=()=>{delete a.cb},a.jsepInit=(i,c,f,S,O,D,W,ie)=>{a.Mb=i,a.wb=c,a.yb=f,a.kb=S,a.xb=O,a.Ea=D,a.zb=W,a.Ab=ie,c=(ne,oe,pe)=>(...xe)=>{let Te=ut,k=oe?.();xe=ne(...xe);let me=oe?.();return k!==me&&(ne=me,pe(k),oe=pe=null),ut!=Te?Mu():xe},f=ne=>async(...oe)=>{try{if(a.bb)throw Error(\"Session already started\");let pe=a.bb={Cb:oe[0],errors:[]},xe=await ne(...oe);if(a.bb!==pe)throw Error(\"Session mismatch\");i.flush();let Te=pe.errors;if(0me),0a._OrtRun,ne=>a._OrtRun=ne)),a._OrtRunWithBinding=f(c(a._OrtRunWithBinding,()=>a._OrtRunWithBinding,ne=>a._OrtRunWithBinding=ne)),a._OrtBindInput=c(a._OrtBindInput,()=>a._OrtBindInput,ne=>a._OrtBindInput=ne),a.jsepRegisterBuffer=(ne,oe,pe,xe)=>i.registerBuffer(ne,oe,pe,xe),a.jsepUnregisterBuffers=ne=>{i.unregisterBuffers(ne)},a.jsepGetBuffer=ne=>i.getBuffer(ne),a.jsepCreateDownloader=(ne,oe,pe)=>i.createDownloader(ne,oe,pe)};var g=Object.assign({},a),b=\"./this.program\",w=(i,c)=>{throw c},y=typeof window==\"object\",_=typeof importScripts==\"function\",I=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\",$=a.ENVIRONMENT_IS_PTHREAD||!1,x=\"\";function E(i){return a.locateFile?a.locateFile(i,x):x+i}var A,z,R;if(I){var V=(yn(),Ht(gn)),T=(wn(),Ht(bn));x=_?T.dirname(x)+\"/\":__dirname+\"/\",A=(c,f)=>(c=At(c)?new URL(c):T.normalize(c),V.readFileSync(c,f?void 0:\"utf8\")),R=c=>(c=A(c,!0),c.buffer||(c=new Uint8Array(c)),c),z=(c,f,S,O=!0)=>{c=At(c)?new URL(c):T.normalize(c),V.readFile(c,O?void 0:\"utf8\",(D,W)=>{D?S(D):f(O?W.buffer:W)})},!a.thisProgram&&1{throw process.exitCode=c,f},a.inspect=()=>\"[Emscripten Module object]\";let i;try{i=Ao()}catch(c){throw console.error(\\'The \"worker_threads\" module is not supported in this node.js build - perhaps a newer version is needed?\\'),c}global.Worker=i.Worker}else(y||_)&&(_?x=self.location.href:typeof document<\"u\"&&document.currentScript&&(x=document.currentScript.src),typeof e<\"u\"&&e&&(x=e),x.indexOf(\"blob:\")!==0?x=x.substr(0,x.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1):x=\"\",I||(A=i=>{var c=new XMLHttpRequest;return c.open(\"GET\",i,!1),c.send(null),c.responseText},_&&(R=i=>{var c=new XMLHttpRequest;return c.open(\"GET\",i,!1),c.responseType=\"arraybuffer\",c.send(null),new Uint8Array(c.response)}),z=(i,c,f)=>{var S=new XMLHttpRequest;S.open(\"GET\",i,!0),S.responseType=\"arraybuffer\",S.onload=()=>{S.status==200||S.status==0&&S.response?c(S.response):f()},S.onerror=f,S.send(null)}));I&&typeof performance>\"u\"&&(global.performance=To().performance);var N=console.log.bind(console),te=console.error.bind(console);I&&(N=(...i)=>V.writeSync(1,i.join(\" \")+`\\n`),te=(...i)=>V.writeSync(2,i.join(\" \")+`\\n`));var Y=N,K=te;Object.assign(a,g),g=null,typeof WebAssembly!=\"object\"&&rt(\"no native wasm support detected\");var Q,Z,Ee=!1,Pe,fe,Ie,he,ye,We,De;function Ge(){var i=Q.buffer;a.HEAP8=fe=new Int8Array(i),a.HEAP16=new Int16Array(i),a.HEAPU8=Ie=new Uint8Array(i),a.HEAPU16=new Uint16Array(i),a.HEAP32=he=new Int32Array(i),a.HEAPU32=ye=new Uint32Array(i),a.HEAPF32=We=new Float32Array(i),a.HEAPF64=De=new Float64Array(i)}var G=16777216;if($)Q=a.wasmMemory;else if(a.wasmMemory)Q=a.wasmMemory;else if(Q=new WebAssembly.Memory({initial:G/65536,maximum:65536,shared:!0}),!(Q.buffer instanceof SharedArrayBuffer))throw K(\"requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag\"),I&&K(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)\"),Error(\"bad memory\");Ge(),G=Q.buffer.byteLength;var ee=[],be=[],et=[],ze=0,Ue=null,Me=null;function wt(){if(ze--,ze==0&&(Ue!==null&&(clearInterval(Ue),Ue=null),Me)){var i=Me;Me=null,i()}}function rt(i){throw i=\"Aborted(\"+i+\")\",K(i),Ee=!0,Pe=1,i=new WebAssembly.RuntimeError(i+\". Build with -sASSERTIONS for more info.\"),h(i),i}var Dt=i=>i.startsWith(\"data:application/octet-stream;base64,\"),At=i=>i.startsWith(\"file://\"),vt;vt=\"ort-wasm-simd-threaded.wasm\",Dt(vt)||(vt=E(vt));function qe(i){if(R)return R(i);throw\"both async and sync fetching of the wasm failed\"}function qt(i){if(y||_){if(typeof fetch==\"function\"&&!At(i))return fetch(i,{credentials:\"same-origin\"}).then(c=>{if(!c.ok)throw\"failed to load wasm binary file at \\'\"+i+\"\\'\";return c.arrayBuffer()}).catch(()=>qe(i));if(z)return new Promise((c,f)=>{z(i,S=>c(new Uint8Array(S)),f)})}return Promise.resolve().then(()=>qe(i))}function Mt(i,c,f){return qt(i).then(S=>WebAssembly.instantiate(S,c)).then(S=>S).then(f,S=>{K(`failed to asynchronously prepare wasm: ${S}`),rt(S)})}function $t(i,c){var f=vt;return typeof WebAssembly.instantiateStreaming!=\"function\"||Dt(f)||At(f)||I||typeof fetch!=\"function\"?Mt(f,i,c):fetch(f,{credentials:\"same-origin\"}).then(S=>WebAssembly.instantiateStreaming(S,i).then(c,function(O){return K(`wasm streaming compile failed: ${O}`),K(\"falling back to ArrayBuffer instantiation\"),Mt(f,i,c)}))}var yt,zt={932428:(i,c,f,S)=>{if(typeof a>\"u\"||!a.cb)return 1;if(i=Ye(i>>>0),i.startsWith(\"./\")&&(i=i.substring(2)),i=a.cb.get(i),!i)return 2;if(c>>>=0,f>>>=0,S>>>=0,c+f>i.byteLength)return 3;try{return o().set(i.subarray(c,c+f),S>>>0),0}catch{return 4}},932929:i=>a.wb(i),932962:i=>a.yb(i),932994:(i,c,f)=>{a.kb(i,c,f,!0)},933033:(i,c,f)=>{a.kb(i,c,f)},933066:i=>{a.Ea(\"Abs\",i,void 0)},933117:i=>{a.Ea(\"Neg\",i,void 0)},933168:i=>{a.Ea(\"Floor\",i,void 0)},933221:i=>{a.Ea(\"Ceil\",i,void 0)},933273:i=>{a.Ea(\"Reciprocal\",i,void 0)},933331:i=>{a.Ea(\"Sqrt\",i,void 0)},933383:i=>{a.Ea(\"Exp\",i,void 0)},933434:i=>{a.Ea(\"Erf\",i,void 0)},933485:i=>{a.Ea(\"Sigmoid\",i,void 0)},933540:i=>{a.Ea(\"Log\",i,void 0)},933591:i=>{a.Ea(\"Sin\",i,void 0)},933642:i=>{a.Ea(\"Cos\",i,void 0)},933693:i=>{a.Ea(\"Tan\",i,void 0)},933744:i=>{a.Ea(\"Asin\",i,void 0)},933796:i=>{a.Ea(\"Acos\",i,void 0)},933848:i=>{a.Ea(\"Atan\",i,void 0)},933900:i=>{a.Ea(\"Sinh\",i,void 0)},933952:i=>{a.Ea(\"Cosh\",i,void 0)},934004:i=>{a.Ea(\"Asinh\",i,void 0)},934057:i=>{a.Ea(\"Acosh\",i,void 0)},934110:i=>{a.Ea(\"Atanh\",i,void 0)},934163:i=>{a.Ea(\"Tanh\",i,void 0)},934215:i=>{a.Ea(\"Not\",i,void 0)},934266:(i,c,f)=>{a.Ea(\"Clip\",i,{min:c,max:f})},934335:i=>{a.Ea(\"Clip\",i,void 0)},934387:(i,c)=>{a.Ea(\"Elu\",i,{alpha:c})},934445:i=>{a.Ea(\"Relu\",i,void 0)},934497:(i,c)=>{a.Ea(\"LeakyRelu\",i,{alpha:c})},934561:(i,c)=>{a.Ea(\"ThresholdedRelu\",i,{alpha:c})},934631:(i,c)=>{a.Ea(\"Cast\",i,{to:c})},934689:i=>{a.Ea(\"Add\",i,void 0)},934740:i=>{a.Ea(\"Sub\",i,void 0)},934791:i=>{a.Ea(\"Mul\",i,void 0)},934842:i=>{a.Ea(\"Div\",i,void 0)},934893:i=>{a.Ea(\"Pow\",i,void 0)},934944:i=>{a.Ea(\"Equal\",i,void 0)},934997:i=>{a.Ea(\"Greater\",i,void 0)},935052:i=>{a.Ea(\"GreaterOrEqual\",i,void 0)},935114:i=>{a.Ea(\"Less\",i,void 0)},935166:i=>{a.Ea(\"LessOrEqual\",i,void 0)},935225:(i,c,f,S,O)=>{a.Ea(\"ReduceMean\",i,{keepDims:!!c,noopWithEmptyAxes:!!f,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},935384:(i,c,f,S,O)=>{a.Ea(\"ReduceMax\",i,{keepDims:!!c,noopWithEmptyAxes:!!f,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},935542:(i,c,f,S,O)=>{a.Ea(\"ReduceMin\",i,{keepDims:!!c,noopWithEmptyAxes:!!f,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},935700:(i,c,f,S,O)=>{a.Ea(\"ReduceProd\",i,{keepDims:!!c,noopWithEmptyAxes:!!f,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},935859:(i,c,f,S,O)=>{a.Ea(\"ReduceSum\",i,{keepDims:!!c,noopWithEmptyAxes:!!f,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},936017:(i,c,f,S,O)=>{a.Ea(\"ReduceL1\",i,{keepDims:!!c,noopWithEmptyAxes:!!f,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},936174:(i,c,f,S,O)=>{a.Ea(\"ReduceL2\",i,{keepDims:!!c,noopWithEmptyAxes:!!f,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},936331:(i,c,f,S,O)=>{a.Ea(\"ReduceLogSum\",i,{keepDims:!!c,noopWithEmptyAxes:!!f,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},936492:(i,c,f,S,O)=>{a.Ea(\"ReduceSumSquare\",i,{keepDims:!!c,noopWithEmptyAxes:!!f,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},936656:(i,c,f,S,O)=>{a.Ea(\"ReduceLogSumExp\",i,{keepDims:!!c,noopWithEmptyAxes:!!f,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},936820:i=>{a.Ea(\"Where\",i,void 0)},936873:(i,c,f)=>{a.Ea(\"Transpose\",i,{perm:c?Array.from(n().subarray(c>>>0,f>>>0)):[]})},936981:(i,c,f,S,O,D,W,ie,ne,oe,pe,xe,Te,k,me)=>{a.Ea(\"ConvTranspose\",i,{format:ne?\"NHWC\":\"NCHW\",autoPad:c,dilations:[f],group:S,kernel_shape:[O],pads:[D,W],strides:[ie],wIsConst:()=>!!r()[oe>>>0],outputPadding:pe?Array.from(n().subarray(pe>>>0,xe>>>0)):[],outputShape:Te?Array.from(n().subarray(Te>>>0,k>>>0)):[],activation:Ye(me)})},937383:(i,c,f,S,O,D,W,ie,ne,oe,pe,xe,Te,k)=>{a.Ea(\"ConvTranspose\",i,{format:ie?\"NHWC\":\"NCHW\",autoPad:c,dilations:Array.from(n().subarray(f>>>0,(f>>>0)+2>>>0)),group:S,kernelShape:Array.from(n().subarray(O>>>0,(O>>>0)+2>>>0)),pads:Array.from(n().subarray(D>>>0,(D>>>0)+4>>>0)),strides:Array.from(n().subarray(W>>>0,(W>>>0)+2>>>0)),wIsConst:()=>!!r()[ne>>>0],outputPadding:oe?Array.from(n().subarray(oe>>>0,pe>>>0)):[],outputShape:xe?Array.from(n().subarray(xe>>>0,Te>>>0)):[],activation:Ye(k)})},937948:(i,c,f,S,O,D,W,ie,ne,oe,pe,xe,Te,k,me)=>{a.Ea(\"ConvTranspose\",i,{format:ne?\"NHWC\":\"NCHW\",autoPad:c,dilations:[f],group:S,kernel_shape:[O],pads:[D,W],strides:[ie],wIsConst:()=>!!r()[oe>>>0],outputPadding:pe?Array.from(n().subarray(pe>>>0,xe>>>0)):[],outputShape:Te?Array.from(n().subarray(Te>>>0,k>>>0)):[],activation:Ye(me)})},938350:(i,c,f,S,O,D,W,ie,ne,oe,pe,xe,Te,k)=>{a.Ea(\"ConvTranspose\",i,{format:ie?\"NHWC\":\"NCHW\",autoPad:c,dilations:Array.from(n().subarray(f>>>0,(f>>>0)+2>>>0)),group:S,kernelShape:Array.from(n().subarray(O>>>0,(O>>>0)+2>>>0)),pads:Array.from(n().subarray(D>>>0,(D>>>0)+4>>>0)),strides:Array.from(n().subarray(W>>>0,(W>>>0)+2>>>0)),wIsConst:()=>!!r()[ne>>>0],outputPadding:oe?Array.from(n().subarray(oe>>>0,pe>>>0)):[],outputShape:xe?Array.from(n().subarray(xe>>>0,Te>>>0)):[],activation:Ye(k)})},938915:(i,c)=>{a.Ea(\"GlobalAveragePool\",i,{format:c?\"NHWC\":\"NCHW\"})},939006:(i,c,f,S,O,D,W,ie,ne,oe,pe,xe,Te,k,me,Ce)=>{a.Ea(\"AveragePool\",i,{format:Ce?\"NHWC\":\"NCHW\",auto_pad:c,ceil_mode:f,count_include_pad:S,storage_order:O,dilations:[D,W],kernel_shape:[ie,ne],pads:[oe,pe,xe,Te],strides:[k,me]})},939290:(i,c)=>{a.Ea(\"GlobalAveragePool\",i,{format:c?\"NHWC\":\"NCHW\"})},939381:(i,c,f,S,O,D,W,ie,ne,oe,pe,xe,Te,k,me,Ce)=>{a.Ea(\"AveragePool\",i,{format:Ce?\"NHWC\":\"NCHW\",auto_pad:c,ceil_mode:f,count_include_pad:S,storage_order:O,dilations:[D,W],kernel_shape:[ie,ne],pads:[oe,pe,xe,Te],strides:[k,me]})},939665:(i,c)=>{a.Ea(\"GlobalMaxPool\",i,{format:c?\"NHWC\":\"NCHW\"})},939752:(i,c,f,S,O,D,W,ie,ne,oe,pe,xe,Te,k,me,Ce)=>{a.Ea(\"MaxPool\",i,{format:Ce?\"NHWC\":\"NCHW\",auto_pad:c,ceil_mode:f,count_include_pad:S,storage_order:O,dilations:[D,W],kernel_shape:[ie,ne],pads:[oe,pe,xe,Te],strides:[k,me]})},940032:(i,c)=>{a.Ea(\"GlobalMaxPool\",i,{format:c?\"NHWC\":\"NCHW\"})},940119:(i,c,f,S,O,D,W,ie,ne,oe,pe,xe,Te,k,me,Ce)=>{a.Ea(\"MaxPool\",i,{format:Ce?\"NHWC\":\"NCHW\",auto_pad:c,ceil_mode:f,count_include_pad:S,storage_order:O,dilations:[D,W],kernel_shape:[ie,ne],pads:[oe,pe,xe,Te],strides:[k,me]})},940399:(i,c,f,S,O)=>{a.Ea(\"Gemm\",i,{alpha:c,beta:f,transA:S,transB:O})},940503:i=>{a.Ea(\"MatMul\",i,void 0)},940557:(i,c,f,S)=>{a.Ea(\"ArgMax\",i,{keepDims:!!c,selectLastIndex:!!f,axis:S})},940665:(i,c,f,S)=>{a.Ea(\"ArgMin\",i,{keepDims:!!c,selectLastIndex:!!f,axis:S})},940773:(i,c)=>{a.Ea(\"Softmax\",i,{axis:c})},940836:(i,c)=>{a.Ea(\"Concat\",i,{axis:c})},940896:(i,c,f,S,O)=>{a.Ea(\"Split\",i,{axis:c,numOutputs:f,splitSizes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},941036:i=>{a.Ea(\"Expand\",i,void 0)},941090:(i,c)=>{a.Ea(\"Gather\",i,{axis:Number(c)})},941161:(i,c)=>{a.Ea(\"GatherElements\",i,{axis:Number(c)})},941240:(i,c,f,S,O,D,W,ie,ne,oe,pe)=>{a.Ea(\"Resize\",i,{antialias:c,axes:f?Array.from(n().subarray(f>>>0,S>>>0)):[],coordinateTransformMode:Ye(O),cubicCoeffA:D,excludeOutside:W,extrapolationValue:ie,keepAspectRatioPolicy:Ye(ne),mode:Ye(oe),nearestMode:Ye(pe)})},941586:(i,c,f,S,O,D,W)=>{a.Ea(\"Slice\",i,{starts:c?Array.from(n().subarray(c>>>0,f>>>0)):[],ends:S?Array.from(n().subarray(S>>>0,O>>>0)):[],axes:D?Array.from(n().subarray(D>>>0,W>>>0)):[]})},941802:i=>{a.Ea(\"Tile\",i,void 0)},941854:(i,c,f)=>{a.Ea(\"LayerNormalization\",i,{axis:Number(c),epsilon:Number(f)})},941961:(i,c,f)=>{a.Ea(\"InstanceNormalization\",i,{epsilon:c,format:f?\"NHWC\":\"NCHW\"})},942075:(i,c,f)=>{a.Ea(\"InstanceNormalization\",i,{epsilon:c,format:f?\"NHWC\":\"NCHW\"})},942189:i=>{a.Ea(\"Range\",i,void 0)},942242:(i,c)=>{a.Ea(\"Einsum\",i,{equation:Ye(c)})},942323:(i,c,f,S,O)=>{a.Ea(\"Pad\",i,{mode:c,value:f,pads:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},942450:(i,c,f,S,O,D)=>{a.Ea(\"BatchNormalization\",i,{epsilon:c,momentum:f,spatial:!!O,trainingMode:!!S,format:D?\"NHWC\":\"NCHW\"})},942619:(i,c,f,S,O,D)=>{a.Ea(\"BatchNormalization\",i,{epsilon:c,momentum:f,spatial:!!O,trainingMode:!!S,format:D?\"NHWC\":\"NCHW\"})},942788:(i,c,f)=>{a.Ea(\"CumSum\",i,{exclusive:Number(c),reverse:Number(f)})},942885:(i,c,f,S,O,D,W,ie,ne)=>{a.Ea(\"Attention\",i,{numHeads:c,isUnidirectional:f,maskFilterValue:S,scale:O,doRotary:D,qkvHiddenSizes:W?Array.from(n().subarray(Number(ie)>>>0,Number(ie)+W>>>0)):[],pastPresentShareBuffer:!!ne})},943157:i=>{a.Ea(\"Gelu\",i,void 0)},943209:(i,c,f,S,O,D)=>{a.Ea(\"MultiHeadAttention\",i,{numHeads:c,isUnidirectional:f,maskFilterValue:S,scale:O,doRotary:D})},943368:i=>{a.Ea(\"BiasAdd\",i,void 0)},943423:i=>{a.Ea(\"BiasSplitGelu\",i,void 0)},943484:(i,c)=>{a.Ea(\"SkipLayerNormalization\",i,{epsilon:c})},943565:(i,c,f,S,O,D,W,ie,ne,oe,pe,xe,Te)=>{a.Ea(\"Conv\",i,{format:ne?\"NHWC\":\"NCHW\",auto_pad:c,dilations:[f],group:S,kernel_shape:[O],pads:D?Array.from(n().subarray(D>>>0,W>>>0)):[],strides:[ie],w_is_const:()=>!!r()[oe>>>0],activation:Ye(pe),activation_params:xe?Array.from(u().subarray(xe>>>0,Te>>>0)):[]})},943935:(i,c,f,S,O,D,W,ie,ne,oe,pe,xe,Te,k,me,Ce)=>{a.Ea(\"Conv\",i,{format:xe?\"NHWC\":\"NCHW\",auto_pad:c,dilations:[f,S],group:O,kernel_shape:[D,W],pads:ie?Array.from(n().subarray(ie>>>0,ne>>>0)):[],strides:[oe,pe],w_is_const:()=>!!r()[Te>>>0],activation:Ye(k),activation_params:me?Array.from(u().subarray(me>>>0,Ce>>>0)):[]})},944326:i=>{a.zb(i)},944360:(i,c)=>a.Ab(i,c,a.bb.Cb,a.bb.errors)};function Ut(i){this.name=\"ExitStatus\",this.message=`Program terminated with exit(${i})`,this.status=i}var Tt=i=>{i.terminate(),i.onmessage=()=>{}},Kt=i=>{de.Ya.length==0&&(ot(),de.lb(de.Ya[0]));var c=de.Ya.pop();if(!c)return 6;de.Za.push(c),de.Qa[i.Xa]=c,c.Xa=i.Xa;var f={cmd:\"run\",start_routine:i.Db,arg:i.tb,pthread_ptr:i.Xa};return I&&c.unref(),c.postMessage(f,i.Jb),0},nt=0,Yt=typeof TextDecoder<\"u\"?new TextDecoder(\"utf8\"):void 0,Vt=(i,c,f)=>{c>>>=0;var S=c+f;for(f=c;i[f]&&!(f>=S);)++f;if(16O?S+=String.fromCharCode(O):(O-=65536,S+=String.fromCharCode(55296|O>>10,56320|O&1023))}}else S+=String.fromCharCode(O)}return S},Ye=(i,c)=>(i>>>=0)?Vt(o(),i,c):\"\",br=i=>{var c=mn();return i=i(),kr(c),i};function Oe(i,c){var f=arguments.length-2,S=arguments;return br(()=>{for(var O=fn(8*f),D=O>>>3,W=0;W>>0]=ie}return po(i,f,O,c)})}function wr(i){if($)return Oe(0,1,i);Pe=i,0{if(Pe=i,$)throw Zt(i),\"unwind\";wr(i)},St=i=>{i instanceof Ut||i==\"unwind\"||w(1,i)};function un(){for(var i=a.numThreads;i--;)ot();ee.unshift(()=>{ze++,tt(()=>wt())})}function ot(){var i=E(\"ort-wasm-simd-threaded.worker.js\");i=new Worker(i),de.Ya.push(i)}function tt(i){$?i():Promise.all(de.Ya.map(de.lb)).then(i)}var de={Ya:[],Za:[],pb:[],Qa:{},hb(){$?(de.receiveObjectTransfer=de.Bb,de.threadInitTLS=de.ob,de.setExitStatus=de.nb):un()},nb:i=>Pe=i,Nb:[\"$terminateWorker\"],Eb:()=>{for(var i of de.Za)Tt(i);for(i of de.Ya)Tt(i);de.Ya=[],de.Za=[],de.Qa=[]},mb:i=>{var c=i.Xa;delete de.Qa[c],de.Ya.push(i),de.Za.splice(de.Za.indexOf(i),1),i.Xa=0,cn(c)},Bb(){},ob(){de.pb.forEach(i=>i())},lb:i=>new Promise(c=>{i.onmessage=D=>{D=D.data;var W=D.cmd;if(D.targetThread&&D.targetThread!=Pr()){var ie=de.Qa[D.targetThread];ie?ie.postMessage(D,D.transferList):K(`Internal error! Worker sent a message \"${W}\" to target pthread ${D.targetThread}, but that thread no longer exists!`)}else W===\"checkMailbox\"?Et():W===\"spawnThread\"?Kt(D):W===\"cleanupThread\"?de.mb(de.Qa[D.thread]):W===\"killThread\"?(D=D.thread,W=de.Qa[D],delete de.Qa[D],Tt(W),cn(D),de.Za.splice(de.Za.indexOf(W),1),W.Xa=0):W===\"cancelThread\"?de.Qa[D.thread].postMessage({cmd:\"cancel\"}):W===\"loaded\"?(i.loaded=!0,I&&!i.Xa&&i.unref(),c(i)):W===\"alert\"?alert(`Thread ${D.threadId}: ${D.text}`):D.target===\"setimmediate\"?i.postMessage(D):W===\"callHandler\"?a[D.handler](...D.args):W&&K(`worker sent an unknown command ${W}`)},i.onerror=D=>{throw K(`worker sent an error! ${D.filename}:${D.lineno}: ${D.message}`),D},I&&(i.on(\"message\",D=>i.onmessage({data:D})),i.on(\"error\",D=>i.onerror(D)));var f=[],S=[\"onExit\"],O;for(O of S)a.hasOwnProperty(O)&&f.push(O);i.postMessage({cmd:\"load\",handlers:f,urlOrBlob:a.mainScriptUrlOrBlob||e,wasmMemory:Q,wasmModule:Z})})};a.PThread=de;var bt=i=>{for(;0{var i=Pr(),c=s()[i+52>>>2>>>0];i=s()[i+56>>>2>>>0],ho(c,c-i),kr(c)};function Zt(i){if($)return Oe(1,0,i);Nt(i)}a.invokeEntryPoint=(i,c)=>{i=go.apply(null,[i,c]),0>>2>>>0]=c},this.rb=function(c){s()[this.gb+8>>>2>>>0]=c},this.hb=function(c,f){this.qb(),this.sb(c),this.rb(f)},this.qb=function(){s()[this.gb+16>>>2>>>0]=0}}var $r=0,Qt=0;function Sr(i,c,f,S){return $?Oe(2,1,i,c,f,S):xr(i,c,f,S)}function xr(i,c,f,S){if(i>>>=0,c>>>=0,f>>>=0,S>>>=0,typeof SharedArrayBuffer>\"u\")return K(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\"),6;var O=[];return $&&O.length===0?Sr(i,c,f,S):(i={Db:f,Xa:i,tb:S,Jb:O},$?(i.Lb=\"spawnThread\",postMessage(i,O),0):Kt(i))}function _r(i,c,f){return $?Oe(3,1,i,c,f):0}function Cr(i,c){if($)return Oe(4,1,i,c)}var Xt=i=>{for(var c=0,f=0;f=S?c++:2047>=S?c+=2:55296<=S&&57343>=S?(c+=4,++f):c+=3}return c},Ir=(i,c,f,S)=>{if(f>>>=0,!(0=W){var ie=i.charCodeAt(++D);W=65536+((W&1023)<<10)|ie&1023}if(127>=W){if(f>=S)break;c[f++>>>0]=W}else{if(2047>=W){if(f+1>=S)break;c[f++>>>0]=192|W>>6}else{if(65535>=W){if(f+2>=S)break;c[f++>>>0]=224|W>>12}else{if(f+3>=S)break;c[f++>>>0]=240|W>>18,c[f++>>>0]=128|W>>12&63}c[f++>>>0]=128|W>>6&63}c[f++>>>0]=128|W&63}}return c[f>>>0]=0,f-O},ae=(i,c,f)=>Ir(i,o(),c,f);function Jt(i,c){if($)return Oe(5,1,i,c)}function Wt(i,c,f){if($)return Oe(6,1,i,c,f)}function er(i,c,f){return $?Oe(7,1,i,c,f):0}function tr(i,c){if($)return Oe(8,1,i,c)}function rr(i,c,f){if($)return Oe(9,1,i,c,f)}function nr(i,c,f,S){if($)return Oe(10,1,i,c,f,S)}function or(i,c,f,S){if($)return Oe(11,1,i,c,f,S)}function ar(i,c,f,S){if($)return Oe(12,1,i,c,f,S)}function ir(i){if($)return Oe(13,1,i)}function sr(i,c){if($)return Oe(14,1,i,c)}function ur(i,c,f){if($)return Oe(15,1,i,c,f)}var Ar=()=>{if(!(0>>=0,typeof Atomics.Kb==\"function\"&&(Atomics.Kb(n(),i>>>2,i).value.then(Et),i+=128,Atomics.store(n(),i>>>2,1))}a.__emscripten_thread_mailbox_await=xt;var Et=()=>{var i=Pr();if(i&&(xt(i),!Ee))try{mo(),Ar()}catch(c){St(c)}};a.checkMailbox=Et;var d=[],m=i=>i%4===0&&(i%100!==0||i%400===0),v=[0,31,60,91,121,152,182,213,244,274,305,335],C=[0,31,59,90,120,151,181,212,243,273,304,334];function B(i,c,f,S,O,D,W,ie){return $?Oe(16,1,i,c,f,S,O,D,W,ie):-52}function H(i,c,f,S,O,D,W){if($)return Oe(17,1,i,c,f,S,O,D,W)}var q=i=>{var c=Xt(i)+1,f=ln(c);return f&&ae(i,f,c),f},le=[],J=(i,c)=>{le.length=0;for(var f;f=o()[i++>>>0];){var S=f!=105;S&=f!=112,c+=S&&c%8?4:0,le.push(f==112?s()[c>>>2>>>0]:f==105?n()[c>>>2>>>0]:l()[c>>>3>>>0]),c+=S?8:4}return le},re={},se=()=>{if(!we){var i={USER:\"web_user\",LOGNAME:\"web_user\",PATH:\"/\",PWD:\"/\",HOME:\"/home/web_user\",LANG:(typeof navigator==\"object\"&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\",_:b||\"./this.program\"},c;for(c in re)re[c]===void 0?delete i[c]:i[c]=re[c];var f=[];for(c in i)f.push(`${c}=${i[c]}`);we=f}return we},we;function _e(i,c){if($)return Oe(18,1,i,c);i>>>=0,c>>>=0;var f=0;return se().forEach((S,O)=>{var D=c+f;for(O=s()[i+4*O>>>2>>>0]=D,D=0;D>>0>>>0]=S.charCodeAt(D);r()[O>>>0>>>0]=0,f+=S.length+1}),0}function P(i,c){if($)return Oe(19,1,i,c);i>>>=0,c>>>=0;var f=se();s()[i>>>2>>>0]=f.length;var S=0;return f.forEach(O=>S+=O.length+1),s()[c>>>2>>>0]=S,0}function ue(i){return $?Oe(20,1,i):52}function Se(i,c,f,S){return $?Oe(21,1,i,c,f,S):52}function st(i,c,f,S,O){return $?Oe(22,1,i,c,f,S,O):70}var Tr=[null,[],[]];function to(i,c,f,S){if($)return Oe(23,1,i,c,f,S);c>>>=0,f>>>=0,S>>>=0;for(var O=0,D=0;D>>2>>>0],ie=s()[c+4>>>2>>>0];c+=8;for(var ne=0;ne>>0],pe=Tr[i];oe===0||oe===10?((i===1?Y:K)(Vt(pe,0)),pe.length=0):pe.push(oe)}O+=ie}return s()[S>>>2>>>0]=O,0}var ro=[31,29,31,30,31,30,31,31,30,31,30,31],no=[31,28,31,30,31,30,31,31,30,31,30,31];function Pu(i){var c=Array(Xt(i)+1);return Ir(i,c,0,c.length),c}var ku=(i,c)=>{r().set(i,c>>>0)};function oo(i,c,f,S){function O(k,me,Ce){for(k=typeof k==\"number\"?k.toString():k||\"\";k.lengthSo?-1:0Ot-k.getDate())me-=Ot-k.getDate()+1,k.setDate(1),11>Ce?k.setMonth(Ce+1):(k.setMonth(0),k.setFullYear(k.getFullYear()+1));else{k.setDate(k.getDate()+me);break}}return Ce=new Date(k.getFullYear()+1,0,4),me=ie(new Date(k.getFullYear(),0,4)),Ce=ie(Ce),0>=W(me,k)?0>=W(Ce,k)?k.getFullYear()+1:k.getFullYear():k.getFullYear()-1}i>>>=0,c>>>=0,f>>>=0,S>>>=0;var oe=s()[S+40>>>2>>>0];S={Hb:n()[S>>>2>>>0],Gb:n()[S+4>>>2>>>0],eb:n()[S+8>>>2>>>0],jb:n()[S+12>>>2>>>0],fb:n()[S+16>>>2>>>0],ab:n()[S+20>>>2>>>0],Wa:n()[S+24>>>2>>>0],$a:n()[S+28>>>2>>>0],Ob:n()[S+32>>>2>>>0],Fb:n()[S+36>>>2>>>0],Ib:oe?Ye(oe):\"\"},f=Ye(f),oe={\"%c\":\"%a %b %d %H:%M:%S %Y\",\"%D\":\"%m/%d/%y\",\"%F\":\"%Y-%m-%d\",\"%h\":\"%b\",\"%r\":\"%I:%M:%S %p\",\"%R\":\"%H:%M\",\"%T\":\"%H:%M:%S\",\"%x\":\"%m/%d/%y\",\"%X\":\"%H:%M:%S\",\"%Ec\":\"%c\",\"%EC\":\"%C\",\"%Ex\":\"%m/%d/%y\",\"%EX\":\"%H:%M:%S\",\"%Ey\":\"%y\",\"%EY\":\"%Y\",\"%Od\":\"%d\",\"%Oe\":\"%e\",\"%OH\":\"%H\",\"%OI\":\"%I\",\"%Om\":\"%m\",\"%OM\":\"%M\",\"%OS\":\"%S\",\"%Ou\":\"%u\",\"%OU\":\"%U\",\"%OV\":\"%V\",\"%Ow\":\"%w\",\"%OW\":\"%W\",\"%Oy\":\"%y\"};for(var pe in oe)f=f.replace(new RegExp(pe,\"g\"),oe[pe]);var xe=\"Sunday Monday Tuesday Wednesday Thursday Friday Saturday\".split(\" \"),Te=\"January February March April May June July August September October November December\".split(\" \");oe={\"%a\":k=>xe[k.Wa].substring(0,3),\"%A\":k=>xe[k.Wa],\"%b\":k=>Te[k.fb].substring(0,3),\"%B\":k=>Te[k.fb],\"%C\":k=>D((k.ab+1900)/100|0,2),\"%d\":k=>D(k.jb,2),\"%e\":k=>O(k.jb,2,\" \"),\"%g\":k=>ne(k).toString().substring(2),\"%G\":k=>ne(k),\"%H\":k=>D(k.eb,2),\"%I\":k=>(k=k.eb,k==0?k=12:12{for(var me=0,Ce=0;Ce<=k.fb-1;me+=(m(k.ab+1900)?ro:no)[Ce++]);return D(k.jb+me,3)},\"%m\":k=>D(k.fb+1,2),\"%M\":k=>D(k.Gb,2),\"%n\":()=>`\\n`,\"%p\":k=>0<=k.eb&&12>k.eb?\"AM\":\"PM\",\"%S\":k=>D(k.Hb,2),\"%t\":()=>\"\t\",\"%u\":k=>k.Wa||7,\"%U\":k=>D(Math.floor((k.$a+7-k.Wa)/7),2),\"%V\":k=>{var me=Math.floor((k.$a+7-(k.Wa+6)%7)/7);if(2>=(k.Wa+371-k.$a-2)%7&&me++,me)me==53&&(Ce=(k.Wa+371-k.$a)%7,Ce==4||Ce==3&&m(k.ab)||(me=1));else{me=52;var Ce=(k.Wa+7-k.$a-1)%7;(Ce==4||Ce==5&&m(k.ab%400-1))&&me++}return D(me,2)},\"%w\":k=>k.Wa,\"%W\":k=>D(Math.floor((k.$a+7-(k.Wa+6)%7)/7),2),\"%y\":k=>(k.ab+1900).toString().substring(2),\"%Y\":k=>k.ab+1900,\"%z\":k=>{k=k.Fb;var me=0<=k;return k=Math.abs(k)/60,(me?\"+\":\"-\")+(\"0000\"+(k/60*100+k%60)).slice(-4)},\"%Z\":k=>k.Ib,\"%%\":()=>\"%\"},f=f.replace(/%%/g,\"\\\\0\\\\0\");for(pe in oe)f.includes(pe)&&(f=f.replace(new RegExp(pe,\"g\"),oe[pe](S)));return f=f.replace(/\\\\0\\\\0/g,\"%\"),pe=Pu(f),pe.length>c?0:(ku(pe,i),pe.length-1)}var Er=i=>{try{i()}catch(c){rt(c)}};function Ru(){var i=X,c={};for(let[f,S]of Object.entries(i))c[f]=typeof S==\"function\"?function(){Or.push(f);try{return S.apply(null,arguments)}finally{Ee||(Or.pop(),ut&&_t===1&&Or.length===0&&(_t=0,nt+=1,Er(bo),typeof Fibers<\"u\"&&Fibers.Pb()))}}:S;return c}var _t=0,ut=null,ao=0,Or=[],io={},so={},Bu=0,dn=null,Du=[];function Mu(){return new Promise((i,c)=>{dn={resolve:i,reject:c}})}function zu(){var i=ln(65548),c=i+12;s()[i>>>2>>>0]=c,s()[i+4>>>2>>>0]=c+65536,c=Or[0];var f=io[c];return f===void 0&&(f=Bu++,io[c]=f,so[f]=c),c=f,n()[i+8>>>2>>>0]=c,i}function Uu(){var i=n()[ut+8>>>2>>>0];return i=X[so[i]],--nt,i()}function Vu(i){if(!Ee){if(_t===0){var c=!1,f=!1;i((S=0)=>{if(!Ee&&(ao=S,c=!0,f)){_t=2,Er(()=>wo(ut)),typeof Browser<\"u\"&&Browser.ib.vb&&Browser.ib.resume(),S=!1;try{var O=Uu()}catch(ie){O=ie,S=!0}var D=!1;if(!ut){var W=dn;W&&(dn=null,(S?W.reject:W.resolve)(O),D=!0)}if(S&&!D)throw O}}),f=!0,c||(_t=1,ut=zu(),typeof Browser<\"u\"&&Browser.ib.vb&&Browser.ib.pause(),Er(()=>yo(ut)))}else _t===2?(_t=0,Er(vo),lo(ut),ut=null,Du.forEach(S=>{if(!Ee)try{S(),Ar()}catch(O){St(O)}})):rt(`invalid state: ${_t}`);return ao}}function Nu(i){return Vu(c=>{i().then(c)})}de.hb();var Wu=[wr,Zt,Sr,_r,Cr,Jt,Wt,er,tr,rr,nr,or,ar,ir,sr,ur,B,H,_e,P,ue,Se,st,to],Hu={r:function(i,c,f){return Nu(async()=>{await a.xb(i,c,f)})},b:function(i,c,f){throw i>>>=0,new vr(i).hb(c>>>0,f>>>0),$r=i,Qt++,$r},N:function(i){co(i>>>0,!_,1,!y,131072,!1),de.ob()},l:function(i){i>>>=0,$?postMessage({cmd:\"cleanupThread\",thread:i}):de.mb(de.Qa[i])},J:xr,i:_r,T:Cr,F:Jt,H:Wt,U:er,R:tr,L:rr,Q:nr,p:or,G:ar,D:ir,S:sr,E:ur,q:()=>1,B:function(i,c){i>>>=0,i==c>>>0?setTimeout(()=>Et()):$?postMessage({targetThread:i,cmd:\"checkMailbox\"}):(i=de.Qa[i])&&i.postMessage({cmd:\"checkMailbox\"})},K:function(i,c,f,S){c>>>=0,d.length=f,S=S>>>0>>>3;for(var O=0;O>>0];return i=0>i?zt[-i-1]:Wu[i],de.ub=c,c=i.apply(null,d),de.ub=0,c},M:xt,W:function(i){I&&de.Qa[i>>>0].ref()},u:function(i,c,f){i=c+2097152>>>0<4194305-!!i?(i>>>0)+4294967296*c:NaN,f>>>=0,i=new Date(1e3*i),n()[f>>>2>>>0]=i.getUTCSeconds(),n()[f+4>>>2>>>0]=i.getUTCMinutes(),n()[f+8>>>2>>>0]=i.getUTCHours(),n()[f+12>>>2>>>0]=i.getUTCDate(),n()[f+16>>>2>>>0]=i.getUTCMonth(),n()[f+20>>>2>>>0]=i.getUTCFullYear()-1900,n()[f+24>>>2>>>0]=i.getUTCDay(),i=(i.getTime()-Date.UTC(i.getUTCFullYear(),0,1,0,0,0,0))/864e5|0,n()[f+28>>>2>>>0]=i},v:function(i,c,f){i=c+2097152>>>0<4194305-!!i?(i>>>0)+4294967296*c:NaN,f>>>=0,i=new Date(1e3*i),n()[f>>>2>>>0]=i.getSeconds(),n()[f+4>>>2>>>0]=i.getMinutes(),n()[f+8>>>2>>>0]=i.getHours(),n()[f+12>>>2>>>0]=i.getDate(),n()[f+16>>>2>>>0]=i.getMonth(),n()[f+20>>>2>>>0]=i.getFullYear()-1900,n()[f+24>>>2>>>0]=i.getDay(),c=(m(i.getFullYear())?v:C)[i.getMonth()]+i.getDate()-1|0,n()[f+28>>>2>>>0]=c,n()[f+36>>>2>>>0]=-(60*i.getTimezoneOffset()),c=new Date(i.getFullYear(),6,1).getTimezoneOffset();var S=new Date(i.getFullYear(),0,1).getTimezoneOffset();i=(c!=S&&i.getTimezoneOffset()==Math.min(S,c))|0,n()[f+32>>>2>>>0]=i},w:function(i){i>>>=0;var c=new Date(n()[i+20>>>2>>>0]+1900,n()[i+16>>>2>>>0],n()[i+12>>>2>>>0],n()[i+8>>>2>>>0],n()[i+4>>>2>>>0],n()[i>>>2>>>0],0),f=n()[i+32>>>2>>>0],S=c.getTimezoneOffset(),O=new Date(c.getFullYear(),6,1).getTimezoneOffset(),D=new Date(c.getFullYear(),0,1).getTimezoneOffset(),W=Math.min(D,O);return 0>f?n()[i+32>>>2>>>0]=+(O!=D&&W==S):0>>2>>>0]=c.getDay(),f=(m(c.getFullYear())?v:C)[c.getMonth()]+c.getDate()-1|0,n()[i+28>>>2>>>0]=f,n()[i>>>2>>>0]=c.getSeconds(),n()[i+4>>>2>>>0]=c.getMinutes(),n()[i+8>>>2>>>0]=c.getHours(),n()[i+12>>>2>>>0]=c.getDate(),n()[i+16>>>2>>>0]=c.getMonth(),n()[i+20>>>2>>>0]=c.getYear(),i=c.getTime(),isNaN(i)?(n()[uo()>>>2>>>0]=61,i=-1):i/=1e3,fo((yt=i,1<=+Math.abs(yt)?0>>0:~~+Math.ceil((yt-+(~~yt>>>0))/4294967296)>>>0:0)),i>>>0},s:B,t:H,A:function(i,c,f){function S(oe){return(oe=oe.toTimeString().match(/\\\\(([A-Za-z ]+)\\\\)$/))?oe[1]:\"GMT\"}i>>>=0,c>>>=0,f>>>=0;var O=new Date().getFullYear(),D=new Date(O,0,1),W=new Date(O,6,1);O=D.getTimezoneOffset();var ie=W.getTimezoneOffset(),ne=Math.max(O,ie);s()[i>>>2>>>0]=60*ne,n()[c>>>2>>>0]=+(O!=ie),i=S(D),c=S(W),i=q(i),c=q(c),ie>>2>>>0]=i,s()[f+4>>>2>>>0]=c):(s()[f>>>2>>>0]=c,s()[f+4>>>2>>>0]=i)},d:()=>{rt(\"\")},c:function(i,c,f){return i>>>=0,c=J(c>>>0,f>>>0),zt[i].apply(null,c)},k:function(i,c,f){return i>>>=0,c=J(c>>>0,f>>>0),zt[i].apply(null,c)},m:()=>{},j:()=>Date.now(),V:()=>{throw nt+=1,\"unwind\"},C:function(){return 4294901760},f:()=>performance.timeOrigin+performance.now(),g:()=>I?(Oo(),Ht(Eo)).cpus().length:navigator.hardwareConcurrency,y:function(i){i>>>=0;var c=o().length;if(i<=c||4294901760=f;f*=2){var S=c*(1+.2/f);S=Math.min(S,i+100663296);var O=Math;S=Math.max(i,S);e:{O=(O.min.call(O,4294901760,S+(65536-S%65536)%65536)-Q.buffer.byteLength+65535)/65536;try{Q.grow(O),Ge();var D=1;break e}catch{}D=void 0}if(D)return!0}return!1},O:_e,P,I:Nt,h:ue,o:Se,x:st,n:to,a:Q||a.wasmMemory,z:oo,e:function(i,c,f,S){return oo(i>>>0,c>>>0,f>>>0,S>>>0)}},X=function(){function i(f,S){return X=f.exports,X=Ru(),X=Gu(),de.pb.push(X.Da),be.unshift(X.X),Z=S,wt(),X}var c={a:Hu};if(ze++,a.instantiateWasm)try{return a.instantiateWasm(c,i)}catch(f){K(`Module.instantiateWasm callback failed with error: ${f}`),h(f)}return $t(c,function(f){i(f.instance,f.module)}).catch(h),{}}();a._OrtInit=(i,c)=>(a._OrtInit=X.Y)(i,c),a._OrtGetLastError=(i,c)=>(a._OrtGetLastError=X.Z)(i,c),a._OrtCreateSessionOptions=(i,c,f,S,O,D,W,ie,ne,oe)=>(a._OrtCreateSessionOptions=X._)(i,c,f,S,O,D,W,ie,ne,oe),a._OrtAppendExecutionProvider=(i,c)=>(a._OrtAppendExecutionProvider=X.$)(i,c),a._OrtAddFreeDimensionOverride=(i,c,f)=>(a._OrtAddFreeDimensionOverride=X.aa)(i,c,f),a._OrtAddSessionConfigEntry=(i,c,f)=>(a._OrtAddSessionConfigEntry=X.ba)(i,c,f),a._OrtReleaseSessionOptions=i=>(a._OrtReleaseSessionOptions=X.ca)(i),a._OrtCreateSession=(i,c,f)=>(a._OrtCreateSession=X.da)(i,c,f),a._OrtReleaseSession=i=>(a._OrtReleaseSession=X.ea)(i),a._OrtGetInputOutputCount=(i,c,f)=>(a._OrtGetInputOutputCount=X.fa)(i,c,f),a._OrtGetInputName=(i,c)=>(a._OrtGetInputName=X.ga)(i,c),a._OrtGetOutputName=(i,c)=>(a._OrtGetOutputName=X.ha)(i,c),a._OrtFree=i=>(a._OrtFree=X.ia)(i),a._OrtCreateTensor=(i,c,f,S,O,D)=>(a._OrtCreateTensor=X.ja)(i,c,f,S,O,D),a._OrtGetTensorData=(i,c,f,S,O)=>(a._OrtGetTensorData=X.ka)(i,c,f,S,O),a._OrtReleaseTensor=i=>(a._OrtReleaseTensor=X.la)(i),a._OrtCreateRunOptions=(i,c,f,S)=>(a._OrtCreateRunOptions=X.ma)(i,c,f,S),a._OrtAddRunConfigEntry=(i,c,f)=>(a._OrtAddRunConfigEntry=X.na)(i,c,f),a._OrtReleaseRunOptions=i=>(a._OrtReleaseRunOptions=X.oa)(i),a._OrtCreateBinding=i=>(a._OrtCreateBinding=X.pa)(i),a._OrtBindInput=(i,c,f)=>(a._OrtBindInput=X.qa)(i,c,f),a._OrtBindOutput=(i,c,f,S)=>(a._OrtBindOutput=X.ra)(i,c,f,S),a._OrtClearBoundOutputs=i=>(a._OrtClearBoundOutputs=X.sa)(i),a._OrtReleaseBinding=i=>(a._OrtReleaseBinding=X.ta)(i),a._OrtRunWithBinding=(i,c,f,S,O)=>(a._OrtRunWithBinding=X.ua)(i,c,f,S,O),a._OrtRun=(i,c,f,S,O,D,W,ie)=>(a._OrtRun=X.va)(i,c,f,S,O,D,W,ie),a._OrtEndProfiling=i=>(a._OrtEndProfiling=X.wa)(i),a._JsepOutput=(i,c,f)=>(a._JsepOutput=X.xa)(i,c,f),a._JsepGetNodeName=i=>(a._JsepGetNodeName=X.ya)(i);var uo=()=>(uo=X.za)(),Pr=a._pthread_self=()=>(Pr=a._pthread_self=X.Aa)(),ln=a._malloc=i=>(ln=a._malloc=X.Ba)(i),lo=a._free=i=>(lo=a._free=X.Ca)(i);a.__emscripten_tls_init=()=>(a.__emscripten_tls_init=X.Da)();var co=a.__emscripten_thread_init=(i,c,f,S,O,D)=>(co=a.__emscripten_thread_init=X.Fa)(i,c,f,S,O,D);a.__emscripten_thread_crashed=()=>(a.__emscripten_thread_crashed=X.Ga)();var po=(i,c,f,S)=>(po=X.Ha)(i,c,f,S),cn=i=>(cn=X.Ia)(i),pn=a.__emscripten_thread_exit=i=>(pn=a.__emscripten_thread_exit=X.Ja)(i),mo=()=>(mo=X.Ka)(),fo=i=>(fo=X.La)(i),ho=(i,c)=>(ho=X.Ma)(i,c),mn=()=>(mn=X.Na)(),kr=i=>(kr=X.Oa)(i),fn=i=>(fn=X.Pa)(i),go=a.dynCall_ii=(i,c)=>(go=a.dynCall_ii=X.Ra)(i,c),yo=i=>(yo=X.Sa)(i),bo=()=>(bo=X.Ta)(),wo=i=>(wo=X.Ua)(i),vo=()=>(vo=X.Va)();a.___start_em_js=944472,a.___stop_em_js=944633;function Gu(){var i=X;i=Object.assign({},i);var c=S=>()=>S()>>>0,f=S=>O=>S(O)>>>0;return i.za=c(i.za),i.Aa=c(i.Aa),i.Ba=f(i.Ba),i.emscripten_main_runtime_thread_id=c(i.emscripten_main_runtime_thread_id),i.Na=c(i.Na),i.Pa=f(i.Pa),i}a.wasmMemory=Q,a.stackAlloc=fn,a.stackSave=mn,a.stackRestore=kr,a.keepRuntimeAlive=()=>0Po)});var Bo=dr((qc,Xu)=>{Xu.exports=\\'\"use strict\";var Module={},ENVIRONMENT_IS_NODE=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\";if(ENVIRONMENT_IS_NODE){var nodeWorkerThreads=require(\"worker_threads\"),parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",e=>onmessage({data:e}));var fs=require(\"fs\"),vm=require(\"vm\");Object.assign(global,{self:global,require,Module,location:{href:__filename},Worker:nodeWorkerThreads.Worker,importScripts:e=>vm.runInThisContext(fs.readFileSync(e,\"utf8\"),{filename:e}),postMessage:e=>parentPort.postMessage(e),performance:global.performance||{now:Date.now}})}var initializedJS=!1;function threadPrintErr(){var e=Array.prototype.slice.call(arguments).join(\" \");if(ENVIRONMENT_IS_NODE){fs.writeSync(2,e+`\\\\n`);return}console.error(e)}function threadAlert(){var e=Array.prototype.slice.call(arguments).join(\" \");postMessage({cmd:\"alert\",text:e,threadId:Module._pthread_self()})}var err=threadPrintErr;self.alert=threadAlert,Module.instantiateWasm=(e,t)=>{var a=Module.wasmModule;Module.wasmModule=null;var r=new WebAssembly.Instance(a,e);return t(r)},self.onunhandledrejection=e=>{throw e.reason||e};function handleMessage(e){try{if(e.data.cmd===\"load\"){let a=[];self.onmessage=r=>a.push(r),self.startWorker=r=>{Module=r,postMessage({cmd:\"loaded\"});for(let s of a)handleMessage(s);self.onmessage=handleMessage},Module.wasmModule=e.data.wasmModule;for(const r of e.data.handlers)Module[r]=(...s)=>{postMessage({cmd:\"callHandler\",handler:r,args:s})};if(Module.wasmMemory=e.data.wasmMemory,Module.buffer=Module.wasmMemory.buffer,Module.ENVIRONMENT_IS_PTHREAD=!0,typeof e.data.urlOrBlob==\"string\")importScripts(e.data.urlOrBlob);else{var t=URL.createObjectURL(e.data.urlOrBlob);importScripts(t),URL.revokeObjectURL(t)}ortWasmThreaded(Module)}else if(e.data.cmd===\"run\"){Module.__emscripten_thread_init(e.data.pthread_ptr,0,0,1),Module.__emscripten_thread_mailbox_await(e.data.pthread_ptr),Module.establishStackSpace(),Module.PThread.receiveObjectTransfer(e.data),Module.PThread.threadInitTLS(),initializedJS||(initializedJS=!0);try{Module.invokeEntryPoint(e.data.start_routine,e.data.arg)}catch(a){if(a!=\"unwind\")throw a}}else e.data.cmd===\"cancel\"?Module._pthread_self()&&Module.__emscripten_thread_exit(-1):e.data.target===\"setimmediate\"||(e.data.cmd===\"checkMailbox\"?initializedJS&&Module.checkMailbox():e.data.cmd&&(err(`worker.js received unknown command ${e.data.cmd}`),err(e.data)))}catch(a){throw Module.__emscripten_thread_crashed?.(),a}}self.onmessage=handleMessage;\\\\n\\'});var _n,Xe,cr,Mr,pr,No,Cn,Ne=j(()=>{\"use strict\";_n=e=>{switch(e){case\"int8\":return 3;case\"uint8\":return 2;case\"bool\":return 9;case\"int16\":return 5;case\"uint16\":return 4;case\"int32\":return 6;case\"uint32\":return 12;case\"float16\":return 10;case\"float32\":return 1;case\"float64\":return 11;case\"string\":return 8;case\"int64\":return 7;case\"uint64\":return 13;default:throw new Error(`unsupported data type: ${e}`)}},Xe=e=>{switch(e){case 3:return\"int8\";case 2:return\"uint8\";case 9:return\"bool\";case 5:return\"int16\";case 4:return\"uint16\";case 6:return\"int32\";case 12:return\"uint32\";case 10:return\"float16\";case 1:return\"float32\";case 11:return\"float64\";case 8:return\"string\";case 7:return\"int64\";case 13:return\"uint64\";default:throw new Error(`unsupported data type: ${e}`)}},cr=e=>[void 0,4,1,1,2,2,4,8,void 0,1,2,8,4,8,void 0,void 0,void 0][e],Mr=e=>{switch(e){case\"float16\":return Uint16Array;case\"float32\":return Float32Array;case\"uint8\":return Uint8Array;case\"int8\":return Int8Array;case\"uint16\":return Uint16Array;case\"int16\":return Int16Array;case\"int32\":return Int32Array;case\"bool\":return Uint8Array;case\"float64\":return Float64Array;case\"uint32\":return Uint32Array;case\"int64\":return BigInt64Array;case\"uint64\":return BigUint64Array;default:throw new Error(`unsupported type: ${e}`)}},pr=e=>{switch(e){case\"verbose\":return 0;case\"info\":return 1;case\"warning\":return 2;case\"error\":return 3;case\"fatal\":return 4;default:throw new Error(`unsupported logging level: ${e}`)}},No=e=>e===\"float32\"||e===\"int32\"||e===\"int64\"||e===\"bool\"||e===\"float16\"||e===\"uint32\",Cn=e=>{switch(e){case\"none\":return 0;case\"cpu\":return 1;case\"cpu-pinned\":return 2;case\"texture\":return 3;case\"gpu-buffer\":return 4;default:throw new Error(`unsupported data location: ${e}`)}}});var zr=j(()=>{\"use strict\"});var Ho=j(()=>{\"use strict\";zr()});var Go,Lo=j(()=>{\"use strict\";Go=\"1.17.1\"});var Fo,Pt,In=j(()=>{\"use strict\";Lo();Fo=\"warning\",Pt={wasm:{},webgl:{},webgpu:{},versions:{common:Go},set logLevel(e){if(e!==void 0){if(typeof e!=\"string\"||[\"verbose\",\"info\",\"warning\",\"error\",\"fatal\"].indexOf(e)===-1)throw new Error(`Unsupported logging level: ${e}`);Fo=e}},get logLevel(){return Fo}};Object.defineProperty(Pt,\"logLevel\",{enumerable:!0})});var Gt,jo=j(()=>{\"use strict\";In();Gt=Pt});var qo=j(()=>{\"use strict\"});var Ko=j(()=>{\"use strict\";Ur()});var Zo=j(()=>{\"use strict\"});var Qo=j(()=>{\"use strict\";Ur()});var Ur=j(()=>{\"use strict\";qo();Ko();Zo();Qo()});var Vr=j(()=>{\"use strict\";Ur()});var An,Xo,kt,Rt,Tn=j(()=>{\"use strict\";In();An=(e,t)=>{Pt.wasm.trace&&console.timeStamp(`${e}::ORT::${t}`)},Xo=(e,t)=>{let r=new Error().stack?.split(/\\\\r\\\\n|\\\\r|\\\\n/g)||[],o=!1;for(let n=0;n{Pt.wasm.trace&&Xo(\"BEGIN\",e)},Rt=e=>{Pt.wasm.trace&&Xo(\"END\",e)}});var Jo=j(()=>{\"use strict\";zr();Vr();Tn()});var ea=j(()=>{\"use strict\";Jo()});var ta=j(()=>{\"use strict\"});var ra=j(()=>{\"use strict\";zr();Vr()});var na=j(()=>{\"use strict\";ra()});var Lt=j(()=>{\"use strict\";Ho();jo();ea();Vr();Tn();ta();na()});var dd,ld,oa,aa,ia,cd,Be,Ct=j(()=>{\"use strict\";Ne();dd=[\"V\",\"I\",\"W\",\"E\",\"F\"],ld=(e,t)=>{console.log(`[${dd[e]},${new Date().toISOString()}]${t}`)},ia=(e,t)=>{oa=e,aa=t},cd=(e,t)=>{let r=pr(e),o=pr(oa);r>=o&&ld(r,typeof t==\"function\"?t():t)},Be=(...e)=>{aa&&cd(...e)}});var sa,ua=j(()=>{\"use strict\";Ne();sa=(e,t)=>new(Mr(t))(e)});var Nr=j(()=>{\"use strict\"});var Wr,pd,da,On,En,ca,pa=j(()=>{\"use strict\";Ct();Nr();Wr=e=>Math.ceil(e/16)*16,pd=1,da=()=>pd++,On=async(e,t,r,o)=>{let n=Wr(r),s=e.device.createBuffer({size:n,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ});try{let u=e.getCommandEncoder();e.endComputePass(),u.copyBufferToBuffer(t,0,s,0,n),e.flush(),await s.mapAsync(GPUMapMode.READ);let l=s.getMappedRange();if(o){let a=o();return a.set(new Uint8Array(l,0,r)),a}else return new Uint8Array(l.slice(0,r))}finally{s.destroy()}},En=class{constructor(t){this.backend=t;this.storageCache=new Map,this.freeBuffers=new Map,this.freeUniformBuffers=new Map,this.buffersForUploadingPending=[],this.buffersPending=[],this.externalBuffers=new Map}upload(t,r){let o=r.buffer,n=r.byteOffset,s=r.byteLength,u=Wr(s),l=this.storageCache.get(t);if(!l)throw new Error(\"gpu data for uploading does not exist\");if(l.originalSize!==s)throw new Error(`inconsistent data size. gpu data size=${l.originalSize}, data size=${s}`);let a=this.backend.device.createBuffer({mappedAtCreation:!0,size:u,usage:GPUBufferUsage.MAP_WRITE|GPUBufferUsage.COPY_SRC}),p=a.getMappedRange();new Uint8Array(p).set(new Uint8Array(o,n,s)),a.unmap();let h=this.backend.getCommandEncoder();this.backend.endComputePass(),h.copyBufferToBuffer(a,0,l.gpuData.buffer,0,u),Be(\"verbose\",()=>`[WebGPU] GpuDataManager.upload(id=${t})`),this.buffersForUploadingPending.push(a)}memcpy(t,r){let o=this.storageCache.get(t);if(!o)throw new Error(\"source gpu data for memcpy does not exist\");let n=this.storageCache.get(r);if(!n)throw new Error(\"destination gpu data for memcpy does not exist\");if(o.originalSize!==n.originalSize)throw new Error(\"inconsistent source and destination gpu data size\");let s=Wr(o.originalSize),u=this.backend.getCommandEncoder();this.backend.endComputePass(),u.copyBufferToBuffer(o.gpuData.buffer,0,n.gpuData.buffer,0,s)}registerExternalBuffer(t,r,o){let n;if(o){if(n=this.externalBuffers.get(o),n===void 0)throw new Error(\"previous buffer is not registered\");if(t===o)return Be(\"verbose\",()=>`[WebGPU] GpuDataManager.registerExternalBuffer(size=${r}) => id=${n}, buffer is the same, skip.`),n;this.externalBuffers.delete(o)}else n=da();return this.storageCache.set(n,{gpuData:{id:n,type:0,buffer:t},originalSize:r}),this.externalBuffers.set(t,n),Be(\"verbose\",()=>`[WebGPU] GpuDataManager.registerExternalBuffer(size=${r}) => id=${n}, registered.`),n}unregisterExternalBuffer(t){let r=this.externalBuffers.get(t);r!==void 0&&(this.storageCache.delete(r),this.externalBuffers.delete(t),Be(\"verbose\",()=>`[WebGPU] GpuDataManager.unregisterExternalBuffer() => id=${r}`))}create(t,r=GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST){let o=Wr(t),n,s=(r&GPUBufferUsage.STORAGE)===GPUBufferUsage.STORAGE,u=(r&GPUBufferUsage.UNIFORM)===GPUBufferUsage.UNIFORM;if(s||u){let a=s?this.freeBuffers:this.freeUniformBuffers,p=a.get(o);p||(p=[],a.set(o,p)),p.length>0?n=p.pop():n=this.backend.device.createBuffer({size:o,usage:r})}else n=this.backend.device.createBuffer({size:o,usage:r});let l={id:da(),type:0,buffer:n};return this.storageCache.set(l.id,{gpuData:l,originalSize:t}),Be(\"verbose\",()=>`[WebGPU] GpuDataManager.create(size=${t}) => id=${l.id}`),l}get(t){return this.storageCache.get(t)?.gpuData}release(t){let r=this.storageCache.get(t);if(!r)throw new Error(\"releasing data does not exist\");return Be(\"verbose\",()=>`[WebGPU] GpuDataManager.release(id=${t}), gpuDataId=${r.gpuData.id}`),this.storageCache.delete(t),this.buffersPending.push(r.gpuData.buffer),r.originalSize}async download(t,r){let o=this.storageCache.get(t);if(!o)throw new Error(\"data does not exist\");await On(this.backend,o.gpuData.buffer,o.originalSize,r)}refreshPendingBuffers(){for(let t of this.buffersForUploadingPending)t.destroy();this.buffersForUploadingPending=[];for(let t of this.buffersPending)(t.usage&GPUBufferUsage.STORAGE)===GPUBufferUsage.STORAGE?this.freeBuffers.get(t.size).push(t):(t.usage&GPUBufferUsage.UNIFORM)===GPUBufferUsage.UNIFORM?this.freeUniformBuffers.get(t.size).push(t):t.destroy();this.buffersPending=[]}dispose(){this.freeBuffers.forEach(t=>{t.forEach(r=>{r.destroy()})}),this.freeUniformBuffers.forEach(t=>{t.forEach(r=>{r.destroy()})}),this.storageCache.forEach(t=>{t.gpuData.buffer.destroy()}),this.storageCache=new Map,this.freeBuffers=new Map,this.freeUniformBuffers=new Map}},ca=(...e)=>new En(...e)});var Pn,ge,je=j(()=>{\"use strict\";Pn=class{constructor(t){Object.assign(this,t)}get cacheKey(){return this.key||(this.key=Object.getOwnPropertyNames(this).sort().map(t=>`${this[t]}`).join(\";\")),this.key}},ge=e=>new Pn(e)});var kn,dt,U,Bt,Hr,Gr,Lr,$e=j(()=>{\"use strict\";kn=class{static calcMatMulShape(t,r){return t[1]!==r[0]?void 0:[t[0],r[1]]}},dt=class{static calcShape(t,r,o=!1){let n=t.length,s=r.length;if(n===0)return r;if(s===0)return t;let u=Math.max(t.length,r.length),l=new Array(u);if(o){if(n<2||s<2)return;let a=kn.calcMatMulShape([t[n-2],t[n-1]],[r[s-2],r[s-1]]);if(a===void 0)return;[l[u-2],l[u-1]]=a}for(let a=o?3:1;a<=u;a++){let p=n-a<0?1:t[n-a],h=s-a<0?1:r[s-a];if(p!==h&&p>1&&h>1)return;l[u-a]=Math.max(p,h)}return l}static isValidBroadcast(t,r){let o=t.length,n=r.length;if(o>n)return!1;for(let s=1;s<=o;s++)if(t[o-s]!==1&&t[o-s]!==r[n-s])return!1;return!0}},U=class e{static size(t){return e.getSizeFromDimensionRange(t,0,t.length)}static sizeFromDimension(t,r){if(r<0||r>t.length)throw new Error(`invalid dimension of ${r} for sizeFromDimension as Tensor has ${t.length} dimensions.`);return e.getSizeFromDimensionRange(t,r,t.length)}static sizeToDimension(t,r){if(r<0||r>t.length)throw new Error(`invalid dimension of ${r} for sizeToDimension as Tensor has ${t.length} dimensions.`);return e.getSizeFromDimensionRange(t,0,r)}static getSizeFromDimensionRange(t,r,o){let n=1;for(let s=r;s=0;--n)o[n]=o[n+1]*t[n+1];return o}static normalizeAxis(t,r){if(t<-r&&t>=r)throw new Error(\"unsupported axis for this operation.\");return t<0?t+r:t}static normalizeAxes(t,r){return t.map(o=>this.normalizeAxis(o,r??t.length))}static sortBasedOnPerm(t,r){return r?r.map(o=>t[o]):t.slice().reverse()}static padShape(t,r){let o=t.length;return t.map((n,s)=>n+r[s]+r[s+o])}static areEqual(t,r){return t.length!==r.length?!1:t.every((o,n)=>o===r[n])}},Bt=class e{static adjustPoolAttributes(t,r,o,n,s,u){if(!t&&o.length!==r.length-2)throw new Error(\"length of specified kernel shapes should be 2 less than length of input dimensions\");if(t)for(let l=0;l=o.length?o.push(r[l+2]):o[l]=r[l+2];for(let l=0;l=o[l]||u[l+o.length]>=o[l])throw new Error(\"pads should be smaller than kernel\")}}static adjustPadsBasedOnAutoPad(t,r,o,n,s,u,l){if(l){if(s.length!==2*(t.length-2))throw new Error(\"length of pads should be twice the length of data dimensions\");if(r.length!==t.length-2)throw new Error(\"length of strides should be the length of data dimensions\");if(n.length!==t.length-2)throw new Error(\"length of kernel shapes should be the length of data dimensions\");for(let a=0;a{\"use strict\";Ne();$e();md=64,Bn=(e,t)=>{if(t===3)throw new Error(\"vec3 has same alignment as vec4, use vec4 instead\");switch(e){case 10:return t>1?`vec${t}`:\"f16\";case 1:return t>1?`vec${t}`:\"f32\";case 6:return t>1?`vec${t}`:\"i32\";case 12:return t>1?`vec${t}`:\"u32\";case 7:if(t>1)throw new Error(\"currently not supported vecX of uint64 yet\");return[\"vec2\",\"i32\"];case 13:if(t>1)throw new Error(\"currently not supported vecX of uint64 yet\");return[\"vec2\",\"u32\"];case 9:if(t!==4)throw new Error(\"bool must be vec4\");return[\"u32\",\"vec4\"];default:throw new Error(`Unknown data type: ${e}`)}},Le=(e,t=1)=>{let r=Bn(e,t);return typeof r==\"string\"?r:r[0]},lt=(e,t=1)=>{let r=Bn(e,t);return typeof r==\"string\"?r:r[1]},L=e=>e.length===0?[]:[{type:\"uint32\",data:e},{type:\"uint32\",data:U.computeStrides(e)}],Fe=e=>e%4===0?4:e%2===0?2:1,Ze=(e=\"f32\",t,r=\"0\")=>!t||t===1?`${e}(${r})`:`vec${t}<${e}>(${r})`,at=(e,t,r)=>e===\"f32\"?r:t===1?`f32(${r})`:`vec${t}f(${r})`,Je=(e,t)=>t===4?`(${e}.x + ${e}.y + ${e}.z + ${e}.w)`:t===2?`(${e}.x + ${e}.y)`:t===3?`(${e}.x + ${e}.y + ${e}.z)`:e,ce=(e,t,r)=>e.startsWith(\"uniforms.\")&&r>4?typeof t==\"string\"?`${e}[(${t}) / 4][(${t}) % 4]`:`${e}[${Math.floor(t/4)}][${t%4}]`:r>1?`${e}[${t}]`:e,Dn=(e,t,r,o,n)=>{let s=typeof r==\"number\",u=s?r:r.length,l=[...new Array(u).keys()],a=u<2?\"u32\":u<=4?`vec${u}`:`array`,p=Bn(t,n),h=typeof p==\"string\"?p:p[1],g=typeof p==\"string\"?p:p[0],b={indices:a,value:h,storage:g,tensor:t},w=G=>typeof G==\"string\"?G:`${G}u`,y={offsetToIndices:!1,indicesToOffset:!1,broadcastedIndicesToOffset:!1,set:!1,setByIndices:!1,get:!1,getByIndices:!1},_=s?\"uniforms.\":\"\",I=`${_}${e}_shape`,$=`${_}${e}_strides`,x=\"\";for(let G=0;G ${b.indices} {\\n var indices: ${b.indices};\\n var current = offset;\\n ${x}\\n return indices;\\n }`,A=G=>(y.offsetToIndices=!0,u<2?G:`o2i_${e}(${G})`),z=[];if(u>=2)for(let G=u-1;G>=0;G--)z.push(`${ce($,G,u)} * (indices[${G}])`);let R=u<2?\"\":`\\n fn i2o_${e}(indices: ${b.indices}) -> u32 {\\n return ${z.join(\"+\")};\\n }`,V=G=>(y.indicesToOffset=!0,u<2?G:`i2o_${e}(${G})`),T=(...G)=>u===0?\"0u\":`${b.indices}(${G.map(w).join(\",\")})`,N=(G,ee)=>u<2?`${G}`:`${ce(G,ee,u)}`,te=(G,ee,be)=>u<2?`${G}=${be};`:`${ce(G,ee,u)}=${be};`,Y={},K=(G,ee)=>{y.broadcastedIndicesToOffset=!0;let be=`${ee.name}broadcastedIndicesTo${e}Offset`;if(be in Y)return`${be}(${G})`;let et=[];for(let ze=u-1;ze>=0;ze--){let Ue=ee.indicesGet(\"outputIndices\",ze+ee.rank-u);et.push(`${N($,ze)} * (${Ue} % ${N(I,ze)})`)}return Y[be]=`fn ${be}(outputIndices: ${ee.type.indices}) -> u32 {\\n return ${et.length>0?et.join(\"+\"):\"0u\"};\\n }`,`${be}(${G})`},Q=(G,ee)=>(()=>{if(b.storage===b.value)return`${e}[${G}]=${ee};`;if(b.storage===\"vec2\"&&b.value===\"i32\")return`${e}[${G}]=vec2(u32(${ee}), select(0u, 0xFFFFFFFFu, ${ee} < 0));`;if(b.storage===\"vec2\"&&b.value===\"u32\")return`${e}[${G}]=vec2(u32(${ee}), 0u);`;if(b.storage===\"u32\"&&b.value===\"vec4\")return`${e}[${G}]=dot(vec4(0x1, 0x100, 0x10000, 0x1000000), vec4(${ee}));`;throw new Error(`not supported combination of storage type ${b.storage} and value type ${b.value} yet`)})(),Z=G=>(()=>{if(b.storage===b.value)return`${e}[${G}]`;if(b.storage===\"vec2\"&&b.value===\"i32\")return`i32(${e}[${G}].x)`;if(b.storage===\"vec2\"&&b.value===\"u32\")return`u32(${e}[${G}].x)`;if(b.storage===\"u32\"&&b.value===\"vec4\")return`vec4(bool(${e}[${G}] & 0xFFu), bool(${e}[${G}] & 0xFF00u), bool(${e}[${G}] & 0xFF0000u), bool(${e}[${G}] & 0xFF000000u))`;throw new Error(`not supported combination of storage type ${b.storage} and value type ${b.value} yet`)})(),Ee=u<2?\"\":`\\n fn get_${e}ByIndices(indices: ${b.indices}) -> ${h} {\\n return ${Z(`i2o_${e}(indices)`)};\\n }`,Pe=u<2?\"\":(()=>{let G=l.map(be=>`d${be}: u32`).join(\", \"),ee=l.map(be=>`d${be}`).join(\", \");return`\\n fn get_${e}(${G}) -> ${h} {\\n return get_${e}ByIndices(${T(ee)});\\n }`})(),fe=(...G)=>{if(G.length!==u)throw new Error(`indices length must be ${u}`);let ee=G.map(w).join(\",\");return u===0?Z(\"0u\"):u===1?Z(ee[0]):(y.get=!0,y.getByIndices=!0,y.indicesToOffset=!0,`get_${e}(${ee})`)},Ie=G=>u<2?Z(G):(y.getByIndices=!0,y.indicesToOffset=!0,`get_${e}ByIndices(${G})`),he=u<2?\"\":`\\n fn set_${e}ByIndices(indices: ${b.indices}, value: ${h}) {\\n ${Q(`i2o_${e}(indices)`,\"value\")}\\n }`,ye=u<2?\"\":(()=>{let G=l.map(be=>`d${be}: u32`).join(\", \"),ee=l.map(be=>`d${be}`).join(\", \");return`\\n fn set_${e}(${G}, value: ${h}) {\\n set_${e}ByIndices(${T(ee)}, value);\\n }`})();return{impl:()=>{let G=[],ee=!1;return y.offsetToIndices&&(G.push(E),ee=!0),y.indicesToOffset&&(G.push(R),ee=!0),y.broadcastedIndicesToOffset&&(Object.values(Y).forEach(be=>G.push(be)),ee=!0),y.set&&(G.push(ye),ee=!0),y.setByIndices&&(G.push(he),ee=!0),y.get&&(G.push(Pe),ee=!0),y.getByIndices&&(G.push(Ee),ee=!0),!s&&ee&&G.unshift(`const ${I} = ${b.indices}(${r.join(\",\")});`,`const ${$} = ${b.indices}(${U.computeStrides(r).join(\",\")});`),G.join(`\\n`)},type:b,offsetToIndices:A,indicesToOffset:V,broadcastedIndicesToOffset:K,indices:T,indicesGet:N,indicesSet:te,set:(...G)=>{if(G.length!==u+1)throw new Error(`indices length must be ${u}`);let ee=G[u];if(typeof ee!=\"string\")throw new Error(\"value must be string\");let be=G.slice(0,u).map(w).join(\",\");return u===0?Q(\"0u\",ee):u===1?Q(be[0],ee):(y.set=!0,y.setByIndices=!0,y.indicesToOffset=!0,`set_${e}(${be}, ${ee})`)},setByOffset:Q,setByIndices:(G,ee)=>u<2?Q(G,ee):(y.setByIndices=!0,y.indicesToOffset=!0,`set_${e}ByIndices(${G}, ${ee});`),get:fe,getByOffset:Z,getByIndices:Ie,usage:o,name:e,strides:$,shape:I,rank:u}},M=(e,t,r,o=1)=>Dn(e,t,r,\"input\",o),F=(e,t,r,o=1)=>Dn(e,t,r,\"output\",o),Fr=(e,t,r,o=1)=>Dn(e,t,r,\"internal\",o),Rn=class{constructor(t){this.normalizedDispatchGroup=t;this.internalVariables=[];this.variables=[];this.uniforms=[];this.variableIndex=0}guardAgainstOutOfBoundsWorkgroupSizes(t){return`if (global_idx >= ${typeof t==\"number\"?`${t}u`:t}) { return; }`}mainStart(t=md){let r=typeof t==\"number\"?t:t[0],o=typeof t==\"number\"?1:t[1],n=typeof t==\"number\"?1:t[2],s=this.normalizedDispatchGroup[1]===1&&this.normalizedDispatchGroup[2]===1,u=s?`@builtin(global_invocation_id) global_id : vec3,\\n @builtin(workgroup_id) workgroup_id : vec3,\\n @builtin(local_invocation_id) local_id : vec3`:`@builtin(local_invocation_id) local_id : vec3,\\n @builtin(local_invocation_index) local_idx : u32,\\n @builtin(workgroup_id) workgroup_id : vec3,\\n @builtin(num_workgroups) num_workgroups : vec3`,l=s?\"let global_idx = global_id.x; let local_idx = local_id.x;\":`let global_idx = (workgroup_id.z * num_workgroups[0] * num_workgroups[1] +\\n workgroup_id.y * num_workgroups[0] + workgroup_id.x) * ${r*o*n}u + local_idx;`;return`@compute @workgroup_size(${r}, ${o}, ${n})\\n fn main(${u}) {\\n ${l}\\n `}appendVariableUniforms(t){t.rank!==0&&(t.shape.startsWith(\"uniforms.\")&&this.uniforms.push({name:t.shape.replace(\"uniforms.\",\"\"),type:\"u32\",length:t.rank}),t.strides.startsWith(\"uniforms.\")&&this.uniforms.push({name:t.strides.replace(\"uniforms.\",\"\"),type:\"u32\",length:t.rank}))}declareVariable(t,r){if(t.usage===\"internal\")throw new Error(\"cannot use internal variable with declareVariable(). use registerInternalVariables() instead.\");this.variables.push(t),this.appendVariableUniforms(t);let o=t.usage===\"input\"?\"read\":\"read_write\",n=t.type.storage;return`@group(0) @binding(${r}) var ${t.name}: array<${n}>;`}declareVariables(...t){return t.map(r=>this.declareVariable(r,this.variableIndex++)).join(`\\n`)}registerInternalVariable(t){if(t.usage!==\"internal\")throw new Error(\"cannot use input or output variable with registerInternalVariable(). use declareVariables() instead.\");this.internalVariables.push(t),this.appendVariableUniforms(t)}registerInternalVariables(...t){return t.forEach(r=>this.registerInternalVariable(r)),this}registerUniform(t,r,o=1){return this.uniforms.push({name:t,type:r,length:o}),this}registerUniforms(t){return this.uniforms=this.uniforms.concat(t),this}uniformDeclaration(){if(this.uniforms.length===0)return\"\";let t=[];for(let{name:r,type:o,length:n}of this.uniforms)if(n&&n>4)t.push(`${r}:array, ${Math.ceil(n/4)}>`);else{let s=n==null||n===1?o:`vec${n}<${o}>`;t.push(`${r}:${s}`)}return`\\n struct Uniforms { ${t.join(\", \")} };\\n @group(0) @binding(${this.variableIndex}) var uniforms: Uniforms;`}get additionalImplementations(){return this.uniformDeclaration()+this.variables.map(t=>t.impl()).join(`\\n`)+this.internalVariables.map(t=>t.impl()).join(`\\n`)}},ma=e=>new Rn(e),Ft=(e,t)=>{let r=e.length,o=[];for(let n=0;n1&&u===1&&o.unshift(s)}return o},Re=e=>!0});var fd,fa,hd,gd,it,ha,ga,jt=j(()=>{\"use strict\";$e();je();ve();fd=e=>{if(!e||e.length!==1)throw new Error(\"Transpose requires 1 input.\")},fa=(e,t)=>t&&t.length!==e?[...new Array(e).keys()].reverse():t,hd=(e,t)=>U.sortBasedOnPerm(e,fa(e.length,t)),gd=(e,t,r,o)=>{let n=[];n.push(`fn perm(i: ${o.type.indices}) -> ${r.type.indices} {\\n var a: ${r.type.indices};`);for(let s=0;s{let r=e.dataType,o=e.dims.length,n=fa(o,t),s=Re(o),u=hd(e.dims,n),l=s?u.length:u,a=s?o:e.dims,p=F(\"output\",r,l),h=M(\"a\",r,a),g=b=>`\\n ${b.registerUniform(\"output_size\",\"u32\").declareVariables(h,p)}\\n\\n ${gd(n,o,h,p)}\\n\\n ${b.mainStart()}\\n ${b.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\\n\\n let indices = ${p.offsetToIndices(\"global_idx\")};\\n let aIndices = perm(indices);\\n\\n ${p.setByOffset(\"global_idx\",h.getByIndices(\"aIndices\"))}\\n }`;return{name:\"Transpose\",shaderCache:{hint:`${t}`,inputDependencies:s?[\"rank\"]:[\"dims\"]},getRunData:b=>{let w=U.size(u);return{outputs:[{dims:u,dataType:b[0].dataType}],dispatchGroup:{x:Math.ceil(w/64)},programUniforms:s?[{type:\"uint32\",data:w},...L(b[0].dims),...L(u)]:[{type:\"uint32\",data:w}]}},getShaderSource:g}},ha=(e,t)=>{fd(e.inputs),e.compute(it(e.inputs[0],t.perm))},ga=e=>ge({perm:e.perm})});var yd,bd,wd,vd,$d,Sd,xd,_d,Cd,Id,ct,ya,ba,wa,va,$a,Sa,xa,_a,Ca,Ia,Aa=j(()=>{\"use strict\";$e();ve();jr();jt();yd={max:\"select(bestValue, candidate, candidate > bestValue)\",min:\"select(bestValue, candidate, candidate < bestValue)\",mean:\"bestValue + candidate\",sum:\"bestValue + candidate\",prod:\"bestValue * candidate\",sumSquare:\"bestValue + candidate * candidate\",logSumExp:\"bestValue + exp(candidate)\",l1:\"bestValue + abs(candidate)\",l2:\"bestValue + candidate * candidate\",logSum:\"bestValue + candidate\"},bd={max:\"select(bestValue, candidate, candidate > bestValue)\",min:\"select(bestValue, candidate, candidate < bestValue)\",mean:\"bestValue + candidate\",sum:\"bestValue + candidate\",prod:\"bestValue * candidate\",sumSquare:\"bestValue + candidate\",logSumExp:\"bestValue + candidate\",l1:\"bestValue + candidate\",l2:\"bestValue + candidate\",logSum:\"bestValue + candidate\"},wd={max:\"_A[offset]\",min:\"_A[offset]\",mean:\"0\",sum:\"0\",prod:\"1\",sumSquare:\"0\",logSumExp:\"0\",l1:\"0\",l2:\"0\",logSum:\"0\"},vd={max:\"bestValue\",min:\"bestValue\",sum:\"bestValue\",prod:\"bestValue\",sumSquare:\"bestValue\",logSumExp:\"log(bestValue)\",l1:\"bestValue\",l2:\"sqrt(bestValue)\",logSum:\"log(bestValue)\"},$d=(e,t)=>{let r=[];for(let o=t-e;o{let r=[],o=e.length;for(let s=0;se[s]);return[r,n]},xd=(e,t)=>{let r=e.length+t.length,o=[],n=0;for(let s=0;s{for(let r=0;r{let r=[];if(!_d(e,t)){for(let o=0;or.push(o))}return r},Id=(e,t,r,o,n,s,u)=>{let l=r[0].dims,a=U.size(s),p=U.size(u),h=M(\"_A\",r[0].dataType,l),g=F(\"output\",n,s),b=32,w=`\\n var aBestValues : array<${g.type.storage}, ${b}>;\\n `;return{name:e,shaderCache:t,getShaderSource:_=>`\\n ${_.registerUniform(\"reduceSize\",\"u32\").declareVariables(h,g)}\\n ${w}\\n fn DIV_CEIL(a : u32, b : u32) -> u32 {\\n return ((a - 1u) / b + 1u);\\n }\\n ${_.mainStart(b)}\\n\\n let outputIndex = global_idx / ${b};\\n let offset = outputIndex * uniforms.reduceSize;\\n\\n var bestValue = ${g.type.storage}(${wd[o]});\\n let Length = uniforms.reduceSize;\\n for (var k = local_idx; k < Length; k = k + ${b}) {\\n let candidate = ${g.type.storage}(${h.getByOffset(\"offset + k\")});\\n bestValue = ${yd[o]};\\n }\\n aBestValues[local_idx] = bestValue;\\n workgroupBarrier();\\n\\n var reduceSize = min(Length, ${b}u);\\n for (var currentSize = reduceSize / 2u; reduceSize > 1u;\\n currentSize = reduceSize / 2u) {\\n let interval = DIV_CEIL(reduceSize, 2u);\\n if (local_idx < currentSize) {\\n let candidate = aBestValues[local_idx + interval];\\n bestValue = ${bd[o]};\\n aBestValues[local_idx] = bestValue;\\n }\\n reduceSize = interval;\\n workgroupBarrier();\\n }\\n\\n if (local_idx == 0u) {\\n ${g.setByOffset(\"outputIndex\",`${o===\"mean\"?`bestValue / ${g.type.storage}(uniforms.reduceSize)`:`${vd[o]}`}`)};\\n }\\n }`,getRunData:()=>({outputs:[{dims:s,dataType:n}],dispatchGroup:{x:a},programUniforms:[{type:\"uint32\",data:p}]})}},ct=(e,t,r,o)=>{let n=e.inputs.length===1?r:Mn(e.inputs,r),s=n.axes;s.length===0&&!n.noopWithEmptyAxes&&(s=e.inputs[0].dims.map((w,y)=>y));let u=U.normalizeAxes(s,e.inputs[0].dims.length),l=u,a=e.inputs[0],p=Cd(l,e.inputs[0].dims.length);p.length>0&&(a=e.compute(it(e.inputs[0],p),{inputs:[0],outputs:[-1]})[0],l=$d(l.length,a.dims.length));let[h,g]=Sd(a.dims,l),b=h;n.keepDims&&(b=xd(h,u)),e.compute(Id(t,{hint:n.cacheKey,inputDependencies:[\"type\"]},[a],o,e.inputs[0].dataType,b,g),{inputs:[a]})},ya=(e,t)=>{ct(e,\"ReduceMeanShared\",t,\"mean\")},ba=(e,t)=>{ct(e,\"ReduceL1Shared\",t,\"l1\")},wa=(e,t)=>{ct(e,\"ReduceL2Shared\",t,\"l2\")},va=(e,t)=>{ct(e,\"ReduceLogSumExpShared\",t,\"logSumExp\")},$a=(e,t)=>{ct(e,\"ReduceMaxShared\",t,\"max\")},Sa=(e,t)=>{ct(e,\"ReduceMinShared\",t,\"min\")},xa=(e,t)=>{ct(e,\"ReduceProdShared\",t,\"prod\")},_a=(e,t)=>{ct(e,\"ReduceSumShared\",t,\"sum\")},Ca=(e,t)=>{ct(e,\"ReduceSumSquareShared\",t,\"sumSquare\")},Ia=(e,t)=>{ct(e,\"ReduceLogSumShared\",t,\"logSum\")}});var pt,Ad,qr,Mn,mt,Td,Ed,Od,Pd,kd,Rd,Bd,Dd,Md,zd,ft,Ta,Ea,Oa,Pa,ka,Ra,Ba,Da,Ma,za,jr=j(()=>{\"use strict\";$e();je();ve();Aa();pt=e=>{if(!e||e.length===0||e.length>2)throw new Error(\"Reduce op requires 1 or 2 inputs.\");if(e.length===2&&e[1].dims.length!==1)throw new Error(\"Invalid axes input dims.\")},Ad=e=>[\"\",\"\",`var value = ${e.getByIndices(\"input_indices\")};`,\"\"],qr=(e,t,r,o,n,s,u=!1,l=!1)=>{let a=[],p=r[0].dims,h=p.length,g=U.normalizeAxes(n,h),b=!l&&g.length===0;p.forEach((I,$)=>{b||g.indexOf($)>=0?u&&a.push(1):a.push(I)});let w=a.length,y=U.size(a);return{name:e,shaderCache:t,getShaderSource:I=>{let $=[],x=M(\"_A\",r[0].dataType,h),E=F(\"output\",s,w),A=o(x,E,g),z=A[2];for(let R=0,V=0;R=0?(u&&V++,z=`for(var j${R}: u32 = 0; j${R} < ${p[R]}; j${R}++) {\\n ${A[2].includes(\"last_index\")?`let last_index = j${R};`:\"\"}\\n ${x.indicesSet(\"input_indices\",R,`j${R}`)}\\n ${z}\\n }`):($.push(`${x.indicesSet(\"input_indices\",R,E.indicesGet(\"output_indices\",V))};`),V++);return`\\n\\n ${I.registerUniform(\"output_size\",\"u32\").declareVariables(x,E)}\\n\\n ${I.mainStart()}\\n ${I.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\\n var input_indices: ${x.type.indices};\\n let output_indices = ${E.offsetToIndices(\"global_idx\")};\\n\\n ${$.join(`\\n`)}\\n ${A[0]} // init ops for reduce max/min\\n ${A[1]}\\n ${z}\\n ${A[3]}\\n ${A.length===4?E.setByOffset(\"global_idx\",\"value\"):A.slice(4).join(`\\n`)}\\n }`},getRunData:()=>({outputs:[{dims:a,dataType:s}],dispatchGroup:{x:Math.ceil(y/64)},programUniforms:[{type:\"uint32\",data:y},...L(p),...L(a)]})}},Mn=(e,t)=>{let r=[];return e[1].dims[0]>0&&e[1].getBigInt64Array().forEach(o=>r.push(Number(o))),ge({axes:r,keepDims:t.keepDims,noopWithEmptyAxes:t.noopWithEmptyAxes})},mt=(e,t,r,o)=>{let n=e.inputs,s=n.length===1?r:Mn(n,r);e.compute(qr(t,{hint:s.cacheKey,inputDependencies:[\"rank\"]},[n[0]],s.noopWithEmptyAxes&&s.axes.length===0?Ad:o,s.axes,n[0].dataType,s.keepDims,s.noopWithEmptyAxes),{inputs:[0]})},Td=(e,t)=>{pt(e.inputs),mt(e,\"ReduceLogSum\",t,(o,n)=>[`var value = ${n.type.storage}(0);`,\"\",`value += ${o.getByIndices(\"input_indices\")};`,\"value = log(value);\"])},Ed=(e,t)=>{pt(e.inputs),mt(e,\"ReduceL1\",t,(o,n)=>[`var value = ${n.type.storage}(0);`,\"\",`value += abs(${o.getByIndices(\"input_indices\")});`,\"\"])},Od=(e,t)=>{pt(e.inputs),mt(e,\"ReduceL2\",t,(o,n)=>[`var t = ${n.type.value}(0); var value = ${n.type.value}(0);`,\"\",`t = ${o.getByIndices(\"input_indices\")}; value += (t * t);`,\"value = sqrt(value);\"])},Pd=(e,t)=>{pt(e.inputs),mt(e,\"ReduceLogSumExp\",t,(o,n)=>[`var value = ${n.type.storage}(0);`,\"\",`value += exp(${o.getByIndices(\"input_indices\")});`,\"value = log(value);\"])},kd=(e,t)=>{pt(e.inputs),mt(e,\"ReduceMax\",t,(o,n,s)=>{let u=[];for(let l=0;l=0||s.length===0)&&u.push(o.indicesSet(\"input_indices\",l,0));return[`${u.join(`\\n`)}`,`var value = ${o.getByIndices(\"input_indices\")};`,`value = max(value, ${o.getByIndices(\"input_indices\")});`,\"\"]})},Rd=(e,t)=>{pt(e.inputs),mt(e,\"ReduceMean\",t,(o,n,s)=>{let u=1;for(let l=0;l=0||s.length===0)&&(u*=e.inputs[0].dims[l]);return[\"var sum = f32(0);\",\"\",`sum += f32(${o.getByIndices(\"input_indices\")});`,`let value = ${n.type.value}(sum / ${u});`]})},Bd=(e,t)=>{pt(e.inputs),mt(e,\"ReduceMin\",t,(o,n,s)=>{let u=[];for(let l=0;l=0||s.length===0)&&u.push(`input_indices[${l}] = 0;`);return[`${u.join(`\\n`)}`,`var value = ${o.getByIndices(\"input_indices\")};`,`value = min(value, ${o.getByIndices(\"input_indices\")});`,\"\"]})},Dd=(e,t)=>{pt(e.inputs),mt(e,\"ReduceProd\",t,(o,n)=>[`var value = ${n.type.storage}(1);`,\"\",`value *= ${o.getByIndices(\"input_indices\")};`,\"\"])},Md=(e,t)=>{pt(e.inputs),mt(e,\"ReduceSum\",t,(o,n)=>[`var value = ${n.type.storage}(0);`,\"\",`value += ${o.getByIndices(\"input_indices\")};`,\"\"])},zd=(e,t)=>{pt(e.inputs),mt(e,\"ReduceSumSquare\",t,(o,n)=>[`var t = ${n.type.value}(0); var value = ${n.type.value}(0);`,\"\",`t = ${o.getByIndices(\"input_indices\")}; value += t * t;`,\"\"])},ft=(e,t,r)=>{if(t.length===0)return r;let o=1,n=1;for(let s=0;s1024},Ta=(e,t)=>{ft(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Rd(e,t):ya(e,t)},Ea=(e,t)=>{ft(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Ed(e,t):ba(e,t)},Oa=(e,t)=>{ft(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Od(e,t):wa(e,t)},Pa=(e,t)=>{ft(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Pd(e,t):va(e,t)},ka=(e,t)=>{ft(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?kd(e,t):$a(e,t)},Ra=(e,t)=>{ft(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Bd(e,t):Sa(e,t)},Ba=(e,t)=>{ft(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Dd(e,t):xa(e,t)},Da=(e,t)=>{ft(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Md(e,t):_a(e,t)},Ma=(e,t)=>{ft(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?zd(e,t):Ca(e,t)},za=(e,t)=>{ft(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Td(e,t):Ia(e,t)}});var Ua,Va,Na,zn,Wa=j(()=>{\"use strict\";Ne();je();jr();Ua=e=>{if(!e||e.length===0||e.length>2)throw new Error(\"ArgMinMaxOp op requires 1 or 2 inputs.\");if(e[0].dataType!==1)throw new Error(\"Invalid input type.\")},Va=(e,t)=>{Ua(e.inputs);let r=(o,n,s)=>{let u=[];for(let l=0;l=0||s.length===0)&&u.push(`input_indices[${l}] = 0;`);return[`${u.join(`\\n`)}`,`var value = ${o.getByIndices(\"input_indices\")};\\nvar best_index : i32 = 0;`,`if (${o.getByIndices(\"input_indices\")} ${t.selectLastIndex>0?\"<=\":\"<\"} value) {\\n value = ${o.getByIndices(\"input_indices\")};\\n best_index = i32(last_index);\\n }`,\"\",n.setByOffset(\"global_idx\",\"best_index\")]};e.compute(qr(\"ArgMin\",{hint:t.cacheKey,inputDependencies:[\"rank\"]},[e.inputs[0]],r,[t.axis],7,t.keepDims),{inputs:[0]})},Na=(e,t)=>{Ua(e.inputs);let r=(o,n,s)=>{let u=[];for(let l=0;l=0||s.length===0)&&u.push(`input_indices[${l}] = 0;`);return[`${u.join(`\\n`)}`,`var value = ${o.getByIndices(\"input_indices\")};\\nvar best_index : i32 = 0;`,`if (${o.getByIndices(\"input_indices\")} ${t.selectLastIndex>0?\">=\":\">\"} value) {\\n value = ${o.getByIndices(\"input_indices\")};\\n best_index = i32(last_index);\\n }`,\"\",n.setByOffset(\"global_idx\",\"best_index\")]};e.compute(qr(\"argMax\",{hint:t.cacheKey,inputDependencies:[\"rank\"]},[e.inputs[0]],r,[t.axis],7,t.keepDims),{inputs:[0]})},zn=e=>ge(e)});var Ud,Vd,Nd,Wd,Kr,Hd,Ha,Un=j(()=>{\"use strict\";Ne();Nr();ve();Ud=(e,t)=>{let r=e[0],o=e[1],n=e[2],s=e[3],u=e[4],l=e[5];if(u&&l)throw new Error(\"Attention cannot have both past and relative_position_bias\");if(r.dims.length!==3)throw new Error(\\'Input \"input\" must have 3 dimensions\\');let a=r.dims[0],p=r.dims[1],h=r.dims[2];if(n.dims.length!==1)throw new Error(\\'Input \"bias\" is expected to have 1 dimensions\\');if(o.dims.length!==2)throw new Error(\\'Input \"weights\" is expected to have 2 dimensions\\');if(o.dims[0]!==h)throw new Error(\"Input 1 dimension 0 should have same length as dimension 2 of input 0\");if(n.dims[0]!==o.dims[1])throw new Error(\\'Input \"bias\" dimension 0 should have same length as dimension 1 of input \"weights\"\\');let g=n.dims[0]/3,b=g,w=b;if(t.qkvHiddenSizes.length>0){if(t.qkvHiddenSizes.length!==3)throw new Error(\"qkv_hidden_sizes attribute should have 3 elements\");for(let E of t.qkvHiddenSizes)if(E%t.numHeads!==0)throw new Error(\"qkv_hidden_sizes should be divisible by num_heads\");g=t.qkvHiddenSizes[0],b=t.qkvHiddenSizes[1],w=t.qkvHiddenSizes[2]}let y=p;if(g!==b)throw new Error(\"qkv_hidden_sizes first element should be same as the second\");if(n.dims[0]!==g+b+w)throw new Error(\\'Input \"bias\" dimension 0 should have same length as sum of Q/K/V hidden sizes\\');let _=0;if(u){if(b!==w)throw new Error(\\'Input \"past\" expect k_hidden_size == v_hidden_size\\');if(u.dims.length!==5)throw new Error(\\'Input \"past\" must have 5 dimensions\\');if(u.dims[0]!==2)throw new Error(\\'Input \"past\" first dimension must be 2\\');if(u.dims[1]!==a)throw new Error(\\'Input \"past\" second dimension must be batch_size\\');if(u.dims[2]!==t.numHeads)throw new Error(\\'Input \"past\" third dimension must be num_heads\\');if(u.dims[4]!==b/t.numHeads)throw new Error(\\'Input \"past\" fifth dimension must be k_hidden_size / num_heads\\');t.pastPresentShareBuffer||(_=u.dims[3])}let I=y+_,$=-1,x=0;if(s)throw new Error(\"Mask not supported\");if(u)throw new Error(\"past is not supported\");if(l)throw new Error(\"relativePositionBias is not supported\");return{batchSize:a,sequenceLength:p,pastSequenceLength:_,kvSequenceLength:y,totalSequenceLength:I,maxSequenceLength:$,inputHiddenSize:h,hiddenSize:g,vHiddenSize:w,headSize:Math.floor(g/t.numHeads),vHeadSize:Math.floor(w/t.numHeads),numHeads:t.numHeads,isUnidirectional:!1,pastPresentShareBuffer:!1,maskFilterValue:t.maskFilterValue,maskType:x,scale:t.scale,broadcastResPosBias:!1,passPastInKv:!1,qkvFormat:1}},Vd=(e,t,r,o)=>{let n=Fe(o),s=64,u=o/n;u{let w=F(\"x\",t.dataType,t.dims,n),y=\"thread_max_vector\";n===2?y=\"max(thread_max_vector.x, thread_max_vector.y)\":n===4&&(y=\"max(max(thread_max_vector.x, thread_max_vector.y), max(thread_max_vector.z, thread_max_vector.w))\");let _=lt(t.dataType),I=[{name:\"d_inv\",type:_},{name:\"d_comp\",type:\"u32\"},{name:\"elements_per_wg\",type:\"u32\"}];return`\\n var wgMax: array;\\n var wgSum: array;\\n ${b.registerUniforms(I).declareVariables(w)}\\n ${b.mainStart([s,1,1])}\\n let localOffset = local_idx * uniforms.elements_per_wg;\\n let offset: u32 = workgroup_id.x * uniforms.d_comp + localOffset;\\n\\n var thread_max_vector = ${Ze(\"f32\",n,\"-3.402823e+38f\")};\\n for (var i: u32 = 0; i < uniforms.elements_per_wg && i + localOffset < uniforms.d_comp; i++) {\\n thread_max_vector = max(${at(_,n,\"x[offset + i]\")}, thread_max_vector);\\n }\\n wgMax[local_idx] = ${y};\\n workgroupBarrier();\\n\\n var maxValue = -3.402823e+38f;\\n for (var i = 0u; i < ${s}; i++) {\\n maxValue = max(wgMax[i], maxValue);\\n }\\n\\n var sumVector = ${Ze(\"f32\",n,\"0\")};\\n for (var i: u32 = 0; i < uniforms.elements_per_wg && i + localOffset < uniforms.d_comp; i++) {\\n sumVector += exp(${at(_,n,\"x[offset + i]\")} - maxValue);\\n }\\n wgSum[local_idx] = ${Je(\"sumVector\",n)};\\n workgroupBarrier();\\n\\n var sum: f32 = 0;\\n for (var i = 0u; i < ${s}; i++) {\\n sum += wgSum[i];\\n }\\n\\n if (sum == 0) {\\n for (var i: u32 = 0; i < uniforms.elements_per_wg && i + localOffset < uniforms.d_comp; i++) {\\n x[offset + i] = ${Ze(\"f32\",n,\"uniforms.d_inv\")};\\n }\\n } else {\\n for (var i: u32 = 0; i < uniforms.elements_per_wg && i + localOffset < uniforms.d_comp; i++) {\\n let f32input = ${at(_,n,\"x[offset + i]\")};\\n x[offset + i] = ${w.type.value}(exp(f32input - maxValue) / sum);\\n }\\n }\\n }`};e.compute({name:\"AttentionProbsSoftmax\",shaderCache:{hint:`${s};${h};${n}`},getShaderSource:g,getRunData:()=>({outputs:[],dispatchGroup:{x:r},programUniforms:p})},{inputs:[t],outputs:[]})},Nd=(e,t,r,o,n,s)=>{let u=[n.batchSize,n.numHeads,n.sequenceLength,n.kvSequenceLength+n.pastSequenceLength],l=s.scale===0?1/Math.sqrt(n.headSize):s.scale,a=Fe(n.headSize),p=n.headSize/a,h=12,g={x:Math.ceil(n.totalSequenceLength/h),y:Math.ceil(n.sequenceLength/h),z:n.batchSize*n.numHeads},b=Xe(t.dataType),w=[{type:\"uint32\",data:n.sequenceLength},{type:\"uint32\",data:p},{type:\"uint32\",data:n.totalSequenceLength},{type:\"uint32\",data:n.kvSequenceLength},{type:b,data:l}],y=[t,r],_=$=>{let x=M(\"q\",t.dataType,t.dims,a),E=M(\"key\",r.dataType,r.dims,a),A=F(\"output\",t.dataType,u),z=Le(t.dataType),R=[{name:\"M\",type:\"u32\"},{name:\"K\",type:\"u32\"},{name:\"N\",type:\"u32\"},{name:\"kv_sequence_length\",type:\"u32\"},{name:\"alpha\",type:z}];return`\\n const beta: ${z} = 1.0;\\n const TILE_SIZE = ${h}u;\\n\\n var tileQ: array<${x.type.storage}, ${h*h}>;\\n var tileK: array<${x.type.storage}, ${h*h}>;\\n ${$.registerUniforms(R).declareVariables(x,E,A)}\\n ${$.mainStart([h,h,1])}\\n // x holds the N and y holds the M\\n let headIdx = workgroup_id.z;\\n let m = workgroup_id.y * TILE_SIZE;\\n let n = workgroup_id.x * TILE_SIZE;\\n let lm = m + local_id.y;\\n let ln = n + local_id.x;\\n\\n let qOffset = uniforms.M * uniforms.K * headIdx + m * uniforms.K;\\n let kOffset = uniforms.kv_sequence_length * uniforms.K * headIdx + n * uniforms.K;\\n\\n var value = ${Ze(z,a)};\\n for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {\\n if (m + local_id.y < uniforms.M && w + local_id.x < uniforms.K) {\\n tileQ[TILE_SIZE * local_id.y + local_id.x] = q[qOffset + local_id.y * uniforms.K + w + local_id.x];\\n }\\n if (n + local_id.y < uniforms.N && w + local_id.x < uniforms.K) {\\n tileK[TILE_SIZE * local_id.y + local_id.x] = key[kOffset + local_id.y * uniforms.K + w + local_id.x];\\n }\\n workgroupBarrier();\\n\\n for (var k: u32 = 0u; k({outputs:[{dims:u,dataType:t.dataType,gpuDataType:0}],dispatchGroup:g,programUniforms:w}),getShaderSource:_},{inputs:y,outputs:[-1]})[0];return Vd(e,I,n.batchSize*n.numHeads*n.sequenceLength,n.totalSequenceLength),I},Wd=(e,t,r,o)=>{let n=[o.batchSize,o.sequenceLength,o.vHiddenSize],s=12,u={x:Math.ceil(o.vHeadSize/s),y:Math.ceil(o.sequenceLength/s),z:o.batchSize*o.numHeads},l=[{type:\"uint32\",data:o.sequenceLength},{type:\"uint32\",data:o.totalSequenceLength},{type:\"uint32\",data:o.vHeadSize},{type:\"uint32\",data:o.numHeads},{type:\"uint32\",data:o.vHiddenSize}],a=p=>{let h=M(\"probs\",t.dataType,t.dims),g=M(\"v\",r.dataType,r.dims),b=F(\"output\",t.dataType,n),w=[{name:\"M\",type:\"u32\"},{name:\"K\",type:\"u32\"},{name:\"N\",type:\"u32\"},{name:\"num_heads\",type:\"u32\"},{name:\"v_hidden_size\",type:\"u32\"}];return`\\n const TILE_SIZE = ${s}u;\\n var tileQ: array<${h.type.value}, ${s*s}>;\\n var tileK: array<${h.type.value}, ${s*s}>;\\n ${p.registerUniforms(w).declareVariables(h,g,b)}\\n ${p.mainStart([s,s,1])}\\n let headIdx = workgroup_id.z;\\n let m = workgroup_id.y * TILE_SIZE + local_id.y;\\n let n = workgroup_id.x * TILE_SIZE + local_id.x;\\n\\n let offsetA = headIdx * (uniforms.M * uniforms.K) + m * uniforms.K;\\n let offsetB = headIdx * (uniforms.N * uniforms.K) + n;\\n\\n var value = ${h.type.storage}(0);\\n for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {\\n if (m < uniforms.M && w + local_id.x < uniforms.K) {\\n tileQ[TILE_SIZE * local_id.y + local_id.x] = probs[offsetA + w + local_id.x];\\n }\\n if (n < uniforms.N && w + local_id.y < uniforms.K) {\\n tileK[TILE_SIZE * local_id.y + local_id.x] = v[offsetB + (w + local_id.y) * uniforms.N];\\n }\\n workgroupBarrier();\\n for (var k: u32 = 0u; k({outputs:[{dims:n,dataType:t.dataType,gpuDataType:0}],dispatchGroup:u,programUniforms:l}),getShaderSource:a},{inputs:[t,r],outputs:[0]})[0]},Kr=(e,t,r,o,n,s,u,l,a,p,h)=>{let g=Nd(e,t,r,a,p,h);Wd(e,g,o,p)},Hd=(e,t)=>{let r=[t.batchSize,t.numHeads,t.sequenceLength,t.headSize],o=t.sequenceLength,n=t.inputHiddenSize,s=t.headSize,u=12,l={x:Math.ceil(t.headSize/u),y:Math.ceil(t.sequenceLength/u),z:t.batchSize*t.numHeads},a=[e.inputs[0],e.inputs[1],e.inputs[2]],p=[{type:\"uint32\",data:o},{type:\"uint32\",data:n},{type:\"uint32\",data:s},{type:\"uint32\",data:t.numHeads},{type:\"uint32\",data:t.headSize},{type:\"uint32\",data:t.hiddenSize},{type:\"uint32\",data:t.hiddenSize+t.hiddenSize+t.vHiddenSize}],h=g=>{let b=F(\"output_q\",a[0].dataType,r),w=F(\"output_k\",a[0].dataType,r),y=F(\"output_v\",a[0].dataType,r),_=M(\"input\",a[0].dataType,a[0].dims),I=M(\"weight\",a[1].dataType,a[1].dims),$=M(\"bias\",a[2].dataType,a[2].dims),x=_.type.storage,E=[{name:\"M\",type:\"u32\"},{name:\"K\",type:\"u32\"},{name:\"N\",type:\"u32\"},{name:\"num_heads\",type:\"u32\"},{name:\"head_size\",type:\"u32\"},{name:\"hidden_size\",type:\"u32\"},{name:\"ldb\",type:\"u32\"}];return`\\n const TILE_SIZE = ${u}u;\\n var tileInput: array<${x}, ${u*u}>;\\n var tileWeightQ: array<${x}, ${u*u}>;\\n var tileWeightK: array<${x}, ${u*u}>;\\n var tileWeightV: array<${x}, ${u*u}>;\\n ${g.registerUniforms(E).declareVariables(_,I,$,b,w,y)}\\n ${g.mainStart([u,u,1])}\\n let batchIndex = workgroup_id.z / uniforms.num_heads;\\n let headNumber = workgroup_id.z % uniforms.num_heads;\\n let m = workgroup_id.y * TILE_SIZE + local_id.y;\\n let n = workgroup_id.x * TILE_SIZE + local_id.x;\\n\\n let inputOffset = batchIndex * (uniforms.M * uniforms.K) + m * uniforms.K;\\n let biasOffsetQ = headNumber * uniforms.head_size;\\n let biasOffsetK = uniforms.hidden_size + biasOffsetQ;\\n let biasOffsetV = uniforms.hidden_size + biasOffsetK;\\n\\n var valueQ = ${x}(0);\\n var valueK = ${x}(0);\\n var valueV = ${x}(0);\\n for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {\\n if (m < uniforms.M && w + local_id.x < uniforms.K) {\\n tileInput[TILE_SIZE * local_id.y + local_id.x] = input[inputOffset + w + local_id.x];\\n }\\n if (n < uniforms.N && w + local_id.y < uniforms.K) {\\n let offset = n + (w + local_id.y) * uniforms.ldb;\\n tileWeightQ[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetQ + offset];\\n tileWeightK[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetK + offset];\\n tileWeightV[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetV + offset];\\n }\\n workgroupBarrier();\\n for (var k: u32 = 0u; k({outputs:[{dims:r,dataType:e.inputs[0].dataType,gpuDataType:0},{dims:r,dataType:e.inputs[0].dataType,gpuDataType:0},{dims:r,dataType:e.inputs[0].dataType,gpuDataType:0}],dispatchGroup:l,programUniforms:p}),getShaderSource:h},{inputs:a,outputs:[-1,-1,-1]})},Ha=(e,t)=>{let r=Ud(e.inputs,t),[o,n,s]=Hd(e,r);return Kr(e,o,n,s,e.inputs[4],void 0,void 0,void 0,e.inputs[5],r,t)}});var Gd,Ld,Fd,Ga,La=j(()=>{\"use strict\";Lt();$e();je();ve();Gd=(e,t)=>{if(!e||e.length!==5)throw new Error(\"BatchNormalization requires 5 inputs\");let r=(o,n,s)=>{let u=n.length;if(u!==o.length)throw new Error(`${s}: num dimensions != ${u}`);n.forEach((l,a)=>{if(l!==o[a])throw new Error(`${s}: dim[${a}] do not match`)})};if(e[0].dims.length>1){let o=t.format===\"NHWC\"?t.spatial?e[0].dims.slice(-1):e[0].dims.slice(-1).concat(e[0].dims.slice(1,e[0].dims.length-1)):e[0].dims.slice(1,t.spatial?2:void 0);r(e[1].dims,o,\"Invalid input scale\"),r(e[2].dims,o,\"Invalid input B\"),r(e[3].dims,o,\"Invalid input mean\"),r(e[4].dims,o,\"Invalid input var\")}else r(e[1].dims,[1],\"Invalid input scale\"),r(e[2].dims,[1],\"Invalid input B\"),r(e[3].dims,[1],\"Invalid input mean\"),r(e[4].dims,[1],\"Invalid input var\")},Ld=(e,t)=>{let{epsilon:r,spatial:o,format:n}=t,s=e[0].dims,u=o?Fe(s[s.length-1]):1,l=n===\"NHWC\"&&s.length>1?u:1,a=U.size(s)/u,p=Re(s.length)&&o,h=p?s.length:s,g=M(\"x\",e[0].dataType,e[0].dims,u),b=M(\"scale\",e[1].dataType,e[1].dims,l),w=M(\"bias\",e[2].dataType,e[2].dims,l),y=M(\"inputMean\",e[3].dataType,e[3].dims,l),_=M(\"inputVar\",e[4].dataType,e[4].dims,l),I=F(\"y\",e[0].dataType,h,u),$=()=>{let E=\"\";if(o)E=`let cOffset = ${s.length===1?\"0u\":n===\"NHWC\"?`outputIndices[${s.length-1}] / ${u}`:\"outputIndices[1]\"};`;else if(n===\"NCHW\")E=`\\n ${I.indicesSet(\"outputIndices\",\"0\",\"0\")}\\n let cOffset = ${I.indicesToOffset(\"outputIndices\")};`;else{E=`var cIndices = ${b.type.indices}(0);\\n cIndices[0] = outputIndices[${s.length-1}];`;for(let A=1;A`\\n const epsilon = ${r};\\n ${E.registerUniform(\"outputSize\",\"u32\").declareVariables(g,b,w,y,_,I)}\\n ${E.mainStart()}\\n ${E.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\\n var outputIndices = ${I.offsetToIndices(`global_idx * ${u}`)};\\n ${$()}\\n let scale = ${b.getByOffset(\"cOffset\")};\\n let bias = ${w.getByOffset(\"cOffset\")};\\n let inputMean = ${y.getByOffset(\"cOffset\")};\\n let inputVar = ${_.getByOffset(\"cOffset\")};\\n let x = ${g.getByOffset(\"global_idx\")};\\n let value = (x - inputMean) * inverseSqrt(inputVar + epsilon) * scale + bias;\\n ${I.setByOffset(\"global_idx\",\"value\")}\\n }`;return{name:\"BatchNormalization\",shaderCache:{hint:`${t.epsilon}_${t.format}_${o}_${u}`,inputDependencies:p?[\"rank\",\"type\",\"type\",\"type\",\"type\"]:void 0},getShaderSource:x,getRunData:()=>({outputs:[{dims:e[0].dims,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:p?[{type:\"uint32\",data:a},...L(s)]:[{type:\"uint32\",data:a}]})}},Fd=e=>ge(e),Ga=(e,t)=>{let{inputs:r,outputCount:o}=e,n=Fd({...t,outputCount:o});if(Gt.webgpu.validateInputContent&&Gd(r,n),t.trainingMode)throw new Error(\"BatchNormalization trainingMode is not supported yet.\");e.compute(Ld(r,n))}});var jd,qd,Fa,ja=j(()=>{\"use strict\";$e();ve();jd=e=>{if(e[0].dims.length!==3)throw new Error(\"input should have 3 dimensions\");if(![320,640,1280].includes(e[0].dims[2]))throw new Error(\"number of channels should be 320, 640 or 1280\");if(e[1].dims.length!==1)throw new Error(\"bias is expected to have 1 dimensions\");if(e[0].dims[2]!==e[1].dims[0])throw new Error(\"last dimension of input and bias are not the same\")},qd=e=>{let t=e[0].dims,r=e[0].dims[2],o=U.size(t)/4,n=e[0].dataType,s=M(\"input\",n,t,4),u=M(\"bias\",n,[r],4),l=M(\"residual\",n,t,4),a=F(\"output\",n,t,4);return{name:\"BiasAdd\",getRunData:()=>({outputs:[{dims:t,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(o/64)}}),getShaderSource:h=>`\\n const channels = ${r}u / 4;\\n ${h.declareVariables(s,u,l,a)}\\n\\n ${h.mainStart()}\\n ${h.guardAgainstOutOfBoundsWorkgroupSizes(o)}\\n let value = ${s.getByOffset(\"global_idx\")}\\n + ${u.getByOffset(\"global_idx % channels\")} + ${l.getByOffset(\"global_idx\")};\\n ${a.setByOffset(\"global_idx\",\"value\")}\\n }`}},Fa=e=>{jd(e.inputs),e.compute(qd(e.inputs))}});var Kd,Ae,qa,Ka,Ya,Za,Qa,Xa,Ja,ei,ti,Yd,ri,ni,oi,ai,Yr,ii,Zr,si,ui,di,li,ci,pi,mi,fi,hi,gi,yi,bi,wi,vi,$i,Si,xi,Vn=j(()=>{\"use strict\";Ne();$e();je();ve();Kd=(e,t,r,o,n,s)=>{let u=Math.ceil(t/4),l=\"\";typeof n==\"string\"?l=`${n}(a)`:l=n(\"a\");let a=M(\"inputData\",r,[u],4),p=F(\"outputData\",o,[u],4);return`\\n ${e.registerUniform(\"vec_size\",\"u32\").declareVariables(a,p)}\\n\\n ${s??\"\"}\\n\\n ${e.mainStart()}\\n ${e.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.vec_size\")}\\n\\n let a = ${a.getByOffset(\"global_idx\")};\\n ${p.setByOffset(\"global_idx\",l)}\\n }`},Ae=(e,t,r,o,n,s=e.dataType)=>({name:t,shaderCache:{hint:n,inputDependencies:[\"type\"]},getShaderSource:u=>Kd(u,U.size(e.dims),e.dataType,s,r,o),getRunData:u=>({outputs:[{dims:e.dims,dataType:s}],dispatchGroup:{x:Math.ceil(U.size(u[0].dims)/64/4)},programUniforms:[{type:\"uint32\",data:Math.ceil(U.size(e.dims)/4)}]})}),qa=e=>{e.compute(Ae(e.inputs[0],\"Abs\",\"abs\"))},Ka=e=>{e.compute(Ae(e.inputs[0],\"Acos\",\"acos\"))},Ya=e=>{e.compute(Ae(e.inputs[0],\"Acosh\",\"acosh\"))},Za=e=>{e.compute(Ae(e.inputs[0],\"Asin\",\"asin\"))},Qa=e=>{e.compute(Ae(e.inputs[0],\"Asinh\",\"asinh\"))},Xa=e=>{e.compute(Ae(e.inputs[0],\"Atan\",\"atan\"))},Ja=e=>{e.compute(Ae(e.inputs[0],\"Atanh\",\"atanh\"))},ei=e=>ge(e),ti=(e,t)=>{let r;switch(t.to){case 10:r=\"vec4\";break;case 1:r=\"vec4\";break;case 12:r=\"vec4\";break;case 6:r=\"vec4\";break;case 9:r=\"vec4\";break;default:throw new RangeError(`not supported type (specified in attribute \\'to\\' from \\'Cast\\' operator): ${t.to}`)}e.compute(Ae(e.inputs[0],\"Cast\",r,void 0,t.cacheKey,t.to))},Yd=e=>{let t=e.length>=2&&e[1].data!==0?e[1].getFloat32Array()[0]:Gr,r=e.length>=3&&e[2].data!==0?e[2].getFloat32Array()[0]:Lr;return ge({min:t,max:r})},ri=(e,t)=>{let r=e.inputs.length===1?t:Yd(e.inputs),o=lt(e.inputs[0].dataType);e.compute(Ae(e.inputs[0],\"Clip\",n=>`clamp(${n}, clip_min_, clip_max_)`,`\\n const clip_min_: vec4<${o}> = vec4(${o}(${r.min}));\\n const clip_max_: vec4<${o}> = vec4(${o}(${r.max}));\\n`,r.cacheKey),{inputs:[0]})},ni=e=>{e.compute(Ae(e.inputs[0],\"Ceil\",\"ceil\"))},oi=e=>{e.compute(Ae(e.inputs[0],\"Cos\",\"cos\"))},ai=e=>{e.compute(Ae(e.inputs[0],\"Cosh\",\"cosh\"))},Yr=e=>ge(e),ii=(e,t)=>{let r=lt(e.inputs[0].dataType);e.compute(Ae(e.inputs[0],\"Elu\",o=>`elu_vf32(${o})`,`\\n const elu_alpha_ = ${r}(${t.alpha});\\n\\n fn elu_f32(a: ${r}) -> ${r} {\\n return select((exp(a) - 1.0) * elu_alpha_, a, a >= 0.0);\\n }\\n\\n fn elu_vf32(v: vec4<${r}>) -> vec4<${r}> {\\n return vec4(elu_f32(v.x), elu_f32(v.y), elu_f32(v.z), elu_f32(v.w));\\n }`,t.cacheKey))},Zr=(e,t=\"f32\")=>`\\nconst r0: ${t} = 0.3275911;\\nconst r1: ${t} = 0.254829592;\\nconst r2: ${t} = -0.284496736;\\nconst r3: ${t} = 1.421413741;\\nconst r4: ${t} = -1.453152027;\\nconst r5: ${t} = 1.061405429;\\n\\nfn erf_vf32(v: ${e}) -> ${e} {\\n let absv = abs(v);\\n let x = 1.0 / (1.0 + r0 * absv);\\n return sign(v) * (1.0 - ((((r5 * x + r4) * x + r3) * x + r2) * x + r1) * x * exp(-absv * absv));\\n}`,si=e=>{let t=lt(e.inputs[0].dataType);e.compute(Ae(e.inputs[0],\"Erf\",r=>`erf_vf32(${r})`,Zr(`vec4<${t}>`,t)))},ui=e=>{e.compute(Ae(e.inputs[0],\"Exp\",\"exp\"))},di=e=>{e.compute(Ae(e.inputs[0],\"Floor\",\"floor\"))},li=e=>{let t=lt(e.inputs[0].dataType);e.compute(Ae(e.inputs[0],\"Gelu\",r=>`0.5 * ${r} * (1.0 + erf_vf32(${r} * 0.7071067811865475))`,Zr(`vec4<${t}>`,t)))},ci=(e,t)=>{let r=lt(e.inputs[0].dataType);e.compute(Ae(e.inputs[0],\"LeakyRelu\",o=>`select(leaky_relu_alpha_ * ${o}, ${o}, ${o} >= vec4<${r}>(0.0))`,`const leaky_relu_alpha_ = ${r}(${t.alpha});`,t.cacheKey))},pi=e=>{e.compute(Ae(e.inputs[0],\"Not\",t=>`!${t}`))},mi=e=>{e.compute(Ae(e.inputs[0],\"Neg\",t=>`-${t}`))},fi=e=>{e.compute(Ae(e.inputs[0],\"Reciprocal\",t=>`1.0/${t}`))},hi=e=>{let t=lt(e.inputs[0].dataType);e.compute(Ae(e.inputs[0],\"Relu\",r=>`select(vec4<${t}>(0.0), ${r}, ${r} > vec4<${t}>(0.0))`))},gi=e=>{e.compute(Ae(e.inputs[0],\"Sigmoid\",t=>`(1.0 / (1.0 + exp(-${t})))`))},yi=e=>{e.compute(Ae(e.inputs[0],\"Sin\",\"sin\"))},bi=e=>{e.compute(Ae(e.inputs[0],\"Sinh\",\"sinh\"))},wi=e=>{e.compute(Ae(e.inputs[0],\"Sqrt\",\"sqrt\"))},vi=e=>{e.compute(Ae(e.inputs[0],\"Tan\",\"tan\"))},$i=e=>{e.compute(Ae(e.inputs[0],\"Tanh\",\"tanh\"))},Si=(e,t)=>{let r=lt(e.inputs[0].dataType);return e.compute(Ae(e.inputs[0],\"ThresholdedRelu\",o=>`select(vec4<${r}>(0.0), ${o}, ${o} > thresholded_relu_alpha_)`,`const thresholded_relu_alpha_ = vec4<${r}>(${t.alpha});`,t.cacheKey)),0},xi=e=>{e.compute(Ae(e.inputs[0],\"Log\",\"log\"))}});var Qd,Xd,_i,Ci=j(()=>{\"use strict\";$e();ve();Vn();Qd=e=>{if(e[0].dims.length!==3)throw new Error(\"input should have 3 dimensions\");if(![2560,5120,10240].includes(e[0].dims[2]))throw new Error(\"hidden state should be 2560, 5120 or 10240\");if(e[1].dims.length!==1)throw new Error(\"bias is expected to have 1 dimensions\");if(e[0].dims[2]!==e[1].dims[0])throw new Error(\"last dimension of input and bias are not the same\")},Xd=e=>{let t=e[0].dims.slice();t[2]=t[2]/2;let r=M(\"input\",e[0].dataType,e[0].dims,4),o=M(\"bias\",e[0].dataType,[e[0].dims[2]],4),n=F(\"output\",e[0].dataType,t,4),s=U.size(t)/4,u=Le(e[0].dataType);return{name:\"BiasSplitGelu\",getRunData:()=>({outputs:[{dims:t,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(s/64)}}),getShaderSource:a=>`\\n const M_SQRT2 = sqrt(2.0);\\n const halfChannels = ${e[0].dims[2]/4/2}u;\\n\\n ${a.declareVariables(r,o,n)}\\n\\n ${Zr(`vec4<${u}>`,u)}\\n\\n ${a.mainStart()}\\n ${a.guardAgainstOutOfBoundsWorkgroupSizes(s)}\\n let biasIdx = global_idx % halfChannels;\\n let batchIndex = global_idx / halfChannels;\\n let inputOffset = biasIdx + batchIndex * halfChannels * 2;\\n let valueLeft = input[inputOffset] + bias[biasIdx];\\n let valueRight = input[inputOffset + halfChannels] + bias[biasIdx + halfChannels];\\n let geluRight = valueRight * 0.5 * (erf_vf32(valueRight / M_SQRT2) + 1);\\n\\n ${n.setByOffset(\"global_idx\",\"valueLeft * geluRight\")}\\n }`}},_i=e=>{Qd(e.inputs),e.compute(Xd(e.inputs))}});var Jd,el,ht,Ii,Ai,Ti,Ei,Oi,Pi,ki,Ri,Bi,Di,Mi=j(()=>{\"use strict\";Ne();$e();ve();Jd=(e,t,r,o,n,s,u,l,a,p,h,g,b)=>{let w,y;typeof l==\"string\"?w=y=(R,V)=>`${l}((${R}),(${V}))`:typeof l==\"function\"?w=y=l:(w=l.scalar,y=l.vector);let _=g?t.length:t,I=g?r.length:r,$=g?o.length:o,x=F(\"outputData\",h,$,4),E=M(\"aData\",a,_,4),A=M(\"bData\",p,I,4),z;if(n)if(s){let R=U.size(t)===1,V=U.size(r)===1,T=t.length>0&&t[t.length-1]%4===0,N=r.length>0&&r[r.length-1]%4===0;R||V?z=x.setByOffset(\"global_idx\",y(R?`${E.type.value}(${E.getByOffset(\"0\")}.x)`:E.getByOffset(\"global_idx\"),V?`${A.type.value}(${A.getByOffset(\"0\")}.x)`:A.getByOffset(\"global_idx\"))):z=`\\n let outputIndices = ${x.offsetToIndices(\"global_idx * 4u\")};\\n let offsetA = ${E.broadcastedIndicesToOffset(\"outputIndices\",x)};\\n let offsetB = ${A.broadcastedIndicesToOffset(\"outputIndices\",x)};\\n ${x.setByOffset(\"global_idx\",y(u||T?E.getByOffset(\"offsetA / 4u\"):`${E.type.value}(${E.getByOffset(\"offsetA / 4u\")}[offsetA % 4u])`,u||N?A.getByOffset(\"offsetB / 4u\"):`${A.type.value}(${A.getByOffset(\"offsetB / 4u\")}[offsetB % 4u])`))}\\n `}else z=x.setByOffset(\"global_idx\",y(E.getByOffset(\"global_idx\"),A.getByOffset(\"global_idx\")));else{if(!s)throw new Error(\"no necessary to use scalar implementation for element-wise binary op implementation.\");let R=(V,T,N=\"\")=>{let te=`aData[indexA${T}][componentA${T}]`,Y=`bData[indexB${T}][componentB${T}]`;return`\\n let outputIndices${T} = ${x.offsetToIndices(`global_idx * 4u + ${T}u`)};\\n let offsetA${T} = ${E.broadcastedIndicesToOffset(`outputIndices${T}`,x)};\\n let offsetB${T} = ${A.broadcastedIndicesToOffset(`outputIndices${T}`,x)};\\n let indexA${T} = offsetA${T} / 4u;\\n let indexB${T} = offsetB${T} / 4u;\\n let componentA${T} = offsetA${T} % 4u;\\n let componentB${T} = offsetB${T} % 4u;\\n ${V}[${T}] = ${N}(${w(te,Y)});\\n `};h===9?z=`\\n var data = vec4(0);\\n ${R(\"data\",0,\"u32\")}\\n ${R(\"data\",1,\"u32\")}\\n ${R(\"data\",2,\"u32\")}\\n ${R(\"data\",3,\"u32\")}\\n outputData[global_idx] = dot(vec4(0x1, 0x100, 0x10000, 0x1000000), vec4(data));`:z=`\\n ${R(\"outputData[global_idx]\",0)}\\n ${R(\"outputData[global_idx]\",1)}\\n ${R(\"outputData[global_idx]\",2)}\\n ${R(\"outputData[global_idx]\",3)}\\n `}return`\\n ${e.registerUniform(\"vec_size\",\"u32\").declareVariables(E,A,x)}\\n\\n ${b??\"\"}\\n\\n ${e.mainStart()}\\n ${e.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.vec_size\")}\\n ${z}\\n }`},el=(e,t,r,o,n,s,u=r.dataType)=>{let l=!U.areEqual(r.dims,o.dims),a=r.dims,p=U.size(r.dims),h=!1,g=!1,b=[l];if(l){let y=dt.calcShape(r.dims,o.dims,!1);if(!y)throw new Error(\"Can\\'t perform binary op on the given tensors\");a=y,p=U.size(a);let _=U.size(r.dims)===1,I=U.size(o.dims)===1,$=r.dims.length>0&&r.dims[r.dims.length-1]%4===0,x=o.dims.length>0&&o.dims[o.dims.length-1]%4===0;b.push(_),b.push(I),b.push($),b.push(x);let E=1;for(let A=1;Ay.toString()).join(\"_\"),inputDependencies:w?[\"rank\",\"rank\"]:[\"dims\",\"dims\"]},getShaderSource:y=>Jd(y,r.dims,o.dims,a,h,l,g,n,r.dataType,o.dataType,u,w,s),getRunData:()=>({outputs:[{dims:a,dataType:u}],dispatchGroup:{x:Math.ceil(p/64/4)},programUniforms:w?[{type:\"uint32\",data:Math.ceil(U.size(a)/4)},...L(r.dims),...L(o.dims),...L(a)]:[{type:\"uint32\",data:Math.ceil(U.size(a)/4)}]})}},ht=(e,t,r,o,n,s)=>{e.compute(el(t,n??\"\",e.inputs[0],e.inputs[1],r,o,s))},Ii=e=>{ht(e,\"Add\",(t,r)=>`${t}+${r}`)},Ai=e=>{ht(e,\"Div\",(t,r)=>`${t}/${r}`)},Ti=e=>{ht(e,\"Equal\",{scalar:(t,r)=>`u32(${t}==${r})`,vector:(t,r)=>`vec4(${t}==${r})`},void 0,void 0,9)},Ei=e=>{ht(e,\"Mul\",(t,r)=>`${t}*${r}`)},Oi=e=>{let t=M(\"input\",e.inputs[0].dataType,e.inputs[0].dims).type.value;ht(e,\"Pow\",{scalar:(o,n)=>`pow_custom(${o},${n})`,vector:(o,n)=>`pow_vector_custom(${o},${n})`},`\\n fn pow_custom(a : ${t}, b : ${t}) -> ${t} {\\n if (b == ${t}(0.0)) {\\n return ${t}(1.0);\\n } else if (a < ${t}(0.0) && f32(b) != floor(f32(b))) {\\n return ${t}(pow(f32(a), f32(b))); // NaN\\n }\\n return select(sign(a), ${t}(1.0), round(f32(abs(b) % ${t}(2.0))) != 1.0) * ${t}(${t===\"i32\"?\"round\":\"\"}(pow(f32(abs(a)), f32(b))));\\n }\\n fn pow_vector_custom(a : vec4<${t}>, b : vec4<${t}>) -> vec4<${t}> {\\n // TODO: implement vectorized pow\\n return vec4<${t}>(pow_custom(a.x, b.x), pow_custom(a.y, b.y), pow_custom(a.z, b.z), pow_custom(a.w, b.w));\\n }\\n `)},Pi=e=>{ht(e,\"Sub\",(t,r)=>`${t}-${r}`)},ki=e=>{ht(e,\"Greater\",{scalar:(t,r)=>`u32(${t}>${r})`,vector:(t,r)=>`vec4(${t}>${r})`},void 0,void 0,9)},Ri=e=>{ht(e,\"Less\",{scalar:(t,r)=>`u32(${t}<${r})`,vector:(t,r)=>`vec4(${t}<${r})`},void 0,void 0,9)},Bi=e=>{ht(e,\"GreaterOrEqual\",{scalar:(t,r)=>`u32(${t}>=${r})`,vector:(t,r)=>`vec4(${t}>=${r})`},void 0,void 0,9)},Di=e=>{ht(e,\"LessOrEqual\",{scalar:(t,r)=>`u32(${t}<=${r})`,vector:(t,r)=>`vec4(${t}<=${r})`},void 0,void 0,9)}});var rl,nl,ol,al,zi,Ui,Vi=j(()=>{\"use strict\";$e();je();ve();rl=e=>{if(!e||e.length<1)throw new Error(\"too few inputs\");let t=e[0].dataType,r=e[0].dims.length;for(let o of e){if(o.dataType!==t)throw new Error(\"input tensors should be one type\");if(o.dims.length!==r)throw new Error(\"input tensors should have the same shape\")}},nl=(e,t)=>`\\n fn calculateInputIndex(index: u32) -> u32 {\\n let sizeInConcatAxis = array(${t});\\n for (var i: u32 = 0u; i < ${e}; i += 1u ) {\\n if (index < sizeInConcatAxis[i]) {\\n return i;\\n }\\n }\\n return ${e}u;\\n }`,ol=(e,t)=>{let r=e.length,o=[];for(let n=0;n{let r=e[0].dims.slice();if(t>=r.length||t<-1*r.length)throw new Error(\"axis specified for concat doesn\\'t match input dimensionality\");let o=t<0?r.length+t:t,n=r.slice(0);for(let A=1;A`uniforms.sizeInConcatAxis${A}`).join(\",\"),E=A=>`\\n\\n ${(()=>{A.registerUniform(\"outputSize\",\"u32\");for(let z=0;z(${x});\\n ${$} -= sizeInConcatAxis[inputIndex - 1u];\\n }\\n\\n ${ol(l,I)}\\n }`;return{name:\"Concat\",shaderCache:{hint:`${t}`,inputDependencies:h},getRunData:()=>({outputs:[{dims:n,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(s/64)},programUniforms:w}),getShaderSource:E}},zi=(e,t)=>{rl(e.inputs),e.compute(al(e.inputs,t.axis))},Ui=e=>ge({axis:e.axis})});var gt,Qr,It=j(()=>{\"use strict\";$e();gt=(e,t)=>{switch(e.activation){case\"Relu\":return{activationFunction:\"\",applyActivation:`value = max(value, ${t}(0.0));`};case\"Sigmoid\":return{activationFunction:\"\",applyActivation:`value = (${t}(1.0) / (${t}(1.0) + exp(-value)));`};case\"Clip\":return{activationFunction:`const clip_min_=${t}(${e.clipMin});const clip_max_=${t}(${e.clipMax});`,applyActivation:\"value = clamp(value, clip_min_, clip_max_);\"};default:return{activationFunction:\"\",applyActivation:\"\"}}},Qr=e=>{let t=e?.activation||\"\";if(t===\"Clip\"){let[r,o]=e?.activation_params||[Gr,Lr];return{activation:t,clipMax:o,clipMin:r,activationCacheKey:`${t}:${r},${o}`}}return{activation:t,activationCacheKey:t}}});var Ke,Xr,Jr=j(()=>{\"use strict\";Ke=(e,t)=>{switch(e){case 1:return t;case 2:return`vec2<${t}>`;case 3:return`vec3<${t}>`;case 4:return`vec4<${t}>`;default:throw new Error(`${e}-component is not supported.`)}},Xr=e=>`\\n ${e?\"value = value + getBiasByOutputCoords(coords);\":\"\"}\\n `});var en,Nn=j(()=>{\"use strict\";en=e=>`\\nfn getIndexFromCoords4D(coords : vec4, shape : vec4) -> i32 {\\n return dot(coords, vec4(\\n shape.y * shape.z * shape.w, shape.z * shape.w, shape.w, 1));\\n}\\nfn getOutputIndexFromCoords(coords : vec4) -> i32 {\\n return dot(coords, vec4(\\n i32(${e}.x), i32(${e}.y), i32(${e}.z), 1));\\n}\\n`});var il,sl,mr,Ni,ul,fr,dl,tn,hr=j(()=>{\"use strict\";$e();ve();It();Jr();il=(e,t)=>e?`\\n mm_Asub[inputRow][inputCol] = mm_readA(batch,\\n kStart + inputRow,\\n globalRowStart / innerElementSize + inputCol${t?\", batchIndices\":\"\"});\\n `:`\\n mm_Asub[inputRow][inputCol] = mm_readA(batch,\\n globalRow + innerRow,\\n kStart / innerElementSize + inputCol${t?\", batchIndices\":\"\"});\\n `,sl=(e,t)=>e?`\\n let ACached0 = mm_Asub[k * innerElementSize][localRow];\\n let ACached1 = mm_Asub[k * innerElementSize + 1][localRow];\\n let ACached2 = mm_Asub[k * innerElementSize + 2][localRow];\\n ${t===3?\"\":\"let ACached3 = mm_Asub[k * innerElementSize + 3][localRow];\"}\\n for (var i = 0; i < rowPerThread; i = i + 1) {\\n acc[i] = BCached0 * ACached0[i] + acc[i];\\n acc[i] = BCached1 * ACached1[i] + acc[i];\\n acc[i] = BCached2 * ACached2[i] + acc[i];\\n ${t===3?\"\":\"acc[i] = BCached3 * ACached3[i] + acc[i];\"}\\n }`:`\\n for (var i = 0; i < rowPerThread; i = i + 1) {\\n let ACached = mm_Asub[tileRow + i][k];\\n acc[i] = BCached0 * ACached.x + acc[i];\\n acc[i] = BCached1 * ACached.y + acc[i];\\n acc[i] = BCached2 * ACached.z + acc[i];\\n ${t===3?\"\":\"acc[i] = BCached3 * ACached.w + acc[i];\"}\\n }`,mr=(e,t,r=\"f32\",o,n=!1,s=32,u=!1,l=32)=>{let a=t[1]*e[1],p=t[0]*e[0],h=n?a:s,g=n?s:a,b=h/t[0],w=s/t[1];if(!((n&&b===4&&e[1]===4||!n&&(b===3||b===4))&&h%t[0]===0&&s%t[1]===0&&e[0]===4))throw new Error(`If transposeA ${n} is true, innerElementSize ${b} and workPerThread[1] ${e[1]} must be 4.\\n Otherwise, innerElementSize ${b} must be 3 or 4.\\n tileAWidth ${h} must be divisible by workgroupSize[0]${t[0]}. tileInner ${s} must be divisible by workgroupSize[1] ${t[1]}. colPerThread ${e[0]} must be 4.`);return`\\nvar mm_Asub: array, ${h/b}>, ${g}>;\\nvar mm_Bsub: array, ${p/e[0]}>, ${s}>;\\n\\nconst rowPerThread = ${e[1]};\\nconst colPerThread = ${e[0]};\\nconst innerElementSize = ${b};\\nconst tileInner = ${s};\\n\\n@compute @workgroup_size(${t[0]}, ${t[1]}, ${t[2]})\\nfn main(@builtin(local_invocation_id) localId : vec3,\\n @builtin(global_invocation_id) globalId : vec3,\\n @builtin(workgroup_id) workgroupId : vec3) {\\n let localRow = i32(localId.y);\\n let tileRow = localRow * rowPerThread;\\n let tileCol = i32(localId.x);\\n\\n let globalRow =i32(globalId.y) * rowPerThread;\\n let globalCol = i32(globalId.x);\\n let batch = ${u?\"0\":\"i32(globalId.z)\"};\\n ${o?`let batchIndices = ${o.offsetToIndices(\"u32(batch)\")};`:\"\"}\\n let globalRowStart = i32(workgroupId.y) * ${a};\\n\\n let numTiles = ${u?`${Math.ceil(l/s)}`:\"(uniforms.dimInner - 1) / tileInner + 1\"};\\n var kStart = ${u?`i32(globalId.z) * ${l}`:\"0\"};\\n\\n var acc: array, rowPerThread>;\\n\\n // Loop over shared dimension.\\n let tileRowB = localRow * ${w};\\n for (var t = 0; t < numTiles; t = t + 1) {\\n // Load one tile of A into local memory.\\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\\n let inputRow = tileRow + innerRow;\\n let inputCol = tileCol;\\n ${il(n,o)}\\n }\\n\\n // Load one tile of B into local memory.\\n for (var innerRow = 0; innerRow < ${w}; innerRow = innerRow + 1) {\\n let inputRow = tileRowB + innerRow;\\n let inputCol = tileCol;\\n mm_Bsub[inputRow][inputCol] = mm_readB(batch, kStart + inputRow, globalCol${o?\", batchIndices\":\"\"});\\n }\\n kStart = kStart + tileInner;\\n workgroupBarrier();\\n\\n // Compute acc values for a single thread.\\n for (var k = 0; k < tileInner / innerElementSize; k = k + 1) {\\n let BCached0 = mm_Bsub[k * innerElementSize][tileCol];\\n let BCached1 = mm_Bsub[k * innerElementSize + 1][tileCol];\\n let BCached2 = mm_Bsub[k * innerElementSize + 2][tileCol];\\n ${b===3?\"\":\"let BCached3 = mm_Bsub[k * innerElementSize + 3][tileCol];\"}\\n\\n ${sl(n,b)}\\n }\\n\\n workgroupBarrier();\\n }\\n\\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\\n mm_write(batch, globalRow + innerRow, globalCol, acc[innerRow]);\\n }\\n}`},Ni=(e,t)=>e?`\\n mm_Asub[inputRow][inputCol] = mm_readA(batch,\\n kStart + inputRow,\\n globalRowStart + inputCol${t?\", batchIndices\":\"\"});\\n `:`\\n mm_Asub[inputRow][inputCol] = mm_readA(batch,\\n globalRowStart + inputRow,\\n kStart + inputCol${t?\", batchIndices\":\"\"});\\n `,ul=e=>e?\"let ACached = mm_Asub[k][tileRow + innerRow];\":\"let ACached = mm_Asub[tileRow + innerRow][k];\",fr=(e,t,r=\"f32\",o,n=!1,s=32,u=!1,l=32,a=!1)=>{let p=e[1]*t[1],h=e[0]*t[0],g=n?p:s,b=n?s:p;if(!(b%t[1]===0&&g%t[0]===0&&s%t[1]===0))throw new Error(`tileAHight ${b} must be divisible by workgroupSize[1]${t[1]}, tileAWidth ${g} must be divisible by workgroupSize[0]${t[0]}, tileInner ${s} must be divisible by workgroupSize[1]${t[1]}`);let w=b/t[1],y=g/t[0],_=s/t[1],I=a?`\\n let localRow = i32(localId.y);\\n let localCol = i32(localId.x);\\n let globalRowStart = i32(workgroupId.y) * ${p};\\n let globalColStart = i32(workgroupId.x) * ${h};\\n\\n // Loop over shared dimension.\\n for (var t = 0; t < numTiles; t = t + 1) {\\n // Load one tile of A into local memory.\\n for (var inputRow = localRow; inputRow < ${b}; inputRow = inputRow + ${t[1]}) {\\n for (var inputCol = localCol; inputCol < ${g}; inputCol = inputCol + ${t[0]}) {\\n ${Ni(n,o)}\\n }\\n }\\n // Load one tile of B into local memory.\\n for (var inputRow = localRow; inputRow < ${s}; inputRow = inputRow + ${t[1]}) {\\n for (var inputCol = localCol; inputCol < ${h}; inputCol = inputCol + ${t[0]}) {\\n mm_Bsub[inputRow][inputCol] = mm_readB(batch,\\n kStart + inputRow,\\n globalColStart + inputCol${o?\", batchIndices\":\"\"});\\n }\\n }\\n kStart = kStart + tileInner;\\n workgroupBarrier();\\n\\n // Compute acc values for a single thread.\\n var BCached : array<${r}, colPerThread>;\\n for (var k = 0; k < tileInner; k = k + 1) {\\n for (var inner = 0; inner < colPerThread; inner = inner + 1) {\\n BCached[inner] = mm_Bsub[k][localCol + inner * ${t[0]}];\\n }\\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\\n let ACached = ${n?`mm_Asub[k][localRow + innerRow * ${t[1]}];`:`mm_Asub[localRow + innerRow * ${t[1]}][k];`}\\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\\n acc[innerRow][innerCol] = acc[innerRow][innerCol] +\\n ACached * BCached[innerCol];\\n }\\n }\\n }\\n workgroupBarrier();\\n }\\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\\n let gRow = globalRowStart + localRow + innerRow * ${t[1]};\\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\\n let gCol = globalColStart + localCol + innerCol * ${t[0]};\\n mm_write(batch, gRow, gCol, acc[innerRow][innerCol]);\\n }\\n }\\n `:`\\nlet tileRow = i32(localId.y) * rowPerThread;\\nlet tileCol = i32(localId.x) * colPerThread;\\n\\nlet globalRow = i32(globalId.y) * rowPerThread;\\nlet globalCol = i32(globalId.x) * colPerThread;\\nlet globalRowStart = i32(workgroupId.y) * ${p};\\n\\nlet tileRowA = i32(localId.y) * ${w};\\nlet tileColA = i32(localId.x) * ${y};\\nlet tileRowB = i32(localId.y) * ${_};\\n// Loop over shared dimension.\\nfor (var t = 0; t < numTiles; t = t + 1) {\\n // Load one tile of A into local memory.\\n for (var innerRow = 0; innerRow < ${w}; innerRow = innerRow + 1) {\\n for (var innerCol = 0; innerCol < ${y}; innerCol = innerCol + 1) {\\n let inputRow = tileRowA + innerRow;\\n let inputCol = tileColA + innerCol;\\n ${Ni(n,o)}\\n }\\n }\\n\\n // Load one tile of B into local memory.\\n for (var innerRow = 0; innerRow < ${_}; innerRow = innerRow + 1) {\\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\\n let inputRow = tileRowB + innerRow;\\n let inputCol = tileCol + innerCol;\\n mm_Bsub[inputRow][inputCol] = mm_readB(batch,\\n kStart + inputRow,\\n globalCol + innerCol${o?\", batchIndices\":\"\"});\\n }\\n }\\n kStart = kStart + tileInner;\\n workgroupBarrier();\\n\\n // Compute acc values for a single thread.\\n var BCached : array<${r}, colPerThread>;\\n for (var k = 0; k < tileInner; k = k + 1) {\\n for (var inner = 0; inner < colPerThread; inner = inner + 1) {\\n BCached[inner] = mm_Bsub[k][tileCol + inner];\\n }\\n\\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\\n ${ul(n)}\\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\\n acc[innerRow][innerCol] = acc[innerRow][innerCol] + ACached * BCached[innerCol];\\n }\\n }\\n }\\n\\n workgroupBarrier();\\n}\\n\\nfor (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\\n mm_write(batch, globalRow + innerRow, globalCol + innerCol,\\n acc[innerRow][innerCol]);\\n }\\n}\\n`;return`\\n var mm_Asub : array, ${b}>;\\n var mm_Bsub : array, ${s}>;\\n const rowPerThread = ${e[1]};\\n const colPerThread = ${e[0]};\\n const tileInner = ${s};\\n\\n@compute @workgroup_size(${t[0]}, ${t[1]}, ${t[2]})\\nfn main(@builtin(local_invocation_id) localId : vec3,\\n @builtin(global_invocation_id) globalId : vec3,\\n @builtin(workgroup_id) workgroupId : vec3) {\\n let batch = ${u?\"0\":\"i32(globalId.z)\"};\\n ${o?`let batchIndices = ${o.offsetToIndices(\"u32(batch)\")};`:\"\"}\\n let numTiles = ${u?`${Math.ceil(l/s)}`:\"(uniforms.dimInner - 1) / tileInner + 1\"};\\n var kStart = ${u?`i32(globalId.z) * ${l}`:\"0\"};\\n\\n var acc : array, rowPerThread>;\\n\\n // Without this initialization strange values show up in acc.\\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\\n acc[innerRow][innerCol] = 0.0;\\n }\\n }\\n ${I}\\n }\\n`},dl=(e,t,r,o,n,s=!1)=>{let[u,l,a]=n,[p,h,g,b]=o,w=Ft(u,a),y=Ft(l,a),_=Le(o[0].type.tensor),I=()=>{let E=h.rank,A=p.rank,z=`var aIndices: ${h.type.indices};`;for(let R=E-2-1,V=A-1;R>=0;R--,V--)z+=`\\naIndices[${R}] = ${A>1?`batchIndices[${V}]`:\"batchIndices\"};`;return w.forEach(R=>{z+=`\\naIndices[${R}] = 0;`}),z+=`\\naIndices[${E-2}] = u32(row);\\n aIndices[${E-1}] = u32(colIn);`,z},$=()=>{let E=g.rank,A=p.rank,z=`var bIndices: ${g.type.indices};`;for(let R=E-2-1,V=A-1;R>=0;R--,V--)z+=`\\nbIndices[${R}] = ${A>1?`batchIndices[${V}]`:\"batchIndices\"};`;return y.forEach(R=>{z+=`\\nbIndices[${R}] = 0;`}),z+=`\\nbIndices[${E-2}] = u32(row);\\n bIndices[${E-1}] = u32(colIn);`,z};return`\\n fn mm_readA(batch: i32, row: i32, colIn: i32, batchIndices: ${p.type.indices}) -> ${Ke(e,_)} {\\n var value = ${Ke(e,_)}(0.0);\\n let col = colIn * ${e};\\n if(row < uniforms.dimAOuter && col < uniforms.dimInner)\\n {\\n ${I()}\\n value = ${h.getByIndices(\"aIndices\")};\\n }\\n return value;\\n }\\n\\n fn mm_readB(batch: i32, row: i32, colIn: i32, batchIndices: ${p.type.indices}) -> ${Ke(e,_)} {\\n var value = ${Ke(e,_)}(0.0);\\n let col = colIn * ${e};\\n if(row < uniforms.dimInner && col < uniforms.dimBOuter)\\n {\\n ${$()}\\n value = ${g.getByIndices(\"bIndices\")};\\n }\\n return value;\\n }\\n\\n fn mm_write(batch: i32, row: i32, colIn: i32, valueIn: ${Ke(e,_)}) {\\n let col = colIn * ${e};\\n if (row < uniforms.dimAOuter && col < uniforms.dimBOuter) {\\n var value = valueIn;\\n let coords = vec3(batch, row, colIn);\\n ${t?`value = value + ${s?\"bias[colIn]\":`${Ke(e,_)}(bias[row])`};`:\"\"}\\n ${r}\\n ${b.setByIndices(\"vec3(coords)\",\"value\")}\\n }\\n }\\n `},tn=(e,t,r,o,n=!1)=>{let s=e[0].dims,u=e[1].dims,l=s.slice(0,-2),a=u.slice(0,-2),p=o?o.slice(0,-2):r.slice(0,-2),h=Re(p.length),g=h?p.length:p,b=Fr(\"batchDims\",e[0].dataType,g,1),w=U.size(p),y=s[s.length-2],_=s[s.length-1],I=u[u.length-1],$=_%4===0&&I%4===0,x=y<=8?[4,1,1]:[4,4,1],E=[8,8,1],A=[Math.ceil(I/E[0]/x[0]),Math.ceil(y/E[1]/x[1]),Math.ceil(w/E[2]/x[2])],z=Le(e[0].dataType),R=$?4:1,V=[...l,y,_/R],T=Re(V.length),N=T?V.length:V,te=[...a,_,I/R],Y=Re(te.length),K=Y?te.length:te,Q=[w,y,I/R],Z=M(\"a\",e[0].dataType,N,R),Ee=M(\"b\",e[1].dataType,K,R),Pe=F(\"result\",e[0].dataType,Q.length,R),fe=[Z,Ee],Ie=[{type:\"int32\",data:y},{type:\"int32\",data:I},{type:\"int32\",data:_}];h&&Ie.push(...L(p)),T&&Ie.push(...L(V)),Y&&Ie.push(...L(te));let he=[];he.push(T?\"rank\":\"dims\"),he.push(Y?\"rank\":\"dims\");let ye=e.length>2,{activationFunction:We,applyActivation:De}=gt(t,Pe.type.value),Ge=dl(R,ye,De,[b,Z,Ee,Pe],[l,a,p],n);if(ye){let ee=n?R:1;fe.push(M(\"bias\",e[2].dataType,e[2].dims.length,ee)),Ie.push(...L(e[2].dims)),he.push(\"rank\")}Ie.push(...L(Q));let G=ee=>`\\n ${ee.registerUniform(\"dimAOuter\",\"i32\").registerUniform(\"dimBOuter\",\"i32\").registerUniform(\"dimInner\",\"i32\").registerInternalVariables(b).declareVariables(...fe,Pe)}\\n ${We}\\n ${Ge}\\n ${$?mr(x,E,z,b):fr(x,E,z,b)}\\n `;return{name:\"MatMul\",shaderCache:{hint:t.activationCacheKey+`${x}${$}${n}`,inputDependencies:he},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:A[0],y:A[1],z:A[2]},programUniforms:Ie}),getShaderSource:G}}});var ll,Wi,Hi=j(()=>{\"use strict\";Ct();ve();It();Jr();Nn();hr();ll=(e,t,r,o,n=!1,s,u=4,l=4,a=4,p=\"f32\")=>{let h=Y=>{switch(Y){case 1:return\"resData = x[xIndex];\";case 3:return`resData = vec3<${p}>(x[xIndex], x[xIndex + 1], x[xIndex + 2]);`;case 4:return\"resData = x[xIndex / 4];\";default:throw new Error(`innerElementSize ${Y} is not supported.`)}},g=Y=>{switch(Y){case 1:return\"return w[row * i32(uniforms.w_shape[3]) + colIn];\";case 4:return\"return w[row * i32(uniforms.w_shape[3]) / 4 + colIn];\";default:throw new Error(`innerElementSize ${Y} is not supported.`)}},b=e?`\\n let coord = vec4(batch, xRow, xCol, xCh);\\n `:`\\n let coord = vec4(batch, xCh, xRow, xCol);\\n `,w=e?`\\n let coords = vec4(\\n batch,\\n row / outWidth,\\n row % outWidth,\\n col);\\n `:`\\n let coords = vec4(\\n batch,\\n row,\\n col / outWidth,\\n col % outWidth);\\n `,y=e?\"i32(uniforms.x_shape[1])\":\"i32(uniforms.x_shape[2])\",_=e?\"i32(uniforms.x_shape[2])\":\"i32(uniforms.x_shape[3])\",I=e?\"row\":\"col\",$=e?\"col\":\"row\",x=`\\n let inChannels = i32(uniforms.w_shape[2]);\\n let outWidth = ${e?\"i32(uniforms.result_shape[2])\":\"i32(uniforms.result_shape[3])\"};\\n let outRow = ${I} / outWidth;\\n let outCol = ${I} % outWidth;\\n\\n let WRow = ${$} / (filterDims[1] * inChannels);\\n let WCol = ${$} / inChannels % filterDims[1];\\n let xRow = outRow * stride[0] + dilation[0] * WRow - pad[0];\\n let xCol = outCol * stride[1] + dilation[1] * WCol - pad[1];\\n let xCh = ${$} % inChannels;\\n var resData = ${Ke(u,p)}(0.0);\\n // The bounds checking is always needed since we use it to pad zero for\\n // the \\'same\\' padding type.\\n if (xRow >= 0 && xRow < ${y} && xCol >= 0 && xCol < ${_}) {\\n ${b}\\n let xIndex = getIndexFromCoords4D(coord, vec4(uniforms.x_shape));\\n ${h(u)}\\n }\\n return resData;`,E=e?t&&o?`\\n let col = colIn * ${u};\\n ${x}`:`\\n let col = colIn * ${u};\\n if (row < uniforms.dimAOuter && col < uniforms.dimInner) {\\n ${x}\\n }\\n return ${Ke(u,p)}(0.0);`:o&&r?`\\n let col = colIn * ${u};\\n ${x}`:`\\n let col = colIn * ${u};\\n if (row < uniforms.dimInner && col < uniforms.dimBOuter) {\\n ${x}\\n }\\n return ${Ke(u,p)}(0.0);`,A=`${g(l)}`,z=Ke(a,p),R=e?Ke(u,p):Ke(l,p),V=e?Ke(l,p):Ke(u,p),{activationFunction:T,applyActivation:N}=gt(s,z);return`\\n ${T}\\n fn mm_readA(batch: i32, row : i32, colIn : i32) -> ${R} {\\n ${e?E:A}\\n }\\n\\n fn mm_readB(batch: i32, row : i32, colIn : i32) -> ${V} {\\n ${e?A:E}\\n }\\n\\n fn mm_write(batch: i32, row : i32, colIn : i32, valueIn : ${z}) {\\n let col = colIn * ${a};\\n if (row < uniforms.dimAOuter && col < uniforms.dimBOuter)\\n {\\n var value = valueIn;\\n let outWidth = ${e?\"i32(uniforms.result_shape[2])\":\"i32(uniforms.result_shape[3])\"};\\n ${w}\\n ${Xr(n)}\\n ${N}\\n setOutputAtCoords(coords[0], coords[1], coords[2], coords[3], value);\\n }\\n }`},Wi=(e,t,r,o,n,s,u,l)=>{let a=t.format===\"NHWC\",p=a?e[0].dims[3]:e[0].dims[1],h=r[0],g=a?r[2]:r[3],b=a?r[1]:r[2],w=a?r[3]:r[1],y=a&&(p%4===0||p%3===0)&&w%4===0,_=a?w:g*b,I=a?g*b:w,$=[8,8,1],x=o<=8?[4,1,1]:[4,4,1],E=[Math.ceil(_/$[0]/x[0]),Math.ceil(I/$[1]/x[1]),Math.ceil(h/$[2]/x[2])];Be(\"verbose\",()=>`[conv2d_mm_webgpu] dispatch = ${E}`);let A=y?a&&p%4!==0?3:4:1,z=$[1]*x[1],R=$[0]*x[0],V=Math.max($[0]*A,$[1]),T=o%z===0,N=n%R===0,te=s%V===0,Y=y?[A,4,4]:[1,1,1],K=Le(e[0].dataType),Q=y?4:1,Z=[{type:\"int32\",data:o},{type:\"int32\",data:n},{type:\"int32\",data:s}],Ee=M(\"x\",e[0].dataType,e[0].dims.length,A===3?1:A),Pe=M(\"w\",e[1].dataType,e[1].dims.length,Q),fe=[Ee,Pe];Z.push(...L(e[0].dims)),Z.push(...L(e[1].dims));let Ie=`\\n fn setOutputAtIndex(flatIndex : i32, value : ${y?`vec4<${K}>`:K}) {\\n result[flatIndex] = ${y?`vec4<${K}>`:K}(value);\\n }\\n fn setOutputAtCoords(d0 : i32, d1 : i32, d2 : i32, d3 : i32, value : ${y?`vec4<${K}>`:K}) {\\n let flatIndex = getOutputIndexFromCoords(vec4(d0, d1, d2, d3));\\n setOutputAtIndex(flatIndex ${y?\"/ 4\":\"\"}, value);\\n }`;if(u){let ye=M(\"bias\",e[2].dataType,e[2].dims.length,Q);fe.push(ye),Z.push(...L(e[2].dims)),Ie+=`\\n fn getBiasByOutputCoords(coords : vec4) -> ${y?`vec4<${K}>`:K} {\\n return bias[coords.${a?\"w\":\"y\"}${y?\"/ 4\":\"\"}];\\n }`}let he=F(\"result\",e[0].dataType,r.length,Q);return Z.push(...L(r)),{name:\"Conv2DMatMul\",shaderCache:{hint:t.cacheKey},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:E[0],y:E[1],z:E[2]},programUniforms:Z}),getShaderSource:ye=>`\\n ${en(\"uniforms.result_strides\")}\\n //struct Uniforms { xShape : vec4, wShape : vec4, outShape : vec4,\\n // outShapeStrides: vec3, filterDims : vec2, pad : vec2, stride : vec2,\\n // dilation : vec2, dimAOuter : i32, dimBOuter : i32, dimInner : i32 };\\n ${ye.registerUniform(\"dimAOuter\",\"i32\").registerUniform(\"dimBOuter\",\"i32\").registerUniform(\"dimInner\",\"i32\").declareVariables(...fe,he)}\\n const filterDims : vec2 = vec2(${t.kernelShape[0]}, ${t.kernelShape[1]});\\n const pad : vec2 = vec2(${t.pads[0]}, ${t.pads[1]});\\n const stride : vec2 = vec2(${t.strides[0]}, ${t.strides[1]});\\n const dilation : vec2 = vec2(${t.dilations[0]}, ${t.dilations[1]});\\n ${Ie}\\n ${ll(a,T,N,te,u,t,Y[0],Y[1],Y[2],K)}\\n ${y?mr(x,$,K,void 0,!a,V):fr(x,$,K,void 0,!a,V,!1,void 0,l)}`}}});var Wn,Gi=j(()=>{\"use strict\";$e();ve();Gn();It();Wn=(e,t,r)=>{let o=e.length>2,n=o?\"value += b[output_channel];\":\"\",s=e[0].dims,u=e[1].dims,l=u[0]/t.group,a=t.format===\"NHWC\",p=Hn(s,u,t.dilations,t.pads,t.strides,a),h=U.size(p),g=F(\"output\",e[0].dataType,p),{activationFunction:b,applyActivation:w}=gt(t,g.type.value),y=M(\"x\",e[0].dataType,s),_=M(\"w\",e[1].dataType,u),I=[y,_];o&&I.push(M(\"b\",e[2].dataType,e[2].dims));let $=x=>`\\n const strides: vec2 = vec2(${t.strides[0]}u, ${t.strides[1]}u);\\n const pads: vec2 = vec2(${t.pads[0]}u, ${t.pads[1]}u);\\n\\n ${x.declareVariables(...I,g)}\\n\\n ${b}\\n\\n ${x.mainStart()}\\n ${x.guardAgainstOutOfBoundsWorkgroupSizes(h)}\\n\\n let outputIndices = ${g.offsetToIndices(\"global_idx\")};\\n let batch: u32 = outputIndices[0];\\n let output_channel: u32 = outputIndices[${a?3:1}];\\n let xRCCorner: vec2 = vec2(outputIndices[${a?1:2}], outputIndices[${a?2:3}]) * strides - pads;\\n let group_id: u32 = output_channel / ${l}u;\\n\\n var value: ${g.type.value} = ${g.type.value}(0);\\n for (var wInChannel: u32 = 0u; wInChannel < ${u[1]}u; wInChannel++) {\\n let input_channel = group_id * ${u[1]}u + wInChannel;\\n for (var wHeight: u32 = 0u; wHeight < ${u[2]}u; wHeight++) {\\n let xHeight = xRCCorner.x + wHeight * ${t.dilations[0]}u;\\n\\n if (xHeight < 0u || xHeight >= ${s[a?1:2]}u) {\\n continue;\\n }\\n\\n for (var wWidth: u32 = 0u; wWidth < ${u[3]}u; wWidth++) {\\n let xWidth = xRCCorner.y + wWidth * ${t.dilations[1]}u;\\n if (xWidth < 0u || xWidth >= ${s[a?2:3]}u) {\\n continue;\\n }\\n\\n let xVal = ${a?y.get(\"batch\",\"xHeight\",\"xWidth\",\"input_channel\"):y.get(\"batch\",\"input_channel\",\"xHeight\",\"xWidth\")};\\n let wVal = ${_.get(\"output_channel\",\"wInChannel\",\"wHeight\",\"wWidth\")};\\n value += xVal*wVal;\\n }\\n }\\n }\\n ${n}\\n ${w}\\n ${g.setByOffset(\"global_idx\",\"value\")}\\n }`;return{name:\"GroupedConv\",shaderCache:{hint:t.cacheKey},getRunData:()=>({outputs:[{dims:r?r(p):p,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(h/64)}}),getShaderSource:$}}});var Ln,cl,Li,Fn=j(()=>{\"use strict\";$e();hr();ve();It();Ln=(e,t,r,o,n=!1)=>{let s=e[0].dims,u=e[1].dims,l=s[s.length-2],a=u[u.length-1],p=s[s.length-1],h=Fe(a),g=Fe(p),b=Fe(l),w=U.size(r)/h/b,y=e.length>2,_=o?o.slice(0,-2):r.slice(0,-2),$=[U.size(_),l,a],x=[{type:\"uint32\",data:w},{type:\"uint32\",data:l},{type:\"uint32\",data:a},{type:\"uint32\",data:p},...L(_),...L(s),...L(u)];y&&x.push(...L(e[2].dims)),x.push(...L($));let E=A=>{let z=Fr(\"batch_dims\",e[0].dataType,_.length),R=M(\"a\",e[0].dataType,s.length,g),V=M(\"b\",e[1].dataType,u.length,h),T=F(\"output\",e[0].dataType,$.length,h),{activationFunction:N,applyActivation:te}=gt(t,T.type.value),Y=[R,V],K=\"\";if(y){let he=n?h:1;Y.push(M(\"bias\",e[2].dataType,e[2].dims.length,he)),K=`${n?`value += bias[col / ${he}];`:`value += ${T.type.value}(bias[row + i]);`}`}let Q=s.slice(0,-2),Z=u.slice(0,-2),Ee=Ft(Q,_),Pe=Ft(Z,_),fe=(he,ye)=>{let We=he.rank,De=he.name;if(We===2)return`var ${De}_indices = ${he.type.indices}(0u, 0u);`;let Ge=z.rank,G=`var ${De}_indices: ${he.type.indices};`;for(let ee=We-2-1,be=Ge-1;ee>=0;ee--,be--)G+=`\\n${De}_indices[${ee}] = ${Ge>1?`batch_indices[${be}]`:\"batch_indices\"};`;return ye.forEach(ee=>{G+=`\\n${De}_indices[${ee}] = 0;`}),G+=`${De}_indices[${We-2}] = 0u;\\n ${De}_indices[${We-1}] = 0u;`,G},Ie=()=>{let he=`var a_data: ${R.type.value};`;for(let ye=0;ye;\\n for (var k: u32 = 0u; k < uniforms.K; k = k + ${g}) {\\n ${Ie()}\\n }\\n for (var i = 0u; i < ${b}u; i++) {\\n var value = values[i];\\n ${K}\\n ${te}\\n let cur_indices = ${T.type.indices}(batch, row + i, col);\\n let offset = ${T.indicesToOffset(\"cur_indices\")};\\n ${T.setByOffset(`offset / ${h}`,\"value\")};\\n }\\n }\\n `};return{name:\"MatMulNaive\",shaderCache:{hint:`${t.activationCacheKey}_${h}_${g}_${b}_${n}`,inputDependencies:y?[\"rank\",\"rank\",\"rank\"]:[\"rank\",\"rank\"]},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(w/64)},programUniforms:x}),getShaderSource:E}},cl=e=>{if(!e||e.length!==2)throw new Error(\"MatMul requires 2 inputs.\");if(e[0].dims[e[0].dims.length-1]!==e[1].dims[e[1].dims.length-2])throw new Error(\"shared dimension does not match.\")},Li=e=>{cl(e.inputs);let t=dt.calcShape(e.inputs[0].dims,e.inputs[1].dims,!0);if(!t)throw new Error(\"Can\\'t use matmul on the given tensors\");let r=t[t.length-1],o=e.inputs[0].dims[e.inputs[0].dims.length-1];r<8&&o<8?e.compute(Ln(e.inputs,{activation:\"\",activationCacheKey:\"\"},t)):e.compute(tn(e.inputs,{activation:\"\",activationCacheKey:\"\"},t))}});var Hn,Fi,pl,ji,jn,ml,fl,qn,Gn=j(()=>{\"use strict\";$e();je();Hi();hr();Gi();It();Fn();jt();Hn=(e,t,r,o,n,s)=>{let u=e[0],l=e.slice(s?1:2,s?3:4),a=l.length,p=t[0],g=t.slice(2).map((y,_)=>y+(y-1)*(r[_]-1)),w=l.map((y,_)=>y+o[_]+o[_+a]).map((y,_)=>Math.floor((y-g[_]+n[_])/n[_]));return w.splice(0,0,u),w.splice(s?3:1,0,p),w},Fi=[2,3,1,0],pl=(e,t)=>{if(!e||e.length!==2&&e.length!==3)throw new Error(\"Conv requires 2 or 3 inputs\");if(e[0].dims.length!==4&&e[0].dims.length!==3)throw new Error(\"currently only support conv 1D and 2D\");if(e[0].dims.length!==e[1].dims.length)throw new Error(\"filter does not have same dimension as input\");let r=e[0].dims[t.format===\"NHWC\"?e[0].dims.length-1:1],o=e[1].dims[1]*t.group;if(r!==o)throw new Error(\"FILTER_IN_CHANNEL should be equal to DATA_CHANNEL\");if(e.length===3&&(e[2].dims.length!==1||e[1].dims[0]!==e[2].dims[0]))throw new Error(\"invalid bias\");let n=e[0].dims.length-2;if(t.dilations.length!==n)throw new Error(`dilations should be ${n}D`);if(t.strides.length!==n)throw new Error(`strides should be ${n}D`);if(t.pads.length!==n*2)throw new Error(`pads should be ${n*2}D`);if(t.kernelShape.length!==0&&t.kernelShape.length!==e[1].dims.length-2)throw new Error(\"invalid kernel shape\")},ji=(e,t)=>{let r=e.kernelShape.slice();for(let s=2;s{let t=Qr(e),r=e.format,o=[\"NOTSET\",\"VALID\",\"SAME_UPPER\",\"SAME_LOWER\"][e.auto_pad],n=e.dilations,s=e.group,u=e.kernel_shape,l=e.pads,a=e.strides,p=e.w_is_const();return ge({autoPad:o,format:r,dilations:n,group:s,kernelShape:u,pads:l,strides:a,wIsConst:p,...t})},ml=(e,t,r)=>{let o=ji(r,t),n=r.format===\"NHWC\";if(r.group!==1){e.compute(Wn(t,o));return}let s=t.length===3,u=t[0].dims[n?1:2],l=t[0].dims[n?2:3],a=t[0].dims[n?3:1],p=t[1].dims[2],h=t[1].dims[3],g=Hn(t[0].dims,t[1].dims,r.dilations,o.pads,r.strides,n),b=g[n?1:2],w=g[n?2:3],y=g[n?3:1],_=n&&p===u&&h===l&&r.pads[0]===0&&r.pads[1]===0;if(_||p===1&&h===1&&r.dilations[0]===1&&r.dilations[1]===1&&r.strides[0]===1&&r.strides[1]===1&&r.pads[0]===0&&r.pads[1]===0){let R=g[0],V,T,N,te=[];if(n){let Q=e.kernelCustomData.wT??e.compute(it(t[1],Fi),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];if(r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=Q),_){let Z=u*l*a;V=t[0].reshape([1,R,Z]),T=Q.reshape([1,Z,y]),N=[1,R,y]}else V=t[0].reshape([R,u*l,a]),T=Q.reshape([1,a,y]),N=[R,b*w,y];te.push(V),te.push(T)}else V=t[0].reshape([R,a,u*l]),T=t[1].reshape([1,y,a]),N=[R,y,b*w],te.push(T),te.push(V);s&&te.push(t[2]);let Y=N[2],K=te[0].dims[te[0].dims.length-1];Y<8&&K<8?e.compute(Ln(te,o,g,N,n),{inputs:te}):e.compute(tn(te,o,g,N,n),{inputs:te});return}let I=!0,$=e.kernelCustomData.wT??e.compute(it(t[1],Fi),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=$);let x=[t[0],$];s&&x.push(t[2]);let E=n?b*w:y,A=n?y:b*w,z=p*h*a;e.compute(Wi(x,o,g,E,A,z,s,I),{inputs:x})},fl=(e,t)=>{let r=t.format===\"NHWC\",o=[e.inputs[0].reshape(r?[e.inputs[0].dims[0],1,e.inputs[0].dims[1],e.inputs[0].dims[2]]:[e.inputs[0].dims[0],e.inputs[0].dims[1],1,e.inputs[0].dims[2]]),e.inputs[1].reshape([e.inputs[1].dims[0],e.inputs[1].dims[1],1,e.inputs[1].dims[2]])];e.inputs.length===3&&o.push(e.inputs[2]);let n=[0,t.pads[0],0,t.pads[1]],s=[1].concat(t.strides),u=[1].concat(t.dilations),l=[1].concat(t.kernelShape),a=ji({...t,pads:n,strides:s,dilations:u,kernelShape:l},o);e.compute(Wn(o,a,p=>r?[p[0],p[2],p[3]]:[]))},qn=(e,t)=>{pl(e.inputs,t),e.inputs[0].dims.length===3?fl(e,t):ml(e,e.inputs,t)}});var hl,qi,Ki=j(()=>{\"use strict\";Ct();ve();It();Jr();Nn();hr();hl=(e,t=!1,r,o=4)=>{let n=Ke(o,\"f32\"),s=x=>{switch(x){case 1:return\"return w[getIndexFromCoords4D(coord, vec4(uniforms.w_shape))];\";case 4:return`\\n let coord1 = vec4(coordX, coordY, col + 1, rowInner);\\n let coord2 = vec4(coordX, coordY, col + 2, rowInner);\\n let coord3 = vec4(coordX, coordY, col + 3, rowInner);\\n let v0 = w[getIndexFromCoords4D(coord, vec4(uniforms.w_shape))];\\n let v1 = w[getIndexFromCoords4D(coord1, vec4(uniforms.w_shape))];\\n let v2 = w[getIndexFromCoords4D(coord2, vec4(uniforms.w_shape))];\\n let v3 = w[getIndexFromCoords4D(coord3, vec4(uniforms.w_shape))];\\n return vec4(v0, v1, v2, v3);\\n `;default:throw new Error(`innerElementSize ${x} is not supported.`)}},u=e?`\\n let coord = vec4(batch, iXR, iXC, xCh);\\n `:`\\n let coord = vec4(batch, xCh, iXR, iXC);\\n `,l=e?`\\n let coords = vec4(\\n batch,\\n row / outWidth,\\n row % outWidth,\\n col);\\n `:`\\n let coords = vec4(\\n batch,\\n row,\\n col / outWidth,\\n col % outWidth);\\n `,a=e?\"outBackprop[1]\":\"outBackprop[2]\",p=e?\"outBackprop[2]\":\"outBackprop[3]\",h=e?\"row\":\"col\",g=e?\"col\":\"row\",b=`\\n let inChannels = ${e?\"outBackprop[3]\":\"outBackprop[1]\"};\\n let outWidth = ${e?\"i32(uniforms.result_shape[2])\":\"i32(uniforms.result_shape[3])\"};\\n let outRow = ${h} / outWidth;\\n let outCol = ${h} % outWidth;\\n\\n let WRow = ${g} / (filterDims[1] * inChannels);\\n let WCol = ${g} / inChannels % filterDims[1];\\n let xR = f32(outRow - pads[0] + dilation[0] * WRow) / f32(strides[0]);\\n let xC = f32(outCol - pads[1] + dilation[1] * WCol) / f32(strides[1]);\\n if (xR < 0.0 || xR >= f32(${a}) || fract(xR) > 0.0) {\\n return ${n}(0.0);\\n }\\n if (xC < 0.0 || xC >= f32(${p}) || fract(xC) > 0.0) {\\n return ${n}(0.0);\\n }\\n let iXR = i32(xR);\\n let iXC = i32(xC);\\n let xCh = ${g} % inChannels;\\n ${u}\\n return x[getIndexFromCoords4D(coord, vec4(uniforms.x_shape))/${o}];`,w=e?`\\n let col = colIn * ${o};\\n if (row < uniforms.dimAOuter && col < uniforms.dimInner) {\\n ${b}\\n }\\n return ${n}(0.0);`:`\\n let col = colIn * ${o};\\n if (row < uniforms.dimInner && col < uniforms.dimBOuter) {\\n ${b}\\n }\\n return ${n}(0.0);`,y=`\\n let col = colIn * ${o};\\n let inChannels = ${e?\"outBackprop[3]\":\"outBackprop[1]\"};\\n let coordX = filterDims.x - 1 - row / (filterDims[1] * inChannels);\\n let coordY = filterDims.y - 1 - (row / inChannels) % filterDims[1];\\n if (${e?\"row < uniforms.dimInner && col < uniforms.dimBOuter\":\"row < uniforms.dimInner && col < uniforms.dimAOuter\"} && coordX >= 0 && coordY >= 0) {\\n let rowInner = row % inChannels;\\n let coord = vec4(coordX, coordY, col, rowInner);\\n ${s(o)}\\n }\\n return ${n}(0.0);\\n `,{activationFunction:_,applyActivation:I}=gt(r,n);return`\\n ${_}\\n fn mm_readA(batch: i32, row : i32, colIn : i32) -> ${n} {\\n ${e?w:y}\\n }\\n\\n fn mm_readB(batch: i32, row : i32, colIn : i32) -> ${n} {\\n ${e?y:w}\\n }\\n\\n fn mm_write(batch: i32, row : i32, colIn : i32, valueInput : ${n}) {\\n let col = colIn * ${o};\\n if (row < uniforms.dimAOuter && col < uniforms.dimBOuter) {\\n var value = valueInput;\\n let outWidth = ${e?\"i32(uniforms.result_shape[2])\":\"i32(uniforms.result_shape[3])\"};\\n ${l}\\n ${Xr(t)}\\n ${I}\\n result[getIndexFromCoords4D(coords, vec4(uniforms.result_shape))/${o}] = value;\\n }\\n }`},qi=(e,t,r,o,n,s,u,l)=>{let a=t.format===\"NHWC\",p=a?e[0].dims[3]:e[0].dims[1],h=r[0],g=a?r[2]:r[3],b=a?r[1]:r[2],w=a?r[3]:r[1],y=a?p%4===0&&w%4===0:g%4===0&&w%4===0,_=a?w:g*b,I=a?g*b:w,$=y?[8,8,1]:[_<=4||I<=4?4:16,_>4&&I<=4?4:16,1],x=y?[4,4,1]:[_<=4?1:4,_>4&&I<=4?1:4,1],E=[Math.ceil(_/$[0]/x[0]),Math.ceil(I/$[1]/x[1]),Math.ceil(h/$[2]/x[2])];Be(\"verbose\",()=>`[conv_backprop_mm_webgpu] dispatch = ${E}`);let A=y?4:1,z=Math.max($[0]*A,$[1]),R=y?4:1,V=[{type:\"int32\",data:o},{type:\"int32\",data:n},{type:\"int32\",data:s}],T=M(\"x\",e[0].dataType,e[0].dims.length,R),N=M(\"w\",e[1].dataType,e[1].dims.length,1),te=F(\"result\",e[0].dataType,r.length,R),Y=[T,N];V.push(...L(e[0].dims)),V.push(...L(e[1].dims));let K=\"\";if(u){let Q=M(\"bias\",e[2].dataType,e[2].dims.length,R);Y.push(Q),V.push(...L(e[2].dims)),K+=`\\n fn getBiasByOutputCoords(coords : vec4) -> ${y?\"vec4\":\"f32\"} {\\n return bias[coords.${a?\"w\":\"y\"}${y?\"/ 4\":\"\"}];\\n }`}return V.push(...L(r)),{name:\"Conv2DTransposeMatMul\",shaderCache:{hint:t.cacheKey},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:E[0],y:E[1],z:E[2]},programUniforms:V}),getShaderSource:Q=>`\\n ${en(\"uniforms.result_strides\")}\\n ${Q.registerUniform(\"dimAOuter\",\"i32\").registerUniform(\"dimBOuter\",\"i32\").registerUniform(\"dimInner\",\"i32\").declareVariables(...Y,te)};\\n const outBackprop : vec4 = vec4(${e[0].dims.join(\",\")});\\n const filterDims : vec2 = vec2(${t.kernelShape[a?1:2]}, ${t.kernelShape[a?2:3]});\\n const effectiveFilterDims : vec2 = filterDims + vec2(\\n ${t.dilations[0]<=1?0:(t.kernelShape[a?1:2]-1)*(t.dilations[0]-1)},\\n ${t.dilations[1]<=1?0:(t.kernelShape[a?2:3]-1)*(t.dilations[1]-1)});\\n const pads : vec2 = vec2(i32(effectiveFilterDims[0]) - 1 - (${t.pads[0]+t.pads[2]})/2,\\n i32(effectiveFilterDims[1]) - 1 - (${t.pads[1]+t.pads[3]})/2);\\n const strides : vec2 = vec2(${t.strides[0]}, ${t.strides[1]});\\n const dilation : vec2 = vec2(${t.dilations[0]}, ${t.dilations[1]});\\n const dimAOuter : i32 = ${o};\\n const dimBOuter : i32 = ${n};\\n const dimInner : i32 = ${s};\\n ${K}\\n ${hl(a,u,t,A)}\\n ${y?mr(x,$,\"f32\",void 0,!a,z):fr(x,$,\"f32\",void 0,!a,z,!1,void 0,l)}`}}});var gl,Kn,Yi=j(()=>{\"use strict\";Ct();$e();ve();gl=(e,t,r,o,n,s,u=!1,l)=>{let a=r.format===\"NHWC\",p=a?1:2,h=a?2:3,g=a?3:1,b=U.size(o),w=u?2:1,y=r.group,_=t[1].dims,I=_[0]/y,$=_[1],x=`\\n fn setOutputAtIndex(flatIndex : u32, value : ${u?`vec4<${l}>`:l}) {\\n result[flatIndex] = ${u?`vec4<${l}>`:l}(value);\\n }`;n&&(x+=`\\n fn getBiasByOutputCoords(coords : vec4) -> ${u?`vec4<${l}>`:l} {\\n return bias[coords.${a?\"w\":\"y\"}${u?\"/ 4\":\"\"}];\\n }`);let E=u?4:1,A=M(\"W\",t[1].dataType,t[1].dims,E),z=M(\"Dy\",t[0].dataType,t[0].dims,E),R=[z,A];n&&R.push(M(\"bias\",t[2].dataType,[o[g]],E));let V=F(\"result\",t[0].dataType,o,E),T=`{\\n let batch: u32 = ${s?\"global_id.z\":\"workgroup_id.z\"} / outShape[1];\\n let r = ${s?\"global_id.z\":\"workgroup_id.z\"} % outShape[1];\\n let c = ${s?\"global_id.y\":\"workgroup_id.y\"} * ${w};\\n let d1: u32 = ${s?\"global_id.x\":\"workgroup_id.x\"} * 4;\\n\\n let dyCorner = vec2(i32(r), i32(c)) - vec2(pads);\\n\\n // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).\\n // ? = to be determined. : = across all values in that axis.\\n var dotProd: array, ${w}>;\\n for (var i = 0; i < ${w}; i++) {\\n dotProd[i] = vec4<${l}>(0.0);\\n }\\n for (var wR: u32 = 0; wR < filterDims[0]; wR = wR + 1) {\\n var dyR = (${l}(dyCorner.x) + ${l}(wR)) / ${l}(strides.x);\\n let wRPerm = filterDims[0] - 1 - wR;\\n if (dyR < 0.0 || dyR >= ${l}(outBackprop[1]) ||\\n fract(dyR) > 0.0 || wRPerm < 0) {\\n continue;\\n }\\n let idyR: u32 = u32(dyR);\\n\\n for (var wC: u32 = 0; wC < filterDims[1]; wC = wC + 1) {\\n let dyC = (${l}(dyCorner.y) + ${l}(wC)) / ${l}(strides.y);\\n let dyC2 = (${l}(dyCorner.y) + 1.0 + ${l}(wC)) / ${l}(strides.y);\\n let wCPerm = filterDims[1] - 1 - wC;\\n if (wCPerm < 0) {\\n continue;\\n }\\n var bDyCVal = true;\\n var bDyCVal2 = true;\\n if (dyC < 0.0 || dyC >= ${l}(outBackprop[2]) ||\\n fract(dyC) > 0.0) {\\n bDyCVal = false;\\n }\\n if (dyC2 < 0.0 || dyC2 >= ${l}(outBackprop[2]) ||\\n fract(dyC2) > 0.0) {\\n bDyCVal2 = false;\\n }\\n\\n let idyC: u32 = u32(dyC);\\n let idyC2: u32 = u32(dyC2);\\n if (bDyCVal && bDyCVal2) {\\n let d2Length = outBackprop[3];\\n for (var d2 :u32 = 0; d2 < d2Length; d2 = d2 + 4) {\\n let wValue0 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1\",\"d2\")};\\n let wValue1 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 1\",\"d2\")};\\n let wValue2 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 2\",\"d2\")};\\n let wValue3 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 3\",\"d2\")};\\n\\n var xValue = ${z.get(\"batch\",\"idyR\",\"idyC\",\"d2\")};\\n let tmpval = vec4<${l}>(dot(xValue, wValue0),\\n dot(xValue, wValue1),\\n dot(xValue, wValue2),\\n dot(xValue, wValue3));\\n dotProd[0] = dotProd[0] + tmpval;\\n\\n xValue = ${z.get(\"batch\",\"idyR\",\"idyC2\",\"d2\")};\\n\\n dotProd[1] = dotProd[1] + vec4<${l}>(dot(xValue, wValue0),\\n dot(xValue, wValue1),\\n dot(xValue, wValue2),\\n dot(xValue, wValue3));\\n }\\n } else if (bDyCVal) {\\n let d2Length = outBackprop[${g}];\\n for (var d2: u32 = 0; d2 < d2Length; d2 = d2 + 4) {\\n let wValue0 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1\",\"d2\")};\\n let wValue1 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 1\",\"d2\")};\\n let wValue2 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 2\",\"d2\")};\\n let wValue3 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 3\",\"d2\")};\\n\\n var xValue = ${z.get(\"batch\",\"idyR\",\"idyC\",\"d2\")};\\n let tmpval = vec4<${l}>(dot(xValue, wValue0),\\n dot(xValue, wValue1),\\n dot(xValue, wValue2),\\n dot(xValue, wValue3));\\n dotProd[0] = dotProd[0] + tmpval;\\n }\\n } else if (bDyCVal2) {\\n let d2Length = outBackprop[3];\\n for (var d2: u32 = 0; d2 < d2Length; d2 = d2 + 4) {\\n let wValue0 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1\",\"d2\")};\\n let wValue1 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 1\",\"d2\")};\\n let wValue2 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 2\",\"d2\")};\\n let wValue3 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 3\",\"d2\")};\\n\\n var xValue = ${z.get(\"batch\",\"idyR\",\"idyC2\",\"d2\")};\\n let tmpval = vec4<${l}>(dot(xValue, wValue0),\\n dot(xValue, wValue1),\\n dot(xValue, wValue2),\\n dot(xValue, wValue3));\\n dotProd[1] = dotProd[1] + tmpval;\\n }\\n }\\n }\\n }\\n\\n for (var i: u32 = 0; i < ${w}; i = i + 1) {\\n let value = dotProd[i] + ${n?\"bias[c+i]\":`vec4<${l}>(0.0)`};\\n ${V.set(\"batch\",\"r\",\"c + i\",\"d1\",\"value\")};\\n }\\n }`,N=`\\n let outputIndices = ${V.offsetToIndices(\"global_idx\")};\\n let batch = ${V.indicesGet(\"outputIndices\",0)};\\n let d1 = ${V.indicesGet(\"outputIndices\",g)};\\n let r = ${V.indicesGet(\"outputIndices\",p)};\\n let c = ${V.indicesGet(\"outputIndices\",h)};\\n let dyCorner = vec2(i32(r), i32(c)) - pads;\\n let dyRCorner = dyCorner.x;\\n let dyCCorner = dyCorner.y;\\n let groupId = d1 / ${$};\\n let wOutChannel = d1 - groupId * ${$};\\n // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).\\n // ? = to be determined. : = across all values in that axis.\\n var dotProd = ${l}(0.0);\\n for (var wR: u32 = 0; wR < effectiveFilterDims.x; wR = wR + 1) {\\n if (wR % dilations.x != 0) {\\n continue;\\n }\\n let dyR = (${l}(dyRCorner) + ${l}(wR)) / ${l}(strides[0]);\\n let wRPerm = filterDims.x - 1 - wR / dilations.x;\\n if (dyR < 0.0 || dyR >= ${l}(outBackprop[${p}]) || fract(dyR) > 0.0 ||\\n wRPerm < 0) {\\n continue;\\n }\\n let idyR: u32 = u32(dyR);\\n\\n for (var wC: u32 = 0; wC < effectiveFilterDims.y; wC = wC + 1) {\\n if (wC % dilations.y != 0) {\\n continue;\\n }\\n let dyC = (${l}(dyCCorner) + ${l}(wC)) / ${l}(strides.y);\\n let wCPerm = filterDims.y - 1 - wC / dilations.y;\\n if (dyC < 0.0 || dyC >= ${l}(outBackprop[${h}]) ||\\n fract(dyC) > 0.0 || wCPerm < 0) {\\n continue;\\n }\\n let idyC: u32 = u32(dyC);\\n var inputChannel = groupId * ${I};\\n for (var d2: u32 = 0; d2 < ${I}; d2 = d2 + 1) {\\n let xValue = ${a?z.get(\"batch\",\"idyR\",\"idyC\",\"inputChannel\"):z.get(\"batch\",\"inputChannel\",\"idyR\",\"idyC\")};\\n let wValue = ${A.get(\"inputChannel\",\"wOutChannel\",\"u32(wRPerm)\",\"u32(wCPerm)\")};\\n dotProd = dotProd + xValue * wValue;\\n inputChannel = inputChannel + 1;\\n }\\n }\\n }\\n let value = dotProd + ${n?\"bias[d1]\":`${l}(0.0)`};\\n ${V.setByOffset(\"global_idx\",\"value\")};\\n `;return`\\n ${e.declareVariables(...R,V)}\\n ${x}\\n const outShape : vec4 = vec4(${o.join(\",\")});\\n const outBackprop : vec4 = vec4(${t[0].dims.join(\",\")});\\n const strides : vec2 = vec2(${r.strides[0]}, ${r.strides[1]});\\n const filterDims : vec2 = vec2(${r.kernelShape[a?1:2]}, ${r.kernelShape[a?2:3]});\\n const dilations : vec2 = vec2(${r.dilations[0]}, ${r.dilations[1]});\\n const effectiveFilterDims : vec2 = filterDims + vec2(\\n ${r.dilations[0]<=1?0:(r.kernelShape[a?1:2]-1)*(r.dilations[0]-1)},\\n ${r.dilations[1]<=1?0:(r.kernelShape[a?2:3]-1)*(r.dilations[1]-1)});\\n const pads : vec2 = vec2(i32(effectiveFilterDims[0]) - 1 - (${r.pads[0]+r.pads[2]})/2,\\n i32(effectiveFilterDims[1]) - 1 - (${r.pads[1]+r.pads[3]})/2);\\n ${e.mainStart()}\\n ${e.guardAgainstOutOfBoundsWorkgroupSizes(b)};\\n ${u?T:N}}`},Kn=(e,t,r)=>{let o=e.length>2,n=t.outputShape,s=U.size(n),u=[Math.ceil(s/64),1,1];Be(\"verbose\",()=>`[conv2d_backprop_webgpu] dispatch = ${u}`);let l=Le(e[0].dataType);return{name:\"ConvTranspose2D\",shaderCache:{hint:t.cacheKey},getRunData:()=>({dispatchGroup:{x:u[0],y:u[1],z:u[2]},outputs:[{dims:r?r(n):n,dataType:e[0].dataType}]}),getShaderSource:a=>gl(a,e,t,n,o,u[1]===1&&u[2]===1,!1,l)}}});var yl,bl,wl,Zi,Qi,vl,$l,Sl,xl,Xi,Ji=j(()=>{\"use strict\";je();Ki();Yi();It();jt();yl=(e,t,r,o,n,s)=>(e-1)*t+r+(o-1)*n+1-s,bl=(e,t,r,o,n)=>{let s=Math.floor(e/2);t===\"SAME_UPPER\"?(r[o]=s,r[n]=e-s):t===\"SAME_LOWER\"&&(r[o]=e-s,r[n]=s)},wl=(e,t,r,o,n,s,u,l,a,p)=>{let h=e.length-2,g=p.length===0;if(a.length===0)for(let y=0;y{let r=e.kernelShape.slice();if(e.kernelShape.length===0||e.kernelShape.reduce((b,w)=>b*w,1)===0){r.length=0;for(let b=2;bb+w,0)===0){let b=t[0].dims.length-2;a=new Array(b).fill(1)}let p=e.strides.slice();if(p.reduce((b,w)=>b+w,0)===0){let b=t[0].dims.length-2;p=new Array(b).fill(1)}wl(l,r,a,e.autoPad,e.group,n,p,o,u,s);let h=Object.assign({},e),g=e.cacheKey+[r.join(\"n,\"),n.join(\",\"),p.join(\",\"),u.join(\",\"),s.join(\",\"),a.join(\",\")].join(\"_\");return Object.assign(h,{kernelShape:r,pads:n,outputPadding:u,outputShape:s,dilations:a,strides:p,cacheKey:g}),h},Qi=e=>{let t=Qr(e),r=e.format,o=[\"NOTSET\",\"VALID\",\"SAME_UPPER\",\"SAME_LOWER\"][typeof e.autoPad>\"u\"?0:e.autoPad],n=e.dilations,s=e.group,u=e.kernelShape,l=e.pads,a=e.strides,p=e.wIsConst(),h=e.outputPadding,g=e.outputShape;return ge({autoPad:o,format:r,dilations:n,group:s,kernelShape:u,outputPadding:h,outputShape:g,pads:l,strides:a,wIsConst:p,...t})},vl=(e,t)=>{if(!e||e.length!==2&&e.length!==3)throw new Error(\"Conv requires 2 or 3 inputs\");if(e[0].dims.length!==4&&e[0].dims.length!==3)throw new Error(\"currently only support 2-dimensional conv\");if(e[0].dims.length!==e[1].dims.length)throw new Error(\"filter does not have same dimension as input\");let r=e[0].dims[t.format===\"NHWC\"?e[0].dims.length-1:1],o=e[1].dims[0];if(r!==o)throw new Error(\"FILTER_IN_CHANNEL should be equal to DATA_CHANNEL\");let n=e[1].dims[1]*t.group;if(e.length===3&&(e[2].dims.length!==1||e[2].dims[0]!==n))throw new Error(\"invalid bias\");let s=e[0].dims.length-2;if(t.dilations.reduce((h,g)=>h+g,0)>0&&t.dilations.length!==s)throw new Error(`dilations should be ${s}D`);if(t.strides.reduce((h,g)=>h+g,0)>0&&t.strides.length!==s)throw new Error(`strides should be ${s}D`);if(t.pads.reduce((h,g)=>h+g,0)>0&&t.pads.length!==s*2)throw new Error(`pads should be ${s*2}D`);if(t.outputPadding.length!==s&&t.outputPadding.length!==0)throw new Error(`output_padding should be ${s}D`);if(t.kernelShape.reduce((h,g)=>h+g,0)>0&&t.kernelShape.length!==0&&t.kernelShape.length!==e[1].dims.length-2)throw new Error(\"invalid kernel shape\");if(t.outputShape.length!==0&&t.outputShape.length!==e[0].dims.length-2)throw new Error(\"invalid output shape\")},$l=[2,3,1,0],Sl=(e,t,r)=>{let o=Zi(r,t),n=r.format===\"NHWC\",s=o.outputShape,u=s[n?3:1],l=t[0].dims[n?3:1];if(o.group!==1||u===1&&l===1){e.compute(Kn(t,o));return}let a=s[n?1:2],p=s[n?2:3],h=t[1].dims[2],g=t[1].dims[3],b=n?a*p:u,w=n?u:a*p,y=h*g*l,_=!0,I=e.kernelCustomData.wT??e.compute(it(t[1],$l),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=I);let $=[t[0],I],x=t.length===3;x&&(!n&&t[2].dims.length===1?$.push(t[2].reshape([t[2].dims[0],1,1])):$.push(t[2])),e.compute(qi($,o,s,b,w,y,x,_),{inputs:$})},xl=(e,t)=>{let r=t.format===\"NHWC\",o=[e.inputs[0].reshape(r?[e.inputs[0].dims[0],1,e.inputs[0].dims[1],e.inputs[0].dims[2]]:[e.inputs[0].dims[0],e.inputs[0].dims[1],1,e.inputs[0].dims[2]]),e.inputs[1].reshape([e.inputs[1].dims[0],e.inputs[1].dims[1],1,e.inputs[1].dims[2]])];o.length===3&&o.push(e.inputs[2]);let n=t.kernelShape;(n.length===0||n[0]===0)&&(n=[e.inputs[1].dims[2]]);let s=t.dilations;(s.length===0||s[0]===0)&&(s=[1]);let u=t.strides;(u.length===0||u[0]===0)&&(u=[1]);let l=t.pads;l.length===0&&(l=[0,0]),l=[0,l[0],0,l[1]],u=[1].concat(u),s=[1].concat(s),n=[1].concat(n);let a=Zi({...t,pads:l,strides:u,dilations:s,kernelShape:n},o);e.compute(Kn(o,a,p=>r?[p[0],p[2],p[3]]:[p[0],p[1],p[3]]))},Xi=(e,t)=>{vl(e.inputs,t),e.inputs[0].dims.length===3?xl(e,t):Sl(e,e.inputs,t)}});var _l,es,ts,rs=j(()=>{\"use strict\";Ne();$e();je();ve();_l=(e,t,r,o)=>{let n=U.size(t),s=t.length,u=M(\"input\",e,s),l=F(\"output\",e,s),a=r.dataType===6?r.getInt32Array()[0]:Number(r.getBigInt64Array()[0]),p=U.normalizeAxis(a,s),h=g=>{let b=` i32(${u.indicesGet(\"inputIndices\",\"uniforms.axis\")}) `,w=ce(\"uniforms.input_shape\",\"uniforms.axis\",s),y=o.reverse?b+(o.exclusive?\" + 1\":\"\"):\"0\",_=o.reverse?w:b+(o.exclusive?\"\":\" + 1\");return`\\n ${g.registerUniform(\"outputSize\",\"u32\").registerUniform(\"axis\",\"u32\").declareVariables(u,l)}\\n ${g.mainStart()}\\n ${g.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\\n var inputIndices = ${l.offsetToIndices(\"global_idx\")};\\n var sum = ${l.type.value}(0);\\n let first : i32 = ${y};\\n let last : i32 = ${_};\\n for (var i : i32 = first; i < last; i++) {\\n ${u.indicesSet(\"inputIndices\",\"uniforms.axis\",\"u32(i)\")};\\n sum = sum + ${u.getByIndices(\"inputIndices\")};\\n }\\n ${l.setByOffset(\"global_idx\",\"sum\")};\\n }`};return{name:\"CumSum\",shaderCache:{hint:o.cacheKey,inputDependencies:[\"rank\"]},getRunData:()=>({outputs:[{dims:t,dataType:e}],dispatchGroup:{x:Math.ceil(n/64)},programUniforms:[{type:\"uint32\",data:n},{type:\"int32\",data:p},...L(t),...L(t)]}),getShaderSource:h}},es=(e,t)=>{let r=e.inputs[0].dims,o=e.inputs[0].dataType,n=e.inputs[1];e.compute(_l(o,r,n,t),{inputs:[0]})},ts=e=>{let t=e.exclusive===1,r=e.reverse===1;return ge({exclusive:t,reverse:r})}});var Yn,rn,ns,Cl,Il,Zn,Qn,os,Al,as,is,ss=j(()=>{\"use strict\";$e();je();ve();Yn=\"[a-zA-Z]|\\\\\\\\.\\\\\\\\.\\\\\\\\.\",rn=\"(\"+Yn+\")+\",ns=\"^\"+rn+\"$\",Cl=\"(\"+rn+\",)*\"+rn,Il=\"^\"+Cl+\"$\",Zn=class{constructor(t=-1){this.symbolToIndices=new Map,this.inputIndex=t}addSymbol(t,r){let o=this.symbolToIndices.get(t);o===void 0?o=[r]:o.push(r),this.symbolToIndices.set(t,o)}},Qn=class{constructor(t,r){this.equation=r;this.hasEllipsis=!1,this.symbolToInfo=new Map,this.lhs=new Array,this.outputDims=[];let[o,n]=r.includes(\"->\")?r.split(\"->\",2):[r,\"\"];if(!o.match(RegExp(Il)))throw new Error(\"Invalid LHS term\");if(o.split(\",\").forEach((l,a)=>{let p=t[a].dims.slice();if(!l.match(RegExp(ns)))throw new Error(\"Invalid LHS term\");let h=this.processTerm(l,!0,p,a);this.lhs.push(h)}),n===\"\")n+=[...this.symbolToInfo.entries()].filter(([l,a])=>a.count===1||l===\"...\").map(([l])=>l).join(\"\");else if(!n.match(RegExp(rn)))throw new Error(\"Invalid RHS\");n.match(RegExp(Yn,\"g\"))?.forEach(l=>{if(l===\"...\")this.outputDims=this.outputDims.concat(this.ellipsisDims);else{let a=this.symbolToInfo.get(l);if(a===void 0)throw new Error(\"Invalid RHS symbol\");this.outputDims.push(a.dimValue)}}),this.rhs=this.processTerm(n,!1,this.outputDims)}addSymbol(t,r,o){let n=this.symbolToInfo.get(t);if(n!==void 0){if(n.dimValue!==r&&n.count!==1)throw new Error(\"Dimension mismatch\");n.count++,n.inputIndices.push(o)}else n={count:1,dimValue:r,inputIndices:[o]};this.symbolToInfo.set(t,n)}processTerm(t,r,o,n=-1){let s=o.length,u=!1,l=[],a=0;if(!t.match(RegExp(ns))&&!r&&t!==\"\")throw new Error(\"Invalid LHS term\");let p=t.match(RegExp(Yn,\"g\")),h=new Zn(n);return p?.forEach((g,b)=>{if(g===\"...\"){if(u)throw new Error(\"Only one ellipsis is allowed per input term\");u=!0;let w=s-p.length+1;if(w<0)throw new Error(\"Ellipsis out of bounds\");if(l=o.slice(a,a+w),this.hasEllipsis){if(this.ellipsisDims.length!==l.length||this.ellipsisDims.toString()!==l.toString())throw new Error(\"Ellipsis dimensions mismatch\")}else if(r)this.hasEllipsis=!0,this.ellipsisDims=l;else throw new Error(\"Ellipsis must be specified in the LHS\");for(let y=0;ye+\"_max\",Al=(e,t,r,o,n)=>{let u=t.map((w,y)=>e[y]?w.length:w).map((w,y)=>M(`input${y}`,r,w)),l=U.size(n),a=Re(n.length),p=a?n.length:n,h=F(\"output\",r,p),g=[...o.symbolToInfo.keys()].filter(w=>!o.rhs.symbolToIndices.has(w)),b=w=>{let y=[],_=\"var prod = 1.0;\",I=\"var sum = 0.0;\",$=\"sum += prod;\",x=[],E=[],A=[],z=[],R=o.symbolToInfo.size===o.rhs.symbolToIndices.size;o.symbolToInfo.forEach((T,N)=>{if(o.rhs.symbolToIndices.has(N)){let te=o.rhs.symbolToIndices.get(N)?.[0];te!==void 0&&o.lhs.forEach((Y,K)=>{if(T.inputIndices.includes(K)){let Q=Y.symbolToIndices.get(N);if(Q===void 0)throw new Error(\"Invalid symbol error\");Q.forEach(Z=>{y.push(`${u[K].indicesSet(`input${K}Indices`,Z,h.indicesGet(\"outputIndices\",te))}`)})}})}else o.lhs.forEach((te,Y)=>{if(T.inputIndices.includes(Y)){let K=te.symbolToIndices.get(N);if(K===void 0)throw new Error(\"Invalid symbol error\");K.forEach(Q=>{x.push(`${u[Y].indicesSet(`input${Y}Indices`,Q,`${N}`)}`)}),z.push(`prod *= ${u[Y].getByIndices(`input${Y}Indices`)};`)}}),E.push(`for(var ${N}: u32 = 0; ${N} < uniforms.${os(N)}; ${N}++) {`),A.push(\"}\")});let V=R?[...y,`let sum = ${u.map((T,N)=>T.getByIndices(`input${N}Indices`)).join(\" * \")};`]:[...y,I,...E,...x,_,...z,$,...A];return`\\n ${w.registerUniforms(g.map(T=>({name:`${os(T)}`,type:\"u32\"}))).registerUniform(\"outputSize\",\"u32\").declareVariables(...u,h)}\\n\\n ${w.mainStart()}\\n ${w.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\\n var outputIndices = ${h.offsetToIndices(\"global_idx\")};\\n ${u.map((T,N)=>`var input${N}Indices: ${u[N].type.indices};`).join(`\\n`)}\\n ${V.join(`\\n`)};\\n ${h.setByOffset(\"global_idx\",\"sum\")};\\n }`};return{name:\"Einsum\",shaderCache:{hint:o.equation,inputDependencies:e.map(w=>w?\"rank\":\"dims\")},getRunData:()=>{let w=g.filter(_=>o.symbolToInfo.has(_)).map(_=>({type:\"uint32\",data:o.symbolToInfo.get(_)?.dimValue||0}));w.push({type:\"uint32\",data:l});let y=t.filter((_,I)=>e[I]).map((_,I)=>[...L(_)]).reduce((_,I)=>_.concat(I),w);return a&&y.push(...L(n)),{outputs:[{dims:n,dataType:r}],dispatchGroup:{x:Math.ceil(l/64)},programUniforms:y}},getShaderSource:b}},as=(e,t)=>{let r=new Qn(e.inputs,t.equation),o=e.inputs.map((u,l)=>Re(u.dims.length)),n=r.outputDims,s=e.inputs.map((u,l)=>u.dims);e.compute(Al(o,s,e.inputs[0].dataType,r,n))},is=e=>{let t=e.equation.replace(/\\\\s+/g,\"\");return ge({equation:t})}});var Tl,us,El,Ol,ds,ls=j(()=>{\"use strict\";Ne();$e();ve();Tl=e=>{if(!e||e.length!==2)throw new Error(\"Expand requires 2 input.\");let t=e[0].dims,r=Array.from(e[1].getBigInt64Array(),Number),o=r.length{let r=e.length-t.length,o=[];for(let n=0;ne.length>t.length?us(e,t):us(t,e),Ol=e=>{let t=e[0].dims,r=Array.from(e[1].getBigInt64Array(),Number),o=El(t,r),n=e[0].dataType,s=n===9?4:1,u=Math.ceil(U.size(o)/s),l=Re(t.length),a=Re(o.length),p=g=>{let b=l?t.length:t,w=a?o.length:o,y=M(\"input\",n,b,s),_=F(\"output\",n,w,s),I;if(n===9){let $=(x,E,A=\"\")=>`\\n let outputIndices${E} = ${_.offsetToIndices(`outputOffset + ${E}u`)};\\n let offset${E} = ${y.broadcastedIndicesToOffset(`outputIndices${E}`,_)};\\n let index${E} = offset${E} / 4u;\\n let component${E} = offset${E} % 4u;\\n ${x}[${E}] = ${A}(${y.getByOffset(`index${E}`)}[component${E}]);\\n `;I=`\\n let outputOffset = global_idx * ${s};\\n var data = vec4(0);\\n ${$(\"data\",0,\"u32\")}\\n ${$(\"data\",1,\"u32\")}\\n ${$(\"data\",2,\"u32\")}\\n ${$(\"data\",3,\"u32\")}\\n ${_.setByOffset(\"global_idx\",\"data\")}\\n }`}else I=`\\n let outputIndices = ${_.offsetToIndices(\"global_idx\")};\\n let inputOffset = ${y.broadcastedIndicesToOffset(\"outputIndices\",_)};\\n ${_.setByOffset(\"global_idx\",y.getByOffset(\"inputOffset\"))}\\n }`;return`\\n ${g.registerUniform(\"vec_size\",\"u32\").declareVariables(y,_)}\\n ${g.mainStart()}\\n ${g.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.vec_size\")}\\n ${I}`},h=[{type:\"uint32\",data:u}];return l&&h.push(...L(t)),a&&h.push(...L(o)),{name:\"Expand\",shaderCache:{hint:`${o.length}`,inputDependencies:[l?\"rank\":\"dims\"]},getShaderSource:p,getRunData:()=>({outputs:[{dims:o,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:h})}},ds=e=>{Tl(e.inputs),e.compute(Ol(e.inputs),{inputs:[0]})}});var Pl,kl,cs,ps,ms=j(()=>{\"use strict\";Ne();$e();je();ve();Pl=e=>{if(!e||e.length!==2)throw new Error(\"Gather requires 2 inputs.\")},kl=(e,t)=>{let r=e[0].dims,o=e[1].dims,n=r.length,s=U.normalizeAxis(t.axis,n),u=r.slice(0);u.splice(s,1,...o);let l=r[s],a=e[0].dataType===9?4:1,p=Math.ceil(U.size(u)/a),h=Re(e[0].dims.length),g=h?e[0].dims.length:e[0].dims,b=Re(e[1].dims.length),w=b?e[1].dims.length:e[1].dims,y=Re(u.length),_=y?u.length:u,I=[{type:\"uint32\",data:p},{type:\"int32\",data:l},{type:\"uint32\",data:s}];h&&I.push(...L(e[0].dims)),b&&I.push(...L(e[1].dims)),y&&I.push(...L(u));let $=[];$.push(h?\"rank\":\"dims\"),$.push(b?\"rank\":\"dims\");let x=E=>{let A=M(\"data\",e[0].dataType,g,a),z=M(\"inputIndices\",e[1].dataType,w),R=F(\"output\",e[0].dataType,_,a),V=N=>{let te=o.length,Y=`var indicesIndices${N} = ${z.type.indices}(0);`;for(let K=0;K1?`indicesIndices${N}[${K}]`:`indicesIndices${N}`} = ${u.length>1?`outputIndices${N}[uniforms.axis + ${K}]`:`outputIndices${N}`};`;Y+=`\\n var idx${N} = ${z.getByIndices(`indicesIndices${N}`)};\\n if (idx${N} < 0) {\\n idx${N} = idx${N} + uniforms.axisDimLimit;\\n }\\n var dataIndices${N} = ${A.type.indices}(0);\\n `;for(let K=0,Q=0;K1?`dataIndices${N}[${K}]`:`dataIndices${N}`} = u32(idx${N});`,Q+=te):(Y+=`${n>1?`dataIndices${N}[${K}]`:`dataIndices${N}`} = ${u.length>1?`outputIndices${N}[${Q}]`:`outputIndices${N}`};`,Q++);return Y},T;if(e[0].dataType===9){let N=(te,Y,K=\"\")=>`\\n let outputIndices${Y} = ${R.offsetToIndices(`outputOffset + ${Y}u`)};\\n ${V(Y)};\\n let offset${Y} = ${A.indicesToOffset(`dataIndices${Y}`)};\\n let index${Y} = offset${Y} / 4u;\\n let component${Y} = offset${Y} % 4u;\\n ${te}[${Y}] = ${K}(${A.getByOffset(`index${Y}`)}[component${Y}]);\\n `;T=`\\n let outputOffset = global_idx * ${a};\\n var value = vec4(0);\\n ${N(\"value\",0,\"u32\")}\\n ${N(\"value\",1,\"u32\")}\\n ${N(\"value\",2,\"u32\")}\\n ${N(\"value\",3,\"u32\")}\\n ${R.setByOffset(\"global_idx\",\"value\")}\\n `}else T=`\\n let outputIndices = ${R.offsetToIndices(\"global_idx\")};\\n ${V(\"\")};\\n let value = ${A.getByIndices(\"dataIndices\")};\\n ${R.setByOffset(\"global_idx\",\"value\")};\\n `;return`\\n ${E.registerUniform(\"outputSize\",\"u32\").registerUniform(\"axisDimLimit\",\"i32\").registerUniform(\"axis\",\"u32\").declareVariables(A,z,R)}\\n ${E.mainStart()}\\n ${E.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\\n ${T}\\n }`};return{name:\"Gather\",shaderCache:{hint:t.cacheKey,inputDependencies:$},getRunData:()=>({outputs:[{dims:u,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(p/64)},programUniforms:I}),getShaderSource:x}},cs=e=>ge({axis:e.axis}),ps=(e,t)=>{let r=e.inputs;Pl(r),e.compute(kl(e.inputs,t))}});var Rl,Bl,fs,hs,gs=j(()=>{\"use strict\";$e();je();ve();Rl=e=>{if(!e||e.length!==2)throw new Error(\"GatherElements requires 2 inputs.\");if(e[0].dims.length<1)throw new Error(\"GatherElements requires that the data input be rank >= 1.\");if(e[0].dims.length!==e[1].dims.length)throw new Error(`GatherElements requires that the data input and\\n indices input tensors be of same rank.`)},Bl=(e,t)=>{let r=e[0].dims,o=e[0].dataType,n=r.length,s=e[1].dims,u=e[1].dataType,l=U.normalizeAxis(t.axis,n),a=r[l],p=s.slice(0),h=U.size(p),g=M(\"input\",o,n),b=M(\"indicesInput\",u,s.length),w=F(\"output\",o,p.length),y=[{type:\"uint32\",data:h},{type:\"int32\",data:a},{type:\"uint32\",data:l}];return y.push(...L(r)),y.push(...L(s)),y.push(...L(p)),{name:\"GatherElements\",shaderCache:{inputDependencies:[\"rank\",\"rank\"]},getRunData:()=>({outputs:[{dims:p,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(h/64)},programUniforms:y}),getShaderSource:$=>`\\n ${$.registerUniform(\"outputSize\",\"u32\").registerUniform(\"axisDimLimit\",\"i32\").registerUniform(\"axis\",\"u32\").declareVariables(g,b,w)}\\n ${$.mainStart()}\\n ${$.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\\n\\n let outputIndices = ${w.offsetToIndices(\"global_idx\")};\\n\\n var idx = ${b.getByOffset(\"global_idx\")};\\n if (idx < 0) {\\n idx = idx + uniforms.axisDimLimit;\\n }\\n var inputIndices = ${g.type.indices}(outputIndices);\\n ${g.indicesSet(\"inputIndices\",\"uniforms.axis\",\"u32(idx)\")};\\n let value = ${g.getByIndices(\"inputIndices\")};\\n\\n ${w.setByOffset(\"global_idx\",\"value\")};\\n }`}},fs=e=>ge({axis:e.axis}),hs=(e,t)=>{let r=e.inputs;Rl(r),e.compute(Bl(e.inputs,t))}});var Dl,Ml,ys,bs,ws=j(()=>{\"use strict\";$e();ve();Dl=e=>{if(!e)throw new Error(\"Input is missing\");if(e.length<2||e.length>3)throw new Error(\"Invaid input number.\");if(e.length===3&&e[2].dims.length>2)throw new Error(\"Invalid input shape of C\");if(e[0].dataType!==e[1].dataType||e.length===3&&e[0].dataType!==e[2].dataType)throw new Error(\"Input types are mismatched\")},Ml=(e,t)=>{let r=e[0].dims.slice(),o=e[1].dims.slice(),[n,s,u]=Hr.getShapeOfGemmResult(r,t.transA,o,t.transB,e.length===3?e[2].dims:void 0),l=[n,s];if(!l)throw new Error(\"Can\\'t use gemm on the given tensors\");let a=U.size(l),p=[{type:\"uint32\",data:a},{type:\"uint32\",data:n},{type:\"uint32\",data:s},{type:\"uint32\",data:u},{type:\"float32\",data:t.alpha},{type:\"float32\",data:t.beta}],h=[\"type\",\"type\"];e.length===3&&(p.push(...L(e[2].dims)),h.push(\"rank\")),p.push(...L(l));let g=b=>{let w=\"\";t.transA&&t.transB?w=\"value += a[k * uniforms.M + m] * b[n * uniforms.K + k];\":t.transA&&!t.transB?w=\"value += a[k * uniforms.M + m] * b[k * uniforms.N + n];\":!t.transA&&t.transB?w=\"value += a[m * uniforms.K + k] * b[n * uniforms.K + k];\":!t.transA&&!t.transB&&(w=\"value += a[m * uniforms.K + k] * b[k * uniforms.N + n];\");let y=t.alpha===1?\"\":\"value *= uniforms.alpha;\",_=M(\"a\",e[0].dataType,e[0].dims),I=M(\"b\",e[1].dataType,e[1].dims),$=_.type.value,x=null,E=[_,I];e.length===3&&(x=M(\"c\",e[2].dataType,e[2].dims.length),E.push(x));let A=F(\"output\",e[0].dataType,l.length);E.push(A);let z=[{name:\"output_size\",type:\"u32\"},{name:\"M\",type:\"u32\"},{name:\"N\",type:\"u32\"},{name:\"K\",type:\"u32\"},{name:\"alpha\",type:\"f32\"},{name:\"beta\",type:\"f32\"}];return`\\n ${b.registerUniforms(z).declareVariables(...E)}\\n\\n ${b.mainStart()}\\n ${b.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\\n\\n let m = global_idx / uniforms.N;\\n let n = global_idx % uniforms.N;\\n\\n var value = ${$}(0);\\n for (var k: u32 = 0u; k < uniforms.K; k++) {\\n ${w}\\n }\\n\\n ${y}\\n ${(()=>x!=null?`let cOffset = ${x.broadcastedIndicesToOffset(\"vec2(m, n)\",A)}; value += ${$}(uniforms.beta) * ${x.getByOffset(\"cOffset\")};`:\"\")()}\\n output[global_idx] = value;\\n }`};return{name:\"Gemm\",shaderCache:{hint:`${t.cacheKey}`,inputDependencies:h},getRunData:()=>({outputs:[{dims:l,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:p}),getShaderSource:g}},ys=e=>{let t=e.transA,r=e.transB,o=e.alpha,n=e.beta;return{transA:t,transB:r,alpha:o,beta:n,cacheKey:`${e.transA};${e.transB};${e.alpha===1}`}},bs=(e,t)=>{Dl(e.inputs),e.compute(Ml(e.inputs,t))}});var zl,Ul,Vl,vs,$s=j(()=>{\"use strict\";Ne();$e();ve();zl=(e,t)=>{let r=e[0].dims,o=r,n=2,s=U.sizeToDimension(r,n),u=U.sizeFromDimension(r,n),l=Fe(u),a=u/l,p=[r[0],r[1],a],h=[\"rank\",\"type\",\"type\"],g=[{type:\"uint32\",data:u},{type:\"uint32\",data:a}];g.push(...L(p),...L(p));let b=w=>{let y=M(\"x\",e[0].dataType,p.length,l),_=M(\"scale\",e[1].dataType,e[1].dims),I=M(\"bias\",e[2].dataType,e[2].dims),$=F(\"output\",e[0].dataType,p.length,l),x=[y,_,I,$],E=y.type.value,A=l===1?\"f32\":`vec${l}`,z=64,R=[{name:\"normSize\",type:\"u32\"},{name:\"normPackedSize\",type:\"u32\"}];return`\\n var meanShared : f32;\\n var squaredNormShared : f32;\\n var workgroupShared : array<${A}, ${z}>;\\n const workgroupSize = ${z}u;\\n ${w.registerUniforms(R).declareVariables(...x)}\\n ${w.mainStart(z)}\\n let norm = global_idx / workgroupSize;\\n let batch = norm / uniforms.x_shape[1];\\n let channel = norm % uniforms.x_shape[1];\\n let localIndex = local_id.x;\\n\\n // initialize workgroup memory\\n var initial = ${A}(0);\\n for (var h = localIndex; h < uniforms.normPackedSize; h += workgroupSize) {\\n initial = initial + ${A}(${y.get(\"batch\",\"channel\",\"h\")});\\n }\\n workgroupShared[localIndex] = initial;\\n workgroupBarrier();\\n\\n // Calculate the mean of current channel data.\\n for (var currSize = workgroupSize >> 1; currSize > 0; currSize = currSize >> 1) {\\n if (localIndex < currSize) {\\n workgroupShared[localIndex] = workgroupShared[localIndex] + workgroupShared[localIndex + currSize];\\n }\\n workgroupBarrier();\\n }\\n if (localIndex == 0) {\\n meanShared = ${Je(\"workgroupShared[0]\",l)} / f32(uniforms.normSize);\\n }\\n workgroupBarrier();\\n\\n // reinitialize workgroup memory.\\n initial = ${A}(0);\\n for (var h = localIndex; h < uniforms.normPackedSize; h += workgroupSize) {\\n let deviation = ${A}(${y.get(\"batch\",\"channel\",\"h\")}) - ${A}(meanShared);\\n initial = initial + deviation * deviation;\\n }\\n workgroupShared[localIndex] = initial;\\n workgroupBarrier();\\n\\n // Calculate the sum of square of deviation of current channel data.\\n for (var currSize = workgroupSize >> 1; currSize > 0; currSize = currSize >> 1) {\\n if (localIndex < currSize) {\\n workgroupShared[localIndex] = workgroupShared[localIndex] + workgroupShared[localIndex + currSize];\\n }\\n workgroupBarrier();\\n }\\n if (localIndex == 0) {\\n squaredNormShared = ${Je(\"workgroupShared[0]\",l)};\\n }\\n workgroupBarrier();\\n\\n let invStdDev = inverseSqrt(squaredNormShared / f32(uniforms.normSize) + f32(${t.epsilon}));\\n let channelScale = invStdDev * f32(${_.getByOffset(\"channel\")});\\n let channelShift = f32(${I.getByOffset(\"channel\")}) - meanShared * channelScale;\\n for (var h = localIndex; h < uniforms.normPackedSize; h += workgroupSize) {\\n let value = ${y.get(\"batch\",\"channel\",\"h\")} * ${E}(${A}(channelScale)) + ${E}(${A}(channelShift));\\n ${$.set(\"batch\",\"channel\",\"h\",\"value\")};\\n }\\n }`};return{name:\"InstanceNormalization\",shaderCache:{hint:`${t.epsilon};${l}`,inputDependencies:h},getRunData:()=>({outputs:[{dims:o,dataType:e[0].dataType}],dispatchGroup:{x:s},programUniforms:g}),getShaderSource:b}},Ul=(e,t,r,o,n,s,u,l)=>{let a=Fe(u),p=64,h=a===1?\"vec2f\":`mat2x${a}f`,g=a===1?\"f32\":`vec${a}f`,b=(R,V)=>`${h}(${R}, ${V})`,w=n*u/a,y=Math.ceil(s/p),_=[\"type\"],I=[{type:\"uint32\",data:y},{type:\"uint32\",data:s},{type:\"uint32\",data:Math.floor(u/a)},{type:\"uint32\",data:Math.floor(s*u/a)}],$=R=>{let V=M(\"input\",t.dataType,t.dims,a);return`\\n ${R.declareVariables(V)}\\n @group(0) @binding(1) var output : array<${h}>;\\n struct Uniforms {wg_size:u32, H:u32, C:u32, image_size:u32};\\n @group(0) @binding(2) var uniforms: Uniforms;\\n\\n ${R.mainStart(p)}\\n let currentImageNumber = global_idx / ${p} / uniforms.C;\\n let currentChannelNumber = (global_idx / ${p}) % uniforms.C;\\n let wgId = global_idx % ${p};\\n let wgOffset = wgId * uniforms.wg_size;\\n if (wgOffset >= uniforms.H) {\\n return;\\n }\\n let wgMax = min(wgOffset + uniforms.wg_size, uniforms.H);\\n\\n let offset = currentImageNumber * uniforms.image_size + currentChannelNumber;\\n var sum = ${Ze(\"f32\",a)};\\n var squaredSum = ${Ze(\"f32\",a)};\\n for (var i: u32 = wgOffset; i < wgMax; i++) {\\n let value = ${g}(input[offset + i * uniforms.C]);\\n sum += value;\\n squaredSum += value * value;\\n }\\n output[global_idx] = ${b(\"sum\",\"squaredSum\")};\\n }`},x=e.compute({name:\"InstanceNormComputeMean\",shaderCache:{hint:`${a}`,inputDependencies:_},getRunData:()=>({outputs:[{dims:[n,u,p,2],dataType:1}],dispatchGroup:{x:n*u/a},programUniforms:I}),getShaderSource:$},{inputs:[t],outputs:[-1]})[0],E=[{type:\"uint32\",data:w},{type:\"uint32\",data:s},{type:\"uint32\",data:Math.floor(u/a)},{type:\"uint32\",data:Math.floor(p*u/a)}],A=[\"type\",\"type\",\"type\"],z=R=>{let V=M(\"scale\",r.dataType,r.dims,a),T=M(\"bias\",o.dataType,o.dims,a);return`\\n @group(0) @binding(0) var input : array<${h}>;\\n @group(0) @binding(1) var scale : array<${V.type.storage}>;\\n @group(0) @binding(2) var bias : array<${T.type.storage}>;\\n @group(0) @binding(3) var output : array<${h}>;\\n struct Uniforms {units_of_work : u32, H: u32, C : u32, image_size : u32};\\n @group(0) @binding(4) var uniforms: Uniforms;\\n\\n ${R.mainStart()}\\n ${R.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.units_of_work\")}\\n let currentImageNumber = global_idx / uniforms.C;\\n let currentChannelNumber = global_idx % uniforms.C;\\n\\n let offset = currentImageNumber * uniforms.image_size;\\n var sum = ${Ze(\"f32\",a)};\\n var squaredSum = ${Ze(\"f32\",a)};\\n for (var i: u32 = 0; i < ${p}; i++) {\\n let value = input[offset + i + currentChannelNumber * ${p}];\\n sum += value[0];\\n squaredSum += value[1];\\n }\\n sum = sum / f32(uniforms.H);\\n squaredSum = squaredSum / f32(uniforms.H);\\n let invStdDev = inverseSqrt(squaredSum - sum * sum + f32(${l}));\\n let channelScale = invStdDev * ${g}(scale[currentChannelNumber]);\\n let channelShift = ${g}(bias[currentChannelNumber]) - sum * channelScale;\\n\\n output[global_idx] = ${b(\"channelScale\",\"channelShift\")};\\n }`};return e.compute({name:\"InstanceNormComputeChannelScaleShift\",shaderCache:{hint:`${a};${l}`,inputDependencies:A},getRunData:()=>({outputs:[{dims:[n,u,2],dataType:1}],dispatchGroup:{x:Math.ceil(w/64)},programUniforms:E}),getShaderSource:z},{inputs:[x,r,o],outputs:[-1]})[0]},Vl=(e,t,r)=>{let o=t[0].dims,n=o,s=o[0],u=o[o.length-1],l=U.sizeFromDimension(o,1)/u,a=Fe(u),p=U.size(n)/a,h=[{type:\"uint32\",data:l},{type:\"uint32\",data:Math.floor(u/a)}],g=[\"type\",\"type\"],b=Ul(e,t[0],t[1],t[2],s,l,u,r.epsilon),w=y=>{let _=Le(t[0].dataType),I=a===1?\"vec2f\":`mat2x${a}f`,$=a===1?_:`vec${a}<${_}>`,x=M(\"input\",t[0].dataType,t[0].dims,a),E=F(\"output\",t[0].dataType,n,a);return`\\n @group(0) @binding(0) var input : array<${x.type.storage}>;\\n @group(0) @binding(1) var scaleInput : array<${I}>;\\n @group(0) @binding(2) var output : array<${E.type.storage}>;\\n struct Uniforms {H: u32, C : u32};\\n @group(0) @binding(3) var uniforms: Uniforms;\\n\\n ${y.mainStart()}\\n let currentImageNumber = global_idx / (uniforms.C * uniforms.H);\\n let currentChannelNumber = global_idx % uniforms.C;\\n\\n let scaleOffset = currentImageNumber * uniforms.C + currentChannelNumber;\\n let scale = scaleInput[scaleOffset];\\n output[global_idx] = fma(input[global_idx], ${$}(scale[0]), ${$}(scale[1]));\\n }`};e.compute({name:\"InstanceNormalizationNHWC\",shaderCache:{hint:`${a}`,inputDependencies:g},getRunData:()=>({outputs:[{dims:n,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(p/64)},programUniforms:h}),getShaderSource:w},{inputs:[t[0],b]})},vs=(e,t)=>{t.format===\"NHWC\"?Vl(e,e.inputs,t):e.compute(zl(e.inputs,t))}});var Nl,Wl,Ss,xs=j(()=>{\"use strict\";Ne();$e();ve();Nl=e=>{if(!e||e.length<2)throw new Error(\"layerNorm requires at least 2 inputs.\")},Wl=(e,t,r)=>{let o=e[0].dims,n=e[1],s=e[2],u=o,l=U.normalizeAxis(t.axis,o.length),a=U.sizeToDimension(o,l),p=U.sizeFromDimension(o,l),h=U.size(n.dims),g=s?U.size(s.dims):0;if(h!==p||s&&g!==p)throw new Error(`Size of X.shape()[axis:] == ${p}.\\n Size of scale and bias (if provided) must match this.\\n Got scale size of ${h} and bias size of ${g}`);let b=[];for(let A=0;A1,$=r>2,x=A=>{let z=Le(e[0].dataType),R=[M(\"x\",e[0].dataType,e[0].dims,w),M(\"scale\",n.dataType,n.dims,w)];s&&R.push(M(\"bias\",s.dataType,s.dims,w)),R.push(F(\"output\",e[0].dataType,u,w)),I&&R.push(F(\"mean_data_output\",1,b)),$&&R.push(F(\"inv_std_output\",1,b));let V=[{name:\"norm_count\",type:\"u32\"},{name:\"norm_size\",type:\"f32\"},{name:\"norm_size_vectorized\",type:\"u32\"},{name:\"epsilon\",type:\"f32\"}];return`\\n ${A.registerUniforms(V).declareVariables(...R)}\\n ${A.mainStart()}\\n ${A.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.norm_count\")}\\n let offset = global_idx * uniforms.norm_size_vectorized;\\n var meanVector = ${Ze(\"f32\",w)};\\n var meanSquareVector = ${Ze(\"f32\",w)};\\n\\n for (var h: u32 = 0u; h < uniforms.norm_size_vectorized; h++) {\\n let value = ${at(z,w,\"x[h + offset]\")};\\n meanVector += value;\\n meanSquareVector += value * value;\\n }\\n let mean = ${Je(\"meanVector\",w)} / uniforms.norm_size;\\n let invStdDev =\\n inverseSqrt(${Je(\"meanSquareVector\",w)} / uniforms.norm_size - mean * mean + uniforms.epsilon);\\n\\n for (var j: u32 = 0; j < uniforms.norm_size_vectorized; j++) {\\n let f32input = ${at(z,w,\"x[j + offset]\")};\\n let f32scale = ${at(z,w,\"scale[j]\")};\\n output[j + offset] = ${R[0].type.value}((f32input - mean) * invStdDev * f32scale\\n ${s?`+ ${at(z,w,\"bias[j]\")}`:\"\"}\\n );\\n }\\n\\n ${I?\"mean_data_output[global_idx] = mean\":\"\"};\\n ${$?\"inv_std_output[global_idx] = invStdDev\":\"\"};\\n }`},E=[{dims:u,dataType:e[0].dataType}];return I&&E.push({dims:b,dataType:1}),$&&E.push({dims:b,dataType:1}),{name:\"LayerNormalization\",shaderCache:{hint:`${w};${r}`,inputDependencies:y},getRunData:()=>({outputs:E,dispatchGroup:{x:Math.ceil(a/64)},programUniforms:_}),getShaderSource:x}},Ss=(e,t)=>{Nl(e.inputs),e.compute(Wl(e.inputs,t,e.outputCount))}});var Hl,Cs,_s,Gl,Xn,Is,As=j(()=>{\"use strict\";$e();je();Nr();Un();ve();jt();Hl=(e,t)=>{let r=e[0],o=e[1],n=e[2],s=e[3],u=e[4],l=e[5],a=e[6],p=e[7];if(r.dims.length!==3&&r.dims.length!==5)throw new Error(\"Input query is expected to have 3 or 5 dimensions\");let h=!1,g=r.dims[0],b=r.dims[1],w=r.dims.length===3?h?r.dims[2]/3:r.dims[2]:t.numHeads*r.dims[4],y=b,_=0,I=0,$=Math.floor(w/t.numHeads);if(a&&p){if(a.dims.length!==4)throw new Error(\\'Input \"past_key\" is expected to have 4 dimensions\\');if(p.dims.length!==4)throw new Error(\\'Input \"past_value\" is expected to have 4 dimensions\\');_=a.dims[2],I=a.dims[2]}else if(a||p)throw new Error(\\'Input \"past_key\" and \"past_value\" shall be both present or both absent\\');let x;if(o){if(r.dims.length!==3)throw new Error(\\'Input \"query\" is expected to have 3 dimensions when key is given\\');if(o.dims.length<3||o.dims.length>5)throw new Error(\\'Input \"key\" is expected to have 3, 4, or 5 dimensions\\');if(r.dims[0]!==o.dims[0])throw new Error(\\'Input \"query\" and \"key\" shall have same dim 0 (batch size)\\');if(o.dims.length===3){if(o.dims[2]!==r.dims[2])throw new Error(\\'Input \"query\" and \"key\" shall have same dim 2 (hidden_size)\\');x=2,y=o.dims[1]}else if(o.dims.length===5){if(o.dims[2]!==t.numHeads||o.dims[3]!==2||o.dims[4]!==$)throw new Error(\\'Expect \"key\" shape (batch_size, kv_sequence_length, num_heads, 2, head_size) for packed kv\\');if(n)throw new Error(\\'Expect \"value\" be none when \"key\" has packed kv format.\\');x=5,y=o.dims[1]}else{if(o.dims[1]!==t.numHeads||o.dims[3]!==$)throw new Error(\\'Expect \"key\" shape (batch_size, num_heads, kv_sequence_length, head_size) for past_key\\');x=0,y=o.dims[2]}}else{if(r.dims.length!==3&&r.dims.length!==5)throw new Error(\\'Input \"query\" is expected to have 3 or 5 dimensions when key is empty\\');if(r.dims.length===5&&(r.dims[2]!==t.numHeads||r.dims[3]!==3))throw new Error(\\'Expect \"query\" shape (batch_size, kv_sequence_length, num_heads, 3, head_size) for packed kv\\');x=3}if(s){if(s.dims.length!==1)throw new Error(\\'Input \"bias\" is expected to have 1 dimension\\');if(n&&r.dims.length===5&&r.dims[3]===2)throw new Error(\"bias is not allowed for packed kv.\")}let E=0;if(u){E=8;let T=u.dims;throw T.length===1?T[0]===g?E=1:T[0]===3*g+2&&(E=3):T.length===2&&T[0]===g&&T[1]===y&&(E=5),E===8?new Error(\\'Input \"key_padding_mask\" shape shall be (batch_size) or (batch_size, kv_sequence_length)\\'):new Error(\"Mask not supported\")}let A=!1,z=w;if(n){if(n.dims.length!==3&&n.dims.length!==4)throw new Error(\\'Input \"value\" is expected to have 3 or 4 dimensions\\');if(r.dims[0]!==n.dims[0])throw new Error(\\'Input \"query\" and \"value\" shall have same dim 0 (batch_size)\\');if(n.dims.length===3){if(y!==n.dims[1])throw new Error(\\'Input \"key\" and \"value\" shall have the same dim 1 (kv_sequence_length)\\');z=n.dims[2]}else{if(y!==n.dims[2])throw new Error(\\'Input \"past_key\" and \"past_value\" shall have the same dim 2 (kv_sequence_length)\\');z=n.dims[1]*n.dims[3],A=!0}}let R=_+y,V=!1;if(u)throw new Error(\"Key padding mask is not supported\");if(l)throw new Error(\"extraAddQk is not supported\");if(a)throw new Error(\"pastKey is not supported\");if(p)throw new Error(\"pastValue is not supported\");return{batchSize:g,sequenceLength:b,pastSequenceLength:_,kvSequenceLength:y,totalSequenceLength:R,maxSequenceLength:I,inputHiddenSize:0,hiddenSize:w,vHiddenSize:z,headSize:$,vHeadSize:Math.floor(z/t.numHeads),numHeads:t.numHeads,isUnidirectional:!1,pastPresentShareBuffer:!1,maskFilterValue:t.maskFilterValue,maskType:E,scale:t.scale,broadcastResPosBias:V,passPastInKv:A,qkvFormat:x}},Cs=e=>ge({...e}),_s=ge({perm:[0,2,1,3]}),Gl=(e,t,r,o,n,s,u)=>{let l=[o,n,s],a=U.size(l),p=[{type:\"uint32\",data:a},{type:\"uint32\",data:u},{type:\"uint32\",data:s}],h=g=>{let b=F(\"qkv_with_bias\",t.dataType,l),w=M(\"qkv\",t.dataType,l),y=M(\"bias\",r.dataType,l),_=[{name:\"output_size\",type:\"u32\"},{name:\"bias_offset\",type:\"u32\"},{name:\"hidden_size\",type:\"u32\"}];return`\\n ${g.registerUniforms(_).declareVariables(w,y,b)}\\n ${g.mainStart()}\\n ${g.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\\n let bias_offset_idx = (global_idx % uniforms.hidden_size) + uniforms.bias_offset;\\n\\n qkv_with_bias[global_idx] = qkv[global_idx] + bias[bias_offset_idx];\\n }`};return e.compute({name:\"MultiHeadAttentionAddBias\",shaderCache:{inputDependencies:[\"type\",\"type\"]},getRunData:()=>({outputs:[{dims:l,dataType:t.dataType,gpuDataType:0}],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:p}),getShaderSource:h},{inputs:[t,r],outputs:[-1]})[0]},Xn=(e,t,r,o,n,s,u,l)=>{let a=s;if(u){if(o===1)throw new Error(\"AddBiasReshape is not implemented. Please export your model with packed QKV or KV\");return a=Gl(e,s,u,t,o,r*n,l),a=a.reshape([t,o,r,n]),e.compute(it(a,_s.perm),{inputs:[a],outputs:[-1]})[0]}else return s.dims.length===3&&(a=s.reshape([t,o,r,n])),e.compute(it(a,_s.perm),{inputs:[a],outputs:[-1]})[0]},Is=(e,t)=>{let r=Hl(e.inputs,t);if(e.inputs[0].dims.length===5)throw new Error(\"Packed QKV is not implemented\");if(e.inputs[1]?.dims.length===5)throw new Error(\"Packed KV is not implemented\");let o=e.inputs[1]&&e.inputs[2]&&e.inputs[1].dims.length===4&&e.inputs[2].dims.length===4,n=Xn(e,r.batchSize,r.numHeads,r.sequenceLength,r.headSize,e.inputs[0],e.inputs[3],0);if(o)return Kr(e,n,e.inputs[1],e.inputs[2],e.inputs[4],void 0,void 0,void 0,e.inputs[5],r,t);let s=Xn(e,r.batchSize,r.numHeads,r.kvSequenceLength,r.headSize,e.inputs[1],e.inputs[3],r.hiddenSize),u=Xn(e,r.batchSize,r.numHeads,r.kvSequenceLength,r.vHeadSize,e.inputs[2],e.inputs[3],2*r.hiddenSize);Kr(e,n,s,u,e.inputs[4],void 0,e.inputs[6],e.inputs[7],e.inputs[5],r,t)}});var Ll,Fl,jl,ql,Kl,Yl,Zl,Ql,Ts,Es=j(()=>{\"use strict\";Ne();$e();ve();Ll=e=>{if(!e||e.length<1)throw new Error(\"Too few inputs\");if(e[0].dataType!==1)throw new Error(\"Input type must be float.\");if(e.length>=2){let t=e[0].dims.length*2===e[1].dims[0];if(e.length===4&&(t=e[3].dims[0]*2===e[1].dims[0]),!t)throw new Error(\"The pads should be a 1D tensor of shape [2 * input_rank] or [2 * num_axes].\")}},Fl=(e,t,r)=>{let o=\"\";for(let n=t-1;n>=0;--n)o+=`\\n k = i32(${e.indicesGet(\"indices\",n)}) - ${ce(\"uniforms.pads\",n,r)};\\n if (k < 0) {\\n break;\\n }\\n if (k >= i32(${ce(\"uniforms.x_shape\",n,t)})) {\\n break;\\n }\\n offset += k * i32(${ce(\"uniforms.x_strides\",n,t)});\\n `;return`\\n value = ${e.type.value}(uniforms.constant_value);\\n for (var i = 0; i < 1; i++) {\\n var offset = 0;\\n var k = 0;\\n ${o}\\n value = x[offset];\\n }\\n `},jl=(e,t,r)=>{let o=\"\";for(let n=t-1;n>=0;--n)o+=`\\n k = i32(${e.indicesGet(\"indices\",n)}) - ${ce(\"uniforms.pads\",n,r)};\\n if (k < 0) {\\n k = -k;\\n }\\n {\\n let _2n_1 = 2 * (i32(${ce(\"uniforms.x_shape\",n,t)}) - 1);\\n k = k % _2n_1;\\n if(k >= i32(${ce(\"uniforms.x_shape\",n,t)})) {\\n k = _2n_1 - k;\\n }\\n }\\n offset += k * i32(${ce(\"uniforms.x_strides\",n,t)});\\n `;return`\\n var offset = 0;\\n var k = 0;\\n ${o}\\n value = x[offset];\\n `},ql=(e,t,r)=>{let o=\"\";for(let n=t-1;n>=0;--n)o+=`\\n k = i32(${e.indicesGet(\"indices\",n)}) - ${ce(\"uniforms.pads\",n,r)};\\n if (k < 0) {\\n k = 0;\\n }\\n if (k >= i32(${ce(\"uniforms.x_shape\",n,t)})) {\\n k = i32(${ce(\"uniforms.x_shape\",n,t)}) - 1;\\n }\\n offset += k * i32(${ce(\"uniforms.x_strides\",n,t)});\\n `;return`\\n var offset = 0;\\n var k = 0;\\n ${o}\\n value = x[offset];\\n `},Kl=(e,t,r)=>{let o=\"\";for(let n=t-1;n>=0;--n)o+=`\\n k = i32(${e.indicesGet(\"indices\",n)}) - ${ce(\"uniforms.pads\",n,r)};\\n if (k < 0) {\\n k += i32(${ce(\"uniforms.x_shape\",n,t)}]);\\n }\\n if (k >= i32(${ce(\"uniforms.x_shape\",n,t)})) {\\n k -= i32(${ce(\"uniforms.x_shape\",n,t)});\\n }\\n offset += k * i32(${ce(\"uniforms.x_strides\",n,t)});\\n `;return`\\n var offset = 0;\\n var k = 0;\\n ${o}\\n value = x[offset];\\n `},Yl=(e,t,r)=>{switch(r.mode){case 0:return Fl(e,t,r.pads.length);case 1:return jl(e,t,r.pads.length);case 2:return ql(e,t,r.pads.length);case 3:return Kl(e,t,r.pads.length);default:throw new Error(\"Invalid mode\")}},Zl=(e,t)=>{let r=U.padShape(e[0].dims.slice(),t.pads),o=e[0].dims,s=[{type:\"uint32\",data:U.size(r)},{type:\"uint32\",data:t.pads}];if(t.mode===0){let a=Xe(e[0].dataType);s.push({type:a,data:t.value})}s.push(...L(e[0].dims),...L(r));let u=[\"rank\"],l=a=>{let p=F(\"output\",e[0].dataType,r.length),h=M(\"x\",e[0].dataType,o.length),g=h.type.value,b=Yl(p,o.length,t),w=[{name:\"output_size\",type:\"u32\"},{name:\"pads\",type:\"i32\",length:t.pads.length}];return t.mode===0&&w.push({name:\"constant_value\",type:g}),`\\n ${a.registerUniforms(w).declareVariables(h,p)}\\n ${a.mainStart()}\\n ${a.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\\n\\n let indices = ${p.offsetToIndices(\"global_idx\")};\\n\\n var value = ${g}(0);\\n ${b}\\n output[global_idx] = value;\\n }`};return{name:\"Pad\",shaderCache:{hint:`${t.mode}`,inputDependencies:u},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(U.size(r)/64)},programUniforms:s}),getShaderSource:l}},Ql=(e,t)=>{if(e.length>1){let r=e[1].getBigInt64Array(),o=e.length>=3&&e[2].data?e[2].getFloat32Array()[0]:0,n=e[0].dims.length,s=new Int32Array(2*n).fill(0);if(e.length>=4){let l=e[3].getBigInt64Array();for(let a=0;as[Number(a)]=Number(l));let u=[];return s.forEach(l=>u.push(l)),{mode:t.mode,value:o,pads:u}}else return t},Ts=(e,t)=>{Ll(e.inputs);let r=Ql(e.inputs,t);e.compute(Zl(e.inputs,r),{inputs:[0]})}});var nn,Os,Ps,ks,Rs,Xl,Jl,Bs,Ds,Ms,zs,Us,Vs,Ns,Ws,Hs,Gs,Ls,Fs,js=j(()=>{\"use strict\";Lt();$e();ve();nn=e=>{if(Gt.webgpu.validateInputContent&&(!e||e.length!==1))throw new Error(\"Pool ops requires 1 input.\")},Os=(e,t,r)=>{let o=t.format===\"NHWC\",n=e.dims.slice();o&&n.splice(1,0,n.pop());let s=Object.hasOwnProperty.call(t,\"dilations\"),u=t.kernelShape.slice(),l=t.strides.slice(),a=s?t.dilations.slice():[],p=t.pads.slice();Bt.adjustPoolAttributes(r,n,u,l,a,p);let h=Bt.computePoolOutputShape(r,n,l,a,u,p,t.autoPad),g=Object.assign({},t);s?Object.assign(g,{kernelShape:u,strides:l,pads:p,dilations:a,cacheKey:t.cacheKey}):Object.assign(g,{kernelShape:u,strides:l,pads:p,cacheKey:t.cacheKey});let b=h.slice();return b.push(b.splice(1,1)[0]),[g,o?b:h]},Ps=(e,t)=>{let r=t.format===\"NHWC\",o=U.size(e),n=U.size(t.kernelShape),s=[{type:\"uint32\",data:o},{type:\"uint32\",data:n}],u=[{name:\"outputSize\",type:\"u32\"},{name:\"kernelSize\",type:\"u32\"}];if(t.kernelShape.length<=2){let l=t.kernelShape[t.kernelShape.length-1],a=t.strides[t.strides.length-1],p=t.pads[t.pads.length/2-1],h=t.pads[t.pads.length-1],g=!!(p+h);s.push({type:\"uint32\",data:l},{type:\"uint32\",data:a},{type:\"uint32\",data:p},{type:\"uint32\",data:h}),u.push({name:\"kw\",type:\"u32\"},{name:\"sw\",type:\"u32\"},{name:\"pwStart\",type:\"u32\"},{name:\"pwEnd\",type:\"u32\"});let b=!1;if(t.kernelShape.length===2){let w=t.kernelShape[t.kernelShape.length-2],y=t.strides[t.strides.length-2],_=t.pads[t.pads.length/2-2],I=t.pads[t.pads.length-2];b=!!(_+I),s.push({type:\"uint32\",data:w},{type:\"uint32\",data:y},{type:\"uint32\",data:_},{type:\"uint32\",data:I}),u.push({name:\"kh\",type:\"u32\"},{name:\"sh\",type:\"u32\"},{name:\"phStart\",type:\"u32\"},{name:\"phEnd\",type:\"u32\"})}return[s,u,!0,g,b]}else{if(r)throw new Error(\"Pooling with kernelShape.length > 2 is not supported for NHWC format.\");let l=U.computeStrides(t.kernelShape);s.push({type:\"uint32\",data:l},{type:\"uint32\",data:t.pads},{type:\"uint32\",data:t.strides}),u.push({name:\"kernelStrides\",type:\"u32\",length:l.length},{name:\"pads\",type:\"u32\",length:t.pads.length},{name:\"strides\",type:\"u32\",length:t.strides.length});let a=t.pads.reduce((p,h)=>p+h);return[s,u,!!a,!1,!1]}},ks=(e,t,r,o,n,s,u,l,a,p,h,g)=>{let b=n.format===\"NHWC\",w=t.type.value,y=F(\"output\",t.type.tensor,o);if(n.kernelShape.length<=2){let _=\"\",I=\"\",$=\"\",x=r-(b?2:1);if(h?_=`\\n for (var i: u32 = 0u; i < uniforms.kw; i++) {\\n xIndices[${x}] = indices[${x}] * uniforms.sw - uniforms.pwStart + i;\\n if (xIndices[${x}] < 0 || xIndices[${x}]\\n >= uniforms.x_shape[${x}]) {\\n pad++;\\n continue;\\n }\\n let x_val = x[${t.indicesToOffset(\"xIndices\")}];\\n ${s}\\n }`:_=`\\n for (var i: u32 = 0u; i < uniforms.kw; i++) {\\n xIndices[${x}] = indices[${x}] * uniforms.sw - uniforms.pwStart + i;\\n let x_val = x[${t.indicesToOffset(\"xIndices\")}];\\n ${s}\\n }`,n.kernelShape.length===2){let A=r-(b?3:2);g?I=`\\n for (var j: u32 = 0u; j < uniforms.kh; j++) {\\n xIndices[${A}] = indices[${A}] * uniforms.sh - uniforms.phStart + j;\\n if (xIndices[${A}] < 0 || xIndices[${A}] >= uniforms.x_shape[${A}]) {\\n pad += i32(uniforms.kw);\\n continue;\\n }\\n `:I=`\\n for (var j: u32 = 0u; j < uniforms.kh; j++) {\\n xIndices[${A}] = indices[${A}] * uniforms.sh - uniforms.phStart + j;\\n `,$=`\\n }\\n `}return`\\n ${e.registerUniforms(a).declareVariables(t,y)}\\n\\n ${e.mainStart()}\\n ${e.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\\n\\n let indices = ${y.offsetToIndices(\"global_idx\")};\\n var xIndices = ${y.offsetToIndices(\"global_idx\")};\\n\\n var value = ${w}(${l});\\n var pad = 0;\\n ${I}\\n ${_}\\n ${$}\\n ${u}\\n\\n output[global_idx] = value;\\n }`}else{if(b)throw new Error(\"Pooling with kernelShape.length > 2 is not supported for NHWC format.\");let _=n.kernelShape.length,I=n.pads.length,$=\"\";return p?$=`\\n if (xIndices[j] >= uniforms.x_shape[j]) {\\n pad++;\\n isPad = true;\\n break;\\n }\\n }\\n if (!isPad) {\\n let x_val = x[${t.indicesToOffset(\"xIndices\")}];\\n ${s}\\n }`:$=`\\n }\\n let x_val = x[${t.indicesToOffset(\"xIndices\")}];\\n ${s}\\n `,`\\n ${e.registerUniforms(a).declareVariables(t,y)}\\n\\n ${e.mainStart()}\\n ${e.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\\n let indices = ${y.offsetToIndices(\"global_idx\")};\\n var xIndices = ${y.offsetToIndices(\"global_idx\")};\\n\\n var offsets: array;\\n\\n var value = ${w}(${l});\\n var pad = 0;\\n var isPad = false;\\n\\n for (var i: u32 = 0u; i < uniforms.kernelSize; i++) {\\n var offset = i;\\n for (var j = 0u; j < ${_-1}u; j++) {\\n offsets[j] = offset / ${ce(\"uniforms.kernelStrides\",\"j\",_)};\\n offset -= offsets[j] * ${ce(\"uniforms.kernelStrides\",\"j\",_)};\\n }\\n offsets[${_-1}] = offset;\\n\\n isPad = false;\\n for (var j = ${r-_}u; j < ${r}u; j++) {\\n xIndices[j] = indices[j] * ${ce(\"uniforms.strides\",`j - ${r-_}u`,_)}\\n + offsets[j - ${r-_}u] - ${ce(\"uniforms.pads\",\"j - 2u\",I)};\\n ${$}\\n }\\n ${u}\\n\\n output[global_idx] = value;\\n }`}},Rs=e=>`${e.format};${e.ceilMode};${e.autoPad};${e.kernelShape.length}`,Xl=e=>`${Rs(e)};${e.countIncludePad}`,Jl=e=>`${Rs(e)};${e.storageOrder};${e.dilations}`,Bs=e=>({format:e.format,autoPad:[\"NOTSET\",\"VALID\",\"SAME_UPPER\",\"SAME_LOWER\"][e.auto_pad],ceilMode:e.ceil_mode,kernelShape:e.kernel_shape,strides:e.strides,pads:e.pads}),Ds=(e,t,r,o)=>{let[n,s]=Os(t,o,r),u=M(\"x\",t.dataType,t.dims.length),l=u.type.value,a=\"value += x_val;\",p=\"\";n.countIncludePad?p+=`value /= ${l}(uniforms.kernelSize);`:p+=`value /= ${l}(i32(uniforms.kernelSize) - pad);`;let[h,g,b,w,y]=Ps(s,n);h.push(...L(t.dims),...L(s));let _=[\"rank\"];return{name:e,shaderCache:{hint:`${o.cacheKey};${b};${w};${y}`,inputDependencies:_},getRunData:()=>({outputs:[{dims:s,dataType:t.dataType}],dispatchGroup:{x:Math.ceil(U.size(s)/64)},programUniforms:h}),getShaderSource:I=>ks(I,u,t.dims.length,s.length,n,a,p,0,g,b,w,y)}},Ms=e=>{let t=e.count_include_pad!==0,r=Bs(e);if(r.ceilMode!==0)throw new Error(\"using ceil() in shape computation is not yet supported for AveragePool\");let o={countIncludePad:t,...r,cacheKey:\"\"};return{...o,cacheKey:Xl(o)}},zs=(e,t)=>{nn(e.inputs),e.compute(Ds(\"AveragePool\",e.inputs[0],!1,t))},Us={autoPad:\"\",ceilMode:0,countIncludePad:!1,kernelShape:[],strides:[],pads:[],storageOrder:0,dilations:[]},Vs=e=>{let t=e.format;return{format:t,...Us,cacheKey:t}},Ns=(e,t)=>{nn(e.inputs),e.compute(Ds(\"GlobalAveragePool\",e.inputs[0],!0,t))},Ws=(e,t,r,o)=>{let[n,s]=Os(t,o,r),u=`\\n value = max(x_val, value);\\n `,l=\"\",a=M(\"x\",t.dataType,t.dims.length),p=[\"rank\"],[h,g,b,w,y]=Ps(s,n);return h.push(...L(t.dims),...L(s)),{name:e,shaderCache:{hint:`${o.cacheKey};${b};${w};${y}`,inputDependencies:p},getRunData:()=>({outputs:[{dims:s,dataType:t.dataType}],dispatchGroup:{x:Math.ceil(U.size(s)/64)},programUniforms:h}),getShaderSource:_=>ks(_,a,t.dims.length,s.length,n,u,l,-1e5,g,b,w,y)}},Hs=(e,t)=>{nn(e.inputs),e.compute(Ws(\"MaxPool\",e.inputs[0],!1,t))},Gs=e=>{let t=e.storage_order,r=e.dilations,o=Bs(e);if(t!==0)throw new Error(\"column major storage order is not yet supported for MaxPool\");if(o.ceilMode!==0)throw new Error(\"using ceil() in shape computation is not yet supported for MaxPool\");let n={storageOrder:t,dilations:r,...o,cacheKey:\"\"};return{...n,cacheKey:Jl(n)}},Ls=e=>{let t=e.format;return{format:t,...Us,cacheKey:t}},Fs=(e,t)=>{nn(e.inputs),e.compute(Ws(\"GlobalMaxPool\",e.inputs[0],!0,t))}});var tc,rc,qs,Ks=j(()=>{\"use strict\";Lt();Ne();ve();tc=(e,t,r)=>{let o=e===t,n=et&&r>0;if(o||n||s)throw new Error(\"Range these inputs\\' contents are invalid.\")},rc=(e,t,r,o)=>{let n=Math.abs(Math.ceil((t-e)/r)),s=[n],u=n,l=Xe(o),a=[{type:\"uint32\",data:u},{type:l,data:e},{type:l,data:r},...L(s)],p=h=>{let g=F(\"output\",o,s.length),b=g.type.value,w=[{name:\"outputSize\",type:\"u32\"},{name:\"start\",type:b},{name:\"delta\",type:b}];return`\\n ${h.registerUniforms(w).declareVariables(g)}\\n ${h.mainStart()}\\n ${h.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\\n output[global_idx] = uniforms.start + ${b}(global_idx) * uniforms.delta;\\n }`};return{name:\"Range\",shaderCache:{hint:`${o}`},getShaderSource:p,getRunData:()=>({outputs:[{dims:s,dataType:o}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:a})}},qs=e=>{let t=0,r=0,o=0;e.inputs[0].dataType===6?(t=e.inputs[0].getInt32Array()[0],r=e.inputs[1].getInt32Array()[0],o=e.inputs[2].getInt32Array()[0]):e.inputs[0].dataType===1&&(t=e.inputs[0].getFloat32Array()[0],r=e.inputs[1].getFloat32Array()[0],o=e.inputs[2].getFloat32Array()[0]),Gt.webgpu.validateInputContent&&tc(t,r,o),e.compute(rc(t,r,o,e.inputs[0].dataType),{inputs:[]})}});var nc,oc,ac,ic,sc,uc,dc,lc,cc,pc,mc,Ys,fc,hc,gc,yc,bc,Zs,Qs,Xs=j(()=>{\"use strict\";$e();je();ve();nc=(e,t)=>{if(e.every(r=>r>0||(()=>{throw new Error(\"Resize requires scales input values to be positive\")})),e.length>0){if(t.mode===\"linear\"){if(!(e.length===2||e.length===3||e.length===4&&e[0]===1&&e[1]===1||e.length===4&&e[0]===1&&e[3]===1||e.length===5&&e[0]===1&&e[1]===1))throw new Error(`For linear mode, Resize requires scales to be 2D, 3D, 4D with either two outermost or one innermost and\\n one outermost scale values equal to 1, or 5D with two outermost scale values equal to 1`)}else if(t.mode===\"cubic\"&&!(e.length===2||e.length===4&&e[0]===1&&e[1]===1||e.length===4&&e[0]===1&&e[3]===1))throw new Error(\"Resize requires scales input size to be 2 or 4 for cubic mode\")}},oc=(e,t,r)=>{t.every(n=>n>=0&&n{throw new Error(\"Resize requires axes input values to be positive and less than rank\")}));let o=new Array(r).fill(1);return t.forEach((n,s)=>o[n]=e[s]),o},ac=(e,t,r,o,n,s)=>{let[u,l,a]=r>10?[1,2,3]:[-1,e.length>1?1:-1,-1],p=e[0].dims.length;if(u>0&&e.length>u&&e[u].dims.length>0)e[u].getFloat32Array().forEach(h=>s.push(h));else if(t.coordinateTransformMode===\"tf_crop_and_resize\")throw new Error(\"Resize requires RoI input to be specified when coordinateTransformMode is tfCropAndResize\");if(l>0&&e.length>l&&e[l].dims.length>0){if(e[l].getFloat32Array().forEach(h=>o.push(h)),o.length!==0&&o.length!==p&&r>=18&&o.length!==t.axes.length)throw new Error(\"Resize requires scales input size to be same as input rank or axes size for opset 18 and up\");nc(o,t),t.axes.length>0&&oc(o,t.axes,p).forEach((h,g)=>o[g]=h)}if(a>0&&e.length>a&&(e[a].getBigInt64Array().forEach(h=>n.push(Number(h))),n.length!==p||r>=18&&n.length===t.axes.length))throw new Error(\"Resize requires sizes input size to be same as input rank or axes size for opset 18 and up\");if(t.axes.length>0){if(o.length!==t.axes.length)throw new Error(\\'Resize requires \"scales\" input size to be of axes rank when axes attributes is specified\\');if(n.length!==t.axes.length)throw new Error(\\'Resize requires \"sizes\" input size to be of rank axes rank when axes attributes is specified\\')}if(typeof o<\"u\"&&typeof n<\"u\"&&o.length>0&&n.length>p)throw new Error(\"Resize requires only of scales or sizes to be specified\")},ic=(e,t)=>`fn getOriginalCoordinateFromResizedCoordinate(xResized: u32, xScale: f32, lengthResized: u32,\\n lengthOriginal: u32, roiStart: f32, roiEnd: f32) -> ${t} { `+(()=>{switch(e){case\"asymmetric\":return`return ${t}(xResized) / ${t}(xScale);`;case\"pytorch_half_pixel\":return`if (lengthResized > 1) {\\n return (${t}(xResized) + 0.5) / ${t}(xScale) - 0.5;\\n } else {\\n return 0.0;\\n }`;case\"tf_half_pixel_for_nn\":return`return (${t}(xResized) + 0.5) / ${t}(xScale);`;case\"align_corners\":return`if (lengthResized == 1) {\\n return 0.0;\\n } else {\\n // The whole part and the fractional part are calculated separately due to inaccuracy of floating\\n // point division. As an example, f32(21) / f32(7) may evaluate to 2.99... instead of 3, causing an\\n // offset-by-one error later in floor().\\n let whole = ${t}(xResized * (lengthOriginal - 1) / (lengthResized - 1));\\n let fract =\\n ${t}(xResized * (lengthOriginal - 1) % (lengthResized - 1)) / ${t}(lengthResized - 1);\\n return whole + fract;\\n }`;case\"tf_crop_and_resize\":return`if (lengthResized > 1) {\\n return ${t}(roiStart) * ${t}(lengthOriginal - 1) +\\n (${t}(xResized) * ${t}(roiEnd - roiStart) * ${t}(lengthOriginal - 1)) /\\n ${t}(lengthResized - 1);\\n } else {\\n return 0.5 * ${t}(roiStart + roiEnd) * ${t}(lengthOriginal - 1);\\n }`;case\"half_pixel_symmetric\":return`const outputWidth = ${t}xScale * ${t}(lengthResized);\\n const adjustment = ${t}(lengthResized) / outputWidth;\\n const center = ${t}(lengthOriginal) / 2;\\n const offset = center * (1 - adjustment);\\n return offset + ((${t}(xResized) + 0.5) / ${t}(xScale)) - 0.5;`;case\"half_pixel\":return`return ((${t}(xResized) + 0.5) / ${t}(xScale)) - 0.5;`;default:throw new Error(`Coordinate transform mode ${e} is not supported`)}})()+\"}\",sc=(e,t,r)=>`fn getNearestPixelFromOriginal(xOriginal: ${r}, isDownSample: bool) -> ${r} {`+(()=>{switch(e){case\"round_prefer_ceil\":return\"if (fract(xOriginal) == 0.5) { return ceil(xOriginal); } else { return round(xOriginal); }\";case\"floor\":return\"return floor(xOriginal);\";case\"ceil\":return\"return ceil(xOriginal);\";case\"round_prefer_floor\":return\"if (fract(xOriginal) == 0.5) { return floor(xOriginal); } else { return round(xOriginal); }\";case\"simple\":default:if(t<11)return\"if (isDownSample) { return ceil(xOriginal); } else { return xOriginal; }\";throw new Error(`Nearest mode ${e} is not supported`)}})()+\"}\",uc=(e,t,r)=>{let o=new Array(r).fill(0).concat(new Array(r).fill(1)),n=e.length===0?o:e.slice();return t.length>0?(t.forEach((s,u)=>{o[s]=n[u],o[u+r]=n[t.length+u]}),o):n},dc=(e,t,r,o)=>{let n=[];if(r.length>0)if(o.length>0){if(e.forEach(s=>n.push(s)),Math.max(...o)>e.length)throw new Error(\"axes is out of bound\");o.forEach((s,u)=>n[s]=r[u])}else r.forEach(s=>n.push(s));else{if(t.length===0)throw new Error(\"Resize requires either scales or sizes.\");n=e.map((s,u)=>Math.round(s*t[u]))}return n},lc=(e,t,r)=>{let o=(()=>{switch(r.keepAspectRatioPolicy){case\"not_larger\":return r.axes.length>0?Math.min(...r.axes.map(s=>t[s]),Number.MAX_VALUE):Math.min(...t,Number.MAX_VALUE);case\"not_smaller\":return r.axes.length>0?Math.max(...r.axes.map(s=>t[s]),Number.MIN_VALUE):Math.max(...t,Number.MIN_VALUE);default:throw new Error(`Keep aspect ratio policy ${r.keepAspectRatioPolicy} is not supported`)}})();t.fill(1,0,t.length);let n=e.slice();return r.axes.length>0?(r.axes.forEach(s=>t[s]=o),r.axes.forEach(s=>n[s]=Math.round(e[s]*t[s]))):(t.fill(o,0,t.length),n.forEach((s,u)=>n[u]=Math.round(s*t[u]))),n},cc=(e,t,r,o,n)=>`\\n fn calculateOriginalIndicesFromOutputIndices(output_indices: ${e.type.indices}) -> array<${e.type.value}, ${r.length}> {\\n var original_indices: array<${e.type.value}, ${r.length}>;\\n for (var i:u32 = 0; i < ${r.length}; i++) {\\n var output_index = ${e.indicesGet(\"output_indices\",\"i\")};\\n var scale = ${ce(\"uniforms.scales\",\"i\",o)};\\n var roi_low = ${ce(\"uniforms.roi\",\"i\",n)};\\n var roi_hi = ${ce(\"uniforms.roi\",`i + ${t.length}`,n)};\\n if (scale == 1.0) {\\n original_indices[i] = ${e.type.value}(output_index);\\n } else {\\n var input_shape_i = ${ce(\"uniforms.input_shape\",\"i\",t.length)};\\n var output_shape_i = ${ce(\"uniforms.output_shape\",\"i\",r.length)};\\n original_indices[i] = getOriginalCoordinateFromResizedCoordinate(output_index, scale, output_shape_i,\\n input_shape_i, roi_low, roi_hi);\\n }\\n }\\n return original_indices;\\n }`,pc=(e,t,r,o,n,s,u)=>`\\n fn calculateInputIndicesFromOutputIndices(output_indices: ${t.type.indices}) -> ${e.type.indices} {\\n var input_indices: ${e.type.indices};\\n for (var i:u32 = 0; i < ${o.length}; i++) {\\n var output_index = ${t.indicesGet(\"output_indices\",\"i\")};\\n var input_index: u32;\\n var scale = ${ce(\"uniforms.scales\",\"i\",n)};\\n if (scale == 1.0) {\\n input_index = output_index;\\n } else {\\n var roi_low = ${ce(\"uniforms.roi\",\"i\",s)};\\n var roi_hi = ${ce(\"uniforms.roi\",`i + ${r.length}`,s)};\\n var input_shape_i = ${ce(\"uniforms.input_shape\",\"i\",r.length)};\\n var output_shape_i = ${ce(\"uniforms.output_shape\",\"i\",o.length)};\\n var original_idx = getOriginalCoordinateFromResizedCoordinate(output_index, scale, output_shape_i,\\n input_shape_i, roi_low, roi_hi);\\n if (!${u} || (original_idx >= 0 && original_idx < ${t.type.value}(input_shape_i))) {\\n if (original_idx < 0) {\\n input_index = 0;\\n } else if (original_idx > ${t.type.value}(input_shape_i - 1)) {\\n input_index = input_shape_i - 1;\\n } else {\\n input_index = u32(getNearestPixelFromOriginal(original_idx, scale < 1));\\n }\\n } else {\\n input_index = u32(original_idx);\\n }\\n }\\n ${e.indicesSet(\"input_indices\",\"i\",\" input_index\")}\\n }\\n return input_indices;\\n }`,mc=(e,t)=>`\\n fn checkInputIndices(input_indices: ${e.type.indices}) -> bool {\\n for (var i:u32 = 0; i < ${t.length}; i++) {\\n var input_index = ${e.indicesGet(\"input_indices\",\"i\")};\\n if (input_index < 0 || input_index >= ${ce(\"uniforms.input_shape\",\"i\",t.length)}) {\\n return false;\\n }\\n }\\n return true;\\n }`,Ys=(e,t,r,o)=>e.rank>o?`\\n ${e.indicesSet(\"input_indices\",t,\"channel\")};\\n ${e.indicesSet(\"input_indices\",r,\"batch\")};\\n`:\"\",fc=(e,t,r,o,n)=>{let[u,l,a,p]=r.length===2?[-1,0,1,-1]:[0,2,3,1],h=e.type.value;return`\\n fn getInputValue(batch: u32, channel: u32, row: u32, col: u32) -> ${h} {\\n var input_indices: ${e.type.indices};\\n ${e.indicesSet(\"input_indices\",l,`max(0, min(row, ${r[l]} - 1))`)};\\n ${e.indicesSet(\"input_indices\",a,`max(0, min(col, ${r[a]} - 1))`)};\\n ${Ys(e,p,u,2)}\\n return ${e.getByIndices(\"input_indices\")};\\n }\\n\\n fn bilinearInterpolation(output_indices: ${t.type.indices}) -> ${h} {\\n var originalIndices = calculateOriginalIndicesFromOutputIndices(output_indices);\\n var row:${h} = originalIndices[${l}];\\n var col:${h} = originalIndices[${a}];\\n ${o?`if (row < 0 || row > (${r[l]} - 1) || col < 0 || col > (${r[a]} - 1)) {\\n return ${n};\\n }`:\"\"};\\n row = max(0, min(row, ${r[l]} - 1));\\n col = max(0, min(col, ${r[a]} - 1));\\n var row1: u32 = u32(row);\\n var col1: u32 = u32(col);\\n var row2: u32 = u32(row + 1);\\n var col2: u32 = u32(col + 1);\\n var channel: u32 = ${r.length>2?`u32(originalIndices[${p}])`:\"0\"};\\n var batch: u32 = ${r.length>2?`u32(originalIndices[${u}])`:\"0\"};\\n var x11: ${h} = getInputValue(batch, channel, row1, col1);\\n var x12: ${h} = getInputValue(batch, channel, row1, col2);\\n var x21: ${h} = getInputValue(batch, channel, row2, col1);\\n var x22: ${h} = getInputValue(batch, channel, row2, col2);\\n var dx1: ${h} = abs(row - ${h}(row1));\\n var dx2: ${h} = abs(${h}(row2) - row);\\n var dy1: ${h} = abs(col - ${h}(col1));\\n var dy2: ${h} = abs(${h}(col2) - col);\\n if (row1 == row2) {\\n dx1 = 0.5;\\n dx2 = 0.5;\\n }\\n if (col1 == col2) {\\n dy1 = 0.5;\\n dy2 = 0.5;\\n }\\n return (x11 * dx2 * dy2 + x12 * dx2 * dy1 + x21 * dx1 * dy2 + x22 * dx1 * dy1);\\n }`},hc=(e,t,r,o,n,s,u,l,a,p)=>{let h=r.length===2,g=!0,[b,w]=h?[0,1]:g?[2,3]:[1,2],y=e.type.value,_=I=>{let $=I===b?\"row\":\"col\";return`\\n fn ${$}CubicInterpolation(input_indices: ${e.type.indices}, output_indices: ${t.type.indices}) -> ${y} {\\n var output_index = ${t.indicesGet(\"output_indices\",I)};\\n var originalIdx: ${y} = getOriginalCoordinateFromResizedCoordinate(output_index, ${n[I]},\\n ${o[I]}, ${r[I]}, ${s[I]}, ${s[I]} + ${r.length});\\n var fractOriginalIdx: ${y} = originalIdx - floor(originalIdx);\\n var coefs = getCubicInterpolationCoefs(fractOriginalIdx);\\n\\n if (${l} && (originalIdx < 0 || originalIdx > (${r[I]} - 1))) {\\n return ${a};\\n }\\n var data: array<${y}, 4> = array<${y}, 4>(0.0, 0.0, 0.0, 0.0);\\n for (var i: i32 = -1; i < 3; i++) {\\n var ${$}: ${y} = originalIdx + ${y}(i);\\n if (${$} < 0 || ${$} >= ${r[I]}) {\\n ${(()=>p?`coefs[i + 1] = 0.0;\\n continue;`:l?`return ${a};`:`${$} = max(0, min(${$}, ${r[I]} - 1));`)()};\\n }\\n var input_indices_copy: ${e.type.indices} = input_indices;\\n ${e.indicesSet(\"input_indices_copy\",I,`u32(${$})`)};\\n data[i + 1] = ${I===b?e.getByIndices(\"input_indices_copy\"):\"rowCubicInterpolation(input_indices_copy, output_indices)\"};\\n }\\n return cubicInterpolation1D(data, coefs);\\n }`};return`\\n ${_(b)};\\n ${_(w)};\\n fn getCubicInterpolationCoefs(s: ${y}) -> array<${y}, 4> {\\n var absS = abs(s);\\n var coeffs: array<${y}, 4> = array<${y}, 4>(0.0, 0.0, 0.0, 0.0);\\n var oneMinusAbsS: ${y} = 1.0 - absS;\\n var twoMinusAbsS: ${y} = 2.0 - absS;\\n var onePlusAbsS: ${y} = 1.0 + absS;\\n coeffs[0] = ((${u} * onePlusAbsS - 5 * ${u}) * onePlusAbsS + 8 * ${u}) * onePlusAbsS - 4 * ${u};\\n coeffs[1] = ((${u} + 2) * absS - (${u} + 3)) * absS * absS + 1;\\n coeffs[2] = ((${u} + 2) * oneMinusAbsS - (${u} + 3)) * oneMinusAbsS * oneMinusAbsS + 1;\\n coeffs[3] = ((${u} * twoMinusAbsS - 5 * ${u}) * twoMinusAbsS + 8 * ${u}) * twoMinusAbsS - 4 * ${u};\\n return coeffs;\\n }\\n\\n fn cubicInterpolation1D(x: array<${y}, 4>, coefs: array<${y}, 4>) -> ${y} {\\n var coefsSum: ${y} = coefs[0] + coefs[1] + coefs[2] + coefs[3];\\n return (x[0] * coefs[0] + x[1] * coefs[1]+ x[2] * coefs[2]+ x[3] * coefs[3]) / coefsSum;\\n }\\n\\n fn bicubicInterpolation(output_indices: ${t.type.indices}) -> ${y} {\\n var input_indices: ${e.type.indices} = output_indices;\\n return colCubicInterpolation(input_indices, output_indices);\\n }\\n `},gc=(e,t,r,o,n)=>{let[u,l,a,p,h]=r.length===3?[-1,0,1,2,-1]:[0,2,3,4,1],g=e.type.value;return`\\n fn getInputValue(batch: u32, channel: u32, depth:u32, height: u32, width: u32) -> ${g} {\\n var input_indices: ${e.type.indices};\\n ${e.indicesSet(\"input_indices\",l,`max(0, min(depth, ${r[l]} - 1))`)};\\n ${e.indicesSet(\"input_indices\",a,`max(0, min(height, ${r[a]} - 1))`)};\\n ${e.indicesSet(\"input_indices\",p,`max(0, min(width, ${r[p]} - 1))`)};\\n ${Ys(e,h,u,3)}\\n return ${e.getByIndices(\"input_indices\")};\\n }\\n\\n fn trilinearInterpolation(output_indices: ${t.type.indices}) -> ${g} {\\n var originalIndices = calculateOriginalIndicesFromOutputIndices(output_indices);\\n var depth:${g} = originalIndices[${l}];\\n var height:${g} = originalIndices[${a}];\\n var width:${g} = originalIndices[${p}];\\n ${o?`if (depth < 0 || depth > (${r[l]} - 1) || height < 0 || height > (${r[a]} - 1) || width < 0 || (width > ${r[p]} - 1)) {\\n return ${n};\\n }`:\"\"};\\n\\n depth = max(0, min(depth, ${r[l]} - 1));\\n height = max(0, min(height, ${r[a]} - 1));\\n width = max(0, min(width, ${r[p]} - 1));\\n var depth1: u32 = u32(depth);\\n var height1: u32 = u32(height);\\n var width1: u32 = u32(width);\\n var depth2: u32 = u32(depth + 1);\\n var height2: u32 = u32(height + 1);\\n var width2: u32 = u32(width + 1);\\n var channel: u32 = ${r.length>3?`u32(originalIndices[${h}])`:\"0\"};\\n var batch: u32 = ${r.length>3?`u32(originalIndices[${u}])`:\"0\"};\\n\\n var x111: ${g} = getInputValue(batch, channel, depth1, height1, width1);\\n var x112: ${g} = getInputValue(batch, channel, depth1, height1, width2);\\n var x121: ${g} = getInputValue(batch, channel, depth1, height2, width1);\\n var x122: ${g} = getInputValue(batch, channel, depth1, height2, width2);\\n var x211: ${g} = getInputValue(batch, channel, depth2, height1, width1);\\n var x212: ${g} = getInputValue(batch, channel, depth2, height1, width2);\\n var x221: ${g} = getInputValue(batch, channel, depth2, height2, width1);\\n var x222: ${g} = getInputValue(batch, channel, depth2, height2, width2);\\n var dx1: ${g} = abs(depth - ${g}(depth1));\\n var dx2: ${g} = abs(${g}(depth2) - depth);\\n var dy1: ${g} = abs(height - ${g}(height1));\\n var dy2: ${g} = abs(${g}(height2) - height);\\n var dz1: ${g} = abs(width - ${g}(width1));\\n var dz2: ${g} = abs(${g}(width2) - width);\\n if (depth1 == depth2) {\\n dx1 = 0.5;\\n dx2 = 0.5;\\n }\\n if (height1 == height2) {\\n dy1 = 0.5;\\n dy2 = 0.5;\\n }\\n if (width1 == width2) {\\n dz1 = 0.5;\\n dz2 = 0.5;\\n }\\n return (x111 * dx2 * dy2 * dz2 + x112 * dx2 * dy2 * dz1 + x121 * dx2 * dy1 *dz2 + x122 * dx2 * dy1 * dz1 +\\n x211 * dx1 * dy2 * dz2 + x212 * dx1 * dy2 * dz1 + x221 * dx1 * dy1 *dz2 + x222 * dx1 * dy1 * dz1);\\n }`},yc=(e,t,r,o,n,s)=>{let u=e.dims,l=uc(s,t.axes,u.length),a=dc(u,o,n,t.axes),p=o.slice();o.length===0&&(p=u.map((x,E)=>x===0?1:a[E]/x),t.keepAspectRatioPolicy!==\"stretch\"&&(a=lc(u,p,t)));let h=F(\"output\",e.dataType,a.length),g=M(\"input\",e.dataType,u.length),b=U.size(a),w=u.length===a.length&&u.every((x,E)=>x===a[E]),y=t.coordinateTransformMode===\"tf_crop_and_resize\",_=t.extrapolationValue,I=g.type.value,$=x=>`\\n ${w?\"\":`\\n ${ic(t.coordinateTransformMode,I)};\\n ${(()=>{switch(t.mode){case\"nearest\":return`\\n ${mc(g,u)};\\n ${sc(t.nearestMode,r,I)};\\n ${pc(g,h,u,a,p.length,l.length,y)};\\n `;case\"linear\":return`\\n ${cc(h,u,a,p.length,l.length)};\\n ${(()=>{if(u.length===2||u.length===4)return`${fc(g,h,u,y,_)}`;if(u.length===3||u.length===5)return`${gc(g,h,u,y,_)}`;throw Error(\"Linear mode only supports input dims 2, 3, 4 and 5 are supported in linear mode.\")})()};\\n `;case\"cubic\":return`\\n ${(()=>{if(u.length===2||u.length===4)return`${hc(g,h,u,a,p,l,t.cubicCoeffA,y,t.extrapolationValue,t.excludeOutside)}`;throw Error(\"Cubic mode only supports input dims 2 and 4 are supported in linear mode.\")})()};\\n `;default:throw Error(\"Invalid resize mode\")}})()};\\n `}\\n ${x.registerUniform(\"output_size\",\"u32\").registerUniform(\"scales\",\"f32\",p.length).registerUniform(\"roi\",\"f32\",l.length).declareVariables(g,h)}\\n ${x.mainStart()}\\n ${x.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\\n ${w?\"output[global_idx] = input[global_idx];\":`\\n let output_indices = ${h.offsetToIndices(\"global_idx\")};\\n var input_indices: ${g.type.indices};\\n ${(()=>{switch(t.mode){case\"nearest\":return`input_indices = calculateInputIndicesFromOutputIndices(output_indices);\\n if (checkInputIndices(input_indices)) {\\n output[global_idx] = ${g.getByIndices(\"input_indices\")};\\n } else {\\n output[global_idx] = ${t.extrapolationValue};\\n }`;case\"linear\":return`output[global_idx] = ${u.length===2||u.length===4?\"bilinearInterpolation\":\"trilinearInterpolation\"}(output_indices);`;case\"cubic\":return\"output[global_idx] = bicubicInterpolation(output_indices);\";default:throw Error(`Unsupported resize mode: ${t.mode}`)}})()};\\n`}\\n }`;return{name:\"Resize\",shaderCache:{hint:`${t.cacheKey}|${r}|${p.length>0?p:\"\"}|${n.length>0?n:\"\"}|${l.length>0?l:\"\"}|${w}|${u}`,inputDependencies:[\"rank\"]},getShaderSource:$,getRunData:()=>({outputs:[{dims:a,dataType:e.dataType}],dispatchGroup:{x:Math.ceil(b/64)},programUniforms:[{type:\"uint32\",data:b},{type:\"float32\",data:p},{type:\"float32\",data:l},...L(u),...L(a)]})}},bc=e=>{let t=e.customDataBuffer;return new Uint32Array(t,t.byteOffset,1)[0]},Zs=(e,t)=>{let r=[],o=[],n=[],s=bc(e);if(t.antialias!==0)throw Error(\"Only default value (0) for Antialias attribute is supported\");ac(e.inputs,t,s,r,o,n),e.compute(yc(e.inputs[0],t,s,r,o,n),{inputs:[0]})},Qs=e=>{let t=e.antialias,r=e.axes,o=e.coordinateTransformMode,n=e.cubicCoeffA,s=e.excludeOutside!==0,u=e.extrapolationValue,l=e.keepAspectRatioPolicy,a=e.mode,p=e.nearestMode===\"\"?\"simple\":e.nearestMode;return ge({antialias:t,axes:r,coordinateTransformMode:o,cubicCoeffA:n,excludeOutside:s,extrapolationValue:u,keepAspectRatioPolicy:l,mode:a,nearestMode:p})}});var wc,vc,Js,eu,tu=j(()=>{\"use strict\";Ne();$e();je();ve();wc=e=>{if(!e||e.length<3)throw new Error(\"layerNorm requires at least 3 inputs.\");let t=e[0],r=e[1],o=e[2];if(t.dataType!==r.dataType||t.dataType!==o.dataType)throw new Error(\"All inputs must have the same data type\");if(t.dims.length!==3&&t.dims.length!==2)throw new Error(\"Input must be 2D or 3D\");if(r.dims.length!==3&&r.dims.length!==2)throw new Error(\"Skip must be 2D or 3D\");let n=t.dims[t.dims.length-1],s=t.dims[t.dims.length-2];if(r.dims[r.dims.length-1]!==n)throw new Error(\"Skip must have the same hidden size as input\");if(r.dims[r.dims.length-2]!==s)throw new Error(\"Skip must have the same sequence length as input\");if(o.dims.length!==1)throw new Error(\"Gamma must be 1D\");if(o.dims[o.dims.length-1]!==n)throw new Error(\"Gamma must have the same hidden size as input\");if(e.length>3){let u=e[3];if(u.dims.length!==1)throw new Error(\"Beta must be 1D\");if(u.dims[u.dims.length-1]!==n)throw new Error(\"Beta must have the same hidden size as input\")}if(e.length>4){let u=e[4];if(u.dims.length!==1)throw new Error(\"Bias must be 1D\");if(u.dims[u.dims.length-1]!==n)throw new Error(\"Bias must have the same hidden size as input\")}},vc=(e,t,r,o)=>{let n=e[0].dims,s=U.size(n),u=n,l=s,a=n.slice(-1)[0],p=o?n.slice(0,-1).concat(1):[],h=e.length>3,g=e.length>4,b=o&&r>1,w=o&&r>2,y=r>3,_=Fe(a),I=[M(\"x\",e[0].dataType,e[0].dims,_),M(\"skip\",e[1].dataType,e[1].dims,_),M(\"gamma\",e[2].dataType,e[2].dims,_)];h&&I.push(M(\"beta\",e[3].dataType,e[3].dims,_)),g&&I.push(M(\"bias\",e[4].dataType,e[4].dims,_)),I.push(F(\"output\",e[0].dataType,u,_)),b&&I.push(F(\"meanOutput\",1,p)),w&&I.push(F(\"invStdOutput\",1,p)),y&&I.push(F(\"inputSkipBiasSum\",e[0].dataType,u,_));let $=Le(e[0].dataType),x=A=>`\\n const hiddenSize: f32 = ${a};\\n const hiddenSizeVectorized: u32 = ${a/_};\\n const epsilon: f32 = ${t.epsilon};\\n\\n ${A.declareVariables(...I)}\\n\\n ${A.mainStart()}\\n ${A.guardAgainstOutOfBoundsWorkgroupSizes(l/a)}\\n let offset = global_idx * hiddenSizeVectorized;\\n var sum = ${Ze(\"f32\",_)};\\n var squareSum = ${Ze(\"f32\",_)};\\n for (var i: u32 = 0; i < hiddenSizeVectorized; i++) {\\n let skipValue = skip[offset + i];\\n let biasValue = ${g?\"bias[i]\":\"0.0\"};\\n let inputValue = x[offset + i];\\n let value = inputValue + skipValue + biasValue;\\n ${y?\"inputSkipBiasSum[offset + i] = value;\":\"\"}\\n output[offset + i] = value;\\n let f32Value = ${at($,_,\"value\")};\\n sum += f32Value;\\n squareSum += f32Value * f32Value;\\n }\\n let mean = ${Je(\"sum\",_)} / hiddenSize;\\n let invStdDev = inverseSqrt(${Je(\"squareSum\",_)} / hiddenSize - mean * mean + epsilon);\\n ${b?\"meanOutput[global_idx] = mean;\":\"\"}\\n ${w?\"invStdOutput[global_idx] = invStdDev;\":\"\"}\\n for (var i: u32 = 0; i < hiddenSizeVectorized; i++) {\\n output[offset + i] = (output[offset + i] - ${$}(mean)) * ${$}(invStdDev) * gamma[i]\\n + ${h?\"beta[i]\":\"0.0\"};\\n }\\n }`,E=[{dims:u,dataType:e[0].dataType}];return r>1&&E.push({dims:p,dataType:1}),r>2&&E.push({dims:p,dataType:1}),r>3&&E.push({dims:n,dataType:e[0].dataType}),{name:\"SkipLayerNormalization\",shaderCache:{hint:t.cacheKey},getShaderSource:x,getRunData:()=>({outputs:E,dispatchGroup:{x:Math.ceil(l/a/64)}})}},Js=(e,t)=>{wc(e.inputs);let o=[0];e.outputCount>1&&o.push(-3),e.outputCount>2&&o.push(-3),e.outputCount>3&&o.push(3),e.compute(vc(e.inputs,t,e.outputCount,!1),{outputs:o})},eu=e=>{let t=e.epsilon;return ge({epsilon:t})}});var $c,on,Sc,ru,xc,_c,nu,ou,au=j(()=>{\"use strict\";Ne();$e();je();ve();$c=(e,t)=>{if(!e||e.length<1)throw new Error(\"too few inputs\");if(t.axes.length!==0){if(t.axes.length!==t.starts.length||t.axes.length!==t.ends.length)throw new Error(\"axes, starts and ends must have the same length\")}else if(t.starts.length!==t.ends.length)throw new Error(\"starts and ends must have the same length\");e.slice(1).forEach((r,o)=>{if(e[o+1].dataType!==6&&e[o+1].dataType!==7)throw new Error(`Input ${o} must be an array of int32 or int64`)})},on=(e,t)=>{let r=[];if(e.length>t)if(e[t].dataType===7)e[t].getBigInt64Array().forEach(o=>r.push(Number(o)));else if(e[t].dataType===6)e[t].getInt32Array().forEach(o=>r.push(Number(o)));else throw new Error(`Input ${t} must be an array of int32 or int64`);return r},Sc=(e,t)=>{if(e.length>1){let r=on(e,1),o=on(e,2),n=on(e,3);return n.length===0&&(n=[...Array(e[0].dims.length).keys()]),ge({starts:r,ends:o,axes:n})}else return t},ru=(e,t,r,o,n)=>{let s=e;return e<0&&(s+=r[o[t]]),n[t]<0?Math.max(0,Math.min(s,r[o[t]]-1)):Math.max(0,Math.min(s,r[o[t]]))},xc=(e,t,r)=>`fn calculateInputIndices(output_indices: ${t.type.indices}) -> ${e.type.indices} {\\n var input_indices: ${e.type.indices};\\n var carry = 0u;\\n for (var i = ${r.length}; i >= 0; i--) {\\n let input_shape_i = ${ce(\"uniforms.input_shape\",\"i\",r.length)};\\n let steps_i = ${ce(\"uniforms.steps\",\"i\",r.length)};\\n let signs_i = ${ce(\"uniforms.signs\",\"i\",r.length)};\\n let starts_i = ${ce(\"uniforms.starts\",\"i\",r.length)};\\n var output_index = ${t.indicesGet(\"output_indices\",\"i\")};\\n var input_index = output_index * steps_i + starts_i + carry;\\n carry = input_index / input_shape_i;\\n input_index = input_index % input_shape_i;\\n if (signs_i < 0) {\\n input_index = input_shape_i - input_index - 1u + starts_i;\\n }\\n ${e.indicesSet(\"input_indices\",\"i\",\"input_index\")};\\n }\\n return input_indices;\\n }`,_c=(e,t)=>{let r=e[0].dims,o=U.size(r),n=t.axes.length>0?U.normalizeAxes(t.axes,r.length):[...Array(r.length).keys()],s=on(e,4);s.forEach($=>$!==0||(()=>{throw new Error(\"step cannot be 0\")})),s.length===0&&(s=Array(n.length).fill(1));let u=t.starts.map(($,x)=>ru($,x,r,n,s)),l=t.ends.map(($,x)=>ru($,x,r,n,s));if(n.length!==u.length||n.length!==l.length)throw new Error(\"start, ends and axes should have the same number of elements\");if(n.length!==r.length)for(let $=0;$Math.sign($));s.forEach(($,x,E)=>{if($<0){let A=(l[x]-u[x])/$,z=u[x],R=z+A*s[x];u[x]=R,l[x]=z,E[x]=-$}});let p=r.slice(0);n.forEach(($,x)=>{p[$]=Math.ceil((l[$]-u[$])/s[$])});let h={dims:p,dataType:e[0].dataType},g=F(\"output\",e[0].dataType,p.length),b=M(\"input\",e[0].dataType,e[0].dims.length),w=U.size(p),y=[{name:\"outputSize\",type:\"u32\"},{name:\"starts\",type:\"u32\",length:u.length},{name:\"signs\",type:\"i32\",length:a.length},{name:\"steps\",type:\"u32\",length:s.length}],_=[{type:\"uint32\",data:w},{type:\"uint32\",data:u},{type:\"int32\",data:a},{type:\"uint32\",data:s},...L(e[0].dims),...L(p)],I=$=>`\\n ${$.registerUniforms(y).declareVariables(b,g)}\\n ${xc(b,g,r)}\\n ${$.mainStart()}\\n ${$.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\\n let output_indices = ${g.offsetToIndices(\"global_idx\")};\\n let input_indices = calculateInputIndices(output_indices);\\n ${g.setByOffset(\"global_idx\",b.getByIndices(\"input_indices\"))}\\n }`;return{name:\"Slice\",shaderCache:{hint:`${a.length}_${u.length}_${s.length}`,inputDependencies:[\"rank\"]},getShaderSource:I,getRunData:()=>({outputs:[h],dispatchGroup:{x:Math.ceil(o/64)},programUniforms:_})}},nu=(e,t)=>{$c(e.inputs,t);let r=Sc(e.inputs,t);e.compute(_c(e.inputs,r),{inputs:[0]})},ou=e=>{let t=e.starts,r=e.ends,o=e.axes;return ge({starts:t,ends:r,axes:o})}});var Cc,Ic,iu,su,uu=j(()=>{\"use strict\";$e();je();ve();Cc=e=>{if(!e||e.length!==1)throw new Error(\"Softmax op requires 1 input.\")},Ic=(e,t)=>{let r=e.dims,o=U.size(r),n=64,s=t.axis;if(s<0&&(s=r.length+s),s$===4?`max(max(${I}.x, ${I}.y), max(${I}.z, ${I}.w))`:$===2?`max(${I}.x, ${I}.y)`:$===3?`max(max(${I}.x, ${I}.y), ${I}.z)`:I,g=M(\"x\",e.dataType,e.dims,a),b=F(\"result\",e.dataType,e.dims,a),w=g.type.value,y=Le(e.dataType)===\"f32\"?`var threadMax = ${w}(-3.402823e+38f);`:`var threadMax = ${w}(-65504.0h);`,_=I=>`\\n var rowMaxShared : ${w};\\n var rowSumShared : ${w};\\n var threadShared : array<${w}, ${n}>;\\n\\n fn getValue(row: i32, col: i32, row_stride: i32) -> ${w} {\\n let index = row * row_stride + col;\\n return x[index];\\n }\\n\\n fn setValue(row: i32, col: i32, row_stride: i32, value: ${w}) {\\n let index = row * row_stride + col;\\n result[index] = value;\\n }\\n ${I.registerUniform(\"packedCols\",\"i32\").declareVariables(g,b)}\\n ${I.mainStart()}\\n let gindex = i32(global_idx);\\n let lindex = i32(local_idx);\\n const wg = ${n};\\n let row = gindex / wg;\\n let cols = uniforms.packedCols;\\n let row_stride : i32 = uniforms.packedCols;\\n\\n // find the rows max\\n ${y}\\n for (var col = lindex; col < cols; col += wg) {\\n let value = getValue(row, col, row_stride);\\n threadMax = max(threadMax, value);\\n }\\n if (lindex < cols) {\\n threadShared[lindex] = threadMax;\\n }\\n workgroupBarrier();\\n\\n var reduceSize = min(cols, wg);\\n for (var currSize = reduceSize >> 1; currSize > 0; currSize = reduceSize >> 1) {\\n reduceSize = currSize + (reduceSize & 1);\\n if (lindex < currSize) {\\n threadShared[lindex] = max(threadShared[lindex], threadShared[lindex + reduceSize]);\\n }\\n workgroupBarrier();\\n }\\n if (lindex == 0) {\\n rowMaxShared = ${w}(${h(\"threadShared[0]\",a)});\\n }\\n workgroupBarrier();\\n\\n // find the rows sum\\n var threadSum = ${w}(0.0);\\n for (var col = lindex; col < cols; col += wg) {\\n let subExp = exp(getValue(row, col, row_stride) - rowMaxShared);\\n threadSum += subExp;\\n }\\n threadShared[lindex] = threadSum;\\n workgroupBarrier();\\n\\n for (var currSize = wg >> 1; currSize > 0; currSize = currSize >> 1) {\\n if (lindex < currSize) {\\n threadShared[lindex] = threadShared[lindex] + threadShared[lindex + currSize];\\n }\\n workgroupBarrier();\\n }\\n if (lindex == 0) {\\n rowSumShared = ${w}(${Je(\"threadShared[0]\",a)});\\n }\\n workgroupBarrier();\\n\\n // calculate final value for each element in the row\\n for (var col = lindex; col < cols; col += wg) {\\n let value = exp(getValue(row, col, row_stride) - rowMaxShared) / rowSumShared;\\n setValue(row, col, row_stride, value);\\n }\\n }`;return{name:\"Softmax\",shaderCache:{hint:`${a}`,inputDependencies:[\"type\"]},getRunData:()=>({outputs:[{dims:r,dataType:e.dataType}],dispatchGroup:{x:l},programUniforms:[{type:\"uint32\",data:p}]}),getShaderSource:_}},iu=(e,t)=>{Cc(e.inputs),e.compute(Ic(e.inputs[0],t))},su=e=>ge({axis:e.axis})});var Ac,Tc,Ec,Oc,Pc,du,lu,cu=j(()=>{\"use strict\";$e();je();ve();Ac=e=>{if(!e||e.length<1)throw new Error(\"too few inputs\")},Tc=(e,t)=>{let r=[],o=t.numOutputs;return e[1].dims[0]>0&&(e[1].getBigInt64Array().forEach(n=>r.push(Number(n))),o=r.length),ge({numOutputs:o,axis:t.axis,splitSizes:r})},Ec=e=>`\\nfn calculateOutputIndex(index: u32) -> u32 {\\n for (var i: u32 = 0u; i < ${e}u; i += 1u ) {\\n if (index < ${ce(\"uniforms.size_in_split_axis\",\"i\",e)}) {\\n return i;\\n }\\n }\\n return ${e}u;\\n}`,Oc=e=>{let t=e.length,r=[];for(let o=0;o{let r=e[0].dims,o=U.size(r),n=e[0].dataType,s=U.normalizeAxis(t.axis,r.length),u=new Array(t.numOutputs),l=M(\"input\",n,r),a=new Array(t.numOutputs),p=[],h=[],g=0,b=[{type:\"uint32\",data:o}];for(let y=0;yb.push(...L(y)));let w=y=>`\\n ${y.registerUniform(\"input_size\",\"u32\").registerUniform(\"size_in_split_axis\",\"u32\",a.length).declareVariables(l,...u)}\\n ${Ec(a.length)}\\n ${Oc(u)}\\n\\n ${y.mainStart()}\\n ${y.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.input_size\")}\\n\\n var indices = ${l.offsetToIndices(\"global_idx\")};\\n var index = ${l.indicesGet(\"indices\",s)};\\n let output_number = calculateOutputIndex(index);\\n if (output_number != 0) {\\n index -= ${ce(\"uniforms.size_in_split_axis\",\"output_number - 1u\",a.length)};\\n ${l.indicesSet(\"indices\",s,\"index\")};\\n }\\n writeBufferData(output_number, indices, global_idx);\\n }`;return{name:\"Split\",shaderCache:{hint:t.cacheKey,inputDependencies:[\"rank\"]},getShaderSource:w,getRunData:()=>({outputs:p,dispatchGroup:{x:Math.ceil(o/64)},programUniforms:b})}},du=(e,t)=>{Ac(e.inputs);let r=e.inputs.length===1?t:Tc(e.inputs,t);e.compute(Pc(e.inputs,r),{inputs:[0]})},lu=e=>{let t=e.axis,r=e.splitSizes,o=e.numOutputs<0?r.length:e.numOutputs;if(o!==r.length)throw new Error(\"numOutputs and splitSizes lengh must be equal\");return ge({axis:t,numOutputs:o,splitSizes:r})}});var pu,kc,Rc,Bc,mu,fu=j(()=>{\"use strict\";Ne();$e();ve();pu=e=>Array.from(e.getBigInt64Array(),Number),kc=e=>{if(!e||e.length!==2)throw new Error(\"Tile requires 2 inputs.\");if(e[0].dataType!==1&&e[0].dataType!==6&&e[0].dataType!==12)throw new Error(\"Tile only support float, int32, and uint32 data types\");if(e[1].dataType!==7)throw new Error(\"Tile `repeats` input should be of int64 data type\");if(e[1].dims.length!==1)throw new Error(\"Tile `repeats` input should be 1-D\");if(pu(e[1]).length!==e[0].dims.length)throw new Error(\"Tile `repeats` input should have same number of elements as rank of input data tensor\")},Rc=(e,t)=>{let r=[];for(let o=0;o{let t=e[0].dims,r=pu(e[1]),o=Rc(t,r),n=U.size(o),s=e[0].dataType,u=M(\"input\",s,t.length),l=F(\"output\",s,o.length),a=p=>`\\n const inputShape = ${u.indices(...t)};\\n ${p.registerUniform(\"output_size\",\"u32\").declareVariables(u,l)}\\n ${p.mainStart()}\\n ${p.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\\n let output_indices = ${l.offsetToIndices(\"global_idx\")};\\n var input_indices: ${u.type.indices};\\n for (var i = 0; i < ${t.length}; i++) {\\n let input_dim_i = ${u.indicesGet(\"uniforms.input_shape\",\"i\")};\\n let input_dim_value = ${l.indicesGet(\"output_indices\",\"i\")} % input_dim_i;\\n\\n ${u.indicesSet(\"input_indices\",\"i\",\"input_dim_value\")}\\n }\\n ${l.setByOffset(\"global_idx\",u.getByIndices(\"input_indices\"))}\\n }`;return{name:\"Tile\",shaderCache:{hint:`${r}`,inputDependencies:[\"rank\"]},getRunData:()=>({outputs:[{dims:o,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(n/64)},programUniforms:[{type:\"uint32\",data:n},...L(e[0].dims),...L(o)]}),getShaderSource:a}},mu=e=>{kc(e.inputs),e.compute(Bc(e.inputs),{inputs:[0]})}});var Dc,Mc,hu,gu=j(()=>{\"use strict\";Ne();$e();ve();Dc=(e,t,r,o,n)=>{let s=F(\"output_data\",n,r.length,4),u=M(\"a_data\",t[1].dataType,t[1].dims.length,4),l=M(\"b_data\",t[2].dataType,t[2].dims.length,4),a=M(\"c_data\",t[0].dataType,t[0].dims.length,4),p,h=(g,b,w)=>`select(${b}, ${g}, ${w})`;if(!o)p=s.setByOffset(\"global_idx\",h(u.getByOffset(\"global_idx\"),l.getByOffset(\"global_idx\"),a.getByOffset(\"global_idx\")));else{let g=(b,w,y=\"\")=>{let _=`a_data[index_a${w}][component_a${w}]`,I=`b_data[index_b${w}][component_b${w}]`,$=`bool(c_data[index_c${w}] & ${4278190080>>>(3-w)*8}u)`;return`\\n let output_indices${w} = ${s.offsetToIndices(`global_idx * 4u + ${w}u`)};\\n let offset_a${w} = ${u.broadcastedIndicesToOffset(`output_indices${w}`,s)};\\n let offset_b${w} = ${l.broadcastedIndicesToOffset(`output_indices${w}`,s)};\\n let offset_c${w} = ${a.broadcastedIndicesToOffset(`output_indices${w}`,s)};\\n let index_a${w} = offset_a${w} / 4u;\\n let index_b${w} = offset_b${w} / 4u;\\n let index_c${w} = offset_c${w} / 4u;\\n let component_a${w} = offset_a${w} % 4u;\\n let component_b${w} = offset_b${w} % 4u;\\n ${b}[${w}] = ${y}(${h(_,I,$)});\\n `};n===9?p=`\\n var data = vec4(0);\\n ${g(\"data\",0,\"u32\")}\\n ${g(\"data\",1,\"u32\")}\\n ${g(\"data\",2,\"u32\")}\\n ${g(\"data\",3,\"u32\")}\\n output_data[global_idx] = dot(vec4(0x1, 0x100, 0x10000, 0x1000000), vec4(data));`:p=`\\n ${g(\"output_data[global_idx]\",0)}\\n ${g(\"output_data[global_idx]\",1)}\\n ${g(\"output_data[global_idx]\",2)}\\n ${g(\"output_data[global_idx]\",3)}\\n `}return`\\n ${e.registerUniform(\"vec_size\",\"u32\").declareVariables(a,u,l,s)}\\n ${e.mainStart()}\\n ${e.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.vec_size\")}\\n ${p}\\n }`},Mc=e=>{let t=e[1].dims,r=e[2].dims,o=e[0].dims,n=e[1].dataType,s=!(U.areEqual(t,r)&&U.areEqual(r,o)),u=t,l=U.size(t);if(s){let p=dt.calcShape(dt.calcShape(t,r,!1),o,!1);if(!p)throw new Error(\"Can\\'t perform where op on the given tensors\");u=p,l=U.size(u)}let a=Math.ceil(l/4);return{name:\"Where\",shaderCache:{inputDependencies:[\"rank\",\"rank\",\"rank\"]},getShaderSource:p=>Dc(p,e,u,s,n),getRunData:()=>({outputs:[{dims:u,dataType:n}],dispatchGroup:{x:Math.ceil(l/64/4)},programUniforms:[{type:\"uint32\",data:a},...L(o),...L(t),...L(r),...L(u)]})}},hu=e=>{e.compute(Mc(e.inputs))}});var yu,bu=j(()=>{\"use strict\";Wa();Un();La();ja();Ci();Mi();Vi();Gn();Ji();rs();ss();ls();ms();gs();ws();$s();xs();Fn();As();Es();js();Ks();jr();Xs();tu();au();uu();cu();fu();jt();Vn();gu();yu=new Map([[\"Abs\",[qa]],[\"Acos\",[Ka]],[\"Acosh\",[Ya]],[\"Add\",[Ii]],[\"ArgMax\",[Na,zn]],[\"ArgMin\",[Va,zn]],[\"Asin\",[Za]],[\"Asinh\",[Qa]],[\"Atan\",[Xa]],[\"Atanh\",[Ja]],[\"Attention\",[Ha]],[\"AveragePool\",[zs,Ms]],[\"BatchNormalization\",[Ga]],[\"BiasAdd\",[Fa]],[\"BiasSplitGelu\",[_i]],[\"Cast\",[ti,ei]],[\"Ceil\",[ni]],[\"Clip\",[ri]],[\"Concat\",[zi,Ui]],[\"Conv\",[qn,jn]],[\"ConvTranspose\",[Xi,Qi]],[\"Cos\",[oi]],[\"Cosh\",[ai]],[\"CumSum\",[es,ts]],[\"Div\",[Ai]],[\"Einsum\",[as,is]],[\"Elu\",[ii,Yr]],[\"Equal\",[Ti]],[\"Erf\",[si]],[\"Exp\",[ui]],[\"Expand\",[ds]],[\"Floor\",[di]],[\"FusedConv\",[qn,jn]],[\"Gather\",[ps,cs]],[\"GatherElements\",[hs,fs]],[\"Gelu\",[li]],[\"Gemm\",[bs,ys]],[\"GlobalAveragePool\",[Ns,Vs]],[\"GlobalMaxPool\",[Fs,Ls]],[\"Greater\",[ki]],[\"GreaterOrEqual\",[Bi]],[\"InstanceNormalization\",[vs]],[\"LayerNormalization\",[Ss]],[\"LeakyRelu\",[ci,Yr]],[\"Less\",[Ri]],[\"LessOrEqual\",[Di]],[\"Log\",[xi]],[\"MatMul\",[Li]],[\"MaxPool\",[Hs,Gs]],[\"Mul\",[Ei]],[\"MultiHeadAttention\",[Is,Cs]],[\"Neg\",[mi]],[\"Not\",[pi]],[\"Pad\",[Ts]],[\"Pow\",[Oi]],[\"Range\",[qs]],[\"Reciprocal\",[fi]],[\"ReduceMin\",[Ra]],[\"ReduceMean\",[Ta]],[\"ReduceMax\",[ka]],[\"ReduceSum\",[Da]],[\"ReduceProd\",[Ba]],[\"ReduceL1\",[Ea]],[\"ReduceL2\",[Oa]],[\"ReduceLogSum\",[za]],[\"ReduceLogSumExp\",[Pa]],[\"ReduceSumSquare\",[Ma]],[\"Relu\",[hi]],[\"Resize\",[Zs,Qs]],[\"Sigmoid\",[gi]],[\"Sin\",[yi]],[\"Sinh\",[bi]],[\"Slice\",[nu,ou]],[\"SkipLayerNormalization\",[Js,eu]],[\"Split\",[du,lu]],[\"Sqrt\",[wi]],[\"Softmax\",[iu,su]],[\"Sub\",[Pi]],[\"Tan\",[vi]],[\"Tanh\",[$i]],[\"ThresholdedRelu\",[Si,Yr]],[\"Tile\",[mu]],[\"Transpose\",[ha,ga]],[\"Where\",[hu]]])});var an,wu=j(()=>{\"use strict\";Lt();Ct();ve();an=class{constructor(t){this.backend=t;this.repo=new Map,this.attributesBound=!1}getArtifact(t){return this.repo.get(t)}setArtifact(t,r){this.repo.set(t,r)}run(t,r,o,n,s){kt(t.programInfo.name);let u=this.backend.device,l=this.backend.getComputePassEncoder();this.backend.writeTimestamp(this.backend.pendingDispatchNumber*2),l.setPipeline(t.computePipeline);let a=[];for(let h of r)a.push({binding:a.length,resource:{buffer:h.buffer}});for(let h of o)a.push({binding:a.length,resource:{buffer:h.buffer}});s&&a.push({binding:a.length,resource:s});let p=u.createBindGroup({layout:t.computePipeline.getBindGroupLayout(0),entries:a,label:t.programInfo.name});l.setBindGroup(0,p),l.dispatchWorkgroups(...n),this.backend.writeTimestamp(this.backend.pendingDispatchNumber*2+1),this.backend.pendingDispatchNumber++,(this.backend.pendingDispatchNumber>=this.backend.maxDispatchNumber||this.backend.queryType===\"at-passes\")&&this.backend.endComputePass(),this.backend.pendingDispatchNumber>=this.backend.maxDispatchNumber&&this.backend.flush(),Rt(t.programInfo.name)}dispose(){}build(t,r){kt(t.name);let o=this.backend.device,n=[];o.features.has(\"shader-f16\")&&n.push(\"enable f16;\");let s=ma(r),u=t.getShaderSource(s),l=`${n.join(`\\n`)}\\n${s.additionalImplementations}\\n${u}`,a=o.createShaderModule({code:l,label:t.name});Be(\"verbose\",()=>`[WebGPU] ${t.name} shader code: ${l}`);let p=o.createComputePipeline({compute:{module:a,entryPoint:\"main\"},layout:\"auto\",label:t.name});return Rt(t.name),{programInfo:t,computePipeline:p}}normalizeDispatchGroupSize(t){let r=typeof t==\"number\"?t:t.x,o=typeof t==\"number\"?1:t.y||1,n=typeof t==\"number\"?1:t.z||1,s=this.backend.device.limits.maxComputeWorkgroupsPerDimension;if(r<=s&&o<=s&&n<=s)return[r,o,n];let u=r*o*n,l=Math.ceil(Math.sqrt(u));if(l>s){if(l=Math.ceil(Math.cbrt(u)),l>s)throw new Error(\"Total dispatch size exceeds WebGPU maximum.\");return[l,l,l]}else return[l,l,1]}}});var zc,Uc,sn,vu=j(()=>{\"use strict\";Lt();Ne();Ct();ua();pa();bu();wu();zc=(e,t)=>{if(t.length!==e.length)throw new Error(`inputDependencies length ${t.length} is not equal to inputTensors length ${e.length}.`);let r=[];for(let o=0;o{let o=e.name;return e.shaderCache?.hint&&(o+=\"[\"+e.shaderCache.hint+\"]\"),o+=\":\"+r+`:${zc(t,e.shaderCache?.inputDependencies??new Array(t.length).fill(\"dims\"))}`,o},sn=class{constructor(){this.currentKernelId=null;this.commandEncoder=null;this.computePassEncoder=null;this.maxDispatchNumber=16;this.pendingDispatchNumber=0;this.pendingKernels=[];this.pendingQueries=new Map;this.sessionExternalDataMapping=new Map}get currentKernelCustomData(){if(this.currentKernelId===null)throw new Error(\"currentKernelCustomData(): currentKernelId is null. (should not happen)\");let t=this.kernelCustomData.get(this.currentKernelId);return t||(t={},this.kernelCustomData.set(this.currentKernelId,t)),t}async initialize(t,r){this.env=t;let o=[],n={requiredLimits:{maxComputeWorkgroupStorageSize:r.limits.maxComputeWorkgroupStorageSize,maxComputeWorkgroupsPerDimension:r.limits.maxComputeWorkgroupsPerDimension,maxStorageBufferBindingSize:r.limits.maxStorageBufferBindingSize,maxBufferSize:r.limits.maxBufferSize,maxComputeInvocationsPerWorkgroup:r.limits.maxComputeInvocationsPerWorkgroup,maxComputeWorkgroupSizeX:r.limits.maxComputeWorkgroupSizeX,maxComputeWorkgroupSizeY:r.limits.maxComputeWorkgroupSizeY,maxComputeWorkgroupSizeZ:r.limits.maxComputeWorkgroupSizeZ},requiredFeatures:o};r.features.has(\"chromium-experimental-timestamp-query-inside-passes\")?o.push(\"chromium-experimental-timestamp-query-inside-passes\"):r.features.has(\"timestamp-query\")&&o.push(\"timestamp-query\"),r.features.has(\"shader-f16\")&&o.push(\"shader-f16\"),this.device=await r.requestDevice(n),this.gpuDataManager=ca(this),this.programManager=new an(this),this.kernels=new Map,this.kernelPersistentData=new Map,this.kernelCustomData=new Map,ia(t.logLevel,!!t.debug),this.device.onuncapturederror=s=>{s.error instanceof GPUValidationError&&console.error(`An uncaught WebGPU validation error was raised: ${s.error.message}`)},Object.defineProperty(this.env.webgpu,\"device\",{value:this.device}),this.setQueryType()}dispose(){typeof this.querySet<\"u\"&&this.querySet.destroy(),this.gpuDataManager.dispose()}getCommandEncoder(){return this.commandEncoder||(this.commandEncoder=this.device.createCommandEncoder(),this.setQueryType(),this.queryType!==\"none\"&&typeof this.querySet>\"u\"&&(this.querySet=this.device.createQuerySet({type:\"timestamp\",count:this.maxDispatchNumber*2}),this.queryResolveBuffer=this.device.createBuffer({size:this.maxDispatchNumber*2*8,usage:GPUBufferUsage.COPY_SRC|GPUBufferUsage.QUERY_RESOLVE}))),this.commandEncoder}getComputePassEncoder(){if(!this.computePassEncoder){let t={};this.queryType===\"at-passes\"&&(t.timestampWrites={querySet:this.querySet,beginningOfPassWriteIndex:this.pendingDispatchNumber*2,endOfPassWriteIndex:this.pendingDispatchNumber*2+1}),this.computePassEncoder=this.getCommandEncoder().beginComputePass(t)}return this.computePassEncoder}endComputePass(){this.computePassEncoder&&(this.computePassEncoder.end(),this.computePassEncoder=null)}flush(){if(!this.commandEncoder)return;kt(),this.endComputePass();let t;this.queryType!==\"none\"&&(this.commandEncoder.resolveQuerySet(this.querySet,0,this.pendingDispatchNumber*2,this.queryResolveBuffer,0),t=this.device.createBuffer({size:this.pendingDispatchNumber*2*8,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST}),this.pendingQueries.set(t,this.pendingKernels),this.pendingKernels=[],this.commandEncoder.copyBufferToBuffer(this.queryResolveBuffer,0,t,0,this.pendingDispatchNumber*2*8)),this.device.queue.submit([this.commandEncoder.finish()]),this.gpuDataManager.refreshPendingBuffers(),this.commandEncoder=null,this.pendingDispatchNumber=0,this.queryType!==\"none\"&&t.mapAsync(GPUMapMode.READ).then(()=>{let r=new BigUint64Array(t.getMappedRange()),o=this.pendingQueries.get(t);for(let n=0;n\"u\"&&(this.queryTimeBase=w);let _=Number(w-this.queryTimeBase),I=Number(y-this.queryTimeBase);if(!Number.isSafeInteger(_)||!Number.isSafeInteger(I))throw new RangeError(\"incorrect timestamp range\");if(this.env.webgpu.profiling?.ondata)this.env.webgpu.profiling.ondata({version:1,inputsMetadata:g.map($=>({dims:$.dims,dataType:Xe($.dataType)})),outputsMetadata:b.map($=>({dims:$.dims,dataType:Xe($.dataType)})),kernelId:u,kernelType:a,kernelName:p,programName:h,startTime:_,endTime:I});else{let $=\"\";g.forEach((E,A)=>{$+=`input[${A}]: [${E.dims}] | ${Xe(E.dataType)}, `});let x=\"\";b.forEach((E,A)=>{x+=`output[${A}]: [${E.dims}] | ${Xe(E.dataType)}, `}),console.log(`[profiling] kernel \"${u}|${a}|${p}|${h}\" ${$}${x}execution time: ${I-_} ns`)}An(\"GPU\",`${h}::${w}::${y}`)}t.unmap(),this.pendingQueries.delete(t)}),Rt()}run(t,r,o,n,s){kt(t.name);let u=[];for(let x=0;xE):o;if(h.length!==l.length)throw new Error(`Output size ${h.length} must be equal to ${l.length}.`);let g=[],b=[];for(let x=0;x=l.length)throw new Error(`Invalid output index: ${h[x]}`);if(h[x]===-3)continue;let E=h[x]===-1,A=h[x]===-2,z=E||A?s(l[x].dataType,l[x].dims):n(h[x],l[x].dataType,l[x].dims),R=this.gpuDataManager.get(z.data);if(!R)throw new Error(`no GPU data for output: ${z.data}`);if(E&&this.temporaryData.push(R),A){let V=this.kernelPersistentData.get(this.currentKernelId);V||(V=[],this.kernelPersistentData.set(this.currentKernelId,V)),V.push(R)}g.push(z),b.push(R)}let w;if(p){let x=0,E=[];p.forEach(V=>{let T=typeof V.data==\"number\"?[V.data]:V.data;if(T.length===0)return;let N=T.length<=2?T.length*4:16;x=Math.ceil(x/N)*N,E.push(x),x+=T.length>4?Math.ceil(T.length/4)*16:T.length*4});let A=16;x=Math.ceil(x/A)*A;let z=new ArrayBuffer(x);p.forEach((V,T)=>{let N=E[T],te=typeof V.data==\"number\"?[V.data]:V.data;V.type===\"int32\"?new Int32Array(z,N,te.length).set(te):V.type===\"uint32\"?new Uint32Array(z,N,te.length).set(te):new Float32Array(z,N,te.length).set(te)});let R=this.gpuDataManager.create(x,GPUBufferUsage.COPY_DST|GPUBufferUsage.UNIFORM);this.device.queue.writeBuffer(R.buffer,0,z,0,x),this.gpuDataManager.release(R.id),w={offset:0,size:x,buffer:R.buffer}}let y=this.programManager.normalizeDispatchGroupSize(a),_=y[1]===1&&y[2]===1,I=Uc(t,r,_),$=this.programManager.getArtifact(I);if($||($=this.programManager.build(t,y),this.programManager.setArtifact(I,$),Be(\"info\",()=>`[artifact] key: ${I}, programName: ${t.name}`)),Be(\"info\",()=>`[ProgramManager] run \"${t.name}\" (key=${I}) with ${y[0]}x${y[1]}x${y[2]}`),this.queryType!==\"none\"){let x={kernelId:this.currentKernelId,programName:$.programInfo.name,inputTensorViews:r,outputTensorViews:g};this.pendingKernels.push(x)}return this.programManager.run($,u,b,y,w),Rt(t.name),g}upload(t,r){this.gpuDataManager.upload(t,r)}memcpy(t,r){this.gpuDataManager.memcpy(t,r)}async download(t,r){await this.gpuDataManager.download(t,r)}alloc(t){return this.gpuDataManager.create(t).id}free(t){return this.gpuDataManager.release(t)}createKernel(t,r,o,n){let s=yu.get(t);if(!s)throw new Error(`kernel not implemented: ${t}`);let u={kernelType:t,kernelName:n,kernelEntry:s[0],attributes:[s[1],o]};this.kernels.set(r,u)}releaseKernel(t){let r=this.kernelPersistentData.get(t);if(r){for(let o of r)this.gpuDataManager.release(o.id);this.kernelPersistentData.delete(t)}this.kernelCustomData.delete(t),this.kernels.delete(t)}computeKernel(t,r,o){let n=this.kernels.get(t);if(!n)throw new Error(`kernel not created: ${t}`);let s=n.kernelType,u=n.kernelName,l=n.kernelEntry,a=n.attributes;if(this.currentKernelId!==null)throw new Error(`kernel \"[${s}] ${u}\" is not allowed to be called recursively`);this.currentKernelId=t,a[0]&&(a[1]=a[0](a[1]),a[0]=void 0),Be(\"info\",()=>`[WebGPU] Start to run kernel \"[${s}] ${u}\"...`);let p=this.env.debug;this.temporaryData=[];try{return p&&this.device.pushErrorScope(\"validation\"),l(r,a[1]),0}catch(h){return o.push(Promise.resolve(`[WebGPU] Kernel \"[${s}] ${u}\" failed. ${h}`)),1}finally{p&&o.push(this.device.popErrorScope().then(h=>h?`GPU validation error for kernel \"[${s}] ${u}\": ${h.message}`:null));for(let h of this.temporaryData)this.gpuDataManager.release(h.id);this.temporaryData=[],this.currentKernelId=null}}registerBuffer(t,r,o,n){let s=this.sessionExternalDataMapping.get(t);s||(s=new Map,this.sessionExternalDataMapping.set(t,s));let u=s.get(r),l=this.gpuDataManager.registerExternalBuffer(o,n,u?.[1]);return s.set(r,[l,o]),l}unregisterBuffers(t){let r=this.sessionExternalDataMapping.get(t);r&&(r.forEach(o=>this.gpuDataManager.unregisterExternalBuffer(o[1])),this.sessionExternalDataMapping.delete(t))}getBuffer(t){let r=this.gpuDataManager.get(t);if(!r)throw new Error(`no GPU data for buffer: ${t}`);return r.buffer}createDownloader(t,r,o){return async()=>{let n=await On(this,t,r);return sa(n.buffer,o)}}writeTimestamp(t){this.queryType===\"inside-passes\"&&this.computePassEncoder.writeTimestamp(this.querySet,t)}setQueryType(){this.queryType=\"none\",(this.env.webgpu.profiling?.mode===\"default\"||this.env.wasm.trace)&&(this.device.features.has(\"chromium-experimental-timestamp-query-inside-passes\")?this.queryType=\"inside-passes\":this.device.features.has(\"timestamp-query\")&&(this.queryType=\"at-passes\"))}}});var $u={};Br($u,{init:()=>Vc});var gr,Jn,Vc,Su=j(()=>{\"use strict\";Ne();vu();Ct();$e();gr=class e{constructor(t,r,o,n){this.module=t;this.dataType=r;this.data=o;this.dims=n}getFloat32Array(){if(this.dataType!==1)throw new Error(\"Invalid data type\");let t=U.size(this.dims);return t===0?new Float32Array:new Float32Array(this.module.HEAP8.buffer,this.data,t)}getBigInt64Array(){if(this.dataType!==7)throw new Error(\"Invalid data type\");let t=U.size(this.dims);return t===0?new BigInt64Array:new BigInt64Array(this.module.HEAP8.buffer,this.data,t)}getInt32Array(){if(this.dataType!==6)throw new Error(\"Invalid data type\");let t=U.size(this.dims);return t===0?new Int32Array:new Int32Array(this.module.HEAP8.buffer,this.data,t)}reshape(t){if(U.size(t)!==U.size(this.dims))throw new Error(\"Invalid new shape\");return new e(this.module,this.dataType,this.data,t)}},Jn=class{constructor(t,r,o){this.module=t;this.backend=r;this.customDataOffset=0;this.customDataSize=0;let n=t.HEAPU32,s=o>>>2;this.opKernelContext=n[s++];let u=n[s++];this.outputCount=n[s++],this.customDataOffset=n[s++],this.customDataSize=n[s++];let l=[];for(let a=0;atypeof l==\"number\"?this.inputs[l]:l)??this.inputs,n=r?.outputs??[],s=(l,a,p)=>new gr(this.module,a,this.output(l,p),p),u=(l,a)=>{let p=cr(l);if(!p)throw new Error(`Unsupported data type: ${l}`);let h=p*U.size(a);return new gr(this.module,l,this.backend.gpuDataManager.create(h).id,a)};return this.backend.run(t,o,n,s,u)}output(t,r){let o=this.module.stackSave();try{let n=this.module.stackAlloc((1+r.length)*4),s=n>>2;this.module.HEAPU32[s++]=r.length;for(let u=0;u{let o=e.jsepInit;if(!o)throw new Error(\"Failed to initialize JSEP. The WebAssembly module is not built with JSEP support.\");let n=new sn;await n.initialize(t,r),o(n,s=>n.alloc(s),s=>n.free(s),(s,u,l,a=!1)=>{if(a)Be(\"verbose\",()=>`[WebGPU] jsepCopyGpuToGpu: src=${s}, dst=${u}, size=${l}`),n.memcpy(s,u);else{Be(\"verbose\",()=>`[WebGPU] jsepCopyCpuToGpu: dataOffset=${s}, gpuDataId=${u}, size=${l}`);let p=e.HEAPU8.subarray(s>>>0,(s>>>0)+l);n.upload(u,p)}},async(s,u,l)=>{Be(\"verbose\",()=>`[WebGPU] jsepCopyGpuToCpu: gpuDataId=${s}, dataOffset=${u}, size=${l}`),await n.download(s,()=>e.HEAPU8.subarray(u>>>0,(u>>>0)+l))},(s,u,l)=>n.createKernel(s,u,l,e.UTF8ToString(e._JsepGetNodeName(u))),s=>n.releaseKernel(s),(s,u,l,a)=>{Be(\"verbose\",()=>`[WebGPU] jsepRun: sessionHandle=${l}, kernel=${s}, contextDataOffset=${u}`);let p=new Jn(e,n,u);return n.computeKernel(s,p,a)})}});var Mo;Mo=Io();var Ju=Ro(),Sn,xn=!1,Dr=!1,Do=!1,ed=e=>{if(e===1)return!1;if(typeof SharedArrayBuffer>\"u\")return typeof self<\"u\"&&!self.crossOriginIsolated&&console.warn(\"env.wasm.numThreads is set to \"+e+\", but this will not work unless you enable crossOriginIsolated mode. See https://web.dev/cross-origin-isolation-guide/ for more info.\"),!1;typeof process<\"u\"&&process.versions&&process.versions.node&&console.warn(\"env.wasm.numThreads is set to \"+e+\", however, currently onnxruntime-web does not support multi-threads in Node.js. Please consider using onnxruntime-node for performance critical scenarios.\");try{return typeof MessageChannel<\"u\"&&new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch{return!1}},td=()=>{try{return WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,30,1,28,0,65,0,253,15,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,186,1,26,11]))}catch{return!1}},rd=(e,t)=>e?t?\"ort-wasm-simd-threaded.wasm\":\"ort-wasm-simd.wasm\":t?\"ort-wasm-threaded.wasm\":\"ort-wasm.wasm\",zo=async e=>{if(xn)return Promise.resolve();if(Dr)throw new Error(\"multiple calls to \\'initializeWebAssembly()\\' detected.\");if(Do)throw new Error(\"previous call to \\'initializeWebAssembly()\\' failed.\");Dr=!0;let t=e.initTimeout,r=e.numThreads,o=e.simd,n=ed(r),s=o&&td(),u=e.wasmPaths,l=typeof u==\"string\"?u:void 0,a=rd(s,n),p=typeof u==\"object\"?u[a]:void 0,h=!1,g=[];if(t>0&&g.push(new Promise(b=>{setTimeout(()=>{h=!0,b()},t)})),g.push(new Promise((b,w)=>{let y=n?Ju:Mo,_={locateFile:(I,$)=>{if(n&&I.endsWith(\".worker.js\")&&typeof Blob<\"u\")return URL.createObjectURL(new Blob([Bo()],{type:\"text/javascript\"}));if(I.endsWith(\".wasm\")){if(p)return p;let x=l??$;return a===\"ort-wasm-simd.wasm\"?x+\"ort-wasm-simd.jsep.wasm\":a===\"ort-wasm-simd-threaded.wasm\"?x+\"ort-wasm-simd-threaded.jsep.wasm\":x+a}return $+I}};if(n)if(_.numThreads=r,typeof Blob>\"u\")_.mainScriptUrlOrBlob=(void 0)(__dirname,\"ort-wasm-threaded.js\");else{let I=`var ortWasmThreaded=${y.toString()};`;_.mainScriptUrlOrBlob=new Blob([I],{type:\"text/javascript\"})}y(_).then(I=>{Dr=!1,xn=!0,Sn=I,b()},I=>{Dr=!1,Do=!0,w(I)})})),await Promise.race(g),h)throw new Error(`WebAssembly backend initializing failed due to timeout: ${t}ms`)},Ve=()=>{if(xn&&Sn)return Sn;throw new Error(\"WebAssembly is not initialized yet.\")};var He=(e,t)=>{let r=Ve(),o=r.lengthBytesUTF8(e)+1,n=r._malloc(o);return r.stringToUTF8(e,n,o),t.push(n),n},lr=(e,t,r,o)=>{if(typeof e==\"object\"&&e!==null){if(r.has(e))throw new Error(\"Circular reference in options\");r.add(e)}Object.entries(e).forEach(([n,s])=>{let u=t?t+n:n;if(typeof s==\"object\")lr(s,u+\".\",r,o);else if(typeof s==\"string\"||typeof s==\"number\")o(u,s.toString());else if(typeof s==\"boolean\")o(u,s?\"1\":\"0\");else throw new Error(`Can\\'t handle extra config type: ${typeof s}`)})},ke=e=>{let t=Ve(),r=t.stackSave();try{let o=t.stackAlloc(8);t._OrtGetLastError(o,o+4);let n=t.HEAP32[o/4],s=t.HEAPU32[o/4+1],u=s?t.UTF8ToString(s):\"\";throw new Error(`${e} ERROR_CODE: ${n}, ERROR_MESSAGE: ${u}`)}finally{t.stackRestore(r)}};var Uo=e=>{let t=Ve(),r=0,o=[],n=e||{};try{if(e?.logSeverityLevel===void 0)n.logSeverityLevel=2;else if(typeof e.logSeverityLevel!=\"number\"||!Number.isInteger(e.logSeverityLevel)||e.logSeverityLevel<0||e.logSeverityLevel>4)throw new Error(`log serverity level is not valid: ${e.logSeverityLevel}`);if(e?.logVerbosityLevel===void 0)n.logVerbosityLevel=0;else if(typeof e.logVerbosityLevel!=\"number\"||!Number.isInteger(e.logVerbosityLevel))throw new Error(`log verbosity level is not valid: ${e.logVerbosityLevel}`);e?.terminate===void 0&&(n.terminate=!1);let s=0;return e?.tag!==void 0&&(s=He(e.tag,o)),r=t._OrtCreateRunOptions(n.logSeverityLevel,n.logVerbosityLevel,!!n.terminate,s),r===0&&ke(\"Can\\'t create run options.\"),e?.extra!==void 0&&lr(e.extra,\"\",new WeakSet,(u,l)=>{let a=He(u,o),p=He(l,o);t._OrtAddRunConfigEntry(r,a,p)!==0&&ke(`Can\\'t set a run config entry: ${u} - ${l}.`)}),[r,o]}catch(s){throw r!==0&&t._OrtReleaseRunOptions(r),o.forEach(u=>t._free(u)),s}};var nd=e=>{switch(e){case\"disabled\":return 0;case\"basic\":return 1;case\"extended\":return 2;case\"all\":return 99;default:throw new Error(`unsupported graph optimization level: ${e}`)}},od=e=>{switch(e){case\"sequential\":return 0;case\"parallel\":return 1;default:throw new Error(`unsupported execution mode: ${e}`)}},ad=e=>{e.extra||(e.extra={}),e.extra.session||(e.extra.session={});let t=e.extra.session;t.use_ort_model_bytes_directly||(t.use_ort_model_bytes_directly=\"1\"),e.executionProviders&&e.executionProviders.some(r=>(typeof r==\"string\"?r:r.name)===\"webgpu\")&&(e.enableMemPattern=!1)},id=(e,t,r)=>{for(let o of t){let n=typeof o==\"string\"?o:o.name;switch(n){case\"webnn\":if(n=\"WEBNN\",typeof o!=\"string\"){let u=o;if(u?.deviceType){let l=He(\"deviceType\",r),a=He(u.deviceType,r);Ve()._OrtAddSessionConfigEntry(e,l,a)!==0&&ke(`Can\\'t set a session config entry: \\'deviceType\\' - ${u.deviceType}.`)}if(u?.numThreads){let l=u.numThreads;(typeof l!=\"number\"||!Number.isInteger(l)||l<0)&&(l=0);let a=He(\"numThreads\",r),p=He(l.toString(),r);Ve()._OrtAddSessionConfigEntry(e,a,p)!==0&&ke(`Can\\'t set a session config entry: \\'numThreads\\' - ${u.numThreads}.`)}if(u?.powerPreference){let l=He(\"powerPreference\",r),a=He(u.powerPreference,r);Ve()._OrtAddSessionConfigEntry(e,l,a)!==0&&ke(`Can\\'t set a session config entry: \\'powerPreference\\' - ${u.powerPreference}.`)}}break;case\"webgpu\":if(n=\"JS\",typeof o!=\"string\"){let u=o;if(u?.preferredLayout){if(u.preferredLayout!==\"NCHW\"&&u.preferredLayout!==\"NHWC\")throw new Error(`preferredLayout must be either \\'NCHW\\' or \\'NHWC\\': ${u.preferredLayout}`);let l=He(\"preferredLayout\",r),a=He(u.preferredLayout,r);Ve()._OrtAddSessionConfigEntry(e,l,a)!==0&&ke(`Can\\'t set a session config entry: \\'preferredLayout\\' - ${u.preferredLayout}.`)}}break;case\"wasm\":case\"cpu\":continue;default:throw new Error(`not supported execution provider: ${n}`)}let s=He(n,r);Ve()._OrtAppendExecutionProvider(e,s)!==0&&ke(`Can\\'t append execution provider: ${n}.`)}},Vo=e=>{let t=Ve(),r=0,o=[],n=e||{};ad(n);try{let s=nd(n.graphOptimizationLevel??\"all\"),u=od(n.executionMode??\"sequential\"),l=typeof n.logId==\"string\"?He(n.logId,o):0,a=n.logSeverityLevel??2;if(!Number.isInteger(a)||a<0||a>4)throw new Error(`log serverity level is not valid: ${a}`);let p=n.logVerbosityLevel??0;if(!Number.isInteger(p)||p<0||p>4)throw new Error(`log verbosity level is not valid: ${p}`);let h=typeof n.optimizedModelFilePath==\"string\"?He(n.optimizedModelFilePath,o):0;if(r=t._OrtCreateSessionOptions(s,!!n.enableCpuMemArena,!!n.enableMemPattern,u,!!n.enableProfiling,0,l,a,p,h),r===0&&ke(\"Can\\'t create session options.\"),n.executionProviders&&id(r,n.executionProviders,o),n.freeDimensionOverrides)for(let[g,b]of Object.entries(n.freeDimensionOverrides)){if(typeof g!=\"string\")throw new Error(`free dimension override name must be a string: ${g}`);if(typeof b!=\"number\"||!Number.isInteger(b)||b<0)throw new Error(`free dimension override value must be a non-negative integer: ${b}`);let w=He(g,o);t._OrtAddFreeDimensionOverride(r,w,b)!==0&&ke(`Can\\'t set a free dimension override: ${g} - ${b}.`)}return n.extra!==void 0&&lr(n.extra,\"\",new WeakSet,(g,b)=>{let w=He(g,o),y=He(b,o);t._OrtAddSessionConfigEntry(r,w,y)!==0&&ke(`Can\\'t set a session config entry: ${g} - ${b}.`)}),[r,o]}catch(s){throw r!==0&&t._OrtReleaseSessionOptions(r),o.forEach(u=>t._free(u)),s}};Ne();var Wo=async e=>{if(typeof e==\"string\")if(typeof process<\"u\"&&process.versions&&process.versions.node)try{return new Uint8Array(await(void 0)(e))}catch(t){if(t.code===\"ERR_FS_FILE_TOO_LARGE\"){let r=(void 0)(e),o=[];for await(let n of r)o.push(n);return new Uint8Array(Buffer.concat(o))}throw t}else{let t=await fetch(e);if(!t.ok)throw new Error(`failed to load external data file: ${e}`);let r=t.headers.get(\"Content-Length\"),o=r?parseInt(r,10):0;if(o<1073741824)return new Uint8Array(await t.arrayBuffer());{if(!t.body)throw new Error(`failed to load external data file: ${e}, no response body.`);let n=t.body.getReader(),s;try{s=new ArrayBuffer(o)}catch(l){if(l instanceof RangeError){let a=Math.ceil(o/65536);s=new WebAssembly.Memory({initial:a,maximum:a}).buffer}else throw l}let u=0;for(;;){let{done:l,value:a}=await n.read();if(l)break;let p=a.byteLength;new Uint8Array(s,u,p).set(a),u+=p}return new Uint8Array(s,0,o)}}else return e instanceof Blob?new Uint8Array(await e.arrayBuffer()):e instanceof Uint8Array?e:new Uint8Array(e)};var Nc=(e,t)=>{Ve()._OrtInit(e,t)!==0&&ke(\"Can\\'t initialize onnxruntime.\")},_u=async e=>{Nc(e.wasm.numThreads,pr(e.logLevel))},Cu=async(e,t)=>{if(t===\"webgpu\"){if(typeof navigator>\"u\"||!navigator.gpu)throw new Error(\"WebGPU is not supported in current environment\");let r=await navigator.gpu.requestAdapter();if(!r)throw new Error(\\'Failed to get GPU adapter. You may need to enable flag \"--enable-unsafe-webgpu\" if you are using Chrome.\\');if(!e.wasm.simd)throw new Error(\"Not supported for WebGPU=ON and SIMD=OFF. Please set `env.wasm.simd` to true when using `webgpu` EP\");let o=(Su(),Ht($u)).init;await o(Ve(),e,r)}},yr=new Map,Wc=e=>{let t=Ve(),r=t.stackSave();try{let o=t.stackAlloc(8);return t._OrtGetInputOutputCount(e,o,o+4)!==0&&ke(\"Can\\'t get session input/output count.\"),[t.HEAP32[o/4],t.HEAP32[o/4+1]]}finally{t.stackRestore(r)}},eo=e=>{let t=Ve(),r=t._malloc(e.byteLength);if(r===0)throw new Error(`Can\\'t create a session. failed to allocate a buffer of size ${e.byteLength}.`);return t.HEAPU8.set(e,r),[r,e.byteLength]},Iu=async(e,t)=>{let r,o,n=Ve();Array.isArray(e)?[r,o]=e:e.buffer===n.HEAPU8.buffer?[r,o]=[e.byteOffset,e.byteLength]:[r,o]=eo(e);let s=0,u=0,l=0,a=[],p=[],h=[];try{if([u,a]=Vo(t),t?.externalData&&n.mountExternalData){let $=[];for(let x of t.externalData){let E=typeof x==\"string\"?x:x.path;$.push(Wo(typeof x==\"string\"?x:x.data).then(A=>{n.mountExternalData(E,A)}))}await Promise.all($)}s=n._OrtCreateSession(r,o,u),s===0&&ke(\"Can\\'t create a session.\");let[g,b]=Wc(s),w=[],y=[],_=[];for(let $=0;$$===\"gpu-buffer\")&&(l=n._OrtCreateBinding(s),l===0&&ke(\"Can\\'t create IO binding.\"),I={handle:l,outputPreferredLocations:_,outputPreferredLocationsEncoded:_.map($=>Cn($))}),yr.set(s,[s,p,h,I]),[s,w,y]}catch(g){throw p.forEach(b=>n._OrtFree(b)),h.forEach(b=>n._OrtFree(b)),l!==0&&n._OrtReleaseBinding(l),s!==0&&n._OrtReleaseSession(s),g}finally{n._free(r),u!==0&&n._OrtReleaseSessionOptions(u),a.forEach(g=>n._free(g)),n.unmountExternalData?.()}},Au=e=>{let t=Ve(),r=yr.get(e);if(!r)throw new Error(`cannot release session. invalid session id: ${e}`);let[o,n,s,u]=r;u&&t._OrtReleaseBinding(u.handle),t.jsepUnregisterBuffers?.(e),n.forEach(l=>t._OrtFree(l)),s.forEach(l=>t._OrtFree(l)),t._OrtReleaseSession(o),yr.delete(e)},xu=(e,t,r,o,n)=>{if(!e){t.push(0);return}let s=Ve(),u=e[0],l=e[1],a=e[3],p,h;if(u===\"string\"&&a===\"gpu-buffer\")throw new Error(\"String tensor is not supported on GPU.\");if(a===\"gpu-buffer\"){let w=e[2].gpuBuffer,y=cr(_n(u));h=l.reduce((_,I)=>_*I,1)*y,p=s.jsepRegisterBuffer(o,n,w,h)}else{let w=e[2];if(Array.isArray(w)){h=4*w.length,p=s._malloc(h),r.push(p);let y=p/4;for(let _=0;_s.HEAP32[w++]=_);let y=s._OrtCreateTensor(_n(u),p,h,b,l.length,Cn(a));y===0&&ke(`Can\\'t create tensor for input/output. session=${o}, index=${n}.`),t.push(y)}finally{s.stackRestore(g)}},Tu=async(e,t,r,o,n,s)=>{let u=Ve(),l=yr.get(e);if(!l)throw new Error(`cannot run inference. invalid session id: ${e}`);let[a,p,h,g]=l,b=t.length,w=o.length,y=0,_=[],I=[],$=[],x=[],E=u.stackSave(),A=u.stackAlloc(b*4),z=u.stackAlloc(b*4),R=u.stackAlloc(w*4),V=u.stackAlloc(w*4);try{[y,_]=Uo(s);for(let Z=0;ZUe*Me,1);he=Xe(Ge);let ze=g?.outputPreferredLocations[o[Z]];if(he===\"string\"){if(ze===\"gpu-buffer\")throw new Error(\"String tensor is not supported on GPU.\");let Ue=[],Me=ye/4;for(let wt=0;wt0){let Ue=u.jsepGetBuffer(ye),Me=cr(Ge);if(Me===void 0||!No(he))throw new Error(`Unsupported data type: ${he}`);Ie=!0,Q.push([he,be,{gpuBuffer:Ue,download:u.jsepCreateDownloader(Ue,et*Me,he),dispose:()=>{u._OrtReleaseTensor(Ee)}},\"gpu-buffer\"])}else{let Ue=Mr(he),Me=new Ue(et);new Uint8Array(Me.buffer,Me.byteOffset,Me.byteLength).set(u.HEAPU8.subarray(ye,ye+Me.byteLength)),Q.push([he,be,Me,\"cpu\"])}}finally{u.stackRestore(Pe),he===\"string\"&&ye&&u._free(ye),Ie||u._OrtReleaseTensor(Ee)}}return g&&u._OrtClearBoundOutputs(g.handle),Q}finally{u.stackRestore(E),I.forEach(T=>u._OrtReleaseTensor(T)),$.forEach(T=>u._OrtReleaseTensor(T)),x.forEach(T=>u._free(T)),y!==0&&u._OrtReleaseRunOptions(y),_.forEach(T=>u._free(T))}},Eu=e=>{let t=Ve(),r=yr.get(e);if(!r)throw new Error(\"invalid session id\");let o=r[0],n=t._OrtEndProfiling(o);n===0&&ke(\"Can\\'t get an profile file name.\"),t._OrtFree(n)},Ou=e=>{let t=[];for(let r of e){let o=r[2];!Array.isArray(o)&&\"buffer\"in o&&t.push(o.buffer)}return t};self.onmessage=e=>{let{type:t,in:r}=e.data;try{switch(t){case\"init-wasm\":zo(r.wasm).then(()=>{_u(r).then(()=>{postMessage({type:t})},o=>{postMessage({type:t,err:o})})},o=>{postMessage({type:t,err:o})});break;case\"init-ep\":{let{epName:o,env:n}=r;Cu(n,o).then(()=>{postMessage({type:t})},s=>{postMessage({type:t,err:s})});break}case\"copy-from\":{let{buffer:o}=r,n=eo(o);postMessage({type:t,out:n});break}case\"create\":{let{model:o,options:n}=r;Iu(o,n).then(s=>{postMessage({type:t,out:s})},s=>{postMessage({type:t,err:s})});break}case\"release\":Au(r),postMessage({type:t});break;case\"run\":{let{sessionId:o,inputIndices:n,inputs:s,outputIndices:u,options:l}=r;Tu(o,n,s,u,new Array(u.length).fill(null),l).then(a=>{a.some(p=>p[3]!==\"cpu\")?postMessage({type:t,err:\"Proxy does not support non-cpu tensor location.\"}):postMessage({type:t,out:a},Ou(a))},a=>{postMessage({type:t,err:a})});break}case\"end-profiling\":Eu(r),postMessage({type:t});break;default:}}catch(o){postMessage({type:t,err:o})}};})();\\n/**\\n * @license\\n * Copyright 2021 Google LLC. All Rights Reserved.\\n * Licensed under the Apache License, Version 2.0 (the \"License\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n * http://www.apache.org/licenses/LICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \"AS IS\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n * =============================================================================\\n */\\n/**\\n * @license\\n * Copyright 2020 Google LLC. All Rights Reserved.\\n * Licensed under the Apache License, Version 2.0 (the \"License\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n * http://www.apache.org/licenses/LICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \"AS IS\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n * =============================================================================\\n */\\n/**\\n * @license\\n * Copyright 2019 Google LLC. All Rights Reserved.\\n * Licensed under the Apache License, Version 2.0 (the \"License\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n * http://www.apache.org/licenses/LICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \"AS IS\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n * =============================================================================\\n */\\n'});var Ht,ut,Or,Tn,On,Ea,Ta,rr,nr,Fp,En,wl,vl,$l,_l,xl,Sl,Il,Oa=F(()=>{\"use strict\";st();yl();Jt();Ht=()=>!!Se.wasm.proxy&&typeof document<\"u\",Or=!1,Tn=!1,On=!1,Ta=new Map,rr=(e,t)=>{let r=Ta.get(e);r?r.push(t):Ta.set(e,[t])},nr=()=>{if(Or||!Tn||On||!ut)throw new Error(\"worker not ready\")},Fp=e=>{switch(e.data.type){case\"init-wasm\":Or=!1,e.data.err?(On=!0,Ea[1](e.data.err)):(Tn=!0,Ea[0]());break;case\"init-ep\":case\"copy-from\":case\"create\":case\"release\":case\"run\":case\"end-profiling\":{let t=Ta.get(e.data.type);e.data.err?t.shift()[1](e.data.err):t.shift()[0](e.data.out);break}default:}},En=typeof document<\"u\"?document?.currentScript?.src:void 0,wl=async()=>{if(!Tn){if(Or)throw new Error(\"multiple calls to 'initWasm()' detected.\");if(On)throw new Error(\"previous call to 'initWasm()' failed.\");if(Or=!0,Ht())return Se.wasm.wasmPaths===void 0&&En&&En.indexOf(\"blob:\")!==0&&(Se.wasm.wasmPaths=En.substr(0,+En.lastIndexOf(\"/\")+1)),new Promise((e,t)=>{ut?.terminate();let r=URL.createObjectURL(new Blob([bl()],{type:\"text/javascript\"}));ut=new Worker(r,{name:\"ort-wasm-proxy-worker\"}),ut.onerror=n=>t(n),ut.onmessage=Fp,URL.revokeObjectURL(r),Ea=[e,t];let a={type:\"init-wasm\",in:Se};ut.postMessage(a)});try{await Ui(Se.wasm),await dl(Se),Tn=!0}catch(e){throw On=!0,e}finally{Or=!1}}},vl=async e=>{if(Ht())return nr(),new Promise((t,r)=>{rr(\"init-ep\",[t,r]);let a={type:\"init-ep\",in:{epName:e,env:Se}};ut.postMessage(a)});await cl(Se,e)},$l=async e=>Ht()?(nr(),new Promise((t,r)=>{rr(\"copy-from\",[t,r]);let a={type:\"copy-from\",in:{buffer:e}};ut.postMessage(a,[e.buffer])})):Aa(e),_l=async(e,t)=>{if(Ht()){if(t?.preferredOutputLocation)throw new Error('session option \"preferredOutputLocation\" is not supported for proxy.');return nr(),new Promise((r,a)=>{rr(\"create\",[r,a]);let n={type:\"create\",in:{model:e,options:t}},o=[];e instanceof Uint8Array&&o.push(e.buffer),ut.postMessage(n,o)})}else return pl(e,t)},xl=async e=>{if(Ht())return nr(),new Promise((t,r)=>{rr(\"release\",[t,r]);let a={type:\"release\",in:e};ut.postMessage(a)});ml(e)},Sl=async(e,t,r,a,n,o)=>{if(Ht()){if(r.some(u=>u[3]!==\"cpu\"))throw new Error(\"input tensor on GPU is not supported for proxy.\");if(n.some(u=>u))throw new Error(\"pre-allocated output tensor is not supported for proxy.\");return nr(),new Promise((u,l)=>{rr(\"run\",[u,l]);let i=r,c={type:\"run\",in:{sessionId:e,inputIndices:t,inputs:i,outputIndices:a,options:o}};ut.postMessage(c,gl(i))})}else return fl(e,t,r,a,n,o)},Il=async e=>{if(Ht())return nr(),new Promise((t,r)=>{rr(\"end-profiling\",[t,r]);let a={type:\"end-profiling\",in:e};ut.postMessage(a)});hl(e)}});var Cl,qp,kn,Al=F(()=>{\"use strict\";st();Oa();Ue();ta();Cl=(e,t)=>{switch(e.location){case\"cpu\":return[e.type,e.dims,e.data,\"cpu\"];case\"gpu-buffer\":return[e.type,e.dims,{gpuBuffer:e.gpuBuffer},\"gpu-buffer\"];default:throw new Error(`invalid data location: ${e.location} for ${t()}`)}},qp=e=>{switch(e[3]){case\"cpu\":return new Xe(e[0],e[2],e[1]);case\"gpu-buffer\":{let t=e[0];if(!on(t))throw new Error(`not supported data type: ${t} for deserializing GPU tensor`);let{gpuBuffer:r,download:a,dispose:n}=e[2];return Xe.fromGpuBuffer(r,{dataType:t,dims:e[1],download:a,dispose:n})}default:throw new Error(`invalid data location: ${e[3]}`)}},kn=class{async fetchModelAndCopyToWasmMemory(t){return $l(await Sr(t))}async loadModel(t,r){at();let a;typeof t==\"string\"?typeof process<\"u\"&&process.versions&&process.versions.node?a=await Sr(t):a=await this.fetchModelAndCopyToWasmMemory(t):a=t,[this.sessionId,this.inputNames,this.outputNames]=await _l(a,r),it()}async dispose(){return xl(this.sessionId)}async run(t,r,a){at();let n=[],o=[];Object.entries(t).forEach(h=>{let b=h[0],w=h[1],_=this.inputNames.indexOf(b);if(_===-1)throw new Error(`invalid input '${b}'`);n.push(w),o.push(_)});let u=[],l=[];Object.entries(r).forEach(h=>{let b=h[0],w=h[1],_=this.outputNames.indexOf(b);if(_===-1)throw new Error(`invalid output '${b}'`);u.push(w),l.push(_)});let i=n.map((h,b)=>Cl(h,()=>`input \"${this.inputNames[o[b]]}\"`)),c=u.map((h,b)=>h?Cl(h,()=>`output \"${this.outputNames[l[b]]}\"`):null),m=await Sl(this.sessionId,o,i,l,c,a),f={};for(let h=0;h{\"use strict\";st();Oa();Al();jp=()=>{if((typeof Se.wasm.initTimeout!=\"number\"||Se.wasm.initTimeout<0)&&(Se.wasm.initTimeout=0),typeof Se.wasm.simd!=\"boolean\"&&(Se.wasm.simd=!0),typeof Se.wasm.proxy!=\"boolean\"&&(Se.wasm.proxy=!1),typeof Se.wasm.trace!=\"boolean\"&&(Se.wasm.trace=!1),typeof Se.wasm.numThreads!=\"number\"||!Number.isInteger(Se.wasm.numThreads)||Se.wasm.numThreads<=0){(typeof self<\"u\"&&!self.crossOriginIsolated||typeof process<\"u\"&&process.versions&&process.versions.node)&&(Se.wasm.numThreads=1);let e=typeof navigator>\"u\"?(void 0)().length:navigator.hardwareConcurrency;Se.wasm.numThreads=Math.min(4,Math.ceil((e||1)/2))}},Pn=class{async init(t){jp(),await wl(),await vl(t)}async createInferenceSessionHandler(t,r){let a=new kn;return await a.loadModel(t,r),Promise.resolve(a)}}});var Tl={};Xt(Tl,{wasmBackend:()=>Kp});var Kp,Ol=F(()=>{\"use strict\";El();Kp=new Pn});st();st();st();var xi=\"1.17.1\";var Vw=Gn;{let e=(Ol(),Ut(Tl)).wasmBackend;Qt(\"webgpu\",e,5),Qt(\"cpu\",e,10),Qt(\"wasm\",e,10)}Object.defineProperty(Se.versions,\"web\",{value:xi,enumerable:!0});export{Kl as InferenceSession,Jr as TRACE,at as TRACE_FUNC_BEGIN,it as TRACE_FUNC_END,Xe as Tensor,Zl as TrainingSession,Vw as default,Se as env,Qt as registerBackend};\n/**\n * @license\n * Copyright 2021 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n/**\n * @license\n * Copyright 2019 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n//# sourceMappingURL=ort.webgpu.min.js.map\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n//\n// An example how to run segment-anything with webgpu in onnxruntime-web.\n//\n\nimport ort from 'onnxruntime-web/webgpu';\n\n// the image size on canvas\nconst MAX_WIDTH = 500;\nconst MAX_HEIGHT = 500;\n\n// the image size supported by the model\nconst MODEL_WIDTH = 1024;\nconst MODEL_HEIGHT = 1024;\n\nconst MODELS = {\n sam_b: [\n {\n name: \"sam-b-encoder\",\n url: \"https://huggingface.co/schmuell/sam-b-fp16/resolve/main/sam_vit_b_01ec64.encoder-fp16.onnx\",\n size: 180,\n },\n {\n name: \"sam-b-decoder\",\n url: \"https://huggingface.co/schmuell/sam-b-fp16/resolve/main/sam_vit_b_01ec64.decoder.onnx\",\n size: 17,\n },\n ],\n slimsam: [\n {\n name: \"slimsam-encoder\",\n url: \"https://huggingface.co/Xenova/slimsam-77-uniform/resolve/main/onnx/vision_encoder.onnx\",\n size: 24,\n },\n {\n name: \"slimsam-decoder\",\n url: \"https://huggingface.co/Xenova/slimsam-77-uniform/resolve/main/onnx/prompt_encoder_mask_decoder.onnx\",\n size: 16,\n }\n ],\n};\n\nconst config = getConfig();\n\nort.env.wasm.wasmPaths = 'dist/';\nort.env.wasm.numThreads = config.threads;\nort.env.wasm.proxy = false;\n\nlet canvas;\nlet filein;\nlet decoder_latency;\n\nvar image_embeddings;\nvar points = [];\nvar labels = [];\nvar imageImageData;\nvar isClicked = false;\nvar maskImageData;\n\nfunction log(i) {\n document.getElementById('status').innerText += `\\n${i}`;\n}\n\n/**\n * create config from url\n */\nfunction getConfig() {\n const query = window.location.search.substring(1);\n var config = {\n model: \"sam_b\",\n provider: \"webgpu\",\n device: \"gpu\",\n threads: \"1\",\n };\n let vars = query.split(\"&\");\n for (var i = 0; i < vars.length; i++) {\n let pair = vars[i].split(\"=\");\n if (pair[0] in config) {\n config[pair[0]] = decodeURIComponent(pair[1]);\n } else if (pair[0].length > 0) {\n throw new Error(\"unknown argument: \" + pair[0]);\n }\n }\n config.threads = parseInt(config.threads);\n config.local = parseInt(config.local);\n config.isSlimSam = config.model.includes(\"slimsam\");\n\n return config;\n}\n\n/**\n * clone tensor\n */\nfunction cloneTensor(t) {\n return new ort.Tensor(t.type, Float32Array.from(t.data), t.dims);\n}\n\n/*\n * create feed for slimsam models\n */\nfunction feedForSlim(emb, points, labels) {\n const pointCoords = new ort.Tensor(new Float32Array(points), [1, 1, points.length / 2, 2]);\n const pointLabels = new ort.Tensor(BigInt64Array.from(labels.map((x) => BigInt(x))), [1, 1, labels.length]);\n\n return {\n \"image_embeddings\": cloneTensor(emb.image_embeddings),\n \"image_positional_embeddings\": cloneTensor(emb.image_positional_embeddings),\n \"input_points\": pointCoords,\n \"input_labels\": pointLabels,\n }\n}\n\n/*\n * create feed for the original facebook model\n */\nfunction feedForSam(emb, points, labels) {\n const maskInput = new ort.Tensor(new Float32Array(256 * 256), [1, 1, 256, 256]);\n const hasMask = new ort.Tensor(new Float32Array([0]), [1,]);\n const origianlImageSize = new ort.Tensor(new Float32Array([MODEL_HEIGHT, MODEL_WIDTH]), [2,]);\n const pointCoords = new ort.Tensor(new Float32Array(points), [1, points.length / 2, 2]);\n const pointLabels = new ort.Tensor(new Float32Array(labels), [1, labels.length]);\n\n return {\n \"image_embeddings\": cloneTensor(emb.image_embeddings),\n \"point_coords\": pointCoords,\n \"point_labels\": pointLabels,\n \"mask_input\": maskInput,\n \"has_mask_input\": hasMask,\n \"orig_im_size\": origianlImageSize\n }\n}\n\nasync function handleCut(event) {\n if (points.length == 0) {\n return;\n }\n\n const [w, h] = [canvas.width, canvas.height];\n\n // cutout\n const cutCanvas = new OffscreenCanvas(w, h);\n const cutContext = cutCanvas.getContext('2d');\n const cutPixelData = cutContext.getImageData(0, 0, w, h);\n\n // need to rescale mask to image size\n const maskCanvas = new OffscreenCanvas(w, h);\n const maskContext = maskCanvas.getContext('2d');\n maskContext.drawImage(await createImageBitmap(maskImageData), 0, 0);\n const maskPixelData = maskContext.getImageData(0, 0, w, h);\n\n for (let i = 0; i < maskPixelData.data.length; i += 4) {\n if (maskPixelData.data[i] > 0) {\n for (let j = 0; j < 4; ++j) {\n const offset = i + j;\n cutPixelData.data[offset] = imageImageData.data[offset];\n }\n }\n }\n cutContext.putImageData(cutPixelData, 0, 0);\n\n // Download image \n const link = document.createElement('a');\n link.download = 'image.png';\n link.href = URL.createObjectURL(await cutCanvas.convertToBlob());\n link.click();\n link.remove();\n}\n\n/**\n * handler to handle click event on canvas\n * with ctl: add point\n * with shift: forground label\n */\nasync function handleClick(event) {\n\n if (isClicked) {\n return;\n }\n try {\n isClicked = true;\n canvas.style.cursor = \"wait\";\n\n const rect = canvas.getBoundingClientRect();\n const x = Math.trunc(event.clientX - rect.left);\n const y = Math.trunc(event.clientY - rect.top);\n const label = (event.shiftKey) ? 0 : 1;\n\n // need to wait for encoer to be ready\n if (image_embeddings === undefined) {\n await MODELS[config.model][0].sess;\n }\n\n // wait for encder to deliver embeddings\n const emb = await image_embeddings;\n if (!event.ctrlKey) {\n points = [];\n labels = [];\n }\n points.push(x, y);\n labels.push(label);\n\n let ctx = canvas.getContext('2d');\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n canvas.width = imageImageData.width;\n canvas.height = imageImageData.height;\n ctx.putImageData(imageImageData, 0, 0);\n for (let i = 0; i < points.length; i += 2) {\n ctx.fillStyle = 'blue';\n ctx.fillRect(points[i], points[i + 1], 10, 10);\n }\n\n // the decoder\n const session = MODELS[config.model][1].sess;\n\n const feed = (config.isSlimSam) ? feedForSlim(emb, points, labels) : feedForSam(emb, points, labels);\n const start = performance.now();\n const res = await session.run(feed);\n decoder_latency.innerText = `${(performance.now() - start).toFixed(1)}ms`;\n\n const mask = (config.isSlimSam) ? res.pred_masks : res.masks;\n maskImageData = mask.toImageData();\n ctx.globalAlpha = 0.3;\n ctx.drawImage(await createImageBitmap(maskImageData), 0, 0);\n }\n finally {\n canvas.style.cursor = \"default\";\n isClicked = false;\n }\n}\n\n\n/**\n * handler called when image available\n */\nasync function handleImage(img) {\n const encoder_latency = document.getElementById(\"encoder_latency\");\n encoder_latency.innerText = \"\";\n filein.disabled = true;\n decoder_latency.innerText = \"\";\n canvas.style.cursor = \"wait\";\n image_embeddings = undefined;\n var width = img.width;\n var height = img.height;\n\n if (width > height) {\n if (width > MAX_WIDTH) {\n height = height * (MAX_WIDTH / width);\n width = MAX_WIDTH;\n }\n } else {\n if (height > MAX_HEIGHT) {\n width = width * (MAX_HEIGHT / height);\n height = MAX_HEIGHT;\n }\n }\n width = Math.round(width);\n height = Math.round(height);\n\n canvas.width = width;\n canvas.height = height;\n var ctx = canvas.getContext(\"2d\");\n ctx.drawImage(img, 0, 0, width, height);\n\n imageImageData = ctx.getImageData(0, 0, width, height);\n\n //const t = await ort.Tensor.fromImage(imageImageData, options = );\n const t = await ort.Tensor.fromImage(imageImageData, { resizedWidth: MODEL_WIDTH, resizedHeight: MODEL_HEIGHT });\n const feed = (config.isSlimSam) ? { \"pixel_values\": t } : { \"input_image\": t };\n const session = await MODELS[config.model][0].sess;\n\n const start = performance.now();\n image_embeddings = session.run(feed);\n image_embeddings.then(() => {\n encoder_latency.innerText = `${(performance.now() - start).toFixed(1)}ms`;\n canvas.style.cursor = \"default\";\n });\n filein.disabled = false;\n}\n\n\n/*\n * fetch and cache url\n */\nasync function fetchAndCache(url, name) {\n try {\n const cache = await caches.open(\"onnx\");\n let cachedResponse = await cache.match(url);\n if (cachedResponse == undefined) {\n await cache.add(url);\n cachedResponse = await cache.match(url);\n log(`${name} (network)`);\n } else {\n log(`${name} (cached)`);\n }\n const data = await cachedResponse.arrayBuffer();\n return data;\n } catch (error) {\n log(`${name} (network)`);\n return await fetch(url).then(response => response.arrayBuffer());\n }\n}\n\n\n/*\n * load models one at a time\n */\nasync function load_models(models) {\n const cache = await caches.open(\"onnx\");\n let missing = 0;\n for (const [name, model] of Object.entries(models)) {\n let cachedResponse = await cache.match(model.url);\n if (cachedResponse === undefined) {\n missing += model.size;\n }\n }\n if (missing > 0) {\n log(`downloading ${missing} MB from network ... it might take a while`);\n } else {\n log(\"loading...\");\n }\n const start = performance.now();\n for (const [name, model] of Object.entries(models)) {\n try {\n const opt = {\n executionProviders: [config.provider],\n enableMemPattern: false,\n enableCpuMemArena: false,\n extra: {\n session: {\n disable_prepacking: \"1\",\n use_device_allocator_for_initializers: \"1\",\n use_ort_model_bytes_directly: \"1\",\n use_ort_model_bytes_for_initializers: \"1\"\n }\n },\n };\n const model_bytes = await fetchAndCache(model.url, model.name);\n const extra_opt = model.opt || {};\n const sess_opt = { ...opt, ...extra_opt };\n model.sess = await ort.InferenceSession.create(model_bytes, sess_opt);\n } catch (e) {\n log(`${model.url} failed, ${e}`);\n }\n }\n const stop = performance.now();\n log(`ready, ${(stop - start).toFixed(1)}ms`);\n}\n\nasync function main() {\n const model = MODELS[config.model];\n\n canvas = document.getElementById(\"img_canvas\");\n canvas.style.cursor = \"wait\";\n\n filein = document.getElementById(\"file-in\");\n decoder_latency = document.getElementById(\"decoder_latency\");\n\n let img = document.getElementById(\"original-image\");\n\n await load_models(MODELS[config.model]).then(() => {\n canvas.addEventListener(\"click\", handleClick);\n document.getElementById(\"cut-button\").addEventListener(\"click\", handleCut);\n\n // image upload\n filein.onchange = function (evt) {\n let target = evt.target || window.event.src, files = target.files;\n if (FileReader && files && files.length) {\n let fileReader = new FileReader();\n fileReader.onload = () => {\n img.onload = () => handleImage(img);\n img.src = fileReader.result;\n }\n fileReader.readAsDataURL(files[0]);\n }\n };\n handleImage(img);\n }, (e) => {\n log(e);\n });\n}\n\nasync function hasFp16() {\n try {\n const adapter = await navigator.gpu.requestAdapter()\n return adapter.features.has('shader-f16')\n } catch (e) {\n return false\n }\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n hasFp16().then((fp16) => {\n if (fp16) {\n main();\n } else {\n log(\"Your GPU or Browser doesn't support webgpu/f16\");\n }\n });\n});\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/segment-anything/dist/index.min.js b/segment-anything/dist/index.min.js new file mode 100644 index 0000000..408e27a --- /dev/null +++ b/segment-anything/dist/index.min.js @@ -0,0 +1,63 @@ +var e={"./node_modules/onnxruntime-web/dist/esm/ort.webgpu.min.js": +/*!*****************************************************************!*\ + !*** ./node_modules/onnxruntime-web/dist/esm/ort.webgpu.min.js ***! + \*****************************************************************/(e,t,n)=>{n.r(t),n.d(t,{InferenceSession:()=>A,TRACE:()=>I,TRACE_FUNC_BEGIN:()=>T,TRACE_FUNC_END:()=>k,Tensor:()=>E,TrainingSession:()=>z,default:()=>cl,env:()=>d,registerBackend:()=>i}); +/*! + * ONNX Runtime Web v1.17.1 + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. + */ +var r,a,i,s,o,u,l,d,p,c,f,h,m,g,y,w,$,v,b,_,x,S,E,I,C,T,k,O,A,R,z,B=Object.defineProperty,D=Object.getOwnPropertyDescriptor,M=Object.getOwnPropertyNames,P=Object.prototype.hasOwnProperty,N=(e,t)=>()=>(e&&(t=e(e=0)),t),W=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),U=(e,t)=>{for(var n in t)B(e,n,{get:t[n],enumerable:!0})},V=e=>((e,t,n,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let a of M(t))!P.call(e,a)&&a!==n&&B(e,a,{get:()=>t[a],enumerable:!(r=D(t,a))||r.enumerable});return e})(B({},"__esModule",{value:!0}),e),H=N((()=>{r=new Map,a=[],i=(e,t,n)=>{if(!t||"function"!=typeof t.init||"function"!=typeof t.createInferenceSessionHandler)throw new TypeError("not a valid backend");{let i=r.get(e);if(void 0===i)r.set(e,{backend:t,priority:n});else{if(i.priority>n)return;if(i.priority===n&&i.backend!==t)throw new Error(`cannot register backend "${e}" using priority ${n}`)}if(n>=0){let t=a.indexOf(e);-1!==t&&a.splice(t,1);for(let t=0;t{let t=0===e.length?a:e,n=[];for(let e of t){let t=r.get(e);if(t){if(t.initialized)return t.backend;if(t.aborted)continue;let r=!!t.initPromise;try{return r||(t.initPromise=t.backend.init(e)),await t.initPromise,t.initialized=!0,t.backend}catch(a){r||n.push({name:e,err:a}),t.aborted=!0}finally{delete t.initPromise}}}throw new Error(`no available backend found. ERR: ${n.map((e=>`[${e.name}] ${e.err}`)).join(", ")}`)}})),L=N((()=>{H()})),G=N((()=>{o="1.17.1"})),F=N((()=>{G(),u="warning",l={wasm:{},webgl:{},webgpu:{},versions:{common:o},set logLevel(e){if(void 0!==e){if("string"!=typeof e||-1===["verbose","info","warning","error","fatal"].indexOf(e))throw new Error(`Unsupported logging level: ${e}`);u=e}},get logLevel(){return u}},Object.defineProperty(l,"logLevel",{enumerable:!0})})),q=N((()=>{F(),d=l})),j=N((()=>{p=(e,t)=>{let n=typeof document<"u"?document.createElement("canvas"):new OffscreenCanvas(1,1);n.width=e.dims[3],n.height=e.dims[2];let r=n.getContext("2d");if(null!=r){let a,i;void 0!==t?.tensorLayout&&"NHWC"===t.tensorLayout?(a=e.dims[2],i=e.dims[3]):(a=e.dims[3],i=e.dims[2]);let s,o,u=void 0!==t?.format?t.format:"RGB",l=t?.norm;void 0===l||void 0===l.mean?s=[255,255,255,255]:"number"==typeof l.mean?s=[l.mean,l.mean,l.mean,l.mean]:(s=[l.mean[0],l.mean[1],l.mean[2],0],void 0!==l.mean[3]&&(s[3]=l.mean[3])),void 0===l||void 0===l.bias?o=[0,0,0,0]:"number"==typeof l.bias?o=[l.bias,l.bias,l.bias,l.bias]:(o=[l.bias[0],l.bias[1],l.bias[2],0],void 0!==l.bias[3]&&(o[3]=l.bias[3]));let d=i*a,p=0,c=d,f=2*d,h=-1;"RGBA"===u?(p=0,c=d,f=2*d,h=3*d):"RGB"===u?(p=0,c=d,f=2*d):"RBG"===u&&(p=0,f=d,c=2*d);for(let t=0;t{let n,r=typeof document<"u"?document.createElement("canvas").getContext("2d"):new OffscreenCanvas(1,1).getContext("2d");if(null==r)throw new Error("Can not access image data");{let a,i,s;void 0!==t?.tensorLayout&&"NHWC"===t.tensorLayout?(a=e.dims[2],i=e.dims[1],s=e.dims[3]):(a=e.dims[3],i=e.dims[2],s=e.dims[1]);let o,u,l=void 0!==t&&void 0!==t.format?t.format:"RGB",d=t?.norm;void 0===d||void 0===d.mean?o=[255,255,255,255]:"number"==typeof d.mean?o=[d.mean,d.mean,d.mean,d.mean]:(o=[d.mean[0],d.mean[1],d.mean[2],255],void 0!==d.mean[3]&&(o[3]=d.mean[3])),void 0===d||void 0===d.bias?u=[0,0,0,0]:"number"==typeof d.bias?u=[d.bias,d.bias,d.bias,d.bias]:(u=[d.bias[0],d.bias[1],d.bias[2],0],void 0!==d.bias[3]&&(u[3]=d.bias[3]));let p=i*a;if(void 0!==t&&(void 0!==t.format&&4===s&&"RGBA"!==t.format||3===s&&"RGB"!==t.format&&"BGR"!==t.format))throw new Error("Tensor format doesn't match input tensor dims");let c=4,f=0,h=1,m=2,g=3,y=0,w=p,$=2*p,v=-1;"RGBA"===l?(y=0,w=p,$=2*p,v=3*p):"RGB"===l?(y=0,w=p,$=2*p):"RBG"===l&&(y=0,$=p,w=2*p),n=r.createImageData(a,i);for(let t=0;t{X(),f=(e,t)=>{if(void 0===e)throw new Error("Image buffer must be defined");if(void 0===t.height||void 0===t.width)throw new Error("Image height and width must be defined");if("NHWC"===t.tensorLayout)throw new Error("NHWC Tensor layout is not supported yet");let n,r,{height:a,width:i}=t,s=t.norm??{mean:255,bias:0};n="number"==typeof s.mean?[s.mean,s.mean,s.mean,s.mean]:[s.mean[0],s.mean[1],s.mean[2],s.mean[3]??255],r="number"==typeof s.bias?[s.bias,s.bias,s.bias,s.bias]:[s.bias[0],s.bias[1],s.bias[2],s.bias[3]??0];let o=void 0!==t.format?t.format:"RGBA",u=void 0!==t.tensorFormat&&void 0!==t.tensorFormat?t.tensorFormat:"RGB",l=a*i,d="RGBA"===u?new Float32Array(4*l):new Float32Array(3*l),p=4,c=0,f=1,h=2,m=3,g=0,y=l,w=2*l,$=-1;"RGB"===o&&(p=3,c=0,f=1,h=2,m=-1),"RGBA"===u?$=3*l:"RBG"===u?(g=0,w=l,y=2*l):"BGR"===u&&(w=0,y=l,g=2*l);for(let t=0;t{let n,r=typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement,a=typeof ImageData<"u"&&e instanceof ImageData,i=typeof ImageBitmap<"u"&&e instanceof ImageBitmap,s="string"==typeof e,o=t??{},u=()=>{if(typeof document<"u")return document.createElement("canvas");if(typeof OffscreenCanvas<"u")return new OffscreenCanvas(1,1);throw new Error("Canvas is not supported")},l=e=>e instanceof HTMLCanvasElement||e instanceof OffscreenCanvas?e.getContext("2d"):null;if(r){let r=u();r.width=e.width,r.height=e.height;let a=l(r);if(null==a)throw new Error("Can not access image data");{let r=e.height,i=e.width;if(void 0!==t&&void 0!==t.resizedHeight&&void 0!==t.resizedWidth&&(r=t.resizedHeight,i=t.resizedWidth),void 0!==t){if(o=t,void 0!==t.tensorFormat)throw new Error("Image input config format must be RGBA for HTMLImageElement");o.tensorFormat="RGBA",o.height=r,o.width=i}else o.tensorFormat="RGBA",o.height=r,o.width=i;a.drawImage(e,0,0),n=a.getImageData(0,0,i,r).data}}else{if(!a){if(i){if(void 0===t)throw new Error("Please provide image config with format for Imagebitmap");let r=u();r.width=e.width,r.height=e.height;let a=l(r);if(null!=a){let t=e.height,r=e.width;return a.drawImage(e,0,0,r,t),n=a.getImageData(0,0,r,t).data,o.height=t,o.width=r,f(n,o)}throw new Error("Can not access image data")}if(s)return new Promise(((t,n)=>{let r=u(),a=l(r);if(!e||!a)return n();let i=new Image;i.crossOrigin="Anonymous",i.src=e,i.onload=()=>{r.width=i.width,r.height=i.height,a.drawImage(i,0,0,r.width,r.height);let e=a.getImageData(0,0,r.width,r.height);o.height=r.height,o.width=r.width,t(f(e.data,o))}}));throw new Error("Input data provided is not supported - aborted tensor creation")}{let r,a;if(void 0!==t&&void 0!==t.resizedWidth&&void 0!==t.resizedHeight?(r=t.resizedHeight,a=t.resizedWidth):(r=e.height,a=e.width),void 0!==t&&(o=t),o.format="RGBA",o.height=r,o.width=a,void 0!==t){let t=u();t.width=a,t.height=r;let i=l(t);if(null==i)throw new Error("Can not access image data");i.putImageData(e,0,0),n=i.getImageData(0,0,a,r).data}else n=e.data}}if(void 0!==n)return f(n,o);throw new Error("Input data provided is not supported - aborted tensor creation")},m=(e,t)=>{let{width:n,height:r,download:a,dispose:i}=t;return new S({location:"texture",type:"float32",texture:e,dims:[1,r,n,4],download:a,dispose:i})},g=(e,t)=>{let{dataType:n,dims:r,download:a,dispose:i}=t;return new S({location:"gpu-buffer",type:n??"float32",gpuBuffer:e,dims:r,download:a,dispose:i})},y=(e,t,n)=>new S({location:"cpu-pinned",type:e,data:t,dims:n??[t.length]})})),Y=N((()=>{w=new Map([["float32",Float32Array],["uint8",Uint8Array],["int8",Int8Array],["uint16",Uint16Array],["float16",Uint16Array],["int16",Int16Array],["int32",Int32Array],["bool",Uint8Array],["float64",Float64Array],["uint32",Uint32Array]]),$=new Map([[Float32Array,"float32"],[Uint8Array,"uint8"],[Int8Array,"int8"],[Uint16Array,"uint16"],[Int16Array,"int16"],[Int32Array,"int32"],[Float64Array,"float64"],[Uint32Array,"uint32"]]),v=!1,b=()=>{if(!v){v=!0;let e=typeof BigInt64Array<"u"&&"function"==typeof BigInt64Array.from,t=typeof BigUint64Array<"u"&&"function"==typeof BigUint64Array.from;e&&(w.set("int64",BigInt64Array),$.set(BigInt64Array,"int64")),t&&(w.set("uint64",BigUint64Array),$.set(BigUint64Array,"uint64"))}}})),Z=N((()=>{X(),_=e=>{let t=1;for(let n=0;n{switch(e.location){case"cpu":return new S(e.type,e.data,t);case"cpu-pinned":return new S({location:"cpu-pinned",data:e.data,type:e.type,dims:t});case"texture":return new S({location:"texture",texture:e.texture,type:e.type,dims:t});case"gpu-buffer":return new S({location:"gpu-buffer",gpuBuffer:e.gpuBuffer,type:e.type,dims:t});default:throw new Error(`tensorReshape: tensor location ${e.location} is not supported`)}}})),X=N((()=>{j(),K(),Y(),Z(),S=class{constructor(e,t,n){let r,a;if(b(),"object"==typeof e&&"location"in e)switch(this.dataLocation=e.location,r=e.type,a=e.dims,e.location){case"cpu-pinned":{let t=w.get(r);if(!t)throw new TypeError(`unsupported type "${r}" to create tensor from pinned buffer`);if(!(e.data instanceof t))throw new TypeError(`buffer should be of type ${t.name}`);this.cpuData=e.data;break}case"texture":if("float32"!==r)throw new TypeError(`unsupported type "${r}" to create tensor from texture`);this.gpuTextureData=e.texture,this.downloader=e.download,this.disposer=e.dispose;break;case"gpu-buffer":if("float32"!==r&&"float16"!==r&&"int32"!==r&&"int64"!==r&&"uint32"!==r&&"bool"!==r)throw new TypeError(`unsupported type "${r}" to create tensor from gpu buffer`);this.gpuBufferData=e.gpuBuffer,this.downloader=e.download,this.disposer=e.dispose;break;default:throw new Error(`Tensor constructor: unsupported location '${this.dataLocation}'`)}else{let i,s;if("string"==typeof e)if(r=e,s=n,"string"===e){if(!Array.isArray(t))throw new TypeError("A string tensor's data must be a string array.");i=t}else{let n=w.get(e);if(void 0===n)throw new TypeError(`Unsupported tensor type: ${e}.`);if(Array.isArray(t)){if("float16"===e)throw new TypeError("Creating a float16 tensor from number array is not supported. Please use Uint16Array as data.");i="uint64"===e||"int64"===e?n.from(t,BigInt):n.from(t)}else{if(!(t instanceof n))throw new TypeError(`A ${r} tensor's data must be type of ${n}`);i=t}}else if(s=t,Array.isArray(e)){if(0===e.length)throw new TypeError("Tensor type cannot be inferred from an empty array.");let t=typeof e[0];if("string"===t)r="string",i=e;else{if("boolean"!==t)throw new TypeError(`Invalid element type of data array: ${t}.`);r="bool",i=Uint8Array.from(e)}}else{let t=$.get(e.constructor);if(void 0===t)throw new TypeError(`Unsupported type for tensor data: ${e.constructor}.`);r=t,i=e}if(void 0===s)s=[i.length];else if(!Array.isArray(s))throw new TypeError("A tensor's dims must be a number array");a=s,this.cpuData=i,this.dataLocation="cpu"}let i=_(a);if(this.cpuData&&i!==this.cpuData.length)throw new Error(`Tensor's size(${i}) does not match data length(${this.cpuData.length}).`);this.type=r,this.dims=a,this.size=i}static async fromImage(e,t){return h(e,t)}static fromTexture(e,t){return m(e,t)}static fromGpuBuffer(e,t){return g(e,t)}static fromPinnedBuffer(e,t,n){return y(e,t,n)}toDataURL(e){return p(this,e)}toImageData(e){return c(this,e)}get data(){if(this.ensureValid(),!this.cpuData)throw new Error("The data is not on CPU. Use `getData()` to download GPU data to CPU, or use `texture` or `gpuBuffer` property to access the GPU data directly.");return this.cpuData}get location(){return this.dataLocation}get texture(){if(this.ensureValid(),!this.gpuTextureData)throw new Error("The data is not stored as a WebGL texture.");return this.gpuTextureData}get gpuBuffer(){if(this.ensureValid(),!this.gpuBufferData)throw new Error("The data is not stored as a WebGPU buffer.");return this.gpuBufferData}async getData(e){switch(this.ensureValid(),this.dataLocation){case"cpu":case"cpu-pinned":return this.data;case"texture":case"gpu-buffer":if(!this.downloader)throw new Error("The current tensor is not created with a specified data downloader.");if(this.isDownloading)throw new Error("The current tensor is being downloaded.");try{this.isDownloading=!0;let t=await this.downloader();return this.downloader=void 0,this.dataLocation="cpu",this.cpuData=t,e&&this.disposer&&(this.disposer(),this.disposer=void 0),t}finally{this.isDownloading=!1}default:throw new Error(`cannot get data from location: ${this.dataLocation}`)}}dispose(){if(this.isDownloading)throw new Error("The current tensor is being downloaded.");this.disposer&&(this.disposer(),this.disposer=void 0),this.cpuData=void 0,this.gpuTextureData=void 0,this.gpuBufferData=void 0,this.downloader=void 0,this.isDownloading=void 0,this.dataLocation="none"}ensureValid(){if("none"===this.dataLocation)throw new Error("The tensor is disposed.")}reshape(e){if(this.ensureValid(),this.downloader||this.disposer)throw new Error("Cannot reshape a tensor that owns GPU resource.");return x(this,e)}}})),Q=N((()=>{X(),E=S})),J=N((()=>{F(),I=(e,t)=>{l.wasm.trace&&console.timeStamp(`${e}::ORT::${t}`)},C=(e,t)=>{let n=(new Error).stack?.split(/\r\n|\r|\n/g)||[],r=!1;for(let a=0;a{l.wasm.trace&&C("BEGIN",e)},k=e=>{l.wasm.trace&&C("END",e)}})),ee=N((()=>{H(),Q(),J(),O=class e{constructor(e){this.handler=e}async run(e,t,n){T();let r={},a={};if("object"!=typeof e||null===e||e instanceof E||Array.isArray(e))throw new TypeError("'feeds' must be an object that use input names as keys and OnnxValue as corresponding values.");let i=!0;if("object"==typeof t){if(null===t)throw new TypeError("Unexpected argument[1]: cannot be null.");if(t instanceof E)throw new TypeError("'fetches' cannot be a Tensor");if(Array.isArray(t)){if(0===t.length)throw new TypeError("'fetches' cannot be an empty array.");i=!1;for(let e of t){if("string"!=typeof e)throw new TypeError("'fetches' must be a string array or an object.");if(-1===this.outputNames.indexOf(e))throw new RangeError(`'fetches' contains invalid output name: ${e}.`);r[e]=null}if("object"==typeof n&&null!==n)a=n;else if(typeof n<"u")throw new TypeError("'options' must be an object.")}else{let e=!1,s=Object.getOwnPropertyNames(t);for(let n of this.outputNames)if(-1!==s.indexOf(n)){let a=t[n];(null===a||a instanceof E)&&(e=!0,i=!1,r[n]=a)}if(e){if("object"==typeof n&&null!==n)a=n;else if(typeof n<"u")throw new TypeError("'options' must be an object.")}else a=t}}else if(typeof t<"u")throw new TypeError("Unexpected argument[1]: must be 'fetches' or 'options'.");for(let t of this.inputNames)if(typeof e[t]>"u")throw new Error(`input '${t}' is missing in 'feeds'.`);if(i)for(let e of this.outputNames)r[e]=null;let s=await this.handler.run(e,r,a),o={};for(let e in s)if(Object.hasOwnProperty.call(s,e)){let t=s[e];o[e]=t instanceof E?t:new E(t.type,t.data,t.dims)}return k(),o}async release(){return this.handler.dispose()}static async create(t,n,r,a){T();let i,o={};if("string"==typeof t){if(i=t,"object"==typeof n&&null!==n)o=n;else if(typeof n<"u")throw new TypeError("'options' must be an object.")}else if(t instanceof Uint8Array){if(i=t,"object"==typeof n&&null!==n)o=n;else if(typeof n<"u")throw new TypeError("'options' must be an object.")}else{if(!(t instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&t instanceof SharedArrayBuffer))throw new TypeError("Unexpected argument[0]: must be 'path' or 'buffer'.");{let e=t,s=0,u=t.byteLength;if("object"==typeof n&&null!==n)o=n;else if("number"==typeof n){if(s=n,!Number.isSafeInteger(s))throw new RangeError("'byteOffset' must be an integer.");if(s<0||s>=e.byteLength)throw new RangeError(`'byteOffset' is out of range [0, ${e.byteLength}).`);if(u=t.byteLength-s,"number"==typeof r){if(u=r,!Number.isSafeInteger(u))throw new RangeError("'byteLength' must be an integer.");if(u<=0||s+u>e.byteLength)throw new RangeError(`'byteLength' is out of range (0, ${e.byteLength-s}].`);if("object"==typeof a&&null!==a)o=a;else if(typeof a<"u")throw new TypeError("'options' must be an object.")}else if(typeof r<"u")throw new TypeError("'byteLength' must be a number.")}else if(typeof n<"u")throw new TypeError("'options' must be an object.");i=new Uint8Array(e,s,u)}}let u=(o.executionProviders||[]).map((e=>"string"==typeof e?e:e.name)),l=await(await s(u)).createInferenceSessionHandler(i,o);return k(),new e(l)}startProfiling(){this.handler.startProfiling()}endProfiling(){this.handler.endProfiling()}get inputNames(){return this.handler.inputNames}get outputNames(){return this.handler.outputNames}}})),te=N((()=>{ee(),A=O})),ne=N((()=>{})),re=N((()=>{H(),Q(),"Training backend could not be resolved. Make sure you're using the correct configuration & WebAssembly files.",R=class e{constructor(e,t,n){this.handler=e,this.hasOptimizerModel=t,this.hasEvalModel=n}get trainingInputNames(){return this.handler.inputNames}get trainingOutputNames(){return this.handler.outputNames}get evalInputNames(){if(this.hasEvalModel)return this.handler.evalInputNames;throw new Error("This training session has no evalModel loaded.")}get evalOutputNames(){if(this.hasEvalModel)return this.handler.evalOutputNames;throw new Error("This training session has no evalModel loaded.")}static async create(t,n){let r=t.evalModel||"",a=t.optimizerModel||"",i=n||{},o=(i.executionProviders||[]).map((e=>"string"==typeof e?e:e.name)),u=await s(o);if(u.createTrainingSessionHandler){let n=await u.createTrainingSessionHandler(t.checkpointState,t.trainModel,r,a,i);return new e(n,!!t.optimizerModel,!!t.evalModel)}throw new Error("Training backend could not be resolved. Make sure you're using the correct configuration & WebAssembly files.")}typeNarrowingForRunStep(e,t,n,r,a){let i={},s={};if("object"!=typeof n||null===n||n instanceof E||Array.isArray(n))throw new TypeError("'feeds' must be an object that use input names as keys and OnnxValue as corresponding values.");let o=!0;if("object"==typeof r){if(null===r)throw new TypeError("Unexpected argument[1]: cannot be null.");if(r instanceof E)throw new TypeError("'fetches' cannot be a Tensor");if(Array.isArray(r)){if(0===r.length)throw new TypeError("'fetches' cannot be an empty array.");o=!1;for(let e of r){if("string"!=typeof e)throw new TypeError("'fetches' must be a string array or an object.");if(-1===t.indexOf(e))throw new RangeError(`'fetches' contains invalid output name: ${e}.`);i[e]=null}if("object"==typeof a&&null!==a)s=a;else if(typeof a<"u")throw new TypeError("'options' must be an object.")}else{let e=!1,n=Object.getOwnPropertyNames(r);for(let a of t)if(-1!==n.indexOf(a)){let t=r[a];(null===t||t instanceof E)&&(e=!0,o=!1,i[a]=t)}if(e){if("object"==typeof a&&null!==a)s=a;else if(typeof a<"u")throw new TypeError("'options' must be an object.")}else s=r}}else if(typeof r<"u")throw new TypeError("Unexpected argument[1]: must be 'fetches' or 'options'.");for(let t of e)if(typeof n[t]>"u")throw new Error(`input '${t}' is missing in 'feeds'.`);if(o)for(let e of t)i[e]=null;return[i,s]}convertHandlerReturnTypeToMapOfTensors(e){let t={};for(let n in e)if(Object.hasOwnProperty.call(e,n)){let r=e[n];t[n]=r instanceof E?r:new E(r.type,r.data,r.dims)}return t}async lazyResetGrad(){await this.handler.lazyResetGrad()}async runTrainStep(e,t,n){let[r,a]=this.typeNarrowingForRunStep(this.trainingInputNames,this.trainingOutputNames,e,t,n),i=await this.handler.runTrainStep(e,r,a);return this.convertHandlerReturnTypeToMapOfTensors(i)}async runOptimizerStep(e){if(!this.hasOptimizerModel)throw new Error("This TrainingSession has no OptimizerModel loaded.");await this.handler.runOptimizerStep(e||{})}async runEvalStep(e,t,n){if(this.hasEvalModel){let[r,a]=this.typeNarrowingForRunStep(this.evalInputNames,this.evalOutputNames,e,t,n),i=await this.handler.runEvalStep(e,r,a);return this.convertHandlerReturnTypeToMapOfTensors(i)}throw new Error("This TrainingSession has no EvalModel loaded.")}async getParametersSize(e=!0){return this.handler.getParametersSize(e)}async loadParametersBuffer(e,t=!0){let n=await this.getParametersSize(t);if(e.length!==4*n)throw new Error("Size of the buffer passed into loadParametersBuffer must match the number of parameters in the model. Please use getParametersSize method to check.");return this.handler.loadParametersBuffer(e,t)}async getContiguousParameters(e=!0){return this.handler.getContiguousParameters(e)}async release(){return this.handler.dispose()}}})),ae=N((()=>{re(),z=R})),ie={};U(ie,{InferenceSession:()=>A,TRACE:()=>I,TRACE_FUNC_BEGIN:()=>T,TRACE_FUNC_END:()=>k,Tensor:()=>E,TrainingSession:()=>z,env:()=>d,registerBackend:()=>i});var se=N((()=>{L(),q(),te(),Q(),J(),ne(),ae()})),oe={};U(oe,{createReadStream:()=>de,readFile:()=>ue,readFileSync:()=>le});var ue,le,de,pe=N((()=>{ue=void 0,le=void 0,de=void 0})),ce={};U(ce,{join:()=>fe});var fe,he=N((()=>{fe=void 0})),me=W(((e,t)=>{var n,r=(n=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0,typeof __filename<"u"&&(n=n||__filename),function(e={}){var t,r,a=e;a.ready=new Promise(((e,n)=>{t=e,r=n})),a.mountExternalData=(e,t)=>{(a.Fa||(a.Fa=new Map)).set(e,t)},a.unmountExternalData=()=>{delete a.Fa},a.jsepInit=(e,t,n,r,i,s,o,u)=>{a.ab=e,a.Qa=t,a.Sa=n,a.La=r,a.Ra=i,a.sa=s,a.Ta=o,a.Ua=u,t=(e,t,n)=>(...r)=>{let a=ye,i=t?.();r=e(...r);let s=t?.();return i!==s&&(e=s,n(i),t=n=null),ye!=a?new Promise(((e,t)=>{xe={resolve:e,reject:t}})):r},n=t=>async(...n)=>{try{if(a.Ea)throw Error("Session already started");let r=a.Ea={Va:n[0],errors:[]},i=await t(...n);if(a.Ea!==r)throw Error("Session mismatch");e.flush();let s=r.errors;if(0e)),0a._OrtRun),(e=>a._OrtRun=e))),a._OrtRunWithBinding=n(t(a._OrtRunWithBinding,(()=>a._OrtRunWithBinding),(e=>a._OrtRunWithBinding=e))),a._OrtBindInput=t(a._OrtBindInput,(()=>a._OrtBindInput),(e=>a._OrtBindInput=e)),a.jsepRegisterBuffer=(t,n,r,a)=>e.registerBuffer(t,n,r,a),a.jsepUnregisterBuffers=t=>{e.unregisterBuffers(t)},a.jsepGetBuffer=t=>e.getBuffer(t),a.jsepCreateDownloader=(t,n,r)=>e.createDownloader(t,n,r)};var i,s,o,u=Object.assign({},a),l="./this.program",d=(e,t)=>{throw t},p="object"==typeof window,c="function"==typeof importScripts,f="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,h="";if(f){var m=(pe(),V(oe)),g=(he(),V(ce));h=c?g.dirname(h)+"/":__dirname+"/",i=(e,t)=>(e=N(e)?new URL(e):g.normalize(e),m.readFileSync(e,t?void 0:"utf8")),o=e=>((e=i(e,!0)).buffer||(e=new Uint8Array(e)),e),s=(e,t,n,r=!0)=>{e=N(e)?new URL(e):g.normalize(e),m.readFile(e,r?void 0:"utf8",((e,a)=>{e?n(e):t(r?a.buffer:a)}))},!a.thisProgram&&1{throw process.exitCode=e,t},a.inspect=()=>"[Emscripten Module object]"}else(p||c)&&(c?h=self.location.href:typeof document<"u"&&document.currentScript&&(h=document.currentScript.src),n&&(h=n),h=0!==h.indexOf("blob:")?h.substr(0,h.replace(/[?#].*/,"").lastIndexOf("/")+1):"",i=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},c&&(o=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),s=(e,t,n)=>{var r=new XMLHttpRequest;r.open("GET",e,!0),r.responseType="arraybuffer",r.onload=()=>{200==r.status||0==r.status&&r.response?t(r.response):n()},r.onerror=n,r.send(null)});var y=console.log.bind(console),w=console.error.bind(console);Object.assign(a,u),u=null,"object"!=typeof WebAssembly&&D("no native wasm support detected");var $,v,b,_,x,S,E,I,C=!1;function T(){var e=$.buffer;a.HEAP8=b=new Int8Array(e),a.HEAP16=new Int16Array(e),a.HEAPU8=_=new Uint8Array(e),a.HEAPU16=new Uint16Array(e),a.HEAP32=x=new Int32Array(e),a.HEAPU32=S=new Uint32Array(e),a.HEAPF32=E=new Float32Array(e),a.HEAPF64=I=new Float64Array(e)}var k=[],O=[],A=[],R=0,z=null,B=null;function D(e){throw w(e="Aborted("+e+")"),C=!0,v=1,e=new WebAssembly.RuntimeError(e+". Build with -sASSERTIONS for more info."),r(e),e}var M,P=e=>e.startsWith("data:application/octet-stream;base64,"),N=e=>e.startsWith("file://");if(!P(M="ort-wasm-simd.wasm")){var W=M;M=a.locateFile?a.locateFile(W,h):h+W}function U(e){if(o)return o(e);throw"both async and sync fetching of the wasm failed"}function H(e,t,n){return function(e){if(p||c){if("function"==typeof fetch&&!N(e))return fetch(e,{credentials:"same-origin"}).then((t=>{if(!t.ok)throw"failed to load wasm binary file at '"+e+"'";return t.arrayBuffer()})).catch((()=>U(e)));if(s)return new Promise(((t,n)=>{s(e,(e=>t(new Uint8Array(e))),n)}))}return Promise.resolve().then((()=>U(e)))}(e).then((e=>WebAssembly.instantiate(e,t))).then((e=>e)).then(n,(e=>{w(`failed to asynchronously prepare wasm: ${e}`),D(e)}))}var L,G={931056:(e,t,n,r)=>{if(typeof a>"u"||!a.Fa)return 1;if((e=Z(e>>>0)).startsWith("./")&&(e=e.substring(2)),!(e=a.Fa.get(e)))return 2;if((t>>>=0)+(n>>>=0)>e.byteLength)return 3;try{return _.set(e.subarray(t,t+n),r>>>0>>>0),0}catch{return 4}},931557:e=>a.Qa(e),931590:e=>a.Sa(e),931622:(e,t,n)=>{a.La(e,t,n,!0)},931661:(e,t,n)=>{a.La(e,t,n)},931694:e=>{a.sa("Abs",e,void 0)},931745:e=>{a.sa("Neg",e,void 0)},931796:e=>{a.sa("Floor",e,void 0)},931849:e=>{a.sa("Ceil",e,void 0)},931901:e=>{a.sa("Reciprocal",e,void 0)},931959:e=>{a.sa("Sqrt",e,void 0)},932011:e=>{a.sa("Exp",e,void 0)},932062:e=>{a.sa("Erf",e,void 0)},932113:e=>{a.sa("Sigmoid",e,void 0)},932168:e=>{a.sa("Log",e,void 0)},932219:e=>{a.sa("Sin",e,void 0)},932270:e=>{a.sa("Cos",e,void 0)},932321:e=>{a.sa("Tan",e,void 0)},932372:e=>{a.sa("Asin",e,void 0)},932424:e=>{a.sa("Acos",e,void 0)},932476:e=>{a.sa("Atan",e,void 0)},932528:e=>{a.sa("Sinh",e,void 0)},932580:e=>{a.sa("Cosh",e,void 0)},932632:e=>{a.sa("Asinh",e,void 0)},932685:e=>{a.sa("Acosh",e,void 0)},932738:e=>{a.sa("Atanh",e,void 0)},932791:e=>{a.sa("Tanh",e,void 0)},932843:e=>{a.sa("Not",e,void 0)},932894:(e,t,n)=>{a.sa("Clip",e,{min:t,max:n})},932963:e=>{a.sa("Clip",e,void 0)},933015:(e,t)=>{a.sa("Elu",e,{alpha:t})},933073:e=>{a.sa("Relu",e,void 0)},933125:(e,t)=>{a.sa("LeakyRelu",e,{alpha:t})},933189:(e,t)=>{a.sa("ThresholdedRelu",e,{alpha:t})},933259:(e,t)=>{a.sa("Cast",e,{to:t})},933317:e=>{a.sa("Add",e,void 0)},933368:e=>{a.sa("Sub",e,void 0)},933419:e=>{a.sa("Mul",e,void 0)},933470:e=>{a.sa("Div",e,void 0)},933521:e=>{a.sa("Pow",e,void 0)},933572:e=>{a.sa("Equal",e,void 0)},933625:e=>{a.sa("Greater",e,void 0)},933680:e=>{a.sa("GreaterOrEqual",e,void 0)},933742:e=>{a.sa("Less",e,void 0)},933794:e=>{a.sa("LessOrEqual",e,void 0)},933853:(e,t,n,r,i)=>{a.sa("ReduceMean",e,{keepDims:!!t,noopWithEmptyAxes:!!n,axes:r?Array.from(x.subarray(r>>>0,i>>>0)):[]})},934012:(e,t,n,r,i)=>{a.sa("ReduceMax",e,{keepDims:!!t,noopWithEmptyAxes:!!n,axes:r?Array.from(x.subarray(r>>>0,i>>>0)):[]})},934170:(e,t,n,r,i)=>{a.sa("ReduceMin",e,{keepDims:!!t,noopWithEmptyAxes:!!n,axes:r?Array.from(x.subarray(r>>>0,i>>>0)):[]})},934328:(e,t,n,r,i)=>{a.sa("ReduceProd",e,{keepDims:!!t,noopWithEmptyAxes:!!n,axes:r?Array.from(x.subarray(r>>>0,i>>>0)):[]})},934487:(e,t,n,r,i)=>{a.sa("ReduceSum",e,{keepDims:!!t,noopWithEmptyAxes:!!n,axes:r?Array.from(x.subarray(r>>>0,i>>>0)):[]})},934645:(e,t,n,r,i)=>{a.sa("ReduceL1",e,{keepDims:!!t,noopWithEmptyAxes:!!n,axes:r?Array.from(x.subarray(r>>>0,i>>>0)):[]})},934802:(e,t,n,r,i)=>{a.sa("ReduceL2",e,{keepDims:!!t,noopWithEmptyAxes:!!n,axes:r?Array.from(x.subarray(r>>>0,i>>>0)):[]})},934959:(e,t,n,r,i)=>{a.sa("ReduceLogSum",e,{keepDims:!!t,noopWithEmptyAxes:!!n,axes:r?Array.from(x.subarray(r>>>0,i>>>0)):[]})},935120:(e,t,n,r,i)=>{a.sa("ReduceSumSquare",e,{keepDims:!!t,noopWithEmptyAxes:!!n,axes:r?Array.from(x.subarray(r>>>0,i>>>0)):[]})},935284:(e,t,n,r,i)=>{a.sa("ReduceLogSumExp",e,{keepDims:!!t,noopWithEmptyAxes:!!n,axes:r?Array.from(x.subarray(r>>>0,i>>>0)):[]})},935448:e=>{a.sa("Where",e,void 0)},935501:(e,t,n)=>{a.sa("Transpose",e,{perm:t?Array.from(x.subarray(t>>>0,n>>>0)):[]})},935609:(e,t,n,r,i,s,o,u,l,d,p,c,f,h,m)=>{a.sa("ConvTranspose",e,{format:l?"NHWC":"NCHW",autoPad:t,dilations:[n],group:r,kernel_shape:[i],pads:[s,o],strides:[u],wIsConst:()=>!!b[d>>>0],outputPadding:p?Array.from(x.subarray(p>>>0,c>>>0)):[],outputShape:f?Array.from(x.subarray(f>>>0,h>>>0)):[],activation:Z(m)})},936011:(e,t,n,r,i,s,o,u,l,d,p,c,f,h)=>{a.sa("ConvTranspose",e,{format:u?"NHWC":"NCHW",autoPad:t,dilations:Array.from(x.subarray(n>>>0,2+(n>>>0)>>>0)),group:r,kernelShape:Array.from(x.subarray(i>>>0,2+(i>>>0)>>>0)),pads:Array.from(x.subarray(s>>>0,4+(s>>>0)>>>0)),strides:Array.from(x.subarray(o>>>0,2+(o>>>0)>>>0)),wIsConst:()=>!!b[l>>>0],outputPadding:d?Array.from(x.subarray(d>>>0,p>>>0)):[],outputShape:c?Array.from(x.subarray(c>>>0,f>>>0)):[],activation:Z(h)})},936576:(e,t,n,r,i,s,o,u,l,d,p,c,f,h,m)=>{a.sa("ConvTranspose",e,{format:l?"NHWC":"NCHW",autoPad:t,dilations:[n],group:r,kernel_shape:[i],pads:[s,o],strides:[u],wIsConst:()=>!!b[d>>>0],outputPadding:p?Array.from(x.subarray(p>>>0,c>>>0)):[],outputShape:f?Array.from(x.subarray(f>>>0,h>>>0)):[],activation:Z(m)})},936978:(e,t,n,r,i,s,o,u,l,d,p,c,f,h)=>{a.sa("ConvTranspose",e,{format:u?"NHWC":"NCHW",autoPad:t,dilations:Array.from(x.subarray(n>>>0,2+(n>>>0)>>>0)),group:r,kernelShape:Array.from(x.subarray(i>>>0,2+(i>>>0)>>>0)),pads:Array.from(x.subarray(s>>>0,4+(s>>>0)>>>0)),strides:Array.from(x.subarray(o>>>0,2+(o>>>0)>>>0)),wIsConst:()=>!!b[l>>>0],outputPadding:d?Array.from(x.subarray(d>>>0,p>>>0)):[],outputShape:c?Array.from(x.subarray(c>>>0,f>>>0)):[],activation:Z(h)})},937543:(e,t)=>{a.sa("GlobalAveragePool",e,{format:t?"NHWC":"NCHW"})},937634:(e,t,n,r,i,s,o,u,l,d,p,c,f,h,m,g)=>{a.sa("AveragePool",e,{format:g?"NHWC":"NCHW",auto_pad:t,ceil_mode:n,count_include_pad:r,storage_order:i,dilations:[s,o],kernel_shape:[u,l],pads:[d,p,c,f],strides:[h,m]})},937918:(e,t)=>{a.sa("GlobalAveragePool",e,{format:t?"NHWC":"NCHW"})},938009:(e,t,n,r,i,s,o,u,l,d,p,c,f,h,m,g)=>{a.sa("AveragePool",e,{format:g?"NHWC":"NCHW",auto_pad:t,ceil_mode:n,count_include_pad:r,storage_order:i,dilations:[s,o],kernel_shape:[u,l],pads:[d,p,c,f],strides:[h,m]})},938293:(e,t)=>{a.sa("GlobalMaxPool",e,{format:t?"NHWC":"NCHW"})},938380:(e,t,n,r,i,s,o,u,l,d,p,c,f,h,m,g)=>{a.sa("MaxPool",e,{format:g?"NHWC":"NCHW",auto_pad:t,ceil_mode:n,count_include_pad:r,storage_order:i,dilations:[s,o],kernel_shape:[u,l],pads:[d,p,c,f],strides:[h,m]})},938660:(e,t)=>{a.sa("GlobalMaxPool",e,{format:t?"NHWC":"NCHW"})},938747:(e,t,n,r,i,s,o,u,l,d,p,c,f,h,m,g)=>{a.sa("MaxPool",e,{format:g?"NHWC":"NCHW",auto_pad:t,ceil_mode:n,count_include_pad:r,storage_order:i,dilations:[s,o],kernel_shape:[u,l],pads:[d,p,c,f],strides:[h,m]})},939027:(e,t,n,r,i)=>{a.sa("Gemm",e,{alpha:t,beta:n,transA:r,transB:i})},939131:e=>{a.sa("MatMul",e,void 0)},939185:(e,t,n,r)=>{a.sa("ArgMax",e,{keepDims:!!t,selectLastIndex:!!n,axis:r})},939293:(e,t,n,r)=>{a.sa("ArgMin",e,{keepDims:!!t,selectLastIndex:!!n,axis:r})},939401:(e,t)=>{a.sa("Softmax",e,{axis:t})},939464:(e,t)=>{a.sa("Concat",e,{axis:t})},939524:(e,t,n,r,i)=>{a.sa("Split",e,{axis:t,numOutputs:n,splitSizes:r?Array.from(x.subarray(r>>>0,i>>>0)):[]})},939664:e=>{a.sa("Expand",e,void 0)},939718:(e,t)=>{a.sa("Gather",e,{axis:Number(t)})},939789:(e,t)=>{a.sa("GatherElements",e,{axis:Number(t)})},939868:(e,t,n,r,i,s,o,u,l,d,p)=>{a.sa("Resize",e,{antialias:t,axes:n?Array.from(x.subarray(n>>>0,r>>>0)):[],coordinateTransformMode:Z(i),cubicCoeffA:s,excludeOutside:o,extrapolationValue:u,keepAspectRatioPolicy:Z(l),mode:Z(d),nearestMode:Z(p)})},940214:(e,t,n,r,i,s,o)=>{a.sa("Slice",e,{starts:t?Array.from(x.subarray(t>>>0,n>>>0)):[],ends:r?Array.from(x.subarray(r>>>0,i>>>0)):[],axes:s?Array.from(x.subarray(s>>>0,o>>>0)):[]})},940430:e=>{a.sa("Tile",e,void 0)},940482:(e,t,n)=>{a.sa("LayerNormalization",e,{axis:Number(t),epsilon:Number(n)})},940589:(e,t,n)=>{a.sa("InstanceNormalization",e,{epsilon:t,format:n?"NHWC":"NCHW"})},940703:(e,t,n)=>{a.sa("InstanceNormalization",e,{epsilon:t,format:n?"NHWC":"NCHW"})},940817:e=>{a.sa("Range",e,void 0)},940870:(e,t)=>{a.sa("Einsum",e,{equation:Z(t)})},940951:(e,t,n,r,i)=>{a.sa("Pad",e,{mode:t,value:n,pads:r?Array.from(x.subarray(r>>>0,i>>>0)):[]})},941078:(e,t,n,r,i,s)=>{a.sa("BatchNormalization",e,{epsilon:t,momentum:n,spatial:!!i,trainingMode:!!r,format:s?"NHWC":"NCHW"})},941247:(e,t,n,r,i,s)=>{a.sa("BatchNormalization",e,{epsilon:t,momentum:n,spatial:!!i,trainingMode:!!r,format:s?"NHWC":"NCHW"})},941416:(e,t,n)=>{a.sa("CumSum",e,{exclusive:Number(t),reverse:Number(n)})},941513:(e,t,n,r,i,s,o,u,l)=>{a.sa("Attention",e,{numHeads:t,isUnidirectional:n,maskFilterValue:r,scale:i,doRotary:s,qkvHiddenSizes:o?Array.from(x.subarray(Number(u)>>>0,Number(u)+o>>>0)):[],pastPresentShareBuffer:!!l})},941785:e=>{a.sa("Gelu",e,void 0)},941837:(e,t,n,r,i,s)=>{a.sa("MultiHeadAttention",e,{numHeads:t,isUnidirectional:n,maskFilterValue:r,scale:i,doRotary:s})},941996:e=>{a.sa("BiasAdd",e,void 0)},942051:e=>{a.sa("BiasSplitGelu",e,void 0)},942112:(e,t)=>{a.sa("SkipLayerNormalization",e,{epsilon:t})},942193:(e,t,n,r,i,s,o,u,l,d,p,c,f)=>{a.sa("Conv",e,{format:l?"NHWC":"NCHW",auto_pad:t,dilations:[n],group:r,kernel_shape:[i],pads:s?Array.from(x.subarray(s>>>0,o>>>0)):[],strides:[u],w_is_const:()=>!!b[d>>>0],activation:Z(p),activation_params:c?Array.from(E.subarray(c>>>0,f>>>0)):[]})},942563:(e,t,n,r,i,s,o,u,l,d,p,c,f,h,m,g)=>{a.sa("Conv",e,{format:c?"NHWC":"NCHW",auto_pad:t,dilations:[n,r],group:i,kernel_shape:[s,o],pads:u?Array.from(x.subarray(u>>>0,l>>>0)):[],strides:[d,p],w_is_const:()=>!!b[f>>>0],activation:Z(h),activation_params:m?Array.from(E.subarray(m>>>0,g>>>0)):[]})},942954:e=>{a.Ta(e)},942988:(e,t)=>a.Ua(e,t,a.Ea.Va,a.Ea.errors)};function F(e){this.name="ExitStatus",this.message=`Program terminated with exit(${e})`,this.status=e}function q(e){this.Ja=e-24,this.Oa=function(e){S[this.Ja+4>>>2>>>0]=e},this.Na=function(e){S[this.Ja+8>>>2>>>0]=e},this.$a=function(e,t){this.Ma(),this.Oa(e),this.Na(t)},this.Ma=function(){S[this.Ja+16>>>2>>>0]=0}}var j,K=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,Y=(e,t,n)=>{var r=(t>>>=0)+n;for(n=t;e[n]&&!(n>=r);)++n;if(16(a=224==(240&a)?(15&a)<<12|i<<6|s:(7&a)<<18|i<<12|s<<6|63&e[t++])?r+=String.fromCharCode(a):(a-=65536,r+=String.fromCharCode(55296|a>>10,56320|1023&a))}}else r+=String.fromCharCode(a)}return r},Z=(e,t)=>(e>>>=0)?Y(_,e,t):"",X=e=>{for(var t=0,n=0;n=r?t++:2047>=r?t+=2:55296<=r&&57343>=r?(t+=4,++n):t+=3}return t},Q=(e,t,n,r)=>{if(!(0>>=0;r=n+r-1;for(var i=0;i=s&&(s=65536+((1023&s)<<10)|1023&e.charCodeAt(++i)),127>=s){if(n>=r)break;t[n++>>>0]=s}else{if(2047>=s){if(n+1>=r)break;t[n++>>>0]=192|s>>6}else{if(65535>=s){if(n+2>=r)break;t[n++>>>0]=224|s>>12}else{if(n+3>=r)break;t[n++>>>0]=240|s>>18,t[n++>>>0]=128|s>>12&63}t[n++>>>0]=128|s>>6&63}t[n++>>>0]=128|63&s}}return t[n>>>0]=0,n-a},J=e=>e%4==0&&(e%100!=0||e%400==0),ee=[0,31,60,91,121,152,182,213,244,274,305,335],te=[0,31,59,90,120,151,181,212,243,273,304,334],ne=e=>{var t=X(e)+1,n=Oe(t);return n&&Q(e,_,n,t),n},re=[],ae=(e,t)=>{re.length=0;for(var n;n=_[e++>>>0];){var r=105!=n;t+=(r&=112!=n)&&t%8?4:0,re.push(112==n?S[t>>>2>>>0]:105==n?x[t>>>2>>>0]:I[t>>>3>>>0]),t+=r?8:4}return re},ie={},se=()=>{if(!j){var e,t={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:l||"./this.program"};for(e in ie)void 0===ie[e]?delete t[e]:t[e]=ie[e];var n=[];for(e in t)n.push(`${e}=${t[e]}`);j=n}return j},ue=[null,[],[]],le=[31,29,31,30,31,30,31,31,30,31,30,31],de=[31,28,31,30,31,30,31,31,30,31,30,31];function fe(e,t,n,r){function a(e,t,n){for(e="number"==typeof e?e.toString():e||"";e.lengthe?-1:0r-e.getDate())){e.setDate(e.getDate()+t);break}t-=r-e.getDate()+1,e.setDate(1),11>n?e.setMonth(n+1):(e.setMonth(0),e.setFullYear(e.getFullYear()+1))}return n=new Date(e.getFullYear()+1,0,4),t=o(new Date(e.getFullYear(),0,4)),n=o(n),0>=s(t,e)?0>=s(n,e)?e.getFullYear()+1:e.getFullYear():e.getFullYear()-1}e>>>=0,t>>>=0,n>>>=0;var l=S[40+(r>>>=0)>>>2>>>0];for(var d in r={Ya:x[r>>>2>>>0],Xa:x[r+4>>>2>>>0],Ga:x[r+8>>>2>>>0],Ka:x[r+12>>>2>>>0],Ha:x[r+16>>>2>>>0],Da:x[r+20>>>2>>>0],xa:x[r+24>>>2>>>0],Ca:x[r+28>>>2>>>0],bb:x[r+32>>>2>>>0],Wa:x[r+36>>>2>>>0],Za:l?Z(l):""},n=Z(n),l={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"})n=n.replace(new RegExp(d,"g"),l[d]);var p="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),c="January February March April May June July August September October November December".split(" ");for(d in l={"%a":e=>p[e.xa].substring(0,3),"%A":e=>p[e.xa],"%b":e=>c[e.Ha].substring(0,3),"%B":e=>c[e.Ha],"%C":e=>i((e.Da+1900)/100|0,2),"%d":e=>i(e.Ka,2),"%e":e=>a(e.Ka,2," "),"%g":e=>u(e).toString().substring(2),"%G":e=>u(e),"%H":e=>i(e.Ga,2),"%I":e=>(0==(e=e.Ga)?e=12:12{for(var t=0,n=0;n<=e.Ha-1;t+=(J(e.Da+1900)?le:de)[n++]);return i(e.Ka+t,3)},"%m":e=>i(e.Ha+1,2),"%M":e=>i(e.Xa,2),"%n":()=>"\n","%p":e=>0<=e.Ga&&12>e.Ga?"AM":"PM","%S":e=>i(e.Ya,2),"%t":()=>"\t","%u":e=>e.xa||7,"%U":e=>i(Math.floor((e.Ca+7-e.xa)/7),2),"%V":e=>{var t=Math.floor((e.Ca+7-(e.xa+6)%7)/7);if(2>=(e.xa+371-e.Ca-2)%7&&t++,t)53==t&&(4==(n=(e.xa+371-e.Ca)%7)||3==n&&J(e.Da)||(t=1));else{t=52;var n=(e.xa+7-e.Ca-1)%7;(4==n||5==n&&J(e.Da%400-1))&&t++}return i(t,2)},"%w":e=>e.xa,"%W":e=>i(Math.floor((e.Ca+7-(e.xa+6)%7)/7),2),"%y":e=>(e.Da+1900).toString().substring(2),"%Y":e=>e.Da+1900,"%z":e=>(0<=(e=e.Wa)?"+":"-")+("0000"+((e=Math.abs(e)/60)/60*100+e%60)).slice(-4),"%Z":e=>e.Za,"%%":()=>"%"},n=n.replace(/%%/g,"\0\0"),l)n.includes(d)&&(n=n.replace(new RegExp(d,"g"),l[d](r)));return d=function(e){var t=Array(X(e)+1);return Q(e,t,0,t.length),t}(n=n.replace(/\0\0/g,"%")),d.length>t?0:(b.set(d,e>>>0),d.length-1)}var me=e=>{try{e()}catch(e){D(e)}},ge=0,ye=null,we=0,$e=[],ve={},be={},_e=0,xe=null,Se=[];function Ee(e){if(!C){if(0===ge){var t=!1,n=!1;e(((e=0)=>{if(!C&&(we=e,t=!0,n)){ge=2,me((()=>Ne(ye))),typeof Browser<"u"&&Browser.Ia.Pa&&Browser.Ia.resume(),e=!1;try{var r=(0,Ce[be[x[ye+8>>>2>>>0]]])()}catch(t){r=t,e=!0}var a=!1;if(!ye){var i=xe;i&&(xe=null,(e?i.reject:i.resolve)(r),a=!0)}if(e&&!a)throw r}})),n=!0,t||(ge=1,ye=function(){var e=Oe(65548),t=e+12;S[e>>>2>>>0]=t,S[e+4>>>2>>>0]=t+65536,t=$e[0];var n=ve[t];return void 0===n&&(n=_e++,ve[t]=n,be[n]=t),x[e+8>>>2>>>0]=n,e}(),typeof Browser<"u"&&Browser.Ia.Pa&&Browser.Ia.pause(),me((()=>Me(ye))))}else 2===ge?(ge=0,me(We),Ae(ye),ye=null,Se.forEach((e=>{if(!C)try{e();try{v=v=e=v,a.onExit?.(e),C=!0,d(e,new F(e))}catch(e){e instanceof F||"unwind"==e||d(1,e)}}catch(e){e instanceof F||"unwind"==e||d(1,e)}}))):D(`invalid state: ${ge}`);return we}}var Ie={n:function(e,t,n){return function(e){return Ee((t=>{e().then(t)}))}((async()=>{await a.Ra(e,t,n)}))},a:function(e,t,n){throw new q(e>>>=0).$a(t>>>0,n>>>0),e},g:function(){return 0},J:function(){},A:function(){},C:function(){},L:function(){return 0},H:function(){},D:function(){},G:function(){},l:function(){},B:function(){},y:function(){},I:function(){},z:function(){},m:()=>1,q:function(e,t,n){e=t+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*t:NaN,n>>>=0,e=new Date(1e3*e),x[n>>>2>>>0]=e.getUTCSeconds(),x[n+4>>>2>>>0]=e.getUTCMinutes(),x[n+8>>>2>>>0]=e.getUTCHours(),x[n+12>>>2>>>0]=e.getUTCDate(),x[n+16>>>2>>>0]=e.getUTCMonth(),x[n+20>>>2>>>0]=e.getUTCFullYear()-1900,x[n+24>>>2>>>0]=e.getUTCDay(),x[n+28>>>2>>>0]=(e.getTime()-Date.UTC(e.getUTCFullYear(),0,1,0,0,0,0))/864e5|0},r:function(e,t,n){e=t+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*t:NaN,n>>>=0,e=new Date(1e3*e),x[n>>>2>>>0]=e.getSeconds(),x[n+4>>>2>>>0]=e.getMinutes(),x[n+8>>>2>>>0]=e.getHours(),x[n+12>>>2>>>0]=e.getDate(),x[n+16>>>2>>>0]=e.getMonth(),x[n+20>>>2>>>0]=e.getFullYear()-1900,x[n+24>>>2>>>0]=e.getDay(),x[n+28>>>2>>>0]=(J(e.getFullYear())?ee:te)[e.getMonth()]+e.getDate()-1|0,x[n+36>>>2>>>0]=-60*e.getTimezoneOffset(),t=new Date(e.getFullYear(),6,1).getTimezoneOffset();var r=new Date(e.getFullYear(),0,1).getTimezoneOffset();x[n+32>>>2>>>0]=0|(t!=r&&e.getTimezoneOffset()==Math.min(r,t))},s:function(e){e>>>=0;var t=new Date(x[e+20>>>2>>>0]+1900,x[e+16>>>2>>>0],x[e+12>>>2>>>0],x[e+8>>>2>>>0],x[e+4>>>2>>>0],x[e>>>2>>>0],0),n=x[e+32>>>2>>>0],r=t.getTimezoneOffset(),a=new Date(t.getFullYear(),6,1).getTimezoneOffset(),i=new Date(t.getFullYear(),0,1).getTimezoneOffset(),s=Math.min(i,a);return 0>n?x[e+32>>>2>>>0]=+(a!=i&&s==r):0>>2>>>0]=t.getDay(),x[e+28>>>2>>>0]=(J(t.getFullYear())?ee:te)[t.getMonth()]+t.getDate()-1|0,x[e>>>2>>>0]=t.getSeconds(),x[e+4>>>2>>>0]=t.getMinutes(),x[e+8>>>2>>>0]=t.getHours(),x[e+12>>>2>>>0]=t.getDate(),x[e+16>>>2>>>0]=t.getMonth(),x[e+20>>>2>>>0]=t.getYear(),e=t.getTime(),isNaN(e)?(x[ke()>>>2>>>0]=61,e=-1):e/=1e3,Re((L=e,1<=+Math.abs(L)?0>>0:~~+Math.ceil((L-+(~~L>>>0))/4294967296)>>>0:0)),e>>>0},o:function(){return-52},p:function(){},w:function(e,t,n){function r(e){return(e=e.toTimeString().match(/\(([A-Za-z ]+)\)$/))?e[1]:"GMT"}n>>>=0;var a=(new Date).getFullYear(),i=new Date(a,0,1),s=new Date(a,6,1);a=i.getTimezoneOffset();var o=s.getTimezoneOffset();S[e>>>0>>>2>>>0]=60*Math.max(a,o),x[t>>>0>>>2>>>0]=+(a!=o),e=r(i),t=r(s),e=ne(e),t=ne(t),o>>2>>>0]=e,S[n+4>>>2>>>0]=t):(S[n>>>2>>>0]=t,S[n+4>>>2>>>0]=e)},e:()=>{D("")},b:function(e,t,n){return e>>>=0,t=ae(t>>>0,n>>>0),G[e].apply(null,t)},i:function(e,t,n){return e>>>=0,t=ae(t>>>0,n>>>0),G[e].apply(null,t)},h:()=>Date.now(),x:function(){return 4294901760},c:()=>performance.now(),K:function(e,t,n){return t>>>=0,_.copyWithin(e>>>0>>>0,t>>>0,t+(n>>>0)>>>0)},u:function(e){e>>>=0;var t=_.length;if(4294901760=n;n*=2){var r=t*(1+.2/n);r=Math.min(r,e+100663296);var a=Math;r=Math.max(e,r);e:{a=(a.min.call(a,4294901760,r+(65536-r%65536)%65536)-$.buffer.byteLength+65535)/65536;try{$.grow(a),T();var i=1;break e}catch{}i=void 0}if(i)return!0}return!1},E:function(e,t){e>>>=0,t>>>=0;var n=0;return se().forEach(((r,a)=>{var i=t+n;for(a=S[e+4*a>>>2>>>0]=i,i=0;i>>0>>>0]=r.charCodeAt(i);b[a>>>0>>>0]=0,n+=r.length+1})),0},F:function(e,t){e>>>=0,t>>>=0;var n=se();S[e>>>2>>>0]=n.length;var r=0;return n.forEach((e=>r+=e.length+1)),S[t>>>2>>>0]=r,0},f:()=>52,k:function(){return 52},t:function(){return 70},j:function(e,t,n,r){t>>>=0,n>>>=0,r>>>=0;for(var a=0,i=0;i>>2>>>0],o=S[t+4>>>2>>>0];t+=8;for(var u=0;u>>0],d=ue[e];0===l||10===l?((1===e?y:w)(Y(d,0)),d.length=0):d.push(l)}a+=o}return S[r>>>2>>>0]=a,0},v:fe,d:function(e,t,n,r){return fe(e>>>0,t>>>0,n>>>0,r>>>0)}},Ce=function(){function e(e){return Ce=e.exports,Ce=function(){var e=Ce,t={};for(let[n,r]of Object.entries(e))t[n]="function"==typeof r?function(){$e.push(n);try{return r.apply(null,arguments)}finally{C||($e.pop(),ye&&1===ge&&0===$e.length&&(ge=0,me(Pe),typeof Fibers<"u"&&Fibers.cb()))}}:r;return t}(),Ce=function(){var e=Ce;e=Object.assign({},e);var t=e=>()=>e()>>>0,n=e=>t=>e(t)>>>0;return e.pa=t(e.pa),e.qa=n(e.qa),e.ua=t(e.ua),e.wa=n(e.wa),e}(),$=Ce.M,T(),O.unshift(Ce.N),0==--R&&(null!==z&&(clearInterval(z),z=null),B&&(e=B,B=null,e())),Ce}var t={a:Ie};if(R++,a.instantiateWasm)try{return a.instantiateWasm(t,e)}catch(e){w(`Module.instantiateWasm callback failed with error: ${e}`),r(e)}return function(e,t){var n=M;return"function"!=typeof WebAssembly.instantiateStreaming||P(n)||N(n)||f||"function"!=typeof fetch?H(n,e,t):fetch(n,{credentials:"same-origin"}).then((r=>WebAssembly.instantiateStreaming(r,e).then(t,(function(r){return w(`wasm streaming compile failed: ${r}`),w("falling back to ArrayBuffer instantiation"),H(n,e,t)}))))}(t,(function(t){e(t.instance)})).catch(r),{}}();a._OrtInit=(e,t)=>(a._OrtInit=Ce.O)(e,t),a._OrtGetLastError=(e,t)=>(a._OrtGetLastError=Ce.P)(e,t),a._OrtCreateSessionOptions=(e,t,n,r,i,s,o,u,l,d)=>(a._OrtCreateSessionOptions=Ce.Q)(e,t,n,r,i,s,o,u,l,d),a._OrtAppendExecutionProvider=(e,t)=>(a._OrtAppendExecutionProvider=Ce.R)(e,t),a._OrtAddFreeDimensionOverride=(e,t,n)=>(a._OrtAddFreeDimensionOverride=Ce.S)(e,t,n),a._OrtAddSessionConfigEntry=(e,t,n)=>(a._OrtAddSessionConfigEntry=Ce.T)(e,t,n),a._OrtReleaseSessionOptions=e=>(a._OrtReleaseSessionOptions=Ce.U)(e),a._OrtCreateSession=(e,t,n)=>(a._OrtCreateSession=Ce.V)(e,t,n),a._OrtReleaseSession=e=>(a._OrtReleaseSession=Ce.W)(e),a._OrtGetInputOutputCount=(e,t,n)=>(a._OrtGetInputOutputCount=Ce.X)(e,t,n),a._OrtGetInputName=(e,t)=>(a._OrtGetInputName=Ce.Y)(e,t),a._OrtGetOutputName=(e,t)=>(a._OrtGetOutputName=Ce.Z)(e,t),a._OrtFree=e=>(a._OrtFree=Ce._)(e),a._OrtCreateTensor=(e,t,n,r,i,s)=>(a._OrtCreateTensor=Ce.$)(e,t,n,r,i,s),a._OrtGetTensorData=(e,t,n,r,i)=>(a._OrtGetTensorData=Ce.aa)(e,t,n,r,i),a._OrtReleaseTensor=e=>(a._OrtReleaseTensor=Ce.ba)(e),a._OrtCreateRunOptions=(e,t,n,r)=>(a._OrtCreateRunOptions=Ce.ca)(e,t,n,r),a._OrtAddRunConfigEntry=(e,t,n)=>(a._OrtAddRunConfigEntry=Ce.da)(e,t,n),a._OrtReleaseRunOptions=e=>(a._OrtReleaseRunOptions=Ce.ea)(e),a._OrtCreateBinding=e=>(a._OrtCreateBinding=Ce.fa)(e),a._OrtBindInput=(e,t,n)=>(a._OrtBindInput=Ce.ga)(e,t,n),a._OrtBindOutput=(e,t,n,r)=>(a._OrtBindOutput=Ce.ha)(e,t,n,r),a._OrtClearBoundOutputs=e=>(a._OrtClearBoundOutputs=Ce.ia)(e),a._OrtReleaseBinding=e=>(a._OrtReleaseBinding=Ce.ja)(e),a._OrtRunWithBinding=(e,t,n,r,i)=>(a._OrtRunWithBinding=Ce.ka)(e,t,n,r,i),a._OrtRun=(e,t,n,r,i,s,o,u)=>(a._OrtRun=Ce.la)(e,t,n,r,i,s,o,u),a._OrtEndProfiling=e=>(a._OrtEndProfiling=Ce.ma)(e),a._JsepOutput=(e,t,n)=>(a._JsepOutput=Ce.na)(e,t,n),a._JsepGetNodeName=e=>(a._JsepGetNodeName=Ce.oa)(e);var Te,ke=()=>(ke=Ce.pa)(),Oe=a._malloc=e=>(Oe=a._malloc=Ce.qa)(e),Ae=a._free=e=>(Ae=a._free=Ce.ra)(e),Re=e=>(Re=Ce.ta)(e),ze=()=>(ze=Ce.ua)(),Be=e=>(Be=Ce.va)(e),De=e=>(De=Ce.wa)(e),Me=e=>(Me=Ce.ya)(e),Pe=()=>(Pe=Ce.za)(),Ne=e=>(Ne=Ce.Aa)(e),We=()=>(We=Ce.Ba)();function Ue(){if(!(0Q(e,_,t,n),a.lengthBytesUTF8=X,B=function e(){Te||Ue(),Te||(B=e)},Ue(),e.ready});"object"==typeof e&&"object"==typeof t?t.exports=r:"function"==typeof define&&define.amd&&define([],(()=>r))})),ge=W((()=>{})),ye=W((()=>{})),we={};U(we,{cpus:()=>$e});var $e,ve,be,_e,xe,Se,Ee,Ie,Ce,Te,ke,Oe,Ae,Re,ze,Be,De,Me,Pe,Ne,We,Ue,Ve,He,Le,Ge,Fe,qe,je,Ke,Ye,Ze,Xe,Qe,Je,et,tt,nt,rt,at,it,st,ot,ut,lt,dt,pt,ct,ft,ht,mt,gt,yt,wt,$t,vt,bt,_t,xt,St,Et,It,Ct,Tt,kt,Ot,At,Rt,zt,Bt,Dt,Mt,Pt,Nt,Wt,Ut,Vt,Ht,Lt,Gt,Ft,qt,jt,Kt,Yt,Zt,Xt,Qt,Jt,en,tn,nn,rn,an,sn,on,un,ln,dn,pn,cn,fn,hn,mn,gn,yn,wn,$n,vn,bn,_n,xn,Sn,En,In,Cn,Tn,kn,On,An,Rn,zn,Bn,Dn,Mn,Pn,Nn,Wn,Un,Vn,Hn,Ln,Gn,Fn,qn,jn,Kn,Yn,Zn,Xn,Qn,Jn,er,tr,nr,rr,ar,ir,sr,or,ur,lr,dr,pr,cr,fr,hr,mr,gr,yr,wr,$r,vr,br,_r,xr,Sr,Er,Ir,Cr,Tr,kr,Or,Ar,Rr,zr,Br,Dr,Mr,Pr,Nr,Wr,Ur,Vr,Hr,Lr,Gr,Fr,qr,jr,Kr,Yr,Zr,Xr,Qr,Jr,ea,ta,na,ra,aa,ia,sa,oa,ua,la,da,pa,ca,fa,ha,ma,ga,ya,wa,$a,va,ba,_a,xa,Sa,Ea,Ia,Ca,Ta,ka,Oa,Aa,Ra,za,Ba,Da,Ma,Pa,Na,Wa,Ua,Va,Ha,La,Ga,Fa,qa,ja,Ka,Ya,Za,Xa,Qa,Ja,ei,ti,ni,ri,ai,ii,si,oi,ui,li,di,pi,ci,fi,hi,mi,gi,yi,wi,$i,vi,bi,_i,xi,Si,Ei,Ii,Ci,Ti,ki,Oi,Ai,Ri,zi,Bi,Di,Mi,Pi,Ni,Wi,Ui,Vi,Hi,Li,Gi,Fi,qi,ji,Ki,Yi,Zi,Xi,Qi,Ji,es,ts,ns,rs,as,is,ss,os,us,ls,ds,ps,cs,fs,hs,ms,gs,ys,ws,$s,vs,bs,_s,xs,Ss,Es,Is,Cs,Ts,ks,Os,As,Rs,zs,Bs,Ds,Ms,Ps,Ns,Ws,Us,Vs,Hs,Ls,Gs,Fs,qs,js,Ks,Ys,Zs,Xs,Qs,Js,eo,to,no,ro,ao,io,so,oo,uo,lo,po,co=N((()=>{$e=void 0})),fo=W(((e,t)=>{var n,r=(n=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0,typeof __filename<"u"&&(n=n||__filename),function(e={}){function t(){return k.buffer!=R.buffer&&W(),R}function r(){return k.buffer!=R.buffer&&W(),z}function a(){return k.buffer!=R.buffer&&W(),B}function i(){return k.buffer!=R.buffer&&W(),D}function s(){return k.buffer!=R.buffer&&W(),M}function o(){return k.buffer!=R.buffer&&W(),P}var u,l,d=e;d.ready=new Promise(((e,t)=>{u=e,l=t})),d.mountExternalData=(e,t)=>{(d.cb||(d.cb=new Map)).set(e,t)},d.unmountExternalData=()=>{delete d.cb},d.jsepInit=(e,t,n,r,a,i,s,o)=>{d.Mb=e,d.wb=t,d.yb=n,d.kb=r,d.xb=a,d.Ea=i,d.zb=s,d.Ab=o,t=(e,t,n)=>(...r)=>{let a=$t,i=t?.();r=e(...r);let s=t?.();return i!==s&&(e=s,n(i),t=n=null),$t!=a?new Promise(((e,t)=>{Et={resolve:e,reject:t}})):r},n=t=>async(...n)=>{try{if(d.bb)throw Error("Session already started");let r=d.bb={Cb:n[0],errors:[]},a=await t(...n);if(d.bb!==r)throw Error("Session mismatch");e.flush();let i=r.errors;if(0e)),0d._OrtRun),(e=>d._OrtRun=e))),d._OrtRunWithBinding=n(t(d._OrtRunWithBinding,(()=>d._OrtRunWithBinding),(e=>d._OrtRunWithBinding=e))),d._OrtBindInput=t(d._OrtBindInput,(()=>d._OrtBindInput),(e=>d._OrtBindInput=e)),d.jsepRegisterBuffer=(t,n,r,a)=>e.registerBuffer(t,n,r,a),d.jsepUnregisterBuffers=t=>{e.unregisterBuffers(t)},d.jsepGetBuffer=t=>e.getBuffer(t),d.jsepCreateDownloader=(t,n,r)=>e.createDownloader(t,n,r)};var p,c,f,h=Object.assign({},d),m="./this.program",g=(e,t)=>{throw t},y="object"==typeof window,w="function"==typeof importScripts,$="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,v=d.ENVIRONMENT_IS_PTHREAD||!1,b="";function _(e){return d.locateFile?d.locateFile(e,b):b+e}if($){var x=(pe(),V(oe)),S=(he(),V(ce));let e;b=w?S.dirname(b)+"/":__dirname+"/",p=(e,t)=>(e=Q(e)?new URL(e):S.normalize(e),x.readFileSync(e,t?void 0:"utf8")),f=e=>((e=p(e,!0)).buffer||(e=new Uint8Array(e)),e),c=(e,t,n,r=!0)=>{e=Q(e)?new URL(e):S.normalize(e),x.readFile(e,r?void 0:"utf8",((e,a)=>{e?n(e):t(r?a.buffer:a)}))},!d.thisProgram&&1{throw process.exitCode=e,t},d.inspect=()=>"[Emscripten Module object]";try{e=ge()}catch(e){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),e}global.Worker=e.Worker}else(y||w)&&(w?b=self.location.href:typeof document<"u"&&document.currentScript&&(b=document.currentScript.src),typeof n<"u"&&n&&(b=n),b=0!==b.indexOf("blob:")?b.substr(0,b.replace(/[?#].*/,"").lastIndexOf("/")+1):"",$||(p=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},w&&(f=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),c=(e,t,n)=>{var r=new XMLHttpRequest;r.open("GET",e,!0),r.responseType="arraybuffer",r.onload=()=>{200==r.status||0==r.status&&r.response?t(r.response):n()},r.onerror=n,r.send(null)}));$&&typeof performance>"u"&&(global.performance=ye().performance);var E=console.log.bind(console),I=console.error.bind(console);$&&(E=(...e)=>x.writeSync(1,e.join(" ")+"\n"),I=(...e)=>x.writeSync(2,e.join(" ")+"\n"));var C=E,T=I;Object.assign(d,h),h=null,"object"!=typeof WebAssembly&&Y("no native wasm support detected");var k,O,A,R,z,B,D,M,P,N=!1;function W(){var e=k.buffer;d.HEAP8=R=new Int8Array(e),d.HEAP16=new Int16Array(e),d.HEAPU8=z=new Uint8Array(e),d.HEAPU16=new Uint16Array(e),d.HEAP32=B=new Int32Array(e),d.HEAPU32=D=new Uint32Array(e),d.HEAPF32=M=new Float32Array(e),d.HEAPF64=P=new Float64Array(e)}var U=16777216;if(v)k=d.wasmMemory;else if(d.wasmMemory)k=d.wasmMemory;else if(!((k=new WebAssembly.Memory({initial:U/65536,maximum:65536,shared:!0})).buffer instanceof SharedArrayBuffer))throw T("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"),$&&T("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)"),Error("bad memory");W(),U=k.buffer.byteLength;var H=[],L=[],G=[],F=0,q=null,j=null;function K(){if(0==--F&&(null!==q&&(clearInterval(q),q=null),j)){var e=j;j=null,e()}}function Y(e){throw T(e="Aborted("+e+")"),N=!0,A=1,e=new WebAssembly.RuntimeError(e+". Build with -sASSERTIONS for more info."),l(e),e}var Z,X=e=>e.startsWith("data:application/octet-stream;base64,"),Q=e=>e.startsWith("file://");function J(e){if(f)return f(e);throw"both async and sync fetching of the wasm failed"}function ee(e,t,n){return function(e){if(y||w){if("function"==typeof fetch&&!Q(e))return fetch(e,{credentials:"same-origin"}).then((t=>{if(!t.ok)throw"failed to load wasm binary file at '"+e+"'";return t.arrayBuffer()})).catch((()=>J(e)));if(c)return new Promise(((t,n)=>{c(e,(e=>t(new Uint8Array(e))),n)}))}return Promise.resolve().then((()=>J(e)))}(e).then((e=>WebAssembly.instantiate(e,t))).then((e=>e)).then(n,(e=>{T(`failed to asynchronously prepare wasm: ${e}`),Y(e)}))}X(Z="ort-wasm-simd-threaded.wasm")||(Z=_(Z));var te,ne={932428:(e,t,n,a)=>{if(typeof d>"u"||!d.cb)return 1;if((e=de(e>>>0)).startsWith("./")&&(e=e.substring(2)),!(e=d.cb.get(e)))return 2;if(a>>>=0,(t>>>=0)+(n>>>=0)>e.byteLength)return 3;try{return r().set(e.subarray(t,t+n),a>>>0),0}catch{return 4}},932929:e=>d.wb(e),932962:e=>d.yb(e),932994:(e,t,n)=>{d.kb(e,t,n,!0)},933033:(e,t,n)=>{d.kb(e,t,n)},933066:e=>{d.Ea("Abs",e,void 0)},933117:e=>{d.Ea("Neg",e,void 0)},933168:e=>{d.Ea("Floor",e,void 0)},933221:e=>{d.Ea("Ceil",e,void 0)},933273:e=>{d.Ea("Reciprocal",e,void 0)},933331:e=>{d.Ea("Sqrt",e,void 0)},933383:e=>{d.Ea("Exp",e,void 0)},933434:e=>{d.Ea("Erf",e,void 0)},933485:e=>{d.Ea("Sigmoid",e,void 0)},933540:e=>{d.Ea("Log",e,void 0)},933591:e=>{d.Ea("Sin",e,void 0)},933642:e=>{d.Ea("Cos",e,void 0)},933693:e=>{d.Ea("Tan",e,void 0)},933744:e=>{d.Ea("Asin",e,void 0)},933796:e=>{d.Ea("Acos",e,void 0)},933848:e=>{d.Ea("Atan",e,void 0)},933900:e=>{d.Ea("Sinh",e,void 0)},933952:e=>{d.Ea("Cosh",e,void 0)},934004:e=>{d.Ea("Asinh",e,void 0)},934057:e=>{d.Ea("Acosh",e,void 0)},934110:e=>{d.Ea("Atanh",e,void 0)},934163:e=>{d.Ea("Tanh",e,void 0)},934215:e=>{d.Ea("Not",e,void 0)},934266:(e,t,n)=>{d.Ea("Clip",e,{min:t,max:n})},934335:e=>{d.Ea("Clip",e,void 0)},934387:(e,t)=>{d.Ea("Elu",e,{alpha:t})},934445:e=>{d.Ea("Relu",e,void 0)},934497:(e,t)=>{d.Ea("LeakyRelu",e,{alpha:t})},934561:(e,t)=>{d.Ea("ThresholdedRelu",e,{alpha:t})},934631:(e,t)=>{d.Ea("Cast",e,{to:t})},934689:e=>{d.Ea("Add",e,void 0)},934740:e=>{d.Ea("Sub",e,void 0)},934791:e=>{d.Ea("Mul",e,void 0)},934842:e=>{d.Ea("Div",e,void 0)},934893:e=>{d.Ea("Pow",e,void 0)},934944:e=>{d.Ea("Equal",e,void 0)},934997:e=>{d.Ea("Greater",e,void 0)},935052:e=>{d.Ea("GreaterOrEqual",e,void 0)},935114:e=>{d.Ea("Less",e,void 0)},935166:e=>{d.Ea("LessOrEqual",e,void 0)},935225:(e,t,n,r,i)=>{d.Ea("ReduceMean",e,{keepDims:!!t,noopWithEmptyAxes:!!n,axes:r?Array.from(a().subarray(r>>>0,i>>>0)):[]})},935384:(e,t,n,r,i)=>{d.Ea("ReduceMax",e,{keepDims:!!t,noopWithEmptyAxes:!!n,axes:r?Array.from(a().subarray(r>>>0,i>>>0)):[]})},935542:(e,t,n,r,i)=>{d.Ea("ReduceMin",e,{keepDims:!!t,noopWithEmptyAxes:!!n,axes:r?Array.from(a().subarray(r>>>0,i>>>0)):[]})},935700:(e,t,n,r,i)=>{d.Ea("ReduceProd",e,{keepDims:!!t,noopWithEmptyAxes:!!n,axes:r?Array.from(a().subarray(r>>>0,i>>>0)):[]})},935859:(e,t,n,r,i)=>{d.Ea("ReduceSum",e,{keepDims:!!t,noopWithEmptyAxes:!!n,axes:r?Array.from(a().subarray(r>>>0,i>>>0)):[]})},936017:(e,t,n,r,i)=>{d.Ea("ReduceL1",e,{keepDims:!!t,noopWithEmptyAxes:!!n,axes:r?Array.from(a().subarray(r>>>0,i>>>0)):[]})},936174:(e,t,n,r,i)=>{d.Ea("ReduceL2",e,{keepDims:!!t,noopWithEmptyAxes:!!n,axes:r?Array.from(a().subarray(r>>>0,i>>>0)):[]})},936331:(e,t,n,r,i)=>{d.Ea("ReduceLogSum",e,{keepDims:!!t,noopWithEmptyAxes:!!n,axes:r?Array.from(a().subarray(r>>>0,i>>>0)):[]})},936492:(e,t,n,r,i)=>{d.Ea("ReduceSumSquare",e,{keepDims:!!t,noopWithEmptyAxes:!!n,axes:r?Array.from(a().subarray(r>>>0,i>>>0)):[]})},936656:(e,t,n,r,i)=>{d.Ea("ReduceLogSumExp",e,{keepDims:!!t,noopWithEmptyAxes:!!n,axes:r?Array.from(a().subarray(r>>>0,i>>>0)):[]})},936820:e=>{d.Ea("Where",e,void 0)},936873:(e,t,n)=>{d.Ea("Transpose",e,{perm:t?Array.from(a().subarray(t>>>0,n>>>0)):[]})},936981:(e,n,r,i,s,o,u,l,p,c,f,h,m,g,y)=>{d.Ea("ConvTranspose",e,{format:p?"NHWC":"NCHW",autoPad:n,dilations:[r],group:i,kernel_shape:[s],pads:[o,u],strides:[l],wIsConst:()=>!!t()[c>>>0],outputPadding:f?Array.from(a().subarray(f>>>0,h>>>0)):[],outputShape:m?Array.from(a().subarray(m>>>0,g>>>0)):[],activation:de(y)})},937383:(e,n,r,i,s,o,u,l,p,c,f,h,m,g)=>{d.Ea("ConvTranspose",e,{format:l?"NHWC":"NCHW",autoPad:n,dilations:Array.from(a().subarray(r>>>0,2+(r>>>0)>>>0)),group:i,kernelShape:Array.from(a().subarray(s>>>0,2+(s>>>0)>>>0)),pads:Array.from(a().subarray(o>>>0,4+(o>>>0)>>>0)),strides:Array.from(a().subarray(u>>>0,2+(u>>>0)>>>0)),wIsConst:()=>!!t()[p>>>0],outputPadding:c?Array.from(a().subarray(c>>>0,f>>>0)):[],outputShape:h?Array.from(a().subarray(h>>>0,m>>>0)):[],activation:de(g)})},937948:(e,n,r,i,s,o,u,l,p,c,f,h,m,g,y)=>{d.Ea("ConvTranspose",e,{format:p?"NHWC":"NCHW",autoPad:n,dilations:[r],group:i,kernel_shape:[s],pads:[o,u],strides:[l],wIsConst:()=>!!t()[c>>>0],outputPadding:f?Array.from(a().subarray(f>>>0,h>>>0)):[],outputShape:m?Array.from(a().subarray(m>>>0,g>>>0)):[],activation:de(y)})},938350:(e,n,r,i,s,o,u,l,p,c,f,h,m,g)=>{d.Ea("ConvTranspose",e,{format:l?"NHWC":"NCHW",autoPad:n,dilations:Array.from(a().subarray(r>>>0,2+(r>>>0)>>>0)),group:i,kernelShape:Array.from(a().subarray(s>>>0,2+(s>>>0)>>>0)),pads:Array.from(a().subarray(o>>>0,4+(o>>>0)>>>0)),strides:Array.from(a().subarray(u>>>0,2+(u>>>0)>>>0)),wIsConst:()=>!!t()[p>>>0],outputPadding:c?Array.from(a().subarray(c>>>0,f>>>0)):[],outputShape:h?Array.from(a().subarray(h>>>0,m>>>0)):[],activation:de(g)})},938915:(e,t)=>{d.Ea("GlobalAveragePool",e,{format:t?"NHWC":"NCHW"})},939006:(e,t,n,r,a,i,s,o,u,l,p,c,f,h,m,g)=>{d.Ea("AveragePool",e,{format:g?"NHWC":"NCHW",auto_pad:t,ceil_mode:n,count_include_pad:r,storage_order:a,dilations:[i,s],kernel_shape:[o,u],pads:[l,p,c,f],strides:[h,m]})},939290:(e,t)=>{d.Ea("GlobalAveragePool",e,{format:t?"NHWC":"NCHW"})},939381:(e,t,n,r,a,i,s,o,u,l,p,c,f,h,m,g)=>{d.Ea("AveragePool",e,{format:g?"NHWC":"NCHW",auto_pad:t,ceil_mode:n,count_include_pad:r,storage_order:a,dilations:[i,s],kernel_shape:[o,u],pads:[l,p,c,f],strides:[h,m]})},939665:(e,t)=>{d.Ea("GlobalMaxPool",e,{format:t?"NHWC":"NCHW"})},939752:(e,t,n,r,a,i,s,o,u,l,p,c,f,h,m,g)=>{d.Ea("MaxPool",e,{format:g?"NHWC":"NCHW",auto_pad:t,ceil_mode:n,count_include_pad:r,storage_order:a,dilations:[i,s],kernel_shape:[o,u],pads:[l,p,c,f],strides:[h,m]})},940032:(e,t)=>{d.Ea("GlobalMaxPool",e,{format:t?"NHWC":"NCHW"})},940119:(e,t,n,r,a,i,s,o,u,l,p,c,f,h,m,g)=>{d.Ea("MaxPool",e,{format:g?"NHWC":"NCHW",auto_pad:t,ceil_mode:n,count_include_pad:r,storage_order:a,dilations:[i,s],kernel_shape:[o,u],pads:[l,p,c,f],strides:[h,m]})},940399:(e,t,n,r,a)=>{d.Ea("Gemm",e,{alpha:t,beta:n,transA:r,transB:a})},940503:e=>{d.Ea("MatMul",e,void 0)},940557:(e,t,n,r)=>{d.Ea("ArgMax",e,{keepDims:!!t,selectLastIndex:!!n,axis:r})},940665:(e,t,n,r)=>{d.Ea("ArgMin",e,{keepDims:!!t,selectLastIndex:!!n,axis:r})},940773:(e,t)=>{d.Ea("Softmax",e,{axis:t})},940836:(e,t)=>{d.Ea("Concat",e,{axis:t})},940896:(e,t,n,r,i)=>{d.Ea("Split",e,{axis:t,numOutputs:n,splitSizes:r?Array.from(a().subarray(r>>>0,i>>>0)):[]})},941036:e=>{d.Ea("Expand",e,void 0)},941090:(e,t)=>{d.Ea("Gather",e,{axis:Number(t)})},941161:(e,t)=>{d.Ea("GatherElements",e,{axis:Number(t)})},941240:(e,t,n,r,i,s,o,u,l,p,c)=>{d.Ea("Resize",e,{antialias:t,axes:n?Array.from(a().subarray(n>>>0,r>>>0)):[],coordinateTransformMode:de(i),cubicCoeffA:s,excludeOutside:o,extrapolationValue:u,keepAspectRatioPolicy:de(l),mode:de(p),nearestMode:de(c)})},941586:(e,t,n,r,i,s,o)=>{d.Ea("Slice",e,{starts:t?Array.from(a().subarray(t>>>0,n>>>0)):[],ends:r?Array.from(a().subarray(r>>>0,i>>>0)):[],axes:s?Array.from(a().subarray(s>>>0,o>>>0)):[]})},941802:e=>{d.Ea("Tile",e,void 0)},941854:(e,t,n)=>{d.Ea("LayerNormalization",e,{axis:Number(t),epsilon:Number(n)})},941961:(e,t,n)=>{d.Ea("InstanceNormalization",e,{epsilon:t,format:n?"NHWC":"NCHW"})},942075:(e,t,n)=>{d.Ea("InstanceNormalization",e,{epsilon:t,format:n?"NHWC":"NCHW"})},942189:e=>{d.Ea("Range",e,void 0)},942242:(e,t)=>{d.Ea("Einsum",e,{equation:de(t)})},942323:(e,t,n,r,i)=>{d.Ea("Pad",e,{mode:t,value:n,pads:r?Array.from(a().subarray(r>>>0,i>>>0)):[]})},942450:(e,t,n,r,a,i)=>{d.Ea("BatchNormalization",e,{epsilon:t,momentum:n,spatial:!!a,trainingMode:!!r,format:i?"NHWC":"NCHW"})},942619:(e,t,n,r,a,i)=>{d.Ea("BatchNormalization",e,{epsilon:t,momentum:n,spatial:!!a,trainingMode:!!r,format:i?"NHWC":"NCHW"})},942788:(e,t,n)=>{d.Ea("CumSum",e,{exclusive:Number(t),reverse:Number(n)})},942885:(e,t,n,r,i,s,o,u,l)=>{d.Ea("Attention",e,{numHeads:t,isUnidirectional:n,maskFilterValue:r,scale:i,doRotary:s,qkvHiddenSizes:o?Array.from(a().subarray(Number(u)>>>0,Number(u)+o>>>0)):[],pastPresentShareBuffer:!!l})},943157:e=>{d.Ea("Gelu",e,void 0)},943209:(e,t,n,r,a,i)=>{d.Ea("MultiHeadAttention",e,{numHeads:t,isUnidirectional:n,maskFilterValue:r,scale:a,doRotary:i})},943368:e=>{d.Ea("BiasAdd",e,void 0)},943423:e=>{d.Ea("BiasSplitGelu",e,void 0)},943484:(e,t)=>{d.Ea("SkipLayerNormalization",e,{epsilon:t})},943565:(e,n,r,i,o,u,l,p,c,f,h,m,g)=>{d.Ea("Conv",e,{format:c?"NHWC":"NCHW",auto_pad:n,dilations:[r],group:i,kernel_shape:[o],pads:u?Array.from(a().subarray(u>>>0,l>>>0)):[],strides:[p],w_is_const:()=>!!t()[f>>>0],activation:de(h),activation_params:m?Array.from(s().subarray(m>>>0,g>>>0)):[]})},943935:(e,n,r,i,o,u,l,p,c,f,h,m,g,y,w,$)=>{d.Ea("Conv",e,{format:m?"NHWC":"NCHW",auto_pad:n,dilations:[r,i],group:o,kernel_shape:[u,l],pads:p?Array.from(a().subarray(p>>>0,c>>>0)):[],strides:[f,h],w_is_const:()=>!!t()[g>>>0],activation:de(y),activation_params:w?Array.from(s().subarray(w>>>0,$>>>0)):[]})},944326:e=>{d.zb(e)},944360:(e,t)=>d.Ab(e,t,d.bb.Cb,d.bb.errors)};function re(e){this.name="ExitStatus",this.message=`Program terminated with exit(${e})`,this.status=e}var ae=e=>{e.terminate(),e.onmessage=()=>{}},ie=e=>{0==Se.Ya.length&&(xe(),Se.lb(Se.Ya[0]));var t=Se.Ya.pop();if(!t)return 6;Se.Za.push(t),Se.Qa[e.Xa]=t,t.Xa=e.Xa;var n={cmd:"run",start_routine:e.Db,arg:e.tb,pthread_ptr:e.Xa};return $&&t.unref(),t.postMessage(n,e.Jb),0},se=0,ue=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,le=(e,t,n)=>{var r=(t>>>=0)+n;for(n=t;e[n]&&!(n>=r);)++n;if(16(a=224==(240&a)?(15&a)<<12|i<<6|s:(7&a)<<18|i<<12|s<<6|63&e[t++])?r+=String.fromCharCode(a):(a-=65536,r+=String.fromCharCode(55296|a>>10,56320|1023&a))}}else r+=String.fromCharCode(a)}return r},de=(e,t)=>(e>>>=0)?le(r(),e,t):"",fe=e=>{var t=Lt();return e=e(),Gt(t),e};function me(e,t){var n=arguments.length-2,r=arguments;return fe((()=>{for(var a=Ft(8*n),i=a>>>3,s=0;s>>0]=u}return Pt(e,n,a,t)}))}function $e(e){if(v)return me(0,1,e);A=e,0{if(A=e,v)throw Ie(e),"unwind";$e(e)},be=e=>{e instanceof re||"unwind"==e||g(1,e)};function _e(){for(var e=d.numThreads;e--;)xe();H.unshift((()=>{F++,function(e){v?e():Promise.all(Se.Ya.map(Se.lb)).then(e)}((()=>K()))}))}function xe(){var e=_("ort-wasm-simd-threaded.worker.js");e=new Worker(e),Se.Ya.push(e)}var Se={Ya:[],Za:[],pb:[],Qa:{},hb(){v?(Se.receiveObjectTransfer=Se.Bb,Se.threadInitTLS=Se.ob,Se.setExitStatus=Se.nb):_e()},nb:e=>A=e,Nb:["$terminateWorker"],Eb:()=>{for(var e of Se.Za)ae(e);for(e of Se.Ya)ae(e);Se.Ya=[],Se.Za=[],Se.Qa=[]},mb:e=>{var t=e.Xa;delete Se.Qa[t],Se.Ya.push(e),Se.Za.splice(Se.Za.indexOf(e),1),e.Xa=0,Nt(t)},Bb(){},ob(){Se.pb.forEach((e=>e()))},lb:e=>new Promise((t=>{e.onmessage=n=>{var r=(n=n.data).cmd;if(n.targetThread&&n.targetThread!=Rt()){var a=Se.Qa[n.targetThread];a?a.postMessage(n,n.transferList):T(`Internal error! Worker sent a message "${r}" to target pthread ${n.targetThread}, but that thread no longer exists!`)}else"checkMailbox"===r?Ke():"spawnThread"===r?ie(n):"cleanupThread"===r?Se.mb(Se.Qa[n.thread]):"killThread"===r?(n=n.thread,r=Se.Qa[n],delete Se.Qa[n],ae(r),Nt(n),Se.Za.splice(Se.Za.indexOf(r),1),r.Xa=0):"cancelThread"===r?Se.Qa[n.thread].postMessage({cmd:"cancel"}):"loaded"===r?(e.loaded=!0,$&&!e.Xa&&e.unref(),t(e)):"alert"===r?alert(`Thread ${n.threadId}: ${n.text}`):"setimmediate"===n.target?e.postMessage(n):"callHandler"===r?d[n.handler](...n.args):r&&T(`worker sent an unknown command ${r}`)},e.onerror=e=>{throw T(`worker sent an error! ${e.filename}:${e.lineno}: ${e.message}`),e},$&&(e.on("message",(t=>e.onmessage({data:t}))),e.on("error",(t=>e.onerror(t))));var r,a=[];for(r of["onExit"])d.hasOwnProperty(r)&&a.push(r);e.postMessage({cmd:"load",handlers:a,urlOrBlob:d.mainScriptUrlOrBlob||n,wasmMemory:k,wasmModule:O})}))};d.PThread=Se;var Ee=e=>{for(;0>>2>>>0]=e},this.rb=function(e){i()[this.gb+8>>>2>>>0]=e},this.hb=function(e,t){this.qb(),this.sb(e),this.rb(t)},this.qb=function(){i()[this.gb+16>>>2>>>0]=0}}function Te(e,t,n,r){return v?me(2,1,e,t,n,r):ke(e,t,n,r)}function ke(e,t,n,r){if(e>>>=0,t>>>=0,n>>>=0,r>>>=0,typeof SharedArrayBuffer>"u")return T("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;var a=[];return v&&0===a.length?Te(e,t,n,r):(e={Db:n,Xa:e,tb:r,Jb:a},v?(e.Lb="spawnThread",postMessage(e,a),0):ie(e))}function Oe(e,t,n){return v?me(3,1,e,t,n):0}function Ae(e,t){if(v)return me(4,1,e,t)}d.establishStackSpace=()=>{var e=Rt(),t=i()[e+52>>>2>>>0];e=i()[e+56>>>2>>>0],Ht(t,t-e),Gt(t)},d.invokeEntryPoint=(e,t)=>{e=qt.apply(null,[e,t]),0{for(var t=0,n=0;n=r?t++:2047>=r?t+=2:55296<=r&&57343>=r?(t+=4,++n):t+=3}return t},ze=(e,t,n,r)=>{if(!(0>>=0;r=n+r-1;for(var i=0;i=s&&(s=65536+((1023&s)<<10)|1023&e.charCodeAt(++i)),127>=s){if(n>=r)break;t[n++>>>0]=s}else{if(2047>=s){if(n+1>=r)break;t[n++>>>0]=192|s>>6}else{if(65535>=s){if(n+2>=r)break;t[n++>>>0]=224|s>>12}else{if(n+3>=r)break;t[n++>>>0]=240|s>>18,t[n++>>>0]=128|s>>12&63}t[n++>>>0]=128|s>>6&63}t[n++>>>0]=128|63&s}}return t[n>>>0]=0,n-a},Be=(e,t,n)=>ze(e,r(),t,n);function De(e,t){if(v)return me(5,1,e,t)}function Me(e,t,n){if(v)return me(6,1,e,t,n)}function Pe(e,t,n){return v?me(7,1,e,t,n):0}function Ne(e,t){if(v)return me(8,1,e,t)}function We(e,t,n){if(v)return me(9,1,e,t,n)}function Ue(e,t,n,r){if(v)return me(10,1,e,t,n,r)}function Ve(e,t,n,r){if(v)return me(11,1,e,t,n,r)}function He(e,t,n,r){if(v)return me(12,1,e,t,n,r)}function Le(e){if(v)return me(13,1,e)}function Ge(e,t){if(v)return me(14,1,e,t)}function Fe(e,t,n){if(v)return me(15,1,e,t,n)}var qe=()=>{if(!(0>>=0,"function"==typeof Atomics.Kb&&(Atomics.Kb(a(),e>>>2,e).value.then(Ke),e+=128,Atomics.store(a(),e>>>2,1))}d.__emscripten_thread_mailbox_await=je;var Ke=()=>{var e=Rt();if(e&&(je(e),!N))try{Ut(),qe()}catch(e){be(e)}};d.checkMailbox=Ke;var Ye=[],Ze=e=>e%4==0&&(e%100!=0||e%400==0),Xe=[0,31,60,91,121,152,182,213,244,274,305,335],Qe=[0,31,59,90,120,151,181,212,243,273,304,334];function Je(e,t,n,r,a,i,s,o){return v?me(16,1,e,t,n,r,a,i,s,o):-52}function et(e,t,n,r,a,i,s){if(v)return me(17,1,e,t,n,r,a,i,s)}var tt,nt=e=>{var t=Re(e)+1,n=zt(t);return n&&Be(e,n,t),n},rt=[],at=(e,t)=>{rt.length=0;for(var n;n=r()[e++>>>0];){var s=105!=n;t+=(s&=112!=n)&&t%8?4:0,rt.push(112==n?i()[t>>>2>>>0]:105==n?a()[t>>>2>>>0]:o()[t>>>3>>>0]),t+=s?8:4}return rt},it={},st=()=>{if(!tt){var e,t={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:m||"./this.program"};for(e in it)void 0===it[e]?delete t[e]:t[e]=it[e];var n=[];for(e in t)n.push(`${e}=${t[e]}`);tt=n}return tt};function ot(e,n){if(v)return me(18,1,e,n);e>>>=0,n>>>=0;var r=0;return st().forEach(((a,s)=>{var o=n+r;for(s=i()[e+4*s>>>2>>>0]=o,o=0;o>>0>>>0]=a.charCodeAt(o);t()[s>>>0>>>0]=0,r+=a.length+1})),0}function ut(e,t){if(v)return me(19,1,e,t);e>>>=0,t>>>=0;var n=st();i()[e>>>2>>>0]=n.length;var r=0;return n.forEach((e=>r+=e.length+1)),i()[t>>>2>>>0]=r,0}function lt(e){return v?me(20,1,e):52}function dt(e,t,n,r){return v?me(21,1,e,t,n,r):52}function pt(e,t,n,r,a){return v?me(22,1,e,t,n,r,a):70}var ct=[null,[],[]];function ft(e,t,n,a){if(v)return me(23,1,e,t,n,a);t>>>=0,n>>>=0,a>>>=0;for(var s=0,o=0;o>>2>>>0],l=i()[t+4>>>2>>>0];t+=8;for(var d=0;d>>0],c=ct[e];0===p||10===p?((1===e?C:T)(le(c,0)),c.length=0):c.push(p)}s+=l}return i()[a>>>2>>>0]=s,0}var ht=[31,29,31,30,31,30,31,31,30,31,30,31],mt=[31,28,31,30,31,30,31,31,30,31,30,31];function gt(e,n,r,s){function o(e,t,n){for(e="number"==typeof e?e.toString():e||"";e.lengthe?-1:0r-e.getDate())){e.setDate(e.getDate()+t);break}t-=r-e.getDate()+1,e.setDate(1),11>n?e.setMonth(n+1):(e.setMonth(0),e.setFullYear(e.getFullYear()+1))}return n=new Date(e.getFullYear()+1,0,4),t=d(new Date(e.getFullYear(),0,4)),n=d(n),0>=l(t,e)?0>=l(n,e)?e.getFullYear()+1:e.getFullYear():e.getFullYear()-1}e>>>=0,n>>>=0,r>>>=0,s>>>=0;var c=i()[s+40>>>2>>>0];for(var f in s={Hb:a()[s>>>2>>>0],Gb:a()[s+4>>>2>>>0],eb:a()[s+8>>>2>>>0],jb:a()[s+12>>>2>>>0],fb:a()[s+16>>>2>>>0],ab:a()[s+20>>>2>>>0],Wa:a()[s+24>>>2>>>0],$a:a()[s+28>>>2>>>0],Ob:a()[s+32>>>2>>>0],Fb:a()[s+36>>>2>>>0],Ib:c?de(c):""},r=de(r),c={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"})r=r.replace(new RegExp(f,"g"),c[f]);var h="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),m="January February March April May June July August September October November December".split(" ");for(f in c={"%a":e=>h[e.Wa].substring(0,3),"%A":e=>h[e.Wa],"%b":e=>m[e.fb].substring(0,3),"%B":e=>m[e.fb],"%C":e=>u((e.ab+1900)/100|0,2),"%d":e=>u(e.jb,2),"%e":e=>o(e.jb,2," "),"%g":e=>p(e).toString().substring(2),"%G":e=>p(e),"%H":e=>u(e.eb,2),"%I":e=>(0==(e=e.eb)?e=12:12{for(var t=0,n=0;n<=e.fb-1;t+=(Ze(e.ab+1900)?ht:mt)[n++]);return u(e.jb+t,3)},"%m":e=>u(e.fb+1,2),"%M":e=>u(e.Gb,2),"%n":()=>"\n","%p":e=>0<=e.eb&&12>e.eb?"AM":"PM","%S":e=>u(e.Hb,2),"%t":()=>"\t","%u":e=>e.Wa||7,"%U":e=>u(Math.floor((e.$a+7-e.Wa)/7),2),"%V":e=>{var t=Math.floor((e.$a+7-(e.Wa+6)%7)/7);if(2>=(e.Wa+371-e.$a-2)%7&&t++,t)53==t&&(4==(n=(e.Wa+371-e.$a)%7)||3==n&&Ze(e.ab)||(t=1));else{t=52;var n=(e.Wa+7-e.$a-1)%7;(4==n||5==n&&Ze(e.ab%400-1))&&t++}return u(t,2)},"%w":e=>e.Wa,"%W":e=>u(Math.floor((e.$a+7-(e.Wa+6)%7)/7),2),"%y":e=>(e.ab+1900).toString().substring(2),"%Y":e=>e.ab+1900,"%z":e=>(0<=(e=e.Fb)?"+":"-")+("0000"+((e=Math.abs(e)/60)/60*100+e%60)).slice(-4),"%Z":e=>e.Ib,"%%":()=>"%"},r=r.replace(/%%/g,"\0\0"),c)r.includes(f)&&(r=r.replace(new RegExp(f,"g"),c[f](s)));return f=function(e){var t=Array(Re(e)+1);return ze(e,t,0,t.length),t}(r=r.replace(/\0\0/g,"%")),f.length>n?0:(((e,n)=>{t().set(e,n>>>0)})(f,e),f.length-1)}var yt=e=>{try{e()}catch(e){Y(e)}},wt=0,$t=null,vt=0,bt=[],_t={},xt={},St=0,Et=null,It=[];function Ct(e){if(!N){if(0===wt){var t=!1,n=!1;e(((e=0)=>{if(!N&&(vt=e,t=!0,n)){wt=2,yt((()=>Yt($t))),typeof Browser<"u"&&Browser.ib.vb&&Browser.ib.resume(),e=!1;try{var r=function(){var e=a()[$t+8>>>2>>>0];return e=Ot[xt[e]],--se,e()}()}catch(t){r=t,e=!0}var i=!1;if(!$t){var s=Et;s&&(Et=null,(e?s.reject:s.resolve)(r),i=!0)}if(e&&!i)throw r}})),n=!0,t||(wt=1,$t=function(){var e=zt(65548),t=e+12;i()[e>>>2>>>0]=t,i()[e+4>>>2>>>0]=t+65536,t=bt[0];var n=_t[t];return void 0===n&&(n=St++,_t[t]=n,xt[n]=t),t=n,a()[e+8>>>2>>>0]=t,e}(),typeof Browser<"u"&&Browser.ib.vb&&Browser.ib.pause(),yt((()=>jt($t))))}else 2===wt?(wt=0,yt(Zt),Bt($t),$t=null,It.forEach((e=>{if(!N)try{e(),qe()}catch(e){be(e)}}))):Y(`invalid state: ${wt}`);return vt}}Se.hb();var Tt=[$e,Ie,Te,Oe,Ae,De,Me,Pe,Ne,We,Ue,Ve,He,Le,Ge,Fe,Je,et,ot,ut,lt,dt,pt,ft],kt={r:function(e,t,n){return function(e){return Ct((t=>{e().then(t)}))}((async()=>{await d.xb(e,t,n)}))},b:function(e,t,n){throw new Ce(e>>>=0).hb(t>>>0,n>>>0),e},N:function(e){Dt(e>>>0,!w,1,!y,131072,!1),Se.ob()},l:function(e){e>>>=0,v?postMessage({cmd:"cleanupThread",thread:e}):Se.mb(Se.Qa[e])},J:ke,i:Oe,T:Ae,F:De,H:Me,U:Pe,R:Ne,L:We,Q:Ue,p:Ve,G:He,D:Le,S:Ge,E:Fe,q:()=>1,B:function(e,t){(e>>>=0)==t>>>0?setTimeout((()=>Ke())):v?postMessage({targetThread:e,cmd:"checkMailbox"}):(e=Se.Qa[e])&&e.postMessage({cmd:"checkMailbox"})},K:function(e,t,n,r){t>>>=0,Ye.length=n,r=r>>>0>>>3;for(var a=0;a>>0];return e=0>e?ne[-e-1]:Tt[e],Se.ub=t,t=e.apply(null,Ye),Se.ub=0,t},M:je,W:function(e){$&&Se.Qa[e>>>0].ref()},u:function(e,t,n){e=t+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*t:NaN,n>>>=0,e=new Date(1e3*e),a()[n>>>2>>>0]=e.getUTCSeconds(),a()[n+4>>>2>>>0]=e.getUTCMinutes(),a()[n+8>>>2>>>0]=e.getUTCHours(),a()[n+12>>>2>>>0]=e.getUTCDate(),a()[n+16>>>2>>>0]=e.getUTCMonth(),a()[n+20>>>2>>>0]=e.getUTCFullYear()-1900,a()[n+24>>>2>>>0]=e.getUTCDay(),e=(e.getTime()-Date.UTC(e.getUTCFullYear(),0,1,0,0,0,0))/864e5|0,a()[n+28>>>2>>>0]=e},v:function(e,t,n){e=t+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*t:NaN,n>>>=0,e=new Date(1e3*e),a()[n>>>2>>>0]=e.getSeconds(),a()[n+4>>>2>>>0]=e.getMinutes(),a()[n+8>>>2>>>0]=e.getHours(),a()[n+12>>>2>>>0]=e.getDate(),a()[n+16>>>2>>>0]=e.getMonth(),a()[n+20>>>2>>>0]=e.getFullYear()-1900,a()[n+24>>>2>>>0]=e.getDay(),t=(Ze(e.getFullYear())?Xe:Qe)[e.getMonth()]+e.getDate()-1|0,a()[n+28>>>2>>>0]=t,a()[n+36>>>2>>>0]=-60*e.getTimezoneOffset(),t=new Date(e.getFullYear(),6,1).getTimezoneOffset();var r=new Date(e.getFullYear(),0,1).getTimezoneOffset();e=0|(t!=r&&e.getTimezoneOffset()==Math.min(r,t)),a()[n+32>>>2>>>0]=e},w:function(e){e>>>=0;var t=new Date(a()[e+20>>>2>>>0]+1900,a()[e+16>>>2>>>0],a()[e+12>>>2>>>0],a()[e+8>>>2>>>0],a()[e+4>>>2>>>0],a()[e>>>2>>>0],0),n=a()[e+32>>>2>>>0],r=t.getTimezoneOffset(),i=new Date(t.getFullYear(),6,1).getTimezoneOffset(),s=new Date(t.getFullYear(),0,1).getTimezoneOffset(),o=Math.min(s,i);return 0>n?a()[e+32>>>2>>>0]=+(i!=s&&o==r):0>>2>>>0]=t.getDay(),n=(Ze(t.getFullYear())?Xe:Qe)[t.getMonth()]+t.getDate()-1|0,a()[e+28>>>2>>>0]=n,a()[e>>>2>>>0]=t.getSeconds(),a()[e+4>>>2>>>0]=t.getMinutes(),a()[e+8>>>2>>>0]=t.getHours(),a()[e+12>>>2>>>0]=t.getDate(),a()[e+16>>>2>>>0]=t.getMonth(),a()[e+20>>>2>>>0]=t.getYear(),e=t.getTime(),isNaN(e)?(a()[At()>>>2>>>0]=61,e=-1):e/=1e3,Vt((te=e,1<=+Math.abs(te)?0>>0:~~+Math.ceil((te-+(~~te>>>0))/4294967296)>>>0:0)),e>>>0},s:Je,t:et,A:function(e,t,n){function r(e){return(e=e.toTimeString().match(/\(([A-Za-z ]+)\)$/))?e[1]:"GMT"}e>>>=0,t>>>=0,n>>>=0;var s=(new Date).getFullYear(),o=new Date(s,0,1),u=new Date(s,6,1);s=o.getTimezoneOffset();var l=u.getTimezoneOffset(),d=Math.max(s,l);i()[e>>>2>>>0]=60*d,a()[t>>>2>>>0]=+(s!=l),e=r(o),t=r(u),e=nt(e),t=nt(t),l>>2>>>0]=e,i()[n+4>>>2>>>0]=t):(i()[n>>>2>>>0]=t,i()[n+4>>>2>>>0]=e)},d:()=>{Y("")},c:function(e,t,n){return e>>>=0,t=at(t>>>0,n>>>0),ne[e].apply(null,t)},k:function(e,t,n){return e>>>=0,t=at(t>>>0,n>>>0),ne[e].apply(null,t)},m:()=>{},j:()=>Date.now(),V:()=>{throw se+=1,"unwind"},C:function(){return 4294901760},f:()=>performance.timeOrigin+performance.now(),g:()=>$?(co(),V(we)).cpus().length:navigator.hardwareConcurrency,y:function(e){e>>>=0;var t=r().length;if(e<=t||4294901760=n;n*=2){var a=t*(1+.2/n);a=Math.min(a,e+100663296);var i=Math;a=Math.max(e,a);e:{i=(i.min.call(i,4294901760,a+(65536-a%65536)%65536)-k.buffer.byteLength+65535)/65536;try{k.grow(i),W();var s=1;break e}catch{}s=void 0}if(s)return!0}return!1},O:ot,P:ut,I:ve,h:lt,o:dt,x:pt,n:ft,a:k||d.wasmMemory,z:gt,e:function(e,t,n,r){return gt(e>>>0,t>>>0,n>>>0,r>>>0)}},Ot=function(){function e(e,t){return Ot=e.exports,Ot=function(){var e=Ot,t={};for(let[n,r]of Object.entries(e))t[n]="function"==typeof r?function(){bt.push(n);try{return r.apply(null,arguments)}finally{N||(bt.pop(),$t&&1===wt&&0===bt.length&&(wt=0,se+=1,yt(Kt),typeof Fibers<"u"&&Fibers.Pb()))}}:r;return t}(),Ot=function(){var e=Ot;e=Object.assign({},e);var t=e=>()=>e()>>>0,n=e=>t=>e(t)>>>0;return e.za=t(e.za),e.Aa=t(e.Aa),e.Ba=n(e.Ba),e.emscripten_main_runtime_thread_id=t(e.emscripten_main_runtime_thread_id),e.Na=t(e.Na),e.Pa=n(e.Pa),e}(),Se.pb.push(Ot.Da),L.unshift(Ot.X),O=t,K(),Ot}var t={a:kt};if(F++,d.instantiateWasm)try{return d.instantiateWasm(t,e)}catch(e){T(`Module.instantiateWasm callback failed with error: ${e}`),l(e)}return function(e,t){var n=Z;return"function"!=typeof WebAssembly.instantiateStreaming||X(n)||Q(n)||$||"function"!=typeof fetch?ee(n,e,t):fetch(n,{credentials:"same-origin"}).then((r=>WebAssembly.instantiateStreaming(r,e).then(t,(function(r){return T(`wasm streaming compile failed: ${r}`),T("falling back to ArrayBuffer instantiation"),ee(n,e,t)}))))}(t,(function(t){e(t.instance,t.module)})).catch(l),{}}();d._OrtInit=(e,t)=>(d._OrtInit=Ot.Y)(e,t),d._OrtGetLastError=(e,t)=>(d._OrtGetLastError=Ot.Z)(e,t),d._OrtCreateSessionOptions=(e,t,n,r,a,i,s,o,u,l)=>(d._OrtCreateSessionOptions=Ot._)(e,t,n,r,a,i,s,o,u,l),d._OrtAppendExecutionProvider=(e,t)=>(d._OrtAppendExecutionProvider=Ot.$)(e,t),d._OrtAddFreeDimensionOverride=(e,t,n)=>(d._OrtAddFreeDimensionOverride=Ot.aa)(e,t,n),d._OrtAddSessionConfigEntry=(e,t,n)=>(d._OrtAddSessionConfigEntry=Ot.ba)(e,t,n),d._OrtReleaseSessionOptions=e=>(d._OrtReleaseSessionOptions=Ot.ca)(e),d._OrtCreateSession=(e,t,n)=>(d._OrtCreateSession=Ot.da)(e,t,n),d._OrtReleaseSession=e=>(d._OrtReleaseSession=Ot.ea)(e),d._OrtGetInputOutputCount=(e,t,n)=>(d._OrtGetInputOutputCount=Ot.fa)(e,t,n),d._OrtGetInputName=(e,t)=>(d._OrtGetInputName=Ot.ga)(e,t),d._OrtGetOutputName=(e,t)=>(d._OrtGetOutputName=Ot.ha)(e,t),d._OrtFree=e=>(d._OrtFree=Ot.ia)(e),d._OrtCreateTensor=(e,t,n,r,a,i)=>(d._OrtCreateTensor=Ot.ja)(e,t,n,r,a,i),d._OrtGetTensorData=(e,t,n,r,a)=>(d._OrtGetTensorData=Ot.ka)(e,t,n,r,a),d._OrtReleaseTensor=e=>(d._OrtReleaseTensor=Ot.la)(e),d._OrtCreateRunOptions=(e,t,n,r)=>(d._OrtCreateRunOptions=Ot.ma)(e,t,n,r),d._OrtAddRunConfigEntry=(e,t,n)=>(d._OrtAddRunConfigEntry=Ot.na)(e,t,n),d._OrtReleaseRunOptions=e=>(d._OrtReleaseRunOptions=Ot.oa)(e),d._OrtCreateBinding=e=>(d._OrtCreateBinding=Ot.pa)(e),d._OrtBindInput=(e,t,n)=>(d._OrtBindInput=Ot.qa)(e,t,n),d._OrtBindOutput=(e,t,n,r)=>(d._OrtBindOutput=Ot.ra)(e,t,n,r),d._OrtClearBoundOutputs=e=>(d._OrtClearBoundOutputs=Ot.sa)(e),d._OrtReleaseBinding=e=>(d._OrtReleaseBinding=Ot.ta)(e),d._OrtRunWithBinding=(e,t,n,r,a)=>(d._OrtRunWithBinding=Ot.ua)(e,t,n,r,a),d._OrtRun=(e,t,n,r,a,i,s,o)=>(d._OrtRun=Ot.va)(e,t,n,r,a,i,s,o),d._OrtEndProfiling=e=>(d._OrtEndProfiling=Ot.wa)(e),d._JsepOutput=(e,t,n)=>(d._JsepOutput=Ot.xa)(e,t,n),d._JsepGetNodeName=e=>(d._JsepGetNodeName=Ot.ya)(e);var At=()=>(At=Ot.za)(),Rt=d._pthread_self=()=>(Rt=d._pthread_self=Ot.Aa)(),zt=d._malloc=e=>(zt=d._malloc=Ot.Ba)(e),Bt=d._free=e=>(Bt=d._free=Ot.Ca)(e);d.__emscripten_tls_init=()=>(d.__emscripten_tls_init=Ot.Da)();var Dt=d.__emscripten_thread_init=(e,t,n,r,a,i)=>(Dt=d.__emscripten_thread_init=Ot.Fa)(e,t,n,r,a,i);d.__emscripten_thread_crashed=()=>(d.__emscripten_thread_crashed=Ot.Ga)();var Mt,Pt=(e,t,n,r)=>(Pt=Ot.Ha)(e,t,n,r),Nt=e=>(Nt=Ot.Ia)(e),Wt=d.__emscripten_thread_exit=e=>(Wt=d.__emscripten_thread_exit=Ot.Ja)(e),Ut=()=>(Ut=Ot.Ka)(),Vt=e=>(Vt=Ot.La)(e),Ht=(e,t)=>(Ht=Ot.Ma)(e,t),Lt=()=>(Lt=Ot.Na)(),Gt=e=>(Gt=Ot.Oa)(e),Ft=e=>(Ft=Ot.Pa)(e),qt=d.dynCall_ii=(e,t)=>(qt=d.dynCall_ii=Ot.Ra)(e,t),jt=e=>(jt=Ot.Sa)(e),Kt=()=>(Kt=Ot.Ta)(),Yt=e=>(Yt=Ot.Ua)(e),Zt=()=>(Zt=Ot.Va)();function Xt(){if(!(00r))})),ho=W(((e,t)=>{t.exports='"use strict";var Module={},ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";if(ENVIRONMENT_IS_NODE){var nodeWorkerThreads=require("worker_threads"),parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",e=>onmessage({data:e}));var fs=require("fs"),vm=require("vm");Object.assign(global,{self:global,require,Module,location:{href:__filename},Worker:nodeWorkerThreads.Worker,importScripts:e=>vm.runInThisContext(fs.readFileSync(e,"utf8"),{filename:e}),postMessage:e=>parentPort.postMessage(e),performance:global.performance||{now:Date.now}})}var initializedJS=!1;function threadPrintErr(){var e=Array.prototype.slice.call(arguments).join(" ");if(ENVIRONMENT_IS_NODE){fs.writeSync(2,e+`\n`);return}console.error(e)}function threadAlert(){var e=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:e,threadId:Module._pthread_self()})}var err=threadPrintErr;self.alert=threadAlert,Module.instantiateWasm=(e,t)=>{var a=Module.wasmModule;Module.wasmModule=null;var r=new WebAssembly.Instance(a,e);return t(r)},self.onunhandledrejection=e=>{throw e.reason||e};function handleMessage(e){try{if(e.data.cmd==="load"){let a=[];self.onmessage=r=>a.push(r),self.startWorker=r=>{Module=r,postMessage({cmd:"loaded"});for(let s of a)handleMessage(s);self.onmessage=handleMessage},Module.wasmModule=e.data.wasmModule;for(const r of e.data.handlers)Module[r]=(...s)=>{postMessage({cmd:"callHandler",handler:r,args:s})};if(Module.wasmMemory=e.data.wasmMemory,Module.buffer=Module.wasmMemory.buffer,Module.ENVIRONMENT_IS_PTHREAD=!0,typeof e.data.urlOrBlob=="string")importScripts(e.data.urlOrBlob);else{var t=URL.createObjectURL(e.data.urlOrBlob);importScripts(t),URL.revokeObjectURL(t)}ortWasmThreaded(Module)}else if(e.data.cmd==="run"){Module.__emscripten_thread_init(e.data.pthread_ptr,0,0,1),Module.__emscripten_thread_mailbox_await(e.data.pthread_ptr),Module.establishStackSpace(),Module.PThread.receiveObjectTransfer(e.data),Module.PThread.threadInitTLS(),initializedJS||(initializedJS=!0);try{Module.invokeEntryPoint(e.data.start_routine,e.data.arg)}catch(a){if(a!="unwind")throw a}}else e.data.cmd==="cancel"?Module._pthread_self()&&Module.__emscripten_thread_exit(-1):e.data.target==="setimmediate"||(e.data.cmd==="checkMailbox"?initializedJS&&Module.checkMailbox():e.data.cmd&&(err(`worker.js received unknown command ${e.data.cmd}`),err(e.data)))}catch(a){throw Module.__emscripten_thread_crashed?.(),a}}self.onmessage=handleMessage;\n'})),mo=N((()=>{ve=me(),be=fo(),xe=!1,Se=!1,Ee=!1,Ie=e=>{if(1===e)return!1;if(typeof SharedArrayBuffer>"u")return typeof self<"u"&&!self.crossOriginIsolated&&console.warn("env.wasm.numThreads is set to "+e+", but this will not work unless you enable crossOriginIsolated mode. See https://web.dev/cross-origin-isolation-guide/ for more info."),!1;typeof process<"u"&&process.versions&&process.versions.node&&console.warn("env.wasm.numThreads is set to "+e+", however, currently onnxruntime-web does not support multi-threads in Node.js. Please consider using onnxruntime-node for performance critical scenarios.");try{return typeof MessageChannel<"u"&&(new MessageChannel).port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch{return!1}},Ce=()=>{try{return WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,30,1,28,0,65,0,253,15,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,186,1,26,11]))}catch{return!1}},Te=(e,t)=>e?t?"ort-wasm-simd-threaded.wasm":"ort-wasm-simd.wasm":t?"ort-wasm-threaded.wasm":"ort-wasm.wasm",ke=async e=>{if(xe)return Promise.resolve();if(Se)throw new Error("multiple calls to 'initializeWebAssembly()' detected.");if(Ee)throw new Error("previous call to 'initializeWebAssembly()' failed.");Se=!0;let t=e.initTimeout,n=e.numThreads,r=e.simd,a=Ie(n),i=r&&Ce(),s=e.wasmPaths,o="string"==typeof s?s:void 0,u=Te(i,a),l="object"==typeof s?s[u]:void 0,d=!1,p=[];if(t>0&&p.push(new Promise((e=>{setTimeout((()=>{d=!0,e()}),t)}))),p.push(new Promise(((e,t)=>{let r=a?be:ve,i={locateFile:(e,t)=>{if(a&&e.endsWith(".worker.js")&&typeof Blob<"u")return URL.createObjectURL(new Blob([ho()],{type:"text/javascript"}));if(e.endsWith(".wasm")){if(l)return l;let e=o??t;return"ort-wasm-simd.wasm"===u?e+"ort-wasm-simd.jsep.wasm":"ort-wasm-simd-threaded.wasm"===u?e+"ort-wasm-simd-threaded.jsep.wasm":e+u}return t+e}};if(a)if(i.numThreads=n,typeof Blob>"u")i.mainScriptUrlOrBlob=(void 0)(__dirname,"ort-wasm-threaded.js");else{let e=`var ortWasmThreaded=${r.toString()};`;i.mainScriptUrlOrBlob=new Blob([e],{type:"text/javascript"})}r(i).then((t=>{Se=!1,xe=!0,_e=t,e()}),(e=>{Se=!1,Ee=!0,t(e)}))}))),await Promise.race(p),d)throw new Error(`WebAssembly backend initializing failed due to timeout: ${t}ms`)},Oe=()=>{if(xe&&_e)return _e;throw new Error("WebAssembly is not initialized yet.")}})),go=N((()=>{mo(),Ae=(e,t)=>{let n=Oe(),r=n.lengthBytesUTF8(e)+1,a=n._malloc(r);return n.stringToUTF8(e,a,r),t.push(a),a},Re=(e,t,n,r)=>{if("object"==typeof e&&null!==e){if(n.has(e))throw new Error("Circular reference in options");n.add(e)}Object.entries(e).forEach((([e,a])=>{let i=t?t+e:e;if("object"==typeof a)Re(a,i+".",n,r);else if("string"==typeof a||"number"==typeof a)r(i,a.toString());else{if("boolean"!=typeof a)throw new Error("Can't handle extra config type: "+typeof a);r(i,a?"1":"0")}}))},ze=e=>{let t=Oe(),n=t.stackSave();try{let n=t.stackAlloc(8);t._OrtGetLastError(n,n+4);let r=t.HEAP32[n/4],a=t.HEAPU32[n/4+1],i=a?t.UTF8ToString(a):"";throw new Error(`${e} ERROR_CODE: ${r}, ERROR_MESSAGE: ${i}`)}finally{t.stackRestore(n)}}})),yo=N((()=>{mo(),go(),Be=e=>{let t=Oe(),n=0,r=[],a=e||{};try{if(void 0===e?.logSeverityLevel)a.logSeverityLevel=2;else if("number"!=typeof e.logSeverityLevel||!Number.isInteger(e.logSeverityLevel)||e.logSeverityLevel<0||e.logSeverityLevel>4)throw new Error(`log serverity level is not valid: ${e.logSeverityLevel}`);if(void 0===e?.logVerbosityLevel)a.logVerbosityLevel=0;else if("number"!=typeof e.logVerbosityLevel||!Number.isInteger(e.logVerbosityLevel))throw new Error(`log verbosity level is not valid: ${e.logVerbosityLevel}`);void 0===e?.terminate&&(a.terminate=!1);let i=0;return void 0!==e?.tag&&(i=Ae(e.tag,r)),n=t._OrtCreateRunOptions(a.logSeverityLevel,a.logVerbosityLevel,!!a.terminate,i),0===n&&ze("Can't create run options."),void 0!==e?.extra&&Re(e.extra,"",new WeakSet,((e,a)=>{let i=Ae(e,r),s=Ae(a,r);0!==t._OrtAddRunConfigEntry(n,i,s)&&ze(`Can't set a run config entry: ${e} - ${a}.`)})),[n,r]}catch(e){throw 0!==n&&t._OrtReleaseRunOptions(n),r.forEach((e=>t._free(e))),e}}})),wo=N((()=>{mo(),go(),De=e=>{switch(e){case"disabled":return 0;case"basic":return 1;case"extended":return 2;case"all":return 99;default:throw new Error(`unsupported graph optimization level: ${e}`)}},Me=e=>{switch(e){case"sequential":return 0;case"parallel":return 1;default:throw new Error(`unsupported execution mode: ${e}`)}},Pe=e=>{e.extra||(e.extra={}),e.extra.session||(e.extra.session={});let t=e.extra.session;t.use_ort_model_bytes_directly||(t.use_ort_model_bytes_directly="1"),e.executionProviders&&e.executionProviders.some((e=>"webgpu"===("string"==typeof e?e:e.name)))&&(e.enableMemPattern=!1)},Ne=(e,t,n)=>{for(let r of t){let t="string"==typeof r?r:r.name;switch(t){case"webnn":if(t="WEBNN","string"!=typeof r){let t=r;if(t?.deviceType){let r=Ae("deviceType",n),a=Ae(t.deviceType,n);0!==Oe()._OrtAddSessionConfigEntry(e,r,a)&&ze(`Can't set a session config entry: 'deviceType' - ${t.deviceType}.`)}if(t?.numThreads){let r=t.numThreads;("number"!=typeof r||!Number.isInteger(r)||r<0)&&(r=0);let a=Ae("numThreads",n),i=Ae(r.toString(),n);0!==Oe()._OrtAddSessionConfigEntry(e,a,i)&&ze(`Can't set a session config entry: 'numThreads' - ${t.numThreads}.`)}if(t?.powerPreference){let r=Ae("powerPreference",n),a=Ae(t.powerPreference,n);0!==Oe()._OrtAddSessionConfigEntry(e,r,a)&&ze(`Can't set a session config entry: 'powerPreference' - ${t.powerPreference}.`)}}break;case"webgpu":if(t="JS","string"!=typeof r){let t=r;if(t?.preferredLayout){if("NCHW"!==t.preferredLayout&&"NHWC"!==t.preferredLayout)throw new Error(`preferredLayout must be either 'NCHW' or 'NHWC': ${t.preferredLayout}`);let r=Ae("preferredLayout",n),a=Ae(t.preferredLayout,n);0!==Oe()._OrtAddSessionConfigEntry(e,r,a)&&ze(`Can't set a session config entry: 'preferredLayout' - ${t.preferredLayout}.`)}}break;case"wasm":case"cpu":continue;default:throw new Error(`not supported execution provider: ${t}`)}let a=Ae(t,n);0!==Oe()._OrtAppendExecutionProvider(e,a)&&ze(`Can't append execution provider: ${t}.`)}},We=e=>{let t=Oe(),n=0,r=[],a=e||{};Pe(a);try{let e=De(a.graphOptimizationLevel??"all"),i=Me(a.executionMode??"sequential"),s="string"==typeof a.logId?Ae(a.logId,r):0,o=a.logSeverityLevel??2;if(!Number.isInteger(o)||o<0||o>4)throw new Error(`log serverity level is not valid: ${o}`);let u=a.logVerbosityLevel??0;if(!Number.isInteger(u)||u<0||u>4)throw new Error(`log verbosity level is not valid: ${u}`);let l="string"==typeof a.optimizedModelFilePath?Ae(a.optimizedModelFilePath,r):0;if(n=t._OrtCreateSessionOptions(e,!!a.enableCpuMemArena,!!a.enableMemPattern,i,!!a.enableProfiling,0,s,o,u,l),0===n&&ze("Can't create session options."),a.executionProviders&&Ne(n,a.executionProviders,r),a.freeDimensionOverrides)for(let[e,i]of Object.entries(a.freeDimensionOverrides)){if("string"!=typeof e)throw new Error(`free dimension override name must be a string: ${e}`);if("number"!=typeof i||!Number.isInteger(i)||i<0)throw new Error(`free dimension override value must be a non-negative integer: ${i}`);let a=Ae(e,r);0!==t._OrtAddFreeDimensionOverride(n,a,i)&&ze(`Can't set a free dimension override: ${e} - ${i}.`)}return void 0!==a.extra&&Re(a.extra,"",new WeakSet,((e,a)=>{let i=Ae(e,r),s=Ae(a,r);0!==t._OrtAddSessionConfigEntry(n,i,s)&&ze(`Can't set a session config entry: ${e} - ${a}.`)})),[n,r]}catch(e){throw 0!==n&&t._OrtReleaseSessionOptions(n),r.forEach((e=>t._free(e))),e}}})),$o=N((()=>{Ue=e=>{switch(e){case"int8":return 3;case"uint8":return 2;case"bool":return 9;case"int16":return 5;case"uint16":return 4;case"int32":return 6;case"uint32":return 12;case"float16":return 10;case"float32":return 1;case"float64":return 11;case"string":return 8;case"int64":return 7;case"uint64":return 13;default:throw new Error(`unsupported data type: ${e}`)}},Ve=e=>{switch(e){case 3:return"int8";case 2:return"uint8";case 9:return"bool";case 5:return"int16";case 4:return"uint16";case 6:return"int32";case 12:return"uint32";case 10:return"float16";case 1:return"float32";case 11:return"float64";case 8:return"string";case 7:return"int64";case 13:return"uint64";default:throw new Error(`unsupported data type: ${e}`)}},He=e=>[void 0,4,1,1,2,2,4,8,void 0,1,2,8,4,8,void 0,void 0,void 0][e],Le=e=>{switch(e){case"float16":case"uint16":return Uint16Array;case"float32":return Float32Array;case"uint8":case"bool":return Uint8Array;case"int8":return Int8Array;case"int16":return Int16Array;case"int32":return Int32Array;case"float64":return Float64Array;case"uint32":return Uint32Array;case"int64":return BigInt64Array;case"uint64":return BigUint64Array;default:throw new Error(`unsupported type: ${e}`)}},Ge=e=>{switch(e){case"verbose":return 0;case"info":return 1;case"warning":return 2;case"error":return 3;case"fatal":return 4;default:throw new Error(`unsupported logging level: ${e}`)}},Fe=e=>"float32"===e||"int32"===e||"int64"===e||"bool"===e||"float16"===e||"uint32"===e,qe=e=>{switch(e){case"none":return 0;case"cpu":return 1;case"cpu-pinned":return 2;case"texture":return 3;case"gpu-buffer":return 4;default:throw new Error(`unsupported data location: ${e}`)}}})),vo=N((()=>{je=async e=>{if("string"!=typeof e)return e instanceof Blob?new Uint8Array(await e.arrayBuffer()):e instanceof Uint8Array?e:new Uint8Array(e);if(!(typeof process<"u"&&process.versions&&process.versions.node)){let t=await fetch(e);if(!t.ok)throw new Error(`failed to load external data file: ${e}`);let n=t.headers.get("Content-Length"),r=n?parseInt(n,10):0;if(r<1073741824)return new Uint8Array(await t.arrayBuffer());{if(!t.body)throw new Error(`failed to load external data file: ${e}, no response body.`);let n,a=t.body.getReader();try{n=new ArrayBuffer(r)}catch(e){if(!(e instanceof RangeError))throw e;{let e=Math.ceil(r/65536);n=new WebAssembly.Memory({initial:e,maximum:e}).buffer}}let i=0;for(;;){let{done:e,value:t}=await a.read();if(e)break;let r=t.byteLength;new Uint8Array(n,i,r).set(t),i+=r}return new Uint8Array(n,0,r)}}try{return new Uint8Array(await(void 0)(e))}catch(t){if("ERR_FS_FILE_TOO_LARGE"===t.code){let t=(void 0)(e),n=[];for await(let e of t)n.push(e);return new Uint8Array(Buffer.concat(n))}throw t}}})),bo=N((()=>{$o(),Ke=["V","I","W","E","F"],Ye=(e,t)=>{console.log(`[${Ke[e]},${(new Date).toISOString()}]${t}`)},Qe=(e,t)=>{Ze=e,Xe=t},Je=(e,t)=>{let n=Ge(e);n>=Ge(Ze)&&Ye(n,"function"==typeof t?t():t)},et=(...e)=>{Xe&&Je(...e)}})),_o=N((()=>{$o(),tt=(e,t)=>new(Le(t))(e)})),xo=N((()=>{})),So=N((()=>{bo(),xo(),nt=e=>16*Math.ceil(e/16),rt=1,at=()=>rt++,it=async(e,t,n,r)=>{let a=nt(n),i=e.device.createBuffer({size:a,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ});try{let s=e.getCommandEncoder();e.endComputePass(),s.copyBufferToBuffer(t,0,i,0,a),e.flush(),await i.mapAsync(GPUMapMode.READ);let o=i.getMappedRange();if(r){let e=r();return e.set(new Uint8Array(o,0,n)),e}return new Uint8Array(o.slice(0,n))}finally{i.destroy()}},st=class{constructor(e){this.backend=e,this.storageCache=new Map,this.freeBuffers=new Map,this.freeUniformBuffers=new Map,this.buffersForUploadingPending=[],this.buffersPending=[],this.externalBuffers=new Map}upload(e,t){let n=t.buffer,r=t.byteOffset,a=t.byteLength,i=nt(a),s=this.storageCache.get(e);if(!s)throw new Error("gpu data for uploading does not exist");if(s.originalSize!==a)throw new Error(`inconsistent data size. gpu data size=${s.originalSize}, data size=${a}`);let o=this.backend.device.createBuffer({mappedAtCreation:!0,size:i,usage:GPUBufferUsage.MAP_WRITE|GPUBufferUsage.COPY_SRC}),u=o.getMappedRange();new Uint8Array(u).set(new Uint8Array(n,r,a)),o.unmap();let l=this.backend.getCommandEncoder();this.backend.endComputePass(),l.copyBufferToBuffer(o,0,s.gpuData.buffer,0,i),et("verbose",(()=>`[WebGPU] GpuDataManager.upload(id=${e})`)),this.buffersForUploadingPending.push(o)}memcpy(e,t){let n=this.storageCache.get(e);if(!n)throw new Error("source gpu data for memcpy does not exist");let r=this.storageCache.get(t);if(!r)throw new Error("destination gpu data for memcpy does not exist");if(n.originalSize!==r.originalSize)throw new Error("inconsistent source and destination gpu data size");let a=nt(n.originalSize),i=this.backend.getCommandEncoder();this.backend.endComputePass(),i.copyBufferToBuffer(n.gpuData.buffer,0,r.gpuData.buffer,0,a)}registerExternalBuffer(e,t,n){let r;if(n){if(r=this.externalBuffers.get(n),void 0===r)throw new Error("previous buffer is not registered");if(e===n)return et("verbose",(()=>`[WebGPU] GpuDataManager.registerExternalBuffer(size=${t}) => id=${r}, buffer is the same, skip.`)),r;this.externalBuffers.delete(n)}else r=at();return this.storageCache.set(r,{gpuData:{id:r,type:0,buffer:e},originalSize:t}),this.externalBuffers.set(e,r),et("verbose",(()=>`[WebGPU] GpuDataManager.registerExternalBuffer(size=${t}) => id=${r}, registered.`)),r}unregisterExternalBuffer(e){let t=this.externalBuffers.get(e);void 0!==t&&(this.storageCache.delete(t),this.externalBuffers.delete(e),et("verbose",(()=>`[WebGPU] GpuDataManager.unregisterExternalBuffer() => id=${t}`)))}create(e,t=GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST){let n,r=nt(e),a=(t&GPUBufferUsage.STORAGE)===GPUBufferUsage.STORAGE,i=(t&GPUBufferUsage.UNIFORM)===GPUBufferUsage.UNIFORM;if(a||i){let e=a?this.freeBuffers:this.freeUniformBuffers,i=e.get(r);i||(i=[],e.set(r,i)),n=i.length>0?i.pop():this.backend.device.createBuffer({size:r,usage:t})}else n=this.backend.device.createBuffer({size:r,usage:t});let s={id:at(),type:0,buffer:n};return this.storageCache.set(s.id,{gpuData:s,originalSize:e}),et("verbose",(()=>`[WebGPU] GpuDataManager.create(size=${e}) => id=${s.id}`)),s}get(e){return this.storageCache.get(e)?.gpuData}release(e){let t=this.storageCache.get(e);if(!t)throw new Error("releasing data does not exist");return et("verbose",(()=>`[WebGPU] GpuDataManager.release(id=${e}), gpuDataId=${t.gpuData.id}`)),this.storageCache.delete(e),this.buffersPending.push(t.gpuData.buffer),t.originalSize}async download(e,t){let n=this.storageCache.get(e);if(!n)throw new Error("data does not exist");await it(this.backend,n.gpuData.buffer,n.originalSize,t)}refreshPendingBuffers(){for(let e of this.buffersForUploadingPending)e.destroy();this.buffersForUploadingPending=[];for(let e of this.buffersPending)(e.usage&GPUBufferUsage.STORAGE)===GPUBufferUsage.STORAGE?this.freeBuffers.get(e.size).push(e):(e.usage&GPUBufferUsage.UNIFORM)===GPUBufferUsage.UNIFORM?this.freeUniformBuffers.get(e.size).push(e):e.destroy();this.buffersPending=[]}dispose(){this.freeBuffers.forEach((e=>{e.forEach((e=>{e.destroy()}))})),this.freeUniformBuffers.forEach((e=>{e.forEach((e=>{e.destroy()}))})),this.storageCache.forEach((e=>{e.gpuData.buffer.destroy()})),this.storageCache=new Map,this.freeBuffers=new Map,this.freeUniformBuffers=new Map}},ot=(...e)=>new st(...e)})),Eo=N((()=>{ut=class{constructor(e){Object.assign(this,e)}get cacheKey(){return this.key||(this.key=Object.getOwnPropertyNames(this).sort().map((e=>`${this[e]}`)).join(";")),this.key}},lt=e=>new ut(e)})),Io=N((()=>{dt=class{static calcMatMulShape(e,t){return e[1]!==t[0]?void 0:[e[0],t[1]]}},pt=class{static calcShape(e,t,n=!1){let r=e.length,a=t.length;if(0===r)return t;if(0===a)return e;let i=Math.max(e.length,t.length),s=new Array(i);if(n){if(r<2||a<2)return;let n=dt.calcMatMulShape([e[r-2],e[r-1]],[t[a-2],t[a-1]]);if(void 0===n)return;[s[i-2],s[i-1]]=n}for(let o=n?3:1;o<=i;o++){let n=r-o<0?1:e[r-o],u=a-o<0?1:t[a-o];if(n!==u&&n>1&&u>1)return;s[i-o]=Math.max(n,u)}return s}static isValidBroadcast(e,t){let n=e.length,r=t.length;if(n>r)return!1;for(let a=1;a<=n;a++)if(1!==e[n-a]&&e[n-a]!==t[r-a])return!1;return!0}},ct=class e{static size(t){return e.getSizeFromDimensionRange(t,0,t.length)}static sizeFromDimension(t,n){if(n<0||n>t.length)throw new Error(`invalid dimension of ${n} for sizeFromDimension as Tensor has ${t.length} dimensions.`);return e.getSizeFromDimensionRange(t,n,t.length)}static sizeToDimension(t,n){if(n<0||n>t.length)throw new Error(`invalid dimension of ${n} for sizeToDimension as Tensor has ${t.length} dimensions.`);return e.getSizeFromDimensionRange(t,0,n)}static getSizeFromDimensionRange(e,t,n){let r=1;for(let a=t;a=0;--r)n[r]=n[r+1]*e[r+1];return n}static normalizeAxis(e,t){if(e<-t&&e>=t)throw new Error("unsupported axis for this operation.");return e<0?e+t:e}static normalizeAxes(e,t){return e.map((n=>this.normalizeAxis(n,t??e.length)))}static sortBasedOnPerm(e,t){return t?t.map((t=>e[t])):e.slice().reverse()}static padShape(e,t){let n=e.length;return e.map(((e,r)=>e+t[r]+t[r+n]))}static areEqual(e,t){return e.length===t.length&&e.every(((e,n)=>e===t[n]))}},ft=class e{static adjustPoolAttributes(e,t,n,r,a,i){if(!e&&n.length!==t.length-2)throw new Error("length of specified kernel shapes should be 2 less than length of input dimensions");if(e)for(let e=0;e=n.length?n.push(t[e+2]):n[e]=t[e+2];for(let e=0;e=n[e]||i[e+n.length]>=n[e])throw new Error("pads should be smaller than kernel")}}static adjustPadsBasedOnAutoPad(t,n,r,a,i,s,o){if(o){if(i.length!==2*(t.length-2))throw new Error("length of pads should be twice the length of data dimensions");if(n.length!==t.length-2)throw new Error("length of strides should be the length of data dimensions");if(a.length!==t.length-2)throw new Error("length of kernel shapes should be the length of data dimensions");for(let u=0;u{$o(),Io(),64,yt=(e,t)=>{if(3===t)throw new Error("vec3 has same alignment as vec4, use vec4 instead");switch(e){case 10:return t>1?`vec${t}`:"f16";case 1:return t>1?`vec${t}`:"f32";case 6:return t>1?`vec${t}`:"i32";case 12:return t>1?`vec${t}`:"u32";case 7:if(t>1)throw new Error("currently not supported vecX of uint64 yet");return["vec2","i32"];case 13:if(t>1)throw new Error("currently not supported vecX of uint64 yet");return["vec2","u32"];case 9:if(4!==t)throw new Error("bool must be vec4");return["u32","vec4"];default:throw new Error(`Unknown data type: ${e}`)}},wt=(e,t=1)=>{let n=yt(e,t);return"string"==typeof n?n:n[0]},$t=(e,t=1)=>{let n=yt(e,t);return"string"==typeof n?n:n[1]},vt=e=>0===e.length?[]:[{type:"uint32",data:e},{type:"uint32",data:ct.computeStrides(e)}],bt=e=>e%4==0?4:e%2==0?2:1,_t=(e="f32",t,n="0")=>t&&1!==t?`vec${t}<${e}>(${n})`:`${e}(${n})`,xt=(e,t,n)=>"f32"===e?n:1===t?`f32(${n})`:`vec${t}f(${n})`,St=(e,t)=>4===t?`(${e}.x + ${e}.y + ${e}.z + ${e}.w)`:2===t?`(${e}.x + ${e}.y)`:3===t?`(${e}.x + ${e}.y + ${e}.z)`:e,Et=(e,t,n)=>e.startsWith("uniforms.")&&n>4?"string"==typeof t?`${e}[(${t}) / 4][(${t}) % 4]`:`${e}[${Math.floor(t/4)}][${t%4}]`:n>1?`${e}[${t}]`:e,It=(e,t,n,r,a)=>{let i="number"==typeof n,s=i?n:n.length,o=[...new Array(s).keys()],u=s<2?"u32":s<=4?`vec${s}`:`array`,l=yt(t,a),d="string"==typeof l?l:l[1],p="string"==typeof l?l:l[0],c={indices:u,value:d,storage:p,tensor:t},f=e=>"string"==typeof e?e:`${e}u`,h={offsetToIndices:!1,indicesToOffset:!1,broadcastedIndicesToOffset:!1,set:!1,setByIndices:!1,get:!1,getByIndices:!1},m=i?"uniforms.":"",g=`${m}${e}_shape`,y=`${m}${e}_strides`,w="";for(let e=0;e ${c.indices} {\n var indices: ${c.indices};\n var current = offset;\n ${w}\n return indices;\n }`,v=[];if(s>=2)for(let e=s-1;e>=0;e--)v.push(`${Et(y,e,s)} * (indices[${e}])`);let b=s<2?"":`\n fn i2o_${e}(indices: ${c.indices}) -> u32 {\n return ${v.join("+")};\n }`,_=(...e)=>0===s?"0u":`${c.indices}(${e.map(f).join(",")})`,x=(e,t)=>s<2?`${e}`:`${Et(e,t,s)}`,S={},E=(t,n)=>(()=>{if(c.storage===c.value)return`${e}[${t}]=${n};`;if("vec2"===c.storage&&"i32"===c.value)return`${e}[${t}]=vec2(u32(${n}), select(0u, 0xFFFFFFFFu, ${n} < 0));`;if("vec2"===c.storage&&"u32"===c.value)return`${e}[${t}]=vec2(u32(${n}), 0u);`;if("u32"===c.storage&&"vec4"===c.value)return`${e}[${t}]=dot(vec4(0x1, 0x100, 0x10000, 0x1000000), vec4(${n}));`;throw new Error(`not supported combination of storage type ${c.storage} and value type ${c.value} yet`)})(),I=t=>(()=>{if(c.storage===c.value)return`${e}[${t}]`;if("vec2"===c.storage&&"i32"===c.value)return`i32(${e}[${t}].x)`;if("vec2"===c.storage&&"u32"===c.value)return`u32(${e}[${t}].x)`;if("u32"===c.storage&&"vec4"===c.value)return`vec4(bool(${e}[${t}] & 0xFFu), bool(${e}[${t}] & 0xFF00u), bool(${e}[${t}] & 0xFF0000u), bool(${e}[${t}] & 0xFF000000u))`;throw new Error(`not supported combination of storage type ${c.storage} and value type ${c.value} yet`)})(),C=s<2?"":`\n fn get_${e}ByIndices(indices: ${c.indices}) -> ${d} {\n return ${I(`i2o_${e}(indices)`)};\n }`,T=s<2?"":(()=>{let t=o.map((e=>`d${e}: u32`)).join(", "),n=o.map((e=>`d${e}`)).join(", ");return`\n fn get_${e}(${t}) -> ${d} {\n return get_${e}ByIndices(${_(n)});\n }`})(),k=s<2?"":`\n fn set_${e}ByIndices(indices: ${c.indices}, value: ${d}) {\n ${E(`i2o_${e}(indices)`,"value")}\n }`,O=s<2?"":(()=>{let t=o.map((e=>`d${e}: u32`)).join(", "),n=o.map((e=>`d${e}`)).join(", ");return`\n fn set_${e}(${t}, value: ${d}) {\n set_${e}ByIndices(${_(n)}, value);\n }`})();return{impl:()=>{let e=[],t=!1;return h.offsetToIndices&&(e.push($),t=!0),h.indicesToOffset&&(e.push(b),t=!0),h.broadcastedIndicesToOffset&&(Object.values(S).forEach((t=>e.push(t))),t=!0),h.set&&(e.push(O),t=!0),h.setByIndices&&(e.push(k),t=!0),h.get&&(e.push(T),t=!0),h.getByIndices&&(e.push(C),t=!0),!i&&t&&e.unshift(`const ${g} = ${c.indices}(${n.join(",")});`,`const ${y} = ${c.indices}(${ct.computeStrides(n).join(",")});`),e.join("\n")},type:c,offsetToIndices:t=>(h.offsetToIndices=!0,s<2?t:`o2i_${e}(${t})`),indicesToOffset:t=>(h.indicesToOffset=!0,s<2?t:`i2o_${e}(${t})`),broadcastedIndicesToOffset:(t,n)=>{h.broadcastedIndicesToOffset=!0;let r=`${n.name}broadcastedIndicesTo${e}Offset`;if(r in S)return`${r}(${t})`;let a=[];for(let e=s-1;e>=0;e--){let t=n.indicesGet("outputIndices",e+n.rank-s);a.push(`${x(y,e)} * (${t} % ${x(g,e)})`)}return S[r]=`fn ${r}(outputIndices: ${n.type.indices}) -> u32 {\n return ${a.length>0?a.join("+"):"0u"};\n }`,`${r}(${t})`},indices:_,indicesGet:x,indicesSet:(e,t,n)=>s<2?`${e}=${n};`:`${Et(e,t,s)}=${n};`,set:(...t)=>{if(t.length!==s+1)throw new Error(`indices length must be ${s}`);let n=t[s];if("string"!=typeof n)throw new Error("value must be string");let r=t.slice(0,s).map(f).join(",");return 0===s?E("0u",n):1===s?E(r[0],n):(h.set=!0,h.setByIndices=!0,h.indicesToOffset=!0,`set_${e}(${r}, ${n})`)},setByOffset:E,setByIndices:(t,n)=>s<2?E(t,n):(h.setByIndices=!0,h.indicesToOffset=!0,`set_${e}ByIndices(${t}, ${n});`),get:(...t)=>{if(t.length!==s)throw new Error(`indices length must be ${s}`);let n=t.map(f).join(",");return 0===s?I("0u"):1===s?I(n[0]):(h.get=!0,h.getByIndices=!0,h.indicesToOffset=!0,`get_${e}(${n})`)},getByOffset:I,getByIndices:t=>s<2?I(t):(h.getByIndices=!0,h.indicesToOffset=!0,`get_${e}ByIndices(${t})`),usage:r,name:e,strides:y,shape:g,rank:s}},Ct=(e,t,n,r=1)=>It(e,t,n,"input",r),Tt=(e,t,n,r=1)=>It(e,t,n,"output",r),kt=(e,t,n,r=1)=>It(e,t,n,"internal",r),Ot=class{constructor(e){this.normalizedDispatchGroup=e,this.internalVariables=[],this.variables=[],this.uniforms=[],this.variableIndex=0}guardAgainstOutOfBoundsWorkgroupSizes(e){return`if (global_idx >= ${"number"==typeof e?`${e}u`:e}) { return; }`}mainStart(e=64){let t="number"==typeof e?e:e[0],n="number"==typeof e?1:e[1],r="number"==typeof e?1:e[2],a=1===this.normalizedDispatchGroup[1]&&1===this.normalizedDispatchGroup[2];return`@compute @workgroup_size(${t}, ${n}, ${r})\n fn main(${a?"@builtin(global_invocation_id) global_id : vec3,\n @builtin(workgroup_id) workgroup_id : vec3,\n @builtin(local_invocation_id) local_id : vec3":"@builtin(local_invocation_id) local_id : vec3,\n @builtin(local_invocation_index) local_idx : u32,\n @builtin(workgroup_id) workgroup_id : vec3,\n @builtin(num_workgroups) num_workgroups : vec3"}) {\n ${a?"let global_idx = global_id.x; let local_idx = local_id.x;":`let global_idx = (workgroup_id.z * num_workgroups[0] * num_workgroups[1] +\n workgroup_id.y * num_workgroups[0] + workgroup_id.x) * ${t*n*r}u + local_idx;`}\n `}appendVariableUniforms(e){0!==e.rank&&(e.shape.startsWith("uniforms.")&&this.uniforms.push({name:e.shape.replace("uniforms.",""),type:"u32",length:e.rank}),e.strides.startsWith("uniforms.")&&this.uniforms.push({name:e.strides.replace("uniforms.",""),type:"u32",length:e.rank}))}declareVariable(e,t){if("internal"===e.usage)throw new Error("cannot use internal variable with declareVariable(). use registerInternalVariables() instead.");this.variables.push(e),this.appendVariableUniforms(e);let n="input"===e.usage?"read":"read_write",r=e.type.storage;return`@group(0) @binding(${t}) var ${e.name}: array<${r}>;`}declareVariables(...e){return e.map((e=>this.declareVariable(e,this.variableIndex++))).join("\n")}registerInternalVariable(e){if("internal"!==e.usage)throw new Error("cannot use input or output variable with registerInternalVariable(). use declareVariables() instead.");this.internalVariables.push(e),this.appendVariableUniforms(e)}registerInternalVariables(...e){return e.forEach((e=>this.registerInternalVariable(e))),this}registerUniform(e,t,n=1){return this.uniforms.push({name:e,type:t,length:n}),this}registerUniforms(e){return this.uniforms=this.uniforms.concat(e),this}uniformDeclaration(){if(0===this.uniforms.length)return"";let e=[];for(let{name:t,type:n,length:r}of this.uniforms)if(r&&r>4)e.push(`${t}:array, ${Math.ceil(r/4)}>`);else{let a=null==r||1===r?n:`vec${r}<${n}>`;e.push(`${t}:${a}`)}return`\n struct Uniforms { ${e.join(", ")} };\n @group(0) @binding(${this.variableIndex}) var uniforms: Uniforms;`}get additionalImplementations(){return this.uniformDeclaration()+this.variables.map((e=>e.impl())).join("\n")+this.internalVariables.map((e=>e.impl())).join("\n")}},At=e=>new Ot(e),Rt=(e,t)=>{let n=e.length,r=[];for(let a=0;a1&&1===s&&r.unshift(i)}return r},zt=e=>!0})),To=N((()=>{Io(),Eo(),Co(),Bt=e=>{if(!e||1!==e.length)throw new Error("Transpose requires 1 input.")},Dt=(e,t)=>t&&t.length!==e?[...new Array(e).keys()].reverse():t,Mt=(e,t)=>ct.sortBasedOnPerm(e,Dt(e.length,t)),Pt=(e,t,n,r)=>{let a=[];a.push(`fn perm(i: ${r.type.indices}) -> ${n.type.indices} {\n var a: ${n.type.indices};`);for(let r=0;r{let n=e.dataType,r=e.dims.length,a=Dt(r,t),i=zt(r),s=Mt(e.dims,a),o=i?s.length:s,u=i?r:e.dims,l=Tt("output",n,o),d=Ct("a",n,u);return{name:"Transpose",shaderCache:{hint:`${t}`,inputDependencies:i?["rank"]:["dims"]},getRunData:e=>{let t=ct.size(s);return{outputs:[{dims:s,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(t/64)},programUniforms:i?[{type:"uint32",data:t},...vt(e[0].dims),...vt(s)]:[{type:"uint32",data:t}]}},getShaderSource:e=>`\n ${e.registerUniform("output_size","u32").declareVariables(d,l)}\n\n ${Pt(a,r,d,l)}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}\n\n let indices = ${l.offsetToIndices("global_idx")};\n let aIndices = perm(indices);\n\n ${l.setByOffset("global_idx",d.getByIndices("aIndices"))}\n }`}},Wt=(e,t)=>{Bt(e.inputs),e.compute(Nt(e.inputs[0],t.perm))},Ut=e=>lt({perm:e.perm})})),ko=N((()=>{Io(),Co(),Oo(),To(),Vt={max:"select(bestValue, candidate, candidate > bestValue)",min:"select(bestValue, candidate, candidate < bestValue)",mean:"bestValue + candidate",sum:"bestValue + candidate",prod:"bestValue * candidate",sumSquare:"bestValue + candidate * candidate",logSumExp:"bestValue + exp(candidate)",l1:"bestValue + abs(candidate)",l2:"bestValue + candidate * candidate",logSum:"bestValue + candidate"},Ht={max:"select(bestValue, candidate, candidate > bestValue)",min:"select(bestValue, candidate, candidate < bestValue)",mean:"bestValue + candidate",sum:"bestValue + candidate",prod:"bestValue * candidate",sumSquare:"bestValue + candidate",logSumExp:"bestValue + candidate",l1:"bestValue + candidate",l2:"bestValue + candidate",logSum:"bestValue + candidate"},Lt={max:"_A[offset]",min:"_A[offset]",mean:"0",sum:"0",prod:"1",sumSquare:"0",logSumExp:"0",l1:"0",l2:"0",logSum:"0"},Gt={max:"bestValue",min:"bestValue",sum:"bestValue",prod:"bestValue",sumSquare:"bestValue",logSumExp:"log(bestValue)",l1:"bestValue",l2:"sqrt(bestValue)",logSum:"log(bestValue)"},Ft=(e,t)=>{let n=[];for(let r=t-e;r{let n=[],r=e.length;for(let a=0;ae[t]))]},jt=(e,t)=>{let n=e.length+t.length,r=[],a=0;for(let i=0;i{for(let n=0;n{let n=[];if(!Kt(e,t)){for(let r=0;rn.push(e)))}return n},Zt=(e,t,n,r,a,i,s)=>{let o=n[0].dims,u=ct.size(i),l=ct.size(s),d=Ct("_A",n[0].dataType,o),p=Tt("output",a,i),c=`\n var aBestValues : array<${p.type.storage}, 32>;\n `;return{name:e,shaderCache:t,getShaderSource:e=>`\n ${e.registerUniform("reduceSize","u32").declareVariables(d,p)}\n ${c}\n fn DIV_CEIL(a : u32, b : u32) -> u32 {\n return ((a - 1u) / b + 1u);\n }\n ${e.mainStart(32)}\n\n let outputIndex = global_idx / 32;\n let offset = outputIndex * uniforms.reduceSize;\n\n var bestValue = ${p.type.storage}(${Lt[r]});\n let Length = uniforms.reduceSize;\n for (var k = local_idx; k < Length; k = k + 32) {\n let candidate = ${p.type.storage}(${d.getByOffset("offset + k")});\n bestValue = ${Vt[r]};\n }\n aBestValues[local_idx] = bestValue;\n workgroupBarrier();\n\n var reduceSize = min(Length, 32u);\n for (var currentSize = reduceSize / 2u; reduceSize > 1u;\n currentSize = reduceSize / 2u) {\n let interval = DIV_CEIL(reduceSize, 2u);\n if (local_idx < currentSize) {\n let candidate = aBestValues[local_idx + interval];\n bestValue = ${Ht[r]};\n aBestValues[local_idx] = bestValue;\n }\n reduceSize = interval;\n workgroupBarrier();\n }\n\n if (local_idx == 0u) {\n ${p.setByOffset("outputIndex",""+("mean"===r?`bestValue / ${p.type.storage}(uniforms.reduceSize)`:`${Gt[r]}`))};\n }\n }`,getRunData:()=>({outputs:[{dims:i,dataType:a}],dispatchGroup:{x:u},programUniforms:[{type:"uint32",data:l}]})}},Xt=(e,t,n,r)=>{let a=1===e.inputs.length?n:cn(e.inputs,n),i=a.axes;0===i.length&&!a.noopWithEmptyAxes&&(i=e.inputs[0].dims.map(((e,t)=>t)));let s=ct.normalizeAxes(i,e.inputs[0].dims.length),o=s,u=e.inputs[0],l=Yt(o,e.inputs[0].dims.length);l.length>0&&(u=e.compute(Nt(e.inputs[0],l),{inputs:[0],outputs:[-1]})[0],o=Ft(o.length,u.dims.length));let[d,p]=qt(u.dims,o),c=d;a.keepDims&&(c=jt(d,s)),e.compute(Zt(t,{hint:a.cacheKey,inputDependencies:["type"]},[u],r,e.inputs[0].dataType,c,p),{inputs:[u]})},Qt=(e,t)=>{Xt(e,"ReduceMeanShared",t,"mean")},Jt=(e,t)=>{Xt(e,"ReduceL1Shared",t,"l1")},en=(e,t)=>{Xt(e,"ReduceL2Shared",t,"l2")},tn=(e,t)=>{Xt(e,"ReduceLogSumExpShared",t,"logSumExp")},nn=(e,t)=>{Xt(e,"ReduceMaxShared",t,"max")},rn=(e,t)=>{Xt(e,"ReduceMinShared",t,"min")},an=(e,t)=>{Xt(e,"ReduceProdShared",t,"prod")},sn=(e,t)=>{Xt(e,"ReduceSumShared",t,"sum")},on=(e,t)=>{Xt(e,"ReduceSumSquareShared",t,"sumSquare")},un=(e,t)=>{Xt(e,"ReduceLogSumShared",t,"logSum")}})),Oo=N((()=>{Io(),Eo(),Co(),ko(),ln=e=>{if(!e||0===e.length||e.length>2)throw new Error("Reduce op requires 1 or 2 inputs.");if(2===e.length&&1!==e[1].dims.length)throw new Error("Invalid axes input dims.")},dn=e=>["","",`var value = ${e.getByIndices("input_indices")};`,""],pn=(e,t,n,r,a,i,s=!1,o=!1)=>{let u=[],l=n[0].dims,d=l.length,p=ct.normalizeAxes(a,d),c=!o&&0===p.length;l.forEach(((e,t)=>{c||p.indexOf(t)>=0?s&&u.push(1):u.push(e)}));let f=u.length,h=ct.size(u);return{name:e,shaderCache:t,getShaderSource:e=>{let t=[],a=Ct("_A",n[0].dataType,d),o=Tt("output",i,f),u=r(a,o,p),h=u[2];for(let e=0,n=0;e=0?(s&&n++,h=`for(var j${e}: u32 = 0; j${e} < ${l[e]}; j${e}++) {\n ${u[2].includes("last_index")?`let last_index = j${e};`:""}\n ${a.indicesSet("input_indices",e,`j${e}`)}\n ${h}\n }`):(t.push(`${a.indicesSet("input_indices",e,o.indicesGet("output_indices",n))};`),n++);return`\n\n ${e.registerUniform("output_size","u32").declareVariables(a,o)}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}\n var input_indices: ${a.type.indices};\n let output_indices = ${o.offsetToIndices("global_idx")};\n\n ${t.join("\n")}\n ${u[0]} // init ops for reduce max/min\n ${u[1]}\n ${h}\n ${u[3]}\n ${4===u.length?o.setByOffset("global_idx","value"):u.slice(4).join("\n")}\n }`},getRunData:()=>({outputs:[{dims:u,dataType:i}],dispatchGroup:{x:Math.ceil(h/64)},programUniforms:[{type:"uint32",data:h},...vt(l),...vt(u)]})}},cn=(e,t)=>{let n=[];return e[1].dims[0]>0&&e[1].getBigInt64Array().forEach((e=>n.push(Number(e)))),lt({axes:n,keepDims:t.keepDims,noopWithEmptyAxes:t.noopWithEmptyAxes})},fn=(e,t,n,r)=>{let a=e.inputs,i=1===a.length?n:cn(a,n);e.compute(pn(t,{hint:i.cacheKey,inputDependencies:["rank"]},[a[0]],i.noopWithEmptyAxes&&0===i.axes.length?dn:r,i.axes,a[0].dataType,i.keepDims,i.noopWithEmptyAxes),{inputs:[0]})},hn=(e,t)=>{ln(e.inputs),fn(e,"ReduceLogSum",t,((e,t)=>[`var value = ${t.type.storage}(0);`,"",`value += ${e.getByIndices("input_indices")};`,"value = log(value);"]))},mn=(e,t)=>{ln(e.inputs),fn(e,"ReduceL1",t,((e,t)=>[`var value = ${t.type.storage}(0);`,"",`value += abs(${e.getByIndices("input_indices")});`,""]))},gn=(e,t)=>{ln(e.inputs),fn(e,"ReduceL2",t,((e,t)=>[`var t = ${t.type.value}(0); var value = ${t.type.value}(0);`,"",`t = ${e.getByIndices("input_indices")}; value += (t * t);`,"value = sqrt(value);"]))},yn=(e,t)=>{ln(e.inputs),fn(e,"ReduceLogSumExp",t,((e,t)=>[`var value = ${t.type.storage}(0);`,"",`value += exp(${e.getByIndices("input_indices")});`,"value = log(value);"]))},wn=(e,t)=>{ln(e.inputs),fn(e,"ReduceMax",t,((e,t,n)=>{let r=[];for(let t=0;t=0||0===n.length)&&r.push(e.indicesSet("input_indices",t,0));return[`${r.join("\n")}`,`var value = ${e.getByIndices("input_indices")};`,`value = max(value, ${e.getByIndices("input_indices")});`,""]}))},$n=(e,t)=>{ln(e.inputs),fn(e,"ReduceMean",t,((t,n,r)=>{let a=1;for(let n=0;n=0||0===r.length)&&(a*=e.inputs[0].dims[n]);return["var sum = f32(0);","",`sum += f32(${t.getByIndices("input_indices")});`,`let value = ${n.type.value}(sum / ${a});`]}))},vn=(e,t)=>{ln(e.inputs),fn(e,"ReduceMin",t,((e,t,n)=>{let r=[];for(let t=0;t=0||0===n.length)&&r.push(`input_indices[${t}] = 0;`);return[`${r.join("\n")}`,`var value = ${e.getByIndices("input_indices")};`,`value = min(value, ${e.getByIndices("input_indices")});`,""]}))},bn=(e,t)=>{ln(e.inputs),fn(e,"ReduceProd",t,((e,t)=>[`var value = ${t.type.storage}(1);`,"",`value *= ${e.getByIndices("input_indices")};`,""]))},_n=(e,t)=>{ln(e.inputs),fn(e,"ReduceSum",t,((e,t)=>[`var value = ${t.type.storage}(0);`,"",`value += ${e.getByIndices("input_indices")};`,""]))},xn=(e,t)=>{ln(e.inputs),fn(e,"ReduceSumSquare",t,((e,t)=>[`var t = ${t.type.value}(0); var value = ${t.type.value}(0);`,"",`t = ${e.getByIndices("input_indices")}; value += t * t;`,""]))},Sn=(e,t,n)=>{if(0===t.length)return n;let r=1,a=1;for(let n=0;n1024},En=(e,t)=>{Sn(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?$n(e,t):Qt(e,t)},In=(e,t)=>{Sn(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?mn(e,t):Jt(e,t)},Cn=(e,t)=>{Sn(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?gn(e,t):en(e,t)},Tn=(e,t)=>{Sn(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?yn(e,t):tn(e,t)},kn=(e,t)=>{Sn(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?wn(e,t):nn(e,t)},On=(e,t)=>{Sn(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?vn(e,t):rn(e,t)},An=(e,t)=>{Sn(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?bn(e,t):an(e,t)},Rn=(e,t)=>{Sn(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?_n(e,t):sn(e,t)},zn=(e,t)=>{Sn(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?xn(e,t):on(e,t)},Bn=(e,t)=>{Sn(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?hn(e,t):un(e,t)}})),Ao=N((()=>{$o(),Eo(),Oo(),Dn=e=>{if(!e||0===e.length||e.length>2)throw new Error("ArgMinMaxOp op requires 1 or 2 inputs.");if(1!==e[0].dataType)throw new Error("Invalid input type.")},Mn=(e,t)=>{Dn(e.inputs);e.compute(pn("ArgMin",{hint:t.cacheKey,inputDependencies:["rank"]},[e.inputs[0]],((e,n,r)=>{let a=[];for(let t=0;t=0||0===r.length)&&a.push(`input_indices[${t}] = 0;`);return[`${a.join("\n")}`,`var value = ${e.getByIndices("input_indices")};\nvar best_index : i32 = 0;`,`if (${e.getByIndices("input_indices")} ${t.selectLastIndex>0?"<=":"<"} value) {\n value = ${e.getByIndices("input_indices")};\n best_index = i32(last_index);\n }`,"",n.setByOffset("global_idx","best_index")]}),[t.axis],7,t.keepDims),{inputs:[0]})},Pn=(e,t)=>{Dn(e.inputs);e.compute(pn("argMax",{hint:t.cacheKey,inputDependencies:["rank"]},[e.inputs[0]],((e,n,r)=>{let a=[];for(let t=0;t=0||0===r.length)&&a.push(`input_indices[${t}] = 0;`);return[`${a.join("\n")}`,`var value = ${e.getByIndices("input_indices")};\nvar best_index : i32 = 0;`,`if (${e.getByIndices("input_indices")} ${t.selectLastIndex>0?">=":">"} value) {\n value = ${e.getByIndices("input_indices")};\n best_index = i32(last_index);\n }`,"",n.setByOffset("global_idx","best_index")]}),[t.axis],7,t.keepDims),{inputs:[0]})},Nn=e=>lt(e)})),Ro=N((()=>{$o(),xo(),Co(),Wn=(e,t)=>{let n=e[0],r=e[1],a=e[2],i=e[3],s=e[4],o=e[5];if(s&&o)throw new Error("Attention cannot have both past and relative_position_bias");if(3!==n.dims.length)throw new Error('Input "input" must have 3 dimensions');let u=n.dims[0],l=n.dims[1],d=n.dims[2];if(1!==a.dims.length)throw new Error('Input "bias" is expected to have 1 dimensions');if(2!==r.dims.length)throw new Error('Input "weights" is expected to have 2 dimensions');if(r.dims[0]!==d)throw new Error("Input 1 dimension 0 should have same length as dimension 2 of input 0");if(a.dims[0]!==r.dims[1])throw new Error('Input "bias" dimension 0 should have same length as dimension 1 of input "weights"');let p=a.dims[0]/3,c=p,f=c;if(t.qkvHiddenSizes.length>0){if(3!==t.qkvHiddenSizes.length)throw new Error("qkv_hidden_sizes attribute should have 3 elements");for(let e of t.qkvHiddenSizes)if(e%t.numHeads!=0)throw new Error("qkv_hidden_sizes should be divisible by num_heads");p=t.qkvHiddenSizes[0],c=t.qkvHiddenSizes[1],f=t.qkvHiddenSizes[2]}let h=l;if(p!==c)throw new Error("qkv_hidden_sizes first element should be same as the second");if(a.dims[0]!==p+c+f)throw new Error('Input "bias" dimension 0 should have same length as sum of Q/K/V hidden sizes');let m=0;if(s){if(c!==f)throw new Error('Input "past" expect k_hidden_size == v_hidden_size');if(5!==s.dims.length)throw new Error('Input "past" must have 5 dimensions');if(2!==s.dims[0])throw new Error('Input "past" first dimension must be 2');if(s.dims[1]!==u)throw new Error('Input "past" second dimension must be batch_size');if(s.dims[2]!==t.numHeads)throw new Error('Input "past" third dimension must be num_heads');if(s.dims[4]!==c/t.numHeads)throw new Error('Input "past" fifth dimension must be k_hidden_size / num_heads');t.pastPresentShareBuffer||(m=s.dims[3])}let g=h+m;if(i)throw new Error("Mask not supported");if(s)throw new Error("past is not supported");if(o)throw new Error("relativePositionBias is not supported");return{batchSize:u,sequenceLength:l,pastSequenceLength:m,kvSequenceLength:h,totalSequenceLength:g,maxSequenceLength:-1,inputHiddenSize:d,hiddenSize:p,vHiddenSize:f,headSize:Math.floor(p/t.numHeads),vHeadSize:Math.floor(f/t.numHeads),numHeads:t.numHeads,isUnidirectional:!1,pastPresentShareBuffer:!1,maskFilterValue:t.maskFilterValue,maskType:0,scale:t.scale,broadcastResPosBias:!1,passPastInKv:!1,qkvFormat:1}},Un=(e,t,n,r)=>{let a=bt(r),i=64,s=r/a;s{let n=Tt("x",t.dataType,t.dims,a),r="thread_max_vector";2===a?r="max(thread_max_vector.x, thread_max_vector.y)":4===a&&(r="max(max(thread_max_vector.x, thread_max_vector.y), max(thread_max_vector.z, thread_max_vector.w))");let s=$t(t.dataType),o=[{name:"d_inv",type:s},{name:"d_comp",type:"u32"},{name:"elements_per_wg",type:"u32"}];return`\n var wgMax: array;\n var wgSum: array;\n ${e.registerUniforms(o).declareVariables(n)}\n ${e.mainStart([i,1,1])}\n let localOffset = local_idx * uniforms.elements_per_wg;\n let offset: u32 = workgroup_id.x * uniforms.d_comp + localOffset;\n\n var thread_max_vector = ${_t("f32",a,"-3.402823e+38f")};\n for (var i: u32 = 0; i < uniforms.elements_per_wg && i + localOffset < uniforms.d_comp; i++) {\n thread_max_vector = max(${xt(s,a,"x[offset + i]")}, thread_max_vector);\n }\n wgMax[local_idx] = ${r};\n workgroupBarrier();\n\n var maxValue = -3.402823e+38f;\n for (var i = 0u; i < ${i}; i++) {\n maxValue = max(wgMax[i], maxValue);\n }\n\n var sumVector = ${_t("f32",a,"0")};\n for (var i: u32 = 0; i < uniforms.elements_per_wg && i + localOffset < uniforms.d_comp; i++) {\n sumVector += exp(${xt(s,a,"x[offset + i]")} - maxValue);\n }\n wgSum[local_idx] = ${St("sumVector",a)};\n workgroupBarrier();\n\n var sum: f32 = 0;\n for (var i = 0u; i < ${i}; i++) {\n sum += wgSum[i];\n }\n\n if (sum == 0) {\n for (var i: u32 = 0; i < uniforms.elements_per_wg && i + localOffset < uniforms.d_comp; i++) {\n x[offset + i] = ${_t("f32",a,"uniforms.d_inv")};\n }\n } else {\n for (var i: u32 = 0; i < uniforms.elements_per_wg && i + localOffset < uniforms.d_comp; i++) {\n let f32input = ${xt(s,a,"x[offset + i]")};\n x[offset + i] = ${n.type.value}(exp(f32input - maxValue) / sum);\n }\n }\n }`},getRunData:()=>({outputs:[],dispatchGroup:{x:n},programUniforms:u})},{inputs:[t],outputs:[]})},Vn=(e,t,n,r,a,i)=>{let s=[a.batchSize,a.numHeads,a.sequenceLength,a.kvSequenceLength+a.pastSequenceLength],o=0===i.scale?1/Math.sqrt(a.headSize):i.scale,u=bt(a.headSize),l=a.headSize/u,d=12,p={x:Math.ceil(a.totalSequenceLength/d),y:Math.ceil(a.sequenceLength/d),z:a.batchSize*a.numHeads},c=Ve(t.dataType),f=[{type:"uint32",data:a.sequenceLength},{type:"uint32",data:l},{type:"uint32",data:a.totalSequenceLength},{type:"uint32",data:a.kvSequenceLength},{type:c,data:o}],h=[t,n],m=e.compute({name:"AttentionProbs",shaderCache:{hint:`${u}`,inputDependencies:["type","type"]},getRunData:()=>({outputs:[{dims:s,dataType:t.dataType,gpuDataType:0}],dispatchGroup:p,programUniforms:f}),getShaderSource:e=>{let r=Ct("q",t.dataType,t.dims,u),a=Ct("key",n.dataType,n.dims,u),i=Tt("output",t.dataType,s),o=wt(t.dataType),l=[{name:"M",type:"u32"},{name:"K",type:"u32"},{name:"N",type:"u32"},{name:"kv_sequence_length",type:"u32"},{name:"alpha",type:o}];return`\n const beta: ${o} = 1.0;\n const TILE_SIZE = 12u;\n\n var tileQ: array<${r.type.storage}, 144>;\n var tileK: array<${r.type.storage}, 144>;\n ${e.registerUniforms(l).declareVariables(r,a,i)}\n ${e.mainStart([d,d,1])}\n // x holds the N and y holds the M\n let headIdx = workgroup_id.z;\n let m = workgroup_id.y * TILE_SIZE;\n let n = workgroup_id.x * TILE_SIZE;\n let lm = m + local_id.y;\n let ln = n + local_id.x;\n\n let qOffset = uniforms.M * uniforms.K * headIdx + m * uniforms.K;\n let kOffset = uniforms.kv_sequence_length * uniforms.K * headIdx + n * uniforms.K;\n\n var value = ${_t(o,u)};\n for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {\n if (m + local_id.y < uniforms.M && w + local_id.x < uniforms.K) {\n tileQ[TILE_SIZE * local_id.y + local_id.x] = q[qOffset + local_id.y * uniforms.K + w + local_id.x];\n }\n if (n + local_id.y < uniforms.N && w + local_id.x < uniforms.K) {\n tileK[TILE_SIZE * local_id.y + local_id.x] = key[kOffset + local_id.y * uniforms.K + w + local_id.x];\n }\n workgroupBarrier();\n\n for (var k: u32 = 0u; k{let a=[r.batchSize,r.sequenceLength,r.vHiddenSize],i=12,s={x:Math.ceil(r.vHeadSize/i),y:Math.ceil(r.sequenceLength/i),z:r.batchSize*r.numHeads},o=[{type:"uint32",data:r.sequenceLength},{type:"uint32",data:r.totalSequenceLength},{type:"uint32",data:r.vHeadSize},{type:"uint32",data:r.numHeads},{type:"uint32",data:r.vHiddenSize}];return e.compute({name:"AttentionScore",shaderCache:{inputDependencies:["type","type"]},getRunData:()=>({outputs:[{dims:a,dataType:t.dataType,gpuDataType:0}],dispatchGroup:s,programUniforms:o}),getShaderSource:e=>{let r=Ct("probs",t.dataType,t.dims),s=Ct("v",n.dataType,n.dims),o=Tt("output",t.dataType,a);return`\n const TILE_SIZE = 12u;\n var tileQ: array<${r.type.value}, 144>;\n var tileK: array<${r.type.value}, 144>;\n ${e.registerUniforms([{name:"M",type:"u32"},{name:"K",type:"u32"},{name:"N",type:"u32"},{name:"num_heads",type:"u32"},{name:"v_hidden_size",type:"u32"}]).declareVariables(r,s,o)}\n ${e.mainStart([i,i,1])}\n let headIdx = workgroup_id.z;\n let m = workgroup_id.y * TILE_SIZE + local_id.y;\n let n = workgroup_id.x * TILE_SIZE + local_id.x;\n\n let offsetA = headIdx * (uniforms.M * uniforms.K) + m * uniforms.K;\n let offsetB = headIdx * (uniforms.N * uniforms.K) + n;\n\n var value = ${r.type.storage}(0);\n for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {\n if (m < uniforms.M && w + local_id.x < uniforms.K) {\n tileQ[TILE_SIZE * local_id.y + local_id.x] = probs[offsetA + w + local_id.x];\n }\n if (n < uniforms.N && w + local_id.y < uniforms.K) {\n tileK[TILE_SIZE * local_id.y + local_id.x] = v[offsetB + (w + local_id.y) * uniforms.N];\n }\n workgroupBarrier();\n for (var k: u32 = 0u; k{let p=Vn(e,t,n,0,l,d);Hn(e,p,r,l)},Gn=(e,t)=>{let n=[t.batchSize,t.numHeads,t.sequenceLength,t.headSize],r=t.sequenceLength,a=t.inputHiddenSize,i=t.headSize,s=12,o={x:Math.ceil(t.headSize/s),y:Math.ceil(t.sequenceLength/s),z:t.batchSize*t.numHeads},u=[e.inputs[0],e.inputs[1],e.inputs[2]],l=[{type:"uint32",data:r},{type:"uint32",data:a},{type:"uint32",data:i},{type:"uint32",data:t.numHeads},{type:"uint32",data:t.headSize},{type:"uint32",data:t.hiddenSize},{type:"uint32",data:t.hiddenSize+t.hiddenSize+t.vHiddenSize}];return e.compute({name:"AttentionPrepare",shaderCache:{inputDependencies:["type","type","type"]},getRunData:()=>({outputs:[{dims:n,dataType:e.inputs[0].dataType,gpuDataType:0},{dims:n,dataType:e.inputs[0].dataType,gpuDataType:0},{dims:n,dataType:e.inputs[0].dataType,gpuDataType:0}],dispatchGroup:o,programUniforms:l}),getShaderSource:e=>{let t=Tt("output_q",u[0].dataType,n),r=Tt("output_k",u[0].dataType,n),a=Tt("output_v",u[0].dataType,n),i=Ct("input",u[0].dataType,u[0].dims),o=Ct("weight",u[1].dataType,u[1].dims),l=Ct("bias",u[2].dataType,u[2].dims),d=i.type.storage;return`\n const TILE_SIZE = 12u;\n var tileInput: array<${d}, 144>;\n var tileWeightQ: array<${d}, 144>;\n var tileWeightK: array<${d}, 144>;\n var tileWeightV: array<${d}, 144>;\n ${e.registerUniforms([{name:"M",type:"u32"},{name:"K",type:"u32"},{name:"N",type:"u32"},{name:"num_heads",type:"u32"},{name:"head_size",type:"u32"},{name:"hidden_size",type:"u32"},{name:"ldb",type:"u32"}]).declareVariables(i,o,l,t,r,a)}\n ${e.mainStart([s,s,1])}\n let batchIndex = workgroup_id.z / uniforms.num_heads;\n let headNumber = workgroup_id.z % uniforms.num_heads;\n let m = workgroup_id.y * TILE_SIZE + local_id.y;\n let n = workgroup_id.x * TILE_SIZE + local_id.x;\n\n let inputOffset = batchIndex * (uniforms.M * uniforms.K) + m * uniforms.K;\n let biasOffsetQ = headNumber * uniforms.head_size;\n let biasOffsetK = uniforms.hidden_size + biasOffsetQ;\n let biasOffsetV = uniforms.hidden_size + biasOffsetK;\n\n var valueQ = ${d}(0);\n var valueK = ${d}(0);\n var valueV = ${d}(0);\n for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {\n if (m < uniforms.M && w + local_id.x < uniforms.K) {\n tileInput[TILE_SIZE * local_id.y + local_id.x] = input[inputOffset + w + local_id.x];\n }\n if (n < uniforms.N && w + local_id.y < uniforms.K) {\n let offset = n + (w + local_id.y) * uniforms.ldb;\n tileWeightQ[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetQ + offset];\n tileWeightK[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetK + offset];\n tileWeightV[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetV + offset];\n }\n workgroupBarrier();\n for (var k: u32 = 0u; k{let n=Wn(e.inputs,t),[r,a,i]=Gn(e,n);return Ln(e,r,a,i,e.inputs[4],void 0,void 0,void 0,e.inputs[5],n,t)}})),zo=N((()=>{se(),Io(),Eo(),Co(),qn=(e,t)=>{if(!e||5!==e.length)throw new Error("BatchNormalization requires 5 inputs");let n=(e,t,n)=>{let r=t.length;if(r!==e.length)throw new Error(`${n}: num dimensions != ${r}`);t.forEach(((t,r)=>{if(t!==e[r])throw new Error(`${n}: dim[${r}] do not match`)}))};if(e[0].dims.length>1){let r="NHWC"===t.format?t.spatial?e[0].dims.slice(-1):e[0].dims.slice(-1).concat(e[0].dims.slice(1,e[0].dims.length-1)):e[0].dims.slice(1,t.spatial?2:void 0);n(e[1].dims,r,"Invalid input scale"),n(e[2].dims,r,"Invalid input B"),n(e[3].dims,r,"Invalid input mean"),n(e[4].dims,r,"Invalid input var")}else n(e[1].dims,[1],"Invalid input scale"),n(e[2].dims,[1],"Invalid input B"),n(e[3].dims,[1],"Invalid input mean"),n(e[4].dims,[1],"Invalid input var")},jn=(e,t)=>{let{epsilon:n,spatial:r,format:a}=t,i=e[0].dims,s=r?bt(i[i.length-1]):1,o="NHWC"===a&&i.length>1?s:1,u=ct.size(i)/s,l=zt(i.length)&&r,d=l?i.length:i,p=Ct("x",e[0].dataType,e[0].dims,s),c=Ct("scale",e[1].dataType,e[1].dims,o),f=Ct("bias",e[2].dataType,e[2].dims,o),h=Ct("inputMean",e[3].dataType,e[3].dims,o),m=Ct("inputVar",e[4].dataType,e[4].dims,o),g=Tt("y",e[0].dataType,d,s);return{name:"BatchNormalization",shaderCache:{hint:`${t.epsilon}_${t.format}_${r}_${s}`,inputDependencies:l?["rank","type","type","type","type"]:void 0},getShaderSource:e=>`\n const epsilon = ${n};\n ${e.registerUniform("outputSize","u32").declareVariables(p,c,f,h,m,g)}\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n var outputIndices = ${g.offsetToIndices(`global_idx * ${s}`)};\n ${(()=>{let e="";if(r)e=`let cOffset = ${1===i.length?"0u":"NHWC"===a?`outputIndices[${i.length-1}] / ${s}`:"outputIndices[1]"};`;else if("NCHW"===a)e=`\n ${g.indicesSet("outputIndices","0","0")}\n let cOffset = ${g.indicesToOffset("outputIndices")};`;else{e=`var cIndices = ${c.type.indices}(0);\n cIndices[0] = outputIndices[${i.length-1}];`;for(let t=1;t({outputs:[{dims:e[0].dims,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:l?[{type:"uint32",data:u},...vt(i)]:[{type:"uint32",data:u}]})}},Kn=e=>lt(e),Yn=(e,t)=>{let{inputs:n,outputCount:r}=e,a=Kn({...t,outputCount:r});if(d.webgpu.validateInputContent&&qn(n,a),t.trainingMode)throw new Error("BatchNormalization trainingMode is not supported yet.");e.compute(jn(n,a))}})),Bo=N((()=>{Io(),Co(),Zn=e=>{if(3!==e[0].dims.length)throw new Error("input should have 3 dimensions");if(![320,640,1280].includes(e[0].dims[2]))throw new Error("number of channels should be 320, 640 or 1280");if(1!==e[1].dims.length)throw new Error("bias is expected to have 1 dimensions");if(e[0].dims[2]!==e[1].dims[0])throw new Error("last dimension of input and bias are not the same")},Xn=e=>{let t=e[0].dims,n=e[0].dims[2],r=ct.size(t)/4,a=e[0].dataType,i=Ct("input",a,t,4),s=Ct("bias",a,[n],4),o=Ct("residual",a,t,4),u=Tt("output",a,t,4);return{name:"BiasAdd",getRunData:()=>({outputs:[{dims:t,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(r/64)}}),getShaderSource:e=>`\n const channels = ${n}u / 4;\n ${e.declareVariables(i,s,o,u)}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes(r)}\n let value = ${i.getByOffset("global_idx")}\n + ${s.getByOffset("global_idx % channels")} + ${o.getByOffset("global_idx")};\n ${u.setByOffset("global_idx","value")}\n }`}},Qn=e=>{Zn(e.inputs),e.compute(Xn(e.inputs))}})),Do=N((()=>{$o(),Io(),Eo(),Co(),Jn=(e,t,n,r,a,i)=>{let s=Math.ceil(t/4),o="";o="string"==typeof a?`${a}(a)`:a("a");let u=Ct("inputData",n,[s],4),l=Tt("outputData",r,[s],4);return`\n ${e.registerUniform("vec_size","u32").declareVariables(u,l)}\n\n ${i??""}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")}\n\n let a = ${u.getByOffset("global_idx")};\n ${l.setByOffset("global_idx",o)}\n }`},er=(e,t,n,r,a,i=e.dataType)=>({name:t,shaderCache:{hint:a,inputDependencies:["type"]},getShaderSource:t=>Jn(t,ct.size(e.dims),e.dataType,i,n,r),getRunData:t=>({outputs:[{dims:e.dims,dataType:i}],dispatchGroup:{x:Math.ceil(ct.size(t[0].dims)/64/4)},programUniforms:[{type:"uint32",data:Math.ceil(ct.size(e.dims)/4)}]})}),tr=e=>{e.compute(er(e.inputs[0],"Abs","abs"))},nr=e=>{e.compute(er(e.inputs[0],"Acos","acos"))},rr=e=>{e.compute(er(e.inputs[0],"Acosh","acosh"))},ar=e=>{e.compute(er(e.inputs[0],"Asin","asin"))},ir=e=>{e.compute(er(e.inputs[0],"Asinh","asinh"))},sr=e=>{e.compute(er(e.inputs[0],"Atan","atan"))},or=e=>{e.compute(er(e.inputs[0],"Atanh","atanh"))},ur=e=>lt(e),lr=(e,t)=>{let n;switch(t.to){case 10:n="vec4";break;case 1:n="vec4";break;case 12:n="vec4";break;case 6:n="vec4";break;case 9:n="vec4";break;default:throw new RangeError(`not supported type (specified in attribute 'to' from 'Cast' operator): ${t.to}`)}e.compute(er(e.inputs[0],"Cast",n,void 0,t.cacheKey,t.to))},dr=e=>{let t=e.length>=2&&0!==e[1].data?e[1].getFloat32Array()[0]:mt,n=e.length>=3&&0!==e[2].data?e[2].getFloat32Array()[0]:gt;return lt({min:t,max:n})},pr=(e,t)=>{let n=1===e.inputs.length?t:dr(e.inputs),r=$t(e.inputs[0].dataType);e.compute(er(e.inputs[0],"Clip",(e=>`clamp(${e}, clip_min_, clip_max_)`),`\n const clip_min_: vec4<${r}> = vec4(${r}(${n.min}));\n const clip_max_: vec4<${r}> = vec4(${r}(${n.max}));\n`,n.cacheKey),{inputs:[0]})},cr=e=>{e.compute(er(e.inputs[0],"Ceil","ceil"))},fr=e=>{e.compute(er(e.inputs[0],"Cos","cos"))},hr=e=>{e.compute(er(e.inputs[0],"Cosh","cosh"))},mr=e=>lt(e),gr=(e,t)=>{let n=$t(e.inputs[0].dataType);e.compute(er(e.inputs[0],"Elu",(e=>`elu_vf32(${e})`),`\n const elu_alpha_ = ${n}(${t.alpha});\n\n fn elu_f32(a: ${n}) -> ${n} {\n return select((exp(a) - 1.0) * elu_alpha_, a, a >= 0.0);\n }\n\n fn elu_vf32(v: vec4<${n}>) -> vec4<${n}> {\n return vec4(elu_f32(v.x), elu_f32(v.y), elu_f32(v.z), elu_f32(v.w));\n }`,t.cacheKey))},yr=(e,t="f32")=>`\nconst r0: ${t} = 0.3275911;\nconst r1: ${t} = 0.254829592;\nconst r2: ${t} = -0.284496736;\nconst r3: ${t} = 1.421413741;\nconst r4: ${t} = -1.453152027;\nconst r5: ${t} = 1.061405429;\n\nfn erf_vf32(v: ${e}) -> ${e} {\n let absv = abs(v);\n let x = 1.0 / (1.0 + r0 * absv);\n return sign(v) * (1.0 - ((((r5 * x + r4) * x + r3) * x + r2) * x + r1) * x * exp(-absv * absv));\n}`,wr=e=>{let t=$t(e.inputs[0].dataType);e.compute(er(e.inputs[0],"Erf",(e=>`erf_vf32(${e})`),yr(`vec4<${t}>`,t)))},$r=e=>{e.compute(er(e.inputs[0],"Exp","exp"))},vr=e=>{e.compute(er(e.inputs[0],"Floor","floor"))},br=e=>{let t=$t(e.inputs[0].dataType);e.compute(er(e.inputs[0],"Gelu",(e=>`0.5 * ${e} * (1.0 + erf_vf32(${e} * 0.7071067811865475))`),yr(`vec4<${t}>`,t)))},_r=(e,t)=>{let n=$t(e.inputs[0].dataType);e.compute(er(e.inputs[0],"LeakyRelu",(e=>`select(leaky_relu_alpha_ * ${e}, ${e}, ${e} >= vec4<${n}>(0.0))`),`const leaky_relu_alpha_ = ${n}(${t.alpha});`,t.cacheKey))},xr=e=>{e.compute(er(e.inputs[0],"Not",(e=>`!${e}`)))},Sr=e=>{e.compute(er(e.inputs[0],"Neg",(e=>`-${e}`)))},Er=e=>{e.compute(er(e.inputs[0],"Reciprocal",(e=>`1.0/${e}`)))},Ir=e=>{let t=$t(e.inputs[0].dataType);e.compute(er(e.inputs[0],"Relu",(e=>`select(vec4<${t}>(0.0), ${e}, ${e} > vec4<${t}>(0.0))`)))},Cr=e=>{e.compute(er(e.inputs[0],"Sigmoid",(e=>`(1.0 / (1.0 + exp(-${e})))`)))},Tr=e=>{e.compute(er(e.inputs[0],"Sin","sin"))},kr=e=>{e.compute(er(e.inputs[0],"Sinh","sinh"))},Or=e=>{e.compute(er(e.inputs[0],"Sqrt","sqrt"))},Ar=e=>{e.compute(er(e.inputs[0],"Tan","tan"))},Rr=e=>{e.compute(er(e.inputs[0],"Tanh","tanh"))},zr=(e,t)=>{let n=$t(e.inputs[0].dataType);return e.compute(er(e.inputs[0],"ThresholdedRelu",(e=>`select(vec4<${n}>(0.0), ${e}, ${e} > thresholded_relu_alpha_)`),`const thresholded_relu_alpha_ = vec4<${n}>(${t.alpha});`,t.cacheKey)),0},Br=e=>{e.compute(er(e.inputs[0],"Log","log"))}})),Mo=N((()=>{Io(),Co(),Do(),Dr=e=>{if(3!==e[0].dims.length)throw new Error("input should have 3 dimensions");if(![2560,5120,10240].includes(e[0].dims[2]))throw new Error("hidden state should be 2560, 5120 or 10240");if(1!==e[1].dims.length)throw new Error("bias is expected to have 1 dimensions");if(e[0].dims[2]!==e[1].dims[0])throw new Error("last dimension of input and bias are not the same")},Mr=e=>{let t=e[0].dims.slice();t[2]=t[2]/2;let n=Ct("input",e[0].dataType,e[0].dims,4),r=Ct("bias",e[0].dataType,[e[0].dims[2]],4),a=Tt("output",e[0].dataType,t,4),i=ct.size(t)/4,s=wt(e[0].dataType);return{name:"BiasSplitGelu",getRunData:()=>({outputs:[{dims:t,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(i/64)}}),getShaderSource:t=>`\n const M_SQRT2 = sqrt(2.0);\n const halfChannels = ${e[0].dims[2]/4/2}u;\n\n ${t.declareVariables(n,r,a)}\n\n ${yr(`vec4<${s}>`,s)}\n\n ${t.mainStart()}\n ${t.guardAgainstOutOfBoundsWorkgroupSizes(i)}\n let biasIdx = global_idx % halfChannels;\n let batchIndex = global_idx / halfChannels;\n let inputOffset = biasIdx + batchIndex * halfChannels * 2;\n let valueLeft = input[inputOffset] + bias[biasIdx];\n let valueRight = input[inputOffset + halfChannels] + bias[biasIdx + halfChannels];\n let geluRight = valueRight * 0.5 * (erf_vf32(valueRight / M_SQRT2) + 1);\n\n ${a.setByOffset("global_idx","valueLeft * geluRight")}\n }`}},Pr=e=>{Dr(e.inputs),e.compute(Mr(e.inputs))}})),Po=N((()=>{$o(),Io(),Co(),Nr=(e,t,n,r,a,i,s,o,u,l,d,p,c)=>{let f,h;"string"==typeof o?f=h=(e,t)=>`${o}((${e}),(${t}))`:"function"==typeof o?f=h=o:(f=o.scalar,h=o.vector);let m,g=p?t.length:t,y=p?n.length:n,w=p?r.length:r,$=Tt("outputData",d,w,4),v=Ct("aData",u,g,4),b=Ct("bData",l,y,4);if(a)if(i){let e=1===ct.size(t),r=1===ct.size(n),a=t.length>0&&t[t.length-1]%4==0,i=n.length>0&&n[n.length-1]%4==0;m=e||r?$.setByOffset("global_idx",h(e?`${v.type.value}(${v.getByOffset("0")}.x)`:v.getByOffset("global_idx"),r?`${b.type.value}(${b.getByOffset("0")}.x)`:b.getByOffset("global_idx"))):`\n let outputIndices = ${$.offsetToIndices("global_idx * 4u")};\n let offsetA = ${v.broadcastedIndicesToOffset("outputIndices",$)};\n let offsetB = ${b.broadcastedIndicesToOffset("outputIndices",$)};\n ${$.setByOffset("global_idx",h(s||a?v.getByOffset("offsetA / 4u"):`${v.type.value}(${v.getByOffset("offsetA / 4u")}[offsetA % 4u])`,s||i?b.getByOffset("offsetB / 4u"):`${b.type.value}(${b.getByOffset("offsetB / 4u")}[offsetB % 4u])`))}\n `}else m=$.setByOffset("global_idx",h(v.getByOffset("global_idx"),b.getByOffset("global_idx")));else{if(!i)throw new Error("no necessary to use scalar implementation for element-wise binary op implementation.");let e=(e,t,n="")=>{let r=`aData[indexA${t}][componentA${t}]`,a=`bData[indexB${t}][componentB${t}]`;return`\n let outputIndices${t} = ${$.offsetToIndices(`global_idx * 4u + ${t}u`)};\n let offsetA${t} = ${v.broadcastedIndicesToOffset(`outputIndices${t}`,$)};\n let offsetB${t} = ${b.broadcastedIndicesToOffset(`outputIndices${t}`,$)};\n let indexA${t} = offsetA${t} / 4u;\n let indexB${t} = offsetB${t} / 4u;\n let componentA${t} = offsetA${t} % 4u;\n let componentB${t} = offsetB${t} % 4u;\n ${e}[${t}] = ${n}(${f(r,a)});\n `};m=9===d?`\n var data = vec4(0);\n ${e("data",0,"u32")}\n ${e("data",1,"u32")}\n ${e("data",2,"u32")}\n ${e("data",3,"u32")}\n outputData[global_idx] = dot(vec4(0x1, 0x100, 0x10000, 0x1000000), vec4(data));`:`\n ${e("outputData[global_idx]",0)}\n ${e("outputData[global_idx]",1)}\n ${e("outputData[global_idx]",2)}\n ${e("outputData[global_idx]",3)}\n `}return`\n ${e.registerUniform("vec_size","u32").declareVariables(v,b,$)}\n\n ${c??""}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")}\n ${m}\n }`},Wr=(e,t,n,r,a,i,s=n.dataType)=>{let o=!ct.areEqual(n.dims,r.dims),u=n.dims,l=ct.size(n.dims),d=!1,p=!1,c=[o];if(o){let e=pt.calcShape(n.dims,r.dims,!1);if(!e)throw new Error("Can't perform binary op on the given tensors");u=e,l=ct.size(u);let t=1===ct.size(n.dims),a=1===ct.size(r.dims),i=n.dims.length>0&&n.dims[n.dims.length-1]%4==0,s=r.dims.length>0&&r.dims[r.dims.length-1]%4==0;c.push(t),c.push(a),c.push(i),c.push(s);let o=1;for(let e=1;ee.toString())).join("_"),inputDependencies:f?["rank","rank"]:["dims","dims"]},getShaderSource:e=>Nr(e,n.dims,r.dims,u,d,o,p,a,n.dataType,r.dataType,s,f,i),getRunData:()=>({outputs:[{dims:u,dataType:s}],dispatchGroup:{x:Math.ceil(l/64/4)},programUniforms:f?[{type:"uint32",data:Math.ceil(ct.size(u)/4)},...vt(n.dims),...vt(r.dims),...vt(u)]:[{type:"uint32",data:Math.ceil(ct.size(u)/4)}]})}},Ur=(e,t,n,r,a,i)=>{e.compute(Wr(t,a??"",e.inputs[0],e.inputs[1],n,r,i))},Vr=e=>{Ur(e,"Add",((e,t)=>`${e}+${t}`))},Hr=e=>{Ur(e,"Div",((e,t)=>`${e}/${t}`))},Lr=e=>{Ur(e,"Equal",{scalar:(e,t)=>`u32(${e}==${t})`,vector:(e,t)=>`vec4(${e}==${t})`},void 0,void 0,9)},Gr=e=>{Ur(e,"Mul",((e,t)=>`${e}*${t}`))},Fr=e=>{let t=Ct("input",e.inputs[0].dataType,e.inputs[0].dims).type.value;Ur(e,"Pow",{scalar:(e,t)=>`pow_custom(${e},${t})`,vector:(e,t)=>`pow_vector_custom(${e},${t})`},`\n fn pow_custom(a : ${t}, b : ${t}) -> ${t} {\n if (b == ${t}(0.0)) {\n return ${t}(1.0);\n } else if (a < ${t}(0.0) && f32(b) != floor(f32(b))) {\n return ${t}(pow(f32(a), f32(b))); // NaN\n }\n return select(sign(a), ${t}(1.0), round(f32(abs(b) % ${t}(2.0))) != 1.0) * ${t}(${"i32"===t?"round":""}(pow(f32(abs(a)), f32(b))));\n }\n fn pow_vector_custom(a : vec4<${t}>, b : vec4<${t}>) -> vec4<${t}> {\n // TODO: implement vectorized pow\n return vec4<${t}>(pow_custom(a.x, b.x), pow_custom(a.y, b.y), pow_custom(a.z, b.z), pow_custom(a.w, b.w));\n }\n `)},qr=e=>{Ur(e,"Sub",((e,t)=>`${e}-${t}`))},jr=e=>{Ur(e,"Greater",{scalar:(e,t)=>`u32(${e}>${t})`,vector:(e,t)=>`vec4(${e}>${t})`},void 0,void 0,9)},Kr=e=>{Ur(e,"Less",{scalar:(e,t)=>`u32(${e}<${t})`,vector:(e,t)=>`vec4(${e}<${t})`},void 0,void 0,9)},Yr=e=>{Ur(e,"GreaterOrEqual",{scalar:(e,t)=>`u32(${e}>=${t})`,vector:(e,t)=>`vec4(${e}>=${t})`},void 0,void 0,9)},Zr=e=>{Ur(e,"LessOrEqual",{scalar:(e,t)=>`u32(${e}<=${t})`,vector:(e,t)=>`vec4(${e}<=${t})`},void 0,void 0,9)}})),No=N((()=>{Io(),Eo(),Co(),Xr=e=>{if(!e||e.length<1)throw new Error("too few inputs");let t=e[0].dataType,n=e[0].dims.length;for(let r of e){if(r.dataType!==t)throw new Error("input tensors should be one type");if(r.dims.length!==n)throw new Error("input tensors should have the same shape")}},Qr=(e,t)=>`\n fn calculateInputIndex(index: u32) -> u32 {\n let sizeInConcatAxis = array(${t});\n for (var i: u32 = 0u; i < ${e}; i += 1u ) {\n if (index < sizeInConcatAxis[i]) {\n return i;\n }\n }\n return ${e}u;\n }`,Jr=(e,t)=>{let n=e.length,r=[];for(let a=0;a{let n=e[0].dims.slice();if(t>=n.length||t<-1*n.length)throw new Error("axis specified for concat doesn't match input dimensionality");let r=t<0?n.length+t:t,a=n.slice(0);for(let t=1;t`uniforms.sizeInConcatAxis${e}`)).join(",");return{name:"Concat",shaderCache:{hint:`${t}`,inputDependencies:d},getRunData:()=>({outputs:[{dims:a,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(i/64)},programUniforms:f}),getShaderSource:t=>`\n\n ${(()=>{t.registerUniform("outputSize","u32");for(let n=0;n(${w});\n ${y} -= sizeInConcatAxis[inputIndex - 1u];\n }\n\n ${Jr(o,g)}\n }`}},ta=(e,t)=>{Xr(e.inputs),e.compute(ea(e.inputs,t.axis))},na=e=>lt({axis:e.axis})})),Wo=N((()=>{Io(),ra=(e,t)=>{switch(e.activation){case"Relu":return{activationFunction:"",applyActivation:`value = max(value, ${t}(0.0));`};case"Sigmoid":return{activationFunction:"",applyActivation:`value = (${t}(1.0) / (${t}(1.0) + exp(-value)));`};case"Clip":return{activationFunction:`const clip_min_=${t}(${e.clipMin});const clip_max_=${t}(${e.clipMax});`,applyActivation:"value = clamp(value, clip_min_, clip_max_);"};default:return{activationFunction:"",applyActivation:""}}},aa=e=>{let t=e?.activation||"";if("Clip"===t){let[n,r]=e?.activation_params||[mt,gt];return{activation:t,clipMax:r,clipMin:n,activationCacheKey:`${t}:${n},${r}`}}return{activation:t,activationCacheKey:t}}})),Uo=N((()=>{ia=(e,t)=>{switch(e){case 1:return t;case 2:return`vec2<${t}>`;case 3:return`vec3<${t}>`;case 4:return`vec4<${t}>`;default:throw new Error(`${e}-component is not supported.`)}},sa=e=>`\n ${e?"value = value + getBiasByOutputCoords(coords);":""}\n `})),Vo=N((()=>{oa=e=>`\nfn getIndexFromCoords4D(coords : vec4, shape : vec4) -> i32 {\n return dot(coords, vec4(\n shape.y * shape.z * shape.w, shape.z * shape.w, shape.w, 1));\n}\nfn getOutputIndexFromCoords(coords : vec4) -> i32 {\n return dot(coords, vec4(\n i32(${e}.x), i32(${e}.y), i32(${e}.z), 1));\n}\n`})),Ho=N((()=>{Io(),Co(),Wo(),Uo(),ua=(e,t)=>e?`\n mm_Asub[inputRow][inputCol] = mm_readA(batch,\n kStart + inputRow,\n globalRowStart / innerElementSize + inputCol${t?", batchIndices":""});\n `:`\n mm_Asub[inputRow][inputCol] = mm_readA(batch,\n globalRow + innerRow,\n kStart / innerElementSize + inputCol${t?", batchIndices":""});\n `,la=(e,t)=>e?`\n let ACached0 = mm_Asub[k * innerElementSize][localRow];\n let ACached1 = mm_Asub[k * innerElementSize + 1][localRow];\n let ACached2 = mm_Asub[k * innerElementSize + 2][localRow];\n ${3===t?"":"let ACached3 = mm_Asub[k * innerElementSize + 3][localRow];"}\n for (var i = 0; i < rowPerThread; i = i + 1) {\n acc[i] = BCached0 * ACached0[i] + acc[i];\n acc[i] = BCached1 * ACached1[i] + acc[i];\n acc[i] = BCached2 * ACached2[i] + acc[i];\n ${3===t?"":"acc[i] = BCached3 * ACached3[i] + acc[i];"}\n }`:`\n for (var i = 0; i < rowPerThread; i = i + 1) {\n let ACached = mm_Asub[tileRow + i][k];\n acc[i] = BCached0 * ACached.x + acc[i];\n acc[i] = BCached1 * ACached.y + acc[i];\n acc[i] = BCached2 * ACached.z + acc[i];\n ${3===t?"":"acc[i] = BCached3 * ACached.w + acc[i];"}\n }`,da=(e,t,n="f32",r,a=!1,i=32,s=!1,o=32)=>{let u=t[1]*e[1],l=t[0]*e[0],d=a?u:i,p=a?i:u,c=d/t[0],f=i/t[1];if((!a||4!==c||4!==e[1])&&(a||3!==c&&4!==c)||d%t[0]!=0||i%t[1]!=0||4!==e[0])throw new Error(`If transposeA ${a} is true, innerElementSize ${c} and workPerThread[1] ${e[1]} must be 4.\n Otherwise, innerElementSize ${c} must be 3 or 4.\n tileAWidth ${d} must be divisible by workgroupSize[0]${t[0]}. tileInner ${i} must be divisible by workgroupSize[1] ${t[1]}. colPerThread ${e[0]} must be 4.`);return`\nvar mm_Asub: array, ${d/c}>, ${p}>;\nvar mm_Bsub: array, ${l/e[0]}>, ${i}>;\n\nconst rowPerThread = ${e[1]};\nconst colPerThread = ${e[0]};\nconst innerElementSize = ${c};\nconst tileInner = ${i};\n\n@compute @workgroup_size(${t[0]}, ${t[1]}, ${t[2]})\nfn main(@builtin(local_invocation_id) localId : vec3,\n @builtin(global_invocation_id) globalId : vec3,\n @builtin(workgroup_id) workgroupId : vec3) {\n let localRow = i32(localId.y);\n let tileRow = localRow * rowPerThread;\n let tileCol = i32(localId.x);\n\n let globalRow =i32(globalId.y) * rowPerThread;\n let globalCol = i32(globalId.x);\n let batch = ${s?"0":"i32(globalId.z)"};\n ${r?`let batchIndices = ${r.offsetToIndices("u32(batch)")};`:""}\n let globalRowStart = i32(workgroupId.y) * ${u};\n\n let numTiles = ${s?`${Math.ceil(o/i)}`:"(uniforms.dimInner - 1) / tileInner + 1"};\n var kStart = ${s?`i32(globalId.z) * ${o}`:"0"};\n\n var acc: array, rowPerThread>;\n\n // Loop over shared dimension.\n let tileRowB = localRow * ${f};\n for (var t = 0; t < numTiles; t = t + 1) {\n // Load one tile of A into local memory.\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n let inputRow = tileRow + innerRow;\n let inputCol = tileCol;\n ${ua(a,r)}\n }\n\n // Load one tile of B into local memory.\n for (var innerRow = 0; innerRow < ${f}; innerRow = innerRow + 1) {\n let inputRow = tileRowB + innerRow;\n let inputCol = tileCol;\n mm_Bsub[inputRow][inputCol] = mm_readB(batch, kStart + inputRow, globalCol${r?", batchIndices":""});\n }\n kStart = kStart + tileInner;\n workgroupBarrier();\n\n // Compute acc values for a single thread.\n for (var k = 0; k < tileInner / innerElementSize; k = k + 1) {\n let BCached0 = mm_Bsub[k * innerElementSize][tileCol];\n let BCached1 = mm_Bsub[k * innerElementSize + 1][tileCol];\n let BCached2 = mm_Bsub[k * innerElementSize + 2][tileCol];\n ${3===c?"":"let BCached3 = mm_Bsub[k * innerElementSize + 3][tileCol];"}\n\n ${la(a,c)}\n }\n\n workgroupBarrier();\n }\n\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n mm_write(batch, globalRow + innerRow, globalCol, acc[innerRow]);\n }\n}`},pa=(e,t)=>e?`\n mm_Asub[inputRow][inputCol] = mm_readA(batch,\n kStart + inputRow,\n globalRowStart + inputCol${t?", batchIndices":""});\n `:`\n mm_Asub[inputRow][inputCol] = mm_readA(batch,\n globalRowStart + inputRow,\n kStart + inputCol${t?", batchIndices":""});\n `,ca=e=>e?"let ACached = mm_Asub[k][tileRow + innerRow];":"let ACached = mm_Asub[tileRow + innerRow][k];",fa=(e,t,n="f32",r,a=!1,i=32,s=!1,o=32,u=!1)=>{let l=e[1]*t[1],d=e[0]*t[0],p=a?l:i,c=a?i:l;if(c%t[1]!=0||p%t[0]!=0||i%t[1]!=0)throw new Error(`tileAHight ${c} must be divisible by workgroupSize[1]${t[1]}, tileAWidth ${p} must be divisible by workgroupSize[0]${t[0]}, tileInner ${i} must be divisible by workgroupSize[1]${t[1]}`);let f=c/t[1],h=p/t[0],m=i/t[1],g=u?`\n let localRow = i32(localId.y);\n let localCol = i32(localId.x);\n let globalRowStart = i32(workgroupId.y) * ${l};\n let globalColStart = i32(workgroupId.x) * ${d};\n\n // Loop over shared dimension.\n for (var t = 0; t < numTiles; t = t + 1) {\n // Load one tile of A into local memory.\n for (var inputRow = localRow; inputRow < ${c}; inputRow = inputRow + ${t[1]}) {\n for (var inputCol = localCol; inputCol < ${p}; inputCol = inputCol + ${t[0]}) {\n ${pa(a,r)}\n }\n }\n // Load one tile of B into local memory.\n for (var inputRow = localRow; inputRow < ${i}; inputRow = inputRow + ${t[1]}) {\n for (var inputCol = localCol; inputCol < ${d}; inputCol = inputCol + ${t[0]}) {\n mm_Bsub[inputRow][inputCol] = mm_readB(batch,\n kStart + inputRow,\n globalColStart + inputCol${r?", batchIndices":""});\n }\n }\n kStart = kStart + tileInner;\n workgroupBarrier();\n\n // Compute acc values for a single thread.\n var BCached : array<${n}, colPerThread>;\n for (var k = 0; k < tileInner; k = k + 1) {\n for (var inner = 0; inner < colPerThread; inner = inner + 1) {\n BCached[inner] = mm_Bsub[k][localCol + inner * ${t[0]}];\n }\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n let ACached = ${a?`mm_Asub[k][localRow + innerRow * ${t[1]}];`:`mm_Asub[localRow + innerRow * ${t[1]}][k];`}\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n acc[innerRow][innerCol] = acc[innerRow][innerCol] +\n ACached * BCached[innerCol];\n }\n }\n }\n workgroupBarrier();\n }\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n let gRow = globalRowStart + localRow + innerRow * ${t[1]};\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n let gCol = globalColStart + localCol + innerCol * ${t[0]};\n mm_write(batch, gRow, gCol, acc[innerRow][innerCol]);\n }\n }\n `:`\nlet tileRow = i32(localId.y) * rowPerThread;\nlet tileCol = i32(localId.x) * colPerThread;\n\nlet globalRow = i32(globalId.y) * rowPerThread;\nlet globalCol = i32(globalId.x) * colPerThread;\nlet globalRowStart = i32(workgroupId.y) * ${l};\n\nlet tileRowA = i32(localId.y) * ${f};\nlet tileColA = i32(localId.x) * ${h};\nlet tileRowB = i32(localId.y) * ${m};\n// Loop over shared dimension.\nfor (var t = 0; t < numTiles; t = t + 1) {\n // Load one tile of A into local memory.\n for (var innerRow = 0; innerRow < ${f}; innerRow = innerRow + 1) {\n for (var innerCol = 0; innerCol < ${h}; innerCol = innerCol + 1) {\n let inputRow = tileRowA + innerRow;\n let inputCol = tileColA + innerCol;\n ${pa(a,r)}\n }\n }\n\n // Load one tile of B into local memory.\n for (var innerRow = 0; innerRow < ${m}; innerRow = innerRow + 1) {\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n let inputRow = tileRowB + innerRow;\n let inputCol = tileCol + innerCol;\n mm_Bsub[inputRow][inputCol] = mm_readB(batch,\n kStart + inputRow,\n globalCol + innerCol${r?", batchIndices":""});\n }\n }\n kStart = kStart + tileInner;\n workgroupBarrier();\n\n // Compute acc values for a single thread.\n var BCached : array<${n}, colPerThread>;\n for (var k = 0; k < tileInner; k = k + 1) {\n for (var inner = 0; inner < colPerThread; inner = inner + 1) {\n BCached[inner] = mm_Bsub[k][tileCol + inner];\n }\n\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n ${ca(a)}\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n acc[innerRow][innerCol] = acc[innerRow][innerCol] + ACached * BCached[innerCol];\n }\n }\n }\n\n workgroupBarrier();\n}\n\nfor (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n mm_write(batch, globalRow + innerRow, globalCol + innerCol,\n acc[innerRow][innerCol]);\n }\n}\n`;return`\n var mm_Asub : array, ${c}>;\n var mm_Bsub : array, ${i}>;\n const rowPerThread = ${e[1]};\n const colPerThread = ${e[0]};\n const tileInner = ${i};\n\n@compute @workgroup_size(${t[0]}, ${t[1]}, ${t[2]})\nfn main(@builtin(local_invocation_id) localId : vec3,\n @builtin(global_invocation_id) globalId : vec3,\n @builtin(workgroup_id) workgroupId : vec3) {\n let batch = ${s?"0":"i32(globalId.z)"};\n ${r?`let batchIndices = ${r.offsetToIndices("u32(batch)")};`:""}\n let numTiles = ${s?`${Math.ceil(o/i)}`:"(uniforms.dimInner - 1) / tileInner + 1"};\n var kStart = ${s?`i32(globalId.z) * ${o}`:"0"};\n\n var acc : array, rowPerThread>;\n\n // Without this initialization strange values show up in acc.\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n acc[innerRow][innerCol] = 0.0;\n }\n }\n ${g}\n }\n`},ha=(e,t,n,r,a,i=!1)=>{let[s,o,u]=a,[l,d,p,c]=r,f=Rt(s,u),h=Rt(o,u),m=wt(r[0].type.tensor);return`\n fn mm_readA(batch: i32, row: i32, colIn: i32, batchIndices: ${l.type.indices}) -> ${ia(e,m)} {\n var value = ${ia(e,m)}(0.0);\n let col = colIn * ${e};\n if(row < uniforms.dimAOuter && col < uniforms.dimInner)\n {\n ${(()=>{let e=d.rank,t=l.rank,n=`var aIndices: ${d.type.indices};`;for(let r=e-2-1,a=t-1;r>=0;r--,a--)n+=`\naIndices[${r}] = ${t>1?`batchIndices[${a}]`:"batchIndices"};`;return f.forEach((e=>{n+=`\naIndices[${e}] = 0;`})),n+=`\naIndices[${e-2}] = u32(row);\n aIndices[${e-1}] = u32(colIn);`,n})()}\n value = ${d.getByIndices("aIndices")};\n }\n return value;\n }\n\n fn mm_readB(batch: i32, row: i32, colIn: i32, batchIndices: ${l.type.indices}) -> ${ia(e,m)} {\n var value = ${ia(e,m)}(0.0);\n let col = colIn * ${e};\n if(row < uniforms.dimInner && col < uniforms.dimBOuter)\n {\n ${(()=>{let e=p.rank,t=l.rank,n=`var bIndices: ${p.type.indices};`;for(let r=e-2-1,a=t-1;r>=0;r--,a--)n+=`\nbIndices[${r}] = ${t>1?`batchIndices[${a}]`:"batchIndices"};`;return h.forEach((e=>{n+=`\nbIndices[${e}] = 0;`})),n+=`\nbIndices[${e-2}] = u32(row);\n bIndices[${e-1}] = u32(colIn);`,n})()}\n value = ${p.getByIndices("bIndices")};\n }\n return value;\n }\n\n fn mm_write(batch: i32, row: i32, colIn: i32, valueIn: ${ia(e,m)}) {\n let col = colIn * ${e};\n if (row < uniforms.dimAOuter && col < uniforms.dimBOuter) {\n var value = valueIn;\n let coords = vec3(batch, row, colIn);\n ${t?`value = value + ${i?"bias[colIn]":`${ia(e,m)}(bias[row])`};`:""}\n ${n}\n ${c.setByIndices("vec3(coords)","value")}\n }\n }\n `},ma=(e,t,n,r,a=!1)=>{let i=e[0].dims,s=e[1].dims,o=i.slice(0,-2),u=s.slice(0,-2),l=r?r.slice(0,-2):n.slice(0,-2),d=zt(l.length),p=d?l.length:l,c=kt("batchDims",e[0].dataType,p,1),f=ct.size(l),h=i[i.length-2],m=i[i.length-1],g=s[s.length-1],y=m%4==0&&g%4==0,w=h<=8?[4,1,1]:[4,4,1],$=[8,8,1],v=[Math.ceil(g/$[0]/w[0]),Math.ceil(h/$[1]/w[1]),Math.ceil(f/$[2]/w[2])],b=wt(e[0].dataType),_=y?4:1,x=[...o,h,m/_],S=zt(x.length),E=S?x.length:x,I=[...u,m,g/_],C=zt(I.length),T=C?I.length:I,k=[f,h,g/_],O=Ct("a",e[0].dataType,E,_),A=Ct("b",e[1].dataType,T,_),R=Tt("result",e[0].dataType,k.length,_),z=[O,A],B=[{type:"int32",data:h},{type:"int32",data:g},{type:"int32",data:m}];d&&B.push(...vt(l)),S&&B.push(...vt(x)),C&&B.push(...vt(I));let D=[];D.push(S?"rank":"dims"),D.push(C?"rank":"dims");let M=e.length>2,{activationFunction:P,applyActivation:N}=ra(t,R.type.value),W=ha(_,M,N,[c,O,A,R],[o,u,l],a);if(M){let t=a?_:1;z.push(Ct("bias",e[2].dataType,e[2].dims.length,t)),B.push(...vt(e[2].dims)),D.push("rank")}B.push(...vt(k));return{name:"MatMul",shaderCache:{hint:t.activationCacheKey+`${w}${y}${a}`,inputDependencies:D},getRunData:()=>({outputs:[{dims:n,dataType:e[0].dataType}],dispatchGroup:{x:v[0],y:v[1],z:v[2]},programUniforms:B}),getShaderSource:e=>`\n ${e.registerUniform("dimAOuter","i32").registerUniform("dimBOuter","i32").registerUniform("dimInner","i32").registerInternalVariables(c).declareVariables(...z,R)}\n ${P}\n ${W}\n ${y?da(w,$,b,c):fa(w,$,b,c)}\n `}}})),Lo=N((()=>{bo(),Co(),Wo(),Uo(),Vo(),Ho(),ga=(e,t,n,r,a=!1,i,s=4,o=4,u=4,l="f32")=>{let d=e?"\n let coord = vec4(batch, xRow, xCol, xCh);\n ":"\n let coord = vec4(batch, xCh, xRow, xCol);\n ",p=e?"\n let coords = vec4(\n batch,\n row / outWidth,\n row % outWidth,\n col);\n ":"\n let coords = vec4(\n batch,\n row,\n col / outWidth,\n col % outWidth);\n ",c=e?"i32(uniforms.x_shape[1])":"i32(uniforms.x_shape[2])",f=e?"i32(uniforms.x_shape[2])":"i32(uniforms.x_shape[3])",h=e?"row":"col",m=e?"col":"row",g=`\n let inChannels = i32(uniforms.w_shape[2]);\n let outWidth = ${e?"i32(uniforms.result_shape[2])":"i32(uniforms.result_shape[3])"};\n let outRow = ${h} / outWidth;\n let outCol = ${h} % outWidth;\n\n let WRow = ${m} / (filterDims[1] * inChannels);\n let WCol = ${m} / inChannels % filterDims[1];\n let xRow = outRow * stride[0] + dilation[0] * WRow - pad[0];\n let xCol = outCol * stride[1] + dilation[1] * WCol - pad[1];\n let xCh = ${m} % inChannels;\n var resData = ${ia(s,l)}(0.0);\n // The bounds checking is always needed since we use it to pad zero for\n // the 'same' padding type.\n if (xRow >= 0 && xRow < ${c} && xCol >= 0 && xCol < ${f}) {\n ${d}\n let xIndex = getIndexFromCoords4D(coord, vec4(uniforms.x_shape));\n ${(e=>{switch(e){case 1:return"resData = x[xIndex];";case 3:return`resData = vec3<${l}>(x[xIndex], x[xIndex + 1], x[xIndex + 2]);`;case 4:return"resData = x[xIndex / 4];";default:throw new Error(`innerElementSize ${e} is not supported.`)}})(s)}\n }\n return resData;`,y=e?t&&r?`\n let col = colIn * ${s};\n ${g}`:`\n let col = colIn * ${s};\n if (row < uniforms.dimAOuter && col < uniforms.dimInner) {\n ${g}\n }\n return ${ia(s,l)}(0.0);`:r&&n?`\n let col = colIn * ${s};\n ${g}`:`\n let col = colIn * ${s};\n if (row < uniforms.dimInner && col < uniforms.dimBOuter) {\n ${g}\n }\n return ${ia(s,l)}(0.0);`,w=`${(e=>{switch(e){case 1:return"return w[row * i32(uniforms.w_shape[3]) + colIn];";case 4:return"return w[row * i32(uniforms.w_shape[3]) / 4 + colIn];";default:throw new Error(`innerElementSize ${e} is not supported.`)}})(o)}`,$=ia(u,l),v=ia(e?s:o,l),b=ia(e?o:s,l),{activationFunction:_,applyActivation:x}=ra(i,$);return`\n ${_}\n fn mm_readA(batch: i32, row : i32, colIn : i32) -> ${v} {\n ${e?y:w}\n }\n\n fn mm_readB(batch: i32, row : i32, colIn : i32) -> ${b} {\n ${e?w:y}\n }\n\n fn mm_write(batch: i32, row : i32, colIn : i32, valueIn : ${$}) {\n let col = colIn * ${u};\n if (row < uniforms.dimAOuter && col < uniforms.dimBOuter)\n {\n var value = valueIn;\n let outWidth = ${e?"i32(uniforms.result_shape[2])":"i32(uniforms.result_shape[3])"};\n ${p}\n ${sa(a)}\n ${x}\n setOutputAtCoords(coords[0], coords[1], coords[2], coords[3], value);\n }\n }`},ya=(e,t,n,r,a,i,s,o)=>{let u="NHWC"===t.format,l=u?e[0].dims[3]:e[0].dims[1],d=n[0],p=u?n[2]:n[3],c=u?n[1]:n[2],f=u?n[3]:n[1],h=u&&(l%4==0||l%3==0)&&f%4==0,m=u?f:p*c,g=u?p*c:f,y=[8,8,1],w=r<=8?[4,1,1]:[4,4,1],$=[Math.ceil(m/y[0]/w[0]),Math.ceil(g/y[1]/w[1]),Math.ceil(d/y[2]/w[2])];et("verbose",(()=>`[conv2d_mm_webgpu] dispatch = ${$}`));let v=h?u&&l%4!=0?3:4:1,b=y[1]*w[1],_=y[0]*w[0],x=Math.max(y[0]*v,y[1]),S=r%b==0,E=a%_==0,I=i%x==0,C=h?[v,4,4]:[1,1,1],T=wt(e[0].dataType),k=h?4:1,O=[{type:"int32",data:r},{type:"int32",data:a},{type:"int32",data:i}],A=[Ct("x",e[0].dataType,e[0].dims.length,3===v?1:v),Ct("w",e[1].dataType,e[1].dims.length,k)];O.push(...vt(e[0].dims)),O.push(...vt(e[1].dims));let R=`\n fn setOutputAtIndex(flatIndex : i32, value : ${h?`vec4<${T}>`:T}) {\n result[flatIndex] = ${h?`vec4<${T}>`:T}(value);\n }\n fn setOutputAtCoords(d0 : i32, d1 : i32, d2 : i32, d3 : i32, value : ${h?`vec4<${T}>`:T}) {\n let flatIndex = getOutputIndexFromCoords(vec4(d0, d1, d2, d3));\n setOutputAtIndex(flatIndex ${h?"/ 4":""}, value);\n }`;if(s){let t=Ct("bias",e[2].dataType,e[2].dims.length,k);A.push(t),O.push(...vt(e[2].dims)),R+=`\n fn getBiasByOutputCoords(coords : vec4) -> ${h?`vec4<${T}>`:T} {\n return bias[coords.${u?"w":"y"}${h?"/ 4":""}];\n }`}let z=Tt("result",e[0].dataType,n.length,k);return O.push(...vt(n)),{name:"Conv2DMatMul",shaderCache:{hint:t.cacheKey},getRunData:()=>({outputs:[{dims:n,dataType:e[0].dataType}],dispatchGroup:{x:$[0],y:$[1],z:$[2]},programUniforms:O}),getShaderSource:e=>`\n ${oa("uniforms.result_strides")}\n //struct Uniforms { xShape : vec4, wShape : vec4, outShape : vec4,\n // outShapeStrides: vec3, filterDims : vec2, pad : vec2, stride : vec2,\n // dilation : vec2, dimAOuter : i32, dimBOuter : i32, dimInner : i32 };\n ${e.registerUniform("dimAOuter","i32").registerUniform("dimBOuter","i32").registerUniform("dimInner","i32").declareVariables(...A,z)}\n const filterDims : vec2 = vec2(${t.kernelShape[0]}, ${t.kernelShape[1]});\n const pad : vec2 = vec2(${t.pads[0]}, ${t.pads[1]});\n const stride : vec2 = vec2(${t.strides[0]}, ${t.strides[1]});\n const dilation : vec2 = vec2(${t.dilations[0]}, ${t.dilations[1]});\n ${R}\n ${ga(u,S,E,I,s,t,C[0],C[1],C[2],T)}\n ${h?da(w,y,T,void 0,!u,x):fa(w,y,T,void 0,!u,x,!1,void 0,o)}`}}})),Go=N((()=>{Io(),Co(),qo(),Wo(),wa=(e,t,n)=>{let r=e.length>2,a=r?"value += b[output_channel];":"",i=e[0].dims,s=e[1].dims,o=s[0]/t.group,u="NHWC"===t.format,l=_a(i,s,t.dilations,t.pads,t.strides,u),d=ct.size(l),p=Tt("output",e[0].dataType,l),{activationFunction:c,applyActivation:f}=ra(t,p.type.value),h=Ct("x",e[0].dataType,i),m=Ct("w",e[1].dataType,s),g=[h,m];r&&g.push(Ct("b",e[2].dataType,e[2].dims));return{name:"GroupedConv",shaderCache:{hint:t.cacheKey},getRunData:()=>({outputs:[{dims:n?n(l):l,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(d/64)}}),getShaderSource:e=>`\n const strides: vec2 = vec2(${t.strides[0]}u, ${t.strides[1]}u);\n const pads: vec2 = vec2(${t.pads[0]}u, ${t.pads[1]}u);\n\n ${e.declareVariables(...g,p)}\n\n ${c}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes(d)}\n\n let outputIndices = ${p.offsetToIndices("global_idx")};\n let batch: u32 = outputIndices[0];\n let output_channel: u32 = outputIndices[${u?3:1}];\n let xRCCorner: vec2 = vec2(outputIndices[${u?1:2}], outputIndices[${u?2:3}]) * strides - pads;\n let group_id: u32 = output_channel / ${o}u;\n\n var value: ${p.type.value} = ${p.type.value}(0);\n for (var wInChannel: u32 = 0u; wInChannel < ${s[1]}u; wInChannel++) {\n let input_channel = group_id * ${s[1]}u + wInChannel;\n for (var wHeight: u32 = 0u; wHeight < ${s[2]}u; wHeight++) {\n let xHeight = xRCCorner.x + wHeight * ${t.dilations[0]}u;\n\n if (xHeight < 0u || xHeight >= ${i[u?1:2]}u) {\n continue;\n }\n\n for (var wWidth: u32 = 0u; wWidth < ${s[3]}u; wWidth++) {\n let xWidth = xRCCorner.y + wWidth * ${t.dilations[1]}u;\n if (xWidth < 0u || xWidth >= ${i[u?2:3]}u) {\n continue;\n }\n\n let xVal = ${u?h.get("batch","xHeight","xWidth","input_channel"):h.get("batch","input_channel","xHeight","xWidth")};\n let wVal = ${m.get("output_channel","wInChannel","wHeight","wWidth")};\n value += xVal*wVal;\n }\n }\n }\n ${a}\n ${f}\n ${p.setByOffset("global_idx","value")}\n }`}}})),Fo=N((()=>{Io(),Ho(),Co(),Wo(),$a=(e,t,n,r,a=!1)=>{let i=e[0].dims,s=e[1].dims,o=i[i.length-2],u=s[s.length-1],l=i[i.length-1],d=bt(u),p=bt(l),c=bt(o),f=ct.size(n)/d/c,h=e.length>2,m=r?r.slice(0,-2):n.slice(0,-2),g=[ct.size(m),o,u],y=[{type:"uint32",data:f},{type:"uint32",data:o},{type:"uint32",data:u},{type:"uint32",data:l},...vt(m),...vt(i),...vt(s)];h&&y.push(...vt(e[2].dims)),y.push(...vt(g));return{name:"MatMulNaive",shaderCache:{hint:`${t.activationCacheKey}_${d}_${p}_${c}_${a}`,inputDependencies:h?["rank","rank","rank"]:["rank","rank"]},getRunData:()=>({outputs:[{dims:n,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(f/64)},programUniforms:y}),getShaderSource:r=>{let o=kt("batch_dims",e[0].dataType,m.length),u=Ct("a",e[0].dataType,i.length,p),l=Ct("b",e[1].dataType,s.length,d),f=Tt("output",e[0].dataType,g.length,d),{activationFunction:y,applyActivation:w}=ra(t,f.type.value),$=[u,l],v="";if(h){let t=a?d:1;$.push(Ct("bias",e[2].dataType,e[2].dims.length,t)),v=""+(a?`value += bias[col / ${t}];`:`value += ${f.type.value}(bias[row + i]);`)}let b=i.slice(0,-2),_=s.slice(0,-2),x=Rt(b,m),S=Rt(_,m),E=(e,t)=>{let n=e.rank,r=e.name;if(2===n)return`var ${r}_indices = ${e.type.indices}(0u, 0u);`;let a=o.rank,i=`var ${r}_indices: ${e.type.indices};`;for(let e=n-2-1,t=a-1;e>=0;e--,t--)i+=`\n${r}_indices[${e}] = ${a>1?`batch_indices[${t}]`:"batch_indices"};`;return t.forEach((e=>{i+=`\n${r}_indices[${e}] = 0;`})),i+=`${r}_indices[${n-2}] = 0u;\n ${r}_indices[${n-1}] = 0u;`,i};return`\n ${r.registerUniform("outputSize","u32").registerUniform("M","u32").registerUniform("N","u32").registerUniform("K","u32").registerInternalVariables(o).declareVariables(...$,f)}\n ${y}\n ${r.mainStart()}\n ${r.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n let col = (global_idx % (uniforms.N / ${d})) * ${d};\n var index1 = global_idx / (uniforms.N / ${d});\n let stride1 = uniforms.M / ${c};\n let row = (index1 % stride1) * ${c};\n let batch = index1 / stride1;\n\n ${2===n.length?"":`let batch_indices = ${o.offsetToIndices("batch")};`}\n ${E(u,x)}\n let a_offset = ${u.indicesToOffset("a_indices")};\n ${E(l,S)}\n let b_offset = ${l.indicesToOffset("b_indices")};\n var values: array<${f.type.value}, ${c}>;\n for (var k: u32 = 0u; k < uniforms.K; k = k + ${p}) {\n ${(()=>{let e=`var a_data: ${u.type.value};`;for(let t=0;t{if(!e||2!==e.length)throw new Error("MatMul requires 2 inputs.");if(e[0].dims[e[0].dims.length-1]!==e[1].dims[e[1].dims.length-2])throw new Error("shared dimension does not match.")},ba=e=>{va(e.inputs);let t=pt.calcShape(e.inputs[0].dims,e.inputs[1].dims,!0);if(!t)throw new Error("Can't use matmul on the given tensors");let n=t[t.length-1],r=e.inputs[0].dims[e.inputs[0].dims.length-1];n<8&&r<8?e.compute($a(e.inputs,{activation:"",activationCacheKey:""},t)):e.compute(ma(e.inputs,{activation:"",activationCacheKey:""},t))}})),qo=N((()=>{Io(),Eo(),Lo(),Ho(),Go(),Wo(),Fo(),To(),_a=(e,t,n,r,a,i)=>{let s=e[0],o=e.slice(i?1:2,i?3:4),u=o.length,l=t[0],d=t.slice(2).map(((e,t)=>e+(e-1)*(n[t]-1))),p=o.map(((e,t)=>e+r[t]+r[t+u])).map(((e,t)=>Math.floor((e-d[t]+a[t])/a[t])));return p.splice(0,0,s),p.splice(i?3:1,0,l),p},xa=[2,3,1,0],Sa=(e,t)=>{if(!e||2!==e.length&&3!==e.length)throw new Error("Conv requires 2 or 3 inputs");if(4!==e[0].dims.length&&3!==e[0].dims.length)throw new Error("currently only support conv 1D and 2D");if(e[0].dims.length!==e[1].dims.length)throw new Error("filter does not have same dimension as input");if(e[0].dims["NHWC"===t.format?e[0].dims.length-1:1]!==e[1].dims[1]*t.group)throw new Error("FILTER_IN_CHANNEL should be equal to DATA_CHANNEL");if(3===e.length&&(1!==e[2].dims.length||e[1].dims[0]!==e[2].dims[0]))throw new Error("invalid bias");let n=e[0].dims.length-2;if(t.dilations.length!==n)throw new Error(`dilations should be ${n}D`);if(t.strides.length!==n)throw new Error(`strides should be ${n}D`);if(t.pads.length!==2*n)throw new Error(`pads should be ${2*n}D`);if(0!==t.kernelShape.length&&t.kernelShape.length!==e[1].dims.length-2)throw new Error("invalid kernel shape")},Ea=(e,t)=>{let n=e.kernelShape.slice();for(let e=2;e{let t=aa(e),n=e.format,r=["NOTSET","VALID","SAME_UPPER","SAME_LOWER"][e.auto_pad],a=e.dilations,i=e.group,s=e.kernel_shape,o=e.pads,u=e.strides,l=e.w_is_const();return lt({autoPad:r,format:n,dilations:a,group:i,kernelShape:s,pads:o,strides:u,wIsConst:l,...t})},Ca=(e,t,n)=>{let r=Ea(n,t),a="NHWC"===n.format;if(1!==n.group)return void e.compute(wa(t,r));let i=3===t.length,s=t[0].dims[a?1:2],o=t[0].dims[a?2:3],u=t[0].dims[a?3:1],l=t[1].dims[2],d=t[1].dims[3],p=_a(t[0].dims,t[1].dims,n.dilations,r.pads,n.strides,a),c=p[a?1:2],f=p[a?2:3],h=p[a?3:1],m=a&&l===s&&d===o&&0===n.pads[0]&&0===n.pads[1];if(m||1===l&&1===d&&1===n.dilations[0]&&1===n.dilations[1]&&1===n.strides[0]&&1===n.strides[1]&&0===n.pads[0]&&0===n.pads[1]){let l,d,g,y=p[0],w=[];if(a){let r=e.kernelCustomData.wT??e.compute(Nt(t[1],xa),{inputs:[1],outputs:[n.wIsConst?-2:-1]})[0];if(n.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=r),m){let e=s*o*u;l=t[0].reshape([1,y,e]),d=r.reshape([1,e,h]),g=[1,y,h]}else l=t[0].reshape([y,s*o,u]),d=r.reshape([1,u,h]),g=[y,c*f,h];w.push(l),w.push(d)}else l=t[0].reshape([y,u,s*o]),d=t[1].reshape([1,h,u]),g=[y,h,c*f],w.push(d),w.push(l);i&&w.push(t[2]);let $=g[2],v=w[0].dims[w[0].dims.length-1];return void($<8&&v<8?e.compute($a(w,r,p,g,a),{inputs:w}):e.compute(ma(w,r,p,g,a),{inputs:w}))}let g=e.kernelCustomData.wT??e.compute(Nt(t[1],xa),{inputs:[1],outputs:[n.wIsConst?-2:-1]})[0];n.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=g);let y=[t[0],g];i&&y.push(t[2]);let w=a?c*f:h,$=a?h:c*f,v=l*d*u;e.compute(ya(y,r,p,w,$,v,i,!0),{inputs:y})},Ta=(e,t)=>{let n="NHWC"===t.format,r=[e.inputs[0].reshape(n?[e.inputs[0].dims[0],1,e.inputs[0].dims[1],e.inputs[0].dims[2]]:[e.inputs[0].dims[0],e.inputs[0].dims[1],1,e.inputs[0].dims[2]]),e.inputs[1].reshape([e.inputs[1].dims[0],e.inputs[1].dims[1],1,e.inputs[1].dims[2]])];3===e.inputs.length&&r.push(e.inputs[2]);let a=[0,t.pads[0],0,t.pads[1]],i=[1].concat(t.strides),s=[1].concat(t.dilations),o=[1].concat(t.kernelShape),u=Ea({...t,pads:a,strides:i,dilations:s,kernelShape:o},r);e.compute(wa(r,u,(e=>n?[e[0],e[2],e[3]]:[])))},ka=(e,t)=>{Sa(e.inputs,t),3===e.inputs[0].dims.length?Ta(e,t):Ca(e,e.inputs,t)}})),jo=N((()=>{bo(),Co(),Wo(),Uo(),Vo(),Ho(),Oa=(e,t=!1,n,r=4)=>{let a=ia(r,"f32"),i=e?"\n let coords = vec4(\n batch,\n row / outWidth,\n row % outWidth,\n col);\n ":"\n let coords = vec4(\n batch,\n row,\n col / outWidth,\n col % outWidth);\n ",s=e?"row":"col",o=e?"col":"row",u=`\n let inChannels = ${e?"outBackprop[3]":"outBackprop[1]"};\n let outWidth = ${e?"i32(uniforms.result_shape[2])":"i32(uniforms.result_shape[3])"};\n let outRow = ${s} / outWidth;\n let outCol = ${s} % outWidth;\n\n let WRow = ${o} / (filterDims[1] * inChannels);\n let WCol = ${o} / inChannels % filterDims[1];\n let xR = f32(outRow - pads[0] + dilation[0] * WRow) / f32(strides[0]);\n let xC = f32(outCol - pads[1] + dilation[1] * WCol) / f32(strides[1]);\n if (xR < 0.0 || xR >= f32(${e?"outBackprop[1]":"outBackprop[2]"}) || fract(xR) > 0.0) {\n return ${a}(0.0);\n }\n if (xC < 0.0 || xC >= f32(${e?"outBackprop[2]":"outBackprop[3]"}) || fract(xC) > 0.0) {\n return ${a}(0.0);\n }\n let iXR = i32(xR);\n let iXC = i32(xC);\n let xCh = ${o} % inChannels;\n ${e?"\n let coord = vec4(batch, iXR, iXC, xCh);\n ":"\n let coord = vec4(batch, xCh, iXR, iXC);\n "}\n return x[getIndexFromCoords4D(coord, vec4(uniforms.x_shape))/${r}];`,l=e?`\n let col = colIn * ${r};\n if (row < uniforms.dimAOuter && col < uniforms.dimInner) {\n ${u}\n }\n return ${a}(0.0);`:`\n let col = colIn * ${r};\n if (row < uniforms.dimInner && col < uniforms.dimBOuter) {\n ${u}\n }\n return ${a}(0.0);`,d=`\n let col = colIn * ${r};\n let inChannels = ${e?"outBackprop[3]":"outBackprop[1]"};\n let coordX = filterDims.x - 1 - row / (filterDims[1] * inChannels);\n let coordY = filterDims.y - 1 - (row / inChannels) % filterDims[1];\n if (${e?"row < uniforms.dimInner && col < uniforms.dimBOuter":"row < uniforms.dimInner && col < uniforms.dimAOuter"} && coordX >= 0 && coordY >= 0) {\n let rowInner = row % inChannels;\n let coord = vec4(coordX, coordY, col, rowInner);\n ${(e=>{switch(e){case 1:return"return w[getIndexFromCoords4D(coord, vec4(uniforms.w_shape))];";case 4:return"\n let coord1 = vec4(coordX, coordY, col + 1, rowInner);\n let coord2 = vec4(coordX, coordY, col + 2, rowInner);\n let coord3 = vec4(coordX, coordY, col + 3, rowInner);\n let v0 = w[getIndexFromCoords4D(coord, vec4(uniforms.w_shape))];\n let v1 = w[getIndexFromCoords4D(coord1, vec4(uniforms.w_shape))];\n let v2 = w[getIndexFromCoords4D(coord2, vec4(uniforms.w_shape))];\n let v3 = w[getIndexFromCoords4D(coord3, vec4(uniforms.w_shape))];\n return vec4(v0, v1, v2, v3);\n ";default:throw new Error(`innerElementSize ${e} is not supported.`)}})(r)}\n }\n return ${a}(0.0);\n `,{activationFunction:p,applyActivation:c}=ra(n,a);return`\n ${p}\n fn mm_readA(batch: i32, row : i32, colIn : i32) -> ${a} {\n ${e?l:d}\n }\n\n fn mm_readB(batch: i32, row : i32, colIn : i32) -> ${a} {\n ${e?d:l}\n }\n\n fn mm_write(batch: i32, row : i32, colIn : i32, valueInput : ${a}) {\n let col = colIn * ${r};\n if (row < uniforms.dimAOuter && col < uniforms.dimBOuter) {\n var value = valueInput;\n let outWidth = ${e?"i32(uniforms.result_shape[2])":"i32(uniforms.result_shape[3])"};\n ${i}\n ${sa(t)}\n ${c}\n result[getIndexFromCoords4D(coords, vec4(uniforms.result_shape))/${r}] = value;\n }\n }`},Aa=(e,t,n,r,a,i,s,o)=>{let u="NHWC"===t.format,l=u?e[0].dims[3]:e[0].dims[1],d=n[0],p=u?n[2]:n[3],c=u?n[1]:n[2],f=u?n[3]:n[1],h=u?l%4==0&&f%4==0:p%4==0&&f%4==0,m=u?f:p*c,g=u?p*c:f,y=h?[8,8,1]:[m<=4||g<=4?4:16,m>4&&g<=4?4:16,1],w=h?[4,4,1]:[m<=4?1:4,m>4&&g<=4?1:4,1],$=[Math.ceil(m/y[0]/w[0]),Math.ceil(g/y[1]/w[1]),Math.ceil(d/y[2]/w[2])];et("verbose",(()=>`[conv_backprop_mm_webgpu] dispatch = ${$}`));let v=h?4:1,b=Math.max(y[0]*v,y[1]),_=h?4:1,x=[{type:"int32",data:r},{type:"int32",data:a},{type:"int32",data:i}],S=Ct("x",e[0].dataType,e[0].dims.length,_),E=Ct("w",e[1].dataType,e[1].dims.length,1),I=Tt("result",e[0].dataType,n.length,_),C=[S,E];x.push(...vt(e[0].dims)),x.push(...vt(e[1].dims));let T="";if(s){let t=Ct("bias",e[2].dataType,e[2].dims.length,_);C.push(t),x.push(...vt(e[2].dims)),T+=`\n fn getBiasByOutputCoords(coords : vec4) -> ${h?"vec4":"f32"} {\n return bias[coords.${u?"w":"y"}${h?"/ 4":""}];\n }`}return x.push(...vt(n)),{name:"Conv2DTransposeMatMul",shaderCache:{hint:t.cacheKey},getRunData:()=>({outputs:[{dims:n,dataType:e[0].dataType}],dispatchGroup:{x:$[0],y:$[1],z:$[2]},programUniforms:x}),getShaderSource:n=>`\n ${oa("uniforms.result_strides")}\n ${n.registerUniform("dimAOuter","i32").registerUniform("dimBOuter","i32").registerUniform("dimInner","i32").declareVariables(...C,I)};\n const outBackprop : vec4 = vec4(${e[0].dims.join(",")});\n const filterDims : vec2 = vec2(${t.kernelShape[u?1:2]}, ${t.kernelShape[u?2:3]});\n const effectiveFilterDims : vec2 = filterDims + vec2(\n ${t.dilations[0]<=1?0:(t.kernelShape[u?1:2]-1)*(t.dilations[0]-1)},\n ${t.dilations[1]<=1?0:(t.kernelShape[u?2:3]-1)*(t.dilations[1]-1)});\n const pads : vec2 = vec2(i32(effectiveFilterDims[0]) - 1 - (${t.pads[0]+t.pads[2]})/2,\n i32(effectiveFilterDims[1]) - 1 - (${t.pads[1]+t.pads[3]})/2);\n const strides : vec2 = vec2(${t.strides[0]}, ${t.strides[1]});\n const dilation : vec2 = vec2(${t.dilations[0]}, ${t.dilations[1]});\n const dimAOuter : i32 = ${r};\n const dimBOuter : i32 = ${a};\n const dimInner : i32 = ${i};\n ${T}\n ${Oa(u,s,t,v)}\n ${h?da(w,y,"f32",void 0,!u,b):fa(w,y,"f32",void 0,!u,b,!1,void 0,o)}`}}})),Ko=N((()=>{bo(),Io(),Co(),Ra=(e,t,n,r,a,i,s=!1,o)=>{let u="NHWC"===n.format,l=u?1:2,d=u?2:3,p=u?3:1,c=ct.size(r),f=s?2:1,h=n.group,m=t[1].dims,g=m[0]/h,y=m[1],w=`\n fn setOutputAtIndex(flatIndex : u32, value : ${s?`vec4<${o}>`:o}) {\n result[flatIndex] = ${s?`vec4<${o}>`:o}(value);\n }`;a&&(w+=`\n fn getBiasByOutputCoords(coords : vec4) -> ${s?`vec4<${o}>`:o} {\n return bias[coords.${u?"w":"y"}${s?"/ 4":""}];\n }`);let $=s?4:1,v=Ct("W",t[1].dataType,t[1].dims,$),b=Ct("Dy",t[0].dataType,t[0].dims,$),_=[b,v];a&&_.push(Ct("bias",t[2].dataType,[r[p]],$));let x=Tt("result",t[0].dataType,r,$),S=`{\n let batch: u32 = ${i?"global_id.z":"workgroup_id.z"} / outShape[1];\n let r = ${i?"global_id.z":"workgroup_id.z"} % outShape[1];\n let c = ${i?"global_id.y":"workgroup_id.y"} * ${f};\n let d1: u32 = ${i?"global_id.x":"workgroup_id.x"} * 4;\n\n let dyCorner = vec2(i32(r), i32(c)) - vec2(pads);\n\n // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).\n // ? = to be determined. : = across all values in that axis.\n var dotProd: array, ${f}>;\n for (var i = 0; i < ${f}; i++) {\n dotProd[i] = vec4<${o}>(0.0);\n }\n for (var wR: u32 = 0; wR < filterDims[0]; wR = wR + 1) {\n var dyR = (${o}(dyCorner.x) + ${o}(wR)) / ${o}(strides.x);\n let wRPerm = filterDims[0] - 1 - wR;\n if (dyR < 0.0 || dyR >= ${o}(outBackprop[1]) ||\n fract(dyR) > 0.0 || wRPerm < 0) {\n continue;\n }\n let idyR: u32 = u32(dyR);\n\n for (var wC: u32 = 0; wC < filterDims[1]; wC = wC + 1) {\n let dyC = (${o}(dyCorner.y) + ${o}(wC)) / ${o}(strides.y);\n let dyC2 = (${o}(dyCorner.y) + 1.0 + ${o}(wC)) / ${o}(strides.y);\n let wCPerm = filterDims[1] - 1 - wC;\n if (wCPerm < 0) {\n continue;\n }\n var bDyCVal = true;\n var bDyCVal2 = true;\n if (dyC < 0.0 || dyC >= ${o}(outBackprop[2]) ||\n fract(dyC) > 0.0) {\n bDyCVal = false;\n }\n if (dyC2 < 0.0 || dyC2 >= ${o}(outBackprop[2]) ||\n fract(dyC2) > 0.0) {\n bDyCVal2 = false;\n }\n\n let idyC: u32 = u32(dyC);\n let idyC2: u32 = u32(dyC2);\n if (bDyCVal && bDyCVal2) {\n let d2Length = outBackprop[3];\n for (var d2 :u32 = 0; d2 < d2Length; d2 = d2 + 4) {\n let wValue0 = ${v.get("u32(wRPerm)","u32(wCPerm)","d1","d2")};\n let wValue1 = ${v.get("u32(wRPerm)","u32(wCPerm)","d1 + 1","d2")};\n let wValue2 = ${v.get("u32(wRPerm)","u32(wCPerm)","d1 + 2","d2")};\n let wValue3 = ${v.get("u32(wRPerm)","u32(wCPerm)","d1 + 3","d2")};\n\n var xValue = ${b.get("batch","idyR","idyC","d2")};\n let tmpval = vec4<${o}>(dot(xValue, wValue0),\n dot(xValue, wValue1),\n dot(xValue, wValue2),\n dot(xValue, wValue3));\n dotProd[0] = dotProd[0] + tmpval;\n\n xValue = ${b.get("batch","idyR","idyC2","d2")};\n\n dotProd[1] = dotProd[1] + vec4<${o}>(dot(xValue, wValue0),\n dot(xValue, wValue1),\n dot(xValue, wValue2),\n dot(xValue, wValue3));\n }\n } else if (bDyCVal) {\n let d2Length = outBackprop[${p}];\n for (var d2: u32 = 0; d2 < d2Length; d2 = d2 + 4) {\n let wValue0 = ${v.get("u32(wRPerm)","u32(wCPerm)","d1","d2")};\n let wValue1 = ${v.get("u32(wRPerm)","u32(wCPerm)","d1 + 1","d2")};\n let wValue2 = ${v.get("u32(wRPerm)","u32(wCPerm)","d1 + 2","d2")};\n let wValue3 = ${v.get("u32(wRPerm)","u32(wCPerm)","d1 + 3","d2")};\n\n var xValue = ${b.get("batch","idyR","idyC","d2")};\n let tmpval = vec4<${o}>(dot(xValue, wValue0),\n dot(xValue, wValue1),\n dot(xValue, wValue2),\n dot(xValue, wValue3));\n dotProd[0] = dotProd[0] + tmpval;\n }\n } else if (bDyCVal2) {\n let d2Length = outBackprop[3];\n for (var d2: u32 = 0; d2 < d2Length; d2 = d2 + 4) {\n let wValue0 = ${v.get("u32(wRPerm)","u32(wCPerm)","d1","d2")};\n let wValue1 = ${v.get("u32(wRPerm)","u32(wCPerm)","d1 + 1","d2")};\n let wValue2 = ${v.get("u32(wRPerm)","u32(wCPerm)","d1 + 2","d2")};\n let wValue3 = ${v.get("u32(wRPerm)","u32(wCPerm)","d1 + 3","d2")};\n\n var xValue = ${b.get("batch","idyR","idyC2","d2")};\n let tmpval = vec4<${o}>(dot(xValue, wValue0),\n dot(xValue, wValue1),\n dot(xValue, wValue2),\n dot(xValue, wValue3));\n dotProd[1] = dotProd[1] + tmpval;\n }\n }\n }\n }\n\n for (var i: u32 = 0; i < ${f}; i = i + 1) {\n let value = dotProd[i] + ${a?"bias[c+i]":`vec4<${o}>(0.0)`};\n ${x.set("batch","r","c + i","d1","value")};\n }\n }`,E=`\n let outputIndices = ${x.offsetToIndices("global_idx")};\n let batch = ${x.indicesGet("outputIndices",0)};\n let d1 = ${x.indicesGet("outputIndices",p)};\n let r = ${x.indicesGet("outputIndices",l)};\n let c = ${x.indicesGet("outputIndices",d)};\n let dyCorner = vec2(i32(r), i32(c)) - pads;\n let dyRCorner = dyCorner.x;\n let dyCCorner = dyCorner.y;\n let groupId = d1 / ${y};\n let wOutChannel = d1 - groupId * ${y};\n // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).\n // ? = to be determined. : = across all values in that axis.\n var dotProd = ${o}(0.0);\n for (var wR: u32 = 0; wR < effectiveFilterDims.x; wR = wR + 1) {\n if (wR % dilations.x != 0) {\n continue;\n }\n let dyR = (${o}(dyRCorner) + ${o}(wR)) / ${o}(strides[0]);\n let wRPerm = filterDims.x - 1 - wR / dilations.x;\n if (dyR < 0.0 || dyR >= ${o}(outBackprop[${l}]) || fract(dyR) > 0.0 ||\n wRPerm < 0) {\n continue;\n }\n let idyR: u32 = u32(dyR);\n\n for (var wC: u32 = 0; wC < effectiveFilterDims.y; wC = wC + 1) {\n if (wC % dilations.y != 0) {\n continue;\n }\n let dyC = (${o}(dyCCorner) + ${o}(wC)) / ${o}(strides.y);\n let wCPerm = filterDims.y - 1 - wC / dilations.y;\n if (dyC < 0.0 || dyC >= ${o}(outBackprop[${d}]) ||\n fract(dyC) > 0.0 || wCPerm < 0) {\n continue;\n }\n let idyC: u32 = u32(dyC);\n var inputChannel = groupId * ${g};\n for (var d2: u32 = 0; d2 < ${g}; d2 = d2 + 1) {\n let xValue = ${u?b.get("batch","idyR","idyC","inputChannel"):b.get("batch","inputChannel","idyR","idyC")};\n let wValue = ${v.get("inputChannel","wOutChannel","u32(wRPerm)","u32(wCPerm)")};\n dotProd = dotProd + xValue * wValue;\n inputChannel = inputChannel + 1;\n }\n }\n }\n let value = dotProd + ${a?"bias[d1]":`${o}(0.0)`};\n ${x.setByOffset("global_idx","value")};\n `;return`\n ${e.declareVariables(..._,x)}\n ${w}\n const outShape : vec4 = vec4(${r.join(",")});\n const outBackprop : vec4 = vec4(${t[0].dims.join(",")});\n const strides : vec2 = vec2(${n.strides[0]}, ${n.strides[1]});\n const filterDims : vec2 = vec2(${n.kernelShape[u?1:2]}, ${n.kernelShape[u?2:3]});\n const dilations : vec2 = vec2(${n.dilations[0]}, ${n.dilations[1]});\n const effectiveFilterDims : vec2 = filterDims + vec2(\n ${n.dilations[0]<=1?0:(n.kernelShape[u?1:2]-1)*(n.dilations[0]-1)},\n ${n.dilations[1]<=1?0:(n.kernelShape[u?2:3]-1)*(n.dilations[1]-1)});\n const pads : vec2 = vec2(i32(effectiveFilterDims[0]) - 1 - (${n.pads[0]+n.pads[2]})/2,\n i32(effectiveFilterDims[1]) - 1 - (${n.pads[1]+n.pads[3]})/2);\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes(c)};\n ${s?S:E}}`},za=(e,t,n)=>{let r=e.length>2,a=t.outputShape,i=ct.size(a),s=[Math.ceil(i/64),1,1];et("verbose",(()=>`[conv2d_backprop_webgpu] dispatch = ${s}`));let o=wt(e[0].dataType);return{name:"ConvTranspose2D",shaderCache:{hint:t.cacheKey},getRunData:()=>({dispatchGroup:{x:s[0],y:s[1],z:s[2]},outputs:[{dims:n?n(a):a,dataType:e[0].dataType}]}),getShaderSource:n=>Ra(n,e,t,a,r,1===s[1]&&1===s[2],!1,o)}}})),Yo=N((()=>{Eo(),jo(),Ko(),Wo(),To(),Ba=(e,t,n,r,a,i)=>(e-1)*t+n+(r-1)*a+1-i,Da=(e,t,n,r,a)=>{let i=Math.floor(e/2);"SAME_UPPER"===t?(n[r]=i,n[a]=e-i):"SAME_LOWER"===t&&(n[r]=e-i,n[a]=i)},Ma=(e,t,n,r,a,i,s,o,u,l)=>{let d=e.length-2,p=0===l.length;if(0===u.length)for(let e=0;e{let n=e.kernelShape.slice();if(0===e.kernelShape.length||0===e.kernelShape.reduce(((e,t)=>e*t),1)){n.length=0;for(let e=2;ee+t),0)){let e=t[0].dims.length-2;u=new Array(e).fill(1)}let l=e.strides.slice();if(0===l.reduce(((e,t)=>e+t),0)){let e=t[0].dims.length-2;l=new Array(e).fill(1)}Ma(o,n,u,e.autoPad,e.group,a,l,r,s,i);let d=Object.assign({},e),p=e.cacheKey+[n.join("n,"),a.join(","),l.join(","),s.join(","),i.join(","),u.join(",")].join("_");return Object.assign(d,{kernelShape:n,pads:a,outputPadding:s,outputShape:i,dilations:u,strides:l,cacheKey:p}),d},Na=e=>{let t=aa(e),n=e.format,r=["NOTSET","VALID","SAME_UPPER","SAME_LOWER"][typeof e.autoPad>"u"?0:e.autoPad],a=e.dilations,i=e.group,s=e.kernelShape,o=e.pads,u=e.strides,l=e.wIsConst(),d=e.outputPadding,p=e.outputShape;return lt({autoPad:r,format:n,dilations:a,group:i,kernelShape:s,outputPadding:d,outputShape:p,pads:o,strides:u,wIsConst:l,...t})},Wa=(e,t)=>{if(!e||2!==e.length&&3!==e.length)throw new Error("Conv requires 2 or 3 inputs");if(4!==e[0].dims.length&&3!==e[0].dims.length)throw new Error("currently only support 2-dimensional conv");if(e[0].dims.length!==e[1].dims.length)throw new Error("filter does not have same dimension as input");if(e[0].dims["NHWC"===t.format?e[0].dims.length-1:1]!==e[1].dims[0])throw new Error("FILTER_IN_CHANNEL should be equal to DATA_CHANNEL");let n=e[1].dims[1]*t.group;if(3===e.length&&(1!==e[2].dims.length||e[2].dims[0]!==n))throw new Error("invalid bias");let r=e[0].dims.length-2;if(t.dilations.reduce(((e,t)=>e+t),0)>0&&t.dilations.length!==r)throw new Error(`dilations should be ${r}D`);if(t.strides.reduce(((e,t)=>e+t),0)>0&&t.strides.length!==r)throw new Error(`strides should be ${r}D`);if(t.pads.reduce(((e,t)=>e+t),0)>0&&t.pads.length!==2*r)throw new Error(`pads should be ${2*r}D`);if(t.outputPadding.length!==r&&0!==t.outputPadding.length)throw new Error(`output_padding should be ${r}D`);if(t.kernelShape.reduce(((e,t)=>e+t),0)>0&&0!==t.kernelShape.length&&t.kernelShape.length!==e[1].dims.length-2)throw new Error("invalid kernel shape");if(0!==t.outputShape.length&&t.outputShape.length!==e[0].dims.length-2)throw new Error("invalid output shape")},Ua=[2,3,1,0],Va=(e,t,n)=>{let r=Pa(n,t),a="NHWC"===n.format,i=r.outputShape,s=i[a?3:1],o=t[0].dims[a?3:1];if(1!==r.group||1===s&&1===o)return void e.compute(za(t,r));let u=i[a?1:2],l=i[a?2:3],d=a?u*l:s,p=a?s:u*l,c=t[1].dims[2]*t[1].dims[3]*o,f=e.kernelCustomData.wT??e.compute(Nt(t[1],Ua),{inputs:[1],outputs:[n.wIsConst?-2:-1]})[0];n.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=f);let h=[t[0],f],m=3===t.length;m&&(a||1!==t[2].dims.length?h.push(t[2]):h.push(t[2].reshape([t[2].dims[0],1,1]))),e.compute(Aa(h,r,i,d,p,c,m,!0),{inputs:h})},Ha=(e,t)=>{let n="NHWC"===t.format,r=[e.inputs[0].reshape(n?[e.inputs[0].dims[0],1,e.inputs[0].dims[1],e.inputs[0].dims[2]]:[e.inputs[0].dims[0],e.inputs[0].dims[1],1,e.inputs[0].dims[2]]),e.inputs[1].reshape([e.inputs[1].dims[0],e.inputs[1].dims[1],1,e.inputs[1].dims[2]])];3===r.length&&r.push(e.inputs[2]);let a=t.kernelShape;(0===a.length||0===a[0])&&(a=[e.inputs[1].dims[2]]);let i=t.dilations;(0===i.length||0===i[0])&&(i=[1]);let s=t.strides;(0===s.length||0===s[0])&&(s=[1]);let o=t.pads;0===o.length&&(o=[0,0]),o=[0,o[0],0,o[1]],s=[1].concat(s),i=[1].concat(i),a=[1].concat(a);let u=Pa({...t,pads:o,strides:s,dilations:i,kernelShape:a},r);e.compute(za(r,u,(e=>n?[e[0],e[2],e[3]]:[e[0],e[1],e[3]])))},La=(e,t)=>{Wa(e.inputs,t),3===e.inputs[0].dims.length?Ha(e,t):Va(e,e.inputs,t)}})),Zo=N((()=>{$o(),Io(),Eo(),Co(),Ga=(e,t,n,r)=>{let a=ct.size(t),i=t.length,s=Ct("input",e,i),o=Tt("output",e,i),u=6===n.dataType?n.getInt32Array()[0]:Number(n.getBigInt64Array()[0]),l=ct.normalizeAxis(u,i);return{name:"CumSum",shaderCache:{hint:r.cacheKey,inputDependencies:["rank"]},getRunData:()=>({outputs:[{dims:t,dataType:e}],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:[{type:"uint32",data:a},{type:"int32",data:l},...vt(t),...vt(t)]}),getShaderSource:e=>{let t=` i32(${s.indicesGet("inputIndices","uniforms.axis")}) `,n=Et("uniforms.input_shape","uniforms.axis",i),a=r.reverse?t+(r.exclusive?" + 1":""):"0",u=r.reverse?n:t+(r.exclusive?"":" + 1");return`\n ${e.registerUniform("outputSize","u32").registerUniform("axis","u32").declareVariables(s,o)}\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n var inputIndices = ${o.offsetToIndices("global_idx")};\n var sum = ${o.type.value}(0);\n let first : i32 = ${a};\n let last : i32 = ${u};\n for (var i : i32 = first; i < last; i++) {\n ${s.indicesSet("inputIndices","uniforms.axis","u32(i)")};\n sum = sum + ${s.getByIndices("inputIndices")};\n }\n ${o.setByOffset("global_idx","sum")};\n }`}}},Fa=(e,t)=>{let n=e.inputs[0].dims,r=e.inputs[0].dataType,a=e.inputs[1];e.compute(Ga(r,n,a,t),{inputs:[0]})},qa=e=>{let t=1===e.exclusive,n=1===e.reverse;return lt({exclusive:t,reverse:n})}})),Xo=N((()=>{Io(),Eo(),Co(),Ya="^"+(Ka="("+(ja="[a-zA-Z]|\\.\\.\\.")+")+")+"$",Za="^"+("("+Ka+",)*"+Ka)+"$",Xa=class{constructor(e=-1){this.symbolToIndices=new Map,this.inputIndex=e}addSymbol(e,t){let n=this.symbolToIndices.get(e);void 0===n?n=[t]:n.push(t),this.symbolToIndices.set(e,n)}},Qa=class{constructor(e,t){this.equation=t,this.hasEllipsis=!1,this.symbolToInfo=new Map,this.lhs=new Array,this.outputDims=[];let[n,r]=t.includes("->")?t.split("->",2):[t,""];if(!n.match(RegExp(Za)))throw new Error("Invalid LHS term");if(n.split(",").forEach(((t,n)=>{let r=e[n].dims.slice();if(!t.match(RegExp(Ya)))throw new Error("Invalid LHS term");let a=this.processTerm(t,!0,r,n);this.lhs.push(a)})),""===r)r+=[...this.symbolToInfo.entries()].filter((([e,t])=>1===t.count||"..."===e)).map((([e])=>e)).join("");else if(!r.match(RegExp(Ka)))throw new Error("Invalid RHS");r.match(RegExp(ja,"g"))?.forEach((e=>{if("..."===e)this.outputDims=this.outputDims.concat(this.ellipsisDims);else{let t=this.symbolToInfo.get(e);if(void 0===t)throw new Error("Invalid RHS symbol");this.outputDims.push(t.dimValue)}})),this.rhs=this.processTerm(r,!1,this.outputDims)}addSymbol(e,t,n){let r=this.symbolToInfo.get(e);if(void 0!==r){if(r.dimValue!==t&&1!==r.count)throw new Error("Dimension mismatch");r.count++,r.inputIndices.push(n)}else r={count:1,dimValue:t,inputIndices:[n]};this.symbolToInfo.set(e,r)}processTerm(e,t,n,r=-1){let a=n.length,i=!1,s=[],o=0;if(!e.match(RegExp(Ya))&&!t&&""!==e)throw new Error("Invalid LHS term");let u=e.match(RegExp(ja,"g")),l=new Xa(r);return u?.forEach(((e,d)=>{if("..."===e){if(i)throw new Error("Only one ellipsis is allowed per input term");i=!0;let e=a-u.length+1;if(e<0)throw new Error("Ellipsis out of bounds");if(s=n.slice(o,o+e),this.hasEllipsis){if(this.ellipsisDims.length!==s.length||this.ellipsisDims.toString()!==s.toString())throw new Error("Ellipsis dimensions mismatch")}else{if(!t)throw new Error("Ellipsis must be specified in the LHS");this.hasEllipsis=!0,this.ellipsisDims=s}for(let e=0;ee+"_max",ei=(e,t,n,r,a)=>{let i=t.map(((t,n)=>e[n]?t.length:t)).map(((e,t)=>Ct(`input${t}`,n,e))),s=ct.size(a),o=zt(a.length),u=o?a.length:a,l=Tt("output",n,u),d=[...r.symbolToInfo.keys()].filter((e=>!r.rhs.symbolToIndices.has(e)));return{name:"Einsum",shaderCache:{hint:r.equation,inputDependencies:e.map((e=>e?"rank":"dims"))},getRunData:()=>{let i=d.filter((e=>r.symbolToInfo.has(e))).map((e=>({type:"uint32",data:r.symbolToInfo.get(e)?.dimValue||0})));i.push({type:"uint32",data:s});let u=t.filter(((t,n)=>e[n])).map(((e,t)=>[...vt(e)])).reduce(((e,t)=>e.concat(t)),i);return o&&u.push(...vt(a)),{outputs:[{dims:a,dataType:n}],dispatchGroup:{x:Math.ceil(s/64)},programUniforms:u}},getShaderSource:e=>{let t=[],n=[],a=[],s=[],o=[],u=r.symbolToInfo.size===r.rhs.symbolToIndices.size;r.symbolToInfo.forEach(((e,u)=>{if(r.rhs.symbolToIndices.has(u)){let n=r.rhs.symbolToIndices.get(u)?.[0];void 0!==n&&r.lhs.forEach(((r,a)=>{if(e.inputIndices.includes(a)){let e=r.symbolToIndices.get(u);if(void 0===e)throw new Error("Invalid symbol error");e.forEach((e=>{t.push(`${i[a].indicesSet(`input${a}Indices`,e,l.indicesGet("outputIndices",n))}`)}))}}))}else r.lhs.forEach(((t,r)=>{if(e.inputIndices.includes(r)){let e=t.symbolToIndices.get(u);if(void 0===e)throw new Error("Invalid symbol error");e.forEach((e=>{n.push(`${i[r].indicesSet(`input${r}Indices`,e,`${u}`)}`)})),o.push(`prod *= ${i[r].getByIndices(`input${r}Indices`)};`)}})),a.push(`for(var ${u}: u32 = 0; ${u} < uniforms.${Ja(u)}; ${u}++) {`),s.push("}")}));let p=u?[...t,`let sum = ${i.map(((e,t)=>e.getByIndices(`input${t}Indices`))).join(" * ")};`]:[...t,"var sum = 0.0;",...a,...n,"var prod = 1.0;",...o,"sum += prod;",...s];return`\n ${e.registerUniforms(d.map((e=>({name:`${Ja(e)}`,type:"u32"})))).registerUniform("outputSize","u32").declareVariables(...i,l)}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n var outputIndices = ${l.offsetToIndices("global_idx")};\n ${i.map(((e,t)=>`var input${t}Indices: ${i[t].type.indices};`)).join("\n")}\n ${p.join("\n")};\n ${l.setByOffset("global_idx","sum")};\n }`}}},ti=(e,t)=>{let n=new Qa(e.inputs,t.equation),r=e.inputs.map(((e,t)=>zt(e.dims.length))),a=n.outputDims,i=e.inputs.map(((e,t)=>e.dims));e.compute(ei(r,i,e.inputs[0].dataType,n,a))},ni=e=>{let t=e.equation.replace(/\s+/g,"");return lt({equation:t})}})),Qo=N((()=>{$o(),Io(),Co(),ri=e=>{if(!e||2!==e.length)throw new Error("Expand requires 2 input.");let t=e[0].dims,n=Array.from(e[1].getBigInt64Array(),Number),r=n.length{let n=e.length-t.length,r=[];for(let t=0;te.length>t.length?ai(e,t):ai(t,e),si=e=>{let t=e[0].dims,n=Array.from(e[1].getBigInt64Array(),Number),r=ii(t,n),a=e[0].dataType,i=9===a?4:1,s=Math.ceil(ct.size(r)/i),o=zt(t.length),u=zt(r.length),l=[{type:"uint32",data:s}];return o&&l.push(...vt(t)),u&&l.push(...vt(r)),{name:"Expand",shaderCache:{hint:`${r.length}`,inputDependencies:[o?"rank":"dims"]},getShaderSource:e=>{let n,s=o?t.length:t,l=u?r.length:r,d=Ct("input",a,s,i),p=Tt("output",a,l,i);if(9===a){let e=(e,t,n="")=>`\n let outputIndices${t} = ${p.offsetToIndices(`outputOffset + ${t}u`)};\n let offset${t} = ${d.broadcastedIndicesToOffset(`outputIndices${t}`,p)};\n let index${t} = offset${t} / 4u;\n let component${t} = offset${t} % 4u;\n ${e}[${t}] = ${n}(${d.getByOffset(`index${t}`)}[component${t}]);\n `;n=`\n let outputOffset = global_idx * ${i};\n var data = vec4(0);\n ${e("data",0,"u32")}\n ${e("data",1,"u32")}\n ${e("data",2,"u32")}\n ${e("data",3,"u32")}\n ${p.setByOffset("global_idx","data")}\n }`}else n=`\n let outputIndices = ${p.offsetToIndices("global_idx")};\n let inputOffset = ${d.broadcastedIndicesToOffset("outputIndices",p)};\n ${p.setByOffset("global_idx",d.getByOffset("inputOffset"))}\n }`;return`\n ${e.registerUniform("vec_size","u32").declareVariables(d,p)}\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")}\n ${n}`},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(s/64)},programUniforms:l})}},oi=e=>{ri(e.inputs),e.compute(si(e.inputs),{inputs:[0]})}})),Jo=N((()=>{$o(),Io(),Eo(),Co(),ui=e=>{if(!e||2!==e.length)throw new Error("Gather requires 2 inputs.")},li=(e,t)=>{let n=e[0].dims,r=e[1].dims,a=n.length,i=ct.normalizeAxis(t.axis,a),s=n.slice(0);s.splice(i,1,...r);let o=n[i],u=9===e[0].dataType?4:1,l=Math.ceil(ct.size(s)/u),d=zt(e[0].dims.length),p=d?e[0].dims.length:e[0].dims,c=zt(e[1].dims.length),f=c?e[1].dims.length:e[1].dims,h=zt(s.length),m=h?s.length:s,g=[{type:"uint32",data:l},{type:"int32",data:o},{type:"uint32",data:i}];d&&g.push(...vt(e[0].dims)),c&&g.push(...vt(e[1].dims)),h&&g.push(...vt(s));let y=[];y.push(d?"rank":"dims"),y.push(c?"rank":"dims");return{name:"Gather",shaderCache:{hint:t.cacheKey,inputDependencies:y},getRunData:()=>({outputs:[{dims:s,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(l/64)},programUniforms:g}),getShaderSource:t=>{let n,o=Ct("data",e[0].dataType,p,u),l=Ct("inputIndices",e[1].dataType,f),d=Tt("output",e[0].dataType,m,u),c=e=>{let t=r.length,n=`var indicesIndices${e} = ${l.type.indices}(0);`;for(let r=0;r1?`indicesIndices${e}[${r}]`:`indicesIndices${e}`} = ${s.length>1?`outputIndices${e}[uniforms.axis + ${r}]`:`outputIndices${e}`};`;n+=`\n var idx${e} = ${l.getByIndices(`indicesIndices${e}`)};\n if (idx${e} < 0) {\n idx${e} = idx${e} + uniforms.axisDimLimit;\n }\n var dataIndices${e} = ${o.type.indices}(0);\n `;for(let r=0,o=0;r1?`dataIndices${e}[${r}]`:`dataIndices${e}`} = u32(idx${e});`,o+=t):(n+=`${a>1?`dataIndices${e}[${r}]`:`dataIndices${e}`} = ${s.length>1?`outputIndices${e}[${o}]`:`outputIndices${e}`};`,o++);return n};if(9===e[0].dataType){let e=(e,t,n="")=>`\n let outputIndices${t} = ${d.offsetToIndices(`outputOffset + ${t}u`)};\n ${c(t)};\n let offset${t} = ${o.indicesToOffset(`dataIndices${t}`)};\n let index${t} = offset${t} / 4u;\n let component${t} = offset${t} % 4u;\n ${e}[${t}] = ${n}(${o.getByOffset(`index${t}`)}[component${t}]);\n `;n=`\n let outputOffset = global_idx * ${u};\n var value = vec4(0);\n ${e("value",0,"u32")}\n ${e("value",1,"u32")}\n ${e("value",2,"u32")}\n ${e("value",3,"u32")}\n ${d.setByOffset("global_idx","value")}\n `}else n=`\n let outputIndices = ${d.offsetToIndices("global_idx")};\n ${c("")};\n let value = ${o.getByIndices("dataIndices")};\n ${d.setByOffset("global_idx","value")};\n `;return`\n ${t.registerUniform("outputSize","u32").registerUniform("axisDimLimit","i32").registerUniform("axis","u32").declareVariables(o,l,d)}\n ${t.mainStart()}\n ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n ${n}\n }`}}},di=e=>lt({axis:e.axis}),pi=(e,t)=>{let n=e.inputs;ui(n),e.compute(li(e.inputs,t))}})),eu=N((()=>{Io(),Eo(),Co(),ci=e=>{if(!e||2!==e.length)throw new Error("GatherElements requires 2 inputs.");if(e[0].dims.length<1)throw new Error("GatherElements requires that the data input be rank >= 1.");if(e[0].dims.length!==e[1].dims.length)throw new Error("GatherElements requires that the data input and\n indices input tensors be of same rank.")},fi=(e,t)=>{let n=e[0].dims,r=e[0].dataType,a=n.length,i=e[1].dims,s=e[1].dataType,o=ct.normalizeAxis(t.axis,a),u=n[o],l=i.slice(0),d=ct.size(l),p=Ct("input",r,a),c=Ct("indicesInput",s,i.length),f=Tt("output",r,l.length),h=[{type:"uint32",data:d},{type:"int32",data:u},{type:"uint32",data:o}];return h.push(...vt(n)),h.push(...vt(i)),h.push(...vt(l)),{name:"GatherElements",shaderCache:{inputDependencies:["rank","rank"]},getRunData:()=>({outputs:[{dims:l,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(d/64)},programUniforms:h}),getShaderSource:e=>`\n ${e.registerUniform("outputSize","u32").registerUniform("axisDimLimit","i32").registerUniform("axis","u32").declareVariables(p,c,f)}\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n\n let outputIndices = ${f.offsetToIndices("global_idx")};\n\n var idx = ${c.getByOffset("global_idx")};\n if (idx < 0) {\n idx = idx + uniforms.axisDimLimit;\n }\n var inputIndices = ${p.type.indices}(outputIndices);\n ${p.indicesSet("inputIndices","uniforms.axis","u32(idx)")};\n let value = ${p.getByIndices("inputIndices")};\n\n ${f.setByOffset("global_idx","value")};\n }`}},hi=e=>lt({axis:e.axis}),mi=(e,t)=>{let n=e.inputs;ci(n),e.compute(fi(e.inputs,t))}})),tu=N((()=>{Io(),Co(),gi=e=>{if(!e)throw new Error("Input is missing");if(e.length<2||e.length>3)throw new Error("Invaid input number.");if(3===e.length&&e[2].dims.length>2)throw new Error("Invalid input shape of C");if(e[0].dataType!==e[1].dataType||3===e.length&&e[0].dataType!==e[2].dataType)throw new Error("Input types are mismatched")},yi=(e,t)=>{let n=e[0].dims.slice(),r=e[1].dims.slice(),[a,i,s]=ht.getShapeOfGemmResult(n,t.transA,r,t.transB,3===e.length?e[2].dims:void 0),o=[a,i];if(!o)throw new Error("Can't use gemm on the given tensors");let u=ct.size(o),l=[{type:"uint32",data:u},{type:"uint32",data:a},{type:"uint32",data:i},{type:"uint32",data:s},{type:"float32",data:t.alpha},{type:"float32",data:t.beta}],d=["type","type"];3===e.length&&(l.push(...vt(e[2].dims)),d.push("rank")),l.push(...vt(o));return{name:"Gemm",shaderCache:{hint:`${t.cacheKey}`,inputDependencies:d},getRunData:()=>({outputs:[{dims:o,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:l}),getShaderSource:n=>{let r="";t.transA&&t.transB?r="value += a[k * uniforms.M + m] * b[n * uniforms.K + k];":t.transA&&!t.transB?r="value += a[k * uniforms.M + m] * b[k * uniforms.N + n];":!t.transA&&t.transB?r="value += a[m * uniforms.K + k] * b[n * uniforms.K + k];":!t.transA&&!t.transB&&(r="value += a[m * uniforms.K + k] * b[k * uniforms.N + n];");let a=1===t.alpha?"":"value *= uniforms.alpha;",i=Ct("a",e[0].dataType,e[0].dims),s=Ct("b",e[1].dataType,e[1].dims),u=i.type.value,l=null,d=[i,s];3===e.length&&(l=Ct("c",e[2].dataType,e[2].dims.length),d.push(l));let p=Tt("output",e[0].dataType,o.length);d.push(p);return`\n ${n.registerUniforms([{name:"output_size",type:"u32"},{name:"M",type:"u32"},{name:"N",type:"u32"},{name:"K",type:"u32"},{name:"alpha",type:"f32"},{name:"beta",type:"f32"}]).declareVariables(...d)}\n\n ${n.mainStart()}\n ${n.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}\n\n let m = global_idx / uniforms.N;\n let n = global_idx % uniforms.N;\n\n var value = ${u}(0);\n for (var k: u32 = 0u; k < uniforms.K; k++) {\n ${r}\n }\n\n ${a}\n ${null!=l?`let cOffset = ${l.broadcastedIndicesToOffset("vec2(m, n)",p)}; value += ${u}(uniforms.beta) * ${l.getByOffset("cOffset")};`:""}\n output[global_idx] = value;\n }`}}},wi=e=>({transA:e.transA,transB:e.transB,alpha:e.alpha,beta:e.beta,cacheKey:`${e.transA};${e.transB};${1===e.alpha}`}),$i=(e,t)=>{gi(e.inputs),e.compute(yi(e.inputs,t))}})),nu=N((()=>{$o(),Io(),Co(),vi=(e,t)=>{let n=e[0].dims,r=n,a=ct.sizeToDimension(n,2),i=ct.sizeFromDimension(n,2),s=bt(i),o=i/s,u=[n[0],n[1],o],l=[{type:"uint32",data:i},{type:"uint32",data:o}];l.push(...vt(u),...vt(u));return{name:"InstanceNormalization",shaderCache:{hint:`${t.epsilon};${s}`,inputDependencies:["rank","type","type"]},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:a},programUniforms:l}),getShaderSource:n=>{let r=Ct("x",e[0].dataType,u.length,s),a=Ct("scale",e[1].dataType,e[1].dims),i=Ct("bias",e[2].dataType,e[2].dims),o=Tt("output",e[0].dataType,u.length,s),l=[r,a,i,o],d=r.type.value,p=1===s?"f32":`vec${s}`;return`\n var meanShared : f32;\n var squaredNormShared : f32;\n var workgroupShared : array<${p}, 64>;\n const workgroupSize = 64u;\n ${n.registerUniforms([{name:"normSize",type:"u32"},{name:"normPackedSize",type:"u32"}]).declareVariables(...l)}\n ${n.mainStart(64)}\n let norm = global_idx / workgroupSize;\n let batch = norm / uniforms.x_shape[1];\n let channel = norm % uniforms.x_shape[1];\n let localIndex = local_id.x;\n\n // initialize workgroup memory\n var initial = ${p}(0);\n for (var h = localIndex; h < uniforms.normPackedSize; h += workgroupSize) {\n initial = initial + ${p}(${r.get("batch","channel","h")});\n }\n workgroupShared[localIndex] = initial;\n workgroupBarrier();\n\n // Calculate the mean of current channel data.\n for (var currSize = workgroupSize >> 1; currSize > 0; currSize = currSize >> 1) {\n if (localIndex < currSize) {\n workgroupShared[localIndex] = workgroupShared[localIndex] + workgroupShared[localIndex + currSize];\n }\n workgroupBarrier();\n }\n if (localIndex == 0) {\n meanShared = ${St("workgroupShared[0]",s)} / f32(uniforms.normSize);\n }\n workgroupBarrier();\n\n // reinitialize workgroup memory.\n initial = ${p}(0);\n for (var h = localIndex; h < uniforms.normPackedSize; h += workgroupSize) {\n let deviation = ${p}(${r.get("batch","channel","h")}) - ${p}(meanShared);\n initial = initial + deviation * deviation;\n }\n workgroupShared[localIndex] = initial;\n workgroupBarrier();\n\n // Calculate the sum of square of deviation of current channel data.\n for (var currSize = workgroupSize >> 1; currSize > 0; currSize = currSize >> 1) {\n if (localIndex < currSize) {\n workgroupShared[localIndex] = workgroupShared[localIndex] + workgroupShared[localIndex + currSize];\n }\n workgroupBarrier();\n }\n if (localIndex == 0) {\n squaredNormShared = ${St("workgroupShared[0]",s)};\n }\n workgroupBarrier();\n\n let invStdDev = inverseSqrt(squaredNormShared / f32(uniforms.normSize) + f32(${t.epsilon}));\n let channelScale = invStdDev * f32(${a.getByOffset("channel")});\n let channelShift = f32(${i.getByOffset("channel")}) - meanShared * channelScale;\n for (var h = localIndex; h < uniforms.normPackedSize; h += workgroupSize) {\n let value = ${r.get("batch","channel","h")} * ${d}(${p}(channelScale)) + ${d}(${p}(channelShift));\n ${o.set("batch","channel","h","value")};\n }\n }`}}},bi=(e,t,n,r,a,i,s,o)=>{let u=bt(s),l=64,d=1===u?"vec2f":`mat2x${u}f`,p=1===u?"f32":`vec${u}f`,c=(e,t)=>`${d}(${e}, ${t})`,f=a*s/u,h=[{type:"uint32",data:Math.ceil(i/l)},{type:"uint32",data:i},{type:"uint32",data:Math.floor(s/u)},{type:"uint32",data:Math.floor(i*s/u)}],m=e.compute({name:"InstanceNormComputeMean",shaderCache:{hint:`${u}`,inputDependencies:["type"]},getRunData:()=>({outputs:[{dims:[a,s,l,2],dataType:1}],dispatchGroup:{x:a*s/u},programUniforms:h}),getShaderSource:e=>{let n=Ct("input",t.dataType,t.dims,u);return`\n ${e.declareVariables(n)}\n @group(0) @binding(1) var output : array<${d}>;\n struct Uniforms {wg_size:u32, H:u32, C:u32, image_size:u32};\n @group(0) @binding(2) var uniforms: Uniforms;\n\n ${e.mainStart(l)}\n let currentImageNumber = global_idx / 64 / uniforms.C;\n let currentChannelNumber = (global_idx / 64) % uniforms.C;\n let wgId = global_idx % 64;\n let wgOffset = wgId * uniforms.wg_size;\n if (wgOffset >= uniforms.H) {\n return;\n }\n let wgMax = min(wgOffset + uniforms.wg_size, uniforms.H);\n\n let offset = currentImageNumber * uniforms.image_size + currentChannelNumber;\n var sum = ${_t("f32",u)};\n var squaredSum = ${_t("f32",u)};\n for (var i: u32 = wgOffset; i < wgMax; i++) {\n let value = ${p}(input[offset + i * uniforms.C]);\n sum += value;\n squaredSum += value * value;\n }\n output[global_idx] = ${c("sum","squaredSum")};\n }`}},{inputs:[t],outputs:[-1]})[0],g=[{type:"uint32",data:f},{type:"uint32",data:i},{type:"uint32",data:Math.floor(s/u)},{type:"uint32",data:Math.floor(l*s/u)}];return e.compute({name:"InstanceNormComputeChannelScaleShift",shaderCache:{hint:`${u};${o}`,inputDependencies:["type","type","type"]},getRunData:()=>({outputs:[{dims:[a,s,2],dataType:1}],dispatchGroup:{x:Math.ceil(f/64)},programUniforms:g}),getShaderSource:e=>{let t=Ct("scale",n.dataType,n.dims,u),a=Ct("bias",r.dataType,r.dims,u);return`\n @group(0) @binding(0) var input : array<${d}>;\n @group(0) @binding(1) var scale : array<${t.type.storage}>;\n @group(0) @binding(2) var bias : array<${a.type.storage}>;\n @group(0) @binding(3) var output : array<${d}>;\n struct Uniforms {units_of_work : u32, H: u32, C : u32, image_size : u32};\n @group(0) @binding(4) var uniforms: Uniforms;\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.units_of_work")}\n let currentImageNumber = global_idx / uniforms.C;\n let currentChannelNumber = global_idx % uniforms.C;\n\n let offset = currentImageNumber * uniforms.image_size;\n var sum = ${_t("f32",u)};\n var squaredSum = ${_t("f32",u)};\n for (var i: u32 = 0; i < 64; i++) {\n let value = input[offset + i + currentChannelNumber * 64];\n sum += value[0];\n squaredSum += value[1];\n }\n sum = sum / f32(uniforms.H);\n squaredSum = squaredSum / f32(uniforms.H);\n let invStdDev = inverseSqrt(squaredSum - sum * sum + f32(${o}));\n let channelScale = invStdDev * ${p}(scale[currentChannelNumber]);\n let channelShift = ${p}(bias[currentChannelNumber]) - sum * channelScale;\n\n output[global_idx] = ${c("channelScale","channelShift")};\n }`}},{inputs:[m,n,r],outputs:[-1]})[0]},_i=(e,t,n)=>{let r=t[0].dims,a=r,i=r[0],s=r[r.length-1],o=ct.sizeFromDimension(r,1)/s,u=bt(s),l=ct.size(a)/u,d=[{type:"uint32",data:o},{type:"uint32",data:Math.floor(s/u)}],p=bi(e,t[0],t[1],t[2],i,o,s,n.epsilon);e.compute({name:"InstanceNormalizationNHWC",shaderCache:{hint:`${u}`,inputDependencies:["type","type"]},getRunData:()=>({outputs:[{dims:a,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(l/64)},programUniforms:d}),getShaderSource:e=>{let n=wt(t[0].dataType),r=1===u?"vec2f":`mat2x${u}f`,i=1===u?n:`vec${u}<${n}>`,s=Ct("input",t[0].dataType,t[0].dims,u),o=Tt("output",t[0].dataType,a,u);return`\n @group(0) @binding(0) var input : array<${s.type.storage}>;\n @group(0) @binding(1) var scaleInput : array<${r}>;\n @group(0) @binding(2) var output : array<${o.type.storage}>;\n struct Uniforms {H: u32, C : u32};\n @group(0) @binding(3) var uniforms: Uniforms;\n\n ${e.mainStart()}\n let currentImageNumber = global_idx / (uniforms.C * uniforms.H);\n let currentChannelNumber = global_idx % uniforms.C;\n\n let scaleOffset = currentImageNumber * uniforms.C + currentChannelNumber;\n let scale = scaleInput[scaleOffset];\n output[global_idx] = fma(input[global_idx], ${i}(scale[0]), ${i}(scale[1]));\n }`}},{inputs:[t[0],p]})},xi=(e,t)=>{"NHWC"===t.format?_i(e,e.inputs,t):e.compute(vi(e.inputs,t))}})),ru=N((()=>{$o(),Io(),Co(),Si=e=>{if(!e||e.length<2)throw new Error("layerNorm requires at least 2 inputs.")},Ei=(e,t,n)=>{let r=e[0].dims,a=e[1],i=e[2],s=r,o=ct.normalizeAxis(t.axis,r.length),u=ct.sizeToDimension(r,o),l=ct.sizeFromDimension(r,o),d=ct.size(a.dims),p=i?ct.size(i.dims):0;if(d!==l||i&&p!==l)throw new Error(`Size of X.shape()[axis:] == ${l}.\n Size of scale and bias (if provided) must match this.\n Got scale size of ${d} and bias size of ${p}`);let c=[];for(let e=0;e1,y=n>2,w=[{dims:s,dataType:e[0].dataType}];return g&&w.push({dims:c,dataType:1}),y&&w.push({dims:c,dataType:1}),{name:"LayerNormalization",shaderCache:{hint:`${f};${n}`,inputDependencies:h},getRunData:()=>({outputs:w,dispatchGroup:{x:Math.ceil(u/64)},programUniforms:m}),getShaderSource:t=>{let n=wt(e[0].dataType),r=[Ct("x",e[0].dataType,e[0].dims,f),Ct("scale",a.dataType,a.dims,f)];i&&r.push(Ct("bias",i.dataType,i.dims,f)),r.push(Tt("output",e[0].dataType,s,f)),g&&r.push(Tt("mean_data_output",1,c)),y&&r.push(Tt("inv_std_output",1,c));return`\n ${t.registerUniforms([{name:"norm_count",type:"u32"},{name:"norm_size",type:"f32"},{name:"norm_size_vectorized",type:"u32"},{name:"epsilon",type:"f32"}]).declareVariables(...r)}\n ${t.mainStart()}\n ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.norm_count")}\n let offset = global_idx * uniforms.norm_size_vectorized;\n var meanVector = ${_t("f32",f)};\n var meanSquareVector = ${_t("f32",f)};\n\n for (var h: u32 = 0u; h < uniforms.norm_size_vectorized; h++) {\n let value = ${xt(n,f,"x[h + offset]")};\n meanVector += value;\n meanSquareVector += value * value;\n }\n let mean = ${St("meanVector",f)} / uniforms.norm_size;\n let invStdDev =\n inverseSqrt(${St("meanSquareVector",f)} / uniforms.norm_size - mean * mean + uniforms.epsilon);\n\n for (var j: u32 = 0; j < uniforms.norm_size_vectorized; j++) {\n let f32input = ${xt(n,f,"x[j + offset]")};\n let f32scale = ${xt(n,f,"scale[j]")};\n output[j + offset] = ${r[0].type.value}((f32input - mean) * invStdDev * f32scale\n ${i?`+ ${xt(n,f,"bias[j]")}`:""}\n );\n }\n\n ${g?"mean_data_output[global_idx] = mean":""};\n ${y?"inv_std_output[global_idx] = invStdDev":""};\n }`}}},Ii=(e,t)=>{Si(e.inputs),e.compute(Ei(e.inputs,t,e.outputCount))}})),au=N((()=>{Io(),Eo(),xo(),Ro(),Co(),To(),Ci=(e,t)=>{let n=e[0],r=e[1],a=e[2],i=e[3],s=e[4],o=e[5],u=e[6],l=e[7];if(3!==n.dims.length&&5!==n.dims.length)throw new Error("Input query is expected to have 3 or 5 dimensions");let d,p=n.dims[0],c=n.dims[1],f=3===n.dims.length?n.dims[2]:t.numHeads*n.dims[4],h=c,m=0,g=0,y=Math.floor(f/t.numHeads);if(u&&l){if(4!==u.dims.length)throw new Error('Input "past_key" is expected to have 4 dimensions');if(4!==l.dims.length)throw new Error('Input "past_value" is expected to have 4 dimensions');m=u.dims[2],g=u.dims[2]}else if(u||l)throw new Error('Input "past_key" and "past_value" shall be both present or both absent');if(r){if(3!==n.dims.length)throw new Error('Input "query" is expected to have 3 dimensions when key is given');if(r.dims.length<3||r.dims.length>5)throw new Error('Input "key" is expected to have 3, 4, or 5 dimensions');if(n.dims[0]!==r.dims[0])throw new Error('Input "query" and "key" shall have same dim 0 (batch size)');if(3===r.dims.length){if(r.dims[2]!==n.dims[2])throw new Error('Input "query" and "key" shall have same dim 2 (hidden_size)');d=2,h=r.dims[1]}else if(5===r.dims.length){if(r.dims[2]!==t.numHeads||2!==r.dims[3]||r.dims[4]!==y)throw new Error('Expect "key" shape (batch_size, kv_sequence_length, num_heads, 2, head_size) for packed kv');if(a)throw new Error('Expect "value" be none when "key" has packed kv format.');d=5,h=r.dims[1]}else{if(r.dims[1]!==t.numHeads||r.dims[3]!==y)throw new Error('Expect "key" shape (batch_size, num_heads, kv_sequence_length, head_size) for past_key');d=0,h=r.dims[2]}}else{if(3!==n.dims.length&&5!==n.dims.length)throw new Error('Input "query" is expected to have 3 or 5 dimensions when key is empty');if(5===n.dims.length&&(n.dims[2]!==t.numHeads||3!==n.dims[3]))throw new Error('Expect "query" shape (batch_size, kv_sequence_length, num_heads, 3, head_size) for packed kv');d=3}if(i){if(1!==i.dims.length)throw new Error('Input "bias" is expected to have 1 dimension');if(a&&5===n.dims.length&&2===n.dims[3])throw new Error("bias is not allowed for packed kv.")}let w=0;if(s){w=8;let e=s.dims;throw 1===e.length?e[0]===p?w=1:e[0]===3*p+2&&(w=3):2===e.length&&e[0]===p&&e[1]===h&&(w=5),8===w?new Error('Input "key_padding_mask" shape shall be (batch_size) or (batch_size, kv_sequence_length)'):new Error("Mask not supported")}let $=!1,v=f;if(a){if(3!==a.dims.length&&4!==a.dims.length)throw new Error('Input "value" is expected to have 3 or 4 dimensions');if(n.dims[0]!==a.dims[0])throw new Error('Input "query" and "value" shall have same dim 0 (batch_size)');if(3===a.dims.length){if(h!==a.dims[1])throw new Error('Input "key" and "value" shall have the same dim 1 (kv_sequence_length)');v=a.dims[2]}else{if(h!==a.dims[2])throw new Error('Input "past_key" and "past_value" shall have the same dim 2 (kv_sequence_length)');v=a.dims[1]*a.dims[3],$=!0}}let b=m+h;if(s)throw new Error("Key padding mask is not supported");if(o)throw new Error("extraAddQk is not supported");if(u)throw new Error("pastKey is not supported");if(l)throw new Error("pastValue is not supported");return{batchSize:p,sequenceLength:c,pastSequenceLength:m,kvSequenceLength:h,totalSequenceLength:b,maxSequenceLength:g,inputHiddenSize:0,hiddenSize:f,vHiddenSize:v,headSize:y,vHeadSize:Math.floor(v/t.numHeads),numHeads:t.numHeads,isUnidirectional:!1,pastPresentShareBuffer:!1,maskFilterValue:t.maskFilterValue,maskType:w,scale:t.scale,broadcastResPosBias:!1,passPastInKv:$,qkvFormat:d}},Ti=e=>lt({...e}),ki=lt({perm:[0,2,1,3]}),Oi=(e,t,n,r,a,i,s)=>{let o=[r,a,i],u=ct.size(o),l=[{type:"uint32",data:u},{type:"uint32",data:s},{type:"uint32",data:i}];return e.compute({name:"MultiHeadAttentionAddBias",shaderCache:{inputDependencies:["type","type"]},getRunData:()=>({outputs:[{dims:o,dataType:t.dataType,gpuDataType:0}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:l}),getShaderSource:e=>{let r=Tt("qkv_with_bias",t.dataType,o),a=Ct("qkv",t.dataType,o),i=Ct("bias",n.dataType,o);return`\n ${e.registerUniforms([{name:"output_size",type:"u32"},{name:"bias_offset",type:"u32"},{name:"hidden_size",type:"u32"}]).declareVariables(a,i,r)}\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}\n let bias_offset_idx = (global_idx % uniforms.hidden_size) + uniforms.bias_offset;\n\n qkv_with_bias[global_idx] = qkv[global_idx] + bias[bias_offset_idx];\n }`}},{inputs:[t,n],outputs:[-1]})[0]},Ai=(e,t,n,r,a,i,s,o)=>{let u=i;if(s){if(1===r)throw new Error("AddBiasReshape is not implemented. Please export your model with packed QKV or KV");return u=Oi(e,i,s,t,r,n*a,o),u=u.reshape([t,r,n,a]),e.compute(Nt(u,ki.perm),{inputs:[u],outputs:[-1]})[0]}return 3===i.dims.length&&(u=i.reshape([t,r,n,a])),e.compute(Nt(u,ki.perm),{inputs:[u],outputs:[-1]})[0]},Ri=(e,t)=>{let n=Ci(e.inputs,t);if(5===e.inputs[0].dims.length)throw new Error("Packed QKV is not implemented");if(5===e.inputs[1]?.dims.length)throw new Error("Packed KV is not implemented");let r=e.inputs[1]&&e.inputs[2]&&4===e.inputs[1].dims.length&&4===e.inputs[2].dims.length,a=Ai(e,n.batchSize,n.numHeads,n.sequenceLength,n.headSize,e.inputs[0],e.inputs[3],0);if(r)return Ln(e,a,e.inputs[1],e.inputs[2],e.inputs[4],void 0,void 0,void 0,e.inputs[5],n,t);let i=Ai(e,n.batchSize,n.numHeads,n.kvSequenceLength,n.headSize,e.inputs[1],e.inputs[3],n.hiddenSize),s=Ai(e,n.batchSize,n.numHeads,n.kvSequenceLength,n.vHeadSize,e.inputs[2],e.inputs[3],2*n.hiddenSize);Ln(e,a,i,s,e.inputs[4],void 0,e.inputs[6],e.inputs[7],e.inputs[5],n,t)}})),iu=N((()=>{$o(),Io(),Co(),zi=e=>{if(!e||e.length<1)throw new Error("Too few inputs");if(1!==e[0].dataType)throw new Error("Input type must be float.");if(e.length>=2){let t=2*e[0].dims.length===e[1].dims[0];if(4===e.length&&(t=2*e[3].dims[0]===e[1].dims[0]),!t)throw new Error("The pads should be a 1D tensor of shape [2 * input_rank] or [2 * num_axes].")}},Bi=(e,t,n)=>{let r="";for(let a=t-1;a>=0;--a)r+=`\n k = i32(${e.indicesGet("indices",a)}) - ${Et("uniforms.pads",a,n)};\n if (k < 0) {\n break;\n }\n if (k >= i32(${Et("uniforms.x_shape",a,t)})) {\n break;\n }\n offset += k * i32(${Et("uniforms.x_strides",a,t)});\n `;return`\n value = ${e.type.value}(uniforms.constant_value);\n for (var i = 0; i < 1; i++) {\n var offset = 0;\n var k = 0;\n ${r}\n value = x[offset];\n }\n `},Di=(e,t,n)=>{let r="";for(let a=t-1;a>=0;--a)r+=`\n k = i32(${e.indicesGet("indices",a)}) - ${Et("uniforms.pads",a,n)};\n if (k < 0) {\n k = -k;\n }\n {\n let _2n_1 = 2 * (i32(${Et("uniforms.x_shape",a,t)}) - 1);\n k = k % _2n_1;\n if(k >= i32(${Et("uniforms.x_shape",a,t)})) {\n k = _2n_1 - k;\n }\n }\n offset += k * i32(${Et("uniforms.x_strides",a,t)});\n `;return`\n var offset = 0;\n var k = 0;\n ${r}\n value = x[offset];\n `},Mi=(e,t,n)=>{let r="";for(let a=t-1;a>=0;--a)r+=`\n k = i32(${e.indicesGet("indices",a)}) - ${Et("uniforms.pads",a,n)};\n if (k < 0) {\n k = 0;\n }\n if (k >= i32(${Et("uniforms.x_shape",a,t)})) {\n k = i32(${Et("uniforms.x_shape",a,t)}) - 1;\n }\n offset += k * i32(${Et("uniforms.x_strides",a,t)});\n `;return`\n var offset = 0;\n var k = 0;\n ${r}\n value = x[offset];\n `},Pi=(e,t,n)=>{let r="";for(let a=t-1;a>=0;--a)r+=`\n k = i32(${e.indicesGet("indices",a)}) - ${Et("uniforms.pads",a,n)};\n if (k < 0) {\n k += i32(${Et("uniforms.x_shape",a,t)}]);\n }\n if (k >= i32(${Et("uniforms.x_shape",a,t)})) {\n k -= i32(${Et("uniforms.x_shape",a,t)});\n }\n offset += k * i32(${Et("uniforms.x_strides",a,t)});\n `;return`\n var offset = 0;\n var k = 0;\n ${r}\n value = x[offset];\n `},Ni=(e,t,n)=>{switch(n.mode){case 0:return Bi(e,t,n.pads.length);case 1:return Di(e,t,n.pads.length);case 2:return Mi(e,t,n.pads.length);case 3:return Pi(e,t,n.pads.length);default:throw new Error("Invalid mode")}},Wi=(e,t)=>{let n=ct.padShape(e[0].dims.slice(),t.pads),r=e[0].dims,a=[{type:"uint32",data:ct.size(n)},{type:"uint32",data:t.pads}];if(0===t.mode){let n=Ve(e[0].dataType);a.push({type:n,data:t.value})}a.push(...vt(e[0].dims),...vt(n));return{name:"Pad",shaderCache:{hint:`${t.mode}`,inputDependencies:["rank"]},getRunData:()=>({outputs:[{dims:n,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(ct.size(n)/64)},programUniforms:a}),getShaderSource:a=>{let i=Tt("output",e[0].dataType,n.length),s=Ct("x",e[0].dataType,r.length),o=s.type.value,u=Ni(i,r.length,t),l=[{name:"output_size",type:"u32"},{name:"pads",type:"i32",length:t.pads.length}];return 0===t.mode&&l.push({name:"constant_value",type:o}),`\n ${a.registerUniforms(l).declareVariables(s,i)}\n ${a.mainStart()}\n ${a.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}\n\n let indices = ${i.offsetToIndices("global_idx")};\n\n var value = ${o}(0);\n ${u}\n output[global_idx] = value;\n }`}}},Ui=(e,t)=>{if(e.length>1){let n=e[1].getBigInt64Array(),r=e.length>=3&&e[2].data?e[2].getFloat32Array()[0]:0,a=e[0].dims.length,i=new Int32Array(2*a).fill(0);if(e.length>=4){let t=e[3].getBigInt64Array();for(let e=0;ei[Number(t)]=Number(e)));let s=[];return i.forEach((e=>s.push(e))),{mode:t.mode,value:r,pads:s}}return t},Vi=(e,t)=>{zi(e.inputs);let n=Ui(e.inputs,t);e.compute(Wi(e.inputs,n),{inputs:[0]})}})),su=N((()=>{se(),Io(),Co(),Hi=e=>{if(d.webgpu.validateInputContent&&(!e||1!==e.length))throw new Error("Pool ops requires 1 input.")},Li=(e,t,n)=>{let r="NHWC"===t.format,a=e.dims.slice();r&&a.splice(1,0,a.pop());let i=Object.hasOwnProperty.call(t,"dilations"),s=t.kernelShape.slice(),o=t.strides.slice(),u=i?t.dilations.slice():[],l=t.pads.slice();ft.adjustPoolAttributes(n,a,s,o,u,l);let d=ft.computePoolOutputShape(n,a,o,u,s,l,t.autoPad),p=Object.assign({},t);i?Object.assign(p,{kernelShape:s,strides:o,pads:l,dilations:u,cacheKey:t.cacheKey}):Object.assign(p,{kernelShape:s,strides:o,pads:l,cacheKey:t.cacheKey});let c=d.slice();return c.push(c.splice(1,1)[0]),[p,r?c:d]},Gi=(e,t)=>{let n="NHWC"===t.format,r=[{type:"uint32",data:ct.size(e)},{type:"uint32",data:ct.size(t.kernelShape)}],a=[{name:"outputSize",type:"u32"},{name:"kernelSize",type:"u32"}];if(t.kernelShape.length<=2){let e=t.kernelShape[t.kernelShape.length-1],n=t.strides[t.strides.length-1],i=t.pads[t.pads.length/2-1],s=t.pads[t.pads.length-1],o=!!(i+s);r.push({type:"uint32",data:e},{type:"uint32",data:n},{type:"uint32",data:i},{type:"uint32",data:s}),a.push({name:"kw",type:"u32"},{name:"sw",type:"u32"},{name:"pwStart",type:"u32"},{name:"pwEnd",type:"u32"});let u=!1;if(2===t.kernelShape.length){let e=t.kernelShape[t.kernelShape.length-2],n=t.strides[t.strides.length-2],i=t.pads[t.pads.length/2-2],s=t.pads[t.pads.length-2];u=!!(i+s),r.push({type:"uint32",data:e},{type:"uint32",data:n},{type:"uint32",data:i},{type:"uint32",data:s}),a.push({name:"kh",type:"u32"},{name:"sh",type:"u32"},{name:"phStart",type:"u32"},{name:"phEnd",type:"u32"})}return[r,a,!0,o,u]}{if(n)throw new Error("Pooling with kernelShape.length > 2 is not supported for NHWC format.");let e=ct.computeStrides(t.kernelShape);return r.push({type:"uint32",data:e},{type:"uint32",data:t.pads},{type:"uint32",data:t.strides}),a.push({name:"kernelStrides",type:"u32",length:e.length},{name:"pads",type:"u32",length:t.pads.length},{name:"strides",type:"u32",length:t.strides.length}),[r,a,!!t.pads.reduce(((e,t)=>e+t)),!1,!1]}},Fi=(e,t,n,r,a,i,s,o,u,l,d,p)=>{let c="NHWC"===a.format,f=t.type.value,h=Tt("output",t.type.tensor,r);if(a.kernelShape.length<=2){let r="",l="",m="",g=n-(c?2:1);if(r=d?`\n for (var i: u32 = 0u; i < uniforms.kw; i++) {\n xIndices[${g}] = indices[${g}] * uniforms.sw - uniforms.pwStart + i;\n if (xIndices[${g}] < 0 || xIndices[${g}]\n >= uniforms.x_shape[${g}]) {\n pad++;\n continue;\n }\n let x_val = x[${t.indicesToOffset("xIndices")}];\n ${i}\n }`:`\n for (var i: u32 = 0u; i < uniforms.kw; i++) {\n xIndices[${g}] = indices[${g}] * uniforms.sw - uniforms.pwStart + i;\n let x_val = x[${t.indicesToOffset("xIndices")}];\n ${i}\n }`,2===a.kernelShape.length){let e=n-(c?3:2);l=p?`\n for (var j: u32 = 0u; j < uniforms.kh; j++) {\n xIndices[${e}] = indices[${e}] * uniforms.sh - uniforms.phStart + j;\n if (xIndices[${e}] < 0 || xIndices[${e}] >= uniforms.x_shape[${e}]) {\n pad += i32(uniforms.kw);\n continue;\n }\n `:`\n for (var j: u32 = 0u; j < uniforms.kh; j++) {\n xIndices[${e}] = indices[${e}] * uniforms.sh - uniforms.phStart + j;\n `,m="\n }\n "}return`\n ${e.registerUniforms(u).declareVariables(t,h)}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n\n let indices = ${h.offsetToIndices("global_idx")};\n var xIndices = ${h.offsetToIndices("global_idx")};\n\n var value = ${f}(${o});\n var pad = 0;\n ${l}\n ${r}\n ${m}\n ${s}\n\n output[global_idx] = value;\n }`}{if(c)throw new Error("Pooling with kernelShape.length > 2 is not supported for NHWC format.");let r=a.kernelShape.length,d=a.pads.length,p="";return p=l?`\n if (xIndices[j] >= uniforms.x_shape[j]) {\n pad++;\n isPad = true;\n break;\n }\n }\n if (!isPad) {\n let x_val = x[${t.indicesToOffset("xIndices")}];\n ${i}\n }`:`\n }\n let x_val = x[${t.indicesToOffset("xIndices")}];\n ${i}\n `,`\n ${e.registerUniforms(u).declareVariables(t,h)}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n let indices = ${h.offsetToIndices("global_idx")};\n var xIndices = ${h.offsetToIndices("global_idx")};\n\n var offsets: array;\n\n var value = ${f}(${o});\n var pad = 0;\n var isPad = false;\n\n for (var i: u32 = 0u; i < uniforms.kernelSize; i++) {\n var offset = i;\n for (var j = 0u; j < ${r-1}u; j++) {\n offsets[j] = offset / ${Et("uniforms.kernelStrides","j",r)};\n offset -= offsets[j] * ${Et("uniforms.kernelStrides","j",r)};\n }\n offsets[${r-1}] = offset;\n\n isPad = false;\n for (var j = ${n-r}u; j < ${n}u; j++) {\n xIndices[j] = indices[j] * ${Et("uniforms.strides",`j - ${n-r}u`,r)}\n + offsets[j - ${n-r}u] - ${Et("uniforms.pads","j - 2u",d)};\n ${p}\n }\n ${s}\n\n output[global_idx] = value;\n }`}},qi=e=>`${e.format};${e.ceilMode};${e.autoPad};${e.kernelShape.length}`,ji=e=>`${qi(e)};${e.countIncludePad}`,Ki=e=>`${qi(e)};${e.storageOrder};${e.dilations}`,Yi=e=>({format:e.format,autoPad:["NOTSET","VALID","SAME_UPPER","SAME_LOWER"][e.auto_pad],ceilMode:e.ceil_mode,kernelShape:e.kernel_shape,strides:e.strides,pads:e.pads}),Zi=(e,t,n,r)=>{let[a,i]=Li(t,r,n),s=Ct("x",t.dataType,t.dims.length),o=s.type.value,u="";a.countIncludePad?u+=`value /= ${o}(uniforms.kernelSize);`:u+=`value /= ${o}(i32(uniforms.kernelSize) - pad);`;let[l,d,p,c,f]=Gi(i,a);l.push(...vt(t.dims),...vt(i));return{name:e,shaderCache:{hint:`${r.cacheKey};${p};${c};${f}`,inputDependencies:["rank"]},getRunData:()=>({outputs:[{dims:i,dataType:t.dataType}],dispatchGroup:{x:Math.ceil(ct.size(i)/64)},programUniforms:l}),getShaderSource:e=>Fi(e,s,t.dims.length,i.length,a,"value += x_val;",u,0,d,p,c,f)}},Xi=e=>{let t=0!==e.count_include_pad,n=Yi(e);if(0!==n.ceilMode)throw new Error("using ceil() in shape computation is not yet supported for AveragePool");let r={countIncludePad:t,...n,cacheKey:""};return{...r,cacheKey:ji(r)}},Qi=(e,t)=>{Hi(e.inputs),e.compute(Zi("AveragePool",e.inputs[0],!1,t))},Ji={autoPad:"",ceilMode:0,countIncludePad:!1,kernelShape:[],strides:[],pads:[],storageOrder:0,dilations:[]},es=e=>{let t=e.format;return{format:t,...Ji,cacheKey:t}},ts=(e,t)=>{Hi(e.inputs),e.compute(Zi("GlobalAveragePool",e.inputs[0],!0,t))},ns=(e,t,n,r)=>{let[a,i]=Li(t,r,n),s=Ct("x",t.dataType,t.dims.length),[o,u,l,d,p]=Gi(i,a);return o.push(...vt(t.dims),...vt(i)),{name:e,shaderCache:{hint:`${r.cacheKey};${l};${d};${p}`,inputDependencies:["rank"]},getRunData:()=>({outputs:[{dims:i,dataType:t.dataType}],dispatchGroup:{x:Math.ceil(ct.size(i)/64)},programUniforms:o}),getShaderSource:e=>Fi(e,s,t.dims.length,i.length,a,"\n value = max(x_val, value);\n ","",-1e5,u,l,d,p)}},rs=(e,t)=>{Hi(e.inputs),e.compute(ns("MaxPool",e.inputs[0],!1,t))},as=e=>{let t=e.storage_order,n=e.dilations,r=Yi(e);if(0!==t)throw new Error("column major storage order is not yet supported for MaxPool");if(0!==r.ceilMode)throw new Error("using ceil() in shape computation is not yet supported for MaxPool");let a={storageOrder:t,dilations:n,...r,cacheKey:""};return{...a,cacheKey:Ki(a)}},is=e=>{let t=e.format;return{format:t,...Ji,cacheKey:t}},ss=(e,t)=>{Hi(e.inputs),e.compute(ns("GlobalMaxPool",e.inputs[0],!0,t))}})),ou=N((()=>{se(),$o(),Co(),os=(e,t,n)=>{if(e===t||et&&n>0)throw new Error("Range these inputs' contents are invalid.")},us=(e,t,n,r)=>{let a=Math.abs(Math.ceil((t-e)/n)),i=[a],s=a,o=Ve(r),u=[{type:"uint32",data:s},{type:o,data:e},{type:o,data:n},...vt(i)];return{name:"Range",shaderCache:{hint:`${r}`},getShaderSource:e=>{let t=Tt("output",r,i.length),n=t.type.value,a=[{name:"outputSize",type:"u32"},{name:"start",type:n},{name:"delta",type:n}];return`\n ${e.registerUniforms(a).declareVariables(t)}\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n output[global_idx] = uniforms.start + ${n}(global_idx) * uniforms.delta;\n }`},getRunData:()=>({outputs:[{dims:i,dataType:r}],dispatchGroup:{x:Math.ceil(s/64)},programUniforms:u})}},ls=e=>{let t=0,n=0,r=0;6===e.inputs[0].dataType?(t=e.inputs[0].getInt32Array()[0],n=e.inputs[1].getInt32Array()[0],r=e.inputs[2].getInt32Array()[0]):1===e.inputs[0].dataType&&(t=e.inputs[0].getFloat32Array()[0],n=e.inputs[1].getFloat32Array()[0],r=e.inputs[2].getFloat32Array()[0]),d.webgpu.validateInputContent&&os(t,n,r),e.compute(us(t,n,r,e.inputs[0].dataType),{inputs:[]})}})),uu=N((()=>{Io(),Eo(),Co(),ds=(e,t)=>{if(e.every((e=>e>0||(()=>{throw new Error("Resize requires scales input values to be positive")}))),e.length>0)if("linear"===t.mode){if(!(2===e.length||3===e.length||4===e.length&&1===e[0]&&1===e[1]||4===e.length&&1===e[0]&&1===e[3]||5===e.length&&1===e[0]&&1===e[1]))throw new Error("For linear mode, Resize requires scales to be 2D, 3D, 4D with either two outermost or one innermost and\n one outermost scale values equal to 1, or 5D with two outermost scale values equal to 1")}else if("cubic"===t.mode&&!(2===e.length||4===e.length&&1===e[0]&&1===e[1]||4===e.length&&1===e[0]&&1===e[3]))throw new Error("Resize requires scales input size to be 2 or 4 for cubic mode")},ps=(e,t,n)=>{t.every((e=>e>=0&&e{throw new Error("Resize requires axes input values to be positive and less than rank")})));let r=new Array(n).fill(1);return t.forEach(((t,n)=>r[t]=e[n])),r},cs=(e,t,n,r,a,i)=>{let[s,o,u]=n>10?[1,2,3]:[-1,e.length>1?1:-1,-1],l=e[0].dims.length;if(s>0&&e.length>s&&e[s].dims.length>0)e[s].getFloat32Array().forEach((e=>i.push(e)));else if("tf_crop_and_resize"===t.coordinateTransformMode)throw new Error("Resize requires RoI input to be specified when coordinateTransformMode is tfCropAndResize");if(o>0&&e.length>o&&e[o].dims.length>0){if(e[o].getFloat32Array().forEach((e=>r.push(e))),0!==r.length&&r.length!==l&&n>=18&&r.length!==t.axes.length)throw new Error("Resize requires scales input size to be same as input rank or axes size for opset 18 and up");ds(r,t),t.axes.length>0&&ps(r,t.axes,l).forEach(((e,t)=>r[t]=e))}if(u>0&&e.length>u&&(e[u].getBigInt64Array().forEach((e=>a.push(Number(e)))),a.length!==l||n>=18&&a.length===t.axes.length))throw new Error("Resize requires sizes input size to be same as input rank or axes size for opset 18 and up");if(t.axes.length>0){if(r.length!==t.axes.length)throw new Error('Resize requires "scales" input size to be of axes rank when axes attributes is specified');if(a.length!==t.axes.length)throw new Error('Resize requires "sizes" input size to be of rank axes rank when axes attributes is specified')}if(typeof r<"u"&&typeof a<"u"&&r.length>0&&a.length>l)throw new Error("Resize requires only of scales or sizes to be specified")},fs=(e,t)=>`fn getOriginalCoordinateFromResizedCoordinate(xResized: u32, xScale: f32, lengthResized: u32,\n lengthOriginal: u32, roiStart: f32, roiEnd: f32) -> ${t} { `+(()=>{switch(e){case"asymmetric":return`return ${t}(xResized) / ${t}(xScale);`;case"pytorch_half_pixel":return`if (lengthResized > 1) {\n return (${t}(xResized) + 0.5) / ${t}(xScale) - 0.5;\n } else {\n return 0.0;\n }`;case"tf_half_pixel_for_nn":return`return (${t}(xResized) + 0.5) / ${t}(xScale);`;case"align_corners":return`if (lengthResized == 1) {\n return 0.0;\n } else {\n // The whole part and the fractional part are calculated separately due to inaccuracy of floating\n // point division. As an example, f32(21) / f32(7) may evaluate to 2.99... instead of 3, causing an\n // offset-by-one error later in floor().\n let whole = ${t}(xResized * (lengthOriginal - 1) / (lengthResized - 1));\n let fract =\n ${t}(xResized * (lengthOriginal - 1) % (lengthResized - 1)) / ${t}(lengthResized - 1);\n return whole + fract;\n }`;case"tf_crop_and_resize":return`if (lengthResized > 1) {\n return ${t}(roiStart) * ${t}(lengthOriginal - 1) +\n (${t}(xResized) * ${t}(roiEnd - roiStart) * ${t}(lengthOriginal - 1)) /\n ${t}(lengthResized - 1);\n } else {\n return 0.5 * ${t}(roiStart + roiEnd) * ${t}(lengthOriginal - 1);\n }`;case"half_pixel_symmetric":return`const outputWidth = ${t}xScale * ${t}(lengthResized);\n const adjustment = ${t}(lengthResized) / outputWidth;\n const center = ${t}(lengthOriginal) / 2;\n const offset = center * (1 - adjustment);\n return offset + ((${t}(xResized) + 0.5) / ${t}(xScale)) - 0.5;`;case"half_pixel":return`return ((${t}(xResized) + 0.5) / ${t}(xScale)) - 0.5;`;default:throw new Error(`Coordinate transform mode ${e} is not supported`)}})()+"}",hs=(e,t,n)=>`fn getNearestPixelFromOriginal(xOriginal: ${n}, isDownSample: bool) -> ${n} {`+(()=>{switch(e){case"round_prefer_ceil":return"if (fract(xOriginal) == 0.5) { return ceil(xOriginal); } else { return round(xOriginal); }";case"floor":return"return floor(xOriginal);";case"ceil":return"return ceil(xOriginal);";case"round_prefer_floor":return"if (fract(xOriginal) == 0.5) { return floor(xOriginal); } else { return round(xOriginal); }";default:if(t<11)return"if (isDownSample) { return ceil(xOriginal); } else { return xOriginal; }";throw new Error(`Nearest mode ${e} is not supported`)}})()+"}",ms=(e,t,n)=>{let r=new Array(n).fill(0).concat(new Array(n).fill(1)),a=0===e.length?r:e.slice();return t.length>0?(t.forEach(((e,i)=>{r[e]=a[i],r[i+n]=a[t.length+i]})),r):a},gs=(e,t,n,r)=>{let a=[];if(n.length>0)if(r.length>0){if(e.forEach((e=>a.push(e))),Math.max(...r)>e.length)throw new Error("axes is out of bound");r.forEach(((e,t)=>a[e]=n[t]))}else n.forEach((e=>a.push(e)));else{if(0===t.length)throw new Error("Resize requires either scales or sizes.");a=e.map(((e,n)=>Math.round(e*t[n])))}return a},ys=(e,t,n)=>{let r=(()=>{switch(n.keepAspectRatioPolicy){case"not_larger":return n.axes.length>0?Math.min(...n.axes.map((e=>t[e])),Number.MAX_VALUE):Math.min(...t,Number.MAX_VALUE);case"not_smaller":return n.axes.length>0?Math.max(...n.axes.map((e=>t[e])),Number.MIN_VALUE):Math.max(...t,Number.MIN_VALUE);default:throw new Error(`Keep aspect ratio policy ${n.keepAspectRatioPolicy} is not supported`)}})();t.fill(1,0,t.length);let a=e.slice();return n.axes.length>0?(n.axes.forEach((e=>t[e]=r)),n.axes.forEach((n=>a[n]=Math.round(e[n]*t[n])))):(t.fill(r,0,t.length),a.forEach(((e,n)=>a[n]=Math.round(e*t[n])))),a},ws=(e,t,n,r,a)=>`\n fn calculateOriginalIndicesFromOutputIndices(output_indices: ${e.type.indices}) -> array<${e.type.value}, ${n.length}> {\n var original_indices: array<${e.type.value}, ${n.length}>;\n for (var i:u32 = 0; i < ${n.length}; i++) {\n var output_index = ${e.indicesGet("output_indices","i")};\n var scale = ${Et("uniforms.scales","i",r)};\n var roi_low = ${Et("uniforms.roi","i",a)};\n var roi_hi = ${Et("uniforms.roi",`i + ${t.length}`,a)};\n if (scale == 1.0) {\n original_indices[i] = ${e.type.value}(output_index);\n } else {\n var input_shape_i = ${Et("uniforms.input_shape","i",t.length)};\n var output_shape_i = ${Et("uniforms.output_shape","i",n.length)};\n original_indices[i] = getOriginalCoordinateFromResizedCoordinate(output_index, scale, output_shape_i,\n input_shape_i, roi_low, roi_hi);\n }\n }\n return original_indices;\n }`,$s=(e,t,n,r,a,i,s)=>`\n fn calculateInputIndicesFromOutputIndices(output_indices: ${t.type.indices}) -> ${e.type.indices} {\n var input_indices: ${e.type.indices};\n for (var i:u32 = 0; i < ${r.length}; i++) {\n var output_index = ${t.indicesGet("output_indices","i")};\n var input_index: u32;\n var scale = ${Et("uniforms.scales","i",a)};\n if (scale == 1.0) {\n input_index = output_index;\n } else {\n var roi_low = ${Et("uniforms.roi","i",i)};\n var roi_hi = ${Et("uniforms.roi",`i + ${n.length}`,i)};\n var input_shape_i = ${Et("uniforms.input_shape","i",n.length)};\n var output_shape_i = ${Et("uniforms.output_shape","i",r.length)};\n var original_idx = getOriginalCoordinateFromResizedCoordinate(output_index, scale, output_shape_i,\n input_shape_i, roi_low, roi_hi);\n if (!${s} || (original_idx >= 0 && original_idx < ${t.type.value}(input_shape_i))) {\n if (original_idx < 0) {\n input_index = 0;\n } else if (original_idx > ${t.type.value}(input_shape_i - 1)) {\n input_index = input_shape_i - 1;\n } else {\n input_index = u32(getNearestPixelFromOriginal(original_idx, scale < 1));\n }\n } else {\n input_index = u32(original_idx);\n }\n }\n ${e.indicesSet("input_indices","i"," input_index")}\n }\n return input_indices;\n }`,vs=(e,t)=>`\n fn checkInputIndices(input_indices: ${e.type.indices}) -> bool {\n for (var i:u32 = 0; i < ${t.length}; i++) {\n var input_index = ${e.indicesGet("input_indices","i")};\n if (input_index < 0 || input_index >= ${Et("uniforms.input_shape","i",t.length)}) {\n return false;\n }\n }\n return true;\n }`,bs=(e,t,n,r)=>e.rank>r?`\n ${e.indicesSet("input_indices",t,"channel")};\n ${e.indicesSet("input_indices",n,"batch")};\n`:"",_s=(e,t,n,r,a)=>{let[i,s,o,u]=2===n.length?[-1,0,1,-1]:[0,2,3,1],l=e.type.value;return`\n fn getInputValue(batch: u32, channel: u32, row: u32, col: u32) -> ${l} {\n var input_indices: ${e.type.indices};\n ${e.indicesSet("input_indices",s,`max(0, min(row, ${n[s]} - 1))`)};\n ${e.indicesSet("input_indices",o,`max(0, min(col, ${n[o]} - 1))`)};\n ${bs(e,u,i,2)}\n return ${e.getByIndices("input_indices")};\n }\n\n fn bilinearInterpolation(output_indices: ${t.type.indices}) -> ${l} {\n var originalIndices = calculateOriginalIndicesFromOutputIndices(output_indices);\n var row:${l} = originalIndices[${s}];\n var col:${l} = originalIndices[${o}];\n ${r?`if (row < 0 || row > (${n[s]} - 1) || col < 0 || col > (${n[o]} - 1)) {\n return ${a};\n }`:""};\n row = max(0, min(row, ${n[s]} - 1));\n col = max(0, min(col, ${n[o]} - 1));\n var row1: u32 = u32(row);\n var col1: u32 = u32(col);\n var row2: u32 = u32(row + 1);\n var col2: u32 = u32(col + 1);\n var channel: u32 = ${n.length>2?`u32(originalIndices[${u}])`:"0"};\n var batch: u32 = ${n.length>2?`u32(originalIndices[${i}])`:"0"};\n var x11: ${l} = getInputValue(batch, channel, row1, col1);\n var x12: ${l} = getInputValue(batch, channel, row1, col2);\n var x21: ${l} = getInputValue(batch, channel, row2, col1);\n var x22: ${l} = getInputValue(batch, channel, row2, col2);\n var dx1: ${l} = abs(row - ${l}(row1));\n var dx2: ${l} = abs(${l}(row2) - row);\n var dy1: ${l} = abs(col - ${l}(col1));\n var dy2: ${l} = abs(${l}(col2) - col);\n if (row1 == row2) {\n dx1 = 0.5;\n dx2 = 0.5;\n }\n if (col1 == col2) {\n dy1 = 0.5;\n dy2 = 0.5;\n }\n return (x11 * dx2 * dy2 + x12 * dx2 * dy1 + x21 * dx1 * dy2 + x22 * dx1 * dy1);\n }`},xs=(e,t,n,r,a,i,s,o,u,l)=>{let d=2===n.length,[p,c]=d?[0,1]:[2,3],f=e.type.value,h=s=>{let d=s===p?"row":"col";return`\n fn ${d}CubicInterpolation(input_indices: ${e.type.indices}, output_indices: ${t.type.indices}) -> ${f} {\n var output_index = ${t.indicesGet("output_indices",s)};\n var originalIdx: ${f} = getOriginalCoordinateFromResizedCoordinate(output_index, ${a[s]},\n ${r[s]}, ${n[s]}, ${i[s]}, ${i[s]} + ${n.length});\n var fractOriginalIdx: ${f} = originalIdx - floor(originalIdx);\n var coefs = getCubicInterpolationCoefs(fractOriginalIdx);\n\n if (${o} && (originalIdx < 0 || originalIdx > (${n[s]} - 1))) {\n return ${u};\n }\n var data: array<${f}, 4> = array<${f}, 4>(0.0, 0.0, 0.0, 0.0);\n for (var i: i32 = -1; i < 3; i++) {\n var ${d}: ${f} = originalIdx + ${f}(i);\n if (${d} < 0 || ${d} >= ${n[s]}) {\n ${l?"coefs[i + 1] = 0.0;\n continue;":o?`return ${u};`:`${d} = max(0, min(${d}, ${n[s]} - 1));`};\n }\n var input_indices_copy: ${e.type.indices} = input_indices;\n ${e.indicesSet("input_indices_copy",s,`u32(${d})`)};\n data[i + 1] = ${s===p?e.getByIndices("input_indices_copy"):"rowCubicInterpolation(input_indices_copy, output_indices)"};\n }\n return cubicInterpolation1D(data, coefs);\n }`};return`\n ${h(p)};\n ${h(c)};\n fn getCubicInterpolationCoefs(s: ${f}) -> array<${f}, 4> {\n var absS = abs(s);\n var coeffs: array<${f}, 4> = array<${f}, 4>(0.0, 0.0, 0.0, 0.0);\n var oneMinusAbsS: ${f} = 1.0 - absS;\n var twoMinusAbsS: ${f} = 2.0 - absS;\n var onePlusAbsS: ${f} = 1.0 + absS;\n coeffs[0] = ((${s} * onePlusAbsS - 5 * ${s}) * onePlusAbsS + 8 * ${s}) * onePlusAbsS - 4 * ${s};\n coeffs[1] = ((${s} + 2) * absS - (${s} + 3)) * absS * absS + 1;\n coeffs[2] = ((${s} + 2) * oneMinusAbsS - (${s} + 3)) * oneMinusAbsS * oneMinusAbsS + 1;\n coeffs[3] = ((${s} * twoMinusAbsS - 5 * ${s}) * twoMinusAbsS + 8 * ${s}) * twoMinusAbsS - 4 * ${s};\n return coeffs;\n }\n\n fn cubicInterpolation1D(x: array<${f}, 4>, coefs: array<${f}, 4>) -> ${f} {\n var coefsSum: ${f} = coefs[0] + coefs[1] + coefs[2] + coefs[3];\n return (x[0] * coefs[0] + x[1] * coefs[1]+ x[2] * coefs[2]+ x[3] * coefs[3]) / coefsSum;\n }\n\n fn bicubicInterpolation(output_indices: ${t.type.indices}) -> ${f} {\n var input_indices: ${e.type.indices} = output_indices;\n return colCubicInterpolation(input_indices, output_indices);\n }\n `},Ss=(e,t,n,r,a)=>{let[i,s,o,u,l]=3===n.length?[-1,0,1,2,-1]:[0,2,3,4,1],d=e.type.value;return`\n fn getInputValue(batch: u32, channel: u32, depth:u32, height: u32, width: u32) -> ${d} {\n var input_indices: ${e.type.indices};\n ${e.indicesSet("input_indices",s,`max(0, min(depth, ${n[s]} - 1))`)};\n ${e.indicesSet("input_indices",o,`max(0, min(height, ${n[o]} - 1))`)};\n ${e.indicesSet("input_indices",u,`max(0, min(width, ${n[u]} - 1))`)};\n ${bs(e,l,i,3)}\n return ${e.getByIndices("input_indices")};\n }\n\n fn trilinearInterpolation(output_indices: ${t.type.indices}) -> ${d} {\n var originalIndices = calculateOriginalIndicesFromOutputIndices(output_indices);\n var depth:${d} = originalIndices[${s}];\n var height:${d} = originalIndices[${o}];\n var width:${d} = originalIndices[${u}];\n ${r?`if (depth < 0 || depth > (${n[s]} - 1) || height < 0 || height > (${n[o]} - 1) || width < 0 || (width > ${n[u]} - 1)) {\n return ${a};\n }`:""};\n\n depth = max(0, min(depth, ${n[s]} - 1));\n height = max(0, min(height, ${n[o]} - 1));\n width = max(0, min(width, ${n[u]} - 1));\n var depth1: u32 = u32(depth);\n var height1: u32 = u32(height);\n var width1: u32 = u32(width);\n var depth2: u32 = u32(depth + 1);\n var height2: u32 = u32(height + 1);\n var width2: u32 = u32(width + 1);\n var channel: u32 = ${n.length>3?`u32(originalIndices[${l}])`:"0"};\n var batch: u32 = ${n.length>3?`u32(originalIndices[${i}])`:"0"};\n\n var x111: ${d} = getInputValue(batch, channel, depth1, height1, width1);\n var x112: ${d} = getInputValue(batch, channel, depth1, height1, width2);\n var x121: ${d} = getInputValue(batch, channel, depth1, height2, width1);\n var x122: ${d} = getInputValue(batch, channel, depth1, height2, width2);\n var x211: ${d} = getInputValue(batch, channel, depth2, height1, width1);\n var x212: ${d} = getInputValue(batch, channel, depth2, height1, width2);\n var x221: ${d} = getInputValue(batch, channel, depth2, height2, width1);\n var x222: ${d} = getInputValue(batch, channel, depth2, height2, width2);\n var dx1: ${d} = abs(depth - ${d}(depth1));\n var dx2: ${d} = abs(${d}(depth2) - depth);\n var dy1: ${d} = abs(height - ${d}(height1));\n var dy2: ${d} = abs(${d}(height2) - height);\n var dz1: ${d} = abs(width - ${d}(width1));\n var dz2: ${d} = abs(${d}(width2) - width);\n if (depth1 == depth2) {\n dx1 = 0.5;\n dx2 = 0.5;\n }\n if (height1 == height2) {\n dy1 = 0.5;\n dy2 = 0.5;\n }\n if (width1 == width2) {\n dz1 = 0.5;\n dz2 = 0.5;\n }\n return (x111 * dx2 * dy2 * dz2 + x112 * dx2 * dy2 * dz1 + x121 * dx2 * dy1 *dz2 + x122 * dx2 * dy1 * dz1 +\n x211 * dx1 * dy2 * dz2 + x212 * dx1 * dy2 * dz1 + x221 * dx1 * dy1 *dz2 + x222 * dx1 * dy1 * dz1);\n }`},Es=(e,t,n,r,a,i)=>{let s=e.dims,o=ms(i,t.axes,s.length),u=gs(s,r,a,t.axes),l=r.slice();0===r.length&&(l=s.map(((e,t)=>0===e?1:u[t]/e)),"stretch"!==t.keepAspectRatioPolicy&&(u=ys(s,l,t)));let d=Tt("output",e.dataType,u.length),p=Ct("input",e.dataType,s.length),c=ct.size(u),f=s.length===u.length&&s.every(((e,t)=>e===u[t])),h="tf_crop_and_resize"===t.coordinateTransformMode,m=t.extrapolationValue,g=p.type.value;return{name:"Resize",shaderCache:{hint:`${t.cacheKey}|${n}|${l.length>0?l:""}|${a.length>0?a:""}|${o.length>0?o:""}|${f}|${s}`,inputDependencies:["rank"]},getShaderSource:e=>`\n ${f?"":`\n ${fs(t.coordinateTransformMode,g)};\n ${(()=>{switch(t.mode){case"nearest":return`\n ${vs(p,s)};\n ${hs(t.nearestMode,n,g)};\n ${$s(p,d,s,u,l.length,o.length,h)};\n `;case"linear":return`\n ${ws(d,s,u,l.length,o.length)};\n ${(()=>{if(2===s.length||4===s.length)return`${_s(p,d,s,h,m)}`;if(3===s.length||5===s.length)return`${Ss(p,d,s,h,m)}`;throw Error("Linear mode only supports input dims 2, 3, 4 and 5 are supported in linear mode.")})()};\n `;case"cubic":return`\n ${(()=>{if(2===s.length||4===s.length)return`${xs(p,d,s,u,l,o,t.cubicCoeffA,h,t.extrapolationValue,t.excludeOutside)}`;throw Error("Cubic mode only supports input dims 2 and 4 are supported in linear mode.")})()};\n `;default:throw Error("Invalid resize mode")}})()};\n `}\n ${e.registerUniform("output_size","u32").registerUniform("scales","f32",l.length).registerUniform("roi","f32",o.length).declareVariables(p,d)}\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}\n ${f?"output[global_idx] = input[global_idx];":`\n let output_indices = ${d.offsetToIndices("global_idx")};\n var input_indices: ${p.type.indices};\n ${(()=>{switch(t.mode){case"nearest":return`input_indices = calculateInputIndicesFromOutputIndices(output_indices);\n if (checkInputIndices(input_indices)) {\n output[global_idx] = ${p.getByIndices("input_indices")};\n } else {\n output[global_idx] = ${t.extrapolationValue};\n }`;case"linear":return`output[global_idx] = ${2===s.length||4===s.length?"bilinearInterpolation":"trilinearInterpolation"}(output_indices);`;case"cubic":return"output[global_idx] = bicubicInterpolation(output_indices);";default:throw Error(`Unsupported resize mode: ${t.mode}`)}})()};\n`}\n }`,getRunData:()=>({outputs:[{dims:u,dataType:e.dataType}],dispatchGroup:{x:Math.ceil(c/64)},programUniforms:[{type:"uint32",data:c},{type:"float32",data:l},{type:"float32",data:o},...vt(s),...vt(u)]})}},Is=e=>{let t=e.customDataBuffer;return new Uint32Array(t,t.byteOffset,1)[0]},Cs=(e,t)=>{let n=[],r=[],a=[],i=Is(e);if(0!==t.antialias)throw Error("Only default value (0) for Antialias attribute is supported");cs(e.inputs,t,i,n,r,a),e.compute(Es(e.inputs[0],t,i,n,r,a),{inputs:[0]})},Ts=e=>{let t=e.antialias,n=e.axes,r=e.coordinateTransformMode,a=e.cubicCoeffA,i=0!==e.excludeOutside,s=e.extrapolationValue,o=e.keepAspectRatioPolicy,u=e.mode,l=""===e.nearestMode?"simple":e.nearestMode;return lt({antialias:t,axes:n,coordinateTransformMode:r,cubicCoeffA:a,excludeOutside:i,extrapolationValue:s,keepAspectRatioPolicy:o,mode:u,nearestMode:l})}})),lu=N((()=>{$o(),Io(),Eo(),Co(),ks=e=>{if(!e||e.length<3)throw new Error("layerNorm requires at least 3 inputs.");let t=e[0],n=e[1],r=e[2];if(t.dataType!==n.dataType||t.dataType!==r.dataType)throw new Error("All inputs must have the same data type");if(3!==t.dims.length&&2!==t.dims.length)throw new Error("Input must be 2D or 3D");if(3!==n.dims.length&&2!==n.dims.length)throw new Error("Skip must be 2D or 3D");let a=t.dims[t.dims.length-1],i=t.dims[t.dims.length-2];if(n.dims[n.dims.length-1]!==a)throw new Error("Skip must have the same hidden size as input");if(n.dims[n.dims.length-2]!==i)throw new Error("Skip must have the same sequence length as input");if(1!==r.dims.length)throw new Error("Gamma must be 1D");if(r.dims[r.dims.length-1]!==a)throw new Error("Gamma must have the same hidden size as input");if(e.length>3){let t=e[3];if(1!==t.dims.length)throw new Error("Beta must be 1D");if(t.dims[t.dims.length-1]!==a)throw new Error("Beta must have the same hidden size as input")}if(e.length>4){let t=e[4];if(1!==t.dims.length)throw new Error("Bias must be 1D");if(t.dims[t.dims.length-1]!==a)throw new Error("Bias must have the same hidden size as input")}},Os=(e,t,n,r)=>{let a=e[0].dims,i=a,s=ct.size(a),o=a.slice(-1)[0],u=r?a.slice(0,-1).concat(1):[],l=e.length>3,d=e.length>4,p=r&&n>1,c=r&&n>2,f=n>3,h=bt(o),m=[Ct("x",e[0].dataType,e[0].dims,h),Ct("skip",e[1].dataType,e[1].dims,h),Ct("gamma",e[2].dataType,e[2].dims,h)];l&&m.push(Ct("beta",e[3].dataType,e[3].dims,h)),d&&m.push(Ct("bias",e[4].dataType,e[4].dims,h)),m.push(Tt("output",e[0].dataType,i,h)),p&&m.push(Tt("meanOutput",1,u)),c&&m.push(Tt("invStdOutput",1,u)),f&&m.push(Tt("inputSkipBiasSum",e[0].dataType,i,h));let g=wt(e[0].dataType),y=[{dims:i,dataType:e[0].dataType}];return n>1&&y.push({dims:u,dataType:1}),n>2&&y.push({dims:u,dataType:1}),n>3&&y.push({dims:a,dataType:e[0].dataType}),{name:"SkipLayerNormalization",shaderCache:{hint:t.cacheKey},getShaderSource:e=>`\n const hiddenSize: f32 = ${o};\n const hiddenSizeVectorized: u32 = ${o/h};\n const epsilon: f32 = ${t.epsilon};\n\n ${e.declareVariables(...m)}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes(s/o)}\n let offset = global_idx * hiddenSizeVectorized;\n var sum = ${_t("f32",h)};\n var squareSum = ${_t("f32",h)};\n for (var i: u32 = 0; i < hiddenSizeVectorized; i++) {\n let skipValue = skip[offset + i];\n let biasValue = ${d?"bias[i]":"0.0"};\n let inputValue = x[offset + i];\n let value = inputValue + skipValue + biasValue;\n ${f?"inputSkipBiasSum[offset + i] = value;":""}\n output[offset + i] = value;\n let f32Value = ${xt(g,h,"value")};\n sum += f32Value;\n squareSum += f32Value * f32Value;\n }\n let mean = ${St("sum",h)} / hiddenSize;\n let invStdDev = inverseSqrt(${St("squareSum",h)} / hiddenSize - mean * mean + epsilon);\n ${p?"meanOutput[global_idx] = mean;":""}\n ${c?"invStdOutput[global_idx] = invStdDev;":""}\n for (var i: u32 = 0; i < hiddenSizeVectorized; i++) {\n output[offset + i] = (output[offset + i] - ${g}(mean)) * ${g}(invStdDev) * gamma[i]\n + ${l?"beta[i]":"0.0"};\n }\n }`,getRunData:()=>({outputs:y,dispatchGroup:{x:Math.ceil(s/o/64)}})}},As=(e,t)=>{ks(e.inputs);let n=[0];e.outputCount>1&&n.push(-3),e.outputCount>2&&n.push(-3),e.outputCount>3&&n.push(3),e.compute(Os(e.inputs,t,e.outputCount,!1),{outputs:n})},Rs=e=>{let t=e.epsilon;return lt({epsilon:t})}})),du=N((()=>{$o(),Io(),Eo(),Co(),zs=(e,t)=>{if(!e||e.length<1)throw new Error("too few inputs");if(0!==t.axes.length){if(t.axes.length!==t.starts.length||t.axes.length!==t.ends.length)throw new Error("axes, starts and ends must have the same length")}else if(t.starts.length!==t.ends.length)throw new Error("starts and ends must have the same length");e.slice(1).forEach(((t,n)=>{if(6!==e[n+1].dataType&&7!==e[n+1].dataType)throw new Error(`Input ${n} must be an array of int32 or int64`)}))},Bs=(e,t)=>{let n=[];if(e.length>t)if(7===e[t].dataType)e[t].getBigInt64Array().forEach((e=>n.push(Number(e))));else{if(6!==e[t].dataType)throw new Error(`Input ${t} must be an array of int32 or int64`);e[t].getInt32Array().forEach((e=>n.push(Number(e))))}return n},Ds=(e,t)=>{if(e.length>1){let t=Bs(e,1),n=Bs(e,2),r=Bs(e,3);return 0===r.length&&(r=[...Array(e[0].dims.length).keys()]),lt({starts:t,ends:n,axes:r})}return t},Ms=(e,t,n,r,a)=>{let i=e;return e<0&&(i+=n[r[t]]),a[t]<0?Math.max(0,Math.min(i,n[r[t]]-1)):Math.max(0,Math.min(i,n[r[t]]))},Ps=(e,t,n)=>`fn calculateInputIndices(output_indices: ${t.type.indices}) -> ${e.type.indices} {\n var input_indices: ${e.type.indices};\n var carry = 0u;\n for (var i = ${n.length}; i >= 0; i--) {\n let input_shape_i = ${Et("uniforms.input_shape","i",n.length)};\n let steps_i = ${Et("uniforms.steps","i",n.length)};\n let signs_i = ${Et("uniforms.signs","i",n.length)};\n let starts_i = ${Et("uniforms.starts","i",n.length)};\n var output_index = ${t.indicesGet("output_indices","i")};\n var input_index = output_index * steps_i + starts_i + carry;\n carry = input_index / input_shape_i;\n input_index = input_index % input_shape_i;\n if (signs_i < 0) {\n input_index = input_shape_i - input_index - 1u + starts_i;\n }\n ${e.indicesSet("input_indices","i","input_index")};\n }\n return input_indices;\n }`,Ns=(e,t)=>{let n=e[0].dims,r=ct.size(n),a=t.axes.length>0?ct.normalizeAxes(t.axes,n.length):[...Array(n.length).keys()],i=Bs(e,4);i.forEach((e=>0!==e||(()=>{throw new Error("step cannot be 0")}))),0===i.length&&(i=Array(a.length).fill(1));let s=t.starts.map(((e,t)=>Ms(e,t,n,a,i))),o=t.ends.map(((e,t)=>Ms(e,t,n,a,i)));if(a.length!==s.length||a.length!==o.length)throw new Error("start, ends and axes should have the same number of elements");if(a.length!==n.length)for(let e=0;eMath.sign(e)));i.forEach(((e,t,n)=>{if(e<0){let r=(o[t]-s[t])/e,a=s[t],u=a+r*i[t];s[t]=u,o[t]=a,n[t]=-e}}));let l=n.slice(0);a.forEach(((e,t)=>{l[e]=Math.ceil((o[e]-s[e])/i[e])}));let d={dims:l,dataType:e[0].dataType},p=Tt("output",e[0].dataType,l.length),c=Ct("input",e[0].dataType,e[0].dims.length),f=ct.size(l),h=[{name:"outputSize",type:"u32"},{name:"starts",type:"u32",length:s.length},{name:"signs",type:"i32",length:u.length},{name:"steps",type:"u32",length:i.length}],m=[{type:"uint32",data:f},{type:"uint32",data:s},{type:"int32",data:u},{type:"uint32",data:i},...vt(e[0].dims),...vt(l)];return{name:"Slice",shaderCache:{hint:`${u.length}_${s.length}_${i.length}`,inputDependencies:["rank"]},getShaderSource:e=>`\n ${e.registerUniforms(h).declareVariables(c,p)}\n ${Ps(c,p,n)}\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n let output_indices = ${p.offsetToIndices("global_idx")};\n let input_indices = calculateInputIndices(output_indices);\n ${p.setByOffset("global_idx",c.getByIndices("input_indices"))}\n }`,getRunData:()=>({outputs:[d],dispatchGroup:{x:Math.ceil(r/64)},programUniforms:m})}},Ws=(e,t)=>{zs(e.inputs,t);let n=Ds(e.inputs,t);e.compute(Ns(e.inputs,n),{inputs:[0]})},Us=e=>{let t=e.starts,n=e.ends,r=e.axes;return lt({starts:t,ends:n,axes:r})}})),pu=N((()=>{Io(),Eo(),Co(),Vs=e=>{if(!e||1!==e.length)throw new Error("Softmax op requires 1 input.")},Hs=(e,t)=>{let n=e.dims,r=ct.size(n),a=t.axis;if(a<0&&(a=n.length+a),a({outputs:[{dims:n,dataType:e.dataType}],dispatchGroup:{x:s},programUniforms:[{type:"uint32",data:u}]}),getShaderSource:e=>`\n var rowMaxShared : ${p};\n var rowSumShared : ${p};\n var threadShared : array<${p}, 64>;\n\n fn getValue(row: i32, col: i32, row_stride: i32) -> ${p} {\n let index = row * row_stride + col;\n return x[index];\n }\n\n fn setValue(row: i32, col: i32, row_stride: i32, value: ${p}) {\n let index = row * row_stride + col;\n result[index] = value;\n }\n ${e.registerUniform("packedCols","i32").declareVariables(l,d)}\n ${e.mainStart()}\n let gindex = i32(global_idx);\n let lindex = i32(local_idx);\n const wg = 64;\n let row = gindex / wg;\n let cols = uniforms.packedCols;\n let row_stride : i32 = uniforms.packedCols;\n\n // find the rows max\n ${c}\n for (var col = lindex; col < cols; col += wg) {\n let value = getValue(row, col, row_stride);\n threadMax = max(threadMax, value);\n }\n if (lindex < cols) {\n threadShared[lindex] = threadMax;\n }\n workgroupBarrier();\n\n var reduceSize = min(cols, wg);\n for (var currSize = reduceSize >> 1; currSize > 0; currSize = reduceSize >> 1) {\n reduceSize = currSize + (reduceSize & 1);\n if (lindex < currSize) {\n threadShared[lindex] = max(threadShared[lindex], threadShared[lindex + reduceSize]);\n }\n workgroupBarrier();\n }\n if (lindex == 0) {\n rowMaxShared = ${p}(${((e,t)=>4===t?`max(max(${e}.x, ${e}.y), max(${e}.z, ${e}.w))`:2===t?`max(${e}.x, ${e}.y)`:3===t?`max(max(${e}.x, ${e}.y), ${e}.z)`:e)("threadShared[0]",o)});\n }\n workgroupBarrier();\n\n // find the rows sum\n var threadSum = ${p}(0.0);\n for (var col = lindex; col < cols; col += wg) {\n let subExp = exp(getValue(row, col, row_stride) - rowMaxShared);\n threadSum += subExp;\n }\n threadShared[lindex] = threadSum;\n workgroupBarrier();\n\n for (var currSize = wg >> 1; currSize > 0; currSize = currSize >> 1) {\n if (lindex < currSize) {\n threadShared[lindex] = threadShared[lindex] + threadShared[lindex + currSize];\n }\n workgroupBarrier();\n }\n if (lindex == 0) {\n rowSumShared = ${p}(${St("threadShared[0]",o)});\n }\n workgroupBarrier();\n\n // calculate final value for each element in the row\n for (var col = lindex; col < cols; col += wg) {\n let value = exp(getValue(row, col, row_stride) - rowMaxShared) / rowSumShared;\n setValue(row, col, row_stride, value);\n }\n }`}},Ls=(e,t)=>{Vs(e.inputs),e.compute(Hs(e.inputs[0],t))},Gs=e=>lt({axis:e.axis})})),cu=N((()=>{Io(),Eo(),Co(),Fs=e=>{if(!e||e.length<1)throw new Error("too few inputs")},qs=(e,t)=>{let n=[],r=t.numOutputs;return e[1].dims[0]>0&&(e[1].getBigInt64Array().forEach((e=>n.push(Number(e)))),r=n.length),lt({numOutputs:r,axis:t.axis,splitSizes:n})},js=e=>`\nfn calculateOutputIndex(index: u32) -> u32 {\n for (var i: u32 = 0u; i < ${e}u; i += 1u ) {\n if (index < ${Et("uniforms.size_in_split_axis","i",e)}) {\n return i;\n }\n }\n return ${e}u;\n}`,Ks=e=>{let t=e.length,n=[];for(let r=0;r{let n=e[0].dims,r=ct.size(n),a=e[0].dataType,i=ct.normalizeAxis(t.axis,n.length),s=new Array(t.numOutputs),o=Ct("input",a,n),u=new Array(t.numOutputs),l=[],d=[],p=0,c=[{type:"uint32",data:r}];for(let r=0;rc.push(...vt(e))));return{name:"Split",shaderCache:{hint:t.cacheKey,inputDependencies:["rank"]},getShaderSource:e=>`\n ${e.registerUniform("input_size","u32").registerUniform("size_in_split_axis","u32",u.length).declareVariables(o,...s)}\n ${js(u.length)}\n ${Ks(s)}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.input_size")}\n\n var indices = ${o.offsetToIndices("global_idx")};\n var index = ${o.indicesGet("indices",i)};\n let output_number = calculateOutputIndex(index);\n if (output_number != 0) {\n index -= ${Et("uniforms.size_in_split_axis","output_number - 1u",u.length)};\n ${o.indicesSet("indices",i,"index")};\n }\n writeBufferData(output_number, indices, global_idx);\n }`,getRunData:()=>({outputs:l,dispatchGroup:{x:Math.ceil(r/64)},programUniforms:c})}},Zs=(e,t)=>{Fs(e.inputs);let n=1===e.inputs.length?t:qs(e.inputs,t);e.compute(Ys(e.inputs,n),{inputs:[0]})},Xs=e=>{let t=e.axis,n=e.splitSizes,r=e.numOutputs<0?n.length:e.numOutputs;if(r!==n.length)throw new Error("numOutputs and splitSizes lengh must be equal");return lt({axis:t,numOutputs:r,splitSizes:n})}})),fu=N((()=>{$o(),Io(),Co(),Qs=e=>Array.from(e.getBigInt64Array(),Number),Js=e=>{if(!e||2!==e.length)throw new Error("Tile requires 2 inputs.");if(1!==e[0].dataType&&6!==e[0].dataType&&12!==e[0].dataType)throw new Error("Tile only support float, int32, and uint32 data types");if(7!==e[1].dataType)throw new Error("Tile `repeats` input should be of int64 data type");if(1!==e[1].dims.length)throw new Error("Tile `repeats` input should be 1-D");if(Qs(e[1]).length!==e[0].dims.length)throw new Error("Tile `repeats` input should have same number of elements as rank of input data tensor")},eo=(e,t)=>{let n=[];for(let r=0;r{let t=e[0].dims,n=Qs(e[1]),r=eo(t,n),a=ct.size(r),i=e[0].dataType,s=Ct("input",i,t.length),o=Tt("output",i,r.length);return{name:"Tile",shaderCache:{hint:`${n}`,inputDependencies:["rank"]},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:[{type:"uint32",data:a},...vt(e[0].dims),...vt(r)]}),getShaderSource:e=>`\n const inputShape = ${s.indices(...t)};\n ${e.registerUniform("output_size","u32").declareVariables(s,o)}\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}\n let output_indices = ${o.offsetToIndices("global_idx")};\n var input_indices: ${s.type.indices};\n for (var i = 0; i < ${t.length}; i++) {\n let input_dim_i = ${s.indicesGet("uniforms.input_shape","i")};\n let input_dim_value = ${o.indicesGet("output_indices","i")} % input_dim_i;\n\n ${s.indicesSet("input_indices","i","input_dim_value")}\n }\n ${o.setByOffset("global_idx",s.getByIndices("input_indices"))}\n }`}},no=e=>{Js(e.inputs),e.compute(to(e.inputs),{inputs:[0]})}})),hu=N((()=>{$o(),Io(),Co(),ro=(e,t,n,r,a)=>{let i,s=Tt("output_data",a,n.length,4),o=Ct("a_data",t[1].dataType,t[1].dims.length,4),u=Ct("b_data",t[2].dataType,t[2].dims.length,4),l=Ct("c_data",t[0].dataType,t[0].dims.length,4),d=(e,t,n)=>`select(${t}, ${e}, ${n})`;if(r){let e=(e,t,n="")=>{let r=`a_data[index_a${t}][component_a${t}]`,a=`b_data[index_b${t}][component_b${t}]`,i=`bool(c_data[index_c${t}] & ${4278190080>>>8*(3-t)}u)`;return`\n let output_indices${t} = ${s.offsetToIndices(`global_idx * 4u + ${t}u`)};\n let offset_a${t} = ${o.broadcastedIndicesToOffset(`output_indices${t}`,s)};\n let offset_b${t} = ${u.broadcastedIndicesToOffset(`output_indices${t}`,s)};\n let offset_c${t} = ${l.broadcastedIndicesToOffset(`output_indices${t}`,s)};\n let index_a${t} = offset_a${t} / 4u;\n let index_b${t} = offset_b${t} / 4u;\n let index_c${t} = offset_c${t} / 4u;\n let component_a${t} = offset_a${t} % 4u;\n let component_b${t} = offset_b${t} % 4u;\n ${e}[${t}] = ${n}(${d(r,a,i)});\n `};i=9===a?`\n var data = vec4(0);\n ${e("data",0,"u32")}\n ${e("data",1,"u32")}\n ${e("data",2,"u32")}\n ${e("data",3,"u32")}\n output_data[global_idx] = dot(vec4(0x1, 0x100, 0x10000, 0x1000000), vec4(data));`:`\n ${e("output_data[global_idx]",0)}\n ${e("output_data[global_idx]",1)}\n ${e("output_data[global_idx]",2)}\n ${e("output_data[global_idx]",3)}\n `}else i=s.setByOffset("global_idx",d(o.getByOffset("global_idx"),u.getByOffset("global_idx"),l.getByOffset("global_idx")));return`\n ${e.registerUniform("vec_size","u32").declareVariables(l,o,u,s)}\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")}\n ${i}\n }`},ao=e=>{let t=e[1].dims,n=e[2].dims,r=e[0].dims,a=e[1].dataType,i=!(ct.areEqual(t,n)&&ct.areEqual(n,r)),s=t,o=ct.size(t);if(i){let e=pt.calcShape(pt.calcShape(t,n,!1),r,!1);if(!e)throw new Error("Can't perform where op on the given tensors");s=e,o=ct.size(s)}let u=Math.ceil(o/4);return{name:"Where",shaderCache:{inputDependencies:["rank","rank","rank"]},getShaderSource:t=>ro(t,e,s,i,a),getRunData:()=>({outputs:[{dims:s,dataType:a}],dispatchGroup:{x:Math.ceil(o/64/4)},programUniforms:[{type:"uint32",data:u},...vt(r),...vt(t),...vt(n),...vt(s)]})}},io=e=>{e.compute(ao(e.inputs))}})),mu=N((()=>{Ao(),Ro(),zo(),Bo(),Mo(),Po(),No(),qo(),Yo(),Zo(),Xo(),Qo(),Jo(),eu(),tu(),nu(),ru(),Fo(),au(),iu(),su(),ou(),Oo(),uu(),lu(),du(),pu(),cu(),fu(),To(),Do(),hu(),so=new Map([["Abs",[tr]],["Acos",[nr]],["Acosh",[rr]],["Add",[Vr]],["ArgMax",[Pn,Nn]],["ArgMin",[Mn,Nn]],["Asin",[ar]],["Asinh",[ir]],["Atan",[sr]],["Atanh",[or]],["Attention",[Fn]],["AveragePool",[Qi,Xi]],["BatchNormalization",[Yn]],["BiasAdd",[Qn]],["BiasSplitGelu",[Pr]],["Cast",[lr,ur]],["Ceil",[cr]],["Clip",[pr]],["Concat",[ta,na]],["Conv",[ka,Ia]],["ConvTranspose",[La,Na]],["Cos",[fr]],["Cosh",[hr]],["CumSum",[Fa,qa]],["Div",[Hr]],["Einsum",[ti,ni]],["Elu",[gr,mr]],["Equal",[Lr]],["Erf",[wr]],["Exp",[$r]],["Expand",[oi]],["Floor",[vr]],["FusedConv",[ka,Ia]],["Gather",[pi,di]],["GatherElements",[mi,hi]],["Gelu",[br]],["Gemm",[$i,wi]],["GlobalAveragePool",[ts,es]],["GlobalMaxPool",[ss,is]],["Greater",[jr]],["GreaterOrEqual",[Yr]],["InstanceNormalization",[xi]],["LayerNormalization",[Ii]],["LeakyRelu",[_r,mr]],["Less",[Kr]],["LessOrEqual",[Zr]],["Log",[Br]],["MatMul",[ba]],["MaxPool",[rs,as]],["Mul",[Gr]],["MultiHeadAttention",[Ri,Ti]],["Neg",[Sr]],["Not",[xr]],["Pad",[Vi]],["Pow",[Fr]],["Range",[ls]],["Reciprocal",[Er]],["ReduceMin",[On]],["ReduceMean",[En]],["ReduceMax",[kn]],["ReduceSum",[Rn]],["ReduceProd",[An]],["ReduceL1",[In]],["ReduceL2",[Cn]],["ReduceLogSum",[Bn]],["ReduceLogSumExp",[Tn]],["ReduceSumSquare",[zn]],["Relu",[Ir]],["Resize",[Cs,Ts]],["Sigmoid",[Cr]],["Sin",[Tr]],["Sinh",[kr]],["Slice",[Ws,Us]],["SkipLayerNormalization",[As,Rs]],["Split",[Zs,Xs]],["Sqrt",[Or]],["Softmax",[Ls,Gs]],["Sub",[qr]],["Tan",[Ar]],["Tanh",[Rr]],["ThresholdedRelu",[zr,mr]],["Tile",[no]],["Transpose",[Wt,Ut]],["Where",[io]]])})),gu=N((()=>{se(),bo(),Co(),oo=class{constructor(e){this.backend=e,this.repo=new Map,this.attributesBound=!1}getArtifact(e){return this.repo.get(e)}setArtifact(e,t){this.repo.set(e,t)}run(e,t,n,r,a){T(e.programInfo.name);let i=this.backend.device,s=this.backend.getComputePassEncoder();this.backend.writeTimestamp(2*this.backend.pendingDispatchNumber),s.setPipeline(e.computePipeline);let o=[];for(let e of t)o.push({binding:o.length,resource:{buffer:e.buffer}});for(let e of n)o.push({binding:o.length,resource:{buffer:e.buffer}});a&&o.push({binding:o.length,resource:a});let u=i.createBindGroup({layout:e.computePipeline.getBindGroupLayout(0),entries:o,label:e.programInfo.name});s.setBindGroup(0,u),s.dispatchWorkgroups(...r),this.backend.writeTimestamp(2*this.backend.pendingDispatchNumber+1),this.backend.pendingDispatchNumber++,(this.backend.pendingDispatchNumber>=this.backend.maxDispatchNumber||"at-passes"===this.backend.queryType)&&this.backend.endComputePass(),this.backend.pendingDispatchNumber>=this.backend.maxDispatchNumber&&this.backend.flush(),k(e.programInfo.name)}dispose(){}build(e,t){T(e.name);let n=this.backend.device,r=[];n.features.has("shader-f16")&&r.push("enable f16;");let a=At(t),i=e.getShaderSource(a),s=`${r.join("\n")}\n${a.additionalImplementations}\n${i}`,o=n.createShaderModule({code:s,label:e.name});et("verbose",(()=>`[WebGPU] ${e.name} shader code: ${s}`));let u=n.createComputePipeline({compute:{module:o,entryPoint:"main"},layout:"auto",label:e.name});return k(e.name),{programInfo:e,computePipeline:u}}normalizeDispatchGroupSize(e){let t="number"==typeof e?e:e.x,n="number"==typeof e?1:e.y||1,r="number"==typeof e?1:e.z||1,a=this.backend.device.limits.maxComputeWorkgroupsPerDimension;if(t<=a&&n<=a&&r<=a)return[t,n,r];let i=t*n*r,s=Math.ceil(Math.sqrt(i));if(s>a){if(s=Math.ceil(Math.cbrt(i)),s>a)throw new Error("Total dispatch size exceeds WebGPU maximum.");return[s,s,s]}return[s,s,1]}}})),yu=N((()=>{se(),$o(),bo(),_o(),So(),mu(),gu(),uo=(e,t)=>{if(t.length!==e.length)throw new Error(`inputDependencies length ${t.length} is not equal to inputTensors length ${e.length}.`);let n=[];for(let r=0;r{let r=e.name;return e.shaderCache?.hint&&(r+="["+e.shaderCache.hint+"]"),r+=":"+n+`:${uo(t,e.shaderCache?.inputDependencies??new Array(t.length).fill("dims"))}`,r},po=class{constructor(){this.currentKernelId=null,this.commandEncoder=null,this.computePassEncoder=null,this.maxDispatchNumber=16,this.pendingDispatchNumber=0,this.pendingKernels=[],this.pendingQueries=new Map,this.sessionExternalDataMapping=new Map}get currentKernelCustomData(){if(null===this.currentKernelId)throw new Error("currentKernelCustomData(): currentKernelId is null. (should not happen)");let e=this.kernelCustomData.get(this.currentKernelId);return e||(e={},this.kernelCustomData.set(this.currentKernelId,e)),e}async initialize(e,t){this.env=e;let n=[],r={requiredLimits:{maxComputeWorkgroupStorageSize:t.limits.maxComputeWorkgroupStorageSize,maxComputeWorkgroupsPerDimension:t.limits.maxComputeWorkgroupsPerDimension,maxStorageBufferBindingSize:t.limits.maxStorageBufferBindingSize,maxBufferSize:t.limits.maxBufferSize,maxComputeInvocationsPerWorkgroup:t.limits.maxComputeInvocationsPerWorkgroup,maxComputeWorkgroupSizeX:t.limits.maxComputeWorkgroupSizeX,maxComputeWorkgroupSizeY:t.limits.maxComputeWorkgroupSizeY,maxComputeWorkgroupSizeZ:t.limits.maxComputeWorkgroupSizeZ},requiredFeatures:n};t.features.has("chromium-experimental-timestamp-query-inside-passes")?n.push("chromium-experimental-timestamp-query-inside-passes"):t.features.has("timestamp-query")&&n.push("timestamp-query"),t.features.has("shader-f16")&&n.push("shader-f16"),this.device=await t.requestDevice(r),this.gpuDataManager=ot(this),this.programManager=new oo(this),this.kernels=new Map,this.kernelPersistentData=new Map,this.kernelCustomData=new Map,Qe(e.logLevel,!!e.debug),this.device.onuncapturederror=e=>{e.error instanceof GPUValidationError&&console.error(`An uncaught WebGPU validation error was raised: ${e.error.message}`)},Object.defineProperty(this.env.webgpu,"device",{value:this.device}),this.setQueryType()}dispose(){typeof this.querySet<"u"&&this.querySet.destroy(),this.gpuDataManager.dispose()}getCommandEncoder(){return this.commandEncoder||(this.commandEncoder=this.device.createCommandEncoder(),this.setQueryType(),"none"!==this.queryType&&typeof this.querySet>"u"&&(this.querySet=this.device.createQuerySet({type:"timestamp",count:2*this.maxDispatchNumber}),this.queryResolveBuffer=this.device.createBuffer({size:2*this.maxDispatchNumber*8,usage:GPUBufferUsage.COPY_SRC|GPUBufferUsage.QUERY_RESOLVE}))),this.commandEncoder}getComputePassEncoder(){if(!this.computePassEncoder){let e={};"at-passes"===this.queryType&&(e.timestampWrites={querySet:this.querySet,beginningOfPassWriteIndex:2*this.pendingDispatchNumber,endOfPassWriteIndex:2*this.pendingDispatchNumber+1}),this.computePassEncoder=this.getCommandEncoder().beginComputePass(e)}return this.computePassEncoder}endComputePass(){this.computePassEncoder&&(this.computePassEncoder.end(),this.computePassEncoder=null)}flush(){if(!this.commandEncoder)return;let e;T(),this.endComputePass(),"none"!==this.queryType&&(this.commandEncoder.resolveQuerySet(this.querySet,0,2*this.pendingDispatchNumber,this.queryResolveBuffer,0),e=this.device.createBuffer({size:2*this.pendingDispatchNumber*8,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST}),this.pendingQueries.set(e,this.pendingKernels),this.pendingKernels=[],this.commandEncoder.copyBufferToBuffer(this.queryResolveBuffer,0,e,0,2*this.pendingDispatchNumber*8)),this.device.queue.submit([this.commandEncoder.finish()]),this.gpuDataManager.refreshPendingBuffers(),this.commandEncoder=null,this.pendingDispatchNumber=0,"none"!==this.queryType&&e.mapAsync(GPUMapMode.READ).then((()=>{let t=new BigUint64Array(e.getMappedRange()),n=this.pendingQueries.get(e);for(let e=0;e"u"&&(this.queryTimeBase=p);let f=Number(p-this.queryTimeBase),h=Number(c-this.queryTimeBase);if(!Number.isSafeInteger(f)||!Number.isSafeInteger(h))throw new RangeError("incorrect timestamp range");if(this.env.webgpu.profiling?.ondata)this.env.webgpu.profiling.ondata({version:1,inputsMetadata:l.map((e=>({dims:e.dims,dataType:Ve(e.dataType)}))),outputsMetadata:d.map((e=>({dims:e.dims,dataType:Ve(e.dataType)}))),kernelId:a,kernelType:s,kernelName:o,programName:u,startTime:f,endTime:h});else{let e="";l.forEach(((t,n)=>{e+=`input[${n}]: [${t.dims}] | ${Ve(t.dataType)}, `}));let t="";d.forEach(((e,n)=>{t+=`output[${n}]: [${e.dims}] | ${Ve(e.dataType)}, `})),console.log(`[profiling] kernel "${a}|${s}|${o}|${u}" ${e}${t}execution time: ${h-f} ns`)}I("GPU",`${u}::${p}::${c}`)}e.unmap(),this.pendingQueries.delete(e)})),k()}run(e,t,n,r,a){T(e.name);let i=[];for(let e=0;et)):n;if(l.length!==s.length)throw new Error(`Output size ${l.length} must be equal to ${s.length}.`);let d,p=[],c=[];for(let e=0;e=s.length)throw new Error(`Invalid output index: ${l[e]}`);if(-3===l[e])continue;let t=-1===l[e],n=-2===l[e],i=t||n?a(s[e].dataType,s[e].dims):r(l[e],s[e].dataType,s[e].dims),o=this.gpuDataManager.get(i.data);if(!o)throw new Error(`no GPU data for output: ${i.data}`);if(t&&this.temporaryData.push(o),n){let e=this.kernelPersistentData.get(this.currentKernelId);e||(e=[],this.kernelPersistentData.set(this.currentKernelId,e)),e.push(o)}p.push(i),c.push(o)}if(u){let e=0,t=[];u.forEach((n=>{let r="number"==typeof n.data?[n.data]:n.data;if(0===r.length)return;let a=r.length<=2?4*r.length:16;e=Math.ceil(e/a)*a,t.push(e),e+=r.length>4?16*Math.ceil(r.length/4):4*r.length}));let n=16;e=Math.ceil(e/n)*n;let r=new ArrayBuffer(e);u.forEach(((e,n)=>{let a=t[n],i="number"==typeof e.data?[e.data]:e.data;"int32"===e.type?new Int32Array(r,a,i.length).set(i):"uint32"===e.type?new Uint32Array(r,a,i.length).set(i):new Float32Array(r,a,i.length).set(i)}));let a=this.gpuDataManager.create(e,GPUBufferUsage.COPY_DST|GPUBufferUsage.UNIFORM);this.device.queue.writeBuffer(a.buffer,0,r,0,e),this.gpuDataManager.release(a.id),d={offset:0,size:e,buffer:a.buffer}}let f=this.programManager.normalizeDispatchGroupSize(o),h=1===f[1]&&1===f[2],m=lo(e,t,h),g=this.programManager.getArtifact(m);if(g||(g=this.programManager.build(e,f),this.programManager.setArtifact(m,g),et("info",(()=>`[artifact] key: ${m}, programName: ${e.name}`))),et("info",(()=>`[ProgramManager] run "${e.name}" (key=${m}) with ${f[0]}x${f[1]}x${f[2]}`)),"none"!==this.queryType){let e={kernelId:this.currentKernelId,programName:g.programInfo.name,inputTensorViews:t,outputTensorViews:p};this.pendingKernels.push(e)}return this.programManager.run(g,i,c,f,d),k(e.name),p}upload(e,t){this.gpuDataManager.upload(e,t)}memcpy(e,t){this.gpuDataManager.memcpy(e,t)}async download(e,t){await this.gpuDataManager.download(e,t)}alloc(e){return this.gpuDataManager.create(e).id}free(e){return this.gpuDataManager.release(e)}createKernel(e,t,n,r){let a=so.get(e);if(!a)throw new Error(`kernel not implemented: ${e}`);let i={kernelType:e,kernelName:r,kernelEntry:a[0],attributes:[a[1],n]};this.kernels.set(t,i)}releaseKernel(e){let t=this.kernelPersistentData.get(e);if(t){for(let e of t)this.gpuDataManager.release(e.id);this.kernelPersistentData.delete(e)}this.kernelCustomData.delete(e),this.kernels.delete(e)}computeKernel(e,t,n){let r=this.kernels.get(e);if(!r)throw new Error(`kernel not created: ${e}`);let a=r.kernelType,i=r.kernelName,s=r.kernelEntry,o=r.attributes;if(null!==this.currentKernelId)throw new Error(`kernel "[${a}] ${i}" is not allowed to be called recursively`);this.currentKernelId=e,o[0]&&(o[1]=o[0](o[1]),o[0]=void 0),et("info",(()=>`[WebGPU] Start to run kernel "[${a}] ${i}"...`));let u=this.env.debug;this.temporaryData=[];try{return u&&this.device.pushErrorScope("validation"),s(t,o[1]),0}catch(e){return n.push(Promise.resolve(`[WebGPU] Kernel "[${a}] ${i}" failed. ${e}`)),1}finally{u&&n.push(this.device.popErrorScope().then((e=>e?`GPU validation error for kernel "[${a}] ${i}": ${e.message}`:null)));for(let e of this.temporaryData)this.gpuDataManager.release(e.id);this.temporaryData=[],this.currentKernelId=null}}registerBuffer(e,t,n,r){let a=this.sessionExternalDataMapping.get(e);a||(a=new Map,this.sessionExternalDataMapping.set(e,a));let i=a.get(t),s=this.gpuDataManager.registerExternalBuffer(n,r,i?.[1]);return a.set(t,[s,n]),s}unregisterBuffers(e){let t=this.sessionExternalDataMapping.get(e);t&&(t.forEach((e=>this.gpuDataManager.unregisterExternalBuffer(e[1]))),this.sessionExternalDataMapping.delete(e))}getBuffer(e){let t=this.gpuDataManager.get(e);if(!t)throw new Error(`no GPU data for buffer: ${e}`);return t.buffer}createDownloader(e,t,n){return async()=>{let r=await it(this,e,t);return tt(r.buffer,n)}}writeTimestamp(e){"inside-passes"===this.queryType&&this.computePassEncoder.writeTimestamp(this.querySet,e)}setQueryType(){this.queryType="none",("default"===this.env.webgpu.profiling?.mode||this.env.wasm.trace)&&(this.device.features.has("chromium-experimental-timestamp-query-inside-passes")?this.queryType="inside-passes":this.device.features.has("timestamp-query")&&(this.queryType="at-passes"))}}})),wu={};U(wu,{init:()=>bu});var $u,vu,bu,_u,xu,Su,Eu,Iu,Cu,Tu,ku,Ou,Au,Ru,zu,Bu,Du,Mu,Pu,Nu,Wu,Uu,Vu,Hu,Lu,Gu,Fu,qu,ju,Ku,Yu,Zu,Xu,Qu,Ju,el,tl,nl,rl=N((()=>{$o(),yu(),bo(),Io(),$u=class e{constructor(e,t,n,r){this.module=e,this.dataType=t,this.data=n,this.dims=r}getFloat32Array(){if(1!==this.dataType)throw new Error("Invalid data type");let e=ct.size(this.dims);return 0===e?new Float32Array:new Float32Array(this.module.HEAP8.buffer,this.data,e)}getBigInt64Array(){if(7!==this.dataType)throw new Error("Invalid data type");let e=ct.size(this.dims);return 0===e?new BigInt64Array:new BigInt64Array(this.module.HEAP8.buffer,this.data,e)}getInt32Array(){if(6!==this.dataType)throw new Error("Invalid data type");let e=ct.size(this.dims);return 0===e?new Int32Array:new Int32Array(this.module.HEAP8.buffer,this.data,e)}reshape(t){if(ct.size(t)!==ct.size(this.dims))throw new Error("Invalid new shape");return new e(this.module,this.dataType,this.data,t)}},vu=class{constructor(e,t,n){this.module=e,this.backend=t,this.customDataOffset=0,this.customDataSize=0;let r=e.HEAPU32,a=n>>>2;this.opKernelContext=r[a++];let i=r[a++];this.outputCount=r[a++],this.customDataOffset=r[a++],this.customDataSize=r[a++];let s=[];for(let t=0;t"number"==typeof e?this.inputs[e]:e))??this.inputs,r=t?.outputs??[];return this.backend.run(e,n,r,((e,t,n)=>new $u(this.module,t,this.output(e,n),n)),((e,t)=>{let n=He(e);if(!n)throw new Error(`Unsupported data type: ${e}`);let r=n*ct.size(t);return new $u(this.module,e,this.backend.gpuDataManager.create(r).id,t)}))}output(e,t){let n=this.module.stackSave();try{let n=this.module.stackAlloc(4*(1+t.length)),r=n>>2;this.module.HEAPU32[r++]=t.length;for(let e=0;e{let r=e.jsepInit;if(!r)throw new Error("Failed to initialize JSEP. The WebAssembly module is not built with JSEP support.");let a=new po;await a.initialize(t,n),r(a,(e=>a.alloc(e)),(e=>a.free(e)),((t,n,r,i=!1)=>{if(i)et("verbose",(()=>`[WebGPU] jsepCopyGpuToGpu: src=${t}, dst=${n}, size=${r}`)),a.memcpy(t,n);else{et("verbose",(()=>`[WebGPU] jsepCopyCpuToGpu: dataOffset=${t}, gpuDataId=${n}, size=${r}`));let i=e.HEAPU8.subarray(t>>>0,(t>>>0)+r);a.upload(n,i)}}),(async(t,n,r)=>{et("verbose",(()=>`[WebGPU] jsepCopyGpuToCpu: gpuDataId=${t}, dataOffset=${n}, size=${r}`)),await a.download(t,(()=>e.HEAPU8.subarray(n>>>0,(n>>>0)+r)))}),((t,n,r)=>a.createKernel(t,n,r,e.UTF8ToString(e._JsepGetNodeName(n)))),(e=>a.releaseKernel(e)),((t,n,r,i)=>{et("verbose",(()=>`[WebGPU] jsepRun: sessionHandle=${r}, kernel=${t}, contextDataOffset=${n}`));let s=new vu(e,a,n);return a.computeKernel(t,s,i)}))}})),al=N((()=>{yo(),wo(),$o(),mo(),go(),vo(),_u=(e,t)=>{0!==Oe()._OrtInit(e,t)&&ze("Can't initialize onnxruntime.")},xu=async e=>{_u(e.wasm.numThreads,Ge(e.logLevel))},Su=async(e,t)=>{if("webgpu"===t){if(typeof navigator>"u"||!navigator.gpu)throw new Error("WebGPU is not supported in current environment");let t=await navigator.gpu.requestAdapter();if(!t)throw new Error('Failed to get GPU adapter. You may need to enable flag "--enable-unsafe-webgpu" if you are using Chrome.');if(!e.wasm.simd)throw new Error("Not supported for WebGPU=ON and SIMD=OFF. Please set `env.wasm.simd` to true when using `webgpu` EP");let n=(rl(),V(wu)).init;await n(Oe(),e,t)}},Eu=new Map,Iu=e=>{let t=Oe(),n=t.stackSave();try{let n=t.stackAlloc(8);return 0!==t._OrtGetInputOutputCount(e,n,n+4)&&ze("Can't get session input/output count."),[t.HEAP32[n/4],t.HEAP32[n/4+1]]}finally{t.stackRestore(n)}},Cu=e=>{let t=Oe(),n=t._malloc(e.byteLength);if(0===n)throw new Error(`Can't create a session. failed to allocate a buffer of size ${e.byteLength}.`);return t.HEAPU8.set(e,n),[n,e.byteLength]},Tu=async(e,t)=>{let n,r,a=Oe();Array.isArray(e)?[n,r]=e:e.buffer===a.HEAPU8.buffer?[n,r]=[e.byteOffset,e.byteLength]:[n,r]=Cu(e);let i=0,s=0,o=0,u=[],l=[],d=[];try{if([s,u]=We(t),t?.externalData&&a.mountExternalData){let e=[];for(let n of t.externalData){let t="string"==typeof n?n:n.path;e.push(je("string"==typeof n?n:n.data).then((e=>{a.mountExternalData(t,e)})))}await Promise.all(e)}i=a._OrtCreateSession(n,r,s),0===i&&ze("Can't create a session.");let[e,p]=Iu(i),c=[],f=[],h=[];for(let t=0;t"gpu-buffer"===e))&&(o=a._OrtCreateBinding(i),0===o&&ze("Can't create IO binding."),m={handle:o,outputPreferredLocations:h,outputPreferredLocationsEncoded:h.map((e=>qe(e)))}),Eu.set(i,[i,l,d,m]),[i,c,f]}catch(e){throw l.forEach((e=>a._OrtFree(e))),d.forEach((e=>a._OrtFree(e))),0!==o&&a._OrtReleaseBinding(o),0!==i&&a._OrtReleaseSession(i),e}finally{a._free(n),0!==s&&a._OrtReleaseSessionOptions(s),u.forEach((e=>a._free(e))),a.unmountExternalData?.()}},ku=e=>{let t=Oe(),n=Eu.get(e);if(!n)throw new Error(`cannot release session. invalid session id: ${e}`);let[r,a,i,s]=n;s&&t._OrtReleaseBinding(s.handle),t.jsepUnregisterBuffers?.(e),a.forEach((e=>t._OrtFree(e))),i.forEach((e=>t._OrtFree(e))),t._OrtReleaseSession(r),Eu.delete(e)},Ou=(e,t,n,r,a)=>{if(!e)return void t.push(0);let i,s,o=Oe(),u=e[0],l=e[1],d=e[3];if("string"===u&&"gpu-buffer"===d)throw new Error("String tensor is not supported on GPU.");if("gpu-buffer"===d){let t=e[2].gpuBuffer,n=He(Ue(u));s=l.reduce(((e,t)=>e*t),1)*n,i=o.jsepRegisterBuffer(r,a,t,s)}else{let t=e[2];if(Array.isArray(t)){s=4*t.length,i=o._malloc(s),n.push(i);let e=i/4;for(let r=0;ro.HEAP32[e++]=t));let n=o._OrtCreateTensor(Ue(u),i,s,c,l.length,qe(d));0===n&&ze(`Can't create tensor for input/output. session=${r}, index=${a}.`),t.push(n)}finally{o.stackRestore(p)}},Au=async(e,t,n,r,a,i)=>{let s=Oe(),o=Eu.get(e);if(!o)throw new Error(`cannot run inference. invalid session id: ${e}`);let[u,l,d,p]=o,c=t.length,f=r.length,h=0,m=[],g=[],y=[],w=[],$=s.stackSave(),v=s.stackAlloc(4*c),b=s.stackAlloc(4*c),_=s.stackAlloc(4*f),x=s.stackAlloc(4*f);try{[h,m]=Be(i);for(let r=0;re*t),1);n=Ve(i);let m=p?.outputPreferredLocations[r[e]];if("string"===n){if("gpu-buffer"===m)throw new Error("String tensor is not supported on GPU.");let e=[],t=l/4;for(let n=0;n0){let e=s.jsepGetBuffer(l),r=He(i);if(void 0===r||!Fe(n))throw new Error(`Unsupported data type: ${n}`);u=!0,C.push([n,f,{gpuBuffer:e,download:s.jsepCreateDownloader(e,h*r,n),dispose:()=>{s._OrtReleaseTensor(t)}},"gpu-buffer"])}else{let e=new(Le(n))(h);new Uint8Array(e.buffer,e.byteOffset,e.byteLength).set(s.HEAPU8.subarray(l,l+e.byteLength)),C.push([n,f,e,"cpu"])}}finally{s.stackRestore(i),"string"===n&&l&&s._free(l),u||s._OrtReleaseTensor(t)}}return p&&s._OrtClearBoundOutputs(p.handle),C}finally{s.stackRestore($),g.forEach((e=>s._OrtReleaseTensor(e))),y.forEach((e=>s._OrtReleaseTensor(e))),w.forEach((e=>s._free(e))),0!==h&&s._OrtReleaseRunOptions(h),m.forEach((e=>s._free(e)))}},Ru=e=>{let t=Oe(),n=Eu.get(e);if(!n)throw new Error("invalid session id");let r=n[0],a=t._OrtEndProfiling(r);0===a&&ze("Can't get an profile file name."),t._OrtFree(a)},zu=e=>{let t=[];for(let n of e){let e=n[2];!Array.isArray(e)&&"buffer"in e&&t.push(e.buffer)}return t}})),il=W(((e,t)=>{t.exports='/*!\n * ONNX Runtime Web v1.17.1\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n"use strict";(()=>{var hn=Object.defineProperty;var Lu=Object.getOwnPropertyDescriptor;var Fu=Object.getOwnPropertyNames;var ju=Object.prototype.hasOwnProperty;var j=(e,t)=>()=>(e&&(t=e(e=0)),t);var dr=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Br=(e,t)=>{for(var r in t)hn(e,r,{get:t[r],enumerable:!0})},qu=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Fu(t))!ju.call(e,n)&&n!==r&&hn(e,n,{get:()=>t[n],enumerable:!(o=Lu(t,n))||o.enumerable});return e};var Ht=e=>qu(hn({},"__esModule",{value:!0}),e);var gn={};Br(gn,{createReadStream:()=>xo,readFile:()=>Ku,readFileSync:()=>Yu});var Ku,Yu,xo,yn=j(()=>{Ku=void 0,Yu=void 0,xo=void 0});var bn={};Br(bn,{join:()=>Zu});var Zu,wn=j(()=>{Zu=void 0});var Io=dr((Co,vn)=>{"use strict";var _o=(()=>{var e=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(e=e||__filename),function(t={}){var r=t,o,n;r.ready=new Promise((d,m)=>{o=d,n=m}),r.mountExternalData=(d,m)=>{(r.Fa||(r.Fa=new Map)).set(d,m)},r.unmountExternalData=()=>{delete r.Fa},r.jsepInit=(d,m,v,C,B,H,q,le)=>{r.ab=d,r.Qa=m,r.Sa=v,r.La=C,r.Ra=B,r.sa=H,r.Ta=q,r.Ua=le,m=(J,re,se)=>(...we)=>{let _e=tt,P=re?.();we=J(...we);let ue=re?.();return P!==ue&&(J=ue,se(P),re=se=null),tt!=_e?xr():we},v=J=>async(...re)=>{try{if(r.Ea)throw Error("Session already started");let se=r.Ea={Va:re[0],errors:[]},we=await J(...re);if(r.Ea!==se)throw Error("Session mismatch");d.flush();let _e=se.errors;if(0<_e.length){let P=await Promise.all(_e);if(P=P.filter(ue=>ue),0r._OrtRun,J=>r._OrtRun=J)),r._OrtRunWithBinding=v(m(r._OrtRunWithBinding,()=>r._OrtRunWithBinding,J=>r._OrtRunWithBinding=J)),r._OrtBindInput=m(r._OrtBindInput,()=>r._OrtBindInput,J=>r._OrtBindInput=J),r.jsepRegisterBuffer=(J,re,se,we)=>d.registerBuffer(J,re,se,we),r.jsepUnregisterBuffers=J=>{d.unregisterBuffers(J)},r.jsepGetBuffer=J=>d.getBuffer(J),r.jsepCreateDownloader=(J,re,se)=>d.createDownloader(J,re,se)};var s=Object.assign({},r),u="./this.program",l=(d,m)=>{throw m},a=typeof window=="object",p=typeof importScripts=="function",h=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",g="",b,w,y;if(h){var _=(yn(),Ht(gn)),I=(wn(),Ht(bn));g=p?I.dirname(g)+"/":__dirname+"/",b=(d,m)=>(d=We(d)?new URL(d):I.normalize(d),_.readFileSync(d,m?void 0:"utf8")),y=d=>(d=b(d,!0),d.buffer||(d=new Uint8Array(d)),d),w=(d,m,v,C=!0)=>{d=We(d)?new URL(d):I.normalize(d),_.readFile(d,C?void 0:"utf8",(B,H)=>{B?v(B):m(C?H.buffer:H)})},!r.thisProgram&&1{throw process.exitCode=d,m},r.inspect=()=>"[Emscripten Module object]"}else(a||p)&&(p?g=self.location.href:typeof document<"u"&&document.currentScript&&(g=document.currentScript.src),e&&(g=e),g.indexOf("blob:")!==0?g=g.substr(0,g.replace(/[?#].*/,"").lastIndexOf("/")+1):g="",b=d=>{var m=new XMLHttpRequest;return m.open("GET",d,!1),m.send(null),m.responseText},p&&(y=d=>{var m=new XMLHttpRequest;return m.open("GET",d,!1),m.responseType="arraybuffer",m.send(null),new Uint8Array(m.response)}),w=(d,m,v)=>{var C=new XMLHttpRequest;C.open("GET",d,!0),C.responseType="arraybuffer",C.onload=()=>{C.status==200||C.status==0&&C.response?m(C.response):v()},C.onerror=v,C.send(null)});var $=console.log.bind(console),x=console.error.bind(console);Object.assign(r,s),s=null,typeof WebAssembly!="object"&&he("no native wasm support detected");var E,A=!1,z,R,V,T,N,te,Y;function K(){var d=E.buffer;r.HEAP8=R=new Int8Array(d),r.HEAP16=new Int16Array(d),r.HEAPU8=V=new Uint8Array(d),r.HEAPU16=new Uint16Array(d),r.HEAP32=T=new Int32Array(d),r.HEAPU32=N=new Uint32Array(d),r.HEAPF32=te=new Float32Array(d),r.HEAPF64=Y=new Float64Array(d)}var Q=[],Z=[],Ee=[],Pe=0,fe=null,Ie=null;function he(d){throw d="Aborted("+d+")",x(d),A=!0,z=1,d=new WebAssembly.RuntimeError(d+". Build with -sASSERTIONS for more info."),n(d),d}var ye=d=>d.startsWith("data:application/octet-stream;base64,"),We=d=>d.startsWith("file://"),De;if(De="ort-wasm-simd.wasm",!ye(De)){var Ge=De;De=r.locateFile?r.locateFile(Ge,g):g+Ge}function G(d){if(y)return y(d);throw"both async and sync fetching of the wasm failed"}function ee(d){if(a||p){if(typeof fetch=="function"&&!We(d))return fetch(d,{credentials:"same-origin"}).then(m=>{if(!m.ok)throw"failed to load wasm binary file at \'"+d+"\'";return m.arrayBuffer()}).catch(()=>G(d));if(w)return new Promise((m,v)=>{w(d,C=>m(new Uint8Array(C)),v)})}return Promise.resolve().then(()=>G(d))}function be(d,m,v){return ee(d).then(C=>WebAssembly.instantiate(C,m)).then(C=>C).then(v,C=>{x(`failed to asynchronously prepare wasm: ${C}`),he(C)})}function et(d,m){var v=De;return typeof WebAssembly.instantiateStreaming!="function"||ye(v)||We(v)||h||typeof fetch!="function"?be(v,d,m):fetch(v,{credentials:"same-origin"}).then(C=>WebAssembly.instantiateStreaming(C,d).then(m,function(B){return x(`wasm streaming compile failed: ${B}`),x("falling back to ArrayBuffer instantiation"),be(v,d,m)}))}var ze,Ue={931056:(d,m,v,C)=>{if(typeof r>"u"||!r.Fa)return 1;if(d=qe(d>>>0),d.startsWith("./")&&(d=d.substring(2)),d=r.Fa.get(d),!d)return 2;if(m>>>=0,v>>>=0,m+v>d.byteLength)return 3;try{return V.set(d.subarray(m,m+v),C>>>0>>>0),0}catch{return 4}},931557:d=>r.Qa(d),931590:d=>r.Sa(d),931622:(d,m,v)=>{r.La(d,m,v,!0)},931661:(d,m,v)=>{r.La(d,m,v)},931694:d=>{r.sa("Abs",d,void 0)},931745:d=>{r.sa("Neg",d,void 0)},931796:d=>{r.sa("Floor",d,void 0)},931849:d=>{r.sa("Ceil",d,void 0)},931901:d=>{r.sa("Reciprocal",d,void 0)},931959:d=>{r.sa("Sqrt",d,void 0)},932011:d=>{r.sa("Exp",d,void 0)},932062:d=>{r.sa("Erf",d,void 0)},932113:d=>{r.sa("Sigmoid",d,void 0)},932168:d=>{r.sa("Log",d,void 0)},932219:d=>{r.sa("Sin",d,void 0)},932270:d=>{r.sa("Cos",d,void 0)},932321:d=>{r.sa("Tan",d,void 0)},932372:d=>{r.sa("Asin",d,void 0)},932424:d=>{r.sa("Acos",d,void 0)},932476:d=>{r.sa("Atan",d,void 0)},932528:d=>{r.sa("Sinh",d,void 0)},932580:d=>{r.sa("Cosh",d,void 0)},932632:d=>{r.sa("Asinh",d,void 0)},932685:d=>{r.sa("Acosh",d,void 0)},932738:d=>{r.sa("Atanh",d,void 0)},932791:d=>{r.sa("Tanh",d,void 0)},932843:d=>{r.sa("Not",d,void 0)},932894:(d,m,v)=>{r.sa("Clip",d,{min:m,max:v})},932963:d=>{r.sa("Clip",d,void 0)},933015:(d,m)=>{r.sa("Elu",d,{alpha:m})},933073:d=>{r.sa("Relu",d,void 0)},933125:(d,m)=>{r.sa("LeakyRelu",d,{alpha:m})},933189:(d,m)=>{r.sa("ThresholdedRelu",d,{alpha:m})},933259:(d,m)=>{r.sa("Cast",d,{to:m})},933317:d=>{r.sa("Add",d,void 0)},933368:d=>{r.sa("Sub",d,void 0)},933419:d=>{r.sa("Mul",d,void 0)},933470:d=>{r.sa("Div",d,void 0)},933521:d=>{r.sa("Pow",d,void 0)},933572:d=>{r.sa("Equal",d,void 0)},933625:d=>{r.sa("Greater",d,void 0)},933680:d=>{r.sa("GreaterOrEqual",d,void 0)},933742:d=>{r.sa("Less",d,void 0)},933794:d=>{r.sa("LessOrEqual",d,void 0)},933853:(d,m,v,C,B)=>{r.sa("ReduceMean",d,{keepDims:!!m,noopWithEmptyAxes:!!v,axes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},934012:(d,m,v,C,B)=>{r.sa("ReduceMax",d,{keepDims:!!m,noopWithEmptyAxes:!!v,axes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},934170:(d,m,v,C,B)=>{r.sa("ReduceMin",d,{keepDims:!!m,noopWithEmptyAxes:!!v,axes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},934328:(d,m,v,C,B)=>{r.sa("ReduceProd",d,{keepDims:!!m,noopWithEmptyAxes:!!v,axes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},934487:(d,m,v,C,B)=>{r.sa("ReduceSum",d,{keepDims:!!m,noopWithEmptyAxes:!!v,axes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},934645:(d,m,v,C,B)=>{r.sa("ReduceL1",d,{keepDims:!!m,noopWithEmptyAxes:!!v,axes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},934802:(d,m,v,C,B)=>{r.sa("ReduceL2",d,{keepDims:!!m,noopWithEmptyAxes:!!v,axes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},934959:(d,m,v,C,B)=>{r.sa("ReduceLogSum",d,{keepDims:!!m,noopWithEmptyAxes:!!v,axes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},935120:(d,m,v,C,B)=>{r.sa("ReduceSumSquare",d,{keepDims:!!m,noopWithEmptyAxes:!!v,axes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},935284:(d,m,v,C,B)=>{r.sa("ReduceLogSumExp",d,{keepDims:!!m,noopWithEmptyAxes:!!v,axes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},935448:d=>{r.sa("Where",d,void 0)},935501:(d,m,v)=>{r.sa("Transpose",d,{perm:m?Array.from(T.subarray(m>>>0,v>>>0)):[]})},935609:(d,m,v,C,B,H,q,le,J,re,se,we,_e,P,ue)=>{r.sa("ConvTranspose",d,{format:J?"NHWC":"NCHW",autoPad:m,dilations:[v],group:C,kernel_shape:[B],pads:[H,q],strides:[le],wIsConst:()=>!!R[re>>>0],outputPadding:se?Array.from(T.subarray(se>>>0,we>>>0)):[],outputShape:_e?Array.from(T.subarray(_e>>>0,P>>>0)):[],activation:qe(ue)})},936011:(d,m,v,C,B,H,q,le,J,re,se,we,_e,P)=>{r.sa("ConvTranspose",d,{format:le?"NHWC":"NCHW",autoPad:m,dilations:Array.from(T.subarray(v>>>0,(v>>>0)+2>>>0)),group:C,kernelShape:Array.from(T.subarray(B>>>0,(B>>>0)+2>>>0)),pads:Array.from(T.subarray(H>>>0,(H>>>0)+4>>>0)),strides:Array.from(T.subarray(q>>>0,(q>>>0)+2>>>0)),wIsConst:()=>!!R[J>>>0],outputPadding:re?Array.from(T.subarray(re>>>0,se>>>0)):[],outputShape:we?Array.from(T.subarray(we>>>0,_e>>>0)):[],activation:qe(P)})},936576:(d,m,v,C,B,H,q,le,J,re,se,we,_e,P,ue)=>{r.sa("ConvTranspose",d,{format:J?"NHWC":"NCHW",autoPad:m,dilations:[v],group:C,kernel_shape:[B],pads:[H,q],strides:[le],wIsConst:()=>!!R[re>>>0],outputPadding:se?Array.from(T.subarray(se>>>0,we>>>0)):[],outputShape:_e?Array.from(T.subarray(_e>>>0,P>>>0)):[],activation:qe(ue)})},936978:(d,m,v,C,B,H,q,le,J,re,se,we,_e,P)=>{r.sa("ConvTranspose",d,{format:le?"NHWC":"NCHW",autoPad:m,dilations:Array.from(T.subarray(v>>>0,(v>>>0)+2>>>0)),group:C,kernelShape:Array.from(T.subarray(B>>>0,(B>>>0)+2>>>0)),pads:Array.from(T.subarray(H>>>0,(H>>>0)+4>>>0)),strides:Array.from(T.subarray(q>>>0,(q>>>0)+2>>>0)),wIsConst:()=>!!R[J>>>0],outputPadding:re?Array.from(T.subarray(re>>>0,se>>>0)):[],outputShape:we?Array.from(T.subarray(we>>>0,_e>>>0)):[],activation:qe(P)})},937543:(d,m)=>{r.sa("GlobalAveragePool",d,{format:m?"NHWC":"NCHW"})},937634:(d,m,v,C,B,H,q,le,J,re,se,we,_e,P,ue,Se)=>{r.sa("AveragePool",d,{format:Se?"NHWC":"NCHW",auto_pad:m,ceil_mode:v,count_include_pad:C,storage_order:B,dilations:[H,q],kernel_shape:[le,J],pads:[re,se,we,_e],strides:[P,ue]})},937918:(d,m)=>{r.sa("GlobalAveragePool",d,{format:m?"NHWC":"NCHW"})},938009:(d,m,v,C,B,H,q,le,J,re,se,we,_e,P,ue,Se)=>{r.sa("AveragePool",d,{format:Se?"NHWC":"NCHW",auto_pad:m,ceil_mode:v,count_include_pad:C,storage_order:B,dilations:[H,q],kernel_shape:[le,J],pads:[re,se,we,_e],strides:[P,ue]})},938293:(d,m)=>{r.sa("GlobalMaxPool",d,{format:m?"NHWC":"NCHW"})},938380:(d,m,v,C,B,H,q,le,J,re,se,we,_e,P,ue,Se)=>{r.sa("MaxPool",d,{format:Se?"NHWC":"NCHW",auto_pad:m,ceil_mode:v,count_include_pad:C,storage_order:B,dilations:[H,q],kernel_shape:[le,J],pads:[re,se,we,_e],strides:[P,ue]})},938660:(d,m)=>{r.sa("GlobalMaxPool",d,{format:m?"NHWC":"NCHW"})},938747:(d,m,v,C,B,H,q,le,J,re,se,we,_e,P,ue,Se)=>{r.sa("MaxPool",d,{format:Se?"NHWC":"NCHW",auto_pad:m,ceil_mode:v,count_include_pad:C,storage_order:B,dilations:[H,q],kernel_shape:[le,J],pads:[re,se,we,_e],strides:[P,ue]})},939027:(d,m,v,C,B)=>{r.sa("Gemm",d,{alpha:m,beta:v,transA:C,transB:B})},939131:d=>{r.sa("MatMul",d,void 0)},939185:(d,m,v,C)=>{r.sa("ArgMax",d,{keepDims:!!m,selectLastIndex:!!v,axis:C})},939293:(d,m,v,C)=>{r.sa("ArgMin",d,{keepDims:!!m,selectLastIndex:!!v,axis:C})},939401:(d,m)=>{r.sa("Softmax",d,{axis:m})},939464:(d,m)=>{r.sa("Concat",d,{axis:m})},939524:(d,m,v,C,B)=>{r.sa("Split",d,{axis:m,numOutputs:v,splitSizes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},939664:d=>{r.sa("Expand",d,void 0)},939718:(d,m)=>{r.sa("Gather",d,{axis:Number(m)})},939789:(d,m)=>{r.sa("GatherElements",d,{axis:Number(m)})},939868:(d,m,v,C,B,H,q,le,J,re,se)=>{r.sa("Resize",d,{antialias:m,axes:v?Array.from(T.subarray(v>>>0,C>>>0)):[],coordinateTransformMode:qe(B),cubicCoeffA:H,excludeOutside:q,extrapolationValue:le,keepAspectRatioPolicy:qe(J),mode:qe(re),nearestMode:qe(se)})},940214:(d,m,v,C,B,H,q)=>{r.sa("Slice",d,{starts:m?Array.from(T.subarray(m>>>0,v>>>0)):[],ends:C?Array.from(T.subarray(C>>>0,B>>>0)):[],axes:H?Array.from(T.subarray(H>>>0,q>>>0)):[]})},940430:d=>{r.sa("Tile",d,void 0)},940482:(d,m,v)=>{r.sa("LayerNormalization",d,{axis:Number(m),epsilon:Number(v)})},940589:(d,m,v)=>{r.sa("InstanceNormalization",d,{epsilon:m,format:v?"NHWC":"NCHW"})},940703:(d,m,v)=>{r.sa("InstanceNormalization",d,{epsilon:m,format:v?"NHWC":"NCHW"})},940817:d=>{r.sa("Range",d,void 0)},940870:(d,m)=>{r.sa("Einsum",d,{equation:qe(m)})},940951:(d,m,v,C,B)=>{r.sa("Pad",d,{mode:m,value:v,pads:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},941078:(d,m,v,C,B,H)=>{r.sa("BatchNormalization",d,{epsilon:m,momentum:v,spatial:!!B,trainingMode:!!C,format:H?"NHWC":"NCHW"})},941247:(d,m,v,C,B,H)=>{r.sa("BatchNormalization",d,{epsilon:m,momentum:v,spatial:!!B,trainingMode:!!C,format:H?"NHWC":"NCHW"})},941416:(d,m,v)=>{r.sa("CumSum",d,{exclusive:Number(m),reverse:Number(v)})},941513:(d,m,v,C,B,H,q,le,J)=>{r.sa("Attention",d,{numHeads:m,isUnidirectional:v,maskFilterValue:C,scale:B,doRotary:H,qkvHiddenSizes:q?Array.from(T.subarray(Number(le)>>>0,Number(le)+q>>>0)):[],pastPresentShareBuffer:!!J})},941785:d=>{r.sa("Gelu",d,void 0)},941837:(d,m,v,C,B,H)=>{r.sa("MultiHeadAttention",d,{numHeads:m,isUnidirectional:v,maskFilterValue:C,scale:B,doRotary:H})},941996:d=>{r.sa("BiasAdd",d,void 0)},942051:d=>{r.sa("BiasSplitGelu",d,void 0)},942112:(d,m)=>{r.sa("SkipLayerNormalization",d,{epsilon:m})},942193:(d,m,v,C,B,H,q,le,J,re,se,we,_e)=>{r.sa("Conv",d,{format:J?"NHWC":"NCHW",auto_pad:m,dilations:[v],group:C,kernel_shape:[B],pads:H?Array.from(T.subarray(H>>>0,q>>>0)):[],strides:[le],w_is_const:()=>!!R[re>>>0],activation:qe(se),activation_params:we?Array.from(te.subarray(we>>>0,_e>>>0)):[]})},942563:(d,m,v,C,B,H,q,le,J,re,se,we,_e,P,ue,Se)=>{r.sa("Conv",d,{format:we?"NHWC":"NCHW",auto_pad:m,dilations:[v,C],group:B,kernel_shape:[H,q],pads:le?Array.from(T.subarray(le>>>0,J>>>0)):[],strides:[re,se],w_is_const:()=>!!R[_e>>>0],activation:qe(P),activation_params:ue?Array.from(te.subarray(ue>>>0,Se>>>0)):[]})},942954:d=>{r.Ta(d)},942988:(d,m)=>r.Ua(d,m,r.Ea.Va,r.Ea.errors)};function Me(d){this.name="ExitStatus",this.message=`Program terminated with exit(${d})`,this.status=d}function wt(d){this.Ja=d-24,this.Oa=function(m){N[this.Ja+4>>>2>>>0]=m},this.Na=function(m){N[this.Ja+8>>>2>>>0]=m},this.$a=function(m,v){this.Ma(),this.Oa(m),this.Na(v)},this.Ma=function(){N[this.Ja+16>>>2>>>0]=0}}var rt=0,Dt=0,At=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,vt=(d,m,v)=>{m>>>=0;var C=m+v;for(v=m;d[v]&&!(v>=C);)++v;if(16B?C+=String.fromCharCode(B):(B-=65536,C+=String.fromCharCode(55296|B>>10,56320|B&1023))}}else C+=String.fromCharCode(B)}return C},qe=(d,m)=>(d>>>=0)?vt(V,d,m):"",qt=d=>{for(var m=0,v=0;v=C?m++:2047>=C?m+=2:55296<=C&&57343>=C?(m+=4,++v):m+=3}return m},Mt=(d,m,v,C)=>{if(v>>>=0,!(0=q){var le=d.charCodeAt(++H);q=65536+((q&1023)<<10)|le&1023}if(127>=q){if(v>=C)break;m[v++>>>0]=q}else{if(2047>=q){if(v+1>=C)break;m[v++>>>0]=192|q>>6}else{if(65535>=q){if(v+2>=C)break;m[v++>>>0]=224|q>>12}else{if(v+3>=C)break;m[v++>>>0]=240|q>>18,m[v++>>>0]=128|q>>12&63}m[v++>>>0]=128|q>>6&63}m[v++>>>0]=128|q&63}}return m[v>>>0]=0,v-B},$t=d=>d%4===0&&(d%100!==0||d%400===0),yt=[0,31,60,91,121,152,182,213,244,274,305,335],zt=[0,31,59,90,120,151,181,212,243,273,304,334],Ut=d=>{var m=qt(d)+1,v=Wt(m);return v&&Mt(d,V,v,m),v},Tt=[],Kt=(d,m)=>{Tt.length=0;for(var v;v=V[d++>>>0];){var C=v!=105;C&=v!=112,m+=C&&m%8?4:0,Tt.push(v==112?N[m>>>2>>>0]:v==105?T[m>>>2>>>0]:Y[m>>>3>>>0]),m+=C?8:4}return Tt},nt={},Yt=()=>{if(!Vt){var d={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:u||"./this.program"},m;for(m in nt)nt[m]===void 0?delete d[m]:d[m]=nt[m];var v=[];for(m in d)v.push(`${m}=${d[m]}`);Vt=v}return Vt},Vt,Ye=[null,[],[]],br=[31,29,31,30,31,30,31,31,30,31,30,31],Oe=[31,28,31,30,31,30,31,31,30,31,30,31];function wr(d){var m=Array(qt(d)+1);return Mt(d,m,0,m.length),m}function Nt(d,m,v,C){function B(P,ue,Se){for(P=typeof P=="number"?P.toString():P||"";P.lengthTr?-1:0st-P.getDate())ue-=st-P.getDate()+1,P.setDate(1),11>Se?P.setMonth(Se+1):(P.setMonth(0),P.setFullYear(P.getFullYear()+1));else{P.setDate(P.getDate()+ue);break}}return Se=new Date(P.getFullYear()+1,0,4),ue=le(new Date(P.getFullYear(),0,4)),Se=le(Se),0>=q(ue,P)?0>=q(Se,P)?P.getFullYear()+1:P.getFullYear():P.getFullYear()-1}d>>>=0,m>>>=0,v>>>=0,C>>>=0;var re=N[C+40>>>2>>>0];C={Ya:T[C>>>2>>>0],Xa:T[C+4>>>2>>>0],Ga:T[C+8>>>2>>>0],Ka:T[C+12>>>2>>>0],Ha:T[C+16>>>2>>>0],Da:T[C+20>>>2>>>0],xa:T[C+24>>>2>>>0],Ca:T[C+28>>>2>>>0],bb:T[C+32>>>2>>>0],Wa:T[C+36>>>2>>>0],Za:re?qe(re):""},v=qe(v),re={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var se in re)v=v.replace(new RegExp(se,"g"),re[se]);var we="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),_e="January February March April May June July August September October November December".split(" ");re={"%a":P=>we[P.xa].substring(0,3),"%A":P=>we[P.xa],"%b":P=>_e[P.Ha].substring(0,3),"%B":P=>_e[P.Ha],"%C":P=>H((P.Da+1900)/100|0,2),"%d":P=>H(P.Ka,2),"%e":P=>B(P.Ka,2," "),"%g":P=>J(P).toString().substring(2),"%G":P=>J(P),"%H":P=>H(P.Ga,2),"%I":P=>(P=P.Ga,P==0?P=12:12{for(var ue=0,Se=0;Se<=P.Ha-1;ue+=($t(P.Da+1900)?br:Oe)[Se++]);return H(P.Ka+ue,3)},"%m":P=>H(P.Ha+1,2),"%M":P=>H(P.Xa,2),"%n":()=>`\n`,"%p":P=>0<=P.Ga&&12>P.Ga?"AM":"PM","%S":P=>H(P.Ya,2),"%t":()=>"\t","%u":P=>P.xa||7,"%U":P=>H(Math.floor((P.Ca+7-P.xa)/7),2),"%V":P=>{var ue=Math.floor((P.Ca+7-(P.xa+6)%7)/7);if(2>=(P.xa+371-P.Ca-2)%7&&ue++,ue)ue==53&&(Se=(P.xa+371-P.Ca)%7,Se==4||Se==3&&$t(P.Da)||(ue=1));else{ue=52;var Se=(P.xa+7-P.Ca-1)%7;(Se==4||Se==5&&$t(P.Da%400-1))&&ue++}return H(ue,2)},"%w":P=>P.xa,"%W":P=>H(Math.floor((P.Ca+7-(P.xa+6)%7)/7),2),"%y":P=>(P.Da+1900).toString().substring(2),"%Y":P=>P.Da+1900,"%z":P=>{P=P.Wa;var ue=0<=P;return P=Math.abs(P)/60,(ue?"+":"-")+("0000"+(P/60*100+P%60)).slice(-4)},"%Z":P=>P.Za,"%%":()=>"%"},v=v.replace(/%%/g,"\\0\\0");for(se in re)v.includes(se)&&(v=v.replace(new RegExp(se,"g"),re[se](C)));return v=v.replace(/\\0\\0/g,"%"),se=wr(v),se.length>m?0:(R.set(se,d>>>0),se.length-1)}var St=d=>{try{d()}catch(m){he(m)}};function un(){var d=ae,m={};for(let[v,C]of Object.entries(d))m[v]=typeof C=="function"?function(){bt.push(v);try{return C.apply(null,arguments)}finally{A||(bt.pop(),tt&&ot===1&&bt.length===0&&(ot=0,St(ir),typeof Fibers<"u"&&Fibers.cb()))}}:C;return m}var ot=0,tt=null,de=0,bt=[],Zt={},vr={},$r=0,Qt=null,Sr=[];function xr(){return new Promise((d,m)=>{Qt={resolve:d,reject:m}})}function _r(){var d=Wt(65548),m=d+12;N[d>>>2>>>0]=m,N[d+4>>>2>>>0]=m+65536,m=bt[0];var v=Zt[m];return v===void 0&&(v=$r++,Zt[m]=v,vr[v]=m),T[d+8>>>2>>>0]=v,d}function Cr(d){if(!A){if(ot===0){var m=!1,v=!1;d((C=0)=>{if(!A&&(de=C,m=!0,v)){ot=2,St(()=>sr(tt)),typeof Browser<"u"&&Browser.Ia.Pa&&Browser.Ia.resume(),C=!1;try{var B=(0,ae[vr[T[tt+8>>>2>>>0]]])()}catch(le){B=le,C=!0}var H=!1;if(!tt){var q=Qt;q&&(Qt=null,(C?q.reject:q.resolve)(B),H=!0)}if(C&&!H)throw B}}),v=!0,m||(ot=1,tt=_r(),typeof Browser<"u"&&Browser.Ia.Pa&&Browser.Ia.pause(),St(()=>ar(tt)))}else ot===2?(ot=0,St(ur),er(tt),tt=null,Sr.forEach(C=>{if(!A)try{C();try{z=z=C=z,r.onExit?.(C),A=!0,l(C,new Me(C))}catch(B){B instanceof Me||B=="unwind"||l(1,B)}}catch(B){B instanceof Me||B=="unwind"||l(1,B)}})):he(`invalid state: ${ot}`);return de}}function Xt(d){return Cr(m=>{d().then(m)})}var Ir={n:function(d,m,v){return Xt(async()=>{await r.Ra(d,m,v)})},a:function(d,m,v){throw d>>>=0,new wt(d).$a(m>>>0,v>>>0),rt=d,Dt++,rt},g:function(){return 0},J:function(){},A:function(){},C:function(){},L:function(){return 0},H:function(){},D:function(){},G:function(){},l:function(){},B:function(){},y:function(){},I:function(){},z:function(){},m:()=>1,q:function(d,m,v){d=m+2097152>>>0<4194305-!!d?(d>>>0)+4294967296*m:NaN,v>>>=0,d=new Date(1e3*d),T[v>>>2>>>0]=d.getUTCSeconds(),T[v+4>>>2>>>0]=d.getUTCMinutes(),T[v+8>>>2>>>0]=d.getUTCHours(),T[v+12>>>2>>>0]=d.getUTCDate(),T[v+16>>>2>>>0]=d.getUTCMonth(),T[v+20>>>2>>>0]=d.getUTCFullYear()-1900,T[v+24>>>2>>>0]=d.getUTCDay(),T[v+28>>>2>>>0]=(d.getTime()-Date.UTC(d.getUTCFullYear(),0,1,0,0,0,0))/864e5|0},r:function(d,m,v){d=m+2097152>>>0<4194305-!!d?(d>>>0)+4294967296*m:NaN,v>>>=0,d=new Date(1e3*d),T[v>>>2>>>0]=d.getSeconds(),T[v+4>>>2>>>0]=d.getMinutes(),T[v+8>>>2>>>0]=d.getHours(),T[v+12>>>2>>>0]=d.getDate(),T[v+16>>>2>>>0]=d.getMonth(),T[v+20>>>2>>>0]=d.getFullYear()-1900,T[v+24>>>2>>>0]=d.getDay(),T[v+28>>>2>>>0]=($t(d.getFullYear())?yt:zt)[d.getMonth()]+d.getDate()-1|0,T[v+36>>>2>>>0]=-(60*d.getTimezoneOffset()),m=new Date(d.getFullYear(),6,1).getTimezoneOffset();var C=new Date(d.getFullYear(),0,1).getTimezoneOffset();T[v+32>>>2>>>0]=(m!=C&&d.getTimezoneOffset()==Math.min(C,m))|0},s:function(d){d>>>=0;var m=new Date(T[d+20>>>2>>>0]+1900,T[d+16>>>2>>>0],T[d+12>>>2>>>0],T[d+8>>>2>>>0],T[d+4>>>2>>>0],T[d>>>2>>>0],0),v=T[d+32>>>2>>>0],C=m.getTimezoneOffset(),B=new Date(m.getFullYear(),6,1).getTimezoneOffset(),H=new Date(m.getFullYear(),0,1).getTimezoneOffset(),q=Math.min(H,B);return 0>v?T[d+32>>>2>>>0]=+(B!=H&&q==C):0>>2>>>0]=m.getDay(),T[d+28>>>2>>>0]=($t(m.getFullYear())?yt:zt)[m.getMonth()]+m.getDate()-1|0,T[d>>>2>>>0]=m.getSeconds(),T[d+4>>>2>>>0]=m.getMinutes(),T[d+8>>>2>>>0]=m.getHours(),T[d+12>>>2>>>0]=m.getDate(),T[d+16>>>2>>>0]=m.getMonth(),T[d+20>>>2>>>0]=m.getYear(),d=m.getTime(),isNaN(d)?(T[Jt()>>>2>>>0]=61,d=-1):d/=1e3,tr((ze=d,1<=+Math.abs(ze)?0>>0:~~+Math.ceil((ze-+(~~ze>>>0))/4294967296)>>>0:0)),d>>>0},o:function(){return-52},p:function(){},w:function(d,m,v){function C(J){return(J=J.toTimeString().match(/\\(([A-Za-z ]+)\\)$/))?J[1]:"GMT"}v>>>=0;var B=new Date().getFullYear(),H=new Date(B,0,1),q=new Date(B,6,1);B=H.getTimezoneOffset();var le=q.getTimezoneOffset();N[d>>>0>>>2>>>0]=60*Math.max(B,le),T[m>>>0>>>2>>>0]=+(B!=le),d=C(H),m=C(q),d=Ut(d),m=Ut(m),le>>2>>>0]=d,N[v+4>>>2>>>0]=m):(N[v>>>2>>>0]=m,N[v+4>>>2>>>0]=d)},e:()=>{he("")},b:function(d,m,v){return d>>>=0,m=Kt(m>>>0,v>>>0),Ue[d].apply(null,m)},i:function(d,m,v){return d>>>=0,m=Kt(m>>>0,v>>>0),Ue[d].apply(null,m)},h:()=>Date.now(),x:function(){return 4294901760},c:()=>performance.now(),K:function(d,m,v){return m>>>=0,V.copyWithin(d>>>0>>>0,m>>>0,m+(v>>>0)>>>0)},u:function(d){d>>>=0;var m=V.length;if(4294901760=v;v*=2){var C=m*(1+.2/v);C=Math.min(C,d+100663296);var B=Math;C=Math.max(d,C);e:{B=(B.min.call(B,4294901760,C+(65536-C%65536)%65536)-E.buffer.byteLength+65535)/65536;try{E.grow(B),K();var H=1;break e}catch{}H=void 0}if(H)return!0}return!1},E:function(d,m){d>>>=0,m>>>=0;var v=0;return Yt().forEach((C,B)=>{var H=m+v;for(B=N[d+4*B>>>2>>>0]=H,H=0;H>>0>>>0]=C.charCodeAt(H);R[B>>>0>>>0]=0,v+=C.length+1}),0},F:function(d,m){d>>>=0,m>>>=0;var v=Yt();N[d>>>2>>>0]=v.length;var C=0;return v.forEach(B=>C+=B.length+1),N[m>>>2>>>0]=C,0},f:()=>52,k:function(){return 52},t:function(){return 70},j:function(d,m,v,C){m>>>=0,v>>>=0,C>>>=0;for(var B=0,H=0;H>>2>>>0],le=N[m+4>>>2>>>0];m+=8;for(var J=0;J>>0],se=Ye[d];re===0||re===10?((d===1?$:x)(vt(se,0)),se.length=0):se.push(re)}B+=le}return N[C>>>2>>>0]=B,0},v:Nt,d:function(d,m,v,C){return Nt(d>>>0,m>>>0,v>>>0,C>>>0)}},ae=function(){function d(v){return ae=v.exports,ae=un(),ae=Ar(),E=ae.M,K(),Z.unshift(ae.N),Pe--,Pe==0&&(fe!==null&&(clearInterval(fe),fe=null),Ie&&(v=Ie,Ie=null,v())),ae}var m={a:Ir};if(Pe++,r.instantiateWasm)try{return r.instantiateWasm(m,d)}catch(v){x(`Module.instantiateWasm callback failed with error: ${v}`),n(v)}return et(m,function(v){d(v.instance)}).catch(n),{}}();r._OrtInit=(d,m)=>(r._OrtInit=ae.O)(d,m),r._OrtGetLastError=(d,m)=>(r._OrtGetLastError=ae.P)(d,m),r._OrtCreateSessionOptions=(d,m,v,C,B,H,q,le,J,re)=>(r._OrtCreateSessionOptions=ae.Q)(d,m,v,C,B,H,q,le,J,re),r._OrtAppendExecutionProvider=(d,m)=>(r._OrtAppendExecutionProvider=ae.R)(d,m),r._OrtAddFreeDimensionOverride=(d,m,v)=>(r._OrtAddFreeDimensionOverride=ae.S)(d,m,v),r._OrtAddSessionConfigEntry=(d,m,v)=>(r._OrtAddSessionConfigEntry=ae.T)(d,m,v),r._OrtReleaseSessionOptions=d=>(r._OrtReleaseSessionOptions=ae.U)(d),r._OrtCreateSession=(d,m,v)=>(r._OrtCreateSession=ae.V)(d,m,v),r._OrtReleaseSession=d=>(r._OrtReleaseSession=ae.W)(d),r._OrtGetInputOutputCount=(d,m,v)=>(r._OrtGetInputOutputCount=ae.X)(d,m,v),r._OrtGetInputName=(d,m)=>(r._OrtGetInputName=ae.Y)(d,m),r._OrtGetOutputName=(d,m)=>(r._OrtGetOutputName=ae.Z)(d,m),r._OrtFree=d=>(r._OrtFree=ae._)(d),r._OrtCreateTensor=(d,m,v,C,B,H)=>(r._OrtCreateTensor=ae.$)(d,m,v,C,B,H),r._OrtGetTensorData=(d,m,v,C,B)=>(r._OrtGetTensorData=ae.aa)(d,m,v,C,B),r._OrtReleaseTensor=d=>(r._OrtReleaseTensor=ae.ba)(d),r._OrtCreateRunOptions=(d,m,v,C)=>(r._OrtCreateRunOptions=ae.ca)(d,m,v,C),r._OrtAddRunConfigEntry=(d,m,v)=>(r._OrtAddRunConfigEntry=ae.da)(d,m,v),r._OrtReleaseRunOptions=d=>(r._OrtReleaseRunOptions=ae.ea)(d),r._OrtCreateBinding=d=>(r._OrtCreateBinding=ae.fa)(d),r._OrtBindInput=(d,m,v)=>(r._OrtBindInput=ae.ga)(d,m,v),r._OrtBindOutput=(d,m,v,C)=>(r._OrtBindOutput=ae.ha)(d,m,v,C),r._OrtClearBoundOutputs=d=>(r._OrtClearBoundOutputs=ae.ia)(d),r._OrtReleaseBinding=d=>(r._OrtReleaseBinding=ae.ja)(d),r._OrtRunWithBinding=(d,m,v,C,B)=>(r._OrtRunWithBinding=ae.ka)(d,m,v,C,B),r._OrtRun=(d,m,v,C,B,H,q,le)=>(r._OrtRun=ae.la)(d,m,v,C,B,H,q,le),r._OrtEndProfiling=d=>(r._OrtEndProfiling=ae.ma)(d),r._JsepOutput=(d,m,v)=>(r._JsepOutput=ae.na)(d,m,v),r._JsepGetNodeName=d=>(r._JsepGetNodeName=ae.oa)(d);var Jt=()=>(Jt=ae.pa)(),Wt=r._malloc=d=>(Wt=r._malloc=ae.qa)(d),er=r._free=d=>(er=r._free=ae.ra)(d),tr=d=>(tr=ae.ta)(d),rr=()=>(rr=ae.ua)(),nr=d=>(nr=ae.va)(d),or=d=>(or=ae.wa)(d),ar=d=>(ar=ae.ya)(d),ir=()=>(ir=ae.za)(),sr=d=>(sr=ae.Aa)(d),ur=()=>(ur=ae.Ba)();r.___start_em_js=943100,r.___stop_em_js=943261;function Ar(){var d=ae;d=Object.assign({},d);var m=C=>()=>C()>>>0,v=C=>B=>C(B)>>>0;return d.pa=m(d.pa),d.qa=v(d.qa),d.ua=m(d.ua),d.wa=v(d.wa),d}r.stackAlloc=or,r.stackSave=rr,r.stackRestore=nr,r.UTF8ToString=qe,r.stringToUTF8=(d,m,v)=>Mt(d,V,m,v),r.lengthBytesUTF8=qt;var xt;Ie=function d(){xt||Et(),xt||(Ie=d)};function Et(){if(!(0_o)});var Ao=dr(()=>{});var To=dr(()=>{});var Eo={};Br(Eo,{cpus:()=>Qu});var Qu,Oo=j(()=>{Qu=void 0});var Ro=dr((ko,$n)=>{"use strict";var Po=(()=>{var e=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(e=e||__filename),function(t={}){function r(){return Q.buffer!=fe.buffer&&Ge(),fe}function o(){return Q.buffer!=fe.buffer&&Ge(),Ie}function n(){return Q.buffer!=fe.buffer&&Ge(),he}function s(){return Q.buffer!=fe.buffer&&Ge(),ye}function u(){return Q.buffer!=fe.buffer&&Ge(),We}function l(){return Q.buffer!=fe.buffer&&Ge(),De}var a=t,p,h;a.ready=new Promise((i,c)=>{p=i,h=c}),a.mountExternalData=(i,c)=>{(a.cb||(a.cb=new Map)).set(i,c)},a.unmountExternalData=()=>{delete a.cb},a.jsepInit=(i,c,f,S,O,D,W,ie)=>{a.Mb=i,a.wb=c,a.yb=f,a.kb=S,a.xb=O,a.Ea=D,a.zb=W,a.Ab=ie,c=(ne,oe,pe)=>(...xe)=>{let Te=ut,k=oe?.();xe=ne(...xe);let me=oe?.();return k!==me&&(ne=me,pe(k),oe=pe=null),ut!=Te?Mu():xe},f=ne=>async(...oe)=>{try{if(a.bb)throw Error("Session already started");let pe=a.bb={Cb:oe[0],errors:[]},xe=await ne(...oe);if(a.bb!==pe)throw Error("Session mismatch");i.flush();let Te=pe.errors;if(0me),0a._OrtRun,ne=>a._OrtRun=ne)),a._OrtRunWithBinding=f(c(a._OrtRunWithBinding,()=>a._OrtRunWithBinding,ne=>a._OrtRunWithBinding=ne)),a._OrtBindInput=c(a._OrtBindInput,()=>a._OrtBindInput,ne=>a._OrtBindInput=ne),a.jsepRegisterBuffer=(ne,oe,pe,xe)=>i.registerBuffer(ne,oe,pe,xe),a.jsepUnregisterBuffers=ne=>{i.unregisterBuffers(ne)},a.jsepGetBuffer=ne=>i.getBuffer(ne),a.jsepCreateDownloader=(ne,oe,pe)=>i.createDownloader(ne,oe,pe)};var g=Object.assign({},a),b="./this.program",w=(i,c)=>{throw c},y=typeof window=="object",_=typeof importScripts=="function",I=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",$=a.ENVIRONMENT_IS_PTHREAD||!1,x="";function E(i){return a.locateFile?a.locateFile(i,x):x+i}var A,z,R;if(I){var V=(yn(),Ht(gn)),T=(wn(),Ht(bn));x=_?T.dirname(x)+"/":__dirname+"/",A=(c,f)=>(c=At(c)?new URL(c):T.normalize(c),V.readFileSync(c,f?void 0:"utf8")),R=c=>(c=A(c,!0),c.buffer||(c=new Uint8Array(c)),c),z=(c,f,S,O=!0)=>{c=At(c)?new URL(c):T.normalize(c),V.readFile(c,O?void 0:"utf8",(D,W)=>{D?S(D):f(O?W.buffer:W)})},!a.thisProgram&&1{throw process.exitCode=c,f},a.inspect=()=>"[Emscripten Module object]";let i;try{i=Ao()}catch(c){throw console.error(\'The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?\'),c}global.Worker=i.Worker}else(y||_)&&(_?x=self.location.href:typeof document<"u"&&document.currentScript&&(x=document.currentScript.src),typeof e<"u"&&e&&(x=e),x.indexOf("blob:")!==0?x=x.substr(0,x.replace(/[?#].*/,"").lastIndexOf("/")+1):x="",I||(A=i=>{var c=new XMLHttpRequest;return c.open("GET",i,!1),c.send(null),c.responseText},_&&(R=i=>{var c=new XMLHttpRequest;return c.open("GET",i,!1),c.responseType="arraybuffer",c.send(null),new Uint8Array(c.response)}),z=(i,c,f)=>{var S=new XMLHttpRequest;S.open("GET",i,!0),S.responseType="arraybuffer",S.onload=()=>{S.status==200||S.status==0&&S.response?c(S.response):f()},S.onerror=f,S.send(null)}));I&&typeof performance>"u"&&(global.performance=To().performance);var N=console.log.bind(console),te=console.error.bind(console);I&&(N=(...i)=>V.writeSync(1,i.join(" ")+`\n`),te=(...i)=>V.writeSync(2,i.join(" ")+`\n`));var Y=N,K=te;Object.assign(a,g),g=null,typeof WebAssembly!="object"&&rt("no native wasm support detected");var Q,Z,Ee=!1,Pe,fe,Ie,he,ye,We,De;function Ge(){var i=Q.buffer;a.HEAP8=fe=new Int8Array(i),a.HEAP16=new Int16Array(i),a.HEAPU8=Ie=new Uint8Array(i),a.HEAPU16=new Uint16Array(i),a.HEAP32=he=new Int32Array(i),a.HEAPU32=ye=new Uint32Array(i),a.HEAPF32=We=new Float32Array(i),a.HEAPF64=De=new Float64Array(i)}var G=16777216;if($)Q=a.wasmMemory;else if(a.wasmMemory)Q=a.wasmMemory;else if(Q=new WebAssembly.Memory({initial:G/65536,maximum:65536,shared:!0}),!(Q.buffer instanceof SharedArrayBuffer))throw K("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"),I&&K("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)"),Error("bad memory");Ge(),G=Q.buffer.byteLength;var ee=[],be=[],et=[],ze=0,Ue=null,Me=null;function wt(){if(ze--,ze==0&&(Ue!==null&&(clearInterval(Ue),Ue=null),Me)){var i=Me;Me=null,i()}}function rt(i){throw i="Aborted("+i+")",K(i),Ee=!0,Pe=1,i=new WebAssembly.RuntimeError(i+". Build with -sASSERTIONS for more info."),h(i),i}var Dt=i=>i.startsWith("data:application/octet-stream;base64,"),At=i=>i.startsWith("file://"),vt;vt="ort-wasm-simd-threaded.wasm",Dt(vt)||(vt=E(vt));function qe(i){if(R)return R(i);throw"both async and sync fetching of the wasm failed"}function qt(i){if(y||_){if(typeof fetch=="function"&&!At(i))return fetch(i,{credentials:"same-origin"}).then(c=>{if(!c.ok)throw"failed to load wasm binary file at \'"+i+"\'";return c.arrayBuffer()}).catch(()=>qe(i));if(z)return new Promise((c,f)=>{z(i,S=>c(new Uint8Array(S)),f)})}return Promise.resolve().then(()=>qe(i))}function Mt(i,c,f){return qt(i).then(S=>WebAssembly.instantiate(S,c)).then(S=>S).then(f,S=>{K(`failed to asynchronously prepare wasm: ${S}`),rt(S)})}function $t(i,c){var f=vt;return typeof WebAssembly.instantiateStreaming!="function"||Dt(f)||At(f)||I||typeof fetch!="function"?Mt(f,i,c):fetch(f,{credentials:"same-origin"}).then(S=>WebAssembly.instantiateStreaming(S,i).then(c,function(O){return K(`wasm streaming compile failed: ${O}`),K("falling back to ArrayBuffer instantiation"),Mt(f,i,c)}))}var yt,zt={932428:(i,c,f,S)=>{if(typeof a>"u"||!a.cb)return 1;if(i=Ye(i>>>0),i.startsWith("./")&&(i=i.substring(2)),i=a.cb.get(i),!i)return 2;if(c>>>=0,f>>>=0,S>>>=0,c+f>i.byteLength)return 3;try{return o().set(i.subarray(c,c+f),S>>>0),0}catch{return 4}},932929:i=>a.wb(i),932962:i=>a.yb(i),932994:(i,c,f)=>{a.kb(i,c,f,!0)},933033:(i,c,f)=>{a.kb(i,c,f)},933066:i=>{a.Ea("Abs",i,void 0)},933117:i=>{a.Ea("Neg",i,void 0)},933168:i=>{a.Ea("Floor",i,void 0)},933221:i=>{a.Ea("Ceil",i,void 0)},933273:i=>{a.Ea("Reciprocal",i,void 0)},933331:i=>{a.Ea("Sqrt",i,void 0)},933383:i=>{a.Ea("Exp",i,void 0)},933434:i=>{a.Ea("Erf",i,void 0)},933485:i=>{a.Ea("Sigmoid",i,void 0)},933540:i=>{a.Ea("Log",i,void 0)},933591:i=>{a.Ea("Sin",i,void 0)},933642:i=>{a.Ea("Cos",i,void 0)},933693:i=>{a.Ea("Tan",i,void 0)},933744:i=>{a.Ea("Asin",i,void 0)},933796:i=>{a.Ea("Acos",i,void 0)},933848:i=>{a.Ea("Atan",i,void 0)},933900:i=>{a.Ea("Sinh",i,void 0)},933952:i=>{a.Ea("Cosh",i,void 0)},934004:i=>{a.Ea("Asinh",i,void 0)},934057:i=>{a.Ea("Acosh",i,void 0)},934110:i=>{a.Ea("Atanh",i,void 0)},934163:i=>{a.Ea("Tanh",i,void 0)},934215:i=>{a.Ea("Not",i,void 0)},934266:(i,c,f)=>{a.Ea("Clip",i,{min:c,max:f})},934335:i=>{a.Ea("Clip",i,void 0)},934387:(i,c)=>{a.Ea("Elu",i,{alpha:c})},934445:i=>{a.Ea("Relu",i,void 0)},934497:(i,c)=>{a.Ea("LeakyRelu",i,{alpha:c})},934561:(i,c)=>{a.Ea("ThresholdedRelu",i,{alpha:c})},934631:(i,c)=>{a.Ea("Cast",i,{to:c})},934689:i=>{a.Ea("Add",i,void 0)},934740:i=>{a.Ea("Sub",i,void 0)},934791:i=>{a.Ea("Mul",i,void 0)},934842:i=>{a.Ea("Div",i,void 0)},934893:i=>{a.Ea("Pow",i,void 0)},934944:i=>{a.Ea("Equal",i,void 0)},934997:i=>{a.Ea("Greater",i,void 0)},935052:i=>{a.Ea("GreaterOrEqual",i,void 0)},935114:i=>{a.Ea("Less",i,void 0)},935166:i=>{a.Ea("LessOrEqual",i,void 0)},935225:(i,c,f,S,O)=>{a.Ea("ReduceMean",i,{keepDims:!!c,noopWithEmptyAxes:!!f,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},935384:(i,c,f,S,O)=>{a.Ea("ReduceMax",i,{keepDims:!!c,noopWithEmptyAxes:!!f,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},935542:(i,c,f,S,O)=>{a.Ea("ReduceMin",i,{keepDims:!!c,noopWithEmptyAxes:!!f,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},935700:(i,c,f,S,O)=>{a.Ea("ReduceProd",i,{keepDims:!!c,noopWithEmptyAxes:!!f,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},935859:(i,c,f,S,O)=>{a.Ea("ReduceSum",i,{keepDims:!!c,noopWithEmptyAxes:!!f,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},936017:(i,c,f,S,O)=>{a.Ea("ReduceL1",i,{keepDims:!!c,noopWithEmptyAxes:!!f,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},936174:(i,c,f,S,O)=>{a.Ea("ReduceL2",i,{keepDims:!!c,noopWithEmptyAxes:!!f,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},936331:(i,c,f,S,O)=>{a.Ea("ReduceLogSum",i,{keepDims:!!c,noopWithEmptyAxes:!!f,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},936492:(i,c,f,S,O)=>{a.Ea("ReduceSumSquare",i,{keepDims:!!c,noopWithEmptyAxes:!!f,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},936656:(i,c,f,S,O)=>{a.Ea("ReduceLogSumExp",i,{keepDims:!!c,noopWithEmptyAxes:!!f,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},936820:i=>{a.Ea("Where",i,void 0)},936873:(i,c,f)=>{a.Ea("Transpose",i,{perm:c?Array.from(n().subarray(c>>>0,f>>>0)):[]})},936981:(i,c,f,S,O,D,W,ie,ne,oe,pe,xe,Te,k,me)=>{a.Ea("ConvTranspose",i,{format:ne?"NHWC":"NCHW",autoPad:c,dilations:[f],group:S,kernel_shape:[O],pads:[D,W],strides:[ie],wIsConst:()=>!!r()[oe>>>0],outputPadding:pe?Array.from(n().subarray(pe>>>0,xe>>>0)):[],outputShape:Te?Array.from(n().subarray(Te>>>0,k>>>0)):[],activation:Ye(me)})},937383:(i,c,f,S,O,D,W,ie,ne,oe,pe,xe,Te,k)=>{a.Ea("ConvTranspose",i,{format:ie?"NHWC":"NCHW",autoPad:c,dilations:Array.from(n().subarray(f>>>0,(f>>>0)+2>>>0)),group:S,kernelShape:Array.from(n().subarray(O>>>0,(O>>>0)+2>>>0)),pads:Array.from(n().subarray(D>>>0,(D>>>0)+4>>>0)),strides:Array.from(n().subarray(W>>>0,(W>>>0)+2>>>0)),wIsConst:()=>!!r()[ne>>>0],outputPadding:oe?Array.from(n().subarray(oe>>>0,pe>>>0)):[],outputShape:xe?Array.from(n().subarray(xe>>>0,Te>>>0)):[],activation:Ye(k)})},937948:(i,c,f,S,O,D,W,ie,ne,oe,pe,xe,Te,k,me)=>{a.Ea("ConvTranspose",i,{format:ne?"NHWC":"NCHW",autoPad:c,dilations:[f],group:S,kernel_shape:[O],pads:[D,W],strides:[ie],wIsConst:()=>!!r()[oe>>>0],outputPadding:pe?Array.from(n().subarray(pe>>>0,xe>>>0)):[],outputShape:Te?Array.from(n().subarray(Te>>>0,k>>>0)):[],activation:Ye(me)})},938350:(i,c,f,S,O,D,W,ie,ne,oe,pe,xe,Te,k)=>{a.Ea("ConvTranspose",i,{format:ie?"NHWC":"NCHW",autoPad:c,dilations:Array.from(n().subarray(f>>>0,(f>>>0)+2>>>0)),group:S,kernelShape:Array.from(n().subarray(O>>>0,(O>>>0)+2>>>0)),pads:Array.from(n().subarray(D>>>0,(D>>>0)+4>>>0)),strides:Array.from(n().subarray(W>>>0,(W>>>0)+2>>>0)),wIsConst:()=>!!r()[ne>>>0],outputPadding:oe?Array.from(n().subarray(oe>>>0,pe>>>0)):[],outputShape:xe?Array.from(n().subarray(xe>>>0,Te>>>0)):[],activation:Ye(k)})},938915:(i,c)=>{a.Ea("GlobalAveragePool",i,{format:c?"NHWC":"NCHW"})},939006:(i,c,f,S,O,D,W,ie,ne,oe,pe,xe,Te,k,me,Ce)=>{a.Ea("AveragePool",i,{format:Ce?"NHWC":"NCHW",auto_pad:c,ceil_mode:f,count_include_pad:S,storage_order:O,dilations:[D,W],kernel_shape:[ie,ne],pads:[oe,pe,xe,Te],strides:[k,me]})},939290:(i,c)=>{a.Ea("GlobalAveragePool",i,{format:c?"NHWC":"NCHW"})},939381:(i,c,f,S,O,D,W,ie,ne,oe,pe,xe,Te,k,me,Ce)=>{a.Ea("AveragePool",i,{format:Ce?"NHWC":"NCHW",auto_pad:c,ceil_mode:f,count_include_pad:S,storage_order:O,dilations:[D,W],kernel_shape:[ie,ne],pads:[oe,pe,xe,Te],strides:[k,me]})},939665:(i,c)=>{a.Ea("GlobalMaxPool",i,{format:c?"NHWC":"NCHW"})},939752:(i,c,f,S,O,D,W,ie,ne,oe,pe,xe,Te,k,me,Ce)=>{a.Ea("MaxPool",i,{format:Ce?"NHWC":"NCHW",auto_pad:c,ceil_mode:f,count_include_pad:S,storage_order:O,dilations:[D,W],kernel_shape:[ie,ne],pads:[oe,pe,xe,Te],strides:[k,me]})},940032:(i,c)=>{a.Ea("GlobalMaxPool",i,{format:c?"NHWC":"NCHW"})},940119:(i,c,f,S,O,D,W,ie,ne,oe,pe,xe,Te,k,me,Ce)=>{a.Ea("MaxPool",i,{format:Ce?"NHWC":"NCHW",auto_pad:c,ceil_mode:f,count_include_pad:S,storage_order:O,dilations:[D,W],kernel_shape:[ie,ne],pads:[oe,pe,xe,Te],strides:[k,me]})},940399:(i,c,f,S,O)=>{a.Ea("Gemm",i,{alpha:c,beta:f,transA:S,transB:O})},940503:i=>{a.Ea("MatMul",i,void 0)},940557:(i,c,f,S)=>{a.Ea("ArgMax",i,{keepDims:!!c,selectLastIndex:!!f,axis:S})},940665:(i,c,f,S)=>{a.Ea("ArgMin",i,{keepDims:!!c,selectLastIndex:!!f,axis:S})},940773:(i,c)=>{a.Ea("Softmax",i,{axis:c})},940836:(i,c)=>{a.Ea("Concat",i,{axis:c})},940896:(i,c,f,S,O)=>{a.Ea("Split",i,{axis:c,numOutputs:f,splitSizes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},941036:i=>{a.Ea("Expand",i,void 0)},941090:(i,c)=>{a.Ea("Gather",i,{axis:Number(c)})},941161:(i,c)=>{a.Ea("GatherElements",i,{axis:Number(c)})},941240:(i,c,f,S,O,D,W,ie,ne,oe,pe)=>{a.Ea("Resize",i,{antialias:c,axes:f?Array.from(n().subarray(f>>>0,S>>>0)):[],coordinateTransformMode:Ye(O),cubicCoeffA:D,excludeOutside:W,extrapolationValue:ie,keepAspectRatioPolicy:Ye(ne),mode:Ye(oe),nearestMode:Ye(pe)})},941586:(i,c,f,S,O,D,W)=>{a.Ea("Slice",i,{starts:c?Array.from(n().subarray(c>>>0,f>>>0)):[],ends:S?Array.from(n().subarray(S>>>0,O>>>0)):[],axes:D?Array.from(n().subarray(D>>>0,W>>>0)):[]})},941802:i=>{a.Ea("Tile",i,void 0)},941854:(i,c,f)=>{a.Ea("LayerNormalization",i,{axis:Number(c),epsilon:Number(f)})},941961:(i,c,f)=>{a.Ea("InstanceNormalization",i,{epsilon:c,format:f?"NHWC":"NCHW"})},942075:(i,c,f)=>{a.Ea("InstanceNormalization",i,{epsilon:c,format:f?"NHWC":"NCHW"})},942189:i=>{a.Ea("Range",i,void 0)},942242:(i,c)=>{a.Ea("Einsum",i,{equation:Ye(c)})},942323:(i,c,f,S,O)=>{a.Ea("Pad",i,{mode:c,value:f,pads:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},942450:(i,c,f,S,O,D)=>{a.Ea("BatchNormalization",i,{epsilon:c,momentum:f,spatial:!!O,trainingMode:!!S,format:D?"NHWC":"NCHW"})},942619:(i,c,f,S,O,D)=>{a.Ea("BatchNormalization",i,{epsilon:c,momentum:f,spatial:!!O,trainingMode:!!S,format:D?"NHWC":"NCHW"})},942788:(i,c,f)=>{a.Ea("CumSum",i,{exclusive:Number(c),reverse:Number(f)})},942885:(i,c,f,S,O,D,W,ie,ne)=>{a.Ea("Attention",i,{numHeads:c,isUnidirectional:f,maskFilterValue:S,scale:O,doRotary:D,qkvHiddenSizes:W?Array.from(n().subarray(Number(ie)>>>0,Number(ie)+W>>>0)):[],pastPresentShareBuffer:!!ne})},943157:i=>{a.Ea("Gelu",i,void 0)},943209:(i,c,f,S,O,D)=>{a.Ea("MultiHeadAttention",i,{numHeads:c,isUnidirectional:f,maskFilterValue:S,scale:O,doRotary:D})},943368:i=>{a.Ea("BiasAdd",i,void 0)},943423:i=>{a.Ea("BiasSplitGelu",i,void 0)},943484:(i,c)=>{a.Ea("SkipLayerNormalization",i,{epsilon:c})},943565:(i,c,f,S,O,D,W,ie,ne,oe,pe,xe,Te)=>{a.Ea("Conv",i,{format:ne?"NHWC":"NCHW",auto_pad:c,dilations:[f],group:S,kernel_shape:[O],pads:D?Array.from(n().subarray(D>>>0,W>>>0)):[],strides:[ie],w_is_const:()=>!!r()[oe>>>0],activation:Ye(pe),activation_params:xe?Array.from(u().subarray(xe>>>0,Te>>>0)):[]})},943935:(i,c,f,S,O,D,W,ie,ne,oe,pe,xe,Te,k,me,Ce)=>{a.Ea("Conv",i,{format:xe?"NHWC":"NCHW",auto_pad:c,dilations:[f,S],group:O,kernel_shape:[D,W],pads:ie?Array.from(n().subarray(ie>>>0,ne>>>0)):[],strides:[oe,pe],w_is_const:()=>!!r()[Te>>>0],activation:Ye(k),activation_params:me?Array.from(u().subarray(me>>>0,Ce>>>0)):[]})},944326:i=>{a.zb(i)},944360:(i,c)=>a.Ab(i,c,a.bb.Cb,a.bb.errors)};function Ut(i){this.name="ExitStatus",this.message=`Program terminated with exit(${i})`,this.status=i}var Tt=i=>{i.terminate(),i.onmessage=()=>{}},Kt=i=>{de.Ya.length==0&&(ot(),de.lb(de.Ya[0]));var c=de.Ya.pop();if(!c)return 6;de.Za.push(c),de.Qa[i.Xa]=c,c.Xa=i.Xa;var f={cmd:"run",start_routine:i.Db,arg:i.tb,pthread_ptr:i.Xa};return I&&c.unref(),c.postMessage(f,i.Jb),0},nt=0,Yt=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,Vt=(i,c,f)=>{c>>>=0;var S=c+f;for(f=c;i[f]&&!(f>=S);)++f;if(16O?S+=String.fromCharCode(O):(O-=65536,S+=String.fromCharCode(55296|O>>10,56320|O&1023))}}else S+=String.fromCharCode(O)}return S},Ye=(i,c)=>(i>>>=0)?Vt(o(),i,c):"",br=i=>{var c=mn();return i=i(),kr(c),i};function Oe(i,c){var f=arguments.length-2,S=arguments;return br(()=>{for(var O=fn(8*f),D=O>>>3,W=0;W>>0]=ie}return po(i,f,O,c)})}function wr(i){if($)return Oe(0,1,i);Pe=i,0{if(Pe=i,$)throw Zt(i),"unwind";wr(i)},St=i=>{i instanceof Ut||i=="unwind"||w(1,i)};function un(){for(var i=a.numThreads;i--;)ot();ee.unshift(()=>{ze++,tt(()=>wt())})}function ot(){var i=E("ort-wasm-simd-threaded.worker.js");i=new Worker(i),de.Ya.push(i)}function tt(i){$?i():Promise.all(de.Ya.map(de.lb)).then(i)}var de={Ya:[],Za:[],pb:[],Qa:{},hb(){$?(de.receiveObjectTransfer=de.Bb,de.threadInitTLS=de.ob,de.setExitStatus=de.nb):un()},nb:i=>Pe=i,Nb:["$terminateWorker"],Eb:()=>{for(var i of de.Za)Tt(i);for(i of de.Ya)Tt(i);de.Ya=[],de.Za=[],de.Qa=[]},mb:i=>{var c=i.Xa;delete de.Qa[c],de.Ya.push(i),de.Za.splice(de.Za.indexOf(i),1),i.Xa=0,cn(c)},Bb(){},ob(){de.pb.forEach(i=>i())},lb:i=>new Promise(c=>{i.onmessage=D=>{D=D.data;var W=D.cmd;if(D.targetThread&&D.targetThread!=Pr()){var ie=de.Qa[D.targetThread];ie?ie.postMessage(D,D.transferList):K(`Internal error! Worker sent a message "${W}" to target pthread ${D.targetThread}, but that thread no longer exists!`)}else W==="checkMailbox"?Et():W==="spawnThread"?Kt(D):W==="cleanupThread"?de.mb(de.Qa[D.thread]):W==="killThread"?(D=D.thread,W=de.Qa[D],delete de.Qa[D],Tt(W),cn(D),de.Za.splice(de.Za.indexOf(W),1),W.Xa=0):W==="cancelThread"?de.Qa[D.thread].postMessage({cmd:"cancel"}):W==="loaded"?(i.loaded=!0,I&&!i.Xa&&i.unref(),c(i)):W==="alert"?alert(`Thread ${D.threadId}: ${D.text}`):D.target==="setimmediate"?i.postMessage(D):W==="callHandler"?a[D.handler](...D.args):W&&K(`worker sent an unknown command ${W}`)},i.onerror=D=>{throw K(`worker sent an error! ${D.filename}:${D.lineno}: ${D.message}`),D},I&&(i.on("message",D=>i.onmessage({data:D})),i.on("error",D=>i.onerror(D)));var f=[],S=["onExit"],O;for(O of S)a.hasOwnProperty(O)&&f.push(O);i.postMessage({cmd:"load",handlers:f,urlOrBlob:a.mainScriptUrlOrBlob||e,wasmMemory:Q,wasmModule:Z})})};a.PThread=de;var bt=i=>{for(;0{var i=Pr(),c=s()[i+52>>>2>>>0];i=s()[i+56>>>2>>>0],ho(c,c-i),kr(c)};function Zt(i){if($)return Oe(1,0,i);Nt(i)}a.invokeEntryPoint=(i,c)=>{i=go.apply(null,[i,c]),0>>2>>>0]=c},this.rb=function(c){s()[this.gb+8>>>2>>>0]=c},this.hb=function(c,f){this.qb(),this.sb(c),this.rb(f)},this.qb=function(){s()[this.gb+16>>>2>>>0]=0}}var $r=0,Qt=0;function Sr(i,c,f,S){return $?Oe(2,1,i,c,f,S):xr(i,c,f,S)}function xr(i,c,f,S){if(i>>>=0,c>>>=0,f>>>=0,S>>>=0,typeof SharedArrayBuffer>"u")return K("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;var O=[];return $&&O.length===0?Sr(i,c,f,S):(i={Db:f,Xa:i,tb:S,Jb:O},$?(i.Lb="spawnThread",postMessage(i,O),0):Kt(i))}function _r(i,c,f){return $?Oe(3,1,i,c,f):0}function Cr(i,c){if($)return Oe(4,1,i,c)}var Xt=i=>{for(var c=0,f=0;f=S?c++:2047>=S?c+=2:55296<=S&&57343>=S?(c+=4,++f):c+=3}return c},Ir=(i,c,f,S)=>{if(f>>>=0,!(0=W){var ie=i.charCodeAt(++D);W=65536+((W&1023)<<10)|ie&1023}if(127>=W){if(f>=S)break;c[f++>>>0]=W}else{if(2047>=W){if(f+1>=S)break;c[f++>>>0]=192|W>>6}else{if(65535>=W){if(f+2>=S)break;c[f++>>>0]=224|W>>12}else{if(f+3>=S)break;c[f++>>>0]=240|W>>18,c[f++>>>0]=128|W>>12&63}c[f++>>>0]=128|W>>6&63}c[f++>>>0]=128|W&63}}return c[f>>>0]=0,f-O},ae=(i,c,f)=>Ir(i,o(),c,f);function Jt(i,c){if($)return Oe(5,1,i,c)}function Wt(i,c,f){if($)return Oe(6,1,i,c,f)}function er(i,c,f){return $?Oe(7,1,i,c,f):0}function tr(i,c){if($)return Oe(8,1,i,c)}function rr(i,c,f){if($)return Oe(9,1,i,c,f)}function nr(i,c,f,S){if($)return Oe(10,1,i,c,f,S)}function or(i,c,f,S){if($)return Oe(11,1,i,c,f,S)}function ar(i,c,f,S){if($)return Oe(12,1,i,c,f,S)}function ir(i){if($)return Oe(13,1,i)}function sr(i,c){if($)return Oe(14,1,i,c)}function ur(i,c,f){if($)return Oe(15,1,i,c,f)}var Ar=()=>{if(!(0>>=0,typeof Atomics.Kb=="function"&&(Atomics.Kb(n(),i>>>2,i).value.then(Et),i+=128,Atomics.store(n(),i>>>2,1))}a.__emscripten_thread_mailbox_await=xt;var Et=()=>{var i=Pr();if(i&&(xt(i),!Ee))try{mo(),Ar()}catch(c){St(c)}};a.checkMailbox=Et;var d=[],m=i=>i%4===0&&(i%100!==0||i%400===0),v=[0,31,60,91,121,152,182,213,244,274,305,335],C=[0,31,59,90,120,151,181,212,243,273,304,334];function B(i,c,f,S,O,D,W,ie){return $?Oe(16,1,i,c,f,S,O,D,W,ie):-52}function H(i,c,f,S,O,D,W){if($)return Oe(17,1,i,c,f,S,O,D,W)}var q=i=>{var c=Xt(i)+1,f=ln(c);return f&&ae(i,f,c),f},le=[],J=(i,c)=>{le.length=0;for(var f;f=o()[i++>>>0];){var S=f!=105;S&=f!=112,c+=S&&c%8?4:0,le.push(f==112?s()[c>>>2>>>0]:f==105?n()[c>>>2>>>0]:l()[c>>>3>>>0]),c+=S?8:4}return le},re={},se=()=>{if(!we){var i={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:b||"./this.program"},c;for(c in re)re[c]===void 0?delete i[c]:i[c]=re[c];var f=[];for(c in i)f.push(`${c}=${i[c]}`);we=f}return we},we;function _e(i,c){if($)return Oe(18,1,i,c);i>>>=0,c>>>=0;var f=0;return se().forEach((S,O)=>{var D=c+f;for(O=s()[i+4*O>>>2>>>0]=D,D=0;D>>0>>>0]=S.charCodeAt(D);r()[O>>>0>>>0]=0,f+=S.length+1}),0}function P(i,c){if($)return Oe(19,1,i,c);i>>>=0,c>>>=0;var f=se();s()[i>>>2>>>0]=f.length;var S=0;return f.forEach(O=>S+=O.length+1),s()[c>>>2>>>0]=S,0}function ue(i){return $?Oe(20,1,i):52}function Se(i,c,f,S){return $?Oe(21,1,i,c,f,S):52}function st(i,c,f,S,O){return $?Oe(22,1,i,c,f,S,O):70}var Tr=[null,[],[]];function to(i,c,f,S){if($)return Oe(23,1,i,c,f,S);c>>>=0,f>>>=0,S>>>=0;for(var O=0,D=0;D>>2>>>0],ie=s()[c+4>>>2>>>0];c+=8;for(var ne=0;ne>>0],pe=Tr[i];oe===0||oe===10?((i===1?Y:K)(Vt(pe,0)),pe.length=0):pe.push(oe)}O+=ie}return s()[S>>>2>>>0]=O,0}var ro=[31,29,31,30,31,30,31,31,30,31,30,31],no=[31,28,31,30,31,30,31,31,30,31,30,31];function Pu(i){var c=Array(Xt(i)+1);return Ir(i,c,0,c.length),c}var ku=(i,c)=>{r().set(i,c>>>0)};function oo(i,c,f,S){function O(k,me,Ce){for(k=typeof k=="number"?k.toString():k||"";k.lengthSo?-1:0Ot-k.getDate())me-=Ot-k.getDate()+1,k.setDate(1),11>Ce?k.setMonth(Ce+1):(k.setMonth(0),k.setFullYear(k.getFullYear()+1));else{k.setDate(k.getDate()+me);break}}return Ce=new Date(k.getFullYear()+1,0,4),me=ie(new Date(k.getFullYear(),0,4)),Ce=ie(Ce),0>=W(me,k)?0>=W(Ce,k)?k.getFullYear()+1:k.getFullYear():k.getFullYear()-1}i>>>=0,c>>>=0,f>>>=0,S>>>=0;var oe=s()[S+40>>>2>>>0];S={Hb:n()[S>>>2>>>0],Gb:n()[S+4>>>2>>>0],eb:n()[S+8>>>2>>>0],jb:n()[S+12>>>2>>>0],fb:n()[S+16>>>2>>>0],ab:n()[S+20>>>2>>>0],Wa:n()[S+24>>>2>>>0],$a:n()[S+28>>>2>>>0],Ob:n()[S+32>>>2>>>0],Fb:n()[S+36>>>2>>>0],Ib:oe?Ye(oe):""},f=Ye(f),oe={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var pe in oe)f=f.replace(new RegExp(pe,"g"),oe[pe]);var xe="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),Te="January February March April May June July August September October November December".split(" ");oe={"%a":k=>xe[k.Wa].substring(0,3),"%A":k=>xe[k.Wa],"%b":k=>Te[k.fb].substring(0,3),"%B":k=>Te[k.fb],"%C":k=>D((k.ab+1900)/100|0,2),"%d":k=>D(k.jb,2),"%e":k=>O(k.jb,2," "),"%g":k=>ne(k).toString().substring(2),"%G":k=>ne(k),"%H":k=>D(k.eb,2),"%I":k=>(k=k.eb,k==0?k=12:12{for(var me=0,Ce=0;Ce<=k.fb-1;me+=(m(k.ab+1900)?ro:no)[Ce++]);return D(k.jb+me,3)},"%m":k=>D(k.fb+1,2),"%M":k=>D(k.Gb,2),"%n":()=>`\n`,"%p":k=>0<=k.eb&&12>k.eb?"AM":"PM","%S":k=>D(k.Hb,2),"%t":()=>"\t","%u":k=>k.Wa||7,"%U":k=>D(Math.floor((k.$a+7-k.Wa)/7),2),"%V":k=>{var me=Math.floor((k.$a+7-(k.Wa+6)%7)/7);if(2>=(k.Wa+371-k.$a-2)%7&&me++,me)me==53&&(Ce=(k.Wa+371-k.$a)%7,Ce==4||Ce==3&&m(k.ab)||(me=1));else{me=52;var Ce=(k.Wa+7-k.$a-1)%7;(Ce==4||Ce==5&&m(k.ab%400-1))&&me++}return D(me,2)},"%w":k=>k.Wa,"%W":k=>D(Math.floor((k.$a+7-(k.Wa+6)%7)/7),2),"%y":k=>(k.ab+1900).toString().substring(2),"%Y":k=>k.ab+1900,"%z":k=>{k=k.Fb;var me=0<=k;return k=Math.abs(k)/60,(me?"+":"-")+("0000"+(k/60*100+k%60)).slice(-4)},"%Z":k=>k.Ib,"%%":()=>"%"},f=f.replace(/%%/g,"\\0\\0");for(pe in oe)f.includes(pe)&&(f=f.replace(new RegExp(pe,"g"),oe[pe](S)));return f=f.replace(/\\0\\0/g,"%"),pe=Pu(f),pe.length>c?0:(ku(pe,i),pe.length-1)}var Er=i=>{try{i()}catch(c){rt(c)}};function Ru(){var i=X,c={};for(let[f,S]of Object.entries(i))c[f]=typeof S=="function"?function(){Or.push(f);try{return S.apply(null,arguments)}finally{Ee||(Or.pop(),ut&&_t===1&&Or.length===0&&(_t=0,nt+=1,Er(bo),typeof Fibers<"u"&&Fibers.Pb()))}}:S;return c}var _t=0,ut=null,ao=0,Or=[],io={},so={},Bu=0,dn=null,Du=[];function Mu(){return new Promise((i,c)=>{dn={resolve:i,reject:c}})}function zu(){var i=ln(65548),c=i+12;s()[i>>>2>>>0]=c,s()[i+4>>>2>>>0]=c+65536,c=Or[0];var f=io[c];return f===void 0&&(f=Bu++,io[c]=f,so[f]=c),c=f,n()[i+8>>>2>>>0]=c,i}function Uu(){var i=n()[ut+8>>>2>>>0];return i=X[so[i]],--nt,i()}function Vu(i){if(!Ee){if(_t===0){var c=!1,f=!1;i((S=0)=>{if(!Ee&&(ao=S,c=!0,f)){_t=2,Er(()=>wo(ut)),typeof Browser<"u"&&Browser.ib.vb&&Browser.ib.resume(),S=!1;try{var O=Uu()}catch(ie){O=ie,S=!0}var D=!1;if(!ut){var W=dn;W&&(dn=null,(S?W.reject:W.resolve)(O),D=!0)}if(S&&!D)throw O}}),f=!0,c||(_t=1,ut=zu(),typeof Browser<"u"&&Browser.ib.vb&&Browser.ib.pause(),Er(()=>yo(ut)))}else _t===2?(_t=0,Er(vo),lo(ut),ut=null,Du.forEach(S=>{if(!Ee)try{S(),Ar()}catch(O){St(O)}})):rt(`invalid state: ${_t}`);return ao}}function Nu(i){return Vu(c=>{i().then(c)})}de.hb();var Wu=[wr,Zt,Sr,_r,Cr,Jt,Wt,er,tr,rr,nr,or,ar,ir,sr,ur,B,H,_e,P,ue,Se,st,to],Hu={r:function(i,c,f){return Nu(async()=>{await a.xb(i,c,f)})},b:function(i,c,f){throw i>>>=0,new vr(i).hb(c>>>0,f>>>0),$r=i,Qt++,$r},N:function(i){co(i>>>0,!_,1,!y,131072,!1),de.ob()},l:function(i){i>>>=0,$?postMessage({cmd:"cleanupThread",thread:i}):de.mb(de.Qa[i])},J:xr,i:_r,T:Cr,F:Jt,H:Wt,U:er,R:tr,L:rr,Q:nr,p:or,G:ar,D:ir,S:sr,E:ur,q:()=>1,B:function(i,c){i>>>=0,i==c>>>0?setTimeout(()=>Et()):$?postMessage({targetThread:i,cmd:"checkMailbox"}):(i=de.Qa[i])&&i.postMessage({cmd:"checkMailbox"})},K:function(i,c,f,S){c>>>=0,d.length=f,S=S>>>0>>>3;for(var O=0;O>>0];return i=0>i?zt[-i-1]:Wu[i],de.ub=c,c=i.apply(null,d),de.ub=0,c},M:xt,W:function(i){I&&de.Qa[i>>>0].ref()},u:function(i,c,f){i=c+2097152>>>0<4194305-!!i?(i>>>0)+4294967296*c:NaN,f>>>=0,i=new Date(1e3*i),n()[f>>>2>>>0]=i.getUTCSeconds(),n()[f+4>>>2>>>0]=i.getUTCMinutes(),n()[f+8>>>2>>>0]=i.getUTCHours(),n()[f+12>>>2>>>0]=i.getUTCDate(),n()[f+16>>>2>>>0]=i.getUTCMonth(),n()[f+20>>>2>>>0]=i.getUTCFullYear()-1900,n()[f+24>>>2>>>0]=i.getUTCDay(),i=(i.getTime()-Date.UTC(i.getUTCFullYear(),0,1,0,0,0,0))/864e5|0,n()[f+28>>>2>>>0]=i},v:function(i,c,f){i=c+2097152>>>0<4194305-!!i?(i>>>0)+4294967296*c:NaN,f>>>=0,i=new Date(1e3*i),n()[f>>>2>>>0]=i.getSeconds(),n()[f+4>>>2>>>0]=i.getMinutes(),n()[f+8>>>2>>>0]=i.getHours(),n()[f+12>>>2>>>0]=i.getDate(),n()[f+16>>>2>>>0]=i.getMonth(),n()[f+20>>>2>>>0]=i.getFullYear()-1900,n()[f+24>>>2>>>0]=i.getDay(),c=(m(i.getFullYear())?v:C)[i.getMonth()]+i.getDate()-1|0,n()[f+28>>>2>>>0]=c,n()[f+36>>>2>>>0]=-(60*i.getTimezoneOffset()),c=new Date(i.getFullYear(),6,1).getTimezoneOffset();var S=new Date(i.getFullYear(),0,1).getTimezoneOffset();i=(c!=S&&i.getTimezoneOffset()==Math.min(S,c))|0,n()[f+32>>>2>>>0]=i},w:function(i){i>>>=0;var c=new Date(n()[i+20>>>2>>>0]+1900,n()[i+16>>>2>>>0],n()[i+12>>>2>>>0],n()[i+8>>>2>>>0],n()[i+4>>>2>>>0],n()[i>>>2>>>0],0),f=n()[i+32>>>2>>>0],S=c.getTimezoneOffset(),O=new Date(c.getFullYear(),6,1).getTimezoneOffset(),D=new Date(c.getFullYear(),0,1).getTimezoneOffset(),W=Math.min(D,O);return 0>f?n()[i+32>>>2>>>0]=+(O!=D&&W==S):0>>2>>>0]=c.getDay(),f=(m(c.getFullYear())?v:C)[c.getMonth()]+c.getDate()-1|0,n()[i+28>>>2>>>0]=f,n()[i>>>2>>>0]=c.getSeconds(),n()[i+4>>>2>>>0]=c.getMinutes(),n()[i+8>>>2>>>0]=c.getHours(),n()[i+12>>>2>>>0]=c.getDate(),n()[i+16>>>2>>>0]=c.getMonth(),n()[i+20>>>2>>>0]=c.getYear(),i=c.getTime(),isNaN(i)?(n()[uo()>>>2>>>0]=61,i=-1):i/=1e3,fo((yt=i,1<=+Math.abs(yt)?0>>0:~~+Math.ceil((yt-+(~~yt>>>0))/4294967296)>>>0:0)),i>>>0},s:B,t:H,A:function(i,c,f){function S(oe){return(oe=oe.toTimeString().match(/\\(([A-Za-z ]+)\\)$/))?oe[1]:"GMT"}i>>>=0,c>>>=0,f>>>=0;var O=new Date().getFullYear(),D=new Date(O,0,1),W=new Date(O,6,1);O=D.getTimezoneOffset();var ie=W.getTimezoneOffset(),ne=Math.max(O,ie);s()[i>>>2>>>0]=60*ne,n()[c>>>2>>>0]=+(O!=ie),i=S(D),c=S(W),i=q(i),c=q(c),ie>>2>>>0]=i,s()[f+4>>>2>>>0]=c):(s()[f>>>2>>>0]=c,s()[f+4>>>2>>>0]=i)},d:()=>{rt("")},c:function(i,c,f){return i>>>=0,c=J(c>>>0,f>>>0),zt[i].apply(null,c)},k:function(i,c,f){return i>>>=0,c=J(c>>>0,f>>>0),zt[i].apply(null,c)},m:()=>{},j:()=>Date.now(),V:()=>{throw nt+=1,"unwind"},C:function(){return 4294901760},f:()=>performance.timeOrigin+performance.now(),g:()=>I?(Oo(),Ht(Eo)).cpus().length:navigator.hardwareConcurrency,y:function(i){i>>>=0;var c=o().length;if(i<=c||4294901760=f;f*=2){var S=c*(1+.2/f);S=Math.min(S,i+100663296);var O=Math;S=Math.max(i,S);e:{O=(O.min.call(O,4294901760,S+(65536-S%65536)%65536)-Q.buffer.byteLength+65535)/65536;try{Q.grow(O),Ge();var D=1;break e}catch{}D=void 0}if(D)return!0}return!1},O:_e,P,I:Nt,h:ue,o:Se,x:st,n:to,a:Q||a.wasmMemory,z:oo,e:function(i,c,f,S){return oo(i>>>0,c>>>0,f>>>0,S>>>0)}},X=function(){function i(f,S){return X=f.exports,X=Ru(),X=Gu(),de.pb.push(X.Da),be.unshift(X.X),Z=S,wt(),X}var c={a:Hu};if(ze++,a.instantiateWasm)try{return a.instantiateWasm(c,i)}catch(f){K(`Module.instantiateWasm callback failed with error: ${f}`),h(f)}return $t(c,function(f){i(f.instance,f.module)}).catch(h),{}}();a._OrtInit=(i,c)=>(a._OrtInit=X.Y)(i,c),a._OrtGetLastError=(i,c)=>(a._OrtGetLastError=X.Z)(i,c),a._OrtCreateSessionOptions=(i,c,f,S,O,D,W,ie,ne,oe)=>(a._OrtCreateSessionOptions=X._)(i,c,f,S,O,D,W,ie,ne,oe),a._OrtAppendExecutionProvider=(i,c)=>(a._OrtAppendExecutionProvider=X.$)(i,c),a._OrtAddFreeDimensionOverride=(i,c,f)=>(a._OrtAddFreeDimensionOverride=X.aa)(i,c,f),a._OrtAddSessionConfigEntry=(i,c,f)=>(a._OrtAddSessionConfigEntry=X.ba)(i,c,f),a._OrtReleaseSessionOptions=i=>(a._OrtReleaseSessionOptions=X.ca)(i),a._OrtCreateSession=(i,c,f)=>(a._OrtCreateSession=X.da)(i,c,f),a._OrtReleaseSession=i=>(a._OrtReleaseSession=X.ea)(i),a._OrtGetInputOutputCount=(i,c,f)=>(a._OrtGetInputOutputCount=X.fa)(i,c,f),a._OrtGetInputName=(i,c)=>(a._OrtGetInputName=X.ga)(i,c),a._OrtGetOutputName=(i,c)=>(a._OrtGetOutputName=X.ha)(i,c),a._OrtFree=i=>(a._OrtFree=X.ia)(i),a._OrtCreateTensor=(i,c,f,S,O,D)=>(a._OrtCreateTensor=X.ja)(i,c,f,S,O,D),a._OrtGetTensorData=(i,c,f,S,O)=>(a._OrtGetTensorData=X.ka)(i,c,f,S,O),a._OrtReleaseTensor=i=>(a._OrtReleaseTensor=X.la)(i),a._OrtCreateRunOptions=(i,c,f,S)=>(a._OrtCreateRunOptions=X.ma)(i,c,f,S),a._OrtAddRunConfigEntry=(i,c,f)=>(a._OrtAddRunConfigEntry=X.na)(i,c,f),a._OrtReleaseRunOptions=i=>(a._OrtReleaseRunOptions=X.oa)(i),a._OrtCreateBinding=i=>(a._OrtCreateBinding=X.pa)(i),a._OrtBindInput=(i,c,f)=>(a._OrtBindInput=X.qa)(i,c,f),a._OrtBindOutput=(i,c,f,S)=>(a._OrtBindOutput=X.ra)(i,c,f,S),a._OrtClearBoundOutputs=i=>(a._OrtClearBoundOutputs=X.sa)(i),a._OrtReleaseBinding=i=>(a._OrtReleaseBinding=X.ta)(i),a._OrtRunWithBinding=(i,c,f,S,O)=>(a._OrtRunWithBinding=X.ua)(i,c,f,S,O),a._OrtRun=(i,c,f,S,O,D,W,ie)=>(a._OrtRun=X.va)(i,c,f,S,O,D,W,ie),a._OrtEndProfiling=i=>(a._OrtEndProfiling=X.wa)(i),a._JsepOutput=(i,c,f)=>(a._JsepOutput=X.xa)(i,c,f),a._JsepGetNodeName=i=>(a._JsepGetNodeName=X.ya)(i);var uo=()=>(uo=X.za)(),Pr=a._pthread_self=()=>(Pr=a._pthread_self=X.Aa)(),ln=a._malloc=i=>(ln=a._malloc=X.Ba)(i),lo=a._free=i=>(lo=a._free=X.Ca)(i);a.__emscripten_tls_init=()=>(a.__emscripten_tls_init=X.Da)();var co=a.__emscripten_thread_init=(i,c,f,S,O,D)=>(co=a.__emscripten_thread_init=X.Fa)(i,c,f,S,O,D);a.__emscripten_thread_crashed=()=>(a.__emscripten_thread_crashed=X.Ga)();var po=(i,c,f,S)=>(po=X.Ha)(i,c,f,S),cn=i=>(cn=X.Ia)(i),pn=a.__emscripten_thread_exit=i=>(pn=a.__emscripten_thread_exit=X.Ja)(i),mo=()=>(mo=X.Ka)(),fo=i=>(fo=X.La)(i),ho=(i,c)=>(ho=X.Ma)(i,c),mn=()=>(mn=X.Na)(),kr=i=>(kr=X.Oa)(i),fn=i=>(fn=X.Pa)(i),go=a.dynCall_ii=(i,c)=>(go=a.dynCall_ii=X.Ra)(i,c),yo=i=>(yo=X.Sa)(i),bo=()=>(bo=X.Ta)(),wo=i=>(wo=X.Ua)(i),vo=()=>(vo=X.Va)();a.___start_em_js=944472,a.___stop_em_js=944633;function Gu(){var i=X;i=Object.assign({},i);var c=S=>()=>S()>>>0,f=S=>O=>S(O)>>>0;return i.za=c(i.za),i.Aa=c(i.Aa),i.Ba=f(i.Ba),i.emscripten_main_runtime_thread_id=c(i.emscripten_main_runtime_thread_id),i.Na=c(i.Na),i.Pa=f(i.Pa),i}a.wasmMemory=Q,a.stackAlloc=fn,a.stackSave=mn,a.stackRestore=kr,a.keepRuntimeAlive=()=>0Po)});var Bo=dr((qc,Xu)=>{Xu.exports=\'"use strict";var Module={},ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";if(ENVIRONMENT_IS_NODE){var nodeWorkerThreads=require("worker_threads"),parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",e=>onmessage({data:e}));var fs=require("fs"),vm=require("vm");Object.assign(global,{self:global,require,Module,location:{href:__filename},Worker:nodeWorkerThreads.Worker,importScripts:e=>vm.runInThisContext(fs.readFileSync(e,"utf8"),{filename:e}),postMessage:e=>parentPort.postMessage(e),performance:global.performance||{now:Date.now}})}var initializedJS=!1;function threadPrintErr(){var e=Array.prototype.slice.call(arguments).join(" ");if(ENVIRONMENT_IS_NODE){fs.writeSync(2,e+`\\n`);return}console.error(e)}function threadAlert(){var e=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:e,threadId:Module._pthread_self()})}var err=threadPrintErr;self.alert=threadAlert,Module.instantiateWasm=(e,t)=>{var a=Module.wasmModule;Module.wasmModule=null;var r=new WebAssembly.Instance(a,e);return t(r)},self.onunhandledrejection=e=>{throw e.reason||e};function handleMessage(e){try{if(e.data.cmd==="load"){let a=[];self.onmessage=r=>a.push(r),self.startWorker=r=>{Module=r,postMessage({cmd:"loaded"});for(let s of a)handleMessage(s);self.onmessage=handleMessage},Module.wasmModule=e.data.wasmModule;for(const r of e.data.handlers)Module[r]=(...s)=>{postMessage({cmd:"callHandler",handler:r,args:s})};if(Module.wasmMemory=e.data.wasmMemory,Module.buffer=Module.wasmMemory.buffer,Module.ENVIRONMENT_IS_PTHREAD=!0,typeof e.data.urlOrBlob=="string")importScripts(e.data.urlOrBlob);else{var t=URL.createObjectURL(e.data.urlOrBlob);importScripts(t),URL.revokeObjectURL(t)}ortWasmThreaded(Module)}else if(e.data.cmd==="run"){Module.__emscripten_thread_init(e.data.pthread_ptr,0,0,1),Module.__emscripten_thread_mailbox_await(e.data.pthread_ptr),Module.establishStackSpace(),Module.PThread.receiveObjectTransfer(e.data),Module.PThread.threadInitTLS(),initializedJS||(initializedJS=!0);try{Module.invokeEntryPoint(e.data.start_routine,e.data.arg)}catch(a){if(a!="unwind")throw a}}else e.data.cmd==="cancel"?Module._pthread_self()&&Module.__emscripten_thread_exit(-1):e.data.target==="setimmediate"||(e.data.cmd==="checkMailbox"?initializedJS&&Module.checkMailbox():e.data.cmd&&(err(`worker.js received unknown command ${e.data.cmd}`),err(e.data)))}catch(a){throw Module.__emscripten_thread_crashed?.(),a}}self.onmessage=handleMessage;\\n\'});var _n,Xe,cr,Mr,pr,No,Cn,Ne=j(()=>{"use strict";_n=e=>{switch(e){case"int8":return 3;case"uint8":return 2;case"bool":return 9;case"int16":return 5;case"uint16":return 4;case"int32":return 6;case"uint32":return 12;case"float16":return 10;case"float32":return 1;case"float64":return 11;case"string":return 8;case"int64":return 7;case"uint64":return 13;default:throw new Error(`unsupported data type: ${e}`)}},Xe=e=>{switch(e){case 3:return"int8";case 2:return"uint8";case 9:return"bool";case 5:return"int16";case 4:return"uint16";case 6:return"int32";case 12:return"uint32";case 10:return"float16";case 1:return"float32";case 11:return"float64";case 8:return"string";case 7:return"int64";case 13:return"uint64";default:throw new Error(`unsupported data type: ${e}`)}},cr=e=>[void 0,4,1,1,2,2,4,8,void 0,1,2,8,4,8,void 0,void 0,void 0][e],Mr=e=>{switch(e){case"float16":return Uint16Array;case"float32":return Float32Array;case"uint8":return Uint8Array;case"int8":return Int8Array;case"uint16":return Uint16Array;case"int16":return Int16Array;case"int32":return Int32Array;case"bool":return Uint8Array;case"float64":return Float64Array;case"uint32":return Uint32Array;case"int64":return BigInt64Array;case"uint64":return BigUint64Array;default:throw new Error(`unsupported type: ${e}`)}},pr=e=>{switch(e){case"verbose":return 0;case"info":return 1;case"warning":return 2;case"error":return 3;case"fatal":return 4;default:throw new Error(`unsupported logging level: ${e}`)}},No=e=>e==="float32"||e==="int32"||e==="int64"||e==="bool"||e==="float16"||e==="uint32",Cn=e=>{switch(e){case"none":return 0;case"cpu":return 1;case"cpu-pinned":return 2;case"texture":return 3;case"gpu-buffer":return 4;default:throw new Error(`unsupported data location: ${e}`)}}});var zr=j(()=>{"use strict"});var Ho=j(()=>{"use strict";zr()});var Go,Lo=j(()=>{"use strict";Go="1.17.1"});var Fo,Pt,In=j(()=>{"use strict";Lo();Fo="warning",Pt={wasm:{},webgl:{},webgpu:{},versions:{common:Go},set logLevel(e){if(e!==void 0){if(typeof e!="string"||["verbose","info","warning","error","fatal"].indexOf(e)===-1)throw new Error(`Unsupported logging level: ${e}`);Fo=e}},get logLevel(){return Fo}};Object.defineProperty(Pt,"logLevel",{enumerable:!0})});var Gt,jo=j(()=>{"use strict";In();Gt=Pt});var qo=j(()=>{"use strict"});var Ko=j(()=>{"use strict";Ur()});var Zo=j(()=>{"use strict"});var Qo=j(()=>{"use strict";Ur()});var Ur=j(()=>{"use strict";qo();Ko();Zo();Qo()});var Vr=j(()=>{"use strict";Ur()});var An,Xo,kt,Rt,Tn=j(()=>{"use strict";In();An=(e,t)=>{Pt.wasm.trace&&console.timeStamp(`${e}::ORT::${t}`)},Xo=(e,t)=>{let r=new Error().stack?.split(/\\r\\n|\\r|\\n/g)||[],o=!1;for(let n=0;n{Pt.wasm.trace&&Xo("BEGIN",e)},Rt=e=>{Pt.wasm.trace&&Xo("END",e)}});var Jo=j(()=>{"use strict";zr();Vr();Tn()});var ea=j(()=>{"use strict";Jo()});var ta=j(()=>{"use strict"});var ra=j(()=>{"use strict";zr();Vr()});var na=j(()=>{"use strict";ra()});var Lt=j(()=>{"use strict";Ho();jo();ea();Vr();Tn();ta();na()});var dd,ld,oa,aa,ia,cd,Be,Ct=j(()=>{"use strict";Ne();dd=["V","I","W","E","F"],ld=(e,t)=>{console.log(`[${dd[e]},${new Date().toISOString()}]${t}`)},ia=(e,t)=>{oa=e,aa=t},cd=(e,t)=>{let r=pr(e),o=pr(oa);r>=o&&ld(r,typeof t=="function"?t():t)},Be=(...e)=>{aa&&cd(...e)}});var sa,ua=j(()=>{"use strict";Ne();sa=(e,t)=>new(Mr(t))(e)});var Nr=j(()=>{"use strict"});var Wr,pd,da,On,En,ca,pa=j(()=>{"use strict";Ct();Nr();Wr=e=>Math.ceil(e/16)*16,pd=1,da=()=>pd++,On=async(e,t,r,o)=>{let n=Wr(r),s=e.device.createBuffer({size:n,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ});try{let u=e.getCommandEncoder();e.endComputePass(),u.copyBufferToBuffer(t,0,s,0,n),e.flush(),await s.mapAsync(GPUMapMode.READ);let l=s.getMappedRange();if(o){let a=o();return a.set(new Uint8Array(l,0,r)),a}else return new Uint8Array(l.slice(0,r))}finally{s.destroy()}},En=class{constructor(t){this.backend=t;this.storageCache=new Map,this.freeBuffers=new Map,this.freeUniformBuffers=new Map,this.buffersForUploadingPending=[],this.buffersPending=[],this.externalBuffers=new Map}upload(t,r){let o=r.buffer,n=r.byteOffset,s=r.byteLength,u=Wr(s),l=this.storageCache.get(t);if(!l)throw new Error("gpu data for uploading does not exist");if(l.originalSize!==s)throw new Error(`inconsistent data size. gpu data size=${l.originalSize}, data size=${s}`);let a=this.backend.device.createBuffer({mappedAtCreation:!0,size:u,usage:GPUBufferUsage.MAP_WRITE|GPUBufferUsage.COPY_SRC}),p=a.getMappedRange();new Uint8Array(p).set(new Uint8Array(o,n,s)),a.unmap();let h=this.backend.getCommandEncoder();this.backend.endComputePass(),h.copyBufferToBuffer(a,0,l.gpuData.buffer,0,u),Be("verbose",()=>`[WebGPU] GpuDataManager.upload(id=${t})`),this.buffersForUploadingPending.push(a)}memcpy(t,r){let o=this.storageCache.get(t);if(!o)throw new Error("source gpu data for memcpy does not exist");let n=this.storageCache.get(r);if(!n)throw new Error("destination gpu data for memcpy does not exist");if(o.originalSize!==n.originalSize)throw new Error("inconsistent source and destination gpu data size");let s=Wr(o.originalSize),u=this.backend.getCommandEncoder();this.backend.endComputePass(),u.copyBufferToBuffer(o.gpuData.buffer,0,n.gpuData.buffer,0,s)}registerExternalBuffer(t,r,o){let n;if(o){if(n=this.externalBuffers.get(o),n===void 0)throw new Error("previous buffer is not registered");if(t===o)return Be("verbose",()=>`[WebGPU] GpuDataManager.registerExternalBuffer(size=${r}) => id=${n}, buffer is the same, skip.`),n;this.externalBuffers.delete(o)}else n=da();return this.storageCache.set(n,{gpuData:{id:n,type:0,buffer:t},originalSize:r}),this.externalBuffers.set(t,n),Be("verbose",()=>`[WebGPU] GpuDataManager.registerExternalBuffer(size=${r}) => id=${n}, registered.`),n}unregisterExternalBuffer(t){let r=this.externalBuffers.get(t);r!==void 0&&(this.storageCache.delete(r),this.externalBuffers.delete(t),Be("verbose",()=>`[WebGPU] GpuDataManager.unregisterExternalBuffer() => id=${r}`))}create(t,r=GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST){let o=Wr(t),n,s=(r&GPUBufferUsage.STORAGE)===GPUBufferUsage.STORAGE,u=(r&GPUBufferUsage.UNIFORM)===GPUBufferUsage.UNIFORM;if(s||u){let a=s?this.freeBuffers:this.freeUniformBuffers,p=a.get(o);p||(p=[],a.set(o,p)),p.length>0?n=p.pop():n=this.backend.device.createBuffer({size:o,usage:r})}else n=this.backend.device.createBuffer({size:o,usage:r});let l={id:da(),type:0,buffer:n};return this.storageCache.set(l.id,{gpuData:l,originalSize:t}),Be("verbose",()=>`[WebGPU] GpuDataManager.create(size=${t}) => id=${l.id}`),l}get(t){return this.storageCache.get(t)?.gpuData}release(t){let r=this.storageCache.get(t);if(!r)throw new Error("releasing data does not exist");return Be("verbose",()=>`[WebGPU] GpuDataManager.release(id=${t}), gpuDataId=${r.gpuData.id}`),this.storageCache.delete(t),this.buffersPending.push(r.gpuData.buffer),r.originalSize}async download(t,r){let o=this.storageCache.get(t);if(!o)throw new Error("data does not exist");await On(this.backend,o.gpuData.buffer,o.originalSize,r)}refreshPendingBuffers(){for(let t of this.buffersForUploadingPending)t.destroy();this.buffersForUploadingPending=[];for(let t of this.buffersPending)(t.usage&GPUBufferUsage.STORAGE)===GPUBufferUsage.STORAGE?this.freeBuffers.get(t.size).push(t):(t.usage&GPUBufferUsage.UNIFORM)===GPUBufferUsage.UNIFORM?this.freeUniformBuffers.get(t.size).push(t):t.destroy();this.buffersPending=[]}dispose(){this.freeBuffers.forEach(t=>{t.forEach(r=>{r.destroy()})}),this.freeUniformBuffers.forEach(t=>{t.forEach(r=>{r.destroy()})}),this.storageCache.forEach(t=>{t.gpuData.buffer.destroy()}),this.storageCache=new Map,this.freeBuffers=new Map,this.freeUniformBuffers=new Map}},ca=(...e)=>new En(...e)});var Pn,ge,je=j(()=>{"use strict";Pn=class{constructor(t){Object.assign(this,t)}get cacheKey(){return this.key||(this.key=Object.getOwnPropertyNames(this).sort().map(t=>`${this[t]}`).join(";")),this.key}},ge=e=>new Pn(e)});var kn,dt,U,Bt,Hr,Gr,Lr,$e=j(()=>{"use strict";kn=class{static calcMatMulShape(t,r){return t[1]!==r[0]?void 0:[t[0],r[1]]}},dt=class{static calcShape(t,r,o=!1){let n=t.length,s=r.length;if(n===0)return r;if(s===0)return t;let u=Math.max(t.length,r.length),l=new Array(u);if(o){if(n<2||s<2)return;let a=kn.calcMatMulShape([t[n-2],t[n-1]],[r[s-2],r[s-1]]);if(a===void 0)return;[l[u-2],l[u-1]]=a}for(let a=o?3:1;a<=u;a++){let p=n-a<0?1:t[n-a],h=s-a<0?1:r[s-a];if(p!==h&&p>1&&h>1)return;l[u-a]=Math.max(p,h)}return l}static isValidBroadcast(t,r){let o=t.length,n=r.length;if(o>n)return!1;for(let s=1;s<=o;s++)if(t[o-s]!==1&&t[o-s]!==r[n-s])return!1;return!0}},U=class e{static size(t){return e.getSizeFromDimensionRange(t,0,t.length)}static sizeFromDimension(t,r){if(r<0||r>t.length)throw new Error(`invalid dimension of ${r} for sizeFromDimension as Tensor has ${t.length} dimensions.`);return e.getSizeFromDimensionRange(t,r,t.length)}static sizeToDimension(t,r){if(r<0||r>t.length)throw new Error(`invalid dimension of ${r} for sizeToDimension as Tensor has ${t.length} dimensions.`);return e.getSizeFromDimensionRange(t,0,r)}static getSizeFromDimensionRange(t,r,o){let n=1;for(let s=r;s=0;--n)o[n]=o[n+1]*t[n+1];return o}static normalizeAxis(t,r){if(t<-r&&t>=r)throw new Error("unsupported axis for this operation.");return t<0?t+r:t}static normalizeAxes(t,r){return t.map(o=>this.normalizeAxis(o,r??t.length))}static sortBasedOnPerm(t,r){return r?r.map(o=>t[o]):t.slice().reverse()}static padShape(t,r){let o=t.length;return t.map((n,s)=>n+r[s]+r[s+o])}static areEqual(t,r){return t.length!==r.length?!1:t.every((o,n)=>o===r[n])}},Bt=class e{static adjustPoolAttributes(t,r,o,n,s,u){if(!t&&o.length!==r.length-2)throw new Error("length of specified kernel shapes should be 2 less than length of input dimensions");if(t)for(let l=0;l=o.length?o.push(r[l+2]):o[l]=r[l+2];for(let l=0;l=o[l]||u[l+o.length]>=o[l])throw new Error("pads should be smaller than kernel")}}static adjustPadsBasedOnAutoPad(t,r,o,n,s,u,l){if(l){if(s.length!==2*(t.length-2))throw new Error("length of pads should be twice the length of data dimensions");if(r.length!==t.length-2)throw new Error("length of strides should be the length of data dimensions");if(n.length!==t.length-2)throw new Error("length of kernel shapes should be the length of data dimensions");for(let a=0;a{"use strict";Ne();$e();md=64,Bn=(e,t)=>{if(t===3)throw new Error("vec3 has same alignment as vec4, use vec4 instead");switch(e){case 10:return t>1?`vec${t}`:"f16";case 1:return t>1?`vec${t}`:"f32";case 6:return t>1?`vec${t}`:"i32";case 12:return t>1?`vec${t}`:"u32";case 7:if(t>1)throw new Error("currently not supported vecX of uint64 yet");return["vec2","i32"];case 13:if(t>1)throw new Error("currently not supported vecX of uint64 yet");return["vec2","u32"];case 9:if(t!==4)throw new Error("bool must be vec4");return["u32","vec4"];default:throw new Error(`Unknown data type: ${e}`)}},Le=(e,t=1)=>{let r=Bn(e,t);return typeof r=="string"?r:r[0]},lt=(e,t=1)=>{let r=Bn(e,t);return typeof r=="string"?r:r[1]},L=e=>e.length===0?[]:[{type:"uint32",data:e},{type:"uint32",data:U.computeStrides(e)}],Fe=e=>e%4===0?4:e%2===0?2:1,Ze=(e="f32",t,r="0")=>!t||t===1?`${e}(${r})`:`vec${t}<${e}>(${r})`,at=(e,t,r)=>e==="f32"?r:t===1?`f32(${r})`:`vec${t}f(${r})`,Je=(e,t)=>t===4?`(${e}.x + ${e}.y + ${e}.z + ${e}.w)`:t===2?`(${e}.x + ${e}.y)`:t===3?`(${e}.x + ${e}.y + ${e}.z)`:e,ce=(e,t,r)=>e.startsWith("uniforms.")&&r>4?typeof t=="string"?`${e}[(${t}) / 4][(${t}) % 4]`:`${e}[${Math.floor(t/4)}][${t%4}]`:r>1?`${e}[${t}]`:e,Dn=(e,t,r,o,n)=>{let s=typeof r=="number",u=s?r:r.length,l=[...new Array(u).keys()],a=u<2?"u32":u<=4?`vec${u}`:`array`,p=Bn(t,n),h=typeof p=="string"?p:p[1],g=typeof p=="string"?p:p[0],b={indices:a,value:h,storage:g,tensor:t},w=G=>typeof G=="string"?G:`${G}u`,y={offsetToIndices:!1,indicesToOffset:!1,broadcastedIndicesToOffset:!1,set:!1,setByIndices:!1,get:!1,getByIndices:!1},_=s?"uniforms.":"",I=`${_}${e}_shape`,$=`${_}${e}_strides`,x="";for(let G=0;G ${b.indices} {\n var indices: ${b.indices};\n var current = offset;\n ${x}\n return indices;\n }`,A=G=>(y.offsetToIndices=!0,u<2?G:`o2i_${e}(${G})`),z=[];if(u>=2)for(let G=u-1;G>=0;G--)z.push(`${ce($,G,u)} * (indices[${G}])`);let R=u<2?"":`\n fn i2o_${e}(indices: ${b.indices}) -> u32 {\n return ${z.join("+")};\n }`,V=G=>(y.indicesToOffset=!0,u<2?G:`i2o_${e}(${G})`),T=(...G)=>u===0?"0u":`${b.indices}(${G.map(w).join(",")})`,N=(G,ee)=>u<2?`${G}`:`${ce(G,ee,u)}`,te=(G,ee,be)=>u<2?`${G}=${be};`:`${ce(G,ee,u)}=${be};`,Y={},K=(G,ee)=>{y.broadcastedIndicesToOffset=!0;let be=`${ee.name}broadcastedIndicesTo${e}Offset`;if(be in Y)return`${be}(${G})`;let et=[];for(let ze=u-1;ze>=0;ze--){let Ue=ee.indicesGet("outputIndices",ze+ee.rank-u);et.push(`${N($,ze)} * (${Ue} % ${N(I,ze)})`)}return Y[be]=`fn ${be}(outputIndices: ${ee.type.indices}) -> u32 {\n return ${et.length>0?et.join("+"):"0u"};\n }`,`${be}(${G})`},Q=(G,ee)=>(()=>{if(b.storage===b.value)return`${e}[${G}]=${ee};`;if(b.storage==="vec2"&&b.value==="i32")return`${e}[${G}]=vec2(u32(${ee}), select(0u, 0xFFFFFFFFu, ${ee} < 0));`;if(b.storage==="vec2"&&b.value==="u32")return`${e}[${G}]=vec2(u32(${ee}), 0u);`;if(b.storage==="u32"&&b.value==="vec4")return`${e}[${G}]=dot(vec4(0x1, 0x100, 0x10000, 0x1000000), vec4(${ee}));`;throw new Error(`not supported combination of storage type ${b.storage} and value type ${b.value} yet`)})(),Z=G=>(()=>{if(b.storage===b.value)return`${e}[${G}]`;if(b.storage==="vec2"&&b.value==="i32")return`i32(${e}[${G}].x)`;if(b.storage==="vec2"&&b.value==="u32")return`u32(${e}[${G}].x)`;if(b.storage==="u32"&&b.value==="vec4")return`vec4(bool(${e}[${G}] & 0xFFu), bool(${e}[${G}] & 0xFF00u), bool(${e}[${G}] & 0xFF0000u), bool(${e}[${G}] & 0xFF000000u))`;throw new Error(`not supported combination of storage type ${b.storage} and value type ${b.value} yet`)})(),Ee=u<2?"":`\n fn get_${e}ByIndices(indices: ${b.indices}) -> ${h} {\n return ${Z(`i2o_${e}(indices)`)};\n }`,Pe=u<2?"":(()=>{let G=l.map(be=>`d${be}: u32`).join(", "),ee=l.map(be=>`d${be}`).join(", ");return`\n fn get_${e}(${G}) -> ${h} {\n return get_${e}ByIndices(${T(ee)});\n }`})(),fe=(...G)=>{if(G.length!==u)throw new Error(`indices length must be ${u}`);let ee=G.map(w).join(",");return u===0?Z("0u"):u===1?Z(ee[0]):(y.get=!0,y.getByIndices=!0,y.indicesToOffset=!0,`get_${e}(${ee})`)},Ie=G=>u<2?Z(G):(y.getByIndices=!0,y.indicesToOffset=!0,`get_${e}ByIndices(${G})`),he=u<2?"":`\n fn set_${e}ByIndices(indices: ${b.indices}, value: ${h}) {\n ${Q(`i2o_${e}(indices)`,"value")}\n }`,ye=u<2?"":(()=>{let G=l.map(be=>`d${be}: u32`).join(", "),ee=l.map(be=>`d${be}`).join(", ");return`\n fn set_${e}(${G}, value: ${h}) {\n set_${e}ByIndices(${T(ee)}, value);\n }`})();return{impl:()=>{let G=[],ee=!1;return y.offsetToIndices&&(G.push(E),ee=!0),y.indicesToOffset&&(G.push(R),ee=!0),y.broadcastedIndicesToOffset&&(Object.values(Y).forEach(be=>G.push(be)),ee=!0),y.set&&(G.push(ye),ee=!0),y.setByIndices&&(G.push(he),ee=!0),y.get&&(G.push(Pe),ee=!0),y.getByIndices&&(G.push(Ee),ee=!0),!s&&ee&&G.unshift(`const ${I} = ${b.indices}(${r.join(",")});`,`const ${$} = ${b.indices}(${U.computeStrides(r).join(",")});`),G.join(`\n`)},type:b,offsetToIndices:A,indicesToOffset:V,broadcastedIndicesToOffset:K,indices:T,indicesGet:N,indicesSet:te,set:(...G)=>{if(G.length!==u+1)throw new Error(`indices length must be ${u}`);let ee=G[u];if(typeof ee!="string")throw new Error("value must be string");let be=G.slice(0,u).map(w).join(",");return u===0?Q("0u",ee):u===1?Q(be[0],ee):(y.set=!0,y.setByIndices=!0,y.indicesToOffset=!0,`set_${e}(${be}, ${ee})`)},setByOffset:Q,setByIndices:(G,ee)=>u<2?Q(G,ee):(y.setByIndices=!0,y.indicesToOffset=!0,`set_${e}ByIndices(${G}, ${ee});`),get:fe,getByOffset:Z,getByIndices:Ie,usage:o,name:e,strides:$,shape:I,rank:u}},M=(e,t,r,o=1)=>Dn(e,t,r,"input",o),F=(e,t,r,o=1)=>Dn(e,t,r,"output",o),Fr=(e,t,r,o=1)=>Dn(e,t,r,"internal",o),Rn=class{constructor(t){this.normalizedDispatchGroup=t;this.internalVariables=[];this.variables=[];this.uniforms=[];this.variableIndex=0}guardAgainstOutOfBoundsWorkgroupSizes(t){return`if (global_idx >= ${typeof t=="number"?`${t}u`:t}) { return; }`}mainStart(t=md){let r=typeof t=="number"?t:t[0],o=typeof t=="number"?1:t[1],n=typeof t=="number"?1:t[2],s=this.normalizedDispatchGroup[1]===1&&this.normalizedDispatchGroup[2]===1,u=s?`@builtin(global_invocation_id) global_id : vec3,\n @builtin(workgroup_id) workgroup_id : vec3,\n @builtin(local_invocation_id) local_id : vec3`:`@builtin(local_invocation_id) local_id : vec3,\n @builtin(local_invocation_index) local_idx : u32,\n @builtin(workgroup_id) workgroup_id : vec3,\n @builtin(num_workgroups) num_workgroups : vec3`,l=s?"let global_idx = global_id.x; let local_idx = local_id.x;":`let global_idx = (workgroup_id.z * num_workgroups[0] * num_workgroups[1] +\n workgroup_id.y * num_workgroups[0] + workgroup_id.x) * ${r*o*n}u + local_idx;`;return`@compute @workgroup_size(${r}, ${o}, ${n})\n fn main(${u}) {\n ${l}\n `}appendVariableUniforms(t){t.rank!==0&&(t.shape.startsWith("uniforms.")&&this.uniforms.push({name:t.shape.replace("uniforms.",""),type:"u32",length:t.rank}),t.strides.startsWith("uniforms.")&&this.uniforms.push({name:t.strides.replace("uniforms.",""),type:"u32",length:t.rank}))}declareVariable(t,r){if(t.usage==="internal")throw new Error("cannot use internal variable with declareVariable(). use registerInternalVariables() instead.");this.variables.push(t),this.appendVariableUniforms(t);let o=t.usage==="input"?"read":"read_write",n=t.type.storage;return`@group(0) @binding(${r}) var ${t.name}: array<${n}>;`}declareVariables(...t){return t.map(r=>this.declareVariable(r,this.variableIndex++)).join(`\n`)}registerInternalVariable(t){if(t.usage!=="internal")throw new Error("cannot use input or output variable with registerInternalVariable(). use declareVariables() instead.");this.internalVariables.push(t),this.appendVariableUniforms(t)}registerInternalVariables(...t){return t.forEach(r=>this.registerInternalVariable(r)),this}registerUniform(t,r,o=1){return this.uniforms.push({name:t,type:r,length:o}),this}registerUniforms(t){return this.uniforms=this.uniforms.concat(t),this}uniformDeclaration(){if(this.uniforms.length===0)return"";let t=[];for(let{name:r,type:o,length:n}of this.uniforms)if(n&&n>4)t.push(`${r}:array, ${Math.ceil(n/4)}>`);else{let s=n==null||n===1?o:`vec${n}<${o}>`;t.push(`${r}:${s}`)}return`\n struct Uniforms { ${t.join(", ")} };\n @group(0) @binding(${this.variableIndex}) var uniforms: Uniforms;`}get additionalImplementations(){return this.uniformDeclaration()+this.variables.map(t=>t.impl()).join(`\n`)+this.internalVariables.map(t=>t.impl()).join(`\n`)}},ma=e=>new Rn(e),Ft=(e,t)=>{let r=e.length,o=[];for(let n=0;n1&&u===1&&o.unshift(s)}return o},Re=e=>!0});var fd,fa,hd,gd,it,ha,ga,jt=j(()=>{"use strict";$e();je();ve();fd=e=>{if(!e||e.length!==1)throw new Error("Transpose requires 1 input.")},fa=(e,t)=>t&&t.length!==e?[...new Array(e).keys()].reverse():t,hd=(e,t)=>U.sortBasedOnPerm(e,fa(e.length,t)),gd=(e,t,r,o)=>{let n=[];n.push(`fn perm(i: ${o.type.indices}) -> ${r.type.indices} {\n var a: ${r.type.indices};`);for(let s=0;s{let r=e.dataType,o=e.dims.length,n=fa(o,t),s=Re(o),u=hd(e.dims,n),l=s?u.length:u,a=s?o:e.dims,p=F("output",r,l),h=M("a",r,a),g=b=>`\n ${b.registerUniform("output_size","u32").declareVariables(h,p)}\n\n ${gd(n,o,h,p)}\n\n ${b.mainStart()}\n ${b.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}\n\n let indices = ${p.offsetToIndices("global_idx")};\n let aIndices = perm(indices);\n\n ${p.setByOffset("global_idx",h.getByIndices("aIndices"))}\n }`;return{name:"Transpose",shaderCache:{hint:`${t}`,inputDependencies:s?["rank"]:["dims"]},getRunData:b=>{let w=U.size(u);return{outputs:[{dims:u,dataType:b[0].dataType}],dispatchGroup:{x:Math.ceil(w/64)},programUniforms:s?[{type:"uint32",data:w},...L(b[0].dims),...L(u)]:[{type:"uint32",data:w}]}},getShaderSource:g}},ha=(e,t)=>{fd(e.inputs),e.compute(it(e.inputs[0],t.perm))},ga=e=>ge({perm:e.perm})});var yd,bd,wd,vd,$d,Sd,xd,_d,Cd,Id,ct,ya,ba,wa,va,$a,Sa,xa,_a,Ca,Ia,Aa=j(()=>{"use strict";$e();ve();jr();jt();yd={max:"select(bestValue, candidate, candidate > bestValue)",min:"select(bestValue, candidate, candidate < bestValue)",mean:"bestValue + candidate",sum:"bestValue + candidate",prod:"bestValue * candidate",sumSquare:"bestValue + candidate * candidate",logSumExp:"bestValue + exp(candidate)",l1:"bestValue + abs(candidate)",l2:"bestValue + candidate * candidate",logSum:"bestValue + candidate"},bd={max:"select(bestValue, candidate, candidate > bestValue)",min:"select(bestValue, candidate, candidate < bestValue)",mean:"bestValue + candidate",sum:"bestValue + candidate",prod:"bestValue * candidate",sumSquare:"bestValue + candidate",logSumExp:"bestValue + candidate",l1:"bestValue + candidate",l2:"bestValue + candidate",logSum:"bestValue + candidate"},wd={max:"_A[offset]",min:"_A[offset]",mean:"0",sum:"0",prod:"1",sumSquare:"0",logSumExp:"0",l1:"0",l2:"0",logSum:"0"},vd={max:"bestValue",min:"bestValue",sum:"bestValue",prod:"bestValue",sumSquare:"bestValue",logSumExp:"log(bestValue)",l1:"bestValue",l2:"sqrt(bestValue)",logSum:"log(bestValue)"},$d=(e,t)=>{let r=[];for(let o=t-e;o{let r=[],o=e.length;for(let s=0;se[s]);return[r,n]},xd=(e,t)=>{let r=e.length+t.length,o=[],n=0;for(let s=0;s{for(let r=0;r{let r=[];if(!_d(e,t)){for(let o=0;or.push(o))}return r},Id=(e,t,r,o,n,s,u)=>{let l=r[0].dims,a=U.size(s),p=U.size(u),h=M("_A",r[0].dataType,l),g=F("output",n,s),b=32,w=`\n var aBestValues : array<${g.type.storage}, ${b}>;\n `;return{name:e,shaderCache:t,getShaderSource:_=>`\n ${_.registerUniform("reduceSize","u32").declareVariables(h,g)}\n ${w}\n fn DIV_CEIL(a : u32, b : u32) -> u32 {\n return ((a - 1u) / b + 1u);\n }\n ${_.mainStart(b)}\n\n let outputIndex = global_idx / ${b};\n let offset = outputIndex * uniforms.reduceSize;\n\n var bestValue = ${g.type.storage}(${wd[o]});\n let Length = uniforms.reduceSize;\n for (var k = local_idx; k < Length; k = k + ${b}) {\n let candidate = ${g.type.storage}(${h.getByOffset("offset + k")});\n bestValue = ${yd[o]};\n }\n aBestValues[local_idx] = bestValue;\n workgroupBarrier();\n\n var reduceSize = min(Length, ${b}u);\n for (var currentSize = reduceSize / 2u; reduceSize > 1u;\n currentSize = reduceSize / 2u) {\n let interval = DIV_CEIL(reduceSize, 2u);\n if (local_idx < currentSize) {\n let candidate = aBestValues[local_idx + interval];\n bestValue = ${bd[o]};\n aBestValues[local_idx] = bestValue;\n }\n reduceSize = interval;\n workgroupBarrier();\n }\n\n if (local_idx == 0u) {\n ${g.setByOffset("outputIndex",`${o==="mean"?`bestValue / ${g.type.storage}(uniforms.reduceSize)`:`${vd[o]}`}`)};\n }\n }`,getRunData:()=>({outputs:[{dims:s,dataType:n}],dispatchGroup:{x:a},programUniforms:[{type:"uint32",data:p}]})}},ct=(e,t,r,o)=>{let n=e.inputs.length===1?r:Mn(e.inputs,r),s=n.axes;s.length===0&&!n.noopWithEmptyAxes&&(s=e.inputs[0].dims.map((w,y)=>y));let u=U.normalizeAxes(s,e.inputs[0].dims.length),l=u,a=e.inputs[0],p=Cd(l,e.inputs[0].dims.length);p.length>0&&(a=e.compute(it(e.inputs[0],p),{inputs:[0],outputs:[-1]})[0],l=$d(l.length,a.dims.length));let[h,g]=Sd(a.dims,l),b=h;n.keepDims&&(b=xd(h,u)),e.compute(Id(t,{hint:n.cacheKey,inputDependencies:["type"]},[a],o,e.inputs[0].dataType,b,g),{inputs:[a]})},ya=(e,t)=>{ct(e,"ReduceMeanShared",t,"mean")},ba=(e,t)=>{ct(e,"ReduceL1Shared",t,"l1")},wa=(e,t)=>{ct(e,"ReduceL2Shared",t,"l2")},va=(e,t)=>{ct(e,"ReduceLogSumExpShared",t,"logSumExp")},$a=(e,t)=>{ct(e,"ReduceMaxShared",t,"max")},Sa=(e,t)=>{ct(e,"ReduceMinShared",t,"min")},xa=(e,t)=>{ct(e,"ReduceProdShared",t,"prod")},_a=(e,t)=>{ct(e,"ReduceSumShared",t,"sum")},Ca=(e,t)=>{ct(e,"ReduceSumSquareShared",t,"sumSquare")},Ia=(e,t)=>{ct(e,"ReduceLogSumShared",t,"logSum")}});var pt,Ad,qr,Mn,mt,Td,Ed,Od,Pd,kd,Rd,Bd,Dd,Md,zd,ft,Ta,Ea,Oa,Pa,ka,Ra,Ba,Da,Ma,za,jr=j(()=>{"use strict";$e();je();ve();Aa();pt=e=>{if(!e||e.length===0||e.length>2)throw new Error("Reduce op requires 1 or 2 inputs.");if(e.length===2&&e[1].dims.length!==1)throw new Error("Invalid axes input dims.")},Ad=e=>["","",`var value = ${e.getByIndices("input_indices")};`,""],qr=(e,t,r,o,n,s,u=!1,l=!1)=>{let a=[],p=r[0].dims,h=p.length,g=U.normalizeAxes(n,h),b=!l&&g.length===0;p.forEach((I,$)=>{b||g.indexOf($)>=0?u&&a.push(1):a.push(I)});let w=a.length,y=U.size(a);return{name:e,shaderCache:t,getShaderSource:I=>{let $=[],x=M("_A",r[0].dataType,h),E=F("output",s,w),A=o(x,E,g),z=A[2];for(let R=0,V=0;R=0?(u&&V++,z=`for(var j${R}: u32 = 0; j${R} < ${p[R]}; j${R}++) {\n ${A[2].includes("last_index")?`let last_index = j${R};`:""}\n ${x.indicesSet("input_indices",R,`j${R}`)}\n ${z}\n }`):($.push(`${x.indicesSet("input_indices",R,E.indicesGet("output_indices",V))};`),V++);return`\n\n ${I.registerUniform("output_size","u32").declareVariables(x,E)}\n\n ${I.mainStart()}\n ${I.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}\n var input_indices: ${x.type.indices};\n let output_indices = ${E.offsetToIndices("global_idx")};\n\n ${$.join(`\n`)}\n ${A[0]} // init ops for reduce max/min\n ${A[1]}\n ${z}\n ${A[3]}\n ${A.length===4?E.setByOffset("global_idx","value"):A.slice(4).join(`\n`)}\n }`},getRunData:()=>({outputs:[{dims:a,dataType:s}],dispatchGroup:{x:Math.ceil(y/64)},programUniforms:[{type:"uint32",data:y},...L(p),...L(a)]})}},Mn=(e,t)=>{let r=[];return e[1].dims[0]>0&&e[1].getBigInt64Array().forEach(o=>r.push(Number(o))),ge({axes:r,keepDims:t.keepDims,noopWithEmptyAxes:t.noopWithEmptyAxes})},mt=(e,t,r,o)=>{let n=e.inputs,s=n.length===1?r:Mn(n,r);e.compute(qr(t,{hint:s.cacheKey,inputDependencies:["rank"]},[n[0]],s.noopWithEmptyAxes&&s.axes.length===0?Ad:o,s.axes,n[0].dataType,s.keepDims,s.noopWithEmptyAxes),{inputs:[0]})},Td=(e,t)=>{pt(e.inputs),mt(e,"ReduceLogSum",t,(o,n)=>[`var value = ${n.type.storage}(0);`,"",`value += ${o.getByIndices("input_indices")};`,"value = log(value);"])},Ed=(e,t)=>{pt(e.inputs),mt(e,"ReduceL1",t,(o,n)=>[`var value = ${n.type.storage}(0);`,"",`value += abs(${o.getByIndices("input_indices")});`,""])},Od=(e,t)=>{pt(e.inputs),mt(e,"ReduceL2",t,(o,n)=>[`var t = ${n.type.value}(0); var value = ${n.type.value}(0);`,"",`t = ${o.getByIndices("input_indices")}; value += (t * t);`,"value = sqrt(value);"])},Pd=(e,t)=>{pt(e.inputs),mt(e,"ReduceLogSumExp",t,(o,n)=>[`var value = ${n.type.storage}(0);`,"",`value += exp(${o.getByIndices("input_indices")});`,"value = log(value);"])},kd=(e,t)=>{pt(e.inputs),mt(e,"ReduceMax",t,(o,n,s)=>{let u=[];for(let l=0;l=0||s.length===0)&&u.push(o.indicesSet("input_indices",l,0));return[`${u.join(`\n`)}`,`var value = ${o.getByIndices("input_indices")};`,`value = max(value, ${o.getByIndices("input_indices")});`,""]})},Rd=(e,t)=>{pt(e.inputs),mt(e,"ReduceMean",t,(o,n,s)=>{let u=1;for(let l=0;l=0||s.length===0)&&(u*=e.inputs[0].dims[l]);return["var sum = f32(0);","",`sum += f32(${o.getByIndices("input_indices")});`,`let value = ${n.type.value}(sum / ${u});`]})},Bd=(e,t)=>{pt(e.inputs),mt(e,"ReduceMin",t,(o,n,s)=>{let u=[];for(let l=0;l=0||s.length===0)&&u.push(`input_indices[${l}] = 0;`);return[`${u.join(`\n`)}`,`var value = ${o.getByIndices("input_indices")};`,`value = min(value, ${o.getByIndices("input_indices")});`,""]})},Dd=(e,t)=>{pt(e.inputs),mt(e,"ReduceProd",t,(o,n)=>[`var value = ${n.type.storage}(1);`,"",`value *= ${o.getByIndices("input_indices")};`,""])},Md=(e,t)=>{pt(e.inputs),mt(e,"ReduceSum",t,(o,n)=>[`var value = ${n.type.storage}(0);`,"",`value += ${o.getByIndices("input_indices")};`,""])},zd=(e,t)=>{pt(e.inputs),mt(e,"ReduceSumSquare",t,(o,n)=>[`var t = ${n.type.value}(0); var value = ${n.type.value}(0);`,"",`t = ${o.getByIndices("input_indices")}; value += t * t;`,""])},ft=(e,t,r)=>{if(t.length===0)return r;let o=1,n=1;for(let s=0;s1024},Ta=(e,t)=>{ft(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Rd(e,t):ya(e,t)},Ea=(e,t)=>{ft(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Ed(e,t):ba(e,t)},Oa=(e,t)=>{ft(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Od(e,t):wa(e,t)},Pa=(e,t)=>{ft(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Pd(e,t):va(e,t)},ka=(e,t)=>{ft(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?kd(e,t):$a(e,t)},Ra=(e,t)=>{ft(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Bd(e,t):Sa(e,t)},Ba=(e,t)=>{ft(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Dd(e,t):xa(e,t)},Da=(e,t)=>{ft(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Md(e,t):_a(e,t)},Ma=(e,t)=>{ft(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?zd(e,t):Ca(e,t)},za=(e,t)=>{ft(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Td(e,t):Ia(e,t)}});var Ua,Va,Na,zn,Wa=j(()=>{"use strict";Ne();je();jr();Ua=e=>{if(!e||e.length===0||e.length>2)throw new Error("ArgMinMaxOp op requires 1 or 2 inputs.");if(e[0].dataType!==1)throw new Error("Invalid input type.")},Va=(e,t)=>{Ua(e.inputs);let r=(o,n,s)=>{let u=[];for(let l=0;l=0||s.length===0)&&u.push(`input_indices[${l}] = 0;`);return[`${u.join(`\n`)}`,`var value = ${o.getByIndices("input_indices")};\nvar best_index : i32 = 0;`,`if (${o.getByIndices("input_indices")} ${t.selectLastIndex>0?"<=":"<"} value) {\n value = ${o.getByIndices("input_indices")};\n best_index = i32(last_index);\n }`,"",n.setByOffset("global_idx","best_index")]};e.compute(qr("ArgMin",{hint:t.cacheKey,inputDependencies:["rank"]},[e.inputs[0]],r,[t.axis],7,t.keepDims),{inputs:[0]})},Na=(e,t)=>{Ua(e.inputs);let r=(o,n,s)=>{let u=[];for(let l=0;l=0||s.length===0)&&u.push(`input_indices[${l}] = 0;`);return[`${u.join(`\n`)}`,`var value = ${o.getByIndices("input_indices")};\nvar best_index : i32 = 0;`,`if (${o.getByIndices("input_indices")} ${t.selectLastIndex>0?">=":">"} value) {\n value = ${o.getByIndices("input_indices")};\n best_index = i32(last_index);\n }`,"",n.setByOffset("global_idx","best_index")]};e.compute(qr("argMax",{hint:t.cacheKey,inputDependencies:["rank"]},[e.inputs[0]],r,[t.axis],7,t.keepDims),{inputs:[0]})},zn=e=>ge(e)});var Ud,Vd,Nd,Wd,Kr,Hd,Ha,Un=j(()=>{"use strict";Ne();Nr();ve();Ud=(e,t)=>{let r=e[0],o=e[1],n=e[2],s=e[3],u=e[4],l=e[5];if(u&&l)throw new Error("Attention cannot have both past and relative_position_bias");if(r.dims.length!==3)throw new Error(\'Input "input" must have 3 dimensions\');let a=r.dims[0],p=r.dims[1],h=r.dims[2];if(n.dims.length!==1)throw new Error(\'Input "bias" is expected to have 1 dimensions\');if(o.dims.length!==2)throw new Error(\'Input "weights" is expected to have 2 dimensions\');if(o.dims[0]!==h)throw new Error("Input 1 dimension 0 should have same length as dimension 2 of input 0");if(n.dims[0]!==o.dims[1])throw new Error(\'Input "bias" dimension 0 should have same length as dimension 1 of input "weights"\');let g=n.dims[0]/3,b=g,w=b;if(t.qkvHiddenSizes.length>0){if(t.qkvHiddenSizes.length!==3)throw new Error("qkv_hidden_sizes attribute should have 3 elements");for(let E of t.qkvHiddenSizes)if(E%t.numHeads!==0)throw new Error("qkv_hidden_sizes should be divisible by num_heads");g=t.qkvHiddenSizes[0],b=t.qkvHiddenSizes[1],w=t.qkvHiddenSizes[2]}let y=p;if(g!==b)throw new Error("qkv_hidden_sizes first element should be same as the second");if(n.dims[0]!==g+b+w)throw new Error(\'Input "bias" dimension 0 should have same length as sum of Q/K/V hidden sizes\');let _=0;if(u){if(b!==w)throw new Error(\'Input "past" expect k_hidden_size == v_hidden_size\');if(u.dims.length!==5)throw new Error(\'Input "past" must have 5 dimensions\');if(u.dims[0]!==2)throw new Error(\'Input "past" first dimension must be 2\');if(u.dims[1]!==a)throw new Error(\'Input "past" second dimension must be batch_size\');if(u.dims[2]!==t.numHeads)throw new Error(\'Input "past" third dimension must be num_heads\');if(u.dims[4]!==b/t.numHeads)throw new Error(\'Input "past" fifth dimension must be k_hidden_size / num_heads\');t.pastPresentShareBuffer||(_=u.dims[3])}let I=y+_,$=-1,x=0;if(s)throw new Error("Mask not supported");if(u)throw new Error("past is not supported");if(l)throw new Error("relativePositionBias is not supported");return{batchSize:a,sequenceLength:p,pastSequenceLength:_,kvSequenceLength:y,totalSequenceLength:I,maxSequenceLength:$,inputHiddenSize:h,hiddenSize:g,vHiddenSize:w,headSize:Math.floor(g/t.numHeads),vHeadSize:Math.floor(w/t.numHeads),numHeads:t.numHeads,isUnidirectional:!1,pastPresentShareBuffer:!1,maskFilterValue:t.maskFilterValue,maskType:x,scale:t.scale,broadcastResPosBias:!1,passPastInKv:!1,qkvFormat:1}},Vd=(e,t,r,o)=>{let n=Fe(o),s=64,u=o/n;u{let w=F("x",t.dataType,t.dims,n),y="thread_max_vector";n===2?y="max(thread_max_vector.x, thread_max_vector.y)":n===4&&(y="max(max(thread_max_vector.x, thread_max_vector.y), max(thread_max_vector.z, thread_max_vector.w))");let _=lt(t.dataType),I=[{name:"d_inv",type:_},{name:"d_comp",type:"u32"},{name:"elements_per_wg",type:"u32"}];return`\n var wgMax: array;\n var wgSum: array;\n ${b.registerUniforms(I).declareVariables(w)}\n ${b.mainStart([s,1,1])}\n let localOffset = local_idx * uniforms.elements_per_wg;\n let offset: u32 = workgroup_id.x * uniforms.d_comp + localOffset;\n\n var thread_max_vector = ${Ze("f32",n,"-3.402823e+38f")};\n for (var i: u32 = 0; i < uniforms.elements_per_wg && i + localOffset < uniforms.d_comp; i++) {\n thread_max_vector = max(${at(_,n,"x[offset + i]")}, thread_max_vector);\n }\n wgMax[local_idx] = ${y};\n workgroupBarrier();\n\n var maxValue = -3.402823e+38f;\n for (var i = 0u; i < ${s}; i++) {\n maxValue = max(wgMax[i], maxValue);\n }\n\n var sumVector = ${Ze("f32",n,"0")};\n for (var i: u32 = 0; i < uniforms.elements_per_wg && i + localOffset < uniforms.d_comp; i++) {\n sumVector += exp(${at(_,n,"x[offset + i]")} - maxValue);\n }\n wgSum[local_idx] = ${Je("sumVector",n)};\n workgroupBarrier();\n\n var sum: f32 = 0;\n for (var i = 0u; i < ${s}; i++) {\n sum += wgSum[i];\n }\n\n if (sum == 0) {\n for (var i: u32 = 0; i < uniforms.elements_per_wg && i + localOffset < uniforms.d_comp; i++) {\n x[offset + i] = ${Ze("f32",n,"uniforms.d_inv")};\n }\n } else {\n for (var i: u32 = 0; i < uniforms.elements_per_wg && i + localOffset < uniforms.d_comp; i++) {\n let f32input = ${at(_,n,"x[offset + i]")};\n x[offset + i] = ${w.type.value}(exp(f32input - maxValue) / sum);\n }\n }\n }`};e.compute({name:"AttentionProbsSoftmax",shaderCache:{hint:`${s};${h};${n}`},getShaderSource:g,getRunData:()=>({outputs:[],dispatchGroup:{x:r},programUniforms:p})},{inputs:[t],outputs:[]})},Nd=(e,t,r,o,n,s)=>{let u=[n.batchSize,n.numHeads,n.sequenceLength,n.kvSequenceLength+n.pastSequenceLength],l=s.scale===0?1/Math.sqrt(n.headSize):s.scale,a=Fe(n.headSize),p=n.headSize/a,h=12,g={x:Math.ceil(n.totalSequenceLength/h),y:Math.ceil(n.sequenceLength/h),z:n.batchSize*n.numHeads},b=Xe(t.dataType),w=[{type:"uint32",data:n.sequenceLength},{type:"uint32",data:p},{type:"uint32",data:n.totalSequenceLength},{type:"uint32",data:n.kvSequenceLength},{type:b,data:l}],y=[t,r],_=$=>{let x=M("q",t.dataType,t.dims,a),E=M("key",r.dataType,r.dims,a),A=F("output",t.dataType,u),z=Le(t.dataType),R=[{name:"M",type:"u32"},{name:"K",type:"u32"},{name:"N",type:"u32"},{name:"kv_sequence_length",type:"u32"},{name:"alpha",type:z}];return`\n const beta: ${z} = 1.0;\n const TILE_SIZE = ${h}u;\n\n var tileQ: array<${x.type.storage}, ${h*h}>;\n var tileK: array<${x.type.storage}, ${h*h}>;\n ${$.registerUniforms(R).declareVariables(x,E,A)}\n ${$.mainStart([h,h,1])}\n // x holds the N and y holds the M\n let headIdx = workgroup_id.z;\n let m = workgroup_id.y * TILE_SIZE;\n let n = workgroup_id.x * TILE_SIZE;\n let lm = m + local_id.y;\n let ln = n + local_id.x;\n\n let qOffset = uniforms.M * uniforms.K * headIdx + m * uniforms.K;\n let kOffset = uniforms.kv_sequence_length * uniforms.K * headIdx + n * uniforms.K;\n\n var value = ${Ze(z,a)};\n for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {\n if (m + local_id.y < uniforms.M && w + local_id.x < uniforms.K) {\n tileQ[TILE_SIZE * local_id.y + local_id.x] = q[qOffset + local_id.y * uniforms.K + w + local_id.x];\n }\n if (n + local_id.y < uniforms.N && w + local_id.x < uniforms.K) {\n tileK[TILE_SIZE * local_id.y + local_id.x] = key[kOffset + local_id.y * uniforms.K + w + local_id.x];\n }\n workgroupBarrier();\n\n for (var k: u32 = 0u; k({outputs:[{dims:u,dataType:t.dataType,gpuDataType:0}],dispatchGroup:g,programUniforms:w}),getShaderSource:_},{inputs:y,outputs:[-1]})[0];return Vd(e,I,n.batchSize*n.numHeads*n.sequenceLength,n.totalSequenceLength),I},Wd=(e,t,r,o)=>{let n=[o.batchSize,o.sequenceLength,o.vHiddenSize],s=12,u={x:Math.ceil(o.vHeadSize/s),y:Math.ceil(o.sequenceLength/s),z:o.batchSize*o.numHeads},l=[{type:"uint32",data:o.sequenceLength},{type:"uint32",data:o.totalSequenceLength},{type:"uint32",data:o.vHeadSize},{type:"uint32",data:o.numHeads},{type:"uint32",data:o.vHiddenSize}],a=p=>{let h=M("probs",t.dataType,t.dims),g=M("v",r.dataType,r.dims),b=F("output",t.dataType,n),w=[{name:"M",type:"u32"},{name:"K",type:"u32"},{name:"N",type:"u32"},{name:"num_heads",type:"u32"},{name:"v_hidden_size",type:"u32"}];return`\n const TILE_SIZE = ${s}u;\n var tileQ: array<${h.type.value}, ${s*s}>;\n var tileK: array<${h.type.value}, ${s*s}>;\n ${p.registerUniforms(w).declareVariables(h,g,b)}\n ${p.mainStart([s,s,1])}\n let headIdx = workgroup_id.z;\n let m = workgroup_id.y * TILE_SIZE + local_id.y;\n let n = workgroup_id.x * TILE_SIZE + local_id.x;\n\n let offsetA = headIdx * (uniforms.M * uniforms.K) + m * uniforms.K;\n let offsetB = headIdx * (uniforms.N * uniforms.K) + n;\n\n var value = ${h.type.storage}(0);\n for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {\n if (m < uniforms.M && w + local_id.x < uniforms.K) {\n tileQ[TILE_SIZE * local_id.y + local_id.x] = probs[offsetA + w + local_id.x];\n }\n if (n < uniforms.N && w + local_id.y < uniforms.K) {\n tileK[TILE_SIZE * local_id.y + local_id.x] = v[offsetB + (w + local_id.y) * uniforms.N];\n }\n workgroupBarrier();\n for (var k: u32 = 0u; k({outputs:[{dims:n,dataType:t.dataType,gpuDataType:0}],dispatchGroup:u,programUniforms:l}),getShaderSource:a},{inputs:[t,r],outputs:[0]})[0]},Kr=(e,t,r,o,n,s,u,l,a,p,h)=>{let g=Nd(e,t,r,a,p,h);Wd(e,g,o,p)},Hd=(e,t)=>{let r=[t.batchSize,t.numHeads,t.sequenceLength,t.headSize],o=t.sequenceLength,n=t.inputHiddenSize,s=t.headSize,u=12,l={x:Math.ceil(t.headSize/u),y:Math.ceil(t.sequenceLength/u),z:t.batchSize*t.numHeads},a=[e.inputs[0],e.inputs[1],e.inputs[2]],p=[{type:"uint32",data:o},{type:"uint32",data:n},{type:"uint32",data:s},{type:"uint32",data:t.numHeads},{type:"uint32",data:t.headSize},{type:"uint32",data:t.hiddenSize},{type:"uint32",data:t.hiddenSize+t.hiddenSize+t.vHiddenSize}],h=g=>{let b=F("output_q",a[0].dataType,r),w=F("output_k",a[0].dataType,r),y=F("output_v",a[0].dataType,r),_=M("input",a[0].dataType,a[0].dims),I=M("weight",a[1].dataType,a[1].dims),$=M("bias",a[2].dataType,a[2].dims),x=_.type.storage,E=[{name:"M",type:"u32"},{name:"K",type:"u32"},{name:"N",type:"u32"},{name:"num_heads",type:"u32"},{name:"head_size",type:"u32"},{name:"hidden_size",type:"u32"},{name:"ldb",type:"u32"}];return`\n const TILE_SIZE = ${u}u;\n var tileInput: array<${x}, ${u*u}>;\n var tileWeightQ: array<${x}, ${u*u}>;\n var tileWeightK: array<${x}, ${u*u}>;\n var tileWeightV: array<${x}, ${u*u}>;\n ${g.registerUniforms(E).declareVariables(_,I,$,b,w,y)}\n ${g.mainStart([u,u,1])}\n let batchIndex = workgroup_id.z / uniforms.num_heads;\n let headNumber = workgroup_id.z % uniforms.num_heads;\n let m = workgroup_id.y * TILE_SIZE + local_id.y;\n let n = workgroup_id.x * TILE_SIZE + local_id.x;\n\n let inputOffset = batchIndex * (uniforms.M * uniforms.K) + m * uniforms.K;\n let biasOffsetQ = headNumber * uniforms.head_size;\n let biasOffsetK = uniforms.hidden_size + biasOffsetQ;\n let biasOffsetV = uniforms.hidden_size + biasOffsetK;\n\n var valueQ = ${x}(0);\n var valueK = ${x}(0);\n var valueV = ${x}(0);\n for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {\n if (m < uniforms.M && w + local_id.x < uniforms.K) {\n tileInput[TILE_SIZE * local_id.y + local_id.x] = input[inputOffset + w + local_id.x];\n }\n if (n < uniforms.N && w + local_id.y < uniforms.K) {\n let offset = n + (w + local_id.y) * uniforms.ldb;\n tileWeightQ[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetQ + offset];\n tileWeightK[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetK + offset];\n tileWeightV[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetV + offset];\n }\n workgroupBarrier();\n for (var k: u32 = 0u; k({outputs:[{dims:r,dataType:e.inputs[0].dataType,gpuDataType:0},{dims:r,dataType:e.inputs[0].dataType,gpuDataType:0},{dims:r,dataType:e.inputs[0].dataType,gpuDataType:0}],dispatchGroup:l,programUniforms:p}),getShaderSource:h},{inputs:a,outputs:[-1,-1,-1]})},Ha=(e,t)=>{let r=Ud(e.inputs,t),[o,n,s]=Hd(e,r);return Kr(e,o,n,s,e.inputs[4],void 0,void 0,void 0,e.inputs[5],r,t)}});var Gd,Ld,Fd,Ga,La=j(()=>{"use strict";Lt();$e();je();ve();Gd=(e,t)=>{if(!e||e.length!==5)throw new Error("BatchNormalization requires 5 inputs");let r=(o,n,s)=>{let u=n.length;if(u!==o.length)throw new Error(`${s}: num dimensions != ${u}`);n.forEach((l,a)=>{if(l!==o[a])throw new Error(`${s}: dim[${a}] do not match`)})};if(e[0].dims.length>1){let o=t.format==="NHWC"?t.spatial?e[0].dims.slice(-1):e[0].dims.slice(-1).concat(e[0].dims.slice(1,e[0].dims.length-1)):e[0].dims.slice(1,t.spatial?2:void 0);r(e[1].dims,o,"Invalid input scale"),r(e[2].dims,o,"Invalid input B"),r(e[3].dims,o,"Invalid input mean"),r(e[4].dims,o,"Invalid input var")}else r(e[1].dims,[1],"Invalid input scale"),r(e[2].dims,[1],"Invalid input B"),r(e[3].dims,[1],"Invalid input mean"),r(e[4].dims,[1],"Invalid input var")},Ld=(e,t)=>{let{epsilon:r,spatial:o,format:n}=t,s=e[0].dims,u=o?Fe(s[s.length-1]):1,l=n==="NHWC"&&s.length>1?u:1,a=U.size(s)/u,p=Re(s.length)&&o,h=p?s.length:s,g=M("x",e[0].dataType,e[0].dims,u),b=M("scale",e[1].dataType,e[1].dims,l),w=M("bias",e[2].dataType,e[2].dims,l),y=M("inputMean",e[3].dataType,e[3].dims,l),_=M("inputVar",e[4].dataType,e[4].dims,l),I=F("y",e[0].dataType,h,u),$=()=>{let E="";if(o)E=`let cOffset = ${s.length===1?"0u":n==="NHWC"?`outputIndices[${s.length-1}] / ${u}`:"outputIndices[1]"};`;else if(n==="NCHW")E=`\n ${I.indicesSet("outputIndices","0","0")}\n let cOffset = ${I.indicesToOffset("outputIndices")};`;else{E=`var cIndices = ${b.type.indices}(0);\n cIndices[0] = outputIndices[${s.length-1}];`;for(let A=1;A`\n const epsilon = ${r};\n ${E.registerUniform("outputSize","u32").declareVariables(g,b,w,y,_,I)}\n ${E.mainStart()}\n ${E.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n var outputIndices = ${I.offsetToIndices(`global_idx * ${u}`)};\n ${$()}\n let scale = ${b.getByOffset("cOffset")};\n let bias = ${w.getByOffset("cOffset")};\n let inputMean = ${y.getByOffset("cOffset")};\n let inputVar = ${_.getByOffset("cOffset")};\n let x = ${g.getByOffset("global_idx")};\n let value = (x - inputMean) * inverseSqrt(inputVar + epsilon) * scale + bias;\n ${I.setByOffset("global_idx","value")}\n }`;return{name:"BatchNormalization",shaderCache:{hint:`${t.epsilon}_${t.format}_${o}_${u}`,inputDependencies:p?["rank","type","type","type","type"]:void 0},getShaderSource:x,getRunData:()=>({outputs:[{dims:e[0].dims,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:p?[{type:"uint32",data:a},...L(s)]:[{type:"uint32",data:a}]})}},Fd=e=>ge(e),Ga=(e,t)=>{let{inputs:r,outputCount:o}=e,n=Fd({...t,outputCount:o});if(Gt.webgpu.validateInputContent&&Gd(r,n),t.trainingMode)throw new Error("BatchNormalization trainingMode is not supported yet.");e.compute(Ld(r,n))}});var jd,qd,Fa,ja=j(()=>{"use strict";$e();ve();jd=e=>{if(e[0].dims.length!==3)throw new Error("input should have 3 dimensions");if(![320,640,1280].includes(e[0].dims[2]))throw new Error("number of channels should be 320, 640 or 1280");if(e[1].dims.length!==1)throw new Error("bias is expected to have 1 dimensions");if(e[0].dims[2]!==e[1].dims[0])throw new Error("last dimension of input and bias are not the same")},qd=e=>{let t=e[0].dims,r=e[0].dims[2],o=U.size(t)/4,n=e[0].dataType,s=M("input",n,t,4),u=M("bias",n,[r],4),l=M("residual",n,t,4),a=F("output",n,t,4);return{name:"BiasAdd",getRunData:()=>({outputs:[{dims:t,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(o/64)}}),getShaderSource:h=>`\n const channels = ${r}u / 4;\n ${h.declareVariables(s,u,l,a)}\n\n ${h.mainStart()}\n ${h.guardAgainstOutOfBoundsWorkgroupSizes(o)}\n let value = ${s.getByOffset("global_idx")}\n + ${u.getByOffset("global_idx % channels")} + ${l.getByOffset("global_idx")};\n ${a.setByOffset("global_idx","value")}\n }`}},Fa=e=>{jd(e.inputs),e.compute(qd(e.inputs))}});var Kd,Ae,qa,Ka,Ya,Za,Qa,Xa,Ja,ei,ti,Yd,ri,ni,oi,ai,Yr,ii,Zr,si,ui,di,li,ci,pi,mi,fi,hi,gi,yi,bi,wi,vi,$i,Si,xi,Vn=j(()=>{"use strict";Ne();$e();je();ve();Kd=(e,t,r,o,n,s)=>{let u=Math.ceil(t/4),l="";typeof n=="string"?l=`${n}(a)`:l=n("a");let a=M("inputData",r,[u],4),p=F("outputData",o,[u],4);return`\n ${e.registerUniform("vec_size","u32").declareVariables(a,p)}\n\n ${s??""}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")}\n\n let a = ${a.getByOffset("global_idx")};\n ${p.setByOffset("global_idx",l)}\n }`},Ae=(e,t,r,o,n,s=e.dataType)=>({name:t,shaderCache:{hint:n,inputDependencies:["type"]},getShaderSource:u=>Kd(u,U.size(e.dims),e.dataType,s,r,o),getRunData:u=>({outputs:[{dims:e.dims,dataType:s}],dispatchGroup:{x:Math.ceil(U.size(u[0].dims)/64/4)},programUniforms:[{type:"uint32",data:Math.ceil(U.size(e.dims)/4)}]})}),qa=e=>{e.compute(Ae(e.inputs[0],"Abs","abs"))},Ka=e=>{e.compute(Ae(e.inputs[0],"Acos","acos"))},Ya=e=>{e.compute(Ae(e.inputs[0],"Acosh","acosh"))},Za=e=>{e.compute(Ae(e.inputs[0],"Asin","asin"))},Qa=e=>{e.compute(Ae(e.inputs[0],"Asinh","asinh"))},Xa=e=>{e.compute(Ae(e.inputs[0],"Atan","atan"))},Ja=e=>{e.compute(Ae(e.inputs[0],"Atanh","atanh"))},ei=e=>ge(e),ti=(e,t)=>{let r;switch(t.to){case 10:r="vec4";break;case 1:r="vec4";break;case 12:r="vec4";break;case 6:r="vec4";break;case 9:r="vec4";break;default:throw new RangeError(`not supported type (specified in attribute \'to\' from \'Cast\' operator): ${t.to}`)}e.compute(Ae(e.inputs[0],"Cast",r,void 0,t.cacheKey,t.to))},Yd=e=>{let t=e.length>=2&&e[1].data!==0?e[1].getFloat32Array()[0]:Gr,r=e.length>=3&&e[2].data!==0?e[2].getFloat32Array()[0]:Lr;return ge({min:t,max:r})},ri=(e,t)=>{let r=e.inputs.length===1?t:Yd(e.inputs),o=lt(e.inputs[0].dataType);e.compute(Ae(e.inputs[0],"Clip",n=>`clamp(${n}, clip_min_, clip_max_)`,`\n const clip_min_: vec4<${o}> = vec4(${o}(${r.min}));\n const clip_max_: vec4<${o}> = vec4(${o}(${r.max}));\n`,r.cacheKey),{inputs:[0]})},ni=e=>{e.compute(Ae(e.inputs[0],"Ceil","ceil"))},oi=e=>{e.compute(Ae(e.inputs[0],"Cos","cos"))},ai=e=>{e.compute(Ae(e.inputs[0],"Cosh","cosh"))},Yr=e=>ge(e),ii=(e,t)=>{let r=lt(e.inputs[0].dataType);e.compute(Ae(e.inputs[0],"Elu",o=>`elu_vf32(${o})`,`\n const elu_alpha_ = ${r}(${t.alpha});\n\n fn elu_f32(a: ${r}) -> ${r} {\n return select((exp(a) - 1.0) * elu_alpha_, a, a >= 0.0);\n }\n\n fn elu_vf32(v: vec4<${r}>) -> vec4<${r}> {\n return vec4(elu_f32(v.x), elu_f32(v.y), elu_f32(v.z), elu_f32(v.w));\n }`,t.cacheKey))},Zr=(e,t="f32")=>`\nconst r0: ${t} = 0.3275911;\nconst r1: ${t} = 0.254829592;\nconst r2: ${t} = -0.284496736;\nconst r3: ${t} = 1.421413741;\nconst r4: ${t} = -1.453152027;\nconst r5: ${t} = 1.061405429;\n\nfn erf_vf32(v: ${e}) -> ${e} {\n let absv = abs(v);\n let x = 1.0 / (1.0 + r0 * absv);\n return sign(v) * (1.0 - ((((r5 * x + r4) * x + r3) * x + r2) * x + r1) * x * exp(-absv * absv));\n}`,si=e=>{let t=lt(e.inputs[0].dataType);e.compute(Ae(e.inputs[0],"Erf",r=>`erf_vf32(${r})`,Zr(`vec4<${t}>`,t)))},ui=e=>{e.compute(Ae(e.inputs[0],"Exp","exp"))},di=e=>{e.compute(Ae(e.inputs[0],"Floor","floor"))},li=e=>{let t=lt(e.inputs[0].dataType);e.compute(Ae(e.inputs[0],"Gelu",r=>`0.5 * ${r} * (1.0 + erf_vf32(${r} * 0.7071067811865475))`,Zr(`vec4<${t}>`,t)))},ci=(e,t)=>{let r=lt(e.inputs[0].dataType);e.compute(Ae(e.inputs[0],"LeakyRelu",o=>`select(leaky_relu_alpha_ * ${o}, ${o}, ${o} >= vec4<${r}>(0.0))`,`const leaky_relu_alpha_ = ${r}(${t.alpha});`,t.cacheKey))},pi=e=>{e.compute(Ae(e.inputs[0],"Not",t=>`!${t}`))},mi=e=>{e.compute(Ae(e.inputs[0],"Neg",t=>`-${t}`))},fi=e=>{e.compute(Ae(e.inputs[0],"Reciprocal",t=>`1.0/${t}`))},hi=e=>{let t=lt(e.inputs[0].dataType);e.compute(Ae(e.inputs[0],"Relu",r=>`select(vec4<${t}>(0.0), ${r}, ${r} > vec4<${t}>(0.0))`))},gi=e=>{e.compute(Ae(e.inputs[0],"Sigmoid",t=>`(1.0 / (1.0 + exp(-${t})))`))},yi=e=>{e.compute(Ae(e.inputs[0],"Sin","sin"))},bi=e=>{e.compute(Ae(e.inputs[0],"Sinh","sinh"))},wi=e=>{e.compute(Ae(e.inputs[0],"Sqrt","sqrt"))},vi=e=>{e.compute(Ae(e.inputs[0],"Tan","tan"))},$i=e=>{e.compute(Ae(e.inputs[0],"Tanh","tanh"))},Si=(e,t)=>{let r=lt(e.inputs[0].dataType);return e.compute(Ae(e.inputs[0],"ThresholdedRelu",o=>`select(vec4<${r}>(0.0), ${o}, ${o} > thresholded_relu_alpha_)`,`const thresholded_relu_alpha_ = vec4<${r}>(${t.alpha});`,t.cacheKey)),0},xi=e=>{e.compute(Ae(e.inputs[0],"Log","log"))}});var Qd,Xd,_i,Ci=j(()=>{"use strict";$e();ve();Vn();Qd=e=>{if(e[0].dims.length!==3)throw new Error("input should have 3 dimensions");if(![2560,5120,10240].includes(e[0].dims[2]))throw new Error("hidden state should be 2560, 5120 or 10240");if(e[1].dims.length!==1)throw new Error("bias is expected to have 1 dimensions");if(e[0].dims[2]!==e[1].dims[0])throw new Error("last dimension of input and bias are not the same")},Xd=e=>{let t=e[0].dims.slice();t[2]=t[2]/2;let r=M("input",e[0].dataType,e[0].dims,4),o=M("bias",e[0].dataType,[e[0].dims[2]],4),n=F("output",e[0].dataType,t,4),s=U.size(t)/4,u=Le(e[0].dataType);return{name:"BiasSplitGelu",getRunData:()=>({outputs:[{dims:t,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(s/64)}}),getShaderSource:a=>`\n const M_SQRT2 = sqrt(2.0);\n const halfChannels = ${e[0].dims[2]/4/2}u;\n\n ${a.declareVariables(r,o,n)}\n\n ${Zr(`vec4<${u}>`,u)}\n\n ${a.mainStart()}\n ${a.guardAgainstOutOfBoundsWorkgroupSizes(s)}\n let biasIdx = global_idx % halfChannels;\n let batchIndex = global_idx / halfChannels;\n let inputOffset = biasIdx + batchIndex * halfChannels * 2;\n let valueLeft = input[inputOffset] + bias[biasIdx];\n let valueRight = input[inputOffset + halfChannels] + bias[biasIdx + halfChannels];\n let geluRight = valueRight * 0.5 * (erf_vf32(valueRight / M_SQRT2) + 1);\n\n ${n.setByOffset("global_idx","valueLeft * geluRight")}\n }`}},_i=e=>{Qd(e.inputs),e.compute(Xd(e.inputs))}});var Jd,el,ht,Ii,Ai,Ti,Ei,Oi,Pi,ki,Ri,Bi,Di,Mi=j(()=>{"use strict";Ne();$e();ve();Jd=(e,t,r,o,n,s,u,l,a,p,h,g,b)=>{let w,y;typeof l=="string"?w=y=(R,V)=>`${l}((${R}),(${V}))`:typeof l=="function"?w=y=l:(w=l.scalar,y=l.vector);let _=g?t.length:t,I=g?r.length:r,$=g?o.length:o,x=F("outputData",h,$,4),E=M("aData",a,_,4),A=M("bData",p,I,4),z;if(n)if(s){let R=U.size(t)===1,V=U.size(r)===1,T=t.length>0&&t[t.length-1]%4===0,N=r.length>0&&r[r.length-1]%4===0;R||V?z=x.setByOffset("global_idx",y(R?`${E.type.value}(${E.getByOffset("0")}.x)`:E.getByOffset("global_idx"),V?`${A.type.value}(${A.getByOffset("0")}.x)`:A.getByOffset("global_idx"))):z=`\n let outputIndices = ${x.offsetToIndices("global_idx * 4u")};\n let offsetA = ${E.broadcastedIndicesToOffset("outputIndices",x)};\n let offsetB = ${A.broadcastedIndicesToOffset("outputIndices",x)};\n ${x.setByOffset("global_idx",y(u||T?E.getByOffset("offsetA / 4u"):`${E.type.value}(${E.getByOffset("offsetA / 4u")}[offsetA % 4u])`,u||N?A.getByOffset("offsetB / 4u"):`${A.type.value}(${A.getByOffset("offsetB / 4u")}[offsetB % 4u])`))}\n `}else z=x.setByOffset("global_idx",y(E.getByOffset("global_idx"),A.getByOffset("global_idx")));else{if(!s)throw new Error("no necessary to use scalar implementation for element-wise binary op implementation.");let R=(V,T,N="")=>{let te=`aData[indexA${T}][componentA${T}]`,Y=`bData[indexB${T}][componentB${T}]`;return`\n let outputIndices${T} = ${x.offsetToIndices(`global_idx * 4u + ${T}u`)};\n let offsetA${T} = ${E.broadcastedIndicesToOffset(`outputIndices${T}`,x)};\n let offsetB${T} = ${A.broadcastedIndicesToOffset(`outputIndices${T}`,x)};\n let indexA${T} = offsetA${T} / 4u;\n let indexB${T} = offsetB${T} / 4u;\n let componentA${T} = offsetA${T} % 4u;\n let componentB${T} = offsetB${T} % 4u;\n ${V}[${T}] = ${N}(${w(te,Y)});\n `};h===9?z=`\n var data = vec4(0);\n ${R("data",0,"u32")}\n ${R("data",1,"u32")}\n ${R("data",2,"u32")}\n ${R("data",3,"u32")}\n outputData[global_idx] = dot(vec4(0x1, 0x100, 0x10000, 0x1000000), vec4(data));`:z=`\n ${R("outputData[global_idx]",0)}\n ${R("outputData[global_idx]",1)}\n ${R("outputData[global_idx]",2)}\n ${R("outputData[global_idx]",3)}\n `}return`\n ${e.registerUniform("vec_size","u32").declareVariables(E,A,x)}\n\n ${b??""}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")}\n ${z}\n }`},el=(e,t,r,o,n,s,u=r.dataType)=>{let l=!U.areEqual(r.dims,o.dims),a=r.dims,p=U.size(r.dims),h=!1,g=!1,b=[l];if(l){let y=dt.calcShape(r.dims,o.dims,!1);if(!y)throw new Error("Can\'t perform binary op on the given tensors");a=y,p=U.size(a);let _=U.size(r.dims)===1,I=U.size(o.dims)===1,$=r.dims.length>0&&r.dims[r.dims.length-1]%4===0,x=o.dims.length>0&&o.dims[o.dims.length-1]%4===0;b.push(_),b.push(I),b.push($),b.push(x);let E=1;for(let A=1;Ay.toString()).join("_"),inputDependencies:w?["rank","rank"]:["dims","dims"]},getShaderSource:y=>Jd(y,r.dims,o.dims,a,h,l,g,n,r.dataType,o.dataType,u,w,s),getRunData:()=>({outputs:[{dims:a,dataType:u}],dispatchGroup:{x:Math.ceil(p/64/4)},programUniforms:w?[{type:"uint32",data:Math.ceil(U.size(a)/4)},...L(r.dims),...L(o.dims),...L(a)]:[{type:"uint32",data:Math.ceil(U.size(a)/4)}]})}},ht=(e,t,r,o,n,s)=>{e.compute(el(t,n??"",e.inputs[0],e.inputs[1],r,o,s))},Ii=e=>{ht(e,"Add",(t,r)=>`${t}+${r}`)},Ai=e=>{ht(e,"Div",(t,r)=>`${t}/${r}`)},Ti=e=>{ht(e,"Equal",{scalar:(t,r)=>`u32(${t}==${r})`,vector:(t,r)=>`vec4(${t}==${r})`},void 0,void 0,9)},Ei=e=>{ht(e,"Mul",(t,r)=>`${t}*${r}`)},Oi=e=>{let t=M("input",e.inputs[0].dataType,e.inputs[0].dims).type.value;ht(e,"Pow",{scalar:(o,n)=>`pow_custom(${o},${n})`,vector:(o,n)=>`pow_vector_custom(${o},${n})`},`\n fn pow_custom(a : ${t}, b : ${t}) -> ${t} {\n if (b == ${t}(0.0)) {\n return ${t}(1.0);\n } else if (a < ${t}(0.0) && f32(b) != floor(f32(b))) {\n return ${t}(pow(f32(a), f32(b))); // NaN\n }\n return select(sign(a), ${t}(1.0), round(f32(abs(b) % ${t}(2.0))) != 1.0) * ${t}(${t==="i32"?"round":""}(pow(f32(abs(a)), f32(b))));\n }\n fn pow_vector_custom(a : vec4<${t}>, b : vec4<${t}>) -> vec4<${t}> {\n // TODO: implement vectorized pow\n return vec4<${t}>(pow_custom(a.x, b.x), pow_custom(a.y, b.y), pow_custom(a.z, b.z), pow_custom(a.w, b.w));\n }\n `)},Pi=e=>{ht(e,"Sub",(t,r)=>`${t}-${r}`)},ki=e=>{ht(e,"Greater",{scalar:(t,r)=>`u32(${t}>${r})`,vector:(t,r)=>`vec4(${t}>${r})`},void 0,void 0,9)},Ri=e=>{ht(e,"Less",{scalar:(t,r)=>`u32(${t}<${r})`,vector:(t,r)=>`vec4(${t}<${r})`},void 0,void 0,9)},Bi=e=>{ht(e,"GreaterOrEqual",{scalar:(t,r)=>`u32(${t}>=${r})`,vector:(t,r)=>`vec4(${t}>=${r})`},void 0,void 0,9)},Di=e=>{ht(e,"LessOrEqual",{scalar:(t,r)=>`u32(${t}<=${r})`,vector:(t,r)=>`vec4(${t}<=${r})`},void 0,void 0,9)}});var rl,nl,ol,al,zi,Ui,Vi=j(()=>{"use strict";$e();je();ve();rl=e=>{if(!e||e.length<1)throw new Error("too few inputs");let t=e[0].dataType,r=e[0].dims.length;for(let o of e){if(o.dataType!==t)throw new Error("input tensors should be one type");if(o.dims.length!==r)throw new Error("input tensors should have the same shape")}},nl=(e,t)=>`\n fn calculateInputIndex(index: u32) -> u32 {\n let sizeInConcatAxis = array(${t});\n for (var i: u32 = 0u; i < ${e}; i += 1u ) {\n if (index < sizeInConcatAxis[i]) {\n return i;\n }\n }\n return ${e}u;\n }`,ol=(e,t)=>{let r=e.length,o=[];for(let n=0;n{let r=e[0].dims.slice();if(t>=r.length||t<-1*r.length)throw new Error("axis specified for concat doesn\'t match input dimensionality");let o=t<0?r.length+t:t,n=r.slice(0);for(let A=1;A`uniforms.sizeInConcatAxis${A}`).join(","),E=A=>`\n\n ${(()=>{A.registerUniform("outputSize","u32");for(let z=0;z(${x});\n ${$} -= sizeInConcatAxis[inputIndex - 1u];\n }\n\n ${ol(l,I)}\n }`;return{name:"Concat",shaderCache:{hint:`${t}`,inputDependencies:h},getRunData:()=>({outputs:[{dims:n,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(s/64)},programUniforms:w}),getShaderSource:E}},zi=(e,t)=>{rl(e.inputs),e.compute(al(e.inputs,t.axis))},Ui=e=>ge({axis:e.axis})});var gt,Qr,It=j(()=>{"use strict";$e();gt=(e,t)=>{switch(e.activation){case"Relu":return{activationFunction:"",applyActivation:`value = max(value, ${t}(0.0));`};case"Sigmoid":return{activationFunction:"",applyActivation:`value = (${t}(1.0) / (${t}(1.0) + exp(-value)));`};case"Clip":return{activationFunction:`const clip_min_=${t}(${e.clipMin});const clip_max_=${t}(${e.clipMax});`,applyActivation:"value = clamp(value, clip_min_, clip_max_);"};default:return{activationFunction:"",applyActivation:""}}},Qr=e=>{let t=e?.activation||"";if(t==="Clip"){let[r,o]=e?.activation_params||[Gr,Lr];return{activation:t,clipMax:o,clipMin:r,activationCacheKey:`${t}:${r},${o}`}}return{activation:t,activationCacheKey:t}}});var Ke,Xr,Jr=j(()=>{"use strict";Ke=(e,t)=>{switch(e){case 1:return t;case 2:return`vec2<${t}>`;case 3:return`vec3<${t}>`;case 4:return`vec4<${t}>`;default:throw new Error(`${e}-component is not supported.`)}},Xr=e=>`\n ${e?"value = value + getBiasByOutputCoords(coords);":""}\n `});var en,Nn=j(()=>{"use strict";en=e=>`\nfn getIndexFromCoords4D(coords : vec4, shape : vec4) -> i32 {\n return dot(coords, vec4(\n shape.y * shape.z * shape.w, shape.z * shape.w, shape.w, 1));\n}\nfn getOutputIndexFromCoords(coords : vec4) -> i32 {\n return dot(coords, vec4(\n i32(${e}.x), i32(${e}.y), i32(${e}.z), 1));\n}\n`});var il,sl,mr,Ni,ul,fr,dl,tn,hr=j(()=>{"use strict";$e();ve();It();Jr();il=(e,t)=>e?`\n mm_Asub[inputRow][inputCol] = mm_readA(batch,\n kStart + inputRow,\n globalRowStart / innerElementSize + inputCol${t?", batchIndices":""});\n `:`\n mm_Asub[inputRow][inputCol] = mm_readA(batch,\n globalRow + innerRow,\n kStart / innerElementSize + inputCol${t?", batchIndices":""});\n `,sl=(e,t)=>e?`\n let ACached0 = mm_Asub[k * innerElementSize][localRow];\n let ACached1 = mm_Asub[k * innerElementSize + 1][localRow];\n let ACached2 = mm_Asub[k * innerElementSize + 2][localRow];\n ${t===3?"":"let ACached3 = mm_Asub[k * innerElementSize + 3][localRow];"}\n for (var i = 0; i < rowPerThread; i = i + 1) {\n acc[i] = BCached0 * ACached0[i] + acc[i];\n acc[i] = BCached1 * ACached1[i] + acc[i];\n acc[i] = BCached2 * ACached2[i] + acc[i];\n ${t===3?"":"acc[i] = BCached3 * ACached3[i] + acc[i];"}\n }`:`\n for (var i = 0; i < rowPerThread; i = i + 1) {\n let ACached = mm_Asub[tileRow + i][k];\n acc[i] = BCached0 * ACached.x + acc[i];\n acc[i] = BCached1 * ACached.y + acc[i];\n acc[i] = BCached2 * ACached.z + acc[i];\n ${t===3?"":"acc[i] = BCached3 * ACached.w + acc[i];"}\n }`,mr=(e,t,r="f32",o,n=!1,s=32,u=!1,l=32)=>{let a=t[1]*e[1],p=t[0]*e[0],h=n?a:s,g=n?s:a,b=h/t[0],w=s/t[1];if(!((n&&b===4&&e[1]===4||!n&&(b===3||b===4))&&h%t[0]===0&&s%t[1]===0&&e[0]===4))throw new Error(`If transposeA ${n} is true, innerElementSize ${b} and workPerThread[1] ${e[1]} must be 4.\n Otherwise, innerElementSize ${b} must be 3 or 4.\n tileAWidth ${h} must be divisible by workgroupSize[0]${t[0]}. tileInner ${s} must be divisible by workgroupSize[1] ${t[1]}. colPerThread ${e[0]} must be 4.`);return`\nvar mm_Asub: array, ${h/b}>, ${g}>;\nvar mm_Bsub: array, ${p/e[0]}>, ${s}>;\n\nconst rowPerThread = ${e[1]};\nconst colPerThread = ${e[0]};\nconst innerElementSize = ${b};\nconst tileInner = ${s};\n\n@compute @workgroup_size(${t[0]}, ${t[1]}, ${t[2]})\nfn main(@builtin(local_invocation_id) localId : vec3,\n @builtin(global_invocation_id) globalId : vec3,\n @builtin(workgroup_id) workgroupId : vec3) {\n let localRow = i32(localId.y);\n let tileRow = localRow * rowPerThread;\n let tileCol = i32(localId.x);\n\n let globalRow =i32(globalId.y) * rowPerThread;\n let globalCol = i32(globalId.x);\n let batch = ${u?"0":"i32(globalId.z)"};\n ${o?`let batchIndices = ${o.offsetToIndices("u32(batch)")};`:""}\n let globalRowStart = i32(workgroupId.y) * ${a};\n\n let numTiles = ${u?`${Math.ceil(l/s)}`:"(uniforms.dimInner - 1) / tileInner + 1"};\n var kStart = ${u?`i32(globalId.z) * ${l}`:"0"};\n\n var acc: array, rowPerThread>;\n\n // Loop over shared dimension.\n let tileRowB = localRow * ${w};\n for (var t = 0; t < numTiles; t = t + 1) {\n // Load one tile of A into local memory.\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n let inputRow = tileRow + innerRow;\n let inputCol = tileCol;\n ${il(n,o)}\n }\n\n // Load one tile of B into local memory.\n for (var innerRow = 0; innerRow < ${w}; innerRow = innerRow + 1) {\n let inputRow = tileRowB + innerRow;\n let inputCol = tileCol;\n mm_Bsub[inputRow][inputCol] = mm_readB(batch, kStart + inputRow, globalCol${o?", batchIndices":""});\n }\n kStart = kStart + tileInner;\n workgroupBarrier();\n\n // Compute acc values for a single thread.\n for (var k = 0; k < tileInner / innerElementSize; k = k + 1) {\n let BCached0 = mm_Bsub[k * innerElementSize][tileCol];\n let BCached1 = mm_Bsub[k * innerElementSize + 1][tileCol];\n let BCached2 = mm_Bsub[k * innerElementSize + 2][tileCol];\n ${b===3?"":"let BCached3 = mm_Bsub[k * innerElementSize + 3][tileCol];"}\n\n ${sl(n,b)}\n }\n\n workgroupBarrier();\n }\n\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n mm_write(batch, globalRow + innerRow, globalCol, acc[innerRow]);\n }\n}`},Ni=(e,t)=>e?`\n mm_Asub[inputRow][inputCol] = mm_readA(batch,\n kStart + inputRow,\n globalRowStart + inputCol${t?", batchIndices":""});\n `:`\n mm_Asub[inputRow][inputCol] = mm_readA(batch,\n globalRowStart + inputRow,\n kStart + inputCol${t?", batchIndices":""});\n `,ul=e=>e?"let ACached = mm_Asub[k][tileRow + innerRow];":"let ACached = mm_Asub[tileRow + innerRow][k];",fr=(e,t,r="f32",o,n=!1,s=32,u=!1,l=32,a=!1)=>{let p=e[1]*t[1],h=e[0]*t[0],g=n?p:s,b=n?s:p;if(!(b%t[1]===0&&g%t[0]===0&&s%t[1]===0))throw new Error(`tileAHight ${b} must be divisible by workgroupSize[1]${t[1]}, tileAWidth ${g} must be divisible by workgroupSize[0]${t[0]}, tileInner ${s} must be divisible by workgroupSize[1]${t[1]}`);let w=b/t[1],y=g/t[0],_=s/t[1],I=a?`\n let localRow = i32(localId.y);\n let localCol = i32(localId.x);\n let globalRowStart = i32(workgroupId.y) * ${p};\n let globalColStart = i32(workgroupId.x) * ${h};\n\n // Loop over shared dimension.\n for (var t = 0; t < numTiles; t = t + 1) {\n // Load one tile of A into local memory.\n for (var inputRow = localRow; inputRow < ${b}; inputRow = inputRow + ${t[1]}) {\n for (var inputCol = localCol; inputCol < ${g}; inputCol = inputCol + ${t[0]}) {\n ${Ni(n,o)}\n }\n }\n // Load one tile of B into local memory.\n for (var inputRow = localRow; inputRow < ${s}; inputRow = inputRow + ${t[1]}) {\n for (var inputCol = localCol; inputCol < ${h}; inputCol = inputCol + ${t[0]}) {\n mm_Bsub[inputRow][inputCol] = mm_readB(batch,\n kStart + inputRow,\n globalColStart + inputCol${o?", batchIndices":""});\n }\n }\n kStart = kStart + tileInner;\n workgroupBarrier();\n\n // Compute acc values for a single thread.\n var BCached : array<${r}, colPerThread>;\n for (var k = 0; k < tileInner; k = k + 1) {\n for (var inner = 0; inner < colPerThread; inner = inner + 1) {\n BCached[inner] = mm_Bsub[k][localCol + inner * ${t[0]}];\n }\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n let ACached = ${n?`mm_Asub[k][localRow + innerRow * ${t[1]}];`:`mm_Asub[localRow + innerRow * ${t[1]}][k];`}\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n acc[innerRow][innerCol] = acc[innerRow][innerCol] +\n ACached * BCached[innerCol];\n }\n }\n }\n workgroupBarrier();\n }\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n let gRow = globalRowStart + localRow + innerRow * ${t[1]};\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n let gCol = globalColStart + localCol + innerCol * ${t[0]};\n mm_write(batch, gRow, gCol, acc[innerRow][innerCol]);\n }\n }\n `:`\nlet tileRow = i32(localId.y) * rowPerThread;\nlet tileCol = i32(localId.x) * colPerThread;\n\nlet globalRow = i32(globalId.y) * rowPerThread;\nlet globalCol = i32(globalId.x) * colPerThread;\nlet globalRowStart = i32(workgroupId.y) * ${p};\n\nlet tileRowA = i32(localId.y) * ${w};\nlet tileColA = i32(localId.x) * ${y};\nlet tileRowB = i32(localId.y) * ${_};\n// Loop over shared dimension.\nfor (var t = 0; t < numTiles; t = t + 1) {\n // Load one tile of A into local memory.\n for (var innerRow = 0; innerRow < ${w}; innerRow = innerRow + 1) {\n for (var innerCol = 0; innerCol < ${y}; innerCol = innerCol + 1) {\n let inputRow = tileRowA + innerRow;\n let inputCol = tileColA + innerCol;\n ${Ni(n,o)}\n }\n }\n\n // Load one tile of B into local memory.\n for (var innerRow = 0; innerRow < ${_}; innerRow = innerRow + 1) {\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n let inputRow = tileRowB + innerRow;\n let inputCol = tileCol + innerCol;\n mm_Bsub[inputRow][inputCol] = mm_readB(batch,\n kStart + inputRow,\n globalCol + innerCol${o?", batchIndices":""});\n }\n }\n kStart = kStart + tileInner;\n workgroupBarrier();\n\n // Compute acc values for a single thread.\n var BCached : array<${r}, colPerThread>;\n for (var k = 0; k < tileInner; k = k + 1) {\n for (var inner = 0; inner < colPerThread; inner = inner + 1) {\n BCached[inner] = mm_Bsub[k][tileCol + inner];\n }\n\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n ${ul(n)}\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n acc[innerRow][innerCol] = acc[innerRow][innerCol] + ACached * BCached[innerCol];\n }\n }\n }\n\n workgroupBarrier();\n}\n\nfor (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n mm_write(batch, globalRow + innerRow, globalCol + innerCol,\n acc[innerRow][innerCol]);\n }\n}\n`;return`\n var mm_Asub : array, ${b}>;\n var mm_Bsub : array, ${s}>;\n const rowPerThread = ${e[1]};\n const colPerThread = ${e[0]};\n const tileInner = ${s};\n\n@compute @workgroup_size(${t[0]}, ${t[1]}, ${t[2]})\nfn main(@builtin(local_invocation_id) localId : vec3,\n @builtin(global_invocation_id) globalId : vec3,\n @builtin(workgroup_id) workgroupId : vec3) {\n let batch = ${u?"0":"i32(globalId.z)"};\n ${o?`let batchIndices = ${o.offsetToIndices("u32(batch)")};`:""}\n let numTiles = ${u?`${Math.ceil(l/s)}`:"(uniforms.dimInner - 1) / tileInner + 1"};\n var kStart = ${u?`i32(globalId.z) * ${l}`:"0"};\n\n var acc : array, rowPerThread>;\n\n // Without this initialization strange values show up in acc.\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n acc[innerRow][innerCol] = 0.0;\n }\n }\n ${I}\n }\n`},dl=(e,t,r,o,n,s=!1)=>{let[u,l,a]=n,[p,h,g,b]=o,w=Ft(u,a),y=Ft(l,a),_=Le(o[0].type.tensor),I=()=>{let E=h.rank,A=p.rank,z=`var aIndices: ${h.type.indices};`;for(let R=E-2-1,V=A-1;R>=0;R--,V--)z+=`\naIndices[${R}] = ${A>1?`batchIndices[${V}]`:"batchIndices"};`;return w.forEach(R=>{z+=`\naIndices[${R}] = 0;`}),z+=`\naIndices[${E-2}] = u32(row);\n aIndices[${E-1}] = u32(colIn);`,z},$=()=>{let E=g.rank,A=p.rank,z=`var bIndices: ${g.type.indices};`;for(let R=E-2-1,V=A-1;R>=0;R--,V--)z+=`\nbIndices[${R}] = ${A>1?`batchIndices[${V}]`:"batchIndices"};`;return y.forEach(R=>{z+=`\nbIndices[${R}] = 0;`}),z+=`\nbIndices[${E-2}] = u32(row);\n bIndices[${E-1}] = u32(colIn);`,z};return`\n fn mm_readA(batch: i32, row: i32, colIn: i32, batchIndices: ${p.type.indices}) -> ${Ke(e,_)} {\n var value = ${Ke(e,_)}(0.0);\n let col = colIn * ${e};\n if(row < uniforms.dimAOuter && col < uniforms.dimInner)\n {\n ${I()}\n value = ${h.getByIndices("aIndices")};\n }\n return value;\n }\n\n fn mm_readB(batch: i32, row: i32, colIn: i32, batchIndices: ${p.type.indices}) -> ${Ke(e,_)} {\n var value = ${Ke(e,_)}(0.0);\n let col = colIn * ${e};\n if(row < uniforms.dimInner && col < uniforms.dimBOuter)\n {\n ${$()}\n value = ${g.getByIndices("bIndices")};\n }\n return value;\n }\n\n fn mm_write(batch: i32, row: i32, colIn: i32, valueIn: ${Ke(e,_)}) {\n let col = colIn * ${e};\n if (row < uniforms.dimAOuter && col < uniforms.dimBOuter) {\n var value = valueIn;\n let coords = vec3(batch, row, colIn);\n ${t?`value = value + ${s?"bias[colIn]":`${Ke(e,_)}(bias[row])`};`:""}\n ${r}\n ${b.setByIndices("vec3(coords)","value")}\n }\n }\n `},tn=(e,t,r,o,n=!1)=>{let s=e[0].dims,u=e[1].dims,l=s.slice(0,-2),a=u.slice(0,-2),p=o?o.slice(0,-2):r.slice(0,-2),h=Re(p.length),g=h?p.length:p,b=Fr("batchDims",e[0].dataType,g,1),w=U.size(p),y=s[s.length-2],_=s[s.length-1],I=u[u.length-1],$=_%4===0&&I%4===0,x=y<=8?[4,1,1]:[4,4,1],E=[8,8,1],A=[Math.ceil(I/E[0]/x[0]),Math.ceil(y/E[1]/x[1]),Math.ceil(w/E[2]/x[2])],z=Le(e[0].dataType),R=$?4:1,V=[...l,y,_/R],T=Re(V.length),N=T?V.length:V,te=[...a,_,I/R],Y=Re(te.length),K=Y?te.length:te,Q=[w,y,I/R],Z=M("a",e[0].dataType,N,R),Ee=M("b",e[1].dataType,K,R),Pe=F("result",e[0].dataType,Q.length,R),fe=[Z,Ee],Ie=[{type:"int32",data:y},{type:"int32",data:I},{type:"int32",data:_}];h&&Ie.push(...L(p)),T&&Ie.push(...L(V)),Y&&Ie.push(...L(te));let he=[];he.push(T?"rank":"dims"),he.push(Y?"rank":"dims");let ye=e.length>2,{activationFunction:We,applyActivation:De}=gt(t,Pe.type.value),Ge=dl(R,ye,De,[b,Z,Ee,Pe],[l,a,p],n);if(ye){let ee=n?R:1;fe.push(M("bias",e[2].dataType,e[2].dims.length,ee)),Ie.push(...L(e[2].dims)),he.push("rank")}Ie.push(...L(Q));let G=ee=>`\n ${ee.registerUniform("dimAOuter","i32").registerUniform("dimBOuter","i32").registerUniform("dimInner","i32").registerInternalVariables(b).declareVariables(...fe,Pe)}\n ${We}\n ${Ge}\n ${$?mr(x,E,z,b):fr(x,E,z,b)}\n `;return{name:"MatMul",shaderCache:{hint:t.activationCacheKey+`${x}${$}${n}`,inputDependencies:he},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:A[0],y:A[1],z:A[2]},programUniforms:Ie}),getShaderSource:G}}});var ll,Wi,Hi=j(()=>{"use strict";Ct();ve();It();Jr();Nn();hr();ll=(e,t,r,o,n=!1,s,u=4,l=4,a=4,p="f32")=>{let h=Y=>{switch(Y){case 1:return"resData = x[xIndex];";case 3:return`resData = vec3<${p}>(x[xIndex], x[xIndex + 1], x[xIndex + 2]);`;case 4:return"resData = x[xIndex / 4];";default:throw new Error(`innerElementSize ${Y} is not supported.`)}},g=Y=>{switch(Y){case 1:return"return w[row * i32(uniforms.w_shape[3]) + colIn];";case 4:return"return w[row * i32(uniforms.w_shape[3]) / 4 + colIn];";default:throw new Error(`innerElementSize ${Y} is not supported.`)}},b=e?`\n let coord = vec4(batch, xRow, xCol, xCh);\n `:`\n let coord = vec4(batch, xCh, xRow, xCol);\n `,w=e?`\n let coords = vec4(\n batch,\n row / outWidth,\n row % outWidth,\n col);\n `:`\n let coords = vec4(\n batch,\n row,\n col / outWidth,\n col % outWidth);\n `,y=e?"i32(uniforms.x_shape[1])":"i32(uniforms.x_shape[2])",_=e?"i32(uniforms.x_shape[2])":"i32(uniforms.x_shape[3])",I=e?"row":"col",$=e?"col":"row",x=`\n let inChannels = i32(uniforms.w_shape[2]);\n let outWidth = ${e?"i32(uniforms.result_shape[2])":"i32(uniforms.result_shape[3])"};\n let outRow = ${I} / outWidth;\n let outCol = ${I} % outWidth;\n\n let WRow = ${$} / (filterDims[1] * inChannels);\n let WCol = ${$} / inChannels % filterDims[1];\n let xRow = outRow * stride[0] + dilation[0] * WRow - pad[0];\n let xCol = outCol * stride[1] + dilation[1] * WCol - pad[1];\n let xCh = ${$} % inChannels;\n var resData = ${Ke(u,p)}(0.0);\n // The bounds checking is always needed since we use it to pad zero for\n // the \'same\' padding type.\n if (xRow >= 0 && xRow < ${y} && xCol >= 0 && xCol < ${_}) {\n ${b}\n let xIndex = getIndexFromCoords4D(coord, vec4(uniforms.x_shape));\n ${h(u)}\n }\n return resData;`,E=e?t&&o?`\n let col = colIn * ${u};\n ${x}`:`\n let col = colIn * ${u};\n if (row < uniforms.dimAOuter && col < uniforms.dimInner) {\n ${x}\n }\n return ${Ke(u,p)}(0.0);`:o&&r?`\n let col = colIn * ${u};\n ${x}`:`\n let col = colIn * ${u};\n if (row < uniforms.dimInner && col < uniforms.dimBOuter) {\n ${x}\n }\n return ${Ke(u,p)}(0.0);`,A=`${g(l)}`,z=Ke(a,p),R=e?Ke(u,p):Ke(l,p),V=e?Ke(l,p):Ke(u,p),{activationFunction:T,applyActivation:N}=gt(s,z);return`\n ${T}\n fn mm_readA(batch: i32, row : i32, colIn : i32) -> ${R} {\n ${e?E:A}\n }\n\n fn mm_readB(batch: i32, row : i32, colIn : i32) -> ${V} {\n ${e?A:E}\n }\n\n fn mm_write(batch: i32, row : i32, colIn : i32, valueIn : ${z}) {\n let col = colIn * ${a};\n if (row < uniforms.dimAOuter && col < uniforms.dimBOuter)\n {\n var value = valueIn;\n let outWidth = ${e?"i32(uniforms.result_shape[2])":"i32(uniforms.result_shape[3])"};\n ${w}\n ${Xr(n)}\n ${N}\n setOutputAtCoords(coords[0], coords[1], coords[2], coords[3], value);\n }\n }`},Wi=(e,t,r,o,n,s,u,l)=>{let a=t.format==="NHWC",p=a?e[0].dims[3]:e[0].dims[1],h=r[0],g=a?r[2]:r[3],b=a?r[1]:r[2],w=a?r[3]:r[1],y=a&&(p%4===0||p%3===0)&&w%4===0,_=a?w:g*b,I=a?g*b:w,$=[8,8,1],x=o<=8?[4,1,1]:[4,4,1],E=[Math.ceil(_/$[0]/x[0]),Math.ceil(I/$[1]/x[1]),Math.ceil(h/$[2]/x[2])];Be("verbose",()=>`[conv2d_mm_webgpu] dispatch = ${E}`);let A=y?a&&p%4!==0?3:4:1,z=$[1]*x[1],R=$[0]*x[0],V=Math.max($[0]*A,$[1]),T=o%z===0,N=n%R===0,te=s%V===0,Y=y?[A,4,4]:[1,1,1],K=Le(e[0].dataType),Q=y?4:1,Z=[{type:"int32",data:o},{type:"int32",data:n},{type:"int32",data:s}],Ee=M("x",e[0].dataType,e[0].dims.length,A===3?1:A),Pe=M("w",e[1].dataType,e[1].dims.length,Q),fe=[Ee,Pe];Z.push(...L(e[0].dims)),Z.push(...L(e[1].dims));let Ie=`\n fn setOutputAtIndex(flatIndex : i32, value : ${y?`vec4<${K}>`:K}) {\n result[flatIndex] = ${y?`vec4<${K}>`:K}(value);\n }\n fn setOutputAtCoords(d0 : i32, d1 : i32, d2 : i32, d3 : i32, value : ${y?`vec4<${K}>`:K}) {\n let flatIndex = getOutputIndexFromCoords(vec4(d0, d1, d2, d3));\n setOutputAtIndex(flatIndex ${y?"/ 4":""}, value);\n }`;if(u){let ye=M("bias",e[2].dataType,e[2].dims.length,Q);fe.push(ye),Z.push(...L(e[2].dims)),Ie+=`\n fn getBiasByOutputCoords(coords : vec4) -> ${y?`vec4<${K}>`:K} {\n return bias[coords.${a?"w":"y"}${y?"/ 4":""}];\n }`}let he=F("result",e[0].dataType,r.length,Q);return Z.push(...L(r)),{name:"Conv2DMatMul",shaderCache:{hint:t.cacheKey},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:E[0],y:E[1],z:E[2]},programUniforms:Z}),getShaderSource:ye=>`\n ${en("uniforms.result_strides")}\n //struct Uniforms { xShape : vec4, wShape : vec4, outShape : vec4,\n // outShapeStrides: vec3, filterDims : vec2, pad : vec2, stride : vec2,\n // dilation : vec2, dimAOuter : i32, dimBOuter : i32, dimInner : i32 };\n ${ye.registerUniform("dimAOuter","i32").registerUniform("dimBOuter","i32").registerUniform("dimInner","i32").declareVariables(...fe,he)}\n const filterDims : vec2 = vec2(${t.kernelShape[0]}, ${t.kernelShape[1]});\n const pad : vec2 = vec2(${t.pads[0]}, ${t.pads[1]});\n const stride : vec2 = vec2(${t.strides[0]}, ${t.strides[1]});\n const dilation : vec2 = vec2(${t.dilations[0]}, ${t.dilations[1]});\n ${Ie}\n ${ll(a,T,N,te,u,t,Y[0],Y[1],Y[2],K)}\n ${y?mr(x,$,K,void 0,!a,V):fr(x,$,K,void 0,!a,V,!1,void 0,l)}`}}});var Wn,Gi=j(()=>{"use strict";$e();ve();Gn();It();Wn=(e,t,r)=>{let o=e.length>2,n=o?"value += b[output_channel];":"",s=e[0].dims,u=e[1].dims,l=u[0]/t.group,a=t.format==="NHWC",p=Hn(s,u,t.dilations,t.pads,t.strides,a),h=U.size(p),g=F("output",e[0].dataType,p),{activationFunction:b,applyActivation:w}=gt(t,g.type.value),y=M("x",e[0].dataType,s),_=M("w",e[1].dataType,u),I=[y,_];o&&I.push(M("b",e[2].dataType,e[2].dims));let $=x=>`\n const strides: vec2 = vec2(${t.strides[0]}u, ${t.strides[1]}u);\n const pads: vec2 = vec2(${t.pads[0]}u, ${t.pads[1]}u);\n\n ${x.declareVariables(...I,g)}\n\n ${b}\n\n ${x.mainStart()}\n ${x.guardAgainstOutOfBoundsWorkgroupSizes(h)}\n\n let outputIndices = ${g.offsetToIndices("global_idx")};\n let batch: u32 = outputIndices[0];\n let output_channel: u32 = outputIndices[${a?3:1}];\n let xRCCorner: vec2 = vec2(outputIndices[${a?1:2}], outputIndices[${a?2:3}]) * strides - pads;\n let group_id: u32 = output_channel / ${l}u;\n\n var value: ${g.type.value} = ${g.type.value}(0);\n for (var wInChannel: u32 = 0u; wInChannel < ${u[1]}u; wInChannel++) {\n let input_channel = group_id * ${u[1]}u + wInChannel;\n for (var wHeight: u32 = 0u; wHeight < ${u[2]}u; wHeight++) {\n let xHeight = xRCCorner.x + wHeight * ${t.dilations[0]}u;\n\n if (xHeight < 0u || xHeight >= ${s[a?1:2]}u) {\n continue;\n }\n\n for (var wWidth: u32 = 0u; wWidth < ${u[3]}u; wWidth++) {\n let xWidth = xRCCorner.y + wWidth * ${t.dilations[1]}u;\n if (xWidth < 0u || xWidth >= ${s[a?2:3]}u) {\n continue;\n }\n\n let xVal = ${a?y.get("batch","xHeight","xWidth","input_channel"):y.get("batch","input_channel","xHeight","xWidth")};\n let wVal = ${_.get("output_channel","wInChannel","wHeight","wWidth")};\n value += xVal*wVal;\n }\n }\n }\n ${n}\n ${w}\n ${g.setByOffset("global_idx","value")}\n }`;return{name:"GroupedConv",shaderCache:{hint:t.cacheKey},getRunData:()=>({outputs:[{dims:r?r(p):p,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(h/64)}}),getShaderSource:$}}});var Ln,cl,Li,Fn=j(()=>{"use strict";$e();hr();ve();It();Ln=(e,t,r,o,n=!1)=>{let s=e[0].dims,u=e[1].dims,l=s[s.length-2],a=u[u.length-1],p=s[s.length-1],h=Fe(a),g=Fe(p),b=Fe(l),w=U.size(r)/h/b,y=e.length>2,_=o?o.slice(0,-2):r.slice(0,-2),$=[U.size(_),l,a],x=[{type:"uint32",data:w},{type:"uint32",data:l},{type:"uint32",data:a},{type:"uint32",data:p},...L(_),...L(s),...L(u)];y&&x.push(...L(e[2].dims)),x.push(...L($));let E=A=>{let z=Fr("batch_dims",e[0].dataType,_.length),R=M("a",e[0].dataType,s.length,g),V=M("b",e[1].dataType,u.length,h),T=F("output",e[0].dataType,$.length,h),{activationFunction:N,applyActivation:te}=gt(t,T.type.value),Y=[R,V],K="";if(y){let he=n?h:1;Y.push(M("bias",e[2].dataType,e[2].dims.length,he)),K=`${n?`value += bias[col / ${he}];`:`value += ${T.type.value}(bias[row + i]);`}`}let Q=s.slice(0,-2),Z=u.slice(0,-2),Ee=Ft(Q,_),Pe=Ft(Z,_),fe=(he,ye)=>{let We=he.rank,De=he.name;if(We===2)return`var ${De}_indices = ${he.type.indices}(0u, 0u);`;let Ge=z.rank,G=`var ${De}_indices: ${he.type.indices};`;for(let ee=We-2-1,be=Ge-1;ee>=0;ee--,be--)G+=`\n${De}_indices[${ee}] = ${Ge>1?`batch_indices[${be}]`:"batch_indices"};`;return ye.forEach(ee=>{G+=`\n${De}_indices[${ee}] = 0;`}),G+=`${De}_indices[${We-2}] = 0u;\n ${De}_indices[${We-1}] = 0u;`,G},Ie=()=>{let he=`var a_data: ${R.type.value};`;for(let ye=0;ye;\n for (var k: u32 = 0u; k < uniforms.K; k = k + ${g}) {\n ${Ie()}\n }\n for (var i = 0u; i < ${b}u; i++) {\n var value = values[i];\n ${K}\n ${te}\n let cur_indices = ${T.type.indices}(batch, row + i, col);\n let offset = ${T.indicesToOffset("cur_indices")};\n ${T.setByOffset(`offset / ${h}`,"value")};\n }\n }\n `};return{name:"MatMulNaive",shaderCache:{hint:`${t.activationCacheKey}_${h}_${g}_${b}_${n}`,inputDependencies:y?["rank","rank","rank"]:["rank","rank"]},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(w/64)},programUniforms:x}),getShaderSource:E}},cl=e=>{if(!e||e.length!==2)throw new Error("MatMul requires 2 inputs.");if(e[0].dims[e[0].dims.length-1]!==e[1].dims[e[1].dims.length-2])throw new Error("shared dimension does not match.")},Li=e=>{cl(e.inputs);let t=dt.calcShape(e.inputs[0].dims,e.inputs[1].dims,!0);if(!t)throw new Error("Can\'t use matmul on the given tensors");let r=t[t.length-1],o=e.inputs[0].dims[e.inputs[0].dims.length-1];r<8&&o<8?e.compute(Ln(e.inputs,{activation:"",activationCacheKey:""},t)):e.compute(tn(e.inputs,{activation:"",activationCacheKey:""},t))}});var Hn,Fi,pl,ji,jn,ml,fl,qn,Gn=j(()=>{"use strict";$e();je();Hi();hr();Gi();It();Fn();jt();Hn=(e,t,r,o,n,s)=>{let u=e[0],l=e.slice(s?1:2,s?3:4),a=l.length,p=t[0],g=t.slice(2).map((y,_)=>y+(y-1)*(r[_]-1)),w=l.map((y,_)=>y+o[_]+o[_+a]).map((y,_)=>Math.floor((y-g[_]+n[_])/n[_]));return w.splice(0,0,u),w.splice(s?3:1,0,p),w},Fi=[2,3,1,0],pl=(e,t)=>{if(!e||e.length!==2&&e.length!==3)throw new Error("Conv requires 2 or 3 inputs");if(e[0].dims.length!==4&&e[0].dims.length!==3)throw new Error("currently only support conv 1D and 2D");if(e[0].dims.length!==e[1].dims.length)throw new Error("filter does not have same dimension as input");let r=e[0].dims[t.format==="NHWC"?e[0].dims.length-1:1],o=e[1].dims[1]*t.group;if(r!==o)throw new Error("FILTER_IN_CHANNEL should be equal to DATA_CHANNEL");if(e.length===3&&(e[2].dims.length!==1||e[1].dims[0]!==e[2].dims[0]))throw new Error("invalid bias");let n=e[0].dims.length-2;if(t.dilations.length!==n)throw new Error(`dilations should be ${n}D`);if(t.strides.length!==n)throw new Error(`strides should be ${n}D`);if(t.pads.length!==n*2)throw new Error(`pads should be ${n*2}D`);if(t.kernelShape.length!==0&&t.kernelShape.length!==e[1].dims.length-2)throw new Error("invalid kernel shape")},ji=(e,t)=>{let r=e.kernelShape.slice();for(let s=2;s{let t=Qr(e),r=e.format,o=["NOTSET","VALID","SAME_UPPER","SAME_LOWER"][e.auto_pad],n=e.dilations,s=e.group,u=e.kernel_shape,l=e.pads,a=e.strides,p=e.w_is_const();return ge({autoPad:o,format:r,dilations:n,group:s,kernelShape:u,pads:l,strides:a,wIsConst:p,...t})},ml=(e,t,r)=>{let o=ji(r,t),n=r.format==="NHWC";if(r.group!==1){e.compute(Wn(t,o));return}let s=t.length===3,u=t[0].dims[n?1:2],l=t[0].dims[n?2:3],a=t[0].dims[n?3:1],p=t[1].dims[2],h=t[1].dims[3],g=Hn(t[0].dims,t[1].dims,r.dilations,o.pads,r.strides,n),b=g[n?1:2],w=g[n?2:3],y=g[n?3:1],_=n&&p===u&&h===l&&r.pads[0]===0&&r.pads[1]===0;if(_||p===1&&h===1&&r.dilations[0]===1&&r.dilations[1]===1&&r.strides[0]===1&&r.strides[1]===1&&r.pads[0]===0&&r.pads[1]===0){let R=g[0],V,T,N,te=[];if(n){let Q=e.kernelCustomData.wT??e.compute(it(t[1],Fi),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];if(r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=Q),_){let Z=u*l*a;V=t[0].reshape([1,R,Z]),T=Q.reshape([1,Z,y]),N=[1,R,y]}else V=t[0].reshape([R,u*l,a]),T=Q.reshape([1,a,y]),N=[R,b*w,y];te.push(V),te.push(T)}else V=t[0].reshape([R,a,u*l]),T=t[1].reshape([1,y,a]),N=[R,y,b*w],te.push(T),te.push(V);s&&te.push(t[2]);let Y=N[2],K=te[0].dims[te[0].dims.length-1];Y<8&&K<8?e.compute(Ln(te,o,g,N,n),{inputs:te}):e.compute(tn(te,o,g,N,n),{inputs:te});return}let I=!0,$=e.kernelCustomData.wT??e.compute(it(t[1],Fi),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=$);let x=[t[0],$];s&&x.push(t[2]);let E=n?b*w:y,A=n?y:b*w,z=p*h*a;e.compute(Wi(x,o,g,E,A,z,s,I),{inputs:x})},fl=(e,t)=>{let r=t.format==="NHWC",o=[e.inputs[0].reshape(r?[e.inputs[0].dims[0],1,e.inputs[0].dims[1],e.inputs[0].dims[2]]:[e.inputs[0].dims[0],e.inputs[0].dims[1],1,e.inputs[0].dims[2]]),e.inputs[1].reshape([e.inputs[1].dims[0],e.inputs[1].dims[1],1,e.inputs[1].dims[2]])];e.inputs.length===3&&o.push(e.inputs[2]);let n=[0,t.pads[0],0,t.pads[1]],s=[1].concat(t.strides),u=[1].concat(t.dilations),l=[1].concat(t.kernelShape),a=ji({...t,pads:n,strides:s,dilations:u,kernelShape:l},o);e.compute(Wn(o,a,p=>r?[p[0],p[2],p[3]]:[]))},qn=(e,t)=>{pl(e.inputs,t),e.inputs[0].dims.length===3?fl(e,t):ml(e,e.inputs,t)}});var hl,qi,Ki=j(()=>{"use strict";Ct();ve();It();Jr();Nn();hr();hl=(e,t=!1,r,o=4)=>{let n=Ke(o,"f32"),s=x=>{switch(x){case 1:return"return w[getIndexFromCoords4D(coord, vec4(uniforms.w_shape))];";case 4:return`\n let coord1 = vec4(coordX, coordY, col + 1, rowInner);\n let coord2 = vec4(coordX, coordY, col + 2, rowInner);\n let coord3 = vec4(coordX, coordY, col + 3, rowInner);\n let v0 = w[getIndexFromCoords4D(coord, vec4(uniforms.w_shape))];\n let v1 = w[getIndexFromCoords4D(coord1, vec4(uniforms.w_shape))];\n let v2 = w[getIndexFromCoords4D(coord2, vec4(uniforms.w_shape))];\n let v3 = w[getIndexFromCoords4D(coord3, vec4(uniforms.w_shape))];\n return vec4(v0, v1, v2, v3);\n `;default:throw new Error(`innerElementSize ${x} is not supported.`)}},u=e?`\n let coord = vec4(batch, iXR, iXC, xCh);\n `:`\n let coord = vec4(batch, xCh, iXR, iXC);\n `,l=e?`\n let coords = vec4(\n batch,\n row / outWidth,\n row % outWidth,\n col);\n `:`\n let coords = vec4(\n batch,\n row,\n col / outWidth,\n col % outWidth);\n `,a=e?"outBackprop[1]":"outBackprop[2]",p=e?"outBackprop[2]":"outBackprop[3]",h=e?"row":"col",g=e?"col":"row",b=`\n let inChannels = ${e?"outBackprop[3]":"outBackprop[1]"};\n let outWidth = ${e?"i32(uniforms.result_shape[2])":"i32(uniforms.result_shape[3])"};\n let outRow = ${h} / outWidth;\n let outCol = ${h} % outWidth;\n\n let WRow = ${g} / (filterDims[1] * inChannels);\n let WCol = ${g} / inChannels % filterDims[1];\n let xR = f32(outRow - pads[0] + dilation[0] * WRow) / f32(strides[0]);\n let xC = f32(outCol - pads[1] + dilation[1] * WCol) / f32(strides[1]);\n if (xR < 0.0 || xR >= f32(${a}) || fract(xR) > 0.0) {\n return ${n}(0.0);\n }\n if (xC < 0.0 || xC >= f32(${p}) || fract(xC) > 0.0) {\n return ${n}(0.0);\n }\n let iXR = i32(xR);\n let iXC = i32(xC);\n let xCh = ${g} % inChannels;\n ${u}\n return x[getIndexFromCoords4D(coord, vec4(uniforms.x_shape))/${o}];`,w=e?`\n let col = colIn * ${o};\n if (row < uniforms.dimAOuter && col < uniforms.dimInner) {\n ${b}\n }\n return ${n}(0.0);`:`\n let col = colIn * ${o};\n if (row < uniforms.dimInner && col < uniforms.dimBOuter) {\n ${b}\n }\n return ${n}(0.0);`,y=`\n let col = colIn * ${o};\n let inChannels = ${e?"outBackprop[3]":"outBackprop[1]"};\n let coordX = filterDims.x - 1 - row / (filterDims[1] * inChannels);\n let coordY = filterDims.y - 1 - (row / inChannels) % filterDims[1];\n if (${e?"row < uniforms.dimInner && col < uniforms.dimBOuter":"row < uniforms.dimInner && col < uniforms.dimAOuter"} && coordX >= 0 && coordY >= 0) {\n let rowInner = row % inChannels;\n let coord = vec4(coordX, coordY, col, rowInner);\n ${s(o)}\n }\n return ${n}(0.0);\n `,{activationFunction:_,applyActivation:I}=gt(r,n);return`\n ${_}\n fn mm_readA(batch: i32, row : i32, colIn : i32) -> ${n} {\n ${e?w:y}\n }\n\n fn mm_readB(batch: i32, row : i32, colIn : i32) -> ${n} {\n ${e?y:w}\n }\n\n fn mm_write(batch: i32, row : i32, colIn : i32, valueInput : ${n}) {\n let col = colIn * ${o};\n if (row < uniforms.dimAOuter && col < uniforms.dimBOuter) {\n var value = valueInput;\n let outWidth = ${e?"i32(uniforms.result_shape[2])":"i32(uniforms.result_shape[3])"};\n ${l}\n ${Xr(t)}\n ${I}\n result[getIndexFromCoords4D(coords, vec4(uniforms.result_shape))/${o}] = value;\n }\n }`},qi=(e,t,r,o,n,s,u,l)=>{let a=t.format==="NHWC",p=a?e[0].dims[3]:e[0].dims[1],h=r[0],g=a?r[2]:r[3],b=a?r[1]:r[2],w=a?r[3]:r[1],y=a?p%4===0&&w%4===0:g%4===0&&w%4===0,_=a?w:g*b,I=a?g*b:w,$=y?[8,8,1]:[_<=4||I<=4?4:16,_>4&&I<=4?4:16,1],x=y?[4,4,1]:[_<=4?1:4,_>4&&I<=4?1:4,1],E=[Math.ceil(_/$[0]/x[0]),Math.ceil(I/$[1]/x[1]),Math.ceil(h/$[2]/x[2])];Be("verbose",()=>`[conv_backprop_mm_webgpu] dispatch = ${E}`);let A=y?4:1,z=Math.max($[0]*A,$[1]),R=y?4:1,V=[{type:"int32",data:o},{type:"int32",data:n},{type:"int32",data:s}],T=M("x",e[0].dataType,e[0].dims.length,R),N=M("w",e[1].dataType,e[1].dims.length,1),te=F("result",e[0].dataType,r.length,R),Y=[T,N];V.push(...L(e[0].dims)),V.push(...L(e[1].dims));let K="";if(u){let Q=M("bias",e[2].dataType,e[2].dims.length,R);Y.push(Q),V.push(...L(e[2].dims)),K+=`\n fn getBiasByOutputCoords(coords : vec4) -> ${y?"vec4":"f32"} {\n return bias[coords.${a?"w":"y"}${y?"/ 4":""}];\n }`}return V.push(...L(r)),{name:"Conv2DTransposeMatMul",shaderCache:{hint:t.cacheKey},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:E[0],y:E[1],z:E[2]},programUniforms:V}),getShaderSource:Q=>`\n ${en("uniforms.result_strides")}\n ${Q.registerUniform("dimAOuter","i32").registerUniform("dimBOuter","i32").registerUniform("dimInner","i32").declareVariables(...Y,te)};\n const outBackprop : vec4 = vec4(${e[0].dims.join(",")});\n const filterDims : vec2 = vec2(${t.kernelShape[a?1:2]}, ${t.kernelShape[a?2:3]});\n const effectiveFilterDims : vec2 = filterDims + vec2(\n ${t.dilations[0]<=1?0:(t.kernelShape[a?1:2]-1)*(t.dilations[0]-1)},\n ${t.dilations[1]<=1?0:(t.kernelShape[a?2:3]-1)*(t.dilations[1]-1)});\n const pads : vec2 = vec2(i32(effectiveFilterDims[0]) - 1 - (${t.pads[0]+t.pads[2]})/2,\n i32(effectiveFilterDims[1]) - 1 - (${t.pads[1]+t.pads[3]})/2);\n const strides : vec2 = vec2(${t.strides[0]}, ${t.strides[1]});\n const dilation : vec2 = vec2(${t.dilations[0]}, ${t.dilations[1]});\n const dimAOuter : i32 = ${o};\n const dimBOuter : i32 = ${n};\n const dimInner : i32 = ${s};\n ${K}\n ${hl(a,u,t,A)}\n ${y?mr(x,$,"f32",void 0,!a,z):fr(x,$,"f32",void 0,!a,z,!1,void 0,l)}`}}});var gl,Kn,Yi=j(()=>{"use strict";Ct();$e();ve();gl=(e,t,r,o,n,s,u=!1,l)=>{let a=r.format==="NHWC",p=a?1:2,h=a?2:3,g=a?3:1,b=U.size(o),w=u?2:1,y=r.group,_=t[1].dims,I=_[0]/y,$=_[1],x=`\n fn setOutputAtIndex(flatIndex : u32, value : ${u?`vec4<${l}>`:l}) {\n result[flatIndex] = ${u?`vec4<${l}>`:l}(value);\n }`;n&&(x+=`\n fn getBiasByOutputCoords(coords : vec4) -> ${u?`vec4<${l}>`:l} {\n return bias[coords.${a?"w":"y"}${u?"/ 4":""}];\n }`);let E=u?4:1,A=M("W",t[1].dataType,t[1].dims,E),z=M("Dy",t[0].dataType,t[0].dims,E),R=[z,A];n&&R.push(M("bias",t[2].dataType,[o[g]],E));let V=F("result",t[0].dataType,o,E),T=`{\n let batch: u32 = ${s?"global_id.z":"workgroup_id.z"} / outShape[1];\n let r = ${s?"global_id.z":"workgroup_id.z"} % outShape[1];\n let c = ${s?"global_id.y":"workgroup_id.y"} * ${w};\n let d1: u32 = ${s?"global_id.x":"workgroup_id.x"} * 4;\n\n let dyCorner = vec2(i32(r), i32(c)) - vec2(pads);\n\n // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).\n // ? = to be determined. : = across all values in that axis.\n var dotProd: array, ${w}>;\n for (var i = 0; i < ${w}; i++) {\n dotProd[i] = vec4<${l}>(0.0);\n }\n for (var wR: u32 = 0; wR < filterDims[0]; wR = wR + 1) {\n var dyR = (${l}(dyCorner.x) + ${l}(wR)) / ${l}(strides.x);\n let wRPerm = filterDims[0] - 1 - wR;\n if (dyR < 0.0 || dyR >= ${l}(outBackprop[1]) ||\n fract(dyR) > 0.0 || wRPerm < 0) {\n continue;\n }\n let idyR: u32 = u32(dyR);\n\n for (var wC: u32 = 0; wC < filterDims[1]; wC = wC + 1) {\n let dyC = (${l}(dyCorner.y) + ${l}(wC)) / ${l}(strides.y);\n let dyC2 = (${l}(dyCorner.y) + 1.0 + ${l}(wC)) / ${l}(strides.y);\n let wCPerm = filterDims[1] - 1 - wC;\n if (wCPerm < 0) {\n continue;\n }\n var bDyCVal = true;\n var bDyCVal2 = true;\n if (dyC < 0.0 || dyC >= ${l}(outBackprop[2]) ||\n fract(dyC) > 0.0) {\n bDyCVal = false;\n }\n if (dyC2 < 0.0 || dyC2 >= ${l}(outBackprop[2]) ||\n fract(dyC2) > 0.0) {\n bDyCVal2 = false;\n }\n\n let idyC: u32 = u32(dyC);\n let idyC2: u32 = u32(dyC2);\n if (bDyCVal && bDyCVal2) {\n let d2Length = outBackprop[3];\n for (var d2 :u32 = 0; d2 < d2Length; d2 = d2 + 4) {\n let wValue0 = ${A.get("u32(wRPerm)","u32(wCPerm)","d1","d2")};\n let wValue1 = ${A.get("u32(wRPerm)","u32(wCPerm)","d1 + 1","d2")};\n let wValue2 = ${A.get("u32(wRPerm)","u32(wCPerm)","d1 + 2","d2")};\n let wValue3 = ${A.get("u32(wRPerm)","u32(wCPerm)","d1 + 3","d2")};\n\n var xValue = ${z.get("batch","idyR","idyC","d2")};\n let tmpval = vec4<${l}>(dot(xValue, wValue0),\n dot(xValue, wValue1),\n dot(xValue, wValue2),\n dot(xValue, wValue3));\n dotProd[0] = dotProd[0] + tmpval;\n\n xValue = ${z.get("batch","idyR","idyC2","d2")};\n\n dotProd[1] = dotProd[1] + vec4<${l}>(dot(xValue, wValue0),\n dot(xValue, wValue1),\n dot(xValue, wValue2),\n dot(xValue, wValue3));\n }\n } else if (bDyCVal) {\n let d2Length = outBackprop[${g}];\n for (var d2: u32 = 0; d2 < d2Length; d2 = d2 + 4) {\n let wValue0 = ${A.get("u32(wRPerm)","u32(wCPerm)","d1","d2")};\n let wValue1 = ${A.get("u32(wRPerm)","u32(wCPerm)","d1 + 1","d2")};\n let wValue2 = ${A.get("u32(wRPerm)","u32(wCPerm)","d1 + 2","d2")};\n let wValue3 = ${A.get("u32(wRPerm)","u32(wCPerm)","d1 + 3","d2")};\n\n var xValue = ${z.get("batch","idyR","idyC","d2")};\n let tmpval = vec4<${l}>(dot(xValue, wValue0),\n dot(xValue, wValue1),\n dot(xValue, wValue2),\n dot(xValue, wValue3));\n dotProd[0] = dotProd[0] + tmpval;\n }\n } else if (bDyCVal2) {\n let d2Length = outBackprop[3];\n for (var d2: u32 = 0; d2 < d2Length; d2 = d2 + 4) {\n let wValue0 = ${A.get("u32(wRPerm)","u32(wCPerm)","d1","d2")};\n let wValue1 = ${A.get("u32(wRPerm)","u32(wCPerm)","d1 + 1","d2")};\n let wValue2 = ${A.get("u32(wRPerm)","u32(wCPerm)","d1 + 2","d2")};\n let wValue3 = ${A.get("u32(wRPerm)","u32(wCPerm)","d1 + 3","d2")};\n\n var xValue = ${z.get("batch","idyR","idyC2","d2")};\n let tmpval = vec4<${l}>(dot(xValue, wValue0),\n dot(xValue, wValue1),\n dot(xValue, wValue2),\n dot(xValue, wValue3));\n dotProd[1] = dotProd[1] + tmpval;\n }\n }\n }\n }\n\n for (var i: u32 = 0; i < ${w}; i = i + 1) {\n let value = dotProd[i] + ${n?"bias[c+i]":`vec4<${l}>(0.0)`};\n ${V.set("batch","r","c + i","d1","value")};\n }\n }`,N=`\n let outputIndices = ${V.offsetToIndices("global_idx")};\n let batch = ${V.indicesGet("outputIndices",0)};\n let d1 = ${V.indicesGet("outputIndices",g)};\n let r = ${V.indicesGet("outputIndices",p)};\n let c = ${V.indicesGet("outputIndices",h)};\n let dyCorner = vec2(i32(r), i32(c)) - pads;\n let dyRCorner = dyCorner.x;\n let dyCCorner = dyCorner.y;\n let groupId = d1 / ${$};\n let wOutChannel = d1 - groupId * ${$};\n // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).\n // ? = to be determined. : = across all values in that axis.\n var dotProd = ${l}(0.0);\n for (var wR: u32 = 0; wR < effectiveFilterDims.x; wR = wR + 1) {\n if (wR % dilations.x != 0) {\n continue;\n }\n let dyR = (${l}(dyRCorner) + ${l}(wR)) / ${l}(strides[0]);\n let wRPerm = filterDims.x - 1 - wR / dilations.x;\n if (dyR < 0.0 || dyR >= ${l}(outBackprop[${p}]) || fract(dyR) > 0.0 ||\n wRPerm < 0) {\n continue;\n }\n let idyR: u32 = u32(dyR);\n\n for (var wC: u32 = 0; wC < effectiveFilterDims.y; wC = wC + 1) {\n if (wC % dilations.y != 0) {\n continue;\n }\n let dyC = (${l}(dyCCorner) + ${l}(wC)) / ${l}(strides.y);\n let wCPerm = filterDims.y - 1 - wC / dilations.y;\n if (dyC < 0.0 || dyC >= ${l}(outBackprop[${h}]) ||\n fract(dyC) > 0.0 || wCPerm < 0) {\n continue;\n }\n let idyC: u32 = u32(dyC);\n var inputChannel = groupId * ${I};\n for (var d2: u32 = 0; d2 < ${I}; d2 = d2 + 1) {\n let xValue = ${a?z.get("batch","idyR","idyC","inputChannel"):z.get("batch","inputChannel","idyR","idyC")};\n let wValue = ${A.get("inputChannel","wOutChannel","u32(wRPerm)","u32(wCPerm)")};\n dotProd = dotProd + xValue * wValue;\n inputChannel = inputChannel + 1;\n }\n }\n }\n let value = dotProd + ${n?"bias[d1]":`${l}(0.0)`};\n ${V.setByOffset("global_idx","value")};\n `;return`\n ${e.declareVariables(...R,V)}\n ${x}\n const outShape : vec4 = vec4(${o.join(",")});\n const outBackprop : vec4 = vec4(${t[0].dims.join(",")});\n const strides : vec2 = vec2(${r.strides[0]}, ${r.strides[1]});\n const filterDims : vec2 = vec2(${r.kernelShape[a?1:2]}, ${r.kernelShape[a?2:3]});\n const dilations : vec2 = vec2(${r.dilations[0]}, ${r.dilations[1]});\n const effectiveFilterDims : vec2 = filterDims + vec2(\n ${r.dilations[0]<=1?0:(r.kernelShape[a?1:2]-1)*(r.dilations[0]-1)},\n ${r.dilations[1]<=1?0:(r.kernelShape[a?2:3]-1)*(r.dilations[1]-1)});\n const pads : vec2 = vec2(i32(effectiveFilterDims[0]) - 1 - (${r.pads[0]+r.pads[2]})/2,\n i32(effectiveFilterDims[1]) - 1 - (${r.pads[1]+r.pads[3]})/2);\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes(b)};\n ${u?T:N}}`},Kn=(e,t,r)=>{let o=e.length>2,n=t.outputShape,s=U.size(n),u=[Math.ceil(s/64),1,1];Be("verbose",()=>`[conv2d_backprop_webgpu] dispatch = ${u}`);let l=Le(e[0].dataType);return{name:"ConvTranspose2D",shaderCache:{hint:t.cacheKey},getRunData:()=>({dispatchGroup:{x:u[0],y:u[1],z:u[2]},outputs:[{dims:r?r(n):n,dataType:e[0].dataType}]}),getShaderSource:a=>gl(a,e,t,n,o,u[1]===1&&u[2]===1,!1,l)}}});var yl,bl,wl,Zi,Qi,vl,$l,Sl,xl,Xi,Ji=j(()=>{"use strict";je();Ki();Yi();It();jt();yl=(e,t,r,o,n,s)=>(e-1)*t+r+(o-1)*n+1-s,bl=(e,t,r,o,n)=>{let s=Math.floor(e/2);t==="SAME_UPPER"?(r[o]=s,r[n]=e-s):t==="SAME_LOWER"&&(r[o]=e-s,r[n]=s)},wl=(e,t,r,o,n,s,u,l,a,p)=>{let h=e.length-2,g=p.length===0;if(a.length===0)for(let y=0;y{let r=e.kernelShape.slice();if(e.kernelShape.length===0||e.kernelShape.reduce((b,w)=>b*w,1)===0){r.length=0;for(let b=2;bb+w,0)===0){let b=t[0].dims.length-2;a=new Array(b).fill(1)}let p=e.strides.slice();if(p.reduce((b,w)=>b+w,0)===0){let b=t[0].dims.length-2;p=new Array(b).fill(1)}wl(l,r,a,e.autoPad,e.group,n,p,o,u,s);let h=Object.assign({},e),g=e.cacheKey+[r.join("n,"),n.join(","),p.join(","),u.join(","),s.join(","),a.join(",")].join("_");return Object.assign(h,{kernelShape:r,pads:n,outputPadding:u,outputShape:s,dilations:a,strides:p,cacheKey:g}),h},Qi=e=>{let t=Qr(e),r=e.format,o=["NOTSET","VALID","SAME_UPPER","SAME_LOWER"][typeof e.autoPad>"u"?0:e.autoPad],n=e.dilations,s=e.group,u=e.kernelShape,l=e.pads,a=e.strides,p=e.wIsConst(),h=e.outputPadding,g=e.outputShape;return ge({autoPad:o,format:r,dilations:n,group:s,kernelShape:u,outputPadding:h,outputShape:g,pads:l,strides:a,wIsConst:p,...t})},vl=(e,t)=>{if(!e||e.length!==2&&e.length!==3)throw new Error("Conv requires 2 or 3 inputs");if(e[0].dims.length!==4&&e[0].dims.length!==3)throw new Error("currently only support 2-dimensional conv");if(e[0].dims.length!==e[1].dims.length)throw new Error("filter does not have same dimension as input");let r=e[0].dims[t.format==="NHWC"?e[0].dims.length-1:1],o=e[1].dims[0];if(r!==o)throw new Error("FILTER_IN_CHANNEL should be equal to DATA_CHANNEL");let n=e[1].dims[1]*t.group;if(e.length===3&&(e[2].dims.length!==1||e[2].dims[0]!==n))throw new Error("invalid bias");let s=e[0].dims.length-2;if(t.dilations.reduce((h,g)=>h+g,0)>0&&t.dilations.length!==s)throw new Error(`dilations should be ${s}D`);if(t.strides.reduce((h,g)=>h+g,0)>0&&t.strides.length!==s)throw new Error(`strides should be ${s}D`);if(t.pads.reduce((h,g)=>h+g,0)>0&&t.pads.length!==s*2)throw new Error(`pads should be ${s*2}D`);if(t.outputPadding.length!==s&&t.outputPadding.length!==0)throw new Error(`output_padding should be ${s}D`);if(t.kernelShape.reduce((h,g)=>h+g,0)>0&&t.kernelShape.length!==0&&t.kernelShape.length!==e[1].dims.length-2)throw new Error("invalid kernel shape");if(t.outputShape.length!==0&&t.outputShape.length!==e[0].dims.length-2)throw new Error("invalid output shape")},$l=[2,3,1,0],Sl=(e,t,r)=>{let o=Zi(r,t),n=r.format==="NHWC",s=o.outputShape,u=s[n?3:1],l=t[0].dims[n?3:1];if(o.group!==1||u===1&&l===1){e.compute(Kn(t,o));return}let a=s[n?1:2],p=s[n?2:3],h=t[1].dims[2],g=t[1].dims[3],b=n?a*p:u,w=n?u:a*p,y=h*g*l,_=!0,I=e.kernelCustomData.wT??e.compute(it(t[1],$l),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=I);let $=[t[0],I],x=t.length===3;x&&(!n&&t[2].dims.length===1?$.push(t[2].reshape([t[2].dims[0],1,1])):$.push(t[2])),e.compute(qi($,o,s,b,w,y,x,_),{inputs:$})},xl=(e,t)=>{let r=t.format==="NHWC",o=[e.inputs[0].reshape(r?[e.inputs[0].dims[0],1,e.inputs[0].dims[1],e.inputs[0].dims[2]]:[e.inputs[0].dims[0],e.inputs[0].dims[1],1,e.inputs[0].dims[2]]),e.inputs[1].reshape([e.inputs[1].dims[0],e.inputs[1].dims[1],1,e.inputs[1].dims[2]])];o.length===3&&o.push(e.inputs[2]);let n=t.kernelShape;(n.length===0||n[0]===0)&&(n=[e.inputs[1].dims[2]]);let s=t.dilations;(s.length===0||s[0]===0)&&(s=[1]);let u=t.strides;(u.length===0||u[0]===0)&&(u=[1]);let l=t.pads;l.length===0&&(l=[0,0]),l=[0,l[0],0,l[1]],u=[1].concat(u),s=[1].concat(s),n=[1].concat(n);let a=Zi({...t,pads:l,strides:u,dilations:s,kernelShape:n},o);e.compute(Kn(o,a,p=>r?[p[0],p[2],p[3]]:[p[0],p[1],p[3]]))},Xi=(e,t)=>{vl(e.inputs,t),e.inputs[0].dims.length===3?xl(e,t):Sl(e,e.inputs,t)}});var _l,es,ts,rs=j(()=>{"use strict";Ne();$e();je();ve();_l=(e,t,r,o)=>{let n=U.size(t),s=t.length,u=M("input",e,s),l=F("output",e,s),a=r.dataType===6?r.getInt32Array()[0]:Number(r.getBigInt64Array()[0]),p=U.normalizeAxis(a,s),h=g=>{let b=` i32(${u.indicesGet("inputIndices","uniforms.axis")}) `,w=ce("uniforms.input_shape","uniforms.axis",s),y=o.reverse?b+(o.exclusive?" + 1":""):"0",_=o.reverse?w:b+(o.exclusive?"":" + 1");return`\n ${g.registerUniform("outputSize","u32").registerUniform("axis","u32").declareVariables(u,l)}\n ${g.mainStart()}\n ${g.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n var inputIndices = ${l.offsetToIndices("global_idx")};\n var sum = ${l.type.value}(0);\n let first : i32 = ${y};\n let last : i32 = ${_};\n for (var i : i32 = first; i < last; i++) {\n ${u.indicesSet("inputIndices","uniforms.axis","u32(i)")};\n sum = sum + ${u.getByIndices("inputIndices")};\n }\n ${l.setByOffset("global_idx","sum")};\n }`};return{name:"CumSum",shaderCache:{hint:o.cacheKey,inputDependencies:["rank"]},getRunData:()=>({outputs:[{dims:t,dataType:e}],dispatchGroup:{x:Math.ceil(n/64)},programUniforms:[{type:"uint32",data:n},{type:"int32",data:p},...L(t),...L(t)]}),getShaderSource:h}},es=(e,t)=>{let r=e.inputs[0].dims,o=e.inputs[0].dataType,n=e.inputs[1];e.compute(_l(o,r,n,t),{inputs:[0]})},ts=e=>{let t=e.exclusive===1,r=e.reverse===1;return ge({exclusive:t,reverse:r})}});var Yn,rn,ns,Cl,Il,Zn,Qn,os,Al,as,is,ss=j(()=>{"use strict";$e();je();ve();Yn="[a-zA-Z]|\\\\.\\\\.\\\\.",rn="("+Yn+")+",ns="^"+rn+"$",Cl="("+rn+",)*"+rn,Il="^"+Cl+"$",Zn=class{constructor(t=-1){this.symbolToIndices=new Map,this.inputIndex=t}addSymbol(t,r){let o=this.symbolToIndices.get(t);o===void 0?o=[r]:o.push(r),this.symbolToIndices.set(t,o)}},Qn=class{constructor(t,r){this.equation=r;this.hasEllipsis=!1,this.symbolToInfo=new Map,this.lhs=new Array,this.outputDims=[];let[o,n]=r.includes("->")?r.split("->",2):[r,""];if(!o.match(RegExp(Il)))throw new Error("Invalid LHS term");if(o.split(",").forEach((l,a)=>{let p=t[a].dims.slice();if(!l.match(RegExp(ns)))throw new Error("Invalid LHS term");let h=this.processTerm(l,!0,p,a);this.lhs.push(h)}),n==="")n+=[...this.symbolToInfo.entries()].filter(([l,a])=>a.count===1||l==="...").map(([l])=>l).join("");else if(!n.match(RegExp(rn)))throw new Error("Invalid RHS");n.match(RegExp(Yn,"g"))?.forEach(l=>{if(l==="...")this.outputDims=this.outputDims.concat(this.ellipsisDims);else{let a=this.symbolToInfo.get(l);if(a===void 0)throw new Error("Invalid RHS symbol");this.outputDims.push(a.dimValue)}}),this.rhs=this.processTerm(n,!1,this.outputDims)}addSymbol(t,r,o){let n=this.symbolToInfo.get(t);if(n!==void 0){if(n.dimValue!==r&&n.count!==1)throw new Error("Dimension mismatch");n.count++,n.inputIndices.push(o)}else n={count:1,dimValue:r,inputIndices:[o]};this.symbolToInfo.set(t,n)}processTerm(t,r,o,n=-1){let s=o.length,u=!1,l=[],a=0;if(!t.match(RegExp(ns))&&!r&&t!=="")throw new Error("Invalid LHS term");let p=t.match(RegExp(Yn,"g")),h=new Zn(n);return p?.forEach((g,b)=>{if(g==="..."){if(u)throw new Error("Only one ellipsis is allowed per input term");u=!0;let w=s-p.length+1;if(w<0)throw new Error("Ellipsis out of bounds");if(l=o.slice(a,a+w),this.hasEllipsis){if(this.ellipsisDims.length!==l.length||this.ellipsisDims.toString()!==l.toString())throw new Error("Ellipsis dimensions mismatch")}else if(r)this.hasEllipsis=!0,this.ellipsisDims=l;else throw new Error("Ellipsis must be specified in the LHS");for(let y=0;ye+"_max",Al=(e,t,r,o,n)=>{let u=t.map((w,y)=>e[y]?w.length:w).map((w,y)=>M(`input${y}`,r,w)),l=U.size(n),a=Re(n.length),p=a?n.length:n,h=F("output",r,p),g=[...o.symbolToInfo.keys()].filter(w=>!o.rhs.symbolToIndices.has(w)),b=w=>{let y=[],_="var prod = 1.0;",I="var sum = 0.0;",$="sum += prod;",x=[],E=[],A=[],z=[],R=o.symbolToInfo.size===o.rhs.symbolToIndices.size;o.symbolToInfo.forEach((T,N)=>{if(o.rhs.symbolToIndices.has(N)){let te=o.rhs.symbolToIndices.get(N)?.[0];te!==void 0&&o.lhs.forEach((Y,K)=>{if(T.inputIndices.includes(K)){let Q=Y.symbolToIndices.get(N);if(Q===void 0)throw new Error("Invalid symbol error");Q.forEach(Z=>{y.push(`${u[K].indicesSet(`input${K}Indices`,Z,h.indicesGet("outputIndices",te))}`)})}})}else o.lhs.forEach((te,Y)=>{if(T.inputIndices.includes(Y)){let K=te.symbolToIndices.get(N);if(K===void 0)throw new Error("Invalid symbol error");K.forEach(Q=>{x.push(`${u[Y].indicesSet(`input${Y}Indices`,Q,`${N}`)}`)}),z.push(`prod *= ${u[Y].getByIndices(`input${Y}Indices`)};`)}}),E.push(`for(var ${N}: u32 = 0; ${N} < uniforms.${os(N)}; ${N}++) {`),A.push("}")});let V=R?[...y,`let sum = ${u.map((T,N)=>T.getByIndices(`input${N}Indices`)).join(" * ")};`]:[...y,I,...E,...x,_,...z,$,...A];return`\n ${w.registerUniforms(g.map(T=>({name:`${os(T)}`,type:"u32"}))).registerUniform("outputSize","u32").declareVariables(...u,h)}\n\n ${w.mainStart()}\n ${w.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n var outputIndices = ${h.offsetToIndices("global_idx")};\n ${u.map((T,N)=>`var input${N}Indices: ${u[N].type.indices};`).join(`\n`)}\n ${V.join(`\n`)};\n ${h.setByOffset("global_idx","sum")};\n }`};return{name:"Einsum",shaderCache:{hint:o.equation,inputDependencies:e.map(w=>w?"rank":"dims")},getRunData:()=>{let w=g.filter(_=>o.symbolToInfo.has(_)).map(_=>({type:"uint32",data:o.symbolToInfo.get(_)?.dimValue||0}));w.push({type:"uint32",data:l});let y=t.filter((_,I)=>e[I]).map((_,I)=>[...L(_)]).reduce((_,I)=>_.concat(I),w);return a&&y.push(...L(n)),{outputs:[{dims:n,dataType:r}],dispatchGroup:{x:Math.ceil(l/64)},programUniforms:y}},getShaderSource:b}},as=(e,t)=>{let r=new Qn(e.inputs,t.equation),o=e.inputs.map((u,l)=>Re(u.dims.length)),n=r.outputDims,s=e.inputs.map((u,l)=>u.dims);e.compute(Al(o,s,e.inputs[0].dataType,r,n))},is=e=>{let t=e.equation.replace(/\\s+/g,"");return ge({equation:t})}});var Tl,us,El,Ol,ds,ls=j(()=>{"use strict";Ne();$e();ve();Tl=e=>{if(!e||e.length!==2)throw new Error("Expand requires 2 input.");let t=e[0].dims,r=Array.from(e[1].getBigInt64Array(),Number),o=r.length{let r=e.length-t.length,o=[];for(let n=0;ne.length>t.length?us(e,t):us(t,e),Ol=e=>{let t=e[0].dims,r=Array.from(e[1].getBigInt64Array(),Number),o=El(t,r),n=e[0].dataType,s=n===9?4:1,u=Math.ceil(U.size(o)/s),l=Re(t.length),a=Re(o.length),p=g=>{let b=l?t.length:t,w=a?o.length:o,y=M("input",n,b,s),_=F("output",n,w,s),I;if(n===9){let $=(x,E,A="")=>`\n let outputIndices${E} = ${_.offsetToIndices(`outputOffset + ${E}u`)};\n let offset${E} = ${y.broadcastedIndicesToOffset(`outputIndices${E}`,_)};\n let index${E} = offset${E} / 4u;\n let component${E} = offset${E} % 4u;\n ${x}[${E}] = ${A}(${y.getByOffset(`index${E}`)}[component${E}]);\n `;I=`\n let outputOffset = global_idx * ${s};\n var data = vec4(0);\n ${$("data",0,"u32")}\n ${$("data",1,"u32")}\n ${$("data",2,"u32")}\n ${$("data",3,"u32")}\n ${_.setByOffset("global_idx","data")}\n }`}else I=`\n let outputIndices = ${_.offsetToIndices("global_idx")};\n let inputOffset = ${y.broadcastedIndicesToOffset("outputIndices",_)};\n ${_.setByOffset("global_idx",y.getByOffset("inputOffset"))}\n }`;return`\n ${g.registerUniform("vec_size","u32").declareVariables(y,_)}\n ${g.mainStart()}\n ${g.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")}\n ${I}`},h=[{type:"uint32",data:u}];return l&&h.push(...L(t)),a&&h.push(...L(o)),{name:"Expand",shaderCache:{hint:`${o.length}`,inputDependencies:[l?"rank":"dims"]},getShaderSource:p,getRunData:()=>({outputs:[{dims:o,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:h})}},ds=e=>{Tl(e.inputs),e.compute(Ol(e.inputs),{inputs:[0]})}});var Pl,kl,cs,ps,ms=j(()=>{"use strict";Ne();$e();je();ve();Pl=e=>{if(!e||e.length!==2)throw new Error("Gather requires 2 inputs.")},kl=(e,t)=>{let r=e[0].dims,o=e[1].dims,n=r.length,s=U.normalizeAxis(t.axis,n),u=r.slice(0);u.splice(s,1,...o);let l=r[s],a=e[0].dataType===9?4:1,p=Math.ceil(U.size(u)/a),h=Re(e[0].dims.length),g=h?e[0].dims.length:e[0].dims,b=Re(e[1].dims.length),w=b?e[1].dims.length:e[1].dims,y=Re(u.length),_=y?u.length:u,I=[{type:"uint32",data:p},{type:"int32",data:l},{type:"uint32",data:s}];h&&I.push(...L(e[0].dims)),b&&I.push(...L(e[1].dims)),y&&I.push(...L(u));let $=[];$.push(h?"rank":"dims"),$.push(b?"rank":"dims");let x=E=>{let A=M("data",e[0].dataType,g,a),z=M("inputIndices",e[1].dataType,w),R=F("output",e[0].dataType,_,a),V=N=>{let te=o.length,Y=`var indicesIndices${N} = ${z.type.indices}(0);`;for(let K=0;K1?`indicesIndices${N}[${K}]`:`indicesIndices${N}`} = ${u.length>1?`outputIndices${N}[uniforms.axis + ${K}]`:`outputIndices${N}`};`;Y+=`\n var idx${N} = ${z.getByIndices(`indicesIndices${N}`)};\n if (idx${N} < 0) {\n idx${N} = idx${N} + uniforms.axisDimLimit;\n }\n var dataIndices${N} = ${A.type.indices}(0);\n `;for(let K=0,Q=0;K1?`dataIndices${N}[${K}]`:`dataIndices${N}`} = u32(idx${N});`,Q+=te):(Y+=`${n>1?`dataIndices${N}[${K}]`:`dataIndices${N}`} = ${u.length>1?`outputIndices${N}[${Q}]`:`outputIndices${N}`};`,Q++);return Y},T;if(e[0].dataType===9){let N=(te,Y,K="")=>`\n let outputIndices${Y} = ${R.offsetToIndices(`outputOffset + ${Y}u`)};\n ${V(Y)};\n let offset${Y} = ${A.indicesToOffset(`dataIndices${Y}`)};\n let index${Y} = offset${Y} / 4u;\n let component${Y} = offset${Y} % 4u;\n ${te}[${Y}] = ${K}(${A.getByOffset(`index${Y}`)}[component${Y}]);\n `;T=`\n let outputOffset = global_idx * ${a};\n var value = vec4(0);\n ${N("value",0,"u32")}\n ${N("value",1,"u32")}\n ${N("value",2,"u32")}\n ${N("value",3,"u32")}\n ${R.setByOffset("global_idx","value")}\n `}else T=`\n let outputIndices = ${R.offsetToIndices("global_idx")};\n ${V("")};\n let value = ${A.getByIndices("dataIndices")};\n ${R.setByOffset("global_idx","value")};\n `;return`\n ${E.registerUniform("outputSize","u32").registerUniform("axisDimLimit","i32").registerUniform("axis","u32").declareVariables(A,z,R)}\n ${E.mainStart()}\n ${E.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n ${T}\n }`};return{name:"Gather",shaderCache:{hint:t.cacheKey,inputDependencies:$},getRunData:()=>({outputs:[{dims:u,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(p/64)},programUniforms:I}),getShaderSource:x}},cs=e=>ge({axis:e.axis}),ps=(e,t)=>{let r=e.inputs;Pl(r),e.compute(kl(e.inputs,t))}});var Rl,Bl,fs,hs,gs=j(()=>{"use strict";$e();je();ve();Rl=e=>{if(!e||e.length!==2)throw new Error("GatherElements requires 2 inputs.");if(e[0].dims.length<1)throw new Error("GatherElements requires that the data input be rank >= 1.");if(e[0].dims.length!==e[1].dims.length)throw new Error(`GatherElements requires that the data input and\n indices input tensors be of same rank.`)},Bl=(e,t)=>{let r=e[0].dims,o=e[0].dataType,n=r.length,s=e[1].dims,u=e[1].dataType,l=U.normalizeAxis(t.axis,n),a=r[l],p=s.slice(0),h=U.size(p),g=M("input",o,n),b=M("indicesInput",u,s.length),w=F("output",o,p.length),y=[{type:"uint32",data:h},{type:"int32",data:a},{type:"uint32",data:l}];return y.push(...L(r)),y.push(...L(s)),y.push(...L(p)),{name:"GatherElements",shaderCache:{inputDependencies:["rank","rank"]},getRunData:()=>({outputs:[{dims:p,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(h/64)},programUniforms:y}),getShaderSource:$=>`\n ${$.registerUniform("outputSize","u32").registerUniform("axisDimLimit","i32").registerUniform("axis","u32").declareVariables(g,b,w)}\n ${$.mainStart()}\n ${$.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n\n let outputIndices = ${w.offsetToIndices("global_idx")};\n\n var idx = ${b.getByOffset("global_idx")};\n if (idx < 0) {\n idx = idx + uniforms.axisDimLimit;\n }\n var inputIndices = ${g.type.indices}(outputIndices);\n ${g.indicesSet("inputIndices","uniforms.axis","u32(idx)")};\n let value = ${g.getByIndices("inputIndices")};\n\n ${w.setByOffset("global_idx","value")};\n }`}},fs=e=>ge({axis:e.axis}),hs=(e,t)=>{let r=e.inputs;Rl(r),e.compute(Bl(e.inputs,t))}});var Dl,Ml,ys,bs,ws=j(()=>{"use strict";$e();ve();Dl=e=>{if(!e)throw new Error("Input is missing");if(e.length<2||e.length>3)throw new Error("Invaid input number.");if(e.length===3&&e[2].dims.length>2)throw new Error("Invalid input shape of C");if(e[0].dataType!==e[1].dataType||e.length===3&&e[0].dataType!==e[2].dataType)throw new Error("Input types are mismatched")},Ml=(e,t)=>{let r=e[0].dims.slice(),o=e[1].dims.slice(),[n,s,u]=Hr.getShapeOfGemmResult(r,t.transA,o,t.transB,e.length===3?e[2].dims:void 0),l=[n,s];if(!l)throw new Error("Can\'t use gemm on the given tensors");let a=U.size(l),p=[{type:"uint32",data:a},{type:"uint32",data:n},{type:"uint32",data:s},{type:"uint32",data:u},{type:"float32",data:t.alpha},{type:"float32",data:t.beta}],h=["type","type"];e.length===3&&(p.push(...L(e[2].dims)),h.push("rank")),p.push(...L(l));let g=b=>{let w="";t.transA&&t.transB?w="value += a[k * uniforms.M + m] * b[n * uniforms.K + k];":t.transA&&!t.transB?w="value += a[k * uniforms.M + m] * b[k * uniforms.N + n];":!t.transA&&t.transB?w="value += a[m * uniforms.K + k] * b[n * uniforms.K + k];":!t.transA&&!t.transB&&(w="value += a[m * uniforms.K + k] * b[k * uniforms.N + n];");let y=t.alpha===1?"":"value *= uniforms.alpha;",_=M("a",e[0].dataType,e[0].dims),I=M("b",e[1].dataType,e[1].dims),$=_.type.value,x=null,E=[_,I];e.length===3&&(x=M("c",e[2].dataType,e[2].dims.length),E.push(x));let A=F("output",e[0].dataType,l.length);E.push(A);let z=[{name:"output_size",type:"u32"},{name:"M",type:"u32"},{name:"N",type:"u32"},{name:"K",type:"u32"},{name:"alpha",type:"f32"},{name:"beta",type:"f32"}];return`\n ${b.registerUniforms(z).declareVariables(...E)}\n\n ${b.mainStart()}\n ${b.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}\n\n let m = global_idx / uniforms.N;\n let n = global_idx % uniforms.N;\n\n var value = ${$}(0);\n for (var k: u32 = 0u; k < uniforms.K; k++) {\n ${w}\n }\n\n ${y}\n ${(()=>x!=null?`let cOffset = ${x.broadcastedIndicesToOffset("vec2(m, n)",A)}; value += ${$}(uniforms.beta) * ${x.getByOffset("cOffset")};`:"")()}\n output[global_idx] = value;\n }`};return{name:"Gemm",shaderCache:{hint:`${t.cacheKey}`,inputDependencies:h},getRunData:()=>({outputs:[{dims:l,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:p}),getShaderSource:g}},ys=e=>{let t=e.transA,r=e.transB,o=e.alpha,n=e.beta;return{transA:t,transB:r,alpha:o,beta:n,cacheKey:`${e.transA};${e.transB};${e.alpha===1}`}},bs=(e,t)=>{Dl(e.inputs),e.compute(Ml(e.inputs,t))}});var zl,Ul,Vl,vs,$s=j(()=>{"use strict";Ne();$e();ve();zl=(e,t)=>{let r=e[0].dims,o=r,n=2,s=U.sizeToDimension(r,n),u=U.sizeFromDimension(r,n),l=Fe(u),a=u/l,p=[r[0],r[1],a],h=["rank","type","type"],g=[{type:"uint32",data:u},{type:"uint32",data:a}];g.push(...L(p),...L(p));let b=w=>{let y=M("x",e[0].dataType,p.length,l),_=M("scale",e[1].dataType,e[1].dims),I=M("bias",e[2].dataType,e[2].dims),$=F("output",e[0].dataType,p.length,l),x=[y,_,I,$],E=y.type.value,A=l===1?"f32":`vec${l}`,z=64,R=[{name:"normSize",type:"u32"},{name:"normPackedSize",type:"u32"}];return`\n var meanShared : f32;\n var squaredNormShared : f32;\n var workgroupShared : array<${A}, ${z}>;\n const workgroupSize = ${z}u;\n ${w.registerUniforms(R).declareVariables(...x)}\n ${w.mainStart(z)}\n let norm = global_idx / workgroupSize;\n let batch = norm / uniforms.x_shape[1];\n let channel = norm % uniforms.x_shape[1];\n let localIndex = local_id.x;\n\n // initialize workgroup memory\n var initial = ${A}(0);\n for (var h = localIndex; h < uniforms.normPackedSize; h += workgroupSize) {\n initial = initial + ${A}(${y.get("batch","channel","h")});\n }\n workgroupShared[localIndex] = initial;\n workgroupBarrier();\n\n // Calculate the mean of current channel data.\n for (var currSize = workgroupSize >> 1; currSize > 0; currSize = currSize >> 1) {\n if (localIndex < currSize) {\n workgroupShared[localIndex] = workgroupShared[localIndex] + workgroupShared[localIndex + currSize];\n }\n workgroupBarrier();\n }\n if (localIndex == 0) {\n meanShared = ${Je("workgroupShared[0]",l)} / f32(uniforms.normSize);\n }\n workgroupBarrier();\n\n // reinitialize workgroup memory.\n initial = ${A}(0);\n for (var h = localIndex; h < uniforms.normPackedSize; h += workgroupSize) {\n let deviation = ${A}(${y.get("batch","channel","h")}) - ${A}(meanShared);\n initial = initial + deviation * deviation;\n }\n workgroupShared[localIndex] = initial;\n workgroupBarrier();\n\n // Calculate the sum of square of deviation of current channel data.\n for (var currSize = workgroupSize >> 1; currSize > 0; currSize = currSize >> 1) {\n if (localIndex < currSize) {\n workgroupShared[localIndex] = workgroupShared[localIndex] + workgroupShared[localIndex + currSize];\n }\n workgroupBarrier();\n }\n if (localIndex == 0) {\n squaredNormShared = ${Je("workgroupShared[0]",l)};\n }\n workgroupBarrier();\n\n let invStdDev = inverseSqrt(squaredNormShared / f32(uniforms.normSize) + f32(${t.epsilon}));\n let channelScale = invStdDev * f32(${_.getByOffset("channel")});\n let channelShift = f32(${I.getByOffset("channel")}) - meanShared * channelScale;\n for (var h = localIndex; h < uniforms.normPackedSize; h += workgroupSize) {\n let value = ${y.get("batch","channel","h")} * ${E}(${A}(channelScale)) + ${E}(${A}(channelShift));\n ${$.set("batch","channel","h","value")};\n }\n }`};return{name:"InstanceNormalization",shaderCache:{hint:`${t.epsilon};${l}`,inputDependencies:h},getRunData:()=>({outputs:[{dims:o,dataType:e[0].dataType}],dispatchGroup:{x:s},programUniforms:g}),getShaderSource:b}},Ul=(e,t,r,o,n,s,u,l)=>{let a=Fe(u),p=64,h=a===1?"vec2f":`mat2x${a}f`,g=a===1?"f32":`vec${a}f`,b=(R,V)=>`${h}(${R}, ${V})`,w=n*u/a,y=Math.ceil(s/p),_=["type"],I=[{type:"uint32",data:y},{type:"uint32",data:s},{type:"uint32",data:Math.floor(u/a)},{type:"uint32",data:Math.floor(s*u/a)}],$=R=>{let V=M("input",t.dataType,t.dims,a);return`\n ${R.declareVariables(V)}\n @group(0) @binding(1) var output : array<${h}>;\n struct Uniforms {wg_size:u32, H:u32, C:u32, image_size:u32};\n @group(0) @binding(2) var uniforms: Uniforms;\n\n ${R.mainStart(p)}\n let currentImageNumber = global_idx / ${p} / uniforms.C;\n let currentChannelNumber = (global_idx / ${p}) % uniforms.C;\n let wgId = global_idx % ${p};\n let wgOffset = wgId * uniforms.wg_size;\n if (wgOffset >= uniforms.H) {\n return;\n }\n let wgMax = min(wgOffset + uniforms.wg_size, uniforms.H);\n\n let offset = currentImageNumber * uniforms.image_size + currentChannelNumber;\n var sum = ${Ze("f32",a)};\n var squaredSum = ${Ze("f32",a)};\n for (var i: u32 = wgOffset; i < wgMax; i++) {\n let value = ${g}(input[offset + i * uniforms.C]);\n sum += value;\n squaredSum += value * value;\n }\n output[global_idx] = ${b("sum","squaredSum")};\n }`},x=e.compute({name:"InstanceNormComputeMean",shaderCache:{hint:`${a}`,inputDependencies:_},getRunData:()=>({outputs:[{dims:[n,u,p,2],dataType:1}],dispatchGroup:{x:n*u/a},programUniforms:I}),getShaderSource:$},{inputs:[t],outputs:[-1]})[0],E=[{type:"uint32",data:w},{type:"uint32",data:s},{type:"uint32",data:Math.floor(u/a)},{type:"uint32",data:Math.floor(p*u/a)}],A=["type","type","type"],z=R=>{let V=M("scale",r.dataType,r.dims,a),T=M("bias",o.dataType,o.dims,a);return`\n @group(0) @binding(0) var input : array<${h}>;\n @group(0) @binding(1) var scale : array<${V.type.storage}>;\n @group(0) @binding(2) var bias : array<${T.type.storage}>;\n @group(0) @binding(3) var output : array<${h}>;\n struct Uniforms {units_of_work : u32, H: u32, C : u32, image_size : u32};\n @group(0) @binding(4) var uniforms: Uniforms;\n\n ${R.mainStart()}\n ${R.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.units_of_work")}\n let currentImageNumber = global_idx / uniforms.C;\n let currentChannelNumber = global_idx % uniforms.C;\n\n let offset = currentImageNumber * uniforms.image_size;\n var sum = ${Ze("f32",a)};\n var squaredSum = ${Ze("f32",a)};\n for (var i: u32 = 0; i < ${p}; i++) {\n let value = input[offset + i + currentChannelNumber * ${p}];\n sum += value[0];\n squaredSum += value[1];\n }\n sum = sum / f32(uniforms.H);\n squaredSum = squaredSum / f32(uniforms.H);\n let invStdDev = inverseSqrt(squaredSum - sum * sum + f32(${l}));\n let channelScale = invStdDev * ${g}(scale[currentChannelNumber]);\n let channelShift = ${g}(bias[currentChannelNumber]) - sum * channelScale;\n\n output[global_idx] = ${b("channelScale","channelShift")};\n }`};return e.compute({name:"InstanceNormComputeChannelScaleShift",shaderCache:{hint:`${a};${l}`,inputDependencies:A},getRunData:()=>({outputs:[{dims:[n,u,2],dataType:1}],dispatchGroup:{x:Math.ceil(w/64)},programUniforms:E}),getShaderSource:z},{inputs:[x,r,o],outputs:[-1]})[0]},Vl=(e,t,r)=>{let o=t[0].dims,n=o,s=o[0],u=o[o.length-1],l=U.sizeFromDimension(o,1)/u,a=Fe(u),p=U.size(n)/a,h=[{type:"uint32",data:l},{type:"uint32",data:Math.floor(u/a)}],g=["type","type"],b=Ul(e,t[0],t[1],t[2],s,l,u,r.epsilon),w=y=>{let _=Le(t[0].dataType),I=a===1?"vec2f":`mat2x${a}f`,$=a===1?_:`vec${a}<${_}>`,x=M("input",t[0].dataType,t[0].dims,a),E=F("output",t[0].dataType,n,a);return`\n @group(0) @binding(0) var input : array<${x.type.storage}>;\n @group(0) @binding(1) var scaleInput : array<${I}>;\n @group(0) @binding(2) var output : array<${E.type.storage}>;\n struct Uniforms {H: u32, C : u32};\n @group(0) @binding(3) var uniforms: Uniforms;\n\n ${y.mainStart()}\n let currentImageNumber = global_idx / (uniforms.C * uniforms.H);\n let currentChannelNumber = global_idx % uniforms.C;\n\n let scaleOffset = currentImageNumber * uniforms.C + currentChannelNumber;\n let scale = scaleInput[scaleOffset];\n output[global_idx] = fma(input[global_idx], ${$}(scale[0]), ${$}(scale[1]));\n }`};e.compute({name:"InstanceNormalizationNHWC",shaderCache:{hint:`${a}`,inputDependencies:g},getRunData:()=>({outputs:[{dims:n,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(p/64)},programUniforms:h}),getShaderSource:w},{inputs:[t[0],b]})},vs=(e,t)=>{t.format==="NHWC"?Vl(e,e.inputs,t):e.compute(zl(e.inputs,t))}});var Nl,Wl,Ss,xs=j(()=>{"use strict";Ne();$e();ve();Nl=e=>{if(!e||e.length<2)throw new Error("layerNorm requires at least 2 inputs.")},Wl=(e,t,r)=>{let o=e[0].dims,n=e[1],s=e[2],u=o,l=U.normalizeAxis(t.axis,o.length),a=U.sizeToDimension(o,l),p=U.sizeFromDimension(o,l),h=U.size(n.dims),g=s?U.size(s.dims):0;if(h!==p||s&&g!==p)throw new Error(`Size of X.shape()[axis:] == ${p}.\n Size of scale and bias (if provided) must match this.\n Got scale size of ${h} and bias size of ${g}`);let b=[];for(let A=0;A1,$=r>2,x=A=>{let z=Le(e[0].dataType),R=[M("x",e[0].dataType,e[0].dims,w),M("scale",n.dataType,n.dims,w)];s&&R.push(M("bias",s.dataType,s.dims,w)),R.push(F("output",e[0].dataType,u,w)),I&&R.push(F("mean_data_output",1,b)),$&&R.push(F("inv_std_output",1,b));let V=[{name:"norm_count",type:"u32"},{name:"norm_size",type:"f32"},{name:"norm_size_vectorized",type:"u32"},{name:"epsilon",type:"f32"}];return`\n ${A.registerUniforms(V).declareVariables(...R)}\n ${A.mainStart()}\n ${A.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.norm_count")}\n let offset = global_idx * uniforms.norm_size_vectorized;\n var meanVector = ${Ze("f32",w)};\n var meanSquareVector = ${Ze("f32",w)};\n\n for (var h: u32 = 0u; h < uniforms.norm_size_vectorized; h++) {\n let value = ${at(z,w,"x[h + offset]")};\n meanVector += value;\n meanSquareVector += value * value;\n }\n let mean = ${Je("meanVector",w)} / uniforms.norm_size;\n let invStdDev =\n inverseSqrt(${Je("meanSquareVector",w)} / uniforms.norm_size - mean * mean + uniforms.epsilon);\n\n for (var j: u32 = 0; j < uniforms.norm_size_vectorized; j++) {\n let f32input = ${at(z,w,"x[j + offset]")};\n let f32scale = ${at(z,w,"scale[j]")};\n output[j + offset] = ${R[0].type.value}((f32input - mean) * invStdDev * f32scale\n ${s?`+ ${at(z,w,"bias[j]")}`:""}\n );\n }\n\n ${I?"mean_data_output[global_idx] = mean":""};\n ${$?"inv_std_output[global_idx] = invStdDev":""};\n }`},E=[{dims:u,dataType:e[0].dataType}];return I&&E.push({dims:b,dataType:1}),$&&E.push({dims:b,dataType:1}),{name:"LayerNormalization",shaderCache:{hint:`${w};${r}`,inputDependencies:y},getRunData:()=>({outputs:E,dispatchGroup:{x:Math.ceil(a/64)},programUniforms:_}),getShaderSource:x}},Ss=(e,t)=>{Nl(e.inputs),e.compute(Wl(e.inputs,t,e.outputCount))}});var Hl,Cs,_s,Gl,Xn,Is,As=j(()=>{"use strict";$e();je();Nr();Un();ve();jt();Hl=(e,t)=>{let r=e[0],o=e[1],n=e[2],s=e[3],u=e[4],l=e[5],a=e[6],p=e[7];if(r.dims.length!==3&&r.dims.length!==5)throw new Error("Input query is expected to have 3 or 5 dimensions");let h=!1,g=r.dims[0],b=r.dims[1],w=r.dims.length===3?h?r.dims[2]/3:r.dims[2]:t.numHeads*r.dims[4],y=b,_=0,I=0,$=Math.floor(w/t.numHeads);if(a&&p){if(a.dims.length!==4)throw new Error(\'Input "past_key" is expected to have 4 dimensions\');if(p.dims.length!==4)throw new Error(\'Input "past_value" is expected to have 4 dimensions\');_=a.dims[2],I=a.dims[2]}else if(a||p)throw new Error(\'Input "past_key" and "past_value" shall be both present or both absent\');let x;if(o){if(r.dims.length!==3)throw new Error(\'Input "query" is expected to have 3 dimensions when key is given\');if(o.dims.length<3||o.dims.length>5)throw new Error(\'Input "key" is expected to have 3, 4, or 5 dimensions\');if(r.dims[0]!==o.dims[0])throw new Error(\'Input "query" and "key" shall have same dim 0 (batch size)\');if(o.dims.length===3){if(o.dims[2]!==r.dims[2])throw new Error(\'Input "query" and "key" shall have same dim 2 (hidden_size)\');x=2,y=o.dims[1]}else if(o.dims.length===5){if(o.dims[2]!==t.numHeads||o.dims[3]!==2||o.dims[4]!==$)throw new Error(\'Expect "key" shape (batch_size, kv_sequence_length, num_heads, 2, head_size) for packed kv\');if(n)throw new Error(\'Expect "value" be none when "key" has packed kv format.\');x=5,y=o.dims[1]}else{if(o.dims[1]!==t.numHeads||o.dims[3]!==$)throw new Error(\'Expect "key" shape (batch_size, num_heads, kv_sequence_length, head_size) for past_key\');x=0,y=o.dims[2]}}else{if(r.dims.length!==3&&r.dims.length!==5)throw new Error(\'Input "query" is expected to have 3 or 5 dimensions when key is empty\');if(r.dims.length===5&&(r.dims[2]!==t.numHeads||r.dims[3]!==3))throw new Error(\'Expect "query" shape (batch_size, kv_sequence_length, num_heads, 3, head_size) for packed kv\');x=3}if(s){if(s.dims.length!==1)throw new Error(\'Input "bias" is expected to have 1 dimension\');if(n&&r.dims.length===5&&r.dims[3]===2)throw new Error("bias is not allowed for packed kv.")}let E=0;if(u){E=8;let T=u.dims;throw T.length===1?T[0]===g?E=1:T[0]===3*g+2&&(E=3):T.length===2&&T[0]===g&&T[1]===y&&(E=5),E===8?new Error(\'Input "key_padding_mask" shape shall be (batch_size) or (batch_size, kv_sequence_length)\'):new Error("Mask not supported")}let A=!1,z=w;if(n){if(n.dims.length!==3&&n.dims.length!==4)throw new Error(\'Input "value" is expected to have 3 or 4 dimensions\');if(r.dims[0]!==n.dims[0])throw new Error(\'Input "query" and "value" shall have same dim 0 (batch_size)\');if(n.dims.length===3){if(y!==n.dims[1])throw new Error(\'Input "key" and "value" shall have the same dim 1 (kv_sequence_length)\');z=n.dims[2]}else{if(y!==n.dims[2])throw new Error(\'Input "past_key" and "past_value" shall have the same dim 2 (kv_sequence_length)\');z=n.dims[1]*n.dims[3],A=!0}}let R=_+y,V=!1;if(u)throw new Error("Key padding mask is not supported");if(l)throw new Error("extraAddQk is not supported");if(a)throw new Error("pastKey is not supported");if(p)throw new Error("pastValue is not supported");return{batchSize:g,sequenceLength:b,pastSequenceLength:_,kvSequenceLength:y,totalSequenceLength:R,maxSequenceLength:I,inputHiddenSize:0,hiddenSize:w,vHiddenSize:z,headSize:$,vHeadSize:Math.floor(z/t.numHeads),numHeads:t.numHeads,isUnidirectional:!1,pastPresentShareBuffer:!1,maskFilterValue:t.maskFilterValue,maskType:E,scale:t.scale,broadcastResPosBias:V,passPastInKv:A,qkvFormat:x}},Cs=e=>ge({...e}),_s=ge({perm:[0,2,1,3]}),Gl=(e,t,r,o,n,s,u)=>{let l=[o,n,s],a=U.size(l),p=[{type:"uint32",data:a},{type:"uint32",data:u},{type:"uint32",data:s}],h=g=>{let b=F("qkv_with_bias",t.dataType,l),w=M("qkv",t.dataType,l),y=M("bias",r.dataType,l),_=[{name:"output_size",type:"u32"},{name:"bias_offset",type:"u32"},{name:"hidden_size",type:"u32"}];return`\n ${g.registerUniforms(_).declareVariables(w,y,b)}\n ${g.mainStart()}\n ${g.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}\n let bias_offset_idx = (global_idx % uniforms.hidden_size) + uniforms.bias_offset;\n\n qkv_with_bias[global_idx] = qkv[global_idx] + bias[bias_offset_idx];\n }`};return e.compute({name:"MultiHeadAttentionAddBias",shaderCache:{inputDependencies:["type","type"]},getRunData:()=>({outputs:[{dims:l,dataType:t.dataType,gpuDataType:0}],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:p}),getShaderSource:h},{inputs:[t,r],outputs:[-1]})[0]},Xn=(e,t,r,o,n,s,u,l)=>{let a=s;if(u){if(o===1)throw new Error("AddBiasReshape is not implemented. Please export your model with packed QKV or KV");return a=Gl(e,s,u,t,o,r*n,l),a=a.reshape([t,o,r,n]),e.compute(it(a,_s.perm),{inputs:[a],outputs:[-1]})[0]}else return s.dims.length===3&&(a=s.reshape([t,o,r,n])),e.compute(it(a,_s.perm),{inputs:[a],outputs:[-1]})[0]},Is=(e,t)=>{let r=Hl(e.inputs,t);if(e.inputs[0].dims.length===5)throw new Error("Packed QKV is not implemented");if(e.inputs[1]?.dims.length===5)throw new Error("Packed KV is not implemented");let o=e.inputs[1]&&e.inputs[2]&&e.inputs[1].dims.length===4&&e.inputs[2].dims.length===4,n=Xn(e,r.batchSize,r.numHeads,r.sequenceLength,r.headSize,e.inputs[0],e.inputs[3],0);if(o)return Kr(e,n,e.inputs[1],e.inputs[2],e.inputs[4],void 0,void 0,void 0,e.inputs[5],r,t);let s=Xn(e,r.batchSize,r.numHeads,r.kvSequenceLength,r.headSize,e.inputs[1],e.inputs[3],r.hiddenSize),u=Xn(e,r.batchSize,r.numHeads,r.kvSequenceLength,r.vHeadSize,e.inputs[2],e.inputs[3],2*r.hiddenSize);Kr(e,n,s,u,e.inputs[4],void 0,e.inputs[6],e.inputs[7],e.inputs[5],r,t)}});var Ll,Fl,jl,ql,Kl,Yl,Zl,Ql,Ts,Es=j(()=>{"use strict";Ne();$e();ve();Ll=e=>{if(!e||e.length<1)throw new Error("Too few inputs");if(e[0].dataType!==1)throw new Error("Input type must be float.");if(e.length>=2){let t=e[0].dims.length*2===e[1].dims[0];if(e.length===4&&(t=e[3].dims[0]*2===e[1].dims[0]),!t)throw new Error("The pads should be a 1D tensor of shape [2 * input_rank] or [2 * num_axes].")}},Fl=(e,t,r)=>{let o="";for(let n=t-1;n>=0;--n)o+=`\n k = i32(${e.indicesGet("indices",n)}) - ${ce("uniforms.pads",n,r)};\n if (k < 0) {\n break;\n }\n if (k >= i32(${ce("uniforms.x_shape",n,t)})) {\n break;\n }\n offset += k * i32(${ce("uniforms.x_strides",n,t)});\n `;return`\n value = ${e.type.value}(uniforms.constant_value);\n for (var i = 0; i < 1; i++) {\n var offset = 0;\n var k = 0;\n ${o}\n value = x[offset];\n }\n `},jl=(e,t,r)=>{let o="";for(let n=t-1;n>=0;--n)o+=`\n k = i32(${e.indicesGet("indices",n)}) - ${ce("uniforms.pads",n,r)};\n if (k < 0) {\n k = -k;\n }\n {\n let _2n_1 = 2 * (i32(${ce("uniforms.x_shape",n,t)}) - 1);\n k = k % _2n_1;\n if(k >= i32(${ce("uniforms.x_shape",n,t)})) {\n k = _2n_1 - k;\n }\n }\n offset += k * i32(${ce("uniforms.x_strides",n,t)});\n `;return`\n var offset = 0;\n var k = 0;\n ${o}\n value = x[offset];\n `},ql=(e,t,r)=>{let o="";for(let n=t-1;n>=0;--n)o+=`\n k = i32(${e.indicesGet("indices",n)}) - ${ce("uniforms.pads",n,r)};\n if (k < 0) {\n k = 0;\n }\n if (k >= i32(${ce("uniforms.x_shape",n,t)})) {\n k = i32(${ce("uniforms.x_shape",n,t)}) - 1;\n }\n offset += k * i32(${ce("uniforms.x_strides",n,t)});\n `;return`\n var offset = 0;\n var k = 0;\n ${o}\n value = x[offset];\n `},Kl=(e,t,r)=>{let o="";for(let n=t-1;n>=0;--n)o+=`\n k = i32(${e.indicesGet("indices",n)}) - ${ce("uniforms.pads",n,r)};\n if (k < 0) {\n k += i32(${ce("uniforms.x_shape",n,t)}]);\n }\n if (k >= i32(${ce("uniforms.x_shape",n,t)})) {\n k -= i32(${ce("uniforms.x_shape",n,t)});\n }\n offset += k * i32(${ce("uniforms.x_strides",n,t)});\n `;return`\n var offset = 0;\n var k = 0;\n ${o}\n value = x[offset];\n `},Yl=(e,t,r)=>{switch(r.mode){case 0:return Fl(e,t,r.pads.length);case 1:return jl(e,t,r.pads.length);case 2:return ql(e,t,r.pads.length);case 3:return Kl(e,t,r.pads.length);default:throw new Error("Invalid mode")}},Zl=(e,t)=>{let r=U.padShape(e[0].dims.slice(),t.pads),o=e[0].dims,s=[{type:"uint32",data:U.size(r)},{type:"uint32",data:t.pads}];if(t.mode===0){let a=Xe(e[0].dataType);s.push({type:a,data:t.value})}s.push(...L(e[0].dims),...L(r));let u=["rank"],l=a=>{let p=F("output",e[0].dataType,r.length),h=M("x",e[0].dataType,o.length),g=h.type.value,b=Yl(p,o.length,t),w=[{name:"output_size",type:"u32"},{name:"pads",type:"i32",length:t.pads.length}];return t.mode===0&&w.push({name:"constant_value",type:g}),`\n ${a.registerUniforms(w).declareVariables(h,p)}\n ${a.mainStart()}\n ${a.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}\n\n let indices = ${p.offsetToIndices("global_idx")};\n\n var value = ${g}(0);\n ${b}\n output[global_idx] = value;\n }`};return{name:"Pad",shaderCache:{hint:`${t.mode}`,inputDependencies:u},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(U.size(r)/64)},programUniforms:s}),getShaderSource:l}},Ql=(e,t)=>{if(e.length>1){let r=e[1].getBigInt64Array(),o=e.length>=3&&e[2].data?e[2].getFloat32Array()[0]:0,n=e[0].dims.length,s=new Int32Array(2*n).fill(0);if(e.length>=4){let l=e[3].getBigInt64Array();for(let a=0;as[Number(a)]=Number(l));let u=[];return s.forEach(l=>u.push(l)),{mode:t.mode,value:o,pads:u}}else return t},Ts=(e,t)=>{Ll(e.inputs);let r=Ql(e.inputs,t);e.compute(Zl(e.inputs,r),{inputs:[0]})}});var nn,Os,Ps,ks,Rs,Xl,Jl,Bs,Ds,Ms,zs,Us,Vs,Ns,Ws,Hs,Gs,Ls,Fs,js=j(()=>{"use strict";Lt();$e();ve();nn=e=>{if(Gt.webgpu.validateInputContent&&(!e||e.length!==1))throw new Error("Pool ops requires 1 input.")},Os=(e,t,r)=>{let o=t.format==="NHWC",n=e.dims.slice();o&&n.splice(1,0,n.pop());let s=Object.hasOwnProperty.call(t,"dilations"),u=t.kernelShape.slice(),l=t.strides.slice(),a=s?t.dilations.slice():[],p=t.pads.slice();Bt.adjustPoolAttributes(r,n,u,l,a,p);let h=Bt.computePoolOutputShape(r,n,l,a,u,p,t.autoPad),g=Object.assign({},t);s?Object.assign(g,{kernelShape:u,strides:l,pads:p,dilations:a,cacheKey:t.cacheKey}):Object.assign(g,{kernelShape:u,strides:l,pads:p,cacheKey:t.cacheKey});let b=h.slice();return b.push(b.splice(1,1)[0]),[g,o?b:h]},Ps=(e,t)=>{let r=t.format==="NHWC",o=U.size(e),n=U.size(t.kernelShape),s=[{type:"uint32",data:o},{type:"uint32",data:n}],u=[{name:"outputSize",type:"u32"},{name:"kernelSize",type:"u32"}];if(t.kernelShape.length<=2){let l=t.kernelShape[t.kernelShape.length-1],a=t.strides[t.strides.length-1],p=t.pads[t.pads.length/2-1],h=t.pads[t.pads.length-1],g=!!(p+h);s.push({type:"uint32",data:l},{type:"uint32",data:a},{type:"uint32",data:p},{type:"uint32",data:h}),u.push({name:"kw",type:"u32"},{name:"sw",type:"u32"},{name:"pwStart",type:"u32"},{name:"pwEnd",type:"u32"});let b=!1;if(t.kernelShape.length===2){let w=t.kernelShape[t.kernelShape.length-2],y=t.strides[t.strides.length-2],_=t.pads[t.pads.length/2-2],I=t.pads[t.pads.length-2];b=!!(_+I),s.push({type:"uint32",data:w},{type:"uint32",data:y},{type:"uint32",data:_},{type:"uint32",data:I}),u.push({name:"kh",type:"u32"},{name:"sh",type:"u32"},{name:"phStart",type:"u32"},{name:"phEnd",type:"u32"})}return[s,u,!0,g,b]}else{if(r)throw new Error("Pooling with kernelShape.length > 2 is not supported for NHWC format.");let l=U.computeStrides(t.kernelShape);s.push({type:"uint32",data:l},{type:"uint32",data:t.pads},{type:"uint32",data:t.strides}),u.push({name:"kernelStrides",type:"u32",length:l.length},{name:"pads",type:"u32",length:t.pads.length},{name:"strides",type:"u32",length:t.strides.length});let a=t.pads.reduce((p,h)=>p+h);return[s,u,!!a,!1,!1]}},ks=(e,t,r,o,n,s,u,l,a,p,h,g)=>{let b=n.format==="NHWC",w=t.type.value,y=F("output",t.type.tensor,o);if(n.kernelShape.length<=2){let _="",I="",$="",x=r-(b?2:1);if(h?_=`\n for (var i: u32 = 0u; i < uniforms.kw; i++) {\n xIndices[${x}] = indices[${x}] * uniforms.sw - uniforms.pwStart + i;\n if (xIndices[${x}] < 0 || xIndices[${x}]\n >= uniforms.x_shape[${x}]) {\n pad++;\n continue;\n }\n let x_val = x[${t.indicesToOffset("xIndices")}];\n ${s}\n }`:_=`\n for (var i: u32 = 0u; i < uniforms.kw; i++) {\n xIndices[${x}] = indices[${x}] * uniforms.sw - uniforms.pwStart + i;\n let x_val = x[${t.indicesToOffset("xIndices")}];\n ${s}\n }`,n.kernelShape.length===2){let A=r-(b?3:2);g?I=`\n for (var j: u32 = 0u; j < uniforms.kh; j++) {\n xIndices[${A}] = indices[${A}] * uniforms.sh - uniforms.phStart + j;\n if (xIndices[${A}] < 0 || xIndices[${A}] >= uniforms.x_shape[${A}]) {\n pad += i32(uniforms.kw);\n continue;\n }\n `:I=`\n for (var j: u32 = 0u; j < uniforms.kh; j++) {\n xIndices[${A}] = indices[${A}] * uniforms.sh - uniforms.phStart + j;\n `,$=`\n }\n `}return`\n ${e.registerUniforms(a).declareVariables(t,y)}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n\n let indices = ${y.offsetToIndices("global_idx")};\n var xIndices = ${y.offsetToIndices("global_idx")};\n\n var value = ${w}(${l});\n var pad = 0;\n ${I}\n ${_}\n ${$}\n ${u}\n\n output[global_idx] = value;\n }`}else{if(b)throw new Error("Pooling with kernelShape.length > 2 is not supported for NHWC format.");let _=n.kernelShape.length,I=n.pads.length,$="";return p?$=`\n if (xIndices[j] >= uniforms.x_shape[j]) {\n pad++;\n isPad = true;\n break;\n }\n }\n if (!isPad) {\n let x_val = x[${t.indicesToOffset("xIndices")}];\n ${s}\n }`:$=`\n }\n let x_val = x[${t.indicesToOffset("xIndices")}];\n ${s}\n `,`\n ${e.registerUniforms(a).declareVariables(t,y)}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n let indices = ${y.offsetToIndices("global_idx")};\n var xIndices = ${y.offsetToIndices("global_idx")};\n\n var offsets: array;\n\n var value = ${w}(${l});\n var pad = 0;\n var isPad = false;\n\n for (var i: u32 = 0u; i < uniforms.kernelSize; i++) {\n var offset = i;\n for (var j = 0u; j < ${_-1}u; j++) {\n offsets[j] = offset / ${ce("uniforms.kernelStrides","j",_)};\n offset -= offsets[j] * ${ce("uniforms.kernelStrides","j",_)};\n }\n offsets[${_-1}] = offset;\n\n isPad = false;\n for (var j = ${r-_}u; j < ${r}u; j++) {\n xIndices[j] = indices[j] * ${ce("uniforms.strides",`j - ${r-_}u`,_)}\n + offsets[j - ${r-_}u] - ${ce("uniforms.pads","j - 2u",I)};\n ${$}\n }\n ${u}\n\n output[global_idx] = value;\n }`}},Rs=e=>`${e.format};${e.ceilMode};${e.autoPad};${e.kernelShape.length}`,Xl=e=>`${Rs(e)};${e.countIncludePad}`,Jl=e=>`${Rs(e)};${e.storageOrder};${e.dilations}`,Bs=e=>({format:e.format,autoPad:["NOTSET","VALID","SAME_UPPER","SAME_LOWER"][e.auto_pad],ceilMode:e.ceil_mode,kernelShape:e.kernel_shape,strides:e.strides,pads:e.pads}),Ds=(e,t,r,o)=>{let[n,s]=Os(t,o,r),u=M("x",t.dataType,t.dims.length),l=u.type.value,a="value += x_val;",p="";n.countIncludePad?p+=`value /= ${l}(uniforms.kernelSize);`:p+=`value /= ${l}(i32(uniforms.kernelSize) - pad);`;let[h,g,b,w,y]=Ps(s,n);h.push(...L(t.dims),...L(s));let _=["rank"];return{name:e,shaderCache:{hint:`${o.cacheKey};${b};${w};${y}`,inputDependencies:_},getRunData:()=>({outputs:[{dims:s,dataType:t.dataType}],dispatchGroup:{x:Math.ceil(U.size(s)/64)},programUniforms:h}),getShaderSource:I=>ks(I,u,t.dims.length,s.length,n,a,p,0,g,b,w,y)}},Ms=e=>{let t=e.count_include_pad!==0,r=Bs(e);if(r.ceilMode!==0)throw new Error("using ceil() in shape computation is not yet supported for AveragePool");let o={countIncludePad:t,...r,cacheKey:""};return{...o,cacheKey:Xl(o)}},zs=(e,t)=>{nn(e.inputs),e.compute(Ds("AveragePool",e.inputs[0],!1,t))},Us={autoPad:"",ceilMode:0,countIncludePad:!1,kernelShape:[],strides:[],pads:[],storageOrder:0,dilations:[]},Vs=e=>{let t=e.format;return{format:t,...Us,cacheKey:t}},Ns=(e,t)=>{nn(e.inputs),e.compute(Ds("GlobalAveragePool",e.inputs[0],!0,t))},Ws=(e,t,r,o)=>{let[n,s]=Os(t,o,r),u=`\n value = max(x_val, value);\n `,l="",a=M("x",t.dataType,t.dims.length),p=["rank"],[h,g,b,w,y]=Ps(s,n);return h.push(...L(t.dims),...L(s)),{name:e,shaderCache:{hint:`${o.cacheKey};${b};${w};${y}`,inputDependencies:p},getRunData:()=>({outputs:[{dims:s,dataType:t.dataType}],dispatchGroup:{x:Math.ceil(U.size(s)/64)},programUniforms:h}),getShaderSource:_=>ks(_,a,t.dims.length,s.length,n,u,l,-1e5,g,b,w,y)}},Hs=(e,t)=>{nn(e.inputs),e.compute(Ws("MaxPool",e.inputs[0],!1,t))},Gs=e=>{let t=e.storage_order,r=e.dilations,o=Bs(e);if(t!==0)throw new Error("column major storage order is not yet supported for MaxPool");if(o.ceilMode!==0)throw new Error("using ceil() in shape computation is not yet supported for MaxPool");let n={storageOrder:t,dilations:r,...o,cacheKey:""};return{...n,cacheKey:Jl(n)}},Ls=e=>{let t=e.format;return{format:t,...Us,cacheKey:t}},Fs=(e,t)=>{nn(e.inputs),e.compute(Ws("GlobalMaxPool",e.inputs[0],!0,t))}});var tc,rc,qs,Ks=j(()=>{"use strict";Lt();Ne();ve();tc=(e,t,r)=>{let o=e===t,n=et&&r>0;if(o||n||s)throw new Error("Range these inputs\' contents are invalid.")},rc=(e,t,r,o)=>{let n=Math.abs(Math.ceil((t-e)/r)),s=[n],u=n,l=Xe(o),a=[{type:"uint32",data:u},{type:l,data:e},{type:l,data:r},...L(s)],p=h=>{let g=F("output",o,s.length),b=g.type.value,w=[{name:"outputSize",type:"u32"},{name:"start",type:b},{name:"delta",type:b}];return`\n ${h.registerUniforms(w).declareVariables(g)}\n ${h.mainStart()}\n ${h.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n output[global_idx] = uniforms.start + ${b}(global_idx) * uniforms.delta;\n }`};return{name:"Range",shaderCache:{hint:`${o}`},getShaderSource:p,getRunData:()=>({outputs:[{dims:s,dataType:o}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:a})}},qs=e=>{let t=0,r=0,o=0;e.inputs[0].dataType===6?(t=e.inputs[0].getInt32Array()[0],r=e.inputs[1].getInt32Array()[0],o=e.inputs[2].getInt32Array()[0]):e.inputs[0].dataType===1&&(t=e.inputs[0].getFloat32Array()[0],r=e.inputs[1].getFloat32Array()[0],o=e.inputs[2].getFloat32Array()[0]),Gt.webgpu.validateInputContent&&tc(t,r,o),e.compute(rc(t,r,o,e.inputs[0].dataType),{inputs:[]})}});var nc,oc,ac,ic,sc,uc,dc,lc,cc,pc,mc,Ys,fc,hc,gc,yc,bc,Zs,Qs,Xs=j(()=>{"use strict";$e();je();ve();nc=(e,t)=>{if(e.every(r=>r>0||(()=>{throw new Error("Resize requires scales input values to be positive")})),e.length>0){if(t.mode==="linear"){if(!(e.length===2||e.length===3||e.length===4&&e[0]===1&&e[1]===1||e.length===4&&e[0]===1&&e[3]===1||e.length===5&&e[0]===1&&e[1]===1))throw new Error(`For linear mode, Resize requires scales to be 2D, 3D, 4D with either two outermost or one innermost and\n one outermost scale values equal to 1, or 5D with two outermost scale values equal to 1`)}else if(t.mode==="cubic"&&!(e.length===2||e.length===4&&e[0]===1&&e[1]===1||e.length===4&&e[0]===1&&e[3]===1))throw new Error("Resize requires scales input size to be 2 or 4 for cubic mode")}},oc=(e,t,r)=>{t.every(n=>n>=0&&n{throw new Error("Resize requires axes input values to be positive and less than rank")}));let o=new Array(r).fill(1);return t.forEach((n,s)=>o[n]=e[s]),o},ac=(e,t,r,o,n,s)=>{let[u,l,a]=r>10?[1,2,3]:[-1,e.length>1?1:-1,-1],p=e[0].dims.length;if(u>0&&e.length>u&&e[u].dims.length>0)e[u].getFloat32Array().forEach(h=>s.push(h));else if(t.coordinateTransformMode==="tf_crop_and_resize")throw new Error("Resize requires RoI input to be specified when coordinateTransformMode is tfCropAndResize");if(l>0&&e.length>l&&e[l].dims.length>0){if(e[l].getFloat32Array().forEach(h=>o.push(h)),o.length!==0&&o.length!==p&&r>=18&&o.length!==t.axes.length)throw new Error("Resize requires scales input size to be same as input rank or axes size for opset 18 and up");nc(o,t),t.axes.length>0&&oc(o,t.axes,p).forEach((h,g)=>o[g]=h)}if(a>0&&e.length>a&&(e[a].getBigInt64Array().forEach(h=>n.push(Number(h))),n.length!==p||r>=18&&n.length===t.axes.length))throw new Error("Resize requires sizes input size to be same as input rank or axes size for opset 18 and up");if(t.axes.length>0){if(o.length!==t.axes.length)throw new Error(\'Resize requires "scales" input size to be of axes rank when axes attributes is specified\');if(n.length!==t.axes.length)throw new Error(\'Resize requires "sizes" input size to be of rank axes rank when axes attributes is specified\')}if(typeof o<"u"&&typeof n<"u"&&o.length>0&&n.length>p)throw new Error("Resize requires only of scales or sizes to be specified")},ic=(e,t)=>`fn getOriginalCoordinateFromResizedCoordinate(xResized: u32, xScale: f32, lengthResized: u32,\n lengthOriginal: u32, roiStart: f32, roiEnd: f32) -> ${t} { `+(()=>{switch(e){case"asymmetric":return`return ${t}(xResized) / ${t}(xScale);`;case"pytorch_half_pixel":return`if (lengthResized > 1) {\n return (${t}(xResized) + 0.5) / ${t}(xScale) - 0.5;\n } else {\n return 0.0;\n }`;case"tf_half_pixel_for_nn":return`return (${t}(xResized) + 0.5) / ${t}(xScale);`;case"align_corners":return`if (lengthResized == 1) {\n return 0.0;\n } else {\n // The whole part and the fractional part are calculated separately due to inaccuracy of floating\n // point division. As an example, f32(21) / f32(7) may evaluate to 2.99... instead of 3, causing an\n // offset-by-one error later in floor().\n let whole = ${t}(xResized * (lengthOriginal - 1) / (lengthResized - 1));\n let fract =\n ${t}(xResized * (lengthOriginal - 1) % (lengthResized - 1)) / ${t}(lengthResized - 1);\n return whole + fract;\n }`;case"tf_crop_and_resize":return`if (lengthResized > 1) {\n return ${t}(roiStart) * ${t}(lengthOriginal - 1) +\n (${t}(xResized) * ${t}(roiEnd - roiStart) * ${t}(lengthOriginal - 1)) /\n ${t}(lengthResized - 1);\n } else {\n return 0.5 * ${t}(roiStart + roiEnd) * ${t}(lengthOriginal - 1);\n }`;case"half_pixel_symmetric":return`const outputWidth = ${t}xScale * ${t}(lengthResized);\n const adjustment = ${t}(lengthResized) / outputWidth;\n const center = ${t}(lengthOriginal) / 2;\n const offset = center * (1 - adjustment);\n return offset + ((${t}(xResized) + 0.5) / ${t}(xScale)) - 0.5;`;case"half_pixel":return`return ((${t}(xResized) + 0.5) / ${t}(xScale)) - 0.5;`;default:throw new Error(`Coordinate transform mode ${e} is not supported`)}})()+"}",sc=(e,t,r)=>`fn getNearestPixelFromOriginal(xOriginal: ${r}, isDownSample: bool) -> ${r} {`+(()=>{switch(e){case"round_prefer_ceil":return"if (fract(xOriginal) == 0.5) { return ceil(xOriginal); } else { return round(xOriginal); }";case"floor":return"return floor(xOriginal);";case"ceil":return"return ceil(xOriginal);";case"round_prefer_floor":return"if (fract(xOriginal) == 0.5) { return floor(xOriginal); } else { return round(xOriginal); }";case"simple":default:if(t<11)return"if (isDownSample) { return ceil(xOriginal); } else { return xOriginal; }";throw new Error(`Nearest mode ${e} is not supported`)}})()+"}",uc=(e,t,r)=>{let o=new Array(r).fill(0).concat(new Array(r).fill(1)),n=e.length===0?o:e.slice();return t.length>0?(t.forEach((s,u)=>{o[s]=n[u],o[u+r]=n[t.length+u]}),o):n},dc=(e,t,r,o)=>{let n=[];if(r.length>0)if(o.length>0){if(e.forEach(s=>n.push(s)),Math.max(...o)>e.length)throw new Error("axes is out of bound");o.forEach((s,u)=>n[s]=r[u])}else r.forEach(s=>n.push(s));else{if(t.length===0)throw new Error("Resize requires either scales or sizes.");n=e.map((s,u)=>Math.round(s*t[u]))}return n},lc=(e,t,r)=>{let o=(()=>{switch(r.keepAspectRatioPolicy){case"not_larger":return r.axes.length>0?Math.min(...r.axes.map(s=>t[s]),Number.MAX_VALUE):Math.min(...t,Number.MAX_VALUE);case"not_smaller":return r.axes.length>0?Math.max(...r.axes.map(s=>t[s]),Number.MIN_VALUE):Math.max(...t,Number.MIN_VALUE);default:throw new Error(`Keep aspect ratio policy ${r.keepAspectRatioPolicy} is not supported`)}})();t.fill(1,0,t.length);let n=e.slice();return r.axes.length>0?(r.axes.forEach(s=>t[s]=o),r.axes.forEach(s=>n[s]=Math.round(e[s]*t[s]))):(t.fill(o,0,t.length),n.forEach((s,u)=>n[u]=Math.round(s*t[u]))),n},cc=(e,t,r,o,n)=>`\n fn calculateOriginalIndicesFromOutputIndices(output_indices: ${e.type.indices}) -> array<${e.type.value}, ${r.length}> {\n var original_indices: array<${e.type.value}, ${r.length}>;\n for (var i:u32 = 0; i < ${r.length}; i++) {\n var output_index = ${e.indicesGet("output_indices","i")};\n var scale = ${ce("uniforms.scales","i",o)};\n var roi_low = ${ce("uniforms.roi","i",n)};\n var roi_hi = ${ce("uniforms.roi",`i + ${t.length}`,n)};\n if (scale == 1.0) {\n original_indices[i] = ${e.type.value}(output_index);\n } else {\n var input_shape_i = ${ce("uniforms.input_shape","i",t.length)};\n var output_shape_i = ${ce("uniforms.output_shape","i",r.length)};\n original_indices[i] = getOriginalCoordinateFromResizedCoordinate(output_index, scale, output_shape_i,\n input_shape_i, roi_low, roi_hi);\n }\n }\n return original_indices;\n }`,pc=(e,t,r,o,n,s,u)=>`\n fn calculateInputIndicesFromOutputIndices(output_indices: ${t.type.indices}) -> ${e.type.indices} {\n var input_indices: ${e.type.indices};\n for (var i:u32 = 0; i < ${o.length}; i++) {\n var output_index = ${t.indicesGet("output_indices","i")};\n var input_index: u32;\n var scale = ${ce("uniforms.scales","i",n)};\n if (scale == 1.0) {\n input_index = output_index;\n } else {\n var roi_low = ${ce("uniforms.roi","i",s)};\n var roi_hi = ${ce("uniforms.roi",`i + ${r.length}`,s)};\n var input_shape_i = ${ce("uniforms.input_shape","i",r.length)};\n var output_shape_i = ${ce("uniforms.output_shape","i",o.length)};\n var original_idx = getOriginalCoordinateFromResizedCoordinate(output_index, scale, output_shape_i,\n input_shape_i, roi_low, roi_hi);\n if (!${u} || (original_idx >= 0 && original_idx < ${t.type.value}(input_shape_i))) {\n if (original_idx < 0) {\n input_index = 0;\n } else if (original_idx > ${t.type.value}(input_shape_i - 1)) {\n input_index = input_shape_i - 1;\n } else {\n input_index = u32(getNearestPixelFromOriginal(original_idx, scale < 1));\n }\n } else {\n input_index = u32(original_idx);\n }\n }\n ${e.indicesSet("input_indices","i"," input_index")}\n }\n return input_indices;\n }`,mc=(e,t)=>`\n fn checkInputIndices(input_indices: ${e.type.indices}) -> bool {\n for (var i:u32 = 0; i < ${t.length}; i++) {\n var input_index = ${e.indicesGet("input_indices","i")};\n if (input_index < 0 || input_index >= ${ce("uniforms.input_shape","i",t.length)}) {\n return false;\n }\n }\n return true;\n }`,Ys=(e,t,r,o)=>e.rank>o?`\n ${e.indicesSet("input_indices",t,"channel")};\n ${e.indicesSet("input_indices",r,"batch")};\n`:"",fc=(e,t,r,o,n)=>{let[u,l,a,p]=r.length===2?[-1,0,1,-1]:[0,2,3,1],h=e.type.value;return`\n fn getInputValue(batch: u32, channel: u32, row: u32, col: u32) -> ${h} {\n var input_indices: ${e.type.indices};\n ${e.indicesSet("input_indices",l,`max(0, min(row, ${r[l]} - 1))`)};\n ${e.indicesSet("input_indices",a,`max(0, min(col, ${r[a]} - 1))`)};\n ${Ys(e,p,u,2)}\n return ${e.getByIndices("input_indices")};\n }\n\n fn bilinearInterpolation(output_indices: ${t.type.indices}) -> ${h} {\n var originalIndices = calculateOriginalIndicesFromOutputIndices(output_indices);\n var row:${h} = originalIndices[${l}];\n var col:${h} = originalIndices[${a}];\n ${o?`if (row < 0 || row > (${r[l]} - 1) || col < 0 || col > (${r[a]} - 1)) {\n return ${n};\n }`:""};\n row = max(0, min(row, ${r[l]} - 1));\n col = max(0, min(col, ${r[a]} - 1));\n var row1: u32 = u32(row);\n var col1: u32 = u32(col);\n var row2: u32 = u32(row + 1);\n var col2: u32 = u32(col + 1);\n var channel: u32 = ${r.length>2?`u32(originalIndices[${p}])`:"0"};\n var batch: u32 = ${r.length>2?`u32(originalIndices[${u}])`:"0"};\n var x11: ${h} = getInputValue(batch, channel, row1, col1);\n var x12: ${h} = getInputValue(batch, channel, row1, col2);\n var x21: ${h} = getInputValue(batch, channel, row2, col1);\n var x22: ${h} = getInputValue(batch, channel, row2, col2);\n var dx1: ${h} = abs(row - ${h}(row1));\n var dx2: ${h} = abs(${h}(row2) - row);\n var dy1: ${h} = abs(col - ${h}(col1));\n var dy2: ${h} = abs(${h}(col2) - col);\n if (row1 == row2) {\n dx1 = 0.5;\n dx2 = 0.5;\n }\n if (col1 == col2) {\n dy1 = 0.5;\n dy2 = 0.5;\n }\n return (x11 * dx2 * dy2 + x12 * dx2 * dy1 + x21 * dx1 * dy2 + x22 * dx1 * dy1);\n }`},hc=(e,t,r,o,n,s,u,l,a,p)=>{let h=r.length===2,g=!0,[b,w]=h?[0,1]:g?[2,3]:[1,2],y=e.type.value,_=I=>{let $=I===b?"row":"col";return`\n fn ${$}CubicInterpolation(input_indices: ${e.type.indices}, output_indices: ${t.type.indices}) -> ${y} {\n var output_index = ${t.indicesGet("output_indices",I)};\n var originalIdx: ${y} = getOriginalCoordinateFromResizedCoordinate(output_index, ${n[I]},\n ${o[I]}, ${r[I]}, ${s[I]}, ${s[I]} + ${r.length});\n var fractOriginalIdx: ${y} = originalIdx - floor(originalIdx);\n var coefs = getCubicInterpolationCoefs(fractOriginalIdx);\n\n if (${l} && (originalIdx < 0 || originalIdx > (${r[I]} - 1))) {\n return ${a};\n }\n var data: array<${y}, 4> = array<${y}, 4>(0.0, 0.0, 0.0, 0.0);\n for (var i: i32 = -1; i < 3; i++) {\n var ${$}: ${y} = originalIdx + ${y}(i);\n if (${$} < 0 || ${$} >= ${r[I]}) {\n ${(()=>p?`coefs[i + 1] = 0.0;\n continue;`:l?`return ${a};`:`${$} = max(0, min(${$}, ${r[I]} - 1));`)()};\n }\n var input_indices_copy: ${e.type.indices} = input_indices;\n ${e.indicesSet("input_indices_copy",I,`u32(${$})`)};\n data[i + 1] = ${I===b?e.getByIndices("input_indices_copy"):"rowCubicInterpolation(input_indices_copy, output_indices)"};\n }\n return cubicInterpolation1D(data, coefs);\n }`};return`\n ${_(b)};\n ${_(w)};\n fn getCubicInterpolationCoefs(s: ${y}) -> array<${y}, 4> {\n var absS = abs(s);\n var coeffs: array<${y}, 4> = array<${y}, 4>(0.0, 0.0, 0.0, 0.0);\n var oneMinusAbsS: ${y} = 1.0 - absS;\n var twoMinusAbsS: ${y} = 2.0 - absS;\n var onePlusAbsS: ${y} = 1.0 + absS;\n coeffs[0] = ((${u} * onePlusAbsS - 5 * ${u}) * onePlusAbsS + 8 * ${u}) * onePlusAbsS - 4 * ${u};\n coeffs[1] = ((${u} + 2) * absS - (${u} + 3)) * absS * absS + 1;\n coeffs[2] = ((${u} + 2) * oneMinusAbsS - (${u} + 3)) * oneMinusAbsS * oneMinusAbsS + 1;\n coeffs[3] = ((${u} * twoMinusAbsS - 5 * ${u}) * twoMinusAbsS + 8 * ${u}) * twoMinusAbsS - 4 * ${u};\n return coeffs;\n }\n\n fn cubicInterpolation1D(x: array<${y}, 4>, coefs: array<${y}, 4>) -> ${y} {\n var coefsSum: ${y} = coefs[0] + coefs[1] + coefs[2] + coefs[3];\n return (x[0] * coefs[0] + x[1] * coefs[1]+ x[2] * coefs[2]+ x[3] * coefs[3]) / coefsSum;\n }\n\n fn bicubicInterpolation(output_indices: ${t.type.indices}) -> ${y} {\n var input_indices: ${e.type.indices} = output_indices;\n return colCubicInterpolation(input_indices, output_indices);\n }\n `},gc=(e,t,r,o,n)=>{let[u,l,a,p,h]=r.length===3?[-1,0,1,2,-1]:[0,2,3,4,1],g=e.type.value;return`\n fn getInputValue(batch: u32, channel: u32, depth:u32, height: u32, width: u32) -> ${g} {\n var input_indices: ${e.type.indices};\n ${e.indicesSet("input_indices",l,`max(0, min(depth, ${r[l]} - 1))`)};\n ${e.indicesSet("input_indices",a,`max(0, min(height, ${r[a]} - 1))`)};\n ${e.indicesSet("input_indices",p,`max(0, min(width, ${r[p]} - 1))`)};\n ${Ys(e,h,u,3)}\n return ${e.getByIndices("input_indices")};\n }\n\n fn trilinearInterpolation(output_indices: ${t.type.indices}) -> ${g} {\n var originalIndices = calculateOriginalIndicesFromOutputIndices(output_indices);\n var depth:${g} = originalIndices[${l}];\n var height:${g} = originalIndices[${a}];\n var width:${g} = originalIndices[${p}];\n ${o?`if (depth < 0 || depth > (${r[l]} - 1) || height < 0 || height > (${r[a]} - 1) || width < 0 || (width > ${r[p]} - 1)) {\n return ${n};\n }`:""};\n\n depth = max(0, min(depth, ${r[l]} - 1));\n height = max(0, min(height, ${r[a]} - 1));\n width = max(0, min(width, ${r[p]} - 1));\n var depth1: u32 = u32(depth);\n var height1: u32 = u32(height);\n var width1: u32 = u32(width);\n var depth2: u32 = u32(depth + 1);\n var height2: u32 = u32(height + 1);\n var width2: u32 = u32(width + 1);\n var channel: u32 = ${r.length>3?`u32(originalIndices[${h}])`:"0"};\n var batch: u32 = ${r.length>3?`u32(originalIndices[${u}])`:"0"};\n\n var x111: ${g} = getInputValue(batch, channel, depth1, height1, width1);\n var x112: ${g} = getInputValue(batch, channel, depth1, height1, width2);\n var x121: ${g} = getInputValue(batch, channel, depth1, height2, width1);\n var x122: ${g} = getInputValue(batch, channel, depth1, height2, width2);\n var x211: ${g} = getInputValue(batch, channel, depth2, height1, width1);\n var x212: ${g} = getInputValue(batch, channel, depth2, height1, width2);\n var x221: ${g} = getInputValue(batch, channel, depth2, height2, width1);\n var x222: ${g} = getInputValue(batch, channel, depth2, height2, width2);\n var dx1: ${g} = abs(depth - ${g}(depth1));\n var dx2: ${g} = abs(${g}(depth2) - depth);\n var dy1: ${g} = abs(height - ${g}(height1));\n var dy2: ${g} = abs(${g}(height2) - height);\n var dz1: ${g} = abs(width - ${g}(width1));\n var dz2: ${g} = abs(${g}(width2) - width);\n if (depth1 == depth2) {\n dx1 = 0.5;\n dx2 = 0.5;\n }\n if (height1 == height2) {\n dy1 = 0.5;\n dy2 = 0.5;\n }\n if (width1 == width2) {\n dz1 = 0.5;\n dz2 = 0.5;\n }\n return (x111 * dx2 * dy2 * dz2 + x112 * dx2 * dy2 * dz1 + x121 * dx2 * dy1 *dz2 + x122 * dx2 * dy1 * dz1 +\n x211 * dx1 * dy2 * dz2 + x212 * dx1 * dy2 * dz1 + x221 * dx1 * dy1 *dz2 + x222 * dx1 * dy1 * dz1);\n }`},yc=(e,t,r,o,n,s)=>{let u=e.dims,l=uc(s,t.axes,u.length),a=dc(u,o,n,t.axes),p=o.slice();o.length===0&&(p=u.map((x,E)=>x===0?1:a[E]/x),t.keepAspectRatioPolicy!=="stretch"&&(a=lc(u,p,t)));let h=F("output",e.dataType,a.length),g=M("input",e.dataType,u.length),b=U.size(a),w=u.length===a.length&&u.every((x,E)=>x===a[E]),y=t.coordinateTransformMode==="tf_crop_and_resize",_=t.extrapolationValue,I=g.type.value,$=x=>`\n ${w?"":`\n ${ic(t.coordinateTransformMode,I)};\n ${(()=>{switch(t.mode){case"nearest":return`\n ${mc(g,u)};\n ${sc(t.nearestMode,r,I)};\n ${pc(g,h,u,a,p.length,l.length,y)};\n `;case"linear":return`\n ${cc(h,u,a,p.length,l.length)};\n ${(()=>{if(u.length===2||u.length===4)return`${fc(g,h,u,y,_)}`;if(u.length===3||u.length===5)return`${gc(g,h,u,y,_)}`;throw Error("Linear mode only supports input dims 2, 3, 4 and 5 are supported in linear mode.")})()};\n `;case"cubic":return`\n ${(()=>{if(u.length===2||u.length===4)return`${hc(g,h,u,a,p,l,t.cubicCoeffA,y,t.extrapolationValue,t.excludeOutside)}`;throw Error("Cubic mode only supports input dims 2 and 4 are supported in linear mode.")})()};\n `;default:throw Error("Invalid resize mode")}})()};\n `}\n ${x.registerUniform("output_size","u32").registerUniform("scales","f32",p.length).registerUniform("roi","f32",l.length).declareVariables(g,h)}\n ${x.mainStart()}\n ${x.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}\n ${w?"output[global_idx] = input[global_idx];":`\n let output_indices = ${h.offsetToIndices("global_idx")};\n var input_indices: ${g.type.indices};\n ${(()=>{switch(t.mode){case"nearest":return`input_indices = calculateInputIndicesFromOutputIndices(output_indices);\n if (checkInputIndices(input_indices)) {\n output[global_idx] = ${g.getByIndices("input_indices")};\n } else {\n output[global_idx] = ${t.extrapolationValue};\n }`;case"linear":return`output[global_idx] = ${u.length===2||u.length===4?"bilinearInterpolation":"trilinearInterpolation"}(output_indices);`;case"cubic":return"output[global_idx] = bicubicInterpolation(output_indices);";default:throw Error(`Unsupported resize mode: ${t.mode}`)}})()};\n`}\n }`;return{name:"Resize",shaderCache:{hint:`${t.cacheKey}|${r}|${p.length>0?p:""}|${n.length>0?n:""}|${l.length>0?l:""}|${w}|${u}`,inputDependencies:["rank"]},getShaderSource:$,getRunData:()=>({outputs:[{dims:a,dataType:e.dataType}],dispatchGroup:{x:Math.ceil(b/64)},programUniforms:[{type:"uint32",data:b},{type:"float32",data:p},{type:"float32",data:l},...L(u),...L(a)]})}},bc=e=>{let t=e.customDataBuffer;return new Uint32Array(t,t.byteOffset,1)[0]},Zs=(e,t)=>{let r=[],o=[],n=[],s=bc(e);if(t.antialias!==0)throw Error("Only default value (0) for Antialias attribute is supported");ac(e.inputs,t,s,r,o,n),e.compute(yc(e.inputs[0],t,s,r,o,n),{inputs:[0]})},Qs=e=>{let t=e.antialias,r=e.axes,o=e.coordinateTransformMode,n=e.cubicCoeffA,s=e.excludeOutside!==0,u=e.extrapolationValue,l=e.keepAspectRatioPolicy,a=e.mode,p=e.nearestMode===""?"simple":e.nearestMode;return ge({antialias:t,axes:r,coordinateTransformMode:o,cubicCoeffA:n,excludeOutside:s,extrapolationValue:u,keepAspectRatioPolicy:l,mode:a,nearestMode:p})}});var wc,vc,Js,eu,tu=j(()=>{"use strict";Ne();$e();je();ve();wc=e=>{if(!e||e.length<3)throw new Error("layerNorm requires at least 3 inputs.");let t=e[0],r=e[1],o=e[2];if(t.dataType!==r.dataType||t.dataType!==o.dataType)throw new Error("All inputs must have the same data type");if(t.dims.length!==3&&t.dims.length!==2)throw new Error("Input must be 2D or 3D");if(r.dims.length!==3&&r.dims.length!==2)throw new Error("Skip must be 2D or 3D");let n=t.dims[t.dims.length-1],s=t.dims[t.dims.length-2];if(r.dims[r.dims.length-1]!==n)throw new Error("Skip must have the same hidden size as input");if(r.dims[r.dims.length-2]!==s)throw new Error("Skip must have the same sequence length as input");if(o.dims.length!==1)throw new Error("Gamma must be 1D");if(o.dims[o.dims.length-1]!==n)throw new Error("Gamma must have the same hidden size as input");if(e.length>3){let u=e[3];if(u.dims.length!==1)throw new Error("Beta must be 1D");if(u.dims[u.dims.length-1]!==n)throw new Error("Beta must have the same hidden size as input")}if(e.length>4){let u=e[4];if(u.dims.length!==1)throw new Error("Bias must be 1D");if(u.dims[u.dims.length-1]!==n)throw new Error("Bias must have the same hidden size as input")}},vc=(e,t,r,o)=>{let n=e[0].dims,s=U.size(n),u=n,l=s,a=n.slice(-1)[0],p=o?n.slice(0,-1).concat(1):[],h=e.length>3,g=e.length>4,b=o&&r>1,w=o&&r>2,y=r>3,_=Fe(a),I=[M("x",e[0].dataType,e[0].dims,_),M("skip",e[1].dataType,e[1].dims,_),M("gamma",e[2].dataType,e[2].dims,_)];h&&I.push(M("beta",e[3].dataType,e[3].dims,_)),g&&I.push(M("bias",e[4].dataType,e[4].dims,_)),I.push(F("output",e[0].dataType,u,_)),b&&I.push(F("meanOutput",1,p)),w&&I.push(F("invStdOutput",1,p)),y&&I.push(F("inputSkipBiasSum",e[0].dataType,u,_));let $=Le(e[0].dataType),x=A=>`\n const hiddenSize: f32 = ${a};\n const hiddenSizeVectorized: u32 = ${a/_};\n const epsilon: f32 = ${t.epsilon};\n\n ${A.declareVariables(...I)}\n\n ${A.mainStart()}\n ${A.guardAgainstOutOfBoundsWorkgroupSizes(l/a)}\n let offset = global_idx * hiddenSizeVectorized;\n var sum = ${Ze("f32",_)};\n var squareSum = ${Ze("f32",_)};\n for (var i: u32 = 0; i < hiddenSizeVectorized; i++) {\n let skipValue = skip[offset + i];\n let biasValue = ${g?"bias[i]":"0.0"};\n let inputValue = x[offset + i];\n let value = inputValue + skipValue + biasValue;\n ${y?"inputSkipBiasSum[offset + i] = value;":""}\n output[offset + i] = value;\n let f32Value = ${at($,_,"value")};\n sum += f32Value;\n squareSum += f32Value * f32Value;\n }\n let mean = ${Je("sum",_)} / hiddenSize;\n let invStdDev = inverseSqrt(${Je("squareSum",_)} / hiddenSize - mean * mean + epsilon);\n ${b?"meanOutput[global_idx] = mean;":""}\n ${w?"invStdOutput[global_idx] = invStdDev;":""}\n for (var i: u32 = 0; i < hiddenSizeVectorized; i++) {\n output[offset + i] = (output[offset + i] - ${$}(mean)) * ${$}(invStdDev) * gamma[i]\n + ${h?"beta[i]":"0.0"};\n }\n }`,E=[{dims:u,dataType:e[0].dataType}];return r>1&&E.push({dims:p,dataType:1}),r>2&&E.push({dims:p,dataType:1}),r>3&&E.push({dims:n,dataType:e[0].dataType}),{name:"SkipLayerNormalization",shaderCache:{hint:t.cacheKey},getShaderSource:x,getRunData:()=>({outputs:E,dispatchGroup:{x:Math.ceil(l/a/64)}})}},Js=(e,t)=>{wc(e.inputs);let o=[0];e.outputCount>1&&o.push(-3),e.outputCount>2&&o.push(-3),e.outputCount>3&&o.push(3),e.compute(vc(e.inputs,t,e.outputCount,!1),{outputs:o})},eu=e=>{let t=e.epsilon;return ge({epsilon:t})}});var $c,on,Sc,ru,xc,_c,nu,ou,au=j(()=>{"use strict";Ne();$e();je();ve();$c=(e,t)=>{if(!e||e.length<1)throw new Error("too few inputs");if(t.axes.length!==0){if(t.axes.length!==t.starts.length||t.axes.length!==t.ends.length)throw new Error("axes, starts and ends must have the same length")}else if(t.starts.length!==t.ends.length)throw new Error("starts and ends must have the same length");e.slice(1).forEach((r,o)=>{if(e[o+1].dataType!==6&&e[o+1].dataType!==7)throw new Error(`Input ${o} must be an array of int32 or int64`)})},on=(e,t)=>{let r=[];if(e.length>t)if(e[t].dataType===7)e[t].getBigInt64Array().forEach(o=>r.push(Number(o)));else if(e[t].dataType===6)e[t].getInt32Array().forEach(o=>r.push(Number(o)));else throw new Error(`Input ${t} must be an array of int32 or int64`);return r},Sc=(e,t)=>{if(e.length>1){let r=on(e,1),o=on(e,2),n=on(e,3);return n.length===0&&(n=[...Array(e[0].dims.length).keys()]),ge({starts:r,ends:o,axes:n})}else return t},ru=(e,t,r,o,n)=>{let s=e;return e<0&&(s+=r[o[t]]),n[t]<0?Math.max(0,Math.min(s,r[o[t]]-1)):Math.max(0,Math.min(s,r[o[t]]))},xc=(e,t,r)=>`fn calculateInputIndices(output_indices: ${t.type.indices}) -> ${e.type.indices} {\n var input_indices: ${e.type.indices};\n var carry = 0u;\n for (var i = ${r.length}; i >= 0; i--) {\n let input_shape_i = ${ce("uniforms.input_shape","i",r.length)};\n let steps_i = ${ce("uniforms.steps","i",r.length)};\n let signs_i = ${ce("uniforms.signs","i",r.length)};\n let starts_i = ${ce("uniforms.starts","i",r.length)};\n var output_index = ${t.indicesGet("output_indices","i")};\n var input_index = output_index * steps_i + starts_i + carry;\n carry = input_index / input_shape_i;\n input_index = input_index % input_shape_i;\n if (signs_i < 0) {\n input_index = input_shape_i - input_index - 1u + starts_i;\n }\n ${e.indicesSet("input_indices","i","input_index")};\n }\n return input_indices;\n }`,_c=(e,t)=>{let r=e[0].dims,o=U.size(r),n=t.axes.length>0?U.normalizeAxes(t.axes,r.length):[...Array(r.length).keys()],s=on(e,4);s.forEach($=>$!==0||(()=>{throw new Error("step cannot be 0")})),s.length===0&&(s=Array(n.length).fill(1));let u=t.starts.map(($,x)=>ru($,x,r,n,s)),l=t.ends.map(($,x)=>ru($,x,r,n,s));if(n.length!==u.length||n.length!==l.length)throw new Error("start, ends and axes should have the same number of elements");if(n.length!==r.length)for(let $=0;$Math.sign($));s.forEach(($,x,E)=>{if($<0){let A=(l[x]-u[x])/$,z=u[x],R=z+A*s[x];u[x]=R,l[x]=z,E[x]=-$}});let p=r.slice(0);n.forEach(($,x)=>{p[$]=Math.ceil((l[$]-u[$])/s[$])});let h={dims:p,dataType:e[0].dataType},g=F("output",e[0].dataType,p.length),b=M("input",e[0].dataType,e[0].dims.length),w=U.size(p),y=[{name:"outputSize",type:"u32"},{name:"starts",type:"u32",length:u.length},{name:"signs",type:"i32",length:a.length},{name:"steps",type:"u32",length:s.length}],_=[{type:"uint32",data:w},{type:"uint32",data:u},{type:"int32",data:a},{type:"uint32",data:s},...L(e[0].dims),...L(p)],I=$=>`\n ${$.registerUniforms(y).declareVariables(b,g)}\n ${xc(b,g,r)}\n ${$.mainStart()}\n ${$.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}\n let output_indices = ${g.offsetToIndices("global_idx")};\n let input_indices = calculateInputIndices(output_indices);\n ${g.setByOffset("global_idx",b.getByIndices("input_indices"))}\n }`;return{name:"Slice",shaderCache:{hint:`${a.length}_${u.length}_${s.length}`,inputDependencies:["rank"]},getShaderSource:I,getRunData:()=>({outputs:[h],dispatchGroup:{x:Math.ceil(o/64)},programUniforms:_})}},nu=(e,t)=>{$c(e.inputs,t);let r=Sc(e.inputs,t);e.compute(_c(e.inputs,r),{inputs:[0]})},ou=e=>{let t=e.starts,r=e.ends,o=e.axes;return ge({starts:t,ends:r,axes:o})}});var Cc,Ic,iu,su,uu=j(()=>{"use strict";$e();je();ve();Cc=e=>{if(!e||e.length!==1)throw new Error("Softmax op requires 1 input.")},Ic=(e,t)=>{let r=e.dims,o=U.size(r),n=64,s=t.axis;if(s<0&&(s=r.length+s),s$===4?`max(max(${I}.x, ${I}.y), max(${I}.z, ${I}.w))`:$===2?`max(${I}.x, ${I}.y)`:$===3?`max(max(${I}.x, ${I}.y), ${I}.z)`:I,g=M("x",e.dataType,e.dims,a),b=F("result",e.dataType,e.dims,a),w=g.type.value,y=Le(e.dataType)==="f32"?`var threadMax = ${w}(-3.402823e+38f);`:`var threadMax = ${w}(-65504.0h);`,_=I=>`\n var rowMaxShared : ${w};\n var rowSumShared : ${w};\n var threadShared : array<${w}, ${n}>;\n\n fn getValue(row: i32, col: i32, row_stride: i32) -> ${w} {\n let index = row * row_stride + col;\n return x[index];\n }\n\n fn setValue(row: i32, col: i32, row_stride: i32, value: ${w}) {\n let index = row * row_stride + col;\n result[index] = value;\n }\n ${I.registerUniform("packedCols","i32").declareVariables(g,b)}\n ${I.mainStart()}\n let gindex = i32(global_idx);\n let lindex = i32(local_idx);\n const wg = ${n};\n let row = gindex / wg;\n let cols = uniforms.packedCols;\n let row_stride : i32 = uniforms.packedCols;\n\n // find the rows max\n ${y}\n for (var col = lindex; col < cols; col += wg) {\n let value = getValue(row, col, row_stride);\n threadMax = max(threadMax, value);\n }\n if (lindex < cols) {\n threadShared[lindex] = threadMax;\n }\n workgroupBarrier();\n\n var reduceSize = min(cols, wg);\n for (var currSize = reduceSize >> 1; currSize > 0; currSize = reduceSize >> 1) {\n reduceSize = currSize + (reduceSize & 1);\n if (lindex < currSize) {\n threadShared[lindex] = max(threadShared[lindex], threadShared[lindex + reduceSize]);\n }\n workgroupBarrier();\n }\n if (lindex == 0) {\n rowMaxShared = ${w}(${h("threadShared[0]",a)});\n }\n workgroupBarrier();\n\n // find the rows sum\n var threadSum = ${w}(0.0);\n for (var col = lindex; col < cols; col += wg) {\n let subExp = exp(getValue(row, col, row_stride) - rowMaxShared);\n threadSum += subExp;\n }\n threadShared[lindex] = threadSum;\n workgroupBarrier();\n\n for (var currSize = wg >> 1; currSize > 0; currSize = currSize >> 1) {\n if (lindex < currSize) {\n threadShared[lindex] = threadShared[lindex] + threadShared[lindex + currSize];\n }\n workgroupBarrier();\n }\n if (lindex == 0) {\n rowSumShared = ${w}(${Je("threadShared[0]",a)});\n }\n workgroupBarrier();\n\n // calculate final value for each element in the row\n for (var col = lindex; col < cols; col += wg) {\n let value = exp(getValue(row, col, row_stride) - rowMaxShared) / rowSumShared;\n setValue(row, col, row_stride, value);\n }\n }`;return{name:"Softmax",shaderCache:{hint:`${a}`,inputDependencies:["type"]},getRunData:()=>({outputs:[{dims:r,dataType:e.dataType}],dispatchGroup:{x:l},programUniforms:[{type:"uint32",data:p}]}),getShaderSource:_}},iu=(e,t)=>{Cc(e.inputs),e.compute(Ic(e.inputs[0],t))},su=e=>ge({axis:e.axis})});var Ac,Tc,Ec,Oc,Pc,du,lu,cu=j(()=>{"use strict";$e();je();ve();Ac=e=>{if(!e||e.length<1)throw new Error("too few inputs")},Tc=(e,t)=>{let r=[],o=t.numOutputs;return e[1].dims[0]>0&&(e[1].getBigInt64Array().forEach(n=>r.push(Number(n))),o=r.length),ge({numOutputs:o,axis:t.axis,splitSizes:r})},Ec=e=>`\nfn calculateOutputIndex(index: u32) -> u32 {\n for (var i: u32 = 0u; i < ${e}u; i += 1u ) {\n if (index < ${ce("uniforms.size_in_split_axis","i",e)}) {\n return i;\n }\n }\n return ${e}u;\n}`,Oc=e=>{let t=e.length,r=[];for(let o=0;o{let r=e[0].dims,o=U.size(r),n=e[0].dataType,s=U.normalizeAxis(t.axis,r.length),u=new Array(t.numOutputs),l=M("input",n,r),a=new Array(t.numOutputs),p=[],h=[],g=0,b=[{type:"uint32",data:o}];for(let y=0;yb.push(...L(y)));let w=y=>`\n ${y.registerUniform("input_size","u32").registerUniform("size_in_split_axis","u32",a.length).declareVariables(l,...u)}\n ${Ec(a.length)}\n ${Oc(u)}\n\n ${y.mainStart()}\n ${y.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.input_size")}\n\n var indices = ${l.offsetToIndices("global_idx")};\n var index = ${l.indicesGet("indices",s)};\n let output_number = calculateOutputIndex(index);\n if (output_number != 0) {\n index -= ${ce("uniforms.size_in_split_axis","output_number - 1u",a.length)};\n ${l.indicesSet("indices",s,"index")};\n }\n writeBufferData(output_number, indices, global_idx);\n }`;return{name:"Split",shaderCache:{hint:t.cacheKey,inputDependencies:["rank"]},getShaderSource:w,getRunData:()=>({outputs:p,dispatchGroup:{x:Math.ceil(o/64)},programUniforms:b})}},du=(e,t)=>{Ac(e.inputs);let r=e.inputs.length===1?t:Tc(e.inputs,t);e.compute(Pc(e.inputs,r),{inputs:[0]})},lu=e=>{let t=e.axis,r=e.splitSizes,o=e.numOutputs<0?r.length:e.numOutputs;if(o!==r.length)throw new Error("numOutputs and splitSizes lengh must be equal");return ge({axis:t,numOutputs:o,splitSizes:r})}});var pu,kc,Rc,Bc,mu,fu=j(()=>{"use strict";Ne();$e();ve();pu=e=>Array.from(e.getBigInt64Array(),Number),kc=e=>{if(!e||e.length!==2)throw new Error("Tile requires 2 inputs.");if(e[0].dataType!==1&&e[0].dataType!==6&&e[0].dataType!==12)throw new Error("Tile only support float, int32, and uint32 data types");if(e[1].dataType!==7)throw new Error("Tile `repeats` input should be of int64 data type");if(e[1].dims.length!==1)throw new Error("Tile `repeats` input should be 1-D");if(pu(e[1]).length!==e[0].dims.length)throw new Error("Tile `repeats` input should have same number of elements as rank of input data tensor")},Rc=(e,t)=>{let r=[];for(let o=0;o{let t=e[0].dims,r=pu(e[1]),o=Rc(t,r),n=U.size(o),s=e[0].dataType,u=M("input",s,t.length),l=F("output",s,o.length),a=p=>`\n const inputShape = ${u.indices(...t)};\n ${p.registerUniform("output_size","u32").declareVariables(u,l)}\n ${p.mainStart()}\n ${p.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}\n let output_indices = ${l.offsetToIndices("global_idx")};\n var input_indices: ${u.type.indices};\n for (var i = 0; i < ${t.length}; i++) {\n let input_dim_i = ${u.indicesGet("uniforms.input_shape","i")};\n let input_dim_value = ${l.indicesGet("output_indices","i")} % input_dim_i;\n\n ${u.indicesSet("input_indices","i","input_dim_value")}\n }\n ${l.setByOffset("global_idx",u.getByIndices("input_indices"))}\n }`;return{name:"Tile",shaderCache:{hint:`${r}`,inputDependencies:["rank"]},getRunData:()=>({outputs:[{dims:o,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(n/64)},programUniforms:[{type:"uint32",data:n},...L(e[0].dims),...L(o)]}),getShaderSource:a}},mu=e=>{kc(e.inputs),e.compute(Bc(e.inputs),{inputs:[0]})}});var Dc,Mc,hu,gu=j(()=>{"use strict";Ne();$e();ve();Dc=(e,t,r,o,n)=>{let s=F("output_data",n,r.length,4),u=M("a_data",t[1].dataType,t[1].dims.length,4),l=M("b_data",t[2].dataType,t[2].dims.length,4),a=M("c_data",t[0].dataType,t[0].dims.length,4),p,h=(g,b,w)=>`select(${b}, ${g}, ${w})`;if(!o)p=s.setByOffset("global_idx",h(u.getByOffset("global_idx"),l.getByOffset("global_idx"),a.getByOffset("global_idx")));else{let g=(b,w,y="")=>{let _=`a_data[index_a${w}][component_a${w}]`,I=`b_data[index_b${w}][component_b${w}]`,$=`bool(c_data[index_c${w}] & ${4278190080>>>(3-w)*8}u)`;return`\n let output_indices${w} = ${s.offsetToIndices(`global_idx * 4u + ${w}u`)};\n let offset_a${w} = ${u.broadcastedIndicesToOffset(`output_indices${w}`,s)};\n let offset_b${w} = ${l.broadcastedIndicesToOffset(`output_indices${w}`,s)};\n let offset_c${w} = ${a.broadcastedIndicesToOffset(`output_indices${w}`,s)};\n let index_a${w} = offset_a${w} / 4u;\n let index_b${w} = offset_b${w} / 4u;\n let index_c${w} = offset_c${w} / 4u;\n let component_a${w} = offset_a${w} % 4u;\n let component_b${w} = offset_b${w} % 4u;\n ${b}[${w}] = ${y}(${h(_,I,$)});\n `};n===9?p=`\n var data = vec4(0);\n ${g("data",0,"u32")}\n ${g("data",1,"u32")}\n ${g("data",2,"u32")}\n ${g("data",3,"u32")}\n output_data[global_idx] = dot(vec4(0x1, 0x100, 0x10000, 0x1000000), vec4(data));`:p=`\n ${g("output_data[global_idx]",0)}\n ${g("output_data[global_idx]",1)}\n ${g("output_data[global_idx]",2)}\n ${g("output_data[global_idx]",3)}\n `}return`\n ${e.registerUniform("vec_size","u32").declareVariables(a,u,l,s)}\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")}\n ${p}\n }`},Mc=e=>{let t=e[1].dims,r=e[2].dims,o=e[0].dims,n=e[1].dataType,s=!(U.areEqual(t,r)&&U.areEqual(r,o)),u=t,l=U.size(t);if(s){let p=dt.calcShape(dt.calcShape(t,r,!1),o,!1);if(!p)throw new Error("Can\'t perform where op on the given tensors");u=p,l=U.size(u)}let a=Math.ceil(l/4);return{name:"Where",shaderCache:{inputDependencies:["rank","rank","rank"]},getShaderSource:p=>Dc(p,e,u,s,n),getRunData:()=>({outputs:[{dims:u,dataType:n}],dispatchGroup:{x:Math.ceil(l/64/4)},programUniforms:[{type:"uint32",data:a},...L(o),...L(t),...L(r),...L(u)]})}},hu=e=>{e.compute(Mc(e.inputs))}});var yu,bu=j(()=>{"use strict";Wa();Un();La();ja();Ci();Mi();Vi();Gn();Ji();rs();ss();ls();ms();gs();ws();$s();xs();Fn();As();Es();js();Ks();jr();Xs();tu();au();uu();cu();fu();jt();Vn();gu();yu=new Map([["Abs",[qa]],["Acos",[Ka]],["Acosh",[Ya]],["Add",[Ii]],["ArgMax",[Na,zn]],["ArgMin",[Va,zn]],["Asin",[Za]],["Asinh",[Qa]],["Atan",[Xa]],["Atanh",[Ja]],["Attention",[Ha]],["AveragePool",[zs,Ms]],["BatchNormalization",[Ga]],["BiasAdd",[Fa]],["BiasSplitGelu",[_i]],["Cast",[ti,ei]],["Ceil",[ni]],["Clip",[ri]],["Concat",[zi,Ui]],["Conv",[qn,jn]],["ConvTranspose",[Xi,Qi]],["Cos",[oi]],["Cosh",[ai]],["CumSum",[es,ts]],["Div",[Ai]],["Einsum",[as,is]],["Elu",[ii,Yr]],["Equal",[Ti]],["Erf",[si]],["Exp",[ui]],["Expand",[ds]],["Floor",[di]],["FusedConv",[qn,jn]],["Gather",[ps,cs]],["GatherElements",[hs,fs]],["Gelu",[li]],["Gemm",[bs,ys]],["GlobalAveragePool",[Ns,Vs]],["GlobalMaxPool",[Fs,Ls]],["Greater",[ki]],["GreaterOrEqual",[Bi]],["InstanceNormalization",[vs]],["LayerNormalization",[Ss]],["LeakyRelu",[ci,Yr]],["Less",[Ri]],["LessOrEqual",[Di]],["Log",[xi]],["MatMul",[Li]],["MaxPool",[Hs,Gs]],["Mul",[Ei]],["MultiHeadAttention",[Is,Cs]],["Neg",[mi]],["Not",[pi]],["Pad",[Ts]],["Pow",[Oi]],["Range",[qs]],["Reciprocal",[fi]],["ReduceMin",[Ra]],["ReduceMean",[Ta]],["ReduceMax",[ka]],["ReduceSum",[Da]],["ReduceProd",[Ba]],["ReduceL1",[Ea]],["ReduceL2",[Oa]],["ReduceLogSum",[za]],["ReduceLogSumExp",[Pa]],["ReduceSumSquare",[Ma]],["Relu",[hi]],["Resize",[Zs,Qs]],["Sigmoid",[gi]],["Sin",[yi]],["Sinh",[bi]],["Slice",[nu,ou]],["SkipLayerNormalization",[Js,eu]],["Split",[du,lu]],["Sqrt",[wi]],["Softmax",[iu,su]],["Sub",[Pi]],["Tan",[vi]],["Tanh",[$i]],["ThresholdedRelu",[Si,Yr]],["Tile",[mu]],["Transpose",[ha,ga]],["Where",[hu]]])});var an,wu=j(()=>{"use strict";Lt();Ct();ve();an=class{constructor(t){this.backend=t;this.repo=new Map,this.attributesBound=!1}getArtifact(t){return this.repo.get(t)}setArtifact(t,r){this.repo.set(t,r)}run(t,r,o,n,s){kt(t.programInfo.name);let u=this.backend.device,l=this.backend.getComputePassEncoder();this.backend.writeTimestamp(this.backend.pendingDispatchNumber*2),l.setPipeline(t.computePipeline);let a=[];for(let h of r)a.push({binding:a.length,resource:{buffer:h.buffer}});for(let h of o)a.push({binding:a.length,resource:{buffer:h.buffer}});s&&a.push({binding:a.length,resource:s});let p=u.createBindGroup({layout:t.computePipeline.getBindGroupLayout(0),entries:a,label:t.programInfo.name});l.setBindGroup(0,p),l.dispatchWorkgroups(...n),this.backend.writeTimestamp(this.backend.pendingDispatchNumber*2+1),this.backend.pendingDispatchNumber++,(this.backend.pendingDispatchNumber>=this.backend.maxDispatchNumber||this.backend.queryType==="at-passes")&&this.backend.endComputePass(),this.backend.pendingDispatchNumber>=this.backend.maxDispatchNumber&&this.backend.flush(),Rt(t.programInfo.name)}dispose(){}build(t,r){kt(t.name);let o=this.backend.device,n=[];o.features.has("shader-f16")&&n.push("enable f16;");let s=ma(r),u=t.getShaderSource(s),l=`${n.join(`\n`)}\n${s.additionalImplementations}\n${u}`,a=o.createShaderModule({code:l,label:t.name});Be("verbose",()=>`[WebGPU] ${t.name} shader code: ${l}`);let p=o.createComputePipeline({compute:{module:a,entryPoint:"main"},layout:"auto",label:t.name});return Rt(t.name),{programInfo:t,computePipeline:p}}normalizeDispatchGroupSize(t){let r=typeof t=="number"?t:t.x,o=typeof t=="number"?1:t.y||1,n=typeof t=="number"?1:t.z||1,s=this.backend.device.limits.maxComputeWorkgroupsPerDimension;if(r<=s&&o<=s&&n<=s)return[r,o,n];let u=r*o*n,l=Math.ceil(Math.sqrt(u));if(l>s){if(l=Math.ceil(Math.cbrt(u)),l>s)throw new Error("Total dispatch size exceeds WebGPU maximum.");return[l,l,l]}else return[l,l,1]}}});var zc,Uc,sn,vu=j(()=>{"use strict";Lt();Ne();Ct();ua();pa();bu();wu();zc=(e,t)=>{if(t.length!==e.length)throw new Error(`inputDependencies length ${t.length} is not equal to inputTensors length ${e.length}.`);let r=[];for(let o=0;o{let o=e.name;return e.shaderCache?.hint&&(o+="["+e.shaderCache.hint+"]"),o+=":"+r+`:${zc(t,e.shaderCache?.inputDependencies??new Array(t.length).fill("dims"))}`,o},sn=class{constructor(){this.currentKernelId=null;this.commandEncoder=null;this.computePassEncoder=null;this.maxDispatchNumber=16;this.pendingDispatchNumber=0;this.pendingKernels=[];this.pendingQueries=new Map;this.sessionExternalDataMapping=new Map}get currentKernelCustomData(){if(this.currentKernelId===null)throw new Error("currentKernelCustomData(): currentKernelId is null. (should not happen)");let t=this.kernelCustomData.get(this.currentKernelId);return t||(t={},this.kernelCustomData.set(this.currentKernelId,t)),t}async initialize(t,r){this.env=t;let o=[],n={requiredLimits:{maxComputeWorkgroupStorageSize:r.limits.maxComputeWorkgroupStorageSize,maxComputeWorkgroupsPerDimension:r.limits.maxComputeWorkgroupsPerDimension,maxStorageBufferBindingSize:r.limits.maxStorageBufferBindingSize,maxBufferSize:r.limits.maxBufferSize,maxComputeInvocationsPerWorkgroup:r.limits.maxComputeInvocationsPerWorkgroup,maxComputeWorkgroupSizeX:r.limits.maxComputeWorkgroupSizeX,maxComputeWorkgroupSizeY:r.limits.maxComputeWorkgroupSizeY,maxComputeWorkgroupSizeZ:r.limits.maxComputeWorkgroupSizeZ},requiredFeatures:o};r.features.has("chromium-experimental-timestamp-query-inside-passes")?o.push("chromium-experimental-timestamp-query-inside-passes"):r.features.has("timestamp-query")&&o.push("timestamp-query"),r.features.has("shader-f16")&&o.push("shader-f16"),this.device=await r.requestDevice(n),this.gpuDataManager=ca(this),this.programManager=new an(this),this.kernels=new Map,this.kernelPersistentData=new Map,this.kernelCustomData=new Map,ia(t.logLevel,!!t.debug),this.device.onuncapturederror=s=>{s.error instanceof GPUValidationError&&console.error(`An uncaught WebGPU validation error was raised: ${s.error.message}`)},Object.defineProperty(this.env.webgpu,"device",{value:this.device}),this.setQueryType()}dispose(){typeof this.querySet<"u"&&this.querySet.destroy(),this.gpuDataManager.dispose()}getCommandEncoder(){return this.commandEncoder||(this.commandEncoder=this.device.createCommandEncoder(),this.setQueryType(),this.queryType!=="none"&&typeof this.querySet>"u"&&(this.querySet=this.device.createQuerySet({type:"timestamp",count:this.maxDispatchNumber*2}),this.queryResolveBuffer=this.device.createBuffer({size:this.maxDispatchNumber*2*8,usage:GPUBufferUsage.COPY_SRC|GPUBufferUsage.QUERY_RESOLVE}))),this.commandEncoder}getComputePassEncoder(){if(!this.computePassEncoder){let t={};this.queryType==="at-passes"&&(t.timestampWrites={querySet:this.querySet,beginningOfPassWriteIndex:this.pendingDispatchNumber*2,endOfPassWriteIndex:this.pendingDispatchNumber*2+1}),this.computePassEncoder=this.getCommandEncoder().beginComputePass(t)}return this.computePassEncoder}endComputePass(){this.computePassEncoder&&(this.computePassEncoder.end(),this.computePassEncoder=null)}flush(){if(!this.commandEncoder)return;kt(),this.endComputePass();let t;this.queryType!=="none"&&(this.commandEncoder.resolveQuerySet(this.querySet,0,this.pendingDispatchNumber*2,this.queryResolveBuffer,0),t=this.device.createBuffer({size:this.pendingDispatchNumber*2*8,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST}),this.pendingQueries.set(t,this.pendingKernels),this.pendingKernels=[],this.commandEncoder.copyBufferToBuffer(this.queryResolveBuffer,0,t,0,this.pendingDispatchNumber*2*8)),this.device.queue.submit([this.commandEncoder.finish()]),this.gpuDataManager.refreshPendingBuffers(),this.commandEncoder=null,this.pendingDispatchNumber=0,this.queryType!=="none"&&t.mapAsync(GPUMapMode.READ).then(()=>{let r=new BigUint64Array(t.getMappedRange()),o=this.pendingQueries.get(t);for(let n=0;n"u"&&(this.queryTimeBase=w);let _=Number(w-this.queryTimeBase),I=Number(y-this.queryTimeBase);if(!Number.isSafeInteger(_)||!Number.isSafeInteger(I))throw new RangeError("incorrect timestamp range");if(this.env.webgpu.profiling?.ondata)this.env.webgpu.profiling.ondata({version:1,inputsMetadata:g.map($=>({dims:$.dims,dataType:Xe($.dataType)})),outputsMetadata:b.map($=>({dims:$.dims,dataType:Xe($.dataType)})),kernelId:u,kernelType:a,kernelName:p,programName:h,startTime:_,endTime:I});else{let $="";g.forEach((E,A)=>{$+=`input[${A}]: [${E.dims}] | ${Xe(E.dataType)}, `});let x="";b.forEach((E,A)=>{x+=`output[${A}]: [${E.dims}] | ${Xe(E.dataType)}, `}),console.log(`[profiling] kernel "${u}|${a}|${p}|${h}" ${$}${x}execution time: ${I-_} ns`)}An("GPU",`${h}::${w}::${y}`)}t.unmap(),this.pendingQueries.delete(t)}),Rt()}run(t,r,o,n,s){kt(t.name);let u=[];for(let x=0;xE):o;if(h.length!==l.length)throw new Error(`Output size ${h.length} must be equal to ${l.length}.`);let g=[],b=[];for(let x=0;x=l.length)throw new Error(`Invalid output index: ${h[x]}`);if(h[x]===-3)continue;let E=h[x]===-1,A=h[x]===-2,z=E||A?s(l[x].dataType,l[x].dims):n(h[x],l[x].dataType,l[x].dims),R=this.gpuDataManager.get(z.data);if(!R)throw new Error(`no GPU data for output: ${z.data}`);if(E&&this.temporaryData.push(R),A){let V=this.kernelPersistentData.get(this.currentKernelId);V||(V=[],this.kernelPersistentData.set(this.currentKernelId,V)),V.push(R)}g.push(z),b.push(R)}let w;if(p){let x=0,E=[];p.forEach(V=>{let T=typeof V.data=="number"?[V.data]:V.data;if(T.length===0)return;let N=T.length<=2?T.length*4:16;x=Math.ceil(x/N)*N,E.push(x),x+=T.length>4?Math.ceil(T.length/4)*16:T.length*4});let A=16;x=Math.ceil(x/A)*A;let z=new ArrayBuffer(x);p.forEach((V,T)=>{let N=E[T],te=typeof V.data=="number"?[V.data]:V.data;V.type==="int32"?new Int32Array(z,N,te.length).set(te):V.type==="uint32"?new Uint32Array(z,N,te.length).set(te):new Float32Array(z,N,te.length).set(te)});let R=this.gpuDataManager.create(x,GPUBufferUsage.COPY_DST|GPUBufferUsage.UNIFORM);this.device.queue.writeBuffer(R.buffer,0,z,0,x),this.gpuDataManager.release(R.id),w={offset:0,size:x,buffer:R.buffer}}let y=this.programManager.normalizeDispatchGroupSize(a),_=y[1]===1&&y[2]===1,I=Uc(t,r,_),$=this.programManager.getArtifact(I);if($||($=this.programManager.build(t,y),this.programManager.setArtifact(I,$),Be("info",()=>`[artifact] key: ${I}, programName: ${t.name}`)),Be("info",()=>`[ProgramManager] run "${t.name}" (key=${I}) with ${y[0]}x${y[1]}x${y[2]}`),this.queryType!=="none"){let x={kernelId:this.currentKernelId,programName:$.programInfo.name,inputTensorViews:r,outputTensorViews:g};this.pendingKernels.push(x)}return this.programManager.run($,u,b,y,w),Rt(t.name),g}upload(t,r){this.gpuDataManager.upload(t,r)}memcpy(t,r){this.gpuDataManager.memcpy(t,r)}async download(t,r){await this.gpuDataManager.download(t,r)}alloc(t){return this.gpuDataManager.create(t).id}free(t){return this.gpuDataManager.release(t)}createKernel(t,r,o,n){let s=yu.get(t);if(!s)throw new Error(`kernel not implemented: ${t}`);let u={kernelType:t,kernelName:n,kernelEntry:s[0],attributes:[s[1],o]};this.kernels.set(r,u)}releaseKernel(t){let r=this.kernelPersistentData.get(t);if(r){for(let o of r)this.gpuDataManager.release(o.id);this.kernelPersistentData.delete(t)}this.kernelCustomData.delete(t),this.kernels.delete(t)}computeKernel(t,r,o){let n=this.kernels.get(t);if(!n)throw new Error(`kernel not created: ${t}`);let s=n.kernelType,u=n.kernelName,l=n.kernelEntry,a=n.attributes;if(this.currentKernelId!==null)throw new Error(`kernel "[${s}] ${u}" is not allowed to be called recursively`);this.currentKernelId=t,a[0]&&(a[1]=a[0](a[1]),a[0]=void 0),Be("info",()=>`[WebGPU] Start to run kernel "[${s}] ${u}"...`);let p=this.env.debug;this.temporaryData=[];try{return p&&this.device.pushErrorScope("validation"),l(r,a[1]),0}catch(h){return o.push(Promise.resolve(`[WebGPU] Kernel "[${s}] ${u}" failed. ${h}`)),1}finally{p&&o.push(this.device.popErrorScope().then(h=>h?`GPU validation error for kernel "[${s}] ${u}": ${h.message}`:null));for(let h of this.temporaryData)this.gpuDataManager.release(h.id);this.temporaryData=[],this.currentKernelId=null}}registerBuffer(t,r,o,n){let s=this.sessionExternalDataMapping.get(t);s||(s=new Map,this.sessionExternalDataMapping.set(t,s));let u=s.get(r),l=this.gpuDataManager.registerExternalBuffer(o,n,u?.[1]);return s.set(r,[l,o]),l}unregisterBuffers(t){let r=this.sessionExternalDataMapping.get(t);r&&(r.forEach(o=>this.gpuDataManager.unregisterExternalBuffer(o[1])),this.sessionExternalDataMapping.delete(t))}getBuffer(t){let r=this.gpuDataManager.get(t);if(!r)throw new Error(`no GPU data for buffer: ${t}`);return r.buffer}createDownloader(t,r,o){return async()=>{let n=await On(this,t,r);return sa(n.buffer,o)}}writeTimestamp(t){this.queryType==="inside-passes"&&this.computePassEncoder.writeTimestamp(this.querySet,t)}setQueryType(){this.queryType="none",(this.env.webgpu.profiling?.mode==="default"||this.env.wasm.trace)&&(this.device.features.has("chromium-experimental-timestamp-query-inside-passes")?this.queryType="inside-passes":this.device.features.has("timestamp-query")&&(this.queryType="at-passes"))}}});var $u={};Br($u,{init:()=>Vc});var gr,Jn,Vc,Su=j(()=>{"use strict";Ne();vu();Ct();$e();gr=class e{constructor(t,r,o,n){this.module=t;this.dataType=r;this.data=o;this.dims=n}getFloat32Array(){if(this.dataType!==1)throw new Error("Invalid data type");let t=U.size(this.dims);return t===0?new Float32Array:new Float32Array(this.module.HEAP8.buffer,this.data,t)}getBigInt64Array(){if(this.dataType!==7)throw new Error("Invalid data type");let t=U.size(this.dims);return t===0?new BigInt64Array:new BigInt64Array(this.module.HEAP8.buffer,this.data,t)}getInt32Array(){if(this.dataType!==6)throw new Error("Invalid data type");let t=U.size(this.dims);return t===0?new Int32Array:new Int32Array(this.module.HEAP8.buffer,this.data,t)}reshape(t){if(U.size(t)!==U.size(this.dims))throw new Error("Invalid new shape");return new e(this.module,this.dataType,this.data,t)}},Jn=class{constructor(t,r,o){this.module=t;this.backend=r;this.customDataOffset=0;this.customDataSize=0;let n=t.HEAPU32,s=o>>>2;this.opKernelContext=n[s++];let u=n[s++];this.outputCount=n[s++],this.customDataOffset=n[s++],this.customDataSize=n[s++];let l=[];for(let a=0;atypeof l=="number"?this.inputs[l]:l)??this.inputs,n=r?.outputs??[],s=(l,a,p)=>new gr(this.module,a,this.output(l,p),p),u=(l,a)=>{let p=cr(l);if(!p)throw new Error(`Unsupported data type: ${l}`);let h=p*U.size(a);return new gr(this.module,l,this.backend.gpuDataManager.create(h).id,a)};return this.backend.run(t,o,n,s,u)}output(t,r){let o=this.module.stackSave();try{let n=this.module.stackAlloc((1+r.length)*4),s=n>>2;this.module.HEAPU32[s++]=r.length;for(let u=0;u{let o=e.jsepInit;if(!o)throw new Error("Failed to initialize JSEP. The WebAssembly module is not built with JSEP support.");let n=new sn;await n.initialize(t,r),o(n,s=>n.alloc(s),s=>n.free(s),(s,u,l,a=!1)=>{if(a)Be("verbose",()=>`[WebGPU] jsepCopyGpuToGpu: src=${s}, dst=${u}, size=${l}`),n.memcpy(s,u);else{Be("verbose",()=>`[WebGPU] jsepCopyCpuToGpu: dataOffset=${s}, gpuDataId=${u}, size=${l}`);let p=e.HEAPU8.subarray(s>>>0,(s>>>0)+l);n.upload(u,p)}},async(s,u,l)=>{Be("verbose",()=>`[WebGPU] jsepCopyGpuToCpu: gpuDataId=${s}, dataOffset=${u}, size=${l}`),await n.download(s,()=>e.HEAPU8.subarray(u>>>0,(u>>>0)+l))},(s,u,l)=>n.createKernel(s,u,l,e.UTF8ToString(e._JsepGetNodeName(u))),s=>n.releaseKernel(s),(s,u,l,a)=>{Be("verbose",()=>`[WebGPU] jsepRun: sessionHandle=${l}, kernel=${s}, contextDataOffset=${u}`);let p=new Jn(e,n,u);return n.computeKernel(s,p,a)})}});var Mo;Mo=Io();var Ju=Ro(),Sn,xn=!1,Dr=!1,Do=!1,ed=e=>{if(e===1)return!1;if(typeof SharedArrayBuffer>"u")return typeof self<"u"&&!self.crossOriginIsolated&&console.warn("env.wasm.numThreads is set to "+e+", but this will not work unless you enable crossOriginIsolated mode. See https://web.dev/cross-origin-isolation-guide/ for more info."),!1;typeof process<"u"&&process.versions&&process.versions.node&&console.warn("env.wasm.numThreads is set to "+e+", however, currently onnxruntime-web does not support multi-threads in Node.js. Please consider using onnxruntime-node for performance critical scenarios.");try{return typeof MessageChannel<"u"&&new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch{return!1}},td=()=>{try{return WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,30,1,28,0,65,0,253,15,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,186,1,26,11]))}catch{return!1}},rd=(e,t)=>e?t?"ort-wasm-simd-threaded.wasm":"ort-wasm-simd.wasm":t?"ort-wasm-threaded.wasm":"ort-wasm.wasm",zo=async e=>{if(xn)return Promise.resolve();if(Dr)throw new Error("multiple calls to \'initializeWebAssembly()\' detected.");if(Do)throw new Error("previous call to \'initializeWebAssembly()\' failed.");Dr=!0;let t=e.initTimeout,r=e.numThreads,o=e.simd,n=ed(r),s=o&&td(),u=e.wasmPaths,l=typeof u=="string"?u:void 0,a=rd(s,n),p=typeof u=="object"?u[a]:void 0,h=!1,g=[];if(t>0&&g.push(new Promise(b=>{setTimeout(()=>{h=!0,b()},t)})),g.push(new Promise((b,w)=>{let y=n?Ju:Mo,_={locateFile:(I,$)=>{if(n&&I.endsWith(".worker.js")&&typeof Blob<"u")return URL.createObjectURL(new Blob([Bo()],{type:"text/javascript"}));if(I.endsWith(".wasm")){if(p)return p;let x=l??$;return a==="ort-wasm-simd.wasm"?x+"ort-wasm-simd.jsep.wasm":a==="ort-wasm-simd-threaded.wasm"?x+"ort-wasm-simd-threaded.jsep.wasm":x+a}return $+I}};if(n)if(_.numThreads=r,typeof Blob>"u")_.mainScriptUrlOrBlob=(void 0)(__dirname,"ort-wasm-threaded.js");else{let I=`var ortWasmThreaded=${y.toString()};`;_.mainScriptUrlOrBlob=new Blob([I],{type:"text/javascript"})}y(_).then(I=>{Dr=!1,xn=!0,Sn=I,b()},I=>{Dr=!1,Do=!0,w(I)})})),await Promise.race(g),h)throw new Error(`WebAssembly backend initializing failed due to timeout: ${t}ms`)},Ve=()=>{if(xn&&Sn)return Sn;throw new Error("WebAssembly is not initialized yet.")};var He=(e,t)=>{let r=Ve(),o=r.lengthBytesUTF8(e)+1,n=r._malloc(o);return r.stringToUTF8(e,n,o),t.push(n),n},lr=(e,t,r,o)=>{if(typeof e=="object"&&e!==null){if(r.has(e))throw new Error("Circular reference in options");r.add(e)}Object.entries(e).forEach(([n,s])=>{let u=t?t+n:n;if(typeof s=="object")lr(s,u+".",r,o);else if(typeof s=="string"||typeof s=="number")o(u,s.toString());else if(typeof s=="boolean")o(u,s?"1":"0");else throw new Error(`Can\'t handle extra config type: ${typeof s}`)})},ke=e=>{let t=Ve(),r=t.stackSave();try{let o=t.stackAlloc(8);t._OrtGetLastError(o,o+4);let n=t.HEAP32[o/4],s=t.HEAPU32[o/4+1],u=s?t.UTF8ToString(s):"";throw new Error(`${e} ERROR_CODE: ${n}, ERROR_MESSAGE: ${u}`)}finally{t.stackRestore(r)}};var Uo=e=>{let t=Ve(),r=0,o=[],n=e||{};try{if(e?.logSeverityLevel===void 0)n.logSeverityLevel=2;else if(typeof e.logSeverityLevel!="number"||!Number.isInteger(e.logSeverityLevel)||e.logSeverityLevel<0||e.logSeverityLevel>4)throw new Error(`log serverity level is not valid: ${e.logSeverityLevel}`);if(e?.logVerbosityLevel===void 0)n.logVerbosityLevel=0;else if(typeof e.logVerbosityLevel!="number"||!Number.isInteger(e.logVerbosityLevel))throw new Error(`log verbosity level is not valid: ${e.logVerbosityLevel}`);e?.terminate===void 0&&(n.terminate=!1);let s=0;return e?.tag!==void 0&&(s=He(e.tag,o)),r=t._OrtCreateRunOptions(n.logSeverityLevel,n.logVerbosityLevel,!!n.terminate,s),r===0&&ke("Can\'t create run options."),e?.extra!==void 0&&lr(e.extra,"",new WeakSet,(u,l)=>{let a=He(u,o),p=He(l,o);t._OrtAddRunConfigEntry(r,a,p)!==0&&ke(`Can\'t set a run config entry: ${u} - ${l}.`)}),[r,o]}catch(s){throw r!==0&&t._OrtReleaseRunOptions(r),o.forEach(u=>t._free(u)),s}};var nd=e=>{switch(e){case"disabled":return 0;case"basic":return 1;case"extended":return 2;case"all":return 99;default:throw new Error(`unsupported graph optimization level: ${e}`)}},od=e=>{switch(e){case"sequential":return 0;case"parallel":return 1;default:throw new Error(`unsupported execution mode: ${e}`)}},ad=e=>{e.extra||(e.extra={}),e.extra.session||(e.extra.session={});let t=e.extra.session;t.use_ort_model_bytes_directly||(t.use_ort_model_bytes_directly="1"),e.executionProviders&&e.executionProviders.some(r=>(typeof r=="string"?r:r.name)==="webgpu")&&(e.enableMemPattern=!1)},id=(e,t,r)=>{for(let o of t){let n=typeof o=="string"?o:o.name;switch(n){case"webnn":if(n="WEBNN",typeof o!="string"){let u=o;if(u?.deviceType){let l=He("deviceType",r),a=He(u.deviceType,r);Ve()._OrtAddSessionConfigEntry(e,l,a)!==0&&ke(`Can\'t set a session config entry: \'deviceType\' - ${u.deviceType}.`)}if(u?.numThreads){let l=u.numThreads;(typeof l!="number"||!Number.isInteger(l)||l<0)&&(l=0);let a=He("numThreads",r),p=He(l.toString(),r);Ve()._OrtAddSessionConfigEntry(e,a,p)!==0&&ke(`Can\'t set a session config entry: \'numThreads\' - ${u.numThreads}.`)}if(u?.powerPreference){let l=He("powerPreference",r),a=He(u.powerPreference,r);Ve()._OrtAddSessionConfigEntry(e,l,a)!==0&&ke(`Can\'t set a session config entry: \'powerPreference\' - ${u.powerPreference}.`)}}break;case"webgpu":if(n="JS",typeof o!="string"){let u=o;if(u?.preferredLayout){if(u.preferredLayout!=="NCHW"&&u.preferredLayout!=="NHWC")throw new Error(`preferredLayout must be either \'NCHW\' or \'NHWC\': ${u.preferredLayout}`);let l=He("preferredLayout",r),a=He(u.preferredLayout,r);Ve()._OrtAddSessionConfigEntry(e,l,a)!==0&&ke(`Can\'t set a session config entry: \'preferredLayout\' - ${u.preferredLayout}.`)}}break;case"wasm":case"cpu":continue;default:throw new Error(`not supported execution provider: ${n}`)}let s=He(n,r);Ve()._OrtAppendExecutionProvider(e,s)!==0&&ke(`Can\'t append execution provider: ${n}.`)}},Vo=e=>{let t=Ve(),r=0,o=[],n=e||{};ad(n);try{let s=nd(n.graphOptimizationLevel??"all"),u=od(n.executionMode??"sequential"),l=typeof n.logId=="string"?He(n.logId,o):0,a=n.logSeverityLevel??2;if(!Number.isInteger(a)||a<0||a>4)throw new Error(`log serverity level is not valid: ${a}`);let p=n.logVerbosityLevel??0;if(!Number.isInteger(p)||p<0||p>4)throw new Error(`log verbosity level is not valid: ${p}`);let h=typeof n.optimizedModelFilePath=="string"?He(n.optimizedModelFilePath,o):0;if(r=t._OrtCreateSessionOptions(s,!!n.enableCpuMemArena,!!n.enableMemPattern,u,!!n.enableProfiling,0,l,a,p,h),r===0&&ke("Can\'t create session options."),n.executionProviders&&id(r,n.executionProviders,o),n.freeDimensionOverrides)for(let[g,b]of Object.entries(n.freeDimensionOverrides)){if(typeof g!="string")throw new Error(`free dimension override name must be a string: ${g}`);if(typeof b!="number"||!Number.isInteger(b)||b<0)throw new Error(`free dimension override value must be a non-negative integer: ${b}`);let w=He(g,o);t._OrtAddFreeDimensionOverride(r,w,b)!==0&&ke(`Can\'t set a free dimension override: ${g} - ${b}.`)}return n.extra!==void 0&&lr(n.extra,"",new WeakSet,(g,b)=>{let w=He(g,o),y=He(b,o);t._OrtAddSessionConfigEntry(r,w,y)!==0&&ke(`Can\'t set a session config entry: ${g} - ${b}.`)}),[r,o]}catch(s){throw r!==0&&t._OrtReleaseSessionOptions(r),o.forEach(u=>t._free(u)),s}};Ne();var Wo=async e=>{if(typeof e=="string")if(typeof process<"u"&&process.versions&&process.versions.node)try{return new Uint8Array(await(void 0)(e))}catch(t){if(t.code==="ERR_FS_FILE_TOO_LARGE"){let r=(void 0)(e),o=[];for await(let n of r)o.push(n);return new Uint8Array(Buffer.concat(o))}throw t}else{let t=await fetch(e);if(!t.ok)throw new Error(`failed to load external data file: ${e}`);let r=t.headers.get("Content-Length"),o=r?parseInt(r,10):0;if(o<1073741824)return new Uint8Array(await t.arrayBuffer());{if(!t.body)throw new Error(`failed to load external data file: ${e}, no response body.`);let n=t.body.getReader(),s;try{s=new ArrayBuffer(o)}catch(l){if(l instanceof RangeError){let a=Math.ceil(o/65536);s=new WebAssembly.Memory({initial:a,maximum:a}).buffer}else throw l}let u=0;for(;;){let{done:l,value:a}=await n.read();if(l)break;let p=a.byteLength;new Uint8Array(s,u,p).set(a),u+=p}return new Uint8Array(s,0,o)}}else return e instanceof Blob?new Uint8Array(await e.arrayBuffer()):e instanceof Uint8Array?e:new Uint8Array(e)};var Nc=(e,t)=>{Ve()._OrtInit(e,t)!==0&&ke("Can\'t initialize onnxruntime.")},_u=async e=>{Nc(e.wasm.numThreads,pr(e.logLevel))},Cu=async(e,t)=>{if(t==="webgpu"){if(typeof navigator>"u"||!navigator.gpu)throw new Error("WebGPU is not supported in current environment");let r=await navigator.gpu.requestAdapter();if(!r)throw new Error(\'Failed to get GPU adapter. You may need to enable flag "--enable-unsafe-webgpu" if you are using Chrome.\');if(!e.wasm.simd)throw new Error("Not supported for WebGPU=ON and SIMD=OFF. Please set `env.wasm.simd` to true when using `webgpu` EP");let o=(Su(),Ht($u)).init;await o(Ve(),e,r)}},yr=new Map,Wc=e=>{let t=Ve(),r=t.stackSave();try{let o=t.stackAlloc(8);return t._OrtGetInputOutputCount(e,o,o+4)!==0&&ke("Can\'t get session input/output count."),[t.HEAP32[o/4],t.HEAP32[o/4+1]]}finally{t.stackRestore(r)}},eo=e=>{let t=Ve(),r=t._malloc(e.byteLength);if(r===0)throw new Error(`Can\'t create a session. failed to allocate a buffer of size ${e.byteLength}.`);return t.HEAPU8.set(e,r),[r,e.byteLength]},Iu=async(e,t)=>{let r,o,n=Ve();Array.isArray(e)?[r,o]=e:e.buffer===n.HEAPU8.buffer?[r,o]=[e.byteOffset,e.byteLength]:[r,o]=eo(e);let s=0,u=0,l=0,a=[],p=[],h=[];try{if([u,a]=Vo(t),t?.externalData&&n.mountExternalData){let $=[];for(let x of t.externalData){let E=typeof x=="string"?x:x.path;$.push(Wo(typeof x=="string"?x:x.data).then(A=>{n.mountExternalData(E,A)}))}await Promise.all($)}s=n._OrtCreateSession(r,o,u),s===0&&ke("Can\'t create a session.");let[g,b]=Wc(s),w=[],y=[],_=[];for(let $=0;$$==="gpu-buffer")&&(l=n._OrtCreateBinding(s),l===0&&ke("Can\'t create IO binding."),I={handle:l,outputPreferredLocations:_,outputPreferredLocationsEncoded:_.map($=>Cn($))}),yr.set(s,[s,p,h,I]),[s,w,y]}catch(g){throw p.forEach(b=>n._OrtFree(b)),h.forEach(b=>n._OrtFree(b)),l!==0&&n._OrtReleaseBinding(l),s!==0&&n._OrtReleaseSession(s),g}finally{n._free(r),u!==0&&n._OrtReleaseSessionOptions(u),a.forEach(g=>n._free(g)),n.unmountExternalData?.()}},Au=e=>{let t=Ve(),r=yr.get(e);if(!r)throw new Error(`cannot release session. invalid session id: ${e}`);let[o,n,s,u]=r;u&&t._OrtReleaseBinding(u.handle),t.jsepUnregisterBuffers?.(e),n.forEach(l=>t._OrtFree(l)),s.forEach(l=>t._OrtFree(l)),t._OrtReleaseSession(o),yr.delete(e)},xu=(e,t,r,o,n)=>{if(!e){t.push(0);return}let s=Ve(),u=e[0],l=e[1],a=e[3],p,h;if(u==="string"&&a==="gpu-buffer")throw new Error("String tensor is not supported on GPU.");if(a==="gpu-buffer"){let w=e[2].gpuBuffer,y=cr(_n(u));h=l.reduce((_,I)=>_*I,1)*y,p=s.jsepRegisterBuffer(o,n,w,h)}else{let w=e[2];if(Array.isArray(w)){h=4*w.length,p=s._malloc(h),r.push(p);let y=p/4;for(let _=0;_s.HEAP32[w++]=_);let y=s._OrtCreateTensor(_n(u),p,h,b,l.length,Cn(a));y===0&&ke(`Can\'t create tensor for input/output. session=${o}, index=${n}.`),t.push(y)}finally{s.stackRestore(g)}},Tu=async(e,t,r,o,n,s)=>{let u=Ve(),l=yr.get(e);if(!l)throw new Error(`cannot run inference. invalid session id: ${e}`);let[a,p,h,g]=l,b=t.length,w=o.length,y=0,_=[],I=[],$=[],x=[],E=u.stackSave(),A=u.stackAlloc(b*4),z=u.stackAlloc(b*4),R=u.stackAlloc(w*4),V=u.stackAlloc(w*4);try{[y,_]=Uo(s);for(let Z=0;ZUe*Me,1);he=Xe(Ge);let ze=g?.outputPreferredLocations[o[Z]];if(he==="string"){if(ze==="gpu-buffer")throw new Error("String tensor is not supported on GPU.");let Ue=[],Me=ye/4;for(let wt=0;wt0){let Ue=u.jsepGetBuffer(ye),Me=cr(Ge);if(Me===void 0||!No(he))throw new Error(`Unsupported data type: ${he}`);Ie=!0,Q.push([he,be,{gpuBuffer:Ue,download:u.jsepCreateDownloader(Ue,et*Me,he),dispose:()=>{u._OrtReleaseTensor(Ee)}},"gpu-buffer"])}else{let Ue=Mr(he),Me=new Ue(et);new Uint8Array(Me.buffer,Me.byteOffset,Me.byteLength).set(u.HEAPU8.subarray(ye,ye+Me.byteLength)),Q.push([he,be,Me,"cpu"])}}finally{u.stackRestore(Pe),he==="string"&&ye&&u._free(ye),Ie||u._OrtReleaseTensor(Ee)}}return g&&u._OrtClearBoundOutputs(g.handle),Q}finally{u.stackRestore(E),I.forEach(T=>u._OrtReleaseTensor(T)),$.forEach(T=>u._OrtReleaseTensor(T)),x.forEach(T=>u._free(T)),y!==0&&u._OrtReleaseRunOptions(y),_.forEach(T=>u._free(T))}},Eu=e=>{let t=Ve(),r=yr.get(e);if(!r)throw new Error("invalid session id");let o=r[0],n=t._OrtEndProfiling(o);n===0&&ke("Can\'t get an profile file name."),t._OrtFree(n)},Ou=e=>{let t=[];for(let r of e){let o=r[2];!Array.isArray(o)&&"buffer"in o&&t.push(o.buffer)}return t};self.onmessage=e=>{let{type:t,in:r}=e.data;try{switch(t){case"init-wasm":zo(r.wasm).then(()=>{_u(r).then(()=>{postMessage({type:t})},o=>{postMessage({type:t,err:o})})},o=>{postMessage({type:t,err:o})});break;case"init-ep":{let{epName:o,env:n}=r;Cu(n,o).then(()=>{postMessage({type:t})},s=>{postMessage({type:t,err:s})});break}case"copy-from":{let{buffer:o}=r,n=eo(o);postMessage({type:t,out:n});break}case"create":{let{model:o,options:n}=r;Iu(o,n).then(s=>{postMessage({type:t,out:s})},s=>{postMessage({type:t,err:s})});break}case"release":Au(r),postMessage({type:t});break;case"run":{let{sessionId:o,inputIndices:n,inputs:s,outputIndices:u,options:l}=r;Tu(o,n,s,u,new Array(u.length).fill(null),l).then(a=>{a.some(p=>p[3]!=="cpu")?postMessage({type:t,err:"Proxy does not support non-cpu tensor location."}):postMessage({type:t,out:a},Ou(a))},a=>{postMessage({type:t,err:a})});break}case"end-profiling":Eu(r),postMessage({type:t});break;default:}}catch(o){postMessage({type:t,err:o})}};})();\n/**\n * @license\n * Copyright 2021 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the "License");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an "AS IS" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the "License");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an "AS IS" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n/**\n * @license\n * Copyright 2019 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the "License");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an "AS IS" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n'})),sl=N((()=>{se(),al(),mo(),Bu=()=>!!d.wasm.proxy&&typeof document<"u",Mu=!1,Pu=!1,Nu=!1,Uu=new Map,Vu=(e,t)=>{let n=Uu.get(e);n?n.push(t):Uu.set(e,[t])},Hu=()=>{if(Mu||!Pu||Nu||!Du)throw new Error("worker not ready")},Lu=e=>{switch(e.data.type){case"init-wasm":Mu=!1,e.data.err?(Nu=!0,Wu[1](e.data.err)):(Pu=!0,Wu[0]());break;case"init-ep":case"copy-from":case"create":case"release":case"run":case"end-profiling":{let t=Uu.get(e.data.type);e.data.err?t.shift()[1](e.data.err):t.shift()[0](e.data.out);break}}},Gu=typeof document<"u"?document?.currentScript?.src:void 0,Fu=async()=>{if(!Pu){if(Mu)throw new Error("multiple calls to 'initWasm()' detected.");if(Nu)throw new Error("previous call to 'initWasm()' failed.");if(Mu=!0,Bu())return void 0===d.wasm.wasmPaths&&Gu&&0!==Gu.indexOf("blob:")&&(d.wasm.wasmPaths=Gu.substr(0,+Gu.lastIndexOf("/")+1)),new Promise(((e,t)=>{Du?.terminate();let n=URL.createObjectURL(new Blob([il()],{type:"text/javascript"}));(Du=new Worker(n,{name:"ort-wasm-proxy-worker"})).onerror=e=>t(e),Du.onmessage=Lu,URL.revokeObjectURL(n),Wu=[e,t];let r={type:"init-wasm",in:d};Du.postMessage(r)}));try{await ke(d.wasm),await xu(d),Pu=!0}catch(e){throw Nu=!0,e}finally{Mu=!1}}},qu=async e=>{if(Bu())return Hu(),new Promise(((t,n)=>{Vu("init-ep",[t,n]);let r={type:"init-ep",in:{epName:e,env:d}};Du.postMessage(r)}));await Su(d,e)},ju=async e=>Bu()?(Hu(),new Promise(((t,n)=>{Vu("copy-from",[t,n]);let r={type:"copy-from",in:{buffer:e}};Du.postMessage(r,[e.buffer])}))):Cu(e),Ku=async(e,t)=>{if(Bu()){if(t?.preferredOutputLocation)throw new Error('session option "preferredOutputLocation" is not supported for proxy.');return Hu(),new Promise(((n,r)=>{Vu("create",[n,r]);let a={type:"create",in:{model:e,options:t}},i=[];e instanceof Uint8Array&&i.push(e.buffer),Du.postMessage(a,i)}))}return Tu(e,t)},Yu=async e=>{if(Bu())return Hu(),new Promise(((t,n)=>{Vu("release",[t,n]);let r={type:"release",in:e};Du.postMessage(r)}));ku(e)},Zu=async(e,t,n,r,a,i)=>{if(Bu()){if(n.some((e=>"cpu"!==e[3])))throw new Error("input tensor on GPU is not supported for proxy.");if(a.some((e=>e)))throw new Error("pre-allocated output tensor is not supported for proxy.");return Hu(),new Promise(((a,s)=>{Vu("run",[a,s]);let o=n,u={type:"run",in:{sessionId:e,inputIndices:t,inputs:o,outputIndices:r,options:i}};Du.postMessage(u,zu(o))}))}return Au(e,t,n,r,a,i)},Xu=async e=>{if(Bu())return Hu(),new Promise(((t,n)=>{Vu("end-profiling",[t,n]);let r={type:"end-profiling",in:e};Du.postMessage(r)}));Ru(e)}})),ol=N((()=>{se(),sl(),$o(),vo(),Qu=(e,t)=>{switch(e.location){case"cpu":return[e.type,e.dims,e.data,"cpu"];case"gpu-buffer":return[e.type,e.dims,{gpuBuffer:e.gpuBuffer},"gpu-buffer"];default:throw new Error(`invalid data location: ${e.location} for ${t()}`)}},Ju=e=>{switch(e[3]){case"cpu":return new E(e[0],e[2],e[1]);case"gpu-buffer":{let t=e[0];if(!Fe(t))throw new Error(`not supported data type: ${t} for deserializing GPU tensor`);let{gpuBuffer:n,download:r,dispose:a}=e[2];return E.fromGpuBuffer(n,{dataType:t,dims:e[1],download:r,dispose:a})}default:throw new Error(`invalid data location: ${e[3]}`)}},el=class{async fetchModelAndCopyToWasmMemory(e){return ju(await je(e))}async loadModel(e,t){let n;T(),n="string"==typeof e?typeof process<"u"&&process.versions&&process.versions.node?await je(e):await this.fetchModelAndCopyToWasmMemory(e):e,[this.sessionId,this.inputNames,this.outputNames]=await Ku(n,t),k()}async dispose(){return Yu(this.sessionId)}async run(e,t,n){T();let r=[],a=[];Object.entries(e).forEach((e=>{let t=e[0],n=e[1],i=this.inputNames.indexOf(t);if(-1===i)throw new Error(`invalid input '${t}'`);r.push(n),a.push(i)}));let i=[],s=[];Object.entries(t).forEach((e=>{let t=e[0],n=e[1],r=this.outputNames.indexOf(t);if(-1===r)throw new Error(`invalid output '${t}'`);i.push(n),s.push(r)}));let o=r.map(((e,t)=>Qu(e,(()=>`input "${this.inputNames[a[t]]}"`)))),u=i.map(((e,t)=>e?Qu(e,(()=>`output "${this.outputNames[s[t]]}"`)):null)),l=await Zu(this.sessionId,a,o,s,u,n),d={};for(let e=0;e{se(),sl(),ol(),tl=()=>{if(("number"!=typeof d.wasm.initTimeout||d.wasm.initTimeout<0)&&(d.wasm.initTimeout=0),"boolean"!=typeof d.wasm.simd&&(d.wasm.simd=!0),"boolean"!=typeof d.wasm.proxy&&(d.wasm.proxy=!1),"boolean"!=typeof d.wasm.trace&&(d.wasm.trace=!1),"number"!=typeof d.wasm.numThreads||!Number.isInteger(d.wasm.numThreads)||d.wasm.numThreads<=0){(typeof self<"u"&&!self.crossOriginIsolated||typeof process<"u"&&process.versions&&process.versions.node)&&(d.wasm.numThreads=1);let e=typeof navigator>"u"?(void 0)().length:navigator.hardwareConcurrency;d.wasm.numThreads=Math.min(4,Math.ceil((e||1)/2))}},nl=class{async init(e){tl(),await Fu(),await qu(e)}async createInferenceSessionHandler(e,t){let n=new el;return await n.loadModel(e,t),Promise.resolve(n)}}})),ll={};U(ll,{wasmBackend:()=>dl});var dl,pl=N((()=>{ul(),dl=new nl}));se(),se(),se();var cl=ie;{let e=(pl(),V(ll)).wasmBackend;i("webgpu",e,5),i("cpu",e,10),i("wasm",e,10)}Object.defineProperty(d.versions,"web",{value:"1.17.1",enumerable:!0})} +/** + * @license + * Copyright 2021 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +/** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +/** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */},t={};function n(r){var a=t[r];if(void 0!==a)return a.exports;var i=t[r]={exports:{}};return e[r](i,i.exports,n),i.exports}n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};(()=>{ +/*!******************!*\ + !*** ./index.js ***! + \******************/ +n.r(r);var e=n(/*! onnxruntime-web/webgpu */"./node_modules/onnxruntime-web/dist/esm/ort.webgpu.min.js");const t=500,a=500,i=1024,s=1024,o={sam_b:[{name:"sam-b-encoder",url:"https://huggingface.co/schmuell/sam-b-fp16/resolve/main/sam_vit_b_01ec64.encoder-fp16.onnx",size:180},{name:"sam-b-decoder",url:"https://huggingface.co/schmuell/sam-b-fp16/resolve/main/sam_vit_b_01ec64.decoder.onnx",size:17}],slimsam:[{name:"slimsam-encoder",url:"https://huggingface.co/Xenova/slimsam-77-uniform/resolve/main/onnx/vision_encoder.onnx",size:24},{name:"slimsam-decoder",url:"https://huggingface.co/Xenova/slimsam-77-uniform/resolve/main/onnx/prompt_encoder_mask_decoder.onnx",size:16}]},u=function(){const e=window.location.search.substring(1);var t={model:"sam_b",provider:"webgpu",device:"gpu",threads:"1"};let n=e.split("&");for(var r=0;r0)throw new Error("unknown argument: "+e[0])}return t.threads=parseInt(t.threads),t.local=parseInt(t.local),t.isSlimSam=t.model.includes("slimsam"),t}();let l,d,p;var c;e.default.env.wasm.wasmPaths="dist/",e.default.env.wasm.numThreads=u.threads,e.default.env.wasm.proxy=!1;var f,h,m=[],g=[],y=!1;function w(e){document.getElementById("status").innerText+=`\n${e}`}function $(t){return new e.default.Tensor(t.type,Float32Array.from(t.data),t.dims)}async function v(e){if(0==m.length)return;const[t,n]=[l.width,l.height],r=new OffscreenCanvas(t,n),a=r.getContext("2d"),i=a.getImageData(0,0,t,n),s=new OffscreenCanvas(t,n).getContext("2d");s.drawImage(await createImageBitmap(h),0,0);const o=s.getImageData(0,0,t,n);for(let e=0;e0)for(let t=0;t<4;++t){const n=e+t;i.data[n]=f.data[n]}a.putImageData(i,0,0);const u=document.createElement("a");u.download="image.png",u.href=URL.createObjectURL(await r.convertToBlob()),u.click(),u.remove()}async function b(t){if(!y)try{y=!0,l.style.cursor="wait";const n=l.getBoundingClientRect(),r=Math.trunc(t.clientX-n.left),a=Math.trunc(t.clientY-n.top),d=t.shiftKey?0:1;void 0===c&&await o[u.model][0].sess;const w=await c;t.ctrlKey||(m=[],g=[]),m.push(r,a),g.push(d);let v=l.getContext("2d");v.clearRect(0,0,l.width,l.height),l.width=f.width,l.height=f.height,v.putImageData(f,0,0);for(let e=0;eBigInt(e)))),[1,1,r.length]);return{image_embeddings:$(t.image_embeddings),image_positional_embeddings:$(t.image_positional_embeddings),input_points:a,input_labels:i}}(w,m,g):function(t,n,r){const a=new e.default.Tensor(new Float32Array(65536),[1,1,256,256]),o=new e.default.Tensor(new Float32Array([0]),[1]),u=new e.default.Tensor(new Float32Array([s,i]),[2]),l=new e.default.Tensor(new Float32Array(n),[1,n.length/2,2]),d=new e.default.Tensor(new Float32Array(r),[1,r.length]);return{image_embeddings:$(t.image_embeddings),point_coords:l,point_labels:d,mask_input:a,has_mask_input:o,orig_im_size:u}}(w,m,g),x=performance.now(),S=await b.run(_);p.innerText=`${(performance.now()-x).toFixed(1)}ms`;const E=u.isSlimSam?S.pred_masks:S.masks;h=E.toImageData(),v.globalAlpha=.3,v.drawImage(await createImageBitmap(h),0,0)}finally{l.style.cursor="default",y=!1}}async function _(n){const r=document.getElementById("encoder_latency");r.innerText="",d.disabled=!0,p.innerText="",l.style.cursor="wait",c=void 0;var h=n.width,m=n.height;h>m?h>t&&(m*=t/h,h=t):m>a&&(h*=a/m,m=a),h=Math.round(h),m=Math.round(m),l.width=h,l.height=m;var g=l.getContext("2d");g.drawImage(n,0,0,h,m),f=g.getImageData(0,0,h,m);const y=await e.default.Tensor.fromImage(f,{resizedWidth:i,resizedHeight:s}),w=u.isSlimSam?{pixel_values:y}:{input_image:y},$=await o[u.model][0].sess,v=performance.now();(c=$.run(w)).then((()=>{r.innerText=`${(performance.now()-v).toFixed(1)}ms`,l.style.cursor="default"})),d.disabled=!1}async function x(e,t){try{const n=await caches.open("onnx");let r=await n.match(e);null==r?(await n.add(e),r=await n.match(e),w(`${t} (network)`)):w(`${t} (cached)`);return await r.arrayBuffer()}catch(n){return w(`${t} (network)`),await fetch(e).then((e=>e.arrayBuffer()))}}async function S(){o[u.model];l=document.getElementById("img_canvas"),l.style.cursor="wait",d=document.getElementById("file-in"),p=document.getElementById("decoder_latency");let t=document.getElementById("original-image");await async function(t){const n=await caches.open("onnx");let r=0;for(const[e,a]of Object.entries(t))void 0===await n.match(a.url)&&(r+=a.size);w(r>0?`downloading ${r} MB from network ... it might take a while`:"loading...");const a=performance.now();for(const[n,r]of Object.entries(t))try{const t={executionProviders:[u.provider],enableMemPattern:!1,enableCpuMemArena:!1,extra:{session:{disable_prepacking:"1",use_device_allocator_for_initializers:"1",use_ort_model_bytes_directly:"1",use_ort_model_bytes_for_initializers:"1"}}},n=await x(r.url,r.name),a=r.opt||{},i={...t,...a};r.sess=await e.default.InferenceSession.create(n,i)}catch(e){w(`${r.url} failed, ${e}`)}w(`ready, ${(performance.now()-a).toFixed(1)}ms`)}(o[u.model]).then((()=>{l.addEventListener("click",b),document.getElementById("cut-button").addEventListener("click",v),d.onchange=function(e){let n=(e.target||window.event.src).files;if(FileReader&&n&&n.length){let e=new FileReader;e.onload=()=>{t.onload=()=>_(t),t.src=e.result},e.readAsDataURL(n[0])}},_(t)}),(e=>{w(e)}))}document.addEventListener("DOMContentLoaded",(()=>{(async function(){try{return(await navigator.gpu.requestAdapter()).features.has("shader-f16")}catch(e){return!1}})().then((e=>{e?S():w("Your GPU or Browser doesn't support webgpu/f16")}))}))})(); +//# sourceMappingURL=index.min.js.map \ No newline at end of file diff --git a/segment-anything/dist/index.min.js.map b/segment-anything/dist/index.min.js.map new file mode 100644 index 0000000..68cb745 --- /dev/null +++ b/segment-anything/dist/index.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"dist/index.min.js","mappings":";;;;;;;;;AAKA,IAA4gBA,EAAGC,EAAGC,EAAGC,EAA2+BC,EAA4CC,EAAGC,EAAmWC,EAA2CC,EAAGC,EAAq6EC,EAAGC,EAAGC,EAAGC,EAAGC,EAAonHC,EAAGC,EAAGC,EAAGC,EAA0vBC,EAAGC,EAA+tBC,EAAupIC,EAA2CC,EAAGC,EAAGC,EAAGC,EAAyaC,EAAquGC,EAA2EC,EAAoqHC,EAA9gqBC,EAAGC,OAAOC,eAAmBC,EAAGF,OAAOG,yBAA6BC,EAAGJ,OAAOK,oBAAwBC,EAAGN,OAAOO,UAAUC,eAAmBC,EAAE,CAACC,EAAEC,IAAI,KAAKD,IAAIC,EAAED,EAAEA,EAAE,IAAIC,GAAOC,EAAG,CAACF,EAAEC,IAAI,KAAKA,GAAGD,GAAGC,EAAE,CAACE,QAAQ,CAAC,IAAIA,QAAQF,GAAGA,EAAEE,SAASC,EAAG,CAACJ,EAAEC,KAAK,IAAI,IAAII,KAAKJ,EAAEZ,EAAGW,EAAEK,EAAE,CAACC,IAAIL,EAAEI,GAAGE,YAAW,GAAG,EAAqLC,EAAGR,GAAlL,EAACA,EAAEC,EAAEI,EAAEI,KAAK,GAAGR,GAAa,iBAAHA,GAAuB,mBAAHA,EAAc,IAAI,IAAIS,KAAKhB,EAAGO,IAAIL,EAAGe,KAAKX,EAAEU,IAAIA,IAAIL,GAAGhB,EAAGW,EAAEU,EAAE,CAACJ,IAAI,IAAIL,EAAES,GAAGH,aAAaE,EAAEjB,EAAGS,EAAES,KAAKD,EAAEF,aAAa,OAAOP,GAAaY,CAAGvB,EAAG,CAAC,EAAE,aAAa,CAACwB,OAAM,IAAKb,GAAmBc,EAAGf,GAAE,KAAkBzC,EAAG,IAAIyD,IAAIxD,EAAG,GAAGC,EAAG,CAACwC,EAAEC,EAAEI,KAAK,IAAGJ,GAAkB,mBAARA,EAAEe,MAA0D,mBAAjCf,EAAEgB,8BAAqY,MAAM,IAAIC,UAAU,uBAAnc,CAAqF,IAAIT,EAAEnD,EAAGgD,IAAIN,GAAG,QAAO,IAAJS,EAAWnD,EAAG6D,IAAInB,EAAE,CAACoB,QAAQnB,EAAEoB,SAAShB,QAAQ,CAAC,GAAGI,EAAEY,SAAShB,EAAE,OAAO,GAAGI,EAAEY,WAAWhB,GAAGI,EAAEW,UAAUnB,EAAE,MAAM,IAAIqB,MAAM,4BAA4BtB,qBAAqBK,IAAI,CAAC,GAAGA,GAAG,EAAE,CAAC,IAAIK,EAAEnD,EAAGgE,QAAQvB,IAAQ,IAALU,GAAQnD,EAAGiE,OAAOd,EAAE,GAAG,IAAI,IAAIe,EAAE,EAAEA,EAAElE,EAAGmE,OAAOD,IAAI,GAAGnE,EAAGgD,IAAI/C,EAAGkE,IAAIJ,UAAUhB,EAAoB,YAAjB9C,EAAGiE,OAAOC,EAAE,EAAEzB,GAAUzC,EAAGoE,KAAK3B,EAAE,CAAO,CAA0C,EAAGvC,EAAGmE,UAAU,IAAI3B,EAAa,IAAXD,EAAE0B,OAAWnE,EAAGyC,EAAEK,EAAE,GAAG,IAAI,IAAII,KAAKR,EAAE,CAAC,IAAIS,EAAEpD,EAAGgD,IAAIG,GAAG,GAAGC,EAAE,CAAC,GAAGA,EAAEmB,YAAY,OAAOnB,EAAEU,QAAQ,GAAGV,EAAEoB,QAAQ,SAAS,IAAIL,IAAIf,EAAEqB,YAAY,IAAI,OAAON,IAAIf,EAAEqB,YAAYrB,EAAEU,QAAQJ,KAAKP,UAAUC,EAAEqB,YAAYrB,EAAEmB,aAAY,EAAGnB,EAAEU,OAAO,CAAC,MAAMY,GAAGP,GAAGpB,EAAEsB,KAAK,CAACM,KAAKxB,EAAEyB,IAAIF,IAAItB,EAAEoB,SAAQ,CAAE,CAAC,eAAepB,EAAEqB,WAAW,CAAC,CAAC,CAAC,MAAM,IAAIT,MAAM,oCAAoCjB,EAAE8B,KAAI1B,GAAG,IAAIA,EAAEwB,SAASxB,EAAEyB,QAAOE,KAAK,QAAO,CAAC,IAAQC,EAAGtC,GAAE,KAAkBe,GAAG,IAAWwB,EAAGvC,GAAE,KAAkBrC,EAAG,YAAqB6E,EAAGxC,GAAE,KAAkBuC,IAAK3E,EAAG,UAAUC,EAAG,CAAC4E,KAAK,CAAC,EAAEC,MAAM,CAAC,EAAEC,OAAO,CAAC,EAAEC,SAAS,CAACC,OAAOlF,GAAI,YAAImF,CAAS7C,GAAG,QAAO,IAAJA,EAAW,CAAC,GAAa,iBAAHA,IAAwE,IAA3D,CAAC,UAAU,OAAO,UAAU,QAAQ,SAASuB,QAAQvB,GAAQ,MAAM,IAAIsB,MAAM,8BAA8BtB,KAAKrC,EAAGqC,CAAC,CAAC,EAAE,YAAI6C,GAAW,OAAOlF,CAAE,GAAG2B,OAAOC,eAAe3B,EAAG,WAAW,CAAC2C,YAAW,GAAG,IAAWuC,EAAG/C,GAAE,KAAkBwC,IAAK1E,EAAGD,KAAemF,EAAGhD,GAAE,KAAkBjC,EAAG,CAACkC,EAAEC,KAAK,IAAII,SAAS2C,SAAS,IAAIA,SAASC,cAAc,UAAU,IAAIC,gBAAgB,EAAE,GAAG7C,EAAE8C,MAAMnD,EAAEoD,KAAK,GAAG/C,EAAEgD,OAAOrD,EAAEoD,KAAK,GAAG,IAAI3C,EAAEJ,EAAEiD,WAAW,MAAM,GAAM,MAAH7C,EAAQ,CAAC,IAAIC,EAAEe,OAAoB,IAAlBxB,GAAGsD,cAAwC,SAAjBtD,EAAEsD,cAAuB7C,EAAEV,EAAEoD,KAAK,GAAG3B,EAAEzB,EAAEoD,KAAK,KAAK1C,EAAEV,EAAEoD,KAAK,GAAG3B,EAAEzB,EAAEoD,KAAK,IAAI,IAAkDI,EAAEC,EAAhDzB,OAAc,IAAZ/B,GAAGyD,OAAgBzD,EAAEyD,OAAO,MAAMC,EAAE1D,GAAG2D,UAAa,IAAJD,QAAqB,IAATA,EAAEE,KAAcL,EAAE,CAAC,IAAI,IAAI,IAAI,KAAoB,iBAARG,EAAEE,KAAeL,EAAE,CAACG,EAAEE,KAAKF,EAAEE,KAAKF,EAAEE,KAAKF,EAAEE,OAAOL,EAAE,CAACG,EAAEE,KAAK,GAAGF,EAAEE,KAAK,GAAGF,EAAEE,KAAK,GAAG,QAAe,IAAZF,EAAEE,KAAK,KAAcL,EAAE,GAAGG,EAAEE,KAAK,UAAS,IAAJF,QAAqB,IAATA,EAAEG,KAAcL,EAAE,CAAC,EAAE,EAAE,EAAE,GAAkB,iBAARE,EAAEG,KAAeL,EAAE,CAACE,EAAEG,KAAKH,EAAEG,KAAKH,EAAEG,KAAKH,EAAEG,OAAOL,EAAE,CAACE,EAAEG,KAAK,GAAGH,EAAEG,KAAK,GAAGH,EAAEG,KAAK,GAAG,QAAe,IAAZH,EAAEG,KAAK,KAAcL,EAAE,GAAGE,EAAEG,KAAK,KAAK,IAAIC,EAAEtC,EAAEf,EAAEsD,EAAE,EAAEC,EAAEF,EAAEG,EAAI,EAAFH,EAAII,GAAG,EAAM,SAAJnC,GAAYgC,EAAE,EAAEC,EAAEF,EAAEG,EAAI,EAAFH,EAAII,EAAI,EAAFJ,GAAS,QAAJ/B,GAAWgC,EAAE,EAAEC,EAAEF,EAAEG,EAAI,EAAFH,GAAS,QAAJ/B,IAAYgC,EAAE,EAAEE,EAAEH,EAAEE,EAAI,EAAFF,GAAK,IAAI,IAAIK,EAAE,EAAEA,EAAE3C,EAAE2C,IAAI,IAAI,IAAIC,EAAE,EAAEA,EAAE3D,EAAE2D,IAAI,CAAC,IAAIC,GAAGtE,EAAEuE,KAAKP,KAAKP,EAAE,IAAID,EAAE,GAAGgB,GAAGxE,EAAEuE,KAAKN,KAAKR,EAAE,IAAID,EAAE,GAAGiB,GAAGzE,EAAEuE,KAAKL,KAAKT,EAAE,IAAID,EAAE,GAAGkB,GAAO,IAALP,EAAO,KAAKnE,EAAEuE,KAAKJ,KAAKV,EAAE,IAAID,EAAE,GAAG/C,EAAEkE,UAAU,QAAQL,EAAE,IAAIE,EAAE,IAAIC,EAAE,IAAIC,EAAE,IAAIjE,EAAEmE,SAASP,EAAED,EAAE,EAAE,EAAE,CAAC,GAAG,cAAc/D,EAAE,OAAOA,EAAEwE,YAAY,MAAM,IAAIvD,MAAM,6BAA6B,CAAM,MAAM,IAAIA,MAAM,4BAA2B,EAAGvD,EAAG,CAACiC,EAAEC,KAAK,IAAsHQ,EAAlHJ,SAAS2C,SAAS,IAAIA,SAASC,cAAc,UAAUK,WAAW,MAAM,IAAIJ,gBAAgB,EAAE,GAAGI,WAAW,MAAQ,GAAM,MAAHjD,EAAikC,MAAM,IAAIiB,MAAM,6BAAzkC,CAAC,IAAIZ,EAAEe,EAAEO,OAAoB,IAAlB/B,GAAGsD,cAAwC,SAAjBtD,EAAEsD,cAAuB7C,EAAEV,EAAEoD,KAAK,GAAG3B,EAAEzB,EAAEoD,KAAK,GAAGpB,EAAEhC,EAAEoD,KAAK,KAAK1C,EAAEV,EAAEoD,KAAK,GAAG3B,EAAEzB,EAAEoD,KAAK,GAAGpB,EAAEhC,EAAEoD,KAAK,IAAI,IAA6DK,EAAEM,EAA3DJ,OAAM,IAAJ1D,QAAuB,IAAXA,EAAEyD,OAAgBzD,EAAEyD,OAAO,MAAMF,EAAEvD,GAAG2D,UAAa,IAAJJ,QAAqB,IAATA,EAAEK,KAAcJ,EAAE,CAAC,IAAI,IAAI,IAAI,KAAoB,iBAARD,EAAEK,KAAeJ,EAAE,CAACD,EAAEK,KAAKL,EAAEK,KAAKL,EAAEK,KAAKL,EAAEK,OAAOJ,EAAE,CAACD,EAAEK,KAAK,GAAGL,EAAEK,KAAK,GAAGL,EAAEK,KAAK,GAAG,UAAiB,IAAZL,EAAEK,KAAK,KAAcJ,EAAE,GAAGD,EAAEK,KAAK,UAAS,IAAJL,QAAqB,IAATA,EAAEM,KAAcC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAkB,iBAARP,EAAEM,KAAeC,EAAE,CAACP,EAAEM,KAAKN,EAAEM,KAAKN,EAAEM,KAAKN,EAAEM,OAAOC,EAAE,CAACP,EAAEM,KAAK,GAAGN,EAAEM,KAAK,GAAGN,EAAEM,KAAK,GAAG,QAAe,IAAZN,EAAEM,KAAK,KAAcC,EAAE,GAAGP,EAAEM,KAAK,KAAK,IAAIE,EAAEvC,EAAEf,EAAE,QAAO,IAAJT,SAAwB,IAAXA,EAAEyD,QAAqB,IAAJ1B,GAAkB,SAAX/B,EAAEyD,QAAqB,IAAJ1B,GAAkB,QAAX/B,EAAEyD,QAA2B,QAAXzD,EAAEyD,QAAgB,MAAM,IAAIpC,MAAM,iDAAiD,IAAI2C,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEE,EAAER,EAAES,EAAI,EAAFT,EAAIU,GAAG,EAAM,SAAJf,GAAYW,EAAE,EAAEE,EAAER,EAAES,EAAI,EAAFT,EAAIU,EAAI,EAAFV,GAAS,QAAJL,GAAWW,EAAE,EAAEE,EAAER,EAAES,EAAI,EAAFT,GAAS,QAAJL,IAAYW,EAAE,EAAEG,EAAET,EAAEQ,EAAI,EAAFR,GAAKvD,EAAEJ,EAAEyE,gBAAgBpE,EAAEe,GAAG,IAAI,IAAIsD,EAAE,EAAEA,EAAEtD,EAAEf,EAAEwD,GAAGD,EAAEE,GAAGF,EAAEG,GAAGH,EAAEI,GAAGJ,EAAEc,IAAItE,EAAE8D,KAAKL,IAAIlE,EAAEuE,KAAKD,KAAKP,EAAE,IAAIN,EAAE,GAAGhD,EAAE8D,KAAKJ,IAAInE,EAAEuE,KAAKC,KAAKT,EAAE,IAAIN,EAAE,GAAGhD,EAAE8D,KAAKH,IAAIpE,EAAEuE,KAAKE,KAAKV,EAAE,IAAIN,EAAE,GAAGhD,EAAE8D,KAAKF,IAAQ,IAALK,EAAO,KAAK1E,EAAEuE,KAAKG,KAAKX,EAAE,IAAIN,EAAE,EAAE,CAAmD,OAAOhD,EAAC,IAAuBuE,EAAGjF,GAAE,KAAkBkF,IAAKjH,EAAG,CAACgC,EAAEC,KAAK,QAAO,IAAJD,EAAW,MAAM,IAAIsB,MAAM,gCAAgC,QAAc,IAAXrB,EAAEoD,aAA2B,IAAVpD,EAAEkD,MAAe,MAAM,IAAI7B,MAAM,0CAA0C,GAAoB,SAAjBrB,EAAEsD,aAAsB,MAAM,IAAIjC,MAAM,2CAA2C,IAAoDG,EAAEO,GAAlDqB,OAAOhD,EAAE8C,MAAM1C,GAAGR,EAAES,EAAET,EAAE2D,MAAM,CAACC,KAAK,IAAIC,KAAK,GAA+BrC,EAAT,iBAARf,EAAEmD,KAAiB,CAACnD,EAAEmD,KAAKnD,EAAEmD,KAAKnD,EAAEmD,KAAKnD,EAAEmD,MAAQ,CAACnD,EAAEmD,KAAK,GAAGnD,EAAEmD,KAAK,GAAGnD,EAAEmD,KAAK,GAAGnD,EAAEmD,KAAK,IAAI,KAA6B7B,EAAT,iBAARtB,EAAEoD,KAAiB,CAACpD,EAAEoD,KAAKpD,EAAEoD,KAAKpD,EAAEoD,KAAKpD,EAAEoD,MAAQ,CAACpD,EAAEoD,KAAK,GAAGpD,EAAEoD,KAAK,GAAGpD,EAAEoD,KAAK,GAAGpD,EAAEoD,KAAK,IAAI,GAAG,IAAIH,OAAa,IAAX1D,EAAEyD,OAAgBzD,EAAEyD,OAAO,OAAOF,OAAmB,IAAjBvD,EAAEiF,mBAAwC,IAAjBjF,EAAEiF,aAAsBjF,EAAEiF,aAAa,MAAMzB,EAAEpD,EAAEI,EAAEsD,EAAM,SAAJP,EAAW,IAAI2B,aAAe,EAAF1B,GAAK,IAAI0B,aAAe,EAAF1B,GAAKO,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAEb,EAAEe,EAAI,EAAFf,EAAIgB,GAAG,EAAM,QAAJd,IAAYK,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,GAAG,GAAO,SAAJZ,EAAWiB,EAAI,EAAFhB,EAAQ,QAAJD,GAAWa,EAAE,EAAEG,EAAEf,EAAEa,EAAI,EAAFb,GAAS,QAAJD,IAAYgB,EAAE,EAAEF,EAAEb,EAAEY,EAAI,EAAFZ,GAAK,IAAI,IAAIsB,EAAE,EAAEA,EAAEtB,EAAEsB,IAAId,GAAGD,EAAEG,GAAGH,EAAEE,GAAGF,EAAEI,GAAGJ,EAAED,EAAEM,MAAMrE,EAAEiE,GAAGjC,EAAE,IAAIP,EAAE,GAAGsC,EAAEO,MAAMtE,EAAEkE,GAAGlC,EAAE,IAAIP,EAAE,GAAGsC,EAAES,MAAMxE,EAAEmE,GAAGnC,EAAE,IAAIP,EAAE,IAAQ,IAALgD,IAAa,IAALL,IAASL,EAAEU,MAAMzE,EAAEoE,GAAGpC,EAAE,IAAIP,EAAE,IAAI,OAAkB,IAAI9C,EAAG,UAAUoF,EAAxB,SAAJP,EAA8B,CAAC,EAAE,EAAEnD,EAAEI,GAAuB,CAAC,EAAE,EAAEJ,EAAEI,GAAE,EAAGxC,EAAG2D,MAAM5B,EAAEC,KAAK,IAAwL+B,EAApL3B,SAAS+E,iBAAiB,KAAKpF,aAAaoF,iBAAiB3E,SAAS4E,UAAU,KAAKrF,aAAaqF,UAAU3E,SAAS4E,YAAY,KAAKtF,aAAasF,YAAY7D,EAAY,iBAAHzB,EAAc2D,EAAE1D,GAAG,CAAC,EAAEuD,EAAE,KAAK,UAAUR,SAAS,IAAI,OAAOA,SAASC,cAAc,UAAU,UAAUC,gBAAgB,IAAI,OAAO,IAAIA,gBAAgB,EAAE,GAAG,MAAM,IAAI5B,MAAM,0BAAyB,EAAGmC,EAAEM,GAAGA,aAAawB,mBAAmBxB,aAAab,gBAAgBa,EAAET,WAAW,MAAM,KAAK,GAAGjD,EAAE,CAAC,IAAI0D,EAAEP,IAAIO,EAAEZ,MAAMnD,EAAEmD,MAAMY,EAAEV,OAAOrD,EAAEqD,OAAO,IAAIW,EAAEP,EAAEM,GAAG,GAAM,MAAHC,EAAqZ,MAAM,IAAI1C,MAAM,6BAA7Z,CAAC,IAAI2C,EAAEjE,EAAEqD,OAAOa,EAAElE,EAAEmD,MAAM,QAAO,IAAJlD,QAA8B,IAAlBA,EAAEuF,oBAAyC,IAAjBvF,EAAEwF,eAAwBxB,EAAEhE,EAAEuF,cAActB,EAAEjE,EAAEwF,mBAAkB,IAAJxF,EAAW,CAAC,GAAG0D,EAAE1D,OAAmB,IAAjBA,EAAEiF,aAAsB,MAAM,IAAI5D,MAAM,+DAA+DqC,EAAEuB,aAAa,OAAOvB,EAAEN,OAAOY,EAAEN,EAAER,MAAMe,CAAC,MAAMP,EAAEuB,aAAa,OAAOvB,EAAEN,OAAOY,EAAEN,EAAER,MAAMe,EAAEF,EAAE0B,UAAU1F,EAAE,EAAE,GAAGgC,EAAEgC,EAAE2B,aAAa,EAAE,EAAEzB,EAAED,GAAGM,IAAI,CAAkD,KAAM,KAAG9D,EAA0X,IAAGC,EAAE,CAAC,QAAO,IAAJT,EAAW,MAAM,IAAIqB,MAAM,2DAA2D,IAAIyC,EAAEP,IAAIO,EAAEZ,MAAMnD,EAAEmD,MAAMY,EAAEV,OAAOrD,EAAEqD,OAAO,IAAIW,EAAEP,EAAEM,GAAG,GAAM,MAAHC,EAAQ,CAAC,IAAIC,EAAEjE,EAAEqD,OAAOa,EAAElE,EAAEmD,MAAM,OAAOa,EAAE0B,UAAU1F,EAAE,EAAE,EAAEkE,EAAED,GAAGjC,EAAEgC,EAAE2B,aAAa,EAAE,EAAEzB,EAAED,GAAGM,KAAKZ,EAAEN,OAAOY,EAAEN,EAAER,MAAMe,EAAElG,EAAGgE,EAAE2B,EAAE,CAAM,MAAM,IAAIrC,MAAM,4BAA4B,CAAM,GAAGG,EAAE,OAAO,IAAImE,SAAQ,CAAC7B,EAAEC,KAAK,IAAIC,EAAET,IAAIU,EAAET,EAAEQ,GAAG,IAAIjE,IAAIkE,EAAE,OAAOF,IAAI,IAAIG,EAAE,IAAI0B,MAAM1B,EAAE2B,YAAY,YAAY3B,EAAE4B,IAAI/F,EAAEmE,EAAE6B,OAAO,KAAK/B,EAAEd,MAAMgB,EAAEhB,MAAMc,EAAEZ,OAAOc,EAAEd,OAAOa,EAAEwB,UAAUvB,EAAE,EAAE,EAAEF,EAAEd,MAAMc,EAAEZ,QAAQ,IAAIe,EAAEF,EAAEyB,aAAa,EAAE,EAAE1B,EAAEd,MAAMc,EAAEZ,QAAQM,EAAEN,OAAOY,EAAEZ,OAAOM,EAAER,MAAMc,EAAEd,MAAMY,EAAE/F,EAAGoG,EAAEG,KAAKZ,GAAE,CAAC,IAAI,MAAM,IAAIrC,MAAM,iEAAiE,CAAjkC,CAAC,IAAIyC,EAAEC,EAAE,QAAO,IAAJ/D,QAA6B,IAAjBA,EAAEwF,mBAAyC,IAAlBxF,EAAEuF,eAAwBzB,EAAE9D,EAAEuF,cAAcxB,EAAE/D,EAAEwF,eAAe1B,EAAE/D,EAAEqD,OAAOW,EAAEhE,EAAEmD,YAAW,IAAJlD,IAAa0D,EAAE1D,GAAG0D,EAAED,OAAO,OAAOC,EAAEN,OAAOU,EAAEJ,EAAER,MAAMa,OAAM,IAAJ/D,EAAW,CAAC,IAAIgE,EAAET,IAAIS,EAAEd,MAAMa,EAAEC,EAAEZ,OAAOU,EAAE,IAAIG,EAAET,EAAEQ,GAAG,GAAM,MAAHC,EAAkE,MAAM,IAAI5C,MAAM,6BAA1E4C,EAAE+B,aAAajG,EAAE,EAAE,GAAGgC,EAAEkC,EAAEyB,aAAa,EAAE,EAAE3B,EAAED,GAAGQ,IAAsD,MAAMvC,EAAEhC,EAAEuE,IAAI,CAA+sB,CAAC,QAAO,IAAJvC,EAAW,OAAOhE,EAAGgE,EAAE2B,GAAG,MAAM,IAAIrC,MAAM,iEAAgE,EAAGpD,EAAG,CAAC8B,EAAEC,KAAK,IAAIkD,MAAM9C,EAAEgD,OAAO5C,EAAEyF,SAASxF,EAAEyF,QAAQ1E,GAAGxB,EAAc,OAAO,IAAItB,EAAG,CAACyH,SAAS,UAAUC,KAAK,UAAUC,QAAQtG,EAAEoD,KAArE,CAAC,EAAE3C,EAAEJ,EAAE,GAAqE6F,SAASxF,EAAEyF,QAAQ1E,GAAE,EAAGtD,EAAG,CAAC6B,EAAEC,KAAK,IAAIsG,SAASlG,EAAE+C,KAAK3C,EAAEyF,SAASxF,EAAEyF,QAAQ1E,GAAGxB,EAAE,OAAO,IAAItB,EAAG,CAACyH,SAAS,aAAaC,KAAKhG,GAAG,UAAUmG,UAAUxG,EAAEoD,KAAK3C,EAAEyF,SAASxF,EAAEyF,QAAQ1E,GAAE,EAAGrD,EAAG,CAAC4B,EAAEC,EAAEI,IAAI,IAAI1B,EAAG,CAACyH,SAAS,aAAaC,KAAKrG,EAAEuE,KAAKtE,EAAEmD,KAAK/C,GAAG,CAACJ,EAAEyB,SAAQ,IAAoB+E,EAAG1G,GAAE,KAAkB1B,EAAG,IAAI0C,IAAI,CAAC,CAAC,UAAUoE,cAAc,CAAC,QAAQuB,YAAY,CAAC,OAAOC,WAAW,CAAC,SAASC,aAAa,CAAC,UAAUA,aAAa,CAAC,QAAQC,YAAY,CAAC,QAAQC,YAAY,CAAC,OAAOJ,YAAY,CAAC,UAAUK,cAAc,CAAC,SAASC,eAAe1I,EAAG,IAAIyC,IAAI,CAAC,CAACoE,aAAa,WAAW,CAACuB,WAAW,SAAS,CAACC,UAAU,QAAQ,CAACC,YAAY,UAAU,CAACC,WAAW,SAAS,CAACC,WAAW,SAAS,CAACC,aAAa,WAAW,CAACC,YAAY,YAAYzI,GAAG,EAAGC,EAAG,KAAK,IAAID,EAAG,CAACA,GAAG,EAAG,IAAIyB,SAASiH,cAAc,KAAgC,mBAApBA,cAAcC,KAAiBjH,SAASkH,eAAe,KAAiC,mBAArBA,eAAeD,KAAiBlH,IAAI3B,EAAG8C,IAAI,QAAQ8F,eAAe3I,EAAG6C,IAAI8F,cAAc,UAAUhH,IAAI5B,EAAG8C,IAAI,SAASgG,gBAAgB7I,EAAG6C,IAAIgG,eAAe,UAAU,EAAC,IAAcC,EAAGrH,GAAE,KAAkBkF,IAAKxG,EAAGuB,IAAI,IAAIC,EAAE,EAAE,IAAI,IAAII,EAAE,EAAEA,EAAEL,EAAE0B,OAAOrB,IAAI,CAAC,IAAII,EAAET,EAAEK,GAAG,GAAa,iBAAHI,IAAc4G,OAAOC,cAAc7G,GAAG,MAAM,IAAIS,UAAU,QAAQb,+BAA+BI,KAAK,GAAGA,EAAE,EAAE,MAAM,IAAI8G,WAAW,QAAQlH,2CAA2CI,KAAKR,GAAGQ,CAAC,CAAC,OAAOR,GAAGvB,EAAG,CAACsB,EAAEC,KAAK,OAAOD,EAAEoG,UAAU,IAAI,MAAM,OAAO,IAAIzH,EAAGqB,EAAEqG,KAAKrG,EAAEuE,KAAKtE,GAAG,IAAI,aAAa,OAAO,IAAItB,EAAG,CAACyH,SAAS,aAAa7B,KAAKvE,EAAEuE,KAAK8B,KAAKrG,EAAEqG,KAAKjD,KAAKnD,IAAI,IAAI,UAAU,OAAO,IAAItB,EAAG,CAACyH,SAAS,UAAUE,QAAQtG,EAAEsG,QAAQD,KAAKrG,EAAEqG,KAAKjD,KAAKnD,IAAI,IAAI,aAAa,OAAO,IAAItB,EAAG,CAACyH,SAAS,aAAaI,UAAUxG,EAAEwG,UAAUH,KAAKrG,EAAEqG,KAAKjD,KAAKnD,IAAI,QAAQ,MAAM,IAAIqB,MAAM,kCAAkCtB,EAAEoG,6BAA4B,CAAC,IAAWnB,EAAGlF,GAAE,KAAkBgD,IAAKiC,IAAKyB,IAAKW,IAAKzI,EAAG,MAAM,WAAA6I,CAAYvH,EAAEI,EAAEI,GAAQ,IAAIC,EAAEe,EAAE,GAAbjD,IAA0B,iBAAHyB,GAAa,aAAaA,EAAE,OAAOwH,KAAKC,aAAazH,EAAEmG,SAAS1F,EAAET,EAAEoG,KAAK5E,EAAExB,EAAEmD,KAAKnD,EAAEmG,UAAU,IAAI,aAAa,CAAC,IAAIzC,EAAEtF,EAAGiC,IAAII,GAAG,IAAIiD,EAAE,MAAM,IAAIzC,UAAU,qBAAqBR,0CAA0C,KAAKT,EAAEsE,gBAAgBZ,GAAG,MAAM,IAAIzC,UAAU,4BAA4ByC,EAAE1B,QAAQwF,KAAKE,QAAQ1H,EAAEsE,KAAK,KAAK,CAAC,IAAI,UAAW,GAAO,YAAJ7D,EAAc,MAAM,IAAIQ,UAAU,qBAAqBR,oCAAoC+G,KAAKG,eAAe3H,EAAEqG,QAAQmB,KAAKI,WAAW5H,EAAEiG,SAASuB,KAAKK,SAAS7H,EAAEkG,QAAQ,MAAM,IAAI,aAAc,GAAO,YAAJzF,GAAmB,YAAJA,GAAmB,UAAJA,GAAiB,UAAJA,GAAiB,WAAJA,GAAkB,SAAJA,EAAW,MAAM,IAAIQ,UAAU,qBAAqBR,uCAAuC+G,KAAKM,cAAc9H,EAAEuG,UAAUiB,KAAKI,WAAW5H,EAAEiG,SAASuB,KAAKK,SAAS7H,EAAEkG,QAAQ,MAAM,QAAQ,MAAM,IAAI7E,MAAM,6CAA6CmG,KAAKC,qBAAqB,CAAC,IAAI/D,EAAEH,EAAE,GAAa,iBAAHvD,EAAY,GAAGS,EAAET,EAAEuD,EAAE/C,EAAM,WAAJR,EAAa,CAAC,IAAI+H,MAAMC,QAAQ5H,GAAG,MAAM,IAAIa,UAAU,kDAAkDyC,EAAEtD,CAAC,KAAK,CAAC,IAAIoD,EAAEpF,EAAGiC,IAAIL,GAAG,QAAO,IAAJwD,EAAW,MAAM,IAAIvC,UAAU,4BAA4BjB,MAAM,GAAG+H,MAAMC,QAAQ5H,GAAG,CAAC,GAAO,YAAJJ,EAAc,MAAM,IAAIiB,UAAU,iGAA2HyC,EAAtB,WAAJ1D,GAAkB,UAAJA,EAAcwD,EAAEyD,KAAK7G,EAAE6H,QAAUzE,EAAEyD,KAAK7G,EAAE,KAAM,MAAGA,aAAaoD,GAAW,MAAM,IAAIvC,UAAU,KAAKR,mCAAmC+C,KAArEE,EAAEtD,CAAsE,CAAC,MAAM,GAAGmD,EAAEnD,EAAE2H,MAAMC,QAAQhI,GAAG,CAAC,GAAc,IAAXA,EAAEyB,OAAW,MAAM,IAAIR,UAAU,uDAAuD,IAAIuC,SAASxD,EAAE,GAAG,GAAO,WAAJwD,EAAa/C,EAAE,SAASiD,EAAE1D,MAAO,IAAO,YAAJwD,EAAiD,MAAM,IAAIvC,UAAU,uCAAuCuC,MAA9F/C,EAAE,OAAOiD,EAAE+C,WAAWQ,KAAKjH,EAAuE,CAAC,KAAK,CAAC,IAAIwD,EAAEnF,EAAGgC,IAAIL,EAAEuH,aAAa,QAAO,IAAJ/D,EAAW,MAAM,IAAIvC,UAAU,qCAAqCjB,EAAEuH,gBAAgB9G,EAAE+C,EAAEE,EAAE1D,CAAC,CAAC,QAAO,IAAJuD,EAAWA,EAAE,CAACG,EAAEjC,aAAa,IAAIsG,MAAMC,QAAQzE,GAAG,MAAM,IAAItC,UAAU,0CAA0CO,EAAE+B,EAAEiE,KAAKE,QAAQhE,EAAE8D,KAAKC,aAAa,KAAK,CAAC,IAAI1F,EAAEvD,EAAGgD,GAAG,GAAGgG,KAAKE,SAAS3F,IAAIyF,KAAKE,QAAQjG,OAAO,MAAM,IAAIJ,MAAM,iBAAiBU,iCAAiCyF,KAAKE,QAAQjG,YAAY+F,KAAKpB,KAAK3F,EAAE+G,KAAKrE,KAAK3B,EAAEgG,KAAKU,KAAKnG,CAAC,CAAC,sBAAaoG,CAAUnI,EAAEI,GAAG,OAAOpC,EAAGgC,EAAEI,EAAE,CAAC,kBAAOgI,CAAYpI,EAAEI,GAAG,OAAOnC,EAAG+B,EAAEI,EAAE,CAAC,oBAAOiI,CAAcrI,EAAEI,GAAG,OAAOlC,EAAG8B,EAAEI,EAAE,CAAC,uBAAOkI,CAAiBtI,EAAEI,EAAEI,GAAG,OAAOrC,EAAG6B,EAAEI,EAAEI,EAAE,CAAC,SAAAoE,CAAU5E,GAAG,OAAOnC,EAAG2J,KAAKxH,EAAE,CAAC,WAAAuI,CAAYvI,GAAG,OAAOlC,EAAG0J,KAAKxH,EAAE,CAAC,QAAIsE,GAAO,GAAGkD,KAAKgB,eAAehB,KAAKE,QAAQ,MAAM,IAAIrG,MAAM,kJAAkJ,OAAOmG,KAAKE,OAAO,CAAC,YAAIvB,GAAW,OAAOqB,KAAKC,YAAY,CAAC,WAAIpB,GAAU,GAAGmB,KAAKgB,eAAehB,KAAKG,eAAe,MAAM,IAAItG,MAAM,8CAA8C,OAAOmG,KAAKG,cAAc,CAAC,aAAIpB,GAAY,GAAGiB,KAAKgB,eAAehB,KAAKM,cAAc,MAAM,IAAIzG,MAAM,8CAA8C,OAAOmG,KAAKM,aAAa,CAAC,aAAMW,CAAQzI,GAAG,OAAOwH,KAAKgB,cAAchB,KAAKC,cAAc,IAAI,MAAM,IAAI,aAAa,OAAOD,KAAKlD,KAAK,IAAI,UAAU,IAAI,aAAc,IAAIkD,KAAKI,WAAW,MAAM,IAAIvG,MAAM,uEAAuE,GAAGmG,KAAKkB,cAAc,MAAM,IAAIrH,MAAM,2CAA2C,IAAImG,KAAKkB,eAAc,EAAG,IAAItI,QAAQoH,KAAKI,aAAa,OAAOJ,KAAKI,gBAAW,EAAOJ,KAAKC,aAAa,MAAMD,KAAKE,QAAQtH,EAAEJ,GAAGwH,KAAKK,WAAWL,KAAKK,WAAWL,KAAKK,cAAS,GAAQzH,CAAC,CAAC,QAAQoH,KAAKkB,eAAc,CAAE,CAAE,QAAQ,MAAM,IAAIrH,MAAM,kCAAkCmG,KAAKC,gBAAgB,CAAC,OAAAvB,GAAU,GAAGsB,KAAKkB,cAAc,MAAM,IAAIrH,MAAM,2CAA2CmG,KAAKK,WAAWL,KAAKK,WAAWL,KAAKK,cAAS,GAAQL,KAAKE,aAAQ,EAAOF,KAAKG,oBAAe,EAAOH,KAAKM,mBAAc,EAAON,KAAKI,gBAAW,EAAOJ,KAAKkB,mBAAc,EAAOlB,KAAKC,aAAa,MAAM,CAAC,WAAAe,GAAc,GAAuB,SAApBhB,KAAKC,aAAsB,MAAM,IAAIpG,MAAM,0BAA0B,CAAC,OAAAsH,CAAQ3I,GAAG,GAAGwH,KAAKgB,cAAchB,KAAKI,YAAYJ,KAAKK,SAAS,MAAM,IAAIxG,MAAM,mDAAmD,OAAO5C,EAAG+I,KAAKxH,EAAE,EAAC,IAAW4I,EAAG9I,GAAE,KAAkBkF,IAAKrG,EAAGD,KAAqBmK,EAAG/I,GAAE,KAAkBwC,IAAK1D,EAAG,CAACmB,EAAEC,KAAKrC,EAAG4E,KAAKuG,OAAOC,QAAQC,UAAU,GAAGjJ,WAAWC,IAAG,EAAGnB,EAAG,CAACkB,EAAEC,KAAK,IAAII,GAAE,IAAIiB,OAAQ4H,OAAOC,MAAM,gBAAgB,GAAG1I,GAAE,EAAG,IAAI,IAAIC,EAAE,EAAEA,EAAEL,EAAEqB,OAAOhB,IAAI,CAAC,GAAGD,IAAIJ,EAAEK,GAAG0I,SAAS,cAAc,CAAC,IAAI3H,EAAE,QAAQzB,MAAMK,EAAEK,GAAG2I,OAAOF,MAAM,KAAK,KAAkC,OAA7BlJ,IAAIwB,GAAG,KAAKxB,UAAKpB,EAAG,MAAM4C,EAAS,CAACpB,EAAEK,GAAG0I,SAAS,gBAAgB3I,GAAE,EAAG,GAAG1B,EAAGiB,IAAIpC,EAAG4E,KAAKuG,OAAOjK,EAAG,QAAQkB,EAAC,EAAGhB,EAAGgB,IAAIpC,EAAG4E,KAAKuG,OAAOjK,EAAG,MAAMkB,EAAC,CAAC,IAAWsJ,GAAGvJ,GAAE,KAAkBe,IAAK+H,IAAKC,IAAK7J,EAAG,MAAMe,EAAE,WAAAwH,CAAYvH,GAAGwH,KAAK8B,QAAQtJ,CAAC,CAAC,SAAMuJ,CAAIvJ,EAAEI,EAAEI,GAAG1B,IAAK,IAAI2B,EAAE,CAAC,EAAEe,EAAE,CAAC,EAAE,GAAa,iBAAHxB,GAAiB,OAAJA,GAAUA,aAAarB,GAAIoJ,MAAMC,QAAQhI,GAAG,MAAM,IAAIiB,UAAU,iGAAiG,IAAIc,GAAE,EAAG,GAAa,iBAAH3B,EAAY,CAAC,GAAO,OAAJA,EAAS,MAAM,IAAIa,UAAU,2CAA2C,GAAGb,aAAazB,EAAG,MAAM,IAAIsC,UAAU,gCAAgC,GAAG8G,MAAMC,QAAQ5H,GAAG,CAAC,GAAc,IAAXA,EAAEqB,OAAW,MAAM,IAAIR,UAAU,uCAAuCc,GAAE,EAAG,IAAI,IAAIyB,KAAKpD,EAAE,CAAC,GAAa,iBAAHoD,EAAY,MAAM,IAAIvC,UAAU,kDAAkD,IAAkC,IAA/BuG,KAAKgC,YAAYlI,QAAQkC,GAAQ,MAAM,IAAI8D,WAAW,2CAA2C9D,MAAM/C,EAAE+C,GAAG,IAAI,CAAC,GAAa,iBAAHhD,GAAiB,OAAJA,EAASgB,EAAEhB,OAAO,UAAUA,EAAE,IAAI,MAAM,IAAIS,UAAU,+BAA+B,KAAK,CAAC,IAAIuC,GAAE,EAAGM,EAAEzE,OAAOK,oBAAoBU,GAAG,IAAI,IAAI2D,KAAKyD,KAAKgC,YAAY,IAAmB,IAAhB1F,EAAExC,QAAQyC,GAAQ,CAAC,IAAIC,EAAE5D,EAAE2D,IAAQ,OAAJC,GAAUA,aAAarF,KAAM6E,GAAE,EAAGzB,GAAE,EAAGtB,EAAEsD,GAAGC,EAAE,CAAC,GAAGR,GAAG,GAAa,iBAAHhD,GAAiB,OAAJA,EAASgB,EAAEhB,OAAO,UAAUA,EAAE,IAAI,MAAM,IAAIS,UAAU,qCAAqCO,EAAEpB,CAAC,CAAC,MAAM,UAAUA,EAAE,IAAI,MAAM,IAAIa,UAAU,2DAA2D,IAAI,IAAIuC,KAAKgE,KAAKiC,WAAW,UAAUzJ,EAAEwD,GAAG,IAAI,MAAM,IAAInC,MAAM,UAAUmC,6BAA6B,GAAGzB,EAAE,IAAI,IAAIyB,KAAKgE,KAAKgC,YAAY/I,EAAE+C,GAAG,KAAK,IAAIE,QAAQ8D,KAAK8B,QAAQC,IAAIvJ,EAAES,EAAEe,GAAG+B,EAAE,CAAC,EAAE,IAAI,IAAIC,KAAKE,EAAE,GAAGrE,OAAOQ,eAAea,KAAKgD,EAAEF,GAAG,CAAC,IAAIM,EAAEJ,EAAEF,GAAmBD,EAAEC,GAAlBM,aAAanF,EAAQmF,EAAO,IAAInF,EAAGmF,EAAEsC,KAAKtC,EAAEQ,KAAKR,EAAEX,KAAK,CAAC,OAAOpE,IAAKwE,CAAC,CAAC,aAAMmG,GAAU,OAAOlC,KAAK8B,QAAQpD,SAAS,CAAC,mBAAayD,CAAO3J,EAAEI,EAAEI,EAAEC,GAAG3B,IAAK,IAAI0C,EAAEO,EAAE,CAAC,EAAE,GAAa,iBAAH/B,GAAa,GAAGwB,EAAExB,EAAY,iBAAHI,GAAiB,OAAJA,EAAS2B,EAAE3B,OAAO,UAAUA,EAAE,IAAI,MAAM,IAAIa,UAAU,qCAAqC,GAAGjB,aAAayG,YAAY,GAAGjF,EAAExB,EAAY,iBAAHI,GAAiB,OAAJA,EAAS2B,EAAE3B,OAAO,UAAUA,EAAE,IAAI,MAAM,IAAIa,UAAU,oCAAqC,MAAGjB,aAAa4J,oBAAoBC,kBAAkB,KAAK7J,aAAa6J,mBAAgzB,MAAM,IAAI5I,UAAU,uDAAlzB,CAAC,IAAI8C,EAAE/D,EAAEgE,EAAE,EAAEC,EAAEjE,EAAE8J,WAAW,GAAa,iBAAH1J,GAAiB,OAAJA,EAAS2B,EAAE3B,OAAO,GAAa,iBAAHA,EAAY,CAAC,GAAG4D,EAAE5D,GAAGgH,OAAOC,cAAcrD,GAAG,MAAM,IAAIsD,WAAW,oCAAoC,GAAGtD,EAAE,GAAGA,GAAGD,EAAE+F,WAAW,MAAM,IAAIxC,WAAW,oCAAoCvD,EAAE+F,gBAAgB,GAAG7F,EAAEjE,EAAE8J,WAAW9F,EAAY,iBAAHxD,EAAY,CAAC,GAAGyD,EAAEzD,GAAG4G,OAAOC,cAAcpD,GAAG,MAAM,IAAIqD,WAAW,oCAAoC,GAAGrD,GAAG,GAAGD,EAAEC,EAAEF,EAAE+F,WAAW,MAAM,IAAIxC,WAAW,oCAAoCvD,EAAE+F,WAAW9F,OAAO,GAAa,iBAAHvD,GAAiB,OAAJA,EAASsB,EAAEtB,OAAO,UAAUA,EAAE,IAAI,MAAM,IAAIQ,UAAU,+BAA+B,MAAM,UAAUT,EAAE,IAAI,MAAM,IAAIS,UAAU,iCAAiC,MAAM,UAAUb,EAAE,IAAI,MAAM,IAAIa,UAAU,gCAAgCO,EAAE,IAAIiF,WAAW1C,EAAEC,EAAEC,EAAE,CAAgF,CAAC,IAAIV,GAAGxB,EAAEgI,oBAAoB,IAAI7H,KAAI6B,GAAa,iBAAHA,EAAYA,EAAEA,EAAE/B,OAAM8B,cAActG,EAAG+F,IAAIvC,8BAA8BQ,EAAEO,GAAG,OAAOhD,IAAK,IAAIgB,EAAE+D,EAAE,CAAC,cAAAkG,GAAiBxC,KAAK8B,QAAQU,gBAAgB,CAAC,YAAAC,GAAezC,KAAK8B,QAAQW,cAAc,CAAC,cAAIR,GAAa,OAAOjC,KAAK8B,QAAQG,UAAU,CAAC,eAAID,GAAc,OAAOhC,KAAK8B,QAAQE,WAAW,EAAC,IAAWU,GAAGpK,GAAE,KAAkBuJ,KAAKpK,EAAGD,KAASmL,GAAGrK,GAAE,KAAK,IAAyBsK,GAAGtK,GAAE,KAAkBe,IAAK+H,IAAQ,gHAAgH1J,EAAG,MAAMa,EAAE,WAAAwH,CAAYvH,EAAEI,EAAEI,GAAGgH,KAAK8B,QAAQtJ,EAAEwH,KAAK6C,kBAAkBjK,EAAEoH,KAAK8C,aAAa9J,CAAC,CAAC,sBAAI+J,GAAqB,OAAO/C,KAAK8B,QAAQG,UAAU,CAAC,uBAAIe,GAAsB,OAAOhD,KAAK8B,QAAQE,WAAW,CAAC,kBAAIiB,GAAiB,GAAGjD,KAAK8C,aAAa,OAAO9C,KAAK8B,QAAQmB,eAAe,MAAM,IAAIpJ,MAAM,iDAAiD,CAAC,mBAAIqJ,GAAkB,GAAGlD,KAAK8C,aAAa,OAAO9C,KAAK8B,QAAQoB,gBAAgB,MAAM,IAAIrJ,MAAM,iDAAiD,CAAC,mBAAasI,CAAO3J,EAAEI,GAAG,IAAII,EAAER,EAAE2K,WAAW,GAAGlK,EAAET,EAAE4K,gBAAgB,GAAGpJ,EAAEpB,GAAG,CAAC,EAAEsD,GAAGlC,EAAEuI,oBAAoB,IAAI7H,KAAIsB,GAAa,iBAAHA,EAAYA,EAAEA,EAAExB,OAAMuB,QAAQ/F,EAAGkG,GAAG,GAAGH,EAAEsH,6BAA6B,CAAC,IAAIrH,QAAQD,EAAEsH,6BAA6B7K,EAAE8K,gBAAgB9K,EAAE+K,WAAWvK,EAAEC,EAAEe,GAAG,OAAO,IAAIzB,EAAEyD,IAAIxD,EAAE4K,iBAAiB5K,EAAE2K,UAAU,CAAM,MAAM,IAAItJ,MAA76B,gHAAs7B,CAAC,uBAAA2J,CAAwBhL,EAAEI,EAAEI,EAAEC,EAAEe,GAAG,IAAIO,EAAE,CAAC,EAAE2B,EAAE,CAAC,EAAE,GAAa,iBAAHlD,GAAiB,OAAJA,GAAUA,aAAa7B,GAAIoJ,MAAMC,QAAQxH,GAAG,MAAM,IAAIS,UAAU,iGAAiG,IAAIsC,GAAE,EAAG,GAAa,iBAAH9C,EAAY,CAAC,GAAO,OAAJA,EAAS,MAAM,IAAIQ,UAAU,2CAA2C,GAAGR,aAAa9B,EAAG,MAAM,IAAIsC,UAAU,gCAAgC,GAAG8G,MAAMC,QAAQvH,GAAG,CAAC,GAAc,IAAXA,EAAEgB,OAAW,MAAM,IAAIR,UAAU,uCAAuCsC,GAAE,EAAG,IAAI,IAAIC,KAAK/C,EAAE,CAAC,GAAa,iBAAH+C,EAAY,MAAM,IAAIvC,UAAU,kDAAkD,IAAmB,IAAhBb,EAAEkB,QAAQkC,GAAQ,MAAM,IAAI8D,WAAW,2CAA2C9D,MAAMzB,EAAEyB,GAAG,IAAI,CAAC,GAAa,iBAAHhC,GAAiB,OAAJA,EAASkC,EAAElC,OAAO,UAAUA,EAAE,IAAI,MAAM,IAAIP,UAAU,+BAA+B,KAAK,CAAC,IAAIuC,GAAE,EAAGM,EAAEzE,OAAOK,oBAAoBe,GAAG,IAAI,IAAIsD,KAAK3D,EAAE,IAAmB,IAAhB0D,EAAExC,QAAQyC,GAAQ,CAAC,IAAIC,EAAEvD,EAAEsD,IAAQ,OAAJC,GAAUA,aAAarF,KAAM6E,GAAE,EAAGD,GAAE,EAAGxB,EAAEgC,GAAGC,EAAE,CAAC,GAAGR,GAAG,GAAa,iBAAHhC,GAAiB,OAAJA,EAASkC,EAAElC,OAAO,UAAUA,EAAE,IAAI,MAAM,IAAIP,UAAU,qCAAqCyC,EAAEjD,CAAC,CAAC,MAAM,UAAUA,EAAE,IAAI,MAAM,IAAIQ,UAAU,2DAA2D,IAAI,IAAIuC,KAAKxD,EAAE,UAAUQ,EAAEgD,GAAG,IAAI,MAAM,IAAInC,MAAM,UAAUmC,6BAA6B,GAAGD,EAAE,IAAI,IAAIC,KAAKpD,EAAE2B,EAAEyB,GAAG,KAAK,MAAM,CAACzB,EAAE2B,EAAE,CAAC,sCAAAuH,CAAuCjL,GAAG,IAAII,EAAE,CAAC,EAAE,IAAI,IAAII,KAAKR,EAAE,GAAGX,OAAOQ,eAAea,KAAKV,EAAEQ,GAAG,CAAC,IAAIC,EAAET,EAAEQ,GAAmBJ,EAAEI,GAAlBC,aAAa9B,EAAQ8B,EAAO,IAAI9B,EAAG8B,EAAE2F,KAAK3F,EAAE6D,KAAK7D,EAAE0C,KAAK,CAAC,OAAO/C,CAAC,CAAC,mBAAM8K,SAAsB1D,KAAK8B,QAAQ4B,eAAe,CAAC,kBAAMC,CAAanL,EAAEI,EAAEI,GAAG,IAAIC,EAAEe,GAAGgG,KAAKwD,wBAAwBxD,KAAK+C,mBAAmB/C,KAAKgD,oBAAoBxK,EAAEI,EAAEI,GAAGuB,QAAQyF,KAAK8B,QAAQ6B,aAAanL,EAAES,EAAEe,GAAG,OAAOgG,KAAKyD,uCAAuClJ,EAAE,CAAC,sBAAMqJ,CAAiBpL,GAAG,IAAGwH,KAAK6C,kBAAkE,MAAM,IAAIhJ,MAAM,4DAA1DmG,KAAK8B,QAAQ8B,iBAAiBpL,GAAG,CAAC,EAA6E,CAAC,iBAAMqL,CAAYrL,EAAEI,EAAEI,GAAG,GAAGgH,KAAK8C,aAAa,CAAC,IAAI7J,EAAEe,GAAGgG,KAAKwD,wBAAwBxD,KAAKiD,eAAejD,KAAKkD,gBAAgB1K,EAAEI,EAAEI,GAAGuB,QAAQyF,KAAK8B,QAAQ+B,YAAYrL,EAAES,EAAEe,GAAG,OAAOgG,KAAKyD,uCAAuClJ,EAAE,CAAM,MAAM,IAAIV,MAAM,gDAAgD,CAAC,uBAAMiK,CAAkBtL,GAAE,GAAI,OAAOwH,KAAK8B,QAAQgC,kBAAkBtL,EAAE,CAAC,0BAAMuL,CAAqBvL,EAAEI,GAAE,GAAI,IAAII,QAAQgH,KAAK8D,kBAAkBlL,GAAG,GAAGJ,EAAEyB,SAAS,EAAEjB,EAAE,MAAM,IAAIa,MAAM,uJAAuJ,OAAOmG,KAAK8B,QAAQiC,qBAAqBvL,EAAEI,EAAE,CAAC,6BAAMoL,CAAwBxL,GAAE,GAAI,OAAOwH,KAAK8B,QAAQkC,wBAAwBxL,EAAE,CAAC,aAAM0J,GAAU,OAAOlC,KAAK8B,QAAQpD,SAAS,EAAC,IAAWuF,GAAG3L,GAAE,KAAkBsK,KAAKjL,EAAGD,KAASwM,GAAG,CAAC,EAAEvL,EAAGuL,GAAG,CAACC,iBAAiB,IAAI1M,EAAG2M,MAAM,IAAIhN,EAAGiN,iBAAiB,IAAI/M,EAAGgN,eAAe,IAAI/M,EAAGgN,OAAO,IAAIpN,EAAGqN,gBAAgB,IAAI7M,EAAG8M,IAAI,IAAIrO,EAAGsO,gBAAgB,IAAI3O,IAAK,IAAI4O,GAAGrM,GAAE,KAAkBsC,IAAKS,IAAKqH,KAAKtB,IAAKC,IAAKsB,KAAKsB,IAAG,IAAQW,GAAG,CAAC,EAAEjM,EAAGiM,GAAG,CAACC,iBAAiB,IAAIC,GAAGC,SAAS,IAAIC,GAAGC,aAAa,IAAIC,KAAK,IAAIF,GAAGE,GAAGJ,GAAGK,GAAG7M,GAAE,KAAK0M,QAAG,EAAOE,QAAG,EAAOJ,QAAG,CAAK,IAAQM,GAAG,CAAC,EAAEzM,EAAGyM,GAAG,CAACzK,KAAK,IAAI0K,KAAK,IAAIA,GAAGC,GAAGhN,GAAE,KAAK+M,QAAG,CAAK,IAAQE,GAAG9M,GAAG,CAAC+M,EAAGC,KAAmB,IAAiBlN,EAAbmN,GAAanN,SAASgD,SAAS,KAAKA,SAASoK,cAAcpK,SAASoK,cAAcrH,SAAI,SAAqBsH,WAAW,MAAMrN,EAAEA,GAAGqN,YAAY,SAASpN,EAAE,CAAC,GAAG,IAAQQ,EAAEC,EAANL,EAAEJ,EAAMI,EAAEiN,MAAM,IAAI1H,SAAQ,CAAC2H,EAAEC,KAAK/M,EAAE8M,EAAE7M,EAAE8M,KAAInN,EAAEoN,kBAAkB,CAACF,EAAEC,MAAMnN,EAAEqN,KAAKrN,EAAEqN,GAAG,IAAI3M,MAAMI,IAAIoM,EAAEC,EAAC,EAAGnN,EAAEsN,oBAAoB,YAAYtN,EAAEqN,IAAIrN,EAAEuN,SAAS,CAACL,EAAEC,EAAEK,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,KAAM7N,EAAE8N,GAAGZ,EAAElN,EAAEgC,GAAGmL,EAAEnN,EAAE+N,GAAGP,EAAExN,EAAEgO,GAAGP,EAAEzN,EAAEiO,GAAGP,EAAE1N,EAAEkO,GAAGP,EAAE3N,EAAEmO,GAAGP,EAAE5N,EAAEoO,GAAGP,EAAGV,EAAE,CAACkB,EAAEC,EAAGC,IAAK,IAAIC,KAAM,IAAIC,EAAGC,GAAGC,EAAEL,MAAOE,EAAGH,KAAKG,GAAI,IAAII,EAAGN,MAAO,OAAOK,IAAIC,IAAKP,EAAEO,EAAGL,EAAGI,GAAGL,EAAGC,EAAG,MAAMG,IAAID,EAE93pB,IAAIlJ,SAAQ,CAAC2H,EAAEC,KAAK0B,GAAG,CAACC,QAAQ5B,EAAE6B,OAAO5B,EAAC,IAF41pBqB,GAAIhB,EAAEa,GAAG9M,SAAS+M,KAAM,IAAI,GAAGtO,EAAEgP,GAAG,MAAM/N,MAAM,2BAA2B,IAAIsN,EAAGvO,EAAEgP,GAAG,CAACC,GAAGX,EAAG,GAAGY,OAAO,IAAIV,QAASH,KAAKC,GAAI,GAAGtO,EAAEgP,KAAKT,EAAG,MAAMtN,MAAM,oBAAoBiM,EAAEiC,QAAQ,IAAIV,EAAGF,EAAGW,OAAO,GAAG,EAAET,EAAGpN,OAAO,CAAC,IAAIsN,QAAQpJ,QAAQ6J,IAAIX,GAAI,GAAGE,EAAEA,EAAEU,QAAOT,GAAIA,IAAI,EAAED,EAAEtN,OAAO,MAAMJ,MAAM0N,EAAE5M,KAAK,MACnzsB,CAAC,OAAOyM,CAAE,CAAC,QAAQxO,EAAEgP,GAAG,IAAI,GAAGhP,EAAEsP,QAAQ9B,EAAEL,EAAEnN,EAAEsP,SAAQ,IAAItP,EAAEsP,UAAQjB,GAAGrO,EAAEsP,QAAQjB,KAAIrO,EAAEuP,mBAAmB/B,EAAEL,EAAEnN,EAAEuP,oBAAmB,IAAIvP,EAAEuP,qBAAmBlB,GAAGrO,EAAEuP,mBAAmBlB,KAAIrO,EAAEwP,cAAcrC,EAAEnN,EAAEwP,eAAc,IAAIxP,EAAEwP,gBAAcnB,GAAGrO,EAAEwP,cAAcnB,IAAGrO,EAAEyP,mBAAmB,CAACpB,EAAEC,EAAGC,EAAGC,IAAKtB,EAAEwC,eAAerB,EAAEC,EAAGC,EAAGC,GAAIxO,EAAE2P,sBAAsBtB,IAAInB,EAAE0C,kBAAkBvB,EAAC,EAAGrO,EAAE6P,cAAcxB,GAAGnB,EAAE4C,UAAUzB,GAAGrO,EAAE+P,qBAAqB,CAAC1B,EAAEC,EAAGC,IAAKrB,EAAE8C,iBAAiB3B,EAAEC,EAAGC,EAAE,EAAG,IAAwO3K,EAAEC,EAAEC,EAAxO1C,EAAEnC,OAAOgR,OAAO,CAAC,EAAEjQ,GAAG2B,EAAE,iBAAiB2B,EAAE,CAAC4J,EAAEC,KAAK,MAAMA,GAAGhK,EAAiB,iBAAR+M,OAAiB9M,EAAwB,mBAAf+M,cAA0BzM,EAAkB,iBAAT0M,SAA4C,iBAAlBA,QAAQ9N,UAAkD,iBAAvB8N,QAAQ9N,SAAS+N,KAAe1M,EAAE,GAAS,GAAGD,EAAE,CAAC,IAAIK,GAAGwI,KAAKpM,EAAG6L,KAAKhI,GAAG0I,KAAKvM,EAAGqM,KAAK7I,EAAEP,EAAEY,EAAEsM,QAAQ3M,GAAG,IAAI4M,UAAU,IAAI3M,EAAE,CAACsJ,EAAEC,KAAKD,EAAEsD,EAAGtD,GAAG,IAAIuD,IAAIvD,GAAGlJ,EAAE0M,UAAUxD,GAAGnJ,EAAEsI,aAAaa,EAAEC,OAAE,EAAO,SAASrJ,EAAEoJ,KAAIA,EAAEtJ,EAAEsJ,GAAE,IAAMyD,SAASzD,EAAE,IAAI7G,WAAW6G,IAAIA,GAAGrJ,EAAE,CAACqJ,EAAEC,EAAEK,EAAEC,GAAE,KAAMP,EAAEsD,EAAGtD,GAAG,IAAIuD,IAAIvD,GAAGlJ,EAAE0M,UAAUxD,GAAGnJ,EAAEoI,SAASe,EAAEO,OAAE,EAAO,QAAO,CAACC,EAAEC,KAAKD,EAAEF,EAAEE,GAAGP,EAAEM,EAAEE,EAAEgD,OAAOhD,EAAC,GAAE,GAAI3N,EAAE4Q,aAAa,EAAER,QAAQS,KAAKxP,SAASM,EAAEyO,QAAQS,KAAK,GAAGC,QAAQ,MAAM,MAAMV,QAAQS,KAAKE,MAAM,GAAGzN,EAAE,CAAC4J,EAAEC,KAAK,MAAMiD,QAAQY,SAAS9D,EAAEC,GAAGnN,EAAEiR,QAAQ,IAAI,4BAA4B,MAAM9N,GAAGC,KAAKA,EAAEO,EAAEuN,KAAKnL,SAASoL,YAAYxO,SAAS,KAAKA,SAASoK,gBAAgBpJ,EAAEhB,SAASoK,cAAcrH,KAAK/F,IAAIgE,EAAEhE,GAA0BgE,EAAF,IAArBA,EAAEzC,QAAQ,SAAeyC,EAAEyN,OAAO,EAAEzN,EAAEmN,QAAQ,SAAS,IAAIO,YAAY,KAAK,GAAK,GAAGzN,EAAEsJ,IAAI,IAAIC,EAAE,IAAImE,eAAe,OAAOnE,EAAEoE,KAAK,MAAMrE,GAAE,GAAIC,EAAEqE,KAAK,MAAMrE,EAAEsE,cAAcrO,IAAIU,EAAEoJ,IAAI,IAAIC,EAAE,IAAImE,eAAe,OAAOnE,EAAEoE,KAAK,MAAMrE,GAAE,GAAIC,EAAEuE,aAAa,cAAcvE,EAAEqE,KAAK,MAAM,IAAInL,WAAW8G,EAAEwE,SAAQ,GAAI9N,EAAE,CAACqJ,EAAEC,EAAEK,KAAK,IAAIC,EAAE,IAAI6D,eAAe7D,EAAE8D,KAAK,MAAMrE,GAAE,GAAIO,EAAEiE,aAAa,cAAcjE,EAAE9H,OAAO,KAAe,KAAV8H,EAAEmE,QAAuB,GAAVnE,EAAEmE,QAAWnE,EAAEkE,SAASxE,EAAEM,EAAEkE,UAAUnE,GAAE,EAAGC,EAAEoE,QAAQrE,EAAEC,EAAE+D,KAAK,KAAI,GAAI,IAAIvN,EAAE0E,QAAQmJ,IAAIC,KAAKpJ,SAASxE,EAAEwE,QAAQqJ,MAAMD,KAAKpJ,SAAS1J,OAAOgR,OAAOjQ,EAAEoB,GAAGA,EAAE,KAAyB,iBAAb6Q,aAAuBC,EAAG,mCAAmC,IAAI9N,EAAOM,EAAEyN,EAAEC,EAAEC,EAAEC,EAAEC,EAAGC,EAAlBnO,GAAE,EAAkB,SAASoO,IAAI,IAAIvF,EAAE9I,EAAEuM,OAAO3Q,EAAE0S,MAAMP,EAAE,IAAI7L,UAAU4G,GAAGlN,EAAE2S,OAAO,IAAInM,WAAW0G,GAAGlN,EAAE4S,OAAOR,EAAE,IAAI/L,WAAW6G,GAAGlN,EAAE6S,QAAQ,IAAItM,YAAY2G,GAAGlN,EAAE8S,OAAOT,EAAE,IAAI5L,WAAWyG,GAAGlN,EAAE+S,QAAQT,EAAE,IAAI3L,YAAYuG,GAAGlN,EAAEgT,QAAQT,EAAG,IAAIzN,aAAaoI,GAAGlN,EAAEiT,QAAQT,EAAE,IAAI9L,aAAawG,EAAE,CAAC,IAAIgG,EAAE,GAAGC,EAAE,GAAGC,EAAG,GAAGC,EAAG,EAAEC,EAAG,KAAKC,EAAG,KAAK,SAASrB,EAAGhF,GAAG,MAAyB/I,EAAnB+I,EAAE,WAAWA,EAAE,KAAS7I,GAAE,EAAGK,EAAE,EAAEwI,EAAE,IAAI+E,YAAYuB,aAAatG,EAAE,4CAA4C7M,EAAE6M,GAAGA,CAAC,CAAC,IAA8FuG,EAA1FC,EAAGxG,GAAGA,EAAEyG,WAAW,yCAAyCnD,EAAGtD,GAAGA,EAAEyG,WAAW,WAAc,IAA4BD,EAAzBD,EAAG,sBAA6B,CAAC,IAAIG,EAAGH,EAAGA,EAAGzT,EAAE6T,WAAW7T,EAAE6T,WAAWD,EAAGjQ,GAAGA,EAAEiQ,CAAE,CAAC,SAASE,EAAE5G,GAAG,GAAGpJ,EAAE,OAAOA,EAAEoJ,GAAG,KAAK,iDAAiD,CAA+T,SAAS6G,EAAG7G,EAAEC,EAAEK,GAAG,OAAjV,SAAYN,GAAG,GAAG/J,GAAGC,EAAE,CAAC,GAAiB,mBAAP4Q,QAAoBxD,EAAGtD,GAAG,OAAO8G,MAAM9G,EAAE,CAAC+G,YAAY,gBAAgBC,MAAK/G,IAAI,IAAIA,EAAEgH,GAAG,KAAK,uCAAuCjH,EAAE,IAAI,OAAOC,EAAEiH,aAAY,IAAIC,OAAM,IAAIP,EAAE5G,KAAI,GAAGrJ,EAAE,OAAO,IAAI0B,SAAQ,CAAC4H,EAAEK,KAAK3J,EAAEqJ,GAAEO,GAAGN,EAAE,IAAI9G,WAAWoH,KAAID,EAAC,GAAG,CAAC,OAAOjI,QAAQuJ,UAAUoF,MAAK,IAAIJ,EAAE5G,IAAG,CAA2BoH,CAAGpH,GAAGgH,MAAKzG,GAAGwE,YAAYsC,YAAY9G,EAAEN,KAAI+G,MAAKzG,GAAGA,IAAGyG,KAAK1G,GAAEC,IAAItJ,EAAE,0CAA0CsJ,KAAKyE,EAAGzE,EAAC,GAAG,CAA6V,IAAI+G,EAAGC,EAAG,CAAC,OAAO,CAACvH,EAAEC,EAAEK,EAAEC,KAAK,UAAUzN,EAAE,MAAMA,EAAEqN,GAAG,OAAO,EAAE,IAAGH,EAAEwH,EAAGxH,IAAI,IAAKyG,WAAW,QAAQzG,EAAEA,EAAEyH,UAAU,MAAIzH,EAAElN,EAAEqN,GAAGpN,IAAIiN,IAAM,OAAO,EAAE,IAAGC,KAAK,IAAEK,KAAK,GAAMN,EAAExD,WAAW,OAAO,EAAE,IAAI,OAAO0I,EAAEtR,IAAIoM,EAAE0H,SAASzH,EAAEA,EAAEK,GAAGC,IAAI,IAAI,GAAG,CAAC,CAAC,MAAM,OAAO,CAAC,GAAG,OAAOP,GAAGlN,EAAEgC,GAAGkL,GAAG,OAAOA,GAAGlN,EAAE+N,GAAGb,GAAG,OAAO,CAACA,EAAEC,EAAEK,KAAKxN,EAAEgO,GAAGd,EAAEC,EAAEK,GAAE,EAAE,EAAG,OAAO,CAACN,EAAEC,EAAEK,KAAKxN,EAAEgO,GAAGd,EAAEC,EAAEK,EAAC,EAAG,OAAON,IAAIlN,EAAEkO,GAAG,MAAMhB,OAAE,EAAM,EAAG,OAAOA,IAAIlN,EAAEkO,GAAG,MAAMhB,OAAE,EAAM,EAAG,OAAOA,IAAIlN,EAAEkO,GAAG,QAAQhB,OAAE,EAAM,EAAG,OAAOA,IAAIlN,EAAEkO,GAAG,OAAOhB,OAAE,EAAM,EAAG,OAAOA,IAAIlN,EAAEkO,GAAG,aAAahB,OAAE,EAAM,EAAG,OAAOA,IAAIlN,EAAEkO,GAAG,OAAOhB,OAAE,EAAM,EAAG,OAAOA,IAAIlN,EAAEkO,GAAG,MAAMhB,OAAE,EAAM,EAAG,OAAOA,IAAIlN,EAAEkO,GAAG,MAAMhB,OAAE,EAAM,EAAG,OAAOA,IAAIlN,EAAEkO,GAAG,UAAUhB,OAAE,EAAM,EAAG,OAAOA,IAAIlN,EAAEkO,GAAG,MAAMhB,OAAE,EAAM,EAAG,OAAOA,IAAIlN,EAAEkO,GAAG,MAAMhB,OAAE,EAAM,EAAG,OAAOA,IAAIlN,EAAEkO,GAAG,MAAMhB,OAAE,EAAM,EAAG,OAAOA,IAAIlN,EAAEkO,GAAG,MAAMhB,OAAE,EAAM,EAAG,OAAOA,IAAIlN,EAAEkO,GAAG,OAAOhB,OAAE,EAAM,EAAG,OAAOA,IAAIlN,EAAEkO,GAAG,OAAOhB,OAAE,EAAM,EAAG,OAAOA,IAAIlN,EAAEkO,GAAG,OAAOhB,OAAE,EAAM,EAAG,OAAOA,IAAIlN,EAAEkO,GAAG,OAAOhB,OAAE,EAAM,EAAG,OAAOA,IAAIlN,EAAEkO,GAAG,OAAOhB,OAAE,EAAM,EAAG,OAAOA,IAAIlN,EAAEkO,GAAG,QAAQhB,OAAE,EAAM,EAAG,OAAOA,IAAIlN,EAAEkO,GAAG,QAAQhB,OAAE,EAAM,EAAG,OAAOA,IAAIlN,EAAEkO,GAAG,QAAQhB,OAAE,EAAM,EAAG,OAAOA,IAAIlN,EAAEkO,GAAG,OAAOhB,OAAE,EAAM,EAAG,OAAOA,IAAIlN,EAAEkO,GAAG,MAAMhB,OAAE,EAAM,EAAG,OAAO,CAACA,EAAEC,EAAEK,KAAKxN,EAAEkO,GAAG,OAAOhB,EAAE,CAAC2H,IAAI1H,EAAE2H,IAAItH,GAAE,EAAG,OAAON,IAAIlN,EAAEkO,GAAG,OAAOhB,OAAE,EAAM,EAAG,OAAO,CAACA,EAAEC,KAAKnN,EAAEkO,GAAG,MAAMhB,EAAE,CAAC6H,MAAM5H,GAAE,EAAG,OAAOD,IAAIlN,EAAEkO,GAAG,OAAOhB,OAAE,EAAM,EAAG,OAAO,CAACA,EAAEC,KAAKnN,EAAEkO,GAAG,YAAYhB,EAAE,CAAC6H,MAAM5H,GAAE,EAAG,OAAO,CAACD,EAAEC,KAAKnN,EAAEkO,GAAG,kBAAkBhB,EAAE,CAAC6H,MAAM5H,GAAE,EAAG,OAAO,CAACD,EAAEC,KAAKnN,EAAEkO,GAAG,OAAOhB,EAAE,CAAC8H,GAAG7H,GAAE,EAAG,OAAOD,IAAIlN,EAAEkO,GAAG,MAAMhB,OAAE,EAAM,EAAG,OAAOA,IAAIlN,EAAEkO,GAAG,MAAMhB,OAAE,EAAM,EAAG,OAAOA,IAAIlN,EAAEkO,GAAG,MAAMhB,OAAE,EAAM,EAAG,OAAOA,IAAIlN,EAAEkO,GAAG,MAAMhB,OAAE,EAAM,EAAG,OAAOA,IAAIlN,EAAEkO,GAAG,MAAMhB,OAAE,EAAM,EAAG,OAAOA,IAAIlN,EAAEkO,GAAG,QAAQhB,OAAE,EAAM,EAAG,OAAOA,IAAIlN,EAAEkO,GAAG,UAAUhB,OAAE,EAAM,EAAG,OAAOA,IAAIlN,EAAEkO,GAAG,iBAAiBhB,OAAE,EAAM,EAAG,OAAOA,IAAIlN,EAAEkO,GAAG,OAAOhB,OAAE,EAAM,EAAG,OAAOA,IAAIlN,EAAEkO,GAAG,cAAchB,OAAE,EAAM,EAAG,OAAO,CAACA,EAAEC,EAAEK,EAAEC,EAAEC,KAAK1N,EAAEkO,GAAG,aAAahB,EAAE,CAAC+H,WAAW9H,EAAE+H,oBAAoB1H,EAAE2H,KAAK1H,EAAE9F,MAAMd,KAAKwL,EAAEuC,SAASnH,IAAI,EAAEC,IAAI,IAAI,IAAG,EAAG,OAAO,CAACR,EAAEC,EAAEK,EAAEC,EAAEC,KAAK1N,EAAEkO,GAAG,YAAYhB,EAAE,CAAC+H,WAAW9H,EAAE+H,oBAAoB1H,EAAE2H,KAAK1H,EAAE9F,MAAMd,KAAKwL,EAAEuC,SAASnH,IAAI,EAAEC,IAAI,IAAI,IAAG,EAAG,OAAO,CAACR,EAAEC,EAAEK,EAAEC,EAAEC,KAAK1N,EAAEkO,GAAG,YAAYhB,EAAE,CAAC+H,WAAW9H,EAAE+H,oBAAoB1H,EAAE2H,KAAK1H,EAAE9F,MAAMd,KAAKwL,EAAEuC,SAASnH,IAAI,EAAEC,IAAI,IAAI,IAAG,EAAG,OAAO,CAACR,EAAEC,EAAEK,EAAEC,EAAEC,KAAK1N,EAAEkO,GAAG,aAAahB,EAAE,CAAC+H,WAAW9H,EAAE+H,oBAAoB1H,EAAE2H,KAAK1H,EAAE9F,MAAMd,KAAKwL,EAAEuC,SAASnH,IAAI,EAAEC,IAAI,IAAI,IAAG,EAAG,OAAO,CAACR,EAAEC,EAAEK,EAAEC,EAAEC,KAAK1N,EAAEkO,GAAG,YAAYhB,EAAE,CAAC+H,WAAW9H,EAAE+H,oBAAoB1H,EAAE2H,KAAK1H,EAAE9F,MAAMd,KAAKwL,EAAEuC,SAASnH,IAAI,EAAEC,IAAI,IAAI,IAAG,EAAG,OAAO,CAACR,EAAEC,EAAEK,EAAEC,EAAEC,KAAK1N,EAAEkO,GAAG,WAAWhB,EAAE,CAAC+H,WAAW9H,EAAE+H,oBAAoB1H,EAAE2H,KAAK1H,EAAE9F,MAAMd,KAAKwL,EAAEuC,SAASnH,IAAI,EAAEC,IAAI,IAAI,IAAG,EAAG,OAAO,CAACR,EAAEC,EAAEK,EAAEC,EAAEC,KAAK1N,EAAEkO,GAAG,WAAWhB,EAAE,CAAC+H,WAAW9H,EAAE+H,oBAAoB1H,EAAE2H,KAAK1H,EAAE9F,MAAMd,KAAKwL,EAAEuC,SAASnH,IAAI,EAAEC,IAAI,IAAI,IAAG,EAAG,OAAO,CAACR,EAAEC,EAAEK,EAAEC,EAAEC,KAAK1N,EAAEkO,GAAG,eAAehB,EAAE,CAAC+H,WAAW9H,EAAE+H,oBAAoB1H,EAAE2H,KAAK1H,EAAE9F,MAAMd,KAAKwL,EAAEuC,SAASnH,IAAI,EAAEC,IAAI,IAAI,IAAG,EAAG,OAAO,CAACR,EAAEC,EAAEK,EAAEC,EAAEC,KAAK1N,EAAEkO,GAAG,kBAAkBhB,EAAE,CAAC+H,WAAW9H,EAAE+H,oBAAoB1H,EAAE2H,KAAK1H,EAAE9F,MAAMd,KAAKwL,EAAEuC,SAASnH,IAAI,EAAEC,IAAI,IAAI,IAAG,EAAG,OAAO,CAACR,EAAEC,EAAEK,EAAEC,EAAEC,KAAK1N,EAAEkO,GAAG,kBAAkBhB,EAAE,CAAC+H,WAAW9H,EAAE+H,oBAAoB1H,EAAE2H,KAAK1H,EAAE9F,MAAMd,KAAKwL,EAAEuC,SAASnH,IAAI,EAAEC,IAAI,IAAI,IAAG,EAAG,OAAOR,IAAIlN,EAAEkO,GAAG,QAAQhB,OAAE,EAAM,EAAG,OAAO,CAACA,EAAEC,EAAEK,KAAKxN,EAAEkO,GAAG,YAAYhB,EAAE,CAACkI,KAAKjI,EAAExF,MAAMd,KAAKwL,EAAEuC,SAASzH,IAAI,EAAEK,IAAI,IAAI,IAAG,EAAG,OAAO,CAACN,EAAEC,EAAEK,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAGQ,EAAEC,EAAGC,EAAGC,EAAGC,EAAGE,EAAEC,KAAM5O,EAAEkO,GAAG,gBAAgBhB,EAAE,CAAC7J,OAAOgL,EAAE,OAAO,OAAOgH,QAAQlI,EAAEmI,UAAU,CAAC9H,GAAG+H,MAAM9H,EAAE+H,aAAa,CAAC9H,GAAG+H,KAAK,CAAC9H,EAAEC,GAAG8H,QAAQ,CAAC7H,GAAI8H,SAAS,MAAMxD,EAAE7D,IAAK,GAAGsH,cAAcrH,EAAG5G,MAAMd,KAAKwL,EAAEuC,SAASrG,IAAK,EAAEC,IAAK,IAAI,GAAGqH,YAAYpH,EAAG9G,MAAMd,KAAKwL,EAAEuC,SAASnG,IAAK,EAAEE,IAAI,IAAI,GAAGmH,WAAWpB,EAAG9F,IAAI,EAAG,OAAO,CAAC1B,EAAEC,EAAEK,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAGQ,EAAEC,EAAGC,EAAGC,EAAGC,EAAGE,KAAK3O,EAAEkO,GAAG,gBAAgBhB,EAAE,CAAC7J,OAAOwK,EAAG,OAAO,OAAOwH,QAAQlI,EAAEmI,UAAU3N,MAAMd,KAAKwL,EAAEuC,SAASpH,IAAI,EAAU,GAAPA,IAAI,KAAO,IAAI+H,MAAM9H,EAAEsI,YAAYpO,MAAMd,KAAKwL,EAAEuC,SAASlH,IAAI,EAAU,GAAPA,IAAI,KAAO,IAAI+H,KAAK9N,MAAMd,KAAKwL,EAAEuC,SAASjH,IAAI,EAAU,GAAPA,IAAI,KAAO,IAAI+H,QAAQ/N,MAAMd,KAAKwL,EAAEuC,SAAShH,IAAI,EAAU,GAAPA,IAAI,KAAO,IAAI+H,SAAS,MAAMxD,EAAE9D,IAAI,GAAGuH,cAActH,EAAG3G,MAAMd,KAAKwL,EAAEuC,SAAStG,IAAK,EAAEC,IAAK,IAAI,GAAGsH,YAAYrH,EAAG7G,MAAMd,KAAKwL,EAAEuC,SAASpG,IAAK,EAAEC,IAAK,IAAI,GAAGqH,WAAWpB,EAAG/F,IAAG,EAAG,OAAO,CAACzB,EAAEC,EAAEK,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAGQ,EAAEC,EAAGC,EAAGC,EAAGC,EAAGE,EAAEC,KAAM5O,EAAEkO,GAAG,gBAAgBhB,EAAE,CAAC7J,OAAOgL,EAAE,OAAO,OAAOgH,QAAQlI,EAAEmI,UAAU,CAAC9H,GAAG+H,MAAM9H,EAAE+H,aAAa,CAAC9H,GAAG+H,KAAK,CAAC9H,EAAEC,GAAG8H,QAAQ,CAAC7H,GAAI8H,SAAS,MAAMxD,EAAE7D,IAAK,GAAGsH,cAAcrH,EAAG5G,MAAMd,KAAKwL,EAAEuC,SAASrG,IAAK,EAAEC,IAAK,IAAI,GAAGqH,YAAYpH,EAAG9G,MAAMd,KAAKwL,EAAEuC,SAASnG,IAAK,EAAEE,IAAI,IAAI,GAAGmH,WAAWpB,EAAG9F,IAAI,EAAG,OAAO,CAAC1B,EAAEC,EAAEK,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAGQ,EAAEC,EAAGC,EAAGC,EAAGC,EAAGE,KAAK3O,EAAEkO,GAAG,gBAAgBhB,EAAE,CAAC7J,OAAOwK,EAAG,OAAO,OAAOwH,QAAQlI,EAAEmI,UAAU3N,MAAMd,KAAKwL,EAAEuC,SAASpH,IAAI,EAAU,GAAPA,IAAI,KAAO,IAAI+H,MAAM9H,EAAEsI,YAAYpO,MAAMd,KAAKwL,EAAEuC,SAASlH,IAAI,EAAU,GAAPA,IAAI,KAAO,IAAI+H,KAAK9N,MAAMd,KAAKwL,EAAEuC,SAASjH,IAAI,EAAU,GAAPA,IAAI,KAAO,IAAI+H,QAAQ/N,MAAMd,KAAKwL,EAAEuC,SAAShH,IAAI,EAAU,GAAPA,IAAI,KAAO,IAAI+H,SAAS,MAAMxD,EAAE9D,IAAI,GAAGuH,cAActH,EAAG3G,MAAMd,KAAKwL,EAAEuC,SAAStG,IAAK,EAAEC,IAAK,IAAI,GAAGsH,YAAYrH,EAAG7G,MAAMd,KAAKwL,EAAEuC,SAASpG,IAAK,EAAEC,IAAK,IAAI,GAAGqH,WAAWpB,EAAG/F,IAAG,EAAG,OAAO,CAACzB,EAAEC,KAAKnN,EAAEkO,GAAG,oBAAoBhB,EAAE,CAAC7J,OAAO8J,EAAE,OAAO,QAAO,EAAG,OAAO,CAACD,EAAEC,EAAEK,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAGQ,EAAEC,EAAGC,EAAGC,EAAGC,EAAGE,EAAEC,EAAGoH,KAAMhW,EAAEkO,GAAG,cAAchB,EAAE,CAAC7J,OAAO2S,EAAG,OAAO,OAAOC,SAAS9I,EAAE+I,UAAU1I,EAAE2I,kBAAkB1I,EAAE2I,cAAc1I,EAAE4H,UAAU,CAAC3H,EAAEC,GAAG4H,aAAa,CAAC3H,EAAGQ,GAAGoH,KAAK,CAACnH,EAAGC,EAAGC,EAAGC,GAAIiH,QAAQ,CAAC/G,EAAEC,IAAI,EAAG,OAAO,CAAC1B,EAAEC,KAAKnN,EAAEkO,GAAG,oBAAoBhB,EAAE,CAAC7J,OAAO8J,EAAE,OAAO,QAAO,EAAG,OAAO,CAACD,EAAEC,EAAEK,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAGQ,EAAEC,EAAGC,EAAGC,EAAGC,EAAGE,EAAEC,EAAGoH,KAAMhW,EAAEkO,GAAG,cAAchB,EAAE,CAAC7J,OAAO2S,EAAG,OAAO,OAAOC,SAAS9I,EAAE+I,UAAU1I,EAAE2I,kBAAkB1I,EAAE2I,cAAc1I,EAAE4H,UAAU,CAAC3H,EAAEC,GAAG4H,aAAa,CAAC3H,EAAGQ,GAAGoH,KAAK,CAACnH,EAAGC,EAAGC,EAAGC,GAAIiH,QAAQ,CAAC/G,EAAEC,IAAI,EAAG,OAAO,CAAC1B,EAAEC,KAAKnN,EAAEkO,GAAG,gBAAgBhB,EAAE,CAAC7J,OAAO8J,EAAE,OAAO,QAAO,EAAG,OAAO,CAACD,EAAEC,EAAEK,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAGQ,EAAEC,EAAGC,EAAGC,EAAGC,EAAGE,EAAEC,EAAGoH,KAAMhW,EAAEkO,GAAG,UAAUhB,EAAE,CAAC7J,OAAO2S,EAAG,OAAO,OAAOC,SAAS9I,EAAE+I,UAAU1I,EAAE2I,kBAAkB1I,EAAE2I,cAAc1I,EAAE4H,UAAU,CAAC3H,EAAEC,GAAG4H,aAAa,CAAC3H,EAAGQ,GAAGoH,KAAK,CAACnH,EAAGC,EAAGC,EAAGC,GAAIiH,QAAQ,CAAC/G,EAAEC,IAAI,EAAG,OAAO,CAAC1B,EAAEC,KAAKnN,EAAEkO,GAAG,gBAAgBhB,EAAE,CAAC7J,OAAO8J,EAAE,OAAO,QAAO,EAAG,OAAO,CAACD,EAAEC,EAAEK,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAGQ,EAAEC,EAAGC,EAAGC,EAAGC,EAAGE,EAAEC,EAAGoH,KAAMhW,EAAEkO,GAAG,UAAUhB,EAAE,CAAC7J,OAAO2S,EAAG,OAAO,OAAOC,SAAS9I,EAAE+I,UAAU1I,EAAE2I,kBAAkB1I,EAAE2I,cAAc1I,EAAE4H,UAAU,CAAC3H,EAAEC,GAAG4H,aAAa,CAAC3H,EAAGQ,GAAGoH,KAAK,CAACnH,EAAGC,EAAGC,EAAGC,GAAIiH,QAAQ,CAAC/G,EAAEC,IAAI,EAAG,OAAO,CAAC1B,EAAEC,EAAEK,EAAEC,EAAEC,KAAK1N,EAAEkO,GAAG,OAAOhB,EAAE,CAAC6H,MAAM5H,EAAEkJ,KAAK7I,EAAE8I,OAAO7I,EAAE8I,OAAO7I,GAAE,EAAG,OAAOR,IAAIlN,EAAEkO,GAAG,SAAShB,OAAE,EAAM,EAAG,OAAO,CAACA,EAAEC,EAAEK,EAAEC,KAAKzN,EAAEkO,GAAG,SAAShB,EAAE,CAAC+H,WAAW9H,EAAEqJ,kBAAkBhJ,EAAEiJ,KAAKhJ,GAAE,EAAG,OAAO,CAACP,EAAEC,EAAEK,EAAEC,KAAKzN,EAAEkO,GAAG,SAAShB,EAAE,CAAC+H,WAAW9H,EAAEqJ,kBAAkBhJ,EAAEiJ,KAAKhJ,GAAE,EAAG,OAAO,CAACP,EAAEC,KAAKnN,EAAEkO,GAAG,UAAUhB,EAAE,CAACuJ,KAAKtJ,GAAE,EAAG,OAAO,CAACD,EAAEC,KAAKnN,EAAEkO,GAAG,SAAShB,EAAE,CAACuJ,KAAKtJ,GAAE,EAAG,OAAO,CAACD,EAAEC,EAAEK,EAAEC,EAAEC,KAAK1N,EAAEkO,GAAG,QAAQhB,EAAE,CAACuJ,KAAKtJ,EAAEuJ,WAAWlJ,EAAEmJ,WAAWlJ,EAAE9F,MAAMd,KAAKwL,EAAEuC,SAASnH,IAAI,EAAEC,IAAI,IAAI,IAAG,EAAG,OAAOR,IAAIlN,EAAEkO,GAAG,SAAShB,OAAE,EAAM,EAAG,OAAO,CAACA,EAAEC,KAAKnN,EAAEkO,GAAG,SAAShB,EAAE,CAACuJ,KAAKzP,OAAOmG,IAAG,EAAG,OAAO,CAACD,EAAEC,KAAKnN,EAAEkO,GAAG,iBAAiBhB,EAAE,CAACuJ,KAAKzP,OAAOmG,IAAG,EAAG,OAAO,CAACD,EAAEC,EAAEK,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAGQ,EAAEC,EAAGC,KAAMvO,EAAEkO,GAAG,SAAShB,EAAE,CAAC0J,UAAUzJ,EAAEgI,KAAK3H,EAAE7F,MAAMd,KAAKwL,EAAEuC,SAASpH,IAAI,EAAEC,IAAI,IAAI,GAAGoJ,wBAAwBnC,EAAGhH,GAAGoJ,YAAYnJ,EAAEoJ,eAAenJ,EAAEoJ,mBAAmBnJ,EAAGoJ,sBAAsBvC,EAAGrG,GAAG6I,KAAKxC,EAAGpG,GAAI6I,YAAYzC,EAAGnG,IAAI,EAAG,OAAO,CAACrB,EAAEC,EAAEK,EAAEC,EAAEC,EAAEC,EAAEC,KAAK5N,EAAEkO,GAAG,QAAQhB,EAAE,CAACkK,OAAOjK,EAAExF,MAAMd,KAAKwL,EAAEuC,SAASzH,IAAI,EAAEK,IAAI,IAAI,GAAG6J,KAAK5J,EAAE9F,MAAMd,KAAKwL,EAAEuC,SAASnH,IAAI,EAAEC,IAAI,IAAI,GAAGyH,KAAKxH,EAAEhG,MAAMd,KAAKwL,EAAEuC,SAASjH,IAAI,EAAEC,IAAI,IAAI,IAAG,EAAG,OAAOV,IAAIlN,EAAEkO,GAAG,OAAOhB,OAAE,EAAM,EAAG,OAAO,CAACA,EAAEC,EAAEK,KAAKxN,EAAEkO,GAAG,qBAAqBhB,EAAE,CAACuJ,KAAKzP,OAAOmG,GAAGmK,QAAQtQ,OAAOwG,IAAG,EAAG,OAAO,CAACN,EAAEC,EAAEK,KAAKxN,EAAEkO,GAAG,wBAAwBhB,EAAE,CAACoK,QAAQnK,EAAE9J,OAAOmK,EAAE,OAAO,QAAO,EAAG,OAAO,CAACN,EAAEC,EAAEK,KAAKxN,EAAEkO,GAAG,wBAAwBhB,EAAE,CAACoK,QAAQnK,EAAE9J,OAAOmK,EAAE,OAAO,QAAO,EAAG,OAAON,IAAIlN,EAAEkO,GAAG,QAAQhB,OAAE,EAAM,EAAG,OAAO,CAACA,EAAEC,KAAKnN,EAAEkO,GAAG,SAAShB,EAAE,CAACqK,SAAS7C,EAAGvH,IAAG,EAAG,OAAO,CAACD,EAAEC,EAAEK,EAAEC,EAAEC,KAAK1N,EAAEkO,GAAG,MAAMhB,EAAE,CAACgK,KAAK/J,EAAE3M,MAAMgN,EAAEiI,KAAKhI,EAAE9F,MAAMd,KAAKwL,EAAEuC,SAASnH,IAAI,EAAEC,IAAI,IAAI,IAAG,EAAG,OAAO,CAACR,EAAEC,EAAEK,EAAEC,EAAEC,EAAEC,KAAK3N,EAAEkO,GAAG,qBAAqBhB,EAAE,CAACoK,QAAQnK,EAAEqK,SAAShK,EAAEiK,UAAU/J,EAAEgK,eAAejK,EAAEpK,OAAOsK,EAAE,OAAO,QAAO,EAAG,OAAO,CAACT,EAAEC,EAAEK,EAAEC,EAAEC,EAAEC,KAAK3N,EAAEkO,GAAG,qBAAqBhB,EAAE,CAACoK,QAAQnK,EAAEqK,SAAShK,EAAEiK,UAAU/J,EAAEgK,eAAejK,EAAEpK,OAAOsK,EAAE,OAAO,QAAO,EAAG,OAAO,CAACT,EAAEC,EAAEK,KAAKxN,EAAEkO,GAAG,SAAShB,EAAE,CAACyK,UAAU3Q,OAAOmG,GAAGyK,QAAQ5Q,OAAOwG,IAAG,EAAG,OAAO,CAACN,EAAEC,EAAEK,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAGQ,KAAKrO,EAAEkO,GAAG,YAAYhB,EAAE,CAAC2K,SAAS1K,EAAE2K,iBAAiBtK,EAAEuK,gBAAgBtK,EAAEuK,MAAMtK,EAAEuK,SAAStK,EAAEuK,eAAetK,EAAEjG,MAAMd,KAAKwL,EAAEuC,SAAS5N,OAAO6G,KAAM,EAAE7G,OAAO6G,GAAID,IAAI,IAAI,GAAGuK,yBAAyB9J,GAAE,EAAG,OAAOnB,IAAIlN,EAAEkO,GAAG,OAAOhB,OAAE,EAAM,EAAG,OAAO,CAACA,EAAEC,EAAEK,EAAEC,EAAEC,EAAEC,KAAK3N,EAAEkO,GAAG,qBAAqBhB,EAAE,CAAC2K,SAAS1K,EAAE2K,iBAAiBtK,EAAEuK,gBAAgBtK,EAAEuK,MAAMtK,EAAEuK,SAAStK,GAAE,EAAG,OAAOT,IAAIlN,EAAEkO,GAAG,UAAUhB,OAAE,EAAM,EAAG,OAAOA,IAAIlN,EAAEkO,GAAG,gBAAgBhB,OAAE,EAAM,EAAG,OAAO,CAACA,EAAEC,KAAKnN,EAAEkO,GAAG,yBAAyBhB,EAAE,CAACoK,QAAQnK,GAAE,EAAG,OAAO,CAACD,EAAEC,EAAEK,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAGQ,EAAEC,EAAGC,EAAGC,EAAGC,KAAMzO,EAAEkO,GAAG,OAAOhB,EAAE,CAAC7J,OAAOgL,EAAE,OAAO,OAAO4H,SAAS9I,EAAEmI,UAAU,CAAC9H,GAAG+H,MAAM9H,EAAE+H,aAAa,CAAC9H,GAAG+H,KAAK9H,EAAEhG,MAAMd,KAAKwL,EAAEuC,SAASjH,IAAI,EAAEC,IAAI,IAAI,GAAG8H,QAAQ,CAAC7H,GAAIuK,WAAW,MAAMjG,EAAE7D,IAAK,GAAGwH,WAAWpB,EAAGnG,GAAI8J,kBAAkB7J,EAAG7G,MAAMd,KAAK0L,EAAGqC,SAASpG,IAAK,EAAEC,IAAK,IAAI,IAAG,EAAG,OAAO,CAACvB,EAAEC,EAAEK,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAGQ,EAAEC,EAAGC,EAAGC,EAAGC,EAAGE,EAAEC,EAAGoH,KAAMhW,EAAEkO,GAAG,OAAOhB,EAAE,CAAC7J,OAAOmL,EAAG,OAAO,OAAOyH,SAAS9I,EAAEmI,UAAU,CAAC9H,EAAEC,GAAG8H,MAAM7H,EAAE8H,aAAa,CAAC7H,EAAEC,GAAG6H,KAAK5H,EAAGlG,MAAMd,KAAKwL,EAAEuC,SAAS/G,IAAK,EAAEQ,IAAI,IAAI,GAAGqH,QAAQ,CAACpH,EAAGC,GAAI6J,WAAW,MAAMjG,EAAE1D,IAAK,GAAGqH,WAAWpB,EAAG/F,GAAG0J,kBAAkBzJ,EAAGjH,MAAMd,KAAK0L,EAAGqC,SAAShG,IAAK,EAAEoH,IAAK,IAAI,IAAG,EAAG,OAAO9I,IAAIlN,EAAEmO,GAAGjB,EAAC,EAAG,OAAO,CAACA,EAAEC,IAAInN,EAAEoO,GAAGlB,EAAEC,EAAEnN,EAAEgP,GAAGC,GAAGjP,EAAEgP,GAAGE,SAAS,SAASoJ,EAAGpL,GAAG9F,KAAKxF,KAAK,aAAawF,KAAKmR,QAAQ,gCAAgCrL,KAAK9F,KAAKwK,OAAO1E,CAAC,CAAC,SAASsL,EAAGtL,GAAG9F,KAAK/J,GAAG6P,EAAE,GAAG9F,KAAKqR,GAAG,SAAStL,GAAGmF,EAAElL,KAAK/J,GAAG,IAAI,IAAI,GAAG8P,CAAC,EAAE/F,KAAKsR,GAAG,SAASvL,GAAGmF,EAAElL,KAAK/J,GAAG,IAAI,IAAI,GAAG8P,CAAC,EAAE/F,KAAKuR,GAAG,SAASxL,EAAEK,GAAGpG,KAAKwR,KAAKxR,KAAKqR,GAAGtL,GAAG/F,KAAKsR,GAAGlL,EAAE,EAAEpG,KAAKwR,GAAG,WAAWtG,EAAElL,KAAK/J,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,IAAwzDwb,EAA1yDC,SAAUC,YAAY,IAAI,IAAIA,YAAY,aAAQ,EAAOC,EAAG,CAAC9L,EAAEC,EAAEK,KAAY,IAAIC,GAAXN,KAAK,GAAUK,EAAE,IAAIA,EAAEL,EAAED,EAAEM,MAAMA,GAAGC,MAAMD,EAAE,GAAG,GAAGA,EAAEL,GAAGD,EAAEyD,QAAQmI,EAAG,OAAOA,EAAGG,OAAO/L,EAAE0H,SAASzH,EAAEK,IAAI,IAAIC,EAAE,GAAGN,EAAEK,GAAG,CAAC,IAAIE,EAAER,EAAEC,KAAK,GAAK,IAAFO,EAAM,CAAC,IAAIC,EAAS,GAAPT,EAAEC,KAAQ,GAAY,MAAN,IAAFO,GAAYD,GAAGyL,OAAOC,cAAgB,GAAFzL,IAAO,EAAEC,OAAO,CAAC,IAAIC,EAAS,GAAPV,EAAEC,KAAwE,OAAhEO,EAAW,MAAN,IAAFA,IAAe,GAAFA,IAAO,GAAGC,GAAG,EAAEC,GAAK,EAAFF,IAAM,GAAGC,GAAG,GAAGC,GAAG,EAAS,GAAPV,EAAEC,MAAgBM,GAAGyL,OAAOC,aAAazL,IAAIA,GAAG,MAAMD,GAAGyL,OAAOC,aAAa,MAAMzL,GAAG,GAAG,MAAQ,KAAFA,GAAQ,CAAC,MAAMD,GAAGyL,OAAOC,aAAazL,EAAE,CAAC,OAAOD,GAAGiH,EAAG,CAACxH,EAAEC,KAAKD,KAAK,GAAG8L,EAAG5G,EAAElF,EAAEC,GAAG,GAAGiM,EAAGlM,IAAI,IAAI,IAAIC,EAAE,EAAEK,EAAE,EAAEA,EAAEN,EAAE7L,SAASmM,EAAE,CAAC,IAAIC,EAAEP,EAAEmM,WAAW7L,GAAG,KAAKC,EAAEN,IAAI,MAAMM,EAAEN,GAAG,EAAE,OAAOM,GAAG,OAAOA,GAAGN,GAAG,IAAIK,GAAGL,GAAG,CAAC,CAAC,OAAOA,GAAGmM,EAAG,CAACpM,EAAEC,EAAEK,EAAEC,KAAK,KAAY,EAAEA,GAAG,OAAO,EAAE,IAAIC,EAA3BF,KAAK,EAA0BC,EAAED,EAAEC,EAAE,EAAE,IAAI,IAAIE,EAAE,EAAEA,EAAET,EAAE7L,SAASsM,EAAE,CAAC,IAAIC,EAAEV,EAAEmM,WAAW1L,GAAkF,GAA5E,OAAOC,GAAG,OAAOA,IAA4BA,EAAE,QAAU,KAAFA,IAAS,IAAO,KAA5CV,EAAEmM,aAAa1L,IAAqC,KAAKC,EAAE,CAAC,GAAGJ,GAAGC,EAAE,MAAMN,EAAEK,MAAM,GAAGI,CAAC,KAAK,CAAC,GAAG,MAAMA,EAAE,CAAC,GAAGJ,EAAE,GAAGC,EAAE,MAAMN,EAAEK,MAAM,GAAG,IAAII,GAAG,CAAC,KAAK,CAAC,GAAG,OAAOA,EAAE,CAAC,GAAGJ,EAAE,GAAGC,EAAE,MAAMN,EAAEK,MAAM,GAAG,IAAII,GAAG,EAAE,KAAK,CAAC,GAAGJ,EAAE,GAAGC,EAAE,MAAMN,EAAEK,MAAM,GAAG,IAAII,GAAG,GAAGT,EAAEK,MAAM,GAAG,IAAII,GAAG,GAAG,EAAE,CAACT,EAAEK,MAAM,GAAG,IAAII,GAAG,EAAE,EAAE,CAACT,EAAEK,MAAM,GAAG,IAAM,GAAFI,CAAI,CAAC,CAAC,OAAOT,EAAEK,IAAI,GAAG,EAAEA,EAAEE,GAAG6L,EAAGrM,GAAGA,EAAE,GAAI,IAAIA,EAAE,KAAM,GAAGA,EAAE,KAAM,GAAGsM,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAGxM,IAAI,IAAIC,EAAEiM,EAAGlM,GAAG,EAAEM,EAAEmM,GAAGxM,GAAG,OAAOK,GAAG8L,EAAGpM,EAAEkF,EAAE5E,EAAEL,GAAGK,GAAGoM,GAAG,GAAGC,GAAG,CAAC3M,EAAEC,KAAKyM,GAAGvY,OAAO,EAAE,IAAI,IAAImM,EAAEA,EAAE4E,EAAElF,MAAM,IAAI,CAAC,IAAIO,EAAK,KAAHD,EAAiBL,IAAVM,GAAM,KAAHD,IAAaL,EAAE,EAAE,EAAE,EAAEyM,GAAGtY,KAAQ,KAAHkM,EAAO8E,EAAEnF,IAAI,IAAI,GAAM,KAAHK,EAAO6E,EAAElF,IAAI,IAAI,GAAGqF,EAAErF,IAAI,IAAI,IAAIA,GAAGM,EAAE,EAAE,CAAC,CAAC,OAAOmM,IAAIE,GAAG,CAAC,EAAEC,GAAG,KAAK,IAAIlB,EAAG,CAAC,IAAsN1L,EAAlND,EAAE,CAAC8M,KAAK,WAAWC,QAAQ,WAAWC,KAAK,IAAIC,IAAI,IAAIC,KAAK,iBAAiBC,MAAwB,iBAAXC,WAAqBA,UAAUC,WAAWD,UAAUC,UAAU,IAAI,KAAKzJ,QAAQ,IAAI,KAAK,SAAS/M,EAAEpC,GAAG,kBAAoB,IAAIwL,KAAK2M,QAAW,IAARA,GAAG3M,UAAmBD,EAAEC,GAAGD,EAAEC,GAAG2M,GAAG3M,GAAG,IAAIK,EAAE,GAAG,IAAIL,KAAKD,EAAEM,EAAElM,KAAK,GAAG6L,KAAKD,EAAEC,MAAM0L,EAAGrL,CAAC,CAAC,OAAOqL,GAAO2B,GAAG,CAAC,KAAK,GAAG,IAAIC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAIC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAoE,SAASC,GAAGzN,EAAEC,EAAEK,EAAEC,GAAG,SAASC,EAAEiB,EAAEC,EAAGoH,GAAI,IAAIrH,EAAY,iBAAHA,EAAYA,EAAEiM,WAAWjM,GAAG,GAAGA,EAAEtN,OAAOuN,GAAID,EAAEqH,EAAG,GAAGrH,EAAE,OAAOA,CAAC,CAAC,SAAShB,EAAEgB,EAAEC,GAAI,OAAOlB,EAAEiB,EAAEC,EAAG,IAAI,CAAC,SAAShB,EAAEe,EAAEC,GAAI,SAASoH,EAAG6E,GAAI,OAAO,EAAEA,GAAI,EAAE,EAAEA,EAAG,EAAE,CAAC,CAAC,IAAIC,EAAG,OAAkD,KAA3CA,EAAG9E,EAAGrH,EAAEoM,cAAcnM,EAAGmM,iBAA2D,KAArCD,EAAG9E,EAAGrH,EAAEqM,WAAWpM,EAAGoM,eAAmBF,EAAG9E,EAAGrH,EAAEsM,UAAUrM,EAAGqM,YAAYH,CAAE,CAAC,SAASjN,EAAGc,GAAG,OAAOA,EAAEuM,UAAU,KAAK,EAAE,OAAO,IAAIC,KAAKxM,EAAEoM,cAAc,EAAE,GAAG,IAAI,KAAK,EAAE,OAAOpM,EAAE,KAAK,EAAE,OAAO,IAAIwM,KAAKxM,EAAEoM,cAAc,EAAE,GAAG,KAAK,EAAE,OAAO,IAAII,KAAKxM,EAAEoM,cAAc,EAAE,GAAG,KAAK,EAAE,OAAO,IAAII,KAAKxM,EAAEoM,cAAc,EAAE,GAAG,KAAK,EAAE,OAAO,IAAII,KAAKxM,EAAEoM,cAAc,EAAE,GAAG,IAAI,KAAK,EAAE,OAAO,IAAII,KAAKxM,EAAEoM,cAAc,EAAE,GAAG,IAAI,CAAC,SAAS1M,EAAEM,GAAG,IAAIC,EAAGD,EAAEyM,GAAG,IAAIzM,EAAE,IAAIwM,KAAK,IAAIA,KAAKxM,EAAE0M,GAAG,KAAK,EAAE,GAAGC,WAAW,EAAE1M,GAAI,CAAC,IAAIoH,EAAGrH,EAAEqM,WAAWF,GAAIvB,EAAG5K,EAAEoM,eAAeN,GAAGC,IAAI1E,GAAI,KAAGpH,EAAGkM,EAAGnM,EAAEsM,WAAwH,CAACtM,EAAE4M,QAAQ5M,EAAEsM,UAAUrM,GAAI,KAAK,CAA9IA,GAAIkM,EAAGnM,EAAEsM,UAAU,EAAEtM,EAAE4M,QAAQ,GAAG,GAAGvF,EAAGrH,EAAE6M,SAASxF,EAAG,IAAIrH,EAAE6M,SAAS,GAAG7M,EAAE8M,YAAY9M,EAAEoM,cAAc,GAAyC,CAAC,OAAO/E,EAAG,IAAImF,KAAKxM,EAAEoM,cAAc,EAAE,EAAE,GAAGnM,EAAGf,EAAG,IAAIsN,KAAKxM,EAAEoM,cAAc,EAAE,IAAI/E,EAAGnI,EAAGmI,GAAI,GAAGpI,EAAEgB,EAAGD,GAAG,GAAGf,EAAEoI,EAAGrH,GAAGA,EAAEoM,cAAc,EAAEpM,EAAEoM,cAAcpM,EAAEoM,cAAc,CAAC,CAAC7N,KAAK,EAAEC,KAAK,EAAEK,KAAK,EAAS,IAAIc,EAAGgE,EAAI,IAAlB7E,KAAK,KAAkB,IAAI,GAAglB,IAAI,IAAIc,KAArlBd,EAAE,CAACiO,GAAGrJ,EAAE5E,IAAI,IAAI,GAAGkO,GAAGtJ,EAAE5E,EAAE,IAAI,IAAI,GAAGmO,GAAGvJ,EAAE5E,EAAE,IAAI,IAAI,GAAGoO,GAAGxJ,EAAE5E,EAAE,KAAK,IAAI,GAAGqO,GAAGzJ,EAAE5E,EAAE,KAAK,IAAI,GAAG4N,GAAGhJ,EAAE5E,EAAE,KAAK,IAAI,GAAGsO,GAAG1J,EAAE5E,EAAE,KAAK,IAAI,GAAG2N,GAAG/I,EAAE5E,EAAE,KAAK,IAAI,GAAGuO,GAAG3J,EAAE5E,EAAE,KAAK,IAAI,GAAGwO,GAAG5J,EAAE5E,EAAE,KAAK,IAAI,GAAGyO,GAAG5N,EAAGoG,EAAGpG,GAAI,IAAId,EAAEkH,EAAGlH,GAAGc,EAAG,CAAC,KAAK,uBAAuB,KAAK,WAAW,KAAK,WAAW,KAAK,KAAK,KAAK,cAAc,KAAK,QAAQ,KAAK,WAAW,KAAK,WAAW,KAAK,WAAW,MAAM,KAAK,MAAM,KAAK,MAAM,WAAW,MAAM,WAAW,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,MAAuBd,EAAEA,EAAEsD,QAAQ,IAAIqL,OAAO5N,EAAG,KAAKD,EAAGC,IAAK,IAAIC,EAAG,2DAA2D1F,MAAM,KAAK2F,EAAG,wFAAwF3F,MAAM,KAC92f,IAAIyF,KAD+2fD,EAAG,CAAC,KAAKK,GAAGH,EAAGG,EAAEoN,IAAIpH,UAAU,EAAE,GAAG,KAAKhG,GAAGH,EAAGG,EAAEoN,IAAI,KAAKpN,GAAGF,EAAGE,EAAEmN,IAAInH,UAAU,EAAE,GAAG,KAAKhG,GAAGF,EAAGE,EAAEmN,IAAI,KAAKnN,GAAGhB,GAAGgB,EAAE0M,GAAG,MAAM,IAAI,EAAE,GAAG,KAAK1M,GAAGhB,EAAEgB,EAAEkN,GAAG,GAAG,KAAKlN,GAAGjB,EAAEiB,EAAEkN,GAAG,EAAE,KAAK,KAAKlN,GAAGN,EAAEM,GAAGiM,WAAWjG,UAAU,GAAG,KAAKhG,GAAGN,EAAEM,GAAG,KAAKA,GAAGhB,EAAEgB,EAAEiN,GAAG,GAAG,KAAKjN,IAAc,IAAVA,EAAEA,EAAEiN,IAAQjN,EAAE,GAAG,GAAGA,IAAIA,GAAG,IAAIhB,EAAEgB,EAAE,IAAI,KAAKA,IAAI,IAAI,IAAIC,EAAG,EAAEoH,EAAG,EAAEA,GAAIrH,EAAEmN,GAAG,EAAElN,IAAK2K,EAAG5K,EAAE0M,GAAG,MAAMZ,GAAGC,IAAI1E,MAAO,OAAOrI,EAAEgB,EAAEkN,GAAGjN,EAAG,EAAC,EAAG,KAAKD,GAAGhB,EAAEgB,EAAEmN,GAAG,EAAE,GAAG,KAAKnN,GAAGhB,EAAEgB,EAAEgN,GAAG,GAAG,KAAK,IAAI,KAC15hB,KAAKhN,GAAG,GAAGA,EAAEiN,IAAI,GAAGjN,EAAEiN,GAAG,KAAK,KAAK,KAAKjN,GAAGhB,EAAEgB,EAAE+M,GAAG,GAAG,KAAK,IAAI,KAAI,KAAK/M,GAAGA,EAAEoN,IAAI,EAAE,KAAKpN,GAAGhB,EAAEyO,KAAKC,OAAO1N,EAAEyM,GAAG,EAAEzM,EAAEoN,IAAI,GAAG,GAAG,KAAKpN,IAAI,IAAIC,EAAGwN,KAAKC,OAAO1N,EAAEyM,GAAG,GAAGzM,EAAEoN,GAAG,GAAG,GAAG,GAAG,GAAG,IAAIpN,EAAEoN,GAAG,IAAIpN,EAAEyM,GAAG,GAAG,GAAGxM,IAAKA,EAAO,IAAJA,IAAkC,IAAzBoH,GAAIrH,EAAEoN,GAAG,IAAIpN,EAAEyM,IAAI,IAAa,GAAJpF,GAAOuD,EAAG5K,EAAE0M,MAAMzM,EAAG,QAAQ,CAACA,EAAG,GAAG,IAAIoH,GAAIrH,EAAEoN,GAAG,EAAEpN,EAAEyM,GAAG,GAAG,GAAO,GAAJpF,GAAW,GAAJA,GAAOuD,EAAG5K,EAAE0M,GAAG,IAAI,KAAKzM,GAAI,CAAC,OAAOjB,EAAEiB,EAAG,EAAC,EAAG,KAAKD,GAAGA,EAAEoN,GAAG,KAAKpN,GAAGhB,EAAEyO,KAAKC,OAAO1N,EAAEyM,GAAG,GAAGzM,EAAEoN,GAAG,GAAG,GAAG,GAAG,GAAG,KAAKpN,IAAIA,EAAE0M,GAAG,MAAMT,WAAWjG,UAAU,GAAG,KAAKhG,GAAGA,EAAE0M,GAAG,KAAK,KAAK1M,IAAkB,IAAdA,EAAEA,EAAEsN,IAA2C,IAAI,MAAM,SAA/BtN,EAAEyN,KAAKE,IAAI3N,GAAG,IAA2B,GAAG,IAAIA,EAAE,KAAKoC,OAAO,GAAI,KAAKpC,GAAGA,EAAEuN,GAAG,KAAK,IAAI,KAAK1O,EAAEA,EAAEsD,QAAQ,MAAM,QAAkBxC,EAAGd,EAAEzE,SAASwF,KAAMf,EAAEA,EAAEsD,QAAQ,IAAIqL,OAAO5N,EAAG,KAAKD,EAAGC,GAAId,KAAK,OAAgCc,EAD0ub,SAAYrB,GAAG,IAAIC,EAAExF,MAAMyR,EAAGlM,GAAG,GAAG,OAAOoM,EAAGpM,EAAEC,EAAE,EAAEA,EAAE9L,QAAQ8L,CAAC,CACtyboP,CAA5B/O,EAAEA,EAAEsD,QAAQ,QAAQ,MAAcvC,EAAGlN,OAAO8L,EAAE,GAAGgF,EAAErR,IAAIyN,EAAGrB,IAAI,GAAGqB,EAAGlN,OAAO,EAAE,CAAC,IAAImb,GAAGtP,IAAI,IAAIA,GAAG,CAAC,MAAMC,GAAG+E,EAAG/E,EAAE,GAAkQsP,GAAG,EAAE/N,GAAG,KAAKgO,GAAG,EAAEC,GAAG,GAAGC,GAAG,CAAC,EAAEC,GAAG,CAAC,EAAEC,GAAG,EAAEjO,GAAG,KAAKkO,GAAG,GAAoO,SAASC,GAAG9P,GAAG,IAAI7I,EAAE,CAAC,GAAQ,IAALoY,GAAO,CAAC,IAAItP,GAAE,EAAGK,GAAE,EAAGN,GAAE,CAACO,EAAE,KAAK,IAAIpJ,IAAIqY,GAAGjP,EAAEN,GAAE,EAAGK,GAAG,CAACiP,GAAG,EAAED,IAAG,IAAIS,GAAGvO,aAAYwO,QAAQ,KAAKA,QAAQC,GAAGC,IAAIF,QAAQC,GAAGE,SAAS5P,GAAE,EAAG,IAAI,IAAIC,GAAE,EAAG4P,GAAGT,GAAGxK,EAAE3D,GAAG,IAAI,IAAI,OAAO,CAAC,MAAMb,GAAIH,EAAEG,EAAGJ,GAAE,CAAE,CAAC,IAAIE,GAAE,EAAG,IAAIe,GAAG,CAAC,IAAId,EAAEiB,GAAGjB,IAAIiB,GAAG,MAAMpB,EAAEG,EAAEmB,OAAOnB,EAAEkB,SAASpB,GAAGC,GAAE,EAAG,CAAC,GAAGF,IAAIE,EAAE,MAAMD,CAAC,KAAIF,GAAE,EAAGL,IAAIsP,GAAG,EAAE/N,GAAje,WAAc,IAAIxB,EAAEyM,GAAG,OAAOxM,EAAED,EAAE,GAAGoF,EAAEpF,IAAI,IAAI,GAAGC,EAAEmF,EAAEpF,EAAE,IAAI,IAAI,GAAGC,EAAE,MAAMA,EAAEwP,GAAG,GAAG,IAAInP,EAAEoP,GAAGzP,GAAG,YAAW,IAAJK,IAAaA,EAAEsP,KAAKF,GAAGzP,GAAGK,EAAEqP,GAAGrP,GAAGL,GAAGkF,EAAEnF,EAAE,IAAI,IAAI,GAAGM,EAAEN,CAAC,CAAuUqQ,UAAYL,QAAQ,KAAKA,QAAQC,GAAGC,IAAIF,QAAQC,GAAGK,QAAQhB,IAAG,IAAIiB,GAAG/O,MAAK,MAAW,IAAL+N,IAAQA,GAAG,EAAED,GAAGkB,IAAIC,GAAGjP,IAAIA,GAAG,KAAKqO,GAAGa,SAAQnQ,IAAI,IAAIpJ,EAAE,IAAIoJ,IAAI,IAAI/I,EAAEA,EAAE+I,EAAE/I,EAAE1E,EAAE6d,SAASpQ,GAAGpJ,GAAE,EAAGf,EAAEmK,EAAE,IAAI6K,EAAG7K,GAAG,CAAC,MAAMC,GAAGA,aAAa4K,GAAO,UAAH5K,GAAapK,EAAE,EAAEoK,EAAE,CAAC,CAAC,MAAMA,GAAGA,aAAa4K,GAAO,UAAH5K,GAAapK,EAAE,EAAEoK,EAAE,MAAKwE,EAAG,kBAAkBuK,MAAM,OAAOC,EAAE,CAAC,CAA4C,IAAIoB,GAAG,CAACzd,EAAE,SAAS6M,EAAEC,EAAEK,GAAG,OAArE,SAAYN,GAAG,OAAO8P,IAAG7P,IAAID,IAAIgH,KAAK/G,EAAC,GAAG,CAAkC4Q,EAAGxc,gBAAgBvB,EAAEiO,GAAGf,EAAEC,EAAEK,EAAC,GAAG,EAAEpN,EAAE,SAAS8M,EAAEC,EAAEK,GAAG,MAAa,IAAIgL,EAAXtL,KAAK,GAAYyL,GAAGxL,IAAI,EAAEK,IAAI,GAAMN,CAAS,EAAEC,EAAE,WAAW,OAAO,CAAC,EAAEkB,EAAE,WAAW,EAAEhK,EAAE,WAAW,EAAEoJ,EAAE,WAAW,EAAEqG,EAAE,WAAW,OAAO,CAAC,EAAEnG,EAAE,WAAW,EAAEqQ,EAAE,WAAW,EAAEC,EAAE,WAAW,EAAE3a,EAAE,WAAW,EAAEoK,EAAE,WAAW,EAAEwQ,EAAE,WAAW,EAAEla,EAAE,WAAW,EAAEU,EAAE,WAAW,EAAEhB,EAAE,IAAI,EAAEya,EAAE,SAASjR,EAAEC,EAAEK,GAAGN,EAAEC,EAAE,UAAU,EAAE,UAAUD,GAAGA,IAAI,GAAG,WAAWC,EAAEiR,IAAI5Q,KAAK,EAAEN,EAAE,IAAIiO,KAAK,IAAIjO,GAAGmF,EAAE7E,IAAI,IAAI,GAAGN,EAAEmR,gBAAgBhM,EAAE7E,EAAE,IAAI,IAAI,GAAGN,EAAEoR,gBAAgBjM,EAAE7E,EAAE,IAAI,IAAI,GAAGN,EAAEqR,cAAclM,EAAE7E,EAAE,KAAK,IAAI,GAAGN,EAAEsR,aAAanM,EAAE7E,EAAE,KAAK,IAAI,GAAGN,EAAEuR,cAAcpM,EAAE7E,EAAE,KAAK,IAAI,GAAGN,EAAEwR,iBAAiB,KAAKrM,EAAE7E,EAAE,KAAK,IAAI,GAAGN,EAAEyR,YAAYtM,EAAE7E,EAAE,KAAK,IAAI,IAAIN,EAAEoO,UAAUH,KAAKyD,IAAI1R,EAAEwR,iBAAiB,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,MAAM,CAAC,EAAE1e,EAAE,SAASkN,EAAEC,EAAEK,GAAGN,EAAEC,EAAE,UAAU,EAAE,UAAUD,GAAGA,IAAI,GAAG,WAAWC,EAAEiR,IAAI5Q,KAAK,EAAEN,EAAE,IAAIiO,KAAK,IAAIjO,GAAGmF,EAAE7E,IAAI,IAAI,GAAGN,EAAE2R,aAAaxM,EAAE7E,EAAE,IAAI,IAAI,GAAGN,EAAE4R,aAAazM,EAAE7E,EAAE,IAAI,IAAI,GAAGN,EAAE6R,WAAW1M,EAAE7E,EAAE,KAAK,IAAI,GAAGN,EAAE+N,UAAU5I,EAAE7E,EAAE,KAAK,IAAI,GAAGN,EAAE8N,WAAW3I,EAAE7E,EAAE,KAAK,IAAI,GAAGN,EAAE6N,cAAc,KAAK1I,EAAE7E,EAAE,KAAK,IAAI,GAAGN,EAAEgO,SAAS7I,EAAE7E,EAAE,KAAK,IAAI,IAAI+L,EAAGrM,EAAE6N,eAAevB,GAAGC,IAAIvM,EAAE8N,YAAY9N,EAAE+N,UAAU,EAAE,EAAE5I,EAAE7E,EAAE,KAAK,IAAI,IAAK,GAAGN,EAAE8R,oBAAqB7R,EAAE,IAAIgO,KAAKjO,EAAE6N,cAAc,EAAE,GAAGiE,oBAAoB,IAAIvR,EAAE,IAAI0N,KAAKjO,EAAE6N,cAAc,EAAE,GAAGiE,oBAAoB3M,EAAE7E,EAAE,KAAK,IAAI,GAAgD,GAA5CL,GAAGM,GAAGP,EAAE8R,qBAAqB5C,KAAKvH,IAAIpH,EAAEN,GAAK,EAAE8R,EAAE,SAAS/R,GAAGA,KAAK,EAAE,IAAIC,EAAE,IAAIgO,KAAK9I,EAAEnF,EAAE,KAAK,IAAI,GAAG,KAAKmF,EAAEnF,EAAE,KAAK,IAAI,GAAGmF,EAAEnF,EAAE,KAAK,IAAI,GAAGmF,EAAEnF,EAAE,IAAI,IAAI,GAAGmF,EAAEnF,EAAE,IAAI,IAAI,GAAGmF,EAAEnF,IAAI,IAAI,GAAG,GAAGM,EAAE6E,EAAEnF,EAAE,KAAK,IAAI,GAAGO,EAAEN,EAAE6R,oBAAoBtR,EAAE,IAAIyN,KAAKhO,EAAE4N,cAAc,EAAE,GAAGiE,oBAAoBrR,EAAE,IAAIwN,KAAKhO,EAAE4N,cAAc,EAAE,GAAGiE,oBAAoBpR,EAAEwO,KAAKvH,IAAIlH,EAAED,GAAG,OAAO,EAAEF,EAAE6E,EAAEnF,EAAE,KAAK,IAAI,KAAKQ,GAAGC,GAAGC,GAAGH,GAAG,EAAED,IAAII,GAAGH,KAAKC,EAAE0O,KAAKtH,IAAInH,EAAED,GAAGP,EAAE+R,QAAQ/R,EAAEmO,UAAU,MAAM,EAAE9N,EAAEI,EAAEF,GAAGD,KAAK4E,EAAEnF,EAAE,KAAK,IAAI,GAAGC,EAAE+N,SAAS7I,EAAEnF,EAAE,KAAK,IAAI,IAAIqM,EAAGpM,EAAE4N,eAAevB,GAAGC,IAAItM,EAAE6N,YAAY7N,EAAE8N,UAAU,EAAE,EAAE5I,EAAEnF,IAAI,IAAI,GAAGC,EAAE0R,aAAaxM,EAAEnF,EAAE,IAAI,IAAI,GAAGC,EAAE2R,aAAazM,EAAEnF,EAAE,IAAI,IAAI,GAAGC,EAAE4R,WAAW1M,EAAEnF,EAAE,KAAK,IAAI,GAAGC,EAAE8N,UAAU5I,EAAEnF,EAAE,KAAK,IAAI,GAAGC,EAAE6N,WAAW3I,EAAEnF,EAAE,KAAK,IAAI,GAAGC,EAAEgS,UAAUjS,EAAEC,EAAEmO,UAAU8D,MAAMlS,IAAImF,EAAEgN,OAAO,IAAI,GAAG,GAAGnS,GAAG,GAAGA,GAAG,IAAIoS,IAAI9K,EAAGtH,EAAE,IAAIkP,KAAKE,IAAI9H,GAAI,EAAEA,GAAI4H,KAAKC,MAAM7H,EAAG,cAAc,KAAK4H,KAAKmD,MAAM/K,MAAOA,IAAK,IAAI,cAAc,EAAE,IAAItH,IAAI,CAAC,EAAE9L,EAAE,WAAW,OAAO,EAAE,EAAEoe,EAAE,WAAW,EAAE1b,EAAE,SAASoJ,EAAEC,EAAEK,GAAG,SAASC,EAAEY,GAAG,OAAOA,EAAEA,EAAEoR,eAAeC,MAAM,sBAAsBrR,EAAE,GAAG,KAAK,CAACb,KAAK,EAAE,IAAIE,GAAE,IAAIyN,MAAOJ,cAAcpN,EAAE,IAAIwN,KAAKzN,EAAE,EAAE,GAAGE,EAAE,IAAIuN,KAAKzN,EAAE,EAAE,GAAGA,EAAEC,EAAEqR,oBAAoB,IAAInR,EAAGD,EAAEoR,oBAAoB1M,EAAEpF,IAAI,IAAI,IAAI,GAAG,GAAGkP,KAAKtH,IAAIpH,EAAEG,GAAIwE,EAAElF,IAAI,IAAI,IAAI,KAAKO,GAAGG,GAAIX,EAAEO,EAAEE,GAAGR,EAAEM,EAAEG,GAAGV,EAAEwM,GAAGxM,GAAGC,EAAEuM,GAAGvM,GAAGU,EAAGH,GAAG4E,EAAE9E,IAAI,IAAI,GAAGN,EAAEoF,EAAE9E,EAAE,IAAI,IAAI,GAAGL,IAAImF,EAAE9E,IAAI,IAAI,GAAGL,EAAEmF,EAAE9E,EAAE,IAAI,IAAI,GAAGN,EAAE,EAAEvN,EAAE,KAAKuS,EAAG,GAAE,EAAGrO,EAAE,SAASqJ,EAAEC,EAAEK,GAAG,OAAON,KAAK,EAAEC,EAAE0M,GAAG1M,IAAI,EAAEK,IAAI,GAAGiH,EAAGvH,GAAGyS,MAAM,KAAKxS,EAAE,EAAEhK,EAAE,SAAS+J,EAAEC,EAAEK,GAAG,OAAON,KAAK,EAAEC,EAAE0M,GAAG1M,IAAI,EAAEK,IAAI,GAAGiH,EAAGvH,GAAGyS,MAAM,KAAKxS,EAAE,EAAEvJ,EAAE,IAAIuX,KAAKyE,MAAMzb,EAAE,WAAW,OAAO,UAAU,EAAEf,EAAE,IAAIyc,YAAYD,MAAMnN,EAAE,SAASvF,EAAEC,EAAEK,GAAG,OAAOL,KAAK,EAAEiF,EAAE0N,WAAW5S,IAAI,IAAI,EAAEC,IAAI,EAAEA,GAAGK,IAAI,KAAK,EAAE,EAAE7L,EAAE,SAASuL,GAAGA,KAAK,EAAE,IAAIC,EAAEiF,EAAE/Q,OAAO,GAAG,WAAW6L,EAAE,OAAM,EAAG,IAAI,IAAIM,EAAE,EAAE,GAAGA,EAAEA,GAAG,EAAE,CAAC,IAAIC,EAAEN,GAAG,EAAE,GAAGK,GAAGC,EAAE2O,KAAKvH,IAAIpH,EAAEP,EAAE,WAAW,IAAIQ,EAAE0O,KAAK3O,EAAE2O,KAAKtH,IAAI5H,EAAEO,GAAG9N,EAAE,CAAC+N,GAAGA,EAAEmH,IAAIvU,KAAKoN,EAAE,WAAWD,GAAG,MAAMA,EAAE,OAAO,OAAOrJ,EAAEuM,OAAOjH,WAAW,OAAO,MAAM,IAAItF,EAAE2b,KAAKrS,GAAG+E,IAAI,IAAI9E,EAAE,EAAE,MAAMhO,CAAC,CAAC,MAAM,CAACgO,OAAE,CAAM,CAAC,GAAGA,EAAE,OAAM,CAAE,CAAC,OAAM,CAAE,EAAE0E,EAAE,SAASnF,EAAEC,GAAGD,KAAK,EAAEC,KAAK,EAAE,IAAIK,EAAE,EAAE,OAAOuM,KAAK6D,SAAQ,CAACnQ,EAAEC,KAAK,IAAIC,EAAER,EAAEK,EAAE,IAAIE,EAAE4E,EAAEpF,EAAE,EAAEQ,IAAI,IAAI,GAAGC,EAAEA,EAAE,EAAEA,EAAEF,EAAEpM,SAASsM,EAAEwE,EAAEzE,MAAM,IAAI,GAAGD,EAAE4L,WAAW1L,GAAGwE,EAAEzE,IAAI,IAAI,GAAG,EAAEF,GAAGC,EAAEpM,OAAO,KAAI,CAAC,EAAE3B,EAAE,SAASwN,EAAEC,GAAGD,KAAK,EAAEC,KAAK,EAAE,IAAIK,EAAEuM,KAAKzH,EAAEpF,IAAI,IAAI,GAAGM,EAAEnM,OAAO,IAAIoM,EAAE,EAAE,OAAOD,EAAEoQ,SAAQlQ,GAAGD,GAAGC,EAAErM,OAAO,IAAGiR,EAAEnF,IAAI,IAAI,GAAGM,EAAE,CAAC,EAAE9J,EAAE,IAAI,GAAGgL,EAAE,WAAW,OAAO,EAAE,EAAE/O,EAAE,WAAW,OAAO,EAAE,EAAEgO,EAAE,SAASV,EAAEC,EAAEK,EAAEC,GAAGN,KAAK,EAAEK,KAAK,EAAEC,KAAK,EAAE,IAAI,IAAIC,EAAE,EAAEC,EAAE,EAAEA,EAAEH,EAAEG,IAAI,CAAC,IAAIC,EAAE0E,EAAEnF,IAAI,IAAI,GAAGU,EAAGyE,EAAEnF,EAAE,IAAI,IAAI,GAAGA,GAAG,EAAE,IAAI,IAAIkB,EAAE,EAAEA,EAAER,EAAGQ,IAAI,CAAC,IAAIC,EAAG8D,EAAExE,EAAES,IAAI,GAAGE,EAAGiM,GAAGtN,GAAQ,IAALoB,GAAa,KAALA,IAAc,IAAJpB,EAAMjJ,EAAEE,GAAG6U,EAAGzK,EAAG,IAAIA,EAAGlN,OAAO,GAAGkN,EAAGjN,KAAKgN,EAAG,CAACZ,GAAGG,CAAE,CAAC,OAAOyE,EAAE7E,IAAI,IAAI,GAAGC,EAAE,CAAC,EAAEF,EAAEmN,GAAGzN,EAAE,SAASA,EAAEC,EAAEK,EAAEC,GAAG,OAAOkN,GAAGzN,IAAI,EAAEC,IAAI,EAAEK,IAAI,EAAEC,IAAI,EAAE,GAAG6P,GAAG,WAAW,SAASpQ,EAAEM,GAAG,OAAO8P,GAAG9P,EAAE1N,QAAQwd,GAAnmK,WAAc,IAAIpQ,EAAEoQ,GAAGnQ,EAAE,CAAC,EAAE,IAAI,IAAIK,EAAEC,KAAKxO,OAAO+gB,QAAQ9S,GAAGC,EAAEK,GAAa,mBAAHC,EAAc,WAAWkP,GAAGrb,KAAKkM,GAAG,IAAI,OAAOC,EAAEkS,MAAM,KAAKM,UAAU,CAAC,QAAQ5b,IAAIsY,GAAGuD,MAAMxR,IAAS,IAAL+N,IAAoB,IAAZE,GAAGtb,SAAaob,GAAG,EAAED,GAAG2D,WAAWC,OAAO,KAAKA,OAAOC,MAAM,CAAC,EAAE5S,EAAE,OAAON,CAAC,CAA42JmT,GAAKhD,GAAg7E,WAAc,IAAIpQ,EAAEoQ,GAAGpQ,EAAEjO,OAAOgR,OAAO,CAAC,EAAE/C,GAAG,IAAIC,EAAEM,GAAG,IAAIA,MAAM,EAAED,EAAEC,GAAGC,GAAGD,EAAEC,KAAK,EAAE,OAAOR,EAAEqT,GAAGpT,EAAED,EAAEqT,IAAIrT,EAAEsT,GAAGhT,EAAEN,EAAEsT,IAAItT,EAAEuT,GAAGtT,EAAED,EAAEuT,IAAIvT,EAAEwT,GAAGlT,EAAEN,EAAEwT,IAAIxT,CAAC,CAA5jFyT,GAAKvc,EAAEkZ,GAAGsD,EAAEnO,IAAIU,EAAE0N,QAAQvD,GAAGlL,GAAY,KAATiB,IAAkB,OAALC,IAAYwN,cAAcxN,GAAIA,EAAG,MAAMC,IAAK/F,EAAE+F,EAAGA,EAAG,KAAK/F,MAAM8P,EAAE,CAAC,IAAInQ,EAAE,CAAC/M,EAAE0d,IAAI,GAAGzK,IAAKrT,EAAE+gB,gBAAgB,IAAI,OAAO/gB,EAAE+gB,gBAAgB5T,EAAED,EAAE,CAAC,MAAMM,GAAGrJ,EAAE,sDAAsDqJ,KAAKnN,EAAEmN,EAAE,CAAC,OAD9jG,SAAYN,EAAEC,GAAG,IAAIK,EAAEiG,EAAG,MAAgD,mBAAlCxB,YAAY+O,sBAAkCtN,EAAGlG,IAAIgD,EAAGhD,IAAI9J,GAAiB,mBAAPsQ,MAAkBD,EAAGvG,EAAEN,EAAEC,GAAG6G,MAAMxG,EAAE,CAACyG,YAAY,gBAAgBC,MAAKzG,GAAGwE,YAAY+O,qBAAqBvT,EAAEP,GAAGgH,KAAK/G,GAAE,SAASO,GAAG,OAAOvJ,EAAE,kCAAkCuJ,KAAKvJ,EAAE,6CAA6C4P,EAAGvG,EAAEN,EAAEC,EAAE,KAAG,CAC0uF8T,CAAG9T,GAAE,SAASK,GAAGN,EAAEM,EAAE0T,SAAS,IAAG7M,MAAMhU,GAAG,CAAC,CAAC,CAA9W,GAAkXL,EAAEmhB,SAAS,CAACjU,EAAEC,KAAKnN,EAAEmhB,SAAS7D,GAAG8D,GAAGlU,EAAEC,GAAGnN,EAAEqhB,iBAAiB,CAACnU,EAAEC,KAAKnN,EAAEqhB,iBAAiB/D,GAAGgE,GAAGpU,EAAEC,GAAGnN,EAAEuhB,yBAAyB,CAACrU,EAAEC,EAAEK,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAGQ,EAAEC,KAAMtO,EAAEuhB,yBAAyBjE,GAAGkE,GAAGtU,EAAEC,EAAEK,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAGQ,EAAEC,GAAItO,EAAEyhB,4BAA4B,CAACvU,EAAEC,KAAKnN,EAAEyhB,4BAA4BnE,GAAGnL,GAAGjF,EAAEC,GAAGnN,EAAE0hB,6BAA6B,CAACxU,EAAEC,EAAEK,KAAKxN,EAAE0hB,6BAA6BpE,GAAGqE,GAAGzU,EAAEC,EAAEK,GAAGxN,EAAE4hB,0BAA0B,CAAC1U,EAAEC,EAAEK,KAAKxN,EAAE4hB,0BAA0BtE,GAAGlZ,GAAG8I,EAAEC,EAAEK,GAAGxN,EAAE6hB,0BAA0B3U,IAAIlN,EAAE6hB,0BAA0BvE,GAAGwE,GAAG5U,GAAGlN,EAAE+hB,kBAAkB,CAAC7U,EAAEC,EAAEK,KAAKxN,EAAE+hB,kBAAkBzE,GAAG0E,GAAG9U,EAAEC,EAAEK,GAAGxN,EAAEiiB,mBAAmB/U,IAAIlN,EAAEiiB,mBAAmB3E,GAAGhL,GAAGpF,GAAGlN,EAAEkiB,wBAAwB,CAAChV,EAAEC,EAAEK,KAAKxN,EAAEkiB,wBAAwB5E,GAAGpK,GAAGhG,EAAEC,EAAEK,GAAGxN,EAAEmiB,iBAAiB,CAACjV,EAAEC,KAAKnN,EAAEmiB,iBAAiB7E,GAAG9K,GAAGtF,EAAEC,GAAGnN,EAAEoiB,kBAAkB,CAAClV,EAAEC,KAAKnN,EAAEoiB,kBAAkB9E,GAAGnK,GAAGjG,EAAEC,GAAGnN,EAAEqiB,SAASnV,IAAIlN,EAAEqiB,SAAS/E,GAAGvZ,GAAGmJ,GAAGlN,EAAEsiB,iBAAiB,CAACpV,EAAEC,EAAEK,EAAEC,EAAEC,EAAEC,KAAK3N,EAAEsiB,iBAAiBhF,GAAGrZ,GAAGiJ,EAAEC,EAAEK,EAAEC,EAAEC,EAAEC,GAAG3N,EAAEuiB,kBAAkB,CAACrV,EAAEC,EAAEK,EAAEC,EAAEC,KAAK1N,EAAEuiB,kBAAkBjF,GAAGkF,IAAItV,EAAEC,EAAEK,EAAEC,EAAEC,GAAG1N,EAAEyiB,kBAAkBvV,IAAIlN,EAAEyiB,kBAAkBnF,GAAGoF,IAAIxV,GAAGlN,EAAE2iB,qBAAqB,CAACzV,EAAEC,EAAEK,EAAEC,KAAKzN,EAAE2iB,qBAAqBrF,GAAGsF,IAAI1V,EAAEC,EAAEK,EAAEC,GAAGzN,EAAE6iB,sBAAsB,CAAC3V,EAAEC,EAAEK,KAAKxN,EAAE6iB,sBAAsBvF,GAAGwF,IAAI5V,EAAEC,EAAEK,GAAGxN,EAAE+iB,sBAAsB7V,IAAIlN,EAAE+iB,sBAAsBzF,GAAG0F,IAAI9V,GAAGlN,EAAEijB,kBAAkB/V,IAAIlN,EAAEijB,kBAAkB3F,GAAG4F,IAAIhW,GAAGlN,EAAEwP,cAAc,CAACtC,EAAEC,EAAEK,KAAKxN,EAAEwP,cAAc8N,GAAG6F,IAAIjW,EAAEC,EAAEK,GAAGxN,EAAEojB,eAAe,CAAClW,EAAEC,EAAEK,EAAEC,KAAKzN,EAAEojB,eAAe9F,GAAG+F,IAAInW,EAAEC,EAAEK,EAAEC,GAAGzN,EAAEsjB,sBAAsBpW,IAAIlN,EAAEsjB,sBAAsBhG,GAAGiG,IAAIrW,GAAGlN,EAAEwjB,mBAAmBtW,IAAIlN,EAAEwjB,mBAAmBlG,GAAGmG,IAAIvW,GAAGlN,EAAEuP,mBAAmB,CAACrC,EAAEC,EAAEK,EAAEC,EAAEC,KAAK1N,EAAEuP,mBAAmB+N,GAAGoG,IAAIxW,EAAEC,EAAEK,EAAEC,EAAEC,GAAG1N,EAAEsP,QAAQ,CAACpC,EAAEC,EAAEK,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,KAAM7N,EAAEsP,QAAQgO,GAAGqG,IAAIzW,EAAEC,EAAEK,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,GAAI7N,EAAE4jB,iBAAiB1W,IAAIlN,EAAE4jB,iBAAiBtG,GAAGuG,IAAI3W,GAAGlN,EAAE8jB,YAAY,CAAC5W,EAAEC,EAAEK,KAAKxN,EAAE8jB,YAAYxG,GAAGyG,IAAI7W,EAAEC,EAAEK,GAAGxN,EAAEgkB,iBAAiB9W,IAAIlN,EAAEgkB,iBAAiB1G,GAAG2G,IAAI/W,GAAG,IAAmkBgX,GAA/jB7E,GAAG,KAAKA,GAAG/B,GAAGiD,MAAM5G,GAAG3Z,EAAEmkB,QAAQjX,IAAIyM,GAAG3Z,EAAEmkB,QAAQ7G,GAAGkD,IAAItT,GAAGyQ,GAAG3d,EAAEokB,MAAMlX,IAAIyQ,GAAG3d,EAAEokB,MAAM9G,GAAG+G,IAAInX,GAAGoS,GAAGpS,IAAIoS,GAAGhC,GAAGgH,IAAIpX,GAAGqX,GAAG,KAAKA,GAAGjH,GAAGmD,MAAM+D,GAAGtX,IAAIsX,GAAGlH,GAAGmH,IAAIvX,GAAGwX,GAAGxX,IAAIwX,GAAGpH,GAAGoD,IAAIxT,GAAGuQ,GAAGvQ,IAAIuQ,GAAGH,GAAGqH,IAAIzX,GAAGiT,GAAG,KAAKA,GAAG7C,GAAGsH,MAAM3H,GAAG/P,IAAI+P,GAAGK,GAAGuH,IAAI3X,GAAGwQ,GAAG,KAAKA,GAAGJ,GAAGwH,MAA6W,SAASC,KAAK,KAAK,EAAE1R,GAAI,CAAC,GAAGrT,EAAEglB,OAAO,IAAqB,mBAAVhlB,EAAEglB,SAAqBhlB,EAAEglB,OAAO,CAAChlB,EAAEglB,SAAShlB,EAAEglB,OAAO3jB,QAAQ,CAAC,IAAI6L,EAAElN,EAAEglB,OAAOC,QAAQ/R,EAAE2N,QAAQ3T,EAAE,CAAC,KAAK,EAAEgG,EAAE7R,QAAQ6R,EAAE+R,OAAF/R,CAAUlT,GAAG,KAAK,EAAEqT,GAAI6Q,KAAKA,IAAG,EAAGlkB,EAAEklB,WAAU,EAAG7gB,IAAI,CAAC,KAAK,EAAE8O,EAAE9R,QAAQ8R,EAAE8R,OAAF9R,CAAUnT,GAAG,IAAII,EAAEJ,GAAG,EAAEoT,EAAG/R,QAAQ+R,EAAG6R,OAAH7R,CAAWpT,EAAE,CAAC,CAAC,CAAC,OAAtoBA,EAAEmlB,eAAe,OAAOnlB,EAAEolB,cAAc,OAAuJplB,EAAEqlB,WAAWX,GAAG1kB,EAAEslB,UAAUf,GAAGvkB,EAAEulB,aAAaf,GAAGxkB,EAAEwlB,aAAa9Q,EAAG1U,EAAEylB,aAAa,CAACvY,EAAEC,EAAEK,IAAI8L,EAAGpM,EAAEkF,EAAEjF,EAAEK,GAAGxN,EAAE0lB,gBAAgBtM,EAAU7F,EAAG,SAASrG,IAAIgX,IAAIa,KAAKb,KAAK3Q,EAAGrG,EAAE,EAAwS6X,KAAKnlB,EAAEqN,KAAK,GAAiB,iBAAJL,GAAyB,iBAAJC,EAAaA,EAAG/M,QAAQgN,EAAkB,mBAAR6Y,QAAoBA,OAAOC,KAAKD,OAAO,IAAG,IAAI7Y,GAAE,IAAQ+Y,GAAGhmB,GAAG,SAAYimB,GAAGjmB,GAAG,SAAYkmB,GAAG,CAAC,EAAEhmB,EAAGgmB,GAAG,CAACC,KAAK,IAAIC,KAAK,IAAIA,GAIw4FC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAw5EC,GAAGC,GAAGC,GAA8vBC,GAAg/BC,GAAGC,GAAGC,GAAGC,GAAGC,GAAqzGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAG3E,GAAssD4E,GAA0iCC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAA4PC,GAA0FC,GAAGC,GAAGC,GAAGxE,GAAGM,GAAGmE,GAAwvIhG,GAAGiG,GAA2NlF,GAAGmF,GAAG5G,GAAE6G,GAAGC,GAAGC,GAAGC,GAA+qJ5a,GAAG6a,GAAGC,GAAG/K,GAAEgL,GAAGC,GAAGC,GAAGC,GAAGC,GAAG5I,GAAGG,GAAEzC,GAAEmL,GAAGrF,GAAGsF,GAAGC,GAAGC,GA2C9o/BC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAG/U,GAcoOgV,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAsCknBC,GAAGC,GAAGC,GAAG5H,GAAG6H,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAuBgUC,GAAGC,GAAGC,GAAGlK,GAUzxCmK,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GA8K8RC,GAAGC,GAAGC,GAAGC,GAiBsFC,GAAGC,GAAGC,GAS9hBC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAkCiyCC,GAAGC,GAAGC,GAkBh5CC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GA8C6ZC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GA4BvOC,GAAGC,GAAmsBC,GAAGC,GAE99BC,GASNC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAqRwOC,GAAGC,GA4FtLrP,GA0C2GyB,GAAG6N,GAAGC,GAmCynBpP,GAAGqP,GAAGC,GAAGC,GAAGlS,GAAGmS,GAAGC,GAAGrO,GAA2oHsO,GAAGC,GA0Gz4IC,GAAGta,GA4KkUua,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAA4uIC,GAAGC,GAAGC,GAa7sIC,GAAGC,GAAGC,GAAMC,GAAGnY,GAAGhO,GAAGomB,GAAGC,GAAGC,GAAGC,GAW0NC,GAAGC,GAAGC,GAAGC,GAAGC,GAsBnXC,GAAGC,GAAGC,GAAGC,GA+BtEC,GAAGC,GAAGC,GAAGC,GAiBxNC,GAAGC,GAAGC,GAAGC,GAiBqTC,GAAGC,GAAGC,GAAGC,GA+HhGC,GAAGC,GAAGC,GA6B4BC,GAAGC,GAAGC,GAAGC,GAAG/Y,GAAGgZ,GAOi/BC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAyE1pBC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GA2F6GC,GAAGC,GAAGC,GAK9VC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAsQ6ZC,GAAGC,GAAGC,GAAGC,GA+BvfC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GA0B1KC,GAAGC,GAAGC,GAAGC,GAwExFC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GA4B6KC,GAAGC,GAAGC,GAAGC,GAAGC,GAc3LC,GAAGC,GAAGC,GA2BsQC,GAA2sDC,GAGxoDC,GAAGC,GAAGC,GAnjE8+QC,GAAGh8B,GAAE,KAAKumB,QAAG,CAAK,IAAQ0V,GAAG97B,GAAG,CAAC+7B,EAAGC,KAAmB,IAAiBl8B,EAAbm8B,GAAan8B,SAASgD,SAAS,KAAKA,SAASoK,cAAcpK,SAASoK,cAAcrH,SAAI,SAAqBsH,WAAW,MAAMrN,EAAEA,GAAGqN,YAAY,SAASpN,EAAE,CAAC,GAAG,SAASI,IAAI,OAAOkT,EAAEvC,QAAQ2C,EAAG3C,QAAQiD,IAAKN,CAAE,CAAC,SAASlT,IAAI,OAAO8S,EAAEvC,QAAQ2C,EAAG3C,QAAQiD,IAAKL,CAAE,CAAC,SAASlT,IAAI,OAAO6S,EAAEvC,QAAQ2C,EAAG3C,QAAQiD,IAAK1B,CAAE,CAAC,SAAS9Q,IAAI,OAAO8R,EAAEvC,QAAQ2C,EAAG3C,QAAQiD,IAAKF,CAAE,CAAC,SAAS/R,IAAI,OAAOuR,EAAEvC,QAAQ2C,EAAG3C,QAAQiD,IAAKpD,CAAE,CAAC,SAASlN,IAAI,OAAO4P,EAAEvC,QAAQ2C,EAAG3C,QAAQiD,IAAKH,CAAE,CAAC,IAAQrQ,EAAEM,EAANP,EAAEvD,EAAMuD,EAAE8J,MAAM,IAAI1H,SAAQ,CAAC0Z,EAAEO,KAAKpc,EAAE6b,EAAEvb,EAAE8b,KAAIrc,EAAEiK,kBAAkB,CAAC6R,EAAEO,MAAMrc,EAAEkd,KAAKld,EAAEkd,GAAG,IAAI3f,MAAMI,IAAIme,EAAEO,EAAC,EAAGrc,EAAEmK,oBAAoB,YAAYnK,EAAEkd,IAAIld,EAAEoK,SAAS,CAAC0R,EAAEO,EAAEtB,EAAEyD,EAAEP,EAAEpD,EAAEgE,EAAE+Z,KAAM54B,EAAE64B,GAAG/c,EAAE9b,EAAE84B,GAAGzc,EAAErc,EAAE+4B,GAAGhe,EAAE/a,EAAEg5B,GAAGxa,EAAExe,EAAEi5B,GAAGhb,EAAEje,EAAE6L,GAAGgP,EAAE7a,EAAEk5B,GAAGra,EAAE7e,EAAEm5B,GAAGP,EAAGvc,EAAE,CAAC+c,EAAGC,EAAGC,IAAK,IAAIC,KAAM,IAAIC,EAAGC,GAAGtb,EAAEkb,MAAOE,EAAGH,KAAMG,GAAI,IAAIG,EAAGL,MAAO,OAAOlb,IAAIub,IAAKN,EAAGM,EAAGJ,EAAGnb,GAAGkb,EAAGC,EAAG,MAAMG,IAAID,EAI91R,IAAIp3B,SAAQ,CAAC0Z,EAAEO,KAAKsd,GAAG,CAAChuB,QAAQmQ,EAAElQ,OAAOyQ,EAAC,IAJ4zRkd,GAAIxe,EAAEqe,GAAIh7B,SAASi7B,KAAM,IAAI,GAAGr5B,EAAE6Y,GAAG,MAAM/a,MAAM,2BAA2B,IAAIw7B,EAAGt5B,EAAE6Y,GAAG,CAAC+gB,GAAGP,EAAG,GAAGttB,OAAO,IAAIwtB,QAASH,KAAMC,GAAI,GAAGr5B,EAAE6Y,KAAKygB,EAAG,MAAMx7B,MAAM,oBAAoBge,EAAE9P,QAAQ,IAAIwtB,EAAGF,EAAGvtB,OAAO,GAAG,EAAEytB,EAAGt7B,OAAO,CAAC,IAAIigB,QAAQ/b,QAAQ6J,IAAIutB,GAAI,GAAGrb,EAAEA,EAAEjS,QAAOwtB,GAAIA,IAAI,EAAEvb,EAAEjgB,OAAO,MAAMJ,MAAMqgB,EAAEvf,KAAK,MAClxU,CAAC,OAAO26B,CAAE,CAAC,QAAQv5B,EAAE6Y,GAAG,IAAI,GAAG7Y,EAAEmM,QAAQ4O,EAAEsB,EAAErc,EAAEmM,SAAQ,IAAInM,EAAEmM,UAAQitB,GAAIp5B,EAAEmM,QAAQitB,KAAKp5B,EAAEoM,mBAAmB2O,EAAEsB,EAAErc,EAAEoM,oBAAmB,IAAIpM,EAAEoM,qBAAmBgtB,GAAIp5B,EAAEoM,mBAAmBgtB,KAAKp5B,EAAEqM,cAAcgQ,EAAErc,EAAEqM,eAAc,IAAIrM,EAAEqM,gBAAc+sB,GAAIp5B,EAAEqM,cAAc+sB,IAAIp5B,EAAEsM,mBAAmB,CAAC8sB,EAAGC,EAAGC,EAAGC,IAAKzd,EAAEvP,eAAe6sB,EAAGC,EAAGC,EAAGC,GAAIv5B,EAAEwM,sBAAsB4sB,IAAKtd,EAAErP,kBAAkB2sB,EAAE,EAAGp5B,EAAE0M,cAAc0sB,GAAItd,EAAEnP,UAAUysB,GAAIp5B,EAAE4M,qBAAqB,CAACwsB,EAAGC,EAAGC,IAAKxd,EAAEjP,iBAAiBusB,EAAGC,EAAGC,EAAE,EAAG,IAAmUp4B,EAAEK,EAAEyN,EAAnUxO,EAAE1E,OAAOgR,OAAO,CAAC,EAAE9M,GAAGS,EAAE,iBAAiBC,EAAE,CAACob,EAAEO,KAAK,MAAMA,GAAG1b,EAAiB,iBAARoM,OAAiBnM,EAAwB,mBAAfoM,cAA0BnM,EAAkB,iBAAToM,SAA4C,iBAAlBA,QAAQ9N,UAAkD,iBAAvB8N,QAAQ9N,SAAS+N,KAAepM,EAAEd,EAAE65B,yBAAwB,EAAG74B,EAAE,GAAG,SAASC,EAAE6a,GAAG,OAAO9b,EAAE0Q,WAAW1Q,EAAE0Q,WAAWoL,EAAE9a,GAAGA,EAAE8a,CAAC,CAAW,GAAGjb,EAAE,CAAC,IAAIoO,GAAG7F,KAAKpM,EAAG6L,KAAKqG,GAAG3F,KAAKvM,EAAGqM,KAAid,IAAIyS,EAAhd9a,EAAEJ,EAAEsO,EAAE/B,QAAQnM,GAAG,IAAIoM,UAAU,IAAIlM,EAAE,CAACmb,EAAEtB,KAAKsB,EAAE1G,EAAG0G,GAAG,IAAI/O,IAAI+O,GAAGnN,EAAE3B,UAAU8O,GAAGpN,EAAE/F,aAAamT,EAAEtB,OAAE,EAAO,SAAS/L,EAAEqN,KAAIA,EAAEnb,EAAEmb,GAAE,IAAM7O,SAAS6O,EAAE,IAAInZ,WAAWmZ,IAAIA,GAAG9a,EAAE,CAAC8a,EAAEtB,EAAEyD,EAAEP,GAAE,KAAM5B,EAAE1G,EAAG0G,GAAG,IAAI/O,IAAI+O,GAAGnN,EAAE3B,UAAU8O,GAAGpN,EAAEjG,SAASqT,EAAE4B,OAAE,EAAO,QAAO,CAACpD,EAAEgE,KAAKhE,EAAE2D,EAAE3D,GAAGE,EAAEkD,EAAEY,EAAErR,OAAOqR,EAAC,GAAE,GAAI7e,EAAEyN,aAAa,EAAER,QAAQS,KAAKxP,SAASuC,EAAEwM,QAAQS,KAAK,GAAGC,QAAQ,MAAM,MAAMV,QAAQS,KAAKE,MAAM,GAAGlN,EAAE,CAAC2b,EAAEtB,KAAK,MAAM9N,QAAQY,SAASwO,EAAEtB,GAAG/a,EAAE8N,QAAQ,IAAI,6BAAmC,IAAIgO,EAAE4G,IAAI,CAAC,MAAMrG,GAAG,MAAM7W,QAAQqJ,MAAM,2GAA2GwN,CAAC,CAACyd,OAAOC,OAAOje,EAAEie,MAAM,MAAMp5B,GAAGC,KAAKA,EAAEI,EAAE+M,KAAKnL,SAASoL,YAAYxO,SAAS,KAAKA,SAASoK,gBAAgB5I,EAAExB,SAASoK,cAAcrH,YAAY/F,EAAE,KAAKA,IAAIwE,EAAExE,GAA0BwE,EAAF,IAArBA,EAAEjD,QAAQ,SAAeiD,EAAEiN,OAAO,EAAEjN,EAAE2M,QAAQ,SAAS,IAAIO,YAAY,KAAK,GAAK,GAAGrN,IAAIK,EAAE4a,IAAI,IAAIO,EAAE,IAAIlO,eAAe,OAAOkO,EAAEjO,KAAK,MAAM0N,GAAE,GAAIO,EAAEhO,KAAK,MAAMgO,EAAE/N,cAAc1N,IAAIoO,EAAE8M,IAAI,IAAIO,EAAE,IAAIlO,eAAe,OAAOkO,EAAEjO,KAAK,MAAM0N,GAAE,GAAIO,EAAE9N,aAAa,cAAc8N,EAAEhO,KAAK,MAAM,IAAInL,WAAWmZ,EAAE7N,SAAQ,GAAIjN,EAAE,CAACua,EAAEO,EAAEtB,KAAK,IAAIyD,EAAE,IAAIrQ,eAAeqQ,EAAEpQ,KAAK,MAAM0N,GAAE,GAAI0C,EAAEjQ,aAAa,cAAciQ,EAAEhc,OAAO,KAAe,KAAVgc,EAAE/P,QAAuB,GAAV+P,EAAE/P,QAAW+P,EAAEhQ,SAAS6N,EAAEmC,EAAEhQ,UAAUuM,GAAE,EAAGyD,EAAE9P,QAAQqM,EAAEyD,EAAEnQ,KAAK,KAAI,IAAKxN,UAAU6b,YAAY,MAAMod,OAAOpd,YAAYiG,KAAKjG,aAAa,IAAIvN,EAAE3J,QAAQmJ,IAAIC,KAAKpJ,SAAS4J,EAAG5J,QAAQqJ,MAAMD,KAAKpJ,SAAS3E,IAAIsO,EAAE,IAAI2M,IAAI7M,EAAE+qB,UAAU,EAAEle,EAAEld,KAAK,KAAK,MACnvEwQ,EAAG,IAAI0M,IAAI7M,EAAE+qB,UAAU,EAAEle,EAAEld,KAAK,KAAK,OACpC,IAAIyQ,EAAEF,EAAEG,EAAEF,EAAGtT,OAAOgR,OAAO9M,EAAEQ,GAAGA,EAAE,KAAyB,iBAAbsO,aAAuBmrB,EAAG,mCAAmC,IAAIlqB,EAAEC,EAAQE,EAAGC,EAAGC,EAAGrB,EAAGwB,EAAGlD,EAAGiD,EAAxBL,GAAG,EAAwB,SAASQ,IAAK,IAAIqL,EAAE/L,EAAEvC,OAAOxN,EAAEuP,MAAMY,EAAG,IAAIhN,UAAU2Y,GAAG9b,EAAEwP,OAAO,IAAInM,WAAWyY,GAAG9b,EAAEyP,OAAOW,EAAG,IAAIlN,WAAW4Y,GAAG9b,EAAE0P,QAAQ,IAAItM,YAAY0Y,GAAG9b,EAAE2P,OAAOZ,EAAG,IAAIzL,WAAWwY,GAAG9b,EAAE4P,QAAQW,EAAG,IAAI/M,YAAYsY,GAAG9b,EAAE6P,QAAQxC,EAAG,IAAI1L,aAAama,GAAG9b,EAAE8P,QAAQQ,EAAG,IAAI/M,aAAauY,EAAE,CAAC,IAAInL,EAAE,SAAS,GAAG7P,EAAEiP,EAAE/P,EAAEk6B,gBAAgB,GAAGl6B,EAAEk6B,WAAWnqB,EAAE/P,EAAEk6B,gBAAgB,MAAGnqB,EAAE,IAAIjB,YAAYqrB,OAAO,CAACC,QAAQzpB,EAAE,MAAM0pB,QAAQ,MAAMC,QAAO,KAAS9sB,kBAAkBlH,mBAAmB,MAAMgJ,EAAE,+NAA+NzO,GAAGyO,EAAE,6GAA6GxR,MAAM,cAAc2S,IAAKE,EAAEZ,EAAEvC,OAAOjH,WAAW,IAAI4K,EAAG,GAAGP,EAAG,GAAGkN,EAAG,GAAGzM,EAAG,EAAEC,EAAG,KAAK6D,EAAG,KAAK,SAASE,IAAK,GAAY,KAAThE,IAAkB,OAALC,IAAYqM,cAAcrM,GAAIA,EAAG,MAAM6D,GAAI,CAAC,IAAI2G,EAAE3G,EAAGA,EAAG,KAAK2G,GAAG,CAAC,CAAC,SAASme,EAAGne,GAAG,MAAyBxM,EAAnBwM,EAAE,WAAWA,EAAE,KAAS7L,GAAG,EAAGC,EAAG,EAAE4L,EAAE,IAAIhN,YAAYuB,aAAayL,EAAE,4CAA4Cvb,EAAEub,GAAGA,CAAC,CAAC,IAA8FjG,EAA1F0kB,EAAGze,GAAGA,EAAEtL,WAAW,yCAAyCmF,EAAGmG,GAAGA,EAAEtL,WAAW,WAAkE,SAASe,EAAGuK,GAAG,GAAG9M,EAAE,OAAOA,EAAE8M,GAAG,KAAK,iDAAiD,CAAiU,SAAS3F,GAAG2F,EAAEO,EAAEtB,GAAG,OAAnV,SAAYe,GAAG,GAAGnb,GAAGC,EAAE,CAAC,GAAiB,mBAAPiQ,QAAoB8E,EAAGmG,GAAG,OAAOjL,MAAMiL,EAAE,CAAChL,YAAY,gBAAgBC,MAAKsL,IAAI,IAAIA,EAAErL,GAAG,KAAK,uCAAuC8K,EAAE,IAAI,OAAOO,EAAEpL,aAAY,IAAIC,OAAM,IAAIK,EAAGuK,KAAI,GAAGva,EAAE,OAAO,IAAIa,SAAQ,CAACia,EAAEtB,KAAKxZ,EAAEua,GAAE0C,GAAGnC,EAAE,IAAInZ,WAAWsb,KAAIzD,EAAC,GAAG,CAAC,OAAO3Y,QAAQuJ,UAAUoF,MAAK,IAAIQ,EAAGuK,IAAG,CAA2B7F,CAAG6F,GAAG/K,MAAKyN,GAAG1P,YAAYsC,YAAYoN,EAAEnC,KAAItL,MAAKyN,GAAGA,IAAGzN,KAAKgK,GAAEyD,IAAIlP,EAAE,0CAA0CkP,KAAKyb,EAAGzb,EAAC,GAAG,CAA9jB+b,EAAjC1kB,EAAG,iCAAuCA,EAAG5U,EAAE4U,IAA64B,IAAIQ,GAAGC,GAAG,CAAC,OAAO,CAACwF,EAAEO,EAAEtB,EAAEyD,KAAK,UAAUxe,EAAE,MAAMA,EAAEkd,GAAG,OAAO,EAAE,IAAGpB,EAAEzE,GAAGyE,IAAI,IAAKtL,WAAW,QAAQsL,EAAEA,EAAEtK,UAAU,MAAIsK,EAAE9b,EAAEkd,GAAGpgB,IAAIgf,IAAM,OAAO,EAAE,GAAiB0C,KAAK,GAAnBnC,KAAK,IAAEtB,KAAK,GAAae,EAAEvV,WAAW,OAAO,EAAE,IAAI,OAAOtJ,IAAIU,IAAIme,EAAErK,SAAS4K,EAAEA,EAAEtB,GAAGyD,IAAI,GAAG,CAAC,CAAC,MAAM,OAAO,CAAC,GAAG,OAAO1C,GAAG9b,EAAE84B,GAAGhd,GAAG,OAAOA,GAAG9b,EAAE+4B,GAAGjd,GAAG,OAAO,CAACA,EAAEO,EAAEtB,KAAK/a,EAAEg5B,GAAGld,EAAEO,EAAEtB,GAAE,EAAE,EAAG,OAAO,CAACe,EAAEO,EAAEtB,KAAK/a,EAAEg5B,GAAGld,EAAEO,EAAEtB,EAAC,EAAG,OAAOe,IAAI9b,EAAE6L,GAAG,MAAMiQ,OAAE,EAAM,EAAG,OAAOA,IAAI9b,EAAE6L,GAAG,MAAMiQ,OAAE,EAAM,EAAG,OAAOA,IAAI9b,EAAE6L,GAAG,QAAQiQ,OAAE,EAAM,EAAG,OAAOA,IAAI9b,EAAE6L,GAAG,OAAOiQ,OAAE,EAAM,EAAG,OAAOA,IAAI9b,EAAE6L,GAAG,aAAaiQ,OAAE,EAAM,EAAG,OAAOA,IAAI9b,EAAE6L,GAAG,OAAOiQ,OAAE,EAAM,EAAG,OAAOA,IAAI9b,EAAE6L,GAAG,MAAMiQ,OAAE,EAAM,EAAG,OAAOA,IAAI9b,EAAE6L,GAAG,MAAMiQ,OAAE,EAAM,EAAG,OAAOA,IAAI9b,EAAE6L,GAAG,UAAUiQ,OAAE,EAAM,EAAG,OAAOA,IAAI9b,EAAE6L,GAAG,MAAMiQ,OAAE,EAAM,EAAG,OAAOA,IAAI9b,EAAE6L,GAAG,MAAMiQ,OAAE,EAAM,EAAG,OAAOA,IAAI9b,EAAE6L,GAAG,MAAMiQ,OAAE,EAAM,EAAG,OAAOA,IAAI9b,EAAE6L,GAAG,MAAMiQ,OAAE,EAAM,EAAG,OAAOA,IAAI9b,EAAE6L,GAAG,OAAOiQ,OAAE,EAAM,EAAG,OAAOA,IAAI9b,EAAE6L,GAAG,OAAOiQ,OAAE,EAAM,EAAG,OAAOA,IAAI9b,EAAE6L,GAAG,OAAOiQ,OAAE,EAAM,EAAG,OAAOA,IAAI9b,EAAE6L,GAAG,OAAOiQ,OAAE,EAAM,EAAG,OAAOA,IAAI9b,EAAE6L,GAAG,OAAOiQ,OAAE,EAAM,EAAG,OAAOA,IAAI9b,EAAE6L,GAAG,QAAQiQ,OAAE,EAAM,EAAG,OAAOA,IAAI9b,EAAE6L,GAAG,QAAQiQ,OAAE,EAAM,EAAG,OAAOA,IAAI9b,EAAE6L,GAAG,QAAQiQ,OAAE,EAAM,EAAG,OAAOA,IAAI9b,EAAE6L,GAAG,OAAOiQ,OAAE,EAAM,EAAG,OAAOA,IAAI9b,EAAE6L,GAAG,MAAMiQ,OAAE,EAAM,EAAG,OAAO,CAACA,EAAEO,EAAEtB,KAAK/a,EAAE6L,GAAG,OAAOiQ,EAAE,CAACpK,IAAI2K,EAAE1K,IAAIoJ,GAAE,EAAG,OAAOe,IAAI9b,EAAE6L,GAAG,OAAOiQ,OAAE,EAAM,EAAG,OAAO,CAACA,EAAEO,KAAKrc,EAAE6L,GAAG,MAAMiQ,EAAE,CAAClK,MAAMyK,GAAE,EAAG,OAAOP,IAAI9b,EAAE6L,GAAG,OAAOiQ,OAAE,EAAM,EAAG,OAAO,CAACA,EAAEO,KAAKrc,EAAE6L,GAAG,YAAYiQ,EAAE,CAAClK,MAAMyK,GAAE,EAAG,OAAO,CAACP,EAAEO,KAAKrc,EAAE6L,GAAG,kBAAkBiQ,EAAE,CAAClK,MAAMyK,GAAE,EAAG,OAAO,CAACP,EAAEO,KAAKrc,EAAE6L,GAAG,OAAOiQ,EAAE,CAACjK,GAAGwK,GAAE,EAAG,OAAOP,IAAI9b,EAAE6L,GAAG,MAAMiQ,OAAE,EAAM,EAAG,OAAOA,IAAI9b,EAAE6L,GAAG,MAAMiQ,OAAE,EAAM,EAAG,OAAOA,IAAI9b,EAAE6L,GAAG,MAAMiQ,OAAE,EAAM,EAAG,OAAOA,IAAI9b,EAAE6L,GAAG,MAAMiQ,OAAE,EAAM,EAAG,OAAOA,IAAI9b,EAAE6L,GAAG,MAAMiQ,OAAE,EAAM,EAAG,OAAOA,IAAI9b,EAAE6L,GAAG,QAAQiQ,OAAE,EAAM,EAAG,OAAOA,IAAI9b,EAAE6L,GAAG,UAAUiQ,OAAE,EAAM,EAAG,OAAOA,IAAI9b,EAAE6L,GAAG,iBAAiBiQ,OAAE,EAAM,EAAG,OAAOA,IAAI9b,EAAE6L,GAAG,OAAOiQ,OAAE,EAAM,EAAG,OAAOA,IAAI9b,EAAE6L,GAAG,cAAciQ,OAAE,EAAM,EAAG,OAAO,CAACA,EAAEO,EAAEtB,EAAEyD,EAAEP,KAAKje,EAAE6L,GAAG,aAAaiQ,EAAE,CAAChK,WAAWuK,EAAEtK,oBAAoBgJ,EAAE/I,KAAKwM,EAAEha,MAAMd,KAAKxG,IAAIuU,SAAS+M,IAAI,EAAEP,IAAI,IAAI,IAAG,EAAG,OAAO,CAACnC,EAAEO,EAAEtB,EAAEyD,EAAEP,KAAKje,EAAE6L,GAAG,YAAYiQ,EAAE,CAAChK,WAAWuK,EAAEtK,oBAAoBgJ,EAAE/I,KAAKwM,EAAEha,MAAMd,KAAKxG,IAAIuU,SAAS+M,IAAI,EAAEP,IAAI,IAAI,IAAG,EAAG,OAAO,CAACnC,EAAEO,EAAEtB,EAAEyD,EAAEP,KAAKje,EAAE6L,GAAG,YAAYiQ,EAAE,CAAChK,WAAWuK,EAAEtK,oBAAoBgJ,EAAE/I,KAAKwM,EAAEha,MAAMd,KAAKxG,IAAIuU,SAAS+M,IAAI,EAAEP,IAAI,IAAI,IAAG,EAAG,OAAO,CAACnC,EAAEO,EAAEtB,EAAEyD,EAAEP,KAAKje,EAAE6L,GAAG,aAAaiQ,EAAE,CAAChK,WAAWuK,EAAEtK,oBAAoBgJ,EAAE/I,KAAKwM,EAAEha,MAAMd,KAAKxG,IAAIuU,SAAS+M,IAAI,EAAEP,IAAI,IAAI,IAAG,EAAG,OAAO,CAACnC,EAAEO,EAAEtB,EAAEyD,EAAEP,KAAKje,EAAE6L,GAAG,YAAYiQ,EAAE,CAAChK,WAAWuK,EAAEtK,oBAAoBgJ,EAAE/I,KAAKwM,EAAEha,MAAMd,KAAKxG,IAAIuU,SAAS+M,IAAI,EAAEP,IAAI,IAAI,IAAG,EAAG,OAAO,CAACnC,EAAEO,EAAEtB,EAAEyD,EAAEP,KAAKje,EAAE6L,GAAG,WAAWiQ,EAAE,CAAChK,WAAWuK,EAAEtK,oBAAoBgJ,EAAE/I,KAAKwM,EAAEha,MAAMd,KAAKxG,IAAIuU,SAAS+M,IAAI,EAAEP,IAAI,IAAI,IAAG,EAAG,OAAO,CAACnC,EAAEO,EAAEtB,EAAEyD,EAAEP,KAAKje,EAAE6L,GAAG,WAAWiQ,EAAE,CAAChK,WAAWuK,EAAEtK,oBAAoBgJ,EAAE/I,KAAKwM,EAAEha,MAAMd,KAAKxG,IAAIuU,SAAS+M,IAAI,EAAEP,IAAI,IAAI,IAAG,EAAG,OAAO,CAACnC,EAAEO,EAAEtB,EAAEyD,EAAEP,KAAKje,EAAE6L,GAAG,eAAeiQ,EAAE,CAAChK,WAAWuK,EAAEtK,oBAAoBgJ,EAAE/I,KAAKwM,EAAEha,MAAMd,KAAKxG,IAAIuU,SAAS+M,IAAI,EAAEP,IAAI,IAAI,IAAG,EAAG,OAAO,CAACnC,EAAEO,EAAEtB,EAAEyD,EAAEP,KAAKje,EAAE6L,GAAG,kBAAkBiQ,EAAE,CAAChK,WAAWuK,EAAEtK,oBAAoBgJ,EAAE/I,KAAKwM,EAAEha,MAAMd,KAAKxG,IAAIuU,SAAS+M,IAAI,EAAEP,IAAI,IAAI,IAAG,EAAG,OAAO,CAACnC,EAAEO,EAAEtB,EAAEyD,EAAEP,KAAKje,EAAE6L,GAAG,kBAAkBiQ,EAAE,CAAChK,WAAWuK,EAAEtK,oBAAoBgJ,EAAE/I,KAAKwM,EAAEha,MAAMd,KAAKxG,IAAIuU,SAAS+M,IAAI,EAAEP,IAAI,IAAI,IAAG,EAAG,OAAOnC,IAAI9b,EAAE6L,GAAG,QAAQiQ,OAAE,EAAM,EAAG,OAAO,CAACA,EAAEO,EAAEtB,KAAK/a,EAAE6L,GAAG,YAAYiQ,EAAE,CAAC7J,KAAKoK,EAAE7X,MAAMd,KAAKxG,IAAIuU,SAAS4K,IAAI,EAAEtB,IAAI,IAAI,IAAG,EAAG,OAAO,CAACe,EAAEO,EAAEtB,EAAEyD,EAAEP,EAAEpD,EAAEgE,EAAE+Z,EAAGQ,EAAGC,EAAGC,EAAGC,EAAGC,EAAGrb,EAAEub,KAAM15B,EAAE6L,GAAG,gBAAgBiQ,EAAE,CAAC5b,OAAOk5B,EAAG,OAAO,OAAOlnB,QAAQmK,EAAElK,UAAU,CAAC4I,GAAG3I,MAAMoM,EAAEnM,aAAa,CAAC4L,GAAG3L,KAAK,CAACuI,EAAEgE,GAAGtM,QAAQ,CAACqmB,GAAIpmB,SAAS,MAAM3V,IAAIw8B,IAAK,GAAG5mB,cAAc6mB,EAAG90B,MAAMd,KAAKxG,IAAIuU,SAAS6nB,IAAK,EAAEC,IAAK,IAAI,GAAG7mB,YAAY8mB,EAAGh1B,MAAMd,KAAKxG,IAAIuU,SAAS+nB,IAAK,EAAErb,IAAI,IAAI,GAAGxL,WAAW0E,GAAGqiB,IAAI,EAAG,OAAO,CAAC5d,EAAEO,EAAEtB,EAAEyD,EAAEP,EAAEpD,EAAEgE,EAAE+Z,EAAGQ,EAAGC,EAAGC,EAAGC,EAAGC,EAAGrb,KAAKne,EAAE6L,GAAG,gBAAgBiQ,EAAE,CAAC5b,OAAO04B,EAAG,OAAO,OAAO1mB,QAAQmK,EAAElK,UAAU3N,MAAMd,KAAKxG,IAAIuU,SAASsJ,IAAI,EAAU,GAAPA,IAAI,KAAO,IAAI3I,MAAMoM,EAAE5L,YAAYpO,MAAMd,KAAKxG,IAAIuU,SAASwM,IAAI,EAAU,GAAPA,IAAI,KAAO,IAAI3L,KAAK9N,MAAMd,KAAKxG,IAAIuU,SAASoJ,IAAI,EAAU,GAAPA,IAAI,KAAO,IAAItI,QAAQ/N,MAAMd,KAAKxG,IAAIuU,SAASoN,IAAI,EAAU,GAAPA,IAAI,KAAO,IAAIrM,SAAS,MAAM3V,IAAIu8B,IAAK,GAAG3mB,cAAc4mB,EAAG70B,MAAMd,KAAKxG,IAAIuU,SAAS4nB,IAAK,EAAEC,IAAK,IAAI,GAAG5mB,YAAY6mB,EAAG/0B,MAAMd,KAAKxG,IAAIuU,SAAS8nB,IAAK,EAAEC,IAAK,IAAI,GAAG7mB,WAAW0E,GAAG8G,IAAG,EAAG,OAAO,CAACrC,EAAEO,EAAEtB,EAAEyD,EAAEP,EAAEpD,EAAEgE,EAAE+Z,EAAGQ,EAAGC,EAAGC,EAAGC,EAAGC,EAAGrb,EAAEub,KAAM15B,EAAE6L,GAAG,gBAAgBiQ,EAAE,CAAC5b,OAAOk5B,EAAG,OAAO,OAAOlnB,QAAQmK,EAAElK,UAAU,CAAC4I,GAAG3I,MAAMoM,EAAEnM,aAAa,CAAC4L,GAAG3L,KAAK,CAACuI,EAAEgE,GAAGtM,QAAQ,CAACqmB,GAAIpmB,SAAS,MAAM3V,IAAIw8B,IAAK,GAAG5mB,cAAc6mB,EAAG90B,MAAMd,KAAKxG,IAAIuU,SAAS6nB,IAAK,EAAEC,IAAK,IAAI,GAAG7mB,YAAY8mB,EAAGh1B,MAAMd,KAAKxG,IAAIuU,SAAS+nB,IAAK,EAAErb,IAAI,IAAI,GAAGxL,WAAW0E,GAAGqiB,IAAI,EAAG,OAAO,CAAC5d,EAAEO,EAAEtB,EAAEyD,EAAEP,EAAEpD,EAAEgE,EAAE+Z,EAAGQ,EAAGC,EAAGC,EAAGC,EAAGC,EAAGrb,KAAKne,EAAE6L,GAAG,gBAAgBiQ,EAAE,CAAC5b,OAAO04B,EAAG,OAAO,OAAO1mB,QAAQmK,EAAElK,UAAU3N,MAAMd,KAAKxG,IAAIuU,SAASsJ,IAAI,EAAU,GAAPA,IAAI,KAAO,IAAI3I,MAAMoM,EAAE5L,YAAYpO,MAAMd,KAAKxG,IAAIuU,SAASwM,IAAI,EAAU,GAAPA,IAAI,KAAO,IAAI3L,KAAK9N,MAAMd,KAAKxG,IAAIuU,SAASoJ,IAAI,EAAU,GAAPA,IAAI,KAAO,IAAItI,QAAQ/N,MAAMd,KAAKxG,IAAIuU,SAASoN,IAAI,EAAU,GAAPA,IAAI,KAAO,IAAIrM,SAAS,MAAM3V,IAAIu8B,IAAK,GAAG3mB,cAAc4mB,EAAG70B,MAAMd,KAAKxG,IAAIuU,SAAS4nB,IAAK,EAAEC,IAAK,IAAI,GAAG5mB,YAAY6mB,EAAG/0B,MAAMd,KAAKxG,IAAIuU,SAAS8nB,IAAK,EAAEC,IAAK,IAAI,GAAG7mB,WAAW0E,GAAG8G,IAAG,EAAG,OAAO,CAACrC,EAAEO,KAAKrc,EAAE6L,GAAG,oBAAoBiQ,EAAE,CAAC5b,OAAOmc,EAAE,OAAO,QAAO,EAAG,OAAO,CAACP,EAAEO,EAAEtB,EAAEyD,EAAEP,EAAEpD,EAAEgE,EAAE+Z,EAAGQ,EAAGC,EAAGC,EAAGC,EAAGC,EAAGrb,EAAEub,EAAGc,KAAMx6B,EAAE6L,GAAG,cAAciQ,EAAE,CAAC5b,OAAOs6B,EAAG,OAAO,OAAO1nB,SAASuJ,EAAEtJ,UAAUgI,EAAE/H,kBAAkBwL,EAAEvL,cAAcgL,EAAE9L,UAAU,CAAC0I,EAAEgE,GAAGxM,aAAa,CAACumB,EAAGQ,GAAI9mB,KAAK,CAAC+mB,EAAGC,EAAGC,EAAGC,GAAIjnB,QAAQ,CAAC4L,EAAEub,IAAI,EAAG,OAAO,CAAC5d,EAAEO,KAAKrc,EAAE6L,GAAG,oBAAoBiQ,EAAE,CAAC5b,OAAOmc,EAAE,OAAO,QAAO,EAAG,OAAO,CAACP,EAAEO,EAAEtB,EAAEyD,EAAEP,EAAEpD,EAAEgE,EAAE+Z,EAAGQ,EAAGC,EAAGC,EAAGC,EAAGC,EAAGrb,EAAEub,EAAGc,KAAMx6B,EAAE6L,GAAG,cAAciQ,EAAE,CAAC5b,OAAOs6B,EAAG,OAAO,OAAO1nB,SAASuJ,EAAEtJ,UAAUgI,EAAE/H,kBAAkBwL,EAAEvL,cAAcgL,EAAE9L,UAAU,CAAC0I,EAAEgE,GAAGxM,aAAa,CAACumB,EAAGQ,GAAI9mB,KAAK,CAAC+mB,EAAGC,EAAGC,EAAGC,GAAIjnB,QAAQ,CAAC4L,EAAEub,IAAI,EAAG,OAAO,CAAC5d,EAAEO,KAAKrc,EAAE6L,GAAG,gBAAgBiQ,EAAE,CAAC5b,OAAOmc,EAAE,OAAO,QAAO,EAAG,OAAO,CAACP,EAAEO,EAAEtB,EAAEyD,EAAEP,EAAEpD,EAAEgE,EAAE+Z,EAAGQ,EAAGC,EAAGC,EAAGC,EAAGC,EAAGrb,EAAEub,EAAGc,KAAMx6B,EAAE6L,GAAG,UAAUiQ,EAAE,CAAC5b,OAAOs6B,EAAG,OAAO,OAAO1nB,SAASuJ,EAAEtJ,UAAUgI,EAAE/H,kBAAkBwL,EAAEvL,cAAcgL,EAAE9L,UAAU,CAAC0I,EAAEgE,GAAGxM,aAAa,CAACumB,EAAGQ,GAAI9mB,KAAK,CAAC+mB,EAAGC,EAAGC,EAAGC,GAAIjnB,QAAQ,CAAC4L,EAAEub,IAAI,EAAG,OAAO,CAAC5d,EAAEO,KAAKrc,EAAE6L,GAAG,gBAAgBiQ,EAAE,CAAC5b,OAAOmc,EAAE,OAAO,QAAO,EAAG,OAAO,CAACP,EAAEO,EAAEtB,EAAEyD,EAAEP,EAAEpD,EAAEgE,EAAE+Z,EAAGQ,EAAGC,EAAGC,EAAGC,EAAGC,EAAGrb,EAAEub,EAAGc,KAAMx6B,EAAE6L,GAAG,UAAUiQ,EAAE,CAAC5b,OAAOs6B,EAAG,OAAO,OAAO1nB,SAASuJ,EAAEtJ,UAAUgI,EAAE/H,kBAAkBwL,EAAEvL,cAAcgL,EAAE9L,UAAU,CAAC0I,EAAEgE,GAAGxM,aAAa,CAACumB,EAAGQ,GAAI9mB,KAAK,CAAC+mB,EAAGC,EAAGC,EAAGC,GAAIjnB,QAAQ,CAAC4L,EAAEub,IAAI,EAAG,OAAO,CAAC5d,EAAEO,EAAEtB,EAAEyD,EAAEP,KAAKje,EAAE6L,GAAG,OAAOiQ,EAAE,CAAClK,MAAMyK,EAAEnJ,KAAK6H,EAAE5H,OAAOqL,EAAEpL,OAAO6K,GAAE,EAAG,OAAOnC,IAAI9b,EAAE6L,GAAG,SAASiQ,OAAE,EAAM,EAAG,OAAO,CAACA,EAAEO,EAAEtB,EAAEyD,KAAKxe,EAAE6L,GAAG,SAASiQ,EAAE,CAAChK,WAAWuK,EAAEhJ,kBAAkB0H,EAAEzH,KAAKkL,GAAE,EAAG,OAAO,CAAC1C,EAAEO,EAAEtB,EAAEyD,KAAKxe,EAAE6L,GAAG,SAASiQ,EAAE,CAAChK,WAAWuK,EAAEhJ,kBAAkB0H,EAAEzH,KAAKkL,GAAE,EAAG,OAAO,CAAC1C,EAAEO,KAAKrc,EAAE6L,GAAG,UAAUiQ,EAAE,CAACxI,KAAK+I,GAAE,EAAG,OAAO,CAACP,EAAEO,KAAKrc,EAAE6L,GAAG,SAASiQ,EAAE,CAACxI,KAAK+I,GAAE,EAAG,OAAO,CAACP,EAAEO,EAAEtB,EAAEyD,EAAEP,KAAKje,EAAE6L,GAAG,QAAQiQ,EAAE,CAACxI,KAAK+I,EAAE9I,WAAWwH,EAAEvH,WAAWgL,EAAEha,MAAMd,KAAKxG,IAAIuU,SAAS+M,IAAI,EAAEP,IAAI,IAAI,IAAG,EAAG,OAAOnC,IAAI9b,EAAE6L,GAAG,SAASiQ,OAAE,EAAM,EAAG,OAAO,CAACA,EAAEO,KAAKrc,EAAE6L,GAAG,SAASiQ,EAAE,CAACxI,KAAKzP,OAAOwY,IAAG,EAAG,OAAO,CAACP,EAAEO,KAAKrc,EAAE6L,GAAG,iBAAiBiQ,EAAE,CAACxI,KAAKzP,OAAOwY,IAAG,EAAG,OAAO,CAACP,EAAEO,EAAEtB,EAAEyD,EAAEP,EAAEpD,EAAEgE,EAAE+Z,EAAGQ,EAAGC,EAAGC,KAAMt5B,EAAE6L,GAAG,SAASiQ,EAAE,CAACrI,UAAU4I,EAAErK,KAAK+I,EAAEvW,MAAMd,KAAKxG,IAAIuU,SAASsJ,IAAI,EAAEyD,IAAI,IAAI,GAAG9K,wBAAwB2D,GAAG4G,GAAGtK,YAAYkH,EAAEjH,eAAeiL,EAAEhL,mBAAmB+kB,EAAG9kB,sBAAsBuD,GAAG+hB,GAAIrlB,KAAKsD,GAAGgiB,GAAIrlB,YAAYqD,GAAGiiB,IAAI,EAAG,OAAO,CAACxd,EAAEO,EAAEtB,EAAEyD,EAAEP,EAAEpD,EAAEgE,KAAK7e,EAAE6L,GAAG,QAAQiQ,EAAE,CAAC7H,OAAOoI,EAAE7X,MAAMd,KAAKxG,IAAIuU,SAAS4K,IAAI,EAAEtB,IAAI,IAAI,GAAG7G,KAAKsK,EAAEha,MAAMd,KAAKxG,IAAIuU,SAAS+M,IAAI,EAAEP,IAAI,IAAI,GAAGjM,KAAK6I,EAAErW,MAAMd,KAAKxG,IAAIuU,SAASoJ,IAAI,EAAEgE,IAAI,IAAI,IAAG,EAAG,OAAO/C,IAAI9b,EAAE6L,GAAG,OAAOiQ,OAAE,EAAM,EAAG,OAAO,CAACA,EAAEO,EAAEtB,KAAK/a,EAAE6L,GAAG,qBAAqBiQ,EAAE,CAACxI,KAAKzP,OAAOwY,GAAGlI,QAAQtQ,OAAOkX,IAAG,EAAG,OAAO,CAACe,EAAEO,EAAEtB,KAAK/a,EAAE6L,GAAG,wBAAwBiQ,EAAE,CAAC3H,QAAQkI,EAAEnc,OAAO6a,EAAE,OAAO,QAAO,EAAG,OAAO,CAACe,EAAEO,EAAEtB,KAAK/a,EAAE6L,GAAG,wBAAwBiQ,EAAE,CAAC3H,QAAQkI,EAAEnc,OAAO6a,EAAE,OAAO,QAAO,EAAG,OAAOe,IAAI9b,EAAE6L,GAAG,QAAQiQ,OAAE,EAAM,EAAG,OAAO,CAACA,EAAEO,KAAKrc,EAAE6L,GAAG,SAASiQ,EAAE,CAAC1H,SAASiD,GAAGgF,IAAG,EAAG,OAAO,CAACP,EAAEO,EAAEtB,EAAEyD,EAAEP,KAAKje,EAAE6L,GAAG,MAAMiQ,EAAE,CAAC/H,KAAKsI,EAAEhf,MAAM0d,EAAEzI,KAAKkM,EAAEha,MAAMd,KAAKxG,IAAIuU,SAAS+M,IAAI,EAAEP,IAAI,IAAI,IAAG,EAAG,OAAO,CAACnC,EAAEO,EAAEtB,EAAEyD,EAAEP,EAAEpD,KAAK7a,EAAE6L,GAAG,qBAAqBiQ,EAAE,CAAC3H,QAAQkI,EAAEhI,SAAS0G,EAAEzG,UAAU2J,EAAE1J,eAAeiK,EAAEte,OAAO2a,EAAE,OAAO,QAAO,EAAG,OAAO,CAACiB,EAAEO,EAAEtB,EAAEyD,EAAEP,EAAEpD,KAAK7a,EAAE6L,GAAG,qBAAqBiQ,EAAE,CAAC3H,QAAQkI,EAAEhI,SAAS0G,EAAEzG,UAAU2J,EAAE1J,eAAeiK,EAAEte,OAAO2a,EAAE,OAAO,QAAO,EAAG,OAAO,CAACiB,EAAEO,EAAEtB,KAAK/a,EAAE6L,GAAG,SAASiQ,EAAE,CAACtH,UAAU3Q,OAAOwY,GAAG5H,QAAQ5Q,OAAOkX,IAAG,EAAG,OAAO,CAACe,EAAEO,EAAEtB,EAAEyD,EAAEP,EAAEpD,EAAEgE,EAAE+Z,EAAGQ,KAAMp5B,EAAE6L,GAAG,YAAYiQ,EAAE,CAACpH,SAAS2H,EAAE1H,iBAAiBoG,EAAEnG,gBAAgB4J,EAAE3J,MAAMoJ,EAAEnJ,SAAS+F,EAAE9F,eAAe8J,EAAEra,MAAMd,KAAKxG,IAAIuU,SAAS5N,OAAO+0B,KAAM,EAAE/0B,OAAO+0B,GAAI/Z,IAAI,IAAI,GAAG7J,yBAAyBokB,GAAG,EAAG,OAAOtd,IAAI9b,EAAE6L,GAAG,OAAOiQ,OAAE,EAAM,EAAG,OAAO,CAACA,EAAEO,EAAEtB,EAAEyD,EAAEP,EAAEpD,KAAK7a,EAAE6L,GAAG,qBAAqBiQ,EAAE,CAACpH,SAAS2H,EAAE1H,iBAAiBoG,EAAEnG,gBAAgB4J,EAAE3J,MAAMoJ,EAAEnJ,SAAS+F,GAAE,EAAG,OAAOiB,IAAI9b,EAAE6L,GAAG,UAAUiQ,OAAE,EAAM,EAAG,OAAOA,IAAI9b,EAAE6L,GAAG,gBAAgBiQ,OAAE,EAAM,EAAG,OAAO,CAACA,EAAEO,KAAKrc,EAAE6L,GAAG,yBAAyBiQ,EAAE,CAAC3H,QAAQkI,GAAE,EAAG,OAAO,CAACP,EAAEO,EAAEtB,EAAEyD,EAAEP,EAAEpD,EAAEgE,EAAE+Z,EAAGQ,EAAGC,EAAGC,EAAGC,EAAGC,KAAMx5B,EAAE6L,GAAG,OAAOiQ,EAAE,CAAC5b,OAAOk5B,EAAG,OAAO,OAAOtmB,SAASuJ,EAAElK,UAAU,CAAC4I,GAAG3I,MAAMoM,EAAEnM,aAAa,CAAC4L,GAAG3L,KAAKuI,EAAErW,MAAMd,KAAKxG,IAAIuU,SAASoJ,IAAI,EAAEgE,IAAI,IAAI,GAAGtM,QAAQ,CAACqmB,GAAI3jB,WAAW,MAAMpY,IAAIw8B,IAAK,GAAG1mB,WAAW0E,GAAGiiB,GAAIpkB,kBAAkBqkB,EAAG/0B,MAAMd,KAAKlF,IAAIiT,SAAS8nB,IAAK,EAAEC,IAAK,IAAI,IAAG,EAAG,OAAO,CAAC1d,EAAEO,EAAEtB,EAAEyD,EAAEP,EAAEpD,EAAEgE,EAAE+Z,EAAGQ,EAAGC,EAAGC,EAAGC,EAAGC,EAAGrb,EAAEub,EAAGc,KAAMx6B,EAAE6L,GAAG,OAAOiQ,EAAE,CAAC5b,OAAOq5B,EAAG,OAAO,OAAOzmB,SAASuJ,EAAElK,UAAU,CAAC4I,EAAEyD,GAAGpM,MAAM6L,EAAE5L,aAAa,CAACwI,EAAEgE,GAAGvM,KAAKsmB,EAAGp0B,MAAMd,KAAKxG,IAAIuU,SAASmnB,IAAK,EAAEQ,IAAK,IAAI,GAAG7mB,QAAQ,CAAC8mB,EAAGC,GAAIrkB,WAAW,MAAMpY,IAAI28B,IAAK,GAAG7mB,WAAW0E,GAAG8G,GAAGjJ,kBAAkBwkB,EAAGl1B,MAAMd,KAAKlF,IAAIiT,SAASioB,IAAK,EAAEc,IAAK,IAAI,IAAG,EAAG,OAAO1e,IAAI9b,EAAEk5B,GAAGpd,EAAC,EAAG,OAAO,CAACA,EAAEO,IAAIrc,EAAEm5B,GAAGrd,EAAEO,EAAErc,EAAE6Y,GAAG+gB,GAAG55B,EAAE6Y,GAAG9M,SAAS,SAASwK,GAAGuF,GAAG7X,KAAKxF,KAAK,aAAawF,KAAKmR,QAAQ,gCAAgC0G,KAAK7X,KAAKwK,OAAOqN,CAAC,CAAC,IAAIrF,GAAGqF,IAAIA,EAAE2e,YAAY3e,EAAE4e,UAAU,MAAK,EAAGhkB,GAAGoF,IAAkB,GAAdvC,GAAGhB,GAAGra,SAAYob,KAAKC,GAAGohB,GAAGphB,GAAGhB,GAAG,KAAK,IAAI8D,EAAE9C,GAAGhB,GAAGwE,MAAM,IAAIV,EAAE,OAAO,EAAE9C,GAAGR,GAAG5a,KAAKke,GAAG9C,GAAG1a,GAAGid,EAAEtD,IAAI6D,EAAEA,EAAE7D,GAAGsD,EAAEtD,GAAG,IAAIuC,EAAE,CAAC6f,IAAI,MAAMC,cAAc/e,EAAEgf,GAAGC,IAAIjf,EAAEkf,GAAGC,YAAYnf,EAAEtD,IAAI,OAAO3X,GAAGwb,EAAE6e,QAAQ7e,EAAE8e,YAAYpgB,EAAEe,EAAEsf,IAAI,GAAGzkB,GAAG,EAAEC,UAAUhB,YAAY,IAAI,IAAIA,YAAY,aAAQ,EAAOF,GAAG,CAACoG,EAAEO,EAAEtB,KAAY,IAAIyD,GAAXnC,KAAK,GAAUtB,EAAE,IAAIA,EAAEsB,EAAEP,EAAEf,MAAMA,GAAGyD,MAAMzD,EAAE,GAAG,GAAGA,EAAEsB,GAAGP,EAAEtO,QAAQoJ,GAAG,OAAOA,GAAGd,OAAOgG,EAAEtO,kBAAkBlH,kBAAkBwV,EAAElO,MAAMyO,EAAEtB,GAAGe,EAAErK,SAAS4K,EAAEtB,IAAI,IAAIyD,EAAE,GAAGnC,EAAEtB,GAAG,CAAC,IAAIkD,EAAEnC,EAAEO,KAAK,GAAK,IAAF4B,EAAM,CAAC,IAAIpD,EAAS,GAAPiB,EAAEO,KAAQ,GAAY,MAAN,IAAF4B,GAAYO,GAAGzI,OAAOC,cAAgB,GAAFiI,IAAO,EAAEpD,OAAO,CAAC,IAAIgE,EAAS,GAAP/C,EAAEO,KAAwE,OAAhE4B,EAAW,MAAN,IAAFA,IAAe,GAAFA,IAAO,GAAGpD,GAAG,EAAEgE,GAAK,EAAFZ,IAAM,GAAGpD,GAAG,GAAGgE,GAAG,EAAS,GAAP/C,EAAEO,MAAgBmC,GAAGzI,OAAOC,aAAaiI,IAAIA,GAAG,MAAMO,GAAGzI,OAAOC,aAAa,MAAMiI,GAAG,GAAG,MAAQ,KAAFA,GAAQ,CAAC,MAAMO,GAAGzI,OAAOC,aAAaiI,EAAE,CAAC,OAAOO,GAAGnH,GAAG,CAACyE,EAAEO,KAAKP,KAAK,GAAGpG,GAAGzY,IAAI6e,EAAEO,GAAG,GAAG/E,GAAGwE,IAAI,IAAIO,EAAEgf,KAAK,OAAOvf,EAAEA,IAAIwf,GAAGjf,GAAGP,GAAG,SAASvE,GAAGuE,EAAEO,GAAG,IAAItB,EAAE+B,UAAU5e,OAAO,EAAEsgB,EAAE1B,UAAU,OAAOxF,IAAG,KAAK,IAAI,IAAI2G,EAAEsd,GAAG,EAAExgB,GAAGF,EAAEoD,IAAI,EAAEY,EAAE,EAAEA,EAAE9D,EAAE8D,IAAI,CAAC,IAAI+Z,EAAGpa,EAAE,EAAEK,GAAG1e,IAAI0a,EAAEgE,IAAI,GAAG+Z,CAAE,CAAC,OAAO9sB,GAAGgQ,EAAEf,EAAEkD,EAAE5B,EAAC,GAAG,CAAC,SAASjD,GAAG0C,GAAG,GAAGhb,EAAE,OAAOyW,GAAG,EAAE,EAAEuE,GAAG5L,EAAG4L,EAAE,EAAEnF,KAAK4C,GAAGiiB,KAAKx7B,EAAE0a,SAASoB,GAAG7L,GAAG,GAAIvP,EAAEob,EAAE,IAAIvF,GAAGuF,GAAG,CAAC,IAAItE,GAAGsE,IAAI,GAAG5L,EAAG4L,EAAEhb,EAAE,MAAM2Y,GAAGqC,GAAG,SAAS1C,GAAG0C,EAAC,EAAGzC,GAAGyC,IAAIA,aAAavF,IAAO,UAAHuF,GAAapb,EAAE,EAAEob,EAAC,EAAG,SAASqB,KAAK,IAAI,IAAIrB,EAAE9b,EAAEy7B,WAAW3f,KAAKxC,KAAKnI,EAAGuM,SAAQ,KAAKrM,IAA4G,SAAYyK,GAAGhb,EAAEgb,IAAI1Z,QAAQ6J,IAAIsN,GAAGhB,GAAG5Z,IAAI4a,GAAGohB,KAAK5pB,KAAK+K,EAAE,CAAjKvQ,EAAG,IAAI8J,KAAI,GAAG,CAAC,SAASiE,KAAK,IAAIwC,EAAE7a,EAAE,oCAAoC6a,EAAE,IAAIie,OAAOje,GAAGvC,GAAGhB,GAAGpa,KAAK2d,EAAE,CAA4D,IAAIvC,GAAG,CAAChB,GAAG,GAAGQ,GAAG,GAAG2iB,GAAG,GAAG78B,GAAG,CAAC,EAAE,EAAA88B,GAAK76B,GAAGyY,GAAGqiB,sBAAsBriB,GAAGsiB,GAAGtiB,GAAGuiB,cAAcviB,GAAGwiB,GAAGxiB,GAAGyiB,cAAcziB,GAAG0iB,IAAI9e,IAAI,EAAE8e,GAAGngB,GAAG5L,EAAG4L,EAAEogB,GAAG,CAAC,oBAAoBV,GAAG,KAAK,IAAI,IAAI1f,KAAKvC,GAAGR,GAAGtC,GAAGqF,GAAG,IAAIA,KAAKvC,GAAGhB,GAAG9B,GAAGqF,GAAGvC,GAAGhB,GAAG,GAAGgB,GAAGR,GAAG,GAAGQ,GAAG1a,GAAG,EAAC,EAAGs9B,GAAGrgB,IAAI,IAAIO,EAAEP,EAAEtD,UAAUe,GAAG1a,GAAGwd,GAAG9C,GAAGhB,GAAGpa,KAAK2d,GAAGvC,GAAGR,GAAG/a,OAAOub,GAAGR,GAAGhb,QAAQ+d,GAAG,GAAGA,EAAEtD,GAAG,EAAE4jB,GAAG/f,EAAC,EAAG,EAAAwf,GAAK,EAAE,EAAAE,GAAKxiB,GAAGmiB,GAAGjhB,SAAQqB,GAAGA,KAAI,EAAE6e,GAAG7e,GAAG,IAAI1Z,SAAQia,IAAIP,EAAE4e,UAAU7f,IAAa,IAAIgE,GAAbhE,EAAEA,EAAE9Z,MAAa65B,IAAI,GAAG/f,EAAEwhB,cAAcxhB,EAAEwhB,cAAcC,KAAK,CAAC,IAAI1D,EAAGrf,GAAG1a,GAAGgc,EAAEwhB,cAAczD,EAAGA,EAAGuC,YAAYtgB,EAAEA,EAAE0hB,cAAcjtB,EAAE,0CAA0CuP,wBAAwBhE,EAAEwhB,kDAAkD,KAAU,iBAAJxd,EAAmB+C,KAAS,gBAAJ/C,EAAkBnI,GAAGmE,GAAO,kBAAJgE,EAAoBtF,GAAG4iB,GAAG5iB,GAAG1a,GAAGgc,EAAE2hB,SAAa,eAAJ3d,GAAkBhE,EAAEA,EAAE2hB,OAAO3d,EAAEtF,GAAG1a,GAAGgc,UAAUtB,GAAG1a,GAAGgc,GAAGpE,GAAGoI,GAAGud,GAAGvhB,GAAGtB,GAAGR,GAAG/a,OAAOub,GAAGR,GAAGhb,QAAQ8gB,GAAG,GAAGA,EAAErG,GAAG,GAAO,iBAAJqG,EAAmBtF,GAAG1a,GAAGgc,EAAE2hB,QAAQrB,YAAY,CAACP,IAAI,WAAe,WAAJ/b,GAAc/C,EAAE2gB,QAAO,EAAG57B,IAAIib,EAAEtD,IAAIsD,EAAEof,QAAQ7e,EAAEP,IAAQ,UAAJ+C,EAAY6d,MAAM,UAAU7hB,EAAE8hB,aAAa9hB,EAAE+hB,QAAmB,iBAAX/hB,EAAEgiB,OAAwB/gB,EAAEqf,YAAYtgB,GAAO,gBAAJgE,EAAkB7e,EAAE6a,EAAE9U,YAAY8U,EAAEiiB,MAAMje,GAAGvP,EAAE,kCAAkCuP,IAAG,EAAG/C,EAAEpN,QAAQmM,IAAI,MAAMvL,EAAE,yBAAyBuL,EAAEkiB,YAAYliB,EAAEmiB,WAAWniB,EAAEzF,WAAWyF,GAAGha,IAAIib,EAAE0I,GAAG,WAAU3J,GAAGiB,EAAE4e,UAAU,CAAC35B,KAAK8Z,MAAKiB,EAAE0I,GAAG,SAAQ3J,GAAGiB,EAAEpN,QAAQmM,MAAK,IAAsBoD,EAAlBlD,EAAE,GAAkB,IAAIkD,IAAjB,CAAC,UAAuBje,EAAE1D,eAAe2hB,IAAIlD,EAAE5c,KAAK8f,GAAGnC,EAAEqf,YAAY,CAACP,IAAI,OAAOqC,SAASliB,EAAEmiB,UAAUl9B,EAAEm9B,qBAAqB3gC,EAAE09B,WAAWnqB,EAAEqtB,WAAWptB,GAAE,KAAKhQ,EAAEq9B,QAAQ9jB,GAAG,IAAIC,GAAGsC,IAAI,KAAK,EAAEA,EAAE5d,QAAQ4d,EAAEgG,OAAFhG,CAAU9b,EAAC,EAAkG,SAASyZ,GAAGqC,GAAG,GAAGhb,EAAE,OAAOyW,GAAG,EAAE,EAAEuE,GAAGtE,GAAGsE,EAAE,CAAwE,SAASpC,GAAGoC,GAAG7X,KAAKq5B,GAAGxhB,EAAE,GAAG7X,KAAKs5B,GAAG,SAASlhB,GAAGpe,IAAIgG,KAAKq5B,GAAG,IAAI,IAAI,GAAGjhB,CAAC,EAAEpY,KAAKu5B,GAAG,SAASnhB,GAAGpe,IAAIgG,KAAKq5B,GAAG,IAAI,IAAI,GAAGjhB,CAAC,EAAEpY,KAAK03B,GAAG,SAAStf,EAAEtB,GAAG9W,KAAKw5B,KAAKx5B,KAAKs5B,GAAGlhB,GAAGpY,KAAKu5B,GAAGziB,EAAE,EAAE9W,KAAKw5B,GAAG,WAAWx/B,IAAIgG,KAAKq5B,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC,CAAe,SAAS1jB,GAAGkC,EAAEO,EAAEtB,EAAEyD,GAAG,OAAO1d,EAAEyW,GAAG,EAAE,EAAEuE,EAAEO,EAAEtB,EAAEyD,GAAGkf,GAAG5hB,EAAEO,EAAEtB,EAAEyD,EAAE,CAAC,SAASkf,GAAG5hB,EAAEO,EAAEtB,EAAEyD,GAAG,GAAG1C,KAAK,EAAEO,KAAK,EAAEtB,KAAK,EAAEyD,KAAK,SAASlY,kBAAkB,IAAI,OAAOgJ,EAAE,uFAAuF,EAAE,IAAI2O,EAAE,GAAG,OAAOnd,GAAc,IAAXmd,EAAE/f,OAAW0b,GAAGkC,EAAEO,EAAEtB,EAAEyD,IAAI1C,EAAE,CAACgf,GAAG/f,EAAEvC,GAAGsD,EAAEkf,GAAGxc,EAAE4c,GAAGnd,GAAGnd,GAAGgb,EAAE6hB,GAAG,cAAcxC,YAAYrf,EAAEmC,GAAG,GAAGvH,GAAGoF,GAAG,CAAC,SAAS1B,GAAG0B,EAAEO,EAAEtB,GAAG,OAAOja,EAAEyW,GAAG,EAAE,EAAEuE,EAAEO,EAAEtB,GAAG,CAAC,CAAC,SAASlB,GAAGiC,EAAEO,GAAG,GAAGvb,EAAE,OAAOyW,GAAG,EAAE,EAAEuE,EAAEO,EAAE,CAAn3Brc,EAAE49B,oBAAoB,KAAK,IAAI9hB,EAAEwgB,KAAKjgB,EAAEpe,IAAI6d,EAAE,KAAK,IAAI,GAAGA,EAAE7d,IAAI6d,EAAE,KAAK,IAAI,GAAGrD,GAAG4D,EAAEA,EAAEP,GAAGwf,GAAGjf,EAAC,EAA8Crc,EAAE69B,iBAAiB,CAAC/hB,EAAEO,KAAKP,EAAE5R,GAAGsS,MAAM,KAAK,CAACV,EAAEO,IAAI,EAAE1F,GAAG4C,GAAG0iB,GAAGngB,GAAGgiB,GAAGhiB,EAAC,EAAsqB,IAAIlB,GAAGkB,IAAI,IAAI,IAAIO,EAAE,EAAEtB,EAAE,EAAEA,EAAEe,EAAE5d,SAAS6c,EAAE,CAAC,IAAIyD,EAAE1C,EAAE5F,WAAW6E,GAAG,KAAKyD,EAAEnC,IAAI,MAAMmC,EAAEnC,GAAG,EAAE,OAAOmC,GAAG,OAAOA,GAAGnC,GAAG,IAAItB,GAAGsB,GAAG,CAAC,CAAC,OAAOA,GAAG1B,GAAG,CAACmB,EAAEO,EAAEtB,EAAEyD,KAAK,KAAY,EAAEA,GAAG,OAAO,EAAE,IAAIP,EAA3BlD,KAAK,EAA0ByD,EAAEzD,EAAEyD,EAAE,EAAE,IAAI,IAAI3D,EAAE,EAAEA,EAAEiB,EAAE5d,SAAS2c,EAAE,CAAC,IAAIgE,EAAE/C,EAAE5F,WAAW2E,GAAkF,GAA5E,OAAOgE,GAAG,OAAOA,IAA4BA,EAAE,QAAU,KAAFA,IAAS,IAAO,KAA5C/C,EAAE5F,aAAa2E,IAAqC,KAAKgE,EAAE,CAAC,GAAG9D,GAAGyD,EAAE,MAAMnC,EAAEtB,MAAM,GAAG8D,CAAC,KAAK,CAAC,GAAG,MAAMA,EAAE,CAAC,GAAG9D,EAAE,GAAGyD,EAAE,MAAMnC,EAAEtB,MAAM,GAAG,IAAI8D,GAAG,CAAC,KAAK,CAAC,GAAG,OAAOA,EAAE,CAAC,GAAG9D,EAAE,GAAGyD,EAAE,MAAMnC,EAAEtB,MAAM,GAAG,IAAI8D,GAAG,EAAE,KAAK,CAAC,GAAG9D,EAAE,GAAGyD,EAAE,MAAMnC,EAAEtB,MAAM,GAAG,IAAI8D,GAAG,GAAGxC,EAAEtB,MAAM,GAAG,IAAI8D,GAAG,GAAG,EAAE,CAACxC,EAAEtB,MAAM,GAAG,IAAI8D,GAAG,EAAE,EAAE,CAACxC,EAAEtB,MAAM,GAAG,IAAM,GAAF8D,CAAI,CAAC,CAAC,OAAOxC,EAAEtB,IAAI,GAAG,EAAEA,EAAEkD,GAAG9D,GAAG,CAAC2B,EAAEO,EAAEtB,IAAIJ,GAAGmB,EAAE7e,IAAIof,EAAEtB,GAAG,SAASmB,GAAGJ,EAAEO,GAAG,GAAGvb,EAAE,OAAOyW,GAAG,EAAE,EAAEuE,EAAEO,EAAE,CAAC,SAAS7F,GAAGsF,EAAEO,EAAEtB,GAAG,GAAGja,EAAE,OAAOyW,GAAG,EAAE,EAAEuE,EAAEO,EAAEtB,EAAE,CAAC,SAASP,GAAGsB,EAAEO,EAAEtB,GAAG,OAAOja,EAAEyW,GAAG,EAAE,EAAEuE,EAAEO,EAAEtB,GAAG,CAAC,CAAC,SAASoB,GAAGL,EAAEO,GAAG,GAAGvb,EAAE,OAAOyW,GAAG,EAAE,EAAEuE,EAAEO,EAAE,CAAC,SAAS+E,GAAGtF,EAAEO,EAAEtB,GAAG,GAAGja,EAAE,OAAOyW,GAAG,EAAE,EAAEuE,EAAEO,EAAEtB,EAAE,CAAC,SAASsG,GAAGvF,EAAEO,EAAEtB,EAAEyD,GAAG,GAAG1d,EAAE,OAAOyW,GAAG,GAAG,EAAEuE,EAAEO,EAAEtB,EAAEyD,EAAE,CAAC,SAAS+C,GAAGzF,EAAEO,EAAEtB,EAAEyD,GAAG,GAAG1d,EAAE,OAAOyW,GAAG,GAAG,EAAEuE,EAAEO,EAAEtB,EAAEyD,EAAE,CAAC,SAASlE,GAAGwB,EAAEO,EAAEtB,EAAEyD,GAAG,GAAG1d,EAAE,OAAOyW,GAAG,GAAG,EAAEuE,EAAEO,EAAEtB,EAAEyD,EAAE,CAAC,SAASxB,GAAGlB,GAAG,GAAGhb,EAAE,OAAOyW,GAAG,GAAG,EAAEuE,EAAE,CAAC,SAAShC,GAAGgC,EAAEO,GAAG,GAAGvb,EAAE,OAAOyW,GAAG,GAAG,EAAEuE,EAAEO,EAAE,CAAC,SAAS9B,GAAGuB,EAAEO,EAAEtB,GAAG,GAAGja,EAAE,OAAOyW,GAAG,GAAG,EAAEuE,EAAEO,EAAEtB,EAAE,CAAC,IAAIyC,GAAG,KAAK,KAAK,EAAE7G,IAAI,IAAI7V,EAAEg9B,GAAG5tB,GAAIsH,GAAGtH,EAAG,CAAC,MAAM4L,GAAGzC,GAAGyC,EAAE,GAAG,SAASiF,GAAGjF,GAAGA,KAAK,EAAqB,mBAAZiiB,QAAQC,KAAiBD,QAAQC,GAAG9gC,IAAI4e,IAAI,EAAEA,GAAGze,MAAM0T,KAAK6Q,IAAI9F,GAAG,IAAIiiB,QAAQE,MAAM/gC,IAAI4e,IAAI,EAAE,GAAG,CAAC9b,EAAEk+B,kCAAkCnd,GAAG,IAAIa,GAAG,KAAK,IAAI9F,EAAEwgB,KAAK,GAAGxgB,IAAIiF,GAAGjF,IAAI7L,GAAI,IAAI0I,KAAK6E,IAAI,CAAC,MAAMnB,GAAGhD,GAAGgD,EAAE,GAAGrc,EAAEm+B,aAAavc,GAAG,IAAI7X,GAAE,GAAGC,GAAE8R,GAAGA,EAAE,GAAI,IAAIA,EAAE,KAAM,GAAGA,EAAE,KAAM,GAAGzR,GAAE,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAE,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,SAASC,GAAEuR,EAAEO,EAAEtB,EAAEyD,EAAEP,EAAEpD,EAAEgE,EAAE+Z,GAAI,OAAO93B,EAAEyW,GAAG,GAAG,EAAEuE,EAAEO,EAAEtB,EAAEyD,EAAEP,EAAEpD,EAAEgE,EAAE+Z,IAAK,EAAE,CAAC,SAASpuB,GAAEsR,EAAEO,EAAEtB,EAAEyD,EAAEP,EAAEpD,EAAEgE,GAAG,GAAG/d,EAAE,OAAOyW,GAAG,GAAG,EAAEuE,EAAEO,EAAEtB,EAAEyD,EAAEP,EAAEpD,EAAEgE,EAAE,CAAC,IAAskBxT,GAAlkBZ,GAAEqR,IAAI,IAAIO,EAAEzB,GAAGkB,GAAG,EAAEf,EAAEqjB,GAAG/hB,GAAG,OAAOtB,GAAGZ,GAAG2B,EAAEf,EAAEsB,GAAGtB,GAAGrQ,GAAG,GAAGQ,GAAE,CAAC4Q,EAAEO,KAAK3R,GAAGxM,OAAO,EAAE,IAAI,IAAI6c,EAAEA,EAAE9d,IAAI6e,MAAM,IAAI,CAAC,IAAI0C,EAAK,KAAHzD,EAAiBsB,IAAVmC,GAAM,KAAHzD,IAAasB,EAAE,EAAE,EAAE,EAAE3R,GAAGvM,KAAQ,KAAH4c,EAAO9c,IAAIoe,IAAI,IAAI,GAAM,KAAHtB,EAAO7d,IAAImf,IAAI,IAAI,GAAGlc,IAAIkc,IAAI,IAAI,IAAIA,GAAGmC,EAAE,EAAE,CAAC,CAAC,OAAO9T,IAAIS,GAAG,CAAC,EAAEC,GAAG,KAAK,IAAIC,GAAG,CAAC,IAAsNgR,EAAlNP,EAAE,CAACjF,KAAK,WAAWC,QAAQ,WAAWC,KAAK,IAAIC,IAAI,IAAIC,KAAK,iBAAiBC,MAAwB,iBAAXC,WAAqBA,UAAUC,WAAWD,UAAUC,UAAU,IAAI,KAAKzJ,QAAQ,IAAI,KAAK,SAAS/M,EAAEH,GAAG,kBAAoB,IAAI4b,KAAKlR,QAAW,IAARA,GAAGkR,UAAmBP,EAAEO,GAAGP,EAAEO,GAAGlR,GAAGkR,GAAG,IAAItB,EAAE,GAAG,IAAIsB,KAAKP,EAAEf,EAAE5c,KAAK,GAAGke,KAAKP,EAAEO,MAAMhR,GAAG0P,CAAC,CAAC,OAAO1P,IAAO,SAASC,GAAGwQ,EAAEO,GAAG,GAAGvb,EAAE,OAAOyW,GAAG,GAAG,EAAEuE,EAAEO,GAAGP,KAAK,EAAEO,KAAK,EAAE,IAAItB,EAAE,EAAE,OAAO3P,KAAKqP,SAAQ,CAAC+D,EAAEP,KAAK,IAAIpD,EAAEwB,EAAEtB,EAAE,IAAIkD,EAAEhgB,IAAI6d,EAAE,EAAEmC,IAAI,IAAI,GAAGpD,EAAEA,EAAE,EAAEA,EAAE2D,EAAEtgB,SAAS2c,EAAEhe,IAAIohB,MAAM,IAAI,GAAGO,EAAEtI,WAAW2E,GAAGhe,IAAIohB,IAAI,IAAI,GAAG,EAAElD,GAAGyD,EAAEtgB,OAAO,KAAI,CAAC,CAAC,SAASsN,GAAEsQ,EAAEO,GAAG,GAAGvb,EAAE,OAAOyW,GAAG,GAAG,EAAEuE,EAAEO,GAAGP,KAAK,EAAEO,KAAK,EAAE,IAAItB,EAAE3P,KAAKnN,IAAI6d,IAAI,IAAI,GAAGf,EAAE7c,OAAO,IAAIsgB,EAAE,EAAE,OAAOzD,EAAEN,SAAQwD,GAAGO,GAAGP,EAAE/f,OAAO,IAAGD,IAAIoe,IAAI,IAAI,GAAGmC,EAAE,CAAC,CAAC,SAAS/S,GAAGqQ,GAAG,OAAOhb,EAAEyW,GAAG,GAAG,EAAEuE,GAAG,EAAE,CAAC,SAASjJ,GAAGiJ,EAAEO,EAAEtB,EAAEyD,GAAG,OAAO1d,EAAEyW,GAAG,GAAG,EAAEuE,EAAEO,EAAEtB,EAAEyD,GAAG,EAAE,CAAC,SAAS7G,GAAGmE,EAAEO,EAAEtB,EAAEyD,EAAEP,GAAG,OAAOnd,EAAEyW,GAAG,GAAG,EAAEuE,EAAEO,EAAEtB,EAAEyD,EAAEP,GAAG,EAAE,CAAC,IAAIvG,GAAG,CAAC,KAAK,GAAG,IAAI,SAAS6I,GAAGzE,EAAEO,EAAEtB,EAAEyD,GAAG,GAAG1d,EAAE,OAAOyW,GAAG,GAAG,EAAEuE,EAAEO,EAAEtB,EAAEyD,GAAGnC,KAAK,EAAEtB,KAAK,EAAEyD,KAAK,EAAE,IAAI,IAAIP,EAAE,EAAEpD,EAAE,EAAEA,EAAEE,EAAEF,IAAI,CAAC,IAAIgE,EAAE5gB,IAAIoe,IAAI,IAAI,GAAGuc,EAAG36B,IAAIoe,EAAE,IAAI,IAAI,GAAGA,GAAG,EAAE,IAAI,IAAI+c,EAAG,EAAEA,EAAGR,EAAGQ,IAAK,CAAC,IAAIC,EAAGp8B,IAAI4hB,EAAEua,IAAK,GAAGE,EAAG5hB,GAAGoE,GAAQ,IAALud,GAAa,KAALA,IAAc,IAAJvd,EAAMzM,EAAEC,GAAGoG,GAAG4jB,EAAG,IAAIA,EAAGp7B,OAAO,GAAGo7B,EAAGn7B,KAAKk7B,EAAG,CAACpb,GAAG2a,CAAE,CAAC,OAAO36B,IAAIugB,IAAI,IAAI,GAAGP,EAAE,CAAC,CAAC,IAAIhE,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAInP,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAqG,SAAS6W,GAAG7F,EAAEO,EAAEtB,EAAEyD,GAAG,SAASP,EAAEE,EAAEub,EAAGc,GAAI,IAAIrc,EAAY,iBAAHA,EAAYA,EAAE1G,WAAW0G,GAAG,GAAGA,EAAEjgB,OAAOw7B,GAAIvb,EAAEqc,EAAG,GAAGrc,EAAE,OAAOA,CAAC,CAAC,SAAStD,EAAEsD,EAAEub,GAAI,OAAOzb,EAAEE,EAAEub,EAAG,IAAI,CAAC,SAAS7a,EAAEV,EAAEub,GAAI,SAASc,EAAGhiB,GAAI,OAAO,EAAEA,GAAI,EAAE,EAAEA,EAAG,EAAE,CAAC,CAAC,IAAI6lB,EAAG,OAAkD,KAA3CA,EAAG7D,EAAGrc,EAAEvG,cAAc8hB,EAAG9hB,iBAA2D,KAArCymB,EAAG7D,EAAGrc,EAAEtG,WAAW6hB,EAAG7hB,eAAmBwmB,EAAG7D,EAAGrc,EAAErG,UAAU4hB,EAAG5hB,YAAYumB,CAAE,CAAC,SAASzF,EAAGza,GAAG,OAAOA,EAAEpG,UAAU,KAAK,EAAE,OAAO,IAAIC,KAAKmG,EAAEvG,cAAc,EAAE,GAAG,IAAI,KAAK,EAAE,OAAOuG,EAAE,KAAK,EAAE,OAAO,IAAInG,KAAKmG,EAAEvG,cAAc,EAAE,GAAG,KAAK,EAAE,OAAO,IAAII,KAAKmG,EAAEvG,cAAc,EAAE,GAAG,KAAK,EAAE,OAAO,IAAII,KAAKmG,EAAEvG,cAAc,EAAE,GAAG,KAAK,EAAE,OAAO,IAAII,KAAKmG,EAAEvG,cAAc,EAAE,GAAG,IAAI,KAAK,EAAE,OAAO,IAAII,KAAKmG,EAAEvG,cAAc,EAAE,GAAG,IAAI,CAAC,SAASwhB,EAAGjb,GAAG,IAAIub,EAAGvb,EAAE3I,GAAG,IAAI2I,EAAE,IAAInG,KAAK,IAAIA,KAAKmG,EAAExT,GAAG,KAAK,EAAE,GAAGwN,WAAW,EAAEuhB,GAAI,CAAC,IAAIc,EAAGrc,EAAEtG,WAAWwmB,GAAIr0B,GAAEmU,EAAEvG,eAAeqC,GAAGnP,IAAI0vB,GAAI,KAAGd,EAAG2E,EAAGlgB,EAAErG,WAAwH,CAACqG,EAAE/F,QAAQ+F,EAAErG,UAAU4hB,GAAI,KAAK,CAA9IA,GAAI2E,EAAGlgB,EAAErG,UAAU,EAAEqG,EAAE/F,QAAQ,GAAG,GAAGoiB,EAAGrc,EAAE9F,SAASmiB,EAAG,IAAIrc,EAAE9F,SAAS,GAAG8F,EAAE7F,YAAY6F,EAAEvG,cAAc,GAAyC,CAAC,OAAO4iB,EAAG,IAAIxiB,KAAKmG,EAAEvG,cAAc,EAAE,EAAE,GAAG8hB,EAAGd,EAAG,IAAI5gB,KAAKmG,EAAEvG,cAAc,EAAE,IAAI4iB,EAAG5B,EAAG4B,GAAI,GAAG3b,EAAE6a,EAAGvb,GAAG,GAAGU,EAAE2b,EAAGrc,GAAGA,EAAEvG,cAAc,EAAEuG,EAAEvG,cAAcuG,EAAEvG,cAAc,CAAC,CAACkE,KAAK,EAAEO,KAAK,EAAEtB,KAAK,EAAEyD,KAAK,EAAE,IAAI6a,EAAGp7B,IAAIugB,EAAE,KAAK,IAAI,GAAomB,IAAI,IAAI8a,KAAzmB9a,EAAE,CAAC8f,GAAGphC,IAAIshB,IAAI,IAAI,GAAG+f,GAAGrhC,IAAIshB,EAAE,IAAI,IAAI,GAAGggB,GAAGthC,IAAIshB,EAAE,IAAI,IAAI,GAAGigB,GAAGvhC,IAAIshB,EAAE,KAAK,IAAI,GAAGkgB,GAAGxhC,IAAIshB,EAAE,KAAK,IAAI,GAAG7T,GAAGzN,IAAIshB,EAAE,KAAK,IAAI,GAAG1F,GAAG5b,IAAIshB,EAAE,KAAK,IAAI,GAAGhJ,GAAGtY,IAAIshB,EAAE,KAAK,IAAI,GAAGmgB,GAAGzhC,IAAIshB,EAAE,KAAK,IAAI,GAAGogB,GAAG1hC,IAAIshB,EAAE,KAAK,IAAI,GAAGqgB,GAAGxF,EAAGhiB,GAAGgiB,GAAI,IAAIte,EAAE1D,GAAG0D,GAAGse,EAAG,CAAC,KAAK,uBAAuB,KAAK,WAAW,KAAK,WAAW,KAAK,KAAK,KAAK,cAAc,KAAK,QAAQ,KAAK,WAAW,KAAK,WAAW,KAAK,WAAW,MAAM,KAAK,MAAM,KAAK,MAAM,WAAW,MAAM,WAAW,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,MAAuBte,EAAEA,EAAEpN,QAAQ,IAAIqL,OAAOsgB,EAAG,KAAKD,EAAGC,IAAK,IAAIC,EAAG,2DAA2D5zB,MAAM,KAAK6zB,EAAG,wFAAwF7zB,MAAM,KACprnB,IAAI2zB,KADqrnBD,EAAG,CAAC,KAAKlb,GAAGob,EAAGpb,EAAErF,IAAItH,UAAU,EAAE,GAAG,KAAK2M,GAAGob,EAAGpb,EAAErF,IAAI,KAAKqF,GAAGqb,EAAGrb,EAAEugB,IAAIltB,UAAU,EAAE,GAAG,KAAK2M,GAAGqb,EAAGrb,EAAEugB,IAAI,KAAKvgB,GAAGtD,GAAGsD,EAAExT,GAAG,MAAM,IAAI,EAAE,GAAG,KAAKwT,GAAGtD,EAAEsD,EAAEsgB,GAAG,GAAG,KAAKtgB,GAAGF,EAAEE,EAAEsgB,GAAG,EAAE,KAAK,KAAKtgB,GAAGib,EAAGjb,GAAG1G,WAAWjG,UAAU,GAAG,KAAK2M,GAAGib,EAAGjb,GAAG,KAAKA,GAAGtD,EAAEsD,EAAEqgB,GAAG,GAAG,KAAKrgB,IAAc,IAAVA,EAAEA,EAAEqgB,IAAQrgB,EAAE,GAAG,GAAGA,IAAIA,GAAG,IAAItD,EAAEsD,EAAE,IAAI,KAAKA,IAAI,IAAI,IAAIub,EAAG,EAAEc,EAAG,EAAEA,GAAIrc,EAAEugB,GAAG,EAAEhF,IAAK1vB,GAAEmU,EAAExT,GAAG,MAAMsP,GAAGnP,IAAI0vB,MAAO,OAAO3f,EAAEsD,EAAEsgB,GAAG/E,EAAG,EAAC,EAAG,KAAKvb,GAAGtD,EAAEsD,EAAEugB,GAAG,EAAE,GAAG,KAAKvgB,GAAGtD,EAAEsD,EAAEogB,GAAG,GAAG,KAAK,IAAI,KAC/tpB,KAAKpgB,GAAG,GAAGA,EAAEqgB,IAAI,GAAGrgB,EAAEqgB,GAAG,KAAK,KAAK,KAAKrgB,GAAGtD,EAAEsD,EAAEmgB,GAAG,GAAG,KAAK,IAAI,KAAI,KAAKngB,GAAGA,EAAErF,IAAI,EAAE,KAAKqF,GAAGtD,EAAE5B,KAAKC,OAAOiF,EAAE3I,GAAG,EAAE2I,EAAErF,IAAI,GAAG,GAAG,KAAKqF,IAAI,IAAIub,EAAGzgB,KAAKC,OAAOiF,EAAE3I,GAAG,GAAG2I,EAAErF,GAAG,GAAG,GAAG,GAAG,GAAG,IAAIqF,EAAErF,GAAG,IAAIqF,EAAE3I,GAAG,GAAG,GAAGkkB,IAAKA,EAAO,IAAJA,IAAkC,IAAzBc,GAAIrc,EAAErF,GAAG,IAAIqF,EAAE3I,IAAI,IAAa,GAAJglB,GAAOxwB,GAAEmU,EAAExT,MAAM+uB,EAAG,QAAQ,CAACA,EAAG,GAAG,IAAIc,GAAIrc,EAAErF,GAAG,EAAEqF,EAAE3I,GAAG,GAAG,GAAO,GAAJglB,GAAW,GAAJA,GAAOxwB,GAAEmU,EAAExT,GAAG,IAAI,KAAK+uB,GAAI,CAAC,OAAO7e,EAAE6e,EAAG,EAAC,EAAG,KAAKvb,GAAGA,EAAErF,GAAG,KAAKqF,GAAGtD,EAAE5B,KAAKC,OAAOiF,EAAE3I,GAAG,GAAG2I,EAAErF,GAAG,GAAG,GAAG,GAAG,GAAG,KAAKqF,IAAIA,EAAExT,GAAG,MAAM8M,WAAWjG,UAAU,GAAG,KAAK2M,GAAGA,EAAExT,GAAG,KAAK,KAAKwT,IAAkB,IAAdA,EAAEA,EAAEygB,IAA2C,IAAI,MAAM,SAA/BzgB,EAAElF,KAAKE,IAAIgF,GAAG,IAA2B,GAAG,IAAIA,EAAE,KAAKvQ,OAAO,GAAI,KAAKuQ,GAAGA,EAAE0gB,GAAG,KAAK,IAAI,KAAK9jB,EAAEA,EAAEpN,QAAQ,MAAM,QAAkB0rB,EAAGte,EAAEnV,SAAS0zB,KAAMve,EAAEA,EAAEpN,QAAQ,IAAIqL,OAAOsgB,EAAG,KAAKD,EAAGC,GAAI9a,KAAK,OAAgC8a,EADy/iB,SAAYxd,GAAG,IAAIO,EAAE7X,MAAMoW,GAAGkB,GAAG,GAAG,OAAOnB,GAAGmB,EAAEO,EAAE,EAAEA,EAAEne,QAAQme,CAAC,CACrjjByiB,CAA5B/jB,EAAEA,EAAEpN,QAAQ,QAAQ,MAAc2rB,EAAGp7B,OAAOme,EAAE,GAD2ijB,EAACP,EAAEO,KAAKxf,IAAIc,IAAIme,EAAEO,IAAI,EAAC,EAC/jjB0iB,CAAGzF,EAAGxd,GAAGwd,EAAGp7B,OAAO,EAAE,CAAC,IAAI8gC,GAAGljB,IAAI,IAAIA,GAAG,CAAC,MAAMO,GAAG4d,EAAG5d,EAAE,GAAwQ4iB,GAAG,EAAExF,GAAG,KAAKvhB,GAAG,EAAEgnB,GAAG,GAAGzd,GAAG,CAAC,EAAEhM,GAAG,CAAC,EAAE0pB,GAAG,EAAExF,GAAG,KAAKyF,GAAG,GAA+S,SAASC,GAAGvjB,GAAG,IAAI7L,EAAG,CAAC,GAAQ,IAALgvB,GAAO,CAAC,IAAI5iB,GAAE,EAAGtB,GAAE,EAAGe,GAAE,CAAC0C,EAAE,KAAK,IAAIvO,IAAKiI,GAAGsG,EAAEnC,GAAE,EAAGtB,GAAG,CAACkkB,GAAG,EAAED,IAAG,IAAItmB,GAAG+gB,aAAY1f,QAAQ,KAAKA,QAAQulB,GAAGC,IAAIxlB,QAAQulB,GAAGplB,SAASsE,GAAE,EAAG,IAAI,IAAIP,EAA1O,WAAc,IAAInC,EAAE5e,IAAIu8B,GAAG,IAAI,IAAI,GAAG,OAAO3d,EAAEuC,GAAE5I,GAAGqG,MAAMnF,GAAGmF,GAAG,CAA4K0jB,EAAI,CAAC,MAAM5G,GAAI3a,EAAE2a,EAAGpa,GAAE,CAAE,CAAC,IAAI3D,GAAE,EAAG,IAAI4e,GAAG,CAAC,IAAI5a,EAAE8a,GAAG9a,IAAI8a,GAAG,MAAMnb,EAAEK,EAAEjT,OAAOiT,EAAElT,SAASsS,GAAGpD,GAAE,EAAG,CAAC,GAAG2D,IAAI3D,EAAE,MAAMoD,CAAC,KAAIlD,GAAE,EAAGsB,IAAI4iB,GAAG,EAAExF,GAArhB,WAAc,IAAI3d,EAAEsiB,GAAG,OAAO/hB,EAAEP,EAAE,GAAG7d,IAAI6d,IAAI,IAAI,GAAGO,EAAEpe,IAAI6d,EAAE,IAAI,IAAI,GAAGO,EAAE,MAAMA,EAAE6iB,GAAG,GAAG,IAAInkB,EAAE0G,GAAGpF,GAAG,YAAW,IAAJtB,IAAaA,EAAEokB,KAAK1d,GAAGpF,GAAGtB,EAAEtF,GAAGsF,GAAGsB,GAAGA,EAAEtB,EAAE7d,IAAI4e,EAAE,IAAI,IAAI,GAAGO,EAAEP,CAAC,CAAiX2jB,UAAY1lB,QAAQ,KAAKA,QAAQulB,GAAGC,IAAIxlB,QAAQulB,GAAGjlB,QAAQ2kB,IAAG,IAAI3hB,GAAGoc,MAAK,MAAW,IAALwF,IAAQA,GAAG,EAAED,GAAGzmB,IAAIhD,GAAGkkB,IAAIA,GAAG,KAAK2F,GAAG3kB,SAAQ+D,IAAI,IAAIvO,EAAG,IAAIuO,IAAIhB,IAAI,CAAC,MAAMS,GAAG5E,GAAG4E,EAAE,MAAKgc,EAAG,kBAAkBgF,MAAM,OAAO/mB,EAAE,CAAC,CAA4CqB,GAAGoiB,KAAK,IAAI+D,GAAG,CAACtmB,GAAGK,GAAGG,GAAGQ,GAAGP,GAAGqC,GAAG1F,GAAGgE,GAAG2B,GAAGiF,GAAGC,GAAGE,GAAGjH,GAAG0C,GAAGlD,GAAGS,GAAGhQ,GAAEC,GAAEc,GAAGE,GAAEC,GAAGoH,GAAG8E,GAAG4I,IAAIof,GAAG,CAAC9iC,EAAE,SAASif,EAAEO,EAAEtB,GAAG,OAAvJ,SAAYe,GAAG,OAAOujB,IAAGhjB,IAAIP,IAAI/K,KAAKsL,EAAC,GAAG,CAAoHujB,EAAGxhC,gBAAgB4B,EAAEi5B,GAAGnd,EAAEO,EAAEtB,EAAC,GAAG,EAAEra,EAAE,SAASob,EAAEO,EAAEtB,GAAG,MAAa,IAAIrB,GAAXoC,KAAK,GAAY6f,GAAGtf,IAAI,EAAEtB,IAAI,GAAMe,CAAS,EAAE7M,EAAE,SAAS6M,GAAGhD,GAAGgD,IAAI,GAAGlb,EAAE,GAAGD,EAAE,QAAO,GAAI4Y,GAAGwiB,IAAI,EAAE57B,EAAE,SAAS2b,GAAGA,KAAK,EAAEhb,EAAEq6B,YAAY,CAACP,IAAI,gBAAgB4B,OAAO1gB,IAAIvC,GAAG4iB,GAAG5iB,GAAG1a,GAAGid,GAAG,EAAE5Q,EAAEwyB,GAAG19B,EAAEoa,GAAGnZ,EAAE4Y,GAAGtd,EAAE2f,GAAG1R,EAAEgM,GAAGmI,EAAEnE,GAAGxL,EAAEmN,GAAGxL,EAAEyQ,GAAG/C,EAAEgD,GAAGhF,EAAEkF,GAAGzG,EAAER,GAAGO,EAAEmC,GAAGwB,EAAE1E,GAAG5K,EAAEqL,GAAGS,EAAE,IAAI,EAAEzQ,EAAE,SAASuR,EAAEO,IAAGP,KAAK,IAAKO,IAAI,EAAEwjB,YAAW,IAAIje,OAAM9gB,EAAEq6B,YAAY,CAACkB,aAAavgB,EAAE8e,IAAI,kBAAkB9e,EAAEvC,GAAG1a,GAAGid,KAAKA,EAAEqf,YAAY,CAACP,IAAI,gBAAgB,EAAEtrB,EAAE,SAASwM,EAAEO,EAAEtB,EAAEyD,GAAGnC,KAAK,EAAEtS,GAAE7L,OAAO6c,EAAEyD,EAAEA,IAAI,IAAI,EAAE,IAAI,IAAIP,EAAE,EAAEA,EAAElD,EAAEkD,IAAIlU,GAAEkU,GAAG9d,IAAIqe,EAAEP,IAAI,GAAG,OAAOnC,EAAE,EAAEA,EAAExF,IAAIwF,EAAE,GAAG4jB,GAAG5jB,GAAGvC,GAAGumB,GAAGzjB,EAAEA,EAAEP,EAAEU,MAAM,KAAKzS,IAAGwP,GAAGumB,GAAG,EAAEzjB,CAAC,EAAEoB,EAAEsD,GAAG5R,EAAE,SAAS2M,GAAGjb,GAAG0Y,GAAG1a,GAAGid,IAAI,GAAGikB,KAAK,EAAEvhC,EAAE,SAASsd,EAAEO,EAAEtB,GAAGe,EAAEO,EAAE,UAAU,EAAE,UAAUP,GAAGA,IAAI,GAAG,WAAWO,EAAEpB,IAAIF,KAAK,EAAEe,EAAE,IAAI9D,KAAK,IAAI8D,GAAG5e,IAAI6d,IAAI,IAAI,GAAGe,EAAEZ,gBAAgBhe,IAAI6d,EAAE,IAAI,IAAI,GAAGe,EAAEX,gBAAgBje,IAAI6d,EAAE,IAAI,IAAI,GAAGe,EAAEV,cAAcle,IAAI6d,EAAE,KAAK,IAAI,GAAGe,EAAET,aAAane,IAAI6d,EAAE,KAAK,IAAI,GAAGe,EAAER,cAAcpe,IAAI6d,EAAE,KAAK,IAAI,GAAGe,EAAEP,iBAAiB,KAAKre,IAAI6d,EAAE,KAAK,IAAI,GAAGe,EAAEN,YAAYM,GAAGA,EAAE3D,UAAUH,KAAKyD,IAAIK,EAAEP,iBAAiB,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,MAAM,EAAEre,IAAI6d,EAAE,KAAK,IAAI,GAAGe,CAAC,EAAEzR,EAAE,SAASyR,EAAEO,EAAEtB,GAAGe,EAAEO,EAAE,UAAU,EAAE,UAAUP,GAAGA,IAAI,GAAG,WAAWO,EAAEpB,IAAIF,KAAK,EAAEe,EAAE,IAAI9D,KAAK,IAAI8D,GAAG5e,IAAI6d,IAAI,IAAI,GAAGe,EAAEJ,aAAaxe,IAAI6d,EAAE,IAAI,IAAI,GAAGe,EAAEH,aAAaze,IAAI6d,EAAE,IAAI,IAAI,GAAGe,EAAEF,WAAW1e,IAAI6d,EAAE,KAAK,IAAI,GAAGe,EAAEhE,UAAU5a,IAAI6d,EAAE,KAAK,IAAI,GAAGe,EAAEjE,WAAW3a,IAAI6d,EAAE,KAAK,IAAI,GAAGe,EAAElE,cAAc,KAAK1a,IAAI6d,EAAE,KAAK,IAAI,GAAGe,EAAE/D,SAASsE,GAAGrS,GAAE8R,EAAElE,eAAevN,GAAEC,IAAGwR,EAAEjE,YAAYiE,EAAEhE,UAAU,EAAE,EAAE5a,IAAI6d,EAAE,KAAK,IAAI,GAAGsB,EAAEnf,IAAI6d,EAAE,KAAK,IAAI,IAAK,GAAGe,EAAED,oBAAqBQ,EAAE,IAAIrE,KAAK8D,EAAElE,cAAc,EAAE,GAAGiE,oBAAoB,IAAI2C,EAAE,IAAIxG,KAAK8D,EAAElE,cAAc,EAAE,GAAGiE,oBAAoBC,EAA+C,GAA5CO,GAAGmC,GAAG1C,EAAED,qBAAqB5C,KAAKvH,IAAI8M,EAAEnC,IAAMnf,IAAI6d,EAAE,KAAK,IAAI,GAAGe,CAAC,EAAEnb,EAAE,SAASmb,GAAGA,KAAK,EAAE,IAAIO,EAAE,IAAIrE,KAAK9a,IAAI4e,EAAE,KAAK,IAAI,GAAG,KAAK5e,IAAI4e,EAAE,KAAK,IAAI,GAAG5e,IAAI4e,EAAE,KAAK,IAAI,GAAG5e,IAAI4e,EAAE,IAAI,IAAI,GAAG5e,IAAI4e,EAAE,IAAI,IAAI,GAAG5e,IAAI4e,IAAI,IAAI,GAAG,GAAGf,EAAE7d,IAAI4e,EAAE,KAAK,IAAI,GAAG0C,EAAEnC,EAAER,oBAAoBoC,EAAE,IAAIjG,KAAKqE,EAAEzE,cAAc,EAAE,GAAGiE,oBAAoBhB,EAAE,IAAI7C,KAAKqE,EAAEzE,cAAc,EAAE,GAAGiE,oBAAoBgD,EAAE5F,KAAKvH,IAAImJ,EAAEoD,GAAG,OAAO,EAAElD,EAAE7d,IAAI4e,EAAE,KAAK,IAAI,KAAKmC,GAAGpD,GAAGgE,GAAGL,GAAG,EAAEzD,IAAI8D,GAAGL,KAAKP,EAAEhF,KAAKtH,IAAIkJ,EAAEoD,GAAG5B,EAAEN,QAAQM,EAAElE,UAAU,MAAM,EAAE4C,EAAE8D,EAAEZ,GAAGO,KAAKthB,IAAI4e,EAAE,KAAK,IAAI,GAAGO,EAAEtE,SAASgD,GAAG/Q,GAAEqS,EAAEzE,eAAevN,GAAEC,IAAG+R,EAAExE,YAAYwE,EAAEvE,UAAU,EAAE,EAAE5a,IAAI4e,EAAE,KAAK,IAAI,GAAGf,EAAE7d,IAAI4e,IAAI,IAAI,GAAGO,EAAEX,aAAaxe,IAAI4e,EAAE,IAAI,IAAI,GAAGO,EAAEV,aAAaze,IAAI4e,EAAE,IAAI,IAAI,GAAGO,EAAET,WAAW1e,IAAI4e,EAAE,KAAK,IAAI,GAAGO,EAAEvE,UAAU5a,IAAI4e,EAAE,KAAK,IAAI,GAAGO,EAAExE,WAAW3a,IAAI4e,EAAE,KAAK,IAAI,GAAGO,EAAEL,UAAUF,EAAEO,EAAElE,UAAU8D,MAAMH,IAAI5e,IAAI+N,OAAO,IAAI,GAAG,GAAG6Q,GAAG,GAAGA,GAAG,IAAIjR,IAAIwL,GAAGyF,EAAE,IAAI7C,KAAKE,IAAI9C,IAAI,EAAEA,IAAI4C,KAAKC,MAAM7C,GAAG,cAAc,KAAK4C,KAAKmD,MAAM/F,OAAOA,KAAK,IAAI,cAAc,EAAE,IAAIyF,IAAI,CAAC,EAAEA,EAAEvR,GAAE9N,EAAE+N,GAAEtJ,EAAE,SAAS4a,EAAEO,EAAEtB,GAAG,SAASyD,EAAE6a,GAAI,OAAOA,EAAGA,EAAG/c,eAAeC,MAAM,sBAAsB8c,EAAG,GAAG,KAAK,CAACvd,KAAK,EAAEO,KAAK,EAAEtB,KAAK,EAAE,IAAIkD,GAAE,IAAIjG,MAAOJ,cAAciD,EAAE,IAAI7C,KAAKiG,EAAE,EAAE,GAAGY,EAAE,IAAI7G,KAAKiG,EAAE,EAAE,GAAGA,EAAEpD,EAAEgB,oBAAoB,IAAI+c,EAAG/Z,EAAEhD,oBAAoBud,EAAGngB,KAAKtH,IAAIsM,EAAE2a,GAAI36B,IAAI6d,IAAI,IAAI,GAAG,GAAGsd,EAAGl8B,IAAImf,IAAI,IAAI,KAAK4B,GAAG2a,GAAI9c,EAAE0C,EAAE3D,GAAGwB,EAAEmC,EAAEK,GAAG/C,EAAErR,GAAEqR,GAAGO,EAAE5R,GAAE4R,GAAGuc,EAAG3a,GAAGhgB,IAAI8c,IAAI,IAAI,GAAGe,EAAE7d,IAAI8c,EAAE,IAAI,IAAI,GAAGsB,IAAIpe,IAAI8c,IAAI,IAAI,GAAGsB,EAAEpe,IAAI8c,EAAE,IAAI,IAAI,GAAGe,EAAE,EAAE/R,EAAE,KAAKkwB,EAAG,GAAE,EAAGh6B,EAAE,SAAS6b,EAAEO,EAAEtB,GAAG,OAAOe,KAAK,EAAEO,EAAEnR,GAAEmR,IAAI,EAAEtB,IAAI,GAAGzE,GAAGwF,GAAGU,MAAM,KAAKH,EAAE,EAAE7Q,EAAE,SAASsQ,EAAEO,EAAEtB,GAAG,OAAOe,KAAK,EAAEO,EAAEnR,GAAEmR,IAAI,EAAEtB,IAAI,GAAGzE,GAAGwF,GAAGU,MAAM,KAAKH,EAAE,EAAE9b,EAAE,OAAOkK,EAAE,IAAIuN,KAAKyE,MAAMoC,EAAE,KAAK,MAAMlI,IAAI,EAAE,UAAUrM,EAAE,WAAW,OAAO,UAAU,EAAE9J,EAAE,IAAIkc,YAAYsjB,WAAWtjB,YAAYD,MAAMzS,EAAE,IAAInJ,GAAG03B,KAAKv7B,EAAG4lB,KAAKC,OAAO3kB,OAAOiZ,UAAU8oB,oBAAoBllB,EAAE,SAASe,GAAGA,KAAK,EAAE,IAAIO,EAAEpf,IAAIiB,OAAO,GAAG4d,GAAGO,GAAG,WAAWP,EAAE,OAAM,EAAG,IAAI,IAAIf,EAAE,EAAE,GAAGA,EAAEA,GAAG,EAAE,CAAC,IAAIyD,EAAEnC,GAAG,EAAE,GAAGtB,GAAGyD,EAAEvF,KAAKvH,IAAI8M,EAAE1C,EAAE,WAAW,IAAImC,EAAEhF,KAAKuF,EAAEvF,KAAKtH,IAAImK,EAAE0C,GAAGhiB,EAAE,CAACyhB,GAAGA,EAAEvM,IAAIvU,KAAK8gB,EAAE,WAAWO,GAAG,MAAMA,EAAE,OAAO,OAAOzO,EAAEvC,OAAOjH,WAAW,OAAO,MAAM,IAAIwJ,EAAE6M,KAAKqB,GAAGxN,IAAK,IAAIoK,EAAE,EAAE,MAAMre,CAAC,CAAC,MAAM,CAACqe,OAAE,CAAM,CAAC,GAAGA,EAAE,OAAM,CAAE,CAAC,OAAM,CAAE,EAAEoD,EAAE3S,GAAG6S,EAAE3S,GAAE3K,EAAE2W,GAAG/W,EAAEgL,GAAGxN,EAAE4U,GAAG7R,EAAE2W,GAAGza,EAAEqjB,GAAGtjB,EAAE8S,GAAG/P,EAAEk6B,WAAW34B,EAAEogB,GAAGnlB,EAAE,SAASsf,EAAEO,EAAEtB,EAAEyD,GAAG,OAAOmD,GAAG7F,IAAI,EAAEO,IAAI,EAAEtB,IAAI,EAAEyD,IAAI,EAAE,GAAGH,GAAE,WAAW,SAASvC,EAAEf,EAAEyD,GAAG,OAAOH,GAAEtD,EAAEpe,QAAQ0hB,GAA/hK,WAAc,IAAIvC,EAAEuC,GAAEhC,EAAE,CAAC,EAAE,IAAI,IAAItB,EAAEyD,KAAK1iB,OAAO+gB,QAAQf,GAAGO,EAAEtB,GAAa,mBAAHyD,EAAc,WAAW0gB,GAAG/gC,KAAK4c,GAAG,IAAI,OAAOyD,EAAEhC,MAAM,KAAKM,UAAU,CAAC,QAAQ7M,IAAKivB,GAAGniB,MAAM0c,IAAS,IAALwF,IAAoB,IAAZC,GAAGhhC,SAAa+gC,GAAG,EAAEtoB,IAAI,EAAEqoB,GAAG1e,WAAWrD,OAAO,KAAKA,OAAOijB,MAAM,CAAC,EAAE1hB,EAAE,OAAOnC,CAAC,CAAiyJ8jB,GAAK9hB,GAA01F,WAAc,IAAIvC,EAAEuC,GAAEvC,EAAEhgB,OAAOgR,OAAO,CAAC,EAAEgP,GAAG,IAAIO,EAAEmC,GAAG,IAAIA,MAAM,EAAEzD,EAAEyD,GAAGP,GAAGO,EAAEP,KAAK,EAAE,OAAOnC,EAAE2F,GAAGpF,EAAEP,EAAE2F,IAAI3F,EAAE4F,GAAGrF,EAAEP,EAAE4F,IAAI5F,EAAE6F,GAAG5G,EAAEe,EAAE6F,IAAI7F,EAAEskB,kCAAkC/jB,EAAEP,EAAEskB,mCAAmCtkB,EAAEvG,GAAG8G,EAAEP,EAAEvG,IAAIuG,EAAE7B,GAAGc,EAAEe,EAAE7B,IAAI6B,CAAC,CAA9jGukB,GAAK9mB,GAAGmiB,GAAGv9B,KAAKkgB,GAAEnG,IAAItH,EAAG8M,QAAQW,GAAEtO,GAAGC,EAAEwO,EAAEnJ,IAAKgJ,EAAC,CAAC,IAAIhC,EAAE,CAACpf,EAAE0iC,IAAI,GAAGtuB,IAAKrR,EAAE4d,gBAAgB,IAAI,OAAO5d,EAAE4d,gBAAgBvB,EAAEP,EAAE,CAAC,MAAMf,GAAGzL,EAAE,sDAAsDyL,KAAKxa,EAAEwa,EAAE,CAAC,OADtmI,SAAYe,EAAEO,GAAG,IAAItB,EAAElF,EAAG,MAAgD,mBAAlC/G,YAAY+O,sBAAkC0c,EAAGxf,IAAIpF,EAAGoF,IAAIla,GAAiB,mBAAPgQ,MAAkBsF,GAAG4E,EAAEe,EAAEO,GAAGxL,MAAMkK,EAAE,CAACjK,YAAY,gBAAgBC,MAAKyN,GAAG1P,YAAY+O,qBAAqBW,EAAE1C,GAAG/K,KAAKsL,GAAE,SAAS4B,GAAG,OAAO3O,EAAE,kCAAkC2O,KAAK3O,EAAE,6CAA6C6G,GAAG4E,EAAEe,EAAEO,EAAE,KAAG,CACkxHjG,CAAGiG,GAAE,SAAStB,GAAGe,EAAEf,EAAEgD,SAAShD,EAAEulB,OAAO,IAAGpvB,MAAM3Q,GAAG,CAAC,CAAC,CAAxT,GAA4TP,EAAEge,SAAS,CAAClC,EAAEO,KAAKrc,EAAEge,SAASK,GAAEhP,GAAGyM,EAAEO,GAAGrc,EAAEke,iBAAiB,CAACpC,EAAEO,KAAKrc,EAAEke,iBAAiBG,GAAErO,GAAG8L,EAAEO,GAAGrc,EAAEoe,yBAAyB,CAACtC,EAAEO,EAAEtB,EAAEyD,EAAEP,EAAEpD,EAAEgE,EAAE+Z,EAAGQ,EAAGC,KAAMr5B,EAAEoe,yBAAyBC,GAAEzd,GAAGkb,EAAEO,EAAEtB,EAAEyD,EAAEP,EAAEpD,EAAEgE,EAAE+Z,EAAGQ,EAAGC,GAAIr5B,EAAEse,4BAA4B,CAACxC,EAAEO,KAAKrc,EAAEse,4BAA4BD,GAAEvd,GAAGgb,EAAEO,GAAGrc,EAAEue,6BAA6B,CAACzC,EAAEO,EAAEtB,KAAK/a,EAAEue,6BAA6BF,GAAEgB,IAAIvD,EAAEO,EAAEtB,GAAG/a,EAAEye,0BAA0B,CAAC3C,EAAEO,EAAEtB,KAAK/a,EAAEye,0BAA0BJ,GAAEkB,IAAIzD,EAAEO,EAAEtB,GAAG/a,EAAE0e,0BAA0B5C,IAAI9b,EAAE0e,0BAA0BL,GAAEoB,IAAI3D,GAAG9b,EAAE4e,kBAAkB,CAAC9C,EAAEO,EAAEtB,KAAK/a,EAAE4e,kBAAkBP,GAAEsB,IAAI7D,EAAEO,EAAEtB,GAAG/a,EAAE8e,mBAAmBhD,IAAI9b,EAAE8e,mBAAmBT,GAAEwB,IAAI/D,GAAG9b,EAAE+e,wBAAwB,CAACjD,EAAEO,EAAEtB,KAAK/a,EAAE+e,wBAAwBV,GAAE0B,IAAIjE,EAAEO,EAAEtB,GAAG/a,EAAEgf,iBAAiB,CAAClD,EAAEO,KAAKrc,EAAEgf,iBAAiBX,GAAE2B,IAAIlE,EAAEO,GAAGrc,EAAEif,kBAAkB,CAACnD,EAAEO,KAAKrc,EAAEif,kBAAkBZ,GAAE6B,IAAIpE,EAAEO,GAAGrc,EAAEkf,SAASpD,IAAI9b,EAAEkf,SAASb,GAAE+B,IAAItE,GAAG9b,EAAEmf,iBAAiB,CAACrD,EAAEO,EAAEtB,EAAEyD,EAAEP,EAAEpD,KAAK7a,EAAEmf,iBAAiBd,GAAEiC,IAAIxE,EAAEO,EAAEtB,EAAEyD,EAAEP,EAAEpD,GAAG7a,EAAEof,kBAAkB,CAACtD,EAAEO,EAAEtB,EAAEyD,EAAEP,KAAKje,EAAEof,kBAAkBf,GAAEkC,IAAIzE,EAAEO,EAAEtB,EAAEyD,EAAEP,GAAGje,EAAEsf,kBAAkBxD,IAAI9b,EAAEsf,kBAAkBjB,GAAEmC,IAAI1E,GAAG9b,EAAEwf,qBAAqB,CAAC1D,EAAEO,EAAEtB,EAAEyD,KAAKxe,EAAEwf,qBAAqBnB,GAAEqC,IAAI5E,EAAEO,EAAEtB,EAAEyD,GAAGxe,EAAE0f,sBAAsB,CAAC5D,EAAEO,EAAEtB,KAAK/a,EAAE0f,sBAAsBrB,GAAEuC,IAAI9E,EAAEO,EAAEtB,GAAG/a,EAAE4f,sBAAsB9D,IAAI9b,EAAE4f,sBAAsBvB,GAAEyC,IAAIhF,GAAG9b,EAAE8f,kBAAkBhE,IAAI9b,EAAE8f,kBAAkBzB,GAAEjB,IAAItB,GAAG9b,EAAEqM,cAAc,CAACyP,EAAEO,EAAEtB,KAAK/a,EAAEqM,cAAcgS,GAAEhB,IAAIvB,EAAEO,EAAEtB,GAAG/a,EAAEigB,eAAe,CAACnE,EAAEO,EAAEtB,EAAEyD,KAAKxe,EAAEigB,eAAe5B,GAAE6C,IAAIpF,EAAEO,EAAEtB,EAAEyD,GAAGxe,EAAEmgB,sBAAsBrE,IAAI9b,EAAEmgB,sBAAsB9B,GAAEtT,IAAI+Q,GAAG9b,EAAEqgB,mBAAmBvE,IAAI9b,EAAEqgB,mBAAmBhC,GAAE8C,IAAIrF,GAAG9b,EAAEoM,mBAAmB,CAAC0P,EAAEO,EAAEtB,EAAEyD,EAAEP,KAAKje,EAAEoM,mBAAmBiS,GAAEf,IAAIxB,EAAEO,EAAEtB,EAAEyD,EAAEP,GAAGje,EAAEmM,QAAQ,CAAC2P,EAAEO,EAAEtB,EAAEyD,EAAEP,EAAEpD,EAAEgE,EAAE+Z,KAAM54B,EAAEmM,QAAQkS,GAAEiD,IAAIxF,EAAEO,EAAEtB,EAAEyD,EAAEP,EAAEpD,EAAEgE,EAAE+Z,GAAI54B,EAAEygB,iBAAiB3E,IAAI9b,EAAEygB,iBAAiBpC,GAAEd,IAAIzB,GAAG9b,EAAE2gB,YAAY,CAAC7E,EAAEO,EAAEtB,KAAK/a,EAAE2gB,YAAYtC,GAAEzF,IAAIkD,EAAEO,EAAEtB,GAAG/a,EAAE6gB,iBAAiB/E,IAAI9b,EAAE6gB,iBAAiBxC,GAAEmD,IAAI1F,GAAG,IAAI7Q,GAAG,KAAKA,GAAGoT,GAAEoD,MAAM6a,GAAGt8B,EAAEugC,cAAc,KAAKjE,GAAGt8B,EAAEugC,cAAcliB,GAAEqD,MAAM0c,GAAGp+B,EAAEghB,QAAQlF,IAAIsiB,GAAGp+B,EAAEghB,QAAQ3C,GAAEsD,IAAI7F,GAAGvG,GAAGvV,EAAEihB,MAAMnF,IAAIvG,GAAGvV,EAAEihB,MAAM5C,GAAEpG,IAAI6D,GAAG9b,EAAEwgC,sBAAsB,KAAKxgC,EAAEwgC,sBAAsBniB,GAAEnG,MAAM,IAAIY,GAAG9Y,EAAEygC,yBAAyB,CAAC3kB,EAAEO,EAAEtB,EAAEyD,EAAEP,EAAEpD,KAAK/B,GAAG9Y,EAAEygC,yBAAyBpiB,GAAEnU,IAAI4R,EAAEO,EAAEtB,EAAEyD,EAAEP,EAAEpD,GAAG7a,EAAE0gC,4BAA4B,KAAK1gC,EAAE0gC,4BAA4BriB,GAAE5F,MAAM,IAAo0BkoB,GAAh0B70B,GAAG,CAACgQ,EAAEO,EAAEtB,EAAEyD,KAAK1S,GAAGuS,GAAE1F,IAAImD,EAAEO,EAAEtB,EAAEyD,GAAG4d,GAAGtgB,IAAIsgB,GAAG/d,GAAErE,IAAI8B,GAAGgiB,GAAG99B,EAAE4gC,yBAAyB9kB,IAAIgiB,GAAG99B,EAAE4gC,yBAAyBviB,GAAEnkB,IAAI4hB,GAAGnD,GAAG,KAAKA,GAAG0F,GAAE3F,MAAM7N,GAAGiR,IAAIjR,GAAGwT,GAAExT,IAAIiR,GAAGrD,GAAG,CAACqD,EAAEO,KAAK5D,GAAG4F,GAAE5I,IAAIqG,EAAEO,GAAGgf,GAAG,KAAKA,GAAGhd,GAAE9I,MAAM+lB,GAAGxf,IAAIwf,GAAGjd,GAAE/I,IAAIwG,GAAGyf,GAAGzf,IAAIyf,GAAGld,GAAEpE,IAAI6B,GAAG5R,GAAGlK,EAAE6gC,WAAW,CAAC/kB,EAAEO,KAAKnS,GAAGlK,EAAE6gC,WAAWxiB,GAAEvT,IAAIgR,EAAEO,GAAGgB,GAAGvB,IAAIuB,GAAGgB,GAAEzT,IAAIkR,GAAGwE,GAAG,KAAKA,GAAGjC,GAAErT,MAAM0N,GAAGoD,IAAIpD,GAAG2F,GAAEpT,IAAI6Q,GAAGvD,GAAG,KAAKA,GAAG8F,GAAEvS,MAA0f,SAASiN,KAAK,KAAK,EAAE1H,GAAI,GAAGvQ,EAAEb,EAAED,GAAGc,GAAG0Y,GAAG5I,GAAIkwB,YAAY9gC,OAAO,CAAC,GAAGA,EAAE6hB,OAAO,IAAqB,mBAAV7hB,EAAE6hB,SAAqB7hB,EAAE6hB,OAAO,CAAC7hB,EAAE6hB,SAAS7hB,EAAE6hB,OAAO3jB,QAAQiT,EAAGuM,QAAQ1d,EAAE6hB,OAAOC,SAAStI,GAAGrI,GAAI,EAAEE,GAAIsvB,KAAKA,IAAG,EAAG3gC,EAAE+hB,WAAU,EAAG9R,IAAKnP,GAAG0Y,GAAG5I,GAAI3Q,EAAED,GAAGc,GAAG0Y,GAAGsE,IAAK,CAAC,CAAC,OAA9uB9d,EAAEgiB,eAAe,OAAOhiB,EAAEiiB,cAAc,OAA8OjiB,EAAEk6B,WAAWnqB,EAAE/P,EAAEkiB,WAAWqZ,GAAGv7B,EAAEmiB,UAAUkZ,GAAGr7B,EAAEoiB,aAAakZ,GAAGt7B,EAAE+gC,iBAAiB,IAAI,EAAEpqB,GAAG3W,EAAEqiB,aAAahL,GAAGrX,EAAEsiB,aAAanI,GAAGna,EAAEuiB,gBAAgB3H,GAAG5a,EAAEghC,WAAWzqB,GAAGvW,EAAEq9B,QAAQ9jB,GAAUpE,EAAG,SAAS2G,IAAI6kB,IAAI5nB,KAAK4nB,KAAKxrB,EAAG2G,EAAE,EAAmQ/C,KAAKtc,EAAEqN,KAAK,GAAiB,iBAAJ2uB,GAAyB,iBAAJC,EAAaA,EAAG/7B,QAAQg8B,EAAkB,mBAARnW,QAAoBA,OAAOC,KAAKD,OAAO,IAAG,IAAImW,GAAE,IAAQsI,GAAGvkC,GAAG,CAACwkC,EAAGC,KAAMA,EAAGxkC,QAAQ,y+EAA6gFykC,GAAG7kC,GAAE,KAAkBwmB,GAAGvZ,KAAKwZ,GAAGwV,KAAKtV,IAAG,EAAGC,IAAG,EAAGC,IAAG,EAAGC,GAAG7mB,IAAI,GAAO,IAAJA,EAAM,OAAM,EAAG,UAAU8J,kBAAkB,IAAI,cAAcyH,KAAK,MAAMA,KAAKszB,qBAAqB77B,QAAQ87B,KAAK,iCAAiC9kC,EAAE,0IAAyI,SAAUyQ,QAAQ,KAAKA,QAAQ9N,UAAU8N,QAAQ9N,SAAS+N,MAAM1H,QAAQ87B,KAAK,iCAAiC9kC,EAAE,8JAA8J,IAAI,cAAc+kC,eAAe,MAAK,IAAIA,gBAAiBC,MAAMrG,YAAY,IAAI70B,kBAAkB,IAAIwI,YAAY2yB,SAAS,IAAIv+B,WAAW,CAAC,EAAE,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,OAAM,CAAE,GAAGogB,GAAG,KAAK,IAAI,OAAOxU,YAAY2yB,SAAS,IAAIv+B,WAAW,CAAC,EAAE,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM,OAAM,CAAE,GAAGqgB,GAAG,CAAC/mB,EAAEC,IAAID,EAAEC,EAAE,8BAA8B,qBAAqBA,EAAE,yBAAyB,gBAAgB+mB,GAAGplB,UAAU,GAAG8kB,GAAG,OAAO9gB,QAAQuJ,UAAU,GAAGwX,GAAG,MAAM,IAAIrlB,MAAM,yDAAyD,GAAGslB,GAAG,MAAM,IAAItlB,MAAM,sDAAsDqlB,IAAG,EAAG,IAAI1mB,EAAED,EAAEklC,YAAY7kC,EAAEL,EAAEi/B,WAAWx+B,EAAET,EAAEmlC,KAAKzkC,EAAEmmB,GAAGxmB,GAAGoB,EAAEhB,GAAGqmB,KAAK9kB,EAAEhC,EAAEolC,UAAUzhC,EAAY,iBAAH3B,EAAYA,OAAE,EAAOwB,EAAEujB,GAAGtlB,EAAEf,GAAG+C,EAAY,iBAAHzB,EAAYA,EAAEwB,QAAG,EAAOO,GAAE,EAAGC,EAAE,GAAG,GAAG/D,EAAE,GAAG+D,EAAErC,KAAK,IAAIiE,SAAQ3B,IAAIo/B,YAAW,KAAKt/B,GAAE,EAAGE,GAAE,GAAGhE,EAAC,KAAK+D,EAAErC,KAAK,IAAIiE,SAAQ,CAAC3B,EAAEC,KAAK,IAAIC,EAAEzD,EAAE8lB,GAAGD,GAAGniB,EAAE,CAAC8P,WAAW,CAAC7P,EAAEC,KAAK,GAAG5D,GAAG2D,EAAEghC,SAAS,sBAAsBC,KAAK,IAAI,OAAOx0B,IAAIy0B,gBAAgB,IAAID,KAAK,CAACb,MAAM,CAACp+B,KAAK,qBAAqB,GAAGhC,EAAEghC,SAAS,SAAS,CAAC,GAAG5hC,EAAE,OAAOA,EAAE,IAAIe,EAAEb,GAAGW,EAAE,MAAW,uBAAJd,EAAyBgB,EAAE,0BAA8B,gCAAJhB,EAAkCgB,EAAE,mCAAmCA,EAAEhB,CAAC,CAAC,OAAOc,EAAED,IAAI,GAAG3D,EAAE,GAAG0D,EAAE66B,WAAW5+B,SAASilC,KAAK,IAAIlhC,EAAEu8B,0BAAoB,GAAS/vB,UAAU,4BAA4B,CAAC,IAAIvM,EAAE,uBAAuBF,EAAE8W,cAAc7W,EAAEu8B,oBAAoB,IAAI2E,KAAK,CAACjhC,GAAG,CAACgC,KAAK,mBAAmB,CAAClC,EAAEC,GAAGmQ,MAAKlQ,IAAIsiB,IAAG,EAAGD,IAAG,EAAGD,GAAGpiB,EAAEJ,GAAE,IAAGI,IAAIsiB,IAAG,EAAGC,IAAG,EAAG1iB,EAAEG,EAAC,GAAE,WAAWuB,QAAQ4/B,KAAKxhC,GAAGD,EAAE,MAAM,IAAIzC,MAAM,2DAA2DrB,MAAK,EAAGgnB,GAAG,KAAK,GAAGP,IAAID,GAAG,OAAOA,GAAG,MAAM,IAAInlB,MAAM,sCAAqC,CAAC,IAAiBmkC,GAAG1lC,GAAE,KAAkB6kC,KAAK1d,GAAG,CAAClnB,EAAEC,KAAK,IAAII,EAAE4mB,KAAKxmB,EAAEJ,EAAE0lB,gBAAgB/lB,GAAG,EAAEU,EAAEL,EAAEmkB,QAAQ/jB,GAAG,OAAOJ,EAAEylB,aAAa9lB,EAAEU,EAAED,GAAGR,EAAE0B,KAAKjB,GAAGA,GAAGymB,GAAG,CAACnnB,EAAEC,EAAEI,EAAEI,KAAK,GAAa,iBAAHT,GAAiB,OAAJA,EAAS,CAAC,GAAGK,EAAEqlC,IAAI1lC,GAAG,MAAM,IAAIsB,MAAM,iCAAiCjB,EAAEslC,IAAI3lC,EAAE,CAACV,OAAO+gB,QAAQrgB,GAAGie,SAAQ,EAAEvd,EAAEe,MAAM,IAAIO,EAAE/B,EAAEA,EAAES,EAAEA,EAAE,GAAa,iBAAHe,EAAY0lB,GAAG1lB,EAAEO,EAAE,IAAI3B,EAAEI,QAAQ,GAAa,iBAAHgB,GAAuB,iBAAHA,EAAYhB,EAAEuB,EAAEP,EAAEwZ,gBAAiB,IAAa,kBAAHxZ,EAAiC,MAAM,IAAIH,MAAM,0CAA0CG,GAA9EhB,EAAEuB,EAAEP,EAAE,IAAI,IAAuE,IAAE,EAAG2lB,GAAGpnB,IAAI,IAAIC,EAAEgnB,KAAK5mB,EAAEJ,EAAE0lB,YAAY,IAAI,IAAIllB,EAAER,EAAEylB,WAAW,GAAGzlB,EAAEyhB,iBAAiBjhB,EAAEA,EAAE,GAAG,IAAIC,EAAET,EAAEkT,OAAO1S,EAAE,GAAGgB,EAAExB,EAAEmT,QAAQ3S,EAAE,EAAE,GAAGuB,EAAEP,EAAExB,EAAE4lB,aAAapkB,GAAG,GAAG,MAAM,IAAIH,MAAM,GAAGtB,iBAAiBU,qBAAqBsB,IAAI,CAAC,QAAQ/B,EAAE2lB,aAAavlB,EAAE,EAAC,IAAWulC,GAAG7lC,GAAE,KAAkB6kC,KAAKa,KAAKpe,GAAGrnB,IAAI,IAAIC,EAAEgnB,KAAK5mB,EAAE,EAAEI,EAAE,GAAGC,EAAEV,GAAG,CAAC,EAAE,IAAI,QAAyB,IAAtBA,GAAG6lC,iBAA0BnlC,EAAEmlC,iBAAiB,OAAO,GAA8B,iBAApB7lC,EAAE6lC,mBAA6Bx+B,OAAOy+B,UAAU9lC,EAAE6lC,mBAAmB7lC,EAAE6lC,iBAAiB,GAAG7lC,EAAE6lC,iBAAiB,EAAE,MAAM,IAAIvkC,MAAM,qCAAqCtB,EAAE6lC,oBAAoB,QAA0B,IAAvB7lC,GAAG+lC,kBAA2BrlC,EAAEqlC,kBAAkB,OAAO,GAA+B,iBAArB/lC,EAAE+lC,oBAA8B1+B,OAAOy+B,UAAU9lC,EAAE+lC,mBAAmB,MAAM,IAAIzkC,MAAM,qCAAqCtB,EAAE+lC,0BAAoC,IAAf/lC,GAAGi+B,YAAqBv9B,EAAEu9B,WAAU,GAAI,IAAIx8B,EAAE,EAAE,YAAgB,IAATzB,GAAGgmC,MAAevkC,EAAEylB,GAAGlnB,EAAEgmC,IAAIvlC,IAAIJ,EAAEJ,EAAE+iB,qBAAqBtiB,EAAEmlC,iBAAiBnlC,EAAEqlC,oBAAoBrlC,EAAEu9B,UAAUx8B,GAAO,IAAJpB,GAAO+mB,GAAG,kCAAwC,IAAXpnB,GAAGimC,OAAgB9e,GAAGnnB,EAAEimC,MAAM,GAAG,IAAIC,SAAQ,CAAClkC,EAAE2B,KAAK,IAAIH,EAAE0jB,GAAGllB,EAAEvB,GAAGgD,EAAEyjB,GAAGvjB,EAAElD,GAAoC,IAAjCR,EAAEijB,sBAAsB7iB,EAAEmD,EAAEC,IAAQ2jB,GAAG,iCAAiCplB,OAAO2B,KAAI,IAAI,CAACtD,EAAEI,EAAE,CAAC,MAAMgB,GAAG,MAAU,IAAJpB,GAAOJ,EAAEmjB,sBAAsB/iB,GAAGI,EAAEwd,SAAQjc,GAAG/B,EAAEwkB,MAAMziB,KAAIP,CAAC,EAAC,IAAuB0kC,GAAGpmC,GAAE,KAAkB6kC,KAAKa,KAAKne,GAAGtnB,IAAI,OAAOA,GAAG,IAAI,WAAW,OAAO,EAAE,IAAI,QAAQ,OAAO,EAAE,IAAI,WAAW,OAAO,EAAE,IAAI,MAAM,OAAO,GAAG,QAAQ,MAAM,IAAIsB,MAAM,yCAAyCtB,KAAI,EAAGunB,GAAGvnB,IAAI,OAAOA,GAAG,IAAI,aAAa,OAAO,EAAE,IAAI,WAAW,OAAO,EAAE,QAAQ,MAAM,IAAIsB,MAAM,+BAA+BtB,KAAI,EAAGwnB,GAAGxnB,IAAIA,EAAEimC,QAAQjmC,EAAEimC,MAAM,CAAC,GAAGjmC,EAAEimC,MAAMG,UAAUpmC,EAAEimC,MAAMG,QAAQ,CAAC,GAAG,IAAInmC,EAAED,EAAEimC,MAAMG,QAAQnmC,EAAEomC,+BAA+BpmC,EAAEomC,6BAA6B,KAAKrmC,EAAEgK,oBAAoBhK,EAAEgK,mBAAmBs8B,MAAKjmC,GAAmC,YAArB,iBAAHA,EAAYA,EAAEA,EAAE4B,UAAoBjC,EAAEumC,kBAAiB,EAAE,EAAG9e,GAAG,CAACznB,EAAEC,EAAEI,KAAK,IAAI,IAAII,KAAKR,EAAE,CAAC,IAAIS,EAAY,iBAAHD,EAAYA,EAAEA,EAAEwB,KAAK,OAAOvB,GAAG,IAAI,QAAQ,GAAGA,EAAE,QAAkB,iBAAHD,EAAY,CAAC,IAAIuB,EAAEvB,EAAE,GAAGuB,GAAGwkC,WAAW,CAAC,IAAI7iC,EAAEujB,GAAG,aAAa7mB,GAAGmD,EAAE0jB,GAAGllB,EAAEwkC,WAAWnmC,GAA2C,IAAxC4mB,KAAKhF,0BAA0BjiB,EAAE2D,EAAEH,IAAQ4jB,GAAG,oDAAoDplB,EAAEwkC,cAAc,CAAC,GAAGxkC,GAAGi9B,WAAW,CAAC,IAAIt7B,EAAE3B,EAAEi9B,YAAsB,iBAAHt7B,IAAc0D,OAAOy+B,UAAUniC,IAAIA,EAAE,KAAKA,EAAE,GAAG,IAAIH,EAAE0jB,GAAG,aAAa7mB,GAAGoD,EAAEyjB,GAAGvjB,EAAEsX,WAAW5a,GAA2C,IAAxC4mB,KAAKhF,0BAA0BjiB,EAAEwD,EAAEC,IAAQ2jB,GAAG,oDAAoDplB,EAAEi9B,cAAc,CAAC,GAAGj9B,GAAGykC,gBAAgB,CAAC,IAAI9iC,EAAEujB,GAAG,kBAAkB7mB,GAAGmD,EAAE0jB,GAAGllB,EAAEykC,gBAAgBpmC,GAA2C,IAAxC4mB,KAAKhF,0BAA0BjiB,EAAE2D,EAAEH,IAAQ4jB,GAAG,yDAAyDplB,EAAEykC,mBAAmB,CAAC,CAAC,MAAM,IAAI,SAAS,GAAG/lC,EAAE,KAAe,iBAAHD,EAAY,CAAC,IAAIuB,EAAEvB,EAAE,GAAGuB,GAAG0kC,gBAAgB,CAAC,GAAuB,SAApB1kC,EAAE0kC,iBAA8C,SAApB1kC,EAAE0kC,gBAAyB,MAAM,IAAIplC,MAAM,oDAAoDU,EAAE0kC,mBAAmB,IAAI/iC,EAAEujB,GAAG,kBAAkB7mB,GAAGmD,EAAE0jB,GAAGllB,EAAE0kC,gBAAgBrmC,GAA2C,IAAxC4mB,KAAKhF,0BAA0BjiB,EAAE2D,EAAEH,IAAQ4jB,GAAG,yDAAyDplB,EAAE0kC,mBAAmB,CAAC,CAAC,MAAM,IAAI,OAAO,IAAI,MAAM,SAAS,QAAQ,MAAM,IAAIplC,MAAM,qCAAqCZ,KAAK,IAAIe,EAAEylB,GAAGxmB,EAAEL,GAA2C,IAAxC4mB,KAAKnF,4BAA4B9hB,EAAEyB,IAAQ2lB,GAAG,oCAAoC1mB,KAAK,GAAGgnB,GAAG1nB,IAAI,IAAIC,EAAEgnB,KAAK5mB,EAAE,EAAEI,EAAE,GAAGC,EAAEV,GAAG,CAAC,EAAEwnB,GAAG9mB,GAAG,IAAI,IAAIe,EAAE6lB,GAAG5mB,EAAEimC,wBAAwB,OAAO3kC,EAAEulB,GAAG7mB,EAAEkmC,eAAe,cAAcjjC,EAAkB,iBAATjD,EAAEmmC,MAAgB3f,GAAGxmB,EAAEmmC,MAAMpmC,GAAG,EAAE+C,EAAE9C,EAAEmlC,kBAAkB,EAAE,IAAIx+B,OAAOy+B,UAAUtiC,IAAIA,EAAE,GAAGA,EAAE,EAAE,MAAM,IAAIlC,MAAM,qCAAqCkC,KAAK,IAAIC,EAAE/C,EAAEqlC,mBAAmB,EAAE,IAAI1+B,OAAOy+B,UAAUriC,IAAIA,EAAE,GAAGA,EAAE,EAAE,MAAM,IAAInC,MAAM,qCAAqCmC,KAAK,IAAIM,EAAmC,iBAA1BrD,EAAEomC,uBAAiC5f,GAAGxmB,EAAEomC,uBAAuBrmC,GAAG,EAAE,GAAGJ,EAAEJ,EAAE2hB,yBAAyBngB,IAAIf,EAAEqmC,oBAAoBrmC,EAAE6lC,iBAAiBvkC,IAAItB,EAAEsmC,gBAAgB,EAAErjC,EAAEH,EAAEC,EAAEM,GAAO,IAAJ1D,GAAO+mB,GAAG,iCAAiC1mB,EAAEsJ,oBAAoByd,GAAGpnB,EAAEK,EAAEsJ,mBAAmBvJ,GAAGC,EAAEumC,uBAAuB,IAAI,IAAIjjC,EAAEC,KAAK3E,OAAO+gB,QAAQ3f,EAAEumC,wBAAwB,CAAC,GAAa,iBAAHjjC,EAAY,MAAM,IAAI1C,MAAM,kDAAkD0C,KAAK,GAAa,iBAAHC,IAAcoD,OAAOy+B,UAAU7hC,IAAIA,EAAE,EAAE,MAAM,IAAI3C,MAAM,iEAAiE2C,KAAK,IAAIC,EAAEgjB,GAAGljB,EAAEvD,GAA2C,IAAxCR,EAAE8hB,6BAA6B1hB,EAAE6D,EAAED,IAAQmjB,GAAG,wCAAwCpjB,OAAOC,KAAK,CAAC,YAAiB,IAAVvD,EAAEulC,OAAgB9e,GAAGzmB,EAAEulC,MAAM,GAAG,IAAIC,SAAQ,CAACliC,EAAEC,KAAK,IAAIC,EAAEgjB,GAAGljB,EAAEvD,GAAG0D,EAAE+iB,GAAGjjB,EAAExD,GAAwC,IAArCR,EAAEgiB,0BAA0B5hB,EAAE6D,EAAEC,IAAQijB,GAAG,qCAAqCpjB,OAAOC,KAAI,IAAI,CAAC5D,EAAEI,EAAE,CAAC,MAAMgB,GAAG,MAAU,IAAJpB,GAAOJ,EAAEiiB,0BAA0B7hB,GAAGI,EAAEwd,SAAQjc,GAAG/B,EAAEwkB,MAAMziB,KAAIP,CAAC,EAAC,IAA6BylC,GAAGnnC,GAAE,KAAkB4nB,GAAG3nB,IAAI,OAAOA,GAAG,IAAI,OAAO,OAAO,EAAE,IAAI,QAAQ,OAAO,EAAE,IAAI,OAAO,OAAO,EAAE,IAAI,QAAQ,OAAO,EAAE,IAAI,SAAS,OAAO,EAAE,IAAI,QAAQ,OAAO,EAAE,IAAI,SAAS,OAAO,GAAG,IAAI,UAAU,OAAO,GAAG,IAAI,UAAU,OAAO,EAAE,IAAI,UAAU,OAAO,GAAG,IAAI,SAAS,OAAO,EAAE,IAAI,QAAQ,OAAO,EAAE,IAAI,SAAS,OAAO,GAAG,QAAQ,MAAM,IAAIsB,MAAM,0BAA0BtB,KAAI,EAAG4nB,GAAG5nB,IAAI,OAAOA,GAAG,KAAK,EAAE,MAAM,OAAO,KAAK,EAAE,MAAM,QAAQ,KAAK,EAAE,MAAM,OAAO,KAAK,EAAE,MAAM,QAAQ,KAAK,EAAE,MAAM,SAAS,KAAK,EAAE,MAAM,QAAQ,KAAK,GAAG,MAAM,SAAS,KAAK,GAAG,MAAM,UAAU,KAAK,EAAE,MAAM,UAAU,KAAK,GAAG,MAAM,UAAU,KAAK,EAAE,MAAM,SAAS,KAAK,EAAE,MAAM,QAAQ,KAAK,GAAG,MAAM,SAAS,QAAQ,MAAM,IAAIsB,MAAM,0BAA0BtB,KAAI,EAAG6nB,GAAG7nB,GAAG,MAAC,EAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,OAAE,EAAO,EAAE,EAAE,EAAE,EAAE,OAAE,OAAO,OAAO,GAAQA,GAAG8nB,GAAG9nB,IAAI,OAAOA,GAAG,IAAI,UAAyH,IAAI,SAAS,OAAO4G,YAAhH,IAAI,UAAU,OAAOzB,aAAa,IAAI,QAAkJ,IAAI,OAAO,OAAOuB,WAA1I,IAAI,OAAO,OAAOC,UAA0C,IAAI,QAAQ,OAAOE,WAAW,IAAI,QAAQ,OAAOC,WAAwC,IAAI,UAAU,OAAOC,aAAa,IAAI,SAAS,OAAOC,YAAY,IAAI,QAAQ,OAAOC,cAAc,IAAI,SAAS,OAAOE,eAAe,QAAQ,MAAM,IAAI7F,MAAM,qBAAqBtB,KAAI,EAAG+nB,GAAG/nB,IAAI,OAAOA,GAAG,IAAI,UAAU,OAAO,EAAE,IAAI,OAAO,OAAO,EAAE,IAAI,UAAU,OAAO,EAAE,IAAI,QAAQ,OAAO,EAAE,IAAI,QAAQ,OAAO,EAAE,QAAQ,MAAM,IAAIsB,MAAM,8BAA8BtB,KAAI,EAAGgoB,GAAGhoB,GAAO,YAAJA,GAAmB,UAAJA,GAAiB,UAAJA,GAAiB,SAAJA,GAAgB,YAAJA,GAAmB,WAAJA,EAAaqjB,GAAGrjB,IAAI,OAAOA,GAAG,IAAI,OAAO,OAAO,EAAE,IAAI,MAAM,OAAO,EAAE,IAAI,aAAa,OAAO,EAAE,IAAI,UAAU,OAAO,EAAE,IAAI,aAAa,OAAO,EAAE,QAAQ,MAAM,IAAIsB,MAAM,8BAA8BtB,KAAI,CAAC,IAAW2kB,GAAG5kB,GAAE,KAAkBkoB,GAAGrmB,UAAU,GAAa,iBAAH5B,EAAu4B,OAAOA,aAAaslC,KAAK,IAAI5+B,iBAAiB1G,EAAEyU,eAAezU,aAAa0G,WAAW1G,EAAE,IAAI0G,WAAW1G,GAAn+B,YAAUyQ,QAAQ,KAAKA,QAAQ9N,UAAU8N,QAAQ9N,SAAS+N,MAAyM,CAAC,IAAIzQ,QAAQoU,MAAMrU,GAAG,IAAIC,EAAEuU,GAAG,MAAM,IAAIlT,MAAM,sCAAsCtB,KAAK,IAAIK,EAAEJ,EAAEknC,QAAQ7mC,IAAI,kBAAkBG,EAAEJ,EAAE+mC,SAAS/mC,EAAE,IAAI,EAAE,GAAGI,EAAE,WAAW,OAAO,IAAIiG,iBAAiBzG,EAAEwU,eAAe,CAAC,IAAIxU,EAAEonC,KAAK,MAAM,IAAI/lC,MAAM,sCAAsCtB,wBAAwB,IAAyByB,EAArBf,EAAET,EAAEonC,KAAKC,YAAc,IAAI7lC,EAAE,IAAIoI,YAAYpJ,EAAE,CAAC,MAAMkD,GAAG,KAAGA,aAAa4D,YAAiG,MAAM5D,EAA5F,CAAC,IAAIH,EAAEiZ,KAAKmD,KAAKnf,EAAE,OAAOgB,EAAE,IAAI6Q,YAAYqrB,OAAO,CAACC,QAAQp6B,EAAEq6B,QAAQr6B,IAAIwN,MAAM,CAAa,CAAC,IAAIhP,EAAE,EAAE,OAAO,CAAC,IAAIulC,KAAK5jC,EAAE9C,MAAM2C,SAAS9C,EAAE8mC,OAAO,GAAG7jC,EAAE,MAAM,IAAIF,EAAED,EAAEuG,WAAW,IAAIrD,WAAWjF,EAAEO,EAAEyB,GAAGtC,IAAIqC,GAAGxB,GAAGyB,CAAC,CAAC,OAAO,IAAIiD,WAAWjF,EAAE,EAAEhB,EAAE,CAAC,CAAtzB,IAAI,OAAO,IAAIiG,sBAAgB,GAAS1G,GAAG,CAAC,MAAMC,GAAG,GAAY,0BAATA,EAAEwnC,KAA+B,CAAC,IAAIpnC,QAAE,GAASL,GAAGS,EAAE,GAAG,UAAU,IAAIC,KAAKL,EAAEI,EAAEkB,KAAKjB,GAAG,OAAO,IAAIgG,WAAWghC,OAAOC,OAAOlnC,GAAG,CAAC,MAAMR,CAAC,CAAsuB,CAAC,IAA6B2nC,GAAG7nC,GAAE,KAAkBmnC,KAAKhf,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAG,CAACnoB,EAAEC,KAAK+I,QAAQmJ,IAAI,IAAI+V,GAAGloB,OAAM,IAAIwb,MAAOqsB,iBAAiB5nC,IAAG,EAAGqoB,GAAG,CAACtoB,EAAEC,KAAKmoB,GAAGpoB,EAAEqoB,GAAGpoB,GAAGsoB,GAAG,CAACvoB,EAAEC,KAAK,IAAII,EAAE0nB,GAAG/nB,GAAYK,GAAP0nB,GAAGK,KAAUD,GAAG9nB,EAAY,mBAAHJ,EAAcA,IAAIA,EAAC,EAAGuoB,GAAG,IAAIxoB,KAAKqoB,IAAIE,MAAMvoB,EAAC,CAAC,IAAW8nC,GAAG/nC,GAAE,KAAkBmnC,KAAKze,GAAG,CAACzoB,EAAEC,IAAI,IAAI6nB,GAAG7nB,GAAP,CAAWD,EAAC,IAAQ+nC,GAAGhoC,GAAE,KAAK,IAAqCioC,GAAGjoC,GAAE,KAAkB6nC,KAAKG,KAAKrf,GAAG1oB,GAAmB,GAAhByc,KAAKmD,KAAK5f,EAAE,IAAO2oB,GAAG,EAAEC,GAAG,IAAID,KAAKvE,GAAGxiB,MAAM5B,EAAEC,EAAEI,EAAEI,KAAK,IAAIC,EAAEgoB,GAAGroB,GAAGoB,EAAEzB,EAAEioC,OAAOC,aAAa,CAAC//B,KAAKzH,EAAEynC,MAAMC,eAAeC,SAASD,eAAeE,WAAW,IAAI,IAAItmC,EAAEhC,EAAEuoC,oBAAoBvoC,EAAEwoC,iBAAiBxmC,EAAEymC,mBAAmBxoC,EAAE,EAAEwB,EAAE,EAAEf,GAAGV,EAAEwP,cAAc/N,EAAEinC,SAASC,WAAWC,MAAM,IAAIjlC,EAAElC,EAAEonC,iBAAiB,GAAGpoC,EAAE,CAAC,IAAI+C,EAAE/C,IAAI,OAAO+C,EAAErC,IAAI,IAAIuF,WAAW/C,EAAE,EAAEtD,IAAImD,CAAC,CAAM,OAAO,IAAIkD,WAAW/C,EAAEyN,MAAM,EAAE/Q,GAAG,CAAC,QAAQoB,EAAEqnC,SAAS,GAAGpkB,GAAG,MAAM,WAAAld,CAAYvH,GAAGwH,KAAKrG,QAAQnB,EAAEwH,KAAKshC,aAAa,IAAIhoC,IAAI0G,KAAKuhC,YAAY,IAAIjoC,IAAI0G,KAAKwhC,mBAAmB,IAAIloC,IAAI0G,KAAKyhC,2BAA2B,GAAGzhC,KAAK0hC,eAAe,GAAG1hC,KAAK2hC,gBAAgB,IAAIroC,GAAG,CAAC,MAAAsoC,CAAOppC,EAAEI,GAAG,IAAII,EAAEJ,EAAE2Q,OAAOtQ,EAAEL,EAAEipC,WAAW7nC,EAAEpB,EAAE0J,WAAW/H,EAAE0mB,GAAGjnB,GAAGkC,EAAE8D,KAAKshC,aAAazoC,IAAIL,GAAG,IAAI0D,EAAE,MAAM,IAAIrC,MAAM,yCAAyC,GAAGqC,EAAE4lC,eAAe9nC,EAAE,MAAM,IAAIH,MAAM,yCAAyCqC,EAAE4lC,2BAA2B9nC,KAAK,IAAI+B,EAAEiE,KAAKrG,QAAQ6mC,OAAOC,aAAa,CAACsB,kBAAiB,EAAGrhC,KAAKnG,EAAEmmC,MAAMC,eAAeqB,UAAUrB,eAAesB,WAAWjmC,EAAED,EAAEqlC,iBAAiB,IAAIniC,WAAWjD,GAAGtC,IAAI,IAAIuF,WAAWjG,EAAEC,EAAEe,IAAI+B,EAAEmmC,QAAQ,IAAI5lC,EAAE0D,KAAKrG,QAAQmnC,oBAAoB9gC,KAAKrG,QAAQonC,iBAAiBzkC,EAAE0kC,mBAAmBjlC,EAAE,EAAEG,EAAEimC,QAAQ54B,OAAO,EAAEhP,GAAGwmB,GAAG,WAAU,IAAI,qCAAqCvoB,OAAMwH,KAAKyhC,2BAA2BvnC,KAAK6B,EAAE,CAAC,MAAAqmC,CAAO5pC,EAAEI,GAAG,IAAII,EAAEgH,KAAKshC,aAAazoC,IAAIL,GAAG,IAAIQ,EAAE,MAAM,IAAIa,MAAM,6CAA6C,IAAIZ,EAAE+G,KAAKshC,aAAazoC,IAAID,GAAG,IAAIK,EAAE,MAAM,IAAIY,MAAM,kDAAkD,GAAGb,EAAE8oC,eAAe7oC,EAAE6oC,aAAa,MAAM,IAAIjoC,MAAM,qDAAqD,IAAIG,EAAEinB,GAAGjoB,EAAE8oC,cAAcvnC,EAAEyF,KAAKrG,QAAQmnC,oBAAoB9gC,KAAKrG,QAAQonC,iBAAiBxmC,EAAEymC,mBAAmBhoC,EAAEmpC,QAAQ54B,OAAO,EAAEtQ,EAAEkpC,QAAQ54B,OAAO,EAAEvP,EAAE,CAAC,sBAAAqoC,CAAuB7pC,EAAEI,EAAEI,GAAG,IAAIC,EAAE,GAAGD,EAAE,CAAC,GAAGC,EAAE+G,KAAK2hC,gBAAgB9oC,IAAIG,QAAO,IAAJC,EAAW,MAAM,IAAIY,MAAM,qCAAqC,GAAGrB,IAAIQ,EAAE,OAAO+nB,GAAG,WAAU,IAAI,uDAAuDnoB,YAAYK,iCAAgCA,EAAE+G,KAAK2hC,gBAAgBW,OAAOtpC,EAAE,MAAMC,EAAEkoB,KAAK,OAAOnhB,KAAKshC,aAAa5nC,IAAIT,EAAE,CAACkpC,QAAQ,CAAC7iB,GAAGrmB,EAAE2F,KAAK,EAAE2K,OAAO/Q,GAAGspC,aAAalpC,IAAIoH,KAAK2hC,gBAAgBjoC,IAAIlB,EAAES,GAAG8nB,GAAG,WAAU,IAAI,uDAAuDnoB,YAAYK,mBAAkBA,CAAC,CAAC,wBAAAspC,CAAyB/pC,GAAG,IAAII,EAAEoH,KAAK2hC,gBAAgB9oC,IAAIL,QAAO,IAAJI,IAAaoH,KAAKshC,aAAagB,OAAO1pC,GAAGoH,KAAK2hC,gBAAgBW,OAAO9pC,GAAGuoB,GAAG,WAAU,IAAI,4DAA4DnoB,MAAK,CAAC,MAAAuJ,CAAO3J,EAAEI,EAAE+nC,eAAe6B,QAAQ7B,eAAesB,SAAStB,eAAeC,UAAU,IAAY3nC,EAARD,EAAEioB,GAAGzoB,GAAKwB,GAAGpB,EAAE+nC,eAAe6B,WAAW7B,eAAe6B,QAAQjoC,GAAG3B,EAAE+nC,eAAe8B,WAAW9B,eAAe8B,QAAQ,GAAGzoC,GAAGO,EAAE,CAAC,IAAIwB,EAAE/B,EAAEgG,KAAKuhC,YAAYvhC,KAAKwhC,mBAAmBxlC,EAAED,EAAElD,IAAIG,GAAGgD,IAAIA,EAAE,GAAGD,EAAErC,IAAIV,EAAEgD,IAAe/C,EAAX+C,EAAE/B,OAAO,EAAI+B,EAAE8c,MAAQ9Y,KAAKrG,QAAQ6mC,OAAOC,aAAa,CAAC//B,KAAK1H,EAAE0nC,MAAM9nC,GAAG,MAAMK,EAAE+G,KAAKrG,QAAQ6mC,OAAOC,aAAa,CAAC//B,KAAK1H,EAAE0nC,MAAM9nC,IAAI,IAAIsD,EAAE,CAACojB,GAAG6B,KAAKviB,KAAK,EAAE2K,OAAOtQ,GAAG,OAAO+G,KAAKshC,aAAa5nC,IAAIwC,EAAEojB,GAAG,CAAC6iB,QAAQjmC,EAAE4lC,aAAatpC,IAAIuoB,GAAG,WAAU,IAAI,uCAAuCvoB,YAAY0D,EAAEojB,OAAMpjB,CAAC,CAAC,GAAArD,CAAIL,GAAG,OAAOwH,KAAKshC,aAAazoC,IAAIL,IAAI2pC,OAAO,CAAC,OAAAjgC,CAAQ1J,GAAG,IAAII,EAAEoH,KAAKshC,aAAazoC,IAAIL,GAAG,IAAII,EAAE,MAAM,IAAIiB,MAAM,iCAAiC,OAAOknB,GAAG,WAAU,IAAI,sCAAsCvoB,iBAAiBI,EAAEupC,QAAQ7iB,OAAMtf,KAAKshC,aAAagB,OAAO9pC,GAAGwH,KAAK0hC,eAAexnC,KAAKtB,EAAEupC,QAAQ54B,QAAQ3Q,EAAEkpC,YAAY,CAAC,cAAMrjC,CAASjG,EAAEI,GAAG,IAAII,EAAEgH,KAAKshC,aAAazoC,IAAIL,GAAG,IAAIQ,EAAE,MAAM,IAAIa,MAAM,6BAA6B8iB,GAAG3c,KAAKrG,QAAQX,EAAEmpC,QAAQ54B,OAAOvQ,EAAE8oC,aAAalpC,EAAE,CAAC,qBAAA8pC,GAAwB,IAAI,IAAIlqC,KAAKwH,KAAKyhC,2BAA2BjpC,EAAE6oC,UAAUrhC,KAAKyhC,2BAA2B,GAAG,IAAI,IAAIjpC,KAAKwH,KAAK0hC,gBAAgBlpC,EAAEkoC,MAAMC,eAAe6B,WAAW7B,eAAe6B,QAAQxiC,KAAKuhC,YAAY1oC,IAAIL,EAAEkI,MAAMxG,KAAK1B,IAAIA,EAAEkoC,MAAMC,eAAe8B,WAAW9B,eAAe8B,QAAQziC,KAAKwhC,mBAAmB3oC,IAAIL,EAAEkI,MAAMxG,KAAK1B,GAAGA,EAAE6oC,UAAUrhC,KAAK0hC,eAAe,EAAE,CAAC,OAAAhjC,GAAUsB,KAAKuhC,YAAY/qB,SAAQhe,IAAIA,EAAEge,SAAQ5d,IAAIA,EAAEyoC,SAAQ,GAAE,IAAIrhC,KAAKwhC,mBAAmBhrB,SAAQhe,IAAIA,EAAEge,SAAQ5d,IAAIA,EAAEyoC,SAAQ,GAAE,IAAIrhC,KAAKshC,aAAa9qB,SAAQhe,IAAIA,EAAE2pC,QAAQ54B,OAAO83B,SAAQ,IAAIrhC,KAAKshC,aAAa,IAAIhoC,IAAI0G,KAAKuhC,YAAY,IAAIjoC,IAAI0G,KAAKwhC,mBAAmB,IAAIloC,GAAG,GAAG8nB,GAAG,IAAI7oB,IAAI,IAAI0kB,MAAM1kB,EAAC,IAAcoqC,GAAGrqC,GAAE,KAAkB8iB,GAAG,MAAM,WAAArb,CAAYvH,GAAGX,OAAOgR,OAAO7I,KAAKxH,EAAE,CAAC,YAAIoqC,GAAW,OAAO5iC,KAAK6iC,MAAM7iC,KAAK6iC,IAAIhrC,OAAOK,oBAAoB8H,MAAM8iC,OAAOpoC,KAAIlC,GAAG,GAAGwH,KAAKxH,OAAMmC,KAAK,MAAMqF,KAAK6iC,GAAG,GAAGxhB,GAAG9oB,GAAG,IAAI6iB,GAAG7iB,EAAC,IAA4BwqC,GAAGzqC,GAAE,KAAkB6jB,GAAG,MAAM,sBAAO6mB,CAAgBxqC,EAAEI,GAAG,OAAOJ,EAAE,KAAKI,EAAE,QAAG,EAAO,CAACJ,EAAE,GAAGI,EAAE,GAAG,GAAG0oB,GAAG,MAAM,gBAAO2hB,CAAUzqC,EAAEI,EAAEI,GAAE,GAAI,IAAIC,EAAET,EAAEyB,OAAOD,EAAEpB,EAAEqB,OAAO,GAAO,IAAJhB,EAAM,OAAOL,EAAE,GAAO,IAAJoB,EAAM,OAAOxB,EAAE,IAAI+B,EAAEya,KAAKtH,IAAIlV,EAAEyB,OAAOrB,EAAEqB,QAAQiC,EAAE,IAAIqE,MAAMhG,GAAG,GAAGvB,EAAE,CAAC,GAAGC,EAAE,GAAGe,EAAE,EAAE,OAAO,IAAI+B,EAAEogB,GAAG6mB,gBAAgB,CAACxqC,EAAES,EAAE,GAAGT,EAAES,EAAE,IAAI,CAACL,EAAEoB,EAAE,GAAGpB,EAAEoB,EAAE,KAAK,QAAO,IAAJ+B,EAAW,QAAQG,EAAE3B,EAAE,GAAG2B,EAAE3B,EAAE,IAAIwB,CAAC,CAAC,IAAI,IAAIA,EAAE/C,EAAE,EAAE,EAAE+C,GAAGxB,EAAEwB,IAAI,CAAC,IAAIC,EAAE/C,EAAE8C,EAAE,EAAE,EAAEvD,EAAES,EAAE8C,GAAGO,EAAEtC,EAAE+B,EAAE,EAAE,EAAEnD,EAAEoB,EAAE+B,GAAG,GAAGC,IAAIM,GAAGN,EAAE,GAAGM,EAAE,EAAE,OAAOJ,EAAE3B,EAAEwB,GAAGiZ,KAAKtH,IAAI1R,EAAEM,EAAE,CAAC,OAAOJ,CAAC,CAAC,uBAAOgnC,CAAiB1qC,EAAEI,GAAG,IAAII,EAAER,EAAEyB,OAAOhB,EAAEL,EAAEqB,OAAO,GAAGjB,EAAEC,EAAE,OAAM,EAAG,IAAI,IAAIe,EAAE,EAAEA,GAAGhB,EAAEgB,IAAI,GAAY,IAATxB,EAAEQ,EAAEgB,IAAQxB,EAAEQ,EAAEgB,KAAKpB,EAAEK,EAAEe,GAAG,OAAM,EAAG,OAAM,CAAE,GAAG0gB,GAAE,MAAMniB,EAAE,WAAOmI,CAAKlI,GAAG,OAAOD,EAAE4qC,0BAA0B3qC,EAAE,EAAEA,EAAEyB,OAAO,CAAC,wBAAOmpC,CAAkB5qC,EAAEI,GAAG,GAAGA,EAAE,GAAGA,EAAEJ,EAAEyB,OAAO,MAAM,IAAIJ,MAAM,wBAAwBjB,yCAAyCJ,EAAEyB,sBAAsB,OAAO1B,EAAE4qC,0BAA0B3qC,EAAEI,EAAEJ,EAAEyB,OAAO,CAAC,sBAAOopC,CAAgB7qC,EAAEI,GAAG,GAAGA,EAAE,GAAGA,EAAEJ,EAAEyB,OAAO,MAAM,IAAIJ,MAAM,wBAAwBjB,uCAAuCJ,EAAEyB,sBAAsB,OAAO1B,EAAE4qC,0BAA0B3qC,EAAE,EAAEI,EAAE,CAAC,gCAAOuqC,CAA0B3qC,EAAEI,EAAEI,GAAG,IAAIC,EAAE,EAAE,IAAI,IAAIe,EAAEpB,EAAEoB,EAAEhB,EAAEgB,IAAI,CAAC,GAAGxB,EAAEwB,GAAG,EAAE,MAAM,IAAIH,MAAM,iHAAiHZ,GAAGT,EAAEwB,EAAE,CAAC,OAAOf,CAAC,CAAC,qBAAOqqC,CAAe9qC,GAAG,IAAII,EAAEJ,EAAEyB,OAAO,GAAO,IAAJrB,EAAM,MAAM,GAAG,GAAO,IAAJA,EAAM,MAAM,CAAC,GAAG,IAAII,EAAE,IAAIuH,MAAM3H,GAAGI,EAAEJ,EAAE,GAAG,EAAEI,EAAEJ,EAAE,GAAGJ,EAAEI,EAAE,GAAG,IAAI,IAAIK,EAAEL,EAAE,EAAEK,GAAG,IAAIA,EAAED,EAAEC,GAAGD,EAAEC,EAAE,GAAGT,EAAES,EAAE,GAAG,OAAOD,CAAC,CAAC,oBAAOuqC,CAAc/qC,EAAEI,GAAG,GAAGJ,GAAGI,GAAGJ,GAAGI,EAAE,MAAM,IAAIiB,MAAM,wCAAwC,OAAOrB,EAAE,EAAEA,EAAEI,EAAEJ,CAAC,CAAC,oBAAOgrC,CAAchrC,EAAEI,GAAG,OAAOJ,EAAEkC,KAAI1B,GAAGgH,KAAKujC,cAAcvqC,EAAEJ,GAAGJ,EAAEyB,SAAQ,CAAC,sBAAOwpC,CAAgBjrC,EAAEI,GAAG,OAAOA,EAAEA,EAAE8B,KAAI1B,GAAGR,EAAEQ,KAAIR,EAAEmR,QAAQ6G,SAAS,CAAC,eAAOkzB,CAASlrC,EAAEI,GAAG,IAAII,EAAER,EAAEyB,OAAO,OAAOzB,EAAEkC,KAAI,CAACzB,EAAEe,IAAIf,EAAEL,EAAEoB,GAAGpB,EAAEoB,EAAEhB,IAAG,CAAC,eAAO2qC,CAASnrC,EAAEI,GAAG,OAAOJ,EAAEyB,SAASrB,EAAEqB,QAAUzB,EAAEorC,OAAM,CAAC5qC,EAAEC,IAAID,IAAIJ,EAAEK,IAAG,GAAGsoB,GAAG,MAAMhpB,EAAE,2BAAOsrC,CAAqBrrC,EAAEI,EAAEI,EAAEC,EAAEe,EAAEO,GAAG,IAAI/B,GAAGQ,EAAEiB,SAASrB,EAAEqB,OAAO,EAAE,MAAM,IAAIJ,MAAM,sFAAsF,GAAGrB,EAAE,IAAI,IAAI0D,EAAE,EAAEA,EAAEtD,EAAEqB,OAAO,EAAEiC,IAAIA,GAAGlD,EAAEiB,OAAOjB,EAAEkB,KAAKtB,EAAEsD,EAAE,IAAIlD,EAAEkD,GAAGtD,EAAEsD,EAAE,GAAG,IAAI,IAAIA,EAAE,EAAEA,EAAElD,EAAEiB,OAAOiC,IAAI,GAAGA,EAAEjD,EAAEgB,QAAQ,GAAGhB,EAAEiD,GAAG,EAAE,MAAM,IAAIrC,MAAM,qDAAqDZ,EAAEiB,KAAK,GAAG,IAAI,IAAIgC,EAAE,EAAEA,EAAElD,EAAEiB,OAAOiC,IAAI,GAAGA,EAAElC,EAAEC,QAAQ,GAAGD,EAAEkC,GAAG,EAAE,MAAM,IAAIrC,MAAM,uDAAuDG,EAAEE,KAAK,GAAG,IAAI,IAAIgC,EAAE,EAAEA,EAAW,EAATlD,EAAEiB,OAASiC,IAAI,GAAGA,EAAE3B,EAAEN,QAAQ,GAAGM,EAAE2B,GAAG,EAAE,MAAM,IAAIrC,MAAM,iDAAiDU,EAAEL,KAAK,GAAG,IAAI,IAAIgC,EAAE,EAAEA,EAAElD,EAAEiB,OAAOiC,IAAI,CAAC,GAAGlD,EAAEkD,IAAI,EAAE,MAAM,IAAIrC,MAAM,2CAA2C,GAAGU,EAAE2B,IAAIlD,EAAEkD,IAAI3B,EAAE2B,EAAElD,EAAEiB,SAASjB,EAAEkD,GAAG,MAAM,IAAIrC,MAAM,qCAAqC,CAAC,CAAC,+BAAOiqC,CAAyBtrC,EAAEI,EAAEI,EAAEC,EAAEe,EAAEO,EAAE2B,GAAG,GAAGA,EAAE,CAAC,GAAGlC,EAAEC,SAAS,GAAGzB,EAAEyB,OAAO,GAAG,MAAM,IAAIJ,MAAM,gEAAgE,GAAGjB,EAAEqB,SAASzB,EAAEyB,OAAO,EAAE,MAAM,IAAIJ,MAAM,6DAA6D,GAAGZ,EAAEgB,SAASzB,EAAEyB,OAAO,EAAE,MAAM,IAAIJ,MAAM,mEAAmE,IAAI,IAAIkC,EAAE,EAAEA,EAAEvD,EAAEyB,OAAO,EAAE8B,IAAIxD,EAAEwrC,wBAAwBvrC,EAAEuD,GAAGxB,EAAE,EAAE,IAAI3B,EAAEmD,GAAG/C,EAAE+C,GAAG9C,EAAE8C,GAAG/B,EAAE+B,EAAEA,EAAEvD,EAAEyB,OAAO,EAAEiC,EAAE,CAAC,CAAC,6BAAO8nC,CAAuBxrC,EAAEI,EAAEI,EAAEC,EAAEe,EAAEO,EAAE2B,GAAG,GAAGtD,EAAEqB,QAAQ,EAAE,MAAM,IAAIJ,MAAM,8CAA8C,IAAIkC,EAAE,CAACnD,EAAE,GAAGA,EAAE,IAAI,OAAOL,EAAE0rC,mBAAmBzrC,EAAEI,EAAEmD,EAAE/C,EAAEC,EAAEe,EAAEO,EAAE2B,GAAGH,CAAC,CAAC,6BAAOmoC,CAAuB1rC,EAAEI,EAAEI,EAAEC,EAAEe,EAAEO,EAAE2B,GAAG,GAAG1D,EAAEyB,QAAQ,GAAGrB,EAAEqB,QAAQ,EAAE,MAAM,IAAIJ,MAAM,2DAA2D,IAAIkC,EAAE,CAACvD,EAAE,GAAGI,EAAE,IAAI,OAAOL,EAAE0rC,oBAAmB,EAAGzrC,EAAEuD,EAAE/C,EAAEC,EAAEe,EAAEO,EAAE2B,GAAGH,CAAC,CAAC,yBAAOkoC,CAAmBzrC,EAAEI,EAAEI,EAAEC,EAAEe,EAAEO,EAAE2B,EAAEH,GAAG,GAAGvD,EAAE,IAAI,IAAIwD,EAAE,EAAEA,EAAEpD,EAAEqB,OAAO,EAAE+B,IAAIhD,EAAEkB,KAAK,QAAQ,IAAI,IAAI8B,EAAE,EAAEA,EAAEpD,EAAEqB,OAAO,EAAE+B,IAAIhD,EAAEkB,KAAK3B,EAAEwrC,wBAAwBnrC,EAAEoD,EAAE,GAAG/C,EAAE+C,GAAGhC,EAAEgC,GAAGzB,EAAEyB,GAAGE,EAAEF,EAAEA,EAAEpD,EAAEqB,OAAO,EAAE8B,GAAG,CAAC,8BAAOgoC,CAAwBvrC,EAAEI,EAAEI,EAAEC,EAAEe,EAAEO,EAAE2B,EAAEH,GAAG,IAAIC,EAAEhD,GAAGC,EAAE,GAAG,EAAE,IAAG8C,GAAO,WAAJA,EAA6W,OAAOiZ,KAAKC,OAAOzc,EAAEwB,EAAEO,GAAGP,EAAEkC,GAAGF,GAAGpD,EAAE,GAApY,OAAOmD,GAAG,IAAI,QAAQ,OAAO/B,EAAEO,GAAG,EAAEP,EAAEkC,GAAG,EAAE8Y,KAAKC,OAAOzc,EAAEwD,GAAGpD,EAAE,GAAG,IAAI,aAAa,IAAI,aAAa,GAAO,IAAJI,EAAM,MAAM,IAAIa,MAAM,uDAAuD,CAAC,IAAI0C,IAAI/D,EAAEI,EAAE,GAAGA,EAAE,GAAGA,EAAEK,EAAET,EAAE,OAAOwB,EAAEO,GAAGya,KAAKC,MAAU,eAAJlZ,GAAkBQ,EAAE,GAAG,EAAEA,EAAE,GAAGvC,EAAEkC,GAAGK,EAAEvC,EAAEO,GAAGya,KAAKC,OAAOzc,EAAE+D,EAAEtD,GAAGL,EAAE,EAAE,CAAC,QAAQ,MAAM,IAAIiB,MAAM,4BAAuE,GAAG2nB,GAAG,MAAM,2BAAO2iB,CAAqB3rC,EAAEI,EAAEI,EAAEC,EAAEe,GAAG,GAAc,IAAXxB,EAAEyB,QAAuB,IAAXjB,EAAEiB,OAAW,MAAM,IAAIJ,MAAM,8BAA8B,IAAIU,EAAE2B,EAAEH,EAAEnD,GAAG2B,EAAE/B,EAAE,GAAG0D,EAAE1D,EAAE,KAAK+B,EAAE/B,EAAE,GAAG0D,EAAE1D,EAAE,IAAI,IAAIwD,GAAG,EAAE,GAAG/C,GAAG8C,EAAE/C,EAAE,GAAGgD,EAAE,IAAID,EAAE/C,EAAE,GAAGgD,EAAE,GAAGhD,EAAEgD,KAAKE,EAAE,MAAM,IAAIrC,MAAM,sBAAsB,GAAGU,GAAG,GAAGwB,GAAG,GAAGG,GAAG,EAAE,MAAM,IAAIrC,MAAM,2BAA2B,GAAGG,IAAIsnB,GAAG4hB,iBAAiBlpC,EAAE,CAACO,EAAEwB,IAAI,MAAM,IAAIlC,MAAM,0CAA0C,MAAM,CAACU,EAAEwB,EAAEG,EAAE,GAAGulB,IAAI,qBAAqBC,GAAG,wBAA8E0iB,GAAG9rC,GAAE,KAAkBmnC,KAAKsD,KAAQ,GAAGj8B,GAAG,CAACvO,EAAEC,KAAK,GAAO,IAAJA,EAAM,MAAM,IAAIqB,MAAM,qDAAqD,OAAOtB,GAAG,KAAK,GAAG,OAAOC,EAAE,EAAE,MAAMA,SAAS,MAAM,KAAK,EAAE,OAAOA,EAAE,EAAE,MAAMA,SAAS,MAAM,KAAK,EAAE,OAAOA,EAAE,EAAE,MAAMA,SAAS,MAAM,KAAK,GAAG,OAAOA,EAAE,EAAE,MAAMA,SAAS,MAAM,KAAK,EAAE,GAAGA,EAAE,EAAE,MAAM,IAAIqB,MAAM,8CAA8C,MAAM,CAAC,YAAY,OAAO,KAAK,GAAG,GAAGrB,EAAE,EAAE,MAAM,IAAIqB,MAAM,8CAA8C,MAAM,CAAC,YAAY,OAAO,KAAK,EAAE,GAAO,IAAJrB,EAAM,MAAM,IAAIqB,MAAM,qBAAqB,MAAM,CAAC,MAAM,cAAc,QAAQ,MAAM,IAAIA,MAAM,sBAAsBtB,KAAI,EAAGopB,GAAG,CAACppB,EAAEC,EAAE,KAAK,IAAII,EAAEkO,GAAGvO,EAAEC,GAAG,MAAiB,iBAAHI,EAAYA,EAAEA,EAAE,EAAC,EAAGgpB,GAAG,CAACrpB,EAAEC,EAAE,KAAK,IAAII,EAAEkO,GAAGvO,EAAEC,GAAG,MAAiB,iBAAHI,EAAYA,EAAEA,EAAE,EAAC,EAAGie,GAAEte,GAAc,IAAXA,EAAE0B,OAAW,GAAG,CAAC,CAAC2E,KAAK,SAAS9B,KAAKvE,GAAG,CAACqG,KAAK,SAAS9B,KAAK4d,GAAE4oB,eAAe/qC,KAAKspB,GAAGtpB,GAAGA,EAAE,GAAI,EAAE,EAAEA,EAAE,GAAI,EAAE,EAAE,EAAEupB,GAAG,CAACvpB,EAAE,MAAMC,EAAEI,EAAE,MAAOJ,GAAO,IAAJA,EAAmB,MAAMA,KAAKD,MAAMK,KAA9B,GAAGL,KAAKK,KAA2BmpB,GAAG,CAACxpB,EAAEC,EAAEI,IAAQ,QAAJL,EAAUK,EAAM,IAAJJ,EAAM,OAAOI,KAAK,MAAMJ,MAAMI,KAAKopB,GAAG,CAACzpB,EAAEC,IAAQ,IAAJA,EAAM,IAAID,SAASA,SAASA,SAASA,OAAW,IAAJC,EAAM,IAAID,SAASA,OAAW,IAAJC,EAAM,IAAID,SAASA,SAASA,OAAOA,EAAE0pB,GAAG,CAAC1pB,EAAEC,EAAEI,IAAIL,EAAEgU,WAAW,cAAc3T,EAAE,EAAY,iBAAHJ,EAAY,GAAGD,MAAMC,YAAYA,UAAU,GAAGD,KAAKyc,KAAKC,MAAMzc,EAAE,OAAOA,EAAE,KAAKI,EAAE,EAAE,GAAGL,KAAKC,KAAKD,EAAE8gB,GAAG,CAAC9gB,EAAEC,EAAEI,EAAEI,EAAEC,KAAK,IAAIe,EAAY,iBAAHpB,EAAY2B,EAAEP,EAAEpB,EAAEA,EAAEqB,OAAOiC,EAAE,IAAI,IAAIqE,MAAMhG,GAAG8pC,QAAQtoC,EAAExB,EAAE,EAAE,MAAMA,GAAG,EAAE,MAAMA,SAAS,cAAcA,KAAKyB,EAAE8K,GAAGtO,EAAES,GAAGqD,EAAY,iBAAHN,EAAYA,EAAEA,EAAE,GAAGO,EAAY,iBAAHP,EAAYA,EAAEA,EAAE,GAAGQ,EAAE,CAAC8nC,QAAQvoC,EAAE3C,MAAMkD,EAAEioC,QAAQhoC,EAAEioC,OAAOhsC,GAAGiE,EAAEiQ,GAAa,iBAAHA,EAAYA,EAAE,GAAGA,KAAKhQ,EAAE,CAAC+nC,iBAAgB,EAAGC,iBAAgB,EAAGC,4BAA2B,EAAGjrC,KAAI,EAAGkrC,cAAa,EAAG/rC,KAAI,EAAGgsC,cAAa,GAAIloC,EAAE3C,EAAE,YAAY,GAAG4C,EAAE,GAAGD,IAAIpE,UAAUsE,EAAE,GAAGF,IAAIpE,YAAYwE,EAAE,GAAG,IAAI,IAAI2P,EAAE,EAAEA,EAAEnS,EAAE,EAAEmS,IAAI3P,GAAG,gBACx/iC2P,iBAAiBuV,GAAGplB,EAAE6P,EAAEnS,oBACvBmS,iBAAiBuV,GAAGplB,EAAE6P,EAAEnS,oBACxBmS,WAAWA,yBACLA,WACd3P,GAAG,WAAWxC,EAAE,gBAAgB,IAAIyC,EAAEzC,EAAE,EAAE,GAAG,cACxChC,qBAAqBiE,EAAE8nC,+BACf9nC,EAAE8nC,4CAEfvnC,8BAEkDO,EAAE,GAAG,GAAG/C,GAAG,EAAE,IAAI,IAAImS,EAAEnS,EAAE,EAAEmS,GAAG,EAAEA,IAAIpP,EAAEpD,KAAK,GAAG+nB,GAAGplB,EAAE6P,EAAEnS,iBAAiBmS,OAAO,IAAI3B,EAAExQ,EAAE,EAAE,GAAG,cACvIhC,cAAciE,EAAE8nC,iCACdhnC,EAAE3C,KAAK,aACoCsQ,EAAE,IAAIyB,IAAQ,IAAJnS,EAAM,KAAK,GAAGiC,EAAE8nC,WAAW53B,EAAEhS,IAAI+B,GAAG9B,KAAK,QAAQuQ,EAAE,CAACwB,EAAEQ,IAAK3S,EAAE,EAAE,GAAGmS,IAAI,GAAGuV,GAAGvV,EAAEQ,EAAG3S,KAA4D6Q,EAAE,CAAC,EAErLU,EAAE,CAACY,EAAEQ,IAAK,MAAM,GAAG1Q,EAAE+nC,UAAU/nC,EAAEpD,MAAM,MAAM,GAAGb,KAAKmU,MAAMQ,KAAM,GAAe,cAAZ1Q,EAAE+nC,SAAiC,QAAV/nC,EAAEpD,MAAc,MAAM,GAAGb,KAAKmU,oBAAoBQ,+BAAgCA,WAAY,GAAe,cAAZ1Q,EAAE+nC,SAAiC,QAAV/nC,EAAEpD,MAAc,MAAM,GAAGb,KAAKmU,oBAAoBQ,WAAY,GAAe,QAAZ1Q,EAAE+nC,SAA2B,eAAV/nC,EAAEpD,MAAqB,MAAM,GAAGb,KAAKmU,+DAA+DQ,OAAQ,MAAM,IAAIrT,MAAM,6CAA6C2C,EAAE+nC,0BAA0B/nC,EAAEpD,YAAa,EAArf,GAAyf2S,EAAEW,GAAG,MAAM,GAAGlQ,EAAE+nC,UAAU/nC,EAAEpD,MAAM,MAAM,GAAGb,KAAKmU,KAAK,GAAe,cAAZlQ,EAAE+nC,SAAiC,QAAV/nC,EAAEpD,MAAc,MAAM,OAAOb,KAAKmU,QAAQ,GAAe,cAAZlQ,EAAE+nC,SAAiC,QAAV/nC,EAAEpD,MAAc,MAAM,OAAOb,KAAKmU,QAAQ,GAAe,QAAZlQ,EAAE+nC,SAA2B,eAAV/nC,EAAEpD,MAAqB,MAAM,mBAAmBb,KAAKmU,qBAAqBnU,KAAKmU,uBAAuBnU,KAAKmU,yBAAyBnU,KAAKmU,qBAAqB,MAAM,IAAI7S,MAAM,6CAA6C2C,EAAE+nC,0BAA0B/nC,EAAEpD,YAAa,EAAxd,GAA4d4S,EAAGzR,EAAE,EAAE,GAAG,cAChgChC,uBAAuBiE,EAAE8nC,eAAehoC,mBACtCyP,EAAE,OAAOxT,sBACjB0T,EAAG1R,EAAE,EAAE,GAAG,MAAM,IAAImS,EAAExQ,EAAExB,KAAIiS,GAAI,IAAIA,WAAWhS,KAAK,MAAMuS,EAAGhR,EAAExB,KAAIiS,GAAI,IAAIA,MAAMhS,KAAK,MAAM,MAAM,cAC5FpC,KAAKmU,SAASpQ,uBACR/D,cAAc0S,EAAEiC,WAC5B,EAHU,GAG0RpC,EAAGvQ,EAAE,EAAE,GAAG,cACxShC,uBAAuBiE,EAAE8nC,mBAAmBhoC,aACjDwP,EAAE,OAAOvT,aAAa,gBACvB+T,EAAG/R,EAAE,EAAE,GAAG,MAAM,IAAImS,EAAExQ,EAAExB,KAAIiS,GAAI,IAAIA,WAAWhS,KAAK,MAAMuS,EAAGhR,EAAExB,KAAIiS,GAAI,IAAIA,MAAMhS,KAAK,MAAM,MAAM,cAC5FpC,KAAKmU,aAAapQ,iBACnB/D,cAAc0S,EAAEiC,kBACrB,EAHU,GAGN,MAAM,CAAC43B,KAAK,KAAK,IAAIp4B,EAAE,GAAGQ,GAAG,EAAG,OAAOxQ,EAAE+nC,kBAAkB/3B,EAAExS,KAAK8C,GAAGkQ,GAAG,GAAIxQ,EAAEgoC,kBAAkBh4B,EAAExS,KAAK6Q,GAAGmC,GAAG,GAAIxQ,EAAEioC,6BAA6B9sC,OAAOktC,OAAO35B,GAAGoL,SAAQ7J,GAAID,EAAExS,KAAKyS,KAAKO,GAAG,GAAIxQ,EAAEhD,MAAMgT,EAAExS,KAAKoS,GAAIY,GAAG,GAAIxQ,EAAEkoC,eAAel4B,EAAExS,KAAK4Q,GAAIoC,GAAG,GAAIxQ,EAAE7D,MAAM6T,EAAExS,KAAK+R,GAAIiB,GAAG,GAAIxQ,EAAEmoC,eAAen4B,EAAExS,KAAK8R,GAAIkB,GAAG,IAAKlT,GAAGkT,GAAIR,EAAE+M,QAAQ,SAAS7c,OAAOJ,EAAE8nC,WAAW1rC,EAAE+B,KAAK,SAAS,SAASkC,OAAOL,EAAE8nC,WAAW5pB,GAAE4oB,eAAe1qC,GAAG+B,KAAK,UAAU+R,EAAE/R,KAAK,KACxc,EAAGiE,KAAKpC,EAAEioC,gBAlBJ/3B,IAAIhQ,EAAE+nC,iBAAgB,EAAGlqC,EAAE,EAAEmS,EAAE,OAAOnU,KAAKmU,MAkBrBg4B,gBAftBh4B,IAAIhQ,EAAEgoC,iBAAgB,EAAGnqC,EAAE,EAAEmS,EAAE,OAAOnU,KAAKmU,MAeHi4B,2BAfuK,CAACj4B,EAAEQ,KAAMxQ,EAAEioC,4BAA2B,EAAG,IAAIh4B,EAAG,GAAGO,EAAG1S,2BAA2BjC,UAAU,GAAGoU,KAAMvB,EAAE,MAAM,GAAGuB,KAAMD,KAAK,IAAImN,EAAG,GAAG,IAAI,IAAIzM,EAAG7S,EAAE,EAAE6S,GAAI,EAAEA,IAAK,CAAC,IAAIC,EAAGH,EAAG83B,WAAW,gBAAgB53B,EAAGF,EAAG+3B,KAAK1qC,GAAGsf,EAAG3f,KAAK,GAAGgR,EAAErO,EAAEuQ,SAAUC,OAAQnC,EAAEtO,EAAEwQ,MAAO,CAAC,OAAOhC,EAAEuB,GAAI,MAAMA,oBAAqBO,EAAGtO,KAAK0lC,0CAC/ezqB,EAAG5f,OAAO,EAAE4f,EAAGlf,KAAK,KAAK,sBACjC,GAAGgS,KAAMD,IAAC,EAaoD43B,QAAQr5B,EAAE+5B,WAAW95B,EAAEg6B,WAfwD,CAACx4B,EAAEQ,EAAGP,IAAKpS,EAAE,EAAE,GAAGmS,KAAKC,KAAM,GAAGsV,GAAGvV,EAAEQ,EAAG3S,MAAMoS,KAexFjT,IAAI,IAAIgT,KAAK,GAAGA,EAAEzS,SAASM,EAAE,EAAE,MAAM,IAAIV,MAAM,0BAA0BU,KAAK,IAAI2S,EAAGR,EAAEnS,GAAG,GAAc,iBAAJ2S,EAAa,MAAM,IAAIrT,MAAM,wBAAwB,IAAI8S,EAAGD,EAAE/C,MAAM,EAAEpP,GAAGG,IAAI+B,GAAG9B,KAAK,KAAK,OAAW,IAAJJ,EAAMuR,EAAE,KAAKoB,GAAQ,IAAJ3S,EAAMuR,EAAEa,EAAG,GAAGO,IAAKxQ,EAAEhD,KAAI,EAAGgD,EAAEkoC,cAAa,EAAGloC,EAAEgoC,iBAAgB,EAAG,OAAOnsC,KAAKoU,MAAOO,KAAK,EAAGi4B,YAAYr5B,EAAE84B,aAAa,CAACl4B,EAAEQ,IAAK3S,EAAE,EAAEuR,EAAEY,EAAEQ,IAAKxQ,EAAEkoC,cAAa,EAAGloC,EAAEgoC,iBAAgB,EAAG,OAAOnsC,cAAcmU,MAAMQ,OAAQrU,IAPnhB,IAAI6T,KAAK,GAAGA,EAAEzS,SAASM,EAAE,MAAM,IAAIV,MAAM,0BAA0BU,KAAK,IAAI2S,EAAGR,EAAEhS,IAAI+B,GAAG9B,KAAK,KAAK,OAAW,IAAJJ,EAAMwR,EAAE,MAAU,IAAJxR,EAAMwR,EAAEmB,EAAG,KAAKxQ,EAAE7D,KAAI,EAAG6D,EAAEmoC,cAAa,EAAGnoC,EAAEgoC,iBAAgB,EAAG,OAAOnsC,KAAK2U,KAAK,EAOkVk4B,YAAYr5B,EAAE84B,aAP1Vn4B,GAAGnS,EAAE,EAAEwR,EAAEW,IAAIhQ,EAAEmoC,cAAa,EAAGnoC,EAAEgoC,iBAAgB,EAAG,OAAOnsC,cAAcmU,MAOiSg0B,MAAM1nC,EAAEwB,KAAKjC,EAAE+V,QAAQzR,EAAEwoC,MAAMzoC,EAAEqoC,KAAK1qC,EAAC,EAAGif,GAAE,CAACjhB,EAAEC,EAAEI,EAAEI,EAAE,IAAIqgB,GAAG9gB,EAAEC,EAAEI,EAAE,QAAQI,GAAG+d,GAAE,CAACxe,EAAEC,EAAEI,EAAEI,EAAE,IAAIqgB,GAAG9gB,EAAEC,EAAEI,EAAE,SAASI,GAAGkpB,GAAG,CAAC3pB,EAAEC,EAAEI,EAAEI,EAAE,IAAIqgB,GAAG9gB,EAAEC,EAAEI,EAAE,WAAWI,GAAG6jB,GAAG,MAAM,WAAA9c,CAAYvH,GAAGwH,KAAKslC,wBAAwB9sC,EAAEwH,KAAKulC,kBAAkB,GAAGvlC,KAAKwlC,UAAU,GAAGxlC,KAAKylC,SAAS,GAAGzlC,KAAK0lC,cAAc,CAAC,CAAC,qCAAAC,CAAsCntC,GAAG,MAAM,qBAA+B,iBAAHA,EAAY,GAAGA,KAAKA,gBAAgB,CAAC,SAAAotC,CAAUptC,EA7B039B,IA6Bp39B,IAAII,EAAY,iBAAHJ,EAAYA,EAAEA,EAAE,GAAGQ,EAAY,iBAAHR,EAAY,EAAEA,EAAE,GAAGS,EAAY,iBAAHT,EAAY,EAAEA,EAAE,GAAGwB,EAAoC,IAAlCgG,KAAKslC,wBAAwB,IAA0C,IAAlCtlC,KAAKslC,wBAAwB,GAMxiC,MAAM,4BAA4B1sC,MAAMI,MAAMC,iBANmgCe,EAAE,sKAEplC,uOAGGA,EAAE,4DAA4D,gJACtDpB,EAAEI,EAAEC,uBAGpE,CAAC,sBAAA4sC,CAAuBrtC,GAAY,IAATA,EAAEysC,OAAWzsC,EAAE6sC,MAAM94B,WAAW,cAAcvM,KAAKylC,SAASvrC,KAAK,CAACM,KAAKhC,EAAE6sC,MAAM37B,QAAQ,YAAY,IAAI9K,KAAK,MAAM3E,OAAOzB,EAAEysC,OAAOzsC,EAAE8V,QAAQ/B,WAAW,cAAcvM,KAAKylC,SAASvrC,KAAK,CAACM,KAAKhC,EAAE8V,QAAQ5E,QAAQ,YAAY,IAAI9K,KAAK,MAAM3E,OAAOzB,EAAEysC,OAAO,CAAC,eAAAa,CAAgBttC,EAAEI,GAAG,GAAa,aAAVJ,EAAEkoC,MAAmB,MAAM,IAAI7mC,MAAM,iGAAiGmG,KAAKwlC,UAAUtrC,KAAK1B,GAAGwH,KAAK6lC,uBAAuBrtC,GAAG,IAAIQ,EAAY,UAAVR,EAAEkoC,MAAgB,OAAO,aAAaznC,EAAET,EAAEoG,KAAK2lC,QAAQ,MAAM,sBAAsB3rC,mBAAmBI,MAAMR,EAAEgC,eAAevB,KAAK,CAAC,gBAAA8sC,IAAoBvtC,GAAG,OAAOA,EAAEkC,KAAI9B,GAAGoH,KAAK8lC,gBAAgBltC,EAAEoH,KAAK0lC,mBAAkB/qC,KAAK,KAC/sB,CAAC,wBAAAqrC,CAAyBxtC,GAAG,GAAa,aAAVA,EAAEkoC,MAAmB,MAAM,IAAI7mC,MAAM,wGAAwGmG,KAAKulC,kBAAkBrrC,KAAK1B,GAAGwH,KAAK6lC,uBAAuBrtC,EAAE,CAAC,yBAAAytC,IAA6BztC,GAAG,OAAOA,EAAEge,SAAQ5d,GAAGoH,KAAKgmC,yBAAyBptC,KAAIoH,IAAI,CAAC,eAAAkmC,CAAgB1tC,EAAEI,EAAEI,EAAE,GAAG,OAAOgH,KAAKylC,SAASvrC,KAAK,CAACM,KAAKhC,EAAEoG,KAAKhG,EAAEqB,OAAOjB,IAAIgH,IAAI,CAAC,gBAAAmmC,CAAiB3tC,GAAG,OAAOwH,KAAKylC,SAASzlC,KAAKylC,SAASvF,OAAO1nC,GAAGwH,IAAI,CAAC,kBAAAomC,GAAqB,GAA0B,IAAvBpmC,KAAKylC,SAASxrC,OAAW,MAAM,GAAG,IAAIzB,EAAE,GAAG,IAAI,IAAIgC,KAAK5B,EAAEgG,KAAK5F,EAAEiB,OAAOhB,KAAK+G,KAAKylC,SAAS,GAAGxsC,GAAGA,EAAE,EAAET,EAAE0B,KAAK,GAAGtB,gBAAgBI,OAAOgc,KAAKmD,KAAKlf,EAAE,WAAW,CAAC,IAAIe,EAAK,MAAHf,GAAa,IAAJA,EAAMD,EAAE,MAAMC,KAAKD,KAAKR,EAAE0B,KAAK,GAAGtB,KAAKoB,IAAI,CAAC,MAAM,6BAC7rBxB,EAAEmC,KAAK,sCACNqF,KAAK0lC,iDAAiD,CAAC,6BAAIW,GAA4B,OAAOrmC,KAAKomC,qBAAqBpmC,KAAKwlC,UAAU9qC,KAAIlC,GAAGA,EAAEssC,SAAQnqC,KAAK,MACrLqF,KAAKulC,kBAAkB7qC,KAAIlC,GAAGA,EAAEssC,SAAQnqC,KAAK,KAC9C,GAAGwnB,GAAG5pB,GAAG,IAAIskB,GAAGtkB,GAAG6pB,GAAG,CAAC7pB,EAAEC,KAAK,IAAII,EAAEL,EAAE0B,OAAOjB,EAAE,GAAG,IAAI,IAAIC,EAAE,EAAEA,EAAEL,EAAEK,IAAI,CAAC,IAAIe,EAAEpB,EAAE,EAAEK,EAAEsB,EAAEhC,EAAEyB,IAAI,GAAGxB,EAAEA,EAAEyB,OAAO,EAAEhB,IAAI,GAAG,GAAO,IAAJsB,GAAOvB,EAAEygB,QAAQzf,EAAE,CAAC,OAAOhB,GAAGqpB,GAAG9pB,IAAG,CAAC,IAA6B+tC,GAAGhuC,GAAE,KAAkByqC,KAAKJ,KAAKyB,KAAK9hB,GAAG/pB,IAAI,IAAIA,GAAc,IAAXA,EAAE0B,OAAW,MAAM,IAAIJ,MAAM,8BAA6B,EAAG0oB,GAAG,CAAChqB,EAAEC,IAAIA,GAAGA,EAAEyB,SAAS1B,EAAE,IAAI,IAAIgI,MAAMhI,GAAG8rC,QAAQ7zB,UAAUhY,EAAEgqB,GAAG,CAACjqB,EAAEC,IAAIkiB,GAAE+oB,gBAAgBlrC,EAAEgqB,GAAGhqB,EAAE0B,OAAOzB,IAAIiqB,GAAG,CAAClqB,EAAEC,EAAEI,EAAEI,KAAK,IAAIC,EAAE,GAAGA,EAAEiB,KAAK,cAAclB,EAAE4F,KAAK0lC,eAAe1rC,EAAEgG,KAAK0lC,yBACpd1rC,EAAEgG,KAAK0lC,YAAY,IAAI,IAAItqC,EAAE,EAAEA,EAAExB,IAAIwB,EAAEf,EAAEiB,KAAKtB,EAAEssC,WAAW,IAAI3sC,EAAEyB,GAAG,KAAKA,OAAO,OAAOf,EAAEiB,KAAK,cAAcjB,EAAE0B,KAAK,KAC/H,EAAG+nB,GAAG,CAACnqB,EAAEC,KAAK,IAAII,EAAEL,EAAEuG,SAAS9F,EAAET,EAAEoD,KAAK1B,OAAOhB,EAAEspB,GAAGvpB,EAAER,GAAGwB,EAAEqoB,GAAGrpB,GAAGuB,EAAEioB,GAAGjqB,EAAEoD,KAAK1C,GAAGiD,EAAElC,EAAEO,EAAEN,OAAOM,EAAEwB,EAAE/B,EAAEhB,EAAET,EAAEoD,KAAKK,EAAE+a,GAAE,SAASne,EAAEsD,GAAGI,EAAEkd,GAAE,IAAI5gB,EAAEmD,GAYpI,MAAM,CAACvB,KAAK,YAAY+rC,YAAY,CAACC,KAAK,GAAGhuC,IAAIiuC,kBAAkBzsC,EAAE,CAAC,QAAQ,CAAC,SAAS0sC,WAAWlqC,IAAI,IAAIC,EAAEie,GAAEha,KAAKnG,GAAG,MAAM,CAACosC,QAAQ,CAAC,CAAChrC,KAAKpB,EAAEuE,SAAStC,EAAE,GAAGsC,WAAW8nC,cAAc,CAAC7pC,EAAEiY,KAAKmD,KAAK1b,EAAE,KAAKoqC,gBAAgB7sC,EAAE,CAAC,CAAC4E,KAAK,SAAS9B,KAAKL,MAAMoa,GAAEra,EAAE,GAAGb,SAASkb,GAAEtc,IAAI,CAAC,CAACqE,KAAK,SAAS9B,KAAKL,IAAG,EAAGqqC,gBAZ/JtqC,GAAG,OAC7IA,EAAE0pC,gBAAgB,cAAc,OAAOH,iBAAiBzpC,EAAEN,WAE1DymB,GAAGxpB,EAAED,EAAEsD,EAAEN,WAETQ,EAAEopC,oBACAppC,EAAEmpC,sCAAsC,gDAE1B3pC,EAAEyoC,gBAAgB,4DAGhCzoC,EAAEmpC,YAAY,aAAa7oC,EAAEuoC,aAAa,oBAC8Q,EAAGliB,GAAG,CAACpqB,EAAEC,KAAK8pB,GAAG/pB,EAAEwuC,QAAQxuC,EAAEyuC,QAAQtkB,GAAGnqB,EAAEwuC,OAAO,GAAGvuC,EAAEwV,MAAK,EAAGJ,GAAGrV,GAAG8oB,GAAG,CAACrT,KAAKzV,EAAEyV,MAAK,IAAuEi5B,GAAG3uC,GAAE,KAAkByqC,KAAKqB,KAAK8C,KAAKZ,KAAK1jB,GAAG,CAAClV,IAAI,sDAAsDD,IAAI,sDAAsDrR,KAAK,wBAAwB+qC,IAAI,wBAAwBC,KAAK,wBAAwBC,UAAU,oCAAoCC,UAAU,6BAA6BC,GAAG,6BAA6BC,GAAG,oCAAoCC,OAAO,yBAAyB5kB,GAAG,CAACnV,IAAI,sDAAsDD,IAAI,sDAAsDrR,KAAK,wBAAwB+qC,IAAI,wBAAwBC,KAAK,wBAAwBC,UAAU,wBAAwBC,UAAU,wBAAwBC,GAAG,wBAAwBC,GAAG,wBAAwBC,OAAO,yBAAyB3kB,GAAG,CAACpV,IAAI,aAAaD,IAAI,aAAarR,KAAK,IAAI+qC,IAAI,IAAIC,KAAK,IAAIC,UAAU,IAAIC,UAAU,IAAIC,GAAG,IAAIC,GAAG,IAAIC,OAAO,KAAK1kB,GAAG,CAACrV,IAAI,YAAYD,IAAI,YAAY05B,IAAI,YAAYC,KAAK,YAAYC,UAAU,YAAYC,UAAU,iBAAiBC,GAAG,YAAYC,GAAG,kBAAkBC,OAAO,kBAAkBzkB,GAAG,CAACzqB,EAAEC,KAAK,IAAII,EAAE,GAAG,IAAI,IAAII,EAAER,EAAED,EAAES,EAAER,IAAIQ,EAAEJ,EAAEsB,KAAKlB,GAAG,OAAOJ,GAAGqqB,GAAG,CAAC1qB,EAAEC,KAAK,IAAII,EAAE,GAAGI,EAAET,EAAE0B,OAAO,IAAI,IAAID,EAAE,EAAEA,EAAEhB,EAAEgB,KAAoB,IAAhBxB,EAAEsB,QAAQE,IAASpB,EAAEsB,KAAK3B,EAAEyB,IAAyB,MAAM,CAACpB,EAAtBJ,EAAEkC,KAAIV,GAAGzB,EAAEyB,KAAc,EAAGkpB,GAAG,CAAC3qB,EAAEC,KAAK,IAAII,EAAEL,EAAE0B,OAAOzB,EAAEyB,OAAOjB,EAAE,GAAGC,EAAE,EAAE,IAAI,IAAIe,EAAE,EAAEA,EAAEpB,EAAEoB,KAAoB,IAAhBxB,EAAEsB,QAAQE,GAAQhB,EAAEkB,KAAK3B,EAAEU,MAAMD,EAAEkB,KAAK,GAAG,OAAOlB,GAAGmqB,GAAG,CAAC5qB,EAAEC,KAAK,IAAI,IAAII,EAAE,EAAEA,EAAEL,EAAE0B,SAASrB,EAAE,GAAGL,EAAEA,EAAE0B,OAAOrB,EAAE,KAAKJ,EAAE,EAAEI,EAAE,OAAM,EAAG,OAAM,CAAC,EAAGwqB,GAAG,CAAC7qB,EAAEC,KAAK,IAAII,EAAE,GAAG,IAAIuqB,GAAG5qB,EAAEC,GAAG,CAAC,IAAI,IAAIQ,EAAE,EAAEA,EAAER,IAAIQ,GAAkB,IAAhBT,EAAEuB,QAAQd,IAASJ,EAAEsB,KAAKlB,GAAGT,EAAEie,SAAQxd,GAAGJ,EAAEsB,KAAKlB,IAAG,CAAC,OAAOJ,GAAGyqB,GAAG,CAAC9qB,EAAEC,EAAEI,EAAEI,EAAEC,EAAEe,EAAEO,KAAK,IAAI2B,EAAEtD,EAAE,GAAG+C,KAAKI,EAAE2e,GAAEha,KAAK1G,GAAGgC,EAAE0e,GAAEha,KAAKnG,GAAG+B,EAAEkd,GAAE,KAAK5gB,EAAE,GAAGkG,SAAS5C,GAAGK,EAAEwa,GAAE,SAAS9d,EAAEe,GAAQyC,EAAE,kDAChlEF,EAAEqC,KAAK2lC,yBAC7C,MAAM,CAAC/pC,KAAKjC,EAAEguC,YAAY/tC,EAAEsuC,gBAAgBnqC,GAAG,aAC9CA,EAAEupC,gBAAgB,aAAa,OAAOH,iBAAiBzpC,EAAEC,eACzDE,kHAICE,EAAEipC,UAR6mE,+IAa9lErpC,EAAEqC,KAAK2lC,WAAWzhB,GAAG9pB,8IAGpBuD,EAAEqC,KAAK2lC,WAAWjoC,EAAE8oC,YAAY,2CACpCxiB,GAAG5pB,4bAWF6pB,GAAG7pB,mMAQjBuD,EAAE4oC,YAAY,cAAc,IAAO,SAAJnsC,EAAW,eAAeuD,EAAEqC,KAAK2lC,+BAA+B,GAAGxhB,GAAG/pB,iCAEtG0tC,WAAW,KAAI,CAAEC,QAAQ,CAAC,CAAChrC,KAAK3B,EAAE8E,SAAS7F,IAAI2tC,cAAc,CAAC7pC,EAAEhB,GAAG8qC,gBAAgB,CAAC,CAACjoC,KAAK,SAAS9B,KAAKd,MAAK,EAAGsnB,GAAG,CAAC/qB,EAAEC,EAAEI,EAAEI,KAAK,IAAIC,EAAoB,IAAlBV,EAAEwuC,OAAO9sC,OAAWrB,EAAE2jB,GAAGhkB,EAAEwuC,OAAOnuC,GAAGoB,EAAEf,EAAE8U,KAAgB,IAAX/T,EAAEC,SAAahB,EAAE6U,oBAAoB9T,EAAEzB,EAAEwuC,OAAO,GAAGprC,KAAKjB,KAAI,CAAC+B,EAAEC,IAAIA,KAAI,IAAInC,EAAEmgB,GAAE8oB,cAAcxpC,EAAEzB,EAAEwuC,OAAO,GAAGprC,KAAK1B,QAAQiC,EAAE3B,EAAEwB,EAAExD,EAAEwuC,OAAO,GAAG/qC,EAAEonB,GAAGlnB,EAAE3D,EAAEwuC,OAAO,GAAGprC,KAAK1B,QAAQ+B,EAAE/B,OAAO,IAAI8B,EAAExD,EAAEyuC,QAAQtkB,GAAGnqB,EAAEwuC,OAAO,GAAG/qC,GAAG,CAAC+qC,OAAO,CAAC,GAAGJ,QAAQ,EAAE,KAAK,GAAGzqC,EAAE8mB,GAAG9mB,EAAEjC,OAAO8B,EAAEJ,KAAK1B,SAAS,IAAIqC,EAAEC,GAAG0mB,GAAGlnB,EAAEJ,KAAKO,GAAGM,EAAEF,EAAErD,EAAE4U,WAAWrR,EAAE0mB,GAAG5mB,EAAE/B,IAAIhC,EAAEyuC,QAAQ3jB,GAAG7qB,EAAE,CAACguC,KAAKvtC,EAAE2pC,SAAS6D,kBAAkB,CAAC,SAAS,CAAC1qC,GAAG/C,EAAET,EAAEwuC,OAAO,GAAGjoC,SAAStC,EAAED,GAAG,CAACwqC,OAAO,CAAChrC,IAAG,EAAGwnB,GAAG,CAAChrB,EAAEC,KAAK8qB,GAAG/qB,EAAE,mBAAmBC,EAAE,OAAM,EAAGgrB,GAAG,CAACjrB,EAAEC,KAAK8qB,GAAG/qB,EAAE,iBAAiBC,EAAE,KAAI,EAAGirB,GAAG,CAAClrB,EAAEC,KAAK8qB,GAAG/qB,EAAE,iBAAiBC,EAAE,KAAI,EAAGkrB,GAAG,CAACnrB,EAAEC,KAAK8qB,GAAG/qB,EAAE,wBAAwBC,EAAE,YAAW,EAAGmrB,GAAG,CAACprB,EAAEC,KAAK8qB,GAAG/qB,EAAE,kBAAkBC,EAAE,MAAK,EAAGorB,GAAG,CAACrrB,EAAEC,KAAK8qB,GAAG/qB,EAAE,kBAAkBC,EAAE,MAAK,EAAGqrB,GAAG,CAACtrB,EAAEC,KAAK8qB,GAAG/qB,EAAE,mBAAmBC,EAAE,OAAM,EAAGsrB,GAAG,CAACvrB,EAAEC,KAAK8qB,GAAG/qB,EAAE,kBAAkBC,EAAE,MAAK,EAAGurB,GAAG,CAACxrB,EAAEC,KAAK8qB,GAAG/qB,EAAE,wBAAwBC,EAAE,YAAW,EAAGwrB,GAAG,CAACzrB,EAAEC,KAAK8qB,GAAG/qB,EAAE,qBAAqBC,EAAE,SAAQ,CAAC,IAAsF0uC,GAAG5uC,GAAE,KAAkByqC,KAAKJ,KAAKyB,KAAK6C,KAAKhjB,GAAG1rB,IAAI,IAAIA,GAAc,IAAXA,EAAE0B,QAAY1B,EAAE0B,OAAO,EAAE,MAAM,IAAIJ,MAAM,qCAAqC,GAAc,IAAXtB,EAAE0B,QAA+B,IAAnB1B,EAAE,GAAGoD,KAAK1B,OAAW,MAAM,IAAIJ,MAAM,2BAA0B,EAAGqqB,GAAG3rB,GAAG,CAAC,GAAG,GAAG,eAAeA,EAAEssC,aAAa,oBAAoB,IAAI1gB,GAAG,CAAC5rB,EAAEC,EAAEI,EAAEI,EAAEC,EAAEe,EAAEO,GAAE,EAAG2B,GAAE,KAAM,IAAIH,EAAE,GAAGC,EAAEpD,EAAE,GAAG+C,KAAKW,EAAEN,EAAE/B,OAAOsC,EAAEme,GAAE8oB,cAAcvqC,EAAEqD,GAAGE,GAAGN,GAAc,IAAXK,EAAEtC,OAAW+B,EAAEwa,SAAQ,CAAC5Z,EAAEC,KAAKL,GAAGD,EAAEzC,QAAQ+C,IAAI,EAAEtC,GAAGwB,EAAE7B,KAAK,GAAG6B,EAAE7B,KAAK0C,EAAC,IAAI,IAAIH,EAAEV,EAAE9B,OAAOyC,EAAEge,GAAEha,KAAK3E,GAAG,MAAM,CAACvB,KAAKjC,EAAEguC,YAAY/tC,EAAEsuC,gBAAgBlqC,IAAI,IAAIC,EAAE,GAAGE,EAAEyc,GAAE,KAAK5gB,EAAE,GAAGkG,SAASxC,GAAGU,EAAE+Z,GAAE,SAAS/c,EAAEyC,GAAGQ,EAAEjE,EAAE+D,EAAEC,EAAET,GAAGe,EAAEL,EAAE,GAAG,IAAI,IAAI8N,EAAE,EAAEC,EAAE,EAAED,EAAEzO,EAAEyO,IAAIvO,GAAGD,EAAEzC,QAAQiR,IAAI,GAAGxQ,GAAGyQ,IAAI1N,EAAE,YAAYyN,gBAAgBA,OAAO/O,EAAE+O,QAAQA,6BACxzD9N,EAAE,GAAG0E,SAAS,cAAc,qBAAqBoJ,KAAK,yBACtDhO,EAAEmoC,WAAW,gBAAgBn6B,EAAE,IAAIA,2BACnCzN,yBACCT,EAAE3C,KAAK,GAAG6C,EAAEmoC,WAAW,gBAAgBn6B,EAAE/N,EAAEgoC,WAAW,iBAAiBh6B,QAAQA,KAAK,MAAM,eAErGpO,EAAEspC,gBAAgB,cAAc,OAAOH,iBAAiBhpC,EAAEC,iBAE1DJ,EAAEgpC,0BACAhpC,EAAE+oC,sCAAsC,yDACrB5oC,EAAE6B,KAAK0lC,4CACLtnC,EAAEynC,gBAAgB,+BAEvC5nC,EAAElC,KAAK,oBAEPsC,EAAE,sDACFA,EAAE,iBACFK,gBACAL,EAAE,iBACS,IAAXA,EAAEhD,OAAW+C,EAAEmoC,YAAY,aAAa,SAASloC,EAAE0M,MAAM,GAAGhP,KAAK,kBAC3E,EACU+rC,WAAW,KAAI,CAAEC,QAAQ,CAAC,CAAChrC,KAAKI,EAAE+C,SAAS9E,IAAI4sC,cAAc,CAAC7pC,EAAEiY,KAAKmD,KAAKzb,EAAE,KAAKmqC,gBAAgB,CAAC,CAACjoC,KAAK,SAAS9B,KAAKJ,MAAMma,GAAE7a,MAAM6a,GAAE9a,MAAK,EAAGwgB,GAAG,CAAChkB,EAAEC,KAAK,IAAII,EAAE,GAAG,OAAOL,EAAE,GAAGoD,KAAK,GAAG,GAAGpD,EAAE,GAAGmvC,mBAAmBlxB,SAAQxd,GAAGJ,EAAEsB,KAAK0F,OAAO5G,MAAKqoB,GAAG,CAACtT,KAAKnV,EAAEiV,SAASrV,EAAEqV,SAASC,kBAAkBtV,EAAEsV,mBAAkB,EAAGsW,GAAG,CAAC7rB,EAAEC,EAAEI,EAAEI,KAAK,IAAIC,EAAEV,EAAEwuC,OAAO/sC,EAAa,IAAXf,EAAEgB,OAAWrB,EAAE2jB,GAAGtjB,EAAEL,GAAGL,EAAEyuC,QAAQ7iB,GAAG3rB,EAAE,CAACguC,KAAKxsC,EAAE4oC,SAAS6D,kBAAkB,CAAC,SAAS,CAACxtC,EAAE,IAAIe,EAAE8T,mBAAmC,IAAhB9T,EAAE+T,KAAK9T,OAAWiqB,GAAGlrB,EAAEgB,EAAE+T,KAAK9U,EAAE,GAAG6F,SAAS9E,EAAE6T,SAAS7T,EAAE8T,mBAAmB,CAACi5B,OAAO,CAAC,IAAG,EAAG1iB,GAAG,CAAC9rB,EAAEC,KAAKyrB,GAAG1rB,EAAEwuC,QAAQ3iB,GAAG7rB,EAAE,eAAeC,GAAE,CAACQ,EAAEC,IAAI,CAAC,eAAeA,EAAE2F,KAAK2lC,cAAc,GAAG,YAAYvrC,EAAE6rC,aAAa,oBAAoB,wBAAsB,EAAGvgB,GAAG,CAAC/rB,EAAEC,KAAKyrB,GAAG1rB,EAAEwuC,QAAQ3iB,GAAG7rB,EAAE,WAAWC,GAAE,CAACQ,EAAEC,IAAI,CAAC,eAAeA,EAAE2F,KAAK2lC,cAAc,GAAG,gBAAgBvrC,EAAE6rC,aAAa,qBAAqB,KAAG,EAAGtgB,GAAG,CAAChsB,EAAEC,KAAKyrB,GAAG1rB,EAAEwuC,QAAQ3iB,GAAG7rB,EAAE,WAAWC,GAAE,CAACQ,EAAEC,IAAI,CAAC,WAAWA,EAAE2F,KAAKxF,yBAAyBH,EAAE2F,KAAKxF,YAAY,GAAG,OAAOJ,EAAE6rC,aAAa,sCAAsC,yBAAuB,EAAGrgB,GAAG,CAACjsB,EAAEC,KAAKyrB,GAAG1rB,EAAEwuC,QAAQ3iB,GAAG7rB,EAAE,kBAAkBC,GAAE,CAACQ,EAAEC,IAAI,CAAC,eAAeA,EAAE2F,KAAK2lC,cAAc,GAAG,gBAAgBvrC,EAAE6rC,aAAa,qBAAqB,wBAAsB,EAAGpgB,GAAG,CAAClsB,EAAEC,KAAKyrB,GAAG1rB,EAAEwuC,QAAQ3iB,GAAG7rB,EAAE,YAAYC,GAAE,CAACQ,EAAEC,EAAEe,KAAK,IAAIO,EAAE,GAAG,IAAI,IAAI2B,EAAE,EAAEA,EAAElD,EAAEisC,KAAK/oC,KAAKlC,EAAEF,QAAQoC,IAAI,GAAc,IAAXlC,EAAEC,SAAaM,EAAEL,KAAKlB,EAAEksC,WAAW,gBAAgBhpC,EAAE,IAAI,MAAM,CAAC,GAAG3B,EAAEI,KAAK,QACz4C,eAAe3B,EAAE6rC,aAAa,oBAAoB,sBAAsB7rC,EAAE6rC,aAAa,qBAAqB,GAAE,GAAE,EAAGngB,GAAG,CAACnsB,EAAEC,KAAKyrB,GAAG1rB,EAAEwuC,QAAQ3iB,GAAG7rB,EAAE,aAAaC,GAAE,CAACQ,EAAEC,EAAEe,KAAK,IAAIO,EAAE,EAAE,IAAI,IAAI2B,EAAE,EAAEA,EAAElD,EAAEisC,KAAK/oC,KAAKlC,EAAEF,QAAQoC,IAAI,GAAc,IAAXlC,EAAEC,UAAcM,GAAGhC,EAAEwuC,OAAO,GAAGprC,KAAKO,IAAI,MAAM,CAAC,oBAAoB,GAAG,cAAclD,EAAE6rC,aAAa,qBAAqB,eAAe5rC,EAAE2F,KAAKxF,eAAemB,MAAK,GAAE,EAAGoqB,GAAG,CAACpsB,EAAEC,KAAKyrB,GAAG1rB,EAAEwuC,QAAQ3iB,GAAG7rB,EAAE,YAAYC,GAAE,CAACQ,EAAEC,EAAEe,KAAK,IAAIO,EAAE,GAAG,IAAI,IAAI2B,EAAE,EAAEA,EAAElD,EAAEisC,KAAK/oC,KAAKlC,EAAEF,QAAQoC,IAAI,GAAc,IAAXlC,EAAEC,SAAaM,EAAEL,KAAK,iBAAiBgC,WAAW,MAAM,CAAC,GAAG3B,EAAEI,KAAK,QAC/iB,eAAe3B,EAAE6rC,aAAa,oBAAoB,sBAAsB7rC,EAAE6rC,aAAa,qBAAqB,GAAE,GAAE,EAAGjgB,GAAG,CAACrsB,EAAEC,KAAKyrB,GAAG1rB,EAAEwuC,QAAQ3iB,GAAG7rB,EAAE,aAAaC,GAAE,CAACQ,EAAEC,IAAI,CAAC,eAAeA,EAAE2F,KAAK2lC,cAAc,GAAG,YAAYvrC,EAAE6rC,aAAa,oBAAoB,KAAG,EAAGhgB,GAAG,CAACtsB,EAAEC,KAAKyrB,GAAG1rB,EAAEwuC,QAAQ3iB,GAAG7rB,EAAE,YAAYC,GAAE,CAACQ,EAAEC,IAAI,CAAC,eAAeA,EAAE2F,KAAK2lC,cAAc,GAAG,YAAYvrC,EAAE6rC,aAAa,oBAAoB,KAAG,EAAG/f,GAAG,CAACvsB,EAAEC,KAAKyrB,GAAG1rB,EAAEwuC,QAAQ3iB,GAAG7rB,EAAE,kBAAkBC,GAAE,CAACQ,EAAEC,IAAI,CAAC,WAAWA,EAAE2F,KAAKxF,yBAAyBH,EAAE2F,KAAKxF,YAAY,GAAG,OAAOJ,EAAE6rC,aAAa,oCAAoC,KAAG,EAAG9f,GAAG,CAACxsB,EAAEC,EAAEI,KAAK,GAAc,IAAXJ,EAAEyB,OAAW,OAAOrB,EAAE,IAAII,EAAE,EAAEC,EAAE,EAAE,IAAI,IAAIe,EAAE,EAAEA,EAAExB,EAAEyB,OAAOD,KAAoB,IAAhBxB,EAAEsB,QAAQE,GAAQhB,GAAGT,EAAEyB,GAAGf,GAAGV,EAAEyB,GAAG,OAAOf,EAAE,IAAID,EAAE,MAAMgsB,GAAG,CAACzsB,EAAEC,KAAKusB,GAAGxsB,EAAEwuC,OAAO,GAAGprC,KAAKnD,EAAEuV,KAAKvV,EAAEsV,mBAAmB4W,GAAGnsB,EAAEC,GAAG+qB,GAAGhrB,EAAEC,EAAC,EAAGysB,GAAG,CAAC1sB,EAAEC,KAAKusB,GAAGxsB,EAAEwuC,OAAO,GAAGprC,KAAKnD,EAAEuV,KAAKvV,EAAEsV,mBAAmBwW,GAAG/rB,EAAEC,GAAGgrB,GAAGjrB,EAAEC,EAAC,EAAG0sB,GAAG,CAAC3sB,EAAEC,KAAKusB,GAAGxsB,EAAEwuC,OAAO,GAAGprC,KAAKnD,EAAEuV,KAAKvV,EAAEsV,mBAAmByW,GAAGhsB,EAAEC,GAAGirB,GAAGlrB,EAAEC,EAAC,EAAG2sB,GAAG,CAAC5sB,EAAEC,KAAKusB,GAAGxsB,EAAEwuC,OAAO,GAAGprC,KAAKnD,EAAEuV,KAAKvV,EAAEsV,mBAAmB0W,GAAGjsB,EAAEC,GAAGkrB,GAAGnrB,EAAEC,EAAC,EAAG4sB,GAAG,CAAC7sB,EAAEC,KAAKusB,GAAGxsB,EAAEwuC,OAAO,GAAGprC,KAAKnD,EAAEuV,KAAKvV,EAAEsV,mBAAmB2W,GAAGlsB,EAAEC,GAAGmrB,GAAGprB,EAAEC,EAAC,EAAG6sB,GAAG,CAAC9sB,EAAEC,KAAKusB,GAAGxsB,EAAEwuC,OAAO,GAAGprC,KAAKnD,EAAEuV,KAAKvV,EAAEsV,mBAAmB6W,GAAGpsB,EAAEC,GAAGorB,GAAGrrB,EAAEC,EAAC,EAAG8sB,GAAG,CAAC/sB,EAAEC,KAAKusB,GAAGxsB,EAAEwuC,OAAO,GAAGprC,KAAKnD,EAAEuV,KAAKvV,EAAEsV,mBAAmB8W,GAAGrsB,EAAEC,GAAGqrB,GAAGtrB,EAAEC,EAAC,EAAG+sB,GAAG,CAAChtB,EAAEC,KAAKusB,GAAGxsB,EAAEwuC,OAAO,GAAGprC,KAAKnD,EAAEuV,KAAKvV,EAAEsV,mBAAmB+W,GAAGtsB,EAAEC,GAAGsrB,GAAGvrB,EAAEC,EAAC,EAAGgtB,GAAG,CAACjtB,EAAEC,KAAKusB,GAAGxsB,EAAEwuC,OAAO,GAAGprC,KAAKnD,EAAEuV,KAAKvV,EAAEsV,mBAAmBgX,GAAGvsB,EAAEC,GAAGurB,GAAGxrB,EAAEC,EAAC,EAAGitB,GAAG,CAACltB,EAAEC,KAAKusB,GAAGxsB,EAAEwuC,OAAO,GAAGprC,KAAKnD,EAAEuV,KAAKvV,EAAEsV,mBAAmBuW,GAAG9rB,EAAEC,GAAGwrB,GAAGzrB,EAAEC,EAAC,CAAC,IAAoBmvC,GAAGrvC,GAAE,KAAkBmnC,KAAKkD,KAAKuE,KAAKxhB,GAAGntB,IAAI,IAAIA,GAAc,IAAXA,EAAE0B,QAAY1B,EAAE0B,OAAO,EAAE,MAAM,IAAIJ,MAAM,0CAA0C,GAAmB,IAAhBtB,EAAE,GAAGuG,SAAa,MAAM,IAAIjF,MAAM,sBAAqB,EAAG8rB,GAAG,CAACptB,EAAEC,KAAKktB,GAAGntB,EAAEwuC,QAK3nDxuC,EAAEyuC,QAAQ7iB,GAAG,SAAS,CAACqiB,KAAKhuC,EAAEoqC,SAAS6D,kBAAkB,CAAC,SAAS,CAACluC,EAAEwuC,OAAO,KAL4jD,CAAC/tC,EAAEC,EAAEe,KAAK,IAAIO,EAAE,GAAG,IAAI,IAAI2B,EAAE,EAAEA,EAAElD,EAAEisC,KAAK/oC,KAAKlC,EAAEF,QAAQoC,IAAI,GAAc,IAAXlC,EAAEC,SAAaM,EAAEL,KAAK,iBAAiBgC,WAAW,MAAM,CAAC,GAAG3B,EAAEI,KAAK,QAC7zD,eAAe3B,EAAE6rC,aAAa,+CACR,OAAO7rC,EAAE6rC,aAAa,oBAAoBrsC,EAAE4W,gBAAgB,EAAE,KAAK,kCAC3EpW,EAAE6rC,aAAa,sEAExB,GAAG5rC,EAAEksC,YAAY,aAAa,cAAa,GAAsF,CAAC3sC,EAAE6W,MAAM,EAAE7W,EAAEqV,UAAU,CAACk5B,OAAO,CAAC,IAAG,EAAGnhB,GAAG,CAACrtB,EAAEC,KAAKktB,GAAGntB,EAAEwuC,QAKzIxuC,EAAEyuC,QAAQ7iB,GAAG,SAAS,CAACqiB,KAAKhuC,EAAEoqC,SAAS6D,kBAAkB,CAAC,SAAS,CAACluC,EAAEwuC,OAAO,KAL0E,CAAC/tC,EAAEC,EAAEe,KAAK,IAAIO,EAAE,GAAG,IAAI,IAAI2B,EAAE,EAAEA,EAAElD,EAAEisC,KAAK/oC,KAAKlC,EAAEF,QAAQoC,IAAI,GAAc,IAAXlC,EAAEC,SAAaM,EAAEL,KAAK,iBAAiBgC,WAAW,MAAM,CAAC,GAAG3B,EAAEI,KAAK,QAC3U,eAAe3B,EAAE6rC,aAAa,+CACR,OAAO7rC,EAAE6rC,aAAa,oBAAoBrsC,EAAE4W,gBAAgB,EAAE,KAAK,kCAC3EpW,EAAE6rC,aAAa,sEAExB,GAAG5rC,EAAEksC,YAAY,aAAa,cAAa,GAAsF,CAAC3sC,EAAE6W,MAAM,EAAE7W,EAAEqV,UAAU,CAACk5B,OAAO,CAAC,IAAG,EAAGrrB,GAAGnjB,GAAG8oB,GAAG9oB,EAAC,IAA6BijB,GAAGljB,GAAE,KAAkBmnC,KAAKa,KAAK8D,KAAKve,GAAG,CAACttB,EAAEC,KAAK,IAAII,EAAEL,EAAE,GAAGS,EAAET,EAAE,GAAGU,EAAEV,EAAE,GAAGyB,EAAEzB,EAAE,GAAGgC,EAAEhC,EAAE,GAAG2D,EAAE3D,EAAE,GAAG,GAAGgC,GAAG2B,EAAE,MAAM,IAAIrC,MAAM,8DAA8D,GAAmB,IAAhBjB,EAAE+C,KAAK1B,OAAW,MAAM,IAAIJ,MAAM,wCAAwC,IAAIkC,EAAEnD,EAAE+C,KAAK,GAAGK,EAAEpD,EAAE+C,KAAK,GAAGW,EAAE1D,EAAE+C,KAAK,GAAG,GAAmB,IAAhB1C,EAAE0C,KAAK1B,OAAW,MAAM,IAAIJ,MAAM,iDAAiD,GAAmB,IAAhBb,EAAE2C,KAAK1B,OAAW,MAAM,IAAIJ,MAAM,oDAAoD,GAAGb,EAAE2C,KAAK,KAAKW,EAAE,MAAM,IAAIzC,MAAM,yEAAyE,GAAGZ,EAAE0C,KAAK,KAAK3C,EAAE2C,KAAK,GAAG,MAAM,IAAI9B,MAAM,sFAAsF,IAAI0C,EAAEtD,EAAE0C,KAAK,GAAG,EAAEa,EAAED,EAAEE,EAAED,EAAE,GAAGhE,EAAEsY,eAAe7W,OAAO,EAAE,CAAC,GAA6B,IAA1BzB,EAAEsY,eAAe7W,OAAW,MAAM,IAAIJ,MAAM,qDAAqD,IAAI,IAAImD,KAAKxE,EAAEsY,eAAe,GAAG9T,EAAExE,EAAEiY,UAAW,EAAE,MAAM,IAAI5W,MAAM,qDAAqD0C,EAAE/D,EAAEsY,eAAe,GAAGtU,EAAEhE,EAAEsY,eAAe,GAAGrU,EAAEjE,EAAEsY,eAAe,EAAE,CAAC,IAAIpU,EAAEV,EAAE,GAAGO,IAAIC,EAAE,MAAM,IAAI3C,MAAM,+DAA+D,GAAGZ,EAAE0C,KAAK,KAAKY,EAAEC,EAAEC,EAAE,MAAM,IAAI5C,MAAM,iFAAiF,IAAI8C,EAAE,EAAE,GAAGpC,EAAE,CAAC,GAAGiC,IAAIC,EAAE,MAAM,IAAI5C,MAAM,sDAAsD,GAAmB,IAAhBU,EAAEoB,KAAK1B,OAAW,MAAM,IAAIJ,MAAM,uCAAuC,GAAe,IAAZU,EAAEoB,KAAK,GAAO,MAAM,IAAI9B,MAAM,0CAA0C,GAAGU,EAAEoB,KAAK,KAAKI,EAAE,MAAM,IAAIlC,MAAM,oDAAoD,GAAGU,EAAEoB,KAAK,KAAKnD,EAAEiY,SAAS,MAAM,IAAI5W,MAAM,kDAAkD,GAAGU,EAAEoB,KAAK,KAAKa,EAAEhE,EAAEiY,SAAS,MAAM,IAAI5W,MAAM,kEAAkErB,EAAEuY,yBAAyBpU,EAAEpC,EAAEoB,KAAK,GAAG,CAAC,IAAIiB,EAAEF,EAAEC,EAAW,GAAG3C,EAAE,MAAM,IAAIH,MAAM,sBAAsB,GAAGU,EAAE,MAAM,IAAIV,MAAM,yBAAyB,GAAGqC,EAAE,MAAM,IAAIrC,MAAM,yCAAyC,MAAM,CAAC+tC,UAAU7rC,EAAE8rC,eAAe7rC,EAAE8rC,mBAAmBnrC,EAAEorC,iBAAiBrrC,EAAEsrC,oBAAoBprC,EAAEqrC,mBAA/P,EAAmRC,gBAAgB5rC,EAAE6rC,WAAW5rC,EAAE6rC,YAAY3rC,EAAE4rC,SAASrzB,KAAKC,MAAM1Y,EAAE/D,EAAEiY,UAAU63B,UAAUtzB,KAAKC,MAAMxY,EAAEjE,EAAEiY,UAAUA,SAASjY,EAAEiY,SAASC,kBAAiB,EAAGK,wBAAuB,EAAGJ,gBAAgBnY,EAAEmY,gBAAgB43B,SAAre,EAAgf33B,MAAMpY,EAAEoY,MAAM43B,qBAAoB,EAAGC,cAAa,EAAGC,UAAU,EAAC,EAAG5iB,GAAG,CAACvtB,EAAEC,EAAEI,EAAEI,KAAK,IAAIC,EAAE4oB,GAAG7oB,GAAGgB,EAAE,GAAGO,EAAEvB,EAAEC,EAAEsB,EAAEP,EAAEA,EAAE,EAAEO,EAAE,EAAE,KAAKP,EAAEgb,KAAKmD,KAAK5d,EAAE,IAAI,IAAI2B,EAAE8Y,KAAKmD,KAAKnf,EAAEC,EAAEe,GAAGgC,EAAE,CAAC,CAAC4C,KAAKuhB,GAAG3nB,EAAEsG,UAAUhC,KAAK,EAAE9D,GAAG,CAAC4F,KAAK,SAAS9B,KAAKvC,GAAG,CAACqE,KAAK,SAAS9B,KAAKZ,IAAII,EAAEqlB,GAAGnpB,EAAEsG,SAAS7F,GA0C/vFV,EAAEyuC,QAAQ,CAACxsC,KAAK,wBAAwB+rC,YAAY,CAACC,KAAK,GAAGxsC,KAAKsC,KAAKrD,KAAK6tC,gBA1CwrFtqC,IAAI,IAAIC,EAAEsa,GAAE,IAAIve,EAAEsG,SAAStG,EAAEmD,KAAK1C,GAAGyD,EAAE,oBAAwB,IAAJzD,EAAMyD,EAAE,gDAAoD,IAAJzD,IAAQyD,EAAE,qGAAqG,IAAIC,EAAEilB,GAAGppB,EAAEsG,UAAUlC,EAAE,CAAC,CAACpC,KAAK,QAAQoE,KAAKjC,GAAG,CAACnC,KAAK,SAASoE,KAAK,OAAO,CAACpE,KAAK,kBAAkBoE,KAAK,QAAQ,MAAM,wCAC3jG5E,2CACAA,UACjCwC,EAAE2pC,iBAAiBvpC,GAAGmpC,iBAAiBtpC,SACvCD,EAAEopC,UAAU,CAAC5rC,EAAE,EAAE,0KAIS8nB,GAAG,MAAM7oB,EAAE,yJAET8oB,GAAGplB,EAAE1D,EAAE,wEAEdyD,+FAIE1C,sFAIL8nB,GAAG,MAAM7oB,EAAE,qIAER8oB,GAAGplB,EAAE1D,EAAE,gEAEP+oB,GAAG,YAAY/oB,mFAIbe,kMAMD8nB,GAAG,MAAM7oB,EAAE,2KAIZ8oB,GAAGplB,EAAE1D,EAAE,8CACNwD,EAAEmC,KAAKxF,6DAAK,EAG8DstC,WAAW,KAAI,CAAEC,QAAQ,GAAGC,cAAc,CAAC7pC,EAAEnE,GAAGiuC,gBAAgB7qC,KAAK,CAAC+qC,OAAO,CAACvuC,GAAGmuC,QAAQ,IAAG,EAAG5gB,GAAG,CAACxtB,EAAEC,EAAEI,EAAEI,EAAEC,EAAEe,KAAK,IAAIO,EAAE,CAACtB,EAAE2uC,UAAU3uC,EAAEwX,SAASxX,EAAE4uC,eAAe5uC,EAAE8uC,iBAAiB9uC,EAAE6uC,oBAAoB5rC,EAAY,IAAVlC,EAAE4W,MAAU,EAAEoE,KAAK2zB,KAAK1vC,EAAEovC,UAAUruC,EAAE4W,MAAM7U,EAAE8lB,GAAG5oB,EAAEovC,UAAUrsC,EAAE/C,EAAEovC,SAAStsC,EAAEO,EAAE,GAAGC,EAAE,CAACQ,EAAEiY,KAAKmD,KAAKlf,EAAE+uC,oBAAoB1rC,GAAGwa,EAAE9B,KAAKmD,KAAKlf,EAAE4uC,eAAevrC,GAAGgB,EAAErE,EAAE2uC,UAAU3uC,EAAEwX,UAAUjU,EAAE2jB,GAAG3nB,EAAEsG,UAAUrC,EAAE,CAAC,CAACmC,KAAK,SAAS9B,KAAK7D,EAAE4uC,gBAAgB,CAACjpC,KAAK,SAAS9B,KAAKd,GAAG,CAAC4C,KAAK,SAAS9B,KAAK7D,EAAE+uC,qBAAqB,CAACppC,KAAK,SAAS9B,KAAK7D,EAAE8uC,kBAAkB,CAACnpC,KAAKpC,EAAEM,KAAKZ,IAAIQ,EAAE,CAAClE,EAAEI,GAwCvpBgE,EAAErE,EAAEyuC,QAAQ,CAACxsC,KAAK,iBAAiB+rC,YAAY,CAACC,KAAK,GAAGzqC,IAAI0qC,kBAAkB,CAAC,OAAO,SAASC,WAAW,KAAI,CAAEC,QAAQ,CAAC,CAAChrC,KAAKpB,EAAEuE,SAAStG,EAAEsG,SAAS8pC,YAAY,IAAIhC,cAAcrqC,EAAEsqC,gBAAgBpqC,IAAIqqC,gBAxCmdjqC,IAAI,IAAIE,EAAEyc,GAAE,IAAIhhB,EAAEsG,SAAStG,EAAEmD,KAAKI,GAAGiB,EAAEwc,GAAE,MAAM5gB,EAAEkG,SAASlG,EAAE+C,KAAKI,GAAGkB,EAAE8Z,GAAE,SAASve,EAAEsG,SAASvE,GAAG+C,EAAEqkB,GAAGnpB,EAAEsG,UAAUiM,EAAE,CAAC,CAACvQ,KAAK,IAAIoE,KAAK,OAAO,CAACpE,KAAK,IAAIoE,KAAK,OAAO,CAACpE,KAAK,IAAIoE,KAAK,OAAO,CAACpE,KAAK,qBAAqBoE,KAAK,OAAO,CAACpE,KAAK,QAAQoE,KAAKtB,IAAI,MAAM,mBAC34BA,uEAGgBP,EAAE6B,KAAK2lC,iDACPxnC,EAAE6B,KAAK2lC,qBACnC1nC,EAAEspC,iBAAiBp7B,GAAGg7B,iBAAiBhpC,EAAEC,EAAEC,SAC3CJ,EAAE+oC,UAAU,CAACtpC,EAAEA,EAAE,oZAWHwlB,GAAGxkB,EAAEvB,22BAoBKimB,GAAG,QAAQjmB,kCAAE,GAEyL,CAACgrC,OAAOrqC,EAAEiqC,QAAQ,EAAE,KAAK,GAAG,OAAO7gB,GAAGvtB,EAAEqE,EAAE3D,EAAE2uC,UAAU3uC,EAAEwX,SAASxX,EAAE4uC,eAAe5uC,EAAE+uC,qBAAqBprC,GAAGopB,GAAG,CAACztB,EAAEC,EAAEI,EAAEI,KAAK,IAAIC,EAAE,CAACD,EAAE4uC,UAAU5uC,EAAE6uC,eAAe7uC,EAAEovC,aAAapuC,EAAE,GAAGO,EAAE,CAACwC,EAAEiY,KAAKmD,KAAKnf,EAAEsvC,UAAUtuC,GAAG8c,EAAE9B,KAAKmD,KAAKnf,EAAE6uC,eAAe7tC,GAAGsD,EAAEtE,EAAE4uC,UAAU5uC,EAAEyX,UAAUvU,EAAE,CAAC,CAAC0C,KAAK,SAAS9B,KAAK9D,EAAE6uC,gBAAgB,CAACjpC,KAAK,SAAS9B,KAAK9D,EAAEgvC,qBAAqB,CAACppC,KAAK,SAAS9B,KAAK9D,EAAEsvC,WAAW,CAAC1pC,KAAK,SAAS9B,KAAK9D,EAAEyX,UAAU,CAAC7R,KAAK,SAAS9B,KAAK9D,EAAEovC,cAqClpB,OAAO7vC,EAAEyuC,QAAQ,CAACxsC,KAAK,iBAAiB+rC,YAAY,CAACE,kBAAkB,CAAC,OAAO,SAASC,WAAW,KAAI,CAAEC,QAAQ,CAAC,CAAChrC,KAAK1C,EAAE6F,SAAStG,EAAEsG,SAAS8pC,YAAY,IAAIhC,cAAcrsC,EAAEssC,gBAAgB3qC,IAAI4qC,gBArCge9qC,IAAI,IAAIM,EAAEkd,GAAE,QAAQhhB,EAAEsG,SAAStG,EAAEmD,MAAMY,EAAEid,GAAE,IAAI5gB,EAAEkG,SAASlG,EAAE+C,MAAMa,EAAEua,GAAE,SAASve,EAAEsG,SAAS7F,GAAyI,MAAM,6DAEj3BqD,EAAEsC,KAAKxF,+CACPkD,EAAEsC,KAAKxF,mBACnC4C,EAAEmqC,iBAJiwB,CAAC,CAAC3rC,KAAK,IAAIoE,KAAK,OAAO,CAACpE,KAAK,IAAIoE,KAAK,OAAO,CAACpE,KAAK,IAAIoE,KAAK,OAAO,CAACpE,KAAK,YAAYoE,KAAK,OAAO,CAACpE,KAAK,gBAAgBoE,KAAK,SAIz2BmnC,iBAAiBzpC,EAAEC,EAAEC,SAC3CR,EAAE4pC,UAAU,CAAC5rC,EAAEA,EAAE,0SAQJsC,EAAEsC,KAAK2lC,knCAAO,GAwB4L,CAACwC,OAAO,CAACvuC,EAAEI,GAAG+tC,QAAQ,CAAC,KAAK,EAAC,EAAG1gB,GAAG,CAAC1tB,EAAEC,EAAEI,EAAEI,EAAEC,EAAEe,EAAEO,EAAE2B,EAAEH,EAAEC,EAAEM,KAAK,IAAIC,EAAEwpB,GAAGxtB,EAAEC,EAAEI,EAAEmD,EAAEC,EAAEM,GAAG0pB,GAAGztB,EAAEgE,EAAEvD,EAAEgD,EAAC,EAAGkqB,GAAG,CAAC3tB,EAAEC,KAAK,IAAII,EAAE,CAACJ,EAAEovC,UAAUpvC,EAAEiY,SAASjY,EAAEqvC,eAAervC,EAAE6vC,UAAUrvC,EAAER,EAAEqvC,eAAe5uC,EAAET,EAAE0vC,gBAAgBluC,EAAExB,EAAE6vC,SAAS9tC,EAAE,GAAG2B,EAAE,CAACa,EAAEiY,KAAKmD,KAAK3f,EAAE6vC,SAAS9tC,GAAGuc,EAAE9B,KAAKmD,KAAK3f,EAAEqvC,eAAettC,GAAG+C,EAAE9E,EAAEovC,UAAUpvC,EAAEiY,UAAU1U,EAAE,CAACxD,EAAEwuC,OAAO,GAAGxuC,EAAEwuC,OAAO,GAAGxuC,EAAEwuC,OAAO,IAAI/qC,EAAE,CAAC,CAAC4C,KAAK,SAAS9B,KAAK9D,GAAG,CAAC4F,KAAK,SAAS9B,KAAK7D,GAAG,CAAC2F,KAAK,SAAS9B,KAAK9C,GAAG,CAAC4E,KAAK,SAAS9B,KAAKtE,EAAEiY,UAAU,CAAC7R,KAAK,SAAS9B,KAAKtE,EAAE6vC,UAAU,CAACzpC,KAAK,SAAS9B,KAAKtE,EAAE2vC,YAAY,CAACvpC,KAAK,SAAS9B,KAAKtE,EAAE2vC,WAAW3vC,EAAE2vC,WAAW3vC,EAAE4vC,cAuD7wB,OAAO7vC,EAAEyuC,QAAQ,CAACxsC,KAAK,mBAAmB+rC,YAAY,CAACE,kBAAkB,CAAC,OAAO,OAAO,SAASC,WAAW,KAAI,CAAEC,QAAQ,CAAC,CAAChrC,KAAK/C,EAAEkG,SAASvG,EAAEwuC,OAAO,GAAGjoC,SAAS8pC,YAAY,GAAG,CAACjtC,KAAK/C,EAAEkG,SAASvG,EAAEwuC,OAAO,GAAGjoC,SAAS8pC,YAAY,GAAG,CAACjtC,KAAK/C,EAAEkG,SAASvG,EAAEwuC,OAAO,GAAGjoC,SAAS8pC,YAAY,IAAIhC,cAAc1qC,EAAE2qC,gBAAgB7qC,IAAI8qC,gBAvD8dvqC,IAAI,IAAIC,EAAEua,GAAE,WAAWhb,EAAE,GAAG+C,SAASlG,GAAG6D,EAAEsa,GAAE,WAAWhb,EAAE,GAAG+C,SAASlG,GAAG8D,EAAEqa,GAAE,WAAWhb,EAAE,GAAG+C,SAASlG,GAAG+D,EAAE6c,GAAE,QAAQzd,EAAE,GAAG+C,SAAS/C,EAAE,GAAGJ,MAAMiB,EAAE4c,GAAE,SAASzd,EAAE,GAAG+C,SAAS/C,EAAE,GAAGJ,MAAMkB,EAAE2c,GAAE,OAAOzd,EAAE,GAAG+C,SAAS/C,EAAE,GAAGJ,MAAMoB,EAAEJ,EAAEiC,KAAK2lC,QAAkM,MAAM,iEAEvqCxnC,iDACEA,iDACAA,iDACAA,eAClCR,EAAE4pC,iBANugC,CAAC,CAAC3rC,KAAK,IAAIoE,KAAK,OAAO,CAACpE,KAAK,IAAIoE,KAAK,OAAO,CAACpE,KAAK,IAAIoE,KAAK,OAAO,CAACpE,KAAK,YAAYoE,KAAK,OAAO,CAACpE,KAAK,YAAYoE,KAAK,OAAO,CAACpE,KAAK,cAAcoE,KAAK,OAAO,CAACpE,KAAK,MAAMoE,KAAK,SAMnqCmnC,iBAAiBppC,EAAEC,EAAEC,EAAEL,EAAEC,EAAEC,SACjDH,EAAEqpC,UAAU,CAACrrC,EAAEA,EAAE,6fAWFwC,2BACAA,2BACAA,ilDAAC,GAmCoU,CAACgqC,OAAOhrC,EAAE4qC,QAAQ,EAAE,GAAG,GAAG,IAAG,EAAGxgB,GAAG,CAAC5tB,EAAEC,KAAK,IAAII,EAAEitB,GAAGttB,EAAEwuC,OAAOvuC,IAAIQ,EAAEC,EAAEe,GAAGksB,GAAG3tB,EAAEK,GAAG,OAAOqtB,GAAG1tB,EAAES,EAAEC,EAAEe,EAAEzB,EAAEwuC,OAAO,QAAG,OAAO,OAAO,EAAOxuC,EAAEwuC,OAAO,GAAGnuC,EAAEJ,EAAC,CAAC,IAAoBqwC,GAAGvwC,GAAE,KAAkBqM,KAAKo+B,KAAKJ,KAAKyB,KAAKhe,GAAG,CAAC7tB,EAAEC,KAAK,IAAID,GAAc,IAAXA,EAAE0B,OAAW,MAAM,IAAIJ,MAAM,wCAAwC,IAAIjB,EAAE,CAACI,EAAEC,EAAEe,KAAK,IAAIO,EAAEtB,EAAEgB,OAAO,GAAGM,IAAIvB,EAAEiB,OAAO,MAAM,IAAIJ,MAAM,GAAGG,wBAAwBO,KAAKtB,EAAEud,SAAQ,CAACta,EAAEH,KAAK,GAAGG,IAAIlD,EAAE+C,GAAG,MAAM,IAAIlC,MAAM,GAAGG,UAAU+B,kBAAiB,GAAE,EAAG,GAAGxD,EAAE,GAAGoD,KAAK1B,OAAO,EAAE,CAAC,IAAIjB,EAAa,SAAXR,EAAEyD,OAAgBzD,EAAE6X,QAAQ9X,EAAE,GAAGoD,KAAKgO,OAAO,GAAGpR,EAAE,GAAGoD,KAAKgO,OAAO,GAAGu2B,OAAO3nC,EAAE,GAAGoD,KAAKgO,MAAM,EAAEpR,EAAE,GAAGoD,KAAK1B,OAAO,IAAI1B,EAAE,GAAGoD,KAAKgO,MAAM,EAAEnR,EAAE6X,QAAQ,OAAE,GAAQzX,EAAEL,EAAE,GAAGoD,KAAK3C,EAAE,uBAAuBJ,EAAEL,EAAE,GAAGoD,KAAK3C,EAAE,mBAAmBJ,EAAEL,EAAE,GAAGoD,KAAK3C,EAAE,sBAAsBJ,EAAEL,EAAE,GAAGoD,KAAK3C,EAAE,oBAAoB,MAAMJ,EAAEL,EAAE,GAAGoD,KAAK,CAAC,GAAG,uBAAuB/C,EAAEL,EAAE,GAAGoD,KAAK,CAAC,GAAG,mBAAmB/C,EAAEL,EAAE,GAAGoD,KAAK,CAAC,GAAG,sBAAsB/C,EAAEL,EAAE,GAAGoD,KAAK,CAAC,GAAG,oBAAmB,EAAG0qB,GAAG,CAAC9tB,EAAEC,KAAK,IAAI0X,QAAQtX,EAAEyX,QAAQrX,EAAEiD,OAAOhD,GAAGT,EAAEwB,EAAEzB,EAAE,GAAGoD,KAAKpB,EAAEvB,EAAE6oB,GAAG7nB,EAAEA,EAAEC,OAAO,IAAI,EAAEiC,EAAM,SAAJjD,GAAYe,EAAEC,OAAO,EAAEM,EAAE,EAAEwB,EAAE2e,GAAEha,KAAK1G,GAAGO,EAAEyB,EAAEqmB,GAAGroB,EAAEC,SAASjB,EAAEsD,EAAEN,EAAEhC,EAAEC,OAAOD,EAAEuC,EAAEid,GAAE,IAAIjhB,EAAE,GAAGuG,SAASvG,EAAE,GAAGoD,KAAKpB,GAAGiC,EAAEgd,GAAE,QAAQjhB,EAAE,GAAGuG,SAASvG,EAAE,GAAGoD,KAAKO,GAAGO,EAAE+c,GAAE,OAAOjhB,EAAE,GAAGuG,SAASvG,EAAE,GAAGoD,KAAKO,GAAGQ,EAAE8c,GAAE,YAAYjhB,EAAE,GAAGuG,SAASvG,EAAE,GAAGoD,KAAKO,GAAGS,EAAE6c,GAAE,WAAWjhB,EAAE,GAAGuG,SAASvG,EAAE,GAAGoD,KAAKO,GAAGU,EAAEma,GAAE,IAAIxe,EAAE,GAAGuG,SAASxC,EAAE/B,GAiBroD,MAAM,CAACC,KAAK,qBAAqB+rC,YAAY,CAACC,KAAK,GAAGhuC,EAAE0X,WAAW1X,EAAEyD,UAAUjD,KAAKuB,IAAIksC,kBAAkBzqC,EAAE,CAAC,OAAO,OAAO,OAAO,OAAO,aAAQ,GAAQ8qC,gBAd2C9pC,GAAG,uBACxLpE,SAChBoE,EAAEkpC,gBAAgB,aAAa,OAAOH,iBAAiBxpC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,SACjEI,EAAE4oC,kBACF5oC,EAAE2oC,sCAAsC,mDAClB/oC,EAAE6nC,gBAAgB,gBAAgBlqC,cARmlD,MAAK,IAAIyC,EAAE,GAAG,GAAGhE,EAAEgE,EAAE,iBAA4B,IAAXhD,EAAEC,OAAW,KAAS,SAAJhB,EAAW,iBAAiBe,EAAEC,OAAO,QAAQM,IAAI,2BAA2B,GAAO,SAAJtB,EAAW+D,EAAE,iBACrxDJ,EAAEsoC,WAAW,gBAAgB,IAAI,mCACnBtoC,EAAE8nC,gBAAgB,wBAAwB,CAAC1nC,EAAE,kBAAkBR,EAAEoC,KAAK0lC,mEAC7CtqC,EAAEC,OAAO,MAAM,IAAI,IAAIgD,EAAE,EAAEA,EAAET,EAAEyoC,KAAKhoC,IAAID,GAAG,YAAYC,sBAAsBA,MAAMD,GAAG,iBAAiBR,EAAEkoC,gBAAgB,cAAc,CAAC,OAAO1nC,GAM9LH,uBACYL,EAAE4oC,YAAY,+BACf3oC,EAAE2oC,YAAY,oCACT1oC,EAAE0oC,YAAY,mCACfzoC,EAAEyoC,YAAY,4BACrB7oC,EAAE6oC,YAAY,0GAEtBxoC,EAAEuoC,YAAY,aAAa,gBAC+IuB,WAAW,KAAI,CAAEC,QAAQ,CAAC,CAAChrC,KAAKpD,EAAE,GAAGoD,KAAKmD,SAASvG,EAAE,GAAGuG,WAAW8nC,cAAc,CAAC7pC,EAAEiY,KAAKmD,KAAKpc,EAAE,KAAK8qC,gBAAgB7qC,EAAE,CAAC,CAAC4C,KAAK,SAAS9B,KAAKf,MAAM8a,GAAE7c,IAAI,CAAC,CAAC4E,KAAK,SAAS9B,KAAKf,MAAK,EAAGuqB,GAAG/tB,GAAG8oB,GAAG9oB,GAAGguB,GAAG,CAAChuB,EAAEC,KAAK,IAAIuuC,OAAOnuC,EAAEkwC,YAAY9vC,GAAGT,EAAEU,EAAEqtB,GAAG,IAAI9tB,EAAEswC,YAAY9vC,IAAI,GAAG5C,EAAG6E,OAAO8tC,sBAAsB3iB,GAAGxtB,EAAEK,GAAGT,EAAE8X,aAAa,MAAM,IAAIzW,MAAM,yDAAyDtB,EAAEyuC,QAAQ3gB,GAAGztB,EAAEK,GAAE,CAAC,IAAiB+vC,GAAG1wC,GAAE,KAAkByqC,KAAKqB,KAAK5d,GAAGjuB,IAAI,GAAsB,IAAnBA,EAAE,GAAGoD,KAAK1B,OAAW,MAAM,IAAIJ,MAAM,kCAAkC,IAAI,CAAC,IAAI,IAAI,MAAM8H,SAASpJ,EAAE,GAAGoD,KAAK,IAAI,MAAM,IAAI9B,MAAM,iDAAiD,GAAsB,IAAnBtB,EAAE,GAAGoD,KAAK1B,OAAW,MAAM,IAAIJ,MAAM,yCAAyC,GAAGtB,EAAE,GAAGoD,KAAK,KAAKpD,EAAE,GAAGoD,KAAK,GAAG,MAAM,IAAI9B,MAAM,oDAAmD,EAAG4sB,GAAGluB,IAAI,IAAIC,EAAED,EAAE,GAAGoD,KAAK/C,EAAEL,EAAE,GAAGoD,KAAK,GAAG3C,EAAE0hB,GAAEha,KAAKlI,GAAG,EAAES,EAAEV,EAAE,GAAGuG,SAAS9E,EAAEwf,GAAE,QAAQvgB,EAAET,EAAE,GAAG+B,EAAEif,GAAE,OAAOvgB,EAAE,CAACL,GAAG,GAAGsD,EAAEsd,GAAE,WAAWvgB,EAAET,EAAE,GAAGuD,EAAEgb,GAAE,SAAS9d,EAAET,EAAE,GAAG,MAAM,CAACgC,KAAK,UAAUksC,WAAW,KAAI,CAAEC,QAAQ,CAAC,CAAChrC,KAAKnD,EAAEsG,SAASvG,EAAE,GAAGuG,WAAW8nC,cAAc,CAAC7pC,EAAEiY,KAAKmD,KAAKnf,EAAE,OAAO8tC,gBAAgBxqC,GAAG,wBACtvC1D,cACjB0D,EAAEypC,iBAAiB/rC,EAAEO,EAAE2B,EAAEH,WAEzBO,EAAEspC,oBACAtpC,EAAEqpC,sCAAsC3sC,uBAC5BgB,EAAEorC,YAAY,0BACtB7qC,EAAE6qC,YAAY,8BAA8BlpC,EAAEkpC,YAAY,uBAC9DrpC,EAAEopC,YAAY,aAAa,gBAC7B,EAAGze,GAAGnuB,IAAIiuB,GAAGjuB,EAAEwuC,QAAQxuC,EAAEyuC,QAAQvgB,GAAGluB,EAAEwuC,QAAO,CAAC,IAAoH5tB,GAAG7gB,GAAE,KAAkBmnC,KAAKsD,KAAKJ,KAAKyB,KAAKzd,GAAG,CAACpuB,EAAEC,EAAEI,EAAEI,EAAEC,EAAEe,KAAK,IAAIO,EAAEya,KAAKmD,KAAK3f,EAAE,GAAG0D,EAAE,GAAsBA,EAAT,iBAAHjD,EAAc,GAAGA,OAASA,EAAE,KAAK,IAAI8C,EAAEyd,GAAE,YAAY5gB,EAAE,CAAC2B,GAAG,GAAGyB,EAAE+a,GAAE,aAAa/d,EAAE,CAACuB,GAAG,GAAG,MAAM,WAC3VhC,EAAE2tC,gBAAgB,WAAW,OAAOH,iBAAiBhqC,EAAEC,WAE3DhC,GAAG,WAEHzB,EAAEqtC,oBACArtC,EAAEotC,sCAAsC,uCAEhC5pC,EAAEqpC,YAAY,uBACtBppC,EAAEmpC,YAAY,aAAajpC,SAAE,EAC7B0qB,GAAG,CAACruB,EAAEC,EAAEI,EAAEI,EAAEC,EAAEe,EAAEzB,EAAEuG,YAAW,CAAEtE,KAAKhC,EAAE+tC,YAAY,CAACC,KAAKvtC,EAAEwtC,kBAAkB,CAAC,SAASK,gBAAgBvsC,GAAGosB,GAAGpsB,EAAEmgB,GAAEha,KAAKnI,EAAEoD,MAAMpD,EAAEuG,SAAS9E,EAAEpB,EAAEI,GAAG0tC,WAAWnsC,IAAG,CAAEosC,QAAQ,CAAC,CAAChrC,KAAKpD,EAAEoD,KAAKmD,SAAS9E,IAAI4sC,cAAc,CAAC7pC,EAAEiY,KAAKmD,KAAKuC,GAAEha,KAAKnG,EAAE,GAAGoB,MAAM,GAAG,IAAIkrC,gBAAgB,CAAC,CAACjoC,KAAK,SAAS9B,KAAKkY,KAAKmD,KAAKuC,GAAEha,KAAKnI,EAAEoD,MAAM,SAASkrB,GAAGtuB,IAAIA,EAAEyuC,QAAQpgB,GAAGruB,EAAEwuC,OAAO,GAAG,MAAM,OAAM,EAAGjgB,GAAGvuB,IAAIA,EAAEyuC,QAAQpgB,GAAGruB,EAAEwuC,OAAO,GAAG,OAAO,QAAO,EAAGhgB,GAAGxuB,IAAIA,EAAEyuC,QAAQpgB,GAAGruB,EAAEwuC,OAAO,GAAG,QAAQ,SAAQ,EAAG/f,GAAGzuB,IAAIA,EAAEyuC,QAAQpgB,GAAGruB,EAAEwuC,OAAO,GAAG,OAAO,QAAO,EAAG9f,GAAG1uB,IAAIA,EAAEyuC,QAAQpgB,GAAGruB,EAAEwuC,OAAO,GAAG,QAAQ,SAAQ,EAAG7f,GAAG3uB,IAAIA,EAAEyuC,QAAQpgB,GAAGruB,EAAEwuC,OAAO,GAAG,OAAO,QAAO,EAAG5f,GAAG5uB,IAAIA,EAAEyuC,QAAQpgB,GAAGruB,EAAEwuC,OAAO,GAAG,QAAQ,SAAQ,EAAG3f,GAAG7uB,GAAG8oB,GAAG9oB,GAAG8uB,GAAG,CAAC9uB,EAAEC,KAAK,IAAII,EAAE,OAAOJ,EAAEoV,IAAI,KAAK,GAAGhV,EAAE,YAAY,MAAM,KAAK,EAAEA,EAAE,YAAY,MAAM,KAAK,GAAGA,EAAE,YAAY,MAAM,KAAK,EAAEA,EAAE,YAAY,MAAM,KAAK,EAAEA,EAAE,aAAa,MAAM,QAAQ,MAAM,IAAIkH,WAAW,0EAA0EtH,EAAEoV,MAAMrV,EAAEyuC,QAAQpgB,GAAGruB,EAAEwuC,OAAO,GAAG,OAAOnuC,OAAE,EAAOJ,EAAEoqC,SAASpqC,EAAEoV,IAAG,EAAG0Z,GAAG/uB,IAAI,IAAIC,EAAED,EAAE0B,QAAQ,GAAe,IAAZ1B,EAAE,GAAGuE,KAASvE,EAAE,GAAG0wC,kBAAkB,GAAGxnB,GAAG7oB,EAAEL,EAAE0B,QAAQ,GAAe,IAAZ1B,EAAE,GAAGuE,KAASvE,EAAE,GAAG0wC,kBAAkB,GAAGvnB,GAAG,OAAOL,GAAG,CAAC5T,IAAIjV,EAAEkV,IAAI9U,GAAE,EAAG2uB,GAAG,CAAChvB,EAAEC,KAAK,IAAII,EAAoB,IAAlBL,EAAEwuC,OAAO9sC,OAAWzB,EAAE8uB,GAAG/uB,EAAEwuC,QAAQ/tC,EAAE4oB,GAAGrpB,EAAEwuC,OAAO,GAAGjoC,UAAUvG,EAAEyuC,QAAQpgB,GAAGruB,EAAEwuC,OAAO,GAAG,QAAO9tC,GAAG,SAASA,4BAA2B,+BAChxCD,aAAaA,KAAKJ,EAAE6U,qCACpBzU,aAAaA,KAAKJ,EAAE8U,WAC9C9U,EAAEgqC,UAAU,CAACmE,OAAO,CAAC,IAAG,EAAGvf,GAAGjvB,IAAIA,EAAEyuC,QAAQpgB,GAAGruB,EAAEwuC,OAAO,GAAG,OAAO,QAAO,EAAGtf,GAAGlvB,IAAIA,EAAEyuC,QAAQpgB,GAAGruB,EAAEwuC,OAAO,GAAG,MAAM,OAAM,EAAGrf,GAAGnvB,IAAIA,EAAEyuC,QAAQpgB,GAAGruB,EAAEwuC,OAAO,GAAG,OAAO,QAAO,EAAGpf,GAAGpvB,GAAG8oB,GAAG9oB,GAAGqvB,GAAG,CAACrvB,EAAEC,KAAK,IAAII,EAAEgpB,GAAGrpB,EAAEwuC,OAAO,GAAGjoC,UAAUvG,EAAEyuC,QAAQpgB,GAAGruB,EAAEwuC,OAAO,GAAG,OAAM/tC,GAAG,YAAYA,MAAK,0BAChQJ,KAAKJ,EAAEmV,8BAEZ/U,SAASA,iGAIHA,eAAeA,oFAElCJ,EAAEoqC,UAAS,EAAG/a,GAAG,CAACtvB,EAAEC,EAAE,QAAQ,eACvBA,6BACAA,+BACAA,gCACAA,+BACAA,gCACAA,sCAEKD,SAASA,uKAIvBuvB,GAAGvvB,IAAI,IAAIC,EAAEopB,GAAGrpB,EAAEwuC,OAAO,GAAGjoC,UAAUvG,EAAEyuC,QAAQpgB,GAAGruB,EAAEwuC,OAAO,GAAG,OAAMnuC,GAAG,YAAYA,MAAKivB,GAAG,QAAQrvB,KAAKA,IAAG,EAAGuvB,GAAGxvB,IAAIA,EAAEyuC,QAAQpgB,GAAGruB,EAAEwuC,OAAO,GAAG,MAAM,OAAM,EAAG/e,GAAGzvB,IAAIA,EAAEyuC,QAAQpgB,GAAGruB,EAAEwuC,OAAO,GAAG,QAAQ,SAAQ,EAAG9e,GAAG1vB,IAAI,IAAIC,EAAEopB,GAAGrpB,EAAEwuC,OAAO,GAAGjoC,UAAUvG,EAAEyuC,QAAQpgB,GAAGruB,EAAEwuC,OAAO,GAAG,QAAOnuC,GAAG,SAASA,uBAAuBA,4BAA2BivB,GAAG,QAAQrvB,KAAKA,IAAG,EAAG0vB,GAAG,CAAC3vB,EAAEC,KAAK,IAAII,EAAEgpB,GAAGrpB,EAAEwuC,OAAO,GAAGjoC,UAAUvG,EAAEyuC,QAAQpgB,GAAGruB,EAAEwuC,OAAO,GAAG,aAAY/tC,GAAG,8BAA8BA,MAAMA,MAAMA,aAAaJ,YAAW,6BAA6BA,KAAKJ,EAAEmV,UAAUnV,EAAEoqC,UAAS,EAAGza,GAAG5vB,IAAIA,EAAEyuC,QAAQpgB,GAAGruB,EAAEwuC,OAAO,GAAG,OAAMvuC,GAAG,IAAIA,MAAI,EAAG4vB,GAAG7vB,IAAIA,EAAEyuC,QAAQpgB,GAAGruB,EAAEwuC,OAAO,GAAG,OAAMvuC,GAAG,IAAIA,MAAI,EAAG6vB,GAAG9vB,IAAIA,EAAEyuC,QAAQpgB,GAAGruB,EAAEwuC,OAAO,GAAG,cAAavuC,GAAG,OAAOA,MAAI,EAAG8vB,GAAG/vB,IAAI,IAAIC,EAAEopB,GAAGrpB,EAAEwuC,OAAO,GAAGjoC,UAAUvG,EAAEyuC,QAAQpgB,GAAGruB,EAAEwuC,OAAO,GAAG,QAAOnuC,GAAG,eAAeJ,YAAYI,MAAMA,YAAYJ,aAAW,EAAG+vB,GAAGhwB,IAAIA,EAAEyuC,QAAQpgB,GAAGruB,EAAEwuC,OAAO,GAAG,WAAUvuC,GAAG,sBAAsBA,SAAO,EAAGgwB,GAAGjwB,IAAIA,EAAEyuC,QAAQpgB,GAAGruB,EAAEwuC,OAAO,GAAG,MAAM,OAAM,EAAGte,GAAGlwB,IAAIA,EAAEyuC,QAAQpgB,GAAGruB,EAAEwuC,OAAO,GAAG,OAAO,QAAO,EAAGre,GAAGnwB,IAAIA,EAAEyuC,QAAQpgB,GAAGruB,EAAEwuC,OAAO,GAAG,OAAO,QAAO,EAAGpe,GAAGpwB,IAAIA,EAAEyuC,QAAQpgB,GAAGruB,EAAEwuC,OAAO,GAAG,MAAM,OAAM,EAAGne,GAAGrwB,IAAIA,EAAEyuC,QAAQpgB,GAAGruB,EAAEwuC,OAAO,GAAG,OAAO,QAAO,EAAGle,GAAG,CAACtwB,EAAEC,KAAK,IAAII,EAAEgpB,GAAGrpB,EAAEwuC,OAAO,GAAGjoC,UAAU,OAAOvG,EAAEyuC,QAAQpgB,GAAGruB,EAAEwuC,OAAO,GAAG,mBAAkB/tC,GAAG,eAAeJ,YAAYI,MAAMA,gCAA+B,wCAAwCJ,MAAMJ,EAAEmV,UAAUnV,EAAEoqC,WAAW,GAAG9Z,GAAGvwB,IAAIA,EAAEyuC,QAAQpgB,GAAGruB,EAAEwuC,OAAO,GAAG,MAAM,OAAM,CAAC,IAAiBmC,GAAG5wC,GAAE,KAAkByqC,KAAKqB,KAAKjrB,KAAK4P,GAAGxwB,IAAI,GAAsB,IAAnBA,EAAE,GAAGoD,KAAK1B,OAAW,MAAM,IAAIJ,MAAM,kCAAkC,IAAI,CAAC,KAAK,KAAK,OAAO8H,SAASpJ,EAAE,GAAGoD,KAAK,IAAI,MAAM,IAAI9B,MAAM,8CAA8C,GAAsB,IAAnBtB,EAAE,GAAGoD,KAAK1B,OAAW,MAAM,IAAIJ,MAAM,yCAAyC,GAAGtB,EAAE,GAAGoD,KAAK,KAAKpD,EAAE,GAAGoD,KAAK,GAAG,MAAM,IAAI9B,MAAM,oDAAmD,EAAGmvB,GAAGzwB,IAAI,IAAIC,EAAED,EAAE,GAAGoD,KAAKgO,QAAQnR,EAAE,GAAGA,EAAE,GAAG,EAAE,IAAII,EAAE4gB,GAAE,QAAQjhB,EAAE,GAAGuG,SAASvG,EAAE,GAAGoD,KAAK,GAAG3C,EAAEwgB,GAAE,OAAOjhB,EAAE,GAAGuG,SAAS,CAACvG,EAAE,GAAGoD,KAAK,IAAI,GAAG1C,EAAE8d,GAAE,SAASxe,EAAE,GAAGuG,SAAStG,EAAE,GAAGwB,EAAE0gB,GAAEha,KAAKlI,GAAG,EAAE+B,EAAEonB,GAAGppB,EAAE,GAAGuG,UAAU,MAAM,CAACtE,KAAK,gBAAgBksC,WAAW,KAAI,CAAEC,QAAQ,CAAC,CAAChrC,KAAKnD,EAAEsG,SAASvG,EAAE,GAAGuG,WAAW8nC,cAAc,CAAC7pC,EAAEiY,KAAKmD,KAAKne,EAAE,OAAO8sC,gBAAgB/qC,GAAG,0DAE7pExD,EAAE,GAAGoD,KAAK,GAAG,EAAE,YAEpCI,EAAEgqC,iBAAiBntC,EAAEI,EAAEC,WAEvB4uB,GAAG,QAAQttB,KAAKA,WAEhBwB,EAAE6pC,oBACA7pC,EAAE4pC,sCAAsC3rC,2YAQxCf,EAAEksC,YAAY,aAAa,gCAC7B,EAAGlc,GAAG1wB,IAAIwwB,GAAGxwB,EAAEwuC,QAAQxuC,EAAEyuC,QAAQhe,GAAGzwB,EAAEwuC,QAAO,CAAC,IAA+CoC,GAAG7wC,GAAE,KAAkBmnC,KAAKsD,KAAKqB,KAAKlb,GAAG,CAAC3wB,EAAEC,EAAEI,EAAEI,EAAEC,EAAEe,EAAEO,EAAE2B,EAAEH,EAAEC,EAAEM,EAAEC,EAAEC,KAAK,IAAIC,EAAEC,EAAY,iBAAHR,EAAYO,EAAEC,EAAE,CAACqO,EAAEC,IAAI,GAAG9O,MAAM6O,OAAOC,MAAgB,mBAAH9O,EAAcO,EAAEC,EAAER,GAAGO,EAAEP,EAAEktC,OAAO1sC,EAAER,EAAEmtC,QAAQ,IAA+G/rC,EAA3GX,EAAEJ,EAAE/D,EAAEyB,OAAOzB,EAAEoE,EAAEL,EAAE3D,EAAEqB,OAAOrB,EAAEiE,EAAEN,EAAEvD,EAAEiB,OAAOjB,EAAE+D,EAAEga,GAAE,aAAaza,EAAEO,EAAE,GAAGG,EAAEwc,GAAE,QAAQzd,EAAEY,EAAE,GAAGM,EAAEuc,GAAE,QAAQxd,EAAEY,EAAE,GAAK,GAAG3D,EAAE,GAAGe,EAAE,CAAC,IAAI+Q,EAAc,IAAZ2P,GAAEha,KAAKlI,GAAOwS,EAAc,IAAZ0P,GAAEha,KAAK9H,GAAOqS,EAAEzS,EAAEyB,OAAO,GAAGzB,EAAEA,EAAEyB,OAAO,GAAG,GAAI,EAAEiR,EAAEtS,EAAEqB,OAAO,GAAGrB,EAAEA,EAAEqB,OAAO,GAAG,GAAI,EAAOqD,EAALyN,GAAGC,EAAIjO,EAAEooC,YAAY,aAAazoC,EAAEqO,EAAE,GAAG/N,EAAE4B,KAAKxF,SAAS4D,EAAEooC,YAAY,UAAUpoC,EAAEooC,YAAY,cAAcp6B,EAAE,GAAG/N,EAAE2B,KAAKxF,SAAS6D,EAAEmoC,YAAY,UAAUnoC,EAAEmoC,YAAY,gBAAkB,qCACnpBroC,EAAE0nC,gBAAgB,kDACxBznC,EAAE2nC,2BAA2B,gBAAgB5nC,kCAC7CE,EAAE0nC,2BAA2B,gBAAgB5nC,oBAC3DA,EAAEooC,YAAY,aAAazoC,EAAEnC,GAAG0Q,EAAEjO,EAAEooC,YAAY,gBAAgB,GAAGpoC,EAAE4B,KAAKxF,SAAS4D,EAAEooC,YAAY,iCAAiC7qC,GAAG2Q,EAAEjO,EAAEmoC,YAAY,gBAAgB,GAAGnoC,EAAE2B,KAAKxF,SAAS6D,EAAEmoC,YAAY,gDACzM,MAAM9nC,EAAEP,EAAEooC,YAAY,aAAazoC,EAAEM,EAAEooC,YAAY,cAAcnoC,EAAEmoC,YAAY,oBAAoB,CAAC,IAAIprC,EAAE,MAAM,IAAIH,MAAM,wFAAwF,IAAIkR,EAAE,CAACC,EAAEC,EAAEC,EAAE,MAAM,IAAIC,EAAG,eAAeF,gBAAgBA,KAAKG,EAAE,eAAeH,gBAAgBA,KAAK,MAAM,kCACxSA,OAAOlO,EAAE0nC,gBAAgB,qBAAqBx5B,kCACpDA,OAAOjO,EAAE2nC,2BAA2B,gBAAgB15B,IAAIlO,+BACxDkO,OAAOhO,EAAE0nC,2BAA2B,gBAAgB15B,IAAIlO,8BACzDkO,cAAcA,kCACdA,cAAcA,sCACVA,cAAcA,sCACdA,cAAcA,wBAC5BD,KAAKC,QAAQC,KAAKzO,EAAE0O,EAAGC,kBAAE,EACpB9N,EAAF,IAAJhB,EAAQ,uDAEPyO,EAAE,OAAO,EAAE,uBACXA,EAAE,OAAO,EAAE,uBACXA,EAAE,OAAO,EAAE,uBACXA,EAAE,OAAO,EAAE,gHACgF,iBAC3FA,EAAE,yBAAyB,mBAC3BA,EAAE,yBAAyB,mBAC3BA,EAAE,yBAAyB,mBAC3BA,EAAE,yBAAyB,gBAC9B,CAAC,MAAM,aACRxS,EAAE2tC,gBAAgB,WAAW,OAAOH,iBAAiB/oC,EAAEC,EAAEF,iBAEzDP,GAAG,iBAEHjE,EAAEqtC,wBACFrtC,EAAEotC,sCAAsC,iCACxCroC,YAAC,EACD6rB,GAAG,CAAC5wB,EAAEC,EAAEI,EAAEI,EAAEC,EAAEe,EAAEO,EAAE3B,EAAEkG,YAAY,IAAI5C,GAAGwe,GAAEipB,SAAS/qC,EAAE+C,KAAK3C,EAAE2C,MAAMI,EAAEnD,EAAE+C,KAAKK,EAAE0e,GAAEha,KAAK9H,EAAE+C,MAAMW,GAAE,EAAGC,GAAE,EAAGC,EAAE,CAACN,GAAG,GAAGA,EAAE,CAAC,IAAIQ,EAAE4kB,GAAG2hB,UAAUrqC,EAAE+C,KAAK3C,EAAE2C,MAAK,GAAI,IAAIe,EAAE,MAAM,IAAI7C,MAAM,gDAAgDkC,EAAEW,EAAEV,EAAE0e,GAAEha,KAAK3E,GAAG,IAAIY,EAAmB,IAAjB+d,GAAEha,KAAK9H,EAAE+C,MAAUiB,EAAmB,IAAjB8d,GAAEha,KAAK1H,EAAE2C,MAAUkB,EAAEjE,EAAE+C,KAAK1B,OAAO,GAAGrB,EAAE+C,KAAK/C,EAAE+C,KAAK1B,OAAO,GAAG,GAAI,EAAE8C,EAAE/D,EAAE2C,KAAK1B,OAAO,GAAGjB,EAAE2C,KAAK3C,EAAE2C,KAAK1B,OAAO,GAAG,GAAI,EAAEuC,EAAEtC,KAAKyC,GAAGH,EAAEtC,KAAK0C,GAAGJ,EAAEtC,KAAK2C,GAAGL,EAAEtC,KAAK6C,GAAG,IAAIC,EAAE,EAAE,IAAI,IAAIC,EAAE,EAAEA,EAAElB,EAAE9B,OAAOgD,IAAI,CAAC,IAAIK,EAAE1E,EAAE+C,KAAK/C,EAAE+C,KAAK1B,OAAOgD,IAAI,EAA+B,GAAGK,KAA9BtE,EAAE2C,KAAK3C,EAAE2C,KAAK1B,OAAOgD,IAAI,GAAqB,MAAVD,GAAGM,CAAY,CAACN,EAAE,GAAI,GAAGT,GAAE,EAAGD,GAAE,IAAKK,GAAGC,GAAGC,GAAGE,KAAKT,GAAE,EAAG,MAAMA,GAAE,EAAGE,EAAEtC,KAAKoC,GAAG,IAAIG,EAAE4lB,GAAGzpB,EAAE+C,KAAK1B,SAASooB,GAAGrpB,EAAE2C,KAAK1B,SAASooB,GAAGtmB,EAAE9B,QAAQ,MAAM,CAACO,KAAKjC,EAAEguC,YAAY,CAACC,KAAKhuC,EAAEgE,EAAE9B,KAAIgC,GAAGA,EAAE8W,aAAY7Y,KAAK,KAAK8rC,kBAAkBhqC,EAAE,CAAC,OAAO,QAAQ,CAAC,OAAO,SAASqqC,gBAAgBpqC,GAAGwsB,GAAGxsB,EAAE9D,EAAE+C,KAAK3C,EAAE2C,KAAKI,EAAEO,EAAEJ,EAAEK,EAAEtD,EAAEL,EAAEkG,SAAS9F,EAAE8F,SAASvE,EAAEkC,EAAEzC,GAAG0sC,WAAW,KAAI,CAAEC,QAAQ,CAAC,CAAChrC,KAAKI,EAAE+C,SAASvE,IAAIqsC,cAAc,CAAC7pC,EAAEiY,KAAKmD,KAAKnc,EAAE,GAAG,IAAI6qC,gBAAgBpqC,EAAE,CAAC,CAACmC,KAAK,SAAS9B,KAAKkY,KAAKmD,KAAKuC,GAAEha,KAAK3E,GAAG,OAAO8a,GAAEje,EAAE+C,SAASkb,GAAE7d,EAAE2C,SAASkb,GAAE9a,IAAI,CAAC,CAAC6C,KAAK,SAAS9B,KAAKkY,KAAKmD,KAAKuC,GAAEha,KAAK3E,GAAG,OAAM,EAAGqtB,GAAG,CAAC7wB,EAAEC,EAAEI,EAAEI,EAAEC,EAAEe,KAAKzB,EAAEyuC,QAAQ7d,GAAG3wB,EAAES,GAAG,GAAGV,EAAEwuC,OAAO,GAAGxuC,EAAEwuC,OAAO,GAAGnuC,EAAEI,EAAEgB,GAAE,EAAGqvB,GAAG9wB,IAAI6wB,GAAG7wB,EAAE,OAAM,CAACC,EAAEI,IAAI,GAAGJ,KAAKI,KAAG,EAAG0wB,GAAG/wB,IAAI6wB,GAAG7wB,EAAE,OAAM,CAACC,EAAEI,IAAI,GAAGJ,KAAKI,KAAG,EAAG2wB,GAAGhxB,IAAI6wB,GAAG7wB,EAAE,QAAQ,CAAC6wC,OAAO,CAAC5wC,EAAEI,IAAI,OAAOJ,MAAMI,KAAKywC,OAAO,CAAC7wC,EAAEI,IAAI,aAAaJ,MAAMI,WAAM,OAAO,EAAO,EAAC,EAAG4wB,GAAGjxB,IAAI6wB,GAAG7wB,EAAE,OAAM,CAACC,EAAEI,IAAI,GAAGJ,KAAKI,KAAG,EAAG6wB,GAAGlxB,IAAI,IAAIC,EAAEghB,GAAE,QAAQjhB,EAAEwuC,OAAO,GAAGjoC,SAASvG,EAAEwuC,OAAO,GAAGprC,MAAMiD,KAAKxF,MAAMgwB,GAAG7wB,EAAE,MAAM,CAAC6wC,OAAO,CAACpwC,EAAEC,IAAI,cAAcD,KAAKC,KAAKowC,OAAO,CAACrwC,EAAEC,IAAI,qBAAqBD,KAAKC,MAAM,2BACxgDT,UAAUA,SAASA,uBAC1BA,6BACAA,iCACMA,wDACNA,yEAEcA,8BAA8BA,sBAAsBA,KAAS,QAAJA,EAAU,QAAQ,4EAEtEA,gBAAgBA,eAAeA,oEAE/CA,6GAEb,EAAGkxB,GAAGnxB,IAAI6wB,GAAG7wB,EAAE,OAAM,CAACC,EAAEI,IAAI,GAAGJ,KAAKI,KAAG,EAAG+wB,GAAGpxB,IAAI6wB,GAAG7wB,EAAE,UAAU,CAAC6wC,OAAO,CAAC5wC,EAAEI,IAAI,OAAOJ,KAAKI,KAAKywC,OAAO,CAAC7wC,EAAEI,IAAI,aAAaJ,KAAKI,WAAM,OAAO,EAAO,EAAC,EAAGgxB,GAAGrxB,IAAI6wB,GAAG7wB,EAAE,OAAO,CAAC6wC,OAAO,CAAC5wC,EAAEI,IAAI,OAAOJ,KAAKI,KAAKywC,OAAO,CAAC7wC,EAAEI,IAAI,aAAaJ,KAAKI,WAAM,OAAO,EAAO,EAAC,EAAGixB,GAAGtxB,IAAI6wB,GAAG7wB,EAAE,iBAAiB,CAAC6wC,OAAO,CAAC5wC,EAAEI,IAAI,OAAOJ,MAAMI,KAAKywC,OAAO,CAAC7wC,EAAEI,IAAI,aAAaJ,MAAMI,WAAM,OAAO,EAAO,EAAC,EAAGkxB,GAAGvxB,IAAI6wB,GAAG7wB,EAAE,cAAc,CAAC6wC,OAAO,CAAC5wC,EAAEI,IAAI,OAAOJ,MAAMI,KAAKywC,OAAO,CAAC7wC,EAAEI,IAAI,aAAaJ,MAAMI,WAAM,OAAO,EAAO,EAAC,CAAC,IAA0B0wC,GAAGhxC,GAAE,KAAkByqC,KAAKJ,KAAKyB,KAAKra,GAAGxxB,IAAI,IAAIA,GAAGA,EAAE0B,OAAO,EAAE,MAAM,IAAIJ,MAAM,kBAAkB,IAAIrB,EAAED,EAAE,GAAGuG,SAASlG,EAAEL,EAAE,GAAGoD,KAAK1B,OAAO,IAAI,IAAIjB,KAAKT,EAAE,CAAC,GAAGS,EAAE8F,WAAWtG,EAAE,MAAM,IAAIqB,MAAM,oCAAoC,GAAGb,EAAE2C,KAAK1B,SAASrB,EAAE,MAAM,IAAIiB,MAAM,2CAA2C,GAAGmwB,GAAG,CAACzxB,EAAEC,IAAI,0FAEhyBD,OAAOC,sCACfD,2GAKnBA,WACR0xB,GAAG,CAAC1xB,EAAEC,KAAK,IAAII,EAAEL,EAAE0B,OAAOjB,EAAE,GAAG,IAAI,IAAIC,EAAE,EAAEA,EAAEL,IAAIK,EAAE,CAAC,IAAIe,EAAExB,EAAE2sC,YAAY,aAAa5sC,EAAEU,GAAG4rC,aAAa,YAAgB,IAAJjsC,EAAMI,EAAEkB,KAAKF,GAAO,IAAJf,EAAMD,EAAEkB,KAAK,qBAAqBjB,SAASe,OAAOf,IAAIL,EAAE,EAAEI,EAAEkB,KAAK,UAAUF,OAAOhB,EAAEkB,KAAK,0BAA0BjB,QAAQe,MAAM,CAAC,OAAOhB,EAAE2B,KAAK,KACvR,EAAGuvB,GAAG,CAAC3xB,EAAEC,KAAK,IAAII,EAAEL,EAAE,GAAGoD,KAAKgO,QAAQ,GAAGnR,GAAGI,EAAEqB,QAAQzB,GAAG,EAAEI,EAAEqB,OAAO,MAAM,IAAIJ,MAAM,gEAAgE,IAAIb,EAAER,EAAE,EAAEI,EAAEqB,OAAOzB,EAAEA,EAAES,EAAEL,EAAE+Q,MAAM,GAAG,IAAI,IAAI1M,EAAE,EAAEA,EAAE1E,EAAE0B,OAAOgD,IAAI,CAAC,IAAIK,EAAE/E,EAAE0E,GAAGtB,KAAKgO,QAAQ,IAAI,IAAIoB,EAAE,EAAEA,EAAEnS,EAAEqB,OAAO8Q,IAAI,GAAGA,IAAI/R,EAAEC,EAAED,IAAIsE,EAAEyN,QAAQ,GAAGnS,EAAEmS,KAAKzN,EAAEyN,GAAG,MAAM,IAAIlR,MAAM,mCAAmC,CAAC,IAAIG,EAAE0gB,GAAEha,KAAKzH,GAAGsB,EAAE,IAAIgG,MAAMhI,EAAE0B,QAAQiC,EAAE,IAAIqE,MAAMhI,EAAE0B,QAAQ8B,EAAExD,EAAE,GAAGuG,SAAS9C,EAAE,EAAEM,EAAE,GAAGC,EAAE,GAAGC,EAAE,GAAGC,EAAE,CAAC,CAACmC,KAAK,SAAS9B,KAAK9C,IAAI,IAAI,IAAIiD,EAAE,EAAEA,EAAE1E,EAAE0B,SAASgD,EAAEjB,GAAGzD,EAAE0E,GAAGtB,KAAK3C,GAAGuB,EAAE0C,GAAGjB,EAAEQ,EAAEtC,KAAKmoB,GAAG9pB,EAAE0E,GAAGtB,KAAK1B,SAASsC,EAAErC,KAAKsC,EAAES,GAAG1E,EAAE0E,GAAGtB,KAAK1B,OAAO1B,EAAE0E,GAAGtB,MAAMO,EAAEe,GAAGuc,GAAE,QAAQvc,IAAIlB,EAAEQ,EAAEU,IAAIX,EAAEpC,KAAKsC,EAAES,GAAG,OAAO,QAAQR,EAAEvC,KAAK,CAAC0E,KAAK,SAAS9B,KAAKvC,EAAE0C,KAAK,IAAI,IAAIA,EAAE,EAAEA,EAAE1E,EAAE0B,SAASgD,EAAET,EAAES,IAAIR,EAAEvC,QAAQ2c,GAAEte,EAAE0E,GAAGtB,OAAO,IAAIe,EAAE2lB,GAAGppB,EAAEgB,QAAQyC,GAAGD,EAAEvC,QAAQ2c,GAAE5d,IAAI,IAAI0D,EAAED,EAAEzD,EAAEgB,OAAOhB,EAAE2D,EAAEma,GAAE,SAAShb,EAAEY,GAAGE,EAAED,EAAEooC,WAAW,UAAUhsC,GAAG+D,EAAEwD,MAAMd,KAAKc,MAAMhG,EAAEN,QAAQoqC,QAAQ3pC,KAAIuC,GAAG,4BAA4BA,MAAKtC,KAAK,KAkB15B,MAAM,CAACH,KAAK,SAAS+rC,YAAY,CAACC,KAAK,GAAGhuC,IAAIiuC,kBAAkBnqC,GAAGoqC,WAAW,KAAI,CAAEC,QAAQ,CAAC,CAAChrC,KAAK1C,EAAE6F,SAASvG,EAAE,GAAGuG,WAAW8nC,cAAc,CAAC7pC,EAAEiY,KAAKmD,KAAKne,EAAE,KAAK6sC,gBAAgBpqC,IAAIqqC,gBAlB6uB7pC,GAAG,SAEr6B,MAAMA,EAAEipC,gBAAgB,aAAa,OAAO,IAAI,IAAI5oC,EAAE,EAAEA,EAAE/E,EAAE0B,OAAOqD,IAAIL,EAAEipC,gBAAgB,mBAAmB5oC,IAAI,OAAO,OAAOL,EAAE8oC,oBAAoB7pC,EAAEU,EAAG,EAAzJ,WAEAotB,GAAGzvB,EAAEN,OAAO8C,WAEZE,EAAE2oC,oBACA3oC,EAAE0oC,sCAAsC,+CAE1B/oC,EAAE6nC,gBAAgB,8DAEK5nC,6EAEDtC,EAAEN,YAAY8C,cAChDF,yDAGFotB,GAAG/tB,EAAEU,UAC+L,EAAGutB,GAAG,CAAC5xB,EAAEC,KAAKuxB,GAAGxxB,EAAEwuC,QAAQxuC,EAAEyuC,QAAQ9c,GAAG3xB,EAAEwuC,OAAOvuC,EAAE6W,MAAK,EAAG+a,GAAG7xB,GAAG8oB,GAAG,CAAChS,KAAK9W,EAAE8W,MAAK,IAAck6B,GAAGjxC,GAAE,KAAkByqC,KAAK1Y,GAAG,CAAC9xB,EAAEC,KAAK,OAAOD,EAAEmW,YAAY,IAAI,OAAO,MAAM,CAAC86B,mBAAmB,GAAGC,gBAAgB,sBAAsBjxC,YAAY,IAAI,UAAU,MAAM,CAACgxC,mBAAmB,GAAGC,gBAAgB,YAAYjxC,aAAaA,2BAA2B,IAAI,OAAO,MAAM,CAACgxC,mBAAmB,mBAAmBhxC,KAAKD,EAAEmxC,4BAA4BlxC,KAAKD,EAAEoxC,YAAYF,gBAAgB,+CAA+C,QAAQ,MAAM,CAACD,mBAAmB,GAAGC,gBAAgB,IAAG,EAAGnf,GAAG/xB,IAAI,IAAIC,EAAED,GAAGmW,YAAY,GAAG,GAAO,SAAJlW,EAAW,CAAC,IAAII,EAAEI,GAAGT,GAAG0Y,mBAAmB,CAACwQ,GAAGC,IAAI,MAAM,CAAChT,WAAWlW,EAAEmxC,QAAQ3wC,EAAE0wC,QAAQ9wC,EAAEgxC,mBAAmB,GAAGpxC,KAAKI,KAAKI,IAAI,CAAC,MAAM,CAAC0V,WAAWlW,EAAEoxC,mBAAmBpxC,EAAC,CAAC,IAAcqxC,GAAGvxC,GAAE,KAAkBiyB,GAAG,CAAChyB,EAAEC,KAAK,OAAOD,GAAG,KAAK,EAAE,OAAOC,EAAE,KAAK,EAAE,MAAM,QAAQA,KAAK,KAAK,EAAE,MAAM,QAAQA,KAAK,KAAK,EAAE,MAAM,QAAQA,KAAK,QAAQ,MAAM,IAAIqB,MAAM,GAAGtB,iCAAgC,EAAGiyB,GAAGjyB,GAAG,WACrrCA,EAAE,iDAAiD,YAAE,IAC5CkkB,GAAGnkB,GAAE,KAAkBmyB,GAAGlyB,GAAG,0RAOpCA,aAAaA,aAAaA,iBAAC,IAELuxC,GAAGxxC,GAAE,KAAkByqC,KAAKqB,KAAKmF,KAAKM,KAAKnf,GAAG,CAACnyB,EAAEC,IAAID,EAAE,gJAG/BC,EAAE,iBAAiB,iBACjE,2IAGsCA,EAAE,iBAAiB,iBACzDmyB,GAAG,CAACpyB,EAAEC,IAAID,EAAE,wNAIR,IAAJC,EAAM,GAAG,mSAKH,IAAJA,EAAM,GAAG,yDACV,kRAMK,IAAJA,EAAM,GAAG,uDACVoyB,GAAG,CAACryB,EAAEC,EAAEI,EAAE,MAAMI,EAAEC,GAAE,EAAGe,EAAE,GAAGO,GAAE,EAAG2B,EAAE,MAAM,IAAIH,EAAEvD,EAAE,GAAGD,EAAE,GAAGyD,EAAExD,EAAE,GAAGD,EAAE,GAAG+D,EAAErD,EAAE8C,EAAE/B,EAAEuC,EAAEtD,EAAEe,EAAE+B,EAAES,EAAEF,EAAE9D,EAAE,GAAGiE,EAAEzC,EAAExB,EAAE,GAAG,KAAMS,GAAO,IAAJuD,GAAc,IAAPjE,EAAE,MAASU,GAAQ,IAAJuD,GAAW,IAAJA,IAASF,EAAE9D,EAAE,IAAK,GAAGwB,EAAExB,EAAE,IAAK,GAAU,IAAPD,EAAE,GAAQ,MAAM,IAAIsB,MAAM,iBAAiBZ,+BAA+BuD,0BAA0BjE,EAAE,oDAC3PiE,mCACrBF,0CAA0C9D,EAAE,iBAAiBwB,2CAA2CxB,EAAE,oBAAoBD,EAAE,iBAAiB,MAAM,4CAC7HiE,KAAK5D,OAAO0D,EAAEE,OAAOD,iDACnB3D,OAAOoD,EAAEzD,EAAE,QAAQyB,+BAEvCzB,EAAE,6BACFA,EAAE,iCACEiE,yBACPxC,kCAEOxB,EAAE,OAAOA,EAAE,OAAOA,EAAE,gZAU/B+B,EAAE,IAAI,yBAClBvB,EAAE,sBAAsBA,EAAEyrC,gBAAgB,iBAAiB,mDACjB1oC,0BAE3BxB,EAAE,GAAGya,KAAKmD,KAAKjc,EAAElC,KAAK,8DACxBO,EAAE,qBAAqB2B,IAAI,iCAEpBtD,uFAGM6D,kRAMlBiuB,GAAGzxB,EAAED,0GAIyByD,wMAG4CzD,EAAE,iBAAiB,maAUzF,IAAJwD,EAAM,GAAG,6EAETmuB,GAAG1xB,EAAEuD,+MAAE,EASfquB,GAAG,CAACtyB,EAAEC,IAAID,EAAE,yIAGyBC,EAAE,iBAAiB,qBAC9C,yIAGmBA,EAAE,iBAAiB,qBACtCsyB,GAAGvyB,GAAGA,EAAE,gDAAgD,gDAAgDwyB,GAAG,CAACxyB,EAAEC,EAAEI,EAAE,MAAMI,EAAEC,GAAE,EAAGe,EAAE,GAAGO,GAAE,EAAG2B,EAAE,GAAGH,GAAE,KAAM,IAAIC,EAAEzD,EAAE,GAAGC,EAAE,GAAG8D,EAAE/D,EAAE,GAAGC,EAAE,GAAG+D,EAAEtD,EAAE+C,EAAEhC,EAAEwC,EAAEvD,EAAEe,EAAEgC,EAAE,GAAKQ,EAAEhE,EAAE,IAAK,GAAG+D,EAAE/D,EAAE,IAAK,GAAGwB,EAAExB,EAAE,IAAK,EAAG,MAAM,IAAIqB,MAAM,cAAc2C,0CAA0ChE,EAAE,kBAAkB+D,0CAA0C/D,EAAE,iBAAiBwB,0CAA0CxB,EAAE,MAAM,IAAIiE,EAAED,EAAEhE,EAAE,GAAGkE,EAAEH,EAAE/D,EAAE,GAAGmE,EAAE3C,EAAExB,EAAE,GAAGoE,EAAEb,EAAE,2HAGvbC,qDACAM,4LAKCE,4BAA4BhE,EAAE,2DAC5B+D,4BAA4B/D,EAAE,oBACrEqyB,GAAG5xB,EAAED,0HAIgCgB,4BAA4BxB,EAAE,+DACxB8D,4BAA4B9D,EAAE,wIAG9CQ,EAAE,iBAAiB,0KAO9BJ,0MAG+BJ,EAAE,gIAGnCS,EAAE,oCAAoCT,EAAE,OAAO,iCAAiCA,EAAE,8ZAUlDA,EAAE,oJAEAA,EAAE,2FAIxD,+OAMsCwD,yCAEVS,uCACAC,uCACAC,mKAIIF,wEACEC,8HAGhCmuB,GAAG5xB,EAAED,qGAKyB2D,oTAMR3D,EAAE,iBAAiB,kJAOzBJ,6RAOhBkyB,GAAG7xB,4eAgBT,MAAM,4CACiCL,MAAM2D,OAAOC,+CACb5D,MAAM0D,OAAOtC,+BAC7BzB,EAAE,+BACFA,EAAE,4BACLyB,kCAEKxB,EAAE,OAAOA,EAAE,OAAOA,EAAE,6MAI7B+B,EAAE,IAAI,2BAClBvB,EAAE,sBAAsBA,EAAEyrC,gBAAgB,iBAAiB,0BAC5ClqC,EAAE,GAAGya,KAAKmD,KAAKjc,EAAElC,KAAK,gEACxBO,EAAE,qBAAqB2B,IAAI,qCAElBtD,wUAQtBgE,UAAC,EAEJouB,GAAG,CAACzyB,EAAEC,EAAEI,EAAEI,EAAEC,EAAEe,GAAE,KAAM,IAAIO,EAAE2B,EAAEH,GAAG9C,GAAG+C,EAAEM,EAAEC,EAAEC,GAAGxD,EAAEyD,EAAE2lB,GAAG7nB,EAAEwB,GAAGW,EAAE0lB,GAAGlmB,EAAEH,GAAGY,EAAEglB,GAAG3oB,EAAE,GAAG4F,KAAK4lC,QAQ/B,MAAM,qEACMxoC,EAAE4C,KAAK0lC,eAAe/Z,GAAGhyB,EAAEoE,2BACzE4tB,GAAGhyB,EAAEoE,qCACCpE,uFAXqE,MAAK,IAAIyE,EAAEV,EAAE2oC,KAAKhoC,EAAEjB,EAAEipC,KAAK3nC,EAAE,iBAAiBhB,EAAEsC,KAAK0lC,WAAW,IAAI,IAAIv5B,EAAE/N,EAAE,EAAE,EAAEgO,EAAE/N,EAAE,EAAE8N,GAAG,EAAEA,IAAIC,IAAI1N,GAAG,cAC1LyN,QAAQ9N,EAAE,EAAE,gBAAgB+N,KAAK,kBAAkB,OAAOvO,EAAE+Z,SAAQzL,IAAIzN,GAAG,cAC3EyN,SAAC,IAAWzN,GAAG,cACfN,EAAE,+CACiBA,EAAE,mBAAmBM,GAUzCV,uBACQN,EAAEuoC,aAAa,wHAKiC7oC,EAAE4C,KAAK0lC,eAAe/Z,GAAGhyB,EAAEoE,2BACzE4tB,GAAGhyB,EAAEoE,qCACCpE,uFAlB8B,MAAK,IAAIyE,EAAET,EAAE0oC,KAAKhoC,EAAEjB,EAAEipC,KAAK3nC,EAAE,iBAAiBf,EAAEqC,KAAK0lC,WAAW,IAAI,IAAIv5B,EAAE/N,EAAE,EAAE,EAAEgO,EAAE/N,EAAE,EAAE8N,GAAG,EAAEA,IAAIC,IAAI1N,GAAG,cACnJyN,QAAQ9N,EAAE,EAAE,gBAAgB+N,KAAK,kBAAkB,OAAOtO,EAAE8Z,SAAQzL,IAAIzN,GAAG,cAC3EyN,SAAC,IAAWzN,GAAG,cACfN,EAAE,+CACiBA,EAAE,mBAAmBM,GAiBzCT,uBACQN,EAAEsoC,aAAa,mHAK4Bta,GAAGhyB,EAAEoE,kCACxCpE,oKAIhBC,EAAE,mBAAmBwB,EAAE,cAAc,GAAGuwB,GAAGhyB,EAAEoE,mBAAmB,eAChE/D,cACA4D,EAAEooC,aAAa,oBAAoB,gCAAQ,EAG9C3Z,GAAG,CAAC1yB,EAAEC,EAAEI,EAAEI,EAAEC,GAAE,KAAM,IAAIe,EAAEzB,EAAE,GAAGoD,KAAKpB,EAAEhC,EAAE,GAAGoD,KAAKO,EAAElC,EAAE2P,MAAM,GAAG,GAAG5N,EAAExB,EAAEoP,MAAM,GAAG,GAAG3N,EAAEhD,EAAEA,EAAE2Q,MAAM,GAAG,GAAG/Q,EAAE+Q,MAAM,GAAG,GAAGrN,EAAE+lB,GAAGrmB,EAAE/B,QAAQsC,EAAED,EAAEN,EAAE/B,OAAO+B,EAAEQ,EAAE0lB,GAAG,YAAY3pB,EAAE,GAAGuG,SAASvC,EAAE,GAAGE,EAAEie,GAAEha,KAAK1E,GAAGU,EAAE1C,EAAEA,EAAEC,OAAO,GAAG0C,EAAE3C,EAAEA,EAAEC,OAAO,GAAG2C,EAAErC,EAAEA,EAAEN,OAAO,GAAG4C,EAAEF,EAAE,GAAI,GAAGC,EAAE,GAAI,EAAEG,EAAEL,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAGM,EAAE,CAAC,EAAE,EAAE,GAAGC,EAAE,CAAC+X,KAAKmD,KAAKvb,EAAEI,EAAE,GAAGD,EAAE,IAAIiY,KAAKmD,KAAKzb,EAAEM,EAAE,GAAGD,EAAE,IAAIiY,KAAKmD,KAAK1b,EAAEO,EAAE,GAAGD,EAAE,KAAKO,EAAEqkB,GAAGppB,EAAE,GAAGuG,UAAUiM,EAAElO,EAAE,EAAE,EAAEmO,EAAE,IAAI9O,EAAEQ,EAAEC,EAAEoO,GAAGE,EAAEoX,GAAGrX,EAAE/Q,QAAQiR,EAAED,EAAED,EAAE/Q,OAAO+Q,EAAEG,EAAG,IAAIpP,EAAEY,EAAEC,EAAEmO,GAAGK,EAAEiX,GAAGlX,EAAGlR,QAAQoR,EAAED,EAAED,EAAGlR,OAAOkR,EAAGW,EAAE,CAACrP,EAAEC,EAAEE,EAAEmO,GAAGgB,EAAEyN,GAAE,IAAIjhB,EAAE,GAAGuG,SAASoM,EAAEH,GAAGiB,EAAGwN,GAAE,IAAIjhB,EAAE,GAAGuG,SAASuM,EAAEN,GAAGkB,EAAG8K,GAAE,SAASxe,EAAE,GAAGuG,SAASgN,EAAE7R,OAAO8Q,GAAGmB,EAAG,CAACH,EAAEC,GAAIG,EAAG,CAAC,CAACvN,KAAK,QAAQ9B,KAAKJ,GAAG,CAACkC,KAAK,QAAQ9B,KAAKF,GAAG,CAACgC,KAAK,QAAQ9B,KAAKH,IAAIL,GAAG6P,EAAGjS,QAAQ2c,GAAE7a,IAAIiP,GAAGkB,EAAGjS,QAAQ2c,GAAE7L,IAAII,GAAGe,EAAGjS,QAAQ2c,GAAE1L,IAAK,IAAIL,EAAG,GAAGA,EAAG5Q,KAAK+Q,EAAE,OAAO,QAAQH,EAAG5Q,KAAKkR,EAAE,OAAO,QAAQ,IAAIkB,EAAG/T,EAAE0B,OAAO,GAAGuvC,mBAAmBpgC,EAAGqgC,gBAAgBp9B,GAAIge,GAAG7xB,EAAEyT,EAAGrN,KAAKxF,OAAOoT,EAAGwe,GAAGjgB,EAAEuB,EAAGD,EAAG,CAAC7P,EAAEuP,EAAEC,EAAGC,GAAI,CAAC/P,EAAEH,EAAEC,GAAG/C,GAAG,GAAGqT,EAAG,CAAC,IAAIY,EAAGjU,EAAE8R,EAAE,EAAEmB,EAAGhS,KAAKsf,GAAE,OAAOjhB,EAAE,GAAGuG,SAASvG,EAAE,GAAGoD,KAAK1B,OAAOiT,IAAKf,EAAGjS,QAAQ2c,GAAEte,EAAE,GAAGoD,OAAOmP,EAAG5Q,KAAK,OAAO,CAACiS,EAAGjS,QAAQ2c,GAAE/K,IAKjgC,MAAM,CAACtR,KAAK,SAAS+rC,YAAY,CAACC,KAAKhuC,EAAEoxC,mBAAmB,GAAG7sC,IAAIF,IAAI5D,IAAIwtC,kBAAkB37B,GAAI47B,WAAW,KAAI,CAAEC,QAAQ,CAAC,CAAChrC,KAAK/C,EAAEkG,SAASvG,EAAE,GAAGuG,WAAW8nC,cAAc,CAAC7pC,EAAEE,EAAE,GAAG6Z,EAAE7Z,EAAE,GAAGK,EAAEL,EAAE,IAAI4pC,gBAAgB16B,IAAK26B,gBALqzB55B,GAAI,OAChiCA,EAAGg5B,gBAAgB,YAAY,OAAOA,gBAAgB,YAAY,OAAOA,gBAAgB,WAAW,OAAOD,0BAA0BzpC,GAAGupC,oBAAoB75B,EAAGD,SAC/J7C,QACAoD,QACA3P,EAAE+tB,GAAG7tB,EAAEC,EAAEM,EAAEd,GAAGuuB,GAAGhuB,EAAEC,EAAEM,EAAEd,0BACiO,CAAC,IAAcutC,GAAGzxC,GAAE,KAAkB6nC,KAAKiE,KAAKmF,KAAKM,KAAKptB,KAAKqtB,KAAK5e,GAAG,CAAC3yB,EAAEC,EAAEI,EAAEI,EAAEC,GAAE,EAAGe,EAAEO,EAAE,EAAE2B,EAAE,EAAEH,EAAE,EAAEC,EAAE,SAAS,IAA8cQ,EAAEjE,EAAE,6DAEtzB,6DAEAkE,EAAElE,EAAE,+GAMJ,+GAMAmE,EAAEnE,EAAE,2BAA2B,2BAA2BoE,EAAEpE,EAAE,2BAA2B,2BAA2BqE,EAAErE,EAAE,MAAM,MAAMsE,EAAEtE,EAAE,MAAM,MAAMwE,EAAE,wEAEvIxE,EAAE,gCAAgC,sDACpCqE,mCACAA,mCAEFC,qDACAA,sLAGDA,sCACI0tB,GAAGhwB,EAAEyB,uJAGKU,4BAA4BC,eAClDH,0FA/BwW4O,KAAI,OAAOA,GAAG,KAAK,EAAE,MAAM,uBAAuB,KAAK,EAAE,MAAM,kBAAkBpP,+CAA+C,KAAK,EAAE,MAAM,2BAA2B,QAAQ,MAAM,IAAInC,MAAM,oBAAoBuR,uBAAsB,EAiCllB9O,CAAE/B,iCAEWyC,EAAEzE,EAAEC,GAAGQ,EAAE,2BACNuB,WAClBwC,IAAI,2BACcxC,6EAEhBwC,wBAEKwtB,GAAGhwB,EAAEyB,WAAWhD,GAAGJ,EAAE,2BACV2B,WAClBwC,IAAI,2BACcxC,6EAEhBwC,wBAEKwtB,GAAGhwB,EAAEyB,WAAWiB,EAAE,GAjDgkBmO,KAAI,OAAOA,GAAG,KAAK,EAAE,MAAM,oDAAoD,KAAK,EAAE,MAAM,wDAAwD,QAAQ,MAAM,IAAIvR,MAAM,oBAAoBuR,uBAAsB,EAiDnxB7O,CAAEL,KAAKoB,EAAEitB,GAAGxuB,EAAEC,GAAG+O,EAAIwf,GAAFhyB,EAAKgC,EAAQ2B,EAANF,GAAWgP,EAAIuf,GAAFhyB,EAAK2D,EAAQ3B,EAANyB,IAAYwtC,mBAAmBv+B,EAAEw+B,gBAAgBv+B,GAAGmf,GAAGrwB,EAAEsD,GAAG,MAAM,SAC5I2N,6DACmDF,cACjDxS,EAAEyE,EAAEC,sEAG6C+N,cACjDzS,EAAE0E,EAAED,6EAGoDM,iCACtCvB,kIAIHxD,EAAE,gCAAgC,2CACjDkE,YACA+tB,GAAGvxB,aACHiS,gGAAC,EAGDigB,GAAG,CAAC5yB,EAAEC,EAAEI,EAAEI,EAAEC,EAAEe,EAAEO,EAAE2B,KAAK,IAAIH,EAAa,SAAXvD,EAAEyD,OAAgBD,EAAED,EAAExD,EAAE,GAAGoD,KAAK,GAAGpD,EAAE,GAAGoD,KAAK,GAAGW,EAAE1D,EAAE,GAAG2D,EAAER,EAAEnD,EAAE,GAAGA,EAAE,GAAG4D,EAAET,EAAEnD,EAAE,GAAGA,EAAE,GAAG6D,EAAEV,EAAEnD,EAAE,GAAGA,EAAE,GAAG8D,EAAEX,IAAIC,EAAE,GAAI,GAAGA,EAAE,GAAI,IAAIS,EAAE,GAAI,EAAEE,EAAEZ,EAAEU,EAAEF,EAAEC,EAAEI,EAAEb,EAAEQ,EAAEC,EAAEC,EAAEI,EAAE,CAAC,EAAE,EAAE,GAAGE,EAAE/D,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAGgE,EAAE,CAACgY,KAAKmD,KAAKxb,EAAEE,EAAE,GAAGE,EAAE,IAAIiY,KAAKmD,KAAKvb,EAAEC,EAAE,GAAGE,EAAE,IAAIiY,KAAKmD,KAAK7b,EAAEO,EAAE,GAAGE,EAAE,KAAKgkB,GAAG,WAAU,IAAI,iCAAiC/jB,MAAK,IAAIC,EAAEP,EAAEX,GAAGC,EAAE,GAAI,EAAE,EAAE,EAAE,EAAEsB,EAAET,EAAE,GAAGE,EAAE,GAAGgO,EAAElO,EAAE,GAAGE,EAAE,GAAGiO,EAAEgK,KAAKtH,IAAI7Q,EAAE,GAAGI,EAAEJ,EAAE,IAAIoO,EAAEjS,EAAEsE,GAAI,EAAE4N,EAAEjS,EAAE8R,GAAI,EAAEI,EAAGnR,EAAEgR,GAAI,EAAEI,EAAE1O,EAAE,CAACO,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAGoO,EAAEsW,GAAGppB,EAAE,GAAGuG,UAAUgN,EAAEpP,EAAE,EAAE,EAAEqP,EAAE,CAAC,CAACnN,KAAK,QAAQ9B,KAAK9D,GAAG,CAAC4F,KAAK,QAAQ9B,KAAK7D,GAAG,CAAC2F,KAAK,QAAQ9B,KAAK9C,IAAkGkS,EAAG,CAA9FsN,GAAE,IAAIjhB,EAAE,GAAGuG,SAASvG,EAAE,GAAGoD,KAAK1B,OAAW,IAAJgD,EAAM,EAAEA,GAAMuc,GAAE,IAAIjhB,EAAE,GAAGuG,SAASvG,EAAE,GAAGoD,KAAK1B,OAAO6R,IAAcC,EAAE7R,QAAQ2c,GAAEte,EAAE,GAAGoD,OAAOoQ,EAAE7R,QAAQ2c,GAAEte,EAAE,GAAGoD,OAAO,IAAIwQ,EAAG,wDACrqBzP,EAAE,QAAQ2O,KAAKA,qCACtC3O,EAAE,QAAQ2O,KAAKA,kGAEgC3O,EAAE,QAAQ2O,KAAKA,0HAEvD3O,EAAE,MAAM,uBACpC,GAAGnC,EAAE,CAAC,IAAI+R,EAAGkN,GAAE,OAAOjhB,EAAE,GAAGuG,SAASvG,EAAE,GAAGoD,KAAK1B,OAAO6R,GAAGI,EAAGhS,KAAKoS,GAAIP,EAAE7R,QAAQ2c,GAAEte,EAAE,GAAGoD,OAAOwQ,GAAI,6DAC/CzP,EAAE,QAAQ2O,KAAKA,qCAC1CtP,EAAE,IAAI,MAAMW,EAAE,MAAM,iBACzC,CAAC,IAAIoO,EAAGiM,GAAE,SAASxe,EAAE,GAAGuG,SAASlG,EAAEqB,OAAO6R,GAAG,OAAOC,EAAE7R,QAAQ2c,GAAEje,IAAI,CAAC4B,KAAK,eAAe+rC,YAAY,CAACC,KAAKhuC,EAAEoqC,UAAU8D,WAAW,KAAI,CAAEC,QAAQ,CAAC,CAAChrC,KAAK/C,EAAEkG,SAASvG,EAAE,GAAGuG,WAAW8nC,cAAc,CAAC7pC,EAAEC,EAAE,GAAG8Z,EAAE9Z,EAAE,GAAGM,EAAEN,EAAE,IAAI6pC,gBAAgB96B,IAAI+6B,gBAAgBx6B,GAAI,aAC/Pme,GAAG,+TAIHne,EAAG45B,gBAAgB,YAAY,OAAOA,gBAAgB,YAAY,OAAOA,gBAAgB,WAAW,OAAOH,oBAAoB75B,EAAGpB,wDACzFtS,EAAEmW,YAAY,OAAOnW,EAAEmW,YAAY,mDAC1CnW,EAAE6V,KAAK,OAAO7V,EAAE6V,KAAK,sDAClB7V,EAAE8V,QAAQ,OAAO9V,EAAE8V,QAAQ,wDACzB9V,EAAE0V,UAAU,OAAO1V,EAAE0V,UAAU,iBACtE/B,cACA+e,GAAGnvB,EAAEkP,EAAEC,EAAEC,EAAG5Q,EAAE/B,EAAE4S,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGC,mBAC3B3O,EAAEkuB,GAAG7tB,EAAEF,EAAEwO,OAAE,GAAQtP,EAAEiP,GAAG+f,GAAGhuB,EAAEF,EAAEwO,OAAE,GAAQtP,EAAEiP,GAAE,OAAG,EAAO9O,KAAI,CAAC,IAAW8tC,GAAG1xC,GAAE,KAAkByqC,KAAKqB,KAAKroB,KAAKwtB,KAAKztB,GAAG,CAACvjB,EAAEC,EAAEI,KAAK,IAAII,EAAET,EAAE0B,OAAO,EAAEhB,EAAED,EAAE,8BAA8B,GAAGgB,EAAEzB,EAAE,GAAGoD,KAAKpB,EAAEhC,EAAE,GAAGoD,KAAKO,EAAE3B,EAAE,GAAG/B,EAAE2V,MAAMpS,EAAa,SAAXvD,EAAEyD,OAAgBD,EAAEigB,GAAGjiB,EAAEO,EAAE/B,EAAE0V,UAAU1V,EAAE6V,KAAK7V,EAAE8V,QAAQvS,GAAGO,EAAEoe,GAAEha,KAAK1E,GAAGO,EAAEwa,GAAE,SAASxe,EAAE,GAAGuG,SAAS9C,IAAIwtC,mBAAmBhtC,EAAEitC,gBAAgBhtC,GAAG4tB,GAAG7xB,EAAE+D,EAAEqC,KAAKxF,OAAOsD,EAAE8c,GAAE,IAAIjhB,EAAE,GAAGuG,SAAS9E,GAAG2C,EAAE6c,GAAE,IAAIjhB,EAAE,GAAGuG,SAASvE,GAAGqC,EAAE,CAACF,EAAEC,GAAG3D,GAAG4D,EAAE1C,KAAKsf,GAAE,IAAIjhB,EAAE,GAAGuG,SAASvG,EAAE,GAAGoD,OA0Cre,MAAM,CAACnB,KAAK,cAAc+rC,YAAY,CAACC,KAAKhuC,EAAEoqC,UAAU8D,WAAW,KAAI,CAAEC,QAAQ,CAAC,CAAChrC,KAAK/C,EAAEA,EAAEoD,GAAGA,EAAE8C,SAASvG,EAAE,GAAGuG,WAAW8nC,cAAc,CAAC7pC,EAAEiY,KAAKmD,KAAK7b,EAAE,OAAOwqC,gBA1CoV/pC,GAAG,uCACtdvE,EAAE8V,QAAQ,QAAQ9V,EAAE8V,QAAQ,yCAC/B9V,EAAE6V,KAAK,QAAQ7V,EAAE6V,KAAK,cAEnDtR,EAAEgpC,oBAAoBnpC,EAAEL,WAExBC,UAEAO,EAAE6oC,oBACA7oC,EAAE4oC,sCAAsCrpC,iCAEpBC,EAAEkoC,gBAAgB,uGAEE1oC,EAAE,EAAE,+DACOA,EAAE,EAAE,qBAAqBA,EAAE,EAAE,mEAC3CG,yBAE1BK,EAAEqC,KAAKxF,WAAWmD,EAAEqC,KAAKxF,8DACQmB,EAAE,8DACbA,EAAE,kEACKA,EAAE,oEACA/B,EAAE0V,UAAU,kDAEnBlU,EAAE+B,EAAE,EAAE,yFAIDxB,EAAE,mEACA/B,EAAE0V,UAAU,gDACnBlU,EAAE+B,EAAE,EAAE,sEAIxBA,EAAEW,EAAE7D,IAAI,QAAQ,UAAU,SAAS,iBAAiB6D,EAAE7D,IAAI,QAAQ,gBAAgB,UAAU,oCAC5F8D,EAAE9D,IAAI,iBAAiB,aAAa,UAAU,6EAK/DI,UACAwD,UACAF,EAAE4oC,YAAY,aAAa,gBACmJ,CAAC,IAAiB7pB,GAAGhjB,GAAE,KAAkByqC,KAAK+G,KAAK1F,KAAKmF,KAAKhsB,GAAG,CAAChlB,EAAEC,EAAEI,EAAEI,EAAEC,GAAE,KAAM,IAAIe,EAAEzB,EAAE,GAAGoD,KAAKpB,EAAEhC,EAAE,GAAGoD,KAAKO,EAAElC,EAAEA,EAAEC,OAAO,GAAG8B,EAAExB,EAAEA,EAAEN,OAAO,GAAG+B,EAAEhC,EAAEA,EAAEC,OAAO,GAAGqC,EAAEulB,GAAG9lB,GAAGQ,EAAEslB,GAAG7lB,GAAGQ,EAAEqlB,GAAG3lB,GAAGO,EAAEie,GAAEha,KAAK9H,GAAG0D,EAAEE,EAAEE,EAAEnE,EAAE0B,OAAO,EAAE0C,EAAE3D,EAAEA,EAAE2Q,MAAM,GAAG,GAAG/Q,EAAE+Q,MAAM,GAAG,GAAG9M,EAAE,CAAC6d,GAAEha,KAAK/D,GAAGT,EAAEH,GAAGgB,EAAE,CAAC,CAAC6B,KAAK,SAAS9B,KAAKL,GAAG,CAACmC,KAAK,SAAS9B,KAAKZ,GAAG,CAAC0C,KAAK,SAAS9B,KAAKf,GAAG,CAAC6C,KAAK,SAAS9B,KAAKd,MAAM6a,GAAEla,MAAMka,GAAE7c,MAAM6c,GAAEtc,IAAImC,GAAGK,EAAE7C,QAAQ2c,GAAEte,EAAE,GAAGoD,OAAOoB,EAAE7C,QAAQ2c,GAAEha,IAmCllB,MAAM,CAACrC,KAAK,cAAc+rC,YAAY,CAACC,KAAK,GAAGhuC,EAAEoxC,sBAAsBttC,KAAKC,KAAKC,KAAKvD,IAAIwtC,kBAAkB/pC,EAAE,CAAC,OAAO,OAAO,QAAQ,CAAC,OAAO,SAASgqC,WAAW,KAAI,CAAEC,QAAQ,CAAC,CAAChrC,KAAK/C,EAAEkG,SAASvG,EAAE,GAAGuG,WAAW8nC,cAAc,CAAC7pC,EAAEiY,KAAKmD,KAAK1b,EAAE,KAAKoqC,gBAAgB9pC,IAAI+pC,gBAnCqV7pC,IAAI,IAAIK,EAAE4kB,GAAG,aAAa3pB,EAAE,GAAGuG,SAASnC,EAAE1C,QAAQ8Q,EAAEyO,GAAE,IAAIjhB,EAAE,GAAGuG,SAAS9E,EAAEC,OAAOsC,GAAGyO,EAAEwO,GAAE,IAAIjhB,EAAE,GAAGuG,SAASvE,EAAEN,OAAOqC,GAAG2O,EAAE8L,GAAE,SAASxe,EAAE,GAAGuG,SAASjC,EAAE5C,OAAOqC,IAAIktC,mBAAmBt+B,EAAEu+B,gBAAgBt+B,GAAIkf,GAAG7xB,EAAEyS,EAAErM,KAAKxF,OAAOgS,EAAE,CAACL,EAAEC,GAAGK,EAAE,GAAG,GAAG3O,EAAE,CAAC,IAAIoO,EAAG7R,EAAEqD,EAAE,EAAE8O,EAAElR,KAAKsf,GAAE,OAAOjhB,EAAE,GAAGuG,SAASvG,EAAE,GAAGoD,KAAK1B,OAAO6Q,IAAKO,EAAE,IAAGpS,EAAE,uBAAuB6R,MAAO,YAAYG,EAAErM,KAAKxF,wBAAyB,CAAC,IAAI0S,EAAE9R,EAAE2P,MAAM,GAAG,GAAGoC,EAAExR,EAAEoP,MAAM,GAAG,GAAGqC,EAAGoW,GAAGtW,EAAEnP,GAAGsP,EAAGmW,GAAGrW,EAAEpP,GAAGuP,EAAG,CAACpB,EAAGwB,KAAM,IAAIlD,EAAG0B,EAAGm6B,KAAK54B,EAAGvB,EAAGtQ,KAAK,GAAQ,IAAL4O,EAAO,MAAM,OAAOiD,eAAgBvB,EAAGlM,KAAK0lC,mBAAmB,IAAI93B,EAAGlP,EAAE2nC,KAAKv4B,EAAE,OAAOL,cAAevB,EAAGlM,KAAK0lC,WAAW,IAAI,IAAIp3B,EAAG9D,EAAG,EAAE,EAAEuD,EAAGH,EAAG,EAAEU,GAAI,EAAEA,IAAKP,IAAKD,GAAG,KACxuCL,aAAca,QAASV,EAAG,EAAE,iBAAiBG,KAAM,mBAAmB,OAAOL,EAAGkK,SAAQtJ,IAAKR,GAAG,KAChGL,aAAca,SAAE,IAAWR,GAAG,GAAGL,aAAcjD,EAAG,kCAC7BiD,aAAcjD,EAAG,WAAWsD,GAGtC,MAAM,OACfzP,EAAEipC,gBAAgB,aAAa,OAAOA,gBAAgB,IAAI,OAAOA,gBAAgB,IAAI,OAAOA,gBAAgB,IAAI,OAAOD,0BAA0B3oC,GAAGyoC,oBAAoB36B,EAAEH,SAC1KC,QACAjO,EAAE2oC,oBACA3oC,EAAE0oC,sCAAsC,qEACFrpC,SAASA,mDACPA,uCACbE,0CACIA,gDAGpB,IAAX5D,EAAEqB,OAAW,GAAG,uBAAuBqD,EAAEmnC,gBAAgB,oBACzDv4B,EAAGnB,EAAEiB,0BACUjB,EAAE25B,gBAAgB,sBACjCx4B,EAAGlB,EAAEiB,0BACUjB,EAAE05B,gBAAgB,wCACfz5B,EAAErM,KAAKxF,UAAUoD,0DACWD,eApBK,MAAK,IAAIuO,EAAG,eAAeC,EAAEnM,KAAKxF,SAAS,IAAI,IAAIkT,EAAG,EAAEA,EAAG/P,EAAE+P,IAAKxB,GAAI,6BACrGwB,0BAA2BA,4BAA6BhQ,MAAM,IAAI,IAAIgQ,EAAG,EAAEA,EAAG9P,EAAE8P,IAAK,CAACxB,GAAI,iCAAiCwB,0BAA2B/P,MAAM,IAAI,IAAI6M,EAAG,EAAEA,EAAG7M,EAAE6M,IAAK0B,GAAI,wBAC5LwB,YAAatB,EAAEpM,KAAKxF,eAAmB,IAAJmD,EAAM,GAAG,IAAI6M,gBAAiBA,aAAckD,QACnG,CAAC,OAAOxB,GAkBDqB,uCAEmB3P,mDAEnB6O,YACAF,8BACkBF,EAAErM,KAAK0lC,qDACZr5B,EAAEy5B,gBAAgB,0BAC/Bz5B,EAAEk6B,YAAY,YAAY7oC,IAAI,2BAAQ,EAG+O,EAAG8uB,GAAG7yB,IAAI,IAAIA,GAAc,IAAXA,EAAE0B,OAAW,MAAM,IAAIJ,MAAM,6BAA6B,GAAGtB,EAAE,GAAGoD,KAAKpD,EAAE,GAAGoD,KAAK1B,OAAO,KAAK1B,EAAE,GAAGoD,KAAKpD,EAAE,GAAGoD,KAAK1B,OAAO,GAAG,MAAM,IAAIJ,MAAM,mCAAkC,EAAGwxB,GAAG9yB,IAAI6yB,GAAG7yB,EAAEwuC,QAAQ,IAAIvuC,EAAE8oB,GAAG2hB,UAAU1qC,EAAEwuC,OAAO,GAAGprC,KAAKpD,EAAEwuC,OAAO,GAAGprC,MAAK,GAAI,IAAInD,EAAE,MAAM,IAAIqB,MAAM,yCAAyC,IAAIjB,EAAEJ,EAAEA,EAAEyB,OAAO,GAAGjB,EAAET,EAAEwuC,OAAO,GAAGprC,KAAKpD,EAAEwuC,OAAO,GAAGprC,KAAK1B,OAAO,GAAGrB,EAAE,GAAGI,EAAE,EAAET,EAAEyuC,QAAQzpB,GAAGhlB,EAAEwuC,OAAO,CAACr4B,WAAW,GAAGk7B,mBAAmB,IAAIpxC,IAAID,EAAEyuC,QAAQ/b,GAAG1yB,EAAEwuC,OAAO,CAACr4B,WAAW,GAAGk7B,mBAAmB,IAAIpxC,GAAE,CAAC,IAAgCujB,GAAGzjB,GAAE,KAAkByqC,KAAKJ,KAAKoH,KAAKD,KAAKE,KAAKT,KAAKjuB,KAAKgrB,KAAKrqB,GAAG,CAAC1jB,EAAEC,EAAEI,EAAEI,EAAEC,EAAEe,KAAK,IAAIO,EAAEhC,EAAE,GAAG2D,EAAE3D,EAAEoR,MAAM3P,EAAE,EAAE,EAAEA,EAAE,EAAE,GAAG+B,EAAEG,EAAEjC,OAAO+B,EAAExD,EAAE,GAAG+D,EAAE/D,EAAEmR,MAAM,GAAGjP,KAAI,CAACgC,EAAEC,IAAID,GAAGA,EAAE,IAAI9D,EAAE+D,GAAG,KAAIF,EAAEP,EAAExB,KAAI,CAACgC,EAAEC,IAAID,EAAE1D,EAAE2D,GAAG3D,EAAE2D,EAAEZ,KAAIrB,KAAI,CAACgC,EAAEC,IAAIqY,KAAKC,OAAOvY,EAAEH,EAAEI,GAAG1D,EAAE0D,IAAI1D,EAAE0D,MAAK,OAAOF,EAAE1C,OAAO,EAAE,EAAEQ,GAAGkC,EAAE1C,OAAOC,EAAE,EAAE,EAAE,EAAEgC,GAAGS,GAAG6uB,GAAG,CAAC,EAAE,EAAE,EAAE,GAAGC,GAAG,CAAChzB,EAAEC,KAAK,IAAID,GAAc,IAAXA,EAAE0B,QAAuB,IAAX1B,EAAE0B,OAAW,MAAM,IAAIJ,MAAM,+BAA+B,GAAsB,IAAnBtB,EAAE,GAAGoD,KAAK1B,QAA+B,IAAnB1B,EAAE,GAAGoD,KAAK1B,OAAW,MAAM,IAAIJ,MAAM,yCAAyC,GAAGtB,EAAE,GAAGoD,KAAK1B,SAAS1B,EAAE,GAAGoD,KAAK1B,OAAO,MAAM,IAAIJ,MAAM,gDAA+H,GAAzEtB,EAAE,GAAGoD,KAAgB,SAAXnD,EAAEyD,OAAgB1D,EAAE,GAAGoD,KAAK1B,OAAO,EAAE,KAAK1B,EAAE,GAAGoD,KAAK,GAAGnD,EAAE2V,MAAe,MAAM,IAAItU,MAAM,qDAAqD,GAAc,IAAXtB,EAAE0B,SAAgC,IAAnB1B,EAAE,GAAGoD,KAAK1B,QAAY1B,EAAE,GAAGoD,KAAK,KAAKpD,EAAE,GAAGoD,KAAK,IAAI,MAAM,IAAI9B,MAAM,gBAAgB,IAAIZ,EAAEV,EAAE,GAAGoD,KAAK1B,OAAO,EAAE,GAAGzB,EAAE0V,UAAUjU,SAAShB,EAAE,MAAM,IAAIY,MAAM,uBAAuBZ,MAAM,GAAGT,EAAE8V,QAAQrU,SAAShB,EAAE,MAAM,IAAIY,MAAM,qBAAqBZ,MAAM,GAAGT,EAAE6V,KAAKpU,SAAW,EAAFhB,EAAI,MAAM,IAAIY,MAAM,kBAAoB,EAAFZ,MAAQ,GAA0B,IAAvBT,EAAEmW,YAAY1U,QAAYzB,EAAEmW,YAAY1U,SAAS1B,EAAE,GAAGoD,KAAK1B,OAAO,EAAE,MAAM,IAAIJ,MAAM,uBAAsB,EAAG2xB,GAAG,CAACjzB,EAAEC,KAAK,IAAII,EAAEL,EAAEoW,YAAYhF,QAAQ,IAAI,IAAI3P,EAAE,EAAEA,EAAExB,EAAE,GAAGmD,KAAK1B,SAASD,EAAW,IAATpB,EAAEoB,EAAE,KAASpB,EAAEoB,EAAE,GAAGxB,EAAE,GAAGmD,KAAK3B,IAAI,IAAIhB,EAAET,EAAE8V,KAAK1E,QAAQ4X,GAAGuiB,yBAAyBtrC,EAAE,GAAGmD,KAAKpD,EAAE+V,QAAQ/V,EAAE2V,UAAUtV,EAAEI,EAAa,SAAXT,EAAE0D,OAAgB1D,EAAE0V,SAAS,IAAIhV,EAAEpB,OAAOgR,OAAO,CAAC,EAAEtQ,GAAG,OAAOV,OAAOgR,OAAO5P,EAAE,CAAC0V,YAAY/V,EAAEyV,KAAKrV,EAAE4pC,SAASrqC,EAAEqqC,WAAW3pC,GAAGqgB,GAAG/gB,IAAI,IAAIC,EAAE8xB,GAAG/xB,GAAGK,EAAEL,EAAE0D,OAAOjD,EAAE,CAAC,SAAS,QAAQ,aAAa,cAAcT,EAAEsW,UAAU5V,EAAEV,EAAE2V,UAAUlU,EAAEzB,EAAE4V,MAAM5T,EAAEhC,EAAE6V,aAAalS,EAAE3D,EAAE8V,KAAKtS,EAAExD,EAAE+V,QAAQtS,EAAEzD,EAAEyY,aAAa,OAAOqQ,GAAG,CAACpT,QAAQjV,EAAEiD,OAAOrD,EAAEsV,UAAUjV,EAAEkV,MAAMnU,EAAE2U,YAAYpU,EAAE8T,KAAKnS,EAAEoS,QAAQvS,EAAEwS,SAASvS,KAAKxD,GAAE,EAAGizB,GAAG,CAAClzB,EAAEC,EAAEI,KAAK,IAAII,EAAEwyB,GAAG5yB,EAAEJ,GAAGS,EAAa,SAAXL,EAAEqD,OAAgB,GAAa,IAAVrD,EAAEuV,MAA8B,YAAnB5V,EAAEyuC,QAAQlrB,GAAGtjB,EAAEQ,IAAW,IAAIgB,EAAa,IAAXxB,EAAEyB,OAAWM,EAAE/B,EAAE,GAAGmD,KAAK1C,EAAE,EAAE,GAAGiD,EAAE1D,EAAE,GAAGmD,KAAK1C,EAAE,EAAE,GAAG8C,EAAEvD,EAAE,GAAGmD,KAAK1C,EAAE,EAAE,GAAG+C,EAAExD,EAAE,GAAGmD,KAAK,GAAGW,EAAE9D,EAAE,GAAGmD,KAAK,GAAGY,EAAE0f,GAAGzjB,EAAE,GAAGmD,KAAKnD,EAAE,GAAGmD,KAAK/C,EAAEsV,UAAUlV,EAAEqV,KAAKzV,EAAE0V,QAAQrV,GAAGuD,EAAED,EAAEtD,EAAE,EAAE,GAAGwD,EAAEF,EAAEtD,EAAE,EAAE,GAAGyD,EAAEH,EAAEtD,EAAE,EAAE,GAAG0D,EAAE1D,GAAG+C,IAAIzB,GAAG+B,IAAIJ,GAAe,IAAZtD,EAAEyV,KAAK,IAAoB,IAAZzV,EAAEyV,KAAK,GAAO,GAAG1R,GAAO,IAAJX,GAAW,IAAJM,GAAwB,IAAjB1D,EAAEsV,UAAU,IAAyB,IAAjBtV,EAAEsV,UAAU,IAAuB,IAAftV,EAAE0V,QAAQ,IAAuB,IAAf1V,EAAE0V,QAAQ,IAAoB,IAAZ1V,EAAEyV,KAAK,IAAoB,IAAZzV,EAAEyV,KAAK,GAAO,CAAC,IAAWrD,EAAEC,EAAEC,EAAXH,EAAExO,EAAE,GAAS4O,EAAG,GAAG,GAAGlS,EAAE,CAAC,IAAI6S,EAAEvT,EAAE0xC,iBAAiBC,IAAI3xC,EAAEyuC,QAAQtkB,GAAGlqB,EAAE,GAAG8yB,IAAI,CAACyb,OAAO,CAAC,GAAGJ,QAAQ,CAAC/tC,EAAE2V,UAAU,GAAG,KAAK,GAAG,GAAG3V,EAAE2V,WAAWhW,EAAE0xC,iBAAiBC,KAAK3xC,EAAE0xC,iBAAiBC,GAAGp+B,GAAGnP,EAAE,CAAC,IAAIoP,EAAExR,EAAE2B,EAAEH,EAAEiP,EAAExS,EAAE,GAAG2I,QAAQ,CAAC,EAAE4J,EAAEgB,IAAId,EAAEa,EAAE3K,QAAQ,CAAC,EAAE4K,EAAErP,IAAIwO,EAAE,CAAC,EAAEH,EAAErO,EAAE,MAAMsO,EAAExS,EAAE,GAAG2I,QAAQ,CAAC4J,EAAExQ,EAAE2B,EAAEH,IAAIkP,EAAEa,EAAE3K,QAAQ,CAAC,EAAEpF,EAAEW,IAAIwO,EAAE,CAACH,EAAEvO,EAAEC,EAAEC,GAAGyO,EAAGjR,KAAK8Q,GAAGG,EAAGjR,KAAK+Q,EAAE,MAAMD,EAAExS,EAAE,GAAG2I,QAAQ,CAAC4J,EAAEhP,EAAExB,EAAE2B,IAAI+O,EAAEzS,EAAE,GAAG2I,QAAQ,CAAC,EAAEzE,EAAEX,IAAImP,EAAE,CAACH,EAAErO,EAAEF,EAAEC,GAAG0O,EAAGjR,KAAK+Q,GAAGE,EAAGjR,KAAK8Q,GAAGhR,GAAGmR,EAAGjR,KAAK1B,EAAE,IAAI,IAAI4S,EAAEF,EAAE,GAAGG,EAAEF,EAAG,GAAGxP,KAAKwP,EAAG,GAAGxP,KAAK1B,OAAO,GAAwF,YAArFmR,EAAE,GAAGC,EAAE,EAAE9S,EAAEyuC,QAAQzpB,GAAGpS,EAAGnS,EAAEuD,EAAE2O,EAAEjS,GAAG,CAAC8tC,OAAO57B,IAAK5S,EAAEyuC,QAAQ/b,GAAG9f,EAAGnS,EAAEuD,EAAE2O,EAAEjS,GAAG,CAAC8tC,OAAO57B,IAAW,CAAC,IAAStO,EAAEtE,EAAE0xC,iBAAiBC,IAAI3xC,EAAEyuC,QAAQtkB,GAAGlqB,EAAE,GAAG8yB,IAAI,CAACyb,OAAO,CAAC,GAAGJ,QAAQ,CAAC/tC,EAAE2V,UAAU,GAAG,KAAK,GAAG3V,EAAE2V,WAAWhW,EAAE0xC,iBAAiBC,KAAK3xC,EAAE0xC,iBAAiBC,GAAGrtC,GAAG,IAAIE,EAAE,CAACvE,EAAE,GAAGqE,GAAG7C,GAAG+C,EAAE7C,KAAK1B,EAAE,IAAI,IAAIwE,EAAE/D,EAAEuD,EAAEC,EAAEC,EAAEO,EAAEhE,EAAEyD,EAAEF,EAAEC,EAAEa,EAAEtB,EAAEM,EAAEP,EAAExD,EAAEyuC,QAAQ7b,GAAGpuB,EAAE/D,EAAEuD,EAAES,EAAEC,EAAEK,EAAEtD,GAApP,GAAyP,CAAC+sC,OAAOhqC,GAAE,EAAG2uB,GAAG,CAACnzB,EAAEC,KAAK,IAAII,EAAa,SAAXJ,EAAEyD,OAAgBjD,EAAE,CAACT,EAAEwuC,OAAO,GAAG5lC,QAAQvI,EAAE,CAACL,EAAEwuC,OAAO,GAAGprC,KAAK,GAAG,EAAEpD,EAAEwuC,OAAO,GAAGprC,KAAK,GAAGpD,EAAEwuC,OAAO,GAAGprC,KAAK,IAAI,CAACpD,EAAEwuC,OAAO,GAAGprC,KAAK,GAAGpD,EAAEwuC,OAAO,GAAGprC,KAAK,GAAG,EAAEpD,EAAEwuC,OAAO,GAAGprC,KAAK,KAAKpD,EAAEwuC,OAAO,GAAG5lC,QAAQ,CAAC5I,EAAEwuC,OAAO,GAAGprC,KAAK,GAAGpD,EAAEwuC,OAAO,GAAGprC,KAAK,GAAG,EAAEpD,EAAEwuC,OAAO,GAAGprC,KAAK,MAAwB,IAAlBpD,EAAEwuC,OAAO9sC,QAAYjB,EAAEkB,KAAK3B,EAAEwuC,OAAO,IAAI,IAAI9tC,EAAE,CAAC,EAAET,EAAE6V,KAAK,GAAG,EAAE7V,EAAE6V,KAAK,IAAIrU,EAAE,CAAC,GAAGkmC,OAAO1nC,EAAE8V,SAAS/T,EAAE,CAAC,GAAG2lC,OAAO1nC,EAAE0V,WAAWhS,EAAE,CAAC,GAAGgkC,OAAO1nC,EAAEmW,aAAa5S,EAAEyvB,GAAG,IAAIhzB,EAAE6V,KAAKpV,EAAEqV,QAAQtU,EAAEkU,UAAU3T,EAAEoU,YAAYzS,GAAGlD,GAAGT,EAAEyuC,QAAQlrB,GAAG9iB,EAAE+C,GAAEC,GAAGpD,EAAE,CAACoD,EAAE,GAAGA,EAAE,GAAGA,EAAE,IAAI,KAAG,EAAGqhB,GAAG,CAAC9kB,EAAEC,KAAK+yB,GAAGhzB,EAAEwuC,OAAOvuC,GAA6B,IAA1BD,EAAEwuC,OAAO,GAAGprC,KAAK1B,OAAWyxB,GAAGnzB,EAAEC,GAAGizB,GAAGlzB,EAAEA,EAAEwuC,OAAOvuC,EAAC,CAAC,IAAc2xC,GAAG7xC,GAAE,KAAkB6nC,KAAKiE,KAAKmF,KAAKM,KAAKptB,KAAKqtB,KAAKne,GAAG,CAACpzB,EAAEC,GAAE,EAAGI,EAAEI,EAAE,KAAK,IAAIC,EAAEsxB,GAAGvxB,EAAE,OAa9iJkD,EAAE3D,EAAE,+GAMN,+GAM4E+D,EAAE/D,EAAE,MAAM,MAAMgE,EAAEhE,EAAE,MAAM,MAAMiE,EAAE,4BAC3FjE,EAAE,iBAAiB,2CACrBA,EAAE,gCAAgC,wDACpC+D,qCACAA,qCAEFC,uDACAA,gOAPXhE,EAAE,iBAAiB,2DAWVU,qDAX6BV,EAAE,iBAAiB,2DAchDU,yFAICsD,0BAlCmEhE,EAAE,+DAE/E,2IAkCkES,MAAMyD,EAAElE,EAAE,6BAC1DS,iFAEhBwD,4BAEKvD,UAAU,6BACCD,iFAEhBwD,4BAEKvD,UAAUyD,EAAE,6BACD1D,8BACDT,EAAE,iBAAiB,sLAGhCA,EAAE,sDAAsD,6MA5D2/IwE,KAAI,OAAOA,GAAG,KAAK,EAAE,MAAM,sEAAsE,KAAK,EAAE,MAAM,umBAS/pJ,QAAQ,MAAM,IAAIlD,MAAM,oBAAoBkD,uBAAsB,EAsDtE/C,CAAEhB,6BAEGC,mBACNuwC,mBAAmB7sC,EAAE8sC,gBAAgB7sC,GAAGytB,GAAGzxB,EAAEK,GAAG,MAAM,WACvD0D,2DAC+C1D,YACjDV,EAAEkE,EAAEC,kEAG6CzD,YACjDV,EAAEmE,EAAED,4EAGuDxD,+BACzCD,4HAGDT,EAAE,gCAAgC,2CACjD2D,YACAsuB,GAAGhyB,aACHoE,kFACsE5D,yBAAC,EAEzE4yB,GAAG,CAACrzB,EAAEC,EAAEI,EAAEI,EAAEC,EAAEe,EAAEO,EAAE2B,KAAK,IAAIH,EAAa,SAAXvD,EAAEyD,OAAgBD,EAAED,EAAExD,EAAE,GAAGoD,KAAK,GAAGpD,EAAE,GAAGoD,KAAK,GAAGW,EAAE1D,EAAE,GAAG2D,EAAER,EAAEnD,EAAE,GAAGA,EAAE,GAAG4D,EAAET,EAAEnD,EAAE,GAAGA,EAAE,GAAG6D,EAAEV,EAAEnD,EAAE,GAAGA,EAAE,GAAG8D,EAAEX,EAAEC,EAAE,GAAI,GAAGS,EAAE,GAAI,EAAEF,EAAE,GAAI,GAAGE,EAAE,GAAI,EAAEE,EAAEZ,EAAEU,EAAEF,EAAEC,EAAEI,EAAEb,EAAEQ,EAAEC,EAAEC,EAAEI,EAAEH,EAAE,CAAC,EAAE,EAAE,GAAG,CAACC,GAAG,GAAGC,GAAG,EAAE,EAAE,GAAGD,EAAE,GAAGC,GAAG,EAAE,EAAE,GAAG,GAAGG,EAAEL,EAAE,CAAC,EAAE,EAAE,GAAG,CAACC,GAAG,EAAE,EAAE,EAAEA,EAAE,GAAGC,GAAG,EAAE,EAAE,EAAE,GAAGI,EAAE,CAACgY,KAAKmD,KAAKxb,EAAEE,EAAE,GAAGE,EAAE,IAAIiY,KAAKmD,KAAKvb,EAAEC,EAAE,GAAGE,EAAE,IAAIiY,KAAKmD,KAAK7b,EAAEO,EAAE,GAAGE,EAAE,KAAKgkB,GAAG,WAAU,IAAI,wCAAwC/jB,MAAK,IAAIC,EAAEP,EAAE,EAAE,EAAEY,EAAE0X,KAAKtH,IAAI7Q,EAAE,GAAGI,EAAEJ,EAAE,IAAIkO,EAAErO,EAAE,EAAE,EAAEsO,EAAE,CAAC,CAACpM,KAAK,QAAQ9B,KAAK9D,GAAG,CAAC4F,KAAK,QAAQ9B,KAAK7D,GAAG,CAAC2F,KAAK,QAAQ9B,KAAK9C,IAAIiR,EAAEuO,GAAE,IAAIjhB,EAAE,GAAGuG,SAASvG,EAAE,GAAGoD,KAAK1B,OAAO8Q,GAAGG,EAAEsO,GAAE,IAAIjhB,EAAE,GAAGuG,SAASvG,EAAE,GAAGoD,KAAK1B,OAAO,GAAGkR,EAAG4L,GAAE,SAASxe,EAAE,GAAGuG,SAASlG,EAAEqB,OAAO8Q,GAAGK,EAAE,CAACH,EAAEC,GAAGF,EAAE9Q,QAAQ2c,GAAEte,EAAE,GAAGoD,OAAOqP,EAAE9Q,QAAQ2c,GAAEte,EAAE,GAAGoD,OAAO,IAAI0P,EAAE,GAAG,GAAG9Q,EAAE,CAAC,IAAIuR,EAAE0N,GAAE,OAAOjhB,EAAE,GAAGuG,SAASvG,EAAE,GAAGoD,KAAK1B,OAAO8Q,GAAGK,EAAElR,KAAK4R,GAAGd,EAAE9Q,QAAQ2c,GAAEte,EAAE,GAAGoD,OAAO0P,GAAG,6DAC5uB3O,EAAE,YAAY,yCACzCX,EAAE,IAAI,MAAMW,EAAE,MAAM,iBACzC,CAAC,OAAOsO,EAAE9Q,QAAQ2c,GAAEje,IAAI,CAAC4B,KAAK,wBAAwB+rC,YAAY,CAACC,KAAKhuC,EAAEoqC,UAAU8D,WAAW,KAAI,CAAEC,QAAQ,CAAC,CAAChrC,KAAK/C,EAAEkG,SAASvG,EAAE,GAAGuG,WAAW8nC,cAAc,CAAC7pC,EAAEC,EAAE,GAAG8Z,EAAE9Z,EAAE,GAAGM,EAAEN,EAAE,IAAI6pC,gBAAgB77B,IAAI87B,gBAAgBh7B,GAAG,aAC3N2e,GAAG,uCACH3e,EAAEo6B,gBAAgB,YAAY,OAAOA,gBAAgB,YAAY,OAAOA,gBAAgB,WAAW,OAAOH,oBAAoB36B,EAAED,0DACtF5S,EAAE,GAAGoD,KAAKhB,KAAK,4DAChBnC,EAAEmW,YAAY5S,EAAE,EAAE,OAAOvD,EAAEmW,YAAY5S,EAAE,EAAE,gGAE9EvD,EAAE0V,UAAU,IAAI,EAAE,GAAG1V,EAAEmW,YAAY5S,EAAE,EAAE,GAAG,IAAIvD,EAAE0V,UAAU,GAAG,sBAC7D1V,EAAE0V,UAAU,IAAI,EAAE,GAAG1V,EAAEmW,YAAY5S,EAAE,EAAE,GAAG,IAAIvD,EAAE0V,UAAU,GAAG,uFACG1V,EAAE6V,KAAK,GAAG7V,EAAE6V,KAAK,uFACnB7V,EAAE6V,KAAK,GAAG7V,EAAE6V,KAAK,0DAC/C7V,EAAE8V,QAAQ,OAAO9V,EAAE8V,QAAQ,wDAC1B9V,EAAE0V,UAAU,OAAO1V,EAAE0V,UAAU,yCAC9ClV,uCACAC,sCACDe,eACvBqR,cACAsgB,GAAG5vB,EAAExB,EAAE/B,EAAEyE,eACTP,EAAEkuB,GAAG7tB,EAAEF,EAAE,WAAM,GAAQd,EAAEuB,GAAGytB,GAAGhuB,EAAEF,EAAE,WAAM,GAAQd,EAAEuB,GAAE,OAAG,EAAOpB,KAAI,CAAC,IAAckuC,GAAG9xC,GAAE,KAAkB6nC,KAAK4C,KAAKqB,KAAKvY,GAAG,CAACtzB,EAAEC,EAAEI,EAAEI,EAAEC,EAAEe,EAAEO,GAAE,EAAG2B,KAAK,IAAIH,EAAa,SAAXnD,EAAEqD,OAAgBD,EAAED,EAAE,EAAE,EAAEO,EAAEP,EAAE,EAAE,EAAEQ,EAAER,EAAE,EAAE,EAAES,EAAEke,GAAEha,KAAK1H,GAAGyD,EAAElC,EAAE,EAAE,EAAEmC,EAAE9D,EAAEuV,MAAMxR,EAAEnE,EAAE,GAAGmD,KAAKiB,EAAED,EAAE,GAAGD,EAAEG,EAAEF,EAAE,GAAGI,EAAE,oDACvNxC,EAAE,QAAQ2B,KAAKA,iCACtC3B,EAAE,QAAQ2B,KAAKA,iBACpCjD,IAAI8D,GAAG,yDAC0CxC,EAAE,QAAQ2B,KAAKA,iCAC1CH,EAAE,IAAI,MAAMxB,EAAE,MAAM,eACvC,IAAIyC,EAAEzC,EAAE,EAAE,EAAE0C,EAAEuc,GAAE,IAAIhhB,EAAE,GAAGsG,SAAStG,EAAE,GAAGmD,KAAKqB,GAAGM,EAAEkc,GAAE,KAAKhhB,EAAE,GAAGsG,SAAStG,EAAE,GAAGmD,KAAKqB,GAAG+N,EAAE,CAACzN,EAAEL,GAAGhE,GAAG8R,EAAE7Q,KAAKsf,GAAE,OAAOhhB,EAAE,GAAGsG,SAAS,CAAC9F,EAAEuD,IAAIS,IAAI,IAAIgO,EAAE+L,GAAE,SAASve,EAAE,GAAGsG,SAAS9F,EAAEgE,GAAGiO,EAAE,+BAC1JjR,EAAE,cAAc,oDACzBA,EAAE,cAAc,oDAChBA,EAAE,cAAc,sBAAsByC,6BAChCzC,EAAE,cAAc,2RAMNkC,OAAOO,oCACXA,0CACAP,+GAGPA,mBAAmBA,YAAYA,oGAElBA,gPAOXA,mBAAmBA,YAAYA,0CAC9BA,yBAAyBA,YAAYA,kPAOzBA,mJAIEA,wXAURe,EAAEpE,IAAI,cAAc,cAAc,KAAK,yCACvCoE,EAAEpE,IAAI,cAAc,cAAc,SAAS,yCAC3CoE,EAAEpE,IAAI,cAAc,cAAc,SAAS,yCAC3CoE,EAAEpE,IAAI,cAAc,cAAc,SAAS,0CAE5CyE,EAAEzE,IAAI,QAAQ,OAAO,OAAO,6CACvBqD,oSAMRoB,EAAEzE,IAAI,QAAQ,OAAO,QAAQ,4DAERqD,4VAMNK,yGAEXU,EAAEpE,IAAI,cAAc,cAAc,KAAK,yCACvCoE,EAAEpE,IAAI,cAAc,cAAc,SAAS,yCAC3CoE,EAAEpE,IAAI,cAAc,cAAc,SAAS,yCAC3CoE,EAAEpE,IAAI,cAAc,cAAc,SAAS,0CAE5CyE,EAAEzE,IAAI,QAAQ,OAAO,OAAO,6CACvBqD,4cASJe,EAAEpE,IAAI,cAAc,cAAc,KAAK,yCACvCoE,EAAEpE,IAAI,cAAc,cAAc,SAAS,yCAC3CoE,EAAEpE,IAAI,cAAc,cAAc,SAAS,yCAC3CoE,EAAEpE,IAAI,cAAc,cAAc,SAAS,0CAE5CyE,EAAEzE,IAAI,QAAQ,OAAO,QAAQ,6CACxBqD,mWAUDO,uDACExD,EAAE,YAAY,QAAQiD,yBAC/C8O,EAAEtR,IAAI,QAAQ,IAAI,QAAQ,KAAK,gCAElCwR,EAAE,mCACqBF,EAAEy5B,gBAAgB,yCAC1Bz5B,EAAEg6B,WAAW,gBAAgB,2BAChCh6B,EAAEg6B,WAAW,gBAAgBzoC,0BAC9ByO,EAAEg6B,WAAW,gBAAgBhpC,0BAC7BgP,EAAEg6B,WAAW,gBAAgB1oC,+KAIlBO,kDACcA,2LAGnBX,iMAKDA,kBAAkBA,YAAYA,sHAEjBA,iBAAiBF,8UAU5BE,kBAAkBA,YAAYA,yHAEjBA,iBAAiBI,gMAKZM,gDACFA,mDACZb,EAAEuB,EAAEzE,IAAI,QAAQ,OAAO,OAAO,gBAAgByE,EAAEzE,IAAI,QAAQ,eAAe,OAAO,0CAClFoE,EAAEpE,IAAI,eAAe,cAAc,cAAc,yMAM9CI,EAAE,WAAW,GAAGiD,wBACtC8O,EAAEm6B,YAAY,aAAa,sBAC7B,MAAM,OACZ5sC,EAAEwtC,oBAAoBh7B,EAAEC,SACxBjO,+CACuC/D,EAAE2B,KAAK,uDACJnC,EAAE,GAAGmD,KAAKhB,KAAK,mDACnB/B,EAAE0V,QAAQ,OAAO1V,EAAE0V,QAAQ,oDACxB1V,EAAE+V,YAAY5S,EAAE,EAAE,OAAOnD,EAAE+V,YAAY5S,EAAE,EAAE,mDAC5CnD,EAAEsV,UAAU,OAAOtV,EAAEsV,UAAU,sFAE/DtV,EAAEsV,UAAU,IAAI,EAAE,GAAGtV,EAAE+V,YAAY5S,EAAE,EAAE,GAAG,IAAInD,EAAEsV,UAAU,GAAG,kBAC7DtV,EAAEsV,UAAU,IAAI,EAAE,GAAGtV,EAAE+V,YAAY5S,EAAE,EAAE,GAAG,IAAInD,EAAEsV,UAAU,GAAG,iFACCtV,EAAEyV,KAAK,GAAGzV,EAAEyV,KAAK,mFACjBzV,EAAEyV,KAAK,GAAGzV,EAAEyV,KAAK,gBACrF9V,EAAEqtC,oBACFrtC,EAAEotC,sCAAsCnpC,UAC1CjC,EAAE0Q,EAAEC,IAAC,EAAKqG,GAAG,CAAChZ,EAAEC,EAAEI,KAAK,IAAII,EAAET,EAAE0B,OAAO,EAAEhB,EAAET,EAAEiW,YAAYzU,EAAE0gB,GAAEha,KAAKzH,GAAGsB,EAAE,CAACya,KAAKmD,KAAKne,EAAE,IAAI,EAAE,GAAG+mB,GAAG,WAAU,IAAI,uCAAuCxmB,MAAK,IAAI2B,EAAEylB,GAAGppB,EAAE,GAAGuG,UAAU,MAAM,CAACtE,KAAK,kBAAkB+rC,YAAY,CAACC,KAAKhuC,EAAEoqC,UAAU8D,WAAW,KAAI,CAAEE,cAAc,CAAC7pC,EAAExC,EAAE,GAAGuc,EAAEvc,EAAE,GAAG+C,EAAE/C,EAAE,IAAIosC,QAAQ,CAAC,CAAChrC,KAAK/C,EAAEA,EAAEK,GAAGA,EAAE6F,SAASvG,EAAE,GAAGuG,aAAagoC,gBAAgB/qC,GAAG8vB,GAAG9vB,EAAExD,EAAEC,EAAES,EAAED,EAAS,IAAPuB,EAAE,IAAe,IAAPA,EAAE,IAAO,EAAG2B,GAAE,CAAC,IAAsCmuC,GAAG/xC,GAAE,KAAkBqqC,KAAKwH,KAAKC,KAAKb,KAAKjD,KAAKxa,GAAG,CAACvzB,EAAEC,EAAEI,EAAEI,EAAEC,EAAEe,KAAKzB,EAAE,GAAGC,EAAEI,GAAGI,EAAE,GAAGC,EAAE,EAAEe,EAAE+xB,GAAG,CAACxzB,EAAEC,EAAEI,EAAEI,EAAEC,KAAK,IAAIe,EAAEgb,KAAKC,MAAM1c,EAAE,GAAO,eAAJC,GAAkBI,EAAEI,GAAGgB,EAAEpB,EAAEK,GAAGV,EAAEyB,GAAO,eAAJxB,IAAmBI,EAAEI,GAAGT,EAAEyB,EAAEpB,EAAEK,GAAGe,EAAC,EAAGgyB,GAAG,CAACzzB,EAAEC,EAAEI,EAAEI,EAAEC,EAAEe,EAAEO,EAAE2B,EAAEH,EAAEC,KAAK,IAAIM,EAAE/D,EAAE0B,OAAO,EAAEsC,EAAa,IAAXP,EAAE/B,OAAW,GAAc,IAAX8B,EAAE9B,OAAW,IAAI,IAAIyC,EAAE,EAAEA,EAAEJ,IAAII,EAAEX,EAAE7B,KAAK,GAAG,IAAIsC,EAAEjE,EAAE,GAAGkE,EAAEjE,EAAE0D,EAAE,EAAE,GAAGjD,EAAE,IAAI,IAAIyD,EAAE,EAAEC,EAAEpE,EAAE0B,OAAOqC,GAAGJ,EAAE,EAAE,GAAGQ,EAAEJ,IAAII,IAAIC,EAAE,CAAC,IAAIC,EAAErE,EAAEoE,GAAGE,EAAEN,EAAEK,EAAErC,EAAEmC,GAAGV,EAAEU,GAAGK,EAAE+uB,GAAGlvB,EAAErC,EAAEmC,GAAG1C,EAAE0C,GAAGlE,EAAEmE,GAAG/D,EAAE8D,GAAGG,GAAGkvB,GAAGhvB,EAAE/D,EAAEgB,EAAE0C,EAAEA,EAAEJ,GAAGC,GAAGP,EAAE9B,KAAKK,EAAEmC,IAAIE,EAAE,GAAGb,EAAEW,IAAIlE,EAAEmE,GAAG,GAAG/D,EAAE8D,GAAG,EAAE1C,EAAE0C,GAAG1C,EAAE0C,EAAEJ,GAAG,CAACN,EAAEjC,OAAO,EAAE,EAAEyC,GAAGR,EAAEjC,OAAOmC,EAAE,EAAE,EAAE,EAAEO,EAAC,EAAGwvB,GAAG,CAAC1zB,EAAEC,KAAK,IAAII,EAAEL,EAAEoW,YAAYhF,QAAQ,GAA0B,IAAvBpR,EAAEoW,YAAY1U,QAAiD,IAArC1B,EAAEoW,YAAY27B,QAAO,CAAC9tC,EAAEC,IAAID,EAAEC,GAAE,GAAO,CAAC7D,EAAEqB,OAAO,EAAE,IAAI,IAAIuC,EAAE,EAAEA,EAAEhE,EAAE,GAAGmD,KAAK1B,SAASuC,EAAE5D,EAAEsB,KAAK1B,EAAE,GAAGmD,KAAKa,GAAG,CAAC,IAAIxD,EAAa,SAAXT,EAAE0D,OAAgBrD,EAAEmB,OAAO,EAAE,EAAEvB,EAAE,GAAGmD,KAAK,IAAI/C,EAAEmB,OAAOf,EAAE,EAAE,EAAE,EAAER,EAAE,GAAGmD,KAAK,IAAI,IAAI1C,EAAEV,EAAE8V,KAAK1E,QAAQ3P,EAAEzB,EAAEkW,YAAY9E,QAAQpP,EAAEhC,EAAEiW,cAAc7E,QAAQzN,EAAE1D,EAAE,GAAGmD,KAAKI,EAAExD,EAAE2V,UAAUvE,QAAQ,GAA4B,IAAzB5N,EAAEuuC,QAAO,CAAC9tC,EAAEC,IAAID,EAAEC,GAAE,GAAO,CAAC,IAAID,EAAEhE,EAAE,GAAGmD,KAAK1B,OAAO,EAAE8B,EAAE,IAAIwE,MAAM/D,GAAG+tC,KAAK,EAAE,CAAC,IAAIvuC,EAAEzD,EAAE+V,QAAQ3E,QAAQ,GAA4B,IAAzB3N,EAAEsuC,QAAO,CAAC9tC,EAAEC,IAAID,EAAEC,GAAE,GAAO,CAAC,IAAID,EAAEhE,EAAE,GAAGmD,KAAK1B,OAAO,EAAE+B,EAAE,IAAIuE,MAAM/D,GAAG+tC,KAAK,EAAE,CAACve,GAAG9vB,EAAEtD,EAAEmD,EAAExD,EAAE0V,QAAQ1V,EAAE4V,MAAMlV,EAAE+C,EAAEhD,EAAEuB,EAAEP,GAAG,IAAIsC,EAAEzE,OAAOgR,OAAO,CAAC,EAAEtQ,GAAGgE,EAAEhE,EAAEqqC,SAAS,CAAChqC,EAAE+B,KAAK,MAAM1B,EAAE0B,KAAK,KAAKqB,EAAErB,KAAK,KAAKJ,EAAEI,KAAK,KAAKX,EAAEW,KAAK,KAAKoB,EAAEpB,KAAK,MAAMA,KAAK,KAAK,OAAO9C,OAAOgR,OAAOvM,EAAE,CAACqS,YAAY/V,EAAEyV,KAAKpV,EAAEuV,cAAcjU,EAAEkU,YAAYzU,EAAEkU,UAAUnS,EAAEuS,QAAQtS,EAAE4mC,SAASrmC,IAAID,GAAG4vB,GAAG3zB,IAAI,IAAIC,EAAE8xB,GAAG/xB,GAAGK,EAAEL,EAAE0D,OAAOjD,EAAE,CAAC,SAAS,QAAQ,aAAa,qBAAqBT,EAAE0V,QAAQ,IAAI,EAAE1V,EAAE0V,SAAShV,EAAEV,EAAE2V,UAAUlU,EAAEzB,EAAE4V,MAAM5T,EAAEhC,EAAEoW,YAAYzS,EAAE3D,EAAE8V,KAAKtS,EAAExD,EAAE+V,QAAQtS,EAAEzD,EAAEgW,WAAWjS,EAAE/D,EAAEiW,cAAcjS,EAAEhE,EAAEkW,YAAY,OAAO4S,GAAG,CAACpT,QAAQjV,EAAEiD,OAAOrD,EAAEsV,UAAUjV,EAAEkV,MAAMnU,EAAE2U,YAAYpU,EAAEiU,cAAclS,EAAEmS,YAAYlS,EAAE8R,KAAKnS,EAAEoS,QAAQvS,EAAEwS,SAASvS,KAAKxD,GAAE,EAAG2zB,GAAG,CAAC5zB,EAAEC,KAAK,IAAID,GAAc,IAAXA,EAAE0B,QAAuB,IAAX1B,EAAE0B,OAAW,MAAM,IAAIJ,MAAM,+BAA+B,GAAsB,IAAnBtB,EAAE,GAAGoD,KAAK1B,QAA+B,IAAnB1B,EAAE,GAAGoD,KAAK1B,OAAW,MAAM,IAAIJ,MAAM,6CAA6C,GAAGtB,EAAE,GAAGoD,KAAK1B,SAAS1B,EAAE,GAAGoD,KAAK1B,OAAO,MAAM,IAAIJ,MAAM,gDAAuH,GAAjEtB,EAAE,GAAGoD,KAAgB,SAAXnD,EAAEyD,OAAgB1D,EAAE,GAAGoD,KAAK1B,OAAO,EAAE,KAAK1B,EAAE,GAAGoD,KAAK,GAAY,MAAM,IAAI9B,MAAM,qDAAqD,IAAIZ,EAAEV,EAAE,GAAGoD,KAAK,GAAGnD,EAAE2V,MAAM,GAAc,IAAX5V,EAAE0B,SAAgC,IAAnB1B,EAAE,GAAGoD,KAAK1B,QAAY1B,EAAE,GAAGoD,KAAK,KAAK1C,GAAG,MAAM,IAAIY,MAAM,gBAAgB,IAAIG,EAAEzB,EAAE,GAAGoD,KAAK1B,OAAO,EAAE,GAAGzB,EAAE0V,UAAUo8B,QAAO,CAAChuC,EAAEC,IAAID,EAAEC,GAAE,GAAG,GAAG/D,EAAE0V,UAAUjU,SAASD,EAAE,MAAM,IAAIH,MAAM,uBAAuBG,MAAM,GAAGxB,EAAE8V,QAAQg8B,QAAO,CAAChuC,EAAEC,IAAID,EAAEC,GAAE,GAAG,GAAG/D,EAAE8V,QAAQrU,SAASD,EAAE,MAAM,IAAIH,MAAM,qBAAqBG,MAAM,GAAGxB,EAAE6V,KAAKi8B,QAAO,CAAChuC,EAAEC,IAAID,EAAEC,GAAE,GAAG,GAAG/D,EAAE6V,KAAKpU,SAAW,EAAFD,EAAI,MAAM,IAAIH,MAAM,kBAAoB,EAAFG,MAAQ,GAAGxB,EAAEgW,cAAcvU,SAASD,GAA4B,IAAzBxB,EAAEgW,cAAcvU,OAAW,MAAM,IAAIJ,MAAM,4BAA4BG,MAAM,GAAGxB,EAAEmW,YAAY27B,QAAO,CAAChuC,EAAEC,IAAID,EAAEC,GAAE,GAAG,GAA0B,IAAvB/D,EAAEmW,YAAY1U,QAAYzB,EAAEmW,YAAY1U,SAAS1B,EAAE,GAAGoD,KAAK1B,OAAO,EAAE,MAAM,IAAIJ,MAAM,wBAAwB,GAA0B,IAAvBrB,EAAEiW,YAAYxU,QAAYzB,EAAEiW,YAAYxU,SAAS1B,EAAE,GAAGoD,KAAK1B,OAAO,EAAE,MAAM,IAAIJ,MAAM,uBAAsB,EAAGuyB,GAAG,CAAC,EAAE,EAAE,EAAE,GAAGC,GAAG,CAAC9zB,EAAEC,EAAEI,KAAK,IAAII,EAAEizB,GAAGrzB,EAAEJ,GAAGS,EAAa,SAAXL,EAAEqD,OAAgBjC,EAAEhB,EAAEyV,YAAYlU,EAAEP,EAAEf,EAAE,EAAE,GAAGiD,EAAE1D,EAAE,GAAGmD,KAAK1C,EAAE,EAAE,GAAG,GAAa,IAAVD,EAAEmV,OAAe,IAAJ5T,GAAW,IAAJ2B,EAA0B,YAAnB3D,EAAEyuC,QAAQz1B,GAAG/Y,EAAEQ,IAAW,IAAI+C,EAAE/B,EAAEf,EAAE,EAAE,GAAG+C,EAAEhC,EAAEf,EAAE,EAAE,GAAiCuD,EAAEvD,EAAE8C,EAAEC,EAAEzB,EAAEkC,EAAExD,EAAEsB,EAAEwB,EAAEC,EAAEU,EAAhDlE,EAAE,GAAGmD,KAAK,GAAKnD,EAAE,GAAGmD,KAAK,GAA6BO,EAAOU,EAAErE,EAAE0xC,iBAAiBC,IAAI3xC,EAAEyuC,QAAQtkB,GAAGlqB,EAAE,GAAG4zB,IAAI,CAAC2a,OAAO,CAAC,GAAGJ,QAAQ,CAAC/tC,EAAE2V,UAAU,GAAG,KAAK,GAAG3V,EAAE2V,WAAWhW,EAAE0xC,iBAAiBC,KAAK3xC,EAAE0xC,iBAAiBC,GAAGttC,GAAG,IAAIC,EAAE,CAACrE,EAAE,GAAGoE,GAAGG,EAAa,IAAXvE,EAAEyB,OAAW8C,IAAK9D,GAAsB,IAAnBT,EAAE,GAAGmD,KAAK1B,OAAoD4C,EAAE3C,KAAK1B,EAAE,IAAlDqE,EAAE3C,KAAK1B,EAAE,GAAG2I,QAAQ,CAAC3I,EAAE,GAAGmD,KAAK,GAAG,EAAE,MAAmBpD,EAAEyuC,QAAQpb,GAAG/uB,EAAE7D,EAAEgB,EAAEwC,EAAEC,EAAEC,EAAEK,GAAvS,GAA4S,CAACgqC,OAAOlqC,GAAE,EAAGyvB,GAAG,CAAC/zB,EAAEC,KAAK,IAAII,EAAa,SAAXJ,EAAEyD,OAAgBjD,EAAE,CAACT,EAAEwuC,OAAO,GAAG5lC,QAAQvI,EAAE,CAACL,EAAEwuC,OAAO,GAAGprC,KAAK,GAAG,EAAEpD,EAAEwuC,OAAO,GAAGprC,KAAK,GAAGpD,EAAEwuC,OAAO,GAAGprC,KAAK,IAAI,CAACpD,EAAEwuC,OAAO,GAAGprC,KAAK,GAAGpD,EAAEwuC,OAAO,GAAGprC,KAAK,GAAG,EAAEpD,EAAEwuC,OAAO,GAAGprC,KAAK,KAAKpD,EAAEwuC,OAAO,GAAG5lC,QAAQ,CAAC5I,EAAEwuC,OAAO,GAAGprC,KAAK,GAAGpD,EAAEwuC,OAAO,GAAGprC,KAAK,GAAG,EAAEpD,EAAEwuC,OAAO,GAAGprC,KAAK,MAAiB,IAAX3C,EAAEiB,QAAYjB,EAAEkB,KAAK3B,EAAEwuC,OAAO,IAAI,IAAI9tC,EAAET,EAAEmW,aAAwB,IAAX1V,EAAEgB,QAAmB,IAAPhB,EAAE,MAAUA,EAAE,CAACV,EAAEwuC,OAAO,GAAGprC,KAAK,KAAK,IAAI3B,EAAExB,EAAE0V,WAAsB,IAAXlU,EAAEC,QAAmB,IAAPD,EAAE,MAAUA,EAAE,CAAC,IAAI,IAAIO,EAAE/B,EAAE8V,SAAoB,IAAX/T,EAAEN,QAAmB,IAAPM,EAAE,MAAUA,EAAE,CAAC,IAAI,IAAI2B,EAAE1D,EAAE6V,KAAgB,IAAXnS,EAAEjC,SAAaiC,EAAE,CAAC,EAAE,IAAIA,EAAE,CAAC,EAAEA,EAAE,GAAG,EAAEA,EAAE,IAAI3B,EAAE,CAAC,GAAG2lC,OAAO3lC,GAAGP,EAAE,CAAC,GAAGkmC,OAAOlmC,GAAGf,EAAE,CAAC,GAAGinC,OAAOjnC,GAAG,IAAI8C,EAAEkwB,GAAG,IAAIzzB,EAAE6V,KAAKnS,EAAEoS,QAAQ/T,EAAE2T,UAAUlU,EAAE2U,YAAY1V,GAAGD,GAAGT,EAAEyuC,QAAQz1B,GAAGvY,EAAE+C,GAAEC,GAAGpD,EAAE,CAACoD,EAAE,GAAGA,EAAE,GAAGA,EAAE,IAAI,CAACA,EAAE,GAAGA,EAAE,GAAGA,EAAE,MAAI,EAAGuwB,GAAG,CAACh0B,EAAEC,KAAK2zB,GAAG5zB,EAAEwuC,OAAOvuC,GAA6B,IAA1BD,EAAEwuC,OAAO,GAAGprC,KAAK1B,OAAWqyB,GAAG/zB,EAAEC,GAAG6zB,GAAG9zB,EAAEA,EAAEwuC,OAAOvuC,EAAC,CAAC,IAAiBgyC,GAAGlyC,GAAE,KAAkBmnC,KAAKsD,KAAKJ,KAAKyB,KAAK5X,GAAG,CAACj0B,EAAEC,EAAEI,EAAEI,KAAK,IAAIC,EAAEyhB,GAAEha,KAAKlI,GAAGwB,EAAExB,EAAEyB,OAAOM,EAAEif,GAAE,QAAQjhB,EAAEyB,GAAGkC,EAAE6a,GAAE,SAASxe,EAAEyB,GAAG+B,EAAe,IAAbnD,EAAEkG,SAAalG,EAAE6xC,gBAAgB,GAAG7qC,OAAOhH,EAAE8uC,mBAAmB,IAAI1rC,EAAE0e,GAAE6oB,cAAcxnC,EAAE/B,GAaz2J,MAAM,CAACQ,KAAK,SAAS+rC,YAAY,CAACC,KAAKxtC,EAAE4pC,SAAS6D,kBAAkB,CAAC,SAASC,WAAW,KAAI,CAAEC,QAAQ,CAAC,CAAChrC,KAAKnD,EAAEsG,SAASvG,IAAIquC,cAAc,CAAC7pC,EAAEiY,KAAKmD,KAAKlf,EAAE,KAAK4tC,gBAAgB,CAAC,CAACjoC,KAAK,SAAS9B,KAAK7D,GAAG,CAAC2F,KAAK,QAAQ9B,KAAKd,MAAM6a,GAAEre,MAAMqe,GAAEre,MAAMsuC,gBAb8nJvqC,IAAI,IAAIC,EAAE,QAAQjC,EAAEyqC,WAAW,eAAe,qBAAqBvoC,EAAEwlB,GAAG,uBAAuB,gBAAgBjoB,GAAG0C,EAAE1D,EAAEwX,QAAQhU,GAAGxD,EAAEuX,UAAU,OAAO,IAAI,IAAI5T,EAAE3D,EAAEwX,QAAQ/T,EAAED,GAAGxD,EAAEuX,UAAU,GAAG,QAAQ,MAAM,qBAC1jKhU,EAAE2pC,gBAAgB,aAAa,OAAOA,gBAAgB,OAAO,OAAOH,iBAAiBxrC,EAAE2B,uBACvFK,EAAEqpC,kCACArpC,EAAEopC,sCAAsC,gEACrBzpC,EAAEuoC,gBAAgB,+CAC3BvoC,EAAE0C,KAAKxF,kDACCsD,0CACDC,yFAEfpC,EAAE2qC,WAAW,eAAe,gBAAgB,+CAChC3qC,EAAEsqC,aAAa,4DAE7B3oC,EAAEipC,YAAY,aAAa,4BAAM,EACgO,EAAG1Y,GAAG,CAACl0B,EAAEC,KAAK,IAAII,EAAEL,EAAEwuC,OAAO,GAAGprC,KAAK3C,EAAET,EAAEwuC,OAAO,GAAGjoC,SAAS7F,EAAEV,EAAEwuC,OAAO,GAAGxuC,EAAEyuC,QAAQxa,GAAGxzB,EAAEJ,EAAEK,EAAET,GAAG,CAACuuC,OAAO,CAAC,IAAG,EAAGra,GAAGn0B,IAAI,IAAIC,EAAgB,IAAdD,EAAEgY,UAAc3X,EAAc,IAAZL,EAAEiY,QAAY,OAAO6Q,GAAG,CAAC9Q,UAAU/X,EAAEgY,QAAQ5X,GAAE,CAAC,IAAyC8xC,GAAGpyC,GAAE,KAAkByqC,KAAKJ,KAAKyB,KAA4CvX,GAAG,KAAlBD,GAAG,KAA3BD,GAAG,sBAA+B,MAAe,IAAuBG,GAAG,KAAnB,IAAIF,GAAG,MAAMA,IAAa,IAAIjY,GAAG,MAAM,WAAA5U,CAAYvH,GAAE,GAAIwH,KAAK2qC,gBAAgB,IAAIrxC,IAAI0G,KAAK4qC,WAAWpyC,CAAC,CAAC,SAAAqyC,CAAUryC,EAAEI,GAAG,IAAII,EAAEgH,KAAK2qC,gBAAgB9xC,IAAIL,QAAO,IAAJQ,EAAWA,EAAE,CAACJ,GAAGI,EAAEkB,KAAKtB,GAAGoH,KAAK2qC,gBAAgBjxC,IAAIlB,EAAEQ,EAAE,GAAG2N,GAAG,MAAM,WAAA5G,CAAYvH,EAAEI,GAAGoH,KAAKmQ,SAASvX,EAAEoH,KAAK8qC,aAAY,EAAG9qC,KAAK+qC,aAAa,IAAIzxC,IAAI0G,KAAKgrC,IAAI,IAAIzqC,MAAMP,KAAKirC,WAAW,GAAG,IAAIjyC,EAAEC,GAAGL,EAAE+I,SAAS,MAAM/I,EAAE8I,MAAM,KAAK,GAAG,CAAC9I,EAAE,IAAI,IAAII,EAAEsf,MAAMvD,OAAO+X,KAAK,MAAM,IAAIjzB,MAAM,oBAAoB,GAAGb,EAAE0I,MAAM,KAAK8U,SAAQ,CAACta,EAAEH,KAAK,IAAIC,EAAExD,EAAEuD,GAAGJ,KAAKgO,QAAQ,IAAIzN,EAAEoc,MAAMvD,OAAO8X,KAAK,MAAM,IAAIhzB,MAAM,oBAAoB,IAAIyC,EAAE0D,KAAKkrC,YAAYhvC,GAAE,EAAGF,EAAED,GAAGiE,KAAKgrC,IAAI9wC,KAAKoC,EAAC,IAAQ,KAAJrD,EAAOA,GAAG,IAAI+G,KAAK+qC,aAAanyB,WAAW3Q,QAAO,EAAE/L,EAAEH,KAAe,IAAVA,EAAEovC,OAAe,QAAJjvC,IAAWxB,KAAI,EAAEwB,KAAKA,IAAGvB,KAAK,SAAS,IAAI1B,EAAEqf,MAAMvD,OAAO6X,KAAK,MAAM,IAAI/yB,MAAM,eAAeZ,EAAEqf,MAAMvD,OAAO4X,GAAG,OAAOnW,SAAQta,IAAI,GAAO,QAAJA,EAAU8D,KAAKirC,WAAWjrC,KAAKirC,WAAW/K,OAAOlgC,KAAKorC,kBAAkB,CAAC,IAAIrvC,EAAEiE,KAAK+qC,aAAalyC,IAAIqD,GAAG,QAAO,IAAJH,EAAW,MAAM,IAAIlC,MAAM,sBAAsBmG,KAAKirC,WAAW/wC,KAAK6B,EAAEsvC,SAAS,KAAIrrC,KAAKsrC,IAAItrC,KAAKkrC,YAAYjyC,GAAE,EAAG+G,KAAKirC,WAAW,CAAC,SAAAJ,CAAUryC,EAAEI,EAAEI,GAAG,IAAIC,EAAE+G,KAAK+qC,aAAalyC,IAAIL,GAAG,QAAO,IAAJS,EAAW,CAAC,GAAGA,EAAEoyC,WAAWzyC,GAAa,IAAVK,EAAEkyC,MAAU,MAAM,IAAItxC,MAAM,sBAAsBZ,EAAEkyC,QAAQlyC,EAAEsyC,aAAarxC,KAAKlB,EAAE,MAAMC,EAAE,CAACkyC,MAAM,EAAEE,SAASzyC,EAAE2yC,aAAa,CAACvyC,IAAIgH,KAAK+qC,aAAarxC,IAAIlB,EAAES,EAAE,CAAC,WAAAiyC,CAAY1yC,EAAEI,EAAEI,EAAEC,GAAE,GAAI,IAAIe,EAAEhB,EAAEiB,OAAOM,GAAE,EAAG2B,EAAE,GAAGH,EAAE,EAAE,IAAIvD,EAAE8f,MAAMvD,OAAO8X,OAAOj0B,GAAO,KAAJJ,EAAO,MAAM,IAAIqB,MAAM,oBAAoB,IAAImC,EAAExD,EAAE8f,MAAMvD,OAAO4X,GAAG,MAAMrwB,EAAE,IAAIqY,GAAG1b,GAAG,OAAO+C,GAAGwa,SAAQ,CAACja,EAAEC,KAAK,GAAO,QAAJD,EAAU,CAAC,GAAGhC,EAAE,MAAM,IAAIV,MAAM,+CAA+CU,GAAE,EAAG,IAAIkC,EAAEzC,EAAEgC,EAAE/B,OAAO,EAAE,GAAGwC,EAAE,EAAE,MAAM,IAAI5C,MAAM,0BAA0B,GAAGqC,EAAElD,EAAE2Q,MAAM5N,EAAEA,EAAEU,GAAGuD,KAAK8qC,aAAa,GAAG9qC,KAAKorC,aAAanxC,SAASiC,EAAEjC,QAAQ+F,KAAKorC,aAAa53B,aAAatX,EAAEsX,WAAW,MAAM,IAAI3Z,MAAM,oCAAqC,KAAGjB,EAA+C,MAAM,IAAIiB,MAAM,yCAA7DmG,KAAK8qC,aAAY,EAAG9qC,KAAKorC,aAAalvC,CAA+D,CAAC,IAAI,IAAIQ,EAAE,EAAEA,EAAER,EAAEjC,OAAOyC,IAAI,CAAC,IAAIC,EAAEmV,OAAOC,aAAa,IAAIE,WAAW,GAAGvV,GAAGJ,EAAEuuC,UAAUluC,EAAEH,EAAEE,GAAGsD,KAAK6qC,UAAUluC,EAAE3D,EAAE+C,KAAK9C,EAAE,CAAC,MAAMqD,EAAEuuC,UAAUtuC,EAAEC,GAAGwD,KAAK8qC,YAAY9qC,KAAKorC,aAAanxC,OAAO,EAAE,IAAI+F,KAAK6qC,UAAUtuC,EAAEvD,EAAE+C,KAAK9C,EAAC,IAAIqD,CAAC,GAAGywB,GAAGx0B,GAAGA,EAAE,OAAOy0B,GAAG,CAACz0B,EAAEC,EAAEI,EAAEI,EAAEC,KAAK,IAAIsB,EAAE/B,EAAEkC,KAAI,CAAC+B,EAAEC,IAAInE,EAAEmE,GAAGD,EAAExC,OAAOwC,IAAG/B,KAAI,CAAC+B,EAAEC,IAAI8c,GAAE,QAAQ9c,IAAI9D,EAAE6D,KAAIP,EAAEwe,GAAEha,KAAKzH,GAAG8C,EAAEsmB,GAAGppB,EAAEgB,QAAQ+B,EAAED,EAAE9C,EAAEgB,OAAOhB,EAAEqD,EAAEya,GAAE,SAASne,EAAEoD,GAAGO,EAAE,IAAIvD,EAAE+xC,aAAa1G,QAAQp8B,QAAOxL,IAAIzD,EAAEsyC,IAAIX,gBAAgB1M,IAAIxhC,KAWt5F,MAAM,CAACjC,KAAK,SAAS+rC,YAAY,CAACC,KAAKxtC,EAAEmX,SAASs2B,kBAAkBluC,EAAEmC,KAAI+B,GAAGA,EAAE,OAAO,UAASiqC,WAAW,KAAK,IAAIjqC,EAAEF,EAAE0L,QAAOtL,GAAG3D,EAAE+xC,aAAa9M,IAAIthC,KAAIjC,KAAIiC,IAAG,CAAEiC,KAAK,SAAS9B,KAAK9D,EAAE+xC,aAAalyC,IAAI8D,IAAI0uC,UAAU,MAAK5uC,EAAEvC,KAAK,CAAC0E,KAAK,SAAS9B,KAAKZ,IAAI,IAAIQ,EAAElE,EAAEyP,QAAO,CAACtL,EAAEC,IAAIrE,EAAEqE,KAAIlC,KAAI,CAACiC,EAAEC,IAAI,IAAIia,GAAEla,MAAK2tC,QAAO,CAAC3tC,EAAEC,IAAID,EAAEujC,OAAOtjC,IAAGH,GAAG,OAAOV,GAAGW,EAAExC,QAAQ2c,GAAE5d,IAAI,CAAC0tC,QAAQ,CAAC,CAAChrC,KAAK1C,EAAE6F,SAASlG,IAAIguC,cAAc,CAAC7pC,EAAEiY,KAAKmD,KAAKjc,EAAE,KAAK2qC,gBAAgBnqC,EAAC,EAAGoqC,gBAXq+ErqC,IAAI,IAAIC,EAAE,GAA2DK,EAAE,GAAGC,EAAE,GAAGC,EAAE,GAAGK,EAAE,GAAGyN,EAAE/R,EAAE+xC,aAAarqC,OAAO1H,EAAEsyC,IAAIX,gBAAgBjqC,KAAK1H,EAAE+xC,aAAav0B,SAAQ,CAACvL,EAAEC,KAAK,GAAGlS,EAAEsyC,IAAIX,gBAAgB1M,IAAI/yB,GAAG,CAAC,IAAIC,EAAGnS,EAAEsyC,IAAIX,gBAAgB9xC,IAAIqS,KAAK,QAAQ,IAALC,GAAanS,EAAEgyC,IAAIx0B,SAAQ,CAACpL,EAAEC,KAAK,GAAGJ,EAAEsgC,aAAa5pC,SAAS0J,GAAG,CAAC,IAAIS,EAAEV,EAAEu/B,gBAAgB9xC,IAAIqS,GAAG,QAAO,IAAJY,EAAW,MAAM,IAAIjS,MAAM,wBAAwBiS,EAAE0K,SAAQzK,IAAIrP,EAAExC,KAAK,GAAGK,EAAE8Q,GAAG65B,WAAW,QAAQ75B,WAAWU,EAAEzP,EAAE0oC,WAAW,gBAAgB75B,MAAM,GAAG,IAAG,MAAMnS,EAAEgyC,IAAIx0B,SAAQ,CAACrL,EAAGC,KAAK,GAAGH,EAAEsgC,aAAa5pC,SAASyJ,GAAG,CAAC,IAAIC,EAAEF,EAAGw/B,gBAAgB9xC,IAAIqS,GAAG,QAAO,IAAJG,EAAW,MAAM,IAAIxR,MAAM,wBAAwBwR,EAAEmL,SAAQ1K,IAAI/O,EAAE7C,KAAK,GAAGK,EAAE6Q,GAAG85B,WAAW,QAAQ95B,WAAWU,EAAE,GAAGZ,OAAM,IAAI5N,EAAEpD,KAAK,WAAWK,EAAE6Q,GAAGy5B,aAAa,QAAQz5B,eAAe,KAAIpO,EAAE9C,KAAK,WAAWgR,eAAeA,gBAAgB6hB,GAAG7hB,OAAOA,UAAUjO,EAAE/C,KAAK,IAAG,IAAI,IAAI8Q,EAAED,EAAE,IAAIrO,EAAE,aAAanC,EAAEG,KAAI,CAACuQ,EAAEC,IAAID,EAAE45B,aAAa,QAAQ35B,cAAavQ,KAAK,WAAW,IAAI+B,EAA75B,oBAAo6BM,KAAKD,EAA77B,qBAAo8BO,EAA75B,kBAAo6BL,GAAG,MAAM,iBAC/3HR,EAAE0pC,iBAAiB5pC,EAAE7B,KAAIuQ,IAAG,CAAEzQ,KAAK,GAAGuyB,GAAG9hB,KAAKrM,KAAK,WAAUsnC,gBAAgB,aAAa,OAAOH,oBAAoBxrC,EAAE+B,qBAEvHG,EAAEmpC,4BACFnpC,EAAEkpC,sCAAsC,2DACpBrpC,EAAEmoC,gBAAgB,+BACtClqC,EAAEG,KAAI,CAACuQ,EAAEC,IAAI,YAAYA,aAAa3Q,EAAE2Q,GAAGtM,KAAK0lC,aAAY3pC,KAAK,sBAEjEqQ,EAAErQ,KAAK,uBAEP2B,EAAE6oC,YAAY,aAAa,sBAAM,EACua,EAAGlY,GAAG,CAAC10B,EAAEC,KAAK,IAAII,EAAE,IAAI+N,GAAGpO,EAAEwuC,OAAOvuC,EAAE2X,UAAUnX,EAAET,EAAEwuC,OAAOrsC,KAAI,CAACH,EAAE2B,IAAImmB,GAAG9nB,EAAEoB,KAAK1B,UAAShB,EAAEL,EAAEqyC,WAAWjxC,EAAEzB,EAAEwuC,OAAOrsC,KAAI,CAACH,EAAE2B,IAAI3B,EAAEoB,OAAMpD,EAAEyuC,QAAQha,GAAGh0B,EAAEgB,EAAEzB,EAAEwuC,OAAO,GAAGjoC,SAASlG,EAAEK,GAAE,EAAGi0B,GAAG30B,IAAI,IAAIC,EAAED,EAAE4X,SAASzG,QAAQ,OAAO,IAAI,OAAO2X,GAAG,CAAClR,SAAS3X,GAAE,CAAC,IAAuBgzC,GAAGlzC,GAAE,KAAkBmnC,KAAKsD,KAAKqB,KAAKjX,GAAG50B,IAAI,IAAIA,GAAc,IAAXA,EAAE0B,OAAW,MAAM,IAAIJ,MAAM,4BAA4B,IAAIrB,EAAED,EAAE,GAAGoD,KAAK/C,EAAE2H,MAAMd,KAAKlH,EAAE,GAAGmvC,mBAAmB9nC,QAAQ5G,EAAEJ,EAAEqB,OAAOzB,EAAEyB,OAAO,EAAErB,EAAEqB,OAAOzB,EAAEyB,OAAOhB,EAAET,EAAEyB,OAAOrB,EAAEqB,OAAO,EAAEzB,EAAEyB,OAAOrB,EAAEqB,OAAO,KAAKjB,EAAEJ,EAAEqB,QAAQhB,EAAET,EAAEyB,SAASjB,IAAIC,EAAE,GAAGL,EAAEI,KAAKR,EAAES,IAAW,IAAPL,EAAEI,IAAe,IAAPR,EAAES,GAAO,MAAM,IAAIY,MAAM,qDAAoD,EAAGuzB,GAAG,CAAC70B,EAAEC,KAAK,IAAII,EAAEL,EAAE0B,OAAOzB,EAAEyB,OAAOjB,EAAE,GAAG,IAAI,IAAIC,EAAE,EAAEA,EAAEL,IAAIK,EAAED,EAAEkB,KAAK3B,EAAEU,IAAI,IAAI,IAAIA,EAAE,EAAEA,EAAET,EAAEyB,SAAShB,EAAED,EAAEkB,KAAY,IAAP1B,EAAES,GAAOV,EAAEU,EAAEL,GAAGJ,EAAES,IAAI,OAAOD,GAAGq0B,GAAG,CAAC90B,EAAEC,IAAID,EAAE0B,OAAOzB,EAAEyB,OAAOmzB,GAAG70B,EAAEC,GAAG40B,GAAG50B,EAAED,GAAG+0B,GAAG/0B,IAAI,IAAIC,EAAED,EAAE,GAAGoD,KAAK/C,EAAE2H,MAAMd,KAAKlH,EAAE,GAAGmvC,mBAAmB9nC,QAAQ5G,EAAEq0B,GAAG70B,EAAEI,GAAGK,EAAEV,EAAE,GAAGuG,SAAS9E,EAAM,IAAJf,EAAM,EAAE,EAAEsB,EAAEya,KAAKmD,KAAKuC,GAAEha,KAAK1H,GAAGgB,GAAGkC,EAAEmmB,GAAG7pB,EAAEyB,QAAQ8B,EAAEsmB,GAAGrpB,EAAEiB,QAsB/6CqC,EAAE,CAAC,CAACsC,KAAK,SAAS9B,KAAKvC,IAAI,OAAO2B,GAAGI,EAAEpC,QAAQ2c,GAAEre,IAAIuD,GAAGO,EAAEpC,QAAQ2c,GAAE7d,IAAI,CAACwB,KAAK,SAAS+rC,YAAY,CAACC,KAAK,GAAGxtC,EAAEiB,SAASwsC,kBAAkB,CAACvqC,EAAE,OAAO,SAAS4qC,gBAtB6xCvqC,IAAI,IAAyEK,EAArEJ,EAAEN,EAAE1D,EAAEyB,OAAOzB,EAAEiE,EAAEV,EAAE/C,EAAEiB,OAAOjB,EAAE0D,EAAE8c,GAAE,QAAQvgB,EAAEuD,EAAExC,GAAG2C,EAAEoa,GAAE,SAAS9d,EAAEwD,EAAEzC,GAAK,GAAO,IAAJf,EAAM,CAAC,IAAI4D,EAAE,CAACE,EAAEC,EAAEC,EAAE,KAAK,gCAClhDD,OAAOL,EAAE8nC,gBAAgB,kBAAkBznC,+BAClDA,OAAON,EAAEioC,2BAA2B,gBAAgB3nC,IAAIL,2BACzDK,aAAaA,mCACTA,aAAaA,sBAC1BD,KAAKC,QAAQC,KAAKP,EAAE0oC,YAAY,QAAQpoC,iBAAiBA,iBAC3DJ,EAAE,6CAC8B5C,iDAEhC6C,EAAE,OAAO,EAAE,mBACXA,EAAE,OAAO,EAAE,mBACXA,EAAE,OAAO,EAAE,mBACXA,EAAE,OAAO,EAAE,mBACXF,EAAEwoC,YAAY,aAAa,kBAC7B,MAAMvoC,EAAE,iCACcD,EAAE8nC,gBAAgB,6CACpB/nC,EAAEioC,2BAA2B,gBAAgBhoC,gBAC/DA,EAAEwoC,YAAY,aAAazoC,EAAE0oC,YAAY,2BAC1C,MAAM,SACT7oC,EAAE2pC,gBAAgB,WAAW,OAAOH,iBAAiBrpC,EAAEC,WACvDJ,EAAEqpC,oBACFrpC,EAAEopC,sCAAsC,6BACxC/oC,GAAC,EAAkL8pC,WAAW,KAAI,CAAEC,QAAQ,CAAC,CAAChrC,KAAK3C,EAAE8F,SAASvG,EAAE,GAAGuG,WAAW8nC,cAAc,CAAC7pC,EAAEiY,KAAKmD,KAAK5d,EAAE,KAAKssC,gBAAgBvqC,IAAG,EAAGixB,GAAGh1B,IAAI40B,GAAG50B,EAAEwuC,QAAQxuC,EAAEyuC,QAAQ1Z,GAAG/0B,EAAEwuC,QAAQ,CAACA,OAAO,CAAC,IAAG,CAAC,IAAoB0E,GAAGnzC,GAAE,KAAkBmnC,KAAKsD,KAAKJ,KAAKyB,KAAK5W,GAAGj1B,IAAI,IAAIA,GAAc,IAAXA,EAAE0B,OAAW,MAAM,IAAIJ,MAAM,4BAA2B,EAAG4zB,GAAG,CAACl1B,EAAEC,KAAK,IAAII,EAAEL,EAAE,GAAGoD,KAAK3C,EAAET,EAAE,GAAGoD,KAAK1C,EAAEL,EAAEqB,OAAOD,EAAE0gB,GAAE6oB,cAAc/qC,EAAE6W,KAAKpW,GAAGsB,EAAE3B,EAAE+Q,MAAM,GAAGpP,EAAER,OAAOC,EAAE,KAAKhB,GAAG,IAAIkD,EAAEtD,EAAEoB,GAAG+B,EAAkB,IAAhBxD,EAAE,GAAGuG,SAAa,EAAE,EAAE9C,EAAEgZ,KAAKmD,KAAKuC,GAAEha,KAAKnG,GAAGwB,GAAGO,EAAE+lB,GAAG9pB,EAAE,GAAGoD,KAAK1B,QAAQsC,EAAED,EAAE/D,EAAE,GAAGoD,KAAK1B,OAAO1B,EAAE,GAAGoD,KAAKa,EAAE6lB,GAAG9pB,EAAE,GAAGoD,KAAK1B,QAAQwC,EAAED,EAAEjE,EAAE,GAAGoD,KAAK1B,OAAO1B,EAAE,GAAGoD,KAAKe,EAAE2lB,GAAG9nB,EAAEN,QAAQ0C,EAAED,EAAEnC,EAAEN,OAAOM,EAAEqC,EAAE,CAAC,CAACgC,KAAK,SAAS9B,KAAKd,GAAG,CAAC4C,KAAK,QAAQ9B,KAAKZ,GAAG,CAAC0C,KAAK,SAAS9B,KAAK9C,IAAIsC,GAAGM,EAAE1C,QAAQ2c,GAAEte,EAAE,GAAGoD,OAAOa,GAAGI,EAAE1C,QAAQ2c,GAAEte,EAAE,GAAGoD,OAAOe,GAAGE,EAAE1C,QAAQ2c,GAAEtc,IAAI,IAAIsC,EAAE,GAAGA,EAAE3C,KAAKoC,EAAE,OAAO,QAAQO,EAAE3C,KAAKsC,EAAE,OAAO,QA+Bx9B,MAAM,CAAChC,KAAK,SAAS+rC,YAAY,CAACC,KAAKhuC,EAAEoqC,SAAS6D,kBAAkB5pC,GAAG6pC,WAAW,KAAI,CAAEC,QAAQ,CAAC,CAAChrC,KAAKpB,EAAEuE,SAASvG,EAAE,GAAGuG,WAAW8nC,cAAc,CAAC7pC,EAAEiY,KAAKmD,KAAKnc,EAAE,KAAK6qC,gBAAgBjqC,IAAIkqC,gBA/B8yB9pC,IAAI,IAMzvBiO,EAN6vBhO,EAAEuc,GAAE,OAAOjhB,EAAE,GAAGuG,SAASvC,EAAER,GAAGuB,EAAEkc,GAAE,eAAejhB,EAAE,GAAGuG,SAASrC,GAAGsO,EAAEgM,GAAE,SAASxe,EAAE,GAAGuG,SAASnC,EAAEZ,GAAGiP,EAAEE,IAAI,IAAIC,EAAGnS,EAAEiB,OAAOmR,EAAE,qBAAqBF,QAAQ5N,EAAEsB,KAAK0lC,cAAc,IAAI,IAAIj5B,EAAE,EAAEA,EAAEF,EAAGE,IAAID,GAAG,GAAGD,EAAG,EAAE,iBAAiBD,KAAKG,KAAK,iBAAiBH,SAAS3Q,EAAEN,OAAO,EAAE,gBAAgBiR,qBAAqBG,KAAK,gBAAgBH,OAAOE,GAAG,sBACrzCF,OAAO5N,EAAEunC,aAAa,iBAAiB35B,2BACvCA,4BACFA,UAAUA,qEAEAA,OAAOjO,EAAE2B,KAAK0lC,wBAC/B,IAAI,IAAIj5B,EAAE,EAAES,EAAE,EAAET,EAAEpS,EAAEoS,IAAIA,IAAIrR,GAAGoR,GAAG,GAAGnS,EAAE,EAAE,cAAciS,KAAKG,KAAK,cAAcH,gBAAgBA,MAAMY,GAAGX,IAAKC,GAAG,GAAGnS,EAAE,EAAE,cAAciS,KAAKG,KAAK,cAAcH,SAAS3Q,EAAEN,OAAO,EAAE,gBAAgBiR,KAAKY,KAAK,gBAAgBZ,OAAOY,KAAK,OAAOV,GAAK,GAAmB,IAAhB7S,EAAE,GAAGuG,SAAa,CAAC,IAAIoM,EAAE,CAACC,EAAGC,EAAEC,EAAE,KAAK,gCACzQD,OAAOL,EAAE05B,gBAAgB,kBAAkBr5B,qBAC5DJ,EAAEI,4BACQA,OAAOnO,EAAEynC,gBAAgB,cAAct5B,6BACxCA,aAAaA,mCACTA,aAAaA,sBAC1BD,KAAMC,QAAQC,KAAKpO,EAAEmoC,YAAY,QAAQh6B,iBAAiBA,iBAC5DH,EAAE,6CAC8BlP,kDAEhCmP,EAAE,QAAQ,EAAE,mBACZA,EAAE,QAAQ,EAAE,mBACZA,EAAE,QAAQ,EAAE,mBACZA,EAAE,QAAQ,EAAE,mBACZH,EAAEo6B,YAAY,aAAa,kBAC9B,MAAMl6B,EAAE,+BACaF,EAAE05B,gBAAgB,yBACtCz5B,EAAE,2BACU/N,EAAE4nC,aAAa,0BAC3B95B,EAAEo6B,YAAY,aAAa,oBAC3B,MAAM,WACNnoC,EAAEkpC,gBAAgB,aAAa,OAAOA,gBAAgB,eAAe,OAAOA,gBAAgB,OAAO,OAAOH,iBAAiB9oC,EAAEK,EAAEyN,aAC/H/N,EAAE4oC,wBACA5oC,EAAE2oC,sCAAsC,mCACxC16B,YAAC,EACwM,EAAGyiB,GAAGn1B,GAAG8oB,GAAG,CAAChS,KAAK9W,EAAE8W,OAAOse,GAAG,CAACp1B,EAAEC,KAAK,IAAII,EAAEL,EAAEwuC,OAAOvZ,GAAG50B,GAAGL,EAAEyuC,QAAQvZ,GAAGl1B,EAAEwuC,OAAOvuC,GAAE,CAAC,IAAoBkzC,GAAGpzC,GAAE,KAAkByqC,KAAKJ,KAAKyB,KAAKxW,GAAGr1B,IAAI,IAAIA,GAAc,IAAXA,EAAE0B,OAAW,MAAM,IAAIJ,MAAM,qCAAqC,GAAGtB,EAAE,GAAGoD,KAAK1B,OAAO,EAAE,MAAM,IAAIJ,MAAM,6DAA6D,GAAGtB,EAAE,GAAGoD,KAAK1B,SAAS1B,EAAE,GAAGoD,KAAK1B,OAAO,MAAM,IAAIJ,MAAM,+GAC/gB,EAAGg0B,GAAG,CAACt1B,EAAEC,KAAK,IAAII,EAAEL,EAAE,GAAGoD,KAAK3C,EAAET,EAAE,GAAGuG,SAAS7F,EAAEL,EAAEqB,OAAOD,EAAEzB,EAAE,GAAGoD,KAAKpB,EAAEhC,EAAE,GAAGuG,SAAS5C,EAAEwe,GAAE6oB,cAAc/qC,EAAE6W,KAAKpW,GAAG8C,EAAEnD,EAAEsD,GAAGF,EAAEhC,EAAE2P,MAAM,GAAGrN,EAAEoe,GAAEha,KAAK1E,GAAGO,EAAEid,GAAE,QAAQxgB,EAAEC,GAAGuD,EAAEgd,GAAE,eAAejf,EAAEP,EAAEC,QAAQwC,EAAEsa,GAAE,SAAS/d,EAAEgD,EAAE/B,QAAQyC,EAAE,CAAC,CAACkC,KAAK,SAAS9B,KAAKR,GAAG,CAACsC,KAAK,QAAQ9B,KAAKf,GAAG,CAAC6C,KAAK,SAAS9B,KAAKZ,IAAI,OAAOQ,EAAExC,QAAQ2c,GAAEje,IAAI8D,EAAExC,QAAQ2c,GAAE7c,IAAI0C,EAAExC,QAAQ2c,GAAE7a,IAAI,CAACxB,KAAK,iBAAiB+rC,YAAY,CAACE,kBAAkB,CAAC,OAAO,SAASC,WAAW,KAAI,CAAEC,QAAQ,CAAC,CAAChrC,KAAKK,EAAE8C,SAASvG,EAAE,GAAGuG,WAAW8nC,cAAc,CAAC7pC,EAAEiY,KAAKmD,KAAK7b,EAAE,KAAKuqC,gBAAgBnqC,IAAIoqC,gBAAgBjqC,GAAG,WACxlBA,EAAEqpC,gBAAgB,aAAa,OAAOA,gBAAgB,eAAe,OAAOA,gBAAgB,OAAO,OAAOH,iBAAiBxpC,EAAEC,EAAEC,aAC/HI,EAAE+oC,sBACF/oC,EAAE8oC,sCAAsC,uDAEpBlpC,EAAEgoC,gBAAgB,qCAE5BjoC,EAAE4oC,YAAY,uHAIL7oC,EAAEqC,KAAK0lC,kCAC1B/nC,EAAE2oC,WAAW,eAAe,gBAAgB,mCAChC3oC,EAAEsoC,aAAa,6BAE3BpoC,EAAE0oC,YAAY,aAAa,iBAC/B,EAAGrX,GAAGv1B,GAAG8oB,GAAG,CAAChS,KAAK9W,EAAE8W,OAAO0e,GAAG,CAACx1B,EAAEC,KAAK,IAAII,EAAEL,EAAEwuC,OAAOnZ,GAAGh1B,GAAGL,EAAEyuC,QAAQnZ,GAAGt1B,EAAEwuC,OAAOvuC,GAAE,CAAC,IAAoBmzC,GAAGrzC,GAAE,KAAkByqC,KAAKqB,KAAKpW,GAAGz1B,IAAI,IAAIA,EAAE,MAAM,IAAIsB,MAAM,oBAAoB,GAAGtB,EAAE0B,OAAO,GAAG1B,EAAE0B,OAAO,EAAE,MAAM,IAAIJ,MAAM,wBAAwB,GAAc,IAAXtB,EAAE0B,QAAY1B,EAAE,GAAGoD,KAAK1B,OAAO,EAAE,MAAM,IAAIJ,MAAM,4BAA4B,GAAGtB,EAAE,GAAGuG,WAAWvG,EAAE,GAAGuG,UAAqB,IAAXvG,EAAE0B,QAAY1B,EAAE,GAAGuG,WAAWvG,EAAE,GAAGuG,SAAS,MAAM,IAAIjF,MAAM,6BAA4B,EAAGo0B,GAAG,CAAC11B,EAAEC,KAAK,IAAII,EAAEL,EAAE,GAAGoD,KAAKgO,QAAQ3Q,EAAET,EAAE,GAAGoD,KAAKgO,SAAS1Q,EAAEe,EAAEO,GAAGinB,GAAG2iB,qBAAqBvrC,EAAEJ,EAAE0W,OAAOlW,EAAER,EAAE2W,OAAkB,IAAX5W,EAAE0B,OAAW1B,EAAE,GAAGoD,UAAK,GAAQO,EAAE,CAACjD,EAAEe,GAAG,IAAIkC,EAAE,MAAM,IAAIrC,MAAM,uCAAuC,IAAIkC,EAAE2e,GAAEha,KAAKxE,GAAGF,EAAE,CAAC,CAAC4C,KAAK,SAAS9B,KAAKf,GAAG,CAAC6C,KAAK,SAAS9B,KAAK7D,GAAG,CAAC2F,KAAK,SAAS9B,KAAK9C,GAAG,CAAC4E,KAAK,SAAS9B,KAAKvC,GAAG,CAACqE,KAAK,UAAU9B,KAAKtE,EAAEmV,OAAO,CAAC/O,KAAK,UAAU9B,KAAKtE,EAAEyW,OAAO3S,EAAE,CAAC,OAAO,QAAmB,IAAX/D,EAAE0B,SAAa+B,EAAE9B,QAAQ2c,GAAEte,EAAE,GAAGoD,OAAOW,EAAEpC,KAAK,SAAS8B,EAAE9B,QAAQ2c,GAAE3a,IAiBx5B,MAAM,CAAC1B,KAAK,OAAO+rC,YAAY,CAACC,KAAK,GAAGhuC,EAAEoqC,WAAW6D,kBAAkBnqC,GAAGoqC,WAAW,KAAI,CAAEC,QAAQ,CAAC,CAAChrC,KAAKO,EAAE4C,SAASvG,EAAE,GAAGuG,WAAW8nC,cAAc,CAAC7pC,EAAEiY,KAAKmD,KAAKpc,EAAE,KAAK8qC,gBAAgB7qC,IAAI8qC,gBAjBuuBtqC,IAAI,IAAIC,EAAE,GAAGjE,EAAE0W,QAAQ1W,EAAE2W,OAAO1S,EAAE,0DAA0DjE,EAAE0W,SAAS1W,EAAE2W,OAAO1S,EAAE,2DAA2DjE,EAAE0W,QAAQ1W,EAAE2W,OAAO1S,EAAE,2DAA2DjE,EAAE0W,SAAS1W,EAAE2W,SAAS1S,EAAE,2DAA2D,IAAIC,EAAY,IAAVlE,EAAEmV,MAAU,GAAG,2BAA2BhR,EAAE6c,GAAE,IAAIjhB,EAAE,GAAGuG,SAASvG,EAAE,GAAGoD,MAAMiB,EAAE4c,GAAE,IAAIjhB,EAAE,GAAGuG,SAASvG,EAAE,GAAGoD,MAAMkB,EAAEF,EAAEiC,KAAKxF,MAAM2D,EAAE,KAAKC,EAAE,CAACL,EAAEC,GAAc,IAAXrE,EAAE0B,SAAa8C,EAAEyc,GAAE,IAAIjhB,EAAE,GAAGuG,SAASvG,EAAE,GAAGoD,KAAK1B,QAAQ+C,EAAE9C,KAAK6C,IAAI,IAAIE,EAAE8Z,GAAE,SAASxe,EAAE,GAAGuG,SAAS5C,EAAEjC,QAAQ+C,EAAE9C,KAAK+C,GAAgK,MAAM,OAC5pDT,EAAE2pC,iBAD6/C,CAAC,CAAC3rC,KAAK,cAAcoE,KAAK,OAAO,CAACpE,KAAK,IAAIoE,KAAK,OAAO,CAACpE,KAAK,IAAIoE,KAAK,OAAO,CAACpE,KAAK,IAAIoE,KAAK,OAAO,CAACpE,KAAK,QAAQoE,KAAK,OAAO,CAACpE,KAAK,OAAOoE,KAAK,SACxnDmnC,oBAAoB/oC,WAE1CR,EAAEopC,oBACAppC,EAAEmpC,sCAAsC,4HAK5B9oC,kEAEVJ,mBAGFC,UACQ,MAAHK,EAAQ,iBAAiBA,EAAE4nC,2BAA2B,aAAa1nC,gBAAgBJ,sBAAsBE,EAAEqoC,YAAY,cAAc,0CAAK,EAE6D,EAAGlX,GAAG31B,IAAuD,CAAC2W,OAA9C3W,EAAE2W,OAAqDC,OAA5C5W,EAAE4W,OAAmDxB,MAA1CpV,EAAEoV,MAAgDsB,KAAxC1W,EAAE0W,KAA6C2zB,SAAS,GAAGrqC,EAAE2W,UAAU3W,EAAE4W,UAAoB,IAAV5W,EAAEoV,UAAcwgB,GAAG,CAAC51B,EAAEC,KAAKw1B,GAAGz1B,EAAEwuC,QAAQxuC,EAAEyuC,QAAQ/Y,GAAG11B,EAAEwuC,OAAOvuC,GAAE,CAAC,IAAoBozC,GAAGtzC,GAAE,KAAkBmnC,KAAKsD,KAAKqB,KAAKhW,GAAG,CAAC71B,EAAEC,KAAK,IAAII,EAAEL,EAAE,GAAGoD,KAAK3C,EAAEJ,EAAMoB,EAAE0gB,GAAE2oB,gBAAgBzqC,EAAtB,GAA2B2B,EAAEmgB,GAAE0oB,kBAAkBxqC,EAAjD,GAAsDsD,EAAE2lB,GAAGtnB,GAAGwB,EAAExB,EAAE2B,EAAEF,EAAE,CAACpD,EAAE,GAAGA,EAAE,GAAGmD,GAA4BQ,EAAE,CAAC,CAACqC,KAAK,SAAS9B,KAAKvC,GAAG,CAACqE,KAAK,SAAS9B,KAAKf,IAAIQ,EAAErC,QAAQ2c,GAAE7a,MAAM6a,GAAE7a,IA4D9pB,MAAM,CAACxB,KAAK,wBAAwB+rC,YAAY,CAACC,KAAK,GAAGhuC,EAAE0X,WAAWhU,IAAIuqC,kBA5Duf,CAAC,OAAO,OAAO,SA4DjfC,WAAW,KAAI,CAAEC,QAAQ,CAAC,CAAChrC,KAAK3C,EAAE8F,SAASvG,EAAE,GAAGuG,WAAW8nC,cAAc,CAAC7pC,EAAE/C,GAAG6sC,gBAAgBtqC,IAAIuqC,gBA5DserqC,IAAI,IAAIC,EAAE8c,GAAE,IAAIjhB,EAAE,GAAGuG,SAAS9C,EAAE/B,OAAOiC,GAAGS,EAAE6c,GAAE,QAAQjhB,EAAE,GAAGuG,SAASvG,EAAE,GAAGoD,MAAMiB,EAAE4c,GAAE,OAAOjhB,EAAE,GAAGuG,SAASvG,EAAE,GAAGoD,MAAMkB,EAAEka,GAAE,SAASxe,EAAE,GAAGuG,SAAS9C,EAAE/B,OAAOiC,GAAGa,EAAE,CAACL,EAAEC,EAAEC,EAAEC,GAAGG,EAAEN,EAAEkC,KAAKxF,MAAM6D,EAAM,IAAJf,EAAM,MAAM,MAAMA,SAAkF,MAAM,6HAGp6Be,4CAEvCR,EAAE0pC,iBALi4B,CAAC,CAAC3rC,KAAK,WAAWoE,KAAK,OAAO,CAACpE,KAAK,iBAAiBoE,KAAK,SAKv6BmnC,oBAAoBhpC,SAC1CN,EAAEmpC,UAN43B,0OAa92B3oC,qHAEQA,KAAKP,EAAE7D,IAAI,QAAQ,UAAU,gdAapCmpB,GAAG,qBAAqB9lB,wHAK7Be,kHAESA,KAAKP,EAAE7D,IAAI,QAAQ,UAAU,WAAWoE,uiBAcrC+kB,GAAG,qBAAqB9lB,2HAI+B1D,EAAE0X,sDAC5CvT,EAAEyoC,YAAY,4CAC1BxoC,EAAEwoC,YAAY,gJAEvB1oC,EAAE7D,IAAI,QAAQ,UAAU,UAAUmE,KAAKC,sBAAsBD,KAAKC,4BAC9EJ,EAAEnD,IAAI,QAAQ,UAAU,IAAI,uBAAQ,EAE6K,EAAG20B,GAAG,CAAC91B,EAAEC,EAAEI,EAAEI,EAAEC,EAAEe,EAAEO,EAAE2B,KAAK,IAAIH,EAAE8lB,GAAGtnB,GAAGyB,EAAE,GAAGM,EAAM,IAAJP,EAAM,QAAQ,QAAQA,KAAKQ,EAAM,IAAJR,EAAM,MAAM,MAAMA,KAAKS,EAAE,CAACuO,EAAEC,IAAI,GAAG1O,KAAKyO,MAAMC,KAAKvO,EAAExD,EAAEsB,EAAEwB,EAA8Ba,EAAE,CAAC,CAACgC,KAAK,SAAS9B,KAA5CkY,KAAKmD,KAAKne,EAAEgC,IAAwC,CAAC4C,KAAK,SAAS9B,KAAK9C,GAAG,CAAC4E,KAAK,SAAS9B,KAAKkY,KAAKC,MAAM1a,EAAEwB,IAAI,CAAC6C,KAAK,SAAS9B,KAAKkY,KAAKC,MAAMjb,EAAEO,EAAEwB,KAyB7egB,EAAExE,EAAEyuC,QAAQ,CAACxsC,KAAK,0BAA0B+rC,YAAY,CAACC,KAAK,GAAGzqC,IAAI0qC,kBAzBsS,CAAC,SAyBlRC,WAAW,KAAI,CAAEC,QAAQ,CAAC,CAAChrC,KAAK,CAAC1C,EAAEsB,EAAEyB,EAAE,GAAG8C,SAAS,IAAI8nC,cAAc,CAAC7pC,EAAE9D,EAAEsB,EAAEwB,GAAG8qC,gBAAgBjqC,IAAIkqC,gBAzBuT/7B,IAAI,IAAIC,EAAEwO,GAAE,QAAQhhB,EAAEsG,SAAStG,EAAEmD,KAAKI,GAAG,MAAM,OACriBgP,EAAEg7B,iBAAiB/6B,uEAC2C1O,sIAI9DyO,EAAE66B,UAAU5pC,8aAWA8lB,GAAG,MAAM/lB,6BACF+lB,GAAG,MAAM/lB,+EAEVQ,oIAIKC,EAAE,MAAM,qBAAa,GACsK,CAACuqC,OAAO,CAACvuC,GAAGmuC,QAAQ,EAAE,KAAK,GAAG3pC,EAAE,CAAC,CAAC4B,KAAK,SAAS9B,KAAKL,GAAG,CAACmC,KAAK,SAAS9B,KAAK9C,GAAG,CAAC4E,KAAK,SAAS9B,KAAKkY,KAAKC,MAAM1a,EAAEwB,IAAI,CAAC6C,KAAK,SAAS9B,KAAKkY,KAAKC,MAAMjZ,EAAEzB,EAAEwB,KA4BvW,OAAOxD,EAAEyuC,QAAQ,CAACxsC,KAAK,uCAAuC+rC,YAAY,CAACC,KAAK,GAAGzqC,KAAKG,IAAIuqC,kBA5BkR,CAAC,OAAO,OAAO,SA4B5QC,WAAW,KAAI,CAAEC,QAAQ,CAAC,CAAChrC,KAAK,CAAC1C,EAAEsB,EAAE,GAAGuE,SAAS,IAAI8nC,cAAc,CAAC7pC,EAAEiY,KAAKmD,KAAK1b,EAAE,KAAKoqC,gBAAgB7pC,IAAI8pC,gBA5B2K/7B,IAAI,IAAIC,EAAEwO,GAAE,QAAQ5gB,EAAEkG,SAASlG,EAAE+C,KAAKI,GAAGkP,EAAEuO,GAAE,OAAOxgB,EAAE8F,SAAS9F,EAAE2C,KAAKI,GAAG,MAAM,8DACjaO,iEACA0O,EAAEpM,KAAK2lC,sEACRt5B,EAAErM,KAAK2lC,8EACCjoC,mJAI9DyO,EAAE66B,oBACA76B,EAAE46B,sCAAsC,0NAK9B7jB,GAAG,MAAM/lB,6BACF+lB,GAAG,MAAM/lB,sUAQ+BG,4CAC1BK,2DACZA,mFAEEC,EAAE,eAAe,uBAAe,GAC0L,CAACuqC,OAAO,CAAChqC,EAAEnE,EAAEI,GAAG2tC,QAAQ,EAAE,KAAK,EAAC,EAAGrY,GAAG,CAAC/1B,EAAEC,EAAEI,KAAK,IAAII,EAAER,EAAE,GAAGmD,KAAK1C,EAAED,EAAEgB,EAAEhB,EAAE,GAAGuB,EAAEvB,EAAEA,EAAEiB,OAAO,GAAGiC,EAAEwe,GAAE0oB,kBAAkBpqC,EAAE,GAAGuB,EAAEwB,EAAE8lB,GAAGtnB,GAAGyB,EAAE0e,GAAEha,KAAKzH,GAAG8C,EAAEO,EAAE,CAAC,CAACsC,KAAK,SAAS9B,KAAKZ,GAAG,CAAC0C,KAAK,SAAS9B,KAAKkY,KAAKC,MAAM1a,EAAEwB,KAAuBS,EAAE6xB,GAAG91B,EAAEC,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGwB,EAAEkC,EAAE3B,EAAE3B,EAAEsX,SAc7e3X,EAAEyuC,QAAQ,CAACxsC,KAAK,4BAA4B+rC,YAAY,CAACC,KAAK,GAAGzqC,IAAI0qC,kBAd0X,CAAC,OAAO,SAc7WC,WAAW,KAAI,CAAEC,QAAQ,CAAC,CAAChrC,KAAK1C,EAAE6F,SAAStG,EAAE,GAAGsG,WAAW8nC,cAAc,CAAC7pC,EAAEiY,KAAKmD,KAAKnc,EAAE,KAAK6qC,gBAAgBvqC,IAAIwqC,gBAd6SpqC,IAAI,IAAIC,EAAEglB,GAAGnpB,EAAE,GAAGsG,UAAUlC,EAAM,IAAJb,EAAM,QAAQ,QAAQA,KAAKc,EAAM,IAAJd,EAAMY,EAAE,MAAMZ,KAAKY,KAAKI,EAAEyc,GAAE,QAAQhhB,EAAE,GAAGsG,SAAStG,EAAE,GAAGmD,KAAKI,GAAGiB,EAAE+Z,GAAE,SAASve,EAAE,GAAGsG,SAAS7F,EAAE8C,GAAG,MAAM,8DACnmBgB,EAAE6B,KAAK2lC,4EACF3nC,wEACEI,EAAE4B,KAAK2lC,kHAIrE7nC,EAAEkpC,0TAM4C/oC,gBAAgBA,oBAAC,GACiK,CAACkqC,OAAO,CAACvuC,EAAE,GAAGgE,IAAG,EAAG+xB,GAAG,CAACh2B,EAAEC,KAAgB,SAAXA,EAAEyD,OAAgBqyB,GAAG/1B,EAAEA,EAAEwuC,OAAOvuC,GAAGD,EAAEyuC,QAAQ5Y,GAAG71B,EAAEwuC,OAAOvuC,GAAE,CAAC,IAAiBqzC,GAAGvzC,GAAE,KAAkBmnC,KAAKsD,KAAKqB,KAAK5V,GAAGj2B,IAAI,IAAIA,GAAGA,EAAE0B,OAAO,EAAE,MAAM,IAAIJ,MAAM,wCAAuC,EAAG40B,GAAG,CAACl2B,EAAEC,EAAEI,KAAK,IAAII,EAAET,EAAE,GAAGoD,KAAK1C,EAAEV,EAAE,GAAGyB,EAAEzB,EAAE,GAAGgC,EAAEvB,EAAEkD,EAAEwe,GAAE6oB,cAAc/qC,EAAE6W,KAAKrW,EAAEiB,QAAQ8B,EAAE2e,GAAE2oB,gBAAgBrqC,EAAEkD,GAAGF,EAAE0e,GAAE0oB,kBAAkBpqC,EAAEkD,GAAGI,EAAEoe,GAAEha,KAAKzH,EAAE0C,MAAMY,EAAEvC,EAAE0gB,GAAEha,KAAK1G,EAAE2B,MAAM,EAAE,GAAGW,IAAIN,GAAGhC,GAAGuC,IAAIP,EAAE,MAAM,IAAInC,MAAM,+BAA+BmC,8FAE5pBM,sBAAsBC,KAAK,IAAIC,EAAE,GAAG,IAAI,IAAIS,EAAE,EAAEA,EAAEjE,EAAEiB,SAASgD,EAAEA,EAAEf,EAAEM,EAAEtC,KAAKlB,EAAEiE,IAAIT,EAAEtC,KAAK,GAAG,IAAIuC,EAAEolB,GAAG7lB,GAAGU,EAAE,CAAC,OAAO,QAAQC,EAAE,CAAC,CAACiC,KAAK,SAAS9B,KAAKf,GAAG,CAAC6C,KAAK,UAAU9B,KAAKd,GAAG,CAAC4C,KAAK,SAAS9B,KAAKkY,KAAKC,MAAMjZ,EAAES,IAAI,CAACmC,KAAK,UAAU9B,KAAKtE,EAAE0X,UAAUlW,GAAG0C,EAAExC,KAAK,QAAQ,IAAI0C,EAAEhE,EAAE,EAAEiE,EAAEjE,EAAE,EA2BrSoE,EAAE,CAAC,CAACrB,KAAKpB,EAAEuE,SAASvG,EAAE,GAAGuG,WAAW,OAAOlC,GAAGI,EAAE9C,KAAK,CAACyB,KAAKa,EAAEsC,SAAS,IAAIjC,GAAGG,EAAE9C,KAAK,CAACyB,KAAKa,EAAEsC,SAAS,IAAI,CAACtE,KAAK,qBAAqB+rC,YAAY,CAACC,KAAK,GAAG/pC,KAAK7D,IAAI6tC,kBAAkB/pC,GAAGgqC,WAAW,KAAI,CAAEC,QAAQ3pC,EAAE4pC,cAAc,CAAC7pC,EAAEiY,KAAKmD,KAAKpc,EAAE,KAAK8qC,gBAAgBlqC,IAAImqC,gBA3BiC7pC,IAAI,IAAIK,EAAEqkB,GAAGppB,EAAE,GAAGuG,UAAUiM,EAAE,CAACyO,GAAE,IAAIjhB,EAAE,GAAGuG,SAASvG,EAAE,GAAGoD,KAAKc,GAAG+c,GAAE,QAAQvgB,EAAE6F,SAAS7F,EAAE0C,KAAKc,IAAIzC,GAAG+Q,EAAE7Q,KAAKsf,GAAE,OAAOxf,EAAE8E,SAAS9E,EAAE2B,KAAKc,IAAIsO,EAAE7Q,KAAK6c,GAAE,SAASxe,EAAE,GAAGuG,SAASvE,EAAEkC,IAAIG,GAAGmO,EAAE7Q,KAAK6c,GAAE,mBAAmB,EAAEva,IAAIK,GAAGkO,EAAE7Q,KAAK6c,GAAE,iBAAiB,EAAEva,IAA8I,MAAM,OAClrBS,EAAEkpC,iBADsiB,CAAC,CAAC3rC,KAAK,aAAaoE,KAAK,OAAO,CAACpE,KAAK,YAAYoE,KAAK,OAAO,CAACpE,KAAK,uBAAuBoE,KAAK,OAAO,CAACpE,KAAK,UAAUoE,KAAK,SAC9oBmnC,oBAAoBh7B,SAC1C9N,EAAE2oC,oBACA3oC,EAAE0oC,sCAAsC,8GAEvB7jB,GAAG,MAAMrlB,mCACHqlB,GAAG,MAAMrlB,iGAGlBslB,GAAGzkB,EAAEb,EAAE,kHAIVulB,GAAG,aAAavlB,sEAEXulB,GAAG,mBAAmBvlB,0JAGrBslB,GAAGzkB,EAAEb,EAAE,2CACPslB,GAAGzkB,EAAEb,EAAE,4CACDsO,EAAE,GAAGnM,KAAKxF,2DAC7BY,EAAE,KAAK+nB,GAAGzkB,EAAEb,EAAE,aAAa,8BAI/BG,EAAE,sCAAsC,YACxCC,EAAE,yCAAyC,UAAE,EAC4O,EAAG6xB,GAAG,CAACn2B,EAAEC,KAAKg2B,GAAGj2B,EAAEwuC,QAAQxuC,EAAEyuC,QAAQvY,GAAGl2B,EAAEwuC,OAAOvuC,EAAED,EAAEuwC,aAAY,CAAC,IAA0BgD,GAAGxzC,GAAE,KAAkByqC,KAAKJ,KAAKrC,KAAK9kB,KAAK4oB,KAAKkC,KAAK3X,GAAG,CAACp2B,EAAEC,KAAK,IAAII,EAAEL,EAAE,GAAGS,EAAET,EAAE,GAAGU,EAAEV,EAAE,GAAGyB,EAAEzB,EAAE,GAAGgC,EAAEhC,EAAE,GAAG2D,EAAE3D,EAAE,GAAGwD,EAAExD,EAAE,GAAGyD,EAAEzD,EAAE,GAAG,GAAmB,IAAhBK,EAAE+C,KAAK1B,QAA4B,IAAhBrB,EAAE+C,KAAK1B,OAAW,MAAM,IAAIJ,MAAM,qDAAqD,IAA2ckD,EAAlcR,EAAE3D,EAAE+C,KAAK,GAAGa,EAAE5D,EAAE+C,KAAK,GAAGc,EAAkB,IAAhB7D,EAAE+C,KAAK1B,OAAyBrB,EAAE+C,KAAK,GAAGnD,EAAEiY,SAAS7X,EAAE+C,KAAK,GAAGe,EAAEF,EAAEG,EAAE,EAAEC,EAAE,EAAEC,EAAEmY,KAAKC,MAAMxY,EAAEjE,EAAEiY,UAAU,GAAG1U,GAAGC,EAAE,CAAC,GAAmB,IAAhBD,EAAEJ,KAAK1B,OAAW,MAAM,IAAIJ,MAAM,qDAAqD,GAAmB,IAAhBmC,EAAEL,KAAK1B,OAAW,MAAM,IAAIJ,MAAM,uDAAuD8C,EAAEZ,EAAEJ,KAAK,GAAGiB,EAAEb,EAAEJ,KAAK,EAAE,MAAM,GAAGI,GAAGC,EAAE,MAAM,IAAInC,MAAM,0EAAgF,GAAGb,EAAE,CAAC,GAAmB,IAAhBJ,EAAE+C,KAAK1B,OAAW,MAAM,IAAIJ,MAAM,oEAAoE,GAAGb,EAAE2C,KAAK1B,OAAO,GAAGjB,EAAE2C,KAAK1B,OAAO,EAAE,MAAM,IAAIJ,MAAM,yDAAyD,GAAGjB,EAAE+C,KAAK,KAAK3C,EAAE2C,KAAK,GAAG,MAAM,IAAI9B,MAAM,8DAA8D,GAAmB,IAAhBb,EAAE2C,KAAK1B,OAAW,CAAC,GAAGjB,EAAE2C,KAAK,KAAK/C,EAAE+C,KAAK,GAAG,MAAM,IAAI9B,MAAM,+DAA+DkD,EAAE,EAAEL,EAAE1D,EAAE2C,KAAK,EAAE,MAAM,GAAmB,IAAhB3C,EAAE2C,KAAK1B,OAAW,CAAC,GAAGjB,EAAE2C,KAAK,KAAKnD,EAAEiY,UAAsB,IAAZzX,EAAE2C,KAAK,IAAQ3C,EAAE2C,KAAK,KAAKkB,EAAE,MAAM,IAAIhD,MAAM,8FAA8F,GAAGZ,EAAE,MAAM,IAAIY,MAAM,2DAA2DkD,EAAE,EAAEL,EAAE1D,EAAE2C,KAAK,EAAE,KAAK,CAAC,GAAG3C,EAAE2C,KAAK,KAAKnD,EAAEiY,UAAUzX,EAAE2C,KAAK,KAAKkB,EAAE,MAAM,IAAIhD,MAAM,0FAA0FkD,EAAE,EAAEL,EAAE1D,EAAE2C,KAAK,EAAE,CAAC,KAAK,CAAC,GAAmB,IAAhB/C,EAAE+C,KAAK1B,QAA4B,IAAhBrB,EAAE+C,KAAK1B,OAAW,MAAM,IAAIJ,MAAM,yEAAyE,GAAmB,IAAhBjB,EAAE+C,KAAK1B,SAAarB,EAAE+C,KAAK,KAAKnD,EAAEiY,UAAsB,IAAZ7X,EAAE+C,KAAK,IAAQ,MAAM,IAAI9B,MAAM,gGAAgGkD,EAAE,CAAC,CAAC,GAAG/C,EAAE,CAAC,GAAmB,IAAhBA,EAAE2B,KAAK1B,OAAW,MAAM,IAAIJ,MAAM,gDAAgD,GAAGZ,GAAmB,IAAhBL,EAAE+C,KAAK1B,QAAwB,IAAZrB,EAAE+C,KAAK,GAAO,MAAM,IAAI9B,MAAM,qCAAqC,CAAC,IAAImD,EAAE,EAAE,GAAGzC,EAAE,CAACyC,EAAE,EAAE,IAAIiO,EAAE1Q,EAAEoB,KAAK,MAAiB,IAAXsP,EAAEhR,OAAWgR,EAAE,KAAK1O,EAAES,EAAE,EAAEiO,EAAE,KAAK,EAAE1O,EAAE,IAAIS,EAAE,GAAc,IAAXiO,EAAEhR,QAAYgR,EAAE,KAAK1O,GAAG0O,EAAE,KAAKvO,IAAIM,EAAE,GAAO,IAAJA,EAAM,IAAInD,MAAM,4FAA4F,IAAIA,MAAM,qBAAqB,CAAC,IAAIoD,GAAE,EAAGK,EAAEb,EAAE,GAAGxD,EAAE,CAAC,GAAmB,IAAhBA,EAAE0C,KAAK1B,QAA4B,IAAhBhB,EAAE0C,KAAK1B,OAAW,MAAM,IAAIJ,MAAM,uDAAuD,GAAGjB,EAAE+C,KAAK,KAAK1C,EAAE0C,KAAK,GAAG,MAAM,IAAI9B,MAAM,gEAAgE,GAAmB,IAAhBZ,EAAE0C,KAAK1B,OAAW,CAAC,GAAGyC,IAAIzD,EAAE0C,KAAK,GAAG,MAAM,IAAI9B,MAAM,0EAA0EyD,EAAErE,EAAE0C,KAAK,EAAE,KAAK,CAAC,GAAGe,IAAIzD,EAAE0C,KAAK,GAAG,MAAM,IAAI9B,MAAM,oFAAoFyD,EAAErE,EAAE0C,KAAK,GAAG1C,EAAE0C,KAAK,GAAGsB,GAAE,CAAE,CAAC,CAAC,IAAI8N,EAAEpO,EAAED,EAAO,GAAGnC,EAAE,MAAM,IAAIV,MAAM,qCAAqC,GAAGqC,EAAE,MAAM,IAAIrC,MAAM,+BAA+B,GAAGkC,EAAE,MAAM,IAAIlC,MAAM,4BAA4B,GAAGmC,EAAE,MAAM,IAAInC,MAAM,8BAA8B,MAAM,CAAC+tC,UAAUrrC,EAAEsrC,eAAerrC,EAAEsrC,mBAAmBnrC,EAAEorC,iBAAiBrrC,EAAEsrC,oBAAoBj9B,EAAEk9B,kBAAkBrrC,EAAEsrC,gBAAgB,EAAEC,WAAW1rC,EAAE2rC,YAAY9qC,EAAE+qC,SAASxrC,EAAEyrC,UAAUtzB,KAAKC,MAAM3X,EAAE9E,EAAEiY,UAAUA,SAASjY,EAAEiY,SAASC,kBAAiB,EAAGK,wBAAuB,EAAGJ,gBAAgBnY,EAAEmY,gBAAgB43B,SAASvrC,EAAE4T,MAAMpY,EAAEoY,MAAM43B,qBAAniB,EAAyjBC,aAAaxrC,EAAEyrC,UAAU3rC,EAAC,EAAG6xB,GAAGr2B,GAAG8oB,GAAG,IAAI9oB,IAAIs2B,GAAGxN,GAAG,CAACrT,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK8gB,GAAG,CAACv2B,EAAEC,EAAEI,EAAEI,EAAEC,EAAEe,EAAEO,KAAK,IAAI2B,EAAE,CAAClD,EAAEC,EAAEe,GAAG+B,EAAE2e,GAAEha,KAAKxE,GAAGF,EAAE,CAAC,CAAC4C,KAAK,SAAS9B,KAAKf,GAAG,CAAC6C,KAAK,SAAS9B,KAAKvC,GAAG,CAACqE,KAAK,SAAS9B,KAAK9C,IAO18H,OAAOzB,EAAEyuC,QAAQ,CAACxsC,KAAK,4BAA4B+rC,YAAY,CAACE,kBAAkB,CAAC,OAAO,SAASC,WAAW,KAAI,CAAEC,QAAQ,CAAC,CAAChrC,KAAKO,EAAE4C,SAAStG,EAAEsG,SAAS8pC,YAAY,IAAIhC,cAAc,CAAC7pC,EAAEiY,KAAKmD,KAAKpc,EAAE,KAAK8qC,gBAAgB7qC,IAAI8qC,gBAPivHvqC,IAAI,IAAIC,EAAEua,GAAE,gBAAgBve,EAAEsG,SAAS5C,GAAGO,EAAE+c,GAAE,MAAMhhB,EAAEsG,SAAS5C,GAAGQ,EAAE8c,GAAE,OAAO5gB,EAAEkG,SAAS5C,GAAuG,MAAM,OACvpIK,EAAE4pC,iBAD6iI,CAAC,CAAC3rC,KAAK,cAAcoE,KAAK,OAAO,CAACpE,KAAK,cAAcoE,KAAK,OAAO,CAACpE,KAAK,cAAcoE,KAAK,SACnnImnC,iBAAiBtpC,EAAEC,EAAEF,SAC3CD,EAAEqpC,oBACArpC,EAAEopC,sCAAsC,iMAAuB,GAImL,CAACoB,OAAO,CAACvuC,EAAEI,GAAG+tC,QAAQ,EAAE,KAAK,EAAC,EAAG5wB,GAAG,CAACxd,EAAEC,EAAEI,EAAEI,EAAEC,EAAEe,EAAEO,EAAE2B,KAAK,IAAIH,EAAE/B,EAAE,GAAGO,EAAE,CAAC,GAAO,IAAJvB,EAAM,MAAM,IAAIa,MAAM,qFAAqF,OAAOkC,EAAE+yB,GAAGv2B,EAAEyB,EAAEO,EAAE/B,EAAEQ,EAAEJ,EAAEK,EAAEiD,GAAGH,EAAEA,EAAEoF,QAAQ,CAAC3I,EAAEQ,EAAEJ,EAAEK,IAAIV,EAAEyuC,QAAQtkB,GAAG3mB,EAAE8yB,GAAG7gB,MAAM,CAAC+4B,OAAO,CAAChrC,GAAG4qC,QAAQ,EAAE,KAAK,EAAE,CAAM,OAAuB,IAAhB3sC,EAAE2B,KAAK1B,SAAa8B,EAAE/B,EAAEmH,QAAQ,CAAC3I,EAAEQ,EAAEJ,EAAEK,KAAKV,EAAEyuC,QAAQtkB,GAAG3mB,EAAE8yB,GAAG7gB,MAAM,CAAC+4B,OAAO,CAAChrC,GAAG4qC,QAAQ,EAAE,KAAK,EAAC,EAAG5X,GAAG,CAACx2B,EAAEC,KAAK,IAAII,EAAE+1B,GAAGp2B,EAAEwuC,OAAOvuC,GAAG,GAA6B,IAA1BD,EAAEwuC,OAAO,GAAGprC,KAAK1B,OAAW,MAAM,IAAIJ,MAAM,iCAAiC,GAA8B,IAA3BtB,EAAEwuC,OAAO,IAAIprC,KAAK1B,OAAW,MAAM,IAAIJ,MAAM,gCAAgC,IAAIb,EAAET,EAAEwuC,OAAO,IAAIxuC,EAAEwuC,OAAO,IAA8B,IAA1BxuC,EAAEwuC,OAAO,GAAGprC,KAAK1B,QAAsC,IAA1B1B,EAAEwuC,OAAO,GAAGprC,KAAK1B,OAAWhB,EAAE8c,GAAGxd,EAAEK,EAAEgvC,UAAUhvC,EAAE6X,SAAS7X,EAAEivC,eAAejvC,EAAEyvC,SAAS9vC,EAAEwuC,OAAO,GAAGxuC,EAAEwuC,OAAO,GAAG,GAAG,GAAG/tC,EAAE,OAAOitB,GAAG1tB,EAAEU,EAAEV,EAAEwuC,OAAO,GAAGxuC,EAAEwuC,OAAO,GAAGxuC,EAAEwuC,OAAO,QAAG,OAAO,OAAO,EAAOxuC,EAAEwuC,OAAO,GAAGnuC,EAAEJ,GAAG,IAAIwB,EAAE+b,GAAGxd,EAAEK,EAAEgvC,UAAUhvC,EAAE6X,SAAS7X,EAAEmvC,iBAAiBnvC,EAAEyvC,SAAS9vC,EAAEwuC,OAAO,GAAGxuC,EAAEwuC,OAAO,GAAGnuC,EAAEuvC,YAAY5tC,EAAEwb,GAAGxd,EAAEK,EAAEgvC,UAAUhvC,EAAE6X,SAAS7X,EAAEmvC,iBAAiBnvC,EAAE0vC,UAAU/vC,EAAEwuC,OAAO,GAAGxuC,EAAEwuC,OAAO,GAAG,EAAEnuC,EAAEuvC,YAAYliB,GAAG1tB,EAAEU,EAAEe,EAAEO,EAAEhC,EAAEwuC,OAAO,QAAG,EAAOxuC,EAAEwuC,OAAO,GAAGxuC,EAAEwuC,OAAO,GAAGxuC,EAAEwuC,OAAO,GAAGnuC,EAAEJ,EAAC,CAAC,IAAmCuzC,GAAGzzC,GAAE,KAAkBmnC,KAAKsD,KAAKqB,KAAKpV,GAAGz2B,IAAI,IAAIA,GAAGA,EAAE0B,OAAO,EAAE,MAAM,IAAIJ,MAAM,kBAAkB,GAAmB,IAAhBtB,EAAE,GAAGuG,SAAa,MAAM,IAAIjF,MAAM,6BAA6B,GAAGtB,EAAE0B,QAAQ,EAAE,CAAC,IAAIzB,EAAmB,EAAjBD,EAAE,GAAGoD,KAAK1B,SAAW1B,EAAE,GAAGoD,KAAK,GAAG,GAAc,IAAXpD,EAAE0B,SAAazB,EAAe,EAAbD,EAAE,GAAGoD,KAAK,KAAOpD,EAAE,GAAGoD,KAAK,KAAKnD,EAAE,MAAM,IAAIqB,MAAM,8EAA8E,GAAGo1B,GAAG,CAAC12B,EAAEC,EAAEI,KAAK,IAAII,EAAE,GAAG,IAAI,IAAIC,EAAET,EAAE,EAAES,GAAG,IAAIA,EAAED,GAAG,yBAChxDT,EAAEysC,WAAW,UAAU/rC,SAASgpB,GAAG,gBAAgBhpB,EAAEL,gGAIhDqpB,GAAG,mBAAmBhpB,EAAET,8EAGnBypB,GAAG,qBAAqBhpB,EAAET,iBAChD,MAAM,uBACID,EAAEqG,KAAKxF,8IAIbJ,wDAAC,EAGNk2B,GAAG,CAAC32B,EAAEC,EAAEI,KAAK,IAAII,EAAE,GAAG,IAAI,IAAIC,EAAET,EAAE,EAAES,GAAG,IAAIA,EAAED,GAAG,6BAC/BT,EAAEysC,WAAW,UAAU/rC,SAASgpB,GAAG,gBAAgBhpB,EAAEL,8IAKtCqpB,GAAG,mBAAmBhpB,EAAET,8EAEjCypB,GAAG,mBAAmBhpB,EAAET,yHAIpBypB,GAAG,qBAAqBhpB,EAAET,qBAChD,MAAM,4EAGJQ,iDAAC,EAEJm2B,GAAG,CAAC52B,EAAEC,EAAEI,KAAK,IAAII,EAAE,GAAG,IAAI,IAAIC,EAAET,EAAE,EAAES,GAAG,IAAIA,EAAED,GAAG,6BACnCT,EAAEysC,WAAW,UAAU/rC,SAASgpB,GAAG,gBAAgBhpB,EAAEL,gHAIhDqpB,GAAG,mBAAmBhpB,EAAET,qCAC3BypB,GAAG,mBAAmBhpB,EAAET,kEAEhBypB,GAAG,qBAAqBhpB,EAAET,qBAChD,MAAM,4EAGJQ,iDAAC,EAEJo2B,GAAG,CAAC72B,EAAEC,EAAEI,KAAK,IAAII,EAAE,GAAG,IAAI,IAAIC,EAAET,EAAE,EAAES,GAAG,IAAIA,EAAED,GAAG,6BACnCT,EAAEysC,WAAW,UAAU/rC,SAASgpB,GAAG,gBAAgBhpB,EAAEL,kEAElDqpB,GAAG,mBAAmBhpB,EAAET,0DAEtBypB,GAAG,mBAAmBhpB,EAAET,sCAC1BypB,GAAG,mBAAmBhpB,EAAET,8DAEjBypB,GAAG,qBAAqBhpB,EAAET,qBAChD,MAAM,4EAGJQ,iDAAC,EAEJq2B,GAAG,CAAC92B,EAAEC,EAAEI,KAAK,OAAOA,EAAEkX,MAAM,KAAK,EAAE,OAAOmf,GAAG12B,EAAEC,EAAEI,EAAEyV,KAAKpU,QAAQ,KAAK,EAAE,OAAOi1B,GAAG32B,EAAEC,EAAEI,EAAEyV,KAAKpU,QAAQ,KAAK,EAAE,OAAOk1B,GAAG52B,EAAEC,EAAEI,EAAEyV,KAAKpU,QAAQ,KAAK,EAAE,OAAOm1B,GAAG72B,EAAEC,EAAEI,EAAEyV,KAAKpU,QAAQ,QAAQ,MAAM,IAAIJ,MAAM,gBAAe,EAAGy1B,GAAG,CAAC/2B,EAAEC,KAAK,IAAII,EAAE8hB,GAAEgpB,SAASnrC,EAAE,GAAGoD,KAAKgO,QAAQnR,EAAE6V,MAAMrV,EAAET,EAAE,GAAGoD,KAAK3B,EAAE,CAAC,CAAC4E,KAAK,SAAS9B,KAAK4d,GAAEha,KAAK9H,IAAI,CAACgG,KAAK,SAAS9B,KAAKtE,EAAE6V,OAAO,GAAY,IAAT7V,EAAEsX,KAAS,CAAC,IAAI/T,EAAEokB,GAAG5nB,EAAE,GAAGuG,UAAU9E,EAAEE,KAAK,CAAC0E,KAAK7C,EAAEe,KAAKtE,EAAEY,OAAO,CAACY,EAAEE,QAAQ2c,GAAEte,EAAE,GAAGoD,SAASkb,GAAEje,IAUzb,MAAM,CAAC4B,KAAK,MAAM+rC,YAAY,CAACC,KAAK,GAAGhuC,EAAEsX,OAAO22B,kBAVmZ,CAAC,SAU/XC,WAAW,KAAI,CAAEC,QAAQ,CAAC,CAAChrC,KAAK/C,EAAEkG,SAASvG,EAAE,GAAGuG,WAAW8nC,cAAc,CAAC7pC,EAAEiY,KAAKmD,KAAKuC,GAAEha,KAAK9H,GAAG,KAAKiuC,gBAAgB7sC,IAAI8sC,gBAVgR/qC,IAAI,IAAIC,EAAE+a,GAAE,SAASxe,EAAE,GAAGuG,SAASlG,EAAEqB,QAAQqC,EAAEkd,GAAE,IAAIjhB,EAAE,GAAGuG,SAAS9F,EAAEiB,QAAQsC,EAAED,EAAEsC,KAAKxF,MAAMoD,EAAE6yB,GAAGrzB,EAAEhD,EAAEiB,OAAOzB,GAAGiE,EAAE,CAAC,CAACjC,KAAK,cAAcoE,KAAK,OAAO,CAACpE,KAAK,OAAOoE,KAAK,MAAM3E,OAAOzB,EAAE6V,KAAKpU,SAAS,OAAgB,IAATzB,EAAEsX,MAAUrT,EAAEvC,KAAK,CAACM,KAAK,iBAAiBoE,KAAKrC,IAAI,iBACvsBR,EAAEoqC,iBAAiB1pC,GAAGspC,iBAAiBzpC,EAAEN,mBACzCD,EAAE6pC,4BACF7pC,EAAE4pC,sCAAsC,wDAE1B3pC,EAAEyoC,gBAAgB,6CAEpBloC,sBACZC,uDAAC,EAE4M,EAAG+yB,GAAG,CAACh3B,EAAEC,KAAK,GAAGD,EAAE0B,OAAO,EAAE,CAAC,IAAIrB,EAAEL,EAAE,GAAGmvC,mBAAmB1uC,EAAET,EAAE0B,QAAQ,GAAG1B,EAAE,GAAGuE,KAAKvE,EAAE,GAAG0wC,kBAAkB,GAAG,EAAEhwC,EAAEV,EAAE,GAAGoD,KAAK1B,OAAOD,EAAE,IAAIqF,WAAW,EAAEpG,GAAGsxC,KAAK,GAAG,GAAGhyC,EAAE0B,QAAQ,EAAE,CAAC,IAAIiC,EAAE3D,EAAE,GAAGmvC,mBAAmB,IAAI,IAAI3rC,EAAE,EAAEA,EAAEG,EAAEjC,OAAO8B,IAAI/B,EAAE4F,OAAO1D,EAAEH,KAAK6D,OAAOhH,EAAEmD,IAAI/B,EAAE4F,OAAO1D,EAAEH,IAAI9C,GAAG2G,OAAOhH,EAAEmD,EAAEG,EAAEjC,QAAQ,MAAMrB,EAAE4d,SAAQ,CAACta,EAAEH,IAAI/B,EAAE4F,OAAO7D,IAAI6D,OAAO1D,KAAI,IAAI3B,EAAE,GAAG,OAAOP,EAAEwc,SAAQta,GAAG3B,EAAEL,KAAKgC,KAAI,CAAC4T,KAAKtX,EAAEsX,KAAK1W,MAAMJ,EAAEqV,KAAK9T,EAAE,CAAM,OAAO/B,GAAGg3B,GAAG,CAACj3B,EAAEC,KAAKw2B,GAAGz2B,EAAEwuC,QAAQ,IAAInuC,EAAE22B,GAAGh3B,EAAEwuC,OAAOvuC,GAAGD,EAAEyuC,QAAQ1X,GAAG/2B,EAAEwuC,OAAOnuC,GAAG,CAACmuC,OAAO,CAAC,IAAG,CAAC,IAAiEiF,GAAG1zC,GAAE,KAAkBqM,KAAKo+B,KAAKqB,KAAK3U,GAAGl3B,IAAI,GAAGnC,EAAG6E,OAAO8tC,wBAAwBxwC,GAAc,IAAXA,EAAE0B,QAAY,MAAM,IAAIJ,MAAM,6BAA4B,EAAG61B,GAAG,CAACn3B,EAAEC,EAAEI,KAAK,IAAII,EAAa,SAAXR,EAAEyD,OAAgBhD,EAAEV,EAAEoD,KAAKgO,QAAQ3Q,GAAGC,EAAEc,OAAO,EAAE,EAAEd,EAAE6f,OAAO,IAAI9e,EAAEnC,OAAOQ,eAAea,KAAKV,EAAE,aAAa+B,EAAE/B,EAAEmW,YAAYhF,QAAQzN,EAAE1D,EAAE8V,QAAQ3E,QAAQ5N,EAAE/B,EAAExB,EAAE0V,UAAUvE,QAAQ,GAAG3N,EAAExD,EAAE6V,KAAK1E,QAAQ4X,GAAGsiB,qBAAqBjrC,EAAEK,EAAEsB,EAAE2B,EAAEH,EAAEC,GAAG,IAAIM,EAAEilB,GAAGyiB,uBAAuBprC,EAAEK,EAAEiD,EAAEH,EAAExB,EAAEyB,EAAExD,EAAEyV,SAAS1R,EAAE1E,OAAOgR,OAAO,CAAC,EAAErQ,GAAGwB,EAAEnC,OAAOgR,OAAOtM,EAAE,CAACoS,YAAYpU,EAAE+T,QAAQpS,EAAEmS,KAAKrS,EAAEkS,UAAUnS,EAAE6mC,SAASpqC,EAAEoqC,WAAW/qC,OAAOgR,OAAOtM,EAAE,CAACoS,YAAYpU,EAAE+T,QAAQpS,EAAEmS,KAAKrS,EAAE4mC,SAASpqC,EAAEoqC,WAAW,IAAIpmC,EAAEF,EAAEqN,QAAQ,OAAOnN,EAAEtC,KAAKsC,EAAEzC,OAAO,EAAE,GAAG,IAAI,CAACwC,EAAEvD,EAAEwD,EAAEF,EAAC,EAAGqzB,GAAG,CAACp3B,EAAEC,KAAK,IAAII,EAAa,SAAXJ,EAAEyD,OAAoDjC,EAAE,CAAC,CAAC4E,KAAK,SAAS9B,KAApD4d,GAAEha,KAAKnI,IAAqD,CAACqG,KAAK,SAAS9B,KAA/D4d,GAAEha,KAAKlI,EAAEmW,eAA+DpU,EAAE,CAAC,CAACC,KAAK,aAAaoE,KAAK,OAAO,CAACpE,KAAK,aAAaoE,KAAK,QAAQ,GAAGpG,EAAEmW,YAAY1U,QAAQ,EAAE,CAAC,IAAIiC,EAAE1D,EAAEmW,YAAYnW,EAAEmW,YAAY1U,OAAO,GAAG8B,EAAEvD,EAAE8V,QAAQ9V,EAAE8V,QAAQrU,OAAO,GAAG+B,EAAExD,EAAE6V,KAAK7V,EAAE6V,KAAKpU,OAAO,EAAE,GAAGqC,EAAE9D,EAAE6V,KAAK7V,EAAE6V,KAAKpU,OAAO,GAAGsC,KAAKP,EAAEM,GAAGtC,EAAEE,KAAK,CAAC0E,KAAK,SAAS9B,KAAKZ,GAAG,CAAC0C,KAAK,SAAS9B,KAAKf,GAAG,CAAC6C,KAAK,SAAS9B,KAAKd,GAAG,CAAC4C,KAAK,SAAS9B,KAAKR,IAAI/B,EAAEL,KAAK,CAACM,KAAK,KAAKoE,KAAK,OAAO,CAACpE,KAAK,KAAKoE,KAAK,OAAO,CAACpE,KAAK,UAAUoE,KAAK,OAAO,CAACpE,KAAK,QAAQoE,KAAK,QAAQ,IAAIpC,GAAE,EAAG,GAA0B,IAAvBhE,EAAEmW,YAAY1U,OAAW,CAAC,IAAIwC,EAAEjE,EAAEmW,YAAYnW,EAAEmW,YAAY1U,OAAO,GAAGyC,EAAElE,EAAE8V,QAAQ9V,EAAE8V,QAAQrU,OAAO,GAAG0C,EAAEnE,EAAE6V,KAAK7V,EAAE6V,KAAKpU,OAAO,EAAE,GAAG2C,EAAEpE,EAAE6V,KAAK7V,EAAE6V,KAAKpU,OAAO,GAAGuC,KAAKG,EAAEC,GAAG5C,EAAEE,KAAK,CAAC0E,KAAK,SAAS9B,KAAKL,GAAG,CAACmC,KAAK,SAAS9B,KAAKJ,GAAG,CAACkC,KAAK,SAAS9B,KAAKH,GAAG,CAACiC,KAAK,SAAS9B,KAAKF,IAAIrC,EAAEL,KAAK,CAACM,KAAK,KAAKoE,KAAK,OAAO,CAACpE,KAAK,KAAKoE,KAAK,OAAO,CAACpE,KAAK,UAAUoE,KAAK,OAAO,CAACpE,KAAK,QAAQoE,KAAK,OAAO,CAAC,MAAM,CAAC5E,EAAEO,GAAE,EAAGgC,EAAEC,EAAE,CAAK,CAAC,GAAG5D,EAAE,MAAM,IAAIiB,MAAM,yEAAyE,IAAIqC,EAAEwe,GAAE4oB,eAAe9qC,EAAEmW,aAAmS,OAAtR3U,EAAEE,KAAK,CAAC0E,KAAK,SAAS9B,KAAKZ,GAAG,CAAC0C,KAAK,SAAS9B,KAAKtE,EAAE6V,MAAM,CAACzP,KAAK,SAAS9B,KAAKtE,EAAE8V,UAAU/T,EAAEL,KAAK,CAACM,KAAK,gBAAgBoE,KAAK,MAAM3E,OAAOiC,EAAEjC,QAAQ,CAACO,KAAK,OAAOoE,KAAK,MAAM3E,OAAOzB,EAAE6V,KAAKpU,QAAQ,CAACO,KAAK,UAAUoE,KAAK,MAAM3E,OAAOzB,EAAE8V,QAAQrU,SAA+C,CAACD,EAAEO,IAAnC/B,EAAE6V,KAAKi8B,QAAO,CAACtuC,EAAEM,IAAIN,EAAEM,KAAkB,GAAG,EAAG,GAAGszB,GAAG,CAACr3B,EAAEC,EAAEI,EAAEI,EAAEC,EAAEe,EAAEO,EAAE2B,EAAEH,EAAEC,EAAEM,EAAEC,KAAK,IAAIC,EAAa,SAAXvD,EAAEgD,OAAgBQ,EAAEjE,EAAEoG,KAAKxF,MAAMsD,EAAEqa,GAAE,SAASve,EAAEoG,KAAK4lC,OAAOxrC,GAAG,GAAGC,EAAE0V,YAAY1U,QAAQ,EAAE,CAAC,IAAI0C,EAAE,GAAGC,EAAE,GAAGC,EAAE,GAAGE,EAAEnE,GAAG4D,EAAE,EAAE,GAAG,GAAKG,EAAFL,EAAI,+FAEx9FS,gBAAgBA,4EACZA,sBAAsBA,iDACXA,0HAIVvE,EAAEksC,gBAAgB,oCAChC1qC,uBACC,+FAEQ+C,gBAAgBA,6EACXvE,EAAEksC,gBAAgB,oCAChC1qC,uBACsB,IAAvBf,EAAE0V,YAAY1U,OAAW,CAAC,IAAIgD,EAAErE,GAAG4D,EAAE,EAAE,GAAKI,EAAFL,EAAI,+FAEpCU,gBAAgBA,4EACZA,sBAAsBA,0BAA0BA,0HAI/D,+FAEWA,gBAAgBA,6DAC3BJ,EAAE,iCAEP,CAAC,MAAM,iBACNtE,EAAE4tC,iBAAiBpqC,GAAGgqC,iBAAiBvtC,EAAEkE,qBAEzCnE,EAAEqtC,8BACArtC,EAAEotC,sCAAsC,yDAE1BjpC,EAAE+nC,gBAAgB,gDACjB/nC,EAAE+nC,gBAAgB,+CAErBhoC,KAAKP,kDAEjBU,oBACAD,oBACAE,oBACAtC,+DAGF,CAAK,CAAC,GAAGiC,EAAE,MAAM,IAAI3C,MAAM,yEAAyE,IAAI8C,EAAE1D,EAAE0V,YAAY1U,OAAO2C,EAAE3D,EAAEoV,KAAKpU,OAAO4C,EAAE,GAAG,OAASA,EAAFb,EAAI,oPAQ7IxD,EAAEksC,gBAAgB,kCAChC1qC,qBACC,kDAEWxB,EAAEksC,gBAAgB,gCAChC1qC,kBACF,iBACAzB,EAAE4tC,iBAAiBpqC,GAAGgqC,iBAAiBvtC,EAAEkE,qBAEzCnE,EAAEqtC,8BACArtC,EAAEotC,sCAAsC,uDAC1BjpC,EAAE+nC,gBAAgB,gDACjB/nC,EAAE+nC,gBAAgB,2DAET9nC,oCAEZF,KAAKP,mNAMMS,EAAE,uDACCslB,GAAG,yBAAyB,IAAItlB,iDAC/BslB,GAAG,yBAAyB,IAAItlB,mDAEjDA,EAAE,gFAGG/D,EAAE+D,WAAW/D,4DACGqpB,GAAG,mBAAmB,OAAOrpB,EAAE+D,KAAKA,yCAC/C/D,EAAE+D,SAASslB,GAAG,gBAAgB,SAASrlB,0BACvDC,qCAEJtC,+DAGF,GAAGs1B,GAAGt3B,GAAG,GAAGA,EAAE0D,UAAU1D,EAAE0zC,YAAY1zC,EAAE0V,WAAW1V,EAAEoW,YAAY1U,SAAS61B,GAAGv3B,GAAG,GAAGs3B,GAAGt3B,MAAMA,EAAE2zC,kBAAkBnc,GAAGx3B,GAAG,GAAGs3B,GAAGt3B,MAAMA,EAAE4zC,gBAAgB5zC,EAAE2V,YAAY8hB,GAAGz3B,IAAG,CAAE0D,OAAO1D,EAAE0D,OAAOgS,QAAQ,CAAC,SAAS,QAAQ,aAAa,cAAc1V,EAAEsW,UAAUo9B,SAAS1zC,EAAEuW,UAAUH,YAAYpW,EAAE6V,aAAaE,QAAQ/V,EAAE+V,QAAQD,KAAK9V,EAAE8V,OAAO4hB,GAAG,CAAC13B,EAAEC,EAAEI,EAAEI,KAAK,IAAIC,EAAEe,GAAG01B,GAAGl3B,EAAEQ,EAAEJ,GAAG2B,EAAEif,GAAE,IAAIhhB,EAAEsG,SAAStG,EAAEmD,KAAK1B,QAAQiC,EAAE3B,EAAEqE,KAAKxF,MAA0B4C,EAAE,GAAG/C,EAAEizC,gBAAgBlwC,GAAG,YAAYE,0BAA0BF,GAAG,YAAYE,qCAAqC,IAAII,EAAEC,EAAEC,EAAEC,EAAEC,GAAGizB,GAAG31B,EAAEf,GAAGqD,EAAEpC,QAAQ2c,GAAEre,EAAEmD,SAASkb,GAAE7c,IAAmB,MAAM,CAACQ,KAAKjC,EAAEguC,YAAY,CAACC,KAAK,GAAGxtC,EAAE4pC,YAAYpmC,KAAKC,KAAKC,IAAI+pC,kBAAxE,CAAC,SAA4FC,WAAW,KAAI,CAAEC,QAAQ,CAAC,CAAChrC,KAAK3B,EAAE8E,SAAStG,EAAEsG,WAAW8nC,cAAc,CAAC7pC,EAAEiY,KAAKmD,KAAKuC,GAAEha,KAAK1G,GAAG,KAAK6sC,gBAAgBvqC,IAAIwqC,gBAAgBlqC,GAAGgzB,GAAGhzB,EAAErC,EAAE/B,EAAEmD,KAAK1B,OAAOD,EAAEC,OAAOhB,EAApc,kBAAwc+C,EAAE,EAAEO,EAAEC,EAAEC,EAAEC,GAAE,EAAGwzB,GAAG33B,IAAI,IAAIC,EAAwB,IAAtBD,EAAEwW,kBAAsBnW,EAAEo3B,GAAGz3B,GAAG,GAAgB,IAAbK,EAAEqzC,SAAa,MAAM,IAAIpyC,MAAM,0EAA0E,IAAIb,EAAE,CAACkzC,gBAAgB1zC,KAAKI,EAAEgqC,SAAS,IAAI,MAAM,IAAI5pC,EAAE4pC,SAAS9S,GAAG92B,GAAE,EAAGm3B,GAAG,CAAC53B,EAAEC,KAAKi3B,GAAGl3B,EAAEwuC,QAAQxuC,EAAEyuC,QAAQ/W,GAAG,cAAc13B,EAAEwuC,OAAO,IAAG,EAAGvuC,GAAE,EAAG43B,GAAG,CAACniB,QAAQ,GAAGg+B,SAAS,EAAEC,iBAAgB,EAAGv9B,YAAY,GAAGL,QAAQ,GAAGD,KAAK,GAAG89B,aAAa,EAAEj+B,UAAU,IAAImiB,GAAG93B,IAAI,IAAIC,EAAED,EAAE0D,OAAO,MAAM,CAACA,OAAOzD,KAAK43B,GAAGwS,SAASpqC,EAAC,EAAG83B,GAAG,CAAC/3B,EAAEC,KAAKi3B,GAAGl3B,EAAEwuC,QAAQxuC,EAAEyuC,QAAQ/W,GAAG,oBAAoB13B,EAAEwuC,OAAO,IAAG,EAAGvuC,GAAE,EAAG+3B,GAAG,CAACh4B,EAAEC,EAAEI,EAAEI,KAAK,IAAIC,EAAEe,GAAG01B,GAAGl3B,EAAEQ,EAAEJ,GAEn7CmD,EAAEyd,GAAE,IAAIhhB,EAAEsG,SAAStG,EAAEmD,KAAK1B,SAAoBqC,EAAEC,EAAEC,EAAEC,EAAEC,GAAGizB,GAAG31B,EAAEf,GAAG,OAAOqD,EAAEpC,QAAQ2c,GAAEre,EAAEmD,SAASkb,GAAE7c,IAAI,CAACQ,KAAKjC,EAAEguC,YAAY,CAACC,KAAK,GAAGxtC,EAAE4pC,YAAYpmC,KAAKC,KAAKC,IAAI+pC,kBAA1H,CAAC,SAA8IC,WAAW,KAAI,CAAEC,QAAQ,CAAC,CAAChrC,KAAK3B,EAAE8E,SAAStG,EAAEsG,WAAW8nC,cAAc,CAAC7pC,EAAEiY,KAAKmD,KAAKuC,GAAEha,KAAK1G,GAAG,KAAK6sC,gBAAgBvqC,IAAIwqC,gBAAgBnqC,GAAGizB,GAAGjzB,EAAEZ,EAAEvD,EAAEmD,KAAK1B,OAAOD,EAAEC,OAAOhB,EAF8lC,2CAE37C,IAAoW,IAAIsD,EAAEC,EAAEC,EAAEC,GAAE,EAAG8zB,GAAG,CAACj4B,EAAEC,KAAKi3B,GAAGl3B,EAAEwuC,QAAQxuC,EAAEyuC,QAAQzW,GAAG,UAAUh4B,EAAEwuC,OAAO,IAAG,EAAGvuC,GAAE,EAAGi4B,GAAGl4B,IAAI,IAAIC,EAAED,EAAEyW,cAAcpW,EAAEL,EAAE2V,UAAUlV,EAAEg3B,GAAGz3B,GAAG,GAAO,IAAJC,EAAM,MAAM,IAAIqB,MAAM,+DAA+D,GAAgB,IAAbb,EAAEizC,SAAa,MAAM,IAAIpyC,MAAM,sEAAsE,IAAIZ,EAAE,CAACkzC,aAAa3zC,EAAE0V,UAAUtV,KAAKI,EAAE4pC,SAAS,IAAI,MAAM,IAAI3pC,EAAE2pC,SAAS7S,GAAG92B,GAAE,EAAGy3B,GAAGn4B,IAAI,IAAIC,EAAED,EAAE0D,OAAO,MAAM,CAACA,OAAOzD,KAAK43B,GAAGwS,SAASpqC,EAAC,EAAGm4B,GAAG,CAACp4B,EAAEC,KAAKi3B,GAAGl3B,EAAEwuC,QAAQxuC,EAAEyuC,QAAQzW,GAAG,gBAAgBh4B,EAAEwuC,OAAO,IAAG,EAAGvuC,GAAE,CAAC,IAAiB4zC,GAAG9zC,GAAE,KAAkBqM,KAAK86B,KAAK2E,KAAKxT,GAAG,CAACr4B,EAAEC,EAAEI,KAAuC,GAA5BL,IAAIC,GAAID,EAAEC,GAAGI,EAAE,GAAIL,EAAEC,GAAGI,EAAE,EAAa,MAAM,IAAIiB,MAAM,4CAA2C,EAAGg3B,GAAG,CAACt4B,EAAEC,EAAEI,EAAEI,KAAK,IAAIC,EAAE+b,KAAKE,IAAIF,KAAKmD,MAAM3f,EAAED,GAAGK,IAAIoB,EAAE,CAACf,GAAGsB,EAAEtB,EAAEiD,EAAEikB,GAAGnnB,GAAG+C,EAAE,CAAC,CAAC6C,KAAK,SAAS9B,KAAKvC,GAAG,CAACqE,KAAK1C,EAAEY,KAAKvE,GAAG,CAACqG,KAAK1C,EAAEY,KAAKlE,MAAMie,GAAE7c,IAK1qC,MAAM,CAACQ,KAAK,QAAQ+rC,YAAY,CAACC,KAAK,GAAGxtC,KAAK8tC,gBALkoCxqC,IAAI,IAAIC,EAAEwa,GAAE,SAAS/d,EAAEgB,EAAEC,QAAQuC,EAAED,EAAEqC,KAAKxF,MAAMqD,EAAE,CAAC,CAACjC,KAAK,aAAaoE,KAAK,OAAO,CAACpE,KAAK,QAAQoE,KAAKpC,GAAG,CAAChC,KAAK,QAAQoE,KAAKpC,IAAI,MAAM,aACrzCF,EAAE6pC,iBAAiB1pC,GAAGspC,iBAAiBxpC,eACvCD,EAAEspC,wBACFtpC,EAAEqpC,sCAAsC,yEACFnpC,0CAAC,EACyBkqC,WAAW,KAAI,CAAEC,QAAQ,CAAC,CAAChrC,KAAK3B,EAAE8E,SAAS9F,IAAI4tC,cAAc,CAAC7pC,EAAEiY,KAAKmD,KAAK5d,EAAE,KAAKssC,gBAAgB9qC,IAAG,EAAG+0B,GAAGv4B,IAAI,IAAIC,EAAE,EAAEI,EAAE,EAAEI,EAAE,EAAyB,IAAvBT,EAAEwuC,OAAO,GAAGjoC,UAActG,EAAED,EAAEwuC,OAAO,GAAG0D,gBAAgB,GAAG7xC,EAAEL,EAAEwuC,OAAO,GAAG0D,gBAAgB,GAAGzxC,EAAET,EAAEwuC,OAAO,GAAG0D,gBAAgB,IAA2B,IAAvBlyC,EAAEwuC,OAAO,GAAGjoC,WAAetG,EAAED,EAAEwuC,OAAO,GAAGkC,kBAAkB,GAAGrwC,EAAEL,EAAEwuC,OAAO,GAAGkC,kBAAkB,GAAGjwC,EAAET,EAAEwuC,OAAO,GAAGkC,kBAAkB,IAAI7yC,EAAG6E,OAAO8tC,sBAAsBnY,GAAGp4B,EAAEI,EAAEI,GAAGT,EAAEyuC,QAAQnW,GAAGr4B,EAAEI,EAAEI,EAAET,EAAEwuC,OAAO,GAAGjoC,UAAU,CAACioC,OAAO,IAAG,CAAC,IAAiEsF,GAAG/zC,GAAE,KAAkByqC,KAAKJ,KAAKyB,KAAKrT,GAAG,CAACx4B,EAAEC,KAAK,GAAGD,EAAEqrC,OAAMhrC,GAAGA,EAAE,GAAG,MAAM,MAAM,IAAIiB,MAAM,qDAAsD,KAAGtB,EAAE0B,OAAO,EAAG,GAAY,WAATzB,EAAEsX,MAAiB,KAAgB,IAAXvX,EAAE0B,QAAuB,IAAX1B,EAAE0B,QAAuB,IAAX1B,EAAE0B,QAAmB,IAAP1B,EAAE,IAAe,IAAPA,EAAE,IAAmB,IAAXA,EAAE0B,QAAmB,IAAP1B,EAAE,IAAe,IAAPA,EAAE,IAAmB,IAAXA,EAAE0B,QAAmB,IAAP1B,EAAE,IAAe,IAAPA,EAAE,IAAQ,MAAM,IAAIsB,MAAM,qNAC50B,GAAY,UAATrB,EAAEsX,QAA6B,IAAXvX,EAAE0B,QAAuB,IAAX1B,EAAE0B,QAAmB,IAAP1B,EAAE,IAAe,IAAPA,EAAE,IAAmB,IAAXA,EAAE0B,QAAmB,IAAP1B,EAAE,IAAe,IAAPA,EAAE,IAAQ,MAAM,IAAIsB,MAAM,gEAAgE,EAAGm3B,GAAG,CAACz4B,EAAEC,EAAEI,KAAKJ,EAAEorC,OAAM3qC,GAAGA,GAAG,GAAGA,EAAEL,GAAG,MAAM,MAAM,IAAIiB,MAAM,sEAAuE,KAAG,IAAIb,EAAE,IAAIuH,MAAM3H,GAAG2xC,KAAK,GAAG,OAAO/xC,EAAEge,SAAQ,CAACvd,EAAEe,IAAIhB,EAAEC,GAAGV,EAAEyB,KAAIhB,GAAGi4B,GAAG,CAAC14B,EAAEC,EAAEI,EAAEI,EAAEC,EAAEe,KAAK,IAAIO,EAAE2B,EAAEH,GAAGnD,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,EAAEL,EAAE0B,OAAO,EAAE,GAAG,GAAG,GAAG+B,EAAEzD,EAAE,GAAGoD,KAAK1B,OAAO,GAAGM,EAAE,GAAGhC,EAAE0B,OAAOM,GAAGhC,EAAEgC,GAAGoB,KAAK1B,OAAO,EAAE1B,EAAEgC,GAAG0uC,kBAAkBzyB,SAAQla,GAAGtC,EAAEE,KAAKoC,UAAS,GAA+B,uBAA5B9D,EAAEiX,wBAA+C,MAAM,IAAI5V,MAAM,6FAA6F,GAAGqC,EAAE,GAAG3D,EAAE0B,OAAOiC,GAAG3D,EAAE2D,GAAGP,KAAK1B,OAAO,EAAE,CAAC,GAAG1B,EAAE2D,GAAG+sC,kBAAkBzyB,SAAQla,GAAGtD,EAAEkB,KAAKoC,KAAe,IAAXtD,EAAEiB,QAAYjB,EAAEiB,SAAS+B,GAAGpD,GAAG,IAAII,EAAEiB,SAASzB,EAAEuV,KAAK9T,OAAO,MAAM,IAAIJ,MAAM,+FAA+Fk3B,GAAG/3B,EAAER,GAAGA,EAAEuV,KAAK9T,OAAO,GAAG+2B,GAAGh4B,EAAER,EAAEuV,KAAK/R,GAAGwa,SAAQ,CAACla,EAAEC,IAAIvD,EAAEuD,GAAGD,GAAE,CAAC,GAAGP,EAAE,GAAGxD,EAAE0B,OAAO8B,IAAIxD,EAAEwD,GAAG2rC,mBAAmBlxB,SAAQla,GAAGrD,EAAEiB,KAAK0F,OAAOtD,MAAKrD,EAAEgB,SAAS+B,GAAGpD,GAAG,IAAIK,EAAEgB,SAASzB,EAAEuV,KAAK9T,QAAQ,MAAM,IAAIJ,MAAM,8FAA8F,GAAGrB,EAAEuV,KAAK9T,OAAO,EAAE,CAAC,GAAGjB,EAAEiB,SAASzB,EAAEuV,KAAK9T,OAAO,MAAM,IAAIJ,MAAM,4FAA4F,GAAGZ,EAAEgB,SAASzB,EAAEuV,KAAK9T,OAAO,MAAM,IAAIJ,MAAM,+FAA+F,CAAC,UAAUb,EAAE,YAAYC,EAAE,KAAKD,EAAEiB,OAAO,GAAGhB,EAAEgB,OAAO+B,EAAE,MAAM,IAAInC,MAAM,0DAAyD,EAAGq3B,GAAG,CAAC34B,EAAEC,IAAI,2JAC9tDA,OAAO,MAAM,OAAOD,GAAG,IAAI,aAAa,MAAM,UAAUC,iBAAiBA,aAAa,IAAI,qBAAqB,MAAM,yDAClJA,wBAAwBA,qGAGjC,IAAI,uBAAuB,MAAM,WAAWA,wBAAwBA,aAAa,IAAI,gBAAgB,MAAM,yaAM9FA,uHAERA,8DAA8DA,wFAEnE,IAAI,qBAAqB,MAAM,wDACvBA,iBAAiBA,qDACnBA,iBAAiBA,0BAA0BA,qDAC5CA,uFAESA,0BAA0BA,8CACxC,IAAI,uBAAuB,MAAM,uBAAuBA,aAAaA,2DACnDA,qEACJA,4HAEGA,wBAAwBA,oBAAoB,IAAI,aAAa,MAAM,YAAYA,wBAAwBA,oBAAoB,QAAQ,MAAM,IAAIqB,MAAM,6BAA6BtB,sBAAuB,EAxB3K,GAwB+K,IAAI44B,GAAG,CAAC54B,EAAEC,EAAEI,IAAI,6CAA6CA,6BAA6BA,MAAM,MAAM,OAAOL,GAAG,IAAI,oBAAoB,MAAM,yIAAyI,IAAI,QAAQ,MAAM,2BAA2B,IAAI,OAAO,MAAM,0BAA0B,IAAI,qBAAqB,MAAM,0KAAuL,QAAQ,GAAGC,EAAE,GAAG,MAAM,mLAAmL,MAAM,IAAIqB,MAAM,gBAAgBtB,sBAAuB,EAAruB,GAAyuB,IAAI64B,GAAG,CAAC74B,EAAEC,EAAEI,KAAK,IAAII,EAAE,IAAIuH,MAAM3H,GAAG2xC,KAAK,GAAGrK,OAAO,IAAI3/B,MAAM3H,GAAG2xC,KAAK,IAAItxC,EAAa,IAAXV,EAAE0B,OAAWjB,EAAET,EAAEoR,QAAQ,OAAOnR,EAAEyB,OAAO,GAAGzB,EAAEge,SAAQ,CAACxc,EAAEO,KAAKvB,EAAEgB,GAAGf,EAAEsB,GAAGvB,EAAEuB,EAAE3B,GAAGK,EAAET,EAAEyB,OAAOM,EAAC,IAAIvB,GAAGC,GAAGo4B,GAAG,CAAC94B,EAAEC,EAAEI,EAAEI,KAAK,IAAIC,EAAE,GAAG,GAAGL,EAAEqB,OAAO,EAAE,GAAGjB,EAAEiB,OAAO,EAAE,CAAC,GAAG1B,EAAEie,SAAQxc,GAAGf,EAAEiB,KAAKF,KAAIgb,KAAKtH,OAAO1U,GAAGT,EAAE0B,OAAO,MAAM,IAAIJ,MAAM,wBAAwBb,EAAEwd,SAAQ,CAACxc,EAAEO,IAAItB,EAAEe,GAAGpB,EAAE2B,IAAG,MAAM3B,EAAE4d,SAAQxc,GAAGf,EAAEiB,KAAKF,SAAQ,CAAC,GAAc,IAAXxB,EAAEyB,OAAW,MAAM,IAAIJ,MAAM,2CAA2CZ,EAAEV,EAAEmC,KAAI,CAACV,EAAEO,IAAIya,KAAKs3B,MAAMtyC,EAAExB,EAAE+B,KAAI,CAAC,OAAOtB,GAAGq4B,GAAG,CAAC/4B,EAAEC,EAAEI,KAAK,IAAII,EAAE,MAAM,OAAOJ,EAAEiX,uBAAuB,IAAI,aAAa,OAAOjX,EAAEmV,KAAK9T,OAAO,EAAE+a,KAAKvH,OAAO7U,EAAEmV,KAAKrT,KAAIV,GAAGxB,EAAEwB,KAAI4F,OAAO2sC,WAAWv3B,KAAKvH,OAAOjV,EAAEoH,OAAO2sC,WAAW,IAAI,cAAc,OAAO3zC,EAAEmV,KAAK9T,OAAO,EAAE+a,KAAKtH,OAAO9U,EAAEmV,KAAKrT,KAAIV,GAAGxB,EAAEwB,KAAI4F,OAAO4sC,WAAWx3B,KAAKtH,OAAOlV,EAAEoH,OAAO4sC,WAAW,QAAQ,MAAM,IAAI3yC,MAAM,4BAA4BjB,EAAEiX,0CAA2C,EAA5X,GAAgYrX,EAAE+xC,KAAK,EAAE,EAAE/xC,EAAEyB,QAAQ,IAAIhB,EAAEV,EAAEoR,QAAQ,OAAO/Q,EAAEmV,KAAK9T,OAAO,GAAGrB,EAAEmV,KAAKyI,SAAQxc,GAAGxB,EAAEwB,GAAGhB,IAAGJ,EAAEmV,KAAKyI,SAAQxc,GAAGf,EAAEe,GAAGgb,KAAKs3B,MAAM/zC,EAAEyB,GAAGxB,EAAEwB,QAAOxB,EAAE+xC,KAAKvxC,EAAE,EAAER,EAAEyB,QAAQhB,EAAEud,SAAQ,CAACxc,EAAEO,IAAItB,EAAEsB,GAAGya,KAAKs3B,MAAMtyC,EAAExB,EAAE+B,OAAMtB,GAAGs4B,GAAG,CAACh5B,EAAEC,EAAEI,EAAEI,EAAEC,IAAI,sEAC1lEV,EAAEqG,KAAK0lC,qBAAqB/rC,EAAEqG,KAAKxF,UAAUR,EAAEqB,gDAC9E1B,EAAEqG,KAAKxF,UAAUR,EAAEqB,2CACvBrB,EAAEqB,8CACL1B,EAAEysC,WAAW,iBAAiB,8BACrC/iB,GAAG,kBAAkB,IAAIjpB,8BACvBipB,GAAG,eAAe,IAAIhpB,6BACvBgpB,GAAG,eAAe,OAAOzpB,EAAEyB,SAAShB,qEAEzBV,EAAEqG,KAAKxF,yEAET6oB,GAAG,uBAAuB,IAAIzpB,EAAEyB,4CAC/BgoB,GAAG,wBAAwB,IAAIrpB,EAAEqB,oSAM3Du3B,GAAG,CAACj5B,EAAEC,EAAEI,EAAEI,EAAEC,EAAEe,EAAEO,IAAI,mEACqC/B,EAAEoG,KAAK0lC,eAAe/rC,EAAEqG,KAAK0lC,uCAClE/rC,EAAEqG,KAAK0lC,2CACFtrC,EAAEiB,8CACLzB,EAAEwsC,WAAW,iBAAiB,6DAErC/iB,GAAG,kBAAkB,IAAIhpB,sHAIrBgpB,GAAG,eAAe,IAAIjoB,+BACvBioB,GAAG,eAAe,OAAOrpB,EAAEqB,SAASD,sCAC7BioB,GAAG,uBAAuB,IAAIrpB,EAAEqB,4CAC/BgoB,GAAG,wBAAwB,IAAIjpB,EAAEiB,oPAGjDM,6CAA6C/B,EAAEoG,KAAKxF,wIAG7BZ,EAAEoG,KAAKxF,+SASrCb,EAAE2sC,WAAW,gBAAgB,IAAI,+DAGpCzT,GAAG,CAACl5B,EAAEC,IAAI,6CACyBD,EAAEqG,KAAK0lC,qDACjB9rC,EAAEyB,6CACN1B,EAAEysC,WAAW,gBAAgB,wDACT/iB,GAAG,uBAAuB,IAAIzpB,EAAEyB,qFAKzEy3B,GAAG,CAACn5B,EAAEC,EAAEI,EAAEI,IAAIT,EAAE0sC,KAAKjsC,EAAE,SACxBT,EAAE2sC,WAAW,gBAAgB1sC,EAAE,oBAC/BD,EAAE2sC,WAAW,gBAAgBtsC,EAAE,cACnC,GAAG+4B,GAAG,CAACp5B,EAAEC,EAAEI,EAAEI,EAAEC,KAAK,IAAIsB,EAAE2B,EAAEH,EAAEC,GAAc,IAAXpD,EAAEqB,OAAW,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAGqC,EAAE/D,EAAEqG,KAAKxF,MAAM,MAAM,2EACnBkD,iCAC7C/D,EAAEqG,KAAK0lC,mBAC1B/rC,EAAE2sC,WAAW,gBAAgBhpC,EAAE,mBAAmBtD,EAAEsD,uBACpD3D,EAAE2sC,WAAW,gBAAgBnpC,EAAE,mBAAmBnD,EAAEmD,uBACpD21B,GAAGn5B,EAAEyD,EAAEzB,EAAE,oBACFhC,EAAEssC,aAAa,4EAGiBrsC,EAAEoG,KAAK0lC,eAAehoC,8GAErDA,uBAAuBJ,sBACvBI,uBAAuBP,cAC/B/C,EAAE,yBAAyBJ,EAAEsD,gCAAgCtD,EAAEmD,8BACtD9C,cACR,oCACqBL,EAAEsD,0CACFtD,EAAEmD,mLAKLnD,EAAEqB,OAAO,EAAE,uBAAuB+B,MAAM,iCACzCpD,EAAEqB,OAAO,EAAE,uBAAuBM,MAAM,wBACjD+B,kEACAA,kEACAA,kEACAA,kEACAA,iBAAiBA,6BACjBA,WAAWA,mCACXA,iBAAiBA,6BACjBA,WAAWA,uQAAC,EAUrBs1B,GAAG,CAACr5B,EAAEC,EAAEI,EAAEI,EAAEC,EAAEe,EAAEO,EAAE2B,EAAEH,EAAEC,KAAK,IAAIM,EAAa,IAAX1D,EAAEqB,QAAiBuC,EAAEC,GAAGH,EAAE,CAAC,EAAE,GAAK,CAAC,EAAE,GAASI,EAAEnE,EAAEqG,KAAKxF,MAAMuD,EAAEC,IAAI,IAAIC,EAAED,IAAIJ,EAAE,MAAM,MAAM,MAAM,cAC/HK,sCAAsCtE,EAAEqG,KAAK0lC,4BAA4B9rC,EAAEoG,KAAK0lC,eAAe5nC,mCAC7ElE,EAAEwsC,WAAW,iBAAiBpoC,iCAChCF,gEAAgEzD,EAAE2D,gBACnF5D,EAAE4D,OAAOhE,EAAEgE,OAAO5C,EAAE4C,OAAO5C,EAAE4C,QAAQhE,EAAEqB,2CACjByC,2HAGlBR,2CAA2CtD,EAAEgE,iCACxCb,0CAEOW,iBAAiBA,0FAE3BG,MAAMH,qBAAqBA,wBAC3BG,YAAYA,QAAQjE,EAAEgE,sBACnBZ,EAAE,yDACcE,EAAE,UAAUH,KAAK,GAAGc,kBAAkBA,MAAMjE,EAAEgE,8DAE/CrE,EAAEqG,KAAK0lC,uCAC7B/rC,EAAE2sC,WAAW,qBAAqBtoC,EAAE,OAAOC,mCAC7BD,IAAIJ,EAAEjE,EAAEssC,aAAa,sBAAsB,qIAA2D,EAGtH,MAAM,SACVloC,EAAEH,YACFG,EAAEF,2CAC6BC,eAAeA,0DAE5BA,iBAAiBA,qDACjBA,0CACAA,yCACDA,sCACHnC,yBAAyBA,0BAA0BA,0BAA0BA,yBAC7EA,oBAAoBA,iDACpBA,4BAA4BA,iEAC5BA,0BAA0BA,2BAA2BA,2BAA2BA,qEAI/DmC,uBAAuBA,aAAaA,0BACrDA,kMAIwBlE,EAAEoG,KAAK0lC,eAAe5nC,+BACzCnE,EAAEqG,KAAK0lC,wGAAO,EAGhCzS,GAAG,CAACt5B,EAAEC,EAAEI,EAAEI,EAAEC,KAAK,IAAIsB,EAAE2B,EAAEH,EAAEC,EAAEM,GAAc,IAAX1D,EAAEqB,OAAW,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,GAAGsC,EAAEhE,EAAEqG,KAAKxF,MAAM,MAAM,2FACXmD,iCAC7DhE,EAAEqG,KAAK0lC,mBAC1B/rC,EAAE2sC,WAAW,gBAAgBhpC,EAAE,qBAAqBtD,EAAEsD,uBACtD3D,EAAE2sC,WAAW,gBAAgBnpC,EAAE,sBAAsBnD,EAAEmD,uBACvDxD,EAAE2sC,WAAW,gBAAgBlpC,EAAE,qBAAqBpD,EAAEoD,uBACtD01B,GAAGn5B,EAAE+D,EAAE/B,EAAE,oBACFhC,EAAEssC,aAAa,6EAGkBrsC,EAAEoG,KAAK0lC,eAAe/nC,gHAEpDA,uBAAuBL,yBACtBK,uBAAuBR,wBACxBQ,uBAAuBP,cACjChD,EAAE,6BAA6BJ,EAAEsD,sCAAsCtD,EAAEmD,oCAAoCnD,EAAEoD,4BACxG/C,gBACJ,wCAEqBL,EAAEsD,gDACEtD,EAAEmD,8CACJnD,EAAEoD,qRAOTpD,EAAEqB,OAAO,EAAE,uBAAuBqC,MAAM,iCACzC1D,EAAEqB,OAAO,EAAE,uBAAuBM,MAAM,2BAEhDgC,gFACAA,gFACAA,gFACAA,gFACAA,gFACAA,gFACAA,gFACAA,+EACDA,mBAAmBA,+BACnBA,WAAWA,uCACXA,oBAAoBA,gCACpBA,WAAWA,yCACXA,mBAAmBA,+BACnBA,WAAWA,kfAAC,EAerBu1B,GAAG,CAACv5B,EAAEC,EAAEI,EAAEI,EAAEC,EAAEe,KAAK,IAAIO,EAAEhC,EAAEoD,KAAKO,EAAEk1B,GAAGp3B,EAAExB,EAAEuV,KAAKxT,EAAEN,QAAQ8B,EAAEs1B,GAAG92B,EAAEvB,EAAEC,EAAET,EAAEuV,MAAM/R,EAAEhD,EAAE2Q,QAAmB,IAAX3Q,EAAEiB,SAAa+B,EAAEzB,EAAEG,KAAI,CAACqC,EAAEC,IAAQ,IAAJD,EAAM,EAAEhB,EAAEiB,GAAGD,IAA6B,YAA1BvE,EAAEqX,wBAAoC9T,EAAEu1B,GAAG/2B,EAAEyB,EAAExD,KAAK,IAAI8D,EAAEya,GAAE,SAASxe,EAAEuG,SAAS/C,EAAE9B,QAAQsC,EAAEid,GAAE,QAAQjhB,EAAEuG,SAASvE,EAAEN,QAAQuC,EAAEke,GAAEha,KAAK3E,GAAGU,EAAElC,EAAEN,SAAS8B,EAAE9B,QAAQM,EAAEqpC,OAAM,CAAC7mC,EAAEC,IAAID,IAAIhB,EAAEiB,KAAIN,EAA8B,uBAA5BlE,EAAEiX,wBAA+C9S,EAAEnE,EAAEoX,mBAAmBhT,EAAEL,EAAEqC,KAAKxF,MA2B9Y,MAAM,CAACoB,KAAK,SAAS+rC,YAAY,CAACC,KAAK,GAAGhuC,EAAEoqC,YAAYhqC,KAAKoD,EAAE/B,OAAO,EAAE+B,EAAE,MAAM/C,EAAEgB,OAAO,EAAEhB,EAAE,MAAMiD,EAAEjC,OAAO,EAAEiC,EAAE,MAAMO,KAAKlC,IAAIksC,kBAAkB,CAAC,SAASK,gBA3B2P/pC,GAAG,WAC1ZN,EAAE,GAAG,WACLy0B,GAAG14B,EAAEiX,wBAAwB7S,cAC7B,MAAM,OAAOpE,EAAEsX,MAAM,IAAI,UAAU,MAAM,mBACjC2hB,GAAGl1B,EAAEhC,sBACL42B,GAAG34B,EAAEuX,YAAYnX,EAAEgE,sBACnB40B,GAAGj1B,EAAED,EAAE/B,EAAEwB,EAAEC,EAAE/B,OAAOiC,EAAEjC,OAAOyC,sBAC7B,IAAI,SAAS,MAAM,mBACnB60B,GAAGj1B,EAAE/B,EAAEwB,EAAEC,EAAE/B,OAAOiC,EAAEjC,2BACpB,MAAM,GAAc,IAAXM,EAAEN,QAAuB,IAAXM,EAAEN,OAAW,MAAM,GAAG03B,GAAGp1B,EAAED,EAAE/B,EAAEmC,EAAEC,KAAK,GAAc,IAAXpC,EAAEN,QAAuB,IAAXM,EAAEN,OAAW,MAAM,GAAG43B,GAAGt1B,EAAED,EAAE/B,EAAEmC,EAAEC,KAAK,MAAM9C,MAAM,mFAAoF,EAApN,oBACF,IAAI,QAAQ,MAAM,iBAClB,MAAM,GAAc,IAAXU,EAAEN,QAAuB,IAAXM,EAAEN,OAAW,MAAM,GAAG23B,GAAGr1B,EAAED,EAAE/B,EAAEwB,EAAEC,EAAEE,EAAE1D,EAAEkX,YAAYhT,EAAElE,EAAEoX,mBAAmBpX,EAAEmX,kBAAkB,MAAM9V,MAAM,4EAA6E,EAA9M,oBACA,QAAQ,MAAMA,MAAM,uBAAwB,EATlD,wBAWAkD,EAAEmpC,gBAAgB,cAAc,OAAOA,gBAAgB,SAAS,MAAMlqC,EAAE/B,QAAQisC,gBAAgB,MAAM,MAAMhqC,EAAEjC,QAAQ8rC,iBAAiBxpC,EAAED,aACzIS,EAAE6oC,wBACA7oC,EAAE4oC,sCAAsC,oCACxClpC,EAAE,0CAA0C,kCACvBH,EAAEmoC,gBAAgB,8CACpBloC,EAAEqC,KAAK0lC,qBAC1B,MAAM,OAAO9rC,EAAEsX,MAAM,IAAI,UAAU,MAAM,4KAEVvT,EAAEsoC,aAAa,uFAEfrsC,EAAEoX,yCACxB,IAAI,SAAS,MAAM,wBAAmC,IAAXrV,EAAEN,QAAuB,IAAXM,EAAEN,OAAW,wBAAwB,4CAA4C,IAAI,QAAQ,MAAM,6DAA6D,QAAQ,MAAMJ,MAAM,4BAA4BrB,EAAEsX,QAAS,EAL7R,mBAO4K42B,WAAW,KAAI,CAAEC,QAAQ,CAAC,CAAChrC,KAAKI,EAAE+C,SAASvG,EAAEuG,WAAW8nC,cAAc,CAAC7pC,EAAEiY,KAAKmD,KAAK3b,EAAE,KAAKqqC,gBAAgB,CAAC,CAACjoC,KAAK,SAAS9B,KAAKN,GAAG,CAACoC,KAAK,UAAU9B,KAAKd,GAAG,CAAC4C,KAAK,UAAU9B,KAAKZ,MAAM2a,GAAEtc,MAAMsc,GAAE9a,MAAK,EAAGg2B,GAAGx5B,IAAI,IAAIC,EAAED,EAAEk0C,iBAAiB,OAAO,IAAIltC,YAAY/G,EAAEA,EAAEqpC,WAAW,GAAG,EAAC,EAAG7P,GAAG,CAACz5B,EAAEC,KAAK,IAAII,EAAE,GAAGI,EAAE,GAAGC,EAAE,GAAGe,EAAE+3B,GAAGx5B,GAAG,GAAiB,IAAdC,EAAEgX,UAAc,MAAM3V,MAAM,+DAA+Do3B,GAAG14B,EAAEwuC,OAAOvuC,EAAEwB,EAAEpB,EAAEI,EAAEC,GAAGV,EAAEyuC,QAAQlV,GAAGv5B,EAAEwuC,OAAO,GAAGvuC,EAAEwB,EAAEpB,EAAEI,EAAEC,GAAG,CAAC8tC,OAAO,CAAC,IAAG,EAAG9U,GAAG15B,IAAI,IAAIC,EAAED,EAAEiX,UAAU5W,EAAEL,EAAEwV,KAAK/U,EAAET,EAAEkX,wBAAwBxW,EAAEV,EAAEmX,YAAY1V,EAAqB,IAAnBzB,EAAEoX,eAAmBpV,EAAEhC,EAAEqX,mBAAmB1T,EAAE3D,EAAEsX,sBAAsB9T,EAAExD,EAAEuX,KAAK9T,EAAkB,KAAhBzD,EAAEwX,YAAiB,SAASxX,EAAEwX,YAAY,OAAOsR,GAAG,CAAC7R,UAAUhX,EAAEuV,KAAKnV,EAAE6W,wBAAwBzW,EAAE0W,YAAYzW,EAAE0W,eAAe3V,EAAE4V,mBAAmBrV,EAAEsV,sBAAsB3T,EAAE4T,KAAK/T,EAAEgU,YAAY/T,GAAE,CAAC,IAAoB0wC,GAAGp0C,GAAE,KAAkBmnC,KAAKsD,KAAKJ,KAAKyB,KAAKlS,GAAG35B,IAAI,IAAIA,GAAGA,EAAE0B,OAAO,EAAE,MAAM,IAAIJ,MAAM,yCAAyC,IAAIrB,EAAED,EAAE,GAAGK,EAAEL,EAAE,GAAGS,EAAET,EAAE,GAAG,GAAGC,EAAEsG,WAAWlG,EAAEkG,UAAUtG,EAAEsG,WAAW9F,EAAE8F,SAAS,MAAM,IAAIjF,MAAM,2CAA2C,GAAmB,IAAhBrB,EAAEmD,KAAK1B,QAA4B,IAAhBzB,EAAEmD,KAAK1B,OAAW,MAAM,IAAIJ,MAAM,0BAA0B,GAAmB,IAAhBjB,EAAE+C,KAAK1B,QAA4B,IAAhBrB,EAAE+C,KAAK1B,OAAW,MAAM,IAAIJ,MAAM,yBAAyB,IAAIZ,EAAET,EAAEmD,KAAKnD,EAAEmD,KAAK1B,OAAO,GAAGD,EAAExB,EAAEmD,KAAKnD,EAAEmD,KAAK1B,OAAO,GAAG,GAAGrB,EAAE+C,KAAK/C,EAAE+C,KAAK1B,OAAO,KAAKhB,EAAE,MAAM,IAAIY,MAAM,gDAAgD,GAAGjB,EAAE+C,KAAK/C,EAAE+C,KAAK1B,OAAO,KAAKD,EAAE,MAAM,IAAIH,MAAM,oDAAoD,GAAmB,IAAhBb,EAAE2C,KAAK1B,OAAW,MAAM,IAAIJ,MAAM,oBAAoB,GAAGb,EAAE2C,KAAK3C,EAAE2C,KAAK1B,OAAO,KAAKhB,EAAE,MAAM,IAAIY,MAAM,iDAAiD,GAAGtB,EAAE0B,OAAO,EAAE,CAAC,IAAIM,EAAEhC,EAAE,GAAG,GAAmB,IAAhBgC,EAAEoB,KAAK1B,OAAW,MAAM,IAAIJ,MAAM,mBAAmB,GAAGU,EAAEoB,KAAKpB,EAAEoB,KAAK1B,OAAO,KAAKhB,EAAE,MAAM,IAAIY,MAAM,+CAA+C,CAAC,GAAGtB,EAAE0B,OAAO,EAAE,CAAC,IAAIM,EAAEhC,EAAE,GAAG,GAAmB,IAAhBgC,EAAEoB,KAAK1B,OAAW,MAAM,IAAIJ,MAAM,mBAAmB,GAAGU,EAAEoB,KAAKpB,EAAEoB,KAAK1B,OAAO,KAAKhB,EAAE,MAAM,IAAIY,MAAM,+CAA+C,GAAGs4B,GAAG,CAAC55B,EAAEC,EAAEI,EAAEI,KAAK,IAAIC,EAAEV,EAAE,GAAGoD,KAAiBpB,EAAEtB,EAAEiD,EAAdwe,GAAEha,KAAKzH,GAAW8C,EAAE9C,EAAE0Q,OAAO,GAAG,GAAG3N,EAAEhD,EAAEC,EAAE0Q,MAAM,GAAG,GAAGu2B,OAAO,GAAG,GAAG5jC,EAAE/D,EAAE0B,OAAO,EAAEsC,EAAEhE,EAAE0B,OAAO,EAAEuC,EAAExD,GAAGJ,EAAE,EAAE6D,EAAEzD,GAAGJ,EAAE,EAAE8D,EAAE9D,EAAE,EAAE+D,EAAEklB,GAAG9lB,GAAGa,EAAE,CAAC4c,GAAE,IAAIjhB,EAAE,GAAGuG,SAASvG,EAAE,GAAGoD,KAAKgB,GAAG6c,GAAE,OAAOjhB,EAAE,GAAGuG,SAASvG,EAAE,GAAGoD,KAAKgB,GAAG6c,GAAE,QAAQjhB,EAAE,GAAGuG,SAASvG,EAAE,GAAGoD,KAAKgB,IAAIL,GAAGM,EAAE1C,KAAKsf,GAAE,OAAOjhB,EAAE,GAAGuG,SAASvG,EAAE,GAAGoD,KAAKgB,IAAIJ,GAAGK,EAAE1C,KAAKsf,GAAE,OAAOjhB,EAAE,GAAGuG,SAASvG,EAAE,GAAGoD,KAAKgB,IAAIC,EAAE1C,KAAK6c,GAAE,SAASxe,EAAE,GAAGuG,SAASvE,EAAEoC,IAAIH,GAAGI,EAAE1C,KAAK6c,GAAE,aAAa,EAAE/a,IAAIS,GAAGG,EAAE1C,KAAK6c,GAAE,eAAe,EAAE/a,IAAIU,GAAGE,EAAE1C,KAAK6c,GAAE,mBAAmBxe,EAAE,GAAGuG,SAASvE,EAAEoC,IAAI,IAAIE,EAAE8kB,GAAGppB,EAAE,GAAGuG,UA+BvrF9B,EAAE,CAAC,CAACrB,KAAKpB,EAAEuE,SAASvG,EAAE,GAAGuG,WAAW,OAAOlG,EAAE,GAAGoE,EAAE9C,KAAK,CAACyB,KAAKK,EAAE8C,SAAS,IAAIlG,EAAE,GAAGoE,EAAE9C,KAAK,CAACyB,KAAKK,EAAE8C,SAAS,IAAIlG,EAAE,GAAGoE,EAAE9C,KAAK,CAACyB,KAAK1C,EAAE6F,SAASvG,EAAE,GAAGuG,WAAW,CAACtE,KAAK,yBAAyB+rC,YAAY,CAACC,KAAKhuC,EAAEoqC,UAAUkE,gBA/B4+E7pC,GAAG,mCAC/qFlB,+CACUA,EAAEY,kCACfnE,EAAE0X,qBAEvBjT,EAAE8oC,oBAAoBnpC,eAEtBK,EAAE2oC,wBACA3oC,EAAE0oC,sCAAsCzpC,EAAEH,kFAEhC+lB,GAAG,MAAMnlB,gCACHmlB,GAAG,MAAMnlB,8IAGPJ,EAAE,UAAU,2HAG5BG,EAAE,wCAAwC,uEAE3BqlB,GAAGllB,EAAEF,EAAE,qHAIbqlB,GAAG,MAAMrlB,yDACQqlB,GAAG,YAAYrlB,sDAC3CH,EAAE,iCAAiC,eACnCC,EAAE,wCAAwC,2HAEGI,cAAcA,yCACtDP,EAAE,UAAU,6BAEuNoqC,WAAW,KAAI,CAAEC,QAAQ3pC,EAAE4pC,cAAc,CAAC7pC,EAAEiY,KAAKmD,KAAKjc,EAAEH,EAAE,OAAM,EAAGq2B,GAAG,CAAC75B,EAAEC,KAAK05B,GAAG35B,EAAEwuC,QAAQ,IAAI/tC,EAAE,CAAC,GAAGT,EAAEuwC,YAAY,GAAG9vC,EAAEkB,MAAM,GAAG3B,EAAEuwC,YAAY,GAAG9vC,EAAEkB,MAAM,GAAG3B,EAAEuwC,YAAY,GAAG9vC,EAAEkB,KAAK,GAAG3B,EAAEyuC,QAAQ7U,GAAG55B,EAAEwuC,OAAOvuC,EAAED,EAAEuwC,aAAY,GAAI,CAACnC,QAAQ3tC,GAAE,EAAGq5B,GAAG95B,IAAI,IAAIC,EAAED,EAAE2X,QAAQ,OAAOmR,GAAG,CAACnR,QAAQ1X,GAAE,CAAC,IAAgCm0C,GAAGr0C,GAAE,KAAkBmnC,KAAKsD,KAAKJ,KAAKyB,KAAK9R,GAAG,CAAC/5B,EAAEC,KAAK,IAAID,GAAGA,EAAE0B,OAAO,EAAE,MAAM,IAAIJ,MAAM,kBAAkB,GAAmB,IAAhBrB,EAAEuV,KAAK9T,QAAY,GAAGzB,EAAEuV,KAAK9T,SAASzB,EAAEwX,OAAO/V,QAAQzB,EAAEuV,KAAK9T,SAASzB,EAAEyX,KAAKhW,OAAO,MAAM,IAAIJ,MAAM,wDAAwD,GAAGrB,EAAEwX,OAAO/V,SAASzB,EAAEyX,KAAKhW,OAAO,MAAM,IAAIJ,MAAM,6CAA6CtB,EAAEoR,MAAM,GAAG6M,SAAQ,CAAC5d,EAAEI,KAAK,GAAqB,IAAlBT,EAAES,EAAE,GAAG8F,UAAgC,IAAlBvG,EAAES,EAAE,GAAG8F,SAAa,MAAM,IAAIjF,MAAM,SAASb,uCAAsC,GAAE,EAAGu5B,GAAG,CAACh6B,EAAEC,KAAK,IAAII,EAAE,GAAG,GAAGL,EAAE0B,OAAOzB,EAAE,GAAmB,IAAhBD,EAAEC,GAAGsG,SAAavG,EAAEC,GAAGkvC,mBAAmBlxB,SAAQxd,GAAGJ,EAAEsB,KAAK0F,OAAO5G,UAAU,IAAmB,IAAhBT,EAAEC,GAAGsG,SAAqE,MAAM,IAAIjF,MAAM,SAASrB,wCAAjFD,EAAEC,GAAGiyC,gBAAgBj0B,SAAQxd,GAAGJ,EAAEsB,KAAK0F,OAAO5G,KAA0E,CAAC,OAAOJ,GAAG45B,GAAG,CAACj6B,EAAEC,KAAK,GAAGD,EAAE0B,OAAO,EAAE,CAAC,IAAIrB,EAAE25B,GAAGh6B,EAAE,GAAGS,EAAEu5B,GAAGh6B,EAAE,GAAGU,EAAEs5B,GAAGh6B,EAAE,GAAG,OAAkB,IAAXU,EAAEgB,SAAahB,EAAE,IAAIsH,MAAMhI,EAAE,GAAGoD,KAAK1B,QAAQoqC,SAAShjB,GAAG,CAACrR,OAAOpX,EAAEqX,KAAKjX,EAAE+U,KAAK9U,GAAG,CAAM,OAAOT,GAAGi6B,GAAG,CAACl6B,EAAEC,EAAEI,EAAEI,EAAEC,KAAK,IAAIe,EAAEzB,EAAE,OAAOA,EAAE,IAAIyB,GAAGpB,EAAEI,EAAER,KAAKS,EAAET,GAAG,EAAEwc,KAAKtH,IAAI,EAAEsH,KAAKvH,IAAIzT,EAAEpB,EAAEI,EAAER,IAAI,IAAIwc,KAAKtH,IAAI,EAAEsH,KAAKvH,IAAIzT,EAAEpB,EAAEI,EAAER,KAAI,EAAGk6B,GAAG,CAACn6B,EAAEC,EAAEI,IAAI,4CAA4CJ,EAAEoG,KAAK0lC,eAAe/rC,EAAEqG,KAAK0lC,2CACroD/rC,EAAEqG,KAAK0lC,+DAEb1rC,EAAEqB,2DACOgoB,GAAG,uBAAuB,IAAIrpB,EAAEqB,uCACtCgoB,GAAG,iBAAiB,IAAIrpB,EAAEqB,uCAC1BgoB,GAAG,iBAAiB,IAAIrpB,EAAEqB,wCACzBgoB,GAAG,kBAAkB,IAAIrpB,EAAEqB,4CACvBzB,EAAEwsC,WAAW,iBAAiB,mUAOjDzsC,EAAE2sC,WAAW,gBAAgB,IAAI,yEAGtCvS,GAAG,CAACp6B,EAAEC,KAAK,IAAII,EAAEL,EAAE,GAAGoD,KAAK3C,EAAE0hB,GAAEha,KAAK9H,GAAGK,EAAET,EAAEuV,KAAK9T,OAAO,EAAEygB,GAAE8oB,cAAchrC,EAAEuV,KAAKnV,EAAEqB,QAAQ,IAAIsG,MAAM3H,EAAEqB,QAAQoqC,QAAQrqC,EAAEu4B,GAAGh6B,EAAE,GAAGyB,EAAEwc,SAAQ3Z,GAAO,IAAJA,GAAO,MAAM,MAAM,IAAIhD,MAAM,mBAAoB,KAAc,IAAXG,EAAEC,SAAaD,EAAEuG,MAAMtH,EAAEgB,QAAQswC,KAAK,IAAI,IAAIhwC,EAAE/B,EAAEwX,OAAOtV,KAAI,CAACmC,EAAEE,IAAI01B,GAAG51B,EAAEE,EAAEnE,EAAEK,EAAEe,KAAIkC,EAAE1D,EAAEyX,KAAKvV,KAAI,CAACmC,EAAEE,IAAI01B,GAAG51B,EAAEE,EAAEnE,EAAEK,EAAEe,KAAI,GAAGf,EAAEgB,SAASM,EAAEN,QAAQhB,EAAEgB,SAASiC,EAAEjC,OAAO,MAAM,IAAIJ,MAAM,gEAAgE,GAAGZ,EAAEgB,SAASrB,EAAEqB,OAAO,IAAI,IAAI4C,EAAE,EAAEA,EAAEjE,EAAEqB,SAAS4C,EAAE5D,EAAE0I,SAAS9E,KAAKtC,EAAER,OAAO8C,EAAE,EAAE,GAAGX,EAAEnC,OAAO8C,EAAE,EAAEjE,EAAEiE,IAAI7C,EAAED,OAAO8C,EAAE,EAAE,IAAI,IAAId,EAAE/B,EAAEU,KAAImC,GAAGmY,KAAK43B,KAAK/vC,KAAI7C,EAAEwc,SAAQ,CAAC3Z,EAAEE,EAAEC,KAAK,GAAGH,EAAE,EAAE,CAAC,IAAII,GAAGf,EAAEa,GAAGxC,EAAEwC,IAAIF,EAAES,EAAE/C,EAAEwC,GAAGgO,EAAEzN,EAAEL,EAAEjD,EAAE+C,GAAGxC,EAAEwC,GAAGgO,EAAE7O,EAAEa,GAAGO,EAAEN,EAAED,IAAIF,CAAC,KAAI,IAAIb,EAAEpD,EAAE+Q,MAAM,GAAG1Q,EAAEud,SAAQ,CAAC3Z,EAAEE,KAAKf,EAAEa,GAAGmY,KAAKmD,MAAMjc,EAAEW,GAAGtC,EAAEsC,IAAI7C,EAAE6C,GAAE,IAAI,IAAIP,EAAE,CAACX,KAAKK,EAAE8C,SAASvG,EAAE,GAAGuG,UAAUvC,EAAEwa,GAAE,SAASxe,EAAE,GAAGuG,SAAS9C,EAAE/B,QAAQuC,EAAEgd,GAAE,QAAQjhB,EAAE,GAAGuG,SAASvG,EAAE,GAAGoD,KAAK1B,QAAQwC,EAAEie,GAAEha,KAAK1E,GAAGU,EAAE,CAAC,CAAClC,KAAK,aAAaoE,KAAK,OAAO,CAACpE,KAAK,SAASoE,KAAK,MAAM3E,OAAOM,EAAEN,QAAQ,CAACO,KAAK,QAAQoE,KAAK,MAAM3E,OAAO8B,EAAE9B,QAAQ,CAACO,KAAK,QAAQoE,KAAK,MAAM3E,OAAOD,EAAEC,SAAS0C,EAAE,CAAC,CAACiC,KAAK,SAAS9B,KAAKL,GAAG,CAACmC,KAAK,SAAS9B,KAAKvC,GAAG,CAACqE,KAAK,QAAQ9B,KAAKf,GAAG,CAAC6C,KAAK,SAAS9B,KAAK9C,MAAM6c,GAAEte,EAAE,GAAGoD,SAASkb,GAAE7a,IAQ/nC,MAAM,CAACxB,KAAK,QAAQ+rC,YAAY,CAACC,KAAK,GAAGzqC,EAAE9B,UAAUM,EAAEN,UAAUD,EAAEC,SAASwsC,kBAAkB,CAAC,SAASK,gBAR6hCjqC,GAAG,WACzoCA,EAAEspC,iBAAiBzpC,GAAGqpC,iBAAiBvpC,EAAED,eACvCm2B,GAAGl2B,EAAED,EAAE3D,eACPiE,EAAE+oC,0BACA/oC,EAAE8oC,sCAAsC,0DACnBppC,EAAEkoC,gBAAgB,mGAEvCloC,EAAE4oC,YAAY,aAAa3oC,EAAEqoC,aAAa,6BAC6E6B,WAAW,KAAI,CAAEC,QAAQ,CAACrqC,GAAGsqC,cAAc,CAAC7pC,EAAEiY,KAAKmD,KAAKnf,EAAE,KAAK6tC,gBAAgBlqC,IAAG,EAAGi2B,GAAG,CAACr6B,EAAEC,KAAK85B,GAAG/5B,EAAEwuC,OAAOvuC,GAAG,IAAII,EAAE45B,GAAGj6B,EAAEwuC,OAAOvuC,GAAGD,EAAEyuC,QAAQrU,GAAGp6B,EAAEwuC,OAAOnuC,GAAG,CAACmuC,OAAO,CAAC,IAAG,EAAGlU,GAAGt6B,IAAI,IAAIC,EAAED,EAAEyX,OAAOpX,EAAEL,EAAE0X,KAAKjX,EAAET,EAAEwV,KAAK,OAAOsT,GAAG,CAACrR,OAAOxX,EAAEyX,KAAKrX,EAAEmV,KAAK/U,GAAE,CAAC,IAAoB6zC,GAAGv0C,GAAE,KAAkByqC,KAAKJ,KAAKyB,KAAKtR,GAAGv6B,IAAI,IAAIA,GAAc,IAAXA,EAAE0B,OAAW,MAAM,IAAIJ,MAAM,+BAA8B,EAAGk5B,GAAG,CAACx6B,EAAEC,KAAK,IAAII,EAAEL,EAAEoD,KAAK3C,EAAE0hB,GAAEha,KAAK9H,GAAQoB,EAAExB,EAAE6W,KAAK,GAAGrV,EAAE,IAAIA,EAAEpB,EAAEqB,OAAOD,GAAGA,EAAEpB,EAAEqB,OAAO,EAAE,MAAM,IAAIJ,MAAM,4CAA4C,IAAIU,EAAE3B,EAAEoB,GAAGkC,EAAElD,EAAEuB,EAAEwB,EAAE8lB,GAAGtnB,GAAGyB,EAAEzB,EAAEwB,EAAwIQ,EAAEid,GAAE,IAAIjhB,EAAEuG,SAASvG,EAAEoD,KAAKI,GAAGS,EAAEua,GAAE,SAASxe,EAAEuG,SAASvG,EAAEoD,KAAKI,GAAGU,EAAEF,EAAEqC,KAAKxF,MAAMsD,EAAmB,QAAjBilB,GAAGppB,EAAEuG,UAAkB,mBAAmBrC,qBAAqB,mBAAmBA,gBAwEh9B,MAAM,CAACjC,KAAK,UAAU+rC,YAAY,CAACC,KAAK,GAAGzqC,IAAI0qC,kBAAkB,CAAC,SAASC,WAAW,KAAI,CAAEC,QAAQ,CAAC,CAAChrC,KAAK/C,EAAEkG,SAASvG,EAAEuG,WAAW8nC,cAAc,CAAC7pC,EAAEb,GAAG2qC,gBAAgB,CAAC,CAACjoC,KAAK,SAAS9B,KAAKd,MAAM8qC,gBAxEgyBlqC,GAAG,yCACx8BH,2CACAA,iDACMA,wEAEgBA,wJAKIA,qGAIxDG,EAAEspC,gBAAgB,aAAa,OAAOH,iBAAiBxpC,EAAEC,aACzDI,EAAEgpC,2RASAlpC,+sBAmBiBD,KA3CwpB,EAACG,EAAEC,IAAQ,IAAJA,EAAM,WAAWD,QAAQA,aAAaA,QAAQA,QAAY,IAAJC,EAAM,OAAOD,QAAQA,OAAW,IAAJC,EAAM,WAAWD,QAAQA,SAASA,OAAOA,EA2CrxBN,CAAE,kBAAkBP,yGAK1BU,mkBAeCA,KAAKulB,GAAG,kBAAkBjmB,wUASuK,EAAGi3B,GAAG,CAACz6B,EAAEC,KAAKs6B,GAAGv6B,EAAEwuC,QAAQxuC,EAAEyuC,QAAQjU,GAAGx6B,EAAEwuC,OAAO,GAAGvuC,GAAE,EAAGy6B,GAAG16B,GAAG8oB,GAAG,CAAChS,KAAK9W,EAAE8W,MAAK,IAA6By9B,GAAGx0C,GAAE,KAAkByqC,KAAKJ,KAAKyB,KAAKlR,GAAG36B,IAAI,IAAIA,GAAGA,EAAE0B,OAAO,EAAE,MAAM,IAAIJ,MAAM,iBAAgB,EAAGs5B,GAAG,CAAC56B,EAAEC,KAAK,IAAII,EAAE,GAAGI,EAAER,EAAE8W,WAAW,OAAO/W,EAAE,GAAGoD,KAAK,GAAG,IAAIpD,EAAE,GAAGmvC,mBAAmBlxB,SAAQvd,GAAGL,EAAEsB,KAAK0F,OAAO3G,MAAKD,EAAEJ,EAAEqB,QAAQonB,GAAG,CAAC/R,WAAWtW,EAAEqW,KAAK7W,EAAE6W,KAAKE,WAAW3W,GAAE,EAAGw6B,GAAG76B,GAAG,iFAE1jBA,oCACd0pB,GAAG,8BAA8B,IAAI1pB,sDAI1CA,SACV86B,GAAG96B,IAAI,IAAIC,EAAED,EAAE0B,OAAOrB,EAAE,GAAG,IAAI,IAAII,EAAE,EAAEA,EAAER,IAAIQ,EAAE,CAAC,IAAIC,EAAEV,EAAES,GAAG4rC,aAAa,UAAU,qBAAyB,IAAJpsC,EAAMI,EAAEsB,KAAKjB,GAAO,IAAJD,EAAMJ,EAAEsB,KAAK,wBAAwBlB,SAASC,OAAOD,IAAIR,EAAE,EAAEI,EAAEsB,KAAK,UAAUjB,OAAOL,EAAEsB,KAAK,6BAA6BlB,QAAQC,MAAM,CAAC,MAAM,2DAChNV,EAAE,GAAGqG,KAAK0lC,wCACxD1rC,EAAE+B,KAAK,gBACf,EACQ24B,GAAG,CAAC/6B,EAAEC,KAAK,IAAII,EAAEL,EAAE,GAAGoD,KAAK3C,EAAE0hB,GAAEha,KAAK9H,GAAGK,EAAEV,EAAE,GAAGuG,SAAS9E,EAAE0gB,GAAE6oB,cAAc/qC,EAAE6W,KAAKzW,EAAEqB,QAAQM,EAAE,IAAIgG,MAAM/H,EAAE8W,YAAYpT,EAAEsd,GAAE,QAAQvgB,EAAEL,GAAGmD,EAAE,IAAIwE,MAAM/H,EAAE8W,YAAYtT,EAAE,GAAGM,EAAE,GAAGC,EAAE,EAAEC,EAAE,CAAC,CAACoC,KAAK,SAAS9B,KAAK9D,IAAI,IAAI,IAAI0D,EAAE,EAAEA,EAAElE,EAAE8W,WAAW5S,IAAI,CAACH,GAAG/D,EAAE+W,WAAW7S,GAAGX,EAAEW,GAAGH,EAAE,IAAII,EAAE/D,EAAE+Q,QAAQhN,EAAEnE,EAAE6W,MAAM7W,EAAE+W,WAAW7S,GAAGJ,EAAEpC,KAAKyC,GAAGpC,EAAEmC,GAAGqa,GAAE,SAASra,IAAIzD,EAAE0D,GAAGX,EAAE9B,KAAK,CAACyB,KAAKW,EAAEI,GAAGoC,SAASvG,EAAE,GAAGuG,UAAU,CAACtC,EAAEtC,KAAK,CAAC0E,KAAK,SAAS9B,KAAKf,IAAIS,EAAEtC,QAAQ2c,GAAEje,IAAI0D,EAAEka,SAAQ9Z,GAAGF,EAAEtC,QAAQ2c,GAAEna,MAgBvc,MAAM,CAAClC,KAAK,QAAQ+rC,YAAY,CAACC,KAAKhuC,EAAEoqC,SAAS6D,kBAAkB,CAAC,SAASK,gBAhBqYpqC,GAAG,OACtdA,EAAEwpC,gBAAgB,aAAa,OAAOA,gBAAgB,qBAAqB,MAAMnqC,EAAE9B,QAAQ8rC,iBAAiB7pC,KAAK3B,SACjH64B,GAAGr3B,EAAE9B,cACLo5B,GAAG94B,WAEHmC,EAAEkpC,oBACAlpC,EAAEipC,sCAAsC,+CAE1BzpC,EAAEuoC,gBAAgB,mCACpBvoC,EAAE8oC,WAAW,UAAUhrC,4GAGxBioB,GAAG,8BAA8B,qBAAqBlmB,EAAE9B,mBACjEiC,EAAEgpC,WAAW,UAAUlrC,EAAE,kFAGmE0sC,WAAW,KAAI,CAAEC,QAAQ3qC,EAAE4qC,cAAc,CAAC7pC,EAAEiY,KAAKmD,KAAKnf,EAAE,KAAK6tC,gBAAgBrqC,IAAG,EAAG+2B,GAAG,CAACh7B,EAAEC,KAAK06B,GAAG36B,EAAEwuC,QAAQ,IAAInuC,EAAoB,IAAlBL,EAAEwuC,OAAO9sC,OAAWzB,EAAE26B,GAAG56B,EAAEwuC,OAAOvuC,GAAGD,EAAEyuC,QAAQ1T,GAAG/6B,EAAEwuC,OAAOnuC,GAAG,CAACmuC,OAAO,CAAC,IAAG,EAAGvT,GAAGj7B,IAAI,IAAIC,EAAED,EAAE8W,KAAKzW,EAAEL,EAAEgX,WAAWvW,EAAET,EAAE+W,WAAW,EAAE1W,EAAEqB,OAAO1B,EAAE+W,WAAW,GAAGtW,IAAIJ,EAAEqB,OAAO,MAAM,IAAIJ,MAAM,iDAAiD,OAAOwnB,GAAG,CAAChS,KAAK7W,EAAE8W,WAAWtW,EAAEuW,WAAW3W,GAAE,CAAC,IAAuBm0C,GAAGz0C,GAAE,KAAkBmnC,KAAKsD,KAAKqB,KAAK3Q,GAAGl7B,GAAGgI,MAAMd,KAAKlH,EAAEmvC,mBAAmB9nC,QAAQ8zB,GAAGn7B,IAAI,IAAIA,GAAc,IAAXA,EAAE0B,OAAW,MAAM,IAAIJ,MAAM,2BAA2B,GAAmB,IAAhBtB,EAAE,GAAGuG,UAA8B,IAAhBvG,EAAE,GAAGuG,UAA8B,KAAhBvG,EAAE,GAAGuG,SAAc,MAAM,IAAIjF,MAAM,yDAAyD,GAAmB,IAAhBtB,EAAE,GAAGuG,SAAa,MAAM,IAAIjF,MAAM,qDAAqD,GAAsB,IAAnBtB,EAAE,GAAGoD,KAAK1B,OAAW,MAAM,IAAIJ,MAAM,sCAAsC,GAAG45B,GAAGl7B,EAAE,IAAI0B,SAAS1B,EAAE,GAAGoD,KAAK1B,OAAO,MAAM,IAAIJ,MAAM,wFAAuF,EAAG85B,GAAG,CAACp7B,EAAEC,KAAK,IAAII,EAAE,GAAG,IAAI,IAAII,EAAE,EAAEA,EAAET,EAAE0B,SAASjB,EAAEJ,EAAEsB,KAAK3B,EAAES,GAAGR,EAAEQ,IAAI,OAAOJ,GAAGg7B,GAAGr7B,IAAI,IAAIC,EAAED,EAAE,GAAGoD,KAAK/C,EAAE66B,GAAGl7B,EAAE,IAAIS,EAAE26B,GAAGn7B,EAAEI,GAAGK,EAAEyhB,GAAEha,KAAK1H,GAAGgB,EAAEzB,EAAE,GAAGuG,SAASvE,EAAEif,GAAE,QAAQxf,EAAExB,EAAEyB,QAAQiC,EAAE6a,GAAE,SAAS/c,EAAEhB,EAAEiB,QAc7wC,MAAM,CAACO,KAAK,OAAO+rC,YAAY,CAACC,KAAK,GAAG5tC,IAAI6tC,kBAAkB,CAAC,SAASC,WAAW,KAAI,CAAEC,QAAQ,CAAC,CAAChrC,KAAK3C,EAAE8F,SAASvG,EAAE,GAAGuG,WAAW8nC,cAAc,CAAC7pC,EAAEiY,KAAKmD,KAAKlf,EAAE,KAAK4tC,gBAAgB,CAAC,CAACjoC,KAAK,SAAS9B,KAAK7D,MAAM4d,GAAEte,EAAE,GAAGoD,SAASkb,GAAE7d,MAAM8tC,gBAd+iC9qC,GAAG,8BACtwCzB,EAAE+pC,WAAW9rC,cAChCwD,EAAEkqC,gBAAgB,cAAc,OAAOH,iBAAiBxrC,EAAE2B,aAC1DF,EAAE4pC,sBACF5pC,EAAE2pC,sCAAsC,uDACnBzpC,EAAEuoC,gBAAgB,4CACpBlqC,EAAEqE,KAAK0lC,uCACN9rC,EAAEyB,6CACFM,EAAEyqC,WAAW,uBAAuB,wCAChC9oC,EAAE8oC,WAAW,iBAAiB,mCAEpDzqC,EAAE2qC,WAAW,gBAAgB,IAAI,sCAEnChpC,EAAEipC,YAAY,aAAa5qC,EAAEsqC,aAAa,2BAC8M,EAAGhR,GAAGt7B,IAAIm7B,GAAGn7B,EAAEwuC,QAAQxuC,EAAEyuC,QAAQpT,GAAGr7B,EAAEwuC,QAAQ,CAACA,OAAO,CAAC,IAAG,CAAC,IAAiBiG,GAAG10C,GAAE,KAAkBmnC,KAAKsD,KAAKqB,KAAKtQ,GAAG,CAACv7B,EAAEC,EAAEI,EAAEI,EAAEC,KAAK,IAAiL+C,EAA7KhC,EAAE+c,GAAE,cAAc9d,EAAEL,EAAEqB,OAAO,GAAGM,EAAEif,GAAE,SAAShhB,EAAE,GAAGsG,SAAStG,EAAE,GAAGmD,KAAK1B,OAAO,GAAGiC,EAAEsd,GAAE,SAAShhB,EAAE,GAAGsG,SAAStG,EAAE,GAAGmD,KAAK1B,OAAO,GAAG8B,EAAEyd,GAAE,SAAShhB,EAAE,GAAGsG,SAAStG,EAAE,GAAGmD,KAAK1B,OAAO,GAAKqC,EAAE,CAACC,EAAEC,EAAEC,IAAI,UAAUD,MAAMD,MAAME,KAAK,GAAIzD,EAA2H,CAAC,IAAIuD,EAAE,CAACC,EAAEC,EAAEC,EAAE,MAAM,IAAIC,EAAE,iBAAiBF,iBAAiBA,KAAKG,EAAE,iBAAiBH,iBAAiBA,KAAKI,EAAE,sBAAsBJ,QAAQ,aAAmB,GAAL,EAAEA,OAAS,MAAM,mCACp2BA,OAAOzC,EAAEyqC,gBAAgB,qBAAqBhoC,mCACpDA,OAAOlC,EAAEoqC,2BAA2B,iBAAiBloC,IAAIzC,gCACzDyC,OAAOP,EAAEyoC,2BAA2B,iBAAiBloC,IAAIzC,gCACzDyC,OAAOV,EAAE4oC,2BAA2B,iBAAiBloC,IAAIzC,+BAC1DyC,eAAeA,mCACfA,eAAeA,mCACfA,eAAeA,uCACXA,eAAeA,uCACfA,eAAeA,wBAC9BD,KAAKC,QAAQC,KAAKJ,EAAEK,EAAEC,EAAEC,kBAAE,EACrBb,EAAF,IAAJ/C,EAAQ,uDAEPsD,EAAE,OAAO,EAAE,uBACXA,EAAE,OAAO,EAAE,uBACXA,EAAE,OAAO,EAAE,uBACXA,EAAE,OAAO,EAAE,iHACiF,iBAC5FA,EAAE,0BAA0B,mBAC5BA,EAAE,0BAA0B,mBAC5BA,EAAE,0BAA0B,mBAC5BA,EAAE,0BAA0B,gBAC/B,MAtBulBP,EAAEhC,EAAEmrC,YAAY,aAAa7oC,EAAE/B,EAAE6qC,YAAY,cAAclpC,EAAEkpC,YAAY,cAAcrpC,EAAEqpC,YAAY,gBAsB3rB,MAAM,aACR7sC,EAAE2tC,gBAAgB,WAAW,OAAOH,iBAAiBhqC,EAAExB,EAAE2B,EAAElC,eAC3DzB,EAAEqtC,wBACFrtC,EAAEotC,sCAAsC,iCACxC3pC,YAAC,EACD+3B,GAAGx7B,IAAI,IAAIC,EAAED,EAAE,GAAGoD,KAAK/C,EAAEL,EAAE,GAAGoD,KAAK3C,EAAET,EAAE,GAAGoD,KAAK1C,EAAEV,EAAE,GAAGuG,SAAS9E,IAAI0gB,GAAEipB,SAASnrC,EAAEI,IAAI8hB,GAAEipB,SAAS/qC,EAAEI,IAAIuB,EAAE/B,EAAE0D,EAAEwe,GAAEha,KAAKlI,GAAG,GAAGwB,EAAE,CAAC,IAAIgC,EAAEslB,GAAG2hB,UAAU3hB,GAAG2hB,UAAUzqC,EAAEI,GAAE,GAAII,GAAE,GAAI,IAAIgD,EAAE,MAAM,IAAInC,MAAM,+CAA+CU,EAAEyB,EAAEE,EAAEwe,GAAEha,KAAKnG,EAAE,CAAC,IAAIwB,EAAEiZ,KAAKmD,KAAKjc,EAAE,GAAG,MAAM,CAAC1B,KAAK,QAAQ+rC,YAAY,CAACE,kBAAkB,CAAC,OAAO,OAAO,SAASK,gBAAgB9qC,GAAG83B,GAAG93B,EAAEzD,EAAEgC,EAAEP,EAAEf,GAAGytC,WAAW,KAAI,CAAEC,QAAQ,CAAC,CAAChrC,KAAKpB,EAAEuE,SAAS7F,IAAI2tC,cAAc,CAAC7pC,EAAEiY,KAAKmD,KAAKjc,EAAE,GAAG,IAAI2qC,gBAAgB,CAAC,CAACjoC,KAAK,SAAS9B,KAAKf,MAAM8a,GAAE7d,MAAM6d,GAAEre,MAAMqe,GAAEje,MAAMie,GAAEtc,MAAK,EAAGy5B,GAAGz7B,IAAIA,EAAEyuC,QAAQjT,GAAGx7B,EAAEwuC,QAAO,CAAC,IAAWkG,GAAG30C,GAAE,KAAkBqvC,KAAKnsB,KAAKqtB,KAAKG,KAAKE,KAAKC,KAAKG,KAAKvtB,KAAKsuB,KAAKG,KAAKE,KAAKc,KAAKC,KAAKC,KAAKC,KAAKC,KAAKC,KAAKvwB,KAAKwwB,KAAKC,KAAKC,KAAKI,KAAKlF,KAAKmF,KAAKK,KAAKC,KAAKE,KAAKC,KAAKC,KAAKzG,KAAKntB,KAAK6zB,KAAK/Y,GAAG,IAAI36B,IAAI,CAAC,CAAC,MAAM,CAACutB,KAAK,CAAC,OAAO,CAACC,KAAK,CAAC,QAAQ,CAACC,KAAK,CAAC,MAAM,CAACsC,KAAK,CAAC,SAAS,CAACzD,GAAGlK,KAAK,CAAC,SAAS,CAACiK,GAAGjK,KAAK,CAAC,OAAO,CAACsL,KAAK,CAAC,QAAQ,CAACC,KAAK,CAAC,OAAO,CAACC,KAAK,CAAC,QAAQ,CAACC,KAAK,CAAC,YAAY,CAAChB,KAAK,CAAC,cAAc,CAACgK,GAAGD,KAAK,CAAC,qBAAqB,CAAC3J,KAAK,CAAC,UAAU,CAACG,KAAK,CAAC,gBAAgB,CAACuC,KAAK,CAAC,OAAO,CAAC5B,GAAGD,KAAK,CAAC,OAAO,CAACI,KAAK,CAAC,OAAO,CAACD,KAAK,CAAC,SAAS,CAAC4C,GAAGC,KAAK,CAAC,OAAO,CAAC/M,GAAG/D,KAAK,CAAC,gBAAgB,CAACiT,GAAGL,KAAK,CAAC,MAAM,CAACzE,KAAK,CAAC,OAAO,CAACC,KAAK,CAAC,SAAS,CAAC+E,GAAGC,KAAK,CAAC,MAAM,CAACpD,KAAK,CAAC,SAAS,CAAC2D,GAAGC,KAAK,CAAC,MAAM,CAACtF,GAAGD,KAAK,CAAC,QAAQ,CAAC4B,KAAK,CAAC,MAAM,CAACzB,KAAK,CAAC,MAAM,CAACC,KAAK,CAAC,SAAS,CAACwF,KAAK,CAAC,QAAQ,CAACvF,KAAK,CAAC,YAAY,CAAC3K,GAAG/D,KAAK,CAAC,SAAS,CAACqU,GAAGD,KAAK,CAAC,iBAAiB,CAACK,GAAGD,KAAK,CAAC,OAAO,CAAC7F,KAAK,CAAC,OAAO,CAACkG,GAAGD,KAAK,CAAC,oBAAoB,CAACoC,GAAGD,KAAK,CAAC,gBAAgB,CAACM,GAAGD,KAAK,CAAC,UAAU,CAAC/G,KAAK,CAAC,iBAAiB,CAACE,KAAK,CAAC,wBAAwB,CAAC0E,KAAK,CAAC,qBAAqB,CAACG,KAAK,CAAC,YAAY,CAACxG,GAAGP,KAAK,CAAC,OAAO,CAACiC,KAAK,CAAC,cAAc,CAACE,KAAK,CAAC,MAAM,CAAChB,KAAK,CAAC,SAAS,CAACuC,KAAK,CAAC,UAAU,CAACmF,GAAGC,KAAK,CAAC,MAAM,CAACjH,KAAK,CAAC,qBAAqB,CAACuF,GAAGH,KAAK,CAAC,MAAM,CAACxG,KAAK,CAAC,MAAM,CAACD,KAAK,CAAC,MAAM,CAACqH,KAAK,CAAC,MAAM,CAAC/F,KAAK,CAAC,QAAQ,CAACqH,KAAK,CAAC,aAAa,CAACzI,KAAK,CAAC,YAAY,CAAChD,KAAK,CAAC,aAAa,CAACL,KAAK,CAAC,YAAY,CAACI,KAAK,CAAC,YAAY,CAACG,KAAK,CAAC,aAAa,CAACD,KAAK,CAAC,WAAW,CAACL,KAAK,CAAC,WAAW,CAACC,KAAK,CAAC,eAAe,CAACO,KAAK,CAAC,kBAAkB,CAACN,KAAK,CAAC,kBAAkB,CAACK,KAAK,CAAC,OAAO,CAAC8C,KAAK,CAAC,SAAS,CAAC0J,GAAGC,KAAK,CAAC,UAAU,CAAC1J,KAAK,CAAC,MAAM,CAACC,KAAK,CAAC,OAAO,CAACC,KAAK,CAAC,QAAQ,CAACmK,GAAGC,KAAK,CAAC,yBAAyB,CAACT,GAAGC,KAAK,CAAC,QAAQ,CAACkB,GAAGC,KAAK,CAAC,OAAO,CAAC9K,KAAK,CAAC,UAAU,CAACsK,GAAGC,KAAK,CAAC,MAAM,CAACvJ,KAAK,CAAC,MAAM,CAACf,KAAK,CAAC,OAAO,CAACC,KAAK,CAAC,kBAAkB,CAACC,GAAGlB,KAAK,CAAC,OAAO,CAACkM,KAAK,CAAC,YAAY,CAAClR,GAAG/U,KAAK,CAAC,QAAQ,CAAComB,MAAK,IAAWkZ,GAAG50C,GAAE,KAAkBqM,KAAKw7B,KAAKiE,KAAKlQ,GAAG,MAAM,WAAAn0B,CAAYvH,GAAGwH,KAAKrG,QAAQnB,EAAEwH,KAAKmtC,KAAK,IAAI7zC,IAAI0G,KAAKotC,iBAAgB,CAAE,CAAC,WAAAC,CAAY70C,GAAG,OAAOwH,KAAKmtC,KAAKt0C,IAAIL,EAAE,CAAC,WAAA80C,CAAY90C,EAAEI,GAAGoH,KAAKmtC,KAAKzzC,IAAIlB,EAAEI,EAAE,CAAC,GAAAmJ,CAAIvJ,EAAEI,EAAEI,EAAEC,EAAEe,GAAG1C,EAAGkB,EAAE+0C,YAAY/yC,MAAM,IAAID,EAAEyF,KAAKrG,QAAQ6mC,OAAOtkC,EAAE8D,KAAKrG,QAAQ6zC,wBAAwBxtC,KAAKrG,QAAQ8zC,eAAkD,EAAnCztC,KAAKrG,QAAQ+zC,uBAAyBxxC,EAAEyxC,YAAYn1C,EAAEo1C,iBAAiB,IAAI7xC,EAAE,GAAG,IAAI,IAAIO,KAAK1D,EAAEmD,EAAE7B,KAAK,CAAC2zC,QAAQ9xC,EAAE9B,OAAO6zC,SAAS,CAACvkC,OAAOjN,EAAEiN,UAAU,IAAI,IAAIjN,KAAKtD,EAAE+C,EAAE7B,KAAK,CAAC2zC,QAAQ9xC,EAAE9B,OAAO6zC,SAAS,CAACvkC,OAAOjN,EAAEiN,UAAUvP,GAAG+B,EAAE7B,KAAK,CAAC2zC,QAAQ9xC,EAAE9B,OAAO6zC,SAAS9zC,IAAI,IAAIgC,EAAEzB,EAAEwzC,gBAAgB,CAACC,OAAOx1C,EAAEo1C,gBAAgBK,mBAAmB,GAAGr1B,QAAQ7c,EAAEmyC,MAAM11C,EAAE+0C,YAAY/yC,OAAO0B,EAAEiyC,aAAa,EAAEnyC,GAAGE,EAAEkyC,sBAAsBn1C,GAAG+G,KAAKrG,QAAQ8zC,eAAkD,EAAnCztC,KAAKrG,QAAQ+zC,sBAAwB,GAAG1tC,KAAKrG,QAAQ+zC,yBAAyB1tC,KAAKrG,QAAQ+zC,uBAAuB1tC,KAAKrG,QAAQ00C,mBAA4C,cAAzBruC,KAAKrG,QAAQ20C,YAA0BtuC,KAAKrG,QAAQonC,iBAAiB/gC,KAAKrG,QAAQ+zC,uBAAuB1tC,KAAKrG,QAAQ00C,mBAAmBruC,KAAKrG,QAAQoO,QAAQxQ,EAAGiB,EAAE+0C,YAAY/yC,KAAK,CAAC,OAAAkE,GAAU,CAAC,KAAA6vC,CAAM/1C,EAAEI,GAAGtB,EAAGkB,EAAEgC,MAAM,IAAIxB,EAAEgH,KAAKrG,QAAQ6mC,OAAOvnC,EAAE,GAAGD,EAAEw1C,SAASvQ,IAAI,eAAehlC,EAAEiB,KAAK,eAAe,IAAIF,EAAEmoB,GAAGvpB,GAAG2B,EAAE/B,EAAEsuC,gBAAgB9sC,GAAGkC,EAAE,GAAGjD,EAAE0B,KAAK,UAErgHX,EAAEqsC,8BACF9rC,IAAIwB,EAAE/C,EAAEy1C,mBAAmB,CAACzO,KAAK9jC,EAAEgyC,MAAM11C,EAAEgC,OAAOumB,GAAG,WAAU,IAAI,YAAYvoB,EAAEgC,qBAAqB0B,MAAK,IAAIF,EAAEhD,EAAE01C,sBAAsB,CAAC1H,QAAQ,CAAC3K,OAAOtgC,EAAE4yC,WAAW,QAAQX,OAAO,OAAOE,MAAM11C,EAAEgC,OAAO,OAAOjD,EAAGiB,EAAEgC,MAAM,CAAC+yC,YAAY/0C,EAAEo1C,gBAAgB5xC,EAAE,CAAC,0BAAA4yC,CAA2Bp2C,GAAG,IAAII,EAAY,iBAAHJ,EAAYA,EAAEA,EAAEuE,EAAE/D,EAAY,iBAAHR,EAAY,EAAEA,EAAEse,GAAG,EAAE7d,EAAY,iBAAHT,EAAY,EAAEA,EAAE8E,GAAG,EAAEtD,EAAEgG,KAAKrG,QAAQ6mC,OAAOqO,OAAOC,iCAAiC,GAAGl2C,GAAGoB,GAAGhB,GAAGgB,GAAGf,GAAGe,EAAE,MAAM,CAACpB,EAAEI,EAAEC,GAAG,IAAIsB,EAAE3B,EAAEI,EAAEC,EAAEiD,EAAE8Y,KAAKmD,KAAKnD,KAAK2zB,KAAKpuC,IAAI,GAAG2B,EAAElC,EAAE,CAAC,GAAGkC,EAAE8Y,KAAKmD,KAAKnD,KAAK+5B,KAAKx0C,IAAI2B,EAAElC,EAAE,MAAM,IAAIH,MAAM,+CAA+C,MAAM,CAACqC,EAAEA,EAAEA,EAAE,CAAM,MAAM,CAACA,EAAEA,EAAE,EAAE,EAAC,IAAiB8yC,GAAG12C,GAAE,KAAkBqM,KAAK86B,KAAKU,KAAKE,KAAKE,KAAK0M,KAAKC,KAAK/Y,GAAG,CAAC57B,EAAEC,KAAK,GAAGA,EAAEyB,SAAS1B,EAAE0B,OAAO,MAAM,IAAIJ,MAAM,4BAA4BrB,EAAEyB,8CAA8C1B,EAAE0B,WAAW,IAAIrB,EAAE,GAAG,IAAI,IAAII,EAAE,EAAEA,EAAET,EAAE0B,SAASjB,EAAE,CAAC,IAAIC,EAAEV,EAAES,GAAG8F,SAAS,OAAOtG,EAAEQ,IAAI,IAAI,OAAQJ,EAAEsB,KAAK,IAAI,MAAM,IAAI,OAAQtB,EAAEsB,KAAK,GAAGjB,KAAK,MAAM,IAAI,OAAO,CAAC,IAAIe,EAAEzB,EAAES,GAAG2C,KAAK1B,OAAOrB,EAAEsB,KAAK,GAAGjB,KAAKe,KAAK,KAAK,CAAC,IAAI,OAAO,CAAC,IAAIA,EAAEzB,EAAES,GAAG2C,KAAKhB,KAAK,KAAK/B,EAAEsB,KAAK,GAAGjB,KAAKe,KAAK,KAAK,CAAC,QAAQ,MAAM,IAAIH,MAAM,iCAAiCrB,EAAEQ,MAAM,CAAC,OAAOJ,EAAE+B,KAAK,IAAG,EAAGy5B,GAAG,CAAC77B,EAAEC,EAAEI,KAAK,IAAII,EAAET,EAAEiC,KAAK,OAAOjC,EAAEguC,aAAaC,OAAOxtC,GAAG,IAAIT,EAAEguC,YAAYC,KAAK,KAAKxtC,GAAG,IAAIJ,EAAE,IAAIu7B,GAAG37B,EAAED,EAAEguC,aAAaE,mBAAmB,IAAIlmC,MAAM/H,EAAEyB,QAAQswC,KAAK,WAAWvxC,GAAGq7B,GAAG,MAAM,WAAAt0B,GAAcC,KAAKivC,gBAAgB,KAAKjvC,KAAKkvC,eAAe,KAAKlvC,KAAKmvC,mBAAmB,KAAKnvC,KAAKquC,kBAAkB,GAAGruC,KAAK0tC,sBAAsB,EAAE1tC,KAAKovC,eAAe,GAAGpvC,KAAKqvC,eAAe,IAAI/1C,IAAI0G,KAAKsvC,2BAA2B,IAAIh2C,GAAG,CAAC,2BAAIi2C,GAA0B,GAA0B,OAAvBvvC,KAAKivC,gBAAuB,MAAM,IAAIp1C,MAAM,2EAA2E,IAAIrB,EAAEwH,KAAKiqC,iBAAiBpxC,IAAImH,KAAKivC,iBAAiB,OAAOz2C,IAAIA,EAAE,CAAC,EAAEwH,KAAKiqC,iBAAiBvwC,IAAIsG,KAAKivC,gBAAgBz2C,IAAIA,CAAC,CAAC,gBAAMg3C,CAAWh3C,EAAEI,GAAGoH,KAAKyE,IAAIjM,EAAE,IAAIQ,EAAE,GAAGC,EAAE,CAACw2C,eAAe,CAACC,+BAA+B92C,EAAEi2C,OAAOa,+BAA+BZ,iCAAiCl2C,EAAEi2C,OAAOC,iCAAiCa,4BAA4B/2C,EAAEi2C,OAAOc,4BAA4BC,cAAch3C,EAAEi2C,OAAOe,cAAcC,kCAAkCj3C,EAAEi2C,OAAOgB,kCAAkCC,yBAAyBl3C,EAAEi2C,OAAOiB,yBAAyBC,yBAAyBn3C,EAAEi2C,OAAOkB,yBAAyBC,yBAAyBp3C,EAAEi2C,OAAOmB,0BAA0BC,iBAAiBj3C,GAAGJ,EAAE41C,SAASvQ,IAAI,uDAAuDjlC,EAAEkB,KAAK,uDAAuDtB,EAAE41C,SAASvQ,IAAI,oBAAoBjlC,EAAEkB,KAAK,mBAAmBtB,EAAE41C,SAASvQ,IAAI,eAAejlC,EAAEkB,KAAK,cAAc8F,KAAKwgC,aAAa5nC,EAAEs3C,cAAcj3C,GAAG+G,KAAKmwC,eAAe/uB,GAAGphB,MAAMA,KAAKowC,eAAe,IAAIlc,GAAGl0B,MAAMA,KAAKqwC,QAAQ,IAAI/2C,IAAI0G,KAAKswC,qBAAqB,IAAIh3C,IAAI0G,KAAKiqC,iBAAiB,IAAI3wC,IAAIunB,GAAGroB,EAAE4C,WAAW5C,EAAE+3C,OAAOvwC,KAAKwgC,OAAOgQ,kBAAkBx2C,IAAIA,EAAE4Q,iBAAiB6lC,oBAAoBlvC,QAAQqJ,MAAM,mDAAmD5Q,EAAE4Q,MAAMuG,UAAS,EAAGtZ,OAAOC,eAAekI,KAAKyE,IAAIxJ,OAAO,SAAS,CAAC7B,MAAM4G,KAAKwgC,SAASxgC,KAAK0wC,cAAc,CAAC,OAAAhyC,UAAiBsB,KAAK2wC,SAAS,KAAK3wC,KAAK2wC,SAAStP,UAAUrhC,KAAKmwC,eAAezxC,SAAS,CAAC,iBAAAoiC,GAAoB,OAAO9gC,KAAKkvC,iBAAiBlvC,KAAKkvC,eAAelvC,KAAKwgC,OAAOoQ,uBAAuB5wC,KAAK0wC,eAAgC,SAAjB1wC,KAAKsuC,kBAA2BtuC,KAAK2wC,SAAS,MAAM3wC,KAAK2wC,SAAS3wC,KAAKwgC,OAAOqQ,eAAe,CAACjyC,KAAK,YAAYusC,MAA6B,EAAvBnrC,KAAKquC,oBAAsBruC,KAAK8wC,mBAAmB9wC,KAAKwgC,OAAOC,aAAa,CAAC//B,KAA4B,EAAvBV,KAAKquC,kBAAoB,EAAE3N,MAAMC,eAAesB,SAAStB,eAAeoQ,kBAAkB/wC,KAAKkvC,cAAc,CAAC,qBAAA1B,GAAwB,IAAIxtC,KAAKmvC,mBAAmB,CAAC,IAAI32C,EAAE,CAAC,EAAmB,cAAjBwH,KAAKsuC,YAA0B91C,EAAEw4C,gBAAgB,CAACL,SAAS3wC,KAAK2wC,SAASM,0BAAqD,EAA3BjxC,KAAK0tC,sBAAwBwD,oBAA+C,EAA3BlxC,KAAK0tC,sBAAwB,IAAI1tC,KAAKmvC,mBAAmBnvC,KAAK8gC,oBAAoBqQ,iBAAiB34C,EAAE,CAAC,OAAOwH,KAAKmvC,kBAAkB,CAAC,cAAApO,GAAiB/gC,KAAKmvC,qBAAqBnvC,KAAKmvC,mBAAmBiC,MAAMpxC,KAAKmvC,mBAAmB,KAAK,CAAC,KAAApnC,GAAQ,IAAI/H,KAAKkvC,eAAe,OAAkC,IAAI12C,EAA/BlB,IAAK0I,KAAK+gC,iBAAwC,SAAjB/gC,KAAKsuC,YAAqBtuC,KAAKkvC,eAAemC,gBAAgBrxC,KAAK2wC,SAAS,EAA6B,EAA3B3wC,KAAK0tC,sBAAwB1tC,KAAK8wC,mBAAmB,GAAGt4C,EAAEwH,KAAKwgC,OAAOC,aAAa,CAAC//B,KAAgC,EAA3BV,KAAK0tC,sBAAwB,EAAEhN,MAAMC,eAAeE,SAASF,eAAeC,WAAW5gC,KAAKqvC,eAAe31C,IAAIlB,EAAEwH,KAAKovC,gBAAgBpvC,KAAKovC,eAAe,GAAGpvC,KAAKkvC,eAAelO,mBAAmBhhC,KAAK8wC,mBAAmB,EAAEt4C,EAAE,EAA6B,EAA3BwH,KAAK0tC,sBAAwB,IAAI1tC,KAAKwgC,OAAO8Q,MAAMC,OAAO,CAACvxC,KAAKkvC,eAAesC,WAAWxxC,KAAKmwC,eAAezN,wBAAwB1iC,KAAKkvC,eAAe,KAAKlvC,KAAK0tC,sBAAsB,EAAmB,SAAjB1tC,KAAKsuC,WAAoB91C,EAAEyoC,SAASC,WAAWC,MAAMr0B,MAAK,KAAK,IAAIlU,EAAE,IAAI8G,eAAelH,EAAE4oC,kBAAkBpoC,EAAEgH,KAAKqvC,eAAex2C,IAAIL,GAAG,IAAI,IAAIS,EAAE,EAAEA,EAAEL,EAAEqB,OAAO,EAAEhB,IAAI,CAAC,IAAIe,EAAEhB,EAAEC,GAAGsB,EAAEP,EAAEy3C,SAASv1C,EAAE8D,KAAKqwC,QAAQx3C,IAAI0B,GAAGwB,EAAEG,EAAEw1C,WAAW11C,EAAEE,EAAEy1C,WAAWr1C,EAAEtC,EAAE43C,YAAYr1C,EAAEvC,EAAE63C,iBAAiBr1C,EAAExC,EAAE83C,kBAAkBr1C,EAAE7D,EAAI,EAAFK,GAAKyD,EAAE9D,EAAI,EAAFK,EAAI,UAAU+G,KAAK+xC,cAAc,MAAM/xC,KAAK+xC,cAAct1C,GAAG,IAAIE,EAAEiD,OAAOnD,EAAEuD,KAAK+xC,eAAen1C,EAAEgD,OAAOlD,EAAEsD,KAAK+xC,eAAe,IAAInyC,OAAOC,cAAclD,KAAKiD,OAAOC,cAAcjD,GAAG,MAAM,IAAIkD,WAAW,6BAA6B,GAAGE,KAAKyE,IAAIxJ,OAAO+2C,WAAWC,OAAOjyC,KAAKyE,IAAIxJ,OAAO+2C,UAAUC,OAAO,CAACC,QAAQ,EAAEC,eAAe51C,EAAE7B,KAAImC,IAAG,CAAElB,KAAKkB,EAAElB,KAAKmD,SAASqhB,GAAGtjB,EAAEiC,cAAaszC,gBAAgB51C,EAAE9B,KAAImC,IAAG,CAAElB,KAAKkB,EAAElB,KAAKmD,SAASqhB,GAAGtjB,EAAEiC,cAAa2yC,SAASl3C,EAAEm3C,WAAW31C,EAAE41C,WAAW31C,EAAE41C,YAAYt1C,EAAE+1C,UAAU11C,EAAE21C,QAAQ11C,QAAQ,CAAC,IAAIC,EAAE,GAAGN,EAAEia,SAAQ,CAACxZ,EAAEC,KAAKJ,GAAG,SAASI,QAAQD,EAAErB,WAAWwkB,GAAGnjB,EAAE8B,aAAS,IAAO,IAAI/B,EAAE,GAAGP,EAAEga,SAAQ,CAACxZ,EAAEC,KAAKF,GAAG,UAAUE,QAAQD,EAAErB,WAAWwkB,GAAGnjB,EAAE8B,aAAS,IAAOyC,QAAQmJ,IAAI,uBAAuBnQ,KAAKwB,KAAKC,KAAKM,MAAMO,IAAIE,oBAAoBH,EAAED,OAAO,CAACvF,EAAG,MAAM,GAAGkF,MAAMG,MAAMC,IAAI,CAAClE,EAAE0pC,QAAQliC,KAAKqvC,eAAe/M,OAAO9pC,EAAC,IAAIjB,GAAI,CAAC,GAAAwK,CAAIvJ,EAAEI,EAAEI,EAAEC,EAAEe,GAAG1C,EAAGkB,EAAEgC,MAAM,IAAID,EAAE,GAAG,IAAI,IAAIwC,EAAE,EAAEA,EAAEnE,EAAEqB,SAAS8C,EAAE,CAAC,IAAIC,EAAEgD,KAAKmwC,eAAet3C,IAAID,EAAEmE,GAAGD,MAAM,IAAIE,EAAE,MAAM,IAAInD,MAAM,0BAA0BjB,EAAEmE,GAAGD,QAAQvC,EAAEwC,GAAGC,CAAC,CAAC,IAAI2pC,QAAQzqC,EAAE0qC,cAAc7qC,EAAE8qC,gBAAgB7qC,GAAGxD,EAAEkuC,WAAW9tC,GAAG0D,EAAa,IAAXtD,EAAEiB,OAAWiC,EAAExB,KAAI,CAACqC,EAAEC,IAAIA,IAAGhE,EAAE,GAAGsD,EAAErC,SAASiC,EAAEjC,OAAO,MAAM,IAAIJ,MAAM,eAAeyC,EAAErC,2BAA2BiC,EAAEjC,WAAW,IAAgiBwC,EAA5hBF,EAAE,GAAGC,EAAE,GAAG,IAAI,IAAIO,EAAE,EAAEA,EAAEb,EAAEjC,SAAS8C,EAAE,CAAC,IAAI6C,OAAOy+B,UAAU/hC,EAAES,KAAKT,EAAES,IAAI,GAAGT,EAAES,IAAIb,EAAEjC,OAAO,MAAM,IAAIJ,MAAM,yBAAyByC,EAAES,MAAM,IAAW,IAART,EAAES,GAAQ,SAAS,IAAIC,GAAU,IAARV,EAAES,GAAQE,GAAU,IAARX,EAAES,GAAQO,EAAEN,GAAGC,EAAEjD,EAAEkC,EAAEa,GAAG+B,SAAS5C,EAAEa,GAAGpB,MAAM1C,EAAEqD,EAAES,GAAGb,EAAEa,GAAG+B,SAAS5C,EAAEa,GAAGpB,MAAMoP,EAAE/K,KAAKmwC,eAAet3C,IAAIyE,EAAER,MAAM,IAAIiO,EAAE,MAAM,IAAIlR,MAAM,2BAA2ByD,EAAER,QAAQ,GAAGE,GAAGgD,KAAKuyC,cAAcr4C,KAAK6Q,GAAG9N,EAAE,CAAC,IAAI+N,EAAEhL,KAAKswC,qBAAqBz3C,IAAImH,KAAKivC,iBAAiBjkC,IAAIA,EAAE,GAAGhL,KAAKswC,qBAAqB52C,IAAIsG,KAAKivC,gBAAgBjkC,IAAIA,EAAE9Q,KAAK6Q,EAAE,CAACxO,EAAErC,KAAKoD,GAAGd,EAAEtC,KAAK6Q,EAAE,CAAO,GAAG/O,EAAE,CAAC,IAAIe,EAAE,EAAEC,EAAE,GAAGhB,EAAEwa,SAAQxL,IAAI,IAAIC,EAAiB,iBAARD,EAAElO,KAAe,CAACkO,EAAElO,MAAMkO,EAAElO,KAAK,GAAc,IAAXmO,EAAEhR,OAAW,OAAO,IAAIiR,EAAED,EAAEhR,QAAQ,EAAW,EAATgR,EAAEhR,OAAS,GAAG8C,EAAEiY,KAAKmD,KAAKpb,EAAEmO,GAAGA,EAAElO,EAAE9C,KAAK6C,GAAGA,GAAGkO,EAAEhR,OAAO,EAAwB,GAAtB+a,KAAKmD,KAAKlN,EAAEhR,OAAO,GAAe,EAATgR,EAAEhR,MAAO,IAAI,IAAIgD,EAAE,GAAGF,EAAEiY,KAAKmD,KAAKpb,EAAEE,GAAGA,EAAE,IAAIK,EAAE,IAAI8E,YAAYrF,GAAGf,EAAEwa,SAAQ,CAACxL,EAAEC,KAAK,IAAIC,EAAElO,EAAEiO,GAAGE,EAAkB,iBAARH,EAAElO,KAAe,CAACkO,EAAElO,MAAMkO,EAAElO,KAAc,UAATkO,EAAEpM,KAAe,IAAIS,WAAW/B,EAAE4N,EAAEC,EAAGlR,QAAQP,IAAIyR,GAAa,WAATH,EAAEpM,KAAgB,IAAIW,YAAYjC,EAAE4N,EAAEC,EAAGlR,QAAQP,IAAIyR,GAAI,IAAIzN,aAAaJ,EAAE4N,EAAEC,EAAGlR,QAAQP,IAAIyR,EAAE,IAAI,IAAIJ,EAAE/K,KAAKmwC,eAAehuC,OAAOpF,EAAE4jC,eAAeC,SAASD,eAAe8B,SAASziC,KAAKwgC,OAAO8Q,MAAMkB,YAAYznC,EAAExB,OAAO,EAAEjM,EAAE,EAAEP,GAAGiD,KAAKmwC,eAAejuC,QAAQ6I,EAAEuU,IAAI7iB,EAAE,CAACg2C,OAAO,EAAE/xC,KAAK3D,EAAEwM,OAAOwB,EAAExB,OAAO,CAAC,IAAI7M,EAAEsD,KAAKowC,eAAexB,2BAA2B7yC,GAAGY,EAAS,IAAPD,EAAE,IAAe,IAAPA,EAAE,GAAOE,EAAEw3B,GAAG57B,EAAEI,EAAE+D,GAAGE,EAAEmD,KAAKowC,eAAe/C,YAAYzwC,GAAG,GAAGC,IAAIA,EAAEmD,KAAKowC,eAAe7B,MAAM/1C,EAAEkE,GAAGsD,KAAKowC,eAAe9C,YAAY1wC,EAAEC,GAAGkkB,GAAG,QAAO,IAAI,mBAAmBnkB,mBAAmBpE,EAAEgC,UAASumB,GAAG,QAAO,IAAI,yBAAyBvoB,EAAEgC,cAAcoC,WAAWF,EAAE,MAAMA,EAAE,MAAMA,EAAE,OAAuB,SAAjBsD,KAAKsuC,UAAmB,CAAC,IAAIvxC,EAAE,CAAC00C,SAASzxC,KAAKivC,gBAAgB2C,YAAY/0C,EAAE0wC,YAAY/yC,KAAKq3C,iBAAiBj5C,EAAEk5C,kBAAkBv1C,GAAGyD,KAAKovC,eAAel1C,KAAK6C,EAAE,CAAC,OAAOiD,KAAKowC,eAAeruC,IAAIlF,EAAEtC,EAAEiC,EAAEE,EAAED,GAAGlF,EAAGiB,EAAEgC,MAAM+B,CAAC,CAAC,MAAAqlC,CAAOppC,EAAEI,GAAGoH,KAAKmwC,eAAevO,OAAOppC,EAAEI,EAAE,CAAC,MAAAwpC,CAAO5pC,EAAEI,GAAGoH,KAAKmwC,eAAe/N,OAAO5pC,EAAEI,EAAE,CAAC,cAAM6F,CAASjG,EAAEI,SAASoH,KAAKmwC,eAAe1xC,SAASjG,EAAEI,EAAE,CAAC,KAAA85C,CAAMl6C,GAAG,OAAOwH,KAAKmwC,eAAehuC,OAAO3J,GAAG8mB,EAAE,CAAC,IAAAqzB,CAAKn6C,GAAG,OAAOwH,KAAKmwC,eAAejuC,QAAQ1J,EAAE,CAAC,YAAAo6C,CAAap6C,EAAEI,EAAEI,EAAEC,GAAG,IAAIe,EAAEi6B,GAAGp7B,IAAIL,GAAG,IAAIwB,EAAE,MAAM,IAAIH,MAAM,2BAA2BrB,KAAK,IAAI+B,EAAE,CAACm3C,WAAWl5C,EAAEm5C,WAAW14C,EAAE45C,YAAY74C,EAAE,GAAG84C,WAAW,CAAC94C,EAAE,GAAGhB,IAAIgH,KAAKqwC,QAAQ32C,IAAId,EAAE2B,EAAE,CAAC,aAAAw4C,CAAcv6C,GAAG,IAAII,EAAEoH,KAAKswC,qBAAqBz3C,IAAIL,GAAG,GAAGI,EAAE,CAAC,IAAI,IAAII,KAAKJ,EAAEoH,KAAKmwC,eAAejuC,QAAQlJ,EAAEsmB,IAAItf,KAAKswC,qBAAqBhO,OAAO9pC,EAAE,CAACwH,KAAKiqC,iBAAiB3H,OAAO9pC,GAAGwH,KAAKqwC,QAAQ/N,OAAO9pC,EAAE,CAAC,aAAAw6C,CAAcx6C,EAAEI,EAAEI,GAAG,IAAIC,EAAE+G,KAAKqwC,QAAQx3C,IAAIL,GAAG,IAAIS,EAAE,MAAM,IAAIY,MAAM,uBAAuBrB,KAAK,IAAIwB,EAAEf,EAAEy4C,WAAWn3C,EAAEtB,EAAE04C,WAAWz1C,EAAEjD,EAAE45C,YAAY92C,EAAE9C,EAAE65C,WAAW,GAA0B,OAAvB9yC,KAAKivC,gBAAuB,MAAM,IAAIp1C,MAAM,YAAYG,MAAMO,8CAA8CyF,KAAKivC,gBAAgBz2C,EAAEuD,EAAE,KAAKA,EAAE,GAAGA,EAAE,GAAGA,EAAE,IAAIA,EAAE,QAAG,GAAQglB,GAAG,QAAO,IAAI,kCAAkC/mB,MAAMO,UAAS,IAAIyB,EAAEgE,KAAKyE,IAAI8rC,MAAMvwC,KAAKuyC,cAAc,GAAG,IAAI,OAAOv2C,GAAGgE,KAAKwgC,OAAOyS,eAAe,cAAc/2C,EAAEtD,EAAEmD,EAAE,IAAI,CAAC,CAAC,MAAMO,GAAG,OAAOtD,EAAEkB,KAAKiE,QAAQuJ,QAAQ,qBAAqB1N,MAAMO,cAAc+B,MAAM,CAAC,CAAC,QAAQN,GAAGhD,EAAEkB,KAAK8F,KAAKwgC,OAAO0S,gBAAgBpmC,MAAKxQ,GAAGA,EAAE,qCAAqCtC,MAAMO,OAAO+B,EAAE6U,UAAU,QAAO,IAAI,IAAI7U,KAAK0D,KAAKuyC,cAAcvyC,KAAKmwC,eAAejuC,QAAQ5F,EAAEgjB,IAAItf,KAAKuyC,cAAc,GAAGvyC,KAAKivC,gBAAgB,IAAI,CAAC,CAAC,cAAA3mC,CAAe9P,EAAEI,EAAEI,EAAEC,GAAG,IAAIe,EAAEgG,KAAKsvC,2BAA2Bz2C,IAAIL,GAAGwB,IAAIA,EAAE,IAAIV,IAAI0G,KAAKsvC,2BAA2B51C,IAAIlB,EAAEwB,IAAI,IAAIO,EAAEP,EAAEnB,IAAID,GAAGsD,EAAE8D,KAAKmwC,eAAe9N,uBAAuBrpC,EAAEC,EAAEsB,IAAI,IAAI,OAAOP,EAAEN,IAAId,EAAE,CAACsD,EAAElD,IAAIkD,CAAC,CAAC,iBAAAsM,CAAkBhQ,GAAG,IAAII,EAAEoH,KAAKsvC,2BAA2Bz2C,IAAIL,GAAGI,IAAIA,EAAE4d,SAAQxd,GAAGgH,KAAKmwC,eAAe5N,yBAAyBvpC,EAAE,MAAKgH,KAAKsvC,2BAA2BhN,OAAO9pC,GAAG,CAAC,SAAAkQ,CAAUlQ,GAAG,IAAII,EAAEoH,KAAKmwC,eAAet3C,IAAIL,GAAG,IAAII,EAAE,MAAM,IAAIiB,MAAM,2BAA2BrB,KAAK,OAAOI,EAAE2Q,MAAM,CAAC,gBAAAX,CAAiBpQ,EAAEI,EAAEI,GAAG,OAAOmB,UAAU,IAAIlB,QAAQ0jB,GAAG3c,KAAKxH,EAAEI,GAAG,OAAOooB,GAAG/nB,EAAEsQ,OAAOvQ,EAAC,CAAE,CAAC,cAAAy0C,CAAej1C,GAAoB,kBAAjBwH,KAAKsuC,WAA6BtuC,KAAKmvC,mBAAmB1B,eAAeztC,KAAK2wC,SAASn4C,EAAE,CAAC,YAAAk4C,GAAe1wC,KAAKsuC,UAAU,QAA0C,YAAlCtuC,KAAKyE,IAAIxJ,OAAO+2C,WAAWliC,MAAkB9P,KAAKyE,IAAI1J,KAAKuG,SAAStB,KAAKwgC,OAAOgO,SAASvQ,IAAI,uDAAuDj+B,KAAKsuC,UAAU,gBAAgBtuC,KAAKwgC,OAAOgO,SAASvQ,IAAI,qBAAqBj+B,KAAKsuC,UAAU,aAAa,EAAC,IAAQ6E,GAAG,CAAC,EAAEx6C,EAAGw6C,GAAG,CAAC55C,KAAK,IAAI65C,KAAK,IAAIC,GAAGr/B,GAAGo/B,GAAwjGE,GAAGC,GAAGC,GAAGC,GAAGC,GAAGj2B,GAAGk2B,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAi85SC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGzsC,GAAGb,GAAGutC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAy+EC,GAAGC,GAAGC,GAAmnDC,GAAGC,GAA/qoTC,GAAGh9C,GAAE,KAAkBmnC,KAAKuP,KAAK7O,KAAK4C,KAAKsQ,GAAG,MAAM96C,EAAE,WAAAwH,CAAYvH,EAAEI,EAAEI,EAAEC,GAAG+G,KAAKq8B,OAAO7jC,EAAEwH,KAAKlB,SAASlG,EAAEoH,KAAKlD,KAAK9D,EAAEgH,KAAKrE,KAAK1C,CAAC,CAAC,eAAAgwC,GAAkB,GAAmB,IAAhBjpC,KAAKlB,SAAa,MAAM,IAAIjF,MAAM,qBAAqB,IAAIrB,EAAEkiB,GAAEha,KAAKV,KAAKrE,MAAM,OAAW,IAAJnD,EAAM,IAAIkF,aAAa,IAAIA,aAAasC,KAAKq8B,OAAO/wB,MAAM/B,OAAOvJ,KAAKlD,KAAKtE,EAAE,CAAC,gBAAAkvC,GAAmB,GAAmB,IAAhB1nC,KAAKlB,SAAa,MAAM,IAAIjF,MAAM,qBAAqB,IAAIrB,EAAEkiB,GAAEha,KAAKV,KAAKrE,MAAM,OAAW,IAAJnD,EAAM,IAAIgH,cAAc,IAAIA,cAAcQ,KAAKq8B,OAAO/wB,MAAM/B,OAAOvJ,KAAKlD,KAAKtE,EAAE,CAAC,aAAAiyC,GAAgB,GAAmB,IAAhBzqC,KAAKlB,SAAa,MAAM,IAAIjF,MAAM,qBAAqB,IAAIrB,EAAEkiB,GAAEha,KAAKV,KAAKrE,MAAM,OAAW,IAAJnD,EAAM,IAAI6G,WAAW,IAAIA,WAAWW,KAAKq8B,OAAO/wB,MAAM/B,OAAOvJ,KAAKlD,KAAKtE,EAAE,CAAC,OAAA2I,CAAQ3I,GAAG,GAAGkiB,GAAEha,KAAKlI,KAAKkiB,GAAEha,KAAKV,KAAKrE,MAAM,MAAM,IAAI9B,MAAM,qBAAqB,OAAO,IAAItB,EAAEyH,KAAKq8B,OAAOr8B,KAAKlB,SAASkB,KAAKlD,KAAKtE,EAAE,GAAGwb,GAAG,MAAM,WAAAjU,CAAYvH,EAAEI,EAAEI,GAAGgH,KAAKq8B,OAAO7jC,EAAEwH,KAAKrG,QAAQf,EAAEoH,KAAKu1C,iBAAiB,EAAEv1C,KAAKw1C,eAAe,EAAE,IAAIv8C,EAAET,EAAEmT,QAAQ3R,EAAEhB,IAAI,EAAEgH,KAAKy1C,gBAAgBx8C,EAAEe,KAAK,IAAIO,EAAEtB,EAAEe,KAAKgG,KAAK8oC,YAAY7vC,EAAEe,KAAKgG,KAAKu1C,iBAAiBt8C,EAAEe,KAAKgG,KAAKw1C,eAAev8C,EAAEe,KAAK,IAAIkC,EAAE,GAAG,IAAI,IAAIH,EAAE,EAAEA,EAAExB,EAAEwB,IAAI,CAAC,IAAIC,EAAE/C,EAAEe,KAAKsC,EAAErD,EAAEe,KAAKuC,EAAEtD,EAAEe,KAAKwC,EAAE,GAAG,IAAI,IAAIC,EAAE,EAAEA,EAAEF,EAAEE,IAAID,EAAEtC,KAAKjB,EAAEe,MAAMkC,EAAEhC,KAAK,IAAIm5C,GAAG76C,EAAEwD,EAAEM,EAAEE,GAAG,CAACwD,KAAK+mC,OAAO7qC,CAAC,CAAC,oBAAI+tC,GAAmB,OAAOjqC,KAAKrG,QAAQ41C,uBAAuB,CAAC,oBAAI9C,GAAmB,OAAOzsC,KAAKq8B,OAAO7wB,OAAOgC,SAASxN,KAAKu1C,iBAAiBv1C,KAAKu1C,iBAAiBv1C,KAAKw1C,eAAe,CAAC,OAAAxO,CAAQxuC,EAAEI,GAAG,IAAII,EAAEJ,GAAGmuC,QAAQrsC,KAAIwB,GAAa,iBAAHA,EAAY8D,KAAK+mC,OAAO7qC,GAAGA,KAAI8D,KAAK+mC,OAAO9tC,EAAEL,GAAG+tC,SAAS,GAA6N,OAAO3mC,KAAKrG,QAAQoI,IAAIvJ,EAAEQ,EAAEC,GAApP,CAACiD,EAAEH,EAAEC,IAAI,IAAIq3C,GAAGrzC,KAAKq8B,OAAOtgC,EAAEiE,KAAK01C,OAAOx5C,EAAEF,GAAGA,KAAK,CAACE,EAAEH,KAAK,IAAIC,EAAEokB,GAAGlkB,GAAG,IAAIF,EAAE,MAAM,IAAInC,MAAM,0BAA0BqC,KAAK,IAAII,EAAEN,EAAE0e,GAAEha,KAAK3E,GAAG,OAAO,IAAIs3C,GAAGrzC,KAAKq8B,OAAOngC,EAAE8D,KAAKrG,QAAQw2C,eAAehuC,OAAO7F,GAAGgjB,GAAGvjB,EAAC,GAAqC,CAAC,MAAA25C,CAAOl9C,EAAEI,GAAG,IAAII,EAAEgH,KAAKq8B,OAAOne,YAAY,IAAI,IAAIjlB,EAAE+G,KAAKq8B,OAAOpe,WAAwB,GAAZ,EAAErlB,EAAEqB,SAAWD,EAAEf,GAAG,EAAE+G,KAAKq8B,OAAO1wB,QAAQ3R,KAAKpB,EAAEqB,OAAO,IAAI,IAAIM,EAAE,EAAEA,EAAE3B,EAAEqB,OAAOM,IAAIyF,KAAKq8B,OAAO1wB,QAAQ3R,KAAKpB,EAAE2B,GAAG,OAAOyF,KAAKq8B,OAAO3f,YAAY1c,KAAKy1C,gBAAgBj9C,EAAES,EAAE,CAAC,MAAMA,GAAG,MAAM,IAAIY,MAAM,sCAAsCrB,iBAAiBI,+GAA+GK,IAAI,CAAC,QAAQ+G,KAAKq8B,OAAOle,aAAanlB,EAAE,CAAC,GAAGo6C,GAAGj5C,MAAM5B,EAAEC,EAAEI,KAAK,IAAII,EAAET,EAAE4N,SAAS,IAAInN,EAAE,MAAM,IAAIa,MAAM,qFAAqF,IAAIZ,EAAE,IAAIo7B,SAASp7B,EAAEu2C,WAAWh3C,EAAEI,GAAGI,EAAEC,GAAEe,GAAGf,EAAEy5C,MAAM14C,KAAGA,GAAGf,EAAE05C,KAAK34C,KAAG,CAACA,EAAEO,EAAE2B,EAAEH,GAAE,KAAM,GAAGA,EAAEglB,GAAG,WAAU,IAAI,kCAAkC/mB,UAAUO,WAAW2B,MAAKjD,EAAEmpC,OAAOpoC,EAAEO,OAAO,CAACwmB,GAAG,WAAU,IAAI,yCAAyC/mB,gBAAgBO,WAAW2B,MAAK,IAAIF,EAAEzD,EAAEiT,OAAOgC,SAASxT,IAAI,GAAGA,IAAI,GAAGkC,GAAGjD,EAAE2oC,OAAOrnC,EAAEyB,EAAE,KAAG7B,MAAMH,EAAEO,EAAE2B,KAAK6kB,GAAG,WAAU,IAAI,wCAAwC/mB,iBAAiBO,WAAW2B,YAAWjD,EAAEwF,SAASzE,GAAE,IAAIzB,EAAEiT,OAAOgC,SAASjT,IAAI,GAAGA,IAAI,GAAG2B,IAAE,IAAG,CAAClC,EAAEO,EAAE2B,IAAIjD,EAAE25C,aAAa54C,EAAEO,EAAE2B,EAAE3D,EAAE6lB,aAAa7lB,EAAEqkB,iBAAiBriB,OAAKP,GAAGf,EAAE85C,cAAc/4C,KAAG,CAACA,EAAEO,EAAE2B,EAAEH,KAAKglB,GAAG,WAAU,IAAI,mCAAmC7kB,aAAalC,wBAAwBO,MAAK,IAAIyB,EAAE,IAAIgY,GAAGzb,EAAEU,EAAEsB,GAAG,OAAOtB,EAAE+5C,cAAch5C,EAAEgC,EAAED,EAAC,GAAE,CAAC,IAA4C45C,GAAGr9C,GAAE,KAAkB6lC,KAAKO,KAAKe,KAAKtC,KAAKa,KAAK9gB,KAAKo2B,GAAG,CAAC/6C,EAAEC,KAA0B,IAArBgnB,KAAKzF,SAASxhB,EAAEC,IAAQmnB,GAAG,gCAA+B,EAAG4zB,GAAGp5C,UAAUm5C,GAAG/6C,EAAEwC,KAAKy8B,WAAWlX,GAAG/nB,EAAE6C,UAAS,EAAGo4C,GAAGr5C,MAAM5B,EAAEC,KAAK,GAAO,WAAJA,EAAa,CAAC,UAAU0a,UAAU,MAAMA,UAAU0iC,IAAI,MAAM,IAAI/7C,MAAM,kDAAkD,IAAIjB,QAAQsa,UAAU0iC,IAAIC,iBAAiB,IAAIj9C,EAAE,MAAM,IAAIiB,MAAM,4GAA4G,IAAItB,EAAEwC,KAAK2iC,KAAK,MAAM,IAAI7jC,MAAM,uGAAuG,IAAIb,GAAGs8C,KAAKv8C,EAAGo6C,KAAK55C,WAAWP,EAAEwmB,KAAKjnB,EAAEK,EAAE,GAAG66C,GAAG,IAAIn6C,IAAIo6C,GAAGn7C,IAAI,IAAIC,EAAEgnB,KAAK5mB,EAAEJ,EAAE0lB,YAAY,IAAI,IAAIllB,EAAER,EAAEylB,WAAW,GAAG,OAA4C,IAArCzlB,EAAEsiB,wBAAwBviB,EAAES,EAAEA,EAAE,IAAQ2mB,GAAG,yCAAyC,CAACnnB,EAAEkT,OAAO1S,EAAE,GAAGR,EAAEkT,OAAO1S,EAAE,EAAE,GAAG,CAAC,QAAQR,EAAE2lB,aAAavlB,EAAE,GAAG6kB,GAAGllB,IAAI,IAAIC,EAAEgnB,KAAK5mB,EAAEJ,EAAEukB,QAAQxkB,EAAE+J,YAAY,GAAO,IAAJ1J,EAAM,MAAM,IAAIiB,MAAM,+DAA+DtB,EAAE+J,eAAe,OAAO9J,EAAEgT,OAAO9R,IAAInB,EAAEK,GAAG,CAACA,EAAEL,EAAE+J,WAAU,EAAGqxC,GAAGx5C,MAAM5B,EAAEC,KAAK,IAAII,EAAEI,EAAEC,EAAEumB,KAAKjf,MAAMC,QAAQjI,IAAIK,EAAEI,GAAGT,EAAEA,EAAEgR,SAAStQ,EAAEuS,OAAOjC,QAAQ3Q,EAAEI,GAAG,CAACT,EAAEspC,WAAWtpC,EAAE+J,aAAa1J,EAAEI,GAAGykB,GAAGllB,GAAG,IAAIyB,EAAE,EAAEO,EAAE,EAAE2B,EAAE,EAAEH,EAAE,GAAGC,EAAE,GAAGM,EAAE,GAAG,IAAI,IAAI/B,EAAEwB,GAAGkkB,GAAGznB,GAAGA,GAAGs9C,cAAc78C,EAAE+M,kBAAkB,CAAC,IAAInJ,EAAE,GAAG,IAAI,IAAIE,KAAKvE,EAAEs9C,aAAa,CAAC,IAAI94C,EAAY,iBAAHD,EAAYA,EAAEA,EAAEg5C,KAAKl5C,EAAE3C,KAAKsmB,GAAa,iBAAHzjB,EAAYA,EAAEA,EAAED,MAAMgQ,MAAK7P,IAAIhE,EAAE+M,kBAAkBhJ,EAAEC,EAAC,IAAI,OAAOkB,QAAQ6J,IAAInL,EAAE,CAAC7C,EAAEf,EAAE0hB,kBAAkB/hB,EAAEI,EAAEuB,GAAO,IAAJP,GAAO2lB,GAAG,2BAA2B,IAAIpjB,EAAEC,GAAGk3C,GAAG15C,GAAGyC,EAAE,GAAGC,EAAE,GAAGC,EAAE,GAAG,IAAI,IAAIE,EAAE,EAAEA,EAAEN,EAAEM,IAAI,CAAC,IAAIE,EAAE9D,EAAE8hB,iBAAiB/gB,EAAE6C,GAAO,IAAJE,GAAO4iB,GAAG,4BAA4B3jB,EAAE9B,KAAK6C,GAAGN,EAAEvC,KAAKjB,EAAEmlB,aAAarhB,GAAG,CAAC,IAAI,IAAIF,EAAE,EAAEA,EAAEL,EAAEK,IAAI,CAAC,IAAIE,EAAE9D,EAAE+hB,kBAAkBhhB,EAAE6C,GAAO,IAAJE,GAAO4iB,GAAG,6BAA6BrjB,EAAEpC,KAAK6C,GAAG,IAAIC,EAAE/D,EAAEmlB,aAAarhB,GAAGL,EAAExC,KAAK8C,GAAG,CAAC,IAAIC,EAAqC,iBAA5BzE,GAAGw9C,wBAAkCx9C,EAAEw9C,wBAAwBx9C,GAAGw9C,0BAA0Bh5C,IAAI,MAAM,GAAO,QAAJC,GAAe,eAAJA,GAAsB,eAAJA,EAAiB,MAAM,IAAIpD,MAAM,4CAA4CoD,MAAMN,EAAEzC,KAAK+C,EAAE,CAAC,CAAC,IAAIL,EAAE,KAAK,OAAOD,EAAEkiC,MAAKhiC,GAAO,eAAJA,MAAoBX,EAAEjD,EAAE4iB,kBAAkB7hB,GAAO,IAAJkC,GAAOyjB,GAAG,4BAA4B/iB,EAAE,CAACq5C,OAAO/5C,EAAEg6C,yBAAyBv5C,EAAEw5C,gCAAgCx5C,EAAEjC,KAAImC,GAAG+e,GAAG/e,OAAM42C,GAAG/5C,IAAIM,EAAE,CAACA,EAAEgC,EAAEM,EAAEM,IAAI,CAAC5C,EAAEyC,EAAEC,EAAE,CAAC,MAAMH,GAAG,MAAMP,EAAEwa,SAAQha,GAAGvD,EAAEgiB,SAASze,KAAIF,EAAEka,SAAQha,GAAGvD,EAAEgiB,SAASze,KAAQ,IAAJN,GAAOjD,EAAEmjB,mBAAmBlgB,GAAO,IAAJlC,GAAOf,EAAE4hB,mBAAmB7gB,GAAGuC,CAAC,CAAC,QAAQtD,EAAE+jB,MAAMpkB,GAAO,IAAJ2B,GAAOtB,EAAEwhB,0BAA0BlgB,GAAGwB,EAAEya,SAAQja,GAAGtD,EAAE+jB,MAAMzgB,KAAItD,EAAEiN,uBAAuB,GAAG0tC,GAAGr7C,IAAI,IAAIC,EAAEgnB,KAAK5mB,EAAE66C,GAAG56C,IAAIN,GAAG,IAAIK,EAAE,MAAM,IAAIiB,MAAM,+CAA+CtB,KAAK,IAAIS,EAAEC,EAAEe,EAAEO,GAAG3B,EAAE2B,GAAG/B,EAAE4jB,mBAAmB7hB,EAAE07C,QAAQz9C,EAAE+P,wBAAwBhQ,GAAGU,EAAEud,SAAQta,GAAG1D,EAAEyiB,SAAS/e,KAAIlC,EAAEwc,SAAQta,GAAG1D,EAAEyiB,SAAS/e,KAAI1D,EAAEqiB,mBAAmB7hB,GAAGy6C,GAAGnR,OAAO/pC,EAAC,EAAGs7C,GAAG,CAACt7C,EAAEC,EAAEI,EAAEI,EAAEC,KAAK,IAAIV,EAAa,YAAVC,EAAE0B,KAAK,GAAU,IAAgC8B,EAAEM,EAA9BtC,EAAEwlB,KAAKjlB,EAAEhC,EAAE,GAAG2D,EAAE3D,EAAE,GAAGwD,EAAExD,EAAE,GAAO,GAAO,WAAJgC,GAAkB,eAAJwB,EAAiB,MAAM,IAAIlC,MAAM,0CAA0C,GAAO,eAAJkC,EAAiB,CAAC,IAAIU,EAAElE,EAAE,GAAGwG,UAAUrC,EAAE0jB,GAAGF,GAAG3lB,IAAI+B,EAAEJ,EAAEouC,QAAO,CAAC3tC,EAAEC,IAAID,EAAEC,GAAE,GAAGF,EAAEV,EAAEhC,EAAEqO,mBAAmBrP,EAAEC,EAAEwD,EAAEH,EAAE,KAAK,CAAC,IAAIG,EAAElE,EAAE,GAAG,GAAGgI,MAAMC,QAAQ/D,GAAG,CAACH,EAAE,EAAEG,EAAExC,OAAO+B,EAAEhC,EAAE+iB,QAAQzgB,GAAG1D,EAAEsB,KAAK8B,GAAG,IAAIU,EAAEV,EAAE,EAAE,IAAI,IAAIW,EAAE,EAAEA,EAAEF,EAAExC,OAAO0C,IAAI,CAAC,GAAgB,iBAANF,EAAEE,GAAa,MAAM,IAAIlD,UAAU,wBAAwBkD,qBAAqB3C,EAAE2R,QAAQjP,KAAK+iB,GAAGhjB,EAAEE,GAAG/D,EAAE,CAAC,MAAM0D,EAAEG,EAAE6F,WAAWtG,EAAEhC,EAAE+iB,QAAQzgB,GAAG1D,EAAEsB,KAAK8B,GAAGhC,EAAEwR,OAAO9R,IAAI,IAAIuF,WAAWxC,EAAE8M,OAAO9M,EAAEolC,WAAWvlC,GAAGN,EAAE,CAAC,IAAIO,EAAEvC,EAAEkkB,YAAY1hB,EAAExC,EAAEikB,WAAW,EAAE/hB,EAAEjC,QAAQ,IAAI,IAAIwC,EAAED,EAAE,EAAEN,EAAEsa,SAAQ7Z,GAAG3C,EAAE0R,OAAOjP,KAAKE,IAAG,IAAID,EAAE1C,EAAEkhB,iBAAiBgF,GAAG3lB,GAAGyB,EAAEM,EAAEE,EAAEN,EAAEjC,OAAO2hB,GAAG7f,IAAQ,IAAJW,GAAOijB,GAAG,iDAAiD3mB,YAAYC,MAAMT,EAAE0B,KAAKwC,EAAE,CAAC,QAAQ1C,EAAEmkB,aAAa5hB,EAAE,GAAGu3C,GAAG35C,MAAM5B,EAAEC,EAAEI,EAAEI,EAAEC,EAAEe,KAAK,IAAIO,EAAEilB,KAAKtjB,EAAEu3C,GAAG56C,IAAIN,GAAG,IAAI2D,EAAE,MAAM,IAAIrC,MAAM,6CAA6CtB,KAAK,IAAIwD,EAAEC,EAAEM,EAAEC,GAAGL,EAAEM,EAAEhE,EAAEyB,OAAOwC,EAAEzD,EAAEiB,OAAOyC,EAAE,EAAEC,EAAE,GAAGC,EAAE,GAAGC,EAAE,GAAGE,EAAE,GAAGC,EAAEzC,EAAE2jB,YAAYjhB,EAAE1C,EAAE0jB,WAAa,EAAFzhB,GAAKc,EAAE/C,EAAE0jB,WAAa,EAAFzhB,GAAKuO,EAAExQ,EAAE0jB,WAAa,EAAFxhB,GAAKuO,EAAEzQ,EAAE0jB,WAAa,EAAFxhB,GAAK,KAAKC,EAAEC,GAAGijB,GAAG5lB,GAAG,IAAI,IAAI+R,EAAE,EAAEA,EAAEvP,EAAEuP,IAAI8nC,GAAGj7C,EAAEmT,GAAGnP,EAAEG,EAAExE,EAAEC,EAAEuT,IAAI,IAAI,IAAIA,EAAE,EAAEA,EAAEtP,EAAEsP,IAAI8nC,GAAG56C,EAAE8S,GAAGlP,EAAEE,EAAExE,EAAEiE,EAAExD,EAAE+S,IAAI,IAAuvBV,EAAnvBJ,EAAEhO,EAAE,EAAEiO,EAAE5N,EAAE,EAAE6N,EAAGJ,EAAE,EAAEK,EAAEJ,EAAE,EAAE,IAAI,IAAIe,EAAE,EAAEA,EAAEvP,EAAEuP,IAAIxR,EAAEoR,QAAQV,KAAKrO,EAAEmP,GAAGxR,EAAEoR,QAAQT,KAAKlP,EAAExD,EAAEuT,IAAI,IAAI,IAAIA,EAAE,EAAEA,EAAEtP,EAAEsP,IAAIxR,EAAEoR,QAAQR,KAAMtO,EAAEkP,GAAGxR,EAAEoR,QAAQP,KAAK9O,EAAEtD,EAAE+S,IAAI,GAAGxP,EAAE,CAAC,IAAI05C,OAAOlqC,EAAEmqC,yBAAyBlqC,EAAGmqC,gCAAgClqC,GAAI1P,EAAE,GAAGP,EAAE/B,SAASuC,EAAE,MAAM,IAAI3C,MAAM,2BAA2B2C,6DAA6DR,EAAE/B,YAAY,IAAI,IAAIiS,EAAG,EAAEA,EAAG1P,EAAE0P,IAAK,CAAC,IAAIC,EAAG3T,EAAE0T,GAA2C,UAAjC3R,EAAE6N,cAAc2D,EAAE/P,EAAEmQ,GAAIvP,EAAEsP,KAAUyT,GAAG,oBAAoBzT,kBAAmB3T,KAAK,CAAC,IAAI,IAAI2T,EAAG,EAAEA,EAAGzP,EAAEyP,IAAK,CAAC,IAAIC,EAAGnT,EAAEkT,GAAIjT,EAAEiT,KAAM,GAAuC,IAApC3R,EAAEyhB,eAAejQ,EAAEzP,EAAE6P,GAAItP,EAAEqP,GAAI,IAAQyT,GAAG,mCAAmCzT,kBAAmB3T,MAA2C,IAArCgC,EAAEyhB,eAAejQ,EAAEzP,EAAE6P,GAAI,EAAEF,EAAGE,KAAUwT,GAAG,qBAAqBzT,SAAUF,EAAGE,kBAAmB3T,KAAK,CAAC,CAAS8S,EAAF9O,QAAUhC,EAAE4N,mBAAmBpM,EAAEQ,EAAE05C,OAAOx5C,EAAEsO,EAAErO,SAAWnC,EAAE2N,QAAQnM,EAAEuB,EAAEL,EAAET,EAAEwO,EAAEvO,EAAEsO,EAAErO,GAAO,IAAJ2O,GAAOsU,GAAG,4BAA4B,IAAI7T,EAAE,GAAG,IAAI,IAAIC,EAAE,EAAEA,EAAEtP,EAAEsP,IAAI,CAAC,IAAIC,EAAGzR,EAAEoR,QAAQZ,EAAE,EAAEgB,GAAG,GAAGC,IAAKnP,EAAEkP,GAAG,CAACD,EAAE5R,KAAKjB,EAAE8S,IAAI,QAAQ,CAAC,IAAgDjB,EAA5CmB,EAAG1R,EAAE2jB,YAAYhS,EAAG3R,EAAE0jB,WAAW,IAAK9R,GAAG,EAAMG,EAAG,EAAE,IAAiD,IAA7C/R,EAAE4gB,kBAAkBnP,EAAGE,EAAGA,EAAG,EAAEA,EAAG,EAAEA,EAAG,KAASyT,GAAG,4CAA4C5T,MAAM,IAAIM,EAAGH,EAAG,EAAEM,EAAGjS,EAAEoR,QAAQU,KAAMC,EAAG/R,EAAEoR,QAAQU,KAAM,IAAIK,EAAEnS,EAAEoR,QAAQU,KAAMa,EAAG3S,EAAEoR,QAAQU,KAAMM,EAAG,GAAG,IAAI,IAAIU,EAAG,EAAEA,EAAGH,EAAGG,IAAKV,EAAGzS,KAAKK,EAAEoR,QAAQe,EAAE,EAAEW,IAAK9S,EAAE0gB,SAASvO,GAAG,IAAImN,EAAGlN,EAAG29B,QAAO,CAACj9B,EAAG6D,IAAK7D,EAAG6D,GAAG,GAAGpG,EAAGqV,GAAG3T,GAAI,IAAIY,EAAG7Q,GAAG25C,yBAAyBl9C,EAAE+S,IAAI,GAAQ,WAALjB,EAAc,CAAC,GAAQ,eAALsC,EAAkB,MAAM,IAAIvT,MAAM,0CAA0C,IAAIwT,EAAG,GAAG6D,EAAG5E,EAAG,EAAE,IAAI,IAAI8E,EAAG,EAAEA,EAAGyI,EAAGzI,IAAK,CAAC,IAAI4kB,EAAGz7B,EAAEoR,QAAQuF,KAAMolB,EAAGllB,IAAKyI,EAAG,OAAE,EAAOtf,EAAEoR,QAAQuF,GAAI8kB,EAAG3oB,EAAGnT,KAAKK,EAAE6jB,aAAa4X,EAAGM,GAAI,CAACxqB,EAAE5R,KAAK,CAAC4Q,EAAG6B,EAAGU,EAAG,OAAO,MAAM,GAAQ,eAALD,GAAmByM,EAAG,EAAE,CAAC,IAAIxM,EAAG9S,EAAEkO,cAAc6D,GAAI4E,EAAGkP,GAAG5T,GAAI,QAAQ,IAAL0E,IAAcqP,GAAGzV,GAAI,MAAM,IAAIjR,MAAM,0BAA0BiR,KAAMqB,GAAG,EAAGL,EAAE5R,KAAK,CAAC4Q,EAAG6B,EAAG,CAAC5N,UAAUsO,EAAG5O,SAASlE,EAAEoO,qBAAqB0E,EAAGwM,EAAG3I,EAAGpG,GAAIpM,QAAQ,KAAKnE,EAAE8gB,kBAAkBrP,EAAE,GAAI,cAAc,KAAK,CAAC,IAAckF,EAAG,IAAVmP,GAAGvV,GAAO,CAAO+O,GAAI,IAAI5a,WAAWiS,EAAG3H,OAAO2H,EAAG2wB,WAAW3wB,EAAG5O,YAAY5I,IAAIa,EAAEiR,OAAOgC,SAASlB,EAAGA,EAAG4E,EAAG5O,aAAawJ,EAAE5R,KAAK,CAAC4Q,EAAG6B,EAAGuE,EAAG,OAAO,CAAC,CAAC,QAAQ3W,EAAE4jB,aAAalS,GAAS,WAALnB,GAAewB,GAAI/R,EAAEyiB,MAAM1Q,GAAIH,GAAI5R,EAAE8gB,kBAAkBrP,EAAG,CAAC,CAAC,OAAOzP,GAAGhC,EAAE2hB,sBAAsB3f,EAAE05C,QAAQnqC,CAAC,CAAC,QAAQvR,EAAE4jB,aAAanhB,GAAGJ,EAAE4Z,SAAQvL,GAAG1Q,EAAE8gB,kBAAkBpQ,KAAIpO,EAAE2Z,SAAQvL,GAAG1Q,EAAE8gB,kBAAkBpQ,KAAIlO,EAAEyZ,SAAQvL,GAAG1Q,EAAEyiB,MAAM/R,KAAQ,IAAJvO,GAAOnC,EAAEohB,sBAAsBjf,GAAGC,EAAE6Z,SAAQvL,GAAG1Q,EAAEyiB,MAAM/R,IAAG,GAAG8oC,GAAGx7C,IAAI,IAAIC,EAAEgnB,KAAK5mB,EAAE66C,GAAG56C,IAAIN,GAAG,IAAIK,EAAE,MAAM,IAAIiB,MAAM,sBAAsB,IAAIb,EAAEJ,EAAE,GAAGK,EAAET,EAAEgkB,iBAAiBxjB,GAAO,IAAJC,GAAO0mB,GAAG,mCAAmCnnB,EAAEyiB,SAAShiB,EAAC,EAAG+6C,GAAGz7C,IAAI,IAAIC,EAAE,GAAG,IAAI,IAAII,KAAKL,EAAE,CAAC,IAAIS,EAAEJ,EAAE,IAAI2H,MAAMC,QAAQxH,IAAI,WAAWA,GAAGR,EAAE0B,KAAKlB,EAAEuQ,OAAO,CAAC,OAAO/Q,EAAC,IAAQ49C,GAAG39C,GAAG,CAAC49C,EAAGC,KAAMA,EAAG59C,QAAQ,01sSAAi5sS2Y,GAAG/Y,GAAE,KAAkBqM,KAAKgxC,KAAKxY,KAAK8W,GAAG,MAAM79C,EAAG2E,KAAKw7C,cAAch7C,SAAS,IAAI44C,IAAG,EAAGC,IAAG,EAAGC,IAAG,EAAGttC,GAAG,IAAIzN,IAAIg7C,GAAG,CAAC/7C,EAAEC,KAAK,IAAII,EAAEmO,GAAGlO,IAAIN,GAAGK,EAAEA,EAAEsB,KAAK1B,GAAGuO,GAAGrN,IAAInB,EAAE,CAACC,GAAE,EAAG+7C,GAAG,KAAK,GAAGJ,KAAKC,IAAIC,KAAKH,GAAG,MAAM,IAAIr6C,MAAM,mBAAkB,EAAG26C,GAAGj8C,IAAI,OAAOA,EAAEuE,KAAK8B,MAAM,IAAI,YAAYu1C,IAAG,EAAG57C,EAAEuE,KAAKrC,KAAK45C,IAAG,EAAGzsC,GAAG,GAAGrP,EAAEuE,KAAKrC,OAAO25C,IAAG,EAAGxsC,GAAG,MAAM,MAAM,IAAI,UAAU,IAAI,YAAY,IAAI,SAAS,IAAI,UAAU,IAAI,MAAM,IAAI,gBAAgB,CAAC,IAAIpP,EAAEuO,GAAGlO,IAAIN,EAAEuE,KAAK8B,MAAMrG,EAAEuE,KAAKrC,IAAIjC,EAAEqlB,QAAQ,GAAGtlB,EAAEuE,KAAKrC,KAAKjC,EAAEqlB,QAAQ,GAAGtlB,EAAEuE,KAAK05C,KAAK,KAAK,EAAS,EAAG/B,UAAUl5C,SAAS,IAAIA,UAAUoK,eAAerH,SAAI,EAAOo2C,GAAGv6C,UAAU,IAAIi6C,GAAG,CAAC,GAAGD,GAAG,MAAM,IAAIt6C,MAAM,4CAA4C,GAAGw6C,GAAG,MAAM,IAAIx6C,MAAM,yCAAyC,GAAGs6C,IAAG,EAAGF,KAAK,YAA2B,IAApB79C,EAAG2E,KAAK4iC,WAAoB8W,IAA0B,IAAtBA,GAAG36C,QAAQ,WAAe1D,EAAG2E,KAAK4iC,UAAU8W,GAAGzqC,OAAO,GAAGyqC,GAAGxqC,YAAY,KAAK,IAAI,IAAI9L,SAAQ,CAAC5F,EAAEC,KAAK07C,IAAI1d,YAAY,IAAI59B,EAAEyQ,IAAIy0B,gBAAgB,IAAID,KAAK,CAACuY,MAAM,CAACx3C,KAAK,sBAAqBs1C,GAAG,IAAIpe,OAAOl9B,EAAE,CAAC4B,KAAK,2BAA6BiQ,QAAQxR,GAAGT,EAAES,GAAGi7C,GAAGzd,UAAU+d,GAAGnrC,IAAIotC,gBAAgB79C,GAAGgP,GAAG,CAACrP,EAAEC,GAAG,IAAIQ,EAAE,CAAC4F,KAAK,YAAY83C,GAAGtgD,GAAI89C,GAAGhd,YAAYl+B,EAAC,IAAI,UAAUumB,GAAGnpB,EAAG2E,YAAYw4C,GAAGn9C,GAAIg+C,IAAG,CAAE,CAAC,MAAM77C,GAAG,MAAM87C,IAAG,EAAG97C,CAAC,CAAC,QAAQ47C,IAAG,CAAE,CAAC,GAAGQ,GAAGx6C,UAAU,GAAG85C,KAAK,OAAOM,KAAK,IAAIp2C,SAAQ,CAAC3F,EAAEI,KAAK07C,GAAG,UAAU,CAAC97C,EAAEI,IAAI,IAAII,EAAE,CAAC4F,KAAK,UAAU83C,GAAG,CAACC,OAAOp+C,EAAEkM,IAAIrO,IAAK89C,GAAGhd,YAAYl+B,EAAC,UAAUw6C,GAAGp9C,EAAGmC,EAAC,EAAGq8C,GAAGz6C,SAAS85C,MAAMM,KAAK,IAAIp2C,SAAQ,CAAC3F,EAAEI,KAAK07C,GAAG,YAAY,CAAC97C,EAAEI,IAAI,IAAII,EAAE,CAAC4F,KAAK,YAAY83C,GAAG,CAACntC,OAAOhR,IAAI27C,GAAGhd,YAAYl+B,EAAE,CAACT,EAAEgR,QAAO,KAAKkU,GAAGllB,GAAGs8C,GAAG16C,MAAM5B,EAAEC,KAAK,GAAGy7C,KAAK,CAAC,GAAGz7C,GAAGw9C,wBAAwB,MAAM,IAAIn8C,MAAM,wEAAwE,OAAO06C,KAAK,IAAIp2C,SAAQ,CAACvF,EAAEI,KAAKs7C,GAAG,SAAS,CAAC17C,EAAEI,IAAI,IAAIC,EAAE,CAAC2F,KAAK,SAAS83C,GAAG,CAACE,MAAMr+C,EAAEs+C,QAAQr+C,IAAIwB,EAAE,GAAGzB,aAAa0G,YAAYjF,EAAEE,KAAK3B,EAAEgR,QAAQ2qC,GAAGhd,YAAYj+B,EAAEe,EAAC,GAAG,CAAM,OAAO25C,GAAGp7C,EAAEC,EAAC,EAAGs8C,GAAG36C,UAAU,GAAG85C,KAAK,OAAOM,KAAK,IAAIp2C,SAAQ,CAAC3F,EAAEI,KAAK07C,GAAG,UAAU,CAAC97C,EAAEI,IAAI,IAAII,EAAE,CAAC4F,KAAK,UAAU83C,GAAGn+C,GAAG27C,GAAGhd,YAAYl+B,EAAC,IAAI46C,GAAGr7C,EAAC,EAAGw8C,GAAG56C,MAAM5B,EAAEC,EAAEI,EAAEI,EAAEC,EAAEe,KAAK,GAAGi6C,KAAK,CAAC,GAAGr7C,EAAEimC,MAAKtkC,GAAU,QAAPA,EAAE,KAAY,MAAM,IAAIV,MAAM,mDAAmD,GAAGZ,EAAE4lC,MAAKtkC,GAAGA,IAAG,MAAM,IAAIV,MAAM,2DAA2D,OAAO06C,KAAK,IAAIp2C,SAAQ,CAAC5D,EAAE2B,KAAKo4C,GAAG,MAAM,CAAC/5C,EAAE2B,IAAI,IAAIH,EAAEnD,EAAEoD,EAAE,CAAC4C,KAAK,MAAM83C,GAAG,CAACI,UAAUv+C,EAAEgzC,aAAa/yC,EAAEuuC,OAAOhrC,EAAEg7C,cAAc/9C,EAAE69C,QAAQ78C,IAAIk6C,GAAGhd,YAAYl7B,EAAEg4C,GAAGj4C,GAAE,GAAG,CAAM,OAAO+3C,GAAGv7C,EAAEC,EAAEI,EAAEI,EAAEC,EAAEe,EAAC,EAAGg7C,GAAG76C,UAAU,GAAG85C,KAAK,OAAOM,KAAK,IAAIp2C,SAAQ,CAAC3F,EAAEI,KAAK07C,GAAG,gBAAgB,CAAC97C,EAAEI,IAAI,IAAII,EAAE,CAAC4F,KAAK,gBAAgB83C,GAAGn+C,GAAG27C,GAAGhd,YAAYl+B,EAAC,IAAI+6C,GAAGx7C,EAAC,CAAC,IAAiBy+C,GAAG1+C,GAAE,KAAkBqM,KAAK0M,KAAKouB,KAAKviB,KAAK+3B,GAAG,CAAC18C,EAAEC,KAAK,OAAOD,EAAEoG,UAAU,IAAI,MAAM,MAAM,CAACpG,EAAEqG,KAAKrG,EAAEoD,KAAKpD,EAAEuE,KAAK,OAAO,IAAI,aAAa,MAAM,CAACvE,EAAEqG,KAAKrG,EAAEoD,KAAK,CAACoD,UAAUxG,EAAEwG,WAAW,cAAc,QAAQ,MAAM,IAAIlF,MAAM,0BAA0BtB,EAAEoG,gBAAgBnG,OAAM,EAAG08C,GAAG38C,IAAI,OAAOA,EAAE,IAAI,IAAI,MAAM,OAAO,IAAIpB,EAAGoB,EAAE,GAAGA,EAAE,GAAGA,EAAE,IAAI,IAAI,aAAa,CAAC,IAAIC,EAAED,EAAE,GAAG,IAAIgoB,GAAG/nB,GAAG,MAAM,IAAIqB,MAAM,4BAA4BrB,kCAAkC,IAAIuG,UAAUnG,EAAE6F,SAASzF,EAAE0F,QAAQzF,GAAGV,EAAE,GAAG,OAAOpB,EAAG0J,cAAcjI,EAAE,CAACkG,SAAStG,EAAEmD,KAAKpD,EAAE,GAAGkG,SAASzF,EAAE0F,QAAQzF,GAAG,CAAC,QAAQ,MAAM,IAAIY,MAAM,0BAA0BtB,EAAE,MAAK,EAAG48C,GAAG,MAAM,mCAAM8B,CAA8Bz+C,GAAG,OAAOo8C,SAASp0B,GAAGhoB,GAAG,CAAC,eAAM0+C,CAAU1+C,EAAEI,GAAQ,IAAII,EAAT1B,IAA0F0B,EAArE,iBAAHR,SAAmBwQ,QAAQ,KAAKA,QAAQ9N,UAAU8N,QAAQ9N,SAAS+N,WAAauX,GAAGhoB,SAAWwH,KAAKi3C,8BAA8Bz+C,GAAKA,GAAGwH,KAAK82C,UAAU92C,KAAKiC,WAAWjC,KAAKgC,mBAAmB6yC,GAAG77C,EAAEJ,GAAGrB,GAAI,CAAC,aAAMmH,GAAU,OAAOo2C,GAAG90C,KAAK82C,UAAU,CAAC,SAAM/0C,CAAIvJ,EAAEI,EAAEI,GAAG1B,IAAK,IAAI2B,EAAE,GAAGe,EAAE,GAAGnC,OAAO+gB,QAAQpgB,GAAGge,SAAQha,IAAI,IAAIC,EAAED,EAAE,GAAGE,EAAEF,EAAE,GAAGG,EAAEqD,KAAKiC,WAAWnI,QAAQ2C,GAAG,IAAQ,IAALE,EAAO,MAAM,IAAI9C,MAAM,kBAAkB4C,MAAMxD,EAAEiB,KAAKwC,GAAG1C,EAAEE,KAAKyC,EAAC,IAAI,IAAIpC,EAAE,GAAG2B,EAAE,GAAGrE,OAAO+gB,QAAQhgB,GAAG4d,SAAQha,IAAI,IAAIC,EAAED,EAAE,GAAGE,EAAEF,EAAE,GAAGG,EAAEqD,KAAKgC,YAAYlI,QAAQ2C,GAAG,IAAQ,IAALE,EAAO,MAAM,IAAI9C,MAAM,mBAAmB4C,MAAMlC,EAAEL,KAAKwC,GAAGR,EAAEhC,KAAKyC,EAAC,IAAI,IAAIZ,EAAE9C,EAAEyB,KAAI,CAAC8B,EAAEC,IAAIw4C,GAAGz4C,GAAE,IAAI,UAAUwD,KAAKiC,WAAWjI,EAAEyC,WAAST,EAAEzB,EAAEG,KAAI,CAAC8B,EAAEC,IAAID,EAAEy4C,GAAGz4C,GAAE,IAAI,WAAWwD,KAAKgC,YAAY9F,EAAEO,SAAQ,OAAMH,QAAQy4C,GAAG/0C,KAAK82C,UAAU98C,EAAE+B,EAAEG,EAAEF,EAAEhD,GAAGuD,EAAE,CAAC,EAAE,IAAI,IAAIC,EAAE,EAAEA,EAAEF,EAAErC,OAAOuC,IAAID,EAAEyD,KAAKgC,YAAY9F,EAAEM,KAAKjC,EAAEiC,IAAI04C,GAAG54C,EAAEE,IAAI,OAAOjF,IAAKgF,CAAC,CAAC,cAAAiG,GAAiB,CAAC,YAAAC,GAAeuyC,GAAGh1C,KAAK82C,UAAU,EAAC,IAAcK,GAAG7+C,GAAE,KAAkBqM,KAAK0M,KAAK2lC,KAAK5B,GAAG,KAAK,IAAgC,iBAArBh/C,EAAG2E,KAAK0iC,aAAuBrnC,EAAG2E,KAAK0iC,YAAY,KAAKrnC,EAAG2E,KAAK0iC,YAAY,GAAwB,kBAAdrnC,EAAG2E,KAAK2iC,OAAkBtnC,EAAG2E,KAAK2iC,MAAK,GAA0B,kBAAftnC,EAAG2E,KAAKw7C,QAAmBngD,EAAG2E,KAAKw7C,OAAM,GAA0B,kBAAfngD,EAAG2E,KAAKuG,QAAmBlL,EAAG2E,KAAKuG,OAAM,GAA+B,iBAApBlL,EAAG2E,KAAKy8B,aAAuB53B,OAAOy+B,UAAUjoC,EAAG2E,KAAKy8B,aAAaphC,EAAG2E,KAAKy8B,YAAY,EAAE,SAAS1tB,KAAK,MAAMA,KAAKszB,4BAA4Bp0B,QAAQ,KAAKA,QAAQ9N,UAAU8N,QAAQ9N,SAAS+N,QAAQ7S,EAAG2E,KAAKy8B,WAAW,GAAG,IAAIj/B,SAAS2a,UAAU,UAAI,KAAWjZ,OAAOiZ,UAAU8oB,oBAAoB5lC,EAAG2E,KAAKy8B,WAAWxiB,KAAKvH,IAAI,EAAEuH,KAAKmD,MAAM5f,GAAG,GAAG,GAAG,GAAG88C,GAAG,MAAM,UAAM97C,CAAKf,GAAG48C,WAAWV,WAAWC,GAAGn8C,EAAE,CAAC,mCAAMgB,CAA8BhB,EAAEI,GAAG,IAAII,EAAE,IAAIm8C,GAAG,aAAan8C,EAAEk+C,UAAU1+C,EAAEI,GAAGuF,QAAQuJ,QAAQ1O,EAAE,EAAC,IAAQo+C,GAAG,CAAC,EAAEz+C,EAAGy+C,GAAG,CAACC,YAAY,IAAIC,KAAK,IAAIA,GAAGC,GAAGj/C,GAAE,KAAkB6+C,KAAKG,GAAG,IAAIjC,MAAK1wC,KAAKA,KAAKA,KAAK,IAAoB6yC,GAAGtzC,GAAG,CAAC,IAAI3L,GAAGg/C,KAAKx+C,EAAGq+C,KAAKC,YAAYthD,EAAG,SAASwC,EAAE,GAAGxC,EAAG,MAAMwC,EAAE,IAAIxC,EAAG,OAAOwC,EAAE,GAAG,CAACV,OAAOC,eAAe1B,EAAG8E,SAAS,MAAM,CAAC9B,MAA7I,SAAsJN,YAAW,G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KCzjEjp/T2+C,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAal/C,QAGrB,IAAI2jC,EAASob,EAAyBE,GAAY,CAGjDj/C,QAAS,CAAC,GAOX,OAHAo/C,EAAoBH,GAAUtb,EAAQA,EAAO3jC,QAASg/C,GAG/Crb,EAAO3jC,OACf,CCrBAg/C,EAAoB5xC,EAAI,CAACpN,EAASq/C,KACjC,IAAI,IAAIlV,KAAOkV,EACXL,EAAoB19C,EAAE+9C,EAAYlV,KAAS6U,EAAoB19C,EAAEtB,EAASmqC,IAC5EhrC,OAAOC,eAAeY,EAASmqC,EAAK,CAAE/pC,YAAY,EAAMD,IAAKk/C,EAAWlV,IAE1E,ECND6U,EAAoB19C,EAAI,CAACg+C,EAAKC,IAAUpgD,OAAOO,UAAUC,eAAea,KAAK8+C,EAAKC,GCClFP,EAAoB9+C,EAAKF,IACH,oBAAXw/C,QAA0BA,OAAOC,aAC1CtgD,OAAOC,eAAeY,EAASw/C,OAAOC,YAAa,CAAE/+C,MAAO,WAE7DvB,OAAOC,eAAeY,EAAS,aAAc,CAAEU,OAAO,GAAO,E;;;;yGCI9D,MAAMg/C,EAAY,IACZC,EAAa,IAGbC,EAAc,KACdC,EAAe,KAEfC,EAAS,CACXC,MAAO,CACH,CACIj+C,KAAM,gBACNk+C,IAAK,6FACLh4C,KAAM,KAEV,CACIlG,KAAM,gBACNk+C,IAAK,wFACLh4C,KAAM,KAGdi4C,QAAS,CACL,CACIn+C,KAAM,kBACNk+C,IAAK,yFACLh4C,KAAM,IAEV,CACIlG,KAAM,kBACNk+C,IAAK,sGACLh4C,KAAM,MAKZk4C,EAwBN,WACI,MAAMC,EAAQ/vC,OAAOnK,SAASm6C,OAAOvrC,UAAU,GAC/C,IAAIqrC,EAAS,CACThC,MAAO,QACPmC,SAAU,SACVvY,OAAQ,MACRwY,QAAS,KAEb,IAAIC,EAAOJ,EAAMn3C,MAAM,KACvB,IAAK,IAAI3F,EAAI,EAAGA,EAAIk9C,EAAKh/C,OAAQ8B,IAAK,CAClC,IAAIm9C,EAAOD,EAAKl9C,GAAG2F,MAAM,KACzB,GAAIw3C,EAAK,KAAMN,EACXA,EAAOM,EAAK,IAAMC,mBAAmBD,EAAK,SACvC,GAAIA,EAAK,GAAGj/C,OAAS,EACxB,MAAM,IAAIJ,MAAM,qBAAuBq/C,EAAK,GAEpD,CAKA,OAJAN,EAAOI,QAAUrZ,SAASiZ,EAAOI,SACjCJ,EAAOQ,MAAQzZ,SAASiZ,EAAOQ,OAC/BR,EAAOS,UAAYT,EAAOhC,MAAMj1C,SAAS,WAElCi3C,CACX,CA9CeU,GAMf,IAAIC,EACAC,EACAC,EAEJ,IAAIC,EARJ,cAAQ3+C,KAAK4iC,UAAY,QACzB,cAAQ5iC,KAAKy8B,WAAaohB,EAAOI,QACjC,cAAQj+C,KAAKw7C,OAAQ,EAOrB,IAEIoD,EAEAC,EAJAC,EAAS,GACTC,EAAS,GAETC,GAAY,EAGhB,SAASrvC,EAAI3O,GACTR,SAASy+C,eAAe,UAAUC,WAAa,KAAKl+C,GACxD,CAgCA,SAASm+C,EAAY1hD,GACjB,OAAO,IAAI,iBAAWA,EAAEoG,KAAMlB,aAAa+B,KAAKjH,EAAEsE,MAAOtE,EAAEmD,KAC/D,CAqCAxB,eAAeggD,EAAUC,GACrB,GAAqB,GAAjBP,EAAO5/C,OACP,OAGJ,MAAOyC,EAAGF,GAAK,CAAC+8C,EAAO79C,MAAO69C,EAAO39C,QAG/By+C,EAAY,IAAI5+C,gBAAgBiB,EAAGF,GACnC89C,EAAaD,EAAUx+C,WAAW,MAClC0+C,EAAeD,EAAWp8C,aAAa,EAAG,EAAGxB,EAAGF,GAIhDg+C,EADa,IAAI/+C,gBAAgBiB,EAAGF,GACXX,WAAW,MAC1C2+C,EAAYv8C,gBAAgBw8C,kBAAkBb,GAAgB,EAAG,GACjE,MAAMc,EAAgBF,EAAYt8C,aAAa,EAAG,EAAGxB,EAAGF,GAExD,IAAK,IAAIT,EAAI,EAAGA,EAAI2+C,EAAc59C,KAAK7C,OAAQ8B,GAAK,EAChD,GAAI2+C,EAAc59C,KAAKf,GAAK,EACxB,IAAK,IAAIyK,EAAI,EAAGA,EAAI,IAAKA,EAAG,CACxB,MAAMisC,EAAS12C,EAAIyK,EACnB+zC,EAAaz9C,KAAK21C,GAAUkH,EAAe78C,KAAK21C,EACpD,CAGR6H,EAAW97C,aAAa+7C,EAAc,EAAG,GAGzC,MAAMI,EAAOp/C,SAASC,cAAc,KACpCm/C,EAAKl8C,SAAW,YAChBk8C,EAAK5wC,KAAOV,IAAIy0B,sBAAsBuc,EAAUO,iBAChDD,EAAKE,QACLF,EAAKG,QACT,CAOA3gD,eAAe4gD,EAAYX,GAEvB,IAAIL,EAGJ,IACIA,GAAY,EACZR,EAAOyB,MAAMC,OAAS,OAEtB,MAAMC,EAAO3B,EAAO4B,wBACdp+C,EAAIiY,KAAKomC,MAAMhB,EAAMiB,QAAUH,EAAKI,MACpCxkC,EAAI9B,KAAKomC,MAAMhB,EAAMmB,QAAUL,EAAKM,KACpCtN,EAASkM,EAAc,SAAI,EAAI,OAGZvC,IAArB6B,SACMlB,EAAOI,EAAOhC,OAAO,GAAG6E,KAIlC,MAAMC,QAAYhC,EACbU,EAAMuB,UACP9B,EAAS,GACTC,EAAS,IAEbD,EAAO3/C,KAAK6C,EAAG+Z,GACfgjC,EAAO5/C,KAAKg0C,GAEZ,IAAI0N,EAAMrC,EAAO19C,WAAW,MAC5B+/C,EAAIC,UAAU,EAAG,EAAGtC,EAAO79C,MAAO69C,EAAO39C,QACzC29C,EAAO79C,MAAQi+C,EAAej+C,MAC9B69C,EAAO39C,OAAS+9C,EAAe/9C,OAC/BggD,EAAIp9C,aAAam7C,EAAgB,EAAG,GACpC,IAAK,IAAI59C,EAAI,EAAGA,EAAI89C,EAAO5/C,OAAQ8B,GAAK,EACpC6/C,EAAI1+C,UAAY,OAChB0+C,EAAIz+C,SAAS08C,EAAO99C,GAAI89C,EAAO99C,EAAI,GAAI,GAAI,IAI/C,MAAM4iC,EAAU6Z,EAAOI,EAAOhC,OAAO,GAAG6E,KAElCK,EAAQlD,EAAgB,UAlHtC,SAAqB8C,EAAK7B,EAAQC,GAC9B,MAAMiC,EAAc,IAAI,iBAAW,IAAIr+C,aAAam8C,GAAS,CAAC,EAAG,EAAGA,EAAO5/C,OAAS,EAAG,IACjF+hD,EAAc,IAAI,iBAAWx8C,cAAcC,KAAKq6C,EAAOp/C,KAAKqC,GAAM0D,OAAO1D,MAAM,CAAC,EAAG,EAAG+8C,EAAO7/C,SAEnG,MAAO,CACH,iBAAoBigD,EAAYwB,EAAIhC,kBACpC,4BAA+BQ,EAAYwB,EAAIO,6BAC/C,aAAgBF,EAChB,aAAgBC,EAExB,CAwG0CE,CAAYR,EAAK7B,EAAQC,GAnGnE,SAAoB4B,EAAK7B,EAAQC,GAC7B,MAAMqC,EAAY,IAAI,iBAAW,IAAIz+C,aAAa,OAAY,CAAC,EAAG,EAAG,IAAK,MACpE0+C,EAAU,IAAI,iBAAW,IAAI1+C,aAAa,CAAC,IAAK,CAAC,IACjD2+C,EAAoB,IAAI,iBAAW,IAAI3+C,aAAa,CAAC66C,EAAcD,IAAe,CAAC,IACnFyD,EAAc,IAAI,iBAAW,IAAIr+C,aAAam8C,GAAS,CAAC,EAAGA,EAAO5/C,OAAS,EAAG,IAC9E+hD,EAAc,IAAI,iBAAW,IAAIt+C,aAAao8C,GAAS,CAAC,EAAGA,EAAO7/C,SAExE,MAAO,CACH,iBAAoBigD,EAAYwB,EAAIhC,kBACpC,aAAgBqC,EAChB,aAAgBC,EAChB,WAAcG,EACd,eAAkBC,EAClB,aAAgBC,EAExB,CAoF6EC,CAAWZ,EAAK7B,EAAQC,GACvFyC,EAAQ9jC,YAAYD,MACpBgkC,QAAY7d,EAAQ58B,IAAI+5C,GAC9BrC,EAAgBQ,UAAY,IAAIxhC,YAAYD,MAAQ+jC,GAAOE,QAAQ,OAEnE,MAAMC,EAAQ9D,EAAgB,UAAI4D,EAAIG,WAAaH,EAAII,MACvDhD,EAAgB8C,EAAK37C,cACrB66C,EAAIiB,YAAc,GAClBjB,EAAI39C,gBAAgBw8C,kBAAkBb,GAAgB,EAAG,EAC7D,CACA,QACIL,EAAOyB,MAAMC,OAAS,UACtBlB,GAAY,CAChB,CACJ,CAMA5/C,eAAe2iD,EAAYC,GACvB,MAAMC,EAAkBzhD,SAASy+C,eAAe,mBAChDgD,EAAgB/C,UAAY,GAC5BT,EAAOyD,UAAW,EAClBxD,EAAgBQ,UAAY,GAC5BV,EAAOyB,MAAMC,OAAS,OACtBvB,OAAmB7B,EACnB,IAAIn8C,EAAQqhD,EAAIrhD,MACZE,EAASmhD,EAAInhD,OAEbF,EAAQE,EACJF,EAAQ08C,IACRx8C,GAAmBw8C,EAAY18C,EAC/BA,EAAQ08C,GAGRx8C,EAASy8C,IACT38C,GAAiB28C,EAAaz8C,EAC9BA,EAASy8C,GAGjB38C,EAAQsZ,KAAKs3B,MAAM5wC,GACnBE,EAASoZ,KAAKs3B,MAAM1wC,GAEpB29C,EAAO79C,MAAQA,EACf69C,EAAO39C,OAASA,EAChB,IAAIggD,EAAMrC,EAAO19C,WAAW,MAC5B+/C,EAAI39C,UAAU8+C,EAAK,EAAG,EAAGrhD,EAAOE,GAEhC+9C,EAAiBiC,EAAI19C,aAAa,EAAG,EAAGxC,EAAOE,GAG/C,MAAMpD,QAAU,iBAAWmI,UAAUg5C,EAAgB,CAAE37C,aAAcs6C,EAAav6C,cAAew6C,IAC3FuD,EAAQlD,EAAgB,UAAI,CAAE,aAAgBpgD,GAAM,CAAE,YAAeA,GACrEmmC,QAAgB6Z,EAAOI,EAAOhC,OAAO,GAAG6E,KAExCc,EAAQ9jC,YAAYD,OAC1BkhC,EAAmB/a,EAAQ58B,IAAI+5C,IACdhvC,MAAK,KAClBkwC,EAAgB/C,UAAY,IAAIxhC,YAAYD,MAAQ+jC,GAAOE,QAAQ,OACnElD,EAAOyB,MAAMC,OAAS,SAAS,IAEnCzB,EAAOyD,UAAW,CACtB,CAMA9iD,eAAe+iD,EAAcxE,EAAKl+C,GAC9B,IACI,MAAM2iD,QAAcC,OAAOjzC,KAAK,QAChC,IAAIkzC,QAAuBF,EAAM7kC,MAAMogC,GACjBb,MAAlBwF,SACMF,EAAMjf,IAAIwa,GAChB2E,QAAuBF,EAAM7kC,MAAMogC,GACnChuC,EAAI,GAAGlQ,gBAEPkQ,EAAI,GAAGlQ,cAGX,aADmB6iD,EAAerwC,aAEtC,CAAE,MAAOpC,GAEL,OADAF,EAAI,GAAGlQ,qBACMoS,MAAM8rC,GAAK5rC,MAAKvC,GAAYA,EAASyC,eACtD,CACJ,CAgDA7S,eAAemjD,IACG9E,EAAOI,EAAOhC,OAE5B2C,EAASh+C,SAASy+C,eAAe,cACjCT,EAAOyB,MAAMC,OAAS,OAEtBzB,EAASj+C,SAASy+C,eAAe,WACjCP,EAAkBl+C,SAASy+C,eAAe,mBAE1C,IAAI+C,EAAMxhD,SAASy+C,eAAe,wBAnDtC7/C,eAA2BojD,GACvB,MAAMJ,QAAcC,OAAOjzC,KAAK,QAChC,IAAIqzC,EAAU,EACd,IAAK,MAAOhjD,EAAMo8C,KAAU/+C,OAAO+gB,QAAQ2kC,QAEhB1F,UADIsF,EAAM7kC,MAAMs+B,EAAM8B,OAEzC8E,GAAW5G,EAAMl2C,MAIrBgK,EADA8yC,EAAU,EACN,eAAeA,8CAEf,cAER,MAAMjB,EAAQ9jC,YAAYD,MAC1B,IAAK,MAAOhe,EAAMo8C,KAAU/+C,OAAO+gB,QAAQ2kC,GACvC,IACI,MAAME,EAAM,CACRl7C,mBAAoB,CAACq2C,EAAOG,UAC5Bja,kBAAkB,EAClBQ,mBAAmB,EACnBd,MAAO,CACHG,QAAS,CACL+e,mBAAoB,IACpBC,sCAAuC,IACvC/e,6BAA8B,IAC9Bgf,qCAAsC,OAI5CC,QAAoBX,EAActG,EAAM8B,IAAK9B,EAAMp8C,MACnDsjD,EAAYlH,EAAM6G,KAAO,CAAC,EAC1BM,EAAW,IAAKN,KAAQK,GAC9BlH,EAAM6E,WAAa,2BAAqBt5C,OAAO07C,EAAaE,EAChE,CAAE,MAAOxlD,GACLmS,EAAI,GAAGksC,EAAM8B,eAAengD,IAChC,CAGJmS,EAAI,WADS+N,YAAYD,MACH+jC,GAAOE,QAAQ,OACzC,CAaUuB,CAAYxF,EAAOI,EAAOhC,QAAQ9pC,MAAK,KACzCysC,EAAO0E,iBAAiB,QAASlD,GACjCx/C,SAASy+C,eAAe,cAAciE,iBAAiB,QAAS9D,GAGhEX,EAAO0E,SAAW,SAAUC,GACxB,IAA6CC,GAAhCD,EAAIvlB,QAAU9vB,OAAOsxC,MAAM97C,KAAoB8/C,MAC5D,GAAIC,YAAcD,GAASA,EAAMnkD,OAAQ,CACrC,IAAIqkD,EAAa,IAAID,WACrBC,EAAW//C,OAAS,KAChBw+C,EAAIx+C,OAAS,IAAMu+C,EAAYC,GAC/BA,EAAIz+C,IAAMggD,EAAWC,MAAM,EAE/BD,EAAWE,cAAcJ,EAAM,GACnC,CACJ,EACAtB,EAAYC,EAAI,IAChBxkD,IACAmS,EAAInS,EAAE,GAEd,CAWAgD,SAAS0iD,iBAAiB,oBAAoB,MAT9C9jD,iBACI,IAEI,aADsB+Y,UAAU0iC,IAAIC,kBACrBrH,SAASvQ,IAAI,aAChC,CAAE,MAAO1lC,GACL,OAAO,CACX,CACJ,EAGIkmD,GAAU3xC,MAAM4xC,IACRA,EACApB,IAEA5yC,EAAI,iDACR,GACF,G","sources":["webpack://segment-anything-demo/./node_modules/onnxruntime-web/dist/esm/ort.webgpu.min.js","webpack://segment-anything-demo/webpack/bootstrap","webpack://segment-anything-demo/webpack/runtime/define property getters","webpack://segment-anything-demo/webpack/runtime/hasOwnProperty shorthand","webpack://segment-anything-demo/webpack/runtime/make namespace object","webpack://segment-anything-demo/./index.js"],"sourcesContent":["/*!\n * ONNX Runtime Web v1.17.1\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar Wn=Object.defineProperty;var Gl=Object.getOwnPropertyDescriptor;var Fl=Object.getOwnPropertyNames;var ql=Object.prototype.hasOwnProperty;var F=(e,t)=>()=>(e&&(t=e(e=0)),t);var Zt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Xt=(e,t)=>{for(var r in t)Wn(e,r,{get:t[r],enumerable:!0})},jl=(e,t,r,a)=>{if(t&&typeof t==\"object\"||typeof t==\"function\")for(let n of Fl(t))!ql.call(e,n)&&n!==r&&Wn(e,n,{get:()=>t[n],enumerable:!(a=Gl(t,n))||a.enumerable});return e};var Ut=e=>jl(Wn({},\"__esModule\",{value:!0}),e);var jr,Nt,Qt,Kr,Yr=F(()=>{\"use strict\";jr=new Map,Nt=[],Qt=(e,t,r)=>{if(t&&typeof t.init==\"function\"&&typeof t.createInferenceSessionHandler==\"function\"){let a=jr.get(e);if(a===void 0)jr.set(e,{backend:t,priority:r});else{if(a.priority>r)return;if(a.priority===r&&a.backend!==t)throw new Error(`cannot register backend \"${e}\" using priority ${r}`)}if(r>=0){let n=Nt.indexOf(e);n!==-1&&Nt.splice(n,1);for(let o=0;o{let t=e.length===0?Nt:e,r=[];for(let a of t){let n=jr.get(a);if(n){if(n.initialized)return n.backend;if(n.aborted)continue;let o=!!n.initPromise;try{return o||(n.initPromise=n.backend.init(a)),await n.initPromise,n.initialized=!0,n.backend}catch(u){o||r.push({name:a,err:u}),n.aborted=!0}finally{delete n.initPromise}}}throw new Error(`no available backend found. ERR: ${r.map(a=>`[${a.name}] ${a.err}`).join(\", \")}`)}});var Qa=F(()=>{\"use strict\";Yr()});var Ja,ei=F(()=>{\"use strict\";Ja=\"1.17.1\"});var ti,Wt,Vn=F(()=>{\"use strict\";ei();ti=\"warning\",Wt={wasm:{},webgl:{},webgpu:{},versions:{common:Ja},set logLevel(e){if(e!==void 0){if(typeof e!=\"string\"||[\"verbose\",\"info\",\"warning\",\"error\",\"fatal\"].indexOf(e)===-1)throw new Error(`Unsupported logging level: ${e}`);ti=e}},get logLevel(){return ti}};Object.defineProperty(Wt,\"logLevel\",{enumerable:!0})});var Se,ri=F(()=>{\"use strict\";Vn();Se=Wt});var ni,ai,ii=F(()=>{\"use strict\";ni=(e,t)=>{let r=typeof document<\"u\"?document.createElement(\"canvas\"):new OffscreenCanvas(1,1);r.width=e.dims[3],r.height=e.dims[2];let a=r.getContext(\"2d\");if(a!=null){let n,o;t?.tensorLayout!==void 0&&t.tensorLayout===\"NHWC\"?(n=e.dims[2],o=e.dims[3]):(n=e.dims[3],o=e.dims[2]);let u=t?.format!==void 0?t.format:\"RGB\",l=t?.norm,i,c;l===void 0||l.mean===void 0?i=[255,255,255,255]:typeof l.mean==\"number\"?i=[l.mean,l.mean,l.mean,l.mean]:(i=[l.mean[0],l.mean[1],l.mean[2],0],l.mean[3]!==void 0&&(i[3]=l.mean[3])),l===void 0||l.bias===void 0?c=[0,0,0,0]:typeof l.bias==\"number\"?c=[l.bias,l.bias,l.bias,l.bias]:(c=[l.bias[0],l.bias[1],l.bias[2],0],l.bias[3]!==void 0&&(c[3]=l.bias[3]));let m=o*n,f=0,h=m,b=m*2,w=-1;u===\"RGBA\"?(f=0,h=m,b=m*2,w=m*3):u===\"RGB\"?(f=0,h=m,b=m*2):u===\"RBG\"&&(f=0,b=m,h=m*2);for(let _=0;_{let r=typeof document<\"u\"?document.createElement(\"canvas\").getContext(\"2d\"):new OffscreenCanvas(1,1).getContext(\"2d\"),a;if(r!=null){let n,o,u;t?.tensorLayout!==void 0&&t.tensorLayout===\"NHWC\"?(n=e.dims[2],o=e.dims[1],u=e.dims[3]):(n=e.dims[3],o=e.dims[2],u=e.dims[1]);let l=t!==void 0&&t.format!==void 0?t.format:\"RGB\",i=t?.norm,c,m;i===void 0||i.mean===void 0?c=[255,255,255,255]:typeof i.mean==\"number\"?c=[i.mean,i.mean,i.mean,i.mean]:(c=[i.mean[0],i.mean[1],i.mean[2],255],i.mean[3]!==void 0&&(c[3]=i.mean[3])),i===void 0||i.bias===void 0?m=[0,0,0,0]:typeof i.bias==\"number\"?m=[i.bias,i.bias,i.bias,i.bias]:(m=[i.bias[0],i.bias[1],i.bias[2],0],i.bias[3]!==void 0&&(m[3]=i.bias[3]));let f=o*n;if(t!==void 0&&(t.format!==void 0&&u===4&&t.format!==\"RGBA\"||u===3&&t.format!==\"RGB\"&&t.format!==\"BGR\"))throw new Error(\"Tensor format doesn't match input tensor dims\");let h=4,b=0,w=1,_=2,I=3,$=0,x=f,T=f*2,A=-1;l===\"RGBA\"?($=0,x=f,T=f*2,A=f*3):l===\"RGB\"?($=0,x=f,T=f*2):l===\"RBG\"&&($=0,T=f,x=f*2),a=r.createImageData(n,o);for(let z=0;z{\"use strict\";Zr();Hn=(e,t)=>{if(e===void 0)throw new Error(\"Image buffer must be defined\");if(t.height===void 0||t.width===void 0)throw new Error(\"Image height and width must be defined\");if(t.tensorLayout===\"NHWC\")throw new Error(\"NHWC Tensor layout is not supported yet\");let{height:r,width:a}=t,n=t.norm??{mean:255,bias:0},o,u;typeof n.mean==\"number\"?o=[n.mean,n.mean,n.mean,n.mean]:o=[n.mean[0],n.mean[1],n.mean[2],n.mean[3]??255],typeof n.bias==\"number\"?u=[n.bias,n.bias,n.bias,n.bias]:u=[n.bias[0],n.bias[1],n.bias[2],n.bias[3]??0];let l=t.format!==void 0?t.format:\"RGBA\",i=t.tensorFormat!==void 0&&t.tensorFormat!==void 0?t.tensorFormat:\"RGB\",c=r*a,m=i===\"RGBA\"?new Float32Array(c*4):new Float32Array(c*3),f=4,h=0,b=1,w=2,_=3,I=0,$=c,x=c*2,T=-1;l===\"RGB\"&&(f=3,h=0,b=1,w=2,_=-1),i===\"RGBA\"?T=c*3:i===\"RBG\"?(I=0,x=c,$=c*2):i===\"BGR\"&&(x=0,$=c,I=c*2);for(let z=0;z{let r=typeof HTMLImageElement<\"u\"&&e instanceof HTMLImageElement,a=typeof ImageData<\"u\"&&e instanceof ImageData,n=typeof ImageBitmap<\"u\"&&e instanceof ImageBitmap,o=typeof e==\"string\",u,l=t??{},i=()=>{if(typeof document<\"u\")return document.createElement(\"canvas\");if(typeof OffscreenCanvas<\"u\")return new OffscreenCanvas(1,1);throw new Error(\"Canvas is not supported\")},c=m=>m instanceof HTMLCanvasElement||m instanceof OffscreenCanvas?m.getContext(\"2d\"):null;if(r){let m=i();m.width=e.width,m.height=e.height;let f=c(m);if(f!=null){let h=e.height,b=e.width;if(t!==void 0&&t.resizedHeight!==void 0&&t.resizedWidth!==void 0&&(h=t.resizedHeight,b=t.resizedWidth),t!==void 0){if(l=t,t.tensorFormat!==void 0)throw new Error(\"Image input config format must be RGBA for HTMLImageElement\");l.tensorFormat=\"RGBA\",l.height=h,l.width=b}else l.tensorFormat=\"RGBA\",l.height=h,l.width=b;f.drawImage(e,0,0),u=f.getImageData(0,0,b,h).data}else throw new Error(\"Can not access image data\")}else if(a){let m,f;if(t!==void 0&&t.resizedWidth!==void 0&&t.resizedHeight!==void 0?(m=t.resizedHeight,f=t.resizedWidth):(m=e.height,f=e.width),t!==void 0&&(l=t),l.format=\"RGBA\",l.height=m,l.width=f,t!==void 0){let h=i();h.width=f,h.height=m;let b=c(h);if(b!=null)b.putImageData(e,0,0),u=b.getImageData(0,0,f,m).data;else throw new Error(\"Can not access image data\")}else u=e.data}else if(n){if(t===void 0)throw new Error(\"Please provide image config with format for Imagebitmap\");let m=i();m.width=e.width,m.height=e.height;let f=c(m);if(f!=null){let h=e.height,b=e.width;return f.drawImage(e,0,0,b,h),u=f.getImageData(0,0,b,h).data,l.height=h,l.width=b,Hn(u,l)}else throw new Error(\"Can not access image data\")}else{if(o)return new Promise((m,f)=>{let h=i(),b=c(h);if(!e||!b)return f();let w=new Image;w.crossOrigin=\"Anonymous\",w.src=e,w.onload=()=>{h.width=w.width,h.height=w.height,b.drawImage(w,0,0,h.width,h.height);let _=b.getImageData(0,0,h.width,h.height);l.height=h.height,l.width=h.width,m(Hn(_.data,l))}});throw new Error(\"Input data provided is not supported - aborted tensor creation\")}if(u!==void 0)return Hn(u,l);throw new Error(\"Input data provided is not supported - aborted tensor creation\")},si=(e,t)=>{let{width:r,height:a,download:n,dispose:o}=t,u=[1,a,r,4];return new Je({location:\"texture\",type:\"float32\",texture:e,dims:u,download:n,dispose:o})},ui=(e,t)=>{let{dataType:r,dims:a,download:n,dispose:o}=t;return new Je({location:\"gpu-buffer\",type:r??\"float32\",gpuBuffer:e,dims:a,download:n,dispose:o})},li=(e,t,r)=>new Je({location:\"cpu-pinned\",type:e,data:t,dims:r??[t.length]})});var vr,Xr,ci,pi,mi=F(()=>{\"use strict\";vr=new Map([[\"float32\",Float32Array],[\"uint8\",Uint8Array],[\"int8\",Int8Array],[\"uint16\",Uint16Array],[\"float16\",Uint16Array],[\"int16\",Int16Array],[\"int32\",Int32Array],[\"bool\",Uint8Array],[\"float64\",Float64Array],[\"uint32\",Uint32Array]]),Xr=new Map([[Float32Array,\"float32\"],[Uint8Array,\"uint8\"],[Int8Array,\"int8\"],[Uint16Array,\"uint16\"],[Int16Array,\"int16\"],[Int32Array,\"int32\"],[Float64Array,\"float64\"],[Uint32Array,\"uint32\"]]),ci=!1,pi=()=>{if(!ci){ci=!0;let e=typeof BigInt64Array<\"u\"&&typeof BigInt64Array.from==\"function\",t=typeof BigUint64Array<\"u\"&&typeof BigUint64Array.from==\"function\";e&&(vr.set(\"int64\",BigInt64Array),Xr.set(BigInt64Array,\"int64\")),t&&(vr.set(\"uint64\",BigUint64Array),Xr.set(BigUint64Array,\"uint64\"))}}});var fi,hi,gi=F(()=>{\"use strict\";Zr();fi=e=>{let t=1;for(let r=0;r{switch(e.location){case\"cpu\":return new Je(e.type,e.data,t);case\"cpu-pinned\":return new Je({location:\"cpu-pinned\",data:e.data,type:e.type,dims:t});case\"texture\":return new Je({location:\"texture\",texture:e.texture,type:e.type,dims:t});case\"gpu-buffer\":return new Je({location:\"gpu-buffer\",gpuBuffer:e.gpuBuffer,type:e.type,dims:t});default:throw new Error(`tensorReshape: tensor location ${e.location} is not supported`)}}});var Je,Zr=F(()=>{\"use strict\";ii();di();mi();gi();Je=class{constructor(t,r,a){pi();let n,o;if(typeof t==\"object\"&&\"location\"in t)switch(this.dataLocation=t.location,n=t.type,o=t.dims,t.location){case\"cpu-pinned\":{let l=vr.get(n);if(!l)throw new TypeError(`unsupported type \"${n}\" to create tensor from pinned buffer`);if(!(t.data instanceof l))throw new TypeError(`buffer should be of type ${l.name}`);this.cpuData=t.data;break}case\"texture\":{if(n!==\"float32\")throw new TypeError(`unsupported type \"${n}\" to create tensor from texture`);this.gpuTextureData=t.texture,this.downloader=t.download,this.disposer=t.dispose;break}case\"gpu-buffer\":{if(n!==\"float32\"&&n!==\"float16\"&&n!==\"int32\"&&n!==\"int64\"&&n!==\"uint32\"&&n!==\"bool\")throw new TypeError(`unsupported type \"${n}\" to create tensor from gpu buffer`);this.gpuBufferData=t.gpuBuffer,this.downloader=t.download,this.disposer=t.dispose;break}default:throw new Error(`Tensor constructor: unsupported location '${this.dataLocation}'`)}else{let l,i;if(typeof t==\"string\")if(n=t,i=a,t===\"string\"){if(!Array.isArray(r))throw new TypeError(\"A string tensor's data must be a string array.\");l=r}else{let c=vr.get(t);if(c===void 0)throw new TypeError(`Unsupported tensor type: ${t}.`);if(Array.isArray(r)){if(t===\"float16\")throw new TypeError(\"Creating a float16 tensor from number array is not supported. Please use Uint16Array as data.\");t===\"uint64\"||t===\"int64\"?l=c.from(r,BigInt):l=c.from(r)}else if(r instanceof c)l=r;else throw new TypeError(`A ${n} tensor's data must be type of ${c}`)}else if(i=r,Array.isArray(t)){if(t.length===0)throw new TypeError(\"Tensor type cannot be inferred from an empty array.\");let c=typeof t[0];if(c===\"string\")n=\"string\",l=t;else if(c===\"boolean\")n=\"bool\",l=Uint8Array.from(t);else throw new TypeError(`Invalid element type of data array: ${c}.`)}else{let c=Xr.get(t.constructor);if(c===void 0)throw new TypeError(`Unsupported type for tensor data: ${t.constructor}.`);n=c,l=t}if(i===void 0)i=[l.length];else if(!Array.isArray(i))throw new TypeError(\"A tensor's dims must be a number array\");o=i,this.cpuData=l,this.dataLocation=\"cpu\"}let u=fi(o);if(this.cpuData&&u!==this.cpuData.length)throw new Error(`Tensor's size(${u}) does not match data length(${this.cpuData.length}).`);this.type=n,this.dims=o,this.size=u}static async fromImage(t,r){return oi(t,r)}static fromTexture(t,r){return si(t,r)}static fromGpuBuffer(t,r){return ui(t,r)}static fromPinnedBuffer(t,r,a){return li(t,r,a)}toDataURL(t){return ni(this,t)}toImageData(t){return ai(this,t)}get data(){if(this.ensureValid(),!this.cpuData)throw new Error(\"The data is not on CPU. Use `getData()` to download GPU data to CPU, or use `texture` or `gpuBuffer` property to access the GPU data directly.\");return this.cpuData}get location(){return this.dataLocation}get texture(){if(this.ensureValid(),!this.gpuTextureData)throw new Error(\"The data is not stored as a WebGL texture.\");return this.gpuTextureData}get gpuBuffer(){if(this.ensureValid(),!this.gpuBufferData)throw new Error(\"The data is not stored as a WebGPU buffer.\");return this.gpuBufferData}async getData(t){switch(this.ensureValid(),this.dataLocation){case\"cpu\":case\"cpu-pinned\":return this.data;case\"texture\":case\"gpu-buffer\":{if(!this.downloader)throw new Error(\"The current tensor is not created with a specified data downloader.\");if(this.isDownloading)throw new Error(\"The current tensor is being downloaded.\");try{this.isDownloading=!0;let r=await this.downloader();return this.downloader=void 0,this.dataLocation=\"cpu\",this.cpuData=r,t&&this.disposer&&(this.disposer(),this.disposer=void 0),r}finally{this.isDownloading=!1}}default:throw new Error(`cannot get data from location: ${this.dataLocation}`)}}dispose(){if(this.isDownloading)throw new Error(\"The current tensor is being downloaded.\");this.disposer&&(this.disposer(),this.disposer=void 0),this.cpuData=void 0,this.gpuTextureData=void 0,this.gpuBufferData=void 0,this.downloader=void 0,this.isDownloading=void 0,this.dataLocation=\"none\"}ensureValid(){if(this.dataLocation===\"none\")throw new Error(\"The tensor is disposed.\")}reshape(t){if(this.ensureValid(),this.downloader||this.disposer)throw new Error(\"Cannot reshape a tensor that owns GPU resource.\");return hi(this,t)}}});var Xe,Qr=F(()=>{\"use strict\";Zr();Xe=Je});var Jr,yi,at,it,Ln=F(()=>{\"use strict\";Vn();Jr=(e,t)=>{Wt.wasm.trace&&console.timeStamp(`${e}::ORT::${t}`)},yi=(e,t)=>{let r=new Error().stack?.split(/\\r\\n|\\r|\\n/g)||[],a=!1;for(let n=0;n{Wt.wasm.trace&&yi(\"BEGIN\",e)},it=e=>{Wt.wasm.trace&&yi(\"END\",e)}});var en,bi=F(()=>{\"use strict\";Yr();Qr();Ln();en=class e{constructor(t){this.handler=t}async run(t,r,a){at();let n={},o={};if(typeof t!=\"object\"||t===null||t instanceof Xe||Array.isArray(t))throw new TypeError(\"'feeds' must be an object that use input names as keys and OnnxValue as corresponding values.\");let u=!0;if(typeof r==\"object\"){if(r===null)throw new TypeError(\"Unexpected argument[1]: cannot be null.\");if(r instanceof Xe)throw new TypeError(\"'fetches' cannot be a Tensor\");if(Array.isArray(r)){if(r.length===0)throw new TypeError(\"'fetches' cannot be an empty array.\");u=!1;for(let c of r){if(typeof c!=\"string\")throw new TypeError(\"'fetches' must be a string array or an object.\");if(this.outputNames.indexOf(c)===-1)throw new RangeError(`'fetches' contains invalid output name: ${c}.`);n[c]=null}if(typeof a==\"object\"&&a!==null)o=a;else if(typeof a<\"u\")throw new TypeError(\"'options' must be an object.\")}else{let c=!1,m=Object.getOwnPropertyNames(r);for(let f of this.outputNames)if(m.indexOf(f)!==-1){let h=r[f];(h===null||h instanceof Xe)&&(c=!0,u=!1,n[f]=h)}if(c){if(typeof a==\"object\"&&a!==null)o=a;else if(typeof a<\"u\")throw new TypeError(\"'options' must be an object.\")}else o=r}}else if(typeof r<\"u\")throw new TypeError(\"Unexpected argument[1]: must be 'fetches' or 'options'.\");for(let c of this.inputNames)if(typeof t[c]>\"u\")throw new Error(`input '${c}' is missing in 'feeds'.`);if(u)for(let c of this.outputNames)n[c]=null;let l=await this.handler.run(t,n,o),i={};for(let c in l)if(Object.hasOwnProperty.call(l,c)){let m=l[c];m instanceof Xe?i[c]=m:i[c]=new Xe(m.type,m.data,m.dims)}return it(),i}async release(){return this.handler.dispose()}static async create(t,r,a,n){at();let o,u={};if(typeof t==\"string\"){if(o=t,typeof r==\"object\"&&r!==null)u=r;else if(typeof r<\"u\")throw new TypeError(\"'options' must be an object.\")}else if(t instanceof Uint8Array){if(o=t,typeof r==\"object\"&&r!==null)u=r;else if(typeof r<\"u\")throw new TypeError(\"'options' must be an object.\")}else if(t instanceof ArrayBuffer||typeof SharedArrayBuffer<\"u\"&&t instanceof SharedArrayBuffer){let f=t,h=0,b=t.byteLength;if(typeof r==\"object\"&&r!==null)u=r;else if(typeof r==\"number\"){if(h=r,!Number.isSafeInteger(h))throw new RangeError(\"'byteOffset' must be an integer.\");if(h<0||h>=f.byteLength)throw new RangeError(`'byteOffset' is out of range [0, ${f.byteLength}).`);if(b=t.byteLength-h,typeof a==\"number\"){if(b=a,!Number.isSafeInteger(b))throw new RangeError(\"'byteLength' must be an integer.\");if(b<=0||h+b>f.byteLength)throw new RangeError(`'byteLength' is out of range (0, ${f.byteLength-h}].`);if(typeof n==\"object\"&&n!==null)u=n;else if(typeof n<\"u\")throw new TypeError(\"'options' must be an object.\")}else if(typeof a<\"u\")throw new TypeError(\"'byteLength' must be a number.\")}else if(typeof r<\"u\")throw new TypeError(\"'options' must be an object.\");o=new Uint8Array(f,h,b)}else throw new TypeError(\"Unexpected argument[0]: must be 'path' or 'buffer'.\");let i=(u.executionProviders||[]).map(f=>typeof f==\"string\"?f:f.name),m=await(await Kr(i)).createInferenceSessionHandler(o,u);return it(),new e(m)}startProfiling(){this.handler.startProfiling()}endProfiling(){this.handler.endProfiling()}get inputNames(){return this.handler.inputNames}get outputNames(){return this.handler.outputNames}}});var Kl,wi=F(()=>{\"use strict\";bi();Kl=en});var vi=F(()=>{\"use strict\"});var Yl,tn,$i=F(()=>{\"use strict\";Yr();Qr();Yl=\"Training backend could not be resolved. Make sure you're using the correct configuration & WebAssembly files.\",tn=class e{constructor(t,r,a){this.handler=t,this.hasOptimizerModel=r,this.hasEvalModel=a}get trainingInputNames(){return this.handler.inputNames}get trainingOutputNames(){return this.handler.outputNames}get evalInputNames(){if(this.hasEvalModel)return this.handler.evalInputNames;throw new Error(\"This training session has no evalModel loaded.\")}get evalOutputNames(){if(this.hasEvalModel)return this.handler.evalOutputNames;throw new Error(\"This training session has no evalModel loaded.\")}static async create(t,r){let a=t.evalModel||\"\",n=t.optimizerModel||\"\",o=r||{},l=(o.executionProviders||[]).map(c=>typeof c==\"string\"?c:c.name),i=await Kr(l);if(i.createTrainingSessionHandler){let c=await i.createTrainingSessionHandler(t.checkpointState,t.trainModel,a,n,o);return new e(c,!!t.optimizerModel,!!t.evalModel)}else throw new Error(Yl)}typeNarrowingForRunStep(t,r,a,n,o){let u={},l={};if(typeof a!=\"object\"||a===null||a instanceof Xe||Array.isArray(a))throw new TypeError(\"'feeds' must be an object that use input names as keys and OnnxValue as corresponding values.\");let i=!0;if(typeof n==\"object\"){if(n===null)throw new TypeError(\"Unexpected argument[1]: cannot be null.\");if(n instanceof Xe)throw new TypeError(\"'fetches' cannot be a Tensor\");if(Array.isArray(n)){if(n.length===0)throw new TypeError(\"'fetches' cannot be an empty array.\");i=!1;for(let c of n){if(typeof c!=\"string\")throw new TypeError(\"'fetches' must be a string array or an object.\");if(r.indexOf(c)===-1)throw new RangeError(`'fetches' contains invalid output name: ${c}.`);u[c]=null}if(typeof o==\"object\"&&o!==null)l=o;else if(typeof o<\"u\")throw new TypeError(\"'options' must be an object.\")}else{let c=!1,m=Object.getOwnPropertyNames(n);for(let f of r)if(m.indexOf(f)!==-1){let h=n[f];(h===null||h instanceof Xe)&&(c=!0,i=!1,u[f]=h)}if(c){if(typeof o==\"object\"&&o!==null)l=o;else if(typeof o<\"u\")throw new TypeError(\"'options' must be an object.\")}else l=n}}else if(typeof n<\"u\")throw new TypeError(\"Unexpected argument[1]: must be 'fetches' or 'options'.\");for(let c of t)if(typeof a[c]>\"u\")throw new Error(`input '${c}' is missing in 'feeds'.`);if(i)for(let c of r)u[c]=null;return[u,l]}convertHandlerReturnTypeToMapOfTensors(t){let r={};for(let a in t)if(Object.hasOwnProperty.call(t,a)){let n=t[a];n instanceof Xe?r[a]=n:r[a]=new Xe(n.type,n.data,n.dims)}return r}async lazyResetGrad(){await this.handler.lazyResetGrad()}async runTrainStep(t,r,a){let[n,o]=this.typeNarrowingForRunStep(this.trainingInputNames,this.trainingOutputNames,t,r,a),u=await this.handler.runTrainStep(t,n,o);return this.convertHandlerReturnTypeToMapOfTensors(u)}async runOptimizerStep(t){if(this.hasOptimizerModel)await this.handler.runOptimizerStep(t||{});else throw new Error(\"This TrainingSession has no OptimizerModel loaded.\")}async runEvalStep(t,r,a){if(this.hasEvalModel){let[n,o]=this.typeNarrowingForRunStep(this.evalInputNames,this.evalOutputNames,t,r,a),u=await this.handler.runEvalStep(t,n,o);return this.convertHandlerReturnTypeToMapOfTensors(u)}else throw new Error(\"This TrainingSession has no EvalModel loaded.\")}async getParametersSize(t=!0){return this.handler.getParametersSize(t)}async loadParametersBuffer(t,r=!0){let a=await this.getParametersSize(r);if(t.length!==4*a)throw new Error(\"Size of the buffer passed into loadParametersBuffer must match the number of parameters in the model. Please use getParametersSize method to check.\");return this.handler.loadParametersBuffer(t,r)}async getContiguousParameters(t=!0){return this.handler.getContiguousParameters(t)}async release(){return this.handler.dispose()}}});var Zl,_i=F(()=>{\"use strict\";$i();Zl=tn});var Gn={};Xt(Gn,{InferenceSession:()=>Kl,TRACE:()=>Jr,TRACE_FUNC_BEGIN:()=>at,TRACE_FUNC_END:()=>it,Tensor:()=>Xe,TrainingSession:()=>Zl,env:()=>Se,registerBackend:()=>Qt});var st=F(()=>{\"use strict\";Qa();ri();wi();Qr();Ln();vi();_i()});var Fn={};Xt(Fn,{createReadStream:()=>Si,readFile:()=>Xl,readFileSync:()=>Ql});var Xl,Ql,Si,qn=F(()=>{Xl=void 0,Ql=void 0,Si=void 0});var jn={};Xt(jn,{join:()=>Jl});var Jl,Kn=F(()=>{Jl=void 0});var Ai=Zt((Ci,Yn)=>{\"use strict\";var Ii=(()=>{var e=typeof document<\"u\"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<\"u\"&&(e=e||__filename),function(t={}){var r=t,a,n;r.ready=new Promise((d,g)=>{a=d,n=g}),r.mountExternalData=(d,g)=>{(r.Fa||(r.Fa=new Map)).set(d,g)},r.unmountExternalData=()=>{delete r.Fa},r.jsepInit=(d,g,v,C,B,H,j,de)=>{r.ab=d,r.Qa=g,r.Sa=v,r.La=C,r.Ra=B,r.sa=H,r.Ta=j,r.Ua=de,g=(J,re,se)=>(...we)=>{let Ie=ot,k=re?.();we=J(...we);let ue=re?.();return k!==ue&&(J=ue,se(k),re=se=null),ot!=Ie?zr():we},v=J=>async(...re)=>{try{if(r.Ea)throw Error(\"Session already started\");let se=r.Ea={Va:re[0],errors:[]},we=await J(...re);if(r.Ea!==se)throw Error(\"Session mismatch\");d.flush();let Ie=se.errors;if(0ue),0r._OrtRun,J=>r._OrtRun=J)),r._OrtRunWithBinding=v(g(r._OrtRunWithBinding,()=>r._OrtRunWithBinding,J=>r._OrtRunWithBinding=J)),r._OrtBindInput=g(r._OrtBindInput,()=>r._OrtBindInput,J=>r._OrtBindInput=J),r.jsepRegisterBuffer=(J,re,se,we)=>d.registerBuffer(J,re,se,we),r.jsepUnregisterBuffers=J=>{d.unregisterBuffers(J)},r.jsepGetBuffer=J=>d.getBuffer(J),r.jsepCreateDownloader=(J,re,se)=>d.createDownloader(J,re,se)};var o=Object.assign({},r),u=\"./this.program\",l=(d,g)=>{throw g},i=typeof window==\"object\",c=typeof importScripts==\"function\",m=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\",f=\"\",h,b,w;if(m){var _=(qn(),Ut(Fn)),I=(Kn(),Ut(jn));f=c?I.dirname(f)+\"/\":__dirname+\"/\",h=(d,g)=>(d=He(d)?new URL(d):I.normalize(d),_.readFileSync(d,g?void 0:\"utf8\")),w=d=>(d=h(d,!0),d.buffer||(d=new Uint8Array(d)),d),b=(d,g,v,C=!0)=>{d=He(d)?new URL(d):I.normalize(d),_.readFile(d,C?void 0:\"utf8\",(B,H)=>{B?v(B):g(C?H.buffer:H)})},!r.thisProgram&&1{throw process.exitCode=d,g},r.inspect=()=>\"[Emscripten Module object]\"}else(i||c)&&(c?f=self.location.href:typeof document<\"u\"&&document.currentScript&&(f=document.currentScript.src),e&&(f=e),f.indexOf(\"blob:\")!==0?f=f.substr(0,f.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1):f=\"\",h=d=>{var g=new XMLHttpRequest;return g.open(\"GET\",d,!1),g.send(null),g.responseText},c&&(w=d=>{var g=new XMLHttpRequest;return g.open(\"GET\",d,!1),g.responseType=\"arraybuffer\",g.send(null),new Uint8Array(g.response)}),b=(d,g,v)=>{var C=new XMLHttpRequest;C.open(\"GET\",d,!0),C.responseType=\"arraybuffer\",C.onload=()=>{C.status==200||C.status==0&&C.response?g(C.response):v()},C.onerror=v,C.send(null)});var $=console.log.bind(console),x=console.error.bind(console);Object.assign(r,o),o=null,typeof WebAssembly!=\"object\"&&he(\"no native wasm support detected\");var T,A=!1,z,R,N,E,W,te,Y;function K(){var d=T.buffer;r.HEAP8=R=new Int8Array(d),r.HEAP16=new Int16Array(d),r.HEAPU8=N=new Uint8Array(d),r.HEAPU16=new Uint16Array(d),r.HEAP32=E=new Int32Array(d),r.HEAPU32=W=new Uint32Array(d),r.HEAPF32=te=new Float32Array(d),r.HEAPF64=Y=new Float64Array(d)}var X=[],Z=[],Oe=[],Pe=0,fe=null,Ae=null;function he(d){throw d=\"Aborted(\"+d+\")\",x(d),A=!0,z=1,d=new WebAssembly.RuntimeError(d+\". Build with -sASSERTIONS for more info.\"),n(d),d}var ye=d=>d.startsWith(\"data:application/octet-stream;base64,\"),He=d=>d.startsWith(\"file://\"),ze;if(ze=\"ort-wasm-simd.wasm\",!ye(ze)){var Ge=ze;ze=r.locateFile?r.locateFile(Ge,f):f+Ge}function L(d){if(w)return w(d);throw\"both async and sync fetching of the wasm failed\"}function ee(d){if(i||c){if(typeof fetch==\"function\"&&!He(d))return fetch(d,{credentials:\"same-origin\"}).then(g=>{if(!g.ok)throw\"failed to load wasm binary file at '\"+d+\"'\";return g.arrayBuffer()}).catch(()=>L(d));if(b)return new Promise((g,v)=>{b(d,C=>g(new Uint8Array(C)),v)})}return Promise.resolve().then(()=>L(d))}function be(d,g,v){return ee(d).then(C=>WebAssembly.instantiate(C,g)).then(C=>C).then(v,C=>{x(`failed to asynchronously prepare wasm: ${C}`),he(C)})}function nt(d,g){var v=ze;return typeof WebAssembly.instantiateStreaming!=\"function\"||ye(v)||He(v)||m||typeof fetch!=\"function\"?be(v,d,g):fetch(v,{credentials:\"same-origin\"}).then(C=>WebAssembly.instantiateStreaming(C,d).then(g,function(B){return x(`wasm streaming compile failed: ${B}`),x(\"falling back to ArrayBuffer instantiation\"),be(v,d,g)}))}var Ne,We={931056:(d,g,v,C)=>{if(typeof r>\"u\"||!r.Fa)return 1;if(d=Ke(d>>>0),d.startsWith(\"./\")&&(d=d.substring(2)),d=r.Fa.get(d),!d)return 2;if(g>>>=0,v>>>=0,g+v>d.byteLength)return 3;try{return N.set(d.subarray(g,g+v),C>>>0>>>0),0}catch{return 4}},931557:d=>r.Qa(d),931590:d=>r.Sa(d),931622:(d,g,v)=>{r.La(d,g,v,!0)},931661:(d,g,v)=>{r.La(d,g,v)},931694:d=>{r.sa(\"Abs\",d,void 0)},931745:d=>{r.sa(\"Neg\",d,void 0)},931796:d=>{r.sa(\"Floor\",d,void 0)},931849:d=>{r.sa(\"Ceil\",d,void 0)},931901:d=>{r.sa(\"Reciprocal\",d,void 0)},931959:d=>{r.sa(\"Sqrt\",d,void 0)},932011:d=>{r.sa(\"Exp\",d,void 0)},932062:d=>{r.sa(\"Erf\",d,void 0)},932113:d=>{r.sa(\"Sigmoid\",d,void 0)},932168:d=>{r.sa(\"Log\",d,void 0)},932219:d=>{r.sa(\"Sin\",d,void 0)},932270:d=>{r.sa(\"Cos\",d,void 0)},932321:d=>{r.sa(\"Tan\",d,void 0)},932372:d=>{r.sa(\"Asin\",d,void 0)},932424:d=>{r.sa(\"Acos\",d,void 0)},932476:d=>{r.sa(\"Atan\",d,void 0)},932528:d=>{r.sa(\"Sinh\",d,void 0)},932580:d=>{r.sa(\"Cosh\",d,void 0)},932632:d=>{r.sa(\"Asinh\",d,void 0)},932685:d=>{r.sa(\"Acosh\",d,void 0)},932738:d=>{r.sa(\"Atanh\",d,void 0)},932791:d=>{r.sa(\"Tanh\",d,void 0)},932843:d=>{r.sa(\"Not\",d,void 0)},932894:(d,g,v)=>{r.sa(\"Clip\",d,{min:g,max:v})},932963:d=>{r.sa(\"Clip\",d,void 0)},933015:(d,g)=>{r.sa(\"Elu\",d,{alpha:g})},933073:d=>{r.sa(\"Relu\",d,void 0)},933125:(d,g)=>{r.sa(\"LeakyRelu\",d,{alpha:g})},933189:(d,g)=>{r.sa(\"ThresholdedRelu\",d,{alpha:g})},933259:(d,g)=>{r.sa(\"Cast\",d,{to:g})},933317:d=>{r.sa(\"Add\",d,void 0)},933368:d=>{r.sa(\"Sub\",d,void 0)},933419:d=>{r.sa(\"Mul\",d,void 0)},933470:d=>{r.sa(\"Div\",d,void 0)},933521:d=>{r.sa(\"Pow\",d,void 0)},933572:d=>{r.sa(\"Equal\",d,void 0)},933625:d=>{r.sa(\"Greater\",d,void 0)},933680:d=>{r.sa(\"GreaterOrEqual\",d,void 0)},933742:d=>{r.sa(\"Less\",d,void 0)},933794:d=>{r.sa(\"LessOrEqual\",d,void 0)},933853:(d,g,v,C,B)=>{r.sa(\"ReduceMean\",d,{keepDims:!!g,noopWithEmptyAxes:!!v,axes:C?Array.from(E.subarray(C>>>0,B>>>0)):[]})},934012:(d,g,v,C,B)=>{r.sa(\"ReduceMax\",d,{keepDims:!!g,noopWithEmptyAxes:!!v,axes:C?Array.from(E.subarray(C>>>0,B>>>0)):[]})},934170:(d,g,v,C,B)=>{r.sa(\"ReduceMin\",d,{keepDims:!!g,noopWithEmptyAxes:!!v,axes:C?Array.from(E.subarray(C>>>0,B>>>0)):[]})},934328:(d,g,v,C,B)=>{r.sa(\"ReduceProd\",d,{keepDims:!!g,noopWithEmptyAxes:!!v,axes:C?Array.from(E.subarray(C>>>0,B>>>0)):[]})},934487:(d,g,v,C,B)=>{r.sa(\"ReduceSum\",d,{keepDims:!!g,noopWithEmptyAxes:!!v,axes:C?Array.from(E.subarray(C>>>0,B>>>0)):[]})},934645:(d,g,v,C,B)=>{r.sa(\"ReduceL1\",d,{keepDims:!!g,noopWithEmptyAxes:!!v,axes:C?Array.from(E.subarray(C>>>0,B>>>0)):[]})},934802:(d,g,v,C,B)=>{r.sa(\"ReduceL2\",d,{keepDims:!!g,noopWithEmptyAxes:!!v,axes:C?Array.from(E.subarray(C>>>0,B>>>0)):[]})},934959:(d,g,v,C,B)=>{r.sa(\"ReduceLogSum\",d,{keepDims:!!g,noopWithEmptyAxes:!!v,axes:C?Array.from(E.subarray(C>>>0,B>>>0)):[]})},935120:(d,g,v,C,B)=>{r.sa(\"ReduceSumSquare\",d,{keepDims:!!g,noopWithEmptyAxes:!!v,axes:C?Array.from(E.subarray(C>>>0,B>>>0)):[]})},935284:(d,g,v,C,B)=>{r.sa(\"ReduceLogSumExp\",d,{keepDims:!!g,noopWithEmptyAxes:!!v,axes:C?Array.from(E.subarray(C>>>0,B>>>0)):[]})},935448:d=>{r.sa(\"Where\",d,void 0)},935501:(d,g,v)=>{r.sa(\"Transpose\",d,{perm:g?Array.from(E.subarray(g>>>0,v>>>0)):[]})},935609:(d,g,v,C,B,H,j,de,J,re,se,we,Ie,k,ue)=>{r.sa(\"ConvTranspose\",d,{format:J?\"NHWC\":\"NCHW\",autoPad:g,dilations:[v],group:C,kernel_shape:[B],pads:[H,j],strides:[de],wIsConst:()=>!!R[re>>>0],outputPadding:se?Array.from(E.subarray(se>>>0,we>>>0)):[],outputShape:Ie?Array.from(E.subarray(Ie>>>0,k>>>0)):[],activation:Ke(ue)})},936011:(d,g,v,C,B,H,j,de,J,re,se,we,Ie,k)=>{r.sa(\"ConvTranspose\",d,{format:de?\"NHWC\":\"NCHW\",autoPad:g,dilations:Array.from(E.subarray(v>>>0,(v>>>0)+2>>>0)),group:C,kernelShape:Array.from(E.subarray(B>>>0,(B>>>0)+2>>>0)),pads:Array.from(E.subarray(H>>>0,(H>>>0)+4>>>0)),strides:Array.from(E.subarray(j>>>0,(j>>>0)+2>>>0)),wIsConst:()=>!!R[J>>>0],outputPadding:re?Array.from(E.subarray(re>>>0,se>>>0)):[],outputShape:we?Array.from(E.subarray(we>>>0,Ie>>>0)):[],activation:Ke(k)})},936576:(d,g,v,C,B,H,j,de,J,re,se,we,Ie,k,ue)=>{r.sa(\"ConvTranspose\",d,{format:J?\"NHWC\":\"NCHW\",autoPad:g,dilations:[v],group:C,kernel_shape:[B],pads:[H,j],strides:[de],wIsConst:()=>!!R[re>>>0],outputPadding:se?Array.from(E.subarray(se>>>0,we>>>0)):[],outputShape:Ie?Array.from(E.subarray(Ie>>>0,k>>>0)):[],activation:Ke(ue)})},936978:(d,g,v,C,B,H,j,de,J,re,se,we,Ie,k)=>{r.sa(\"ConvTranspose\",d,{format:de?\"NHWC\":\"NCHW\",autoPad:g,dilations:Array.from(E.subarray(v>>>0,(v>>>0)+2>>>0)),group:C,kernelShape:Array.from(E.subarray(B>>>0,(B>>>0)+2>>>0)),pads:Array.from(E.subarray(H>>>0,(H>>>0)+4>>>0)),strides:Array.from(E.subarray(j>>>0,(j>>>0)+2>>>0)),wIsConst:()=>!!R[J>>>0],outputPadding:re?Array.from(E.subarray(re>>>0,se>>>0)):[],outputShape:we?Array.from(E.subarray(we>>>0,Ie>>>0)):[],activation:Ke(k)})},937543:(d,g)=>{r.sa(\"GlobalAveragePool\",d,{format:g?\"NHWC\":\"NCHW\"})},937634:(d,g,v,C,B,H,j,de,J,re,se,we,Ie,k,ue,_e)=>{r.sa(\"AveragePool\",d,{format:_e?\"NHWC\":\"NCHW\",auto_pad:g,ceil_mode:v,count_include_pad:C,storage_order:B,dilations:[H,j],kernel_shape:[de,J],pads:[re,se,we,Ie],strides:[k,ue]})},937918:(d,g)=>{r.sa(\"GlobalAveragePool\",d,{format:g?\"NHWC\":\"NCHW\"})},938009:(d,g,v,C,B,H,j,de,J,re,se,we,Ie,k,ue,_e)=>{r.sa(\"AveragePool\",d,{format:_e?\"NHWC\":\"NCHW\",auto_pad:g,ceil_mode:v,count_include_pad:C,storage_order:B,dilations:[H,j],kernel_shape:[de,J],pads:[re,se,we,Ie],strides:[k,ue]})},938293:(d,g)=>{r.sa(\"GlobalMaxPool\",d,{format:g?\"NHWC\":\"NCHW\"})},938380:(d,g,v,C,B,H,j,de,J,re,se,we,Ie,k,ue,_e)=>{r.sa(\"MaxPool\",d,{format:_e?\"NHWC\":\"NCHW\",auto_pad:g,ceil_mode:v,count_include_pad:C,storage_order:B,dilations:[H,j],kernel_shape:[de,J],pads:[re,se,we,Ie],strides:[k,ue]})},938660:(d,g)=>{r.sa(\"GlobalMaxPool\",d,{format:g?\"NHWC\":\"NCHW\"})},938747:(d,g,v,C,B,H,j,de,J,re,se,we,Ie,k,ue,_e)=>{r.sa(\"MaxPool\",d,{format:_e?\"NHWC\":\"NCHW\",auto_pad:g,ceil_mode:v,count_include_pad:C,storage_order:B,dilations:[H,j],kernel_shape:[de,J],pads:[re,se,we,Ie],strides:[k,ue]})},939027:(d,g,v,C,B)=>{r.sa(\"Gemm\",d,{alpha:g,beta:v,transA:C,transB:B})},939131:d=>{r.sa(\"MatMul\",d,void 0)},939185:(d,g,v,C)=>{r.sa(\"ArgMax\",d,{keepDims:!!g,selectLastIndex:!!v,axis:C})},939293:(d,g,v,C)=>{r.sa(\"ArgMin\",d,{keepDims:!!g,selectLastIndex:!!v,axis:C})},939401:(d,g)=>{r.sa(\"Softmax\",d,{axis:g})},939464:(d,g)=>{r.sa(\"Concat\",d,{axis:g})},939524:(d,g,v,C,B)=>{r.sa(\"Split\",d,{axis:g,numOutputs:v,splitSizes:C?Array.from(E.subarray(C>>>0,B>>>0)):[]})},939664:d=>{r.sa(\"Expand\",d,void 0)},939718:(d,g)=>{r.sa(\"Gather\",d,{axis:Number(g)})},939789:(d,g)=>{r.sa(\"GatherElements\",d,{axis:Number(g)})},939868:(d,g,v,C,B,H,j,de,J,re,se)=>{r.sa(\"Resize\",d,{antialias:g,axes:v?Array.from(E.subarray(v>>>0,C>>>0)):[],coordinateTransformMode:Ke(B),cubicCoeffA:H,excludeOutside:j,extrapolationValue:de,keepAspectRatioPolicy:Ke(J),mode:Ke(re),nearestMode:Ke(se)})},940214:(d,g,v,C,B,H,j)=>{r.sa(\"Slice\",d,{starts:g?Array.from(E.subarray(g>>>0,v>>>0)):[],ends:C?Array.from(E.subarray(C>>>0,B>>>0)):[],axes:H?Array.from(E.subarray(H>>>0,j>>>0)):[]})},940430:d=>{r.sa(\"Tile\",d,void 0)},940482:(d,g,v)=>{r.sa(\"LayerNormalization\",d,{axis:Number(g),epsilon:Number(v)})},940589:(d,g,v)=>{r.sa(\"InstanceNormalization\",d,{epsilon:g,format:v?\"NHWC\":\"NCHW\"})},940703:(d,g,v)=>{r.sa(\"InstanceNormalization\",d,{epsilon:g,format:v?\"NHWC\":\"NCHW\"})},940817:d=>{r.sa(\"Range\",d,void 0)},940870:(d,g)=>{r.sa(\"Einsum\",d,{equation:Ke(g)})},940951:(d,g,v,C,B)=>{r.sa(\"Pad\",d,{mode:g,value:v,pads:C?Array.from(E.subarray(C>>>0,B>>>0)):[]})},941078:(d,g,v,C,B,H)=>{r.sa(\"BatchNormalization\",d,{epsilon:g,momentum:v,spatial:!!B,trainingMode:!!C,format:H?\"NHWC\":\"NCHW\"})},941247:(d,g,v,C,B,H)=>{r.sa(\"BatchNormalization\",d,{epsilon:g,momentum:v,spatial:!!B,trainingMode:!!C,format:H?\"NHWC\":\"NCHW\"})},941416:(d,g,v)=>{r.sa(\"CumSum\",d,{exclusive:Number(g),reverse:Number(v)})},941513:(d,g,v,C,B,H,j,de,J)=>{r.sa(\"Attention\",d,{numHeads:g,isUnidirectional:v,maskFilterValue:C,scale:B,doRotary:H,qkvHiddenSizes:j?Array.from(E.subarray(Number(de)>>>0,Number(de)+j>>>0)):[],pastPresentShareBuffer:!!J})},941785:d=>{r.sa(\"Gelu\",d,void 0)},941837:(d,g,v,C,B,H)=>{r.sa(\"MultiHeadAttention\",d,{numHeads:g,isUnidirectional:v,maskFilterValue:C,scale:B,doRotary:H})},941996:d=>{r.sa(\"BiasAdd\",d,void 0)},942051:d=>{r.sa(\"BiasSplitGelu\",d,void 0)},942112:(d,g)=>{r.sa(\"SkipLayerNormalization\",d,{epsilon:g})},942193:(d,g,v,C,B,H,j,de,J,re,se,we,Ie)=>{r.sa(\"Conv\",d,{format:J?\"NHWC\":\"NCHW\",auto_pad:g,dilations:[v],group:C,kernel_shape:[B],pads:H?Array.from(E.subarray(H>>>0,j>>>0)):[],strides:[de],w_is_const:()=>!!R[re>>>0],activation:Ke(se),activation_params:we?Array.from(te.subarray(we>>>0,Ie>>>0)):[]})},942563:(d,g,v,C,B,H,j,de,J,re,se,we,Ie,k,ue,_e)=>{r.sa(\"Conv\",d,{format:we?\"NHWC\":\"NCHW\",auto_pad:g,dilations:[v,C],group:B,kernel_shape:[H,j],pads:de?Array.from(E.subarray(de>>>0,J>>>0)):[],strides:[re,se],w_is_const:()=>!!R[Ie>>>0],activation:Ke(k),activation_params:ue?Array.from(te.subarray(ue>>>0,_e>>>0)):[]})},942954:d=>{r.Ta(d)},942988:(d,g)=>r.Ua(d,g,r.Ea.Va,r.Ea.errors)};function Me(d){this.name=\"ExitStatus\",this.message=`Program terminated with exit(${d})`,this.status=d}function Ct(d){this.Ja=d-24,this.Oa=function(g){W[this.Ja+4>>>2>>>0]=g},this.Na=function(g){W[this.Ja+8>>>2>>>0]=g},this.$a=function(g,v){this.Ma(),this.Oa(g),this.Na(v)},this.Ma=function(){W[this.Ja+16>>>2>>>0]=0}}var lt=0,Lt=0,Bt=typeof TextDecoder<\"u\"?new TextDecoder(\"utf8\"):void 0,At=(d,g,v)=>{g>>>=0;var C=g+v;for(v=g;d[v]&&!(v>=C);)++v;if(16B?C+=String.fromCharCode(B):(B-=65536,C+=String.fromCharCode(55296|B>>10,56320|B&1023))}}else C+=String.fromCharCode(B)}return C},Ke=(d,g)=>(d>>>=0)?At(N,d,g):\"\",ar=d=>{for(var g=0,v=0;v=C?g++:2047>=C?g+=2:55296<=C&&57343>=C?(g+=4,++v):g+=3}return g},Gt=(d,g,v,C)=>{if(v>>>=0,!(0=j){var de=d.charCodeAt(++H);j=65536+((j&1023)<<10)|de&1023}if(127>=j){if(v>=C)break;g[v++>>>0]=j}else{if(2047>=j){if(v+1>=C)break;g[v++>>>0]=192|j>>6}else{if(65535>=j){if(v+2>=C)break;g[v++>>>0]=224|j>>12}else{if(v+3>=C)break;g[v++>>>0]=240|j>>18,g[v++>>>0]=128|j>>12&63}g[v++>>>0]=128|j>>6&63}g[v++>>>0]=128|j&63}}return g[v>>>0]=0,v-B},Et=d=>d%4===0&&(d%100!==0||d%400===0),St=[0,31,60,91,121,152,182,213,244,274,305,335],Ft=[0,31,59,90,120,151,181,212,243,273,304,334],qt=d=>{var g=ar(d)+1,v=Yt(g);return v&&Gt(d,N,v,g),v},Dt=[],ir=(d,g)=>{Dt.length=0;for(var v;v=N[d++>>>0];){var C=v!=105;C&=v!=112,g+=C&&g%8?4:0,Dt.push(v==112?W[g>>>2>>>0]:v==105?E[g>>>2>>>0]:Y[g>>>3>>>0]),g+=C?8:4}return Dt},dt={},or=()=>{if(!jt){var d={USER:\"web_user\",LOGNAME:\"web_user\",PATH:\"/\",PWD:\"/\",HOME:\"/home/web_user\",LANG:(typeof navigator==\"object\"&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\",_:u||\"./this.program\"},g;for(g in dt)dt[g]===void 0?delete d[g]:d[g]=dt[g];var v=[];for(g in d)v.push(`${g}=${d[g]}`);jt=v}return jt},jt,Ze=[null,[],[]],kr=[31,29,31,30,31,30,31,31,30,31,30,31],ke=[31,28,31,30,31,30,31,31,30,31,30,31];function Pr(d){var g=Array(ar(d)+1);return Gt(d,g,0,g.length),g}function Kt(d,g,v,C){function B(k,ue,_e){for(k=typeof k==\"number\"?k.toString():k||\"\";k.lengthVr?-1:0ft-k.getDate())ue-=ft-k.getDate()+1,k.setDate(1),11>_e?k.setMonth(_e+1):(k.setMonth(0),k.setFullYear(k.getFullYear()+1));else{k.setDate(k.getDate()+ue);break}}return _e=new Date(k.getFullYear()+1,0,4),ue=de(new Date(k.getFullYear(),0,4)),_e=de(_e),0>=j(ue,k)?0>=j(_e,k)?k.getFullYear()+1:k.getFullYear():k.getFullYear()-1}d>>>=0,g>>>=0,v>>>=0,C>>>=0;var re=W[C+40>>>2>>>0];C={Ya:E[C>>>2>>>0],Xa:E[C+4>>>2>>>0],Ga:E[C+8>>>2>>>0],Ka:E[C+12>>>2>>>0],Ha:E[C+16>>>2>>>0],Da:E[C+20>>>2>>>0],xa:E[C+24>>>2>>>0],Ca:E[C+28>>>2>>>0],bb:E[C+32>>>2>>>0],Wa:E[C+36>>>2>>>0],Za:re?Ke(re):\"\"},v=Ke(v),re={\"%c\":\"%a %b %d %H:%M:%S %Y\",\"%D\":\"%m/%d/%y\",\"%F\":\"%Y-%m-%d\",\"%h\":\"%b\",\"%r\":\"%I:%M:%S %p\",\"%R\":\"%H:%M\",\"%T\":\"%H:%M:%S\",\"%x\":\"%m/%d/%y\",\"%X\":\"%H:%M:%S\",\"%Ec\":\"%c\",\"%EC\":\"%C\",\"%Ex\":\"%m/%d/%y\",\"%EX\":\"%H:%M:%S\",\"%Ey\":\"%y\",\"%EY\":\"%Y\",\"%Od\":\"%d\",\"%Oe\":\"%e\",\"%OH\":\"%H\",\"%OI\":\"%I\",\"%Om\":\"%m\",\"%OM\":\"%M\",\"%OS\":\"%S\",\"%Ou\":\"%u\",\"%OU\":\"%U\",\"%OV\":\"%V\",\"%Ow\":\"%w\",\"%OW\":\"%W\",\"%Oy\":\"%y\"};for(var se in re)v=v.replace(new RegExp(se,\"g\"),re[se]);var we=\"Sunday Monday Tuesday Wednesday Thursday Friday Saturday\".split(\" \"),Ie=\"January February March April May June July August September October November December\".split(\" \");re={\"%a\":k=>we[k.xa].substring(0,3),\"%A\":k=>we[k.xa],\"%b\":k=>Ie[k.Ha].substring(0,3),\"%B\":k=>Ie[k.Ha],\"%C\":k=>H((k.Da+1900)/100|0,2),\"%d\":k=>H(k.Ka,2),\"%e\":k=>B(k.Ka,2,\" \"),\"%g\":k=>J(k).toString().substring(2),\"%G\":k=>J(k),\"%H\":k=>H(k.Ga,2),\"%I\":k=>(k=k.Ga,k==0?k=12:12{for(var ue=0,_e=0;_e<=k.Ha-1;ue+=(Et(k.Da+1900)?kr:ke)[_e++]);return H(k.Ka+ue,3)},\"%m\":k=>H(k.Ha+1,2),\"%M\":k=>H(k.Xa,2),\"%n\":()=>`\n`,\"%p\":k=>0<=k.Ga&&12>k.Ga?\"AM\":\"PM\",\"%S\":k=>H(k.Ya,2),\"%t\":()=>\"\t\",\"%u\":k=>k.xa||7,\"%U\":k=>H(Math.floor((k.Ca+7-k.xa)/7),2),\"%V\":k=>{var ue=Math.floor((k.Ca+7-(k.xa+6)%7)/7);if(2>=(k.xa+371-k.Ca-2)%7&&ue++,ue)ue==53&&(_e=(k.xa+371-k.Ca)%7,_e==4||_e==3&&Et(k.Da)||(ue=1));else{ue=52;var _e=(k.xa+7-k.Ca-1)%7;(_e==4||_e==5&&Et(k.Da%400-1))&&ue++}return H(ue,2)},\"%w\":k=>k.xa,\"%W\":k=>H(Math.floor((k.Ca+7-(k.xa+6)%7)/7),2),\"%y\":k=>(k.Da+1900).toString().substring(2),\"%Y\":k=>k.Da+1900,\"%z\":k=>{k=k.Wa;var ue=0<=k;return k=Math.abs(k)/60,(ue?\"+\":\"-\")+(\"0000\"+(k/60*100+k%60)).slice(-4)},\"%Z\":k=>k.Za,\"%%\":()=>\"%\"},v=v.replace(/%%/g,\"\\0\\0\");for(se in re)v.includes(se)&&(v=v.replace(new RegExp(se,\"g\"),re[se](C)));return v=v.replace(/\\0\\0/g,\"%\"),se=Pr(v),se.length>g?0:(R.set(se,d>>>0),se.length-1)}var Tt=d=>{try{d()}catch(g){he(g)}};function Rn(){var d=ie,g={};for(let[v,C]of Object.entries(d))g[v]=typeof C==\"function\"?function(){It.push(v);try{return C.apply(null,arguments)}finally{A||(It.pop(),ot&&ct===1&&It.length===0&&(ct=0,Tt(yr),typeof Fibers<\"u\"&&Fibers.cb()))}}:C;return g}var ct=0,ot=null,le=0,It=[],sr={},Rr={},Br=0,ur=null,Dr=[];function zr(){return new Promise((d,g)=>{ur={resolve:d,reject:g}})}function Mr(){var d=Yt(65548),g=d+12;W[d>>>2>>>0]=g,W[d+4>>>2>>>0]=g+65536,g=It[0];var v=sr[g];return v===void 0&&(v=Br++,sr[g]=v,Rr[v]=g),E[d+8>>>2>>>0]=v,d}function Ur(d){if(!A){if(ct===0){var g=!1,v=!1;d((C=0)=>{if(!A&&(le=C,g=!0,v)){ct=2,Tt(()=>br(ot)),typeof Browser<\"u\"&&Browser.Ia.Pa&&Browser.Ia.resume(),C=!1;try{var B=(0,ie[Rr[E[ot+8>>>2>>>0]]])()}catch(de){B=de,C=!0}var H=!1;if(!ot){var j=ur;j&&(ur=null,(C?j.reject:j.resolve)(B),H=!0)}if(C&&!H)throw B}}),v=!0,g||(ct=1,ot=Mr(),typeof Browser<\"u\"&&Browser.Ia.Pa&&Browser.Ia.pause(),Tt(()=>gr(ot)))}else ct===2?(ct=0,Tt(wr),cr(ot),ot=null,Dr.forEach(C=>{if(!A)try{C();try{z=z=C=z,r.onExit?.(C),A=!0,l(C,new Me(C))}catch(B){B instanceof Me||B==\"unwind\"||l(1,B)}}catch(B){B instanceof Me||B==\"unwind\"||l(1,B)}})):he(`invalid state: ${ct}`);return le}}function lr(d){return Ur(g=>{d().then(g)})}var Nr={n:function(d,g,v){return lr(async()=>{await r.Ra(d,g,v)})},a:function(d,g,v){throw d>>>=0,new Ct(d).$a(g>>>0,v>>>0),lt=d,Lt++,lt},g:function(){return 0},J:function(){},A:function(){},C:function(){},L:function(){return 0},H:function(){},D:function(){},G:function(){},l:function(){},B:function(){},y:function(){},I:function(){},z:function(){},m:()=>1,q:function(d,g,v){d=g+2097152>>>0<4194305-!!d?(d>>>0)+4294967296*g:NaN,v>>>=0,d=new Date(1e3*d),E[v>>>2>>>0]=d.getUTCSeconds(),E[v+4>>>2>>>0]=d.getUTCMinutes(),E[v+8>>>2>>>0]=d.getUTCHours(),E[v+12>>>2>>>0]=d.getUTCDate(),E[v+16>>>2>>>0]=d.getUTCMonth(),E[v+20>>>2>>>0]=d.getUTCFullYear()-1900,E[v+24>>>2>>>0]=d.getUTCDay(),E[v+28>>>2>>>0]=(d.getTime()-Date.UTC(d.getUTCFullYear(),0,1,0,0,0,0))/864e5|0},r:function(d,g,v){d=g+2097152>>>0<4194305-!!d?(d>>>0)+4294967296*g:NaN,v>>>=0,d=new Date(1e3*d),E[v>>>2>>>0]=d.getSeconds(),E[v+4>>>2>>>0]=d.getMinutes(),E[v+8>>>2>>>0]=d.getHours(),E[v+12>>>2>>>0]=d.getDate(),E[v+16>>>2>>>0]=d.getMonth(),E[v+20>>>2>>>0]=d.getFullYear()-1900,E[v+24>>>2>>>0]=d.getDay(),E[v+28>>>2>>>0]=(Et(d.getFullYear())?St:Ft)[d.getMonth()]+d.getDate()-1|0,E[v+36>>>2>>>0]=-(60*d.getTimezoneOffset()),g=new Date(d.getFullYear(),6,1).getTimezoneOffset();var C=new Date(d.getFullYear(),0,1).getTimezoneOffset();E[v+32>>>2>>>0]=(g!=C&&d.getTimezoneOffset()==Math.min(C,g))|0},s:function(d){d>>>=0;var g=new Date(E[d+20>>>2>>>0]+1900,E[d+16>>>2>>>0],E[d+12>>>2>>>0],E[d+8>>>2>>>0],E[d+4>>>2>>>0],E[d>>>2>>>0],0),v=E[d+32>>>2>>>0],C=g.getTimezoneOffset(),B=new Date(g.getFullYear(),6,1).getTimezoneOffset(),H=new Date(g.getFullYear(),0,1).getTimezoneOffset(),j=Math.min(H,B);return 0>v?E[d+32>>>2>>>0]=+(B!=H&&j==C):0>>2>>>0]=g.getDay(),E[d+28>>>2>>>0]=(Et(g.getFullYear())?St:Ft)[g.getMonth()]+g.getDate()-1|0,E[d>>>2>>>0]=g.getSeconds(),E[d+4>>>2>>>0]=g.getMinutes(),E[d+8>>>2>>>0]=g.getHours(),E[d+12>>>2>>>0]=g.getDate(),E[d+16>>>2>>>0]=g.getMonth(),E[d+20>>>2>>>0]=g.getYear(),d=g.getTime(),isNaN(d)?(E[dr()>>>2>>>0]=61,d=-1):d/=1e3,pr((Ne=d,1<=+Math.abs(Ne)?0>>0:~~+Math.ceil((Ne-+(~~Ne>>>0))/4294967296)>>>0:0)),d>>>0},o:function(){return-52},p:function(){},w:function(d,g,v){function C(J){return(J=J.toTimeString().match(/\\(([A-Za-z ]+)\\)$/))?J[1]:\"GMT\"}v>>>=0;var B=new Date().getFullYear(),H=new Date(B,0,1),j=new Date(B,6,1);B=H.getTimezoneOffset();var de=j.getTimezoneOffset();W[d>>>0>>>2>>>0]=60*Math.max(B,de),E[g>>>0>>>2>>>0]=+(B!=de),d=C(H),g=C(j),d=qt(d),g=qt(g),de>>2>>>0]=d,W[v+4>>>2>>>0]=g):(W[v>>>2>>>0]=g,W[v+4>>>2>>>0]=d)},e:()=>{he(\"\")},b:function(d,g,v){return d>>>=0,g=ir(g>>>0,v>>>0),We[d].apply(null,g)},i:function(d,g,v){return d>>>=0,g=ir(g>>>0,v>>>0),We[d].apply(null,g)},h:()=>Date.now(),x:function(){return 4294901760},c:()=>performance.now(),K:function(d,g,v){return g>>>=0,N.copyWithin(d>>>0>>>0,g>>>0,g+(v>>>0)>>>0)},u:function(d){d>>>=0;var g=N.length;if(4294901760=v;v*=2){var C=g*(1+.2/v);C=Math.min(C,d+100663296);var B=Math;C=Math.max(d,C);e:{B=(B.min.call(B,4294901760,C+(65536-C%65536)%65536)-T.buffer.byteLength+65535)/65536;try{T.grow(B),K();var H=1;break e}catch{}H=void 0}if(H)return!0}return!1},E:function(d,g){d>>>=0,g>>>=0;var v=0;return or().forEach((C,B)=>{var H=g+v;for(B=W[d+4*B>>>2>>>0]=H,H=0;H>>0>>>0]=C.charCodeAt(H);R[B>>>0>>>0]=0,v+=C.length+1}),0},F:function(d,g){d>>>=0,g>>>=0;var v=or();W[d>>>2>>>0]=v.length;var C=0;return v.forEach(B=>C+=B.length+1),W[g>>>2>>>0]=C,0},f:()=>52,k:function(){return 52},t:function(){return 70},j:function(d,g,v,C){g>>>=0,v>>>=0,C>>>=0;for(var B=0,H=0;H>>2>>>0],de=W[g+4>>>2>>>0];g+=8;for(var J=0;J>>0],se=Ze[d];re===0||re===10?((d===1?$:x)(At(se,0)),se.length=0):se.push(re)}B+=de}return W[C>>>2>>>0]=B,0},v:Kt,d:function(d,g,v,C){return Kt(d>>>0,g>>>0,v>>>0,C>>>0)}},ie=function(){function d(v){return ie=v.exports,ie=Rn(),ie=Wr(),T=ie.M,K(),Z.unshift(ie.N),Pe--,Pe==0&&(fe!==null&&(clearInterval(fe),fe=null),Ae&&(v=Ae,Ae=null,v())),ie}var g={a:Nr};if(Pe++,r.instantiateWasm)try{return r.instantiateWasm(g,d)}catch(v){x(`Module.instantiateWasm callback failed with error: ${v}`),n(v)}return nt(g,function(v){d(v.instance)}).catch(n),{}}();r._OrtInit=(d,g)=>(r._OrtInit=ie.O)(d,g),r._OrtGetLastError=(d,g)=>(r._OrtGetLastError=ie.P)(d,g),r._OrtCreateSessionOptions=(d,g,v,C,B,H,j,de,J,re)=>(r._OrtCreateSessionOptions=ie.Q)(d,g,v,C,B,H,j,de,J,re),r._OrtAppendExecutionProvider=(d,g)=>(r._OrtAppendExecutionProvider=ie.R)(d,g),r._OrtAddFreeDimensionOverride=(d,g,v)=>(r._OrtAddFreeDimensionOverride=ie.S)(d,g,v),r._OrtAddSessionConfigEntry=(d,g,v)=>(r._OrtAddSessionConfigEntry=ie.T)(d,g,v),r._OrtReleaseSessionOptions=d=>(r._OrtReleaseSessionOptions=ie.U)(d),r._OrtCreateSession=(d,g,v)=>(r._OrtCreateSession=ie.V)(d,g,v),r._OrtReleaseSession=d=>(r._OrtReleaseSession=ie.W)(d),r._OrtGetInputOutputCount=(d,g,v)=>(r._OrtGetInputOutputCount=ie.X)(d,g,v),r._OrtGetInputName=(d,g)=>(r._OrtGetInputName=ie.Y)(d,g),r._OrtGetOutputName=(d,g)=>(r._OrtGetOutputName=ie.Z)(d,g),r._OrtFree=d=>(r._OrtFree=ie._)(d),r._OrtCreateTensor=(d,g,v,C,B,H)=>(r._OrtCreateTensor=ie.$)(d,g,v,C,B,H),r._OrtGetTensorData=(d,g,v,C,B)=>(r._OrtGetTensorData=ie.aa)(d,g,v,C,B),r._OrtReleaseTensor=d=>(r._OrtReleaseTensor=ie.ba)(d),r._OrtCreateRunOptions=(d,g,v,C)=>(r._OrtCreateRunOptions=ie.ca)(d,g,v,C),r._OrtAddRunConfigEntry=(d,g,v)=>(r._OrtAddRunConfigEntry=ie.da)(d,g,v),r._OrtReleaseRunOptions=d=>(r._OrtReleaseRunOptions=ie.ea)(d),r._OrtCreateBinding=d=>(r._OrtCreateBinding=ie.fa)(d),r._OrtBindInput=(d,g,v)=>(r._OrtBindInput=ie.ga)(d,g,v),r._OrtBindOutput=(d,g,v,C)=>(r._OrtBindOutput=ie.ha)(d,g,v,C),r._OrtClearBoundOutputs=d=>(r._OrtClearBoundOutputs=ie.ia)(d),r._OrtReleaseBinding=d=>(r._OrtReleaseBinding=ie.ja)(d),r._OrtRunWithBinding=(d,g,v,C,B)=>(r._OrtRunWithBinding=ie.ka)(d,g,v,C,B),r._OrtRun=(d,g,v,C,B,H,j,de)=>(r._OrtRun=ie.la)(d,g,v,C,B,H,j,de),r._OrtEndProfiling=d=>(r._OrtEndProfiling=ie.ma)(d),r._JsepOutput=(d,g,v)=>(r._JsepOutput=ie.na)(d,g,v),r._JsepGetNodeName=d=>(r._JsepGetNodeName=ie.oa)(d);var dr=()=>(dr=ie.pa)(),Yt=r._malloc=d=>(Yt=r._malloc=ie.qa)(d),cr=r._free=d=>(cr=r._free=ie.ra)(d),pr=d=>(pr=ie.ta)(d),mr=()=>(mr=ie.ua)(),fr=d=>(fr=ie.va)(d),hr=d=>(hr=ie.wa)(d),gr=d=>(gr=ie.ya)(d),yr=()=>(yr=ie.za)(),br=d=>(br=ie.Aa)(d),wr=()=>(wr=ie.Ba)();r.___start_em_js=943100,r.___stop_em_js=943261;function Wr(){var d=ie;d=Object.assign({},d);var g=C=>()=>C()>>>0,v=C=>B=>C(B)>>>0;return d.pa=g(d.pa),d.qa=v(d.qa),d.ua=g(d.ua),d.wa=v(d.wa),d}r.stackAlloc=hr,r.stackSave=mr,r.stackRestore=fr,r.UTF8ToString=Ke,r.stringToUTF8=(d,g,v)=>Gt(d,N,g,v),r.lengthBytesUTF8=ar;var Ot;Ae=function d(){Ot||zt(),Ot||(Ae=d)};function zt(){if(!(0Ii)});var Ei=Zt(()=>{});var Ti=Zt(()=>{});var Oi={};Xt(Oi,{cpus:()=>ed});var ed,ki=F(()=>{ed=void 0});var Bi=Zt((Ri,Zn)=>{\"use strict\";var Pi=(()=>{var e=typeof document<\"u\"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<\"u\"&&(e=e||__filename),function(t={}){function r(){return X.buffer!=fe.buffer&&Ge(),fe}function a(){return X.buffer!=fe.buffer&&Ge(),Ae}function n(){return X.buffer!=fe.buffer&&Ge(),he}function o(){return X.buffer!=fe.buffer&&Ge(),ye}function u(){return X.buffer!=fe.buffer&&Ge(),He}function l(){return X.buffer!=fe.buffer&&Ge(),ze}var i=t,c,m;i.ready=new Promise((s,p)=>{c=s,m=p}),i.mountExternalData=(s,p)=>{(i.cb||(i.cb=new Map)).set(s,p)},i.unmountExternalData=()=>{delete i.cb},i.jsepInit=(s,p,y,S,O,D,V,oe)=>{i.Mb=s,i.wb=p,i.yb=y,i.kb=S,i.xb=O,i.Ea=D,i.zb=V,i.Ab=oe,p=(ne,ae,pe)=>(...xe)=>{let Te=ht,P=ae?.();xe=ne(...xe);let me=ae?.();return P!==me&&(ne=me,pe(P),ae=pe=null),ht!=Te?zl():xe},y=ne=>async(...ae)=>{try{if(i.bb)throw Error(\"Session already started\");let pe=i.bb={Cb:ae[0],errors:[]},xe=await ne(...ae);if(i.bb!==pe)throw Error(\"Session mismatch\");s.flush();let Te=pe.errors;if(0me),0i._OrtRun,ne=>i._OrtRun=ne)),i._OrtRunWithBinding=y(p(i._OrtRunWithBinding,()=>i._OrtRunWithBinding,ne=>i._OrtRunWithBinding=ne)),i._OrtBindInput=p(i._OrtBindInput,()=>i._OrtBindInput,ne=>i._OrtBindInput=ne),i.jsepRegisterBuffer=(ne,ae,pe,xe)=>s.registerBuffer(ne,ae,pe,xe),i.jsepUnregisterBuffers=ne=>{s.unregisterBuffers(ne)},i.jsepGetBuffer=ne=>s.getBuffer(ne),i.jsepCreateDownloader=(ne,ae,pe)=>s.createDownloader(ne,ae,pe)};var f=Object.assign({},i),h=\"./this.program\",b=(s,p)=>{throw p},w=typeof window==\"object\",_=typeof importScripts==\"function\",I=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\",$=i.ENVIRONMENT_IS_PTHREAD||!1,x=\"\";function T(s){return i.locateFile?i.locateFile(s,x):x+s}var A,z,R;if(I){var N=(qn(),Ut(Fn)),E=(Kn(),Ut(jn));x=_?E.dirname(x)+\"/\":__dirname+\"/\",A=(p,y)=>(p=Bt(p)?new URL(p):E.normalize(p),N.readFileSync(p,y?void 0:\"utf8\")),R=p=>(p=A(p,!0),p.buffer||(p=new Uint8Array(p)),p),z=(p,y,S,O=!0)=>{p=Bt(p)?new URL(p):E.normalize(p),N.readFile(p,O?void 0:\"utf8\",(D,V)=>{D?S(D):y(O?V.buffer:V)})},!i.thisProgram&&1{throw process.exitCode=p,y},i.inspect=()=>\"[Emscripten Module object]\";let s;try{s=Ei()}catch(p){throw console.error('The \"worker_threads\" module is not supported in this node.js build - perhaps a newer version is needed?'),p}global.Worker=s.Worker}else(w||_)&&(_?x=self.location.href:typeof document<\"u\"&&document.currentScript&&(x=document.currentScript.src),typeof e<\"u\"&&e&&(x=e),x.indexOf(\"blob:\")!==0?x=x.substr(0,x.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1):x=\"\",I||(A=s=>{var p=new XMLHttpRequest;return p.open(\"GET\",s,!1),p.send(null),p.responseText},_&&(R=s=>{var p=new XMLHttpRequest;return p.open(\"GET\",s,!1),p.responseType=\"arraybuffer\",p.send(null),new Uint8Array(p.response)}),z=(s,p,y)=>{var S=new XMLHttpRequest;S.open(\"GET\",s,!0),S.responseType=\"arraybuffer\",S.onload=()=>{S.status==200||S.status==0&&S.response?p(S.response):y()},S.onerror=y,S.send(null)}));I&&typeof performance>\"u\"&&(global.performance=Ti().performance);var W=console.log.bind(console),te=console.error.bind(console);I&&(W=(...s)=>N.writeSync(1,s.join(\" \")+`\n`),te=(...s)=>N.writeSync(2,s.join(\" \")+`\n`));var Y=W,K=te;Object.assign(i,f),f=null,typeof WebAssembly!=\"object\"&<(\"no native wasm support detected\");var X,Z,Oe=!1,Pe,fe,Ae,he,ye,He,ze;function Ge(){var s=X.buffer;i.HEAP8=fe=new Int8Array(s),i.HEAP16=new Int16Array(s),i.HEAPU8=Ae=new Uint8Array(s),i.HEAPU16=new Uint16Array(s),i.HEAP32=he=new Int32Array(s),i.HEAPU32=ye=new Uint32Array(s),i.HEAPF32=He=new Float32Array(s),i.HEAPF64=ze=new Float64Array(s)}var L=16777216;if($)X=i.wasmMemory;else if(i.wasmMemory)X=i.wasmMemory;else if(X=new WebAssembly.Memory({initial:L/65536,maximum:65536,shared:!0}),!(X.buffer instanceof SharedArrayBuffer))throw K(\"requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag\"),I&&K(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)\"),Error(\"bad memory\");Ge(),L=X.buffer.byteLength;var ee=[],be=[],nt=[],Ne=0,We=null,Me=null;function Ct(){if(Ne--,Ne==0&&(We!==null&&(clearInterval(We),We=null),Me)){var s=Me;Me=null,s()}}function lt(s){throw s=\"Aborted(\"+s+\")\",K(s),Oe=!0,Pe=1,s=new WebAssembly.RuntimeError(s+\". Build with -sASSERTIONS for more info.\"),m(s),s}var Lt=s=>s.startsWith(\"data:application/octet-stream;base64,\"),Bt=s=>s.startsWith(\"file://\"),At;At=\"ort-wasm-simd-threaded.wasm\",Lt(At)||(At=T(At));function Ke(s){if(R)return R(s);throw\"both async and sync fetching of the wasm failed\"}function ar(s){if(w||_){if(typeof fetch==\"function\"&&!Bt(s))return fetch(s,{credentials:\"same-origin\"}).then(p=>{if(!p.ok)throw\"failed to load wasm binary file at '\"+s+\"'\";return p.arrayBuffer()}).catch(()=>Ke(s));if(z)return new Promise((p,y)=>{z(s,S=>p(new Uint8Array(S)),y)})}return Promise.resolve().then(()=>Ke(s))}function Gt(s,p,y){return ar(s).then(S=>WebAssembly.instantiate(S,p)).then(S=>S).then(y,S=>{K(`failed to asynchronously prepare wasm: ${S}`),lt(S)})}function Et(s,p){var y=At;return typeof WebAssembly.instantiateStreaming!=\"function\"||Lt(y)||Bt(y)||I||typeof fetch!=\"function\"?Gt(y,s,p):fetch(y,{credentials:\"same-origin\"}).then(S=>WebAssembly.instantiateStreaming(S,s).then(p,function(O){return K(`wasm streaming compile failed: ${O}`),K(\"falling back to ArrayBuffer instantiation\"),Gt(y,s,p)}))}var St,Ft={932428:(s,p,y,S)=>{if(typeof i>\"u\"||!i.cb)return 1;if(s=Ze(s>>>0),s.startsWith(\"./\")&&(s=s.substring(2)),s=i.cb.get(s),!s)return 2;if(p>>>=0,y>>>=0,S>>>=0,p+y>s.byteLength)return 3;try{return a().set(s.subarray(p,p+y),S>>>0),0}catch{return 4}},932929:s=>i.wb(s),932962:s=>i.yb(s),932994:(s,p,y)=>{i.kb(s,p,y,!0)},933033:(s,p,y)=>{i.kb(s,p,y)},933066:s=>{i.Ea(\"Abs\",s,void 0)},933117:s=>{i.Ea(\"Neg\",s,void 0)},933168:s=>{i.Ea(\"Floor\",s,void 0)},933221:s=>{i.Ea(\"Ceil\",s,void 0)},933273:s=>{i.Ea(\"Reciprocal\",s,void 0)},933331:s=>{i.Ea(\"Sqrt\",s,void 0)},933383:s=>{i.Ea(\"Exp\",s,void 0)},933434:s=>{i.Ea(\"Erf\",s,void 0)},933485:s=>{i.Ea(\"Sigmoid\",s,void 0)},933540:s=>{i.Ea(\"Log\",s,void 0)},933591:s=>{i.Ea(\"Sin\",s,void 0)},933642:s=>{i.Ea(\"Cos\",s,void 0)},933693:s=>{i.Ea(\"Tan\",s,void 0)},933744:s=>{i.Ea(\"Asin\",s,void 0)},933796:s=>{i.Ea(\"Acos\",s,void 0)},933848:s=>{i.Ea(\"Atan\",s,void 0)},933900:s=>{i.Ea(\"Sinh\",s,void 0)},933952:s=>{i.Ea(\"Cosh\",s,void 0)},934004:s=>{i.Ea(\"Asinh\",s,void 0)},934057:s=>{i.Ea(\"Acosh\",s,void 0)},934110:s=>{i.Ea(\"Atanh\",s,void 0)},934163:s=>{i.Ea(\"Tanh\",s,void 0)},934215:s=>{i.Ea(\"Not\",s,void 0)},934266:(s,p,y)=>{i.Ea(\"Clip\",s,{min:p,max:y})},934335:s=>{i.Ea(\"Clip\",s,void 0)},934387:(s,p)=>{i.Ea(\"Elu\",s,{alpha:p})},934445:s=>{i.Ea(\"Relu\",s,void 0)},934497:(s,p)=>{i.Ea(\"LeakyRelu\",s,{alpha:p})},934561:(s,p)=>{i.Ea(\"ThresholdedRelu\",s,{alpha:p})},934631:(s,p)=>{i.Ea(\"Cast\",s,{to:p})},934689:s=>{i.Ea(\"Add\",s,void 0)},934740:s=>{i.Ea(\"Sub\",s,void 0)},934791:s=>{i.Ea(\"Mul\",s,void 0)},934842:s=>{i.Ea(\"Div\",s,void 0)},934893:s=>{i.Ea(\"Pow\",s,void 0)},934944:s=>{i.Ea(\"Equal\",s,void 0)},934997:s=>{i.Ea(\"Greater\",s,void 0)},935052:s=>{i.Ea(\"GreaterOrEqual\",s,void 0)},935114:s=>{i.Ea(\"Less\",s,void 0)},935166:s=>{i.Ea(\"LessOrEqual\",s,void 0)},935225:(s,p,y,S,O)=>{i.Ea(\"ReduceMean\",s,{keepDims:!!p,noopWithEmptyAxes:!!y,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},935384:(s,p,y,S,O)=>{i.Ea(\"ReduceMax\",s,{keepDims:!!p,noopWithEmptyAxes:!!y,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},935542:(s,p,y,S,O)=>{i.Ea(\"ReduceMin\",s,{keepDims:!!p,noopWithEmptyAxes:!!y,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},935700:(s,p,y,S,O)=>{i.Ea(\"ReduceProd\",s,{keepDims:!!p,noopWithEmptyAxes:!!y,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},935859:(s,p,y,S,O)=>{i.Ea(\"ReduceSum\",s,{keepDims:!!p,noopWithEmptyAxes:!!y,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},936017:(s,p,y,S,O)=>{i.Ea(\"ReduceL1\",s,{keepDims:!!p,noopWithEmptyAxes:!!y,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},936174:(s,p,y,S,O)=>{i.Ea(\"ReduceL2\",s,{keepDims:!!p,noopWithEmptyAxes:!!y,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},936331:(s,p,y,S,O)=>{i.Ea(\"ReduceLogSum\",s,{keepDims:!!p,noopWithEmptyAxes:!!y,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},936492:(s,p,y,S,O)=>{i.Ea(\"ReduceSumSquare\",s,{keepDims:!!p,noopWithEmptyAxes:!!y,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},936656:(s,p,y,S,O)=>{i.Ea(\"ReduceLogSumExp\",s,{keepDims:!!p,noopWithEmptyAxes:!!y,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},936820:s=>{i.Ea(\"Where\",s,void 0)},936873:(s,p,y)=>{i.Ea(\"Transpose\",s,{perm:p?Array.from(n().subarray(p>>>0,y>>>0)):[]})},936981:(s,p,y,S,O,D,V,oe,ne,ae,pe,xe,Te,P,me)=>{i.Ea(\"ConvTranspose\",s,{format:ne?\"NHWC\":\"NCHW\",autoPad:p,dilations:[y],group:S,kernel_shape:[O],pads:[D,V],strides:[oe],wIsConst:()=>!!r()[ae>>>0],outputPadding:pe?Array.from(n().subarray(pe>>>0,xe>>>0)):[],outputShape:Te?Array.from(n().subarray(Te>>>0,P>>>0)):[],activation:Ze(me)})},937383:(s,p,y,S,O,D,V,oe,ne,ae,pe,xe,Te,P)=>{i.Ea(\"ConvTranspose\",s,{format:oe?\"NHWC\":\"NCHW\",autoPad:p,dilations:Array.from(n().subarray(y>>>0,(y>>>0)+2>>>0)),group:S,kernelShape:Array.from(n().subarray(O>>>0,(O>>>0)+2>>>0)),pads:Array.from(n().subarray(D>>>0,(D>>>0)+4>>>0)),strides:Array.from(n().subarray(V>>>0,(V>>>0)+2>>>0)),wIsConst:()=>!!r()[ne>>>0],outputPadding:ae?Array.from(n().subarray(ae>>>0,pe>>>0)):[],outputShape:xe?Array.from(n().subarray(xe>>>0,Te>>>0)):[],activation:Ze(P)})},937948:(s,p,y,S,O,D,V,oe,ne,ae,pe,xe,Te,P,me)=>{i.Ea(\"ConvTranspose\",s,{format:ne?\"NHWC\":\"NCHW\",autoPad:p,dilations:[y],group:S,kernel_shape:[O],pads:[D,V],strides:[oe],wIsConst:()=>!!r()[ae>>>0],outputPadding:pe?Array.from(n().subarray(pe>>>0,xe>>>0)):[],outputShape:Te?Array.from(n().subarray(Te>>>0,P>>>0)):[],activation:Ze(me)})},938350:(s,p,y,S,O,D,V,oe,ne,ae,pe,xe,Te,P)=>{i.Ea(\"ConvTranspose\",s,{format:oe?\"NHWC\":\"NCHW\",autoPad:p,dilations:Array.from(n().subarray(y>>>0,(y>>>0)+2>>>0)),group:S,kernelShape:Array.from(n().subarray(O>>>0,(O>>>0)+2>>>0)),pads:Array.from(n().subarray(D>>>0,(D>>>0)+4>>>0)),strides:Array.from(n().subarray(V>>>0,(V>>>0)+2>>>0)),wIsConst:()=>!!r()[ne>>>0],outputPadding:ae?Array.from(n().subarray(ae>>>0,pe>>>0)):[],outputShape:xe?Array.from(n().subarray(xe>>>0,Te>>>0)):[],activation:Ze(P)})},938915:(s,p)=>{i.Ea(\"GlobalAveragePool\",s,{format:p?\"NHWC\":\"NCHW\"})},939006:(s,p,y,S,O,D,V,oe,ne,ae,pe,xe,Te,P,me,Ce)=>{i.Ea(\"AveragePool\",s,{format:Ce?\"NHWC\":\"NCHW\",auto_pad:p,ceil_mode:y,count_include_pad:S,storage_order:O,dilations:[D,V],kernel_shape:[oe,ne],pads:[ae,pe,xe,Te],strides:[P,me]})},939290:(s,p)=>{i.Ea(\"GlobalAveragePool\",s,{format:p?\"NHWC\":\"NCHW\"})},939381:(s,p,y,S,O,D,V,oe,ne,ae,pe,xe,Te,P,me,Ce)=>{i.Ea(\"AveragePool\",s,{format:Ce?\"NHWC\":\"NCHW\",auto_pad:p,ceil_mode:y,count_include_pad:S,storage_order:O,dilations:[D,V],kernel_shape:[oe,ne],pads:[ae,pe,xe,Te],strides:[P,me]})},939665:(s,p)=>{i.Ea(\"GlobalMaxPool\",s,{format:p?\"NHWC\":\"NCHW\"})},939752:(s,p,y,S,O,D,V,oe,ne,ae,pe,xe,Te,P,me,Ce)=>{i.Ea(\"MaxPool\",s,{format:Ce?\"NHWC\":\"NCHW\",auto_pad:p,ceil_mode:y,count_include_pad:S,storage_order:O,dilations:[D,V],kernel_shape:[oe,ne],pads:[ae,pe,xe,Te],strides:[P,me]})},940032:(s,p)=>{i.Ea(\"GlobalMaxPool\",s,{format:p?\"NHWC\":\"NCHW\"})},940119:(s,p,y,S,O,D,V,oe,ne,ae,pe,xe,Te,P,me,Ce)=>{i.Ea(\"MaxPool\",s,{format:Ce?\"NHWC\":\"NCHW\",auto_pad:p,ceil_mode:y,count_include_pad:S,storage_order:O,dilations:[D,V],kernel_shape:[oe,ne],pads:[ae,pe,xe,Te],strides:[P,me]})},940399:(s,p,y,S,O)=>{i.Ea(\"Gemm\",s,{alpha:p,beta:y,transA:S,transB:O})},940503:s=>{i.Ea(\"MatMul\",s,void 0)},940557:(s,p,y,S)=>{i.Ea(\"ArgMax\",s,{keepDims:!!p,selectLastIndex:!!y,axis:S})},940665:(s,p,y,S)=>{i.Ea(\"ArgMin\",s,{keepDims:!!p,selectLastIndex:!!y,axis:S})},940773:(s,p)=>{i.Ea(\"Softmax\",s,{axis:p})},940836:(s,p)=>{i.Ea(\"Concat\",s,{axis:p})},940896:(s,p,y,S,O)=>{i.Ea(\"Split\",s,{axis:p,numOutputs:y,splitSizes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},941036:s=>{i.Ea(\"Expand\",s,void 0)},941090:(s,p)=>{i.Ea(\"Gather\",s,{axis:Number(p)})},941161:(s,p)=>{i.Ea(\"GatherElements\",s,{axis:Number(p)})},941240:(s,p,y,S,O,D,V,oe,ne,ae,pe)=>{i.Ea(\"Resize\",s,{antialias:p,axes:y?Array.from(n().subarray(y>>>0,S>>>0)):[],coordinateTransformMode:Ze(O),cubicCoeffA:D,excludeOutside:V,extrapolationValue:oe,keepAspectRatioPolicy:Ze(ne),mode:Ze(ae),nearestMode:Ze(pe)})},941586:(s,p,y,S,O,D,V)=>{i.Ea(\"Slice\",s,{starts:p?Array.from(n().subarray(p>>>0,y>>>0)):[],ends:S?Array.from(n().subarray(S>>>0,O>>>0)):[],axes:D?Array.from(n().subarray(D>>>0,V>>>0)):[]})},941802:s=>{i.Ea(\"Tile\",s,void 0)},941854:(s,p,y)=>{i.Ea(\"LayerNormalization\",s,{axis:Number(p),epsilon:Number(y)})},941961:(s,p,y)=>{i.Ea(\"InstanceNormalization\",s,{epsilon:p,format:y?\"NHWC\":\"NCHW\"})},942075:(s,p,y)=>{i.Ea(\"InstanceNormalization\",s,{epsilon:p,format:y?\"NHWC\":\"NCHW\"})},942189:s=>{i.Ea(\"Range\",s,void 0)},942242:(s,p)=>{i.Ea(\"Einsum\",s,{equation:Ze(p)})},942323:(s,p,y,S,O)=>{i.Ea(\"Pad\",s,{mode:p,value:y,pads:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},942450:(s,p,y,S,O,D)=>{i.Ea(\"BatchNormalization\",s,{epsilon:p,momentum:y,spatial:!!O,trainingMode:!!S,format:D?\"NHWC\":\"NCHW\"})},942619:(s,p,y,S,O,D)=>{i.Ea(\"BatchNormalization\",s,{epsilon:p,momentum:y,spatial:!!O,trainingMode:!!S,format:D?\"NHWC\":\"NCHW\"})},942788:(s,p,y)=>{i.Ea(\"CumSum\",s,{exclusive:Number(p),reverse:Number(y)})},942885:(s,p,y,S,O,D,V,oe,ne)=>{i.Ea(\"Attention\",s,{numHeads:p,isUnidirectional:y,maskFilterValue:S,scale:O,doRotary:D,qkvHiddenSizes:V?Array.from(n().subarray(Number(oe)>>>0,Number(oe)+V>>>0)):[],pastPresentShareBuffer:!!ne})},943157:s=>{i.Ea(\"Gelu\",s,void 0)},943209:(s,p,y,S,O,D)=>{i.Ea(\"MultiHeadAttention\",s,{numHeads:p,isUnidirectional:y,maskFilterValue:S,scale:O,doRotary:D})},943368:s=>{i.Ea(\"BiasAdd\",s,void 0)},943423:s=>{i.Ea(\"BiasSplitGelu\",s,void 0)},943484:(s,p)=>{i.Ea(\"SkipLayerNormalization\",s,{epsilon:p})},943565:(s,p,y,S,O,D,V,oe,ne,ae,pe,xe,Te)=>{i.Ea(\"Conv\",s,{format:ne?\"NHWC\":\"NCHW\",auto_pad:p,dilations:[y],group:S,kernel_shape:[O],pads:D?Array.from(n().subarray(D>>>0,V>>>0)):[],strides:[oe],w_is_const:()=>!!r()[ae>>>0],activation:Ze(pe),activation_params:xe?Array.from(u().subarray(xe>>>0,Te>>>0)):[]})},943935:(s,p,y,S,O,D,V,oe,ne,ae,pe,xe,Te,P,me,Ce)=>{i.Ea(\"Conv\",s,{format:xe?\"NHWC\":\"NCHW\",auto_pad:p,dilations:[y,S],group:O,kernel_shape:[D,V],pads:oe?Array.from(n().subarray(oe>>>0,ne>>>0)):[],strides:[ae,pe],w_is_const:()=>!!r()[Te>>>0],activation:Ze(P),activation_params:me?Array.from(u().subarray(me>>>0,Ce>>>0)):[]})},944326:s=>{i.zb(s)},944360:(s,p)=>i.Ab(s,p,i.bb.Cb,i.bb.errors)};function qt(s){this.name=\"ExitStatus\",this.message=`Program terminated with exit(${s})`,this.status=s}var Dt=s=>{s.terminate(),s.onmessage=()=>{}},ir=s=>{le.Ya.length==0&&(ct(),le.lb(le.Ya[0]));var p=le.Ya.pop();if(!p)return 6;le.Za.push(p),le.Qa[s.Xa]=p,p.Xa=s.Xa;var y={cmd:\"run\",start_routine:s.Db,arg:s.tb,pthread_ptr:s.Xa};return I&&p.unref(),p.postMessage(y,s.Jb),0},dt=0,or=typeof TextDecoder<\"u\"?new TextDecoder(\"utf8\"):void 0,jt=(s,p,y)=>{p>>>=0;var S=p+y;for(y=p;s[y]&&!(y>=S);)++y;if(16O?S+=String.fromCharCode(O):(O-=65536,S+=String.fromCharCode(55296|O>>10,56320|O&1023))}}else S+=String.fromCharCode(O)}return S},Ze=(s,p)=>(s>>>=0)?jt(a(),s,p):\"\",kr=s=>{var p=Un();return s=s(),Fr(p),s};function ke(s,p){var y=arguments.length-2,S=arguments;return kr(()=>{for(var O=Nn(8*y),D=O>>>3,V=0;V>>0]=oe}return Va(s,y,O,p)})}function Pr(s){if($)return ke(0,1,s);Pe=s,0{if(Pe=s,$)throw sr(s),\"unwind\";Pr(s)},Tt=s=>{s instanceof qt||s==\"unwind\"||b(1,s)};function Rn(){for(var s=i.numThreads;s--;)ct();ee.unshift(()=>{Ne++,ot(()=>Ct())})}function ct(){var s=T(\"ort-wasm-simd-threaded.worker.js\");s=new Worker(s),le.Ya.push(s)}function ot(s){$?s():Promise.all(le.Ya.map(le.lb)).then(s)}var le={Ya:[],Za:[],pb:[],Qa:{},hb(){$?(le.receiveObjectTransfer=le.Bb,le.threadInitTLS=le.ob,le.setExitStatus=le.nb):Rn()},nb:s=>Pe=s,Nb:[\"$terminateWorker\"],Eb:()=>{for(var s of le.Za)Dt(s);for(s of le.Ya)Dt(s);le.Ya=[],le.Za=[],le.Qa=[]},mb:s=>{var p=s.Xa;delete le.Qa[p],le.Ya.push(s),le.Za.splice(le.Za.indexOf(s),1),s.Xa=0,zn(p)},Bb(){},ob(){le.pb.forEach(s=>s())},lb:s=>new Promise(p=>{s.onmessage=D=>{D=D.data;var V=D.cmd;if(D.targetThread&&D.targetThread!=Gr()){var oe=le.Qa[D.targetThread];oe?oe.postMessage(D,D.transferList):K(`Internal error! Worker sent a message \"${V}\" to target pthread ${D.targetThread}, but that thread no longer exists!`)}else V===\"checkMailbox\"?zt():V===\"spawnThread\"?ir(D):V===\"cleanupThread\"?le.mb(le.Qa[D.thread]):V===\"killThread\"?(D=D.thread,V=le.Qa[D],delete le.Qa[D],Dt(V),zn(D),le.Za.splice(le.Za.indexOf(V),1),V.Xa=0):V===\"cancelThread\"?le.Qa[D.thread].postMessage({cmd:\"cancel\"}):V===\"loaded\"?(s.loaded=!0,I&&!s.Xa&&s.unref(),p(s)):V===\"alert\"?alert(`Thread ${D.threadId}: ${D.text}`):D.target===\"setimmediate\"?s.postMessage(D):V===\"callHandler\"?i[D.handler](...D.args):V&&K(`worker sent an unknown command ${V}`)},s.onerror=D=>{throw K(`worker sent an error! ${D.filename}:${D.lineno}: ${D.message}`),D},I&&(s.on(\"message\",D=>s.onmessage({data:D})),s.on(\"error\",D=>s.onerror(D)));var y=[],S=[\"onExit\"],O;for(O of S)i.hasOwnProperty(O)&&y.push(O);s.postMessage({cmd:\"load\",handlers:y,urlOrBlob:i.mainScriptUrlOrBlob||e,wasmMemory:X,wasmModule:Z})})};i.PThread=le;var It=s=>{for(;0{var s=Gr(),p=o()[s+52>>>2>>>0];s=o()[s+56>>>2>>>0],Ga(p,p-s),Fr(p)};function sr(s){if($)return ke(1,0,s);Kt(s)}i.invokeEntryPoint=(s,p)=>{s=Fa.apply(null,[s,p]),0>>2>>>0]=p},this.rb=function(p){o()[this.gb+8>>>2>>>0]=p},this.hb=function(p,y){this.qb(),this.sb(p),this.rb(y)},this.qb=function(){o()[this.gb+16>>>2>>>0]=0}}var Br=0,ur=0;function Dr(s,p,y,S){return $?ke(2,1,s,p,y,S):zr(s,p,y,S)}function zr(s,p,y,S){if(s>>>=0,p>>>=0,y>>>=0,S>>>=0,typeof SharedArrayBuffer>\"u\")return K(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\"),6;var O=[];return $&&O.length===0?Dr(s,p,y,S):(s={Db:y,Xa:s,tb:S,Jb:O},$?(s.Lb=\"spawnThread\",postMessage(s,O),0):ir(s))}function Mr(s,p,y){return $?ke(3,1,s,p,y):0}function Ur(s,p){if($)return ke(4,1,s,p)}var lr=s=>{for(var p=0,y=0;y=S?p++:2047>=S?p+=2:55296<=S&&57343>=S?(p+=4,++y):p+=3}return p},Nr=(s,p,y,S)=>{if(y>>>=0,!(0=V){var oe=s.charCodeAt(++D);V=65536+((V&1023)<<10)|oe&1023}if(127>=V){if(y>=S)break;p[y++>>>0]=V}else{if(2047>=V){if(y+1>=S)break;p[y++>>>0]=192|V>>6}else{if(65535>=V){if(y+2>=S)break;p[y++>>>0]=224|V>>12}else{if(y+3>=S)break;p[y++>>>0]=240|V>>18,p[y++>>>0]=128|V>>12&63}p[y++>>>0]=128|V>>6&63}p[y++>>>0]=128|V&63}}return p[y>>>0]=0,y-O},ie=(s,p,y)=>Nr(s,a(),p,y);function dr(s,p){if($)return ke(5,1,s,p)}function Yt(s,p,y){if($)return ke(6,1,s,p,y)}function cr(s,p,y){return $?ke(7,1,s,p,y):0}function pr(s,p){if($)return ke(8,1,s,p)}function mr(s,p,y){if($)return ke(9,1,s,p,y)}function fr(s,p,y,S){if($)return ke(10,1,s,p,y,S)}function hr(s,p,y,S){if($)return ke(11,1,s,p,y,S)}function gr(s,p,y,S){if($)return ke(12,1,s,p,y,S)}function yr(s){if($)return ke(13,1,s)}function br(s,p){if($)return ke(14,1,s,p)}function wr(s,p,y){if($)return ke(15,1,s,p,y)}var Wr=()=>{if(!(0>>=0,typeof Atomics.Kb==\"function\"&&(Atomics.Kb(n(),s>>>2,s).value.then(zt),s+=128,Atomics.store(n(),s>>>2,1))}i.__emscripten_thread_mailbox_await=Ot;var zt=()=>{var s=Gr();if(s&&(Ot(s),!Oe))try{Ha(),Wr()}catch(p){Tt(p)}};i.checkMailbox=zt;var d=[],g=s=>s%4===0&&(s%100!==0||s%400===0),v=[0,31,60,91,121,152,182,213,244,274,305,335],C=[0,31,59,90,120,151,181,212,243,273,304,334];function B(s,p,y,S,O,D,V,oe){return $?ke(16,1,s,p,y,S,O,D,V,oe):-52}function H(s,p,y,S,O,D,V){if($)return ke(17,1,s,p,y,S,O,D,V)}var j=s=>{var p=lr(s)+1,y=Dn(p);return y&&ie(s,y,p),y},de=[],J=(s,p)=>{de.length=0;for(var y;y=a()[s++>>>0];){var S=y!=105;S&=y!=112,p+=S&&p%8?4:0,de.push(y==112?o()[p>>>2>>>0]:y==105?n()[p>>>2>>>0]:l()[p>>>3>>>0]),p+=S?8:4}return de},re={},se=()=>{if(!we){var s={USER:\"web_user\",LOGNAME:\"web_user\",PATH:\"/\",PWD:\"/\",HOME:\"/home/web_user\",LANG:(typeof navigator==\"object\"&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\",_:h||\"./this.program\"},p;for(p in re)re[p]===void 0?delete s[p]:s[p]=re[p];var y=[];for(p in s)y.push(`${p}=${s[p]}`);we=y}return we},we;function Ie(s,p){if($)return ke(18,1,s,p);s>>>=0,p>>>=0;var y=0;return se().forEach((S,O)=>{var D=p+y;for(O=o()[s+4*O>>>2>>>0]=D,D=0;D>>0>>>0]=S.charCodeAt(D);r()[O>>>0>>>0]=0,y+=S.length+1}),0}function k(s,p){if($)return ke(19,1,s,p);s>>>=0,p>>>=0;var y=se();o()[s>>>2>>>0]=y.length;var S=0;return y.forEach(O=>S+=O.length+1),o()[p>>>2>>>0]=S,0}function ue(s){return $?ke(20,1,s):52}function _e(s,p,y,S){return $?ke(21,1,s,p,y,S):52}function ft(s,p,y,S,O){return $?ke(22,1,s,p,y,S,O):70}var Vr=[null,[],[]];function ka(s,p,y,S){if($)return ke(23,1,s,p,y,S);p>>>=0,y>>>=0,S>>>=0;for(var O=0,D=0;D>>2>>>0],oe=o()[p+4>>>2>>>0];p+=8;for(var ne=0;ne>>0],pe=Vr[s];ae===0||ae===10?((s===1?Y:K)(jt(pe,0)),pe.length=0):pe.push(ae)}O+=oe}return o()[S>>>2>>>0]=O,0}var Pa=[31,29,31,30,31,30,31,31,30,31,30,31],Ra=[31,28,31,30,31,30,31,31,30,31,30,31];function kl(s){var p=Array(lr(s)+1);return Nr(s,p,0,p.length),p}var Pl=(s,p)=>{r().set(s,p>>>0)};function Ba(s,p,y,S){function O(P,me,Ce){for(P=typeof P==\"number\"?P.toString():P||\"\";P.lengthXa?-1:0Mt-P.getDate())me-=Mt-P.getDate()+1,P.setDate(1),11>Ce?P.setMonth(Ce+1):(P.setMonth(0),P.setFullYear(P.getFullYear()+1));else{P.setDate(P.getDate()+me);break}}return Ce=new Date(P.getFullYear()+1,0,4),me=oe(new Date(P.getFullYear(),0,4)),Ce=oe(Ce),0>=V(me,P)?0>=V(Ce,P)?P.getFullYear()+1:P.getFullYear():P.getFullYear()-1}s>>>=0,p>>>=0,y>>>=0,S>>>=0;var ae=o()[S+40>>>2>>>0];S={Hb:n()[S>>>2>>>0],Gb:n()[S+4>>>2>>>0],eb:n()[S+8>>>2>>>0],jb:n()[S+12>>>2>>>0],fb:n()[S+16>>>2>>>0],ab:n()[S+20>>>2>>>0],Wa:n()[S+24>>>2>>>0],$a:n()[S+28>>>2>>>0],Ob:n()[S+32>>>2>>>0],Fb:n()[S+36>>>2>>>0],Ib:ae?Ze(ae):\"\"},y=Ze(y),ae={\"%c\":\"%a %b %d %H:%M:%S %Y\",\"%D\":\"%m/%d/%y\",\"%F\":\"%Y-%m-%d\",\"%h\":\"%b\",\"%r\":\"%I:%M:%S %p\",\"%R\":\"%H:%M\",\"%T\":\"%H:%M:%S\",\"%x\":\"%m/%d/%y\",\"%X\":\"%H:%M:%S\",\"%Ec\":\"%c\",\"%EC\":\"%C\",\"%Ex\":\"%m/%d/%y\",\"%EX\":\"%H:%M:%S\",\"%Ey\":\"%y\",\"%EY\":\"%Y\",\"%Od\":\"%d\",\"%Oe\":\"%e\",\"%OH\":\"%H\",\"%OI\":\"%I\",\"%Om\":\"%m\",\"%OM\":\"%M\",\"%OS\":\"%S\",\"%Ou\":\"%u\",\"%OU\":\"%U\",\"%OV\":\"%V\",\"%Ow\":\"%w\",\"%OW\":\"%W\",\"%Oy\":\"%y\"};for(var pe in ae)y=y.replace(new RegExp(pe,\"g\"),ae[pe]);var xe=\"Sunday Monday Tuesday Wednesday Thursday Friday Saturday\".split(\" \"),Te=\"January February March April May June July August September October November December\".split(\" \");ae={\"%a\":P=>xe[P.Wa].substring(0,3),\"%A\":P=>xe[P.Wa],\"%b\":P=>Te[P.fb].substring(0,3),\"%B\":P=>Te[P.fb],\"%C\":P=>D((P.ab+1900)/100|0,2),\"%d\":P=>D(P.jb,2),\"%e\":P=>O(P.jb,2,\" \"),\"%g\":P=>ne(P).toString().substring(2),\"%G\":P=>ne(P),\"%H\":P=>D(P.eb,2),\"%I\":P=>(P=P.eb,P==0?P=12:12{for(var me=0,Ce=0;Ce<=P.fb-1;me+=(g(P.ab+1900)?Pa:Ra)[Ce++]);return D(P.jb+me,3)},\"%m\":P=>D(P.fb+1,2),\"%M\":P=>D(P.Gb,2),\"%n\":()=>`\n`,\"%p\":P=>0<=P.eb&&12>P.eb?\"AM\":\"PM\",\"%S\":P=>D(P.Hb,2),\"%t\":()=>\"\t\",\"%u\":P=>P.Wa||7,\"%U\":P=>D(Math.floor((P.$a+7-P.Wa)/7),2),\"%V\":P=>{var me=Math.floor((P.$a+7-(P.Wa+6)%7)/7);if(2>=(P.Wa+371-P.$a-2)%7&&me++,me)me==53&&(Ce=(P.Wa+371-P.$a)%7,Ce==4||Ce==3&&g(P.ab)||(me=1));else{me=52;var Ce=(P.Wa+7-P.$a-1)%7;(Ce==4||Ce==5&&g(P.ab%400-1))&&me++}return D(me,2)},\"%w\":P=>P.Wa,\"%W\":P=>D(Math.floor((P.$a+7-(P.Wa+6)%7)/7),2),\"%y\":P=>(P.ab+1900).toString().substring(2),\"%Y\":P=>P.ab+1900,\"%z\":P=>{P=P.Fb;var me=0<=P;return P=Math.abs(P)/60,(me?\"+\":\"-\")+(\"0000\"+(P/60*100+P%60)).slice(-4)},\"%Z\":P=>P.Ib,\"%%\":()=>\"%\"},y=y.replace(/%%/g,\"\\0\\0\");for(pe in ae)y.includes(pe)&&(y=y.replace(new RegExp(pe,\"g\"),ae[pe](S)));return y=y.replace(/\\0\\0/g,\"%\"),pe=kl(y),pe.length>p?0:(Pl(pe,s),pe.length-1)}var Hr=s=>{try{s()}catch(p){lt(p)}};function Rl(){var s=Q,p={};for(let[y,S]of Object.entries(s))p[y]=typeof S==\"function\"?function(){Lr.push(y);try{return S.apply(null,arguments)}finally{Oe||(Lr.pop(),ht&&kt===1&&Lr.length===0&&(kt=0,dt+=1,Hr(ja),typeof Fibers<\"u\"&&Fibers.Pb()))}}:S;return p}var kt=0,ht=null,Da=0,Lr=[],za={},Ma={},Bl=0,Bn=null,Dl=[];function zl(){return new Promise((s,p)=>{Bn={resolve:s,reject:p}})}function Ml(){var s=Dn(65548),p=s+12;o()[s>>>2>>>0]=p,o()[s+4>>>2>>>0]=p+65536,p=Lr[0];var y=za[p];return y===void 0&&(y=Bl++,za[p]=y,Ma[y]=p),p=y,n()[s+8>>>2>>>0]=p,s}function Ul(){var s=n()[ht+8>>>2>>>0];return s=Q[Ma[s]],--dt,s()}function Nl(s){if(!Oe){if(kt===0){var p=!1,y=!1;s((S=0)=>{if(!Oe&&(Da=S,p=!0,y)){kt=2,Hr(()=>Ka(ht)),typeof Browser<\"u\"&&Browser.ib.vb&&Browser.ib.resume(),S=!1;try{var O=Ul()}catch(oe){O=oe,S=!0}var D=!1;if(!ht){var V=Bn;V&&(Bn=null,(S?V.reject:V.resolve)(O),D=!0)}if(S&&!D)throw O}}),y=!0,p||(kt=1,ht=Ml(),typeof Browser<\"u\"&&Browser.ib.vb&&Browser.ib.pause(),Hr(()=>qa(ht)))}else kt===2?(kt=0,Hr(Ya),Na(ht),ht=null,Dl.forEach(S=>{if(!Oe)try{S(),Wr()}catch(O){Tt(O)}})):lt(`invalid state: ${kt}`);return Da}}function Wl(s){return Nl(p=>{s().then(p)})}le.hb();var Vl=[Pr,sr,Dr,Mr,Ur,dr,Yt,cr,pr,mr,fr,hr,gr,yr,br,wr,B,H,Ie,k,ue,_e,ft,ka],Hl={r:function(s,p,y){return Wl(async()=>{await i.xb(s,p,y)})},b:function(s,p,y){throw s>>>=0,new Rr(s).hb(p>>>0,y>>>0),Br=s,ur++,Br},N:function(s){Wa(s>>>0,!_,1,!w,131072,!1),le.ob()},l:function(s){s>>>=0,$?postMessage({cmd:\"cleanupThread\",thread:s}):le.mb(le.Qa[s])},J:zr,i:Mr,T:Ur,F:dr,H:Yt,U:cr,R:pr,L:mr,Q:fr,p:hr,G:gr,D:yr,S:br,E:wr,q:()=>1,B:function(s,p){s>>>=0,s==p>>>0?setTimeout(()=>zt()):$?postMessage({targetThread:s,cmd:\"checkMailbox\"}):(s=le.Qa[s])&&s.postMessage({cmd:\"checkMailbox\"})},K:function(s,p,y,S){p>>>=0,d.length=y,S=S>>>0>>>3;for(var O=0;O>>0];return s=0>s?Ft[-s-1]:Vl[s],le.ub=p,p=s.apply(null,d),le.ub=0,p},M:Ot,W:function(s){I&&le.Qa[s>>>0].ref()},u:function(s,p,y){s=p+2097152>>>0<4194305-!!s?(s>>>0)+4294967296*p:NaN,y>>>=0,s=new Date(1e3*s),n()[y>>>2>>>0]=s.getUTCSeconds(),n()[y+4>>>2>>>0]=s.getUTCMinutes(),n()[y+8>>>2>>>0]=s.getUTCHours(),n()[y+12>>>2>>>0]=s.getUTCDate(),n()[y+16>>>2>>>0]=s.getUTCMonth(),n()[y+20>>>2>>>0]=s.getUTCFullYear()-1900,n()[y+24>>>2>>>0]=s.getUTCDay(),s=(s.getTime()-Date.UTC(s.getUTCFullYear(),0,1,0,0,0,0))/864e5|0,n()[y+28>>>2>>>0]=s},v:function(s,p,y){s=p+2097152>>>0<4194305-!!s?(s>>>0)+4294967296*p:NaN,y>>>=0,s=new Date(1e3*s),n()[y>>>2>>>0]=s.getSeconds(),n()[y+4>>>2>>>0]=s.getMinutes(),n()[y+8>>>2>>>0]=s.getHours(),n()[y+12>>>2>>>0]=s.getDate(),n()[y+16>>>2>>>0]=s.getMonth(),n()[y+20>>>2>>>0]=s.getFullYear()-1900,n()[y+24>>>2>>>0]=s.getDay(),p=(g(s.getFullYear())?v:C)[s.getMonth()]+s.getDate()-1|0,n()[y+28>>>2>>>0]=p,n()[y+36>>>2>>>0]=-(60*s.getTimezoneOffset()),p=new Date(s.getFullYear(),6,1).getTimezoneOffset();var S=new Date(s.getFullYear(),0,1).getTimezoneOffset();s=(p!=S&&s.getTimezoneOffset()==Math.min(S,p))|0,n()[y+32>>>2>>>0]=s},w:function(s){s>>>=0;var p=new Date(n()[s+20>>>2>>>0]+1900,n()[s+16>>>2>>>0],n()[s+12>>>2>>>0],n()[s+8>>>2>>>0],n()[s+4>>>2>>>0],n()[s>>>2>>>0],0),y=n()[s+32>>>2>>>0],S=p.getTimezoneOffset(),O=new Date(p.getFullYear(),6,1).getTimezoneOffset(),D=new Date(p.getFullYear(),0,1).getTimezoneOffset(),V=Math.min(D,O);return 0>y?n()[s+32>>>2>>>0]=+(O!=D&&V==S):0>>2>>>0]=p.getDay(),y=(g(p.getFullYear())?v:C)[p.getMonth()]+p.getDate()-1|0,n()[s+28>>>2>>>0]=y,n()[s>>>2>>>0]=p.getSeconds(),n()[s+4>>>2>>>0]=p.getMinutes(),n()[s+8>>>2>>>0]=p.getHours(),n()[s+12>>>2>>>0]=p.getDate(),n()[s+16>>>2>>>0]=p.getMonth(),n()[s+20>>>2>>>0]=p.getYear(),s=p.getTime(),isNaN(s)?(n()[Ua()>>>2>>>0]=61,s=-1):s/=1e3,La((St=s,1<=+Math.abs(St)?0>>0:~~+Math.ceil((St-+(~~St>>>0))/4294967296)>>>0:0)),s>>>0},s:B,t:H,A:function(s,p,y){function S(ae){return(ae=ae.toTimeString().match(/\\(([A-Za-z ]+)\\)$/))?ae[1]:\"GMT\"}s>>>=0,p>>>=0,y>>>=0;var O=new Date().getFullYear(),D=new Date(O,0,1),V=new Date(O,6,1);O=D.getTimezoneOffset();var oe=V.getTimezoneOffset(),ne=Math.max(O,oe);o()[s>>>2>>>0]=60*ne,n()[p>>>2>>>0]=+(O!=oe),s=S(D),p=S(V),s=j(s),p=j(p),oe>>2>>>0]=s,o()[y+4>>>2>>>0]=p):(o()[y>>>2>>>0]=p,o()[y+4>>>2>>>0]=s)},d:()=>{lt(\"\")},c:function(s,p,y){return s>>>=0,p=J(p>>>0,y>>>0),Ft[s].apply(null,p)},k:function(s,p,y){return s>>>=0,p=J(p>>>0,y>>>0),Ft[s].apply(null,p)},m:()=>{},j:()=>Date.now(),V:()=>{throw dt+=1,\"unwind\"},C:function(){return 4294901760},f:()=>performance.timeOrigin+performance.now(),g:()=>I?(ki(),Ut(Oi)).cpus().length:navigator.hardwareConcurrency,y:function(s){s>>>=0;var p=a().length;if(s<=p||4294901760=y;y*=2){var S=p*(1+.2/y);S=Math.min(S,s+100663296);var O=Math;S=Math.max(s,S);e:{O=(O.min.call(O,4294901760,S+(65536-S%65536)%65536)-X.buffer.byteLength+65535)/65536;try{X.grow(O),Ge();var D=1;break e}catch{}D=void 0}if(D)return!0}return!1},O:Ie,P:k,I:Kt,h:ue,o:_e,x:ft,n:ka,a:X||i.wasmMemory,z:Ba,e:function(s,p,y,S){return Ba(s>>>0,p>>>0,y>>>0,S>>>0)}},Q=function(){function s(y,S){return Q=y.exports,Q=Rl(),Q=Ll(),le.pb.push(Q.Da),be.unshift(Q.X),Z=S,Ct(),Q}var p={a:Hl};if(Ne++,i.instantiateWasm)try{return i.instantiateWasm(p,s)}catch(y){K(`Module.instantiateWasm callback failed with error: ${y}`),m(y)}return Et(p,function(y){s(y.instance,y.module)}).catch(m),{}}();i._OrtInit=(s,p)=>(i._OrtInit=Q.Y)(s,p),i._OrtGetLastError=(s,p)=>(i._OrtGetLastError=Q.Z)(s,p),i._OrtCreateSessionOptions=(s,p,y,S,O,D,V,oe,ne,ae)=>(i._OrtCreateSessionOptions=Q._)(s,p,y,S,O,D,V,oe,ne,ae),i._OrtAppendExecutionProvider=(s,p)=>(i._OrtAppendExecutionProvider=Q.$)(s,p),i._OrtAddFreeDimensionOverride=(s,p,y)=>(i._OrtAddFreeDimensionOverride=Q.aa)(s,p,y),i._OrtAddSessionConfigEntry=(s,p,y)=>(i._OrtAddSessionConfigEntry=Q.ba)(s,p,y),i._OrtReleaseSessionOptions=s=>(i._OrtReleaseSessionOptions=Q.ca)(s),i._OrtCreateSession=(s,p,y)=>(i._OrtCreateSession=Q.da)(s,p,y),i._OrtReleaseSession=s=>(i._OrtReleaseSession=Q.ea)(s),i._OrtGetInputOutputCount=(s,p,y)=>(i._OrtGetInputOutputCount=Q.fa)(s,p,y),i._OrtGetInputName=(s,p)=>(i._OrtGetInputName=Q.ga)(s,p),i._OrtGetOutputName=(s,p)=>(i._OrtGetOutputName=Q.ha)(s,p),i._OrtFree=s=>(i._OrtFree=Q.ia)(s),i._OrtCreateTensor=(s,p,y,S,O,D)=>(i._OrtCreateTensor=Q.ja)(s,p,y,S,O,D),i._OrtGetTensorData=(s,p,y,S,O)=>(i._OrtGetTensorData=Q.ka)(s,p,y,S,O),i._OrtReleaseTensor=s=>(i._OrtReleaseTensor=Q.la)(s),i._OrtCreateRunOptions=(s,p,y,S)=>(i._OrtCreateRunOptions=Q.ma)(s,p,y,S),i._OrtAddRunConfigEntry=(s,p,y)=>(i._OrtAddRunConfigEntry=Q.na)(s,p,y),i._OrtReleaseRunOptions=s=>(i._OrtReleaseRunOptions=Q.oa)(s),i._OrtCreateBinding=s=>(i._OrtCreateBinding=Q.pa)(s),i._OrtBindInput=(s,p,y)=>(i._OrtBindInput=Q.qa)(s,p,y),i._OrtBindOutput=(s,p,y,S)=>(i._OrtBindOutput=Q.ra)(s,p,y,S),i._OrtClearBoundOutputs=s=>(i._OrtClearBoundOutputs=Q.sa)(s),i._OrtReleaseBinding=s=>(i._OrtReleaseBinding=Q.ta)(s),i._OrtRunWithBinding=(s,p,y,S,O)=>(i._OrtRunWithBinding=Q.ua)(s,p,y,S,O),i._OrtRun=(s,p,y,S,O,D,V,oe)=>(i._OrtRun=Q.va)(s,p,y,S,O,D,V,oe),i._OrtEndProfiling=s=>(i._OrtEndProfiling=Q.wa)(s),i._JsepOutput=(s,p,y)=>(i._JsepOutput=Q.xa)(s,p,y),i._JsepGetNodeName=s=>(i._JsepGetNodeName=Q.ya)(s);var Ua=()=>(Ua=Q.za)(),Gr=i._pthread_self=()=>(Gr=i._pthread_self=Q.Aa)(),Dn=i._malloc=s=>(Dn=i._malloc=Q.Ba)(s),Na=i._free=s=>(Na=i._free=Q.Ca)(s);i.__emscripten_tls_init=()=>(i.__emscripten_tls_init=Q.Da)();var Wa=i.__emscripten_thread_init=(s,p,y,S,O,D)=>(Wa=i.__emscripten_thread_init=Q.Fa)(s,p,y,S,O,D);i.__emscripten_thread_crashed=()=>(i.__emscripten_thread_crashed=Q.Ga)();var Va=(s,p,y,S)=>(Va=Q.Ha)(s,p,y,S),zn=s=>(zn=Q.Ia)(s),Mn=i.__emscripten_thread_exit=s=>(Mn=i.__emscripten_thread_exit=Q.Ja)(s),Ha=()=>(Ha=Q.Ka)(),La=s=>(La=Q.La)(s),Ga=(s,p)=>(Ga=Q.Ma)(s,p),Un=()=>(Un=Q.Na)(),Fr=s=>(Fr=Q.Oa)(s),Nn=s=>(Nn=Q.Pa)(s),Fa=i.dynCall_ii=(s,p)=>(Fa=i.dynCall_ii=Q.Ra)(s,p),qa=s=>(qa=Q.Sa)(s),ja=()=>(ja=Q.Ta)(),Ka=s=>(Ka=Q.Ua)(s),Ya=()=>(Ya=Q.Va)();i.___start_em_js=944472,i.___stop_em_js=944633;function Ll(){var s=Q;s=Object.assign({},s);var p=S=>()=>S()>>>0,y=S=>O=>S(O)>>>0;return s.za=p(s.za),s.Aa=p(s.Aa),s.Ba=y(s.Ba),s.emscripten_main_runtime_thread_id=p(s.emscripten_main_runtime_thread_id),s.Na=p(s.Na),s.Pa=y(s.Pa),s}i.wasmMemory=X,i.stackAlloc=Nn,i.stackSave=Un,i.stackRestore=Fr,i.keepRuntimeAlive=()=>0Pi)});var Di=Zt((Hm,td)=>{td.exports='\"use strict\";var Module={},ENVIRONMENT_IS_NODE=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\";if(ENVIRONMENT_IS_NODE){var nodeWorkerThreads=require(\"worker_threads\"),parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",e=>onmessage({data:e}));var fs=require(\"fs\"),vm=require(\"vm\");Object.assign(global,{self:global,require,Module,location:{href:__filename},Worker:nodeWorkerThreads.Worker,importScripts:e=>vm.runInThisContext(fs.readFileSync(e,\"utf8\"),{filename:e}),postMessage:e=>parentPort.postMessage(e),performance:global.performance||{now:Date.now}})}var initializedJS=!1;function threadPrintErr(){var e=Array.prototype.slice.call(arguments).join(\" \");if(ENVIRONMENT_IS_NODE){fs.writeSync(2,e+`\\n`);return}console.error(e)}function threadAlert(){var e=Array.prototype.slice.call(arguments).join(\" \");postMessage({cmd:\"alert\",text:e,threadId:Module._pthread_self()})}var err=threadPrintErr;self.alert=threadAlert,Module.instantiateWasm=(e,t)=>{var a=Module.wasmModule;Module.wasmModule=null;var r=new WebAssembly.Instance(a,e);return t(r)},self.onunhandledrejection=e=>{throw e.reason||e};function handleMessage(e){try{if(e.data.cmd===\"load\"){let a=[];self.onmessage=r=>a.push(r),self.startWorker=r=>{Module=r,postMessage({cmd:\"loaded\"});for(let s of a)handleMessage(s);self.onmessage=handleMessage},Module.wasmModule=e.data.wasmModule;for(const r of e.data.handlers)Module[r]=(...s)=>{postMessage({cmd:\"callHandler\",handler:r,args:s})};if(Module.wasmMemory=e.data.wasmMemory,Module.buffer=Module.wasmMemory.buffer,Module.ENVIRONMENT_IS_PTHREAD=!0,typeof e.data.urlOrBlob==\"string\")importScripts(e.data.urlOrBlob);else{var t=URL.createObjectURL(e.data.urlOrBlob);importScripts(t),URL.revokeObjectURL(t)}ortWasmThreaded(Module)}else if(e.data.cmd===\"run\"){Module.__emscripten_thread_init(e.data.pthread_ptr,0,0,1),Module.__emscripten_thread_mailbox_await(e.data.pthread_ptr),Module.establishStackSpace(),Module.PThread.receiveObjectTransfer(e.data),Module.PThread.threadInitTLS(),initializedJS||(initializedJS=!0);try{Module.invokeEntryPoint(e.data.start_routine,e.data.arg)}catch(a){if(a!=\"unwind\")throw a}}else e.data.cmd===\"cancel\"?Module._pthread_self()&&Module.__emscripten_thread_exit(-1):e.data.target===\"setimmediate\"||(e.data.cmd===\"checkMailbox\"?initializedJS&&Module.checkMailbox():e.data.cmd&&(err(`worker.js received unknown command ${e.data.cmd}`),err(e.data)))}catch(a){throw Module.__emscripten_thread_crashed?.(),a}}self.onmessage=handleMessage;\\n'});var Mi,rd,Xn,Qn,rn,zi,nd,ad,id,Ui,Ve,Jt=F(()=>{\"use strict\";Mi=Ai();rd=Bi(),Qn=!1,rn=!1,zi=!1,nd=e=>{if(e===1)return!1;if(typeof SharedArrayBuffer>\"u\")return typeof self<\"u\"&&!self.crossOriginIsolated&&console.warn(\"env.wasm.numThreads is set to \"+e+\", but this will not work unless you enable crossOriginIsolated mode. See https://web.dev/cross-origin-isolation-guide/ for more info.\"),!1;typeof process<\"u\"&&process.versions&&process.versions.node&&console.warn(\"env.wasm.numThreads is set to \"+e+\", however, currently onnxruntime-web does not support multi-threads in Node.js. Please consider using onnxruntime-node for performance critical scenarios.\");try{return typeof MessageChannel<\"u\"&&new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch{return!1}},ad=()=>{try{return WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,30,1,28,0,65,0,253,15,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,186,1,26,11]))}catch{return!1}},id=(e,t)=>e?t?\"ort-wasm-simd-threaded.wasm\":\"ort-wasm-simd.wasm\":t?\"ort-wasm-threaded.wasm\":\"ort-wasm.wasm\",Ui=async e=>{if(Qn)return Promise.resolve();if(rn)throw new Error(\"multiple calls to 'initializeWebAssembly()' detected.\");if(zi)throw new Error(\"previous call to 'initializeWebAssembly()' failed.\");rn=!0;let t=e.initTimeout,r=e.numThreads,a=e.simd,n=nd(r),o=a&&ad(),u=e.wasmPaths,l=typeof u==\"string\"?u:void 0,i=id(o,n),c=typeof u==\"object\"?u[i]:void 0,m=!1,f=[];if(t>0&&f.push(new Promise(h=>{setTimeout(()=>{m=!0,h()},t)})),f.push(new Promise((h,b)=>{let w=n?rd:Mi,_={locateFile:(I,$)=>{if(n&&I.endsWith(\".worker.js\")&&typeof Blob<\"u\")return URL.createObjectURL(new Blob([Di()],{type:\"text/javascript\"}));if(I.endsWith(\".wasm\")){if(c)return c;let x=l??$;return i===\"ort-wasm-simd.wasm\"?x+\"ort-wasm-simd.jsep.wasm\":i===\"ort-wasm-simd-threaded.wasm\"?x+\"ort-wasm-simd-threaded.jsep.wasm\":x+i}return $+I}};if(n)if(_.numThreads=r,typeof Blob>\"u\")_.mainScriptUrlOrBlob=(void 0)(__dirname,\"ort-wasm-threaded.js\");else{let I=`var ortWasmThreaded=${w.toString()};`;_.mainScriptUrlOrBlob=new Blob([I],{type:\"text/javascript\"})}w(_).then(I=>{rn=!1,Qn=!0,Xn=I,h()},I=>{rn=!1,zi=!0,b(I)})})),await Promise.race(f),m)throw new Error(`WebAssembly backend initializing failed due to timeout: ${t}ms`)},Ve=()=>{if(Qn&&Xn)return Xn;throw new Error(\"WebAssembly is not initialized yet.\")}});var Le,$r,Re,nn=F(()=>{\"use strict\";Jt();Le=(e,t)=>{let r=Ve(),a=r.lengthBytesUTF8(e)+1,n=r._malloc(a);return r.stringToUTF8(e,n,a),t.push(n),n},$r=(e,t,r,a)=>{if(typeof e==\"object\"&&e!==null){if(r.has(e))throw new Error(\"Circular reference in options\");r.add(e)}Object.entries(e).forEach(([n,o])=>{let u=t?t+n:n;if(typeof o==\"object\")$r(o,u+\".\",r,a);else if(typeof o==\"string\"||typeof o==\"number\")a(u,o.toString());else if(typeof o==\"boolean\")a(u,o?\"1\":\"0\");else throw new Error(`Can't handle extra config type: ${typeof o}`)})},Re=e=>{let t=Ve(),r=t.stackSave();try{let a=t.stackAlloc(8);t._OrtGetLastError(a,a+4);let n=t.HEAP32[a/4],o=t.HEAPU32[a/4+1],u=o?t.UTF8ToString(o):\"\";throw new Error(`${e} ERROR_CODE: ${n}, ERROR_MESSAGE: ${u}`)}finally{t.stackRestore(r)}}});var Ni,Wi=F(()=>{\"use strict\";Jt();nn();Ni=e=>{let t=Ve(),r=0,a=[],n=e||{};try{if(e?.logSeverityLevel===void 0)n.logSeverityLevel=2;else if(typeof e.logSeverityLevel!=\"number\"||!Number.isInteger(e.logSeverityLevel)||e.logSeverityLevel<0||e.logSeverityLevel>4)throw new Error(`log serverity level is not valid: ${e.logSeverityLevel}`);if(e?.logVerbosityLevel===void 0)n.logVerbosityLevel=0;else if(typeof e.logVerbosityLevel!=\"number\"||!Number.isInteger(e.logVerbosityLevel))throw new Error(`log verbosity level is not valid: ${e.logVerbosityLevel}`);e?.terminate===void 0&&(n.terminate=!1);let o=0;return e?.tag!==void 0&&(o=Le(e.tag,a)),r=t._OrtCreateRunOptions(n.logSeverityLevel,n.logVerbosityLevel,!!n.terminate,o),r===0&&Re(\"Can't create run options.\"),e?.extra!==void 0&&$r(e.extra,\"\",new WeakSet,(u,l)=>{let i=Le(u,a),c=Le(l,a);t._OrtAddRunConfigEntry(r,i,c)!==0&&Re(`Can't set a run config entry: ${u} - ${l}.`)}),[r,a]}catch(o){throw r!==0&&t._OrtReleaseRunOptions(r),a.forEach(u=>t._free(u)),o}}});var od,sd,ud,ld,Vi,Hi=F(()=>{\"use strict\";Jt();nn();od=e=>{switch(e){case\"disabled\":return 0;case\"basic\":return 1;case\"extended\":return 2;case\"all\":return 99;default:throw new Error(`unsupported graph optimization level: ${e}`)}},sd=e=>{switch(e){case\"sequential\":return 0;case\"parallel\":return 1;default:throw new Error(`unsupported execution mode: ${e}`)}},ud=e=>{e.extra||(e.extra={}),e.extra.session||(e.extra.session={});let t=e.extra.session;t.use_ort_model_bytes_directly||(t.use_ort_model_bytes_directly=\"1\"),e.executionProviders&&e.executionProviders.some(r=>(typeof r==\"string\"?r:r.name)===\"webgpu\")&&(e.enableMemPattern=!1)},ld=(e,t,r)=>{for(let a of t){let n=typeof a==\"string\"?a:a.name;switch(n){case\"webnn\":if(n=\"WEBNN\",typeof a!=\"string\"){let u=a;if(u?.deviceType){let l=Le(\"deviceType\",r),i=Le(u.deviceType,r);Ve()._OrtAddSessionConfigEntry(e,l,i)!==0&&Re(`Can't set a session config entry: 'deviceType' - ${u.deviceType}.`)}if(u?.numThreads){let l=u.numThreads;(typeof l!=\"number\"||!Number.isInteger(l)||l<0)&&(l=0);let i=Le(\"numThreads\",r),c=Le(l.toString(),r);Ve()._OrtAddSessionConfigEntry(e,i,c)!==0&&Re(`Can't set a session config entry: 'numThreads' - ${u.numThreads}.`)}if(u?.powerPreference){let l=Le(\"powerPreference\",r),i=Le(u.powerPreference,r);Ve()._OrtAddSessionConfigEntry(e,l,i)!==0&&Re(`Can't set a session config entry: 'powerPreference' - ${u.powerPreference}.`)}}break;case\"webgpu\":if(n=\"JS\",typeof a!=\"string\"){let u=a;if(u?.preferredLayout){if(u.preferredLayout!==\"NCHW\"&&u.preferredLayout!==\"NHWC\")throw new Error(`preferredLayout must be either 'NCHW' or 'NHWC': ${u.preferredLayout}`);let l=Le(\"preferredLayout\",r),i=Le(u.preferredLayout,r);Ve()._OrtAddSessionConfigEntry(e,l,i)!==0&&Re(`Can't set a session config entry: 'preferredLayout' - ${u.preferredLayout}.`)}}break;case\"wasm\":case\"cpu\":continue;default:throw new Error(`not supported execution provider: ${n}`)}let o=Le(n,r);Ve()._OrtAppendExecutionProvider(e,o)!==0&&Re(`Can't append execution provider: ${n}.`)}},Vi=e=>{let t=Ve(),r=0,a=[],n=e||{};ud(n);try{let o=od(n.graphOptimizationLevel??\"all\"),u=sd(n.executionMode??\"sequential\"),l=typeof n.logId==\"string\"?Le(n.logId,a):0,i=n.logSeverityLevel??2;if(!Number.isInteger(i)||i<0||i>4)throw new Error(`log serverity level is not valid: ${i}`);let c=n.logVerbosityLevel??0;if(!Number.isInteger(c)||c<0||c>4)throw new Error(`log verbosity level is not valid: ${c}`);let m=typeof n.optimizedModelFilePath==\"string\"?Le(n.optimizedModelFilePath,a):0;if(r=t._OrtCreateSessionOptions(o,!!n.enableCpuMemArena,!!n.enableMemPattern,u,!!n.enableProfiling,0,l,i,c,m),r===0&&Re(\"Can't create session options.\"),n.executionProviders&&ld(r,n.executionProviders,a),n.freeDimensionOverrides)for(let[f,h]of Object.entries(n.freeDimensionOverrides)){if(typeof f!=\"string\")throw new Error(`free dimension override name must be a string: ${f}`);if(typeof h!=\"number\"||!Number.isInteger(h)||h<0)throw new Error(`free dimension override value must be a non-negative integer: ${h}`);let b=Le(f,a);t._OrtAddFreeDimensionOverride(r,b,h)!==0&&Re(`Can't set a free dimension override: ${f} - ${h}.`)}return n.extra!==void 0&&$r(n.extra,\"\",new WeakSet,(f,h)=>{let b=Le(f,a),w=Le(h,a);t._OrtAddSessionConfigEntry(r,b,w)!==0&&Re(`Can't set a session config entry: ${f} - ${h}.`)}),[r,a]}catch(o){throw r!==0&&t._OrtReleaseSessionOptions(r),a.forEach(u=>t._free(u)),o}}});var Jn,tt,_r,an,xr,on,ea,Ue=F(()=>{\"use strict\";Jn=e=>{switch(e){case\"int8\":return 3;case\"uint8\":return 2;case\"bool\":return 9;case\"int16\":return 5;case\"uint16\":return 4;case\"int32\":return 6;case\"uint32\":return 12;case\"float16\":return 10;case\"float32\":return 1;case\"float64\":return 11;case\"string\":return 8;case\"int64\":return 7;case\"uint64\":return 13;default:throw new Error(`unsupported data type: ${e}`)}},tt=e=>{switch(e){case 3:return\"int8\";case 2:return\"uint8\";case 9:return\"bool\";case 5:return\"int16\";case 4:return\"uint16\";case 6:return\"int32\";case 12:return\"uint32\";case 10:return\"float16\";case 1:return\"float32\";case 11:return\"float64\";case 8:return\"string\";case 7:return\"int64\";case 13:return\"uint64\";default:throw new Error(`unsupported data type: ${e}`)}},_r=e=>[void 0,4,1,1,2,2,4,8,void 0,1,2,8,4,8,void 0,void 0,void 0][e],an=e=>{switch(e){case\"float16\":return Uint16Array;case\"float32\":return Float32Array;case\"uint8\":return Uint8Array;case\"int8\":return Int8Array;case\"uint16\":return Uint16Array;case\"int16\":return Int16Array;case\"int32\":return Int32Array;case\"bool\":return Uint8Array;case\"float64\":return Float64Array;case\"uint32\":return Uint32Array;case\"int64\":return BigInt64Array;case\"uint64\":return BigUint64Array;default:throw new Error(`unsupported type: ${e}`)}},xr=e=>{switch(e){case\"verbose\":return 0;case\"info\":return 1;case\"warning\":return 2;case\"error\":return 3;case\"fatal\":return 4;default:throw new Error(`unsupported logging level: ${e}`)}},on=e=>e===\"float32\"||e===\"int32\"||e===\"int64\"||e===\"bool\"||e===\"float16\"||e===\"uint32\",ea=e=>{switch(e){case\"none\":return 0;case\"cpu\":return 1;case\"cpu-pinned\":return 2;case\"texture\":return 3;case\"gpu-buffer\":return 4;default:throw new Error(`unsupported data location: ${e}`)}}});var Sr,ta=F(()=>{\"use strict\";Sr=async e=>{if(typeof e==\"string\")if(typeof process<\"u\"&&process.versions&&process.versions.node)try{return new Uint8Array(await(void 0)(e))}catch(t){if(t.code===\"ERR_FS_FILE_TOO_LARGE\"){let r=(void 0)(e),a=[];for await(let n of r)a.push(n);return new Uint8Array(Buffer.concat(a))}throw t}else{let t=await fetch(e);if(!t.ok)throw new Error(`failed to load external data file: ${e}`);let r=t.headers.get(\"Content-Length\"),a=r?parseInt(r,10):0;if(a<1073741824)return new Uint8Array(await t.arrayBuffer());{if(!t.body)throw new Error(`failed to load external data file: ${e}, no response body.`);let n=t.body.getReader(),o;try{o=new ArrayBuffer(a)}catch(l){if(l instanceof RangeError){let i=Math.ceil(a/65536);o=new WebAssembly.Memory({initial:i,maximum:i}).buffer}else throw l}let u=0;for(;;){let{done:l,value:i}=await n.read();if(l)break;let c=i.byteLength;new Uint8Array(o,u,c).set(i),u+=c}return new Uint8Array(o,0,a)}}else return e instanceof Blob?new Uint8Array(await e.arrayBuffer()):e instanceof Uint8Array?e:new Uint8Array(e)}});var dd,cd,Li,Gi,Fi,pd,De,Pt=F(()=>{\"use strict\";Ue();dd=[\"V\",\"I\",\"W\",\"E\",\"F\"],cd=(e,t)=>{console.log(`[${dd[e]},${new Date().toISOString()}]${t}`)},Fi=(e,t)=>{Li=e,Gi=t},pd=(e,t)=>{let r=xr(e),a=xr(Li);r>=a&&cd(r,typeof t==\"function\"?t():t)},De=(...e)=>{Gi&&pd(...e)}});var qi,ji=F(()=>{\"use strict\";Ue();qi=(e,t)=>new(an(t))(e)});var sn=F(()=>{\"use strict\"});var un,md,Ki,na,ra,Zi,Xi=F(()=>{\"use strict\";Pt();sn();un=e=>Math.ceil(e/16)*16,md=1,Ki=()=>md++,na=async(e,t,r,a)=>{let n=un(r),o=e.device.createBuffer({size:n,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ});try{let u=e.getCommandEncoder();e.endComputePass(),u.copyBufferToBuffer(t,0,o,0,n),e.flush(),await o.mapAsync(GPUMapMode.READ);let l=o.getMappedRange();if(a){let i=a();return i.set(new Uint8Array(l,0,r)),i}else return new Uint8Array(l.slice(0,r))}finally{o.destroy()}},ra=class{constructor(t){this.backend=t;this.storageCache=new Map,this.freeBuffers=new Map,this.freeUniformBuffers=new Map,this.buffersForUploadingPending=[],this.buffersPending=[],this.externalBuffers=new Map}upload(t,r){let a=r.buffer,n=r.byteOffset,o=r.byteLength,u=un(o),l=this.storageCache.get(t);if(!l)throw new Error(\"gpu data for uploading does not exist\");if(l.originalSize!==o)throw new Error(`inconsistent data size. gpu data size=${l.originalSize}, data size=${o}`);let i=this.backend.device.createBuffer({mappedAtCreation:!0,size:u,usage:GPUBufferUsage.MAP_WRITE|GPUBufferUsage.COPY_SRC}),c=i.getMappedRange();new Uint8Array(c).set(new Uint8Array(a,n,o)),i.unmap();let m=this.backend.getCommandEncoder();this.backend.endComputePass(),m.copyBufferToBuffer(i,0,l.gpuData.buffer,0,u),De(\"verbose\",()=>`[WebGPU] GpuDataManager.upload(id=${t})`),this.buffersForUploadingPending.push(i)}memcpy(t,r){let a=this.storageCache.get(t);if(!a)throw new Error(\"source gpu data for memcpy does not exist\");let n=this.storageCache.get(r);if(!n)throw new Error(\"destination gpu data for memcpy does not exist\");if(a.originalSize!==n.originalSize)throw new Error(\"inconsistent source and destination gpu data size\");let o=un(a.originalSize),u=this.backend.getCommandEncoder();this.backend.endComputePass(),u.copyBufferToBuffer(a.gpuData.buffer,0,n.gpuData.buffer,0,o)}registerExternalBuffer(t,r,a){let n;if(a){if(n=this.externalBuffers.get(a),n===void 0)throw new Error(\"previous buffer is not registered\");if(t===a)return De(\"verbose\",()=>`[WebGPU] GpuDataManager.registerExternalBuffer(size=${r}) => id=${n}, buffer is the same, skip.`),n;this.externalBuffers.delete(a)}else n=Ki();return this.storageCache.set(n,{gpuData:{id:n,type:0,buffer:t},originalSize:r}),this.externalBuffers.set(t,n),De(\"verbose\",()=>`[WebGPU] GpuDataManager.registerExternalBuffer(size=${r}) => id=${n}, registered.`),n}unregisterExternalBuffer(t){let r=this.externalBuffers.get(t);r!==void 0&&(this.storageCache.delete(r),this.externalBuffers.delete(t),De(\"verbose\",()=>`[WebGPU] GpuDataManager.unregisterExternalBuffer() => id=${r}`))}create(t,r=GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST){let a=un(t),n,o=(r&GPUBufferUsage.STORAGE)===GPUBufferUsage.STORAGE,u=(r&GPUBufferUsage.UNIFORM)===GPUBufferUsage.UNIFORM;if(o||u){let i=o?this.freeBuffers:this.freeUniformBuffers,c=i.get(a);c||(c=[],i.set(a,c)),c.length>0?n=c.pop():n=this.backend.device.createBuffer({size:a,usage:r})}else n=this.backend.device.createBuffer({size:a,usage:r});let l={id:Ki(),type:0,buffer:n};return this.storageCache.set(l.id,{gpuData:l,originalSize:t}),De(\"verbose\",()=>`[WebGPU] GpuDataManager.create(size=${t}) => id=${l.id}`),l}get(t){return this.storageCache.get(t)?.gpuData}release(t){let r=this.storageCache.get(t);if(!r)throw new Error(\"releasing data does not exist\");return De(\"verbose\",()=>`[WebGPU] GpuDataManager.release(id=${t}), gpuDataId=${r.gpuData.id}`),this.storageCache.delete(t),this.buffersPending.push(r.gpuData.buffer),r.originalSize}async download(t,r){let a=this.storageCache.get(t);if(!a)throw new Error(\"data does not exist\");await na(this.backend,a.gpuData.buffer,a.originalSize,r)}refreshPendingBuffers(){for(let t of this.buffersForUploadingPending)t.destroy();this.buffersForUploadingPending=[];for(let t of this.buffersPending)(t.usage&GPUBufferUsage.STORAGE)===GPUBufferUsage.STORAGE?this.freeBuffers.get(t.size).push(t):(t.usage&GPUBufferUsage.UNIFORM)===GPUBufferUsage.UNIFORM?this.freeUniformBuffers.get(t.size).push(t):t.destroy();this.buffersPending=[]}dispose(){this.freeBuffers.forEach(t=>{t.forEach(r=>{r.destroy()})}),this.freeUniformBuffers.forEach(t=>{t.forEach(r=>{r.destroy()})}),this.storageCache.forEach(t=>{t.gpuData.buffer.destroy()}),this.storageCache=new Map,this.freeBuffers=new Map,this.freeUniformBuffers=new Map}},Zi=(...e)=>new ra(...e)});var aa,ge,je=F(()=>{\"use strict\";aa=class{constructor(t){Object.assign(this,t)}get cacheKey(){return this.key||(this.key=Object.getOwnPropertyNames(this).sort().map(t=>`${this[t]}`).join(\";\")),this.key}},ge=e=>new aa(e)});var ia,gt,U,Vt,ln,dn,cn,$e=F(()=>{\"use strict\";ia=class{static calcMatMulShape(t,r){return t[1]!==r[0]?void 0:[t[0],r[1]]}},gt=class{static calcShape(t,r,a=!1){let n=t.length,o=r.length;if(n===0)return r;if(o===0)return t;let u=Math.max(t.length,r.length),l=new Array(u);if(a){if(n<2||o<2)return;let i=ia.calcMatMulShape([t[n-2],t[n-1]],[r[o-2],r[o-1]]);if(i===void 0)return;[l[u-2],l[u-1]]=i}for(let i=a?3:1;i<=u;i++){let c=n-i<0?1:t[n-i],m=o-i<0?1:r[o-i];if(c!==m&&c>1&&m>1)return;l[u-i]=Math.max(c,m)}return l}static isValidBroadcast(t,r){let a=t.length,n=r.length;if(a>n)return!1;for(let o=1;o<=a;o++)if(t[a-o]!==1&&t[a-o]!==r[n-o])return!1;return!0}},U=class e{static size(t){return e.getSizeFromDimensionRange(t,0,t.length)}static sizeFromDimension(t,r){if(r<0||r>t.length)throw new Error(`invalid dimension of ${r} for sizeFromDimension as Tensor has ${t.length} dimensions.`);return e.getSizeFromDimensionRange(t,r,t.length)}static sizeToDimension(t,r){if(r<0||r>t.length)throw new Error(`invalid dimension of ${r} for sizeToDimension as Tensor has ${t.length} dimensions.`);return e.getSizeFromDimensionRange(t,0,r)}static getSizeFromDimensionRange(t,r,a){let n=1;for(let o=r;o=0;--n)a[n]=a[n+1]*t[n+1];return a}static normalizeAxis(t,r){if(t<-r&&t>=r)throw new Error(\"unsupported axis for this operation.\");return t<0?t+r:t}static normalizeAxes(t,r){return t.map(a=>this.normalizeAxis(a,r??t.length))}static sortBasedOnPerm(t,r){return r?r.map(a=>t[a]):t.slice().reverse()}static padShape(t,r){let a=t.length;return t.map((n,o)=>n+r[o]+r[o+a])}static areEqual(t,r){return t.length!==r.length?!1:t.every((a,n)=>a===r[n])}},Vt=class e{static adjustPoolAttributes(t,r,a,n,o,u){if(!t&&a.length!==r.length-2)throw new Error(\"length of specified kernel shapes should be 2 less than length of input dimensions\");if(t)for(let l=0;l=a.length?a.push(r[l+2]):a[l]=r[l+2];for(let l=0;l=a[l]||u[l+a.length]>=a[l])throw new Error(\"pads should be smaller than kernel\")}}static adjustPadsBasedOnAutoPad(t,r,a,n,o,u,l){if(l){if(o.length!==2*(t.length-2))throw new Error(\"length of pads should be twice the length of data dimensions\");if(r.length!==t.length-2)throw new Error(\"length of strides should be the length of data dimensions\");if(n.length!==t.length-2)throw new Error(\"length of kernel shapes should be the length of data dimensions\");for(let i=0;i{\"use strict\";Ue();$e();fd=64,sa=(e,t)=>{if(t===3)throw new Error(\"vec3 has same alignment as vec4, use vec4 instead\");switch(e){case 10:return t>1?`vec${t}`:\"f16\";case 1:return t>1?`vec${t}`:\"f32\";case 6:return t>1?`vec${t}`:\"i32\";case 12:return t>1?`vec${t}`:\"u32\";case 7:if(t>1)throw new Error(\"currently not supported vecX of uint64 yet\");return[\"vec2\",\"i32\"];case 13:if(t>1)throw new Error(\"currently not supported vecX of uint64 yet\");return[\"vec2\",\"u32\"];case 9:if(t!==4)throw new Error(\"bool must be vec4\");return[\"u32\",\"vec4\"];default:throw new Error(`Unknown data type: ${e}`)}},Fe=(e,t=1)=>{let r=sa(e,t);return typeof r==\"string\"?r:r[0]},yt=(e,t=1)=>{let r=sa(e,t);return typeof r==\"string\"?r:r[1]},G=e=>e.length===0?[]:[{type:\"uint32\",data:e},{type:\"uint32\",data:U.computeStrides(e)}],qe=e=>e%4===0?4:e%2===0?2:1,Qe=(e=\"f32\",t,r=\"0\")=>!t||t===1?`${e}(${r})`:`vec${t}<${e}>(${r})`,pt=(e,t,r)=>e===\"f32\"?r:t===1?`f32(${r})`:`vec${t}f(${r})`,rt=(e,t)=>t===4?`(${e}.x + ${e}.y + ${e}.z + ${e}.w)`:t===2?`(${e}.x + ${e}.y)`:t===3?`(${e}.x + ${e}.y + ${e}.z)`:e,ce=(e,t,r)=>e.startsWith(\"uniforms.\")&&r>4?typeof t==\"string\"?`${e}[(${t}) / 4][(${t}) % 4]`:`${e}[${Math.floor(t/4)}][${t%4}]`:r>1?`${e}[${t}]`:e,ua=(e,t,r,a,n)=>{let o=typeof r==\"number\",u=o?r:r.length,l=[...new Array(u).keys()],i=u<2?\"u32\":u<=4?`vec${u}`:`array`,c=sa(t,n),m=typeof c==\"string\"?c:c[1],f=typeof c==\"string\"?c:c[0],h={indices:i,value:m,storage:f,tensor:t},b=L=>typeof L==\"string\"?L:`${L}u`,w={offsetToIndices:!1,indicesToOffset:!1,broadcastedIndicesToOffset:!1,set:!1,setByIndices:!1,get:!1,getByIndices:!1},_=o?\"uniforms.\":\"\",I=`${_}${e}_shape`,$=`${_}${e}_strides`,x=\"\";for(let L=0;L ${h.indices} {\n var indices: ${h.indices};\n var current = offset;\n ${x}\n return indices;\n }`,A=L=>(w.offsetToIndices=!0,u<2?L:`o2i_${e}(${L})`),z=[];if(u>=2)for(let L=u-1;L>=0;L--)z.push(`${ce($,L,u)} * (indices[${L}])`);let R=u<2?\"\":`\n fn i2o_${e}(indices: ${h.indices}) -> u32 {\n return ${z.join(\"+\")};\n }`,N=L=>(w.indicesToOffset=!0,u<2?L:`i2o_${e}(${L})`),E=(...L)=>u===0?\"0u\":`${h.indices}(${L.map(b).join(\",\")})`,W=(L,ee)=>u<2?`${L}`:`${ce(L,ee,u)}`,te=(L,ee,be)=>u<2?`${L}=${be};`:`${ce(L,ee,u)}=${be};`,Y={},K=(L,ee)=>{w.broadcastedIndicesToOffset=!0;let be=`${ee.name}broadcastedIndicesTo${e}Offset`;if(be in Y)return`${be}(${L})`;let nt=[];for(let Ne=u-1;Ne>=0;Ne--){let We=ee.indicesGet(\"outputIndices\",Ne+ee.rank-u);nt.push(`${W($,Ne)} * (${We} % ${W(I,Ne)})`)}return Y[be]=`fn ${be}(outputIndices: ${ee.type.indices}) -> u32 {\n return ${nt.length>0?nt.join(\"+\"):\"0u\"};\n }`,`${be}(${L})`},X=(L,ee)=>(()=>{if(h.storage===h.value)return`${e}[${L}]=${ee};`;if(h.storage===\"vec2\"&&h.value===\"i32\")return`${e}[${L}]=vec2(u32(${ee}), select(0u, 0xFFFFFFFFu, ${ee} < 0));`;if(h.storage===\"vec2\"&&h.value===\"u32\")return`${e}[${L}]=vec2(u32(${ee}), 0u);`;if(h.storage===\"u32\"&&h.value===\"vec4\")return`${e}[${L}]=dot(vec4(0x1, 0x100, 0x10000, 0x1000000), vec4(${ee}));`;throw new Error(`not supported combination of storage type ${h.storage} and value type ${h.value} yet`)})(),Z=L=>(()=>{if(h.storage===h.value)return`${e}[${L}]`;if(h.storage===\"vec2\"&&h.value===\"i32\")return`i32(${e}[${L}].x)`;if(h.storage===\"vec2\"&&h.value===\"u32\")return`u32(${e}[${L}].x)`;if(h.storage===\"u32\"&&h.value===\"vec4\")return`vec4(bool(${e}[${L}] & 0xFFu), bool(${e}[${L}] & 0xFF00u), bool(${e}[${L}] & 0xFF0000u), bool(${e}[${L}] & 0xFF000000u))`;throw new Error(`not supported combination of storage type ${h.storage} and value type ${h.value} yet`)})(),Oe=u<2?\"\":`\n fn get_${e}ByIndices(indices: ${h.indices}) -> ${m} {\n return ${Z(`i2o_${e}(indices)`)};\n }`,Pe=u<2?\"\":(()=>{let L=l.map(be=>`d${be}: u32`).join(\", \"),ee=l.map(be=>`d${be}`).join(\", \");return`\n fn get_${e}(${L}) -> ${m} {\n return get_${e}ByIndices(${E(ee)});\n }`})(),fe=(...L)=>{if(L.length!==u)throw new Error(`indices length must be ${u}`);let ee=L.map(b).join(\",\");return u===0?Z(\"0u\"):u===1?Z(ee[0]):(w.get=!0,w.getByIndices=!0,w.indicesToOffset=!0,`get_${e}(${ee})`)},Ae=L=>u<2?Z(L):(w.getByIndices=!0,w.indicesToOffset=!0,`get_${e}ByIndices(${L})`),he=u<2?\"\":`\n fn set_${e}ByIndices(indices: ${h.indices}, value: ${m}) {\n ${X(`i2o_${e}(indices)`,\"value\")}\n }`,ye=u<2?\"\":(()=>{let L=l.map(be=>`d${be}: u32`).join(\", \"),ee=l.map(be=>`d${be}`).join(\", \");return`\n fn set_${e}(${L}, value: ${m}) {\n set_${e}ByIndices(${E(ee)}, value);\n }`})();return{impl:()=>{let L=[],ee=!1;return w.offsetToIndices&&(L.push(T),ee=!0),w.indicesToOffset&&(L.push(R),ee=!0),w.broadcastedIndicesToOffset&&(Object.values(Y).forEach(be=>L.push(be)),ee=!0),w.set&&(L.push(ye),ee=!0),w.setByIndices&&(L.push(he),ee=!0),w.get&&(L.push(Pe),ee=!0),w.getByIndices&&(L.push(Oe),ee=!0),!o&&ee&&L.unshift(`const ${I} = ${h.indices}(${r.join(\",\")});`,`const ${$} = ${h.indices}(${U.computeStrides(r).join(\",\")});`),L.join(`\n`)},type:h,offsetToIndices:A,indicesToOffset:N,broadcastedIndicesToOffset:K,indices:E,indicesGet:W,indicesSet:te,set:(...L)=>{if(L.length!==u+1)throw new Error(`indices length must be ${u}`);let ee=L[u];if(typeof ee!=\"string\")throw new Error(\"value must be string\");let be=L.slice(0,u).map(b).join(\",\");return u===0?X(\"0u\",ee):u===1?X(be[0],ee):(w.set=!0,w.setByIndices=!0,w.indicesToOffset=!0,`set_${e}(${be}, ${ee})`)},setByOffset:X,setByIndices:(L,ee)=>u<2?X(L,ee):(w.setByIndices=!0,w.indicesToOffset=!0,`set_${e}ByIndices(${L}, ${ee});`),get:fe,getByOffset:Z,getByIndices:Ae,usage:a,name:e,strides:$,shape:I,rank:u}},M=(e,t,r,a=1)=>ua(e,t,r,\"input\",a),q=(e,t,r,a=1)=>ua(e,t,r,\"output\",a),pn=(e,t,r,a=1)=>ua(e,t,r,\"internal\",a),oa=class{constructor(t){this.normalizedDispatchGroup=t;this.internalVariables=[];this.variables=[];this.uniforms=[];this.variableIndex=0}guardAgainstOutOfBoundsWorkgroupSizes(t){return`if (global_idx >= ${typeof t==\"number\"?`${t}u`:t}) { return; }`}mainStart(t=fd){let r=typeof t==\"number\"?t:t[0],a=typeof t==\"number\"?1:t[1],n=typeof t==\"number\"?1:t[2],o=this.normalizedDispatchGroup[1]===1&&this.normalizedDispatchGroup[2]===1,u=o?`@builtin(global_invocation_id) global_id : vec3,\n @builtin(workgroup_id) workgroup_id : vec3,\n @builtin(local_invocation_id) local_id : vec3`:`@builtin(local_invocation_id) local_id : vec3,\n @builtin(local_invocation_index) local_idx : u32,\n @builtin(workgroup_id) workgroup_id : vec3,\n @builtin(num_workgroups) num_workgroups : vec3`,l=o?\"let global_idx = global_id.x; let local_idx = local_id.x;\":`let global_idx = (workgroup_id.z * num_workgroups[0] * num_workgroups[1] +\n workgroup_id.y * num_workgroups[0] + workgroup_id.x) * ${r*a*n}u + local_idx;`;return`@compute @workgroup_size(${r}, ${a}, ${n})\n fn main(${u}) {\n ${l}\n `}appendVariableUniforms(t){t.rank!==0&&(t.shape.startsWith(\"uniforms.\")&&this.uniforms.push({name:t.shape.replace(\"uniforms.\",\"\"),type:\"u32\",length:t.rank}),t.strides.startsWith(\"uniforms.\")&&this.uniforms.push({name:t.strides.replace(\"uniforms.\",\"\"),type:\"u32\",length:t.rank}))}declareVariable(t,r){if(t.usage===\"internal\")throw new Error(\"cannot use internal variable with declareVariable(). use registerInternalVariables() instead.\");this.variables.push(t),this.appendVariableUniforms(t);let a=t.usage===\"input\"?\"read\":\"read_write\",n=t.type.storage;return`@group(0) @binding(${r}) var ${t.name}: array<${n}>;`}declareVariables(...t){return t.map(r=>this.declareVariable(r,this.variableIndex++)).join(`\n`)}registerInternalVariable(t){if(t.usage!==\"internal\")throw new Error(\"cannot use input or output variable with registerInternalVariable(). use declareVariables() instead.\");this.internalVariables.push(t),this.appendVariableUniforms(t)}registerInternalVariables(...t){return t.forEach(r=>this.registerInternalVariable(r)),this}registerUniform(t,r,a=1){return this.uniforms.push({name:t,type:r,length:a}),this}registerUniforms(t){return this.uniforms=this.uniforms.concat(t),this}uniformDeclaration(){if(this.uniforms.length===0)return\"\";let t=[];for(let{name:r,type:a,length:n}of this.uniforms)if(n&&n>4)t.push(`${r}:array, ${Math.ceil(n/4)}>`);else{let o=n==null||n===1?a:`vec${n}<${a}>`;t.push(`${r}:${o}`)}return`\n struct Uniforms { ${t.join(\", \")} };\n @group(0) @binding(${this.variableIndex}) var uniforms: Uniforms;`}get additionalImplementations(){return this.uniformDeclaration()+this.variables.map(t=>t.impl()).join(`\n`)+this.internalVariables.map(t=>t.impl()).join(`\n`)}},Qi=e=>new oa(e),er=(e,t)=>{let r=e.length,a=[];for(let n=0;n1&&u===1&&a.unshift(o)}return a},Be=e=>!0});var hd,Ji,gd,yd,mt,eo,to,tr=F(()=>{\"use strict\";$e();je();ve();hd=e=>{if(!e||e.length!==1)throw new Error(\"Transpose requires 1 input.\")},Ji=(e,t)=>t&&t.length!==e?[...new Array(e).keys()].reverse():t,gd=(e,t)=>U.sortBasedOnPerm(e,Ji(e.length,t)),yd=(e,t,r,a)=>{let n=[];n.push(`fn perm(i: ${a.type.indices}) -> ${r.type.indices} {\n var a: ${r.type.indices};`);for(let o=0;o{let r=e.dataType,a=e.dims.length,n=Ji(a,t),o=Be(a),u=gd(e.dims,n),l=o?u.length:u,i=o?a:e.dims,c=q(\"output\",r,l),m=M(\"a\",r,i),f=h=>`\n ${h.registerUniform(\"output_size\",\"u32\").declareVariables(m,c)}\n\n ${yd(n,a,m,c)}\n\n ${h.mainStart()}\n ${h.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n\n let indices = ${c.offsetToIndices(\"global_idx\")};\n let aIndices = perm(indices);\n\n ${c.setByOffset(\"global_idx\",m.getByIndices(\"aIndices\"))}\n }`;return{name:\"Transpose\",shaderCache:{hint:`${t}`,inputDependencies:o?[\"rank\"]:[\"dims\"]},getRunData:h=>{let b=U.size(u);return{outputs:[{dims:u,dataType:h[0].dataType}],dispatchGroup:{x:Math.ceil(b/64)},programUniforms:o?[{type:\"uint32\",data:b},...G(h[0].dims),...G(u)]:[{type:\"uint32\",data:b}]}},getShaderSource:f}},eo=(e,t)=>{hd(e.inputs),e.compute(mt(e.inputs[0],t.perm))},to=e=>ge({perm:e.perm})});var bd,wd,vd,$d,_d,xd,Sd,Id,Cd,Ad,bt,ro,no,ao,io,oo,so,uo,lo,co,po,mo=F(()=>{\"use strict\";$e();ve();mn();tr();bd={max:\"select(bestValue, candidate, candidate > bestValue)\",min:\"select(bestValue, candidate, candidate < bestValue)\",mean:\"bestValue + candidate\",sum:\"bestValue + candidate\",prod:\"bestValue * candidate\",sumSquare:\"bestValue + candidate * candidate\",logSumExp:\"bestValue + exp(candidate)\",l1:\"bestValue + abs(candidate)\",l2:\"bestValue + candidate * candidate\",logSum:\"bestValue + candidate\"},wd={max:\"select(bestValue, candidate, candidate > bestValue)\",min:\"select(bestValue, candidate, candidate < bestValue)\",mean:\"bestValue + candidate\",sum:\"bestValue + candidate\",prod:\"bestValue * candidate\",sumSquare:\"bestValue + candidate\",logSumExp:\"bestValue + candidate\",l1:\"bestValue + candidate\",l2:\"bestValue + candidate\",logSum:\"bestValue + candidate\"},vd={max:\"_A[offset]\",min:\"_A[offset]\",mean:\"0\",sum:\"0\",prod:\"1\",sumSquare:\"0\",logSumExp:\"0\",l1:\"0\",l2:\"0\",logSum:\"0\"},$d={max:\"bestValue\",min:\"bestValue\",sum:\"bestValue\",prod:\"bestValue\",sumSquare:\"bestValue\",logSumExp:\"log(bestValue)\",l1:\"bestValue\",l2:\"sqrt(bestValue)\",logSum:\"log(bestValue)\"},_d=(e,t)=>{let r=[];for(let a=t-e;a{let r=[],a=e.length;for(let o=0;oe[o]);return[r,n]},Sd=(e,t)=>{let r=e.length+t.length,a=[],n=0;for(let o=0;o{for(let r=0;r{let r=[];if(!Id(e,t)){for(let a=0;ar.push(a))}return r},Ad=(e,t,r,a,n,o,u)=>{let l=r[0].dims,i=U.size(o),c=U.size(u),m=M(\"_A\",r[0].dataType,l),f=q(\"output\",n,o),h=32,b=`\n var aBestValues : array<${f.type.storage}, ${h}>;\n `;return{name:e,shaderCache:t,getShaderSource:_=>`\n ${_.registerUniform(\"reduceSize\",\"u32\").declareVariables(m,f)}\n ${b}\n fn DIV_CEIL(a : u32, b : u32) -> u32 {\n return ((a - 1u) / b + 1u);\n }\n ${_.mainStart(h)}\n\n let outputIndex = global_idx / ${h};\n let offset = outputIndex * uniforms.reduceSize;\n\n var bestValue = ${f.type.storage}(${vd[a]});\n let Length = uniforms.reduceSize;\n for (var k = local_idx; k < Length; k = k + ${h}) {\n let candidate = ${f.type.storage}(${m.getByOffset(\"offset + k\")});\n bestValue = ${bd[a]};\n }\n aBestValues[local_idx] = bestValue;\n workgroupBarrier();\n\n var reduceSize = min(Length, ${h}u);\n for (var currentSize = reduceSize / 2u; reduceSize > 1u;\n currentSize = reduceSize / 2u) {\n let interval = DIV_CEIL(reduceSize, 2u);\n if (local_idx < currentSize) {\n let candidate = aBestValues[local_idx + interval];\n bestValue = ${wd[a]};\n aBestValues[local_idx] = bestValue;\n }\n reduceSize = interval;\n workgroupBarrier();\n }\n\n if (local_idx == 0u) {\n ${f.setByOffset(\"outputIndex\",`${a===\"mean\"?`bestValue / ${f.type.storage}(uniforms.reduceSize)`:`${$d[a]}`}`)};\n }\n }`,getRunData:()=>({outputs:[{dims:o,dataType:n}],dispatchGroup:{x:i},programUniforms:[{type:\"uint32\",data:c}]})}},bt=(e,t,r,a)=>{let n=e.inputs.length===1?r:la(e.inputs,r),o=n.axes;o.length===0&&!n.noopWithEmptyAxes&&(o=e.inputs[0].dims.map((b,w)=>w));let u=U.normalizeAxes(o,e.inputs[0].dims.length),l=u,i=e.inputs[0],c=Cd(l,e.inputs[0].dims.length);c.length>0&&(i=e.compute(mt(e.inputs[0],c),{inputs:[0],outputs:[-1]})[0],l=_d(l.length,i.dims.length));let[m,f]=xd(i.dims,l),h=m;n.keepDims&&(h=Sd(m,u)),e.compute(Ad(t,{hint:n.cacheKey,inputDependencies:[\"type\"]},[i],a,e.inputs[0].dataType,h,f),{inputs:[i]})},ro=(e,t)=>{bt(e,\"ReduceMeanShared\",t,\"mean\")},no=(e,t)=>{bt(e,\"ReduceL1Shared\",t,\"l1\")},ao=(e,t)=>{bt(e,\"ReduceL2Shared\",t,\"l2\")},io=(e,t)=>{bt(e,\"ReduceLogSumExpShared\",t,\"logSumExp\")},oo=(e,t)=>{bt(e,\"ReduceMaxShared\",t,\"max\")},so=(e,t)=>{bt(e,\"ReduceMinShared\",t,\"min\")},uo=(e,t)=>{bt(e,\"ReduceProdShared\",t,\"prod\")},lo=(e,t)=>{bt(e,\"ReduceSumShared\",t,\"sum\")},co=(e,t)=>{bt(e,\"ReduceSumSquareShared\",t,\"sumSquare\")},po=(e,t)=>{bt(e,\"ReduceLogSumShared\",t,\"logSum\")}});var wt,Ed,fn,la,vt,Td,Od,kd,Pd,Rd,Bd,Dd,zd,Md,Ud,$t,fo,ho,go,yo,bo,wo,vo,$o,_o,xo,mn=F(()=>{\"use strict\";$e();je();ve();mo();wt=e=>{if(!e||e.length===0||e.length>2)throw new Error(\"Reduce op requires 1 or 2 inputs.\");if(e.length===2&&e[1].dims.length!==1)throw new Error(\"Invalid axes input dims.\")},Ed=e=>[\"\",\"\",`var value = ${e.getByIndices(\"input_indices\")};`,\"\"],fn=(e,t,r,a,n,o,u=!1,l=!1)=>{let i=[],c=r[0].dims,m=c.length,f=U.normalizeAxes(n,m),h=!l&&f.length===0;c.forEach((I,$)=>{h||f.indexOf($)>=0?u&&i.push(1):i.push(I)});let b=i.length,w=U.size(i);return{name:e,shaderCache:t,getShaderSource:I=>{let $=[],x=M(\"_A\",r[0].dataType,m),T=q(\"output\",o,b),A=a(x,T,f),z=A[2];for(let R=0,N=0;R=0?(u&&N++,z=`for(var j${R}: u32 = 0; j${R} < ${c[R]}; j${R}++) {\n ${A[2].includes(\"last_index\")?`let last_index = j${R};`:\"\"}\n ${x.indicesSet(\"input_indices\",R,`j${R}`)}\n ${z}\n }`):($.push(`${x.indicesSet(\"input_indices\",R,T.indicesGet(\"output_indices\",N))};`),N++);return`\n\n ${I.registerUniform(\"output_size\",\"u32\").declareVariables(x,T)}\n\n ${I.mainStart()}\n ${I.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n var input_indices: ${x.type.indices};\n let output_indices = ${T.offsetToIndices(\"global_idx\")};\n\n ${$.join(`\n`)}\n ${A[0]} // init ops for reduce max/min\n ${A[1]}\n ${z}\n ${A[3]}\n ${A.length===4?T.setByOffset(\"global_idx\",\"value\"):A.slice(4).join(`\n`)}\n }`},getRunData:()=>({outputs:[{dims:i,dataType:o}],dispatchGroup:{x:Math.ceil(w/64)},programUniforms:[{type:\"uint32\",data:w},...G(c),...G(i)]})}},la=(e,t)=>{let r=[];return e[1].dims[0]>0&&e[1].getBigInt64Array().forEach(a=>r.push(Number(a))),ge({axes:r,keepDims:t.keepDims,noopWithEmptyAxes:t.noopWithEmptyAxes})},vt=(e,t,r,a)=>{let n=e.inputs,o=n.length===1?r:la(n,r);e.compute(fn(t,{hint:o.cacheKey,inputDependencies:[\"rank\"]},[n[0]],o.noopWithEmptyAxes&&o.axes.length===0?Ed:a,o.axes,n[0].dataType,o.keepDims,o.noopWithEmptyAxes),{inputs:[0]})},Td=(e,t)=>{wt(e.inputs),vt(e,\"ReduceLogSum\",t,(a,n)=>[`var value = ${n.type.storage}(0);`,\"\",`value += ${a.getByIndices(\"input_indices\")};`,\"value = log(value);\"])},Od=(e,t)=>{wt(e.inputs),vt(e,\"ReduceL1\",t,(a,n)=>[`var value = ${n.type.storage}(0);`,\"\",`value += abs(${a.getByIndices(\"input_indices\")});`,\"\"])},kd=(e,t)=>{wt(e.inputs),vt(e,\"ReduceL2\",t,(a,n)=>[`var t = ${n.type.value}(0); var value = ${n.type.value}(0);`,\"\",`t = ${a.getByIndices(\"input_indices\")}; value += (t * t);`,\"value = sqrt(value);\"])},Pd=(e,t)=>{wt(e.inputs),vt(e,\"ReduceLogSumExp\",t,(a,n)=>[`var value = ${n.type.storage}(0);`,\"\",`value += exp(${a.getByIndices(\"input_indices\")});`,\"value = log(value);\"])},Rd=(e,t)=>{wt(e.inputs),vt(e,\"ReduceMax\",t,(a,n,o)=>{let u=[];for(let l=0;l=0||o.length===0)&&u.push(a.indicesSet(\"input_indices\",l,0));return[`${u.join(`\n`)}`,`var value = ${a.getByIndices(\"input_indices\")};`,`value = max(value, ${a.getByIndices(\"input_indices\")});`,\"\"]})},Bd=(e,t)=>{wt(e.inputs),vt(e,\"ReduceMean\",t,(a,n,o)=>{let u=1;for(let l=0;l=0||o.length===0)&&(u*=e.inputs[0].dims[l]);return[\"var sum = f32(0);\",\"\",`sum += f32(${a.getByIndices(\"input_indices\")});`,`let value = ${n.type.value}(sum / ${u});`]})},Dd=(e,t)=>{wt(e.inputs),vt(e,\"ReduceMin\",t,(a,n,o)=>{let u=[];for(let l=0;l=0||o.length===0)&&u.push(`input_indices[${l}] = 0;`);return[`${u.join(`\n`)}`,`var value = ${a.getByIndices(\"input_indices\")};`,`value = min(value, ${a.getByIndices(\"input_indices\")});`,\"\"]})},zd=(e,t)=>{wt(e.inputs),vt(e,\"ReduceProd\",t,(a,n)=>[`var value = ${n.type.storage}(1);`,\"\",`value *= ${a.getByIndices(\"input_indices\")};`,\"\"])},Md=(e,t)=>{wt(e.inputs),vt(e,\"ReduceSum\",t,(a,n)=>[`var value = ${n.type.storage}(0);`,\"\",`value += ${a.getByIndices(\"input_indices\")};`,\"\"])},Ud=(e,t)=>{wt(e.inputs),vt(e,\"ReduceSumSquare\",t,(a,n)=>[`var t = ${n.type.value}(0); var value = ${n.type.value}(0);`,\"\",`t = ${a.getByIndices(\"input_indices\")}; value += t * t;`,\"\"])},$t=(e,t,r)=>{if(t.length===0)return r;let a=1,n=1;for(let o=0;o1024},fo=(e,t)=>{$t(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Bd(e,t):ro(e,t)},ho=(e,t)=>{$t(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Od(e,t):no(e,t)},go=(e,t)=>{$t(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?kd(e,t):ao(e,t)},yo=(e,t)=>{$t(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Pd(e,t):io(e,t)},bo=(e,t)=>{$t(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Rd(e,t):oo(e,t)},wo=(e,t)=>{$t(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Dd(e,t):so(e,t)},vo=(e,t)=>{$t(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?zd(e,t):uo(e,t)},$o=(e,t)=>{$t(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Md(e,t):lo(e,t)},_o=(e,t)=>{$t(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Ud(e,t):co(e,t)},xo=(e,t)=>{$t(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Td(e,t):po(e,t)}});var So,Io,Co,da,Ao=F(()=>{\"use strict\";Ue();je();mn();So=e=>{if(!e||e.length===0||e.length>2)throw new Error(\"ArgMinMaxOp op requires 1 or 2 inputs.\");if(e[0].dataType!==1)throw new Error(\"Invalid input type.\")},Io=(e,t)=>{So(e.inputs);let r=(a,n,o)=>{let u=[];for(let l=0;l=0||o.length===0)&&u.push(`input_indices[${l}] = 0;`);return[`${u.join(`\n`)}`,`var value = ${a.getByIndices(\"input_indices\")};\nvar best_index : i32 = 0;`,`if (${a.getByIndices(\"input_indices\")} ${t.selectLastIndex>0?\"<=\":\"<\"} value) {\n value = ${a.getByIndices(\"input_indices\")};\n best_index = i32(last_index);\n }`,\"\",n.setByOffset(\"global_idx\",\"best_index\")]};e.compute(fn(\"ArgMin\",{hint:t.cacheKey,inputDependencies:[\"rank\"]},[e.inputs[0]],r,[t.axis],7,t.keepDims),{inputs:[0]})},Co=(e,t)=>{So(e.inputs);let r=(a,n,o)=>{let u=[];for(let l=0;l=0||o.length===0)&&u.push(`input_indices[${l}] = 0;`);return[`${u.join(`\n`)}`,`var value = ${a.getByIndices(\"input_indices\")};\nvar best_index : i32 = 0;`,`if (${a.getByIndices(\"input_indices\")} ${t.selectLastIndex>0?\">=\":\">\"} value) {\n value = ${a.getByIndices(\"input_indices\")};\n best_index = i32(last_index);\n }`,\"\",n.setByOffset(\"global_idx\",\"best_index\")]};e.compute(fn(\"argMax\",{hint:t.cacheKey,inputDependencies:[\"rank\"]},[e.inputs[0]],r,[t.axis],7,t.keepDims),{inputs:[0]})},da=e=>ge(e)});var Nd,Wd,Vd,Hd,hn,Ld,Eo,ca=F(()=>{\"use strict\";Ue();sn();ve();Nd=(e,t)=>{let r=e[0],a=e[1],n=e[2],o=e[3],u=e[4],l=e[5];if(u&&l)throw new Error(\"Attention cannot have both past and relative_position_bias\");if(r.dims.length!==3)throw new Error('Input \"input\" must have 3 dimensions');let i=r.dims[0],c=r.dims[1],m=r.dims[2];if(n.dims.length!==1)throw new Error('Input \"bias\" is expected to have 1 dimensions');if(a.dims.length!==2)throw new Error('Input \"weights\" is expected to have 2 dimensions');if(a.dims[0]!==m)throw new Error(\"Input 1 dimension 0 should have same length as dimension 2 of input 0\");if(n.dims[0]!==a.dims[1])throw new Error('Input \"bias\" dimension 0 should have same length as dimension 1 of input \"weights\"');let f=n.dims[0]/3,h=f,b=h;if(t.qkvHiddenSizes.length>0){if(t.qkvHiddenSizes.length!==3)throw new Error(\"qkv_hidden_sizes attribute should have 3 elements\");for(let T of t.qkvHiddenSizes)if(T%t.numHeads!==0)throw new Error(\"qkv_hidden_sizes should be divisible by num_heads\");f=t.qkvHiddenSizes[0],h=t.qkvHiddenSizes[1],b=t.qkvHiddenSizes[2]}let w=c;if(f!==h)throw new Error(\"qkv_hidden_sizes first element should be same as the second\");if(n.dims[0]!==f+h+b)throw new Error('Input \"bias\" dimension 0 should have same length as sum of Q/K/V hidden sizes');let _=0;if(u){if(h!==b)throw new Error('Input \"past\" expect k_hidden_size == v_hidden_size');if(u.dims.length!==5)throw new Error('Input \"past\" must have 5 dimensions');if(u.dims[0]!==2)throw new Error('Input \"past\" first dimension must be 2');if(u.dims[1]!==i)throw new Error('Input \"past\" second dimension must be batch_size');if(u.dims[2]!==t.numHeads)throw new Error('Input \"past\" third dimension must be num_heads');if(u.dims[4]!==h/t.numHeads)throw new Error('Input \"past\" fifth dimension must be k_hidden_size / num_heads');t.pastPresentShareBuffer||(_=u.dims[3])}let I=w+_,$=-1,x=0;if(o)throw new Error(\"Mask not supported\");if(u)throw new Error(\"past is not supported\");if(l)throw new Error(\"relativePositionBias is not supported\");return{batchSize:i,sequenceLength:c,pastSequenceLength:_,kvSequenceLength:w,totalSequenceLength:I,maxSequenceLength:$,inputHiddenSize:m,hiddenSize:f,vHiddenSize:b,headSize:Math.floor(f/t.numHeads),vHeadSize:Math.floor(b/t.numHeads),numHeads:t.numHeads,isUnidirectional:!1,pastPresentShareBuffer:!1,maskFilterValue:t.maskFilterValue,maskType:x,scale:t.scale,broadcastResPosBias:!1,passPastInKv:!1,qkvFormat:1}},Wd=(e,t,r,a)=>{let n=qe(a),o=64,u=a/n;u{let b=q(\"x\",t.dataType,t.dims,n),w=\"thread_max_vector\";n===2?w=\"max(thread_max_vector.x, thread_max_vector.y)\":n===4&&(w=\"max(max(thread_max_vector.x, thread_max_vector.y), max(thread_max_vector.z, thread_max_vector.w))\");let _=yt(t.dataType),I=[{name:\"d_inv\",type:_},{name:\"d_comp\",type:\"u32\"},{name:\"elements_per_wg\",type:\"u32\"}];return`\n var wgMax: array;\n var wgSum: array;\n ${h.registerUniforms(I).declareVariables(b)}\n ${h.mainStart([o,1,1])}\n let localOffset = local_idx * uniforms.elements_per_wg;\n let offset: u32 = workgroup_id.x * uniforms.d_comp + localOffset;\n\n var thread_max_vector = ${Qe(\"f32\",n,\"-3.402823e+38f\")};\n for (var i: u32 = 0; i < uniforms.elements_per_wg && i + localOffset < uniforms.d_comp; i++) {\n thread_max_vector = max(${pt(_,n,\"x[offset + i]\")}, thread_max_vector);\n }\n wgMax[local_idx] = ${w};\n workgroupBarrier();\n\n var maxValue = -3.402823e+38f;\n for (var i = 0u; i < ${o}; i++) {\n maxValue = max(wgMax[i], maxValue);\n }\n\n var sumVector = ${Qe(\"f32\",n,\"0\")};\n for (var i: u32 = 0; i < uniforms.elements_per_wg && i + localOffset < uniforms.d_comp; i++) {\n sumVector += exp(${pt(_,n,\"x[offset + i]\")} - maxValue);\n }\n wgSum[local_idx] = ${rt(\"sumVector\",n)};\n workgroupBarrier();\n\n var sum: f32 = 0;\n for (var i = 0u; i < ${o}; i++) {\n sum += wgSum[i];\n }\n\n if (sum == 0) {\n for (var i: u32 = 0; i < uniforms.elements_per_wg && i + localOffset < uniforms.d_comp; i++) {\n x[offset + i] = ${Qe(\"f32\",n,\"uniforms.d_inv\")};\n }\n } else {\n for (var i: u32 = 0; i < uniforms.elements_per_wg && i + localOffset < uniforms.d_comp; i++) {\n let f32input = ${pt(_,n,\"x[offset + i]\")};\n x[offset + i] = ${b.type.value}(exp(f32input - maxValue) / sum);\n }\n }\n }`};e.compute({name:\"AttentionProbsSoftmax\",shaderCache:{hint:`${o};${m};${n}`},getShaderSource:f,getRunData:()=>({outputs:[],dispatchGroup:{x:r},programUniforms:c})},{inputs:[t],outputs:[]})},Vd=(e,t,r,a,n,o)=>{let u=[n.batchSize,n.numHeads,n.sequenceLength,n.kvSequenceLength+n.pastSequenceLength],l=o.scale===0?1/Math.sqrt(n.headSize):o.scale,i=qe(n.headSize),c=n.headSize/i,m=12,f={x:Math.ceil(n.totalSequenceLength/m),y:Math.ceil(n.sequenceLength/m),z:n.batchSize*n.numHeads},h=tt(t.dataType),b=[{type:\"uint32\",data:n.sequenceLength},{type:\"uint32\",data:c},{type:\"uint32\",data:n.totalSequenceLength},{type:\"uint32\",data:n.kvSequenceLength},{type:h,data:l}],w=[t,r],_=$=>{let x=M(\"q\",t.dataType,t.dims,i),T=M(\"key\",r.dataType,r.dims,i),A=q(\"output\",t.dataType,u),z=Fe(t.dataType),R=[{name:\"M\",type:\"u32\"},{name:\"K\",type:\"u32\"},{name:\"N\",type:\"u32\"},{name:\"kv_sequence_length\",type:\"u32\"},{name:\"alpha\",type:z}];return`\n const beta: ${z} = 1.0;\n const TILE_SIZE = ${m}u;\n\n var tileQ: array<${x.type.storage}, ${m*m}>;\n var tileK: array<${x.type.storage}, ${m*m}>;\n ${$.registerUniforms(R).declareVariables(x,T,A)}\n ${$.mainStart([m,m,1])}\n // x holds the N and y holds the M\n let headIdx = workgroup_id.z;\n let m = workgroup_id.y * TILE_SIZE;\n let n = workgroup_id.x * TILE_SIZE;\n let lm = m + local_id.y;\n let ln = n + local_id.x;\n\n let qOffset = uniforms.M * uniforms.K * headIdx + m * uniforms.K;\n let kOffset = uniforms.kv_sequence_length * uniforms.K * headIdx + n * uniforms.K;\n\n var value = ${Qe(z,i)};\n for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {\n if (m + local_id.y < uniforms.M && w + local_id.x < uniforms.K) {\n tileQ[TILE_SIZE * local_id.y + local_id.x] = q[qOffset + local_id.y * uniforms.K + w + local_id.x];\n }\n if (n + local_id.y < uniforms.N && w + local_id.x < uniforms.K) {\n tileK[TILE_SIZE * local_id.y + local_id.x] = key[kOffset + local_id.y * uniforms.K + w + local_id.x];\n }\n workgroupBarrier();\n\n for (var k: u32 = 0u; k({outputs:[{dims:u,dataType:t.dataType,gpuDataType:0}],dispatchGroup:f,programUniforms:b}),getShaderSource:_},{inputs:w,outputs:[-1]})[0];return Wd(e,I,n.batchSize*n.numHeads*n.sequenceLength,n.totalSequenceLength),I},Hd=(e,t,r,a)=>{let n=[a.batchSize,a.sequenceLength,a.vHiddenSize],o=12,u={x:Math.ceil(a.vHeadSize/o),y:Math.ceil(a.sequenceLength/o),z:a.batchSize*a.numHeads},l=[{type:\"uint32\",data:a.sequenceLength},{type:\"uint32\",data:a.totalSequenceLength},{type:\"uint32\",data:a.vHeadSize},{type:\"uint32\",data:a.numHeads},{type:\"uint32\",data:a.vHiddenSize}],i=c=>{let m=M(\"probs\",t.dataType,t.dims),f=M(\"v\",r.dataType,r.dims),h=q(\"output\",t.dataType,n),b=[{name:\"M\",type:\"u32\"},{name:\"K\",type:\"u32\"},{name:\"N\",type:\"u32\"},{name:\"num_heads\",type:\"u32\"},{name:\"v_hidden_size\",type:\"u32\"}];return`\n const TILE_SIZE = ${o}u;\n var tileQ: array<${m.type.value}, ${o*o}>;\n var tileK: array<${m.type.value}, ${o*o}>;\n ${c.registerUniforms(b).declareVariables(m,f,h)}\n ${c.mainStart([o,o,1])}\n let headIdx = workgroup_id.z;\n let m = workgroup_id.y * TILE_SIZE + local_id.y;\n let n = workgroup_id.x * TILE_SIZE + local_id.x;\n\n let offsetA = headIdx * (uniforms.M * uniforms.K) + m * uniforms.K;\n let offsetB = headIdx * (uniforms.N * uniforms.K) + n;\n\n var value = ${m.type.storage}(0);\n for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {\n if (m < uniforms.M && w + local_id.x < uniforms.K) {\n tileQ[TILE_SIZE * local_id.y + local_id.x] = probs[offsetA + w + local_id.x];\n }\n if (n < uniforms.N && w + local_id.y < uniforms.K) {\n tileK[TILE_SIZE * local_id.y + local_id.x] = v[offsetB + (w + local_id.y) * uniforms.N];\n }\n workgroupBarrier();\n for (var k: u32 = 0u; k({outputs:[{dims:n,dataType:t.dataType,gpuDataType:0}],dispatchGroup:u,programUniforms:l}),getShaderSource:i},{inputs:[t,r],outputs:[0]})[0]},hn=(e,t,r,a,n,o,u,l,i,c,m)=>{let f=Vd(e,t,r,i,c,m);Hd(e,f,a,c)},Ld=(e,t)=>{let r=[t.batchSize,t.numHeads,t.sequenceLength,t.headSize],a=t.sequenceLength,n=t.inputHiddenSize,o=t.headSize,u=12,l={x:Math.ceil(t.headSize/u),y:Math.ceil(t.sequenceLength/u),z:t.batchSize*t.numHeads},i=[e.inputs[0],e.inputs[1],e.inputs[2]],c=[{type:\"uint32\",data:a},{type:\"uint32\",data:n},{type:\"uint32\",data:o},{type:\"uint32\",data:t.numHeads},{type:\"uint32\",data:t.headSize},{type:\"uint32\",data:t.hiddenSize},{type:\"uint32\",data:t.hiddenSize+t.hiddenSize+t.vHiddenSize}],m=f=>{let h=q(\"output_q\",i[0].dataType,r),b=q(\"output_k\",i[0].dataType,r),w=q(\"output_v\",i[0].dataType,r),_=M(\"input\",i[0].dataType,i[0].dims),I=M(\"weight\",i[1].dataType,i[1].dims),$=M(\"bias\",i[2].dataType,i[2].dims),x=_.type.storage,T=[{name:\"M\",type:\"u32\"},{name:\"K\",type:\"u32\"},{name:\"N\",type:\"u32\"},{name:\"num_heads\",type:\"u32\"},{name:\"head_size\",type:\"u32\"},{name:\"hidden_size\",type:\"u32\"},{name:\"ldb\",type:\"u32\"}];return`\n const TILE_SIZE = ${u}u;\n var tileInput: array<${x}, ${u*u}>;\n var tileWeightQ: array<${x}, ${u*u}>;\n var tileWeightK: array<${x}, ${u*u}>;\n var tileWeightV: array<${x}, ${u*u}>;\n ${f.registerUniforms(T).declareVariables(_,I,$,h,b,w)}\n ${f.mainStart([u,u,1])}\n let batchIndex = workgroup_id.z / uniforms.num_heads;\n let headNumber = workgroup_id.z % uniforms.num_heads;\n let m = workgroup_id.y * TILE_SIZE + local_id.y;\n let n = workgroup_id.x * TILE_SIZE + local_id.x;\n\n let inputOffset = batchIndex * (uniforms.M * uniforms.K) + m * uniforms.K;\n let biasOffsetQ = headNumber * uniforms.head_size;\n let biasOffsetK = uniforms.hidden_size + biasOffsetQ;\n let biasOffsetV = uniforms.hidden_size + biasOffsetK;\n\n var valueQ = ${x}(0);\n var valueK = ${x}(0);\n var valueV = ${x}(0);\n for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {\n if (m < uniforms.M && w + local_id.x < uniforms.K) {\n tileInput[TILE_SIZE * local_id.y + local_id.x] = input[inputOffset + w + local_id.x];\n }\n if (n < uniforms.N && w + local_id.y < uniforms.K) {\n let offset = n + (w + local_id.y) * uniforms.ldb;\n tileWeightQ[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetQ + offset];\n tileWeightK[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetK + offset];\n tileWeightV[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetV + offset];\n }\n workgroupBarrier();\n for (var k: u32 = 0u; k({outputs:[{dims:r,dataType:e.inputs[0].dataType,gpuDataType:0},{dims:r,dataType:e.inputs[0].dataType,gpuDataType:0},{dims:r,dataType:e.inputs[0].dataType,gpuDataType:0}],dispatchGroup:l,programUniforms:c}),getShaderSource:m},{inputs:i,outputs:[-1,-1,-1]})},Eo=(e,t)=>{let r=Nd(e.inputs,t),[a,n,o]=Ld(e,r);return hn(e,a,n,o,e.inputs[4],void 0,void 0,void 0,e.inputs[5],r,t)}});var Gd,Fd,qd,To,Oo=F(()=>{\"use strict\";st();$e();je();ve();Gd=(e,t)=>{if(!e||e.length!==5)throw new Error(\"BatchNormalization requires 5 inputs\");let r=(a,n,o)=>{let u=n.length;if(u!==a.length)throw new Error(`${o}: num dimensions != ${u}`);n.forEach((l,i)=>{if(l!==a[i])throw new Error(`${o}: dim[${i}] do not match`)})};if(e[0].dims.length>1){let a=t.format===\"NHWC\"?t.spatial?e[0].dims.slice(-1):e[0].dims.slice(-1).concat(e[0].dims.slice(1,e[0].dims.length-1)):e[0].dims.slice(1,t.spatial?2:void 0);r(e[1].dims,a,\"Invalid input scale\"),r(e[2].dims,a,\"Invalid input B\"),r(e[3].dims,a,\"Invalid input mean\"),r(e[4].dims,a,\"Invalid input var\")}else r(e[1].dims,[1],\"Invalid input scale\"),r(e[2].dims,[1],\"Invalid input B\"),r(e[3].dims,[1],\"Invalid input mean\"),r(e[4].dims,[1],\"Invalid input var\")},Fd=(e,t)=>{let{epsilon:r,spatial:a,format:n}=t,o=e[0].dims,u=a?qe(o[o.length-1]):1,l=n===\"NHWC\"&&o.length>1?u:1,i=U.size(o)/u,c=Be(o.length)&&a,m=c?o.length:o,f=M(\"x\",e[0].dataType,e[0].dims,u),h=M(\"scale\",e[1].dataType,e[1].dims,l),b=M(\"bias\",e[2].dataType,e[2].dims,l),w=M(\"inputMean\",e[3].dataType,e[3].dims,l),_=M(\"inputVar\",e[4].dataType,e[4].dims,l),I=q(\"y\",e[0].dataType,m,u),$=()=>{let T=\"\";if(a)T=`let cOffset = ${o.length===1?\"0u\":n===\"NHWC\"?`outputIndices[${o.length-1}] / ${u}`:\"outputIndices[1]\"};`;else if(n===\"NCHW\")T=`\n ${I.indicesSet(\"outputIndices\",\"0\",\"0\")}\n let cOffset = ${I.indicesToOffset(\"outputIndices\")};`;else{T=`var cIndices = ${h.type.indices}(0);\n cIndices[0] = outputIndices[${o.length-1}];`;for(let A=1;A`\n const epsilon = ${r};\n ${T.registerUniform(\"outputSize\",\"u32\").declareVariables(f,h,b,w,_,I)}\n ${T.mainStart()}\n ${T.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\n var outputIndices = ${I.offsetToIndices(`global_idx * ${u}`)};\n ${$()}\n let scale = ${h.getByOffset(\"cOffset\")};\n let bias = ${b.getByOffset(\"cOffset\")};\n let inputMean = ${w.getByOffset(\"cOffset\")};\n let inputVar = ${_.getByOffset(\"cOffset\")};\n let x = ${f.getByOffset(\"global_idx\")};\n let value = (x - inputMean) * inverseSqrt(inputVar + epsilon) * scale + bias;\n ${I.setByOffset(\"global_idx\",\"value\")}\n }`;return{name:\"BatchNormalization\",shaderCache:{hint:`${t.epsilon}_${t.format}_${a}_${u}`,inputDependencies:c?[\"rank\",\"type\",\"type\",\"type\",\"type\"]:void 0},getShaderSource:x,getRunData:()=>({outputs:[{dims:e[0].dims,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(i/64)},programUniforms:c?[{type:\"uint32\",data:i},...G(o)]:[{type:\"uint32\",data:i}]})}},qd=e=>ge(e),To=(e,t)=>{let{inputs:r,outputCount:a}=e,n=qd({...t,outputCount:a});if(Se.webgpu.validateInputContent&&Gd(r,n),t.trainingMode)throw new Error(\"BatchNormalization trainingMode is not supported yet.\");e.compute(Fd(r,n))}});var jd,Kd,ko,Po=F(()=>{\"use strict\";$e();ve();jd=e=>{if(e[0].dims.length!==3)throw new Error(\"input should have 3 dimensions\");if(![320,640,1280].includes(e[0].dims[2]))throw new Error(\"number of channels should be 320, 640 or 1280\");if(e[1].dims.length!==1)throw new Error(\"bias is expected to have 1 dimensions\");if(e[0].dims[2]!==e[1].dims[0])throw new Error(\"last dimension of input and bias are not the same\")},Kd=e=>{let t=e[0].dims,r=e[0].dims[2],a=U.size(t)/4,n=e[0].dataType,o=M(\"input\",n,t,4),u=M(\"bias\",n,[r],4),l=M(\"residual\",n,t,4),i=q(\"output\",n,t,4);return{name:\"BiasAdd\",getRunData:()=>({outputs:[{dims:t,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(a/64)}}),getShaderSource:m=>`\n const channels = ${r}u / 4;\n ${m.declareVariables(o,u,l,i)}\n\n ${m.mainStart()}\n ${m.guardAgainstOutOfBoundsWorkgroupSizes(a)}\n let value = ${o.getByOffset(\"global_idx\")}\n + ${u.getByOffset(\"global_idx % channels\")} + ${l.getByOffset(\"global_idx\")};\n ${i.setByOffset(\"global_idx\",\"value\")}\n }`}},ko=e=>{jd(e.inputs),e.compute(Kd(e.inputs))}});var Yd,Ee,Ro,Bo,Do,zo,Mo,Uo,No,Wo,Vo,Zd,Ho,Lo,Go,Fo,gn,qo,yn,jo,Ko,Yo,Zo,Xo,Qo,Jo,es,ts,rs,ns,as,is,os,ss,us,ls,pa=F(()=>{\"use strict\";Ue();$e();je();ve();Yd=(e,t,r,a,n,o)=>{let u=Math.ceil(t/4),l=\"\";typeof n==\"string\"?l=`${n}(a)`:l=n(\"a\");let i=M(\"inputData\",r,[u],4),c=q(\"outputData\",a,[u],4);return`\n ${e.registerUniform(\"vec_size\",\"u32\").declareVariables(i,c)}\n\n ${o??\"\"}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.vec_size\")}\n\n let a = ${i.getByOffset(\"global_idx\")};\n ${c.setByOffset(\"global_idx\",l)}\n }`},Ee=(e,t,r,a,n,o=e.dataType)=>({name:t,shaderCache:{hint:n,inputDependencies:[\"type\"]},getShaderSource:u=>Yd(u,U.size(e.dims),e.dataType,o,r,a),getRunData:u=>({outputs:[{dims:e.dims,dataType:o}],dispatchGroup:{x:Math.ceil(U.size(u[0].dims)/64/4)},programUniforms:[{type:\"uint32\",data:Math.ceil(U.size(e.dims)/4)}]})}),Ro=e=>{e.compute(Ee(e.inputs[0],\"Abs\",\"abs\"))},Bo=e=>{e.compute(Ee(e.inputs[0],\"Acos\",\"acos\"))},Do=e=>{e.compute(Ee(e.inputs[0],\"Acosh\",\"acosh\"))},zo=e=>{e.compute(Ee(e.inputs[0],\"Asin\",\"asin\"))},Mo=e=>{e.compute(Ee(e.inputs[0],\"Asinh\",\"asinh\"))},Uo=e=>{e.compute(Ee(e.inputs[0],\"Atan\",\"atan\"))},No=e=>{e.compute(Ee(e.inputs[0],\"Atanh\",\"atanh\"))},Wo=e=>ge(e),Vo=(e,t)=>{let r;switch(t.to){case 10:r=\"vec4\";break;case 1:r=\"vec4\";break;case 12:r=\"vec4\";break;case 6:r=\"vec4\";break;case 9:r=\"vec4\";break;default:throw new RangeError(`not supported type (specified in attribute 'to' from 'Cast' operator): ${t.to}`)}e.compute(Ee(e.inputs[0],\"Cast\",r,void 0,t.cacheKey,t.to))},Zd=e=>{let t=e.length>=2&&e[1].data!==0?e[1].getFloat32Array()[0]:dn,r=e.length>=3&&e[2].data!==0?e[2].getFloat32Array()[0]:cn;return ge({min:t,max:r})},Ho=(e,t)=>{let r=e.inputs.length===1?t:Zd(e.inputs),a=yt(e.inputs[0].dataType);e.compute(Ee(e.inputs[0],\"Clip\",n=>`clamp(${n}, clip_min_, clip_max_)`,`\n const clip_min_: vec4<${a}> = vec4(${a}(${r.min}));\n const clip_max_: vec4<${a}> = vec4(${a}(${r.max}));\n`,r.cacheKey),{inputs:[0]})},Lo=e=>{e.compute(Ee(e.inputs[0],\"Ceil\",\"ceil\"))},Go=e=>{e.compute(Ee(e.inputs[0],\"Cos\",\"cos\"))},Fo=e=>{e.compute(Ee(e.inputs[0],\"Cosh\",\"cosh\"))},gn=e=>ge(e),qo=(e,t)=>{let r=yt(e.inputs[0].dataType);e.compute(Ee(e.inputs[0],\"Elu\",a=>`elu_vf32(${a})`,`\n const elu_alpha_ = ${r}(${t.alpha});\n\n fn elu_f32(a: ${r}) -> ${r} {\n return select((exp(a) - 1.0) * elu_alpha_, a, a >= 0.0);\n }\n\n fn elu_vf32(v: vec4<${r}>) -> vec4<${r}> {\n return vec4(elu_f32(v.x), elu_f32(v.y), elu_f32(v.z), elu_f32(v.w));\n }`,t.cacheKey))},yn=(e,t=\"f32\")=>`\nconst r0: ${t} = 0.3275911;\nconst r1: ${t} = 0.254829592;\nconst r2: ${t} = -0.284496736;\nconst r3: ${t} = 1.421413741;\nconst r4: ${t} = -1.453152027;\nconst r5: ${t} = 1.061405429;\n\nfn erf_vf32(v: ${e}) -> ${e} {\n let absv = abs(v);\n let x = 1.0 / (1.0 + r0 * absv);\n return sign(v) * (1.0 - ((((r5 * x + r4) * x + r3) * x + r2) * x + r1) * x * exp(-absv * absv));\n}`,jo=e=>{let t=yt(e.inputs[0].dataType);e.compute(Ee(e.inputs[0],\"Erf\",r=>`erf_vf32(${r})`,yn(`vec4<${t}>`,t)))},Ko=e=>{e.compute(Ee(e.inputs[0],\"Exp\",\"exp\"))},Yo=e=>{e.compute(Ee(e.inputs[0],\"Floor\",\"floor\"))},Zo=e=>{let t=yt(e.inputs[0].dataType);e.compute(Ee(e.inputs[0],\"Gelu\",r=>`0.5 * ${r} * (1.0 + erf_vf32(${r} * 0.7071067811865475))`,yn(`vec4<${t}>`,t)))},Xo=(e,t)=>{let r=yt(e.inputs[0].dataType);e.compute(Ee(e.inputs[0],\"LeakyRelu\",a=>`select(leaky_relu_alpha_ * ${a}, ${a}, ${a} >= vec4<${r}>(0.0))`,`const leaky_relu_alpha_ = ${r}(${t.alpha});`,t.cacheKey))},Qo=e=>{e.compute(Ee(e.inputs[0],\"Not\",t=>`!${t}`))},Jo=e=>{e.compute(Ee(e.inputs[0],\"Neg\",t=>`-${t}`))},es=e=>{e.compute(Ee(e.inputs[0],\"Reciprocal\",t=>`1.0/${t}`))},ts=e=>{let t=yt(e.inputs[0].dataType);e.compute(Ee(e.inputs[0],\"Relu\",r=>`select(vec4<${t}>(0.0), ${r}, ${r} > vec4<${t}>(0.0))`))},rs=e=>{e.compute(Ee(e.inputs[0],\"Sigmoid\",t=>`(1.0 / (1.0 + exp(-${t})))`))},ns=e=>{e.compute(Ee(e.inputs[0],\"Sin\",\"sin\"))},as=e=>{e.compute(Ee(e.inputs[0],\"Sinh\",\"sinh\"))},is=e=>{e.compute(Ee(e.inputs[0],\"Sqrt\",\"sqrt\"))},os=e=>{e.compute(Ee(e.inputs[0],\"Tan\",\"tan\"))},ss=e=>{e.compute(Ee(e.inputs[0],\"Tanh\",\"tanh\"))},us=(e,t)=>{let r=yt(e.inputs[0].dataType);return e.compute(Ee(e.inputs[0],\"ThresholdedRelu\",a=>`select(vec4<${r}>(0.0), ${a}, ${a} > thresholded_relu_alpha_)`,`const thresholded_relu_alpha_ = vec4<${r}>(${t.alpha});`,t.cacheKey)),0},ls=e=>{e.compute(Ee(e.inputs[0],\"Log\",\"log\"))}});var Qd,Jd,ds,cs=F(()=>{\"use strict\";$e();ve();pa();Qd=e=>{if(e[0].dims.length!==3)throw new Error(\"input should have 3 dimensions\");if(![2560,5120,10240].includes(e[0].dims[2]))throw new Error(\"hidden state should be 2560, 5120 or 10240\");if(e[1].dims.length!==1)throw new Error(\"bias is expected to have 1 dimensions\");if(e[0].dims[2]!==e[1].dims[0])throw new Error(\"last dimension of input and bias are not the same\")},Jd=e=>{let t=e[0].dims.slice();t[2]=t[2]/2;let r=M(\"input\",e[0].dataType,e[0].dims,4),a=M(\"bias\",e[0].dataType,[e[0].dims[2]],4),n=q(\"output\",e[0].dataType,t,4),o=U.size(t)/4,u=Fe(e[0].dataType);return{name:\"BiasSplitGelu\",getRunData:()=>({outputs:[{dims:t,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(o/64)}}),getShaderSource:i=>`\n const M_SQRT2 = sqrt(2.0);\n const halfChannels = ${e[0].dims[2]/4/2}u;\n\n ${i.declareVariables(r,a,n)}\n\n ${yn(`vec4<${u}>`,u)}\n\n ${i.mainStart()}\n ${i.guardAgainstOutOfBoundsWorkgroupSizes(o)}\n let biasIdx = global_idx % halfChannels;\n let batchIndex = global_idx / halfChannels;\n let inputOffset = biasIdx + batchIndex * halfChannels * 2;\n let valueLeft = input[inputOffset] + bias[biasIdx];\n let valueRight = input[inputOffset + halfChannels] + bias[biasIdx + halfChannels];\n let geluRight = valueRight * 0.5 * (erf_vf32(valueRight / M_SQRT2) + 1);\n\n ${n.setByOffset(\"global_idx\",\"valueLeft * geluRight\")}\n }`}},ds=e=>{Qd(e.inputs),e.compute(Jd(e.inputs))}});var ec,tc,_t,ps,ms,fs,hs,gs,ys,bs,ws,vs,$s,_s=F(()=>{\"use strict\";Ue();$e();ve();ec=(e,t,r,a,n,o,u,l,i,c,m,f,h)=>{let b,w;typeof l==\"string\"?b=w=(R,N)=>`${l}((${R}),(${N}))`:typeof l==\"function\"?b=w=l:(b=l.scalar,w=l.vector);let _=f?t.length:t,I=f?r.length:r,$=f?a.length:a,x=q(\"outputData\",m,$,4),T=M(\"aData\",i,_,4),A=M(\"bData\",c,I,4),z;if(n)if(o){let R=U.size(t)===1,N=U.size(r)===1,E=t.length>0&&t[t.length-1]%4===0,W=r.length>0&&r[r.length-1]%4===0;R||N?z=x.setByOffset(\"global_idx\",w(R?`${T.type.value}(${T.getByOffset(\"0\")}.x)`:T.getByOffset(\"global_idx\"),N?`${A.type.value}(${A.getByOffset(\"0\")}.x)`:A.getByOffset(\"global_idx\"))):z=`\n let outputIndices = ${x.offsetToIndices(\"global_idx * 4u\")};\n let offsetA = ${T.broadcastedIndicesToOffset(\"outputIndices\",x)};\n let offsetB = ${A.broadcastedIndicesToOffset(\"outputIndices\",x)};\n ${x.setByOffset(\"global_idx\",w(u||E?T.getByOffset(\"offsetA / 4u\"):`${T.type.value}(${T.getByOffset(\"offsetA / 4u\")}[offsetA % 4u])`,u||W?A.getByOffset(\"offsetB / 4u\"):`${A.type.value}(${A.getByOffset(\"offsetB / 4u\")}[offsetB % 4u])`))}\n `}else z=x.setByOffset(\"global_idx\",w(T.getByOffset(\"global_idx\"),A.getByOffset(\"global_idx\")));else{if(!o)throw new Error(\"no necessary to use scalar implementation for element-wise binary op implementation.\");let R=(N,E,W=\"\")=>{let te=`aData[indexA${E}][componentA${E}]`,Y=`bData[indexB${E}][componentB${E}]`;return`\n let outputIndices${E} = ${x.offsetToIndices(`global_idx * 4u + ${E}u`)};\n let offsetA${E} = ${T.broadcastedIndicesToOffset(`outputIndices${E}`,x)};\n let offsetB${E} = ${A.broadcastedIndicesToOffset(`outputIndices${E}`,x)};\n let indexA${E} = offsetA${E} / 4u;\n let indexB${E} = offsetB${E} / 4u;\n let componentA${E} = offsetA${E} % 4u;\n let componentB${E} = offsetB${E} % 4u;\n ${N}[${E}] = ${W}(${b(te,Y)});\n `};m===9?z=`\n var data = vec4(0);\n ${R(\"data\",0,\"u32\")}\n ${R(\"data\",1,\"u32\")}\n ${R(\"data\",2,\"u32\")}\n ${R(\"data\",3,\"u32\")}\n outputData[global_idx] = dot(vec4(0x1, 0x100, 0x10000, 0x1000000), vec4(data));`:z=`\n ${R(\"outputData[global_idx]\",0)}\n ${R(\"outputData[global_idx]\",1)}\n ${R(\"outputData[global_idx]\",2)}\n ${R(\"outputData[global_idx]\",3)}\n `}return`\n ${e.registerUniform(\"vec_size\",\"u32\").declareVariables(T,A,x)}\n\n ${h??\"\"}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.vec_size\")}\n ${z}\n }`},tc=(e,t,r,a,n,o,u=r.dataType)=>{let l=!U.areEqual(r.dims,a.dims),i=r.dims,c=U.size(r.dims),m=!1,f=!1,h=[l];if(l){let w=gt.calcShape(r.dims,a.dims,!1);if(!w)throw new Error(\"Can't perform binary op on the given tensors\");i=w,c=U.size(i);let _=U.size(r.dims)===1,I=U.size(a.dims)===1,$=r.dims.length>0&&r.dims[r.dims.length-1]%4===0,x=a.dims.length>0&&a.dims[a.dims.length-1]%4===0;h.push(_),h.push(I),h.push($),h.push(x);let T=1;for(let A=1;Aw.toString()).join(\"_\"),inputDependencies:b?[\"rank\",\"rank\"]:[\"dims\",\"dims\"]},getShaderSource:w=>ec(w,r.dims,a.dims,i,m,l,f,n,r.dataType,a.dataType,u,b,o),getRunData:()=>({outputs:[{dims:i,dataType:u}],dispatchGroup:{x:Math.ceil(c/64/4)},programUniforms:b?[{type:\"uint32\",data:Math.ceil(U.size(i)/4)},...G(r.dims),...G(a.dims),...G(i)]:[{type:\"uint32\",data:Math.ceil(U.size(i)/4)}]})}},_t=(e,t,r,a,n,o)=>{e.compute(tc(t,n??\"\",e.inputs[0],e.inputs[1],r,a,o))},ps=e=>{_t(e,\"Add\",(t,r)=>`${t}+${r}`)},ms=e=>{_t(e,\"Div\",(t,r)=>`${t}/${r}`)},fs=e=>{_t(e,\"Equal\",{scalar:(t,r)=>`u32(${t}==${r})`,vector:(t,r)=>`vec4(${t}==${r})`},void 0,void 0,9)},hs=e=>{_t(e,\"Mul\",(t,r)=>`${t}*${r}`)},gs=e=>{let t=M(\"input\",e.inputs[0].dataType,e.inputs[0].dims).type.value;_t(e,\"Pow\",{scalar:(a,n)=>`pow_custom(${a},${n})`,vector:(a,n)=>`pow_vector_custom(${a},${n})`},`\n fn pow_custom(a : ${t}, b : ${t}) -> ${t} {\n if (b == ${t}(0.0)) {\n return ${t}(1.0);\n } else if (a < ${t}(0.0) && f32(b) != floor(f32(b))) {\n return ${t}(pow(f32(a), f32(b))); // NaN\n }\n return select(sign(a), ${t}(1.0), round(f32(abs(b) % ${t}(2.0))) != 1.0) * ${t}(${t===\"i32\"?\"round\":\"\"}(pow(f32(abs(a)), f32(b))));\n }\n fn pow_vector_custom(a : vec4<${t}>, b : vec4<${t}>) -> vec4<${t}> {\n // TODO: implement vectorized pow\n return vec4<${t}>(pow_custom(a.x, b.x), pow_custom(a.y, b.y), pow_custom(a.z, b.z), pow_custom(a.w, b.w));\n }\n `)},ys=e=>{_t(e,\"Sub\",(t,r)=>`${t}-${r}`)},bs=e=>{_t(e,\"Greater\",{scalar:(t,r)=>`u32(${t}>${r})`,vector:(t,r)=>`vec4(${t}>${r})`},void 0,void 0,9)},ws=e=>{_t(e,\"Less\",{scalar:(t,r)=>`u32(${t}<${r})`,vector:(t,r)=>`vec4(${t}<${r})`},void 0,void 0,9)},vs=e=>{_t(e,\"GreaterOrEqual\",{scalar:(t,r)=>`u32(${t}>=${r})`,vector:(t,r)=>`vec4(${t}>=${r})`},void 0,void 0,9)},$s=e=>{_t(e,\"LessOrEqual\",{scalar:(t,r)=>`u32(${t}<=${r})`,vector:(t,r)=>`vec4(${t}<=${r})`},void 0,void 0,9)}});var nc,ac,ic,oc,xs,Ss,Is=F(()=>{\"use strict\";$e();je();ve();nc=e=>{if(!e||e.length<1)throw new Error(\"too few inputs\");let t=e[0].dataType,r=e[0].dims.length;for(let a of e){if(a.dataType!==t)throw new Error(\"input tensors should be one type\");if(a.dims.length!==r)throw new Error(\"input tensors should have the same shape\")}},ac=(e,t)=>`\n fn calculateInputIndex(index: u32) -> u32 {\n let sizeInConcatAxis = array(${t});\n for (var i: u32 = 0u; i < ${e}; i += 1u ) {\n if (index < sizeInConcatAxis[i]) {\n return i;\n }\n }\n return ${e}u;\n }`,ic=(e,t)=>{let r=e.length,a=[];for(let n=0;n{let r=e[0].dims.slice();if(t>=r.length||t<-1*r.length)throw new Error(\"axis specified for concat doesn't match input dimensionality\");let a=t<0?r.length+t:t,n=r.slice(0);for(let A=1;A`uniforms.sizeInConcatAxis${A}`).join(\",\"),T=A=>`\n\n ${(()=>{A.registerUniform(\"outputSize\",\"u32\");for(let z=0;z(${x});\n ${$} -= sizeInConcatAxis[inputIndex - 1u];\n }\n\n ${ic(l,I)}\n }`;return{name:\"Concat\",shaderCache:{hint:`${t}`,inputDependencies:m},getRunData:()=>({outputs:[{dims:n,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(o/64)},programUniforms:b}),getShaderSource:T}},xs=(e,t)=>{nc(e.inputs),e.compute(oc(e.inputs,t.axis))},Ss=e=>ge({axis:e.axis})});var xt,bn,Rt=F(()=>{\"use strict\";$e();xt=(e,t)=>{switch(e.activation){case\"Relu\":return{activationFunction:\"\",applyActivation:`value = max(value, ${t}(0.0));`};case\"Sigmoid\":return{activationFunction:\"\",applyActivation:`value = (${t}(1.0) / (${t}(1.0) + exp(-value)));`};case\"Clip\":return{activationFunction:`const clip_min_=${t}(${e.clipMin});const clip_max_=${t}(${e.clipMax});`,applyActivation:\"value = clamp(value, clip_min_, clip_max_);\"};default:return{activationFunction:\"\",applyActivation:\"\"}}},bn=e=>{let t=e?.activation||\"\";if(t===\"Clip\"){let[r,a]=e?.activation_params||[dn,cn];return{activation:t,clipMax:a,clipMin:r,activationCacheKey:`${t}:${r},${a}`}}return{activation:t,activationCacheKey:t}}});var Ye,wn,vn=F(()=>{\"use strict\";Ye=(e,t)=>{switch(e){case 1:return t;case 2:return`vec2<${t}>`;case 3:return`vec3<${t}>`;case 4:return`vec4<${t}>`;default:throw new Error(`${e}-component is not supported.`)}},wn=e=>`\n ${e?\"value = value + getBiasByOutputCoords(coords);\":\"\"}\n `});var $n,ma=F(()=>{\"use strict\";$n=e=>`\nfn getIndexFromCoords4D(coords : vec4, shape : vec4) -> i32 {\n return dot(coords, vec4(\n shape.y * shape.z * shape.w, shape.z * shape.w, shape.w, 1));\n}\nfn getOutputIndexFromCoords(coords : vec4) -> i32 {\n return dot(coords, vec4(\n i32(${e}.x), i32(${e}.y), i32(${e}.z), 1));\n}\n`});var sc,uc,Ir,Cs,lc,Cr,dc,_n,Ar=F(()=>{\"use strict\";$e();ve();Rt();vn();sc=(e,t)=>e?`\n mm_Asub[inputRow][inputCol] = mm_readA(batch,\n kStart + inputRow,\n globalRowStart / innerElementSize + inputCol${t?\", batchIndices\":\"\"});\n `:`\n mm_Asub[inputRow][inputCol] = mm_readA(batch,\n globalRow + innerRow,\n kStart / innerElementSize + inputCol${t?\", batchIndices\":\"\"});\n `,uc=(e,t)=>e?`\n let ACached0 = mm_Asub[k * innerElementSize][localRow];\n let ACached1 = mm_Asub[k * innerElementSize + 1][localRow];\n let ACached2 = mm_Asub[k * innerElementSize + 2][localRow];\n ${t===3?\"\":\"let ACached3 = mm_Asub[k * innerElementSize + 3][localRow];\"}\n for (var i = 0; i < rowPerThread; i = i + 1) {\n acc[i] = BCached0 * ACached0[i] + acc[i];\n acc[i] = BCached1 * ACached1[i] + acc[i];\n acc[i] = BCached2 * ACached2[i] + acc[i];\n ${t===3?\"\":\"acc[i] = BCached3 * ACached3[i] + acc[i];\"}\n }`:`\n for (var i = 0; i < rowPerThread; i = i + 1) {\n let ACached = mm_Asub[tileRow + i][k];\n acc[i] = BCached0 * ACached.x + acc[i];\n acc[i] = BCached1 * ACached.y + acc[i];\n acc[i] = BCached2 * ACached.z + acc[i];\n ${t===3?\"\":\"acc[i] = BCached3 * ACached.w + acc[i];\"}\n }`,Ir=(e,t,r=\"f32\",a,n=!1,o=32,u=!1,l=32)=>{let i=t[1]*e[1],c=t[0]*e[0],m=n?i:o,f=n?o:i,h=m/t[0],b=o/t[1];if(!((n&&h===4&&e[1]===4||!n&&(h===3||h===4))&&m%t[0]===0&&o%t[1]===0&&e[0]===4))throw new Error(`If transposeA ${n} is true, innerElementSize ${h} and workPerThread[1] ${e[1]} must be 4.\n Otherwise, innerElementSize ${h} must be 3 or 4.\n tileAWidth ${m} must be divisible by workgroupSize[0]${t[0]}. tileInner ${o} must be divisible by workgroupSize[1] ${t[1]}. colPerThread ${e[0]} must be 4.`);return`\nvar mm_Asub: array, ${m/h}>, ${f}>;\nvar mm_Bsub: array, ${c/e[0]}>, ${o}>;\n\nconst rowPerThread = ${e[1]};\nconst colPerThread = ${e[0]};\nconst innerElementSize = ${h};\nconst tileInner = ${o};\n\n@compute @workgroup_size(${t[0]}, ${t[1]}, ${t[2]})\nfn main(@builtin(local_invocation_id) localId : vec3,\n @builtin(global_invocation_id) globalId : vec3,\n @builtin(workgroup_id) workgroupId : vec3) {\n let localRow = i32(localId.y);\n let tileRow = localRow * rowPerThread;\n let tileCol = i32(localId.x);\n\n let globalRow =i32(globalId.y) * rowPerThread;\n let globalCol = i32(globalId.x);\n let batch = ${u?\"0\":\"i32(globalId.z)\"};\n ${a?`let batchIndices = ${a.offsetToIndices(\"u32(batch)\")};`:\"\"}\n let globalRowStart = i32(workgroupId.y) * ${i};\n\n let numTiles = ${u?`${Math.ceil(l/o)}`:\"(uniforms.dimInner - 1) / tileInner + 1\"};\n var kStart = ${u?`i32(globalId.z) * ${l}`:\"0\"};\n\n var acc: array, rowPerThread>;\n\n // Loop over shared dimension.\n let tileRowB = localRow * ${b};\n for (var t = 0; t < numTiles; t = t + 1) {\n // Load one tile of A into local memory.\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n let inputRow = tileRow + innerRow;\n let inputCol = tileCol;\n ${sc(n,a)}\n }\n\n // Load one tile of B into local memory.\n for (var innerRow = 0; innerRow < ${b}; innerRow = innerRow + 1) {\n let inputRow = tileRowB + innerRow;\n let inputCol = tileCol;\n mm_Bsub[inputRow][inputCol] = mm_readB(batch, kStart + inputRow, globalCol${a?\", batchIndices\":\"\"});\n }\n kStart = kStart + tileInner;\n workgroupBarrier();\n\n // Compute acc values for a single thread.\n for (var k = 0; k < tileInner / innerElementSize; k = k + 1) {\n let BCached0 = mm_Bsub[k * innerElementSize][tileCol];\n let BCached1 = mm_Bsub[k * innerElementSize + 1][tileCol];\n let BCached2 = mm_Bsub[k * innerElementSize + 2][tileCol];\n ${h===3?\"\":\"let BCached3 = mm_Bsub[k * innerElementSize + 3][tileCol];\"}\n\n ${uc(n,h)}\n }\n\n workgroupBarrier();\n }\n\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n mm_write(batch, globalRow + innerRow, globalCol, acc[innerRow]);\n }\n}`},Cs=(e,t)=>e?`\n mm_Asub[inputRow][inputCol] = mm_readA(batch,\n kStart + inputRow,\n globalRowStart + inputCol${t?\", batchIndices\":\"\"});\n `:`\n mm_Asub[inputRow][inputCol] = mm_readA(batch,\n globalRowStart + inputRow,\n kStart + inputCol${t?\", batchIndices\":\"\"});\n `,lc=e=>e?\"let ACached = mm_Asub[k][tileRow + innerRow];\":\"let ACached = mm_Asub[tileRow + innerRow][k];\",Cr=(e,t,r=\"f32\",a,n=!1,o=32,u=!1,l=32,i=!1)=>{let c=e[1]*t[1],m=e[0]*t[0],f=n?c:o,h=n?o:c;if(!(h%t[1]===0&&f%t[0]===0&&o%t[1]===0))throw new Error(`tileAHight ${h} must be divisible by workgroupSize[1]${t[1]}, tileAWidth ${f} must be divisible by workgroupSize[0]${t[0]}, tileInner ${o} must be divisible by workgroupSize[1]${t[1]}`);let b=h/t[1],w=f/t[0],_=o/t[1],I=i?`\n let localRow = i32(localId.y);\n let localCol = i32(localId.x);\n let globalRowStart = i32(workgroupId.y) * ${c};\n let globalColStart = i32(workgroupId.x) * ${m};\n\n // Loop over shared dimension.\n for (var t = 0; t < numTiles; t = t + 1) {\n // Load one tile of A into local memory.\n for (var inputRow = localRow; inputRow < ${h}; inputRow = inputRow + ${t[1]}) {\n for (var inputCol = localCol; inputCol < ${f}; inputCol = inputCol + ${t[0]}) {\n ${Cs(n,a)}\n }\n }\n // Load one tile of B into local memory.\n for (var inputRow = localRow; inputRow < ${o}; inputRow = inputRow + ${t[1]}) {\n for (var inputCol = localCol; inputCol < ${m}; inputCol = inputCol + ${t[0]}) {\n mm_Bsub[inputRow][inputCol] = mm_readB(batch,\n kStart + inputRow,\n globalColStart + inputCol${a?\", batchIndices\":\"\"});\n }\n }\n kStart = kStart + tileInner;\n workgroupBarrier();\n\n // Compute acc values for a single thread.\n var BCached : array<${r}, colPerThread>;\n for (var k = 0; k < tileInner; k = k + 1) {\n for (var inner = 0; inner < colPerThread; inner = inner + 1) {\n BCached[inner] = mm_Bsub[k][localCol + inner * ${t[0]}];\n }\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n let ACached = ${n?`mm_Asub[k][localRow + innerRow * ${t[1]}];`:`mm_Asub[localRow + innerRow * ${t[1]}][k];`}\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n acc[innerRow][innerCol] = acc[innerRow][innerCol] +\n ACached * BCached[innerCol];\n }\n }\n }\n workgroupBarrier();\n }\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n let gRow = globalRowStart + localRow + innerRow * ${t[1]};\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n let gCol = globalColStart + localCol + innerCol * ${t[0]};\n mm_write(batch, gRow, gCol, acc[innerRow][innerCol]);\n }\n }\n `:`\nlet tileRow = i32(localId.y) * rowPerThread;\nlet tileCol = i32(localId.x) * colPerThread;\n\nlet globalRow = i32(globalId.y) * rowPerThread;\nlet globalCol = i32(globalId.x) * colPerThread;\nlet globalRowStart = i32(workgroupId.y) * ${c};\n\nlet tileRowA = i32(localId.y) * ${b};\nlet tileColA = i32(localId.x) * ${w};\nlet tileRowB = i32(localId.y) * ${_};\n// Loop over shared dimension.\nfor (var t = 0; t < numTiles; t = t + 1) {\n // Load one tile of A into local memory.\n for (var innerRow = 0; innerRow < ${b}; innerRow = innerRow + 1) {\n for (var innerCol = 0; innerCol < ${w}; innerCol = innerCol + 1) {\n let inputRow = tileRowA + innerRow;\n let inputCol = tileColA + innerCol;\n ${Cs(n,a)}\n }\n }\n\n // Load one tile of B into local memory.\n for (var innerRow = 0; innerRow < ${_}; innerRow = innerRow + 1) {\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n let inputRow = tileRowB + innerRow;\n let inputCol = tileCol + innerCol;\n mm_Bsub[inputRow][inputCol] = mm_readB(batch,\n kStart + inputRow,\n globalCol + innerCol${a?\", batchIndices\":\"\"});\n }\n }\n kStart = kStart + tileInner;\n workgroupBarrier();\n\n // Compute acc values for a single thread.\n var BCached : array<${r}, colPerThread>;\n for (var k = 0; k < tileInner; k = k + 1) {\n for (var inner = 0; inner < colPerThread; inner = inner + 1) {\n BCached[inner] = mm_Bsub[k][tileCol + inner];\n }\n\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n ${lc(n)}\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n acc[innerRow][innerCol] = acc[innerRow][innerCol] + ACached * BCached[innerCol];\n }\n }\n }\n\n workgroupBarrier();\n}\n\nfor (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n mm_write(batch, globalRow + innerRow, globalCol + innerCol,\n acc[innerRow][innerCol]);\n }\n}\n`;return`\n var mm_Asub : array, ${h}>;\n var mm_Bsub : array, ${o}>;\n const rowPerThread = ${e[1]};\n const colPerThread = ${e[0]};\n const tileInner = ${o};\n\n@compute @workgroup_size(${t[0]}, ${t[1]}, ${t[2]})\nfn main(@builtin(local_invocation_id) localId : vec3,\n @builtin(global_invocation_id) globalId : vec3,\n @builtin(workgroup_id) workgroupId : vec3) {\n let batch = ${u?\"0\":\"i32(globalId.z)\"};\n ${a?`let batchIndices = ${a.offsetToIndices(\"u32(batch)\")};`:\"\"}\n let numTiles = ${u?`${Math.ceil(l/o)}`:\"(uniforms.dimInner - 1) / tileInner + 1\"};\n var kStart = ${u?`i32(globalId.z) * ${l}`:\"0\"};\n\n var acc : array, rowPerThread>;\n\n // Without this initialization strange values show up in acc.\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n acc[innerRow][innerCol] = 0.0;\n }\n }\n ${I}\n }\n`},dc=(e,t,r,a,n,o=!1)=>{let[u,l,i]=n,[c,m,f,h]=a,b=er(u,i),w=er(l,i),_=Fe(a[0].type.tensor),I=()=>{let T=m.rank,A=c.rank,z=`var aIndices: ${m.type.indices};`;for(let R=T-2-1,N=A-1;R>=0;R--,N--)z+=`\naIndices[${R}] = ${A>1?`batchIndices[${N}]`:\"batchIndices\"};`;return b.forEach(R=>{z+=`\naIndices[${R}] = 0;`}),z+=`\naIndices[${T-2}] = u32(row);\n aIndices[${T-1}] = u32(colIn);`,z},$=()=>{let T=f.rank,A=c.rank,z=`var bIndices: ${f.type.indices};`;for(let R=T-2-1,N=A-1;R>=0;R--,N--)z+=`\nbIndices[${R}] = ${A>1?`batchIndices[${N}]`:\"batchIndices\"};`;return w.forEach(R=>{z+=`\nbIndices[${R}] = 0;`}),z+=`\nbIndices[${T-2}] = u32(row);\n bIndices[${T-1}] = u32(colIn);`,z};return`\n fn mm_readA(batch: i32, row: i32, colIn: i32, batchIndices: ${c.type.indices}) -> ${Ye(e,_)} {\n var value = ${Ye(e,_)}(0.0);\n let col = colIn * ${e};\n if(row < uniforms.dimAOuter && col < uniforms.dimInner)\n {\n ${I()}\n value = ${m.getByIndices(\"aIndices\")};\n }\n return value;\n }\n\n fn mm_readB(batch: i32, row: i32, colIn: i32, batchIndices: ${c.type.indices}) -> ${Ye(e,_)} {\n var value = ${Ye(e,_)}(0.0);\n let col = colIn * ${e};\n if(row < uniforms.dimInner && col < uniforms.dimBOuter)\n {\n ${$()}\n value = ${f.getByIndices(\"bIndices\")};\n }\n return value;\n }\n\n fn mm_write(batch: i32, row: i32, colIn: i32, valueIn: ${Ye(e,_)}) {\n let col = colIn * ${e};\n if (row < uniforms.dimAOuter && col < uniforms.dimBOuter) {\n var value = valueIn;\n let coords = vec3(batch, row, colIn);\n ${t?`value = value + ${o?\"bias[colIn]\":`${Ye(e,_)}(bias[row])`};`:\"\"}\n ${r}\n ${h.setByIndices(\"vec3(coords)\",\"value\")}\n }\n }\n `},_n=(e,t,r,a,n=!1)=>{let o=e[0].dims,u=e[1].dims,l=o.slice(0,-2),i=u.slice(0,-2),c=a?a.slice(0,-2):r.slice(0,-2),m=Be(c.length),f=m?c.length:c,h=pn(\"batchDims\",e[0].dataType,f,1),b=U.size(c),w=o[o.length-2],_=o[o.length-1],I=u[u.length-1],$=_%4===0&&I%4===0,x=w<=8?[4,1,1]:[4,4,1],T=[8,8,1],A=[Math.ceil(I/T[0]/x[0]),Math.ceil(w/T[1]/x[1]),Math.ceil(b/T[2]/x[2])],z=Fe(e[0].dataType),R=$?4:1,N=[...l,w,_/R],E=Be(N.length),W=E?N.length:N,te=[...i,_,I/R],Y=Be(te.length),K=Y?te.length:te,X=[b,w,I/R],Z=M(\"a\",e[0].dataType,W,R),Oe=M(\"b\",e[1].dataType,K,R),Pe=q(\"result\",e[0].dataType,X.length,R),fe=[Z,Oe],Ae=[{type:\"int32\",data:w},{type:\"int32\",data:I},{type:\"int32\",data:_}];m&&Ae.push(...G(c)),E&&Ae.push(...G(N)),Y&&Ae.push(...G(te));let he=[];he.push(E?\"rank\":\"dims\"),he.push(Y?\"rank\":\"dims\");let ye=e.length>2,{activationFunction:He,applyActivation:ze}=xt(t,Pe.type.value),Ge=dc(R,ye,ze,[h,Z,Oe,Pe],[l,i,c],n);if(ye){let ee=n?R:1;fe.push(M(\"bias\",e[2].dataType,e[2].dims.length,ee)),Ae.push(...G(e[2].dims)),he.push(\"rank\")}Ae.push(...G(X));let L=ee=>`\n ${ee.registerUniform(\"dimAOuter\",\"i32\").registerUniform(\"dimBOuter\",\"i32\").registerUniform(\"dimInner\",\"i32\").registerInternalVariables(h).declareVariables(...fe,Pe)}\n ${He}\n ${Ge}\n ${$?Ir(x,T,z,h):Cr(x,T,z,h)}\n `;return{name:\"MatMul\",shaderCache:{hint:t.activationCacheKey+`${x}${$}${n}`,inputDependencies:he},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:A[0],y:A[1],z:A[2]},programUniforms:Ae}),getShaderSource:L}}});var cc,As,Es=F(()=>{\"use strict\";Pt();ve();Rt();vn();ma();Ar();cc=(e,t,r,a,n=!1,o,u=4,l=4,i=4,c=\"f32\")=>{let m=Y=>{switch(Y){case 1:return\"resData = x[xIndex];\";case 3:return`resData = vec3<${c}>(x[xIndex], x[xIndex + 1], x[xIndex + 2]);`;case 4:return\"resData = x[xIndex / 4];\";default:throw new Error(`innerElementSize ${Y} is not supported.`)}},f=Y=>{switch(Y){case 1:return\"return w[row * i32(uniforms.w_shape[3]) + colIn];\";case 4:return\"return w[row * i32(uniforms.w_shape[3]) / 4 + colIn];\";default:throw new Error(`innerElementSize ${Y} is not supported.`)}},h=e?`\n let coord = vec4(batch, xRow, xCol, xCh);\n `:`\n let coord = vec4(batch, xCh, xRow, xCol);\n `,b=e?`\n let coords = vec4(\n batch,\n row / outWidth,\n row % outWidth,\n col);\n `:`\n let coords = vec4(\n batch,\n row,\n col / outWidth,\n col % outWidth);\n `,w=e?\"i32(uniforms.x_shape[1])\":\"i32(uniforms.x_shape[2])\",_=e?\"i32(uniforms.x_shape[2])\":\"i32(uniforms.x_shape[3])\",I=e?\"row\":\"col\",$=e?\"col\":\"row\",x=`\n let inChannels = i32(uniforms.w_shape[2]);\n let outWidth = ${e?\"i32(uniforms.result_shape[2])\":\"i32(uniforms.result_shape[3])\"};\n let outRow = ${I} / outWidth;\n let outCol = ${I} % outWidth;\n\n let WRow = ${$} / (filterDims[1] * inChannels);\n let WCol = ${$} / inChannels % filterDims[1];\n let xRow = outRow * stride[0] + dilation[0] * WRow - pad[0];\n let xCol = outCol * stride[1] + dilation[1] * WCol - pad[1];\n let xCh = ${$} % inChannels;\n var resData = ${Ye(u,c)}(0.0);\n // The bounds checking is always needed since we use it to pad zero for\n // the 'same' padding type.\n if (xRow >= 0 && xRow < ${w} && xCol >= 0 && xCol < ${_}) {\n ${h}\n let xIndex = getIndexFromCoords4D(coord, vec4(uniforms.x_shape));\n ${m(u)}\n }\n return resData;`,T=e?t&&a?`\n let col = colIn * ${u};\n ${x}`:`\n let col = colIn * ${u};\n if (row < uniforms.dimAOuter && col < uniforms.dimInner) {\n ${x}\n }\n return ${Ye(u,c)}(0.0);`:a&&r?`\n let col = colIn * ${u};\n ${x}`:`\n let col = colIn * ${u};\n if (row < uniforms.dimInner && col < uniforms.dimBOuter) {\n ${x}\n }\n return ${Ye(u,c)}(0.0);`,A=`${f(l)}`,z=Ye(i,c),R=e?Ye(u,c):Ye(l,c),N=e?Ye(l,c):Ye(u,c),{activationFunction:E,applyActivation:W}=xt(o,z);return`\n ${E}\n fn mm_readA(batch: i32, row : i32, colIn : i32) -> ${R} {\n ${e?T:A}\n }\n\n fn mm_readB(batch: i32, row : i32, colIn : i32) -> ${N} {\n ${e?A:T}\n }\n\n fn mm_write(batch: i32, row : i32, colIn : i32, valueIn : ${z}) {\n let col = colIn * ${i};\n if (row < uniforms.dimAOuter && col < uniforms.dimBOuter)\n {\n var value = valueIn;\n let outWidth = ${e?\"i32(uniforms.result_shape[2])\":\"i32(uniforms.result_shape[3])\"};\n ${b}\n ${wn(n)}\n ${W}\n setOutputAtCoords(coords[0], coords[1], coords[2], coords[3], value);\n }\n }`},As=(e,t,r,a,n,o,u,l)=>{let i=t.format===\"NHWC\",c=i?e[0].dims[3]:e[0].dims[1],m=r[0],f=i?r[2]:r[3],h=i?r[1]:r[2],b=i?r[3]:r[1],w=i&&(c%4===0||c%3===0)&&b%4===0,_=i?b:f*h,I=i?f*h:b,$=[8,8,1],x=a<=8?[4,1,1]:[4,4,1],T=[Math.ceil(_/$[0]/x[0]),Math.ceil(I/$[1]/x[1]),Math.ceil(m/$[2]/x[2])];De(\"verbose\",()=>`[conv2d_mm_webgpu] dispatch = ${T}`);let A=w?i&&c%4!==0?3:4:1,z=$[1]*x[1],R=$[0]*x[0],N=Math.max($[0]*A,$[1]),E=a%z===0,W=n%R===0,te=o%N===0,Y=w?[A,4,4]:[1,1,1],K=Fe(e[0].dataType),X=w?4:1,Z=[{type:\"int32\",data:a},{type:\"int32\",data:n},{type:\"int32\",data:o}],Oe=M(\"x\",e[0].dataType,e[0].dims.length,A===3?1:A),Pe=M(\"w\",e[1].dataType,e[1].dims.length,X),fe=[Oe,Pe];Z.push(...G(e[0].dims)),Z.push(...G(e[1].dims));let Ae=`\n fn setOutputAtIndex(flatIndex : i32, value : ${w?`vec4<${K}>`:K}) {\n result[flatIndex] = ${w?`vec4<${K}>`:K}(value);\n }\n fn setOutputAtCoords(d0 : i32, d1 : i32, d2 : i32, d3 : i32, value : ${w?`vec4<${K}>`:K}) {\n let flatIndex = getOutputIndexFromCoords(vec4(d0, d1, d2, d3));\n setOutputAtIndex(flatIndex ${w?\"/ 4\":\"\"}, value);\n }`;if(u){let ye=M(\"bias\",e[2].dataType,e[2].dims.length,X);fe.push(ye),Z.push(...G(e[2].dims)),Ae+=`\n fn getBiasByOutputCoords(coords : vec4) -> ${w?`vec4<${K}>`:K} {\n return bias[coords.${i?\"w\":\"y\"}${w?\"/ 4\":\"\"}];\n }`}let he=q(\"result\",e[0].dataType,r.length,X);return Z.push(...G(r)),{name:\"Conv2DMatMul\",shaderCache:{hint:t.cacheKey},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:T[0],y:T[1],z:T[2]},programUniforms:Z}),getShaderSource:ye=>`\n ${$n(\"uniforms.result_strides\")}\n //struct Uniforms { xShape : vec4, wShape : vec4, outShape : vec4,\n // outShapeStrides: vec3, filterDims : vec2, pad : vec2, stride : vec2,\n // dilation : vec2, dimAOuter : i32, dimBOuter : i32, dimInner : i32 };\n ${ye.registerUniform(\"dimAOuter\",\"i32\").registerUniform(\"dimBOuter\",\"i32\").registerUniform(\"dimInner\",\"i32\").declareVariables(...fe,he)}\n const filterDims : vec2 = vec2(${t.kernelShape[0]}, ${t.kernelShape[1]});\n const pad : vec2 = vec2(${t.pads[0]}, ${t.pads[1]});\n const stride : vec2 = vec2(${t.strides[0]}, ${t.strides[1]});\n const dilation : vec2 = vec2(${t.dilations[0]}, ${t.dilations[1]});\n ${Ae}\n ${cc(i,E,W,te,u,t,Y[0],Y[1],Y[2],K)}\n ${w?Ir(x,$,K,void 0,!i,N):Cr(x,$,K,void 0,!i,N,!1,void 0,l)}`}}});var fa,Ts=F(()=>{\"use strict\";$e();ve();ga();Rt();fa=(e,t,r)=>{let a=e.length>2,n=a?\"value += b[output_channel];\":\"\",o=e[0].dims,u=e[1].dims,l=u[0]/t.group,i=t.format===\"NHWC\",c=ha(o,u,t.dilations,t.pads,t.strides,i),m=U.size(c),f=q(\"output\",e[0].dataType,c),{activationFunction:h,applyActivation:b}=xt(t,f.type.value),w=M(\"x\",e[0].dataType,o),_=M(\"w\",e[1].dataType,u),I=[w,_];a&&I.push(M(\"b\",e[2].dataType,e[2].dims));let $=x=>`\n const strides: vec2 = vec2(${t.strides[0]}u, ${t.strides[1]}u);\n const pads: vec2 = vec2(${t.pads[0]}u, ${t.pads[1]}u);\n\n ${x.declareVariables(...I,f)}\n\n ${h}\n\n ${x.mainStart()}\n ${x.guardAgainstOutOfBoundsWorkgroupSizes(m)}\n\n let outputIndices = ${f.offsetToIndices(\"global_idx\")};\n let batch: u32 = outputIndices[0];\n let output_channel: u32 = outputIndices[${i?3:1}];\n let xRCCorner: vec2 = vec2(outputIndices[${i?1:2}], outputIndices[${i?2:3}]) * strides - pads;\n let group_id: u32 = output_channel / ${l}u;\n\n var value: ${f.type.value} = ${f.type.value}(0);\n for (var wInChannel: u32 = 0u; wInChannel < ${u[1]}u; wInChannel++) {\n let input_channel = group_id * ${u[1]}u + wInChannel;\n for (var wHeight: u32 = 0u; wHeight < ${u[2]}u; wHeight++) {\n let xHeight = xRCCorner.x + wHeight * ${t.dilations[0]}u;\n\n if (xHeight < 0u || xHeight >= ${o[i?1:2]}u) {\n continue;\n }\n\n for (var wWidth: u32 = 0u; wWidth < ${u[3]}u; wWidth++) {\n let xWidth = xRCCorner.y + wWidth * ${t.dilations[1]}u;\n if (xWidth < 0u || xWidth >= ${o[i?2:3]}u) {\n continue;\n }\n\n let xVal = ${i?w.get(\"batch\",\"xHeight\",\"xWidth\",\"input_channel\"):w.get(\"batch\",\"input_channel\",\"xHeight\",\"xWidth\")};\n let wVal = ${_.get(\"output_channel\",\"wInChannel\",\"wHeight\",\"wWidth\")};\n value += xVal*wVal;\n }\n }\n }\n ${n}\n ${b}\n ${f.setByOffset(\"global_idx\",\"value\")}\n }`;return{name:\"GroupedConv\",shaderCache:{hint:t.cacheKey},getRunData:()=>({outputs:[{dims:r?r(c):c,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(m/64)}}),getShaderSource:$}}});var ya,pc,Os,ba=F(()=>{\"use strict\";$e();Ar();ve();Rt();ya=(e,t,r,a,n=!1)=>{let o=e[0].dims,u=e[1].dims,l=o[o.length-2],i=u[u.length-1],c=o[o.length-1],m=qe(i),f=qe(c),h=qe(l),b=U.size(r)/m/h,w=e.length>2,_=a?a.slice(0,-2):r.slice(0,-2),$=[U.size(_),l,i],x=[{type:\"uint32\",data:b},{type:\"uint32\",data:l},{type:\"uint32\",data:i},{type:\"uint32\",data:c},...G(_),...G(o),...G(u)];w&&x.push(...G(e[2].dims)),x.push(...G($));let T=A=>{let z=pn(\"batch_dims\",e[0].dataType,_.length),R=M(\"a\",e[0].dataType,o.length,f),N=M(\"b\",e[1].dataType,u.length,m),E=q(\"output\",e[0].dataType,$.length,m),{activationFunction:W,applyActivation:te}=xt(t,E.type.value),Y=[R,N],K=\"\";if(w){let he=n?m:1;Y.push(M(\"bias\",e[2].dataType,e[2].dims.length,he)),K=`${n?`value += bias[col / ${he}];`:`value += ${E.type.value}(bias[row + i]);`}`}let X=o.slice(0,-2),Z=u.slice(0,-2),Oe=er(X,_),Pe=er(Z,_),fe=(he,ye)=>{let He=he.rank,ze=he.name;if(He===2)return`var ${ze}_indices = ${he.type.indices}(0u, 0u);`;let Ge=z.rank,L=`var ${ze}_indices: ${he.type.indices};`;for(let ee=He-2-1,be=Ge-1;ee>=0;ee--,be--)L+=`\n${ze}_indices[${ee}] = ${Ge>1?`batch_indices[${be}]`:\"batch_indices\"};`;return ye.forEach(ee=>{L+=`\n${ze}_indices[${ee}] = 0;`}),L+=`${ze}_indices[${He-2}] = 0u;\n ${ze}_indices[${He-1}] = 0u;`,L},Ae=()=>{let he=`var a_data: ${R.type.value};`;for(let ye=0;ye;\n for (var k: u32 = 0u; k < uniforms.K; k = k + ${f}) {\n ${Ae()}\n }\n for (var i = 0u; i < ${h}u; i++) {\n var value = values[i];\n ${K}\n ${te}\n let cur_indices = ${E.type.indices}(batch, row + i, col);\n let offset = ${E.indicesToOffset(\"cur_indices\")};\n ${E.setByOffset(`offset / ${m}`,\"value\")};\n }\n }\n `};return{name:\"MatMulNaive\",shaderCache:{hint:`${t.activationCacheKey}_${m}_${f}_${h}_${n}`,inputDependencies:w?[\"rank\",\"rank\",\"rank\"]:[\"rank\",\"rank\"]},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(b/64)},programUniforms:x}),getShaderSource:T}},pc=e=>{if(!e||e.length!==2)throw new Error(\"MatMul requires 2 inputs.\");if(e[0].dims[e[0].dims.length-1]!==e[1].dims[e[1].dims.length-2])throw new Error(\"shared dimension does not match.\")},Os=e=>{pc(e.inputs);let t=gt.calcShape(e.inputs[0].dims,e.inputs[1].dims,!0);if(!t)throw new Error(\"Can't use matmul on the given tensors\");let r=t[t.length-1],a=e.inputs[0].dims[e.inputs[0].dims.length-1];r<8&&a<8?e.compute(ya(e.inputs,{activation:\"\",activationCacheKey:\"\"},t)):e.compute(_n(e.inputs,{activation:\"\",activationCacheKey:\"\"},t))}});var ha,ks,mc,Ps,wa,fc,hc,va,ga=F(()=>{\"use strict\";$e();je();Es();Ar();Ts();Rt();ba();tr();ha=(e,t,r,a,n,o)=>{let u=e[0],l=e.slice(o?1:2,o?3:4),i=l.length,c=t[0],f=t.slice(2).map((w,_)=>w+(w-1)*(r[_]-1)),b=l.map((w,_)=>w+a[_]+a[_+i]).map((w,_)=>Math.floor((w-f[_]+n[_])/n[_]));return b.splice(0,0,u),b.splice(o?3:1,0,c),b},ks=[2,3,1,0],mc=(e,t)=>{if(!e||e.length!==2&&e.length!==3)throw new Error(\"Conv requires 2 or 3 inputs\");if(e[0].dims.length!==4&&e[0].dims.length!==3)throw new Error(\"currently only support conv 1D and 2D\");if(e[0].dims.length!==e[1].dims.length)throw new Error(\"filter does not have same dimension as input\");let r=e[0].dims[t.format===\"NHWC\"?e[0].dims.length-1:1],a=e[1].dims[1]*t.group;if(r!==a)throw new Error(\"FILTER_IN_CHANNEL should be equal to DATA_CHANNEL\");if(e.length===3&&(e[2].dims.length!==1||e[1].dims[0]!==e[2].dims[0]))throw new Error(\"invalid bias\");let n=e[0].dims.length-2;if(t.dilations.length!==n)throw new Error(`dilations should be ${n}D`);if(t.strides.length!==n)throw new Error(`strides should be ${n}D`);if(t.pads.length!==n*2)throw new Error(`pads should be ${n*2}D`);if(t.kernelShape.length!==0&&t.kernelShape.length!==e[1].dims.length-2)throw new Error(\"invalid kernel shape\")},Ps=(e,t)=>{let r=e.kernelShape.slice();for(let o=2;o{let t=bn(e),r=e.format,a=[\"NOTSET\",\"VALID\",\"SAME_UPPER\",\"SAME_LOWER\"][e.auto_pad],n=e.dilations,o=e.group,u=e.kernel_shape,l=e.pads,i=e.strides,c=e.w_is_const();return ge({autoPad:a,format:r,dilations:n,group:o,kernelShape:u,pads:l,strides:i,wIsConst:c,...t})},fc=(e,t,r)=>{let a=Ps(r,t),n=r.format===\"NHWC\";if(r.group!==1){e.compute(fa(t,a));return}let o=t.length===3,u=t[0].dims[n?1:2],l=t[0].dims[n?2:3],i=t[0].dims[n?3:1],c=t[1].dims[2],m=t[1].dims[3],f=ha(t[0].dims,t[1].dims,r.dilations,a.pads,r.strides,n),h=f[n?1:2],b=f[n?2:3],w=f[n?3:1],_=n&&c===u&&m===l&&r.pads[0]===0&&r.pads[1]===0;if(_||c===1&&m===1&&r.dilations[0]===1&&r.dilations[1]===1&&r.strides[0]===1&&r.strides[1]===1&&r.pads[0]===0&&r.pads[1]===0){let R=f[0],N,E,W,te=[];if(n){let X=e.kernelCustomData.wT??e.compute(mt(t[1],ks),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];if(r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=X),_){let Z=u*l*i;N=t[0].reshape([1,R,Z]),E=X.reshape([1,Z,w]),W=[1,R,w]}else N=t[0].reshape([R,u*l,i]),E=X.reshape([1,i,w]),W=[R,h*b,w];te.push(N),te.push(E)}else N=t[0].reshape([R,i,u*l]),E=t[1].reshape([1,w,i]),W=[R,w,h*b],te.push(E),te.push(N);o&&te.push(t[2]);let Y=W[2],K=te[0].dims[te[0].dims.length-1];Y<8&&K<8?e.compute(ya(te,a,f,W,n),{inputs:te}):e.compute(_n(te,a,f,W,n),{inputs:te});return}let I=!0,$=e.kernelCustomData.wT??e.compute(mt(t[1],ks),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=$);let x=[t[0],$];o&&x.push(t[2]);let T=n?h*b:w,A=n?w:h*b,z=c*m*i;e.compute(As(x,a,f,T,A,z,o,I),{inputs:x})},hc=(e,t)=>{let r=t.format===\"NHWC\",a=[e.inputs[0].reshape(r?[e.inputs[0].dims[0],1,e.inputs[0].dims[1],e.inputs[0].dims[2]]:[e.inputs[0].dims[0],e.inputs[0].dims[1],1,e.inputs[0].dims[2]]),e.inputs[1].reshape([e.inputs[1].dims[0],e.inputs[1].dims[1],1,e.inputs[1].dims[2]])];e.inputs.length===3&&a.push(e.inputs[2]);let n=[0,t.pads[0],0,t.pads[1]],o=[1].concat(t.strides),u=[1].concat(t.dilations),l=[1].concat(t.kernelShape),i=Ps({...t,pads:n,strides:o,dilations:u,kernelShape:l},a);e.compute(fa(a,i,c=>r?[c[0],c[2],c[3]]:[]))},va=(e,t)=>{mc(e.inputs,t),e.inputs[0].dims.length===3?hc(e,t):fc(e,e.inputs,t)}});var gc,Rs,Bs=F(()=>{\"use strict\";Pt();ve();Rt();vn();ma();Ar();gc=(e,t=!1,r,a=4)=>{let n=Ye(a,\"f32\"),o=x=>{switch(x){case 1:return\"return w[getIndexFromCoords4D(coord, vec4(uniforms.w_shape))];\";case 4:return`\n let coord1 = vec4(coordX, coordY, col + 1, rowInner);\n let coord2 = vec4(coordX, coordY, col + 2, rowInner);\n let coord3 = vec4(coordX, coordY, col + 3, rowInner);\n let v0 = w[getIndexFromCoords4D(coord, vec4(uniforms.w_shape))];\n let v1 = w[getIndexFromCoords4D(coord1, vec4(uniforms.w_shape))];\n let v2 = w[getIndexFromCoords4D(coord2, vec4(uniforms.w_shape))];\n let v3 = w[getIndexFromCoords4D(coord3, vec4(uniforms.w_shape))];\n return vec4(v0, v1, v2, v3);\n `;default:throw new Error(`innerElementSize ${x} is not supported.`)}},u=e?`\n let coord = vec4(batch, iXR, iXC, xCh);\n `:`\n let coord = vec4(batch, xCh, iXR, iXC);\n `,l=e?`\n let coords = vec4(\n batch,\n row / outWidth,\n row % outWidth,\n col);\n `:`\n let coords = vec4(\n batch,\n row,\n col / outWidth,\n col % outWidth);\n `,i=e?\"outBackprop[1]\":\"outBackprop[2]\",c=e?\"outBackprop[2]\":\"outBackprop[3]\",m=e?\"row\":\"col\",f=e?\"col\":\"row\",h=`\n let inChannels = ${e?\"outBackprop[3]\":\"outBackprop[1]\"};\n let outWidth = ${e?\"i32(uniforms.result_shape[2])\":\"i32(uniforms.result_shape[3])\"};\n let outRow = ${m} / outWidth;\n let outCol = ${m} % outWidth;\n\n let WRow = ${f} / (filterDims[1] * inChannels);\n let WCol = ${f} / inChannels % filterDims[1];\n let xR = f32(outRow - pads[0] + dilation[0] * WRow) / f32(strides[0]);\n let xC = f32(outCol - pads[1] + dilation[1] * WCol) / f32(strides[1]);\n if (xR < 0.0 || xR >= f32(${i}) || fract(xR) > 0.0) {\n return ${n}(0.0);\n }\n if (xC < 0.0 || xC >= f32(${c}) || fract(xC) > 0.0) {\n return ${n}(0.0);\n }\n let iXR = i32(xR);\n let iXC = i32(xC);\n let xCh = ${f} % inChannels;\n ${u}\n return x[getIndexFromCoords4D(coord, vec4(uniforms.x_shape))/${a}];`,b=e?`\n let col = colIn * ${a};\n if (row < uniforms.dimAOuter && col < uniforms.dimInner) {\n ${h}\n }\n return ${n}(0.0);`:`\n let col = colIn * ${a};\n if (row < uniforms.dimInner && col < uniforms.dimBOuter) {\n ${h}\n }\n return ${n}(0.0);`,w=`\n let col = colIn * ${a};\n let inChannels = ${e?\"outBackprop[3]\":\"outBackprop[1]\"};\n let coordX = filterDims.x - 1 - row / (filterDims[1] * inChannels);\n let coordY = filterDims.y - 1 - (row / inChannels) % filterDims[1];\n if (${e?\"row < uniforms.dimInner && col < uniforms.dimBOuter\":\"row < uniforms.dimInner && col < uniforms.dimAOuter\"} && coordX >= 0 && coordY >= 0) {\n let rowInner = row % inChannels;\n let coord = vec4(coordX, coordY, col, rowInner);\n ${o(a)}\n }\n return ${n}(0.0);\n `,{activationFunction:_,applyActivation:I}=xt(r,n);return`\n ${_}\n fn mm_readA(batch: i32, row : i32, colIn : i32) -> ${n} {\n ${e?b:w}\n }\n\n fn mm_readB(batch: i32, row : i32, colIn : i32) -> ${n} {\n ${e?w:b}\n }\n\n fn mm_write(batch: i32, row : i32, colIn : i32, valueInput : ${n}) {\n let col = colIn * ${a};\n if (row < uniforms.dimAOuter && col < uniforms.dimBOuter) {\n var value = valueInput;\n let outWidth = ${e?\"i32(uniforms.result_shape[2])\":\"i32(uniforms.result_shape[3])\"};\n ${l}\n ${wn(t)}\n ${I}\n result[getIndexFromCoords4D(coords, vec4(uniforms.result_shape))/${a}] = value;\n }\n }`},Rs=(e,t,r,a,n,o,u,l)=>{let i=t.format===\"NHWC\",c=i?e[0].dims[3]:e[0].dims[1],m=r[0],f=i?r[2]:r[3],h=i?r[1]:r[2],b=i?r[3]:r[1],w=i?c%4===0&&b%4===0:f%4===0&&b%4===0,_=i?b:f*h,I=i?f*h:b,$=w?[8,8,1]:[_<=4||I<=4?4:16,_>4&&I<=4?4:16,1],x=w?[4,4,1]:[_<=4?1:4,_>4&&I<=4?1:4,1],T=[Math.ceil(_/$[0]/x[0]),Math.ceil(I/$[1]/x[1]),Math.ceil(m/$[2]/x[2])];De(\"verbose\",()=>`[conv_backprop_mm_webgpu] dispatch = ${T}`);let A=w?4:1,z=Math.max($[0]*A,$[1]),R=w?4:1,N=[{type:\"int32\",data:a},{type:\"int32\",data:n},{type:\"int32\",data:o}],E=M(\"x\",e[0].dataType,e[0].dims.length,R),W=M(\"w\",e[1].dataType,e[1].dims.length,1),te=q(\"result\",e[0].dataType,r.length,R),Y=[E,W];N.push(...G(e[0].dims)),N.push(...G(e[1].dims));let K=\"\";if(u){let X=M(\"bias\",e[2].dataType,e[2].dims.length,R);Y.push(X),N.push(...G(e[2].dims)),K+=`\n fn getBiasByOutputCoords(coords : vec4) -> ${w?\"vec4\":\"f32\"} {\n return bias[coords.${i?\"w\":\"y\"}${w?\"/ 4\":\"\"}];\n }`}return N.push(...G(r)),{name:\"Conv2DTransposeMatMul\",shaderCache:{hint:t.cacheKey},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:T[0],y:T[1],z:T[2]},programUniforms:N}),getShaderSource:X=>`\n ${$n(\"uniforms.result_strides\")}\n ${X.registerUniform(\"dimAOuter\",\"i32\").registerUniform(\"dimBOuter\",\"i32\").registerUniform(\"dimInner\",\"i32\").declareVariables(...Y,te)};\n const outBackprop : vec4 = vec4(${e[0].dims.join(\",\")});\n const filterDims : vec2 = vec2(${t.kernelShape[i?1:2]}, ${t.kernelShape[i?2:3]});\n const effectiveFilterDims : vec2 = filterDims + vec2(\n ${t.dilations[0]<=1?0:(t.kernelShape[i?1:2]-1)*(t.dilations[0]-1)},\n ${t.dilations[1]<=1?0:(t.kernelShape[i?2:3]-1)*(t.dilations[1]-1)});\n const pads : vec2 = vec2(i32(effectiveFilterDims[0]) - 1 - (${t.pads[0]+t.pads[2]})/2,\n i32(effectiveFilterDims[1]) - 1 - (${t.pads[1]+t.pads[3]})/2);\n const strides : vec2 = vec2(${t.strides[0]}, ${t.strides[1]});\n const dilation : vec2 = vec2(${t.dilations[0]}, ${t.dilations[1]});\n const dimAOuter : i32 = ${a};\n const dimBOuter : i32 = ${n};\n const dimInner : i32 = ${o};\n ${K}\n ${gc(i,u,t,A)}\n ${w?Ir(x,$,\"f32\",void 0,!i,z):Cr(x,$,\"f32\",void 0,!i,z,!1,void 0,l)}`}}});var yc,$a,Ds=F(()=>{\"use strict\";Pt();$e();ve();yc=(e,t,r,a,n,o,u=!1,l)=>{let i=r.format===\"NHWC\",c=i?1:2,m=i?2:3,f=i?3:1,h=U.size(a),b=u?2:1,w=r.group,_=t[1].dims,I=_[0]/w,$=_[1],x=`\n fn setOutputAtIndex(flatIndex : u32, value : ${u?`vec4<${l}>`:l}) {\n result[flatIndex] = ${u?`vec4<${l}>`:l}(value);\n }`;n&&(x+=`\n fn getBiasByOutputCoords(coords : vec4) -> ${u?`vec4<${l}>`:l} {\n return bias[coords.${i?\"w\":\"y\"}${u?\"/ 4\":\"\"}];\n }`);let T=u?4:1,A=M(\"W\",t[1].dataType,t[1].dims,T),z=M(\"Dy\",t[0].dataType,t[0].dims,T),R=[z,A];n&&R.push(M(\"bias\",t[2].dataType,[a[f]],T));let N=q(\"result\",t[0].dataType,a,T),E=`{\n let batch: u32 = ${o?\"global_id.z\":\"workgroup_id.z\"} / outShape[1];\n let r = ${o?\"global_id.z\":\"workgroup_id.z\"} % outShape[1];\n let c = ${o?\"global_id.y\":\"workgroup_id.y\"} * ${b};\n let d1: u32 = ${o?\"global_id.x\":\"workgroup_id.x\"} * 4;\n\n let dyCorner = vec2(i32(r), i32(c)) - vec2(pads);\n\n // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).\n // ? = to be determined. : = across all values in that axis.\n var dotProd: array, ${b}>;\n for (var i = 0; i < ${b}; i++) {\n dotProd[i] = vec4<${l}>(0.0);\n }\n for (var wR: u32 = 0; wR < filterDims[0]; wR = wR + 1) {\n var dyR = (${l}(dyCorner.x) + ${l}(wR)) / ${l}(strides.x);\n let wRPerm = filterDims[0] - 1 - wR;\n if (dyR < 0.0 || dyR >= ${l}(outBackprop[1]) ||\n fract(dyR) > 0.0 || wRPerm < 0) {\n continue;\n }\n let idyR: u32 = u32(dyR);\n\n for (var wC: u32 = 0; wC < filterDims[1]; wC = wC + 1) {\n let dyC = (${l}(dyCorner.y) + ${l}(wC)) / ${l}(strides.y);\n let dyC2 = (${l}(dyCorner.y) + 1.0 + ${l}(wC)) / ${l}(strides.y);\n let wCPerm = filterDims[1] - 1 - wC;\n if (wCPerm < 0) {\n continue;\n }\n var bDyCVal = true;\n var bDyCVal2 = true;\n if (dyC < 0.0 || dyC >= ${l}(outBackprop[2]) ||\n fract(dyC) > 0.0) {\n bDyCVal = false;\n }\n if (dyC2 < 0.0 || dyC2 >= ${l}(outBackprop[2]) ||\n fract(dyC2) > 0.0) {\n bDyCVal2 = false;\n }\n\n let idyC: u32 = u32(dyC);\n let idyC2: u32 = u32(dyC2);\n if (bDyCVal && bDyCVal2) {\n let d2Length = outBackprop[3];\n for (var d2 :u32 = 0; d2 < d2Length; d2 = d2 + 4) {\n let wValue0 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1\",\"d2\")};\n let wValue1 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 1\",\"d2\")};\n let wValue2 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 2\",\"d2\")};\n let wValue3 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 3\",\"d2\")};\n\n var xValue = ${z.get(\"batch\",\"idyR\",\"idyC\",\"d2\")};\n let tmpval = vec4<${l}>(dot(xValue, wValue0),\n dot(xValue, wValue1),\n dot(xValue, wValue2),\n dot(xValue, wValue3));\n dotProd[0] = dotProd[0] + tmpval;\n\n xValue = ${z.get(\"batch\",\"idyR\",\"idyC2\",\"d2\")};\n\n dotProd[1] = dotProd[1] + vec4<${l}>(dot(xValue, wValue0),\n dot(xValue, wValue1),\n dot(xValue, wValue2),\n dot(xValue, wValue3));\n }\n } else if (bDyCVal) {\n let d2Length = outBackprop[${f}];\n for (var d2: u32 = 0; d2 < d2Length; d2 = d2 + 4) {\n let wValue0 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1\",\"d2\")};\n let wValue1 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 1\",\"d2\")};\n let wValue2 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 2\",\"d2\")};\n let wValue3 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 3\",\"d2\")};\n\n var xValue = ${z.get(\"batch\",\"idyR\",\"idyC\",\"d2\")};\n let tmpval = vec4<${l}>(dot(xValue, wValue0),\n dot(xValue, wValue1),\n dot(xValue, wValue2),\n dot(xValue, wValue3));\n dotProd[0] = dotProd[0] + tmpval;\n }\n } else if (bDyCVal2) {\n let d2Length = outBackprop[3];\n for (var d2: u32 = 0; d2 < d2Length; d2 = d2 + 4) {\n let wValue0 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1\",\"d2\")};\n let wValue1 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 1\",\"d2\")};\n let wValue2 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 2\",\"d2\")};\n let wValue3 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 3\",\"d2\")};\n\n var xValue = ${z.get(\"batch\",\"idyR\",\"idyC2\",\"d2\")};\n let tmpval = vec4<${l}>(dot(xValue, wValue0),\n dot(xValue, wValue1),\n dot(xValue, wValue2),\n dot(xValue, wValue3));\n dotProd[1] = dotProd[1] + tmpval;\n }\n }\n }\n }\n\n for (var i: u32 = 0; i < ${b}; i = i + 1) {\n let value = dotProd[i] + ${n?\"bias[c+i]\":`vec4<${l}>(0.0)`};\n ${N.set(\"batch\",\"r\",\"c + i\",\"d1\",\"value\")};\n }\n }`,W=`\n let outputIndices = ${N.offsetToIndices(\"global_idx\")};\n let batch = ${N.indicesGet(\"outputIndices\",0)};\n let d1 = ${N.indicesGet(\"outputIndices\",f)};\n let r = ${N.indicesGet(\"outputIndices\",c)};\n let c = ${N.indicesGet(\"outputIndices\",m)};\n let dyCorner = vec2(i32(r), i32(c)) - pads;\n let dyRCorner = dyCorner.x;\n let dyCCorner = dyCorner.y;\n let groupId = d1 / ${$};\n let wOutChannel = d1 - groupId * ${$};\n // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).\n // ? = to be determined. : = across all values in that axis.\n var dotProd = ${l}(0.0);\n for (var wR: u32 = 0; wR < effectiveFilterDims.x; wR = wR + 1) {\n if (wR % dilations.x != 0) {\n continue;\n }\n let dyR = (${l}(dyRCorner) + ${l}(wR)) / ${l}(strides[0]);\n let wRPerm = filterDims.x - 1 - wR / dilations.x;\n if (dyR < 0.0 || dyR >= ${l}(outBackprop[${c}]) || fract(dyR) > 0.0 ||\n wRPerm < 0) {\n continue;\n }\n let idyR: u32 = u32(dyR);\n\n for (var wC: u32 = 0; wC < effectiveFilterDims.y; wC = wC + 1) {\n if (wC % dilations.y != 0) {\n continue;\n }\n let dyC = (${l}(dyCCorner) + ${l}(wC)) / ${l}(strides.y);\n let wCPerm = filterDims.y - 1 - wC / dilations.y;\n if (dyC < 0.0 || dyC >= ${l}(outBackprop[${m}]) ||\n fract(dyC) > 0.0 || wCPerm < 0) {\n continue;\n }\n let idyC: u32 = u32(dyC);\n var inputChannel = groupId * ${I};\n for (var d2: u32 = 0; d2 < ${I}; d2 = d2 + 1) {\n let xValue = ${i?z.get(\"batch\",\"idyR\",\"idyC\",\"inputChannel\"):z.get(\"batch\",\"inputChannel\",\"idyR\",\"idyC\")};\n let wValue = ${A.get(\"inputChannel\",\"wOutChannel\",\"u32(wRPerm)\",\"u32(wCPerm)\")};\n dotProd = dotProd + xValue * wValue;\n inputChannel = inputChannel + 1;\n }\n }\n }\n let value = dotProd + ${n?\"bias[d1]\":`${l}(0.0)`};\n ${N.setByOffset(\"global_idx\",\"value\")};\n `;return`\n ${e.declareVariables(...R,N)}\n ${x}\n const outShape : vec4 = vec4(${a.join(\",\")});\n const outBackprop : vec4 = vec4(${t[0].dims.join(\",\")});\n const strides : vec2 = vec2(${r.strides[0]}, ${r.strides[1]});\n const filterDims : vec2 = vec2(${r.kernelShape[i?1:2]}, ${r.kernelShape[i?2:3]});\n const dilations : vec2 = vec2(${r.dilations[0]}, ${r.dilations[1]});\n const effectiveFilterDims : vec2 = filterDims + vec2(\n ${r.dilations[0]<=1?0:(r.kernelShape[i?1:2]-1)*(r.dilations[0]-1)},\n ${r.dilations[1]<=1?0:(r.kernelShape[i?2:3]-1)*(r.dilations[1]-1)});\n const pads : vec2 = vec2(i32(effectiveFilterDims[0]) - 1 - (${r.pads[0]+r.pads[2]})/2,\n i32(effectiveFilterDims[1]) - 1 - (${r.pads[1]+r.pads[3]})/2);\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes(h)};\n ${u?E:W}}`},$a=(e,t,r)=>{let a=e.length>2,n=t.outputShape,o=U.size(n),u=[Math.ceil(o/64),1,1];De(\"verbose\",()=>`[conv2d_backprop_webgpu] dispatch = ${u}`);let l=Fe(e[0].dataType);return{name:\"ConvTranspose2D\",shaderCache:{hint:t.cacheKey},getRunData:()=>({dispatchGroup:{x:u[0],y:u[1],z:u[2]},outputs:[{dims:r?r(n):n,dataType:e[0].dataType}]}),getShaderSource:i=>yc(i,e,t,n,a,u[1]===1&&u[2]===1,!1,l)}}});var bc,wc,vc,zs,Ms,$c,_c,xc,Sc,Us,Ns=F(()=>{\"use strict\";je();Bs();Ds();Rt();tr();bc=(e,t,r,a,n,o)=>(e-1)*t+r+(a-1)*n+1-o,wc=(e,t,r,a,n)=>{let o=Math.floor(e/2);t===\"SAME_UPPER\"?(r[a]=o,r[n]=e-o):t===\"SAME_LOWER\"&&(r[a]=e-o,r[n]=o)},vc=(e,t,r,a,n,o,u,l,i,c)=>{let m=e.length-2,f=c.length===0;if(i.length===0)for(let w=0;w{let r=e.kernelShape.slice();if(e.kernelShape.length===0||e.kernelShape.reduce((h,b)=>h*b,1)===0){r.length=0;for(let h=2;hh+b,0)===0){let h=t[0].dims.length-2;i=new Array(h).fill(1)}let c=e.strides.slice();if(c.reduce((h,b)=>h+b,0)===0){let h=t[0].dims.length-2;c=new Array(h).fill(1)}vc(l,r,i,e.autoPad,e.group,n,c,a,u,o);let m=Object.assign({},e),f=e.cacheKey+[r.join(\"n,\"),n.join(\",\"),c.join(\",\"),u.join(\",\"),o.join(\",\"),i.join(\",\")].join(\"_\");return Object.assign(m,{kernelShape:r,pads:n,outputPadding:u,outputShape:o,dilations:i,strides:c,cacheKey:f}),m},Ms=e=>{let t=bn(e),r=e.format,a=[\"NOTSET\",\"VALID\",\"SAME_UPPER\",\"SAME_LOWER\"][typeof e.autoPad>\"u\"?0:e.autoPad],n=e.dilations,o=e.group,u=e.kernelShape,l=e.pads,i=e.strides,c=e.wIsConst(),m=e.outputPadding,f=e.outputShape;return ge({autoPad:a,format:r,dilations:n,group:o,kernelShape:u,outputPadding:m,outputShape:f,pads:l,strides:i,wIsConst:c,...t})},$c=(e,t)=>{if(!e||e.length!==2&&e.length!==3)throw new Error(\"Conv requires 2 or 3 inputs\");if(e[0].dims.length!==4&&e[0].dims.length!==3)throw new Error(\"currently only support 2-dimensional conv\");if(e[0].dims.length!==e[1].dims.length)throw new Error(\"filter does not have same dimension as input\");let r=e[0].dims[t.format===\"NHWC\"?e[0].dims.length-1:1],a=e[1].dims[0];if(r!==a)throw new Error(\"FILTER_IN_CHANNEL should be equal to DATA_CHANNEL\");let n=e[1].dims[1]*t.group;if(e.length===3&&(e[2].dims.length!==1||e[2].dims[0]!==n))throw new Error(\"invalid bias\");let o=e[0].dims.length-2;if(t.dilations.reduce((m,f)=>m+f,0)>0&&t.dilations.length!==o)throw new Error(`dilations should be ${o}D`);if(t.strides.reduce((m,f)=>m+f,0)>0&&t.strides.length!==o)throw new Error(`strides should be ${o}D`);if(t.pads.reduce((m,f)=>m+f,0)>0&&t.pads.length!==o*2)throw new Error(`pads should be ${o*2}D`);if(t.outputPadding.length!==o&&t.outputPadding.length!==0)throw new Error(`output_padding should be ${o}D`);if(t.kernelShape.reduce((m,f)=>m+f,0)>0&&t.kernelShape.length!==0&&t.kernelShape.length!==e[1].dims.length-2)throw new Error(\"invalid kernel shape\");if(t.outputShape.length!==0&&t.outputShape.length!==e[0].dims.length-2)throw new Error(\"invalid output shape\")},_c=[2,3,1,0],xc=(e,t,r)=>{let a=zs(r,t),n=r.format===\"NHWC\",o=a.outputShape,u=o[n?3:1],l=t[0].dims[n?3:1];if(a.group!==1||u===1&&l===1){e.compute($a(t,a));return}let i=o[n?1:2],c=o[n?2:3],m=t[1].dims[2],f=t[1].dims[3],h=n?i*c:u,b=n?u:i*c,w=m*f*l,_=!0,I=e.kernelCustomData.wT??e.compute(mt(t[1],_c),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=I);let $=[t[0],I],x=t.length===3;x&&(!n&&t[2].dims.length===1?$.push(t[2].reshape([t[2].dims[0],1,1])):$.push(t[2])),e.compute(Rs($,a,o,h,b,w,x,_),{inputs:$})},Sc=(e,t)=>{let r=t.format===\"NHWC\",a=[e.inputs[0].reshape(r?[e.inputs[0].dims[0],1,e.inputs[0].dims[1],e.inputs[0].dims[2]]:[e.inputs[0].dims[0],e.inputs[0].dims[1],1,e.inputs[0].dims[2]]),e.inputs[1].reshape([e.inputs[1].dims[0],e.inputs[1].dims[1],1,e.inputs[1].dims[2]])];a.length===3&&a.push(e.inputs[2]);let n=t.kernelShape;(n.length===0||n[0]===0)&&(n=[e.inputs[1].dims[2]]);let o=t.dilations;(o.length===0||o[0]===0)&&(o=[1]);let u=t.strides;(u.length===0||u[0]===0)&&(u=[1]);let l=t.pads;l.length===0&&(l=[0,0]),l=[0,l[0],0,l[1]],u=[1].concat(u),o=[1].concat(o),n=[1].concat(n);let i=zs({...t,pads:l,strides:u,dilations:o,kernelShape:n},a);e.compute($a(a,i,c=>r?[c[0],c[2],c[3]]:[c[0],c[1],c[3]]))},Us=(e,t)=>{$c(e.inputs,t),e.inputs[0].dims.length===3?Sc(e,t):xc(e,e.inputs,t)}});var Ic,Ws,Vs,Hs=F(()=>{\"use strict\";Ue();$e();je();ve();Ic=(e,t,r,a)=>{let n=U.size(t),o=t.length,u=M(\"input\",e,o),l=q(\"output\",e,o),i=r.dataType===6?r.getInt32Array()[0]:Number(r.getBigInt64Array()[0]),c=U.normalizeAxis(i,o),m=f=>{let h=` i32(${u.indicesGet(\"inputIndices\",\"uniforms.axis\")}) `,b=ce(\"uniforms.input_shape\",\"uniforms.axis\",o),w=a.reverse?h+(a.exclusive?\" + 1\":\"\"):\"0\",_=a.reverse?b:h+(a.exclusive?\"\":\" + 1\");return`\n ${f.registerUniform(\"outputSize\",\"u32\").registerUniform(\"axis\",\"u32\").declareVariables(u,l)}\n ${f.mainStart()}\n ${f.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\n var inputIndices = ${l.offsetToIndices(\"global_idx\")};\n var sum = ${l.type.value}(0);\n let first : i32 = ${w};\n let last : i32 = ${_};\n for (var i : i32 = first; i < last; i++) {\n ${u.indicesSet(\"inputIndices\",\"uniforms.axis\",\"u32(i)\")};\n sum = sum + ${u.getByIndices(\"inputIndices\")};\n }\n ${l.setByOffset(\"global_idx\",\"sum\")};\n }`};return{name:\"CumSum\",shaderCache:{hint:a.cacheKey,inputDependencies:[\"rank\"]},getRunData:()=>({outputs:[{dims:t,dataType:e}],dispatchGroup:{x:Math.ceil(n/64)},programUniforms:[{type:\"uint32\",data:n},{type:\"int32\",data:c},...G(t),...G(t)]}),getShaderSource:m}},Ws=(e,t)=>{let r=e.inputs[0].dims,a=e.inputs[0].dataType,n=e.inputs[1];e.compute(Ic(a,r,n,t),{inputs:[0]})},Vs=e=>{let t=e.exclusive===1,r=e.reverse===1;return ge({exclusive:t,reverse:r})}});var _a,xn,Ls,Cc,Ac,xa,Sa,Gs,Ec,Fs,qs,js=F(()=>{\"use strict\";$e();je();ve();_a=\"[a-zA-Z]|\\\\.\\\\.\\\\.\",xn=\"(\"+_a+\")+\",Ls=\"^\"+xn+\"$\",Cc=\"(\"+xn+\",)*\"+xn,Ac=\"^\"+Cc+\"$\",xa=class{constructor(t=-1){this.symbolToIndices=new Map,this.inputIndex=t}addSymbol(t,r){let a=this.symbolToIndices.get(t);a===void 0?a=[r]:a.push(r),this.symbolToIndices.set(t,a)}},Sa=class{constructor(t,r){this.equation=r;this.hasEllipsis=!1,this.symbolToInfo=new Map,this.lhs=new Array,this.outputDims=[];let[a,n]=r.includes(\"->\")?r.split(\"->\",2):[r,\"\"];if(!a.match(RegExp(Ac)))throw new Error(\"Invalid LHS term\");if(a.split(\",\").forEach((l,i)=>{let c=t[i].dims.slice();if(!l.match(RegExp(Ls)))throw new Error(\"Invalid LHS term\");let m=this.processTerm(l,!0,c,i);this.lhs.push(m)}),n===\"\")n+=[...this.symbolToInfo.entries()].filter(([l,i])=>i.count===1||l===\"...\").map(([l])=>l).join(\"\");else if(!n.match(RegExp(xn)))throw new Error(\"Invalid RHS\");n.match(RegExp(_a,\"g\"))?.forEach(l=>{if(l===\"...\")this.outputDims=this.outputDims.concat(this.ellipsisDims);else{let i=this.symbolToInfo.get(l);if(i===void 0)throw new Error(\"Invalid RHS symbol\");this.outputDims.push(i.dimValue)}}),this.rhs=this.processTerm(n,!1,this.outputDims)}addSymbol(t,r,a){let n=this.symbolToInfo.get(t);if(n!==void 0){if(n.dimValue!==r&&n.count!==1)throw new Error(\"Dimension mismatch\");n.count++,n.inputIndices.push(a)}else n={count:1,dimValue:r,inputIndices:[a]};this.symbolToInfo.set(t,n)}processTerm(t,r,a,n=-1){let o=a.length,u=!1,l=[],i=0;if(!t.match(RegExp(Ls))&&!r&&t!==\"\")throw new Error(\"Invalid LHS term\");let c=t.match(RegExp(_a,\"g\")),m=new xa(n);return c?.forEach((f,h)=>{if(f===\"...\"){if(u)throw new Error(\"Only one ellipsis is allowed per input term\");u=!0;let b=o-c.length+1;if(b<0)throw new Error(\"Ellipsis out of bounds\");if(l=a.slice(i,i+b),this.hasEllipsis){if(this.ellipsisDims.length!==l.length||this.ellipsisDims.toString()!==l.toString())throw new Error(\"Ellipsis dimensions mismatch\")}else if(r)this.hasEllipsis=!0,this.ellipsisDims=l;else throw new Error(\"Ellipsis must be specified in the LHS\");for(let w=0;we+\"_max\",Ec=(e,t,r,a,n)=>{let u=t.map((b,w)=>e[w]?b.length:b).map((b,w)=>M(`input${w}`,r,b)),l=U.size(n),i=Be(n.length),c=i?n.length:n,m=q(\"output\",r,c),f=[...a.symbolToInfo.keys()].filter(b=>!a.rhs.symbolToIndices.has(b)),h=b=>{let w=[],_=\"var prod = 1.0;\",I=\"var sum = 0.0;\",$=\"sum += prod;\",x=[],T=[],A=[],z=[],R=a.symbolToInfo.size===a.rhs.symbolToIndices.size;a.symbolToInfo.forEach((E,W)=>{if(a.rhs.symbolToIndices.has(W)){let te=a.rhs.symbolToIndices.get(W)?.[0];te!==void 0&&a.lhs.forEach((Y,K)=>{if(E.inputIndices.includes(K)){let X=Y.symbolToIndices.get(W);if(X===void 0)throw new Error(\"Invalid symbol error\");X.forEach(Z=>{w.push(`${u[K].indicesSet(`input${K}Indices`,Z,m.indicesGet(\"outputIndices\",te))}`)})}})}else a.lhs.forEach((te,Y)=>{if(E.inputIndices.includes(Y)){let K=te.symbolToIndices.get(W);if(K===void 0)throw new Error(\"Invalid symbol error\");K.forEach(X=>{x.push(`${u[Y].indicesSet(`input${Y}Indices`,X,`${W}`)}`)}),z.push(`prod *= ${u[Y].getByIndices(`input${Y}Indices`)};`)}}),T.push(`for(var ${W}: u32 = 0; ${W} < uniforms.${Gs(W)}; ${W}++) {`),A.push(\"}\")});let N=R?[...w,`let sum = ${u.map((E,W)=>E.getByIndices(`input${W}Indices`)).join(\" * \")};`]:[...w,I,...T,...x,_,...z,$,...A];return`\n ${b.registerUniforms(f.map(E=>({name:`${Gs(E)}`,type:\"u32\"}))).registerUniform(\"outputSize\",\"u32\").declareVariables(...u,m)}\n\n ${b.mainStart()}\n ${b.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\n var outputIndices = ${m.offsetToIndices(\"global_idx\")};\n ${u.map((E,W)=>`var input${W}Indices: ${u[W].type.indices};`).join(`\n`)}\n ${N.join(`\n`)};\n ${m.setByOffset(\"global_idx\",\"sum\")};\n }`};return{name:\"Einsum\",shaderCache:{hint:a.equation,inputDependencies:e.map(b=>b?\"rank\":\"dims\")},getRunData:()=>{let b=f.filter(_=>a.symbolToInfo.has(_)).map(_=>({type:\"uint32\",data:a.symbolToInfo.get(_)?.dimValue||0}));b.push({type:\"uint32\",data:l});let w=t.filter((_,I)=>e[I]).map((_,I)=>[...G(_)]).reduce((_,I)=>_.concat(I),b);return i&&w.push(...G(n)),{outputs:[{dims:n,dataType:r}],dispatchGroup:{x:Math.ceil(l/64)},programUniforms:w}},getShaderSource:h}},Fs=(e,t)=>{let r=new Sa(e.inputs,t.equation),a=e.inputs.map((u,l)=>Be(u.dims.length)),n=r.outputDims,o=e.inputs.map((u,l)=>u.dims);e.compute(Ec(a,o,e.inputs[0].dataType,r,n))},qs=e=>{let t=e.equation.replace(/\\s+/g,\"\");return ge({equation:t})}});var Tc,Ks,Oc,kc,Ys,Zs=F(()=>{\"use strict\";Ue();$e();ve();Tc=e=>{if(!e||e.length!==2)throw new Error(\"Expand requires 2 input.\");let t=e[0].dims,r=Array.from(e[1].getBigInt64Array(),Number),a=r.length{let r=e.length-t.length,a=[];for(let n=0;ne.length>t.length?Ks(e,t):Ks(t,e),kc=e=>{let t=e[0].dims,r=Array.from(e[1].getBigInt64Array(),Number),a=Oc(t,r),n=e[0].dataType,o=n===9?4:1,u=Math.ceil(U.size(a)/o),l=Be(t.length),i=Be(a.length),c=f=>{let h=l?t.length:t,b=i?a.length:a,w=M(\"input\",n,h,o),_=q(\"output\",n,b,o),I;if(n===9){let $=(x,T,A=\"\")=>`\n let outputIndices${T} = ${_.offsetToIndices(`outputOffset + ${T}u`)};\n let offset${T} = ${w.broadcastedIndicesToOffset(`outputIndices${T}`,_)};\n let index${T} = offset${T} / 4u;\n let component${T} = offset${T} % 4u;\n ${x}[${T}] = ${A}(${w.getByOffset(`index${T}`)}[component${T}]);\n `;I=`\n let outputOffset = global_idx * ${o};\n var data = vec4(0);\n ${$(\"data\",0,\"u32\")}\n ${$(\"data\",1,\"u32\")}\n ${$(\"data\",2,\"u32\")}\n ${$(\"data\",3,\"u32\")}\n ${_.setByOffset(\"global_idx\",\"data\")}\n }`}else I=`\n let outputIndices = ${_.offsetToIndices(\"global_idx\")};\n let inputOffset = ${w.broadcastedIndicesToOffset(\"outputIndices\",_)};\n ${_.setByOffset(\"global_idx\",w.getByOffset(\"inputOffset\"))}\n }`;return`\n ${f.registerUniform(\"vec_size\",\"u32\").declareVariables(w,_)}\n ${f.mainStart()}\n ${f.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.vec_size\")}\n ${I}`},m=[{type:\"uint32\",data:u}];return l&&m.push(...G(t)),i&&m.push(...G(a)),{name:\"Expand\",shaderCache:{hint:`${a.length}`,inputDependencies:[l?\"rank\":\"dims\"]},getShaderSource:c,getRunData:()=>({outputs:[{dims:a,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:m})}},Ys=e=>{Tc(e.inputs),e.compute(kc(e.inputs),{inputs:[0]})}});var Pc,Rc,Xs,Qs,Js=F(()=>{\"use strict\";Ue();$e();je();ve();Pc=e=>{if(!e||e.length!==2)throw new Error(\"Gather requires 2 inputs.\")},Rc=(e,t)=>{let r=e[0].dims,a=e[1].dims,n=r.length,o=U.normalizeAxis(t.axis,n),u=r.slice(0);u.splice(o,1,...a);let l=r[o],i=e[0].dataType===9?4:1,c=Math.ceil(U.size(u)/i),m=Be(e[0].dims.length),f=m?e[0].dims.length:e[0].dims,h=Be(e[1].dims.length),b=h?e[1].dims.length:e[1].dims,w=Be(u.length),_=w?u.length:u,I=[{type:\"uint32\",data:c},{type:\"int32\",data:l},{type:\"uint32\",data:o}];m&&I.push(...G(e[0].dims)),h&&I.push(...G(e[1].dims)),w&&I.push(...G(u));let $=[];$.push(m?\"rank\":\"dims\"),$.push(h?\"rank\":\"dims\");let x=T=>{let A=M(\"data\",e[0].dataType,f,i),z=M(\"inputIndices\",e[1].dataType,b),R=q(\"output\",e[0].dataType,_,i),N=W=>{let te=a.length,Y=`var indicesIndices${W} = ${z.type.indices}(0);`;for(let K=0;K1?`indicesIndices${W}[${K}]`:`indicesIndices${W}`} = ${u.length>1?`outputIndices${W}[uniforms.axis + ${K}]`:`outputIndices${W}`};`;Y+=`\n var idx${W} = ${z.getByIndices(`indicesIndices${W}`)};\n if (idx${W} < 0) {\n idx${W} = idx${W} + uniforms.axisDimLimit;\n }\n var dataIndices${W} = ${A.type.indices}(0);\n `;for(let K=0,X=0;K1?`dataIndices${W}[${K}]`:`dataIndices${W}`} = u32(idx${W});`,X+=te):(Y+=`${n>1?`dataIndices${W}[${K}]`:`dataIndices${W}`} = ${u.length>1?`outputIndices${W}[${X}]`:`outputIndices${W}`};`,X++);return Y},E;if(e[0].dataType===9){let W=(te,Y,K=\"\")=>`\n let outputIndices${Y} = ${R.offsetToIndices(`outputOffset + ${Y}u`)};\n ${N(Y)};\n let offset${Y} = ${A.indicesToOffset(`dataIndices${Y}`)};\n let index${Y} = offset${Y} / 4u;\n let component${Y} = offset${Y} % 4u;\n ${te}[${Y}] = ${K}(${A.getByOffset(`index${Y}`)}[component${Y}]);\n `;E=`\n let outputOffset = global_idx * ${i};\n var value = vec4(0);\n ${W(\"value\",0,\"u32\")}\n ${W(\"value\",1,\"u32\")}\n ${W(\"value\",2,\"u32\")}\n ${W(\"value\",3,\"u32\")}\n ${R.setByOffset(\"global_idx\",\"value\")}\n `}else E=`\n let outputIndices = ${R.offsetToIndices(\"global_idx\")};\n ${N(\"\")};\n let value = ${A.getByIndices(\"dataIndices\")};\n ${R.setByOffset(\"global_idx\",\"value\")};\n `;return`\n ${T.registerUniform(\"outputSize\",\"u32\").registerUniform(\"axisDimLimit\",\"i32\").registerUniform(\"axis\",\"u32\").declareVariables(A,z,R)}\n ${T.mainStart()}\n ${T.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\n ${E}\n }`};return{name:\"Gather\",shaderCache:{hint:t.cacheKey,inputDependencies:$},getRunData:()=>({outputs:[{dims:u,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(c/64)},programUniforms:I}),getShaderSource:x}},Xs=e=>ge({axis:e.axis}),Qs=(e,t)=>{let r=e.inputs;Pc(r),e.compute(Rc(e.inputs,t))}});var Bc,Dc,eu,tu,ru=F(()=>{\"use strict\";$e();je();ve();Bc=e=>{if(!e||e.length!==2)throw new Error(\"GatherElements requires 2 inputs.\");if(e[0].dims.length<1)throw new Error(\"GatherElements requires that the data input be rank >= 1.\");if(e[0].dims.length!==e[1].dims.length)throw new Error(`GatherElements requires that the data input and\n indices input tensors be of same rank.`)},Dc=(e,t)=>{let r=e[0].dims,a=e[0].dataType,n=r.length,o=e[1].dims,u=e[1].dataType,l=U.normalizeAxis(t.axis,n),i=r[l],c=o.slice(0),m=U.size(c),f=M(\"input\",a,n),h=M(\"indicesInput\",u,o.length),b=q(\"output\",a,c.length),w=[{type:\"uint32\",data:m},{type:\"int32\",data:i},{type:\"uint32\",data:l}];return w.push(...G(r)),w.push(...G(o)),w.push(...G(c)),{name:\"GatherElements\",shaderCache:{inputDependencies:[\"rank\",\"rank\"]},getRunData:()=>({outputs:[{dims:c,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(m/64)},programUniforms:w}),getShaderSource:$=>`\n ${$.registerUniform(\"outputSize\",\"u32\").registerUniform(\"axisDimLimit\",\"i32\").registerUniform(\"axis\",\"u32\").declareVariables(f,h,b)}\n ${$.mainStart()}\n ${$.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\n\n let outputIndices = ${b.offsetToIndices(\"global_idx\")};\n\n var idx = ${h.getByOffset(\"global_idx\")};\n if (idx < 0) {\n idx = idx + uniforms.axisDimLimit;\n }\n var inputIndices = ${f.type.indices}(outputIndices);\n ${f.indicesSet(\"inputIndices\",\"uniforms.axis\",\"u32(idx)\")};\n let value = ${f.getByIndices(\"inputIndices\")};\n\n ${b.setByOffset(\"global_idx\",\"value\")};\n }`}},eu=e=>ge({axis:e.axis}),tu=(e,t)=>{let r=e.inputs;Bc(r),e.compute(Dc(e.inputs,t))}});var zc,Mc,nu,au,iu=F(()=>{\"use strict\";$e();ve();zc=e=>{if(!e)throw new Error(\"Input is missing\");if(e.length<2||e.length>3)throw new Error(\"Invaid input number.\");if(e.length===3&&e[2].dims.length>2)throw new Error(\"Invalid input shape of C\");if(e[0].dataType!==e[1].dataType||e.length===3&&e[0].dataType!==e[2].dataType)throw new Error(\"Input types are mismatched\")},Mc=(e,t)=>{let r=e[0].dims.slice(),a=e[1].dims.slice(),[n,o,u]=ln.getShapeOfGemmResult(r,t.transA,a,t.transB,e.length===3?e[2].dims:void 0),l=[n,o];if(!l)throw new Error(\"Can't use gemm on the given tensors\");let i=U.size(l),c=[{type:\"uint32\",data:i},{type:\"uint32\",data:n},{type:\"uint32\",data:o},{type:\"uint32\",data:u},{type:\"float32\",data:t.alpha},{type:\"float32\",data:t.beta}],m=[\"type\",\"type\"];e.length===3&&(c.push(...G(e[2].dims)),m.push(\"rank\")),c.push(...G(l));let f=h=>{let b=\"\";t.transA&&t.transB?b=\"value += a[k * uniforms.M + m] * b[n * uniforms.K + k];\":t.transA&&!t.transB?b=\"value += a[k * uniforms.M + m] * b[k * uniforms.N + n];\":!t.transA&&t.transB?b=\"value += a[m * uniforms.K + k] * b[n * uniforms.K + k];\":!t.transA&&!t.transB&&(b=\"value += a[m * uniforms.K + k] * b[k * uniforms.N + n];\");let w=t.alpha===1?\"\":\"value *= uniforms.alpha;\",_=M(\"a\",e[0].dataType,e[0].dims),I=M(\"b\",e[1].dataType,e[1].dims),$=_.type.value,x=null,T=[_,I];e.length===3&&(x=M(\"c\",e[2].dataType,e[2].dims.length),T.push(x));let A=q(\"output\",e[0].dataType,l.length);T.push(A);let z=[{name:\"output_size\",type:\"u32\"},{name:\"M\",type:\"u32\"},{name:\"N\",type:\"u32\"},{name:\"K\",type:\"u32\"},{name:\"alpha\",type:\"f32\"},{name:\"beta\",type:\"f32\"}];return`\n ${h.registerUniforms(z).declareVariables(...T)}\n\n ${h.mainStart()}\n ${h.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n\n let m = global_idx / uniforms.N;\n let n = global_idx % uniforms.N;\n\n var value = ${$}(0);\n for (var k: u32 = 0u; k < uniforms.K; k++) {\n ${b}\n }\n\n ${w}\n ${(()=>x!=null?`let cOffset = ${x.broadcastedIndicesToOffset(\"vec2(m, n)\",A)}; value += ${$}(uniforms.beta) * ${x.getByOffset(\"cOffset\")};`:\"\")()}\n output[global_idx] = value;\n }`};return{name:\"Gemm\",shaderCache:{hint:`${t.cacheKey}`,inputDependencies:m},getRunData:()=>({outputs:[{dims:l,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(i/64)},programUniforms:c}),getShaderSource:f}},nu=e=>{let t=e.transA,r=e.transB,a=e.alpha,n=e.beta;return{transA:t,transB:r,alpha:a,beta:n,cacheKey:`${e.transA};${e.transB};${e.alpha===1}`}},au=(e,t)=>{zc(e.inputs),e.compute(Mc(e.inputs,t))}});var Uc,Nc,Wc,ou,su=F(()=>{\"use strict\";Ue();$e();ve();Uc=(e,t)=>{let r=e[0].dims,a=r,n=2,o=U.sizeToDimension(r,n),u=U.sizeFromDimension(r,n),l=qe(u),i=u/l,c=[r[0],r[1],i],m=[\"rank\",\"type\",\"type\"],f=[{type:\"uint32\",data:u},{type:\"uint32\",data:i}];f.push(...G(c),...G(c));let h=b=>{let w=M(\"x\",e[0].dataType,c.length,l),_=M(\"scale\",e[1].dataType,e[1].dims),I=M(\"bias\",e[2].dataType,e[2].dims),$=q(\"output\",e[0].dataType,c.length,l),x=[w,_,I,$],T=w.type.value,A=l===1?\"f32\":`vec${l}`,z=64,R=[{name:\"normSize\",type:\"u32\"},{name:\"normPackedSize\",type:\"u32\"}];return`\n var meanShared : f32;\n var squaredNormShared : f32;\n var workgroupShared : array<${A}, ${z}>;\n const workgroupSize = ${z}u;\n ${b.registerUniforms(R).declareVariables(...x)}\n ${b.mainStart(z)}\n let norm = global_idx / workgroupSize;\n let batch = norm / uniforms.x_shape[1];\n let channel = norm % uniforms.x_shape[1];\n let localIndex = local_id.x;\n\n // initialize workgroup memory\n var initial = ${A}(0);\n for (var h = localIndex; h < uniforms.normPackedSize; h += workgroupSize) {\n initial = initial + ${A}(${w.get(\"batch\",\"channel\",\"h\")});\n }\n workgroupShared[localIndex] = initial;\n workgroupBarrier();\n\n // Calculate the mean of current channel data.\n for (var currSize = workgroupSize >> 1; currSize > 0; currSize = currSize >> 1) {\n if (localIndex < currSize) {\n workgroupShared[localIndex] = workgroupShared[localIndex] + workgroupShared[localIndex + currSize];\n }\n workgroupBarrier();\n }\n if (localIndex == 0) {\n meanShared = ${rt(\"workgroupShared[0]\",l)} / f32(uniforms.normSize);\n }\n workgroupBarrier();\n\n // reinitialize workgroup memory.\n initial = ${A}(0);\n for (var h = localIndex; h < uniforms.normPackedSize; h += workgroupSize) {\n let deviation = ${A}(${w.get(\"batch\",\"channel\",\"h\")}) - ${A}(meanShared);\n initial = initial + deviation * deviation;\n }\n workgroupShared[localIndex] = initial;\n workgroupBarrier();\n\n // Calculate the sum of square of deviation of current channel data.\n for (var currSize = workgroupSize >> 1; currSize > 0; currSize = currSize >> 1) {\n if (localIndex < currSize) {\n workgroupShared[localIndex] = workgroupShared[localIndex] + workgroupShared[localIndex + currSize];\n }\n workgroupBarrier();\n }\n if (localIndex == 0) {\n squaredNormShared = ${rt(\"workgroupShared[0]\",l)};\n }\n workgroupBarrier();\n\n let invStdDev = inverseSqrt(squaredNormShared / f32(uniforms.normSize) + f32(${t.epsilon}));\n let channelScale = invStdDev * f32(${_.getByOffset(\"channel\")});\n let channelShift = f32(${I.getByOffset(\"channel\")}) - meanShared * channelScale;\n for (var h = localIndex; h < uniforms.normPackedSize; h += workgroupSize) {\n let value = ${w.get(\"batch\",\"channel\",\"h\")} * ${T}(${A}(channelScale)) + ${T}(${A}(channelShift));\n ${$.set(\"batch\",\"channel\",\"h\",\"value\")};\n }\n }`};return{name:\"InstanceNormalization\",shaderCache:{hint:`${t.epsilon};${l}`,inputDependencies:m},getRunData:()=>({outputs:[{dims:a,dataType:e[0].dataType}],dispatchGroup:{x:o},programUniforms:f}),getShaderSource:h}},Nc=(e,t,r,a,n,o,u,l)=>{let i=qe(u),c=64,m=i===1?\"vec2f\":`mat2x${i}f`,f=i===1?\"f32\":`vec${i}f`,h=(R,N)=>`${m}(${R}, ${N})`,b=n*u/i,w=Math.ceil(o/c),_=[\"type\"],I=[{type:\"uint32\",data:w},{type:\"uint32\",data:o},{type:\"uint32\",data:Math.floor(u/i)},{type:\"uint32\",data:Math.floor(o*u/i)}],$=R=>{let N=M(\"input\",t.dataType,t.dims,i);return`\n ${R.declareVariables(N)}\n @group(0) @binding(1) var output : array<${m}>;\n struct Uniforms {wg_size:u32, H:u32, C:u32, image_size:u32};\n @group(0) @binding(2) var uniforms: Uniforms;\n\n ${R.mainStart(c)}\n let currentImageNumber = global_idx / ${c} / uniforms.C;\n let currentChannelNumber = (global_idx / ${c}) % uniforms.C;\n let wgId = global_idx % ${c};\n let wgOffset = wgId * uniforms.wg_size;\n if (wgOffset >= uniforms.H) {\n return;\n }\n let wgMax = min(wgOffset + uniforms.wg_size, uniforms.H);\n\n let offset = currentImageNumber * uniforms.image_size + currentChannelNumber;\n var sum = ${Qe(\"f32\",i)};\n var squaredSum = ${Qe(\"f32\",i)};\n for (var i: u32 = wgOffset; i < wgMax; i++) {\n let value = ${f}(input[offset + i * uniforms.C]);\n sum += value;\n squaredSum += value * value;\n }\n output[global_idx] = ${h(\"sum\",\"squaredSum\")};\n }`},x=e.compute({name:\"InstanceNormComputeMean\",shaderCache:{hint:`${i}`,inputDependencies:_},getRunData:()=>({outputs:[{dims:[n,u,c,2],dataType:1}],dispatchGroup:{x:n*u/i},programUniforms:I}),getShaderSource:$},{inputs:[t],outputs:[-1]})[0],T=[{type:\"uint32\",data:b},{type:\"uint32\",data:o},{type:\"uint32\",data:Math.floor(u/i)},{type:\"uint32\",data:Math.floor(c*u/i)}],A=[\"type\",\"type\",\"type\"],z=R=>{let N=M(\"scale\",r.dataType,r.dims,i),E=M(\"bias\",a.dataType,a.dims,i);return`\n @group(0) @binding(0) var input : array<${m}>;\n @group(0) @binding(1) var scale : array<${N.type.storage}>;\n @group(0) @binding(2) var bias : array<${E.type.storage}>;\n @group(0) @binding(3) var output : array<${m}>;\n struct Uniforms {units_of_work : u32, H: u32, C : u32, image_size : u32};\n @group(0) @binding(4) var uniforms: Uniforms;\n\n ${R.mainStart()}\n ${R.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.units_of_work\")}\n let currentImageNumber = global_idx / uniforms.C;\n let currentChannelNumber = global_idx % uniforms.C;\n\n let offset = currentImageNumber * uniforms.image_size;\n var sum = ${Qe(\"f32\",i)};\n var squaredSum = ${Qe(\"f32\",i)};\n for (var i: u32 = 0; i < ${c}; i++) {\n let value = input[offset + i + currentChannelNumber * ${c}];\n sum += value[0];\n squaredSum += value[1];\n }\n sum = sum / f32(uniforms.H);\n squaredSum = squaredSum / f32(uniforms.H);\n let invStdDev = inverseSqrt(squaredSum - sum * sum + f32(${l}));\n let channelScale = invStdDev * ${f}(scale[currentChannelNumber]);\n let channelShift = ${f}(bias[currentChannelNumber]) - sum * channelScale;\n\n output[global_idx] = ${h(\"channelScale\",\"channelShift\")};\n }`};return e.compute({name:\"InstanceNormComputeChannelScaleShift\",shaderCache:{hint:`${i};${l}`,inputDependencies:A},getRunData:()=>({outputs:[{dims:[n,u,2],dataType:1}],dispatchGroup:{x:Math.ceil(b/64)},programUniforms:T}),getShaderSource:z},{inputs:[x,r,a],outputs:[-1]})[0]},Wc=(e,t,r)=>{let a=t[0].dims,n=a,o=a[0],u=a[a.length-1],l=U.sizeFromDimension(a,1)/u,i=qe(u),c=U.size(n)/i,m=[{type:\"uint32\",data:l},{type:\"uint32\",data:Math.floor(u/i)}],f=[\"type\",\"type\"],h=Nc(e,t[0],t[1],t[2],o,l,u,r.epsilon),b=w=>{let _=Fe(t[0].dataType),I=i===1?\"vec2f\":`mat2x${i}f`,$=i===1?_:`vec${i}<${_}>`,x=M(\"input\",t[0].dataType,t[0].dims,i),T=q(\"output\",t[0].dataType,n,i);return`\n @group(0) @binding(0) var input : array<${x.type.storage}>;\n @group(0) @binding(1) var scaleInput : array<${I}>;\n @group(0) @binding(2) var output : array<${T.type.storage}>;\n struct Uniforms {H: u32, C : u32};\n @group(0) @binding(3) var uniforms: Uniforms;\n\n ${w.mainStart()}\n let currentImageNumber = global_idx / (uniforms.C * uniforms.H);\n let currentChannelNumber = global_idx % uniforms.C;\n\n let scaleOffset = currentImageNumber * uniforms.C + currentChannelNumber;\n let scale = scaleInput[scaleOffset];\n output[global_idx] = fma(input[global_idx], ${$}(scale[0]), ${$}(scale[1]));\n }`};e.compute({name:\"InstanceNormalizationNHWC\",shaderCache:{hint:`${i}`,inputDependencies:f},getRunData:()=>({outputs:[{dims:n,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(c/64)},programUniforms:m}),getShaderSource:b},{inputs:[t[0],h]})},ou=(e,t)=>{t.format===\"NHWC\"?Wc(e,e.inputs,t):e.compute(Uc(e.inputs,t))}});var Vc,Hc,uu,lu=F(()=>{\"use strict\";Ue();$e();ve();Vc=e=>{if(!e||e.length<2)throw new Error(\"layerNorm requires at least 2 inputs.\")},Hc=(e,t,r)=>{let a=e[0].dims,n=e[1],o=e[2],u=a,l=U.normalizeAxis(t.axis,a.length),i=U.sizeToDimension(a,l),c=U.sizeFromDimension(a,l),m=U.size(n.dims),f=o?U.size(o.dims):0;if(m!==c||o&&f!==c)throw new Error(`Size of X.shape()[axis:] == ${c}.\n Size of scale and bias (if provided) must match this.\n Got scale size of ${m} and bias size of ${f}`);let h=[];for(let A=0;A1,$=r>2,x=A=>{let z=Fe(e[0].dataType),R=[M(\"x\",e[0].dataType,e[0].dims,b),M(\"scale\",n.dataType,n.dims,b)];o&&R.push(M(\"bias\",o.dataType,o.dims,b)),R.push(q(\"output\",e[0].dataType,u,b)),I&&R.push(q(\"mean_data_output\",1,h)),$&&R.push(q(\"inv_std_output\",1,h));let N=[{name:\"norm_count\",type:\"u32\"},{name:\"norm_size\",type:\"f32\"},{name:\"norm_size_vectorized\",type:\"u32\"},{name:\"epsilon\",type:\"f32\"}];return`\n ${A.registerUniforms(N).declareVariables(...R)}\n ${A.mainStart()}\n ${A.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.norm_count\")}\n let offset = global_idx * uniforms.norm_size_vectorized;\n var meanVector = ${Qe(\"f32\",b)};\n var meanSquareVector = ${Qe(\"f32\",b)};\n\n for (var h: u32 = 0u; h < uniforms.norm_size_vectorized; h++) {\n let value = ${pt(z,b,\"x[h + offset]\")};\n meanVector += value;\n meanSquareVector += value * value;\n }\n let mean = ${rt(\"meanVector\",b)} / uniforms.norm_size;\n let invStdDev =\n inverseSqrt(${rt(\"meanSquareVector\",b)} / uniforms.norm_size - mean * mean + uniforms.epsilon);\n\n for (var j: u32 = 0; j < uniforms.norm_size_vectorized; j++) {\n let f32input = ${pt(z,b,\"x[j + offset]\")};\n let f32scale = ${pt(z,b,\"scale[j]\")};\n output[j + offset] = ${R[0].type.value}((f32input - mean) * invStdDev * f32scale\n ${o?`+ ${pt(z,b,\"bias[j]\")}`:\"\"}\n );\n }\n\n ${I?\"mean_data_output[global_idx] = mean\":\"\"};\n ${$?\"inv_std_output[global_idx] = invStdDev\":\"\"};\n }`},T=[{dims:u,dataType:e[0].dataType}];return I&&T.push({dims:h,dataType:1}),$&&T.push({dims:h,dataType:1}),{name:\"LayerNormalization\",shaderCache:{hint:`${b};${r}`,inputDependencies:w},getRunData:()=>({outputs:T,dispatchGroup:{x:Math.ceil(i/64)},programUniforms:_}),getShaderSource:x}},uu=(e,t)=>{Vc(e.inputs),e.compute(Hc(e.inputs,t,e.outputCount))}});var Lc,cu,du,Gc,Ia,pu,mu=F(()=>{\"use strict\";$e();je();sn();ca();ve();tr();Lc=(e,t)=>{let r=e[0],a=e[1],n=e[2],o=e[3],u=e[4],l=e[5],i=e[6],c=e[7];if(r.dims.length!==3&&r.dims.length!==5)throw new Error(\"Input query is expected to have 3 or 5 dimensions\");let m=!1,f=r.dims[0],h=r.dims[1],b=r.dims.length===3?m?r.dims[2]/3:r.dims[2]:t.numHeads*r.dims[4],w=h,_=0,I=0,$=Math.floor(b/t.numHeads);if(i&&c){if(i.dims.length!==4)throw new Error('Input \"past_key\" is expected to have 4 dimensions');if(c.dims.length!==4)throw new Error('Input \"past_value\" is expected to have 4 dimensions');_=i.dims[2],I=i.dims[2]}else if(i||c)throw new Error('Input \"past_key\" and \"past_value\" shall be both present or both absent');let x;if(a){if(r.dims.length!==3)throw new Error('Input \"query\" is expected to have 3 dimensions when key is given');if(a.dims.length<3||a.dims.length>5)throw new Error('Input \"key\" is expected to have 3, 4, or 5 dimensions');if(r.dims[0]!==a.dims[0])throw new Error('Input \"query\" and \"key\" shall have same dim 0 (batch size)');if(a.dims.length===3){if(a.dims[2]!==r.dims[2])throw new Error('Input \"query\" and \"key\" shall have same dim 2 (hidden_size)');x=2,w=a.dims[1]}else if(a.dims.length===5){if(a.dims[2]!==t.numHeads||a.dims[3]!==2||a.dims[4]!==$)throw new Error('Expect \"key\" shape (batch_size, kv_sequence_length, num_heads, 2, head_size) for packed kv');if(n)throw new Error('Expect \"value\" be none when \"key\" has packed kv format.');x=5,w=a.dims[1]}else{if(a.dims[1]!==t.numHeads||a.dims[3]!==$)throw new Error('Expect \"key\" shape (batch_size, num_heads, kv_sequence_length, head_size) for past_key');x=0,w=a.dims[2]}}else{if(r.dims.length!==3&&r.dims.length!==5)throw new Error('Input \"query\" is expected to have 3 or 5 dimensions when key is empty');if(r.dims.length===5&&(r.dims[2]!==t.numHeads||r.dims[3]!==3))throw new Error('Expect \"query\" shape (batch_size, kv_sequence_length, num_heads, 3, head_size) for packed kv');x=3}if(o){if(o.dims.length!==1)throw new Error('Input \"bias\" is expected to have 1 dimension');if(n&&r.dims.length===5&&r.dims[3]===2)throw new Error(\"bias is not allowed for packed kv.\")}let T=0;if(u){T=8;let E=u.dims;throw E.length===1?E[0]===f?T=1:E[0]===3*f+2&&(T=3):E.length===2&&E[0]===f&&E[1]===w&&(T=5),T===8?new Error('Input \"key_padding_mask\" shape shall be (batch_size) or (batch_size, kv_sequence_length)'):new Error(\"Mask not supported\")}let A=!1,z=b;if(n){if(n.dims.length!==3&&n.dims.length!==4)throw new Error('Input \"value\" is expected to have 3 or 4 dimensions');if(r.dims[0]!==n.dims[0])throw new Error('Input \"query\" and \"value\" shall have same dim 0 (batch_size)');if(n.dims.length===3){if(w!==n.dims[1])throw new Error('Input \"key\" and \"value\" shall have the same dim 1 (kv_sequence_length)');z=n.dims[2]}else{if(w!==n.dims[2])throw new Error('Input \"past_key\" and \"past_value\" shall have the same dim 2 (kv_sequence_length)');z=n.dims[1]*n.dims[3],A=!0}}let R=_+w,N=!1;if(u)throw new Error(\"Key padding mask is not supported\");if(l)throw new Error(\"extraAddQk is not supported\");if(i)throw new Error(\"pastKey is not supported\");if(c)throw new Error(\"pastValue is not supported\");return{batchSize:f,sequenceLength:h,pastSequenceLength:_,kvSequenceLength:w,totalSequenceLength:R,maxSequenceLength:I,inputHiddenSize:0,hiddenSize:b,vHiddenSize:z,headSize:$,vHeadSize:Math.floor(z/t.numHeads),numHeads:t.numHeads,isUnidirectional:!1,pastPresentShareBuffer:!1,maskFilterValue:t.maskFilterValue,maskType:T,scale:t.scale,broadcastResPosBias:N,passPastInKv:A,qkvFormat:x}},cu=e=>ge({...e}),du=ge({perm:[0,2,1,3]}),Gc=(e,t,r,a,n,o,u)=>{let l=[a,n,o],i=U.size(l),c=[{type:\"uint32\",data:i},{type:\"uint32\",data:u},{type:\"uint32\",data:o}],m=f=>{let h=q(\"qkv_with_bias\",t.dataType,l),b=M(\"qkv\",t.dataType,l),w=M(\"bias\",r.dataType,l),_=[{name:\"output_size\",type:\"u32\"},{name:\"bias_offset\",type:\"u32\"},{name:\"hidden_size\",type:\"u32\"}];return`\n ${f.registerUniforms(_).declareVariables(b,w,h)}\n ${f.mainStart()}\n ${f.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n let bias_offset_idx = (global_idx % uniforms.hidden_size) + uniforms.bias_offset;\n\n qkv_with_bias[global_idx] = qkv[global_idx] + bias[bias_offset_idx];\n }`};return e.compute({name:\"MultiHeadAttentionAddBias\",shaderCache:{inputDependencies:[\"type\",\"type\"]},getRunData:()=>({outputs:[{dims:l,dataType:t.dataType,gpuDataType:0}],dispatchGroup:{x:Math.ceil(i/64)},programUniforms:c}),getShaderSource:m},{inputs:[t,r],outputs:[-1]})[0]},Ia=(e,t,r,a,n,o,u,l)=>{let i=o;if(u){if(a===1)throw new Error(\"AddBiasReshape is not implemented. Please export your model with packed QKV or KV\");return i=Gc(e,o,u,t,a,r*n,l),i=i.reshape([t,a,r,n]),e.compute(mt(i,du.perm),{inputs:[i],outputs:[-1]})[0]}else return o.dims.length===3&&(i=o.reshape([t,a,r,n])),e.compute(mt(i,du.perm),{inputs:[i],outputs:[-1]})[0]},pu=(e,t)=>{let r=Lc(e.inputs,t);if(e.inputs[0].dims.length===5)throw new Error(\"Packed QKV is not implemented\");if(e.inputs[1]?.dims.length===5)throw new Error(\"Packed KV is not implemented\");let a=e.inputs[1]&&e.inputs[2]&&e.inputs[1].dims.length===4&&e.inputs[2].dims.length===4,n=Ia(e,r.batchSize,r.numHeads,r.sequenceLength,r.headSize,e.inputs[0],e.inputs[3],0);if(a)return hn(e,n,e.inputs[1],e.inputs[2],e.inputs[4],void 0,void 0,void 0,e.inputs[5],r,t);let o=Ia(e,r.batchSize,r.numHeads,r.kvSequenceLength,r.headSize,e.inputs[1],e.inputs[3],r.hiddenSize),u=Ia(e,r.batchSize,r.numHeads,r.kvSequenceLength,r.vHeadSize,e.inputs[2],e.inputs[3],2*r.hiddenSize);hn(e,n,o,u,e.inputs[4],void 0,e.inputs[6],e.inputs[7],e.inputs[5],r,t)}});var Fc,qc,jc,Kc,Yc,Zc,Xc,Qc,fu,hu=F(()=>{\"use strict\";Ue();$e();ve();Fc=e=>{if(!e||e.length<1)throw new Error(\"Too few inputs\");if(e[0].dataType!==1)throw new Error(\"Input type must be float.\");if(e.length>=2){let t=e[0].dims.length*2===e[1].dims[0];if(e.length===4&&(t=e[3].dims[0]*2===e[1].dims[0]),!t)throw new Error(\"The pads should be a 1D tensor of shape [2 * input_rank] or [2 * num_axes].\")}},qc=(e,t,r)=>{let a=\"\";for(let n=t-1;n>=0;--n)a+=`\n k = i32(${e.indicesGet(\"indices\",n)}) - ${ce(\"uniforms.pads\",n,r)};\n if (k < 0) {\n break;\n }\n if (k >= i32(${ce(\"uniforms.x_shape\",n,t)})) {\n break;\n }\n offset += k * i32(${ce(\"uniforms.x_strides\",n,t)});\n `;return`\n value = ${e.type.value}(uniforms.constant_value);\n for (var i = 0; i < 1; i++) {\n var offset = 0;\n var k = 0;\n ${a}\n value = x[offset];\n }\n `},jc=(e,t,r)=>{let a=\"\";for(let n=t-1;n>=0;--n)a+=`\n k = i32(${e.indicesGet(\"indices\",n)}) - ${ce(\"uniforms.pads\",n,r)};\n if (k < 0) {\n k = -k;\n }\n {\n let _2n_1 = 2 * (i32(${ce(\"uniforms.x_shape\",n,t)}) - 1);\n k = k % _2n_1;\n if(k >= i32(${ce(\"uniforms.x_shape\",n,t)})) {\n k = _2n_1 - k;\n }\n }\n offset += k * i32(${ce(\"uniforms.x_strides\",n,t)});\n `;return`\n var offset = 0;\n var k = 0;\n ${a}\n value = x[offset];\n `},Kc=(e,t,r)=>{let a=\"\";for(let n=t-1;n>=0;--n)a+=`\n k = i32(${e.indicesGet(\"indices\",n)}) - ${ce(\"uniforms.pads\",n,r)};\n if (k < 0) {\n k = 0;\n }\n if (k >= i32(${ce(\"uniforms.x_shape\",n,t)})) {\n k = i32(${ce(\"uniforms.x_shape\",n,t)}) - 1;\n }\n offset += k * i32(${ce(\"uniforms.x_strides\",n,t)});\n `;return`\n var offset = 0;\n var k = 0;\n ${a}\n value = x[offset];\n `},Yc=(e,t,r)=>{let a=\"\";for(let n=t-1;n>=0;--n)a+=`\n k = i32(${e.indicesGet(\"indices\",n)}) - ${ce(\"uniforms.pads\",n,r)};\n if (k < 0) {\n k += i32(${ce(\"uniforms.x_shape\",n,t)}]);\n }\n if (k >= i32(${ce(\"uniforms.x_shape\",n,t)})) {\n k -= i32(${ce(\"uniforms.x_shape\",n,t)});\n }\n offset += k * i32(${ce(\"uniforms.x_strides\",n,t)});\n `;return`\n var offset = 0;\n var k = 0;\n ${a}\n value = x[offset];\n `},Zc=(e,t,r)=>{switch(r.mode){case 0:return qc(e,t,r.pads.length);case 1:return jc(e,t,r.pads.length);case 2:return Kc(e,t,r.pads.length);case 3:return Yc(e,t,r.pads.length);default:throw new Error(\"Invalid mode\")}},Xc=(e,t)=>{let r=U.padShape(e[0].dims.slice(),t.pads),a=e[0].dims,o=[{type:\"uint32\",data:U.size(r)},{type:\"uint32\",data:t.pads}];if(t.mode===0){let i=tt(e[0].dataType);o.push({type:i,data:t.value})}o.push(...G(e[0].dims),...G(r));let u=[\"rank\"],l=i=>{let c=q(\"output\",e[0].dataType,r.length),m=M(\"x\",e[0].dataType,a.length),f=m.type.value,h=Zc(c,a.length,t),b=[{name:\"output_size\",type:\"u32\"},{name:\"pads\",type:\"i32\",length:t.pads.length}];return t.mode===0&&b.push({name:\"constant_value\",type:f}),`\n ${i.registerUniforms(b).declareVariables(m,c)}\n ${i.mainStart()}\n ${i.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n\n let indices = ${c.offsetToIndices(\"global_idx\")};\n\n var value = ${f}(0);\n ${h}\n output[global_idx] = value;\n }`};return{name:\"Pad\",shaderCache:{hint:`${t.mode}`,inputDependencies:u},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(U.size(r)/64)},programUniforms:o}),getShaderSource:l}},Qc=(e,t)=>{if(e.length>1){let r=e[1].getBigInt64Array(),a=e.length>=3&&e[2].data?e[2].getFloat32Array()[0]:0,n=e[0].dims.length,o=new Int32Array(2*n).fill(0);if(e.length>=4){let l=e[3].getBigInt64Array();for(let i=0;io[Number(i)]=Number(l));let u=[];return o.forEach(l=>u.push(l)),{mode:t.mode,value:a,pads:u}}else return t},fu=(e,t)=>{Fc(e.inputs);let r=Qc(e.inputs,t);e.compute(Xc(e.inputs,r),{inputs:[0]})}});var Sn,gu,yu,bu,wu,Jc,ep,vu,$u,_u,xu,Su,Iu,Cu,Au,Eu,Tu,Ou,ku,Pu=F(()=>{\"use strict\";st();$e();ve();Sn=e=>{if(Se.webgpu.validateInputContent&&(!e||e.length!==1))throw new Error(\"Pool ops requires 1 input.\")},gu=(e,t,r)=>{let a=t.format===\"NHWC\",n=e.dims.slice();a&&n.splice(1,0,n.pop());let o=Object.hasOwnProperty.call(t,\"dilations\"),u=t.kernelShape.slice(),l=t.strides.slice(),i=o?t.dilations.slice():[],c=t.pads.slice();Vt.adjustPoolAttributes(r,n,u,l,i,c);let m=Vt.computePoolOutputShape(r,n,l,i,u,c,t.autoPad),f=Object.assign({},t);o?Object.assign(f,{kernelShape:u,strides:l,pads:c,dilations:i,cacheKey:t.cacheKey}):Object.assign(f,{kernelShape:u,strides:l,pads:c,cacheKey:t.cacheKey});let h=m.slice();return h.push(h.splice(1,1)[0]),[f,a?h:m]},yu=(e,t)=>{let r=t.format===\"NHWC\",a=U.size(e),n=U.size(t.kernelShape),o=[{type:\"uint32\",data:a},{type:\"uint32\",data:n}],u=[{name:\"outputSize\",type:\"u32\"},{name:\"kernelSize\",type:\"u32\"}];if(t.kernelShape.length<=2){let l=t.kernelShape[t.kernelShape.length-1],i=t.strides[t.strides.length-1],c=t.pads[t.pads.length/2-1],m=t.pads[t.pads.length-1],f=!!(c+m);o.push({type:\"uint32\",data:l},{type:\"uint32\",data:i},{type:\"uint32\",data:c},{type:\"uint32\",data:m}),u.push({name:\"kw\",type:\"u32\"},{name:\"sw\",type:\"u32\"},{name:\"pwStart\",type:\"u32\"},{name:\"pwEnd\",type:\"u32\"});let h=!1;if(t.kernelShape.length===2){let b=t.kernelShape[t.kernelShape.length-2],w=t.strides[t.strides.length-2],_=t.pads[t.pads.length/2-2],I=t.pads[t.pads.length-2];h=!!(_+I),o.push({type:\"uint32\",data:b},{type:\"uint32\",data:w},{type:\"uint32\",data:_},{type:\"uint32\",data:I}),u.push({name:\"kh\",type:\"u32\"},{name:\"sh\",type:\"u32\"},{name:\"phStart\",type:\"u32\"},{name:\"phEnd\",type:\"u32\"})}return[o,u,!0,f,h]}else{if(r)throw new Error(\"Pooling with kernelShape.length > 2 is not supported for NHWC format.\");let l=U.computeStrides(t.kernelShape);o.push({type:\"uint32\",data:l},{type:\"uint32\",data:t.pads},{type:\"uint32\",data:t.strides}),u.push({name:\"kernelStrides\",type:\"u32\",length:l.length},{name:\"pads\",type:\"u32\",length:t.pads.length},{name:\"strides\",type:\"u32\",length:t.strides.length});let i=t.pads.reduce((c,m)=>c+m);return[o,u,!!i,!1,!1]}},bu=(e,t,r,a,n,o,u,l,i,c,m,f)=>{let h=n.format===\"NHWC\",b=t.type.value,w=q(\"output\",t.type.tensor,a);if(n.kernelShape.length<=2){let _=\"\",I=\"\",$=\"\",x=r-(h?2:1);if(m?_=`\n for (var i: u32 = 0u; i < uniforms.kw; i++) {\n xIndices[${x}] = indices[${x}] * uniforms.sw - uniforms.pwStart + i;\n if (xIndices[${x}] < 0 || xIndices[${x}]\n >= uniforms.x_shape[${x}]) {\n pad++;\n continue;\n }\n let x_val = x[${t.indicesToOffset(\"xIndices\")}];\n ${o}\n }`:_=`\n for (var i: u32 = 0u; i < uniforms.kw; i++) {\n xIndices[${x}] = indices[${x}] * uniforms.sw - uniforms.pwStart + i;\n let x_val = x[${t.indicesToOffset(\"xIndices\")}];\n ${o}\n }`,n.kernelShape.length===2){let A=r-(h?3:2);f?I=`\n for (var j: u32 = 0u; j < uniforms.kh; j++) {\n xIndices[${A}] = indices[${A}] * uniforms.sh - uniforms.phStart + j;\n if (xIndices[${A}] < 0 || xIndices[${A}] >= uniforms.x_shape[${A}]) {\n pad += i32(uniforms.kw);\n continue;\n }\n `:I=`\n for (var j: u32 = 0u; j < uniforms.kh; j++) {\n xIndices[${A}] = indices[${A}] * uniforms.sh - uniforms.phStart + j;\n `,$=`\n }\n `}return`\n ${e.registerUniforms(i).declareVariables(t,w)}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\n\n let indices = ${w.offsetToIndices(\"global_idx\")};\n var xIndices = ${w.offsetToIndices(\"global_idx\")};\n\n var value = ${b}(${l});\n var pad = 0;\n ${I}\n ${_}\n ${$}\n ${u}\n\n output[global_idx] = value;\n }`}else{if(h)throw new Error(\"Pooling with kernelShape.length > 2 is not supported for NHWC format.\");let _=n.kernelShape.length,I=n.pads.length,$=\"\";return c?$=`\n if (xIndices[j] >= uniforms.x_shape[j]) {\n pad++;\n isPad = true;\n break;\n }\n }\n if (!isPad) {\n let x_val = x[${t.indicesToOffset(\"xIndices\")}];\n ${o}\n }`:$=`\n }\n let x_val = x[${t.indicesToOffset(\"xIndices\")}];\n ${o}\n `,`\n ${e.registerUniforms(i).declareVariables(t,w)}\n\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\n let indices = ${w.offsetToIndices(\"global_idx\")};\n var xIndices = ${w.offsetToIndices(\"global_idx\")};\n\n var offsets: array;\n\n var value = ${b}(${l});\n var pad = 0;\n var isPad = false;\n\n for (var i: u32 = 0u; i < uniforms.kernelSize; i++) {\n var offset = i;\n for (var j = 0u; j < ${_-1}u; j++) {\n offsets[j] = offset / ${ce(\"uniforms.kernelStrides\",\"j\",_)};\n offset -= offsets[j] * ${ce(\"uniforms.kernelStrides\",\"j\",_)};\n }\n offsets[${_-1}] = offset;\n\n isPad = false;\n for (var j = ${r-_}u; j < ${r}u; j++) {\n xIndices[j] = indices[j] * ${ce(\"uniforms.strides\",`j - ${r-_}u`,_)}\n + offsets[j - ${r-_}u] - ${ce(\"uniforms.pads\",\"j - 2u\",I)};\n ${$}\n }\n ${u}\n\n output[global_idx] = value;\n }`}},wu=e=>`${e.format};${e.ceilMode};${e.autoPad};${e.kernelShape.length}`,Jc=e=>`${wu(e)};${e.countIncludePad}`,ep=e=>`${wu(e)};${e.storageOrder};${e.dilations}`,vu=e=>({format:e.format,autoPad:[\"NOTSET\",\"VALID\",\"SAME_UPPER\",\"SAME_LOWER\"][e.auto_pad],ceilMode:e.ceil_mode,kernelShape:e.kernel_shape,strides:e.strides,pads:e.pads}),$u=(e,t,r,a)=>{let[n,o]=gu(t,a,r),u=M(\"x\",t.dataType,t.dims.length),l=u.type.value,i=\"value += x_val;\",c=\"\";n.countIncludePad?c+=`value /= ${l}(uniforms.kernelSize);`:c+=`value /= ${l}(i32(uniforms.kernelSize) - pad);`;let[m,f,h,b,w]=yu(o,n);m.push(...G(t.dims),...G(o));let _=[\"rank\"];return{name:e,shaderCache:{hint:`${a.cacheKey};${h};${b};${w}`,inputDependencies:_},getRunData:()=>({outputs:[{dims:o,dataType:t.dataType}],dispatchGroup:{x:Math.ceil(U.size(o)/64)},programUniforms:m}),getShaderSource:I=>bu(I,u,t.dims.length,o.length,n,i,c,0,f,h,b,w)}},_u=e=>{let t=e.count_include_pad!==0,r=vu(e);if(r.ceilMode!==0)throw new Error(\"using ceil() in shape computation is not yet supported for AveragePool\");let a={countIncludePad:t,...r,cacheKey:\"\"};return{...a,cacheKey:Jc(a)}},xu=(e,t)=>{Sn(e.inputs),e.compute($u(\"AveragePool\",e.inputs[0],!1,t))},Su={autoPad:\"\",ceilMode:0,countIncludePad:!1,kernelShape:[],strides:[],pads:[],storageOrder:0,dilations:[]},Iu=e=>{let t=e.format;return{format:t,...Su,cacheKey:t}},Cu=(e,t)=>{Sn(e.inputs),e.compute($u(\"GlobalAveragePool\",e.inputs[0],!0,t))},Au=(e,t,r,a)=>{let[n,o]=gu(t,a,r),u=`\n value = max(x_val, value);\n `,l=\"\",i=M(\"x\",t.dataType,t.dims.length),c=[\"rank\"],[m,f,h,b,w]=yu(o,n);return m.push(...G(t.dims),...G(o)),{name:e,shaderCache:{hint:`${a.cacheKey};${h};${b};${w}`,inputDependencies:c},getRunData:()=>({outputs:[{dims:o,dataType:t.dataType}],dispatchGroup:{x:Math.ceil(U.size(o)/64)},programUniforms:m}),getShaderSource:_=>bu(_,i,t.dims.length,o.length,n,u,l,-1e5,f,h,b,w)}},Eu=(e,t)=>{Sn(e.inputs),e.compute(Au(\"MaxPool\",e.inputs[0],!1,t))},Tu=e=>{let t=e.storage_order,r=e.dilations,a=vu(e);if(t!==0)throw new Error(\"column major storage order is not yet supported for MaxPool\");if(a.ceilMode!==0)throw new Error(\"using ceil() in shape computation is not yet supported for MaxPool\");let n={storageOrder:t,dilations:r,...a,cacheKey:\"\"};return{...n,cacheKey:ep(n)}},Ou=e=>{let t=e.format;return{format:t,...Su,cacheKey:t}},ku=(e,t)=>{Sn(e.inputs),e.compute(Au(\"GlobalMaxPool\",e.inputs[0],!0,t))}});var rp,np,Ru,Bu=F(()=>{\"use strict\";st();Ue();ve();rp=(e,t,r)=>{let a=e===t,n=et&&r>0;if(a||n||o)throw new Error(\"Range these inputs' contents are invalid.\")},np=(e,t,r,a)=>{let n=Math.abs(Math.ceil((t-e)/r)),o=[n],u=n,l=tt(a),i=[{type:\"uint32\",data:u},{type:l,data:e},{type:l,data:r},...G(o)],c=m=>{let f=q(\"output\",a,o.length),h=f.type.value,b=[{name:\"outputSize\",type:\"u32\"},{name:\"start\",type:h},{name:\"delta\",type:h}];return`\n ${m.registerUniforms(b).declareVariables(f)}\n ${m.mainStart()}\n ${m.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\n output[global_idx] = uniforms.start + ${h}(global_idx) * uniforms.delta;\n }`};return{name:\"Range\",shaderCache:{hint:`${a}`},getShaderSource:c,getRunData:()=>({outputs:[{dims:o,dataType:a}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:i})}},Ru=e=>{let t=0,r=0,a=0;e.inputs[0].dataType===6?(t=e.inputs[0].getInt32Array()[0],r=e.inputs[1].getInt32Array()[0],a=e.inputs[2].getInt32Array()[0]):e.inputs[0].dataType===1&&(t=e.inputs[0].getFloat32Array()[0],r=e.inputs[1].getFloat32Array()[0],a=e.inputs[2].getFloat32Array()[0]),Se.webgpu.validateInputContent&&rp(t,r,a),e.compute(np(t,r,a,e.inputs[0].dataType),{inputs:[]})}});var ap,ip,op,sp,up,lp,dp,cp,pp,mp,fp,Du,hp,gp,yp,bp,wp,zu,Mu,Uu=F(()=>{\"use strict\";$e();je();ve();ap=(e,t)=>{if(e.every(r=>r>0||(()=>{throw new Error(\"Resize requires scales input values to be positive\")})),e.length>0){if(t.mode===\"linear\"){if(!(e.length===2||e.length===3||e.length===4&&e[0]===1&&e[1]===1||e.length===4&&e[0]===1&&e[3]===1||e.length===5&&e[0]===1&&e[1]===1))throw new Error(`For linear mode, Resize requires scales to be 2D, 3D, 4D with either two outermost or one innermost and\n one outermost scale values equal to 1, or 5D with two outermost scale values equal to 1`)}else if(t.mode===\"cubic\"&&!(e.length===2||e.length===4&&e[0]===1&&e[1]===1||e.length===4&&e[0]===1&&e[3]===1))throw new Error(\"Resize requires scales input size to be 2 or 4 for cubic mode\")}},ip=(e,t,r)=>{t.every(n=>n>=0&&n{throw new Error(\"Resize requires axes input values to be positive and less than rank\")}));let a=new Array(r).fill(1);return t.forEach((n,o)=>a[n]=e[o]),a},op=(e,t,r,a,n,o)=>{let[u,l,i]=r>10?[1,2,3]:[-1,e.length>1?1:-1,-1],c=e[0].dims.length;if(u>0&&e.length>u&&e[u].dims.length>0)e[u].getFloat32Array().forEach(m=>o.push(m));else if(t.coordinateTransformMode===\"tf_crop_and_resize\")throw new Error(\"Resize requires RoI input to be specified when coordinateTransformMode is tfCropAndResize\");if(l>0&&e.length>l&&e[l].dims.length>0){if(e[l].getFloat32Array().forEach(m=>a.push(m)),a.length!==0&&a.length!==c&&r>=18&&a.length!==t.axes.length)throw new Error(\"Resize requires scales input size to be same as input rank or axes size for opset 18 and up\");ap(a,t),t.axes.length>0&&ip(a,t.axes,c).forEach((m,f)=>a[f]=m)}if(i>0&&e.length>i&&(e[i].getBigInt64Array().forEach(m=>n.push(Number(m))),n.length!==c||r>=18&&n.length===t.axes.length))throw new Error(\"Resize requires sizes input size to be same as input rank or axes size for opset 18 and up\");if(t.axes.length>0){if(a.length!==t.axes.length)throw new Error('Resize requires \"scales\" input size to be of axes rank when axes attributes is specified');if(n.length!==t.axes.length)throw new Error('Resize requires \"sizes\" input size to be of rank axes rank when axes attributes is specified')}if(typeof a<\"u\"&&typeof n<\"u\"&&a.length>0&&n.length>c)throw new Error(\"Resize requires only of scales or sizes to be specified\")},sp=(e,t)=>`fn getOriginalCoordinateFromResizedCoordinate(xResized: u32, xScale: f32, lengthResized: u32,\n lengthOriginal: u32, roiStart: f32, roiEnd: f32) -> ${t} { `+(()=>{switch(e){case\"asymmetric\":return`return ${t}(xResized) / ${t}(xScale);`;case\"pytorch_half_pixel\":return`if (lengthResized > 1) {\n return (${t}(xResized) + 0.5) / ${t}(xScale) - 0.5;\n } else {\n return 0.0;\n }`;case\"tf_half_pixel_for_nn\":return`return (${t}(xResized) + 0.5) / ${t}(xScale);`;case\"align_corners\":return`if (lengthResized == 1) {\n return 0.0;\n } else {\n // The whole part and the fractional part are calculated separately due to inaccuracy of floating\n // point division. As an example, f32(21) / f32(7) may evaluate to 2.99... instead of 3, causing an\n // offset-by-one error later in floor().\n let whole = ${t}(xResized * (lengthOriginal - 1) / (lengthResized - 1));\n let fract =\n ${t}(xResized * (lengthOriginal - 1) % (lengthResized - 1)) / ${t}(lengthResized - 1);\n return whole + fract;\n }`;case\"tf_crop_and_resize\":return`if (lengthResized > 1) {\n return ${t}(roiStart) * ${t}(lengthOriginal - 1) +\n (${t}(xResized) * ${t}(roiEnd - roiStart) * ${t}(lengthOriginal - 1)) /\n ${t}(lengthResized - 1);\n } else {\n return 0.5 * ${t}(roiStart + roiEnd) * ${t}(lengthOriginal - 1);\n }`;case\"half_pixel_symmetric\":return`const outputWidth = ${t}xScale * ${t}(lengthResized);\n const adjustment = ${t}(lengthResized) / outputWidth;\n const center = ${t}(lengthOriginal) / 2;\n const offset = center * (1 - adjustment);\n return offset + ((${t}(xResized) + 0.5) / ${t}(xScale)) - 0.5;`;case\"half_pixel\":return`return ((${t}(xResized) + 0.5) / ${t}(xScale)) - 0.5;`;default:throw new Error(`Coordinate transform mode ${e} is not supported`)}})()+\"}\",up=(e,t,r)=>`fn getNearestPixelFromOriginal(xOriginal: ${r}, isDownSample: bool) -> ${r} {`+(()=>{switch(e){case\"round_prefer_ceil\":return\"if (fract(xOriginal) == 0.5) { return ceil(xOriginal); } else { return round(xOriginal); }\";case\"floor\":return\"return floor(xOriginal);\";case\"ceil\":return\"return ceil(xOriginal);\";case\"round_prefer_floor\":return\"if (fract(xOriginal) == 0.5) { return floor(xOriginal); } else { return round(xOriginal); }\";case\"simple\":default:if(t<11)return\"if (isDownSample) { return ceil(xOriginal); } else { return xOriginal; }\";throw new Error(`Nearest mode ${e} is not supported`)}})()+\"}\",lp=(e,t,r)=>{let a=new Array(r).fill(0).concat(new Array(r).fill(1)),n=e.length===0?a:e.slice();return t.length>0?(t.forEach((o,u)=>{a[o]=n[u],a[u+r]=n[t.length+u]}),a):n},dp=(e,t,r,a)=>{let n=[];if(r.length>0)if(a.length>0){if(e.forEach(o=>n.push(o)),Math.max(...a)>e.length)throw new Error(\"axes is out of bound\");a.forEach((o,u)=>n[o]=r[u])}else r.forEach(o=>n.push(o));else{if(t.length===0)throw new Error(\"Resize requires either scales or sizes.\");n=e.map((o,u)=>Math.round(o*t[u]))}return n},cp=(e,t,r)=>{let a=(()=>{switch(r.keepAspectRatioPolicy){case\"not_larger\":return r.axes.length>0?Math.min(...r.axes.map(o=>t[o]),Number.MAX_VALUE):Math.min(...t,Number.MAX_VALUE);case\"not_smaller\":return r.axes.length>0?Math.max(...r.axes.map(o=>t[o]),Number.MIN_VALUE):Math.max(...t,Number.MIN_VALUE);default:throw new Error(`Keep aspect ratio policy ${r.keepAspectRatioPolicy} is not supported`)}})();t.fill(1,0,t.length);let n=e.slice();return r.axes.length>0?(r.axes.forEach(o=>t[o]=a),r.axes.forEach(o=>n[o]=Math.round(e[o]*t[o]))):(t.fill(a,0,t.length),n.forEach((o,u)=>n[u]=Math.round(o*t[u]))),n},pp=(e,t,r,a,n)=>`\n fn calculateOriginalIndicesFromOutputIndices(output_indices: ${e.type.indices}) -> array<${e.type.value}, ${r.length}> {\n var original_indices: array<${e.type.value}, ${r.length}>;\n for (var i:u32 = 0; i < ${r.length}; i++) {\n var output_index = ${e.indicesGet(\"output_indices\",\"i\")};\n var scale = ${ce(\"uniforms.scales\",\"i\",a)};\n var roi_low = ${ce(\"uniforms.roi\",\"i\",n)};\n var roi_hi = ${ce(\"uniforms.roi\",`i + ${t.length}`,n)};\n if (scale == 1.0) {\n original_indices[i] = ${e.type.value}(output_index);\n } else {\n var input_shape_i = ${ce(\"uniforms.input_shape\",\"i\",t.length)};\n var output_shape_i = ${ce(\"uniforms.output_shape\",\"i\",r.length)};\n original_indices[i] = getOriginalCoordinateFromResizedCoordinate(output_index, scale, output_shape_i,\n input_shape_i, roi_low, roi_hi);\n }\n }\n return original_indices;\n }`,mp=(e,t,r,a,n,o,u)=>`\n fn calculateInputIndicesFromOutputIndices(output_indices: ${t.type.indices}) -> ${e.type.indices} {\n var input_indices: ${e.type.indices};\n for (var i:u32 = 0; i < ${a.length}; i++) {\n var output_index = ${t.indicesGet(\"output_indices\",\"i\")};\n var input_index: u32;\n var scale = ${ce(\"uniforms.scales\",\"i\",n)};\n if (scale == 1.0) {\n input_index = output_index;\n } else {\n var roi_low = ${ce(\"uniforms.roi\",\"i\",o)};\n var roi_hi = ${ce(\"uniforms.roi\",`i + ${r.length}`,o)};\n var input_shape_i = ${ce(\"uniforms.input_shape\",\"i\",r.length)};\n var output_shape_i = ${ce(\"uniforms.output_shape\",\"i\",a.length)};\n var original_idx = getOriginalCoordinateFromResizedCoordinate(output_index, scale, output_shape_i,\n input_shape_i, roi_low, roi_hi);\n if (!${u} || (original_idx >= 0 && original_idx < ${t.type.value}(input_shape_i))) {\n if (original_idx < 0) {\n input_index = 0;\n } else if (original_idx > ${t.type.value}(input_shape_i - 1)) {\n input_index = input_shape_i - 1;\n } else {\n input_index = u32(getNearestPixelFromOriginal(original_idx, scale < 1));\n }\n } else {\n input_index = u32(original_idx);\n }\n }\n ${e.indicesSet(\"input_indices\",\"i\",\" input_index\")}\n }\n return input_indices;\n }`,fp=(e,t)=>`\n fn checkInputIndices(input_indices: ${e.type.indices}) -> bool {\n for (var i:u32 = 0; i < ${t.length}; i++) {\n var input_index = ${e.indicesGet(\"input_indices\",\"i\")};\n if (input_index < 0 || input_index >= ${ce(\"uniforms.input_shape\",\"i\",t.length)}) {\n return false;\n }\n }\n return true;\n }`,Du=(e,t,r,a)=>e.rank>a?`\n ${e.indicesSet(\"input_indices\",t,\"channel\")};\n ${e.indicesSet(\"input_indices\",r,\"batch\")};\n`:\"\",hp=(e,t,r,a,n)=>{let[u,l,i,c]=r.length===2?[-1,0,1,-1]:[0,2,3,1],m=e.type.value;return`\n fn getInputValue(batch: u32, channel: u32, row: u32, col: u32) -> ${m} {\n var input_indices: ${e.type.indices};\n ${e.indicesSet(\"input_indices\",l,`max(0, min(row, ${r[l]} - 1))`)};\n ${e.indicesSet(\"input_indices\",i,`max(0, min(col, ${r[i]} - 1))`)};\n ${Du(e,c,u,2)}\n return ${e.getByIndices(\"input_indices\")};\n }\n\n fn bilinearInterpolation(output_indices: ${t.type.indices}) -> ${m} {\n var originalIndices = calculateOriginalIndicesFromOutputIndices(output_indices);\n var row:${m} = originalIndices[${l}];\n var col:${m} = originalIndices[${i}];\n ${a?`if (row < 0 || row > (${r[l]} - 1) || col < 0 || col > (${r[i]} - 1)) {\n return ${n};\n }`:\"\"};\n row = max(0, min(row, ${r[l]} - 1));\n col = max(0, min(col, ${r[i]} - 1));\n var row1: u32 = u32(row);\n var col1: u32 = u32(col);\n var row2: u32 = u32(row + 1);\n var col2: u32 = u32(col + 1);\n var channel: u32 = ${r.length>2?`u32(originalIndices[${c}])`:\"0\"};\n var batch: u32 = ${r.length>2?`u32(originalIndices[${u}])`:\"0\"};\n var x11: ${m} = getInputValue(batch, channel, row1, col1);\n var x12: ${m} = getInputValue(batch, channel, row1, col2);\n var x21: ${m} = getInputValue(batch, channel, row2, col1);\n var x22: ${m} = getInputValue(batch, channel, row2, col2);\n var dx1: ${m} = abs(row - ${m}(row1));\n var dx2: ${m} = abs(${m}(row2) - row);\n var dy1: ${m} = abs(col - ${m}(col1));\n var dy2: ${m} = abs(${m}(col2) - col);\n if (row1 == row2) {\n dx1 = 0.5;\n dx2 = 0.5;\n }\n if (col1 == col2) {\n dy1 = 0.5;\n dy2 = 0.5;\n }\n return (x11 * dx2 * dy2 + x12 * dx2 * dy1 + x21 * dx1 * dy2 + x22 * dx1 * dy1);\n }`},gp=(e,t,r,a,n,o,u,l,i,c)=>{let m=r.length===2,f=!0,[h,b]=m?[0,1]:f?[2,3]:[1,2],w=e.type.value,_=I=>{let $=I===h?\"row\":\"col\";return`\n fn ${$}CubicInterpolation(input_indices: ${e.type.indices}, output_indices: ${t.type.indices}) -> ${w} {\n var output_index = ${t.indicesGet(\"output_indices\",I)};\n var originalIdx: ${w} = getOriginalCoordinateFromResizedCoordinate(output_index, ${n[I]},\n ${a[I]}, ${r[I]}, ${o[I]}, ${o[I]} + ${r.length});\n var fractOriginalIdx: ${w} = originalIdx - floor(originalIdx);\n var coefs = getCubicInterpolationCoefs(fractOriginalIdx);\n\n if (${l} && (originalIdx < 0 || originalIdx > (${r[I]} - 1))) {\n return ${i};\n }\n var data: array<${w}, 4> = array<${w}, 4>(0.0, 0.0, 0.0, 0.0);\n for (var i: i32 = -1; i < 3; i++) {\n var ${$}: ${w} = originalIdx + ${w}(i);\n if (${$} < 0 || ${$} >= ${r[I]}) {\n ${(()=>c?`coefs[i + 1] = 0.0;\n continue;`:l?`return ${i};`:`${$} = max(0, min(${$}, ${r[I]} - 1));`)()};\n }\n var input_indices_copy: ${e.type.indices} = input_indices;\n ${e.indicesSet(\"input_indices_copy\",I,`u32(${$})`)};\n data[i + 1] = ${I===h?e.getByIndices(\"input_indices_copy\"):\"rowCubicInterpolation(input_indices_copy, output_indices)\"};\n }\n return cubicInterpolation1D(data, coefs);\n }`};return`\n ${_(h)};\n ${_(b)};\n fn getCubicInterpolationCoefs(s: ${w}) -> array<${w}, 4> {\n var absS = abs(s);\n var coeffs: array<${w}, 4> = array<${w}, 4>(0.0, 0.0, 0.0, 0.0);\n var oneMinusAbsS: ${w} = 1.0 - absS;\n var twoMinusAbsS: ${w} = 2.0 - absS;\n var onePlusAbsS: ${w} = 1.0 + absS;\n coeffs[0] = ((${u} * onePlusAbsS - 5 * ${u}) * onePlusAbsS + 8 * ${u}) * onePlusAbsS - 4 * ${u};\n coeffs[1] = ((${u} + 2) * absS - (${u} + 3)) * absS * absS + 1;\n coeffs[2] = ((${u} + 2) * oneMinusAbsS - (${u} + 3)) * oneMinusAbsS * oneMinusAbsS + 1;\n coeffs[3] = ((${u} * twoMinusAbsS - 5 * ${u}) * twoMinusAbsS + 8 * ${u}) * twoMinusAbsS - 4 * ${u};\n return coeffs;\n }\n\n fn cubicInterpolation1D(x: array<${w}, 4>, coefs: array<${w}, 4>) -> ${w} {\n var coefsSum: ${w} = coefs[0] + coefs[1] + coefs[2] + coefs[3];\n return (x[0] * coefs[0] + x[1] * coefs[1]+ x[2] * coefs[2]+ x[3] * coefs[3]) / coefsSum;\n }\n\n fn bicubicInterpolation(output_indices: ${t.type.indices}) -> ${w} {\n var input_indices: ${e.type.indices} = output_indices;\n return colCubicInterpolation(input_indices, output_indices);\n }\n `},yp=(e,t,r,a,n)=>{let[u,l,i,c,m]=r.length===3?[-1,0,1,2,-1]:[0,2,3,4,1],f=e.type.value;return`\n fn getInputValue(batch: u32, channel: u32, depth:u32, height: u32, width: u32) -> ${f} {\n var input_indices: ${e.type.indices};\n ${e.indicesSet(\"input_indices\",l,`max(0, min(depth, ${r[l]} - 1))`)};\n ${e.indicesSet(\"input_indices\",i,`max(0, min(height, ${r[i]} - 1))`)};\n ${e.indicesSet(\"input_indices\",c,`max(0, min(width, ${r[c]} - 1))`)};\n ${Du(e,m,u,3)}\n return ${e.getByIndices(\"input_indices\")};\n }\n\n fn trilinearInterpolation(output_indices: ${t.type.indices}) -> ${f} {\n var originalIndices = calculateOriginalIndicesFromOutputIndices(output_indices);\n var depth:${f} = originalIndices[${l}];\n var height:${f} = originalIndices[${i}];\n var width:${f} = originalIndices[${c}];\n ${a?`if (depth < 0 || depth > (${r[l]} - 1) || height < 0 || height > (${r[i]} - 1) || width < 0 || (width > ${r[c]} - 1)) {\n return ${n};\n }`:\"\"};\n\n depth = max(0, min(depth, ${r[l]} - 1));\n height = max(0, min(height, ${r[i]} - 1));\n width = max(0, min(width, ${r[c]} - 1));\n var depth1: u32 = u32(depth);\n var height1: u32 = u32(height);\n var width1: u32 = u32(width);\n var depth2: u32 = u32(depth + 1);\n var height2: u32 = u32(height + 1);\n var width2: u32 = u32(width + 1);\n var channel: u32 = ${r.length>3?`u32(originalIndices[${m}])`:\"0\"};\n var batch: u32 = ${r.length>3?`u32(originalIndices[${u}])`:\"0\"};\n\n var x111: ${f} = getInputValue(batch, channel, depth1, height1, width1);\n var x112: ${f} = getInputValue(batch, channel, depth1, height1, width2);\n var x121: ${f} = getInputValue(batch, channel, depth1, height2, width1);\n var x122: ${f} = getInputValue(batch, channel, depth1, height2, width2);\n var x211: ${f} = getInputValue(batch, channel, depth2, height1, width1);\n var x212: ${f} = getInputValue(batch, channel, depth2, height1, width2);\n var x221: ${f} = getInputValue(batch, channel, depth2, height2, width1);\n var x222: ${f} = getInputValue(batch, channel, depth2, height2, width2);\n var dx1: ${f} = abs(depth - ${f}(depth1));\n var dx2: ${f} = abs(${f}(depth2) - depth);\n var dy1: ${f} = abs(height - ${f}(height1));\n var dy2: ${f} = abs(${f}(height2) - height);\n var dz1: ${f} = abs(width - ${f}(width1));\n var dz2: ${f} = abs(${f}(width2) - width);\n if (depth1 == depth2) {\n dx1 = 0.5;\n dx2 = 0.5;\n }\n if (height1 == height2) {\n dy1 = 0.5;\n dy2 = 0.5;\n }\n if (width1 == width2) {\n dz1 = 0.5;\n dz2 = 0.5;\n }\n return (x111 * dx2 * dy2 * dz2 + x112 * dx2 * dy2 * dz1 + x121 * dx2 * dy1 *dz2 + x122 * dx2 * dy1 * dz1 +\n x211 * dx1 * dy2 * dz2 + x212 * dx1 * dy2 * dz1 + x221 * dx1 * dy1 *dz2 + x222 * dx1 * dy1 * dz1);\n }`},bp=(e,t,r,a,n,o)=>{let u=e.dims,l=lp(o,t.axes,u.length),i=dp(u,a,n,t.axes),c=a.slice();a.length===0&&(c=u.map((x,T)=>x===0?1:i[T]/x),t.keepAspectRatioPolicy!==\"stretch\"&&(i=cp(u,c,t)));let m=q(\"output\",e.dataType,i.length),f=M(\"input\",e.dataType,u.length),h=U.size(i),b=u.length===i.length&&u.every((x,T)=>x===i[T]),w=t.coordinateTransformMode===\"tf_crop_and_resize\",_=t.extrapolationValue,I=f.type.value,$=x=>`\n ${b?\"\":`\n ${sp(t.coordinateTransformMode,I)};\n ${(()=>{switch(t.mode){case\"nearest\":return`\n ${fp(f,u)};\n ${up(t.nearestMode,r,I)};\n ${mp(f,m,u,i,c.length,l.length,w)};\n `;case\"linear\":return`\n ${pp(m,u,i,c.length,l.length)};\n ${(()=>{if(u.length===2||u.length===4)return`${hp(f,m,u,w,_)}`;if(u.length===3||u.length===5)return`${yp(f,m,u,w,_)}`;throw Error(\"Linear mode only supports input dims 2, 3, 4 and 5 are supported in linear mode.\")})()};\n `;case\"cubic\":return`\n ${(()=>{if(u.length===2||u.length===4)return`${gp(f,m,u,i,c,l,t.cubicCoeffA,w,t.extrapolationValue,t.excludeOutside)}`;throw Error(\"Cubic mode only supports input dims 2 and 4 are supported in linear mode.\")})()};\n `;default:throw Error(\"Invalid resize mode\")}})()};\n `}\n ${x.registerUniform(\"output_size\",\"u32\").registerUniform(\"scales\",\"f32\",c.length).registerUniform(\"roi\",\"f32\",l.length).declareVariables(f,m)}\n ${x.mainStart()}\n ${x.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n ${b?\"output[global_idx] = input[global_idx];\":`\n let output_indices = ${m.offsetToIndices(\"global_idx\")};\n var input_indices: ${f.type.indices};\n ${(()=>{switch(t.mode){case\"nearest\":return`input_indices = calculateInputIndicesFromOutputIndices(output_indices);\n if (checkInputIndices(input_indices)) {\n output[global_idx] = ${f.getByIndices(\"input_indices\")};\n } else {\n output[global_idx] = ${t.extrapolationValue};\n }`;case\"linear\":return`output[global_idx] = ${u.length===2||u.length===4?\"bilinearInterpolation\":\"trilinearInterpolation\"}(output_indices);`;case\"cubic\":return\"output[global_idx] = bicubicInterpolation(output_indices);\";default:throw Error(`Unsupported resize mode: ${t.mode}`)}})()};\n`}\n }`;return{name:\"Resize\",shaderCache:{hint:`${t.cacheKey}|${r}|${c.length>0?c:\"\"}|${n.length>0?n:\"\"}|${l.length>0?l:\"\"}|${b}|${u}`,inputDependencies:[\"rank\"]},getShaderSource:$,getRunData:()=>({outputs:[{dims:i,dataType:e.dataType}],dispatchGroup:{x:Math.ceil(h/64)},programUniforms:[{type:\"uint32\",data:h},{type:\"float32\",data:c},{type:\"float32\",data:l},...G(u),...G(i)]})}},wp=e=>{let t=e.customDataBuffer;return new Uint32Array(t,t.byteOffset,1)[0]},zu=(e,t)=>{let r=[],a=[],n=[],o=wp(e);if(t.antialias!==0)throw Error(\"Only default value (0) for Antialias attribute is supported\");op(e.inputs,t,o,r,a,n),e.compute(bp(e.inputs[0],t,o,r,a,n),{inputs:[0]})},Mu=e=>{let t=e.antialias,r=e.axes,a=e.coordinateTransformMode,n=e.cubicCoeffA,o=e.excludeOutside!==0,u=e.extrapolationValue,l=e.keepAspectRatioPolicy,i=e.mode,c=e.nearestMode===\"\"?\"simple\":e.nearestMode;return ge({antialias:t,axes:r,coordinateTransformMode:a,cubicCoeffA:n,excludeOutside:o,extrapolationValue:u,keepAspectRatioPolicy:l,mode:i,nearestMode:c})}});var vp,$p,Nu,Wu,Vu=F(()=>{\"use strict\";Ue();$e();je();ve();vp=e=>{if(!e||e.length<3)throw new Error(\"layerNorm requires at least 3 inputs.\");let t=e[0],r=e[1],a=e[2];if(t.dataType!==r.dataType||t.dataType!==a.dataType)throw new Error(\"All inputs must have the same data type\");if(t.dims.length!==3&&t.dims.length!==2)throw new Error(\"Input must be 2D or 3D\");if(r.dims.length!==3&&r.dims.length!==2)throw new Error(\"Skip must be 2D or 3D\");let n=t.dims[t.dims.length-1],o=t.dims[t.dims.length-2];if(r.dims[r.dims.length-1]!==n)throw new Error(\"Skip must have the same hidden size as input\");if(r.dims[r.dims.length-2]!==o)throw new Error(\"Skip must have the same sequence length as input\");if(a.dims.length!==1)throw new Error(\"Gamma must be 1D\");if(a.dims[a.dims.length-1]!==n)throw new Error(\"Gamma must have the same hidden size as input\");if(e.length>3){let u=e[3];if(u.dims.length!==1)throw new Error(\"Beta must be 1D\");if(u.dims[u.dims.length-1]!==n)throw new Error(\"Beta must have the same hidden size as input\")}if(e.length>4){let u=e[4];if(u.dims.length!==1)throw new Error(\"Bias must be 1D\");if(u.dims[u.dims.length-1]!==n)throw new Error(\"Bias must have the same hidden size as input\")}},$p=(e,t,r,a)=>{let n=e[0].dims,o=U.size(n),u=n,l=o,i=n.slice(-1)[0],c=a?n.slice(0,-1).concat(1):[],m=e.length>3,f=e.length>4,h=a&&r>1,b=a&&r>2,w=r>3,_=qe(i),I=[M(\"x\",e[0].dataType,e[0].dims,_),M(\"skip\",e[1].dataType,e[1].dims,_),M(\"gamma\",e[2].dataType,e[2].dims,_)];m&&I.push(M(\"beta\",e[3].dataType,e[3].dims,_)),f&&I.push(M(\"bias\",e[4].dataType,e[4].dims,_)),I.push(q(\"output\",e[0].dataType,u,_)),h&&I.push(q(\"meanOutput\",1,c)),b&&I.push(q(\"invStdOutput\",1,c)),w&&I.push(q(\"inputSkipBiasSum\",e[0].dataType,u,_));let $=Fe(e[0].dataType),x=A=>`\n const hiddenSize: f32 = ${i};\n const hiddenSizeVectorized: u32 = ${i/_};\n const epsilon: f32 = ${t.epsilon};\n\n ${A.declareVariables(...I)}\n\n ${A.mainStart()}\n ${A.guardAgainstOutOfBoundsWorkgroupSizes(l/i)}\n let offset = global_idx * hiddenSizeVectorized;\n var sum = ${Qe(\"f32\",_)};\n var squareSum = ${Qe(\"f32\",_)};\n for (var i: u32 = 0; i < hiddenSizeVectorized; i++) {\n let skipValue = skip[offset + i];\n let biasValue = ${f?\"bias[i]\":\"0.0\"};\n let inputValue = x[offset + i];\n let value = inputValue + skipValue + biasValue;\n ${w?\"inputSkipBiasSum[offset + i] = value;\":\"\"}\n output[offset + i] = value;\n let f32Value = ${pt($,_,\"value\")};\n sum += f32Value;\n squareSum += f32Value * f32Value;\n }\n let mean = ${rt(\"sum\",_)} / hiddenSize;\n let invStdDev = inverseSqrt(${rt(\"squareSum\",_)} / hiddenSize - mean * mean + epsilon);\n ${h?\"meanOutput[global_idx] = mean;\":\"\"}\n ${b?\"invStdOutput[global_idx] = invStdDev;\":\"\"}\n for (var i: u32 = 0; i < hiddenSizeVectorized; i++) {\n output[offset + i] = (output[offset + i] - ${$}(mean)) * ${$}(invStdDev) * gamma[i]\n + ${m?\"beta[i]\":\"0.0\"};\n }\n }`,T=[{dims:u,dataType:e[0].dataType}];return r>1&&T.push({dims:c,dataType:1}),r>2&&T.push({dims:c,dataType:1}),r>3&&T.push({dims:n,dataType:e[0].dataType}),{name:\"SkipLayerNormalization\",shaderCache:{hint:t.cacheKey},getShaderSource:x,getRunData:()=>({outputs:T,dispatchGroup:{x:Math.ceil(l/i/64)}})}},Nu=(e,t)=>{vp(e.inputs);let a=[0];e.outputCount>1&&a.push(-3),e.outputCount>2&&a.push(-3),e.outputCount>3&&a.push(3),e.compute($p(e.inputs,t,e.outputCount,!1),{outputs:a})},Wu=e=>{let t=e.epsilon;return ge({epsilon:t})}});var _p,In,xp,Hu,Sp,Ip,Lu,Gu,Fu=F(()=>{\"use strict\";Ue();$e();je();ve();_p=(e,t)=>{if(!e||e.length<1)throw new Error(\"too few inputs\");if(t.axes.length!==0){if(t.axes.length!==t.starts.length||t.axes.length!==t.ends.length)throw new Error(\"axes, starts and ends must have the same length\")}else if(t.starts.length!==t.ends.length)throw new Error(\"starts and ends must have the same length\");e.slice(1).forEach((r,a)=>{if(e[a+1].dataType!==6&&e[a+1].dataType!==7)throw new Error(`Input ${a} must be an array of int32 or int64`)})},In=(e,t)=>{let r=[];if(e.length>t)if(e[t].dataType===7)e[t].getBigInt64Array().forEach(a=>r.push(Number(a)));else if(e[t].dataType===6)e[t].getInt32Array().forEach(a=>r.push(Number(a)));else throw new Error(`Input ${t} must be an array of int32 or int64`);return r},xp=(e,t)=>{if(e.length>1){let r=In(e,1),a=In(e,2),n=In(e,3);return n.length===0&&(n=[...Array(e[0].dims.length).keys()]),ge({starts:r,ends:a,axes:n})}else return t},Hu=(e,t,r,a,n)=>{let o=e;return e<0&&(o+=r[a[t]]),n[t]<0?Math.max(0,Math.min(o,r[a[t]]-1)):Math.max(0,Math.min(o,r[a[t]]))},Sp=(e,t,r)=>`fn calculateInputIndices(output_indices: ${t.type.indices}) -> ${e.type.indices} {\n var input_indices: ${e.type.indices};\n var carry = 0u;\n for (var i = ${r.length}; i >= 0; i--) {\n let input_shape_i = ${ce(\"uniforms.input_shape\",\"i\",r.length)};\n let steps_i = ${ce(\"uniforms.steps\",\"i\",r.length)};\n let signs_i = ${ce(\"uniforms.signs\",\"i\",r.length)};\n let starts_i = ${ce(\"uniforms.starts\",\"i\",r.length)};\n var output_index = ${t.indicesGet(\"output_indices\",\"i\")};\n var input_index = output_index * steps_i + starts_i + carry;\n carry = input_index / input_shape_i;\n input_index = input_index % input_shape_i;\n if (signs_i < 0) {\n input_index = input_shape_i - input_index - 1u + starts_i;\n }\n ${e.indicesSet(\"input_indices\",\"i\",\"input_index\")};\n }\n return input_indices;\n }`,Ip=(e,t)=>{let r=e[0].dims,a=U.size(r),n=t.axes.length>0?U.normalizeAxes(t.axes,r.length):[...Array(r.length).keys()],o=In(e,4);o.forEach($=>$!==0||(()=>{throw new Error(\"step cannot be 0\")})),o.length===0&&(o=Array(n.length).fill(1));let u=t.starts.map(($,x)=>Hu($,x,r,n,o)),l=t.ends.map(($,x)=>Hu($,x,r,n,o));if(n.length!==u.length||n.length!==l.length)throw new Error(\"start, ends and axes should have the same number of elements\");if(n.length!==r.length)for(let $=0;$Math.sign($));o.forEach(($,x,T)=>{if($<0){let A=(l[x]-u[x])/$,z=u[x],R=z+A*o[x];u[x]=R,l[x]=z,T[x]=-$}});let c=r.slice(0);n.forEach(($,x)=>{c[$]=Math.ceil((l[$]-u[$])/o[$])});let m={dims:c,dataType:e[0].dataType},f=q(\"output\",e[0].dataType,c.length),h=M(\"input\",e[0].dataType,e[0].dims.length),b=U.size(c),w=[{name:\"outputSize\",type:\"u32\"},{name:\"starts\",type:\"u32\",length:u.length},{name:\"signs\",type:\"i32\",length:i.length},{name:\"steps\",type:\"u32\",length:o.length}],_=[{type:\"uint32\",data:b},{type:\"uint32\",data:u},{type:\"int32\",data:i},{type:\"uint32\",data:o},...G(e[0].dims),...G(c)],I=$=>`\n ${$.registerUniforms(w).declareVariables(h,f)}\n ${Sp(h,f,r)}\n ${$.mainStart()}\n ${$.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\n let output_indices = ${f.offsetToIndices(\"global_idx\")};\n let input_indices = calculateInputIndices(output_indices);\n ${f.setByOffset(\"global_idx\",h.getByIndices(\"input_indices\"))}\n }`;return{name:\"Slice\",shaderCache:{hint:`${i.length}_${u.length}_${o.length}`,inputDependencies:[\"rank\"]},getShaderSource:I,getRunData:()=>({outputs:[m],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:_})}},Lu=(e,t)=>{_p(e.inputs,t);let r=xp(e.inputs,t);e.compute(Ip(e.inputs,r),{inputs:[0]})},Gu=e=>{let t=e.starts,r=e.ends,a=e.axes;return ge({starts:t,ends:r,axes:a})}});var Cp,Ap,qu,ju,Ku=F(()=>{\"use strict\";$e();je();ve();Cp=e=>{if(!e||e.length!==1)throw new Error(\"Softmax op requires 1 input.\")},Ap=(e,t)=>{let r=e.dims,a=U.size(r),n=64,o=t.axis;if(o<0&&(o=r.length+o),o$===4?`max(max(${I}.x, ${I}.y), max(${I}.z, ${I}.w))`:$===2?`max(${I}.x, ${I}.y)`:$===3?`max(max(${I}.x, ${I}.y), ${I}.z)`:I,f=M(\"x\",e.dataType,e.dims,i),h=q(\"result\",e.dataType,e.dims,i),b=f.type.value,w=Fe(e.dataType)===\"f32\"?`var threadMax = ${b}(-3.402823e+38f);`:`var threadMax = ${b}(-65504.0h);`,_=I=>`\n var rowMaxShared : ${b};\n var rowSumShared : ${b};\n var threadShared : array<${b}, ${n}>;\n\n fn getValue(row: i32, col: i32, row_stride: i32) -> ${b} {\n let index = row * row_stride + col;\n return x[index];\n }\n\n fn setValue(row: i32, col: i32, row_stride: i32, value: ${b}) {\n let index = row * row_stride + col;\n result[index] = value;\n }\n ${I.registerUniform(\"packedCols\",\"i32\").declareVariables(f,h)}\n ${I.mainStart()}\n let gindex = i32(global_idx);\n let lindex = i32(local_idx);\n const wg = ${n};\n let row = gindex / wg;\n let cols = uniforms.packedCols;\n let row_stride : i32 = uniforms.packedCols;\n\n // find the rows max\n ${w}\n for (var col = lindex; col < cols; col += wg) {\n let value = getValue(row, col, row_stride);\n threadMax = max(threadMax, value);\n }\n if (lindex < cols) {\n threadShared[lindex] = threadMax;\n }\n workgroupBarrier();\n\n var reduceSize = min(cols, wg);\n for (var currSize = reduceSize >> 1; currSize > 0; currSize = reduceSize >> 1) {\n reduceSize = currSize + (reduceSize & 1);\n if (lindex < currSize) {\n threadShared[lindex] = max(threadShared[lindex], threadShared[lindex + reduceSize]);\n }\n workgroupBarrier();\n }\n if (lindex == 0) {\n rowMaxShared = ${b}(${m(\"threadShared[0]\",i)});\n }\n workgroupBarrier();\n\n // find the rows sum\n var threadSum = ${b}(0.0);\n for (var col = lindex; col < cols; col += wg) {\n let subExp = exp(getValue(row, col, row_stride) - rowMaxShared);\n threadSum += subExp;\n }\n threadShared[lindex] = threadSum;\n workgroupBarrier();\n\n for (var currSize = wg >> 1; currSize > 0; currSize = currSize >> 1) {\n if (lindex < currSize) {\n threadShared[lindex] = threadShared[lindex] + threadShared[lindex + currSize];\n }\n workgroupBarrier();\n }\n if (lindex == 0) {\n rowSumShared = ${b}(${rt(\"threadShared[0]\",i)});\n }\n workgroupBarrier();\n\n // calculate final value for each element in the row\n for (var col = lindex; col < cols; col += wg) {\n let value = exp(getValue(row, col, row_stride) - rowMaxShared) / rowSumShared;\n setValue(row, col, row_stride, value);\n }\n }`;return{name:\"Softmax\",shaderCache:{hint:`${i}`,inputDependencies:[\"type\"]},getRunData:()=>({outputs:[{dims:r,dataType:e.dataType}],dispatchGroup:{x:l},programUniforms:[{type:\"uint32\",data:c}]}),getShaderSource:_}},qu=(e,t)=>{Cp(e.inputs),e.compute(Ap(e.inputs[0],t))},ju=e=>ge({axis:e.axis})});var Ep,Tp,Op,kp,Pp,Yu,Zu,Xu=F(()=>{\"use strict\";$e();je();ve();Ep=e=>{if(!e||e.length<1)throw new Error(\"too few inputs\")},Tp=(e,t)=>{let r=[],a=t.numOutputs;return e[1].dims[0]>0&&(e[1].getBigInt64Array().forEach(n=>r.push(Number(n))),a=r.length),ge({numOutputs:a,axis:t.axis,splitSizes:r})},Op=e=>`\nfn calculateOutputIndex(index: u32) -> u32 {\n for (var i: u32 = 0u; i < ${e}u; i += 1u ) {\n if (index < ${ce(\"uniforms.size_in_split_axis\",\"i\",e)}) {\n return i;\n }\n }\n return ${e}u;\n}`,kp=e=>{let t=e.length,r=[];for(let a=0;a{let r=e[0].dims,a=U.size(r),n=e[0].dataType,o=U.normalizeAxis(t.axis,r.length),u=new Array(t.numOutputs),l=M(\"input\",n,r),i=new Array(t.numOutputs),c=[],m=[],f=0,h=[{type:\"uint32\",data:a}];for(let w=0;wh.push(...G(w)));let b=w=>`\n ${w.registerUniform(\"input_size\",\"u32\").registerUniform(\"size_in_split_axis\",\"u32\",i.length).declareVariables(l,...u)}\n ${Op(i.length)}\n ${kp(u)}\n\n ${w.mainStart()}\n ${w.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.input_size\")}\n\n var indices = ${l.offsetToIndices(\"global_idx\")};\n var index = ${l.indicesGet(\"indices\",o)};\n let output_number = calculateOutputIndex(index);\n if (output_number != 0) {\n index -= ${ce(\"uniforms.size_in_split_axis\",\"output_number - 1u\",i.length)};\n ${l.indicesSet(\"indices\",o,\"index\")};\n }\n writeBufferData(output_number, indices, global_idx);\n }`;return{name:\"Split\",shaderCache:{hint:t.cacheKey,inputDependencies:[\"rank\"]},getShaderSource:b,getRunData:()=>({outputs:c,dispatchGroup:{x:Math.ceil(a/64)},programUniforms:h})}},Yu=(e,t)=>{Ep(e.inputs);let r=e.inputs.length===1?t:Tp(e.inputs,t);e.compute(Pp(e.inputs,r),{inputs:[0]})},Zu=e=>{let t=e.axis,r=e.splitSizes,a=e.numOutputs<0?r.length:e.numOutputs;if(a!==r.length)throw new Error(\"numOutputs and splitSizes lengh must be equal\");return ge({axis:t,numOutputs:a,splitSizes:r})}});var Qu,Rp,Bp,Dp,Ju,el=F(()=>{\"use strict\";Ue();$e();ve();Qu=e=>Array.from(e.getBigInt64Array(),Number),Rp=e=>{if(!e||e.length!==2)throw new Error(\"Tile requires 2 inputs.\");if(e[0].dataType!==1&&e[0].dataType!==6&&e[0].dataType!==12)throw new Error(\"Tile only support float, int32, and uint32 data types\");if(e[1].dataType!==7)throw new Error(\"Tile `repeats` input should be of int64 data type\");if(e[1].dims.length!==1)throw new Error(\"Tile `repeats` input should be 1-D\");if(Qu(e[1]).length!==e[0].dims.length)throw new Error(\"Tile `repeats` input should have same number of elements as rank of input data tensor\")},Bp=(e,t)=>{let r=[];for(let a=0;a{let t=e[0].dims,r=Qu(e[1]),a=Bp(t,r),n=U.size(a),o=e[0].dataType,u=M(\"input\",o,t.length),l=q(\"output\",o,a.length),i=c=>`\n const inputShape = ${u.indices(...t)};\n ${c.registerUniform(\"output_size\",\"u32\").declareVariables(u,l)}\n ${c.mainStart()}\n ${c.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n let output_indices = ${l.offsetToIndices(\"global_idx\")};\n var input_indices: ${u.type.indices};\n for (var i = 0; i < ${t.length}; i++) {\n let input_dim_i = ${u.indicesGet(\"uniforms.input_shape\",\"i\")};\n let input_dim_value = ${l.indicesGet(\"output_indices\",\"i\")} % input_dim_i;\n\n ${u.indicesSet(\"input_indices\",\"i\",\"input_dim_value\")}\n }\n ${l.setByOffset(\"global_idx\",u.getByIndices(\"input_indices\"))}\n }`;return{name:\"Tile\",shaderCache:{hint:`${r}`,inputDependencies:[\"rank\"]},getRunData:()=>({outputs:[{dims:a,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(n/64)},programUniforms:[{type:\"uint32\",data:n},...G(e[0].dims),...G(a)]}),getShaderSource:i}},Ju=e=>{Rp(e.inputs),e.compute(Dp(e.inputs),{inputs:[0]})}});var zp,Mp,tl,rl=F(()=>{\"use strict\";Ue();$e();ve();zp=(e,t,r,a,n)=>{let o=q(\"output_data\",n,r.length,4),u=M(\"a_data\",t[1].dataType,t[1].dims.length,4),l=M(\"b_data\",t[2].dataType,t[2].dims.length,4),i=M(\"c_data\",t[0].dataType,t[0].dims.length,4),c,m=(f,h,b)=>`select(${h}, ${f}, ${b})`;if(!a)c=o.setByOffset(\"global_idx\",m(u.getByOffset(\"global_idx\"),l.getByOffset(\"global_idx\"),i.getByOffset(\"global_idx\")));else{let f=(h,b,w=\"\")=>{let _=`a_data[index_a${b}][component_a${b}]`,I=`b_data[index_b${b}][component_b${b}]`,$=`bool(c_data[index_c${b}] & ${4278190080>>>(3-b)*8}u)`;return`\n let output_indices${b} = ${o.offsetToIndices(`global_idx * 4u + ${b}u`)};\n let offset_a${b} = ${u.broadcastedIndicesToOffset(`output_indices${b}`,o)};\n let offset_b${b} = ${l.broadcastedIndicesToOffset(`output_indices${b}`,o)};\n let offset_c${b} = ${i.broadcastedIndicesToOffset(`output_indices${b}`,o)};\n let index_a${b} = offset_a${b} / 4u;\n let index_b${b} = offset_b${b} / 4u;\n let index_c${b} = offset_c${b} / 4u;\n let component_a${b} = offset_a${b} % 4u;\n let component_b${b} = offset_b${b} % 4u;\n ${h}[${b}] = ${w}(${m(_,I,$)});\n `};n===9?c=`\n var data = vec4(0);\n ${f(\"data\",0,\"u32\")}\n ${f(\"data\",1,\"u32\")}\n ${f(\"data\",2,\"u32\")}\n ${f(\"data\",3,\"u32\")}\n output_data[global_idx] = dot(vec4(0x1, 0x100, 0x10000, 0x1000000), vec4(data));`:c=`\n ${f(\"output_data[global_idx]\",0)}\n ${f(\"output_data[global_idx]\",1)}\n ${f(\"output_data[global_idx]\",2)}\n ${f(\"output_data[global_idx]\",3)}\n `}return`\n ${e.registerUniform(\"vec_size\",\"u32\").declareVariables(i,u,l,o)}\n ${e.mainStart()}\n ${e.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.vec_size\")}\n ${c}\n }`},Mp=e=>{let t=e[1].dims,r=e[2].dims,a=e[0].dims,n=e[1].dataType,o=!(U.areEqual(t,r)&&U.areEqual(r,a)),u=t,l=U.size(t);if(o){let c=gt.calcShape(gt.calcShape(t,r,!1),a,!1);if(!c)throw new Error(\"Can't perform where op on the given tensors\");u=c,l=U.size(u)}let i=Math.ceil(l/4);return{name:\"Where\",shaderCache:{inputDependencies:[\"rank\",\"rank\",\"rank\"]},getShaderSource:c=>zp(c,e,u,o,n),getRunData:()=>({outputs:[{dims:u,dataType:n}],dispatchGroup:{x:Math.ceil(l/64/4)},programUniforms:[{type:\"uint32\",data:i},...G(a),...G(t),...G(r),...G(u)]})}},tl=e=>{e.compute(Mp(e.inputs))}});var nl,al=F(()=>{\"use strict\";Ao();ca();Oo();Po();cs();_s();Is();ga();Ns();Hs();js();Zs();Js();ru();iu();su();lu();ba();mu();hu();Pu();Bu();mn();Uu();Vu();Fu();Ku();Xu();el();tr();pa();rl();nl=new Map([[\"Abs\",[Ro]],[\"Acos\",[Bo]],[\"Acosh\",[Do]],[\"Add\",[ps]],[\"ArgMax\",[Co,da]],[\"ArgMin\",[Io,da]],[\"Asin\",[zo]],[\"Asinh\",[Mo]],[\"Atan\",[Uo]],[\"Atanh\",[No]],[\"Attention\",[Eo]],[\"AveragePool\",[xu,_u]],[\"BatchNormalization\",[To]],[\"BiasAdd\",[ko]],[\"BiasSplitGelu\",[ds]],[\"Cast\",[Vo,Wo]],[\"Ceil\",[Lo]],[\"Clip\",[Ho]],[\"Concat\",[xs,Ss]],[\"Conv\",[va,wa]],[\"ConvTranspose\",[Us,Ms]],[\"Cos\",[Go]],[\"Cosh\",[Fo]],[\"CumSum\",[Ws,Vs]],[\"Div\",[ms]],[\"Einsum\",[Fs,qs]],[\"Elu\",[qo,gn]],[\"Equal\",[fs]],[\"Erf\",[jo]],[\"Exp\",[Ko]],[\"Expand\",[Ys]],[\"Floor\",[Yo]],[\"FusedConv\",[va,wa]],[\"Gather\",[Qs,Xs]],[\"GatherElements\",[tu,eu]],[\"Gelu\",[Zo]],[\"Gemm\",[au,nu]],[\"GlobalAveragePool\",[Cu,Iu]],[\"GlobalMaxPool\",[ku,Ou]],[\"Greater\",[bs]],[\"GreaterOrEqual\",[vs]],[\"InstanceNormalization\",[ou]],[\"LayerNormalization\",[uu]],[\"LeakyRelu\",[Xo,gn]],[\"Less\",[ws]],[\"LessOrEqual\",[$s]],[\"Log\",[ls]],[\"MatMul\",[Os]],[\"MaxPool\",[Eu,Tu]],[\"Mul\",[hs]],[\"MultiHeadAttention\",[pu,cu]],[\"Neg\",[Jo]],[\"Not\",[Qo]],[\"Pad\",[fu]],[\"Pow\",[gs]],[\"Range\",[Ru]],[\"Reciprocal\",[es]],[\"ReduceMin\",[wo]],[\"ReduceMean\",[fo]],[\"ReduceMax\",[bo]],[\"ReduceSum\",[$o]],[\"ReduceProd\",[vo]],[\"ReduceL1\",[ho]],[\"ReduceL2\",[go]],[\"ReduceLogSum\",[xo]],[\"ReduceLogSumExp\",[yo]],[\"ReduceSumSquare\",[_o]],[\"Relu\",[ts]],[\"Resize\",[zu,Mu]],[\"Sigmoid\",[rs]],[\"Sin\",[ns]],[\"Sinh\",[as]],[\"Slice\",[Lu,Gu]],[\"SkipLayerNormalization\",[Nu,Wu]],[\"Split\",[Yu,Zu]],[\"Sqrt\",[is]],[\"Softmax\",[qu,ju]],[\"Sub\",[ys]],[\"Tan\",[os]],[\"Tanh\",[ss]],[\"ThresholdedRelu\",[us,gn]],[\"Tile\",[Ju]],[\"Transpose\",[eo,to]],[\"Where\",[tl]]])});var Cn,il=F(()=>{\"use strict\";st();Pt();ve();Cn=class{constructor(t){this.backend=t;this.repo=new Map,this.attributesBound=!1}getArtifact(t){return this.repo.get(t)}setArtifact(t,r){this.repo.set(t,r)}run(t,r,a,n,o){at(t.programInfo.name);let u=this.backend.device,l=this.backend.getComputePassEncoder();this.backend.writeTimestamp(this.backend.pendingDispatchNumber*2),l.setPipeline(t.computePipeline);let i=[];for(let m of r)i.push({binding:i.length,resource:{buffer:m.buffer}});for(let m of a)i.push({binding:i.length,resource:{buffer:m.buffer}});o&&i.push({binding:i.length,resource:o});let c=u.createBindGroup({layout:t.computePipeline.getBindGroupLayout(0),entries:i,label:t.programInfo.name});l.setBindGroup(0,c),l.dispatchWorkgroups(...n),this.backend.writeTimestamp(this.backend.pendingDispatchNumber*2+1),this.backend.pendingDispatchNumber++,(this.backend.pendingDispatchNumber>=this.backend.maxDispatchNumber||this.backend.queryType===\"at-passes\")&&this.backend.endComputePass(),this.backend.pendingDispatchNumber>=this.backend.maxDispatchNumber&&this.backend.flush(),it(t.programInfo.name)}dispose(){}build(t,r){at(t.name);let a=this.backend.device,n=[];a.features.has(\"shader-f16\")&&n.push(\"enable f16;\");let o=Qi(r),u=t.getShaderSource(o),l=`${n.join(`\n`)}\n${o.additionalImplementations}\n${u}`,i=a.createShaderModule({code:l,label:t.name});De(\"verbose\",()=>`[WebGPU] ${t.name} shader code: ${l}`);let c=a.createComputePipeline({compute:{module:i,entryPoint:\"main\"},layout:\"auto\",label:t.name});return it(t.name),{programInfo:t,computePipeline:c}}normalizeDispatchGroupSize(t){let r=typeof t==\"number\"?t:t.x,a=typeof t==\"number\"?1:t.y||1,n=typeof t==\"number\"?1:t.z||1,o=this.backend.device.limits.maxComputeWorkgroupsPerDimension;if(r<=o&&a<=o&&n<=o)return[r,a,n];let u=r*a*n,l=Math.ceil(Math.sqrt(u));if(l>o){if(l=Math.ceil(Math.cbrt(u)),l>o)throw new Error(\"Total dispatch size exceeds WebGPU maximum.\");return[l,l,l]}else return[l,l,1]}}});var Up,Np,An,ol=F(()=>{\"use strict\";st();Ue();Pt();ji();Xi();al();il();Up=(e,t)=>{if(t.length!==e.length)throw new Error(`inputDependencies length ${t.length} is not equal to inputTensors length ${e.length}.`);let r=[];for(let a=0;a{let a=e.name;return e.shaderCache?.hint&&(a+=\"[\"+e.shaderCache.hint+\"]\"),a+=\":\"+r+`:${Up(t,e.shaderCache?.inputDependencies??new Array(t.length).fill(\"dims\"))}`,a},An=class{constructor(){this.currentKernelId=null;this.commandEncoder=null;this.computePassEncoder=null;this.maxDispatchNumber=16;this.pendingDispatchNumber=0;this.pendingKernels=[];this.pendingQueries=new Map;this.sessionExternalDataMapping=new Map}get currentKernelCustomData(){if(this.currentKernelId===null)throw new Error(\"currentKernelCustomData(): currentKernelId is null. (should not happen)\");let t=this.kernelCustomData.get(this.currentKernelId);return t||(t={},this.kernelCustomData.set(this.currentKernelId,t)),t}async initialize(t,r){this.env=t;let a=[],n={requiredLimits:{maxComputeWorkgroupStorageSize:r.limits.maxComputeWorkgroupStorageSize,maxComputeWorkgroupsPerDimension:r.limits.maxComputeWorkgroupsPerDimension,maxStorageBufferBindingSize:r.limits.maxStorageBufferBindingSize,maxBufferSize:r.limits.maxBufferSize,maxComputeInvocationsPerWorkgroup:r.limits.maxComputeInvocationsPerWorkgroup,maxComputeWorkgroupSizeX:r.limits.maxComputeWorkgroupSizeX,maxComputeWorkgroupSizeY:r.limits.maxComputeWorkgroupSizeY,maxComputeWorkgroupSizeZ:r.limits.maxComputeWorkgroupSizeZ},requiredFeatures:a};r.features.has(\"chromium-experimental-timestamp-query-inside-passes\")?a.push(\"chromium-experimental-timestamp-query-inside-passes\"):r.features.has(\"timestamp-query\")&&a.push(\"timestamp-query\"),r.features.has(\"shader-f16\")&&a.push(\"shader-f16\"),this.device=await r.requestDevice(n),this.gpuDataManager=Zi(this),this.programManager=new Cn(this),this.kernels=new Map,this.kernelPersistentData=new Map,this.kernelCustomData=new Map,Fi(t.logLevel,!!t.debug),this.device.onuncapturederror=o=>{o.error instanceof GPUValidationError&&console.error(`An uncaught WebGPU validation error was raised: ${o.error.message}`)},Object.defineProperty(this.env.webgpu,\"device\",{value:this.device}),this.setQueryType()}dispose(){typeof this.querySet<\"u\"&&this.querySet.destroy(),this.gpuDataManager.dispose()}getCommandEncoder(){return this.commandEncoder||(this.commandEncoder=this.device.createCommandEncoder(),this.setQueryType(),this.queryType!==\"none\"&&typeof this.querySet>\"u\"&&(this.querySet=this.device.createQuerySet({type:\"timestamp\",count:this.maxDispatchNumber*2}),this.queryResolveBuffer=this.device.createBuffer({size:this.maxDispatchNumber*2*8,usage:GPUBufferUsage.COPY_SRC|GPUBufferUsage.QUERY_RESOLVE}))),this.commandEncoder}getComputePassEncoder(){if(!this.computePassEncoder){let t={};this.queryType===\"at-passes\"&&(t.timestampWrites={querySet:this.querySet,beginningOfPassWriteIndex:this.pendingDispatchNumber*2,endOfPassWriteIndex:this.pendingDispatchNumber*2+1}),this.computePassEncoder=this.getCommandEncoder().beginComputePass(t)}return this.computePassEncoder}endComputePass(){this.computePassEncoder&&(this.computePassEncoder.end(),this.computePassEncoder=null)}flush(){if(!this.commandEncoder)return;at(),this.endComputePass();let t;this.queryType!==\"none\"&&(this.commandEncoder.resolveQuerySet(this.querySet,0,this.pendingDispatchNumber*2,this.queryResolveBuffer,0),t=this.device.createBuffer({size:this.pendingDispatchNumber*2*8,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST}),this.pendingQueries.set(t,this.pendingKernels),this.pendingKernels=[],this.commandEncoder.copyBufferToBuffer(this.queryResolveBuffer,0,t,0,this.pendingDispatchNumber*2*8)),this.device.queue.submit([this.commandEncoder.finish()]),this.gpuDataManager.refreshPendingBuffers(),this.commandEncoder=null,this.pendingDispatchNumber=0,this.queryType!==\"none\"&&t.mapAsync(GPUMapMode.READ).then(()=>{let r=new BigUint64Array(t.getMappedRange()),a=this.pendingQueries.get(t);for(let n=0;n\"u\"&&(this.queryTimeBase=b);let _=Number(b-this.queryTimeBase),I=Number(w-this.queryTimeBase);if(!Number.isSafeInteger(_)||!Number.isSafeInteger(I))throw new RangeError(\"incorrect timestamp range\");if(this.env.webgpu.profiling?.ondata)this.env.webgpu.profiling.ondata({version:1,inputsMetadata:f.map($=>({dims:$.dims,dataType:tt($.dataType)})),outputsMetadata:h.map($=>({dims:$.dims,dataType:tt($.dataType)})),kernelId:u,kernelType:i,kernelName:c,programName:m,startTime:_,endTime:I});else{let $=\"\";f.forEach((T,A)=>{$+=`input[${A}]: [${T.dims}] | ${tt(T.dataType)}, `});let x=\"\";h.forEach((T,A)=>{x+=`output[${A}]: [${T.dims}] | ${tt(T.dataType)}, `}),console.log(`[profiling] kernel \"${u}|${i}|${c}|${m}\" ${$}${x}execution time: ${I-_} ns`)}Jr(\"GPU\",`${m}::${b}::${w}`)}t.unmap(),this.pendingQueries.delete(t)}),it()}run(t,r,a,n,o){at(t.name);let u=[];for(let x=0;xT):a;if(m.length!==l.length)throw new Error(`Output size ${m.length} must be equal to ${l.length}.`);let f=[],h=[];for(let x=0;x=l.length)throw new Error(`Invalid output index: ${m[x]}`);if(m[x]===-3)continue;let T=m[x]===-1,A=m[x]===-2,z=T||A?o(l[x].dataType,l[x].dims):n(m[x],l[x].dataType,l[x].dims),R=this.gpuDataManager.get(z.data);if(!R)throw new Error(`no GPU data for output: ${z.data}`);if(T&&this.temporaryData.push(R),A){let N=this.kernelPersistentData.get(this.currentKernelId);N||(N=[],this.kernelPersistentData.set(this.currentKernelId,N)),N.push(R)}f.push(z),h.push(R)}let b;if(c){let x=0,T=[];c.forEach(N=>{let E=typeof N.data==\"number\"?[N.data]:N.data;if(E.length===0)return;let W=E.length<=2?E.length*4:16;x=Math.ceil(x/W)*W,T.push(x),x+=E.length>4?Math.ceil(E.length/4)*16:E.length*4});let A=16;x=Math.ceil(x/A)*A;let z=new ArrayBuffer(x);c.forEach((N,E)=>{let W=T[E],te=typeof N.data==\"number\"?[N.data]:N.data;N.type===\"int32\"?new Int32Array(z,W,te.length).set(te):N.type===\"uint32\"?new Uint32Array(z,W,te.length).set(te):new Float32Array(z,W,te.length).set(te)});let R=this.gpuDataManager.create(x,GPUBufferUsage.COPY_DST|GPUBufferUsage.UNIFORM);this.device.queue.writeBuffer(R.buffer,0,z,0,x),this.gpuDataManager.release(R.id),b={offset:0,size:x,buffer:R.buffer}}let w=this.programManager.normalizeDispatchGroupSize(i),_=w[1]===1&&w[2]===1,I=Np(t,r,_),$=this.programManager.getArtifact(I);if($||($=this.programManager.build(t,w),this.programManager.setArtifact(I,$),De(\"info\",()=>`[artifact] key: ${I}, programName: ${t.name}`)),De(\"info\",()=>`[ProgramManager] run \"${t.name}\" (key=${I}) with ${w[0]}x${w[1]}x${w[2]}`),this.queryType!==\"none\"){let x={kernelId:this.currentKernelId,programName:$.programInfo.name,inputTensorViews:r,outputTensorViews:f};this.pendingKernels.push(x)}return this.programManager.run($,u,h,w,b),it(t.name),f}upload(t,r){this.gpuDataManager.upload(t,r)}memcpy(t,r){this.gpuDataManager.memcpy(t,r)}async download(t,r){await this.gpuDataManager.download(t,r)}alloc(t){return this.gpuDataManager.create(t).id}free(t){return this.gpuDataManager.release(t)}createKernel(t,r,a,n){let o=nl.get(t);if(!o)throw new Error(`kernel not implemented: ${t}`);let u={kernelType:t,kernelName:n,kernelEntry:o[0],attributes:[o[1],a]};this.kernels.set(r,u)}releaseKernel(t){let r=this.kernelPersistentData.get(t);if(r){for(let a of r)this.gpuDataManager.release(a.id);this.kernelPersistentData.delete(t)}this.kernelCustomData.delete(t),this.kernels.delete(t)}computeKernel(t,r,a){let n=this.kernels.get(t);if(!n)throw new Error(`kernel not created: ${t}`);let o=n.kernelType,u=n.kernelName,l=n.kernelEntry,i=n.attributes;if(this.currentKernelId!==null)throw new Error(`kernel \"[${o}] ${u}\" is not allowed to be called recursively`);this.currentKernelId=t,i[0]&&(i[1]=i[0](i[1]),i[0]=void 0),De(\"info\",()=>`[WebGPU] Start to run kernel \"[${o}] ${u}\"...`);let c=this.env.debug;this.temporaryData=[];try{return c&&this.device.pushErrorScope(\"validation\"),l(r,i[1]),0}catch(m){return a.push(Promise.resolve(`[WebGPU] Kernel \"[${o}] ${u}\" failed. ${m}`)),1}finally{c&&a.push(this.device.popErrorScope().then(m=>m?`GPU validation error for kernel \"[${o}] ${u}\": ${m.message}`:null));for(let m of this.temporaryData)this.gpuDataManager.release(m.id);this.temporaryData=[],this.currentKernelId=null}}registerBuffer(t,r,a,n){let o=this.sessionExternalDataMapping.get(t);o||(o=new Map,this.sessionExternalDataMapping.set(t,o));let u=o.get(r),l=this.gpuDataManager.registerExternalBuffer(a,n,u?.[1]);return o.set(r,[l,a]),l}unregisterBuffers(t){let r=this.sessionExternalDataMapping.get(t);r&&(r.forEach(a=>this.gpuDataManager.unregisterExternalBuffer(a[1])),this.sessionExternalDataMapping.delete(t))}getBuffer(t){let r=this.gpuDataManager.get(t);if(!r)throw new Error(`no GPU data for buffer: ${t}`);return r.buffer}createDownloader(t,r,a){return async()=>{let n=await na(this,t,r);return qi(n.buffer,a)}}writeTimestamp(t){this.queryType===\"inside-passes\"&&this.computePassEncoder.writeTimestamp(this.querySet,t)}setQueryType(){this.queryType=\"none\",(this.env.webgpu.profiling?.mode===\"default\"||this.env.wasm.trace)&&(this.device.features.has(\"chromium-experimental-timestamp-query-inside-passes\")?this.queryType=\"inside-passes\":this.device.features.has(\"timestamp-query\")&&(this.queryType=\"at-passes\"))}}});var sl={};Xt(sl,{init:()=>Wp});var Er,Ca,Wp,ul=F(()=>{\"use strict\";Ue();ol();Pt();$e();Er=class e{constructor(t,r,a,n){this.module=t;this.dataType=r;this.data=a;this.dims=n}getFloat32Array(){if(this.dataType!==1)throw new Error(\"Invalid data type\");let t=U.size(this.dims);return t===0?new Float32Array:new Float32Array(this.module.HEAP8.buffer,this.data,t)}getBigInt64Array(){if(this.dataType!==7)throw new Error(\"Invalid data type\");let t=U.size(this.dims);return t===0?new BigInt64Array:new BigInt64Array(this.module.HEAP8.buffer,this.data,t)}getInt32Array(){if(this.dataType!==6)throw new Error(\"Invalid data type\");let t=U.size(this.dims);return t===0?new Int32Array:new Int32Array(this.module.HEAP8.buffer,this.data,t)}reshape(t){if(U.size(t)!==U.size(this.dims))throw new Error(\"Invalid new shape\");return new e(this.module,this.dataType,this.data,t)}},Ca=class{constructor(t,r,a){this.module=t;this.backend=r;this.customDataOffset=0;this.customDataSize=0;let n=t.HEAPU32,o=a>>>2;this.opKernelContext=n[o++];let u=n[o++];this.outputCount=n[o++],this.customDataOffset=n[o++],this.customDataSize=n[o++];let l=[];for(let i=0;itypeof l==\"number\"?this.inputs[l]:l)??this.inputs,n=r?.outputs??[],o=(l,i,c)=>new Er(this.module,i,this.output(l,c),c),u=(l,i)=>{let c=_r(l);if(!c)throw new Error(`Unsupported data type: ${l}`);let m=c*U.size(i);return new Er(this.module,l,this.backend.gpuDataManager.create(m).id,i)};return this.backend.run(t,a,n,o,u)}output(t,r){let a=this.module.stackSave();try{let n=this.module.stackAlloc((1+r.length)*4),o=n>>2;this.module.HEAPU32[o++]=r.length;for(let u=0;u{let a=e.jsepInit;if(!a)throw new Error(\"Failed to initialize JSEP. The WebAssembly module is not built with JSEP support.\");let n=new An;await n.initialize(t,r),a(n,o=>n.alloc(o),o=>n.free(o),(o,u,l,i=!1)=>{if(i)De(\"verbose\",()=>`[WebGPU] jsepCopyGpuToGpu: src=${o}, dst=${u}, size=${l}`),n.memcpy(o,u);else{De(\"verbose\",()=>`[WebGPU] jsepCopyCpuToGpu: dataOffset=${o}, gpuDataId=${u}, size=${l}`);let c=e.HEAPU8.subarray(o>>>0,(o>>>0)+l);n.upload(u,c)}},async(o,u,l)=>{De(\"verbose\",()=>`[WebGPU] jsepCopyGpuToCpu: gpuDataId=${o}, dataOffset=${u}, size=${l}`),await n.download(o,()=>e.HEAPU8.subarray(u>>>0,(u>>>0)+l))},(o,u,l)=>n.createKernel(o,u,l,e.UTF8ToString(e._JsepGetNodeName(u))),o=>n.releaseKernel(o),(o,u,l,i)=>{De(\"verbose\",()=>`[WebGPU] jsepRun: sessionHandle=${l}, kernel=${o}, contextDataOffset=${u}`);let c=new Ca(e,n,u);return n.computeKernel(o,c,i)})}});var Vp,dl,cl,Tr,Hp,Aa,pl,ml,ll,fl,hl,gl,yl=F(()=>{\"use strict\";Wi();Hi();Ue();Jt();nn();ta();Vp=(e,t)=>{Ve()._OrtInit(e,t)!==0&&Re(\"Can't initialize onnxruntime.\")},dl=async e=>{Vp(e.wasm.numThreads,xr(e.logLevel))},cl=async(e,t)=>{if(t===\"webgpu\"){if(typeof navigator>\"u\"||!navigator.gpu)throw new Error(\"WebGPU is not supported in current environment\");let r=await navigator.gpu.requestAdapter();if(!r)throw new Error('Failed to get GPU adapter. You may need to enable flag \"--enable-unsafe-webgpu\" if you are using Chrome.');if(!e.wasm.simd)throw new Error(\"Not supported for WebGPU=ON and SIMD=OFF. Please set `env.wasm.simd` to true when using `webgpu` EP\");let a=(ul(),Ut(sl)).init;await a(Ve(),e,r)}},Tr=new Map,Hp=e=>{let t=Ve(),r=t.stackSave();try{let a=t.stackAlloc(8);return t._OrtGetInputOutputCount(e,a,a+4)!==0&&Re(\"Can't get session input/output count.\"),[t.HEAP32[a/4],t.HEAP32[a/4+1]]}finally{t.stackRestore(r)}},Aa=e=>{let t=Ve(),r=t._malloc(e.byteLength);if(r===0)throw new Error(`Can't create a session. failed to allocate a buffer of size ${e.byteLength}.`);return t.HEAPU8.set(e,r),[r,e.byteLength]},pl=async(e,t)=>{let r,a,n=Ve();Array.isArray(e)?[r,a]=e:e.buffer===n.HEAPU8.buffer?[r,a]=[e.byteOffset,e.byteLength]:[r,a]=Aa(e);let o=0,u=0,l=0,i=[],c=[],m=[];try{if([u,i]=Vi(t),t?.externalData&&n.mountExternalData){let $=[];for(let x of t.externalData){let T=typeof x==\"string\"?x:x.path;$.push(Sr(typeof x==\"string\"?x:x.data).then(A=>{n.mountExternalData(T,A)}))}await Promise.all($)}o=n._OrtCreateSession(r,a,u),o===0&&Re(\"Can't create a session.\");let[f,h]=Hp(o),b=[],w=[],_=[];for(let $=0;$$===\"gpu-buffer\")&&(l=n._OrtCreateBinding(o),l===0&&Re(\"Can't create IO binding.\"),I={handle:l,outputPreferredLocations:_,outputPreferredLocationsEncoded:_.map($=>ea($))}),Tr.set(o,[o,c,m,I]),[o,b,w]}catch(f){throw c.forEach(h=>n._OrtFree(h)),m.forEach(h=>n._OrtFree(h)),l!==0&&n._OrtReleaseBinding(l),o!==0&&n._OrtReleaseSession(o),f}finally{n._free(r),u!==0&&n._OrtReleaseSessionOptions(u),i.forEach(f=>n._free(f)),n.unmountExternalData?.()}},ml=e=>{let t=Ve(),r=Tr.get(e);if(!r)throw new Error(`cannot release session. invalid session id: ${e}`);let[a,n,o,u]=r;u&&t._OrtReleaseBinding(u.handle),t.jsepUnregisterBuffers?.(e),n.forEach(l=>t._OrtFree(l)),o.forEach(l=>t._OrtFree(l)),t._OrtReleaseSession(a),Tr.delete(e)},ll=(e,t,r,a,n)=>{if(!e){t.push(0);return}let o=Ve(),u=e[0],l=e[1],i=e[3],c,m;if(u===\"string\"&&i===\"gpu-buffer\")throw new Error(\"String tensor is not supported on GPU.\");if(i===\"gpu-buffer\"){let b=e[2].gpuBuffer,w=_r(Jn(u));m=l.reduce((_,I)=>_*I,1)*w,c=o.jsepRegisterBuffer(a,n,b,m)}else{let b=e[2];if(Array.isArray(b)){m=4*b.length,c=o._malloc(m),r.push(c);let w=c/4;for(let _=0;_o.HEAP32[b++]=_);let w=o._OrtCreateTensor(Jn(u),c,m,h,l.length,ea(i));w===0&&Re(`Can't create tensor for input/output. session=${a}, index=${n}.`),t.push(w)}finally{o.stackRestore(f)}},fl=async(e,t,r,a,n,o)=>{let u=Ve(),l=Tr.get(e);if(!l)throw new Error(`cannot run inference. invalid session id: ${e}`);let[i,c,m,f]=l,h=t.length,b=a.length,w=0,_=[],I=[],$=[],x=[],T=u.stackSave(),A=u.stackAlloc(h*4),z=u.stackAlloc(h*4),R=u.stackAlloc(b*4),N=u.stackAlloc(b*4);try{[w,_]=Ni(o);for(let Z=0;ZWe*Me,1);he=tt(Ge);let Ne=f?.outputPreferredLocations[a[Z]];if(he===\"string\"){if(Ne===\"gpu-buffer\")throw new Error(\"String tensor is not supported on GPU.\");let We=[],Me=ye/4;for(let Ct=0;Ct0){let We=u.jsepGetBuffer(ye),Me=_r(Ge);if(Me===void 0||!on(he))throw new Error(`Unsupported data type: ${he}`);Ae=!0,X.push([he,be,{gpuBuffer:We,download:u.jsepCreateDownloader(We,nt*Me,he),dispose:()=>{u._OrtReleaseTensor(Oe)}},\"gpu-buffer\"])}else{let We=an(he),Me=new We(nt);new Uint8Array(Me.buffer,Me.byteOffset,Me.byteLength).set(u.HEAPU8.subarray(ye,ye+Me.byteLength)),X.push([he,be,Me,\"cpu\"])}}finally{u.stackRestore(Pe),he===\"string\"&&ye&&u._free(ye),Ae||u._OrtReleaseTensor(Oe)}}return f&&u._OrtClearBoundOutputs(f.handle),X}finally{u.stackRestore(T),I.forEach(E=>u._OrtReleaseTensor(E)),$.forEach(E=>u._OrtReleaseTensor(E)),x.forEach(E=>u._free(E)),w!==0&&u._OrtReleaseRunOptions(w),_.forEach(E=>u._free(E))}},hl=e=>{let t=Ve(),r=Tr.get(e);if(!r)throw new Error(\"invalid session id\");let a=r[0],n=t._OrtEndProfiling(a);n===0&&Re(\"Can't get an profile file name.\"),t._OrtFree(n)},gl=e=>{let t=[];for(let r of e){let a=r[2];!Array.isArray(a)&&\"buffer\"in a&&t.push(a.buffer)}return t}});var bl=Zt((ww,Gp)=>{Gp.exports='/*!\\n * ONNX Runtime Web v1.17.1\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\n * Licensed under the MIT License.\\n */\\n\"use strict\";(()=>{var hn=Object.defineProperty;var Lu=Object.getOwnPropertyDescriptor;var Fu=Object.getOwnPropertyNames;var ju=Object.prototype.hasOwnProperty;var j=(e,t)=>()=>(e&&(t=e(e=0)),t);var dr=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Br=(e,t)=>{for(var r in t)hn(e,r,{get:t[r],enumerable:!0})},qu=(e,t,r,o)=>{if(t&&typeof t==\"object\"||typeof t==\"function\")for(let n of Fu(t))!ju.call(e,n)&&n!==r&&hn(e,n,{get:()=>t[n],enumerable:!(o=Lu(t,n))||o.enumerable});return e};var Ht=e=>qu(hn({},\"__esModule\",{value:!0}),e);var gn={};Br(gn,{createReadStream:()=>xo,readFile:()=>Ku,readFileSync:()=>Yu});var Ku,Yu,xo,yn=j(()=>{Ku=void 0,Yu=void 0,xo=void 0});var bn={};Br(bn,{join:()=>Zu});var Zu,wn=j(()=>{Zu=void 0});var Io=dr((Co,vn)=>{\"use strict\";var _o=(()=>{var e=typeof document<\"u\"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<\"u\"&&(e=e||__filename),function(t={}){var r=t,o,n;r.ready=new Promise((d,m)=>{o=d,n=m}),r.mountExternalData=(d,m)=>{(r.Fa||(r.Fa=new Map)).set(d,m)},r.unmountExternalData=()=>{delete r.Fa},r.jsepInit=(d,m,v,C,B,H,q,le)=>{r.ab=d,r.Qa=m,r.Sa=v,r.La=C,r.Ra=B,r.sa=H,r.Ta=q,r.Ua=le,m=(J,re,se)=>(...we)=>{let _e=tt,P=re?.();we=J(...we);let ue=re?.();return P!==ue&&(J=ue,se(P),re=se=null),tt!=_e?xr():we},v=J=>async(...re)=>{try{if(r.Ea)throw Error(\"Session already started\");let se=r.Ea={Va:re[0],errors:[]},we=await J(...re);if(r.Ea!==se)throw Error(\"Session mismatch\");d.flush();let _e=se.errors;if(0<_e.length){let P=await Promise.all(_e);if(P=P.filter(ue=>ue),0r._OrtRun,J=>r._OrtRun=J)),r._OrtRunWithBinding=v(m(r._OrtRunWithBinding,()=>r._OrtRunWithBinding,J=>r._OrtRunWithBinding=J)),r._OrtBindInput=m(r._OrtBindInput,()=>r._OrtBindInput,J=>r._OrtBindInput=J),r.jsepRegisterBuffer=(J,re,se,we)=>d.registerBuffer(J,re,se,we),r.jsepUnregisterBuffers=J=>{d.unregisterBuffers(J)},r.jsepGetBuffer=J=>d.getBuffer(J),r.jsepCreateDownloader=(J,re,se)=>d.createDownloader(J,re,se)};var s=Object.assign({},r),u=\"./this.program\",l=(d,m)=>{throw m},a=typeof window==\"object\",p=typeof importScripts==\"function\",h=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\",g=\"\",b,w,y;if(h){var _=(yn(),Ht(gn)),I=(wn(),Ht(bn));g=p?I.dirname(g)+\"/\":__dirname+\"/\",b=(d,m)=>(d=We(d)?new URL(d):I.normalize(d),_.readFileSync(d,m?void 0:\"utf8\")),y=d=>(d=b(d,!0),d.buffer||(d=new Uint8Array(d)),d),w=(d,m,v,C=!0)=>{d=We(d)?new URL(d):I.normalize(d),_.readFile(d,C?void 0:\"utf8\",(B,H)=>{B?v(B):m(C?H.buffer:H)})},!r.thisProgram&&1{throw process.exitCode=d,m},r.inspect=()=>\"[Emscripten Module object]\"}else(a||p)&&(p?g=self.location.href:typeof document<\"u\"&&document.currentScript&&(g=document.currentScript.src),e&&(g=e),g.indexOf(\"blob:\")!==0?g=g.substr(0,g.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1):g=\"\",b=d=>{var m=new XMLHttpRequest;return m.open(\"GET\",d,!1),m.send(null),m.responseText},p&&(y=d=>{var m=new XMLHttpRequest;return m.open(\"GET\",d,!1),m.responseType=\"arraybuffer\",m.send(null),new Uint8Array(m.response)}),w=(d,m,v)=>{var C=new XMLHttpRequest;C.open(\"GET\",d,!0),C.responseType=\"arraybuffer\",C.onload=()=>{C.status==200||C.status==0&&C.response?m(C.response):v()},C.onerror=v,C.send(null)});var $=console.log.bind(console),x=console.error.bind(console);Object.assign(r,s),s=null,typeof WebAssembly!=\"object\"&&he(\"no native wasm support detected\");var E,A=!1,z,R,V,T,N,te,Y;function K(){var d=E.buffer;r.HEAP8=R=new Int8Array(d),r.HEAP16=new Int16Array(d),r.HEAPU8=V=new Uint8Array(d),r.HEAPU16=new Uint16Array(d),r.HEAP32=T=new Int32Array(d),r.HEAPU32=N=new Uint32Array(d),r.HEAPF32=te=new Float32Array(d),r.HEAPF64=Y=new Float64Array(d)}var Q=[],Z=[],Ee=[],Pe=0,fe=null,Ie=null;function he(d){throw d=\"Aborted(\"+d+\")\",x(d),A=!0,z=1,d=new WebAssembly.RuntimeError(d+\". Build with -sASSERTIONS for more info.\"),n(d),d}var ye=d=>d.startsWith(\"data:application/octet-stream;base64,\"),We=d=>d.startsWith(\"file://\"),De;if(De=\"ort-wasm-simd.wasm\",!ye(De)){var Ge=De;De=r.locateFile?r.locateFile(Ge,g):g+Ge}function G(d){if(y)return y(d);throw\"both async and sync fetching of the wasm failed\"}function ee(d){if(a||p){if(typeof fetch==\"function\"&&!We(d))return fetch(d,{credentials:\"same-origin\"}).then(m=>{if(!m.ok)throw\"failed to load wasm binary file at \\'\"+d+\"\\'\";return m.arrayBuffer()}).catch(()=>G(d));if(w)return new Promise((m,v)=>{w(d,C=>m(new Uint8Array(C)),v)})}return Promise.resolve().then(()=>G(d))}function be(d,m,v){return ee(d).then(C=>WebAssembly.instantiate(C,m)).then(C=>C).then(v,C=>{x(`failed to asynchronously prepare wasm: ${C}`),he(C)})}function et(d,m){var v=De;return typeof WebAssembly.instantiateStreaming!=\"function\"||ye(v)||We(v)||h||typeof fetch!=\"function\"?be(v,d,m):fetch(v,{credentials:\"same-origin\"}).then(C=>WebAssembly.instantiateStreaming(C,d).then(m,function(B){return x(`wasm streaming compile failed: ${B}`),x(\"falling back to ArrayBuffer instantiation\"),be(v,d,m)}))}var ze,Ue={931056:(d,m,v,C)=>{if(typeof r>\"u\"||!r.Fa)return 1;if(d=qe(d>>>0),d.startsWith(\"./\")&&(d=d.substring(2)),d=r.Fa.get(d),!d)return 2;if(m>>>=0,v>>>=0,m+v>d.byteLength)return 3;try{return V.set(d.subarray(m,m+v),C>>>0>>>0),0}catch{return 4}},931557:d=>r.Qa(d),931590:d=>r.Sa(d),931622:(d,m,v)=>{r.La(d,m,v,!0)},931661:(d,m,v)=>{r.La(d,m,v)},931694:d=>{r.sa(\"Abs\",d,void 0)},931745:d=>{r.sa(\"Neg\",d,void 0)},931796:d=>{r.sa(\"Floor\",d,void 0)},931849:d=>{r.sa(\"Ceil\",d,void 0)},931901:d=>{r.sa(\"Reciprocal\",d,void 0)},931959:d=>{r.sa(\"Sqrt\",d,void 0)},932011:d=>{r.sa(\"Exp\",d,void 0)},932062:d=>{r.sa(\"Erf\",d,void 0)},932113:d=>{r.sa(\"Sigmoid\",d,void 0)},932168:d=>{r.sa(\"Log\",d,void 0)},932219:d=>{r.sa(\"Sin\",d,void 0)},932270:d=>{r.sa(\"Cos\",d,void 0)},932321:d=>{r.sa(\"Tan\",d,void 0)},932372:d=>{r.sa(\"Asin\",d,void 0)},932424:d=>{r.sa(\"Acos\",d,void 0)},932476:d=>{r.sa(\"Atan\",d,void 0)},932528:d=>{r.sa(\"Sinh\",d,void 0)},932580:d=>{r.sa(\"Cosh\",d,void 0)},932632:d=>{r.sa(\"Asinh\",d,void 0)},932685:d=>{r.sa(\"Acosh\",d,void 0)},932738:d=>{r.sa(\"Atanh\",d,void 0)},932791:d=>{r.sa(\"Tanh\",d,void 0)},932843:d=>{r.sa(\"Not\",d,void 0)},932894:(d,m,v)=>{r.sa(\"Clip\",d,{min:m,max:v})},932963:d=>{r.sa(\"Clip\",d,void 0)},933015:(d,m)=>{r.sa(\"Elu\",d,{alpha:m})},933073:d=>{r.sa(\"Relu\",d,void 0)},933125:(d,m)=>{r.sa(\"LeakyRelu\",d,{alpha:m})},933189:(d,m)=>{r.sa(\"ThresholdedRelu\",d,{alpha:m})},933259:(d,m)=>{r.sa(\"Cast\",d,{to:m})},933317:d=>{r.sa(\"Add\",d,void 0)},933368:d=>{r.sa(\"Sub\",d,void 0)},933419:d=>{r.sa(\"Mul\",d,void 0)},933470:d=>{r.sa(\"Div\",d,void 0)},933521:d=>{r.sa(\"Pow\",d,void 0)},933572:d=>{r.sa(\"Equal\",d,void 0)},933625:d=>{r.sa(\"Greater\",d,void 0)},933680:d=>{r.sa(\"GreaterOrEqual\",d,void 0)},933742:d=>{r.sa(\"Less\",d,void 0)},933794:d=>{r.sa(\"LessOrEqual\",d,void 0)},933853:(d,m,v,C,B)=>{r.sa(\"ReduceMean\",d,{keepDims:!!m,noopWithEmptyAxes:!!v,axes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},934012:(d,m,v,C,B)=>{r.sa(\"ReduceMax\",d,{keepDims:!!m,noopWithEmptyAxes:!!v,axes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},934170:(d,m,v,C,B)=>{r.sa(\"ReduceMin\",d,{keepDims:!!m,noopWithEmptyAxes:!!v,axes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},934328:(d,m,v,C,B)=>{r.sa(\"ReduceProd\",d,{keepDims:!!m,noopWithEmptyAxes:!!v,axes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},934487:(d,m,v,C,B)=>{r.sa(\"ReduceSum\",d,{keepDims:!!m,noopWithEmptyAxes:!!v,axes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},934645:(d,m,v,C,B)=>{r.sa(\"ReduceL1\",d,{keepDims:!!m,noopWithEmptyAxes:!!v,axes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},934802:(d,m,v,C,B)=>{r.sa(\"ReduceL2\",d,{keepDims:!!m,noopWithEmptyAxes:!!v,axes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},934959:(d,m,v,C,B)=>{r.sa(\"ReduceLogSum\",d,{keepDims:!!m,noopWithEmptyAxes:!!v,axes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},935120:(d,m,v,C,B)=>{r.sa(\"ReduceSumSquare\",d,{keepDims:!!m,noopWithEmptyAxes:!!v,axes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},935284:(d,m,v,C,B)=>{r.sa(\"ReduceLogSumExp\",d,{keepDims:!!m,noopWithEmptyAxes:!!v,axes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},935448:d=>{r.sa(\"Where\",d,void 0)},935501:(d,m,v)=>{r.sa(\"Transpose\",d,{perm:m?Array.from(T.subarray(m>>>0,v>>>0)):[]})},935609:(d,m,v,C,B,H,q,le,J,re,se,we,_e,P,ue)=>{r.sa(\"ConvTranspose\",d,{format:J?\"NHWC\":\"NCHW\",autoPad:m,dilations:[v],group:C,kernel_shape:[B],pads:[H,q],strides:[le],wIsConst:()=>!!R[re>>>0],outputPadding:se?Array.from(T.subarray(se>>>0,we>>>0)):[],outputShape:_e?Array.from(T.subarray(_e>>>0,P>>>0)):[],activation:qe(ue)})},936011:(d,m,v,C,B,H,q,le,J,re,se,we,_e,P)=>{r.sa(\"ConvTranspose\",d,{format:le?\"NHWC\":\"NCHW\",autoPad:m,dilations:Array.from(T.subarray(v>>>0,(v>>>0)+2>>>0)),group:C,kernelShape:Array.from(T.subarray(B>>>0,(B>>>0)+2>>>0)),pads:Array.from(T.subarray(H>>>0,(H>>>0)+4>>>0)),strides:Array.from(T.subarray(q>>>0,(q>>>0)+2>>>0)),wIsConst:()=>!!R[J>>>0],outputPadding:re?Array.from(T.subarray(re>>>0,se>>>0)):[],outputShape:we?Array.from(T.subarray(we>>>0,_e>>>0)):[],activation:qe(P)})},936576:(d,m,v,C,B,H,q,le,J,re,se,we,_e,P,ue)=>{r.sa(\"ConvTranspose\",d,{format:J?\"NHWC\":\"NCHW\",autoPad:m,dilations:[v],group:C,kernel_shape:[B],pads:[H,q],strides:[le],wIsConst:()=>!!R[re>>>0],outputPadding:se?Array.from(T.subarray(se>>>0,we>>>0)):[],outputShape:_e?Array.from(T.subarray(_e>>>0,P>>>0)):[],activation:qe(ue)})},936978:(d,m,v,C,B,H,q,le,J,re,se,we,_e,P)=>{r.sa(\"ConvTranspose\",d,{format:le?\"NHWC\":\"NCHW\",autoPad:m,dilations:Array.from(T.subarray(v>>>0,(v>>>0)+2>>>0)),group:C,kernelShape:Array.from(T.subarray(B>>>0,(B>>>0)+2>>>0)),pads:Array.from(T.subarray(H>>>0,(H>>>0)+4>>>0)),strides:Array.from(T.subarray(q>>>0,(q>>>0)+2>>>0)),wIsConst:()=>!!R[J>>>0],outputPadding:re?Array.from(T.subarray(re>>>0,se>>>0)):[],outputShape:we?Array.from(T.subarray(we>>>0,_e>>>0)):[],activation:qe(P)})},937543:(d,m)=>{r.sa(\"GlobalAveragePool\",d,{format:m?\"NHWC\":\"NCHW\"})},937634:(d,m,v,C,B,H,q,le,J,re,se,we,_e,P,ue,Se)=>{r.sa(\"AveragePool\",d,{format:Se?\"NHWC\":\"NCHW\",auto_pad:m,ceil_mode:v,count_include_pad:C,storage_order:B,dilations:[H,q],kernel_shape:[le,J],pads:[re,se,we,_e],strides:[P,ue]})},937918:(d,m)=>{r.sa(\"GlobalAveragePool\",d,{format:m?\"NHWC\":\"NCHW\"})},938009:(d,m,v,C,B,H,q,le,J,re,se,we,_e,P,ue,Se)=>{r.sa(\"AveragePool\",d,{format:Se?\"NHWC\":\"NCHW\",auto_pad:m,ceil_mode:v,count_include_pad:C,storage_order:B,dilations:[H,q],kernel_shape:[le,J],pads:[re,se,we,_e],strides:[P,ue]})},938293:(d,m)=>{r.sa(\"GlobalMaxPool\",d,{format:m?\"NHWC\":\"NCHW\"})},938380:(d,m,v,C,B,H,q,le,J,re,se,we,_e,P,ue,Se)=>{r.sa(\"MaxPool\",d,{format:Se?\"NHWC\":\"NCHW\",auto_pad:m,ceil_mode:v,count_include_pad:C,storage_order:B,dilations:[H,q],kernel_shape:[le,J],pads:[re,se,we,_e],strides:[P,ue]})},938660:(d,m)=>{r.sa(\"GlobalMaxPool\",d,{format:m?\"NHWC\":\"NCHW\"})},938747:(d,m,v,C,B,H,q,le,J,re,se,we,_e,P,ue,Se)=>{r.sa(\"MaxPool\",d,{format:Se?\"NHWC\":\"NCHW\",auto_pad:m,ceil_mode:v,count_include_pad:C,storage_order:B,dilations:[H,q],kernel_shape:[le,J],pads:[re,se,we,_e],strides:[P,ue]})},939027:(d,m,v,C,B)=>{r.sa(\"Gemm\",d,{alpha:m,beta:v,transA:C,transB:B})},939131:d=>{r.sa(\"MatMul\",d,void 0)},939185:(d,m,v,C)=>{r.sa(\"ArgMax\",d,{keepDims:!!m,selectLastIndex:!!v,axis:C})},939293:(d,m,v,C)=>{r.sa(\"ArgMin\",d,{keepDims:!!m,selectLastIndex:!!v,axis:C})},939401:(d,m)=>{r.sa(\"Softmax\",d,{axis:m})},939464:(d,m)=>{r.sa(\"Concat\",d,{axis:m})},939524:(d,m,v,C,B)=>{r.sa(\"Split\",d,{axis:m,numOutputs:v,splitSizes:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},939664:d=>{r.sa(\"Expand\",d,void 0)},939718:(d,m)=>{r.sa(\"Gather\",d,{axis:Number(m)})},939789:(d,m)=>{r.sa(\"GatherElements\",d,{axis:Number(m)})},939868:(d,m,v,C,B,H,q,le,J,re,se)=>{r.sa(\"Resize\",d,{antialias:m,axes:v?Array.from(T.subarray(v>>>0,C>>>0)):[],coordinateTransformMode:qe(B),cubicCoeffA:H,excludeOutside:q,extrapolationValue:le,keepAspectRatioPolicy:qe(J),mode:qe(re),nearestMode:qe(se)})},940214:(d,m,v,C,B,H,q)=>{r.sa(\"Slice\",d,{starts:m?Array.from(T.subarray(m>>>0,v>>>0)):[],ends:C?Array.from(T.subarray(C>>>0,B>>>0)):[],axes:H?Array.from(T.subarray(H>>>0,q>>>0)):[]})},940430:d=>{r.sa(\"Tile\",d,void 0)},940482:(d,m,v)=>{r.sa(\"LayerNormalization\",d,{axis:Number(m),epsilon:Number(v)})},940589:(d,m,v)=>{r.sa(\"InstanceNormalization\",d,{epsilon:m,format:v?\"NHWC\":\"NCHW\"})},940703:(d,m,v)=>{r.sa(\"InstanceNormalization\",d,{epsilon:m,format:v?\"NHWC\":\"NCHW\"})},940817:d=>{r.sa(\"Range\",d,void 0)},940870:(d,m)=>{r.sa(\"Einsum\",d,{equation:qe(m)})},940951:(d,m,v,C,B)=>{r.sa(\"Pad\",d,{mode:m,value:v,pads:C?Array.from(T.subarray(C>>>0,B>>>0)):[]})},941078:(d,m,v,C,B,H)=>{r.sa(\"BatchNormalization\",d,{epsilon:m,momentum:v,spatial:!!B,trainingMode:!!C,format:H?\"NHWC\":\"NCHW\"})},941247:(d,m,v,C,B,H)=>{r.sa(\"BatchNormalization\",d,{epsilon:m,momentum:v,spatial:!!B,trainingMode:!!C,format:H?\"NHWC\":\"NCHW\"})},941416:(d,m,v)=>{r.sa(\"CumSum\",d,{exclusive:Number(m),reverse:Number(v)})},941513:(d,m,v,C,B,H,q,le,J)=>{r.sa(\"Attention\",d,{numHeads:m,isUnidirectional:v,maskFilterValue:C,scale:B,doRotary:H,qkvHiddenSizes:q?Array.from(T.subarray(Number(le)>>>0,Number(le)+q>>>0)):[],pastPresentShareBuffer:!!J})},941785:d=>{r.sa(\"Gelu\",d,void 0)},941837:(d,m,v,C,B,H)=>{r.sa(\"MultiHeadAttention\",d,{numHeads:m,isUnidirectional:v,maskFilterValue:C,scale:B,doRotary:H})},941996:d=>{r.sa(\"BiasAdd\",d,void 0)},942051:d=>{r.sa(\"BiasSplitGelu\",d,void 0)},942112:(d,m)=>{r.sa(\"SkipLayerNormalization\",d,{epsilon:m})},942193:(d,m,v,C,B,H,q,le,J,re,se,we,_e)=>{r.sa(\"Conv\",d,{format:J?\"NHWC\":\"NCHW\",auto_pad:m,dilations:[v],group:C,kernel_shape:[B],pads:H?Array.from(T.subarray(H>>>0,q>>>0)):[],strides:[le],w_is_const:()=>!!R[re>>>0],activation:qe(se),activation_params:we?Array.from(te.subarray(we>>>0,_e>>>0)):[]})},942563:(d,m,v,C,B,H,q,le,J,re,se,we,_e,P,ue,Se)=>{r.sa(\"Conv\",d,{format:we?\"NHWC\":\"NCHW\",auto_pad:m,dilations:[v,C],group:B,kernel_shape:[H,q],pads:le?Array.from(T.subarray(le>>>0,J>>>0)):[],strides:[re,se],w_is_const:()=>!!R[_e>>>0],activation:qe(P),activation_params:ue?Array.from(te.subarray(ue>>>0,Se>>>0)):[]})},942954:d=>{r.Ta(d)},942988:(d,m)=>r.Ua(d,m,r.Ea.Va,r.Ea.errors)};function Me(d){this.name=\"ExitStatus\",this.message=`Program terminated with exit(${d})`,this.status=d}function wt(d){this.Ja=d-24,this.Oa=function(m){N[this.Ja+4>>>2>>>0]=m},this.Na=function(m){N[this.Ja+8>>>2>>>0]=m},this.$a=function(m,v){this.Ma(),this.Oa(m),this.Na(v)},this.Ma=function(){N[this.Ja+16>>>2>>>0]=0}}var rt=0,Dt=0,At=typeof TextDecoder<\"u\"?new TextDecoder(\"utf8\"):void 0,vt=(d,m,v)=>{m>>>=0;var C=m+v;for(v=m;d[v]&&!(v>=C);)++v;if(16B?C+=String.fromCharCode(B):(B-=65536,C+=String.fromCharCode(55296|B>>10,56320|B&1023))}}else C+=String.fromCharCode(B)}return C},qe=(d,m)=>(d>>>=0)?vt(V,d,m):\"\",qt=d=>{for(var m=0,v=0;v=C?m++:2047>=C?m+=2:55296<=C&&57343>=C?(m+=4,++v):m+=3}return m},Mt=(d,m,v,C)=>{if(v>>>=0,!(0=q){var le=d.charCodeAt(++H);q=65536+((q&1023)<<10)|le&1023}if(127>=q){if(v>=C)break;m[v++>>>0]=q}else{if(2047>=q){if(v+1>=C)break;m[v++>>>0]=192|q>>6}else{if(65535>=q){if(v+2>=C)break;m[v++>>>0]=224|q>>12}else{if(v+3>=C)break;m[v++>>>0]=240|q>>18,m[v++>>>0]=128|q>>12&63}m[v++>>>0]=128|q>>6&63}m[v++>>>0]=128|q&63}}return m[v>>>0]=0,v-B},$t=d=>d%4===0&&(d%100!==0||d%400===0),yt=[0,31,60,91,121,152,182,213,244,274,305,335],zt=[0,31,59,90,120,151,181,212,243,273,304,334],Ut=d=>{var m=qt(d)+1,v=Wt(m);return v&&Mt(d,V,v,m),v},Tt=[],Kt=(d,m)=>{Tt.length=0;for(var v;v=V[d++>>>0];){var C=v!=105;C&=v!=112,m+=C&&m%8?4:0,Tt.push(v==112?N[m>>>2>>>0]:v==105?T[m>>>2>>>0]:Y[m>>>3>>>0]),m+=C?8:4}return Tt},nt={},Yt=()=>{if(!Vt){var d={USER:\"web_user\",LOGNAME:\"web_user\",PATH:\"/\",PWD:\"/\",HOME:\"/home/web_user\",LANG:(typeof navigator==\"object\"&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\",_:u||\"./this.program\"},m;for(m in nt)nt[m]===void 0?delete d[m]:d[m]=nt[m];var v=[];for(m in d)v.push(`${m}=${d[m]}`);Vt=v}return Vt},Vt,Ye=[null,[],[]],br=[31,29,31,30,31,30,31,31,30,31,30,31],Oe=[31,28,31,30,31,30,31,31,30,31,30,31];function wr(d){var m=Array(qt(d)+1);return Mt(d,m,0,m.length),m}function Nt(d,m,v,C){function B(P,ue,Se){for(P=typeof P==\"number\"?P.toString():P||\"\";P.lengthTr?-1:0st-P.getDate())ue-=st-P.getDate()+1,P.setDate(1),11>Se?P.setMonth(Se+1):(P.setMonth(0),P.setFullYear(P.getFullYear()+1));else{P.setDate(P.getDate()+ue);break}}return Se=new Date(P.getFullYear()+1,0,4),ue=le(new Date(P.getFullYear(),0,4)),Se=le(Se),0>=q(ue,P)?0>=q(Se,P)?P.getFullYear()+1:P.getFullYear():P.getFullYear()-1}d>>>=0,m>>>=0,v>>>=0,C>>>=0;var re=N[C+40>>>2>>>0];C={Ya:T[C>>>2>>>0],Xa:T[C+4>>>2>>>0],Ga:T[C+8>>>2>>>0],Ka:T[C+12>>>2>>>0],Ha:T[C+16>>>2>>>0],Da:T[C+20>>>2>>>0],xa:T[C+24>>>2>>>0],Ca:T[C+28>>>2>>>0],bb:T[C+32>>>2>>>0],Wa:T[C+36>>>2>>>0],Za:re?qe(re):\"\"},v=qe(v),re={\"%c\":\"%a %b %d %H:%M:%S %Y\",\"%D\":\"%m/%d/%y\",\"%F\":\"%Y-%m-%d\",\"%h\":\"%b\",\"%r\":\"%I:%M:%S %p\",\"%R\":\"%H:%M\",\"%T\":\"%H:%M:%S\",\"%x\":\"%m/%d/%y\",\"%X\":\"%H:%M:%S\",\"%Ec\":\"%c\",\"%EC\":\"%C\",\"%Ex\":\"%m/%d/%y\",\"%EX\":\"%H:%M:%S\",\"%Ey\":\"%y\",\"%EY\":\"%Y\",\"%Od\":\"%d\",\"%Oe\":\"%e\",\"%OH\":\"%H\",\"%OI\":\"%I\",\"%Om\":\"%m\",\"%OM\":\"%M\",\"%OS\":\"%S\",\"%Ou\":\"%u\",\"%OU\":\"%U\",\"%OV\":\"%V\",\"%Ow\":\"%w\",\"%OW\":\"%W\",\"%Oy\":\"%y\"};for(var se in re)v=v.replace(new RegExp(se,\"g\"),re[se]);var we=\"Sunday Monday Tuesday Wednesday Thursday Friday Saturday\".split(\" \"),_e=\"January February March April May June July August September October November December\".split(\" \");re={\"%a\":P=>we[P.xa].substring(0,3),\"%A\":P=>we[P.xa],\"%b\":P=>_e[P.Ha].substring(0,3),\"%B\":P=>_e[P.Ha],\"%C\":P=>H((P.Da+1900)/100|0,2),\"%d\":P=>H(P.Ka,2),\"%e\":P=>B(P.Ka,2,\" \"),\"%g\":P=>J(P).toString().substring(2),\"%G\":P=>J(P),\"%H\":P=>H(P.Ga,2),\"%I\":P=>(P=P.Ga,P==0?P=12:12{for(var ue=0,Se=0;Se<=P.Ha-1;ue+=($t(P.Da+1900)?br:Oe)[Se++]);return H(P.Ka+ue,3)},\"%m\":P=>H(P.Ha+1,2),\"%M\":P=>H(P.Xa,2),\"%n\":()=>`\\n`,\"%p\":P=>0<=P.Ga&&12>P.Ga?\"AM\":\"PM\",\"%S\":P=>H(P.Ya,2),\"%t\":()=>\"\t\",\"%u\":P=>P.xa||7,\"%U\":P=>H(Math.floor((P.Ca+7-P.xa)/7),2),\"%V\":P=>{var ue=Math.floor((P.Ca+7-(P.xa+6)%7)/7);if(2>=(P.xa+371-P.Ca-2)%7&&ue++,ue)ue==53&&(Se=(P.xa+371-P.Ca)%7,Se==4||Se==3&&$t(P.Da)||(ue=1));else{ue=52;var Se=(P.xa+7-P.Ca-1)%7;(Se==4||Se==5&&$t(P.Da%400-1))&&ue++}return H(ue,2)},\"%w\":P=>P.xa,\"%W\":P=>H(Math.floor((P.Ca+7-(P.xa+6)%7)/7),2),\"%y\":P=>(P.Da+1900).toString().substring(2),\"%Y\":P=>P.Da+1900,\"%z\":P=>{P=P.Wa;var ue=0<=P;return P=Math.abs(P)/60,(ue?\"+\":\"-\")+(\"0000\"+(P/60*100+P%60)).slice(-4)},\"%Z\":P=>P.Za,\"%%\":()=>\"%\"},v=v.replace(/%%/g,\"\\\\0\\\\0\");for(se in re)v.includes(se)&&(v=v.replace(new RegExp(se,\"g\"),re[se](C)));return v=v.replace(/\\\\0\\\\0/g,\"%\"),se=wr(v),se.length>m?0:(R.set(se,d>>>0),se.length-1)}var St=d=>{try{d()}catch(m){he(m)}};function un(){var d=ae,m={};for(let[v,C]of Object.entries(d))m[v]=typeof C==\"function\"?function(){bt.push(v);try{return C.apply(null,arguments)}finally{A||(bt.pop(),tt&&ot===1&&bt.length===0&&(ot=0,St(ir),typeof Fibers<\"u\"&&Fibers.cb()))}}:C;return m}var ot=0,tt=null,de=0,bt=[],Zt={},vr={},$r=0,Qt=null,Sr=[];function xr(){return new Promise((d,m)=>{Qt={resolve:d,reject:m}})}function _r(){var d=Wt(65548),m=d+12;N[d>>>2>>>0]=m,N[d+4>>>2>>>0]=m+65536,m=bt[0];var v=Zt[m];return v===void 0&&(v=$r++,Zt[m]=v,vr[v]=m),T[d+8>>>2>>>0]=v,d}function Cr(d){if(!A){if(ot===0){var m=!1,v=!1;d((C=0)=>{if(!A&&(de=C,m=!0,v)){ot=2,St(()=>sr(tt)),typeof Browser<\"u\"&&Browser.Ia.Pa&&Browser.Ia.resume(),C=!1;try{var B=(0,ae[vr[T[tt+8>>>2>>>0]]])()}catch(le){B=le,C=!0}var H=!1;if(!tt){var q=Qt;q&&(Qt=null,(C?q.reject:q.resolve)(B),H=!0)}if(C&&!H)throw B}}),v=!0,m||(ot=1,tt=_r(),typeof Browser<\"u\"&&Browser.Ia.Pa&&Browser.Ia.pause(),St(()=>ar(tt)))}else ot===2?(ot=0,St(ur),er(tt),tt=null,Sr.forEach(C=>{if(!A)try{C();try{z=z=C=z,r.onExit?.(C),A=!0,l(C,new Me(C))}catch(B){B instanceof Me||B==\"unwind\"||l(1,B)}}catch(B){B instanceof Me||B==\"unwind\"||l(1,B)}})):he(`invalid state: ${ot}`);return de}}function Xt(d){return Cr(m=>{d().then(m)})}var Ir={n:function(d,m,v){return Xt(async()=>{await r.Ra(d,m,v)})},a:function(d,m,v){throw d>>>=0,new wt(d).$a(m>>>0,v>>>0),rt=d,Dt++,rt},g:function(){return 0},J:function(){},A:function(){},C:function(){},L:function(){return 0},H:function(){},D:function(){},G:function(){},l:function(){},B:function(){},y:function(){},I:function(){},z:function(){},m:()=>1,q:function(d,m,v){d=m+2097152>>>0<4194305-!!d?(d>>>0)+4294967296*m:NaN,v>>>=0,d=new Date(1e3*d),T[v>>>2>>>0]=d.getUTCSeconds(),T[v+4>>>2>>>0]=d.getUTCMinutes(),T[v+8>>>2>>>0]=d.getUTCHours(),T[v+12>>>2>>>0]=d.getUTCDate(),T[v+16>>>2>>>0]=d.getUTCMonth(),T[v+20>>>2>>>0]=d.getUTCFullYear()-1900,T[v+24>>>2>>>0]=d.getUTCDay(),T[v+28>>>2>>>0]=(d.getTime()-Date.UTC(d.getUTCFullYear(),0,1,0,0,0,0))/864e5|0},r:function(d,m,v){d=m+2097152>>>0<4194305-!!d?(d>>>0)+4294967296*m:NaN,v>>>=0,d=new Date(1e3*d),T[v>>>2>>>0]=d.getSeconds(),T[v+4>>>2>>>0]=d.getMinutes(),T[v+8>>>2>>>0]=d.getHours(),T[v+12>>>2>>>0]=d.getDate(),T[v+16>>>2>>>0]=d.getMonth(),T[v+20>>>2>>>0]=d.getFullYear()-1900,T[v+24>>>2>>>0]=d.getDay(),T[v+28>>>2>>>0]=($t(d.getFullYear())?yt:zt)[d.getMonth()]+d.getDate()-1|0,T[v+36>>>2>>>0]=-(60*d.getTimezoneOffset()),m=new Date(d.getFullYear(),6,1).getTimezoneOffset();var C=new Date(d.getFullYear(),0,1).getTimezoneOffset();T[v+32>>>2>>>0]=(m!=C&&d.getTimezoneOffset()==Math.min(C,m))|0},s:function(d){d>>>=0;var m=new Date(T[d+20>>>2>>>0]+1900,T[d+16>>>2>>>0],T[d+12>>>2>>>0],T[d+8>>>2>>>0],T[d+4>>>2>>>0],T[d>>>2>>>0],0),v=T[d+32>>>2>>>0],C=m.getTimezoneOffset(),B=new Date(m.getFullYear(),6,1).getTimezoneOffset(),H=new Date(m.getFullYear(),0,1).getTimezoneOffset(),q=Math.min(H,B);return 0>v?T[d+32>>>2>>>0]=+(B!=H&&q==C):0>>2>>>0]=m.getDay(),T[d+28>>>2>>>0]=($t(m.getFullYear())?yt:zt)[m.getMonth()]+m.getDate()-1|0,T[d>>>2>>>0]=m.getSeconds(),T[d+4>>>2>>>0]=m.getMinutes(),T[d+8>>>2>>>0]=m.getHours(),T[d+12>>>2>>>0]=m.getDate(),T[d+16>>>2>>>0]=m.getMonth(),T[d+20>>>2>>>0]=m.getYear(),d=m.getTime(),isNaN(d)?(T[Jt()>>>2>>>0]=61,d=-1):d/=1e3,tr((ze=d,1<=+Math.abs(ze)?0>>0:~~+Math.ceil((ze-+(~~ze>>>0))/4294967296)>>>0:0)),d>>>0},o:function(){return-52},p:function(){},w:function(d,m,v){function C(J){return(J=J.toTimeString().match(/\\\\(([A-Za-z ]+)\\\\)$/))?J[1]:\"GMT\"}v>>>=0;var B=new Date().getFullYear(),H=new Date(B,0,1),q=new Date(B,6,1);B=H.getTimezoneOffset();var le=q.getTimezoneOffset();N[d>>>0>>>2>>>0]=60*Math.max(B,le),T[m>>>0>>>2>>>0]=+(B!=le),d=C(H),m=C(q),d=Ut(d),m=Ut(m),le>>2>>>0]=d,N[v+4>>>2>>>0]=m):(N[v>>>2>>>0]=m,N[v+4>>>2>>>0]=d)},e:()=>{he(\"\")},b:function(d,m,v){return d>>>=0,m=Kt(m>>>0,v>>>0),Ue[d].apply(null,m)},i:function(d,m,v){return d>>>=0,m=Kt(m>>>0,v>>>0),Ue[d].apply(null,m)},h:()=>Date.now(),x:function(){return 4294901760},c:()=>performance.now(),K:function(d,m,v){return m>>>=0,V.copyWithin(d>>>0>>>0,m>>>0,m+(v>>>0)>>>0)},u:function(d){d>>>=0;var m=V.length;if(4294901760=v;v*=2){var C=m*(1+.2/v);C=Math.min(C,d+100663296);var B=Math;C=Math.max(d,C);e:{B=(B.min.call(B,4294901760,C+(65536-C%65536)%65536)-E.buffer.byteLength+65535)/65536;try{E.grow(B),K();var H=1;break e}catch{}H=void 0}if(H)return!0}return!1},E:function(d,m){d>>>=0,m>>>=0;var v=0;return Yt().forEach((C,B)=>{var H=m+v;for(B=N[d+4*B>>>2>>>0]=H,H=0;H>>0>>>0]=C.charCodeAt(H);R[B>>>0>>>0]=0,v+=C.length+1}),0},F:function(d,m){d>>>=0,m>>>=0;var v=Yt();N[d>>>2>>>0]=v.length;var C=0;return v.forEach(B=>C+=B.length+1),N[m>>>2>>>0]=C,0},f:()=>52,k:function(){return 52},t:function(){return 70},j:function(d,m,v,C){m>>>=0,v>>>=0,C>>>=0;for(var B=0,H=0;H>>2>>>0],le=N[m+4>>>2>>>0];m+=8;for(var J=0;J>>0],se=Ye[d];re===0||re===10?((d===1?$:x)(vt(se,0)),se.length=0):se.push(re)}B+=le}return N[C>>>2>>>0]=B,0},v:Nt,d:function(d,m,v,C){return Nt(d>>>0,m>>>0,v>>>0,C>>>0)}},ae=function(){function d(v){return ae=v.exports,ae=un(),ae=Ar(),E=ae.M,K(),Z.unshift(ae.N),Pe--,Pe==0&&(fe!==null&&(clearInterval(fe),fe=null),Ie&&(v=Ie,Ie=null,v())),ae}var m={a:Ir};if(Pe++,r.instantiateWasm)try{return r.instantiateWasm(m,d)}catch(v){x(`Module.instantiateWasm callback failed with error: ${v}`),n(v)}return et(m,function(v){d(v.instance)}).catch(n),{}}();r._OrtInit=(d,m)=>(r._OrtInit=ae.O)(d,m),r._OrtGetLastError=(d,m)=>(r._OrtGetLastError=ae.P)(d,m),r._OrtCreateSessionOptions=(d,m,v,C,B,H,q,le,J,re)=>(r._OrtCreateSessionOptions=ae.Q)(d,m,v,C,B,H,q,le,J,re),r._OrtAppendExecutionProvider=(d,m)=>(r._OrtAppendExecutionProvider=ae.R)(d,m),r._OrtAddFreeDimensionOverride=(d,m,v)=>(r._OrtAddFreeDimensionOverride=ae.S)(d,m,v),r._OrtAddSessionConfigEntry=(d,m,v)=>(r._OrtAddSessionConfigEntry=ae.T)(d,m,v),r._OrtReleaseSessionOptions=d=>(r._OrtReleaseSessionOptions=ae.U)(d),r._OrtCreateSession=(d,m,v)=>(r._OrtCreateSession=ae.V)(d,m,v),r._OrtReleaseSession=d=>(r._OrtReleaseSession=ae.W)(d),r._OrtGetInputOutputCount=(d,m,v)=>(r._OrtGetInputOutputCount=ae.X)(d,m,v),r._OrtGetInputName=(d,m)=>(r._OrtGetInputName=ae.Y)(d,m),r._OrtGetOutputName=(d,m)=>(r._OrtGetOutputName=ae.Z)(d,m),r._OrtFree=d=>(r._OrtFree=ae._)(d),r._OrtCreateTensor=(d,m,v,C,B,H)=>(r._OrtCreateTensor=ae.$)(d,m,v,C,B,H),r._OrtGetTensorData=(d,m,v,C,B)=>(r._OrtGetTensorData=ae.aa)(d,m,v,C,B),r._OrtReleaseTensor=d=>(r._OrtReleaseTensor=ae.ba)(d),r._OrtCreateRunOptions=(d,m,v,C)=>(r._OrtCreateRunOptions=ae.ca)(d,m,v,C),r._OrtAddRunConfigEntry=(d,m,v)=>(r._OrtAddRunConfigEntry=ae.da)(d,m,v),r._OrtReleaseRunOptions=d=>(r._OrtReleaseRunOptions=ae.ea)(d),r._OrtCreateBinding=d=>(r._OrtCreateBinding=ae.fa)(d),r._OrtBindInput=(d,m,v)=>(r._OrtBindInput=ae.ga)(d,m,v),r._OrtBindOutput=(d,m,v,C)=>(r._OrtBindOutput=ae.ha)(d,m,v,C),r._OrtClearBoundOutputs=d=>(r._OrtClearBoundOutputs=ae.ia)(d),r._OrtReleaseBinding=d=>(r._OrtReleaseBinding=ae.ja)(d),r._OrtRunWithBinding=(d,m,v,C,B)=>(r._OrtRunWithBinding=ae.ka)(d,m,v,C,B),r._OrtRun=(d,m,v,C,B,H,q,le)=>(r._OrtRun=ae.la)(d,m,v,C,B,H,q,le),r._OrtEndProfiling=d=>(r._OrtEndProfiling=ae.ma)(d),r._JsepOutput=(d,m,v)=>(r._JsepOutput=ae.na)(d,m,v),r._JsepGetNodeName=d=>(r._JsepGetNodeName=ae.oa)(d);var Jt=()=>(Jt=ae.pa)(),Wt=r._malloc=d=>(Wt=r._malloc=ae.qa)(d),er=r._free=d=>(er=r._free=ae.ra)(d),tr=d=>(tr=ae.ta)(d),rr=()=>(rr=ae.ua)(),nr=d=>(nr=ae.va)(d),or=d=>(or=ae.wa)(d),ar=d=>(ar=ae.ya)(d),ir=()=>(ir=ae.za)(),sr=d=>(sr=ae.Aa)(d),ur=()=>(ur=ae.Ba)();r.___start_em_js=943100,r.___stop_em_js=943261;function Ar(){var d=ae;d=Object.assign({},d);var m=C=>()=>C()>>>0,v=C=>B=>C(B)>>>0;return d.pa=m(d.pa),d.qa=v(d.qa),d.ua=m(d.ua),d.wa=v(d.wa),d}r.stackAlloc=or,r.stackSave=rr,r.stackRestore=nr,r.UTF8ToString=qe,r.stringToUTF8=(d,m,v)=>Mt(d,V,m,v),r.lengthBytesUTF8=qt;var xt;Ie=function d(){xt||Et(),xt||(Ie=d)};function Et(){if(!(0_o)});var Ao=dr(()=>{});var To=dr(()=>{});var Eo={};Br(Eo,{cpus:()=>Qu});var Qu,Oo=j(()=>{Qu=void 0});var Ro=dr((ko,$n)=>{\"use strict\";var Po=(()=>{var e=typeof document<\"u\"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<\"u\"&&(e=e||__filename),function(t={}){function r(){return Q.buffer!=fe.buffer&&Ge(),fe}function o(){return Q.buffer!=fe.buffer&&Ge(),Ie}function n(){return Q.buffer!=fe.buffer&&Ge(),he}function s(){return Q.buffer!=fe.buffer&&Ge(),ye}function u(){return Q.buffer!=fe.buffer&&Ge(),We}function l(){return Q.buffer!=fe.buffer&&Ge(),De}var a=t,p,h;a.ready=new Promise((i,c)=>{p=i,h=c}),a.mountExternalData=(i,c)=>{(a.cb||(a.cb=new Map)).set(i,c)},a.unmountExternalData=()=>{delete a.cb},a.jsepInit=(i,c,f,S,O,D,W,ie)=>{a.Mb=i,a.wb=c,a.yb=f,a.kb=S,a.xb=O,a.Ea=D,a.zb=W,a.Ab=ie,c=(ne,oe,pe)=>(...xe)=>{let Te=ut,k=oe?.();xe=ne(...xe);let me=oe?.();return k!==me&&(ne=me,pe(k),oe=pe=null),ut!=Te?Mu():xe},f=ne=>async(...oe)=>{try{if(a.bb)throw Error(\"Session already started\");let pe=a.bb={Cb:oe[0],errors:[]},xe=await ne(...oe);if(a.bb!==pe)throw Error(\"Session mismatch\");i.flush();let Te=pe.errors;if(0me),0a._OrtRun,ne=>a._OrtRun=ne)),a._OrtRunWithBinding=f(c(a._OrtRunWithBinding,()=>a._OrtRunWithBinding,ne=>a._OrtRunWithBinding=ne)),a._OrtBindInput=c(a._OrtBindInput,()=>a._OrtBindInput,ne=>a._OrtBindInput=ne),a.jsepRegisterBuffer=(ne,oe,pe,xe)=>i.registerBuffer(ne,oe,pe,xe),a.jsepUnregisterBuffers=ne=>{i.unregisterBuffers(ne)},a.jsepGetBuffer=ne=>i.getBuffer(ne),a.jsepCreateDownloader=(ne,oe,pe)=>i.createDownloader(ne,oe,pe)};var g=Object.assign({},a),b=\"./this.program\",w=(i,c)=>{throw c},y=typeof window==\"object\",_=typeof importScripts==\"function\",I=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\",$=a.ENVIRONMENT_IS_PTHREAD||!1,x=\"\";function E(i){return a.locateFile?a.locateFile(i,x):x+i}var A,z,R;if(I){var V=(yn(),Ht(gn)),T=(wn(),Ht(bn));x=_?T.dirname(x)+\"/\":__dirname+\"/\",A=(c,f)=>(c=At(c)?new URL(c):T.normalize(c),V.readFileSync(c,f?void 0:\"utf8\")),R=c=>(c=A(c,!0),c.buffer||(c=new Uint8Array(c)),c),z=(c,f,S,O=!0)=>{c=At(c)?new URL(c):T.normalize(c),V.readFile(c,O?void 0:\"utf8\",(D,W)=>{D?S(D):f(O?W.buffer:W)})},!a.thisProgram&&1{throw process.exitCode=c,f},a.inspect=()=>\"[Emscripten Module object]\";let i;try{i=Ao()}catch(c){throw console.error(\\'The \"worker_threads\" module is not supported in this node.js build - perhaps a newer version is needed?\\'),c}global.Worker=i.Worker}else(y||_)&&(_?x=self.location.href:typeof document<\"u\"&&document.currentScript&&(x=document.currentScript.src),typeof e<\"u\"&&e&&(x=e),x.indexOf(\"blob:\")!==0?x=x.substr(0,x.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1):x=\"\",I||(A=i=>{var c=new XMLHttpRequest;return c.open(\"GET\",i,!1),c.send(null),c.responseText},_&&(R=i=>{var c=new XMLHttpRequest;return c.open(\"GET\",i,!1),c.responseType=\"arraybuffer\",c.send(null),new Uint8Array(c.response)}),z=(i,c,f)=>{var S=new XMLHttpRequest;S.open(\"GET\",i,!0),S.responseType=\"arraybuffer\",S.onload=()=>{S.status==200||S.status==0&&S.response?c(S.response):f()},S.onerror=f,S.send(null)}));I&&typeof performance>\"u\"&&(global.performance=To().performance);var N=console.log.bind(console),te=console.error.bind(console);I&&(N=(...i)=>V.writeSync(1,i.join(\" \")+`\\n`),te=(...i)=>V.writeSync(2,i.join(\" \")+`\\n`));var Y=N,K=te;Object.assign(a,g),g=null,typeof WebAssembly!=\"object\"&&rt(\"no native wasm support detected\");var Q,Z,Ee=!1,Pe,fe,Ie,he,ye,We,De;function Ge(){var i=Q.buffer;a.HEAP8=fe=new Int8Array(i),a.HEAP16=new Int16Array(i),a.HEAPU8=Ie=new Uint8Array(i),a.HEAPU16=new Uint16Array(i),a.HEAP32=he=new Int32Array(i),a.HEAPU32=ye=new Uint32Array(i),a.HEAPF32=We=new Float32Array(i),a.HEAPF64=De=new Float64Array(i)}var G=16777216;if($)Q=a.wasmMemory;else if(a.wasmMemory)Q=a.wasmMemory;else if(Q=new WebAssembly.Memory({initial:G/65536,maximum:65536,shared:!0}),!(Q.buffer instanceof SharedArrayBuffer))throw K(\"requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag\"),I&&K(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)\"),Error(\"bad memory\");Ge(),G=Q.buffer.byteLength;var ee=[],be=[],et=[],ze=0,Ue=null,Me=null;function wt(){if(ze--,ze==0&&(Ue!==null&&(clearInterval(Ue),Ue=null),Me)){var i=Me;Me=null,i()}}function rt(i){throw i=\"Aborted(\"+i+\")\",K(i),Ee=!0,Pe=1,i=new WebAssembly.RuntimeError(i+\". Build with -sASSERTIONS for more info.\"),h(i),i}var Dt=i=>i.startsWith(\"data:application/octet-stream;base64,\"),At=i=>i.startsWith(\"file://\"),vt;vt=\"ort-wasm-simd-threaded.wasm\",Dt(vt)||(vt=E(vt));function qe(i){if(R)return R(i);throw\"both async and sync fetching of the wasm failed\"}function qt(i){if(y||_){if(typeof fetch==\"function\"&&!At(i))return fetch(i,{credentials:\"same-origin\"}).then(c=>{if(!c.ok)throw\"failed to load wasm binary file at \\'\"+i+\"\\'\";return c.arrayBuffer()}).catch(()=>qe(i));if(z)return new Promise((c,f)=>{z(i,S=>c(new Uint8Array(S)),f)})}return Promise.resolve().then(()=>qe(i))}function Mt(i,c,f){return qt(i).then(S=>WebAssembly.instantiate(S,c)).then(S=>S).then(f,S=>{K(`failed to asynchronously prepare wasm: ${S}`),rt(S)})}function $t(i,c){var f=vt;return typeof WebAssembly.instantiateStreaming!=\"function\"||Dt(f)||At(f)||I||typeof fetch!=\"function\"?Mt(f,i,c):fetch(f,{credentials:\"same-origin\"}).then(S=>WebAssembly.instantiateStreaming(S,i).then(c,function(O){return K(`wasm streaming compile failed: ${O}`),K(\"falling back to ArrayBuffer instantiation\"),Mt(f,i,c)}))}var yt,zt={932428:(i,c,f,S)=>{if(typeof a>\"u\"||!a.cb)return 1;if(i=Ye(i>>>0),i.startsWith(\"./\")&&(i=i.substring(2)),i=a.cb.get(i),!i)return 2;if(c>>>=0,f>>>=0,S>>>=0,c+f>i.byteLength)return 3;try{return o().set(i.subarray(c,c+f),S>>>0),0}catch{return 4}},932929:i=>a.wb(i),932962:i=>a.yb(i),932994:(i,c,f)=>{a.kb(i,c,f,!0)},933033:(i,c,f)=>{a.kb(i,c,f)},933066:i=>{a.Ea(\"Abs\",i,void 0)},933117:i=>{a.Ea(\"Neg\",i,void 0)},933168:i=>{a.Ea(\"Floor\",i,void 0)},933221:i=>{a.Ea(\"Ceil\",i,void 0)},933273:i=>{a.Ea(\"Reciprocal\",i,void 0)},933331:i=>{a.Ea(\"Sqrt\",i,void 0)},933383:i=>{a.Ea(\"Exp\",i,void 0)},933434:i=>{a.Ea(\"Erf\",i,void 0)},933485:i=>{a.Ea(\"Sigmoid\",i,void 0)},933540:i=>{a.Ea(\"Log\",i,void 0)},933591:i=>{a.Ea(\"Sin\",i,void 0)},933642:i=>{a.Ea(\"Cos\",i,void 0)},933693:i=>{a.Ea(\"Tan\",i,void 0)},933744:i=>{a.Ea(\"Asin\",i,void 0)},933796:i=>{a.Ea(\"Acos\",i,void 0)},933848:i=>{a.Ea(\"Atan\",i,void 0)},933900:i=>{a.Ea(\"Sinh\",i,void 0)},933952:i=>{a.Ea(\"Cosh\",i,void 0)},934004:i=>{a.Ea(\"Asinh\",i,void 0)},934057:i=>{a.Ea(\"Acosh\",i,void 0)},934110:i=>{a.Ea(\"Atanh\",i,void 0)},934163:i=>{a.Ea(\"Tanh\",i,void 0)},934215:i=>{a.Ea(\"Not\",i,void 0)},934266:(i,c,f)=>{a.Ea(\"Clip\",i,{min:c,max:f})},934335:i=>{a.Ea(\"Clip\",i,void 0)},934387:(i,c)=>{a.Ea(\"Elu\",i,{alpha:c})},934445:i=>{a.Ea(\"Relu\",i,void 0)},934497:(i,c)=>{a.Ea(\"LeakyRelu\",i,{alpha:c})},934561:(i,c)=>{a.Ea(\"ThresholdedRelu\",i,{alpha:c})},934631:(i,c)=>{a.Ea(\"Cast\",i,{to:c})},934689:i=>{a.Ea(\"Add\",i,void 0)},934740:i=>{a.Ea(\"Sub\",i,void 0)},934791:i=>{a.Ea(\"Mul\",i,void 0)},934842:i=>{a.Ea(\"Div\",i,void 0)},934893:i=>{a.Ea(\"Pow\",i,void 0)},934944:i=>{a.Ea(\"Equal\",i,void 0)},934997:i=>{a.Ea(\"Greater\",i,void 0)},935052:i=>{a.Ea(\"GreaterOrEqual\",i,void 0)},935114:i=>{a.Ea(\"Less\",i,void 0)},935166:i=>{a.Ea(\"LessOrEqual\",i,void 0)},935225:(i,c,f,S,O)=>{a.Ea(\"ReduceMean\",i,{keepDims:!!c,noopWithEmptyAxes:!!f,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},935384:(i,c,f,S,O)=>{a.Ea(\"ReduceMax\",i,{keepDims:!!c,noopWithEmptyAxes:!!f,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},935542:(i,c,f,S,O)=>{a.Ea(\"ReduceMin\",i,{keepDims:!!c,noopWithEmptyAxes:!!f,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},935700:(i,c,f,S,O)=>{a.Ea(\"ReduceProd\",i,{keepDims:!!c,noopWithEmptyAxes:!!f,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},935859:(i,c,f,S,O)=>{a.Ea(\"ReduceSum\",i,{keepDims:!!c,noopWithEmptyAxes:!!f,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},936017:(i,c,f,S,O)=>{a.Ea(\"ReduceL1\",i,{keepDims:!!c,noopWithEmptyAxes:!!f,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},936174:(i,c,f,S,O)=>{a.Ea(\"ReduceL2\",i,{keepDims:!!c,noopWithEmptyAxes:!!f,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},936331:(i,c,f,S,O)=>{a.Ea(\"ReduceLogSum\",i,{keepDims:!!c,noopWithEmptyAxes:!!f,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},936492:(i,c,f,S,O)=>{a.Ea(\"ReduceSumSquare\",i,{keepDims:!!c,noopWithEmptyAxes:!!f,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},936656:(i,c,f,S,O)=>{a.Ea(\"ReduceLogSumExp\",i,{keepDims:!!c,noopWithEmptyAxes:!!f,axes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},936820:i=>{a.Ea(\"Where\",i,void 0)},936873:(i,c,f)=>{a.Ea(\"Transpose\",i,{perm:c?Array.from(n().subarray(c>>>0,f>>>0)):[]})},936981:(i,c,f,S,O,D,W,ie,ne,oe,pe,xe,Te,k,me)=>{a.Ea(\"ConvTranspose\",i,{format:ne?\"NHWC\":\"NCHW\",autoPad:c,dilations:[f],group:S,kernel_shape:[O],pads:[D,W],strides:[ie],wIsConst:()=>!!r()[oe>>>0],outputPadding:pe?Array.from(n().subarray(pe>>>0,xe>>>0)):[],outputShape:Te?Array.from(n().subarray(Te>>>0,k>>>0)):[],activation:Ye(me)})},937383:(i,c,f,S,O,D,W,ie,ne,oe,pe,xe,Te,k)=>{a.Ea(\"ConvTranspose\",i,{format:ie?\"NHWC\":\"NCHW\",autoPad:c,dilations:Array.from(n().subarray(f>>>0,(f>>>0)+2>>>0)),group:S,kernelShape:Array.from(n().subarray(O>>>0,(O>>>0)+2>>>0)),pads:Array.from(n().subarray(D>>>0,(D>>>0)+4>>>0)),strides:Array.from(n().subarray(W>>>0,(W>>>0)+2>>>0)),wIsConst:()=>!!r()[ne>>>0],outputPadding:oe?Array.from(n().subarray(oe>>>0,pe>>>0)):[],outputShape:xe?Array.from(n().subarray(xe>>>0,Te>>>0)):[],activation:Ye(k)})},937948:(i,c,f,S,O,D,W,ie,ne,oe,pe,xe,Te,k,me)=>{a.Ea(\"ConvTranspose\",i,{format:ne?\"NHWC\":\"NCHW\",autoPad:c,dilations:[f],group:S,kernel_shape:[O],pads:[D,W],strides:[ie],wIsConst:()=>!!r()[oe>>>0],outputPadding:pe?Array.from(n().subarray(pe>>>0,xe>>>0)):[],outputShape:Te?Array.from(n().subarray(Te>>>0,k>>>0)):[],activation:Ye(me)})},938350:(i,c,f,S,O,D,W,ie,ne,oe,pe,xe,Te,k)=>{a.Ea(\"ConvTranspose\",i,{format:ie?\"NHWC\":\"NCHW\",autoPad:c,dilations:Array.from(n().subarray(f>>>0,(f>>>0)+2>>>0)),group:S,kernelShape:Array.from(n().subarray(O>>>0,(O>>>0)+2>>>0)),pads:Array.from(n().subarray(D>>>0,(D>>>0)+4>>>0)),strides:Array.from(n().subarray(W>>>0,(W>>>0)+2>>>0)),wIsConst:()=>!!r()[ne>>>0],outputPadding:oe?Array.from(n().subarray(oe>>>0,pe>>>0)):[],outputShape:xe?Array.from(n().subarray(xe>>>0,Te>>>0)):[],activation:Ye(k)})},938915:(i,c)=>{a.Ea(\"GlobalAveragePool\",i,{format:c?\"NHWC\":\"NCHW\"})},939006:(i,c,f,S,O,D,W,ie,ne,oe,pe,xe,Te,k,me,Ce)=>{a.Ea(\"AveragePool\",i,{format:Ce?\"NHWC\":\"NCHW\",auto_pad:c,ceil_mode:f,count_include_pad:S,storage_order:O,dilations:[D,W],kernel_shape:[ie,ne],pads:[oe,pe,xe,Te],strides:[k,me]})},939290:(i,c)=>{a.Ea(\"GlobalAveragePool\",i,{format:c?\"NHWC\":\"NCHW\"})},939381:(i,c,f,S,O,D,W,ie,ne,oe,pe,xe,Te,k,me,Ce)=>{a.Ea(\"AveragePool\",i,{format:Ce?\"NHWC\":\"NCHW\",auto_pad:c,ceil_mode:f,count_include_pad:S,storage_order:O,dilations:[D,W],kernel_shape:[ie,ne],pads:[oe,pe,xe,Te],strides:[k,me]})},939665:(i,c)=>{a.Ea(\"GlobalMaxPool\",i,{format:c?\"NHWC\":\"NCHW\"})},939752:(i,c,f,S,O,D,W,ie,ne,oe,pe,xe,Te,k,me,Ce)=>{a.Ea(\"MaxPool\",i,{format:Ce?\"NHWC\":\"NCHW\",auto_pad:c,ceil_mode:f,count_include_pad:S,storage_order:O,dilations:[D,W],kernel_shape:[ie,ne],pads:[oe,pe,xe,Te],strides:[k,me]})},940032:(i,c)=>{a.Ea(\"GlobalMaxPool\",i,{format:c?\"NHWC\":\"NCHW\"})},940119:(i,c,f,S,O,D,W,ie,ne,oe,pe,xe,Te,k,me,Ce)=>{a.Ea(\"MaxPool\",i,{format:Ce?\"NHWC\":\"NCHW\",auto_pad:c,ceil_mode:f,count_include_pad:S,storage_order:O,dilations:[D,W],kernel_shape:[ie,ne],pads:[oe,pe,xe,Te],strides:[k,me]})},940399:(i,c,f,S,O)=>{a.Ea(\"Gemm\",i,{alpha:c,beta:f,transA:S,transB:O})},940503:i=>{a.Ea(\"MatMul\",i,void 0)},940557:(i,c,f,S)=>{a.Ea(\"ArgMax\",i,{keepDims:!!c,selectLastIndex:!!f,axis:S})},940665:(i,c,f,S)=>{a.Ea(\"ArgMin\",i,{keepDims:!!c,selectLastIndex:!!f,axis:S})},940773:(i,c)=>{a.Ea(\"Softmax\",i,{axis:c})},940836:(i,c)=>{a.Ea(\"Concat\",i,{axis:c})},940896:(i,c,f,S,O)=>{a.Ea(\"Split\",i,{axis:c,numOutputs:f,splitSizes:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},941036:i=>{a.Ea(\"Expand\",i,void 0)},941090:(i,c)=>{a.Ea(\"Gather\",i,{axis:Number(c)})},941161:(i,c)=>{a.Ea(\"GatherElements\",i,{axis:Number(c)})},941240:(i,c,f,S,O,D,W,ie,ne,oe,pe)=>{a.Ea(\"Resize\",i,{antialias:c,axes:f?Array.from(n().subarray(f>>>0,S>>>0)):[],coordinateTransformMode:Ye(O),cubicCoeffA:D,excludeOutside:W,extrapolationValue:ie,keepAspectRatioPolicy:Ye(ne),mode:Ye(oe),nearestMode:Ye(pe)})},941586:(i,c,f,S,O,D,W)=>{a.Ea(\"Slice\",i,{starts:c?Array.from(n().subarray(c>>>0,f>>>0)):[],ends:S?Array.from(n().subarray(S>>>0,O>>>0)):[],axes:D?Array.from(n().subarray(D>>>0,W>>>0)):[]})},941802:i=>{a.Ea(\"Tile\",i,void 0)},941854:(i,c,f)=>{a.Ea(\"LayerNormalization\",i,{axis:Number(c),epsilon:Number(f)})},941961:(i,c,f)=>{a.Ea(\"InstanceNormalization\",i,{epsilon:c,format:f?\"NHWC\":\"NCHW\"})},942075:(i,c,f)=>{a.Ea(\"InstanceNormalization\",i,{epsilon:c,format:f?\"NHWC\":\"NCHW\"})},942189:i=>{a.Ea(\"Range\",i,void 0)},942242:(i,c)=>{a.Ea(\"Einsum\",i,{equation:Ye(c)})},942323:(i,c,f,S,O)=>{a.Ea(\"Pad\",i,{mode:c,value:f,pads:S?Array.from(n().subarray(S>>>0,O>>>0)):[]})},942450:(i,c,f,S,O,D)=>{a.Ea(\"BatchNormalization\",i,{epsilon:c,momentum:f,spatial:!!O,trainingMode:!!S,format:D?\"NHWC\":\"NCHW\"})},942619:(i,c,f,S,O,D)=>{a.Ea(\"BatchNormalization\",i,{epsilon:c,momentum:f,spatial:!!O,trainingMode:!!S,format:D?\"NHWC\":\"NCHW\"})},942788:(i,c,f)=>{a.Ea(\"CumSum\",i,{exclusive:Number(c),reverse:Number(f)})},942885:(i,c,f,S,O,D,W,ie,ne)=>{a.Ea(\"Attention\",i,{numHeads:c,isUnidirectional:f,maskFilterValue:S,scale:O,doRotary:D,qkvHiddenSizes:W?Array.from(n().subarray(Number(ie)>>>0,Number(ie)+W>>>0)):[],pastPresentShareBuffer:!!ne})},943157:i=>{a.Ea(\"Gelu\",i,void 0)},943209:(i,c,f,S,O,D)=>{a.Ea(\"MultiHeadAttention\",i,{numHeads:c,isUnidirectional:f,maskFilterValue:S,scale:O,doRotary:D})},943368:i=>{a.Ea(\"BiasAdd\",i,void 0)},943423:i=>{a.Ea(\"BiasSplitGelu\",i,void 0)},943484:(i,c)=>{a.Ea(\"SkipLayerNormalization\",i,{epsilon:c})},943565:(i,c,f,S,O,D,W,ie,ne,oe,pe,xe,Te)=>{a.Ea(\"Conv\",i,{format:ne?\"NHWC\":\"NCHW\",auto_pad:c,dilations:[f],group:S,kernel_shape:[O],pads:D?Array.from(n().subarray(D>>>0,W>>>0)):[],strides:[ie],w_is_const:()=>!!r()[oe>>>0],activation:Ye(pe),activation_params:xe?Array.from(u().subarray(xe>>>0,Te>>>0)):[]})},943935:(i,c,f,S,O,D,W,ie,ne,oe,pe,xe,Te,k,me,Ce)=>{a.Ea(\"Conv\",i,{format:xe?\"NHWC\":\"NCHW\",auto_pad:c,dilations:[f,S],group:O,kernel_shape:[D,W],pads:ie?Array.from(n().subarray(ie>>>0,ne>>>0)):[],strides:[oe,pe],w_is_const:()=>!!r()[Te>>>0],activation:Ye(k),activation_params:me?Array.from(u().subarray(me>>>0,Ce>>>0)):[]})},944326:i=>{a.zb(i)},944360:(i,c)=>a.Ab(i,c,a.bb.Cb,a.bb.errors)};function Ut(i){this.name=\"ExitStatus\",this.message=`Program terminated with exit(${i})`,this.status=i}var Tt=i=>{i.terminate(),i.onmessage=()=>{}},Kt=i=>{de.Ya.length==0&&(ot(),de.lb(de.Ya[0]));var c=de.Ya.pop();if(!c)return 6;de.Za.push(c),de.Qa[i.Xa]=c,c.Xa=i.Xa;var f={cmd:\"run\",start_routine:i.Db,arg:i.tb,pthread_ptr:i.Xa};return I&&c.unref(),c.postMessage(f,i.Jb),0},nt=0,Yt=typeof TextDecoder<\"u\"?new TextDecoder(\"utf8\"):void 0,Vt=(i,c,f)=>{c>>>=0;var S=c+f;for(f=c;i[f]&&!(f>=S);)++f;if(16O?S+=String.fromCharCode(O):(O-=65536,S+=String.fromCharCode(55296|O>>10,56320|O&1023))}}else S+=String.fromCharCode(O)}return S},Ye=(i,c)=>(i>>>=0)?Vt(o(),i,c):\"\",br=i=>{var c=mn();return i=i(),kr(c),i};function Oe(i,c){var f=arguments.length-2,S=arguments;return br(()=>{for(var O=fn(8*f),D=O>>>3,W=0;W>>0]=ie}return po(i,f,O,c)})}function wr(i){if($)return Oe(0,1,i);Pe=i,0{if(Pe=i,$)throw Zt(i),\"unwind\";wr(i)},St=i=>{i instanceof Ut||i==\"unwind\"||w(1,i)};function un(){for(var i=a.numThreads;i--;)ot();ee.unshift(()=>{ze++,tt(()=>wt())})}function ot(){var i=E(\"ort-wasm-simd-threaded.worker.js\");i=new Worker(i),de.Ya.push(i)}function tt(i){$?i():Promise.all(de.Ya.map(de.lb)).then(i)}var de={Ya:[],Za:[],pb:[],Qa:{},hb(){$?(de.receiveObjectTransfer=de.Bb,de.threadInitTLS=de.ob,de.setExitStatus=de.nb):un()},nb:i=>Pe=i,Nb:[\"$terminateWorker\"],Eb:()=>{for(var i of de.Za)Tt(i);for(i of de.Ya)Tt(i);de.Ya=[],de.Za=[],de.Qa=[]},mb:i=>{var c=i.Xa;delete de.Qa[c],de.Ya.push(i),de.Za.splice(de.Za.indexOf(i),1),i.Xa=0,cn(c)},Bb(){},ob(){de.pb.forEach(i=>i())},lb:i=>new Promise(c=>{i.onmessage=D=>{D=D.data;var W=D.cmd;if(D.targetThread&&D.targetThread!=Pr()){var ie=de.Qa[D.targetThread];ie?ie.postMessage(D,D.transferList):K(`Internal error! Worker sent a message \"${W}\" to target pthread ${D.targetThread}, but that thread no longer exists!`)}else W===\"checkMailbox\"?Et():W===\"spawnThread\"?Kt(D):W===\"cleanupThread\"?de.mb(de.Qa[D.thread]):W===\"killThread\"?(D=D.thread,W=de.Qa[D],delete de.Qa[D],Tt(W),cn(D),de.Za.splice(de.Za.indexOf(W),1),W.Xa=0):W===\"cancelThread\"?de.Qa[D.thread].postMessage({cmd:\"cancel\"}):W===\"loaded\"?(i.loaded=!0,I&&!i.Xa&&i.unref(),c(i)):W===\"alert\"?alert(`Thread ${D.threadId}: ${D.text}`):D.target===\"setimmediate\"?i.postMessage(D):W===\"callHandler\"?a[D.handler](...D.args):W&&K(`worker sent an unknown command ${W}`)},i.onerror=D=>{throw K(`worker sent an error! ${D.filename}:${D.lineno}: ${D.message}`),D},I&&(i.on(\"message\",D=>i.onmessage({data:D})),i.on(\"error\",D=>i.onerror(D)));var f=[],S=[\"onExit\"],O;for(O of S)a.hasOwnProperty(O)&&f.push(O);i.postMessage({cmd:\"load\",handlers:f,urlOrBlob:a.mainScriptUrlOrBlob||e,wasmMemory:Q,wasmModule:Z})})};a.PThread=de;var bt=i=>{for(;0{var i=Pr(),c=s()[i+52>>>2>>>0];i=s()[i+56>>>2>>>0],ho(c,c-i),kr(c)};function Zt(i){if($)return Oe(1,0,i);Nt(i)}a.invokeEntryPoint=(i,c)=>{i=go.apply(null,[i,c]),0>>2>>>0]=c},this.rb=function(c){s()[this.gb+8>>>2>>>0]=c},this.hb=function(c,f){this.qb(),this.sb(c),this.rb(f)},this.qb=function(){s()[this.gb+16>>>2>>>0]=0}}var $r=0,Qt=0;function Sr(i,c,f,S){return $?Oe(2,1,i,c,f,S):xr(i,c,f,S)}function xr(i,c,f,S){if(i>>>=0,c>>>=0,f>>>=0,S>>>=0,typeof SharedArrayBuffer>\"u\")return K(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\"),6;var O=[];return $&&O.length===0?Sr(i,c,f,S):(i={Db:f,Xa:i,tb:S,Jb:O},$?(i.Lb=\"spawnThread\",postMessage(i,O),0):Kt(i))}function _r(i,c,f){return $?Oe(3,1,i,c,f):0}function Cr(i,c){if($)return Oe(4,1,i,c)}var Xt=i=>{for(var c=0,f=0;f=S?c++:2047>=S?c+=2:55296<=S&&57343>=S?(c+=4,++f):c+=3}return c},Ir=(i,c,f,S)=>{if(f>>>=0,!(0=W){var ie=i.charCodeAt(++D);W=65536+((W&1023)<<10)|ie&1023}if(127>=W){if(f>=S)break;c[f++>>>0]=W}else{if(2047>=W){if(f+1>=S)break;c[f++>>>0]=192|W>>6}else{if(65535>=W){if(f+2>=S)break;c[f++>>>0]=224|W>>12}else{if(f+3>=S)break;c[f++>>>0]=240|W>>18,c[f++>>>0]=128|W>>12&63}c[f++>>>0]=128|W>>6&63}c[f++>>>0]=128|W&63}}return c[f>>>0]=0,f-O},ae=(i,c,f)=>Ir(i,o(),c,f);function Jt(i,c){if($)return Oe(5,1,i,c)}function Wt(i,c,f){if($)return Oe(6,1,i,c,f)}function er(i,c,f){return $?Oe(7,1,i,c,f):0}function tr(i,c){if($)return Oe(8,1,i,c)}function rr(i,c,f){if($)return Oe(9,1,i,c,f)}function nr(i,c,f,S){if($)return Oe(10,1,i,c,f,S)}function or(i,c,f,S){if($)return Oe(11,1,i,c,f,S)}function ar(i,c,f,S){if($)return Oe(12,1,i,c,f,S)}function ir(i){if($)return Oe(13,1,i)}function sr(i,c){if($)return Oe(14,1,i,c)}function ur(i,c,f){if($)return Oe(15,1,i,c,f)}var Ar=()=>{if(!(0>>=0,typeof Atomics.Kb==\"function\"&&(Atomics.Kb(n(),i>>>2,i).value.then(Et),i+=128,Atomics.store(n(),i>>>2,1))}a.__emscripten_thread_mailbox_await=xt;var Et=()=>{var i=Pr();if(i&&(xt(i),!Ee))try{mo(),Ar()}catch(c){St(c)}};a.checkMailbox=Et;var d=[],m=i=>i%4===0&&(i%100!==0||i%400===0),v=[0,31,60,91,121,152,182,213,244,274,305,335],C=[0,31,59,90,120,151,181,212,243,273,304,334];function B(i,c,f,S,O,D,W,ie){return $?Oe(16,1,i,c,f,S,O,D,W,ie):-52}function H(i,c,f,S,O,D,W){if($)return Oe(17,1,i,c,f,S,O,D,W)}var q=i=>{var c=Xt(i)+1,f=ln(c);return f&&ae(i,f,c),f},le=[],J=(i,c)=>{le.length=0;for(var f;f=o()[i++>>>0];){var S=f!=105;S&=f!=112,c+=S&&c%8?4:0,le.push(f==112?s()[c>>>2>>>0]:f==105?n()[c>>>2>>>0]:l()[c>>>3>>>0]),c+=S?8:4}return le},re={},se=()=>{if(!we){var i={USER:\"web_user\",LOGNAME:\"web_user\",PATH:\"/\",PWD:\"/\",HOME:\"/home/web_user\",LANG:(typeof navigator==\"object\"&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\",_:b||\"./this.program\"},c;for(c in re)re[c]===void 0?delete i[c]:i[c]=re[c];var f=[];for(c in i)f.push(`${c}=${i[c]}`);we=f}return we},we;function _e(i,c){if($)return Oe(18,1,i,c);i>>>=0,c>>>=0;var f=0;return se().forEach((S,O)=>{var D=c+f;for(O=s()[i+4*O>>>2>>>0]=D,D=0;D>>0>>>0]=S.charCodeAt(D);r()[O>>>0>>>0]=0,f+=S.length+1}),0}function P(i,c){if($)return Oe(19,1,i,c);i>>>=0,c>>>=0;var f=se();s()[i>>>2>>>0]=f.length;var S=0;return f.forEach(O=>S+=O.length+1),s()[c>>>2>>>0]=S,0}function ue(i){return $?Oe(20,1,i):52}function Se(i,c,f,S){return $?Oe(21,1,i,c,f,S):52}function st(i,c,f,S,O){return $?Oe(22,1,i,c,f,S,O):70}var Tr=[null,[],[]];function to(i,c,f,S){if($)return Oe(23,1,i,c,f,S);c>>>=0,f>>>=0,S>>>=0;for(var O=0,D=0;D>>2>>>0],ie=s()[c+4>>>2>>>0];c+=8;for(var ne=0;ne>>0],pe=Tr[i];oe===0||oe===10?((i===1?Y:K)(Vt(pe,0)),pe.length=0):pe.push(oe)}O+=ie}return s()[S>>>2>>>0]=O,0}var ro=[31,29,31,30,31,30,31,31,30,31,30,31],no=[31,28,31,30,31,30,31,31,30,31,30,31];function Pu(i){var c=Array(Xt(i)+1);return Ir(i,c,0,c.length),c}var ku=(i,c)=>{r().set(i,c>>>0)};function oo(i,c,f,S){function O(k,me,Ce){for(k=typeof k==\"number\"?k.toString():k||\"\";k.lengthSo?-1:0Ot-k.getDate())me-=Ot-k.getDate()+1,k.setDate(1),11>Ce?k.setMonth(Ce+1):(k.setMonth(0),k.setFullYear(k.getFullYear()+1));else{k.setDate(k.getDate()+me);break}}return Ce=new Date(k.getFullYear()+1,0,4),me=ie(new Date(k.getFullYear(),0,4)),Ce=ie(Ce),0>=W(me,k)?0>=W(Ce,k)?k.getFullYear()+1:k.getFullYear():k.getFullYear()-1}i>>>=0,c>>>=0,f>>>=0,S>>>=0;var oe=s()[S+40>>>2>>>0];S={Hb:n()[S>>>2>>>0],Gb:n()[S+4>>>2>>>0],eb:n()[S+8>>>2>>>0],jb:n()[S+12>>>2>>>0],fb:n()[S+16>>>2>>>0],ab:n()[S+20>>>2>>>0],Wa:n()[S+24>>>2>>>0],$a:n()[S+28>>>2>>>0],Ob:n()[S+32>>>2>>>0],Fb:n()[S+36>>>2>>>0],Ib:oe?Ye(oe):\"\"},f=Ye(f),oe={\"%c\":\"%a %b %d %H:%M:%S %Y\",\"%D\":\"%m/%d/%y\",\"%F\":\"%Y-%m-%d\",\"%h\":\"%b\",\"%r\":\"%I:%M:%S %p\",\"%R\":\"%H:%M\",\"%T\":\"%H:%M:%S\",\"%x\":\"%m/%d/%y\",\"%X\":\"%H:%M:%S\",\"%Ec\":\"%c\",\"%EC\":\"%C\",\"%Ex\":\"%m/%d/%y\",\"%EX\":\"%H:%M:%S\",\"%Ey\":\"%y\",\"%EY\":\"%Y\",\"%Od\":\"%d\",\"%Oe\":\"%e\",\"%OH\":\"%H\",\"%OI\":\"%I\",\"%Om\":\"%m\",\"%OM\":\"%M\",\"%OS\":\"%S\",\"%Ou\":\"%u\",\"%OU\":\"%U\",\"%OV\":\"%V\",\"%Ow\":\"%w\",\"%OW\":\"%W\",\"%Oy\":\"%y\"};for(var pe in oe)f=f.replace(new RegExp(pe,\"g\"),oe[pe]);var xe=\"Sunday Monday Tuesday Wednesday Thursday Friday Saturday\".split(\" \"),Te=\"January February March April May June July August September October November December\".split(\" \");oe={\"%a\":k=>xe[k.Wa].substring(0,3),\"%A\":k=>xe[k.Wa],\"%b\":k=>Te[k.fb].substring(0,3),\"%B\":k=>Te[k.fb],\"%C\":k=>D((k.ab+1900)/100|0,2),\"%d\":k=>D(k.jb,2),\"%e\":k=>O(k.jb,2,\" \"),\"%g\":k=>ne(k).toString().substring(2),\"%G\":k=>ne(k),\"%H\":k=>D(k.eb,2),\"%I\":k=>(k=k.eb,k==0?k=12:12{for(var me=0,Ce=0;Ce<=k.fb-1;me+=(m(k.ab+1900)?ro:no)[Ce++]);return D(k.jb+me,3)},\"%m\":k=>D(k.fb+1,2),\"%M\":k=>D(k.Gb,2),\"%n\":()=>`\\n`,\"%p\":k=>0<=k.eb&&12>k.eb?\"AM\":\"PM\",\"%S\":k=>D(k.Hb,2),\"%t\":()=>\"\t\",\"%u\":k=>k.Wa||7,\"%U\":k=>D(Math.floor((k.$a+7-k.Wa)/7),2),\"%V\":k=>{var me=Math.floor((k.$a+7-(k.Wa+6)%7)/7);if(2>=(k.Wa+371-k.$a-2)%7&&me++,me)me==53&&(Ce=(k.Wa+371-k.$a)%7,Ce==4||Ce==3&&m(k.ab)||(me=1));else{me=52;var Ce=(k.Wa+7-k.$a-1)%7;(Ce==4||Ce==5&&m(k.ab%400-1))&&me++}return D(me,2)},\"%w\":k=>k.Wa,\"%W\":k=>D(Math.floor((k.$a+7-(k.Wa+6)%7)/7),2),\"%y\":k=>(k.ab+1900).toString().substring(2),\"%Y\":k=>k.ab+1900,\"%z\":k=>{k=k.Fb;var me=0<=k;return k=Math.abs(k)/60,(me?\"+\":\"-\")+(\"0000\"+(k/60*100+k%60)).slice(-4)},\"%Z\":k=>k.Ib,\"%%\":()=>\"%\"},f=f.replace(/%%/g,\"\\\\0\\\\0\");for(pe in oe)f.includes(pe)&&(f=f.replace(new RegExp(pe,\"g\"),oe[pe](S)));return f=f.replace(/\\\\0\\\\0/g,\"%\"),pe=Pu(f),pe.length>c?0:(ku(pe,i),pe.length-1)}var Er=i=>{try{i()}catch(c){rt(c)}};function Ru(){var i=X,c={};for(let[f,S]of Object.entries(i))c[f]=typeof S==\"function\"?function(){Or.push(f);try{return S.apply(null,arguments)}finally{Ee||(Or.pop(),ut&&_t===1&&Or.length===0&&(_t=0,nt+=1,Er(bo),typeof Fibers<\"u\"&&Fibers.Pb()))}}:S;return c}var _t=0,ut=null,ao=0,Or=[],io={},so={},Bu=0,dn=null,Du=[];function Mu(){return new Promise((i,c)=>{dn={resolve:i,reject:c}})}function zu(){var i=ln(65548),c=i+12;s()[i>>>2>>>0]=c,s()[i+4>>>2>>>0]=c+65536,c=Or[0];var f=io[c];return f===void 0&&(f=Bu++,io[c]=f,so[f]=c),c=f,n()[i+8>>>2>>>0]=c,i}function Uu(){var i=n()[ut+8>>>2>>>0];return i=X[so[i]],--nt,i()}function Vu(i){if(!Ee){if(_t===0){var c=!1,f=!1;i((S=0)=>{if(!Ee&&(ao=S,c=!0,f)){_t=2,Er(()=>wo(ut)),typeof Browser<\"u\"&&Browser.ib.vb&&Browser.ib.resume(),S=!1;try{var O=Uu()}catch(ie){O=ie,S=!0}var D=!1;if(!ut){var W=dn;W&&(dn=null,(S?W.reject:W.resolve)(O),D=!0)}if(S&&!D)throw O}}),f=!0,c||(_t=1,ut=zu(),typeof Browser<\"u\"&&Browser.ib.vb&&Browser.ib.pause(),Er(()=>yo(ut)))}else _t===2?(_t=0,Er(vo),lo(ut),ut=null,Du.forEach(S=>{if(!Ee)try{S(),Ar()}catch(O){St(O)}})):rt(`invalid state: ${_t}`);return ao}}function Nu(i){return Vu(c=>{i().then(c)})}de.hb();var Wu=[wr,Zt,Sr,_r,Cr,Jt,Wt,er,tr,rr,nr,or,ar,ir,sr,ur,B,H,_e,P,ue,Se,st,to],Hu={r:function(i,c,f){return Nu(async()=>{await a.xb(i,c,f)})},b:function(i,c,f){throw i>>>=0,new vr(i).hb(c>>>0,f>>>0),$r=i,Qt++,$r},N:function(i){co(i>>>0,!_,1,!y,131072,!1),de.ob()},l:function(i){i>>>=0,$?postMessage({cmd:\"cleanupThread\",thread:i}):de.mb(de.Qa[i])},J:xr,i:_r,T:Cr,F:Jt,H:Wt,U:er,R:tr,L:rr,Q:nr,p:or,G:ar,D:ir,S:sr,E:ur,q:()=>1,B:function(i,c){i>>>=0,i==c>>>0?setTimeout(()=>Et()):$?postMessage({targetThread:i,cmd:\"checkMailbox\"}):(i=de.Qa[i])&&i.postMessage({cmd:\"checkMailbox\"})},K:function(i,c,f,S){c>>>=0,d.length=f,S=S>>>0>>>3;for(var O=0;O>>0];return i=0>i?zt[-i-1]:Wu[i],de.ub=c,c=i.apply(null,d),de.ub=0,c},M:xt,W:function(i){I&&de.Qa[i>>>0].ref()},u:function(i,c,f){i=c+2097152>>>0<4194305-!!i?(i>>>0)+4294967296*c:NaN,f>>>=0,i=new Date(1e3*i),n()[f>>>2>>>0]=i.getUTCSeconds(),n()[f+4>>>2>>>0]=i.getUTCMinutes(),n()[f+8>>>2>>>0]=i.getUTCHours(),n()[f+12>>>2>>>0]=i.getUTCDate(),n()[f+16>>>2>>>0]=i.getUTCMonth(),n()[f+20>>>2>>>0]=i.getUTCFullYear()-1900,n()[f+24>>>2>>>0]=i.getUTCDay(),i=(i.getTime()-Date.UTC(i.getUTCFullYear(),0,1,0,0,0,0))/864e5|0,n()[f+28>>>2>>>0]=i},v:function(i,c,f){i=c+2097152>>>0<4194305-!!i?(i>>>0)+4294967296*c:NaN,f>>>=0,i=new Date(1e3*i),n()[f>>>2>>>0]=i.getSeconds(),n()[f+4>>>2>>>0]=i.getMinutes(),n()[f+8>>>2>>>0]=i.getHours(),n()[f+12>>>2>>>0]=i.getDate(),n()[f+16>>>2>>>0]=i.getMonth(),n()[f+20>>>2>>>0]=i.getFullYear()-1900,n()[f+24>>>2>>>0]=i.getDay(),c=(m(i.getFullYear())?v:C)[i.getMonth()]+i.getDate()-1|0,n()[f+28>>>2>>>0]=c,n()[f+36>>>2>>>0]=-(60*i.getTimezoneOffset()),c=new Date(i.getFullYear(),6,1).getTimezoneOffset();var S=new Date(i.getFullYear(),0,1).getTimezoneOffset();i=(c!=S&&i.getTimezoneOffset()==Math.min(S,c))|0,n()[f+32>>>2>>>0]=i},w:function(i){i>>>=0;var c=new Date(n()[i+20>>>2>>>0]+1900,n()[i+16>>>2>>>0],n()[i+12>>>2>>>0],n()[i+8>>>2>>>0],n()[i+4>>>2>>>0],n()[i>>>2>>>0],0),f=n()[i+32>>>2>>>0],S=c.getTimezoneOffset(),O=new Date(c.getFullYear(),6,1).getTimezoneOffset(),D=new Date(c.getFullYear(),0,1).getTimezoneOffset(),W=Math.min(D,O);return 0>f?n()[i+32>>>2>>>0]=+(O!=D&&W==S):0>>2>>>0]=c.getDay(),f=(m(c.getFullYear())?v:C)[c.getMonth()]+c.getDate()-1|0,n()[i+28>>>2>>>0]=f,n()[i>>>2>>>0]=c.getSeconds(),n()[i+4>>>2>>>0]=c.getMinutes(),n()[i+8>>>2>>>0]=c.getHours(),n()[i+12>>>2>>>0]=c.getDate(),n()[i+16>>>2>>>0]=c.getMonth(),n()[i+20>>>2>>>0]=c.getYear(),i=c.getTime(),isNaN(i)?(n()[uo()>>>2>>>0]=61,i=-1):i/=1e3,fo((yt=i,1<=+Math.abs(yt)?0>>0:~~+Math.ceil((yt-+(~~yt>>>0))/4294967296)>>>0:0)),i>>>0},s:B,t:H,A:function(i,c,f){function S(oe){return(oe=oe.toTimeString().match(/\\\\(([A-Za-z ]+)\\\\)$/))?oe[1]:\"GMT\"}i>>>=0,c>>>=0,f>>>=0;var O=new Date().getFullYear(),D=new Date(O,0,1),W=new Date(O,6,1);O=D.getTimezoneOffset();var ie=W.getTimezoneOffset(),ne=Math.max(O,ie);s()[i>>>2>>>0]=60*ne,n()[c>>>2>>>0]=+(O!=ie),i=S(D),c=S(W),i=q(i),c=q(c),ie>>2>>>0]=i,s()[f+4>>>2>>>0]=c):(s()[f>>>2>>>0]=c,s()[f+4>>>2>>>0]=i)},d:()=>{rt(\"\")},c:function(i,c,f){return i>>>=0,c=J(c>>>0,f>>>0),zt[i].apply(null,c)},k:function(i,c,f){return i>>>=0,c=J(c>>>0,f>>>0),zt[i].apply(null,c)},m:()=>{},j:()=>Date.now(),V:()=>{throw nt+=1,\"unwind\"},C:function(){return 4294901760},f:()=>performance.timeOrigin+performance.now(),g:()=>I?(Oo(),Ht(Eo)).cpus().length:navigator.hardwareConcurrency,y:function(i){i>>>=0;var c=o().length;if(i<=c||4294901760=f;f*=2){var S=c*(1+.2/f);S=Math.min(S,i+100663296);var O=Math;S=Math.max(i,S);e:{O=(O.min.call(O,4294901760,S+(65536-S%65536)%65536)-Q.buffer.byteLength+65535)/65536;try{Q.grow(O),Ge();var D=1;break e}catch{}D=void 0}if(D)return!0}return!1},O:_e,P,I:Nt,h:ue,o:Se,x:st,n:to,a:Q||a.wasmMemory,z:oo,e:function(i,c,f,S){return oo(i>>>0,c>>>0,f>>>0,S>>>0)}},X=function(){function i(f,S){return X=f.exports,X=Ru(),X=Gu(),de.pb.push(X.Da),be.unshift(X.X),Z=S,wt(),X}var c={a:Hu};if(ze++,a.instantiateWasm)try{return a.instantiateWasm(c,i)}catch(f){K(`Module.instantiateWasm callback failed with error: ${f}`),h(f)}return $t(c,function(f){i(f.instance,f.module)}).catch(h),{}}();a._OrtInit=(i,c)=>(a._OrtInit=X.Y)(i,c),a._OrtGetLastError=(i,c)=>(a._OrtGetLastError=X.Z)(i,c),a._OrtCreateSessionOptions=(i,c,f,S,O,D,W,ie,ne,oe)=>(a._OrtCreateSessionOptions=X._)(i,c,f,S,O,D,W,ie,ne,oe),a._OrtAppendExecutionProvider=(i,c)=>(a._OrtAppendExecutionProvider=X.$)(i,c),a._OrtAddFreeDimensionOverride=(i,c,f)=>(a._OrtAddFreeDimensionOverride=X.aa)(i,c,f),a._OrtAddSessionConfigEntry=(i,c,f)=>(a._OrtAddSessionConfigEntry=X.ba)(i,c,f),a._OrtReleaseSessionOptions=i=>(a._OrtReleaseSessionOptions=X.ca)(i),a._OrtCreateSession=(i,c,f)=>(a._OrtCreateSession=X.da)(i,c,f),a._OrtReleaseSession=i=>(a._OrtReleaseSession=X.ea)(i),a._OrtGetInputOutputCount=(i,c,f)=>(a._OrtGetInputOutputCount=X.fa)(i,c,f),a._OrtGetInputName=(i,c)=>(a._OrtGetInputName=X.ga)(i,c),a._OrtGetOutputName=(i,c)=>(a._OrtGetOutputName=X.ha)(i,c),a._OrtFree=i=>(a._OrtFree=X.ia)(i),a._OrtCreateTensor=(i,c,f,S,O,D)=>(a._OrtCreateTensor=X.ja)(i,c,f,S,O,D),a._OrtGetTensorData=(i,c,f,S,O)=>(a._OrtGetTensorData=X.ka)(i,c,f,S,O),a._OrtReleaseTensor=i=>(a._OrtReleaseTensor=X.la)(i),a._OrtCreateRunOptions=(i,c,f,S)=>(a._OrtCreateRunOptions=X.ma)(i,c,f,S),a._OrtAddRunConfigEntry=(i,c,f)=>(a._OrtAddRunConfigEntry=X.na)(i,c,f),a._OrtReleaseRunOptions=i=>(a._OrtReleaseRunOptions=X.oa)(i),a._OrtCreateBinding=i=>(a._OrtCreateBinding=X.pa)(i),a._OrtBindInput=(i,c,f)=>(a._OrtBindInput=X.qa)(i,c,f),a._OrtBindOutput=(i,c,f,S)=>(a._OrtBindOutput=X.ra)(i,c,f,S),a._OrtClearBoundOutputs=i=>(a._OrtClearBoundOutputs=X.sa)(i),a._OrtReleaseBinding=i=>(a._OrtReleaseBinding=X.ta)(i),a._OrtRunWithBinding=(i,c,f,S,O)=>(a._OrtRunWithBinding=X.ua)(i,c,f,S,O),a._OrtRun=(i,c,f,S,O,D,W,ie)=>(a._OrtRun=X.va)(i,c,f,S,O,D,W,ie),a._OrtEndProfiling=i=>(a._OrtEndProfiling=X.wa)(i),a._JsepOutput=(i,c,f)=>(a._JsepOutput=X.xa)(i,c,f),a._JsepGetNodeName=i=>(a._JsepGetNodeName=X.ya)(i);var uo=()=>(uo=X.za)(),Pr=a._pthread_self=()=>(Pr=a._pthread_self=X.Aa)(),ln=a._malloc=i=>(ln=a._malloc=X.Ba)(i),lo=a._free=i=>(lo=a._free=X.Ca)(i);a.__emscripten_tls_init=()=>(a.__emscripten_tls_init=X.Da)();var co=a.__emscripten_thread_init=(i,c,f,S,O,D)=>(co=a.__emscripten_thread_init=X.Fa)(i,c,f,S,O,D);a.__emscripten_thread_crashed=()=>(a.__emscripten_thread_crashed=X.Ga)();var po=(i,c,f,S)=>(po=X.Ha)(i,c,f,S),cn=i=>(cn=X.Ia)(i),pn=a.__emscripten_thread_exit=i=>(pn=a.__emscripten_thread_exit=X.Ja)(i),mo=()=>(mo=X.Ka)(),fo=i=>(fo=X.La)(i),ho=(i,c)=>(ho=X.Ma)(i,c),mn=()=>(mn=X.Na)(),kr=i=>(kr=X.Oa)(i),fn=i=>(fn=X.Pa)(i),go=a.dynCall_ii=(i,c)=>(go=a.dynCall_ii=X.Ra)(i,c),yo=i=>(yo=X.Sa)(i),bo=()=>(bo=X.Ta)(),wo=i=>(wo=X.Ua)(i),vo=()=>(vo=X.Va)();a.___start_em_js=944472,a.___stop_em_js=944633;function Gu(){var i=X;i=Object.assign({},i);var c=S=>()=>S()>>>0,f=S=>O=>S(O)>>>0;return i.za=c(i.za),i.Aa=c(i.Aa),i.Ba=f(i.Ba),i.emscripten_main_runtime_thread_id=c(i.emscripten_main_runtime_thread_id),i.Na=c(i.Na),i.Pa=f(i.Pa),i}a.wasmMemory=Q,a.stackAlloc=fn,a.stackSave=mn,a.stackRestore=kr,a.keepRuntimeAlive=()=>0Po)});var Bo=dr((qc,Xu)=>{Xu.exports=\\'\"use strict\";var Module={},ENVIRONMENT_IS_NODE=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\";if(ENVIRONMENT_IS_NODE){var nodeWorkerThreads=require(\"worker_threads\"),parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",e=>onmessage({data:e}));var fs=require(\"fs\"),vm=require(\"vm\");Object.assign(global,{self:global,require,Module,location:{href:__filename},Worker:nodeWorkerThreads.Worker,importScripts:e=>vm.runInThisContext(fs.readFileSync(e,\"utf8\"),{filename:e}),postMessage:e=>parentPort.postMessage(e),performance:global.performance||{now:Date.now}})}var initializedJS=!1;function threadPrintErr(){var e=Array.prototype.slice.call(arguments).join(\" \");if(ENVIRONMENT_IS_NODE){fs.writeSync(2,e+`\\\\n`);return}console.error(e)}function threadAlert(){var e=Array.prototype.slice.call(arguments).join(\" \");postMessage({cmd:\"alert\",text:e,threadId:Module._pthread_self()})}var err=threadPrintErr;self.alert=threadAlert,Module.instantiateWasm=(e,t)=>{var a=Module.wasmModule;Module.wasmModule=null;var r=new WebAssembly.Instance(a,e);return t(r)},self.onunhandledrejection=e=>{throw e.reason||e};function handleMessage(e){try{if(e.data.cmd===\"load\"){let a=[];self.onmessage=r=>a.push(r),self.startWorker=r=>{Module=r,postMessage({cmd:\"loaded\"});for(let s of a)handleMessage(s);self.onmessage=handleMessage},Module.wasmModule=e.data.wasmModule;for(const r of e.data.handlers)Module[r]=(...s)=>{postMessage({cmd:\"callHandler\",handler:r,args:s})};if(Module.wasmMemory=e.data.wasmMemory,Module.buffer=Module.wasmMemory.buffer,Module.ENVIRONMENT_IS_PTHREAD=!0,typeof e.data.urlOrBlob==\"string\")importScripts(e.data.urlOrBlob);else{var t=URL.createObjectURL(e.data.urlOrBlob);importScripts(t),URL.revokeObjectURL(t)}ortWasmThreaded(Module)}else if(e.data.cmd===\"run\"){Module.__emscripten_thread_init(e.data.pthread_ptr,0,0,1),Module.__emscripten_thread_mailbox_await(e.data.pthread_ptr),Module.establishStackSpace(),Module.PThread.receiveObjectTransfer(e.data),Module.PThread.threadInitTLS(),initializedJS||(initializedJS=!0);try{Module.invokeEntryPoint(e.data.start_routine,e.data.arg)}catch(a){if(a!=\"unwind\")throw a}}else e.data.cmd===\"cancel\"?Module._pthread_self()&&Module.__emscripten_thread_exit(-1):e.data.target===\"setimmediate\"||(e.data.cmd===\"checkMailbox\"?initializedJS&&Module.checkMailbox():e.data.cmd&&(err(`worker.js received unknown command ${e.data.cmd}`),err(e.data)))}catch(a){throw Module.__emscripten_thread_crashed?.(),a}}self.onmessage=handleMessage;\\\\n\\'});var _n,Xe,cr,Mr,pr,No,Cn,Ne=j(()=>{\"use strict\";_n=e=>{switch(e){case\"int8\":return 3;case\"uint8\":return 2;case\"bool\":return 9;case\"int16\":return 5;case\"uint16\":return 4;case\"int32\":return 6;case\"uint32\":return 12;case\"float16\":return 10;case\"float32\":return 1;case\"float64\":return 11;case\"string\":return 8;case\"int64\":return 7;case\"uint64\":return 13;default:throw new Error(`unsupported data type: ${e}`)}},Xe=e=>{switch(e){case 3:return\"int8\";case 2:return\"uint8\";case 9:return\"bool\";case 5:return\"int16\";case 4:return\"uint16\";case 6:return\"int32\";case 12:return\"uint32\";case 10:return\"float16\";case 1:return\"float32\";case 11:return\"float64\";case 8:return\"string\";case 7:return\"int64\";case 13:return\"uint64\";default:throw new Error(`unsupported data type: ${e}`)}},cr=e=>[void 0,4,1,1,2,2,4,8,void 0,1,2,8,4,8,void 0,void 0,void 0][e],Mr=e=>{switch(e){case\"float16\":return Uint16Array;case\"float32\":return Float32Array;case\"uint8\":return Uint8Array;case\"int8\":return Int8Array;case\"uint16\":return Uint16Array;case\"int16\":return Int16Array;case\"int32\":return Int32Array;case\"bool\":return Uint8Array;case\"float64\":return Float64Array;case\"uint32\":return Uint32Array;case\"int64\":return BigInt64Array;case\"uint64\":return BigUint64Array;default:throw new Error(`unsupported type: ${e}`)}},pr=e=>{switch(e){case\"verbose\":return 0;case\"info\":return 1;case\"warning\":return 2;case\"error\":return 3;case\"fatal\":return 4;default:throw new Error(`unsupported logging level: ${e}`)}},No=e=>e===\"float32\"||e===\"int32\"||e===\"int64\"||e===\"bool\"||e===\"float16\"||e===\"uint32\",Cn=e=>{switch(e){case\"none\":return 0;case\"cpu\":return 1;case\"cpu-pinned\":return 2;case\"texture\":return 3;case\"gpu-buffer\":return 4;default:throw new Error(`unsupported data location: ${e}`)}}});var zr=j(()=>{\"use strict\"});var Ho=j(()=>{\"use strict\";zr()});var Go,Lo=j(()=>{\"use strict\";Go=\"1.17.1\"});var Fo,Pt,In=j(()=>{\"use strict\";Lo();Fo=\"warning\",Pt={wasm:{},webgl:{},webgpu:{},versions:{common:Go},set logLevel(e){if(e!==void 0){if(typeof e!=\"string\"||[\"verbose\",\"info\",\"warning\",\"error\",\"fatal\"].indexOf(e)===-1)throw new Error(`Unsupported logging level: ${e}`);Fo=e}},get logLevel(){return Fo}};Object.defineProperty(Pt,\"logLevel\",{enumerable:!0})});var Gt,jo=j(()=>{\"use strict\";In();Gt=Pt});var qo=j(()=>{\"use strict\"});var Ko=j(()=>{\"use strict\";Ur()});var Zo=j(()=>{\"use strict\"});var Qo=j(()=>{\"use strict\";Ur()});var Ur=j(()=>{\"use strict\";qo();Ko();Zo();Qo()});var Vr=j(()=>{\"use strict\";Ur()});var An,Xo,kt,Rt,Tn=j(()=>{\"use strict\";In();An=(e,t)=>{Pt.wasm.trace&&console.timeStamp(`${e}::ORT::${t}`)},Xo=(e,t)=>{let r=new Error().stack?.split(/\\\\r\\\\n|\\\\r|\\\\n/g)||[],o=!1;for(let n=0;n{Pt.wasm.trace&&Xo(\"BEGIN\",e)},Rt=e=>{Pt.wasm.trace&&Xo(\"END\",e)}});var Jo=j(()=>{\"use strict\";zr();Vr();Tn()});var ea=j(()=>{\"use strict\";Jo()});var ta=j(()=>{\"use strict\"});var ra=j(()=>{\"use strict\";zr();Vr()});var na=j(()=>{\"use strict\";ra()});var Lt=j(()=>{\"use strict\";Ho();jo();ea();Vr();Tn();ta();na()});var dd,ld,oa,aa,ia,cd,Be,Ct=j(()=>{\"use strict\";Ne();dd=[\"V\",\"I\",\"W\",\"E\",\"F\"],ld=(e,t)=>{console.log(`[${dd[e]},${new Date().toISOString()}]${t}`)},ia=(e,t)=>{oa=e,aa=t},cd=(e,t)=>{let r=pr(e),o=pr(oa);r>=o&&ld(r,typeof t==\"function\"?t():t)},Be=(...e)=>{aa&&cd(...e)}});var sa,ua=j(()=>{\"use strict\";Ne();sa=(e,t)=>new(Mr(t))(e)});var Nr=j(()=>{\"use strict\"});var Wr,pd,da,On,En,ca,pa=j(()=>{\"use strict\";Ct();Nr();Wr=e=>Math.ceil(e/16)*16,pd=1,da=()=>pd++,On=async(e,t,r,o)=>{let n=Wr(r),s=e.device.createBuffer({size:n,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ});try{let u=e.getCommandEncoder();e.endComputePass(),u.copyBufferToBuffer(t,0,s,0,n),e.flush(),await s.mapAsync(GPUMapMode.READ);let l=s.getMappedRange();if(o){let a=o();return a.set(new Uint8Array(l,0,r)),a}else return new Uint8Array(l.slice(0,r))}finally{s.destroy()}},En=class{constructor(t){this.backend=t;this.storageCache=new Map,this.freeBuffers=new Map,this.freeUniformBuffers=new Map,this.buffersForUploadingPending=[],this.buffersPending=[],this.externalBuffers=new Map}upload(t,r){let o=r.buffer,n=r.byteOffset,s=r.byteLength,u=Wr(s),l=this.storageCache.get(t);if(!l)throw new Error(\"gpu data for uploading does not exist\");if(l.originalSize!==s)throw new Error(`inconsistent data size. gpu data size=${l.originalSize}, data size=${s}`);let a=this.backend.device.createBuffer({mappedAtCreation:!0,size:u,usage:GPUBufferUsage.MAP_WRITE|GPUBufferUsage.COPY_SRC}),p=a.getMappedRange();new Uint8Array(p).set(new Uint8Array(o,n,s)),a.unmap();let h=this.backend.getCommandEncoder();this.backend.endComputePass(),h.copyBufferToBuffer(a,0,l.gpuData.buffer,0,u),Be(\"verbose\",()=>`[WebGPU] GpuDataManager.upload(id=${t})`),this.buffersForUploadingPending.push(a)}memcpy(t,r){let o=this.storageCache.get(t);if(!o)throw new Error(\"source gpu data for memcpy does not exist\");let n=this.storageCache.get(r);if(!n)throw new Error(\"destination gpu data for memcpy does not exist\");if(o.originalSize!==n.originalSize)throw new Error(\"inconsistent source and destination gpu data size\");let s=Wr(o.originalSize),u=this.backend.getCommandEncoder();this.backend.endComputePass(),u.copyBufferToBuffer(o.gpuData.buffer,0,n.gpuData.buffer,0,s)}registerExternalBuffer(t,r,o){let n;if(o){if(n=this.externalBuffers.get(o),n===void 0)throw new Error(\"previous buffer is not registered\");if(t===o)return Be(\"verbose\",()=>`[WebGPU] GpuDataManager.registerExternalBuffer(size=${r}) => id=${n}, buffer is the same, skip.`),n;this.externalBuffers.delete(o)}else n=da();return this.storageCache.set(n,{gpuData:{id:n,type:0,buffer:t},originalSize:r}),this.externalBuffers.set(t,n),Be(\"verbose\",()=>`[WebGPU] GpuDataManager.registerExternalBuffer(size=${r}) => id=${n}, registered.`),n}unregisterExternalBuffer(t){let r=this.externalBuffers.get(t);r!==void 0&&(this.storageCache.delete(r),this.externalBuffers.delete(t),Be(\"verbose\",()=>`[WebGPU] GpuDataManager.unregisterExternalBuffer() => id=${r}`))}create(t,r=GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST){let o=Wr(t),n,s=(r&GPUBufferUsage.STORAGE)===GPUBufferUsage.STORAGE,u=(r&GPUBufferUsage.UNIFORM)===GPUBufferUsage.UNIFORM;if(s||u){let a=s?this.freeBuffers:this.freeUniformBuffers,p=a.get(o);p||(p=[],a.set(o,p)),p.length>0?n=p.pop():n=this.backend.device.createBuffer({size:o,usage:r})}else n=this.backend.device.createBuffer({size:o,usage:r});let l={id:da(),type:0,buffer:n};return this.storageCache.set(l.id,{gpuData:l,originalSize:t}),Be(\"verbose\",()=>`[WebGPU] GpuDataManager.create(size=${t}) => id=${l.id}`),l}get(t){return this.storageCache.get(t)?.gpuData}release(t){let r=this.storageCache.get(t);if(!r)throw new Error(\"releasing data does not exist\");return Be(\"verbose\",()=>`[WebGPU] GpuDataManager.release(id=${t}), gpuDataId=${r.gpuData.id}`),this.storageCache.delete(t),this.buffersPending.push(r.gpuData.buffer),r.originalSize}async download(t,r){let o=this.storageCache.get(t);if(!o)throw new Error(\"data does not exist\");await On(this.backend,o.gpuData.buffer,o.originalSize,r)}refreshPendingBuffers(){for(let t of this.buffersForUploadingPending)t.destroy();this.buffersForUploadingPending=[];for(let t of this.buffersPending)(t.usage&GPUBufferUsage.STORAGE)===GPUBufferUsage.STORAGE?this.freeBuffers.get(t.size).push(t):(t.usage&GPUBufferUsage.UNIFORM)===GPUBufferUsage.UNIFORM?this.freeUniformBuffers.get(t.size).push(t):t.destroy();this.buffersPending=[]}dispose(){this.freeBuffers.forEach(t=>{t.forEach(r=>{r.destroy()})}),this.freeUniformBuffers.forEach(t=>{t.forEach(r=>{r.destroy()})}),this.storageCache.forEach(t=>{t.gpuData.buffer.destroy()}),this.storageCache=new Map,this.freeBuffers=new Map,this.freeUniformBuffers=new Map}},ca=(...e)=>new En(...e)});var Pn,ge,je=j(()=>{\"use strict\";Pn=class{constructor(t){Object.assign(this,t)}get cacheKey(){return this.key||(this.key=Object.getOwnPropertyNames(this).sort().map(t=>`${this[t]}`).join(\";\")),this.key}},ge=e=>new Pn(e)});var kn,dt,U,Bt,Hr,Gr,Lr,$e=j(()=>{\"use strict\";kn=class{static calcMatMulShape(t,r){return t[1]!==r[0]?void 0:[t[0],r[1]]}},dt=class{static calcShape(t,r,o=!1){let n=t.length,s=r.length;if(n===0)return r;if(s===0)return t;let u=Math.max(t.length,r.length),l=new Array(u);if(o){if(n<2||s<2)return;let a=kn.calcMatMulShape([t[n-2],t[n-1]],[r[s-2],r[s-1]]);if(a===void 0)return;[l[u-2],l[u-1]]=a}for(let a=o?3:1;a<=u;a++){let p=n-a<0?1:t[n-a],h=s-a<0?1:r[s-a];if(p!==h&&p>1&&h>1)return;l[u-a]=Math.max(p,h)}return l}static isValidBroadcast(t,r){let o=t.length,n=r.length;if(o>n)return!1;for(let s=1;s<=o;s++)if(t[o-s]!==1&&t[o-s]!==r[n-s])return!1;return!0}},U=class e{static size(t){return e.getSizeFromDimensionRange(t,0,t.length)}static sizeFromDimension(t,r){if(r<0||r>t.length)throw new Error(`invalid dimension of ${r} for sizeFromDimension as Tensor has ${t.length} dimensions.`);return e.getSizeFromDimensionRange(t,r,t.length)}static sizeToDimension(t,r){if(r<0||r>t.length)throw new Error(`invalid dimension of ${r} for sizeToDimension as Tensor has ${t.length} dimensions.`);return e.getSizeFromDimensionRange(t,0,r)}static getSizeFromDimensionRange(t,r,o){let n=1;for(let s=r;s=0;--n)o[n]=o[n+1]*t[n+1];return o}static normalizeAxis(t,r){if(t<-r&&t>=r)throw new Error(\"unsupported axis for this operation.\");return t<0?t+r:t}static normalizeAxes(t,r){return t.map(o=>this.normalizeAxis(o,r??t.length))}static sortBasedOnPerm(t,r){return r?r.map(o=>t[o]):t.slice().reverse()}static padShape(t,r){let o=t.length;return t.map((n,s)=>n+r[s]+r[s+o])}static areEqual(t,r){return t.length!==r.length?!1:t.every((o,n)=>o===r[n])}},Bt=class e{static adjustPoolAttributes(t,r,o,n,s,u){if(!t&&o.length!==r.length-2)throw new Error(\"length of specified kernel shapes should be 2 less than length of input dimensions\");if(t)for(let l=0;l=o.length?o.push(r[l+2]):o[l]=r[l+2];for(let l=0;l=o[l]||u[l+o.length]>=o[l])throw new Error(\"pads should be smaller than kernel\")}}static adjustPadsBasedOnAutoPad(t,r,o,n,s,u,l){if(l){if(s.length!==2*(t.length-2))throw new Error(\"length of pads should be twice the length of data dimensions\");if(r.length!==t.length-2)throw new Error(\"length of strides should be the length of data dimensions\");if(n.length!==t.length-2)throw new Error(\"length of kernel shapes should be the length of data dimensions\");for(let a=0;a{\"use strict\";Ne();$e();md=64,Bn=(e,t)=>{if(t===3)throw new Error(\"vec3 has same alignment as vec4, use vec4 instead\");switch(e){case 10:return t>1?`vec${t}`:\"f16\";case 1:return t>1?`vec${t}`:\"f32\";case 6:return t>1?`vec${t}`:\"i32\";case 12:return t>1?`vec${t}`:\"u32\";case 7:if(t>1)throw new Error(\"currently not supported vecX of uint64 yet\");return[\"vec2\",\"i32\"];case 13:if(t>1)throw new Error(\"currently not supported vecX of uint64 yet\");return[\"vec2\",\"u32\"];case 9:if(t!==4)throw new Error(\"bool must be vec4\");return[\"u32\",\"vec4\"];default:throw new Error(`Unknown data type: ${e}`)}},Le=(e,t=1)=>{let r=Bn(e,t);return typeof r==\"string\"?r:r[0]},lt=(e,t=1)=>{let r=Bn(e,t);return typeof r==\"string\"?r:r[1]},L=e=>e.length===0?[]:[{type:\"uint32\",data:e},{type:\"uint32\",data:U.computeStrides(e)}],Fe=e=>e%4===0?4:e%2===0?2:1,Ze=(e=\"f32\",t,r=\"0\")=>!t||t===1?`${e}(${r})`:`vec${t}<${e}>(${r})`,at=(e,t,r)=>e===\"f32\"?r:t===1?`f32(${r})`:`vec${t}f(${r})`,Je=(e,t)=>t===4?`(${e}.x + ${e}.y + ${e}.z + ${e}.w)`:t===2?`(${e}.x + ${e}.y)`:t===3?`(${e}.x + ${e}.y + ${e}.z)`:e,ce=(e,t,r)=>e.startsWith(\"uniforms.\")&&r>4?typeof t==\"string\"?`${e}[(${t}) / 4][(${t}) % 4]`:`${e}[${Math.floor(t/4)}][${t%4}]`:r>1?`${e}[${t}]`:e,Dn=(e,t,r,o,n)=>{let s=typeof r==\"number\",u=s?r:r.length,l=[...new Array(u).keys()],a=u<2?\"u32\":u<=4?`vec${u}`:`array`,p=Bn(t,n),h=typeof p==\"string\"?p:p[1],g=typeof p==\"string\"?p:p[0],b={indices:a,value:h,storage:g,tensor:t},w=G=>typeof G==\"string\"?G:`${G}u`,y={offsetToIndices:!1,indicesToOffset:!1,broadcastedIndicesToOffset:!1,set:!1,setByIndices:!1,get:!1,getByIndices:!1},_=s?\"uniforms.\":\"\",I=`${_}${e}_shape`,$=`${_}${e}_strides`,x=\"\";for(let G=0;G ${b.indices} {\\n var indices: ${b.indices};\\n var current = offset;\\n ${x}\\n return indices;\\n }`,A=G=>(y.offsetToIndices=!0,u<2?G:`o2i_${e}(${G})`),z=[];if(u>=2)for(let G=u-1;G>=0;G--)z.push(`${ce($,G,u)} * (indices[${G}])`);let R=u<2?\"\":`\\n fn i2o_${e}(indices: ${b.indices}) -> u32 {\\n return ${z.join(\"+\")};\\n }`,V=G=>(y.indicesToOffset=!0,u<2?G:`i2o_${e}(${G})`),T=(...G)=>u===0?\"0u\":`${b.indices}(${G.map(w).join(\",\")})`,N=(G,ee)=>u<2?`${G}`:`${ce(G,ee,u)}`,te=(G,ee,be)=>u<2?`${G}=${be};`:`${ce(G,ee,u)}=${be};`,Y={},K=(G,ee)=>{y.broadcastedIndicesToOffset=!0;let be=`${ee.name}broadcastedIndicesTo${e}Offset`;if(be in Y)return`${be}(${G})`;let et=[];for(let ze=u-1;ze>=0;ze--){let Ue=ee.indicesGet(\"outputIndices\",ze+ee.rank-u);et.push(`${N($,ze)} * (${Ue} % ${N(I,ze)})`)}return Y[be]=`fn ${be}(outputIndices: ${ee.type.indices}) -> u32 {\\n return ${et.length>0?et.join(\"+\"):\"0u\"};\\n }`,`${be}(${G})`},Q=(G,ee)=>(()=>{if(b.storage===b.value)return`${e}[${G}]=${ee};`;if(b.storage===\"vec2\"&&b.value===\"i32\")return`${e}[${G}]=vec2(u32(${ee}), select(0u, 0xFFFFFFFFu, ${ee} < 0));`;if(b.storage===\"vec2\"&&b.value===\"u32\")return`${e}[${G}]=vec2(u32(${ee}), 0u);`;if(b.storage===\"u32\"&&b.value===\"vec4\")return`${e}[${G}]=dot(vec4(0x1, 0x100, 0x10000, 0x1000000), vec4(${ee}));`;throw new Error(`not supported combination of storage type ${b.storage} and value type ${b.value} yet`)})(),Z=G=>(()=>{if(b.storage===b.value)return`${e}[${G}]`;if(b.storage===\"vec2\"&&b.value===\"i32\")return`i32(${e}[${G}].x)`;if(b.storage===\"vec2\"&&b.value===\"u32\")return`u32(${e}[${G}].x)`;if(b.storage===\"u32\"&&b.value===\"vec4\")return`vec4(bool(${e}[${G}] & 0xFFu), bool(${e}[${G}] & 0xFF00u), bool(${e}[${G}] & 0xFF0000u), bool(${e}[${G}] & 0xFF000000u))`;throw new Error(`not supported combination of storage type ${b.storage} and value type ${b.value} yet`)})(),Ee=u<2?\"\":`\\n fn get_${e}ByIndices(indices: ${b.indices}) -> ${h} {\\n return ${Z(`i2o_${e}(indices)`)};\\n }`,Pe=u<2?\"\":(()=>{let G=l.map(be=>`d${be}: u32`).join(\", \"),ee=l.map(be=>`d${be}`).join(\", \");return`\\n fn get_${e}(${G}) -> ${h} {\\n return get_${e}ByIndices(${T(ee)});\\n }`})(),fe=(...G)=>{if(G.length!==u)throw new Error(`indices length must be ${u}`);let ee=G.map(w).join(\",\");return u===0?Z(\"0u\"):u===1?Z(ee[0]):(y.get=!0,y.getByIndices=!0,y.indicesToOffset=!0,`get_${e}(${ee})`)},Ie=G=>u<2?Z(G):(y.getByIndices=!0,y.indicesToOffset=!0,`get_${e}ByIndices(${G})`),he=u<2?\"\":`\\n fn set_${e}ByIndices(indices: ${b.indices}, value: ${h}) {\\n ${Q(`i2o_${e}(indices)`,\"value\")}\\n }`,ye=u<2?\"\":(()=>{let G=l.map(be=>`d${be}: u32`).join(\", \"),ee=l.map(be=>`d${be}`).join(\", \");return`\\n fn set_${e}(${G}, value: ${h}) {\\n set_${e}ByIndices(${T(ee)}, value);\\n }`})();return{impl:()=>{let G=[],ee=!1;return y.offsetToIndices&&(G.push(E),ee=!0),y.indicesToOffset&&(G.push(R),ee=!0),y.broadcastedIndicesToOffset&&(Object.values(Y).forEach(be=>G.push(be)),ee=!0),y.set&&(G.push(ye),ee=!0),y.setByIndices&&(G.push(he),ee=!0),y.get&&(G.push(Pe),ee=!0),y.getByIndices&&(G.push(Ee),ee=!0),!s&&ee&&G.unshift(`const ${I} = ${b.indices}(${r.join(\",\")});`,`const ${$} = ${b.indices}(${U.computeStrides(r).join(\",\")});`),G.join(`\\n`)},type:b,offsetToIndices:A,indicesToOffset:V,broadcastedIndicesToOffset:K,indices:T,indicesGet:N,indicesSet:te,set:(...G)=>{if(G.length!==u+1)throw new Error(`indices length must be ${u}`);let ee=G[u];if(typeof ee!=\"string\")throw new Error(\"value must be string\");let be=G.slice(0,u).map(w).join(\",\");return u===0?Q(\"0u\",ee):u===1?Q(be[0],ee):(y.set=!0,y.setByIndices=!0,y.indicesToOffset=!0,`set_${e}(${be}, ${ee})`)},setByOffset:Q,setByIndices:(G,ee)=>u<2?Q(G,ee):(y.setByIndices=!0,y.indicesToOffset=!0,`set_${e}ByIndices(${G}, ${ee});`),get:fe,getByOffset:Z,getByIndices:Ie,usage:o,name:e,strides:$,shape:I,rank:u}},M=(e,t,r,o=1)=>Dn(e,t,r,\"input\",o),F=(e,t,r,o=1)=>Dn(e,t,r,\"output\",o),Fr=(e,t,r,o=1)=>Dn(e,t,r,\"internal\",o),Rn=class{constructor(t){this.normalizedDispatchGroup=t;this.internalVariables=[];this.variables=[];this.uniforms=[];this.variableIndex=0}guardAgainstOutOfBoundsWorkgroupSizes(t){return`if (global_idx >= ${typeof t==\"number\"?`${t}u`:t}) { return; }`}mainStart(t=md){let r=typeof t==\"number\"?t:t[0],o=typeof t==\"number\"?1:t[1],n=typeof t==\"number\"?1:t[2],s=this.normalizedDispatchGroup[1]===1&&this.normalizedDispatchGroup[2]===1,u=s?`@builtin(global_invocation_id) global_id : vec3,\\n @builtin(workgroup_id) workgroup_id : vec3,\\n @builtin(local_invocation_id) local_id : vec3`:`@builtin(local_invocation_id) local_id : vec3,\\n @builtin(local_invocation_index) local_idx : u32,\\n @builtin(workgroup_id) workgroup_id : vec3,\\n @builtin(num_workgroups) num_workgroups : vec3`,l=s?\"let global_idx = global_id.x; let local_idx = local_id.x;\":`let global_idx = (workgroup_id.z * num_workgroups[0] * num_workgroups[1] +\\n workgroup_id.y * num_workgroups[0] + workgroup_id.x) * ${r*o*n}u + local_idx;`;return`@compute @workgroup_size(${r}, ${o}, ${n})\\n fn main(${u}) {\\n ${l}\\n `}appendVariableUniforms(t){t.rank!==0&&(t.shape.startsWith(\"uniforms.\")&&this.uniforms.push({name:t.shape.replace(\"uniforms.\",\"\"),type:\"u32\",length:t.rank}),t.strides.startsWith(\"uniforms.\")&&this.uniforms.push({name:t.strides.replace(\"uniforms.\",\"\"),type:\"u32\",length:t.rank}))}declareVariable(t,r){if(t.usage===\"internal\")throw new Error(\"cannot use internal variable with declareVariable(). use registerInternalVariables() instead.\");this.variables.push(t),this.appendVariableUniforms(t);let o=t.usage===\"input\"?\"read\":\"read_write\",n=t.type.storage;return`@group(0) @binding(${r}) var ${t.name}: array<${n}>;`}declareVariables(...t){return t.map(r=>this.declareVariable(r,this.variableIndex++)).join(`\\n`)}registerInternalVariable(t){if(t.usage!==\"internal\")throw new Error(\"cannot use input or output variable with registerInternalVariable(). use declareVariables() instead.\");this.internalVariables.push(t),this.appendVariableUniforms(t)}registerInternalVariables(...t){return t.forEach(r=>this.registerInternalVariable(r)),this}registerUniform(t,r,o=1){return this.uniforms.push({name:t,type:r,length:o}),this}registerUniforms(t){return this.uniforms=this.uniforms.concat(t),this}uniformDeclaration(){if(this.uniforms.length===0)return\"\";let t=[];for(let{name:r,type:o,length:n}of this.uniforms)if(n&&n>4)t.push(`${r}:array, ${Math.ceil(n/4)}>`);else{let s=n==null||n===1?o:`vec${n}<${o}>`;t.push(`${r}:${s}`)}return`\\n struct Uniforms { ${t.join(\", \")} };\\n @group(0) @binding(${this.variableIndex}) var uniforms: Uniforms;`}get additionalImplementations(){return this.uniformDeclaration()+this.variables.map(t=>t.impl()).join(`\\n`)+this.internalVariables.map(t=>t.impl()).join(`\\n`)}},ma=e=>new Rn(e),Ft=(e,t)=>{let r=e.length,o=[];for(let n=0;n1&&u===1&&o.unshift(s)}return o},Re=e=>!0});var fd,fa,hd,gd,it,ha,ga,jt=j(()=>{\"use strict\";$e();je();ve();fd=e=>{if(!e||e.length!==1)throw new Error(\"Transpose requires 1 input.\")},fa=(e,t)=>t&&t.length!==e?[...new Array(e).keys()].reverse():t,hd=(e,t)=>U.sortBasedOnPerm(e,fa(e.length,t)),gd=(e,t,r,o)=>{let n=[];n.push(`fn perm(i: ${o.type.indices}) -> ${r.type.indices} {\\n var a: ${r.type.indices};`);for(let s=0;s{let r=e.dataType,o=e.dims.length,n=fa(o,t),s=Re(o),u=hd(e.dims,n),l=s?u.length:u,a=s?o:e.dims,p=F(\"output\",r,l),h=M(\"a\",r,a),g=b=>`\\n ${b.registerUniform(\"output_size\",\"u32\").declareVariables(h,p)}\\n\\n ${gd(n,o,h,p)}\\n\\n ${b.mainStart()}\\n ${b.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\\n\\n let indices = ${p.offsetToIndices(\"global_idx\")};\\n let aIndices = perm(indices);\\n\\n ${p.setByOffset(\"global_idx\",h.getByIndices(\"aIndices\"))}\\n }`;return{name:\"Transpose\",shaderCache:{hint:`${t}`,inputDependencies:s?[\"rank\"]:[\"dims\"]},getRunData:b=>{let w=U.size(u);return{outputs:[{dims:u,dataType:b[0].dataType}],dispatchGroup:{x:Math.ceil(w/64)},programUniforms:s?[{type:\"uint32\",data:w},...L(b[0].dims),...L(u)]:[{type:\"uint32\",data:w}]}},getShaderSource:g}},ha=(e,t)=>{fd(e.inputs),e.compute(it(e.inputs[0],t.perm))},ga=e=>ge({perm:e.perm})});var yd,bd,wd,vd,$d,Sd,xd,_d,Cd,Id,ct,ya,ba,wa,va,$a,Sa,xa,_a,Ca,Ia,Aa=j(()=>{\"use strict\";$e();ve();jr();jt();yd={max:\"select(bestValue, candidate, candidate > bestValue)\",min:\"select(bestValue, candidate, candidate < bestValue)\",mean:\"bestValue + candidate\",sum:\"bestValue + candidate\",prod:\"bestValue * candidate\",sumSquare:\"bestValue + candidate * candidate\",logSumExp:\"bestValue + exp(candidate)\",l1:\"bestValue + abs(candidate)\",l2:\"bestValue + candidate * candidate\",logSum:\"bestValue + candidate\"},bd={max:\"select(bestValue, candidate, candidate > bestValue)\",min:\"select(bestValue, candidate, candidate < bestValue)\",mean:\"bestValue + candidate\",sum:\"bestValue + candidate\",prod:\"bestValue * candidate\",sumSquare:\"bestValue + candidate\",logSumExp:\"bestValue + candidate\",l1:\"bestValue + candidate\",l2:\"bestValue + candidate\",logSum:\"bestValue + candidate\"},wd={max:\"_A[offset]\",min:\"_A[offset]\",mean:\"0\",sum:\"0\",prod:\"1\",sumSquare:\"0\",logSumExp:\"0\",l1:\"0\",l2:\"0\",logSum:\"0\"},vd={max:\"bestValue\",min:\"bestValue\",sum:\"bestValue\",prod:\"bestValue\",sumSquare:\"bestValue\",logSumExp:\"log(bestValue)\",l1:\"bestValue\",l2:\"sqrt(bestValue)\",logSum:\"log(bestValue)\"},$d=(e,t)=>{let r=[];for(let o=t-e;o{let r=[],o=e.length;for(let s=0;se[s]);return[r,n]},xd=(e,t)=>{let r=e.length+t.length,o=[],n=0;for(let s=0;s{for(let r=0;r{let r=[];if(!_d(e,t)){for(let o=0;or.push(o))}return r},Id=(e,t,r,o,n,s,u)=>{let l=r[0].dims,a=U.size(s),p=U.size(u),h=M(\"_A\",r[0].dataType,l),g=F(\"output\",n,s),b=32,w=`\\n var aBestValues : array<${g.type.storage}, ${b}>;\\n `;return{name:e,shaderCache:t,getShaderSource:_=>`\\n ${_.registerUniform(\"reduceSize\",\"u32\").declareVariables(h,g)}\\n ${w}\\n fn DIV_CEIL(a : u32, b : u32) -> u32 {\\n return ((a - 1u) / b + 1u);\\n }\\n ${_.mainStart(b)}\\n\\n let outputIndex = global_idx / ${b};\\n let offset = outputIndex * uniforms.reduceSize;\\n\\n var bestValue = ${g.type.storage}(${wd[o]});\\n let Length = uniforms.reduceSize;\\n for (var k = local_idx; k < Length; k = k + ${b}) {\\n let candidate = ${g.type.storage}(${h.getByOffset(\"offset + k\")});\\n bestValue = ${yd[o]};\\n }\\n aBestValues[local_idx] = bestValue;\\n workgroupBarrier();\\n\\n var reduceSize = min(Length, ${b}u);\\n for (var currentSize = reduceSize / 2u; reduceSize > 1u;\\n currentSize = reduceSize / 2u) {\\n let interval = DIV_CEIL(reduceSize, 2u);\\n if (local_idx < currentSize) {\\n let candidate = aBestValues[local_idx + interval];\\n bestValue = ${bd[o]};\\n aBestValues[local_idx] = bestValue;\\n }\\n reduceSize = interval;\\n workgroupBarrier();\\n }\\n\\n if (local_idx == 0u) {\\n ${g.setByOffset(\"outputIndex\",`${o===\"mean\"?`bestValue / ${g.type.storage}(uniforms.reduceSize)`:`${vd[o]}`}`)};\\n }\\n }`,getRunData:()=>({outputs:[{dims:s,dataType:n}],dispatchGroup:{x:a},programUniforms:[{type:\"uint32\",data:p}]})}},ct=(e,t,r,o)=>{let n=e.inputs.length===1?r:Mn(e.inputs,r),s=n.axes;s.length===0&&!n.noopWithEmptyAxes&&(s=e.inputs[0].dims.map((w,y)=>y));let u=U.normalizeAxes(s,e.inputs[0].dims.length),l=u,a=e.inputs[0],p=Cd(l,e.inputs[0].dims.length);p.length>0&&(a=e.compute(it(e.inputs[0],p),{inputs:[0],outputs:[-1]})[0],l=$d(l.length,a.dims.length));let[h,g]=Sd(a.dims,l),b=h;n.keepDims&&(b=xd(h,u)),e.compute(Id(t,{hint:n.cacheKey,inputDependencies:[\"type\"]},[a],o,e.inputs[0].dataType,b,g),{inputs:[a]})},ya=(e,t)=>{ct(e,\"ReduceMeanShared\",t,\"mean\")},ba=(e,t)=>{ct(e,\"ReduceL1Shared\",t,\"l1\")},wa=(e,t)=>{ct(e,\"ReduceL2Shared\",t,\"l2\")},va=(e,t)=>{ct(e,\"ReduceLogSumExpShared\",t,\"logSumExp\")},$a=(e,t)=>{ct(e,\"ReduceMaxShared\",t,\"max\")},Sa=(e,t)=>{ct(e,\"ReduceMinShared\",t,\"min\")},xa=(e,t)=>{ct(e,\"ReduceProdShared\",t,\"prod\")},_a=(e,t)=>{ct(e,\"ReduceSumShared\",t,\"sum\")},Ca=(e,t)=>{ct(e,\"ReduceSumSquareShared\",t,\"sumSquare\")},Ia=(e,t)=>{ct(e,\"ReduceLogSumShared\",t,\"logSum\")}});var pt,Ad,qr,Mn,mt,Td,Ed,Od,Pd,kd,Rd,Bd,Dd,Md,zd,ft,Ta,Ea,Oa,Pa,ka,Ra,Ba,Da,Ma,za,jr=j(()=>{\"use strict\";$e();je();ve();Aa();pt=e=>{if(!e||e.length===0||e.length>2)throw new Error(\"Reduce op requires 1 or 2 inputs.\");if(e.length===2&&e[1].dims.length!==1)throw new Error(\"Invalid axes input dims.\")},Ad=e=>[\"\",\"\",`var value = ${e.getByIndices(\"input_indices\")};`,\"\"],qr=(e,t,r,o,n,s,u=!1,l=!1)=>{let a=[],p=r[0].dims,h=p.length,g=U.normalizeAxes(n,h),b=!l&&g.length===0;p.forEach((I,$)=>{b||g.indexOf($)>=0?u&&a.push(1):a.push(I)});let w=a.length,y=U.size(a);return{name:e,shaderCache:t,getShaderSource:I=>{let $=[],x=M(\"_A\",r[0].dataType,h),E=F(\"output\",s,w),A=o(x,E,g),z=A[2];for(let R=0,V=0;R=0?(u&&V++,z=`for(var j${R}: u32 = 0; j${R} < ${p[R]}; j${R}++) {\\n ${A[2].includes(\"last_index\")?`let last_index = j${R};`:\"\"}\\n ${x.indicesSet(\"input_indices\",R,`j${R}`)}\\n ${z}\\n }`):($.push(`${x.indicesSet(\"input_indices\",R,E.indicesGet(\"output_indices\",V))};`),V++);return`\\n\\n ${I.registerUniform(\"output_size\",\"u32\").declareVariables(x,E)}\\n\\n ${I.mainStart()}\\n ${I.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\\n var input_indices: ${x.type.indices};\\n let output_indices = ${E.offsetToIndices(\"global_idx\")};\\n\\n ${$.join(`\\n`)}\\n ${A[0]} // init ops for reduce max/min\\n ${A[1]}\\n ${z}\\n ${A[3]}\\n ${A.length===4?E.setByOffset(\"global_idx\",\"value\"):A.slice(4).join(`\\n`)}\\n }`},getRunData:()=>({outputs:[{dims:a,dataType:s}],dispatchGroup:{x:Math.ceil(y/64)},programUniforms:[{type:\"uint32\",data:y},...L(p),...L(a)]})}},Mn=(e,t)=>{let r=[];return e[1].dims[0]>0&&e[1].getBigInt64Array().forEach(o=>r.push(Number(o))),ge({axes:r,keepDims:t.keepDims,noopWithEmptyAxes:t.noopWithEmptyAxes})},mt=(e,t,r,o)=>{let n=e.inputs,s=n.length===1?r:Mn(n,r);e.compute(qr(t,{hint:s.cacheKey,inputDependencies:[\"rank\"]},[n[0]],s.noopWithEmptyAxes&&s.axes.length===0?Ad:o,s.axes,n[0].dataType,s.keepDims,s.noopWithEmptyAxes),{inputs:[0]})},Td=(e,t)=>{pt(e.inputs),mt(e,\"ReduceLogSum\",t,(o,n)=>[`var value = ${n.type.storage}(0);`,\"\",`value += ${o.getByIndices(\"input_indices\")};`,\"value = log(value);\"])},Ed=(e,t)=>{pt(e.inputs),mt(e,\"ReduceL1\",t,(o,n)=>[`var value = ${n.type.storage}(0);`,\"\",`value += abs(${o.getByIndices(\"input_indices\")});`,\"\"])},Od=(e,t)=>{pt(e.inputs),mt(e,\"ReduceL2\",t,(o,n)=>[`var t = ${n.type.value}(0); var value = ${n.type.value}(0);`,\"\",`t = ${o.getByIndices(\"input_indices\")}; value += (t * t);`,\"value = sqrt(value);\"])},Pd=(e,t)=>{pt(e.inputs),mt(e,\"ReduceLogSumExp\",t,(o,n)=>[`var value = ${n.type.storage}(0);`,\"\",`value += exp(${o.getByIndices(\"input_indices\")});`,\"value = log(value);\"])},kd=(e,t)=>{pt(e.inputs),mt(e,\"ReduceMax\",t,(o,n,s)=>{let u=[];for(let l=0;l=0||s.length===0)&&u.push(o.indicesSet(\"input_indices\",l,0));return[`${u.join(`\\n`)}`,`var value = ${o.getByIndices(\"input_indices\")};`,`value = max(value, ${o.getByIndices(\"input_indices\")});`,\"\"]})},Rd=(e,t)=>{pt(e.inputs),mt(e,\"ReduceMean\",t,(o,n,s)=>{let u=1;for(let l=0;l=0||s.length===0)&&(u*=e.inputs[0].dims[l]);return[\"var sum = f32(0);\",\"\",`sum += f32(${o.getByIndices(\"input_indices\")});`,`let value = ${n.type.value}(sum / ${u});`]})},Bd=(e,t)=>{pt(e.inputs),mt(e,\"ReduceMin\",t,(o,n,s)=>{let u=[];for(let l=0;l=0||s.length===0)&&u.push(`input_indices[${l}] = 0;`);return[`${u.join(`\\n`)}`,`var value = ${o.getByIndices(\"input_indices\")};`,`value = min(value, ${o.getByIndices(\"input_indices\")});`,\"\"]})},Dd=(e,t)=>{pt(e.inputs),mt(e,\"ReduceProd\",t,(o,n)=>[`var value = ${n.type.storage}(1);`,\"\",`value *= ${o.getByIndices(\"input_indices\")};`,\"\"])},Md=(e,t)=>{pt(e.inputs),mt(e,\"ReduceSum\",t,(o,n)=>[`var value = ${n.type.storage}(0);`,\"\",`value += ${o.getByIndices(\"input_indices\")};`,\"\"])},zd=(e,t)=>{pt(e.inputs),mt(e,\"ReduceSumSquare\",t,(o,n)=>[`var t = ${n.type.value}(0); var value = ${n.type.value}(0);`,\"\",`t = ${o.getByIndices(\"input_indices\")}; value += t * t;`,\"\"])},ft=(e,t,r)=>{if(t.length===0)return r;let o=1,n=1;for(let s=0;s1024},Ta=(e,t)=>{ft(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Rd(e,t):ya(e,t)},Ea=(e,t)=>{ft(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Ed(e,t):ba(e,t)},Oa=(e,t)=>{ft(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Od(e,t):wa(e,t)},Pa=(e,t)=>{ft(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Pd(e,t):va(e,t)},ka=(e,t)=>{ft(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?kd(e,t):$a(e,t)},Ra=(e,t)=>{ft(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Bd(e,t):Sa(e,t)},Ba=(e,t)=>{ft(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Dd(e,t):xa(e,t)},Da=(e,t)=>{ft(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Md(e,t):_a(e,t)},Ma=(e,t)=>{ft(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?zd(e,t):Ca(e,t)},za=(e,t)=>{ft(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Td(e,t):Ia(e,t)}});var Ua,Va,Na,zn,Wa=j(()=>{\"use strict\";Ne();je();jr();Ua=e=>{if(!e||e.length===0||e.length>2)throw new Error(\"ArgMinMaxOp op requires 1 or 2 inputs.\");if(e[0].dataType!==1)throw new Error(\"Invalid input type.\")},Va=(e,t)=>{Ua(e.inputs);let r=(o,n,s)=>{let u=[];for(let l=0;l=0||s.length===0)&&u.push(`input_indices[${l}] = 0;`);return[`${u.join(`\\n`)}`,`var value = ${o.getByIndices(\"input_indices\")};\\nvar best_index : i32 = 0;`,`if (${o.getByIndices(\"input_indices\")} ${t.selectLastIndex>0?\"<=\":\"<\"} value) {\\n value = ${o.getByIndices(\"input_indices\")};\\n best_index = i32(last_index);\\n }`,\"\",n.setByOffset(\"global_idx\",\"best_index\")]};e.compute(qr(\"ArgMin\",{hint:t.cacheKey,inputDependencies:[\"rank\"]},[e.inputs[0]],r,[t.axis],7,t.keepDims),{inputs:[0]})},Na=(e,t)=>{Ua(e.inputs);let r=(o,n,s)=>{let u=[];for(let l=0;l=0||s.length===0)&&u.push(`input_indices[${l}] = 0;`);return[`${u.join(`\\n`)}`,`var value = ${o.getByIndices(\"input_indices\")};\\nvar best_index : i32 = 0;`,`if (${o.getByIndices(\"input_indices\")} ${t.selectLastIndex>0?\">=\":\">\"} value) {\\n value = ${o.getByIndices(\"input_indices\")};\\n best_index = i32(last_index);\\n }`,\"\",n.setByOffset(\"global_idx\",\"best_index\")]};e.compute(qr(\"argMax\",{hint:t.cacheKey,inputDependencies:[\"rank\"]},[e.inputs[0]],r,[t.axis],7,t.keepDims),{inputs:[0]})},zn=e=>ge(e)});var Ud,Vd,Nd,Wd,Kr,Hd,Ha,Un=j(()=>{\"use strict\";Ne();Nr();ve();Ud=(e,t)=>{let r=e[0],o=e[1],n=e[2],s=e[3],u=e[4],l=e[5];if(u&&l)throw new Error(\"Attention cannot have both past and relative_position_bias\");if(r.dims.length!==3)throw new Error(\\'Input \"input\" must have 3 dimensions\\');let a=r.dims[0],p=r.dims[1],h=r.dims[2];if(n.dims.length!==1)throw new Error(\\'Input \"bias\" is expected to have 1 dimensions\\');if(o.dims.length!==2)throw new Error(\\'Input \"weights\" is expected to have 2 dimensions\\');if(o.dims[0]!==h)throw new Error(\"Input 1 dimension 0 should have same length as dimension 2 of input 0\");if(n.dims[0]!==o.dims[1])throw new Error(\\'Input \"bias\" dimension 0 should have same length as dimension 1 of input \"weights\"\\');let g=n.dims[0]/3,b=g,w=b;if(t.qkvHiddenSizes.length>0){if(t.qkvHiddenSizes.length!==3)throw new Error(\"qkv_hidden_sizes attribute should have 3 elements\");for(let E of t.qkvHiddenSizes)if(E%t.numHeads!==0)throw new Error(\"qkv_hidden_sizes should be divisible by num_heads\");g=t.qkvHiddenSizes[0],b=t.qkvHiddenSizes[1],w=t.qkvHiddenSizes[2]}let y=p;if(g!==b)throw new Error(\"qkv_hidden_sizes first element should be same as the second\");if(n.dims[0]!==g+b+w)throw new Error(\\'Input \"bias\" dimension 0 should have same length as sum of Q/K/V hidden sizes\\');let _=0;if(u){if(b!==w)throw new Error(\\'Input \"past\" expect k_hidden_size == v_hidden_size\\');if(u.dims.length!==5)throw new Error(\\'Input \"past\" must have 5 dimensions\\');if(u.dims[0]!==2)throw new Error(\\'Input \"past\" first dimension must be 2\\');if(u.dims[1]!==a)throw new Error(\\'Input \"past\" second dimension must be batch_size\\');if(u.dims[2]!==t.numHeads)throw new Error(\\'Input \"past\" third dimension must be num_heads\\');if(u.dims[4]!==b/t.numHeads)throw new Error(\\'Input \"past\" fifth dimension must be k_hidden_size / num_heads\\');t.pastPresentShareBuffer||(_=u.dims[3])}let I=y+_,$=-1,x=0;if(s)throw new Error(\"Mask not supported\");if(u)throw new Error(\"past is not supported\");if(l)throw new Error(\"relativePositionBias is not supported\");return{batchSize:a,sequenceLength:p,pastSequenceLength:_,kvSequenceLength:y,totalSequenceLength:I,maxSequenceLength:$,inputHiddenSize:h,hiddenSize:g,vHiddenSize:w,headSize:Math.floor(g/t.numHeads),vHeadSize:Math.floor(w/t.numHeads),numHeads:t.numHeads,isUnidirectional:!1,pastPresentShareBuffer:!1,maskFilterValue:t.maskFilterValue,maskType:x,scale:t.scale,broadcastResPosBias:!1,passPastInKv:!1,qkvFormat:1}},Vd=(e,t,r,o)=>{let n=Fe(o),s=64,u=o/n;u{let w=F(\"x\",t.dataType,t.dims,n),y=\"thread_max_vector\";n===2?y=\"max(thread_max_vector.x, thread_max_vector.y)\":n===4&&(y=\"max(max(thread_max_vector.x, thread_max_vector.y), max(thread_max_vector.z, thread_max_vector.w))\");let _=lt(t.dataType),I=[{name:\"d_inv\",type:_},{name:\"d_comp\",type:\"u32\"},{name:\"elements_per_wg\",type:\"u32\"}];return`\\n var wgMax: array;\\n var wgSum: array;\\n ${b.registerUniforms(I).declareVariables(w)}\\n ${b.mainStart([s,1,1])}\\n let localOffset = local_idx * uniforms.elements_per_wg;\\n let offset: u32 = workgroup_id.x * uniforms.d_comp + localOffset;\\n\\n var thread_max_vector = ${Ze(\"f32\",n,\"-3.402823e+38f\")};\\n for (var i: u32 = 0; i < uniforms.elements_per_wg && i + localOffset < uniforms.d_comp; i++) {\\n thread_max_vector = max(${at(_,n,\"x[offset + i]\")}, thread_max_vector);\\n }\\n wgMax[local_idx] = ${y};\\n workgroupBarrier();\\n\\n var maxValue = -3.402823e+38f;\\n for (var i = 0u; i < ${s}; i++) {\\n maxValue = max(wgMax[i], maxValue);\\n }\\n\\n var sumVector = ${Ze(\"f32\",n,\"0\")};\\n for (var i: u32 = 0; i < uniforms.elements_per_wg && i + localOffset < uniforms.d_comp; i++) {\\n sumVector += exp(${at(_,n,\"x[offset + i]\")} - maxValue);\\n }\\n wgSum[local_idx] = ${Je(\"sumVector\",n)};\\n workgroupBarrier();\\n\\n var sum: f32 = 0;\\n for (var i = 0u; i < ${s}; i++) {\\n sum += wgSum[i];\\n }\\n\\n if (sum == 0) {\\n for (var i: u32 = 0; i < uniforms.elements_per_wg && i + localOffset < uniforms.d_comp; i++) {\\n x[offset + i] = ${Ze(\"f32\",n,\"uniforms.d_inv\")};\\n }\\n } else {\\n for (var i: u32 = 0; i < uniforms.elements_per_wg && i + localOffset < uniforms.d_comp; i++) {\\n let f32input = ${at(_,n,\"x[offset + i]\")};\\n x[offset + i] = ${w.type.value}(exp(f32input - maxValue) / sum);\\n }\\n }\\n }`};e.compute({name:\"AttentionProbsSoftmax\",shaderCache:{hint:`${s};${h};${n}`},getShaderSource:g,getRunData:()=>({outputs:[],dispatchGroup:{x:r},programUniforms:p})},{inputs:[t],outputs:[]})},Nd=(e,t,r,o,n,s)=>{let u=[n.batchSize,n.numHeads,n.sequenceLength,n.kvSequenceLength+n.pastSequenceLength],l=s.scale===0?1/Math.sqrt(n.headSize):s.scale,a=Fe(n.headSize),p=n.headSize/a,h=12,g={x:Math.ceil(n.totalSequenceLength/h),y:Math.ceil(n.sequenceLength/h),z:n.batchSize*n.numHeads},b=Xe(t.dataType),w=[{type:\"uint32\",data:n.sequenceLength},{type:\"uint32\",data:p},{type:\"uint32\",data:n.totalSequenceLength},{type:\"uint32\",data:n.kvSequenceLength},{type:b,data:l}],y=[t,r],_=$=>{let x=M(\"q\",t.dataType,t.dims,a),E=M(\"key\",r.dataType,r.dims,a),A=F(\"output\",t.dataType,u),z=Le(t.dataType),R=[{name:\"M\",type:\"u32\"},{name:\"K\",type:\"u32\"},{name:\"N\",type:\"u32\"},{name:\"kv_sequence_length\",type:\"u32\"},{name:\"alpha\",type:z}];return`\\n const beta: ${z} = 1.0;\\n const TILE_SIZE = ${h}u;\\n\\n var tileQ: array<${x.type.storage}, ${h*h}>;\\n var tileK: array<${x.type.storage}, ${h*h}>;\\n ${$.registerUniforms(R).declareVariables(x,E,A)}\\n ${$.mainStart([h,h,1])}\\n // x holds the N and y holds the M\\n let headIdx = workgroup_id.z;\\n let m = workgroup_id.y * TILE_SIZE;\\n let n = workgroup_id.x * TILE_SIZE;\\n let lm = m + local_id.y;\\n let ln = n + local_id.x;\\n\\n let qOffset = uniforms.M * uniforms.K * headIdx + m * uniforms.K;\\n let kOffset = uniforms.kv_sequence_length * uniforms.K * headIdx + n * uniforms.K;\\n\\n var value = ${Ze(z,a)};\\n for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {\\n if (m + local_id.y < uniforms.M && w + local_id.x < uniforms.K) {\\n tileQ[TILE_SIZE * local_id.y + local_id.x] = q[qOffset + local_id.y * uniforms.K + w + local_id.x];\\n }\\n if (n + local_id.y < uniforms.N && w + local_id.x < uniforms.K) {\\n tileK[TILE_SIZE * local_id.y + local_id.x] = key[kOffset + local_id.y * uniforms.K + w + local_id.x];\\n }\\n workgroupBarrier();\\n\\n for (var k: u32 = 0u; k({outputs:[{dims:u,dataType:t.dataType,gpuDataType:0}],dispatchGroup:g,programUniforms:w}),getShaderSource:_},{inputs:y,outputs:[-1]})[0];return Vd(e,I,n.batchSize*n.numHeads*n.sequenceLength,n.totalSequenceLength),I},Wd=(e,t,r,o)=>{let n=[o.batchSize,o.sequenceLength,o.vHiddenSize],s=12,u={x:Math.ceil(o.vHeadSize/s),y:Math.ceil(o.sequenceLength/s),z:o.batchSize*o.numHeads},l=[{type:\"uint32\",data:o.sequenceLength},{type:\"uint32\",data:o.totalSequenceLength},{type:\"uint32\",data:o.vHeadSize},{type:\"uint32\",data:o.numHeads},{type:\"uint32\",data:o.vHiddenSize}],a=p=>{let h=M(\"probs\",t.dataType,t.dims),g=M(\"v\",r.dataType,r.dims),b=F(\"output\",t.dataType,n),w=[{name:\"M\",type:\"u32\"},{name:\"K\",type:\"u32\"},{name:\"N\",type:\"u32\"},{name:\"num_heads\",type:\"u32\"},{name:\"v_hidden_size\",type:\"u32\"}];return`\\n const TILE_SIZE = ${s}u;\\n var tileQ: array<${h.type.value}, ${s*s}>;\\n var tileK: array<${h.type.value}, ${s*s}>;\\n ${p.registerUniforms(w).declareVariables(h,g,b)}\\n ${p.mainStart([s,s,1])}\\n let headIdx = workgroup_id.z;\\n let m = workgroup_id.y * TILE_SIZE + local_id.y;\\n let n = workgroup_id.x * TILE_SIZE + local_id.x;\\n\\n let offsetA = headIdx * (uniforms.M * uniforms.K) + m * uniforms.K;\\n let offsetB = headIdx * (uniforms.N * uniforms.K) + n;\\n\\n var value = ${h.type.storage}(0);\\n for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {\\n if (m < uniforms.M && w + local_id.x < uniforms.K) {\\n tileQ[TILE_SIZE * local_id.y + local_id.x] = probs[offsetA + w + local_id.x];\\n }\\n if (n < uniforms.N && w + local_id.y < uniforms.K) {\\n tileK[TILE_SIZE * local_id.y + local_id.x] = v[offsetB + (w + local_id.y) * uniforms.N];\\n }\\n workgroupBarrier();\\n for (var k: u32 = 0u; k({outputs:[{dims:n,dataType:t.dataType,gpuDataType:0}],dispatchGroup:u,programUniforms:l}),getShaderSource:a},{inputs:[t,r],outputs:[0]})[0]},Kr=(e,t,r,o,n,s,u,l,a,p,h)=>{let g=Nd(e,t,r,a,p,h);Wd(e,g,o,p)},Hd=(e,t)=>{let r=[t.batchSize,t.numHeads,t.sequenceLength,t.headSize],o=t.sequenceLength,n=t.inputHiddenSize,s=t.headSize,u=12,l={x:Math.ceil(t.headSize/u),y:Math.ceil(t.sequenceLength/u),z:t.batchSize*t.numHeads},a=[e.inputs[0],e.inputs[1],e.inputs[2]],p=[{type:\"uint32\",data:o},{type:\"uint32\",data:n},{type:\"uint32\",data:s},{type:\"uint32\",data:t.numHeads},{type:\"uint32\",data:t.headSize},{type:\"uint32\",data:t.hiddenSize},{type:\"uint32\",data:t.hiddenSize+t.hiddenSize+t.vHiddenSize}],h=g=>{let b=F(\"output_q\",a[0].dataType,r),w=F(\"output_k\",a[0].dataType,r),y=F(\"output_v\",a[0].dataType,r),_=M(\"input\",a[0].dataType,a[0].dims),I=M(\"weight\",a[1].dataType,a[1].dims),$=M(\"bias\",a[2].dataType,a[2].dims),x=_.type.storage,E=[{name:\"M\",type:\"u32\"},{name:\"K\",type:\"u32\"},{name:\"N\",type:\"u32\"},{name:\"num_heads\",type:\"u32\"},{name:\"head_size\",type:\"u32\"},{name:\"hidden_size\",type:\"u32\"},{name:\"ldb\",type:\"u32\"}];return`\\n const TILE_SIZE = ${u}u;\\n var tileInput: array<${x}, ${u*u}>;\\n var tileWeightQ: array<${x}, ${u*u}>;\\n var tileWeightK: array<${x}, ${u*u}>;\\n var tileWeightV: array<${x}, ${u*u}>;\\n ${g.registerUniforms(E).declareVariables(_,I,$,b,w,y)}\\n ${g.mainStart([u,u,1])}\\n let batchIndex = workgroup_id.z / uniforms.num_heads;\\n let headNumber = workgroup_id.z % uniforms.num_heads;\\n let m = workgroup_id.y * TILE_SIZE + local_id.y;\\n let n = workgroup_id.x * TILE_SIZE + local_id.x;\\n\\n let inputOffset = batchIndex * (uniforms.M * uniforms.K) + m * uniforms.K;\\n let biasOffsetQ = headNumber * uniforms.head_size;\\n let biasOffsetK = uniforms.hidden_size + biasOffsetQ;\\n let biasOffsetV = uniforms.hidden_size + biasOffsetK;\\n\\n var valueQ = ${x}(0);\\n var valueK = ${x}(0);\\n var valueV = ${x}(0);\\n for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {\\n if (m < uniforms.M && w + local_id.x < uniforms.K) {\\n tileInput[TILE_SIZE * local_id.y + local_id.x] = input[inputOffset + w + local_id.x];\\n }\\n if (n < uniforms.N && w + local_id.y < uniforms.K) {\\n let offset = n + (w + local_id.y) * uniforms.ldb;\\n tileWeightQ[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetQ + offset];\\n tileWeightK[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetK + offset];\\n tileWeightV[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetV + offset];\\n }\\n workgroupBarrier();\\n for (var k: u32 = 0u; k({outputs:[{dims:r,dataType:e.inputs[0].dataType,gpuDataType:0},{dims:r,dataType:e.inputs[0].dataType,gpuDataType:0},{dims:r,dataType:e.inputs[0].dataType,gpuDataType:0}],dispatchGroup:l,programUniforms:p}),getShaderSource:h},{inputs:a,outputs:[-1,-1,-1]})},Ha=(e,t)=>{let r=Ud(e.inputs,t),[o,n,s]=Hd(e,r);return Kr(e,o,n,s,e.inputs[4],void 0,void 0,void 0,e.inputs[5],r,t)}});var Gd,Ld,Fd,Ga,La=j(()=>{\"use strict\";Lt();$e();je();ve();Gd=(e,t)=>{if(!e||e.length!==5)throw new Error(\"BatchNormalization requires 5 inputs\");let r=(o,n,s)=>{let u=n.length;if(u!==o.length)throw new Error(`${s}: num dimensions != ${u}`);n.forEach((l,a)=>{if(l!==o[a])throw new Error(`${s}: dim[${a}] do not match`)})};if(e[0].dims.length>1){let o=t.format===\"NHWC\"?t.spatial?e[0].dims.slice(-1):e[0].dims.slice(-1).concat(e[0].dims.slice(1,e[0].dims.length-1)):e[0].dims.slice(1,t.spatial?2:void 0);r(e[1].dims,o,\"Invalid input scale\"),r(e[2].dims,o,\"Invalid input B\"),r(e[3].dims,o,\"Invalid input mean\"),r(e[4].dims,o,\"Invalid input var\")}else r(e[1].dims,[1],\"Invalid input scale\"),r(e[2].dims,[1],\"Invalid input B\"),r(e[3].dims,[1],\"Invalid input mean\"),r(e[4].dims,[1],\"Invalid input var\")},Ld=(e,t)=>{let{epsilon:r,spatial:o,format:n}=t,s=e[0].dims,u=o?Fe(s[s.length-1]):1,l=n===\"NHWC\"&&s.length>1?u:1,a=U.size(s)/u,p=Re(s.length)&&o,h=p?s.length:s,g=M(\"x\",e[0].dataType,e[0].dims,u),b=M(\"scale\",e[1].dataType,e[1].dims,l),w=M(\"bias\",e[2].dataType,e[2].dims,l),y=M(\"inputMean\",e[3].dataType,e[3].dims,l),_=M(\"inputVar\",e[4].dataType,e[4].dims,l),I=F(\"y\",e[0].dataType,h,u),$=()=>{let E=\"\";if(o)E=`let cOffset = ${s.length===1?\"0u\":n===\"NHWC\"?`outputIndices[${s.length-1}] / ${u}`:\"outputIndices[1]\"};`;else if(n===\"NCHW\")E=`\\n ${I.indicesSet(\"outputIndices\",\"0\",\"0\")}\\n let cOffset = ${I.indicesToOffset(\"outputIndices\")};`;else{E=`var cIndices = ${b.type.indices}(0);\\n cIndices[0] = outputIndices[${s.length-1}];`;for(let A=1;A`\\n const epsilon = ${r};\\n ${E.registerUniform(\"outputSize\",\"u32\").declareVariables(g,b,w,y,_,I)}\\n ${E.mainStart()}\\n ${E.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\\n var outputIndices = ${I.offsetToIndices(`global_idx * ${u}`)};\\n ${$()}\\n let scale = ${b.getByOffset(\"cOffset\")};\\n let bias = ${w.getByOffset(\"cOffset\")};\\n let inputMean = ${y.getByOffset(\"cOffset\")};\\n let inputVar = ${_.getByOffset(\"cOffset\")};\\n let x = ${g.getByOffset(\"global_idx\")};\\n let value = (x - inputMean) * inverseSqrt(inputVar + epsilon) * scale + bias;\\n ${I.setByOffset(\"global_idx\",\"value\")}\\n }`;return{name:\"BatchNormalization\",shaderCache:{hint:`${t.epsilon}_${t.format}_${o}_${u}`,inputDependencies:p?[\"rank\",\"type\",\"type\",\"type\",\"type\"]:void 0},getShaderSource:x,getRunData:()=>({outputs:[{dims:e[0].dims,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:p?[{type:\"uint32\",data:a},...L(s)]:[{type:\"uint32\",data:a}]})}},Fd=e=>ge(e),Ga=(e,t)=>{let{inputs:r,outputCount:o}=e,n=Fd({...t,outputCount:o});if(Gt.webgpu.validateInputContent&&Gd(r,n),t.trainingMode)throw new Error(\"BatchNormalization trainingMode is not supported yet.\");e.compute(Ld(r,n))}});var jd,qd,Fa,ja=j(()=>{\"use strict\";$e();ve();jd=e=>{if(e[0].dims.length!==3)throw new Error(\"input should have 3 dimensions\");if(![320,640,1280].includes(e[0].dims[2]))throw new Error(\"number of channels should be 320, 640 or 1280\");if(e[1].dims.length!==1)throw new Error(\"bias is expected to have 1 dimensions\");if(e[0].dims[2]!==e[1].dims[0])throw new Error(\"last dimension of input and bias are not the same\")},qd=e=>{let t=e[0].dims,r=e[0].dims[2],o=U.size(t)/4,n=e[0].dataType,s=M(\"input\",n,t,4),u=M(\"bias\",n,[r],4),l=M(\"residual\",n,t,4),a=F(\"output\",n,t,4);return{name:\"BiasAdd\",getRunData:()=>({outputs:[{dims:t,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(o/64)}}),getShaderSource:h=>`\\n const channels = ${r}u / 4;\\n ${h.declareVariables(s,u,l,a)}\\n\\n ${h.mainStart()}\\n ${h.guardAgainstOutOfBoundsWorkgroupSizes(o)}\\n let value = ${s.getByOffset(\"global_idx\")}\\n + ${u.getByOffset(\"global_idx % channels\")} + ${l.getByOffset(\"global_idx\")};\\n ${a.setByOffset(\"global_idx\",\"value\")}\\n }`}},Fa=e=>{jd(e.inputs),e.compute(qd(e.inputs))}});var Kd,Ae,qa,Ka,Ya,Za,Qa,Xa,Ja,ei,ti,Yd,ri,ni,oi,ai,Yr,ii,Zr,si,ui,di,li,ci,pi,mi,fi,hi,gi,yi,bi,wi,vi,$i,Si,xi,Vn=j(()=>{\"use strict\";Ne();$e();je();ve();Kd=(e,t,r,o,n,s)=>{let u=Math.ceil(t/4),l=\"\";typeof n==\"string\"?l=`${n}(a)`:l=n(\"a\");let a=M(\"inputData\",r,[u],4),p=F(\"outputData\",o,[u],4);return`\\n ${e.registerUniform(\"vec_size\",\"u32\").declareVariables(a,p)}\\n\\n ${s??\"\"}\\n\\n ${e.mainStart()}\\n ${e.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.vec_size\")}\\n\\n let a = ${a.getByOffset(\"global_idx\")};\\n ${p.setByOffset(\"global_idx\",l)}\\n }`},Ae=(e,t,r,o,n,s=e.dataType)=>({name:t,shaderCache:{hint:n,inputDependencies:[\"type\"]},getShaderSource:u=>Kd(u,U.size(e.dims),e.dataType,s,r,o),getRunData:u=>({outputs:[{dims:e.dims,dataType:s}],dispatchGroup:{x:Math.ceil(U.size(u[0].dims)/64/4)},programUniforms:[{type:\"uint32\",data:Math.ceil(U.size(e.dims)/4)}]})}),qa=e=>{e.compute(Ae(e.inputs[0],\"Abs\",\"abs\"))},Ka=e=>{e.compute(Ae(e.inputs[0],\"Acos\",\"acos\"))},Ya=e=>{e.compute(Ae(e.inputs[0],\"Acosh\",\"acosh\"))},Za=e=>{e.compute(Ae(e.inputs[0],\"Asin\",\"asin\"))},Qa=e=>{e.compute(Ae(e.inputs[0],\"Asinh\",\"asinh\"))},Xa=e=>{e.compute(Ae(e.inputs[0],\"Atan\",\"atan\"))},Ja=e=>{e.compute(Ae(e.inputs[0],\"Atanh\",\"atanh\"))},ei=e=>ge(e),ti=(e,t)=>{let r;switch(t.to){case 10:r=\"vec4\";break;case 1:r=\"vec4\";break;case 12:r=\"vec4\";break;case 6:r=\"vec4\";break;case 9:r=\"vec4\";break;default:throw new RangeError(`not supported type (specified in attribute \\'to\\' from \\'Cast\\' operator): ${t.to}`)}e.compute(Ae(e.inputs[0],\"Cast\",r,void 0,t.cacheKey,t.to))},Yd=e=>{let t=e.length>=2&&e[1].data!==0?e[1].getFloat32Array()[0]:Gr,r=e.length>=3&&e[2].data!==0?e[2].getFloat32Array()[0]:Lr;return ge({min:t,max:r})},ri=(e,t)=>{let r=e.inputs.length===1?t:Yd(e.inputs),o=lt(e.inputs[0].dataType);e.compute(Ae(e.inputs[0],\"Clip\",n=>`clamp(${n}, clip_min_, clip_max_)`,`\\n const clip_min_: vec4<${o}> = vec4(${o}(${r.min}));\\n const clip_max_: vec4<${o}> = vec4(${o}(${r.max}));\\n`,r.cacheKey),{inputs:[0]})},ni=e=>{e.compute(Ae(e.inputs[0],\"Ceil\",\"ceil\"))},oi=e=>{e.compute(Ae(e.inputs[0],\"Cos\",\"cos\"))},ai=e=>{e.compute(Ae(e.inputs[0],\"Cosh\",\"cosh\"))},Yr=e=>ge(e),ii=(e,t)=>{let r=lt(e.inputs[0].dataType);e.compute(Ae(e.inputs[0],\"Elu\",o=>`elu_vf32(${o})`,`\\n const elu_alpha_ = ${r}(${t.alpha});\\n\\n fn elu_f32(a: ${r}) -> ${r} {\\n return select((exp(a) - 1.0) * elu_alpha_, a, a >= 0.0);\\n }\\n\\n fn elu_vf32(v: vec4<${r}>) -> vec4<${r}> {\\n return vec4(elu_f32(v.x), elu_f32(v.y), elu_f32(v.z), elu_f32(v.w));\\n }`,t.cacheKey))},Zr=(e,t=\"f32\")=>`\\nconst r0: ${t} = 0.3275911;\\nconst r1: ${t} = 0.254829592;\\nconst r2: ${t} = -0.284496736;\\nconst r3: ${t} = 1.421413741;\\nconst r4: ${t} = -1.453152027;\\nconst r5: ${t} = 1.061405429;\\n\\nfn erf_vf32(v: ${e}) -> ${e} {\\n let absv = abs(v);\\n let x = 1.0 / (1.0 + r0 * absv);\\n return sign(v) * (1.0 - ((((r5 * x + r4) * x + r3) * x + r2) * x + r1) * x * exp(-absv * absv));\\n}`,si=e=>{let t=lt(e.inputs[0].dataType);e.compute(Ae(e.inputs[0],\"Erf\",r=>`erf_vf32(${r})`,Zr(`vec4<${t}>`,t)))},ui=e=>{e.compute(Ae(e.inputs[0],\"Exp\",\"exp\"))},di=e=>{e.compute(Ae(e.inputs[0],\"Floor\",\"floor\"))},li=e=>{let t=lt(e.inputs[0].dataType);e.compute(Ae(e.inputs[0],\"Gelu\",r=>`0.5 * ${r} * (1.0 + erf_vf32(${r} * 0.7071067811865475))`,Zr(`vec4<${t}>`,t)))},ci=(e,t)=>{let r=lt(e.inputs[0].dataType);e.compute(Ae(e.inputs[0],\"LeakyRelu\",o=>`select(leaky_relu_alpha_ * ${o}, ${o}, ${o} >= vec4<${r}>(0.0))`,`const leaky_relu_alpha_ = ${r}(${t.alpha});`,t.cacheKey))},pi=e=>{e.compute(Ae(e.inputs[0],\"Not\",t=>`!${t}`))},mi=e=>{e.compute(Ae(e.inputs[0],\"Neg\",t=>`-${t}`))},fi=e=>{e.compute(Ae(e.inputs[0],\"Reciprocal\",t=>`1.0/${t}`))},hi=e=>{let t=lt(e.inputs[0].dataType);e.compute(Ae(e.inputs[0],\"Relu\",r=>`select(vec4<${t}>(0.0), ${r}, ${r} > vec4<${t}>(0.0))`))},gi=e=>{e.compute(Ae(e.inputs[0],\"Sigmoid\",t=>`(1.0 / (1.0 + exp(-${t})))`))},yi=e=>{e.compute(Ae(e.inputs[0],\"Sin\",\"sin\"))},bi=e=>{e.compute(Ae(e.inputs[0],\"Sinh\",\"sinh\"))},wi=e=>{e.compute(Ae(e.inputs[0],\"Sqrt\",\"sqrt\"))},vi=e=>{e.compute(Ae(e.inputs[0],\"Tan\",\"tan\"))},$i=e=>{e.compute(Ae(e.inputs[0],\"Tanh\",\"tanh\"))},Si=(e,t)=>{let r=lt(e.inputs[0].dataType);return e.compute(Ae(e.inputs[0],\"ThresholdedRelu\",o=>`select(vec4<${r}>(0.0), ${o}, ${o} > thresholded_relu_alpha_)`,`const thresholded_relu_alpha_ = vec4<${r}>(${t.alpha});`,t.cacheKey)),0},xi=e=>{e.compute(Ae(e.inputs[0],\"Log\",\"log\"))}});var Qd,Xd,_i,Ci=j(()=>{\"use strict\";$e();ve();Vn();Qd=e=>{if(e[0].dims.length!==3)throw new Error(\"input should have 3 dimensions\");if(![2560,5120,10240].includes(e[0].dims[2]))throw new Error(\"hidden state should be 2560, 5120 or 10240\");if(e[1].dims.length!==1)throw new Error(\"bias is expected to have 1 dimensions\");if(e[0].dims[2]!==e[1].dims[0])throw new Error(\"last dimension of input and bias are not the same\")},Xd=e=>{let t=e[0].dims.slice();t[2]=t[2]/2;let r=M(\"input\",e[0].dataType,e[0].dims,4),o=M(\"bias\",e[0].dataType,[e[0].dims[2]],4),n=F(\"output\",e[0].dataType,t,4),s=U.size(t)/4,u=Le(e[0].dataType);return{name:\"BiasSplitGelu\",getRunData:()=>({outputs:[{dims:t,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(s/64)}}),getShaderSource:a=>`\\n const M_SQRT2 = sqrt(2.0);\\n const halfChannels = ${e[0].dims[2]/4/2}u;\\n\\n ${a.declareVariables(r,o,n)}\\n\\n ${Zr(`vec4<${u}>`,u)}\\n\\n ${a.mainStart()}\\n ${a.guardAgainstOutOfBoundsWorkgroupSizes(s)}\\n let biasIdx = global_idx % halfChannels;\\n let batchIndex = global_idx / halfChannels;\\n let inputOffset = biasIdx + batchIndex * halfChannels * 2;\\n let valueLeft = input[inputOffset] + bias[biasIdx];\\n let valueRight = input[inputOffset + halfChannels] + bias[biasIdx + halfChannels];\\n let geluRight = valueRight * 0.5 * (erf_vf32(valueRight / M_SQRT2) + 1);\\n\\n ${n.setByOffset(\"global_idx\",\"valueLeft * geluRight\")}\\n }`}},_i=e=>{Qd(e.inputs),e.compute(Xd(e.inputs))}});var Jd,el,ht,Ii,Ai,Ti,Ei,Oi,Pi,ki,Ri,Bi,Di,Mi=j(()=>{\"use strict\";Ne();$e();ve();Jd=(e,t,r,o,n,s,u,l,a,p,h,g,b)=>{let w,y;typeof l==\"string\"?w=y=(R,V)=>`${l}((${R}),(${V}))`:typeof l==\"function\"?w=y=l:(w=l.scalar,y=l.vector);let _=g?t.length:t,I=g?r.length:r,$=g?o.length:o,x=F(\"outputData\",h,$,4),E=M(\"aData\",a,_,4),A=M(\"bData\",p,I,4),z;if(n)if(s){let R=U.size(t)===1,V=U.size(r)===1,T=t.length>0&&t[t.length-1]%4===0,N=r.length>0&&r[r.length-1]%4===0;R||V?z=x.setByOffset(\"global_idx\",y(R?`${E.type.value}(${E.getByOffset(\"0\")}.x)`:E.getByOffset(\"global_idx\"),V?`${A.type.value}(${A.getByOffset(\"0\")}.x)`:A.getByOffset(\"global_idx\"))):z=`\\n let outputIndices = ${x.offsetToIndices(\"global_idx * 4u\")};\\n let offsetA = ${E.broadcastedIndicesToOffset(\"outputIndices\",x)};\\n let offsetB = ${A.broadcastedIndicesToOffset(\"outputIndices\",x)};\\n ${x.setByOffset(\"global_idx\",y(u||T?E.getByOffset(\"offsetA / 4u\"):`${E.type.value}(${E.getByOffset(\"offsetA / 4u\")}[offsetA % 4u])`,u||N?A.getByOffset(\"offsetB / 4u\"):`${A.type.value}(${A.getByOffset(\"offsetB / 4u\")}[offsetB % 4u])`))}\\n `}else z=x.setByOffset(\"global_idx\",y(E.getByOffset(\"global_idx\"),A.getByOffset(\"global_idx\")));else{if(!s)throw new Error(\"no necessary to use scalar implementation for element-wise binary op implementation.\");let R=(V,T,N=\"\")=>{let te=`aData[indexA${T}][componentA${T}]`,Y=`bData[indexB${T}][componentB${T}]`;return`\\n let outputIndices${T} = ${x.offsetToIndices(`global_idx * 4u + ${T}u`)};\\n let offsetA${T} = ${E.broadcastedIndicesToOffset(`outputIndices${T}`,x)};\\n let offsetB${T} = ${A.broadcastedIndicesToOffset(`outputIndices${T}`,x)};\\n let indexA${T} = offsetA${T} / 4u;\\n let indexB${T} = offsetB${T} / 4u;\\n let componentA${T} = offsetA${T} % 4u;\\n let componentB${T} = offsetB${T} % 4u;\\n ${V}[${T}] = ${N}(${w(te,Y)});\\n `};h===9?z=`\\n var data = vec4(0);\\n ${R(\"data\",0,\"u32\")}\\n ${R(\"data\",1,\"u32\")}\\n ${R(\"data\",2,\"u32\")}\\n ${R(\"data\",3,\"u32\")}\\n outputData[global_idx] = dot(vec4(0x1, 0x100, 0x10000, 0x1000000), vec4(data));`:z=`\\n ${R(\"outputData[global_idx]\",0)}\\n ${R(\"outputData[global_idx]\",1)}\\n ${R(\"outputData[global_idx]\",2)}\\n ${R(\"outputData[global_idx]\",3)}\\n `}return`\\n ${e.registerUniform(\"vec_size\",\"u32\").declareVariables(E,A,x)}\\n\\n ${b??\"\"}\\n\\n ${e.mainStart()}\\n ${e.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.vec_size\")}\\n ${z}\\n }`},el=(e,t,r,o,n,s,u=r.dataType)=>{let l=!U.areEqual(r.dims,o.dims),a=r.dims,p=U.size(r.dims),h=!1,g=!1,b=[l];if(l){let y=dt.calcShape(r.dims,o.dims,!1);if(!y)throw new Error(\"Can\\'t perform binary op on the given tensors\");a=y,p=U.size(a);let _=U.size(r.dims)===1,I=U.size(o.dims)===1,$=r.dims.length>0&&r.dims[r.dims.length-1]%4===0,x=o.dims.length>0&&o.dims[o.dims.length-1]%4===0;b.push(_),b.push(I),b.push($),b.push(x);let E=1;for(let A=1;Ay.toString()).join(\"_\"),inputDependencies:w?[\"rank\",\"rank\"]:[\"dims\",\"dims\"]},getShaderSource:y=>Jd(y,r.dims,o.dims,a,h,l,g,n,r.dataType,o.dataType,u,w,s),getRunData:()=>({outputs:[{dims:a,dataType:u}],dispatchGroup:{x:Math.ceil(p/64/4)},programUniforms:w?[{type:\"uint32\",data:Math.ceil(U.size(a)/4)},...L(r.dims),...L(o.dims),...L(a)]:[{type:\"uint32\",data:Math.ceil(U.size(a)/4)}]})}},ht=(e,t,r,o,n,s)=>{e.compute(el(t,n??\"\",e.inputs[0],e.inputs[1],r,o,s))},Ii=e=>{ht(e,\"Add\",(t,r)=>`${t}+${r}`)},Ai=e=>{ht(e,\"Div\",(t,r)=>`${t}/${r}`)},Ti=e=>{ht(e,\"Equal\",{scalar:(t,r)=>`u32(${t}==${r})`,vector:(t,r)=>`vec4(${t}==${r})`},void 0,void 0,9)},Ei=e=>{ht(e,\"Mul\",(t,r)=>`${t}*${r}`)},Oi=e=>{let t=M(\"input\",e.inputs[0].dataType,e.inputs[0].dims).type.value;ht(e,\"Pow\",{scalar:(o,n)=>`pow_custom(${o},${n})`,vector:(o,n)=>`pow_vector_custom(${o},${n})`},`\\n fn pow_custom(a : ${t}, b : ${t}) -> ${t} {\\n if (b == ${t}(0.0)) {\\n return ${t}(1.0);\\n } else if (a < ${t}(0.0) && f32(b) != floor(f32(b))) {\\n return ${t}(pow(f32(a), f32(b))); // NaN\\n }\\n return select(sign(a), ${t}(1.0), round(f32(abs(b) % ${t}(2.0))) != 1.0) * ${t}(${t===\"i32\"?\"round\":\"\"}(pow(f32(abs(a)), f32(b))));\\n }\\n fn pow_vector_custom(a : vec4<${t}>, b : vec4<${t}>) -> vec4<${t}> {\\n // TODO: implement vectorized pow\\n return vec4<${t}>(pow_custom(a.x, b.x), pow_custom(a.y, b.y), pow_custom(a.z, b.z), pow_custom(a.w, b.w));\\n }\\n `)},Pi=e=>{ht(e,\"Sub\",(t,r)=>`${t}-${r}`)},ki=e=>{ht(e,\"Greater\",{scalar:(t,r)=>`u32(${t}>${r})`,vector:(t,r)=>`vec4(${t}>${r})`},void 0,void 0,9)},Ri=e=>{ht(e,\"Less\",{scalar:(t,r)=>`u32(${t}<${r})`,vector:(t,r)=>`vec4(${t}<${r})`},void 0,void 0,9)},Bi=e=>{ht(e,\"GreaterOrEqual\",{scalar:(t,r)=>`u32(${t}>=${r})`,vector:(t,r)=>`vec4(${t}>=${r})`},void 0,void 0,9)},Di=e=>{ht(e,\"LessOrEqual\",{scalar:(t,r)=>`u32(${t}<=${r})`,vector:(t,r)=>`vec4(${t}<=${r})`},void 0,void 0,9)}});var rl,nl,ol,al,zi,Ui,Vi=j(()=>{\"use strict\";$e();je();ve();rl=e=>{if(!e||e.length<1)throw new Error(\"too few inputs\");let t=e[0].dataType,r=e[0].dims.length;for(let o of e){if(o.dataType!==t)throw new Error(\"input tensors should be one type\");if(o.dims.length!==r)throw new Error(\"input tensors should have the same shape\")}},nl=(e,t)=>`\\n fn calculateInputIndex(index: u32) -> u32 {\\n let sizeInConcatAxis = array(${t});\\n for (var i: u32 = 0u; i < ${e}; i += 1u ) {\\n if (index < sizeInConcatAxis[i]) {\\n return i;\\n }\\n }\\n return ${e}u;\\n }`,ol=(e,t)=>{let r=e.length,o=[];for(let n=0;n{let r=e[0].dims.slice();if(t>=r.length||t<-1*r.length)throw new Error(\"axis specified for concat doesn\\'t match input dimensionality\");let o=t<0?r.length+t:t,n=r.slice(0);for(let A=1;A`uniforms.sizeInConcatAxis${A}`).join(\",\"),E=A=>`\\n\\n ${(()=>{A.registerUniform(\"outputSize\",\"u32\");for(let z=0;z(${x});\\n ${$} -= sizeInConcatAxis[inputIndex - 1u];\\n }\\n\\n ${ol(l,I)}\\n }`;return{name:\"Concat\",shaderCache:{hint:`${t}`,inputDependencies:h},getRunData:()=>({outputs:[{dims:n,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(s/64)},programUniforms:w}),getShaderSource:E}},zi=(e,t)=>{rl(e.inputs),e.compute(al(e.inputs,t.axis))},Ui=e=>ge({axis:e.axis})});var gt,Qr,It=j(()=>{\"use strict\";$e();gt=(e,t)=>{switch(e.activation){case\"Relu\":return{activationFunction:\"\",applyActivation:`value = max(value, ${t}(0.0));`};case\"Sigmoid\":return{activationFunction:\"\",applyActivation:`value = (${t}(1.0) / (${t}(1.0) + exp(-value)));`};case\"Clip\":return{activationFunction:`const clip_min_=${t}(${e.clipMin});const clip_max_=${t}(${e.clipMax});`,applyActivation:\"value = clamp(value, clip_min_, clip_max_);\"};default:return{activationFunction:\"\",applyActivation:\"\"}}},Qr=e=>{let t=e?.activation||\"\";if(t===\"Clip\"){let[r,o]=e?.activation_params||[Gr,Lr];return{activation:t,clipMax:o,clipMin:r,activationCacheKey:`${t}:${r},${o}`}}return{activation:t,activationCacheKey:t}}});var Ke,Xr,Jr=j(()=>{\"use strict\";Ke=(e,t)=>{switch(e){case 1:return t;case 2:return`vec2<${t}>`;case 3:return`vec3<${t}>`;case 4:return`vec4<${t}>`;default:throw new Error(`${e}-component is not supported.`)}},Xr=e=>`\\n ${e?\"value = value + getBiasByOutputCoords(coords);\":\"\"}\\n `});var en,Nn=j(()=>{\"use strict\";en=e=>`\\nfn getIndexFromCoords4D(coords : vec4, shape : vec4) -> i32 {\\n return dot(coords, vec4(\\n shape.y * shape.z * shape.w, shape.z * shape.w, shape.w, 1));\\n}\\nfn getOutputIndexFromCoords(coords : vec4) -> i32 {\\n return dot(coords, vec4(\\n i32(${e}.x), i32(${e}.y), i32(${e}.z), 1));\\n}\\n`});var il,sl,mr,Ni,ul,fr,dl,tn,hr=j(()=>{\"use strict\";$e();ve();It();Jr();il=(e,t)=>e?`\\n mm_Asub[inputRow][inputCol] = mm_readA(batch,\\n kStart + inputRow,\\n globalRowStart / innerElementSize + inputCol${t?\", batchIndices\":\"\"});\\n `:`\\n mm_Asub[inputRow][inputCol] = mm_readA(batch,\\n globalRow + innerRow,\\n kStart / innerElementSize + inputCol${t?\", batchIndices\":\"\"});\\n `,sl=(e,t)=>e?`\\n let ACached0 = mm_Asub[k * innerElementSize][localRow];\\n let ACached1 = mm_Asub[k * innerElementSize + 1][localRow];\\n let ACached2 = mm_Asub[k * innerElementSize + 2][localRow];\\n ${t===3?\"\":\"let ACached3 = mm_Asub[k * innerElementSize + 3][localRow];\"}\\n for (var i = 0; i < rowPerThread; i = i + 1) {\\n acc[i] = BCached0 * ACached0[i] + acc[i];\\n acc[i] = BCached1 * ACached1[i] + acc[i];\\n acc[i] = BCached2 * ACached2[i] + acc[i];\\n ${t===3?\"\":\"acc[i] = BCached3 * ACached3[i] + acc[i];\"}\\n }`:`\\n for (var i = 0; i < rowPerThread; i = i + 1) {\\n let ACached = mm_Asub[tileRow + i][k];\\n acc[i] = BCached0 * ACached.x + acc[i];\\n acc[i] = BCached1 * ACached.y + acc[i];\\n acc[i] = BCached2 * ACached.z + acc[i];\\n ${t===3?\"\":\"acc[i] = BCached3 * ACached.w + acc[i];\"}\\n }`,mr=(e,t,r=\"f32\",o,n=!1,s=32,u=!1,l=32)=>{let a=t[1]*e[1],p=t[0]*e[0],h=n?a:s,g=n?s:a,b=h/t[0],w=s/t[1];if(!((n&&b===4&&e[1]===4||!n&&(b===3||b===4))&&h%t[0]===0&&s%t[1]===0&&e[0]===4))throw new Error(`If transposeA ${n} is true, innerElementSize ${b} and workPerThread[1] ${e[1]} must be 4.\\n Otherwise, innerElementSize ${b} must be 3 or 4.\\n tileAWidth ${h} must be divisible by workgroupSize[0]${t[0]}. tileInner ${s} must be divisible by workgroupSize[1] ${t[1]}. colPerThread ${e[0]} must be 4.`);return`\\nvar mm_Asub: array, ${h/b}>, ${g}>;\\nvar mm_Bsub: array, ${p/e[0]}>, ${s}>;\\n\\nconst rowPerThread = ${e[1]};\\nconst colPerThread = ${e[0]};\\nconst innerElementSize = ${b};\\nconst tileInner = ${s};\\n\\n@compute @workgroup_size(${t[0]}, ${t[1]}, ${t[2]})\\nfn main(@builtin(local_invocation_id) localId : vec3,\\n @builtin(global_invocation_id) globalId : vec3,\\n @builtin(workgroup_id) workgroupId : vec3) {\\n let localRow = i32(localId.y);\\n let tileRow = localRow * rowPerThread;\\n let tileCol = i32(localId.x);\\n\\n let globalRow =i32(globalId.y) * rowPerThread;\\n let globalCol = i32(globalId.x);\\n let batch = ${u?\"0\":\"i32(globalId.z)\"};\\n ${o?`let batchIndices = ${o.offsetToIndices(\"u32(batch)\")};`:\"\"}\\n let globalRowStart = i32(workgroupId.y) * ${a};\\n\\n let numTiles = ${u?`${Math.ceil(l/s)}`:\"(uniforms.dimInner - 1) / tileInner + 1\"};\\n var kStart = ${u?`i32(globalId.z) * ${l}`:\"0\"};\\n\\n var acc: array, rowPerThread>;\\n\\n // Loop over shared dimension.\\n let tileRowB = localRow * ${w};\\n for (var t = 0; t < numTiles; t = t + 1) {\\n // Load one tile of A into local memory.\\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\\n let inputRow = tileRow + innerRow;\\n let inputCol = tileCol;\\n ${il(n,o)}\\n }\\n\\n // Load one tile of B into local memory.\\n for (var innerRow = 0; innerRow < ${w}; innerRow = innerRow + 1) {\\n let inputRow = tileRowB + innerRow;\\n let inputCol = tileCol;\\n mm_Bsub[inputRow][inputCol] = mm_readB(batch, kStart + inputRow, globalCol${o?\", batchIndices\":\"\"});\\n }\\n kStart = kStart + tileInner;\\n workgroupBarrier();\\n\\n // Compute acc values for a single thread.\\n for (var k = 0; k < tileInner / innerElementSize; k = k + 1) {\\n let BCached0 = mm_Bsub[k * innerElementSize][tileCol];\\n let BCached1 = mm_Bsub[k * innerElementSize + 1][tileCol];\\n let BCached2 = mm_Bsub[k * innerElementSize + 2][tileCol];\\n ${b===3?\"\":\"let BCached3 = mm_Bsub[k * innerElementSize + 3][tileCol];\"}\\n\\n ${sl(n,b)}\\n }\\n\\n workgroupBarrier();\\n }\\n\\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\\n mm_write(batch, globalRow + innerRow, globalCol, acc[innerRow]);\\n }\\n}`},Ni=(e,t)=>e?`\\n mm_Asub[inputRow][inputCol] = mm_readA(batch,\\n kStart + inputRow,\\n globalRowStart + inputCol${t?\", batchIndices\":\"\"});\\n `:`\\n mm_Asub[inputRow][inputCol] = mm_readA(batch,\\n globalRowStart + inputRow,\\n kStart + inputCol${t?\", batchIndices\":\"\"});\\n `,ul=e=>e?\"let ACached = mm_Asub[k][tileRow + innerRow];\":\"let ACached = mm_Asub[tileRow + innerRow][k];\",fr=(e,t,r=\"f32\",o,n=!1,s=32,u=!1,l=32,a=!1)=>{let p=e[1]*t[1],h=e[0]*t[0],g=n?p:s,b=n?s:p;if(!(b%t[1]===0&&g%t[0]===0&&s%t[1]===0))throw new Error(`tileAHight ${b} must be divisible by workgroupSize[1]${t[1]}, tileAWidth ${g} must be divisible by workgroupSize[0]${t[0]}, tileInner ${s} must be divisible by workgroupSize[1]${t[1]}`);let w=b/t[1],y=g/t[0],_=s/t[1],I=a?`\\n let localRow = i32(localId.y);\\n let localCol = i32(localId.x);\\n let globalRowStart = i32(workgroupId.y) * ${p};\\n let globalColStart = i32(workgroupId.x) * ${h};\\n\\n // Loop over shared dimension.\\n for (var t = 0; t < numTiles; t = t + 1) {\\n // Load one tile of A into local memory.\\n for (var inputRow = localRow; inputRow < ${b}; inputRow = inputRow + ${t[1]}) {\\n for (var inputCol = localCol; inputCol < ${g}; inputCol = inputCol + ${t[0]}) {\\n ${Ni(n,o)}\\n }\\n }\\n // Load one tile of B into local memory.\\n for (var inputRow = localRow; inputRow < ${s}; inputRow = inputRow + ${t[1]}) {\\n for (var inputCol = localCol; inputCol < ${h}; inputCol = inputCol + ${t[0]}) {\\n mm_Bsub[inputRow][inputCol] = mm_readB(batch,\\n kStart + inputRow,\\n globalColStart + inputCol${o?\", batchIndices\":\"\"});\\n }\\n }\\n kStart = kStart + tileInner;\\n workgroupBarrier();\\n\\n // Compute acc values for a single thread.\\n var BCached : array<${r}, colPerThread>;\\n for (var k = 0; k < tileInner; k = k + 1) {\\n for (var inner = 0; inner < colPerThread; inner = inner + 1) {\\n BCached[inner] = mm_Bsub[k][localCol + inner * ${t[0]}];\\n }\\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\\n let ACached = ${n?`mm_Asub[k][localRow + innerRow * ${t[1]}];`:`mm_Asub[localRow + innerRow * ${t[1]}][k];`}\\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\\n acc[innerRow][innerCol] = acc[innerRow][innerCol] +\\n ACached * BCached[innerCol];\\n }\\n }\\n }\\n workgroupBarrier();\\n }\\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\\n let gRow = globalRowStart + localRow + innerRow * ${t[1]};\\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\\n let gCol = globalColStart + localCol + innerCol * ${t[0]};\\n mm_write(batch, gRow, gCol, acc[innerRow][innerCol]);\\n }\\n }\\n `:`\\nlet tileRow = i32(localId.y) * rowPerThread;\\nlet tileCol = i32(localId.x) * colPerThread;\\n\\nlet globalRow = i32(globalId.y) * rowPerThread;\\nlet globalCol = i32(globalId.x) * colPerThread;\\nlet globalRowStart = i32(workgroupId.y) * ${p};\\n\\nlet tileRowA = i32(localId.y) * ${w};\\nlet tileColA = i32(localId.x) * ${y};\\nlet tileRowB = i32(localId.y) * ${_};\\n// Loop over shared dimension.\\nfor (var t = 0; t < numTiles; t = t + 1) {\\n // Load one tile of A into local memory.\\n for (var innerRow = 0; innerRow < ${w}; innerRow = innerRow + 1) {\\n for (var innerCol = 0; innerCol < ${y}; innerCol = innerCol + 1) {\\n let inputRow = tileRowA + innerRow;\\n let inputCol = tileColA + innerCol;\\n ${Ni(n,o)}\\n }\\n }\\n\\n // Load one tile of B into local memory.\\n for (var innerRow = 0; innerRow < ${_}; innerRow = innerRow + 1) {\\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\\n let inputRow = tileRowB + innerRow;\\n let inputCol = tileCol + innerCol;\\n mm_Bsub[inputRow][inputCol] = mm_readB(batch,\\n kStart + inputRow,\\n globalCol + innerCol${o?\", batchIndices\":\"\"});\\n }\\n }\\n kStart = kStart + tileInner;\\n workgroupBarrier();\\n\\n // Compute acc values for a single thread.\\n var BCached : array<${r}, colPerThread>;\\n for (var k = 0; k < tileInner; k = k + 1) {\\n for (var inner = 0; inner < colPerThread; inner = inner + 1) {\\n BCached[inner] = mm_Bsub[k][tileCol + inner];\\n }\\n\\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\\n ${ul(n)}\\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\\n acc[innerRow][innerCol] = acc[innerRow][innerCol] + ACached * BCached[innerCol];\\n }\\n }\\n }\\n\\n workgroupBarrier();\\n}\\n\\nfor (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\\n mm_write(batch, globalRow + innerRow, globalCol + innerCol,\\n acc[innerRow][innerCol]);\\n }\\n}\\n`;return`\\n var mm_Asub : array, ${b}>;\\n var mm_Bsub : array, ${s}>;\\n const rowPerThread = ${e[1]};\\n const colPerThread = ${e[0]};\\n const tileInner = ${s};\\n\\n@compute @workgroup_size(${t[0]}, ${t[1]}, ${t[2]})\\nfn main(@builtin(local_invocation_id) localId : vec3,\\n @builtin(global_invocation_id) globalId : vec3,\\n @builtin(workgroup_id) workgroupId : vec3) {\\n let batch = ${u?\"0\":\"i32(globalId.z)\"};\\n ${o?`let batchIndices = ${o.offsetToIndices(\"u32(batch)\")};`:\"\"}\\n let numTiles = ${u?`${Math.ceil(l/s)}`:\"(uniforms.dimInner - 1) / tileInner + 1\"};\\n var kStart = ${u?`i32(globalId.z) * ${l}`:\"0\"};\\n\\n var acc : array, rowPerThread>;\\n\\n // Without this initialization strange values show up in acc.\\n for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\\n for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\\n acc[innerRow][innerCol] = 0.0;\\n }\\n }\\n ${I}\\n }\\n`},dl=(e,t,r,o,n,s=!1)=>{let[u,l,a]=n,[p,h,g,b]=o,w=Ft(u,a),y=Ft(l,a),_=Le(o[0].type.tensor),I=()=>{let E=h.rank,A=p.rank,z=`var aIndices: ${h.type.indices};`;for(let R=E-2-1,V=A-1;R>=0;R--,V--)z+=`\\naIndices[${R}] = ${A>1?`batchIndices[${V}]`:\"batchIndices\"};`;return w.forEach(R=>{z+=`\\naIndices[${R}] = 0;`}),z+=`\\naIndices[${E-2}] = u32(row);\\n aIndices[${E-1}] = u32(colIn);`,z},$=()=>{let E=g.rank,A=p.rank,z=`var bIndices: ${g.type.indices};`;for(let R=E-2-1,V=A-1;R>=0;R--,V--)z+=`\\nbIndices[${R}] = ${A>1?`batchIndices[${V}]`:\"batchIndices\"};`;return y.forEach(R=>{z+=`\\nbIndices[${R}] = 0;`}),z+=`\\nbIndices[${E-2}] = u32(row);\\n bIndices[${E-1}] = u32(colIn);`,z};return`\\n fn mm_readA(batch: i32, row: i32, colIn: i32, batchIndices: ${p.type.indices}) -> ${Ke(e,_)} {\\n var value = ${Ke(e,_)}(0.0);\\n let col = colIn * ${e};\\n if(row < uniforms.dimAOuter && col < uniforms.dimInner)\\n {\\n ${I()}\\n value = ${h.getByIndices(\"aIndices\")};\\n }\\n return value;\\n }\\n\\n fn mm_readB(batch: i32, row: i32, colIn: i32, batchIndices: ${p.type.indices}) -> ${Ke(e,_)} {\\n var value = ${Ke(e,_)}(0.0);\\n let col = colIn * ${e};\\n if(row < uniforms.dimInner && col < uniforms.dimBOuter)\\n {\\n ${$()}\\n value = ${g.getByIndices(\"bIndices\")};\\n }\\n return value;\\n }\\n\\n fn mm_write(batch: i32, row: i32, colIn: i32, valueIn: ${Ke(e,_)}) {\\n let col = colIn * ${e};\\n if (row < uniforms.dimAOuter && col < uniforms.dimBOuter) {\\n var value = valueIn;\\n let coords = vec3(batch, row, colIn);\\n ${t?`value = value + ${s?\"bias[colIn]\":`${Ke(e,_)}(bias[row])`};`:\"\"}\\n ${r}\\n ${b.setByIndices(\"vec3(coords)\",\"value\")}\\n }\\n }\\n `},tn=(e,t,r,o,n=!1)=>{let s=e[0].dims,u=e[1].dims,l=s.slice(0,-2),a=u.slice(0,-2),p=o?o.slice(0,-2):r.slice(0,-2),h=Re(p.length),g=h?p.length:p,b=Fr(\"batchDims\",e[0].dataType,g,1),w=U.size(p),y=s[s.length-2],_=s[s.length-1],I=u[u.length-1],$=_%4===0&&I%4===0,x=y<=8?[4,1,1]:[4,4,1],E=[8,8,1],A=[Math.ceil(I/E[0]/x[0]),Math.ceil(y/E[1]/x[1]),Math.ceil(w/E[2]/x[2])],z=Le(e[0].dataType),R=$?4:1,V=[...l,y,_/R],T=Re(V.length),N=T?V.length:V,te=[...a,_,I/R],Y=Re(te.length),K=Y?te.length:te,Q=[w,y,I/R],Z=M(\"a\",e[0].dataType,N,R),Ee=M(\"b\",e[1].dataType,K,R),Pe=F(\"result\",e[0].dataType,Q.length,R),fe=[Z,Ee],Ie=[{type:\"int32\",data:y},{type:\"int32\",data:I},{type:\"int32\",data:_}];h&&Ie.push(...L(p)),T&&Ie.push(...L(V)),Y&&Ie.push(...L(te));let he=[];he.push(T?\"rank\":\"dims\"),he.push(Y?\"rank\":\"dims\");let ye=e.length>2,{activationFunction:We,applyActivation:De}=gt(t,Pe.type.value),Ge=dl(R,ye,De,[b,Z,Ee,Pe],[l,a,p],n);if(ye){let ee=n?R:1;fe.push(M(\"bias\",e[2].dataType,e[2].dims.length,ee)),Ie.push(...L(e[2].dims)),he.push(\"rank\")}Ie.push(...L(Q));let G=ee=>`\\n ${ee.registerUniform(\"dimAOuter\",\"i32\").registerUniform(\"dimBOuter\",\"i32\").registerUniform(\"dimInner\",\"i32\").registerInternalVariables(b).declareVariables(...fe,Pe)}\\n ${We}\\n ${Ge}\\n ${$?mr(x,E,z,b):fr(x,E,z,b)}\\n `;return{name:\"MatMul\",shaderCache:{hint:t.activationCacheKey+`${x}${$}${n}`,inputDependencies:he},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:A[0],y:A[1],z:A[2]},programUniforms:Ie}),getShaderSource:G}}});var ll,Wi,Hi=j(()=>{\"use strict\";Ct();ve();It();Jr();Nn();hr();ll=(e,t,r,o,n=!1,s,u=4,l=4,a=4,p=\"f32\")=>{let h=Y=>{switch(Y){case 1:return\"resData = x[xIndex];\";case 3:return`resData = vec3<${p}>(x[xIndex], x[xIndex + 1], x[xIndex + 2]);`;case 4:return\"resData = x[xIndex / 4];\";default:throw new Error(`innerElementSize ${Y} is not supported.`)}},g=Y=>{switch(Y){case 1:return\"return w[row * i32(uniforms.w_shape[3]) + colIn];\";case 4:return\"return w[row * i32(uniforms.w_shape[3]) / 4 + colIn];\";default:throw new Error(`innerElementSize ${Y} is not supported.`)}},b=e?`\\n let coord = vec4(batch, xRow, xCol, xCh);\\n `:`\\n let coord = vec4(batch, xCh, xRow, xCol);\\n `,w=e?`\\n let coords = vec4(\\n batch,\\n row / outWidth,\\n row % outWidth,\\n col);\\n `:`\\n let coords = vec4(\\n batch,\\n row,\\n col / outWidth,\\n col % outWidth);\\n `,y=e?\"i32(uniforms.x_shape[1])\":\"i32(uniforms.x_shape[2])\",_=e?\"i32(uniforms.x_shape[2])\":\"i32(uniforms.x_shape[3])\",I=e?\"row\":\"col\",$=e?\"col\":\"row\",x=`\\n let inChannels = i32(uniforms.w_shape[2]);\\n let outWidth = ${e?\"i32(uniforms.result_shape[2])\":\"i32(uniforms.result_shape[3])\"};\\n let outRow = ${I} / outWidth;\\n let outCol = ${I} % outWidth;\\n\\n let WRow = ${$} / (filterDims[1] * inChannels);\\n let WCol = ${$} / inChannels % filterDims[1];\\n let xRow = outRow * stride[0] + dilation[0] * WRow - pad[0];\\n let xCol = outCol * stride[1] + dilation[1] * WCol - pad[1];\\n let xCh = ${$} % inChannels;\\n var resData = ${Ke(u,p)}(0.0);\\n // The bounds checking is always needed since we use it to pad zero for\\n // the \\'same\\' padding type.\\n if (xRow >= 0 && xRow < ${y} && xCol >= 0 && xCol < ${_}) {\\n ${b}\\n let xIndex = getIndexFromCoords4D(coord, vec4(uniforms.x_shape));\\n ${h(u)}\\n }\\n return resData;`,E=e?t&&o?`\\n let col = colIn * ${u};\\n ${x}`:`\\n let col = colIn * ${u};\\n if (row < uniforms.dimAOuter && col < uniforms.dimInner) {\\n ${x}\\n }\\n return ${Ke(u,p)}(0.0);`:o&&r?`\\n let col = colIn * ${u};\\n ${x}`:`\\n let col = colIn * ${u};\\n if (row < uniforms.dimInner && col < uniforms.dimBOuter) {\\n ${x}\\n }\\n return ${Ke(u,p)}(0.0);`,A=`${g(l)}`,z=Ke(a,p),R=e?Ke(u,p):Ke(l,p),V=e?Ke(l,p):Ke(u,p),{activationFunction:T,applyActivation:N}=gt(s,z);return`\\n ${T}\\n fn mm_readA(batch: i32, row : i32, colIn : i32) -> ${R} {\\n ${e?E:A}\\n }\\n\\n fn mm_readB(batch: i32, row : i32, colIn : i32) -> ${V} {\\n ${e?A:E}\\n }\\n\\n fn mm_write(batch: i32, row : i32, colIn : i32, valueIn : ${z}) {\\n let col = colIn * ${a};\\n if (row < uniforms.dimAOuter && col < uniforms.dimBOuter)\\n {\\n var value = valueIn;\\n let outWidth = ${e?\"i32(uniforms.result_shape[2])\":\"i32(uniforms.result_shape[3])\"};\\n ${w}\\n ${Xr(n)}\\n ${N}\\n setOutputAtCoords(coords[0], coords[1], coords[2], coords[3], value);\\n }\\n }`},Wi=(e,t,r,o,n,s,u,l)=>{let a=t.format===\"NHWC\",p=a?e[0].dims[3]:e[0].dims[1],h=r[0],g=a?r[2]:r[3],b=a?r[1]:r[2],w=a?r[3]:r[1],y=a&&(p%4===0||p%3===0)&&w%4===0,_=a?w:g*b,I=a?g*b:w,$=[8,8,1],x=o<=8?[4,1,1]:[4,4,1],E=[Math.ceil(_/$[0]/x[0]),Math.ceil(I/$[1]/x[1]),Math.ceil(h/$[2]/x[2])];Be(\"verbose\",()=>`[conv2d_mm_webgpu] dispatch = ${E}`);let A=y?a&&p%4!==0?3:4:1,z=$[1]*x[1],R=$[0]*x[0],V=Math.max($[0]*A,$[1]),T=o%z===0,N=n%R===0,te=s%V===0,Y=y?[A,4,4]:[1,1,1],K=Le(e[0].dataType),Q=y?4:1,Z=[{type:\"int32\",data:o},{type:\"int32\",data:n},{type:\"int32\",data:s}],Ee=M(\"x\",e[0].dataType,e[0].dims.length,A===3?1:A),Pe=M(\"w\",e[1].dataType,e[1].dims.length,Q),fe=[Ee,Pe];Z.push(...L(e[0].dims)),Z.push(...L(e[1].dims));let Ie=`\\n fn setOutputAtIndex(flatIndex : i32, value : ${y?`vec4<${K}>`:K}) {\\n result[flatIndex] = ${y?`vec4<${K}>`:K}(value);\\n }\\n fn setOutputAtCoords(d0 : i32, d1 : i32, d2 : i32, d3 : i32, value : ${y?`vec4<${K}>`:K}) {\\n let flatIndex = getOutputIndexFromCoords(vec4(d0, d1, d2, d3));\\n setOutputAtIndex(flatIndex ${y?\"/ 4\":\"\"}, value);\\n }`;if(u){let ye=M(\"bias\",e[2].dataType,e[2].dims.length,Q);fe.push(ye),Z.push(...L(e[2].dims)),Ie+=`\\n fn getBiasByOutputCoords(coords : vec4) -> ${y?`vec4<${K}>`:K} {\\n return bias[coords.${a?\"w\":\"y\"}${y?\"/ 4\":\"\"}];\\n }`}let he=F(\"result\",e[0].dataType,r.length,Q);return Z.push(...L(r)),{name:\"Conv2DMatMul\",shaderCache:{hint:t.cacheKey},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:E[0],y:E[1],z:E[2]},programUniforms:Z}),getShaderSource:ye=>`\\n ${en(\"uniforms.result_strides\")}\\n //struct Uniforms { xShape : vec4, wShape : vec4, outShape : vec4,\\n // outShapeStrides: vec3, filterDims : vec2, pad : vec2, stride : vec2,\\n // dilation : vec2, dimAOuter : i32, dimBOuter : i32, dimInner : i32 };\\n ${ye.registerUniform(\"dimAOuter\",\"i32\").registerUniform(\"dimBOuter\",\"i32\").registerUniform(\"dimInner\",\"i32\").declareVariables(...fe,he)}\\n const filterDims : vec2 = vec2(${t.kernelShape[0]}, ${t.kernelShape[1]});\\n const pad : vec2 = vec2(${t.pads[0]}, ${t.pads[1]});\\n const stride : vec2 = vec2(${t.strides[0]}, ${t.strides[1]});\\n const dilation : vec2 = vec2(${t.dilations[0]}, ${t.dilations[1]});\\n ${Ie}\\n ${ll(a,T,N,te,u,t,Y[0],Y[1],Y[2],K)}\\n ${y?mr(x,$,K,void 0,!a,V):fr(x,$,K,void 0,!a,V,!1,void 0,l)}`}}});var Wn,Gi=j(()=>{\"use strict\";$e();ve();Gn();It();Wn=(e,t,r)=>{let o=e.length>2,n=o?\"value += b[output_channel];\":\"\",s=e[0].dims,u=e[1].dims,l=u[0]/t.group,a=t.format===\"NHWC\",p=Hn(s,u,t.dilations,t.pads,t.strides,a),h=U.size(p),g=F(\"output\",e[0].dataType,p),{activationFunction:b,applyActivation:w}=gt(t,g.type.value),y=M(\"x\",e[0].dataType,s),_=M(\"w\",e[1].dataType,u),I=[y,_];o&&I.push(M(\"b\",e[2].dataType,e[2].dims));let $=x=>`\\n const strides: vec2 = vec2(${t.strides[0]}u, ${t.strides[1]}u);\\n const pads: vec2 = vec2(${t.pads[0]}u, ${t.pads[1]}u);\\n\\n ${x.declareVariables(...I,g)}\\n\\n ${b}\\n\\n ${x.mainStart()}\\n ${x.guardAgainstOutOfBoundsWorkgroupSizes(h)}\\n\\n let outputIndices = ${g.offsetToIndices(\"global_idx\")};\\n let batch: u32 = outputIndices[0];\\n let output_channel: u32 = outputIndices[${a?3:1}];\\n let xRCCorner: vec2 = vec2(outputIndices[${a?1:2}], outputIndices[${a?2:3}]) * strides - pads;\\n let group_id: u32 = output_channel / ${l}u;\\n\\n var value: ${g.type.value} = ${g.type.value}(0);\\n for (var wInChannel: u32 = 0u; wInChannel < ${u[1]}u; wInChannel++) {\\n let input_channel = group_id * ${u[1]}u + wInChannel;\\n for (var wHeight: u32 = 0u; wHeight < ${u[2]}u; wHeight++) {\\n let xHeight = xRCCorner.x + wHeight * ${t.dilations[0]}u;\\n\\n if (xHeight < 0u || xHeight >= ${s[a?1:2]}u) {\\n continue;\\n }\\n\\n for (var wWidth: u32 = 0u; wWidth < ${u[3]}u; wWidth++) {\\n let xWidth = xRCCorner.y + wWidth * ${t.dilations[1]}u;\\n if (xWidth < 0u || xWidth >= ${s[a?2:3]}u) {\\n continue;\\n }\\n\\n let xVal = ${a?y.get(\"batch\",\"xHeight\",\"xWidth\",\"input_channel\"):y.get(\"batch\",\"input_channel\",\"xHeight\",\"xWidth\")};\\n let wVal = ${_.get(\"output_channel\",\"wInChannel\",\"wHeight\",\"wWidth\")};\\n value += xVal*wVal;\\n }\\n }\\n }\\n ${n}\\n ${w}\\n ${g.setByOffset(\"global_idx\",\"value\")}\\n }`;return{name:\"GroupedConv\",shaderCache:{hint:t.cacheKey},getRunData:()=>({outputs:[{dims:r?r(p):p,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(h/64)}}),getShaderSource:$}}});var Ln,cl,Li,Fn=j(()=>{\"use strict\";$e();hr();ve();It();Ln=(e,t,r,o,n=!1)=>{let s=e[0].dims,u=e[1].dims,l=s[s.length-2],a=u[u.length-1],p=s[s.length-1],h=Fe(a),g=Fe(p),b=Fe(l),w=U.size(r)/h/b,y=e.length>2,_=o?o.slice(0,-2):r.slice(0,-2),$=[U.size(_),l,a],x=[{type:\"uint32\",data:w},{type:\"uint32\",data:l},{type:\"uint32\",data:a},{type:\"uint32\",data:p},...L(_),...L(s),...L(u)];y&&x.push(...L(e[2].dims)),x.push(...L($));let E=A=>{let z=Fr(\"batch_dims\",e[0].dataType,_.length),R=M(\"a\",e[0].dataType,s.length,g),V=M(\"b\",e[1].dataType,u.length,h),T=F(\"output\",e[0].dataType,$.length,h),{activationFunction:N,applyActivation:te}=gt(t,T.type.value),Y=[R,V],K=\"\";if(y){let he=n?h:1;Y.push(M(\"bias\",e[2].dataType,e[2].dims.length,he)),K=`${n?`value += bias[col / ${he}];`:`value += ${T.type.value}(bias[row + i]);`}`}let Q=s.slice(0,-2),Z=u.slice(0,-2),Ee=Ft(Q,_),Pe=Ft(Z,_),fe=(he,ye)=>{let We=he.rank,De=he.name;if(We===2)return`var ${De}_indices = ${he.type.indices}(0u, 0u);`;let Ge=z.rank,G=`var ${De}_indices: ${he.type.indices};`;for(let ee=We-2-1,be=Ge-1;ee>=0;ee--,be--)G+=`\\n${De}_indices[${ee}] = ${Ge>1?`batch_indices[${be}]`:\"batch_indices\"};`;return ye.forEach(ee=>{G+=`\\n${De}_indices[${ee}] = 0;`}),G+=`${De}_indices[${We-2}] = 0u;\\n ${De}_indices[${We-1}] = 0u;`,G},Ie=()=>{let he=`var a_data: ${R.type.value};`;for(let ye=0;ye;\\n for (var k: u32 = 0u; k < uniforms.K; k = k + ${g}) {\\n ${Ie()}\\n }\\n for (var i = 0u; i < ${b}u; i++) {\\n var value = values[i];\\n ${K}\\n ${te}\\n let cur_indices = ${T.type.indices}(batch, row + i, col);\\n let offset = ${T.indicesToOffset(\"cur_indices\")};\\n ${T.setByOffset(`offset / ${h}`,\"value\")};\\n }\\n }\\n `};return{name:\"MatMulNaive\",shaderCache:{hint:`${t.activationCacheKey}_${h}_${g}_${b}_${n}`,inputDependencies:y?[\"rank\",\"rank\",\"rank\"]:[\"rank\",\"rank\"]},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(w/64)},programUniforms:x}),getShaderSource:E}},cl=e=>{if(!e||e.length!==2)throw new Error(\"MatMul requires 2 inputs.\");if(e[0].dims[e[0].dims.length-1]!==e[1].dims[e[1].dims.length-2])throw new Error(\"shared dimension does not match.\")},Li=e=>{cl(e.inputs);let t=dt.calcShape(e.inputs[0].dims,e.inputs[1].dims,!0);if(!t)throw new Error(\"Can\\'t use matmul on the given tensors\");let r=t[t.length-1],o=e.inputs[0].dims[e.inputs[0].dims.length-1];r<8&&o<8?e.compute(Ln(e.inputs,{activation:\"\",activationCacheKey:\"\"},t)):e.compute(tn(e.inputs,{activation:\"\",activationCacheKey:\"\"},t))}});var Hn,Fi,pl,ji,jn,ml,fl,qn,Gn=j(()=>{\"use strict\";$e();je();Hi();hr();Gi();It();Fn();jt();Hn=(e,t,r,o,n,s)=>{let u=e[0],l=e.slice(s?1:2,s?3:4),a=l.length,p=t[0],g=t.slice(2).map((y,_)=>y+(y-1)*(r[_]-1)),w=l.map((y,_)=>y+o[_]+o[_+a]).map((y,_)=>Math.floor((y-g[_]+n[_])/n[_]));return w.splice(0,0,u),w.splice(s?3:1,0,p),w},Fi=[2,3,1,0],pl=(e,t)=>{if(!e||e.length!==2&&e.length!==3)throw new Error(\"Conv requires 2 or 3 inputs\");if(e[0].dims.length!==4&&e[0].dims.length!==3)throw new Error(\"currently only support conv 1D and 2D\");if(e[0].dims.length!==e[1].dims.length)throw new Error(\"filter does not have same dimension as input\");let r=e[0].dims[t.format===\"NHWC\"?e[0].dims.length-1:1],o=e[1].dims[1]*t.group;if(r!==o)throw new Error(\"FILTER_IN_CHANNEL should be equal to DATA_CHANNEL\");if(e.length===3&&(e[2].dims.length!==1||e[1].dims[0]!==e[2].dims[0]))throw new Error(\"invalid bias\");let n=e[0].dims.length-2;if(t.dilations.length!==n)throw new Error(`dilations should be ${n}D`);if(t.strides.length!==n)throw new Error(`strides should be ${n}D`);if(t.pads.length!==n*2)throw new Error(`pads should be ${n*2}D`);if(t.kernelShape.length!==0&&t.kernelShape.length!==e[1].dims.length-2)throw new Error(\"invalid kernel shape\")},ji=(e,t)=>{let r=e.kernelShape.slice();for(let s=2;s{let t=Qr(e),r=e.format,o=[\"NOTSET\",\"VALID\",\"SAME_UPPER\",\"SAME_LOWER\"][e.auto_pad],n=e.dilations,s=e.group,u=e.kernel_shape,l=e.pads,a=e.strides,p=e.w_is_const();return ge({autoPad:o,format:r,dilations:n,group:s,kernelShape:u,pads:l,strides:a,wIsConst:p,...t})},ml=(e,t,r)=>{let o=ji(r,t),n=r.format===\"NHWC\";if(r.group!==1){e.compute(Wn(t,o));return}let s=t.length===3,u=t[0].dims[n?1:2],l=t[0].dims[n?2:3],a=t[0].dims[n?3:1],p=t[1].dims[2],h=t[1].dims[3],g=Hn(t[0].dims,t[1].dims,r.dilations,o.pads,r.strides,n),b=g[n?1:2],w=g[n?2:3],y=g[n?3:1],_=n&&p===u&&h===l&&r.pads[0]===0&&r.pads[1]===0;if(_||p===1&&h===1&&r.dilations[0]===1&&r.dilations[1]===1&&r.strides[0]===1&&r.strides[1]===1&&r.pads[0]===0&&r.pads[1]===0){let R=g[0],V,T,N,te=[];if(n){let Q=e.kernelCustomData.wT??e.compute(it(t[1],Fi),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];if(r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=Q),_){let Z=u*l*a;V=t[0].reshape([1,R,Z]),T=Q.reshape([1,Z,y]),N=[1,R,y]}else V=t[0].reshape([R,u*l,a]),T=Q.reshape([1,a,y]),N=[R,b*w,y];te.push(V),te.push(T)}else V=t[0].reshape([R,a,u*l]),T=t[1].reshape([1,y,a]),N=[R,y,b*w],te.push(T),te.push(V);s&&te.push(t[2]);let Y=N[2],K=te[0].dims[te[0].dims.length-1];Y<8&&K<8?e.compute(Ln(te,o,g,N,n),{inputs:te}):e.compute(tn(te,o,g,N,n),{inputs:te});return}let I=!0,$=e.kernelCustomData.wT??e.compute(it(t[1],Fi),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=$);let x=[t[0],$];s&&x.push(t[2]);let E=n?b*w:y,A=n?y:b*w,z=p*h*a;e.compute(Wi(x,o,g,E,A,z,s,I),{inputs:x})},fl=(e,t)=>{let r=t.format===\"NHWC\",o=[e.inputs[0].reshape(r?[e.inputs[0].dims[0],1,e.inputs[0].dims[1],e.inputs[0].dims[2]]:[e.inputs[0].dims[0],e.inputs[0].dims[1],1,e.inputs[0].dims[2]]),e.inputs[1].reshape([e.inputs[1].dims[0],e.inputs[1].dims[1],1,e.inputs[1].dims[2]])];e.inputs.length===3&&o.push(e.inputs[2]);let n=[0,t.pads[0],0,t.pads[1]],s=[1].concat(t.strides),u=[1].concat(t.dilations),l=[1].concat(t.kernelShape),a=ji({...t,pads:n,strides:s,dilations:u,kernelShape:l},o);e.compute(Wn(o,a,p=>r?[p[0],p[2],p[3]]:[]))},qn=(e,t)=>{pl(e.inputs,t),e.inputs[0].dims.length===3?fl(e,t):ml(e,e.inputs,t)}});var hl,qi,Ki=j(()=>{\"use strict\";Ct();ve();It();Jr();Nn();hr();hl=(e,t=!1,r,o=4)=>{let n=Ke(o,\"f32\"),s=x=>{switch(x){case 1:return\"return w[getIndexFromCoords4D(coord, vec4(uniforms.w_shape))];\";case 4:return`\\n let coord1 = vec4(coordX, coordY, col + 1, rowInner);\\n let coord2 = vec4(coordX, coordY, col + 2, rowInner);\\n let coord3 = vec4(coordX, coordY, col + 3, rowInner);\\n let v0 = w[getIndexFromCoords4D(coord, vec4(uniforms.w_shape))];\\n let v1 = w[getIndexFromCoords4D(coord1, vec4(uniforms.w_shape))];\\n let v2 = w[getIndexFromCoords4D(coord2, vec4(uniforms.w_shape))];\\n let v3 = w[getIndexFromCoords4D(coord3, vec4(uniforms.w_shape))];\\n return vec4(v0, v1, v2, v3);\\n `;default:throw new Error(`innerElementSize ${x} is not supported.`)}},u=e?`\\n let coord = vec4(batch, iXR, iXC, xCh);\\n `:`\\n let coord = vec4(batch, xCh, iXR, iXC);\\n `,l=e?`\\n let coords = vec4(\\n batch,\\n row / outWidth,\\n row % outWidth,\\n col);\\n `:`\\n let coords = vec4(\\n batch,\\n row,\\n col / outWidth,\\n col % outWidth);\\n `,a=e?\"outBackprop[1]\":\"outBackprop[2]\",p=e?\"outBackprop[2]\":\"outBackprop[3]\",h=e?\"row\":\"col\",g=e?\"col\":\"row\",b=`\\n let inChannels = ${e?\"outBackprop[3]\":\"outBackprop[1]\"};\\n let outWidth = ${e?\"i32(uniforms.result_shape[2])\":\"i32(uniforms.result_shape[3])\"};\\n let outRow = ${h} / outWidth;\\n let outCol = ${h} % outWidth;\\n\\n let WRow = ${g} / (filterDims[1] * inChannels);\\n let WCol = ${g} / inChannels % filterDims[1];\\n let xR = f32(outRow - pads[0] + dilation[0] * WRow) / f32(strides[0]);\\n let xC = f32(outCol - pads[1] + dilation[1] * WCol) / f32(strides[1]);\\n if (xR < 0.0 || xR >= f32(${a}) || fract(xR) > 0.0) {\\n return ${n}(0.0);\\n }\\n if (xC < 0.0 || xC >= f32(${p}) || fract(xC) > 0.0) {\\n return ${n}(0.0);\\n }\\n let iXR = i32(xR);\\n let iXC = i32(xC);\\n let xCh = ${g} % inChannels;\\n ${u}\\n return x[getIndexFromCoords4D(coord, vec4(uniforms.x_shape))/${o}];`,w=e?`\\n let col = colIn * ${o};\\n if (row < uniforms.dimAOuter && col < uniforms.dimInner) {\\n ${b}\\n }\\n return ${n}(0.0);`:`\\n let col = colIn * ${o};\\n if (row < uniforms.dimInner && col < uniforms.dimBOuter) {\\n ${b}\\n }\\n return ${n}(0.0);`,y=`\\n let col = colIn * ${o};\\n let inChannels = ${e?\"outBackprop[3]\":\"outBackprop[1]\"};\\n let coordX = filterDims.x - 1 - row / (filterDims[1] * inChannels);\\n let coordY = filterDims.y - 1 - (row / inChannels) % filterDims[1];\\n if (${e?\"row < uniforms.dimInner && col < uniforms.dimBOuter\":\"row < uniforms.dimInner && col < uniforms.dimAOuter\"} && coordX >= 0 && coordY >= 0) {\\n let rowInner = row % inChannels;\\n let coord = vec4(coordX, coordY, col, rowInner);\\n ${s(o)}\\n }\\n return ${n}(0.0);\\n `,{activationFunction:_,applyActivation:I}=gt(r,n);return`\\n ${_}\\n fn mm_readA(batch: i32, row : i32, colIn : i32) -> ${n} {\\n ${e?w:y}\\n }\\n\\n fn mm_readB(batch: i32, row : i32, colIn : i32) -> ${n} {\\n ${e?y:w}\\n }\\n\\n fn mm_write(batch: i32, row : i32, colIn : i32, valueInput : ${n}) {\\n let col = colIn * ${o};\\n if (row < uniforms.dimAOuter && col < uniforms.dimBOuter) {\\n var value = valueInput;\\n let outWidth = ${e?\"i32(uniforms.result_shape[2])\":\"i32(uniforms.result_shape[3])\"};\\n ${l}\\n ${Xr(t)}\\n ${I}\\n result[getIndexFromCoords4D(coords, vec4(uniforms.result_shape))/${o}] = value;\\n }\\n }`},qi=(e,t,r,o,n,s,u,l)=>{let a=t.format===\"NHWC\",p=a?e[0].dims[3]:e[0].dims[1],h=r[0],g=a?r[2]:r[3],b=a?r[1]:r[2],w=a?r[3]:r[1],y=a?p%4===0&&w%4===0:g%4===0&&w%4===0,_=a?w:g*b,I=a?g*b:w,$=y?[8,8,1]:[_<=4||I<=4?4:16,_>4&&I<=4?4:16,1],x=y?[4,4,1]:[_<=4?1:4,_>4&&I<=4?1:4,1],E=[Math.ceil(_/$[0]/x[0]),Math.ceil(I/$[1]/x[1]),Math.ceil(h/$[2]/x[2])];Be(\"verbose\",()=>`[conv_backprop_mm_webgpu] dispatch = ${E}`);let A=y?4:1,z=Math.max($[0]*A,$[1]),R=y?4:1,V=[{type:\"int32\",data:o},{type:\"int32\",data:n},{type:\"int32\",data:s}],T=M(\"x\",e[0].dataType,e[0].dims.length,R),N=M(\"w\",e[1].dataType,e[1].dims.length,1),te=F(\"result\",e[0].dataType,r.length,R),Y=[T,N];V.push(...L(e[0].dims)),V.push(...L(e[1].dims));let K=\"\";if(u){let Q=M(\"bias\",e[2].dataType,e[2].dims.length,R);Y.push(Q),V.push(...L(e[2].dims)),K+=`\\n fn getBiasByOutputCoords(coords : vec4) -> ${y?\"vec4\":\"f32\"} {\\n return bias[coords.${a?\"w\":\"y\"}${y?\"/ 4\":\"\"}];\\n }`}return V.push(...L(r)),{name:\"Conv2DTransposeMatMul\",shaderCache:{hint:t.cacheKey},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:E[0],y:E[1],z:E[2]},programUniforms:V}),getShaderSource:Q=>`\\n ${en(\"uniforms.result_strides\")}\\n ${Q.registerUniform(\"dimAOuter\",\"i32\").registerUniform(\"dimBOuter\",\"i32\").registerUniform(\"dimInner\",\"i32\").declareVariables(...Y,te)};\\n const outBackprop : vec4 = vec4(${e[0].dims.join(\",\")});\\n const filterDims : vec2 = vec2(${t.kernelShape[a?1:2]}, ${t.kernelShape[a?2:3]});\\n const effectiveFilterDims : vec2 = filterDims + vec2(\\n ${t.dilations[0]<=1?0:(t.kernelShape[a?1:2]-1)*(t.dilations[0]-1)},\\n ${t.dilations[1]<=1?0:(t.kernelShape[a?2:3]-1)*(t.dilations[1]-1)});\\n const pads : vec2 = vec2(i32(effectiveFilterDims[0]) - 1 - (${t.pads[0]+t.pads[2]})/2,\\n i32(effectiveFilterDims[1]) - 1 - (${t.pads[1]+t.pads[3]})/2);\\n const strides : vec2 = vec2(${t.strides[0]}, ${t.strides[1]});\\n const dilation : vec2 = vec2(${t.dilations[0]}, ${t.dilations[1]});\\n const dimAOuter : i32 = ${o};\\n const dimBOuter : i32 = ${n};\\n const dimInner : i32 = ${s};\\n ${K}\\n ${hl(a,u,t,A)}\\n ${y?mr(x,$,\"f32\",void 0,!a,z):fr(x,$,\"f32\",void 0,!a,z,!1,void 0,l)}`}}});var gl,Kn,Yi=j(()=>{\"use strict\";Ct();$e();ve();gl=(e,t,r,o,n,s,u=!1,l)=>{let a=r.format===\"NHWC\",p=a?1:2,h=a?2:3,g=a?3:1,b=U.size(o),w=u?2:1,y=r.group,_=t[1].dims,I=_[0]/y,$=_[1],x=`\\n fn setOutputAtIndex(flatIndex : u32, value : ${u?`vec4<${l}>`:l}) {\\n result[flatIndex] = ${u?`vec4<${l}>`:l}(value);\\n }`;n&&(x+=`\\n fn getBiasByOutputCoords(coords : vec4) -> ${u?`vec4<${l}>`:l} {\\n return bias[coords.${a?\"w\":\"y\"}${u?\"/ 4\":\"\"}];\\n }`);let E=u?4:1,A=M(\"W\",t[1].dataType,t[1].dims,E),z=M(\"Dy\",t[0].dataType,t[0].dims,E),R=[z,A];n&&R.push(M(\"bias\",t[2].dataType,[o[g]],E));let V=F(\"result\",t[0].dataType,o,E),T=`{\\n let batch: u32 = ${s?\"global_id.z\":\"workgroup_id.z\"} / outShape[1];\\n let r = ${s?\"global_id.z\":\"workgroup_id.z\"} % outShape[1];\\n let c = ${s?\"global_id.y\":\"workgroup_id.y\"} * ${w};\\n let d1: u32 = ${s?\"global_id.x\":\"workgroup_id.x\"} * 4;\\n\\n let dyCorner = vec2(i32(r), i32(c)) - vec2(pads);\\n\\n // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).\\n // ? = to be determined. : = across all values in that axis.\\n var dotProd: array, ${w}>;\\n for (var i = 0; i < ${w}; i++) {\\n dotProd[i] = vec4<${l}>(0.0);\\n }\\n for (var wR: u32 = 0; wR < filterDims[0]; wR = wR + 1) {\\n var dyR = (${l}(dyCorner.x) + ${l}(wR)) / ${l}(strides.x);\\n let wRPerm = filterDims[0] - 1 - wR;\\n if (dyR < 0.0 || dyR >= ${l}(outBackprop[1]) ||\\n fract(dyR) > 0.0 || wRPerm < 0) {\\n continue;\\n }\\n let idyR: u32 = u32(dyR);\\n\\n for (var wC: u32 = 0; wC < filterDims[1]; wC = wC + 1) {\\n let dyC = (${l}(dyCorner.y) + ${l}(wC)) / ${l}(strides.y);\\n let dyC2 = (${l}(dyCorner.y) + 1.0 + ${l}(wC)) / ${l}(strides.y);\\n let wCPerm = filterDims[1] - 1 - wC;\\n if (wCPerm < 0) {\\n continue;\\n }\\n var bDyCVal = true;\\n var bDyCVal2 = true;\\n if (dyC < 0.0 || dyC >= ${l}(outBackprop[2]) ||\\n fract(dyC) > 0.0) {\\n bDyCVal = false;\\n }\\n if (dyC2 < 0.0 || dyC2 >= ${l}(outBackprop[2]) ||\\n fract(dyC2) > 0.0) {\\n bDyCVal2 = false;\\n }\\n\\n let idyC: u32 = u32(dyC);\\n let idyC2: u32 = u32(dyC2);\\n if (bDyCVal && bDyCVal2) {\\n let d2Length = outBackprop[3];\\n for (var d2 :u32 = 0; d2 < d2Length; d2 = d2 + 4) {\\n let wValue0 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1\",\"d2\")};\\n let wValue1 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 1\",\"d2\")};\\n let wValue2 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 2\",\"d2\")};\\n let wValue3 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 3\",\"d2\")};\\n\\n var xValue = ${z.get(\"batch\",\"idyR\",\"idyC\",\"d2\")};\\n let tmpval = vec4<${l}>(dot(xValue, wValue0),\\n dot(xValue, wValue1),\\n dot(xValue, wValue2),\\n dot(xValue, wValue3));\\n dotProd[0] = dotProd[0] + tmpval;\\n\\n xValue = ${z.get(\"batch\",\"idyR\",\"idyC2\",\"d2\")};\\n\\n dotProd[1] = dotProd[1] + vec4<${l}>(dot(xValue, wValue0),\\n dot(xValue, wValue1),\\n dot(xValue, wValue2),\\n dot(xValue, wValue3));\\n }\\n } else if (bDyCVal) {\\n let d2Length = outBackprop[${g}];\\n for (var d2: u32 = 0; d2 < d2Length; d2 = d2 + 4) {\\n let wValue0 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1\",\"d2\")};\\n let wValue1 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 1\",\"d2\")};\\n let wValue2 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 2\",\"d2\")};\\n let wValue3 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 3\",\"d2\")};\\n\\n var xValue = ${z.get(\"batch\",\"idyR\",\"idyC\",\"d2\")};\\n let tmpval = vec4<${l}>(dot(xValue, wValue0),\\n dot(xValue, wValue1),\\n dot(xValue, wValue2),\\n dot(xValue, wValue3));\\n dotProd[0] = dotProd[0] + tmpval;\\n }\\n } else if (bDyCVal2) {\\n let d2Length = outBackprop[3];\\n for (var d2: u32 = 0; d2 < d2Length; d2 = d2 + 4) {\\n let wValue0 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1\",\"d2\")};\\n let wValue1 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 1\",\"d2\")};\\n let wValue2 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 2\",\"d2\")};\\n let wValue3 = ${A.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 3\",\"d2\")};\\n\\n var xValue = ${z.get(\"batch\",\"idyR\",\"idyC2\",\"d2\")};\\n let tmpval = vec4<${l}>(dot(xValue, wValue0),\\n dot(xValue, wValue1),\\n dot(xValue, wValue2),\\n dot(xValue, wValue3));\\n dotProd[1] = dotProd[1] + tmpval;\\n }\\n }\\n }\\n }\\n\\n for (var i: u32 = 0; i < ${w}; i = i + 1) {\\n let value = dotProd[i] + ${n?\"bias[c+i]\":`vec4<${l}>(0.0)`};\\n ${V.set(\"batch\",\"r\",\"c + i\",\"d1\",\"value\")};\\n }\\n }`,N=`\\n let outputIndices = ${V.offsetToIndices(\"global_idx\")};\\n let batch = ${V.indicesGet(\"outputIndices\",0)};\\n let d1 = ${V.indicesGet(\"outputIndices\",g)};\\n let r = ${V.indicesGet(\"outputIndices\",p)};\\n let c = ${V.indicesGet(\"outputIndices\",h)};\\n let dyCorner = vec2(i32(r), i32(c)) - pads;\\n let dyRCorner = dyCorner.x;\\n let dyCCorner = dyCorner.y;\\n let groupId = d1 / ${$};\\n let wOutChannel = d1 - groupId * ${$};\\n // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).\\n // ? = to be determined. : = across all values in that axis.\\n var dotProd = ${l}(0.0);\\n for (var wR: u32 = 0; wR < effectiveFilterDims.x; wR = wR + 1) {\\n if (wR % dilations.x != 0) {\\n continue;\\n }\\n let dyR = (${l}(dyRCorner) + ${l}(wR)) / ${l}(strides[0]);\\n let wRPerm = filterDims.x - 1 - wR / dilations.x;\\n if (dyR < 0.0 || dyR >= ${l}(outBackprop[${p}]) || fract(dyR) > 0.0 ||\\n wRPerm < 0) {\\n continue;\\n }\\n let idyR: u32 = u32(dyR);\\n\\n for (var wC: u32 = 0; wC < effectiveFilterDims.y; wC = wC + 1) {\\n if (wC % dilations.y != 0) {\\n continue;\\n }\\n let dyC = (${l}(dyCCorner) + ${l}(wC)) / ${l}(strides.y);\\n let wCPerm = filterDims.y - 1 - wC / dilations.y;\\n if (dyC < 0.0 || dyC >= ${l}(outBackprop[${h}]) ||\\n fract(dyC) > 0.0 || wCPerm < 0) {\\n continue;\\n }\\n let idyC: u32 = u32(dyC);\\n var inputChannel = groupId * ${I};\\n for (var d2: u32 = 0; d2 < ${I}; d2 = d2 + 1) {\\n let xValue = ${a?z.get(\"batch\",\"idyR\",\"idyC\",\"inputChannel\"):z.get(\"batch\",\"inputChannel\",\"idyR\",\"idyC\")};\\n let wValue = ${A.get(\"inputChannel\",\"wOutChannel\",\"u32(wRPerm)\",\"u32(wCPerm)\")};\\n dotProd = dotProd + xValue * wValue;\\n inputChannel = inputChannel + 1;\\n }\\n }\\n }\\n let value = dotProd + ${n?\"bias[d1]\":`${l}(0.0)`};\\n ${V.setByOffset(\"global_idx\",\"value\")};\\n `;return`\\n ${e.declareVariables(...R,V)}\\n ${x}\\n const outShape : vec4 = vec4(${o.join(\",\")});\\n const outBackprop : vec4 = vec4(${t[0].dims.join(\",\")});\\n const strides : vec2 = vec2(${r.strides[0]}, ${r.strides[1]});\\n const filterDims : vec2 = vec2(${r.kernelShape[a?1:2]}, ${r.kernelShape[a?2:3]});\\n const dilations : vec2 = vec2(${r.dilations[0]}, ${r.dilations[1]});\\n const effectiveFilterDims : vec2 = filterDims + vec2(\\n ${r.dilations[0]<=1?0:(r.kernelShape[a?1:2]-1)*(r.dilations[0]-1)},\\n ${r.dilations[1]<=1?0:(r.kernelShape[a?2:3]-1)*(r.dilations[1]-1)});\\n const pads : vec2 = vec2(i32(effectiveFilterDims[0]) - 1 - (${r.pads[0]+r.pads[2]})/2,\\n i32(effectiveFilterDims[1]) - 1 - (${r.pads[1]+r.pads[3]})/2);\\n ${e.mainStart()}\\n ${e.guardAgainstOutOfBoundsWorkgroupSizes(b)};\\n ${u?T:N}}`},Kn=(e,t,r)=>{let o=e.length>2,n=t.outputShape,s=U.size(n),u=[Math.ceil(s/64),1,1];Be(\"verbose\",()=>`[conv2d_backprop_webgpu] dispatch = ${u}`);let l=Le(e[0].dataType);return{name:\"ConvTranspose2D\",shaderCache:{hint:t.cacheKey},getRunData:()=>({dispatchGroup:{x:u[0],y:u[1],z:u[2]},outputs:[{dims:r?r(n):n,dataType:e[0].dataType}]}),getShaderSource:a=>gl(a,e,t,n,o,u[1]===1&&u[2]===1,!1,l)}}});var yl,bl,wl,Zi,Qi,vl,$l,Sl,xl,Xi,Ji=j(()=>{\"use strict\";je();Ki();Yi();It();jt();yl=(e,t,r,o,n,s)=>(e-1)*t+r+(o-1)*n+1-s,bl=(e,t,r,o,n)=>{let s=Math.floor(e/2);t===\"SAME_UPPER\"?(r[o]=s,r[n]=e-s):t===\"SAME_LOWER\"&&(r[o]=e-s,r[n]=s)},wl=(e,t,r,o,n,s,u,l,a,p)=>{let h=e.length-2,g=p.length===0;if(a.length===0)for(let y=0;y{let r=e.kernelShape.slice();if(e.kernelShape.length===0||e.kernelShape.reduce((b,w)=>b*w,1)===0){r.length=0;for(let b=2;bb+w,0)===0){let b=t[0].dims.length-2;a=new Array(b).fill(1)}let p=e.strides.slice();if(p.reduce((b,w)=>b+w,0)===0){let b=t[0].dims.length-2;p=new Array(b).fill(1)}wl(l,r,a,e.autoPad,e.group,n,p,o,u,s);let h=Object.assign({},e),g=e.cacheKey+[r.join(\"n,\"),n.join(\",\"),p.join(\",\"),u.join(\",\"),s.join(\",\"),a.join(\",\")].join(\"_\");return Object.assign(h,{kernelShape:r,pads:n,outputPadding:u,outputShape:s,dilations:a,strides:p,cacheKey:g}),h},Qi=e=>{let t=Qr(e),r=e.format,o=[\"NOTSET\",\"VALID\",\"SAME_UPPER\",\"SAME_LOWER\"][typeof e.autoPad>\"u\"?0:e.autoPad],n=e.dilations,s=e.group,u=e.kernelShape,l=e.pads,a=e.strides,p=e.wIsConst(),h=e.outputPadding,g=e.outputShape;return ge({autoPad:o,format:r,dilations:n,group:s,kernelShape:u,outputPadding:h,outputShape:g,pads:l,strides:a,wIsConst:p,...t})},vl=(e,t)=>{if(!e||e.length!==2&&e.length!==3)throw new Error(\"Conv requires 2 or 3 inputs\");if(e[0].dims.length!==4&&e[0].dims.length!==3)throw new Error(\"currently only support 2-dimensional conv\");if(e[0].dims.length!==e[1].dims.length)throw new Error(\"filter does not have same dimension as input\");let r=e[0].dims[t.format===\"NHWC\"?e[0].dims.length-1:1],o=e[1].dims[0];if(r!==o)throw new Error(\"FILTER_IN_CHANNEL should be equal to DATA_CHANNEL\");let n=e[1].dims[1]*t.group;if(e.length===3&&(e[2].dims.length!==1||e[2].dims[0]!==n))throw new Error(\"invalid bias\");let s=e[0].dims.length-2;if(t.dilations.reduce((h,g)=>h+g,0)>0&&t.dilations.length!==s)throw new Error(`dilations should be ${s}D`);if(t.strides.reduce((h,g)=>h+g,0)>0&&t.strides.length!==s)throw new Error(`strides should be ${s}D`);if(t.pads.reduce((h,g)=>h+g,0)>0&&t.pads.length!==s*2)throw new Error(`pads should be ${s*2}D`);if(t.outputPadding.length!==s&&t.outputPadding.length!==0)throw new Error(`output_padding should be ${s}D`);if(t.kernelShape.reduce((h,g)=>h+g,0)>0&&t.kernelShape.length!==0&&t.kernelShape.length!==e[1].dims.length-2)throw new Error(\"invalid kernel shape\");if(t.outputShape.length!==0&&t.outputShape.length!==e[0].dims.length-2)throw new Error(\"invalid output shape\")},$l=[2,3,1,0],Sl=(e,t,r)=>{let o=Zi(r,t),n=r.format===\"NHWC\",s=o.outputShape,u=s[n?3:1],l=t[0].dims[n?3:1];if(o.group!==1||u===1&&l===1){e.compute(Kn(t,o));return}let a=s[n?1:2],p=s[n?2:3],h=t[1].dims[2],g=t[1].dims[3],b=n?a*p:u,w=n?u:a*p,y=h*g*l,_=!0,I=e.kernelCustomData.wT??e.compute(it(t[1],$l),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=I);let $=[t[0],I],x=t.length===3;x&&(!n&&t[2].dims.length===1?$.push(t[2].reshape([t[2].dims[0],1,1])):$.push(t[2])),e.compute(qi($,o,s,b,w,y,x,_),{inputs:$})},xl=(e,t)=>{let r=t.format===\"NHWC\",o=[e.inputs[0].reshape(r?[e.inputs[0].dims[0],1,e.inputs[0].dims[1],e.inputs[0].dims[2]]:[e.inputs[0].dims[0],e.inputs[0].dims[1],1,e.inputs[0].dims[2]]),e.inputs[1].reshape([e.inputs[1].dims[0],e.inputs[1].dims[1],1,e.inputs[1].dims[2]])];o.length===3&&o.push(e.inputs[2]);let n=t.kernelShape;(n.length===0||n[0]===0)&&(n=[e.inputs[1].dims[2]]);let s=t.dilations;(s.length===0||s[0]===0)&&(s=[1]);let u=t.strides;(u.length===0||u[0]===0)&&(u=[1]);let l=t.pads;l.length===0&&(l=[0,0]),l=[0,l[0],0,l[1]],u=[1].concat(u),s=[1].concat(s),n=[1].concat(n);let a=Zi({...t,pads:l,strides:u,dilations:s,kernelShape:n},o);e.compute(Kn(o,a,p=>r?[p[0],p[2],p[3]]:[p[0],p[1],p[3]]))},Xi=(e,t)=>{vl(e.inputs,t),e.inputs[0].dims.length===3?xl(e,t):Sl(e,e.inputs,t)}});var _l,es,ts,rs=j(()=>{\"use strict\";Ne();$e();je();ve();_l=(e,t,r,o)=>{let n=U.size(t),s=t.length,u=M(\"input\",e,s),l=F(\"output\",e,s),a=r.dataType===6?r.getInt32Array()[0]:Number(r.getBigInt64Array()[0]),p=U.normalizeAxis(a,s),h=g=>{let b=` i32(${u.indicesGet(\"inputIndices\",\"uniforms.axis\")}) `,w=ce(\"uniforms.input_shape\",\"uniforms.axis\",s),y=o.reverse?b+(o.exclusive?\" + 1\":\"\"):\"0\",_=o.reverse?w:b+(o.exclusive?\"\":\" + 1\");return`\\n ${g.registerUniform(\"outputSize\",\"u32\").registerUniform(\"axis\",\"u32\").declareVariables(u,l)}\\n ${g.mainStart()}\\n ${g.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\\n var inputIndices = ${l.offsetToIndices(\"global_idx\")};\\n var sum = ${l.type.value}(0);\\n let first : i32 = ${y};\\n let last : i32 = ${_};\\n for (var i : i32 = first; i < last; i++) {\\n ${u.indicesSet(\"inputIndices\",\"uniforms.axis\",\"u32(i)\")};\\n sum = sum + ${u.getByIndices(\"inputIndices\")};\\n }\\n ${l.setByOffset(\"global_idx\",\"sum\")};\\n }`};return{name:\"CumSum\",shaderCache:{hint:o.cacheKey,inputDependencies:[\"rank\"]},getRunData:()=>({outputs:[{dims:t,dataType:e}],dispatchGroup:{x:Math.ceil(n/64)},programUniforms:[{type:\"uint32\",data:n},{type:\"int32\",data:p},...L(t),...L(t)]}),getShaderSource:h}},es=(e,t)=>{let r=e.inputs[0].dims,o=e.inputs[0].dataType,n=e.inputs[1];e.compute(_l(o,r,n,t),{inputs:[0]})},ts=e=>{let t=e.exclusive===1,r=e.reverse===1;return ge({exclusive:t,reverse:r})}});var Yn,rn,ns,Cl,Il,Zn,Qn,os,Al,as,is,ss=j(()=>{\"use strict\";$e();je();ve();Yn=\"[a-zA-Z]|\\\\\\\\.\\\\\\\\.\\\\\\\\.\",rn=\"(\"+Yn+\")+\",ns=\"^\"+rn+\"$\",Cl=\"(\"+rn+\",)*\"+rn,Il=\"^\"+Cl+\"$\",Zn=class{constructor(t=-1){this.symbolToIndices=new Map,this.inputIndex=t}addSymbol(t,r){let o=this.symbolToIndices.get(t);o===void 0?o=[r]:o.push(r),this.symbolToIndices.set(t,o)}},Qn=class{constructor(t,r){this.equation=r;this.hasEllipsis=!1,this.symbolToInfo=new Map,this.lhs=new Array,this.outputDims=[];let[o,n]=r.includes(\"->\")?r.split(\"->\",2):[r,\"\"];if(!o.match(RegExp(Il)))throw new Error(\"Invalid LHS term\");if(o.split(\",\").forEach((l,a)=>{let p=t[a].dims.slice();if(!l.match(RegExp(ns)))throw new Error(\"Invalid LHS term\");let h=this.processTerm(l,!0,p,a);this.lhs.push(h)}),n===\"\")n+=[...this.symbolToInfo.entries()].filter(([l,a])=>a.count===1||l===\"...\").map(([l])=>l).join(\"\");else if(!n.match(RegExp(rn)))throw new Error(\"Invalid RHS\");n.match(RegExp(Yn,\"g\"))?.forEach(l=>{if(l===\"...\")this.outputDims=this.outputDims.concat(this.ellipsisDims);else{let a=this.symbolToInfo.get(l);if(a===void 0)throw new Error(\"Invalid RHS symbol\");this.outputDims.push(a.dimValue)}}),this.rhs=this.processTerm(n,!1,this.outputDims)}addSymbol(t,r,o){let n=this.symbolToInfo.get(t);if(n!==void 0){if(n.dimValue!==r&&n.count!==1)throw new Error(\"Dimension mismatch\");n.count++,n.inputIndices.push(o)}else n={count:1,dimValue:r,inputIndices:[o]};this.symbolToInfo.set(t,n)}processTerm(t,r,o,n=-1){let s=o.length,u=!1,l=[],a=0;if(!t.match(RegExp(ns))&&!r&&t!==\"\")throw new Error(\"Invalid LHS term\");let p=t.match(RegExp(Yn,\"g\")),h=new Zn(n);return p?.forEach((g,b)=>{if(g===\"...\"){if(u)throw new Error(\"Only one ellipsis is allowed per input term\");u=!0;let w=s-p.length+1;if(w<0)throw new Error(\"Ellipsis out of bounds\");if(l=o.slice(a,a+w),this.hasEllipsis){if(this.ellipsisDims.length!==l.length||this.ellipsisDims.toString()!==l.toString())throw new Error(\"Ellipsis dimensions mismatch\")}else if(r)this.hasEllipsis=!0,this.ellipsisDims=l;else throw new Error(\"Ellipsis must be specified in the LHS\");for(let y=0;ye+\"_max\",Al=(e,t,r,o,n)=>{let u=t.map((w,y)=>e[y]?w.length:w).map((w,y)=>M(`input${y}`,r,w)),l=U.size(n),a=Re(n.length),p=a?n.length:n,h=F(\"output\",r,p),g=[...o.symbolToInfo.keys()].filter(w=>!o.rhs.symbolToIndices.has(w)),b=w=>{let y=[],_=\"var prod = 1.0;\",I=\"var sum = 0.0;\",$=\"sum += prod;\",x=[],E=[],A=[],z=[],R=o.symbolToInfo.size===o.rhs.symbolToIndices.size;o.symbolToInfo.forEach((T,N)=>{if(o.rhs.symbolToIndices.has(N)){let te=o.rhs.symbolToIndices.get(N)?.[0];te!==void 0&&o.lhs.forEach((Y,K)=>{if(T.inputIndices.includes(K)){let Q=Y.symbolToIndices.get(N);if(Q===void 0)throw new Error(\"Invalid symbol error\");Q.forEach(Z=>{y.push(`${u[K].indicesSet(`input${K}Indices`,Z,h.indicesGet(\"outputIndices\",te))}`)})}})}else o.lhs.forEach((te,Y)=>{if(T.inputIndices.includes(Y)){let K=te.symbolToIndices.get(N);if(K===void 0)throw new Error(\"Invalid symbol error\");K.forEach(Q=>{x.push(`${u[Y].indicesSet(`input${Y}Indices`,Q,`${N}`)}`)}),z.push(`prod *= ${u[Y].getByIndices(`input${Y}Indices`)};`)}}),E.push(`for(var ${N}: u32 = 0; ${N} < uniforms.${os(N)}; ${N}++) {`),A.push(\"}\")});let V=R?[...y,`let sum = ${u.map((T,N)=>T.getByIndices(`input${N}Indices`)).join(\" * \")};`]:[...y,I,...E,...x,_,...z,$,...A];return`\\n ${w.registerUniforms(g.map(T=>({name:`${os(T)}`,type:\"u32\"}))).registerUniform(\"outputSize\",\"u32\").declareVariables(...u,h)}\\n\\n ${w.mainStart()}\\n ${w.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\\n var outputIndices = ${h.offsetToIndices(\"global_idx\")};\\n ${u.map((T,N)=>`var input${N}Indices: ${u[N].type.indices};`).join(`\\n`)}\\n ${V.join(`\\n`)};\\n ${h.setByOffset(\"global_idx\",\"sum\")};\\n }`};return{name:\"Einsum\",shaderCache:{hint:o.equation,inputDependencies:e.map(w=>w?\"rank\":\"dims\")},getRunData:()=>{let w=g.filter(_=>o.symbolToInfo.has(_)).map(_=>({type:\"uint32\",data:o.symbolToInfo.get(_)?.dimValue||0}));w.push({type:\"uint32\",data:l});let y=t.filter((_,I)=>e[I]).map((_,I)=>[...L(_)]).reduce((_,I)=>_.concat(I),w);return a&&y.push(...L(n)),{outputs:[{dims:n,dataType:r}],dispatchGroup:{x:Math.ceil(l/64)},programUniforms:y}},getShaderSource:b}},as=(e,t)=>{let r=new Qn(e.inputs,t.equation),o=e.inputs.map((u,l)=>Re(u.dims.length)),n=r.outputDims,s=e.inputs.map((u,l)=>u.dims);e.compute(Al(o,s,e.inputs[0].dataType,r,n))},is=e=>{let t=e.equation.replace(/\\\\s+/g,\"\");return ge({equation:t})}});var Tl,us,El,Ol,ds,ls=j(()=>{\"use strict\";Ne();$e();ve();Tl=e=>{if(!e||e.length!==2)throw new Error(\"Expand requires 2 input.\");let t=e[0].dims,r=Array.from(e[1].getBigInt64Array(),Number),o=r.length{let r=e.length-t.length,o=[];for(let n=0;ne.length>t.length?us(e,t):us(t,e),Ol=e=>{let t=e[0].dims,r=Array.from(e[1].getBigInt64Array(),Number),o=El(t,r),n=e[0].dataType,s=n===9?4:1,u=Math.ceil(U.size(o)/s),l=Re(t.length),a=Re(o.length),p=g=>{let b=l?t.length:t,w=a?o.length:o,y=M(\"input\",n,b,s),_=F(\"output\",n,w,s),I;if(n===9){let $=(x,E,A=\"\")=>`\\n let outputIndices${E} = ${_.offsetToIndices(`outputOffset + ${E}u`)};\\n let offset${E} = ${y.broadcastedIndicesToOffset(`outputIndices${E}`,_)};\\n let index${E} = offset${E} / 4u;\\n let component${E} = offset${E} % 4u;\\n ${x}[${E}] = ${A}(${y.getByOffset(`index${E}`)}[component${E}]);\\n `;I=`\\n let outputOffset = global_idx * ${s};\\n var data = vec4(0);\\n ${$(\"data\",0,\"u32\")}\\n ${$(\"data\",1,\"u32\")}\\n ${$(\"data\",2,\"u32\")}\\n ${$(\"data\",3,\"u32\")}\\n ${_.setByOffset(\"global_idx\",\"data\")}\\n }`}else I=`\\n let outputIndices = ${_.offsetToIndices(\"global_idx\")};\\n let inputOffset = ${y.broadcastedIndicesToOffset(\"outputIndices\",_)};\\n ${_.setByOffset(\"global_idx\",y.getByOffset(\"inputOffset\"))}\\n }`;return`\\n ${g.registerUniform(\"vec_size\",\"u32\").declareVariables(y,_)}\\n ${g.mainStart()}\\n ${g.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.vec_size\")}\\n ${I}`},h=[{type:\"uint32\",data:u}];return l&&h.push(...L(t)),a&&h.push(...L(o)),{name:\"Expand\",shaderCache:{hint:`${o.length}`,inputDependencies:[l?\"rank\":\"dims\"]},getShaderSource:p,getRunData:()=>({outputs:[{dims:o,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:h})}},ds=e=>{Tl(e.inputs),e.compute(Ol(e.inputs),{inputs:[0]})}});var Pl,kl,cs,ps,ms=j(()=>{\"use strict\";Ne();$e();je();ve();Pl=e=>{if(!e||e.length!==2)throw new Error(\"Gather requires 2 inputs.\")},kl=(e,t)=>{let r=e[0].dims,o=e[1].dims,n=r.length,s=U.normalizeAxis(t.axis,n),u=r.slice(0);u.splice(s,1,...o);let l=r[s],a=e[0].dataType===9?4:1,p=Math.ceil(U.size(u)/a),h=Re(e[0].dims.length),g=h?e[0].dims.length:e[0].dims,b=Re(e[1].dims.length),w=b?e[1].dims.length:e[1].dims,y=Re(u.length),_=y?u.length:u,I=[{type:\"uint32\",data:p},{type:\"int32\",data:l},{type:\"uint32\",data:s}];h&&I.push(...L(e[0].dims)),b&&I.push(...L(e[1].dims)),y&&I.push(...L(u));let $=[];$.push(h?\"rank\":\"dims\"),$.push(b?\"rank\":\"dims\");let x=E=>{let A=M(\"data\",e[0].dataType,g,a),z=M(\"inputIndices\",e[1].dataType,w),R=F(\"output\",e[0].dataType,_,a),V=N=>{let te=o.length,Y=`var indicesIndices${N} = ${z.type.indices}(0);`;for(let K=0;K1?`indicesIndices${N}[${K}]`:`indicesIndices${N}`} = ${u.length>1?`outputIndices${N}[uniforms.axis + ${K}]`:`outputIndices${N}`};`;Y+=`\\n var idx${N} = ${z.getByIndices(`indicesIndices${N}`)};\\n if (idx${N} < 0) {\\n idx${N} = idx${N} + uniforms.axisDimLimit;\\n }\\n var dataIndices${N} = ${A.type.indices}(0);\\n `;for(let K=0,Q=0;K1?`dataIndices${N}[${K}]`:`dataIndices${N}`} = u32(idx${N});`,Q+=te):(Y+=`${n>1?`dataIndices${N}[${K}]`:`dataIndices${N}`} = ${u.length>1?`outputIndices${N}[${Q}]`:`outputIndices${N}`};`,Q++);return Y},T;if(e[0].dataType===9){let N=(te,Y,K=\"\")=>`\\n let outputIndices${Y} = ${R.offsetToIndices(`outputOffset + ${Y}u`)};\\n ${V(Y)};\\n let offset${Y} = ${A.indicesToOffset(`dataIndices${Y}`)};\\n let index${Y} = offset${Y} / 4u;\\n let component${Y} = offset${Y} % 4u;\\n ${te}[${Y}] = ${K}(${A.getByOffset(`index${Y}`)}[component${Y}]);\\n `;T=`\\n let outputOffset = global_idx * ${a};\\n var value = vec4(0);\\n ${N(\"value\",0,\"u32\")}\\n ${N(\"value\",1,\"u32\")}\\n ${N(\"value\",2,\"u32\")}\\n ${N(\"value\",3,\"u32\")}\\n ${R.setByOffset(\"global_idx\",\"value\")}\\n `}else T=`\\n let outputIndices = ${R.offsetToIndices(\"global_idx\")};\\n ${V(\"\")};\\n let value = ${A.getByIndices(\"dataIndices\")};\\n ${R.setByOffset(\"global_idx\",\"value\")};\\n `;return`\\n ${E.registerUniform(\"outputSize\",\"u32\").registerUniform(\"axisDimLimit\",\"i32\").registerUniform(\"axis\",\"u32\").declareVariables(A,z,R)}\\n ${E.mainStart()}\\n ${E.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\\n ${T}\\n }`};return{name:\"Gather\",shaderCache:{hint:t.cacheKey,inputDependencies:$},getRunData:()=>({outputs:[{dims:u,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(p/64)},programUniforms:I}),getShaderSource:x}},cs=e=>ge({axis:e.axis}),ps=(e,t)=>{let r=e.inputs;Pl(r),e.compute(kl(e.inputs,t))}});var Rl,Bl,fs,hs,gs=j(()=>{\"use strict\";$e();je();ve();Rl=e=>{if(!e||e.length!==2)throw new Error(\"GatherElements requires 2 inputs.\");if(e[0].dims.length<1)throw new Error(\"GatherElements requires that the data input be rank >= 1.\");if(e[0].dims.length!==e[1].dims.length)throw new Error(`GatherElements requires that the data input and\\n indices input tensors be of same rank.`)},Bl=(e,t)=>{let r=e[0].dims,o=e[0].dataType,n=r.length,s=e[1].dims,u=e[1].dataType,l=U.normalizeAxis(t.axis,n),a=r[l],p=s.slice(0),h=U.size(p),g=M(\"input\",o,n),b=M(\"indicesInput\",u,s.length),w=F(\"output\",o,p.length),y=[{type:\"uint32\",data:h},{type:\"int32\",data:a},{type:\"uint32\",data:l}];return y.push(...L(r)),y.push(...L(s)),y.push(...L(p)),{name:\"GatherElements\",shaderCache:{inputDependencies:[\"rank\",\"rank\"]},getRunData:()=>({outputs:[{dims:p,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(h/64)},programUniforms:y}),getShaderSource:$=>`\\n ${$.registerUniform(\"outputSize\",\"u32\").registerUniform(\"axisDimLimit\",\"i32\").registerUniform(\"axis\",\"u32\").declareVariables(g,b,w)}\\n ${$.mainStart()}\\n ${$.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\\n\\n let outputIndices = ${w.offsetToIndices(\"global_idx\")};\\n\\n var idx = ${b.getByOffset(\"global_idx\")};\\n if (idx < 0) {\\n idx = idx + uniforms.axisDimLimit;\\n }\\n var inputIndices = ${g.type.indices}(outputIndices);\\n ${g.indicesSet(\"inputIndices\",\"uniforms.axis\",\"u32(idx)\")};\\n let value = ${g.getByIndices(\"inputIndices\")};\\n\\n ${w.setByOffset(\"global_idx\",\"value\")};\\n }`}},fs=e=>ge({axis:e.axis}),hs=(e,t)=>{let r=e.inputs;Rl(r),e.compute(Bl(e.inputs,t))}});var Dl,Ml,ys,bs,ws=j(()=>{\"use strict\";$e();ve();Dl=e=>{if(!e)throw new Error(\"Input is missing\");if(e.length<2||e.length>3)throw new Error(\"Invaid input number.\");if(e.length===3&&e[2].dims.length>2)throw new Error(\"Invalid input shape of C\");if(e[0].dataType!==e[1].dataType||e.length===3&&e[0].dataType!==e[2].dataType)throw new Error(\"Input types are mismatched\")},Ml=(e,t)=>{let r=e[0].dims.slice(),o=e[1].dims.slice(),[n,s,u]=Hr.getShapeOfGemmResult(r,t.transA,o,t.transB,e.length===3?e[2].dims:void 0),l=[n,s];if(!l)throw new Error(\"Can\\'t use gemm on the given tensors\");let a=U.size(l),p=[{type:\"uint32\",data:a},{type:\"uint32\",data:n},{type:\"uint32\",data:s},{type:\"uint32\",data:u},{type:\"float32\",data:t.alpha},{type:\"float32\",data:t.beta}],h=[\"type\",\"type\"];e.length===3&&(p.push(...L(e[2].dims)),h.push(\"rank\")),p.push(...L(l));let g=b=>{let w=\"\";t.transA&&t.transB?w=\"value += a[k * uniforms.M + m] * b[n * uniforms.K + k];\":t.transA&&!t.transB?w=\"value += a[k * uniforms.M + m] * b[k * uniforms.N + n];\":!t.transA&&t.transB?w=\"value += a[m * uniforms.K + k] * b[n * uniforms.K + k];\":!t.transA&&!t.transB&&(w=\"value += a[m * uniforms.K + k] * b[k * uniforms.N + n];\");let y=t.alpha===1?\"\":\"value *= uniforms.alpha;\",_=M(\"a\",e[0].dataType,e[0].dims),I=M(\"b\",e[1].dataType,e[1].dims),$=_.type.value,x=null,E=[_,I];e.length===3&&(x=M(\"c\",e[2].dataType,e[2].dims.length),E.push(x));let A=F(\"output\",e[0].dataType,l.length);E.push(A);let z=[{name:\"output_size\",type:\"u32\"},{name:\"M\",type:\"u32\"},{name:\"N\",type:\"u32\"},{name:\"K\",type:\"u32\"},{name:\"alpha\",type:\"f32\"},{name:\"beta\",type:\"f32\"}];return`\\n ${b.registerUniforms(z).declareVariables(...E)}\\n\\n ${b.mainStart()}\\n ${b.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\\n\\n let m = global_idx / uniforms.N;\\n let n = global_idx % uniforms.N;\\n\\n var value = ${$}(0);\\n for (var k: u32 = 0u; k < uniforms.K; k++) {\\n ${w}\\n }\\n\\n ${y}\\n ${(()=>x!=null?`let cOffset = ${x.broadcastedIndicesToOffset(\"vec2(m, n)\",A)}; value += ${$}(uniforms.beta) * ${x.getByOffset(\"cOffset\")};`:\"\")()}\\n output[global_idx] = value;\\n }`};return{name:\"Gemm\",shaderCache:{hint:`${t.cacheKey}`,inputDependencies:h},getRunData:()=>({outputs:[{dims:l,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:p}),getShaderSource:g}},ys=e=>{let t=e.transA,r=e.transB,o=e.alpha,n=e.beta;return{transA:t,transB:r,alpha:o,beta:n,cacheKey:`${e.transA};${e.transB};${e.alpha===1}`}},bs=(e,t)=>{Dl(e.inputs),e.compute(Ml(e.inputs,t))}});var zl,Ul,Vl,vs,$s=j(()=>{\"use strict\";Ne();$e();ve();zl=(e,t)=>{let r=e[0].dims,o=r,n=2,s=U.sizeToDimension(r,n),u=U.sizeFromDimension(r,n),l=Fe(u),a=u/l,p=[r[0],r[1],a],h=[\"rank\",\"type\",\"type\"],g=[{type:\"uint32\",data:u},{type:\"uint32\",data:a}];g.push(...L(p),...L(p));let b=w=>{let y=M(\"x\",e[0].dataType,p.length,l),_=M(\"scale\",e[1].dataType,e[1].dims),I=M(\"bias\",e[2].dataType,e[2].dims),$=F(\"output\",e[0].dataType,p.length,l),x=[y,_,I,$],E=y.type.value,A=l===1?\"f32\":`vec${l}`,z=64,R=[{name:\"normSize\",type:\"u32\"},{name:\"normPackedSize\",type:\"u32\"}];return`\\n var meanShared : f32;\\n var squaredNormShared : f32;\\n var workgroupShared : array<${A}, ${z}>;\\n const workgroupSize = ${z}u;\\n ${w.registerUniforms(R).declareVariables(...x)}\\n ${w.mainStart(z)}\\n let norm = global_idx / workgroupSize;\\n let batch = norm / uniforms.x_shape[1];\\n let channel = norm % uniforms.x_shape[1];\\n let localIndex = local_id.x;\\n\\n // initialize workgroup memory\\n var initial = ${A}(0);\\n for (var h = localIndex; h < uniforms.normPackedSize; h += workgroupSize) {\\n initial = initial + ${A}(${y.get(\"batch\",\"channel\",\"h\")});\\n }\\n workgroupShared[localIndex] = initial;\\n workgroupBarrier();\\n\\n // Calculate the mean of current channel data.\\n for (var currSize = workgroupSize >> 1; currSize > 0; currSize = currSize >> 1) {\\n if (localIndex < currSize) {\\n workgroupShared[localIndex] = workgroupShared[localIndex] + workgroupShared[localIndex + currSize];\\n }\\n workgroupBarrier();\\n }\\n if (localIndex == 0) {\\n meanShared = ${Je(\"workgroupShared[0]\",l)} / f32(uniforms.normSize);\\n }\\n workgroupBarrier();\\n\\n // reinitialize workgroup memory.\\n initial = ${A}(0);\\n for (var h = localIndex; h < uniforms.normPackedSize; h += workgroupSize) {\\n let deviation = ${A}(${y.get(\"batch\",\"channel\",\"h\")}) - ${A}(meanShared);\\n initial = initial + deviation * deviation;\\n }\\n workgroupShared[localIndex] = initial;\\n workgroupBarrier();\\n\\n // Calculate the sum of square of deviation of current channel data.\\n for (var currSize = workgroupSize >> 1; currSize > 0; currSize = currSize >> 1) {\\n if (localIndex < currSize) {\\n workgroupShared[localIndex] = workgroupShared[localIndex] + workgroupShared[localIndex + currSize];\\n }\\n workgroupBarrier();\\n }\\n if (localIndex == 0) {\\n squaredNormShared = ${Je(\"workgroupShared[0]\",l)};\\n }\\n workgroupBarrier();\\n\\n let invStdDev = inverseSqrt(squaredNormShared / f32(uniforms.normSize) + f32(${t.epsilon}));\\n let channelScale = invStdDev * f32(${_.getByOffset(\"channel\")});\\n let channelShift = f32(${I.getByOffset(\"channel\")}) - meanShared * channelScale;\\n for (var h = localIndex; h < uniforms.normPackedSize; h += workgroupSize) {\\n let value = ${y.get(\"batch\",\"channel\",\"h\")} * ${E}(${A}(channelScale)) + ${E}(${A}(channelShift));\\n ${$.set(\"batch\",\"channel\",\"h\",\"value\")};\\n }\\n }`};return{name:\"InstanceNormalization\",shaderCache:{hint:`${t.epsilon};${l}`,inputDependencies:h},getRunData:()=>({outputs:[{dims:o,dataType:e[0].dataType}],dispatchGroup:{x:s},programUniforms:g}),getShaderSource:b}},Ul=(e,t,r,o,n,s,u,l)=>{let a=Fe(u),p=64,h=a===1?\"vec2f\":`mat2x${a}f`,g=a===1?\"f32\":`vec${a}f`,b=(R,V)=>`${h}(${R}, ${V})`,w=n*u/a,y=Math.ceil(s/p),_=[\"type\"],I=[{type:\"uint32\",data:y},{type:\"uint32\",data:s},{type:\"uint32\",data:Math.floor(u/a)},{type:\"uint32\",data:Math.floor(s*u/a)}],$=R=>{let V=M(\"input\",t.dataType,t.dims,a);return`\\n ${R.declareVariables(V)}\\n @group(0) @binding(1) var output : array<${h}>;\\n struct Uniforms {wg_size:u32, H:u32, C:u32, image_size:u32};\\n @group(0) @binding(2) var uniforms: Uniforms;\\n\\n ${R.mainStart(p)}\\n let currentImageNumber = global_idx / ${p} / uniforms.C;\\n let currentChannelNumber = (global_idx / ${p}) % uniforms.C;\\n let wgId = global_idx % ${p};\\n let wgOffset = wgId * uniforms.wg_size;\\n if (wgOffset >= uniforms.H) {\\n return;\\n }\\n let wgMax = min(wgOffset + uniforms.wg_size, uniforms.H);\\n\\n let offset = currentImageNumber * uniforms.image_size + currentChannelNumber;\\n var sum = ${Ze(\"f32\",a)};\\n var squaredSum = ${Ze(\"f32\",a)};\\n for (var i: u32 = wgOffset; i < wgMax; i++) {\\n let value = ${g}(input[offset + i * uniforms.C]);\\n sum += value;\\n squaredSum += value * value;\\n }\\n output[global_idx] = ${b(\"sum\",\"squaredSum\")};\\n }`},x=e.compute({name:\"InstanceNormComputeMean\",shaderCache:{hint:`${a}`,inputDependencies:_},getRunData:()=>({outputs:[{dims:[n,u,p,2],dataType:1}],dispatchGroup:{x:n*u/a},programUniforms:I}),getShaderSource:$},{inputs:[t],outputs:[-1]})[0],E=[{type:\"uint32\",data:w},{type:\"uint32\",data:s},{type:\"uint32\",data:Math.floor(u/a)},{type:\"uint32\",data:Math.floor(p*u/a)}],A=[\"type\",\"type\",\"type\"],z=R=>{let V=M(\"scale\",r.dataType,r.dims,a),T=M(\"bias\",o.dataType,o.dims,a);return`\\n @group(0) @binding(0) var input : array<${h}>;\\n @group(0) @binding(1) var scale : array<${V.type.storage}>;\\n @group(0) @binding(2) var bias : array<${T.type.storage}>;\\n @group(0) @binding(3) var output : array<${h}>;\\n struct Uniforms {units_of_work : u32, H: u32, C : u32, image_size : u32};\\n @group(0) @binding(4) var uniforms: Uniforms;\\n\\n ${R.mainStart()}\\n ${R.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.units_of_work\")}\\n let currentImageNumber = global_idx / uniforms.C;\\n let currentChannelNumber = global_idx % uniforms.C;\\n\\n let offset = currentImageNumber * uniforms.image_size;\\n var sum = ${Ze(\"f32\",a)};\\n var squaredSum = ${Ze(\"f32\",a)};\\n for (var i: u32 = 0; i < ${p}; i++) {\\n let value = input[offset + i + currentChannelNumber * ${p}];\\n sum += value[0];\\n squaredSum += value[1];\\n }\\n sum = sum / f32(uniforms.H);\\n squaredSum = squaredSum / f32(uniforms.H);\\n let invStdDev = inverseSqrt(squaredSum - sum * sum + f32(${l}));\\n let channelScale = invStdDev * ${g}(scale[currentChannelNumber]);\\n let channelShift = ${g}(bias[currentChannelNumber]) - sum * channelScale;\\n\\n output[global_idx] = ${b(\"channelScale\",\"channelShift\")};\\n }`};return e.compute({name:\"InstanceNormComputeChannelScaleShift\",shaderCache:{hint:`${a};${l}`,inputDependencies:A},getRunData:()=>({outputs:[{dims:[n,u,2],dataType:1}],dispatchGroup:{x:Math.ceil(w/64)},programUniforms:E}),getShaderSource:z},{inputs:[x,r,o],outputs:[-1]})[0]},Vl=(e,t,r)=>{let o=t[0].dims,n=o,s=o[0],u=o[o.length-1],l=U.sizeFromDimension(o,1)/u,a=Fe(u),p=U.size(n)/a,h=[{type:\"uint32\",data:l},{type:\"uint32\",data:Math.floor(u/a)}],g=[\"type\",\"type\"],b=Ul(e,t[0],t[1],t[2],s,l,u,r.epsilon),w=y=>{let _=Le(t[0].dataType),I=a===1?\"vec2f\":`mat2x${a}f`,$=a===1?_:`vec${a}<${_}>`,x=M(\"input\",t[0].dataType,t[0].dims,a),E=F(\"output\",t[0].dataType,n,a);return`\\n @group(0) @binding(0) var input : array<${x.type.storage}>;\\n @group(0) @binding(1) var scaleInput : array<${I}>;\\n @group(0) @binding(2) var output : array<${E.type.storage}>;\\n struct Uniforms {H: u32, C : u32};\\n @group(0) @binding(3) var uniforms: Uniforms;\\n\\n ${y.mainStart()}\\n let currentImageNumber = global_idx / (uniforms.C * uniforms.H);\\n let currentChannelNumber = global_idx % uniforms.C;\\n\\n let scaleOffset = currentImageNumber * uniforms.C + currentChannelNumber;\\n let scale = scaleInput[scaleOffset];\\n output[global_idx] = fma(input[global_idx], ${$}(scale[0]), ${$}(scale[1]));\\n }`};e.compute({name:\"InstanceNormalizationNHWC\",shaderCache:{hint:`${a}`,inputDependencies:g},getRunData:()=>({outputs:[{dims:n,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(p/64)},programUniforms:h}),getShaderSource:w},{inputs:[t[0],b]})},vs=(e,t)=>{t.format===\"NHWC\"?Vl(e,e.inputs,t):e.compute(zl(e.inputs,t))}});var Nl,Wl,Ss,xs=j(()=>{\"use strict\";Ne();$e();ve();Nl=e=>{if(!e||e.length<2)throw new Error(\"layerNorm requires at least 2 inputs.\")},Wl=(e,t,r)=>{let o=e[0].dims,n=e[1],s=e[2],u=o,l=U.normalizeAxis(t.axis,o.length),a=U.sizeToDimension(o,l),p=U.sizeFromDimension(o,l),h=U.size(n.dims),g=s?U.size(s.dims):0;if(h!==p||s&&g!==p)throw new Error(`Size of X.shape()[axis:] == ${p}.\\n Size of scale and bias (if provided) must match this.\\n Got scale size of ${h} and bias size of ${g}`);let b=[];for(let A=0;A1,$=r>2,x=A=>{let z=Le(e[0].dataType),R=[M(\"x\",e[0].dataType,e[0].dims,w),M(\"scale\",n.dataType,n.dims,w)];s&&R.push(M(\"bias\",s.dataType,s.dims,w)),R.push(F(\"output\",e[0].dataType,u,w)),I&&R.push(F(\"mean_data_output\",1,b)),$&&R.push(F(\"inv_std_output\",1,b));let V=[{name:\"norm_count\",type:\"u32\"},{name:\"norm_size\",type:\"f32\"},{name:\"norm_size_vectorized\",type:\"u32\"},{name:\"epsilon\",type:\"f32\"}];return`\\n ${A.registerUniforms(V).declareVariables(...R)}\\n ${A.mainStart()}\\n ${A.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.norm_count\")}\\n let offset = global_idx * uniforms.norm_size_vectorized;\\n var meanVector = ${Ze(\"f32\",w)};\\n var meanSquareVector = ${Ze(\"f32\",w)};\\n\\n for (var h: u32 = 0u; h < uniforms.norm_size_vectorized; h++) {\\n let value = ${at(z,w,\"x[h + offset]\")};\\n meanVector += value;\\n meanSquareVector += value * value;\\n }\\n let mean = ${Je(\"meanVector\",w)} / uniforms.norm_size;\\n let invStdDev =\\n inverseSqrt(${Je(\"meanSquareVector\",w)} / uniforms.norm_size - mean * mean + uniforms.epsilon);\\n\\n for (var j: u32 = 0; j < uniforms.norm_size_vectorized; j++) {\\n let f32input = ${at(z,w,\"x[j + offset]\")};\\n let f32scale = ${at(z,w,\"scale[j]\")};\\n output[j + offset] = ${R[0].type.value}((f32input - mean) * invStdDev * f32scale\\n ${s?`+ ${at(z,w,\"bias[j]\")}`:\"\"}\\n );\\n }\\n\\n ${I?\"mean_data_output[global_idx] = mean\":\"\"};\\n ${$?\"inv_std_output[global_idx] = invStdDev\":\"\"};\\n }`},E=[{dims:u,dataType:e[0].dataType}];return I&&E.push({dims:b,dataType:1}),$&&E.push({dims:b,dataType:1}),{name:\"LayerNormalization\",shaderCache:{hint:`${w};${r}`,inputDependencies:y},getRunData:()=>({outputs:E,dispatchGroup:{x:Math.ceil(a/64)},programUniforms:_}),getShaderSource:x}},Ss=(e,t)=>{Nl(e.inputs),e.compute(Wl(e.inputs,t,e.outputCount))}});var Hl,Cs,_s,Gl,Xn,Is,As=j(()=>{\"use strict\";$e();je();Nr();Un();ve();jt();Hl=(e,t)=>{let r=e[0],o=e[1],n=e[2],s=e[3],u=e[4],l=e[5],a=e[6],p=e[7];if(r.dims.length!==3&&r.dims.length!==5)throw new Error(\"Input query is expected to have 3 or 5 dimensions\");let h=!1,g=r.dims[0],b=r.dims[1],w=r.dims.length===3?h?r.dims[2]/3:r.dims[2]:t.numHeads*r.dims[4],y=b,_=0,I=0,$=Math.floor(w/t.numHeads);if(a&&p){if(a.dims.length!==4)throw new Error(\\'Input \"past_key\" is expected to have 4 dimensions\\');if(p.dims.length!==4)throw new Error(\\'Input \"past_value\" is expected to have 4 dimensions\\');_=a.dims[2],I=a.dims[2]}else if(a||p)throw new Error(\\'Input \"past_key\" and \"past_value\" shall be both present or both absent\\');let x;if(o){if(r.dims.length!==3)throw new Error(\\'Input \"query\" is expected to have 3 dimensions when key is given\\');if(o.dims.length<3||o.dims.length>5)throw new Error(\\'Input \"key\" is expected to have 3, 4, or 5 dimensions\\');if(r.dims[0]!==o.dims[0])throw new Error(\\'Input \"query\" and \"key\" shall have same dim 0 (batch size)\\');if(o.dims.length===3){if(o.dims[2]!==r.dims[2])throw new Error(\\'Input \"query\" and \"key\" shall have same dim 2 (hidden_size)\\');x=2,y=o.dims[1]}else if(o.dims.length===5){if(o.dims[2]!==t.numHeads||o.dims[3]!==2||o.dims[4]!==$)throw new Error(\\'Expect \"key\" shape (batch_size, kv_sequence_length, num_heads, 2, head_size) for packed kv\\');if(n)throw new Error(\\'Expect \"value\" be none when \"key\" has packed kv format.\\');x=5,y=o.dims[1]}else{if(o.dims[1]!==t.numHeads||o.dims[3]!==$)throw new Error(\\'Expect \"key\" shape (batch_size, num_heads, kv_sequence_length, head_size) for past_key\\');x=0,y=o.dims[2]}}else{if(r.dims.length!==3&&r.dims.length!==5)throw new Error(\\'Input \"query\" is expected to have 3 or 5 dimensions when key is empty\\');if(r.dims.length===5&&(r.dims[2]!==t.numHeads||r.dims[3]!==3))throw new Error(\\'Expect \"query\" shape (batch_size, kv_sequence_length, num_heads, 3, head_size) for packed kv\\');x=3}if(s){if(s.dims.length!==1)throw new Error(\\'Input \"bias\" is expected to have 1 dimension\\');if(n&&r.dims.length===5&&r.dims[3]===2)throw new Error(\"bias is not allowed for packed kv.\")}let E=0;if(u){E=8;let T=u.dims;throw T.length===1?T[0]===g?E=1:T[0]===3*g+2&&(E=3):T.length===2&&T[0]===g&&T[1]===y&&(E=5),E===8?new Error(\\'Input \"key_padding_mask\" shape shall be (batch_size) or (batch_size, kv_sequence_length)\\'):new Error(\"Mask not supported\")}let A=!1,z=w;if(n){if(n.dims.length!==3&&n.dims.length!==4)throw new Error(\\'Input \"value\" is expected to have 3 or 4 dimensions\\');if(r.dims[0]!==n.dims[0])throw new Error(\\'Input \"query\" and \"value\" shall have same dim 0 (batch_size)\\');if(n.dims.length===3){if(y!==n.dims[1])throw new Error(\\'Input \"key\" and \"value\" shall have the same dim 1 (kv_sequence_length)\\');z=n.dims[2]}else{if(y!==n.dims[2])throw new Error(\\'Input \"past_key\" and \"past_value\" shall have the same dim 2 (kv_sequence_length)\\');z=n.dims[1]*n.dims[3],A=!0}}let R=_+y,V=!1;if(u)throw new Error(\"Key padding mask is not supported\");if(l)throw new Error(\"extraAddQk is not supported\");if(a)throw new Error(\"pastKey is not supported\");if(p)throw new Error(\"pastValue is not supported\");return{batchSize:g,sequenceLength:b,pastSequenceLength:_,kvSequenceLength:y,totalSequenceLength:R,maxSequenceLength:I,inputHiddenSize:0,hiddenSize:w,vHiddenSize:z,headSize:$,vHeadSize:Math.floor(z/t.numHeads),numHeads:t.numHeads,isUnidirectional:!1,pastPresentShareBuffer:!1,maskFilterValue:t.maskFilterValue,maskType:E,scale:t.scale,broadcastResPosBias:V,passPastInKv:A,qkvFormat:x}},Cs=e=>ge({...e}),_s=ge({perm:[0,2,1,3]}),Gl=(e,t,r,o,n,s,u)=>{let l=[o,n,s],a=U.size(l),p=[{type:\"uint32\",data:a},{type:\"uint32\",data:u},{type:\"uint32\",data:s}],h=g=>{let b=F(\"qkv_with_bias\",t.dataType,l),w=M(\"qkv\",t.dataType,l),y=M(\"bias\",r.dataType,l),_=[{name:\"output_size\",type:\"u32\"},{name:\"bias_offset\",type:\"u32\"},{name:\"hidden_size\",type:\"u32\"}];return`\\n ${g.registerUniforms(_).declareVariables(w,y,b)}\\n ${g.mainStart()}\\n ${g.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\\n let bias_offset_idx = (global_idx % uniforms.hidden_size) + uniforms.bias_offset;\\n\\n qkv_with_bias[global_idx] = qkv[global_idx] + bias[bias_offset_idx];\\n }`};return e.compute({name:\"MultiHeadAttentionAddBias\",shaderCache:{inputDependencies:[\"type\",\"type\"]},getRunData:()=>({outputs:[{dims:l,dataType:t.dataType,gpuDataType:0}],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:p}),getShaderSource:h},{inputs:[t,r],outputs:[-1]})[0]},Xn=(e,t,r,o,n,s,u,l)=>{let a=s;if(u){if(o===1)throw new Error(\"AddBiasReshape is not implemented. Please export your model with packed QKV or KV\");return a=Gl(e,s,u,t,o,r*n,l),a=a.reshape([t,o,r,n]),e.compute(it(a,_s.perm),{inputs:[a],outputs:[-1]})[0]}else return s.dims.length===3&&(a=s.reshape([t,o,r,n])),e.compute(it(a,_s.perm),{inputs:[a],outputs:[-1]})[0]},Is=(e,t)=>{let r=Hl(e.inputs,t);if(e.inputs[0].dims.length===5)throw new Error(\"Packed QKV is not implemented\");if(e.inputs[1]?.dims.length===5)throw new Error(\"Packed KV is not implemented\");let o=e.inputs[1]&&e.inputs[2]&&e.inputs[1].dims.length===4&&e.inputs[2].dims.length===4,n=Xn(e,r.batchSize,r.numHeads,r.sequenceLength,r.headSize,e.inputs[0],e.inputs[3],0);if(o)return Kr(e,n,e.inputs[1],e.inputs[2],e.inputs[4],void 0,void 0,void 0,e.inputs[5],r,t);let s=Xn(e,r.batchSize,r.numHeads,r.kvSequenceLength,r.headSize,e.inputs[1],e.inputs[3],r.hiddenSize),u=Xn(e,r.batchSize,r.numHeads,r.kvSequenceLength,r.vHeadSize,e.inputs[2],e.inputs[3],2*r.hiddenSize);Kr(e,n,s,u,e.inputs[4],void 0,e.inputs[6],e.inputs[7],e.inputs[5],r,t)}});var Ll,Fl,jl,ql,Kl,Yl,Zl,Ql,Ts,Es=j(()=>{\"use strict\";Ne();$e();ve();Ll=e=>{if(!e||e.length<1)throw new Error(\"Too few inputs\");if(e[0].dataType!==1)throw new Error(\"Input type must be float.\");if(e.length>=2){let t=e[0].dims.length*2===e[1].dims[0];if(e.length===4&&(t=e[3].dims[0]*2===e[1].dims[0]),!t)throw new Error(\"The pads should be a 1D tensor of shape [2 * input_rank] or [2 * num_axes].\")}},Fl=(e,t,r)=>{let o=\"\";for(let n=t-1;n>=0;--n)o+=`\\n k = i32(${e.indicesGet(\"indices\",n)}) - ${ce(\"uniforms.pads\",n,r)};\\n if (k < 0) {\\n break;\\n }\\n if (k >= i32(${ce(\"uniforms.x_shape\",n,t)})) {\\n break;\\n }\\n offset += k * i32(${ce(\"uniforms.x_strides\",n,t)});\\n `;return`\\n value = ${e.type.value}(uniforms.constant_value);\\n for (var i = 0; i < 1; i++) {\\n var offset = 0;\\n var k = 0;\\n ${o}\\n value = x[offset];\\n }\\n `},jl=(e,t,r)=>{let o=\"\";for(let n=t-1;n>=0;--n)o+=`\\n k = i32(${e.indicesGet(\"indices\",n)}) - ${ce(\"uniforms.pads\",n,r)};\\n if (k < 0) {\\n k = -k;\\n }\\n {\\n let _2n_1 = 2 * (i32(${ce(\"uniforms.x_shape\",n,t)}) - 1);\\n k = k % _2n_1;\\n if(k >= i32(${ce(\"uniforms.x_shape\",n,t)})) {\\n k = _2n_1 - k;\\n }\\n }\\n offset += k * i32(${ce(\"uniforms.x_strides\",n,t)});\\n `;return`\\n var offset = 0;\\n var k = 0;\\n ${o}\\n value = x[offset];\\n `},ql=(e,t,r)=>{let o=\"\";for(let n=t-1;n>=0;--n)o+=`\\n k = i32(${e.indicesGet(\"indices\",n)}) - ${ce(\"uniforms.pads\",n,r)};\\n if (k < 0) {\\n k = 0;\\n }\\n if (k >= i32(${ce(\"uniforms.x_shape\",n,t)})) {\\n k = i32(${ce(\"uniforms.x_shape\",n,t)}) - 1;\\n }\\n offset += k * i32(${ce(\"uniforms.x_strides\",n,t)});\\n `;return`\\n var offset = 0;\\n var k = 0;\\n ${o}\\n value = x[offset];\\n `},Kl=(e,t,r)=>{let o=\"\";for(let n=t-1;n>=0;--n)o+=`\\n k = i32(${e.indicesGet(\"indices\",n)}) - ${ce(\"uniforms.pads\",n,r)};\\n if (k < 0) {\\n k += i32(${ce(\"uniforms.x_shape\",n,t)}]);\\n }\\n if (k >= i32(${ce(\"uniforms.x_shape\",n,t)})) {\\n k -= i32(${ce(\"uniforms.x_shape\",n,t)});\\n }\\n offset += k * i32(${ce(\"uniforms.x_strides\",n,t)});\\n `;return`\\n var offset = 0;\\n var k = 0;\\n ${o}\\n value = x[offset];\\n `},Yl=(e,t,r)=>{switch(r.mode){case 0:return Fl(e,t,r.pads.length);case 1:return jl(e,t,r.pads.length);case 2:return ql(e,t,r.pads.length);case 3:return Kl(e,t,r.pads.length);default:throw new Error(\"Invalid mode\")}},Zl=(e,t)=>{let r=U.padShape(e[0].dims.slice(),t.pads),o=e[0].dims,s=[{type:\"uint32\",data:U.size(r)},{type:\"uint32\",data:t.pads}];if(t.mode===0){let a=Xe(e[0].dataType);s.push({type:a,data:t.value})}s.push(...L(e[0].dims),...L(r));let u=[\"rank\"],l=a=>{let p=F(\"output\",e[0].dataType,r.length),h=M(\"x\",e[0].dataType,o.length),g=h.type.value,b=Yl(p,o.length,t),w=[{name:\"output_size\",type:\"u32\"},{name:\"pads\",type:\"i32\",length:t.pads.length}];return t.mode===0&&w.push({name:\"constant_value\",type:g}),`\\n ${a.registerUniforms(w).declareVariables(h,p)}\\n ${a.mainStart()}\\n ${a.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\\n\\n let indices = ${p.offsetToIndices(\"global_idx\")};\\n\\n var value = ${g}(0);\\n ${b}\\n output[global_idx] = value;\\n }`};return{name:\"Pad\",shaderCache:{hint:`${t.mode}`,inputDependencies:u},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(U.size(r)/64)},programUniforms:s}),getShaderSource:l}},Ql=(e,t)=>{if(e.length>1){let r=e[1].getBigInt64Array(),o=e.length>=3&&e[2].data?e[2].getFloat32Array()[0]:0,n=e[0].dims.length,s=new Int32Array(2*n).fill(0);if(e.length>=4){let l=e[3].getBigInt64Array();for(let a=0;as[Number(a)]=Number(l));let u=[];return s.forEach(l=>u.push(l)),{mode:t.mode,value:o,pads:u}}else return t},Ts=(e,t)=>{Ll(e.inputs);let r=Ql(e.inputs,t);e.compute(Zl(e.inputs,r),{inputs:[0]})}});var nn,Os,Ps,ks,Rs,Xl,Jl,Bs,Ds,Ms,zs,Us,Vs,Ns,Ws,Hs,Gs,Ls,Fs,js=j(()=>{\"use strict\";Lt();$e();ve();nn=e=>{if(Gt.webgpu.validateInputContent&&(!e||e.length!==1))throw new Error(\"Pool ops requires 1 input.\")},Os=(e,t,r)=>{let o=t.format===\"NHWC\",n=e.dims.slice();o&&n.splice(1,0,n.pop());let s=Object.hasOwnProperty.call(t,\"dilations\"),u=t.kernelShape.slice(),l=t.strides.slice(),a=s?t.dilations.slice():[],p=t.pads.slice();Bt.adjustPoolAttributes(r,n,u,l,a,p);let h=Bt.computePoolOutputShape(r,n,l,a,u,p,t.autoPad),g=Object.assign({},t);s?Object.assign(g,{kernelShape:u,strides:l,pads:p,dilations:a,cacheKey:t.cacheKey}):Object.assign(g,{kernelShape:u,strides:l,pads:p,cacheKey:t.cacheKey});let b=h.slice();return b.push(b.splice(1,1)[0]),[g,o?b:h]},Ps=(e,t)=>{let r=t.format===\"NHWC\",o=U.size(e),n=U.size(t.kernelShape),s=[{type:\"uint32\",data:o},{type:\"uint32\",data:n}],u=[{name:\"outputSize\",type:\"u32\"},{name:\"kernelSize\",type:\"u32\"}];if(t.kernelShape.length<=2){let l=t.kernelShape[t.kernelShape.length-1],a=t.strides[t.strides.length-1],p=t.pads[t.pads.length/2-1],h=t.pads[t.pads.length-1],g=!!(p+h);s.push({type:\"uint32\",data:l},{type:\"uint32\",data:a},{type:\"uint32\",data:p},{type:\"uint32\",data:h}),u.push({name:\"kw\",type:\"u32\"},{name:\"sw\",type:\"u32\"},{name:\"pwStart\",type:\"u32\"},{name:\"pwEnd\",type:\"u32\"});let b=!1;if(t.kernelShape.length===2){let w=t.kernelShape[t.kernelShape.length-2],y=t.strides[t.strides.length-2],_=t.pads[t.pads.length/2-2],I=t.pads[t.pads.length-2];b=!!(_+I),s.push({type:\"uint32\",data:w},{type:\"uint32\",data:y},{type:\"uint32\",data:_},{type:\"uint32\",data:I}),u.push({name:\"kh\",type:\"u32\"},{name:\"sh\",type:\"u32\"},{name:\"phStart\",type:\"u32\"},{name:\"phEnd\",type:\"u32\"})}return[s,u,!0,g,b]}else{if(r)throw new Error(\"Pooling with kernelShape.length > 2 is not supported for NHWC format.\");let l=U.computeStrides(t.kernelShape);s.push({type:\"uint32\",data:l},{type:\"uint32\",data:t.pads},{type:\"uint32\",data:t.strides}),u.push({name:\"kernelStrides\",type:\"u32\",length:l.length},{name:\"pads\",type:\"u32\",length:t.pads.length},{name:\"strides\",type:\"u32\",length:t.strides.length});let a=t.pads.reduce((p,h)=>p+h);return[s,u,!!a,!1,!1]}},ks=(e,t,r,o,n,s,u,l,a,p,h,g)=>{let b=n.format===\"NHWC\",w=t.type.value,y=F(\"output\",t.type.tensor,o);if(n.kernelShape.length<=2){let _=\"\",I=\"\",$=\"\",x=r-(b?2:1);if(h?_=`\\n for (var i: u32 = 0u; i < uniforms.kw; i++) {\\n xIndices[${x}] = indices[${x}] * uniforms.sw - uniforms.pwStart + i;\\n if (xIndices[${x}] < 0 || xIndices[${x}]\\n >= uniforms.x_shape[${x}]) {\\n pad++;\\n continue;\\n }\\n let x_val = x[${t.indicesToOffset(\"xIndices\")}];\\n ${s}\\n }`:_=`\\n for (var i: u32 = 0u; i < uniforms.kw; i++) {\\n xIndices[${x}] = indices[${x}] * uniforms.sw - uniforms.pwStart + i;\\n let x_val = x[${t.indicesToOffset(\"xIndices\")}];\\n ${s}\\n }`,n.kernelShape.length===2){let A=r-(b?3:2);g?I=`\\n for (var j: u32 = 0u; j < uniforms.kh; j++) {\\n xIndices[${A}] = indices[${A}] * uniforms.sh - uniforms.phStart + j;\\n if (xIndices[${A}] < 0 || xIndices[${A}] >= uniforms.x_shape[${A}]) {\\n pad += i32(uniforms.kw);\\n continue;\\n }\\n `:I=`\\n for (var j: u32 = 0u; j < uniforms.kh; j++) {\\n xIndices[${A}] = indices[${A}] * uniforms.sh - uniforms.phStart + j;\\n `,$=`\\n }\\n `}return`\\n ${e.registerUniforms(a).declareVariables(t,y)}\\n\\n ${e.mainStart()}\\n ${e.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\\n\\n let indices = ${y.offsetToIndices(\"global_idx\")};\\n var xIndices = ${y.offsetToIndices(\"global_idx\")};\\n\\n var value = ${w}(${l});\\n var pad = 0;\\n ${I}\\n ${_}\\n ${$}\\n ${u}\\n\\n output[global_idx] = value;\\n }`}else{if(b)throw new Error(\"Pooling with kernelShape.length > 2 is not supported for NHWC format.\");let _=n.kernelShape.length,I=n.pads.length,$=\"\";return p?$=`\\n if (xIndices[j] >= uniforms.x_shape[j]) {\\n pad++;\\n isPad = true;\\n break;\\n }\\n }\\n if (!isPad) {\\n let x_val = x[${t.indicesToOffset(\"xIndices\")}];\\n ${s}\\n }`:$=`\\n }\\n let x_val = x[${t.indicesToOffset(\"xIndices\")}];\\n ${s}\\n `,`\\n ${e.registerUniforms(a).declareVariables(t,y)}\\n\\n ${e.mainStart()}\\n ${e.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\\n let indices = ${y.offsetToIndices(\"global_idx\")};\\n var xIndices = ${y.offsetToIndices(\"global_idx\")};\\n\\n var offsets: array;\\n\\n var value = ${w}(${l});\\n var pad = 0;\\n var isPad = false;\\n\\n for (var i: u32 = 0u; i < uniforms.kernelSize; i++) {\\n var offset = i;\\n for (var j = 0u; j < ${_-1}u; j++) {\\n offsets[j] = offset / ${ce(\"uniforms.kernelStrides\",\"j\",_)};\\n offset -= offsets[j] * ${ce(\"uniforms.kernelStrides\",\"j\",_)};\\n }\\n offsets[${_-1}] = offset;\\n\\n isPad = false;\\n for (var j = ${r-_}u; j < ${r}u; j++) {\\n xIndices[j] = indices[j] * ${ce(\"uniforms.strides\",`j - ${r-_}u`,_)}\\n + offsets[j - ${r-_}u] - ${ce(\"uniforms.pads\",\"j - 2u\",I)};\\n ${$}\\n }\\n ${u}\\n\\n output[global_idx] = value;\\n }`}},Rs=e=>`${e.format};${e.ceilMode};${e.autoPad};${e.kernelShape.length}`,Xl=e=>`${Rs(e)};${e.countIncludePad}`,Jl=e=>`${Rs(e)};${e.storageOrder};${e.dilations}`,Bs=e=>({format:e.format,autoPad:[\"NOTSET\",\"VALID\",\"SAME_UPPER\",\"SAME_LOWER\"][e.auto_pad],ceilMode:e.ceil_mode,kernelShape:e.kernel_shape,strides:e.strides,pads:e.pads}),Ds=(e,t,r,o)=>{let[n,s]=Os(t,o,r),u=M(\"x\",t.dataType,t.dims.length),l=u.type.value,a=\"value += x_val;\",p=\"\";n.countIncludePad?p+=`value /= ${l}(uniforms.kernelSize);`:p+=`value /= ${l}(i32(uniforms.kernelSize) - pad);`;let[h,g,b,w,y]=Ps(s,n);h.push(...L(t.dims),...L(s));let _=[\"rank\"];return{name:e,shaderCache:{hint:`${o.cacheKey};${b};${w};${y}`,inputDependencies:_},getRunData:()=>({outputs:[{dims:s,dataType:t.dataType}],dispatchGroup:{x:Math.ceil(U.size(s)/64)},programUniforms:h}),getShaderSource:I=>ks(I,u,t.dims.length,s.length,n,a,p,0,g,b,w,y)}},Ms=e=>{let t=e.count_include_pad!==0,r=Bs(e);if(r.ceilMode!==0)throw new Error(\"using ceil() in shape computation is not yet supported for AveragePool\");let o={countIncludePad:t,...r,cacheKey:\"\"};return{...o,cacheKey:Xl(o)}},zs=(e,t)=>{nn(e.inputs),e.compute(Ds(\"AveragePool\",e.inputs[0],!1,t))},Us={autoPad:\"\",ceilMode:0,countIncludePad:!1,kernelShape:[],strides:[],pads:[],storageOrder:0,dilations:[]},Vs=e=>{let t=e.format;return{format:t,...Us,cacheKey:t}},Ns=(e,t)=>{nn(e.inputs),e.compute(Ds(\"GlobalAveragePool\",e.inputs[0],!0,t))},Ws=(e,t,r,o)=>{let[n,s]=Os(t,o,r),u=`\\n value = max(x_val, value);\\n `,l=\"\",a=M(\"x\",t.dataType,t.dims.length),p=[\"rank\"],[h,g,b,w,y]=Ps(s,n);return h.push(...L(t.dims),...L(s)),{name:e,shaderCache:{hint:`${o.cacheKey};${b};${w};${y}`,inputDependencies:p},getRunData:()=>({outputs:[{dims:s,dataType:t.dataType}],dispatchGroup:{x:Math.ceil(U.size(s)/64)},programUniforms:h}),getShaderSource:_=>ks(_,a,t.dims.length,s.length,n,u,l,-1e5,g,b,w,y)}},Hs=(e,t)=>{nn(e.inputs),e.compute(Ws(\"MaxPool\",e.inputs[0],!1,t))},Gs=e=>{let t=e.storage_order,r=e.dilations,o=Bs(e);if(t!==0)throw new Error(\"column major storage order is not yet supported for MaxPool\");if(o.ceilMode!==0)throw new Error(\"using ceil() in shape computation is not yet supported for MaxPool\");let n={storageOrder:t,dilations:r,...o,cacheKey:\"\"};return{...n,cacheKey:Jl(n)}},Ls=e=>{let t=e.format;return{format:t,...Us,cacheKey:t}},Fs=(e,t)=>{nn(e.inputs),e.compute(Ws(\"GlobalMaxPool\",e.inputs[0],!0,t))}});var tc,rc,qs,Ks=j(()=>{\"use strict\";Lt();Ne();ve();tc=(e,t,r)=>{let o=e===t,n=et&&r>0;if(o||n||s)throw new Error(\"Range these inputs\\' contents are invalid.\")},rc=(e,t,r,o)=>{let n=Math.abs(Math.ceil((t-e)/r)),s=[n],u=n,l=Xe(o),a=[{type:\"uint32\",data:u},{type:l,data:e},{type:l,data:r},...L(s)],p=h=>{let g=F(\"output\",o,s.length),b=g.type.value,w=[{name:\"outputSize\",type:\"u32\"},{name:\"start\",type:b},{name:\"delta\",type:b}];return`\\n ${h.registerUniforms(w).declareVariables(g)}\\n ${h.mainStart()}\\n ${h.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\\n output[global_idx] = uniforms.start + ${b}(global_idx) * uniforms.delta;\\n }`};return{name:\"Range\",shaderCache:{hint:`${o}`},getShaderSource:p,getRunData:()=>({outputs:[{dims:s,dataType:o}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:a})}},qs=e=>{let t=0,r=0,o=0;e.inputs[0].dataType===6?(t=e.inputs[0].getInt32Array()[0],r=e.inputs[1].getInt32Array()[0],o=e.inputs[2].getInt32Array()[0]):e.inputs[0].dataType===1&&(t=e.inputs[0].getFloat32Array()[0],r=e.inputs[1].getFloat32Array()[0],o=e.inputs[2].getFloat32Array()[0]),Gt.webgpu.validateInputContent&&tc(t,r,o),e.compute(rc(t,r,o,e.inputs[0].dataType),{inputs:[]})}});var nc,oc,ac,ic,sc,uc,dc,lc,cc,pc,mc,Ys,fc,hc,gc,yc,bc,Zs,Qs,Xs=j(()=>{\"use strict\";$e();je();ve();nc=(e,t)=>{if(e.every(r=>r>0||(()=>{throw new Error(\"Resize requires scales input values to be positive\")})),e.length>0){if(t.mode===\"linear\"){if(!(e.length===2||e.length===3||e.length===4&&e[0]===1&&e[1]===1||e.length===4&&e[0]===1&&e[3]===1||e.length===5&&e[0]===1&&e[1]===1))throw new Error(`For linear mode, Resize requires scales to be 2D, 3D, 4D with either two outermost or one innermost and\\n one outermost scale values equal to 1, or 5D with two outermost scale values equal to 1`)}else if(t.mode===\"cubic\"&&!(e.length===2||e.length===4&&e[0]===1&&e[1]===1||e.length===4&&e[0]===1&&e[3]===1))throw new Error(\"Resize requires scales input size to be 2 or 4 for cubic mode\")}},oc=(e,t,r)=>{t.every(n=>n>=0&&n{throw new Error(\"Resize requires axes input values to be positive and less than rank\")}));let o=new Array(r).fill(1);return t.forEach((n,s)=>o[n]=e[s]),o},ac=(e,t,r,o,n,s)=>{let[u,l,a]=r>10?[1,2,3]:[-1,e.length>1?1:-1,-1],p=e[0].dims.length;if(u>0&&e.length>u&&e[u].dims.length>0)e[u].getFloat32Array().forEach(h=>s.push(h));else if(t.coordinateTransformMode===\"tf_crop_and_resize\")throw new Error(\"Resize requires RoI input to be specified when coordinateTransformMode is tfCropAndResize\");if(l>0&&e.length>l&&e[l].dims.length>0){if(e[l].getFloat32Array().forEach(h=>o.push(h)),o.length!==0&&o.length!==p&&r>=18&&o.length!==t.axes.length)throw new Error(\"Resize requires scales input size to be same as input rank or axes size for opset 18 and up\");nc(o,t),t.axes.length>0&&oc(o,t.axes,p).forEach((h,g)=>o[g]=h)}if(a>0&&e.length>a&&(e[a].getBigInt64Array().forEach(h=>n.push(Number(h))),n.length!==p||r>=18&&n.length===t.axes.length))throw new Error(\"Resize requires sizes input size to be same as input rank or axes size for opset 18 and up\");if(t.axes.length>0){if(o.length!==t.axes.length)throw new Error(\\'Resize requires \"scales\" input size to be of axes rank when axes attributes is specified\\');if(n.length!==t.axes.length)throw new Error(\\'Resize requires \"sizes\" input size to be of rank axes rank when axes attributes is specified\\')}if(typeof o<\"u\"&&typeof n<\"u\"&&o.length>0&&n.length>p)throw new Error(\"Resize requires only of scales or sizes to be specified\")},ic=(e,t)=>`fn getOriginalCoordinateFromResizedCoordinate(xResized: u32, xScale: f32, lengthResized: u32,\\n lengthOriginal: u32, roiStart: f32, roiEnd: f32) -> ${t} { `+(()=>{switch(e){case\"asymmetric\":return`return ${t}(xResized) / ${t}(xScale);`;case\"pytorch_half_pixel\":return`if (lengthResized > 1) {\\n return (${t}(xResized) + 0.5) / ${t}(xScale) - 0.5;\\n } else {\\n return 0.0;\\n }`;case\"tf_half_pixel_for_nn\":return`return (${t}(xResized) + 0.5) / ${t}(xScale);`;case\"align_corners\":return`if (lengthResized == 1) {\\n return 0.0;\\n } else {\\n // The whole part and the fractional part are calculated separately due to inaccuracy of floating\\n // point division. As an example, f32(21) / f32(7) may evaluate to 2.99... instead of 3, causing an\\n // offset-by-one error later in floor().\\n let whole = ${t}(xResized * (lengthOriginal - 1) / (lengthResized - 1));\\n let fract =\\n ${t}(xResized * (lengthOriginal - 1) % (lengthResized - 1)) / ${t}(lengthResized - 1);\\n return whole + fract;\\n }`;case\"tf_crop_and_resize\":return`if (lengthResized > 1) {\\n return ${t}(roiStart) * ${t}(lengthOriginal - 1) +\\n (${t}(xResized) * ${t}(roiEnd - roiStart) * ${t}(lengthOriginal - 1)) /\\n ${t}(lengthResized - 1);\\n } else {\\n return 0.5 * ${t}(roiStart + roiEnd) * ${t}(lengthOriginal - 1);\\n }`;case\"half_pixel_symmetric\":return`const outputWidth = ${t}xScale * ${t}(lengthResized);\\n const adjustment = ${t}(lengthResized) / outputWidth;\\n const center = ${t}(lengthOriginal) / 2;\\n const offset = center * (1 - adjustment);\\n return offset + ((${t}(xResized) + 0.5) / ${t}(xScale)) - 0.5;`;case\"half_pixel\":return`return ((${t}(xResized) + 0.5) / ${t}(xScale)) - 0.5;`;default:throw new Error(`Coordinate transform mode ${e} is not supported`)}})()+\"}\",sc=(e,t,r)=>`fn getNearestPixelFromOriginal(xOriginal: ${r}, isDownSample: bool) -> ${r} {`+(()=>{switch(e){case\"round_prefer_ceil\":return\"if (fract(xOriginal) == 0.5) { return ceil(xOriginal); } else { return round(xOriginal); }\";case\"floor\":return\"return floor(xOriginal);\";case\"ceil\":return\"return ceil(xOriginal);\";case\"round_prefer_floor\":return\"if (fract(xOriginal) == 0.5) { return floor(xOriginal); } else { return round(xOriginal); }\";case\"simple\":default:if(t<11)return\"if (isDownSample) { return ceil(xOriginal); } else { return xOriginal; }\";throw new Error(`Nearest mode ${e} is not supported`)}})()+\"}\",uc=(e,t,r)=>{let o=new Array(r).fill(0).concat(new Array(r).fill(1)),n=e.length===0?o:e.slice();return t.length>0?(t.forEach((s,u)=>{o[s]=n[u],o[u+r]=n[t.length+u]}),o):n},dc=(e,t,r,o)=>{let n=[];if(r.length>0)if(o.length>0){if(e.forEach(s=>n.push(s)),Math.max(...o)>e.length)throw new Error(\"axes is out of bound\");o.forEach((s,u)=>n[s]=r[u])}else r.forEach(s=>n.push(s));else{if(t.length===0)throw new Error(\"Resize requires either scales or sizes.\");n=e.map((s,u)=>Math.round(s*t[u]))}return n},lc=(e,t,r)=>{let o=(()=>{switch(r.keepAspectRatioPolicy){case\"not_larger\":return r.axes.length>0?Math.min(...r.axes.map(s=>t[s]),Number.MAX_VALUE):Math.min(...t,Number.MAX_VALUE);case\"not_smaller\":return r.axes.length>0?Math.max(...r.axes.map(s=>t[s]),Number.MIN_VALUE):Math.max(...t,Number.MIN_VALUE);default:throw new Error(`Keep aspect ratio policy ${r.keepAspectRatioPolicy} is not supported`)}})();t.fill(1,0,t.length);let n=e.slice();return r.axes.length>0?(r.axes.forEach(s=>t[s]=o),r.axes.forEach(s=>n[s]=Math.round(e[s]*t[s]))):(t.fill(o,0,t.length),n.forEach((s,u)=>n[u]=Math.round(s*t[u]))),n},cc=(e,t,r,o,n)=>`\\n fn calculateOriginalIndicesFromOutputIndices(output_indices: ${e.type.indices}) -> array<${e.type.value}, ${r.length}> {\\n var original_indices: array<${e.type.value}, ${r.length}>;\\n for (var i:u32 = 0; i < ${r.length}; i++) {\\n var output_index = ${e.indicesGet(\"output_indices\",\"i\")};\\n var scale = ${ce(\"uniforms.scales\",\"i\",o)};\\n var roi_low = ${ce(\"uniforms.roi\",\"i\",n)};\\n var roi_hi = ${ce(\"uniforms.roi\",`i + ${t.length}`,n)};\\n if (scale == 1.0) {\\n original_indices[i] = ${e.type.value}(output_index);\\n } else {\\n var input_shape_i = ${ce(\"uniforms.input_shape\",\"i\",t.length)};\\n var output_shape_i = ${ce(\"uniforms.output_shape\",\"i\",r.length)};\\n original_indices[i] = getOriginalCoordinateFromResizedCoordinate(output_index, scale, output_shape_i,\\n input_shape_i, roi_low, roi_hi);\\n }\\n }\\n return original_indices;\\n }`,pc=(e,t,r,o,n,s,u)=>`\\n fn calculateInputIndicesFromOutputIndices(output_indices: ${t.type.indices}) -> ${e.type.indices} {\\n var input_indices: ${e.type.indices};\\n for (var i:u32 = 0; i < ${o.length}; i++) {\\n var output_index = ${t.indicesGet(\"output_indices\",\"i\")};\\n var input_index: u32;\\n var scale = ${ce(\"uniforms.scales\",\"i\",n)};\\n if (scale == 1.0) {\\n input_index = output_index;\\n } else {\\n var roi_low = ${ce(\"uniforms.roi\",\"i\",s)};\\n var roi_hi = ${ce(\"uniforms.roi\",`i + ${r.length}`,s)};\\n var input_shape_i = ${ce(\"uniforms.input_shape\",\"i\",r.length)};\\n var output_shape_i = ${ce(\"uniforms.output_shape\",\"i\",o.length)};\\n var original_idx = getOriginalCoordinateFromResizedCoordinate(output_index, scale, output_shape_i,\\n input_shape_i, roi_low, roi_hi);\\n if (!${u} || (original_idx >= 0 && original_idx < ${t.type.value}(input_shape_i))) {\\n if (original_idx < 0) {\\n input_index = 0;\\n } else if (original_idx > ${t.type.value}(input_shape_i - 1)) {\\n input_index = input_shape_i - 1;\\n } else {\\n input_index = u32(getNearestPixelFromOriginal(original_idx, scale < 1));\\n }\\n } else {\\n input_index = u32(original_idx);\\n }\\n }\\n ${e.indicesSet(\"input_indices\",\"i\",\" input_index\")}\\n }\\n return input_indices;\\n }`,mc=(e,t)=>`\\n fn checkInputIndices(input_indices: ${e.type.indices}) -> bool {\\n for (var i:u32 = 0; i < ${t.length}; i++) {\\n var input_index = ${e.indicesGet(\"input_indices\",\"i\")};\\n if (input_index < 0 || input_index >= ${ce(\"uniforms.input_shape\",\"i\",t.length)}) {\\n return false;\\n }\\n }\\n return true;\\n }`,Ys=(e,t,r,o)=>e.rank>o?`\\n ${e.indicesSet(\"input_indices\",t,\"channel\")};\\n ${e.indicesSet(\"input_indices\",r,\"batch\")};\\n`:\"\",fc=(e,t,r,o,n)=>{let[u,l,a,p]=r.length===2?[-1,0,1,-1]:[0,2,3,1],h=e.type.value;return`\\n fn getInputValue(batch: u32, channel: u32, row: u32, col: u32) -> ${h} {\\n var input_indices: ${e.type.indices};\\n ${e.indicesSet(\"input_indices\",l,`max(0, min(row, ${r[l]} - 1))`)};\\n ${e.indicesSet(\"input_indices\",a,`max(0, min(col, ${r[a]} - 1))`)};\\n ${Ys(e,p,u,2)}\\n return ${e.getByIndices(\"input_indices\")};\\n }\\n\\n fn bilinearInterpolation(output_indices: ${t.type.indices}) -> ${h} {\\n var originalIndices = calculateOriginalIndicesFromOutputIndices(output_indices);\\n var row:${h} = originalIndices[${l}];\\n var col:${h} = originalIndices[${a}];\\n ${o?`if (row < 0 || row > (${r[l]} - 1) || col < 0 || col > (${r[a]} - 1)) {\\n return ${n};\\n }`:\"\"};\\n row = max(0, min(row, ${r[l]} - 1));\\n col = max(0, min(col, ${r[a]} - 1));\\n var row1: u32 = u32(row);\\n var col1: u32 = u32(col);\\n var row2: u32 = u32(row + 1);\\n var col2: u32 = u32(col + 1);\\n var channel: u32 = ${r.length>2?`u32(originalIndices[${p}])`:\"0\"};\\n var batch: u32 = ${r.length>2?`u32(originalIndices[${u}])`:\"0\"};\\n var x11: ${h} = getInputValue(batch, channel, row1, col1);\\n var x12: ${h} = getInputValue(batch, channel, row1, col2);\\n var x21: ${h} = getInputValue(batch, channel, row2, col1);\\n var x22: ${h} = getInputValue(batch, channel, row2, col2);\\n var dx1: ${h} = abs(row - ${h}(row1));\\n var dx2: ${h} = abs(${h}(row2) - row);\\n var dy1: ${h} = abs(col - ${h}(col1));\\n var dy2: ${h} = abs(${h}(col2) - col);\\n if (row1 == row2) {\\n dx1 = 0.5;\\n dx2 = 0.5;\\n }\\n if (col1 == col2) {\\n dy1 = 0.5;\\n dy2 = 0.5;\\n }\\n return (x11 * dx2 * dy2 + x12 * dx2 * dy1 + x21 * dx1 * dy2 + x22 * dx1 * dy1);\\n }`},hc=(e,t,r,o,n,s,u,l,a,p)=>{let h=r.length===2,g=!0,[b,w]=h?[0,1]:g?[2,3]:[1,2],y=e.type.value,_=I=>{let $=I===b?\"row\":\"col\";return`\\n fn ${$}CubicInterpolation(input_indices: ${e.type.indices}, output_indices: ${t.type.indices}) -> ${y} {\\n var output_index = ${t.indicesGet(\"output_indices\",I)};\\n var originalIdx: ${y} = getOriginalCoordinateFromResizedCoordinate(output_index, ${n[I]},\\n ${o[I]}, ${r[I]}, ${s[I]}, ${s[I]} + ${r.length});\\n var fractOriginalIdx: ${y} = originalIdx - floor(originalIdx);\\n var coefs = getCubicInterpolationCoefs(fractOriginalIdx);\\n\\n if (${l} && (originalIdx < 0 || originalIdx > (${r[I]} - 1))) {\\n return ${a};\\n }\\n var data: array<${y}, 4> = array<${y}, 4>(0.0, 0.0, 0.0, 0.0);\\n for (var i: i32 = -1; i < 3; i++) {\\n var ${$}: ${y} = originalIdx + ${y}(i);\\n if (${$} < 0 || ${$} >= ${r[I]}) {\\n ${(()=>p?`coefs[i + 1] = 0.0;\\n continue;`:l?`return ${a};`:`${$} = max(0, min(${$}, ${r[I]} - 1));`)()};\\n }\\n var input_indices_copy: ${e.type.indices} = input_indices;\\n ${e.indicesSet(\"input_indices_copy\",I,`u32(${$})`)};\\n data[i + 1] = ${I===b?e.getByIndices(\"input_indices_copy\"):\"rowCubicInterpolation(input_indices_copy, output_indices)\"};\\n }\\n return cubicInterpolation1D(data, coefs);\\n }`};return`\\n ${_(b)};\\n ${_(w)};\\n fn getCubicInterpolationCoefs(s: ${y}) -> array<${y}, 4> {\\n var absS = abs(s);\\n var coeffs: array<${y}, 4> = array<${y}, 4>(0.0, 0.0, 0.0, 0.0);\\n var oneMinusAbsS: ${y} = 1.0 - absS;\\n var twoMinusAbsS: ${y} = 2.0 - absS;\\n var onePlusAbsS: ${y} = 1.0 + absS;\\n coeffs[0] = ((${u} * onePlusAbsS - 5 * ${u}) * onePlusAbsS + 8 * ${u}) * onePlusAbsS - 4 * ${u};\\n coeffs[1] = ((${u} + 2) * absS - (${u} + 3)) * absS * absS + 1;\\n coeffs[2] = ((${u} + 2) * oneMinusAbsS - (${u} + 3)) * oneMinusAbsS * oneMinusAbsS + 1;\\n coeffs[3] = ((${u} * twoMinusAbsS - 5 * ${u}) * twoMinusAbsS + 8 * ${u}) * twoMinusAbsS - 4 * ${u};\\n return coeffs;\\n }\\n\\n fn cubicInterpolation1D(x: array<${y}, 4>, coefs: array<${y}, 4>) -> ${y} {\\n var coefsSum: ${y} = coefs[0] + coefs[1] + coefs[2] + coefs[3];\\n return (x[0] * coefs[0] + x[1] * coefs[1]+ x[2] * coefs[2]+ x[3] * coefs[3]) / coefsSum;\\n }\\n\\n fn bicubicInterpolation(output_indices: ${t.type.indices}) -> ${y} {\\n var input_indices: ${e.type.indices} = output_indices;\\n return colCubicInterpolation(input_indices, output_indices);\\n }\\n `},gc=(e,t,r,o,n)=>{let[u,l,a,p,h]=r.length===3?[-1,0,1,2,-1]:[0,2,3,4,1],g=e.type.value;return`\\n fn getInputValue(batch: u32, channel: u32, depth:u32, height: u32, width: u32) -> ${g} {\\n var input_indices: ${e.type.indices};\\n ${e.indicesSet(\"input_indices\",l,`max(0, min(depth, ${r[l]} - 1))`)};\\n ${e.indicesSet(\"input_indices\",a,`max(0, min(height, ${r[a]} - 1))`)};\\n ${e.indicesSet(\"input_indices\",p,`max(0, min(width, ${r[p]} - 1))`)};\\n ${Ys(e,h,u,3)}\\n return ${e.getByIndices(\"input_indices\")};\\n }\\n\\n fn trilinearInterpolation(output_indices: ${t.type.indices}) -> ${g} {\\n var originalIndices = calculateOriginalIndicesFromOutputIndices(output_indices);\\n var depth:${g} = originalIndices[${l}];\\n var height:${g} = originalIndices[${a}];\\n var width:${g} = originalIndices[${p}];\\n ${o?`if (depth < 0 || depth > (${r[l]} - 1) || height < 0 || height > (${r[a]} - 1) || width < 0 || (width > ${r[p]} - 1)) {\\n return ${n};\\n }`:\"\"};\\n\\n depth = max(0, min(depth, ${r[l]} - 1));\\n height = max(0, min(height, ${r[a]} - 1));\\n width = max(0, min(width, ${r[p]} - 1));\\n var depth1: u32 = u32(depth);\\n var height1: u32 = u32(height);\\n var width1: u32 = u32(width);\\n var depth2: u32 = u32(depth + 1);\\n var height2: u32 = u32(height + 1);\\n var width2: u32 = u32(width + 1);\\n var channel: u32 = ${r.length>3?`u32(originalIndices[${h}])`:\"0\"};\\n var batch: u32 = ${r.length>3?`u32(originalIndices[${u}])`:\"0\"};\\n\\n var x111: ${g} = getInputValue(batch, channel, depth1, height1, width1);\\n var x112: ${g} = getInputValue(batch, channel, depth1, height1, width2);\\n var x121: ${g} = getInputValue(batch, channel, depth1, height2, width1);\\n var x122: ${g} = getInputValue(batch, channel, depth1, height2, width2);\\n var x211: ${g} = getInputValue(batch, channel, depth2, height1, width1);\\n var x212: ${g} = getInputValue(batch, channel, depth2, height1, width2);\\n var x221: ${g} = getInputValue(batch, channel, depth2, height2, width1);\\n var x222: ${g} = getInputValue(batch, channel, depth2, height2, width2);\\n var dx1: ${g} = abs(depth - ${g}(depth1));\\n var dx2: ${g} = abs(${g}(depth2) - depth);\\n var dy1: ${g} = abs(height - ${g}(height1));\\n var dy2: ${g} = abs(${g}(height2) - height);\\n var dz1: ${g} = abs(width - ${g}(width1));\\n var dz2: ${g} = abs(${g}(width2) - width);\\n if (depth1 == depth2) {\\n dx1 = 0.5;\\n dx2 = 0.5;\\n }\\n if (height1 == height2) {\\n dy1 = 0.5;\\n dy2 = 0.5;\\n }\\n if (width1 == width2) {\\n dz1 = 0.5;\\n dz2 = 0.5;\\n }\\n return (x111 * dx2 * dy2 * dz2 + x112 * dx2 * dy2 * dz1 + x121 * dx2 * dy1 *dz2 + x122 * dx2 * dy1 * dz1 +\\n x211 * dx1 * dy2 * dz2 + x212 * dx1 * dy2 * dz1 + x221 * dx1 * dy1 *dz2 + x222 * dx1 * dy1 * dz1);\\n }`},yc=(e,t,r,o,n,s)=>{let u=e.dims,l=uc(s,t.axes,u.length),a=dc(u,o,n,t.axes),p=o.slice();o.length===0&&(p=u.map((x,E)=>x===0?1:a[E]/x),t.keepAspectRatioPolicy!==\"stretch\"&&(a=lc(u,p,t)));let h=F(\"output\",e.dataType,a.length),g=M(\"input\",e.dataType,u.length),b=U.size(a),w=u.length===a.length&&u.every((x,E)=>x===a[E]),y=t.coordinateTransformMode===\"tf_crop_and_resize\",_=t.extrapolationValue,I=g.type.value,$=x=>`\\n ${w?\"\":`\\n ${ic(t.coordinateTransformMode,I)};\\n ${(()=>{switch(t.mode){case\"nearest\":return`\\n ${mc(g,u)};\\n ${sc(t.nearestMode,r,I)};\\n ${pc(g,h,u,a,p.length,l.length,y)};\\n `;case\"linear\":return`\\n ${cc(h,u,a,p.length,l.length)};\\n ${(()=>{if(u.length===2||u.length===4)return`${fc(g,h,u,y,_)}`;if(u.length===3||u.length===5)return`${gc(g,h,u,y,_)}`;throw Error(\"Linear mode only supports input dims 2, 3, 4 and 5 are supported in linear mode.\")})()};\\n `;case\"cubic\":return`\\n ${(()=>{if(u.length===2||u.length===4)return`${hc(g,h,u,a,p,l,t.cubicCoeffA,y,t.extrapolationValue,t.excludeOutside)}`;throw Error(\"Cubic mode only supports input dims 2 and 4 are supported in linear mode.\")})()};\\n `;default:throw Error(\"Invalid resize mode\")}})()};\\n `}\\n ${x.registerUniform(\"output_size\",\"u32\").registerUniform(\"scales\",\"f32\",p.length).registerUniform(\"roi\",\"f32\",l.length).declareVariables(g,h)}\\n ${x.mainStart()}\\n ${x.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\\n ${w?\"output[global_idx] = input[global_idx];\":`\\n let output_indices = ${h.offsetToIndices(\"global_idx\")};\\n var input_indices: ${g.type.indices};\\n ${(()=>{switch(t.mode){case\"nearest\":return`input_indices = calculateInputIndicesFromOutputIndices(output_indices);\\n if (checkInputIndices(input_indices)) {\\n output[global_idx] = ${g.getByIndices(\"input_indices\")};\\n } else {\\n output[global_idx] = ${t.extrapolationValue};\\n }`;case\"linear\":return`output[global_idx] = ${u.length===2||u.length===4?\"bilinearInterpolation\":\"trilinearInterpolation\"}(output_indices);`;case\"cubic\":return\"output[global_idx] = bicubicInterpolation(output_indices);\";default:throw Error(`Unsupported resize mode: ${t.mode}`)}})()};\\n`}\\n }`;return{name:\"Resize\",shaderCache:{hint:`${t.cacheKey}|${r}|${p.length>0?p:\"\"}|${n.length>0?n:\"\"}|${l.length>0?l:\"\"}|${w}|${u}`,inputDependencies:[\"rank\"]},getShaderSource:$,getRunData:()=>({outputs:[{dims:a,dataType:e.dataType}],dispatchGroup:{x:Math.ceil(b/64)},programUniforms:[{type:\"uint32\",data:b},{type:\"float32\",data:p},{type:\"float32\",data:l},...L(u),...L(a)]})}},bc=e=>{let t=e.customDataBuffer;return new Uint32Array(t,t.byteOffset,1)[0]},Zs=(e,t)=>{let r=[],o=[],n=[],s=bc(e);if(t.antialias!==0)throw Error(\"Only default value (0) for Antialias attribute is supported\");ac(e.inputs,t,s,r,o,n),e.compute(yc(e.inputs[0],t,s,r,o,n),{inputs:[0]})},Qs=e=>{let t=e.antialias,r=e.axes,o=e.coordinateTransformMode,n=e.cubicCoeffA,s=e.excludeOutside!==0,u=e.extrapolationValue,l=e.keepAspectRatioPolicy,a=e.mode,p=e.nearestMode===\"\"?\"simple\":e.nearestMode;return ge({antialias:t,axes:r,coordinateTransformMode:o,cubicCoeffA:n,excludeOutside:s,extrapolationValue:u,keepAspectRatioPolicy:l,mode:a,nearestMode:p})}});var wc,vc,Js,eu,tu=j(()=>{\"use strict\";Ne();$e();je();ve();wc=e=>{if(!e||e.length<3)throw new Error(\"layerNorm requires at least 3 inputs.\");let t=e[0],r=e[1],o=e[2];if(t.dataType!==r.dataType||t.dataType!==o.dataType)throw new Error(\"All inputs must have the same data type\");if(t.dims.length!==3&&t.dims.length!==2)throw new Error(\"Input must be 2D or 3D\");if(r.dims.length!==3&&r.dims.length!==2)throw new Error(\"Skip must be 2D or 3D\");let n=t.dims[t.dims.length-1],s=t.dims[t.dims.length-2];if(r.dims[r.dims.length-1]!==n)throw new Error(\"Skip must have the same hidden size as input\");if(r.dims[r.dims.length-2]!==s)throw new Error(\"Skip must have the same sequence length as input\");if(o.dims.length!==1)throw new Error(\"Gamma must be 1D\");if(o.dims[o.dims.length-1]!==n)throw new Error(\"Gamma must have the same hidden size as input\");if(e.length>3){let u=e[3];if(u.dims.length!==1)throw new Error(\"Beta must be 1D\");if(u.dims[u.dims.length-1]!==n)throw new Error(\"Beta must have the same hidden size as input\")}if(e.length>4){let u=e[4];if(u.dims.length!==1)throw new Error(\"Bias must be 1D\");if(u.dims[u.dims.length-1]!==n)throw new Error(\"Bias must have the same hidden size as input\")}},vc=(e,t,r,o)=>{let n=e[0].dims,s=U.size(n),u=n,l=s,a=n.slice(-1)[0],p=o?n.slice(0,-1).concat(1):[],h=e.length>3,g=e.length>4,b=o&&r>1,w=o&&r>2,y=r>3,_=Fe(a),I=[M(\"x\",e[0].dataType,e[0].dims,_),M(\"skip\",e[1].dataType,e[1].dims,_),M(\"gamma\",e[2].dataType,e[2].dims,_)];h&&I.push(M(\"beta\",e[3].dataType,e[3].dims,_)),g&&I.push(M(\"bias\",e[4].dataType,e[4].dims,_)),I.push(F(\"output\",e[0].dataType,u,_)),b&&I.push(F(\"meanOutput\",1,p)),w&&I.push(F(\"invStdOutput\",1,p)),y&&I.push(F(\"inputSkipBiasSum\",e[0].dataType,u,_));let $=Le(e[0].dataType),x=A=>`\\n const hiddenSize: f32 = ${a};\\n const hiddenSizeVectorized: u32 = ${a/_};\\n const epsilon: f32 = ${t.epsilon};\\n\\n ${A.declareVariables(...I)}\\n\\n ${A.mainStart()}\\n ${A.guardAgainstOutOfBoundsWorkgroupSizes(l/a)}\\n let offset = global_idx * hiddenSizeVectorized;\\n var sum = ${Ze(\"f32\",_)};\\n var squareSum = ${Ze(\"f32\",_)};\\n for (var i: u32 = 0; i < hiddenSizeVectorized; i++) {\\n let skipValue = skip[offset + i];\\n let biasValue = ${g?\"bias[i]\":\"0.0\"};\\n let inputValue = x[offset + i];\\n let value = inputValue + skipValue + biasValue;\\n ${y?\"inputSkipBiasSum[offset + i] = value;\":\"\"}\\n output[offset + i] = value;\\n let f32Value = ${at($,_,\"value\")};\\n sum += f32Value;\\n squareSum += f32Value * f32Value;\\n }\\n let mean = ${Je(\"sum\",_)} / hiddenSize;\\n let invStdDev = inverseSqrt(${Je(\"squareSum\",_)} / hiddenSize - mean * mean + epsilon);\\n ${b?\"meanOutput[global_idx] = mean;\":\"\"}\\n ${w?\"invStdOutput[global_idx] = invStdDev;\":\"\"}\\n for (var i: u32 = 0; i < hiddenSizeVectorized; i++) {\\n output[offset + i] = (output[offset + i] - ${$}(mean)) * ${$}(invStdDev) * gamma[i]\\n + ${h?\"beta[i]\":\"0.0\"};\\n }\\n }`,E=[{dims:u,dataType:e[0].dataType}];return r>1&&E.push({dims:p,dataType:1}),r>2&&E.push({dims:p,dataType:1}),r>3&&E.push({dims:n,dataType:e[0].dataType}),{name:\"SkipLayerNormalization\",shaderCache:{hint:t.cacheKey},getShaderSource:x,getRunData:()=>({outputs:E,dispatchGroup:{x:Math.ceil(l/a/64)}})}},Js=(e,t)=>{wc(e.inputs);let o=[0];e.outputCount>1&&o.push(-3),e.outputCount>2&&o.push(-3),e.outputCount>3&&o.push(3),e.compute(vc(e.inputs,t,e.outputCount,!1),{outputs:o})},eu=e=>{let t=e.epsilon;return ge({epsilon:t})}});var $c,on,Sc,ru,xc,_c,nu,ou,au=j(()=>{\"use strict\";Ne();$e();je();ve();$c=(e,t)=>{if(!e||e.length<1)throw new Error(\"too few inputs\");if(t.axes.length!==0){if(t.axes.length!==t.starts.length||t.axes.length!==t.ends.length)throw new Error(\"axes, starts and ends must have the same length\")}else if(t.starts.length!==t.ends.length)throw new Error(\"starts and ends must have the same length\");e.slice(1).forEach((r,o)=>{if(e[o+1].dataType!==6&&e[o+1].dataType!==7)throw new Error(`Input ${o} must be an array of int32 or int64`)})},on=(e,t)=>{let r=[];if(e.length>t)if(e[t].dataType===7)e[t].getBigInt64Array().forEach(o=>r.push(Number(o)));else if(e[t].dataType===6)e[t].getInt32Array().forEach(o=>r.push(Number(o)));else throw new Error(`Input ${t} must be an array of int32 or int64`);return r},Sc=(e,t)=>{if(e.length>1){let r=on(e,1),o=on(e,2),n=on(e,3);return n.length===0&&(n=[...Array(e[0].dims.length).keys()]),ge({starts:r,ends:o,axes:n})}else return t},ru=(e,t,r,o,n)=>{let s=e;return e<0&&(s+=r[o[t]]),n[t]<0?Math.max(0,Math.min(s,r[o[t]]-1)):Math.max(0,Math.min(s,r[o[t]]))},xc=(e,t,r)=>`fn calculateInputIndices(output_indices: ${t.type.indices}) -> ${e.type.indices} {\\n var input_indices: ${e.type.indices};\\n var carry = 0u;\\n for (var i = ${r.length}; i >= 0; i--) {\\n let input_shape_i = ${ce(\"uniforms.input_shape\",\"i\",r.length)};\\n let steps_i = ${ce(\"uniforms.steps\",\"i\",r.length)};\\n let signs_i = ${ce(\"uniforms.signs\",\"i\",r.length)};\\n let starts_i = ${ce(\"uniforms.starts\",\"i\",r.length)};\\n var output_index = ${t.indicesGet(\"output_indices\",\"i\")};\\n var input_index = output_index * steps_i + starts_i + carry;\\n carry = input_index / input_shape_i;\\n input_index = input_index % input_shape_i;\\n if (signs_i < 0) {\\n input_index = input_shape_i - input_index - 1u + starts_i;\\n }\\n ${e.indicesSet(\"input_indices\",\"i\",\"input_index\")};\\n }\\n return input_indices;\\n }`,_c=(e,t)=>{let r=e[0].dims,o=U.size(r),n=t.axes.length>0?U.normalizeAxes(t.axes,r.length):[...Array(r.length).keys()],s=on(e,4);s.forEach($=>$!==0||(()=>{throw new Error(\"step cannot be 0\")})),s.length===0&&(s=Array(n.length).fill(1));let u=t.starts.map(($,x)=>ru($,x,r,n,s)),l=t.ends.map(($,x)=>ru($,x,r,n,s));if(n.length!==u.length||n.length!==l.length)throw new Error(\"start, ends and axes should have the same number of elements\");if(n.length!==r.length)for(let $=0;$Math.sign($));s.forEach(($,x,E)=>{if($<0){let A=(l[x]-u[x])/$,z=u[x],R=z+A*s[x];u[x]=R,l[x]=z,E[x]=-$}});let p=r.slice(0);n.forEach(($,x)=>{p[$]=Math.ceil((l[$]-u[$])/s[$])});let h={dims:p,dataType:e[0].dataType},g=F(\"output\",e[0].dataType,p.length),b=M(\"input\",e[0].dataType,e[0].dims.length),w=U.size(p),y=[{name:\"outputSize\",type:\"u32\"},{name:\"starts\",type:\"u32\",length:u.length},{name:\"signs\",type:\"i32\",length:a.length},{name:\"steps\",type:\"u32\",length:s.length}],_=[{type:\"uint32\",data:w},{type:\"uint32\",data:u},{type:\"int32\",data:a},{type:\"uint32\",data:s},...L(e[0].dims),...L(p)],I=$=>`\\n ${$.registerUniforms(y).declareVariables(b,g)}\\n ${xc(b,g,r)}\\n ${$.mainStart()}\\n ${$.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\\n let output_indices = ${g.offsetToIndices(\"global_idx\")};\\n let input_indices = calculateInputIndices(output_indices);\\n ${g.setByOffset(\"global_idx\",b.getByIndices(\"input_indices\"))}\\n }`;return{name:\"Slice\",shaderCache:{hint:`${a.length}_${u.length}_${s.length}`,inputDependencies:[\"rank\"]},getShaderSource:I,getRunData:()=>({outputs:[h],dispatchGroup:{x:Math.ceil(o/64)},programUniforms:_})}},nu=(e,t)=>{$c(e.inputs,t);let r=Sc(e.inputs,t);e.compute(_c(e.inputs,r),{inputs:[0]})},ou=e=>{let t=e.starts,r=e.ends,o=e.axes;return ge({starts:t,ends:r,axes:o})}});var Cc,Ic,iu,su,uu=j(()=>{\"use strict\";$e();je();ve();Cc=e=>{if(!e||e.length!==1)throw new Error(\"Softmax op requires 1 input.\")},Ic=(e,t)=>{let r=e.dims,o=U.size(r),n=64,s=t.axis;if(s<0&&(s=r.length+s),s$===4?`max(max(${I}.x, ${I}.y), max(${I}.z, ${I}.w))`:$===2?`max(${I}.x, ${I}.y)`:$===3?`max(max(${I}.x, ${I}.y), ${I}.z)`:I,g=M(\"x\",e.dataType,e.dims,a),b=F(\"result\",e.dataType,e.dims,a),w=g.type.value,y=Le(e.dataType)===\"f32\"?`var threadMax = ${w}(-3.402823e+38f);`:`var threadMax = ${w}(-65504.0h);`,_=I=>`\\n var rowMaxShared : ${w};\\n var rowSumShared : ${w};\\n var threadShared : array<${w}, ${n}>;\\n\\n fn getValue(row: i32, col: i32, row_stride: i32) -> ${w} {\\n let index = row * row_stride + col;\\n return x[index];\\n }\\n\\n fn setValue(row: i32, col: i32, row_stride: i32, value: ${w}) {\\n let index = row * row_stride + col;\\n result[index] = value;\\n }\\n ${I.registerUniform(\"packedCols\",\"i32\").declareVariables(g,b)}\\n ${I.mainStart()}\\n let gindex = i32(global_idx);\\n let lindex = i32(local_idx);\\n const wg = ${n};\\n let row = gindex / wg;\\n let cols = uniforms.packedCols;\\n let row_stride : i32 = uniforms.packedCols;\\n\\n // find the rows max\\n ${y}\\n for (var col = lindex; col < cols; col += wg) {\\n let value = getValue(row, col, row_stride);\\n threadMax = max(threadMax, value);\\n }\\n if (lindex < cols) {\\n threadShared[lindex] = threadMax;\\n }\\n workgroupBarrier();\\n\\n var reduceSize = min(cols, wg);\\n for (var currSize = reduceSize >> 1; currSize > 0; currSize = reduceSize >> 1) {\\n reduceSize = currSize + (reduceSize & 1);\\n if (lindex < currSize) {\\n threadShared[lindex] = max(threadShared[lindex], threadShared[lindex + reduceSize]);\\n }\\n workgroupBarrier();\\n }\\n if (lindex == 0) {\\n rowMaxShared = ${w}(${h(\"threadShared[0]\",a)});\\n }\\n workgroupBarrier();\\n\\n // find the rows sum\\n var threadSum = ${w}(0.0);\\n for (var col = lindex; col < cols; col += wg) {\\n let subExp = exp(getValue(row, col, row_stride) - rowMaxShared);\\n threadSum += subExp;\\n }\\n threadShared[lindex] = threadSum;\\n workgroupBarrier();\\n\\n for (var currSize = wg >> 1; currSize > 0; currSize = currSize >> 1) {\\n if (lindex < currSize) {\\n threadShared[lindex] = threadShared[lindex] + threadShared[lindex + currSize];\\n }\\n workgroupBarrier();\\n }\\n if (lindex == 0) {\\n rowSumShared = ${w}(${Je(\"threadShared[0]\",a)});\\n }\\n workgroupBarrier();\\n\\n // calculate final value for each element in the row\\n for (var col = lindex; col < cols; col += wg) {\\n let value = exp(getValue(row, col, row_stride) - rowMaxShared) / rowSumShared;\\n setValue(row, col, row_stride, value);\\n }\\n }`;return{name:\"Softmax\",shaderCache:{hint:`${a}`,inputDependencies:[\"type\"]},getRunData:()=>({outputs:[{dims:r,dataType:e.dataType}],dispatchGroup:{x:l},programUniforms:[{type:\"uint32\",data:p}]}),getShaderSource:_}},iu=(e,t)=>{Cc(e.inputs),e.compute(Ic(e.inputs[0],t))},su=e=>ge({axis:e.axis})});var Ac,Tc,Ec,Oc,Pc,du,lu,cu=j(()=>{\"use strict\";$e();je();ve();Ac=e=>{if(!e||e.length<1)throw new Error(\"too few inputs\")},Tc=(e,t)=>{let r=[],o=t.numOutputs;return e[1].dims[0]>0&&(e[1].getBigInt64Array().forEach(n=>r.push(Number(n))),o=r.length),ge({numOutputs:o,axis:t.axis,splitSizes:r})},Ec=e=>`\\nfn calculateOutputIndex(index: u32) -> u32 {\\n for (var i: u32 = 0u; i < ${e}u; i += 1u ) {\\n if (index < ${ce(\"uniforms.size_in_split_axis\",\"i\",e)}) {\\n return i;\\n }\\n }\\n return ${e}u;\\n}`,Oc=e=>{let t=e.length,r=[];for(let o=0;o{let r=e[0].dims,o=U.size(r),n=e[0].dataType,s=U.normalizeAxis(t.axis,r.length),u=new Array(t.numOutputs),l=M(\"input\",n,r),a=new Array(t.numOutputs),p=[],h=[],g=0,b=[{type:\"uint32\",data:o}];for(let y=0;yb.push(...L(y)));let w=y=>`\\n ${y.registerUniform(\"input_size\",\"u32\").registerUniform(\"size_in_split_axis\",\"u32\",a.length).declareVariables(l,...u)}\\n ${Ec(a.length)}\\n ${Oc(u)}\\n\\n ${y.mainStart()}\\n ${y.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.input_size\")}\\n\\n var indices = ${l.offsetToIndices(\"global_idx\")};\\n var index = ${l.indicesGet(\"indices\",s)};\\n let output_number = calculateOutputIndex(index);\\n if (output_number != 0) {\\n index -= ${ce(\"uniforms.size_in_split_axis\",\"output_number - 1u\",a.length)};\\n ${l.indicesSet(\"indices\",s,\"index\")};\\n }\\n writeBufferData(output_number, indices, global_idx);\\n }`;return{name:\"Split\",shaderCache:{hint:t.cacheKey,inputDependencies:[\"rank\"]},getShaderSource:w,getRunData:()=>({outputs:p,dispatchGroup:{x:Math.ceil(o/64)},programUniforms:b})}},du=(e,t)=>{Ac(e.inputs);let r=e.inputs.length===1?t:Tc(e.inputs,t);e.compute(Pc(e.inputs,r),{inputs:[0]})},lu=e=>{let t=e.axis,r=e.splitSizes,o=e.numOutputs<0?r.length:e.numOutputs;if(o!==r.length)throw new Error(\"numOutputs and splitSizes lengh must be equal\");return ge({axis:t,numOutputs:o,splitSizes:r})}});var pu,kc,Rc,Bc,mu,fu=j(()=>{\"use strict\";Ne();$e();ve();pu=e=>Array.from(e.getBigInt64Array(),Number),kc=e=>{if(!e||e.length!==2)throw new Error(\"Tile requires 2 inputs.\");if(e[0].dataType!==1&&e[0].dataType!==6&&e[0].dataType!==12)throw new Error(\"Tile only support float, int32, and uint32 data types\");if(e[1].dataType!==7)throw new Error(\"Tile `repeats` input should be of int64 data type\");if(e[1].dims.length!==1)throw new Error(\"Tile `repeats` input should be 1-D\");if(pu(e[1]).length!==e[0].dims.length)throw new Error(\"Tile `repeats` input should have same number of elements as rank of input data tensor\")},Rc=(e,t)=>{let r=[];for(let o=0;o{let t=e[0].dims,r=pu(e[1]),o=Rc(t,r),n=U.size(o),s=e[0].dataType,u=M(\"input\",s,t.length),l=F(\"output\",s,o.length),a=p=>`\\n const inputShape = ${u.indices(...t)};\\n ${p.registerUniform(\"output_size\",\"u32\").declareVariables(u,l)}\\n ${p.mainStart()}\\n ${p.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\\n let output_indices = ${l.offsetToIndices(\"global_idx\")};\\n var input_indices: ${u.type.indices};\\n for (var i = 0; i < ${t.length}; i++) {\\n let input_dim_i = ${u.indicesGet(\"uniforms.input_shape\",\"i\")};\\n let input_dim_value = ${l.indicesGet(\"output_indices\",\"i\")} % input_dim_i;\\n\\n ${u.indicesSet(\"input_indices\",\"i\",\"input_dim_value\")}\\n }\\n ${l.setByOffset(\"global_idx\",u.getByIndices(\"input_indices\"))}\\n }`;return{name:\"Tile\",shaderCache:{hint:`${r}`,inputDependencies:[\"rank\"]},getRunData:()=>({outputs:[{dims:o,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(n/64)},programUniforms:[{type:\"uint32\",data:n},...L(e[0].dims),...L(o)]}),getShaderSource:a}},mu=e=>{kc(e.inputs),e.compute(Bc(e.inputs),{inputs:[0]})}});var Dc,Mc,hu,gu=j(()=>{\"use strict\";Ne();$e();ve();Dc=(e,t,r,o,n)=>{let s=F(\"output_data\",n,r.length,4),u=M(\"a_data\",t[1].dataType,t[1].dims.length,4),l=M(\"b_data\",t[2].dataType,t[2].dims.length,4),a=M(\"c_data\",t[0].dataType,t[0].dims.length,4),p,h=(g,b,w)=>`select(${b}, ${g}, ${w})`;if(!o)p=s.setByOffset(\"global_idx\",h(u.getByOffset(\"global_idx\"),l.getByOffset(\"global_idx\"),a.getByOffset(\"global_idx\")));else{let g=(b,w,y=\"\")=>{let _=`a_data[index_a${w}][component_a${w}]`,I=`b_data[index_b${w}][component_b${w}]`,$=`bool(c_data[index_c${w}] & ${4278190080>>>(3-w)*8}u)`;return`\\n let output_indices${w} = ${s.offsetToIndices(`global_idx * 4u + ${w}u`)};\\n let offset_a${w} = ${u.broadcastedIndicesToOffset(`output_indices${w}`,s)};\\n let offset_b${w} = ${l.broadcastedIndicesToOffset(`output_indices${w}`,s)};\\n let offset_c${w} = ${a.broadcastedIndicesToOffset(`output_indices${w}`,s)};\\n let index_a${w} = offset_a${w} / 4u;\\n let index_b${w} = offset_b${w} / 4u;\\n let index_c${w} = offset_c${w} / 4u;\\n let component_a${w} = offset_a${w} % 4u;\\n let component_b${w} = offset_b${w} % 4u;\\n ${b}[${w}] = ${y}(${h(_,I,$)});\\n `};n===9?p=`\\n var data = vec4(0);\\n ${g(\"data\",0,\"u32\")}\\n ${g(\"data\",1,\"u32\")}\\n ${g(\"data\",2,\"u32\")}\\n ${g(\"data\",3,\"u32\")}\\n output_data[global_idx] = dot(vec4(0x1, 0x100, 0x10000, 0x1000000), vec4(data));`:p=`\\n ${g(\"output_data[global_idx]\",0)}\\n ${g(\"output_data[global_idx]\",1)}\\n ${g(\"output_data[global_idx]\",2)}\\n ${g(\"output_data[global_idx]\",3)}\\n `}return`\\n ${e.registerUniform(\"vec_size\",\"u32\").declareVariables(a,u,l,s)}\\n ${e.mainStart()}\\n ${e.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.vec_size\")}\\n ${p}\\n }`},Mc=e=>{let t=e[1].dims,r=e[2].dims,o=e[0].dims,n=e[1].dataType,s=!(U.areEqual(t,r)&&U.areEqual(r,o)),u=t,l=U.size(t);if(s){let p=dt.calcShape(dt.calcShape(t,r,!1),o,!1);if(!p)throw new Error(\"Can\\'t perform where op on the given tensors\");u=p,l=U.size(u)}let a=Math.ceil(l/4);return{name:\"Where\",shaderCache:{inputDependencies:[\"rank\",\"rank\",\"rank\"]},getShaderSource:p=>Dc(p,e,u,s,n),getRunData:()=>({outputs:[{dims:u,dataType:n}],dispatchGroup:{x:Math.ceil(l/64/4)},programUniforms:[{type:\"uint32\",data:a},...L(o),...L(t),...L(r),...L(u)]})}},hu=e=>{e.compute(Mc(e.inputs))}});var yu,bu=j(()=>{\"use strict\";Wa();Un();La();ja();Ci();Mi();Vi();Gn();Ji();rs();ss();ls();ms();gs();ws();$s();xs();Fn();As();Es();js();Ks();jr();Xs();tu();au();uu();cu();fu();jt();Vn();gu();yu=new Map([[\"Abs\",[qa]],[\"Acos\",[Ka]],[\"Acosh\",[Ya]],[\"Add\",[Ii]],[\"ArgMax\",[Na,zn]],[\"ArgMin\",[Va,zn]],[\"Asin\",[Za]],[\"Asinh\",[Qa]],[\"Atan\",[Xa]],[\"Atanh\",[Ja]],[\"Attention\",[Ha]],[\"AveragePool\",[zs,Ms]],[\"BatchNormalization\",[Ga]],[\"BiasAdd\",[Fa]],[\"BiasSplitGelu\",[_i]],[\"Cast\",[ti,ei]],[\"Ceil\",[ni]],[\"Clip\",[ri]],[\"Concat\",[zi,Ui]],[\"Conv\",[qn,jn]],[\"ConvTranspose\",[Xi,Qi]],[\"Cos\",[oi]],[\"Cosh\",[ai]],[\"CumSum\",[es,ts]],[\"Div\",[Ai]],[\"Einsum\",[as,is]],[\"Elu\",[ii,Yr]],[\"Equal\",[Ti]],[\"Erf\",[si]],[\"Exp\",[ui]],[\"Expand\",[ds]],[\"Floor\",[di]],[\"FusedConv\",[qn,jn]],[\"Gather\",[ps,cs]],[\"GatherElements\",[hs,fs]],[\"Gelu\",[li]],[\"Gemm\",[bs,ys]],[\"GlobalAveragePool\",[Ns,Vs]],[\"GlobalMaxPool\",[Fs,Ls]],[\"Greater\",[ki]],[\"GreaterOrEqual\",[Bi]],[\"InstanceNormalization\",[vs]],[\"LayerNormalization\",[Ss]],[\"LeakyRelu\",[ci,Yr]],[\"Less\",[Ri]],[\"LessOrEqual\",[Di]],[\"Log\",[xi]],[\"MatMul\",[Li]],[\"MaxPool\",[Hs,Gs]],[\"Mul\",[Ei]],[\"MultiHeadAttention\",[Is,Cs]],[\"Neg\",[mi]],[\"Not\",[pi]],[\"Pad\",[Ts]],[\"Pow\",[Oi]],[\"Range\",[qs]],[\"Reciprocal\",[fi]],[\"ReduceMin\",[Ra]],[\"ReduceMean\",[Ta]],[\"ReduceMax\",[ka]],[\"ReduceSum\",[Da]],[\"ReduceProd\",[Ba]],[\"ReduceL1\",[Ea]],[\"ReduceL2\",[Oa]],[\"ReduceLogSum\",[za]],[\"ReduceLogSumExp\",[Pa]],[\"ReduceSumSquare\",[Ma]],[\"Relu\",[hi]],[\"Resize\",[Zs,Qs]],[\"Sigmoid\",[gi]],[\"Sin\",[yi]],[\"Sinh\",[bi]],[\"Slice\",[nu,ou]],[\"SkipLayerNormalization\",[Js,eu]],[\"Split\",[du,lu]],[\"Sqrt\",[wi]],[\"Softmax\",[iu,su]],[\"Sub\",[Pi]],[\"Tan\",[vi]],[\"Tanh\",[$i]],[\"ThresholdedRelu\",[Si,Yr]],[\"Tile\",[mu]],[\"Transpose\",[ha,ga]],[\"Where\",[hu]]])});var an,wu=j(()=>{\"use strict\";Lt();Ct();ve();an=class{constructor(t){this.backend=t;this.repo=new Map,this.attributesBound=!1}getArtifact(t){return this.repo.get(t)}setArtifact(t,r){this.repo.set(t,r)}run(t,r,o,n,s){kt(t.programInfo.name);let u=this.backend.device,l=this.backend.getComputePassEncoder();this.backend.writeTimestamp(this.backend.pendingDispatchNumber*2),l.setPipeline(t.computePipeline);let a=[];for(let h of r)a.push({binding:a.length,resource:{buffer:h.buffer}});for(let h of o)a.push({binding:a.length,resource:{buffer:h.buffer}});s&&a.push({binding:a.length,resource:s});let p=u.createBindGroup({layout:t.computePipeline.getBindGroupLayout(0),entries:a,label:t.programInfo.name});l.setBindGroup(0,p),l.dispatchWorkgroups(...n),this.backend.writeTimestamp(this.backend.pendingDispatchNumber*2+1),this.backend.pendingDispatchNumber++,(this.backend.pendingDispatchNumber>=this.backend.maxDispatchNumber||this.backend.queryType===\"at-passes\")&&this.backend.endComputePass(),this.backend.pendingDispatchNumber>=this.backend.maxDispatchNumber&&this.backend.flush(),Rt(t.programInfo.name)}dispose(){}build(t,r){kt(t.name);let o=this.backend.device,n=[];o.features.has(\"shader-f16\")&&n.push(\"enable f16;\");let s=ma(r),u=t.getShaderSource(s),l=`${n.join(`\\n`)}\\n${s.additionalImplementations}\\n${u}`,a=o.createShaderModule({code:l,label:t.name});Be(\"verbose\",()=>`[WebGPU] ${t.name} shader code: ${l}`);let p=o.createComputePipeline({compute:{module:a,entryPoint:\"main\"},layout:\"auto\",label:t.name});return Rt(t.name),{programInfo:t,computePipeline:p}}normalizeDispatchGroupSize(t){let r=typeof t==\"number\"?t:t.x,o=typeof t==\"number\"?1:t.y||1,n=typeof t==\"number\"?1:t.z||1,s=this.backend.device.limits.maxComputeWorkgroupsPerDimension;if(r<=s&&o<=s&&n<=s)return[r,o,n];let u=r*o*n,l=Math.ceil(Math.sqrt(u));if(l>s){if(l=Math.ceil(Math.cbrt(u)),l>s)throw new Error(\"Total dispatch size exceeds WebGPU maximum.\");return[l,l,l]}else return[l,l,1]}}});var zc,Uc,sn,vu=j(()=>{\"use strict\";Lt();Ne();Ct();ua();pa();bu();wu();zc=(e,t)=>{if(t.length!==e.length)throw new Error(`inputDependencies length ${t.length} is not equal to inputTensors length ${e.length}.`);let r=[];for(let o=0;o{let o=e.name;return e.shaderCache?.hint&&(o+=\"[\"+e.shaderCache.hint+\"]\"),o+=\":\"+r+`:${zc(t,e.shaderCache?.inputDependencies??new Array(t.length).fill(\"dims\"))}`,o},sn=class{constructor(){this.currentKernelId=null;this.commandEncoder=null;this.computePassEncoder=null;this.maxDispatchNumber=16;this.pendingDispatchNumber=0;this.pendingKernels=[];this.pendingQueries=new Map;this.sessionExternalDataMapping=new Map}get currentKernelCustomData(){if(this.currentKernelId===null)throw new Error(\"currentKernelCustomData(): currentKernelId is null. (should not happen)\");let t=this.kernelCustomData.get(this.currentKernelId);return t||(t={},this.kernelCustomData.set(this.currentKernelId,t)),t}async initialize(t,r){this.env=t;let o=[],n={requiredLimits:{maxComputeWorkgroupStorageSize:r.limits.maxComputeWorkgroupStorageSize,maxComputeWorkgroupsPerDimension:r.limits.maxComputeWorkgroupsPerDimension,maxStorageBufferBindingSize:r.limits.maxStorageBufferBindingSize,maxBufferSize:r.limits.maxBufferSize,maxComputeInvocationsPerWorkgroup:r.limits.maxComputeInvocationsPerWorkgroup,maxComputeWorkgroupSizeX:r.limits.maxComputeWorkgroupSizeX,maxComputeWorkgroupSizeY:r.limits.maxComputeWorkgroupSizeY,maxComputeWorkgroupSizeZ:r.limits.maxComputeWorkgroupSizeZ},requiredFeatures:o};r.features.has(\"chromium-experimental-timestamp-query-inside-passes\")?o.push(\"chromium-experimental-timestamp-query-inside-passes\"):r.features.has(\"timestamp-query\")&&o.push(\"timestamp-query\"),r.features.has(\"shader-f16\")&&o.push(\"shader-f16\"),this.device=await r.requestDevice(n),this.gpuDataManager=ca(this),this.programManager=new an(this),this.kernels=new Map,this.kernelPersistentData=new Map,this.kernelCustomData=new Map,ia(t.logLevel,!!t.debug),this.device.onuncapturederror=s=>{s.error instanceof GPUValidationError&&console.error(`An uncaught WebGPU validation error was raised: ${s.error.message}`)},Object.defineProperty(this.env.webgpu,\"device\",{value:this.device}),this.setQueryType()}dispose(){typeof this.querySet<\"u\"&&this.querySet.destroy(),this.gpuDataManager.dispose()}getCommandEncoder(){return this.commandEncoder||(this.commandEncoder=this.device.createCommandEncoder(),this.setQueryType(),this.queryType!==\"none\"&&typeof this.querySet>\"u\"&&(this.querySet=this.device.createQuerySet({type:\"timestamp\",count:this.maxDispatchNumber*2}),this.queryResolveBuffer=this.device.createBuffer({size:this.maxDispatchNumber*2*8,usage:GPUBufferUsage.COPY_SRC|GPUBufferUsage.QUERY_RESOLVE}))),this.commandEncoder}getComputePassEncoder(){if(!this.computePassEncoder){let t={};this.queryType===\"at-passes\"&&(t.timestampWrites={querySet:this.querySet,beginningOfPassWriteIndex:this.pendingDispatchNumber*2,endOfPassWriteIndex:this.pendingDispatchNumber*2+1}),this.computePassEncoder=this.getCommandEncoder().beginComputePass(t)}return this.computePassEncoder}endComputePass(){this.computePassEncoder&&(this.computePassEncoder.end(),this.computePassEncoder=null)}flush(){if(!this.commandEncoder)return;kt(),this.endComputePass();let t;this.queryType!==\"none\"&&(this.commandEncoder.resolveQuerySet(this.querySet,0,this.pendingDispatchNumber*2,this.queryResolveBuffer,0),t=this.device.createBuffer({size:this.pendingDispatchNumber*2*8,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST}),this.pendingQueries.set(t,this.pendingKernels),this.pendingKernels=[],this.commandEncoder.copyBufferToBuffer(this.queryResolveBuffer,0,t,0,this.pendingDispatchNumber*2*8)),this.device.queue.submit([this.commandEncoder.finish()]),this.gpuDataManager.refreshPendingBuffers(),this.commandEncoder=null,this.pendingDispatchNumber=0,this.queryType!==\"none\"&&t.mapAsync(GPUMapMode.READ).then(()=>{let r=new BigUint64Array(t.getMappedRange()),o=this.pendingQueries.get(t);for(let n=0;n\"u\"&&(this.queryTimeBase=w);let _=Number(w-this.queryTimeBase),I=Number(y-this.queryTimeBase);if(!Number.isSafeInteger(_)||!Number.isSafeInteger(I))throw new RangeError(\"incorrect timestamp range\");if(this.env.webgpu.profiling?.ondata)this.env.webgpu.profiling.ondata({version:1,inputsMetadata:g.map($=>({dims:$.dims,dataType:Xe($.dataType)})),outputsMetadata:b.map($=>({dims:$.dims,dataType:Xe($.dataType)})),kernelId:u,kernelType:a,kernelName:p,programName:h,startTime:_,endTime:I});else{let $=\"\";g.forEach((E,A)=>{$+=`input[${A}]: [${E.dims}] | ${Xe(E.dataType)}, `});let x=\"\";b.forEach((E,A)=>{x+=`output[${A}]: [${E.dims}] | ${Xe(E.dataType)}, `}),console.log(`[profiling] kernel \"${u}|${a}|${p}|${h}\" ${$}${x}execution time: ${I-_} ns`)}An(\"GPU\",`${h}::${w}::${y}`)}t.unmap(),this.pendingQueries.delete(t)}),Rt()}run(t,r,o,n,s){kt(t.name);let u=[];for(let x=0;xE):o;if(h.length!==l.length)throw new Error(`Output size ${h.length} must be equal to ${l.length}.`);let g=[],b=[];for(let x=0;x=l.length)throw new Error(`Invalid output index: ${h[x]}`);if(h[x]===-3)continue;let E=h[x]===-1,A=h[x]===-2,z=E||A?s(l[x].dataType,l[x].dims):n(h[x],l[x].dataType,l[x].dims),R=this.gpuDataManager.get(z.data);if(!R)throw new Error(`no GPU data for output: ${z.data}`);if(E&&this.temporaryData.push(R),A){let V=this.kernelPersistentData.get(this.currentKernelId);V||(V=[],this.kernelPersistentData.set(this.currentKernelId,V)),V.push(R)}g.push(z),b.push(R)}let w;if(p){let x=0,E=[];p.forEach(V=>{let T=typeof V.data==\"number\"?[V.data]:V.data;if(T.length===0)return;let N=T.length<=2?T.length*4:16;x=Math.ceil(x/N)*N,E.push(x),x+=T.length>4?Math.ceil(T.length/4)*16:T.length*4});let A=16;x=Math.ceil(x/A)*A;let z=new ArrayBuffer(x);p.forEach((V,T)=>{let N=E[T],te=typeof V.data==\"number\"?[V.data]:V.data;V.type===\"int32\"?new Int32Array(z,N,te.length).set(te):V.type===\"uint32\"?new Uint32Array(z,N,te.length).set(te):new Float32Array(z,N,te.length).set(te)});let R=this.gpuDataManager.create(x,GPUBufferUsage.COPY_DST|GPUBufferUsage.UNIFORM);this.device.queue.writeBuffer(R.buffer,0,z,0,x),this.gpuDataManager.release(R.id),w={offset:0,size:x,buffer:R.buffer}}let y=this.programManager.normalizeDispatchGroupSize(a),_=y[1]===1&&y[2]===1,I=Uc(t,r,_),$=this.programManager.getArtifact(I);if($||($=this.programManager.build(t,y),this.programManager.setArtifact(I,$),Be(\"info\",()=>`[artifact] key: ${I}, programName: ${t.name}`)),Be(\"info\",()=>`[ProgramManager] run \"${t.name}\" (key=${I}) with ${y[0]}x${y[1]}x${y[2]}`),this.queryType!==\"none\"){let x={kernelId:this.currentKernelId,programName:$.programInfo.name,inputTensorViews:r,outputTensorViews:g};this.pendingKernels.push(x)}return this.programManager.run($,u,b,y,w),Rt(t.name),g}upload(t,r){this.gpuDataManager.upload(t,r)}memcpy(t,r){this.gpuDataManager.memcpy(t,r)}async download(t,r){await this.gpuDataManager.download(t,r)}alloc(t){return this.gpuDataManager.create(t).id}free(t){return this.gpuDataManager.release(t)}createKernel(t,r,o,n){let s=yu.get(t);if(!s)throw new Error(`kernel not implemented: ${t}`);let u={kernelType:t,kernelName:n,kernelEntry:s[0],attributes:[s[1],o]};this.kernels.set(r,u)}releaseKernel(t){let r=this.kernelPersistentData.get(t);if(r){for(let o of r)this.gpuDataManager.release(o.id);this.kernelPersistentData.delete(t)}this.kernelCustomData.delete(t),this.kernels.delete(t)}computeKernel(t,r,o){let n=this.kernels.get(t);if(!n)throw new Error(`kernel not created: ${t}`);let s=n.kernelType,u=n.kernelName,l=n.kernelEntry,a=n.attributes;if(this.currentKernelId!==null)throw new Error(`kernel \"[${s}] ${u}\" is not allowed to be called recursively`);this.currentKernelId=t,a[0]&&(a[1]=a[0](a[1]),a[0]=void 0),Be(\"info\",()=>`[WebGPU] Start to run kernel \"[${s}] ${u}\"...`);let p=this.env.debug;this.temporaryData=[];try{return p&&this.device.pushErrorScope(\"validation\"),l(r,a[1]),0}catch(h){return o.push(Promise.resolve(`[WebGPU] Kernel \"[${s}] ${u}\" failed. ${h}`)),1}finally{p&&o.push(this.device.popErrorScope().then(h=>h?`GPU validation error for kernel \"[${s}] ${u}\": ${h.message}`:null));for(let h of this.temporaryData)this.gpuDataManager.release(h.id);this.temporaryData=[],this.currentKernelId=null}}registerBuffer(t,r,o,n){let s=this.sessionExternalDataMapping.get(t);s||(s=new Map,this.sessionExternalDataMapping.set(t,s));let u=s.get(r),l=this.gpuDataManager.registerExternalBuffer(o,n,u?.[1]);return s.set(r,[l,o]),l}unregisterBuffers(t){let r=this.sessionExternalDataMapping.get(t);r&&(r.forEach(o=>this.gpuDataManager.unregisterExternalBuffer(o[1])),this.sessionExternalDataMapping.delete(t))}getBuffer(t){let r=this.gpuDataManager.get(t);if(!r)throw new Error(`no GPU data for buffer: ${t}`);return r.buffer}createDownloader(t,r,o){return async()=>{let n=await On(this,t,r);return sa(n.buffer,o)}}writeTimestamp(t){this.queryType===\"inside-passes\"&&this.computePassEncoder.writeTimestamp(this.querySet,t)}setQueryType(){this.queryType=\"none\",(this.env.webgpu.profiling?.mode===\"default\"||this.env.wasm.trace)&&(this.device.features.has(\"chromium-experimental-timestamp-query-inside-passes\")?this.queryType=\"inside-passes\":this.device.features.has(\"timestamp-query\")&&(this.queryType=\"at-passes\"))}}});var $u={};Br($u,{init:()=>Vc});var gr,Jn,Vc,Su=j(()=>{\"use strict\";Ne();vu();Ct();$e();gr=class e{constructor(t,r,o,n){this.module=t;this.dataType=r;this.data=o;this.dims=n}getFloat32Array(){if(this.dataType!==1)throw new Error(\"Invalid data type\");let t=U.size(this.dims);return t===0?new Float32Array:new Float32Array(this.module.HEAP8.buffer,this.data,t)}getBigInt64Array(){if(this.dataType!==7)throw new Error(\"Invalid data type\");let t=U.size(this.dims);return t===0?new BigInt64Array:new BigInt64Array(this.module.HEAP8.buffer,this.data,t)}getInt32Array(){if(this.dataType!==6)throw new Error(\"Invalid data type\");let t=U.size(this.dims);return t===0?new Int32Array:new Int32Array(this.module.HEAP8.buffer,this.data,t)}reshape(t){if(U.size(t)!==U.size(this.dims))throw new Error(\"Invalid new shape\");return new e(this.module,this.dataType,this.data,t)}},Jn=class{constructor(t,r,o){this.module=t;this.backend=r;this.customDataOffset=0;this.customDataSize=0;let n=t.HEAPU32,s=o>>>2;this.opKernelContext=n[s++];let u=n[s++];this.outputCount=n[s++],this.customDataOffset=n[s++],this.customDataSize=n[s++];let l=[];for(let a=0;atypeof l==\"number\"?this.inputs[l]:l)??this.inputs,n=r?.outputs??[],s=(l,a,p)=>new gr(this.module,a,this.output(l,p),p),u=(l,a)=>{let p=cr(l);if(!p)throw new Error(`Unsupported data type: ${l}`);let h=p*U.size(a);return new gr(this.module,l,this.backend.gpuDataManager.create(h).id,a)};return this.backend.run(t,o,n,s,u)}output(t,r){let o=this.module.stackSave();try{let n=this.module.stackAlloc((1+r.length)*4),s=n>>2;this.module.HEAPU32[s++]=r.length;for(let u=0;u{let o=e.jsepInit;if(!o)throw new Error(\"Failed to initialize JSEP. The WebAssembly module is not built with JSEP support.\");let n=new sn;await n.initialize(t,r),o(n,s=>n.alloc(s),s=>n.free(s),(s,u,l,a=!1)=>{if(a)Be(\"verbose\",()=>`[WebGPU] jsepCopyGpuToGpu: src=${s}, dst=${u}, size=${l}`),n.memcpy(s,u);else{Be(\"verbose\",()=>`[WebGPU] jsepCopyCpuToGpu: dataOffset=${s}, gpuDataId=${u}, size=${l}`);let p=e.HEAPU8.subarray(s>>>0,(s>>>0)+l);n.upload(u,p)}},async(s,u,l)=>{Be(\"verbose\",()=>`[WebGPU] jsepCopyGpuToCpu: gpuDataId=${s}, dataOffset=${u}, size=${l}`),await n.download(s,()=>e.HEAPU8.subarray(u>>>0,(u>>>0)+l))},(s,u,l)=>n.createKernel(s,u,l,e.UTF8ToString(e._JsepGetNodeName(u))),s=>n.releaseKernel(s),(s,u,l,a)=>{Be(\"verbose\",()=>`[WebGPU] jsepRun: sessionHandle=${l}, kernel=${s}, contextDataOffset=${u}`);let p=new Jn(e,n,u);return n.computeKernel(s,p,a)})}});var Mo;Mo=Io();var Ju=Ro(),Sn,xn=!1,Dr=!1,Do=!1,ed=e=>{if(e===1)return!1;if(typeof SharedArrayBuffer>\"u\")return typeof self<\"u\"&&!self.crossOriginIsolated&&console.warn(\"env.wasm.numThreads is set to \"+e+\", but this will not work unless you enable crossOriginIsolated mode. See https://web.dev/cross-origin-isolation-guide/ for more info.\"),!1;typeof process<\"u\"&&process.versions&&process.versions.node&&console.warn(\"env.wasm.numThreads is set to \"+e+\", however, currently onnxruntime-web does not support multi-threads in Node.js. Please consider using onnxruntime-node for performance critical scenarios.\");try{return typeof MessageChannel<\"u\"&&new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch{return!1}},td=()=>{try{return WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,30,1,28,0,65,0,253,15,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,186,1,26,11]))}catch{return!1}},rd=(e,t)=>e?t?\"ort-wasm-simd-threaded.wasm\":\"ort-wasm-simd.wasm\":t?\"ort-wasm-threaded.wasm\":\"ort-wasm.wasm\",zo=async e=>{if(xn)return Promise.resolve();if(Dr)throw new Error(\"multiple calls to \\'initializeWebAssembly()\\' detected.\");if(Do)throw new Error(\"previous call to \\'initializeWebAssembly()\\' failed.\");Dr=!0;let t=e.initTimeout,r=e.numThreads,o=e.simd,n=ed(r),s=o&&td(),u=e.wasmPaths,l=typeof u==\"string\"?u:void 0,a=rd(s,n),p=typeof u==\"object\"?u[a]:void 0,h=!1,g=[];if(t>0&&g.push(new Promise(b=>{setTimeout(()=>{h=!0,b()},t)})),g.push(new Promise((b,w)=>{let y=n?Ju:Mo,_={locateFile:(I,$)=>{if(n&&I.endsWith(\".worker.js\")&&typeof Blob<\"u\")return URL.createObjectURL(new Blob([Bo()],{type:\"text/javascript\"}));if(I.endsWith(\".wasm\")){if(p)return p;let x=l??$;return a===\"ort-wasm-simd.wasm\"?x+\"ort-wasm-simd.jsep.wasm\":a===\"ort-wasm-simd-threaded.wasm\"?x+\"ort-wasm-simd-threaded.jsep.wasm\":x+a}return $+I}};if(n)if(_.numThreads=r,typeof Blob>\"u\")_.mainScriptUrlOrBlob=(void 0)(__dirname,\"ort-wasm-threaded.js\");else{let I=`var ortWasmThreaded=${y.toString()};`;_.mainScriptUrlOrBlob=new Blob([I],{type:\"text/javascript\"})}y(_).then(I=>{Dr=!1,xn=!0,Sn=I,b()},I=>{Dr=!1,Do=!0,w(I)})})),await Promise.race(g),h)throw new Error(`WebAssembly backend initializing failed due to timeout: ${t}ms`)},Ve=()=>{if(xn&&Sn)return Sn;throw new Error(\"WebAssembly is not initialized yet.\")};var He=(e,t)=>{let r=Ve(),o=r.lengthBytesUTF8(e)+1,n=r._malloc(o);return r.stringToUTF8(e,n,o),t.push(n),n},lr=(e,t,r,o)=>{if(typeof e==\"object\"&&e!==null){if(r.has(e))throw new Error(\"Circular reference in options\");r.add(e)}Object.entries(e).forEach(([n,s])=>{let u=t?t+n:n;if(typeof s==\"object\")lr(s,u+\".\",r,o);else if(typeof s==\"string\"||typeof s==\"number\")o(u,s.toString());else if(typeof s==\"boolean\")o(u,s?\"1\":\"0\");else throw new Error(`Can\\'t handle extra config type: ${typeof s}`)})},ke=e=>{let t=Ve(),r=t.stackSave();try{let o=t.stackAlloc(8);t._OrtGetLastError(o,o+4);let n=t.HEAP32[o/4],s=t.HEAPU32[o/4+1],u=s?t.UTF8ToString(s):\"\";throw new Error(`${e} ERROR_CODE: ${n}, ERROR_MESSAGE: ${u}`)}finally{t.stackRestore(r)}};var Uo=e=>{let t=Ve(),r=0,o=[],n=e||{};try{if(e?.logSeverityLevel===void 0)n.logSeverityLevel=2;else if(typeof e.logSeverityLevel!=\"number\"||!Number.isInteger(e.logSeverityLevel)||e.logSeverityLevel<0||e.logSeverityLevel>4)throw new Error(`log serverity level is not valid: ${e.logSeverityLevel}`);if(e?.logVerbosityLevel===void 0)n.logVerbosityLevel=0;else if(typeof e.logVerbosityLevel!=\"number\"||!Number.isInteger(e.logVerbosityLevel))throw new Error(`log verbosity level is not valid: ${e.logVerbosityLevel}`);e?.terminate===void 0&&(n.terminate=!1);let s=0;return e?.tag!==void 0&&(s=He(e.tag,o)),r=t._OrtCreateRunOptions(n.logSeverityLevel,n.logVerbosityLevel,!!n.terminate,s),r===0&&ke(\"Can\\'t create run options.\"),e?.extra!==void 0&&lr(e.extra,\"\",new WeakSet,(u,l)=>{let a=He(u,o),p=He(l,o);t._OrtAddRunConfigEntry(r,a,p)!==0&&ke(`Can\\'t set a run config entry: ${u} - ${l}.`)}),[r,o]}catch(s){throw r!==0&&t._OrtReleaseRunOptions(r),o.forEach(u=>t._free(u)),s}};var nd=e=>{switch(e){case\"disabled\":return 0;case\"basic\":return 1;case\"extended\":return 2;case\"all\":return 99;default:throw new Error(`unsupported graph optimization level: ${e}`)}},od=e=>{switch(e){case\"sequential\":return 0;case\"parallel\":return 1;default:throw new Error(`unsupported execution mode: ${e}`)}},ad=e=>{e.extra||(e.extra={}),e.extra.session||(e.extra.session={});let t=e.extra.session;t.use_ort_model_bytes_directly||(t.use_ort_model_bytes_directly=\"1\"),e.executionProviders&&e.executionProviders.some(r=>(typeof r==\"string\"?r:r.name)===\"webgpu\")&&(e.enableMemPattern=!1)},id=(e,t,r)=>{for(let o of t){let n=typeof o==\"string\"?o:o.name;switch(n){case\"webnn\":if(n=\"WEBNN\",typeof o!=\"string\"){let u=o;if(u?.deviceType){let l=He(\"deviceType\",r),a=He(u.deviceType,r);Ve()._OrtAddSessionConfigEntry(e,l,a)!==0&&ke(`Can\\'t set a session config entry: \\'deviceType\\' - ${u.deviceType}.`)}if(u?.numThreads){let l=u.numThreads;(typeof l!=\"number\"||!Number.isInteger(l)||l<0)&&(l=0);let a=He(\"numThreads\",r),p=He(l.toString(),r);Ve()._OrtAddSessionConfigEntry(e,a,p)!==0&&ke(`Can\\'t set a session config entry: \\'numThreads\\' - ${u.numThreads}.`)}if(u?.powerPreference){let l=He(\"powerPreference\",r),a=He(u.powerPreference,r);Ve()._OrtAddSessionConfigEntry(e,l,a)!==0&&ke(`Can\\'t set a session config entry: \\'powerPreference\\' - ${u.powerPreference}.`)}}break;case\"webgpu\":if(n=\"JS\",typeof o!=\"string\"){let u=o;if(u?.preferredLayout){if(u.preferredLayout!==\"NCHW\"&&u.preferredLayout!==\"NHWC\")throw new Error(`preferredLayout must be either \\'NCHW\\' or \\'NHWC\\': ${u.preferredLayout}`);let l=He(\"preferredLayout\",r),a=He(u.preferredLayout,r);Ve()._OrtAddSessionConfigEntry(e,l,a)!==0&&ke(`Can\\'t set a session config entry: \\'preferredLayout\\' - ${u.preferredLayout}.`)}}break;case\"wasm\":case\"cpu\":continue;default:throw new Error(`not supported execution provider: ${n}`)}let s=He(n,r);Ve()._OrtAppendExecutionProvider(e,s)!==0&&ke(`Can\\'t append execution provider: ${n}.`)}},Vo=e=>{let t=Ve(),r=0,o=[],n=e||{};ad(n);try{let s=nd(n.graphOptimizationLevel??\"all\"),u=od(n.executionMode??\"sequential\"),l=typeof n.logId==\"string\"?He(n.logId,o):0,a=n.logSeverityLevel??2;if(!Number.isInteger(a)||a<0||a>4)throw new Error(`log serverity level is not valid: ${a}`);let p=n.logVerbosityLevel??0;if(!Number.isInteger(p)||p<0||p>4)throw new Error(`log verbosity level is not valid: ${p}`);let h=typeof n.optimizedModelFilePath==\"string\"?He(n.optimizedModelFilePath,o):0;if(r=t._OrtCreateSessionOptions(s,!!n.enableCpuMemArena,!!n.enableMemPattern,u,!!n.enableProfiling,0,l,a,p,h),r===0&&ke(\"Can\\'t create session options.\"),n.executionProviders&&id(r,n.executionProviders,o),n.freeDimensionOverrides)for(let[g,b]of Object.entries(n.freeDimensionOverrides)){if(typeof g!=\"string\")throw new Error(`free dimension override name must be a string: ${g}`);if(typeof b!=\"number\"||!Number.isInteger(b)||b<0)throw new Error(`free dimension override value must be a non-negative integer: ${b}`);let w=He(g,o);t._OrtAddFreeDimensionOverride(r,w,b)!==0&&ke(`Can\\'t set a free dimension override: ${g} - ${b}.`)}return n.extra!==void 0&&lr(n.extra,\"\",new WeakSet,(g,b)=>{let w=He(g,o),y=He(b,o);t._OrtAddSessionConfigEntry(r,w,y)!==0&&ke(`Can\\'t set a session config entry: ${g} - ${b}.`)}),[r,o]}catch(s){throw r!==0&&t._OrtReleaseSessionOptions(r),o.forEach(u=>t._free(u)),s}};Ne();var Wo=async e=>{if(typeof e==\"string\")if(typeof process<\"u\"&&process.versions&&process.versions.node)try{return new Uint8Array(await(void 0)(e))}catch(t){if(t.code===\"ERR_FS_FILE_TOO_LARGE\"){let r=(void 0)(e),o=[];for await(let n of r)o.push(n);return new Uint8Array(Buffer.concat(o))}throw t}else{let t=await fetch(e);if(!t.ok)throw new Error(`failed to load external data file: ${e}`);let r=t.headers.get(\"Content-Length\"),o=r?parseInt(r,10):0;if(o<1073741824)return new Uint8Array(await t.arrayBuffer());{if(!t.body)throw new Error(`failed to load external data file: ${e}, no response body.`);let n=t.body.getReader(),s;try{s=new ArrayBuffer(o)}catch(l){if(l instanceof RangeError){let a=Math.ceil(o/65536);s=new WebAssembly.Memory({initial:a,maximum:a}).buffer}else throw l}let u=0;for(;;){let{done:l,value:a}=await n.read();if(l)break;let p=a.byteLength;new Uint8Array(s,u,p).set(a),u+=p}return new Uint8Array(s,0,o)}}else return e instanceof Blob?new Uint8Array(await e.arrayBuffer()):e instanceof Uint8Array?e:new Uint8Array(e)};var Nc=(e,t)=>{Ve()._OrtInit(e,t)!==0&&ke(\"Can\\'t initialize onnxruntime.\")},_u=async e=>{Nc(e.wasm.numThreads,pr(e.logLevel))},Cu=async(e,t)=>{if(t===\"webgpu\"){if(typeof navigator>\"u\"||!navigator.gpu)throw new Error(\"WebGPU is not supported in current environment\");let r=await navigator.gpu.requestAdapter();if(!r)throw new Error(\\'Failed to get GPU adapter. You may need to enable flag \"--enable-unsafe-webgpu\" if you are using Chrome.\\');if(!e.wasm.simd)throw new Error(\"Not supported for WebGPU=ON and SIMD=OFF. Please set `env.wasm.simd` to true when using `webgpu` EP\");let o=(Su(),Ht($u)).init;await o(Ve(),e,r)}},yr=new Map,Wc=e=>{let t=Ve(),r=t.stackSave();try{let o=t.stackAlloc(8);return t._OrtGetInputOutputCount(e,o,o+4)!==0&&ke(\"Can\\'t get session input/output count.\"),[t.HEAP32[o/4],t.HEAP32[o/4+1]]}finally{t.stackRestore(r)}},eo=e=>{let t=Ve(),r=t._malloc(e.byteLength);if(r===0)throw new Error(`Can\\'t create a session. failed to allocate a buffer of size ${e.byteLength}.`);return t.HEAPU8.set(e,r),[r,e.byteLength]},Iu=async(e,t)=>{let r,o,n=Ve();Array.isArray(e)?[r,o]=e:e.buffer===n.HEAPU8.buffer?[r,o]=[e.byteOffset,e.byteLength]:[r,o]=eo(e);let s=0,u=0,l=0,a=[],p=[],h=[];try{if([u,a]=Vo(t),t?.externalData&&n.mountExternalData){let $=[];for(let x of t.externalData){let E=typeof x==\"string\"?x:x.path;$.push(Wo(typeof x==\"string\"?x:x.data).then(A=>{n.mountExternalData(E,A)}))}await Promise.all($)}s=n._OrtCreateSession(r,o,u),s===0&&ke(\"Can\\'t create a session.\");let[g,b]=Wc(s),w=[],y=[],_=[];for(let $=0;$$===\"gpu-buffer\")&&(l=n._OrtCreateBinding(s),l===0&&ke(\"Can\\'t create IO binding.\"),I={handle:l,outputPreferredLocations:_,outputPreferredLocationsEncoded:_.map($=>Cn($))}),yr.set(s,[s,p,h,I]),[s,w,y]}catch(g){throw p.forEach(b=>n._OrtFree(b)),h.forEach(b=>n._OrtFree(b)),l!==0&&n._OrtReleaseBinding(l),s!==0&&n._OrtReleaseSession(s),g}finally{n._free(r),u!==0&&n._OrtReleaseSessionOptions(u),a.forEach(g=>n._free(g)),n.unmountExternalData?.()}},Au=e=>{let t=Ve(),r=yr.get(e);if(!r)throw new Error(`cannot release session. invalid session id: ${e}`);let[o,n,s,u]=r;u&&t._OrtReleaseBinding(u.handle),t.jsepUnregisterBuffers?.(e),n.forEach(l=>t._OrtFree(l)),s.forEach(l=>t._OrtFree(l)),t._OrtReleaseSession(o),yr.delete(e)},xu=(e,t,r,o,n)=>{if(!e){t.push(0);return}let s=Ve(),u=e[0],l=e[1],a=e[3],p,h;if(u===\"string\"&&a===\"gpu-buffer\")throw new Error(\"String tensor is not supported on GPU.\");if(a===\"gpu-buffer\"){let w=e[2].gpuBuffer,y=cr(_n(u));h=l.reduce((_,I)=>_*I,1)*y,p=s.jsepRegisterBuffer(o,n,w,h)}else{let w=e[2];if(Array.isArray(w)){h=4*w.length,p=s._malloc(h),r.push(p);let y=p/4;for(let _=0;_s.HEAP32[w++]=_);let y=s._OrtCreateTensor(_n(u),p,h,b,l.length,Cn(a));y===0&&ke(`Can\\'t create tensor for input/output. session=${o}, index=${n}.`),t.push(y)}finally{s.stackRestore(g)}},Tu=async(e,t,r,o,n,s)=>{let u=Ve(),l=yr.get(e);if(!l)throw new Error(`cannot run inference. invalid session id: ${e}`);let[a,p,h,g]=l,b=t.length,w=o.length,y=0,_=[],I=[],$=[],x=[],E=u.stackSave(),A=u.stackAlloc(b*4),z=u.stackAlloc(b*4),R=u.stackAlloc(w*4),V=u.stackAlloc(w*4);try{[y,_]=Uo(s);for(let Z=0;ZUe*Me,1);he=Xe(Ge);let ze=g?.outputPreferredLocations[o[Z]];if(he===\"string\"){if(ze===\"gpu-buffer\")throw new Error(\"String tensor is not supported on GPU.\");let Ue=[],Me=ye/4;for(let wt=0;wt0){let Ue=u.jsepGetBuffer(ye),Me=cr(Ge);if(Me===void 0||!No(he))throw new Error(`Unsupported data type: ${he}`);Ie=!0,Q.push([he,be,{gpuBuffer:Ue,download:u.jsepCreateDownloader(Ue,et*Me,he),dispose:()=>{u._OrtReleaseTensor(Ee)}},\"gpu-buffer\"])}else{let Ue=Mr(he),Me=new Ue(et);new Uint8Array(Me.buffer,Me.byteOffset,Me.byteLength).set(u.HEAPU8.subarray(ye,ye+Me.byteLength)),Q.push([he,be,Me,\"cpu\"])}}finally{u.stackRestore(Pe),he===\"string\"&&ye&&u._free(ye),Ie||u._OrtReleaseTensor(Ee)}}return g&&u._OrtClearBoundOutputs(g.handle),Q}finally{u.stackRestore(E),I.forEach(T=>u._OrtReleaseTensor(T)),$.forEach(T=>u._OrtReleaseTensor(T)),x.forEach(T=>u._free(T)),y!==0&&u._OrtReleaseRunOptions(y),_.forEach(T=>u._free(T))}},Eu=e=>{let t=Ve(),r=yr.get(e);if(!r)throw new Error(\"invalid session id\");let o=r[0],n=t._OrtEndProfiling(o);n===0&&ke(\"Can\\'t get an profile file name.\"),t._OrtFree(n)},Ou=e=>{let t=[];for(let r of e){let o=r[2];!Array.isArray(o)&&\"buffer\"in o&&t.push(o.buffer)}return t};self.onmessage=e=>{let{type:t,in:r}=e.data;try{switch(t){case\"init-wasm\":zo(r.wasm).then(()=>{_u(r).then(()=>{postMessage({type:t})},o=>{postMessage({type:t,err:o})})},o=>{postMessage({type:t,err:o})});break;case\"init-ep\":{let{epName:o,env:n}=r;Cu(n,o).then(()=>{postMessage({type:t})},s=>{postMessage({type:t,err:s})});break}case\"copy-from\":{let{buffer:o}=r,n=eo(o);postMessage({type:t,out:n});break}case\"create\":{let{model:o,options:n}=r;Iu(o,n).then(s=>{postMessage({type:t,out:s})},s=>{postMessage({type:t,err:s})});break}case\"release\":Au(r),postMessage({type:t});break;case\"run\":{let{sessionId:o,inputIndices:n,inputs:s,outputIndices:u,options:l}=r;Tu(o,n,s,u,new Array(u.length).fill(null),l).then(a=>{a.some(p=>p[3]!==\"cpu\")?postMessage({type:t,err:\"Proxy does not support non-cpu tensor location.\"}):postMessage({type:t,out:a},Ou(a))},a=>{postMessage({type:t,err:a})});break}case\"end-profiling\":Eu(r),postMessage({type:t});break;default:}}catch(o){postMessage({type:t,err:o})}};})();\\n/**\\n * @license\\n * Copyright 2021 Google LLC. All Rights Reserved.\\n * Licensed under the Apache License, Version 2.0 (the \"License\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n * http://www.apache.org/licenses/LICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \"AS IS\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n * =============================================================================\\n */\\n/**\\n * @license\\n * Copyright 2020 Google LLC. All Rights Reserved.\\n * Licensed under the Apache License, Version 2.0 (the \"License\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n * http://www.apache.org/licenses/LICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \"AS IS\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n * =============================================================================\\n */\\n/**\\n * @license\\n * Copyright 2019 Google LLC. All Rights Reserved.\\n * Licensed under the Apache License, Version 2.0 (the \"License\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n * http://www.apache.org/licenses/LICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \"AS IS\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n * =============================================================================\\n */\\n'});var Ht,ut,Or,Tn,On,Ea,Ta,rr,nr,Fp,En,wl,vl,$l,_l,xl,Sl,Il,Oa=F(()=>{\"use strict\";st();yl();Jt();Ht=()=>!!Se.wasm.proxy&&typeof document<\"u\",Or=!1,Tn=!1,On=!1,Ta=new Map,rr=(e,t)=>{let r=Ta.get(e);r?r.push(t):Ta.set(e,[t])},nr=()=>{if(Or||!Tn||On||!ut)throw new Error(\"worker not ready\")},Fp=e=>{switch(e.data.type){case\"init-wasm\":Or=!1,e.data.err?(On=!0,Ea[1](e.data.err)):(Tn=!0,Ea[0]());break;case\"init-ep\":case\"copy-from\":case\"create\":case\"release\":case\"run\":case\"end-profiling\":{let t=Ta.get(e.data.type);e.data.err?t.shift()[1](e.data.err):t.shift()[0](e.data.out);break}default:}},En=typeof document<\"u\"?document?.currentScript?.src:void 0,wl=async()=>{if(!Tn){if(Or)throw new Error(\"multiple calls to 'initWasm()' detected.\");if(On)throw new Error(\"previous call to 'initWasm()' failed.\");if(Or=!0,Ht())return Se.wasm.wasmPaths===void 0&&En&&En.indexOf(\"blob:\")!==0&&(Se.wasm.wasmPaths=En.substr(0,+En.lastIndexOf(\"/\")+1)),new Promise((e,t)=>{ut?.terminate();let r=URL.createObjectURL(new Blob([bl()],{type:\"text/javascript\"}));ut=new Worker(r,{name:\"ort-wasm-proxy-worker\"}),ut.onerror=n=>t(n),ut.onmessage=Fp,URL.revokeObjectURL(r),Ea=[e,t];let a={type:\"init-wasm\",in:Se};ut.postMessage(a)});try{await Ui(Se.wasm),await dl(Se),Tn=!0}catch(e){throw On=!0,e}finally{Or=!1}}},vl=async e=>{if(Ht())return nr(),new Promise((t,r)=>{rr(\"init-ep\",[t,r]);let a={type:\"init-ep\",in:{epName:e,env:Se}};ut.postMessage(a)});await cl(Se,e)},$l=async e=>Ht()?(nr(),new Promise((t,r)=>{rr(\"copy-from\",[t,r]);let a={type:\"copy-from\",in:{buffer:e}};ut.postMessage(a,[e.buffer])})):Aa(e),_l=async(e,t)=>{if(Ht()){if(t?.preferredOutputLocation)throw new Error('session option \"preferredOutputLocation\" is not supported for proxy.');return nr(),new Promise((r,a)=>{rr(\"create\",[r,a]);let n={type:\"create\",in:{model:e,options:t}},o=[];e instanceof Uint8Array&&o.push(e.buffer),ut.postMessage(n,o)})}else return pl(e,t)},xl=async e=>{if(Ht())return nr(),new Promise((t,r)=>{rr(\"release\",[t,r]);let a={type:\"release\",in:e};ut.postMessage(a)});ml(e)},Sl=async(e,t,r,a,n,o)=>{if(Ht()){if(r.some(u=>u[3]!==\"cpu\"))throw new Error(\"input tensor on GPU is not supported for proxy.\");if(n.some(u=>u))throw new Error(\"pre-allocated output tensor is not supported for proxy.\");return nr(),new Promise((u,l)=>{rr(\"run\",[u,l]);let i=r,c={type:\"run\",in:{sessionId:e,inputIndices:t,inputs:i,outputIndices:a,options:o}};ut.postMessage(c,gl(i))})}else return fl(e,t,r,a,n,o)},Il=async e=>{if(Ht())return nr(),new Promise((t,r)=>{rr(\"end-profiling\",[t,r]);let a={type:\"end-profiling\",in:e};ut.postMessage(a)});hl(e)}});var Cl,qp,kn,Al=F(()=>{\"use strict\";st();Oa();Ue();ta();Cl=(e,t)=>{switch(e.location){case\"cpu\":return[e.type,e.dims,e.data,\"cpu\"];case\"gpu-buffer\":return[e.type,e.dims,{gpuBuffer:e.gpuBuffer},\"gpu-buffer\"];default:throw new Error(`invalid data location: ${e.location} for ${t()}`)}},qp=e=>{switch(e[3]){case\"cpu\":return new Xe(e[0],e[2],e[1]);case\"gpu-buffer\":{let t=e[0];if(!on(t))throw new Error(`not supported data type: ${t} for deserializing GPU tensor`);let{gpuBuffer:r,download:a,dispose:n}=e[2];return Xe.fromGpuBuffer(r,{dataType:t,dims:e[1],download:a,dispose:n})}default:throw new Error(`invalid data location: ${e[3]}`)}},kn=class{async fetchModelAndCopyToWasmMemory(t){return $l(await Sr(t))}async loadModel(t,r){at();let a;typeof t==\"string\"?typeof process<\"u\"&&process.versions&&process.versions.node?a=await Sr(t):a=await this.fetchModelAndCopyToWasmMemory(t):a=t,[this.sessionId,this.inputNames,this.outputNames]=await _l(a,r),it()}async dispose(){return xl(this.sessionId)}async run(t,r,a){at();let n=[],o=[];Object.entries(t).forEach(h=>{let b=h[0],w=h[1],_=this.inputNames.indexOf(b);if(_===-1)throw new Error(`invalid input '${b}'`);n.push(w),o.push(_)});let u=[],l=[];Object.entries(r).forEach(h=>{let b=h[0],w=h[1],_=this.outputNames.indexOf(b);if(_===-1)throw new Error(`invalid output '${b}'`);u.push(w),l.push(_)});let i=n.map((h,b)=>Cl(h,()=>`input \"${this.inputNames[o[b]]}\"`)),c=u.map((h,b)=>h?Cl(h,()=>`output \"${this.outputNames[l[b]]}\"`):null),m=await Sl(this.sessionId,o,i,l,c,a),f={};for(let h=0;h{\"use strict\";st();Oa();Al();jp=()=>{if((typeof Se.wasm.initTimeout!=\"number\"||Se.wasm.initTimeout<0)&&(Se.wasm.initTimeout=0),typeof Se.wasm.simd!=\"boolean\"&&(Se.wasm.simd=!0),typeof Se.wasm.proxy!=\"boolean\"&&(Se.wasm.proxy=!1),typeof Se.wasm.trace!=\"boolean\"&&(Se.wasm.trace=!1),typeof Se.wasm.numThreads!=\"number\"||!Number.isInteger(Se.wasm.numThreads)||Se.wasm.numThreads<=0){(typeof self<\"u\"&&!self.crossOriginIsolated||typeof process<\"u\"&&process.versions&&process.versions.node)&&(Se.wasm.numThreads=1);let e=typeof navigator>\"u\"?(void 0)().length:navigator.hardwareConcurrency;Se.wasm.numThreads=Math.min(4,Math.ceil((e||1)/2))}},Pn=class{async init(t){jp(),await wl(),await vl(t)}async createInferenceSessionHandler(t,r){let a=new kn;return await a.loadModel(t,r),Promise.resolve(a)}}});var Tl={};Xt(Tl,{wasmBackend:()=>Kp});var Kp,Ol=F(()=>{\"use strict\";El();Kp=new Pn});st();st();st();var xi=\"1.17.1\";var Vw=Gn;{let e=(Ol(),Ut(Tl)).wasmBackend;Qt(\"webgpu\",e,5),Qt(\"cpu\",e,10),Qt(\"wasm\",e,10)}Object.defineProperty(Se.versions,\"web\",{value:xi,enumerable:!0});export{Kl as InferenceSession,Jr as TRACE,at as TRACE_FUNC_BEGIN,it as TRACE_FUNC_END,Xe as Tensor,Zl as TrainingSession,Vw as default,Se as env,Qt as registerBackend};\n/**\n * @license\n * Copyright 2021 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n/**\n * @license\n * Copyright 2019 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n//# sourceMappingURL=ort.webgpu.min.js.map\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n//\n// An example how to run segment-anything with webgpu in onnxruntime-web.\n//\n\nimport ort from 'onnxruntime-web/webgpu';\n\n// the image size on canvas\nconst MAX_WIDTH = 500;\nconst MAX_HEIGHT = 500;\n\n// the image size supported by the model\nconst MODEL_WIDTH = 1024;\nconst MODEL_HEIGHT = 1024;\n\nconst MODELS = {\n sam_b: [\n {\n name: \"sam-b-encoder\",\n url: \"https://huggingface.co/schmuell/sam-b-fp16/resolve/main/sam_vit_b_01ec64.encoder-fp16.onnx\",\n size: 180,\n },\n {\n name: \"sam-b-decoder\",\n url: \"https://huggingface.co/schmuell/sam-b-fp16/resolve/main/sam_vit_b_01ec64.decoder.onnx\",\n size: 17,\n },\n ],\n slimsam: [\n {\n name: \"slimsam-encoder\",\n url: \"https://huggingface.co/Xenova/slimsam-77-uniform/resolve/main/onnx/vision_encoder.onnx\",\n size: 24,\n },\n {\n name: \"slimsam-decoder\",\n url: \"https://huggingface.co/Xenova/slimsam-77-uniform/resolve/main/onnx/prompt_encoder_mask_decoder.onnx\",\n size: 16,\n }\n ],\n};\n\nconst config = getConfig();\n\nort.env.wasm.wasmPaths = 'dist/';\nort.env.wasm.numThreads = config.threads;\nort.env.wasm.proxy = false;\n\nlet canvas;\nlet filein;\nlet decoder_latency;\n\nvar image_embeddings;\nvar points = [];\nvar labels = [];\nvar imageImageData;\nvar isClicked = false;\nvar maskImageData;\n\nfunction log(i) {\n document.getElementById('status').innerText += `\\n${i}`;\n}\n\n/**\n * create config from url\n */\nfunction getConfig() {\n const query = window.location.search.substring(1);\n var config = {\n model: \"sam_b\",\n provider: \"webgpu\",\n device: \"gpu\",\n threads: \"1\",\n };\n let vars = query.split(\"&\");\n for (var i = 0; i < vars.length; i++) {\n let pair = vars[i].split(\"=\");\n if (pair[0] in config) {\n config[pair[0]] = decodeURIComponent(pair[1]);\n } else if (pair[0].length > 0) {\n throw new Error(\"unknown argument: \" + pair[0]);\n }\n }\n config.threads = parseInt(config.threads);\n config.local = parseInt(config.local);\n config.isSlimSam = config.model.includes(\"slimsam\");\n\n return config;\n}\n\n/**\n * clone tensor\n */\nfunction cloneTensor(t) {\n return new ort.Tensor(t.type, Float32Array.from(t.data), t.dims);\n}\n\n/*\n * create feed for slimsam models\n */\nfunction feedForSlim(emb, points, labels) {\n const pointCoords = new ort.Tensor(new Float32Array(points), [1, 1, points.length / 2, 2]);\n const pointLabels = new ort.Tensor(BigInt64Array.from(labels.map((x) => BigInt(x))), [1, 1, labels.length]);\n\n return {\n \"image_embeddings\": cloneTensor(emb.image_embeddings),\n \"image_positional_embeddings\": cloneTensor(emb.image_positional_embeddings),\n \"input_points\": pointCoords,\n \"input_labels\": pointLabels,\n }\n}\n\n/*\n * create feed for the original facebook model\n */\nfunction feedForSam(emb, points, labels) {\n const maskInput = new ort.Tensor(new Float32Array(256 * 256), [1, 1, 256, 256]);\n const hasMask = new ort.Tensor(new Float32Array([0]), [1,]);\n const origianlImageSize = new ort.Tensor(new Float32Array([MODEL_HEIGHT, MODEL_WIDTH]), [2,]);\n const pointCoords = new ort.Tensor(new Float32Array(points), [1, points.length / 2, 2]);\n const pointLabels = new ort.Tensor(new Float32Array(labels), [1, labels.length]);\n\n return {\n \"image_embeddings\": cloneTensor(emb.image_embeddings),\n \"point_coords\": pointCoords,\n \"point_labels\": pointLabels,\n \"mask_input\": maskInput,\n \"has_mask_input\": hasMask,\n \"orig_im_size\": origianlImageSize\n }\n}\n\nasync function handleCut(event) {\n if (points.length == 0) {\n return;\n }\n\n const [w, h] = [canvas.width, canvas.height];\n\n // cutout\n const cutCanvas = new OffscreenCanvas(w, h);\n const cutContext = cutCanvas.getContext('2d');\n const cutPixelData = cutContext.getImageData(0, 0, w, h);\n\n // need to rescale mask to image size\n const maskCanvas = new OffscreenCanvas(w, h);\n const maskContext = maskCanvas.getContext('2d');\n maskContext.drawImage(await createImageBitmap(maskImageData), 0, 0);\n const maskPixelData = maskContext.getImageData(0, 0, w, h);\n\n for (let i = 0; i < maskPixelData.data.length; i += 4) {\n if (maskPixelData.data[i] > 0) {\n for (let j = 0; j < 4; ++j) {\n const offset = i + j;\n cutPixelData.data[offset] = imageImageData.data[offset];\n }\n }\n }\n cutContext.putImageData(cutPixelData, 0, 0);\n\n // Download image \n const link = document.createElement('a');\n link.download = 'image.png';\n link.href = URL.createObjectURL(await cutCanvas.convertToBlob());\n link.click();\n link.remove();\n}\n\n/**\n * handler to handle click event on canvas\n * with ctl: add point\n * with shift: forground label\n */\nasync function handleClick(event) {\n\n if (isClicked) {\n return;\n }\n try {\n isClicked = true;\n canvas.style.cursor = \"wait\";\n\n const rect = canvas.getBoundingClientRect();\n const x = Math.trunc(event.clientX - rect.left);\n const y = Math.trunc(event.clientY - rect.top);\n const label = (event.shiftKey) ? 0 : 1;\n\n // need to wait for encoer to be ready\n if (image_embeddings === undefined) {\n await MODELS[config.model][0].sess;\n }\n\n // wait for encder to deliver embeddings\n const emb = await image_embeddings;\n if (!event.ctrlKey) {\n points = [];\n labels = [];\n }\n points.push(x, y);\n labels.push(label);\n\n let ctx = canvas.getContext('2d');\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n canvas.width = imageImageData.width;\n canvas.height = imageImageData.height;\n ctx.putImageData(imageImageData, 0, 0);\n for (let i = 0; i < points.length; i += 2) {\n ctx.fillStyle = 'blue';\n ctx.fillRect(points[i], points[i + 1], 10, 10);\n }\n\n // the decoder\n const session = MODELS[config.model][1].sess;\n\n const feed = (config.isSlimSam) ? feedForSlim(emb, points, labels) : feedForSam(emb, points, labels);\n const start = performance.now();\n const res = await session.run(feed);\n decoder_latency.innerText = `${(performance.now() - start).toFixed(1)}ms`;\n\n const mask = (config.isSlimSam) ? res.pred_masks : res.masks;\n maskImageData = mask.toImageData();\n ctx.globalAlpha = 0.3;\n ctx.drawImage(await createImageBitmap(maskImageData), 0, 0);\n }\n finally {\n canvas.style.cursor = \"default\";\n isClicked = false;\n }\n}\n\n\n/**\n * handler called when image available\n */\nasync function handleImage(img) {\n const encoder_latency = document.getElementById(\"encoder_latency\");\n encoder_latency.innerText = \"\";\n filein.disabled = true;\n decoder_latency.innerText = \"\";\n canvas.style.cursor = \"wait\";\n image_embeddings = undefined;\n var width = img.width;\n var height = img.height;\n\n if (width > height) {\n if (width > MAX_WIDTH) {\n height = height * (MAX_WIDTH / width);\n width = MAX_WIDTH;\n }\n } else {\n if (height > MAX_HEIGHT) {\n width = width * (MAX_HEIGHT / height);\n height = MAX_HEIGHT;\n }\n }\n width = Math.round(width);\n height = Math.round(height);\n\n canvas.width = width;\n canvas.height = height;\n var ctx = canvas.getContext(\"2d\");\n ctx.drawImage(img, 0, 0, width, height);\n\n imageImageData = ctx.getImageData(0, 0, width, height);\n\n //const t = await ort.Tensor.fromImage(imageImageData, options = );\n const t = await ort.Tensor.fromImage(imageImageData, { resizedWidth: MODEL_WIDTH, resizedHeight: MODEL_HEIGHT });\n const feed = (config.isSlimSam) ? { \"pixel_values\": t } : { \"input_image\": t };\n const session = await MODELS[config.model][0].sess;\n\n const start = performance.now();\n image_embeddings = session.run(feed);\n image_embeddings.then(() => {\n encoder_latency.innerText = `${(performance.now() - start).toFixed(1)}ms`;\n canvas.style.cursor = \"default\";\n });\n filein.disabled = false;\n}\n\n\n/*\n * fetch and cache url\n */\nasync function fetchAndCache(url, name) {\n try {\n const cache = await caches.open(\"onnx\");\n let cachedResponse = await cache.match(url);\n if (cachedResponse == undefined) {\n await cache.add(url);\n cachedResponse = await cache.match(url);\n log(`${name} (network)`);\n } else {\n log(`${name} (cached)`);\n }\n const data = await cachedResponse.arrayBuffer();\n return data;\n } catch (error) {\n log(`${name} (network)`);\n return await fetch(url).then(response => response.arrayBuffer());\n }\n}\n\n\n/*\n * load models one at a time\n */\nasync function load_models(models) {\n const cache = await caches.open(\"onnx\");\n let missing = 0;\n for (const [name, model] of Object.entries(models)) {\n let cachedResponse = await cache.match(model.url);\n if (cachedResponse === undefined) {\n missing += model.size;\n }\n }\n if (missing > 0) {\n log(`downloading ${missing} MB from network ... it might take a while`);\n } else {\n log(\"loading...\");\n }\n const start = performance.now();\n for (const [name, model] of Object.entries(models)) {\n try {\n const opt = {\n executionProviders: [config.provider],\n enableMemPattern: false,\n enableCpuMemArena: false,\n extra: {\n session: {\n disable_prepacking: \"1\",\n use_device_allocator_for_initializers: \"1\",\n use_ort_model_bytes_directly: \"1\",\n use_ort_model_bytes_for_initializers: \"1\"\n }\n },\n };\n const model_bytes = await fetchAndCache(model.url, model.name);\n const extra_opt = model.opt || {};\n const sess_opt = { ...opt, ...extra_opt };\n model.sess = await ort.InferenceSession.create(model_bytes, sess_opt);\n } catch (e) {\n log(`${model.url} failed, ${e}`);\n }\n }\n const stop = performance.now();\n log(`ready, ${(stop - start).toFixed(1)}ms`);\n}\n\nasync function main() {\n const model = MODELS[config.model];\n\n canvas = document.getElementById(\"img_canvas\");\n canvas.style.cursor = \"wait\";\n\n filein = document.getElementById(\"file-in\");\n decoder_latency = document.getElementById(\"decoder_latency\");\n\n let img = document.getElementById(\"original-image\");\n\n await load_models(MODELS[config.model]).then(() => {\n canvas.addEventListener(\"click\", handleClick);\n document.getElementById(\"cut-button\").addEventListener(\"click\", handleCut);\n\n // image upload\n filein.onchange = function (evt) {\n let target = evt.target || window.event.src, files = target.files;\n if (FileReader && files && files.length) {\n let fileReader = new FileReader();\n fileReader.onload = () => {\n img.onload = () => handleImage(img);\n img.src = fileReader.result;\n }\n fileReader.readAsDataURL(files[0]);\n }\n };\n handleImage(img);\n }, (e) => {\n log(e);\n });\n}\n\nasync function hasFp16() {\n try {\n const adapter = await navigator.gpu.requestAdapter()\n return adapter.features.has('shader-f16')\n } catch (e) {\n return false\n }\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n hasFp16().then((fp16) => {\n if (fp16) {\n main();\n } else {\n log(\"Your GPU or Browser doesn't support webgpu/f16\");\n }\n });\n});\n"],"names":["jr","Nt","Qt","Kr","Ja","ti","Wt","Se","ni","ai","Hn","oi","si","ui","li","vr","Xr","ci","pi","fi","hi","Je","Xe","Jr","yi","at","it","en","Kl","tn","Zl","Wn","Object","defineProperty","Gl","getOwnPropertyDescriptor","Fl","getOwnPropertyNames","ql","prototype","hasOwnProperty","F","e","t","Zt","exports","Xt","r","get","enumerable","Ut","a","n","call","jl","value","Yr","Map","init","createInferenceSessionHandler","TypeError","set","backend","priority","Error","indexOf","splice","o","length","push","async","initialized","aborted","initPromise","u","name","err","map","join","Qa","ei","Vn","wasm","webgl","webgpu","versions","common","logLevel","ri","ii","document","createElement","OffscreenCanvas","width","dims","height","getContext","tensorLayout","i","c","format","l","norm","mean","bias","m","f","h","b","w","_","I","$","data","x","T","A","fillStyle","fillRect","toDataURL","createImageData","z","di","Zr","tensorFormat","Float32Array","HTMLImageElement","ImageData","ImageBitmap","HTMLCanvasElement","resizedHeight","resizedWidth","drawImage","getImageData","Promise","Image","crossOrigin","src","onload","putImageData","download","dispose","location","type","texture","dataType","gpuBuffer","mi","Uint8Array","Int8Array","Uint16Array","Int16Array","Int32Array","Float64Array","Uint32Array","BigInt64Array","from","BigUint64Array","gi","Number","isSafeInteger","RangeError","constructor","this","dataLocation","cpuData","gpuTextureData","downloader","disposer","gpuBufferData","Array","isArray","BigInt","size","fromImage","fromTexture","fromGpuBuffer","fromPinnedBuffer","toImageData","ensureValid","getData","isDownloading","reshape","Qr","Ln","trace","console","timeStamp","stack","split","includes","trim","bi","handler","run","outputNames","inputNames","release","create","ArrayBuffer","SharedArrayBuffer","byteLength","executionProviders","startProfiling","endProfiling","wi","vi","$i","hasOptimizerModel","hasEvalModel","trainingInputNames","trainingOutputNames","evalInputNames","evalOutputNames","evalModel","optimizerModel","createTrainingSessionHandler","checkpointState","trainModel","typeNarrowingForRunStep","convertHandlerReturnTypeToMapOfTensors","lazyResetGrad","runTrainStep","runOptimizerStep","runEvalStep","getParametersSize","loadParametersBuffer","getContiguousParameters","_i","Gn","InferenceSession","TRACE","TRACE_FUNC_BEGIN","TRACE_FUNC_END","Tensor","TrainingSession","env","registerBackend","st","Fn","createReadStream","Si","readFile","Xl","readFileSync","Ql","qn","jn","Jl","Kn","Ai","Ci","Yn","Ii","currentScript","__filename","ready","d","g","mountExternalData","Fa","unmountExternalData","jsepInit","v","C","B","H","j","de","ab","Sa","La","Ra","sa","Ta","Ua","J","re","se","we","Ie","ot","k","ue","ur","resolve","reject","Ea","Va","errors","flush","all","filter","_OrtRun","_OrtRunWithBinding","_OrtBindInput","jsepRegisterBuffer","registerBuffer","jsepUnregisterBuffers","unregisterBuffers","jsepGetBuffer","getBuffer","jsepCreateDownloader","createDownloader","assign","window","importScripts","process","node","dirname","__dirname","He","URL","normalize","buffer","thisProgram","argv","replace","slice","exitCode","inspect","self","href","substr","lastIndexOf","XMLHttpRequest","open","send","responseText","responseType","response","status","onerror","log","bind","error","WebAssembly","he","R","N","E","W","te","Y","K","HEAP8","HEAP16","HEAPU8","HEAPU16","HEAP32","HEAPU32","HEAPF32","HEAPF64","X","Z","Oe","Pe","fe","Ae","RuntimeError","ze","ye","startsWith","Ge","locateFile","L","be","fetch","credentials","then","ok","arrayBuffer","catch","ee","instantiate","Ne","We","Ke","substring","subarray","min","max","alpha","to","keepDims","noopWithEmptyAxes","axes","perm","autoPad","dilations","group","kernel_shape","pads","strides","wIsConst","outputPadding","outputShape","activation","kernelShape","_e","auto_pad","ceil_mode","count_include_pad","storage_order","beta","transA","transB","selectLastIndex","axis","numOutputs","splitSizes","antialias","coordinateTransformMode","cubicCoeffA","excludeOutside","extrapolationValue","keepAspectRatioPolicy","mode","nearestMode","starts","ends","epsilon","equation","momentum","spatial","trainingMode","exclusive","reverse","numHeads","isUnidirectional","maskFilterValue","scale","doRotary","qkvHiddenSizes","pastPresentShareBuffer","w_is_const","activation_params","Me","message","Ct","Oa","Na","$a","Ma","jt","Bt","TextDecoder","At","decode","String","fromCharCode","ar","charCodeAt","Gt","Et","St","Ft","qt","Yt","Dt","ir","dt","or","USER","LOGNAME","PATH","PWD","HOME","LANG","navigator","languages","Ze","kr","ke","Kt","toString","Vr","ft","getFullYear","getMonth","getDate","getDay","Date","Ca","Da","getTime","setDate","setMonth","setFullYear","Ya","Xa","Ga","Ka","Ha","xa","bb","Wa","Za","RegExp","Math","floor","abs","Pr","Tt","ct","le","It","sr","Rr","Br","Dr","Ur","br","Browser","Ia","Pa","resume","ie","Mr","pause","gr","wr","cr","forEach","onExit","Nr","lr","D","G","y","q","NaN","getUTCSeconds","getUTCMinutes","getUTCHours","getUTCDate","getUTCMonth","getUTCFullYear","getUTCDay","UTC","getSeconds","getMinutes","getHours","getTimezoneOffset","s","setTime","getYear","isNaN","dr","pr","ceil","p","toTimeString","match","apply","now","performance","copyWithin","grow","entries","arguments","pop","yr","Fibers","cb","Rn","pa","qa","ua","wa","Wr","M","unshift","clearInterval","instantiateWasm","instantiateStreaming","nt","instance","_OrtInit","O","_OrtGetLastError","P","_OrtCreateSessionOptions","Q","_OrtAppendExecutionProvider","_OrtAddFreeDimensionOverride","S","_OrtAddSessionConfigEntry","_OrtReleaseSessionOptions","U","_OrtCreateSession","V","_OrtReleaseSession","_OrtGetInputOutputCount","_OrtGetInputName","_OrtGetOutputName","_OrtFree","_OrtCreateTensor","_OrtGetTensorData","aa","_OrtReleaseTensor","ba","_OrtCreateRunOptions","ca","_OrtAddRunConfigEntry","da","_OrtReleaseRunOptions","ea","_OrtCreateBinding","fa","ga","_OrtBindOutput","ha","_OrtClearBoundOutputs","ia","_OrtReleaseBinding","ja","ka","la","_OrtEndProfiling","ma","_JsepOutput","na","_JsepGetNodeName","oa","Ot","_malloc","_free","ra","ta","mr","fr","va","hr","ya","za","Aa","Ba","zt","preRun","shift","calledRun","___start_em_js","___stop_em_js","stackAlloc","stackSave","stackRestore","UTF8ToString","stringToUTF8","lengthBytesUTF8","define","amd","Ei","Ti","Oi","cpus","ed","Mi","rd","Xn","Qn","rn","zi","nd","ad","id","Ui","Ve","Le","$r","Re","Ni","od","sd","ud","ld","Vi","Jn","tt","_r","an","xr","on","Sr","dd","cd","Li","Gi","Fi","pd","De","qi","un","md","Ki","Zi","ge","gt","Vt","ln","dn","cn","Fe","yt","qe","Qe","pt","rt","ce","pn","Qi","er","Be","hd","Ji","gd","yd","mt","eo","bd","wd","vd","$d","_d","xd","Sd","Id","Cd","Ad","bt","ro","no","ao","io","oo","so","uo","lo","co","po","wt","Ed","fn","vt","Td","Od","kd","Pd","Rd","Bd","Dd","zd","Md","Ud","$t","fo","ho","go","yo","bo","wo","vo","$o","_o","xo","So","Io","Co","Nd","Wd","Vd","Hd","hn","Ld","Eo","Gd","Fd","qd","To","jd","Kd","ko","Yd","Ee","Ro","Bo","Do","zo","Mo","Uo","No","Wo","Vo","Zd","Ho","Lo","Go","Fo","gn","qo","yn","jo","Ko","Yo","Zo","Xo","Qo","Jo","es","ts","rs","ns","as","is","os","ss","us","ls","Qd","Jd","ds","ec","tc","_t","ps","ms","fs","hs","gs","ys","bs","ws","vs","$s","nc","ac","ic","oc","xs","Ss","xt","bn","Ye","wn","$n","sc","uc","Ir","Cs","lc","Cr","dc","_n","cc","As","pc","Os","ks","mc","Ps","fc","hc","gc","Rs","yc","bc","wc","vc","zs","Ms","$c","_c","xc","Sc","Us","Ic","Ws","Vs","_a","xn","Ls","Ac","Gs","Ec","Fs","qs","Tc","Ks","Oc","kc","Ys","Pc","Rc","Xs","Qs","Bc","Dc","eu","tu","zc","Mc","nu","au","Uc","Nc","Wc","ou","Vc","Hc","uu","Lc","cu","du","Gc","pu","Fc","qc","jc","Kc","Yc","Zc","Xc","Qc","fu","Sn","gu","yu","bu","wu","Jc","ep","vu","$u","_u","xu","Su","Iu","Cu","Au","Eu","Tu","Ou","ku","rp","np","Ru","ap","ip","op","sp","up","lp","dp","cp","pp","mp","fp","Du","hp","gp","yp","bp","wp","zu","Mu","vp","$p","Nu","Wu","_p","In","xp","Hu","Sp","Ip","Lu","Gu","Cp","Ap","qu","ju","Ep","Tp","Op","kp","Pp","Yu","Zu","Qu","Rp","Bp","Dp","Ju","zp","Mp","tl","nl","Cn","Up","Np","An","ki","Bi","Ri","Zn","Pi","oe","Mb","wb","yb","kb","xb","zb","Ab","ne","ae","pe","xe","Te","ht","me","Bn","Cb","ENVIRONMENT_IS_PTHREAD","global","Worker","writeSync","lt","wasmMemory","Memory","initial","maximum","shared","Lt","Ce","terminate","onmessage","lb","cmd","start_routine","Db","arg","tb","pthread_ptr","unref","postMessage","Jb","Un","Fr","Nn","Eb","numThreads","pb","hb","receiveObjectTransfer","Bb","threadInitTLS","ob","setExitStatus","nb","Nb","mb","zn","targetThread","Gr","transferList","thread","loaded","alert","threadId","text","target","args","filename","lineno","handlers","urlOrBlob","mainScriptUrlOrBlob","wasmModule","PThread","gb","sb","rb","qb","zr","Lb","establishStackSpace","invokeEntryPoint","Mn","Atomics","Kb","store","__emscripten_thread_mailbox_await","checkMailbox","Dn","Mt","Hb","Gb","eb","jb","fb","Ob","Fb","Ib","kl","Pl","Hr","kt","Lr","Bl","Dl","Nl","ib","vb","Ul","Ml","Vl","Hl","Wl","setTimeout","ub","ref","timeOrigin","hardwareConcurrency","Pb","Rl","emscripten_main_runtime_thread_id","Ll","module","_pthread_self","__emscripten_tls_init","__emscripten_thread_init","__emscripten_thread_crashed","qr","__emscripten_thread_exit","dynCall_ii","startWorker","keepRuntimeAlive","ExitStatus","Di","Hm","td","Jt","crossOriginIsolated","warn","MessageChannel","port1","validate","initTimeout","simd","wasmPaths","endsWith","Blob","createObjectURL","race","nn","has","add","Wi","logSeverityLevel","isInteger","logVerbosityLevel","tag","extra","WeakSet","Hi","session","use_ort_model_bytes_directly","some","enableMemPattern","deviceType","powerPreference","preferredLayout","graphOptimizationLevel","executionMode","logId","optimizedModelFilePath","enableCpuMemArena","enableProfiling","freeDimensionOverrides","Ue","headers","parseInt","body","getReader","done","read","code","Buffer","concat","Pt","toISOString","ji","sn","Xi","device","createBuffer","usage","GPUBufferUsage","COPY_DST","MAP_READ","getCommandEncoder","endComputePass","copyBufferToBuffer","mapAsync","GPUMapMode","READ","getMappedRange","destroy","storageCache","freeBuffers","freeUniformBuffers","buffersForUploadingPending","buffersPending","externalBuffers","upload","byteOffset","originalSize","mappedAtCreation","MAP_WRITE","COPY_SRC","unmap","gpuData","memcpy","registerExternalBuffer","delete","unregisterExternalBuffer","STORAGE","UNIFORM","refreshPendingBuffers","je","cacheKey","key","sort","$e","calcMatMulShape","calcShape","isValidBroadcast","getSizeFromDimensionRange","sizeFromDimension","sizeToDimension","computeStrides","normalizeAxis","normalizeAxes","sortBasedOnPerm","padShape","areEqual","every","adjustPoolAttributes","adjustPadsBasedOnAutoPad","adjustPadAndReturnShape","computePoolOutputShape","computeShapeHelper","computeConvOutputShape","getShapeOfGemmResult","ve","keys","indices","storage","tensor","offsetToIndices","indicesToOffset","broadcastedIndicesToOffset","setByIndices","getByIndices","impl","values","indicesGet","rank","indicesSet","setByOffset","getByOffset","shape","normalizedDispatchGroup","internalVariables","variables","uniforms","variableIndex","guardAgainstOutOfBoundsWorkgroupSizes","mainStart","appendVariableUniforms","declareVariable","declareVariables","registerInternalVariable","registerInternalVariables","registerUniform","registerUniforms","uniformDeclaration","additionalImplementations","tr","shaderCache","hint","inputDependencies","getRunData","outputs","dispatchGroup","programUniforms","getShaderSource","inputs","compute","mo","mn","sum","prod","sumSquare","logSumExp","l1","l2","logSum","getBigInt64Array","Ao","batchSize","sequenceLength","pastSequenceLength","kvSequenceLength","totalSequenceLength","maxSequenceLength","inputHiddenSize","hiddenSize","vHiddenSize","headSize","vHeadSize","maskType","broadcastResPosBias","passPastInKv","qkvFormat","sqrt","gpuDataType","Oo","outputCount","validateInputContent","Po","getFloat32Array","cs","_s","scalar","vector","Is","Rt","activationFunction","applyActivation","clipMin","clipMax","activationCacheKey","vn","Ar","Es","Ts","kernelCustomData","wT","Bs","Ds","Ns","reduce","fill","Hs","getInt32Array","js","symbolToIndices","inputIndex","addSymbol","hasEllipsis","symbolToInfo","lhs","outputDims","processTerm","count","ellipsisDims","dimValue","rhs","inputIndices","Zs","Js","ru","iu","su","lu","mu","hu","Pu","ceilMode","countIncludePad","storageOrder","Bu","Uu","round","MAX_VALUE","MIN_VALUE","customDataBuffer","Vu","Fu","sign","Ku","Xu","el","rl","al","il","repo","attributesBound","getArtifact","setArtifact","programInfo","getComputePassEncoder","writeTimestamp","pendingDispatchNumber","setPipeline","computePipeline","binding","resource","createBindGroup","layout","getBindGroupLayout","label","setBindGroup","dispatchWorkgroups","maxDispatchNumber","queryType","build","features","createShaderModule","createComputePipeline","entryPoint","normalizeDispatchGroupSize","limits","maxComputeWorkgroupsPerDimension","cbrt","ol","currentKernelId","commandEncoder","computePassEncoder","pendingKernels","pendingQueries","sessionExternalDataMapping","currentKernelCustomData","initialize","requiredLimits","maxComputeWorkgroupStorageSize","maxStorageBufferBindingSize","maxBufferSize","maxComputeInvocationsPerWorkgroup","maxComputeWorkgroupSizeX","maxComputeWorkgroupSizeY","maxComputeWorkgroupSizeZ","requiredFeatures","requestDevice","gpuDataManager","programManager","kernels","kernelPersistentData","debug","onuncapturederror","GPUValidationError","setQueryType","querySet","createCommandEncoder","createQuerySet","queryResolveBuffer","QUERY_RESOLVE","timestampWrites","beginningOfPassWriteIndex","endOfPassWriteIndex","beginComputePass","end","resolveQuerySet","queue","submit","finish","kernelId","kernelType","kernelName","programName","inputTensorViews","outputTensorViews","queryTimeBase","profiling","ondata","version","inputsMetadata","outputsMetadata","startTime","endTime","temporaryData","writeBuffer","offset","alloc","free","createKernel","kernelEntry","attributes","releaseKernel","computeKernel","pushErrorScope","popErrorScope","sl","Wp","Er","Vp","dl","cl","Tr","Hp","pl","ml","ll","fl","hl","gl","Ht","ut","Or","Tn","On","rr","nr","Fp","En","wl","vl","$l","_l","xl","Sl","Il","Cl","qp","kn","jp","Pn","ul","customDataOffset","customDataSize","opKernelContext","output","yl","gpu","requestAdapter","externalData","path","preferredOutputLocation","handle","outputPreferredLocations","outputPreferredLocationsEncoded","bl","ww","Gp","proxy","out","revokeObjectURL","in","epName","model","options","sessionId","outputIndices","Al","fetchModelAndCopyToWasmMemory","loadModel","El","Tl","wasmBackend","Kp","Ol","Vw","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","definition","obj","prop","Symbol","toStringTag","MAX_WIDTH","MAX_HEIGHT","MODEL_WIDTH","MODEL_HEIGHT","MODELS","sam_b","url","slimsam","config","query","search","provider","threads","vars","pair","decodeURIComponent","local","isSlimSam","getConfig","canvas","filein","decoder_latency","image_embeddings","imageImageData","maskImageData","points","labels","isClicked","getElementById","innerText","cloneTensor","handleCut","event","cutCanvas","cutContext","cutPixelData","maskContext","createImageBitmap","maskPixelData","link","convertToBlob","click","remove","handleClick","style","cursor","rect","getBoundingClientRect","trunc","clientX","left","clientY","top","sess","emb","ctrlKey","ctx","clearRect","feed","pointCoords","pointLabels","image_positional_embeddings","feedForSlim","maskInput","hasMask","origianlImageSize","feedForSam","start","res","toFixed","mask","pred_masks","masks","globalAlpha","handleImage","img","encoder_latency","disabled","fetchAndCache","cache","caches","cachedResponse","main","models","missing","opt","disable_prepacking","use_device_allocator_for_initializers","use_ort_model_bytes_for_initializers","model_bytes","extra_opt","sess_opt","load_models","addEventListener","onchange","evt","files","FileReader","fileReader","result","readAsDataURL","hasFp16","fp16"],"sourceRoot":""} \ No newline at end of file diff --git a/segment-anything/dist/ort-wasm-simd.jsep.wasm b/segment-anything/dist/ort-wasm-simd.jsep.wasm index 669613feb466bbb46e5d570a53ee4d0a02247fa6..367f238585ac26a8057e7f0f2a480a7a0cee3756 100644 GIT binary patch literal 17411110 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%0AnDm&^ukPNV}@YRC?X5sm2>h}s?;uT&!s z#Db%;^m9xl@f)$$NkCN>tY1BJ4Mv%Kg6gC- z@)s#9gt(C*BAKb04U&O(=|qzFbV-^H1gx;V4P3Sq6Pi*#wMi^9X$#lBBZ|9oblwJTTupe`1ErFoM^ zXM{twG8hq$_rJVu>257srfI%1_48qoZ4Qb$;4rT8uEMobS1pN~v`FuSY0^z`0VC^d zhmNs_MF(``sf1uuOgZO~4B+5`kvo@siTK?#vd{0TopTgZ$nwPgEUTjj(SEp%vostfcRH#ql;rNULjw(qC5K+x5 zBq=RDQk0yE0=uzPX|G+9AVsl1m`@7j&+@9fKm$@#WbLU5D`SaL5Escf5JvkF{l&mB z?Mq(wBpLh|UkY_kY@(th&N$Kf8@QBkxaVgR)il~DNS)X~{X zrZ_r>qAAfH36!h>oxNa6MihD;3#Qb{8KXHRboQz$O?0ly^5;P?WxK0@^ffxy<@Li; zbYKjfz1T^G&Y|9kbvP0UFJsawfBt7X<%+_Bik2X3 z)-cuxG)LH6tp+>Ivxvb?o<*}gxMwj6o6+|0>;+|>u1H#fGCz0XA6F#puV-rwFhVXB z<2-4AQFJWAf{>{qk@rH%awK6(=N1yJM~`?U0ak&*mB4b4hsG$38nQa0d|L*wa;$GE2THfmt8rA1?!mCl-d%rIlUJRqnVhfx*JB0vAQuP%=C=6{( zmGZui-cUpIjpBO{sMUJEe2Fde0cm|QfQvPH&y*0ZsdmuGHA2g22>+{JF|_LtL+7$k zBVvv+ZGEb%3qDorr9Yx*u0q;S%RK6C^N7gD>}sqxK|U|JoeS_Ba$>=7Jc&j|u3~(9m z(S$dE;!ioid0g7#Z@CjOyzX$2?E^gvDR<)<=BtRB5?!x4hz>0&{BlS&GoQR#ot4=_ zy@Ehq&KYhlby37FGjIJuw#$(}xaiZt5xlh#kWADz+Qay0`c*s|#D6bNrSFUY5^RQ% zGjs!y!t-dnA!w!JY70$S&J~;{QXZ)j#v7=&sX_S9%ejmrw`JWnx*A_V&_vM$`jt9l z}Y_3ZJH&XRg?>2(n2z@AC_aC9t%> z*{w;oYw|x(_bKfnQhxLkJGGib>vO5UzdVs2)X6^RU76oFN^XQXA ze<<|9f(s#2(_T%ZZOzSMo-7~sUUu1HLDVMORYG?0^os}{xQ@4y8xFofJ-q?x!g|I1 zs#g+W#(S0itAn;pg7*sophN>X6y!^1;MNz;Kp{G+u@X@}%DqcGLWDU_Bh-T--SVb` z_Dw+MnDrAoEoR6P<1bT4q^7L1HX%f|&@!)EAu@VJ%!`IBIR-z9cLP$Q-mu2%jm?tU zl|dOzffIe1X(=D_N$IO*dH)R{O!?IB`!dLwOt0uOxRMRioEg)cs(_nQ=#4UcvM6GB z{v<=x^tbkn(#^bO+=cM(A~E}h+4o2wp<|LP@h&i=&sYawahhKkpgL}=+?!)_4hkq3 z(UFyvkMfW{4<2SN8|8EfPfNnIRu4kDa=U9Bew1JzEPBRd=6e0|5VMt(A3CHs3jr%@ zebYg9CkPYK!-NY!XwU)N59w#Qs92KcmFIA(a1pZuw@acY%HEAXL_ole2GoSP94NnI ze}AN4l4>SXEnPzSQ|(eRRBO*=Rnr>}&~mptXYb}4hFP55IFZC^K<^nG7%FPai_9!- zU_|0F%0&6N{g=Go52I~JzQ{_ z&7`^V*e$R*v#|ND=F(z{hn=u?^ureyV=*NY^$edz8cIW0txY+&>eg^aJ7!elF*dBU z6i((wSrY)bA^->g44U_}%|v5e1pqu00Kk`6eN1Ju2aTHm;NTJ9MF7xo0O&Lb0S50~ z5!sTAwuPRA%3RHN3~iad3R!c6F=3rn&oEoq$9O6@jZ3#LI_TFsJ!P9y-TzA z+KGVgzDIWMK7^~dJj}`BVR?>Q`pKj0+%vboy!K#ujGe^W*Q)~$KC;s$tz4{5iv9>8 zfVm`mY6S2=(XN{BmS20=x=DIM`IMjH3RPqiv{uR$d%>vgwHlK2VxFdeUAy8K_3~|x z>>MVnsKHb+>S`sdHZk#AIDiED1|$ONlDyVgR{hWwz%L-6G1**|bPf8TO?iM;v> zxx}?R0orghS1aLzWSvFh+2mT`l+_w&U{1bAiDsA%$eycfLSr*X*I=C#P!(5IeHU>P_` zeRUjxn5T5~3;gF7dvKa*%)>B#U91?TS(hFfCEGV_ia$5u93=?DN*I450%kG@&DL zp#y9H7KS-fmz!oMA&zuE$S*>LIJ<-h#~CDy5z5to*bi}2jcTB-F`i8v!XPzdDTj}>V_`6o>?D2}YKikVVv}NW*e5)jY3Fyfytm?JY%u(k?b8D8>^D6yr|B-z6yahfSponc6;& zv}7m&@zpaxG1pD`<+lJvQHXYfKCz9fAccTXY5oW@fjL?lv&dmZu6QPrLCz#EgnKlK zz{~t5TnVISIT$B0YRo#o8cyRy^iD9&L1qDiad=?`bd$vKw?IfRvPnF_1#0O^n0VAcguE zAdWK?Er}q-SpcbVbCap1k^)GvWA%cuiG4hya09)a1SlyPf}KbrSoE5F7#Fs2o8~Jh zmPVubC8`X*B`azF$#kh}ZR$2;a@#O9#B7}`j#i4(xlmpCsm{&zV1Dq>t8DPsMOnES zgSi$&^r>?n3#BIvl|fI5_tB{9K9IHf69s$GkZKXdWzxTWV>W*%os22ItPV~?vVy3| zdad9z4ob$AxP{S&gQE61sGbN1QF3o0AI`FVM7wEmJD5(weaL3I*fMgZmj!V3b5A6UQKUkW92ejli})cT zu>$;Ha?qRUUOMFQ(Hwv}ecBhXIYf3Fw$bTeVC%pxuU)qW+61S&W2%TxGDgzu?~8;9i&a8ts?Eh zXfqoW({GWOxw&6V4}f4ov^8M6hMk0VQ&w0?0)m3TqF~1tjV8{VjfSs_+;tsde3%jz zyT0FwCBDto699cC$THW8S|Jd;dJvQmvFb@9>#{6?pdg6yNgV`y0SzFN8QG-C*!n~;oN(`QE`ij|o)_jC< z!33m3Fm4OaIr#~VHE+PU48pSb7%DRo5t|Y04=lAzQ}!U90eSRap)keBDEI`snI9O< zl=+)RvjxdX@Cc-tb>q+fszazLO^5H zbqE3XNs6pD&mHee02C8T#nINPE^* z{lq=dLizEqHee1LO$@>jzElh8!KdlqZ`Un}K1Fi}icKn)_=_+m405a>`XW7OpzD+2 z!KbKHnm(`F4x#?nCXN}HCx$r7yZme65)r>>cG<&Et;-?$ zG}Hla1ZD+3ic1D_oX;p#V{pVU3))P}u_014BNGiEtH^{0nXQ(T>@KTd<=|K~;2@1Nc;M zSbquW%50FXoyu%Ob?sX=uT7I}ANC#bo0kc4`aj*uTDMT3S41fN;3yllcBgM0<=4m_ z^1)Gi_rmA-cZ6q{_V3!v6Rp_zu$$dNI%aDZiZo-}J;!ULavFjm>L^hlv$mAqDO@5~ z0I$UZZo78G_ zU!h(xSD^Kq)#P_GC%L-&&oyK9I2Gu`2S9&~fK~0jLR7EoITj~>Tc4=9@h_Oe3`xYK zn`%aE>T#I82DGvH$@yB>Cn!$E;^LvVSRayCv~DT#c)9oHf|?T-zx6f=E;g69)8E@Z z)IZir+moS4jp#M#R5CG+5rb?2ON~T!U65zWV%r#bxC>O*p|yO<qbcYzbh|W|XSHB_3=#2Mgh&IC~Tx-3cMP?U18>5`n_trFtGBmhdhq9C6H$3orXq=YtbU-MyIOp&jxr=fqm zMgOX;M`Oq&R1G%ph8R-R=-<%0M$W18{ zz^ajw{Qtjd$A6oz80IJhfE;iLIh{&jx2ZcFuScTHxsdP!O;0gsD8e(~Z za5A_*Z=kWWTR@!1>^(Iuq3NYU7u5$czni7S31dxtZo}=b93uTVIk5VivHUHF)T757 z*oc?~rD^SEP1suuR*k9tmW~X#_XhXm5shl?+1|vur9ef97tP81jez}XiBx7rjq(8< zRpu1?bg9=)zlJFtS2m%KJtUqnAtGZz6Bf>{x$p@h1PkGwF{rjAiLt^b5o0Z@;#tJk zY_DWMDabV;9xLjxN_?d{`3Js$N$MXFzJ6+B-aVB4_!7%rqgnv`SvbpKl6Rv&2ycvq z3upPY1$^Kj%N~bSV6c_x#oUQ^MLFD^@74`!jB_v2Y~OD{j2Q~?5|?ve!Ew$ zzYeBG4)Ls^!Hk*ZW>IHx2088$(A#!B0O_cOC0Fv$O}r(hh(;jU*!HE^(op`3-lfU8 zaB3X%6dc$y>R`Ro2WWx_ArSgP=}+-OFNCdUjDeh1#NO`JhN#Q-oBbm~zdgNkCeR&K zS3_!@+Vftc=eRG`a~xRa>}vKLd&8OZ9J@6=o#=VSG+&4q5_*m(8+zU|UK6hK%7>&>aYv1d<2U1k>j-&y3?J zQK6RBPK~b(G}`5J?1x)_1lwAb1K+o3Q1x&vjqcZUfs}Y-`mD#ZC(~Q zxoGKZ&_tMx>g?X??67^{eyolq5f?Q`3y2BgRXJUx!(B$s!8Pe9DOniOk6P#D@6WM> zTVLLdZ#~l z*uLsZewc^+%n)D#DTFBY=HZYJu@D^xSnEu}NCzLQ*fcT$I%BK6FSk-2(6~Jq?>wj; zt!wbf$_~tv0eAVp0`R;&JFZTGC7%ZP|Auqn?``0XOaV{$z3dpz{aJYK3q1E1I>(#* zq>kC8$yaooy)^ls9A%3BnvMqfi)u*_LklN#^>%`#CaA(~ETd1wVs-X4-t%iGgu`*e zQKYR_xtNJ8)JAK}^UI(^K!zO=7lZ?#!ky|A9nvu6I-*}PYzZ~Edb?fS6;T3I(AB%S zdR}%<7IEV8OZZ{UWtXcJ@;vAoa|b5q`Fptu7+te0NP-8p!uR=uuUqy((7+yizdv~G zvJZj<_TWSQ;9|P$lfnXf^q4<-=kkvR(0wpn9v#$}(BXC#han%eNA2|PT<8$*-_3pd z>X-eihwZBY9W;A}1T_V`uex@>nh^0gp%ffJFz_8b1j2*h9}phsodrV!xS$?$3%@uQ zXb>#?LIZp9iM08sS0Ioq@k9?c8p;rmqS+2o@=UM~XM;C!KbVK@e&rb01`>EG7eMi( zrE#^kfgshjC;Xb~61mzjQ_6x2J-0@K6kOA~p<}5DABnm}FLHWsb>&7}bDS$>-y$6>V%J`h-4RsH zAg{GZE6t+3M!r*48|PzMX+DjeW*5=+E-HCy0rK)L1lXv6nli&2r-Q#F8N(&PM$bt7 zLf2f#?!t3b;92~obd(+iMn>(;a=I*Jcc)+mKVnCn-SqI}q|^||qH1WJwP%n)@@=%^ zfM!hxb2RF3%TtFkDzOLwAsUSdhGrKi3!PE>P@`2Y;A8ZyW|C8%j#h6KwjU`#~p&b24b1Qu*X(&$^bMK5hNPU;X3K)~STw zS%I<=C?ieX<7IS^!p@-z#j)U}#E1O0z6RZOIGuVGXHHBsT;@6f@e&Cf9F*4(|IBqo71iO2JPwrnsdz{c!6?4Er zR6V)3gJ(SONU0d6MJP7eqYzY3Dg8$LU9-?d_9 z0;!+xhMh4G6`b~CkJMM2;WmgDxlboGQo`r3&p%M4RuY_CsKRD!3wpo2eD6|Eep$NJ%!8*~(*U84!45dclFz{-s3kL0h5me(pgZ!VMLeE% z*qljCXbw!RTSr&1WeJ)wj}OZ1df$M9nXm%bc;!gq$D4blH6oV?X-*J*Pvi$=%+;-_ zj{$nrc^dN;$vCw3-8bCcoDOXFjR0s?R3!3dbsz%RDU=D3P!~nD7}j?@&9j>`0{gNz zYd$_O%FB&6n)|j@{wI|g|IUPeAP<%@3eh7fP^oOarxzwai=Qd^&gWeB>%0GVGvFz} zNzY%ay;rf~*xswx-epg{=c|u?fuvuuW1-lxAs^4muUTcUWI zevQ(@iY$BQJ4fk}^8LDU7`RQ394U|5!|9RB)z2h3{&F@~&E$r@@U2DrUFA6kNy91^ zd#WdT^M{W7X21VgIVePeeEkugfC5QMgCA5tSYgQtT)M42il?_r1bbjT7I(-BehJ>; zZ+wTf&McZ+7kP`kQ{4QbE+88+RCpV*Bf}0CL0i2Z-Wk(3V;RESZ`k0Sm8x*dXkRDe-V@*<@t zZLhot@n($tQRT%<=2BkOL5nP@S^XqJo>u7xUdd2-QE?-5Qbirn+aRIBiy;%jG@ept zTFm9DI)i0@tTT#ft2+bn?gBYU|5Kf%tg+#TRv#H72W-+hh&6H$Yvdq5G>44{?I&S| zII0;lqZWon4yHLan{4Z9g?I9ULi}#;^zw<>5<7IH-5Q(Lz~YTnDUvytglVc6tW1ry zEY;1b{O35anK?d928K-x98Ubj<_OQzb>qK#6Tj!;Zz3c#i{yn`tdU5c2S-{%YCkj- zfCOW#03i40d5A5Z6pCXmGdPJRmJk%d5U`7TiWoi5ALZ(`2pQf(9Aa#504Gm03dTMn zpa=CuK+Jm@D2Hp!pHp-cte%rmYT7d+HpWM)A_)(PW=ikb=zS`P7w31lWaF?4_Bn(F zXT-EuXzz_V>BW(p@(y4Df@vyKns#EZ->oXtrxE{UjpMymn9JmVNDV^j(l8hlvuY9d zJ_vk&QwAYavhTW_q@6kAAi{vTAb3csK?tMsY7jW~o{oNRK6q2}$9?eq2c}deYVc|! z0d!1D510z4h)_70ENQ&DJoe45`~4Z}exLBV-%mXIb-&@o%D7>fd!;fjPfOkJzsM>>Z<#yUb@*aitSOf?QR>4L`+JNf#!A|UbB_!e+2`b(w7|@xNt@r^ zYp>t`_xJvP-=B3NPaQjXCrgnB!vb_5tVMT-Iw#Aqd6((o;L-!;K#eXX8ubp_Sa2U) z-{GVi$s^_qV5+#H-pt?`b2X7J*&aivP6P-wf`Ev$n-?cIx)O%qnKAy5>+CCem>>IU zALer$=1=-z{^-~KFtcIL{$c*B+2uD-k0?<^_&CfIVq_@lT+l{L$Mc1S>yOr8jSp$V zE=ZKxR3*1KKf4*9Y;$uKFAF#0uv*r?ZM{2Fj{5hVQ-3G57XpN!ewQVaF&w5$ zWXX$%Z5>(pz*q<#rvRc%`zFD;Z!Rn`htoI?y8_F&ENHaYnp8}U8oq(^);IP`XZ{8s z_bv6fZk;->+v?wMpZfc&>)-E~_}!35I+n@IqLUa2!TItVusJY6QznByb>%^=CSX4B zhROp5o;)Bw2XHB4mOga^)n@VLOtKbXXhunq?=d25%Y>t8OG^d2Iu?8u7E83<9TWT( zGj2TEm?RN3<2W5SD0m_9o~t+H3B|iXr2> zXIs}H5-fkZ+&$NbMiidTT{UH)tmCRFgvhsbvYF*Kr(8Xahni%bz#O_`kVE7iDSRt2 zwDN5mIzNgXNbnRpaWJ7+11_!&THGxX%voY}Zea>+e$rj zVaF?k-qDCJwNP>^giaE9-OP!xWw)-(;i9fsmA&^4`by=K%MGT4lOW`7)L_;x@v4|| z{Yt()FX1w2nKr2+yb?mDKBHHotH+Y+BR|=z zK9*FUct5klQ7?-K1n|kC0@k%m2^PSldgrINm{(=>&R^gI>euRtH*PczO`cH_U@@dg zKm1V)gZi1L(zSqCXL*W`uIpJraE??^b%KT!)-+qZ;o_*At!=mFBu>|wA9Z3_V!Qg? zzd`UEy-V6g98=6E%~dO*rWxFdZ)lCq_o130xQo#a8D+P<`Sri7$H{CEqv4*qIcnQYfUL5SY z)13snD?15xC!OugNl>nKtw_>v5|nnp2_)9;;A$t}tWDt3>o<;e2<0zKlvNLyC2B*a zkx(7Y2R4ln2SI)g28n47f?YR_)Uiy!nY;rzMv(jgkL3j6$DnIN4y1Ep$lZF#g%4TM z1c+m9bjao#XhEtBa%{*M1Z~VSFs98e)8PM^7%IS`7t?2aX>Smz*(exPXFE`4L#q3BZA5V3M!%)a)eWK8FpA&F2WbRHmQmHX6&7jO z>%jnm;pzcw5_!b?@;R1Wkg&#>V|o$TOvpe@x>nI$ zI-g018z9b#7k|9ra(Nc4KU;$H7-BU{mu8H|gf8uWm>V#A2UyMtZeh$>o&+EA zp~Kfd-bO|guWcCC1SO5sgRUUA=mrvl_b?D^lclg z7~ggbHtO3NDD7OJU3L`P=fKgDFR9A0;_|fx`U=O$E@sP+lgRGsSFv@lJ;{mR(_`{p zlEk~obdeh4YnLO()&uos4w`i$`aY z##_}Y*RnCLtCEb1*|<|pez|-ju6X2Ib1j?w-r+vB*fRpzhU4rH1oJKiDsfDgheHrt z_-5Tq?qi41wvY~`(q(O(?`1@OSsRba8B5a3CoXI2M~OGvH*6y@Y8Q~*?6c}{FxAFj zKHo#zCTn0)AxB%uX)ouG9NKk`M3E{+UB)4SB>fM&=u+lb4j4OSM~C?+zEOijJ25NE zqK{iIDL8dvsGwpu0d;~2sIOrwj#Z0q!=7K~u;<5g}YzW$6%MS^kY#Kaywph|Z)9Sf3EMVNZ!0_q# z<;9LD>@?or#;i*NWa@7#KsW5Dq_6xvocr`j@I_G%Kx!}|!r$}eaw7(LGz27J7VL5P zGavGsj_T{NqY&6kX$;F8@Z4AyZ~2j7@l8o`^3ZpbDwE`Pg)9{BWNToR03XEcn^E&K zULYt(tz@n4<4dP_nV%m!1o^?R8WjSZaY0Z`B{a|JoRrn@NsRtIHtf|q1@Jni2p7!e z-&>_hhz&$mrT$&|o~2`y*-eXro_6sv4U!rp?Ibv!s2t%Nc)k zIY9NPBx^m@N0Y;6hCF0}ZexRt4*;#eJ_Sw-=qMhzSeo4$#k5JtGMW5E`=#}8MJ?wJ zkk&<*Gbn5Ggz7<1M3vV@q-Bc@8vy#e(%M%mlsU3~8eE`LBx?d&{1=>}`dlzLKRUp& z#e)d<0}6JUqPnB5FXNf&*Sf?2bY4@E5c)>}l9Gq$OlTT@GNZ>aze!CTl!WGa$MS@j zfmZRN=sw(_#4c;C9URv&!A5BV$d;&`o#UHslB6IsE%xZ1$7yxygWc-d>K(rXD-3(v zZrqT|cKxo07<7vRF}k4kUk>*ca?t-9AzNKkK6Qiv!b*EEMdh<@BcUBTkgkp$^jF6Y z3a;tZ9{S7tnZeV4HN`|cV$m1=;c!s|_2wEFMro8mE{VWsI0nPbP2O1qU<;qN)dqYJ zx!C$fD}g%@*6<^&u+V31YMxKCJ=Lkt?!tvjepAUeLwFzf>@E$}7z1F2oW63(Gqjmh zCqKLEfWDcx6+WOkV(C)#yn_Ir12{lT{{l9WQidG`j*SxJRf$OYfqam~V}pJr^OtDT ztIDt~HNmDZdf+^qoT@B-OLc3XO{*KKu}nHD@tfwqxl}?oa41mspegD@^dz!_Ir*($ z)fe$;bn?SjeVJi@>ZY^XzV|_GF&e-z?gai*G z|Fp>asO8fWwttPJv_}NPli&z<0J#(*3lz0u7pFsHVVT}h`uPR@whi{2Vh55EabY`2 zM##5a=(;{ka8lmTI^0o7Sh2=FJ zY)C;V6wE%(6x&7FZ`E-pmCk~=PnfE$6fj0**~U=PA1tU%I$k&{j!s-~CJAU^Z+U9S zGuU%RQCxR9kWs_ZZe}EPX#}YdF=Idl$!`m+>i9SVt8w?2*^ullFZS?e2#({9HYvWt zaNwG56=UTaqC|~K?WLVOnbA9e1I4hvj{!KUHpUpdoLcrnj86*;H?IxNdcCx3DflGw zPJYa6O&erunxWpk)Wg=K#M3z|qq)V!c51p%ZeT(GQH<29FBH}ya*PF2l6MY}*DhLc zSyGXOexr})EX)Cbm;m=fgiD<~I}yGE4DCjt4?s-&6!S*=T!A9Z)!$?}G)16f#hJ3l z%VugewS|@D>30yvd4}LYPlG17^m!U2FPo=@r1ef%QG7c-yu>v4NZYmu&K)qI1aPLf zokaM~DuA8J{0`74A${8FU2Fla-um<8_1ET{DreMzU8EKVUbu`h0D_hZPJ|OH!gh{X9vPYrYwnRV*8vry`%_$J zV}lRZZ`(9maHIu5no!=Vc%*Y_P+c=z+E-cpo_z06LX62ga@|3ep(!29ISMAo`O>Ii z9?IUofGXPHGYT|EaSooePJ&g2hWX`HeQ&a_ea6fYMC71_2WZ9FDmfAom)m@lkZ1e} zy#~cj-LR*qqn`NQkfN@UNV``h=ir+qeG9$Xsk|yV9UgH&-!991$!oYH*lRqyKR&y& zesnCnb!+|PrQr#ev#E8e?G8`M`pH&3X+z_P!gKzbb+`MLu~aVjnnzP;bl4+wW*biI zk9>HCEqe9#5AUe*A~6HSSHzHmV6q^4CYkspWfE{KduB_C?sig;{=ve>fy&5d?2*p3 z|4UPHnO%VBY57oO+gzLI+1NG-ppfWkatZ>9OQ1MQz(p8@drlLj9f8wDt#USRxCaM1 zZCV1nLJ9=LCd3+7M61$3X54oLL_)I<(@l@m(TlZXFb@5fwu}vR;{xb@sv%Ob4a}vZqTef zHo$QbNGnCOp-YSg+jbFMGrLv z#T>dT3K`5ONIi8v*ITy@n@r@cspc;K5=0)8V$fuRu(Y8qZ77O6r9y`d$0P4@<6khi zSAQcuhOB~6dQ^O*Tn7}=7sD@8kPx^(6k%qZoqa5#0|GxtUnK)HT<1Q_+d|wayPieZ z)8(!~JVMc?_wfyWZIep08w4v1&BdE9rCwlPgDe;TmtGxQOg#od270w>MxhLA3s8Y; z@+r~@)QU+YFJ9D~6R}7yAY}kgZV?-4uZkyW7th}S*v{WnfV)wDxO1khU)GW4( zwoy?OV#|_YE!YNsCp{b-o7G{Qt^vd@((%DF zNY3tdhMP!Hww2+ZOKjcFC5INtc8wu7v}B}VNTZx)9VK1|sUlIWPbfq^pgdmG#vw`T ztUO-wT8-$>QttIX*vj)0If51;VS7mC8MAF-l=%p`h_C0etrC9U)Tunt*W`x8{t$Pi zQCB~tn6dCIVZ){Le@ITB9s;nIf>e*s+2iUF6{pXz z;Mh3*(L>=8v1Q$}MA{b`t(3Rd2-K^)D+#lSH0l`1V9?!>;zwh zJ$v`v%8K>kdYroc?nj4IrJK`nhWDP);?}P`as7!$g|g2u$n5kmuh;CAtrKA(I3KOp zVo!PD`Q9v9k-#0*>jxgHTR5$*1qE+AJ@T|n-o{MgOONWMW;efkQG#apk(PnOvR6-` z-~V`Pd1U7ZD%7C_6;iCAxHYl~nmj)$1Q8ju;0x4&UfMhe-wQVaPr9*os(<}KF6koS zZS~Xd-Xuickzt#IAk`ll^pQ(+9lL2=pi+MY{sa%gMFy>7z+}~?Wkj!5Y3==fcDhg$ zuJD*T*^yjkaeF#>+cW&E;5tn>Fcc@&({99syOj!?0?mby*yzOSgV_-&oR39k&+5hw zpaiNLQxAiUGBDJ(>;o`?2WoU~C_MP2B^7h4KKc4~@lPS)wT8BAJ0n^%;wWIR%pOU1 zG4MoeMP%z(I9(Vlbo49`TCmatI(m06O^He!{mTGIQq7qf`76U92)x>Gq{@~S`ds-m zpUvmU5OlEQERM%xr+bt?JTJjpJqP6m#aTi!_>!w z)t{T2Yzr5`dD$DeJ@JQBQ9(|W$7sDfY%J4{r()dX6r#!k1rXaio zx1cAlz#bQ#fW&o~>mZwxw;D5VU)anQh&$g}sqX4Kpt#xje5JapLjrS5=ChURt`3o` z24`@kx~rcI)-9P&R;s(|31!9mzue2xd%h|-!}VA1U3Elj#TlWk)mLVXI3u*R`VOrT zXN0y^hm9R_NiMu5%kAf~q?}Y2i%G3LSj+Iy)HUbR1%YwSbtx6s#41aVoFV z9sw~VLV+08FM$|537_zl837S6k=_7vgg1;6YL9F&zv~V6gHs#E7_~>X2!Tm&fCWMu z#wWF#CB`bN7dYzS1!J4qD=iUy7#D@nAaGHgz(tLnC|ezMqDEs4W8F8$!^31cfr(mP zRo$;#m05NI54F7Nt5&Vb^wE_XE3>@nKVP*f3xhFqg{rSywJJ;22@KToUjNx@RoNE9 zg?FzN7p^XI)kj1FGMTG6A_!chcor^%hySjLQ~rv83n%2T_2I&?9=>C}J*)*6j`eW+ zdV5$4E*$IOJJ;L8T5#c54`QcANYZ(?VJ*0DtON0W>*-(=7kWdhad1wUr{lsA5Hno( zihv8zLj_zo0wRVBUlDMj-f&zvvc-lAUlDMj-f&zvvPFgqUlDMj-f&#lEV1FjR|H(B z7aSL^v_!mMxUi8ZCvc&!kDaI0+2ZB6aHQ($-1%}`I8t?W7Hv5$9I3i0ho*&@z=b1K zS7%6<_$_oiA~SE8FPv!&Yj67PdW zFIk-F4DzU+#1SZWrCn=Jbb2h&)}e7#K|is5OfdJ&JsU1re>l55$M1-;7m}I`5>eJV zPTDjtGI;SY-1D*qWv}^_3UgrBE>WkFyYO^5NFgRXd8m|wM@M80eaq(K@ZTrDoFC!l z=euOz`plk0{(nLjCwxxwUOA`*l$PlKC)tbEv9k@1r**KbCZ4`W+(nJ`WHIhhQ`%uZi zQ;iAj3Tw}LJWV3XI6hORo8>hrbDU`87?PtDEtA7ilUvq$s?7~`y&)e89)Sz^)RS>e z8;zdOUNyC~U!tW2I$7f5)=malgj2H=);TgYHr!QtZNHHQG~sfm)GAxnP;{#BpT7Yzo^+J+o$22BmYgNfW10X~$%Yj3d zwoI3#QwAo}>fXDQf|PH#d?&bkW3=QcdDlGU2!w*9icE{NZrXE(1d;PRl=zHrxhYMv z2_2dyL8!ejOszq_o9U7Dmu(Q!1b*vfNau#l-ls}k)Q5B$>XNcwLxc5F8S474$^^0U zulcIKDxFKLJ36Wq)j1nly-s_f-NwJS2CQiNSL}j;5EJ1JGghN_+yI+Tn~xvWzns+o z>c@^^v?eEisTZ%w-da|8$qMcSAA3)p!urx8u)PY-DS9e6o1-XMBpmuQ6YnVF;`w+y z>ONET77rG^;Rl!>XCF!ArtZ{jnNjWS)^oC6Q!I@vH^s_td(0Gz(fCJZ^97k=|4%GX zqkgy}$tds~NCu3@Eou~N$N{A2K;GOsFz2IfxVQ3c2Oe}3a($&(16Gbff;#;}Gt~En z{ow1`8Z2ac2z#+)Ks{{c_uj?s!g$G=-o6=-);FBh7x`NCdKib$Bq8iVrqt0tPrYP#an*h5W9eWM(F~i)i=R69)W_4O=Ds}f=c$)G z)lWFYGS3r#BTqq8^SC(b1d`E#lOj7qYkLA5z3%&8f9iqL=eP@TxN&dy)ZikH%thtK zz4!jWiM?Nb>TkaEU;gmXr|-G%TG|T}Yu&6EH-MdEO4#Ey3912o%DK}kk&W?b-TsU7 zt8J$Tc`$Q>{dpC=5G2SR5MwEMk82Rbg*#!|2tC_rM4 zhba-UThV|B9y8j%sClv|$IT<|f}Ho+yz?dA;gwmrk>+yE+e*Q8v)d>Z z>IldyRxu!MN7%K#C6Qr5W}&RO_bx#7rbXPT8H0Ej5IrEHg-GxcmQqCvTUMgb`m}j% ziKU!;mHprSN(Am0dclIta6;N_IeHUor4&+{pz>4njZ+MmNU=D2J*3SxPUyU8u{MPq z+j)51@+`+3+v-tRaA^MJ=BAod@BYIk&(&t7xys!eA!LeAi+7}hEFwCjpNuhv5#pa3 z*@2k(Doju5uSR^h!TPW&FfK9uRSW>K4BT170xP!uECuKM(Z*FT%*3Z78Gzi4EUQ3U z5S&C*1eX!XQ+y*4!1_1UjwN?z=F)3;?;%jq;@uR$!J5A6}^RO3y* z3_IMlEX4fG$qS6+a6B=ZCniBq+!kM9+IOt7B*&&K$=HHu zj>Phb0Yl&b2g#M!x4#PxVn9cD)ZAbn@R((hGd=>5)@INZSOxm;sSG9bFzq9C8o-jJ zpgwCCuhgPSh)`-G2-dZFAtY9-7eb1fhE`s^J4RLy#?#EA%jgL3DCa5x)@ubOktAeH z%SeKQLpbwOu?QzHHgV#Dn`p%*PKw@L*f4sr4KhYvKpP;V!c_nfjst?={(#hp8=LAO z$En~T1Z^qk*?5^!{?=pRw=5zHdw)~g1F28|*3rmy?Q_YIeWqoMkjZJttiG~Lu6CqF z8th27)^wyj$Vo>!1US|BaU3WEL<`v%WoPp7x-AjtmVL~VxO4E^KnazwEPB}J3c;Q=&# zt*tQQejVH%KG=0|(k$#*f_G}k1=v`lka&S45>sx2Yx(VFs&BW!QQv&8xee}=gQ@3U zK%>EJaG*B_8{FRWCPP`g7;Wl}q)0z4T?Mz>5un1W2~L(Lam?-D`wHzN9P&!~sN-Jf zBQn7{kO3+QV{r0ESoX=3_X7#EF~u=QDYL!W)o%6V+i?cq>lcuW2f$SLbYQ$ubvW&5 zuk&g*)-+!2c0mc)#zjtp#g%it_W!h6ugfHv@SA{)E7?4F^Dq>v-CWNIC@}`Ce ziL8&CM%3D4$t%|h-bxOEno?Y(DONDgXz>)AI(w~h<|<%yD}{m`Ye>e915xPjg94PO ztI$PMufKnnOa=UXL4sQBGx-s?$Lo*4dvuOf=h7obwWe6ljvZxwe3(W3{h|c3SO4v; z<(KPBy;)+awQmi$I+*!9s3m75p=8N8!)TN&a06~*B8=yc%F6Gu46rvQtt%c*hqmD& zY7rjO@SN>`1=RF)i%PwuoujEd$q%Fzpzi zv5}6`Q(dANWQLePl?5q6+{XIC$d=nKBD8H1wDsTGPcNFhKx8CE2SaB|#h?Xks)8W- zCYvyYbQlyO^At*ENFj3th0GNc+Xizgc3`!j*ooDG;%YSJ6uZcGNU@uQXB0}Mu`K7w zcnXt{$_0=+2Yaw_Yf|0+^mRa;gc5eTk$&0xjqnGx6<%pt5m2hPzJGIZ{eVN}XpfB- z#BvVNQrg>W$v#e4Oe^yn;r+lB*!yT2TD-s6-e;fmzT==)^_Rcy?FT$$?@N2l`&;dO z1UtR&K+vw<_5puCK!Uw5e-GZ@Y40Py>3xTcPWAI)JOMoHeOv>Tba=PDZyAS?9}UR5 z)$fJ(gFI>PBe=@4NRn(V57{-;fs2g2>eQn?pddF|1>A;asPGA|00mM7muqIKFNPTe z;l?W9$TUlZ&v=Ddui&E0Z1rRqlG1u0*INaAtE4>of>$s?klDS=GD`j4&s=7E7NifW zfCM#1g(tlNoV$kP(#Bl%rBgl!I<9*l76_9~^?J|C48N`lE-lPgzxLPO10B~D2s~P# z0{o3u3BFquTv}MD?t9!T1d+jpw9qHr1rX*HHh2Y>5jIq(!Yb8*LYWK*#Y4wXJ>(S% zui(6XQT=LIrJCWVLJ<~bgEqH1`Sf+v-cUTzs_4we9greS-g^*U#N`znV1@tl=xlhj zp?UOE;n70#=*PmNn5Te>_k~Au&0F8+t@oQJOa5fGdGcNUWTtuYt^TCfJUQS`6agPb z`67RUW;8wt{HkIR!#iK+@4&&vCxq*1wjk>G1Y@S2NGCxp;fczud0~k*f>m2 zBlu*DB*e$QP)gBuVSG~h>qEoVB5Zak)YQ~NcCkhe5dfz6@1P1$ z+65Tk$(VOV!$M{_Yl0S-M;WPGaTY1F5ZeF?0t;Vu5184>bIvkX1?&?kd~MG5^P?G< z5?WEW0F1x_Scw)SbARaqdv)3aBPyglsELV>BgSUxs=8+MI`p|EiI`miB(3Qx}gVH;d^Imc24d*p&@n02&ep^`lm)Fqa zir{APKXhr-2#?R;wlIU+G=o>IK7%`^&HyY9_Tv>6-=Gq@wn;MMgE zoZ)L`@bhyOyEDc+8T{W7W^jjQz?oHpE5X0qr4*@dM9nc;rgJiBYGtq8*~fHn@!j=}&YXGEoA$ck5wYOXofP){=~jMG=) zrV~xic7f$Y&wsm?o}HtOJqLc)j1ua(wL;G))28dzlu4f?7x{T7?Ywd9I&j8y*S!_G ze*H+-y(wKI5}dzlW4RHVe7ys|U3Xnf>pE<45xYEv zI$GoOXWP}q6H~!JCXMOzxtvSl zWU!VQ1-`I-*%T)8zLd#qT4^#5Oio6fR&V{|vB_LgPv#40bxAWBM;t9TmkG6m?KoLu z4~%EeU<#LpDLmR?3YW%yCqe7YlT%Qq)wyxdx~!SPTy>c@RU5@JdEB{Cj50IhSeb6m zA55?1f0QcK$yRuHWpOD|k8cyT97^xxS10Tp#iKTp#(` z-{-1Wf_N~Vwac0B>n=}gKN2w0$VrmC`6fRv3YkJFq$8!^!k6=@HG@FvnsjAH0y_6k z@Dsp$Avs)ru|T{DQeu5w^OzyEX8Wh1J2(f8$nD)R7zxRGV~TFUp}%%awLZjasC_r7 zLy;Ukl&y^kde+Grwap%>Ep!zt#*uMa)me~P>drKYP^an41r#_5brwXEriORM@<`Z| zhDbB>bB)2k#);;X9Gr9)B#gSUzh2a@yM`1kwt5OOME!CqLB1daFi=xEvcAG9#@xMH zboCWv0f?yMYOUY0sX6~2rq;NEgc`P|npWuA{E^vQG!0>Akw5)i7H(`X!AAt3vB3oH zz8=ifb#_)h3??X6n;Jr{=%f&+ZK;EEvJ4tNn_$j4|Ptj9Z%zY}M(M>EwhM z*Qzxp-`9c>4W}hoPrY34=OdHPSDn1=%{mr~C9qvtN0qpO=Uv~p%lQ2pxZp~@?%7v! z>#PDHxS;*S+PB`GBs^@gN~`S;fe&LxK~h4ME>)ZU#h{(<(SFShz&E~etDUG}c9+@y z5>YvEV~OP8=2XDUjU6PDvGiJNnA;HiRpe|FdWn)w(D!z$h0$}W!Fe-$sN0T*`mlid zaC58y=&>*`>cpTlemQ>hD7!&?&sZ1S6MddaywJXbWx{fd`d6OI8q>-49jtf%_|fU0 z3NL%f_f7vP%!7%KZA7)<`$o{p#o&nQ1=@fPod+Wj|8$$DHg8eDTGf*#1I z%65t~LEdvd;5;VQ+Sz;n#MZi_8mqri*EPn6Ol2l`gx+KZec`VzFO^xCLzLE5sV=rZ_*-fs45N|}#0W7V3VbSx2 zBEWj%JQt+GZRXXMgNuZ$X2-x*T736T%CHx<;y&R-23$E3YKv=tHIIoS2qcg*PoPgOTFv*(lR+{H=jElch4}xJ+#bzz!<@kY#jrImpqBN zo!op~vOEY%6i7Owz;k|8Z4WJJ=}G>NlanS%N~rtC?1)?vs&eV!H@x27BGSx!6IB&- zLE3|>!b^BfqMabsfpQ@<4<80sEFT>Y`;W{m_r(}Fb`5fqD#)-Jhu4oCh1}&R#=YW0 zbieqY^BlXzIsOUpqB?iFdq-da1cI7GkBjHah zpX%qgd(XECRo?PGOT{}89qN|pQ}&u@x5QrRA|sG%)=L^TDHpi*5ckvV zxS2Kf4{fe3n`^M>T9^xmy-h85$`zNzY}^P7Csv%s@zJMIU*PEm(o{?yj^aC6x?m-> z=B7*(O889ll|~88jbFa~=J{vd{NgTWr%=MLpy}sxk6*V}R~Vd}2W8rUGj6up0-mX* z4wfNp_Io944~*)fT+tKK`ly(r2$x(Uu6+LsK|1>or1 zRxqH`2pzNn{-RA#H)P#?9bEf#WSA_sct?l*taxQ3=Zwt(orBqYDpvd1H~qY2F7KSk z@9Ey_Mwx}JiMZ4<{ors$SF8-@xfA8ca6|R$untA_^gTE0-jtsG)aR$A>ih3JbYz~e zoxSNBhO-uN#s(E9_P$OV#iy6H_S}%zpC_&d8`SrQJbC>$gSKXG)j#p&J73E0v{S!y z=gaL{YYz5l&s13d^2E~#^+U@EFX*z88Lnz+df=6p-UR{?K~=NU2Ul|3&)C3p%}bg6 zq&U3dV_Vo_xe}<&|7||=)rl93JaK)Q{j6?x=_~zh=)kJ0=5S7;63xDC$Ui^p1J`14 zHMga7sV+LEV1WSqO|l6R+7_H>0l=dX1&&v+qf$yYrjQjLj!5_UZg?-ROLR zbp#sr-1q1ZH!?iVeIp+)@e(>zC4q=!dPwWz$nY~w?I;)gBRr}bmUwsl{ zuUl^*@79a}>$UgY9pEHfE_f$xC%Dm{^OuLMGjUBGJ&luX?@>0SY@HdlPV-t`J^7p7 zRlj;Xv@RPLqo)tVM0>XGpGF%OfP>k8rI7!L)keq%+J_UZjVGm;p}_S;H2T439Fld%H$ zrw3`aXY^8}ez+8g4bsPn+mMFIPcq=SMcYGNi!_+85@2&)`}x6<>y9G4Cl5pjDX10! zzkYUxh9+Rr%uCJdZ$t&^vIXy%z zQ_?liAP8y$lmP16v}SR*iLOXWn$FMkB{PN*GhXSP%LSL8v;NzrhM;b16fcN(2`fo) zUI}m{5_PR1sEq{pcP=~{$9vC=1|#TR0%0sMcyTmLaITEtwi=wYy&4!?0{HP>?E>};%XxMD0cZ(+`EbF;==ri6Ro~dNSY75RmDmrWJb@Gz`Y6&4IKLc8*jn zCGVobJx8k7Wn2p=-jENF2WwfPLsQ<=9FN-J9123l zc4RnPwT=%}D_c5T%^qc@O#`43g1W#oD3{d$O&vfJhe%K@9vc+Z$<$~{2f8w&31S-1 z>}In)BlEKh6kVy{XxmkGn`~dU>{|>}iJ5lQ5~W`hq>z z1h>s6l_gLD-!a4L?jsV>)4t|hB?s94Tw#;-!j($K;SHM(G>!@F>HZd-n}!~_DP@tY zKjOBw;d*#YcE;_(skL60#%E@}0skRH?8-tX#f$W%>Unw7iwIXhYn_a2H z%2|J)0ga?F!fJm&5wxv?4;!g@vK&`ymio;3*~KhbOrqVim{Hvgyv`_tkS)0li)GLm zhKUvN>=JBhhtD+1%5!TPaa%B*#jqeH@8^RV*32;n%*!9%gY$G%9v#fbXGp(-a!W=> z!TC1mK48!tUqU2MMdCvtawl#(j0+{gQ4j>$?uw%F|4NQ0eBfq8^ z!6axv6$k5J63mUW0uvEhz=Ua1M>tADV1e06z{JQfD?@j?gk}UL3cE;aFyWZ!GsjEd zAGVl%k6^-#ty!C8+(3Z|xKv<5haQ>9SpwWR9R0OcFI84%rVt8OMVCU+2uQ_~F zK*4rr)oeMlI5f_eTneD)yV$9udT)BPoLv-o5ctmQ8*)3EL8sQ+Zb}0*bb4p@V=wYE z#sjdD_QY&!XgM@2vytjeP0b4f_nu$_N+CelwKODor+NZjHLe3>h2j+Ci!zjP1_`$c zv*{Zn8X^ieIwMs5*S~mPaR!@*W7O!xSjT9Q6+{4;1%RZhawY)e9JtXOB@86_1&|bF z13vYW0p*NIDeJo)DN&jC?iI^RUZxkG`dlWDZDuUmDOwfFj zm4-rA8j3X-q#LgM@q|RxQUV7zg5LSu2r!>XEes$iWjG{7>S{M#cAQ?C8^Ld<)&Kp= z;Jztt1cB^SUp)2PYcgWTs^7luwFOt0VB9tmP#G8AfE%KmZ7he8rpmi zTrmh|?asbLw+fA;X#Egq%E8J*ym)2Y4?(KdG@3`uvtf#=H6F!n*_a;!`UR~OcF_xW zM1bVT5drv;TPhH>i9*`g2ojdfs!IA_J6{r5jc3i5Y=I%`=6RxjEAjhij;tqwx9g1L*-HK$xw>3yF5j`_F4$QG?i*pEk z=Guuxl*Q7_wG{V05%mt&f(r^#gW)2bld|vU-fV<{NjB?`nbMr3A`6IAh+=S1Wzv=> z3(1W2q*rB!jQ(;`L602Y#oBdT$DQQK;(4<@85}7WrPE{wrUSVM|I1Ph5%;X8;EJ+? zUEE}*wq2gkCF`;VoQX5a_b>?FhOs_8oYQ3qaDsEwEDMYZOUdDKVfk$e5Ci3Mrze@| z7?QFWIZXvQYg82KNjRI69%l{hX2K*@fSQUxfyagCUe1{X|q&v z7GWIn4w<9ibuRGrmX+TmtfyKgNxJA!q90qb8|z2iAvD`Ox8(17E(`Kp^L#G8FG5UE-yLip7wCkW913)!U!C&UP8MC&NeX z&d5=a+@3|bo!HaNt^2|h1^2g9Phhg?Dh)?k^$!7<*0{VJn#TEQ!%uVT1H$!WN?)+v621w{=(#WNEG;y1IgU{95J#a?Nlk} z0%YJpaM-e**7I~xrtz?>XBwm(n`w||s&gMB>5dSCDJixXw_JVxzJCxNZRe(*o*Xx9 zfJNCm%b36co=ohl`fNyE)Q&` z1yvQetouerjjM!N92S@YP|Q+A-fYCr6w0JE%*-{80#YUpG`O9~&y;Us?_%A}I=b+6 zkEdT{r{~9+N<0OqoHOU0g>Wv=yDrXXF3jlM6zOHe$IQrq>2HBtX;)=vppf)JQLAxH zaa*f#O@CYJR8H!K$1|)2*UrGdY|Cz-Rl-@3XNDay1yC^IPXr}xm-|{u%3$*T-k#x% zCH&DLAEI{UPj=HZ*RYWA2Nkbf>GT?@-}u|TX^|7}34a!21BcKr`EIPP7pktQ|&Te(VdhJ$fXRP}F{{3~;N8kDNU>?9XsowQY`_Va2z8j~5RseS)MLj@5Q&T$hUyffl zD*&k>r-zDH58>Uc*(DM-Nky+N1cV75??0AG-Ncna`)Ny|-!MMX-wF}wswcJZ0FvAO z{#Vd7<^x}C*O*6ejd{>rV;=k3yT-sDKl`pRKb6CHElb0@GQYAN)D##Mu*aGhl|cM~ zVd64iRLb;SW%BSn!;WnJCyQ?f=av&}%VSBg4JIiU{Bla9Re=E)%P-e_oY0(`iCIX0 z@cwqSv3kp?=U^ecYEUC|B&|qSL14z3MTn~a6WWO@BieAxzz~?yCvo==N zg5(~5(K&m8Q>qJr0jbQ#W@}bB8eyiyQ zROCwJVYB9Kl@;(x%zqp8${P61c;#4jRni}J&Jlj$jH}}CT8qO4wgz|*)#n>z73{+0 zR@?>%R%wwfjw|Z;X0A@zwj`&Aa5xUn3xd8YJOYXPZ@Mzl6kar`226JC zNX((9q_uJj#zRkZF$*E-l(Wk_8S4z9LT4f(5FI(I8{_NDFGAcxo~61&l5t&?px)E1 zmf@SOqintrBkXhV-`fNV$0x(A+HhQFsO%`}QbOslJz{kdRu&>=Ex8#;LVUW!9arBg zPWvDxLOm+wNN=C+>FJjTUDuGb&&jFb@ zO(cm zC~zUdYyr=SLxvlG7(3Rp0ywx5F3{5ANuxi^-!s?mc}1cj_8y}%zBt8Oeq>mDQ<9uK^c|(jB)MHlS&DbE_La^yYzdhf zVb>7f7~C+lDm!1hc$q`Afo*;e9!`U)&~hxwbOHx<5QPTp-A&vMhD8YodXLRv^-h7K zb|!{Ix}E%cs}%Sa6ji1EUHYD-W0cuVi>BEsUZz2|ZII9dE+94LjrB1s4p&$_gv!Mc zcoRP0Crz-(C=Cz6ejPEZqn#**-}P^tusbp7`_|dv*J;FkK^hzhKEsyTi69pwi57e~ zM+So`8z6E{IE6X8;#$WRbMti^as`d8RErBROea>h4M(a|0L!|PVveJupG_W62SB0; zT(Tf)T>%F~)+$9I5`YXI-V%-bYtPWU13`jNcy!RDd8gQwmHZ}u6^f0!CeohwKQkq4 zaD=DO5)RmBqdO`@y(sFiK~v*y!gg{V0VnDe5@=F&GUYPE;~)yS-<}C1-6QNa7nk$_ z;mpI0_zfmn5k#@VBFmW-e+EM4W@hDXFx=c;LOUZi+Fl(dc1v^;`oNdoAkO&@fg zHDA2ro+W?bmU@3BaEHx3Slv1~%!nhr%~0IK3Ns9zZgPSLIeSNF$J&h3(K+D5K3AXk z<6SmF{lh#^FDo|CN8+AvVX#3v_#6&_ZHvg99uTIDo7ane6{WW#4inr!zbL8M3 zbUY*T0*M6&|MSkvO#v;$WOy3Cgw%^5cI`r!&V_3@pUCWC(jj$c@jfMa3#og0+6H@p zR`q3e4Zdt8BI&0nY zc-7MTTdZP;LTXO|=FgE+uG#VS7%+SG$uQcGe9}k5_2I(&H89Vt0hr^(O1H*)l}088 zp<3(2JT56KeoYe#aY;6@Wx)LUF<^!%{TcwX2TJ7*%ppdqb0NU&c_afchdh!acic6= z475%MX3qo}fVs{DX~0|~I018St-$R0AOo%o`5;{r9-Nvwl_zWzFo$f7brfMzSriwj zu!Z1c5lSl~W>40b6@Q|9oOQCs<(T;kW0<)&2FxMxqLYz2@uE%N{bg%l?ydotJ@=v} z77{OxOw3e&u6mB6jL|HR9B##ctuonii zz(oafzpKDnQh^1ZB47c!jc8y4tWEp;d^=rH6vLT)Fr<7+>`h0Cm_*_G#dJz@j}mro zia&iG#6nc$R6I2A)V@R*J9Ze4`yn?^Df%m^?o}m8wu%tMYfBn6=XJWqhRvF|`;Q_U zRwL5Z_FM~rGnK*5!v?ESKmM`um1L5b*m3|s)v91vME~J#@MZt92}s$`kDWZM_kYf z2jC6hA&q2G{51H!#xD+|c>I%>3sdJFom$yS1 zo}aS^q@5dgf$^p1WCxY48>&{%B8L0#e|}&A1^C~cEMotIGhwKT{+6 zc=K{Q-n^_EQ(@*k>)Hq>Ca3h>k@b)KEU($Um`Ez|=H<4T@0**KBXi#2=H;68f*=q8 zsn(%y^=+C{Z^q4b(6)tvSjsoc??jjnxhnnAoyfxT1D73LNgoZ-A>J(XAs!c=3d3N3 z=vRo&EV67oMjJ;>zPa`@GW{4akqOjXVEApwQDY(Pp^YKJepJ9B$XKPIgSASr;h)V{WAwRj@F&dPsfe?4YHAJ(zV>DyFr` zcqiU73Gy*Hq_zT?9<2`Yne`waqI)KsV1K`p%`E4tM*J4EOK?>bQ-p5(E`7(gxaxIO z=q4!6CGj-~-2v>rE*V-BvN*8B?X8K(b-2pOq>rTfFJDTEy9UtlnvuzBn3C{~1&Dj0 zQA?%`wS$?w4apg~OVEn8AZjC_lCx5hoBQWB?Wi3n*Nt|A+d7ME-l$x62S4T%Wswavgb%@Uy zX#n>SaMucV`GPm9N9vIV?IV3;bfh))04KzeMr+uCap-1E-Mpod z{@8ztYZ|OvP`k`c-~xswMe*8oUO^v%_A=^2qT8$GzwSRh$S%9LGpV+HawPKwG*Tpl zLVOg(q=g%^Jmv;S2=2gJ28;T(6`d-@HgF5Y4sk!*NqMnF-*$nV`L=s-g}&WDP!YwA z1dUPLLM#-;t)#=CcquM(6fY+o2E}cIi&fk{*reiBgG*GrdT^l9T6^(pq5CG@^Z$r*fqTXws#Sso+wa9=M6_(w(n4Q zb(xjaR5+QdaImbJ3I}fJSjaS47)6}HlZm(?r%7f}ig(E3sdr8GR)sZzqaIY3?BWBp z9+=d;*JLl}SBjn&x2m8cNX#|aOZn2-p5HoLRI<~KxD*B|LQ#YRE zc!)3AAeQId(*qWc{t0G)Z?^nwK~Ijl9P;1tK4!=n3*>dXI9tXeLB}( zEsn0n6&f54D~E?L83)J+W6ta)!Uc9cIn(8pE;4jP$-T2id?1HaTD+xJcm>}Jdx_yL z#?IU2;#r{0n=rx(czYZizEs6ez(mEP6$BUhU4qHu*ecj+LeGTjne?t4T8=B+&rEY@ zW8+S8bVqW{W0_Y&pz53{j_qwaS{zTg?E{6KihD&Zaxe^{RmsZ@1?+ZGl!~r%z6d}S z&N1rGz`9H`S0)$nZ5%$Zpfv-+oRQ8Fk5=uGP!P%7FU3US=i#zafQ5tT1279m76%va zO+dU%_$DwXsq&VnH&_5bHmHKKLU8CVT0C3=waVke8GU)VX>o|x887IR55-dNO-~5M zO2a0X362&m`!;bv=@0AI$IdVAk$v)l|&U2(UDn3b2<4|V_jkrpqus>6A`0fk9R|MXmgOct5* zH$U3nCA{ZTyTqrqz_2o}RnL$Cbm}<{=c!U|DX%D>d(ZHSyP2zeDcR;rSy6y|gNMRs z!HuKWdLr3ApIi{lYRev2FSfl(s3}5oTycp3J}k~TuLivBkz(Hv+41N_MDIXNbY-c) zyMPMx33_0-n{eqvoUc-N-j0{S7%Qc;-VYD903iw=(%rW`L=pfNiJvgn0F3qoL<$~Z zSm2MvZ#ITBB1=tJJ>4qv^l<=(&$m^;r$|P3@xV~wKeh}rkf-hntfxnY3l8QCT8BY6s7A77X0F$Bq9+=a0Ww0S0kR%yRkR#|u6#So(-T4H9vt=o zmv9{I4W}(mS%d<+TChbWE1ju|Ls)b;Ez+@!?2Y3g>_2Vr&;}q&_MePFnoogfxHFWF zhl0RFc7FFcFeQ)-KU*9R;oUZv6E3oi2S7OHQZ&|SV}y^i1YG4F-(pjGOJfskYkGc` zW%EYjgVgg{IQZa?2Qp6SmV28uk(udnP#Cc#)h9U|mumU?-VS*0Q|a(B0EJJFr(_6Y zM>aFdgNB(MMq6wk2HtXJU>2JUH*2YvZidKEC<5ZLh_UnXGObUfBOz_I;py6GjP(f` zCzgB`M`uu!PVQ!)o$nyhi&&l1e(Vvs$CqC44PLUS|M=jd>dOk;g(Xs-q!t@=0SIln zTwo7#gxZInN^-&c&Y@|=?K3C4SOtz>0rbcaQZ~pFAIEo%FlBr+C=`U$Z(n-; z<#PK{_?Mo2+3fwch+3t?i)ew6G@A-c-5@PDYlnz;iwNKdJiPD#Jp3l@Hfm1s@R!J( zcG)#-IVF(!NtLYl(IKMu<92v8dm~DhfNU2QMS5)74Xw|Owt=^f2#GW_hn0CS1Fg?g z_Z(5AH2(79mrCvX$f42(4->$otDcp#3STlhl~RVaxs(|B!;YCZ@q&f9huaJ}Z|+05 zX>S4|3ND1fdo?m8;L(@O!?=JgRbF45% z{){yisd+9d@LX-Ywu>`%v3BvuuusI1?PmpdX=qz}^4z#5-SWAj{E>%-M_}2>_;nN4 z69no%>qv70@TdB4foi;OoNv?63|Q{DXF2?Ek@W!S8g6`}^$3?D{AZ;9dEd(U*;qce ze4cRxR^#R8X;ceK@5c7pWM_>>c%E|xI>s*Rgr%w1rDV9J*2N?tUzsrYvRQ>Ptb$81 ziyGQJ@CF76FGh})2gpWa6Rr@&x}x0jEy`3^r>L3(3^i>j3n|G2&N+%(w%|X$Tt5o< z`T87tQMfhg&xoeIAus|FD9i;FeHuG2{bN+S`CA~jR0*Q7T1xFua1e_;{s!&@ht696e;#x9PwUwph1`0Ai z+(>~7$}JQmvAUIFqr}^`l32Z*;$rdJ?Q+vK+3ggUT$8xiCPc2GOLC5gx)r8b(P7A1;gJ<%0jS3Y*cX z7M?6qZfZf40||)72&_R478kR@>q0>-ToTm6O~`v)!_~a67+}KiAX>R4)GSF9fm~5` ztl(6XIsbf%BwS&5Wo^hMzFHa=@tYbFl1xHqWLCKl7++_BIWE6 zp~I3aR7wA-Y7EZX&l&rF>v_B84tTK zb+0M&ml%`hN1|bBbC7|>3c``Sh8p=xI1}Q=7(#b2>rAIGhAy3*U&3UBRH|6gE?F6K z$-Z&7aHJAQQCNYjnC2kMVVa$clAeW58x|KoT{x0qrUS}51dzkC zmwjSXr9)$!#^Sz4J-UL$lBCiE&%rg>YlhiP1FkjT4`_zA;X4%G>M1Qq2gX^hBr(H! zEe;h2At()@3sGr9o36ERCcj+Z%;T;-8Y@b;Obbc_?`6c5a8hpyMM*6jVJV_3Sn}5% zIV>2pH7H&%sb+tewbvNYEWbTMIK?Y*b9k~#pcrp6W zoN`uxiy**?E-}E44G`T7Hc`Ivp-h)7-4K}LnHbS6>epf@l_?X&xH4tJYbaAD$E2i? z5uF0=VjBhAg)(JgeBT){|JAI|*D~?pv*rHw>uGiN|N6V-{`USU?z|(!8UZUAa1unG zIo3|IDdyHftVhD62>KU$E`@I;6@=tg#p=LIb7iJ8-|_(^K(_due2_(+Lv}}4HQaD9 zR;rS?2cSQ_3Ll!}ocs>Zy5+_{=BGWiXBiNik;A0iZvMKYL^mpfry=3 z;pUW3=oSh{D~=|T3fRMg<|#7a5WhEtsHgkvCtv7Xc!uwJpxJ7J%2Hwpxtq1BWs>C_ zp&QChz4zXMF`5>+0p5`I!#K8ZcOG}|;EOjka-*d8Tv(r-v}EJ8kk^uClew^Kf!LU> z85okb79=I>y>6x31ike>UGodeZ9G|0edH&5)xX6O{C*}s#TC$|i#Zdy9`}3L`geZX z(yb-c5B>rlB)vTGMx-a1Bc&7KJETMUSmn8O;fB2uAhTEE4y2-@RdL)l1Thul9A_hD zi#J>xUBjYiNzD<@f7lnRBO3asQ3GkH!8ao#7$a)@ z=o(H#un7CUcG=gi;Dv0Qf)~i0cFQ9(X3VCH>YeeET%vd*kR>byp^e%g65%JHzeG*2 z;c9}@r31k)=DUYX%hto;Dd{IVF&((h0pnsPgcI1eTv{R6x1RBJtwV$=d4vKAcH4Z{ zPzQ`R-$_O%LI?xF%lcVbJjZe{`Z~@rOwl*o=l<|5^jl%09 zZH8eJT?h{^edFSKQ&q<$R5%-u+CQD9DOpS6U!eD`f4r+qNJ6hjSMmkTB)R=bGjsqv z+%!zW9jZtm%O066L2oJUZ=x+zhm1AAH2l3stWQ*_x)XT(VgF=rxuResBn+LNwwXe_ z2Zay>g}lZn$d|5yJW}Ta0e4H0@Cko`D8tYKO(bXU?*CnS8^o~c-<|sL;Z1CoLqD6w z{yoMsy${;4SK%wj*$bwCE4WGGR=Ya$*r|<&@Fzql9;?ewYVi;f7HXVo_Zx7rS7tyLNa4} zPV(f<-^!IC}epI&+7=y^TAf=aPv(O%<*)(lrWnuu~dH>wrQd*~PFmPZ8p* z+HIs#=n=%pP7XW!=kt7ze$i<&OiDZYrt|!)%~36vJ}ESqVWQA+`7hE@sb6il6k0gm zP!&-xe%>lk$39K2jlX17!W*kD1psSuJv@`q3;{7}LeWx(JwTd0)3hP=`*Bdzb>=+E zSrJ*1K`06hjacIoY2&yqaDg*32vzL^)OK41YD%v*fxuT4IDLR&WHuzRT2%@e6Iv3X zxKJ6B*%B+OC5Y*IB9^kOs{P+gm*-R+LG&=b!T`qqo)^)Z5W$h{k)F>{bZRIXR9w7o zZVHMvoLjy557@^9?0E7IcHutbs{He*;tX727}(4>Aw#?UhqL9(&In2yoe$0lH^dZF*VHk?bcUt+LY)|#}k1J6zwO|OS#aF#%7w|yQFtmsJPI5H|A5oIgog>VK zqP?LhoZO7RfF!dHd@M;pC-oD@i(P=q@&$&ZdMI>c2X0$-e>$-1v=}rWnT!qscmvFZ zcazOiahCVfp`=rZdVTqG)Z0#*~dziu_?-y$LguN#Giytx>OmSk0-r_kd81VJk;xf>OvH7=uZfVa73% z&{|9oo>yx zK<@*9s# zD2E!LQE=grDZ*6Nh5jm`a*lwjK`gys9apn8^Qglc|&v5F2~(TZVg+0EoQ|zO98XPaIFoHx-s7cz77#$1Mu^roxiY zme5J_22%uZKqX;ELtZInXp0;&OWFIuGHEBIS(2DU%9bP~k%~%%XKP6S#qlMXg`cK`8wxyU_|y~D6|-~tTIh;;E#j44G=`r-341E6-u{2u7IcsfoHi2|Sbj{VvH z)2`l^RsZsX&zZVo#vlZ7DXaeQQ&+$NehG2i4|Rxf8a34a_-{@#)Z1AXZhHoXda;%z zteFS~;+c+@+3OL+jTMe3X_G0tPPel5@_^KlO_8Dzeu9GaS1|_(pb$Snu?E(mBXcrC z+AqN}7lCKBm?S!WrzKA44uJe8ood-W6woXOliDcuo04bwME zGorl-x6F+imQ9Y0#3XYPE-qJHqNNc=!pDg&+kU+c1Cg2FUh)FMP{>Noa2Z<9;sn$X z+(53Hw)C)Iwh=5JC{csZlvQ1QVQFCPkQ%VzGkvVM!|vIe^+j$)UAgIK^O%fTS-o}> zcWH7ty7mBH5v!Z7eSPLwgAe21B`OR3j==|*_6M?6rR32=dtPRJbd}7!#m>Gku_KRN zV~Mqr^MsE4K2~g$Gw0cjrpNQg6`bTgSjVG_tZG`kqlH87=vm`wQl&H@=Q*I3US{QGPzMG4=lwdAd5ow1PVoQQTT!;=VgN5im0H3HKN=bC<%@!^sDtI>oQlF=`Py!~$<-R8|)|yAC#(!6h8y zy9G`o(hykJ?w+I?f!qM6_F8S=r6LWR9Uh!iTuY>myBkxM-8TZQPk?%QQok*YSvl2k zc*D1IKie5lLB<}!jBDk($fd~8Z9bB;eMZqnQd_`Vr%L>6V^*_tYa^voV{wD6py`y! z>N;T9?~Y7?4w^cHif!qGtTihQ=Y>wAeT)fct~KW#rm9}uZQo>4 zUtL-;1jb1zQs5f(k{b_gAp%g2lcG8#PYU2722Im0=n~PHy^@&R7n=;@cey z0kS3qfw!l{%lF&?51u!P_+{kcD1;MD8(J>9j`S$H4&yAg8PQnC09jc2cYLdL%m`tS z+8N6)I_KD+-JH{ZA*Pu!SX)>gpsSEgZv2j%)Tu5!gjUdg=bz8_xx{Um&%sFk3frZ? zE*PI61jxg{E{xv0q2Oag;O)5dVYyxtD=~%#+glUuzxW3BdLkT$NlBWV@;Cwc^6QP9 zYGquN2kO|#-t;RNzdR}l{c;k9+bc;w~;yNTYm3QL2gfkLy9DD)}ST);FEDIBgY!P*Ek(wQRY)|Itx!Tfx}^? z^%Xx#X5lx_GXnq>pbFfO6U0QY3Ghz1dVs{~UpJZP2noPD95f%2xPBi}#P_*G{086q zkB*nK;zbc9H;6-;IPJNLNU~f#!t{z$D61m&#Mm8F5IPo`(v5Ok;S-jtTQEc2;!kgr z|GNEtyIk0%M9A%{hcfr{h{Alz~~mw&+e^0_v!1dN)ia=Cq9ijyZYp(?cTu7e%-ZE zeTHYu*&gqG1Ioj5vV+>IkNxmKKTzFRP(7n72MnM^6S^^;Yvq~}9*a)zuE>H!1RYjn z-Y$T(HxgmyugKc7n4G_nJIQAh?4|LYRsNKk_Jjr`zE1Gh~lIK)!t z;6S&Ha$JQ#3>oId2L@6wgGd>$TGxAri(eUtji%4~*&vuFQX1~d5WzOM;<00=tU#Z> zOnr?VLamDyK}9V|kxRUDrhCVe7w_Wt4x)5qDeoZzXsubhIWd5Yy-`|&B81anG{hIR zgNF}aZGnv|161u-B}LC7f?X3`W9%y*DOxJ>@-$;mj^B0@-kmvA+1jZeTSeM{;n5&?8`fQO!|_dHVgb}^%j@>65w?#p z`xBY|2yFBrGyBa98Jh_H#@st-y=oAfX^vvcV0N??ok@8~tvMzY+@`7At6EDSvz8=U zjXqf7WVw=-GrVDyZKOV56TiK8)>{#{nzOoa` zX6vjP6}1$CI360$V=LJ_m%L@q!|w9F1?HjH_vbV&LxY{CBrL9c*}Q$*OW*gD*|Tce zPhMx)I7VC(QBlU3%B`q*UB5A^S5bfs%s092JGjl=0*h5xlqT>r1o-;-){0L*D z;l**-eqFE^1+cav{Qz)8KO|y^jJT(Mzwy+Ma);-C{JANPb#o0#5ii7gi4zybonl|V&D7c~H^mX48%s}j&R9(IxW+Uy&K;ONH6V6oB8n0dF% z>m3DL2vxH^8VW{2S3E(a#C_vK0Oz`$6-1`vI@#U0{kP05SCemP)(PyPbrKR`mJ~vD z6jGB@$Y+%zSa?~=^Q~d9ID*$ei|(w-;n>Wfqu3G-1NcwiMA)NNiTQFF`ZANQXx}oB z)&}5HagYWYN~&F}*bI<`>4njR+L71rQ}Bj$70(@aJ%mG7TQC#xUg6@Bwl1+?Jh(~V z2yQp4fg93r5E0M)e5A!I2ek#)Os(;tG8@osJTAtcZPL($$1~h5lnp=#wsrzHdm`(l z6r!>+WYrT7U88Grv+7g&peOIu2Sgp6et1~eJWSY@|2WPr8iG@jiUvJWG`aHPhhvMU zLyH!=Y)M7=)msnCCJd{*JChPp`%R2-d4 zB58Hz{wu0WNa&e2X5n}uSXviJ((1`CELL56E9h-(0C9mKz*~a9GvbLMQz%SvGNsi< zS_$WjRzoI;>eTODQSG!=12aF_DvH#w1|ICMR=<@-1M_UJ+ZzbdMpWGH`HZ*Dt-BCl zwl0`xpom+}Ww=Niq8+$v8?B?OotqV5d<}C&=wsn4y zP`z~vBLj|L<^5;ZTE6D!-|R158rba8XZ`dZsKU zNn!m!G*G=Gxz@eQAsuyg*jD8i_q2jL{6OSomKv=RxFC2H*&iUKKxB&=EVjB5>RVkfLBr-xD`tX{+_rBv*& z5}crt#7>h>(LlF7ZAa3f+cKh{5iP$GO)$Yk(~KbrD&4UY66g1Sp7-5*pO0G~fSp;B z<}T_zXP^CkKkxJXJnyWs!-o5K8aa zKq1=$g=z0yB;y;l2R)QXMxmfu3W;PCJID({aRGTjD0U7oH>{Ec(6TD*R&uM=>=IJ^ zQCvp47>fO*_@g)lk|VD(`(r-fea_<(pi;?nIJrRHh9)}j3DhfAu^`se^Qn#d24&{A zLlncT%yKYbBw^6j^^8s}q7a#hvJXkWW@yEFq#t8?tx&IA>S_{7mn&S+UZ4P|8BrAD z-AeNYpTM_v`BZ{49FBs_Sq?*wB(Eh?1vijJ?O>}|r(8gUoD9o&10`U$V)VRtX6CmH7|SUI!~WT21mlPWo#;tebTw= zK}#3b&Kw(_$-yAim_&l%q84^xdx8qHSfGNmZpZkY7&g`H)4)uzk^5{3?-Z}TKqbYr zNvpn5)LG)&Hi#+Z=y zLu|^B_sPbfdfDZ}nb++lj|h)$fSSX&$yQ+oUugmv&IN-Ry5;377bHuISHzMEkK!tN zDd_QMWU+w!y$hrf;I~VCDacEy_4r@uD$bXw(q>Vx8s`(rJ!8u-6Q{ny)K`e%=H}L7 zNfW?SPwqaO19K9>Hr6DLtw&TNS=;>n$ff%1tn zGZafHt$^uO%uLU^__2u05bM*)w?#E-zp~Yth6cHBzq;HUyCe#3TAz8oDr!Wm& z$5@qK8I5M%XW(@jeTqkV4KsU0(p&Jz@-_-Kjiy$HNR0je1C2auj&j5~9+*6Xts5fO z(~BWfbLCxVg}4Rjea4N=d1m+P=;Co^5|<*dI4BG+j?7KfLh4!F5!fQ%^%!Pd&+vX- z7)8{_zLYHuY>#beWP8%ccg;=ZyYQbSo0w$`ohu)+753Q$4ykozhzC zku^X7k?R!)8@$4)9(q!Dnfb)Ci-YB}6EbpP8rP**z{FY%43)JQ-*Fx)DZl>t#WJ(E z0v}~>*{XpBIJ>jNQW}Oy?BIX|O#tbm3Ihh~PQ@nSnp@x$Va)|rNzL&{(e68p5kS_` zuEq-(|7T{*5{ntC$4Acw2nipARQXbnt;HOjVJJ8g!X5{=C5iI_aPMXXNjd9ozf*Pg z9%K)=74AvmK(5U4{AyM(KWX8KT0p_pjk3X_bZpiAU0^5>FKHuu5JMp)XoF!skQEvl zJB&Qt$DU;H|N0TsBuSt+!!UJhc^+arub@}*#t6K8M2hZXV6*$!$4b!Ur%dT}M7D(e zkS}!D?ac&TCy{+9FG)LunLSWPr4A_5H;~q#d&Qt{zA>o00EWKOa?O@cDK#2lMDxtH zAe9y>lcDYn6q<7qOJZc6qNiMal-= zFiHZ3l|HBI^XOZX3ShO!$ORTQDKf6u)(T6TG*hl9@f!i3Bu-FXH@={TItZ1_R4g$S z;$1Bj#u+{vC3?dje*M7#DpDgJN}>9I1~@)ebPGeM+2VxK>D(JwXkEMOK*#U}mHQ!Xyt()2 zzk9~1guCh8)(pLYceKw2N0E_qRh7Aaz&g6E8Qp@|RLhbo4_c@bOrNHQdxMxMWiB*D z5JpKUf@VBr!;GhFn9)w};2{a2E}#JK?W7>G`C?^5_du6ujdzGVko=XpQJB2>L+9k-s9cjZv^GdB5pWRDSUI z8ugv*=V*i+iB&C7W2A+<)@;G}i~QA*K36SJW2A*g)@;FOZvJywR4r6ZP-UcvBWo=~ zi0FPzq^?y9)EH^up*06#6gGb>jpVgzf+{0T+_q*DMr8Bf&LV}anxM)^6W>{L9`1GV zXIUhpRTEShY2x^rO&Iyi@4>z@wxv`VY2s^ZHeu8?e_wT-aWx96j5P7YnrmTdhx`xI zah*d+m60Znes(R;^bB+Vq7w;hH43VXG;#Nu6EXEdep^~rS_Q{3B~?b6xPQ$iO!tr< zPa_(uMnRRj36z6|&dQxo7e4#aBYmgN)?k_a(pN*o(WClM?u6+xv|QfvnHLMuB;}p@ zu!9dz9_Pb0K0K-qt9BQH zxLqG4)BUPG$o_a#wUY7?#-d?J7kt84KEtyS#hJ5D?*j|m%9@U+_ix1azz&FXh$}!E zpjg|%M*NQP^X-!>fosp2BSEPNw$)N*^3YtN`05ky`~}1I5Wro@bM=E(CKJCdGQ6b@ z07{gY?w%BVw52r_%_M1sg&KVTou4rU?h1oS0`VCiw){SLpSZz+Nx!tQEB&=}?C!ZYAXl!Jx%@>*C!6)G-98TH80EB6Iu>7_#C zXW){IQ5HXgnaBrZE(Fn&0{PN(rJ{VqB1;dwBa(Hr@fT({!KRpf&Wh{##+~*zkdcd2 zhI}Cx)b;Wf$>4p1_7X?@E~1o zKE^6zgv1Ta*qlEY^-H9&=!geq0fzWy^OHiQv<#c}q(3xl?Mik#ggF5#3){=eL9(c$ zmu-ib+nzfF6-W91@I@evR{7xDTdPTOVM5$!`JuPB{w_)26qAH+90s|1tpV&|5wu3* ztKh87&R#QTbO+TaR~)t;aXtf!U0yYdyaD4!oh7>#@$)!%X@H6o_6NeyQUG;uKmB z^EBY}8~4RnT*$?Cj+_b`ng7#BotsdxWe`ra)+3eVpyQ*}n3_`LL@SZ}@UCPJV?hB2 zLtXpZIAwo9B0v`DOPbSHz(r^b&k=Ml0Mlte^*o|s=ZdJ%(qQZ^4tu`7|+ z1I3wMta|Yx3MdUQRj$e>H!UxS>Yixc#lwX-%6rkP#^v+v6-2$LQXQ=70P#fnQ?adXH?4Dt7lJr{l!xiJ?MLRnI3}*_>)ssPSV>nD zwF0@yN+t~AP4eGFBQV;dR!pgim+{TAaY|!7=8T&GuG^CpMYkjV(hhW9F51DD)iD`d zhyq0H(3uxEpLQX!SrMe(RwOYPikpU1>7LLtX${5GZNh)V38_v_WD3A&u1!qx58%1t z(~x6jAwY9OmFcH2fZ7sEne})j(a6tY@=ezaCi$;%6I(#EV|#(B=XAj(!YMl;kYRY+ zl9yNTd4WM}@FqkDZSgM8#2kgQ&_pcI>$8@a)5MZmN-v>Bh4`Wc(?0|&V~zra$RV9y z3x(MZI~T!_Kx(CUc~O_#{bR8*DyJY401Y$-tXu>^0(i z2SdIsRsStJ;^=Rt)0HCQx(aFTsBjb#<}h_MEvOoN<5#nr!bD&QZ>}D`wtjeh_3+yI z;cKdg*9d!)M_m8Bnlo__HIq^C)ogeD{w3A>7t{}TRu5O}huf-$#ZUuAPn=zfwISe{ z42>sf48OP{Gmne1BYbJm8B(2MBt=0dStB4Av!_9g*CiY%KP7;4fJu+8I(=x1vXA+_ zpxt>>p7zIyK_j>TwkHAZ#r?2V6yv!K%mg-?+dyf9c~fbFDP-ZKI0bXKMKUY|s zKfdT@+S2VPQa&a{`byzJb_id3I9^(nvQcVZ_EM|wp^fDxnA}#}7|Ty!%!uGqQl>ob zjJ`+nijbllfhDKfKo~NRmze4kZLuDksL3d7HViEPNoXfu5Rw2UxP`d=Ok$apN!`VT z1==rQE@oenl03MvBIHb$%*7hW#gKK-B8Uw#Q^w^(T|sMe`9=-&ty+z^MLG(@5$JX z@O!-@+QH@8mLOCuxt<;26FYQBGSdsw8NuiXU6zvES&96QHvm$Bu$#k_(SL0%*73?r zkqDGlC7v(?;oOEZ zPx9l+Ps-ewB@T4s<;&f8`Eobf>uz;!JS3*1cEdetbTguvt~-@`+eRm7t1tG$7MOru z`Rjk!Ek7o+R^=E~H_9412LO@3g*&F~t-uG2ycI2dKbxA{QZVz4yb^t(zVh9(%_xU+ zfMeg0x1z-H@Vi!UanhiItWm$Eebf5KWp(2m$I$(-g2bWsIcnNLzp0kJ0>=aaB+WmW zM!ADMh}a)EnzF6(#~&JBfUF8Hm0n6t@G{}e2o`lv=diQ4rcGSWg-S=*w(Z!q54J6& zZHz#}fZWNclfMhyk}t@7R41q^A%B%4F$}+ezYXxmAzQ?=@&V$Il+@NR@IeSY?F+-Ts(}QHetkwoY_+1H!m*RS|!~rb*UI^S{+Um0gNc zWX?}d%Zb(5K6x@>8$wec4H-`C!bCBP2j8#_6%;*bUR!1&icEk-p7g%eo^*a~h?7F{ zV0Q|oBcKoqK%w|Tiqj(Oy8%zpb&)+t1I{|=CPmd9X|ZFXInuA9{UDv!F_>+-;VTM9 zX&A{h=-Xz@Q7ix3Vvt1|j9U+6+c!cDi?>PvW9uyu?lP&4dpsU~@c>=)!;&nK3ixUs z5PD(~W_g?s!u_W9Ph8G08 zxX`K`Tf(NZMMp{-PS4BmG8XuETCvRlMloWokW;C2g%6^ z3E|$Ia(6|bCqc6jv3sJ`;6#yRA&PL;Mn!Szgc#^GP9uz8f`?!oRk_Y*X0RC{&Qf5& zcK+5`>FhY$*-*Lb5CL=Id>~>J0tpH^)=?;?l|pPMMYyfv6aX=5l(8-RG-5q~sAUIX z3hFpCXmqC%B;*G>!xt54C(cb$frY_b zU}p&bNAa*7U1{Op&`G9j^C61%gZ_G`nneC&dLJq*R+w|oE3t=p>S1FE{s)m7M zr!rNYU|JVXoz^AQv|MEorxmmo*9%Nxk96!)`#cE4YfWkT*GZz7i(IV zoN!v?A3xE&_D`MH)z!S5ZHn`%R3~g#m4h00zA&Nv6BBZNNgevRtDEwXH8}*tnuUAjZ%h|hnqaNHC`Mc41 zy*kY6)tc99PBxM9|*G|mKJ-+IBy}uv1 z%h7qgHq7g_nim*C4NgB-Q!&Mzuwhewz=M~ZZ>&UX>d%H@B=d851Q1ag? z{F@I2M%i@u$UPOp`P-(2Je>QMYjz#QhlU$1Iug_LFiH~D0_8@rq)!CqF$x0g(P{EC z%uc}0FzU{!!f1izt{X9_JG!Th*(NT3N)wI)VJ=MWWMjDbWMgo?HIAX_eKdUxm|>b@ zXrICuj-)3Wga;qQK~#YUto`&s9336R?3#mUSDSIv1_8usH`>#7!^0Wyytmy50Syfj z7~0`)lRe|iZ)^lSF>AFr@id1g)x-xNm1~?YelL90&(868-f{VE&p?3equm_ zokh`apE~E|LRwYZ1`F1Eu}1H=)xBE)1fK5Jdx(Fqrep8R2JhX0k3-m44dFj%0X8;X85_dw^$?)r zS$QP2zQvP{uKyjW^9QW|nb!Lj>;25JrbYO(^6{TF_6<%;?3+1d82dIo+=^gIv2V@1 zBZ8H{zJXkn-E@;p2{I-&YLoYBrb%`a`P}-*;h7})7z@XTP53aY9D4{?x7=KHW^lZ@@rq^=XAV1Wa{-LChKxCj0My(>`Yx(HTxs^bGS;xx`)unQ zA;-_q+2gNh6(vX%QM9)6bVrq*1%!_8#hocm79uuge0dhGs=(DmS5=qIayjhL_3%L1f%RTth4kFT;FHzGQYYid` zXAA(!DMbfFPE{0r3bSTP>@jO+F3+m+zHb+ZLgkl^V_B5O!nzGoMN$WXR^eJnBM{V3 zGg?Lo+d|LDBzi{mVmqA?3`#<=DRV%Q(xN9N{<{=nIA%Qx^rY@w()LJ>Lx(LyfNK&$ zT$D9EwD(whQqtT~hj0P3+Aa#@M-`QiS1^{_315aA;5S8bQ3M|^0sBcdc0Qb2ri7kf zcMPKrl9T$?!x`ntG9?irts4c9W>GQd`c}Z%-`hW&J1FNWh@YspV1vM{uC#MfUDhbn zJj~_SF(o!W1i;anvb+^x9^ zP|#9eofo-MS}|5lSLdORIDNwxi!mDY#}SvV%pB}I<1OD%Srid|EOi&Uim#+(@3O_l zB_jB4Hx9g*Lm-Gk5JUk48CXr~U(==Z9u|Ss_0A-2-aR?>WlZ6(IG#Z9^ zs+{lqa_>x)W3s|Ns1G&ir>&2Qn;{yW^!_ZJ^ld+tt>xg=urRW(6$^l?fa1qEzb2{NukJmHskT|gl+dmt7{EluqKMumHH4?-=D-fnw!^#Vv;@FR3MXDN)W2FdI z-cx{v1}-7=x{v4g-v7n-rf|k~I(m*)FXwzp4iY*3dNRFD7KtJvE>wsEvHayIfY`&DcUFJR3+U3 z^q}-(*!RxZg6sX?%Zvi^w-*dPVrMQ$77X;CQNHK5H{~zK;u26A!fc{<#WT9Mmub-1 z5*G=|Plop^Wj604ct9+$i%8?nncmB(aIk5Y-}+D9egGb8AFYurpziF6->=?xvv#Na zrThK;N}){qq)H+BDnv(`NQi)DM!T?Ur8-?+15d z8xQwR!}{p5NL4^9sS2)poh@(uun$OjE*Iq!;RYFNzu*&* zw$hP3>J`urs)8#+=ga>bhE%IV732fb%D=wVCvAsOx4N(kM4B&B0h6dI zpwm(X*Y7QszxAZ|PzAwIVX;SOVT!KCDxiN-1=r3kmA4%C3U!u^WB}!r8|U3#0bP+Q zxGF6#Zw<>@Dbwg7?-4XeT(MVJ=M`M-wXXb7SfxtwMTK=?B~2?;9{+nHQ_4Jlf~*^H zW&8}u@$JJ%b@Fyy2ey=Dnn(XGJj&}w?+uR>86V#Ih44sWjp5PHghzzg$49q>N6HBh z-uemeuvb4h=uhVBC;yv2A#ql$^&|cS!6iP~=TAsh5}zncK*X+o@eH6UcUO0M--XmpVSl(8;lAFi$+DQuHw5RtxFzQ*^KSBN&SqdM;j6zKk$3uR<-tl{I?1s&Hu8S&W)3| zhS;tBrXh+`;y5j|Bls1b0;^etRxz*L_(LNz=-he$6pNn!pJM`7CSH;Im%%ziVLVZm zz$+q~+>Wb)xYBWsREbR?@^Y}lN(=cXZ>uc#a6qfs%@Am*JEOmNjB_GB84mL=$W-Cz zAo4DdADOgq8O28?s~mP{Nu-`)lR{3Q|5`csC_+o(jFU(s&CciVMm6Wn#=KpOno9Wf zn9D6Z8rA6_M$DThpgZyr+V2p+O@?yQF%FD^l|vUCZeg~xttiMeb9`^asG`2mq{9*i zBFoLHKQ&vv3+!@YC4AXaa4v(b&)h;kC;{ zK+&9__i#{FvpcgPcT1sGVWnRQ@sHfEa-}FuzFEt(w4_4epi18s7sQGDO#VCA529InDH~9=Ol<^-j(Zu_3ThQ6GG*dZ3=<2wBN&tW8eUh_^n^P=X?<|Q~cAy= zv$p2PL6z|IEa=^lN0%e*^t(cD?>w_x_ojHJpDKKrfTL7{a#m|cU)gr_m6a10ILX|z zJV&Enb^{FKFk6A6gA1?ys&WBBJ)*;Gd%|JX!L?%!vw0^yH^nwYe2N{2_!Ji);!{Yrr;uz1p3gwNP-HJJaL}gpEYX)bkxOTuD7F)CH250G&Q#dPj)483MM>#9=oRxVk#%sJ- zm8m3Qfb-?o6rF1*Wyw?mb45S@g<|5Q7?B_;k0J@f>j9C^6^p7+9St#KP48qDUzl)6 zxIQC8pBstp>d7JEL*c9?x-GEOz1Ja6aV{b~t{je{KjeY4=`$FZF zVc+(Jq)G6-o7hMmF5?Ky&IquYJL6~qNMRNF+L?eX>YWKYqA9UON;E&dGp1iDeP@Dh zCGJdK5Wre2+s>HUU@0h90Olh1oeA0%tCEMc)PNalN3!B_(f6I{H+RNWE@5YazGY-* z6bKtyW9Zvhb&6GOO1^p64~d=77t>Q?Z%~+pz3JHA_>O?J-jl(_Qo_?N7*Ffzsk)cj zl4QH}SLY3OAT%vc`Iwwi2%2^ggVcMob;euC$uM}+yt+^ccgn+(n5X~Du1>ACg=+Fz z>Pgz5Z9F(jM9n1MDo1NFIt~}ZFOt=7W{t^sgvU*%yi>KNwn;O3`3~Ni`upAdAlB*_ zrIBeYuE$<}5dgDBg$MXS?BLf_fpI<(Dn8Y^DEmUHb-pVbvKLnfM@jnthaYx^M08mn zMIu@3B!0#Mqtu!a#I(N$qQz%0itllTFGPDIZHUKnkWdM7&O^(qk2dRZv#>k5WiHXdC zRlLh&qxWPw$Xfd-D?!E*!NZ+c9cY)K>au$Wzy&oX9TkUS!R4e8RL(?P;n$bMgw4Ze zLL7(?q_-iHarmh5IP&2q^2FH-F>!#AqYtLVyf)?@%JLq`;{kCv2fP&2g{VA`Sl@q6 z`SJS|?!TR`gWeDmkl1D9i23p^R|A6dg_>P&n2|joXbe3{ieFqo2v=SH+y6p_4@Az{ zGAIeHxiv*j*|)>gswIv~>q{DchSnhr)+><+3Y!unW`>6{V+r94WVm5R)9uKGrk_Bw zX_^6WYNm$^QpP08g{n76v8spQSR(*}&Kng*VqdRgAt0+jpVEnvNo-4T#$LhVm4_IT zy|Nl=Z1S($sIje4VWn9?Iz*Th3YnF#AU0oNME=TI zypl)H^retIxl?Q`&MXvVBj4w<^1F%&{ccu1cBGx(+2ZKg-aJhF09=6(H;;tL**rZF zef1~T*^}~7F||b}_(UwZLt_4d=!+QH-$b4e->XZ^B;>Owi2Pf$Hp<^bDnL2f&q^1% zgMt%(0R@C@Cxt0N$>k?eXI2^IE}?)Oxr{=ITNcCcB+^#ksR!>4+1wu)0=vlkp6$mW*e+yi8QSA>fd z-^>^B6{hiOm5=}OfFHol(`Z|3mDle2=2mksk``eqmNaTq^o|UX5{Da1 zt~p1rI!6rI9@Ai{YfchSf4{r)2>F#=Rj^W-S$Ey^yY&GkYIQVPKqm=#&}QeF(~ZcBnli-q(TY~qLy@J)T=sXEvl z>|Lua8dKz#+ckG>=kdf=TCgX-ER&y8YEf9A=${5_GS52Z`VG7P8;01%uNW)^eny7! zrOjYe=VylV#7{~24knfIU5>X}+OT1*$n4B7kW)a+j(L$t{Lo8iyv2_Ou}~|>g+ORW z{iRK{b`*|Pvzdog69+_^RGlAda6MYXRwmwT`O@LiLc&J^aYqsK{PbUpbJ!zWt9OBXAeT_W)D{BQ@NK)Flq{W7J9>_=@(Vz%%h~fc7OaKcQ0? z&J%1aSo3Ao!ZJFJ?AIa66V@hIERClU*0y}#%3vVH^vx+^BRPXh&Dd#IAe@EZYD~ww+Qhi6cBfS zQb-02C>D}&qhYvGY6lKOKpp&OxDfZ1;oPN)r*_oI+SiEFkge_hV2*t7;7{NEeKr0J z%`q$mop&qbBA_*^R}*Zt@JF&zPuNBW>Am z0UVcJ?2BD zqmqreHgz+=+h-mCxyMWgAr-gbl1NC#YGY)$O<)L`VK7;e|MpT;_$*bx z+YaG06$m9N5U>wjXx%Toa-g&atb3(eq~&kuOt&arX{sOAbT4q?jyS%|K~ZGO979}f zc|RraX1O22{xX=amY9>y?YlxCTG*NLA!O1f-V1YJ-gNv_~Z;H35gM;%B2PaD2+Q9OrL%!@RddoNGKq-%H?G9twp0rUuD=Y<8 z6AXR?1g^7S><%jfPN9}C@B|aY@UBwZJI47R1SGp{BZ8>=B#8rR>!RDBG+Sp!jcxKt zh-|5~hhR%oKEN6Zl%Oly6LD&saI?bc$IDo*Nv_NWB(M_`hI`k@AYAFDLG(0;pmt*r zaoL&3UYd>YDojaF06E>>2nWFz194l$-sXM7#R{Sqg-dZdWvv9!rXFH#1q#ebYirc8 z3DL&*0axx#CDNS=qJySwWLTSQRN9NUFLB#JJy%JkeX|s;M#1MV9Y8eM*dD5p2nUS( zDv$<8RoI$u*MLm;erUMJNyR`eLqt9EC7;*Ta6crE-;9n*S|{{tk{vW3B0Ow9SBcvD zD!YHeLQqL@4D(y7EG8S`8VkXRMUSotMoDVd1W%k{)NCI!z!*lB5)iR{!U$bo*4zY| zdhWeT!R>~b9!g)PwhjPL=HFp-tsV9B3qcPBpy4l4DWaB}e7Zw~ zt>q%>i3k(6m}dYJVeP=P(3;Jx;G#jqqT@JF_~;5YAtElJJF^Ls8IB7&spV&95qphA zjP3{m57wJPkQR;u@|R8TYG6RKgXpQe5e{EeLAMJz6xt~eExg;(X^GSUF|AAGcqavz zA(8;F0E-m0ECO0r`a>M<^B%u)5?r??Dz~Hq8We12jA98t-Lv5aqJ^M#Lu)Ftd!=z3 z5v@3X>Mu?V&b)kCG5_Oul#308qJvrSF!ixjWHpAE%Bz%l=f6>@d-A{{@B>r08&I2` z^UXy7%lYPln)LJV_UtSu>VWWXM38=s7Pv_!c{~oK$sIufc6<+EGt^+I7AU|_F@DVj z);&C!!9ms<^bN=^y77Twaw1^vi<#|-Dlw^Q(tS zX3S%klz9SStKTbAN&5y9ywJ9td>}?76FO!?F}Pd&=Xb-B;XIk}}1bI``K&X#gzYLzQ+(Bh1$ z)910x&f0~*<}ua|1Y#UCpnR0WIp{Q5JHS@=U?Em8V)6AOtliuwYe#^bSUb}lnFJvQ zk9s(9%g%Z|A6brT?AdXi(eu@Op|}bvZ0mvUP7Y(k#gbW1vO$YcgVI{yN*507;^d4i z-WoYjx|9%ay&x(V!QVQpnOO#f%)t2wph*9wp);n8FX-UV@_^95F%)R*uM~L=Djihz z(!u5KQW;6Ec_%`V<(nvCDc!`db4Bf`80m}NnKDg=$PZYYf)-FbXnRZt2d(ibL0vrB z8?+d;a3SJ*gj9@b;p#!1Obe$eXyQ#RoD2?d{54oCRruDXeFnn^3LTjs`x}lCPVK_- zwhMkf3Tc5|s3>jVNUz2{gqN>p##-e-hT*9kcAN|&!3#&!to#}j_*zlm$a#1uI@G}V zbg5h*L{9H2mP^YnH| zm#H||Kg%piOg)q1ZTYFf5k|s=w(-WHTxq({Z@$F9)btA3GT9KZk+{O~#yaC9d8VL7 zyA4NzIqQ3yaUvq)dlwYhg_T*xFq`EjRQ*Ek!Nq?e#Lv?j2BwYcI$}9O41M0@5?ii& z?Bj+Fw~2skV<94>kG_gyq;mvJddPg=j$w$HUmR&hwiOIyj74079RAoEagfk>6&8C0 z=OTEx1~nU)10I_%nhqluv(?3wyVOE-O(hxm5#6?Evm~reY>DwBaZjsIePQensJ{p$ zqC*haq|(R^FA61y1sjz5Ssyv+T2Jx);^n0@k}xWjp>HUv(zvDm;-u1u6>OgNwvU!C@-G&;w;L78(@8l4kixq;<0QXfvhYt2E0U1G$YVts>Yb{q0Sd9HfELU*n= z951!2^hVl|X$P>B@SihWQHu4|w0Zq1Nj|e2Zd-zgNww)9q9``tcE#swkWkJe0~vTR zp8tRxrVGaSxq&Cuu6X=$R=2Rl($<=IUigf(-+m~8zgttxD_ye|EJ;0FRHA6yH>?Wz za1^K6y`@LMA!Kop81K{};XJN^*G%p=yw>1Ar{J~bE!QW)YmvPi*aQuFC0Pu7f@??? zvC=TEic1zluQWm~rrY!1Ut8|5zRDs2l0zz@CE4;q&Tf{gtD zNF)O4c{U|pm&)ZlpHhRp1`i1*S2}Q$;3NdzC=+3Qko_Q;Ov4du0I#$*frKDIfvO`3 zk*J3_ICAn3-`HEC^oV%W%^RTA6|JF>;IA?d6(C%sxtI*v(}GogoPMXK7` z>}%_IUm*JZ;%6-S$8s0})^Ss#F$VzFeGd_ZYa4)Qs@9r`=Lg`LGmY5uBXofi4E$Ki z&R$|T0f467-FMmi%gyyjamH~Gq|Zk~3Nc6HFE=d#yg4a|pTU|nSFT{iLi#q@ZtmVa z=}+$I9)2%;%G?2xjr8O-EA6f6J$Q*1fBZ(-v3Mx1>ieo8|LlDEef7eK=P26yq{^Z7k;YxEAc5F-q(nERuWz;oW3S?6Nb1HV0k~1j9wMcABBFEo-MVef%uDHjF1W z^2*k2&&<}1`c4MWGsH}kZtKoRET7!;*_H&rDVF0m`mm*gI6*JfmQOl7ps}D?0=Lpp z9&Ml0HQOf(jhR~@*R*}k)wWM0X;w{K6Amfjn6EA79N#n?38yYLjw<-=oYrDH^vQ`=!WBypxD$r*UOk<@4i+hN{$AOG;*D&&Ug=e4m0?MA^7%+!D8^65c0)H zBR(-+F{~)v0vBSTI*F&kl+ht7B8)bTnKN;e`MzH-f!L%I`hK66gi&0q@tZJ@;$rh& zZ|smq>a#VA@@Ros0gZ@R36>({8{xvi`b?MvnXp%5lAbV$oNO@Y;Exu!ngp6UTq)aNdws%NLghPJlpgo|qTL5eDEr z_6A2sfi^yk6=<6(UlyXuAsNVZueCd+W1q`^tO>q|m^Akq2ZHM`OADTTvFfdVO||vc zJ}XY#^2c~cR%BgO>I6}5Qk6Z69Ge$(rWoC5iwcu2MVua0KFNzd4 ze<^Ohxy;~h)gC1r8xG<;v!UMnif}mDSb}UcH=hPhy!i~(Hvd}R{6Iv2fr^MsZvGiC zAbp$%8ybRORvST92>ilTsGOut5~h;2B4Vl+8CG$B^xs=7KmKzBX&a_`k#EMlltNHl z)k8fcUdQ~=7s?B)W>$XsiS^`tzaYLI=+O__uk!W8b<{l4e=xp5gKK-F|1Xsm1AM&= z#*1RdaPdTFySoP3#xd|T(e{O5F@&~%y@|FjY>a&h+J4Uo(Dp^XOrY(q(Dp^KrBSp! z*Ff7h`-wf0PU7u(VY>S8-dr8tn{;@MX+2{EZ}%5a;RtWTH(r5x-s3#@BA)^M6!CUn zc>8QQqih~Z>()5D_~$vJ*QPN=byWJ-oy;xb?VUccp5g5tc-v-FoLwK@Fk?c?0^YXS zsKKIVib@^cGveXpbn*LX7ImF>rM^^}%C+iL( z?5>+Qx|Tc;K7BnAB+a8s11CPZbK&UTE!E(6+@5#(L5cg}58#sGqr1z*J~vy|FES_9)Is{3-4P(k^p z@H%6AMs;_h!9pgjC2tpTDj75*9Sy;1^?|i{FXg4Zyjl$)@cBBo17Q=w2Uhu5P^nOq8wOPe5J=# zE|f2^eL*LizrQG7;u|wtDNDyB;c(t;l{#TjwlVEi`NsXh52mYSI9H?UYN0z?>ZA2a z++wp8l;C#3_DV?WdJ~6%EO~O8#mOQEv0TP)cJm}hWyRGXn~e77S=eM@&(TfBl%V`8nn}VDHl;4wa@3qexA8A7gC={+sh#{* zm8+mHqHG2Zg+miDv1PK(P!Ec$hJD#XMns*+Dh6%5LXNqO~Q&P~ZATFeAdgRFR5)gefT6cJE`;nFtM|rUNf+sxpBg$n0VR-9>ojHVG#$cGzv` z3KjKpo45?=KjhjaxQ_zDORaK`AgDIgzu7Hc>h)`_-nQhYGBRLF-6)+Vu5*oOHAz&_ z;xmeEM>wUEighouVZbci-zh)dFTZea8knV*`EV?5Fz^SyPH`KhKrs&kW4>GwHzDD@ z+?vOn%lZDhUitFaXjs8xiTy5~>YjW3mf+d)SQ6hl5nJWc6gGiktT|2N%Gj!pgpN#n z{a}+1`bg+)R$O5qSk1gTcl~9^s}tncf-R&|sj?zz`5kYZIkJ-vrseNcO-6jx%%`(Z ze$?M*rOR)Bgacx{aqSLu}AWRIKURaJ9g#}axLkhy?!T6Y0@7E{e zW1)rWy0n=S9*s5Zj$*~&Sm7nHB7pK`M1X3*8MP21N2$hCnjyO`w^A9^(9sjsAT`)! z5H-=l7Pdydjv6hDpCPxIBH~P!c)=hweul_D6uM|~IU1%_&cqr|c&rz=5oh9PT9ISL zTRg1u$94!o$F@sm+r%#U-e8PwBIzG}N);hjVg!V}?S&7bIz=r7j$pDPy z!++OCcK&2lApq;|`tQQ@Z@M24G@SRl)mv-hJdpRN>bn2;aV@N(!9Nx1;tMrZ`2HS- z_7c;p&|YM{$w3i6qW@xWm(q@a{ML4L<7H3|Vy_#Z^RP99g zN@p@#JV$Ey*<$mB*=s3Qq(z%8AWk>L=wA|xB1{wgdu(np^;096m|3R42Esq)#{l8e zH)Y7BP=;KJW$4>U((^~Nhhe!@L?cKs2_RME!g&{yIV*XEY3cZOiDBRjKsVPS6{K#Y z_C6u9B2JACXQ4cn29sZ8{3ayT zY+mAjPiNVvoW;tXZmbUnm%K6+KY;f$wz7Rf zeet0!+D+9rO*t!7!qCMig`;KJ92(X&xJremb~u%bn?!K*@M=Fj;_w{0Ayeo>{Kp`$o#Sh zs^s^9?IH|9JhF!7_ULbTW-_}B=QOTJi1XIvBfxF%r!;y%16Gd_;zp?wgu@3}S@|pn z3ImBiM2f0>b;yly zzaR3)KJdlx;mI$O-aSu}-oI;|@Os+jQqno+OgP!800r)#C!+$vbpfGiH|SFg3Z5C% zEXU*%LvhZL00#nMQl|(G`+P&X5(3t}t;R9Z;@i-@9fC?rtKqa$I{$`-RIst-WFsS_~9_-#bJ+DjyoM~}QExsmoEi0pq1oAS! zhZev-V8D|4Az+iH9RlEhAA}Nh2w<}9{0i*JPicoBLQuTlwUgxSr1w~B@_LQY+cF@0 zm?D{0dv|PN^o1b0mv?-|^K=SytOAUqmLyd=h5QxqK*Z}}^!`Ya&L@tqQQy})|HCG> z@tvm1NE1ia8iMai{+b42@fN5t(!xV)4#HB?=Z~eOJSiRJc@tEro8W9&fHL{S&j*z1 ztfAG$mtTAHF59f~aea{7u07?`eaFex+2_L(mbQ}*kLn2!Q6BvaACmGhYUpJl#S_AV zbx>`Wa7ORvmnS*4l^Wl{jtS~0Dpm~`)*&_jR^8{zH(h2x0aJG}sHl%@ad0@xk%a{-$@{paX>w>bY>nRw8*;(3-A9U9VEksE~ z05pUjbr6zQ22X$m%Yujz^vhXT&a8YWws==)vCdyxweFA?;^I?FWE4(Vdpx_{w5= zuDvC{K5%LM7PBG7bS2z-)(O$pP%z7Ki}9;^-O@}i1T^z3Ewbn5^F?O4)K|10p57vR zemq}f*&nQ-XS&E9XWU%mI{jU%+6s@#(Lzqv5IyUB1+8l#I9m&OAgmHX34N?RDR|hzq{Qm^R!5o96!>W-i_X zYr}{bf%Auq5RmPA#*wYZc=AsEud_15czWjkXnX!%(~8nVKf??{=qK4n*B}=YGw^86 zFoO`y=^0lMh5x%yyV3(T!wf>iX8Y7<;L(p^1|j?rJ!BaCECIG#xcUN0T#y66REAJR z(KC-BgxZh+JA@C$%zRVM^Ngcm(cFjvw-!)@TsqySH4sd)-$~R3Z|=Z{go(rM$xZ61YqLkgu)qtNAZ6m6K9lL!vgb#r!t(9c+! zJbl?@Up7G_(Hi8St3=u_Q~04lgtqDz28GZ{(N;`oPYmmp%6q67&L}YrY9&O*%TV6K zR24jeFS=ovk>K6@hF}l)f&8#-cO$xz&?<&diXn!{+B_7YL}nBp$SrJpU$+@8iVQB5 z9LhmKtKz1w+1fD(=0>cP{K1FhdeSK2$>b6QQ%GLUB1B!AbV6If-*EUv`FCG}F4klP#BmY_DaK6*eN9<|`Hwde__b zZg>+(THmvS)%TXZx9aaWKB;wz*gAXS4YR?8%k$U8oZGg2>&a;aF17&MnjT(=BqBNi<6xbN`r~r@TuFC)zoCJ74m^-oj z{yH{EgGn|1iK~zQs6Bc0@p65Vk=>F(5=1x^^5ymqs|+x z@WzH4fOP4zh!k$T+447OTl!+&?E*$Lv=U$EeU9f}$rzwtvJzXXJdFkHWuh?GmQSIu zt-gc_>Xw&FwC@sx0Ty7LF9<;g&BO^#qM38wP-KS~l9+i8{6V#*`R!L6J;;z6tHF4! zdnizosu`j;JDd!id@)?;n>sq@(s%mN2HE;J4CHJS7lZ2TnkNps24%_v4MKzByfBjV zkd32dTBE0R?}q^$Cl;WKbRuev{=AdT9?r&ZPS{aH7=%&~Mj={3AzDEpT0tRNk!^)m z*iA_Vw1S7aF@cB5_R6<5{Nza}N07x_AJ|5wVvS87h$=xboa07re!kYpQVw2nawXeG z#Pl<)D(oTWT-p@?Vo%ygL}Vl{zY;%A+EJD@QbuiUB}0;){|F}`QR4KZk7>OvFTzb= zdUTA=2D?pS9;7*w|3KX6c<~cnKrJnVya~X6gduTPQN$@^0DP}S-SXq%OEFti0a-v+ zAvLhVuz(|yAxReBeb9IygPdrSZMz0k!vc%=Whg#6*MLg*fo_f-qyzm#TK@dcLnqOJ zW@V+-ERf;FSydM!8fz7m^(={WptZW5{)PUnSsgv;K-*YTLDChJXAKVLjxX;lGjTX3 zHFQIEzZcYsGe@z{>_%bEiXl))foX(``HMiHT4Q2`5mLV))SFz3%xtw}p z1u;25kpR$+y)#f^a(L75mcxo)LC%|suFfJTb4ymnIdXgjhh_FP^#^OlKio&lzvkge zw`C>;8bipxnu=emLESjCx)tZsG^sesicd?`_(}ORPVqE8jbV#V6GImHG;TAFd>VYi zIG-lgMas$spJs76_(bdEfX89fs>6azmI;BMgjoX^&CKk~8ns85wd@4U8jM$iS(9?q znKkA$NLygN0zwKG*JRdU@SqW9aXvY-me$Og+GA|+Q5=2oY=Pxkn_1J__HKAnd>Y>? zW(^de?-jG=TpCZrvxPcr%&9SJ@?dF%^Z*on*zglDYZYQmD`w3sHMq6}>@~uyorY-+ zurX#0EG%Yi9M>4LX1Hd8S$j(_T^bj=8l==b-{2CQOQTTY6bg}23XxI@iCq-BUznnR zo>1t1VG7+ZOriUQDNcc~R@X9?A7IZr(pCnqR@l0LVk}#}=rvRY1Sw2Lj6LkCkcOc( zNIb_Lx&dCOu5?5^sP9adVK*WT`8i5xIR^W-08Lv_vbt92EScK9Ic8g@q^0AFdDGry zq4q!m`DhFUu|A!W>mcGlBDF)r=rWW*;%Y@gXM6G+q+vNWSjxbO=0|KKpH!r|EUaV! z`c>htCD6#QwORS0xjKXas1peBpw$9lX{D24SMCyAl&~~hJT{!80)ttn#4xi&$`aAP z88GMkBCnCc24P%Mo{A)MJLO}mx(CXDg{X%btDP*?e*~mp;d4! z4qY#Tfk@PnI9U(rezK-+`btV(|5XR5l;l;6?*8S@i%cE z0jkojZxV^hnCZ8{Tuj?UeC?-z>oR3LAZZt73}=pooib+AJjL0hFmAuJi2zOT$n)tt z7z?cL_>P+cTIDZ(Vz%tsTfrt^Z$(iE=4ds$U$O~Al;eJXtnSHg5ol3fx1-iRbN~?Q zZcdqXQ0H?@f?^&BKv@+O^VLH7G0-N7wz_G*vo-7c2?Pw6b-5|Fxp=KxweoY-@@-3W zBe1y$P~qa3Z%|EA4LJWrVyT{5T2$u1q2-!LL{F@6Su2|Xk+*oDq z%)l*+i;1-PLcg=*xCj9=&gn@Rq}z)mZS?csY)6i-x~mH_%}!=!t?iU50UiV_#C{}z z!zk{6g;L}bFKv>?i6J7EcN2>+tDDA*gA7cS*ioW#mG>uLXym0pEYtvfwtNOH#f89+ zTw3$Lpx+c^%0d=%rVu3c3C-;#pc&!>*e62<7rfl4rjti}o53pF)4C*yIIQlJiQ-X= zTRUULF6Y9jlv{FO_o1LWpm{nXnJ*c8M<U^7We$W8Z*8*xHEV_qB5rZ3M zPn4Gi67Zl2sou4QLU*)nQ`8}!3(NrPjdwfi%};T?nULJgSP+XP!I2fDv5>@Sh=APdjZMqwBQf?`!uII2(;%*EE3UU^(VclJS>sLs7o6R zfI@zmJcqn{q!>O1ZnGD}CDif5Oy^?CZR~nzTRY3E4$+?c92JouIuH}vQGvT-`;04N z1Fo;vWL9}CClv_>TwEk1MZz|R9ynT|jJT!IwEMQ(I_0|Zowxc0UEKz?=<+Uum$gO^ z1k)*Qf0%~bV-t23nvNEsTk33~D}(xUeX?4W@k^oe5D!iJW{AyS z5br39)W`G*UH7PhW+agyG~5c|A+;meG_=St7NW2C!iem^aZ4e~ZL-oQz`^N&a|fu% z4uJ(CI|y4MJA`6Gc4G6}Os()2EzWdnT!)s|1VtR=01y#DF^<0v?Jx#DJDFxI$l}n4 zS8mY9q@6$MFPPTBgRD$5}$kPhE(olHY= zKoO9nXeg+kLz1;O#V7C7-A(}vxt*E}XpBfdZg+0m{k~Q%ec@u>W~-sQec3q+YJPS=b&If4}0u{0lr{QYKc2lRPq+6 zke7AAC#C$Ug07QYN7uRMFf}9^uz4+Uo63z~XEk20jAE-+bXL5AK^mt;hz&i{KG|BL ze~j%TaM}%WIf9P%iZeU1hwa@@!-&#V1_!tjx1Mljm-)t-HR}oB7dL8)Hfm4OyK~Bg z)~Dnn2Yq&d+&C0g=9HMZT8+&{NsXm2ZUz2A5wLg5^byyf)E~nTWNk9fWPvMMYSmep+qc(TZo?;{jl5 zq^8s8p}~d>S0Xz~9u!bpfkr9mfri9R z2-cDaRt;*xdEy75VD*F!(xf%l7#VAKBKth--h-{IGl@hR5jX6{C=xLz>#g7tGtQs7 zlQr6u*7ZZs`wxSK81~lIO@<5HM7|Bf*F86*Lg@Yz0wtsr8qpI3?49J_SgH-!5NlW` zK+snn7=0Ds1FUZY!3oW<-T^?9J%=x9UC&ChKG#t|_Asa2bMr;5o65tEAlR0fJ?YI% zOI1Ob6wH-@_`t7{Vx^e*$st5qb^i(9p+)aiTr@3$1iWGOKjbHGU0q&D(^;7wEL!Mi zL2}RB?fRnHfVN2}hK;@<5FjSz_}I-h6p!~x9eyrDz|BKqLz-9 zhtknfNcN|Y>`x&bEyWJyRnk52+*IdxTvF(sc#7S+DDadBORdJe3n^g+92M2LqlO=z zkE(Gw9km)4qpW5ZJx|1zaemNGZHrWa;7k>3D6-OV;z z(zrP^LZ}`sy);k0V9&qQLY5EDCDP55rf=NO2h%q$8)(f2(8`M?^o;?yDmB@R>l; zD3&dXbwiyL1pTPsB$ZzN_J%*S^%?FBEf%&XNxX<&bVoT%M2|Yhq_M+ch)lL1HK-P8 znPo7hCxFY%YcN!d0d3l$vbc0JgW&5XK!svI4h(obk;hyzV1pjdl<$ENbHjnsw@S-{ zm~QMDa!c6qpc?3w-}(5i{O#cIS~t%N&2XTxn$9rk|S_ntlB#4e0f8rggDhDuMXOjPVW#t3!OfYiA6 zeqkv7oyIj%M|)qnR-bI|-F14w)~~OX@8y?t)F~NX!Gl`MT<7 znt5ObS<%e{fD0H4z=_6z3Qg9yZd>v{8L9#K@cPaw4-6fiYL!9MHUV6hYXUi#t`PSj3>$G7bdC>Pk?VDKV*SdB%RPV73NdZN>r9#_C=f zfUckb+o6nb<3P)d1AMa(dklTLJ-g+%XLE&wq8?gydv@dz9z+9g+~>&^N%) za_Ih&Kqbdc4X~3NmC|1%Pc!P+)Po#p0iH>zqfy5Q0LRivU}*>d#&W@zIj~RwEGL5t zvo~^b@x|KUq7?qD&aN@x{HHd@b!MVZ%ac69yYs|fo-%_IMozPFgo3(&jJF5uhRMo0 z7H%pHqs?y}4zhZzMdmxoj=8QN^%p9Uf)@;Em^wi5`Z9gJZQN=2Zp1;wu4Y)Zn2!}Fw9mr>S4??(rtIz`2%PKDIFsqYvir{t{P>NX5>Rk4F|IFoB>&5~c>!fJaQ?l6R`$m1jm11k42QkC@-adrdu6 zw(YkcOc*21W~_)l_V%>iy5~{!(Mvb)`HqTP-g=bRl`9cECePd!Toz5+WubP*BqXwR z1K!7Qj_QiF8m0&QB|X2_Dp!dXHAdKNuEl)|M!(U==6*AaT8w>>pEUW1Se&=K7hjO> zjjtzzM#wzmYxh=IV1B-3Bpu@XRjA=OA*@XYCp5EmGN=PowxmTTtZHkkYV)3Z(W_yR z`))$0zx>ZojF#PlhZqM0xqAo)7CjX^$q#6KZ9|NKknWD{gNGS_PL$S4$q;SR(v$6f z*4TgLfJEvb|3^X#asMSY0|Pc-iv$IX4*}qBJcJBy!i+$Chyai%zyOim)N~OxNl*Z; zK8+&}97@WiK&dEqE!ctyH|Kxfo3!|^R)}keMKobaC`8IBM9L{-@u!f*pF$RYiWN`; zg`|E8N&OV3fGC120Iip)UqXCk>Q^$WZ1*^0k4m5E2n!jziMq?kvK*2z^^@H|8>xrb z?M(HIvyrF-CNApDml6Vd(@gzvCo=V0YbP`HqivjS>X(dMnfgI8#>aCExZVw`bHM4f zB@#u)xTzljc)B^b8%@tNx0ejnXb&WqASsWT`Y}icrSo)CKNB@mzt(ER)UTxEEz^cI zO#PF>3T_`#Zqdwc!GsHZbAkJi6>X}iU%gH-_1kifnEGuWw2m-anEJ=%I(0r~>eobA z^sw8NsbAs~i#}=U*HFyVFPP|DDwZ9~AWVDP;0=T%Wk+S|XF|c$51qOJeS(&~Vd|fY z$^dt*m@xIzolN}#Os+i>?X3DrtuNNBxwmm=C-?PfoBE4vFH|t}d#VO@khsCoR0I3m zi45#B(+%vlr58B=yv_Ga{Bvbsp9@NZv|$$YjN`TTph}z8FtE>^(7-+y|E1N*F-L@br_ayn&KAH2#<$VO$Lcfb8FZD&G;8mCj}eeDe(Wb8;>%_$UUU(Cb8XoFq0Tm zQf#UU6mHIKx+4yR6Z2Tuol3pccJr9(n|X|i(L8pmYu|$N4Ygm2Hn&!^G^{<*Jl3A3 zT7>_^DME@;Qx>E-Zpl1B?r;_q-;aiqQF3#oMM$K zy2fSHVL51@bV^S znZpu#=#%NLYLFzUR~Lxv3fq&96`51UbnRP)s!0aWguv$BF~Y4sk^rJ6uu5osw*G=l zf)qTvxa+LpxtoUP6~o~$89rxt&dTuY!RF^Bd=3B2v^(pU&)CqN?+yD4`8r;kojWsa zEiP>w_DU2RfatdpGXImMp+FYKv7U=xG!0_(!b~hO{r8efbpg!m<)gn1S{eodqN3MH zLrksVc>QDcBd!C(*~M1!yz`z10YyxwHFY@FpuIfI%D>`uG+Um<4O5%9?HCOIQ*-1 z<@46892E2A7e3ea%9+!J^XtmbTeEV|&6gkjPRlEY(|ulDdCQuW-FZDJ?~j#(O#8gL z@^ja$?3U`J{135mIO$vJ%EL7)I~GXFyM8e&STICCx2`-`v$BhiN%`(rIrwM~>&nHN zmEGK<lR>_+0GeCl}UIT(u1t}AaIseHl}a^rEeLcw6XGG&FnO@9+Bw0Z3n za?>&XRBu`G6$+`kHrL}k>(s~T_T*}u!Jzz{DdYSw{Y{MXthLAKw&$e$vtt3`f&u!h zdYosT`Z(R7T#YlN2HP}coWK6TnaOdUx%N2S6rGg6L_NcRXE@NDS&wtW$T*u27cza7 zpN*RljM5wH%I1S4g$U3uO}2CnhIvDduB5#4D;vD$kf&=yU3vXT&s2qaF5^~!(dEG< zg@0|5F0CILj9I%n`G4thEJNO|Wi=O_B`qdlrN1t&hX_fT8r|BSq>=o7=A`7eNlKr8 zj!5QWHxN!0(9E>OCC{_^vT#m59L_DyFP(D^R;e}@k%*vmW(I>n2i>w3CL388PyLmY ze}6{+@sR#&4P-T1IVAonABkHMl7AU?a*B3NV^v2hd-AWOeAh39og!n0tPwjgy<(!_8mnlh+XeHZs?l{8NpZ?-^q{_%urE8uyD3gcO~T?C;4yS7?&<6 z$9)q^hiqXuc^j72C7~cgYs5ehpag<)tPx3hc8NY+fB7eL!KLZdI^|uTRNChLN`w}i zzt}yPo?XdO+&5lD7g&t4aOIAJ<=iVxIXfQLX8=4l-4$c-tLf@a%ZRo|r|T+j*p~8a zuabX8OpET(i&Gnc^c+>KRwhoMv09tQR_h#ZFw(Shyh+2@W2>bQZCK-^JZE&#(p?F+ zUB|V%?RRbMMlks(yqp_)d?>O{=X#%OVDiz*MX3DYSh?`ZhPoZhE!sL@p3%yKQ29f# z^1v&vftyDw4@2eSZwidt&?_4<_MSJcdBC0`9ip-l(MkNtcK@yPIGP6Xfi9ob%m z5!F@(bMrHq#of^N4QJ(D6GfNu`wtq=KKn|vT^aHrJsYEI_>w-jija!Uqkf)`6z4!g z+UGUaBU<&%`Y3nhaMZbNj4w~<+%vNJfN=~B15{p9Gv)c#dKz)S`QG{n-9&P>sG)MD z3C_qj(ygcElMct^m~yJM8dmn>I(Vy%(Z-XS2{DnJ!K^$sWqCcwnbF>0bGF7QV~_un zf@ZdkH&exO#5s>E4{7E3VIYP9p5JI;WZAF=>*_ZxSiO2-Dt?K4lG{|iuhGKDREYnH zQ(+F83W}3Bm2Klw**4ycPlfUNE$yMVa80{G?nrN8;lfT<{rIipu;Y%)!^PuPJx)FGt;#g$WGGy#Yz$Xy4(OXznVBG-Co-o}J*}(z zCBb1~!o|R&lM<$3Haec;2gYv$uGS>n20U6__I7!$EXb0HCU!Wx9SzhBm)lNXmk)f} zNcz;HWrFQOSfgw=xPJ<3E!u#J=G#)yEVky-Ir!nM{5l*}N*ZdgiDs-<%6npN32APkalgBk!^Ek7Qq6=5Y^MyiA6JI6$1aa>`+n7G z*yeE6>XPO=Z6w_>(D%zOEBY30yR_=n2`rV70#0{%$ckuxQEP-9&NNBP$mJc!wY5wd zc6O!TkFY;ETE8GOj5b`3xwzJ7m3s#SM%1^~P0N?pr`GSd^yT}8kmk!AXR@-;_%_uEc1V#f#^#Ys$J zNBT*_8@Ri8?!FP=3fEO~!r9CJN6_`LFfHzxuLt96BYIA(5NVSKpiv=_X|y(=kxR!} zF%3`%%kfZq0T(Aj=rvyoUegQZ9e4xk5P(V|=?b?+3gZ4GD?eUsaYTmU-ogq~J=olw zxTG~O5g9TCQTc_0BKr|j#hVF7u6YQ6QY|}K3Z1re`w@89d7S7?V34tTr+nuyt(RZ_ zH?1Hy~Va*fC-V0Rjz33_|-fkw5sl;IvlE#)r=TYn-fC3oqLQRG!^Ao)8?hVjjt zg}|n49%S-jaWufm2n!M}TC70-lTB!=$o*D)0xho=nQfuFGZO-b5*CwaQyj`&pD~O~ zrxDS}9+hFdgollJAQ@w)-;FP1sEX}sPs|E9#i-wk7`?;jx2#HPo#9>HGf zf?$&WEdd@k(-o-uCR@@ck^|+h{9ml8Ejb|%{J29qWqgZMdoX2`^yoQW4p}~SS5SY( zn;|Ec`=+4P;EZVh9;36nKC~D*TeZ$sLuVsrif$ebcThV2`S6-MdW{3Jq@a&Qb&&`NnAorOtZbNkOavMBub=l$UUNZ7#<(F_S zw_jMo<6+w5Hvt13uPO^NLL`z^Xb9Dxja4K_{7k$2Y^cNq@xZUGYUAzC#dQs`+vlpc zi^jRz%DT$;blvE>hQn~=4j zXasarnLIMIiB5&1pbN6Dh^TVsf%3lU)ds3`=?ZAzUGdV|*+^TyFt$x!2s50Ux=mk< z+f+Ea@x|)x<~9)@D=g@{1v0!DX$r&j6}T+$?Iw##Ut$Z9tiZGAQd2o6t^gKuyONNA zT?s|l*M`9Lq-`&G83TKc&A0*3zt;qqNr2W$HUawg$G{BtViUzB%M8>p0)G5y?Su z3Vt~uXd60%zHxpF7dw4N7uONl!JT4=^?bGa;L21f`EVk*uV~%(%SHRXUmh-AlGuMc z${*F601|bGL}}FFkdy?774g+4UPiT_3-ul?f0Wa-_GI8PEO$ zM647u|BUo(@?B^tX_=CXFA)-ROe~YC+Bf z;b1BnKj9lzqrixTU!g1Nemx4PDwo`r1P4s2U3jJ1NG6DKi!%M0v7Yev;#^ za%hnmi})0azaTPc?zKY>+CD&8G+2KT-N+R@G0R4>f2c1V($aK#LMH?*2)yxU2b70N z{&Q!G{zftbdt$%tU9b#{;JQs5YP}lp$^z5U;gn}ls}Y7!W#MDqu!x0oBE|fw;=JfL zV(oc*gzGw~E94qa6osW!(g?}QGfYqz#`OYFIiA@K<{s~dZlUsqvOH}ZGA(l*cQtPZ zEv7wDRx?7jzE@7wmbGl!mDAO!GoPbZ3OG~XeUL#35EO{zQK~$^jToL5^27Ed)n-xX zmlQf^$cD`Y+33AXE!GFJaqu7T=FrZw=MMSQSN?IiL%t|Y50{U8Xcv1A)PLziy8vzS zyM6vsi}`!HgG4_$0^}$6@lSex(gsWO3u<|5Ml&64~gL9g*G@K-5Rs=+wW*c{r zDmQ`ES`n*Rta_9_K@nSmcC~!uv)hE&Ou;KgbM}CmMxNGFi&P77R=h&+VtYuoG0@t3 zm5zfK2?Ep6hbwg)1EWp&Pb;D4;96xpSCqSeMZzw`0ED&Lrt}v(Fnb8vI}~ncaLM*D z%%egZ@HW%t@#HDbL$kmoF!P~+!8DCMl0GZJIllT)BByQY?upwxgjzzcoa-dD(?eEhEp8@!Atf{zGUI_{Zym8SWxLDeHTaoPhovB*jp z9{@y|$xmD>V78SNsfhb!bz=t{FV)S@t94j-@!y}8t$nP@$eO_SN4H&O zP=4uXC;#7>Pap;mwi%Zzqf$=c0Cylzz%w4W zC~Ox2v=O)ny3=W~NM`^~lne$?hn3VPB11U^2YKx1e)CGa^(U^*I-NKY`j7}?-ukB= zM^Xd(F+AHXjs*1g!R$c!C$~mT_YrKppgID~Qz@K=v%8WHgKYCBmTjX%*Zgk;3fQ=I zd3SaI=bFa~sZM}}gRnjE<viS*Z$*6@;paTE~_Xnw5qP{rMRY`&P?%=jbxt$ueHYPN9qjo7fsU zwy96CCYt}}f@y>!T$}cze-$LqoNmSmgn%IK-|eFv-%iKZ(=jUdiH?Kge%*06!s8t? z#^9#!dhy_*zpiQMV1q8qjxq&p(-OlG5JgaVGG*koD`hu??s<&}uN2cnT<|XaM0-7xdp-)%FG?lWQl`^s9$F^9RAsRNE!yueJQgNn{Vpv94- z$bd+QEAY(@Q3bX)F$-5rt1K?S)jbP>o!2yd_g|P$=f4A}n?|yS$h&pPbo-PC`WOdPAa0x4DF{`=w>eiK5GrwJZEFG#*B@>G+eFHYkZFV~HB*y%zD1hB=dA@O427pv5D zcfd0oJ_zA<$Sx4c^{c7D(q)3oFHYbcX!A2TjJ+2mGDT3eP;d%>w(PBsIh?wq4!awI z34Ad_D1rHb%srtZ$P*K0+glT!L8#HiKiI^AgTJ+3PdFmfW`ayyhvj=`5i1j1_6fF- z&PVUFqvzf{Oeus0_>@9efO(}vHIQXrW31HhFah$+2X#JR(pQKi@V-J6f$is-5MVI`5jbE4gJgYB;Xe=`LbyO04{8V(Sc)m!8#HLg(I6Q$OQ*UU>|hcdZN%E* zFw^j6pA}sX5d*eFt_X;=C1ssGnxotW)9_iYA0-tEkBOLIBRm>KiQw4pC?dG^o6p7c ziUYA~YCBCRr4$=^|soPwF5 zdhV%m8+E@5{`w9~<5RsA>0W%RZ1+{3>MahcF$RRMPEgAk92H&ngF9Am+_%Bc9NEAa z7*k+J_J5s&lN|j_@(IU(#*VD}+pvwn<=+8li_c-ggJOauGO>lXqW8b8a`672eJie) zC4Fyke=~eSaM6!kdvMXW2J4wO{DE_UHEZYwn|b4X#E7JjmJ~9nUFip} z{@||`eEJ(GasirUh_3p!48c`DEQ27}s8ov!hK5W)zzot3e*4vCr&7UdpR#9-8aMF2 znzPQcR$=s8M9VZzI-KebX$ZLx_l>K^{$-?LN_a{Gx;;re1TC#To9s2IaDoA1#HrlS zAgdqX_bCN~{rX<>bB*{X#t3{y=q$ttv=%C!lo$wLF1OE~hO*^ozhs~@!Ez~*ijP#U z72Oprs|^w#puNZzP!qkDg&4ccCTQ_d2lQ(|B_WPr^l1$=#1J$P8%IzjXb8=QtkiDA zR+@8%%7Gi0_?~vvrLgctD2sVY3vK+SIR!7&Ydlc=I!a@}Yf!yEA)_MKFJiV-1A{Pn zD5C5#7ggyPh61V5KA3_v{y^?8Fd$ZG+4@ZWFX75aN1p9c(~|JfAuO!R(>$RTiPHL- z)qM1)g;Z~r`fQ`D(2T5lmQ}7a=@bBtArl6`A!Nc_tAiZ1x($$qOnWT;gAa77J=rgjn5d`cEf>WoQADnwJn z;}YU2CeTK2dvcLlzZlaGNo~{@XMvs!Y5oqxv=ONiSw-aGgAgfa8S~jsT);xr{EI># z1ppF7`<}a8WbMNzCj8Sd;Xn1K(V6XfS|T-wGvQNuT-HQ1*j>uqElUJ`zFXE5Z_e(8 zn2^!qa%2w?A-3QX#Q$|nc+WD_M_Qqp9rr*D&XY)R2-8?>WEHXFJl_UkFtOt{zi1byv`O7KP-0# zoIusMpCsU_7-LoeJ{Ew^7(8Yppzsi}VIu(Fqs}%Zr&JX949y4U7+hgzBLr7WfODqT zL+}zT9Z^dxL`sZl#hCc$tShG-&HNH6GUoWz;4Bmy60(;19KADv#e{ z`N>{6siq3>YJ?sjHU)I`q5taeYKkh;c&`k{VrK!m%pkWR8G_mmu;_ntPjqzKXN&%> zxr@%?dhka$>LK(aEUx!pTmz72XC1nyojD3>WwYv_q_+Mi#AL*y9HKI;$;eM)w&Y|~ zzxd@9#M>O`p?HN+z@wQ_Kz=sWTkWl?S-qE8eeCXd7CCO*+jZznkQ8V}2;y+wD1>m# z10h7d`5+VmIGn8v!5gz6BnUKAs0joRGQ1!)h?JFq8*jU6I-5R)5^QHNy+MrdjSI2P z{VK$NAVymNWQYKn;MFt9?bx`Qltuk2M1DAi2yq`S@kmIDCn$tT5}7MfI05q+W2fVOiU%3=j#M2TUR5K(ga z(<96s*RPHu388=|gOa^z!DTd{K_}p?4D2s{F*kdYxf-Vc!|)Q<3dj*%!6q}1_jWI~WdU>ahG#Vp7i&FrY)xB(=Kftye_ON}BM@fp>t^jHT_ z7!MZ%C=9_(D0w+KD0!8(tV1xKyWsg9$1_gZ0MBwc`Y z`WvDW_|Y?8$G8L_fCp?1P+YRCU;nTYCn*LB;X$qffH~Lu)I4ES|9)|gwJYBYe^GL6 zQhm*4Gvl$r=7xBIaJ*u)fT=6(aJ#UM`yxUX4LxqcxA^D4IfMv;uzxXrATU(*;Gr|J z2{v+?l=prj=Nwj?1eWvZlL|K$%@%c}fT7zMDR4T{Hc3T7umGH}j%W-PAVPvAlgq8G z94dz$xH+M6K(C;D;i?I-1-w;9DG9Ktab|#>3HeBACF`~sylI5x4Z#A*=ran&iopUl z)CevxNNV2bozeKykb3a!98&+`5IF&ZX_3tzu1N@IV4|DCyHR~5rI_bZG|KRggk}o3 zdXH`X$SE7z);Nzx26N89{w%aOI=P&UIl;B4PVj>|DTNoqw#|(8Lij2q8}K@fxopB+#6N zH_BgX8aO^aF~X0}G|ag-^~^R2BN^%$R7|?qK;sBM5l5Jg-XWIg6En@kBdn7)AGS`0 z)J2mB0?`B6lnUheE(hjM#_`&Aelm1q+c}||Dx{n0D(Gy!m)N{r{);#b0iP}OUxfB2 z;;{X&nEYJF!%36Mp4m`+pr4A3Wxgh#I(<`i-dSqYYQVL9s~p|c>H?RpYR%=R<4V}E z{&Z-57Pi)Wti95+kDk;BW-p1y`7@_%eiC%2j`L^ZBGkwEv!`sxrwzXP%Q!JRG=CXh znBcbBCsyjm*+cV4?72QPkF*=ACDk56&z5AVXOUC2c@M`GVb0HaBa%stDf(P!q7FGR z0w`P4l{YWvb#Sc9?YI=ma$O(e&wFD5<9|Lhr6L;Ql%}+5U+{;;j+qO<7sBIpm2Mo4 zgH6#4Xf)8aDWXlb?E{S>2f0!4i**xVWJekiFHf2uX3Q{O3av%G-Iqd3<`W+kQ*Z#7 z#mx+1=5lkw<>sVw%A_C8>;99mJm5>1dm3$G<2u#JjD7i*lxxP>b0$4+Mb+jF`64cV z>HlTa6Afahg0M^Kb@MT_V1Y55q?9kFVvt#T~iE~A_*myW3Sv`6h^1+K)#uW$G(GUfDP zA|45b&cjg(%)w9y7*_;YgBGr|!t(2I+uofr>V+abRGAyd;M%eW>ZimKNm(dkTK%0| z-4Ek(ogW!5J+YJ~{$IR~2}>S#b9>_mg@c|*(8P_N_+UzzS?uY`GuTzxpkkzdPb}k3 zI9ys@w?0X;T<(QD`NT64hR`b(30?zgnU@q>c$nr%xxQF;hmQ|RR$|$OLlPmIkCr0gB4mVS(dT1OeE{nWZ- z=@#SDysxD)fc0+Ozc7bD|M&BwcVR!O&3S~zdFN`kY+$oly73^kxGr`oE6qgBDOF3t z$?y;bmpsL_9BFaUE;L1OoJ?ApHGESOjKQMA8EOpxNfn#LoTGJ{kQmgr>P2>8XnnNq z4xHlF+=)Jf#O8O*2!LiMrKDEH*&AJqW*7(HV!6N@ZKagklO`I}$o*twR0;rxVW zJr8^P?l0)=2UkIBUy2BCpHZv*606U_A@j2rm)R3_aM){4GH$l`Ln&v4`A_Hy-ODfo zy4nEdQ0KH>-d^=yE$qUKr7d&th>tH z0D3yhEkIqjJH5SJ{~+NTOE;pF6Tq_VEQcf-LLBUS)S|g}BSRUznJQv51X8GlI$HVx zg+3PRc4xQi{7E_6Xq4AII8KUn#rhv)Ga!Ss&4#IU**Q7R>Y3YsGYD~h_wFXi%BcI` zCh2kxZ8FFIO+7FlI!|D31PL{_*qaE;>@~p)U5!Vl!_XO_Z3XziqFQuwU_?E}VhW0c zuLp=uHHf;mC7`h(6XXPMOG0l1ISv4x5?S=~a-PuPXW{G#16TT_;pTDok*r%3WX0zr zo#pwjWo)Up?_Q9s>V||BjF0Qb&MrvpR@Mcj7h_kDE}u-~#wef!D8P>-LRkPFduY2E zAdA7p`6jC`Dr`_lZ=Xo4Lqx1T{m}O64Wkh|7Wy`K#?j6ycrxOPZ{60vo691<2X95M z>e<=lzx&KlGfpn4do2QuzNEoxkwD~59pT`fiz(q7TGHUUXirQmX~a|RS6H_gJPVr^ zeITtRb!S3gO-mY_31hzhbG4*|4oog7F$f)xK~S_|WE)yB2smnKhfHmW>fII7gso|d z%ri2UALZLR*&fV)v)}@svW3gybF-~n2*svkgF>-)a9RI63f^{91^2Sp=Pp&f8-6S$ z<`Zyg7xG+7(Nf30VE0)5Nv+w$IOI^pp)nX4c>B}oIB&5Rft}QDIFt$}1jq$$+wl72 z0tVxVyrk*nOiw6rJHaWdB=PUx;&9;N5^QnD!qDVC0aD;NBb@P>!yu%U4)32+A!JKE zSCx)VIC@-Q$UHzN(Z(SA{4a`BQ#!+%xdSn z0LOAlgzKZekrl--M-~G330pwo><+5SF?;aHSJDqo8bZ9*13YAI%EWO`yF`oyZK+HiR7)UZCj}1|+_FJ&qDA70lzCer z>+nAupF`Dc2bR<3Jwj=op9-u+{}linJ4#?J zgq4jS)TLO%?+=bX{@n$~FT{T-n;f;p|Eimc?L0G16IIfR3Erk(m^_IVa1K{ABM6YV z7U8+NU;Jwp(HydF=F9_!7faNu#{v{1!oU~v!C-Y9j`qUljDesARpyR_Qia2d=CHc* z&pJi?Y+lFDT4G6O>@0#7P7yo?w?%OokWb0c{MqzsfV7P-#ODww9C#c~yeR?l>VXuT z{nnhx1Yrm)5hmk0bf$#p!gIjj#xMai3Wkcn5)Y)KKhoQEM54VN4oGI-aOC=+N|bWrI9UNB z8Zb#H8l!n-RBhN-=Jji?W5`Bt?(<3rRJ2zj2LwIQR@tV;U0^h&jj2q(Kgfbe)~-$f zyx4=|Bwz|E1xt5D@*=8YYYLI;>Dv)JcN{sCJ8nX|GbH=*UfP{Ltf$YG0)$Fy zXfeWTIFKQuE^cy}(qO_B08A|?)!E^=QywU&Jt~N+J4B09%^)j4lhZYJkvhc=#!>9! zTp($Has`h)*gT|Vcres`zzkcPus`HT@J0fFWusq5u8RO>s^BQ*(m8ZQ2$R=)ysI{V zMR+TN`4OS}4(&CV^FZiX>{)tPuxkCLf>j%Q0K|0ktCBt%T9o?(tU)FpM}j)}0Qm2f z%BpP&HFO20U?kM#%7l{ywJ^2fu3YJ+$@=Nd>eI_7onE^H0U3z4Q=zr2r}2{|L9iWib8 z4A9%j_p~dSi<%hH4rg3Qd=OXB)mmxwx%;}+{TM{=gBPGYWFA#qNY`OS8J??-y49=i z>y2Izbw{DL9>)HF8Pe*bZ`Rq|K`TMQW35EfK&vD%vhtH+rp*n}RG*XO-@lDXsWzUY zq*T9|R&V-i-1EPKYIJ`43ag%X?l$eG9za|A_nQ`NV?x)kq#_}p94-UWn+U;*X*34) zOafVO=tlAlsh(k__VH%*v~#y^q@ArK7dMfyusoy^bBYBe&znp}xw4gH?y$1m} z@{88~I=JUzo#}n1xM&RJWXvRW=q^lasj`xBLR7y+2Sv&me%eP*1i&!O^f2mJNilr9 z1wOUN++ruzZaHv>3=}yFEkC9?oPrt7A1*MQnrURZkxgP$2>)^Ji`$c3VuYC(eafn} zh?Fg#h;<>E$Fg&eqyH(gj?vO#I?J<6Jt_xlBrGW_(H4k@M6oTI07pnA)1nfIo1qYZ zw(t#kVJnxROcDb(Neqg0sCJ?zV`tE0d~qpVoEDC@HNcG4T)@mlz|2LO3@#&2jwP20 zzDbk8MVbsQ(qwSi0u*!E3KVl$1Na8L24a*-KclQfj?!K&n7(g>x)1i*;Sm0{TT7It zz1>>myMGcT#OllW|IX(z?SA#h2lK5-^4z4)=TCkxzc@*rmn2eoNM6XROVO@#*-F+i z?LVF!;?#$>`BlDfNStXkFX=#TC$nv<+ZnKD$n1AtX2&f~=`M zsJ#a!M31cBsMj#dLWER8$pC*KHS?ac0RP*P3tW}J_ALo*&t|uq-F$6u{njSEH46^? z8bGML;{dWPc~1S-R=s8XoS6+)Q|J-R{v>uE=+kF7Mwp?i2Y%NQyYiFHhfvi%GKsSd z<_I5m!95dnvOe9vFuEqxM~fA86Zk{FXN~nmCe?cmR+X^^A;0SeaVSU<2|~*tj?V)> zumdvIa-lsCyBoyuq*LqAOH*Ws?2y4xLDyt-H1!)7$j%ln81=Ts=C_I743BP1`_t5> zr8kF8B;&PHn_$#6YO@CV5-=L{Mb#}VeV?J0!71oV#Hxwr3NN+$RW14=NAwT<@@Atc zEJpRm;WH2G{45K%kj7YhJfuG*XIRir`&RaVt|Pb9gFjMSpJQD@%f9|BnZZ->uwzEHuyAoLkII5@Ev#N%4X-`LS8MfAsJrZ7>hvqsPfURIXPu9IT>C>Apr%R^_xB-UMHr}6%!h12$n(rEl z>%^RaWrzm$&l__9p#;O>80gZDbrjnH-Lt;vNhmni$zTcX7z4~9cO)R>1d+lEsDaxA z(Kaqh4s4Ze+Rl2@cFb%VIKWlFgFx)k>Q#T>u)thI>#Rw8Mxzuh0S?%S;CTj;cQ{}- z=NxfzI7V8cBhLJwD{e!=N!c{T3os?Q&!TpBYh#s}1C9|;digSEKq75A^q>I}?1p5q zb##!bkt9592}i0&e&rv?t&x+-I`0QM z!-3D(6Aru#o`9;*QVUd59r)aQRl+IrEP*{c@WHhX$JaLEG()BiJSbn=#YvYl7f^m_ zJwAPZLGnTXgiXWjwg(JXA9x@RSiFRh1`q^X>I2X7F47D_(!r#9@Ypk)pAW8lSZdk` z$N@*Y?5CY2oILH5h`a_@qzLV@!D@sncL0P6F+hXW-~wn})_^s$%f5ft=mgpRX|Lqo zjgyj2a1v=5-k}&_*sRz6s%=)8&Dp6_VDcI@M~HM!#N2i&_#xU(HAe~#$x$;~WC!a^ zJH@{2!2nwClsHdzs>T)kK5wH!^2F+WaifBpa5-@oP zD*6O@r3r_Wi!f$@JNJ@9m!x>B`R9WrS^t$I0~cyN)<4x_9Uil{OH-n$W+Sed2UbSU zK|4WUl3wnqd;tIIKKwJLTfMx%3;Ky?_^_WhQF4jq72N}3i@Km11Yg}4?pNYFuoT(y zpsCI%Qn^M%(O4e3qnfA9kKI(GB*sVLv2pnP{PV%Guf9PaVSw`=QgRNTgVoD~r=qRg z#wcMyUk-rTm0ge1DqbD1wqdC*K+zQrwy);OA+fwXyvcLbaStOF!ar;>g3~jPT&M-o@{csC zt4J86G(pB{JVCMWyKbu^J zUj~d2w*d(o2qH=kB3Ps^)S^DrAbAAyeNgwB+d!lY01^ip%&#G4R|@xY5_}{MS9GM& zSWl$`ZPKru3*t&T z$3tgk(r>ST1`8b8U>RzGJES$!l}SH{G0~(CKzkP`88GQLZY)!)ZS(W>&K%*olP8-eMQht#0|5q z{L=9~$NN-z>KR9oUWlN{Mn68Ty$j$m^IETJc)^o!(;`}pB?8S7%7#hBKhE-9V!HIt zYYmI`!=&Lcg$lSz53S2m<+bD6CL2k~QB-yxbba{Bo&*H|{d^@iAWq2mExknAdVy$8 z9k)4pnGQT+N`u5v>`wl7OD8+zCtR2cx?GQ+PK<8rzFf%IMV@ zvky@>$g}bQ9qNAp%K{9Jz^(~+LZA|=grFu*(o+I7hl)+Qd$}FM!EfYZN|gCwkN5Uw zJq=rk5Qu;)7GMO=TDigVO=ev|3royJ`gtzW&vRLWsw9fwtQ}zFSllD-IL?rU>QCPA z!8fG)O+s`Cm|(rD59(*V2FbNhu0Fooii9!(wSrvD10PJTm2wLhnPS{S^VcdQ4*q}X zMvHuNLjYB0U<$K{O<@W%h&LLou-o=H)(9xHqMjhSu7zldZWgMd$$d%B?4^aBA>l+p2&Y>mXxhnXuYgD)gjb7znutbQ-*JC?K~}i!P^IqRya$ z9bHT{Y6AcX0tkaCB`GhNm%ia$NP~^2fI=7n3Y|(o;Q_VZp?!+f9s(Rt8#PgF8lTBw zj0f7UHe*H2V9_9uD4^6BzZ|6(IoQWzB+xesW&K;n`mLgKV}TU@g=+EaO7$>&U{b^% z)vg#5mFi)JFin0cu%JS9q870*E#lqzY!RxpM9^@S@!Jfpyp!JM5qz}DWe-T@!(d)X zZ~FyaM)8h<={{Hw%a{}mO9%BrAc=M=IzU=B`suW^cn)kbeEZLf>;f89FUF)3G5Rp{ zL)&OBtNf}qi;SsixzQgHP;uD4TO~7Lrmi@P(br%Nv;kJ<(5Qs%mT)~PTxJrS0-YWt zw*O)vwSk#ovU3sd^H?@pXlT?}5J5NzAnABVml{#QAxyJ)lbaF^3TUK;P*@Kp3c`N9 z%!RZM+AS~pbr{eWr>T9+Fc1(_QKg`PtomjGX%@HXwOfO`B?tfr7Me*$$Ig%I$vI$! zKuf^{;aw!O!%V<{;#1m!B)8PQc@ZLg@npkomjcOQwqa{B(?^in`>=uPUtftbRsPZ){hm8eHKINVMkOWE{;oBTqZpl3gbdaq;XmN6F@^qRZ3qyFI>U1HZFxw z5gKpUSGp4@euuheFugVg0Tf?_FSw=i39|!AF-=}#8Xwj~+>~iOG7n0#BVTmrj}g2S zI-MTCcR}IFuuq!r3O_t%s&NITNo2{cMFnC!){$V;^TIzJ)3gL^GGR<$O$~TiVPOub zlvy*p`w7TumN7l#{gQ&(7Ex^2ycN{y`TJq@;Oiy&w*u0%dI}zB?WzjzvU(xJ3~|Vo zOQ#H6X(kg$SfI<_3Y|tgcAMC)6Xljs=B(85=RMQ1( z4Qj$$eJwFfTG2TnO`A>^(IhKO&1j|7JwH7bfX)vX0$k5g$j`(1Y!pF@>40HO#*9K- z8no5O+#2ay^~FDU{%*OgtS-Zl8dQ6T+h%q>jk}I%EUhh5a}^YzKcR|TdJ2|^jD5N+ zaXEIMEm2TTjH*Ze;Q7^kUny9&>T7@Se6#j?w?PY#;5R>YoM;6iMw=q6sy@do!AM{O zB;I6JyhNTeVLBWA3+B)`$~1F;mWt0qO=K6R;hBOEL?TnSP>XQJ)7P?4r#5B~1w>Jp zP9!ou=26Ix&N-wlxk(Bswu=k2&%9=s58ve8#6|8+TogsjMN!0DaM?T4jy68B1K=RefH-RR?Ql>KuLJcKGr_*}MjvD0ozJfULP-Um`pTNTg{V5QvK+^$mHlxQ zsea_0DpHNwvHIdWUod*ZX5^2Dz*f3%6{-<@s?W8bVZH6q*KbBr97xq^|0Qusko z2WLa4my5nV`c759X2tZ$#gpOh^k+rA7JCcuX;TG*>?RkfKe#C46PJxFGMBZpw>Y%vUZFu#e(}ggaHCXULXP^%S!a$6!Zp1p zD>$%na}$hce~F;yGw{Y?F<6k@f$-|l2{inrdEUWDR#s-00RqW*HK~=S_k*#LbeSUN293As7A#@Y*HFQUTRr|wU|Vv zv5;Q9*p}E1@)l_(S!{TIgaMW+`B97$>D6-ZV=a^Y`cNb{v7Hhj2uhYMSukjX+CTA{ z-T`^3opF-y;*R4=xOUwxdWVayBud;D?1uqzw=0ZLiJDSn-b+_Q8_^Ek1j?d&z0Wni z9~4ghzBjh9F3t=I-K!xAOE_DAkmQSpPj(*F*QP~|c2S73sCqgU!WW8XSGu4V~M z71Sy-EF(7HJ~)>e%}9xjU9OVhhX?6!8jEgiGz5)|D$LBcX;T9}{AwA9q_Oaz%>uQD!%EfB=)!?E%3dpoVtb9ANa_t)C`Dv5;b&%XNxB6g4f#$B zP<5_mabVi$xI>38Ot)xAsO?~Q^a*?;%GEoBtRZ5N>v#3#QnRiX-w@`b6b`DP&l*&uRM&WFT7GdO2VQd?sb0J1EL!g3&J zfJT`u5@vS5bOuS4*u1m=1t%XabhFLPTPEnC=pTY+o01Rh)OI6hMJ|-nza&k}e`w+0 z7+y&oW&{Zo=GN+_XP!U{%c7vg7(ItiBKQP{9Kr}JPyrE0O$Rup;4X9+q+!8lhCwdi z6M9Hd#BFsMir1bwt=bIR9dU*ki8Xc87uI$u z8^YiagRx5K00Ne}?+NJR?9^Jo7(`F3yXc^?A~@WM6|wwE3hFiw0u)5r1+4FQl}6OE zRgyTU<*Vsz4fmE*2BA*I?5;C?Tn2EnXW;09K@L^`jxGl`wzG+Q1@}+|Hfz|jB6AdN zghI*+*lCqJ8GWU%{*7A;W}~xLkjF{K>=QqeXI=DuhKU-5c1!1K(>8uc!7+SWg3Ywq zpAk<66F9Rc%1?|CAaL7w;E;~lP4r}U@`GZBiop*<%|yavj?BwIMeG zMSeOZ^f_QRXOHkTl2qU8?B^9PoxD<746+ANjGx{syGZ|XGYhO zXOh=2Xi7T@@Rvg%g`bn^PQ3*CWnQVAZ0)&w7duzFi1oHN`d{LCBI~X<3?Hn8kp53* z$G!3;j%-a*EIwG8ZZanX4Hl}_y9>1rKoFpe3g(>3l!85nMQ=F9W)bAjm104bnwcy!i8&eojM7Uw46-Dnm%}n}SS@}|{qti$ z%{2V*eXIu{npFWqTZ@sOYsKb=H_b<3UQpRnw7r={+Dve=y^#nQ20+4g!38|Lg$spu zYJdJ6Lcqh{Uj!4aS2nCq;85QMU34rx<~P52`CU*ymi-mxDI?|9>YaB9rt9C!Win0? z+t}H?M3F&}lUQE^_2I(a|f8UdKQ|y}E{{ zKf!Rui@Ot^2T&GUgJc|bTVr7^&FH ze?5cjDq0J;Rej*)V)?qVxAJd5oxLLu-}WH#)A~cB*OLPhMhtAV`_jk&x3fBW* zl$|@u5lhRb^SHtO=(qHa+sgI3i&vH#7<9&$VX@&w4>Qf>_{8!Z<@xXm=keQyVo41@ zjrRZNV@Kly;3|IGSgbEbFM61!3fen%lxAsV9b3>jS}xsDKAj~|8|#Xv@w4sB;HZYi zJvnZ4xbn*@Z!0gjjqT}+GwX>*PFSu?5Wx61u@-8iQ*2_85-IXxS>J!?;oEp(>5kj% z=7!>Ye%?@Qwto9H9WY^1!y2YRND7grK7ceLm*@QIAr13O6 zg2p8~0HoL^t$;|hfSGuM3{8-Xe?ix|00~>sVm7O&8JSe96k+7tnIltl;Hsi>XMK3S}q8VVo{`KLoY8z zm02Qnh{<3_%s&f%y`3?p{5ToR$D4nLw(PNPp*WxYK0J zjA@9XJ5RCX{4;Ds>WoQLEU$?ZHnjlL5{Ctnk{oAzam%rdLA4y)#*eD)QLRe}vizdjB4M;C(|RH$9Iy>cGgk1k)RR zFA3P{T__~#I}G)zU(u@!X0A8#HrgJMT-f0(9gzf|JHW9gpN;${@P?A%SxsIz?1;hy z-iM-O%i)9IMN!%Z>vx?!1!Ym*LhlCF)ZUHK6DS4MDg8!P*}Z3>k*H|&QWMh`I)s69 zH`s(lyE^8~suvAYZkTXfy?O~yVP4`I9Mpr`FfD~O^su?!=$Z>BBh2Z^!^IayS6vw0 zJL`_vlo$y6R8$tmF`MRMzRDts?OTjh{`MtR>YSrgFYiyQ-}@j|E5x5PLOj9>Vxedn z#$^|Oz~wlo1pyr$s>GiF-yw<>CA>@TLHx-Oe`*`CwRj5g2fPOfdNC+iln8{7nN&yb zor9*pK0B+i5WJvO2o&Z6=fk*V8?|L1^fz~By>B<4ohUD&Y%=^B=&u4U{a`XbbNMtU ztEC^q$qJ228r^QuVeJCB=v3ND*6&zAfgEN7k}(oHkto-4%i4(*(UhZ&kT+OVZo1|& zD=LYd0)jWrb2^c)D(sUk=pGFBgBV0)<%Uy;7%dbFe202+1AY(><37s?F~s%1xWNt5&Y330WcAvATIiZ2FIH=V*TaZ&mYEqma;Dt$ z>aO>rRf@JB6p~hj{vP_*hw!?svi&P!+_TXS<8ulDBx0$|uC4p(waAqltef_2PAMKWPeJpSP9k~oMz zA_iYFv@ub_M zfznjJ^1kOA+E@yx6UJUNO81LY6*F)~ZS~+=7$SzuW)8w@{T>-Cu#r)h>gON&hlbju z`$i|IeIQ8RT^~4b9f%pX4HxcV2oc38>L;MM6cE+#b}OJbNAta!txARBLUd6ewlU5} zC@y3b;Fo}`I+`DVA$)Xp;AC9?bWRXiZz3XcU&;TH&H8V&3>6|M%$y5`8C{l;szh6~ z1k)ztN$2nYMKJBST4fvxtAdUOkq_q+$yq{j&>@iWfJ4qnwe&vKb`LZ|#nGv_jdc)d zla)uB8GWtr5rjoG+6ni~FAw)FjKEkkkywVFG!}<*oU$5xc}`Bbxz0=T2GT1hSqE|Dn8-PFWD* zWg^fPm!SQ_M!zF?L$0-9h~XjS{ts~E?)l_SfrVun=e3c-_257ndWAx4b6T2X8bm?q5= zuq2;*IiShp!$k)GMUvEC>VlOSvocC6;w**QK8{~@TofHSv>61LwLBbH>*pEUqUMqc z3x+kK^{NAu_{4ODy%p~!_DE(lg@&*ws)wOb_*`@O9!=&tmm40hAm_PrPTiJ=Ske|J zBEBE0Ie-k#om^z==ce3<8a#^U3u%^PC^ML2h?vnKxF_WsWloMF|C-@SnLIr1TJ;Rs z+j-urXC$F|2KZ6cGdfa;>vO1{fro;*^Q(FW^N-atx~Hg~ktp&og&e63X_zvro{^#6 zp?ZehBhK0Gu}$2Ys-Dq7e8$)T+XOP{)&*I$x7aZOH+YbX&Nr7yKen?% zhv6uv%FEbt3uS&a^@q+7z|OQXC1_0C&qDzaoDkL+#LJP*073vUL>%m2PNhBKVKFdD zrO-jMm8lihLoON6rz3!3wT^bvYMs@>LD?55rD4;ot?V=3GW{BKeBw!#*ejzf(+!iI zywR>fDvhbuQir1_y&K9nKiJF*liKf|7Z0{mLgwP|E%r$VhUe|5q6Mq1!+wyGA?)Ir z?7=46oJI>4p*_lyf6(nvIp((X_VkV-eJk-8=@IEhDNXV+{_Y=Vti1gzlDC2v_~{${ zL%JNhRgj!nEE6~wc2G?2+_QF$l9&ryq@ffzwCd>3Xkb^y&T794J5~{S99_m+>HZGXY^|YtGj_kw3f4-z_iypFvM`t14j=l>|HgRM-%>rQfb8mlKihfm*?Dr} z3fkbmN8kQH*}G!+fA0VNr{D7a%THYKu-K@-`?~8k_Yhyi! zC;$1$e~GJ6>y>--2kIQKM6bJ@1OObmql~jkIprBHkd;SfCdue*)(PMU?R<-3wW4#B~`lT}*hY!~_&4lS-s1E?j-J zJDa<=rJZc{lKq;;TbQjd_{eV(COy5xwHW3KXEwkTCI*cV&=CJwz~6`hAT3=CyT#TF zVQfKNuG}ldNpl}uOti{Wu4za?x3Id#P%Nxg2gXAu1~Oq4!xeT|v?0G%(YVp`QQNww zSln~-3a^W?=*5jjgN*93-WUs2#8XSzeQbEBb&&r=H!%5Kskcqm5b*^vMsgR2w5qrs zpWyos$&jRr%#Ho(CJ4$Q)B(vj&9TEFL_#&vLr;K+pBN^*0Vt3@$EqOf1;vBH$tqvb z;1E)a^@1y{kwA9Fv{NWg_(*#wGGu3zuwRNFmAneL;u*?`F=tSSu2tAe!qfI_coN+P z8^WLZd#>+!^Bw12waz8Bo)!adSi+weSc|Wee4!oWVmeucrV^8i$g71_;H_k+Q-odi zJa|j0&j_)t;H{o(Jy~2q2=1j4wm>#Bs?FCvBi%R+ryoerjL;Pm zP?nKo%%D%fN(T&98_G?3l&O#xl(CwNGFEfhHnt?5J8)6r+oj|6y6ha|{h^ZJ8+6$< z#<_&_UE}j~**C`INo2_Qd|j>^KV27g^-Slgk-}wuB!&p(sP;&fY?k>1(roNC!DiW;s|?;oduFq=04RH@mY0+2^A8WI-%ciDqAwnpXx4X%qE_aX%Xde^{bC} zs}*}HXwUQ%*iS3(iG>UidEU!i2%zt-t2q18V#jdeb#^<|l<#4$LPpGJY+zVsUq0<# zd1g%CtB@GeM6Rc_SDx>3Vy_kfPl#vJHe2e&mXp?Au?90wdD_XOdffM_NjlkVx@T-m zT6-1pHcoV>a>&}N``D|^wpSsWqMn+!SDp&d_9`Sn^rdwx52)@e_sY{1`nd|}3Tq|) zTK3A54EkO*`31u=Fq|a%0-Vjc@-%`IdlhOfHz7mpmE{DahvrgloJI>V; z;x#?aPpV8(Ab_3&LIx!-tjoHI7{~2Np&YPKN?HGS2QltTMZZsBVju?`Ev0XPKl#? zm#R&^Xdt7oUa%POLN;Tvi?`TS=>{35<*Kf-o6Uh}@k*+Az&S1643B0D>>2vIrqm@` zQjb@Q`#X15sUG+^-+n9cyBF@4wn4vtJh}4b@d(yJRZZZE@hep{^lInuo|mlP#JPC0 zrdZwi5>2ui-EtTOw7HvYYpJmM+FE0jx|%f{n3luzskVh$vuR@zuV}rw9k)^0+3AJ5 z8?S-SypvfDSL)UKuCRJtZZB%}zN=n62R3DCgcnm^+8B15<`3>I7qpJ1%jz0yyrW4; zh3q4cWAk=EdeQxFi#yTxDWGo%P$(PQp4ODbb%ob?Pp{L;HqAamw1E3C+P=Zi6-Ld8%A1>F+hpx)5lnVUgLoj{I^<6QFwpF-rr!n&`Ny2$k{!I6l`nm&UAX59a`ILt!->G zL7S%=<#a#89_zG_^)u!?_1)pAUv^~u-E$tfC_K_2>xG zDxQuA$txD`4p0-%t8`S$B%d-E4UZ3nRKRFjN05ruH4suUU4lcCVNO}H4VSc#0lu88 z+0CrUQn5_&jEOPq5E4Db8%-G}5UHMFcvq5mRISh$xcO$99O32~AaqM>IlH4zoX^&7 z@dZWT4uM%LA}u9jIH49j=GI2hV`SqMcfZ0^1Z2&;UjC+u^}8vMyzcH(qBv?p)Zy$;jUXvQjBuj@ej45c6$63xVa`RSVJ3TB&S3T%e z`Ehd#(7lTcMN8UYeYtCY6@chK4gvf^tKbV5|g;&jhg{TMEPa z;>Wj$drPXf0IW8Vcco?4vRDG1a6grK(wpm7)s<;z4}pGSe>58bjI-lGz2WIoSYWxq z1bA$mU6Sg7*w-7+wy&9qubR9``X-0EvW`*UHZYxxvfzBGO0w-{%D8#tb>h2II)7Jm3L08v!9Z6T$ z!LHGXTxKVR3MkZ6E;v%Vg>YrFenZw9wOj2+)QPMnvCJMS;2~K}s6aGpciU<=oYxwf z+l{Pd=M-u;)Yrm_=6#6q#ZUpB`;&fhvdZ+0$qQg-eFQ^}ojAbVYIS*;2`hF6_{yD) z&%tdfz$mE=&@xK779iCci_Zit9Sd@Ggt&S^>M($MW$NiQVE|yuIt(DXzjYM`5TMjs zgV*#30Sf~N`n$R#RT(^Y<{491&to|v{C>N`0J@U~HzWBT2aRnm+#V@2oI@Z(r=j(z)BT-~Zfq)~0==HygY0k+?#u{o%&7m4=QBb&zyARcv;~foM?nkO|dIbeTLh^;? zLp8wkC>w|6!b$n*AuA9#BLcwcL;?`~A62YT1OSfanVAFwbGMF(<&A$+@R-XHgku_K zvp@$j$;@%K4t#Jc;%pG=HNY!b#Mz_=cC@;PuZDX^DLX8kZo!VbgRDAhhV7gV(qb5P zO-YJww4McOf=U6pHBC-xx>fH@y}%9KB8_BCx1!0YFS-><5Cpn42-crPg|F2WLW8y- zNXzHQXWK+&^J-OEMH7|JT*vWs8KDAaa2E)?K72g+KXAgX;P$D&fGCp1?{e>4PV|Hs zwgYW>O!Uwm^qu8kuNp08>c$?2@p^zgrL+u>NqxqHQP8=-WMgnma3}Qv(BFt6L zP0wc5j?~`l-Egb-%n7Qn)Jblw)}ca{(jfxK&ak2pq$MxlNYO`0&O5t|k|Q^!tQ05h zu#!>n$jA~Adhs>ZPCZHeNoOMVR%eAzN?C3fRp#RLEWW<+Y+vVP)cJ^K8VCJvl7|5% zV{4G!Z9G{$9$^3${hr8XEF02 zpQWnvG9jHImSd=(YxAM@mpNEL?qcO=L~cLq^Bw@l#j!-qG{V?fI{rtPP)?d;__=(R zF16$rtqTw#zIqIPl4uBjCLtSbfW#O;Tw)CVAa!V=JpTDsoLK-5Amko|xEg@m>*S-p z)Etu0Yw!+^NIN1O##17>DiJP5qP<8qO%9Y}(S((6#8 z98~|)-144kdns;0)n=ViS?er;JGe2RX|`P^5uMS_u3RwCDs-VJK^9L+6rJ?V=vdsb zMSd$xG-gaaJ6|k}6LZA-N`DX?Lx>N{W@pTchgQOM=j&1`JB}*@Nbh>Zb9(8 zK!Xaex{UZtFcMTq8p0MI z$!2Nbr$@4N?nt&yjAUzjB#t)1NE*ap2Ew=|Th*%)*=^Md?Px}_!$-1p-bgN!Qb|tF zj`bDqN-I~eHA%Iz-jTpgK~G0yv5g`)dU|wd;Xu>nPMHUI8A#IgvO@q1W)Eg%rxny- zOc|OI4wO;>{9(;v)mYfyM6s`&k(XI>rLkPuHC}1JB3q(%mZ9#OyOhL^x1noado7(Y z3-Hxwp(fUHpH^WXYq?KDATd;guj_m*_sxT^>*o&TLz6?fzC9GzCWN5`25=hGuh&qn zXDHWeC@*e?@?sy#_49^u!`z{KdU7Z?w1?vP4Z=|B0#(t$#q1?bwZqQI}Y=&~9 z59Nk=L%DS>gsl={1BiW%5g7!5PrYbwgt5S-PQ%y{hp|-#VxV&C43NbNz7fcNW)SQ6 zP6FAj0myFETvpT5LzxQRUGC~^&_L9wicx@;lsb@hFR)Hqv!khaLA4CWq8#-4Nd0b@ zAmc`l!iz!%^cCz+Gg@V)Bn>@VCtjf!iUEsSWYqf$eo@dhF_YM*Pto|da-`(n3RRpJJefL_rb}z2jb#UUUyT(*1>YZf)VP*2b@pT@= z9$jw@?=4kfYhP>&Y|Ujm!qA`3TXlC4%SI1w0Mj+zVO`%AkzApmd(1sUb|@f`4)f~R ztH+8iLnkb!7qg()#=-?la2VlXt_=2>Oe=P0lNFmY75<>;Yw(O%P@=IRMsU2qof_(G zhxI9*6M3gu6Qln@TvW3)4t%I)&3L169mgZ~II>5lD(ZXpaqm9vNr)AA-Yi5r5JL5X z&TD2+IIK-?EuLyLXcR2BF76*mS~nX^0+YvJg6|vW>>LS`7+hnH{>TY=LV~}VQ?lz@ z5&x!DRK+?jn*`60BC{arhUqFu)pF<{&fJ*xWTBQZZS^E>&(&&XR!Ff^#%N=|w-e6s z7VuH&tLRW(hg~2~lN=F%ovhl5k8ZV9=UZ0u?jC?HW3O9V5!s`5=$m=g8P<B3Pi1p8po0}I_1vWr3r{KLa-%-E zPq#gtaNn#d+WoWRiUosW3uGZR=6Eujz_4#;eCgX5BXq8^-k|Qj=fmGwn$x~w?N%=z zcJOo=ekq;J3ehqKiwGiyaG4fY&u9#ukVV~;_Wt{xVK#RuL4(K`!tgUN*6#xBelDW+ z1x)#rq&mQODiHs@i?ay}&PM98T=j}BSew+LZUM{pz6Fg+q>pR0xNAn{~0X zZ$)^p<*NuqrzH%4cyc%NUxE9Fm~gS+!Uk9nNrWK(6-5Kc!<3gnaB{li)2`?;Woz9T zogj@+TxsLyqDz~)w74uMT|LMe>VPD$*m7<{?naI6lrM%0fXz$_sRjL_kwR<|YJ+!# z3Du&|E!c{Id&5`AUe1jx_(?ts@)r>PiZ56x9dTt%n1d5SW)6xPy?J9)-PB-Xo{JPq z_UO?Twl<#?ex=N=JQp{WWSe0P^IfW11^`Td~_{Z2592`r9cz=6rf2E zq}{mGAW5WFMSoGjGHo6vlb2DnsGLtnZ|eh1!L0y){Gd!{@zmvfXyTWh22H9?QA1Nu z&I|SpJu*Dj2^maM2k6yF$bcUMt~?*oKpg!+za2z9*aDa$=2AW zbo9ivEF_{jw^UKqWvj{M-q0L_9lcrf$yg#lsO08%K&!J=B}B$eaf3B?M=*mON7 zr8R%F>tRV<;_6qQSX~clU@vQ-%erGQE=2PfqSUhrj4I&;#PQs+`hP*5`8@`6N|MfYyz z$120V#+e6FIW(|vMfW7?JbBHpru*4RKwi8h7x0K$@b?VQAx@@5Hzo&|E8v5RSkc1+ zjOGfw_KdLdrwDrU6`m4ypL zNFngl^1v@{VPOJ}=2X>AeClGW2nJUk=5Q-uQA(LayZHOB8}R5b-4Q-$T2;B0@(<*C069{T|(NXWHgvJc&%)wL87 zv>I~lpu2D-Etid|_v-*73AF1aXOGZ)o*;Ia)9JC_}b#!wWh1yrE8 zJrfK?tS0#v=isgTZP>vJOnOOiVszFr$qcV9==Z)~IbT zi>(n84RDZv0v|D40*(taBj$EJV#)jKstgxf`!E3Evl3=rMQT(Od2?gI+;1(Og-PT* z*QI|fH1uCCl0m*$JorSC6GzUn0LTi{^2)flSSXGhqNDV~^n?ckKGcV)tjvVq*F|8s z)XmWt#&0dJhRPn97YEgdHE_Zff@Mt63%4CWNFZ=biM|IMWdINV1Gc(utjwF{;Hd43 zRd~Uh-oBtL1JyBl^@^TM1hY`4e;h;5KKb6_5yDveX7Q5W{Zc`<=n<;4iA6~88p+sy zv}*x_5M)l?p|d!;%CCn8)-@AgBBkp`D+vFh5Cob zE(hsek%a%`kRQG%BMk(y{{BF9qRbvBve%NVAUjb#u&g95-4kU`SzPSF6J>saQ)2(B zNA>#&0Q(XDkW`4}fe|w|<_PY8v@aSuc?g={0Xa&qr z^j}MZ54Z<<^{6Ux{Osx-R!i+|K5HdwNbaHxg`1hvdXCR0-+lV*d{D2z&#?r};(Rmt z0bra$kO~>(&t7AV(wMy{d99X6uf$c`@qH&^o}JYP^4l#fP27X8UVeMIu=~=Vc<|Rs zmSxG-XJPktl^RJx5?p&wq$r`7MaPbW%V z>BddSPJmj7JoaU~$Ci!7s*d@MRbNLQsvh$(j$$2-xfoG zLLnKO!54;j!tQ&!gS$Z;vC>9nkF=}BGIt5 z{!{HCZKGkWu+or6h^CY%zA1Xe^ODC=io0vA<&S4j!nV$@c*+`NfS(*x$Cj#l|NR9> zl5qBscY~eI>Q;aG*XK1=uO`zB#L`A*?6)%20z+5NM8`Ef2ad@??86`f$K9kep zyXV@N+gfdx?7P)Ft>?zZ8blzM#sxI=Y(>UuPdyr`WstKfGA7*(1V_pUELZwIF) zz^=70XA6R0=+(eLSvzjzV4vIgl-KrW{kvKk0!LeTB*_S9k8E?Fma2c$Wb0st<#M%)uws8$=`# zFX+m6&-O|KtlXE@kA5AkmdkUszN=cb)=_<6bA-ORSwKTV$&p_Xn8bG7jK;m zp}&Iw*Q5xEDqraf=O5nZp9l? z;|qMx<}`vJg(umhDQhG*O)Y7>`($$bDj9xkJ>q*dogV+vS@E5{Wa|;UrI_S$3h~|K zc2!&A5fk5^h4@Z_3yJSY@y|kh-=J?WZf82qOJRAWhAcZL#izMBTHNAFxsJo4BLEua z+oJp`ik?oJLOgpGw61TK?=#z)B-LyF`1d~6y^$X_-D1Y;!Ars|cp(4nC2CS9h9=bj znO>tPNei7*w?KO{U0@q$p#9lSCOQ*BfmmD0HzoJ<;>_Yixtks$wN;uZfrFH>C@+sN z#PAK3ck5dc`|;m<)$%Rz4j6DfsQ_4~&Py05h@=B!YG|fGG#QJ=FA0n&vN}BNbu_DME6s!*vI7vH7 z#NDh@6MKbQhUBV6Q)+c&V05kel9OrnOOt94cE7PvSVBC2+K?(`IwhIp=&LjW)EvBe z37Co>kV+zAwE+TCQnoCsp zhn;OZpjd8vpDHZ8RcaDA@7`(s?dqC zQXlMrm-^_a)Q9vaJxYDReNk#B?7W*9u*j&^N051%JW4iX%>*-b&oC|$=wV9(Vwi)) z9QZdd$xY)}#KX`W?Fza}Ptt*s?C~xg&Ft2wYtONmtVM-%Z!1+~^HRO~)kj{B5DD;=yE11lW zL0F4MbyL#yJ@X?9vm{C^7763gE~u_FG3?)hL?RfBzZ5Ww;WS+xjuYY+NL4Jk8gk;E z4@m6=-vH|^Tt++5)%BIhV;h$ZJF^|JvrENa4gc>srkNHCuKAByAS1}Sh{$s}g$Ml^ z)hqY`nveAN%ePcwqVZjzJm#bWnp!{!KVV6Aca{<6zQ{X+wR#>W&Mw;YrEB4Ya&Gpv z^K*f}xm6|Kk8D|p@ebY4E^mqy;JNN<3h4-CmuH#=%Fz{rwIBV}DB`ea7HV~u0Q=?) z_@q*J+D5|7i=Vbko=V}#eoiuA!`F9aeQa7*VQ?qoHoVNf2$O2wV!jMnpG^+ph}huV z&9{}D5vp@FRZdH?2ggYWw~>>i6GANENX{vz#V+tL=*%RE+FmESrA(6SMO{wIz9~a{ zcbw+1+*Zm8qM>qHfd-{I+|qQetUQP1kBIuL@v#Inbe>?w}l zn4Q+hDx|2{>Ig&j1S-xgpPA7PK20b#?jbjCPMT(&&yJl>B#IHdV%%ih1duWHJLk;6 z0`;$Q?uB=viIbgAMjz+wI&3&%)UgcCBbQzniF(AD9Orwokb@v|)G1UO*Pw+u*>~S( zL!HI|2te44Db>)uDTk}V$szNxN>wdc0z1MLC5p9X$tbV7*LYG|L_Fp>T*PkPQo(BI$8)0K}#bsF3sP4ieW? z={VPr3~=FqE=hSvdSyWOAYV!>&j~0_+zZVz5Yj9kEC~daD>U6$ZW|38&AsKeNeQ1S z5|KI@F{N@w21m^T;J16%8vix??O`^Uwbr)E>of%66qJBNEuD8LejoN(& z6GpaW^fKs=FzCzAs{PM_3zsoHbX@-F#Mp^5nnX(Zo-$d^C^#i`Cr=)gYNCUB!C6E( zy0BWjJbJtn!FM5MwX^ge=F4?Fb$FJ*V8F>;y%8X{ek1evhmMSSQ6C$inQh|0j_zI` zVcK7!#ps-ok}|uFJz9{TR-=%6@1K89^}TXIil@pkUSjTSV6Q^X{%pI_=rBZMk-3d4 z1o9A&q+dn?=d0w-qHmkV3qTKPqlA`agjS{_lG0^QETu`3wErJ33eJFFlDDx|7@}o# zEf$|xPSPwNEG!On)&EcYYKl=5b{96yLX?&8jek!pce=fPd@4No#EL_24;zH!ECzK< zUic**Uqhum7oG8a&X}9A;(&wfj(ip^!2Af)ZL6K>b+yMupvHSFZA{f81hp+PU@UxC zMTEjuIW}0;AYyo`mCFDW%ia zmb>p$ehc@;{GideW*$mC`tKY`o@3<~L)GR4w8I33Tx{%vJ>Je?i>&p~1)cp=4nC4* zpWTH1WniRhfOEtdhF3znSWcf}fc$2Oj%tPL^>H^nwfd9mqoZCZ>lBFe85(evzZ&>= z>tjrQ&(6--!_%+YZ9=F0pG$52?!XDywwHFZxJ|JxBbtThR zGxgwOJQW8UmD+1Air#&Vs3~_y*_I~Og2urD2u#jShoy0xz}Cu;4@PV)lKTiUM@H5e z{oD1?OHg4TzOf<8Go#Q64uMQlPK5Od#x#EpO2?VDj;LU9{ho#(5<#yP^_4tZxHG?_ z$Q~SbtQeFHjmm+b`J)^?g^R9)P`D8ZK$PJ;N$?jFV(f7!tHWt zw^fLF`O#zdJaBR~y#p5?l7QS&EIo)jAk`@x11#!-OJ}|-gC;ZVE=AZ6UYsQ5a=&#*Y4H$<<7hKSw-pXU33G*(vLq_<+qSiSgo)c!6Do^0yO`eKd}kr z@Zo>dFa@v;6e=G*hdY2g1V^j7G}TRdd$Hu*iS!#eUoMsz-0t2hCx*m;Xh?o0B{p}p zhTu^E`o`Pp@Fc_6&G8;xYLv7y%-g>LliUr*Ec`!f8d`cj=+(C(^4qqxGnPao%iszd^!{o)g}dg2djMGnqit5mmxu zXw}IOuqDGaTz8lN_`=CM4h-q&kMwp>LxrUXFPfDEQc^F8xKq%KE;soC-B{Q|H~7sL z`^|siH(%s8uk)K%`OPc%whO+kUSdj{iygSsAKu{)Z}Xd5{AS@diRpIjTdLOyo6rv3 z<~NT-;+R(Ndie{U3$Em6`?Sg@Gd7$(=N)mAEM!TQd>g}@&O1j5qA2eDuAc?-dH$~J$h}ooTQd)t z6p;|Lj9e|l$M@JgSPU_*&{flMPiaaQhD9@l3{X zRV{c-I)H1-g%up;86Q6M;`@{&z(iUfWIwiu%DTPoF7^7l2QH}3x+9$+)q1&&Yfmt7$TB6RAbT>kBi^HVo4|`9VVd&Z z@4}VvPHnR>oeWyuV8n`O_R$vl*~nS{DNeCw#&!|U@D2LB&l4I?<%k( zC%{^9CHqr{eJ9h8w^yYp)d#bH#$zF` zr<|8L#rQ;HMF6{1>!UkX&y7j2!rAB(7e!<==^Dw88Y3gD?)S)16li?%aMAl>xF~o{ z@M7}6G-%QyCZj*)RYy2MH^ALT zbfT}cXt^|KgO-jqoHb4${6Os>O@Uqv`N(%NQg?WVOICETAcLH0XX367F4j)jU_}V} z`p&>krsYx<-IV1o&Al6fo3r^#o9fZuSyWsWE<`7zV>8BZzFwz4SGkXMiIPLk)3O6X z5@ZVI$0Pc4Q}DtjTEm>DK`e}1PYug~hJ-sdkq|h0Ag{`wT38?d5>BvAtuaCPgL6Q_ z9H2MMI!?&u(k+&TaW-ZHETpH9`PNKdv|JBm8 z1;19bc`{D-By3Wv(6SWxJX}G$U}OdSVgAK`Hmv?6cynWZ_j800jvdgB8L>%r%zD*t zd|jT+jeh~K<{lx9XY-kRZu?Y!rrq;Q=rvJMuDR`1FSDM5>efwvQ8^HOs?XeWh>f;6 z|8=|P;8Tt2pqaBPSbNp){Eg-ue5xl=*4le^jj6Bp|7iDI$3?e#cC}}(`cKw#sE8MJ zo(my)6QV-}rNx!_RC>?j1W#wOT%1$A=On%4$Q2PgZUJ{E!&h}??V#UcRoLd!Xu>!K zZCB23t|wQ0O870#@}t2mv$%k*2dCTVV#eW}A9`VT=vXbPr{+_4WqBSoCZ zInp;hn$G(BpM$Kjm|Rt*L>#B774b||+O2FwPK-uYxXo{Pi;_7Rmu4dkdKR%ra2ohc z56t8&jWB=(8Oh^s&qCD}4}fP){e`vqj3DeuTPnGqi~Iq&Nc@)y^~~abRE;vHB~;@$ z+f2!UPK{8;%4N2$4hYkTzg4787z^OaE%7a)&XY;R%WFj?gOX&WO;z?1a&t%(k2PGE zI*YFK9dhlk6cQbgC!_{l3fa`q21^rN)N(A`ARfNvj>Nq^MP`K8lH`VMYK%?DEMjhv z6VYBr&^I>G>NdeBq~=2`EIh|(kylz? zgxVQ@kw03Rr)k*H7!6p?WNfP{K9X;8`r;zzA}%52giQT>lc}Fe0oTGsY2Q22G!W9V zCa$uv{}Xm6t`eX+ZVV)~VNAR*>t)#;{VVrOo^U}5wtStUuhg1`+GVTfm}M)Q#BOi# z%MLEb?gItEY>7vK^%9fi!5jUs6&bmd1H03-#$17ROLoYvTkxw+{+xt+$lF05@h_U3 z50H4&7Qr}RT%Uqy0ZwJKQ{=5qWR+XOKOIM$Jz6}3@csO=PU^02-v>-n=qk`7i(?Bf|L}1 zmuxM$1{lOJ9d1q?_wnh~RIpADbOTP5qSj^7{W zuVw|CHB+CV!wT8Jd|%s;Bu!FElk}KBUMmVMk!& zO$OAE`FW}IuS?u!%y_jZ&|Fe%ctPqZCe2KX3isCTx-3&+Q@$H2>h7`WV*owu9~>Q( z16JP$EtJ&N9|TBnktEwCvL_;8EU*XVf+a_?&U|8#(UtoK;5^A<3lRauE}Zsb4*u%h zztBhAsNQ`q0g_lPI?>*bGOk%ywm*0XAlo74Cpv}IPpwkuZHW&EB(`iUY+y_a#G27v zIMDdYMnwtFQq!Hc!!|hQDYe=ke)R(57qPU*SLi<|19`3H7sFlzsi7Gd&%7>grWdXA zoO?#{rZigTYnQR!_C(HUigI0|AHgUfldV7>97N1|Uu}VX>qOhVtqCycOWAVa@VucJ zedVK15M)#_O7O&Tc)`ylXlvs*MOfls!P7{3HR>1f%2GIyznflIh5VoOx`{B=Ggknh zkl@C8Gd+1{I{F1(4Y@m;iJA-+0)oy_5*Iidb1@*Ff+SO1`i)e2Q9#NbqMC|)#||+x zRWkfcFYC`LuUo-FY=lS(7m*a(7S>rL1vex+*SaX8kBgMoy^A3!%lftz%EDzEl!eO< zkPnwNsH+=&h00JV>aQOQiu7X{sy@p{^OhFPRKwbeby9n=Gm+Ryr`?Im z%5^6JNyRf?6U0+ti?6*Al6>rCwWjze`Xwu@vZa z>RKY8RXc9#DO?%a2-&vdXsx(V)N9Uis6&=k5x5ylX!1fxVPH%?^eIl{^ zJKvY^-*GbY+zzvr+>OAKT(eRpx_#hY{e929Me^!0)yK>K4@d~xtoy5PzgN}*eJlB+ zpWpt^;3qFE^zQ2A_YS!o+mlD{@S7`lm zOl}xWct&lULqIVzeF)NEpi%*hKG1`0h4mHN3W05SZ?{yPBmS|TWZ(*aE}vD%wvzQA zWoZGpAOo7r1?J=18hE=22b3Jv4i(yT{3<;3DopqRl=V?tp1a_byKN$uXd_FySZ-qj zV$O}%yrEk?yZW2|2Tc%!3JCF)gW=EOlR;6CpEl*jL+`=i06jS{&}!k-a*vEf;{AjA zFxj3Yi1;fqh_O(4o7X=(%@AN=p;ACc+$2kq0_*-ei|OJtl(xb?;I-Aav)sC@iGL^k z+H{+pTECeAI3g?KTxb&si=d*@#f_O zA;d#>h26!{k0QMC-ZB)&uWMPOnfFA=jP`U47Zqi2PwW3gt@2=&uY5liDx zzJJQ#V_`C`27;2h6Z&fZhK+}wid9vtQa1D>S@cjTcXvh~;fHNq81F5vmu)6f3 z#SE+4^rGXbUdn#6y7V%4b@3_3Qq})o@tGbFA z$c>{dG{|Op$@Ob=5?Cc!1kj-9hd%$K3l2ed#6bY zfJQZR1HCiEBzz2xaTgu|rcR#i8r>m;%7kKw$Rmb;A=1cz+rdVrv*RyT^3W)9eiM)_ z3*^9q2LC_y-UZsOyRP@0kG1w|t-Z6-rZhAG=30%ALP~=c8cIE62GX?hXc6>q6}{Yh z9ph?(<20rAaL*_t(iW>!Pc1=u6dkDN+#-i6iVu7Y2@e6GN>xx$^uiDwTt%&~BYM%^ z&-eHH{pXx(?X{DgG(0@Eh0eX^BG?Alov2 zVc?b#9pj&rHazdL8e^M4X-h46=EXmrIxxeQX0AaUKfGH%xXAj!W!j*=31-+-Hv&GX zkRL|$yU5Birsf5SKA)Mbt1AP9=^aEk{$IvggGI4NLdLK+5VZdpg7$@5ZbW}Y`h!>r zzjK4P?t5I1tohdB(b`(6xS_S|*YCL3da){RqRK3|G+{3I{$v>NABu%w&)Fe`LkRll z5i<>xRt(!YHAY#}<$1AM9{tJV5`%4&cEDwrYPBm#%ilL3hOF=u@02c_tw!vdg)d<> zpirN}mzLY`CB`EAwT+d|uH{_|U|Lr7dj6&{ZqHV)pZUr|nBsHMA^i#YfQ^A*$F82_ zu(ViCx7V;4P|si7lI%5&7s4nX?j)AS9FU*KOLCC4$?DHDOo=Dro@t&wF+yZin;MUT zOd`3fnIefc6Nd480$X?iN-H87cFP!##Y`Bf=p{Q40UE9K*ouRyeke->+Bho1KD2%8 zoc0(#A@BmDKPSYVK6vC_Wtyz{V{~oh}9p5cZ{n0a$8N7Am30%eigfM`tDJ|3d67;iUI7ru( zz~11|iRA2{+=>NN)1bnP)eOpQQW{j4q&kBlrBt@~CR|pfFJ{W!r-+Sr|H&FiM7jGm zXoJBp>6E9oplbKi#_m=SZK~aC)8P!=g8FX$2EN|7ZS-@L8K`*&q@UI!IKr`0F#q8g zqRnjyg%{vJiv&hfhUi3iE#?FH^`Ca;!&zCgwfnrJMw(GS{BrSvc@0 zT0^^ilTx#O9@=!Xb_5+X0nLUW?~Ph-*z>Bj-w^NV_WjVa>GnTo!_Mkmr*7YAG?jv_ z{l-)s?Sr`ckfiemP-Q$`Cym0sdEa0w?;0{HV3vMkukQyys6; zofV=Y;$hj62u2=ofN@RInL_q-AWQ+7Y`b$zG0IyHVPuPm?BX)&P|sE>A{WJmTp>cuCW!v~!d0=1+D?Ydl8Kxk`AWPrQQeYJ zwjW|I6R&r|y2$-qC>(6}a4MGjro%=9D12S1jg z)W6z%erW?$X24IBc)qliOHn_2C$%l=zC-NM37*dY_&$VU{xXQr`tdqHdTKypOFQHY zf&IY{{<6doqC~CDSq;WV=sKo$u>Pi$^#BRXBGR9<{K z_FW;dhJ4r0MZRhs^6l9G`F3r9e7iKFO(UQ2u|U3HVgD+T&)IE*d@ByC=MMRjGun_3 z2oNVeE9BdA3gp|}MLzdjC*%v?^(^uM9H&CQU4eYNz6_8r&cY1j3y1pIBA=gInUF6I zu52Z^jgfD!kgvY{@Lc5EyAJuT+5q`3-vIekk$>~ZX9r#e^2K?V|0Bp>oFnUdEVtL@&O#DLcYrb`7WP>e6SFBjl2Ld7G8~n zk@z3nS6mNE=}DR8qdW_Sy&3-3Qymf&MTDI-9FXxK6SW*rA%k$hQNsbxkCk)|cz&9f zSekSFmIF$+q!UuNf&;?IWt3|<;I`Oy=YZS1u?7hd^u&WzE2l)lm`K<%Mb|BbVM^3p znG$7va$BMPq87z8+eFTIk)+2d*^#kw|0PIs%rDlDUTMbETNU8Z-{`GRD_&$KO&3P_ z==z3@U*Ib;`ilj`&kKAGgbcRgr@Cm{uT=WS#3i$qy*LgQd_aPE2nLU`7Ktt+3~sT0 zR9Y6Av^UbI4R%uP7}i?xdJ@-iD3qoveVZFE;*lk@NSJGcEQ^)H{AQ{RYpB9g#3qXP zV7Z|IbPttxV0Bs7K{K`sZER$=A)|h4eW8!735Y7H>~anuRy166U`kFSV$wEIW|;OK zPANrGG_klz(X^6+Dy3)T>Xhk2 zl+VT({w^_@SRy}5!$oHsaoL12*(Tt9(o3*u8^Ero6>mdmj*>`k&MPbKAQ+Q!g2eb{ z@`ofjzJsfa(VhthQX?n+V6{%0BzccOIt!X%x87{Q(wxKbePh7_5~vCCZW(-2PB{*=+1G+jco~n;mh3II32iOD5uu}4%46<+`gpvh`px2c3!~`z48ePyZMMe!Eee|eG=<1e+;vke>g(u zlWH5Z-nH?YccnL9Y;V44<2T=w-uzb0?QMnTroUbR=;#r%w(a@Z=E*HjD}FYfu!Fmc zcQj9q^YT05k+zvlZJyo6vtNm4xABYx=eTycko4!tf?3^>7UCrDar2(``2%`>PkR19 zvi4z#iy|#LPBJVL(1(gQ1=CX1xO@dti88si&M(=;xX3QXWg8pFWfKG{ zg;Y}wM^W{R&}oH;6vMV(oW?7x8v3wtwTMx`n2yp}CchpGwGk@>IM4%bn?A19k2Cw& zDGp>0GZ?@iKF0!B*l|!ED4^$+%(0ai<6rR5c}Ad=6J`mZ9Yuaw7eo&mbp8qDm-VfM z!KPb?5a~)-Y3lq4Q;_ke{ny5Z6i}=!XN!wPxwz2pxsM7C>oA*qRdkYDolvGFjrpdO4LRRJZpP-FVN#GBf%)ct|qLP?oV>QaDj3b3#TMfzqU? z-^e02GAVWYZCz1CMxSktpk-YHcKAk;66sGEW%{_wV>jHIFSuxIAPuycM+NlX1YEcg zq8R;hk6DBX!tx(x0OQl2ng)!12QZSMfulo*HG>F4L!ev(7;YWVh#Sj5Gh#bNYI7qF zrF`^@8gZkOuLq3VrT}C4iw794=obzcq30XqrX}4hV3@9ri_-w3QMTs-MoDNy0ETO} zTINt{-G5~Ghb*{R{0jwk^d|+&9184IVo*?w&(2Vcr4C@YN(w^~#R!eG9ZdrmuHk9K zq1`nuOnhLQAF=Cp#pqKjj5t&~%cM%{9wWYI29y^&BM#My5&!Y9RjtyJx9&A;<**`? zM)g-Bk*-H+!f>BZqZ;1N*V$lvhHPIVy0Lw-O{ zVkbs`;#zAYZ6w{{Tc*_@K#UF}gnlQAq#L1$=7yM|v{JMz(ZaX@VT9G<);vox1oM!PLsdo? zS!tGe5iQ?B3XY%D zRuj&Fde6!(`2r*P**cTDDs;ICtS+CU5J*sFc?X!afSC`9e1r0a5*3ka&W>*6tV-z> z1W4BJLl_@%{f)Q64rO+i^^wcEs^35P|2<~(a^Y^;J`*yu>fz-?EL9Szqwd1!|1A^R zHs-1Ro{UOD&u0{n7;K4c`ktKDGNdZlR4Or}CuGv0c*faYP#h zp^>d@X(Q!F>S00{EjiW^taKy&sl9+mX#p670F8At)l9#63vt1$cwC?m8gs^7En^Be zd6+y62$n``9%auaOc1=2jv(lRPnI&B&6d0C1RiT?fnhE~Ab^W_T6u|Sru^E;9Qm~g z;B8~YAIQAKyv|%KiTiu2lw5Xw>=~=BWx^_{>hu?^p94t4>2c!2JuKmG>6M=M_YF`F zp!44q;98C8wR@&15GGTRo$p8zWxZ2=`d+;|rJ5)GvZ%l7&VIeMe*GPfwzQ}Q+=$aJ z#RI4`!48R2KylE818{ovU2n)K4-=phHjShcvcENhvg00u>REej$WN1Viy76UA_Xd0 z+NVy0BzP|1L3x~aZ1kd?=rkuL^2g@xaK|_*`pOO)F#u;SVWWXtms+@NVr$z3i2b0Q zB5mHvuD)urkakJM?*7Az+22aLX&A>Erc7$)q)mcYxpl%40%SC85(50Fi@dW%{S6WV z2rh6;jcsYo1==)14(ur-WLwT8C7|@6|Al+cvMP#DUzV4`xJuexGcSRKf4sHmAM4K^ z^4CdHX*mhoA&Zb~I$RoS5yhfsqpzkT{Zo`Fbcx6tl}>>NQC!?yO){6*hE(z(iFBDg z2olPhm}P)@z2g6}b|muVYrVWEvz`fFmU&b4o>*l3l>zY7^B_RIT8WIE$;#`h6?^IK z6Qf%u1HJXk6VLijum7I?cXMX*@`-BjtWW>c$4{QP`}?cq*M0wF`A#BV^g)(=(~f8T zZSUuvd14=+U$|lrVy7sR(RLz8!MB?ZAEFLFGR;CeBJyc5ZOYnpDe$w z)7R#EAq2Xo11?xa?|qy->!F8^Jw$QyS6gg7Ji9S^g$?F4H51pO@_z zt-PXuS!Tv$>YFRO zzWtk&Sgs5MU%TbIIrj`%XjrYD@XzRLS<$z#-piU}w`cCc2XeKqu zMs3)aahe-no54&FoC(JWJr>gCHv`FMxYqd&t+iIVbTw%6n>2$uusQf488}S8r)-jS zqyYFefYgHc0y&PgK(4bs&pG1zKp;n?2sRLyvG_aK9c&#?CdeNg1rR9LdJ7Ag4&`Ks zSECwMVgiZjq*65$M*9I|0~anD#jQJE?Ui;$Q`TIGN4B}nPFU-~oKHnmmO39=7d8{E z*_}MeAQf}l7|YLMplWY@6DJ=D7!?@aXm0biNR|bs=PZZna?&T3*{gN-k(#svT#!mL zJwR92nK4+8vuLzh3?@ofqgyYkgNJq(2^mOM(u>yScMi#(-I{D;h39Gt~2z( zU`&gq&uUpA>zz43p-8uCwz!NfPVd-bAV3Ssmq5UfCF!}fi-~$uK(*W%&b-LwnFg6j zrd148Gwfuc28^DZ=JJV5`8Fra ztKN4H`X?n?n13A~cKr1*^i6|#X>|SienLG^R(2O}&Bdm1@p399_Z0%73Zft38g>w? zX`&oFoywDo-;Ms@(TN5%3J#W?=So$bQdEI$?qBaJtYZ(>B%0rq6q#h@Vp~VA1B0Ei zHP&9f-iS^>Z;j$Yf;|7b+ zx`il%!aCKNDG!ZnYATnzQ%4D%?%|lELw&d8oq5H85`LLEYH<6Od~H?-*w4OV#M?mwn`*4hH!26nxSLAn~!JCxm2rOkzM2(Ds&pmAhUom!J!nzbWL#?fme>J|eK7q8RuBk!GCAOC2aXf}BB8pj^{XHZfiXJxZ-m0pH(b zb=dEUX*Dxh(o8@^t@+eEmU+c8lQj$U25sF+I}htZLHNGnl+=UfDH+)u2-tdU9NU6{Z9B%95Y;P}X*%x@Gv|j@d0}o(# zX1K~r7K-9OnJNZYR!sB67N>b~VO$tiwFM^Ucz4Vb2B>k9MaTqz zKih1PdMcnZ$(&tblG;5c36$#PUenm5Y@0($w;wi1ScUztNisb9VUv`#neK>B(Pnjz z*3-zVfq(^`uaQ#33;5(V9uth9^^yaNovRhERB-1}=XS55CW39vT63OoDhng1)>_!c zcGvXJY&m2%=LJAq+5j|y6NXO1}U<5 zGrFlo1X2)-<}D(S!jtYIVk2)Rfl|(fZ&7VV&cl!yopqGZMag$y$D&;={PY~~*f5bt zo+G`e;GUi2ZFToBAS()WHy1{`hYRD`%Z1{MmnSy7PtZIlvuyAkdHyO!iNMZze^vP^ z!uagezbeiBs_p?tqZnEoATo5hswv}k$Xi1`YjS9KlN`QZ1#m%EgHA z`h3E4O!n?^6Q1dj0!AkMxbk{0>>M0(;g^t#1#~EwJ#d7q?%ojdNSQw%11o^~-85~` zDK8i!zfDArg0B17LcY1pVxJ*NfFZ}EGN_atePwoGFZ|}Dty#Y@$u(#j z6M7H2Q-IyZ8v}Kat7p!}u-JBAd&>7fox(pPv%;(l3?v4W3T0@*WurTGHyeyM>HH?d zQO<8VJEikG(YNF?e8Zgj<{dhNQXo3R1tOx$5{S%2_073VN49PUKTqSiNLdnDon4td zUQoNcF0F=G4PfjxtR(zJ54Pz)qr)Z@F)#hvIaxfyc}u1+R4Ry>lm!q@2n9hLeP^#gQi;Rv`>UiZV}~aB}-BV0^Hj_h&WGj-!#y-vBTmk{!S}EkrEZ zZkqX#Bd(x^f(uaMWk_|*c{di#4uC*t5g4^t6GR6V{|JBxD0Y@-;jqI@d9CjXfFW%2 z6Us9P{>Bhe;tHFA5NTd=?sFJ#2RiZu9eF^9v_GK3wLcA804~!BuYe3p3re!>eOO8 zbbVoVW?E}a?#7sD{4QpGm+5y`&4JHLQl;B<3l>@ocwxaE(%}XV*Gy?ZZ5(Dg>TmE1 zIYIx1qQF9wD>~a_D_RuQUa@$fkg&G$GYt?FM?cxSC`m1to3I<5L1DROcqV^-AqP$e zU$}w)QGdPo+HrwPC>z7`#ZQ2J=O-YCTtPQAAkVBv1*RU91*uvwG zHO&mId8XpmbCa=9Z%QwIt-}rdBc#fR;j91bzNPxz8TF{a)7iFpE##B>^S5px<56!l z0eWc!yyfQEy#Dm^=!Luzg{nJ+9Z5^@MX3Mqp~v8>Q$vxcF!h!a1(d(`BPY+VFSfUu zYWQN2vJ{|CN<(2G57M(I1mvR+Ht7Ix)L@}3qYTthhVu+C5Qb}7Md7^C!n{TaEzSE; zXM;P}is7+hHppXBHFB&tjubS)EVl!NT)H)Ko`{8(LV9kYU3?-I+O7Jv36w}@i58b; zgNYSy#H}Q30;+MutvPOib^3)ISM0AAFk6@*aRL1ffrDQboLcNgFM0j%y#J5-FXO@X zn`ObRmR}yXFckQ+m#axx3usaea1bF*XEVUiLT}?1Xm4E?DsIT4tnXy1Gk}=RYOHfW zF;*_;vf{Md&5x{=MJ{hKdooSq^P$jq6PqXIRiy# zC-R`K}|y!lU+tx`F<; zz5$EX#(1^VG_*8Qyr_|hWeMZNQHh*A8OoT``IE(ylP%M#=`Xm5C*+5w&vHs<4)rb_ zpeyt%=T>Tz4$qd!G-as;e1S0Zb`T!7`)E8ufP~J`s{*+QVt)IHYU?*igaf_|=<4hc zf0WnWsGm38IL1#gUSMBJ;Bsp*r)E4C0ZzsF+>4t z`E50&gk`AC>q`GU@_!z|)J;Uq4ncc=^zSuDzPJ`|k_rO4>vdS0+E-x|9=#cBw(sGT z`9xW15(}yYBWKhzJW6DcE!?t>s$BM8AnFa{6vb~eL`Y2)C(Jcg{{e#vZx`^SC88>L zrVT@8c3sL$83tX_4t(#4t&826;FjTI)S;u;Q49r* z7FD1ErL9)&$pBGoreCOXoXF5B$7wnHb_Qp~uhBlDZkOC>x>Rl5H=DEnPlNTkV#kPJ zMjf`BvRV$6OQ*z(vsjTsFbzTK_+x^Gon}TnAEX@ywY~jD1o&UNAKsR@+ms zH-ec%3r=46lvWz6#&r@Y*f{;`2#1wY(xJ(T(M+Rx@xj(oO@%aPXJR*o$%C?RuKU&j zR-hB#Hb85`uuer$^{>D{*{_quwdJDU&-(p-kvn;#N{46S%DhMf9!m(*QI=$n2?)Nq zHT9A!US_dYNkk9pXASHeU%%8Un18sZ^Nz{ zQ3+75NGONizIP=FqAg)qvQYeFGWBse&@6FElk|uJU@Gbd-;8Jv+Si}ZAG-6i`a=#X z2mr{b(y6*MrBfF|!UdcV^BdW=;V2(SExsvQ?8y76b-m0KJXS8-|Nef&Bhf4_ree-x56KEa0b^+PLIs6A6QuYdHx9rc2})fB#D z07>DXKJy5Zmyg!7V)2)aj_0(xGN)Bfdd=(4{LWgv-CE__P-CWA9X73c0<2nnA&oXi zJEcLeN^yQueaA<4)@#;iB)HmIb%wgsH0s%=snJL`wbvI#X$7o}YOzpzN+}$UQ*t7s zve>BVbO?c^HM_GXyTU7fz#y9Aa;Uv)J5lPmoX9%$W|@;GlJ-W=y(p!Tc6#*V za$?mzT@-RM!u*x;MUA92$XVb2hmWtn`rMrtYnDPBtgwfq3z-Rd@aBv1@LFUp z9J#dKCUiQU=Jmhe(_1_$4T51IO_hnc@V&WJwKT{D;v>nBP2-Xav|5g0aeM-~j%Z}T zyxN?1*&BK{nrms}hTPi#zj7jguYsn5d9_U`j7`qGLt26)XkZo38mR?2qP z05hf06ke4#cpQ|Sr;U|+XKUpyNP%Qh_-9jpOnlGWjj1-+82n3Ls*OoT6yKWQknMV& z(bgnKkZn!aSlXt}$<{;=-BcClnXTC~XKVI!w&tq2TeJ7eaBITezc|)J`Inikxn<7Q+!9-ZsEe3(9K+ko*&qyB1wLL~n#18G zKP%7=`OZ9VoP=!e`p(HCY_emV-Yj|DCGPZ1z+qP3f8SX8x5Qy&dzCw!CZgO!XHTUm z`gN-J`O5@0rJ^*Z;Wf5hx=5{C3`O71u^}oVOKMFgOB+w2`p5MowI7dwi~yKTtr~)& zCa8|!3HjLIWjMo0qG&_Yld9BUDloB+ne55F(X~S6biFOlr5R3S*=4!2-R?BC=eV<^ z0e_;;;qv|2y#9_mRhCJVEG}5jbdgt;OB1EDi71R770g2A!l})xNQgrJJ6q8qL_FL{{@i@B+{|6}w zt23?Uuk^`!4|0Lw30gaF?Dhi-ubCRb^{UTHh(5M!P9Gqxh9x)fk6;);W%SdJ8y88h z1XUEvDN8&`)nJS#SNs43aBDMgZy~x5$C)amNr>U8Wbes2(lP1z$I`R;;Th%xR&By$ zsWH{L*L*c)9RObk78aI|zPTHa5wmK@6=)`M^{@gpz9BEo29dF;d^_sQUoX1FL#u>71|>W zT!L){y1&T`++;@4l8K}){GlFm?qY_qbrS6z9hz0qTlBUCy zfr+j3m-Nxu2jPJP7KC?2iwmiG#QPW4A062VE5Jdbz2>65<}&L_Ay2~XXk3)|#YKr< zT$K35MTuWrl=#JE6W*3MRuT(&9KFM80c|8USiLanV3YsA(sxW)c1R9eD--l$WA`ex z@}tYxM7Wdoa;)7T0m_X18PHVhFO!Xop%c)vhjm_rZh5%&?t}J@0J964j7QEMS%SKQ zz^M(@CNpDUbQzCR%Ov$E35}0-n@3M833b#^&9CI=_{mELxgKuqcbrB8cN#flQ3at# z{JNdV!rzp3Pm+b5)?(2`_|0*!Z+-qmxev7W&sj#Y7~IZ~Te%N(qnb{hu}!1`p8WPD zo-TSaH*eyYQ&e`qHB;-nHxNDXe2Q+^pWjwQB~~07<6GQB@*cBa9AO!4X{yS1!sYqA z$&%*5y2-4D{nh6R^J})---rj=$Aaa}SU}YeXAp%4r=D}c%F;MYzN(O~R#XRw14$KH z-M2K3#5k;qc%2R2+0U0|jmI6Iq=*f}=F&uzKDEv72GV*!uo-(ER178yR=#Vp$BqR$#u(>Y4 zF;8)7lBJpPA$D&+HA%+j^`|Crcl!kIs>m^^krzIX?eC(RAC&|>Zjfj(NHfu(2#1`Q z6vP>M29SclJ7DF=T7>c-SP)~1(5C}*DVdcdY+&9Fh2mMNBt|<2mDv}zY&)_gsB;^q z4`HJsqv)H?OCp$#E$}GnxvMDT5jb#ik`D{=CO)0t=xIrGZ?670*jX8AM*Gi74l>$b zc>apTmf4B0vu+gt_$QVrRN0%A`Y$Km6jepQ1z^sCu)%HwQR)~r3P5d#`tv5v6#Wtt z;IaoMaHen_ah3;&L*W0xxcdi1sM$BDNutX&ySf9#Fi~9S3nRS_V#zA&s3=LjCC5S@ z$X?jnf8ZFg7|{1p1;oCUh5rm`=pOv&A=}E7T^fC5LJEf<;GKH*-^wr)z%)TQJ2XX@ z1jm!i`GxN(LQE|l(~e5-D3KV@0L7=rB~hG_t*jfFXYeHORwi$su}wjD8k=apjV)6o zREXX@2`fuY1cfNs3cKh=Qm!FVum0{I>ev6A*WdpjJkH8-g%<*mrx4H3ckUpSR=^nC zpTG%-#dw%p?Yums-j2WEHh3uZ=X>R<3~QqL^OM z#{XOn!OjK`&58Ctt%4$6YYK|uf6hoxK@?TlK?Q3Fhxr_#UMNiEodL90#uNzJtKK@WxEcmctiKeeK8+qW>$B!Q$DPs$b-ak= zxlq^IoT(&iCavv_gZ#W%VROGw!#TA{7wn_N5=&K*VUAxy0P#d1n2Ur>E{cBOQn`|% z15^2>15>%^z*H`KIp>~>%5`wrharp0Rm6>QQTS=HrtDASoU)4~3 z?+2T-_hI>ppxAD$v+;W00kv2Emk0g*09AY6cu-#NviFS{6ajVp`p&=d_Zxo5c!-!2 z3HD>(j2{4B#_SgA_r&-cc;kIjzViAiYajhc<8k;~tba4c-@=|sYNI9PA^}<+ytewl zdEQd}zL-E02}TE`SSu8SDm(fBZln*K_bu1I7&8b5v(1>ob(kjWPx=Qd{(FsRx`{`oQ_-sQzqhbQ|rJ5mxQ* z_yK))J@jJ!(2MOX#|@w%iNyqUc^Wp`MssR^+R!Mt-bZ1>(;n6 zY;XNXZ)(uqIpTL#+B^TN-@&MmM({$vLxfbibI9+ICX((v!|zD&j&Wb+chHH_os0dB zw9VZj2pE z3_9~{)XcL{&5WU9%H~NS(pj=cCQW}A7Ya7)=AvW6xU8veLuPdwxQw1w5GY!0CHgUq zV867b!Jn4vi7SB_k8B*s@VZS z&c=m)@dr8mYGi+U%c}W>nfD;^ym0*US?|>%oGPmE=fPX137Oac5IK4gi<{G$_h*){J`%-_7w#IEM;J! zlYK?OiJOrG`YH8_(WX45mosJ}swImpsR7HrqP%RmAB8(>vah0r&WEZqwZ01-YVK)W zFy^+CCi_aA$-d(zo27at`--9#P4*S9rtB-&u>JDvtMseQzOp<0ZuS*~_+}QKxX_n# z0rN;LGrU2-0=HOD<&JP))>RDL^vju3-0puHtDp=lmV=A}t0h(SZxE-Z+Et2NT(I;O zVWa(}FN7JiGVYaX9h%vjtX50Pzf$&<3T0V>#sWYy8Oc>wd@Y@f?uDP@q*H#BvZF+6 zF$1^RQPg2jQ&zT_GRI~NGFE*tpABGm}KIIFKs>quUeFxk-Ick}9$m_>7^ zYWOKof$~W&C*(mq-xRWKUWa0Fx`e}0R4Q3KMI8#9Rx*iqeL2+X2s=4Pv2=?#K<(*} z0u@o80b7djyi`R6djg;1g`LO>z+GKjEtEi2>s^h!JV66WB}!6NqKs7U?`*)_ba9}S z5*F%afOZ)oj{1oql~y7J?cO@@f*S%FJ|J>Ky&s|cg-I(hfNrF#wDI2{46hh;Z=AqK)*_+a=0m1M6;7KC@AwUIO}BkI*e=Yi-05Om9_Mm;BUQ zfBnT8_roqYzaq&H>#)4q_Ka7ix_)wq`K<;I@0dvc<^lv4S zJrv2Vv%#V|`dl&icutIu5r3}Gfh)miYe{@lbqINqdzp7(zB}+o!{%NS3EmB3)P5ik*#(EA2fz- z=_Kr^;l$}yrp=3uqgyhsy~a);KG^nKHte*Q*%l??QBSW@64>eyKJ?H#Q5NMHd*Fk6 zL^4YG=yr45@VsN6VL|%%DtoKATy#t7xfMhaQ=+c3iSw*`80t@=?CJ!1<#T<6`zCh==GvNjh*32~9V znakx^7*B(oQ^7(*95e-=D#TJzh+}tou9^f?Xiv`{L(`xO=m&t|ptWacXX5RE1A)yN zKqXxm85mN^(u{uc;&o6_a45P{JP8H9*|=X72O&Jd9HXkm3CyS=9UBid9R0w>ovrsz zG1ti~G!$%`?LLD!F)#3;*k8fn8CVms3sA|}!PFjK*@t=haN`$)Jd0inm1hc`)G4wxZ(J* z;fAZ$P5@_(OorC>><~m^<)}Y>Vl32H6vfzHEzV<>;7U{10GcsWsEUe)6;l*zQ3u?G z4La>YimJ#)*8nu(U$O(r6VPBZ*a`GwU_>K@&ViJQbp%ov9GEdFjzo+`DmEZ9nuyQx z=#6Cxz98qs0T%b>5xM;})@Lz7V;~C$ zF}S%0EgRj2fj*T)2+&E3ieJ(W&xkdaM}2zmscM1-|IQy!p$tA1pNt5)P{X~51)kh9 ztX{$Hb*opnM^0kaRVnMQQFM!S)eedS#3&rU;fmr85F~121d)hn7OGb?M~ zwNFhN95o(hj{sjk>!poqJcurfr0kg_M+a?t{u^~37;X1ZaMxZq!_I!u0qV4&P)KHq~ z*&_E&Z?uElJ3CFMJ%3ER^_OqjNf4Ip`D12ZV+0Uu4nYoD^jQA}E#ZZL$YVRN2Z&4+ ze0f~FEf9HJdiTshBuIg@e=%Q-ki!L(0Y36f##^aLHEfb3pzL0{OF^o8BBgACqEHtDR{=Dk@f z!=r>thBu>Lo1^41ycBhGP%f(f!bLJX7s>EkB*Sx21QZuVKyi^q%0&@SToeJtMG;V3 z_K(lgWfMYwsM7*1EF-g3YGo=)V>V&hWiimUYx{&j}I{Qu!bf}!?p&V2XT zhwivq-N-W9J$4sn?4_$CB>i7RsQUAgpod>-BZ_Fs9XB%DW!sXba z&g%dEOH1`f-oD0Px&9qJjW0s3ZNJcb$dol@YpU|QHbYja?J)umsG|4pF6;OIIh7P` z1QAvRe<;JegsIdKo<2XryMO&F$nf?rVG)cVB+>SZa0V_#KviL1{rT;Wsu6uh2l%25 ztWqB_92W&O&Ai_yL7ILyuzsdiQLRAmHT|U%m<@&S632346J-0%k}TR z<)d%OuS1!xPBFv#SN5stj`mh7#;Ovo$q~ z%FnO_GNnK)O)x1a?ZdPQjaRh8_2#7r1uH7WmG4RM(#uWNUz2LFb>Tl9svNrq-pAUS z@typY;kPrqNp4Eb{(-4nbuRHx#upB6#irv+ZGxv+OUop3+Kg9Xw^oGatJO;VqrbfU zk}SI-BZ#DaWBje@46c>sA9t6SYxFGEk`lldUI%Mw&(fG1OYZpP#tjQ67*dgW2YwJ zML9HCHn#}(@J(qAi0Zb3Hcj^i7G!ZM+=>kn*)RJ{&P{WN1Mi~v&>>l(Kp?RJf}dow zq6l8a>27(+y3_PnJ>*CBWSQG-1y^RQ<7>i+ zgp<~Q4`6^Gfexl3HDYzMXA6RlqJn#i59nBE8wH;Q z9f=A^v4LF~bcAAq`JrJ|LYyrvbcn|>Hz?1`WJT!D%+V70GV4HIE3Aov4$M#j=R*@> z*4R7lLA$gJ07*axKLa{)hYsT61ReU!VZ(@z!G@qg%jdAc0%~Wk(v~}HFg=|j!Gg80 zAv=d)qfbo&^UpeDc%#vpH3OBBF$(+($Y8cZ!Ac@nrsxHjgrbMxt#lKN;UP3c38=4q z;KBft<@(kKE;M@LG=#T`nT4~W!P9g@HbI->WH<*n1iS(ce`de|@mOhyhe}8TjtMw) zO#Gt2gHq%I4*_@wJQ|o2O%mca#6t>ZA|9b&3M*J%h=&Yl=@=g3Gb0^bo8%g8;J=s0EBob z`e_dFU{qBhyAb5V^K%jEOg$d$tK0G_Hq(@$)gF)M(8y3?3{Gx>zhK+azFE+ueP5r< z>dQ?kz;6cnZ@H0^2q@s~3%e8rP!c*XT9p*MRg9Hs1_q53Atw1~8AnaFWP>o0VQPE*(D4x;aNW4u#NKeol~ z0AfPNMn7LN+Qt|FMw;yJVjcsd4JzBkX}MKKj?dM+0hk~g7%Bu;@3A7B2?q7qZIVh? z>UPsWUV+A2bCTkHY232bbR;$;wKY_auov)=jP+&Rnhauuj14~&-I>Ekor9p`kXT&T z$7ag}->V5W3O^GxWxBWDL7kMLD!Uqwg1lRq9XQF+WrfI@auZ>d)TrbqqdUz1o8g5K zz`ah56(Fosti`9_|9F>ZEZ7T${9`$|WAQlO`!jWti^y$*6L}DQDA5q zlUp2?YPUGB(rC8qU055M2xzw5T9>UDGrI&3#+yp6618K*vIXTidu`0>G*7f%rIHrTdp2 zh+ldje(8burMvb@55zA$5WloQd_Fi2+M0|7BuWAtgO4n&Ki#-fJMb|b+iTayg_4Y&4w``nK zr9}PculW0+=iB=VQl|a6DNzWfHvT4%3>*YoL@MW|M14HoNBkGLxAsq&5_QKry@OEg z?E~y^sCUU8f|ha+Oh_qFXyi7cO{YYCE{3$}l&FvY$c5HJtGQ=mh$=Y-8>B@2!yP`P z(A;ef7VOWkO)anQ`WK}W4U|pY zpF+?{^N~nDhJ}c#Agp*80hi_!0xO-fd8?t(C)5K`D?)(l@;f-90+B}?&BY!ae5zDq z88`J>PtoN>uJS4epBo=v^eh9y9Y;?mi&9oguo|`ttD{W9Bs-#*(5j%ClDNLT=Gj5y zE0Cq6CnmD`6PXItse&`$P^rE$F(RfV)rQlhouOV_$A^Rle8+@n;OC4NO)ivj1l`}k z1C?o8yiTWsNGmO_BOL+5Eraq1V7HOd>l5U-c2LJy)^9?1Vhnc4G;%B6gf?H<$YWh> z0_s&OzfH~sV$ojk9d@27L!)=~61b#2td!6oFn1L` zf))|4Xosao2rYL^0BqjUjoyTqJ|fq32pjfHC2R~1p-!_`BIF$#W}~GNT`R!C{*t0X z1+@W62DKp?vkUBwz*QP2r@fm^0f;Y?v>z7CHq}o^4zPw@g1;CtU&)N8DR?-N(uI8h zHatEcGp5bON2(0Kw`fU(EZ_s950a{qPW6i1^y6>@9qxJ)Rw&RPa4h*T*@7XEA#OSR&sj;av=V5p zu^a;UX4r!^K(-y}V3g&iim0SP?@thpEwiEcuTu_G9EfR_w=i{m863 z2*ac_YNX|mEWlV-;m)FI00Sh97)h9dc!1@3QFuxwg=8;6Zin*ibSncQhtxE?R9u!= zwn~cCF1>b1S?Nr9%hgPK=|o5J!_w$MNTg$ITQ6&2DjZ41DfGy5#8sL3hB(YKOX%*K z9+~*BOLJGUbeG~TI-VaTEra!H2ve1e!0dq&Te06OVWoD-2EUY_yKI91ck4Z@UZL`h z{@Vp}s)|0`bb>d{Igh(j=@(j_0lXsV&}S}I>$CBrZ$f%)16{pPU0o6lZbA*Xc*v|W zF1=!l0g8@HZ!jg)ax%xgQxN|4|y`;oC&dGa~Bi_K_;&(8(rb+8nUM?!K1U0P5v?ly*&+b!d6QK+cj z`y=D}>5|Wa7kjn1b77H5h~f2ef8a}!RKga2T5+u+XpkR3W^MqVWq43@&l0wi%p~uK zVm$ar}t1q-m9MXde6J(_x$V) zko9tXYKQu$DoId9N7iSXptLU`+M-MQ5>P-_inFKPs1{m00qEOQ(bh$b8jy1tJKP~?I_Nw(9wUG2_z#mMAr87dR7*vRA*DK znX|MJo5ZF9PL0`e8l0}tid@6eUZak$*RSh+X|GuiPIC$1i}cNl*TeP4yvC9Pc5_;w zfp%jNogT}JttH0tVvXgc`t?#D%Zt~KMKt+kEW@X#mf>6GEJFlH`7$)N)#hd0rwIU)RpcL~T^JMI*a z9j8UZ{Z|B(-82hj9{Arv*$)x4H4n;O5m5FD&GLADDlikdI3YQQ(pQt-+^HgJh;2YH zjxr!;6PQ!zI3ac6JVOKy)P}%CrT`!iSKR2+GYg39q}OkqvQj&BQ)gYGd5314M#5w^F^D@( zI|z>@OM_?%fHhz^JBT}{2f>lLk|J1H90)9NWW__YZ8@y$vMtA*HWE=GmZO}v9GgbR2Ew|66jS?FCC??NyD*x2N>&Jz%pNGOFd?+LT_G3F=I$Iih}dEsYiIXF-n9U z$x$Z7yW~0-tVjsei#si(RRwP5t-mGuNa*(5nuJfD62X0eSA=qPL{<`cvvP!v4f7OL zz01QEC3;E6I*~ifn@V#IY6IY0+$MEZ79BzanNt#MD@YBLeDLwJts}|?ON6oL;Y|oF zDI7vj#*!{l_ONKklM=#gnY*${v(rjCH0py%nqwS{&GjY$a8?KzVN@vSFt;A!T<(>` zDtHUAMwisPQGXB z>+=%Djhygky(YamlTEa5^mAZHl8Y^S|-H%YqCKY1VeKP6v#38tZX zLPb$Un33&XIXW~YPV0#?M>eAVy}OAvpvEg$z(ToGxtri{;^X`3qN8A!-F*AA&Ui@M zBqc&L=yhLLZaY@ovaX2S{he$EGuz?W@@?YMWF%WS(W7L z*+>2Ym#fC->#~1L$@C``&mLc(Uz;FqEj(c08R42?tGBTc#eV&(mBsoSAhSR9Ep@{a5+bVt67Jwol#7jIV-_^nJJOt6!e`Rcy5P6+3Jx$Oa<@obRL(3K4~g z7-aPuegQ}3z9xJI&?PKh+)8t*bMR+dvEKn2s*z!LpdC~2;-?6jVt(NNgceJ2(5J)t zm^#Y6pJ}YEV z^gBMa)R5dK@bl)W_CB_67#~#3OpS^bKQ9OtM^C$QJlVnX09fH3k}a%D$wb z(h#a0XlG0M#6xxnl%fP{oVc9kTmQkYGLE5@AyXrsi4kK7U1X+_%WPYi&$`vGigB(T z5Xmk%m7YEqCTZ>EyGmxAO{=}b)~N`O24VYIV}E4Va2QB1nEuyZ=-wiO z_}E~ua=L$(n-_Y+m6c)hPubkx;E$~SZo?k?{!* z*9J9&X}CJ5SGf!mc)NNOs~d{Z(4i*L2d4fIcK5%@4jKA4BGP0 z$OG`JPGWICw2tVMH5PrJ^WmRl0yQ71q4HgSXcS;24c--pXeaar&gC(>7{o0G|EYC@ zcTqpS4M{&H?nvyj{;UsPfB<@U@^O3=b%f`9^tUnNA`}5)a|8TrsY3Xk^P$f;!5ugj zGhR+J_AKQXKqMNh%$+f-KC@k(g&f~Tw0^ACoEhT^a4m*2<-3EAu=TkgYP)=My4$rB zXrzPL_heUibS_A@$0Lg2vsSqmEL2=QKd;QL@XMZh0_ciRSb(bP6)Zf*kkAJ#uLRK{ zS7sT+8|eiy0OdBLJ&7?=lF5ppre_4SEY^?)1+)|v-%^s#1o4Zljk7jU)p~Wrs@uXQ z(G+pV`^hmBn7NH+6cd0EQTkFfl@)>}n#EZaI1GKX4AK}C-%uyQ$fPx}z1T0}GqN>f z@~||cNUVmQh?Ti(Ljk(S!ijommW`oVF$RkqVeZ30{my^xBTf+0+y>RgVu=@NC9Sbt zlf~z-!NPH|Nd*ZI-sdx9o!XT&n|n1`#c!?Kc%`p_Hd3My6@{DdQp+q^@lbMZlG&on zk}|DvsiULntU9lP@a~wT)H3CkfKiH#KZfy7%O3IZTYzU7DfEB6blyRiILI%OrG$}U zvNk8MhD(QsmH)}$##>mg#cGvxs&Eq7`f-O)1$Rvs@;l?zEs0Y>wOG`J@DW}h6lZW` zjF3CdVbEwDN0 zm69fmcOX=-Wg4(mUga%sNj20L}F8zimhbyS?^5^2a}6_a#p(%3gnAao5uF%3!#;S zyz{qR@Td#7Kl-8_JNN8)>YlUxC)>n_yB_vGk2&Q(k9}O{pXzas8&4*ai+2s`&;3J> zRh~3t%Bvy-5s$2nr-}gtotj=~$ioCWxb~v2+}rsl>->G%Kc8f8$RiLam)*^+~+&(3a=1-5p<_*$0z zwr$aMH0K1nUwbA-d=Qx!oe!GMo9Sis@gIOR?Hhh&ns8RX{!Y8|l=ja3-(z?7ws-#Y z4!d(%d*}9_#iqCq08AvU{;dzdp7#NZ&7D8^4cl=JLJYE3-~I;}B=@z;oz=hpk7z0T zhEHtY`LFM_uP$lt{KmWN4#_vEolkt+#`A>s&M*A5-Dyc|{Zl_`cfO*1=N)gbJFasY zO#Z^_?asyRJNLiV?o8S{xB6;~+dDt(t5LOge&)OEtH-r>{^eG?^Vs&zKm4Z6;xX-= zyM29jws*ekL-x*&_Ri~n-R?BOidp@!_t>3Bx9{BU>w`fLxhp>@=)^)G==6jd;{64k zkxujI1X0Fv(CELgg3|l{F$qe*yq%=8%SEHzlk!^lc@mA_y7)K68ymrhL`em$A%fsj6B|Wj;T2N!lVG&s;t}b zlVGH2tVl3gYXu|8L`)+;(uhSm&&9=}Rf$C_)tbbjqFRINunIbbrZBNc`Ob(%*aS8Z zi!h<9TrIWmC19z9F5;Sk@Xk;unk;Ika5T>miv}LwXF?GK)TAK^MTj(#;>mQXFndZ_ zg>1GMds?9gP!g@!4w%;`i9p=1N(o!gwM7?zb}uKhT)$M%{y6p-eRsP-I}g1kOt70O zJ#6hZwF7F1W@`SW*U~&P{>erv7@LL`=rm4kMDG)O7#&Q~!?uGY^)(}3lX+kkV=wM@ zaj~~@;g=9&&31P#Fc$PXQ;emapHvy?D;u(nW zdV+86qY?w!Z4ZM#>`o6`{xHpe-jo;+Wp!ExbV(P3E=g?!1A1b&gD0kkZ3pWZ&~Vt8 zc%Kv_zd<8^l7D+a8u^}X!+X-hw&CfK3-_-V?!zbBkzd*!`K76i82OXC9XvTbY&)15 z`MRbr>o$E^`Z}84+iiMpdbmN;k|zd3tiZEe`6=Blp5m=+OUv_>-7dZ|J#4#JzdZXj z2c*1qdA_RK!B?d=Vh)#gJGeYOY&%%DJX1|SwcGSl)7R1T)4EMREj`?zX)Vvn(Cy4n zvMapd`X<5575?q{X;Jod8{U^5whd1&3JKu#4O$eW-gZ%*-W~bVQyVezE4v+BnI5(s ztXq_+rk~Mm`Wfl#X!@#d(^sX38#Jv&Sq{&h>6AefMnPV%fS~@n=g*#FIhGW=){vk2 zzx}@HiY~|6JI8;+seX!o@@XYQ9&ul&r&V+%&G|+WObTW$%O&dL#`IjpOG15g6 zr446HVukAo?js>gDT9*IH*e^R-@96s7Y? zu=?GxOZBBf>vzXA;9`Ls@A2os$KDgqFVHkwyP}3DbS~&~uiTQ9&DK2Ra3RzHP$^Fu zkT44ReD4%wyf@lx2<)#-b@^+}ug~}Sc!e;vQB9^Vjue&G1^AS|&LsQ*+DB2mN zZtkDz=KkjKx^6_Inh4xPJH*I-&0-5YAV4VYuHr_UaN^?n!k@@Xu?mNuB`Ci!HOSwH zQ4G@{e{*V(zu7#VJ4h}2lkh#Rl|BA#ndP)vBAe+>4#tel%j$>TWyC7Q2Ea+)^%gVJ zw*pCbSwB2A;t$7={9FR)^aE2PexP~0Zp7L>>axwQXnpK_9t}9Rtvn2;!D}G{FpZxWw>yONt zD4q9@tQA=7xA+6qkTVKi%xCBStF{=9F+| zg+d9=+_*+I&n&;0V`Oy%PEVDwRBw+XsxRk4Wh@opJKwA3QtMrD2p2rPcy@|Oz2C}Z z5tRC?WwG?il4OpmJVEdQ0qQ3vOLtqQJ>ts=^4JL;KQUQ(9rb7yzL9u`e%0qfgZXQp zm1W0|eIqB@7U|Em8z)-`0Odi(V%&oPiGN?hGU?T4`t3DBX6_jmoja>Ls{Ed@GA4U8 z?Qiw&u>j+$_u9!ouO53zRlasI^gneJs=t=s!;txxK5{*aKKzq!+)=5S&VB!$`{g}I zir7xRaaEr&SPe-c^%k4kVoZqnF13Fyw|}nqpD!VO*}tEethJ~Ps)C_uvfSwocKu{4 ztv%~ioVZ&fK6Zk@d~E@57AIa8w?GHBU?15XS+%f_pwmB_6aC#e`A|7JV`is#Vw&Dm zn6L7w=s81@nF-L<5r6ybu<)V|oFU>KpG;r@AuA-FwALsBk(QL!f@il5c!JpHy9y)q{3YiR1|xAZOI zoLnt2;WT4aOz_&AG-4HFF-z2+c>Nga$sar=k@QSc_W>L9q@{$c>CD5Q?G+2hidWg3 z3CoYu%{!U6-Q5OiOb@9jdpsgCiC;RFjf;+D<04JwG-s|gDY*0UhqQT`-`@ENdS$i2 zebz%eEhswx5G(m($0Ql0U&ThCMO`aiS0-z_;>j$(yJT}}&bqc#K`zox^XE`0+V^SeN>A|Bhnm*eR0^I8RPQVyL6*DS!+1K`Xc@ zubzv*hKs<43lU(t=rlhryHVJ=>_Oq=vUiLnN7)8cd{MT+7G16)1%bTB~9=@PG+!Ok5V`6>_`WIahjgvDb;C*V@@ble5_%zNJ1(; zvt@JzZw56Won$!Pnxx6CB0eKUJf07P`hK5Jz_AJz^K9GX{2lE0svv)VoioK%l10Yn z`B)OoAU?4ieP}0r1l6!U&TASxk0wUr^9W+4%;x^d7C$N;yy&r5LJzSb9$iE0@_k0)p#ZgH+r2hs_;;oQ?uV!tm2FR5{f4D4qHSn-SuETmmf?8GW^7BL4#21=0uy=O)$$Up!@WMJtSdqN5w8b~4; z;(YS$TqSIR?GzzEl!Gn3N?HHh6-sdkh!AY`lCqPlTHITe*P5NDxQjx)u9dTUfcalokE5-|zR7^s8+rrGZpj z{jCNBYYPWyfV7Tf!YnX2ag&V?X!9frCIef2`yid`)}%nFMQDYUv$E!HwgnZbS34vR zQ)5j_-8)F1>g6asvL0eB`kRdh({@SH0kjqT%1lh)5#u&sWq5whhajgA zMN}dMg6Aq$D3b$hJA!lW3f@^Gk7%O4yT z(&$0mVY0@c-@0LX?sqdxMkcUD2h%XwKsNrcG4*E5y_?=z75@tqZDw63B`Zt750|CM zwy$GLi;84Hq-aros{jK#WqrC!U)s{^Ub?F#?JWHQ=}Bqn7g&0h+YSb@<)`5Lx(RtY zNHd{G2wAu8pbNR53tym>*E}_{7$xce7}|vnPdsTx8L1~}+4(k>J&`_&cg3;`b8P9) z6jf0<8(P<*swcA~R9zOTMoLQ@D;OcgGdOCMQ7Lkoa1^N;B-klBvqg`m$ZvdCEnP=i>Co4cv%s= zD4D}pok#@sDkE;2f*0ktci_ddZya9UHb@CLZKkED$b5J~{+%K#XALhKLyI48*g#99 zsRYJ;k?46q3xnJMRy;AF8Dyjem=LlFSV445wB;1A(g*>9GLRl0%^WyM$3VCUFc6$X zkbhflV)fFDnH-gPh{!BSXth3`%O1BS^shBPp8@?V;`gWYuc4n+jX^C-N_FR~>Y-G8 zv?EE(=tEU;1p*Uk>(cCzVU&MGSvu)oho@?2Exfs1N!aZxQUE;l2PYlKY!)uyK}l~)ws68 zoA{)v?(ng)vw&o6UQcQrGM1Erq!R))&Qv)Oz$X$)oS+|Bs4@E_;hXI1>A`ZWtShC> z1k#d3zIQqLD+o*7mbM}%K9)qP7RxVkDz6Ys#YzNs7ni>%%Dsbu3a#A z#TQQvsP2#6?-nT<@;vUP(f1We=SYyx%A3jh;TMoIlXW2!*oLTPMOf?*p`H8!=&J<7 zyD+b1n4CYjOr5pftAL^hIT=v}Ya}0aaDdjCo>h@2a^>$9r*b1lMg+V zy)ymHac3{8R<5@!o)VoH6O20*?5)Wl{o=i^ue!fpfF6(fQ*~RVrSv|1yued~;!brN zfRyOv^;6xvXzG`L*6VyGftf?MI!)hx+x5Nu@%xi>#Zn>M-Oi^+-%S*@P4NxIh<);`2%`>(^+bLO*Xy-W=4cu~vZMZh% z>nDq}yBO^*db_l=s9Xcuy`E;cym)Y+d`(pz`06`uORL(u4dcnOZm;Mz7AvheNe!4D zxr^e_uNJRf&8SFBYZHQ8GYaY-$j12ri@90A+`}g%lQA}*4K;3chy039S?BxcfzJ2p zKdi_lilEO!@UjL@SLzdj^r4S{rE6WKnCb*+Bgn&2Bp2Qn|x}25(`~%P+c59o}*a zO*{S^U%K^r{2$8)@>?0+GhYKT=6Bq78w2S>k!h;OZ&A}>`T&5vm8tgy8_ySMiU-0( zkcXMcykBSIMP^KG|F7Yl{&-PvC}L!z=i}_K!H9m=w00y`HPfIePRt4EzMPDNA0pdT zaWAEo0I%M2?qgVAt+AGO+%_q0fwdIOtjEs=sH(;L4(xr+ZB>5TEo{3+(u0|@awSv6 zrd#T({6+WiR72}a7M0tjw4%#Z&x;^GXs6=*RGF8v?09J&JKh9$P3n9G9@ROfOWY^e z6O!}949`62D7C7&k(63hHxVP)HL>rh_it=LT*VDhWvU4-HKj-l+T0mtZ(#}Gb}}Tm z&_q|~){4*$&L$TuF9zoZa#lI_;RRF2id(oj$cC3Qwlg!BC+4#h%;zKD@NcjP&)cE) zX~Q>PgvY*$eb{^v9{VbUCbSyCy-Ry}{bg2!=hq&aM6y;jJhw%7Y%M})v$Y82=?shT zSTkWVo~fU+`64{lNLZ6+8u?Nc;jtkpaRjaZ?2GWQjWb4J5k9EizwshGwz^@>KGPyR z_U+je;js@vcx~y!DZ*pzoMjOn`}RzW@YqLZQ-sGpJO@R1tevwg!eif_O%WdZFzjxR z6yZS&L$dAEH0d7AjO4xfB0N@t$0WDleI~th%kiL)L8W>V3@;Q(k^Nny_qQobxg6F5JbMU_&~Q*AVAZzMGTJW zf(i}#Iro72|= z`Xb6~Ucv=&%VoC5U2OW26-a2UCFe?J^NKG~65`9RG*M+TnpcXb+J(SUO#rS3K|NBM z2Q;@gnz-}@E%rOvvXD@Nu@|qU9+e}@<^4WhFEN@+?|usGcp#euWQzc zppwZU&}|(id!3lz(NQPHF>`}Lab!@p)uqlcj)mE@+qoPOF@SLJY(<2wxUth3kUdf}TB2+4Q zWF17wqp1=gV5=%zn?NB7H&qL2Ua_O5=~V29kQmM z>6qFy9hHTm?UPx0yg}n%ZY7(da1dc+0;YGx@K0H^DOKt5Pg0eh&L``QLs7UVdU;RV z3%-q07jBwgp67p_!c9?M$O|{6@sXcQ$;E&6-76xQqgFAHxl8R zxPWtAMJfs+#UN8bq^62g6#0okrV>9hQ4Y3`4DyRpMas(u5f);?TB;$`RFV3qmnDi3 ze>51?Oqg5Ry^X3!{jN6>ef)0IhyV^p$L~$`@q5kVbrAAM6{*uzk@}b~rEFSOMe1X* zn1pSfx{B1t?L(?aeLTMSw^&8$frWf&HVnQ~mqrOzWTkOYfe|jsO5>sodOF!M%~R6niu$r= zWLevCz9%EgLKzr*N2!`CY#21Nq=QN|1X~EDGihVIvg=|KfzJp=d+G@MZnG?TcN>W! zTt*WrOANoA_2kt|$)D{u(2D~;(uf9xbXXN04 zqs;;?9h&sS*Zf9Pu%{<)(&)yNbC=TQvU7BfGf8t4HSlaXlD1~+_6&~Y6o=9FOsES{ z>3FET{>yCi-${tDO;f0#(xEJdkaVT0+>>Q44d|2;9)f7y`^%hu0u+@IQm6_ufE!Kp zNLNXPkCZfG@Hkk=MsKCO*e~Ub!%(VCH|^xN*idM8Q|Q{@hk(x0J_^f8$w%KcxhSDh zT4>cydU&ZGpIxEwQ8`;KYrhgfEaBH+5V8c!i7as;VP6-KB`zXMT(*-@#zkbQcL~X| z)PHMs;fStFTXi)*jl6SWqR?&<#vdDBQ&Vgg&RVq?cRMokn+ztWav|!8Kt(I)T zSF1IW)xI(5Lhnv=7A*;Kpqf9u zM0zX_Bo$U$q!^9l=qD*~8^H`Ixzykk;m~u6M2Ha6k9?zMuQ)Lfd;|hnr4E zcVZcZ!bZ|j?(ap$L>UZ`x(22CDok+~{rkRO_I&Hfuyv#3Gqv{UnOmv zli!f7dWBzfUr%4cEYKmiGs9sVUbmJ-u*yQz90;2*;x416td2%wg)}rWaUZW^Hwra> zY^a)xiXMc`7+E8@2JAZBXwvBElp94QQMpl*Mpkun9p5C4xXfHl6$1)5Tn&Qsw3Ax} zM(3`!0;5zhxHfLB+phhN6;e`J}gkZ^HsE8sWOR#3EA-luWZJAoFK?43~M3p54_ zDqS^LznidrrV@Psfj3z+Jw=^RF!~?v;xl4c*jL)F#^Seok(WjBkw|!W&sM)74%P}g z@cN0Vr_@;C=8202xVdx!Ts3WTbfDSJUm4fIbzo&>P^B>=o>;r+O5s0&PqNIcN#ovcuF+Ak$xn?f7cv zr`sDkpw-blDor}a%({RHjrA+-g8?iEy=`v#Ex%U%ZeG;yX7ze)mHEckz?~fpwyGAg zZGa%?mRxV-0*9uII~=Y#1c3Pi3IHP*)v$6^g<7N(3M@dLHB9TT$^baX%C$mF@T-P` zAPZ4S5Ot)0U?^?JOGEme+LY2{C||+;!vhfbB3rKO-k~!zu<-HNxiD52A85{&AO%!9buC;I7PV0W6TnlAGK`+&4#$LR z!+eAgY<{QFI(r2R1UhCM!>3Eb6tz1=D5T5~N1&Z&^YGr)J*<)5=#M%|=rlmXjezaK zd<~^Ce%?(}sXzRXm1flKlEYFJf=94^1aY}IHU`IetCL2Dw z((092RU!rsWV$9O85tp)%dMac0#%AP!cS%(Y+fbt5F+Bp9Imy)cq~(xB>-DSP>M zFV)Fd5>;S12^urGN63RD0?kkZN8iH0) zOxV+&H)ssysJGTS?$sxN|A$fd>-YT8Ke#G8$)_+bdlIuqzin&PsX z9&B)yJgH6DyvtW&Ch!&$I3uZ41@JDk}z~%ys#12#v3UM4}~Td zUa)eIVRk{eGcQ2HvBK<1m5L6XW(J<_>N6dXbT=Gar+jpIJ1B`B+Dvw&xrP$Jp-Ln# z!t0sqB9#s!$=3of8lZeh!c9ZKt%!n0WK)SMGbuBy0(dqQu~asiAo5v*5v3Q9FeSvL zdKrCHYqDzCU?%UQSvsG01_bhXjYxVIV_&8zvJOa2SUjUwuRSzJOdZr%z6H=)`NjZR zZi$Lolm!ovx7Q?Vx%}Lh2b+@Qs)RDN^&7uDXbv42ZceU1L$iadF@{KDlNcbmLE9;Z zJMNVW>@NNuxjN^NRJ0hXI+T)_9ofol{s(8mpu7ZQqE-a+upJl`IAVTzpfdA)YnAQh ztrmjte;|nN7$FFj?LwcI=S$MvwFr~U5dvOG5fxN047-P0=T}dNVSTMT4}E#D#L!pR zbR7C(HRp|~4T~#bA7Nv$i5nZKXwrD74MwbCx3LBTiMWH!oTi~X!yT}K%Dv26m;<;? zH3ay)KwnhR0 z$b9J)$XFV-)44YA1?{7Ts}z@2Ij1JW!FD7QTuFGd@J*=R@yw2|peCnxPUab6J22*| z@s(p0#( z&k2rmm=>pjFjhU@dW5 zFb=^|id$d!2@LilMgb-z-K77B7qd8g)RS_cC#vB+lm^H-o8~Mir+0OhP|wwC55V%n zAQ>S?HyF82`9ceK7$b%rYj%pA+q@3HZu}gmMP4J@ecI)eD<_1gnhJD|4viyXSeH-7 zmtX)ulU>P|06KMi2{;ipMS|aK1pj-3mB{(pmYhvuV*WchbCHvlOF{U8i^!RaoV5MR zFu|=f=|;fEO%vUD{j^go=d?q=V!bm)sbeS=UBDL*N~IcBpj6gh)&Uotb$%FF z(G?7UbK%P|lse$f2tG2+&jeZ?stTxs68qCmu|=fV0zzRJ%zU?=Ddlf66N8?qqE!`dUbl>VK~UbP@;$5pUTr&#WXKs0tme1@JI-^#To#!* zN=8;BG5DIO=C5ubq{ae>gfu^%^u3BG#ITalhjlHPW-6G9v6;~aAsg>dbxJGSFXoKb zK+J)P=vPBJ3{VAZI&yCb{ZfY%0X)~!TQ zQjz+Xi@%6K6qMy6-xe22g`UZq6>t>-Im*!teNjmLmOtHAvUbo2E3kn2+$d#`#u1T+ z6x_L~WN81T8OKBMFp)({FX5Eg#hHeDFXZA~eBXp?p^9v}&m)-ci+bCGGkx(Z_Prng zT)(Fo*34X%Cdf^1#0qefc!?;pmr+@6M@sEPDT%jpiVP#A>~o2wTc^eGRAE8|FTlTh zQ~i5iiX-j&OV(0U*rl_a*?OQ?zZ+KUx|TNW}E&d4&2f0O{A#+ulIi#1PmrT97n*R1AIeO%K zsU^qc@>kop@4WHM29Z{~kN?vab)t{>l@d`L+l2>CxBzU%S5T*vrf~lHa{dmkuD<<;CA=073p?GDTYIX;Ih_ia5fos;P&)zlWu6)knWVJ5PXI*7NX& z_3BS=CfB|0VeX=f{bs)3`a9GXtS%0#fupw_JoG+rVQLX7fC-r17#6JmdIjT`El6;F6yJAgj9@he9ST2) z_B?m?O4kpv5Ovq8ISd>d8PR5U}&!(0iuGEPZ z6OKwINJcSAS`wo~-xH%m`bz_`VAKW_5x$jZAiS^<`NlVCAY7z@a8uD@zFjNrU!n|J zU+TwO95z{GY)r#u6UtelXH#)iA%~!Fz@7MEcxN@cqpzZ%NPHNHLK2acEM_RZxqg=S z`UC6=FcFQoxN}h9)g{>sy?Ci<0rpR;*e3c_UEIW!lO0chhx2#B-r9P~2z!1xULQRo zop*vmYge#I5bDam2&&F(wBZw~awh*6m@)FZfv$%@t&tOL3xU0bHUfWZwgJrUIGTP3 zYhlB7FF=h7Z^e6OCrWf+SX7~Jh6Nj7ST4*#&|Cuxyr~)3tPhOW7+94s@7!YHG?W~- zp@miggYi}ZgJEa^bu-GFHpgpbGCOc)0A3yX(POVoc3Fb0W#(9&Lah%00~k)KLrt}? zOeC|3Fan=Q)`2gB)PDV z(**wVk)esgDnbzV(o6*}Amgk@O3)cZKOjX02mTPJhB8nvh&TbvzE>Fs*%a0S-EhSCK+f-0_TCnOApla7q!(L6kQ zkv)1qEKB6jKAXp9w7LLniEW@AwYj(L=|ay^xrDWuDrJh+zy5UT;ZeYSr1j4C9+0boPw7uUT#>vx$06=-N_uo146!Z`$y0=(SQo4~a&XNo(qL!-af z$W35%mLYc$gEJl)s1NvGixNcna~p1SAtaTPwz718;IqaA+d< zfrqgP4QLP`XfJXUJ7h!*>=-%u|x*up5L^7-+Oz-D*$MF zh>rLda1q7|kb&d7_cky7yPW|m*Gm)fnBJT`!(Enwms~;;0ByFWnXFL&Snf}Lxb7dS zdSVsgfBS?!IM^YO!2WxSImUAF8vMmUI0lDt1DpU~$?L%WJ=qcb2^_GC6R%npqj zH|H)23A0@jeiR->x2KTO*iboIz$mJ+8!hz#UXQp{Qyn%olK%}#DC#wPWwr5*SHf1Ie5<2r!*1gB;tC0}bc_PHAj++>ioUPPXJV$}x2gYPB z5W;aWjZbpb0>Mvo39W=$h>hZHQcOWllT~H!L1;Ok-EruD*0tp|=zBQ~A zED#GvJd(7{DM`1GtCXF9wkKnbqy39ZKmx$Uhv$)bsKJ06<#>H7*}Tx3Q2cL3btv>^ z8DO4kp(!cXLX_cXD-M$_!cNOd>4z+S}w0D5YqJlsR68)X~P|5fW5Td;H|Mn65WuR#vc{EX>%x-Lo?V0 z?ieGnVI{}dptSsSB#bx=&L3H7s3Kz9Bw5KLhCfOkF^=dHYey>ScpVNHygJ*+#XMrf zO5_n6czzlOl`hRstCR7M&7?C+4XrC%w-~lq0v9%u%{%zOg}gtZuTsWLRN z(3BNA%Z0>VWu$_Zb9zgMA>`X}m%!B5PoUwY>Kb~~9)(X(Ab=bCtKK4``G9=fK)I*y z+hE6fq-HI)aYzN44J@3B58!MQ@a4;Pv__3ED2a@Z4(ISCW%c~^m^XYVrxj?)EiG$C&sdc8bMMD6!j$ZwVk_K|`0zIu9F4NQC#IC35 zNooD)XgwIaa&TE@Q~v!e`e}4DQt-+8E2nOd2atn~^h&n9`^WURsy8=CQrXm`7Lb>W z)=>3iRQG55(wKC}=A05FdiX5Gh8Ic#>PZI{J)h)WxCg)M0UBw| zAz4A1oHv3`(IDY40upY}FeS5p_A(1SjHh`_*YYlLWL_|WhNkwdXas3Dhe#cLo)3NO zAwG{eT2nK`H8^Bx_S$EZT1^$KX@XIFN^S&lP!YNyT`&Xal30fgRjMv4;~mkC zM%^kO8R%`jT^nAn;FL+7c6x(f^g%ew%aVI+e4x@Dw0k+@nqdHIjsvcramzt>nRy=| zWU6FKFljuV;G5Bel9F>o(K*GH6P8UUO=;uI8AX8}H&LL7n(3S-3M3I&5J?1>lq7=1 zNbpj-L;%#12=pe20P`oMT}P~K<}!z1h|az%HS+P_4M~le`YjGn9awzJ0Y) zL3*v$nb!xrt2WTR4~Yc$SYY_^V|V!64LuX(q-SA)^_zkNK6rne2+6Oc^c(zZ)~`JP zmSmFog`0cqe?VkadaQ*Kbc*7|NDg8bBTnd|V73(oHkP)M@HJVbCQ0T%Gj?DPpR|?E zF0d4XWX#V4mcd8Yfh8{@3E_ZrWGY!4ghmL?Vt%4wR8EQYj0<8tLeUR{PV4`EU%&p5y#C0W2woIh zfM`g!Ytyt?YIh#>>(}2mD6Wa#BTtFvS9b~l#`;sgip(pv(n|0RSt~ILmDKls5{^?O z=br9k#y08`>lxK3mymL1BwMz+6KI#LKVaUkp{eX6KnyVz$xZ- z0@F%|EE7-%OQoPDEB;)b<~~VwOFjH)J-|oM>RgN_kzS!A-fD%e*b#=rQHr8r}6VbOue$PFL7hoZ#oR$fBNY&Kw8zfJZOQ%!R%Da!F zeUeIqTTQe==PBD$o$46ca7CoY;Uy+Mbfh0T(hpmthu|%opVq(g=288Lq<;PTSPzgM zMG4YG#!JBo6hbnj=gZY!e4qg71EX=<5p~G@^Gu-r%>VNZ1ogMlN?-xj$_hwt^o)PY zg8k2l9`$x-$$1awj;MUi_h%^{!gZV3=XCwr%`4EUx< z6qk)kT+zNo7~`twrVZ|Ylv5gWw@UWX7i`4**-KM}Va_jgkGSn%beCc9d>fe&*-TMV z5~)7QK;Ds(FcURB(~{UbXxFu%qbI&qV>=j+myYNqbj2L3VNYW&baCYN$oe!|%%I)V z*to7ZMqH3!^QN@yUX%UdYRdF+xw?h^kha`GT6@tH%8rf%>b#|2KMlNIap~ZH$nk@PAJRjVizA|qDoMrOs6mGU=O{PHTa(H|;ZC=%0>hR_H-~NCG#)x?LcYhGH$C{q1|J(bXg{P%n zd+UK;tNJ^Wm%i=!7w-Jnbq|o8JhZ{i-)Vhccd&lzZ@l@*{J=vy${)S!{msCSRSdQ1 zP%gmKXid@BU|6%#Ky?gc2cj|FO|$i*!lCfz4jY_>)?m4JNCfN-rxPyo8I)MPx8^4(sMgs_-+67 zf-n9@p8J#hci;H3-5=C*FL`}+@5X(9sE@DzPW|^;J|5#O$n5?yzn^ipLo53`uX^?u z*L>-#FZot`;MmSjJoM%dZM*lq-^we;j)970GX7jIPmc_5=ZH=gcuFUZP9%La)5qTM z&cC_t4g=TQ-f&m?ViqGF0DJU_>t4{Tb3zt#{lu1MBg2T`c463o*aKBx&=Dw-`owd1 z_<{O8x*U6;8XS{HMj*m3&4;8udWAjkgg?NI$NY`Y*$snIQa|eV9%&x>sNXp04>eF> z^7T>s=@>Q(me&26{yc&n@_y{ebfJFR(O2#lXIhHLo}U=;?y>iO3vt@?+4(5U(Q&wi z$&<+oOwpmugKBsW?V~E}Kj>^PxnEc%w2wgA3i2ALf%dWd4%-?y_fr?pb zb%n?M0Q;~oS^{A8ZU^H#42(j^q(0`i?hCh)`X0Y=x7~0A?B8GZ9&kXj&H^>DHUqU| z+L!Zm@D!#YGES10OAqCg3l2B4O59I?s(L10U%QP;Vl_jonr~yVMyDKfm^AJJw-ex( z5;8DD2^mTnq)tS^&=EMP3mh~@2^@sDS$Upu33QfP zCUr9Y>~uDNB)x+{cTZP8w_Ieoh%E`ZL{MYJY(!vik^aSHGoE5DTa`|8ISD~nfH-+p zotZorpu*gc-rrx%>_YmNTD)jGmviPjNa~F82k(0KTFM_ZntxaAjaxg)8OBB_3GJHD zKWO?3b#}{s+Re7>k1GV)V>yl3J9@NtlL7~#1I0(P!$JL+i>kYs8UdZix9hvE2LD0^ zDG7#}CnQz#xk@J)Opfon3702)MDv#KX~Vv1tmn-g!teO~4-jnI*WM!lx1huvU1W+e zeX`*WR7I`r3LFTG=5x4OvoOi(#5~X>W9bggF8Q}kC0TN6j84KZ&{V2{ZG;|`1x6n8 z%uC+PEObVS%(x4Z;jS7+gdex8sS$A;1h}J8)UUbZEp7q`wG3E@%8Hm zDA$x1o(4fM40hwn6@u{QQy>UWsHTS_2(C#XNYOzMtmuqp*rMDZh)-U+AxkuMy%5MZ zaj>$9L_pY!1z63lJ^h}JVy8K8&U;e2?dQO>kTkMv^o?AYoO09gyDB#wzpHZ7S-2~? z%;T$$+}Tsq{~}v{X7-BiS9w)%xXKUI^}?P}#y0L(ZO-Z=Vi8A{XJ3E*Qn@0 zFhP9dtUFp06c9Qr{&f_Z(c)*NVb8Yl&*S2tI~bURO@_H~s2YbvN%|ya00y?&0%1*E zFcfdxu)fu<5wy|Z?4P$SI1$+HZ~OCpI$o;KY&;8B0$e~rPxB#ckYhm}g|G((&a<@X z#fhtNa#C@mc8hUQIxM@TOtq~HAmKOe!BGS(s;pcF2>C)_ss~Ex2y@&85=O&?3O;xX z0t31rrA`89pKZ4(r#n*5_#e;aVrIzO8zxGB7Bl0Ewk60gcVRI8;piHkk%x5ERtp;=`25 z5@%WBz*8pLNJ@ z!c__k4XETj3lI}{gEHuaOAo0cdB)iEFp9rNu8@mjR#141*L0b5pi&{Xa0zz z|Dxi2rk_f|7Zyn8R>bV=0BAZcs|~k{&?yW$|211~*K`UrN$OJsNmgNtEdQ?Cy=FRsTi z{@4nJV<)Py0{Sf$Y8F~lJt3Y{L8~)x*61xvsif3*55Q1@&I?*vbtRZnhVB|!97IEn z%Y7EhiV9-}6md4xY-1r}W*#iX5|}&HFvau;+}1Y}Zv&djN98i!y}n;hON9&yp36?4 zR-D4G@64b{{~}H+)^GZ-eV#EEdz(cTEtU&OG0=vM%4|K!svq#6-q0e)49p)W{x*;N zC76KcRQt+S7OpFwqp9xb)IyGRk!H*fk3slLX__wODNkAb(DhjOQ1pK`3q~@pgX|>@{~mCTtwqso;uA5`Q;Lyi)>gf zvSGP|G$$CwnUFPXq=iA6Fvqf_c&KMmnDw&QzBFY4Kb(|>p&nJfAE_8v1QZVCg{5UX zdfcZu_{swNY-j$J1l#kFa}mq6hfhfjG%}pz!gAuQFIUJ4GT*)A!J*|&@E~fw$x2tr zNjbvuc^-CIY;}rO=_qh;W0Ru_v1H{{;hEYp!llP6(jt7nud-F9C`}jWgzXgp^DXjA zBluP-aB)vH)z$o&8>W(AVYO31RgyrIhe9G!Y$0dbsikg&=cFo4m&1LP=082@<;%w_ zM%QzR(=&-9$jGy##CDD32FBqk0W>4tIL6yeLqs{0OO(SENK^7qyymQoXANy;p-KW| zOoKysE9p92aI)qNh3w@!NWdxNoogOQ`Q1boGa237EUk#pB#9tb%+c$avAiyW^Aq@~ zmL|E;ymEVZKa7D-VndRt%1M$C4?>%_ZFQpCf+;4&%cD}`S?a8WBS8@Uns1e0s+!o> za+Q3G4S6&Y7d{Q$+#0-bnJjY;%@9@!fT`!jr0ln*7dR5W5!PCFhQtw|Ul(lgix`@w7L zkkn-^ND}O*XRtYjTgj=9U>8niA~wUxJ>67mV<@Oz3c{dg1=PgW0K5pSu>Pi?84hNS z?U`dcI!;h|#cVQbh9)4S@SfYVc0R%oux*&5yKQv zGNfsMj!s6ry)fZ>my9$ckrCQG&$IVJ^oL!^OWbylH2cvl%svDn~sG?=yRwPJOEAx)>FKL-@6FGPjQ!GR=hfoWKN32IV;D^eTjwfS5wQ?j!ljF zvrt+GrD7Q4}W5y_ri%|+SOT$EkSWfh7>zz6hU1y_0~#O9K{kqayEeEoBybP9PA zh^%MZ0pVyL>xu3l>qOb@Jabt8-0Tk?DAWBC#(JbAE1styN8ws8rUQ7421zQWLa`HZ z3S}^`#Rvw2U&mLlbc{;t5B==0{$Rg;)9=PiuAmKA4pz*dw-Nh5G+vkpv*J9mDrHt_ z{rPuZr7YI8encN+No_ZOfw4;A3v2EO1+Oixjri1fw9@+Rf4t3GxJMso!2@nr3&XnT zloj6!J_dZUA;z>pipl9!hO<&q6Rtpf8QNu*%BJvCjfjYY`pvKU#`+tJ%V|0Y9cwxY z9Egi@TW~^=mu&692?<>U8;lWDfY0#RMJ~P!qZ}oGB-SFy@8X8mVtmGv^OE}EKc8ct zs`?E)vwccJ3j}F~>X~<_%EgO#9GCa9Mm^mwsekedb9G^jO6V@?+8d?5Z2)S_!5b7u zQ(9e?e#g4`o=DhN(`u+Tw{)oN{tK{QTFi=5d|ufuf`P?OdxKzk9IU8{8?KhELQ8EMfqi1R2QGiS~)f4 zrLZk9O~C^*3OD)|m`z~j8Dw`S7_Btv^wtU8DA<=`-NSaaD%M??_I+EiSWgMj&$RMBapHu91N~B5-0-548N8Hw$#3IqiROZUu zhyctqXE9)g)-<)CJtOYXs`<94ot6Am`I8-9yOK)FH&SYJg-tFEETF$2y{_x$pcyE z=?=yA z#qEZaDX%7E^2n7dAt}n$G1M?=R}@|v*7q51Q&zRfeVj#*$-kD?$9{_6v-;uByNX3Z zu@8d4^GG(DDidrriHKsetDFt0b5_6pvr3!~+Kz9c=GQid`0w8S4M@$cOe?4@)}je5 zI_`)gUj-p=KyM7+UNzoTO~Y`g<|9S28|5#@`$?=GYpHCbU7}+&SUGu9JQWtSz?u4D zTwLj`AjQ1Cy$mME_k-2k`aP4PvA+w(GB5UG552T1N{-c7e}Hm`YgF7#@4#e${fosM z9fV=w8f9ut@zQ9D1BWn)u_&6+?_nD5wxB1C3Jm7*Qf3sMghTI*$PmgBe=ae62znPW zw9zE&d@RTCPDV!ri;wBS^;L057OyS(NvxIzr$6vq@oV@JkEw)A@j;Pg~#=ZUrxc_psCt2#6@EXPo{9M2zQ;s zk&9^?3(4&~24>-iS*7d0CQHPT4vajmfJ`rx?|t1{&7vsjmPNsakR&CmjQ_Oh!GO-9 zxUxNCixM<#Ta-{xNl<4xGwq^Cs@hW6lHja~OH#2C`94UOx;+|_uYw0?={#rCLrV|x z`INL{t6-bZkOnFfC&+G=Y#d5NdWO6!Qp5V=urc?^%?1kqFvF-4xCLrgIkkrK7lI+s z#8+6b?~ub(#K+1d&B`TA#N0^3Ey;_aD9sD{)LQm-VK_zb%BAY4QzdwzRQnpsQ#av6 zl4!1v&xR7y{H8*|!M^Yud*B@GiQ>7@n&6j!!9&ClN%LjYTxZ=Io zRysxwCFA!1)68fGUmTK~6xc~H`*%6BPsw>4Mf-w0H}*#~ zA7Sn4kALJ_wj@kkU(MC0J2kr)k)wQ2git$HZLbXmveg7lm{(H2=W)^^DGV!nU%pke zC@nBPOR23~JjZFac9X`UoghbAeB{zP*fdR{1J(3vjG)<2*#o2lOJxL&I`yE#(rBF* zXX&FdQKvak(G0vM7R67Z+0sdmL%WYi9{kfJ4UV!a!1ngL#+d3J4D*YOqELMN` z3#DcS>dr{cOYBDe>5N(lIFj+8o4z_MB779>U{Rh$^gT|{!f;=s***C8 zWOi@qn^JrR3$KBtv>0}e$xFpnu>@CDMOi2L$yp~dNC+^mSC#8m9yg{aCY%W8lmLV| zK&}ff9YvrKQ*rZ?OEH-;4VI6$(S%+y|3zOW>m<$jDsl{F40Z?|sNn1jJatA|5C)O9 z8=f~vujW9JKk+@i-J!5ZQBieh--xJ#VkNxGxzH~Bq1d|CWnp>k>ij$=erVcgy4Z*vV_oB@Id$6;iyQo z^7?LWJkW7(Lf<^l!GbgQUyS?oqX)XTl7WB+nlw7|Km!yurlLf02ls|Ycm_f5hc6M7 zmrJ=WxH^jBTLROqoFV6;0rMbC6s#=Y~kXc;2P0%R2Pr z?&@K2;3w~x&jWFp#e8{nQ zCwO6zlo>u~Q>73^ikv~tH<+@G{t|31E170vHBEm>|ST1b~%)-UtBYJy|#eEoJ(M20$&vE}J?OF?RW5uj$tp)gOPIykIIq(Qx%L57-dn zj=lQM*Y@zGHGJDhDF&$-OYJtzVy?S_C++D3cA{e7Nw7Uk-0|} zX*-{#wE`@cUvYOH2?_qIPy~YLJ+mSJ2QeGim)%S+7{uv0=yskDq3DK#Hlb+epaT?v ztVJjk{GgT~_5xElgCbzk-@Pmm6Z87maSsV2-XkBR>G+iUe)IYhe>+!?;cn>OOP|u> zk_HzH{TPo%KPPZZ3}or!urOzNdHq%zov}t6$sfB`qo^IKw!ZF`rfHY%vFSD@-Hz9V zd|tod&iQ)Unr>s#;VCu!oHW?IjKq? z=pt%G$}&x+S+kWjnHZ%WNRt7H+8{L}_Gt4+j676>Z93{`GG}4ELz{R$@Pf$mArlb} zu7U)n$@u1jNOoSNfcZHYo(*d zMjgU{>)X_!I4O3ysZy%M0k%G@9O@un$XN{Fpj96%2(1(yntHx?M_7~KL!a!HBI-|I@+O$A=%ES1@@rB?SsyV)0Z2$&4b7|T`@X9^fXFedd8WaE5X|?0} zl?QPtrKhHuw>I16IsV`>S3~8j?FiOBF(PESLgi(@9210B&=3=#%Gs$!0G={Xows7X zXs&>}wkj(UL$MiNCt5}e*}{QNuwDLPtP6HT$Qqq$8mfq|$EHY!?S9edLsVbeBbqNz zkYaK+Qd}omN)`X(uCj!+pI0s}*xK@p2bXZuCYqK1+v~6vYA^?4P>e(np0+M0bAnd{ zGxVf=d_4g)FXv8OVBk!d4>rYNYRGXSbbx$j z3F!^qA{oWLZ@yT8H+JdzM(}uJYEgoPcE+_!S}_W8RNDj#b=0gaQ1%21Hl^Es84N#L z-@Z_h1a&$6xim{eV=<{XthJU<6+2Q5KP0l#Y&W^06Bgj%>87zNZJT3jxP7tY3Q|7o zizQd!bhIy)Tru#-k)mDgvMVlV$JZ0gT9jPTR368@02wL6Vx{DYbJ|5?kpgg0EY3F5 zXcrCgvU7qwrbfw4ORgZsuq?Uaoiq6?$rb4j8Pg|?HEf&dlw438Y65mRSK=bB#6|ur zF5*gD#Fe7kzZ0IHiR#K=+!Rcx7F%(+p zhXfr;UJppZ;92h2Mo>>CQVI}{F#9!7-34HLAFP^Yl|@h&oEqne_>K_0Z%mA^jSyXw zz}R@UA9De0E3`c%*DDK%q${U6PY}Ex5K49rIyVng^9z8DOreV3@SiAS0k%-iu~!`` zs75ycW80=Me*;|h$Se4j$k2M&0MBURCzG4ZQ{Us54mM%{37gZb(JylvGyIBm!m$yi zqzQSJlo;ZvB&TEpbJHH4W^M%06>}SxvmE2)rHaSC4pjW}TotxUNV}4j-O(-t|FMdS zYwsat^*n&gO|WS_i`B1n#?6pZ`xH~I1ya<_^_7%gHG{0v`o>f;$`O!BWXodeN&#!7 zpk|k~k}g8-cw6~k3T01Cbt@mtqVTY626uU)0%A}?gBd`<3qDMuCc-OYnh}1MV3svF zF<_kyli((f6A-H4=A|y26C)h@Vt#toae}-)EvG#ssF8i(yOxQlYjd?NnuMUuo+Dqx zB)JHy^aSB*LtGGA(G;?8wACskf>9X_z8)U62g74*HeBF)vCw>9r|;|9@7m4J9WFXG zRZX*eE@MGMMQlJ^?F3O=KC{#a5ZYD*El@dUFe@}vNpfzm9eNj7KIRlo=aXgO`Xw7G zQkI1b+E_&{2B+J69!-F3EgyzR2n19~Fe3wr{UAQA&mPE(!=1&_c;@$5#`zq}yddgf zpvF9?N`TzHVLcBKKiR)tq)Z2sHJMg1^TH>6!FqtetrC7$ObS943t&J>OXN;iY7}*W zJu&hJRFo6qMJk-yQU~%6Bj-LqwPE9uIPc=X_KT3o z>u6%pZrYerjR}Dp-?S(>cz!%1n;^Kwtm;xUN7yr->@rQ)xkk`)7xiJ=B-EEXo?`?A z$GXl)Pa|4luB1(718F%FBV9aPjPwtBHECgv*-TmS+Q!@o!3QWsUT)3Rtc|m)r)2gr zx{2&%^cB>AD88-o1h&V+gLJgi9O&2`)YQN2GMObh>ri@wu)s; zhq$fKzMP{FziJP89Y(j+U`2zR>eU{<5<6zbAhK9Px`ho9Qzx_`qK{lM{Fbnf{&)!A zR-D{6^T#9JI(^67CpiW!Cg!!f;2rjov(C#IaO>vkgZcqy<4bNkjDqK1j5o(EgzKx* zQ{(y9I>%nz^CkBDA|7wOUj1O=kAnXmMoB!Zad3tHn|N3Q{RV`s7m3{TCLV^pXww?X zi_|#6Ogh7>?WbvZks7C0=!iv);ehjALPzm1goklM#E-b4)y`Rxd3+?xlz5B>(95qT zlt0t~Ogk(Q2_}cd@r+xl>=hW7Rrb&h#M-~8vic8_1I0VBamcqYd^~#eMDio`TaNx%S4q7=$nTH4&JHi_^TZg<+E=iG)zf8|(f=<+hO-oLc+-V%PN71Vk z?>p*c;9=qh?(Ok>9WY)gXAMWSwUcnRo%E!f1;Pru+0Me}7ul6(>^whBUx}d2>l2Bx zkj^2+lW@eO1Dd8!=IQ~*U z>n|_kdp-^v(YcZ+0hgIg1GcZid};X~+S3sBmyyib&8Y7^%|G&G*l;gnp`bU0pgY3j%y+L6n+kc?n zbr=K}c%36aWT2p~21kJKBluOE!*~iLDv$BHdM!#ek}m#M4!j91yqz#9y%7H~T>6jpZ6wJ_pr)6T7 zxBk=Yp)z%{n<=LsD*OJ~GXWwq#fC>G{n#@iFKtW6D+w~zA7_4T6_PEAqX{i$kKgRT<#TqN|lNa%Ap{V6+_na~H@L*0q9 z!glQg6}od$s&a}U@MyaQ+uYDiIJmXJI#=cDH@$6Ge<`hh^`pJw+rX{BfXJ5~G{Vf8 z5a`Js;TJ5%OfYX)pZXuqP{qt){o!BLep7uQw?L?_g3ZG9YjGC_)N-LMzAjAvr!6vf zQ7<5RgLumj-8@Dh;2u@0fUAm{hfLTzEja@a~k zxE0$K__ad)n3B|xeTz~;t#l~KK~O~M76faKSM3tkPn85eAHHZOJXss9Bn9=Q{iSUj+RzYi7< zwg{MOMvCuFik6Lx6veg|TQ)JaBr=C=vA1K5wkerO+_oAYZ2oM>$Hn<{V<{p{@WB6jOA z9umt0?v$87Meqz*j2mefg!80fgh~^L!=+w{#X-to?UE>{YK)!ZqXQ8?&UkKqI2m6;0ycdYNT_umoUzrf!QZp_y-4x_cP37(`0-kMnxn|SQ^ zG=!tE3EO%GCpVE+yez6A7seKNkQR7phLf9Yg7w=!suq6vqhS(77=#fQ1>^!zT@YK~ zL0aIYnOJ?ge$b}za2$he3uFwIS6FE`)Bu(&Ea~^d4xHWOt9|YX=f*F~YqbU9jbt$}wcpi1llQh9w&8f}x-P}s*`(hLB zn$3JWSMiJexQQzsxvVE?g14F-&GlQXi3ej7u2geMrcLA*`f*!VJV(0bNt)m-?9c#< zcUu!DViRsPWPWUO@os`AK9Q)n)jUZPyw&J#^#`npkH;ol9n5Mw!MXVPemuF^%vt4& z_G_M{5#HlyKMWuRyWlBoiVLHX8Z2fT-N>kvMEZBHZwPzDDQBtsuoBF$r2fUf#`G5> z{WqT?#VRHV^4&ssw!JP+%@2vj7(&&`i({iY92DK8df^&tcgtnr3}*&Yyfd5d)d7OT zHG^gQ;3*XKu5ZFQ&IFS28oGVU*w zQ7E)Puru1?7kQ5Ea;SxBgj7GfpMelKfD%+y~f^xcJ@^8ETFMTu$T2C-(Z( z5_eJXr7wHk;|dB-q5QuU543v09ixQ|(H3w`c1H2>L2I6~+O6FqMX*XRx<34Gui+z6 zHve3o{OxP7?Ko3v_j;C$6de^hrB_e7I#0fn2+N2T|0Sgink`nDNG&AVoE(I5j&csm z@K$Q`U`u9%G3)+b9F0AB8&l@~C-V}73)u3aHGh?=*1Vdo$CPjCKs_+BA6TO3c;20Z% zn-n#|FI(mH(QF?R0gp<3#w=Au7>?6p$c@FG%PrDi6LrP2;#eusH%UntcWP|Gl4rEnC0TepyR@tCDonAg~}XVaegZM@%Uwo);aMcp0WW0AqjG&O8Dl*y!qn+uI*i09#$8bg+c_hnc8A9?U}Gm5 zZ9QsLB+roZw?Q!(W9tmp7{>{P{zyq7VZfLI`7z{maQ1v#lM{zsh#0P`n~_Y z$rrLKb)EnshbEH+xUg?lX+wX;@A>{}R_Q-{Rq?4C$c+Rr0C|?GRba2OVw5O4-nSmm zj~fX1W~!cHatNmuT81DaORJ=0F@kT=$f(BcC%Vs=dsK<*LTkc`2n(7INH6UrBCdv^ zpOU?dM9GU&)T!c3YqFl0hL)GFJ-$w<_%~-Sei6Dv`$Ldu`# zx&nro-MpzXBkZzfZ}LK8573xXdzI_3@OpZG$1klyBV?#ulRN_)rH+DCX`T{^=OXcl z93DJ&&;&=xyg(DZE<(U|zN%Fq{Y)(rZi=(l(58wjNC9%<1*v(2Udz#z+gnC`X%935wt7?8sh98 zBQ9epeX$g#uk~j|=@JLp4e&&yAWV8TVr0XnVjk6WFf|WFQ!`p27q*@Tk zMv@B|s8w@f(?BwUjr$6?aslI@jV+0ni#AjcIcYreq90Bo^87E>XraFC1|6ug=pB0- zUDz~%ElGAwl6i~yH3@2n+V1J3a{C197fa>d;F?4!y?h#8lZc=R4e*sqg+8%Ihfzm+ zogZy<;s9u=aY2RAET9V)eUi#n(SP$E7|@Xo5*AvC+|aKVirgu03HVU2DekT5Ybh7i zUr|Q^nbd%@!vRT(LR|6~p+Z|y<|7%QV36rOye9!&Nu86H0IK>ljRJ#Ijip_9S*@uI z&9vkLqe67elFlgVtEp@RYk*ewC_R!TU0S%K`P{$eX#nY$=F#rzV3`%01VF?jR z?tq;R#VgTk)P3+6xS`!_Hu0B4@~I6-Bp+K&HL~6bcv-R+Gy>{!M1yqUSXrx9PU|7D zoKK(z{F4AE>fy>#dm6iE5S zgX#)rr$7wFHY7?&S(Ydv4Or$nY09#HkrWm=llH_x&JsF=^OfOEc;5@eSc$idd?WjN z6BpHm=0bwsRxTv?T^ak_W=ihyr@1Gbkx9ut=ehr6VPf7zsi2)9YsSaOhqQCygLZN7H;23Q^fQGO*9 z7({N@*0PMHbJ|TS_MjC<8VIGaoP^RyJE62yi(FE?fL+AH@xPzRW{>1c&*<)!g#;Uu z2@!Uo4Xo3g7aoSNXoNN{7{VIf$|~cVtTHYt3&}-RS*|3Xd0nog0wg!Dop9ix;`4L5 ztim`mCgg=wu!>InWu{jhBu|GRx@EP^r@x#Kc2PGvD_yf@%YFGWq@XCqg zMsUGyThg1otbJps*UzZ`IKGU*MxrDI4FP#I^i%c79XbH0MhZ4h=1Fe%8BEJ2o@6;n z29qNxof%mgrSu&9EL1UFuT~`Bd0=`spLh~unm(DIzA`H&pjmJR2rW%j=4hJY6=uN= zej_SQGi84dE1F5u;YS+0jD3&=1^n3OfhG-3?AH9mT4$t`b7w7B?>x0ve3<|uhXdOE z5sGMWyqYQ39A{(20W-U-3~vFgW41jH$hYaqKG|VKtv5DoaMn_@Vhn!H((logHO9hH zB^aU20qa~s$AYD6Z^R@(YHFgYdSu`MGsJP&-C>4ny$&-akK7AwAb0M-tN^G4Mm%1G zdX+^u)cUTgp)<58Nf*Ju;N8GM(8JaM91M>6-_gJYMMjX}KF4j_&$xmD|C1Rz%lT*a zj2SvGlpzcSuy=5m$$%KR!9d{FH0{r2iK-^@>x{vKc72j=Bd5h1Vdc)=TBV{n)jvZ4g3sW62jH|Qzv4yv zr7;S^QD8DSXZdMyAMUJ{qM6c(mlnt7Vq=D^gGohfO z!I+aJ7czJ^axn!bFXu^y;~NQBS8_q!xt0s+&i1J1c(&uMI$$=PLsA1S^qRZ=Q*@Hu?z@M#f6ua z3Z|r>PPPSLo74nLG!rs^0teBH<@A~~iA-dP3S_oB@2VpL&OEFJL6->$KjK4yM1i%e zxT)gqi(B^<%2?|GG*f(2HIQ`c&^{r7o*1<4VygRm9M~bA8ZAl`WqP$B9`p-T&zSpC z+8TAq$bqp0*9{)wFX4b&0>P%lqUqD4`rUuFQ5+BmiAFFxu)d^oV6N-F8IQWpv_(jC`dV*^3-6NzJ! z83AveO6Ql-Mkixh8tB9b9Yt33uG9`LO6}mHVkTT<1aQ$7buQX5!bP5LF4C#E$kWY5 zo^CGe?>&=?JMbJ_-1o3kYHnjvfBvfqDXa3}QdOBXQf~TO{g(HxE3PAS9B2u(n$gQk zsZ)c5!XVHtF;%l}^ZG;K`Cts#^TcFiXgJD)QhMG|zE}U%`@H?e7@&Q`7!0=FXzjz( z^}PF3`}O?~`|}On@;qD4#ICp6^PqyBcQhW@Am;UD9C_DqHz*4`~@TOkUxRb@QYyv!6#-t zP{WzsfAypO!nF4gwszD{gdqjzm%RX&QlRVe{(>>SkQ)JAeDbZA*qViOLVE$W!%iBV z6r?%ee$X7;Av06|&D}l+I+jPoUO<_f<%PSv;ua1Az2HT1XX`%?L!#s6g_vq$evbOl zuaeG5U6{wHpc5a`FeT+SCqIcemD0wE;Fj^qtvkalsZ#O+bL$8FAr%x4cNYAPl;m*d zpZcAt_Rfp^j+~3(8S;76nWR#<6S8>4AH$t1{26I4;m$Mtj$BLO&Lw^anR!hMaVjwmvvmfGINHEB z_)p0NSNTRRCdL!@Q{d0SPZ2xw)b^hseu2rCZRgn(y}eE?HpG-K z^O0w2@yscu~7cl+0Q`$`zfzse3c4y&3w4u_gQ4(}?CPh>u*CV@4d*Jxkbi2#q% z|87&DG;P73G;;#@RkJV=WuloF085E2P`d-4C@7A)Qv5?oD9|5viJmcUDfEjY&wgQG z@fU3XhmNpb=ENCnVaP z`an~sNbqqOHB+Bv>MKojXcOhwkIqD`2uPTY2JO@7Ow^{MFoaL1Gf@@gfF+?WESo6r zvs<8Ex5sBns_{DQh3QUFI%`ho=HU2$T>r-`=hnc$l}xUz%I3J8 zgWi2U>-1c*+A=-saG9>6N{><`Rw&Z5?x||@h#mMAS22-T|LEgyoJe_sADZEDo{H$a zDPQFYcBtNR%QPOJGwKzlS4t6AxxRd3QZjak4PvESd;+~Cq6)N7a(avh?!gvMOCcrU z58K{=ew@gp&;&d0;~tk-&QGP&k7o7%{Z*2rsOQ&<$c5r8 zD?);ca7$26e*aZE8zU$uZWu^G4zBsM*4Y?2RmywOR<>5!)T?_xxvkDZ>eV@KF^@di zD*DyQ`0=kl8OrDJzsWG@Ba6wfzAw<=*zGaEGK3yB8%VH zV6V#t>;^6+QiwfKs$#{r&4^lE z3-xyN&GdHIZq&YCBv~ii!qlM|OI6{-9z==gmyN}0lYJ5Sc3)RLUUKqbpIE(WIdLcr zw|c5aVZ&@~=(5kij(EhrJ8rj_ry}=YO#S?he@x zmY8yu29$Eb4c{D@*+9+-{*@O}r5>+K^^rUl*oY``I0UsM7>W_WkBA9Tn$UFqfuWo^{V)d_| zxCBjo?0uFb_i?U%@*c-`?EjslgZ_=3dm8lj zvtF|LBcG>qLUC#?M&W}$iv!3SHRMAlA#gB60F~p z?X8gLGtjan$Lo&WektY$YQaBZ9QXr;2lB$gisXKs6Zx?;Iu8$Khw*H7J5}UlxA*J| z7J9vn#nrNvCaPIc!Ee^Kwf_65D6t!Ny7h7!7A6PmsqUcvY4awX{zLIHjwz{0$>nJs zv!^Ogv8y0mmG+9B?x?^CSCk5i7^Ky@3v)q>cN8H@;k8CXAXG|zD`P*3Dc^9uL5;hF zKDw!{vY3ZnJMcDvt-wrXZ*QhY^_}Xi>uD*IJ)gOo!(rjFlRE-7vExF(X+Q^0I zO|!Gt&Vj_zcy-FQj%+*gkR~LTkCdcJiC!c>s7{nzT_99V)S5WE6elGk+7YADp}?Wy zr&65*mhlsrl{kXsq*A>Vx+lVlCIcp7#yP)z;*acj<)r?=C&GuvKe5dj@2jSt@*r0^ z-cU!lh_tv!{pE6+s)@ESRgQ8Vk)xc89OYbAL1Ara5jftoI3BM#Y&Zb5Ph~x+c81C) zl6^?42HU#YwYDv)Lr)rIqm+mZAW~U3NjDDUI9%qI%&V{7mT-I>ky!%6G5j@T z#E=R|r0|#OER@-9elMk=m{IIBO!Qu9gRJyAX`cXRCWM!XLHDaH4J2|+SVMv^EXzv- zw|K3lWzC8pM4j{VtK9hAGkbKiSfWPTL%zZj3tP|=5neT22)_E z(%M!t1ZWP>07(O3BPev9T<9qUFLZPVz=$bV=j_UnqAHGz`Xi2v1Qw0p{g#^1R10KW zsun2keDwVoM;^c7qU?g@rDh)OoXiXVS}hl3o5kc}XMe^FH#sxh?98w!8f!dJC-c&@ zPUhvZUAa7)vYn)7aoIb$K$jaQ7wYo-3DdeP`;H0P+NSJ#CKu^)RxI_=u<=RMt8%rj zVt8FTNEzhIG3#6PqO_W=GQA=T0u7wa42r9HGAIdzsd|(&h2D|L2~S{ZR^8XM&erF( z2#^`6KM@t3iq$#TzoxJ510~~#rVK)0+6SpqCu;;c>;EHs$4-904iL^&^=X%8b6jdG4phquQYnP~YZTDAozz*(ISU(?M5&fC$|8J1-b#t$ z?299?daiV+s?DroRXQz6YtpvA$IN~FQ^jY=0*ZF0gxBOEEn7lH)djX}OPCle?!K&K z5}UGns5(rnLb>1+$J$p-ACeb@aEZ>o)wp4Id&~Yx&boZtY3^@2&HZ&d5-4bT7jRh0 zR;e#?6AJsBepYQiW7w)uwYrxC@&A*fzGHyFobM=)OxP(}n$T&4|Od&Qve zV_j@}qQpQ<&qKkxEMGUCTpZZfu)O&A4F-Z~E$PLms@28E5pAaMa+WS0cT;E~wrgdL z$YmZE*6nLY{DC8Wu&_DXT8O`B-Yl|5d>!8zfRJEXPc~U=EYaRckVbpUgb`UNG$9wI zQPR)2oJgSm6_(RYe_zgE?He!*y3G9PEGMaO%a^knSOwrkOXzL{nRS`dW=Q78NhZb_ z5NpL%DF^MkVMXq>OdCec`h3(f9hrcck+P1A3?k!TU3a9Di&;`#6w_&R5*lJKs-ukx zak#SWmut<*dWjsACsdAsk#pNZWJ$-ZB4$$~1h54dLnzm4p z&Ml5&{9<$Bjc%_l3En(tq6wz;A(F}zA?79@pZUslggnE2DXM%hqk!V{%N4nEMzYn% z2!9Y;DS7K6$@9o$98hX^r{A+BSC*VT0lN|Wt`tNGDH{cMi7z-`2r#{R7&kLeaiJ7l zbwr&zRK~^k!7_t4#nv`rndmDn^OocuXi~)#bR?7ZS$ zxrU@ozL8A2lgkB?k-hRlRr2eVYp=?l&*hSImkw;=Nau#LU5tS=(+DvCeGrz_?anYVswSH}f3Q8!{5e6k)Tl=hNa9`-A zwxn<<9-)cXUnLOv)bz;gY|FiNBlxU6bq))qc!=arhg77$a^O>dKteK9=ot7A%$I_= zQ;FDc-S7hni%=wd)1C#-vph?0mVko?L#C>w(aWi2CY0+u5h4Acs`qgu!jbF_W0NEr zgneEeH!ScGMhZ-;@fDHMe|c8AwPPo2T#m2EOrTX@tJOmi_?5vlI6(#z@mQ@Xi_I3; zIXM>?4vWG!QpBOdK3VcTP7GkX0;j1`jjQhYVb7ajG;jFW2mhr1a(-AReHKi3MYx3! z@!wuy{t9+E)1(@(niYddFJ};&lHTcCFl1ZO1%Y8YnO@$>qR!YWN@w^G7;An5c~NFa z$e7@6x-ge#X(EX(D3JDlm?4I5c#%5alGu;`POYL_ss^Fv(D{fkwJ;uBJJ-p?ccDE!KR?{b{d95wUZE9%-KNDvotXJk0P9>#{jdoQd%PHdk zd6`srT38YG+oI9)59fGDt5v*&-t_{N67Vi6$!uW$$pm|htS=1~jcUZs<1l7DqFp#k zhKaA?CX7!mH$yXcvovBm-G^1M5pxpMS&Vp=qa#*3V#X#STQXwbaN=8yT++`d$X}OT zXQkP#A*RG?E4N7Ij*h0wZM!HjTP69(Wdv`*`>xA|GSkhqJOw8eR}%guCTkkz+h-}^BfoTSx#oK<|6O_*NK+?!_>k{Aq_2k$P2k^lKn=-wSoy^pexfSA zJxPw<^u497N%B(ZQ^h-#3MdjMhCaA~z3sAn7$ZJhYn9w4oU-5Lh|PFOZ~g>FBT4S&GxNl zh+xonX^^l_1_?{O$z>l74;ObSqkIPnoHKp`seyIdkTnz7eBam+*(C=jQ<797EQUYy zZxGteDD3{8@cJd_CHN%?7cB%%Y-q)y4cj-sj@XoLNJ z=UqD^{vtPDu?<_noPJW$)@)nq=KE0kwW+3sgXlzm0%iEx61>e^{b4l{Q4j9r`aKU> zI$AeV>zwA&X>=nQzJ?1JhA0Qlxo!x$Y;w8wbkdilkp(dbqyy zmi@fBSoO0rB*C&x#YtF&Pudl9O_-jggSxT@%Z=JRb~4`W#%UOlL;aj!~WKDTXTapApw(;ubF(?>hYuH<%>-D%s?M~M|I-3GH_iPADXj%-XV;_6YBcxVFE z7>fJS)8Y5oATlfnW+8QRaak((`#)1eRL))2EZdEnH&zi?fN5CLK2yW4ADdwN*^l*$ zS9J)^k;#~gKP(3TpE{KY#`6g*NT^w+hl)?9<271vmK-vr;RF(5{R?!91DNueyAOz8rfNyj%O=w``T4v$R#ue`WgBzuCDCmv0dnZ2 zNmYJL$sZWkUr}|UgOkktzG;#q8Gm#BP70clUW3y|VuM365%Q;IX85i9_tdYXr~X}9 z&7WGISD4MG)@Rj>E-5Z7E^K|^Ab{l5KhBa=|77}y9g^?@>I=>2ABrJy@Z+grGCuVk z2~Y7)rhoDkoYBuZ^<(L&Lm5^F00(C1_@ZJsb56k;Il z!Co=(AR1#fWssODV*Qv5|MPC#g zv1I5*latKHyNBZr|Id(cgHp|e=p)<#cJM}Q(U~Lkrz#6g+{9XoaaCu9s7mZy!aQ;Y zYEMK}gBnyXubQw7KSmt%_ z(Bki-CEsV__f*_~q9Wo3umc@es1tk`Kt}s&*g6TV0T%W~1oEcBlTS!J-_FEzsPzwA zoxgPaE4?gVUiPC?5w#UIQsMZv)Te?$s|+_P#GF}f_6=_US6V!Y)zv|rHoRWaBe7Y(i+9jvoM#?0glIQ-C#S0RRqSCS`aEhsLk z^n`Lq3_!kLKz`UkrYMsZ&)nm%H|q)#>cIe`6A9p(@4V~k{0FdyjM|=#BhJinpiMv|Qfe&y`no|nT&mA? zG?cUQ32R$3FDyO??`$*_+rcbP@o7%LQ>>Uo7cYU~>IcC3pL`yK7Saxa0J-Er@?8

4QiaRfFV8HeiB6ov;F+w%K_M~E5$2*C zVJ@pc{}9~OCLI;?1^q#(M=+33$`@(h>{VB#P|K{)!o}bsYs^lF`ebGS&_}Ey3oMrk z1g2KS13>Zj$YKr#wx`}VMdE~s5((jzU}k52x+mP2?(maYJgz}TajZu=2k_(=-B)EF zMt!T_^GE;Ss_Z16!no{72|K=TYd4QzPndxX`zv;#AO`!}6uwwa5}bboIljx_k!|n7 z1S>>ymn>Z8Q+0zqI4YZ<2u4X9bXMQ<6AZ0W@x}qi2)z2n^3*|c?n06zLpcec8o)NW zZ-@_pHc(%zl`n&N9VhfP2@_%!CU?VN8)9??IuIkZdW1D$a?+nX*%0<(q#0%xv|Tf~ zmd>tB+s#&)fu|jWO$Uj$TlEaIXQYEhs(RCzESv3TcuL0JAmjx}RE{*)kQ&tFJNa+{ zqay2JNt!vZ{FK(K9|^V#;?5%LvP3y>jJr0PV1u&4a=`Z>Acz2&N$C?+7eSW`(KeVA z<`BRP#tnQoqLE^}O+|(1F=QRKq92lN>-uX>Q3=c^{J>yBn4WEZ37`!*J%)yHA+Qy$ zNl2}#f9}fz;yYI*DjxL4FAth(vz#J!1sabXeU0(3(aJ2!=1`1xxZ_@l^tozfu) z%eUaY5`s}+`AS~~!w3P-2@19p18{m_1HS|2#94c$3V;&kgl#!tB*t4T z2Ozrolx}){tUrPu$}3f-e-u6*6#Z;}dHVdu#%X1B7Eo$gJelLhjL@ZpO%|Wj1{J>^5Ds1k%YZ>8<(9Cu8nUlcHMfa^k(nMnN6IKJ z#eX}Dyjd&Z@vs52hY=^;^&$r?m|gV(7-ITIjWLTrc+ ztu>7Bs!UtZw+Ff#d#bOKl&`ir8k4mSCIfRrMc&z_dBAa$4;LHV+--F0IW)StX>@DT zXxVLa<2f{1HjQo!jc!gtaUbU4Md;mS>MLclbzj!mg%Az#ElfERu{sugc=sSn?+~+M z*?ZgLuWMV(7X3~jU*pG%lC2jl z9Exr$Ha%sxu;g=DYJ1Pi{^hWY?D8ymUDewL+ki!HgP6IzW}A4*mSm%Ys??~Fsauj~ zAzpDGeS4B5*L@$E1_UQ%^=5TKqC*W6)h`LZpqPeVG7<*sP4(9J+xjv&V2M-eAI$3X zUxQ|rakI+q+fEX7(&-*krRko!Kufy^r`0bZDr}G?eM&toM=YOo2|@9+vwvFMpP}t` z0y^@!J2iBnW@_28slmnTBWy!Nz+_4!%UMnVf_65T?C#8UcJ!xdpWea z3_4I=LVrnTsz7C(^_%_&-({`zU!u&Pa%im}vGqE@<1&w~z`!HKt3mVX$Oka^E)(aY z7s9at`G9xi3Tzs&5&3d0nzzr?yC16ib`t7d=CocNp9}n6v>Nz@uAe6S90=zGKOex; zgI_>`r-I+FWm*2pd@26922gcTBHS9OZZzA?cY|Gh!#+J^*azOkho0wnBk1ugF+U`? zAq?xb1pC4(a+pNy3%7FBnWh&FpP#Lj25~yr*9-vc3$IT301SF;Q{8hK>{BD?r7ix2 z*R3da=$Qw?_#@)!t?~G*0jC4R&Iq_L<);a_0RD3UoDblf0oPfw(*f?ihHWgC|(AxHs3yQgW|R559%(sUa- z({?ks$1{*Bx>a2!2881%wx|Z4ozTQ zxHb6c7V!S-Nz99nl>MKc1l~`c4)ade*CggyGp7e$Xbj8?Lx{lp$<1M2J(xk9LRh#k zg;|()7Qp+d%>eJG&JXZnGwlg%7I@*^a|Yh5zNazoL%of`W-SM`G8NE_ByS?Da#8*X z7v-OD(P4pHHetnT6eQxEx+q9ut0{>mnb#4RHcWM^fAX80wn<`U^`WQ8qETkpP94i* zDQytlCc8e$&C-xN#h<28Zgw*`#%v2uB=Y3dSbS<_zU-lyB6h>c(?jpV223S(gh$hx z6vcy*DrSXzM>ROl{6Jr0Br@yBIAv*e4hen$E@mk0S7utU>2;bk6CVrh`Ma?LiI1iQ zH?9EeDxXSqE*_5YDPvu?dg|!_lfVBvd^jCULX@OI*`X3VFEv!mO&OpPoFu3>-z%up zQA7-8HKti_9xA30e=?OmoVbS|tetYNJuBvWaSrS7>k1d_Ods6RN{5jS@1_H75JLoz zQ)mIIYJ->sVFeQ~-*j#Z7oFR}Md!9~**(H;yQw`?r^Co@(0}sKQ{UM0jzhourI)|D z@J=fpOhVvNx%?hJeH{@#s>i5Xez(A27-IF9^Yw`Gd2$?I&rKZ_meD|Rfv5({LrqkpNdK;Un%2|`k z@$;x$4;5JGvKhbE=ksyNQ$wS@uzR4=OTFiyl?XWZu2-j1e7_qlLQI}^jTqt@={Fb;)@vegf_ z5*9keUv7;=u}N6y*{;IGPMI2+AoWM5dCeD}P3;C~jUy5RaP&^t?S(4Ce1NS=MsW`y z0u()#OLIPv-YAoswZ(o=l8z3!<3K&BA9>X$=ZNDX`yA|dw6wdbS0`2>u$q0AnHV~e z3sF7xjXkmvA+M^@TvUN0k31Bg;ezf}3My*&%`maZU!RDAYgl?uJ`Eu#Uplg*oKr}T zS=%u+Xaq1s%W?MdB-pHsiTN2IRz7MMkKh)VDo^tD^Xg(E^3=%;mrXF|xQG~|KttK2 zIKxMF$xhG06lJVH;t~fFu&fZPiAtIpra75p1D%UbCQ7{FKmsUS zpsRYvjuedwYu9!22zx9LpR+3NC zX@2{A=TN1`B7Nj+1#UBImFZ9qe$$~ITy%UjnW_i8tj|F>5;yB&JyxaXW>x9A3Llb{ z=dofvo7!Eq=nEn}OOQXD%0)%9_a?;?%Mo9rrMLS0*L7M5+_?JW*RPuyVVhLXeEmA@ zgKtB1620KZA%Nh!b!w-me2{#>O0cg0b<9%~e(SY#Na zfi1<0+?X;(>ji4yKuakcLmRz_0ZR^V=RP= zLGed<_43#BRZ+AzS;!Y10VP3-TkB=YQMCX+EqzsFnelLL$qK zaXQLb)$W)`@mrMjTWTHoV$}jY4RSgoTovm)3tWUg=1wakT*!nxADRd`;hAAbGMN*u zM2`AZh)+J<38{-sH*l1?n^sP^qQTUia>BDJzg6QG0{cJix3j|Yy-C(&h4ZbI70$Oa zW`)yFncv4y+0dU#XQhSn!zWWRYBg}r3$IefM0ETmx>wGT-(sIg3`YXAATZQ=Z95a) zgbx{??XYGwF}g5kF1+izfYfRbNeg-5F;yc>@fwy4ee1Y$a*Tw3Gb_iLmaO$y#|HOy z*p6UP}Ndp+eLDwhl`F&sx3IYmmCPj2Ft5}iOqPsiaEh#>4#o3Dqv2E>LWEETWS zDA{7R>qRoqFDAz+lqWBo{y3M;GQ;s6aDuspEUI^|LskaWriUCd*P9^=SlXOM<-%U` zn8cmPLY-Jxd!lC1yoE4u2qcgJigl2hZ|QQL8oOo<(Vi+)qR|c))^-Cgwa-Q#yNs;v z$(TYS^!gBhNKql*)@o_nXhoYsGD@#pQJOh%Hxgt9S3zE2rr_7pkP#wnK2GJWsQh$+ z_C=OqzWt{HJ@G8&4LRnx^_{kYqf|E{-Fy3wC6;5ZYvMWP+hdM-3gk%V7A@1tvG&kt zLu|*=I?vqq1BvDhbW+9yOT1m=4g4cuO8dgb|8bwrct-c*1-WeF0D!sYo0A1o#(Zup|}!{9vT3^Xf)%Q}!%D5onRQQ(&L6o?hN0}4pv_PePw!WlhEKU@bbw7C}i zsS!>c&!hFm8-zz(T{8@%jNLQ=f0&1?^KBR6&0k?|vC!rggyel+xrL+6(1W}KGDs`| zVKx>Q32bB;Y#F`{9o=exEGx)uJro;Q9;4TIxq+dT8!)UANuSL#=qNO!Mn+DHjSnC> zaqCay;>nM;+&=Al6O@Jf3*OgN5_z4`MqZ zV0hvouLp;+UA&RugbMujL=;cG6kJ+8`t2~SP!BFV1RN4v4pyPc;b3Lfz=zz27Aosc zwCUB;((1)O4{e4LYRy9+3RLJp!p^->uZxxfH;r>^3vBU;P#mrL*B{OtY@tS)wHY6} z(719^J^B6%{GkhHw6xtHDqa{=+vCp~2HFLGePn2Mh`)+i>)pY==hMma zHRFj_g=XIK&o1+3UNz&PD?>BBTd$n)#H&LyPkcQL`PDNX+8rKx@ul$4?imm52@ied zL?A(;TsAKs;Kp#B8n*OPmu+ z%!BY9mxU-U4BZ50GM~&UM8|g2fl4P3FdYf!UYoW^)=3hT ztG%t)48iO*i_TS1QdlVOOGK2tMT3(yaH}V#o0$g&hG7QZCTF={U^W`*226fu%Soy! zr|$U4@DL0j&0ew|PHWn8n9&c|;BwVBhW7u-<<$@P@I2Fwo>Bh>tOF{vJPjgZaDNL3 zkMq0Qnh2Ea>iGI8DA_*muVIe+S}#OO_Jd(ifjR!*j7NSbv{O^EADZ#dYePGMlD&4u zBiDp>YD#v^jE8mldV3sviCqyd#M*LYAOG|bNSn72$0uujCdm1DyzS67y zX8k-OrdilpT=!&Rk7nTdhcYrh>t|`3=%3ibvnj|P^QUNpa_y5ne%jj!U4A;WLxPI+ zxwFmaKQqzgXPQUD;6LlXBViZcyd3)Q+3DCuGLmLDssK?bIHSkB;=bs025iOmt>e!LDqlCr6EfT#wo% zp(T0dD1E1Zu|TdYG^$R255cM;}Q4FX{_zDiX zB@a#GL2hF{4Z&$m90q~DvYYnZVA`MMufd*bhb74mNQ#wec3QX(@gi2UQz_AmQT_uT zqr5g-%8b&Tg_Z8ij#p;(SjQY!B{zX)D&GmR-GA>`Wjl*<%jqjee$TFQCqSz!cV=(HDdBsiDs7|7l1f!FuiS}M zcZmIo&>oc+Ei+XQ(s-~h%06O-N=d^Ov2cVFA?3bD#RX*LQq*w`AA%ngb-U-kdrOM@ zfn7?l)tow(v}Xlo*cl!Elfl@E7I|a?1=WlQ(#?3m=tL|n1eRcGtqT`%{@lI9aEp>m zK2eu0lE_P*swD?%4wNne523Jnhu<)xI{swZ%n)KZK#0k?iCt>(F=!olvfJg1;so>c*ZF-vA}! zA&Y(^4oJyeUEaqaY#F+XKI!p-8lUG!hR#RzhaTcT@;%&YZkT$ZR&XiV!_3*vxv^2Y z+GA4%M37lDAu745Z%wW%#R|ip1|#gC8I`u9P@S!S4d$>y#bWC`#HbaFCh`^rBdTl9 z&m14&Lb7D@n~&(;7s}L8vDyw!#Yo zuO}eV$@G!8#h3TZ%dF6b|YH3aUHnTe&8~8x#_ZHlm6xR{A$gpGI}w4IQD~~n-t+kIpD%B$7I6BAQG80M?T9>F zbmTOb^BXaW6XYlA_=$<|3{Zs~v|yG5>)c45#}q=c%Z?5{scVU04CuO=G+^c@cR6K|-ulNq~|YP@MazoSfZCTZ;5jVRZHlJcGS%p~&dn5-wE6R}}!a5m;3YsN+?wR$Up;jwK?(Nv(nau|uJjK<4pXxh~q^eI3NuTOTpEQ40NlFt3;3G67u)RRico zab88N8UUWrhv;J2(`Fs4kNP4o#Kas!x?_a7XS*jXJ|Ah(_7_9e?oN@zG<4h$I$&t9P*5!qfI_c#`?A^F3Ryzvud%H{TTj!5uEK^;CIeVg*_~u%v{(YFn@owMl@S z0vh3wiM*c0m2pq%`JGTdkn1fVE#FoQ$5bOi%Rs8NEdnpyDvmmd9UWnZL};*sISV^F zZR}td?0{p3z`!GTKOH-eV}%{_p%0aykY|$aB6b80&DmEI*fIat*zrBYj=Fd%IL(6J zG(iqb-pB$u&|0Hz-HL4Olz=Y;bu@IKA66O-S1Zld_T}}JRxnvy=@3fhbf6C%FaaG^ z#$SOB5RfoU2iQlaq5~=zXmo(EPI)TPT~0vIuMz)*%#HW2oO9GQ3Xe`SAs#?c*G8mF zw!n0}*{JImhUwgNU5Hj;ABmeIsG$YC=ps7}mzk&UOeS}1!WLuUedr9YlL0S}>RG;+ zf*5J_twj0ES@mhiWWry`OI&W#=?Guq2Y&iea)eVDC6_0ntqI5D!9~^q>;2X7`+)DK zllA*mymMH+;P1cS?|;kR|CYUftAtQ*0gJ+hHeT>HJTF0;BmOH%yEr<=r-6TgAq*t9 zSlFZl0hCUWd2T0l$qode%Uv_zNs@_PN+X?tt~;#VPwpU-Z=Okg+tdk+=o(WS}CbW7P}W<(m>^=ku*Le9>GM>a%Y;j z^>UiYPRy)y)x-p(Y>md7X=+}5o964nG#$mJrzt?&>ZdmYyw)5iXDHVZa}4plT5k{f zuqp9dzyX3^O-c*#y&Ko{RMYcK0+6(RQisAwkSEuV8WkKcJyzJ;flFerArPAo4JYDYkE~Uk zQ*WL+Od3y?*^`IL_dc|reTswzF%f2(O0JMG$cm^i`vfb8c`Mn;IPT`kId0k1_>0gR z+V6kYb#ocQX_IWCE#9&Xs$}@@``O_5hKz!PY`4Tt4j4es%+5%7Bd5q;o&uU@=Ad)VEY zbHVaBU;O9@Wz8`GmrUPVXJzNBPv}(!Gt=t0O55fgQH~fhHibV`-SFXfcoI=hqMJT732R(0RO-bpnHBVAH3()j=h0pB z#T}Q#*e-94pFEapLB)QhP}#u4P6c)3C6sj5w~b-B9|aP?}MDCl}PqlFRab72}lEWt9s@EK-(KUb$2z%LDOW+I5D4kOHj)B8a7vf4&;7%v*P!ifgU#v13Il|(GcYTAk-VHmf{ccY0 z`X?^3B1^+yX)fz_lWw=0r3f9|-ZswnCLDx8u_!8WK!S6 zLqy@)Q?a30!wtznWj)ofw{5t!f7pi!5eZOZ=;_iROYDELCi)>5Ew?$2N&{kAedK+Y zR^NVquXt0W03kEhfDIh2lKnQxh@9ZW{1RlP1qGZaPn1Yg%pQ?2^(`+p8bG|aK(`f! zl2tD~VRSpIp3?{2`Gh`ThBezQ7wEXYLC2jUb}J`4xDlb`UEhUKY2v|WVvCQ378^>= zuikpV8ZQ!_LelG~|A{QCJd*Tql#4^p|5EXCmG)NT@XkciRhgdnoXq_x^vW-fs*I}mt$Cci<#DHJ^)QVtS)(EFw0X)K9n_6_6l!d=UHw+R5W_uf zYuKnZZ>(OML%u^S>S@-q=WCdh&FZWs`(dCA0zO#N@op7jSVhM}0IN4kmma)25FHO; ztF0cLjt8iF)GE{ggJvfl5o{Ey-fPw8zkFr&qvs(M!!&b*DAE2|Wp$swAm4I4d*_DJ zn4WH>dy1!ih{O`+- zvxF5+-!NB=PBH0nua_f`VC=E$96jh0A|GAyY1WxZ7ryezbaWwY z;1I-}AiHjPq5i$HIGCFsE-WrBCux@JKb{=h51nqWA8+bP3hagDc7En$CLpP@i{w)< zws}TpJ{|fOiR>xPUT1YOCl2i7H_X)5C!?@vG@5k772NRQYI8`^o9VK6y8MeA69p zbkXkdwnORbEfHp`ec+{SqpectwwBvo4>t3SU=jHih?8l@VMQT5HRAi^H!@gQ5Y%-_U;CKOB}X0VXik(s3Z`BOu&=l3!q}7E%CWK^&HQ?*&glbnQX*vft4$E2`$0W zIx+MkDJ_&+h*cS4n2>4-_S?q68OO3;Aa8vRKGKGM^0*Hng#08B1eQZVD|i*x#|!KL z!5T@1B!7u5X5^t=w1U?X?=a4|@5*sh85WBNfn`t^Y_)|BSe-kTGlUt$aFatW0}?pm z)1>WoGPRU{i;b%wZ<;$|8P z$_$>A+&kk%HDbb~Ffil(+8BS8BwxA;KPXiW|dj_9VF874|Ez z%~l80+dSMm8{qDuk;6UcaR&E@76x|(6d2sQ26s~+H^SZJrwI2TJ8gu!-frM-`AM_j zt{=oiFn$@_H*RtlzOWUt$wR_VT`wkrrc3yauje#QDkIcV2bp1mhAyo+ID(vp5RdVy zjfS(pfthIv4PAw-9)M6Yf9+QBRSk70{Y^5FNQj2$S z*}9*Y1n8o)W2y^DJI6s*e%d2Z|NFU(%5tmjHKI>4GT{o*M}iQG zsY@+mQF38g*Pc9BG_EbYT4wa*bz?<8@olG=S%(dlQZvBQJ<%nxtfkdo%KvZSPy8$o zFQ_VNg#AJxi%w$_9qj@7nc5_iDW9%Kn6XRnAb=J3PQGjw{`Q0RCXKgS6TzU<5HW=s z4fSh}BlGA!#*ukbcCqTfGE8|>+!HR9d}Z;tB5xW1eEO?4{fe-!?EfDi*kvHN#y~JZ zbbS{Ao`W?=YDrB?Uv{+k!Sdn9BIU(zv&_Ef>k@G+wuN$lObvH6=wG8v33pDrz?zN- zXX6kzh!uPsd$R5>Oe<%JZG=0Q8silC|e{(+eDOy zznPINZ==B0?L?C(6n-)5qHut1efkH2saMM!OiEf>c*og7RxL>WP|T!0ndHHVG$J^; z%BfD$A`8CLp9oWJ`Z9tR^F}Ga%>-{aU|GNo7#)C{x=|Gg1_0P+RwY8iOsW&Nha3jJ z;Ru77hmB%Il;L0#%B+PTq-A0nK|KQ@g&nO?$xQ?{IZmkbeQn5LGEl!p;kSh`RxMr0(YGcigX%%`XQK@$oL4L8L7zfMh={C{5d5J!`$Zf`2Q6+3qeo~63&(taSMLTT zDoj{Ch$U%BYEi?^s@1VE|L6l~tqC7Yoz+oP_5q)^Il9jN?3TFbb`&`7t4C8Enr;0< z*@UZ|yE!gIA22)cLAAm7Y}iTnc+QVk39z?N=IjW1B`AGAI&JX}Q%-EN@5Hbnb4dgt z(B&u+hRB6`{t}tDspwX9irr%l;r&0%2b5G#e<6JM<`)iBxr{?6vyGKwTe5{@bz}=u z2~j#+w%{V~8W+54XWH#Olbj*!gmI;1cDEaTZbL+9V*>?Xs}I^&{BXIwTx9~Ps23YsLhpEZPS@VL-(txXCn-Z1f|gg+B^Gm@f+KcBD?+XW0VFc)IV>Z>Ht){Kj8j}k z&Y9MB&dyQ9N}!S8p}_w_Jm+{>VVTsK2A>JA>?x06fNvk|j~+SHe5}}$@!(d~dQ)i3 z@~sGe)H*5`cM!T>E*#ZKS*u4Zh8iciTMDL*i&DuzV#FD7jzHJReOg3>_m86TFCMKA zjKZ>@-Yh(eZU{5O>RB#ORzmHn^3y;-(4Z{O;1+|IqTHMWIiPkLWqK zp)bJ>)D+Qkj7*JDcmxK^DVMgM<6&{Ni?tXA`85M8{^t_Z&FJH<9WptH`WlnZ2b23u61Ar_U zJ~BgOnR%XA5Lu*lZccJ(ys{j(l;e4m2_EJrLju098+XWk$KAtF^-}!6SiE6#^>kuK z(C4POmAUNAsN&eu=^Y88_Iw#zNvr4oS+}~Z`WN4!=wq>W1XG|jcPRzQLS}E1p!4cq z{c>JhA2FbI&IIv-@qPF=@R1h#XeG!PxSTTQQ7my%eee$sRGD~dK!LnI-skKE3GG%m zd|VMb3v2ifQgZN`vjixzJ#5>W|We^=N`pOBwvjl&2fPPIO%iwWf zV>DfE+!zcwu}+_r6|N*rC>f4Ut5J}Fx?ERgMi{FYg z0hcreE&~>yOKmj^o=I~_D$<1CHX&`*rZlZBoX0}&kf$2^wR7XF`u&f7;iD<}GRX2k z|LzEGcUGaZ<#Cx&VRCTE--Fp0AJYYpi9Q&M10o#XUa~uDyNqkUci=#f?OJHqRTz%4vI&F+FgM3V5#`nsvdys8S z2w}fV(%^Co+1%~4d`$DTL&v2-u&x{l#9x!u8MC5QOPF8ho%q@FmF}VALmgX%o<-(x z^At6B?WwhL$Wv4nq^aDRTJXma{PBpGuX?^N^=O?jG(5}_#?&1oRSn?^BKih_5His=)(5ESQ?L_0CjD!ZkFzI@fLlbY z!~v)3xh|iQ1oG1Ru^ds)DX%DTTqV_GX|V@#U1kTeFTzgTj`XSe(78=W51;41CAz{F2qHMguyPtvr_4$g;pshOM4>3y2BS;-!*KRr}` zI>9F^L`)JRMdoS_lo=1A9D&G_QK@$v1N!FQ85;i(4SI$=ViW24#E|E43v*!xa<(yS zP)e(!1=yWEn~u~i3-YWU<|&X%LESW=55JcxFjcMaQ7=4KzwlgmVYSR(N%H4YG5MJ^ z=6O9hcx9O5wd2W`PW|Ld@yRuN@ znj(85DAz&dMtBLKqAirA;_U>=HL>H00YQ;aX>;|9K&^f~1cPTUi4hpB9rRKbT*c>f zqA?^8Q;1=2Bzo>p`A>N|nD&>HjWi-(;0nvQA;g(QQ?N&F6bR@a&ywpE(MjW}vAG!!{$nN~z56;Bf$;0RLt7?Bwy z3OhZgAVnxsj40T#_&g*mNd765>VqW}P87I8a5wBUAesY~N;PxrI= zjiTqiX0f48T5K*-LAflru&JT~d{fvvm!OR3R1D}_=`oPIMejU`g^SdHGkD>G7y%zV zQLc}N;)8br<0#co1_WZAT%B@KQI)MP6Vxx<<;AWy+{XH0h zpY)`t^iKJdIK}lI74mo!$j+r4?09@UIE;l=C=!QH?P!K)gCfj}o+by?qq8s?D&QlT z_-L%eBIBVNeOFy&pu5IZ<2lkFq=L|+Jc#Y=w=oItdUkRzU`19&yyZq8VHMGJ7g#>i z(%l%WglUrFO>B2n+v_!uW>Ik{!j>*uNWF>pSqzalJ--lvBt0vR0OPcd&vABq1aZy=3E)v?fs4N~AIlQ>EkM@z_&(8GO1dEHYy`~;U zON=;7LZ1@#$Mc7StE;Vu_fW($EF|MCQmN$E=1#rawmdF>&QV5&gXidYiE(pUi5KPy zv?qs-?M)y?C9Wv7%ngV+x1^U#tR@78(h3rfjS5&Nf{Qo zlumpLBNwq6;M76=7BPXlF<{hKS%u7s&-Q|XFgUnUN2%8YARnay)X-vXxFLy4`xigm zI7j=%cg6!&e(VIUX6ENUzW%MF1tVa1E12#AMI89)WyO8rk)kSt99N`HLJ-GFWssaO z;kcqPa>%d|I7crVw^b(+He#F+#fC%u$2KpQ8@E;5_EJxYg0yW59ObBhMJgU$Fp!fG z0P|g7@`8cEzNH@(Iq$Se4oHQCt1Y%X2;nfJEj1|9SXbua9@O_?O4J%ci-j@ux(OGM;C$6sytrywGaRE~g;;cqshqB6IMX%{ z+3{>R7U#kW2{Gp6SWLqTVWH6a5W}GLQ9em)eQHY+(p+nOj5WApu@7Qj4M5#$vE*5bEH+M-kC~$0BkApGb{7JBglQLA2cF%$USX*y~~@Cf~1c zk?hCC3R1ED^0(pi7Ed9deO9GXqCTfGBs&oQ;qTAzy|t_%2-wL8+%=J37um2)>Neq9 zl?Tqid5m|nhS63mG0az0&K-D2*h_q(_4*7M+ZmZ{iLkdV)`%C-{;(AXv8AQ6=~-sJ z07Ft@hC1BA*}US7p+mWgxR0UL&*|j_3R3~=V4jv|iF;&n8y^A1E~w80b8AvvO=Z3B|F*v3TkjwdPWc}qm6wV1y6(4=bL zC2JA>c10$k6>+5TTXbU9;!G$C*!30o! z``tu(+f%h2fI-BkLM|zOtT)n5V-0AY2+8Bsm%noP`waLH^uo=f1xnvO%X_Py{hA$7h?>(VIqZKA$148I6|J3Y zWI->qPoJwk=4Z;02U9Cw8S)OrZl17Tq=g~Ta=2XCeH-G2*UiPQYKH~kA1u4n%~gzu zMUSImn6V=n+b2B_Sx^h3ZoWp#GH-~>iGK>V-FR>eKfpZ5FF>u4aFZ!zNP^qcOT2PK z#s>Pufx)yvROz7ceIQZ4FL?pKXjTmrY!J{flAW~pGtk^|5vs#X`gm}q9dff}#i~C0 zXPlu~{BF&q^f1x@eqK{0{b5I72vqg=U)o;$Y8F`*5Bmd-y8x&7duS99dGWC3jmTep z`}YZ5DVop&LXC9-IvXHT+0@9oTz55PXSzBNU1XMzDwx4#q24sXD8~F+XMQ(iwqNZF z7L@OHQ?Mpd$>QEncxN*FfN~$KJ}gHmXkFz>=YvW$FQz#N;kUKi78yYGBT$GZ29}Kp zn~*I6R1yDT?~!H5NwOdX7+`oJlLVTHi(on5ssu*S86^UUu~x4iYK~XB*qca^heZel zjU{=zG@=GUO(C;OmG(20l}y6aEs1F`ACgQ>^0TgWn|9@6ShzkBiI6au-iTRJ#)rN| zzUxoVMBPjSK(PRaSf|05=1jB5C5wTPY63rnUA!-cn>w^O1XB#HL%nXQF~7_hx<<`B zHEMB1a8CfUfmy>NNedc?Zd1^wt=iVFZkxQK~&7xtgLui2D-vr3X+6puIXKVe+<35sc>z!;^%O zsQn~@(|WTe%z+7c5jZUX#v&=S{iTkXgybv3)7}?cKydWY8Sqv3XVz*lT8Nt-H)w{1 zf+(nE8>Ee|#xVxLjP#heqp=xZsCtcnY-^3C*P~gf_UhG8wfO*vim3p&9Tuq|NZ8VB zY;4x5B#PleU^vTF(X`HHRX|Il2?h}DgR@u_Mi*Db&?ObT8NiK!DS?~`kttX)HTU80 zi>DXfw39|=|BwNQZ!+9-ku8_YCPJozIS4N8#(B`tQ8@S_cV{0=E6SHjcGf@R%o)T; zNto;(ie|(RqG%{eix20Kmq#s$ZD%wP5@K|2j5v%h+|7CHK@+ceOW=X_{{~8^bGxR2 z;Fu?ZQnn0Qqh~QSgs;P(k^6C=Y{durQEZDk*sR{Org!IuB8BSvf8HMXVe`8BPO*T+ z(uH&`TYfC-;ZSHNVrO+N5mmu>{{K-Tb}a)Mm(8LFh!LZ)H%=g^m$83gag&IRT5wKY z186^_OZ;R~5FGvwKkO%G{{nCpVT`P>eR8%ca*YU75MB}f>gF{r;@ezQ=!%O9U2)k7 zr{Yp#H{v4m8W)+@xX8T5Wgq?nE~=<7r<1c+^z9(k=eewLG&DDF7+tJyIysxmZKG|v z+{u}rTs9$e7J@C4A$yAo2y!%dYM!*yp!;;oh06+g~6 z2!z4eqFi>2JsNn=J1U-_}b&NJ0DN$wgi zsm+yeqAANpO)f7kxpK@dfN}zR!;`z|E=L;g}LugpWG>gTy@h(wFj}HtJ)ZH@0CokR+iYG!;6r3Rtb9O6qPVxX?$ebxg_N6Y~w?fA`A9W&8+rA z+1;yiO7cZI6hp$)$#d*E8A~xuliMLxPEcZUAR`qYcsj9GltUsEWP-J}*B&hZlOqMl zxwf~Ujx5u`PAXyG%bOhdavZpq24&2f95_RqF>u&)J#gDQY+U1c)j=Zt<{EaV^qR1@ z*gSVY+TdR*(Q58}vETFI=ogrUo}?*mcL8gV?q}C>gd>cXxC563S2Q;_nX0#eE&ZHm`3+xV!p< zmLQ~Z?W<=So0Se{53uwgClt-jZ$M+SA~iCeCgo6)&+1U)H~@~=IH)osA_El{zX~@G zauWvuKym`q*EHA`I#7io=x|H3q<L@D~0A_yx4f8 zO2#I;xLnyt)!Q^3I|ca1Q6)5Tx+7J5JI_8+1#OmA#8EhJ+9vREo6Rha((aqp@?%xR z!m_|kkYKA)a_qW}Rl(@u$EtK@9IK)+A^3u(c)&8CQRX2TY4TW=B8W^nZE!9MO!y4u zT#f{&v?PTZiMSTdEi7LP)T!_y^B-WEI#y*~1RDW-jC4)|#GlzZiUJVFb8qV%hxWI~(nk!WCTD-#M^t9$`;L~rnDv}p&bJps!~_+fCe9at0rpY=p@(2D3>(>0L5hj}a> zGSd^WLkbWq9S8y+JWl|!BjdD)5)J5qD}4p(1vD3&=yjO8mjtG9BZ>z>3sWAD+e|Jn z!;bCczze**AhwGwNfJu~AMQAJ3&Y5Uy zRRw>vleJQ2SEOVTW6iX%Ivn&$`tZY3b(gm74u!LkZ*0dJ=LrMa6*7)^X}FqP;ZdtR zu%egp!=tuT>jP#%c8|6UOC9TMvaH`WXOK?Zq5}6t?%Rh;TJ;`Fm#28EYr15f&(%f3 z7A4BSLT$X$HdXHL$p-RV@d<5gtmq3_5c#qIM7eN6X;=fV+hd|H{5VwZ>D7y{SY9M= zB3pW)T%L2xsKPikFb zN|Bh-Hl(LUs4=DpH47);n?o&rYoKO#x*Nbn?KtUX_l-Fz6DE8W5}-*?r6j1-Bq-S# z8VPCu@K(w}kf0O>fo7cpT@}7Y8_}_J#By*f9bY+?P7!)%mZ35Yg3}Flu!zbUfocjn za3~>{(4%w-C}xUoj{t z%)$jKjbIQ2Dn?S3HXaF7#457|O+9BgL(FPm40YrP%edW=Abog2sPY0CQK+)0oBL}D z5o)HIP&Mzgh#0`RQ5`8JOHW!RVyz)H)7YMbsuj4xY@w7PSvyF<*<(doiCeGm+(wyrsFi<)_*>6M)^p=&2` zYbH1EP<46Hx+MfQuLrA>Jv%4)0_9j1*HdIT>aqzZYK*vL3K7?hBc%G{;ylj4XjfxW;q^d(88j& zs5zYqZTn5!M*GccPl6cQ1C(Cf>LhQp1pXMYAlML8+d5t<2f{fn_fSujU$^UIN_T!M zT$#2O!pI|&U(}+eC$%OVt_Bwq!btH)7@4=7B1FHCHR*yeX2-#z!&*@Q)&%$dF^X3J zXz*{8(q+HgiaI3o#ny2@SU@tQ2_7~K#vo_E3v07-8LI;m(+MHL2BOGCdeh=lQ%{I6 zp1YByoTJDA9fjo&$j}!S^nE>S_1Mc`?qNusCUGx4CxHGXo#gymAGe_WwskN3N()f@q3wi?i3V-OmDf_OqvGs z;R`Z}E@&Fehc5&ZQDj{1reg7#W9zy0PVG@+7IEt%Q>$SMmS&+T{=ybFhX-}HK=4F zL2FLb3U`e-ISv~05^+Ia!tElR9S4nQ)lM#04N5K+Ur2zj;tS_IzHm-Uv5#+7V{)!s z(MjlYIs*M57mh$*<8twV>;^7&68fCj=xuyM^|&(*GMt3|e_farRQLwUr*cY3H6F2T zq~ri5=!oo3a!O$!5k*A2*@LiXHN5MbX}G!cGfSOb9YJyBjl#a{r?2qB0bEUdTZ4CU zxxveP-|S_+Z^K2!%{w82TsGl`ny)eA1QbaJv>-KD$vHx19#1`hDO=M&*Am5IKV0S6)dq|lu%m39lAtZe3;|x`FcIa)hbNDvEQItjLX1qZ3i{zXK zKo0=V2b2yywoq9pdgpetLHT?Lj42Z*cNjM%8KxXeD89mRWmx!6@IQjlDZ-;*XV=2< z(%F1cORNvkf^!O|3bB(c2o~sD&>0f@IJm{Qb4N6kd?6J?YHrMhdZ>te^nem-nzLe= z;rP9ypxP1@rg9D!%`spypUf&IEWsG~O02*6vMEEwD$yI;9$);i@uJ8%xUD|9j8q5``!>r?iMfulOqyWv8gF$#QVVaL*3Sp;hw!!o-Ujc-oW<2K z&VaW9pyMsOJ6glGhD<{N(l2Ta@AY7S#r&MpoRQ)Eu)7ikxj5bf^v5^$p4;G-%D8VuQ{J^vcGu z?Mc(NJyDZT580mVd~HuQuHc==5#o`seP`PfPnmtO?Mdd0eX;FH?1z1s+@5F)VS7p& z8fsKw521p>uqma1S1lBpPcogza)JT89vk|+_! z@^xk3BW{peSdCW5)Sx<{

qNUNdVpO_+*K&A?)MR6ZTk^)ElF&R3moSL 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%0A-UMXea7{i12!m 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≦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%0AO~1RIHSx+AYkK{0SQGb8 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]UdeG*fy4F2;BB?Cr1lnjev;Q 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

TL`SpoNdW=yy+E~ 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�H< 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℞t6x0hzn~Dn94xN8(CdR5KsenMMWyAKNK?x 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

U?#7MptJc$OV$m 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%0D*NfP~AOwz!rx=jb&1GZwj@_ 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�IViDG&MiO*$zjq*2$RG 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

yc6io6SKfso0Y|P%vpp%@4 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%0AvKPg;TmewTLIfTgaiPxDk#(v zv20mg9y?FsOm++NcazG%X)dl$%{I_nn=P(V5$-wacUs&=OuOlmpah#^SQx^Y`g*>I zL_>`x1gu5kl=_bYe;pRH71n$y-|~vH=D})-+(lO1|Sr`qpB{ z>&X=(Ka_6W0n3Q3CJI!LAQw@=Xa=gFs;>gc4grEz<{AN^YqE03<{Eei%nw;HbeiQI z@@CoQxg!bWCj;Tfwzvt4zQrBeV!3D(bJGA|V4JFI9cI?@H4=ydKC0e9O(|_O$jPbY zVXy;C4NDZKHjM!+wX2_MdH|nUG$F zg4;$j@1sSJMk$hIb|46zKAOVhAWDp?xRW3Rx+iKUQQaERx-BRGEn<_eZ9jAymKQv- zMV!|Hx5hBZ3uP!6S?de-@OPuubv~}^9MjgiZkG(TR%{<%*J`K0J4RFim6&o|*T9&4 zUFTR=mlL+v>&nX8R9Q5wYb&oN086Cu#>CPt2!|G`rPa^Av|1sA4lS-vy)O31ni7wO zpv5FArc~ooC*Ttsu_*N)>gF|s2%(XhLRsX9gj!!DjXfgC!4 zl!G7BSSJvN3VbAzBc z@M=YnSO%a5C(TsD>r5kVyG;t|F^QsKqdYRwx0o}6zid(%D72Hv;u;82wzd)_RuG4B zW#Qyr!>w&K+_<^p5OQc+Ai9r>1W+!RrVetUI__aEW|KlJGRfI&QrukDF|qA@yOg|k zzVlFaYaHF@-B9)K(sW8C?wzt(h^m{A!J0~J#IA5|hnR}k5)ur2A5f&1qJkB#SoJYoR2SUDAJ#!rC{6l0ZU4 zNgyG6BI4}(n}IlzrVL7_5yu$o*Bx=h>4QcJbV=NJ8F5}B#9;%4IN9Gs#QDu`);pa| zntry*b7aRhhO+LKpWH1!yJh*ID6#XLE!b>=n262h87$W=H`*j_v}x0rIJv}BY|tgA zCj{#1RZk^t&o$gS(U^w73bVLwFOpMVc0d~7KN+l$)n$&RZm>(;2dTp^YKA=OX6OXn zqqE#fP_QcF4%(%;I>q&^C5n}Xm)r=0>yDRj_XG-Ajl&;buO1I|xOo^qMKEJj54ZLw z*V0jTI*Q(s`j`jD1z|P2Uaof(s1i|aHQK0s)Hw^GnY9B8a^Zt=<|IxSS{kIl~mEW!M=+^Ig?3eSX zSctqYVf!SU2T1UJT8{%+MeYv$d;L?WApA2~-rh7EE0vICUh9vL4aEMEQ3{pRN?6f; z<}HV;CWk0;*yUVptqH$&^LV(adRYPLRZXg0=K?Ryxxhq&I6KaS%B25+ zzu&s(^xO}n|Hy=c+E4RPS_^UbauOEETsjzp%x|a*^?-Ge7nMtOs)xCPRHB%hDp8E@ zXwPU(mjfegy+8)0R4yt}%tfYDE;6O^$nnv|`gQ_~DwkU^rE<9q!z#bsKDtDgJ4To4 z<{MF3xV#C27?*pnw({G(qg>z4q@xRTy)PZ@()Ipy#7PW$vIo-9g?jA4bTrcU_opK~ zAX_rh1}_B&{~YGgP!SoR6mG513m0n9Yo*XP%KI=fE$LoQ)>B1f?BYqx16<&Mo`oE-OXk6Jq*6r4d(_Kbk`UN3{kDC}Xn+D7|8>wDpa_%0bgD?f zksLeOoL&p9 zL%G+w1zJ>9-touRtH+&&=wS#~pdQu3+5Y4sn1x8-&M(kxR0%*;c8fW;k=?>5a#7Pb z(sn+$QHBk0J?=)zXasr(tu7AtqH6NBPszHy7LU^v2Q9 zE7W86N%J9jbNI|;Gnl)DUL?9-r~#}Ms$AI+-K!Sct*j zFzvPu7)VD;vZdQ*!$2d>H#G#fC~7Jx9?QR$Nx;GWo_#haHUNks~(JosE^D`ZlC z|CFm72b|k>fwWwQnCupNHUoSk0P77XLk&UhR&)powpz+_bRDHwJQ$*#bt=ZlilC;^ zR|`;W5BG}nNpa(d)b#PuB}bCc8gP@A>5aU2$r0t>rf(mu)uA0};{S{ao?T~a+xfaN zXTbs%u%bSnF$<4w{B{bwtRKnVTCC@5GI8Z=`6b_p{%5bR`Rfp#B)=qIlTpha!Z~f^ z)Z#BxLf50QBXJH?xs27pw^6YH`Vx$)b*R75hcw@A0tAq|#)L640V*8kl~=Tp?w>V! zFRmbIP?Ydl1Ag{W4B}ZRBIdJ-Qn@)&I{ds-!(fxNwO_8xn#*jL_Y&aBjd5wdHvEer zG&Gpu$bG1HjFb+66MgZwECLm0k4R#yDbC(2g@Zaid%6$-sS7gs?0E^UZp=*kJ!AUF zdcT8;A#(D}_%dXBxl>$B4VIKqJflSj6Y)aijRgqB$Zaai0XGb`e^c6v`OcpY}~Oip5_lbG*Ep^67j_jUINiC zGJ*&hUJ(6asuTa4KmL(3UrO?I0RDag=gLqUo$SUgt|4!6!QcuLWY}9TgDxkNVU@f_ zz*SZ4*12w~fFm+`X93hDhgz1Z$l{#k0c-x6xLi-LTscoXs%3kEK}*u$1k-Bwy)3yT z4U|0XzT7L#0cd4#`q(ug9mibI8mgnc$Q zqP?Wk8(VLdWKh}R?38)>j?}TA69OtGI(JNCtQe>R%kc_WycD}Y1(_|BVy~;HdI~I- zc3W*G89>Y{uyfx*EL34{lCIy$3g&Gg=Q?Jly!ZM6LoZW~3OdRsBP|aj0*Y-?|4A`V zs1_@FyjS_=2>Cm^SG9xcgwP#LTH43|-*t*GOq1L)#Ok7E$mGr6t z`2CZ`POCRA0dN7Xid!+~&O?>A5|ENi)Q003AvOv8h@Tw`yLFSOgrOjRz=kNAx^1E(EBzRzj$=Vs@wGM4hO<0d<-7iZ9|3e#Z=O7l!a3UUs;5xm9TWtZ zLV0&`{{#G1D9g+x4|tGGuMG9uBkG3o?M>7b!irw4vo&x#_&?E873mZae;Dz|V00DD z&&c{2p&jSpRA}dA+fmP>2DI)Au}!qp)+%mXXyN^l->sNTK`*g(R)n)q!yPCJVnnFp zZcP%QC!L@Hup)fSdU6$w5ONoS#CB4fdx{_-q@xSyZQxY`rzG|9wj*8-!=`(2_l10@ ztq7&vId33r1-ggicgTW8FfZV0p!I&mQm}!^A+S&jk~5mdv*Oce~irfVBD_*QI@#BWx@CqE8|DWEN|jj;^GWZ6rmqQ7q32# z(FN%(UG7Miy)=R}J1H$Ppi0`L*iOnU8f{Dp%T34SzLT=to1)kQ%^RGG)w7XU5z0|` z7Qg23&xYlwde#@gm7WPs0eS(i{2w4jH302J;R1c@pE|~x$6+d{N^D^cbem&yGSGW` zmwA_Rrkp}mi4GAIi=e8v@{5PhEXES|6-#kUT}1!#nRr2anL5ohdYR9pdOQqR{119{ zHmk%l8B@7)8%v`~Z?U=E*1O~~c11jY_hf@Me+oj+si>Z`78V7Vl4=(gPfPL)yKh}W zoLyPiXVDUL`3AatuF<6ztZ#Jr3h$D_JE28t(k&hZY~u3bwUPk^3IMF1lEDCDNSPcn zv%FCgs}dwBG|tOQ+Y2~snO<3S;bWEzS6qB#@DJn>b9$r&3KQvR?GU7dS~9$`^;)|V zOvK9ehpq6E^;Acv53|gCOY8+`HlT+tZQA}B!mq6T1F`+%wEr{<6(PfG*?apaS$ksZ zahXz@_p^}=xKd%ZW`QX2JN%zLs=`FvgOxN$k#tD`bi$co6EiT)NxB?^* zUK_ai8dgxVi%5!6aA#y&UNoP8QBknHyyi?xPFh+znqLGvR8zz->APkj25YQ^%oZ1~ zU9Ro~h8$L0mFlm}FV52=zl?bOAnF{TXyWzd-i>KNChMqG8yE4c;cYKj&mi0=_Nw?w zy&_;bR(5As&`}^=XJ?yC5LnCeLIPlc-E+*mChne8emKoxCPL7)1f|3ER(i>Mh_?X? zXco%eSAtiwk1x@!4Si^B)93+Oqq=AWj99e30=!VPeq5ckCRQqp@DlZk0yK;WCF-jI zc#qMS(JMmFcIp*GblKk63bo9d`_RRp?^`=54{bSKb2RVxgRj*4vlz@ z$nBh!;^P-GF$*PA5w$I$Dz90E*QR$?(Q;OCAZ{1PWg&Vkz=$JJvTGxmAbf{blnobm zJeI0&58u;^h3czQM@_~tQkDsMq)ax>}>amCKd@FFjJ&(qlR0#aH@{?hGep(4L5vA%^&(d=lZ)XGpP zJKB@nGEs`(`1(<{OXTZeU0uc`D46n|`i`QTv6_$h=d=3!sDB1buFO87CmsY~1b&ii zA)lttM*#Br{}NbQ!*{O6GXN?OikwcwLE?`=G&yR@gNg9qM*xW3(TF%~I0T?-1R#3? zx)bNhd{qBfuy?j``%``!$)bYWB*Li(KVKyJLHPA{lRHB{8caFRu}~K$4$_YnXbdu( zEl}GY46mXPR@>wJyaDl9b2Nn02I|*@KvGdALac>fm4YG+bov)yBA!0b9{#zEb>Z}Z z02Yx!Idwl?;kq9+AleSsxhfJ1xl|LQ6M@P*J*w4cKNUbSB(GJc0_fq8kkc!zv_CfK zP}4s;Mxsrcg&$vHc$w}HYbif%1SPNOuO&u;79514{#DJVIHAZ!y}-ZBB8)5)_m2;w zhSoAXU!<2pEoBLTkjPMd(qdAPanjcpI-r<vyBm>q(>~Ie~~=I0+8CK#4aNIhjRn8^x9{Z{wyFNsidw& z;!?g%xM7JwIYI!EiMgQ+N(j|*$xqg}-G=9zgxY2W!Twr@Yy~;V{V{qQ{U<1c=qJra zTp~PPG3{`sfp|7R@bNHg_;7$`pd-Ylm^z5_N~7zK;_uk0qz?9Lbx<2Qwd~IPYow@- zIxwvGM7>)5Tt>;ptlhq}QrVZnsRlAHG2l-&-efPdylx%R`LEh8)*6*cLaa}yOwlTL z2nu(Ydk|UwhOy(Pmi*+{Fnt9)hmSOTAI1jTLFRnFSsIur5@vI}2&$p(WDmucZ$tM# zuXsgDQ*PUpBpXg&U{#gtg6{akZK70Y5!k6hc&$l-73AKO7@Sl0F;zqB&%8@>vcUk-HwyYsq6o5{NwzEg+t$ zj4})8wHz`fmMwT<8J-9wmaQqtybBQ{ptmb#dYFqPnRh*)x9b7D-TdN1*>Qd&*Zc$* z0(x)dLU`|OTrN380%*gz0W^dwxosMYnJU>KsaW}t!8ciwJT~`u{ zz;%@k)b+wE2}R&KI;4}4yZJ?`+8yHqAF}h)%cTF|G)*UCYul$-2n&AJhAZrb)iqEc z31e1{EhyQyU;|R4sdVt=;bwus7J+ikIADvat~x=?puzrQo#`~pGyvdEI6&)>cs6KRGC(*jJ)$`_SC+4-`ve@nPIY0Bjo<+};tK=d$2Y`$a! zWf@hFBt?fj4q;z(J)WJ0n_A4vy>}Oo%s0w9aAkG}7q;upT7>8O)yel`KUP{jPL89+ zGO>bzfhfi&8(t+#jd9o#-!(9{Kt`yr#a~jAoveQD1zIx907HSpZ1_tHrH3A4nfowHkEf@svZt zc9P+pF@v&llQT}m{4vh&VvbN`Yk`DP=4Hfa#~OywtCKv(udu=+B%g`j58TjU!B=rn zJlC={{I@Ca83Jy`<}|3qD{Bq=)xPArbk@m&GMB-@0!Kp)s29uQddVZ8faA_U`Hf(U zpUP8j8?0C$mV6Mf1@iu=Npg?13PBK%R1AkdmKF=_urC3*#nl>M z@(*i(pegU;_G6mRLPaik3w4hzVto7zKeKQ*6L7ajd>N3WvYiDX)@^V@73ntM9+7VP zAx63l63JK+_#9h~>*aJG7{` z`rdX$y^+DF%Y|B((u3bFiotIhcd^F#q|lpIOSz9ca!;{-itxU5i-5DhH-SBtAkQTq z_nC}q1A>>CSJ)SqEvC=f$2C^pi z@U~+z4@MWfh9&=5hUv2%7d+#AGW27%_EJcgRJQhF8G@6H=*QTcK;vj^C0{1H6e&pq z_k{LI=SllJpL6*%9%K+lL#NC1P`!*m1JO^%(NrYrzrh(%VE{APJEtZ4+MH z#&7T(6uBX}R^S|GOM8EVe48c%wZ>6d{-6KpfB*2@mBy-eM-%swr#AvbE5nCixK3|l zFktMIPImJMwD5{z!HC}g2v*;F=oPG15;k3e1s*lEjeTDjzE|WfL`@kVvWHkXri2cs zdM!=#ef-J&`_CXSq@f3P+78Ba`ps4}ObU1t}iy>3>VD}|AvWsdT9s@WVhon=>7B5Y;$v|h9!9kQAKR916CVpa?NVC%mSO(Cw6|g)(s<$;r^}tBA5${P- z&8CTP4Xo_PwyltAhV7)fCE2A9!40I^C=7wV^+q}$4v2M=&}dmOv7E2SenfUh6)2(7 zVonEk$bpC{H$<6D7N$_HV|dbHy~^A+BZPTbK20n{VM03M$B~C5l-$SP=|h=3#P@%$ zwI@lgOymYQ^SRdEBsrAG+Ww{AYi%GHZuB8_nTX#yWQKTl*pxilz&1fLmA~s1~4g zKuMv*LS`0o`(#P|uDB?iPvSgftz=85$dRa_L^G)~aaTR4jb%k!rW1Z8?tb|58IuVC zZnkwXR0zPCrpSo3O;Ey3aIicr48p7qcT@;m5NcJQV$-Faua?$bD@&z^w5h1aVi`i( zCYBb92>-CO=;e}YSz5`p7~aR^TC5*YyTKkWpHIbbsnddm{wl1_f?fvA17U63B@v9& zps{tlo+qMks=x#a3IB5}(Kn->OQR^dXJxn!{{1LW;Fi4Enq-r15;HW>|5lB*ry?On z%2{-&X8h||Lt}JJuzb+q%8;XLzj=~%0n_ofS)H!~&2nLeflcy))!Udthx!0`p z5qDWKhexcaFeNNP)r>uYjvR3Y*cm?8j!|?~-PSHv4^3AkA}nK{_@_W?JdRFrzg8f|pOTJ)w$rrJA4Zl})oaPw|1~2M!g+@F|E}?<%2hu`_oIzSF)!}c2$2|g$ zdBC3E*5!>50cUU6HVXDx1%@rdTGfxor_m2aaqYz~v|^MR!ws7ucdDQ+=FI{!Fit5) z#rSTp17BbVuuV61zPd(6W?%B6gGNTie!lAY`m2E_GG0k&kP9hc=sFVoJmyTG zq-{Z9y3_&3mKJW?Ghn-^@8t@u3D6zMoEgBmsu?%{FtR-iG@_7Xe@6MBS^wVKrrJrn zT<4|X_X>?VV{m5x18DR7r_vELPZFhIUxp33gqRwo11Ch{NbP6QWlqC|qjc7|%^vlp z3UXmdcP ze6a8$Q0pI7)bX|;uYP}Z=MKB0h(F9`?NC-=$wTgjcb6j{*?55xcBU{^{OYps-^aWh zi(a+_#{)Ke`^;w87Z!#5RmO|yQCt#ZqZ>D^Le3)J;7_VRV_put9^#Kw*!3bhmgl+X zd7g__Y=Gb3y!*IdO*p^>5%3@v92$qYV3xav3w{l$qqs1x2!ML3Z4vaT&!2@zfoWK{YvPqfr|9mc+JDpA@X78yS7Ve2+DdkXNU`&`Qk}$+;XBn!I4u-l6hSiGmuR#o#G{t1 z5YQIUt(%MPAW`n}nexEabbUUU zc3Z<=A*L=GcA@EQe}EZaa0EkaX%S@HHtSpRM8+$k&uCAauq{|}vX^?mu=&tvfnDZr z?yj^D8sZJ}FiN&c6bo+KwP!SL7KnutU8W3*={mjPe{9ibFvhA+*0hg- z#``58!5kKk1Ke}vVzghAVkp`HyTp402YNdW+nBX#wW-tzJu6{>*0gov2$8AHK~4es z&P$a_Zf+El5;<=-7D!q+l;sig_lR_X_#f)bLj1f&d~N24wRObjGU)^)B(rh?uEQDl zwgrq2{2%AWgJ>IV=FSNjzi_2!TDyE!A8>X#(`jp!U5N7<42UzsYa*sb8qL!m`5e`e z^!|hT!24zuc+(;Lwzk8u;6i8kKa7A52P&%)9k-!VepIhAn3)y_3QCm_;cG04vq*=O zRpbsjfJgX}25m5)XwLcJ<@6B%*ZPQnOH5W$EIa}gUBEQ`NcFC#M~f8A*}DM%>vut7 zhcVz}___#O)%;VRwiYrhL^T^o!WGUMq1gL^wn}qu*6$2&z9`!Cy)}MvJA7|=(?!t= zUv`fprGOL-|FTBP z%K0~zzmc3QyKgxOQ4@_qa@KS1JmsAfW`duTSSB*A9T7xtTNO7SHUd|%DnG{XQn%OOup~EgzCF*QnWq4{u299*ps^p-E@=jU! z1~*gOC<;`s!g%%!7?Pz!u|jPqV0VAgFQ^tNs$R6I$7<#Q^ie)jT*=^4hlGpt1~Cq( zA%sr!1<#cT3!TZmCX$2k&|gXlD^FBFG9pRNZW+XyeF#>nL8$2(4Q}7C#;0y5;kSmc zStc?^%ES=CEBHpcVSVt7Qj0BCaEJx`Wb*_w9K3J`wO9r`qaK9YDB#EPYuV=%J&R$0 z9BIu52e;;@DXB{xS%wczc#jinoeYRm4;}h~jsZ@)_=)XPH0858+A@aiyVo!zVOd2!JMk?yw@} ziDla5VG}lTzOh=nx%8*X{Jo=)?5)eHs z0&P|KDViM$!a1S{Fp?QqB+_lunb=&L4HGZDItiEHCTO`zJ3J8)ELu67eVYh`7IqhU zh%;>GiolzZ%5?a|G@(pEA@zv`Xn&%YBRC6`L?EThK&FpMu&`zlH8V~iGdG|>`DSe+ z3|`xq**3;)_By4%HlKB;jS~$WMG?yE1Q!uSE{gl&qPQ4A|PnC}+U+MlLpnJNW?CQ~S7l@IOHt-!wS_4!^>y zq!GNyvZ$11A{j4_=D`?ah}KQroCGD6i3J9u&@?3X6sxsuYx?Dmsh- z;Jh`>%FYn7Rkh?yFM z%t796#2Thg9*N+;-EO~W3or@?s&K1Yetj|5D`DQN?|_>U=0k9c%{Fh}EnAC7lE_n} zzyPw;*Sux6mW~r8DKe4hG7Be@(Vk$}rJL@MyxwM3xuO(&jk(TOMAJVD$Om)j_&$IUkoXT-NVMr-<} zGJRZBrjLut^zqxh6i(pVnUv^Ou3Mm^f$Kv@&!VbzDmvPeY-Z7w4!s`hF4$d|MMojp zkG3#?W|9a&b!KCW{}|>?GGaS91t6brby4dlX9RahGwWCyoyTSL11VHsM_1Snm2_;y z(9#(ER%z{5oygAt#fo|gY>{^+o`7#*|B|a+UMVmP>!$8O6 zr?NQ)I##jhFh@ayRZncQbK{f57x0)s5%d3}nTq#_w-5?zE4I+loSQ0`+q(OY*6;{7}{M z`=JW9I#tW>x0cVS-B+yPeB)@73t51;Fvj_F z?oivXQ$CM*C@zW9$p#bzI%!ZqNg2{daN!}tOKgskntZJT)d9fB4~W<#U(aZC%h~ zZ7T}nQ*9WQRf<3ur-$CDX-m2e(Rb1L$YG{5d!}uvdJq#-Mf|L;G0M@6w0xh{^6=iF zIx2InyyNcU#YOq9@8r-)Is%0j&DcT6JrGM6KKv8fUitCIGT8Ed2(D9+FSxY|Yz?0u zmex>=&smat{!s5PVnlY(POlP=KP?IRzFFtP2%0PTjBz@(UkEEV=;SR1=xa|4Gfb}^8A z{q>{8N?BZl@a!U9Jih>yL0>c|4Ms}>3@+L5oU(G~X)Thf>6tADh__%f!4IC`t`;Xm zomFKNYz%{HPEzFpz3jKyOqoY)7rn=Zm894MZmv6z>;i8xBuxJm!#cJjlWQ z(rcG-@R~%o5YSfJVQsg+5chvQ?*Ca$>1<=aJx)yf4M1v2q3~E0sRDOaygew*0>rqi zdCD%5z#C$*sxT2TztMJf#%&bLYt>^*Z&fjDCW%P#s2Ll<>3vcdXmm1tEL@%K-7;}NK8@D3LzvfoT z4;VmDICMc0iD#l2td!4+(u4)^7$$}J7~qB=rfTtkgU?$*F9q&KMyLRFet5Pn=*69x zNy!p7V^1EAB*};E4h6mH%xNEAEirkfc0UyK!lLJ#FoYphLAwU8Fe|WN7pn(*f{c&> z!e{8}Gxgfa4#=H{wYG$xg-Tx3#C3axNn|DuhA<@}kb6})y1n{zY-~kjT8)ujj&Rv% z%p;h@#THz+3=vG$7{$26WEw15l!$?h@j~sIC=($e#}LuyDR5gSI7b>mJ@r!sX=K_? zJ8TXkkixDTZ96469@4)0rN>Au<;za4e&x>F ze(6z6oFAsbEP0d$BBt(7K1ybWz15JtCOhyKwtPkW3)-v*;#j*=RM8q{KX(tSTks_6dGb3(I$U8-V zb+Vcpb-k)YE=NH;3V}3uT`x&I*70TDarHPmqpoFj5n|O;QM{Www=oZe#Kz`!Tkj%@ z*l9%+cTYBGGodb&4xu!qo0+I)R0Ua%byGdPfu2;(EB5q?$(~-}J&{@$_H)6+_>^$> zF1cyMqLSi(Sj#4z!k{ms2f9DsMC9E-+Am)jRxcD7er0nXDv47H)ut0aUtC@;+g zH~@_E!v|K&Z}A2yQWgsuOQ3n6@uJt<;=C#s*h9^&>NPguftJxf;-`q2pwu-KNH!C%69o3 zQ9Y(~uOKOqyXOJ#NbbDW7JC$@7;0_R9qVmMb~yyAWS6z~CfZXG#K>B`{Fd6WVsX7P z6yP#$WpiYeT;L__j*@3gM8R0+K+w$eF6ExLTDER5zea>DQQdts(o8__(<9t^{U@QG zS-^X-{u6;8upctb;%Iyf+7f_oN_q*~R4k64AU-Xmplyh5Af#0K|M=`8aCyxq&{}I8 z>OH}40_GABd(7O7e8+u{sX`-jgM$oBq}Q1PR7)I2ZmUfgs#Y8M3k`-J@)cwOEjQVv z`p&BoR|Ik>Xlheal8?Lga95MkT8Kh3A8HT<9iPfWCeM6cSEHEE634}(R{McXK!$lH z9A(ePXERZ(<2+gc4SUm#UgU#-}FKj>3!z*O)Y@fi-!K zSFM8MNTvxjt7^f)Wg5K<_#!s*e=Mv6)fJUYW40e;mg{GUsA6No*8pJ350os(0R~oc zAt{{dC@{eX6EV)KVS#NfPK0_`Rl2*06OW3MX>p#;CK32B%~8HEw&q2$8u%LuW!3H3 zYz!r7S}4gBg_4zXn*1$Iz9GpXSD!@k=Fs8FU5$8Y#kK+$4F$IhQzD5p(*CHV9y|XJ zUiAcw1KKX%!3;AI4`{VFH4_PIffAXC4){m6672~Ks$IsxC%7TgHCiCNm{)?dhO!Ry z1b!MydW{cw%0%R_s=8U$wVQ}?I>_q|y!e-l0720X1;CoRBJeY1Ao8}S4MbjpOX83j zh(ZOf$=0G~=Zl71%LsvwC&4sv&$E%(xq*l~atrVPt{F)iS|nVOagn@!mljD21l9j` zC!uw(diROgsCkfe2e*$znAl7x-=%f}1w9+wzJY{ZW>m#l2=(FuYKPKU3RAEtf4q7r z&?|qT=ANPGmE>gz;wL5_w~0PlV@eRbqbL*#UkOKWT4}bQtXs%a(pE)9(nv+*{Bs#J zksG~y7+ZXleM8kL9>_C^I-d#+RYo;v$4Bt8y1S4s57)KyXgAD1)SiNOtBRg#QTghd z(KUwB1-e-?Uavj{m>B2%^?C}vXc%iK{d818fel5$X&$idXzF~>dJ6MFX> zK1|?7Q1=^?3l0ItSfE{H$g}w{#8&*FT5GHQJ*JI{=Nf;kH{dhgZPz#8Gof4aAIo^$ zn6tZHRw~i#v;OAL-~4RjO`jkJ!*&Q+?zzKPVW%@3z67|);Y*N=CV;bD4qt-kApOd-=_ZmBsnoXGO^R z|Gu4dPIo4~&bwy?gUaa)<6R`Y0LCwGGZ&pOz|D1xIg$ndt`~_AH7duxCW10n(#sS8 zMP92mk{Q`hvfLsC@fu|@63z{@;grQ@fFMRr5;6jIAUkM-xVRtKIs)U`pj3xCwMu9r z*nkdjLFs7kzKYbU!iN>7?Z@J@81?hsBMOnTv`T$QPUbz8p6sbK?flel^Zpy9X*d0i z(zKiWMh=RK)AsyW@5K{?^ql>_m5o?XVOq*i*(*N#5H}}BqNj{ku517OtB=X=9Rk4N z9)fI`yNAh}Fk){vY!oDUgeTDoR&%G@D(Y?`w@>%Zr6Z=_5{UW zN$#RRgMIKMG(Mi0yIXO3_WRk^$$UZCVfO7)t-C+=_mkwzlka&-=7%$9vb)ORJ$HZX zCyM^Ni^ZqB$)^Oh<(aSW1}<#xW$wl`HMz*k$+y4fDejW3`N`JnyyXFhx7`I$moI$i z%vsVR25%u7`l)jG7VF{e*QNkC*gzhdh5NvCStU_BJ}3@ocs&bNR19Kj5kvfhmho4r z*oi8-=p0L!vV`E}>$HRn{cKpn9+Uo9-t(0_^FnViv3Z*QM2KmI~WChSuMkJzMo zOzH(@HhfE8)9^`f^v=L00jtGD1q8>Ln7930Gckt3nC6C`psjI$*bEqy=+K-=o?V_L zKXDk61chNuHy=*_#TGUu0L=~G*@@|A;|ps?v@~F|EkEI?&B9_*HQ3CvSGAH4T?G{r zeZ*xQiVR8H5LfU*2iQD4B&0R`QHJd^uVPT}_9#BeOa6g2o+d=`&yGJB!!Hum{ydMM zP6i1dRR9}^3q=;Sk*^;Hx>Au6kr^VU{>7_1OQ+}lQR|1YA57m$w<_@zpSfmJ4i@Nx zlN&%$;c{G7q5oXgiHYKpqv^xeb}P0)@lwPO>?L06LjAS{!eo{T29wCp8jcbbVUo70 zs~_o?T?=#9!q!5|5zaB???O?sT&dy;5E+xy%;KEig6e7UE4$edPx%oN5)#)}Y2 z(iB_Q20=>G3`6A8mWCK8#%dU3;928?lpy8!J2uGRdmS6(YJTDC8MGNqZ&P0KB837l z9J4IO7p%}a^0oK^1(0;1e5136S~?afLNBbCL(Dow!4Z21)Bvr}9$aib81Zy4{FV8L zr=~t43X{4Ie_JhjP;F&Q8S68ihfW8TL+YVp#$5DogfmhbfcD$aTfPA?DR=lrhzB9_ z<@^nVKFW~5_j^RK7f#;5H{6>iZ@7z}QYJY^UR#N{N~tmS%1IMXBRI597Tt{mF15U| z_`>P&e>ZL}wr~7GS`Ie;d0GsW>v-mH^KavX-Fs5(DgJHz0r57L7Wt+mNvgk%6Mpy1 zHXf}0=wQc;6v{)z&W+cHR_HLP{x*IwC1${0sT)y)8;3T&lUJBSa%TKry3pN5r}q4S zDW_R0N!y(y?an2@0h45uEaORA4|*A2jTcVS*3Pf@daTS`j|(9vgp{7AqUivHd{7HeHf|>VWtd;U*05mPl3w$Vo8h(Ohj_2?$H3mo zoyK2)kJD^V^|x_NHScfd>FO^4*$Xe6KHU7PA3yVHnyLP5Y`hQL)qfjT)AkD6u3524 zyiosb+$`9pOmEWsv$<~922HH?pf|tJUmPrL6IAKnuQ!y~AQ*1rpN&Io)TUUolFu4< zjWsi7l%xy&BwYkDG_QysJO4UN-!Qr{cRn)x?VC@3yOD;;N&56>qC;#=JjYJ6wsGS!|Y`i1g=p$$2h?gYka(3%llpi>C zo~Z_ni=2_~JQP`~nF$RlvkW#ux zDT*2CBc<4nv*i?#o3k*4`cJ};Agg<_Sc;NM^LKsTn9a{b1*Vz$#^RaNBj44^v;-FKrn(@59?gr^5_=3-Ra#zW`+R|o6J_9VM506$9s1AHhymdwlsr^x%@Q! z=mZDbWco8_J-Z)c6Sic?si`X?M7~MTZ`(psHktcfss*+z+88a>tc`;)Khy_yB1`S9bi7zs1 z$hjv&hAiwdY+!cMcMR5U*ie%2q={yNNW{d6Z8B`&;FhIpCXw(g2oZ_@hAL4#=(?T} ziGGtvREi8)G?gMFB9Y1W?nI(obc!Iog$&SpWEBxbklw;IPy|zO_`N0dg{5eyFD-j5 z5CN=-!+eR&#Hk5#W(j=S3NDK&(X!^JhHZx6a?a>raC0a5_C8r^Y+KK{ z!qc{zi52!-50PPPH6hbu<_dcrhgSG^@dUp#E4%O^0Dr?6srlQ6#*gEOSm-pd%)JlmYHJlS7ol;JyWAk>g@8MOkLR{lH!; zFpTs!60B;&jf-VpS%k3gZJBSUH@36#DuK&y+MA2h(;Js;jt_IjEQr&QrB3+J!dfT8 zBDOBXIoa+`%WXswpVRavMR%h+D}wdk(|aK0ZTh-J(vm`73-!FEUO-L~$i*qixl6P~# zYrKyOe&U0bJv`XVpWXkr(Pq9&cJr^sW`5zhZRVJfH@BIehdKIdv6*i^#9%Yu6$Uxe zW=^7aBrC|T7L1`t#$7WE`@8bhmu==R+sx0rY%?FXnnyRqq}5lJ-WfgwtkW;s%%k1> zWt;hl{O`EU9CUcuX8uC$O2WDHcgtq}o|kRrFWbz`R6o;tJd=&eUwM8ubI8o!DVw>- z>fdFXIaK9koB8Gz-SfAZ|H0Q}Gk?#^HgiIP-FE1%$!VMUmo~Q%xiQO(7f zi6>qCrV_ve>~A5=JEZn{{z3Tdm5_llh>=h&0v=)pN{fsWWuUZ( zZKyL)7OO}oi-S_pTF*dfnMaHeC=YKCm-HAYRmSuLjmc#Uws9@wj0}`>EMm(Rv1NtqyPCR-%Ki;#@co|TNEbLJY!D044KGRk4lcavlkE9Ohc4KBFoUt16Uwa<6c z!DKo3Mm8mDlZ?o_u`Ck9We5@97FilDB!TOq3^*>U{nXT86p{0A%M85Hv-Zh4!@>|AKtvC}$i3>3h*g(Dxy zUF3!#GcKO8#0Sb{=v#J**omw@o82oBhBFLE)V-ekQ-mO$g9f+~Mx=lPR>4n^(V}Q% zMwhxg!xAa(RL7udJd1|kC-}@Q@lj{h!%jdt<$wL`GM?_LII(%( z`=Q)$3YYrhuUtTa>;YO4^0PB_D}s`7zdh#>UuVgrUsZY+d{OCLpi)fl;v4zVsuRB; zr?zE)Pbh_E=v?P2o>sXXYt)pocBAX!siH zm~qQa@t`Me^1ow#CMzhT+LF3Rej&uh0v?sjbtg;4<&IFJf>a}m8XBSk^fLJOyz9znS!@eM#a+Xn`mcdZR1^*{0$+-LLCWe5w{O2LEN!|3CWaj!6voR8ot$j9S zeW3tZ(2ZnAtI{kK;O4oG{@Le=kO!csJb6(0kSY~F)a4pVPI9@HFeoltK%H<%kPFIl z&X}G_i?*LpENF0^(m8TbTBQWXo5(Wca!;{*Jp+v! zt&%Gc6j91l6fQXn?&(N6qWf7^&2(+Fq9tTWt=5(e!uLie-e~bb{zNag&K5gGAa_tF zjRgIChf%~G8lsLb-N}i;Op`}xRpd@}Bb~}6x_~Vrc2Y7#E42f%1r1+g2SY4Fide=4 zJME2A!>PEEFY9nQr&Ei8P7Rq!HvHLDwkELGg|V#>Ene*MHVc+_ZxKW$&Bd^lhoBVg z>sf4KCy!cbF+nzk$K1!`N zZIYl(866F1b1DkS&if8+fr1*e#UdLjiseHIpw%1@fkvu8Mp!uo$inZ`oeoFlg&W%? z(jlhByG#h-g#$nWd<{gS8+EtB`KOhzH2m%mKuAF@t99|}nCvo^ef|=}+?l{nu)4?G zA@?ih&WgE=oeafI;_(!EM-`U?TnNiM$i>cNCPr5^U0QY~b0q7Zif1eT%3Qi_lCB@D z$-0ve?bmrrHahx)_jIBgmwh8@XsX^Ebz+4=>5J(U@#Kd@!cJAM1>Snh01Wh0#=nuZ zi27jg{Vik@uJ>^khw*=^o&m8YrF4cr&Vk4JzIOctkdo>QLk9bZZcIRxzTl&e5-7x^ z+KE&cPEwl#Z8<_NXctsfk}iVia^q;=x(HoSn|O^MzJh8pcZ(>C9kjO13n@k-&5Dak zbYoLGe*s0s&ygL%bx31FQE8VV-H5}KplVaN2`cE1s5X}7PKiKPK}~Ux(LH%bRnTn; zYL2f+Hg=x0sa|A{48VQYXO_w@rqW?J6XqliJ@gCOCVd1FH-Ab$kieyT^U`pblikXf zE6oR$hYWFPKCnODbIoTtYChb!hlWOTC1-_**5})Gr*lf-$hG#fUF%FVx#S%5qGf46 zC_$X&F71b*tJ5$qYkh+QU-i9t)a)@T7$oR`K7&s^$=XWq><0M7az-mfBofJunI4!JZ5rx&jk|Jp- z@~iXS5Uy3CiKE(u)zsDnt0U$fl)~Tt_~P_Ij19Dv+&yA*9c{U6a^@K6Jd(zc{-x(r zH(V$7nAolpd-x`4jEkf(E?Yp`o-Y~_*O%aJ-QAE@nukYunWX@%Y;(8de0MtOma2C? z;Hvtkcvn zxjX3Q^9dq`tPqf6Z(|RJBAVJ=Py~DN`+`xY7mh0v1welv-V-y*;t{wsWhZw(EQqtC zyYF;h3Wt%AufcKMA-k-8$- z^V#73xHrEV?tpc=BXy2D@V9wM=Z^dtBxBvu(sbTvyxY}bIVhj=FY%#n#z6c~H&`^B zBj*C=*v$pJ-NVJiLiqY511XdKr`ze=q~zB)wo)4o3*oYLg?$R9fhtvMu1s=ngH^70$0ZCl6VnqN;L_ktIz&1W^L3eux;C;* zF)rDuniY>^p2CtP^HktcmHh~=gkYjUaY8z$k=h)QprvtMcXCqJ#c9p#@@wr*Of8Nyip8GFpYRoc;^ zi>>E?1Qq&E0JN`d|Kc9mvE6?w_UNgsd|^v_bpHp>y+>z0@Yi&YerYakPZH!t5J8|0 zT!cqlHj(LZ?MT*pQ3bmWA~;(~>Qtl?j!AC51(7XEmKkz0ARWq)>eN%@=>18qt5I-K z#xfl~lJXnGn}TPeTU{$44r}V`QGG9tiBlQ{=FKpY z43t?~Xl3D_gifr6n&atQz|(a2mufbkY4g6^g`jp>laxjYvMqw>>&n zem*Nd`xSZY_A`N|dSQj-p%}&v--`#Y?MCgy$i*-H-n#6$rfEp5w3F2n(LCo%oY`g+ z44WRuk$xnr^^L$aw2B37>8seAJ&m!YWP71!oZ1JGjWXdZdM3ggv?bPEZG;*x!~cc1 zLvcn^*0fj1eyK4|l_J5)?O=lWaa%(yR5fLq! zBsbW&=v@}HNov(T#SU5tYe_OSfjQ#@26m_Ap@OTTorK(q39#K4hF7cDW7+2HpESdH z$-^rJ{zxi~a4x(V^K9A1@8fr4t+Z^quVtI)?U-u2jx}Z9S+>lU&4;xZoP*v-TO(!V zWV%+3Us|6(Gv1y{1 zLVXhv#dd=zwxJX`Esmp?izF%Nh0D~D6Q?;ken0~V`Q=$c)J;HX7gAE8QYD*&N2gG! zgnZWMbjHxBW9am?Sij8WZbq=FimIRJO#9b20ZGJjfh6sS0~##a5kf5Ri-TmaPHB%Q zkgQ$7Ev@htgFnHbgCoazPk6zyC6u9%1iJ0Urv&x>a#=8rl~#Ng7_ROs0L37xGR>z?*Ue0 z5tL|Mjje{poGJ2nfYn%VqI#VDS4jz=L5Hq5AeTvj2%XP?tvc2{u{N8I9j2U!-@t959H zvyQMe0tpCkTqMA8(J>xeRM?)2&e`N5qbwI0Wx2>G%SA?6E;7n;kx`b5T;yEjBIhC( zIhQTSe-$o_77-;50IP@+8T|pO7}*5tso{XZH%U%d&X?t@UOEavsu3mw*q}dA2~x~Z zZMSigZTY!Byf|MT{t~`Or&NA26~-s0VoCYC?^+rD0N#QC9h@aJSBZkcLl#UUlBHSz zyl{1*Q)QDYQfi{VHeHP6{6)!_K_Z!pa}IQI`WKA1fdI!C+e*v1JDwQQg;tn2ZK9GteF{QhgTon@K5?6={C# z=q;?(zM}OyxCDfl`7gBXH=5a9|7<;pkkEF1|K3+Oa=bDzdAS?cD8No$LrO zBN96XZ(jZ^!dtLVb0(_8MgTM*DKhH7#SPwsD@8C*b}N;{0K(y7U7SdX0^-ACf1C>m z%jfv~Df_H<%8!0gx69A-k*D;LCjBjb0)S3bLvy?MqFzISWVJa+rI*BdWz~sVhJhkX z6KI4s`i&X!9o2}<>~7;tmO<9JSR!l^JlUp$!NyeE;S=cAhn}4)f9IDuZZc1o=aP~= zm-6M%@B9`JbMoeL5U}GUyL;3$=13PZQ~;w3Mnqu#hV@BRIS`z0BiIHk zS$Nl_XO0+_uP)GP{d7>=bohf3-C))dw|JjZ;}8STfgv!`fmsYS8W>kV^^Q+bl9nD{ zHN=i&fDQq>36TGWAZQKl=9_7PdvMSYi8SXp!PG>On&9sBzY_3yvHbZb=gL2NtW}O2 z+(QL0$Lv8oxF>?UF_b`n0=0n@eeHCopAYvZ+lu6Du?;8%E{PtKB_DTMnsXNDF8zee zejFi$Ed*D@4iOR*@cktZ_mFHpUoO0kSw}d8NIDaQ-vK$CkbuYL>g2LOeuW(rL%SQ@ zU2gCI^pdoxIyb~0eBu6f`kwWGX#apSp{>Sm(Fo~4FTpV zIk=e{3?Mf=%$IqDilmx*(O*Mzy^7-n`0-?!K+2u+r`lxO$J<$-G5+B-*qlg1poJGA z(#t;h`c%itqb5j}EELH0Hy47f4qOw0LqWK)MW2LVulY6(!LM)#4!LpXfZ%=K1PI1J z)P!KEg^hSYW)fT63 zq<1y0MuU${0BvIqQ^`L=|9OJG(^O7V-XftFSXm%P-jnVcUz7ACD@oj%i)^BZp@au>%I8Hs!Ad1k zXU6HcR`0CYJ21Xw^pUm6H`I^PfDqQm|H0g1HpRe%*X>oYGCK}+ed1+*JRYCgD=!X@ zch%Fy6A!Z#){_LzItX4|k{->_RL$KM%~qM8^;X5twfZURZ4#!haoLf%Lup=B{5=^g z6e=)z>m&1ceH`1oK@L6FP{w_(pEj?RRE-`NZX_V}1g;(1A6zmTXNy|{t zU|%980%wc}4RA(soejvZXinl4(~}Tk!IK#Pd&v%?Rtf|h4a?Ch_4b(7v48kKm9O+> z+-g0D&ep9NaWFhOOxD|7xfF)fYPD1ujhNjjwA>Cd?LLnJ%|3UA@2DAIFOodSka< zWxww+Zv3jo@6iZ{C4Uiqnq3PhDY((B(Da7t)7lFgpknb}jOaUM!Ik5drOtQ(!0Oul&O=1irTNMs_yh<{bf46Hi%g~Puj!&WVzgSog!K*> zCBKSno6|*s$j}HSK@(CT4gg^zTulGFgIr*{iR~4trBJ3wKb5p=-uujzESoK>vCr0; z!I#PK{!7b!z97++qJy1RnX%MNP!p(HM{`Xy_SKvayV^E_RYsH15|C1f(-x1CexE!8 z*%@$;UmSP#hyIPc?f2d*Q~s;{$Kh+sS69F2J+=a_vW_2A)}Us;R*Qf`M{Ot!x9;eQ zW=B_ebB>#=!hx!z1Jy6Fqw+Io!0W8qXSqr`wVte+J~ypD0w^;%~F2)KIE8jc<$1gb9whG+v`;gN6Dv@j?2Fwy~^sX=L(b zFvESxE^O6o37DS2V<~zc`8cu4mLcCI9fy#Hanq_qdx0f+qaIM8;S zNo%!<1{F1GNXM9tL}QEwl|))mlV(2O_g!o6eeMsaB&hSu14Y$3XP>p#k9WQAyWU^x zU77>qz&on>Lc5jX0q*Z8@IMI7Ho}bY&ESO>7j5e-FQ3sFwJx2YuOQ?_UmsS^^80_j zHToano^`ZY&xyT~9>{$lbEFj<&6CZaGvPW6EWk8D15`vd?3JRdzL>0q4cT?}JZBhU zZyq2w2p&ZaOXh7Um%*V}0m9$cTg;IiiveK1uP2Xa!KT3}TE-mZmtoST;M2^$f87VshzkdSY7LQ~jyH4w@G40-PObcXH5p~#@ zoXHQup%_l<dVcpcXp({(LKX&P0bl&o#(M4;im?f@(ACuxN6m7oG zjawiF!S`j`4j|fQN~jFqPnz7e119^f-}%U=J2!EU+typL`JnLM5+1Qz`fs<;Y)h^p z7M~`pHG;po<92I5%apV?Zi5!7Fxd&(A>B-^?Pj7oHc`4O`x+;I0I>)G5XqzTx3*d`n_?{(Fb)RPhO}vbkF&apbLA7%viHyJ$6JM7m0$ zCmHsMVP!(}OJ1w*VPNUCBDJ&iFds5V`*dPRW)DBeAc=;(OiR*{C<0^P9hiyQ824J5 zhKT@eyI+YPBo_Bh>N=TJzB&%GZz?vOW_7U0AwHYc0QbTs9D8;uoJ9gs@Ext^oH!n~ zM3yDpmB*X_v=`rC(F5~jyghNgqf!6^8 zgPZFCC4kZSd*+k{Cnleer2KfDizb6`Xe{OG&qdgGxWfy24YCQDmvp#N0&SU~tB-bK z=QFto>_ncxT?I>$H!^*c{d(#m1o-Bic6{ zKSjyN6hhk8FhEdz+KlwtLVasYMpazmQu<@ zIlx`Z<+LP0fj}b3g95TLH1S=6VaeGg{xaCIeUzV4J5t>`InKn_+$5p~SWmsJj|dd) zo5OdaOK&cw?eS!d=~zQd6AqpEAt$@#j_J|3HKiWHi>#`%JFo)*!|PLtI7R@Vp#csk zj6D$!3}Cg8^qp$Gp?R?sAag>BWf&%H16CwgrY#y#n59|)s9qzVJ_%c)TBDMwkY3Ap zQ&(CBeR5mhRdkW@zLrd&ne~YmIQtWRVwQYRZv;d6PkaxL>Ibg&&<43?tg@KAMr~sR zU08CPDnNqPu^Z&6mWJYlp(vla8jA3PW{@u@hjOr(=GV|Vl^C;~R->CR7;;o>JU;r9 z=oZGK18g>)O7Ifsa1awh&jALzWd29!<0JOsOdOapC9yFBVA|r~et?@sn60(Z7#CE5R*$O4V5>>a=kH26)4Yk^&KxFkSWKM{VcDs3fk1 z0GUXy{W?v3 zM|0|aAXr8@oBG7Xbd~gMQ|Db<;5ZJZeq)^ajW%^`*kAYDJ)R}ZJw&ifEc71R z_Ju>1UDZZ>qmS62Vk^%B(q1*E?-3%3A++g-AdzU(fZP`J3P~8@OW-fDoDqMaG~dgO zy&1D=_=yJLHa+$q;ctlFs3(FZrDbgCEJ;ly@Ehx7bf%qHzy+|kPC~Fn-O0Q<$v5g` zzS)WPVWUIi8O8|1F6`kMp^FfZQFqa=jt|k5A|>-gND_@fEWlF<4zZXYF(m(Z$qhV~ z{KM=#8ya}FteAlZJI@}s^Q=&iH((zHnSJ(CpvqlIv2`UoOo1)$8j8)*?|S)Jvp4s?m2iALYt%IzpZ`%N78#6}oSO)DwmmW{u8NKf8X!-Eg*xvjMUVn5=bq25M2!QKskW8O1 z!AWz@R_KCBowK7b)2C&*$|L%EF3!K+g(b7S`kciR4NE47xB&v214sugs8Z!3Y$C8M znf#`M78F%3LQ6up2iqkNSMVQEOy(lIk|c0EJS>OP8IeIaeE}Jq&YTQDo<8mv)7J=c zK}@|aV1y^W;b4Y>iCZ=PgAOJ!AYvTSkqe}(_5Qd7kxA4h&|k(lK9|q_^5t|QuME13 zeo?j>+KXa|>bE&>5XTTmC@bIh%f0f))ACC{J4@!8ikd7%ThwOTp1I~W8bHNCuafj~ zf^Trx+vS9i1rgrTE;(CPZzPhnpeh^_7GZ0SiJPquBzVH8o;iWzy>11)Mj5Z7!a zY`KSFuTrhh=~CEvDXSAkIdon&krm-hC)esYeSd z$0%(f`l-MfW;tv^UZY?FMaE znuuz`XEzldQ4XHs&|p*H;2cAZtg;_WkIK*Htg<@sP;tFJX{41lCM}=1ccJ{OQrfiQ zQ3Z|DEI)0`EOr11HZOmFxZ|9}F|BAGnV6F=hbHH1lNX$~Bac`Mbg~d zlZ05sJ~@m>3OJ(S^bJ2>0qiTs#M$?tM5ia0u}WAOS@fXtjD2-i!WqW$`SdED zpnvkpW0^TS+vVj(tK}7<)l4VU@k$Ar04CZFVUM;eTN)Rj>&gyC)ndj*Mk9r1sJ$v= zU!@ZiH{~(IbG4g-vEAzV&CnLfc2+(nzj^Lh(mgG!qQ&`57s}l?T$1A$79zsOx*&PP zg@S$=Qw`x39X*I4AZkF?Ju4!+aBkS30DH#k8jAK~QST4U$2k8AjGzPOMR=2WR9>Qf zxB|N~`hoeFeaH`EfH!)h=#DOMHInQLM)7ea$pgcHk-ESRK0zHoL!Zp!%DYOYtR@r| zGtnze2a(i=?g~aWdY9%I6bz0+w1R^qu1L5l+p7h&Ab`UW#aKPdpUG_H8-n%#qt)i7 z6BL1J+X|Fx_7l~^=WGT%s*|uDT*1-#zTnZFdow=nTS8h}^v2tchSpH&V zGi5}KcO?O1582sT@s93UP1$MypiHO%UhhhNigSsl3pPj6u_6jWrVnr(Dpr+EOSnkD zb%Kal2*)wfVGGNO-ckX~577pCTY0}&X+Fa+;aEKqH|CpokzUZ3NarMmAmV}cDGu?7 zoU}5LL6RykF_lQPvv35nYp9(rR@qB|1`2(hbd;SnVu!)RP8zg}5pjL|5+NZ*14{VX zyDq~qI)g+|W(*Ruf&6Faoe31=4C+;TIHUFnFPuhb<*3Y0VI_JU6>>4xh~CT)Gm(M< zIQ&wbmjMnOWX7l?6Q4lmG}-rK{g9GJc#B^TM>oY=%tywKD*e0byk1)XT^uerP82A6 z3V$Cz-=Y)a|(wX2jok#+N)Gm_T z122#`Ljg|&gREM^d+_48Mr11TjOb#G|OQ@*O|D zNKT-Mz-fN(Qi`>5wsYmt0}S>m?-IU^yt~FeBwizV+fzE0&%JU+48sF5^t&x zQL@&gg=wsvB~Li?ai4Zj%J*cTW?Np}^CCOKPy$i6%k#7Yi4G*JWAjuIMU@zBt0T9_ z6YRx9osUic&IR~8T7(?9)fCv8~Ypa zZ2cNB;)ORGfGpL@h=B-!^8PRGRL}rkPsO3J8pgy;II(Qz?4OdTjZH+Z#2Oe#t!n1{ ze(}%*M~PLnaO6Meu1>(&dHBF1U)*{7f#3S%bDy1lQ?dC#eh;A@oAa~Y%ID{kyAHhh zEqCAZ_WMuYnZAj*5bd4?`}(c<<_C*SW$)Ho#&8mXNwk?tK#_nxf;XGan2$(bdu%6M z+FHBgt@yOIk1tOopp(V@RWZC^42L&V4_;5T~8X_nhrq)aGcvZezUMoI);T zo%wwC-;w@Er$GJ3q?rBcQ6U8tXl?U@6)Lz~MHGmk!d!;rjsUQg1)T#K^7Ly#2T~F1 z;CvG$gbR)uoQb((DS5jnVyGRMfNa6Upsvrc1(}8 z)@tor8)_ZxKEV=13sLI}7O{TmQPf@2^+FK!l-4@f=MZfklU0r3Y+w;1Ij$^Xc4j?d zvjtb@z4FsfER|hT&n|F;wx+EX1YtNU4w4gUDHEFKBAAnKz+-&UIiI79Z;{lJGO%?? z;k$5ki=eJWF4OPN|IKVUWwk=+@~VCzAh9JjbBj~yoR(0c{0Ks23FgY15CH6f&FVL^ z7DF_%wHWJI_%ic($CqZy8LM?sV|1~W1u;|0@n3Vec%51v+?$m@_yPKloRh z%b$1MJcQ(iYQW93Nbv{k4%+NIMi=gnc``)lRtEvHXr2r<3FOX*Yvjz3dD6X;*xw52 z(qTP3$hJFr9q+!{=x{?NyICNv9a>D?q8TD`IcK1OgF%ejC5=55K6?zV#OcILkk}u~53$Ke>I)&c ztx8`Y!f20W3qyFrE)w7+Xku=C2`tvc8&MSo6?=bz2^++wx#tyO&`% zzri^7P~g&$*ST>$1K&2um(!9H=Ww)pKjChhpSU93yxMK^sfO9x;!hKWWy)_uLF~2) zMRHTf>`fuFH-)a?p~w-wDP;DhklC9;W^W4R7ot#pAqwReqLA5}LRaum$m~ravp2;x zMD9{thd4*^?FdN}uSbZZI0Mg69mjhoCh?wjLU?ttup@gsYebcL(ly6w1QUMdo}6&) zNXFJ5|2P_TkTs}sI%9^Qf+SLkb}@5wJY@;&gllN0Gk8~q2lWiI1sq{2+4Y{C{od~oyjVf zPaT417uC3<=&niIHAu}##UE*Ck$a4a=^2^*Qcl@i)_T1@*=@+fmRykda42kgG0r(; zdLk$qpW^5dSf)>KJ{mAhujpe`agODyMSu`2(Z)J+RQpRi%AX1yviZ03nF2w*&vzEk z!=uI0!vYH2BK&bjQAWCjk5z2z28ghVzJ{uXxwOtmn5#iI&DBdtykvjIE=I5=MD?7Q zqp3=Om7^5Ch`}SVNsAbrBf>}@O<1w!m~6J>bFi&6{H|qEq*S#x^o0D+GCG+xo~D$S zo&mnsFhDFYq3$Hur97Se&QgAuj=d$T)5%%(OT4llcp zWG>%|q8I|iDsM;66-9f=T!C=ys3|_~rnW)wnQTQ&Ikn-~xR z&+QbCg9he2*OUXmCGIm-yV!5K*fcqD5Au>W-bOv?M&AqOk+3O(4el4gC;FSD6SP{v zIbyY?L?_N^>jDQPHXo_&FW#b(}mi%-9>Tk z1u~zXUK^C|-k|Hzw=uO41Z9Js7tZv`eP)V9o9S( z*QKN#`>jKSe9=C_oyAXzrLw&I#$~D{-=0j4B7?>EbmJk0=9|Ww!t6Y~$0nOx@Cq2O zv)MB`*aFo_G~&aX^5Nm`u`w5z1+Ib>PX)~zuc2oKy{zU9m0apkXSY`AG zDaJnM?VVZsGP5oqHT992D&7qUju$dWpkR;(QkXr#y1`8MJhY_)cVohixr%x;l1KUSa`Fu1k)U2)MPs_>o8J^J+^=~R- z=M2<69gA2Oy3x-ufkN)yxo|9!^T!gaR=TKQ}ROSSIBh@#!05EH!$O6d2eU7TW8q~PAdhR zi*yX;DG`GPc6&5XnKYt0>Q-eR=5n+tyNnFtxwsjcFoOejz)j*E9e#yda&3^1(l9fO z%?`7ukBY4bgR6K;e%Y>9C~qh<>b|e)jYa2>+(fWq@m)Iv)`&L}XSSXoBt~oTMrr~O zKpsr=#%d7%Q^g5iZyhZs-xj%@BxoB}*+@P#gkM3W2q~zeS|1pY8`5Q%mn`w{)-u@9 zBhQLt_>W73W}0sjVQrfaBATxf%UBbk+v?jBMELPQgq78P10sZbvRne9^pvstjRzq+ z$-ORkTlm|4&8m8LwCiT817;|ci_!nw30NLlGGQg1#89;1*7!D#T;~4pH>QmqDCDF-w4JY_Wf~p)v zRNkW{2}g&esr0QOVv8n}26v@cJw(*XjS}bOxn|{V9|6;R{TW`Y84`G03*pk&*3J;^ zDa?>h%^9-wt`WlBd&BT;hQV>OYKE(XaEpDOUaf?>OGjBkB!t&aov?DS5j0>?jzuS#|o{Iax`EImMtTl-U zfiLS51E_fNCh^(p{WyNmb)XNJH^)@^`6ljFLrCcG(ee_2tHctYD)Ev)6&tcyuMn?me-zxqtQK^Ic9ThGH0q?g#bk2Mb?y3rdsJv8h5WzO` zkIRzH+0|spwZp5y4uNcwCA;?u!U{ee$wi+FEIBx{Hj<0Ner2vC>2*jOKQ$LqyMQkW z#>0p@9HYld=V7Jxjj<&2UX!ADyq|T#CU6Mbe=b{+(OWc6wZTqwA^h(QUHDOM&6-K{W3i_neT!NyYdf?f?N|VCvMmn2POeExE*rz1Dg{oYcf#ySgU~EpB?p zmTe~0j$L`NZ|LNvWs)iZp+Z9e7_&0v;Uv?xFuz(u4B}*{N;GJKaUHD)MO6NiiKVQy zRVnYTtyYy>`nlXjpSZSqxsTp-py&;b-d#p&+A7^uR{7|vc4T`xtKI)*T;?iJ*up;>^bsVnVXP3u}RVv$(Y2_8uN<|XlgJaT~8Ai6!#4ieL5XhreMog^b7}s>m|hw9G$RT z&zOWil}l3WGeW6-(GbXDDN%(uWsL%Rw&Z%w@Oao7Vg@crcft~es?DS;iI~gQbb2VK zFefZwhKe>PxK&Z;UC)?ALU_MZ8Ks6BmfZ>4mBVB|-^>Y1@UFJ5uIwt;P+<1Cj$#W3 z>L|!6_WC$vE-Pl7!zVVS)2kh{U;Cxpc8{O@vskg^pQVt0mg1|vl)LtHv;-JO1k9=d1 zcC3VJ#H@rR4QcJSW>~8hQU;>3QUS3XElba$`1Hnb(F_j~!5KSH=pM=+qY~};TC@+& z5dO*|iy!c{aHudq3_bF8R`(Thyaw4OKw1dpV+aqLBN6k|49&3{UjXhbpfMC7TUaU? zC^Q~cw+*bcRBX5L=BIxkBT)2+n1j@W9SdNou5V|r=xpe3^b?!4kM6(!SgU*w)>#>W zg1^!&V4R(BJo72XjnGyCJE$GIWzDYDff3jt(i2e|Le-!x@KJ{srVrMbD>4BGW_ZML zh$gM-_=Ln7r&V3R@zu~O;eUZv3Cypll>^N({dsVI^t6Jn5mADB^##bb9?}}Jg)z`s zq}{Ih+}hlrQQ;4_leLf-rkE3&dPH<#Zvomokitt*u{bbdhd^MdvZPFNEX_y&K=pJY z#rRD){Ms7*yBz!uo>*Ju7|RHy8^IV6bFQgCh(r-7NqVQCu<0dTB#EbFO1&f$HB1GH5l}UETK7|z!G>bxIY0O9HM3k?l}ce<^{&89{j&C^+B|d zN2@yTyY;Kgj>7Tb?W^}4t&5NaaRV0}r{;h(?i%iRl%X-=52%B=H!PBScHxc$IR4#v z(Y0%NHwY8}C&kpM>paq^`5%}?najAzqBI)BevT(>%%a>?JjtRS3M?wPj{USkl_5Fo zSv0MzeDLLfSFR^#pHjYD#wCL1SX6?L<83N#8lR)$#Q0nlr^e^0xNXc4%pKY7aZ>?OxNObJtBLkW`K`D#r0d* z-2$|vZaIp@tP!9W0FcKRYHwXIF}fOe5`58AXV9as#m9ZnI z!)PFJb{R|>qyMWCsW(@yGY2S~!i7eGgIU?$q9M)MHaZ=boL>y^5FsXc0wkDBs+AI6 z*h+B***r9Ai1|;C?as2f%H=zZ%jNK~{s?CBl@`R*;Eb-dgLlQX8VYFsP-}&8qq$Z= zye8lxpZC=Y!Gv41T9KOy^?Wp8X_{lQ`7&GWrPT|pM*xM7)l4Bb<}>mjT+bNMoWGL- zJ^J+&@X>FlfE8au0gpXQfi`|6#Z38>^xo_E@L_PwRkYbEda&P!9-IjBR1D?+ccKSp zJ^MnvRSu#wJ`$j#69AM4U1K=81cq)Ssgv7x%_KovO+Tn(SxM709~9KD+Z~v($^DrLU98DhB8e6qx}^oxHQQ2 zD^K|#%7UnegYnLQu7-U?*a-VpKqSaxkAGYC*2mU*aq(5e>?tuj&fiV>cswn0g0VS; zB13+1^}w^l;u*dUq|OO$XY3hoJzGa;8?-I#8r``5(A=>!$n_l zl4^`ol^EA?$%V#Tenlr?>L+5bV|655P|Nq43cLz>z?BoPSTbp;hHPUqs$uI1BqD4> zjyvMJ2R;amR5}uP7wS-B}OxduiX*O3e=}ZWhkP<0 zQ4FCiC*T2LSY<(fjDgMf9);LzO#_l?Gc$mYu7E|1VTnz@jK3Eg&l{l{X1VoH%>zXv zstd@dK)&lig(5?W;{^$ z5d;Dc)V(cWug8?`$}b>LH$;IiUd$D7}C{U4lz} zdc@id#;**GyfOyr&a4|JaGyqmIsE-9B{e#!0t#D{{%HY(1CnNg7VQDb8Xz8@ihv40 zE@A*7M%4xo>C@v>`&Fnek*keiHqdNTh@H~`R5T37Lx)QsGmm9(HLy-w;Duj}CIeCrzh?hjF6g1*m$S2j)tc?jYuQuow3TrCCnTHv~@+L-SbE ze*Q}0bVHb_uOh#BC})~4G1fPeGB0L%u-3Mj5+dD#R(GypQ@n1$l;!EJZAc+^!=e^= zOITo7jXWe<%J={DSUU2S@|{1-hc+Lkj}eOUoaKMsQa=6`QvKYM^4LDzZR!gO7YE0I zFC;+mcP{06lw!nAhiqWr+5y)F*3^ zJw`1Wvlpg(fR$Q6IN|ul4!T9RiTfi+@DOP>QSmwM$VD4=K1@l@rpo*Na0MPwoE7z( zM;Oea0Ky3}>}!=2;6b5_=E$EKJxWe)=L=_5{BKwC7>fF$I)5Z%8bL8zjHcRI&y!JZ zH{u9EnWic&5)_=XzvlDgFX5nplWAf4q^`Z6A3c?UGa(MsUWp;$8YtAzm+OzJ(nqmc z31{a6j(E<5`Oz<>G!arJSQA!(MQB{muE-y91tT!4UD0RQp{M2BMlaRw?VGTc&(`^w zu+E>ib>8jkyu98ze}3I{_VCWI&LO(9xz4+>Rj|&>8?5u^U*dK4qyvq0e&tuc&K@=D z>wJN~{sQalah{EJzOeDinXj|QMTT|W(P-i&SmzztbD3*V&t?TzOAO1~uR=wKmtZ5} z94f+_WI9r`M4{Q@A9Hc0{^-MtdD1Ec;nS^J>VDDAdgdA zR}_=oMW(|s*F-|XHozq=gUUiEoUT7ZrGgYTH@J*3PmwfXQu{dAmYwu_=FENZcze-Be zQlZId4-a7iReRDSQL7`*R3PCUuwALuyL~ce1Hw)|Kh$4A?p26CY6?j~{F=ef16(oB zkx#-J+@5pKE3(6st0V~@7ZpU)=d|mQVl(R1e7<;$8S)H#V8bZ}$Hy0uy5}PQ8BpjK z9u7##wE1d#XF6XzUXG3wi@ZN9N5?^>X%*Z-t$ExkP^~xwP6~Rbii?hqfx@`o+E3FK zNch_0wD;QMej*x}v*!Wz!o#;0^A$g?Je~9AH2Wz1Fc4&C6;kE3PRuHtw_zIFb1+ar-p3B8q7(&)h15M zb8;4-f*dc3ik|#tXs!nlJ@Jdt6TIMR@ZRZ3jDZWEoAfjkJzb(O#ic@&-k_(dJ?W+m zdQuc+q^A%yxtg9Xc>#K|NmzrMIb72x(pz(5$|E8HOdTl>%_7E)(=2ho?L!BU&$}8iKW72jOuxjUvw2h*BsO| zo@ZA!N(a$rfk{ekH$dJBD`;{k+Cvk9|EK9Fq1c`vmny|6amu zNT_0)YGe_1<^%}T{Nu9xLIL5z38pcjPhb&iT3;fwK*WEi>5T6I7^DBWn2N5FsCH~Y zFU)fOeJGQSjw*sb>LKEEU>+UY!lWQ-=X zzds1=fB?G`fRWKFG+d#Aw7?%39370`FA z0uBA<4?O)0IvZj;}T8%)^NDEm()_XAFHKyQL*<0m;5PWctrxc!o`%X=2lV4g)p+ZZJP0BRLES zmgeTE^6_7PEi%E!e*Lw(l7y`Ae3e-t(G!d5C_l;v$s^+WnV1q3W0*7cbRo0lFZuxB zenOmItU3+A{gD4G)cHR?;%Pz$<%gOsbOI@VDh z87*u(pwcgUXRqX#@qjOmX|)lO8Xr-OJMvu|G#>D!u7O8EfX6N?b`Xq>k4IRLH%dvt zAFp1BgD0#5J4}Y`A_>(PW@OS#=l1*pz+-W0>^bHuP}~zaG+E}z?Ule877q>+WwR^U zAJT`9a81YwjNyT7G@@sWibmfg5I6dk>4~EmvIvU(q2pF*#Ld>rbbrMsu#kU)r_34f z#OFLOttwXg)mUu=NpsmcGSbxOPo~OWtt!{^#Wp3T0?slh4I3;^Eml-61v|v4+qh(_ zET(Ng99>{SoO@iF`wdz4ZWDAQaSK|7tU0n=Hr+&!^Va+v1vxYv8@#YJ-zKs_E<7hc zS4s&&h22^;74@2jw%+G?kS0cyLC2YsgSbQKp0 z`9bXA96&LQLScBeRnp)>evXO}Frf<*3b#a|(DbEOpa+4Ua|nfq+7b$vjw8`59WTzR zbSTgDtmxo*35J-tB^aKQ^X@qk3|)DmC&qP7(4iQ(3x?+o!S89pov;`mBlu}f{w+ka zK$@DIq_C}8W?9)N_8hTwAJY^FH8v(luQ)Rk@ZR+~^4TK;fNjh54)#Q($?@p^c{1NP zI#*sunm8}d*P=^aq04#s+3TVU!sZ#H%c~t-q>!zLE`v#Q`Sm8c{CY)Glj!p54bjDi zUZcy|`FTQ@9CSHvJ#^s*q04zqbP3OLN0;*)UGkS4UCtA_oYz2?^Mo$v1$1HHjxJ|A zx}5Fka^5=Vk_%mO;fW+tiv4GVF8jm}X1JxH5_o=N0$qM10KZOsele(rkUkDVI)a@C zU&1_p(_SS6_BX>@@lJvy>|Kp);T8^yh`1F}7OSey6BuEi>*IoHN>Y;u00-ZxYwA{q z%g&Tv`S%#Fjp2*Ii}A}@7-id!`h4Wr%|<`Hl~fc?03lh;Z24PWAt~{{a@EHh*ynz$ zs*?{YNs@i{F72d@5Afb5&g&v$bj5%jhVG<+q@K9H70t>_my zGm7DHxbw9Z9?a|Xs8be!xgN2{$W5!_hI#Y33=}uU>-Q(mmcQd;YMF8Ccfz17Xe7p` z69%ue=DNgkcwCnUpuQj7|bmT*p- zB4BhSV7$i9kjMtt*fFa1x`Ze-1dLB;Ufervc>aknB}I01@(}`t$D6*U-Z5kkXCfFW zXhjDg9GS&LxoR8=0NWXveq=aO>s5V@zlJbEb6MLAfv{pf8P(E zC~|3ejkh^FiFBix3D*oK@aEWBKZ7;J*-;ZW%+X8=zlb7zJ5us=jUwpDph#;1MIb0y z@jwy8tqBw%F4<9pbP;amCmFY)$fb@VvbnB75iS{;Lm}Yux>JtTkmx5JN#+bmKDhys zT)Hljv_KL9pyWcI^O-4&KD4MM4e3&N!suaP6w@Igg8yvnQT7282o_g}MS~)Gz5yp= z3SbCKfyiYsAT2>yk*(r0veg?VL;^MY4TnvQ1zahnAjPL*1;6K5pkoPs&Z(P}zZYga znN?=hjtZDQW$!|QbtLI;v_}5}&m*VMAmY^~9L9ZDO8>TjJ;sFO5HC8%(fz(x*QZ9> z(Y4ZIT;_=z`u6_eKj#E(WtECyK5;+&uW=6CrWpiYoGDfEZ@t3Z@xSh&l->HaU|6fzF3YHj-aec_|jQ7@`}K}b)PR2@T!C_ zU9-vX1qYoce6i*^C%^7%hpCB;?e!E$W@w%!McAR38#j36b|8zz`V{m*tan6_g2c_r znB1E5!A2B|7x`Jr5`}3=FRlXpff*=B=ZXrYjXDG?hsF2fp5n z2rd7n@(%)_D;3IHR{W7(W4Y*r%uMLtdZ73)K1byFLvM_*G_neuDE}}tCILIpc1z(G zK*wUvP-$@)b|>xLal+Ff3k{~FUBsoGV_~qXCOpN2O>u--gee=_AY)XRvUmtnrigi$ zX3Nj|C^@)pX<9zJ{*=2+S#JYQy0Pn&ydBhFE>ntA{-Zc$HFl!>qqS4+b23RrP{E6X z?9&MA`Uro?C8)uqrpdF~)LLa&k1YZina@_6 zFP48r5Qrku=X|tcn|)UMbL&sNrG7PH5{_%?$ZQDt25fjQaCFYOpYG&8Ola&RmEn4euEvf{jO{wFc@q z>OYB4obq7%KM4((87>G*0KSiE8W`G#XFUw#{a@`Vwfl+Fq8YHS>UicPq2|#614g zhe6Xmk3X%!&peQ2{kOZ-o{sDbt2;!RSwFyyBMB)w9fX4!*-Ta1uQxh|- zAx0|xS)5s4(SCnc&8wP*f>y$axWY)|@C-sAiecUQ$%D`pF`-xnBSv5;S=6;+%Oped zvErtGJ~4tnUpoRjcd32)9?k*?Z(C7_kkX6wR3zK6yK1aMY^p*Q>j}PzA=RfGSK%+b zLx7_r5jdbj?ZcI#(C6COufA(8Lafq=f~ol1CJkdx+%Yq~X( zMn3f2FhIJn)$SkxZbke+>>~(|$<>ZM!3FtQr@m%%@D$O}vY~ijWfYyh`OADl10 z6ne(sktc4lkimtgk|F*w*2HM>mvv1MN0cGFN2NO@>8bT-X-~b!=yZA3+sV}9v!NXX zO>^rZPpQY?GW>6`CO!VQx@Mrnv-4a@ztcR&>L^VB*$zVp0v?V)+CVQh)dRArv?9xD z1c?P9iM^zqpKUnjNj_)Gzw$l_=O;65YEkxlL=q(E8pEYh-0a~c+9I~ z6u3OOQvxeXaJ!1j6L_~7o+3p4IzTpO=yDzYb?CE7W+{OVGgaP9s>6yrXYWmj-_Hx{ zo|_o6iQj0vDTfLXz=v+{VvQ2Rrz#VLE{YGJJtNHdn=opv2b{LRy zsA(YsvVZ3zZjHz}G~k?E6Op#Fr-k@#TLQK%5OI&lU{N^|V;$)}RJP*R!z&;7zeFMY631s<-!zgoP`AUEh*)#|4Xl6EzRW@W1i%i5KNl~ydvRE8l zq9_tOhdE~|>Gc@+!}Kk(=Z2;$h@gwsvF*v60f?dfcN^Mhg%6IxF-Nc6d_Oo}J8wRK zdSU{BMz(^1XDi@>N)40Cbag;uAPnckzh^7p;G_c829gXpxi13+hxDb6aUNg(CeGW- z6vDB3B`x3-y^Ew_HU<9 z3M-0N=)~_JKU?V<2l>+8>;?*amp4+Jvp2hm;#^$`J;+G~e2OBM;5^7VS#mo?VV4dJ za!&klkYtdbZ}+Va^6h)c6~K4IY=VUb`2~B)6+n66UUCIc?$}GN0LqkOuiKyvX|gD!j@nFTppVa`#?x1yH_vZ+2ScYxa^Wfb!D4oLQm#hP~tppxkSB zpA7Onb{EPZzf5>|+D@CXT-Gw3qP8s3mT518 zWA=KnNqzE%s>d%$+YDOY#d__^OK!v`gM3^+iA_ht=vw*{@*dwk2RfS?eZO4HbdA0Zxa1qOc>ra>=KohIf zF3k0{UL~cPvHIA6-FN{C&Rs2BY6+M4as&}pr-jkR4e=EBBViTyJ()pCVV*M>u6!Wx zB2U}ZIQ%o0t?DgOHt|EjUF zWJbfy0B=Xi$%p^MAPmaDJyydNMGo7Y;2I%`PR(eHd!dF|O+E#q-`>W(u49b`5@Vy-JQVQ4^I#$)^sY-a>!^+qrqcUuUV zf-mpi4D6MDP97+Yg66sw@{9`?t*yl5c-9i@ z8ql|ed{==En+VWDnsph$z~zN(NXS+Ye4)v6Al4^&RkZ9bt22qYkXc9OEL93LA3BK57!o|SFQEa*u3Yg52;K7Ky z`@fu=-l^ z!~;Hdj_3|>adpN{nl@-!+7N0MAG8mb826zGB*|mkzfOB&CQ|f_Zu&$v@POR=cA01a zR}wA@&OX?<3I-JMKU)IKnJ^fM1c?U0m#g!Htr)hcn=t9PXY|3wHgy!yaTdP{a4?KI zqYlvB*xnl*4AcRP3+uTys+X!oW03G9#;FrG8X)16{V{Q{;{n}pu3iu|1u?L8%*S>s zD_a+-rKD7tNjbpFKl4;zHJ~PAoyj5TvYzPZ91Y-I*+}L$iE5T`P1^v(Z5M2{aXlW^ zmm@gg05naKzD__L2suVyPje0g<~le+%R-x;vTNFXwr-xX%+0VkR?~k#ivI#vU$K3_ zRa}4gg86O6r1@l)9ir*v8|MZsQa>}__C(x zvZQZ2QLcPhQ+!!dd|6X`SyOyjQ|MFKdebztj{TTcaty zqnmcgfKz5z7NWax+i|pW^ApSBnxJ@6^f^04F^yH4LRS+~EXuU2m@tg}=--5y=+>Qy z#@bb5YARerLFnQ~@z1r1UCa&=35s!}8C``o+*Sa6M!|Khepst#`M|UCy}#Ha#;W}B z5B9kxwp9ivckApNdL`G3i2hUz}{ALdyJ*vH}0v`nKjzot)K+VBio9U2Ykq7f+#YK7A-6- z@^H%O*tqRg_Bp+TpR-8p=!#xvT5u7@ony{Wlgr7Hcfzlu@Psowufu}H6IxL0rY~H_ zX5^NSADJ(O6M!?TPPeypSM+uZWbpg96q>MJAOp@6S(r%lXTdoh$bgkufeaY;6x2!> zqXHR-$0m@WLVa_z|5hvQtj6Q56&|lg6h;lYNTDW*Gp7a_ItjQg=VbQkl*>0AQ{Ezv zPIIhp8+KLk9AH#EGvOJ& z3`pe2$#F~Z1bJ!>4E=*y8wBNc7$PN;bZ?^X-D3m_=++F#fRAr}%iXu_O?0Wct^JSdW^hYR3S5*PD_DuC|JSbC`M2#g?z*m;&c?-u&Yy?!4k)H z!oaIAcHn1pt#>U1VVag?{0&6iHYTT)OGZDtb(}@^#$61Vag-7;D!sp6;)?Wae{R&O zppF!d0;Pi2$CeZ3tk`yp=y~fFp%j*In6!OLLb!XXM!&aZs-tq*bp zqIWBJIDP9aCyVsh&IIT8fji!Mp!YVaQsb@z!pM8xe*ft^@3^a&xsC{7oJsVplNT*8 z5;ZVAc1Ew78CS2({EG*ntMD4Jh|eb{iMKLZckqUaK_*b z#|&$bIpkSrhdea`Q3}o4fdds{s}#DQhGHv(NU;s_>F(ry8ngWG zfQtCG%<)W$JtW(;0!1?WXWxaD&{b1Nmc-H_8$kJoHQWZ zLf1xjcucMxJ>di|{vjr#vni9ZjgFZ=tZ3&=t+4aA<%VkK3lEY;=O%&+c(t!%E!pT} zCI%=(iW=}F(Rx!zB3lT-v7oUM9R2J0$SM5FBmE$7A~EbrbZ}?lResI;D(== z^KC?g(TPhW9qKSYu(X($Ok&)xUnn3@;s{8nkx{gRphU!iZQhCi$Ph<@)WzktA#%|I z;HTraMz4jAG_m45^8JZXn>@K#5{04gu-4KcyUM<=^P0fg`W5)K+fjAt7=T?kkiYG2 z7oRjbf+Rp%<+}(!g^Z3qFmCPa+%IR+ZSkqSZ6n8iT4_4IkzFu z3K+BzV?+71KMC5NgSHm-1X>8C0xh4#&mboQt=#QkuAJCGpvB7hX|dRYr6S|wl3cSErmt85A(|+p z9-8REho&g(w&>BS+4z#i_*P7ORuT*Qea$et23y5(2yJzc43X1^Nd$ch9RlXUQV)ya zX@s=oFztW*&n^ zOjTqjwV+L=8F4#!!9i_^2I;nGaGy@f5B<<9(BQi9(iZM|>$-kORlke{ucv8nI=9E7 z)U2)6;O_r5LV%^gJ^CKI2G>)L2g_r8K9~Mvu;40lzxGE)Mgj#mO#72KQjCZDZ zCk(;vB`KxXb<05<07G0~ulp9(ljT^Y*9kREuUjb=f@TMz0(0%4CJRR8ZXeVmJn^-l zd%tQ#4&DxE$pQ%ie&r^O`nyu@)NxeqR#qu@msM-NEWL~6+g2pJ&4-+I)&^zD9bDr0 z7?}hlGRaZ+BX*#d&;WB+?({mtV=G|zxu1CGRmvT|nsUbzQ|>?$Ye6TeajFL9fwUM79rF)D`@D4 ze_wYsvm55nAOg+~3RYE@G;g|$i-7C`=Y15!gNYFk33w&NEch8kAw&m__Wlh0k~)&% zA*4ji1>f9hq8VTs#_V$Fey9M&(}m&;myq1_oPR_UhdJw{KAedVdX~0m4Hlu-5*D>o zpb8+>z6w`G6 z0U__5Bw}2;0W#!Ui#7^E-mYJM<6RRTQ+@1XSFQ-v4$)y!wPFoAz7MY8s%x^0Q*nHcM5Y4wM$D|C{kzK=K9E$4*@u4^a$=XhvVs1>z zXF$oWjDX9@g<_z!{MiGaO!3}cpjjN&=bdmbAMHeL&%Y=td(Cd~zi;V)p^jNW2f|^DcAu z;~jO}2h@p%KO1MY-^TlZy6dKqxK|@2tc=q-z-kW@>MkeWi~yV*E@qZkGoF%%7yj{l zdNSvU3j_UdX|jSBGp+)v?oGD7V;z@VGKn2z>s76A)7(TY7h1CNZO@!jo@KRy;8NET zR+B2laqtt8Otf1Gw z>4nDq6Cs}ZHK|OHZAxWA$_nOt1ao#%H@TX8ZLU5{<1zRP1qmTsY8r+kvOZ&NO%X0VQdgyX$RtTXj2_ zCaJ{~51KlrFGEy~Q#b3G;`E!(9v)8E1LvJ>B3!-|vmTO5%WQa;5@)A@6VeUaqOfS0|aaAh?1;0PGW?N);s-hzVJ^0EdTQD+=MSWBWB??Nzl*^HQDRfRX?;&3JHOgG$cZKi-DoY=^gG}%gxJ=BT<DNxcyjfA={LcVm4dA! z+yqzgnVP+Ho#U*xb@**=Q?_-4o7`-i!GwqW^qBS^DDy?P4sF4bD71wD7i}Ru@v_;t zg@7&EK=>Znq~8;#1F}71`r(#18$qn&_rCQS8%VhMZK9Un{MIXf`0=H3+1d&>zfIKg zE8bws5T3T8EfMZ{r`nDEUbnRT%&#t$^HwX|?pC)1rb&!pKS5_$DpEs3>=`EAETRX{ zKB{|Q+kP3G_7mU#Ua?N6cHQK43> z<=2^|<>|LBl>fVT8Llu3jfsJ4C#`Zv^h>|0jBSwpD%@07;SpDv1{A3Fs|qX9uwSKs zgoS6nil_J4nEi^gDci5kU1y--ZZg}i&RggAT!L8GukzKu)8RV%)dpq+?N@F@V30R# zyjOWqVWDX5Rea6y{F)8ng&f4qy-H1JuVPcKT*R0$!d}I% zwpZ~a>{UFO*sG?H;0vjR;3u4NxSlEVPKEt}Psh6DR6B?mNMJyPod^N1ldY4skPuYTeL) zFuc5ZVF5bdnm9ztWaQKz@V5f zUY1=+!2!B!C=i9Oi)M$9x!K{qUfNsj)^2z}1!;r|3h9g#(itff>p>x%kwP9&3h9g# zXQ1s>As-k|?_^7FN#7F>1q&E=(-NJVx4V2Q!RW@G;=m@dL%q0xCoMnnwnfN(bP4ND zT9xlK_SAD7%%}`AN8>#chsEhE2qQQ0VIK^J^}604&&m!mhJ3Ke0bT0PhSN@o~C z>%bkCwNB(JkjAaJ0b%9YCtqn+G2z<5fos1?g`^YxmI^83 zyt%t>;A<}$ z_C_iK%`GTy{yv+zD{Wn_unfvtt+}_r*AQ*eb|Qyf*CTSe6`B}J6XTJWjKYWbu^x45Ui=<^y1qLN; zL^cT-4wJ9SAsm@ZU-qst8Gdj&?XR9kgUiT>$vh~q&Z$sDnFJ9x;H{3cz(#XMGY;vf zg0~hPV`$h3lfG|p&7@Ipsy~K|&`dhp?j%`@^NOuK78oVf@-qxbT~X|b}zLxMZT zsad%Zn0T#ncwlaEBaFW&dTBZ_cyXB*<25Q~k}cbZid4r+cVwTUza8WNDbnM}q*oQ) znHF~N5q;4M=(Zi!L#)L%A1V$a-MQp~IYB?xaku=H50ad$Rlf6Y@WqUF0fWkunP*|qU z?b)>DYZ5Izs0}~+2#5K&ohOSHpN`^OB1W#coyP&7xlRIrnLF$Qu4BZp0VU-pezafy z6c-Tv#1@#i01(&*LS*JS=LCQfg4K-Q&i3R}Hlx>m=K2X)zpx6Jh0*8kBC2AlWcQPK zWMAYemAIL>l&Ka>?xcli@VY0yAADSBEm`C}Hmt}TD|e1mC5 z1aNZ_Y=&!~v)YyvR~`4G8;IKFV}IN&$B5xsbaL4kL;|+p!e)@>AaA%w3gL7eb5J{q z*VV+U(Id*4HAqGm5N)|=M`I8MAOm5FaE)2tk){R#UAi%-hj5)Wj6qo?4rs}mnB^C` z6AxJ?V50D;iuc5p&>+CC zZcmWbA+kY?6z4!y(;m1wNNCL-$nG&r@0XPvRLnkh@Z)LV|n!qMALA~ zLD)1pCYV0`hbtO=**}B>42I1uvM9qy7v;=RyxKM?F2sEwcQX$ z+~}U{>?i}kvI2@Lb`S9l=b*hL%0~o0h??yl4m^p_{yXOp&BG>`HAQoLKPxOp07D{b zmnzj+O*lM}OCFOfo0)G3gyA?NC_ngx?&$I;hCBMwzi(&i{e5g(aT5bo+unfsDxdku z3$e{7iNu$$S6quS&0>&g{%DXEg>-2E+%t2L<;NiKy)s z*&Z=qt%U6i2fn7YCT>}~zcyvIVb;CY9Xy0IE5G!aUb(6Kxp(91Vdq0za{kJir9rl4 z9S!WQ^8fkd5@4@Z)%Iz!tJtr|YUPjp8#Z0o1S)o;l@0f4O@b?0M@Z$m?KlCELX%-7 zM}O3#tssoBj%iiFB#Bb-&XpKpzekA{B$TM#Vm}tSny{L>a4xP97p@V#h#aLiP#>fp zASZ}15k)H=>%qn_M`t*1Zm*5|ZY(pBs2C2#r09AEoTe5}o6Foe#0HZK>@|76z%rvz zXqkijV8oo353ukJagx@CZihzulrHiSd#ZNDUlOj7VqPZdnWMja#6-HC-rg88KFC zJDKQA`aa@_a+{SFAI|pXe|VZ6pKWDn!cNGzb|q}Wrx;@R#y-;cmc)Mi_ij0JYka~c zK6fju5;)z0!9?sCt09&k^qLa$vF+O6H?ZkQnzZe^4elal!ZCuwxn+xiQ&-3T*&Nx^6LG1$ZQUpg4g|f|VQb zgU3GiwvnIugQ7GGQ6G1X`JNG%PQEmHVAiQBiAy2dmV}g7nq5A)JW*7lszn2aa=&x* z=j&CKyz^C-Z5|Hf4Iw3^ES2qiv_iOSJD*?4mMfV`Lig}3-mA5z?%#SA4Te`O~ zLzmQTfjV+a@onQ{K??4$s3-|s)ZF0?{bdFIU4-s@mLBf$gFq{Uf$(h~Or78MkGJUC zmGFCt!#Yl+_(sc2b_P;@ePrk<5D9w%ivX*mUoBqQKLW|PR8z?ugkhxRj&hlttAx4; zQ9We95BEU*d2haz5P}}WdW(_|0hBqp98qol$_$;ihItgR>Hvj*d3W z3cNAW=S6JhW-Jes7Gf_6yZP`^c@C!VZZw!%(-Fr+!s4)s+UlK__BB|7zX+3%)A=0X z>X!8xg1!{DQXL+##$p|}rKja5KDDh}vRW*@WId~8L800$?UtK#B);Le;RbVpa4goS zIyW)Vwj0gU^5?(*9B$LH#zP?G>c;O*iFBzOck6lGc(9#MH13x2wETf*&az0@ZZwyN zT2ficdsFj*;c69CxcwW|5Whh%c~@&*h2>O>pT!kS8&Nr6-!elDL8Mcqo4Ygo2Hj}u zo*1PYxcm4Gx-p`x{vE(h`VFQ^4O1wN2Spr`jGaA8#5!L0^CbhXcHA(dEc4+`Cs)Q@toKO&iI zS&7C*5mu&RL zkHMNYyf$Z={A*fB(GzUc9U3`zmaz#8nNB7fhsk4p4FC+Etc;Weiawe16*L4rzS0@F0ZGf?~qYR%L&h?lipEV(>Oe^Sr4x@1UL26kn(}_(IU)c zVwf9@1!U@(nyNuWHI>1XxeW<572632=!z<18Wt&|?;R=nO9iWRR8$p5spalDsIZr~ zw#x8y^ca0LGHegcOl_$`P-e9w2fBSvDvHzw2_C8gF)SVs)^#5O%NVDm2JSJ^y{NJ( zAFfen=A<)0oe=T_DY9mhw8?{tGBxFzG6^9%sR;Z?lGe#8f)o}(KA^D?Gs`B1qv`a} zpFm%2ZiX#pNW#4+#T8PK;)-?Z1S*D)nrs5nTrI7ykxL&@N{s+qngt*nnd5Bls#@?X z;*>%~BQ2e8mAVX9k-nG_ApxAajDc3q6P{;gz0(}A=P;0bpz-v5Jc!J?n%ib}tk6x50vb2bYBbcL z10CNL#f0HtV+z&lAvT`K;=~{V=)!O+1=jiza*1P3AeSB(a#eMmt_!Hrb^vZG7sE7K z9A0gB&s`Gw4t1U&1j1QOwx2orLKz439P02;?ILyp?0%b@MIheKw0x<}j-Xmt9t~Gg zfeNl5kXIu>kG53=EK)-ft=tJH%R5x0vCzWnxZy^51_TaEtuGp4Xo2Zz%ZNMXVm>d7 zpI6Wf4+Gca_)tlxB7Exd`-=2VRhhm#xl1K=PI#T0 zDERf1|M-1ECcC>gM4wER9xRUX&y<(T5Gt-424yEB^52HVpb!o{W;|96@#0ji){;Ac zSu1<3YTrZ1QGp;oI0Wptqk5xmQJ5?))sa-*g*Q)kCihVW2{%#70g`jp5MFla}FM-*2 zS1|kb0JGx`GBBSQ-D8#7>2|kx#!FZxYPJ3Ud^n}N$c}-=zfOZp!s8E6+J?g>(BeAD zsBl9AxK}kB(8HtaTcd~DjPyKOLq)QYS_Qhohz0>*3kok-xIKu`c9TWE`W4z7yVHC0 zj*K?Pt1I~MKM4M7c&F1tX0yo^Hrkj;I7?-}`P{@PF?Vu$N+ilBrcub(ti{$SSrfDP z#iGt2ru zc5w?X31TIUY53qJHAdEuU7oy(FQE4h3ebDIelnJjUXfZ5`sK+bj>6k(&3?NLMmaG= z^V@wiRrZ(i+0VRoSCZ%iYc4ZV1SQMyO1(Jx#cuh^>Kz-DUMZC#tb&NJhJYEdy}bPV zXI`rb4$7zf!`z|OZJV!*!#f~Tz^(G0Kih(f!*ctl3Sy3|5iqfFX$LF2C^q_p0hPNr z%EhBHZe=D!pBxEWg(DP2iHR-%eG+)FCMDbSQF# zXjf{X{;JZ#L2v9NN65T6L{8d3NU0~wM{ysUst`VKO+X=rq1sr%Ef<3PN=P+mWJbg= zj9k$1LnN%wR?}KlS9i>Ah$+!_#mu4 zS;(a9B0wWJGl%2YC;)uOA|jue?+pt1L?)IBiMAnm8+zeK*N~P$7VRu%e%%2|Ri+-Q zaP5|4yuoT255bK*1?79+-GZ-No^Xt&oVq+g>Mwuf-L0L8!r%A|gVF}CgB27+8ALj} z$gq7@7I8-LeXQ0+tO~n}iDgzx;H>W3W;N`-ZNo5gA8CQMVa;goXYPV7K%s?oGN{OK zgSpmb?Ke2PX-gdt6(ZQcIr;_vB%;VPhXYArA$5u&NW7*Ou5z))J-WHP*hd>ftRs_j z3$RF!g}k3q>x#w@NwHI6{|UiXQ{}P&Au|i`&$ZMp80KaB+a$NyFm zv@XrW_FF}W-}glxP3KAZ!@o=Rx?uAa{ILYG?x)>S6O|*_-~(_vuLz#`KtH|<6O^1XV7yA*=0LwMedRa{4NgbsE%%nYO_P%8F$$o`(y4=8Zv^VFVGr7zX=c9m3a&F!|)LIz_4?? z4(&HW!X3eDm_ppt+}s=QQq(5K^}xHd3*F6M4q)w}m!ENZPvjPQ;N7jS zBuVm>VFC$Bx!Vj9YR$w2l+>4^$|yWlUTRZ8SaU9Lc6n*+I7|ixa785s?=~?QCzoCP zOp80R{a-T!__nIq!^Qw~7G4I*$Vg$V>oXImD-YIJ1=xmxBG4(3!_bDfj9ywb|9)q( ztBuJtf-xD}sIeucg83=|I`9qng@_}B?>^Ny2{~2n5yZG$c#i`r`u@z7{P&e|$y~{n zU1>X36tXMrpx_9kGB2IA0!~6++* zCYiA8470#OOhVSHG8z72D{I}6zDZ9IpqCS1^svM*SlNQ}sE1N?N zs}j4<%2u$HP_-SaZi`h{)g^|{EHBjU#JcBKbyrm;FK?{ejg>E|E3c~Et!wvU?N>Ky zuc}V&qS$y})mNHTSJl-vE$bPho+<=7tV>xr#nT+%ku2$(^)dn^KuM3m7hu^e2TQ^7 z@$o=1{AYlY$f5g36#C zL7{psL1t0OT6wxC^$()d=dDWXjP|3?Tz5^d8bfe}67+$7M;IjW(Gy=3!dIrq>?|-6 zEg?S%#R)bF7;{VJHc5y8OM zqP453AA~~4YkD*zag6wfBidD@pJ-Xb(Lt$%f>gKoQb|aHFPN^8kOz5zgl9-%zv#m6fkOZG}KVvX45e;g8zH_d%_de&|q6#F87Ga-z&faUUHP`&L=KQX?{PPYe zZY_`zDIojwmsvO;Zxm4ipJ@HXzrSwDVze}%{&IN>rWTP+tiOtoN=zjFc3H+jMWJ^_ z%!j$F+37B9AUC#K5zn~OmctRq+#M+G(#1j_6_%GAx+$3gy>mgq5 za1_X&EI~LXSTARxh;89Axl7t6P;N87368?W@V}yf-~{N;cFq0qT>&8hf$Ijn0C(ImQBpS zTt7+ee~E++q4F$(haKR6i+MM+7Axbwz@HQnK_>$!sy;xG7wg^Q#9MjWRu-VyWq@y^ zZ_&f7Wt4&R9ueD@%&M#;l#z>&9wtRe-R7ks!W17;&|HMI6(5Hw;vJRKqfB)3ND@QI zVUek-ID&V=Cf*}#fJ?axcOmDulJE`TP%G8Jk;x2O&~)~k?3bayqKkFxXMgD`}cA;*W69xd4 zOXAUAl<7qj$n)V2^rD>G_s83RFy78P@q8HL>+}=MC4tfKdb5`Pu^*3o_yG4y*@~Hj z6lNp>hr8o8WAIy*$wY~qhd`@NXW6M;QszRcFLy=A3g35vxniS5qbBq)_YU&%x3m-r zjfaYNir*a5rgeW^<5nplxU{cTp}HE~pvbN66){5+4AJix5bcbq;^XnInDH$x9*3Vd z@z4q`Exx%>cV%mKKl%xYf+`m83Q;JHabZlB;}3L>ofPUj0Xhd?CB+{jqE6Si*z-AR zr#wV8hS$!46wmw4b!JXG*U`g^T+AsW3XKJb?$lQErk;Lne%1}0ccnjJ!*2Fae5Hly zQ{HGP(NX16qFkgzxd_w8MWw#EY{CF>QB^7~B^rav`AGWAHZXmQ`fJD1P?w!3SS}YS zvMCVSye_-I^l|5|$vr>7bKoY$6NtS1ZSWZSdl3PO#bP5~)2CT5B)Qf-vjJvE& zKlZofZy7DBOxcz@M^kfiY2Nyu_KYmvS^duMX4R~{4>-jAPkAJ|O&%k-Tidzwlj^Q- zp5hjE(!Xl0{hF*B?)c`b6drwAimiI+7hb{+OjvYIk&ieUhX+onk#ezIEFJ;A?(-fi z8&{8n2TcdehMn?bPXst%{lsJAPx!|7u_wZo_xgz^#-9k=*xS8QvcvSab7J-6_!GWy zee4|pi&wwnsqrU#JNnoYgNb(>{Y58P7L)%h{zNF;)_x*XZ>yhJ8GphNbz{8>JI3oL9vFYZF?C~41V~-|1aj8S@KpCc zbt>svd8#d4$JdfB$JkA&ktkgOWf$#c^+tD8Dwv(Y}Ot(7vvCFRE3QXYgyqTUUDvFF>I`o>m(?H|o~Pbotiov9$Wg-{;ka zTD!A4soRg>_Sum3uiFoK|40%UjQdkkac&`$2&qo|C8!QnLsZ?u*p2GmHCuOlK;3#> zU(O#B<;)OO_t^)IV#tAQY$?73kWs^sVZ`U?SHzf(E1~he+sUIG1Gi@8X(v7hiqXG1CLwZNV~PRk!R;e@Ka?iM(>Zddfy* zw%I48A)06Y>tTh|f0QN-M^D(;h$KDT!?&xF?kp<@W<4iaY>ZLxwX#SbqL_mP5(DP>$Q z??L{aVtUQ#MiM4abJVedF- z0}7B2)Eo}hb&?1eXgak$c_O7L>a89c%`scjsq!;gtYJN&Uy|*I>z+K61`VjPcGi=J ztS1+7Bj-lM9(YP0F5aEegY`)jlKRLHFXCR5om_0*DS`7`K66xjx2Qrczv-+ZSs$PW zS{NgCpiM7>_VQ`FUy{#akjGKsP{9*JQI zqBn^!714@f+i1vFY!K1U>7jdEfQK%?Ja8HBN_S`IlBs(}FW#NKbM&I!*$=}~LrL{i z`J&zLx^ZdCw`a1%|CfjBQn?$am-)lz)^Q;R%ktYZz!Ap&_w7GPzdb}z@Kby~UioRM zEVq=4yR+*@i~ojRBt!mu(GN-KqcXGWmljb4blYBVkQ>u?s`E+tVtuxUrj*cFEt`o6 z(OoUsRI1)!tjr~gi;%51eV`ma9DH}MLD+z;z^tPUG85!8VQFM4nP?_L0-5bmGi;BF zGeL32$Bg!hnjtDrqynocdWNPE!;C0{gW7a40<67IE4!8vaLuCJZRABu1S1JBo_has z*Jhks6J9I`wz_>=IvPrIG5n!MCDz~wPi#N!Nis$wt^fpRY(g1u4}Z6 zb^JDs5M;9r<|I7J&@jzDFvh2@Sms$m($1N}?;hNi(b7nJu$yvxaZ-5J_k_xQGMdIuRR>MkB5zM^WzOtmO;pNK-``h$n6LTL$H=|fBB!0cSkMTTc8 z;lkKb?L)jy1Ufw0d}s+NUlO?g97fMK^M}fF%lSiOn#fMmll6QJiNUq-3W8YWdN!ZX zkAc~K?+bCGsgkCqr1a=8R!vey$^_QXaOk~*_kDg^kJdi2rq?!CgM(mxoZ680Uq3Om8&5s8KBzdY>(`i8 z^1e)~m-!H0d}3nPo$))b(0gj&UO_&%b7&z`bt@2F5rl0&rExx0!P zAbsEnK$NxN8OY8D7{h$f2@xF>aYV-MCfu>5_yT!xL4$1=TWYy7qB^I3G z&9Iu;VK7i?LWkK1Lw_%9wRd5wy*OHg!8IzxQMrQ0HwN7AmPQoHHc2Rsq zASUM4Jmm0azd8=t;{`kd{kITzD zsZ}k@yt{R^W!_zU(xMI$Of2(u@B_=dyKJ$$)t7lCj{&2RVl91jvbFI{ULA%Pa>sPDZw z&B`xKpwno%7Ka~b-Xw4A2jW=ce4F)D2E4soVj;nOt;LCe$y>Aib*rzjR_VEf>^0t| z)*5c!h;3@~3N+NFlh`(1y)VTSHEF(PLBGZd4d59HL{pD6;jp*sTu%=1wc|s4t#>EJ z;?<3}G_SL^SQMRRfGbIRgexHn0;`V=G5$sNNwP_eT#Ielvb|%=_FFRwS+H4RoSbxt zObCg1aaP;SZMZ7fQaJ)U{SC?;;-(MOr@CYBjM#u!D{k{w`;d2*V{6Auhqv` z=Dwcm2S51|l_f`#D^4A{AbWH5Xh?%hycgB`QF~AE@C=`Pl4G%LJv0$MR8#`|Tnzf? zNFxU;&H_cX$))%QN`NzBX86Y2Yv-)qOv)ukfLM)5qeQa!ty|nqCJsQdokUF)0Eoe$8Z0$To&-DHL7XZR!jiVBS3qt^Kk zR#l4EEGPdhb+8$KY{SagrY}j@6P8Oiw2B>V%U5VF%lSQ?*5r7=dnTa0ww63lzc!G= zpReD;IYqq3G!&3OP@my8_Mow0qb@Wm+M#5Kf)ZX4i`~wk#b}3sA4n0Af7YH+S4&oS z1<-B`@Iu>}(g8 zEjl@3MnK5}T<|)t;=*yNS98HjxQ5GF(jznF+1l+kQ*PAWx0#Z2$ln|Xz_va{F#PJ( z*#h867`=^ddc2kUmyugavPSe=b{5ZCsYw z1Ic9v>VeBn!i8KeBI(cN5>|Lzc9HGpaw*w!E-~ChMrc3D&Q`Iq$ zXugM(7w6Tjar%X33h=mC5Al}p*ZU!mY14FX95v@8q&xfbw&ND#V@$28iAj zs}FeK61Z=NXrI6b1U0WPnoHw1|1>j@$8T?di}6$UDHu`DPjnB|Dx4!1z)LbPI?v%l z4X|JHtmu(FRzYas;{BBEb<)RBO!apt3NgZlS!N@#3BxBIDiS!{H=2=`5QxHvFHTl+ z2C|Y13+K}s&(L63UGbkb#TxlVSk+bk(3P&x3x*V7iZ9?;u@$QCsTicSN^INc`Ji1d zP9D(p0SsDvOQ@C4kcPz{*5@DETkv3rvFH_QFt7fZxZ4tRQgj8erOx5wpAu98gZ;>- zlvD%BR(;*R;ud`}ccFTc4|jjHl!B-p#|@ zhE&i)zPoceR^6W$d&NRU?ltYKy(R}MbShAa)o*-!s=EJ+g8NUcn@VBxm?581eCKLP4CwYg?P{eJv}Fs@(!_nqqV>|@iwKLj2ifs`IDKL(xq`K9Ly27(@K^Z(z<#jfsWWpgBN5EAY|oW8!cX#OW?>f z=co*%=99TAF_=E@@-9|apOi#`US7#7WOa%Di>(tZ4m*$xH!5JIgP(YxZFr-_D9Efm z?8p9Q2u2mz|9-FPrs*q| z*49MbuhSd;`JXylljH)MsQ>y;o$-m{z$rMYnJDzmsOuAja zfTs&{gc2_KOaf+;JU>%6=jno1vTDBA`_rB;2gU$_GaofzVxnr(6!~lTFCP=bx4w-d}bs2)Top2KbT=k5A$ z3Vc~vMfW$EvO%0B zWc18txQoA0*XIzfT`md-?;t1p1$D=nvbIKm`i>L+(7UBtt42uk=aT-KUoj z2bp0`HWCBWL~?E_Gb+dW0mN3mJJQN#uftXP*0u&xtY39eHsWHiHlchGK1w-t2)~u} zz#+V5%RX?&0@UX##hK|rdA2>KazmOH#-zN(x=Kf{ve!b>Cd~c3rh#MktZ1(0WVBc= z9HgDaW*X*W#6^>U!?Twu=$D(dX&fRgKv(S~VeM#C7bF`;-H9DHyl#Zo@QmkGPN(h~ z4=cIP_wm_{JZ86vT=bfe)cx;U-i1}CXJDG%cetfbTUH)u0bB^21aG(dA7SDP&PF=@ zGz>%|K#$u9pyEw`bsBusnkS z#Qe^J3^t4eq`X>$B^k@ip@Z;0jGz(|C^ZVNYvL4LTbiMJWRO`fqojQinM z`=dXChxJ?6{+t=HsuTs00GB^Zz`>qP5=wJ}jd$Ng} z$_?_8H|#^zV|k;lmu2~YY@MJ=>`p)&6`)7S4XQg(+fk!AzL7l}#W(U;AaE`wNO{Q$ zvvJvMU+-fxjEw(zcq^S1S>euRE2mv{qq71zIuJKI_`wv67j%Y3>$zo zRfw&8^q~6t6X|yOYqk*hZzodu1TrrJZJ7UzuKf6Cy8hM2|Lmivqk4tF7^viu3;rbX zj$~Dm{i=+>tl^tD#8VvAQE8*;SToTa*Lv*<3u%IAEBVv(0u>W7>;53lm>kUQ^Z{z+ zz5?V0+Ae~n7dc*M5oKEdGTrvrQ69U`KhqSnNq%2{buZ=t^En8I(_`sctsCtz`*E$u z{o!SLpm&*rBTW$9FL7jb-`$)5cApkgC-upQ6A5@9@j*@WL-1fEisMij5G76n0JUMg z>Xy2-r+zcEW;nLDT$nu_SLKdN&5O@cqAb=0G@mafznB$`tGbstfwF;hC~jAGA^=sH zuYU2cnh7w~G1oBJbz81YLe41;gUxLPcCuUj_7^+FYv@&g!Zr&yn9A|31TWbe@k6m#R=q|W=m=$% z8{q{%bCmei(|Xkhp?{C-)4USq5o#<>ha*|h6>KEz7e5-SQF(*B&I?c_RaW8M7H^_c z0gP&$vi^$=mXphC>D(2(_FroR_BIn()}B;^;PwpL&mSd;2YL0mG`?GGf{SbdmYxaw zH`#2Z=A_t(DM;VR-=QI?d-g-g#Wt|csSe2{`pO%%>>XJ!X0V#a!X!8>cB=SLmr({# zY%@w|;Z>-*luezEnAPU@S;N1G7N>lH160Ec0z9?hI9}josQd*1f7<*my5Ul30VI8~ z);^0|3L|c_IHAu-;(oUW>KK2Wlr}Ktlis{te{sD{T*9yS^NbXY@lX2d#JEQuy`-46 zs#K`Bhw^pR3G)P;xfGKUbCHQqN!958JFry-R9FnuBkl)5S&}<{_+n@n0IoK~g=oXr zh@bCiuX!==$kpw+!I)ggZqw35r^3o!n9Yr2;|+VwCdMGu(3d%IkhbJ>{6G^osyaOY z+ht9`ciKQqd-@V)QTWvlf1Rz$kf`Y@eNxs-XBS>+$3HUS;N)QB z-W-9pwMOTyU&(MGxIUS20K}3CPO%=Fz;$B|bhHi7DXU1%ff($hj4CSB@v`;Tc}{&3 zJDp&n9&tdlnb=qG9v$OwFm%oqTkG`dV>t^#uE()_`^?K^fvY_^t!N922=;cX3w4## ze%%EJ`}z_v)b6q_tn)4q4~ zEz(%GTD)R2gzgv1M;BzE78R z>Rl$Ys<9m91uETT({(o-XmYRsClvpVh{3{$kjNtB(HT~FQ0)HOWPt+|0^9QK260X7 zuET+a`k+{B@jGdR12@KMdvfU>9))jrnNz7TmBnV(V9r~H5U$R*0SAC^p_O+bHNvjI zasz65vqfCdo(}shc-u_z7!^h%_SYVXQ9gAOEye~)Wr)b{6J}=8qOFh$D093tfbJnI9S zjpu6kWU`??u%4+n1p(HXhU-*lIJWiID@13YPSkK+PS?;D>5geQ3wK3J>$Q`*Ch!5r z3YvP_EwO}0)*gpO;&N$e`fXR!3!R%uz@Y?D*de_W)!Vu=Rd3j~MKrF|o6d@h>P?P1 zn~J61%)5!5wTetcC+DQCrQZTPvj%6gcDo&4#uVIbpfxOxKd#{nkr*^wKqcB_t*zl4 zRfw*Q8ZICU?UAVA)KM%vsc~sI_Vr7{aZFvK;S6a=6Q)Ehtwy za}_}?E(fRUuq6N|==+#T#$~ee&#~H~T|xY#w4A*?wpR&K-Mbu#Kgs zwo0-l-Nvd@8zn8oEc)7Bs-Z78IVJ`D1tSoNl@meDazPI&j-fcqz4?+pmBu_*rG z9I32f@gL*}29U3GoYpSLc=rl9j!nc8;+l$7qyaI~DpKJtlR5KBqr^cJQkBf@aH*@L zURyH-!E*-o8}}eTQRQgw?AlV-JEhb)Shyv10VZr~=344#*t-*ycDqxk%kXWtEL!?A zIzt8mF8;fS`;EJQ@cvxC{&4&xMfF%%%RP$r+Bc?DTI+{fO{amB76~v$NFayW{}`u$ zP7s6T=dG#-&y~BmMYAC571x#y8)iz2f9OWgaD$?s93^h3#r!n0IyDQPaD;F|DkdxL zT8J3o2(33i4TrBOLE}#ul($NPKSVID`dqj8pQ`}rt#`m--glvB;05%~rCMY2&C!&v zEab$OIQkZITE{)>bc2Fgif4(obT8n07mCj*2D!qjM_GAx$OSjlcQo>hdt7S&dwgTS z=Y}_aIJ}Xfu6kqO6MtF!i_qS0=dK|c(H$OnUn?3fTun`m`|Uot|C98kD%T4OA8}l8 z+bfR9V0KJQH;6K0)_AyEg!uyfihLly_%DNB9Ff2E?r^Ado?_$)Wu+n0CgCo_zLR?T zS`@W=wJx%It*)9$Te%+gpQya8WPP%f0{-Gh70l7;4^cuKL|hf-F-QC`b!l7cm=Z`B z@jBra0WZcz6zj?uogLw>PwF(0K;^?}ADo^pDqzeni@a43N`IPCVGaSM#FCn0mO0ZS zuynv0uP@U!*0=`z22}8R!euQm@S2PlUY3NHC9Ri51gpb`=~kkbMf`A$Hw{2vy)1%! z8!$NW%uc|YPCMQd20-6wYrbQN=RspTRS86>1qSEoE9L^$=u^~ak;#epJ zr`h5m5Z<(ardzq-l`nGvXu5+7DZ!mw2-IK11%&A(T$m{`yh4~>$^~fYelFw^4{#xc zc@-BBrdM+TVR{XhbA&#f)0No!#0r{*JgOGDXlqsXUe6WL-6?Mf6BHi>9&c_Pu-gtgtOrD z6ZcYVG8Cvq>xjm=0@8{^p8VQ2F=kTT|LK?b2i7z$2rNlLj5e#z0je25p29M#44)1n z!`e&fvH}Tr=EX{OZWSsw)sTB+kq2%+Zg0qW638lNf+oYI)VTyMSc^+i=Ms||NGSGD z=}g!IG_zxv3n753WcbI+V1PT57~m&b7+|zQvSjY8Fu?pJ3@{gAfVpUS$3+-mF2VqF zDdn*X0}R7C2AGR5z+84v1(1s{z+8j@<{}I*7h!<$y;KH_zYZv%C-CorE?0vH=5h_I z6E3gESLX5tylF0P6c|XHLe;@%=9I9t15P|W@%)DrYp3HD?0?!!qUP9%)*GF5oV*#uc2}4k{;QvJQC3Q_Fy_TmiQwb zUl`3R7~uP~K|z=tn4+g$)>_4%)TQ+5m8vW_J8&gL7QoZ^S#zW~l?)gR`jwI_KuNGW{ytKt-EPVC*C`+E)5mvwA)@#&xZ;h8hYdS3@Tyza4_+E2B+|QSi>5< z8n@@qAL>*e!B9!0{D?(7qFz}~%+Mv__dyrw@9zPe0$-#?3iWR?Pv?j%IN9MGS zO{}H3-JuC7*49C`=?76}*$FYonn4N^8JWf8M7Q1z!kCxo@P1oo(DEAz>RO z*Go_~D zduH{Z4J6J8YH$tp;9p5|Gf;~qh=n1nKSRj3%(xW%(>nSP;LUJ;P=0w|9=Gv<8Yl%;~v0DNR<)Ey)%k)!Q+!9kK! zH<~v$PIWG^&$~)FM6G0Jzd8mqM~)c#lQ-7dc3w}~Hal$`sxd^M|6FV?y!fedIVnNYz5`b#N$zXy}qHMThl&~5J|j9q-5YXL2(@S z3$mxgA$a3oH%>t`F36tLM;QDoT&w$T#`$|9)ltS9M!gl*zGx}=#-LU(14O*2|I2+( z5QB>JadeHjkQ+O0T;kjxMSeJ|x$Tp9qU@XnY# z!J>kS4*Zq?fuA{o#}Dsy1ftfmp5~X*9Q~pGZMbLmy8%huuH}EwE@ed;85aNEhP&_$>5Uq3eqB2dR9yC;*6~4h^!6SCt*U@D7QZ^ko8vdIolM zQrgnKb@`a4dV4R3QE_ZOHsOak;iE{%A4Vf9P++D*ra~H80um*{0mftKZQNzX!JpZ zwOW%F7m@a;ZvFg4RaPV|o@%rlD}|uPLGN>-sIlPdWl9n?_WlOcipfz`xmW#7fYZ4q|ou(a{L-ECro5)(h zKI|@O&ojJ%UkY>R0KPHx%p3TTk{y}}!0W8|Eu=nVnaR8PtdySEQRj;|gJ_}Qx|?A; zwwEYo@o$-n0PH2EF2=-ur{*j7qOsM=FMC#EP45UPAkI<01);__k;Y`5)3|tAoa23M zVNo%A9bU`uxd`?QO2GyDU^yMdy5!i3?70gzT9wCVVJzl`vuaGV38VN7LPbX;6RKhN z^1r+|B9X`90-|TzDD#woldA-7*IrUB9lzEga}o;h1{g_*9J+C4i=Ab$EyA1#mE=lZA*^6VF$%g4q%Z=!SGA`R2)Pmme37ch!vtx+x`)388wVU zrEwLDxABqyleU-G9b#+^gabQ*!)Zr~69cHoiQfyei4&peS- zkMCQmTiI#wMnptCzHji#MgFq*J|!1?lfA|F2Oi%a==`l6++y+lfyeg;9^Yr9zT*4Z z7n*@#Qkee$7vlR@aUt4&H5bDC*Ki@s|9UQj`QN~WF#j84F!>3O@4vgpiA$#T3B`vv z^Wq^JsMM4o9!rUVAK)JTQXrYj%69 zO_R>;5SZ?6PXJ=CXek9NqEy&$$p+!%fW>JIYgeX+s=0$@4)aL`5J6MTFq%a{q{Ytz zpQ_~Jv!bI|fV#>}we?BM{Ne;TsyG!~wm9P;YKAV|;s?Qkq&0YME{8w>0G6iLnI*`z z8m+tEtGjP$YwJGe&^O&DkigUZ(|4bq`T(+K0MeGH8Nm888i4Cah-~#(ILHcWVEW+^ zLVTNfugwLptY2qh&lls;SJS#ISJDAy~Q2Zz1s|*e4?*d1EPs5#5+Oa>skoxgf-CT{$_}Y0RA9Mqj)`E?Pn~q z2|mMRKOEYks!HAB8237_*9FiN{~T#2+tl`?FH~1F8yI!piRg(7yoy*luOx4 zlMuzzz1xirXUUWPOcy5%0EP3L9Tr1Wq*p#bamjUCzuL3gkf zJ~-Z-vQt6U1a8%OG5WOxTa-2Kn#OaREFHF%#>-vf*&$$P2-kR6N6UM=#zQ+xw~}Dd6`RDN74lE$GvL6eD6nq8BE; zZqHk_pB~c`lq|rzgRe-5PV*Z*u}-jg;0oPD^F1Vj_gi_X`Jx#v3f>$7F`FpO@wEqOQ0Om>nVZ> zTEr`oVKpDV zp#%GLed_aihQ)oF5q1uVMP?;9#vke=5BT`iS>}wBiK!oHV1pd(01@$v` z{>TrN_E1NCuq?Q$cu+8a|H>WV5VbSlkJ;1mM_`A(ml;PbwD|+Q(B=x_8R?gU_821a*bn6+t&kuzXJV zwKrlNmyk9?--_61G%b)}QmUxnRy|k5T!LD{U3;`Wzk*a%9<&*dJbT3v{_ih}P8;8Gq-da@~A8jGFwAx&Pi0<)o z(L$Sx5L;a2@pF;K&qc@Ha*@Z+MIL`w9{)!DwF6g#%T7`STy$b17oFJ1MJG0Lxs+5s zm;C^@xCpVuMTjjfLTqsnVvEZeEFZ$Ib--DVp|`>DF%L3doL0arR^2P{K%+;C%VRM3 zlAjQIUwvcoSu0jMK%kl*B)1eNsq4NJ-kUi$*x%hJG+{D>PI@egKt=0JQH64 z08?0l(*I7B{;3wFpIC1QO9d`Z*yqv43lq_K?qEY@T<$AvYXh&vl7k zv%dj)VW*7~3>zWXtZ~8)Xm0R_WzBy3HgN)Ou>WHdp^s&6f+PHJaN~%caRl)Zxo5euYVP@gUHJ9fTdm752Vprw zE~mQ`q=UI7I#;e+|h4MIp<4o-6 z>I&cu_MGFn9d_eXnPpOkkic)c3RiuGL%R=hlvUZkXLot?F$6S2U8{)$in0)eJD}u1 zeFKInr+_p0h`_ABI*TtPHdFxF9EJ_{R<^Z@T)pgx?HHlw>w`pGvPf-G4z zjOJ!?w_;Y!zm=II3F7+^0Yq7N)n_h%qt;0vOnvhX)vOQ?zT>Szu4(1WJc8xb8hfEp zdi;HHvY7!9GNT7$hk79C%oov=SMb)*b@8KE77B4}yTW>Ul9gBWurf4(A`X}0Uf@zc zyDq||YA_I_eON_Y^6kkZsS1^e*gN3Q2NDuAI6T|(!tze~p5Q+*T3I~?fz@NT973ZA zfrS^=hbI_j}q_@v3k#wIFb(&cK6X+&r6bHa@ItMXha>A#a!_EPC;@B0?9)F2NVbj z4GtKWIu)++9aEx7!O`xSZ2;AD`R%4CA{M~OQI`3dwQv-l*ig@q%mo3SI6;or(ggL2 zpM7yeYk5}RJ2Jz)lFcaAK{Z(kme=VPDS<+pnH51NW7voMxs{#ghrXCeUSNEo0jk7= zu+wrxQ#nJpa#fQiRe`0{VZ4#}e5?nG0W5xQT@~O|we?}%jEN3Z%h%d0Y)`JjgsZKu z{Kf@V4J5A~(We7}MI8eL6qGt#0+TZ-O>5O1U$`hdbV8pFKxzpSWw;)UrobUaGsO>} zIs>|BRsvWPQ4fply%H$cmMPnw{1u7M71&-S?f3#D8pQa{pf9iUGXEgeMTxaS*-Yb@V%+AjaP58U8t{S#@K2Km1OR zh&dt8<}w$z*watT?-y^43H=BMFhmaKs)uzyz48*N&sR)S_fl~Itrd3p5ZIJrI$yuA zheg7r4MODf`2wZ3Y)6Bc!?)9K-N7aJeRN`pAg$~R4{E;YUQ^WzCj(nZj`Z5r74bS2=nPp@07;IoLeV%I8QAvnX^yFhX=_-&>m)7_SZCe zXM3V-IFBp$s#j3042%9cJ3mc<1AQm1W12f5z6tp8jj-Plnc-4&zoDirN^i`puo zqI)kLrF-bK^=p@>lP*~zfw7e3ax!|}Gbt}tAyO2@QOb1qOUu-2v8tU*^q>8vlX&qym*DQ!FVPF@vFQ;#M1N%Ve9d4eMBd{aNV|Z4Kt9Lq+9%!*B*=p>D3vX#Ej!y6zp$7SK6C|i2z|pwz`c!EPsR4l>7ifzmj7@M-o(Gh{{b6npJLs6AC5C-4gNM z%7u)<4ldv#c5<!Ui_hb0b^VjcI1>^Y}Z$4(XD<{(1&K+_jSQBJgNWkj(VG^j|BK&)_ zO6&W3hGPKVSpj_KiIdOY1a6<}T#fy0{WO}L#Qv^xrQm@&-ZgtCD_nrEq}af~;#PS; z1f^tAKXd@g96^HTZ=x|E!HQ7Mo)Qu~8zI5O&G4sY4HkTmbq-ONYweiQf{vGSKcsUV zD>6c5ai>v|LLCHfXt@nAp5=^OUI;MxMqUmq4m*P9IDZPb@QeU+Sh=MTHZL`4Y0@%M4ob2uRz{3q|-lU{e?LW ziJ_3hKo31GQirv07j955;DPEpxOyp_euyAn7JCg7UKUE^xDC}4`8~VOd6$NR^*VCT z?(WT3tJID87t@~aukQa2*1Grz4v_nh9wFl<<_5k~(QeC)%E=?NsPm>LLy zsHzk;qeB8E8WD}445?pyG_^05;Cz`K({4B%oJwv#kXRw>i5DR|N#K)$H^v(p@(92| zQXNhAN+Vc{OG@nYfge#M+D>MwrVf?qb=-^gp1O{T-TJnN(KtV;lrCm{DP2xB>*55E zid3N~(B}`%VhWV?rWB}wTgs^A&R05j_*=8t>q<}|A;WeNg=X(Xhx*C`w(wxu{6g>+Za_tn$4sb4ashL!d>}j{K44Y|-Br>V@3$*|7JuedN3myw@C*JyJG%8u?-c#s+jLma3E@xAP*J4N5UWA`He3!jdlpo9v;Yc zmBM;hWGO_G$f-^TC(~|l<}?RLiie`*M~LZAb=iUm+w!FN8?=%%kxxLE*V1uQxIrOl ztz3*NqDfALpXqJPn{GpfAfoiTI5pOP5lMY?@QLw$oo=AI zV+-H|ZXLv3tspJ@6aNAPBZBzoHT~8vxf&=q>jPxgf&eCLyh9QjoZnhf@ZONTyu6M- zm=GiivT4zf*1_wv;kTr=DC~18nXIz+w!mocT$s8fOdMBD99^+~wk8g+hbAuh*P1w( zX03@!m=T{ggUC%xTjJAZRJ3Um;=!g3KLRL`mTjx1%|pI?@6#62G8EKlOp9dKke$#6#{ z^uV`2pUY6iOn^_Qm!bJ&FE`msMIRgvT#TTMOJ2WgQRQ!OEZE4+)C9;5Sy@=c+wych0+0&zgT`=Tj=Z;MNKB& zw~xnJ(M~jI-xTCh%EG3Bq-c;q@cYwOWVu|BL- zcOhP;`;$}X{#qVGoypIZ^QWgCR^Zg>0T>85A zj+#W)r82-#`Fw%W>~TwQrht`RoE*hbmg->HT^(;_7d#J{p?ve=;rdv;X87BaTT+|c zNxn6$X6qBkZPkj+)EafQ^E4-NfT!Y7QKbOoX{q=eF_O))Ukqs%i&rzh`?+9>@zvZ* znzfFq0$K<{tx0fPRG*KvgZ8MHH6LR>sQ%BOCWpi@-eF@E73rn?ben;9&^`33U_~eq zoCNh>MH%g!XTTZT^8Jd}$8eAzCI}$YXC>rV$#b`7MYFL#&JpP->{|SbJpw**CQW_f z4I1b>%G`Ci3Zliy6$^#m$;BANr5$23UY9^XS@D3|&vCA{O0;UD#aND7t@)xxtj5<8 zgzk?vuyoPgWe5HwzjtLcI$?{4)0f#NQb|grs?D+ihkpY$k;D&bK^^}F$nwH zxgio|Y{vzWnV}hW9x477EU7dP5tVc0ePupjQa1I&qNqnAft*PTA)!oI{Jn1!|Ghlz zP4;n9(?=6hB*pruOTDoKD<`jsX_tk>B2Bh3)_IRGqXo_N!OF1sMu}usin8#cgX*)r zXngz#-$`Vl4>?RY`)F9xT-1}v>h*yl=r~qziAr*CFo!Q(T}-qvu`QlF&t2kF`wF6K z6s~?dM$oPo4GaVgH3JbW3mSE);ul;Sj~G>^?pbLXQX?~eDq%qGefh5p6c!~A-PIfLo_p-sg3fYt@p{g{v90(1pfTLB?RvUbHqf%Y zavi9$4bV`TQmn<=*Ve6D0 zQl=J+Ppf0`AtVG5axcg91ke}{fm!Hgb6`e5AE7Z2xYk(Mvtm7nRB(SGv6O9a7UHH; zRA5Nib|X3KjBUD{yaGijFNIiJ@CgV%x$P!fdv4rm;;r$M+o9>=Ky8HT7qv{qbK-6@ z6?huX-ImP3-IJ-XAf#fE)0m3L@*a!)R-Sd=H3c{c9`%d|u~fpR)M41qzLHV@9{IVEX=lliIJyzfX z)u8NGU;eeU`mNs(*4DuY)Y}=tpG_H!X04$WkJ1>OxCZZ|PO*l>TCWAtOOjz-@x@KH z>s>`CniWY`f&dzl@S(dQkRlLV~5$4&g6BR{t z8u}mtk*)O3e5+~X2GBHP+dG_gP7_7&X*RME$}J;60hXUh%$lao?pEoq}*~Sn%RF7oeyhNkeh=g z<6}|GxpLM@5{e~?NHK`DuRWMa$^=UpDHEy@TFo0v(|e>_D$ba9y7f>Vv(gIV#6pB7oIL;`63k8K(=)Be{0e2XbqDRP*vao3UH0Qn+3hdZ^$m!|^u@7zl6N5l4?BOrsf>s9; zUQ+hMEAY)!j;YjE9!h93n%nCtc=c$c7E}kKuD{#6z4{QrRr&`6>(&k*p!1HkzyC68VAWl*F2|vHzrr`jbR>b2L=aH#F^se z2m-PCg6NLjZTLIIzpIb`QBKnA!UVlmeK>r^q)OGW*%6a$;$)SC7HU1?kVrNtK~U}z zd(@c7z=qF}Jwh?87JK|ZqIal;^*pi%W+t+SpN2ce9yOdYjOJAA;ULO3dwf;ht&x;^ z+}T5hhQKBVnfN(p6jrr!&&qX*FwB;-D{@k2H;(`r-HoY(w(H7SG-0&J+%v3BWMBZc z<#(mUucH1`Gj(mN{+FNRN$Jb?{3#!#RZ)#noU-LooG8q3lOB+st|G*x3nV_BuPQNan14 z0B{6W+AEQ67G;=r0F!maHWBaxOv=n;{lEpmi_X$!fSX1Oliu}4pGO^F^GG(Dm#4kp zo;DL?wKVO>na4Ou2$z=fg7^a*k}i83J#K3jG||}<##=b0&%F?QZi*9Ags1kohq2I> z%4{u+xzr0n4AEqH_KoyAAcoE=&pL%mJrzp~;!=B=Ey{2Yad=EkVbH>7v++?e`6<7( zVhRPcOv|mQm<-Gq6jLZ~WjFupD5h{Ia9c42d}NKFe~yYNmb7Z@);~$oIp$Gzt8EBi zarb^}yEV1iZjrBS*)8_#nB8JKtK=mrCNE1hrkFx?s(Lh0F&W&oWw-o9-?n1@9OySF5;s*k*zrXYT49`xvYJ z=i=)5nZB!By%)D<2sP$s=C)nEGTwo`oOJc9cAi|lnZVr;MU*nHyqn13m~euZ+=Gj* z-jX+NJRbo`vqlm*jJPiq)>eOa_flAVqOH+*TccK6_1wkhMPjO!Mb&u$&hw@? zcq;e^Q09EQWmx>5a$nAG-4NTecvKg$M+-mCnwe? zFR?d(4aIK=>ywwn_dKKD;CgA?lYFT))@Jedu7ky2+HSBu`#L=O0u?Lv*xyX`ed=O! zp68(YKJT2>@V1*!0t!eej1bqaep+mXoosZ??QHp1o%^lvd2=i*%F4vq!LXE=+vdN< zI(xSHff)H%IZ_>bMzYWsSaG4>tn4d4%avWQztF8-Qa$wTjhIYTBYl~-9m`b)UqUNk zR@hqP+hMKP`|ti~PBqe($J^CWevJpRrqvgoR+Fkmx*YFm$z8h|sjCq@SH$DgOT(2v zeU3{*J8TsyPb>|$d$0T`E_&|AtG4w;I8+rV&1!wY^3$UQ^;WPD2?^{?VA}Rs%DAR= zV$JVqwlefRSbhxxWx;Yu)+6i?kmq)O9fhgvR8}Gc(;9v09@7g0I!;`kgt6I zuuFPQ|Mt+5HU0u>QQi{-h<#B(iEwqAuJE$i8> zw_erLT+bDLuj2T2(i^;ZX}w2?St$pJKh!U0=hdJJ=lM0i^JL&< z@1LE|7uExpj19&GH(M*J_lJNb>#*K^O|8!ll6VAmXHhxfQp`2?$liSf;DZ+NWB1}} z;0NMMgKWtcI@8de^@FfH@42sqL8QcT%y7S;wK>^*vW%B6xEhyJ*5-`q4$c!+boG{V zSEu+|NH!}zOf235-du!a<02#*7a`fW=&&X(Lb7pDijRwsY+Qt7<8lTGzXr+nSONr9 zNH&WAE2p)IR+M4IImveEAL9=ksp+{qPjt4b7|N@4lz^<+k?u1~wT`J;85x-1sD-31MwEPSuN7L8;8o2C?Q42I}N404@^43Wf|_@iP{nB$rLzbKuUN zmPEjjyyX}GZ{QkMfeJmkpT>KJ%;Gf&uAqh6lgr&I0L)9#odWh;&SeMqu?qXKM5krp zwXJ~WE!)L5G={r>Gw-$SaI{5(f*ehA2S4DTp^q7u{i#85hZe`Z<>W`CIusS>yQ^%; z?2}U&Wvt8tl{cShdfH_kG(C_0dCvk&nvw_qyf;22Y@%#U37KC_$!R7;B~)C)XfJk{ z5a1)iluS;D&BOvcJvJd8CdaX`2?+_==XFBjWQgR=bOch{WEkx!1sx`Xh@j?X^<;#p zu;~$t!4%4yyT&HQ?i!sPyf*==j3M_%a9}^r2a7u%`C4B5NnLcXE`SM_&DdUl<{aOi z+A$&*@E^kM%CO;kd<`E9cT$9}tk%vfBC5^N7C5h-NK9-)%$#b5Qx50g29JDGY7KbN zPlB3_a3#Abzyz2$<`4Cc0w3Wa9YOn8UZP)79RuV9blL|Y_?>*8Dj!Up^wyDE@{`kj}g{C{csf5z|z&5x7C`pk{@S&SULRK&Lo{U^@?n zUoA);#~#AtM)~m?14`lN#Zir&2Nf-7Zqn=u4;99qJII$lXyp8L9c8@tncj4cSI__) z!r>MvhMb86IMr#8iw2sjng(t<2XzcQ7Y)K0Fyk};4ycobg+&kz;vnk!0HQ&Ndy58v z7l2wz>o6=_mr+jP$-o&F47ch_Q!y59b8a27ansM8=<}1(=b`$N3P9ZXbky70ANx!7 zUmzqr0cI+LvRkId5r>^jJ30fa5@adF4A*CLzS*Ic7*dTa)k+O8gocbR~|dQq?N}Z`+d}sg*crAXDN$!UZLM zl__zppiGHFOs$}REM&fym|8bd<7RnK$UG#IMIWT5`%!raolq-}tAZwft!~i{bGos! zaRNyX*rN1&lh}|du!)Hy_253MqT;(7;n@(_Up;q$XEX6EV(C1~Uw(db4?GFL9pcpx`XA?2%Atf4>Wx<;lY1neu8UVg3_r*#-9f3b zze-qdJ|)`tWUzXx1us+Qlcd>vhG@L? z#~$}t4;vR$@uR0Dzf1sFtEk*Ow9Y~v{lrU(?`XC|gnhgzdF2+T*oocY(}btQ6cAk( z8|0A<_>0Z6rnFH>ZFSW_T_ItvuB=!x#IfQeV|LBM%urJ-5Q5BY7T7g{1zP8NAgjg+ z(JuNPdZt*M5aQ0weojPU#!C{U3|__#j3Dp}Gy<}P5)^~LEw%J}Tp8C<&4q|^JryA| z3=A+tgZU+BjTpi07T?|&PZp>balPs>?JA9D2E;H;PmVLrpr#Dzm9?K>4G->S)$jc3 zRQ0jEdhbtDCWs)-R1EI|2b=P)ixGtBM9-ootsN9d?LBxDH?98j$F|VIH@a1b;|7G+ zpz@fiWK~l^Nr@_iQ|%QoSlSBOfM%R>q^b5N#q~<7lsXk}HTUFMMQfJvGJfFrB`R#W zlc2ECShyE9*eL1)L|*Y=4tG()ngS|<22ZU44gPqR=FbcJPaDE({ztjv zi}_Q=7~7_=9bvqjkl&HRCSH+Yf#GDoK*q%2$itnTs&XSx7?X{S<9-7M5&%@`_@|`0TvU9zF2Xfh{ON^7L#O(wyyjjnsfP0Y%9@q;@n8ToIudoSvNadhm3-(IV z4&D^6<{51g0Y(h1x;zYz=tuhnONMJ*-ELhf0ma~==r2hKJa)%ZuhPFXfrb)U_uyFQ!O?%E z9vo%U#n$YWi5^rZy9bM}Zdpq8 zPatN{z!y<{ue{GN;~uWAXb?czVH?3z0H5X1AS|F8M}?umrJeC@IOxS=jE8l?KCJwt zVD+ny5=~SB^?t5`ery!V0@g%*us~*l>-|KK9(9b;l5axJchqIjgTE{&~Ms}M9 zD#QFs&3Cu>cZMPh(|cS&+?HX5gB*mI7T=`kTnxOB#A&R(=op21YxZ=$woN#yT~*Jg zf%gDPFasfeavEj-bUvZ%kGk8_^!^EYC?=w>5bZ1Z2seRXiF~VS7ixxbG4hW1+oTos zZ2_U+wl5gRtp)!s(XaB#Xl7HW+k>;zRJQ#F#tp<4%{&`?!%N>Fd0_GL4Y#vqrW4S`(Z;SKodw@t+AM z@DiA5@xD2jAOv|1U)sdXMb5}+f*J1P`KIBd`rLk#h5@PHcq$DI3{Eu~FY!Ilx?7%9AN##6hA5&Sd~2@a`D)CSvfP}& z3xPSgaz)lV2N9)NTo8$g)rFV3`%E^7@Rg=1c+g{Sb)Ph;etBg}wbAYhj%jn3lf8s9 zo$T)YCFm}j%&-Zixu3DPBbHS6`~!g&Yc+Ud&0VzW;`l781_(!|IAtbpUM1j(-WD;k zxFEbrl??yuOVXK10c;&lNuW*wsCXS}nTukJT!dKRqSzuAAy&97E)g1b#0nQ7R=5bU z!ev?en$AdK8{i6ORL)8d2}D5X-9G6=NXqb&>SDplxhdJMxZImDD^5BEUu}D`anxPW z%4#{;D9i|xs!WR(hov~bm67ZyD5-oN$~i)f2WWKo00=mC~L*G669 zAr#*@rskZ>W=2!G&D=&6L{MX_wozjQF^xwe9z~_!vI3XE8M$#W80st1O|MQjY0%q~ zb1zm^4DBDGH63$p!=x}Z<+~ZC_LXRuQV7p>n57R>_Ep?F2>LA!w21=pYipnugwauh zW5X;t#l+6CWVo%tx8Odd^e0>|@(nk1a&H)NLlQ ziFS>T%~ZwK)swh9If<^4<0LjAB~cP~VCtw?y_1U7JHzKo`Ftr8`LN+gnaLmZnf%c> zlltK~Pvtc}+^g&1y8e$-8PxwOp0%me875;>dCl5W>GmQ{Wv~^^R5D~-;0vhV?}L8> z1AasJe3;LN8T>KZ{>0#aCiT((Od5x;pPuvZkE=Oee~blD;AJ;ekpN?;lSy7?VKYI2 z;~Xlx7B{Bs!cx*li};#oqE=m zZ;4xP`f;7Uo2?ROyOjpeBlc*1IYl)lRa;hemE#~>Q*F8ysRHdAl|oL7D6r06rK`G8 zhiWCH!qhHro$YLdn_A)hlMS=*7G{*^W8qB?DPd?#V_KjHddYhDB5F{%QKw4)j<1b2 z-H!#R$*%|KF3s;(lE+$5^*s`h5xG1FrXO=gfa)#L>;th6f~HPooN_9QM|%LKI6gqz z>-f_{t%M{PsO~4V2>t`2-<38#c?RdO8wkpc(aXh{m5@=#3qsoJ5kl}lAOxReI*bs6 zg874LC%QC*a7RNXpa*azxEW3V)t2|)+Oqzu>JA zESIt(JY{p7$2nI1g;bdENL-Zl68Emb2yv*)!s!@+=fn8~iB^3HY=;C&;Cy=orRunM)s zhPhFkqg8Pp8fBHP2k($tL!%JHVmqo9<2ZA+Pc;!r;SQ9jZkVcm^Rxf)v&ogSz>LK^ zKR#kTbC}~S$+`VU{ld&kwh$2hdfAl})Cy0qw1<`8C{!?ksOBh>;zpv@;wTTUxoTOC(X|FX zs$d|s1V`VPlUmkk^+h?H9hu}y}_=8x3Jxpoi?*g~dB=axg zPyHJ)5g({EDVY|u3wxqXX9qn>s*f;4=dI&^_v7Cr5IFy;{RHAm6l_GYixSu$&Jf6Ui7g+(x)@HZj>k#Yb`d`HnEpved#K3*M|>5MDg@e* z8HG7W)hn}5cK4cd;96PH4=W6X^lVQyjD{;LMZ6{X{v7@$S7OqN0c+<-cw;tHuB|Yb z^|t3vXmp0>xx^Lkpz>fKH<}#_U^ui6J*m}~e1AP8@v1$4H3os9W8?XITq!z@A+XeN zF2f8K%&8L?$pcRCZgJyuj5*bXUU&jstAJ3wn~Cb>`ZHHz3`sU1TeZm~IfR7(6ZU;W z59A;;ETjhfJLQCnf@!9Ma+q1)PblG4g|Ct%*rJtnxS^E?nM5m9ehGmldK%;m)f0xt zo(3&cr+70eD6vI)C)=gH4l_7j4#CW&o;sIl!mwXLp@{JTiB%ny8uTyu>K8uqM}OJ9 z7KTca@Od<>HXSL4Zwr5NvV^g=@oVQY*jvQW1D&-WFcUW3nsDFEyZWuh$6f;CNhpXt z=2d>V3zB45|43L4&E;8|$Wm@kvZ^>-W;*sle*uhc{gv=TXjs3)Rm#w1)$Ebx2dFcD zM6)L4^)?|nJ^D4M99hUl5;06b6uRrL>4st4AqvytE9png{dSIV@ZT&ew!dOqN`(J` zNel^fT0zhsPXR_x78~LF$5Nz`>!axsH4uRz7$fpbheNePG+vH=Bg+V{JXV!N=SZbJ zxVG_Eri#%i_Q#w8av-JwlwDsk3W=!~t{YSlZ`f1tGvEyoEFX`f2L*Bn(7{IJg4ZK~ zG2>eUb?L9H1?nwk|GmF9Fb(esJ0fjWa!e*Z zOsP-I~3I`z~egYv<=2^wY z`#L&kIlg6wB3;9u?`6H!RmRIE)NBeikrh&;i;E&%Toh{NqCG@-5u2#q#$RU;cn%@R z^OEYMaIA`BNoE;nfF{DPB{MG9y0;>g$L36pnYjlZ%vMd6PExE}vHvL(0G2CLY!MS% zs4Xk5&E)Te%1LNZml{?NY9c^+o-yH zOsS=8p*>AZfZlj0nABewb|T#o0z*xD#6*%=S^E|FnZ3fJMGRQ42*IM(D_|M~>p7Pq zHMyxvks@<|+RMR(P5z}cq4>YLtG6q*D#?l)L@9{`Y~%Kwi$sFU0$QC*2YYmyBupa< zKmbe>YzG7dqZ;^Hwu^Zp3|oEu;}`SZQDVog>t#AU2}{@I#AyziW`1`aLYlJqVZ>+W z5{88`my1bdas_&2bG77m_Hx#*{^dj6>UTNV_{2H5Biom7pKE?bnFdaDmd~r7|E&df z&DR_sevSE_tV&?y9kdZ*qU7>ZPbI*WE%>#wu=iA*TGdm0zgAC!AY@jH>yNVP8(%*M zH&cCWvPK+$?5(0(2$AbtCJs%0n96K~JT!QWt+3_e+$^^sDek~w@yLGd~`+8$;xC>r{$uPjJTYE29E_jq!D#I)wIkm zo|3FQMQ+Fu2+8eN65pGrP%_z$}4mv@U62w-_08p9^Pc5Z@4O8vg>sQ~=S<1dt z6bI_H7B98e+9%L0nk|b~7{#I!V!zsJ^>1M6P`7Qn#jreL5v2>{npjv^%W5OC8*W>81YWwE!zYI7~W8samH^?owyvB#H3G zO+IV20W>EmC zw=IM$VO$8AOhknk6_TWVlc>C=q6_E&F&Dw?GSI$biwMN1DZLb*uMqase@Sqc3Q=cjwbv(is7 z<69c!rBd~VJX#!>J$Hv3lHvVaoSehuci!LIo&dzZI8nWZ-+X^l9N?GVUl#`u<-`MW zjIF{5B$cMK!-H~no@g|is4(KWp9qsdOIPO*2MXGff9FBFCl+@IA$*g~UU zf2zApB{R?B^WTTh!hQVJQ!Kr`;6xaJdG=ud!4a}1&HHFa!5^vz;OYp4 z*Vl{@$AE8BJ6}cyhB+}fxRcQL=dWmgejc|MtRB^Cc+)?=cfm$=0iXXaeBQz5zj*IL z7*)w%pQ``Th(A>S6=5xwqYWbt8QL=%v1dy);@2?ZkS%SG7=prOg&RsubC71^tHXlmgD(g$yt$Nx1ZAyYZ&aAs6Yx^ zsC}aQj7NSbf`oqPq*_?~OD_j8UoKBr6%%Fcv-Eu^`^r|^4Awi9kimT=+ zqRT|csBX{-o=@Tl0wv0v$VAFKV_wSMWmF=7VLZu%>TY(Zx$Jae+9@OLq}ZRU6x&fq zjuv6*MJ=Y&uW;{M`C8mx3lAw!=Hgy&Yms ziSRZMS@lVg4&_N0l-eX2VyX@QLAsgXThPnEFpRX(>dD&qH_oDTBfQ^Utlt`~<;?r+ zpr5v=!~4^sj*yw0PF6LOi@M>jq^nQZ8Q*{En}RV2aMvjh)=9&`I>mdajuu&Ce1YnN zc($8uztLMA6KVOsYuIX54w5lA-IttPHnG;^vZyGS>%i04@em=A(@YlGmRqC2K7^pz zOqL^+N>f|-F{IRqlS|mm7lbL~3`kQqQmK}RpcspI1Q5Q#(FL!^KA}FkOVhqrhh2N? zVlgYp@B$TPjPXJDEFSq3n`~8JJCAHkVrtBu(7&B=JU&hdH~#s5`1Dlu>A%h@a@p&s z%h;^QY+TXj6Ftz1PLB|5i4@7!_3G`AQF=@bSoZ7%riVK!EqVlRg_QfL=@Ej8WAxbK z^aw6X99K;bw_b#0@$H+;Mq~yvZO_?`+4>XZFI7MwLQXQ^Q8~$WM(Bi-Txb?eO!(i{Iuc+&wDB zpCCXa+Y|44+bAK6Io=Lmk;(L?A*d?eX^ZDrNPjj#+vWeO>YQAGS`;=aJ;bryiWYx|IWgIepF=BZV+oT_)6@DLPr&x9&=3p%>)0?L^g%*V zxDf|o{}6sXjdLIIY8hjtkyky+gM_YC#e&Yz4ykgrqjhSl9W@)RvLl z#F&~GZ*$1pH}a^_J=Y0gKwV!1%Ba6Rc`a^Dx&pySHc|ga3uk^bI4WNOk4FhG)7oX9 zGTj;}?|U@kF|Pj~dv60I*LB@@_QyB@~Jq*bK2!J37f)Ghbco0DV zBrVBaS0%fvY;o6eMcV_q2pD0h)-nP4Ly;|eqtJ3<*;{2ra;@#PlGt&a^{!c3%4RI3 z%DbynEL*Z2n-#k@+O?CSZ8@uT#Atv2bMJlqUU$z2hyjHt)ChbZ{oegJ_k5po&wIH> z;L|cSypwERbu%<%7PE4UC|3PNHH;IcV~}GJNGzg*GwNN9P6>xteI=Ec@?!1(OpP@N zc9Z0r>O;`oi#5o^AX2sF(y@0~ijV}Ui9tsW-?E!#3wSiS#$|GW*%}`KZK8OguP3<5 zSI57uXTT>X`BxB^rkufq-sOkD$figg=ULGZp~&p_$jS9qE#YSi6A8&Wv-JuZYEZrS zJV?WP-ySN4%Fo@O^nr7#cJ|CzKad&(Gck!ryk)|3BM{#)67 zo*`F^AuCe{b__OCkOe%eJY$)O!bF^uR`Y;$=O;sDI}0u7{RCTxW_s;3`92` zSuy4qU*`B`v0?vy#H#*F;#v+Q{U&IO#fAmL*eK3UeE>1x&;pm-&fBns0-D}^qFkv) zEWr>U@6i?!r;iy|m4_hWW<8mSL@i~Llsz@=nnzH(~iGIv+GoK?r~X6bF)AC!|CkXDwXT+_-jtbO64g9 z7iNDJP-l=fQqPS)fyph^USOszKFccDB~}fo-u)|Bx>`jDTCjOXIkhkV%#uLWJsIMp z9-un^qRnRO?(sd0=_BDV=nD9dRV9cSL*{HGe|>|Ewps1siV5oOUx5>8N%0V{IQoj8 zAC{yKMIgl{5lgB_IQ9-`A8*=K#_Ul&Y(BHa2_7oSp{qcSUmRM3$z$%AX>D9c=Cf6` z8q3I%;~$gv9}gVMzDi82emR+_3;d){qO;OKNSD+p(*NFx>69o}p3xca zlwlm)HU1Ym_aHjuHF^F~x(w1)cr zOfnJFoC&qf;Hg~<{27+9X0-xHt@jDnxlE{p#|jTwjU@k+ksJ@1@ru-Vj4tZDFV#hW zneu?KT0H#3;ORxZ)e#!%fgpi8)~)^xTLra&M74*R^|(fDW7JmSFjatL4l8s%O%CJ` z%V6f14I0Y0ABwmKaIpSTzTi+1f+MulHjgl3eU^~XN$S~6W;8Im{tW-Zfp#?ZNAoF;)7z z4Na86;%USvy!JfiI);u491D{b;zYpN+OkpIGL_gl%Il?mftmWX>DP_^0^c>D8R=`+ zksd%R_3)9}O!I)CsV@0SAi^JSP8cH(!u$Es+R=(tvJ^QqQz5ls>Z8pyjD%thgJ76h3EwUXP(O>yD2fH7yX2B61Jt0B9vu*Hl zHg;a@l_b>XE`tK07sf{hkgix|F8HhygY#}-1c!Gy^K15-|MGPA_p2G85j*a0k7{AZ zX`gj9f-Sn}c-tJ$+5hryZDjdQR1e)syFw)qpH7EuU5OTKA)PKz7^;$_k~!s+t_m9* z@Xc}4qE=S#SD*Vk7Z(=`xrY`$+OtB$gTZuWHTGzU=d5e|G_>I{du)3pn6 zAirV7&=EwRu2*s3nIA8=vkUn}_^v9@skyMqDR+oy?@Qyb1Iu_sK8%%CB84_)pfxN9 zsGj}Wzgj_$`UM2FUye{%5#2oxZNXpTZ?J$|4YbhKhpj+9Tcl=`Ag$;KJ%~4X1RDoU zNPa(D8&iTbXONK(@Qbi)%Z>bX791Z7c0|M5A3RNJUq3qLH|oZcj4Pf(P4lp!fy#qb;#yzkl4MB$!3=SX!8l@A26 z5FKG8GA9jdowwbU^V*Qnf=c3%4@G9YALI7AVOaA1XrwUah@dqvDdZWVRnYeG0UMIx znLLuOnDS+%5KKKnON(i4Y{@|1IlRc5xfqBP$g&Xz@<0#P2m{P0HHXU{B`y}6Mw87+ z3a!D~`4?3)#-){`)T+?G>2xw0Tt8zxoApJ;k za_NsJ82HHgqJiJS$A{pKlte}DepY+ie*qQ)KUf%%F-OB#t^m02xEILMAtMJZ2xRmV zp(g@Ect!Zqt8pff5q3g%a+u^HM+nG6j>}9LTH{_I^94W&WE@T8x5ws>T4?x-o1l({qT)ODV!*w7AobND@tT-iJD34XFBq(dh>(W8nZ~-?6g3m?_^_7Qj?vD zJ$s2yzq|H^Wy^!JohLmIbO^J@AFogXb0v4ShgDt?PoAT}m=MXNrZU7W6WK`iFu9tW zzLbr#SG~7^F^>g!G1<$k!9fjB@auSZO-k;#y@bMH;~H#Jz(7~WDA{wV*UP$WU5dXk zA{>cawP;KJQ68P>VaQGPUai#GEduyj%I9Khg8_t%W9rY0d)&v^`3f#l7Ok}*+j8DK zpMac(_!@&X7?*)GNXeb14w6EEneSJsRRF4Oj_;F&Fe$jqa{w+29DvKBt*)O&Y?M)k z)g5O!8SrBNdREs9{cGy3&{4c*?_ps{L&E2j28E62m)mR(WVMa0{R^Gi>b2^33Fc3y z3qss!0L+z;yOtSp%N|V@S?n4BO&f;ZBw^t!N%*=<_7zKWP07`~nvm)z!$8v!8bBAq z`W4O)Dd6uc;7(TEY(}Nt{TvwW0WfTu&kN=lmK>y!mn#<&2RLc_Ya|~gEJYJYH35Yv z3TDWvae&o}Ag)|uG(s||;7G-Ay(e5(!?kT~ac%$bUc)74_|gzA;XhJ31u;5-$~8SI z*-ss}+QTI0?o{dSfsuFjkGPxk`+?-#K4Bf2Jy1!fvc{E5y^A=VI*vl|or_pP%-1^B zvseZAMD#?*?RjFvk4)EooFDO{|7CCS7cmn-OB=-mR19=moJMxK=k|Iav>=gcB~4%b z&#M(eaM_8TvvWT5K=BZN4mYKWl|PqKuoTYWfgrfQuPVYY40~5X#ZH755AjW3@V4B` zec?&E`W-!@j`j?6bTT}kj*fVTpe}7xjG{2JD<^8)Y05PN2kIA>gaelS4Ve-b9HneoU5aSaITJ~!?`+YgmZD9 zmJoC@u<&Kk!=(0aieniwvDM{~y}SoLw|e(f`4l>D8pQ2_L`s8-U7*C-$n662R8)y} zCLTt!o`<2<@wGcx4Gc^|=-_#@*sd50N@Nfm@*C<69hwpxC9=MRWOU6SIPjcFV$`yV z4xY1Yz&|Tu3>^;iCcy!>nByrthNM>qPJ^zr0KO)Yjkr0o*2QF=c_Y-re(nl`FxJ4A zWj(2zx#Hm8k*p>GjH`%8H~G@=jL1Rb+lcZ*v=^v@M+8L%4`;E}eYGuM`eiUSD&0+e ziy7H6@G1Zlpn}Lye~3+MDqjvkkA>7>GK!3@2RH2mk%1!GK%J>Pqh{&%^WK8vc2Z1Nt-grGJSQG!{0M3Nv1|mIx%ho>)ahj_Xx$H&8XQyj- zUn90}J7cC%Gj->2evDGZ6#6 zEejA1^s;9zZ=?&UT3bja#gHW@yMLDoE@T37@eCgZl9C4B0ubz|u{40nO0po=AAPNq z`eOGgeWA8o1#wsUeYIm>^Yp~$-PMztQ%`O6)K*XP+U}^H=G7ApRbA7W^V?UFH86WT3^cg|tX|}DMm;8XGM1`a)ZAHYx9`FVbi1fu zlG+({3*~&8Yf@GKtS+h493<~ z^IFiX`s7M-7qgtDhrK8VYrx-{!1^L>|=9L83pH9D8xttu*>5E_c8i6V9yjbrg$NY~k)vtW&ZI#OP zUw;0DSu@;9pOh9!JNoBo%nRyHu+wWg(KC#kd zG8I|6Dacafv4Je+N?c^>aWDEo{z41Jmpq}Qd>xDp*OHY}5P5+`br@XWPqQ)vAUgE# zoHG0ESqpq~9SYPa8X85Jh2_juN!`4dxI2ug1p0UO-fDJ@zd-hGQ408?t9l*?thP2&nt93&&&~Ecyjn@IsUYupBD0;m}>BA@Ntu|?m9_UU-|9R za!XXQmp&g(zWn*qS-nft|ASww)gQh#@!i$$LYQ91ZrX!HB38u1c!DNZk~>UpRvoXq zD)NQGJ7S;X=Ff6RjhSZGlDp+0WBcl5WOX%aNqgNL;>HKn*oL$yeu5VzZM^_PHRZ`s z`$gkApSH)&O^tj&lM=zEz>;AZuw*~0oh-ZkG)7a?T#3(2yXDAkc&8(fLaQF6 zwB}V=89XG9mhK^eXLtGu;DA0qY$M(m^U_v{2tik*SJDm)j zPWny*PYFqLByd6OOavT|Bt)I5!hr&b;I?s7C8;h%8j|YJNWcdca!{(X8v3z-rKny} zsxRiNo-Q-Ybh04ej4TY_MFdi8(Hlf&kwQdfoR@^%%1G2R!Hyyo+R!um-3%;^q`$W7 zT=~?Grf>UDdiDj6;4h4kI+BZOKLSLxx;qyE2I4WKQ(pGALLU$RHc zL2)uFRC{%Ix4WC#1uMzjVz+fSrz-lk3~)mH1~^Sj!&GV(T#d|v$h|O^FjYi6+8i;9 z9SKw?K|ZXEz~Jg~!qxdrOIX+Bk;dF`RIV2J4l!+kfR#ZbmCzFRXN3OeXf9##Lga?OtH01A}ri z0{!5)P~kojmePJIFQwg*)>T?cK_f0D=|dxyQb|RHg~Wfzc$WfGOq53@!cJ!jQ<~8u zVJ4T;eSPG$dtpkP7vb#oX-f7$0n}bAwW0Hxqg&5;L*vGI`L)#0XxJdXOS+jy`CWw* zX+A|r6;OW4n68`v@ZBJVTJEUsYBjv5&ngJ}`m@<9tOztuM4Y{kL|U~YyFpg*332C# zHj;-C7e_@8$s=oqJn>l`o<69*E!O|)uvB#Zol>GMw>W1nsvK>uEG?am%BY!@M7nJSuf`=Z-r1vGdL48t*%Po2q-7qeV5X;jdaDW zI3SZ8boaT3E}3^+0-C3!6&=j#PjGrrB>~YcUY$*z2n;|BUqjjJ_Np`$lJ*~{Dy?*K zGrzt6Zqgm(lZA{3KTD&{ipU?R*Cwq@rFmpxYTj1b5@OX(> z2=}IybU*8YY0P78Kilq{KLf?MNEshdCyP&wK~(AtYZqZhXI|yO-N1W>Mp7Fa@j}+J z55Rzc(mtH5;!6l%8M>UA7SeHP@1j>h<`4j01?dD81Tl#dZO1AI9ikxs=LJ(k*u|mt zu(1!pSFno@q4jWefGd&I0e37?R$mQS7*<0Z>6K)Q*Pl)ev=%9HM=M zV)3y<@iDK4Z2MS24aqz0t0C5DSq+hu#&XFWC;IT_3Vw4T&6HP4*4)tzuwca<++g9s zh!wX#L!9k3q6Hh~`q(gsepqz}d$zV~?h$bM;Y+>rFo?oaLXT-cJ_CA4U`kHUc|4fq z0w<@iMVK9lhZE97ut6#=9RSm6R(bH%h1 z6jQ|xz|N?cf{CV>LU&*_T@x=c#0X8M9u>k$ag_$dNS&>e=%|kvD;_Zx7@0-qm~mlf zTJh9{k-5;0bE#GwOH_#Ad^v@rvWicUbGD( zSg0U3a?W6=QI*Qnl3@zVJI#cR<37WI>yzo^soEvZv2Nbu_9%<`DXzHrsC%<}3ykxn zO0WAP-)GwuufNRef3~Enr>yWN zDzRT5J(D{&h#3bNL0vo&TGNdB#g~Nu}i%@!2 z5TrGhLvY+&A1wF`w$ca9bud~VoGs~>H`Sh-jqBZ4o~_d|Aicgh2*{ZNAZJ*SVL)=X z2*`9^Bi|pDXOIq{8CDP`L5al!Vpt|!SAi4xiV3cGyb~VqYf0B#4mV3Cro~kHen`5A za7Ji^MkDg+eSR%9Y8Yp)6g6?hNcxRFe=BUplEo-h3s#O~u)GaT3fSRAHaH=WwlzEo z1RDV$#cFW6MzBNEHLE$&CFmdEX3t@X2cj&&%?uBFr35zuTz$CxNPyd}5~~!h0=Y_h z!TF??idhDILN|2Aph!J zx`psQRePuLQ(GXvnZ^BLJe)XXo*3H#V&5mV)q7A--adb4bU%Ry{(v;o}TSN zIycpx%UM{THSFrLl@<+E4$Vs+gD@V8=4Cuq5}33o&r~fSg4bw!9vkpgYq1sT6Fc3^ z=C;UEz;;5i{e`*l_FNvZ>I2eRxivhtEk5BHB{3w=WB2M_H}DQT+)%T4EO$JQ4JSs{ z{8}RGu7DI`T6u7;4TTlRy2xV#+v#Ip0CK5OLtz6#iB}M!?(>SsV{aX-K)S$V%~I8* zfRlGCB8v>$1*ae_f`4A@k1|69?3KV$0+xu~c*A==^N>D@*7M7>R;gT}z*)3}7;6ZQB;Pb#rKvM5jY6xcsqp^*KYE&3praIGVSIjnl!ea*wr!RYZm2<|wN75n3nM-v0{I|W}kV;6BH z)i;vEtfU5-UH?nlzDT%EdSojjNyve2l_!%_p(Y+nO=d_{N54;S11EF*o8sRB|Cac- zkAKau$ZpXlja?=f3P=4lk#(*c`89EMuE+E1BX&KOU*Buj_53=q>so$&+^$L14ej6W z_RA7E$xzn9kTf(6QA5>`HFQm(gN}T_tucE-ZxVdXPverFb|>v(`P0dY>3>bpTr+Z_ z)jp@Sd%?=!yu?3N#Z>Hp691St&Zg)y9BH}Ku>JH^HlZ({gOavt+cfXtwk-&O#gVS` z*|?3i%*Oo$236(Nf~vggR!6AHtBiQHsK%ss@{UiT2tc{4)PNWWv3mhJoR^?;kDy}@ z6rq#&F77PySUTM&Fx_b_!1H3Wjyqm9gcFkugB{&DvLl)t!N$!GUWS!-jSs?VUjbJ8 zG`xWXi?&T<+TCw>v@aSkaVo*zepz#hz_NP*Se%!DWpl6xioh}qidf>7(F_gWN^fq4 zD8i4kA4(s6!TbKVnDe7Cq_q8<_i29aY(Jz_z>j>&1^n1*%7!09Q%-yrgZQyj!jIVO zX#C*U5`;#>mN-TUKRm1~xKW0ck9P$8$YHfqz>g)`8pe-1fz`A-ZuqfOzz>^B9z?OJ z_^6`Y3;4l#X$}^cu?Kb&KOX&1dhP|qk*;6gV$SCxer!MICFZ>39xdR9aLV%!>qfS8 z0YB{CCQ~;27@Bh8yC@MiomxQ5FFgDsHVfSb{t>|}3gXutz_uK#dOr2AS{R0v-HI{2 z999bj{8-TNhWN)lh98OH$3g)=Y%0D{fMrwh_+j?~usAQxVM!CS2X+%b&V49->;;02 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

H-1`wv1wmepRz7( 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%0DM7Y}OBUDn;&8$5j%LOir@lHr-sSnp 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%0DCywCe9pfwzdf2_ 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⩔9E!XsI(J$mY1V;gDE3=@6q~I~sc*%#igT=LM6q*XjYUxG z3-4gF;*=!m+%SI;#YC6kHzi40ZzFY4bbWmGjYY9MbkR{P_fCA9pcr`46rOaGNWMi< z4cFN8f>J^LC{`d*irbY4*bQhPLfv)*>@GGtqR)#`wVngjP!1oN$OU_qMk2~>2;Xup zxFOb91m!+)S}3EgH1py5zD0jhPv$G`1%{fpF<$kA+a&whNBFb$F-*S}O6l*Mka*v!A%3T=dGosvu z)fPdyi}XC8+(q%(Hx}hKhb}tGZT3!lo1mPD>+D9Xk3_65c_H<|B4@f;+!bZ~;NV{5 zJq#6Sr#+*5D{S8&-<7K<@uC-GKAS@(;f#a5A;^U*k$n;y9U8K zAF`RtzJN&};Thze$1}YZ(d3b6KX;CF%vjxI(=Q47E3EHw!)p|;s9@lv<9vp@eUZsC zdL{P%)xe8uw()eFV8R}@uK|M-bN^+}GTTRx+5U~`5akvZKEA0_fC+N9%pkoEdot`o z4+dxF5mtIY)WP0?0x^wYmnzFpZO}7x_|77S&LX2fv(986Q-eY=7zJ{zO6 zf^0__%4%km*B%KN@nFD+6=1|`PY)SZ4k5$Ql;N(dBE!WMWVrZb$gqqppA|0+8FUaO z&K!6EGOT5$m*Zg{BlVZauzUa+n56+^=$tV!;2a&0K`k$h44|lxL8n_5Lx$y5WFS&8 z{XZjQSOGFDb7XiBJED+bB>|;`1Rw(kochS{Ajps}DzX_;+~QQ?W+xItiR(pVz?cOT zVHgSCHjD#XD>$(AGSH8Om_rQpbTg$ARgS z;lMCg*gDJ!wKnLj-@&)YOgM4A~WPD-l)O-Oqfhu1h z8r;eF0&X#<&le_3zCdPB@r5zx3))dOzMw_*Qu%_&NtG`U8z%CFxsokh%G|TZNW$cj zDa=I~0a@kh9+u+qf+TgN4UUOPC$pq3E1O9u(f0T%pHOTi|Bw~0iZdF;+PUm;OvK_Y z2r4pa=EHjjyCEkCNTSG`p-RT0(8NxKC=JIwm^`NY&$^y+rC}@tVJ}c70S=v=xGIu&!}ON9<>yAK`XdgNE#F0bEUiYny+eR2Z1muQVN*PBg)kB~Zy& z2LjS*q14R|Gm~J&>XruC+khAns_=uZ}JjfBEB_ zQodVz7q(Xspr<_ynZqOLx;#J;df)kAy|~;z-HDrW-(ipO64e6l`~X_acf=aGh?&n1 z8wbD3mc2~#h*hF<)r|vfP^*_&cBpvf_g=jvVZ)$!^7mfNZ8VJHdAkMK(l5oJPm1UG z@z6iy>}ZS?PxJe6`>l71M?S0D#Z&yGmVVNtzr`awir!KV?F#i>FR^I_`D_$dc-NG-l@#9@-;cxIlFUJT!<1{&qP8WuxxDkX zaOXkciB~#moAA_nR`&!H%Y+D_)?P-toJ6C?nkrEqs@Q_!0Ac~gjQMH0bR!y*SZJKd z?+P zZ4A(8BVZwDGHtj^FGoP(G*JLeRsl^W(3r26dDGeN(wlC20br=vMnA{Mc^#Le^L!CqS0?eXf*|` z-w2NkBP69%i_d@-U->)#DLXqk`4rFA7#B z_?`q-rIRFdfZSL^&>G}Cf{%GgI>1;aqZL>MC(T9i>bHC(V+O0=I%8NlElsh?^b$@@ zg{A7wPcDfKU+4fbt_5S4QZ8$Zsv*h|rjBZBcEd#ns-d-+ zYD}%0<-kg%bhi*;?*Tl7tR=J6 z7!4(W=M|m3kdoezEzo_P>U$yJO?;h1I47@1Cj|Z_C;4p$X==8=-wq(PeP!b{VhG~Z zACnIaUIxb{jZhwI^!Ky@&oz9)j#6qxWDob&?@Dj%COFBgN8s*aIh9&a9G62xNs$<} zIIz?NQ#(G^Kv)sXZGjD<40ZW3M^YrMnA;HV1fh=4GoPVLe5EQkd^DoI2+>E&(Z#9H zF}l#19qb$zM}Pi&i}x{Mlm&3lF{Gso~d8Q+QsjLewAbtQ5JtP z>5=BlM)@e-QsVTFavv17DJ9O}W!ZySw};x_=fypnCw$Xvw(k z58c_#^Bzc&-`2}Pm_bSnkNt1nKS_33apdQ+&i{^p^xw*PjKUqb=fKE!9sS2mx9$3a zKRfZv_#I$jes{M^^WAsx`)kRaz3#4eyz{QR@4f%n;q;E~MslEV$WlvvTv=07X zFi-BH?0F=*R#(OhFhW-H>kpoyzuazjN2&cyZ`X zzMs6IzO%M7Uz@N0zaJ=S2MK{o8)6k=6C3jU^{{Vt0tVhmZ>QPy`38UA?3CTSyX(-q zb~WFljX+OWDft$P^?WMC>3?1rPlCp-kh2B-n;bzH)DH;@6rRM=qZr%D?eV z;MLcH)s_TLrS5bD33z74$L4g2D-r$#3g%@g(vP} zPhHZvnEJ$8^>_MDu*T?}=hPY}>R|WDygdcnyBPNEJrM5AxI-`c>240m5x&29CZC)M zy9Ag|kjy6XX&ZQ#Ws&E1GVk4d!)hA-(!d7 zh*v6kZ+I}hj_UW8XLsy6q`qiRYkY=}uL&O~j<^3y-aupe*?L27?Ez(};@Y~Fch#-@ z&D{xWqsw`hUe3cqZ=7KYsRzCHj*Rs-n&J&a4Q^W!gPXe09Vb>q?45OrSuckNY(N_C z((S$cSMv40@^c^Po&WwT6Z`k{YyJ-=_xz)Rxwg*i-=Q%rvNsBk;)JkF#UvzBuZuX4Phd*;Hxwe19bTttVMp@ z)<;#1{J8pq1~ITqhxN$c4{N(ff+G3JFExty!!D#q{(jkl;N?q^!AE&Xyg}B-B)55c zt|ngYLXMb~gdC%#a0YZlPC(=C3~`a~u3~(_uA(siL|EKNC~%@&X&%VxL_*8i&I>cd zjqrh#T@pwaAHp&oGSta4{HvFu?c^%N8OU#?cX+=^JW?_@f1*`=ih| zbGnU2l;P2RVt8~iMf^hM81#vm+5h-7W_K|SSC@ot@BhCt% zWJgEIP;7c6eH$-sC3)2Z;ZX`qQZq7>AHt_tN2s@@~FY}PfOH? zGz=V_Fjb196MeYGz8TnU{~r{9*GuuzA%Q%YD2ThME7T3NQy7~BaZDId-H7D$$p`_W zT1ee^GIV8Padks`%`i+NRM4EM8yrY5b;EYphtAJT2p&kcPRap7BZV zQqVI#S;EH20^)*c5WW0%3FW4AC?t%O4w)0BbVv!2{?KsMxx3REf})-(#pdHHz=bWwjumr_8M zEvA6v-6hlyn#|9us2{z&cgE_+pI1Q`)sH`441^LTgjp5!c^KJo|Ln!iyDwZPHFH0{=x=B8!W_e-XL?1$TB7g~Y}; zSV(+&0gRt6yLJ*7e`YZlzc;}6Gi3{r5602ezrmyX%LSwR%h0#+lWoTR)$r&f0{{CU z0{>Onf?-hD5bazU&Cf->Gl$~z=<&^Lq(GrQe0+0J>m=pl$CJ(+E7_z%EXrckH*=+} zYwf&MJtCg*ex$|cA8HhN@r7R^zAO>R8pSiA4i!b21>ELW@pIUYzWWgu$qKW zog~x#?3^6!Ksu~Qf9>r{Nkj1MJezR`=@T7uByPn1O#lUA=T|?c&u``Pe^b_~qDXPy zCwCNCf22{b^kSL`4Gx0T`OfosjbEMHR4+JY^N{Lx~Ql*@isA)%Log1 zqMA%9Nw_ zR>nfaJn(Xk(HdV4-q_5ej6H0T44T~k&O3peXYSa47rN0uryKmS15X_C$G!m$+3&3F zC+q)ivV8{RNPc(N%wYy&=b3GFo|#rLAfu|XOnhMw_IAaie1ta-@g~8N28S{d(Btp> zLm9!d{O?aO6l`20+RV_~hC1sXC`g}+bi{UrmO7APamTF-EqHgpKcNA)^1v1hc^bT_yQTvB zl1t(w=!mELNoz}*C6@_nq$~TPn<1&Bld{hSv^G`kvjL*v7;=PL0?v=HGD>GbkH=m>yJrTWnIIk;e!d=iX z&C|pAh+pQ^(uUT7=Ey8j$mz_2b_9G~ zRHugur7_0wNz@^Tf;-AXrg4~4B z0-=S)P*tRcfF~?D#}jTjo}e$WYDzpQX{)8h2AVp9T?hc-G&(V{XaX8Nx-GlE zA{Oz$4%9$F>_82kIL}pRG$Ig5Nk#;fNTDSbc|ejV76B++K^T}vnYf}$4v7*8pZC5= zEW%LWV$t)Vi?%STE6IoR&*2pli~c#(HI@_OatJH1YmWd;+fnjCHiyI_tCVNgV{9b&I3v@W9Mq#KrglJ*?Vt)vu z4B?AQ3_+0bA&gcy0yAl@<5P6T+Ft>5^%8e)ec$;W&VZPj}&=Wt(<(QGLt=AYFUaxkDi z@LB*MXC|7k;6|9W)DIJJZ0YF9=rDC%ImRu{}wo=)Su>HyqY`+p-HN)_!U<)#xgx?c? ztqR*n1)2T(vu+SlV4c$j`s(eH-BCUkzO}#bzNt|5|v(`1#jDUE}>PlAm*E z#p(EI^7F$UUNG|W!!ndrJ;uMG{5*924Egyx`a=*uf5#F-I5j_K-v`zrT6S`NUUKsh z6O9!sb|hL2NAbz!_Cfp`zaETT)}jH6;mBeZLu2c8w_eCk8dZ6uA{$4x{!Ry+v-Nid zuo>Zt>M^445^NojSZp2cKFrq9>tXAHLb;9}07B}=DcJf5VxzNlu@13yNzL38o5^|x z?H+7hEg#?ur_WwWwyvo;1GavrLudh8zcTYFk5em zt)GhZoH1MP1K;7@XX_4k*t)}=$ERfLn#TdQ9^rnPZ2et*xL4Tvy8?iWKAxPdzk3L_ z?+&k;9Cj+$f?3~uwjSyKOJM6V34M#O^&j&2a<=|M)p>q-*m~}5X9Es zv&0Zi&DPVGg{?y$zeU*kJq|c$>-Pk(8R2{BY+X=z@oZhJ<5X<@OxVkdW$Qoe5L&?2 ze>eauFqjv|)_=qsFWLH!RA=C&vYwZ~)=f*VXzN34U0Y43($;la^QEx$AML}v!q$H@ z0LbX$$=Uk7L$JL!ylQgTsbC9cee>CRbas6SY+XC?-y&@Ny*^*g*56y5=a+}AH(vr< z|1s~|09*gD&_(lcS;*FZJiKCT{l`OH69HZ%TbG&Ktgff2t>5Pzh;047(1p?=;Ty`< zL+8(st-r571hMt^Eir^svh|lkRd0XG@bsT>s5wvni2$>(?-SV6i&oVIg%{7$#WzmH z)6ayryjY(8lMbN;JpCsFumX2^aXkHqH(v7eBh?vrseI=p@O0v`3|QcYcsh?y$_hd<@Wd*K_V=F}g6vO)7fl2+$mSdqx#oaQt@_+?DFX;N z_08wzYSNMA8ed#&{wLeL08jek!V6H=Wmcw@Rkb6h__a3!< zDDIiNIJR`$FizCMvBjgc^4&+{J@Y>g^(^s<+M~x7?gbd=oM|;YPOZ4V<+~OUas!!i z7jaD$@Z#~^4@H@2Q04f#@# zTFLWXkq<+8r%9`+yjKm+JKa$FtF2s-{_0YSe0#Qof~Yw=DZ1OUD=A2ZbsYs+ux_9r z3)Y(`$bxkv1zE7ZkAf(uH&GD(@+}l(!Md4(ELi&~dfT(NQIHJlR*DVVv)d@hiFH>> zxp6xi!;~b)x>w~4K@?Q7o{y+JXB&B;D9>f5ERE3ku;Mo)V?U6l1VC@;uG1$N%9@3vh94~ z3FWp@p0--i^yK1Xy*igGJjfd2wM-4}ZkC8yu8nwEl^IUZ7yO^4x-p~DU9upIK~u;pJnnszO@dd_~kMU0}Cp!QhaQeOjI80@Qn1#HyU zmipQ%`-pCN#Nc6mcKV(5jF;Zo?Ul}k zTwkyht#L8mX5q=OYQ>NIaE;D}Tv(oEk*A&uOP&4C55~@hgjm+fBAtaX)txcHV-{mf zkOMI$h^MwGahq0NMvelAG1ZljF=ndgiY?4F6tJRM3K&yPL9o<~k;Km#h5t~ND$^5~ zSl=0+RC3shA9ihliga@&(r9ZOekjt&VG@zX+NtPXu+c*II{SJJ=w73E?#nPiIBN0n zuknMViXul%3Y@nrW(@~Q5UHV%>|V>Iyz^d;d-{CGWR}$K%oDEa#exo)33PCAfet{f zD1l($`RCEBbtoH7$-Yz1Tvm{GFaQ#*05TL}8Wc($NuiAF6w1g>F$*1NZOU>ERC1-% zkrbODT@*?k$+Jtzt;p3Cob9DJ4TfT_TFjlfFSh|KpxUGP*ctgkO?-hK5#d9wJ9*<8 z6}yM)6e%4^xobL%q+h&kdo>wy2+<}tM7nJWO^HWq#LU*gsLjzB=RQX|?@8nQkg?g< zB0jfk7#S9vcKN!$7brAmb^Xmiod@1zb3D144BB+R?gz#5(LglG(AN1>qf3fM$B5>- zyyZt23}wK3)`xQ0jay!2ibi7`3Y!?bOxtzo`wD2&Jelh>}N>Dq3% zg-`=P1R&vrXo(r8fQ${|^>hN@hPKEbu)Q`1&h+^Q-?xmIXcmFUM}Ai-7N>Xg&+w4| zU+xm$76nn9M_8>>>CwP6(&Fx)XcUhUJMtF^dWlDTtLSr%R$1A}e;ZvR5d6SKx;h$bEZ$YfXUjPc;?`oEhdp<39xN|fS8O|rU?Vz-d?FT$ ze6~Cza7)B=4OcLrS>+tc8}VL@if|NMo*b(#of{qY|~G8C?;{?oLU|W52k(HgYJv zBfXt&S2R)m*AgqK2umqLV>VhzGDg$OUjX^_)!@BwoA96?Aj3Fwl% zZt@~{KOxZ;pE}Xlk{|+J!SBZ9$!jP+d7@!*_6~mYdkp3f^n0se1M<(^m~7vY1P0G z#9#Ab1{TPDe`p^EXCqbyN-;3ByvDc|9S??(1p}%1fy2o2@IEe}$zp=~Pg=}d@@xxJ zirjPzm+R!}USo#fRg;ah*-WzLm{E4B-PF@OF+rFCRBfjC)&EKikIp4{AuFz#1RS=be-|TR%OXxkt)H#4uyruJS>bk6UM#<9YrEw z=g(#%H!ShKPScW(BSkEzT??7Vun&k4+5gZ4yUUf^mJpO zH(^%nrpzcc4rnQ-hPucYNDEvxLL!K6qsDSDk)wyPu`OAF!%hn6h5-W7JfDv#xQFq2 za7R_sw*!FFs?FpnQYaE444AHD1hoSg{yF$N2RZF?-@{#f4t(P-`BV6$kUi<1QHRf< zw+pH+)>XukMY_s81lQP0P=6`VwgIhVIhH=_1_Pi;Vv9jnkLi)fBa4&^>!;KqJ^S`=TGCTEwIP+i$vH2m4-3u*2&@f*rby1Ut3~ zB-o+UOR(cKlE^74xsIKp!Ah`enqU{jwOpETk&OM9X4)J!Bh2=NHCrjRU`qP|)J4Kt zupijMlWCQkry-@8kcxluY=^&puYT~NDPnJv_1xbM5=^u6o!wediY|FA+H@hCkLXo8v#8N_Gkw9r ze+2~=j#g;Y*<`Eu4?nWJSlPLdrURGM#+TO;Q(!Ic25lLjzHBcEB^p7GYZZ5YZgtVL z_k&>#M6Wrga`dIH^Q%_zo)=aZlUBDhv02^FC0{|U;@-a|z`s=sYsb2zPH+y600Jx_ zb&I#E9f~Hj(4lpUEhYLAS4il~y1q8$$c`Dv1PE}mbA3_jKim6A6dx96o_Q-N1xlNDGNG@hqg+#H`twzE;Z`3++r5L!1~um*Kj)LovKLVP{QG zW9c~FwX_t9HYXqJ{iT3y)2-(%NA+UPp7&8*%{%;=_;DS@EDtn?+nZR@>=|szv@v2r z8dezfSr%@7)RpTT)+G?=7F5Y1kcqNT!FH1JQK^g=#Q%Tx-UZCA>#FlS=iF!2t;a2? zB$ZvVeeSUcB_oFdOjL2y9UUXtk}YE;aXRiE_k5bK!$*+Bj1@#W-(YN!7%(IdLrk~3 zNx;0u39;!wAQ;Fb0z4h}bOsy}X!A-N2#}smz>vVWn>d-@f33aGIk)PTBs&f?-L^j0 zKKDHKbM5tBYwwlLilyF3XsYJ6Q{MAEm)k{{WX*{&m)wMOHQ+F886lHsg!GL@BMV6q z_Za9s3)9(B4WU*#T86z&(fFnv*}|Re^@_$%CN&Pl+93#_ z5Dujf1W-uerC5~e)CFD&3A_|Ji$SrA#pvut;kZr3>S()et|1UoNYhBMA8ilM4sePh z#Ssn%;pWZgjwo&+tsBLyq&B2DM)Ez1SC6);cn#^*DJ}r;!b}IrdJ3EkJisKcA=v;u z`M|IGz9z|cd~30kZ+oR-@N9qm z&$o>Pgl+kbe{7OMi%gB%$h`PQeQ~?0l4@GV{~njtO$;CUJ%&sg=m7ChUPp?`^~^a7 zZMbytVZL2CpDhR~7U&#MzWD<7*uiWuOKFb2#MWW1xVv`~9oFP52rF?m#rWiO z>m;S9gfuw;>`X%lOKg)92%WsDFx(IHKON2&>N%P50n{g%*dY3BLgo>Ht+k(Fli?P@ zS4A&?Lt>AOQ--n9ys%&GKpI9ZY$dK&yC{Mc2W1x9nBesGV*4v4quZ19oGAKnxd%*% z9ljX`@uQadY)Vt=T+1NvwHp(k1rE38z9l}YseFg>o-w5TRHi&?XrWEyRj8fuQ&XJK z5Is8vfr=w(OF~fAv%uiGA{oewM7){vED&>Rc>>QGW#y*R+jdfwT6~?|NB6TVy_WFFka78a5|mO+(fD`i9jGfVDY*Qu(*9AEYdp0(xITS zAEBpfy#W+iy&4qxAy5>=J1C-uabTQxV4U9+7zz4s0;9N;2#i6kD`zuwQ2?Vu?0gN3 z3|g!m0^( z0kYd(B~4boZM3~wgKg2U(QV=ij4|tQg+z=AxMFGJ`e=2=aRrQ)a0NCZEfBb3Cg2Kw zC<`cfG%gT1=B9-$w&bvU9B?(hK+|!(QToYPQezA8igAGgvnW(5>=`lWmU@8#2Gv&g z<*{MJ<(a%V_KJ{+VGA{$lXvi(*kVUO6w)6CMB!}Dpd5&c9ST+C zewj}abBpPs1DrPn7bXm|mQPI*X<93r++W({zF5BAwP?bbj&EiQLK(NS23vE`#&WUM z*MQ4qcInnIi@-OlS9T9`f7Fc%-Y&PNq(qyR`sq&gU)z`Z25mgH1-NI%1cU!tGieO8a1d-LGB>Hcnu~otQ{$5FeRBQmdPj;y_s??OW=A3<-Ebl3rk_E%JHII zJNs>BlY4GF>ckZ1n9C&#m`9x)>oB_J6fDUuifwz%v2Ocb^Qgm$w8l-Dk0^pi-46Gt zTiRt0QPW8G__F!o910ZaxDPN$vq+Kknj6Ib~5 zC{gYsapDx>#3{syQ^@p0A)7zNPN1D47hpIiPO$>-O|b{wo8lQU&-=l^&O0B19m1$} z=vuNu<&hN(gm8vVL3?>3UUTeeWVDArla2roUurx|r(9AJ5Gf}jkW`a-cc$tN|D!$$ z+_rrZ&lc+G6LdK+3}N$C;ue?}BEc@X_mU`fITDJzOipJ(<0nFA)nNl>^?R=0%G#ZF zyPde{Bw@_#v}4EVqt@|4^m)I&|fA6^@sx93uf;3ZJ zDGZH-n`!sU7G*Ze_jGOft{6Y6o7TCYf#37F2fvsCrd$L&PDQTGmNbg^={0Xani%e- z89OnLYW5_Tb3~}73sx#)iy>Z#FUy4~d5tc~#KoPRYy}EzGyxo(4>U$`xF@P}A~6cz z#s=hdW?x(0!O8(m>uw9B#aEK5bt|M>u{l@vq>ZV3>m^a`gR4Q9#l(dE_-nf1pn!5D zIJiL~gqNnpVNafC*B+(iUwwP0{GP1*@c%PwhWn{nm&D$R+_;frmh1c9AT2Zf5TXr+ z`$(}g;cxlHi&(Z*)+SIcbZ=9WG`!&6DOXH^DkmwXrd%5{fxH7uME$O|+V0kUse~56;Zb2anwZC$2*xZ>lHP=lSnN~tn@-?f zXWJ!O9rR{8=0w<$lheT;@CCs;md)Re_#6kSwm+v;Q}*9V0Sw$i+rZAzxKBC zM@^?7kq?oAlag?`2%~q})X$eV_%Nt{K-zjp0~bjKzP;G-az;5WbTb{@r<2zGDM_-A zg&*(MkK4kJv-)uct!7vzb`>j@ceR8Cg4rzthQfjj2uu^lw{EHNK~RDnpHPGen^3%D zn4o1Q+6>nyH*DU?{54Xp%N^C^4$7sIfE{4)5=Upldzo=<5-CGz_r65C`XR%tTloC$4iy@>>zlw!t5x3?%i{-8&Pid08@w<9lt)%r(#5Q{B9;zt6T#{b1%lNP3Iwa86flN2Q(UwcX{+sG7AGz$ zVyUh8rIV3;z{C%{4L+5ot@YB@ux1{>J;?~rG!ktH4&IVqgqfVr={&ID?sVRUUboAi z{7vGW;2w-$*2>{O2LQr>vcZQxo<)HuT6}mjI+#B*`=4nKOdOwy;~m;?|7wD%ykY1A zNHtsvz~8qoc*$i<3R%o4#95pt(#ZYApf?in8Vp5Z%t8AmFj@i|9XL~Wwbx0+ke8+?fe?s0m*l1PE7)C1s1_C+S$CW@43U&8y^fSTZ5)mUgRuRi3p`6a*z1 z2(_8a#Q3N@!QlxLZr;67do)jOllsm zdo4fHQD**_8a|H4)~=_0b3P=)5#P_t^y;P459)rd_Lls zluy3c<~L7hg4Edqt&H8NNK^yKgt0+cPLX1N;sAj=8{#RAas8mWvERnsuNzeLupU(N z)}%otVNhQnl0$-#xlHm*+;&U0?cO$*&D@!-cPQRd;~6NdHXenvIuz3CP;BB*jIeYC zLJInQ*Xr{tAkmh zt-y@7y9>(u^anoj!H;!L@?hz8(0q{lH-%e(mp}U^RjG(Rs#FEUfXLpYEt;+*?agbT zK3*7a0_lK8x*HoAYfLsMb{|HtR@u5i%50Z#KuPS$6LYOBP1rE>>&hf6ho|Xc_=Ucq z@hge#`14LV`?`1s%rY;xOpLkTghM{?&LS2a_mnZ#fyUBV+Z#N|?xf?$7bi~Too}F5 z>5V#(ms=Pd!qsg9Sr1MhS3T)L)afij<67SU>#Ack)7nq%njT>R`Dzk7na`Y(eWb0; z&$zZ0-LnM}-ysa~7;OP6Y!K)Lmk9(>)#5VI9Ud$=>7-0}Nv46hgR@=Mr3Dk8xA~*^ zJj66V%urr`U?d5kOsUvN^Yha|3vF}pO;itjVCc7AlEHReS8*M1tknrv%gj3RC#<@S zi1CcNJp)R-&~DSciQPtfVjf5z#>erp}m3Su!)Y*i^+z`G`TBC`|UA z(Xf2>Lp#G)**=MzA-gfm zNy#QzHeF}lxe>!oM)RW<+`f2K9eaCPdD$`SD=&_y3O!WL0 zJNLHA6GO-)&?NM0Y+*b2rLgb_;(lzQAi26S`ojb`Nq2~YCos2ia3aI=2`zAgrZs3T z%#4P_t`Q2R(5{KCxi-@Gj)AqfT3(VqbfD?2!9*QEhaT}iMue*qyutldNMGMod1zgd zNWL0AW++*Cz)m++96%}j+X5&(uayk>Pmuhq{_qQAXOepnYApZfU)02Fl z%;V59G(UMMaL*hZ6=A!%5MHVaDlS1P{Ox-G$#W*FN{-LsXO> zp8;K(ZMDme$w75kB?A(!XkYUdIbq3k za;HusWR7HJOv}%BeF^+R`KfRXjH{>Ut;?VMT$|w*=}Xer^Xo@H*S5xQt-|LVtn{-=KDJ%7fWkzd4beCPN6 z?k|3t8~5wY*44>dQ?QSsGz%c5pU=psA~=Q%5{t7UHwTzl7{@T++RldV3se2i!S*_6 zqu=39yS&PL_~mDj6VvH>Aux9Jx^%4Y4Dt2-C(Mn&Uk|Rz&DVocEWVCfvhjZKS#G`` z{GHw`?b}o>VD+|C8bd0V*izg2f$ z9q#W=B}`07>Fog?9$8>&0|!=0B_cdiO|zN)&jVt2~F{Jh19CVK&2aE~z9FMY_- zk&xQ^{W|$Fe;hF1m-Fk-?L)=73DvPpUlO*7Ic@~J5S%yGVWsbB-~}n}sAE5<;K7d> zqDdqiJ`k=0T2OBLC61tBkG8~ffMDS(%EfA{Vmxea)nT>wkZ%aiXB~$%aOq{=sz9{1 z>cYm?<+15oHNuK~`S3c7pt8ljQT7>;Ap;fpZ8g7Pm7c|#^e1{Z!7!LE!`!3&mH=@!&ALtG3lF z!YWY7JyZ!&TW~#fSg-IEcpU{2Z_O=Rzr@$W0A5Rip%yv^wj|0j@Car>R2^zCvkvkp z$7bj$j&9c64NUjEfjRw9QyHQ=)?6C9ksCJPGNn&brouRu z*e;hh;BCp^EfA86Y!;opy(l)vERGFUv)JTvcQW92{9NC7N(ImVNVrDWGxj#reQ{$V zFW#(fO{AuO!(7TKYSLT+RvYG$L?mOob-9{LAdER+E|+5m>bdk#bdyPfFdFA_Pc@gT ze#Kl~rRlEbQrnw3CM6yuK8$x~V=i~b=GH?b$Y_jb-vdPc){~a6%|wM?e==LotDg&7 zjgR{h8+Rlq3&US-mzTtjgmJ6WUl5jZN7r6?X=AjP#zrn=v>$xJxgkj=XP@X?z-T3~ z*naApD}?D)8@TzhFlu2Z_RsL^%FAMZo~uFQZ3+v*{@W)zuv8=SClJh+t|QwT-r*@O z9-u44oXnLZcy>uif{t;5k_53F)M09p1rRIRLx9ZGB;dRgeEN;oK>;Aoyojr0!s*5Q z?t`afN=+C%pB)ptu~Ac9s;3)dc-w!M;RXp@qlVJ5{BWj99NAn@YT@B z!qD)Kf+|E7hQiguiY)L7-&AB_*dz-xA`88In#SmzlZ7Tx;4D-5o$*XW0bia}L_vN% z+M*Rv(62}m$Q~m_E2*YzuE>CJ46hcZ0%HU^5vD;p5$tZRUW3QX1qoR7b6@|dAcRz= zv*6+fA0T|$mNW`(b9TT$EHa)W1F5w9z)y9`?d3Z^0IejZyi<<6;=Zd{7>H201T?v0 z(}BW4k$gf$d@~@2%k2rvQ~veuD$&m>wOtxmt&`25Z`%jI{l@MPVa1V`b)hToYbVy+Suups?#g+&Cu!H zRi__%Ja&3_eCN68^c9UxU)t#O72XVn^vRw6vZ~Wx7T*k=-cxn@KYT29dQW`k{GARG z!bF%h$O1O6^d=0ZcQ-nHr8lEkgNp16FFCFmwcMK`VXr0SJwHm;SV*>{ff;^Nc<@E9 ze4$k@Jw|Kz##Z^lSgQsIu~Y(-f=a@8zuevyD*3TrxhS8p?eOLClk<-^p$q5R!>ite zjrYpNcvrm{3&)rQSzlq_W#upb))qW=zaqXJI{uaRRQvctpPCQ*_$%W(&rQd_s?qTm zG&=rO-i$@PPU`qo-f@u6Rq@Tx>94Lj{R2O*beuvyUmf2$SEtRo0metIkC_0v#YYX- z60kYKZnUWN$`^UhJ>>dDv4P6?p(V43>gOOGvuP(RYDB>!rhvAnk(^)nG3}y2<+ws2 z2WASwMOG>BW4ek0KPH8e;K#Hs6WRZvT1Aw*E@gIZGTcPGmODCPNe2&tap z2oB5?NAZ-VkgGGrEx0;U+&Ur)#7cH-w5;OQBeLqs@tNGeSK#=3nTp#+xo%#7iQ*F9 zyC8rkNTk&h1~7I+AL9<8d6?EMcuKr}b=5B{E}9&Vnt{FSJpx6KkgQ9w&N8YUHS?7`UCU(rBx6Tqs4Y)W0RTqV zJI4SG+x zKCWeLR4N@HS87vOyOT6`ve3cT%#%VKnJ1;7m_9^&3ty;deF2ak@DUC)Ot#5kD@b|S zf??fq9R;!dCyJ@^cH+}in-VKA87){%QU%*xx|++#eVHmKZ$Bl$mV2^^QLN}uu2I}2 z9bNzAaX^+|4|b&#$h#+P;4U;=VxD)(EW_cN)P{hZ=Q4kD2dxf>>4$bkn}5s?iG7?_ z_Q+5pCtI#p9iYrbR&WR%V)rna1SIhWD~jPjQ-b4M-aRyn#{{-K>qfN_QZVt=nyOMA z4$U}jX_a^jJ2s;l)_;^x)SkRZqc0?E&UNT1IE@!@``ROL5{QnF6l;7w5|e z8NO9zC1*N^_mI`qX;TGc`}0dN^Uok|fOj!jAU3IG+mN^j&dODT$Ok6A*lL?o{z6D4 zg7kajj$!+l4NM%}VFSF@3G?qDp8dLFK{MM?WP4vT%lzEP5J~S-v*V zg&?XAvvOe~O5-%xGNiS`BLzq`hJXS$HGy?{y`}}3nT^p$+c?N~GUo_--Rq@$q_e^U z8k+5SLBt{NsK_OcuL5u=Rsk{_*$z!1Xo*Y|^c^O78IVdxeU`VMFB2TCX~=nt_UN7l zt_rtO0$dat^h|y+zggHg zAsgF$j~GNyBa;7N)izH*ls-fAc#*-4zUwjoqG9vxM9SPS+oS*RE;ljJI4f+NL;|UN z61UqV8rD%4h8h>VkH!VPU_9(<5ty)q9UqStiWLE@ayFUfXdbxZdwaVv1mEWBg}^!t zf}afIB72={A>nP7Ta$ee`n_T4S!4*U*7^kVjt`zKJ%Jv?7isAQt~Qw{>x8JN95fH* z(;sMC10NBMxE>#&%c$_tv~6O6n>Kr4a3o64R&TiW_h5J`SN)tYR$&(O3c&#&`idJb z`^>z=&4UM=DI5(&maZ87Lpo&0zVy{>6j1_v1cl8l*~~5qaQg}cEbSf&c$-xUSlX*7 zU<}qMp!WMHphNp92zEX|ffxQE3cT=-P;h+6Q3}otxtW3kLvEqqoRC{7I40y61*e3( zngTKJH58YvWhW`}wd}U&KlB-Q;{WX{T0{8cbbSV+GwBJKeDi85Y#-Tn>Z9x7mppDL zQ-O;adtnnH2Y6uThG6f00+iapR|3Z+b^xC(+mu?E9Tu@8osVm}yw;s9Vv zaR?@a;>c)G#ZfjC#m!1GAWnIQid!K)6vrSrTd#mq9;tZEsL;)mFmn{QjV@7f8uppu z^>9EGw~ula7r;IT?Gx#=<%om^)>WnG`>wy-g^Bp&V%wT2Zjy5fdFkPms%@(1CMHMG_e-UJ0e1-xI z^Mw%Wv7JFs53Jw8Vv*t^Zqpxqp%KdO)H}JL;l;XPiZ0UoNE`Ho^Uavw%djP3lz8#V3?aDwX4F>xq>9U6Nmhcp&1jZH0%U zEm{~ZpGaXvXwB{x)-abJPX!0`fi)@?`DiKMVq-v@==xMlpFqUf!hAcYro3!;?jC|H&eLxd`}jE#E1 zC*yi<yh>I&n2jB&r7OPD1(c$==Qf3IP%O0A?pKSgQjNb-vVzp7zh z>cb9PsSSI{Wp7p!puR%;)HW@9cX#W_c5(RwVhp#4awqxaN=!0B`W#L3{+4n^KC9w@ zw+J~b96wAGJB}9@4ZJWS9bCApQQPA-Ff=sM8EQ2fz1j^!k=912B5r!0C!5V5i?{q?x|wCHjGVNF|B?~ z!&nsCksP^NJWhFUei46*;``TBAu~kps3xH^;kyNW2k7f<>w5K-eZz398}Ti#T|=zi z3$+{IDyvc8E12Hh+A0QL;3+(f={>*Bw!y{l>@Zj~$c;zZge|jCgt#IOHJr9T=C!m3s@q~jfDo?b z_WoGoR%(>D%1en&=2dsQ{DoL03zBAwObN1`y8@3!#VyA-SRE@{`>sA%7CFZ*oczI@8}B?O_lFE!H( zydU;u*p<`A^Tiw3T|1ci*6HIp`(oL4{u*L_m8Q+}-n{n>68i=AxVfG1G4a>mp z+&Z>9W6!lWZBqf=(2>_N!`hpG27H0ziDH>I;tt#HJ7<}72|H&R)`fnBeHp$|zq#pO zsnfRK^p)*PEtDp1)3>T!NgqHX=iQZ$hFyt(L}!8O581Bl=Ht7v&laAv3EjU`n~?td zCJg?i(O7t4o6sFkwM^9}434MN(?s1hZZS9rxaDy=9dXOFM)7+LOSr|h>GpgYA#eQ% z=&?>q3)sY6Sw{>)N5vX839hU)7PumNBw&+A12#DeI2$X#4Tgfx&X!Y0AR zwW>!zs*x^v?-qt{-zngS(`w?F+0?nNY3I5Yoa++5X=Bd z=N#rzpnK_YV1>pHpDK3nnfMQoE4|q6{7{@?Vc0EtxvifPE0$+!zH<5u`)yYLMHmf;(O8%a1O{OoXi zBOWYhih_`{qk(Un)qhdONjZjZ9%ju0zF7pLZ5O^dPvuckc4S87uow;b3DMGk5yK84oF@1W%4|K<)Cg-6%dOxe7r_ z)cI}=OxaKNw%(D7InjtrPmM%~Zy=np1PMfH0$%3#0zv^Dzi<7uG! z<$bfQe9|L7%+cxM;LWddsDl%KNNIL)=|21B==9edFodtc)-pKl6P>nolA{xGkXt2sT2yQn0vM8$ON&a%B56@E0ZEIx)l-^nb(7sz z?XVSYqD(03fw94Y4bMV`}j@pHo#{BahS^FJfVsY)fE>2uDlJrwqh#=bgM|d z1*!*MceNh;4RDGN{svUWT~jwie*=VNiSrFF8}m27W`Ob+6PEl9(Dof?vY8d?R+<3z z`w`2%CeH)8Qx^zR;x=1B1;Esp1(@?6HDzXE#1ULWl2O#=%3M$_otk-LvrA-6#pvMv z2C^4fB9)eA3j0xxZ3b;7W6(@VdaL{mNZUOthXVIFz)&NP1629)IAFt89tYGXkAwc# zQouZ|^EkLv6`03?^>x}@L; zZ{f2G98-bt4Uj49LjaXJ^Z8yt_4=7LhQM~IBa#|A(P#i&#!YW5afXv za|&9*j;dcWFToZC%bymGm88&0A_XyJs!<~t|0)9(RFj#l?2()}sJC`4ke?33`+!^v zlmRcg7C<^q64Ju#iL`rEJy+z2G_##Hu{#uKQ(+EgXwFo~=q*ip#(A*LQe-FSY4A2M zxYK;wzA{In{p^FTNo3|Pa6o`9UjharUjpmuA&?o+W4;7i@}7JNFs{m%fC0&uKzSE& zQjqhJQtNwq(WRiO#ov#y39N~g1E_{#Kx|iT1LQCdOm;1hE!12K7V^|QvgyGg9rH)L zgu51yz>lGzV;5?Pt_5sVTnm^FLvKavWYL#v0j6r~<7~~ATnmPpSxcJlHrTv$AUOSg#2n`e9Z8V+VEK+4Vcc>W7JMGJ2Q(T#{xQNR%wAM zIK_<6j-$+niz<480_;WY7GLIl9Y@i2;|YP}LXIsNPh{rCc*3Zp_l4KX#Ls2tcPub~ zsT>RJ5cNaun~}+}K!_gyNOvrdC979E7Rd9$x)&{T!tuZsg$5lR3*<{-Lk_+a9BAvl z6b2Q7T$^svw&7dFQsG7*Wo~w|!1QesB6m8|q6j8~lwt5djrqVG3kFOR23L01k>V1A z8kw#*yE1P>{pBNr^0V#E1>|{i=Yk0nN!CZ7NNGaxS8$UX(yYctW;l%vgu58S!H-fj%TH#$q+90)&w#7h`;OJ8X>bm(<1ryE=T;l|}>p|966 zsn=xo2+L3U1X5*2=K`Bh0#bykEK!fS7hp&YJ_gL1lvIkWnG;sJo|kH@MBG}u30|5D z%f|mo*my^O}{rthpGN*R0%S z&BegHX61kaSA2j1>U4<0m}3M*aXDmj72nly=C~uSSb5klUCWM9;8gJH$ns(rgUcWM zSvSR-V0}`+_K7F~2(~O+D2sq-A<+=*$rbcN6enJ>J;PIYB|~yXDX**31ZC_sz=wyB z8>92+ZLA*UE)hAJxmM{-14YE!t5Uy(CI zS0tBHwQMc+YCdJJ2{A#XB-+l?WjWI0rzFnSFyi$(xgw5|t2oMXQTWWx5+!Lfo#`LH z(KJ>hNms{O^5SIk=}2?=)?@Cd`l=17zGmJ@OMgSh+68Hx#P(VzN$(?c#^EXK6pe*n z6iNYZL>uQT%Y2^{v$|4;i!@K*)Q{HuOjk*qtMEhx@eO!Un ze#)1~JE48v6>u_Wmd)x39YB+kniq$A2JH(%;r%#WPa_mg`@xR~xUhpCm81O;ShZP7jtBAcoBV9C zSprKop8PoNCkUznJ5!JfEN3q#Kfc-HzhY{z8BTtjDuY!X<;9fO4(!dulOLxiB@%#@ zpH?CP(50ak_Q>!s`@xd-d(va5aqw2fY{HR?Q_&V|%>-?Z!TiXDn?cC0%w8G3g4ct| z*Itjoy0$meRLqL+)-JXoF*#}@n7YQ=Xe(j%&;+PKl}}|j{C2Wd#iYq&jR?4HJh2hC zMAeN1Gt^ik+H}=Gs;nwDkYH^ZYeVizV{N!irEVjbR6-k|kLfaGCNcfgARL?uS{Z&O zjr!;4wwI^CGP|3sHGFs_X+=V$JaK%`d!;vL#`qDT!Bx@X`%|07pobnC;dGsz#Hx;A z!Qnt2cK-~=S~AVrrFBo@v6dB3R*;oe$68X~YF(Y{K4)~SWpz?OSUp!}&gxjppuVgc znr8o?ryPJ3{?<VsC=id={Kic4&v9nwFP3T=wKHJ2qBdKtWG z^^Q>@{h`s!B@NK>8a+WhgH*pkfrA^g=m0Mv_lT#|Ms<}H3H>4IwtihxUkJ*23u#gY zgwBx}dJ4|Lg-U+jnN-H|2JY*8ica~_KiQ?qmB7x)J-H|994fff8lGY63_qMkT-NY= zhu}$=NUz0(&m=Jp{lk%;qY+8CAkPg6cCbctJ~^&2J37MU+3IDVEF?)pUS4lhMxT4W zIOHHq*nJSwbt(%2zk%Xh;8iec6Q+Vr!b4I<7x zYgk=1T{d-Nb5^CR(wqflb zz=jelKymIp2cP81W(p~rDHJ0_u>x_Xkg}OVtN?}b=20kb9)KCjry8HIc)I|0x}zm~bqP`K4EJ1R{$#GE=neD0ucGmk5BcegqV0X<>b& zY4SrUaB{K@ByE{FqnB`7!}szM%p3_kC@(iO#c24=30ylG z_7n$mUf1_Jqztu|$LgXCx26@((HE)-ZteB1p_L`I6514Ep_kXv^%^N6;e#;f{>TL3 z4woDhGO(Pdv|5nVfLS!~k0W-^H87XJf5TQ~psPydtJ%smO_B$N_y+v%T`3c}y;8xo zBUBGeP;>A$C!A&j^ocI`Ni0~#>uJ_l!(OgVB2ueVN?qh}=xAn{LTb^_S4%V;Bj#AW z7+VLp`0>UGAk)l`O}Ylsm~`L#n)HD>61KmgOmA9Up*iZdAzI$IdcKJpW4>9jIN!X* z;h5EYOWPUdJ1(gA;1pr&MuAzJ2={f!*kDqZ1{4vU~nn0 zEf`W|YE#b;!e^SA`SP|?pd0qJ_VQ@HwZD|+tqaYWH9r^{fp{}vdZ#?2R1_JU0N9rU zbxB`4{B1T9%5q*o#jMX@7ST0ji1CKr1!1fdb11dyyrvST4~!sr2cZq{bZ#LMqJZ3W zsOkpf-gD!p#LS498^%xUS|ST*rzAz9vJ<&S`1deB7!DAq8$T`DkAOPKn+hhh5E6@C z+{G{KoGTQj-{Hhw8640g%KU(aSH=ij@;5MMf4+UvIpzB*#Y_RvCZlI7D6&ID9WYw$ zhB}a?N)jT1;xi`%eONdU{t$5*lq}{=|9t1pfaOiqvslbP4vM+GtrZle;={Smt$s1P zx0Q1XDzXu;^vmD-G_$2Vmhfs)B(mm67E;DE$%7>KZ20zeBoBUq8<@kFUg#VkHmn~` zVGF3992Zm0R`GInjZ%r`Qg3Byk1p;>E+btQ&$!;5E$R_h&{}nh*MJVC1?SEZTpPt= zwV@)D27^S3>wxF$j%n@EP{p}2mW3|h{Gr-8O@&iu*bc3Omii>lb2giTIoRxwRw>oE zS}Zv8hVEXKwOFzK3man10#sL|+?VOa{+MG9wJV^rx?N>M>hLamwQT@Q;Dct+)y5;A6g zFrBPzeB5 z>jd&%B!YWRLt%ZG5I}9fV zmH-Qf&UJ5z0%go`3*?ZublAHos{pE{f;wXn)Y zg}^?h$-q4+XfTZVfVqKOIZX7+fBidbG_5Y{ss69{>ejf<4;W_4(3#=yr%|O*QEAst zz*LqQGUwN$MG9&PX!X>{_7a1O7=}qz_3J-%3*5hFv9>?g$ z@USJZHMD@?zQV(u;ahh`2e$~H<0RDF)&hbE8D~jew4Q|8L8i}yglYjNkkFX7))7ST zcB?z~Oc8`_aFNjJ6uEx+fiGab1u+xmyQ}%eTwp9jfFJkF6Z{BzBHin1zJr5a)NqW? zx235K^BwZj+Fp)oXJ=WS@qDw(Ce62}jg1I7q>QaQ_DtuyiC`SZ1$L~$cw)%^7WAT+ zS9c+7!G7DRs(bP5K`)9zG_w5r%o6%z-Hk_4FV^g~%tWx;6sSs6NGC%fJtzfw(DP|N zO)fUg=g?0TKtb?iDmG9=_{r4yKqao`0ZO{?03{vxP#kMR-vA3{Jg8iTbwU;xpZ;kR zDKj4YfeUsWQ=b@r+|X>YreO{ELf_K^RB#wEYhHvVA%)1jKy6e^(ui#IFpiSnf`!ub z45784S)o12y|q52Ztb3GSoe&NcP$PVCGMoL&S+AOZX7C}L$UFi<<1(qm9fE60b||I zIY}2VR1H+KYNH(+rmIuJFoQZ}teq9}^lGU!v~O?)Ci!ONqHFn%zb%dW zFm91WZ4s0*e|l+a8gs#h(>_)vZItyp#O&;gP$>3`G-DJx?SmpmZlI8hEX4)rBI~_G z+JmBn3`+0R`57b@|SU)1*@%Rak?fuU8U2iI^&53Vu9^xzs6FMln?GapviruD$SF7DM$#&t&+ z*Y4KlB}gd z#Yi0|)FUN(c#y>>57qpLC$1X|y^qauU1`aRu5fjB(2%CH(88JxM2$|%P=%crz_A=W zLia&B(BL==WWWGhqL8uF#7DppAABMv>&+U;dNa)hT{+)eAUv#t<)DtOr{e3PMwSDa zoj#8NGa>%1m4b6aUdgVJRCJzMk^7*{N>8)GCkIbS0K!?vZ2bM(tr-3j2}Od2f0(&) zx)TlyRwnFr)XiSl6xG?Av$D?KTul)mwq_uPzU{mdwz_e`T!~vx*dMbC;|j(Z3m{=q zqd-Cl<@Jn}cWGK_(yNnpCl9NcCS5DvOp|Vd!68Na1_qm1zW4#`z-9cb% zSV6*GKdb%G@)NQ~Wm#)JQS;EbC>YLXM@!!ASlZZ>L{j2ZKcKd-p zwsOMa^g64^4*UdUNB-X;J0d^qRFhtzI<6+`lrG52`(H@YiH@}eZ+`crnz!SjiH?lQUXfkgMqLS_3rj>6^fRNoFi+KZ84)mb-c zShO48c?Pbee(+{DsEfE|dl$VYbV2?GpRu#AtOsxuv~`ZAUBXVww|}m!rmK@;BHmcn zbXql?#-_EXHu`fk&6IB(b&M?wP1h&Ggtp->+e~{%@5TmT>}G?@;QYkSzzos7fipq$ zA}w1d#Q~iN`O)pQRkk9pT_so+8^?5rjf)IbT!JXWvo{dBFu-vh`gaScf;ewLRmBZb zL!l|}Ipe&m=w4@xbJrQ??qtT35G8`@v^lO|6Vn#~!`m=xN8KB$ooDi#R^Io@y zD?~#-{OBG>T0j2ip0c&cpc>@JF!%UU_*o%7s7o7z3I~RuovD_h-CPPg?ZXBY&iZh@ z3QOTaG4R>;-*M8oGdi|?!i%Ss>ys+Ayi(cC~7qlR-|LR7s!i}IG8Q8yNfcrzLopgw(P-?) zijqa?D<=oM(Pbzmg`yA>u8&})C~B{mHtN50vM$GJ(y^wWaO3oPx zU=5`HavzlFE2n*RUv&a*^wj1}mhGq)YZUi>_vKo~bdqOr>)0muZ`~0URQaSaQS!3DBA_K26GBD7fE8D(_~N<#3a+%_4%EFZ!FvdmU3Bg*l=BRGE~Y{jIe!9m0K}T>3&_ zO(-}5SyW|yvX{=T2eZ{$jj25|Vxfhb;Pi#g3_;1^nP0-M6jEbSNR3HB>Ngc~zNCdBP6!=VP-amPwz`M+Zvu`XqlDJR=b5mvK{ytKH(g$ZEoA`=d3 zzpg-h4OJ?r6rBQJp&CDlTuaBeOetGb#Q1LDEW@&W8o(wNj1QL5p+bv4QFC(o&gr$lcjiEARRh5!1CKDN23LHU=IfEbVd zQb%@QH#;@cAC#Zg-Rjfw=N|(6hhIflFX8E*8GrWp+X&X-Sr31<@~_69{UOihdDg}G zto-ZoXW#d^b~(+n4qgo9|2O{ZPky6Y4tUna;$A*A{_IbG2(1FoT2k6nT|{+u&8Mr= ztzX6f{|le-O8H+KpF=%73-J_y8@DCSmt4=lOx#_h0;1Bf5pX!!B_#22DNZnb)pirvJ<42-NH)XZc^6uZq zJCGPy)#R*oFA#M3yd^rJDWKG9m)Jp`3AS)yYl7+niej932YIkUs@7zUh$_(>;`kiw zE@ZGkZv;BZx8x@G=jPxn|CgMf0w;;ZdEDxGkU8U7kD_nJAp0{ob zPD(>OUG(9e^1f$yL&H*KcuV6={59gunDDj-HUiIeP1(bA5_Jie1)73qQa(+kp`hxX zs_rQV8>qm_dxg*J2B^xCvswN&$lYs=X;TF!@Jg+_*HsD2|l z&)_wNj>cfYteVrr=G3wWgY+~8F_$;c1siZ?+42~|VftWCls%ZC9Oh5;yPoBe04avT z*FGH(7EWFb(-BkYX-4d(rX<{q6W!L37+F2h>>)b}!6%xjscXK#d4_qwao*-RsXN!z zWc0j>b4{~av}wMu*BQ75V6!|J{P`BQT7L`VsVPoB-pK4kB7$T@fV9ig^Oy*rj{Fk8 zN1*^W3I&AlOeypErIh&;N|{fgl=&2U;QlC-GM_>z^C^@vpF+Vl6gpgrLWfJu@6Ha9 zUz}e@N0v7IW->eR>jKzC3mrA&BOCafXiZLP3MDQSP;_oY3a;tQ#)uWM2udG^Cq5jb z{Oyk`NF9eg0@Kl~e@#M$;9K!+>~WPOw_3@aQ`}m3kWSB)FA@JTC!M7W+(Sc}oL&J# zGsS_R---R(S%S)RF?VJ162?7u1(U%+3Zm_t*CG0SI|Y95ucv6OF$NA9xH|c!e9jDq z*jyeyi?#S@J{P6uGyB!8BssSKX%x4HJmpU-y~GlFiTQ|U(J{|QOwEq?|YUgwSE z_$?X+*TFAL!|;~K6jyV=oB=LH`&wHeuzq`g22!QtI`(ABjsYSN5Jk?xVoEs9xXEzr zk>E7UcHpdOrXk2ziSxh$;7G|0e2!iP1UYqOqL1_Tm5H+SlXUFrBNh{Fhm;~9j z+8l7e$1ET)QMKhvdBtUpn685fU>IZ_aV(EN26GFaF&_mUOaSxF>9eexngGt< z>)_#Sz5dQ-uY;I?(tdKUW4zIIX}-v?{4;* ziX__N@jAKJ!EDQ12fu6gRi)Q%PF1ge>DLfzY_5Y<)oObVdL3<@VpqSb+3Vnfj4feu zuY)ge`6s{I;n2-ss0`MLVd=(1_561~l7tLxT+DM|4C;T?%}6}SIxQ1M+H|W+f~m?QlT;= zOU{#*04brA%7v{LuTGSf4nlH>f>#buKx@dar|)hNer!Yb?K^0TzB@t@P(K+Ag)!~9 zQia%2J#$FCsQ0F_JUR^W3Bwjv#Bgkx2#9NcU;RBm{ubuCO`rRL8R-9D%=Lv2ZIol7+4h0Hfb=_0f3#zA; zk~;L%HGk@r@?} z6N$iC3Z(K*9=DV$BP+=w@cHxxyo_ws`zDWc%}N;r5eP16^7K?yHGgOp5$gr2uno0}^`!|qq zQUTcB&4w?Dd$+dqfuzfif9%DOIQHX5Klb7>DIfpXi>VyGaaqYop5UG=in@KxcOV)d zg7HhQKJwioJ>YZ8&7ylGSY_a$Pwx2Ix2dlYLOt~@AHJ#K$Z$6id{#EOk9axpec6x| z?_}Fg9p{FEjHe#3q+ePzIlcM3^PcoD5Na}5D9mk*RjjiML`cg3lh8?Jcky#M*@XfQ zK!>O1224$~#DYqpsYBfR- zI1lN@YQu0H%x4y>|2A`)HAfQd$YCVGW(P&DM`HH2=15#H1?jS*t{_gfGF$PHNzup zIu6MCz_@wil(5sfHRTftTs*c?e;Lx+4XMSR zgtr*ss%gVK;R-WmL^0LAcT?mk_-I}zQiLptSa!?$ia&vI@x7pdr+SH40dWMsp^XlR`j7At0j= zkWt9MNg)I0V7D1KDORuradQ;|CxzH=3bEf5V!wGsht*K%_-~4%SokPz!N$ZZ$H+8D zaRGp9IfTumc@OfgB^@T)CLyBJQfJ;SE#BVNYa~pQIq)Ef$>S={v5M2Kj+g@(7hCtX zj+v6n?sKbOEa)&nR9QC`^YP}eSd>K(1JZRPX%urQ<>M|v=$iHfRQtG4qGKhy#nh>^ z8-xZpWXza`L7<;DGEfE0KN`gfdIxd;Ao&ey=&h4Zncp%^>`89&q*Gk)&JI{UDn+gw zkvIzg0^~T<=*}Tlj^aSj1I&2W!#=E%PSqJR?AzD?$_#x=K8#9tA+>_0qS_qHNQ$F@ zv_VCxY2A|dU(OA#`&@S(%BSvlxt$HcongNCvLcnWa=QEj<<-!%S^APUvo@Yk>TX@x zy}NW}Sy|5L%BFSNV$c{<`DV;@_;<_x3Or8R$<;kdlGX!!)8$<}#|%(D#&2bJMsE&` z`6`8ViC%|7N^E?E2$F9Obv2%3!+$jwaZR;SHJ-ue&GFC|aiv^M=@@fQ#3vWNQj*Ok ztrYitrF@;X*h(oekF6QPbG1T$^GsK$u>rI~iWbxgX{EG6S}CoN&KPg5kXA-3q?L;+ z6IrTyT`-t{v9VxiWdaVZR>lKqMF9rULit5pnJ62ImQ`t~E@WjGK>MIM#zv$B9bpHd zs12EnxLUM*#OlN~LFH4Xr?rvd(%20<+kD#dvTe4HZ1>ncvY0Vn6Y^_UyGL`s`R)lB z!^Ss_TV9=(*PEt2{L!7!6k9DzFvXT&OmN@VvpB&JYl{>0{sEnhVH;+uyJ4n`-vM9N z*vH~p7mNV{_r&QbEghQX#Kv#9C5&HZ!N&2+Eej+q5EbM`& zBTnb;PCQO2X08Kk;{ar_lPYvbSr>=wf}?3DPFYSg#Gh+{S;*WdYwc&Gox@~0Lm{4b zl^D%T2A&v=?LVud#vXdbYu9B);}D^NNSD{Sl>F8)yDO0Qb{`A+W@!haP&(`cg7@g zRqb$oE;#<>3gaUb@?}mPEz8&Vt~Q!z)bX6VT9{W*F0dA+)$Sgri6MR2IMl}|T%$Ke z3`Gii!ynlh&GXgl1Y0$;lZIU#qD;@btDT)Tdr!4;9Q07fyt2|3k;+Pkc+_YDw^*Wq zo4hfIqBgc`JZ35#GG4;s?g1Wg=yAv(tml0jM?Yv;e) z1X+Kut2H2QcSC}#tI#Zf*WlX=sTieOrf;?6c->~d&V6zikFXPFw~U>$UGpb_%k#iaw%?OVC*)-e)~b5RoHLkC}N)) zeW)Pf0P*0dSV^wfvO9<>+|igu@{la+=vm zf$}Y!f!~!r?Z-9nuc|BGf+UoONlR(}T&0Z`vW5krYo6Px?k6afm^`RUXlI@&BEBapXwL&%D>O{os68{_%UWr;{XkdXOaiV&Jg7 z=NmZre%6oM@p3)xDl^w}H*BO?rSqC!my0W%MWvk2|HI6VfR0`SmIR5sT<4mWH)&el zP*2MTpNQ$o(nh*6n-tiyXE7U3pkBVAcFMQpM)+hm}t^G?|6MksQ{MLl7EOyFzm zo(oiY+!UH08@!muupvCdmv4xW;cN1S7*AJ50+9C+Th!bHgiZ)!?DD~oth zZXAp&7wW-~t}JL5>g5kRe9~Y{%nxA9_$1#?9?W>Uvb2$|EG>WJ=lZ)nmzS*(j-pexrT-MVf{{b-NM+gf^uQ~u)+$->xX8Q(z0Erw8V=@i4hf2@JxH)M*X@6 zzm!J3MBM}9CDg1DMY39w_SNv{71>a3u3>B0JurJe;MSPivRGJ?uaGZK`&$jta9rwM zku7q9>A-@C$h?+vsDaY~SI+c9{%p%S)``l1v1KzlZO5%hI)!<+tYi4!N{?bLk^73l zwWBGdJr>;^-#AZ33Yn=^u=m)zP!M$AMei^NwMT8;G*g~>)-hXea6%*NSQ@jAO)Kjd z)InLtAQAiJ?`7LHjv}W13R%a3`e8OESyaO;n!15j%CnC34y%h}S;wpkYNpCMMy_vV z9XnUklT&}ublCq`4`&eGJP79cqF1H<>X~=xKHydT8o;KTS-yxv!eLsezdBLnU@IF8K2q{=uska;P5=0@haeq` z=$Z1=UsID)e;KD>0YR#O`GlImG464x7%yL#5BY7|6-ok~=`MG3v4rhLe$}?;S8X@) ztJ<#nTHa!h8E@KPWW*CiMuuGuXKGnvCISCpV*#~ znZa0N^W1|;)6&$^k|i@!VqCav50kQlXtWm6nbDf1Gi#Tqmy2{4BEl#m20f6GbsCC_Votv5 z8++}E#nkJNO3Z@=8IPw9Q?Eb#8=kAJQ-&mBR@-yYYfnPvymkIGka@3nHF_Nqk)f}zdfiCI)-OG= zn0g&ji3Qz%zx32$>UB)U)+sOZUR!O?MXx;pnfH3N(d*pXLC-q5*CVq_sMn+TW`OI$ zEf)0pT@QIOwoX~Zcc|^T==J5+hWC1{(d)~-9fH9o_j;H2IwWJ;72gg$|B|ZbANo}6 z`Ip3Z&e`*GXY{jlD_}R&dZ=CCSg5n13>BUelM{u(7x>`(M9mj?`?U*4P-#EgU=UML zLtot;#r&u_144`>p}taNpv;%;2lopx%@#JYLV=Ux9tu>{t5NZM)p3pH|7`zVq=tJ; zPCy_)pBr*rVTO3L@$4 z44kkqoDZC;d`AvW8T?BaU1OvF4#4ND)AY`A=P1L(l#us; zLm4Tb_?K57zYgwkk-ahX4Yz3Ck&-wCoP%Y4ysa&9}n`*^z^VWcV}N$gZ>Hq07^UuF1dS zuEAHN=^b_t-+>}~AkQrNCmmvwE${xJtINB7=xTA+xzbumL`Vm#e4%JBb~+&l z+9GH(x%oDP#O3CI1~)DpcsBef2W>Wxbc^X{rHEF7!-q*OWb|>tSnIZCj59dBPCJ;C zKmLJk`N4$1h*m`3Q1@2FMRd#J>f~+2#WARE`8N16<1e5BUT;RdI<37GQL24yq?VOd z7)H#v?#8f;ez)!Y3RTitM8Tmo;}=N95D0Z_p)z4LzF=ioQluOH;zl7q2QdM#+_EbO zj-VK^3vQ@N%BTMA)x+;f>2qbQqQ=-~*JAIi`W^h2O7z$ZKuarnER7A+#6@u#CFhze z#!{^!s}M)oOxEXwMlZ`86uad<m=Y z9Q<&nm41uPr13ya&lWShxxF8-*TNN8lvH#`uV<;2WECbPP^{GhMVsV&WaYvDRbY{m zHjVW<0-8!jXkZM>ak`~)UCmvS%JmUfj*!BnZ%0=5PK`2NOu%W%ImHHL&Q6j~DQHAN zBus5?slfrkzNM_nMx?${))KVP>plb_>ZE%BoP8D0ULF#b;EQsCPL{XdFq=;Pj5K_P zDAf;k)kz^`Rj2#d>(fd1TNCalN>)N2g>9wr6A%{zGMyIFN|}{0Vkz$y4v%K&h@v6M zP*_-YnKaYP&oG7QC^2o})AOTNn4&55@3l5NHJ$y&-SOL2Q#yC z^UR_B_w+v})YhJ~JKbKqtFnHQwVL;vPtx%ReDn17WCX4p;q;Ub$oeIM#JXy-@Oes= z4gf7wn$HqPocfHisICoxb%(NPPBDOz=*8yM(HmRU0Ak$VV2hd|V-r(yEfVVw!?n0jB@UJ$iZ?N1=T+NeP&vTmJa(tSPd) zTi&A!zBk*_ZF{r34Z8r~=KRdp|6rZ5xY90`KdVoZ$;L`4>q^{iF!O2uig2LbQ)KOw z;lXGxw7d>rDdn_TorKyf#{LGBQ0pQXTkRHN>LEOeD`L0m3tr zc_Tvi%;%q);o$4m`bdU7wf}^|IoUB3+A$Q`F%xL3M3umv*CB>gT9~+C z9h0P3k2Q@Nl%)J}>+}A>2A3p{8*zplDuEVg>WsA+AV0iYPv^x*V9G9tBo+Qjd;0toj6N z`33IB@|MB1d}IYAiWiBPJtP@}4}{GmNnbE}y7i9Bk0o2y0%C19g~>BcQ$D6i+Q`qE2rXrwYLw=H8PKL0Qbm zjGJ%pc=tFt<)ZNSH)WL&4tnkdjDB>IZ~z}G}NN0mHgW#fsOQynx9P zE4?6wZmC$YdPy%xfC{31BsY6ZoBH>G-24y*xpR`6C-lPe{dX@eNi?67ch19|K+u!&j_YTW@;}`V6RsQeKOUjcDAN;jgMN}`t#-T9>9#ln z;LMpmdW$n>GW*-+ud=6ca!pB|{Navr_&P43>M#lDfYQNxTUiT58_MzA&RiB7ag9E) z|B^Qr9g|te5_a~b-%3U+xrp-P180+OMIXnz7v24URG}QXq|fHV2mPD<-Tup#WeaGR z-^N#X-DKh!QEZ1_Aa|>>|Lu3-;)1LscYySi-lKO^S~d9j&nKZuHP0`v*xJ_+nG7C$ zu7@H^JRH}bh41EjAIJyj@IPWI;o`WrN}{)R`F)>Dqy%iC%@dIcZ@%=6ag51buvql` zbIFO}JEgXie(2ji4=a6Q_y;g3lIRi}Kdd7r2L0j0Q_ddLU>@S@qj?f0B~hhJikIGZ zc)Bo9crbhJvmll;J(XuXBp9m9Wthn5ADPZ<;$DC1weKJNePD5Z?0hWFZ#~cAXmbeq zo@a5MC5!WkKX{(Sd7j02p2caz)qe3F! z+Q)~}Mbf^rgsU+Lzr2&kG=i~%ot#%>JS5L+nkUPHz(YYs<0TwbgPjs@gpZK%Mle4= z_=h=~^E3JIKhMYaId5dJC`X2mCd2pcETHwgmt4O*__Hs`WJ^Sc(oEI#Xd{gdsU{OT zMll0_K%sDXibXgZiY2tq6g$yAQ{)&FDRz;$i9*_Eiaj_Clgx6Jj5+*TLzhbtvRLjX z9FAWHaH{5&3(!*sl?s#mWSb1J%rcq+BEiszt9&?=PoX(vh;T36<)Sa%wku0?!~5Mb z`gU`kwTo$G^tJDwM8Q5WD(;ER9uRvr`HQm|9917?wa&4cqs1hzubg-LQHiM&mwV-- za5R1RKb9PSDozWc5O=23zUDKY4@?z5gZ^|Xszz|pobt?6sslY#LYn8@1! z1GWvR#elW`@Xzt)@!nP{Rl0&%#%3lTgb+MSE;bdF{Wh?-02|ZHT`jE^rYM?qDXIJqGz49!g z%Cv(j7RJ+b*g>@gsLpC64ApH4vj(iepnz>)iv1U0hCB`lPWroFlzpPD`DqgofEi2r z%J)gp$s*7%*5KjxpfZM}59EDcRJ<8)qB8-^02}K`AJ9cA-~q;S^F%@8iSr3CNT1`1 zxlwWsI74NQCj4hp;4Bz0Y&oht=)yDL~6rL4H zIE&YZnMogR6&Y){Tyzi0dT~=RbE@di;)biuQKdX+F~^nnzTs*`3nu0L z@!}nCxOx(z;+3DXSNNDZJg55GxZsqMLX%MNc&Lm3RZeBsj_!Rf$DCkpcnXBq4_5*0}hhd6; zdJx0+V*F27wZ;VZHJ5Sz@bCJf&L4+U*7HXOB5dB8KbyTSM^|o`JrClmW-kQsO--J? zZneDuP)A#Fk8L`8$~@lyP>VwtU8@2HKNp z@#FeIdqmur?}Mkb=;9Y5?eUO3=}kp@er0DFV)Z1_Xr zYYBq&3*m`h)fPw`|=%Yme!wY>PrFDMO zp(icT829e0@7*8o-BP`FOzeLU2!xw}9%KTX%RSLVs4I)@p z&LNtVCxIUIP_@X;G9CO~1|Cp~ze@-wjc%05AQ_CN+@VEIchT{rp?(p$=RkFNvfx3gRfm-oshN_(VkZTzF*yYi;Vud}v`_$mIv9ZrcB>SG4#tBK_=OMc zehLB!55yi2ye|D%GWh@5dmCuGj;qe|eB94>?|bjQC)twqWc%D>*_JHHR%}I*9RoV* z$g(0E=aVEfJ(D$ySp+FF%L>MeH7!dHF^PIez}-zIVVcGAbemQHhw(rF1A$f&hbX}b zPT~a9gvMlrZo|rl8N%SE?auuEyQtFzb;*fYsxCx<0UqfnvbwhWaa^uzs;ntJT@7^$1%=wjmttf;wgiKF z^Ah*pApL+EESt-wbUIb-mQb@$ZpyCXI8#y#Fj=Jz%PR&4Br7LX{!404VP1^ZXQ)HSTfYiL9lB{E zI53a%uWai+%htWId(W}qj8cKx{(TpNh5M%S`SW@qlwKU`!~WfSfjXBzwYw=*=J6>i zjt}OYed=*9jE&s4OV?Upnlg*Bj{qT>!FkLDeay_@S(0ivF|@2-*7-c$n>T0+nSf1- z+rOimke04f>L&<6<<&b#8Dw2#O9&R1U6ha^-GuL(3+xF8P^fRxO?WMf6Ev#6xt?X| zh;G6MwtPSBF|{#!7YxB3HUo1w1DVG~aw~Rfid#^p#}kgp;{4>xBC@o@#WCU+M-MBg zci2gHTQ`c%TQMf17>u&{=RY0u9+Dr!?7|ANQHuK(qX^T>?q9`ne+z#A9-KK(16pt zPR6gKd4AlVkQTAh3ONf}bMUuhYGsJg);Hc7daKPE7^i+(- z-|Q`~q=3`kruUU)tc~(*4rgptFuP})+_txYKDYts&;2_0dZRr`-@&5{O4j|(5i17Y zFFjcC4Q)gqJAQI7G5ijJ&ge=jinOQj?wJ!#cUUT&EIxtNzVv<#Jpq-V*tJZ2wuP|9lK zq=hnkqAO>cl3jAf{0US&b@7mGF1|gm9X5p`By`NA&Vf&P(GZsB6~D@O;1@qO0zP4c zP*xr{?9Z7mHkpUqvVK?^KV9QpU;KA%F1Vvwr)e%q`O2}v=lgNw{)7@siv)B=0?M^W zI8+0-XlIY;J}phLzTSiJB?7x}gV$>e9@OCJiav8X!y>l8kq{ado(?#XgPcHn(s$%D z#zVNsRvonqaf%tDMeJfDO}0$$z=1Wk%GhurplHD8GjY*H`lIyB4IKus;8E}5H(Z{G za@l6or2A+b%bM(uwG|m$muuM4yAJkrzN$46i@TfMhb6+SC0G!UiyC2lhMTiV@x5gf z%z|7T7t@QF4k&IH1sOE9Q9zU%Rfwr38NZ;}wG>E9I@S}OJ8%V@Q3ANkaO|ezZ2m-v z0wGol7Dp`B8^T&07$hIUAO|^Sjxy{dVf{4~3j463VjqhpND>*dL>L9?z$~2{QU!a( zVwOG%1WCkqvof%d;i%?bZ;Kba(XUxyC+B!0<7W#LM{oPp>1^EZ8*aD4#$(cMh0URc zn^i;Z_jUv(l7Vx-2V*smY%(>-sJ*lTA*<|!cal|6OtYbB+CqTRJH&EeIAx++hr^^(b6gA&wc~XPEgvv8&I(kJ!WrZ)k{7z4PoXR8m;;0@G7TBTVkBzXJ1RHsp3W-s01L376G*w1; zd4%T}RM8aiFj3fECA+=alP`v`qbXX@n81#V_fuP-E2s8sRe1tLSCxbxno%53Nl&fu zqf!* z+3$+?9KVF#Z-uvcinnAsX6hqHmgxx@bxnkmQj_BT_r`;p0=fJ6O(J34B83RXax~aR zeV*X0zJNisWM+idTmbrJ?nU3E)fat}RzC}L>f$&5L-TydbQ6LO^eIJxQL7XQXG^9C zEKsRK=Ed}9qjMViv*)HkV>Ne_e!%cClPqJj;nysQJ%}n%-W^?dwONo10~08nk{#V; zkVVJQ-A4Oqbmx-qPNX}wT3Hrn;n} zx&*2VGzXIz5&I`oTqX85>kHT-g8LRPP++cKptLeAM&M^we85(Gz*c;~Py(&^fU$&U zQewCb;ffC!d!B!!K4Aa5+~P_tAqHwEU{p?EKc^SG1ZGylAVVMv;0t}@iWk^fdV&4> zRYCi=;sv(i1$F_v=vKVI*bQG`&%}S!USLnW1N{fu)8bkEI4>`-hk7esVBS^r#oz_@ z;HvLMA7AkTE5-K}FR-ZhmyNiMwU1pc{t-SU>)I;eo|K^2 zRb*zsGELFJGEJdG#uTg3)KZY$xR;FA(kN?D9aTPKSyB=rI=}e&8@G}I8b6Ip#(QN+CPyjevn-Kfo)l`u26BK= zpe7CJcAXU_E&lk!&EkgQqyLrjZP3r-z7ZPFV)rhUE(x&%UND#LQrVU$RQx=@Za2=CbgG;x~#9V6HemOkzVDNvU)(ya!qMI-ddjThb;+v0= zF&BeC>D)vZSL`Z6rCl=!IQZl!r}+gMnME=(enh=t>@0!Uawb^l2qM^ zU6x*gt7HkpY>K6zL?`cX__l#_I6PvrU7_0raX3_@t$7-5#69ALbvRUvW$=L@FriQ` z*%#E|a5SjX91d%@nAf&B9QvSHb2uavXPFL%!7rUaLwaIyh;@fU9AK7oI8;mA;#9Vk4Vcs zRW$a)SYv12r2uV{yBTV8q9MVy{Ac8#D5phc7Uq4BRv*BruN!_e!;gmlfy3K!UNlEY zfFap4s4q`Pm*yFmEJ}JFZflLku3mg;!VljhOwaBN=g|}wM-CUwgE)O>eVkzdJ2tR2 zTOMc{)L82cDh8cOSIBvdXz2>s4X%(j=MBP;7P&%pKY%x+&N^6eg&cK-{5hFNFSsit z-W8QAWH-1%cFiVA$_C`4QJZLRh2%SVA^byhg~WkJu8{cnY@}GOE976V*jHEVt1I@^ z75nPc9u~+I`|3y{kbkuH)uU%Hul~!^m{(bS74fi=X5;MAZ2aqE>N11 z6$2~Sv|?c0U0kR%8_(V64Xh9R#Q7Rne`UqM8gc=>7!0iM|IRnC{^E*(b#dax6$7gb zte;phu&x+bqoPc+@y=PZdL=JNnvHLv)oUfq#<`~1IC=)77u(y@8@*h15sY5{F!OA% zg?AhH7gwH*)FPneKp^FU9Vn~gHL}!MyV9cR3|xydWM%R5>y>9CRi2F|h9TnfoEeK# zV6hYw4V{CE*fVYlAm)OTc00pmIYu^^f50`D_)BpI<2vw+!~L`TVKZH$-ozKH~N@6l=6eG5(Gk(L?V`n!YyrDmXj)zEN?FHJ&AgifYb`h@20p9W&7Wv zBx{?}jU;fjXuT?58u{P`&m^@Rg=KCzk{a%JI(c%Z#>Dy%DCtf;APA_VoXJF;p|>xH zMH(^yvQ&^4F=o6HSGcj?g`R__q!V;0O$kfk2w@vGpMRVrbE%Xe8pYb6`K*ODXg*UR zX&_UwUe@9UmB*jsC=}Ndn(?QmshKR9YifSVOr?AtM!=^p9PH+~Pn%2gGmy-fCIo5&)gh*McRy%nW zB6b0qBs*4sCb6VSNEudIp2_Kkz8cQt|gvBs&d1T$87d&@=W&aq(-N1Ns^5(a$VC^nrKe$)5P0EPDH%=+*WT!Z|4=-u}vkUhg*>No#T9_F94w z#P4W$hQ#g5-+yo@qVktNl2`(BpFqU2I)@_(o5e%Fcs1gYE2UHz{NMl^mmPyS(JjO+g1#k#t)<}E zdWxP-C_qryX(=;eq)y3gi2M3fr_YvhwKdJF$>1ptGjuX!NS(}^U-?*W5}(FW=bs_t zMWZskHVC#I^9Nbbb(i=+a(cw64zAAXq%*b(RN{|0^LrM~9qlqQJIx}Ti_~Y_H*!d;J$;J5Nx3`R24S)OzC1=JT+{TuTLCpUM1~Hju zfk6rbi{J%@LnMk1I1~;x8O5P85qPV3{Nsj0LgE}$X@JmdJ9~NaWD(uUW(thV+6zVN zkevc!d(LFH{$|aYcGS?Hn2o%!j1KVTfBh_3?guy6epC*0)sw&BNq=yI9jwHF>Woyx z4nt4QUEY{H6tnxHd^q+5z(G>BPvR|(%Kp_=0bQ#s;~ZY*muDQ@EFDgTtbtIQ0T|>WM zw+#TCe#5z|Qwx&r_H+14CgnkmZ>B|jR}QB<05lYws-1JxC4V@FN5|!IVh%~0yt1cf z3H)2|<}|2_NUocrqRCJi>~))H6eKOu-_u?2bBd&Ia(%ozCsh*di|kx04RUg1u};e1 z7*BFQ@zOqcqC2dIJR@n=e|~;Ao$luRF{SJ{m`&TsJY6LQ;ZR0%&2&eck&=a%QhTY7 zR)?SD^5B_EAA;KAc00VMeMmjMT|F(JNHkk~rY@pn0tSx3LV3gZnDVBC43N=;>9Ej- z4rudm@qYILz}8~WvMK6jw(aPx$Sq8O2a_pcrS9=lOHLy+6?eV0Tm;C;_3}t~em=?v z%MLZ7e9%5Yt6?gyzRay%8v^pXQzf2Wopct<5H-|4<5B?kayU;RoTm`ZQ*2=QrdY0i z)5{lY7l{{ks06AKcTh}BDlHC*UXGv<4))9Jp4?0(3v_S3FHqQ$if(}rQjLrt!!F?M>Fe7@IX811&?;|fRiKaXgb(`5#1DR zp!l25{^c(-a~VGyH$|H%R)fPO#|D|;*qpSeljg`-qu2+5V+`E-2a|Ua3~8xou$%P; z|8o#yrq+3sgW<1c9iUaIrkcXiEzv3#ABV4|_H3H&b4#?@-R6@_cbX8KC8E34pO#xh zx7oQ~1Z2Wj;^NOg)Io*ndh@3r>THZ?L)~e*?(pPFu1?o0J8O5mQ*KqNI`uoHs`$e6 ziWT>oq+>h!|6%Vmi+Y%mFMaYeKe_xFX)DFtIP5NG+z9MmxVtd0b4b=TNk71j1XIHP z*`N3~h{L1URIUFYGuWi}!6uG4m3rAw9BIImyC9R(W`o=?_bHAFW!(M3T*1BwNrYdy z&egIN=Q)(8B&u`BmXwGlQW8cbPRUMIygU{$BVKfkH`2N(#}O~QVw^M8jb{e&BIuN@ zZp3`$9$ZaJU>7P`^(u5DobmJdUuqVsiog23DN^_8Y#^^P@3>>@kLO9(tCN%B7e0FlqLNMq^4f8$ZGt-40l$2pogzFb1oTBUpuHZP1KhR6 zSPZn&g9~U{ln%UY;|9<{2c8t4`HNW(bU(a9Z5IIOX&V;@^u;xxr(H9xrGTEX?*ueQ z=L%?dUMoP)mLvVuKMX+6hIcLu(1RM#Yid9bTr>Vu!o?#!R{}j3-qa)m^n3~QC%zQW zV?MldVSrv$1A1)@=vA&6J4|d6daN#iULD@_Kwne>{fB?b@?bc9QF!OV0DW-{=u2uq z`)Fx9iD?qhYf7NkIDp)KijiJh0{!fthml?z-nlS9Us3~lT@C0FhP9{Wm(!Frn zpL6f_M*!`73X~1>Bjrdh)M{Ij5M?5cO!Kge9aXDvd3XJe%Adae0_~{G%!S}B@y8Ay z)VWV4Y1*lSW0K~BN!mOX-xL3Hq;NKNw@pX(qk-;AJI_PKK)<5mIZpW0rU8+h<5~%@ z%9{tF!=^=bv0dms|DWUMdu)U`!;%w0{q}*K0+v6r-Lexv<8nA}H+CGl^`_YM_DP{Ez{(*&uGrc;5HN*7*MswW&Gy2O+I#3#NRc0OsZ z_h+4CH3!FM4Qc&aNB122i7Yvib&h0HN3#C0;T4!sdC;~8>5;5^BWtr?>RBNINNYyxR9kMhU>E{PYf^0 zt~fyi-88iU!zx-EuBM1y!Oe@PixX+5Pw4KNboU-@9A}0D`^8DW!+EA)6`w^JYx^bH z{BV{VbG9?)V@^pMuH(jR7BT+WtPBjA)!A&#LC)@tG(ScZZ$cP!Coez~Wnd<~7~NJkNy-8mb#Io%l^%yV8Jx`@eK zag)z~*-_V=17wYD&Sx{eWo)y{jmQRm2AD0HADaP9HBO%-ve8_g0V2z`UOU zqB~DF1CY6)B18;{WSx72`Cuiu*g1Mn9>1P(LApPhb??cixJ{AhUdr2u>cUv^sDhva z5Y(suRG`LJ0M7c7^ zOhX-}eqbz)S84V8_6Kdy(`R(UQVqenv+vUbeqnWWn? z<-2x|T&)F43LPRzp+h7olpLC3BV$Xkg|THPy^LLd$c}6}uK2EkGlXd!rIk~2^_=o* z|KbefrjnwW9ts~jiheIgr(>Hy#J_r&1br5ZbYf>Di)p~(rMl7~uCQ%1OH5T8PatNi z4@q?nO23ub&5mxived6giBFe{`i<6(#lTIwu(l#F6nx)dr5 zMzS*z>2gB}eDjW=X$+eXw2HDiDnm~tm6uMsX0-9%(Wa)$6_f1q=Q0;=fsz;`JwZ!b zxM>Pr7QTAe8dY_y%yz*cvLYBk&9T+)f^KuMRu`!@Pt3Sm+nR1Ylsc zdXQEnk&Y#!K)TpK0Tenjk3daQlD=aZr0TnaGhcsNXX6Y!!5eHSrf4-**)B<;@07{y7@|% zGX1r~>vZ)45I4n}U_BH+$O=gDX01dUlefTKDDD(j+{CK5O;<-)MJeu$hig^d7qiGx z9*KNAmMqLN(S*Q?y@`Lg4Qk9RytVom} ziiel0JQ)u&m5;{5p}s#A54Wp)JRZJO_n(Z1xymob!z)xi6%RM4{Bk_JQsvX}@G6yG ziHBFKd?p@}!ggcwjd-|8<+Jhd8kNi74pVOPjMncNX?xxA&{8MnD8F9mRPDDhHw~#7 z-jp>KrwV{7U&-U$hbBIP7$)A|=4w1C;gg#0_2v5!e02S0@i_R@E-(PC$Gy<7?WLxS z0VM?_A}7FB;6hkDTSJyWUMhmJ9`_}8G(rz2z%pq&{Hir{iV(;SO^hf%Fr_6%$ZBLr$&A*FdFOk)*9gZ0Hue{wVkog&YBLs($Yz*O^mQqe5tGWQeTrS z5r8U19H-11sHG`WhJm#`{nJaA`o<40aMe{lnzico<~`2*wXvJ> zDyNRY?madQ7uE#WNrR2l2>#vQ7PIfl#it`47HV*+sp(9D5!`X`j#4ufjLDha&wDyu zeR`21T(UpYNI$1pvsf^s&Fgc}a=v9}dK_h=zMbLQT+d@QKhI*7U&|K2s>`J739~^p zjpDKYcXmf|O6HmO{s)fYIIdr(T3Xi{#c@ik2F1fot&I-JoaPJbItV{M_)U_0QzJT| z>7c=mM0~bM1|?13Rjg*UZv~Clw3}_$jpm*o$L^KwM94BzKeGIm=yy0t{Cfe8i%rSH z&3v;Sa{(7@<}5QLgD~U1?5W)RU=!(v^5Le#Wtw%$G@TXF9c&4%q!omk5q6MPNtUW5 zr}|Vxo_6t_+*ItT)Sm&KJVm{3t>oO7nUzW8h=+ZmaK^^dEnsT+L|BlZsM2ZOK-$4K z;=-%iN>K3l-pJ@9jabh=2RFJk?=BE=rHVBEVceY(jxMPhuZJ70hN-hk{A=vUwMhK@33<%*h zf-@z`o+Cm)f!-QP>wtO?Xlu2_@{9ixE9N28w z$Q#Er-f6R;F|YGZjk%GOpMyFtbxPf8?B@rJz1QkiJ*)Fm)6x2|_j=iH#n?L)Zy0;8 z=B*&SkYf)Obdbwg)FLG0hB|L!t#L(=6H^E)cu+6PkFq!TtzO}E%l#3$ZfjFF>UV@= z-@qYT2kKcYw-_L%C3SrfSK0d&Xi|ScS@@ z?TXST6GZa&g{!A^_5N`6tgarht4-mPP0>#xA&l~8N4SgysDhet0nso9C;X;V|T?q_b$5IyMwRC zy#`7jn!JZ z$p~0W;butBJ5=osE>&^yG$vRY}{a9cRZ==l48c?l&uG1)D z(6lm{8SmYlcP43~M$E(yZkAb^5o74UdVD4u81O%AC54KZz56>%+pF8P^eTlS6?W`}=6%5DU=miay z)K){3|7KiCxj>8AK9~rOwU#walQkKT~j&YN^yXt%#VhmOcxmt9UF8F&t>LX7=R+YNxKOCyiF#MCsO+PHTn&oCY#| zu!<@*{=kYENbFlxHnUZBVLGiQz^e~ltJMTvU95Gj_odfDRY)BuSLqZD(QGH1zTE^T z>_OS|p*+1q69@)37nrejHcgA{wbZeK_f6`iyXkP2TTL^Tl%w9(s882M-EQ=7F>`zX zlSer;`8sLf`q{dJ`RY=0s1CXj*O<_{hMJdF0l6FTwvG5Ijdm<-`<5b1joNaWrT5GL~^R2Y452WpG=ZY-R`K z1Y2V(_y}+e=Stq1%_&#nU2k<{Uj~233$A=eGO+fmV`o^>2IL7Z$AeG2vM%}Lj<`@( z{7JjW9d(Uybfl@cctm4jfNBYwu#_{b$~Ujw0TxCl5!(`W3hPLEuR3K5ny&5-S5NEe z0lV6io{Tjg&oU_VMuel{|jRE{MWahad4B*4`j=_{w^RuUy>W zhfmw#dQDf2cKE7^9o809Yc|~d*e#H|sM>D*Oq=80+zs2uu)aUdgNa(eCzpC~YN-co zt<$~8Sz%|{gdozQ#lleC5;_$pSuC5Nd~wW(SDW_SW{NpOdHx|F6wYd|zbSnr%{QOO(*5+CyL&0(Z1bM%ICp8;`Py=> zB=4fFtpy>oJ|0g+U?^=~M`P^;EMPDTQ!A{)q<1WI=XA`ur9L>(pnqNTqN=U-)a>fW#pxV z7;e=%scO{R(R}lfY@0Q=Rn2Lg;YT*0Vl~HG+17jV>s)i~g?zgf{*LYv0FiIys^`0L zl(*;v^^pqztz@?KNWN7yYc}ch>zOBWNPdQCb@RxOJxBPw&;^qmg6yCq(t*fJNRLc` zoUnko)f~&2eG_LCJ;Y)Sp*@qz8NgwB*k5fjOmAkJ2X87iIV2yHl4&2*W92a+MB=I6 zXka!m3e%<(hGd#UQ}751U;r8*HzY;hB8*EQ=eM#vq0Z*^-GQ4u4E;^yW)Cd&01}w| z#l5N9UWlW~D&X~y;#K|qQbU4Q4*aIZt2kaUHH}uu)Y1dUQ=SW4Q)6n^oQbJDY)lPL zn9b0Z*xG%7Dr?}ql$&5aJ!aQIz{H%80I9(+@BYn>zcEyTWpLv<&64<1@Pxft5d!7< zwAtWFV5n%Hl~|!wY!3V>Gvi1(05k}9-r^>i6br3li+j^=y2F%;KguZzHoTf*jVzmu zY_05^<|&2R3}ah+d~J|rP~D`vZvtfS;Uw&a0rmnF9cNtw4YxVWlRbdpDYjLM?N);g z9x*tM^}ES{q z)4Dh=dx0K3tE>0fm83Hn%B%y@vTTjsAD1;h9Q&#z-|a}uuJ&+z5SNn2qrr7J)~Vat zcW;eOCgoSB%xRdWSkW42Em5#pvnLxg`*^r|TvtzptEY7Jj9t+d*5zQ+lXSB+y0@zR zcvbte4UO;dP{+MZ>bO5#-LI<$!qo%1df3p=m{=INdlCl5x5i=^#A6s^uAWpOQn>M)QF@B9HA3r|&*pLy- z8%H^GN1~H4&BM1y(PeR>klVFFX;XB?PSJI(L+ZZv%^{eSwa^q@&i{L=xX$PxhNz?B zXW!c?-uJdv@fR_HW+=L@3*U=er@NkL-IT!>%vf4R@-YE+lOwhp>=G1Y zv_fdQ*7h&r5M>v_Quh+;!nN6Ec+K_2OD1;V+R%mZHE&azWoAR%BEbw$%JEiLsq@;S z!r{M_*w}ZOh@uzqHU6eVl%T5JZbRi%wc7(q zWHoIlB8C*kn{rgOPnmN8z7f*ZX{rC9N<h{N+~B8FE69m zT7eGDaADC_a*PZZ^oN_{#QQ<5kp+tRntc3SK)52BdHaZg3IY7Irv5dO@YX zRTyXc9)@!QZ`XQRn(vaSYA z$u4UY_e){%Tq7!WjSYvb$80*}yi-{MzQybDje@ei9^dGoJnedXlXY!$J^ow29^Vwc z7xqnivxsK2CPr<`lf8^njilk3Tion#S+uHQ-*5{Al!*Du*yiM`Bd715e9o66)-&6bWd&20@y2)Xs(GY3u-Uj!4Z86(>nqTeS zqL!19RTB@C?doJy1EAD!ImNDhmQ&q;aiyrL_^_)&E~_!zBN6xba9LC6hS>q60*F!E zT;~HL@Qu7S{M?>x3qN0)U3Vf^sK7AKww{pg{;-)LxUtrj_2Cw#@o_RLTtRsXtHuV( zlayCdqEp8A5k(cxucmx9IyhvHRj{`~GsO;>``X=LKE>DaB`0u*yx|1ikk_8T%WvC> zVaAGfEsFss8cA!F#Tg>x>tsz+?v#qyvzPACsx|w4(|ub5w;T9_@27|Tk`Ca&8Jv@~ zK(?sP5&zCK`YCz48j9W&J9VCU~>oBy167xRd<}K0f49N&*pCTT7oVX}I zd6i@W!ZPusoG?suYk8uzob|;f1WI-Y0>KP&@(J8dATNR;v4p7NwusLXmWp8rk96(F z@vg=B*vTxCSh@>{H#kM&2fdL4z;wYo#}i&+s=#4w5$kVVUA^^i%v((CMz*kHZ(Zfz zN+kPTSzfF?m~E)OKc!YK*Y~!~r4@74anM}Bdjec4i8#C1hBc1|pIZ;Z(xsHVwZpi_-~RdE2&dg){H z)|ZCkSaABuYN8N!`^cjwG+Hc~YaslW_^UO-11!Ptd+D`b=Ws|;hUFXrA3kRIK*agS zJT8PNciJ$HV>U^LJHK!57C-w}jltWJ;`jXrEPaYfd{~h>Q1r1=)#!_7({tSRO2T+E!t) zgW}1y`HZl13*|rIzDB9Ll2&5wJe`r+6>+`2h-ROc@bpJYzgQ%nTz)3R+u`gU-tYD z9Sj$-tVMHiRQzGte4vD$`w;J8d3{C&$0J&vD%HjX{p4G5>e9@<`ck7-+Qx|0cEud$Df$mIB^>)>Q?5sin{Q+I%SYRPj0g zn3g_QJqs;O(g07=+fLFiFIHwtx$bA+P1OXT%V;0m;FGaIm5sqh2JewmTco~?iU&_^ zDbhh?$$45Xs0rP66rzr5K}{_e)P#qe#)3VbJj(H%78)WS$pS!dmh1tIkn1~MJA zGTgI&kOG&|H&d+Ik-UXs^$ynjR<>;?>p?5KXa|wSEg2>5jVUk2#G(=z5T$-ATepMg zB1&u*_p5x#PNIt_uir^@5#qH)!H%Ozw;(=+xxfIDTN=m0=OgbR(70?_(cq8P581&wZb4vA z>61ev~a3d|ypt8nw1}hbMz7P7P9vgt8FX5I$@BHx;BEJ5w^T zpmic={WFZDQL1)ijv?I(v5w15Q0{#VHrWud+kUDQ@q^SwHf2B{&f~jZ%PD|_2oo5u zFV=RA3O#c`IMEGbLv9nA`XDIU6K~Kihh@wsOh6&zcZe@5v;%cdJY%2|d=h+LFp$i6QQ%e_;4FKY?+9yd!*gh(^^^(KSi@<Ls)djwx~$@bS8(8=!zx=ADy8~C1TK}AUHsu zFamI5qNe%jr5-%F)PqwzkYsirXrZbh9nm-f8V{J(ab27zo@$I;9;?JHfMxt#ShYb5 zD*5)M0=*Fi2^l=|Cyq(rfVnKXfUy3)8TZC{S1oUx4HAx5j%iUSS0Y7u1O`i^i?O9p zj4egRc7#Ilu|QNU|Ti zcZ>!6hsbfRk*fkJ6S28Va$d+=-g_5ssf5i$3oDc7gMH(JBBnGD6S4(z853bi4Z3GqS{+HA~?O-}n?oxC?}q!|3O-T{;ts9^4(z~3D> z4r()F{;v)766a!V+}Lzl#5wF4VgntsmdlaY;(To7NTh28iwG_o)T90&5f@S(vSAq# zRcQl(sBI7dhy7~Ex0rr1G2HLuu|XAQ)B711(z{qn$z?!A596#$f2ZiLv10{x_YoZt zjDWuicx9i8fW0^?qOq#JV^wU^{4x>Z8qYgxB1}d{HUN~4Y%swLKW>*b(Spt`dE!_u zn;&n)&2h}Et=n2ZhbU%*`xbC2+!tFsGe&#P%T{JLjzSwEEnmGnKA9&(-?{T!4B>4t zgCz-_;+bBm6tPj_^29Q#tc}3HDC@I@;wL{gQ#1!ROq;`!f5L}R@&Ek#Off|sSyq8$ z7|S^3*42OS?@!yksH(5AQ2frX%_#RQ%7!e(DHIrE@=f^NEGT0mDV8aBCrf^x%CFn4 zIZY#?xcK@*P4*VWAAg4Bh;1xjx<#Jl2|#Slp<5FH(&F*YH96j6WahzXCm_&z@%4AW zOxTq{+qGIIY+R$>aJiWYwD!Q`wSGafpzQc!{_EeC?AuQ+&Ym0=$E6l?8%-z>1U%ct z9MP;?%wxBhpIy4`u&}`8G@#825yE0l6N5)PV~cqJ8OEgvU@;I1ViU6kSBOy4hl_8C zwwzQ6gL8u8i!}H4-zN!au#Q?6s%34QdANZO%)<TOi@D-G$H_jih;03vCE4Ep-grr}g>e-? zv508H%*Vyg{P8Y)h275kOhhX|%u%a|R_h>z)|nBa?fv!oM46t)#(r0|;j*B5G_g)- zp-^HF*&wvo%J_st>yqG5C0)Iw{uU)+Jr%lsl zc~D8$Qf!ghjwram@w<-WYkCF`mVDmnn!raV02{-{+sXDLit9%-pdogBnSjNC9TZ*vlOqBR~<{573HxMuC=*aDKmZRDe0A zBI624KLK=qbTkolbg5&8EDTyzRD zTL`ajCm-7(v%Ih*p)g>+r@#}687m~QlQmSbF{5@@mdN^#-jpb@SxkYiav@f*j9rZP zm;S;}!!Q06KW^rZ**x0CE;k=HOU|BEKpN6>4XJ(F5NJfBfKK?62u0%qQJ*2p3*u); zVZ$#hYWpm~0ZB9TT#HpGY>6vl7K?HI;W1XRaS_hDL?$+> zViw&nPyw~-BWfu_{D@A47hf=D;ZyAT5e1$Lhx2D<7Vi;q_ABIE%q(1L5;t%#3!mb* zn(_L;S?Ul!a6WU$3&>@CnqNO~KE+4{*!iI1(#%5sWHn~dNm;m*AymlenFXvvDjh|{ zPGA-@gs3iJ7GHdJ8O&m40<&<*O-7i7Pi^7`0u!xENE{W2wk#_@1iSM&O>AnyUS{dF z2DR`AL2`X&g8Z{FyxOpcAbq~$uzLFxCneNA>2VEepW|bhP@isvJaxtu(&a-gk-kiW z>=#9s+M_!Yg>vBqd@79rNpe{30u1x74dg zmx4#aa?1iMsgX#vG4aQx;c%17Qs9$tl$hr-G}pW3b2BfqTYxrj9yUt|X#Y;=CxO62 zxR~eqWY5-pc&^X*TtetGKG$f&=c_m)gck_?*mRGfAE#3gxi*4+ijjKq_k34P2$ERj z`;3UKSwR-k-hDCpmC2?nA;{;^C`Z91zo^fXPl0j9QSj2FTe-Xd&^CpWSC@BPx(k$o z$~S>PHKG*kI9nX5yeRAfYt~x!2HG=1q0&pRUDS2~O@o$MoTH=^M6oJW7Dil|Ef^;$ z1ySoN6D9enl!>zAc2ONRS?sAG?j6bY(AX}s@V&jmmNOaOa%R<*lRZ~7WRo$jE0ms` zo2y;IRpp}ON_ujNW#|z{f?80wN*|}FqzC>Qduf!R{?!h%Ph2Yj@H!)!5v=J{*nTP8 z6;U3|>)kmH7l2tb4)Om%l;w-wZx`)-jbrkx2VLSrMf-m}_(OL$3!U8L*pO`k(LxV? zmuv`bwyN{cfTY0~P;ki6mMB7QKYE*7b>Xg!O}CqzaCO4pkhx6=@V5H&k$JlnJG~4Y$}}SlUmS2>N&9kMV4h zPZjOEe?%E7J9)y{dU0 z{AX--z8M|P)0-kXQ?w6d$zgejB}Mx%l$+W8XiL;%&+CBKQnU6g+H41|A#eORi#8=p zxkiMklNnB)gZw04rA?;yDfWAAUPHUaX3p=rafR^|XWyeM&dulER-Oa|5i7f@FFhujkp80 zG-aUbVN4Q74|A{*J{JySbAXC)X#)@j1KbZCYng5LOqwO*5=dl=)WJ-gnGQ_PB!@mT z9gy`AE)iHj=Iy@ks*t(LF@9mMM~C1S69^)vz7jG;ylqNXS?&u~YUQLEGH2Lkn&#LVX4+woOT525b!07ybZ*no{B;F zu^2qHe*7^DpQeBzGESD$@-6u1>YiM4lil)JH`y`tsplXgmPOaDgM#Lk zDZy)(LtU-PstQfJC2g$L^E%qcTT!!2YFMg5i~J%0&a}GSPTX!$IX0YI6>7g% zn`vOhW)JH?N`Qmq2#jW|;0QiGZx;8)w;S)0aktHYN<$61@K=VD%qZE*4*@@kWm)ga zkq0ADw`-gFq6&c)QmY-lYm9>uFeemejKU7P3fG~ zn@<}I)EooGc#AV4=s`B8(=}$YSwk8^fslnP?`1@@gv=>B?|cd6s@E|a%1b<#&A$;? zX0uf~yn>$bnJ7PJWbU9seQVtr`Igj8Bj1UM+XoS!3qngH0x%pkAedey_+BTc_2#hU zu#iObqa(+x=wXBhmFmJsVRNL(qW3!KgWH-brp(gOYfwVq3@ULE%O$uMUN?*GXj)$Fuc|_r6 zk{_ar98=`W5;$Bnr}G&VBz)^BYMz!stVol3nlA)v?F(R~l>-cQ@N|(iPS}=pVN57} zsLrDs1S{lI<}))UkS$rAle3Kx*XcV)JtV4gm}B%*>&hEx-@p?6(vet0n6)@oh#w4x z5RIc6D@2io?@XR6VKWmX9Ock-f;x07!5_#d( zgNS{N7_AyzwCML+y3Km#SSXANM~Xw*<8fZ9(H-^X9Yk$`EEZ|}9alllmgTeuLUc$9h3NqciqG4FgN3wlEk= z0pV-C5QAA(FDkej3@R_A%>G?vlhGn3KZXW{7OQd-h@_Ez`zbM z`v}CK8(kG$AjHvCp&vR4>yCj`5vV||VM=Z&G7y{$t(H+gwA5}i51>FqrG#Y}vZxK| zE$VGph4nUEtqynRRJoQngk7N?aOw(7cFRUa+8{|Dj^;;X5({<*AA5ZSbqOcbUOo4; zt`Re@22=Y53C;Dr=%PMNuCbyySC#KmulL9JKOK$z78uN3w7~`E zHDykh;Yhjd(6Id~aTalSCL0{8Uem8Oj2PZW$ZOVmJt&5~-u9xUj>C3EiyFks$u-z4 z*QYkbUBp&X^NrMmNKox+#i^Q%ja%+YINIgc9W4l`FodD(Urc<5ySNFJe#37!{SMu$ zajY}-eZFy<8YC^vul0%fMX6TRhf4%rv{|>eNX_)b*{PWX`1z}uCe%_+!SdBi6KY{` zP^ZsQ%`~B+b5Ju)sO20qa1&~IA%^CKQ8NknvsW`c!3sBtT|QwB(W9)Tj{cta)l?v5 z`y%c0P%}-eXIW~drM@%?r6O#TxfiV(UtUtp#87B?IUhAs3E6q7nY6wC&Q~)%F`{O& z;WagqDF*6lCVMnV&BTM+mRql}!h9RlOw32(_mV857g)_Cq#4zqut7e9n&~wxLg%Vx zdJPNWGSy5@$o_V#nM4ih?C2n!R?VbOUNmZ^MVRl^Ok-&8)lAF9dADtIYNjU;>z$(Y zY}HIchI3LgX@t*9%_J0NBjXfY%ThBrSZiOrU}~mCojaYHNn23s$hoVT{$fnc^cU-? z^9*XH|9oaO6Abvppk{KTdBN07j<&z$Y9@~pw!}MS*;%TYRKa(knn@l0PEa!m&I_+* zaGKm5O(f%z?y&C9=i<-g`zza}HH)Ih-%8Z1S2O|DzGeC|eSQf=)8{8Ennv3Glhz4wV;&owba#2i#wjh{&-@kuc@>8XjvMjrx$COoG;FRF)$62 z8DFp~$XwV?ccWUs_)X1SW6YEz z7>smo!p!nsK4R!)48a>AAR?A)qpmq>1z z2uY|QH*08BYnPj`8Q9cXRdq+0VilXKs$oh?xQ2OEt_eu=#3YMU@IUep&c4EwN<=C< zA0#ZwW`e8xE;Z%5q;IV&)wgsd4&QMqw_yYj)15nH+GSSpU6Lyr-WAT6+`UEcnGuQO zS7gbQ3xxAsD*J&kT@NGYyVR8LlJJ>>r);+7soA@aG_!flnVD(TOw~*LPU^kXpzAdU zEk+DM8~3D5Qoqbr8LYT|VC)m#DW~fW#NnX=x&| zlSdXt;+RW?>0ZaQTr>~bB-cVf`m;r6;XnYB(7-23dP3e-j0{g%xb6Gmg7p4TQzA!hPj$D=; zYN3N=Zim7P()S6s@Q$I-b?{JH)E6SH)E9#KtG@6-8_0Wt+?-1*s_AQ;F}Q_?eZxaq z>p9e-_rfYN)mB(#_GpcUdw@sMUyiAc{xYbJxW2z%N zP{KTvroD&K^tgu-qn$0=L#gXlw~Cj^PYCvAHg%61<}W0aqPyNhiJV7TvBo@<7F9;t z`D|*GCt77VXq8iAE3f>Mrkvv=r;U0{T&{o8qGoZ6a($>xvg#B|t@ zBG1Z!-XY0Zx+am)NwNmwi?}BlD$u4c!!?QYUogZ8u1S7+ltQ|4O{%(Vu4q%v$Uq_? zWxtpP?xkFlx)WWKL~M>LNvakB!d+BAmP@%N;cGqan&d&nQ+yG=`884w0^ptomb#6? zoMX~dvDh)G)$Lu^*)^>>Ctqt`;i|GB0wFWcmw%cUCkBZ<1G+t)8t0IWVl&-NqynD zc5b|DJ2&=9VjEz)ipufG*Q@ciF{x_NFrpD6Uv*}VN4!#PKgEYC$DQT?f|akV9=MNjzy9P&EJ~{M zOjL!qDiTjZfkIsInjuing)S11yvMNz1s}jW)(kW4F!xB%i zonQfqT}b5=HxK7k>}D%P@p6vbXkC-sI=mF_o7^_MTsL3K(FGK5;7k;XAK>^{iZ>0{ zsQ5vS_~3=>ZzTgZ1$(HP>>Jf7!oGy~<73zH;o(@9)ZntXeCccH;D1sMMqa=pl3?hT%Sga#aD}DOiHnC@E*i`?1xZuY6j0fa@DT`JWnLmdet^W199#Zrnq5$=tD3!kaQ!TC?iugHT!Vb0{7x>ubc0z$(dbf~2nXIl;~S{{??L*AdIRB-*Ac z-N9WU_fjhyU)3z0QdPxQesPDwuA9Y^`tg3X@esWUfQ5ug$>8RYPN}RSE*|`kyX<2- zl;X~v$@^_Ebo2c#6T_6xMwAS`i@Eh_h-_{vWcr}5WKvq(Z0e|w-mvJh<;2Ns;$%|Ay7{ZoQhr#JYSa3>n>r)R6zK?f(;-L{x+$aiXh?V9d z%RBpWaESd%r|2JIrsele$S;{IdCT^gSK)|iF>9Q0fy|;RAP3ka7@9GeJa>qqFL*le zcZ9Kacn9~0D(9}BHvTNa@8>xAulP3{^|^X*gB^$mEq@4{LhzbE$;zr!#INvG zLCKAZk}cg4qb*AQjf#?e=A*VK*^V}31U$*s2%2#cK||LfXwh#t@5<#hBFn?z*+#+W zh#Q5YDtJ}sn=XaEF1CNFaLI?5P0-h89xAIymxI2Rk%-TQzCI(7btq&pPm8ld-_SXi zdnhe_{T-JTf8@~DCm^b-2W6F>M~AV0?mhDX%YAwty~eQBu$*ZVmb-L4sbRTK)KgW- z6p&tIecli@f+buSmiH?xM@*<=ITLT$aZ^@5#!-4Kt3rr^I8b6a`F~)C!gA#=5tehu zuv~{Na*ya!kLA1*7tu{%TVSiK6A#AjSVmhnPKRwS?~lW_->b0A=l?N+J{N3r`GP#Q z`BXtAr&}hrxvW19+kDEOvWjJ4o68I2u+3)#vJRauwz*_HY4P=+xQx?ej9L0*JXQ6e zjuP?++kXE4m@mHMUh^4w^x8yhbBT5ww)reORh2IyY}4`?u+5mz%QFt@+({Z8W1+%w zC*d`fVJ5H-m+6NI%{n?@U?kHIozth{y>R>DQO+O=#O*QwF8VBAHwK-);|O%OnwxwGc6TCtfMK8>ful0j=YPp z%JB!68z?1{Wh*2Gx>ziFz;n&M_Oawg9$d%q0v=$F$U~IRIqs&1+~jZ4`Yo1Juc_mg zE_D(r5CMIv8uML)-i@-4q2b~3E;Z^#57iY_8#`#yj zm0^QKDi`mw@p3IH<;Uz+l2O~5hmvxZW*Gd|!f-unx2@!Syq44K(yh_udHZBO4XYZi zLuy^mIdAQ3-2!}#nn?|s>T7vO@O39!r}HXoPTN)J9J(9_9_BfH)7YmP!6rSV9)6|S#p1ZkD|#;F zok8cyaVn@@HRzfRo^Z5~ravcUo)j}-#yc9aBK}dNlg5Ez+Z`wiTv&M)Y#5*8tiJXg zI$^emIGPHHXdxE~3w_vHsOOzfS!0?=HgKS%45g4Fp}b*{PabuN@rX95?%hGgYuwo- zZ{+|tWud1!!X2pt7+oK%!i%xj(**_JNf_@kD53&QGsy;u^|EmAKzc823EKw`6@%Kn zhRi`aS&xDv1O?>X8iw_Sb&vRZVeTaa+!rojji^Q4S$BxMo9hnQ0cJgoC%3^Xpl8#jpyi7dliIMU;RIlls+5h@Q_MoPN^Ptf zJ(?5p)!qK+T~zC$E)Ga?(|hC=Xdumy!Lr_h=m7~&bDn-68+>3-_Ky45NSeG`&XCK1 z1#8MKAH4I@!e_r)RmuPK;#R&nMS7yZxLiss&~ET&E!cz4hqX%Vq1=mcIv?|7JoHYN zZO0{_&AZGLc-+amTK%2qO9!e2J$VIiOO98QfyG`1A~C}zJpPwzIrn+9tm$ewFSmhg z;c8N&Z3Dfy0nr38vJ`p+7&(C#u;Pz?Z+&sC2{s#QwTE0|Y>hf>c-+?Lq&7wzI?-`ECe}I~K@mvc zN-7jbf)iVHS600p9Gb7Gz^7?PLeAJ~@E2+!^+HM@JW#dRKmDBE3I z+mh>a4-kHneaX_tXn*apVpAAEj}^4S^3U263G-P89kRHt7-z8~9Soe?N^q_j1?QR? zH~}HLV$KBIY~<7&B}TIorrP^$Uj&~Qe@9y^zRbq--bNpdqP_K8ns*K@UTgcXV-%an z09tT4;`6|8)-SkRWV2du+ipc-!EI~7U8|#67IKM{wFS3bEx1s1eZk#Kr^14}ISiA8 z@;(c$J3@4AwcxVX)wK1?1=qTyJiV;HQsZik5?AQllJ}>TE7aCoO)PrN)J9t`5qGY9 zf^Zqsw!F#W2+QLf0FIRU1u`>vUEU>KTYC+4i&F6S> zKPf|u8*8FLk1aNnFkv0TwZ-+i;=%?KD~h27f|mPctG*fRDz>`U=lp`_kcT?2wddCs z*ShC}@#ok1@2_*uIrG)VvP8bJ|DoTmzX3N*SOs^gWgorDN$zSf$8Psj%1Uix$8gYH z6aDJMw9WdQ>HyxkYebaW93Xavc^aDGFscaTqyklT8#xo^20z77IH;R=y|x2r7JvQ` zGR|wI|Jx6c1Mh_ z+m^ApRa_rl%v!ECF^)Yy&IW`el)$O260L2C{<-N*%Y{;ETAAe%G>F19b_qXb+R}`V zKt3(f+(Y(l6-g&iYs<+p=YwA+EQB!PrO*MF4YN`{jsSYAa zb-tz+2o&@_Goq>LD***|CjmuVujFwrHIT$OC7`^t?7N>M%c0@~6dE->br4V{G-}gh zjaK3btw}tgsKk>UBaQA@)aZzK5;^fi4#`v^@q}W1j-?tcbr4T>T8&-$?!=RwVN63m zOwAXaNzJz_0ET$7YpjZBIcmNetpX>W+!!hVjYBHt=q%NIT~TF+trz@I`q=2CgpPCp z6y`xckLfX2Ry{oFCYqPffzO=@9XC}V;FeI+@p;?H%Upj==y+N6ZV9d%Y2g%$n~gr) zJFbL|7zSL^WCN1v_(+Q+lH*k|dR2lH03!g0GvjEPLndkYcxqZckJHeXC4hyRIA@|0 z*wl>e4Zar~pp8ubtyfAx&^SoR+BINq*J!bhVB*Q1br2bDPVl z;$|BI32JR9;N~z2p=FYs$T;K(nU&7=1>$o-(EBd`y*AnD;IG@oceyHhtb_0Q+{gb@^DT%PYwt#VgqPHh_*+b>d-fw#E8zuh>#Nu=SB|zjzingG zSh@~sT+|4eZMAh@+{{RG#@spnP0*$XOdDc5dE3q7D0*lnP2vcA0=BJDQVi|_On=4F zP`ipkOYV86n7%vQ$2FmT1U z=RKtqlFZ-7+r)m|*+U)VP0VcCHSm&Ba{pUjfdi^#h3bljjd6XwfRr# zCFDparcoe)(Y65Z$pcL?60D*v^^(LZ53HU_pHzoWU}ufn0TanFOYejxIM>;Ms)_KR z&I{C4bx>E0g1RbzI`1@L%K}w7ghoKs;MlkVs!=J7?|VcvcFbq1_?|$*@LgLU0KeiN zZq!ED1~x3eVDif|5Zlok+ZbaPC*66@te3_wPQpoLP(obrOO0jB4w5NH-uI)iKb&t* z&TR?k&#|^|$T$=JFh4e(qH?T?6QBR2}`is7g(2> z(kwk(MEm%e?tiOp+(iyEF!r+S()YYOzx1C((Y<&4vrJ_ay-B&4F8xJjxIoWo_=x-^?I3M8 zMdj1=%9$bYV-Yso0Nx>b22hLurr;KM3<_k4P~R9bWq=FWPiI|?Kl)#BA%^PCq5Eum zxwkWgu(ks5E;{ap);a^VI}PYTr*XBH8t^#ZTEj66UNaT-;k@nju$nyW74v!5hg^zy zK7yU_LmNVvo_oZ#zg68(4<)!$3;KO~U40ki4g~t{yUSpi{tAAo4uUFo8p86ccZc_m}a)ShYC3_@Hi$04k4F!O9- zMFWK;z|9+Es&*IwQ`YVlhB9ZnLk~N}YHm1bXP;^s+hHP~U6b4!?}8;FDE%03xUJzw zJn_N>-aA`-#8Yp-WVisd#pzzQsaiTSR&ikdm9XfzSK#`oT3l>24V5>iKN@P78~k~~S)yT)3Zp|WGS`a@`;0&&Bx>?Z z@aB|p%g@e}MB*bnlFaLx4caAEh^JYpT*53blLrX~p?qaVl0`pGRJ}~T? zT1jRB1iu9yJnO7DeCOUa9zZ2`m4foeTo2l2tNEDkKu=6G^g#?*xfq=UFW}u_4wHcw zCaq^3P|vkLK(>)K!4_yR5#Lc$C~-}1)J@D&eoVMz3^XFCS6+MdCh7)TQmsk`2inZa zb}VzfRm{eu(kF$Q&*g;osp9wDsL-%38HPl^-wUqT4OR@6SHe6wB66!e-< z1Ns{IGjSlGv}2!e-zLSs{*~1nXZeZp15bdTbkE@+4~iDAGBWny56=)r3?ULbBvE@TZg4^&1Xvzr z$Q?V%5LKG?v9?^A{wHE2AhA0$6gO(9(&%JO-jCvPD3K1>XGb$$Qeet%Vhxw+iVv7o>lnR5?@|cZY z@$6SGANJ9nnB+hGYq(mz}@_6gLu_~y~WP>_Qliwpwhy9R-umruDFU0po! zr@IFKDK0+c>#hzgY2xj9a6>q@eX97hgXOorX0UwPzdv#uP0JlegM;Oy<7kL2&?t~K zQ)ElnrjDZ_FwzdP&?=8tt2>T{I3pcLgMn4Y(O{Dm4HLT~!fv_aXj(dlW(!v{JCbb_ zNG{tc=5*pAF-2PJS{dGcyD3)fNM25H>8|8f3JiC*QJ}zlEyYDUk~dIXyd(JmiZwfu zH&LwJk^CUVWxJ9$Q!saL38!5^aP*-!Aw2vGT0=n*W$zDXI)tqt7-J5|?b46AD?jG* z4-cPE%Nb&zSz?_>_UU1Xmd-<1>(qF7_ylmyAw0ZR3*v-DQ7n~*(8GdAk&TCk*J=@y zmDb`6LjzkJADXmQi#e)O%jnR&FyY~97N~XH1yC(FJp2pD1e5Y*UOX_NWS)tq!>0K`lI7uUX`r zD9cBq!MYWIVSAEc3S$McFKl=?b3wHhnS&5;LBqp^DOPce@ase0&J-SgD?2fzi9VO` z@LLfp{C8&x4==-ffbZK79xejFcgjJFXzoTwZc$5yhwGCUO?dbsWcT6WW0>y4!F}oC6`ou&lOTWHFgK(#*?*p zW|FSjPGE=;ExL(CsMJYc_lyZ+K<E{Ctt&?4>7kmfJl$Lba%`^W4^0*C z{DvZsG0@d&3Qn*+7lC{iHK6&r6R8ia*ju=w_%Z1$`Sra+)bho1G*G!%;d294rgA;c z$tP7ls9{bp=9sdW`6y0(>c(MQJn^X;(L7J% zmHDX~ZESR>h&d~{c$^9{|cza}D!kfo9y=h|D#tvatHp z0b`_HQ~}VP;#coi0CcC~LC+&S7HukP!MByT;g3pgAx;U7*WA&?I3HhTCPS zye56%b+DDmCp)5^v0Ct;`m!-x`0taSx{-HauKHCx^3@DhTYSTwiaqnovEgU<@zB@w zv{yXE??>&oee}Vv*hgRFE^q03YIk4psHYSxVJ)!;Z+(=-ikN8^KFpic3~l$4u+jRs z-H9QvV;9veBWz@{27*TM8=P%1*NzGw<;|(~ux@8Tq=v{=3{~_Mq#2b@%f$shz?&jO z06o1q^UKxl$o<*9XEwq`ZHpv?9mz%tv(REC-#=_J6Sn9wAx$Ls1h1vyW4}F9GzOoV z$?Xm><8~0;W>+|Bu>c&9(N$BJb#-iBuh@XYg1u*M3OKK2$<_$31w7GIsidv6XzsTv z%mbCYGY9f%o{_R9LZmbw2!+n(EU2<12v2kg&l@08bJ@>l599+^-D*yP?eACENrp{X zXDLqO5QS2C?_2lU-D%)VfKzXDv+0A^#UvQzIgkOA?xxw`_VB7ADe=hx9y--BnDQBJ z>8okMt!BAuH=c)art9N4KX?zU|m@l(0n%S zu3R-W#E>^n4Kc6~d$gFz8vD(Emh%GH%HUh2*%DgdB1c%RM+@D>DcsP){T>)v$QA)y zfHcb+bo&nbA^&l_ZoIEl0%sA<2r4<_%nCKSf_z4vm0ULR8R15OL!%JEoLuIBV1}8W zVG8)Xt4YxN{BDq|mNDYPRz8b&CJt-UOju6u^*P}4v7dlGH>N#e^&MjM!D-qMDNgeg zZ#VlG=y*V!na10pfmM>tF^|GOMbSeDLa5jw)BwYw!zk;xS^~kTx5Mk8Nk@ap3&V?< zVx~0(YlgFcelh*QT4;e=I`iD`(;-BW1YI;1FtcDaR5LwKeFH#e5a$l$x{|jU^16|2kqS~b5Apz&Fj5s2u$1g{2`cgd6&1t>#wHan&%lNUS-cySW1zZ_P}0(OY$(yjszyUgBm( zlajBa@=KWbd7iVuW^h~|=eRPWXOuu%&GbbW!yKLIYLwu0hpOE4K=pI`xxwrx!K)?- za18YY#GDbk+=#Qa!ZV>buyda7USqU|nbYX%z57*z?&vLq^+b*mz>RZqHVYD)lUdhr zh427*zlpk0!ZC=R0NDPcTRFr?5eLuhE_iQ<4ceyQ{B+ z1(@b@{H|SpVcj;gs9gbM@ZLF%rQ6sM)Hgn~!isWqMWcRnS1%i+i$_3ObB8&|vYuWS zU(8RkkBrR@j$XaN+bpJ1%ytck>R#^dHPq13BbsB0%9;nkUg3EW=@YskRtCN|=zmkp z*BpH=vR`6##$Y6}V7VKZBtham9J-ZBg6SHFTS;lQ#-<2unIZJry=o1& zWtZxA|G@CFbT_SG`!uF$c%}$oTufPVkTr~>G-163$Pwx^^61uy~j`EgtP~g zBb@MZaYDgioNx~E?Za%ex{4Fd2DptS%^D|Uw=dymK)nm_7>O;!VepA21mQ-%=hW#5 zbyyCvIWO_>;hdNs-yF;rvVj`Jw^!_sf(0Z)1XA@K8rq7i!|z^px!9ivSc|I-#WYY; z2}0ux_)(3vt_bijxH*UXHpWBdcOtTYTzrTiZO;~%5I13j`5612)#K2ATBKfaqkbi? zSyk!*Q*H8^n#2G5c7uW+Ogt={o0_4mQWS|DuXF5J`EVRBR)lq6#0}%dh-gen5SvL{ zDgI4lO;hp2Ai5J`Q=~hjveX#$w8TKMKJKgn9j2i6=?GF-1yjX;Pp~%*K{qufjqK-{ zw25g=K`JJlN|skw8a8qbjhuT3lNQZ27(N9yiSUxouC`w$8pp@UJ2& zKn9;GrjZar)`>e2cRJy9&8Q?+iuPS_|Dz}s3ey@1` zuP&FDVz2nb@8CE1kQ(a4BPbps?wN=R(*}o3hc1&9n=S3d2mfQ?vssn(F@)MYIt`m8 zhO)3{!tk6H$3P33=cEdI?rn+gka8H0Ed_qXVJnt34fx)soOKkiyC3mvVq^3F)QEOk=iZj(ruGG|+MBQ_D`$d}@_&F!PX^E3E35ey&tA zZ;7rzC#i8{yKefuZ?#?lCvoAb;z=6;EZY&=CY0?k>;Xwy+(wcS=7R+0C&uhjY1xK1 z6LxYRHm@je;WCnQZOzDAYNT5{qsB>~jJm}v zv0L!%GWfw|*;0O__W#e``@q{(RrkJY|2zAfv(Gu%Ne&Q5khM41CXfhKn#90uS(Lw5 z5%1GJZL9ZstM7Adu=fMh>*Ku-k^oVoqDDoFiWRFCRIs#Qi}%?!RCSgG`I42A=t9!-eh<96Rjw&o&aQL<|Es(0%xf}rJW%+nl^xaborioP8!gj7fNg|Qo;6Q#j|v``X# z=f-!M zKBZ55H4|)nGc_GtJYCq%>Rtt7|M+@;tZ)+S($m?Ua{v&;| zYy^>~rW{hWkq3FJX&bZS@f65m78~>|)FQ*3u-es!#RvD*-V-G2g0R zF{I9N*8nqt-1c?IVN-q$nOXiC`nZ^+Z#}COGT98&@+>p;;uC+ns2H7AZtMYrZ)1!RVA>%?p;iOG2)m5JiVw=U|E4ys**Y%11E%)W&( zvmrYWMoIAy;e*2(MsTP&tuGZ>l3r{uCK_oF4=GHELK5Nw;6r-}rBy-Ivc1IjOYRr4 ztCTbXay+9-6a^utN+R5fDEO!Q7a$5eH%Tc9LUs~wkKR1@NL3VsSwdJZ|Cxg*HefZXyY*V)Ff-#D^whyPw?Nh4Hdo;2d{m^1=zXUQUvct!23ynfEf zGKbccp@Fr$66YQw@XM1z+n%yZITK}9n-wxeOwltHuc}>_&(mRlMt0xWB?1hpuxt@_ zg!d!=-tTo>r* z-M_09AIV(Fh`V|gtuZ}JJ!-~HJ!#Q5hzjR0hK-X8lNNTLuy?{XQ{3vC3vHJxGDe+8 z#U#Y))3iE|vHEcJfYq^($B9KCLxlFmL69-uc9hCRr8;%yx8lk2by&TaJN69Y08BBZ zt5J%)9B&HE=Xz}%-C}6|K%dW-;Y52$QNUoQO?C8ax18{MW&L?(UJ9K)$2)y?!fpuT zXKQV4buo^=(i?%gaSLW}M%0Axd0D%(ue#wdGN?xdu*A+f-y#FYY6&awbyRwihbN3i zdOdZX9iAvjkUuf24Ax)?dg97M!_Fi6VPg!7p767Lt*POEd_K%vr(+qiBBfJ*tz`%( zBS1y?u@e>JCqA7b3hZ*{8fBUJi3d%thdQ5J5?ZKQ)Mm;i&V_xs$d+XOr}s0rnutZP z(2E_0zzh?K%~c)I3!*B{ADPS~a35Br1_iaw)x9s_ZgnR@(Au$EP zFKR+Uf`d3AF~NaNhzIR2a7sGNiO*q}5>Cy_DVbXElr;BwN}Lt%(HaS99DGVX`3qhn zo*9B2fUl8H1#tFmN@yg^$KunqQOU&9e4fhL=`MJ7#`kG~hAM_8SKa`61%$#PkrB<96Q`43<(&iAjG%01WHs+N^AwFk5-)jThZ>?chR! zxUO5qhHaeExv-HVQ&3-!DI@|R@5ah{hSCw%Cj!CqRUl{IrOo4K0(o_-_=ITC(*lp> zTnnm6%Cy;!&3lAjvj{=ikt^I)(o6J&Bp1wegW05=L56xTB<)6sI^Zp~Aj9^MQ2y0( zcQ~Q^YZw@rwtpdnvcrLigt8-m6O$d!)n9fe>YOl6%zAlT(wy0nRX0qNy>P0Tan+m| z(7Y(aMo+4u^JlB)ZABrPj7#@#1c64@!H@>RAb<7gACmMQn*6{X_5#_2ShY(omr z{#zg>DWzS^>;D!2PT7x_ss$P!)F&Nnx@>7+fyTb=HQlXd=gDp<0L$_+cNk)XaAKfY zZZ4DCfp&#}MJksg_@ymZo^edv?CJDLQ0ENTk^4CZH|u_re5A$a0-RjWf2HW;RTi9O*?|PHPs0-H|8h$FQSi~-(9k{PMRMxSCXx!xQ9-)!IXX#cW$?Z&Y3ti z+Z^fNHqatH-flI*IsWbGEigs0%*um&bj|1cew66`;q52`UsVs=QGUnmDCc7kk}U|H zJx3twn$NiB|5Aid@U1Ss6d*{e*uNGxR?jAZ^?miAo_EhmyU3?%U&&65TR@nbMjs_j zu|0K`k45+3-gXvrR4*#gJzCKE44y;9X@sL1009_p*wW{0oz!T$-i@~w-4m|e1Ss4< zL|4>HX2?P(nFDq!{)#rM-I}R}c@IKf3$rGx730EYB|?);0aucGzEnvF=+K*{d2_m}ajM!&@5cRj33-&f0T(6{oAwUZq5<@_f!o zcPt)zVI6$Yz3q7r|A71yEHQ;hem6 zW{D_I>}q}v^Df3O2Uu(|zN=h}UruCKS&U!t%21Fk#;>G0a~I=#ez<_e`0o)BaWVe; zK#MHKomL|(#+~Wyep`%pMhJZ|-WecB+y7sU#pq6bwiuJh1LeW&DEk+rG^6#}jMf`1 z7jD=*6Skxc*s$W>OwKKfgE;@HV`{PKN?#3lA}w#}-a<~dXtg1^o2)j*O2(8hZoq2O zOja8Jv*3!jGMELFZ!9rK_h!mx#I0cH$+W7E=)+CdWJj?C(`Bb^&m{1Wa=N7cfnYx2&ics_*$on#NoUF}Qs zM7j4h#}H#u&wq!U(j|L0u4e3gKqKB05CugAsJw*fu0fcts}*;p zMHUye2^WJZq8#9cESd1gq*ub^U^mX{zHaT~YV`Hc?BsCLNVytY=EV@crQcjU>=9gJ zvBwE>v>Vhr@b0lII^?`;+E|b-B4od18~d}Gt0&$Wm07})M=G+tKKFwUAnX?y(d6C z5v`>xoMY>=>l({qS9RZSxmTYlp`xDX-0@APo+lLF3=Iu>sv+Sup(rmcOYN!2V)qu& z_bvOnxVB|1>06-*^J9yazx18XDs9n5E$rJq65)hX3-)VSfx~t8M~5-J->x-Ue1X#!;(S*ZD}_Yd$~9E(on+Ld#j@ayH(5*aeUV&LJ^Xg zM@W7*KssLC?P=jDuSDb>-}3$y-?O)oSqQtRf z_N*u%=fgV z-ep?iZno8&^p)Fc{;+Me-}bPuZM7QEQo=VbZL7!AwwkxLt>y_XJlgAHE`{LAZ8cIN zYdyN5?VTP7)EWdcFG!2|A)n$34}U1&c_7iiFzViPcSm~@;4)6^9nbo?!y9sn};aQKA z@6sY8r}PmJ8Z%^MovTVb(q)-!w&X&Fir4(4t=vMzMV;>N^W3G4yMmRntox=~FN@9< z4#0(;p9pU)1l47Wiwnc2Wr7TKE=6*%>x*L7S;{u>3Uz(a=&mz$%@SvknuayE!Hd1Y zuIW}6r&cQ4J=V7jV0 z6@SkFUNq>v*(tp@2Y^&;Rq)?*ze#Cl_;G4s*x<0`M7`+c4vjRptoylT#mfUo16qe~ zV0`vp;Yf$X(k#A4v-paE4^zeni>GiO(RNfsUu;)}8%P8HVSdQ& zdc(n-VpZ{(Z+phDR|SliiaQqQ@6}!xDQ9x})u~P(!Ev`{-yxtke~AFKTlMP> zdV}#7w^EX^y11G$O6p5O??}!DUQGXmq+iZV{B{Po&TD+iW^JXuCcUjHjHNvrN%Qwa zv&+G1q(OUpRsHINHAlk2^#@x7Ad-tH>}1nMKwW#V;9N=7v@l;A;S`jsi`ND?(#|j# z(qjK2Id4I-E)o!L-w$+hkD~P}4i=w>{g)z`KTHJU+k^;NmI=n+pEC3qpyD>~%hLMhMSlnZGWKeeN>f&noUVr;LhB z-%#+0TP}!<@mrA;7jv{r!!@gZsO$ z;7Ey}k^cV1)PmM)DX1d{GeJR!u!Xr%+_Max^>9{K4xTK}#NFUQs?8S4nH)6XYh@O? zu~>AJQ`uoJAfY5QoUP)o{KQQ!JF&gB*UR&~x8=kOFWRzo+ZEe4*Dn5luPhob={Jhi zFVY!-$xeFo1~!qF6ZNQBY&uo;gA|=ei1Sj6sInw<r3oT*GAt=QnAGYF z|KB}UtBhQ5(*{NpSWD;LVN3zCLVP1ugiOEA+}{UVNLozxQ5kaj{1drlCQZYpUO zE38RoZH3L6RXoBg<`gEHRsiQ_SeyfecY#eENHoA!kcPysJ82N_B;XaH)hs4--yC+> zjlF3E!1!5tlPf4UrU@QQ0oo_)6C;VJ9J6nre@JTXJdGw^akdEtZ4^D>7KUf;^);b`K*EQoiF=x z_VkxHF49k2?KV=y>xh(v59LZg*!8jow9Mz0Kv0=YMP*DMXq0VB6c_Rc>Pvmc1rX=- z>t_iz{1^umLierE-8!d_pFZqygIfgZ7F3qXbxSfEiiBvijLjH)+7N z49-KxWf_z@FGsepgO74A&lKg2l#1nTn=3SXb~^C8LXvcUvoBz_O`fvt%_XA@nhoqu zT66~XAAzQFN)B=&Ab>Oy5X}{p(7Ji@TiYJ4>%ayA4{1D zDA9#deufxdaJ_{E}D94s6TMgRNF6_BF$44lNT$Hls{kt{kCb9dD}0V!fYT) zY|B=n+lTFPhccsg(7?nhlT)%J^~>;lDO`HS$+ z^%NXQ>Q+Tgt(B_9E}ClNWmZ3pzmOeIr&z&7QxQmx)HGM0sn;79G=k?nYtnL5H`9$g ztV<+#gPWw%qX}ipMqfS!VbrplJ5ZakTMj?W=(;xQLzke*;<8Oj~z&9tS42hB+iPWsdO8ghI(kG9wfKyI&o%z zI5>Fc`krs!+LmFu#;P4#+#tPB5iCHpLvj+;vw^5E@tnkC7HBxuT}RD8`Gm@~h^-Fm zf2egA0Ag*iec5n0&I#>ni#ptgCusIQq~KY4W`jn5VrB&XtcBTTz>8FbwgLt14UKXj@# zSC?6q)oc=v+Ftc1i%q9+yR!zU_Ko*VqFq@sn@R2PIG0_HL&7ATcb3aGIW8jWoLKu$ z-V*3mKI9XMV{CXK7czm9)#2G85NVljUL=`4d z%aR5cxxocS)6AQp#%7b@9!B?ff3L-G*O6YMR_wIj8oCC%<9n?z^f*{c2^^+6B?JbC zyBn-0{?%X)W3VCZZyGGBUgt_}H&`GiGgB$QuT1jVc4M}GcttUk>UWV#Dl+(L2D(p( znSATR4g|17xI?b&HH$jEmdg_igrnpM3X1BIXj@w_oVF!Th~hF2UY92XrfEk2`AMFT z7-${xq?J!fkdWE}L6W$VNr3;&vHmy5`rjNYh_wHOIM&a9WjWR-o3*iF{bxnee>@Z! z1yjdrXpGXZ%z)BGwUQkLeUd^N7R3UTsSql`7I+82kWF@PO{o`(54iKb_q+|wKj)|U z{59p1fx2q9B4f9aYrE@SEz`Z^Zg0wH_x~!DuRwaZ8_%*eqiwP83=xR+Da6vE#Ca^O z_V@TGAB7FsHi>+c_a!+7_i`u_H)h?HvAGp_Q@c~lL;^^Dk$~wZBB*wz=G2N$aZLY( zM)8?@{jO&A;4YQX`5IJ~-i~&Z{C5a(w-4*xQ;VSIxn#rDC|$czyzP@}?U-Jp2-=;s zX5v}{EC%jq<_VpwYMk~vh`6RAZ^_$$NOUDyLT;2uWY-{(i14;EH5Z9y0>U~bS%^(e zm-x<7NF+w-x5A{~wr0J4LH&H27gNWx?iZWrsp#3&>vOqC{3vu8$=Y~*Zg@2D0;zN5 z{keaPLMN?2djtAa5x!w(QfVe$61%HrP^5i}5t^}Y2Ai?XSv$2n5}M4Lf$(Ten- zCq7>Q0Jx8i0)YLd0ANdQ0F1avcW@kblkVJcRGVP{U2n~n$Sy`d^c6-yL&BU<>WW-L zF8t$1m{JFC6UMM2{DU5t2!|A87SauCde)n0oKWZFHpeR_?BvsMxD-l{Mq&jEfUsh# zw{n?oTlqz-MdgKKKgGfCa2xcDOwrtGgPf23S3OX?7*DlO#$^YxC=@JoHsx#tH?nQS zC;`y2NY+kafb~A@+hA0g#BiOfmo>(@AFFY`_Lk*8f`>8IoGAOPnX!q9@mhO~=3B+G z(=e3~BWKm)LsH5_SxMM5iBIN`J9ly+8M^YuxW7P=NHp;y8aia1scYqL1V%y zx``-xHR?KDrlWG5t|kXmaaaHc;)hVdW$6@{^^4kBy#_#7+*e1eU+W1x3Ar8+Z`G4^c8=ew`EJ}bac>(Ch!~!IX{s0)bFX4}wQU=3k zhE`BIW9$uk&M31C(eX8mCYMuPl!fJ+Or1aslDh~sb}aZ)0FPw3vvZjzp%NS5QV9E zrGaT&jAFXr5}raZiQHdbdj!ZHauH0w6$1RypZVr0}rmXy%- zN8=?cO-rwGjjmWE^X$!Ny=uEMx3R@MGND(l<2iI@gBW9{#eFv79vofhif?{s4E$$s z4DAJsLESQ}A-*c^zNj(=Zcbj<7!2elcpc>BNMvJs0rtlGhaV)25BrGX*wd zh!T^a%#VnBno~Qha+*bE5SyGP%H%k+#T8f@J^wkEG{UGp8g=KX%2CGZ)zB&!)gw7x zh(fDN(&W#CNE-=s2wcU5&>;{t&~`8xG6GG%&<>r`yhy?o(|k+^u`YF;FKH8@n(!AD zFe;K5Z$!6+&=_k57^q~7RfP8vMxyZ;OeL&jz@I~KQB3N%#UT_Iv^55t07RQ4a5p+p z7m&n27sG-gv9iiVx`AGUkR!*IjX($}l!c9TKA>M<7%l2hVF&MfRZ*O6ScN8oN#&YW zB-==5uCzAR8wXydOEXkmQ}(E$o{Uxw46bp@Xvc&k{Zac+7&j3Jn&1jDB@(46!0pi= z;}|8z!wBmrVM%{<{fV1UbbS?4&qrs&QYI@s$2`p0h?8j@xhuUc;T_tjAg(lw@XefNs;e>~gSn|R!}r?n(Av0R!^BZ_ zN=J6iSE793P};r}-d&DokV;aM<@)lr!gxBJTj~w%6>4*jb6LZ(Uuc(Npth2xIxgyi zZ9M~yJ#PAPd6*l%f-l+Prk2igsb`zV`Ob59)fZzZYH(1R(t&Pl3J5eI)dSrCMQNiz zn+i~b6Ws~Z#Nl8*m-C$HhIY!$Ien^~5)A1=j0p0WbEJ#3pX`h<5#73HCZgwS>h|44 zG^&}sFcFPvCSY+7O+=$w+6xoWsAl%Uf;Os|#{@l(m5Im(u;(VCTaj#|Smv#kWoD4Y zl*=I4s0K_#B>+gOy*Ck!Zf18TqIthEeS|eWXOvZ`@zZ%tM4(~cOhhGMdv79oK1}x4 z!9;ZHfQiUZJK98KugV>?Y%ng!c~RL!s~Q@_el`(lHqZ zchy96D{8x&LtQ1rAc$r?q*t?OhIGuX)4*Psi00zAwr3_HQSN}jXSXII!8-88qh%tR zGnQSMh-{heqlxHeLnfl1Ex<(d;O->qkCf_8lD^5`akw2BJXzZ zOho$jSI|Ucg#F8JB8p*MID2C^f9_CE8Wrv)5>~S*WE3RLXQ6w za{Q;5#qLZI0>M^bu_aVF*V&mI|2cnADp}4*SJjWePCPt;<6Vl= zxZaoI>7U&A9BTOC+}X_pFCq4w`#e}PvI|*F;SXuH*a3kKj0YyaiHEX@h|HdTQOV}AHR~U zy{GZxFW$=!KrDXxZhkzEA2$)U&m7v-sE`y<1d0=ElP*9ZVeMike`BA+9^G@dxCsxH zz(kBaMz)ad9qs6`=ZQ>pT9jPtNhrq5V|1V9V8@$a%(W9Q(#RBTZnv`mf!{d7JASXK zk9#0`8|2E5n`(Hn>4=dha$2N_nIR^iE8NH(Abiw=%Uw#U>fgo=z@WY*cWDaN=n$iz z$8s+uTxev9+?De@CoE}XeO;6`=6NK1GL+;*XIOS6N3n_5IGu1v%9Rn1JW_iKH_^%2 z5!AVd;56R<JT{&Jfty%Y&j|mSlVYZ;pytBB)kx&dZA*rwC zq6|a!fmm<}!L%n(GX$5|KyXEHl+4qS2ba_e-Q5~GQuqxd6gtvU(gTLsI2o_YK5-+{ z1ndZV7Ag`t4WS~WogR1WG6hq9|C(;85BT;dkR1x1;pAu(trmazkw)=}6g+c!_|U>Y zETUpO27%c4b{$bM5kf;0Q9+xlV{}M`Tw~0`)Of@cnKCU&j)g?>SaUSR1X)VKuq+D; z8^KUN*?p+in=ODc;A}SD?RsJjrYU}<+hTM$9_C@1S>^9W_**sd+8J;i@fzR^oMs8( zD$Ns4+|*m7AksE|v(8<_DrN#wEX)LUwuA)7Pb@;9NlK{-Rc;jw8a!TJHKqBkrJzZe z;HKV^(2&QS)Vr^$F)bnNBodlfn)}fs0r6LT(0&O zCENs-L>paWBGZ6CjDO|*6z6pO8FT$WLy0YO_ju&cidlq3iTf|QQn8-r@e7tsu*!@5 z)e9;3>je~qEIyA#C_JAzjr&#J{O|BuLw02Ay`@F1Kbdze^*M)8eza}-St%!Yn>8nP|;pujVlXx zgEa!+9$Tz&V|$6U#vs<{d>Cs>2C=rJLSnXpK~XJXE#9LLebr4iaTT5xoi4v~`7F6z z%H?9I_fUNA>Q<2#Km416aNAkK1TFQh$Sqn5V2Ja?+DoOdY*uTM`jY;V_LBaagY-A; zAWZwLH6O%&_nvw&8`}*P{3>@z^q+r6eIG;L;U0JEdtTpmvGPQ4_;C!QE?)c|2rk_G zKI!9OA&HqF2Rc0>?I5+1%}p(Y%@O}Tz~&ai=K9m~F}f(G{rdPt`C>%z6XWIaotO+Y zGCHJbV06VsSGg2d%D zIk-uVJlmMK{R;Evm)vi6Nf>UqA6(V)P{W_Nxb&a;3M{DQOV%}xp+NUoNwIWYBd1ub zB(Mz2{Rxby>>6IDGi8}nP&Pc0%Nm`KMS3E&D9Zf8d!$77v$c5NeH4&&xu2lFTvqEV zlS0u{BulRbb_${ybC^~`4&6BZ`(UUiC z=)SUSO^M{@bjV2?9l1PDUqp?zhbNu~aJ$DV`{Lv31YG(W}m>Bc3(B=t|Z=M{F-o9YHyn zf|F`d!86Ksg~J}Pknm!o{6GwecDEEG1r#%z0ax0=IV*PHN@VS+5||u zxc8=>UDVq4MXu`_wcvfJOGUaQQj1^VE_D`G(*5tn;oi-oG%M-Wcdhtv>APmd2$89A z%m=UR{Ra!-8*pRhi5C*J&`_@qyTTjEJBCvm;c;?1HODq6h6 z+wO#$Un3udTev+w<#YR$6mE9ieG!CPxb1#4tG?_WJ$siJUA zwdo|>o=`>16TC`TtwX}?zWt4uqpOHHI)b)v#Oy-29aBZjF{$Z25^e~dAZVoVRfXGc z#nxT8{nlK>@2zmNSmu$!?TGse?T+>hAj_+@55;l)~*v33X8b?V4Q8 z`x30pRb`KjIMZrBHZ_}Odm(}?O!(Z!f4kcFZ+qipwe-gG%q&syFFIP^Lm}0}^(2tT zj$O&@*~Vf{xN=DPF;T2l%Ow3+>y5_r#`v%pLb`t#f04s=C3#_QxM{W2-K==`O{)t^prz`FXgDP&tO4>~NG z`W=hv?M?OJ>_;c)UC4*U91Dql2tuJl5DFcFQ0NeZLWdv}D-_~HfIA_K6iR}G&3q+? z8T@q&HeCKXmaQOv=@5is0Vf;*|D14a=7hsi_zG3wgo9(2aKdpOzb3EgbBK5LiG;=3 z3CBb@;c)&p0RaSGl12Fpl^QzHIKMv=t!1S9$!D(YH_mWZe4S@BqLq>R?yl)CdIq_a zz^{_)RFq{f%ee|^{OmyEnf$N=4IuIZjkEcoOOTbO^+q#kkc`qy8f5;X%R&3Dm`T2>G)t%24ho!(an4ANhRQJkObX z9c*ZJ!elc-Wku~x;OfM|hAfyw^h^#NY;g8q97P8k1kO}Y7*5ups)@o5HY&#&Jo7cn zf~02lHLx?kw$) zh#s2Ku?Fe195}m$VS?DF3JvmsA8Sl-tU>;)$}lD)H=L)V@>nBv6pl4QN6}ovc3~=? zu!D`Mc(Bn42OHjPIM}fC(-C`|A-$CyY+xpINZY!UCDH82gN;s69&EJZ z!G?Xe>w}HXJO>*o6*9yxk|iYvgc9UPQ~W8;MIL^KGZ_6OY=E`L-PoKP=Z|oH`gG=G%1*M2|5z zj?2TzEw_>cMrVvLFcUu@sn~7@GID`UKOSLrlI@o4T#iQTcz)aMd_p?(Y{x1{`*5VP zKNCd4GmgOC0N>^GR?_rJzeMnRyB&&!Lcj zrsyJ8D3m;hLdkO|Rv?)vas~7(Ncx7va7bUJ(rMsd(BLwv<7zo2r!_}Wkf5fWqsi+3 zeX_7z%~2MQbC?;0rrmNOURxvatk%ew2{ybXpnn+hh{QUU^GBh8EI{(2u@+k?u?`(r zVx5)}>oit-Vx2Zs_$cqU^|W=erMRuGQ*IdiBY>ks9T5FlqIi5Jk;I-w6^SH}yPaO3AM)AXMd*UF% zJkyerLMG`Rm>MsbuplFqI4DR+*N%DPa!L#Ib)WLYK_phHv^M_&4IF6qP`hMvsIRU< z9mE_Fn4_U~(I%*aL<{MT#)8xm)L*)jqi2qUNHOhDTWgO3)OLPP2TIa(Z58Su@;FZ# z4Yj9n6x1Pwqw^+k?a3PjbxhLKjK}oW+6bu0#nkjI2`clbEeX*al73C!k`R9+g@)u? zQg7IRYD90|$!;>s$`#LP_L(a2`ziz}-%WA6I9fhLS6S7|0@X4+LVzs%?fVRtXxtISMc(ACUL;nA3p2|_MpW_r#7Gc(;bPuSgUqr>h7 z0kE*Uxd2$$-E(%8nQ5>Y%gnUvX66gK+wE8KM^jYpF2n9NA3FS+7-LSFGuA39?`|_Q zrQxu}*XkuR(_FwT>@KX{g=J<+ZQwSI2rV-+{gEC>3Fj$edlWJ=z0`L!@xP4|^b3|n zRs~WjJW83FZW{=@Gt`a_yR%oL!tQuc3A7pkCyyr)U_0lrd$R~o}(NJ@(hDwK`TsoI5SiE zZ8hvp-)aA5A7p%9&CE1su%p86yxm7LGgCqhxK5+QO(9<_>}ZT#5dr~b{g`m0`bl+q zexYG^b7(w--3<|V2)kP-bu-H-1hRs(VNhuN%J_o+g!US!;b28fh@gRp6L4j6oYW5C z5mYQ1h+%g|1Nkm8Go_a1kUyub3kkccHc$<_qh}b|sLV{&FREd84lCBCz0J&2ZFq1g zi?AGleZv=-nJSf~hm~P>Mu=K8dy<*y!b7nMEA17_vxbg+;i0tI>T#ajqovWAnJzli zzUXC`#>7BH&|2ZByyIs@DYgH??gB!pnVBMv0<#zlyOXS%H|#Ec>E=R96cXDX<~$Nf zq_jcf_UtYDl9{Q}ZOqIR9>G^d5<_8k3mbzijVAm2L06w{qjM5(;!^})+Oo|a16i0DP)tTH~*j;rjtS<|@llB$I09O=SC1=#` zGBa&HbX3?Kve)Ei-Pmg1cFz^!W5?bLCx4jx=BH~5GM5Jo_-$bO@Kr^t+Opl6*$Vg;xTaoY9MD*N! zFcCf1%mXp$_byFDa|XMAO+@N`4^2eF5dT6=M0037n23f5JeY_UO5Ifx(d~O_B61qo z3lq^?{O+NNNR(UVSz3sRNU#okv2U4~g1{n=_?)rq%0y(#bRSJbFB>uuy=(y{qL=U9 zL?aeEce{5cB7OTSXd*Jg{^d6jMKM`5EbNy1H@SQxlQK`O9P?ieswIq|ughCWg?;WV(nZ1KlJiE6{HJ{TvPJcbGcd&{V^bS$+!rpQfFY2vO zadz)e6))}`rsBL_uHyV&PsQe1?{O-()OvlDq|i8AE>^0%qSjlb^4+!Gkt(mM^^Q`BpWSMeIM}UGd3~+-1eG_`dPl4LaIJTY%I&q@ zZ>hYo)_bDLn`*r$sl2(?J67e6TJN`2-cswWRe5Wzw@&39wcdJ_J8QistCSnoZf<8D zm*XNyqDXyzR{vm}AP<(49mK_~)N%N}vUkwo88IPOa7e4`2J2S_fBA9wIuLDm+7I*Hq9~?#$0PH-9EVcX_IAaF;}BQ@sq`MZRUl2V)Bmu;W-YV1R0rKW z8|9aeV;J!nn>Rm%&pSgWL^2Z91;P8rb* z|M)@5Y@i#pLALT;DUQY-nw#c$@W>=Xk$Gf-3&kL%iwpw_+-I@XJuZ4G;ulC4{?9?APxP|6)VK8*5##zxjjv$%!l z$5386wvmOv4U?3=L3v4QBMYHfY^PjFc`Nmn>v?@63xemAzeTx~@`;oW@%~Aa_fhsJ zFK=&T!O$P&Q7TDUlNHT#Sv539=f_gsO!?cCn<>{)-a}*SD7R3qr@WNL@IWjsmvyh4 zCF=r~XyGWX$aG6Md+F}0C!%ktd*$;Le$hK>{nm*WDxbx}ko;^Qn~=k)*n0Pqkpx-y zx?1!Z9sIVq$NVKVa6oa+F%PaTtKjM?C>hG{bN3qZq2E2l=suFAN-fqrQ|v{YuW2Fo z00|dcy>i?)!ao4Qr*|w#zQ7lW=fq51jqd4vQmc^PtF6ga7PZcqp|e~}%H4$FNyVab zJ%ve+$0yUe`=&bY2;Qkn)O2J_3_mip|)iJ^M zaqB*vRCYR`mlsJBXZE6bjt&!+kq;=x2Y)$&dSWH~;!U6Xm#?&51df)yM6T=MZ+O+@ zpM~FlMo*y~a49dMFNsy) zEQ?-(>O%K_)?=mSGk;Rlo#e+cdkGiQ^NNlilDlj54j z0#5F?cnfXA4(vCLSu<*+H)|VOtW)CcjZ^zA+9&@*K6}ooN}Qq|;2ul+?d|;;O?-n4 zH?~}sGB1tge4xgKC}u{$O;Ba#CiBvOr}PiZTNJ1ANdE0&2#l0M=>#Q9K3!cfZenk0M?bjCBU=00C=eY z79knHgg)#RV9mG#JnI1KWY%yjfJr_>>by>_wbIW3cbP68W(dlFX3O09{s0ScH}k|o zNM0nhW$`Xph@34J%0fIo%2^1!Kuyo?Zx&K)v)M=bA+q5aCLSUO^%yK2+CWg{X^cM22+-r+o>#HKv_n#qgwO zj{YUEA)lCKMgXci+n?p)#-fgUF&qcUA|cs46Gj0JbMlh@kACCyp2wzg6D-drmy;!G zqIk%qG_q-irJS$HnU>{!<$uuX9|t9_~QL z@OYuLEq52B!csO-K*5*hO9@z9K`N}DB}J1J!NLVbD#Q6K@QN~DtcABk@pj87Yz-lY zq#jn10#sHEx`}CmmABn|T5wFC%7Vf<(a}Y%E1Laf(qGD4mCK4*;59y+FN0*9Rt8jB zFl{O#0eNByTNr`rPgS)!PtFI*U7HKZ`R1_VPN~f)!RzQXNigM*Hs^`?oE3*;e8!3` zp(5Z7YI6^8ny#Rq`&5#F;C}J9h=aVdA$yP)#eM82EI(vLo0A;xRJA!OXv-pfj;Z&k z!12No`4zblYsleeBP}*+Kl?5`MEUE$+W&?BOhfWU?%0L$$L0 z0J~ARp!Tg>V1OsSL(6Up|882>*eTtU1|Ol+Ui1!?%~cFRv)4 z`TDi>&6Jw6?UW-oO55gpam9QuuC*pNWH(bP9l=A5b@dzPtGq*%H?6Jjq|A>+vDTFQ z_S*VQl)&A%RWkv+cd6diJ1`a8qnhj1)*sN5tMz2FzFE7rzRl{ctzQ+&?UX{;&5ayV zRM4X7?&ndkdu$%wYhcQw>0LYUHTNlfaJx-cuxI#V0On z7w;G=-uQ;)glDfo=pN+ih>1Mun74(?a(&)}NEUn}kfX@ul#VKyuS zAjpL4E+%SZtO!{E1M5h-$}~a!GA_pNJUw6KyO5&K6p^%n(4+;Blf(JDll=tD^L}$!7V)=|JtWF6}*WOIa%U5OJtOvbCNf`o?`ci@a(8Z63P4Np8 zaYOt_tXJ%cU##o37?N45D^7ukqqW4iLLEMXsZ+>hb!jiu;-`%d>`TXy)&M3f5ocTh zo|X^H%W@df^36sT1PE8u3`N4c!=bZg1H?H~MJBEYTs7=Av~7@SGtRMR=xgLF5bxx9 zdb}fRY3z#udT-j>)@>M!p6sX*k&;?hHPVCX=t7nG#^{;-!WctdKiF7oSQeE&;lJ8F zAf_Lwox`GI1KC~Pp9X{M8nXV9{D7RlC#%*KDSd=Lpy*YsD@)Lr^3~L3<|c=&A0)^q zZ66cS=HS*9Yv=SnNqg8Qjkd1f#+s+EI71m>T^Z=l4v8{}@tiXHcH>7B8Z^npS zF@K6&K_D+~YH|}XtX{^IJTrSs8_NudqoMN-HWvGJb_YvHFs?M*xT18K{gxIms<>2n zHIYm!W;VyPqGSm(aK71djC-5SLzaq(?fu2FRFH*2HifDFQbk>1T2XTf zR9bv;fARDf!o0l(o}06l^}wFi*TeqwTEwtPVtD$x5^`&Is(>Sh*NE_1kAai_ij{_tdLF zf1MAeKLUXML=^<)psfo|Y?;}zGP%X1#V#+!kXE`7v!JgG&3l7N}(AaR! z1O|G%xd|7B41&cPYS*rU&3vZKJS#FWcu#xj`>P`(cV|kXCPHI3HCZ9H|KMyzgKW4c z$69`Klf6-ce;IetROfBmI5*Cb&Ib~-d3JVzY1}qCYEOIebHjs)V*K1biOcl7T89k& z6U9`lg%H%P7QI@lR7R=BIkLaTPApYSYJfRIm6l>@WD`H4j~(J?b|FOD*_)cd-O?5V*b}+TQWO%sGA4-dL$6UZ*y#qOlJ- z?udb$({G&8pX6POcTA^F?>JiVe)^N@VkvJK2tU=UJVN{}55lv`6G(xzX-!Q^@bUpz zXlMwkZT!ICXlQ=}^OGIBrIA8)XS2tJ?nrmzFf|+|6VI^^gX!e{3}1u}s6{6ef}WlN zNR8cq$-Dqu01Cz}*{P`0Qno{KL5G4^GU32TP9$U`mv$vuoeVqUQU|DkmC!k-H{&L) z4krLS>iFOEb~g4Y@51atK4m7J`hr|SNpfScP`pE_NFaI)GCLr8pU%aqWnv8DylKQB ztO9|)W(uHv$45&?4N$I7t7WT8Ykc~=2G%Oa7;n`Rh%lwtxgBG@r5SM|`waRF#ccn; zQ&^qS-wSlg>PcHL)f^}=yKYl*CT;0x3DFKFnxlN3+deCHK>c!i=Q(0i{g5Tr>ib0& zQIj3Tvnklh%ba7YLiG2-c|JK`Gp3tI>{xJ1D+e>>(WT|D zEioA~*xJD3`C@DE=yFfa9XtiCGvlLulFZl@H?@PtE;52!5*%$ibaZ*?@X_VlcoB{f z29GXfL2h@ChK$0JLxRA2?dVc_=DzlPB!6PBsO_7W2j>Ei?v@r3kCl!MYFkYcp;dYr zqIpI%C&d6B*f6_dBvMoHV3Z_{I!s$nl&v+Ku(!6;`>?H%`BBnG*sr#rG|#WFGac8J z3$_il-Dt+wPTQVa7tx1UdQlOQ>-q*InqF)d3t%+Q2@~cVYY4%_Or!FLhCGcfToGn- zb`i4ZvU3k8f()`^v7bTb>?Es4Q@ne+5F;m!%83<^pP8EXjJaL*Y<1Z>LdM*1tTdv* z@=MQxn^t2;f_p&q(8H#t4+@kEiRFP)3gSON9$(tia%<)jU62cNYJm4@`t7N0o;#S{ z!BH|7Fq4Lf>C6mdRB-ynCm5Oo!MMbY4OPd=!ibB?0 zs~yucLRlIf^Qg0>DdPuifoANSz50v9!l&hVz*#y(+hy;plW37JYFm(jS|wuBXK2f6 z^4|rc6pUUQB2)X&v2z+IP%MMiUnmlnESge<7wS|klW0}P`2@GsP3h;^XdK*SBmpoX znI)+%)%8>}y>qTq6SieO04C*~cKXjc8)X9gizrHXs+e6rBrDDLqe z6Q`O?jrel{WL-t+sAZRV&;@EeaBhPa9kz|5WBCREsk>lmPb2Eb4_-> z7$t3;r}Tul1o4;YNz0^eON{Ag$YrV21!~@hj)Gj(&-?kg%zr+BYl5ma^@Z$tj!Cgk z`z9(dVKi#JviuEj4FD@Ti^1vdcppIbnkK|@yn}v7mHj{trVv5QY@QO`{s%`n2yAq> z99H~?_+^^p)!Exh3*k1i5F%Z)UZMe=qcpxUo;qrcl*Z)WvA!y6zM^T&=w|<|sz={5#`l|Ep(Py=DJ@5X-J97Q?UlRBOq*L|1 zGX)l{WcLaz6d{Xy+9E=Dg9_Znl9;VtD+!Ne1gx{O0_>G)mAJF=VDq27B*rRnmm&Ui%aA}nB)hs$3 zd*I%X92(_q3e3oc=X4x*KY*$0}3tC`b7~Ro#Wd{mIclT#ZMtAdP>}>B(Yu>S^tFDahm~4X4-TWDo(S3?a z(^A668qDyTtTeiFZ7fq>HM-;1c~&3dD2?t@6{EX@the%50S5_Az(;*QGZ@`l!J{!5 z-S-+~Su7U}ax}Upkg>KVkd0xZbAHlRE?KEf>-=O`y2}RmuJIq=wsAJ9T{Q{HrMofX zsBS#bIde1ZcCBeFI7fKO}f=P{M>G^rz7iwS+3OH^vEMFoHl|GpKVM z??B}~ZTvV})(GoRTVUyEUI#|3Z4@%sq@V~X*c<~5tz{l6BfhU8e{i$s=sS+dULtEN zw!&gYhi2H|m!H~`x2}}qoXeyI68*sj*l;UTt958(uzaIjvlx~P>ZUZ#GCRJ-xY@A} zd3Cqeiks6)NwAFAD!AuNL$NsAERZFA=hNO6?k&vaZDYl!Lu&`c-PR(no$GmNuHpFT zu1{;@%6a^)pVoF0==7_&;X65S7x&v+MyOx5TP^P6$JO7}+fK2Q-#6NC`{??6?V~$* zN-cd)>;4t5xU=;I3ESzQ`PfUik<&6qD9| zaXTyiHMM{d4;*tDvC|@THSJPiaGVP0-{DOq6>&%S+Em22L*|RpMEu#IFFsrS!Zwaj z0u*>@-HqPc>V0z8-kANV%x>})fQ<6SsX$OpgIL?J6=Y=^?!ToTqZ#DiLZ1U$GWy(B zXSa^og(RF%rv3@5FmKG%vpP$|OjzTm+ew{{mTt^mv~f+g-hG9n=xP7X&f1)VBECQ8 z0JIF(?`aozUq9CU9d^W@3t+4eUypm{Tf8#Mv&g#tiJNtN_ZT;FTIvYHwe@>ZFN=r2 z#i7zp{krpuIAmaSZWecccC6U>6RUR0^5S!E$5gc(zc#(P==EH@^pL7+6Qw8Gt!p!N zFMo3sR&3^PF}R2Lo5LHkRK&Udyh8@|#k4rc>2MA2Ka3Th9|qA0B~Zv0>?^yneXRIG zs>+CyhFf0agIC7IZ0w(A)1bJJ#Qs}Q1$=H*{k&j3R*0q>j=9<#x)d*E3eR^X^Ss2K zzZjtgW)7Oa7$7(_QMG+7e-P_g);6_so^JK2Fp&qFz9Zn(eN8)4QY@!2?nd7@@wI@% zfnoCmv;pE0@!zGWowYiHI7?$VRLkH*!DuMzh=5RIrHtWPB(^oZI(vU<-nhaYpq!7% z+a0qK3tI3^O+*MIE%u46!2NENk!v(<-sV6~ZuSTeytiKu{ z`1K>}V+OZJ?u#r~UO7_n*HfKGfr>x(@V-#-HzGX@QSmp1K^&msyX~t$#doKw`;Ch4iBLNg z-xDB6ikPb%zelOHLu z9Vt=U8rP&Rt>-P<@@bz%FiapD^PapSYzr@s+d^|7H-&n)Tf#CDQw)klInj}rGZHG4|?TD^$(^x zj{?-lsQ#g05C^FKVf!jj{lls1exv%IN2s0Ze;y$CUzO^Q7u8p{nU6Sr z63IUj5HvvY%y`;nUcSq1=4QX*)oK0TN?P9>(z98!k=8Ht%8}MDOm!XwTEAhRwwV_> zWOMA(7Y&0rKUe#J0|15~=zz6w;jHC5ejRQk#YwNvRU z0|ez3^w*S1cfC<1;l-$ps?XdMLF6bdcyqkUkk?($4?oO1FdROmFbdZ}v}sgQfq3Bd zYDap*&JF*er1)2dX3Ud6^5sk74Eed?C8l&p?fyh zn)Uxuyk@w~0TO+!RSzWk+EjJFk?89p0-Qu&7a)kZj@!Clp@TmBo}!f`IWUfzgf<=o&N_l-mlvB#VtM4ORP|1IbC{i? z>Yehj;GOd3)I#u1vHRl*qHnc=e@cPDu-Eb(BggC8npku=yElK_ib+St9Sl0joRjM; zek(z~r@;Rzejk=&qmk#tnOcqwyid%pDmd-o9403zhLG6ipGWGlBpZJo050RfEkL6_Pve2%D;s;-B-BcD_0+2dy zsaAhWs2(!yIC=;Q&HBqq3oAicu!Pd~3oJ;pnT2wGP9^!kLH&X@NU+$jh`2D>b@ zMB+?*ceaszJen@vF4$rUySG;$W51Vj*gauR4!h6@BW|g=QepUuh*BTxUnG=*rN|g? z+!2wJ(KH;$7hJev?sv>QG#;l~O_ROOAXY9qpNDsN4?ON}pJgK65xN)%WW`VK)c%a< zs-cOQR7>Wbr%?6Ay?9J&8Y|B4Mev1|yN91@M56g*!F66`=PUzBK z-d`%BvpjbPIPv8?oT<8)n_n|Nhoy@-T^t|>^VQU4mCg)1n3F!F%<3{dGONopL(k{Q z>N3r&rLSFxbl z_cC9qmZk`I2g@V9%x9SD*^~QAN-y)-klJO*953@}U{FwK>195XFG;Cg9OR0Zd4dxh zz%Pcp%%=vu%=aAR?sSXAWM1Y=0?6H6fE>Nd6Ud{y%-?AXF?yN5v&t=kM9KRngE9Bi zH>n7-Ag#F#5vTJV7Rueomuvor_$;%#{H3pP62Fj@cXjcXq3tpc6UkbVYdQqr9_l1+ z*(29q(0WLnu*3GS>AZ zW6i_wmHh68-^(mXYamd(ueoT$or8zZ5gK`?xT&^Lf=hva=439NXfyf)>q9C~+=0D2 zP7pJ#>}c-}Q&dgGwi(40&mhM-t!<~N`(+`x;fuc!@|0G((9^QE_cxxT_Ipx)?w0hP z(BDAnK(HfV)uVJ0M7-ypX=-gAqohFAUq}R}nZ6J3EX5_0rvc}j-&57=NvLYfktqMl zVKCiEWB#j>C9s^55+=TCN}~pj`gWy%hQj5bUl~3dP-G4CV@g~B#d^3x{d6!8ba}r> zgTMn6S_2m<;HrrHkX7|#*41C6Ul2jgWIreT?(+Mo;kPpN9&aATc32d(p{pFYqtS-G zSSzkdpbbE>HHIp@*J>9#J*elsp|+{8k=+t2;J1>1-D3zMm5LUK*BqcV70U|ubr!lg z(>evJ%1LgVbY4a$hB|J666i(Txl^UR_c_db>9qI0fq4*W=$fHA8L+Ja^@D1^Mf4qc}lxNtY?d!C$-Y`MK%fufmn-pHVxS5=~X(JzH7c*(%l z{Mvz`Ups2(A`l3`DB_f`LqgwSlq^8#k#!SI0jXE9nvwne%|L&DGpfJMm>lSj%+loa z+SmU6cA&q%o!j4~ zahXBTeQ3^C9~%7?*|AWymj!cIT(y&!A1v{kct5(V0`jrPq&2Lt7JD!4mOMQdUO=`n zFi;scyr1+Zb<6b^fcl>XRPn%f4(tA9t@xh_0lxAQ#v8@dIYpCYOB0jy|HuXBfL#Yi z>kugw0YVPDEgLNVe?H{N;+8M3?|!Am-;Q8rG>N?sa%XBBf^7iYUz}<4!;Y7VY4gJY z_US|%;KG%eGVtyn!W=VKi;BP6+%6vc$9i#;$KCxyYQPqc-`WOQhk3?qKZy%fl}Grf+ipPYKL*5huUf=!M{2t2VUgG;RIB+R_An^V#d_+oJyd&)&x4yZ-^U@Xx7@ ze2heaK8l&*dVLL=N2Zs%UT~2c;zpHl4~w?#v3TdtRuo5ckEEZER{M#u z1X^R7q&4yGF{LT9rPu6R4lP+GU6a1in`{xbmsx{1RvV19J{CLv*^P%5lUDCz)q0hV zk6?=F_-McMEOoqcxZ{rxcl_~cgR$d(i5=gTI{ueY^==CF^4ab)z{*Xd>U<)$b=gBJ ziYXh!C#v--gP6iRIYoT&n(UyVad1l+gjdP)_Q~OKe6reR9LJ|(-{1bpiek+A{?wd$ z;*+{@GH#A;j)Q90pl+V?0gL+6vEeVgvtArx4S#x6z0bsYA9(GO;sC4nnQFZ_c+8BZ zK@+OzdJ;GOh+_GNv<`B{Mu5ai8~@cCoh}~u_=fH)mHX>ot8Log6T@4P#gLWi2Rntyyl*g(vnXn-KvB608Mxm8iHOo+`2|$<8h9#(X7oX0FIK{5jy>X!-vr| za_ujKp3@O{V%HIOUyR>y>5sGPFV6YKVt`FG-%%5*kKf)}ev1*c`-8){>(P-i*q?0h z&W(5A!SCGovdBqq^G1%!kAxfFHs^ci#`c|Ynj$%VgMtyk%IE*G|rS7HSp==dwc9e<_TVC?wcW5*>I{`WccSg}x2$-Q=l zkDvmvvaSDwa}LOQU+nJq;{`JOv~pyXRf~C?RH7`>_qa7 zYO8TrcgNn#Vck8a9>XFnAh#7qQFG7WxbCTb5xJ9Wz{)VZAkpwmZ?IE}hHqBeG-!cB z!&e@N2*)tNK|K4W{btt!Vgm0L?|iw?q3Vdx2%%>+h3jxVH*HMDuq7pe`D| zQ>_v$5chw41EVv`l9W_5*P{L(8EO3l*9ObDx;XmpdZP{71$-tezVzj$rG)ryf)Vy* z`AxOhiqBm`v<_CFW>MEoqbTo)>K(y^rpui|b^th6>{DC(L-VPS50_uaObPgLGvV09 z)eSw&61V%F!^9ao3wd?%y#Pv(q=G}s{&M!L_gat2Q84TZ(39Z0!UPvTb?tSv&v!$H zddlV45xe(!r@heWeRDfi8cN;tVyP1BbMDSYvDP+*i?0CotYYdQi7a&IFh5G|RUn0|9&D6(FD&?J(23*60jBQ%3FH6q$Tmjj$>6}J0c(0J z^JLiVPpnG(Y66bJ))#YC*qkN(qSO#pXa9l|OfqqOxSbk+xPIcpo$fx3;r=8H_rSE} zr^W+bXcwC&8dODpu%XHo~$J>+e#%zu;B_fTp((znl*ednu>7SigA zyZeW|jo-A@_i$!^CKjPI=fR;|ulU_9lz^kesM15_Kw(_s`1}j_nS6ACKYyrfuzII6jKIv#b_o z%D+BUg`q^`SGMwD5C1eQaDJs!(#Djxbl01Djx|Tigf}>_Q6{`0z_4#J0XAAP!qwT| zw<>Q+@IywSUNnefIc0wTgM^%^TpCR{qFh7N3{t_>cNyvaYp4JcYG-W0w}cf^4X zw>U)A>do<+WL$pp$Zv3NZ06Xtcf^zTKlcxpW6YNK=%1&rn8u`Jt2YEPS$&r&iz@kj zm4&ba;}0rzohh8o&{|k-+Rb5}KFy9iGUi*$MaRd|t{eHZL^BGPn0*U7wHdCF@_~*o zGkA)t{8FvUswhiTl}{_TXA2k-D|m|!1GU|qFW*xAFfKq8I?J#xwK;>ao5H}LW^IQ8 z8M3ETHc)M>bONODq9?zU=lon@Nf_d_+bp@adY@BvDEQVY;v%E)y(qi5*YoumNqwb31xi4~Pufq}*FM zV9eWtE~^18(Vr%3J!TmpAyHSlAh#DJ%>IRqUY)Z0Wva)DzX*e$O8P2;5ZzY2@81!T zT0Np#<408QNDV|WEkw!RDgA9{OXi^B%=8y`M0drU@m~?ZpV-y--&q~MF40wP%-cis z!8=n69I+HAY0Eo3t{KoN9ifXlVhyKsIY^f$xNfVk2H_g=>Kk-~{>#vpt*yTdZQJRx znMY|=&8b~oT$WFW_S2hE--l0Lffs>os5G4{J_`KYG`(8?THi`rVb1%3Wyu=gPswji z217ecqovDmI}2+UBZFGdr@XjfxQjK}EUpBq0S8%d``4!S@dK{5zk?URSRyRYv=|^f z&BhfL_PZQ!EyLTp(wwlQBlq0(P(i0tr^Yq<#;{4a_u=_LaveBm)VfX$6j#Vs=!od5 z2giK3L05d}yLM*&?f_n6*pJ~oR;~Ml;ys~8eV_(-O-J7)Rvaf>wEE$(-aL^#k6E(W zzw&Wa7|LIzu~oV05JS1rCo9WqFwEEdq+NXIr}g6EG3O{(rWQ0I$$u(vR(WtBS}CUb zQy|3d$XF4B14(Pwi`*YWgyMpV+RiU3|TKcIkka<}PcP7fqTc<*U^%DZ+ z(IcW(UdrfR+IG){p@zqV`-)xGa>-9Km$v$?v&f|0_#eu9ypfdGIzJB1h~_YrsN8!Z zaz%H~5MDA<=$f;dcm+WjJbr*b+h^)pNo&KiUvotyd6L6oc(0GwuibcW80UBzCxe)v zdX9(Ngb!xI2SXQf+2IyNr16}g2_2WpvC7bc1_BORr%X5CV|>Atry4j3t(k0LhCfkt z3{|doQ2SKrJ#fUe;59bG-_i=~Z*N{1$}dHsSF!?xY$t}F#O9m*b|s^|d2w1yF5F0t zES}$7jMvDnJQaLjK#QAx-xu)W-b7Hz`yv z+CvLAIy!;!H0(HBA7<AZTRu>Hach&Mlu?ISz5|SE0{K(VpzO6gqvYLAgM`;R zQD-Dm=HBh)jr*kN+}QnXhbH9%j&<0%j%q)Uzz(GR*Wq>dxZcWIMx259 zg>H+nhK7u(xyW!vHG~Y=+N00J z=~|g%DF~riPq9STS&rpP*Va#<*s#8S5(WF;(G-N*8S*Vdm$amd>G3n<7H{z3|}iNA>AP_Cq-Aj|lRDRTLWjpeH!WFplWi0oKb9Z4w*GGYeH1so zt6aU7q}Y^eEF<<<{)Dyl>-G21TydcC7_74@e`{@hyUHixN2T&f_-&~?mXmyyzimfk zV>#Ym9GQ*f>+A?^EXObF4*gATeU7Tb%-toeBJ12zZ!|7wytEcB+Y@W#4(opNN=2+4 z$+Wh4l<83`JsN-RG%9o6dImy!{EyDzk49b}s*<;#t6c)Mo`q&fz2_iTU@I+MkIg}k z-;%wMzG$W(&R0$SL8U1mP#fMNp?8o%fMP5GO5*SU#n`iauksvL7QAlEp%5@dZIPZ- z8jI~zaWJlSN-#)Npb=sEV1Hk>)#2)pNp?z|>kn*nCB^p*RiG5D%Y<>mtQ7dt3s)s{Wkbtll+y?sHkxPbnd6CIAIquoWGi z5i^H|2OE$yo;sPk2^o32`%tZSKq2K0FX7rD`2oFnM>^c6+n+fZhm`2>$cKD1-8|vM zTCa=hs3Ivps-Abwa0?Qq8WgyVBB(_tX3yY@O?(0MOrmNv)}th@$A8cvp<}_)#Zzdy z`@|v~BcvM~CRa7qgBD_cCCNIc65d$ug}V9TO}!p#1A2=>6HTj9@BR@@G}HSDG;Bj!(X#iA?k3*L4cWh+=+*72OQ>$K zo$hp>sg3kdrou)3>JO)3n&Pu7DHdHRUFjHpExuAhd^Nv#kb8|46r7zegHk08&g7gP z)#$%NYTO8}`;~dx6q0*O3*AUHE)@;MVSG)tTC~3Xq77>h(;s_-#w_&pw%^CLU1rVGG}w_C&3Tc<$V&54;f!d(gI9!lWI3D)!rH9Hw9hcN7m2voyI;vOwLZs9+y^l))A`@{c$WR)tqWL@JJ3S|Gv|DV0Lfw$|d>pj=Yem#4i zb9R!G=A#WTY=&*19vQf5D}$96%>#PC>0A-L0c{bI@iX|_xFFEXYIAm*-1{)lcr5~+GOp$ z_FB*D|M|baa9OoE&A7~LPG`BS*qmbYqO)1(m*T7@iuqkRJO_wDCu0XUzz^ZjP53RI z=>26}pt^FsYiJhZg6V5V4*mxN66+FYXtr69qRz*TKoos(tXLPmvZuTFTejS>mU&m) zEDa7?b`lgz<5ncA-`V@cTDIy#{QIuwKg<4n^V0vI=6z&9x9Hj;-Q^ak8@4?gu}Jq; z7HJF9HwFocc5$?kZ?IX%ShDA{&|7yiAzL>v1S>dV-6pH+HW>!AqGH?9o0Ax<$YV@kB(F+4w@@j}rIKpbIsIJC}vSrR0 zyU7`RiHN}h^@)KM;4T^)5q9M9+AO%;VBcARy2VOA>NrajeztP)S_7lgw*%`f$rJ@jscI)9>WvC8*|L$7*V<$4Ty15bssxT0*ZvD#7j_Fb^q zI>efT=ou$j62c`~W`JVG+HSFu9Mj&<7Bl5yE%h+74LZfP7ehyRb#)U~m+iX!b?XfG zak-(t&>5)DFvdg`V~8Uh-NhNzF3wog1^g94*0c$F%yo^PMpe4TJvgjO<(Hofkw`_Y zHxKQ*^DbnFh?9NWT^ozE7n!)$cH$bc)+lkU?ZmaV6W7|}6|5w^#5D>eNnE4kh{Uya zhQv3^1>tQSmzH=8GL}eOGu_%em+8&$AMLES89A*Dk_I)mCCWXY3n*#_mzA55%-W!H zM6x#MJbCGWEjC$X%r%d>W>HaNyaNFrbIoI}dCWB*g=_xoM+Pj=m}{nbV>W_oeyFlY zCy`Hll5ov$eSBnyG1olin#Wx8$>y3LO_TcmP#DN8hfMkkXh z&$O=o_67!o7_tE+H=0XnzH7R)P|bq`3b>MkXh>4vFJr0N+M>imQv z^8xd+8_HELyLlC{`iXI*+>rrs%wA8&9j_En0XQnz`Ky`*CiOV`pJ(t;j zs{lEmZ4%7qHEen4bFTwk==Jz&G&7k0il^-=uH8!(721yaH6^;FuU)<0h^2pu`Eu>v z+@QBx0KfdiH#Mlpi;M&;f?#lt;JJw*Qg&ha5$RZ?W6#=NC;i~1xAy*^$zbZm>kq_A zqe=7pQ`C0zpj_@!Ge&dPyyD~GFIv(G>QaBfe|YE%Tbu^u(RJy{{q-A?*DSz{mkcnY zd}x>|7hy&&!i-#Gg5x3+92c43xU2&aamiRlE;7M!kqM5=MyzdIHeqe!av|z+E?Y3V zaajUl9hli}k&BOZFiZBJm*%o>AD-&{mMPvd83Zagv+Y8Qw&0>gQd#5LrNMfM2J zc>r;7&}Btpm87q9rW|Mt!HeFI;})LZoK0i~8rcjckwIUaxp>>pV~w$F3GI#1Z^w!| z#j!%JYgh}tovFct7>+mKY#`5fvmw7d&LI#OQ$#~7Z61c+x5mzFe2_F2ejl7!B+*$U z?9SUo>H#j?+ga!uLj}_t%AQ5n__w>LyAp~@P#`Sif)HQ9dsz3p;}=tRW|NeNyJo>) zN_YzT9=AlYjFd4C0cUPQgU>mZ8pSh&okP3RU*I1}U2EWAa7 z?9o$YE+w%$Y+vY%A#rA>>ci=Oiq2-O@hP|vDi@uk2ObY6h z+_1MGj&YS9+pTQ1Gc=rJ(|fcpDTB9-%4TZ&ix@<&eOS$fk(|MWeOSYM@Orlat!BcQ z%^SP)(pt{V8TJWByKIepn&VSbpYnCt>?=5}a~U79#$0aS&gA>x+gft1R=??Uf0iyl z+bu;1X(uPlp>!2~SB#^T^~~QL^2s=?pS9{|BIA-x=xqTQ{R)WKnpRk=N!*Zm!-3(n zewy|mf)k-oIv$^P@Hw0&vE%XSOxDA^ObHGfD!4(%nT*H)4Z`=3W-g z0mGyXIB)KP0ch?z9Hpcd_2;340{HgJoioiu-e9Zt=H$X;v)sF|30cE$8tbdmxYU-tov`E*Fa};_E)IC=X>U0FtgvA>pj4-*_XjcX z*K{DJv&srPOvf8wIixh5F3UP2WT$+i%64vzD?&4Hkt6O-kGLxYnYYRo zTCN2|OhbrQ_Djt&8=o(NQ+V zKesYzLqYJc96Ua5XA9UjVWW626Kxb^9TZvwP7O8cl!8WB2_0dUY)aQ#Z!v_k__m$u zB%EqNrs0HXG2P(s-85gMhB^zASm)w(J+)C`-FNOK_VR^Kfo#J9dYEZ;W^K{?l2qSJwrA9Ky@?+31*g zDj3wdTwypA^Ryi|kX&7<)N}?JR-XjFMq*lOVD|7#|EvICb)2?@GP1J{e>d(wjhQ^n zu!o}{S!%11Lh}-+2-a#_-Ar$3b!XoNrY4*sU<^HHz(ChPC_~jZtw<~}gN?gf2S}J~ zADgF*G*ZG=uHc&zNHS7&GpUmhr~yl#t<*&FwFW8geETP#^E>6IZ0#RzQ;dWCiQZ7s zwMV0u%=Laf?XP9!AZlQf&K?M`F#WXFVXfA|R^w?}9?cE>sa|znK&CB2rYy*JVwUGS zadlx_EJB?}ZDFz&;JJcELldi96RQkXX5X2ueWzceeWJq9n#(QjGdy1QXsa3?7q2oH z%+ODMfBb5DeSyzySOE;8pX}I0He6~Di~6% zG@W7vUE3(d3KFjrD|o_5vC?#k6&zb7mU0xOSRvQ4Y~7Go=QD?rX&v7%o@ZRl*4>m7 z#5~_HYj5OYo;OW7DqqMq@XD5;m$}6BGQZM|o8+=Cs%p7xAbb+^9`%v4o$$#;!Y3CA zpIl}@ms}9gbyl#K){*UYzK&`0vg4tR~|t z(Crv<{P5~X?qUss)-KhqU6rN9T@*|s%A&ZNYjbq8<1$BNt@pAVIMt-bmc@ADewx)* zG(f#>%psagsy*aoU9Ms!8TZA}I$gA{T%HpvK^cHRPKx5&@93LqqWJ8)`JmttC_oYQ z4o(-3{;zN$f*SaAWVnN*u1;~Bk_#$%`ov13ONEl@!wcuK)?6M#N36#Khj=Ti;aGl& z>v&6+>b*^_|9QGeb#`cZUk;$H=j%hi%>Xh}h!_ZH@xf+JUZ$st=5a7nd1T&*gc&$( z$7kzb@{a$U>-)AN{r)pHD0!x*+wNl)_GkZQxvr;9@|K&tE!8Wy^SdyY92uZh0IP7Q zJGkSdY-pP843lP8+AHb=S_hFm5iEHq0t90YHq*C6Nj2BatITb_R;+lTek*>3fsmk; zgQDKk;{J%!^b$U@4VGFb-X%R3r}o9ViJ!jXslxBg8i9wp z;7nnDZH!tMeBiwAJCr}6UQ!bszbW&YzWj8`NqdK1?KP?8ZPH!?;U~>6u?5Q*qY>ox z7&ONq-Ygy?*B5EQbl{!JrQscglPs3cYdxqeaDdZ7hBkA-{opWrB}UTwi>crw>siC{ z1cOX2qd)I+*eJaBE62ZCyyGJ?h5!ayjfDunq3sZfQUWY1;*ZYx(fnl~jWA2;449=n zd-=rt_+RMD!L?J4a7+Z(UOR#m;<+^5+tQERreLiFEJ_7J!|6^C)Nk#c8FVLu6QQ&3 zU)&+(Aw9bwV6_3@iq3?#4BFl=5~JXjx}zXafl(Bs?kI@29@HHLDdVV&f*?YQg4AW7 zAOKmUV_hH!nGu9Htr}&ixo|)d&=y7vpUZLTBR8OrL=mZ204Um$=!7plB|4G7uda{4 zHk^S69XKN7z_hi?-E6ax@URqQRPF)6hV*`7JXn|&vkH_NpRNVDEMglxF5 zL2|mW;@9T@4TZDxaXShgK3|JHBe^1P@eNP(>tW>cgwL$Bl6q(p7N&M58<|*@Z6q6m zflf+aR=tuXS5I5!GKs*P8^S0M-Gh^--~52PTe zf`M^Z!X9*Jl!3xJ-VS$1(96H)8vs(kn-Oji9)p6MA4NH=igdOC_%&i`)6PpM4qRVp_m7>O;0Xoc>hyY%4K`UA6e7Qxo zD{jOSUgOW(6{6>;jwgc>+A6*M@d3Y4n4j}Gs-5L9P z2FdQ;!|opRY#=p~>s%-dsj;*rxE_K7^&p15usl8y>jN3g3=bIY0)Dh;K$Bx$CcGgb zF247sdhxGOanIM#arDkdc=uKXxIdYVY^^WcB}aNtx3IahC?v&ieQ7oMd%R7-N8wJm zsD})msJQvx*i7>Gl=^sU(V&>AE=u3C^pQJ{EH`q}ybMO}6}~uXj2^iQQ%H(?zEx-B zUiauEaOPD88WivPNAxB(a<4_S7DtR6j_V}L>>ZV7qS_pe>46QqaLk5{*|0GiCR8+L z!$z}V7sRk(ic~#~*|2D9yvtbW~B^k3}k~54od)(Qu zPydai)F&ewHW>L+i4A+hSQ|Fhh801Bja)OoBGp)PFX${d>syCW>gmpGs`l zM`uooXBZ)>C*T=oUN6pr_=uii6Qvv01pXz?Gfcs6%jg-_e&TtCQQhE_dxp8Fy|z=F z`KZ0BXPEcvb2}l=u!)o48AgSL<@O9CWVu}1C%$J`*oA>-*u+vi!#FH~zgoIynCe8} z=Cm=wkL`uHA>k_4$&*8PHDwF31mmMCA8P5(65N_`B@q+X5);=V^{z|vftL`Bo%e}q zhu~-YPLkf9;5yv0fWSdi886`DO!GT(V)_|^931h<8Wj3&SDdS&-nGN7RRi~@g)VKw zcm(gO5iV^LCY^qI@x(l+n;$N2&O*mjO!-lfeuHz{uoxZ9oQ@s78@sDli3&x=c{(ohnUFQ?_ z*j(D$-Y?9%v<-6Ry2jH~y4oKJi0 zTfNJCmTrvBhMvPN;08Yq+d z8>4eVac&-&9jeVOph-33O>Wy2MwJwo5VTwvG+aoaoM%R+JX71~{YKI!VYV}ea@<1R zlBtsI1T@&$RPlcc@@!=_hD8DrO+}xWh{jm6f#SvMqJ1cXBAy1{@lnw}v5WR0zC_;B z& z_D<6+JCiz*7LCxmJq_nDgz*ZBE^vDW46V2Anoq9b{c40w%$6GXS z3;|Y}WWpl3dq0^sRFmU&V$0K=#Ca&syM-$;Re+vc4}0f`&rsk33#9-Ng8mwuCK`^l z)@}1cpu^>f@&$-7SSyoO{TJ(3$@#ZdVroPs% z?*qI=wo{MrfST=XI8#pfXYb9^%NU4liQdWCMT$5P+L{ppe|@q4RmAVJM!1?_=?*8gct7a{#1+4+w#PvFIvh3=&SxF;9kqVex#pu%_y}o#a z5czm7nIlB46k5wG6e`)Ppd8`6eVPM#5h>LK<$Obfw=ikyfLsNpY_d{%0ZOf6M2^(ix2a z=S{#A?+9N(|5Pc~(ez5}2LV^hlulCYgs2#GrxwPn7E$MuHL?pnru?Etot8kBTyiqY zOF)_dLv}tQ)YhOZXjt6w?sLHfS`q?t496G8$T!*~I+o?EdYdWVD1kf5H_Cw(hlxT% zOsz;gA8M}Frjd5tVu?ikVFE<&wNhN*$TKda9S!+Lg`_~o7Ip<96D~`@mYk9h`|OZ8 zee{0)tN}hp9x6eX=Wn?)S4-kjz-eG*j@|1q)xyj1?=|XPjo=Qoy6OMm&atf~>Js%@!KIW}J z8fx*a{Wbcw!zF3FiZo%|yoQ83+*|^z4pKHM%|@N04D`V3!w1yn@<}#^Kwd(Gm3L#Q z|G6VxvmoMDMjN$!LP5j;;|^u<^x1kJ5K~uX37-`rq__l|_TJMA z%-R_~v!WI=t8d`#eC@XAzt1JBuo5*Vjz`(r+pi>Dl#)p?8Mvgifys;~S7$wCZ%ARZ zYRpM2n}CcgO|w6qHTLGp1_`d(nNJbfERokZRUX;H{=t&?-)h;KZSf7j{^ZajljMln z7X3R=&Fr@Lwah6tfzP1~63DeK7h6+BKkS6F0VKVzDzT@04|qId z4_F=9Nw#uCbt5Y*Z$(0j?w%Y;!V)`4-0SG^epJmc(J8g!sMn6J6(@w$YsD>o*=xlq zR0Y2&wTQ8uj;M4!zXp?TT5%uoJ?FIIhQ|f+0%3%C$;_q|S3|>E@sL{-j+=nvYXf6< zW*O(&(IH|8T)-UF!bqz;$jas<3Lv3xF$EwM4WY`DDW}hf#Y|4QD86$71>y)2@%4@( z8Q|+6GD7Z>#*HF_qEd(fl1!4Fd+o(F+oGS~1MdsWe;09glx8C(7ue_@$VaoL3bkt# z`0h@KBY@qir2yuNc=g_0tza;i^(Q5pRIoMq9J5Kl0GT0cKr17bAl>TmWY*Y8s5VT? z6?-Mb4M8Wt+diDv&hATXHpsGdlTFnr{FkT5WvbTV-rr~y-;IlRd{yDMiX`!Tt6@ia z(0k-RD*1Y!$d!k;hg2kNEyDx$9sd}yvY+{bH9VncUe7{Wb0au99nzYI@;E@b62uIk zJlK91j1F8ti#q$x_JgLQgmTdeWwL3hCZA~ryzM7!L?~e=USvA+hX>LE0_=H+ih7cEO;K^P%a#@u^IUwy&nmN zq8u!^i)_j*W!VCab>kf4&_jfOg{9;P+njy$MolM zsXyvyEJbD_OZ{UcWwI=q>JD?V;4rgpCw7<Hh`*emv*d#o5Ppp5GG}Z~VJ(p1s9n zZ5igi@I1R*xH`|?@Ub?W=TOWfF8=Ue!g==Q4r^}Yc_wiN@MHKQlZZN)4)Y|hBZ_Ik zhw(+MV2y0JdKe-P65&v%a<1?sZps;cdxy}QXPQW*F#u79UsxD_`1z#64}u>Yei{(K zhf`h?OP;*KumX8#_1sF~1aOR?&z=|8xr2N%AU9!!S_)r9&m;zReN$_} zdOv!v^f{HS3cVo+9=SI#g0YzNmC-FM5SdIw{0A5z35;h*F)f57(*JU;AYuSV%)X#Z z236;Y?YXjXcJ}lx=ttdEB=;1*V5!o2Iz-~SDuAN2MdIJ-n`UR&RMd|iy|DU=cm*`d z;uR+5#K=>80+pfGW#?Xd4gL1>GZd>#sT6YzaM_I7RI8TOlX|@#QAG8zGZT}u!aig% z8e+Cx!ASNthduX=qOqYQ?^R*Bn756GiQ5%C_yBH zcI0fO_I2V)Adz#XU)sPb8IO(JWeM*x%pI1H(Ga;qcR<=)4S_ui92f&>yz(!CEkrceCbuU^KzUp;E?T`Aqc z-W$j1OX>#kQ7SjfEQ}s)1iI(mvZMR+Bc*S9l5RUh=`kMpnR45UN4|p4_HwAPWNgU< zpWrI$EHzmW8Lh;zxL~-(PsX9rv6C1OpJ%0=E?k9_S$G%(Q_~#T>moc>A%$|olIo!7 zbh9yfix-0VvH|k$s-i%hZjun3@gz98J7Wax%@A%8wj1M;k6mk4EAbIEYND(Soq9Ib zH^0M}E_*RgWaRO!t_sr^hoyokMTN)G_rPUEBe*OnksOzW;uU@9Wqg-D#$J2uYM5wp zmCh0KwH*jLt}|`EVik;c$~wZKXS!(zg{4!&n7$Nt3FGeWzHG3aJrpOJG)7u!lmpwu zx|?Vo*d~O2v5WBYecUl%GyI~%Es#*1O*3T<{HdgatapX@sH^uXV=kM2jwGPtk^1Ir zK2GX;TUN_hulQl=#<$~D5 zj5;voGY%t2VIl?|@rJWT&Ty?ea4UU=F@V!z029XmPKW_)c@9m25DV`ZK&dU@8^r)3 z06EpgYT8rFO)-FHprts&wLT#R@C+Eh)qw$=cFi}{{Dg1bR25Rbn5x2+SLwhr((9yz ziCuYHl|;No+-1b<7EjZnjJXPmgH*7%IemrS(6Ki(mY=kQ1=)T3_*) zTF-}D|ME8hCj;%=wcZ=F?mg~?R^}LEKWDi0cYHClevWIM)aOlywBngo!CYg9y>ph&52<%uC8cDU0FHTdmjLhU9C5t zN5!3YZPWpdirenm=t|i+%`;wA70vV0ZCR7z@TYrZWPG|?OYeBwEuLY&iZ*`Z-jI>; z8R3~D;4LuJLUq`=t`iXBx$b43^08aYmmS>n;eZ(D!!x5hIQc0b&Fv01*`t(cpcdU0 zq+)bOmvC9L8T4zl8+LHPz2zz{vzwD^g5~-iC7+Kv?>ZyhxWE3|_%%4P9+1!6nd{jg zT<%a8NMl{pl(Lu`-Msm;rn^Rkpyag8thZ-37Dkynae)FJq(F;bDPs>m=uY#MIbJ4w zXl0RN4~=H^E6rN8N4CU_wDFMXwWcEkY@oy%>9pGGp|XD< z+CFCw_EqQ#uc$dRS3J_{uhS!0f5upD>=PLPzUngcL$&i*p9`KB@#m*7@9NWmOMhx# zzwcB=Q`rTFSM{Hj%_vKIiwctcT(8Xbe*}ADx~G2*m-sqrpqP?|+Ao}){yal_AiBK2 zo*xnFSMX1t6xPLoI9rviCZ{sT=0Lo24(hc!%Xamju2I>@`jFSPXg-*$G%D&8ABn3O zY^#sz8MbD=wm;npKNp?H>AT?I7CVEO9CV7{aAXmc2HUsrw0btxf$f~4C0_H59J2v? z&Kk)nB}KQ#e1r7Y&ch15o;U>4Sg9_i>1JBR4F$De+{|ydnnD!2@Uh!X#mv0Rs#310 zzB`}PGNB4`y}^oCNBgWSIvi0k;u}fC(9{1l67^kb^;2zI`Ykcbo1$ zv9U8Eya(Z04@a!nv#cFHBy!VBvPmhCC=I0Lrhbjt@A!0-HI{cGyhv18Yv+AD*uC{M z2R~WQR4aw8)Iiq3VCM#*#epOv55EV7WGC(z+0z~DcB#Tfo@+pW=5wsl88&07+cT*- z;WuqY5zgXFk`qHM9=P2f>HXyt=b6HB?oAmx+U`rtLn$t_lgd>j+oa~k>lBIMq44@& zO>xr8*KraJuj4;Q(K6><&4l345m!M6Gn7*6&|abou8eZ&1b+I z0|Gm;E?eX04kPWS`V6Kzovm@hoaFi175($rT@KMR0rxYqPJbmWb}7WPvgp!Onw`l2 z&hFzV&&r-><_B#A6Vyu^vx$C}`K2sco#n$vCfi8g5ei5SOn(!f&e8(u%MaTI_kW0) zM%g+3?iTZ(`r$2zVsW-s9ne{BV&L41q!RT7$~qi=?QG_irE-f?T`}SJB%9SS)0*jo z9;1o#aCgwo*mTkNXdYCQTGZ8fAa_0IAE5^2h)25BN4kq2(d)KShE?za2`j~F>;~5A z4ro{`D+*_2in<`TL~Fw0I5Sv3mOjcB$&7}~kh5aD9dV%L@y!hfMe<^2O~63qnsAzi z-f)lROpLc#4ny^tr+sY=f9-~^I-c5IIa>=kx)ta6VobwEBHtnOzBZ*aAP+M6&0evjgkgKW(36@PlLNW03Pm@q!=xx z2IGgYbW+?CdLBuLn_2THgxK*t85Y?vUFSUq| zmq1;3T??6nwZQ3cyOjz_wgxu>Rqu&~x}5rk!^&dfCD^+Wf*aPzsw|g2)|y0HEpSF< zW=0c4WmQD$tUZ-98qO-HBJ=35%)bzs7LRFt#oUYakp@(ZM3*iyQt=?s9qC>nkX*jZ zo+VT_Xg_U3>4gKtN6@#aLG>ezp`lX5l@&^MarYn?6F(`c%q#Um%GOrz|K&xu-KCE{ zu0*roYinWF46uSg?@TS&sF=o45L>}E$xpD?sfNP;ii&J0Ud_c6f#SU6%PCk9N5R9B z&;~E&1JZgY)u>e(QV|k4B8#fjm`;-wtxMQvU`!tTNpTSxy9_NG9G|=jaa1ra)hz%o zfl{5bC6Zjlw|mej6Wx?IE`uLz6^K3bMO>zEgjJ-rp%kJlI=h!s7dDeCT4nOgR->hv zOaSXV@kxedb7h=vuHJ<+lmOA=n`o4YQ|h*%z(l+RRK}RbHWi?Xe#4Ez_JKXJfuJ)V z?%c0@LyNBIYXLP87TxKpSs@#Uc6&mL?j15Mp2T&np~%ly@W2$MD2WE^9oc&GQ&?{% zgxKI#8=MR|)>?<&TuctVX|0)ptPhp7*1UT;>sVGhV@q8Zz*^|Swp5BI=O|ikXz0X+ zX>7@P_efxS!`ryy-aRVGyhmT!>240!P6<$EvU1ba8dp%U^bQV0rn{!$%h4n5Qt z2q0yFJe0O96f$eLZ~%04UYn zzA)B!W`K1$b?o0L>SA@CdP^oU=cu-q4}OY@Ltj~Mx;XMyK(rW#>T6|HKWNUF2$1l* z3&U_U2nrY!)F0PoD=8cIfEpE#5@q7gd{=3!IOUVtk${3YW3;Zp% z3?N4s2gqqi+%Ye3(Q9ssUUQidZWczeB3cTL=UXP18KqY0>ar1Lo0}Jcv}gtH=2%hj z9vC3oX!Jz3@fH%|G=6K~N>vhY&`WKq6X8qc{v>sORvjVl{gi^K9hxG~2#(SY*tW$I zur!l4WIMoF>Zp+YkTtI+x{^nzd@C~@E=&2O>Y#zgWOr2X2o!yo>MD|6*={_{m37cs zRMexxHccUaH3wEB_MGBsKatlbON~0v^cKhdLE^VX{mFEzD+XGKp5OK5_?7=J*&`ik@yRpy0Qdha$=j_we++zxECu?^-$KvmW78~bdpv-0V{i$H9eILJV|)~Ml%Rr3tKhtc#CHHku6GAU zB=K#*6vW7lJAep##$Z5%L6HrYyg*S)0iV@`?d&$nek~)6XDq!Dj*(Kh!G;P&VvQFo z4Hv281(f%8EUG0hK(%dk&r~rB!$LMm;VdqY2+2N^=skwNyhzqqRF7h7;ZNdFl@uH7UA>B84O93uYoJ(E%|fx& z2veXQbUY{5P{;r330xbnPa3W@mk8n7)xx!aR|REw5zQ0$8O#`}Iq7ljFv?K5atTX{ zS*z5XoDr_A4T?*acw#jw8HU6=#Mzs+v4*Y}S<~sOJl?Gh;ayT6aG)PWN(8KHhJkBf zV6+VS4k8fE^4K@;X5E`X#0NfhGb;DVgZ*y#Zmo)HP^LJXE`^$*8f#HnbM6dd^lF<^ z+0?ZGe8Z8$+ScRTdk&rG?C{>B!y2*oj$DMj_v9iZEpX)G=zBk~Qhylb zWc*>wg-3;g9^~XPLV?k2PfD8QzWe=UUz>ix)^K&NsY!tG~`q`r9^bb5z*BHA}W%) z1?PiC*1IUVB#=~GBcaxvOXGOIM5TdjSP_+uElPEs`&i!ZymzubvA_Ph^tH(i$!knb z7)VN=t9NI(R4rcit|W(vhO_Glxgoo}0@(UFXVRa({E z3GGuTKA{F1lC7X8zU_dtbGeG(9xh7|qr5W`5<7Y5@UlP$Ee*z`k?aJ`2>K?+^pQWJ z)i<9p3!D*2Z}xsQ<^fMw?ST-7X9{I3`#MUH4+-E+*Rqow3dA+u|D`y{4uLz%roC=39oeeaS-5z=gP^tYd5=E2|Iz-eJrVzS z?y)|mLp_7VzqZfJqH8l{x#;L~zUE~J@N2O#b8C)&*8Gx4@cx(0+1hZQ z`0<%+<+kL8eC3OT>t-NAtFOV7&C9;0LBoriC5}Iv{cwLy!)2TrVm5bproRr}WrBgq zF9DAg^e|G~9e!C79sVD(b%(zb=Vu-6N4-CY56@(LiuEbSs{t`&csRt4)_$DfjBJk? ze>j_aCofBWSt-_l$2AXIzd$E74+g>jc;T1wHMS%_ZKTb8ewm=`Oa^SDeP$Zn(kJth z|C*ht#x;X@-(ziMXl`zqmtk=y_fL4DAKWC9WRH+~{b$P;QKknZu*0lp6=c zK8CI9RNn)(j0uDf6fgRzPD3Kr!K?^!@o0;IKUMNQNM*n{YaHDHKmD9^zy zx8khCDa3OjX6y_M-)nG1dL0pftU4C$xh!U9{zKj&mYM!6@~R1FQ5#(wj*IQe?2H@i z`0)OOa*Rp1@=#GXsK{0cM&PjAH%Ec9iOUA+;VeSjo0c0Q7gkVM!s9BhVwYeYNs;Fz zSSbuMI9&Ncmx^p_1|Hk2B}`gI5;e&UnrxL#I%Rp+sjt1*>pcS}eZHw~?>Rw09q1;f zFcE=6kuY0M!bC0{C1IMrUP>!el^}j)$wN_;rJKQ)pvKK`xhR!3OLCV%U_BSMaGnbi z=0+~al$*Gq=Dm;$!2(;j;1hibmsN7fYh{SrJGkJdcU2&jB%2ed{N-*^drkb>EX8|_ zsZVWcYpb#AN$ejU-yeT4*&7?Eg!tN`qu{V zvlp~4ss7a*G_d!*@4V+$|AzbX?>X~Fd=Qnngl_swAv9GkUOpIP>eyOgqKKqrXs|y97rSW9JfdbpUSE z{^qL}qcf@(Q3u?GW=GGlDYE}zDJojHrEw-ie-j)XMSacD?2tjd)z)9sr-W&$!skHdY^ytAG>T)xt7dfgK zaN{(Y7=dne9_c01i}TZ6GBEHgheHPG<6QP*F3Nt)nH`*#qBE*7RnKw24}FL8(jWjNRc)g(4Qas(Igl`@`7 zXI=3Mzz~XgMJyl6D;lz_LCoHTzvHr^0F2CkEbT@nKna4%Tqya+o`LjlhO==Zbs2lcKkOmZcl(WYame8HoG@Y)+0d zF%N|&%_+6+UEmq7vSiHV^+QTo(U?P)WCf&m!-~gkW{C!nL=oKP`^w(4;AW#8`hI2B zoI~r%C~7>!I}rvetI)fGSM;O?4x+8|n39Cy6edorE(~i1Cudy8BOK1(=eYOsXG<|I zrEd+R?Bmw5k@X;NN59+gjtW_q&au?_93FhqbYa3;^4vfszD4Q7xZZ~3Y65A<3C*K8 zz-$cCEG9W`Q(@P{oWaUVnl!yXaL2GUJ!Kz5gcRJFwqAJ}+!ABsxjZMwZya2+;>t?udr!*&m&Jl4WC`gOSrHuOFVr}yCq z>7Aq9=68&$8g1FS5S*U@q=~bSM-jS(%W>is7tWUIVzV+UrW=z08Ji%Z=bgwdzC(M7 zeq5Ux2%`p|Y>606R@*Kin6~8K<{P*5VT{@a%UHf}l9+pKMHmnc%Y#WWKUPG2N^UV$ z*v(Cf=%HyDw6TzRyE-%a)I8nH?41RZvL$!N(^gTP+kRW~wqbrb2Q$NS&qINYfFG<6 z0T`(?-D2Urb$Q;!+G2BnEjEhE*I^S=n0%Arxt|H8XPl%7$@ zW4wxKCo+AkUn1bdfTCfuZ@3dAEX}FV8FQyh=W06>(~`%2np*tn?KY#Z+^%JB)aD58 zFYf#Ei_VWCaL+w|ei3cRv+N1$VJg(q3cUb8vRl?=`Q9z zw(2)$jy0cE1F06=ji@chfQwSN3(lZ5AEV!>q-G?UAP z&|hBI0{6kUC9oZpWbbk?hwn%&Z##Bk+nz0)09HJ6DcXUmtR^L8QVevb36F4}^M*Pi z=jlRBf;4JNm1KI;b)9%3e&OZgWG|&Z)9x?QI1rkZfG% z{y?E2O}u>_J*V?Vw4S_CZ0L6fUZ6niwO_9@9Is5Vhk_3=mPnL8Qkg*2IckT5k4R9? zvhwXf!qO|tPI5(F-**`r+|mgrYk~%N^m_Iv)v4Zu3Zfe=_=C1FJHmY;@ z5l|m2KyL#R5Gtv?E}N3)CMN?2DwjMc-H;+wdVUqKpSm62UoDE_SEjaQH|A5fvq~C6 z@1ipmV-SGpl5(?rUUT}Q?G<$aROu1HaNwB)UxC>Kj+{Sa)Z5CF-s=H}M$#Vzga=!& z1Dv4c*OAp!Kn0hGw)bEPX)-KUWX9PkRtg&}YJ7eQbU+Vh(bdk=bOwm?UQg3l;(2R- ze@e*`QM+$W?~(J}JuueJB#+;T!QYf(!Z67%%4xoVH#o);!GSOm`~{mlOLl-itsCsp z`$>{#X|rrIrfwJe@qA6<<$xX+Ehf}zQ=gUdU&~v5oHOd7k0hdiO1J-`07Ma!J<_&3eDo3|^t7 zTMO*=A&9%ensun;`^T+Y{4Kh?&HMqmrK{9`j|E~YK(2a+wz25f6V<+{j4u8Uk2mIpy8Tb2jO=31ylfpK;L>IdK;3=5xrSQ5L>2p z6xmY>HK`z3diY}za)pwy%4B2KDk~ZkKc6>er0RH@@_T?_wv(@vd4Y=Wrc0SfTL=OR@yXLzM`fH#Z5r{}|%>fVNQN8Z_%{3I->qyf;`k2845 zPz+RPgQ6*`-1`j3iVj#(nphOxZ3;fV&UsMiS_q7T;fZHB!{x#7DRZrDY<&_MQ8r3k zdZs4ksc`W=QR$A{L+;X6_z);)>>tr?g> zA}#H5rNK9BfRV)9dj+8DU{3(hEU=O51(ls&XvOJ5@AlT6udIj#Dhm%3(J|^`*OUHau>WZXaaMFD_KyDu#BWBo9$R7^u*vQ|BSRVN=4rejs?^(%3 z6f-#bEGKmc0N{$G+*gYm3kkux!S)XbfjB{_a)6`+S42drYawy8^jiL3VpaecHA7!Nwyl_G}8MYoKwRq4KFrm-DvBJ|T zr=deJXrh2PVO}C;&%fk=171r?tu&A)1nAUhNi-foX)g$+RwPV`LSm|gskWQxK3(I? zS`*$~%)XKp<9vtkmj&RpCD5=T@H!40;`km(d{-^v|8Uj(;`RRaR5s;$czu3|4Js@v3Pp-QsH2 z%+4+O>9dlruf?5(p^}&@8=4Yz*MWc0hkpg!S^qcw^3AuU*utahQ zQc@l2>co31z&AJoL04f~f`UVY_kbs#{>-2h_lgBiWQXY3kxtDKG;N(vC2?#2G4^=L zh{*@`+xe1l#UUpA!XGG7`RV@6BN860^$Xld~}+6sc;kF}0=ext`@9iM7wNh>e3BnWnBiBF&<-4|NYeTSBG zzdd@VMxZ4lpZrtZvs6dGp{4Q&JOR0(-jYr4^WK$=KjP0R-trr63nCRdmTL$VcuBYWq7;FxI;b%ni%7y?a8UQPZm zs9Kg>p^D74;$gYolaz}EAAXtNWV1?k;&b2#kyEY^{vdO2Z1zRZBoPpcxwoP8D_-!? zVu;R2k&52hs2Ba2^d1|XlvIeN)(D*E&t#{nUp|?pTd_jny((r)@~mqG77jCmL>eA9 z=~hkfhL|}`()cpJOo(o*mnnh#3icy?kbDGT%u+dr42n_071Fl4!{frbt5{?GlyKSP zf%)WMiZzjY;CYvX2)ZvdvL}5+Y5GNo0S5-U-8pUW1`)aLJ=>z*mLOdY5m?mzmE_rB z$b;F0iK-WfaXM#aL<|SZYP?!3F)k}rj<4HAkqpQ6E;Ch*OR7vKo+|T6yXC2}?kB+5 zLU94A%%EPS(jA2L1ge~z7F3xzYr&0RE=^ciypFblP~~H-Bb_`>>-bco%366*WkIl` z%6x(<>%MTb?mMci`|Z&?HG(R$U5oY%-B+N>!SQswWb$<+S%HOCMaJW7T_g226O z$CSb6azeEP4tsW;A4M3O`HtpdQa@&L9YNsZ)-0ZxL4kq4;gABuxOr1xAQVRQAx~Dx zdNnC9rf_PV+=V-7A3{iT_`ZrN5Y$Hc(W{kp*LDu_a|N1m)G677l2>D~x4vbv3~B8UR3=K&viX?yopeEub>F8RpM7Ul9;bbOpdPPU$b}!L zeki!Lv5{UsRIxWq#wA+VL(sB;2M!j1xDZ7?UFwJM!IOT-p$lA3g)VetVH|}ndZm7- z8}vg4YynT0en=%o2kd&*^LPVJk(h0~%vQ4fZEz8Or-U^KmK*_x2!KEueaar=K0F|zhDSoFAt92-lY)K- z5efhBoX@CDm%>L)=YUQShjQZM++#jDs&&{-6+bX}HEJ*%Zgc_JN*fkslK`h;5*%iN zRoBQQLfOd33?rv?A*fLV&Z0R6=xK;qFF==zv|&CbgIAVA8}`&u)W318sFw;B`u$i< z9*@ULKGk?{Dc;3HaE9#$6iu!$H zMZKY=$Ev7*Jl654hL)s|Kbea9>YhDG6!lLPP369^rqa;TW7SkX9_#p2Lrc;~o=i<; zb4~N>jOatf^cUP37aUj!!kTbh0&- z)jb<)Dwh>4E!MDMJjcqlRG-SdV@>68nPHiv!^*d3wL@kU4XF^q+OgNF-U#-gP2N!KG2C@ z^b^BwkdVM7C{TQq@+FWnf*cW=J##0|cKIt$Q$*Z;^nPgk1%wHCEn;)MmSH=ba2)pg*0Qq*MR zx#hB+eDz%Bi7Dr@1isK0uNF#_HLX}@$Pr|2Mb`3;rQfMtF(TioXaX^4%EsjLmb!}9 z4NHgYu{8P8QzI%u$3wJ1#6)#)t#+}?rvn9n5OoM77V*iu!*R)q;jir?s<+=rwh|6Z zhJY)C(Q=`JO9vIeOQt{}jl`;REU5M|;t)(PT&6$&SMMPdRfQPmGe zP+3Z5jH-*0sFn{UdZ!L|_$XRO2y|lk2q4Ipt2i5-6IV<|K&Duvd-DlRmbKBixTr5k z3sJs_%OS+z=$om?PXelE!Na1y6lhQsFk#Bu^A_}q*Qq>Q+;Ao7Tp5NcfGYr*EC`eo z(hG_#JpX@;@rfx;?nBDh4(n5icefp0~n48mOq*M7ZzLG1N7A zk`pPvEW_)ho<9)5SGc#PW#yy*jN0f7M#QDp@?>GXD`LKNpX4DVix3l_l6{()I38EM zhX83Se4<3UumPUfyF|K_{IUr4EP)O1$&~rUvjO#z4TuM9KMrQ=rTb^Q(d8HKwlJ}9RgcWz$BwY5S6Xhh>iP70}*$_Hh zr+rkya3bohR*EWk%!gE<8^;N}IhRXJ;Qjg2mdK2`j3sdycbv8WaNlxq8OC0$gW@a~ zmto0kR9+SqqduohfLB-no<-$%;79c9m7<&oi7nM8aw4CIA;zBGBZ06XH zq{@C+5_sb%pc-%&Vk;mIi+BshqIznvV=)+1OG%;oi7^_a{!mIII1F(Nupo>`1(B6O zskZBiy+)cnhaslIIE)y|tZeMYkx-{SG7dxa+86vWwt~h2hrvumWIc&x;!Ud{Nn`LB zmam1x)1Jpj`Ze(wTNKyoHC)gn8y&P8;=3&v@{-r6fh-^fkr_*28}2T+A}pL zjn9C=pn{ut)1~kkzd5xyQTC>RBx7~tfGVfA;-bo6TzWtwml?sB^j4I@RAn%$ODjo+ zZ|h-oxk!@XvXT5lT$Uiv`1SDx!CLD{u_Fk*Q2%V&U36dRDy&?h3}P)6lcHpCF%Puc z9$OYL&Njjc|FwJna8}Sag@jD@_Sv}cU4jdE1AWx3sV5mG4VMtXTw z;f;$;R{n}gS9;&^%5>EGd(I7Khr%@jP-f^a7T%ptUb4NasbiE@>%(w>eL`m^*sR<5 z#n=n8h$ZGkid?jO%^Ub*H=Y+;{S2%78Rp`uY4UjQ9i%B4F_xFRvAkk?u55Nz_5z$k zlaj-poxEIy5^c0E%}FlXR&rU(rIdPFkvGX43(k8r$)M6J$!m`+_$ZPMK;BeVsXn5uSy8cXKqAo2N(z_=&83rMlMry1wYZs=1%*%pYmrw8Rr_eKz387c+baz7{y1PY}i~_X-)`cVxi8)2xZS5+; zwF(quG$4hqMn^_mEj|igAX8&!piUkX$h=hI5orORoxFkzH3eVJg#tt`&63OV6uJ$f z6i~WV;Du{)&LQVqdCew@?jFl)BbfIPrZk3al^_>z8E65w>Q?Z^Lso7NNp_)9*-MmF zrLqPrOyrNcuL4IC!u7rgoR=p%z6hM;NniSHAWv$u7^p$G#6WEwi=x>Bk|s!3Cg?Cv zUK8$dPwfzCOW`$a`C2*-W!cD%D?mzGUSE84VRgJpT3)M@M~+0bvp#F7XwEu^)4<=t zX)Z%>$5#w>#g4xo760v*!SKEF0assUi=tHx2hJ?Eq01c-K^Gy;7Fe~nJC8uBQSp}7 zo5njTZuNh0{S-*LJEzz^zieW7i)QbP}ZHtHL53|lMiR?-rel1Db?m|AMbGV1y= zBu*BFuF!6toFAcjUX(xHm@=cRU3fb^+JZ_f=3*nyq*e^I;8(Op5h^Si&4x&parG)HBDS zh-8qu)bo0{e8*ADP`X`=i?IOOQpUmv7IjXSLUp{$Dlq^XBb8BQIbha$9x*kteazFs zS;JG^Vr~W=#{W~Tzz;DI8#pjcyXD`*FZ3fQ@95XVn-9OpcSjq8KX$)$`1aV^Kfn*=U;4b} z@bfe^CO6q?PjtGIQ`5}X{-cvH;g(H~aSbMYqzT)jgUQm}wMY4CXS29;p6x^y@glJU&r$ez`;Epx)*_kFgh^_GmF`KRP<^ zbUr>2Pb?JqE1rEAAfrB%#>x6zB@*Ahn0zG7ZqlwDGo|XN`Llbf;^y!5A<$Mr*KuN#4zx8aDeWoiT-1T_GBg<1&P#5P;FNcQq zm5kN3>Q(@iv6v0q9B3B~L(dpf5bre8RP8$N!9dwvo1V%VBIUcqYypK{lS9=anW9zr z5DpqBz*beCQ>z*cX45PBaUydGT5YN{;quNesbjA({^J-4LmUg(gG*%TtDrV&_(K92 zrA-Kp{=Q7G!kwO3iCRTg-pRb@LaW%c&porr?j*%lj74yuayP(_!F&uTxD?TM3)V~h zgjSvHiP6h)fDKE~QNx4)htzT}vUXRqNUB%W#=&qWX95s3FHktAHf>>TpyhUfW!xYZ zu!?0#wu$r01S>+hI0{x)=HDo8*lU$wVn*cWE`Nq{?u|urZ;Y6GWAxl7hv#0~T6R+H zV&SwoN>tBr(-uInBrPe0VvKM#;ElE6mA%~Q@+-eL(khdn=v<=)t7q2@f@k3~SUfs)pE5v!Af9vY${&O!kwS^IZgj7x^x}XA1x5 ztNblqa=*PwjSA@?xvBwkX>Rr#z!WXi zj@$z6E$Tu-FYB?mlcCNGOJg0>Sko(YfIWJ2Cuu58;t2fAxXzC_wbwC3{|yXZ`4)wK z-0$^b^7?QGzuRfKT!Err#XwDCTCb==SvC11aX&&Hn~>DBdv8|%kBlh3dJ@Xat!#p^ z*{5qec~|yxp2oM>4CC5|@LBJ$;A*2km2RbNEe$%_hGaU~`=<78=Pl<=b$+xeZym~e z+T9M7sCcp~BX!o9+nzTVR3b9g$U2wh9mA*?%$Z5=vPtbpU3E~H*P&7&St?-QQ&GKkdSN5BR}hE*r_l&TVcbd zSm1FDd+M@Dd8jXG*bHyvu;uSz%Pmk5vT?q6#Vm9T#O&x8p#Yo+kBa;frXzh}AgkWY z;0UaFkw{cFtZ4p-HO~+Pr*OIdrvqP@fu#UmDFQn{kIWz-)%6S;XliZIb>ZCf10aC- zJn+YgQWIZinO9`>4;;)^zDyPAfi?rdBHGS}^a{uzG<{z`EfP~mr9kP*Y{jqrr+kI9 z06Sln=^8~Z7rtKcZgvO)1r))6T#46-JZ_>ag&nh2MXBq(pK!;-&O&;%g848D6qr(7 zb=|CfHR`aG&e4~_0xisTGjc!LNLgu&AhOC+3;7~W@hJ(%Ce%I+YCaz=+ zCfqlU?X~@`e@|G&jyM(M%o)bcgyBX=ofJ3RkO2bbz!5sxDIBb&DpDmL$YEGp$2|3Y zH}>`$nh)nivkm8kVe&;?xu4D4X2g$2=mFQ4*wz)Oz{CN`b>PhKqpWjrBsV;J48uv= z8BQQ(qYNi)XEp9mcpPGIL{IB7fY0+=;<7k~#u9SQvqb!b&oZBX_uh*N96Y1qmU}PS_6uk; z55(v!i??(8D{t=W2c9lsl4CmQr!JjoaesvPlLYYxJ7H4#*qXl-+@xgC$hb>=G_JGe zoA4e`sd|Ac<>B53Q2`ZR#cIu!ey`J=h-4OyBNc-hn8b=JPvSVz#Brps&SI#|S-BgY z?un&DOgZ_B`_{_h9%Sj@Z=>SPesK@s#~c+ma{G{5T%JBzi%Tz$^WuK#q(knZ%Hn>6 zr9+~KiVyn5&9t`f=kCL9ZF%@)tu4Jg&TBh%J6e+4(Hq~M0}=?w=GEs_%?R$?L;yy% zH(}q|E+jGwZ@O?D6a~&ek(uk^!2II%0ALRqabA*W70jAJ1#)l62=4vMsa+1ZYwUQa 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%0DOKkTNxS>>n|>n>y77z=}o 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

)NoSW?kB~wI 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

5Ng6o6+RuZT!H_mp?=cOI|f7C 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

T~^Va**R~qEQ+1snTQ)Z<%SB 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

K_>lH}fOccoX7XhTDQbEW=IyFoNM` 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

*{9eKWys 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

YOijEx7=kqdq`xA{V%iqgNr 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

5-%H$+~0IKX?lcLH>uLh3XcXBD}Db$);WX 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

y56EkydJsN`}mvCfoX16LVigx!+ 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%0Ar%_8$`*&Aw_xRASt;%@ETBo0*P}w^clYPCMEJ z$Bxg~%mgDb+#*AY9qH)dYRuefOgCcv!E`*Oem5d}{c@Ku^HzU%UH$YS3T*-SUBZdH z4{9_|+B-lp(6r_-y2WhH`VcH;_Kt<{jo1hk1PyqOluRDX^=tkR9zYa`bNtz7G7iAWZBF2FCkjPw8UVHfgG>i+k5+*wL};K_3NF0~Nhjji|tP~aDa9#^IfJubxr zzg-ym_!2iOP>Y5>7!~TF4+?D`Dq4vtjPV%8G$!MTV$DWk%qHn zbp&t4j|}QQ3WS?y^5FY+=)@kj+ajnvG!vT-mSXKI%f z{FN?7>xo(mcpN$DvLqh@?ht#eXm&2B>zcvq`Ax)EyqUz6Vq0Ema6m(O(B`^x_Bapi zZ$9Mwxg|d24+USedG#CQ)mt*KmW;O|Z&oPgtX9Buyu!eoy%i{@Oqvv}*;_bTDb=zS z2vgoNgZ$hr*FkTwKa0*q{VX2;;t z^eyBd#8?oq3$($3tcxD@ib{W|+JUo=9@o2OFL4O6rPs@Myhur|gXW+xo59`-8J`>Z z$tnDih`om*+QO~j^jk>J1EZjB3B)GenUqZE0Jl;h5ktfyfpIv!S%jYaG?f1Nvvk3hROmIVs(C2l-3u_SyB=~|wC>~MAvGwA$2z~PTmNoo^=PYYnun0X57NNUs zQJ{Pv`ChOH*-3;KqeaNJ(&j8e@T?0KAsh*&%3ZJsecf7wrUzp1SPleY2*&p4uvr&~ z;p`S6i@E?T5dwI@BJ|L|X_@_r1BH!v3}43_$&lU3(#sMC)6z{qFsz#dAOs8H8v&(ho5lJj5zR zjx&g2zvGJ51R*+rhsbb6h9r`?2MEyt%p3+N+Jv8>4yr07QFk4Z$il1Q62sBD9!bPW zHHj7#WF~}H&3o&RL=`ZHqe2ED(m4?@MKSEBJ1>L>0zyoT{IWBon!XGJ^G;F99xGZ z8V6X#h?VViNTObJrs3)%{D}dIuD3z)0clS_61hDu2DCIk?0O{8EFQtpnQ=Gd>}HWf z{c=Mj(faz`Zshehkwg_($_;QJd@#T{nxzUMIT=YreA4Er3eY2tBwAR9B#I~>oSWu2 zZyD!|z@iRg~AYE3Ygl47~8=!=Hp)-zz6^x4f65u^9g! z)Hg1Fj8coz0Z07?;0RYd4%|tABO!_&Y$3gNIBL{@!OXD!IuQbc_eR)!@JHGs9B&CA z7{_bH*nGUCfj}^iEh$hM_1+uyy;%|$M;La9R++- zIEgeF-xL@_%Y!+$kPIZVo-`qCr z97Uf5aKf!M>_u!@&wTVf&25D(bAVHbhexCw12~0KQT6C2?!aPMHULij(oQzvSP#dU zqP%?G08Yp)0yvr9y#hE{j6FjS2;juv<`lT!_fsIJtx*7XI!F-!P9U3;6h4dEun3 z@iuH<9QndrCM?yunC}fV6{jzRU!V{ig+k#(D1=|25PpF|vBoJB@|{9xDhi>gD7GYQ z93fCsKvQ`D_Z7rXI0HNjkSE^ZPC!!yk)m9)>p{V@>(PO26b5ur6TB<#JQYoaC}ALs zf;A^_2n$i*5ZwQex)`#ZYdSt)Xev$$jE8Jz@ifp>lFI@8JneF`0_GDyW3R!a}71 zF9E^sL|7OD0?17dQIQ^s5bF#%)LIf?55U4Y!^lWjH4Ru;6ST}2r{#)O$lFw*L?<@_ zS^)1(4dPNO+H;J7_`(!e7*n<$7FLT_4htKz(B(BOY=uRFbg07w6gg{yLR$`)nNhH^ zq8CuR0c|%CWR2^>*eQzoVSUD&8@Ouhs=Y{7kA= zf-Xd(Mw1B_vsq+XB_DEhmbw_C(YgW$RnCC@iAUUFMHt*11{$E|BgnLlBhz4ZlaOf~ zO%shUloOQIk!f}^d!BDh7Ka@iBhv9Gv>lH^OI&+#NYtiv$h1GYfJ|elUqGe>wRGFa zGzV%;MW%_weBr0lGYJuL=90;Hw7Zy%(;wiUMT5P7M?!UyN0$LyM3L?!5 zX?+}T!}jH2vp#;J>e>rweO%v)?RW2j^${dYU*2n4?-39BTn{g+e zV|=k&AB`%GTOYr)9qZ$IaN9Sg_3>xMfpX*4M?=!R(ALMm7%o^Jt9&o#3Z_G;dOoa= zk9^9kKijcBe%Y%?Ur1?dybaqIM=n?&F*a3aInSH*@uOk!T(CY~us*sCPe)PDyY;c6 z7s2{yBFL7kkH{SttdAG0kFv<)JKb#Ln{U!{vET40$P3m-`3j%=)3Cq4b?c))^1@gj zKifM?_zyhJn{rrldi&fR*1=my%JFf~#3%ujIPh6D4ed+;PFxZD#~IhYB7 z|Ep4P%!wF+Y1y&zQBQC5%G;@I4k(PA3sU_gD9)ol#2LxTuXGz>0JQr2V@i8ugVlc-w$sJpF1n2mHY-Or*{AfZ1 z+P7YvJlvX)lv`tO!A)r7zM^Hhu?eWj&nvvAYq{84LQL9kWKZNm$iHyL)c(mO`S;ZuYM$O7anKy%H7~T&TWp&`*O`ypfYV>pG zqSP^VoRX|La+yqbQU23z+8IxKIXFSrJzR&42A(97091sumq1a@CJz|GlMFAUXVV^S z2T(~z0r1KXrtHzIfhx%w!5_{?oQ&4C;$+ZLZB6nyY#b+pxB|D@HYBc&(H8N{%Hj<; zCiCDkT1nbhJ1Ktd58Ia~$r}i*&?apKfFJy>5m zh|5Oi##ZB`!06@|X2kJW>fdtcfWbyWdd51A##jf~LXFrEt133icF=Ke` zn0gVU4^%|URq-CeCk?pbKKQ*Ar(+H@5pBRItf%eRogz?eU^ul)sJQ&tzco7%MxHvE z6)PSi)!gUKPaI86APb?Iz*b`yOmEHh4L?6N)9RjTkH^!zX41YF=&auN27*5T)wal) zA&%yLpf5n%*93w;5Cdo)hFdtKD#@=p=K%jXaD43~k%*iB9VSkl#P z!S5BLKjC*~jT6uYEKoqE0@BgG2C_u^2Ok73>^0YqDEt)Ql#(Qwjx!~nl|8~+20yj{ zHK@aLWfi1K09B}Pa-#u)G6xOO&GhGs+3#VV=8vYg6$}+-@!0Fke5jTw1~b2 z7Vfb=7d)tWH?Tp!&4whfLLU-(G^wwSdxtQ4UjsX=A5mXpCmr%Ggq?LVfU+#CrQO0S zY?;u>H`7Va%4LzZ=?!SAFr_}Y&ABWcbJdup5sQaa!IU>r`h-ajk+PyJGZJnZOo7-9 zj2HYH%WhoqJhCmoaexEM?(cK?drnfnnWP1ZqKyyLs0~8fohN z^<0f<>KOp)J4Af}0cG_W+hB~w0!iD%JeF*ilmh(?0OA>?qy{Ujz60`e$ne}%1{nsa zshEh!C5I#Jy~b$oA7^QITm)IENs&aZA)RW(?=m4(HQ`K8D226Y2S(;1chUXMK2`zyw617c2}=D2T3xc6 z00ZK#8Sx>`Y`oRdBT>ceM{ob$g@m?OPZX&=!&=!HKkSGf26c7q+vsWUJFOlvGT(Q+ zJbjAX&E$IZfQH8S#xkmnC&ySjX$7+!> zY^P7%Xo*rgYA?7^CaK8$Wg$oEqUT6m)eiV_*Z~@Ci5n%0@bZi2K68Fn_+uNb@X1Zt z{tAAq-OAR>lLu=e4*f}nMus5NMvY*LBrYYsvc4^g`W>)C43-QP`e>5Q*+fSpmP}Q8 z1p*Gqz>ph@-YMBB_#yA!Ud$X#z8fJTii;`YVi$3se+SE00%2dGA*(o_xvl7a53MkH z5cVqp#)UEJG1(6(?>b1jLPz4VJ9^sF4^hkw&3Zyu+ zo7VPdt-_R6XDex|8r9c2qp5(oo9*(~c)LPlk%r5}TNZdll&8F9-j&d@C^_m8Ygr{b zhL#~7Yec1 zxpTg{(axFNli^xOwi9(OX2WN3f>eZBoZupTFwR6E)Bq-a;&9OpS0H8b~%}cGzNM zO(N-h-<7jSYYs)?ZT-%D}lE z)}6qmx~iD~(#A%xgfiamfE;@jYFV#rL`aF;2JD6Ot52FAOZV@<0W@+x!dj9P4SSH9C3^4`dhtJ`aa zTtq%Rj307m$f`^4W@MXcqZ>u@C1ZnuJ1@ABH<$0ZgDkN&inlqFW_bHKf0F#7JB(HD zwoV(XCWCuE+vL-$6ZrIM&8Jt-%BN@5>sieQi#qb@Ll}3W3f+l6PG{aPZ7}a=#z_#e z@cC0wPj5tmCO2jKB*;8G_dfh$^6*S=&Gx%{!NY^|^ttiyd~|aj9&Y>k_wdk(&3JgY zO@;^rh-hB;y7BPP^v!s9xb1?62U*K(GmS$U=j7orN5CT$?S0WZ0?w_e+b7zezu*Xv zRCj(I0nerzcmXa;mVfDNUVv0yfKrzI7QqDV3%w1hsZG1yq25k^W@((O)xq@QsmitMr33Ix>a?DjE}FNF+*3 z)I?FSNo=%f#g?>jbj6SaH4)59q8PCynkYup*wQAIe82ykYwfeox#w2hOBD|l7`N6r z`>eg5bImp1^LbVSj33I0!|%UR0m)leFCgKS=R!b2H>(wp@X8BKKyv#BUodKb@k2TB zlXK)nHNcB%0HXY%OMm8S0K3_SbO7NxJEjgm*BSCaDGvQQI{_uYeWNG!`BMUnAIgcJ z)PJRS+}l=v$MMQ@amUfkYVSB+d7<5LpBgX}z-=^~Qb4L@H z#Ry};&tw@Gn>FtQhcV@hunswc9ZoRmineC}nJt2(<7KF3PHjRtMg)WMURKV|_j@vs1;fnQ?BvDQspfok!rZjx%@d!TDfN0gNPj8TcG z84~bMDv6Ev6!`&Wy_O+Ta9H*gxABy|=WGzYmvI!QR=RcLQjz0NKVe%U7&T5knq91WG*KX2J3va};G3-p% z*U{*^ibikw8RGED1dydC#**-(I?)#GOo)k}$kL17?z1-(_MuF8f?KDMSW)JeC@n$Lh zj`-~^eY?xP?Z{utrsPkj+JV#nhr7WbChovy+W}C0?{A2p5TRgbeD~S-?qf@jJ3y-X zkd9~&N8-0f^zD)O?Qwm3+`jF|9}w8^ua8h?NF!7kN4TXq!YyM*c!L&j*9ykRIbt35 z9xQW~jR@5&WEk*Oe7PfjxsES)g#qr-_+IP7P@@KD9ZzQ%6S!HF|`AV+MDk zO8Gsz7|U*U$7*P5ud+6eFwdYgxEA@|7CX`#-zo~GmW2C_1YU3tL{M~vUXzw$eJwj(jB}6DFmIy z7xpL4`?Sz2{vEwfOjf6j_8R&ji~+z97CAdmn%57@fakXy56bD+aQw72aw5}iT(=Az za1}oTS94>Dgk+hQuw>lNdVy-bPlj`~$S z(e^gJd1)J?Jo70h&NH89T`u97&uerZNy>j?RU^;*Z(@yzmR83zpYQz^k!L=Cq`4uU zdABMDo_Tky$hmk9dFDM~^3F5w@j(nYe0a=%IXv^+fM=eoITqoTr=Cxq`DL~PfoFbM zgo2^*!3e{WK5snp1H%r31BgtK^N=yid|ig;#Zr{j6% z3vGPPGhZ0bml2?WWnDSX%y@2T_6`e1xB#HNePj>k7coIBr4FrMS`&Bj}wOul($dA@lj z+#E4}n_;l05kJBVn8?>f`~gLHIJ$}Iw|wPN(=ogSLD-*9SroSpzxXDfCidE@&u((k zXmve&sM*6?n>~Ce^sw~=dw8(f!;dt3crf%Ze}X-HxY@(on>~Cu^l<8u9(otWT-Q-( z(vXWZ#U^7UB*^EW>enf}!+{YRR^W^+IFNZj0ygkf(Q414V}+1!sddth@1 zJ$y9uu<-*;?q0qxAC)mSpH+x`n2R;0D=wZW>9#*)eF7F!MO_PNU=)9-V z1FWUa<_r&XbR!D-vXH&DP|!1k$4Ce%zpq@6Cdn1IH=5)W47ONqsJ*=9Jio zQ43N8Ee;~;Nt66ZFp9MP`$QI85=4(k=GPSx3lrwB_p(z>_;{fSev#x8UsVETKde>FIQ*VA`2xSFj zk`cJyE)q_fopyOSeKDj1h&{WeXOPT)5}Ci5k%*GK4{`Nanf_hN{cy)}KOD~YB`j8Z zKY*bXW6q6OT6*Rp|8`sn)B8y+(r>%WU!cHHr-RggAoKrSpTCo=zgy40=(rX}d&Zj9 zQvdt>>c6Gf$YO{-eS?JZt_Cro-gJLsSUa}}Xk%5wI$cRa!6E<+iAH0)>+;?U2UM&e zSMQ^I|Co=DIz((SF*Uq8%mJOcB4m;&i z((Om>Qcklpll*b2FE9N=c8Tdfng(b_w}U364bd^nZ(4Mjys$;<+~fvB7}7fRP$}e` z`eOP@v;v%TJD$a)iY>32C4jIPhDr1;;jr3K1*B1Wa|90ny2#xYG7%8f)9E5jqDq_Q ztn$g#Xm;?uT|!(iXkmwV^e1W0&X=fi6gb(bjxCXD zGwnUf92u}lvb5LN;MVGikH75P1l@b}=*JcHl%P`8m+cXnCVi^X3(&hi#fN*pRLESR zdYsP>+Go8}-T$N>SC8?LTKY(n{uV!B7YoGAxrR;TL1Qr$?)rVU}wss=n$Jl}ZWj4f)2IdvI50t?_eN=3|zc*A9ml3tj zkPd+`v@-w|I3TMLUdFUjQk!Sf+$9@%F{^{`S?vNkcXF1HoI3r6OYhGX4ID6dn>}?z zXlyJCQ~0D$VPmnSn8e=glVQ;FaeM5X3mwre_Yt@oIEZ)KMvG3}`z}VlrNI0rGfi_# z5Lw$U5Lufw>oRNh_ojO3KIQ##UVsbqLS#G$U2pN@ZeXBwkbx@2LZ1kU7@``vyAT!# zQEE1uu^yYot_S%yZ8g@ZdRPrJ|C^m1H9VUQIN{Siu1zTCW?7F<4{ahK;OnsoaE|LS zJ6MlR`wq9hlS-S2-owC%rP9YPkgwgVb)YRTz3^MH>7H_G@c_@rEP`dplmd(%pdG4y zRjOM3m;7M4MPX#H8rpGmegDiNKf1Pm7HhDPbI)SyC6w!g^f{AerWTK0nOmG>7D2@pc6XD4o}PXc&)YK? zO-|9%g7@l|ny8J8zns7RS**2ikI5n!Jw(P$Oow5dRV>hRd3Nl(l`ys5Yl=)io_%zt z#p}(#qrY4a)2bG#Y7?Szm&(n*(aO69?aolO`8QnktfMnMDm4G7&_9cTL$PBWkr{zx zH{4S)h(W>qBxPk$Prjfhm?wQ%WvluE1DrZPdzx=!@B7=Nosqo-|2_R}yYqMPy}E50 zl*p#n(Ek~SvNeVmr+U{^pQ(Z0Zxx^hRTJnrE3=C^_=-$BW$;tA`IzlztFZ0Vl}dCS z?Z6@*>+AFnynSgp!I6J3)c9;nuQF48J-rd=a{4VYjF0-O5CO#w#xPf$!yr#X@1Y3D zYkHs9Qau`)+iW;uHpXcN);Wl$>o5w`BaQ&PfE8ev1~=Zb2ud&VgTHd;9^eu)+M5Bs zOrfx{Vw?O4w-u+qimAa_h1+#YvFUXs!IJ(jo~AIzP&w-;P^`~VVE?ne(K=ArY+s#D z73&+%*hzaf+jvG0Nqe@g@l05h8#d##grhSws8fs6Zef-R-BjLEo_-6H=oe=c#Vxl8 zL7{|)Y^&0PEW+S&H+;snW^;Lx<&ZPJ>`QJwIuz`5U$;+4;Qu2ICAgI~AJ9ep02ei% z?@M)APnklVA9b4?=FTwLAjIte&ORIA;4~~Kem$!`8@BG$8of(YCwn_Kn1+qau<^^R zro^Bjxux9r{&M@va?z^==`B5<7CS{m0@`r#fpM)!?PB!df+SH7w#;(g~sg5pA7BGpA0qb88FzFm7hhd*K`(3 z*|##uBhW-h<>Qfb8<|ba#LlWvvu*D@-CY@3cfiu82qV& zfyD^!RDW7GHtsy$?ygh@1~+N_{V3kR$6|MW9R<*E4aKJ2`BfD2yK_K(Dr2AnkE<9|i?i0Afy)iXLN@bPDH_3hmL*-+y(e2nh-=#J}9 zIChTvT_5Mu?Kp!}VBi8~HN<@j>u4Z!*gz;8@{;{M&M|+&_t)aecB&`BfH#Y3UUJNX zYq{<3^^7s>uQrzb)sC{iVMp0K?I>HU9c6#DqpLpt*YZ->(Q6tzI_~6uKJIKh`Jb=n zvhtmk*h%!~n3MnKLp%HDLybdgJA<+ElfOy(H+1qxp@4G_)xh*0vMqH`INcV6i@Qb! z+o-WDGWd%)=zt9VVrbY)k-=%lMh0JSV6jlDo$3p9W8;7&cvBm&+@3P*04=xab06zw z3ZUi&3ZUlI6sJ3m06AR4w{6c3j(CH*4THz>Y)OgfJ`r+h6d9PwW@2kkd20+oH0)EMtqsO3F#Nv_ zKlfhF$8DKBf%q-V6>!~ICi`)ENtpr7wg^2&XV88)Q|MvnEE0Zy7ZwAF8=d`KXmEY( z?C-gokrVEf+ zoGpYwm3RmSRbpgoq;=YW&JYPsuk(o7myNykAqtI^z` zPm_#(~PcH>NmuhalTDPE?&V~fuNWHma?MCP0sOH9!L!FT31`cMd<_5lT z$lO0_ZjSmCqUPpk81w-BDOAAT5BUakqlY6Yi$H!;4YMO!WDC%$WMN{pl(Wd&Qg&Jk-OJ|PN-t^C;Qw&G4YFUkoWfC@x3swdvRpWBl zvRsq;LHJA>m%|~>N-vNLAaJ;@V{2T9WU-va<@Mfv(73#QsBu@3KtTV1RU)DK4}{;> zgwAVAGC&VWH}E&2mH9z$-nBAFztPI%4Xw;4w^TnEnw+yH2U;20;*=dvEweLucGWV? z_M=*6@C=?lsAUGv1nW}YtXmvBdts?%%%t=gsb$^}fh7oe-Y^6%!dJ_xWuh+NI7*ox zvL2#R=7;L`$H{#{GEw8}FXD(I-3_e0Zhu5Q5(GXQDw#L>G7MBQZ>-1ZBnD@am3YP~ znK#8{HV*SmLybQ-Dw*4S8-hyawlIPrR3ELFtt z#4Tu!t)lyJhl-$r`SCCx3^vE;b3@88gNlD1DwuZ;V8LmLch(bJIV?!XG!_=#H3SRq z8Z_-~2XW0n0rL}He^>$Y6XCUKE%|B{FhA)n)(V)PtQ(7Bl+`F;e#%=53Yeb?ZA}?V z2mko)@H0A*cMpCGa|PsAr+|4+SPWOdyeBj`89V#w@H3tL^x(JH*>k9XNu_{^tBFBh0sJ6m+n6gI{NUN;*9=tU2B<+ zY%zy?+U^K~XW7Y`U95Idy4$E0yvI9At2f==uGUuXxNS@DSG*^5mg<;dDy#%*l> zd*dALcxTES-dn#Qpk=Y%H<$yQt?kMC>N?|Rux7g7*(O0~(Ls|NBQUpQu4s=*tSS|6 z(J4%++L3VrL6(b_%o98El_5&9tRD$kj1e7~YzHuvXKTXc6sPSb5;NuLyNSe1dB$!cF;f=1iNs9V-<{p1vfNE1X3BLa!&I&( z4yej)yP>)$H=Iu-W=f(>KA6UZ!SIFEn7;S)eD>D#b=fVPKbbGbpZ5;d4Q!S46VY&8 zBwiFVGJYf)V&5d`3S7;%&3!Yj+uFB)Z-oq16~7wTIR}RTv#8oh;A$T3!XB97JcWW& zAY&8GT-dk3T&sx?jnew5d))B2L2$g}qRvjg6vby(uXKTt1VFqB; zf>j?tmil+J!Ywv~M_IOa@c$s3Td1;wHCR_`WYv@4f)d43|>H-;M z7zUhXD1akbX!F}viuJpJv9wsX8~9719k*hpC^*H3VmEJ1R=548Wh$C0smRIN5sm9++r`BUvqZ`3>%U%cptnCHl-d$eUWiJpIPcO90nLVpe zJo*bEcD22*#$VXke8HnvXB9`&Uy!F6#trsD&tF(*z7V5VPsA5O^lE#70E`4yueRF@ zQ$8e*Uybw|(X-7V1hKXkqM=QfkZkhHkWb5mBAcIAVxVy;AcN@`Uw4)>{`C?nAjH@2Z#033>uN79(DM{q2X-#&XTBB|Ub>i;lD1W`K3Zu=uNDnZfx9)IXjX;j&(n6J(T$wB zFz+RZo0? zhnLzzLiq`+=qBOE%R^@#Rax4GY21TxRq8!hM_2B~W#qh)44_OeHUO|46dZsx+0mli zPu+k%D^dkCgp${~YgwYtifucq;_;V3aWV%A@t2vI0|iae&E}FDM>A-L1hUiT7jZ*E<)$QUEOgzS97#Z3+I*WwKqW==Zb0_W%4KJ$Uu%9uEa#sDfpF>dv0o01Ylx;j# z4=`#HzqX-~f;+~b^}j0?~iSM|K_+shEwBl zMrRz;m)?TGTzy|P?*$Js8t#P zs0euNUBS>GtfR9u7hKUk2*qqZ-w~gB{8E0=?{KgLTXL`mgJ5!D(ll{0-=N6%GuF+dlrU;z#S zuXCwD<3z74;5l3>(8an`(s-#vbmT!+GZ%4$D631(m2lDEQWfFC}&C$E8goQuaaPj_)ktbYj5wt;W( zQ8NSIWu-rz_;(BfMHj>Y#8=E6fo=;*8K26P4#ys(=ItE znC*a5-l|_*!eHxy9NcEFLMfgodK`F)4bTM?;*=@6IxwS+wd%&S#KD|xTLP=Q3w#pE z1LJgWmm@&lV0Cjx`v6;7B{+}}4?GjygDd8~*W;)9l)0+!W}ULJJml78p6>+BJPFmA zsxhQ7iX8A&*84)*`7=xlR?!EUu48&`Aa`J~)EN(;quj-Lyn=pv&-3uNXX@XYN2?Nn^QHW9adw`kv);BNJ)U!8-| z{ziHUT(I?G!6>L@oNuKFw|NzqUi&?|h_|%Z9D(Z2w{#YgAtr%dY8I~_4LFo6P2;!RbkT(ocPk-IqTII z{x-L1bNs7E|CVeJgjkp!O#CJF2#PoYOMMkkoQoV&XqC)`-itG6fhVT`-TD zY-#$QG)<3{jZ$7Aug14hysb$#frKBoL@^ zkC~oLuI@-fu9E3bw9>g-&1FThmI-}YC@00#@u@)gBG;7?zH)PE?Bxg2a%OQ6EX?zr z;?5+K#5P!=@;m1yX@8a-qB>BxkR7tH0z6K@FPD^a+A|RB<+DttpHh)16bcD8QA{o( z)0tT;rWX(Tqr4J!ow!l+?k71jRU{3rsl^%)ox>|qi(tX!d9iWW{e)Ht8aC0|+kA^L z5Hg4LB5VSdgcN1Bn9!>_Hu=Ho=F4W&F)y$Vs*95vhfC8@D|!f-xbz{JHijQ2#CIqe zkvbBb=9)bXR6OhLI28gfQ(!c>VlbK@c5YTYHX$CgJZ(*+qg8A5EeKG;it~|iW{f9c zIQ5V;F&}JSE5MimRi9s*tOzuXKLi^$?p<#y^|sR3cIMx)L-yZu|IX>~pcP?mE$al? zq9)bWq`utBdbeiZFQ7mkJwwJ4J}m$@4pqC#DF)7*9f~#+^n~9H$jB&Wa8s@U#yEd~ zo&Na%b2HG~3aaPjwBKWOcxfjrfi36+EuznIs3Jm?<~u2Xnl08W7IP7*+BH-aoug|c zMCadiO$b}N^y)2GPlLK*-O+7FUu8&e1oqm5j{}ZadD}7^Ay{UESjJ@UGrppA@q7aY z@gP!OmdOZ%NSA@ZHsE}`O#r>%#UFo+cuDFZ_#sb>hNE98HQF`+|N&D+FQ9*d!Sp`-4o8jnV>XBJ5Rjt&leg zxxA+AdWF5r**-$(+jpr1fY-_#RkRJ6ef*WLI zZNq}R;8SyCxpomuqe3K?HZ#>`icX|G_MHRi^JFQ2L``)0=KNRNOzX^6#6gC4H8^!f z0Z34QFdZ{bfAJepre(LJqiJA2megc@35wBfP>gER=*xKoip}gK#Tadx#5<-&+v)l< z)21mKEQHTFWP`N;T6?8b+mT)5dN&yH<8c}$hli(0s{3-%Cv68@7^n0RPJecFu>&;F z=L!MVYTWKE*pxz~S!4n245|7A318S0rvprsRLi+XTK9KppPljc15pn3Fs^-9GNt_i_z~Ot_y?5oxb|JiewCxWsvnTvD_NDwkNAlK6v{< z)9%3#|)1$5R zJ+#_OdT<%1){z)`zQ8uoT$!ip5xZWfgHTd}%%B*m)lbm+SAmzttqtww&KleRa)y{j zU;rC)Sm@StU)VS3`Fo*3U}&&vFgEAjxRI_fA`CcWIn+5S7Svxsaa60^=pQ3g81akA zEjkcYPMN3@6)iDYEr8S%q%D)q!3T< z9HvLtfGzC-apiJ7xKb+g5EM~9ky>22?1GuV@;D3T8mZ=jA+roALz^3Rk`~O>Sz$UM zDJauf?SdU+OI(>1dI$o!CfnKKs#C-zyG6rx&JK~6KBGE6YF@&qS zX6(=hMVB3rs3K@LF@$Tr976<+SF>`JV1lF!Sji2>PfYq{5<5|Kb6Xa1B#Xp9c+7bD*Lj2kpBK$&wG%N+heT(*T*+ zK`P=sOk;r+&Q&2SXe(@*iX63MREKseS2RhFAv6(GO--n~i0v^nF|sz}&;%mev1kJE zhoK36uhE3-qu|_;)eB9SmOSXCM$iO=^u>dmhayl7P4G^C!qLQJF%dKxlR^`Gjc6k7 zj4QNgNob<)=yfTYFwrn*V#3kH(jGt)%k@wix(_`Bh1c=WL|m{@G%;?$Tt(JgFwjI$ zl{GgEG;uN(%=KVlIzbP%6ipm=!9WwsEtspcLJw!g8!u8s0BiwoB)E06F^-q1rK%su zkZHB5v;2(-r%IjF%!>)B3n-{%$~Y)ru?2HgA`ssJxo*<93x)1z(Ns~f#h{9^7US`@ z+B@}nJ6Bn1$)S2T=xGmzkgHw2~WA7U>yrsH?jVWNR z3S!5QEtIJ6d9@u@G|bcWVkss7k5906K_g}}jr2}l{WcRRc<*;8$xK=OE+rA{WroH+ zD`97BE-Js^?YQ3`-a?Z>1!hf>h)^%MwHOFhD;;%OjaPzZ%U+4OVDjo?^oo?U`Z%Ss zyZjy{yC!<0?mw!rrii}$`8K`3WDGD&SU|Bk)=SH}kR3@CT8GR5vxs(3H5^d>S@gt4 zu-*k3vs8ZLX^Y4IaCo^lZh+Mmk!g2{{6*kD`h7y31lslXT(IJze+iA@eLtz-lP^d{0?tc{U3ehv@T0K1t@nGA_W<(n-AwgRF<`Vp_rHTUE$= zXj{tB7w6cxOg-;m*4s;N~O`gd7lc4`&~1BIeVaB zPuDXWMs%J2k$z8#ImD$!`w&8)^Rq*~B)0)`8k%5FY}RY3lM^+S8rory-wnPz60E3# zz*;i>cZcuTD%B-v0xLg{+PSjJ2f`?Knd6M2=HdGvsj`ttq__!M~*RjI`7W<8*Z^&+&-BO9V&A z@#xny$k4MfCisYi1dJk&9acC3_@gjETTj028Txk7(6_4^-;fr$hljNjZOnbKT05 z{AuuC`Lj6qkn8W*rgN)VdC%47W`7@U4nE}VYl*lSyYikzFRT9Rn>F~5N6(FDSb5KI zr@{Y0J@}C3&YG-GL&IOE0X7qkJisnZun~$7*x1W-;tB2CSo61i@Tq}KNNtyE@HHJ( zp*X#Y77!U+M1c-;4-(EhAXgG3oJsZM`_4Zff(NanK6Lr8_h7W$jM&H%$#u}oUs!#c z-}tprPg33ehkLw*JM@7T4Bg%!hmCOLk9fSBwD&Cl_mQ9!wP9Kf4qaN^ua_CnIAQ=3 zeY7{SwlK?5H>&AYAntmCU2bPt7>94q!=URNbfs%;kTA~;iCG5 zkTER25YvR&_!~X!sb2^Qz~T!r>sNRI#9yBX8@74p3}Z@Q=g=f90vwM~2#?w~!>O)4TjsK96)J&=?rucCiwU?3J0ax)tt2 z^;kihNX;H1b9)F#voZD%1ek@mLNO!S3L81AYvw2rBhxlDW9gsgsf~`|#HaR; zr{-(Mxu`w#%(ZIRMxj|n%0yv4Y7MQLIj8M%<=T1foVEudo0=C&opw&P7iTZNUF52^ z2o!>dy>VBD>|z`@O1TCv_;|x(ZPKh|b{TsWu!`wgB3U-w^jMRER1R)SJ=TKmPVCam zs4fm@!#%CnhwG4++9|43d#Sat>E%1oUu8dpd6RB1%uK}lVz?mGf!CV&@@{d8ywtkI z26?Gb2`@FlA`Vx2bs8{q=$7EckS63@mGs^*$1PLa*BM=5SAH?AOCBLa^~i5*w}!@E zeOM&g@VLTc(~DEv!7BUSa!u7fprg3g+Y))aro!Gjt@7_FyVdIsDdA4B=HMlgL00*d zF4kxYS?v(Y+>HcCa*#t6bf`a3vze2qZ(M;Xp-)gS8U;2LDCUW3M)ut^Hz3@R6dxf> zF>_Gj5==@^8B8peEaO&wLnUECq0Oo%DFYc%ZbAW}+ix=1{!JMO1eN5F3A)~1>N&7Ox2P#fo!q2ij!W3M$h85c>0GT3!E6TMYPr`)(Ot?N3h~Sntr#fv0 z3PU3dkyprw$i48;7HeIi+a4R}F9dyRBuxl{rFU$~mzZ4B1t*fJPia(9;?h5e##A(JU1@9ETeI-D59f zEyK`*nl^GY$kA-*6LIJhLqjjhwXWHe-c&%&#!H1BMH+yv=ElqrxiYh@C48`JLIuf; z=%9`P5=cud2%2M`xx%pAV2Y^@tP|6d!Ci2zDK~`&gTJ4DOx^f3$QUczL zz=~n0uBn|Hat}1O#d>1rHhOWT?Cg+xpw+H>p|*O_8E{t<_5kVAU}>}0ASB}Su(ZJ$ z1w{Q|(px~RWFQ7?3E?GtL$Ddw-<=DS>LYKPsLri^@@MguH(n;V8Jegq4%vLsH@p9t z%ro-puO5MN1Gr^TtcDSlqH&Z!#q|%9K^ZL6)aiXRtwvoCJ*QT%DW9yO3!!t)iTP~> zov@8$8CrKmGj+wV&-A5@nbs=e#?@dx_(L=O)#J|8^}qE@hg=5PtdW_T@1W?Y>d5=I zAoGxiTF~N}XmHt?7NGq@+(c~s1`IN}n+pEnT0h8n!`BB}0bpK}3YQ@Ae+277Q~|HK zURO8;&DVIn?gTGgTnZ^rjn5{S8-}|L9%aYR*-{-@r+V6NRjg6W`_XA$9Ka3!XL3DNZgpI-9GVV_WhNjX;FJ*Dk(_Pi)MdIw zqa~6&RlvwF?nv|@6-KTi-7I2^Tr4pel+h4>8vLkpBuu;!6&^ljS);!e9*yb+f zH59JbP{^?LK#BgF|D zA|FR&vXJd{S;<8%Ik^;Z1l?YaID+CT0^eh+e6{j%o|9eMhaE7Cay%R|Fj;;I`l|y? zjIe;qXirG38cmkLP;SoJ6tRpDO=7K$<8Lo9S)Pm6<4Eg)#N+VB_6Mg;Du_{|E|(~H z`{B@-x$JCgpQ}_8Cqf51f{Y{o9;8kbmolGhum1OII+r^V(hca)9n;Y3(BNFLftBoC3bMYs_p9I|W?X^qzr@(uie5QD)@-_*B}vvkhg zPg_%gu^$#<@cJ~box(uZjg`h!Q;?m#YU+x4getV`;a9pr3@~9W2MK`bOQRUZc!kGd z`6XI;3|!Tpl$jfLDxK;vk2e>q=Ed4Yq zevIHy#m0FOz6-ONt4ATf2aQuO(SQe{ZcRhH^_kw7A-X9z!htx%!0lVdONZ#Jz7H|5 z`oTOfP>R#?s6sb8eBJ_gFGu*W5>(gSwoEt9-g`Gq>+5j_>m=RKfQE)cBhJqc z8*H1rqHcxFt6|$swS#mc@a99c0VwKUtSLp=MmKQj!5TBL=O(Qf+lTYrLADW??V;M< zhnB78FgFyZAh2X>E5sUD@R;}Mc(KLJZx`?9 z$JZt@IM;!*0)5%7od3?a(q$gttbfghGni#a`Vk?=@#Y=aX`A<-Hs@Wl)I;-zvl^Z^ zI$hC0$DFq_(e=Co8(kY^j?CNnV$FLX@~GM4W6fKZM_e1Qh1^Z@#z;yWgr-f}Au+(f z^QXuq?U+6&X$O~(j-WHnU>!+20>eCFo;qDiJE&&T4(Q|>7S$hGnsDNV&KoDV<8+yz z&jGJwC65ReO}~cFjgPqG(;`8%#K1FqOc;*S1Ql zSuP|Y%Pm(hLH8{QeE&ca(gWtvst~CUVk^>TQIKmGj$n*JctT2#f{YOU=xf|?7aU*_ z4q3oFdS72x6@C@gQGHmg`v{Ey6hpUiy@Ozj&W`-H^eR0vmeL-9zWN)u)aP;x-m1-q zOf&{9fJwi+T;~_d*&TVW+_W!w6)*C++uzI@@%=k7Xm6*q8K4<5cCB^*1v3b;YK8q{_-6Rfq~yY;5i2=|nL@dm?IJ4eX0KTXN>@i}`em z((tbXm+k`hU3q#>$>KRH*1Iz=R0%10M4S+WscIc8QRH1Fy%h_H*{<~%nzBCqE%r}u zQApdxzEjnFblE$W3Y!oXW>c~G=5mu3xc42j2$eb0MTyA_H@k)9)z*63=gFSGl$Vb2 zemXsa+vMhA%gy~Q(-6ON>UhqaW(_p@T$MqvupgQOy~uhuc43jbvP;AaF$P5J26@w- zC~u0vnZ`=c9uJrHqm4^jFzf<^ZdJPe)-JD)H!rW!K{(hh0k?*?gzghZ_wFqarD@w@ z^+1osAXjPiBdh~vEKN_72l^j{+LtXSj~+9V%u{-20Z?niw!j4< zl;_7aRrjFF1>9;A27myVw#sW2f}?sWtp$<7xi1itoE1pz5Z6g+N2uS6D2VWTDFp$3 zFQ?cjtGAYd5MNDk>YnV{DAGXgDmliFrK$Y8Ip4NQCOX+Jh(bil8McQhhXNQBQqS=l zXKB$bkt0@1+hS=kr#on2Vv3gD%ecQhw1rwglEp$JT2Y*9wHhoL%;qM7Hi9eK@m{I) z_7~isJVc7?Ql3L2r=YxfrXf;}bg~JY&^digx$X9oBKTQ>vCBX#gJ3s}gtrNH-H`xf z5d@y{jCRbioM}st6YKVw!OL{WpBC6L(-vS)rY%IZl4%Pu@g&e9c!)lpp z_n;1gtX4p<%@q8$m10JwEhzP5+M)mJ!qOk|`U*R`GQ$T#D{rf^W53l>IYd*fXHD8MoA$#4(Rq};~62VYH6108|9iVap z@SAc2!}=<5Lcd2Bx*V$;_x9luNRrKHFs4z~7}C_!TT(M}IdosU0A>6dBWjq1GpLEMuZ zO@b}}?j{)49!u}~j`*+rByx8y%M$oxRoaiO8|4Q1(QQz^VZG9xJ{$K9jcZ zOJSH>_|FA-do3h`;VyVPeO1{ac5D~|GAAFxP`9j=eo(iRgKn|3AJeS~-0Nc4we_ZM_18)DGhb=< zzLgU)h~Sb3s;o{Jz>!XR-#&=i61Si_`j=;jN$XVaxf^Z`Gc1cmkL*nZAiz}NUlDY4 z6TyH_*BqwWz5g(5!3TY6CVSNe)MI%yFxAUzk$SpMdO=(|lA>clIA2K@MpMes+fST$ zIiP6=3xjbt1gSXct%|;aHM(NR-d&j#5@*LRi&bAnR#=o zFtd3}K-U{xyEB>hH~7^A2p$Ucl?)3hl2}^Wk>=3Wq)NfZ1Oe!llk+9!?ysOyx9BZa z*qFBzP))(${HfBwugA_BeJ$*;qJ!cs&vD^$YOC1DdSXF-6Joc0DYu|>wtOomEwUjN zIah+XNO_KW?-qV0c$Wm$7NZal6|Iw93375iX`*t4%6i-I+Q^ZkQJbn-v-tR1vo?g? zw5>+jdBVM@b&H&*3E8;XtnH+~(B7A-wkmONuS0}JZ5M^HF2GwboV26V>b<=U*bVF^ z2WP;QEJ{O?M;k}YHeFXD&09XOI2^6KxsDQ*5r$D}hvuoJ71xGX zQvI>!JYs5U62#N~=7o?0TC@!qFGhY*xD-bM%N*)yl zRw2d|n3PBp87fdzqY>8wupLMf;q{RIO%@xAQ>57~*7iQJCF%zJ47uE%p}T0`qUh(* zrVfkT!Q6s)UUt%X6w6zMdTz3+wl6g2;`OZe8PyKrb*mlc=CW}MKa)qBIIB?4P0fwW z%|+hJ&5fkzg|B%X&I6<|Km>{+Wtrj}CPvKXVv>wuaV9uTjO|vtlHhL*g9>riM*I`C zEK`UZMcl7_4q-70$h-=&Ow1I7E!hjn?6r#n%(C=(1<=cdc6 z?LI$iaamDj^wT~5$j=N?SdIM8nj=5c`@s=n{Kzd{3D=LOy9)tJf|Krq#~u-0uYNrw zyUVK(g2Y-p2_p|-KkTynd~@U>00_d~@golbJ}S?jx5MY@#-Qwo$MVp~WA?nfIw#hl z#gj1d5aGi{{uj-Wzr_17Qg|G+c$|!^@`QXLQbsT%#kAkHQX~J1kd7~pF)OUaWk$}N zEp`Qlu_127kT_(8p`n+Ww;{hVt8fd>0beGcF1RK+h7=S?MYdBQ8(W}2XS$OD=5!YY za_RFZP)_fmz?$?z3am+y1{a(5WcXOisPs|_+{G@ZAdTMD6bP%YrP#bDyN&{x_4QHU z@&y-2|8loAd29at+3V6{$SvXMl71q_P6lffGvY2qzfP#w;M}D|fbfM|#U-wY1vFNH zTS=mB8cfje@GjrFv@6;`ax~Nl2O%WC4OLOioGcN5*?rx*QX~Z$v_KNJoP)G0J1~!U z0-*&9M9?I+DM5m2E9|wdPWmodS$huw3n2lzy3LbwKy~~>bn;)l^Bv`yf14zSU;6Kf zeQ2Nl?RB#)w!wnnLM`gHPtHwXv1#36ofd}<%5;KxVvt{S4spXTHEtyw&DKPT$mC8& zY*?u`TL=1>LKU<9naYHJ&|vL;LSNJHYy5!RReomI5^nv?>CyM4M}Ikmm1pJTH

I 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⋘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%0A% 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

Q=a3}VRu8(ACXFN05#Uk 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

Pe@TtBmITt`(Ahqu#hgzkL|Tf8=_D=A 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 z

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

- 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%0AMWgEr;zg1Ag6gS(FBD$jQMiJTn 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 z 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ͤ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%0AIJ__<;1ih%VRaEjFrQKs!K?&U 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

^}_}>^8Co4R;!dcT9^O&|93M*=bf$-v4aTRB$}2 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

+y^r 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