spessasynth_lib 3.26.21 → 3.26.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
- var Ys=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(A,t)=>(typeof require<"u"?require:A)[t]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var Os=!1,Js=!0,rn=!1,yi=!0;function zn(e,A,t,n){Os=e,Js=A,rn=t,yi=n}function y(...e){Os&&console.info(...e)}function O(...e){Js&&console.warn(...e)}function ge(...e){rn&&console.group(...e)}function QA(...e){rn&&console.groupCollapsed(...e)}function P(){rn&&console.groupEnd()}function jn(e){e=Math.floor(e);let A=Math.floor(e/60),t=Math.round(e-A*60);return{minutes:A,seconds:t,time:`${A.toString().padStart(2,"0")}:${t.toString().padStart(2,"0")}`}}function Ks(e){return e.trim().replaceAll(".mid","").replaceAll(".kar","").replaceAll(".rmi","").replaceAll(".xmf","").replaceAll(".mxmf","").replaceAll("_"," ").trim()}function YA(e){let A="";for(let t=0;t<e.length;t++){let n=e[t].toString(16).padStart(2,"0").toUpperCase();A+=n,A+=" "}return A}function Ps(e){let A=[];for(let t of e)(t===47||t===92)&&(t=10),A.push(t);return new Uint8Array(A)}var I={warn:"color: orange;",unrecognized:"color: red;",info:"color: aqua;",recognized:"color: lime",value:"color: yellow; background-color: black;"};function Si(e,A){let t=0;return e.drumChannel&&(t+=5),A.isInRelease&&(t-=5),t+=A.velocity/25,t-=A.volumeEnvelope.state,A.isInRelease&&(t-=5),t-=A.volumeEnvelope.currentAttenuationDb/50,t}function qs(e){let A=[];for(let n of this.midiAudioChannels)for(let s of n.voices)if(!s.finished){let o=Si(n,s);A.push({channel:n,voice:s,priority:o})}A.sort((n,s)=>n.priority-s.priority);let t=A.slice(0,e);for(let{channel:n,voice:s}of t){let o=n.voices.indexOf(s);o>-1&&n.voices.splice(o,1)}}var Yt="gs";var $e=`SPESSASYNTH_EMBEDDED_BANK_${Math.random()}`,an=32767;var pe=pe!==void 0?pe:{},Vs=!1,Zs;pe.isInitialized=new Promise(e=>Zs=e);var Di=function(e){var A,t,n,s,o,r,g,i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",C="",B=0;e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");do s=i.indexOf(e.charAt(B++)),o=i.indexOf(e.charAt(B++)),r=i.indexOf(e.charAt(B++)),g=i.indexOf(e.charAt(B++)),A=s<<2|o>>4,t=(15&o)<<4|r>>2,n=(3&r)<<6|g,C+=String.fromCharCode(A),r!==64&&(C+=String.fromCharCode(t)),g!==64&&(C+=String.fromCharCode(n));while(B<e.length);return C};(function(){var e,A,t,n,s,o,r,g,i,C,B,h,c,l,u,f,S,G,D,M,U,R,E=E!==void 0?E:{};E.wasmBinary=Uint8Array.from(Di("AGFzbQEAAAABpQEYYAJ/fwF/YAF/AGAAAX9gBH9/f38AYAAAYAN/f38Bf2ABfwF/YAJ/fwBgBn9/f39/fwF/YAR/f39/AX9gBX9/f39/AX9gB39/f39/f38Bf2AGf39/f39/AGAIf39/f39/f38Bf2AFf39/f38AYAd/f39/f39/AGADf39/AGABfwF9YAF9AX1gAnx/AXxgAnx/AX9gA3x8fwF8YAJ8fAF8YAF8AXwCngIPA2VudgZtZW1vcnkCAIACA2VudgV0YWJsZQFwAQQEA2Vudgl0YWJsZUJhc2UDfwADZW52DkRZTkFNSUNUT1BfUFRSA38AA2VudghTVEFDS1RPUAN/AANlbnYJU1RBQ0tfTUFYA38ABmdsb2JhbAhJbmZpbml0eQN8AANlbnYFYWJvcnQAAQNlbnYNZW5sYXJnZU1lbW9yeQACA2Vudg5nZXRUb3RhbE1lbW9yeQACA2VudhdhYm9ydE9uQ2Fubm90R3Jvd01lbW9yeQACA2Vudg5fX19hc3NlcnRfZmFpbAADA2VudgtfX19zZXRFcnJObwABA2VudgZfYWJvcnQABANlbnYWX2Vtc2NyaXB0ZW5fbWVtY3B5X2JpZwAFA3d2BgYCAQcHAQIBAQcBCAcFAAkGCQoHBgYGBgEFBgIBBgYKAAgLAAYGBgYGBgYBAAoMDAMGBQANCAoJAAwODA8OAQAGBgcEABAJEAERAAADBQwAAAMHBxIGAQAABwIFEwMOBw8HBgYQFAoVExYXFxcXFgQFBQYFAAYkB38BIwELfwEjAgt/ASMDC38BQQALfwFBAAt8ASMEC38BQQALB9MCFRBfX2dyb3dXYXNtTWVtb3J5AAgRX19fZXJybm9fbG9jYXRpb24AYwVfZnJlZQBfB19tYWxsb2MAXgdfbWVtY3B5AHkHX21lbXNldAB6BV9zYnJrAHsXX3N0Yl92b3JiaXNfanNfY2hhbm5lbHMAJhRfc3RiX3ZvcmJpc19qc19jbG9zZQAlFV9zdGJfdm9yYmlzX2pzX2RlY29kZQAoE19zdGJfdm9yYmlzX2pzX29wZW4AJBpfc3RiX3ZvcmJpc19qc19zYW1wbGVfcmF0ZQAnC2R5bkNhbGxfaWlpAHwTZXN0YWJsaXNoU3RhY2tTcGFjZQAMC2dldFRlbXBSZXQwAA8LcnVuUG9zdFNldHMAeAtzZXRUZW1wUmV0MAAOCHNldFRocmV3AA0Kc3RhY2tBbGxvYwAJDHN0YWNrUmVzdG9yZQALCXN0YWNrU2F2ZQAKCQoBACMACwR9VFl9Csb2A3YGACAAQAALGwEBfyMGIQEjBiAAaiQGIwZBD2pBcHEkBiABCwQAIwYLBgAgACQGCwoAIAAkBiABJAcLEAAjCEUEQCAAJAggASQJCwsGACAAJAsLBAAjCwsRACAABEAgABARIAAgABASCwvvBwEKfyAAQYADaiEHIAcoAgAhBQJAIAUEQCAAQfwBaiEEIAQoAgAhASABQQBKBEAgAEHwAGohCANAIAUgAkEYbGpBEGohCSAJKAIAIQEgAQRAIAgoAgAhAyAFIAJBGGxqQQ1qIQogCi0AACEGIAZB/wFxIQYgAyAGQbAQbGpBBGohAyADKAIAIQMgA0EASgRAQQAhAwNAIAEgA0ECdGohASABKAIAIQEgACABEBIgA0EBaiEDIAgoAgAhASAKLQAAIQYgBkH/AXEhBiABIAZBsBBsakEEaiEBIAEoAgAhBiAJKAIAIQEgAyAGSA0ACwsgACABEBILIAUgAkEYbGpBFGohASABKAIAIQEgACABEBIgAkEBaiECIAQoAgAhASACIAFODQMgBygCACEFDAAACwALCwsgAEHwAGohAyADKAIAIQEgAQRAIABB7ABqIQUgBSgCACECIAJBAEoEQEEAIQIDQAJAIAEgAkGwEGxqQQhqIQQgBCgCACEEIAAgBBASIAEgAkGwEGxqQRxqIQQgBCgCACEEIAAgBBASIAEgAkGwEGxqQSBqIQQgBCgCACEEIAAgBBASIAEgAkGwEGxqQaQQaiEEIAQoAgAhBCAAIAQQEiABIAJBsBBsakGoEGohASABKAIAIQEgAUUhBCABQXxqIQFBACABIAQbIQEgACABEBIgAkEBaiECIAUoAgAhASACIAFODQAgAygCACEBDAELCyADKAIAIQELIAAgARASCyAAQfgBaiEBIAEoAgAhASAAIAEQEiAHKAIAIQEgACABEBIgAEGIA2ohAyADKAIAIQEgAQRAIABBhANqIQUgBSgCACECIAJBAEoEQEEAIQIDQCABIAJBKGxqQQRqIQEgASgCACEBIAAgARASIAJBAWohAiAFKAIAIQcgAygCACEBIAIgB0gNAAsLIAAgARASCyAAQQRqIQIgAigCACEBIAFBAEoEQEEAIQEDQCAAQZQGaiABQQJ0aiEDIAMoAgAhAyAAIAMQEiAAQZQHaiABQQJ0aiEDIAMoAgAhAyAAIAMQEiAAQdgHaiABQQJ0aiEDIAMoAgAhAyAAIAMQEiABQQFqIQEgAigCACEDIAEgA0ghAyABQRBJIQUgBSADcQ0ACwtBACEBA0AgAEGgCGogAUECdGohAiACKAIAIQIgACACEBIgAEGoCGogAUECdGohAiACKAIAIQIgACACEBIgAEGwCGogAUECdGohAiACKAIAIQIgACACEBIgAEG4CGogAUECdGohAiACKAIAIQIgACACEBIgAEHACGogAUECdGohAiACKAIAIQIgACACEBIgAUEBaiEBIAFBAkcNAAsLGwAgAEHEAGohACAAKAIAIQAgAEUEQCABEF8LC3wBAX8gAEHUB2ohASABQQA2AgAgAEGAC2ohASABQQA2AgAgAEH4CmohASABQQA2AgAgAEGcCGohASABQQA2AgAgAEHVCmohASABQQA6AAAgAEH8CmohASABQQA2AgAgAEHUC2ohASABQQA2AgAgAEHYC2ohACAAQQA2AgAL8AQBB38jBiELIwZBEGokBiALQQhqIQcgC0EEaiEKIAshCCAAQSRqIQYgBiwAACEGAn8gBgR/IABBgAtqIQYgBigCACEGIAZBf0oEQCAFQQA2AgAgACABIAIQFgwCCyAAQRRqIQYgBiABNgIAIAEgAmohAiAAQRxqIQkgCSACNgIAIABB2ABqIQIgAkEANgIAIABBABAXIQkgCUUEQCAFQQA2AgBBAAwCCyAAIAcgCCAKEBghCSAJBEAgBygCACECIAgoAgAhCSAKKAIAIQggACACIAkgCBAaIQogByAKNgIAIABBBGohAiACKAIAIQggCEEASgRAQQAhAgNAIABBlAZqIAJBAnRqIQcgBygCACEHIAcgCUECdGohByAAQdQGaiACQQJ0aiEMIAwgBzYCACACQQFqIQIgAiAISA0ACwsgAwRAIAMgCDYCAAsgBSAKNgIAIABB1AZqIQAgBCAANgIAIAYoAgAhACAAIAFrDAILAkACQAJAAkACQCACKAIAIgNBIGsOBAECAgACCyACQQA2AgAgAEHUAGohAiAAEBkhAwJAIANBf0cEQANAIAIoAgAhAyADDQIgABAZIQMgA0F/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ACECIABBmAhqIQYgBigCACEHIAUgA2shCSAJIAdqIQkgAiAJSSEJIAIgB0khDSACIAdrIQJBACACIA0bIQIgAiADaiECIAIgBUohByAFIAIgBxshAiAJBEAgASACNgIAIAYoAgAhACAAIAJqIQAgBiAANgIAQQEMBgsLCyAAQfQKaiECIAIoAgAhAiADIB9rIQYgBiACaiEGIABBmAhqIQIgAiAGNgIAIAhBATYCAAwBBSAAQZgIaiECIAYNAQsMAQsgBCADayEDIAIoAgAhBCADIARqIQMgAiADNgIACyATKAIAIQIgAgRAIABByABqIQIgAigCACECIABB0ABqIQAgACgCACEAIAIgAEcEQEHTE0HEE0HkGkHnFBAECwsgASAFNgIAQQELIQAgHCQGIAALqAIBBX8gAEHoCmohBSAFKAIAIQICQCACQQBIBEBBACEABSACIAFIBEAgAUEYSgRAIABBGBAsIQIgAUFoaiEBIAAgARAsIQAgAEEYdCEAIAAgAmohACAADwsgAkUEQCAAQeQKaiECIAJBADYCAAsgAEHkCmohAwJAAkACQANAIAAQLiECIAJBf0YNASAFKAIAIQQgAiAEdCECIAMoAgAhBiAGIAJqIQIgAyACNgIAIAUgBEEIaiICNgIAIAIgAUgNAAwCAAsACyAFQX82AgBBACEADAQLIARBeEgEQEEAIQAMBAsLCyAAQeQKaiEEIAQoAgAhA0EBIAF0IQAgAEF/aiEAIAMgAHEhACADIAF2IQMgBCADNgIAIAIgAWshASAFIAE2AgALCyAAC40CAAJAIABBAEgEf0EABSAAQYCAAUgEQCAAQRBIBEAgAEGACGohACAALAAAIQAMAwsgAEGABEgEQCAAQQV2IQAgAEGACGohACAALAAAIQAgAEEFaiEABSAAQQp2IQAgAEGACGohACAALAAAIQAgAEEKaiEACwwCCyAAQYCAgAhIBH8gAEGAgCBIBH8gAEEPdiEAIABBgAhqIQAgACwAACEAIABBD2oFIABBFHYhACAAQYAIaiEAIAAsAAAhACAAQRRqCwUgAEGAgICAAkgEfyAAQRl2IQAgAEGACGohACAALAAAIQAgAEEZagUgAEEediEAIABBgAhqIQAgACwAACEAIABBHmoLCwshAAsgAAuiAQEDfyAAQdQKaiECIAIsAAAhAQJAAkAgAQ0AIABB3ApqIQEgASgCACEBIAEEQEF/IQMFIAAQLyEBIAEEQCACLAAAIQEgAQ0CQaEUQcQTQfYLQbUUEAQFQX8hAwsLDAELIAFBf2pBGHRBGHUhASACIAE6AAAgAEHsCmohASABKAIAIQIgAkEBaiECIAEgAjYCACAAEDAhACAAQf8BcSEDCyADC6wCAQd/IABB3ApqIQIgAigCACEBAkAgAUUEQCAAQdgKaiEEIAQoAgAhASABQX9GBEAgAEHQCGohASABKAIAIQEgAUF/aiEBIABB4ApqIQMgAyABNgIAIAAQMSEBIAFFBEAgAkEBNgIADAMLIABB0wpqIQEgASwAACEBIAFBAXEhASABBH8gBCgCAAUgAEEgEBUMAwshAQsgAUEBaiEHIAQgBzYCACAAQdQIaiABaiEDIAMsAAAhBiAGQf8BcSEDIAZBf0cEQCACQQE2AgAgAEHgCmohAiACIAE2AgALIABB0AhqIQEgASgCACEBIAcgAU4EQCAEQX82AgALIABB1ApqIQAgACwAACEBIAEEQEHFFEHEE0HoC0HaFBAEBSAAIAY6AAAgAyEFCwsLIAULUQEDfyAAQRRqIQMgAygCACEBIABBHGohAiACKAIAIQIgASACSQR/IAFBAWohACADIAA2AgAgASwAAAUgAEHUAGohACAAQQE2AgBBAAshACAACyABAX8gABAyIQEgAQR/IAAQMwUgAEEeEBVBAAshACAAC2ABAX8gABAwIQEgAUH/AXFBzwBGBEAgABAwIQEgAUH/AXFB5wBGBEAgABAwIQEgAUH/AXFB5wBGBEAgABAwIQAgAEH/AXFB0wBGIQAFQQAhAAsFQQAhAAsFQQAhAAsgAAvZAwEGfyAAEDAhAQJ/IAFB/wFxBH8gAEEfEBVBAAUgABAwIQEgAEHTCmohAiACIAE6AAAgABAjIQUgABAjIQIgABAjGiAAECMhASAAQcwIaiEDIAMgATYCACAAECMaIAAQMCEBIAFB/wFxIQEgAEHQCGohAyADIAE2AgAgAEHUCGohBCAAIAQgARAiIQEgAUUEQCAAQQoQFUEADAILIABB8ApqIQQgBEF+NgIAIAIgBXEhAQJAIAFBf0cEQCADKAIAIQEgAUEASgRAA0ACQCABQX9qIQIgAEHUCGogAmohBiAGLAAAIQYgBkF/Rw0AIAFBAUwNBCACIQEMAQsLIAQgAjYCACAAQfQKaiEBIAEgBTYCAAsLCyAAQdUKaiEBIAEsAAAhASABBEAgAygCACEDIANBAEoEf0EAIQJBACEBA0AgAEHUCGogAWohBCAELQAAIQQgBEH/AXEhBCACIARqIQIgAUEBaiEBIAEgA0gNAAsgAkEbagVBGwshASAAQShqIQIgAigCACECIAEgA2ohASABIAJqIQEgAEEsaiEDIAMgAjYCACAAQTBqIQIgAiABNgIAIABBNGohASABIAU2AgALIABB2ApqIQAgAEEANgIAQQELCyEAIAALowEBB38gAEHoCmohAyADKAIAIQECQCABQRlIBEAgAEHkCmohBCABRQRAIARBADYCAAsgAEHUCmohBSAAQdwKaiEGA0AgBigCACEBIAEEQCAFLAAAIQEgAUUNAwsgABAuIQIgAkF/Rg0CIAMoAgAhASACIAF0IQIgBCgCACEHIAcgAmohAiAEIAI2AgAgAUEIaiECIAMgAjYCACABQRFIDQALCwsLrQUBCX8gABA0IAFBIGohAiACKAIAIQUCQAJAIAVFIgNFDQAgAUGkEGohAiACKAIAIQIgAg0AQX8hAQwBCyABQQRqIQIgAigCACECAkACQCACQQhKBEAgAUGkEGohAyADKAIAIQMgAw0BBSADDQELDAELIABB5ApqIQggCCgCACEJIAkQOiEHIAFBrBBqIQIgAigCACECIAJBAUoEQCABQaQQaigCACEKQQAhAwNAIAJBAXYhBSAFIANqIQQgCiAEQQJ0aiEGIAYoAgAhBiAGIAdLIQYgAiAFayECIAMgBCAGGyEDIAUgAiAGGyECIAJBAUoNAAsFQQAhAwsgAUEXaiECIAIsAAAhAiACRQRAIAFBqBBqIQIgAigCACECIAIgA0ECdGohAiACKAIAIQMLIAFBCGohASABKAIAIQEgASADaiEBIAEtAAAhASABQf8BcSEBIABB6ApqIQIgAigCACEAIAAgAUgEf0EAIQBBfwUgACABayEAIAkgAXYhASAIIAE2AgAgAwshASACIAA2AgAMAQsgAUEXaiEDIAMsAAAhAyADBEBBgRVBxBNB6gxBjBUQBAsCQCACQQBKBEAgASgCCCEIIABB5ApqIQlBACEBA0ACQCAIIAFqIQMgAywAACEEIARB/wFxIQMgBEF/RwRAIAUgAUECdGoh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IwZBEGokBiACIQECfCAAvUIgiKdB/////wdxIgNB/MOk/wNJBHwgA0GewZryA0kEfEQAAAAAAADwPwUgAEQAAAAAAAAAABByCwUgACAAoSADQf//v/8HSw0BGgJAAkACQAJAIAAgARBuQQNxDgMAAQIDCyABKwMAIAErAwgQcgwECyABKwMAIAErAwhBARBwmgwDCyABKwMAIAErAwgQcpoMAgsgASsDACABKwMIQQEQcAsLIQAgAiQGIAALywEBA38jBiECIwZBEGokBiACIQECQCAAvUIgiKdB/////wdxIgNB/MOk/wNJBEAgA0GAgMDyA08EQCAARAAAAAAAAAAAQQAQcCEACwUgA0H//7//B0sEQCAAIAChIQAMAgsCQAJAAkACQAJAIAAgARBuQQNxDgMAAQIDCyABKwMAIAErAwhBARBwIQAMBQsgASsDACABKwMIEHIhAAwECyABKwMAIAErAwhBARBwmiEADAMLIAErAwAgASsDCBBymiEACwsLIAIkBiAAC5sDAwJ/AX4CfCAAvSIDQj+IpyEBAnwCfwJAIANCIIinQf////8HcSICQarGmIQESwR8IANC////////////AINCgICAgICAgPj/AFYEQCAADwsgAETvOfr+Qi6GQGQEQCAARAAAAAAAAOB/og8FIABE0rx63SsjhsBjIABEUTAt1RBJh8BjcUUNAkQAAAAAAAAAACIADwsABSACQcLc2P4DSwRAIAJBscXC/wNLDQIgAUEBcyABawwDCyACQYCAwPEDSwR8QQAhASAABSAARAAAAAAAAPA/oA8LCwwCCyAARP6CK2VHFfc/oiABQQN0QYATaisDAKCqCyEBIAAgAbciBEQAAOD+Qi7mP6KhIgAgBER2PHk17znqPaIiBaELIQQgACAEIAQgBCAEoiIAIAAgACAAIABE0KS+cmk3Zj6iRPFr0sVBvbu+oKJELN4lr2pWET+gokSTvb4WbMFmv6CiRD5VVVVVVcU/oKKhIgCiRAAAAAAAAABAIAChoyAFoaBEAAAAAAAA8D+gIQAgAUUEQCAADwsgACABEGULnwMDAn8BfgV8IAC9IgNCIIinIQECfyADQgBTIgIgAUGAgMAASXIEfyADQv///////////wCDQgBRBEBEAAAAAAAA8L8gACAAoqMPCyACRQRAIABEAAAAAAAAUEOi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mgDjqR0AXmGRAAgb5gCFmWUAoBRfAI1AaACA2P8AJ3NNAAYGMQDKVhUAyahzAHviYABrjMAAQcMSC11A+yH5PwAAAAAtRHQ+AAAAgJhG+DwAAABgUcx4OwAAAICDG/A5AAAAQCAlejgAAACAIoLjNgAAAAAd82k1AAAAAAAA4D8AAAAAAADgvwAAAAAAAPA/AAAAAAAA+D8AQagTCwgG0M9D6/1MPgBBuxMLigZAA7jiP09nZ1MuL3N0Yl92b3JiaXMuYwBmLT5hbGxvYy5hbGxvY19idWZmZXJfbGVuZ3RoX2luX2J5dGVzID09IGYtPnRlbXBfb2Zmc2V0AHZvcmJpc19kZWNvZGVfaW5pdGlhbABmLT5ieXRlc19pbl9zZWcgPiAwAGdldDhfcGFja2V0X3JhdwBmLT5ieXRlc19pbl9zZWcgPT0gMABuZXh0X3NlZ21lbnQAdm9yYmlzX2RlY29kZV9wYWNrZXRfcmVzdAAhYy0+c3BhcnNlAGNvZGVib29rX2RlY29kZV9zY2FsYXJfcmF3ACFjLT5zcGFyc2UgfHwgeiA8IGMtPnNvcnRlZF9lbnRyaWVzAGNvZGVib29rX2RlY29kZV9kZWludGVybGVhdmVfcmVwZWF0AHogPCBjLT5zb3J0ZWRfZW50cmllcwBjb2RlYm9va19kZWNvZGVfc3RhcnQAKG4gJiAzKSA9PSAwAGltZGN0X3N0ZXAzX2l0ZXIwX2xvb3AAMABnZXRfd2luZG93AGYtPnRlbXBfb2Zmc2V0ID09IGYtPmFsbG9jLmFsbG9jX2J1ZmZlcl9sZW5ndGhfaW5fYnl0ZXMAc3RhcnRfZGVjb2RlcgB2b3JiaXNjLT5zb3J0ZWRfZW50cmllcyA9PSAwAGNvbXB1dGVfY29kZXdvcmRzAHogPj0gMCAmJiB6IDwgMzIAbGVuW2ldID49IDAgJiYgbGVuW2ldIDwgMzIAYXZhaWxhYmxlW3ldID09IDAAayA9PSBjLT5zb3J0ZWRfZW50cmllcwBjb21wdXRlX3NvcnRlZF9odWZmbWFuAGMtPnNvcnRlZF9jb2Rld29yZHNbeF0gPT0gY29kZQBsZW4gIT0gTk9fQ09ERQBpbmNsdWRlX2luX3NvcnQAcG93KChmbG9hdCkgcisxLCBkaW0pID4gZW50cmllcwBsb29rdXAxX3ZhbHVlcwAoaW50KSBmbG9vcihwb3coKGZsb2F0KSByLCBkaW0pKSA8PSBlbnRyaWVzAOoPBG5hbWUB4g9+AAVhYm9ydAENZW5sYXJnZU1lbW9yeQIOZ2V0VG90YWxNZW1vcnkDF2Fib3J0T25DYW5ub3RHcm93TWVtb3J5BA5fX19hc3NlcnRfZmFpbAULX19fc2V0RXJyTm8GBl9hYm9ydAcWX2Vtc2NyaXB0ZW5fbWVtY3B5X2JpZwgQX19ncm93V2FzbU1lbW9yeQkKc3RhY2tBbGxvYwoJc3RhY2tTYXZlCwxzdGFja1Jlc3RvcmUME2VzdGFibGlzaFN0YWNrU3BhY2UNCHNldFRocmV3DgtzZXRUZW1wUmV0MA8LZ2V0VGVtcFJldDAQEV9zdGJfdm9yYmlzX2Nsb3NlEQ5fdm9yYmlzX2RlaW5pdBILX3NldHVwX2ZyZWUTGl9zdGJfdm9yYmlzX2ZsdXNoX3B1c2hkYXRhFCFfc3RiX3ZvcmJpc19kZWNvZGVfZnJhbWVfcHVzaGRhdGEVBl9lcnJvchYgX3ZvcmJpc19zZWFyY2hfZm9yX3BhZ2VfcHVzaGRhdGEXGF9pc193aG9sZV9wYWNrZXRfcHJlc2VudBgVX3ZvcmJpc19kZWNvZGVfcGFja2V0GQxfZ2V0OF9wYWNrZXQaFF92b3JiaXNfZmluaXNoX2ZyYW1lGxlfc3RiX3ZvcmJpc19vcGVuX3B1c2hkYXRhHAxfdm9yYmlzX2luaXQdDl9zdGFydF9kZWNvZGVyHg1fdm9yYmlzX2FsbG9jHxtfc3RiX3ZvcmJpc19nZXRfZmlsZV9vZmZzZXQgE19tYXliZV9zdGFydF9wYWNrZXQhDV9mbHVzaF9wYWNrZXQiBV9nZXRuIwZfZ2V0MzIkE19zdGJfdm9yYmlzX2pzX29wZW4lFF9zdGJfdm9yYmlzX2pzX2Nsb3NlJhdfc3RiX3ZvcmJpc19qc19jaGFubmVscycaX3N0Yl92b3JiaXNfanNfc2FtcGxlX3JhdGUoFV9zdGJfdm9yYmlzX2pzX2RlY29kZSkNX2NyYzMyX3VwZGF0ZSoWX3ZvcmJpc19kZWNvZGVfaW5pdGlhbCsaX3ZvcmJpc19kZWNvZGVfcGFja2V0X3Jlc3QsCV9nZXRfYml0cy0FX2lsb2cuEF9nZXQ4X3BhY2tldF9yYXcvDV9uZXh0X3NlZ21lbnQwBV9nZXQ4MQtfc3RhcnRfcGFnZTIQX2NhcHR1cmVfcGF0dGVybjMdX3N0YXJ0X3BhZ2Vfbm9fY2FwdHVyZXBhdHRlcm40DV9wcmVwX2h1ZmZtYW41G19jb2RlYm9va19kZWNvZGVfc2NhbGFyX3JhdzYOX3ByZWRpY3RfcG9pbnQ3D19kZWNvZGVfcmVzaWR1ZTgJX2RvX2Zsb29yOQ1faW52ZXJzZV9tZGN0OgxfYml0X3JldmVyc2U7EV9tYWtlX2Jsb2NrX2FycmF5PBJfc2V0dXBfdGVtcF9tYWxsb2M9JF9jb2RlYm9va19kZWNvZGVfZGVpbnRlcmxlYXZlX3JlcGVhdD4PX3Jlc2lkdWVfZGVjb2RlPxVfY29kZWJvb2tfZGVjb2RlX3N0ZXBAEF9jb2RlYm9va19kZWNvZGVBFl9jb2RlYm9va19kZWNvZGVfc3RhcnRCCl9kcmF3X2xpbmVDF19pbWRjdF9zdGVwM19pdGVyMF9sb29wRBlfaW1kY3Rfc3RlcDNfaW5uZXJfcl9sb29wRRlfaW1kY3Rfc3RlcDNfaW5uZXJfc19sb29wRh9faW1kY3Rfc3RlcDNfaW5uZXJfc19sb29wX2xkNjU0RwhfaXRlcl81NEgLX2dldF93aW5kb3dJEF92b3JiaXNfdmFsaWRhdGVKDV9zdGFydF9wYWNrZXRLBV9za2lwTAtfY3JjMzJfaW5pdE0NX3NldHVwX21hbGxvY04QX3NldHVwX3RlbXBfZnJlZU8SX2NvbXB1dGVfY29kZXdvcmRzUBdfY29tcHV0ZV9zb3J0ZWRfaHVmZm1hblEcX2NvbXB1dGVfYWNjZWxlcmF0ZWRfaHVmZm1hblIPX2Zsb2F0MzJfdW5wYWNrUw9fbG9va3VwMV92YWx1ZXNUDl9wb2ludF9jb21wYXJlVQpfbmVpZ2hib3JzVg9faW5pdF9ibG9ja3NpemVXCl9hZGRfZW50cnlYEF9pbmNsdWRlX2luX3NvcnRZD191aW50MzJfY29tcGFyZVoYX2NvbXB1dGVfdHdpZGRsZV9mYWN0b3JzWw9fY29tcHV0ZV93aW5kb3dcE19jb21wdXRlX2JpdHJldmVyc2VdB19zcXVhcmVeB19tYWxsb2NfBV9mcmVlYAhfcmVhbGxvY2ESX3RyeV9yZWFsbG9jX2NodW5rYg5fZGlzcG9zZV9jaHVua2MRX19fZXJybm9fbG9jYXRpb25kB19tZW1jbXBlB19zY2FsYm5mBl9xc29ydGcFX3NpZnRoBF9zaHJpCF90cmlua2xlagRfc2hsawVfcG50emwIX2FfY3R6X2xtBl9jeWNsZW4LX19fcmVtX3BpbzJvEV9fX3JlbV9waW8yX2xhcmdlcAZfX19zaW5xBl9sZGV4cHIGX19fY29zcwRfY29zdARfc2ludQRfZXhwdgRfbG9ndwRfcG93eAtydW5Qb3N0U2V0c3kHX21lbWNweXoHX21lbXNldHsFX3Nicmt8C2R5bkNhbGxfaWlpfQJiMA=="),function(Q){return Q.charCodeAt(0)});var E=E!==void 0?E:{},x={};for(e in E)E.hasOwnProperty(e)&&(x[e]=E[e]);E.arguments=[],E.thisProgram="./this.program",E.quit=function(Q,d){throw d},E.preRun=[],E.postRun=[];var L=!1,sA=!1,z=!1,H=!1;L=typeof window=="object",sA=typeof importScripts=="function",z=typeof process=="object"&&typeof Ys=="function"&&!L&&!sA,H=!L&&!z&&!sA;var aA="";function RA(Q){return E.locateFile?E.locateFile(Q,aA):aA+Q}z?(aA=__dirname+"/",E.read=function(d,m){var k;return A||(A=void 0),t||(t=void 0),d=t.normalize(d),k=A.readFileSync(d),m?k:k.toString()},E.readBinary=function(d){var m=E.read(d,!0);return m.buffer||(m=new Uint8Array(m)),zA(m.buffer),m},process.argv.length>1&&(E.thisProgram=process.argv[1].replace(/\\/g,"/")),E.arguments=process.argv.slice(2),typeof module<"u",process.on("uncaughtException",function(Q){if(!(Q instanceof Ut))throw Q}),process.on("unhandledRejection",function(Q,d){process.exit(1)}),E.quit=function(Q){process.exit(Q)},E.inspect=function(){return"[Emscripten Module object]"}):H?(typeof read<"u"&&(E.read=function(d){return read(d)}),E.readBinary=function(d){var m;return typeof readbuffer=="function"?new Uint8Array(readbuffer(d)):(zA(typeof(m=read(d,"binary"))=="object"),m)},typeof scriptArgs<"u"?E.arguments=scriptArgs:typeof arguments<"u"&&(E.arguments=arguments),typeof quit=="function"&&(E.quit=function(Q){quit(Q)})):(L||sA)&&(L?document.currentScript&&(aA=document.currentScript.src):aA=self.location.href,aA=aA.indexOf("blob:")!==0?aA.split("/").slice(0,-1).join("/")+"/":"",E.read=function(d){var m=new XMLHttpRequest;return m.open("GET",d,!1),m.send(null),m.responseText},sA&&(E.readBinary=function(d){var m=new XMLHttpRequest;return m.open("GET",d,!1),m.responseType="arraybuffer",m.send(null),new Uint8Array(m.response)}),E.readAsync=function(d,m,k){var K=new XMLHttpRequest;K.open("GET",d,!0),K.responseType="arraybuffer",K.onload=function(){if(K.status==200||K.status==0&&K.response){m(K.response);return}k()},K.onerror=k,K.send(null)},E.setWindowTitle=function(Q){document.title=Q});var NA=E.print||(typeof console<"u"?console.log.bind(console):typeof print<"u"?print:null),tA=E.printErr||(typeof printErr<"u"?printErr:typeof console<"u"&&console.warn.bind(console)||NA);for(e in x)x.hasOwnProperty(e)&&(E[e]=x[e]);function _(Q){var d=l;return l=l+Q+15&-16,d}function T(Q){var d=i[M>>2],m=d+Q+15&-16;return i[M>>2]=m,m>=xA&&!bt()?(i[M>>2]=d,0):d}function Y(Q,d){return d||(d=16),Q=Math.ceil(Q/d)*d}function $(Q){switch(Q){case"i1":case"i8":return 1;case"i16":return 2;case"i32":case"float":return 4;case"i64":case"double":return 8;default:if(Q[Q.length-1]==="*")return 4;if(Q[0]!=="i")return 0;var d=parseInt(Q.substr(1));return zA(d%8==0),d/8}}function Z(Q){Z.shown||(Z.shown={}),Z.shown[Q]||(Z.shown[Q]=1,tA(Q))}x=void 0;var rA={"f64-rem":function(Q,d){return Q%d},debugger:function(){}},PA=[];function Ee(Q,d){for(var m=0,k=m;k<m+0;k++)if(!PA[k])return PA[k]=Q,1+k;throw"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS."}function Qe(Q){PA[Q-1]=null}var de={};function It(Q,d){if(Q){zA(d),de[d]||(de[d]={});var m=de[d];return m[Q]||(d.length===1?m[Q]=function(){return gA(d,Q)}:d.length===2?m[Q]=function(K){return gA(d,Q,[K])}:m[Q]=function(){return gA(d,Q,Array.prototype.slice.call(arguments))}),m[Q]}}function De(Q,d,m){return m?+(Q>>>0)+4294967296*+(d>>>0):+(Q>>>0)+4294967296*+(0|d)}function gA(Q,d,m){return m&&m.length?E["dynCall_"+Q].apply(null,[d].concat(m)):E["dynCall_"+Q].call(null,d)}var lA=0,fe=0;function zA(Q,d){Q||Re("Assertion failed: "+d)}function ve(Q){var d=E["_"+Q];return zA(d,"Cannot call unknown function "+Q+", make sure it is exported"),d}var He={stackSave:function(){Zn()},stackRestore:function(){Vn()},arrayToC:function(Q){var d,m,k=sn(Q.length);return d=Q,m=k,s.set(d,m),k},stringToC:function(Q){var d=0;if(Q!=null&&Q!==0){var m=(Q.length<<2)+1;d=sn(m),xt(Q,d,m)}return d}},Gt={string:He.stringToC,array:He.arrayToC};function Ct(Q,d,m,k,K){var iA=ve(Q),CA=[],W=0;if(k)for(var UA=0;UA<k.length;UA++){var yA=Gt[m[UA]];yA?(W===0&&(W=Zn()),CA[UA]=yA(k[UA])):CA[UA]=k[UA]}var SA,BA=iA.apply(null,CA);return BA=(SA=BA,d==="string"?Ye(SA):d==="boolean"?!!SA:SA),W!==0&&Vn(W),BA}function Mt(Q,d,m,k){switch((m=m||"i8").charAt(m.length-1)==="*"&&(m="i32"),m){case"i1":case"i8":s[Q>>0]=d;break;case"i16":r[Q>>1]=d;break;case"i32":i[Q>>2]=d;break;case"i64":tempI64=[d>>>0,+di(tempDouble=d)>=1?tempDouble>0?(0|ui(+Ls(tempDouble/4294967296),4294967295))>>>0:~~+fi((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0],i[Q>>2]=tempI64[0],i[Q+4>>2]=tempI64[1];break;case"float":B[Q>>2]=d;break;case"double":h[Q>>3]=d;break;default:Re("invalid type for setValue: "+m)}}function vn(Q,d,m){switch((d=d||"i8").charAt(d.length-1)==="*"&&(d="i32"),d){case"i1":case"i8":return s[Q>>0];case"i16":return r[Q>>1];case"i32":case"i64":return i[Q>>2];case"float":return B[Q>>2];case"double":return h[Q>>3];default:Re("invalid type for getValue: "+d)}return null}function Hn(Q,d,m,k){typeof Q=="number"?(iA=!0,CA=Q):(iA=!1,CA=Q.length);var K=typeof d=="string"?d:null;if(W=m==4?k:[typeof nn=="function"?nn:_,sn,_,T][m===void 0?2:m](Math.max(CA,K?1:d.length)),iA){for(k=W,zA((3&W)==0),UA=W+(-4&CA);k<UA;k+=4)i[k>>2]=0;for(UA=W+CA;k<UA;)s[k++>>0]=0;return W}if(K==="i8")return Q.subarray||Q.slice?o.set(Q,W):o.set(new Uint8Array(Q),W),W;for(var iA,CA,W,UA,yA,SA,BA,oA=0;oA<CA;){var ZA=Q[oA];if((yA=K||d[oA])===0){oA++;continue}yA=="i64"&&(yA="i32"),Mt(W+oA,ZA,yA),BA!==yA&&(SA=$(yA),BA=yA),oA+=SA}return W}function Et(Q){return u?Pn?nn(Q):T(Q):_(Q)}function Ye(Q,d){if(d===0||!Q)return"";for(var m,k,K,iA=0,CA=0;iA|=k=o[Q+CA>>0],(k!=0||d)&&(CA++,!d||CA!=d););d||(d=CA);var W="";if(iA<128){for(;d>0;)K=String.fromCharCode.apply(String,o.subarray(Q,Q+Math.min(d,1024))),W=W?W+K:K,Q+=1024,d-=1024;return W}return m=Q,function(yA,SA){for(var BA=SA;yA[BA];)++BA;if(BA-SA>16&&yA.subarray&&zt)return zt.decode(yA.subarray(SA,BA));for(var oA,ZA,oe,re,ie,je,ae="";;){if(!(oA=yA[SA++]))return ae;if(!(128&oA)){ae+=String.fromCharCode(oA);continue}if(ZA=63&yA[SA++],(224&oA)==192){ae+=String.fromCharCode((31&oA)<<6|ZA);continue}if(oe=63&yA[SA++],(240&oA)==224?oA=(15&oA)<<12|ZA<<6|oe:(re=63&yA[SA++],(248&oA)==240?oA=(7&oA)<<18|ZA<<12|oe<<6|re:(ie=63&yA[SA++],oA=(252&oA)==248?(3&oA)<<24|ZA<<18|oe<<12|re<<6|ie:(1&oA)<<30|ZA<<24|oe<<18|re<<12|ie<<6|(je=63&yA[SA++]))),oA<65536)ae+=String.fromCharCode(oA);else{var vt=oA-65536;ae+=String.fromCharCode(55296|vt>>10,56320|1023&vt)}}}(o,m)}function jA(Q){for(var d="";;){var m=s[Q++>>0];if(!m)return d;d+=String.fromCharCode(m)}}function Yn(Q,d){return function(k,K,iA){for(var CA=0;CA<k.length;++CA)s[K++>>0]=k.charCodeAt(CA);iA||(s[K>>0]=0)}(Q,d,!1)}var zt=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function ct(Q,d,m,k){if(!(k>0))return 0;for(var K=m,iA=m+k-1,CA=0;CA<Q.length;++CA){var W=Q.charCodeAt(CA);if(W>=55296&&W<=57343&&(W=65536+((1023&W)<<10)|1023&Q.charCodeAt(++CA)),W<=127){if(m>=iA)break;d[m++]=W}else if(W<=2047){if(m+1>=iA)break;d[m++]=192|W>>6,d[m++]=128|63&W}else if(W<=65535){if(m+2>=iA)break;d[m++]=224|W>>12,d[m++]=128|W>>6&63,d[m++]=128|63&W}else if(W<=2097151){if(m+3>=iA)break;d[m++]=240|W>>18,d[m++]=128|W>>12&63,d[m++]=128|W>>6&63,d[m++]=128|63&W}else if(W<=67108863){if(m+4>=iA)break;d[m++]=248|W>>24,d[m++]=128|W>>18&63,d[m++]=128|W>>12&63,d[m++]=128|W>>6&63,d[m++]=128|63&W}else{if(m+5>=iA)break;d[m++]=252|W>>30,d[m++]=128|W>>24&63,d[m++]=128|W>>18&63,d[m++]=128|W>>12&63,d[m++]=128|W>>6&63,d[m++]=128|63&W}}return d[m]=0,m-K}function xt(Q,d,m){return ct(Q,o,d,m)}function qA(Q){for(var d=0,m=0;m<Q.length;++m){var k=Q.charCodeAt(m);k>=55296&&k<=57343&&(k=65536+((1023&k)<<10)|1023&Q.charCodeAt(++m)),k<=127?++d:k<=2047?d+=2:k<=65535?d+=3:k<=2097151?d+=4:k<=67108863?d+=5:d+=6}return d}var ke=typeof TextDecoder<"u"?new TextDecoder("utf-16le"):void 0;function Nt(Q){for(var d=Q,m=d>>1;r[m];)++m;if((d=m<<1)-Q>32&&ke)return ke.decode(o.subarray(Q,d));for(var k=0,K="";;){var iA=r[Q+2*k>>1];if(iA==0)return K;++k,K+=String.fromCharCode(iA)}}function On(Q,d,m){if(m===void 0&&(m=2147483647),m<2)return 0;for(var k=d,K=(m-=2)<2*Q.length?m/2:Q.length,iA=0;iA<K;++iA){var CA=Q.charCodeAt(iA);r[d>>1]=CA,d+=2}return r[d>>1]=0,d-k}function Fe(Q){return 2*Q.length}function jt(Q){for(var d=0,m="";;){var k=i[Q+4*d>>2];if(k==0)return m;if(++d,k>=65536){var K=k-65536;m+=String.fromCharCode(55296|K>>10,56320|1023&K)}else m+=String.fromCharCode(k)}}function $t(Q,d,m){if(m===void 0&&(m=2147483647),m<4)return 0;for(var k=d,K=k+m-4,iA=0;iA<Q.length;++iA){var CA=Q.charCodeAt(iA);if(CA>=55296&&CA<=57343&&(CA=65536+((1023&CA)<<10)|1023&Q.charCodeAt(++iA)),i[d>>2]=CA,(d+=4)+4>K)break}return i[d>>2]=0,d-k}function Gs(Q){for(var d=0,m=0;m<Q.length;++m){var k=Q.charCodeAt(m);k>=55296&&k<=57343&&++m,d+=4}return d}function Ms(Q){var d=qA(Q)+1,m=nn(d);return m&&ct(Q,s,m,d),m}function An(Q){var d=qA(Q)+1,m=sn(d);return ct(Q,s,m,d),m}function We(Q){return Q}function Jn(){var Q,d=function(){var k=Error();if(!k.stack){try{throw Error(0)}catch(K){k=K}if(!k.stack)return"(no stack trace available)"}return k.stack.toString()}();return E.extraStackTrace&&(d+=`
2
- `+E.extraStackTrace()),(Q=d).replace(/__Z[\w\d_]+/g,function(m){var k,K=k=m;return m===K?m:m+" ["+K+"]"})}function we(Q,d){return Q%d>0&&(Q+=d-Q%d),Q}function ht(Q){E.buffer=n=Q}function _e(){E.HEAP8=s=new Int8Array(n),E.HEAP16=r=new Int16Array(n),E.HEAP32=i=new Int32Array(n),E.HEAPU8=o=new Uint8Array(n),E.HEAPU16=g=new Uint16Array(n),E.HEAPU32=C=new Uint32Array(n),E.HEAPF32=B=new Float32Array(n),E.HEAPF64=h=new Float64Array(n)}function bt(){var Q=E.usingWasm?65536:16777216,d=2147483648-Q;if(i[M>>2]>d)return!1;var m=xA;for(xA=Math.max(xA,16777216);xA<i[M>>2];)xA=xA<=536870912?we(2*xA,Q):Math.min(we((3*xA+2147483648)/4,Q),d);var k=E.reallocBuffer(xA);return k&&k.byteLength==xA?(ht(k),_e(),!0):(xA=m,!1)}c=l=f=S=G=D=M=0,u=!1,E.reallocBuffer||(E.reallocBuffer=function(Q){try{if(ArrayBuffer.transfer)d=ArrayBuffer.transfer(n,Q);else{var d,m=s;d=new ArrayBuffer(Q),new Int8Array(d).set(m)}}catch{return!1}return!!mi(d)&&d});try{(U=Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,"byteLength").get))(new ArrayBuffer(4))}catch{U=function(d){return d.byteLength}}var lt=E.TOTAL_STACK||5242880,xA=E.TOTAL_MEMORY||16777216;function en(){return xA}function Oe(Q){for(;Q.length>0;){var d=Q.shift();if(typeof d=="function"){d();continue}var m=d.func;typeof m=="number"?d.arg===void 0?E.dynCall_v(m):E.dynCall_vi(m,d.arg):m(d.arg===void 0?null:d.arg)}}xA<lt&&tA("TOTAL_MEMORY should be larger than TOTAL_STACK, was "+xA+"! (TOTAL_STACK="+lt+")"),E.buffer?n=E.buffer:(typeof WebAssembly=="object"&&typeof WebAssembly.Memory=="function"?(E.wasmMemory=new WebAssembly.Memory({initial:xA/65536}),n=E.wasmMemory.buffer):n=new ArrayBuffer(xA),E.buffer=n),_e();var Lt=[],Kn=[],xs=[],Ns=[],bs=[],Pn=!1,li=!1;function Bi(Q){Lt.unshift(Q)}function zi(Q){Kn.unshift(Q)}function ji(Q){xs.unshift(Q)}function $i(Q){Ns.unshift(Q)}function Qi(Q){bs.unshift(Q)}function Aa(Q,d,m){var k,K;Z("writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!"),m&&(k=s[K=d+qA(Q)]),xt(Q,d,1/0),m&&(s[K]=k)}function ea(Q,d,m){return Q>=0?Q:d<=32?2*Math.abs(1<<d-1)+Q:Math.pow(2,d)+Q}function ta(Q,d,m){if(Q<=0)return Q;var k=d<=32?Math.abs(1<<d-1):Math.pow(2,d-1);return Q>=k&&(d<=32||Q>k)&&(Q=-2*k+Q),Q}var di=Math.abs,fi=Math.ceil,Ls=Math.floor,ui=Math.min,ze=0,qn=null,Tt=null;function na(Q){return Q}E.preloadedImages={},E.preloadedAudios={};var Ts="data:application/octet-stream;base64,";function tn(Q){return String.prototype.startsWith?Q.startsWith(Ts):Q.indexOf(Ts)===0}(function(){var d="main.wast",m="main.wasm",k="main.temp.asm.js";tn(d)||(d=RA(d)),tn(m)||(m=RA(m)),tn(k)||(k=RA(k));var K={global:null,env:null,asm2wasm:rA,parent:E},iA=null;function CA(BA){return BA}function W(){try{if(E.wasmBinary)return new Uint8Array(E.wasmBinary);if(E.readBinary)return E.readBinary(m);throw"both async and sync fetching of the wasm failed"}catch(BA){Re(BA)}}E.asmPreload=E.asm;var UA=E.reallocBuffer,yA=function(BA){BA=we(BA,E.usingWasm?65536:16777216);var oA=E.buffer.byteLength;if(E.usingWasm)try{var ZA=E.wasmMemory.grow((BA-oA)/65536);return ZA!==-1?E.buffer=E.wasmMemory.buffer:null}catch{return null}};E.reallocBuffer=function(BA){return SA==="asmjs"?UA(BA):yA(BA)};var SA="";E.asm=function(BA,oA,ZA){var oe;if(!(oA=oe=oA).table){var re,ie=E.wasmTableSize;ie===void 0&&(ie=1024);var je=E.wasmMaxTableSize;typeof WebAssembly=="object"&&typeof WebAssembly.Table=="function"?je!==void 0?oA.table=new WebAssembly.Table({initial:ie,maximum:je,element:"anyfunc"}):oA.table=new WebAssembly.Table({initial:ie,element:"anyfunc"}):oA.table=Array(ie),E.wasmTable=oA.table}return oA.memoryBase||(oA.memoryBase=E.STATIC_BASE),oA.tableBase||(oA.tableBase=0),re=function(vt,Bt,Wn){if(typeof WebAssembly!="object")return tA("no native wasm support detected"),!1;if(!(E.wasmMemory instanceof WebAssembly.Memory))return tA("no native wasm Memory in use"),!1;function on(ue,me){if((iA=ue.exports).memory){var Ht,_n,Hs;Ht=iA.memory,_n=E.buffer,Ht.byteLength<_n.byteLength&&tA("the new buffer in mergeMemory is smaller than the previous one. in native wasm, we should grow memory here"),Hs=new Int8Array(_n),new Int8Array(Ht).set(Hs),ht(Ht),_e()}E.asm=iA,E.usingWasm=!0,function(Ia){if(ze--,E.monitorRunDependencies&&E.monitorRunDependencies(ze),ze==0&&(qn!==null&&(clearInterval(qn),qn=null),Tt)){var pi=Tt;Tt=null,pi()}}("wasm-instantiate")}if(Bt.memory=E.wasmMemory,K.global={NaN:NaN,Infinity:1/0},K["global.Math"]=Math,K.env=Bt,ze++,E.monitorRunDependencies&&E.monitorRunDependencies(ze),E.instantiateWasm)try{return E.instantiateWasm(K,on)}catch(ue){return tA("Module.instantiateWasm callback failed with error: "+ue),!1}function Qt(ue){on(ue.instance,ue.module)}function vs(ue){(!E.wasmBinary&&(L||sA)&&typeof fetch=="function"?fetch(m,{credentials:"same-origin"}).then(function(me){if(!me.ok)throw"failed to load wasm binary file at '"+m+"'";return me.arrayBuffer()}).catch(function(){return W()}):new Promise(function(me,Ht){me(W())})).then(function(me){return WebAssembly.instantiate(me,K)}).then(ue).catch(function(me){tA("failed to asynchronously prepare wasm: "+me),Re(me)})}return E.wasmBinary||typeof WebAssembly.instantiateStreaming!="function"||tn(m)||typeof fetch!="function"?vs(Qt):WebAssembly.instantiateStreaming(fetch(m,{credentials:"same-origin"}),K).then(Qt).catch(function(ue){tA("wasm streaming compile failed: "+ue),tA("falling back to ArrayBuffer instantiation"),vs(Qt)}),{}}(BA,oA,ZA),zA(re,"no binaryen method succeeded."),re},E.asm})(),l=(c=1024)+4816,Kn.push(),E.STATIC_BASE=c,E.STATIC_BUMP=4816;var $A=l;function sa(Q){s[$A]=s[Q],s[$A+1]=s[Q+1],s[$A+2]=s[Q+2],s[$A+3]=s[Q+3]}function oa(Q){s[$A]=s[Q],s[$A+1]=s[Q+1],s[$A+2]=s[Q+2],s[$A+3]=s[Q+3],s[$A+4]=s[Q+4],s[$A+5]=s[Q+5],s[$A+6]=s[Q+6],s[$A+7]=s[Q+7]}function ra(Q,d,m){var k=m>0?m:qA(Q)+1,K=Array(k),iA=ct(Q,K,0,K.length);return d&&(K.length=iA),K}function ia(Q){for(var d=[],m=0;m<Q.length;m++){var k=Q[m];k>255&&(k&=255),d.push(String.fromCharCode(k))}return d.join("")}l+=16,M=_(4),G=(f=S=Y(l))+lt,D=Y(G),i[M>>2]=D,u=!0,E.wasmTableSize=4,E.wasmMaxTableSize=4,E.asmGlobalArg={},E.asmLibraryArg={abort:Re,assert:zA,enlargeMemory:bt,getTotalMemory:en,abortOnCannotGrowMemory:function(){Re("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+xA+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")},invoke_iii:function(d,m,k){var K=Zn();try{return E.dynCall_iii(d,m,k)}catch(iA){if(Vn(K),typeof iA!="number"&&iA!=="longjmp")throw iA;E.setThrew(1,0)}},___assert_fail:function(d,m,k,K){Re("Assertion failed: "+Ye(d)+", at: "+[m?Ye(m):"unknown filename",k,K?Ye(K):"unknown function"])},___setErrNo:function(d){return E.___errno_location&&(i[E.___errno_location()>>2]=d),d},_abort:function(){E.abort()},_emscripten_memcpy_big:function(d,m,k){return o.set(o.subarray(m,m+k),d),d},_llvm_floor_f64:Ls,DYNAMICTOP_PTR:M,tempDoublePtr:$A,ABORT:lA,STACKTOP:S,STACK_MAX:G};var Us=E.asm(E.asmGlobalArg,E.asmLibraryArg,n);E.asm=Us,E.___errno_location=function(){return E.asm.___errno_location.apply(null,arguments)};var mi=E._emscripten_replace_memory=function(){return E.asm._emscripten_replace_memory.apply(null,arguments)};E._free=function(){return E.asm._free.apply(null,arguments)};var nn=E._malloc=function(){return E.asm._malloc.apply(null,arguments)};E._memcpy=function(){return E.asm._memcpy.apply(null,arguments)},E._memset=function(){return E.asm._memset.apply(null,arguments)},E._sbrk=function(){return E.asm._sbrk.apply(null,arguments)},E._stb_vorbis_js_channels=function(){return E.asm._stb_vorbis_js_channels.apply(null,arguments)},E._stb_vorbis_js_close=function(){return E.asm._stb_vorbis_js_close.apply(null,arguments)},E._stb_vorbis_js_decode=function(){return E.asm._stb_vorbis_js_decode.apply(null,arguments)},E._stb_vorbis_js_open=function(){return E.asm._stb_vorbis_js_open.apply(null,arguments)},E._stb_vorbis_js_sample_rate=function(){return E.asm._stb_vorbis_js_sample_rate.apply(null,arguments)},E.establishStackSpace=function(){return E.asm.establishStackSpace.apply(null,arguments)},E.getTempRet0=function(){return E.asm.getTempRet0.apply(null,arguments)},E.runPostSets=function(){return E.asm.runPostSets.apply(null,arguments)},E.setTempRet0=function(){return E.asm.setTempRet0.apply(null,arguments)},E.setThrew=function(){return E.asm.setThrew.apply(null,arguments)};var sn=E.stackAlloc=function(){return E.asm.stackAlloc.apply(null,arguments)},Vn=E.stackRestore=function(){return E.asm.stackRestore.apply(null,arguments)},Zn=E.stackSave=function(){return E.asm.stackSave.apply(null,arguments)};function Ut(Q){this.name="ExitStatus",this.message="Program terminated with exit("+Q+")",this.status=Q}function Xn(Q){Q=Q||E.arguments,!(ze>0)&&(function(){if(E.preRun)for(typeof E.preRun=="function"&&(E.preRun=[E.preRun]);E.preRun.length;)Bi(E.preRun.shift());Oe(Lt)}(),!(ze>0)&&(E.calledRun||(E.setStatus?(E.setStatus("Running..."),setTimeout(function(){setTimeout(function(){E.setStatus("")},1),d()},1)):d())));function d(){!E.calledRun&&(E.calledRun=!0,lA||(Pn||(Pn=!0,Oe(Kn)),Oe(xs),E.onRuntimeInitialized&&E.onRuntimeInitialized(),function(){if(E.postRun)for(typeof E.postRun=="function"&&(E.postRun=[E.postRun]);E.postRun.length;)Qi(E.postRun.shift());Oe(bs)}()))}}function aa(Q,d){(!d||!E.noExitRuntime||Q!==0)&&(E.noExitRuntime||(lA=!0,fe=Q,S=R,Oe(Ns),li=!0,E.onExit&&E.onExit(Q)),E.quit(Q,new Ut(Q)))}function Re(Q){throw E.onAbort&&E.onAbort(Q),Q!==void 0?(NA(Q),tA(Q),Q=JSON.stringify(Q)):Q="",lA=!0,fe=1,"abort("+Q+"). Build with -s ASSERTIONS=1 for more info."}if(E.dynCall_iii=function(){return E.asm.dynCall_iii.apply(null,arguments)},E.asm=Us,E.ccall=Ct,E.cwrap=function(d,m,k,K){var iA=(k=k||[]).every(function(CA){return CA==="number"});return m!=="string"&&iA&&!K?ve(d):function(){return Ct(d,m,k,arguments,K)}},Ut.prototype=Error(),Ut.prototype.constructor=Ut,Tt=function Q(){E.calledRun||Xn(),E.calledRun||(Tt=Q)},E.run=Xn,E.abort=Re,E.preInit)for(typeof E.preInit=="function"&&(E.preInit=[E.preInit]);E.preInit.length>0;)E.preInit.pop()();E.noExitRuntime=!0,Xn(),E.onRuntimeInitialized=()=>{Vs=!0,Zs()},pe.decode=function(Q){return function(m){if(!Vs)throw Error("SF3 decoder has not been initialized yet. Did you await synth.isReady?");var k={};function K(Bt){return new Int32Array(E.HEAPU8.buffer,Bt,1)[0]}function iA(Bt,Wn){var on=new ArrayBuffer(Wn*Float32Array.BYTES_PER_ELEMENT),Qt=new Float32Array(on);return Qt.set(new Float32Array(E.HEAPU8.buffer,Bt,Wn)),Qt}k.open=E.cwrap("stb_vorbis_js_open","number",[]),k.close=E.cwrap("stb_vorbis_js_close","void",["number"]),k.channels=E.cwrap("stb_vorbis_js_channels","number",["number"]),k.sampleRate=E.cwrap("stb_vorbis_js_sample_rate","number",["number"]),k.decode=E.cwrap("stb_vorbis_js_decode","number",["number","number","number","number","number"]);var CA,W,UA,yA,SA=k.open(),BA=(CA=m,W=m.byteLength,UA=E._malloc(W),(yA=new Uint8Array(E.HEAPU8.buffer,UA,W)).set(new Uint8Array(CA,0,W)),yA),oA=E._malloc(4),ZA=E._malloc(4),oe=k.decode(SA,BA.byteOffset,BA.byteLength,oA,ZA);if(E._free(BA.byteOffset),oe<0)throw k.close(SA),E._free(oA),Error("stbvorbis decode failed: "+oe);for(var re=k.channels(SA),ie=Array(re),je=new Int32Array(E.HEAPU32.buffer,K(oA),re),ae=0;ae<re;ae++)ie[ae]=iA(je[ae],oe),E._free(je[ae]);var vt=k.sampleRate(SA);return k.close(SA),E._free(K(oA)),E._free(oA),{data:ie,sampleRate:vt,eof:!0,error:null}}(Q)}})();var $n=new Float32Array(30001);for(let e=0;e<$n.length;e++){let A=-15e3+e;$n[e]=Math.pow(2,A/1200)}function ce(e){return e<=-32767?0:$n[e- -15e3]}var gn=-2e4,Xs=16500,As=new Float32Array(Xs-gn+1);for(let e=0;e<As.length;e++){let A=gn+e;As[e]=440*Math.pow(2,(A-6900)/1200)}function Ot(e){return e<gn||e>Xs?440*Math.pow(2,(e-6900)/1200):As[~~e-gn]}var ts=-1660,ki=1600,es=new Float32Array((ki-ts)*100+1);for(let e=0;e<es.length;e++){let A=(ts*100+e)/100;es[e]=Math.pow(10,-A/20)}function Ie(e){return es[Math.floor((e-ts)*100)]}var a={INVALID:-1,startAddrsOffset:0,endAddrOffset:1,startloopAddrsOffset:2,endloopAddrsOffset:3,startAddrsCoarseOffset:4,modLfoToPitch:5,vibLfoToPitch:6,modEnvToPitch:7,initialFilterFc:8,initialFilterQ:9,modLfoToFilterFc:10,modEnvToFilterFc:11,endAddrsCoarseOffset:12,modLfoToVolume:13,unused1:14,chorusEffectsSend:15,reverbEffectsSend:16,pan:17,unused2:18,unused3:19,unused4:20,delayModLFO:21,freqModLFO:22,delayVibLFO:23,freqVibLFO:24,delayModEnv:25,attackModEnv:26,holdModEnv:27,decayModEnv:28,sustainModEnv:29,releaseModEnv:30,keyNumToModEnvHold:31,keyNumToModEnvDecay:32,delayVolEnv:33,attackVolEnv:34,holdVolEnv:35,decayVolEnv:36,sustainVolEnv:37,releaseVolEnv:38,keyNumToVolEnvHold:39,keyNumToVolEnvDecay:40,instrument:41,reserved1:42,keyRange:43,velRange:44,startloopAddrsCoarseOffset:45,keyNum:46,velocity:47,initialAttenuation:48,reserved2:49,endloopAddrsCoarseOffset:50,coarseTune:51,fineTune:52,sampleID:53,sampleModes:54,reserved3:55,scaleTuning:56,exclusiveClass:57,overridingRootKey:58,unused5:59,endOper:60,vibLfoToVolume:61,vibLfoToFilterFc:62},Jt=Object.keys(a).length,Ws=Math.max(...Object.values(a)),q=[];q[a.startAddrsOffset]={min:0,max:32768,def:0,nrpn:1};q[a.endAddrOffset]={min:-32768,max:32768,def:0,nrpn:1};q[a.startloopAddrsOffset]={min:-32768,max:32768,def:0,nrpn:1};q[a.endloopAddrsOffset]={min:-32768,max:32768,def:0,nrpn:1};q[a.startAddrsCoarseOffset]={min:0,max:32768,def:0,nrpn:1};q[a.modLfoToPitch]={min:-12e3,max:12e3,def:0,nrpn:2};q[a.vibLfoToPitch]={min:-12e3,max:12e3,def:0,nrpn:2};q[a.modEnvToPitch]={min:-12e3,max:12e3,def:0,nrpn:2};q[a.initialFilterFc]={min:1500,max:13500,def:13500,nrpn:2};q[a.initialFilterQ]={min:0,max:960,def:0,nrpn:1};q[a.modLfoToFilterFc]={min:-12e3,max:12e3,def:0,nrpn:2};q[a.vibLfoToFilterFc]={min:-12e3,max:12e3,def:0,nrpn:2};q[a.modEnvToFilterFc]={min:-12e3,max:12e3,def:0,nrpn:2};q[a.endAddrsCoarseOffset]={min:-32768,max:32768,def:0,nrpn:1};q[a.modLfoToVolume]={min:-960,max:960,def:0,nrpn:1};q[a.vibLfoToVolume]={min:-960,max:960,def:0,nrpn:1};q[a.chorusEffectsSend]={min:0,max:1e3,def:0,nrpn:1};q[a.reverbEffectsSend]={min:0,max:1e3,def:0,nrpn:1};q[a.pan]={min:-500,max:500,def:0,nrpn:1};q[a.delayModLFO]={min:-12e3,max:5e3,def:-12e3,nrpn:2};q[a.freqModLFO]={min:-16e3,max:4500,def:0,nrpn:4};q[a.delayVibLFO]={min:-12e3,max:5e3,def:-12e3,nrpn:2};q[a.freqVibLFO]={min:-16e3,max:4500,def:0,nrpn:4};q[a.delayModEnv]={min:-32768,max:5e3,def:-32768,nrpn:2};q[a.attackModEnv]={min:-32768,max:8e3,def:-32768,nrpn:2};q[a.holdModEnv]={min:-12e3,max:5e3,def:-12e3,nrpn:2};q[a.decayModEnv]={min:-12e3,max:8e3,def:-12e3,nrpn:2};q[a.sustainModEnv]={min:0,max:1e3,def:0,nrpn:1};q[a.releaseModEnv]={min:-7200,max:8e3,def:-12e3,nrpn:2};q[a.keyNumToModEnvHold]={min:-1200,max:1200,def:0,nrpn:1};q[a.keyNumToModEnvDecay]={min:-1200,max:1200,def:0,nrpn:1};q[a.delayVolEnv]={min:-12e3,max:5e3,def:-12e3,nrpn:2};q[a.attackVolEnv]={min:-12e3,max:8e3,def:-12e3,nrpn:2};q[a.holdVolEnv]={min:-12e3,max:5e3,def:-12e3,nrpn:2};q[a.decayVolEnv]={min:-12e3,max:8e3,def:-12e3,nrpn:2};q[a.sustainVolEnv]={min:0,max:1440,def:0,nrpn:1};q[a.releaseVolEnv]={min:-7200,max:8e3,def:-12e3,nrpn:2};q[a.keyNumToVolEnvHold]={min:-1200,max:1200,def:0,nrpn:1};q[a.keyNumToVolEnvDecay]={min:-1200,max:1200,def:0,nrpn:1};q[a.startloopAddrsCoarseOffset]={min:-32768,max:32768,def:0,nrpn:1};q[a.keyNum]={min:-1,max:127,def:-1,nrpn:1};q[a.velocity]={min:-1,max:127,def:-1,nrpn:1};q[a.initialAttenuation]={min:0,max:1440,def:0,nrpn:1};q[a.endloopAddrsCoarseOffset]={min:-32768,max:32768,def:0,nrpn:1};q[a.coarseTune]={min:-120,max:120,def:0,nrpn:1};q[a.fineTune]={min:-12700,max:12700,def:0,nrpn:1};q[a.scaleTuning]={min:0,max:1200,def:100,nrpn:1};q[a.exclusiveClass]={min:0,max:99999,def:0,nrpn:0};q[a.overridingRootKey]={min:-1,max:127,def:-1,nrpn:0};q[a.sampleModes]={min:0,max:3,def:0,nrpn:0};var _s=.01,Ae=100,ns=90,Fi=15e-6,he=class e{currentSampleTime=0;sampleRate;currentAttenuationDb=Ae;state=0;releaseStartDb=Ae;releaseStartTimeSamples=0;currentReleaseGain=1;attackDuration=0;decayDuration=0;releaseDuration=0;attenuation=0;attenuationTargetGain=0;attenuationTarget=0;sustainDbRelative=0;delayEnd=0;attackEnd=0;holdEnd=0;decayEnd=0;constructor(A,t){this.sampleRate=A,this.canEndOnSilentSustain=t/10>=ns}static startRelease(A){A.volumeEnvelope.releaseStartTimeSamples=A.volumeEnvelope.currentSampleTime,A.volumeEnvelope.currentReleaseGain=Ie(A.volumeEnvelope.currentAttenuationDb),e.recalculate(A)}static recalculate(A){let t=A.volumeEnvelope,n=C=>Math.max(0,Math.floor(ce(C)*t.sampleRate));t.attenuationTarget=Math.max(0,Math.min(A.modulatedGenerators[a.initialAttenuation],1440))/10,t.attenuationTargetGain=Ie(t.attenuationTarget),t.sustainDbRelative=Math.min(Ae,A.modulatedGenerators[a.sustainVolEnv]/10);let s=Math.min(Ae,t.sustainDbRelative);t.attackDuration=n(A.modulatedGenerators[a.attackVolEnv]);let o=A.modulatedGenerators[a.decayVolEnv],r=(60-A.targetKey)*A.modulatedGenerators[a.keyNumToVolEnvDecay],g=s/Ae;t.decayDuration=n(o+r)*g,t.releaseDuration=n(A.modulatedGenerators[a.releaseVolEnv]),t.delayEnd=n(A.modulatedGenerators[a.delayVolEnv]),t.attackEnd=t.attackDuration+t.delayEnd;let i=(60-A.targetKey)*A.modulatedGenerators[a.keyNumToVolEnvHold];if(t.holdEnd=n(A.modulatedGenerators[a.holdVolEnv]+i)+t.attackEnd,t.decayEnd=t.decayDuration+t.holdEnd,t.state===0&&t.attackEnd===0&&(t.state=2),A.isInRelease){let C=Math.max(0,Math.min(Ae,t.sustainDbRelative)),B=C/Ae;switch(t.decayDuration=n(o+r)*B,t.state){case 0:t.releaseStartDb=Ae;break;case 1:let c=1-(t.attackEnd-t.releaseStartTimeSamples)/t.attackDuration;t.releaseStartDb=20*Math.log10(c)*-1;break;case 2:t.releaseStartDb=0;break;case 3:t.releaseStartDb=(1-(t.decayEnd-t.releaseStartTimeSamples)/t.decayDuration)*C;break;case 4:t.releaseStartDb=C;break}t.releaseStartDb=Math.max(0,Math.min(t.releaseStartDb,Ae)),t.releaseStartDb>=ns&&(A.finished=!0),t.currentReleaseGain=Ie(t.releaseStartDb);let h=(Ae-t.releaseStartDb)/Ae;t.releaseDuration*=h}}static apply(A,t,n,s){let o=A.volumeEnvelope,r=n/10,g=s;if(A.isInRelease){let C=o.currentSampleTime-o.releaseStartTimeSamples;if(C>=o.releaseDuration){for(let h=0;h<t.length;h++)t[h]=0;A.finished=!0;return}let B=Ae-o.releaseStartDb;for(let h=0;h<t.length;h++){o.attenuation+=(o.attenuationTargetGain-o.attenuation)*g;let c=C/o.releaseDuration*B+o.releaseStartDb;o.currentReleaseGain=o.attenuation*Ie(c+r),t[h]*=o.currentReleaseGain,o.currentSampleTime++,C++}o.currentReleaseGain<=Fi&&(A.finished=!0);return}let i=0;switch(o.state){case 0:for(;o.currentSampleTime<o.delayEnd;)if(o.currentAttenuationDb=Ae,t[i]=0,o.currentSampleTime++,++i>=t.length)return;o.state++;case 1:for(;o.currentSampleTime<o.attackEnd;){o.attenuation+=(o.attenuationTargetGain-o.attenuation)*g;let C=1-(o.attackEnd-o.currentSampleTime)/o.attackDuration;if(t[i]*=C*o.attenuation*Ie(r),o.currentAttenuationDb=0,o.currentSampleTime++,++i>=t.length)return}o.state++;case 2:for(;o.currentSampleTime<o.holdEnd;)if(o.attenuation+=(o.attenuationTargetGain-o.attenuation)*g,t[i]*=o.attenuation*Ie(r),o.currentAttenuationDb=0,o.currentSampleTime++,++i>=t.length)return;o.state++;case 3:for(;o.currentSampleTime<o.decayEnd;)if(o.attenuation+=(o.attenuationTargetGain-o.attenuation)*g,o.currentAttenuationDb=(1-(o.decayEnd-o.currentSampleTime)/o.decayDuration)*o.sustainDbRelative,t[i]*=o.attenuation*Ie(o.currentAttenuationDb+r),o.currentSampleTime++,++i>=t.length)return;o.state++;case 4:for(o.canEndOnSilentSustain&&o.sustainDbRelative>=ns&&(A.finished=!0);;)if(o.attenuation+=(o.attenuationTargetGain-o.attenuation)*g,t[i]*=o.attenuation*Ie(o.sustainDbRelative+r),o.currentAttenuationDb=o.sustainDbRelative,o.currentSampleTime++,++i>=t.length)return}}};var b=class extends Uint8Array{currentIndex=0;constructor(A){super(A)}slice(A,t){let n=super.slice(A,t);return n.currentIndex=0,n}};function kA(e){let A=e.reduce((s,o)=>s+o.length,0),t=new b(A),n=0;for(let s of e)t.set(s,n),n+=s.length;return t}var OA=class{ticks;messageStatusByte;messageData;constructor(A,t,n){this.ticks=A,this.messageStatusByte=t,this.messageData=n}};function zs(e){let A=e&240,t=e&15,n=t;switch(A){case 128:case 144:case 160:case 176:case 192:case 208:case 224:break;case 240:switch(t){case 0:n=-3;break;case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 13:case 14:n=-1;break;case 15:n=-2;break}break;default:n=-1}return n}var F={noteOff:128,noteOn:144,polyPressure:160,controllerChange:176,programChange:192,channelPressure:208,pitchBend:224,systemExclusive:240,timecode:241,songPosition:242,songSelect:243,tuneRequest:246,clock:248,start:250,continue:251,stop:252,activeSensing:254,reset:255,sequenceNumber:0,text:1,copyright:2,trackName:3,instrumentName:4,lyric:5,marker:6,cuePoint:7,programName:8,midiChannelPrefix:32,midiPort:33,endOfTrack:47,setTempo:81,smpteOffset:84,timeSignature:88,keySignature:89,sequenceSpecific:127};function dt(e){let A=e&240,t=e&15,n=-1,s=e;return A>=128&&A<=224&&(n=t,s=A),{status:s,channel:n}}var p={bankSelect:0,modulationWheel:1,breathController:2,footController:4,portamentoTime:5,dataEntryMsb:6,mainVolume:7,balance:8,pan:10,expressionController:11,effectControl1:12,effectControl2:13,generalPurposeController1:16,generalPurposeController2:17,generalPurposeController3:18,generalPurposeController4:19,lsbForControl0BankSelect:32,lsbForControl1ModulationWheel:33,lsbForControl2BreathController:34,lsbForControl4FootController:36,lsbForControl5PortamentoTime:37,lsbForControl6DataEntry:38,lsbForControl7MainVolume:39,lsbForControl8Balance:40,lsbForControl10Pan:42,lsbForControl11ExpressionController:43,lsbForControl12EffectControl1:44,lsbForControl13EffectControl2:45,sustainPedal:64,portamentoOnOff:65,sostenutoPedal:66,softPedal:67,legatoFootswitch:68,hold2Pedal:69,soundVariation:70,filterResonance:71,releaseTime:72,attackTime:73,brightness:74,decayTime:75,vibratoRate:76,vibratoDepth:77,vibratoDelay:78,soundController10:79,generalPurposeController5:80,generalPurposeController6:81,generalPurposeController7:82,generalPurposeController8:83,portamentoControl:84,reverbDepth:91,tremoloDepth:92,chorusDepth:93,detuneDepth:94,phaserDepth:95,dataIncrement:96,dataDecrement:97,NRPNLsb:98,NRPNMsb:99,RPNLsb:100,RPNMsb:101,allSoundOff:120,resetAllControllers:121,localControlOnOff:122,allNotesOff:123,omniModeOff:124,omniModeOn:125,monoModeOn:126,polyModeOn:127},js={8:2,9:2,10:2,11:2,12:1,13:1,14:2};var Cn=64,$s=121;function Ao(e){return e==="gm2"?$s:0}function ee(e){return e===120||e===126||e===127}function In(e){return ee(e)||e===Cn||e===$s}function ft(e,A,t,n,s,o){let r=e,g=0;if(n)GA(t)?In(A)||(r=A):t==="gm2"&&(r=A);else{let i=!0;switch(t){case"gm":y(`%cIgnoring the Bank Select (${A}), as the synth is in GM mode.`,I.info),i=!1;break;case"xg":i=In(A),ee(A)?g=2:o%16!==9&&(g=1);break;case"gm2":A===120?g=2:o%16!==9&&(g=1)}s&&(A=128),A===128&&!s&&(A=e),i&&(r=A)}return{newBank:r,drumsStatus:g}}function ut(e,A,t,n){return n?t?ee(e)?e:128:In(e)||A===0&&e!==0?e:In(A)?0:A:t?128:e}function GA(e){return e==="gm2"||e==="xg"}var JA={mainVolume:0,masterPan:1,voicesCap:2,interpolationType:3,midiSystem:4};function eo(e,A){switch(e){case JA.masterPan:let t=A;this.pan=t,t=t/2+.5,this.panLeft=1-t,this.panRight=t;break;case JA.mainVolume:this.masterGain=A*ss,this.setMasterParameter(JA.masterPan,this.pan);break;case JA.voicesCap:this.voiceCap=A;break;case JA.interpolationType:this.interpolationType=A;break;case JA.midiSystem:this.setSystem(A)}}function AA(e,A,t=void 0,n=!0){if(t){let s=e.slice(e.currentIndex,e.currentIndex+A);return e.currentIndex+=A,new TextDecoder(t.replace(/[^\x20-\x7E]/g,"")).decode(s.buffer)}else{let s=!1,o="";for(let r=0;r<A;r++){let g=e[e.currentIndex++];if(!s){if((g<32||g>127)&&g!==10){if(n){s=!0;continue}else if(g===0){s=!0;continue}}o+=String.fromCharCode(g)}}return o}}function VA(e,A=!1){let t=e.length;A&&(t=t+1);let n=new b(t);return bA(n,e),n}function bA(e,A,t=0){t>0&&A.length>t&&(A=A.slice(0,t));for(let n=0;n<A.length;n++)e[e.currentIndex++]=A.charCodeAt(n);if(t>A.length)for(let n=0;n<t-A.length;n++)e[e.currentIndex++]=0;return e}var At={linear:0,nearestNeighbor:1,fourthOrder:2},Kt={SoundCanvasText:0,XGText:1,SoundCanvasDotDisplay:2};var et=10,X={noController:0,noteOnVelocity:2,noteOnKeyNum:3,polyPressure:10,channelPressure:13,pitchWheel:14,pitchWheelRange:16,link:127},DA={linear:0,concave:1,convex:2,switch:3},EA=class e{currentValue=0;modulatorDestination;transformAmount;transformType;isEffectModulator=!1;sourcePolarity;sourceDirection;sourceUsesCC;sourceIndex;sourceCurveType;secSrcPolarity;secSrcDirection;secSrcUsesCC;secSrcIndex;secSrcCurveType;constructor(A,t,n,s,o,r,g,i,C,B,h,c,l){this.sourcePolarity=s,this.sourceDirection=o,this.sourceUsesCC=n,this.sourceIndex=A,this.sourceCurveType=t,this.secSrcPolarity=C,this.secSrcDirection=B,this.secSrcUsesCC=i,this.secSrcIndex=r,this.secSrcCurveType=g,this.modulatorDestination=h,this.transformAmount=c,this.transformType=l,this.modulatorDestination>Ws&&(this.modulatorDestination=a.INVALID)}static copy(A){return new e(A.sourceIndex,A.sourceCurveType,A.sourceUsesCC,A.sourcePolarity,A.sourceDirection,A.secSrcIndex,A.secSrcCurveType,A.secSrcUsesCC,A.secSrcPolarity,A.secSrcDirection,A.modulatorDestination,A.transformAmount,A.transformType)}static isIdentical(A,t,n=!1){return A.sourceIndex===t.sourceIndex&&A.sourceUsesCC===t.sourceUsesCC&&A.sourcePolarity===t.sourcePolarity&&A.sourceDirection===t.sourceDirection&&A.sourceCurveType===t.sourceCurveType&&A.secSrcIndex===t.secSrcIndex&&A.secSrcUsesCC===t.secSrcUsesCC&&A.secSrcPolarity===t.secSrcPolarity&&A.secSrcDirection===t.secSrcDirection&&A.secSrcCurveType===t.secSrcCurveType&&A.modulatorDestination===t.modulatorDestination&&A.transformType===t.transformType&&(!n||A.transformAmount===t.transformAmount)}static debugString(A){function t(o,r){return Object.keys(o).find(g=>o[g]===r)}let n=t(DA,A.sourceCurveType);n+=A.sourcePolarity===0?" unipolar ":" bipolar ",n+=A.sourceDirection===0?"forwards ":"backwards ",A.sourceUsesCC?n+=t(p,A.sourceIndex):n+=t(X,A.sourceIndex);let s=t(DA,A.secSrcCurveType);return s+=A.secSrcPolarity===0?" unipolar ":" bipolar ",s+=A.secSrcDirection===0?"forwards ":"backwards ",A.secSrcUsesCC?s+=t(p,A.secSrcIndex):s+=t(X,A.secSrcIndex),`Modulator:
1
+ var Os=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(A,t)=>(typeof require<"u"?require:A)[t]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var Js=!1,Ps=!0,rn=!1,Si=!0;function jn(e,A,t,n){Js=e,Ps=A,rn=t,Si=n}function y(...e){Js&&console.info(...e)}function O(...e){Ps&&console.warn(...e)}function Ie(...e){rn&&console.group(...e)}function QA(...e){rn&&console.groupCollapsed(...e)}function K(){rn&&console.groupEnd()}function $n(e){e=Math.floor(e);let A=Math.floor(e/60),t=Math.round(e-A*60);return{minutes:A,seconds:t,time:`${A.toString().padStart(2,"0")}:${t.toString().padStart(2,"0")}`}}function Ks(e){return e.trim().replaceAll(".mid","").replaceAll(".kar","").replaceAll(".rmi","").replaceAll(".xmf","").replaceAll(".mxmf","").replaceAll("_"," ").trim()}function YA(e){let A="";for(let t=0;t<e.length;t++){let n=e[t].toString(16).padStart(2,"0").toUpperCase();A+=n,A+=" "}return A}function qs(e){let A=[];for(let t of e)(t===47||t===92)&&(t=10),A.push(t);return new Uint8Array(A)}var I={warn:"color: orange;",unrecognized:"color: red;",info:"color: aqua;",recognized:"color: lime",value:"color: yellow; background-color: black;"};function Di(e,A){let t=0;return e.drumChannel&&(t+=5),A.isInRelease&&(t-=5),t+=A.velocity/25,t-=A.volumeEnvelope.state,A.isInRelease&&(t-=5),t-=A.volumeEnvelope.currentAttenuationDb/50,t}function Vs(e){let A=[];for(let n of this.midiAudioChannels)for(let s of n.voices)if(!s.finished){let o=Di(n,s);A.push({channel:n,voice:s,priority:o})}A.sort((n,s)=>n.priority-s.priority);let t=A.slice(0,e);for(let{channel:n,voice:s}of t){let o=n.voices.indexOf(s);o>-1&&n.voices.splice(o,1)}}var Yt="gs";var At=`SPESSASYNTH_EMBEDDED_BANK_${Math.random()}`,an=32767;var ye=ye!==void 0?ye:{},Zs=!1,Xs;ye.isInitialized=new Promise(e=>Xs=e);var ki=function(e){var A,t,n,s,o,r,g,i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",C="",B=0;e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");do s=i.indexOf(e.charAt(B++)),o=i.indexOf(e.charAt(B++)),r=i.indexOf(e.charAt(B++)),g=i.indexOf(e.charAt(B++)),A=s<<2|o>>4,t=(15&o)<<4|r>>2,n=(3&r)<<6|g,C+=String.fromCharCode(A),r!==64&&(C+=String.fromCharCode(t)),g!==64&&(C+=String.fromCharCode(n));while(B<e.length);return C};(function(){var e,A,t,n,s,o,r,g,i,C,B,h,c,l,u,f,S,G,D,M,v,R,E=E!==void 0?E:{};E.wasmBinary=Uint8Array.from(ki("AGFzbQEAAAABpQEYYAJ/fwF/YAF/AGAAAX9gBH9/f38AYAAAYAN/f38Bf2ABfwF/YAJ/fwBgBn9/f39/fwF/YAR/f39/AX9gBX9/f39/AX9gB39/f39/f38Bf2AGf39/f39/AGAIf39/f39/f38Bf2AFf39/f38AYAd/f39/f39/AGADf39/AGABfwF9YAF9AX1gAnx/AXxgAnx/AX9gA3x8fwF8YAJ8fAF8YAF8AXwCngIPA2VudgZtZW1vcnkCAIACA2VudgV0YWJsZQFwAQQEA2Vudgl0YWJsZUJhc2UDfwADZW52DkRZTkFNSUNUT1BfUFRSA38AA2VudghTVEFDS1RPUAN/AANlbnYJU1RBQ0tfTUFYA38ABmdsb2JhbAhJbmZpbml0eQN8AANlbnYFYWJvcnQAAQNlbnYNZW5sYXJnZU1lbW9yeQACA2Vudg5nZXRUb3RhbE1lbW9yeQACA2VudhdhYm9ydE9uQ2Fubm90R3Jvd01lbW9yeQACA2Vudg5fX19hc3NlcnRfZmFpbAADA2VudgtfX19zZXRFcnJObwABA2VudgZfYWJvcnQABANlbnYWX2Vtc2NyaXB0ZW5fbWVtY3B5X2JpZwAFA3d2BgYCAQcHAQIBAQcBCAcFAAkGCQoHBgYGBgEFBgIBBgYKAAgLAAYGBgYGBgYBAAoMDAMGBQANCAoJAAwODA8OAQAGBgcEABAJEAERAAADBQwAAAMHBxIGAQAABwIFEwMOBw8HBgYQFAoVExYXFxcXFgQFBQYFAAYkB38BIwELfwEjAgt/ASMDC38BQQALfwFBAAt8ASMEC38BQQALB9MCFRBfX2dyb3dXYXNtTWVtb3J5AAgRX19fZXJybm9fbG9jYXRpb24AYwVfZnJlZQBfB19tYWxsb2MAXgdfbWVtY3B5AHkHX21lbXNldAB6BV9zYnJrAHsXX3N0Yl92b3JiaXNfanNfY2hhbm5lbHMAJhRfc3RiX3ZvcmJpc19qc19jbG9zZQAlFV9zdGJfdm9yYmlzX2pzX2RlY29kZQAoE19zdGJfdm9yYmlzX2pzX29wZW4AJBpfc3RiX3ZvcmJpc19qc19zYW1wbGVfcmF0ZQAnC2R5bkNhbGxfaWlpAHwTZXN0YWJsaXNoU3RhY2tTcGFjZQAMC2dldFRlbXBSZXQwAA8LcnVuUG9zdFNldHMAeAtzZXRUZW1wUmV0MAAOCHNldFRocmV3AA0Kc3RhY2tBbGxvYwAJDHN0YWNrUmVzdG9yZQALCXN0YWNrU2F2ZQAKCQoBACMACwR9VFl9Csb2A3YGACAAQAALGwEBfyMGIQEjBiAAaiQGIwZBD2pBcHEkBiABCwQAIwYLBgAgACQGCwoAIAAkBiABJAcLEAAjCEUEQCAAJAggASQJCwsGACAAJAsLBAAjCwsRACAABEAgABARIAAgABASCwvvBwEKfyAAQYADaiEHIAcoAgAhBQJAIAUEQCAAQfwBaiEEIAQoAgAhASABQQBKBEAgAEHwAGohCANAIAUgAkEYbGpBEGohCSAJKAIAIQEgAQRAIAgoAgAhAyAFIAJBGGxqQQ1qIQogCi0AACEGIAZB/wFxIQYgAyAGQbAQbGpBBGohAyADKAIAIQMgA0EASgRAQQAhAwNAIAEgA0ECdGohASABKAIAIQEgACABEBIgA0EBaiEDIAgoAgAhASAKLQAAIQYgBkH/AXEhBiABIAZBsBBsakEEaiEBIAEoAgAhBiAJKAIAIQEgAyAGSA0ACwsgACABEBILIAUgAkEYbGpBFGohASABKAIAIQEgACABEBIgAkEBaiECIAQoAgAhASACIAFODQMgBygCACEFDAAACwALCwsgAEHwAGohAyADKAIAIQEgAQRAIABB7ABqIQUgBSgCACECIAJBAEoEQEEAIQIDQAJAIAEgAkGwEGxqQQhqIQQgBCgCACEEIAAgBBASIAEgAkGwEGxqQRxqIQQgBCgCACEEIAAgBBASIAEgAkGwEGxqQSBqIQQgBCgCACEEIAAgBBASIAEgAkGwEGxqQaQQaiEEIAQoAgAhBCAAIAQQEiABIAJBsBBsakGoEGohASABKAIAIQEgAUUhBCABQXxqIQFBACABIAQbIQEgACABEBIgAkEBaiECIAUoAgAhASACIAFODQAgAygCACEBDAELCyADKAIAIQELIAAgARASCyAAQfgBaiEBIAEoAgAhASAAIAEQEiAHKAIAIQEgACABEBIgAEGIA2ohAyADKAIAIQEgAQRAIABBhANqIQUgBSgCACECIAJBAEoEQEEAIQIDQCABIAJBKGxqQQRqIQEgASgCACEBIAAgARASIAJBAWohAiAFKAIAIQcgAygCACEBIAIgB0gNAAsLIAAgARASCyAAQQRqIQIgAigCACEBIAFBAEoEQEEAIQEDQCAAQZQGaiABQQJ0aiEDIAMoAgAhAyAAIAMQEiAAQZQHaiABQQJ0aiEDIAMoAgAhAyAAIAMQEiAAQdgHaiABQQJ0aiEDIAMoAgAhAyAAIAMQEiABQQFqIQEgAigCACEDIAEgA0ghAyABQRBJIQUgBSADcQ0ACwtBACEBA0AgAEGgCGogAUECdGohAiACKAIAIQIgACACEBIgAEGoCGogAUECdGohAiACKAIAIQIgACACEBIgAEGwCGogAUECdGohAiACKAIAIQIgACACEBIgAEG4CGogAUECdGohAiACKAIAIQIgACACEBIgAEHACGogAUECdGohAiACKAIAIQIgACACEBIgAUEBaiEBIAFBAkcNAAsLGwAgAEHEAGohACAAKAIAIQAgAEUEQCABEF8LC3wBAX8gAEHUB2ohASABQQA2AgAgAEGAC2ohASABQQA2AgAgAEH4CmohASABQQA2AgAgAEGcCGohASABQQA2AgAgAEHVCmohASABQQA6AAAgAEH8CmohASABQQA2AgAgAEHUC2ohASABQQA2AgAgAEHYC2ohACAAQQA2AgAL8AQBB38jBiELIwZBEGokBiALQQhqIQcgC0EEaiEKIAshCCAAQSRqIQYgBiwAACEGAn8gBgR/IABBgAtqIQYgBigCACEGIAZBf0oEQCAFQQA2AgAgACABIAIQFgwCCyAAQRRqIQYgBiABNgIAIAEgAmohAiAAQRxqIQkgCSACNgIAIABB2ABqIQIgAkEANgIAIABBABAXIQkgCUUEQCAFQQA2AgBBAAwCCyAAIAcgCCAKEBghCSAJBEAgBygCACECIAgoAgAhCSAKKAIAIQggACACIAkgCBAaIQogByAKNgIAIABBBGohAiACKAIAIQggCEEASgRAQQAhAgNAIABBlAZqIAJBAnRqIQcgBygCACEHIAcgCUECdGohByAAQdQGaiACQQJ0aiEMIAwgBzYCACACQQFqIQIgAiAISA0ACwsgAwRAIAMgCDYCAAsgBSAKNgIAIABB1AZqIQAgBCAANgIAIAYoAgAhACAAIAFrDAILAkACQAJAAkACQCACKAIAIgNBIGsOBAECAgACCyACQQA2AgAgAEHUAGohAiAAEBkhAwJAIANBf0cEQANAIAIoAgAhAyADDQIgABAZIQMgA0F/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ACECIABBmAhqIQYgBigCACEHIAUgA2shCSAJIAdqIQkgAiAJSSEJIAIgB0khDSACIAdrIQJBACACIA0bIQIgAiADaiECIAIgBUohByAFIAIgBxshAiAJBEAgASACNgIAIAYoAgAhACAAIAJqIQAgBiAANgIAQQEMBgsLCyAAQfQKaiECIAIoAgAhAiADIB9rIQYgBiACaiEGIABBmAhqIQIgAiAGNgIAIAhBATYCAAwBBSAAQZgIaiECIAYNAQsMAQsgBCADayEDIAIoAgAhBCADIARqIQMgAiADNgIACyATKAIAIQIgAgRAIABByABqIQIgAigCACECIABB0ABqIQAgACgCACEAIAIgAEcEQEHTE0HEE0HkGkHnFBAECwsgASAFNgIAQQELIQAgHCQGIAALqAIBBX8gAEHoCmohBSAFKAIAIQICQCACQQBIBEBBACEABSACIAFIBEAgAUEYSgRAIABBGBAsIQIgAUFoaiEBIAAgARAsIQAgAEEYdCEAIAAgAmohACAADwsgAkUEQCAAQeQKaiECIAJBADYCAAsgAEHkCmohAwJAAkACQANAIAAQLiECIAJBf0YNASAFKAIAIQQgAiAEdCECIAMoAgAhBiAGIAJqIQIgAyACNgIAIAUgBEEIaiICNgIAIAIgAUgNAAwCAAsACyAFQX82AgBBACEADAQLIARBeEgEQEEAIQAMBAsLCyAAQeQKaiEEIAQoAgAhA0EBIAF0IQAgAEF/aiEAIAMgAHEhACADIAF2IQMgBCADNgIAIAIgAWshASAFIAE2AgALCyAAC40CAAJAIABBAEgEf0EABSAAQYCAAUgEQCAAQRBIBEAgAEGACGohACAALAAAIQAMAwsgAEGABEgEQCAAQQV2IQAgAEGACGohACAALAAAIQAgAEEFaiEABSAAQQp2IQAgAEGACGohACAALAAAIQAgAEEKaiEACwwCCyAAQYCAgAhIBH8gAEGAgCBIBH8gAEEPdiEAIABBgAhqIQAgACwAACEAIABBD2oFIABBFHYhACAAQYAIaiEAIAAsAAAhACAAQRRqCwUgAEGAgICAAkgEfyAAQRl2IQAgAEGACGohACAALAAAIQAgAEEZagUgAEEediEAIABBgAhqIQAgACwAACEAIABBHmoLCwshAAsgAAuiAQEDfyAAQdQKaiECIAIsAAAhAQJAAkAgAQ0AIABB3ApqIQEgASgCACEBIAEEQEF/IQMFIAAQLyEBIAEEQCACLAAAIQEgAQ0CQaEUQcQTQfYLQbUUEAQFQX8hAwsLDAELIAFBf2pBGHRBGHUhASACIAE6AAAgAEHsCmohASABKAIAIQIgAkEBaiECIAEgAjYCACAAEDAhACAAQf8BcSEDCyADC6wCAQd/IABB3ApqIQIgAigCACEBAkAgAUUEQCAAQdgKaiEEIAQoAgAhASABQX9GBEAgAEHQCGohASABKAIAIQEgAUF/aiEBIABB4ApqIQMgAyABNgIAIAAQMSEBIAFFBEAgAkEBNgIADAMLIABB0wpqIQEgASwAACEBIAFBAXEhASABBH8gBCgCAAUgAEEgEBUMAwshAQsgAUEBaiEHIAQgBzYCACAAQdQIaiABaiEDIAMsAAAhBiAGQf8BcSEDIAZBf0cEQCACQQE2AgAgAEHgCmohAiACIAE2AgALIABB0AhqIQEgASgCACEBIAcgAU4EQCAEQX82AgALIABB1ApqIQAgACwAACEBIAEEQEHFFEHEE0HoC0HaFBAEBSAAIAY6AAAgAyEFCwsLIAULUQEDfyAAQRRqIQMgAygCACEBIABBHGohAiACKAIAIQIgASACSQR/IAFBAWohACADIAA2AgAgASwAAAUgAEHUAGohACAAQQE2AgBBAAshACAACyABAX8gABAyIQEgAQR/IAAQMwUgAEEeEBVBAAshACAAC2ABAX8gABAwIQEgAUH/AXFBzwBGBEAgABAwIQEgAUH/AXFB5wBGBEAgABAwIQEgAUH/AXFB5wBGBEAgABAwIQAgAEH/AXFB0wBGIQAFQQAhAAsFQQAhAAsFQQAhAAsgAAvZAwEGfyAAEDAhAQJ/IAFB/wFxBH8gAEEfEBVBAAUgABAwIQEgAEHTCmohAiACIAE6AAAgABAjIQUgABAjIQIgABAjGiAAECMhASAAQcwIaiEDIAMgATYCACAAECMaIAAQMCEBIAFB/wFxIQEgAEHQCGohAyADIAE2AgAgAEHUCGohBCAAIAQgARAiIQEgAUUEQCAAQQoQFUEADAILIABB8ApqIQQgBEF+NgIAIAIgBXEhAQJAIAFBf0cEQCADKAIAIQEgAUEASgRAA0ACQCABQX9qIQIgAEHUCGogAmohBiAGLAAAIQYgBkF/Rw0AIAFBAUwNBCACIQEMAQsLIAQgAjYCACAAQfQKaiEBIAEgBTYCAAsLCyAAQdUKaiEBIAEsAAAhASABBEAgAygCACEDIANBAEoEf0EAIQJBACEBA0AgAEHUCGogAWohBCAELQAAIQQgBEH/AXEhBCACIARqIQIgAUEBaiEBIAEgA0gNAAsgAkEbagVBGwshASAAQShqIQIgAigCACECIAEgA2ohASABIAJqIQEgAEEsaiEDIAMgAjYCACAAQTBqIQIgAiABNgIAIABBNGohASABIAU2AgALIABB2ApqIQAgAEEANgIAQQELCyEAIAALowEBB38gAEHoCmohAyADKAIAIQECQCABQRlIBEAgAEHkCmohBCABRQRAIARBADYCAAsgAEHUCmohBSAAQdwKaiEGA0AgBigCACEBIAEEQCAFLAAAIQEgAUUNAwsgABAuIQIgAkF/Rg0CIAMoAgAhASACIAF0IQIgBCgCACEHIAcgAmohAiAEIAI2AgAgAUEIaiECIAMgAjYCACABQRFIDQALCwsLrQUBCX8gABA0IAFBIGohAiACKAIAIQUCQAJAIAVFIgNFDQAgAUGkEGohAiACKAIAIQIgAg0AQX8hAQwBCyABQQRqIQIgAigCACECAkACQCACQQhKBEAgAUGkEGohAyADKAIAIQMgAw0BBSADDQELDAELIABB5ApqIQggCCgCACEJIAkQOiEHIAFBrBBqIQIgAigCACECIAJBAUoEQCABQaQQaigCACEKQQAhAwNAIAJBAXYhBSAFIANqIQQgCiAEQQJ0aiEGIAYoAgAhBiAGIAdLIQYgAiAFayECIAMgBCAGGyEDIAUgAiAGGyECIAJBAUoNAAsFQQAhAwsgAUEXaiECIAIsAAAhAiACRQRAIAFBqBBqIQIgAigCACECIAIgA0ECdGohAiACKAIAIQMLIAFBCGohASABKAIAIQEgASADaiEBIAEtAAAhASABQf8BcSEBIABB6ApqIQIgAigCACEAIAAgAUgEf0EAIQBBfwUgACABayEAIAkgAXYhASAIIAE2AgAgAwshASACIAA2AgAMAQsgAUEXaiEDIAMsAAAhAyADBEBBgRVBxBNB6gxBjBUQBAsCQCACQQBKBEAgASgCCCEIIABB5ApqIQlBACEBA0ACQCAIIAFqIQMgAywAACEEIARB/wFxIQMgBEF/RwRAIAUgAUECdGohBCAEKAIAIQYgCSgCACEEQQEgA3QhByAHQX9qIQcgBCAHcSEHIAYgB0YNAQsgAUEBaiEBIAEgAkgNAQwDCwsgAEHoCmohACAAKAIAIQIgAiADSARAIABBADYCAEF/IQEFIAggAWohBSAEIAN2IQMgCSADNgIAIAUtAAAhAyADQf8BcSEDIAIgA2shAiAAIAI2AgALDAILCyAAQRUQFSAAQegKaiEAIABBADYCAEF/IQELIAELXgECfyAEIANrIQQgAiABayECIARBf0ohBUEAIARrIQYgBCAGIAUbIQUgACABayEAIAUgAGwhACAAIAJtIQAgBEEASCEBQQAgAGshAiACIAAgARshACAAIANqIQAgAAv7GgEcfyMGIRwjBkEQaiQGIBxBBGohCSAcIRIgAEGAA2ohCiAKKAIAIQ0gAEGAAmogBEEBdGohCiAKLgEAIQogCkH//wNxIRkgDSAEQRhsakENaiEaIBotAAAhDiAOQf8BcSEOIABB8ABqIRUgFSgCACEQIBAgDkGwEGxqIQ4gDigCACEYIApBAkYhDCADIAx0IQogDSAEQRhsaiEWIBYoAgAhDiAOIApJIRAgDiAKIBAbIRAgDSAEQRhsakEEaiEOIA4oAgAhDiAOIApJIRQgDiAKIBQbIQogCiAQayEKIA0gBEEYbGpBCGohFCAUKAIAIQ4gCiAObiEQIABB0ABqIR4gHigCACEfIABBxABqIQogCigCACEKIApFIQ4gAEEEaiETIBMoAgAhCiAQQQJ0IQYgBkEEaiEHIAogB2whByAOBEAjBiEOIwYgB0EPakFwcWokBgUgACAHEDwhDiATKAIAIQoLIA4gCiAGEDsaIAJBAEoiBgRAIANBAnQhE0EAIQoDQCAFIApqIQcgBywAACEHIAdFBEAgASAKQQJ0aiEHIAcoAgAhByAHQQAgExB6GgsgCkEBaiEKIAogAkcNAAsLIAJBAUchCgJAIAogDHEEQAJAIAYEQEEAIQoDQCAFIApqIQwgDCwAACEMIAxFDQIgCkEBaiEKIAogAkgNAAsFQQAhCgsLIAogAkcEQCAQQQBKIREgAEHoCmohDCAYQQBKIQ8gAEHkCmohEyANIARBGGxqQRRqIRkgDSAEQRhsakEQaiEbQQAhCgJAA0ACQAJAAkACQCACQQFrDgIBAAILIBEEQCAKRSEXQQAhBEEAIQ0DQCAWKAIAIQUgFCgCACEGIAYgBGwhBiAGIAVqIQUgBUEBcSEGIAkgBjYCACAFQQF1IQUgEiAFNgIAIBcEQCAVKAIAIQYgGi0AACEFIAVB/wFxIQcgBiAHQbAQbGohCyAMKAIAIQUgBUEKSARAIAAQNAsgEygCACEIIAhB/wdxIQUgBiAHQbAQbGpBJGogBUEBdGohBSAFLgEAIQUgBUF/SgRAIAYgB0GwEGxqQQhqIQsgCygCACELIAsgBWohCyALLQAAIQsgC0H/AXEhCyAIIAt2IQggEyAINgIAIAwoAgAhCCAIIAtrIQggCEEASCELQQAgCCALGyEIQX8gBSALGyEFIAwgCDYCAAUgACALEDUhBQsgBiAHQbAQbGpBF2ohCCAILAAAIQggCARAIAYgB0GwEGxqQagQaiEGIAYoAgAhBiAGIAVBAnRqIQUgBSgCACEFCyAFQX9GDQcgGygCACEGIAYgBUECdGohBSAFKAIAIQUgDigCACEGIAYgDUECdGohBiAGIAU2AgALIAQgEEghBSAFIA9xBEBBACEFA0AgFCgCACEGIA4oAgAhByAHIA1BAnRqIQcgBygCACEHIAcgBWohByAHLQAAIQcgB0H/AXEhByAZKAIAIQggCCAHQQR0aiAKQQF0aiEHIAcuAQAhByAHQX9KBEAgFSgCACEIIAggB0GwEGxqIQcgACAHIAFBAiAJIBIgAyAGED0hBiAGRQ0JBSAWKAIAIQcgBiAEbCEIIAggBmohBiAGIAdqIQYgBkEBcSEHIAkgBzYCACAGQQF1IQYgEiAGNgIACyAFQQFqIQUgBEEBaiEEIAUgGEghBiAEIBBIIQcgByAGcQ0ACwsgDUEBaiENIAQgEEgNAAsLDAILIBEEQCAKRSEXQQAhDUEAIQQDQCAWKAIAIQUgFCgCACEGIAYgBGwhBiAGIAVqIQUgCUEANgIAIBIgBTYCACAXBEAgFSgCACEGIBotAAAhBSAFQf8BcSEHIAYgB0GwEGxqIQsgDCgCACEFIAVBCkgEQCAAEDQLIBMoAgAhCCAIQf8HcSEFIAYgB0GwEGxqQSRqIAVBAXRqIQUgBS4BACEFIAVBf0oEQCAGIAdBsBBsakEIaiELIAsoAgAhCyALIAVqIQsgCy0AACELIAtB/wFxIQsgCCALdiEIIBMgCDYCACAMKAIAIQggCCALayEIIAhBAEghC0EAIAggCxshCEF/IAUgCxshBSAMIAg2AgAFIAAgCxA1IQULIAYgB0GwEGxqQRdqIQggCCwAACEIIAgEQCAGIAdBsBBsakGoEGohBiAGKAIAIQYgBiAFQQJ0aiEFIAUoAgAhBQsgBUF/Rg0GIBsoAgAhBiAGIAVBAnRqIQUgBSgCACEFIA4oAgAhBiAGIA1BAnRqIQYgBiAFNgIACyAEIBBIIQUgBSAPcQRAQQAhBQNAIBQoAgAhBiAOKAIAIQcgByANQQJ0aiEHIAcoAgAhByAHIAVqIQcgBy0AACEHIAdB/wFxIQcgGSgCACEIIAggB0EEdGogCkEBdGohByAHLgEAIQcgB0F/SgRAIBUoAgAhCCAIIAdBsBBsaiEHIAAgByABQQEgCSASIAMgBhA9IQYgBkUNCAUgFigCACEHIAYgBGwhCCAIIAZqIQYgBiAHaiEGIAlBADYCACASIAY2AgALIAVBAWohBSAEQQFqIQQgBSAYSCEGIAQgEEghByAHIAZxDQALCyANQQFqIQ0gBCAQSA0ACwsMAQsgEQRAIApFIRdBACENQQAhBANAIBYoAgAhBSAUKAIAIQYgBiAEbCEGIAYgBWohBSAFIAUgAm0iBSACbGshBiAJIAY2AgAgEiAFNgIAIBcEQCAVKAIAIQYgGi0AACEFIAVB/wFxIQcgBiAHQbAQbGohCyAMKAIAIQUgBUEKSARAIAAQNAsgEygCACEIIAhB/wdxIQUgBiAHQbAQbGpBJGogBUEBdGohBSAFLgEAIQUgBUF/SgRAIAYgB0GwEGxqQQhqIQsgCygCACELIAsgBWohCyALLQAAIQsgC0H/AXEhCyAIIAt2IQggEyAINgIAIAwoAgAhCCAIIAtrIQggCEEASCELQQAgCCALGyEIQX8gBSALGyEFIAwgCDYCAAUgACALEDUhBQsgBiAHQbAQbGpBF2ohCCAILAAAIQggCARAIAYgB0GwEGxqQagQaiEGIAYoAgAhBiAGIAVBAnRqIQUgBSgCACEFCyAFQX9GDQUgGygCACEGIAYgBUECdGohBSAFKAIAIQUgDigCACEGIAYgDUECdGohBiAGIAU2AgALIAQgEEghBSAFIA9xBEBBACEFA0AgFCgCACEGIA4oAgAhByAHIA1BAnRqIQcgBygCACEHIAcgBWohByAHLQAAIQcgB0H/AXEhByAZKAIAIQggCCAHQQR0aiAKQQF0aiEHIAcuAQAhByAHQX9KBEAgFSgCACEIIAggB0GwEGxqIQcgACAHIAEgAiAJIBIgAyAGED0hBiAGRQ0HBSAWKAIAIQcgBiAEbCEIIAggBmohBiAGIAdqIQYgBiAGIAJtIgYgAmxrIQcgCSAHNgIAIBIgBjYCAAsgBUEBaiEFIARBAWohBCAFIBhIIQYgBCAQSCEHIAcgBnENAAsLIA1BAWohDSAEIBBIDQALCwsgCkEBaiEKIApBCEkNAAsLCwUgEEEASiEbIAJBAUghCCAYQQBKIQsgAEHoCmohEyAAQeQKaiEHIA0gBEEYbGpBEGohFyANIARBGGxqQRRqISBBACEKA0AgGwRAIApBAEcgCHIhIUEAIQ1BACEDA0AgIUUEQEEAIRIDQCAFIBJqIQQgBCwAACEEIARFBEAgFSgCACEJIBotAAAhBCAEQf8BcSEMIAkgDEGwEGxqIQ8gEygCACEEIARBCkgEQCAAEDQLIAcoAgAhESARQf8HcSEEIAkgDEGwEGxqQSRqIARBAXRqIQQgBC4BACEEIARBf0oEQCAJIAxBsBBsakEIaiEPIA8oAgAhDyAPIARqIQ8gDy0AACEPIA9B/wFxIQ8gESAPdiERIAcgETYCACATKAIAIREgESAPayERIBFBAEghD0EAIBEgDxshEUF/IAQgDxshBCATIBE2AgAFIAAgDxA1IQQLIAkgDEGwEGxqQRdqIREgESwAACERIBEEQCAJIAxBsBBsakGoEGohCSAJKAIAIQkgCSAEQQJ0aiEEIAQoAgAhBAsgBEF/Rg0HIBcoAgAhCSAJIARBAnRqIQQgBCgCACEEIA4gEkECdGohCSAJKAIAIQkgCSANQQJ0aiEJIAkgBDYCAAsgEkEBaiESIBIgAkgNAAsLIAMgEEghBCAEIAtxBEBBACESA0AgBgRAQQAhBANAIAUgBGohCSAJLAAAIQkgCUUEQCAOIARBAnRqIQkgCSgCACEJIAkgDUECdGohCSAJKAIAIQkgCSASaiEJIAktAAAhCSAJQf8BcSEJICAoAgAhDCAMIAlBBHRqIApBAXRqIQkgCS4BACEJIAlBf0oEQCABIARBAnRqIQwgDCgCACERIBYoAgAhDyAUKAIAIQwgDCADbCEdIB0gD2ohDyAVKAIAIR0gHSAJQbAQbGohCSAAIAkgESAPIAwgGRA+IQkgCUUNCgsLIARBAWohBCAEIAJIDQALCyASQQFqIRIgA0EBaiEDIBIgGEghBCADIBBIIQkgCSAEcQ0ACwsgDUEBaiENIAMgEEgNAAsLIApBAWohCiAKQQhJDQALCwsgHiAfNgIAIBwkBgvPAwIIfwJ9IANBAXUhCSABQQRqIQMgAygCACEDIAMgAkEDbGpBAmohAiACLQAAIQIgAkH/AXEhAiABQQlqIAJqIQEgAS0AACEBIAFB/wFxIQcgAEH4AGogB0EBdGohASABLgEAIQEgAQRAIABB+AFqIQAgACgCACEIIAUuAQAhASAIIAdBvAxsakG0DGohCyALLQAAIQAgAEH/AXEhACAAIAFsIQEgCCAHQbwMbGpBuAxqIQwgDCgCACECIAJBAUoEQEEAIQBBASEKA0AgCCAHQbwMbGpBxgZqIApqIQMgAy0AACEDIANB/wFxIQ0gBSANQQF0aiEDIAMuAQAhBiAGQX9KBEAgCy0AACEDIANB/wFxIQMgAyAGbCEDIAggB0G8DGxqQdICaiANQQF0aiEGIAYvAQAhBiAGQf//A3EhBiAAIAZHBEAgBCAAIAEgBiADIAkQQiAGIQAgDCgCACECCyADIQELIApBAWohAyADIAJIBEAgAyEKDAELCwVBACEACyAAIAlIBEAgAUECdEGgCGoqAgAhDwNAIAQgAEECdGohASABKgIAIQ4gDyAOlCEOIAEgDjgCACAAQQFqIQAgACAJRw0ACwsFIABBFRAVCwuFGgIVfwp9IwYhFiABQQF1IQ8gAUECdSENIAFBA3UhDiACQdAAaiEUIBQoAgAhFyACQcQAaiEIIAgoAgAhCCAIRSEIIA9BAnQhBSAIBEAjBiEMIwYgBUEPakFwcWokBgUgAiAFEDwhDAsgAkGgCGogA0ECdGohCCAIKAIAIQggD0F+aiEGIAwgBkECdGohBiAAIA9BAnRqIRUgDwR/IAVBcGohBSAFQQR2IQcgB0EDdCEEIAUgBGshBSAMIAVqIQQgB0EBdCEFIAVBAmohCyAGIQcgACEGIAghBQNAIAYqAgAhGSAFKgIAIRogGSAalCEZIAZBCGohCiAKKgIAIRogBUEEaiEJIAkqAgAhGyAaIBuUIRogGSAakyEZIAdBBGohECAQIBk4AgAgBioCACEZIAkqAgAhGiAZIBqUIRkgCioCACEaIAUqAgAhGyAaIBuUIRogGSAakiEZIAcgGTgCACAHQXhqIQcgBUEIaiEFIAZBEGohBiAGIBVHDQALIAQhBiAIIAtBAnRqBSAICyEHIAYgDE8EQCAPQX1qIQQgBiEFIAAgBEECdGohBCAHIQYDQCAEQQhqIQcgByoCACEZIAYqAgAhGiAZIBqUIRkgBCoCACEaIAZBBGohCiAKKgIAIRsgGiAblCEaIBogGZMhGSAFQQRqIQkgCSAZOAIAIAcqAgAhGSAKKgIAIRogGSAalCEZIAQqAgAhGiAGKgIAIRsgGiAblCEaIBqMIRogGiAZkyEZIAUgGTgCACAFQXhqIQUgBkEIaiEGIARBcGohBCAFIAxPDQALCyABQRBOBEAgD0F4aiEGIAggBkECdGohBiAAIA1BAnRqIQcgACEEIAwgDUECdGohCiAMIQUDQCAKQQRqIQkgCSoCACEZIAVBBGohCSAJKgIAIRogGSAakyEbIAoqAgAhHCAFKgIAIR0gHCAdkyEcIBkgGpIhGSAHQQRqIQkgCSAZOAIAIAoqAgAhGSAFKgIAIRogGSAakiEZIAcgGTgCACAGQRBqIQkgCSoCACEZIBsgGZQhGSAGQRRqIQsgCyoCACEaIBwgGpQhGiAZIBqTIRkgBEEEaiEQIBAgGTgCACAJKgIAIRkgHCAZlCEZIAsqAgAhGiAbIBqUIRogGSAakiEZIAQgGTgCACAKQQxqIQkgCSoCACEZIAVBDGohCSAJKgIAIRogGSAakyEbIApBCGohCSAJKgIAIRwgBUEIaiELIAsqAgAhHSAcIB2TIRwgGSAakiEZIAdBDGohECAQIBk4AgAgCSoCACEZIAsqAgAhGiAZIBqSIRkgB0EIaiEJIAkgGTgCACAGKgIAIRkgGyAZlCEZIAZBBGohCSAJKgIAIRogHCAalCEaIBkgGpMhGSAEQQxqIQsgCyAZOAIAIAYqAgAhGSAcIBmUIRkgCSoCACEaIBsgGpQhGiAZIBqSIRkgBEEIaiEJIAkgGTgCACAGQWBqIQYgB0EQaiEHIARBEGohBCAKQRBqIQogBUEQaiEFIAYgCE8NAAsLIAEQLSEHIAFBBHUhBiAPQX9qIQlBACAOayEFIAYgACAJIAUgCBBDIAkgDWshBCAGIAAgBCAFIAgQQyABQQV1IQtBACAGayEGIAsgACAJIAYgCEEQEEQgCSAOayEFIAsgACAFIAYgCEEQEEQgDkEBdCEFIAkgBWshBSALIAAgBSAGIAhBEBBEIA5BfWwhBSAJIAVqIQUgCyAAIAUgBiAIQRAQRCAHQXxqIQYgBkEBdSEOIAdBCUoEQEECIQUDQCAFQQJqIQYgASAGdSEEIAVBAWohBkECIAV0IQogCkEASgRAIAEgBUEEanUhEEEAIARBAXVrIRJBCCAFdCETQQAhBQNAIAUgBGwhESAJIBFrIREgECAAIBEgEiAIIBMQRCAFQQFqIQUgBSAKRw0ACwsgBiAOSARAIAYhBQwBCwsFQQIhBgsgB0F5aiEOIAYgDkgEQANAIAZBAmohBSABIAV1IRBBCCAGdCESIAZBBmohBSABIAV1IQcgBkEBaiEEQQIgBnQhEyAHQQBKBEBBACAQQQF1ayERIBJBAnQhGCAIIQYgCSEFA0AgEyAAIAUgESAGIBIgEBBFIAYgGEECdGohBiAFQXhqIQUgB0F/aiEKIAdBAUoEQCAKIQcMAQsLCyAEIA5HBEAgBCEGDAELCwsgCyAAIAkgCCABEEYgDUF8aiEIIAwgCEECdGohBiAPQXxqIQkgBiAMTwRAIAwgCUECdGohCCACQcAIaiADQQJ0aiEFIAUoAgAhBQNAIAUvAQAhByAHQf//A3EhByAAIAdBAnRqIQQgBCgCACEEIAhBDGohCiAKIAQ2AgAgB0EBaiEEIAAgBEECdGohBCAEKAIAIQQgCEEIaiEKIAogBDYCACAHQQJqIQQgACAEQQJ0aiEEIAQoAgAhBCAGQQxqIQogCiAENgIAIAdBA2ohByAAIAdBAnRqIQcgBygCACEHIAZBCGohBCAEIAc2AgAgBUECaiEHIAcvAQAhByAHQf//A3EhByAAIAdBAnRqIQQgBCgCACEEIAhBBGohCiAKIAQ2AgAgB0EBaiEEIAAgBEECdGohBCAEKAIAIQQgCCAENgIAIAdBAmohBCAAIARBAnRqIQQgBCgCACEEIAZBBGohCiAKIAQ2AgAgB0EDaiEHIAAgB0ECdGohByAHKAIAIQcgBiAHNgIAIAZBcGohBiAIQXBqIQggBUEEaiEFIAYgDE8NAAsLIAwgD0ECdGoiB0FwaiEIIAggDEsEQCACQbAIaiADQQJ0aiEGIAwhBSAGKAIAIQQgByEGA0AgBSoCACEZIAZBeGohCiAKKgIAIRogGSAakyEbIAVBBGohCyALKgIAIRwgBkF8aiENIA0qAgAhHSAcIB2SIR4gBEEEaiEOIA4qAgAhICAbICCUIR8gBCoCACEhIB4gIZQhIiAfICKSIR8gICAelCEeIBsgIZQhGyAeIBuTIRsgGSAakiEZIBwgHZMhGiAZIB+SIRwgBSAcOAIAIBogG5IhHCALIBw4AgAgGSAfkyEZIAogGTgCACAbIBqTIRkgDSAZOAIAIAVBCGohCiAKKgIAIRkgCCoCACEaIBkgGpMhGyAFQQxqIQsgCyoCACEcIAZBdGohBiAGKgIAIR0gHCAdkiEeIARBDGohDSANKgIAISAgGyAglCEfIARBCGohDSANKgIAISEgHiAhlCEiIB8gIpIhHyAgIB6UIR4gGyAhlCEbIB4gG5MhGyAZIBqSIRkgHCAdkyEaIBkgH5IhHCAKIBw4AgAgGiAbkiEcIAsgHDgCACAZIB+TIRkgCCAZOAIAIBsgGpMhGSAGIBk4AgAgBEEQaiEKIAVBEGohBSAIQXBqIQQgBSAESQRAIAghBiAEIQggCiEEDAELCwsgB0FgaiEIIAggDE8EQCACQagIaiADQQJ0aiECIAIoAgAhAiACIA9BAnRqIQIgAUF8aiEBIAAgAUECdGohAyAIIQEgFSEIIAAgCUECdGohBSAAIQYgByEAA0AgAkFgaiEHIABBeGohBCAEKgIAIRkgAkF8aiEEIAQqAgAhGiAZIBqUIR0gAEF8aiEEIAQqAgAhGyACQXhqIQQgBCoCACEcIBsgHJQhHiAdIB6TIR0gGSAclCEZIBmMIRkgGiAblCEaIBkgGpMhGSAGIB04AgAgHYwhGiAFQQxqIQQgBCAaOAIAIAggGTgCACADQQxqIQQgBCAZOAIAIABBcGohBCAEKgIAIRkgAkF0aiEEIAQqAgAhGiAZIBqUIR0gAEF0aiEEIAQqAgAhGyACQXBqIQQgBCoCACEcIBsgHJQhHiAdIB6TIR0gGSAclCEZIBmMIRkgGiAblCEaIBkgGpMhGSAGQQRqIQQgBCAdOAIAIB2MIRogBUEIaiEEIAQgGjgCACAIQQRqIQQgBCAZOAIAIANBCGohBCAEIBk4AgAgAEFoaiEEIAQqAgAhGSACQWxqIQQgBCoCACEaIBkgGpQhHSAAQWxqIQQgBCoCACEbIAJBaGohBCAEKgIAIRwgGyAclCEeIB0gHpMhHSAZIByUIRkgGYwhGSAaIBuUIRogGSAakyEZIAZBCGohBCAEIB04AgAgHYwhGiAFQQRqIQQgBCAaOAIAIAhBCGohBCAEIBk4AgAgA0EEaiEEIAQgGTgCACABKgIAIRkgAkFkaiECIAIqAgAhGiAZIBqUIR0gAEFkaiEAIAAqAgAhGyAHKgIAIRwgGyAclCEeIB0gHpMhHSAZIByUIRkgGYwhGSAaIBuUIRogGSAakyEZIAZBDGohACAAIB04AgAgHYwhGiAFIBo4AgAgCEEMaiEAIAAgGTgCACADIBk4AgAgBkEQaiEGIAhBEGohCCAFQXBqIQUgA0FwaiEDIAFBYGohAiACIAxPBEAgASEAIAIhASAHIQIMAQsLCyAUIBc2AgAgFiQGC8UBAQF/IABBAXYhASABQdWq1aoFcSEBIABBAXQhACAAQarVqtV6cSEAIAEgAHIhACAAQQJ2IQEgAUGz5syZA3EhASAAQQJ0IQAgAEHMmbPmfHEhACABIAByIQAgAEEEdiEBIAFBj568+ABxIQEgAEEEdCEAIABB8OHDh39xIQAgASAAciEAIABBCHYhASABQf+B/AdxIQEgAEEIdCEAIABBgP6DeHEhACABIAByIQAgAEEQdiEBIABBEHQhACABIAByIQAgAAtBAQN/IAFBAEoEQCAAIAFBAnRqIQQDQCAAIANBAnRqIQUgBSAENgIAIAQgAmohBCADQQFqIQMgAyABRw0ACwsgAAtrAQN/IAFBA2ohASABQXxxIQEgAEHEAGohAiACKAIAIQIgAgR/IABB0ABqIQMgAygCACEEIAQgAWshASAAQcwAaiEAIAAoAgAhACABIABIBH9BAAUgAyABNgIAIAIgAWoLBSABEF4LIQAgAAvaBgIPfwJ9IAFBFWohDCAMLAAAIQwCfyAMBH8gBSgCACEJIAQoAgAhCgJAIAdBAEoEfyAAQegKaiEOIABB5ApqIRAgAUEIaiETIAFBF2ohFCABQawQaiEVIAYgA2whESABQRZqIRYgAUEcaiESIAchDCAKIQYgASgCACEKIAkhBwJAAkADQAJAIA4oAgAhCSAJQQpIBEAgABA0CyAQKAIAIQsgC0H/B3EhCSABQSRqIAlBAXRqIQkgCS4BACEJIAlBf0oEQCATKAIAIQggCCAJaiEIIAgtAAAhCCAIQf8BcSEIIAsgCHYhCyAQIAs2AgAgDigCACELIAsgCGshCyALQQBIIQhBACALIAgbIQ1BfyAJIAgbIQsgDiANNgIABSAAIAEQNSELCyAULAAAIQkgCQRAIBUoAgAhCSALIAlODQMLIAtBAEgNACAHIANsIQkgCiAJaiEIIAggBmohCCAIIBFKIQggESAJayEJIAkgBmohCSAJIAogCBshCSABKAIAIQogCiALbCELIBYsAAAhCCAJQQBKIQogCARAIAoEQCASKAIAIQ1DAAAAACEXQQAhCgNAIAogC2ohCCANIAhBAnRqIQggCCoCACEYIBcgGJIhFyACIAZBAnRqIQggCCgCACEIIAhFIQ8gCCAHQQJ0aiEIIA9FBEAgCCoCACEYIBcgGJIhGCAIIBg4AgALIAZBAWohBiAGIANGIQggByAIaiEHQQAgBiAIGyEGIApBAWohCiAKIAlHDQALCwUgCgRAQQAhCgNAIAIgBkECdGohCCAIKAIAIQggCARAIBIoAgAhDSAKIAtqIQ8gDSAPQQJ0aiENIA0qAgAhFyAXQwAAAACSIRcgCCAHQQJ0aiEIIAgqAgAhGCAYIBeSIRcgCCAXOAIACyAGQQFqIQYgBiADRiEIIAcgCGohB0EAIAYgCBshBiAKQQFqIQogCiAJRw0ACwsLIAwgCWshDCAMQQBMDQUgCSEKDAELCwwBC0GnFUHEE0GgDkHLFRAECyAAQdQKaiEBIAEsAAAhASABRQRAIABB3ApqIQEgASgCACEBQQAgAQ0EGgsgAEEVEBVBAAwDBSAJIQcgCgshBgsgBCAGNgIAIAUgBzYCAEEBBSAAQRUQFUEACwshACAAC+ABAQJ/AkAgBQRAIARBAEoEQEEAIQUDQCACIANBAnRqIQYgBCAFayEHIAAgASAGIAcQQCEGIAZFBEBBACEADAQLIAEoAgAhBiAGIAVqIQUgBiADaiEDIAUgBEgNAAtBASEABUEBIQALBSABKAIAIQUgBCAFbSEFIAIgA0ECdGohBiAFQQBKBEAgBCADayEDQQAhAgNAIAYgAkECdGohBCADIAJrIQcgACABIAQgByAFED8hBCAERSEEIAQEQEEAIQAMBAsgAkEBaiECIAIgBUgNAAtBASEABUEBIQALCwsgAAu+AQIDfwN9IAAgARBBIQUgBUEASARAQQAhAAUgASgCACEAIAAgA0ghBiAAIAMgBhshAyAAIAVsIQUgA0EASgRAIAEoAhwhBiABLAAWRSEHQQAhAANAIAAgBWohASAGIAFBAnRqIQEgASoCACEIIAkgCJIhCCAAIARsIQEgAiABQQJ0aiEBIAEqAgAhCiAKIAiSIQogASAKOAIAIAkgCCAHGyEJIABBAWohACAAIANIDQALQQEhAAVBASEACwsgAAvFAgIDfwJ9IAAgARBBIQUCQCAFQQBIBEBBACEABSABKAIAIQAgACADSCEEIAAgAyAEGyEDIAAgBWwhBSABQRZqIQAgACwAACEEIANBAEohACAEBEAgAEUEQEEBIQAMAwsgASgCHCEEIAFBDGohBkEAIQADQCAAIAVqIQEgBCABQQJ0aiEBIAEqAgAhCCAHIAiSIQcgAiAAQQJ0aiEBIAEqAgAhCCAIIAeSIQggASAIOAIAIAYqAgAhCCAHIAiSIQcgAEEBaiEAIAAgA0gNAAtBASEABSAARQRAQQEhAAwDCyABKAIcIQRBACEAA0AgACAFaiEBIAQgAUECdGohASABKgIAIQcgB0MAAAAAkiEHIAIgAEECdGohASABKgIAIQggCCAHkiEHIAEgBzgCACAAQQFqIQAgACADSA0AC0EBIQALCwsgAAvMAgEFfyABQRVqIQIgAiwAACECAkAgAgRAIABB6ApqIQUgBSgCACECIAJBCkgEQCAAEDQLIABB5ApqIQQgBCgCACEGIAZB/wdxIQIgAUEkaiACQQF0aiECIAIuAQAhAiACQX9KBEAgAUEIaiEDIAMoAgAhAyADIAJqIQMgAy0AACEDIANB/wFxIQMgBiADdiEGIAQgBjYCACAFKAIAIQQgBCADayEEIARBAEghBkEAIAQgBhshBEF/IAIgBhshAiAFIAQ2AgAFIAAgARA1IQILIAFBF2ohBSAFLAAAIQUgBQRAIAFBrBBqIQEgASgCACEBIAIgAU4EQEHvFUHEE0HCDUGFFhAECwsgAkEASARAIABB1ApqIQEgASwAACEBIAFFBEAgAEHcCmohASABKAIAIQEgAQ0DCyAAQRUQFQsFIABBFRAVQX8hAgsLIAILtAICBX8CfSAEIAJrIQQgAyABayEIIARBf0ohBkEAIARrIQcgBCAHIAYbIQcgBCAIbSEGIARBH3UhBCAEQQFyIQogBkF/SiEEQQAgBmshCSAGIAkgBBshBCAEIAhsIQQgByAEayEHIAMgBUohBCAFIAMgBBshBCAEIAFKBEAgAkECdEGgCGohAyADKgIAIQsgACABQQJ0aiEDIAMqAgAhDCALIAyUIQsgAyALOAIAIAFBAWohASABIARIBEBBACEDA0AgAyAHaiEDIAMgCEghBUEAIAogBRshCUEAIAggBRshBSADIAVrIQMgAiAGaiAJaiECIAJBAnRBoAhqIQUgBSoCACELIAAgAUECdGohBSAFKgIAIQwgCyAMlCELIAUgCzgCACABQQFqIQEgASAESA0ACwsLC4sHAgR/Bn0gASACQQJ0aiEBIABBA3EhAiACBEBBmxZBxBNB4BJBqBYQBAsgAEEDSgRAIABBAnYhACABIANBAnRqIQMDQCABKgIAIQsgAyoCACEMIAsgDJMhDSABQXxqIQIgAioCACEKIANBfGohBSAFKgIAIQkgCiAJkyEOIAsgDJIhCSABIAk4AgAgBSoCACEJIAogCZIhCSACIAk4AgAgBCoCACEJIA0gCZQhCiAEQQRqIQIgAioCACEJIA4gCZQhCSAKIAmTIQkgAyAJOAIAIAQqAgAhCSAOIAmUIQogAioCACEJIA0gCZQhCSAKIAmSIQkgBSAJOAIAIARBIGohByABQXhqIQggCCoCACELIANBeGohBSAFKgIAIQwgCyAMkyENIAFBdGohAiACKgIAIQogA0F0aiEGIAYqAgAhCSAKIAmTIQ4gCyAMkiEJIAggCTgCACAGKgIAIQkgCiAJkiEJIAIgCTgCACAHKgIAIQkgDSAJlCEKIARBJGohAiACKgIAIQkgDiAJlCEJIAogCZMhCSAFIAk4AgAgByoCACEJIA4gCZQhCiACKgIAIQkgDSAJlCEJIAogCZIhCSAGIAk4AgAgBEFAayEHIAFBcGohCCAIKgIAIQsgA0FwaiEFIAUqAgAhDCALIAyTIQ0gAUFsaiECIAIqAgAhCiADQWxqIQYgBioCACEJIAogCZMhDiALIAySIQkgCCAJOAIAIAYqAgAhCSAKIAmSIQkgAiAJOAIAIAcqAgAhCSANIAmUIQogBEHEAGohAiACKgIAIQkgDiAJlCEJIAogCZMhCSAFIAk4AgAgByoCACEJIA4gCZQhCiACKgIAIQkgDSAJlCEJIAogCZIhCSAGIAk4AgAgBEHgAGohByABQWhqIQggCCoCACELIANBaGohBSAFKgIAIQwgCyAMkyENIAFBZGohAiACKgIAIQogA0FkaiEGIAYqAgAhCSAKIAmTIQ4gCyAMkiEJIAggCTgCACAGKgIAIQkgCiAJkiEJIAIgCTgCACAHKgIAIQkgDSAJlCEKIARB5ABqIQIgAioCACEJIA4gCZQhCSAKIAmTIQkgBSAJOAIAIAcqAgAhCSAOIAmUIQogAioCACEJIA0gCZQhCSAKIAmSIQkgBiAJOAIAIARBgAFqIQQgAUFgaiEBIANBYGohAyAAQX9qIQIgAEEBSgRAIAIhAAwBCwsLC4EHAgN/BX0gASACQQJ0aiEBIABBA0oEQCAAQQJ2IQYgASADQQJ0aiECIAEhACAGIQEDQCAAKgIAIQkgAioCACEKIAkgCpMhDCAAQXxqIQYgBioCACENIAJBfGohAyADKgIAIQsgDSALkyELIAkgCpIhCSAAIAk4AgAgAyoCACEJIA0gCZIhCSAGIAk4AgAgBCoCACEJIAwgCZQhCSAEQQRqIQYgBioCACEKIAsgCpQhCiAJIAqTIQkgAiAJOAIAIAQqAgAhCSALIAmUIQkgBioCACEKIAwgCpQhCiAJIAqSIQkgAyAJOAIAIAQgBUECdGohAyAAQXhqIQYgBioCACEJIAJBeGohByAHKgIAIQogCSAKkyEMIABBdGohCCAIKgIAIQ0gAkF0aiEEIAQqAgAhCyANIAuTIQsgCSAKkiEJIAYgCTgCACAEKgIAIQkgDSAJkiEJIAggCTgCACADKgIAIQkgDCAJlCEJIANBBGohBiAGKgIAIQogCyAKlCEKIAkgCpMhCSAHIAk4AgAgAyoCACEJIAsgCZQhCSAGKgIAIQogDCAKlCEKIAkgCpIhCSAEIAk4AgAgAyAFQQJ0aiEDIABBcGohBiAGKgIAIQkgAkFwaiEHIAcqAgAhCiAJIAqTIQwgAEFsaiEIIAgqAgAhDSACQWxqIQQgBCoCACELIA0gC5MhCyAJIAqSIQkgBiAJOAIAIAQqAgAhCSANIAmSIQkgCCAJOAIAIAMqAgAhCSAMIAmUIQkgA0EEaiEGIAYqAgAhCiALIAqUIQogCSAKkyEJIAcgCTgCACADKgIAIQkgCyAJlCEJIAYqAgAhCiAMIAqUIQogCSAKkiEJIAQgCTgCACADIAVBAnRqIQMgAEFoaiEGIAYqAgAhCSACQWhqIQcgByoCACEKIAkgCpMhDCAAQWRqIQggCCoCACENIAJBZGohBCAEKgIAIQsgDSALkyELIAkgCpIhCSAGIAk4AgAgBCoCACEJIA0gCZIhCSAIIAk4AgAgAyoCACEJIAwgCZQhCSADQQRqIQYgBioCACEKIAsgCpQhCiAJIAqTIQkgByAJOAIAIAMqAgAhCSALIAmUIQkgBioCACEKIAwgCpQhCiAJIAqSIQkgBCAJOAIAIABBYGohACACQWBqIQIgAyAFQQJ0aiEEIAFBf2ohAyABQQFKBEAgAyEBDAELCwsL6QYCAn8OfSAEKgIAIQ8gBEEEaiEHIAcqAgAhECAEIAVBAnRqIQcgByoCACERIAVBAWohByAEIAdBAnRqIQcgByoCACESIAVBAXQhCCAEIAhBAnRqIQcgByoCACETIAhBAXIhByAEIAdBAnRqIQcgByoCACEUIAVBA2whByAEIAdBAnRqIQUgBSoCACEVIAdBAWohBSAEIAVBAnRqIQQgBCoCACEWIAEgAkECdGohASAAQQBKBEBBACAGayEGIAEgA0ECdGohAwNAIAEqAgAhCyADKgIAIQwgCyAMkyENIAFBfGohAiACKgIAIQogA0F8aiEEIAQqAgAhCSAKIAmTIQ4gCyAMkiEJIAEgCTgCACAEKgIAIQkgCiAJkiEJIAIgCTgCACAPIA2UIQogECAOlCEJIAogCZMhCSADIAk4AgAgDyAOlCEKIBAgDZQhCSAJIAqSIQkgBCAJOAIAIAFBeGohBSAFKgIAIQsgA0F4aiEEIAQqAgAhDCALIAyTIQ0gAUF0aiECIAIqAgAhCiADQXRqIQcgByoCACEJIAogCZMhDiALIAySIQkgBSAJOAIAIAcqAgAhCSAKIAmSIQkgAiAJOAIAIBEgDZQhCiASIA6UIQkgCiAJkyEJIAQgCTgCACARIA6UIQogEiANlCEJIAkgCpIhCSAHIAk4AgAgAUFwaiEFIAUqAgAhCyADQXBqIQQgBCoCACEMIAsgDJMhDSABQWxqIQIgAioCACEKIANBbGohByAHKgIAIQkgCiAJkyEOIAsgDJIhCSAFIAk4AgAgByoCACEJIAogCZIhCSACIAk4AgAgEyANlCEKIBQgDpQhCSAKIAmTIQkgBCAJOAIAIBMgDpQhCiAUIA2UIQkgCSAKkiEJIAcgCTgCACABQWhqIQUgBSoCACELIANBaGohBCAEKgIAIQwgCyAMkyENIAFBZGohAiACKgIAIQogA0FkaiEHIAcqAgAhCSAKIAmTIQ4gCyAMkiEJIAUgCTgCACAHKgIAIQkgCiAJkiEJIAIgCTgCACAVIA2UIQogFiAOlCEJIAogCZMhCSAEIAk4AgAgFSAOlCEKIBYgDZQhCSAJIAqSIQkgByAJOAIAIAEgBkECdGohASADIAZBAnRqIQMgAEF/aiECIABBAUoEQCACIQAMAQsLCwvWBAICfwd9IARBA3UhBCADIARBAnRqIQMgAyoCACENIAEgAkECdGohASAAQQR0IQBBACAAayEAIAEgAEECdGohBiAAQQBIBEAgASEAA0AgACoCACEHIABBYGohASABKgIAIQggByAIkyELIABBfGohAiACKgIAIQkgAEFcaiEDIAMqAgAhCiAJIAqTIQwgByAIkiEHIAAgBzgCACAJIAqSIQcgAiAHOAIAIAEgCzgCACADIAw4AgAgAEF4aiECIAIqAgAhByAAQVhqIQMgAyoCACEIIAcgCJMhCSAAQXRqIQQgBCoCACEKIABBVGohBSAFKgIAIQsgCiALkyEMIAcgCJIhByACIAc4AgAgCiALkiEHIAQgBzgCACAJIAySIQcgDSAHlCEHIAMgBzgCACAMIAmTIQcgDSAHlCEHIAUgBzgCACAAQVBqIQIgAioCACEHIABBcGohAyADKgIAIQggByAIkyELIABBbGohBCAEKgIAIQkgAEFMaiEFIAUqAgAhCiAJIAqTIQwgByAIkiEHIAMgBzgCACAJIAqSIQcgBCAHOAIAIAIgDDgCACAFIAs4AgAgAEFIaiECIAIqAgAhByAAQWhqIQMgAyoCACEIIAcgCJMhCSAAQWRqIQQgBCoCACEKIABBRGohBSAFKgIAIQsgCiALkyEMIAcgCJIhByADIAc4AgAgCiALkiEHIAQgBzgCACAJIAySIQcgDSAHlCEHIAIgBzgCACAJIAyTIQcgDSAHlCEHIAUgBzgCACAAEEcgARBHIABBQGohACAAIAZLDQALCwuXAgIEfwZ9IAAqAgAhBSAAQXBqIQEgASoCACEIIAUgCJMhBiAFIAiSIQUgAEF4aiECIAIqAgAhCCAAQWhqIQMgAyoCACEHIAggB5IhCSAIIAeTIQggBSAJkiEHIAAgBzgCACAFIAmTIQUgAiAFOAIAIABBdGohAiACKgIAIQUgAEFkaiEEIAQqAgAhByAFIAeTIQkgBiAJkiEKIAEgCjgCACAGIAmTIQYgAyAGOAIAIABBfGohASABKgIAIQYgAEFsaiEAIAAqAgAhCSAGIAmTIQogBiAJkiEGIAUgB5IhBSAFIAaSIQcgASAHOAIAIAYgBZMhBSACIAU4AgAgCiAIkyEFIAAgBTgCACAIIAqSIQUgBCAFOAIAC2IBAn8gAUEBdCEBIABB5ABqIQIgAigCACECIAEgAkYEQCAAQbgIaiEDBSAAQegAaiECIAIoAgAhAiABIAJGBEAgAEG8CGohAwVBvxZBxBNB6xdBwRYQBAsLIAMoAgAhACAACxQAIABBkhdBBhBkIQAgAEUhACAAC6oBAQN/IABB2ApqIQEgASgCACEDAn8CQCADQX9HDQAgAEHTCmohAwNAAkAgABAxIQJBACACRQ0DGiADLAAAIQIgAkEBcSECIAINACABKAIAIQIgAkF/Rg0BDAILCyAAQSAQFUEADAELIABB3ApqIQEgAUEANgIAIABB6ApqIQEgAUEANgIAIABB7ApqIQEgAUEANgIAIABB1ApqIQAgAEEAOgAAQQELIQAgAAtFAQJ/IABBFGohAiACKAIAIQMgAyABaiEBIAIgATYCACAAQRxqIQIgAigCACECIAEgAk8EQCAAQdQAaiEAIABBATYCAAsLagEEfwNAQQAhACACQRh0IQEDQCABQQF0IQMgAUEfdSEBIAFBt7uEJnEhASABIANzIQEgAEEBaiEAIABBCEcNAAsgAkECdEHQGWohACAAIAE2AgAgAkEBaiEAIABBgAJHBEAgACECDAELCwuTAQEDfyABQQNqIQEgAUF8cSEBIABBCGohAiACKAIAIQMgAyABaiEDIAIgAzYCACAAQcQAaiECIAIoAgAhAiACBEAgAEHMAGohAyADKAIAIQQgBCABaiEBIABB0ABqIQAgACgCACEAIAEgAEoEQEEAIQAFIAIgBGohACADIAE2AgALBSABBH8gARBeBUEACyEACyAAC0gBAX8gAEHEAGohAyADKAIAIQMgAwRAIAJBA2ohASABQXxxIQEgAEHQAGohACAAKAIAIQIgAiABaiEBIAAgATYCAAUgARBfCwvGBQELfyMGIQ0jBkGAAWokBiANIgdCADcDACAHQgA3AwggB0IANwMQIAdCADcDGCAHQgA3AyAgB0IANwMoIAdCADcDMCAHQgA3AzggB0FAa0IANwMAIAdCADcDSCAHQgA3A1AgB0IANwNYIAdCADcDYCAHQgA3A2ggB0IANwNwIAdCADcDeAJAIAJBAEoEQANAIAEgBmohBCAELAAAIQQgBEF/Rw0CIAZBAWohBiAGIAJIDQALCwsCQCAGIAJGBEAgAEGsEGohACAAKAIAIQAgAARAQZgXQcQTQZ0IQa8XEAQFQQEhCwsFIAEgBmohBCAELQAAIQUgBUH/AXEhBSAAQQAgBkEAIAUgAxBXIAQsAAAhBCAEBEAgBEH/AXEhCkEBIQQDQEEgIARrIQVBASAFdCEFIAcgBEECdGohCCAIIAU2AgAgBEEBaiEFIAQgCkkEQCAFIQQMAQsLCyAGQQFqIQogCiACSARAQQEhBQJAAkACQAJAA0AgASAKaiEJIAksAAAhBiAGQX9GBEAgBSEGBSAGQf8BcSEIIAZFDQggCCEEA0ACQCAHIARBAnRqIQYgBigCACEMIAwNACAEQX9qIQYgBEEBTA0KIAYhBAwBCwsgBEEgTw0CIAZBADYCACAMEDohDiAFQQFqIQYgACAOIAogBSAIIAMQVyAJLQAAIQggCEH/AXEhBSAEIAVHBEAgCEH/AXFBIE4NBCAEIAVIBEADQCAHIAVBAnRqIQggCCgCACEJIAkNB0EgIAVrIQlBASAJdCEJIAkgDGohCSAIIAk2AgAgBUF/aiEFIAUgBEoNAAsLCwsgCkEBaiEKIAogAkgEQCAGIQUMAQVBASELDAgLAAALAAtBwRdBxBNBtAhBrxcQBAwCC0HSF0HEE0G5CEGvFxAEDAELQe0XQcQTQbsIQa8XEAQLBUEBIQsLCwsgDSQGIAsLtQYBEH8gAEEXaiEKIAosAAAhBCAEBEAgAEGsEGohCCAIKAIAIQMgA0EASgRAIAAoAiAhBiAAQaQQaigCACEFQQAhBANAIAYgBEECdGohAyADKAIAIQMgAxA6IQMgBSAEQQJ0aiEHIAcgAzYCACAEQQFqIQQgCCgCACEDIAQgA0gNAAsLBSAAQQRqIQcgBygCACEEIARBAEoEQCAAQSBqIQsgAEGkEGohDEEAIQQDQCABIAZqIQUgBSwAACEFIAAgBRBYIQUgBQRAIAsoAgAhBSAFIAZBAnRqIQUgBSgCACEFIAUQOiENIAwoAgAhDiAEQQFqIQUgDiAEQQJ0aiEEIAQgDTYCACAFIQQLIAZBAWohBiAHKAIAIQUgBiAFSA0ACwVBACEECyAAQawQaiEGIAYoAgAhBSAEIAVGBEAgBiEIIAQhAwVB/xdBxBNB/ghBlhgQBAsLIABBpBBqIQUgBSgCACEEIAQgA0EEQQIQZiAFKAIAIQQgCCgCACEDIAQgA0ECdGohBCAEQX82AgAgCiwAACEDIANFIQQgAEEEaiEGIAYgCCAEGyEEIAQoAgAhCwJAIAtBAEoEQCAAQSBqIREgAEGoEGohDCAAQQhqIRJBACEEA0ACQCADQf8BcQR/IAIgBEECdGohAyADKAIABSAECyEDIAEgA2osAAAhDSAAIA0QWCEDIAMEQCARKAIAIQMgAyAEQQJ0aiEDIAMoAgAhAyADEDohDiAIKAIAIQMgBSgCACEPIANBAUoEQEEAIQYDQCADQQF2IQcgByAGaiEQIA8gEEECdGohCSAJKAIAIQkgCSAOSyEJIAMgB2shAyAGIBAgCRshBiAHIAMgCRshAyADQQFKDQALBUEAIQYLIA8gBkECdGohAyADKAIAIQMgAyAORw0BIAosAAAhAyADBEAgAiAEQQJ0aiEDIAMoAgAhAyAMKAIAIQcgByAGQQJ0aiEHIAcgAzYCACASKAIAIQMgAyAGaiEDIAMgDToAAAUgDCgCACEDIAMgBkECdGohAyADIAQ2AgALCyAEQQFqIQQgBCALTg0DIAosAAAhAwwBCwtBrRhBxBNBnAlBlhgQBAsLC7cCAQp/IABBJGohASABQX9BgBAQehogAEEXaiEBIAEsAAAhASABRSEEIABBrBBqIQEgAEEEaiECIAIgASAEGyEBIAEoAgAhASABQf//AUghAiABQf//ASACGyEGIAFBAEoEQCAAQQhqIQEgAEEgaiEHIABBpBBqIQggASgCACEJQQAhAgNAIAkgAmohBSAFLQAAIQEgAUH/AXFBC0gEQCAEBH8gBygCACEBIAEgAkECdGohASABKAIABSAIKAIAIQEgASACQQJ0aiEBIAEoAgAhASABEDoLIQEgAUGACEkEQCACQf//A3EhCgNAIABBJGogAUEBdGohAyADIAo7AQAgBS0AACEDIANB/wFxIQNBASADdCEDIAMgAWohASABQYAISQ0ACwsLIAJBAWohAiACIAZIDQALCwtcAwJ/AX0CfCAAQf///wBxIQIgAEEVdiEBIAFB/wdxIQEgAEEASCEAIAK4IQQgBJohBSAFIAQgABshBCAEtiEDIAO7IQQgAUHseWohACAEIAAQcSEEIAS2IQMgAwviAQMBfwJ9A3wgALIhAyADuyEFIAUQdiEFIAW2IQMgAbIhBCADIASVIQMgA7shBSAFEHUhBSAFnCEFIAWqIQIgArIhAyADQwAAgD+SIQMgA7shBiABtyEFIAYgBRB3IQYgBpwhBiAGqiEBIAEgAEwhASABIAJqIQEgAbIhAyADQwAAgD+SIQQgBLshBiAGIAUQdyEGIAC3IQcgBiAHZEUEQEHrGEHEE0G1CUGLGRAECyADuyEGIAYgBRB3IQUgBZwhBSAFqiECIAIgAEoEQEGaGUHEE0G2CUGLGRAEBSABDwtBAAs/AQF/IAAvAQAhACABLwEAIQEgAEH//wNxIAFB//8DcUghAiAAQf//A3EgAUH//wNxSiEAQX8gACACGyEAIAALigEBB38gAUEASgRAIAAgAUEBdGohCEGAgAQhCUF/IQoDQCAAIARBAXRqIQUgBS8BACEGIAYhBSAKIAVIBEAgCC8BACEHIAYgB0gEQCACIAQ2AgAgBSEKCwsgCSAFSgRAIAgvAQAhByAGIAdKBEAgAyAENgIAIAUhCQsLIARBAWohBCAEIAFHDQALCwumAgEHfyACQQF2IQMgAkF8cSEEIAJBA3UhCCADQQJ0IQMgACADEE0hBSAAQaAIaiABQQJ0aiEGIAYgBTYCACAAIAMQTSEHIABBqAhqIAFBAnRqIQUgBSAHNgIAIAAgBBBNIQQgAEGwCGogAUECdGohByAHIAQ2AgAgBigCACEGAn8CQCAGRQ0AIAUoAgAhBSAFRSEHIARFIQkgCSAHcg0AIAIgBiAFIAQQWiAAIAMQTSEDIABBuAhqIAFBAnRqIQQgBCADNgIAIANFBEAgAEEDEBVBAAwCCyACIAMQWyAIQQF0IQMgACADEE0hAyAAQcAIaiABQQJ0aiEBIAEgAzYCACADBH8gAiADEFxBAQUgAEEDEBVBAAsMAQsgAEEDEBVBAAshACAAC28BAn8gAEEXaiEGIAYsAAAhByAAKAIgIQYgBwR/IAYgA0ECdGohBiAGIAE2AgAgBEH/AXEhASAAQQhqIQAgACgCACEAIAAgA2ohACAAIAE6AAAgAiEBIAUgA0ECdGoFIAYgAkECdGoLIgAgATYCAAtZAQF/IABBF2ohACAALAAAIQIgAUH/AXFB/wFGIQAgAkUEQCABQf8BcUEKSiEBIAAgAXMhACAAQQFxIQAgAA8LIAAEQEHMGEHEE0HqCEHbGBAEBUEBDwtBAAsrAQF/IAAoAgAhACABKAIAIQEgACABSSECIAAgAUshAEF/IAAgAhshACAAC6YDAwZ/AX0DfCAAQQJ1IQggAEEDdSEJIABBA0oEQCAAtyENA0AgBkECdCEEIAS3IQsgC0QYLURU+yEJQKIhCyALIA2jIQwgDBBzIQsgC7YhCiABIAVBAnRqIQQgBCAKOAIAIAwQdCELIAu2IQogCowhCiAFQQFyIQcgASAHQQJ0aiEEIAQgCjgCACAHtyELIAtEGC1EVPshCUCiIQsgCyANoyELIAtEAAAAAAAA4D+iIQwgDBBzIQsgC7YhCiAKQwAAAD+UIQogAiAFQQJ0aiEEIAQgCjgCACAMEHQhCyALtiEKIApDAAAAP5QhCiACIAdBAnRqIQQgBCAKOAIAIAZBAWohBiAFQQJqIQUgBiAISA0ACyAAQQdKBEAgALchDEEAIQFBACEAA0AgAEEBciEFIAVBAXQhAiACtyELIAtEGC1EVPshCUCiIQsgCyAMoyENIA0QcyELIAu2IQogAyAAQQJ0aiECIAIgCjgCACANEHQhCyALtiEKIAqMIQogAyAFQQJ0aiECIAIgCjgCACABQQFqIQEgAEECaiEAIAEgCUgNAAsLCwunAQMCfwF9AnwgAEEBdSECIABBAUoEQCACtyEGQQAhAANAIAC3IQUgBUQAAAAAAADgP6AhBSAFIAajIQUgBUQAAAAAAADgP6IhBSAFRBgtRFT7IQlAoiEFIAUQdCEFIAW2IQQgBBBdIQQgBLshBSAFRBgtRFT7Ifk/oiEFIAUQdCEFIAW2IQQgASAAQQJ0aiEDIAMgBDgCACAAQQFqIQAgACACSA0ACwsLXwEEfyAAQQN1IQMgAEEHSgRAQSQgABAtayEEQQAhAANAIAAQOiECIAIgBHYhAiACQQJ0IQIgAkH//wNxIQIgASAAQQF0aiEFIAUgAjsBACAAQQFqIQAgACADSA0ACwsLDQEBfSAAIACUIQEgAQvyOgEXfwJAAkAjBiEOIwZBEGokBiAOIRcCfyAAQfUBSQR/QdAhKAIAIgdBECAAQQtqQXhxIABBC0kbIgJBA3YiAHYiA0EDcQRAIANBAXFBAXMgAGoiAUEDdEH4IWoiAkEIaiIEKAIAIgBBCGoiBigCACIDIAJGBEBB0CEgB0EBIAF0QX9zcTYCAAVB4CEoAgAgA0sEQBAGCyADQQxqIgUoAgAgAEYEQCAFIAI2AgAgBCADNgIABRAGCwsgACABQQN0IgNBA3I2AgQgACADakEEaiIAIAAoAgBBAXI2AgAgDiQGIAYPCyACQdghKAIAIg1LBH8gAwRAIAMgAHRBAiAAdCIAQQAgAGtycSIAQQAgAGtxQX9qIgNBDHZBEHEhACADIAB2IgNBBXZBCHEiASAAciADIAF2IgBBAnZBBHEiA3IgACADdiIAQQF2QQJxIgNyIAAgA3YiAEEBdkEBcSIDciAAIAN2aiIBQQN0QfghaiIFQQhqIgkoAgAiAEEIaiIKKAIAIgMgBUYEQEHQISAHQQEgAXRBf3NxIgQ2AgAFQeAhKAIAIANLBEAQBgsgA0EMaiILKAIAIABGBEAgCyAFNgIAIAkgAzYCACAHIQQFEAYLCyAAIAJBA3I2AgQgACACaiIHIAFBA3QiAyACayIFQQFyNgIEIAAgA2ogBTYCACANBEBB5CEoAgAhAiANQQN2IgNBA3RB+CFqIQAgBEEBIAN0IgNxBEBB4CEoAgAgAEEIaiIDKAIAIgFLBEAQBgUgASEGIAMhDAsFQdAhIAQgA3I2AgAgACEGIABBCGohDAsgDCACNgIAIAYgAjYCDCACIAY2AgggAiAANgIMC0HYISAFNgIAQeQhIAc2AgAgDiQGIAoPC0HUISgCACIMBH8gDEEAIAxrcUF/aiIDQQx2QRBxIQAgAyAAdiIDQQV2QQhxIgQgAHIgAyAEdiIAQQJ2QQRxIgNyIAAgA3YiAEEBdkECcSIDciAAIAN2IgBBAXZBAXEiA3IgACADdmpBAnRBgCRqKAIAIgQhAyAEKAIEQXhxIAJrIQoDQAJAIAMoAhAiAEUEQCADKAIUIgBFDQELIAAhAyAAIAQgACgCBEF4cSACayIAIApJIgYbIQQgACAKIAYbIQoMAQsLQeAhKAIAIg8gBEsEQBAGCyAEIAJqIgggBE0EQBAGCyAEKAIYIQsCQCAEKAIMIgAgBEYEQCAEQRRqIgMoAgAiAEUEQCAEQRBqIgMoAgAiAEUNAgsDQAJAIABBFGoiBigCACIJRQRAIABBEGoiBigCACIJRQ0BCyAGIQMgCSEADAELCyAPIANLBEAQBgUgA0EANgIAIAAhAQsFIA8gBCgCCCIDSwRAEAYLIANBDGoiBigCACAERwRAEAYLIABBCGoiCSgCACAERgRAIAYgADYCACAJIAM2AgAgACEBBRAGCwsLAkAgCwRAIAQgBCgCHCIAQQJ0QYAkaiIDKAIARgRAIAMgATYCACABRQRAQdQhIAxBASAAdEF/c3E2AgAMAwsFQeAhKAIAIAtLBEAQBgUgC0EQaiIAIAtBFGogACgCACAERhsgATYCACABRQ0DCwtB4CEoAgAiAyABSwRAEAYLIAEgCzYCGCAEKAIQIgAEQCADIABLBEAQBgUgASAANgIQIAAgATYCGAsLIAQoAhQiAARAQeAhKAIAIABLBEAQBgUgASAANgIUIAAgATYCGAsLCwsgCkEQSQRAIAQgCiACaiIAQQNyNgIEIAQgAGpBBGoiACAAKAIAQQFyNgIABSAEIAJBA3I2AgQgCCAKQQFyNgIEIAggCmogCjYCACANBEBB5CEoAgAhAiANQQN2IgNBA3RB+CFqIQBBASADdCIDIAdxBEBB4CEoAgAgAEEIaiIDKAIAIgFLBEAQBgUgASEFIAMhEAsFQdAhIAMgB3I2AgAgACEFIABBCGohEAsgECACNgIAIAUgAjYCDCACIAU2AgggAiAANgIMC0HYISAKNgIAQeQhIAg2AgALIA4kBiAEQQhqDwUgAgsFIAILBSAAQb9/SwR/QX8FIABBC2oiAEF4cSEEQdQhKAIAIgYEfyAAQQh2IgAEfyAEQf///wdLBH9BHwUgBEEOIAAgAEGA/j9qQRB2QQhxIgB0IgFBgOAfakEQdkEEcSICIAByIAEgAnQiAEGAgA9qQRB2QQJxIgFyayAAIAF0QQ92aiIAQQdqdkEBcSAAQQF0cgsFQQALIRJBACAEayECAkACQCASQQJ0QYAkaigCACIABEBBACEBIARBAEEZIBJBAXZrIBJBH0YbdCEMA0AgACgCBEF4cSAEayIQIAJJBEAgEAR/IBAhAiAABSAAIQFBACECDAQLIQELIAUgACgCFCIFIAVFIAUgAEEQaiAMQR92QQJ0aigCACIARnIbIQUgDEEBdCEMIAANAAsgASEABUEAIQALIAUgAHJFBEAgBEECIBJ0IgBBACAAa3IgBnEiAEUNBhogAEEAIABrcUF/aiIFQQx2QRBxIQFBACEAIAUgAXYiBUEFdkEIcSIMIAFyIAUgDHYiAUECdkEEcSIFciABIAV2IgFBAXZBAnEiBXIgASAFdiIBQQF2QQFxIgVyIAEgBXZqQQJ0QYAkaigCACEFCyAFBH8gACEBIAUhAAwBBSAACyEFDAELIAEhBSACIQEDQCAAKAIEIQwgACgCECICRQRAIAAoAhQhAgsgDEF4cSAEayIQIAFJIQwgECABIAwbIQEgACAFIAwbIQUgAgR/IAIhAAwBBSABCyECCwsgBQR/IAJB2CEoAgAgBGtJBH9B4CEoAgAiESAFSwRAEAYLIAUgBGoiCCAFTQRAEAYLIAUoAhghDwJAIAUoAgwiACAFRgRAIAVBFGoiASgCACIARQRAIAVBEGoiASgCACIARQ0CCwNAAkAgAEEUaiIJKAIAIgtFBEAgAEEQaiIJKAIAIgtFDQELIAkhASALIQAMAQsLIBEgAUsEQBAGBSABQQA2AgAgACEHCwUgESAFKAIIIgFLBEAQBgsgAUEMaiIJKAIAIAVHBEAQBgsgAEEIaiILKAIAIAVGBEAgCSAANgIAIAsgATYCACAAIQcFEAYLCwsCQCAPBEAgBSAFKAIcIgBBAnRBgCRqIgEoAgBGBEAgASAHNgIAIAdFBEBB1CEgBkEBIAB0QX9zcSIDNgIADAMLBUHgISgCACAPSwRAEAYFIA9BEGoiACAPQRRqIAAoAgAgBUYbIAc2AgAgB0UEQCAGIQMMBAsLC0HgISgCACIBIAdLBEAQBgsgByAPNgIYIAUoAhAiAARAIAEgAEsEQBAGBSAHIAA2AhAgACAHNgIYCwsgBSgCFCIABEBB4CEoAgAgAEsEQBAGBSAHIAA2AhQgACAHNgIYIAYhAwsFIAYhAwsFIAYhAwsLAkAgAkEQSQRAIAUgAiAEaiIAQQNyNgIEIAUgAGpBBGoiACAAKAIAQQFyNgIABSAFIARBA3I2AgQgCCACQQFyNgIEIAggAmogAjYCACACQQN2IQEgAkGAAkkEQCABQQN0QfghaiEAQdAhKAIAIgNBASABdCIBcQRAQeAhKAIAIABBCGoiAygCACIBSwRAEAYFIAEhDSADIRMLBUHQISADIAFyNgIAIAAhDSAAQQhqIRMLIBMgCDYCACANIAg2AgwgCCANNgIIIAggADYCDAwCCyACQQh2IgAEfyACQf///wdLBH9BHwUgAkEOIAAgAEGA/j9qQRB2QQhxIgB0IgFBgOAfakEQdkEEcSIEIAByIAEgBHQiAEGAgA9qQRB2QQJxIgFyayAAIAF0QQ92aiIAQQdqdkEBcSAAQQF0cgsFQQALIgFBAnRBgCRqIQAgCCABNgIcIAhBEGoiBEEANgIEIARBADYCACADQQEgAXQiBHFFBEBB1CEgAyAEcjYCACAAIAg2AgAgCCAANgIYIAggCDYCDCAIIAg2AggMAgsCQCAAKAIAIgAoAgRBeHEgAkYEQCAAIQoFIAJBAEEZIAFBAXZrIAFBH0YbdCEBA0AgAEEQaiABQR92QQJ0aiIEKAIAIgMEQCABQQF0IQEgAygCBEF4cSACRgRAIAMhCgwEBSADIQAMAgsACwtB4CEoAgAgBEsEQBAGBSAEIAg2AgAgCCAANgIYIAggCDYCDCAIIAg2AggMBAsLC0HgISgCACIDIApBCGoiASgCACIATSADIApNcQRAIAAgCDYCDCABIAg2AgAgCCAANgIIIAggCjYCDCAIQQA2AhgFEAYLCwsgDiQGIAVBCGoPBSAECwUgBAsFIAQLCwsLIQNB2CEoAgAiASADTwRAQeQhKAIAIQAgASADayICQQ9LBEBB5CEgACADaiIENgIAQdghIAI2AgAgBCACQQFyNgIEIAAgAWogAjYCACAAIANBA3I2AgQFQdghQQA2AgBB5CFBADYCACAAIAFBA3I2AgQgACABakEEaiIDIAMoAgBBAXI2AgALDAILQdwhKAIAIgEgA0sEQEHcISABIANrIgE2AgAMAQtBqCUoAgAEf0GwJSgCAAVBsCVBgCA2AgBBrCVBgCA2AgBBtCVBfzYCAEG4JUF/NgIAQbwlQQA2AgBBjCVBADYCAEGoJSAXQXBxQdiq1aoFczYCAEGAIAsiACADQS9qIgZqIgVBACAAayIHcSIEIANNBEAgDiQGQQAPC0GIJSgCACIABEBBgCUoAgAiAiAEaiIKIAJNIAogAEtyBEAgDiQGQQAPCwsgA0EwaiEKAkACQEGMJSgCAEEEcQRAQQAhAQUCQAJAAkBB6CEoAgAiAEUNAEGQJSECA0ACQCACKAIAIg0gAE0EQCANIAIoAgRqIABLDQELIAIoAggiAg0BDAILCyAFIAFrIAdxIgFB/////wdJBEAgARB7IgAgAigCACACKAIEakYEQCAAQX9HDQYFDAMLBUEAIQELDAILQQAQeyIAQX9GBH9BAAVBrCUoAgAiAUF/aiICIABqQQAgAWtxIABrQQAgAiAAcRsgBGoiAUGAJSgCACIFaiECIAEgA0sgAUH/////B0lxBH9BiCUoAgAiBwRAIAIgBU0gAiAHS3IEQEEAIQEMBQsLIAEQeyICIABGDQUgAiEADAIFQQALCyEBDAELIAogAUsgAUH/////B0kgAEF/R3FxRQRAIABBf0YEQEEAIQEMAgUMBAsACyAGIAFrQbAlKAIAIgJqQQAgAmtxIgJB/////wdPDQJBACABayEGIAIQe0F/RgR/IAYQexpBAAUgAiABaiEBDAMLIQELQYwlQYwlKAIAQQRyNgIACyAEQf////8HSQRAIAQQeyEAQQAQeyICIABrIgYgA0EoakshBCAGIAEgBBshASAAQX9GIARBAXNyIAAgAkkgAEF/RyACQX9HcXFBAXNyRQ0BCwwBC0GAJUGAJSgCACABaiICNgIAIAJBhCUoAgBLBEBBhCUgAjYCAAsCQEHoISgCACIGBEBBkCUhAgJAAkADQCAAIAIoAgAiBCACKAIEIgVqRg0BIAIoAggiAg0ACwwBCyACQQRqIQcgAigCDEEIcUUEQCAAIAZLIAQgBk1xBEAgByAFIAFqNgIAIAZBACAGQQhqIgBrQQdxQQAgAEEHcRsiAmohAEHcISgCACABaiIEIAJrIQFB6CEgADYCAEHcISABNgIAIAAgAUEBcjYCBCAGIARqQSg2AgRB7CFBuCUoAgA2AgAMBAsLCyAAQeAhKAIAIgJJBEBB4CEgADYCACAAIQILIAAgAWohBUGQJSEEAkACQANAIAQoAgAgBUYNASAEKAIIIgQNAAsMAQsgBCgCDEEIcUUEQCAEIAA2AgAgBEEEaiIEIAQoAgAgAWo2AgAgAEEAIABBCGoiAGtBB3FBACAAQQdxG2oiCCADaiEHIAVBACAFQQhqIgBrQQdxQQAgAEEHcRtqIgEgCGsgA2shBCAIIANBA3I2AgQCQCAGIAFGBEBB3CFB3CEoAgAgBGoiADYCAEHoISAHNgIAIAcgAEEBcjYCBAVB5CEoAgAgAUYEQEHYIUHYISgCACAEaiIANgIAQeQhIAc2AgAgByAAQQFyNgIEIAcgAGogADYCAAwCCyABKAIEIgBBA3FBAUYEfyAAQXhxIQ0gAEEDdiEFAkAgAEGAAkkEQCABKAIMIQMCQCABKAIIIgYgBUEDdEH4IWoiAEcEQCACIAZLBEAQBgsgBigCDCABRg0BEAYLCyADIAZGBEBB0CFB0CEoAgBBASAFdEF/c3E2AgAMAgsCQCADIABGBEAgA0EIaiEUBSACIANLBEAQBgsgA0EIaiIAKAIAIAFGBEAgACEUDAILEAYLCyAGIAM2AgwgFCAGNgIABSABKAIYIQoCQCABKAIMIgAgAUYEQCABQRBqIgNBBGoiBigCACIABEAgBiEDBSADKAIAIgBFDQILA0ACQCAAQRRqIgYoAgAiBUUEQCAAQRBqIgYoAgAiBUUNAQsgBiEDIAUhAAwBCwsgAiADSwRAEAYFIANBADYCACAAIQkLBSACIAEoAggiA0sEQBAGCyADQQxqIgIoAgAgAUcEQBAGCyAAQQhqIgYoAgAgAUYEQCACIAA2AgAgBiADNgIAIAAhCQUQBgsLCyAKRQ0BAkAgASgCHCIAQQJ0QYAkaiIDKAIAIAFGBEAgAyAJNgIAIAkNAUHUIUHUISgCAEEBIAB0QX9zcTYCAAwDBUHgISgCACAKSwRAEAYFIApBEGoiACAKQRRqIAAoAgAgAUYbIAk2AgAgCUUNBAsLC0HgISgCACIDIAlLBEAQBgsgCSAKNgIYIAFBEGoiAigCACIABEAgAyAASwRAEAYFIAkgADYCECAAIAk2AhgLCyACKAIEIgBFDQFB4CEoAgAgAEsEQBAGBSAJIAA2AhQgACAJNgIYCwsLIAEgDWohASANIARqBSAECyECIAFBBGoiACAAKAIAQX5xNgIAIAcgAkEBcjYCBCAHIAJqIAI2AgAgAkEDdiEDIAJBgAJJBEAgA0EDdEH4IWohAAJAQdAhKAIAIgFBASADdCIDcQRAQeAhKAIAIABBCGoiAygCACIBTQRAIAEhDyADIRUMAgsQBgVB0CEgASADcjYCACAAIQ8gAEEIaiEVCwsgFSAHNgIAIA8gBzYCDCAHIA82AgggByAANgIMDAILAn8gAkEIdiIABH9BHyACQf///wdLDQEaIAJBDiAAIABBgP4/akEQdkEIcSIAdCIDQYDgH2pBEHZBBHEiASAAciADIAF0IgBBgIAPakEQdkECcSIDcmsgACADdEEPdmoiAEEHanZBAXEgAEEBdHIFQQALCyIDQQJ0QYAkaiEAIAcgAzYCHCAHQRBqIgFBADYCBCABQQA2AgBB1CEoAgAiAUEBIAN0IgRxRQRAQdQhIAEgBHI2AgAgACAHNgIAIAcgADYCGCAHIAc2AgwgByAHNgIIDAILAkAgACgCACIAKAIEQXhxIAJGBEAgACELBSACQQBBGSADQQF2ayADQR9GG3QhAQNAIABBEGogAUEfdkECdGoiBCgCACIDBEAgAUEBdCEBIAMoAgRBeHEgAkYEQCADIQsMBAUgAyEADAILAAsLQeAhKAIAIARLBEAQBgUgBCAHNgIAIAcgADYCGCAHIAc2AgwgByAHNgIIDAQLCwtB4CEoAgAiAyALQQhqIgEoAgAiAE0gAyALTXEEQCAAIAc2AgwgASAHNgIAIAcgADYCCCAHIAs2AgwgB0EANgIYBRAGCwsLIA4kBiAIQQhqDwsLQZAlIQIDQAJAIAIoAgAiBCAGTQRAIAQgAigCBGoiBSAGSw0BCyACKAIIIQIMAQsLIAVBUWoiBEEIaiECIAYgBEEAIAJrQQdxQQAgAkEHcRtqIgIgAiAGQRBqIglJGyICQQhqIQRB6CEgAEEAIABBCGoiB2tBB3FBACAHQQdxGyIHaiIKNgIAQdwhIAFBWGoiCyAHayIHNgIAIAogB0EBcjYCBCAAIAtqQSg2AgRB7CFBuCUoAgA2AgAgAkEEaiIHQRs2AgAgBEGQJSkCADcCACAEQZglKQIANwIIQZAlIAA2AgBBlCUgATYCAEGcJUEANgIAQZglIAQ2AgAgAkEYaiEAA0AgAEEEaiIBQQc2AgAgAEEIaiAFSQRAIAEhAAwBCwsgAiAGRwRAIAcgBygCAEF+cTYCACAGIAIgBmsiBEEBcjYCBCACIAQ2AgAgBEEDdiEBIARBgAJJBEAgAUEDdEH4IWohAEHQISgCACICQQEgAXQiAXEEQEHgISgCACAAQQhqIgEoAgAiAksEQBAGBSACIREgASEWCwVB0CEgAiABcjYCACAAIREgAEEIaiEWCyAWIAY2AgAgESAGNgIMIAYgETYCCCAGIAA2AgwMAwsgBEEIdiIABH8gBEH///8HSwR/QR8FIARBDiAAIABBgP4/akEQdkEIcSIAdCIBQYDgH2pBEHZBBHEiAiAAciABIAJ0IgBBgIAPakEQdkECcSIBcmsgACABdEEPdmoiAEEHanZBAXEgAEEBdHILBUEACyIBQQJ0QYAkaiEAIAYgATYCHCAGQQA2AhQgCUEANgIAQdQhKAIAIgJBASABdCIFcUUEQEHUISACIAVyNgIAIAAgBjYCACAGIAA2AhggBiAGNgIMIAYgBjYCCAwDCwJAIAAoAgAiACgCBEF4cSAERgRAIAAhCAUgBEEAQRkgAUEBdmsgAUEfRht0IQIDQCAAQRBqIAJBH3ZBAnRqIgUoAgAiAQRAIAJBAXQhAiABKAIEQXhxIARGBEAgASEIDAQFIAEhAAwCCwALC0HgISgCACAFSwRAEAYFIAUgBjYCACAGIAA2AhggBiAGNgIMIAYgBjYCCAwFCwsLQeAhKAIAIgEgCEEIaiICKAIAIgBNIAEgCE1xBEAgACAGNgIMIAIgBjYCACAGIAA2AgggBiAINgIMIAZBADYCGAUQBgsLBUHgISgCACICRSAAIAJJcgRAQeAhIAA2AgALQZAlIAA2AgBBlCUgATYCAEGcJUEANgIAQfQhQaglKAIANgIAQfAhQX82AgBBhCJB+CE2AgBBgCJB+CE2AgBBjCJBgCI2AgBBiCJBgCI2AgBBlCJBiCI2AgBBkCJBiCI2AgBBnCJBkCI2AgBBmCJBkCI2AgBBpCJBmCI2AgBBoCJBmCI2AgBBrCJBoCI2AgBBqCJBoCI2AgBBtCJBqCI2AgBBsCJBqCI2AgBBvCJBsCI2AgBBuCJBsCI2AgBBxCJBuCI2AgBBwCJBuCI2AgBBzCJBwCI2AgBByCJBwCI2AgBB1CJByCI2AgBB0CJByCI2AgBB3CJB0CI2AgBB2CJB0CI2AgBB5CJB2CI2AgBB4CJB2CI2AgBB7CJB4CI2AgBB6CJB4CI2AgBB9CJB6CI2AgBB8CJB6CI2AgBB/CJB8CI2AgBB+CJB8CI2AgBBhCNB+CI2AgBBgCNB+CI2AgBBjCNBgCM2AgBBiCNBgCM2AgBBlCNBiCM2AgBBkCNBiCM2AgBBnCNBkCM2AgBBmCNBkCM2AgBBpCNBmCM2AgBBoCNBmCM2AgBBrCNBoCM2AgBBqCNBoCM2AgBBtCNBqCM2AgBBsCNBqCM2AgBBvCNBsCM2AgBBuCNBsCM2AgBBxCNBuCM2AgBBwCNBuCM2AgBBzCNBwCM2AgBByCNBwCM2AgBB1CNByCM2AgBB0CNByCM2AgBB3CNB0CM2AgBB2CNB0CM2AgBB5CNB2CM2AgBB4CNB2CM2AgBB7CNB4CM2AgBB6CNB4CM2AgBB9CNB6CM2AgBB8CNB6CM2AgBB/CNB8CM2AgBB+CNB8CM2AgBB6CEgAEEAIABBCGoiAmtBB3FBACACQQdxGyICaiIENgIAQdwhIAFBWGoiASACayICNgIAIAQgAkEBcjYCBCAAIAFqQSg2AgRB7CFBuCUoAgA2AgALC0HcISgCACIAIANLBEBB3CEgACADayIBNgIADAILCxBjQQw2AgAgDiQGQQAPC0HoIUHoISgCACIAIANqIgI2AgAgAiABQQFyNgIEIAAgA0EDcjYCBAsgDiQGIABBCGoLrRIBEX8gAEUEQA8LIABBeGoiBEHgISgCACIMSQRAEAYLIABBfGooAgAiAEEDcSILQQFGBEAQBgsgBCAAQXhxIgJqIQcCQCAAQQFxBEAgAiEBIAQiAyEFBSAEKAIAIQkgC0UEQA8LIAQgCWsiACAMSQRAEAYLIAkgAmohBEHkISgCACAARgRAIAdBBGoiASgCACIDQQNxQQNHBEAgACEDIAQhASAAIQUMAwtB2CEgBDYCACABIANBfnE2AgAgACAEQQFyNgIEIAAgBGogBDYCAA8LIAlBA3YhAiAJQYACSQRAIAAoAgwhAyAAKAIIIgUgAkEDdEH4IWoiAUcEQCAMIAVLBEAQBgsgBSgCDCAARwRAEAYLCyADIAVGBEBB0CFB0CEoAgBBASACdEF/c3E2AgAgACEDIAQhASAAIQUMAwsgAyABRgRAIANBCGohBgUgDCADSwRAEAYLIANBCGoiASgCACAARgRAIAEhBgUQBgsLIAUgAzYCDCAGIAU2AgAgACEDIAQhASAAIQUMAgsgACgCGCENAkAgACgCDCICIABGBEAgAEEQaiIGQQRqIgkoAgAiAgRAIAkhBgUgBigCACICRQ0CCwNAAkAgAkEUaiIJKAIAIgtFBEAgAkEQaiIJKAIAIgtFDQELIAkhBiALIQIMAQsLIAwgBksEQBAGBSAGQQA2AgAgAiEICwUgDCAAKAIIIgZLBEAQBgsgBkEMaiIJKAIAIABHBEAQBgsgAkEIaiILKAIAIABGBEAgCSACNgIAIAsgBjYCACACIQgFEAYLCwsgDQRAIAAoAhwiAkECdEGAJGoiBigCACAARgRAIAYgCDYCACAIRQRAQdQhQdQhKAIAQQEgAnRBf3NxNgIAIAAhAyAEIQEgACEFDAQLBUHgISgCACANSwRAEAYFIA1BEGoiAiANQRRqIAIoAgAgAEYbIAg2AgAgCEUEQCAAIQMgBCEBIAAhBQwFCwsLQeAhKAIAIgYgCEsEQBAGCyAIIA02AhggAEEQaiIJKAIAIgIEQCAGIAJLBEAQBgUgCCACNgIQIAIgCDYCGAsLIAkoAgQiAgRAQeAhKAIAIAJLBEAQBgUgCCACNgIUIAIgCDYCGCAAIQMgBCEBIAAhBQsFIAAhAyAEIQEgACEFCwUgACEDIAQhASAAIQULCwsgBSAHTwRAEAYLIAdBBGoiBCgCACIAQQFxRQRAEAYLIABBAnEEfyAEIABBfnE2AgAgAyABQQFyNgIEIAUgAWogATYCACABBUHoISgCACAHRgRAQdwhQdwhKAIAIAFqIgA2AgBB6CEgAzYCACADIABBAXI2AgQgA0HkISgCAEcEQA8LQeQhQQA2AgBB2CFBADYCAA8LQeQhKAIAIAdGBEBB2CFB2CEoAgAgAWoiADYCAEHkISAFNgIAIAMgAEEBcjYCBCAFIABqIAA2AgAPCyAAQXhxIAFqIQQgAEEDdiEGAkAgAEGAAkkEQCAHKAIMIQEgBygCCCICIAZBA3RB+CFqIgBHBEBB4CEoAgAgAksEQBAGCyACKAIMIAdHBEAQBgsLIAEgAkYEQEHQIUHQISgCAEEBIAZ0QX9zcTYCAAwCCyABIABGBEAgAUEIaiEQBUHgISgCACABSwRAEAYLIAFBCGoiACgCACAHRgRAIAAhEAUQBgsLIAIgATYCDCAQIAI2AgAFIAcoAhghCAJAIAcoAgwiACAHRgRAIAdBEGoiAUEEaiICKAIAIgAEQCACIQEFIAEoAgAiAEUNAgsDQAJAIABBFGoiAigCACIGRQRAIABBEGoiAigCACIGRQ0BCyACIQEgBiEADAELC0HgISgCACABSwRAEAYFIAFBADYCACAAIQoLBUHgISgCACAHKAIIIgFLBEAQBgsgAUEMaiICKAIAIAdHBEAQBgsgAEEIaiIGKAIAIAdGBEAgAiAANgIAIAYgATYCACAAIQoFEAYLCwsgCARAIAcoAhwiAEECdEGAJGoiASgCACAHRgRAIAEgCjYCACAKRQRAQdQhQdQhKAIAQQEgAHRBf3NxNgIADAQLBUHgISgCACAISwRAEAYFIAhBEGoiACAIQRRqIAAoAgAgB0YbIAo2AgAgCkUNBAsLQeAhKAIAIgEgCksEQBAGCyAKIAg2AhggB0EQaiICKAIAIgAEQCABIABLBEAQBgUgCiAANgIQIAAgCjYCGAsLIAIoAgQiAARAQeAhKAIAIABLBEAQBgUgCiAANgIUIAAgCjYCGAsLCwsLIAMgBEEBcjYCBCAFIARqIAQ2AgAgA0HkISgCAEYEf0HYISAENgIADwUgBAsLIgVBA3YhASAFQYACSQRAIAFBA3RB+CFqIQBB0CEoAgAiBUEBIAF0IgFxBEBB4CEoAgAgAEEIaiIBKAIAIgVLBEAQBgUgBSEPIAEhEQsFQdAhIAUgAXI2AgAgACEPIABBCGohEQsgESADNgIAIA8gAzYCDCADIA82AgggAyAANgIMDwsgBUEIdiIABH8gBUH///8HSwR/QR8FIAVBDiAAIABBgP4/akEQdkEIcSIAdCIBQYDgH2pBEHZBBHEiBCAAciABIAR0IgBBgIAPakEQdkECcSIBcmsgACABdEEPdmoiAEEHanZBAXEgAEEBdHILBUEACyIBQQJ0QYAkaiEAIAMgATYCHCADQQA2AhQgA0EANgIQAkBB1CEoAgAiBEEBIAF0IgJxBEACQCAAKAIAIgAoAgRBeHEgBUYEQCAAIQ4FIAVBAEEZIAFBAXZrIAFBH0YbdCEEA0AgAEEQaiAEQR92QQJ0aiICKAIAIgEEQCAEQQF0IQQgASgCBEF4cSAFRgRAIAEhDgwEBSABIQAMAgsACwtB4CEoAgAgAksEQBAGBSACIAM2AgAgAyAANgIYIAMgAzYCDCADIAM2AggMBAsLC0HgISgCACIBIA5BCGoiBSgCACIATSABIA5NcQRAIAAgAzYCDCAFIAM2AgAgAyAANgIIIAMgDjYCDCADQQA2AhgFEAYLBUHUISAEIAJyNgIAIAAgAzYCACADIAA2AhggAyADNgIMIAMgAzYCCAsLQfAhQfAhKAIAQX9qIgA2AgAgAARADwtBmCUhAANAIAAoAgAiAUEIaiEAIAENAAtB8CFBfzYCAAuAAQECfyAARQRAIAEQXg8LIAFBv39LBEAQY0EMNgIAQQAPCyAAQXhqQRAgAUELakF4cSABQQtJGxBhIgIEQCACQQhqDwsgARBeIgJFBEBBAA8LIAIgACAAQXxqKAIAIgNBeHFBBEEIIANBA3EbayIDIAEgAyABSRsQeRogABBfIAILmAkBDH8CQCAAIABBBGoiCigCACIIQXhxIgJqIQUgCEEDcSIJQQFHQeAhKAIAIgsgAE1xIAUgAEtxRQRAEAYLIAVBBGoiBygCACIEQQFxRQRAEAYLIAlFBEAgAUGAAkkNASACIAFBBGpPBEAgAiABa0GwJSgCAEEBdE0EQCAADwsLDAELIAIgAU8EQCACIAFrIgNBD00EQCAADwsgCiAIQQFxIAFyQQJyNgIAIAAgAWoiASADQQNyNgIEIAcgBygCAEEBcjYCACABIAMQYiAADwtB6CEoAgAgBUYEQEHcISgCACACaiIDIAFNDQEgCiAIQQFxIAFyQQJyNgIAIAAgAWoiAiADIAFrIgFBAXI2AgRB6CEgAjYCAEHcISABNgIAIAAPC0HkISgCACAFRgRAQdghKAIAIAJqIgIgAUkNASACIAFrIgNBD0sEQCAKIAhBAXEgAXJBAnI2AgAgACABaiIBIANBAXI2AgQgACACaiICIAM2AgAgAkEEaiICIAIoAgBBfnE2AgAFIAogCEEBcSACckECcjYCACAAIAJqQQRqIgEgASgCAEEBcjYCAEEAIQFBACEDC0HYISADNgIAQeQhIAE2AgAgAA8LIARBAnENACAEQXhxIAJqIgwgAUkNACAMIAFrIQ0gBEEDdiECAkAgBEGAAkkEQCAFKAIMIQYgBSgCCCIEIAJBA3RB+CFqIgdHBEAgCyAESwRAEAYLIAQoAgwgBUcEQBAGCwsgBiAERgRAQdAhQdAhKAIAQQEgAnRBf3NxNgIADAILIAYgB0YEQCAGQQhqIQMFIAsgBksEQBAGCyAGQQhqIgIoAgAgBUYEQCACIQMFEAYLCyAEIAY2AgwgAyAENgIABSAFKAIYIQkCQCAFKAIMIgMgBUYEQCAFQRBqIgJBBGoiBCgCACIDBEAgBCECBSACKAIAIgNFDQILA0ACQCADQRRqIgQoAgAiB0UEQCADQRBqIgQoAgAiB0UNAQsgBCECIAchAwwBCwsgCyACSwRAEAYFIAJBADYCACADIQYLBSALIAUoAggiAksEQBAGCyACQQxqIgQoAgAgBUcEQBAGCyADQQhqIgcoAgAgBUYEQCAEIAM2AgAgByACNgIAIAMhBgUQBgsLCyAJBEAgBSgCHCIDQQJ0QYAkaiICKAIAIAVGBEAgAiAGNgIAIAZFBEBB1CFB1CEoAgBBASADdEF/c3E2AgAMBAsFQeAhKAIAIAlLBEAQBgUgCUEQaiIDIAlBFGogAygCACAFRhsgBjYCACAGRQ0ECwtB4CEoAgAiAiAGSwRAEAYLIAYgCTYCGCAFQRBqIgQoAgAiAwRAIAIgA0sEQBAGBSAGIAM2AhAgAyAGNgIYCwsgBCgCBCIDBEBB4CEoAgAgA0sEQBAGBSAGIAM2AhQgAyAGNgIYCwsLCwsgDUEQSQRAIAogCEEBcSAMckECcjYCACAAIAxqQQRqIgEgASgCAEEBcjYCAAUgCiAIQQFxIAFyQQJyNgIAIAAgAWoiASANQQNyNgIEIAAgDGpBBGoiAyADKAIAQQFyNgIAIAEgDRBiCyAADwtBAAvxEAEOfwJAIAAgAWohBgJAIAAoAgQiB0EBcQRAIAAhAiABIQQFIAAoAgAhBSAHQQNxRQRADwsgACAFayIAQeAhKAIAIgxJBEAQBgsgBSABaiEBQeQhKAIAIABGBEAgBkEEaiIEKAIAIgJBA3FBA0cEQCAAIQIgASEEDAMLQdghIAE2AgAgBCACQX5xNgIAIAAgAUEBcjYCBCAGIAE2AgAPCyAFQQN2IQcgBUGAAkkEQCAAKAIMIQIgACgCCCIFIAdBA3RB+CFqIgRHBEAgDCAFSwRAEAYLIAUoAgwgAEcEQBAGCwsgAiAFRgRAQdAhQdAhKAIAQQEgB3RBf3NxNgIAIAAhAiABIQQMAwsgAiAERgRAIAJBCGohAwUgDCACSwRAEAYLIAJBCGoiBCgCACAARgRAIAQhAwUQBgsLIAUgAjYCDCADIAU2AgAgACECIAEhBAwCCyAAKAIYIQoCQCAAKAIMIgMgAEYEQCAAQRBqIgVBBGoiBygCACIDBEAgByEFBSAFKAIAIgNFDQILA0ACQCADQRRqIgcoAgAiC0UEQCADQRBqIgcoAgAiC0UNAQsgByEFIAshAwwBCwsgDCAFSwRAEAYFIAVBADYCACADIQgLBSAMIAAoAggiBUsEQBAGCyAFQQxqIgcoAgAgAEcEQBAGCyADQQhqIgsoAgAgAEYEQCAHIAM2AgAgCyAFNgIAIAMhCAUQBgsLCyAKBEAgACgCHCIDQQJ0QYAkaiIFKAIAIABGBEAgBSAINgIAIAhFBEBB1CFB1CEoAgBBASADdEF/c3E2AgAgACECIAEhBAwECwVB4CEoAgAgCksEQBAGBSAKQRBqIgMgCkEUaiADKAIAIABGGyAINgIAIAhFBEAgACECIAEhBAwFCwsLQeAhKAIAIgUgCEsEQBAGCyAIIAo2AhggAEEQaiIHKAIAIgMEQCAFIANLBEAQBgUgCCADNgIQIAMgCDYCGAsLIAcoAgQiAwRAQeAhKAIAIANLBEAQBgUgCCADNgIUIAMgCDYCGCAAIQIgASEECwUgACECIAEhBAsFIAAhAiABIQQLCwsgBkHgISgCACIHSQRAEAYLIAZBBGoiASgCACIAQQJxBEAgASAAQX5xNgIAIAIgBEEBcjYCBCACIARqIAQ2AgAFQeghKAIAIAZGBEBB3CFB3CEoAgAgBGoiADYCAEHoISACNgIAIAIgAEEBcjYCBCACQeQhKAIARwRADwtB5CFBADYCAEHYIUEANgIADwtB5CEoAgAgBkYEQEHYIUHYISgCACAEaiIANgIAQeQhIAI2AgAgAiAAQQFyNgIEIAIgAGogADYCAA8LIABBeHEgBGohBCAAQQN2IQUCQCAAQYACSQRAIAYoAgwhASAGKAIIIgMgBUEDdEH4IWoiAEcEQCAHIANLBEAQBgsgAygCDCAGRwRAEAYLCyABIANGBEBB0CFB0CEoAgBBASAFdEF/c3E2AgAMAgsgASAARgRAIAFBCGohDgUgByABSwRAEAYLIAFBCGoiACgCACAGRgRAIAAhDgUQBgsLIAMgATYCDCAOIAM2AgAFIAYoAhghCAJAIAYoAgwiACAGRgRAIAZBEGoiAUEEaiIDKAIAIgAEQCADIQEFIAEoAgAiAEUNAgsDQAJAIABBFGoiAygCACIFRQRAIABBEGoiAygCACIFRQ0BCyADIQEgBSEADAELCyAHIAFLBEAQBgUgAUEANgIAIAAhCQsFIAcgBigCCCIBSwRAEAYLIAFBDGoiAygCACAGRwRAEAYLIABBCGoiBSgCACAGRgRAIAMgADYCACAFIAE2AgAgACEJBRAGCwsLIAgEQCAGKAIcIgBBAnRBgCRqIgEoAgAgBkYEQCABIAk2AgAgCUUEQEHUIUHUISgCAEEBIAB0QX9zcTYCAAwECwVB4CEoAgAgCEsEQBAGBSAIQRBqIgAgCEEUaiAAKAIAIAZGGyAJNgIAIAlFDQQLC0HgISgCACIBIAlLBEAQBgsgCSAINgIYIAZBEGoiAygCACIABEAgASAASwRAEAYFIAkgADYCECAAIAk2AhgLCyADKAIEIgAEQEHgISgCACAASwRAEAYFIAkgADYCFCAAIAk2AhgLCwsLCyACIARBAXI2AgQgAiAEaiAENgIAIAJB5CEoAgBGBEBB2CEgBDYCAA8LCyAEQQN2IQEgBEGAAkkEQCABQQN0QfghaiEAQdAhKAIAIgRBASABdCIBcQRAQeAhKAIAIABBCGoiASgCACIESwRAEAYFIAQhDSABIQ8LBUHQISAEIAFyNgIAIAAhDSAAQQhqIQ8LIA8gAjYCACANIAI2AgwgAiANNgIIIAIgADYCDA8LIARBCHYiAAR/IARB////B0sEf0EfBSAEQQ4gACAAQYD+P2pBEHZBCHEiAHQiAUGA4B9qQRB2QQRxIgMgAHIgASADdCIAQYCAD2pBEHZBAnEiAXJrIAAgAXRBD3ZqIgBBB2p2QQFxIABBAXRyCwVBAAsiAUECdEGAJGohACACIAE2AhwgAkEANgIUIAJBADYCEEHUISgCACIDQQEgAXQiBXFFBEBB1CEgAyAFcjYCACAAIAI2AgAMAQsCQCAAKAIAIgAoAgRBeHEgBEYEfyAABSAEQQBBGSABQQF2ayABQR9GG3QhAwNAIABBEGogA0EfdkECdGoiBSgCACIBBEAgA0EBdCEDIAEoAgRBeHEgBEYNAyABIQAMAQsLQeAhKAIAIAVLBEAQBgsgBSACNgIADAILIQELQeAhKAIAIgQgAUEIaiIDKAIAIgBNIAQgAU1xRQRAEAYLIAAgAjYCDCADIAI2AgAgAiAANgIIIAIgATYCDCACQQA2AhgPCyACIAA2AhggAiACNgIMIAIgAjYCCAsFAEHAJQtQAQJ/An8gAgR/A0AgACwAACIDIAEsAAAiBEYEQCAAQQFqIQAgAUEBaiEBQQAgAkF/aiICRQ0DGgwBCwsgA0H/AXEgBEH/AXFrBUEACwsiAAupAQECfyABQf8HSgRAIABEAAAAAAAA4H+iIgBEAAAAAAAA4H+iIAAgAUH+D0oiAhshACABQYJwaiIDQf8HIANB/wdIGyABQYF4aiACGyEBBSABQYJ4SARAIABEAAAAAAAAEACiIgBEAAAAAAAAEACiIAAgAUGEcEgiAhshACABQfwPaiIDQYJ4IANBgnhKGyABQf4HaiACGyEBCwsgACABQf8Haq1CNIa/oguaBAEIfyMGIQojBkHQAWokBiAKIgdBwAFqIgRCATcDAAJAIAIgAWwiCwRAQQAgAmshCSAHIAI2AgQgByACNgIAQQIhBiACIQUgAiEBA0AgByAGQQJ0aiAFIAJqIAFqIgg2AgAgBkEBaiEGIAggC0kEQCABIQUgCCEBDAELCyAAIAtqIAlqIgYgAEsEQCAGIQhBASEBQQEhBQNAIAVBA3FBA0YEfyAAIAIgAyABIAcQZyAEQQIQaCABQQJqBSAHIAFBf2oiBUECdGooAgAgCCAAa0kEQCAAIAIgAyABIAcQZwUgACACIAMgBCABQQAgBxBpCyABQQFGBH8gBEEBEGpBAAUgBCAFEGpBAQsLIQEgBCAEKAIAQQFyIgU2AgAgACACaiIAIAZJDQALIAEhBgVBASEGQQEhBQsgACACIAMgBCAGQQAgBxBpIARBBGohCCAAIQEgBiEAA0ACfwJAIABBAUYgBUEBRnEEfyAIKAIARQ0FDAEFIABBAkgNASAEQQIQaiAEIAQoAgBBB3M2AgAgBEEBEGggASAHIABBfmoiBUECdGooAgBrIAlqIAIgAyAEIABBf2pBASAHEGkgBEEBEGogBCAEKAIAQQFyIgY2AgAgASAJaiIBIAIgAyAEIAVBASAHEGkgBSEAIAYLDAELIAQgBBBrIgUQaCABIAlqIQEgBSAAaiEAIAQoAgALIQUMAAALAAsLIAokBgvgAQEIfyMGIQojBkHwAWokBiAKIgggADYCAAJAIANBAUoEQEEAIAFrIQwgACEGIAMhCUEBIQMgACEFA0AgBSAGIAxqIgcgBCAJQX5qIgZBAnRqKAIAayIAIAJBA3ERAABBf0oEQCAFIAcgAkEDcREAAEF/Sg0DCyAAIAcgAkEDcREAAEF/SiEFIAggA0ECdGohCyADQQFqIQMgBQR/IAsgADYCACAJQX9qBSALIAc2AgAgByEAIAYLIglBAUoEQCAAIQYgCCgCACEFDAELCwVBASEDCwsgASAIIAMQbSAKJAYLWQEDfyAAQQRqIQIgACABQR9LBH8gACACKAIAIgM2AgAgAkEANgIAIAFBYGohAUEABSAAKAIAIQMgAigCAAsiBEEgIAFrdCADIAF2cjYCACACIAQgAXY2AgALjQMBB38jBiEKIwZB8AFqJAYgCkHoAWoiCSADKAIAIgc2AgAgCUEEaiIMIAMoAgQiAzYCACAKIgsgADYCAAJAAkAgB0EBRyADcgRAQQAgAWshDSAAIAYgBEECdGooAgBrIgggACACQQNxEQAAQQFIBEBBASEDBUEBIQcgBUUhBSAAIQMgCCEAA0AgBSAEQQFKcQRAIAYgBEF+akECdGooAgAhBSADIA1qIgggACACQQNxEQAAQX9KBEAgByEFDAULIAggBWsgACACQQNxEQAAQX9KBEAgByEFDAULCyAHQQFqIQUgCyAHQQJ0aiAANgIAIAkgCRBrIgMQaCADIARqIQQgCSgCAEEBRyAMKAIAQQBHckUEQCAAIQMMBAsgACAGIARBAnRqKAIAayIIIAsoAgAgAkEDcREAAEEBSAR/IAUhA0EABSAAIQMgBSEHQQEhBSAIIQAMAQshBQsLBUEBIQMLIAVFBEAgAyEFIAAhAwwBCwwBCyABIAsgBRBtIAMgASACIAQgBhBnCyAKJAYLVwEDfyAAQQRqIgIgAUEfSwR/IAIgACgCACIDNgIAIABBADYCACABQWBqIQFBAAUgAigCACEDIAAoAgALIgRBICABa3YgAyABdHI2AgAgACAEIAF0NgIACycBAX8gACgCAEF/ahBsIgEEfyABBSAAKAIEEGwiAEEgakEAIAAbCws5AQJ/IAAEQCAAQQFxRQRAA0AgAUEBaiEBIABBAXYhAiAAQQJxRQRAIAIhAAwBCwsLBUEgIQELIAELpAEBBX8jBiEFIwZBgAJqJAYgBSEDAkAgAkECTgRAIAEgAkECdGoiByADNgIAIAAEQANAIAMgASgCACAAQYACIABBgAJJGyIEEHkaQQAhAwNAIAEgA0ECdGoiBigCACABIANBAWoiA0ECdGooAgAgBBB5GiAGIAYoAgAgBGo2AgAgAyACRw0ACyAAIARrIgBFDQMgBygCACEDDAAACwALCwsgBSQGC/4IAwd/AX4EfCMGIQcjBkEwaiQGIAdBEGohBCAHIQUgAL0iCUI/iKchBgJ/AkAgCUIgiKciAkH/////B3EiA0H71L2ABEkEfyACQf//P3FB+8MkRg0BIAZBAEchAiADQf2yi4AESQR/IAIEfyABIABEAABAVPsh+T+gIgBEMWNiGmG00D2gIgo5AwAgASAAIAqhRDFjYhphtNA9oDkDCEF/BSABIABEAABAVPsh+b+gIgBEMWNiGmG00L2gIgo5AwAgASAAIAqhRDFjYhphtNC9oDkDCEEBCwUgAgR/IAEgAEQAAEBU+yEJQKAiAEQxY2IaYbTgPaAiCjkDACABIAAgCqFEMWNiGmG04D2gOQMIQX4FIAEgAEQAAEBU+yEJwKAiAEQxY2IaYbTgvaAiCjkDACABIAAgCqFEMWNiGmG04L2gOQMIQQILCwUgA0G8jPGABEkEQCADQb3714AESQRAIANB/LLLgARGDQMgBgRAIAEgAEQAADB/fNkSQKAiAETKlJOnkQ7pPaAiCjkDACABIAAgCqFEypSTp5EO6T2gOQMIQX0MBQUgASAARAAAMH982RLAoCIARMqUk6eRDum9oCIKOQMAIAEgACAKoUTKlJOnkQ7pvaA5AwhBAwwFCwAFIANB+8PkgARGDQMgBgRAIAEgAEQAAEBU+yEZQKAiAEQxY2IaYbTwPaAiCjkDACABIAAgCqFEMWNiGmG08D2gOQMIQXwMBQUgASAARAAAQFT7IRnAoCIARDFjYhphtPC9oCIKOQMAIAEgACAKoUQxY2IaYbTwvaA5AwhBBAwFCwALAAsgA0H7w+SJBEkNASADQf//v/8HSwRAIAEgACAAoSIAOQMIIAEgADkDAEEADAMLIAlC/////////weDQoCAgICAgICwwQCEvyEAQQAhAgNAIAQgAkEDdGogAKq3Igo5AwAgACAKoUQAAAAAAABwQaIhACACQQFqIgJBAkcNAAsgBCAAOQMQIABEAAAAAAAAAABhBEBBASECA0AgAkF/aiEIIAQgAkEDdGorAwBEAAAAAAAAAABhBEAgCCECDAELCwVBAiECCyAEIAUgA0EUdkHqd2ogAkEBakEBEG8hAiAFKwMAIQAgBgR/IAEgAJo5AwAgASAFKwMImjkDCEEAIAJrBSABIAA5AwAgASAFKwMIOQMIIAILCwwBCyAARIPIyW0wX+Q/okQAAAAAAAA4Q6BEAAAAAAAAOMOgIguqIQIgASAAIAtEAABAVPsh+T+ioSIKIAtEMWNiGmG00D2iIgChIgw5AwAgA0EUdiIIIAy9QjSIp0H/D3FrQRBKBEAgC0RzcAMuihmjO6IgCiAKIAtEAABgGmG00D2iIgChIgqhIAChoSEAIAEgCiAAoSIMOQMAIAtEwUkgJZqDezmiIAogCiALRAAAAC6KGaM7oiINoSILoSANoaEhDSAIIAy9QjSIp0H/D3FrQTFKBEAgASALIA2hIgw5AwAgDSEAIAshCgsLIAEgCiAMoSAAoTkDCCACCyEBIAckBiABC/8QAhZ/A3wjBiEPIwZBsARqJAYgD0HAAmohECACQX1qQRhtIgVBACAFQQBKGyESIARBAnRBoBBqKAIAIg0gA0F/aiIHakEATgRAIA0gA2ohCSASIAdrIQUDQCAQIAZBA3RqIAVBAEgEfEQAAAAAAAAAAAUgBUECdEGwEGooAgC3CyIbOQMAIAVBAWohBSAGQQFqIgYgCUcNAAsLIA9B4ANqIQwgD0GgAWohCiAPIQ4gAkFoaiASQWhsIhZqIQkgA0EASiEIQQAhBQNAIAgEQCAFIAdqIQtEAAAAAAAAAAAhG0EAIQYDQCAbIAAgBkEDdGorAwAgECALIAZrQQN0aisDAKKgIRsgBkEBaiIGIANHDQALBUQAAAAAAAAAACEbCyAOIAVBA3RqIBs5AwAgBUEBaiEGIAUgDUgEQCAGIQUMAQsLIAlBAEohE0EYIAlrIRRBFyAJayEXIAlFIRggA0EASiEZIA0hBQJAAkACQANAIA4gBUEDdGorAwAhGyAFQQBKIgsEQCAFIQZBACEHA0AgDCAHQQJ0aiAbIBtEAAAAAAAAcD6iqrciG0QAAAAAAABwQaKhqjYCACAOIAZBf2oiCEEDdGorAwAgG6AhGyAHQQFqIQcgBkEBSgRAIAghBgwBCwsLIBsgCRBlIhsgG0QAAAAAAADAP6KcRAAAAAAAACBAoqEiG6ohBiAbIAa3oSEbAkACQAJAIBMEfyAMIAVBf2pBAnRqIggoAgAiESAUdSEHIAggESAHIBR0ayIINgIAIAggF3UhCCAHIAZqIQYMAQUgGAR/IAwgBUF/akECdGooAgBBF3UhCAwCBSAbRAAAAAAAAOA/ZgR/QQIhCAwEBUEACwsLIQgMAgsgCEEASg0ADAELIAYhByALBEBBACEGQQAhCwNAIAwgC0ECdGoiGigCACERAkACQCAGBH9B////ByEVDAEFIBEEf0EBIQZBgICACCEVDAIFQQALCyEGDAELIBogFSARazYCAAsgC0EBaiILIAVHDQALIAYhCwVBACELCyAHQQFqIQYCQCATBEACQAJAAkAgCUEBaw4CAAECCyAMIAVBf2pBAnRqIgcgBygCAEH///8DcTYCAAwDCyAMIAVBf2pBAnRqIgcgBygCAEH///8BcTYCAAsLCyAIQQJGBEBEAAAAAAAA8D8gG6EhGyALBEAgG0QAAAAAAADwPyAJEGWhIRsLQQIhCAsLIBtEAAAAAAAAAABiDQIgBSANSgRAQQAhCyAFIQcDQCAMIAdBf2oiB0ECdGooAgAgC3IhCyAHIA1KDQALIAsNAgtBASEGA0AgBkEBaiEHIAwgDSAGa0ECdGooAgBFBEAgByEGDAELCyAGIAVqIQcDQCAQIAUgA2oiCEEDdGogBUEBaiIGIBJqQQJ0QbAQaigCALc5AwAgGQRARAAAAAAAAAAAIRtBACEFA0AgGyAAIAVBA3RqKwMAIBAgCCAFa0EDdGorAwCioCEbIAVBAWoiBSADRw0ACwVEAAAAAAAAAAAhGwsgDiAGQQN0aiAbOQMAIAYgB0gEQCAGIQUMAQsLIAchBQwAAAsACyAJIQADQCAAQWhqIQAgDCAFQX9qIgVBAnRqKAIARQ0ACyAAIQIgBSEADAELIAwgG0EAIAlrEGUiG0QAAAAAAABwQWYEfyAMIAVBAnRqIBsgG0QAAAAAAABwPqKqIgO3RAAAAAAAAHBBoqGqNgIAIBYgAmohAiAFQQFqBSAJIQIgG6ohAyAFCyIAQQJ0aiADNgIAC0QAAAAAAADwPyACEGUhGyAAQX9KIgcEQCAAIQIDQCAOIAJBA3RqIBsgDCACQQJ0aigCALeiOQMAIBtEAAAAAAAAcD6iIRsgAkF/aiEDIAJBAEoEQCADIQIMAQsLIAcEQCAAIQIDQCAAIAJrIQlBACEDRAAAAAAAAAAAIRsDQCAbIANBA3RBwBJqKwMAIA4gAyACakEDdGorAwCioCEbIANBAWohBSADIA1OIAMgCU9yRQRAIAUhAwwBCwsgCiAJQQN0aiAbOQMAIAJBf2ohAyACQQBKBEAgAyECDAELCwsLAkACQAJAAkAgBA4EAAEBAgMLIAcEQEQAAAAAAAAAACEbA0AgGyAKIABBA3RqKwMAoCEbIABBf2ohAiAAQQBKBEAgAiEADAELCwVEAAAAAAAAAAAhGwsgASAbmiAbIAgbOQMADAILIAcEQEQAAAAAAAAAACEbIAAhAgNAIBsgCiACQQN0aisDAKAhGyACQX9qIQMgAkEASgRAIAMhAgwBCwsFRAAAAAAAAAAAIRsLIAEgGyAbmiAIRSIEGzkDACAKKwMAIBuhIRsgAEEBTgRAQQEhAgNAIBsgCiACQQN0aisDAKAhGyACQQFqIQMgAiAARwRAIAMhAgwBCwsLIAEgGyAbmiAEGzkDCAwBCyAAQQBKBEAgCiAAIgJBA3RqKwMAIRsDQCAKIAJBf2oiA0EDdGoiBCsDACIdIBugIRwgCiACQQN0aiAbIB0gHKGgOQMAIAQgHDkDACACQQFKBEAgAyECIBwhGwwBCwsgAEEBSiIEBEAgCiAAIgJBA3RqKwMAIRsDQCAKIAJBf2oiA0EDdGoiBSsDACIdIBugIRwgCiACQQN0aiAbIB0gHKGgOQMAIAUgHDkDACACQQJKBEAgAyECIBwhGwwBCwsgBARARAAAAAAAAAAAIRsDQCAbIAogAEEDdGorAwCgIRsgAEF/aiECIABBAkoEQCACIQAMAQsLBUQAAAAAAAAAACEbCwVEAAAAAAAAAAAhGwsFRAAAAAAAAAAAIRsLIAorAwAhHCAIBEAgASAcmjkDACABIAorAwiaOQMIIAEgG5o5AxAFIAEgHDkDACABIAorAwg5AwggASAbOQMQCwsgDyQGIAZBB3ELlwEBA3wgACAAoiIDIAMgA6KiIANEfNXPWjrZ5T2iROucK4rm5Vq+oKIgAyADRH3+sVfjHcc+okTVYcEZoAEqv6CiRKb4EBEREYE/oKAhBSADIACiIQQgACAERElVVVVVVcU/oiADIAFEAAAAAAAA4D+iIAQgBaKhoiABoaChIAQgAyAFokRJVVVVVVXFv6CiIACgIAIbIgALCAAgACABEGULlAEBBHwgACAAoiICIAKiIQNEAAAAAAAA8D8gAkQAAAAAAADgP6IiBKEiBUQAAAAAAADwPyAFoSAEoSACIAIgAiACRJAVyxmgAfo+okR3UcEWbMFWv6CiRExVVVVVVaU/oKIgAyADoiACRMSxtL2e7iE+IAJE1DiIvun6qD2ioaJErVKcgE9+kr6goqCiIAAgAaKhoKALxAEBA38jBiECIwZBEGokBiACIQECfCAAvUIgiKdB/////wdxIgNB/MOk/wNJBHwgA0GewZryA0kEfEQAAAAAAADwPwUgAEQAAAAAAAAAABByCwUgACAAoSADQf//v/8HSw0BGgJAAkACQAJAIAAgARBuQQNxDgMAAQIDCyABKwMAIAErAwgQcgwECyABKwMAIAErAwhBARBwmgwDCyABKwMAIAErAwgQcpoMAgsgASsDACABKwMIQQEQcAsLIQAgAiQGIAALywEBA38jBiECIwZBEGokBiACIQECQCAAvUIgiKdB/////wdxIgNB/MOk/wNJBEAgA0GAgMDyA08EQCAARAAAAAAAAAAAQQAQcCEACwUgA0H//7//B0sEQCAAIAChIQAMAgsCQAJAAkACQAJAIAAgARBuQQNxDgMAAQIDCyABKwMAIAErAwhBARBwIQAMBQsgASsDACABKwMIEHIhAAwECyABKwMAIAErAwhBARBwmiEADAMLIAErAwAgASsDCBBymiEACwsLIAIkBiAAC5sDAwJ/AX4CfCAAvSIDQj+IpyEBAnwCfwJAIANCIIinQf////8HcSICQarGmIQESwR8IANC////////////AINCgICAgICAgPj/AFYEQCAADwsgAETvOfr+Qi6GQGQEQCAARAAAAAAAAOB/og8FIABE0rx63SsjhsBjIABEUTAt1RBJh8BjcUUNAkQAAAAAAAAAACIADwsABSACQcLc2P4DSwRAIAJBscXC/wNLDQIgAUEBcyABawwDCyACQYCAwPEDSwR8QQAhASAABSAARAAAAAAAAPA/oA8LCwwCCyAARP6CK2VHFfc/oiABQQN0QYATaisDAKCqCyEBIAAgAbciBEQAAOD+Qi7mP6KhIgAgBER2PHk17znqPaIiBaELIQQgACAEIAQgBCAEoiIAIAAgACAAIABE0KS+cmk3Zj6iRPFr0sVBvbu+oKJELN4lr2pWET+gokSTvb4WbMFmv6CiRD5VVVVVVcU/oKKhIgCiRAAAAAAAAABAIAChoyAFoaBEAAAAAAAA8D+gIQAgAUUEQCAADwsgACABEGULnwMDAn8BfgV8IAC9IgNCIIinIQECfyADQgBTIgIgAUGAgMAASXIEfyADQv///////////wCDQgBRBEBEAAAAAAAA8L8gACAAoqMPCyACRQRAIABEAAAAAAAAUEOi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mgDjqR0AXmGRAAgb5gCFmWUAoBRfAI1AaACA2P8AJ3NNAAYGMQDKVhUAyahzAHviYABrjMAAQcMSC11A+yH5PwAAAAAtRHQ+AAAAgJhG+DwAAABgUcx4OwAAAICDG/A5AAAAQCAlejgAAACAIoLjNgAAAAAd82k1AAAAAAAA4D8AAAAAAADgvwAAAAAAAPA/AAAAAAAA+D8AQagTCwgG0M9D6/1MPgBBuxMLigZAA7jiP09nZ1MuL3N0Yl92b3JiaXMuYwBmLT5hbGxvYy5hbGxvY19idWZmZXJfbGVuZ3RoX2luX2J5dGVzID09IGYtPnRlbXBfb2Zmc2V0AHZvcmJpc19kZWNvZGVfaW5pdGlhbABmLT5ieXRlc19pbl9zZWcgPiAwAGdldDhfcGFja2V0X3JhdwBmLT5ieXRlc19pbl9zZWcgPT0gMABuZXh0X3NlZ21lbnQAdm9yYmlzX2RlY29kZV9wYWNrZXRfcmVzdAAhYy0+c3BhcnNlAGNvZGVib29rX2RlY29kZV9zY2FsYXJfcmF3ACFjLT5zcGFyc2UgfHwgeiA8IGMtPnNvcnRlZF9lbnRyaWVzAGNvZGVib29rX2RlY29kZV9kZWludGVybGVhdmVfcmVwZWF0AHogPCBjLT5zb3J0ZWRfZW50cmllcwBjb2RlYm9va19kZWNvZGVfc3RhcnQAKG4gJiAzKSA9PSAwAGltZGN0X3N0ZXAzX2l0ZXIwX2xvb3AAMABnZXRfd2luZG93AGYtPnRlbXBfb2Zmc2V0ID09IGYtPmFsbG9jLmFsbG9jX2J1ZmZlcl9sZW5ndGhfaW5fYnl0ZXMAc3RhcnRfZGVjb2RlcgB2b3JiaXNjLT5zb3J0ZWRfZW50cmllcyA9PSAwAGNvbXB1dGVfY29kZXdvcmRzAHogPj0gMCAmJiB6IDwgMzIAbGVuW2ldID49IDAgJiYgbGVuW2ldIDwgMzIAYXZhaWxhYmxlW3ldID09IDAAayA9PSBjLT5zb3J0ZWRfZW50cmllcwBjb21wdXRlX3NvcnRlZF9odWZmbWFuAGMtPnNvcnRlZF9jb2Rld29yZHNbeF0gPT0gY29kZQBsZW4gIT0gTk9fQ09ERQBpbmNsdWRlX2luX3NvcnQAcG93KChmbG9hdCkgcisxLCBkaW0pID4gZW50cmllcwBsb29rdXAxX3ZhbHVlcwAoaW50KSBmbG9vcihwb3coKGZsb2F0KSByLCBkaW0pKSA8PSBlbnRyaWVzAOoPBG5hbWUB4g9+AAVhYm9ydAENZW5sYXJnZU1lbW9yeQIOZ2V0VG90YWxNZW1vcnkDF2Fib3J0T25DYW5ub3RHcm93TWVtb3J5BA5fX19hc3NlcnRfZmFpbAULX19fc2V0RXJyTm8GBl9hYm9ydAcWX2Vtc2NyaXB0ZW5fbWVtY3B5X2JpZwgQX19ncm93V2FzbU1lbW9yeQkKc3RhY2tBbGxvYwoJc3RhY2tTYXZlCwxzdGFja1Jlc3RvcmUME2VzdGFibGlzaFN0YWNrU3BhY2UNCHNldFRocmV3DgtzZXRUZW1wUmV0MA8LZ2V0VGVtcFJldDAQEV9zdGJfdm9yYmlzX2Nsb3NlEQ5fdm9yYmlzX2RlaW5pdBILX3NldHVwX2ZyZWUTGl9zdGJfdm9yYmlzX2ZsdXNoX3B1c2hkYXRhFCFfc3RiX3ZvcmJpc19kZWNvZGVfZnJhbWVfcHVzaGRhdGEVBl9lcnJvchYgX3ZvcmJpc19zZWFyY2hfZm9yX3BhZ2VfcHVzaGRhdGEXGF9pc193aG9sZV9wYWNrZXRfcHJlc2VudBgVX3ZvcmJpc19kZWNvZGVfcGFja2V0GQxfZ2V0OF9wYWNrZXQaFF92b3JiaXNfZmluaXNoX2ZyYW1lGxlfc3RiX3ZvcmJpc19vcGVuX3B1c2hkYXRhHAxfdm9yYmlzX2luaXQdDl9zdGFydF9kZWNvZGVyHg1fdm9yYmlzX2FsbG9jHxtfc3RiX3ZvcmJpc19nZXRfZmlsZV9vZmZzZXQgE19tYXliZV9zdGFydF9wYWNrZXQhDV9mbHVzaF9wYWNrZXQiBV9nZXRuIwZfZ2V0MzIkE19zdGJfdm9yYmlzX2pzX29wZW4lFF9zdGJfdm9yYmlzX2pzX2Nsb3NlJhdfc3RiX3ZvcmJpc19qc19jaGFubmVscycaX3N0Yl92b3JiaXNfanNfc2FtcGxlX3JhdGUoFV9zdGJfdm9yYmlzX2pzX2RlY29kZSkNX2NyYzMyX3VwZGF0ZSoWX3ZvcmJpc19kZWNvZGVfaW5pdGlhbCsaX3ZvcmJpc19kZWNvZGVfcGFja2V0X3Jlc3QsCV9nZXRfYml0cy0FX2lsb2cuEF9nZXQ4X3BhY2tldF9yYXcvDV9uZXh0X3NlZ21lbnQwBV9nZXQ4MQtfc3RhcnRfcGFnZTIQX2NhcHR1cmVfcGF0dGVybjMdX3N0YXJ0X3BhZ2Vfbm9fY2FwdHVyZXBhdHRlcm40DV9wcmVwX2h1ZmZtYW41G19jb2RlYm9va19kZWNvZGVfc2NhbGFyX3JhdzYOX3ByZWRpY3RfcG9pbnQ3D19kZWNvZGVfcmVzaWR1ZTgJX2RvX2Zsb29yOQ1faW52ZXJzZV9tZGN0OgxfYml0X3JldmVyc2U7EV9tYWtlX2Jsb2NrX2FycmF5PBJfc2V0dXBfdGVtcF9tYWxsb2M9JF9jb2RlYm9va19kZWNvZGVfZGVpbnRlcmxlYXZlX3JlcGVhdD4PX3Jlc2lkdWVfZGVjb2RlPxVfY29kZWJvb2tfZGVjb2RlX3N0ZXBAEF9jb2RlYm9va19kZWNvZGVBFl9jb2RlYm9va19kZWNvZGVfc3RhcnRCCl9kcmF3X2xpbmVDF19pbWRjdF9zdGVwM19pdGVyMF9sb29wRBlfaW1kY3Rfc3RlcDNfaW5uZXJfcl9sb29wRRlfaW1kY3Rfc3RlcDNfaW5uZXJfc19sb29wRh9faW1kY3Rfc3RlcDNfaW5uZXJfc19sb29wX2xkNjU0RwhfaXRlcl81NEgLX2dldF93aW5kb3dJEF92b3JiaXNfdmFsaWRhdGVKDV9zdGFydF9wYWNrZXRLBV9za2lwTAtfY3JjMzJfaW5pdE0NX3NldHVwX21hbGxvY04QX3NldHVwX3RlbXBfZnJlZU8SX2NvbXB1dGVfY29kZXdvcmRzUBdfY29tcHV0ZV9zb3J0ZWRfaHVmZm1hblEcX2NvbXB1dGVfYWNjZWxlcmF0ZWRfaHVmZm1hblIPX2Zsb2F0MzJfdW5wYWNrUw9fbG9va3VwMV92YWx1ZXNUDl9wb2ludF9jb21wYXJlVQpfbmVpZ2hib3JzVg9faW5pdF9ibG9ja3NpemVXCl9hZGRfZW50cnlYEF9pbmNsdWRlX2luX3NvcnRZD191aW50MzJfY29tcGFyZVoYX2NvbXB1dGVfdHdpZGRsZV9mYWN0b3JzWw9fY29tcHV0ZV93aW5kb3dcE19jb21wdXRlX2JpdHJldmVyc2VdB19zcXVhcmVeB19tYWxsb2NfBV9mcmVlYAhfcmVhbGxvY2ESX3RyeV9yZWFsbG9jX2NodW5rYg5fZGlzcG9zZV9jaHVua2MRX19fZXJybm9fbG9jYXRpb25kB19tZW1jbXBlB19zY2FsYm5mBl9xc29ydGcFX3NpZnRoBF9zaHJpCF90cmlua2xlagRfc2hsawVfcG50emwIX2FfY3R6X2xtBl9jeWNsZW4LX19fcmVtX3BpbzJvEV9fX3JlbV9waW8yX2xhcmdlcAZfX19zaW5xBl9sZGV4cHIGX19fY29zcwRfY29zdARfc2ludQRfZXhwdgRfbG9ndwRfcG93eAtydW5Qb3N0U2V0c3kHX21lbWNweXoHX21lbXNldHsFX3Nicmt8C2R5bkNhbGxfaWlpfQJiMA=="),function(Q){return Q.charCodeAt(0)});var E=E!==void 0?E:{},x={};for(e in E)E.hasOwnProperty(e)&&(x[e]=E[e]);E.arguments=[],E.thisProgram="./this.program",E.quit=function(Q,d){throw d},E.preRun=[],E.postRun=[];var L=!1,sA=!1,$=!1,Y=!1;L=typeof window=="object",sA=typeof importScripts=="function",$=typeof process=="object"&&typeof Os=="function"&&!L&&!sA,Y=!L&&!$&&!sA;var aA="";function RA(Q){return E.locateFile?E.locateFile(Q,aA):aA+Q}$?(aA=__dirname+"/",E.read=function(d,m){var k;return A||(A=void 0),t||(t=void 0),d=t.normalize(d),k=A.readFileSync(d),m?k:k.toString()},E.readBinary=function(d){var m=E.read(d,!0);return m.buffer||(m=new Uint8Array(m)),jA(m.buffer),m},process.argv.length>1&&(E.thisProgram=process.argv[1].replace(/\\/g,"/")),E.arguments=process.argv.slice(2),typeof module<"u",process.on("uncaughtException",function(Q){if(!(Q instanceof Ut))throw Q}),process.on("unhandledRejection",function(Q,d){process.exit(1)}),E.quit=function(Q){process.exit(Q)},E.inspect=function(){return"[Emscripten Module object]"}):Y?(typeof read<"u"&&(E.read=function(d){return read(d)}),E.readBinary=function(d){var m;return typeof readbuffer=="function"?new Uint8Array(readbuffer(d)):(jA(typeof(m=read(d,"binary"))=="object"),m)},typeof scriptArgs<"u"?E.arguments=scriptArgs:typeof arguments<"u"&&(E.arguments=arguments),typeof quit=="function"&&(E.quit=function(Q){quit(Q)})):(L||sA)&&(L?document.currentScript&&(aA=document.currentScript.src):aA=self.location.href,aA=aA.indexOf("blob:")!==0?aA.split("/").slice(0,-1).join("/")+"/":"",E.read=function(d){var m=new XMLHttpRequest;return m.open("GET",d,!1),m.send(null),m.responseText},sA&&(E.readBinary=function(d){var m=new XMLHttpRequest;return m.open("GET",d,!1),m.responseType="arraybuffer",m.send(null),new Uint8Array(m.response)}),E.readAsync=function(d,m,k){var P=new XMLHttpRequest;P.open("GET",d,!0),P.responseType="arraybuffer",P.onload=function(){if(P.status==200||P.status==0&&P.response){m(P.response);return}k()},P.onerror=k,P.send(null)},E.setWindowTitle=function(Q){document.title=Q});var NA=E.print||(typeof console<"u"?console.log.bind(console):typeof print<"u"?print:null),tA=E.printErr||(typeof printErr<"u"?printErr:typeof console<"u"&&console.warn.bind(console)||NA);for(e in x)x.hasOwnProperty(e)&&(E[e]=x[e]);function _(Q){var d=l;return l=l+Q+15&-16,d}function T(Q){var d=i[M>>2],m=d+Q+15&-16;return i[M>>2]=m,m>=xA&&!bt()?(i[M>>2]=d,0):d}function H(Q,d){return d||(d=16),Q=Math.ceil(Q/d)*d}function j(Q){switch(Q){case"i1":case"i8":return 1;case"i16":return 2;case"i32":case"float":return 4;case"i64":case"double":return 8;default:if(Q[Q.length-1]==="*")return 4;if(Q[0]!=="i")return 0;var d=parseInt(Q.substr(1));return jA(d%8==0),d/8}}function Z(Q){Z.shown||(Z.shown={}),Z.shown[Q]||(Z.shown[Q]=1,tA(Q))}x=void 0;var rA={"f64-rem":function(Q,d){return Q%d},debugger:function(){}},KA=[];function ce(Q,d){for(var m=0,k=m;k<m+0;k++)if(!KA[k])return KA[k]=Q,1+k;throw"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS."}function de(Q){KA[Q-1]=null}var fe={};function It(Q,d){if(Q){jA(d),fe[d]||(fe[d]={});var m=fe[d];return m[Q]||(d.length===1?m[Q]=function(){return gA(d,Q)}:d.length===2?m[Q]=function(P){return gA(d,Q,[P])}:m[Q]=function(){return gA(d,Q,Array.prototype.slice.call(arguments))}),m[Q]}}function ke(Q,d,m){return m?+(Q>>>0)+4294967296*+(d>>>0):+(Q>>>0)+4294967296*+(0|d)}function gA(Q,d,m){return m&&m.length?E["dynCall_"+Q].apply(null,[d].concat(m)):E["dynCall_"+Q].call(null,d)}var lA=0,ue=0;function jA(Q,d){Q||Ge("Assertion failed: "+d)}function He(Q){var d=E["_"+Q];return jA(d,"Cannot call unknown function "+Q+", make sure it is exported"),d}var Ye={stackSave:function(){Xn()},stackRestore:function(){Zn()},arrayToC:function(Q){var d,m,k=sn(Q.length);return d=Q,m=k,s.set(d,m),k},stringToC:function(Q){var d=0;if(Q!=null&&Q!==0){var m=(Q.length<<2)+1;d=sn(m),xt(Q,d,m)}return d}},Gt={string:Ye.stringToC,array:Ye.arrayToC};function Ct(Q,d,m,k,P){var iA=He(Q),CA=[],W=0;if(k)for(var UA=0;UA<k.length;UA++){var yA=Gt[m[UA]];yA?(W===0&&(W=Xn()),CA[UA]=yA(k[UA])):CA[UA]=k[UA]}var SA,BA=iA.apply(null,CA);return BA=(SA=BA,d==="string"?Oe(SA):d==="boolean"?!!SA:SA),W!==0&&Zn(W),BA}function Mt(Q,d,m,k){switch((m=m||"i8").charAt(m.length-1)==="*"&&(m="i32"),m){case"i1":case"i8":s[Q>>0]=d;break;case"i16":r[Q>>1]=d;break;case"i32":i[Q>>2]=d;break;case"i64":tempI64=[d>>>0,+fi(tempDouble=d)>=1?tempDouble>0?(0|mi(+Ts(tempDouble/4294967296),4294967295))>>>0:~~+ui((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0],i[Q>>2]=tempI64[0],i[Q+4>>2]=tempI64[1];break;case"float":B[Q>>2]=d;break;case"double":h[Q>>3]=d;break;default:Ge("invalid type for setValue: "+m)}}function Hn(Q,d,m){switch((d=d||"i8").charAt(d.length-1)==="*"&&(d="i32"),d){case"i1":case"i8":return s[Q>>0];case"i16":return r[Q>>1];case"i32":case"i64":return i[Q>>2];case"float":return B[Q>>2];case"double":return h[Q>>3];default:Ge("invalid type for getValue: "+d)}return null}function Yn(Q,d,m,k){typeof Q=="number"?(iA=!0,CA=Q):(iA=!1,CA=Q.length);var P=typeof d=="string"?d:null;if(W=m==4?k:[typeof nn=="function"?nn:_,sn,_,T][m===void 0?2:m](Math.max(CA,P?1:d.length)),iA){for(k=W,jA((3&W)==0),UA=W+(-4&CA);k<UA;k+=4)i[k>>2]=0;for(UA=W+CA;k<UA;)s[k++>>0]=0;return W}if(P==="i8")return Q.subarray||Q.slice?o.set(Q,W):o.set(new Uint8Array(Q),W),W;for(var iA,CA,W,UA,yA,SA,BA,oA=0;oA<CA;){var ZA=Q[oA];if((yA=P||d[oA])===0){oA++;continue}yA=="i64"&&(yA="i32"),Mt(W+oA,ZA,yA),BA!==yA&&(SA=j(yA),BA=yA),oA+=SA}return W}function Et(Q){return u?qn?nn(Q):T(Q):_(Q)}function Oe(Q,d){if(d===0||!Q)return"";for(var m,k,P,iA=0,CA=0;iA|=k=o[Q+CA>>0],(k!=0||d)&&(CA++,!d||CA!=d););d||(d=CA);var W="";if(iA<128){for(;d>0;)P=String.fromCharCode.apply(String,o.subarray(Q,Q+Math.min(d,1024))),W=W?W+P:P,Q+=1024,d-=1024;return W}return m=Q,function(yA,SA){for(var BA=SA;yA[BA];)++BA;if(BA-SA>16&&yA.subarray&&zt)return zt.decode(yA.subarray(SA,BA));for(var oA,ZA,re,ie,ae,$e,ge="";;){if(!(oA=yA[SA++]))return ge;if(!(128&oA)){ge+=String.fromCharCode(oA);continue}if(ZA=63&yA[SA++],(224&oA)==192){ge+=String.fromCharCode((31&oA)<<6|ZA);continue}if(re=63&yA[SA++],(240&oA)==224?oA=(15&oA)<<12|ZA<<6|re:(ie=63&yA[SA++],(248&oA)==240?oA=(7&oA)<<18|ZA<<12|re<<6|ie:(ae=63&yA[SA++],oA=(252&oA)==248?(3&oA)<<24|ZA<<18|re<<12|ie<<6|ae:(1&oA)<<30|ZA<<24|re<<18|ie<<12|ae<<6|($e=63&yA[SA++]))),oA<65536)ge+=String.fromCharCode(oA);else{var vt=oA-65536;ge+=String.fromCharCode(55296|vt>>10,56320|1023&vt)}}}(o,m)}function $A(Q){for(var d="";;){var m=s[Q++>>0];if(!m)return d;d+=String.fromCharCode(m)}}function On(Q,d){return function(k,P,iA){for(var CA=0;CA<k.length;++CA)s[P++>>0]=k.charCodeAt(CA);iA||(s[P>>0]=0)}(Q,d,!1)}var zt=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function ct(Q,d,m,k){if(!(k>0))return 0;for(var P=m,iA=m+k-1,CA=0;CA<Q.length;++CA){var W=Q.charCodeAt(CA);if(W>=55296&&W<=57343&&(W=65536+((1023&W)<<10)|1023&Q.charCodeAt(++CA)),W<=127){if(m>=iA)break;d[m++]=W}else if(W<=2047){if(m+1>=iA)break;d[m++]=192|W>>6,d[m++]=128|63&W}else if(W<=65535){if(m+2>=iA)break;d[m++]=224|W>>12,d[m++]=128|W>>6&63,d[m++]=128|63&W}else if(W<=2097151){if(m+3>=iA)break;d[m++]=240|W>>18,d[m++]=128|W>>12&63,d[m++]=128|W>>6&63,d[m++]=128|63&W}else if(W<=67108863){if(m+4>=iA)break;d[m++]=248|W>>24,d[m++]=128|W>>18&63,d[m++]=128|W>>12&63,d[m++]=128|W>>6&63,d[m++]=128|63&W}else{if(m+5>=iA)break;d[m++]=252|W>>30,d[m++]=128|W>>24&63,d[m++]=128|W>>18&63,d[m++]=128|W>>12&63,d[m++]=128|W>>6&63,d[m++]=128|63&W}}return d[m]=0,m-P}function xt(Q,d,m){return ct(Q,o,d,m)}function qA(Q){for(var d=0,m=0;m<Q.length;++m){var k=Q.charCodeAt(m);k>=55296&&k<=57343&&(k=65536+((1023&k)<<10)|1023&Q.charCodeAt(++m)),k<=127?++d:k<=2047?d+=2:k<=65535?d+=3:k<=2097151?d+=4:k<=67108863?d+=5:d+=6}return d}var Fe=typeof TextDecoder<"u"?new TextDecoder("utf-16le"):void 0;function Nt(Q){for(var d=Q,m=d>>1;r[m];)++m;if((d=m<<1)-Q>32&&Fe)return Fe.decode(o.subarray(Q,d));for(var k=0,P="";;){var iA=r[Q+2*k>>1];if(iA==0)return P;++k,P+=String.fromCharCode(iA)}}function Jn(Q,d,m){if(m===void 0&&(m=2147483647),m<2)return 0;for(var k=d,P=(m-=2)<2*Q.length?m/2:Q.length,iA=0;iA<P;++iA){var CA=Q.charCodeAt(iA);r[d>>1]=CA,d+=2}return r[d>>1]=0,d-k}function we(Q){return 2*Q.length}function jt(Q){for(var d=0,m="";;){var k=i[Q+4*d>>2];if(k==0)return m;if(++d,k>=65536){var P=k-65536;m+=String.fromCharCode(55296|P>>10,56320|1023&P)}else m+=String.fromCharCode(k)}}function $t(Q,d,m){if(m===void 0&&(m=2147483647),m<4)return 0;for(var k=d,P=k+m-4,iA=0;iA<Q.length;++iA){var CA=Q.charCodeAt(iA);if(CA>=55296&&CA<=57343&&(CA=65536+((1023&CA)<<10)|1023&Q.charCodeAt(++iA)),i[d>>2]=CA,(d+=4)+4>P)break}return i[d>>2]=0,d-k}function Ms(Q){for(var d=0,m=0;m<Q.length;++m){var k=Q.charCodeAt(m);k>=55296&&k<=57343&&++m,d+=4}return d}function xs(Q){var d=qA(Q)+1,m=nn(d);return m&&ct(Q,s,m,d),m}function An(Q){var d=qA(Q)+1,m=sn(d);return ct(Q,s,m,d),m}function _e(Q){return Q}function Pn(){var Q,d=function(){var k=Error();if(!k.stack){try{throw Error(0)}catch(P){k=P}if(!k.stack)return"(no stack trace available)"}return k.stack.toString()}();return E.extraStackTrace&&(d+=`
2
+ `+E.extraStackTrace()),(Q=d).replace(/__Z[\w\d_]+/g,function(m){var k,P=k=m;return m===P?m:m+" ["+P+"]"})}function Re(Q,d){return Q%d>0&&(Q+=d-Q%d),Q}function ht(Q){E.buffer=n=Q}function ze(){E.HEAP8=s=new Int8Array(n),E.HEAP16=r=new Int16Array(n),E.HEAP32=i=new Int32Array(n),E.HEAPU8=o=new Uint8Array(n),E.HEAPU16=g=new Uint16Array(n),E.HEAPU32=C=new Uint32Array(n),E.HEAPF32=B=new Float32Array(n),E.HEAPF64=h=new Float64Array(n)}function bt(){var Q=E.usingWasm?65536:16777216,d=2147483648-Q;if(i[M>>2]>d)return!1;var m=xA;for(xA=Math.max(xA,16777216);xA<i[M>>2];)xA=xA<=536870912?Re(2*xA,Q):Math.min(Re((3*xA+2147483648)/4,Q),d);var k=E.reallocBuffer(xA);return k&&k.byteLength==xA?(ht(k),ze(),!0):(xA=m,!1)}c=l=f=S=G=D=M=0,u=!1,E.reallocBuffer||(E.reallocBuffer=function(Q){try{if(ArrayBuffer.transfer)d=ArrayBuffer.transfer(n,Q);else{var d,m=s;d=new ArrayBuffer(Q),new Int8Array(d).set(m)}}catch{return!1}return!!pi(d)&&d});try{(v=Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,"byteLength").get))(new ArrayBuffer(4))}catch{v=function(d){return d.byteLength}}var lt=E.TOTAL_STACK||5242880,xA=E.TOTAL_MEMORY||16777216;function en(){return xA}function Je(Q){for(;Q.length>0;){var d=Q.shift();if(typeof d=="function"){d();continue}var m=d.func;typeof m=="number"?d.arg===void 0?E.dynCall_v(m):E.dynCall_vi(m,d.arg):m(d.arg===void 0?null:d.arg)}}xA<lt&&tA("TOTAL_MEMORY should be larger than TOTAL_STACK, was "+xA+"! (TOTAL_STACK="+lt+")"),E.buffer?n=E.buffer:(typeof WebAssembly=="object"&&typeof WebAssembly.Memory=="function"?(E.wasmMemory=new WebAssembly.Memory({initial:xA/65536}),n=E.wasmMemory.buffer):n=new ArrayBuffer(xA),E.buffer=n),ze();var Lt=[],Kn=[],Ns=[],bs=[],Ls=[],qn=!1,Bi=!1;function Qi(Q){Lt.unshift(Q)}function zi(Q){Kn.unshift(Q)}function ji(Q){Ns.unshift(Q)}function $i(Q){bs.unshift(Q)}function di(Q){Ls.unshift(Q)}function Aa(Q,d,m){var k,P;Z("writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!"),m&&(k=s[P=d+qA(Q)]),xt(Q,d,1/0),m&&(s[P]=k)}function ea(Q,d,m){return Q>=0?Q:d<=32?2*Math.abs(1<<d-1)+Q:Math.pow(2,d)+Q}function ta(Q,d,m){if(Q<=0)return Q;var k=d<=32?Math.abs(1<<d-1):Math.pow(2,d-1);return Q>=k&&(d<=32||Q>k)&&(Q=-2*k+Q),Q}var fi=Math.abs,ui=Math.ceil,Ts=Math.floor,mi=Math.min,je=0,Vn=null,Tt=null;function na(Q){return Q}E.preloadedImages={},E.preloadedAudios={};var Us="data:application/octet-stream;base64,";function tn(Q){return String.prototype.startsWith?Q.startsWith(Us):Q.indexOf(Us)===0}(function(){var d="main.wast",m="main.wasm",k="main.temp.asm.js";tn(d)||(d=RA(d)),tn(m)||(m=RA(m)),tn(k)||(k=RA(k));var P={global:null,env:null,asm2wasm:rA,parent:E},iA=null;function CA(BA){return BA}function W(){try{if(E.wasmBinary)return new Uint8Array(E.wasmBinary);if(E.readBinary)return E.readBinary(m);throw"both async and sync fetching of the wasm failed"}catch(BA){Ge(BA)}}E.asmPreload=E.asm;var UA=E.reallocBuffer,yA=function(BA){BA=Re(BA,E.usingWasm?65536:16777216);var oA=E.buffer.byteLength;if(E.usingWasm)try{var ZA=E.wasmMemory.grow((BA-oA)/65536);return ZA!==-1?E.buffer=E.wasmMemory.buffer:null}catch{return null}};E.reallocBuffer=function(BA){return SA==="asmjs"?UA(BA):yA(BA)};var SA="";E.asm=function(BA,oA,ZA){var re;if(!(oA=re=oA).table){var ie,ae=E.wasmTableSize;ae===void 0&&(ae=1024);var $e=E.wasmMaxTableSize;typeof WebAssembly=="object"&&typeof WebAssembly.Table=="function"?$e!==void 0?oA.table=new WebAssembly.Table({initial:ae,maximum:$e,element:"anyfunc"}):oA.table=new WebAssembly.Table({initial:ae,element:"anyfunc"}):oA.table=Array(ae),E.wasmTable=oA.table}return oA.memoryBase||(oA.memoryBase=E.STATIC_BASE),oA.tableBase||(oA.tableBase=0),ie=function(vt,Bt,_n){if(typeof WebAssembly!="object")return tA("no native wasm support detected"),!1;if(!(E.wasmMemory instanceof WebAssembly.Memory))return tA("no native wasm Memory in use"),!1;function on(me,pe){if((iA=me.exports).memory){var Ht,zn,Ys;Ht=iA.memory,zn=E.buffer,Ht.byteLength<zn.byteLength&&tA("the new buffer in mergeMemory is smaller than the previous one. in native wasm, we should grow memory here"),Ys=new Int8Array(zn),new Int8Array(Ht).set(Ys),ht(Ht),ze()}E.asm=iA,E.usingWasm=!0,function(Ia){if(je--,E.monitorRunDependencies&&E.monitorRunDependencies(je),je==0&&(Vn!==null&&(clearInterval(Vn),Vn=null),Tt)){var yi=Tt;Tt=null,yi()}}("wasm-instantiate")}if(Bt.memory=E.wasmMemory,P.global={NaN:NaN,Infinity:1/0},P["global.Math"]=Math,P.env=Bt,je++,E.monitorRunDependencies&&E.monitorRunDependencies(je),E.instantiateWasm)try{return E.instantiateWasm(P,on)}catch(me){return tA("Module.instantiateWasm callback failed with error: "+me),!1}function Qt(me){on(me.instance,me.module)}function Hs(me){(!E.wasmBinary&&(L||sA)&&typeof fetch=="function"?fetch(m,{credentials:"same-origin"}).then(function(pe){if(!pe.ok)throw"failed to load wasm binary file at '"+m+"'";return pe.arrayBuffer()}).catch(function(){return W()}):new Promise(function(pe,Ht){pe(W())})).then(function(pe){return WebAssembly.instantiate(pe,P)}).then(me).catch(function(pe){tA("failed to asynchronously prepare wasm: "+pe),Ge(pe)})}return E.wasmBinary||typeof WebAssembly.instantiateStreaming!="function"||tn(m)||typeof fetch!="function"?Hs(Qt):WebAssembly.instantiateStreaming(fetch(m,{credentials:"same-origin"}),P).then(Qt).catch(function(me){tA("wasm streaming compile failed: "+me),tA("falling back to ArrayBuffer instantiation"),Hs(Qt)}),{}}(BA,oA,ZA),jA(ie,"no binaryen method succeeded."),ie},E.asm})(),l=(c=1024)+4816,Kn.push(),E.STATIC_BASE=c,E.STATIC_BUMP=4816;var Ae=l;function sa(Q){s[Ae]=s[Q],s[Ae+1]=s[Q+1],s[Ae+2]=s[Q+2],s[Ae+3]=s[Q+3]}function oa(Q){s[Ae]=s[Q],s[Ae+1]=s[Q+1],s[Ae+2]=s[Q+2],s[Ae+3]=s[Q+3],s[Ae+4]=s[Q+4],s[Ae+5]=s[Q+5],s[Ae+6]=s[Q+6],s[Ae+7]=s[Q+7]}function ra(Q,d,m){var k=m>0?m:qA(Q)+1,P=Array(k),iA=ct(Q,P,0,P.length);return d&&(P.length=iA),P}function ia(Q){for(var d=[],m=0;m<Q.length;m++){var k=Q[m];k>255&&(k&=255),d.push(String.fromCharCode(k))}return d.join("")}l+=16,M=_(4),G=(f=S=H(l))+lt,D=H(G),i[M>>2]=D,u=!0,E.wasmTableSize=4,E.wasmMaxTableSize=4,E.asmGlobalArg={},E.asmLibraryArg={abort:Ge,assert:jA,enlargeMemory:bt,getTotalMemory:en,abortOnCannotGrowMemory:function(){Ge("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+xA+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")},invoke_iii:function(d,m,k){var P=Xn();try{return E.dynCall_iii(d,m,k)}catch(iA){if(Zn(P),typeof iA!="number"&&iA!=="longjmp")throw iA;E.setThrew(1,0)}},___assert_fail:function(d,m,k,P){Ge("Assertion failed: "+Oe(d)+", at: "+[m?Oe(m):"unknown filename",k,P?Oe(P):"unknown function"])},___setErrNo:function(d){return E.___errno_location&&(i[E.___errno_location()>>2]=d),d},_abort:function(){E.abort()},_emscripten_memcpy_big:function(d,m,k){return o.set(o.subarray(m,m+k),d),d},_llvm_floor_f64:Ts,DYNAMICTOP_PTR:M,tempDoublePtr:Ae,ABORT:lA,STACKTOP:S,STACK_MAX:G};var vs=E.asm(E.asmGlobalArg,E.asmLibraryArg,n);E.asm=vs,E.___errno_location=function(){return E.asm.___errno_location.apply(null,arguments)};var pi=E._emscripten_replace_memory=function(){return E.asm._emscripten_replace_memory.apply(null,arguments)};E._free=function(){return E.asm._free.apply(null,arguments)};var nn=E._malloc=function(){return E.asm._malloc.apply(null,arguments)};E._memcpy=function(){return E.asm._memcpy.apply(null,arguments)},E._memset=function(){return E.asm._memset.apply(null,arguments)},E._sbrk=function(){return E.asm._sbrk.apply(null,arguments)},E._stb_vorbis_js_channels=function(){return E.asm._stb_vorbis_js_channels.apply(null,arguments)},E._stb_vorbis_js_close=function(){return E.asm._stb_vorbis_js_close.apply(null,arguments)},E._stb_vorbis_js_decode=function(){return E.asm._stb_vorbis_js_decode.apply(null,arguments)},E._stb_vorbis_js_open=function(){return E.asm._stb_vorbis_js_open.apply(null,arguments)},E._stb_vorbis_js_sample_rate=function(){return E.asm._stb_vorbis_js_sample_rate.apply(null,arguments)},E.establishStackSpace=function(){return E.asm.establishStackSpace.apply(null,arguments)},E.getTempRet0=function(){return E.asm.getTempRet0.apply(null,arguments)},E.runPostSets=function(){return E.asm.runPostSets.apply(null,arguments)},E.setTempRet0=function(){return E.asm.setTempRet0.apply(null,arguments)},E.setThrew=function(){return E.asm.setThrew.apply(null,arguments)};var sn=E.stackAlloc=function(){return E.asm.stackAlloc.apply(null,arguments)},Zn=E.stackRestore=function(){return E.asm.stackRestore.apply(null,arguments)},Xn=E.stackSave=function(){return E.asm.stackSave.apply(null,arguments)};function Ut(Q){this.name="ExitStatus",this.message="Program terminated with exit("+Q+")",this.status=Q}function Wn(Q){Q=Q||E.arguments,!(je>0)&&(function(){if(E.preRun)for(typeof E.preRun=="function"&&(E.preRun=[E.preRun]);E.preRun.length;)Qi(E.preRun.shift());Je(Lt)}(),!(je>0)&&(E.calledRun||(E.setStatus?(E.setStatus("Running..."),setTimeout(function(){setTimeout(function(){E.setStatus("")},1),d()},1)):d())));function d(){!E.calledRun&&(E.calledRun=!0,lA||(qn||(qn=!0,Je(Kn)),Je(Ns),E.onRuntimeInitialized&&E.onRuntimeInitialized(),function(){if(E.postRun)for(typeof E.postRun=="function"&&(E.postRun=[E.postRun]);E.postRun.length;)di(E.postRun.shift());Je(Ls)}()))}}function aa(Q,d){(!d||!E.noExitRuntime||Q!==0)&&(E.noExitRuntime||(lA=!0,ue=Q,S=R,Je(bs),Bi=!0,E.onExit&&E.onExit(Q)),E.quit(Q,new Ut(Q)))}function Ge(Q){throw E.onAbort&&E.onAbort(Q),Q!==void 0?(NA(Q),tA(Q),Q=JSON.stringify(Q)):Q="",lA=!0,ue=1,"abort("+Q+"). Build with -s ASSERTIONS=1 for more info."}if(E.dynCall_iii=function(){return E.asm.dynCall_iii.apply(null,arguments)},E.asm=vs,E.ccall=Ct,E.cwrap=function(d,m,k,P){var iA=(k=k||[]).every(function(CA){return CA==="number"});return m!=="string"&&iA&&!P?He(d):function(){return Ct(d,m,k,arguments,P)}},Ut.prototype=Error(),Ut.prototype.constructor=Ut,Tt=function Q(){E.calledRun||Wn(),E.calledRun||(Tt=Q)},E.run=Wn,E.abort=Ge,E.preInit)for(typeof E.preInit=="function"&&(E.preInit=[E.preInit]);E.preInit.length>0;)E.preInit.pop()();E.noExitRuntime=!0,Wn(),E.onRuntimeInitialized=()=>{Zs=!0,Xs()},ye.decode=function(Q){return function(m){if(!Zs)throw Error("SF3 decoder has not been initialized yet. Did you await synth.isReady?");var k={};function P(Bt){return new Int32Array(E.HEAPU8.buffer,Bt,1)[0]}function iA(Bt,_n){var on=new ArrayBuffer(_n*Float32Array.BYTES_PER_ELEMENT),Qt=new Float32Array(on);return Qt.set(new Float32Array(E.HEAPU8.buffer,Bt,_n)),Qt}k.open=E.cwrap("stb_vorbis_js_open","number",[]),k.close=E.cwrap("stb_vorbis_js_close","void",["number"]),k.channels=E.cwrap("stb_vorbis_js_channels","number",["number"]),k.sampleRate=E.cwrap("stb_vorbis_js_sample_rate","number",["number"]),k.decode=E.cwrap("stb_vorbis_js_decode","number",["number","number","number","number","number"]);var CA,W,UA,yA,SA=k.open(),BA=(CA=m,W=m.byteLength,UA=E._malloc(W),(yA=new Uint8Array(E.HEAPU8.buffer,UA,W)).set(new Uint8Array(CA,0,W)),yA),oA=E._malloc(4),ZA=E._malloc(4),re=k.decode(SA,BA.byteOffset,BA.byteLength,oA,ZA);if(E._free(BA.byteOffset),re<0)throw k.close(SA),E._free(oA),Error("stbvorbis decode failed: "+re);for(var ie=k.channels(SA),ae=Array(ie),$e=new Int32Array(E.HEAPU32.buffer,P(oA),ie),ge=0;ge<ie;ge++)ae[ge]=iA($e[ge],re),E._free($e[ge]);var vt=k.sampleRate(SA);return k.close(SA),E._free(P(oA)),E._free(oA),{data:ae,sampleRate:vt,eof:!0,error:null}}(Q)}})();var As=new Float32Array(30001);for(let e=0;e<As.length;e++){let A=-15e3+e;As[e]=Math.pow(2,A/1200)}function he(e){return e<=-32767?0:As[e- -15e3]}var gn=-2e4,Ws=16500,es=new Float32Array(Ws-gn+1);for(let e=0;e<es.length;e++){let A=gn+e;es[e]=440*Math.pow(2,(A-6900)/1200)}function Ot(e){return e<gn||e>Ws?440*Math.pow(2,(e-6900)/1200):es[~~e-gn]}var ns=-1660,Fi=1600,ts=new Float32Array((Fi-ns)*100+1);for(let e=0;e<ts.length;e++){let A=(ns*100+e)/100;ts[e]=Math.pow(10,-A/20)}function Ce(e){return ts[Math.floor((e-ns)*100)]}var a={INVALID:-1,startAddrsOffset:0,endAddrOffset:1,startloopAddrsOffset:2,endloopAddrsOffset:3,startAddrsCoarseOffset:4,modLfoToPitch:5,vibLfoToPitch:6,modEnvToPitch:7,initialFilterFc:8,initialFilterQ:9,modLfoToFilterFc:10,modEnvToFilterFc:11,endAddrsCoarseOffset:12,modLfoToVolume:13,unused1:14,chorusEffectsSend:15,reverbEffectsSend:16,pan:17,unused2:18,unused3:19,unused4:20,delayModLFO:21,freqModLFO:22,delayVibLFO:23,freqVibLFO:24,delayModEnv:25,attackModEnv:26,holdModEnv:27,decayModEnv:28,sustainModEnv:29,releaseModEnv:30,keyNumToModEnvHold:31,keyNumToModEnvDecay:32,delayVolEnv:33,attackVolEnv:34,holdVolEnv:35,decayVolEnv:36,sustainVolEnv:37,releaseVolEnv:38,keyNumToVolEnvHold:39,keyNumToVolEnvDecay:40,instrument:41,reserved1:42,keyRange:43,velRange:44,startloopAddrsCoarseOffset:45,keyNum:46,velocity:47,initialAttenuation:48,reserved2:49,endloopAddrsCoarseOffset:50,coarseTune:51,fineTune:52,sampleID:53,sampleModes:54,reserved3:55,scaleTuning:56,exclusiveClass:57,overridingRootKey:58,unused5:59,endOper:60,vibLfoToVolume:61,vibLfoToFilterFc:62},Jt=Object.keys(a).length,_s=Math.max(...Object.values(a)),q=[];q[a.startAddrsOffset]={min:0,max:32768,def:0,nrpn:1};q[a.endAddrOffset]={min:-32768,max:32768,def:0,nrpn:1};q[a.startloopAddrsOffset]={min:-32768,max:32768,def:0,nrpn:1};q[a.endloopAddrsOffset]={min:-32768,max:32768,def:0,nrpn:1};q[a.startAddrsCoarseOffset]={min:0,max:32768,def:0,nrpn:1};q[a.modLfoToPitch]={min:-12e3,max:12e3,def:0,nrpn:2};q[a.vibLfoToPitch]={min:-12e3,max:12e3,def:0,nrpn:2};q[a.modEnvToPitch]={min:-12e3,max:12e3,def:0,nrpn:2};q[a.initialFilterFc]={min:1500,max:13500,def:13500,nrpn:2};q[a.initialFilterQ]={min:0,max:960,def:0,nrpn:1};q[a.modLfoToFilterFc]={min:-12e3,max:12e3,def:0,nrpn:2};q[a.vibLfoToFilterFc]={min:-12e3,max:12e3,def:0,nrpn:2};q[a.modEnvToFilterFc]={min:-12e3,max:12e3,def:0,nrpn:2};q[a.endAddrsCoarseOffset]={min:-32768,max:32768,def:0,nrpn:1};q[a.modLfoToVolume]={min:-960,max:960,def:0,nrpn:1};q[a.vibLfoToVolume]={min:-960,max:960,def:0,nrpn:1};q[a.chorusEffectsSend]={min:0,max:1e3,def:0,nrpn:1};q[a.reverbEffectsSend]={min:0,max:1e3,def:0,nrpn:1};q[a.pan]={min:-500,max:500,def:0,nrpn:1};q[a.delayModLFO]={min:-12e3,max:5e3,def:-12e3,nrpn:2};q[a.freqModLFO]={min:-16e3,max:4500,def:0,nrpn:4};q[a.delayVibLFO]={min:-12e3,max:5e3,def:-12e3,nrpn:2};q[a.freqVibLFO]={min:-16e3,max:4500,def:0,nrpn:4};q[a.delayModEnv]={min:-32768,max:5e3,def:-32768,nrpn:2};q[a.attackModEnv]={min:-32768,max:8e3,def:-32768,nrpn:2};q[a.holdModEnv]={min:-12e3,max:5e3,def:-12e3,nrpn:2};q[a.decayModEnv]={min:-12e3,max:8e3,def:-12e3,nrpn:2};q[a.sustainModEnv]={min:0,max:1e3,def:0,nrpn:1};q[a.releaseModEnv]={min:-7200,max:8e3,def:-12e3,nrpn:2};q[a.keyNumToModEnvHold]={min:-1200,max:1200,def:0,nrpn:1};q[a.keyNumToModEnvDecay]={min:-1200,max:1200,def:0,nrpn:1};q[a.delayVolEnv]={min:-12e3,max:5e3,def:-12e3,nrpn:2};q[a.attackVolEnv]={min:-12e3,max:8e3,def:-12e3,nrpn:2};q[a.holdVolEnv]={min:-12e3,max:5e3,def:-12e3,nrpn:2};q[a.decayVolEnv]={min:-12e3,max:8e3,def:-12e3,nrpn:2};q[a.sustainVolEnv]={min:0,max:1440,def:0,nrpn:1};q[a.releaseVolEnv]={min:-7200,max:8e3,def:-12e3,nrpn:2};q[a.keyNumToVolEnvHold]={min:-1200,max:1200,def:0,nrpn:1};q[a.keyNumToVolEnvDecay]={min:-1200,max:1200,def:0,nrpn:1};q[a.startloopAddrsCoarseOffset]={min:-32768,max:32768,def:0,nrpn:1};q[a.keyNum]={min:-1,max:127,def:-1,nrpn:1};q[a.velocity]={min:-1,max:127,def:-1,nrpn:1};q[a.initialAttenuation]={min:0,max:1440,def:0,nrpn:1};q[a.endloopAddrsCoarseOffset]={min:-32768,max:32768,def:0,nrpn:1};q[a.coarseTune]={min:-120,max:120,def:0,nrpn:1};q[a.fineTune]={min:-12700,max:12700,def:0,nrpn:1};q[a.scaleTuning]={min:0,max:1200,def:100,nrpn:1};q[a.exclusiveClass]={min:0,max:99999,def:0,nrpn:0};q[a.overridingRootKey]={min:-1,max:127,def:-1,nrpn:0};q[a.sampleModes]={min:0,max:3,def:0,nrpn:0};var zs=.01,ee=100,ss=90,wi=15e-6,le=class e{currentSampleTime=0;sampleRate;currentAttenuationDb=ee;state=0;releaseStartDb=ee;releaseStartTimeSamples=0;currentReleaseGain=1;attackDuration=0;decayDuration=0;releaseDuration=0;attenuation=0;attenuationTargetGain=0;attenuationTarget=0;sustainDbRelative=0;delayEnd=0;attackEnd=0;holdEnd=0;decayEnd=0;constructor(A,t){this.sampleRate=A,this.canEndOnSilentSustain=t/10>=ss}static startRelease(A){A.volumeEnvelope.releaseStartTimeSamples=A.volumeEnvelope.currentSampleTime,A.volumeEnvelope.currentReleaseGain=Ce(A.volumeEnvelope.currentAttenuationDb),e.recalculate(A)}static recalculate(A){let t=A.volumeEnvelope,n=C=>Math.max(0,Math.floor(he(C)*t.sampleRate));t.attenuationTarget=Math.max(0,Math.min(A.modulatedGenerators[a.initialAttenuation],1440))/10,t.attenuationTargetGain=Ce(t.attenuationTarget),t.sustainDbRelative=Math.min(ee,A.modulatedGenerators[a.sustainVolEnv]/10);let s=Math.min(ee,t.sustainDbRelative);t.attackDuration=n(A.modulatedGenerators[a.attackVolEnv]);let o=A.modulatedGenerators[a.decayVolEnv],r=(60-A.targetKey)*A.modulatedGenerators[a.keyNumToVolEnvDecay],g=s/ee;t.decayDuration=n(o+r)*g,t.releaseDuration=n(A.modulatedGenerators[a.releaseVolEnv]),t.delayEnd=n(A.modulatedGenerators[a.delayVolEnv]),t.attackEnd=t.attackDuration+t.delayEnd;let i=(60-A.targetKey)*A.modulatedGenerators[a.keyNumToVolEnvHold];if(t.holdEnd=n(A.modulatedGenerators[a.holdVolEnv]+i)+t.attackEnd,t.decayEnd=t.decayDuration+t.holdEnd,t.state===0&&t.attackEnd===0&&(t.state=2),A.isInRelease){let C=Math.max(0,Math.min(ee,t.sustainDbRelative)),B=C/ee;switch(t.decayDuration=n(o+r)*B,t.state){case 0:t.releaseStartDb=ee;break;case 1:let c=1-(t.attackEnd-t.releaseStartTimeSamples)/t.attackDuration;t.releaseStartDb=20*Math.log10(c)*-1;break;case 2:t.releaseStartDb=0;break;case 3:t.releaseStartDb=(1-(t.decayEnd-t.releaseStartTimeSamples)/t.decayDuration)*C;break;case 4:t.releaseStartDb=C;break}t.releaseStartDb=Math.max(0,Math.min(t.releaseStartDb,ee)),t.releaseStartDb>=ss&&(A.finished=!0),t.currentReleaseGain=Ce(t.releaseStartDb);let h=(ee-t.releaseStartDb)/ee;t.releaseDuration*=h}}static apply(A,t,n,s){let o=A.volumeEnvelope,r=n/10,g=s;if(A.isInRelease){let C=o.currentSampleTime-o.releaseStartTimeSamples;if(C>=o.releaseDuration){for(let h=0;h<t.length;h++)t[h]=0;A.finished=!0;return}let B=ee-o.releaseStartDb;for(let h=0;h<t.length;h++){o.attenuation+=(o.attenuationTargetGain-o.attenuation)*g;let c=C/o.releaseDuration*B+o.releaseStartDb;o.currentReleaseGain=o.attenuation*Ce(c+r),t[h]*=o.currentReleaseGain,o.currentSampleTime++,C++}o.currentReleaseGain<=wi&&(A.finished=!0);return}let i=0;switch(o.state){case 0:for(;o.currentSampleTime<o.delayEnd;)if(o.currentAttenuationDb=ee,t[i]=0,o.currentSampleTime++,++i>=t.length)return;o.state++;case 1:for(;o.currentSampleTime<o.attackEnd;){o.attenuation+=(o.attenuationTargetGain-o.attenuation)*g;let C=1-(o.attackEnd-o.currentSampleTime)/o.attackDuration;if(t[i]*=C*o.attenuation*Ce(r),o.currentAttenuationDb=0,o.currentSampleTime++,++i>=t.length)return}o.state++;case 2:for(;o.currentSampleTime<o.holdEnd;)if(o.attenuation+=(o.attenuationTargetGain-o.attenuation)*g,t[i]*=o.attenuation*Ce(r),o.currentAttenuationDb=0,o.currentSampleTime++,++i>=t.length)return;o.state++;case 3:for(;o.currentSampleTime<o.decayEnd;)if(o.attenuation+=(o.attenuationTargetGain-o.attenuation)*g,o.currentAttenuationDb=(1-(o.decayEnd-o.currentSampleTime)/o.decayDuration)*o.sustainDbRelative,t[i]*=o.attenuation*Ce(o.currentAttenuationDb+r),o.currentSampleTime++,++i>=t.length)return;o.state++;case 4:for(o.canEndOnSilentSustain&&o.sustainDbRelative>=ss&&(A.finished=!0);;)if(o.attenuation+=(o.attenuationTargetGain-o.attenuation)*g,t[i]*=o.attenuation*Ce(o.sustainDbRelative+r),o.currentAttenuationDb=o.sustainDbRelative,o.currentSampleTime++,++i>=t.length)return}}};var b=class extends Uint8Array{currentIndex=0;constructor(A){super(A)}slice(A,t){let n=super.slice(A,t);return n.currentIndex=0,n}};function kA(e){let A=e.reduce((s,o)=>s+o.length,0),t=new b(A),n=0;for(let s of e)t.set(s,n),n+=s.length;return t}var OA=class{ticks;messageStatusByte;messageData;constructor(A,t,n){this.ticks=A,this.messageStatusByte=t,this.messageData=n}};function js(e){let A=e&240,t=e&15,n=t;switch(A){case 128:case 144:case 160:case 176:case 192:case 208:case 224:break;case 240:switch(t){case 0:n=-3;break;case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 13:case 14:n=-1;break;case 15:n=-2;break}break;default:n=-1}return n}var F={noteOff:128,noteOn:144,polyPressure:160,controllerChange:176,programChange:192,channelPressure:208,pitchBend:224,systemExclusive:240,timecode:241,songPosition:242,songSelect:243,tuneRequest:246,clock:248,start:250,continue:251,stop:252,activeSensing:254,reset:255,sequenceNumber:0,text:1,copyright:2,trackName:3,instrumentName:4,lyric:5,marker:6,cuePoint:7,programName:8,midiChannelPrefix:32,midiPort:33,endOfTrack:47,setTempo:81,smpteOffset:84,timeSignature:88,keySignature:89,sequenceSpecific:127};function dt(e){let A=e&240,t=e&15,n=-1,s=e;return A>=128&&A<=224&&(n=t,s=A),{status:s,channel:n}}var p={bankSelect:0,modulationWheel:1,breathController:2,footController:4,portamentoTime:5,dataEntryMsb:6,mainVolume:7,balance:8,pan:10,expressionController:11,effectControl1:12,effectControl2:13,generalPurposeController1:16,generalPurposeController2:17,generalPurposeController3:18,generalPurposeController4:19,lsbForControl0BankSelect:32,lsbForControl1ModulationWheel:33,lsbForControl2BreathController:34,lsbForControl4FootController:36,lsbForControl5PortamentoTime:37,lsbForControl6DataEntry:38,lsbForControl7MainVolume:39,lsbForControl8Balance:40,lsbForControl10Pan:42,lsbForControl11ExpressionController:43,lsbForControl12EffectControl1:44,lsbForControl13EffectControl2:45,sustainPedal:64,portamentoOnOff:65,sostenutoPedal:66,softPedal:67,legatoFootswitch:68,hold2Pedal:69,soundVariation:70,filterResonance:71,releaseTime:72,attackTime:73,brightness:74,decayTime:75,vibratoRate:76,vibratoDepth:77,vibratoDelay:78,soundController10:79,generalPurposeController5:80,generalPurposeController6:81,generalPurposeController7:82,generalPurposeController8:83,portamentoControl:84,reverbDepth:91,tremoloDepth:92,chorusDepth:93,detuneDepth:94,phaserDepth:95,dataIncrement:96,dataDecrement:97,NRPNLsb:98,NRPNMsb:99,RPNLsb:100,RPNMsb:101,allSoundOff:120,resetAllControllers:121,localControlOnOff:122,allNotesOff:123,omniModeOff:124,omniModeOn:125,monoModeOn:126,polyModeOn:127},$s={8:2,9:2,10:2,11:2,12:1,13:1,14:2};var Cn=64,Ao=121;function eo(e){return e==="gm2"?Ao:0}function te(e){return e===120||e===126||e===127}function In(e){return te(e)||e===Cn||e===Ao}function ft(e,A,t,n,s,o){let r=e,g=0;if(n)GA(t)?In(A)||(r=A):t==="gm2"&&(r=A);else{let i=!0;switch(t){case"gm":y(`%cIgnoring the Bank Select (${A}), as the synth is in GM mode.`,I.info),i=!1;break;case"xg":i=In(A),te(A)?g=2:o%16!==9&&(g=1);break;case"gm2":A===120?g=2:o%16!==9&&(g=1)}s&&(A=128),A===128&&!s&&(A=e),i&&(r=A)}return{newBank:r,drumsStatus:g}}function ut(e,A,t,n){return n?t?te(e)?e:128:In(e)||A===0&&e!==0?e:In(A)?0:A:t?128:e}function GA(e){return e==="gm2"||e==="xg"}var JA={mainVolume:0,masterPan:1,voicesCap:2,interpolationType:3,midiSystem:4};function to(e,A){switch(e){case JA.masterPan:let t=A;this.pan=t,t=t/2+.5,this.panLeft=1-t,this.panRight=t;break;case JA.mainVolume:this.masterGain=A*os,this.setMasterParameter(JA.masterPan,this.pan);break;case JA.voicesCap:this.voiceCap=A;break;case JA.interpolationType:this.interpolationType=A;break;case JA.midiSystem:this.setSystem(A)}}function AA(e,A,t=void 0,n=!0){if(t){let s=e.slice(e.currentIndex,e.currentIndex+A);return e.currentIndex+=A,new TextDecoder(t.replace(/[^\x20-\x7E]/g,"")).decode(s.buffer)}else{let s=!1,o="";for(let r=0;r<A;r++){let g=e[e.currentIndex++];if(!s){if((g<32||g>127)&&g!==10){if(n){s=!0;continue}else if(g===0){s=!0;continue}}o+=String.fromCharCode(g)}}return o}}function VA(e,A=!1){let t=e.length;A&&(t=t+1);let n=new b(t);return bA(n,e),n}function bA(e,A,t=0){t>0&&A.length>t&&(A=A.slice(0,t));for(let n=0;n<A.length;n++)e[e.currentIndex++]=A.charCodeAt(n);if(t>A.length)for(let n=0;n<t-A.length;n++)e[e.currentIndex++]=0;return e}var et={linear:0,nearestNeighbor:1,fourthOrder:2},Pt={SoundCanvasText:0,XGText:1,SoundCanvasDotDisplay:2};var WA=10,X={noController:0,noteOnVelocity:2,noteOnKeyNum:3,polyPressure:10,channelPressure:13,pitchWheel:14,pitchWheelRange:16,link:127},DA={linear:0,concave:1,convex:2,switch:3},EA=class e{currentValue=0;modulatorDestination;transformAmount;transformType;isEffectModulator=!1;sourcePolarity;sourceDirection;sourceUsesCC;sourceIndex;sourceCurveType;secSrcPolarity;secSrcDirection;secSrcUsesCC;secSrcIndex;secSrcCurveType;constructor(A,t,n,s,o,r,g,i,C,B,h,c,l){this.sourcePolarity=s,this.sourceDirection=o,this.sourceUsesCC=n,this.sourceIndex=A,this.sourceCurveType=t,this.secSrcPolarity=C,this.secSrcDirection=B,this.secSrcUsesCC=i,this.secSrcIndex=r,this.secSrcCurveType=g,this.modulatorDestination=h,this.transformAmount=c,this.transformType=l,this.modulatorDestination>_s&&(this.modulatorDestination=a.INVALID)}static copy(A){return new e(A.sourceIndex,A.sourceCurveType,A.sourceUsesCC,A.sourcePolarity,A.sourceDirection,A.secSrcIndex,A.secSrcCurveType,A.secSrcUsesCC,A.secSrcPolarity,A.secSrcDirection,A.modulatorDestination,A.transformAmount,A.transformType)}static isIdentical(A,t,n=!1){return A.sourceIndex===t.sourceIndex&&A.sourceUsesCC===t.sourceUsesCC&&A.sourcePolarity===t.sourcePolarity&&A.sourceDirection===t.sourceDirection&&A.sourceCurveType===t.sourceCurveType&&A.secSrcIndex===t.secSrcIndex&&A.secSrcUsesCC===t.secSrcUsesCC&&A.secSrcPolarity===t.secSrcPolarity&&A.secSrcDirection===t.secSrcDirection&&A.secSrcCurveType===t.secSrcCurveType&&A.modulatorDestination===t.modulatorDestination&&A.transformType===t.transformType&&(!n||A.transformAmount===t.transformAmount)}static debugString(A){function t(o,r){return Object.keys(o).find(g=>o[g]===r)}let n=t(DA,A.sourceCurveType);n+=A.sourcePolarity===0?" unipolar ":" bipolar ",n+=A.sourceDirection===0?"forwards ":"backwards ",A.sourceUsesCC?n+=t(p,A.sourceIndex):n+=t(X,A.sourceIndex);let s=t(DA,A.secSrcCurveType);return s+=A.secSrcPolarity===0?" unipolar ":" bipolar ",s+=A.secSrcDirection===0?"forwards ":"backwards ",A.secSrcUsesCC?s+=t(p,A.secSrcIndex):s+=t(X,A.secSrcIndex),`Modulator:
3
3
  Source: ${n}
4
4
  Secondary source: ${s}
5
5
  Destination: ${t(a,A.modulatorDestination)}
@@ -7,16 +7,16 @@ var Ys=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(A,t)=>(
7
7
  Transform type: ${A.transformType}
8
8
 
9
9
 
10
- `}getSourceEnum(){return XA(this.sourceCurveType,this.sourcePolarity,this.sourceDirection,this.sourceUsesCC,this.sourceIndex)}getSecSrcEnum(){return XA(this.secSrcCurveType,this.secSrcPolarity,this.secSrcDirection,this.secSrcUsesCC,this.secSrcIndex)}sumTransform(A){return new e(this.sourceIndex,this.sourceCurveType,this.sourceUsesCC,this.sourcePolarity,this.sourceDirection,this.secSrcIndex,this.secSrcCurveType,this.secSrcUsesCC,this.secSrcPolarity,this.secSrcDirection,this.modulatorDestination,this.transformAmount+A.transformAmount,this.transformType)}},mA=class extends EA{constructor(A,t,n,s,o){let r=A>>9&1,g=A>>8&1,i=A>>7&1,C=A&127,B=A>>10&3,h=t>>9&1,c=t>>8&1,l=t>>7&1,u=t&127,f=t>>10&3;super(C,B,i,r,g,u,f,l,h,c,n,s,o),this.isEffectModulator=(A===219||A===221)&&t===0&&(this.modulatorDestination===a.reverbEffectsSend||this.modulatorDestination===a.chorusEffectsSend)}},os=960,rs=DA.concave;function XA(e,A,t,n,s){return e<<10|A<<9|t<<8|n<<7|s}var wi=[new mA(XA(rs,0,1,0,X.noteOnVelocity),0,a.initialAttenuation,os,0),new mA(129,0,a.vibLfoToPitch,50,0),new mA(XA(rs,0,1,1,p.mainVolume),0,a.initialAttenuation,os,0),new mA(13,0,a.vibLfoToPitch,50,0),new mA(526,16,a.fineTune,12700,0),new mA(650,0,a.pan,500,0),new mA(XA(rs,0,1,1,p.expressionController),0,a.initialAttenuation,os,0),new mA(219,0,a.reverbEffectsSend,200,0),new mA(221,0,a.chorusEffectsSend,200,0)],Ri=[new mA(XA(DA.linear,0,0,0,X.polyPressure),0,a.vibLfoToPitch,50,0),new mA(XA(DA.linear,0,0,1,p.tremoloDepth),0,a.modLfoToVolume,24,0),new mA(XA(DA.convex,1,0,1,p.attackTime),0,a.attackVolEnv,6e3,0),new mA(XA(DA.linear,1,0,1,p.releaseTime),0,a.releaseVolEnv,3600,0),new mA(XA(DA.linear,1,0,1,p.brightness),0,a.initialFilterFc,6e3,0),new mA(XA(DA.linear,1,0,1,p.filterResonance),0,a.initialFilterQ,250,0)],to=wi.concat(Ri);var cA=128,En=147,Je=new Int16Array(En).fill(0),MA=(e,A)=>Je[e]=A<<7;MA(p.mainVolume,100);MA(p.balance,64);MA(p.expressionController,127);MA(p.pan,64);MA(p.portamentoOnOff,127);MA(p.filterResonance,64);MA(p.releaseTime,64);MA(p.attackTime,64);MA(p.brightness,64);MA(p.decayTime,64);MA(p.vibratoRate,64);MA(p.vibratoDepth,64);MA(p.vibratoDelay,64);MA(p.generalPurposeController6,64);MA(p.generalPurposeController8,64);MA(p.RPNLsb,127);MA(p.RPNMsb,127);MA(p.NRPNLsb,127);MA(p.NRPNMsb,127);var cn=1;Je[p.portamentoControl]=cn;MA(cA+X.pitchWheel,64);MA(cA+X.pitchWheelRange,2);var nA={channelTuning:0,channelTransposeFine:1,modulationMultiplier:2,masterTuning:3,channelTuningSemitones:4,channelKeyShift:5,sf2NPRNGeneratorLSB:6},is=Object.keys(nA).length,as=new Float32Array(is);as[nA.modulationMultiplier]=1;var vA={Idle:0,RPCoarse:1,RPFine:2,NRPCoarse:3,NRPFine:4,DataCoarse:5,DataFine:6},gs={velocityOverride:128};function no(e,A,t){let n=e,s=A<<7|t;return e===127&&A===127&&t===127?{midiNote:-1,centTuning:null}:{midiNote:n,centTuning:s*.0061}}function so(e,A=0){let t=e[0];if(this.deviceID!==-1&&e[1]!==127&&this.deviceID!==e[1])return;function n(o,r,g,i){y(`%cChannel %c${o}%c ${g}. %c${r} ${i}%c, with %c${YA(e)}`,I.info,I.recognized,I.info,I.value,I.info,I.value)}function s(){O(`%cUnrecognized Roland %cGS %cSysEx: %c${YA(e)}`,I.warn,I.recognized,I.warn,I.unrecognized)}switch(t){default:O(`%cUnrecognized SysEx: %c${YA(e)}`,I.warn,I.unrecognized);break;case 126:case 127:switch(e[2]){case 4:let o;switch(e[3]){case 1:let g=e[5]<<7|e[4];this.setMIDIVolume(g/16384),y(`%cMaster Volume. Volume: %c${g}`,I.info,I.value);break;case 2:let C=((e[5]<<7|e[4])-8192)/8192;this.setMasterParameter(JA.masterPan,C),y(`%cMaster Pan. Pan: %c${C}`,I.info,I.value);break;case 3:let B=(e[5]<<7|e[6])-8192;o=Math.floor(B/81.92),this.setMasterTuning(o),y(`%cMaster Fine Tuning. Cents: %c${o}`,I.info,I.value);break;case 4:o=(e[5]-64)*100,this.setMasterTuning(o),y(`%cMaster Coarse Tuning. Cents: %c${o}`,I.info,I.value);break;default:O(`%cUnrecognized MIDI Device Control Real-time message: %c${YA(e)}`,I.warn,I.unrecognized)}break;case 9:e[3]===1?(y("%cGM1 system on",I.info),this.setSystem("gm")):e[3]===3?(y("%cGM2 system on",I.info),this.setSystem("gm2")):(y("%cGM system off, defaulting to GS",I.info),this.setSystem("gs"));break;case 8:let r=4;switch(e[3]){case 1:let g=e[r++];e.currentIndex=r;let i=AA(e,16);if(r+=16,e.length<384){O(`The Bulk Tuning Dump is too short! (${e.length} bytes, at least 384 are expected)`);return}for(let c=0;c<128;c++)this.tunings[g][c]=no(e[r++],e[r++],e[r++]);y(`%cBulk Tuning Dump %c${i}%c Program: %c${g}`,I.info,I.value,I.info,I.recognized);break;case 2:case 7:e[3]===7&&r++;let C=e[r++],B=e[r++];for(let c=0;c<B;c++)this.tunings[C][e[r++]]=no(e[r++],e[r++],e[r++]);y(`%cSingle Note Tuning. Program: %c${C}%c Keys affected: %c${B}`,I.info,I.recognized,I.info,I.recognized);break;case 9:case 8:let h=new Int8Array(12);if(e[3]===8)for(let c=0;c<12;c++)h[c]=e[7+c]-64;else for(let c=0;c<24;c+=2){let l=(e[7+c]<<7|e[8+c])-8192;h[c/2]=Math.floor(l/81.92)}(e[4]&1)===1&&this.midiAudioChannels[14+A].setOctaveTuning(h),(e[4]>>1&1)===1&&this.midiAudioChannels[15+A].setOctaveTuning(h);for(let c=0;c<7;c++)(e[5]>>c&1)===1&&this.midiAudioChannels[7+c+A].setOctaveTuning(h);for(let c=0;c<7;c++)(e[6]>>c&1)===1&&this.midiAudioChannels[c+A].setOctaveTuning(h);y(`%cMIDI Octave Scale ${e[3]===8?"(1 byte)":"(2 bytes)"} tuning via Tuning: %c${h.join(" ")}`,I.info,I.value);break;default:O(`%cUnrecognized MIDI Tuning standard message: %c${YA(e)}`,I.warn,I.unrecognized);break}break;default:O(`%cUnrecognized MIDI Realtime/non realtime message: %c${YA(e)}`,I.warn,I.unrecognized)}break;case 65:if(e[2]===66&&e[3]===18){let o=e[7];if(e[4]===64||e[4]===0&&e[6]===127){if((e[5]&16)>0){let r=[9,0,1,2,3,4,5,6,7,8,10,11,12,13,14,15][e[5]&15]+A,g=this.midiAudioChannels[r];switch(e[6]){default:s();break;case 21:let i=o>0&&e[5]>>4;g.setDrums(i),y(`%cChannel %c${r}%c ${i?"is now a drum channel":"now isn't a drum channel"}%c via: %c${YA(e)}`,I.info,I.value,I.recognized,I.info,I.value);return;case 22:let C=o-64;g.setCustomController(nA.channelKeyShift,C),n(r,C,"key shift","keys");return;case 28:let B=o;B===0?(g.randomPan=!0,y(`%cRandom pan is set to %cON%c for %c${r}`,I.info,I.recognized,I.info,I.value)):(g.randomPan=!1,g.controllerChange(p.pan,B));break;case 33:g.controllerChange(p.chorusDepth,o);break;case 34:g.controllerChange(p.reverbDepth,o);break;case 64:case 65:case 66:case 67:case 68:case 69:case 70:case 71:case 72:case 73:case 74:case 75:let h=e.length-9,c=new Int8Array(12);for(let u=0;u<h;u++)c[u]=e[u+7]-64;g.setOctaveTuning(c);let l=o-64;n(r,c.join(" "),"octave scale tuning","cents"),g.setTuning(l);break}return}else if((e[5]&32)>0){let r=[9,0,1,2,3,4,5,6,7,8,10,11,12,13,14,15][e[5]&15]+A,g=this.midiAudioChannels[r],i=o-64,C=i/64,B=o/128,h=(c,l,u=!1)=>{switch(e[6]&15){case 0:c===cA+X.pitchWheel?(g.controllerChange(p.RPNMsb,0),g.controllerChange(p.RPNLsb,0),g.controllerChange(p.dataEntryMsb,Math.floor(i))):(g.sysExModulators.setModulator(c,a.fineTune,i*100,u),n(r,i,`${l} pitch control`,"semitones"));break;case 1:g.sysExModulators.setModulator(c,a.initialFilterFc,C*9600,u),n(r,C*9600,`${l} pitch control`,"cents");break;case 2:g.sysExModulators.setModulator(c,a.initialAttenuation,C*960,u),n(r,C*960,`${l} amplitude`,"cB");break;case 4:g.sysExModulators.setModulator(c,a.vibLfoToPitch,B*600,u),n(r,B*600,`${l} LFO1 pitch depth`,"cents");break;case 5:g.sysExModulators.setModulator(c,a.vibLfoToFilterFc,B*2400,u),n(r,B*2400,`${l} LFO1 filter depth`,"cents");break;case 6:g.sysExModulators.setModulator(c,a.vibLfoToVolume,C*960,u),n(r,C*960,`${l} LFO1 amplitude depth`,"cB");break;case 8:g.sysExModulators.setModulator(c,a.modLfoToPitch,B*600,u),n(r,B*600,`${l} LFO2 pitch depth`,"cents");break;case 9:g.sysExModulators.setModulator(c,a.modLfoToFilterFc,B*2400,u),n(r,B*2400,`${l} LFO2 filter depth`,"cents");break;case 10:g.sysExModulators.setModulator(c,a.modLfoToVolume,C*960,u),n(r,C*960,`${l} LFO2 amplitude depth`,"cB");break}};switch(e[6]&240){default:s();break;case 0:h(p.modulationWheel,"mod wheel");break;case 16:h(cA+X.pitchWheel,"pitch bend",!0);break;case 32:h(cA+X.channelPressure,"channel pressure");break;case 48:h(cA+X.polyPressure,"poly pressure");break}return}else if(e[5]===0){switch(e[6]){default:s();break;case 127:o===0?(y("%cGS Reset received!",I.info),this.resetAllControllers(!1),this.setSystem("gs")):o===127&&(y("%cGS system off, switching to GM2",I.info),this.resetAllControllers(!1),this.setSystem("gm2"));break;case 6:y(`%cRoland GS Master Pan set to: %c${o}%c with: %c${YA(e)}`,I.info,I.value,I.info,I.value),this.setMasterParameter(JA.masterPan,(o-64)/64);break;case 4:y(`%cRoland GS Master Volume set to: %c${o}%c with: %c${YA(e)}`,I.info,I.value,I.info,I.value),this.setMIDIVolume(o/127);break;case 5:let r=o-64;y(`%cRoland GS Master Key-Shift set to: %c${r}%c with: %c${YA(e)}`,I.info,I.value,I.info,I.value),this.setMasterTuning(r*100);break}return}else if(e[5]===1)switch(e[6]){default:s();break;case 0:e.currentIndex=7;let r=AA(e,16);y(`%cGS Patch name: %c${r}`,I.info,I.value);break;case 51:y(`%cGS Reverb level: %c${o}`,I.info,I.value),this.reverbSend=o/64;break;case 48:case 49:case 50:case 52:case 53:case 55:y(`%cUnsupported GS Reverb Parameter: %c${e[6].toString(16)}`,I.warn,I.unrecognized);break;case 58:y(`%cGS Chorus level: %c${o}`,I.info,I.value),this.chorusSend=o/64;break;case 56:case 57:case 59:case 60:case 61:case 62:case 63:case 64:y(`%cUnsupported GS Chorus Parameter: %c${e[6].toString(16)}`,I.warn,I.unrecognized);break}}else s();return}else if(e[2]===69&&e[3]===18){if(e[4]===16&&e[6]===0)if(e[5]===0){let o=new Uint8Array(e.slice(7,e.length-2));this.callEvent("synthdisplay",{displayData:o,displayType:Kt.SoundCanvasText})}else if(e[5]===1){let o=new Uint8Array(e.slice(7,e.length-3));this.callEvent("synthdisplay",{displayData:o,displayType:Kt.SoundCanvasDotDisplay}),y(`%cRoland SC Display Dot Matrix via: %c${YA(e)}`,I.info,I.value)}else s()}else if(e[2]===22&&e[3]===18&&e[4]===16){this.setMIDIVolume(e[7]/100),y(`%cRoland Master Volume control set to: %c${e[7]}%c via: %c${YA(e)}`,I.info,I.value,I.info,I.value);return}else{O(`%cUnrecognized Roland SysEx: %c${YA(e)}`,I.warn,I.unrecognized);return}break;case 67:if(e[2]===76)if(e[3]===0&&e[4]===0)switch(e[5]){case 4:let o=e[6];this.setMIDIVolume(o/127),y(`%cXG master volume. Volume: %c${o}`,I.info,I.recognized);break;case 6:let r=e[6]-64;this.transposeAllChannels(r),y(`%cXG master transpose. Volume: %c${r}`,I.info,I.recognized);break;case 126:y("%cXG system on",I.info),this.resetAllControllers(!1),this.setSystem("xg");break}else if(e[3]===8){if(!GA(this.system))return;let o=e[4]+A;if(o>=this.midiAudioChannels.length)return;let r=this.midiAudioChannels[o],g=e[6];switch(e[5]){case 1:r.controllerChange(p.bankSelect,g);break;case 2:r.controllerChange(p.lsbForControl0BankSelect,g);break;case 3:r.programChange(g);break;case 8:if(r.drumChannel)return;let i=g-64;r.channelTransposeKeyShift=i;break;case 11:r.controllerChange(p.mainVolume,g);break;case 14:let C=g;C===0?(r.randomPan=!0,y(`%cRandom pan is set to %cON%c for %c${o}`,I.info,I.recognized,I.info,I.value)):r.controllerChange(p.pan,C);break;case 19:r.controllerChange(p.reverbDepth,g);break;case 18:r.controllerChange(p.chorusDepth,g);break;default:O(`%cUnrecognized Yamaha XG Part Setup: %c${e[5].toString(16).toUpperCase()}`,I.warn,I.unrecognized)}}else if(e[3]===6&&e[4]===0){let o=new Uint8Array(e.slice(5,e.length-1));this.callEvent("synthdisplay",{displayData:o,displayType:Kt.XGText})}else GA(this.system)&&O(`%cUnrecognized Yamaha XG SysEx: %c${YA(e)}`,I.warn,I.unrecognized);else GA(this.system)&&O(`%cUnrecognized Yamaha SysEx: %c${YA(e)}`,I.warn,I.unrecognized);break}}function oo(e=!0){e&&y("%cResetting all controllers!",I.info),this.callEvent("allcontrollerreset",void 0),this.setSystem(Yt);for(let A=0;A<this.midiAudioChannels.length;A++){this.midiAudioChannels[A].resetControllers();let t=this.midiAudioChannels[A];t.lockPreset?this.callEvent("drumchange",{channel:A,isDrumChannel:t.drumChannel}):(t.setBankSelect(Ao(this.system)),A%16===9?(t.setPreset(this.drumPreset),t.drumChannel=!0,this.callEvent("drumchange",{channel:A,isDrumChannel:!0})):(t.drumChannel=!1,t.setPreset(this.defaultPreset),this.callEvent("drumchange",{channel:A,isDrumChannel:!1})));let n=t.preset.bank;this.callEvent("programchange",{channel:A,program:t.preset.program,bank:n});for(let s=0;s<128;s++)this.midiAudioChannels[A].lockedControllers[s]&&this.callEvent("controllerchange",{channel:A,controllerNumber:s,controllerValue:this.midiAudioChannels[A].midiControllers[s]>>7});if(this.midiAudioChannels[A].lockedControllers[cA+X.pitchWheel]===!1){let s=this.midiAudioChannels[A].midiControllers[cA+X.pitchWheel],o=s>>7,r=s&127;this.callEvent("pitchwheel",{channel:A,MSB:o,LSB:r})}}this.tunings=[],this.tunings=[];for(let A=0;A<128;A++)this.tunings.push([]);this.setMIDIVolume(1)}function ro(){this.channelOctaveTuning.fill(0);for(let A=0;A<Je.length;A++){if(this.lockedControllers[A])continue;let t=Je[A];this.midiControllers[A]!==t&&A<127?A===p.portamentoControl?this.midiControllers[A]=cn:this.controllerChange(A,t>>7):this.midiControllers[A]=t}this.channelVibrato={rate:0,depth:0,delay:0},this.holdPedal=!1,this.randomPan=!1,this.sysExModulators.resetModulators();let e=this.customControllers[nA.channelTransposeFine];this.customControllers.set(as),this.setCustomController(nA.channelTransposeFine,e),this.resetParameters()}var Is=new Set([p.bankSelect,p.lsbForControl0BankSelect,p.mainVolume,p.lsbForControl7MainVolume,p.pan,p.lsbForControl10Pan,p.reverbDepth,p.tremoloDepth,p.chorusDepth,p.detuneDepth,p.phaserDepth,p.soundVariation,p.filterResonance,p.releaseTime,p.attackTime,p.brightness,p.decayTime,p.vibratoRate,p.vibratoDepth,p.vibratoDelay,p.soundController10]);function io(){this.channelOctaveTuning.fill(0),this.pitchWheel(64,0),this.channelVibrato={rate:0,depth:0,delay:0};for(let e=0;e<128;e++){let A=Je[e];!Is.has(e)&&A!==this.midiControllers[e]&&(e===p.portamentoControl?this.midiControllers[e]=cn:this.controllerChange(e,A>>7))}this.resetGeneratorOverrides(),this.resetGeneratorOffsets()}function ao(){this.dataEntryState=vA.Idle,this.midiControllers[p.NRPNLsb]=16256,this.midiControllers[p.NRPNMsb]=16256,this.midiControllers[p.RPNLsb]=16256,this.midiControllers[p.RPNMsb]=16256,this.resetGeneratorOverrides(),this.resetGeneratorOffsets(),y("%cResetting Registered and Non-Registered Parameters!",I.info)}var mt=class{soundfontList=[];presetList=[];constructor(A){this.presetListChangeCallback=A}generatePresetList(){let A={};for(let t=this.soundfontList.length-1;t>=0;t--){let n=this.soundfontList[t],s=new Set;for(let o of n.soundfont.presets){let g=`${Math.min(128,o.bank+n.bankOffset)}-${o.program}`;s.has(g)||(s.add(g),A[g]=o.presetName)}}this.presetList=[];for(let[t,n]of Object.entries(A)){let s=t.split("-");this.presetList.push({presetName:n,program:parseInt(s[1]),bank:parseInt(s[0])})}this.presetListChangeCallback()}getPresetList(){return this.presetList.slice()}reloadManager(A){this.soundfontList=this.soundfontList.filter(t=>t.id===$e),this.soundfontList.push({id:"main",bankOffset:0,soundfont:A}),this.generatePresetList()}deleteSoundFont(A){if(this.soundfontList.length===0){O("1 soundfont left. Aborting!");return}let t=this.soundfontList.findIndex(n=>n.id===A);if(t===-1){y(`No soundfont with id of "${A}" found. Aborting!`);return}delete this.soundfontList[t].soundfont.presets,delete this.soundfontList[t].soundfont.instruments,delete this.soundfontList[t].soundfont.samples,this.soundfontList.splice(t,1),this.generatePresetList()}addNewSoundFont(A,t,n){if(this.soundfontList.find(s=>s.id===t)!==void 0){let s=this.soundfontList.find(o=>o.id===t);s.soundfont=A,s.bankOffset=n}else this.soundfontList.push({id:t,soundfont:A,bankOffset:n});this.generatePresetList()}getCurrentSoundFontOrder(){return this.soundfontList.map(A=>A.id)}rearrangeSoundFonts(A){this.soundfontList.sort((t,n)=>A.indexOf(t.id)-A.indexOf(n.id)),this.generatePresetList()}getPreset(A,t,n=!1){if(this.soundfontList.length<1)throw new Error("No soundfonts! Did you forget to add one?");let s=A===128||n&&ee(A);for(let o of this.soundfontList){let r=o.soundfont.getPresetNoFallback(A===128?128:A-o.bankOffset,t,n);if(r!==void 0)return{preset:r,bankOffset:o.bankOffset}}if(s){for(let r of this.soundfontList){let g=r.soundfont.presets.find(C=>C.isDrumPreset(n)&&C.program===t);if(g)return{preset:g,bankOffset:r.bankOffset};let i=r.soundfont.presets.find(C=>C.isDrumPreset(n));if(i)return{preset:i,bankOffset:r.bankOffset}}let o=this.soundfontList[0];return{preset:o.soundfont.presets[0],bankOffset:o.bankOffset}}else{for(let r of this.soundfontList){let g=r.soundfont.presets.find(i=>i.program===t&&!i.isDrumPreset(n));if(g)return{preset:g,bankOffset:r.bankOffset}}let o=this.soundfontList[0];return{preset:o.soundfont.presets[0],bankOffset:o.bankOffset}}}destroyManager(){this.soundfontList.forEach(A=>{A.soundfont.destroySoundBank()}),delete this.soundfontList}};var hn=class{_keyMappings=[];addMapping(A,t,n){this._keyMappings[A]===void 0&&(this._keyMappings[A]=[]),this._keyMappings[A][t]=n}deleteMapping(A,t){this._keyMappings[A]?.[t]!==void 0&&(this._keyMappings[A][t]=void 0)}clearMappings(){this._keyMappings=[]}setMappings(A){this._keyMappings=A}getMappings(){return this._keyMappings}getVelocity(A,t){return this._keyMappings[A]?.[t]?.velocity??-1}getGain(A,t){return this._keyMappings[A]?.[t]?.gain??1}hasOverridePatch(A,t){let n=this._keyMappings[A]?.[t]?.patch?.bank;return n!==void 0&&n>=0}getPatch(A,t){let n=this._keyMappings[A]?.[t];if(n)return n.patch;throw new Error("No modifier.")}};var go=.1,Ke=class e{static cachedCoefficients=[];a0=0;a1=0;a2=0;a3=0;a4=0;x1=0;x2=0;y1=0;y2=0;resonanceCb=0;currentInitialFc=13500;lastTargetCutoff=1/0;initialized=!1;sampleRate;constructor(A){this.sampleRate=A,this.maxCutoff=A*.45}static apply(A,t,n,s){let o=A.modulatedGenerators[a.initialFilterFc],r=A.filter;r.initialized?r.currentInitialFc+=(o-r.currentInitialFc)*s:(r.initialized=!0,r.currentInitialFc=o);let g=r.currentInitialFc+n,i=A.modulatedGenerators[a.initialFilterQ];if(r.currentInitialFc>13499&&g>13499&&i===0){r.currentInitialFc=13500;return}(Math.abs(r.lastTargetCutoff-g)>1||r.resonanceCb!==i)&&(r.lastTargetCutoff=g,r.resonanceCb=i,e.calculateCoefficients(r,g));for(let C=0;C<t.length;C++){let B=t[C],h=r.a0*B+r.a1*r.x1+r.a2*r.x2-r.a3*r.y1-r.a4*r.y2;r.x2=r.x1,r.x1=B,r.y2=r.y1,r.y1=h,t[C]=h}}static calculateCoefficients(A,t){t=~~t;let n=A.resonanceCb,s=e.cachedCoefficients?.[n]?.[t];if(s!==void 0){A.a0=s.a0,A.a1=s.a1,A.a2=s.a2,A.a3=s.a3,A.a4=s.a4;return}let o=Ot(t);o=Math.min(o,A.maxCutoff);let r=n/10,g=Ie(-(r-3.01)),i=1/Math.sqrt(Ie(-r)),C=2*Math.PI*o/A.sampleRate,B=Math.cos(C),h=Math.sin(C)/(2*g),c=(1-B)*i,l=c/2,u=l,f=1+h,S=-2*B,G=1-h,D={};D.a0=l/f,D.a1=c/f,D.a2=u/f,D.a3=S/f,D.a4=G/f,A.a0=D.a0,A.a1=D.a1,A.a2=D.a2,A.a3=D.a3,A.a4=D.a4,e.cachedCoefficients[n]===void 0&&(e.cachedCoefficients[n]=[]),e.cachedCoefficients[n][t]=D}},Cs=new Ke(44100);Cs.resonanceCb=0;for(let e=1500;e<13500;e++)Cs.currentInitialFc=e,Ke.calculateCoefficients(Cs,e);var LA=16384,Ge=new Float32Array(LA+1),tt=new Float32Array(LA+1);Ge[0]=0;Ge[Ge.length-1]=1;tt[0]=0;tt[tt.length-1]=1;for(let e=1;e<LA-1;e++){let A=-.4166666666666667*Math.log(e/(Ge.length-1))/Math.LN10;tt[e]=1-A,Ge[Ge.length-1-e]=A}function nt(e,A,t,n){switch(e&&(t=1-t),A){case DA.linear:return n?t*2-1:t;case DA.switch:return t=t>.5?1:0,n?t*2-1:t;case DA.concave:return n?(t=t*2-1,t<0?-Ge[~~(t*-LA)]:Ge[~~(t*LA)]):Ge[~~(t*LA)];case DA.convex:return n?(t=t*2-1,t<0?-tt[~~(t*-LA)]:tt[~~(t*LA)]):tt[~~(t*LA)]}}var Es=1,cs=new Float32Array(1e3);for(let e=0;e<cs.length;e++)cs[e]=nt(0,DA.convex,e/1e3,0);var le=class e{attackDuration=0;decayDuration=0;holdDuration=0;releaseDuration=0;sustainLevel=0;delayEnd=0;attackEnd=0;holdEnd=0;decayEnd=0;releaseStartLevel=0;currentValue=0;static startRelease(A){e.recalculate(A)}static recalculate(A){let t=A.modulationEnvelope;A.isInRelease&&(t.releaseStartLevel=e.getValue(A,A.releaseStartTime,!0)),t.sustainLevel=1-A.modulatedGenerators[a.sustainModEnv]/1e3,t.attackDuration=ce(A.modulatedGenerators[a.attackModEnv]);let n=(60-A.midiNote)*A.modulatedGenerators[a.keyNumToModEnvDecay],s=ce(A.modulatedGenerators[a.decayModEnv]+n);t.decayDuration=s*(1-t.sustainLevel);let o=(60-A.midiNote)*A.modulatedGenerators[a.keyNumToModEnvHold];t.holdDuration=ce(o+A.modulatedGenerators[a.holdModEnv]);let r=ce(A.modulatedGenerators[a.releaseModEnv]);t.releaseDuration=r*t.releaseStartLevel,t.delayEnd=A.startTime+ce(A.modulatedGenerators[a.delayModEnv]),t.attackEnd=t.delayEnd+t.attackDuration,t.holdEnd=t.attackEnd+t.holdDuration,t.decayEnd=t.holdEnd+t.decayDuration}static getValue(A,t,n=!1){let s=A.modulationEnvelope;return A.isInRelease&&!n?s.releaseStartLevel===0?0:Math.max(0,(1-(t-A.releaseStartTime)/s.releaseDuration)*s.releaseStartLevel):(t<s.delayEnd?s.currentValue=0:t<s.attackEnd?s.currentValue=cs[~~((1-(s.attackEnd-t)/s.attackDuration)*1e3)]:t<s.holdEnd?s.currentValue=Es:t<s.decayEnd?s.currentValue=(1-(s.decayEnd-t)/s.decayDuration)*(s.sustainLevel-Es)+Es:s.currentValue=s.sustainLevel,s.currentValue)}};var Pe=4,v=class{generatorType=a.INVALID;generatorValue=0;constructor(A=a.INVALID,t=0,n=!0){if(this.generatorType=A,t===void 0)throw new Error("No value provided.");if(this.generatorValue=Math.round(t),n){let s=q[A];s!==void 0&&(this.generatorValue=Math.max(s.min,Math.min(s.max,this.generatorValue)))}}};function Io(e,A,t){let n=q[e]||{min:0,max:32768,def:0},s=A.find(C=>C.generatorType===e),o=0;s&&(o=s.generatorValue);let r=t.find(C=>C.generatorType===e),g=n.def;r&&(g=r.generatorValue);let i=g+o;return e===a.initialAttenuation?i:Math.max(n.min,Math.min(n.max,i))}var Gi=-2320,Mi=-1130,ln=class{sampleData;playbackStep=0;cursor=0;rootKey=0;loopStart=0;loopEnd=0;end=0;loopingMode=0;isLooping=!1;constructor(A,t,n,s,o,r,g,i){this.sampleData=A,this.playbackStep=t,this.cursor=n,this.rootKey=s,this.loopStart=o,this.loopEnd=r,this.end=g,this.loopingMode=i,this.isLooping=this.loopingMode===1||this.loopingMode===3}},Pt=class e{sample;filter;gain=1;generators;modulators=[];modulatedGenerators;finished=!1;isInRelease=!1;velocity=0;midiNote=0;pressure=0;targetKey=0;modulationEnvelope=new le;volumeEnvelope;startTime=0;releaseStartTime=1/0;currentTuningCents=0;currentTuningCalculated=1;currentPan=0;realKey;portamentoFromKey=-1;portamentoDuration=0;overridePan=0;exclusiveClass=0;constructor(A,t,n,s,o,r,g,i,C){this.sample=t,this.generators=i,this.exclusiveClass=this.generators[a.exclusiveClass],this.modulatedGenerators=new Int16Array(i),this.modulators=C,this.filter=new Ke(A),this.velocity=s,this.midiNote=n,this.startTime=o,this.targetKey=r,this.realKey=g,this.volumeEnvelope=new he(A,i[a.sustainVolEnv])}static copy(A,t,n){let s=A.sample,o=new ln(s.sampleData,s.playbackStep,s.cursor,s.rootKey,s.loopStart,s.loopEnd,s.end,s.loopingMode);return new e(A.volumeEnvelope.sampleRate,o,A.midiNote,A.velocity,t,A.targetKey,n,new Int16Array(A.generators),A.modulators.map(r=>EA.copy(r)))}exclusiveRelease(A){this.release(A,ho),this.modulatedGenerators[a.releaseVolEnv]=Gi,this.modulatedGenerators[a.releaseModEnv]=Mi,he.recalculate(this),le.recalculate(this)}release(A,t=co){this.releaseStartTime=A,this.releaseStartTime-this.startTime<t&&(this.releaseStartTime=this.startTime+t)}};function Co(e,A,t,n,s,o){let r=e.getSamplesAndGenerators(n,s).reduce((g,i)=>{if(i.sample.getAudioData()===void 0)return O(`Discarding invalid sample: ${i.sample.sampleName}`),g;let C=new Int16Array(Jt);for(let S=0;S<60;S++)C[S]=Io(S,i.presetGenerators,i.instrumentGenerators);C[a.initialAttenuation]=Math.floor(C[a.initialAttenuation]*.4);let B=i.sample.samplePitch;C[a.overridingRootKey]>-1&&(B=C[a.overridingRootKey]);let h=n;C[a.keyNum]>-1&&(h=C[a.keyNum]);let c=i.sample.sampleLoopStartIndex,l=i.sample.sampleLoopEndIndex,u=C[a.sampleModes],f=new ln(i.sample.sampleData,i.sample.sampleRate/this.sampleRate*Math.pow(2,i.sample.samplePitchCorrection/1200),0,B,c,l,Math.floor(i.sample.sampleData.length)-1,u);return C[a.velocity]>-1&&(s=C[a.velocity]),g.push(new Pt(this.sampleRate,f,n,s,this.currentSynthTime,h,o,C,i.modulators.map(S=>EA.copy(S)))),g},[]);return this.setCachedVoice(A,t,n,s,r),r.map(g=>Pt.copy(g,this.currentSynthTime,o))}function Eo(e,A,t,n){let s=this.midiAudioChannels[e],o=this.keyModifierManager.hasOverridePatch(e,A),r=s.getBankSelect(),g=s.preset.program;if(o){let B=this.keyModifierManager.getPatch(e,A);r=B.bank,g=B.program}let i=this.getCachedVoice(r,g,A,t);if(i!==void 0)return i.map(B=>Pt.copy(B,this.currentSynthTime,n));let C=s.preset;return o&&(C=this.getPreset(r,g)),this.getVoicesForPreset(C,r,g,A,t,n)}var Bo=.05,xi=4600,Ni=2e3,lo=Math.PI/2,Bn=-500,Qo=500,hs=Qo-Bn,fo=new Float32Array(hs+1),uo=new Float32Array(hs+1);for(let e=Bn;e<=Qo;e++){let A=(e-Bn)/hs,t=e-Bn;fo[t]=Math.cos(lo*A),uo[t]=Math.sin(lo*A)}function mo(e,A,t,n,s,o,r,g){if(isNaN(A[0]))return;let i;e.overridePan?i=e.overridePan:(e.currentPan+=(e.modulatedGenerators[a.pan]-e.currentPan)*this.synth.panSmoothingFactor,i=e.currentPan);let C=this.synth.currentGain*e.gain,B=~~(i+500),h=fo[B]*C*this.synth.panLeft,c=uo[B]*C*this.synth.panRight;if(this.synth.effectsEnabled){let l=e.modulatedGenerators[a.reverbEffectsSend];if(l>0){let f=this.synth.reverbGain*this.synth.reverbSend*C*(l/xi);for(let S=0;S<A.length;S++)s[S]+=f*A[S];o.set(s)}let u=e.modulatedGenerators[a.chorusEffectsSend];if(u>0){let f=this.synth.chorusGain*this.synth.chorusSend*(u/Ni),S=h*f,G=c*f;for(let D=0;D<A.length;D++)r[D]+=S*A[D],g[D]+=G*A[D]}}if(h>0)for(let l=0;l<A.length;l++)t[l]+=h*A[l];if(c>0)for(let l=0;l<A.length;l++)n[l]+=c*A[l]}function po(e=!1){y("%cStop all received!",I.info);for(let A=0;A<this.midiAudioChannels.length;A++)this.midiAudioChannels[A].stopAllNotes(e);this.callEvent("stopall",void 0)}function N(e,A){let t=0;for(let n=0;n<A;n++)t|=e[e.currentIndex++]<<n*8;return t>>>0}function ye(e,A,t){for(let n=0;n<t;n++)e[e.currentIndex++]=A>>n*8&255}function J(e,A){e[e.currentIndex++]=A&255,e[e.currentIndex++]=A>>8}function eA(e,A){ye(e,A,4)}function qe(e,A){let t=A<<8|e;return t>32767?t-65536:t}function yo(e){return e>127?e-256:e}var hA=class{constructor(A,t,n){this.header=A,this.size=t,this.chunkData=n}};function IA(e,A=!0,t=!1){let n=AA(e,4),s=N(e,4),o;return A&&(o=new b(e.buffer.slice(e.currentIndex,e.currentIndex+s))),(A||t)&&(e.currentIndex+=s),s%2!==0&&e[e.currentIndex]===0&&e.currentIndex++,new hA(n,s,o)}function dA(e,A=void 0){let t=8+e.size;e.size%2!==0&&t++,A&&(t+=A.length);let n=new b(t);return A&&(n.set(A,n.currentIndex),n.currentIndex+=A.length),bA(n,e.header),eA(n,t-8-(A?.length||0)),n.set(e.chunkData,n.currentIndex),n}function j(e,A,t=!1,n=!1){if(t){let C=new Uint8Array(A.length+1);C.set(A),A=C}let s=8,o=s+A.length,r=A.length;o%2!==0&&o++;let g=e;n&&(o+=4,r+=4,s+=4,g="LIST");let i=new b(o);return bA(i,g),eA(i,r),n&&bA(i,e),i.set(A,s),i}function WA(e,A){return e.find(t=>t.header!=="LIST"?!1:(t.chunkData.currentIndex=0,AA(t.chunkData,4)===A))}function So(){let e=Pe;for(let n of this.instruments)e+=n.globalZone.generators.length*Pe,e+=n.instrumentZones.reduce((s,o)=>(o.generators=o.generators.filter(r=>r.generatorType!==a.sampleID&&r.generatorType!==a.keyRange&&r.generatorType!==a.velRange),o.hasVelRange&&o.generators.unshift(new v(a.velRange,o.velRange.max<<8|Math.max(o.velRange.min,0),!1)),o.hasKeyRange&&o.generators.unshift(new v(a.keyRange,o.keyRange.max<<8|Math.max(o.keyRange.min,0),!1)),o.generators.push(new v(a.sampleID,this.samples.indexOf(o.sample),!1)),o.generators.length*Pe+s),0);let A=new b(e),t=n=>{for(let s of n.generators)J(A,s.generatorType),J(A,s.generatorValue)};for(let n of this.instruments){t(n.globalZone);for(let s of n.instrumentZones)t(s)}return eA(A,0),dA(new hA("igen",A.length,A))}function Do(e,A,t,n,s){let o=this.samples.map((C,B)=>{t&&C.compressSample(n,s);let h=C.getRawData();return y(`%cEncoded sample %c${B}. ${C.sampleName}%c of %c${this.samples.length}%c. Compressed: %c${C.isCompressed}%c.`,I.info,I.recognized,I.info,I.recognized,I.info,C.isCompressed?I.recognized:I.unrecognized,I.info),h}),r=this.samples.reduce((C,B,h)=>C+o[h].length+46,0),g=new b(r);this.samples.forEach((C,B)=>{let h=o[B],c,l,u=h.length;C.isCompressed?(c=g.currentIndex,l=c+h.length):(c=g.currentIndex/2,l=c+h.length/2,u+=46),e.push(c),g.set(h,g.currentIndex),g.currentIndex+=u,A.push(l)});let i=dA(new hA("smpl",g.length,g),new b([115,100,116,97]));return dA(new hA("LIST",i.length,i))}function ko(e,A){let n=new b(46*(this.samples.length+1));return this.samples.forEach((s,o)=>{bA(n,s.sampleName,20);let r=e[o];eA(n,r);let g=A[o];eA(n,g);let i=s.sampleLoopStartIndex+r,C=s.sampleLoopEndIndex+r;s.isCompressed&&(i-=r,C-=r),eA(n,i),eA(n,C),eA(n,s.sampleRate),n[n.currentIndex++]=s.samplePitch,n[n.currentIndex++]=s.samplePitchCorrection,J(n,s.sampleLink),J(n,s.sampleType)}),bA(n,"EOS",46),dA(new hA("shdr",n.length,n))}function Fo(){let e=et;for(let n of this.instruments)e+=n.globalZone.modulators.length*et,e+=n.instrumentZones.reduce((s,o)=>o.modulators.length*10+s,0);let A=new b(e),t=n=>{for(let s of n.modulators)J(A,s.getSourceEnum()),J(A,s.modulatorDestination),J(A,s.transformAmount),J(A,s.getSecSrcEnum()),J(A,s.transformType)};for(let n of this.instruments){t(n.globalZone);for(let s of n.instrumentZones)t(s)}return ye(A,0,10),dA(new hA("imod",A.length,A))}var wo=4;function Ro(){let e=this.instruments.reduce((o,r)=>(r.instrumentZones.length+1)*wo+o,wo),A=new b(e),t=0,n=0,s=o=>{J(A,t),J(A,n),t+=o.generators.length,n+=o.modulators.length};for(let o of this.instruments){s(o.globalZone);for(let r of o.instrumentZones)s(r)}return J(A,t),J(A,n),dA(new hA("ibag",A.length,A))}var Go=22;function Mo(){let e=this.instruments.length*Go+Go,A=new b(e),t=0;for(let n of this.instruments)bA(A,n.instrumentName,20),J(A,t),t+=n.instrumentZones.length+1;return bA(A,"EOI",20),J(A,t),dA(new hA("inst",A.length,A))}function xo(){let e=Pe;for(let n of this.presets)e+=n.globalZone.generators.length*Pe,e+=n.presetZones.reduce((s,o)=>(o.generators=o.generators.filter(r=>r.generatorType!==a.instrument&&r.generatorType!==a.keyRange&&r.generatorType!==a.velRange),o.hasVelRange&&o.generators.unshift(new v(a.velRange,o.velRange.max<<8|Math.max(o.velRange.min,0),!1)),o.hasKeyRange&&o.generators.unshift(new v(a.keyRange,o.keyRange.max<<8|Math.max(o.keyRange.min,0),!1)),o.generators.push(new v(a.instrument,this.instruments.indexOf(o.instrument),!1)),o.generators.length*Pe+s),0);let A=new b(e),t=n=>{for(let s of n.generators)J(A,s.generatorType),J(A,s.generatorValue)};for(let n of this.presets){t(n.globalZone);for(let s of n.presetZones)t(s)}return eA(A,0),dA(new hA("pgen",A.length,A))}function No(){let e=et;for(let n of this.presets)e+=n.globalZone.modulators.length*et,e+=n.presetZones.reduce((s,o)=>o.modulators.length*et+s,0);let A=new b(e),t=n=>{for(let s of n.modulators)J(A,s.getSourceEnum()),J(A,s.modulatorDestination),J(A,s.transformAmount),J(A,s.getSecSrcEnum()),J(A,s.transformType)};for(let n of this.presets){t(n.globalZone);for(let s of n.presetZones)t(s)}return ye(A,0,10),dA(new hA("pmod",A.length,A))}var bo=4;function Lo(){let e=this.presets.reduce((o,r)=>(r.presetZones.length+1)*bo+o,bo),A=new b(e),t=0,n=0,s=o=>{J(A,t),J(A,n),t+=o.generators.length,n+=o.modulators.length};for(let o of this.presets){s(o.globalZone);for(let r of o.presetZones)s(r)}return J(A,t),J(A,n),dA(new hA("pbag",A.length,A))}var To=38;function Uo(){let e=this.presets.length*To+To,A=new b(e),t=0;for(let n of this.presets)bA(A,n.presetName,20),J(A,n.program),J(A,n.bank),J(A,t),eA(A,n.library),eA(A,n.genre),eA(A,n.morphology),t+=n.presetZones.length+1;return bA(A,"EOP",20),J(A,0),J(A,0),J(A,t),eA(A,0),eA(A,0),eA(A,0),dA(new hA("phdr",A.length,A))}var bi={compress:!1,compressionQuality:.5,compressionFunction:void 0};function vo(e=bi){if(e.compress&&typeof e.compressionFunction!="function")throw new TypeError("No compression function supplied but compression enabled.");QA("%cSaving soundfont...",I.info),y(`%cCompression: %c${e?.compress||"false"}%c quality: %c${e?.compressionQuality||"none"}`,I.info,I.recognized,I.info,I.recognized),y("%cWriting INFO...",I.info);let A=[];this.soundFontInfo.ISFT="SpessaSynth",e?.compress&&(this.soundFontInfo.ifil="3.0"),this.defaultModulators.length>0?(this.soundFontInfo.DMOD=`${this.defaultModulators.length} Modulators`,this.customDefaultModulators=!0):delete this.soundFontInfo.DMOD;for(let[M,U]of Object.entries(this.soundFontInfo))if(M==="ifil"||M==="iver"){let R=parseInt(U.split(".")[0]),E=parseInt(U.split(".")[1]),x=new b(4);J(x,R),J(x,E),A.push(dA(new hA(M,4,x)))}else if(M==="DMOD"){let R=this.defaultModulators;y(`%cWriting %c${R.length}%c default modulators...`,I.info,I.recognized,I.info);let E=10+R.length*10,x=new b(E);for(let L of R)J(x,L.getSourceEnum()),J(x,L.modulatorDestination),J(x,L.transformAmount),J(x,L.getSecSrcEnum()),J(x,L.transformType);ye(x,0,10),A.push(dA(new hA(M,x.length,x)))}else{let R=new b(U.length+1);bA(R,U),A.push(dA(new hA(M,R.length,R)))}let t=j("INFO",kA(A),!1,!0);y("%cWriting SDTA...",I.info);let n=[],s=[],o=Do.call(this,n,s,e?.compress,e?.compressionQuality??.5,e.compressionFunction);y("%cWriting PDTA...",I.info),y("%cWriting SHDR...",I.info);let r=ko.call(this,n,s);y("%cWriting IGEN...",I.info);let g=So.call(this);y("%cWriting IMOD...",I.info);let i=Fo.call(this);y("%cWriting IBAG...",I.info);let C=Ro.call(this);y("%cWriting INST...",I.info);let B=Mo.call(this),h=xo.call(this);y("%cWriting PMOD...",I.info);let c=No.call(this);y("%cWriting PBAG...",I.info);let l=Lo.call(this);y("%cWriting PHDR...",I.info);let u=Uo.call(this),f=kA([new b([112,100,116,97]),u,l,c,h,B,C,i,g,r]),S=dA(new hA("LIST",f.length,f));y("%cWriting the output file...",I.info);let G=kA([new b([115,102,98,107]),t,o,S]),D=dA(new hA("RIFF",G.length,G));return y(`%cSaved succesfully! Final file size: %c${D.length}`,I.info,I.recognized),P(),D}var Ve=class{velRange={min:-1,max:127};keyRange={min:-1,max:127};generators=[];modulators=[];get hasKeyRange(){return this.keyRange.min!==-1}get hasVelRange(){return this.velRange.min!==-1}getGeneratorValue(A,t){return this.generators.find(n=>n.generatorType===A)?.generatorValue??t}};var Ce=class extends Ve{sample;useCount=0;setSample(A){this.sample=A,this.sample.useCount++}deleteZone(){this.sample.useCount--}hasSample(){return!!this.sample}};var Se=class extends Ve{copyFrom(A){this.keyRange={...A.keyRange},this.velRange={...A.velRange},this.generators=[...A.generators],this.modulators=[...A.modulators]}};var Li=new Set([a.velRange,a.keyRange,a.instrument,a.exclusiveClass,a.endOper,a.sampleModes,a.startloopAddrsOffset,a.startloopAddrsCoarseOffset,a.endloopAddrsOffset,a.endloopAddrsCoarseOffset,a.startAddrsOffset,a.startAddrsCoarseOffset,a.endAddrOffset,a.endAddrsCoarseOffset,a.initialAttenuation,a.fineTune,a.coarseTune,a.keyNumToVolEnvHold,a.keyNumToVolEnvDecay,a.keyNumToModEnvHold,a.keyNumToModEnvDecay]);function Ho(e,A=!0){function t(c,l){c.push(...l.filter(u=>!c.find(f=>f.generatorType===u.generatorType)))}function n(c,l){return{min:Math.max(c.min,l.min),max:Math.min(c.max,l.max)}}function s(c,l){c.push(...l.filter(u=>!c.find(f=>EA.isIdentical(u,f))))}let o=[],r=[],g=[],i=e.globalZone;r.push(...i.generators),g.push(...i.modulators);let C=i.keyRange,B=i.velRange;for(let c of e.presetZones){let l=c.keyRange;c.hasKeyRange||(l=C);let u=c.velRange;c.hasVelRange||(u=B);let f=c.generators.map(L=>new v(L.generatorType,L.generatorValue));t(f,r);let S=[...c.modulators];s(S,g);let G=c.instrument,D=G.instrumentZones,M=[],U=[],R=G.globalZone;M.push(...R.generators),U.push(...R.modulators);let E=R.keyRange,x=R.velRange;for(let L of D){let sA=L.keyRange;L.hasKeyRange||(sA=E);let z=L.velRange;if(L.hasVelRange||(z=x),sA=n(sA,l),z=n(z,u),sA.max<sA.min||z.max<z.min)continue;let H=L.generators.map(_=>new v(_.generatorType,_.generatorValue));t(H,M);let aA=[...L.modulators];s(aA,U);let RA=[...aA];for(let _ of S){let T=RA.findIndex(Y=>EA.isIdentical(_,Y));T!==-1?RA[T]=RA[T].sumTransform(_):RA.push(_)}let NA=H.map(_=>new v(_.generatorType,_.generatorValue));for(let _ of f){if(_.generatorType===a.velRange||_.generatorType===a.keyRange||_.generatorType===a.instrument||_.generatorType===a.endOper||_.generatorType===a.sampleModes)continue;let T=H.findIndex(Y=>Y.generatorType===_.generatorType);if(T!==-1){let Y=NA[T].generatorValue+_.generatorValue;NA[T]=new v(_.generatorType,Y)}else{let Y=q[_.generatorType].def+_.generatorValue;NA.push(new v(_.generatorType,Y))}}NA=NA.filter(_=>_.generatorType!==a.sampleID&&_.generatorType!==a.keyRange&&_.generatorType!==a.velRange&&_.generatorType!==a.endOper&&_.generatorType!==a.instrument&&_.generatorValue!==q[_.generatorType].def);let tA=new Ce;tA.keyRange=sA,tA.velRange=z,tA.keyRange.min===0&&tA.keyRange.max===127&&(tA.keyRange.min=-1),tA.velRange.min===0&&tA.velRange.max===127&&(tA.velRange.min=-1),tA.setSample(L.sample),tA.generators=NA,tA.modulators=RA,o.push(tA)}}let h=new Se;if(A){for(let u=0;u<58;u++){if(Li.has(u))continue;let f={},S=q[u]?.def||0;f[S]=0;for(let G of o){let D=G.generators.find(R=>R.generatorType===u);if(D){let R=D.generatorValue;f[R]===void 0?f[R]=1:f[R]++}else f[S]++;let M;switch(u){default:continue;case a.decayVolEnv:M=a.keyNumToVolEnvDecay;break;case a.holdVolEnv:M=a.keyNumToVolEnvHold;break;case a.decayModEnv:M=a.keyNumToModEnvDecay;break;case a.holdModEnv:M=a.keyNumToModEnvHold}if(G.generators.find(R=>R.generatorType===M)!==void 0){f={};break}}if(Object.keys(f).length>0){let G=Object.entries(f).reduce((M,U)=>M[1]<U[1]?U:M,[0,0]),D=parseInt(G[0]);D!==S&&h.generators.push(new v(u,D)),o.forEach(M=>{let U=M.generators.findIndex(R=>R.generatorType===u);U!==-1?M.generators[U].generatorValue===D&&M.generators.splice(U,1):D!==S&&M.generators.push(new v(u,S))})}}let l=o[0].modulators.map(u=>EA.copy(u));for(let u of l){let f=!0;for(let S of o){if(!f)continue;S.modulators.find(D=>EA.isIdentical(D,u))||(f=!1)}if(f===!0){h.modulators.push(EA.copy(u));for(let S of o){let G=S.modulators.find(D=>EA.isIdentical(D,u));G.transformAmount===u.transformAmount&&S.modulators.splice(S.modulators.indexOf(G),1)}}}}return{zones:o,global:h}}var Yo=20;function Qn(e,A,t,n,s,o,r){let g=r===0?0:1,i=new b(Yo+g*16);eA(i,Yo),J(i,A),J(i,t);let C=n*.4,B=Math.floor(C*-65536);eA(i,B),eA(i,2);let h=o-s,c=0;switch(r){default:case 0:g=0;break;case 1:c=0,g=1;break;case 3:c=1,g=1}return eA(i,g),g===1&&(eA(i,16),eA(i,c),eA(i,s),eA(i,h)),j("wsmp",i)}var V={none:0,modLfo:1,velocity:2,keyNum:3,volEnv:4,modEnv:5,pitchWheel:6,polyPressure:7,channelPressure:8,vibratoLfo:9,modulationWheel:129,volume:135,pan:138,expression:139,chorus:221,reverb:219,pitchWheelRange:256,fineTune:257,coarseTune:258},dn=new mA(219,0,a.reverbEffectsSend,1e3,0),fn=new mA(221,0,a.chorusEffectsSend,1e3,0),un=new mA(129,0,a.vibLfoToPitch,0,0),mn=new mA(13,0,a.vibLfoToPitch,0,0);var w={none:0,gain:1,reserved:2,pitch:3,pan:4,keyNum:5,chorusSend:128,reverbSend:129,modLfoFreq:260,modLfoDelay:261,vibLfoFreq:276,vibLfoDelay:277,volEnvAttack:518,volEnvDecay:519,volEnvRelease:521,volEnvSustain:522,volEnvDelay:523,volEnvHold:524,modEnvAttack:778,modEnvDecay:779,modEnvRelease:781,modEnvSustain:782,modEnvDelay:783,modEnvHold:784,filterCutoff:1280,filterQ:1281};var qt=class{source;control;destination;scale;transform;constructor(A,t,n,s,o){this.source=A,this.control=t,this.destination=n,this.scale=s,this.transform=o}writeArticulator(){let A=new b(12);return J(A,this.source),J(A,this.control),J(A,this.destination),J(A,this.transform),eA(A,this.scale<<16),A}};function Oo(e,A){if(e)switch(A){default:return;case p.modulationWheel:return V.modulationWheel;case p.mainVolume:return V.volume;case p.pan:return V.pan;case p.expressionController:return V.expression;case p.chorusDepth:return V.chorus;case p.reverbDepth:return V.reverb}else switch(A){default:return;case X.noteOnKeyNum:return V.keyNum;case X.noteOnVelocity:return V.velocity;case X.noController:return V.none;case X.polyPressure:return V.polyPressure;case X.channelPressure:return V.channelPressure;case X.pitchWheel:return V.pitchWheel;case X.pitchWheelRange:return V.pitchWheelRange}}function Jo(e,A){switch(e){default:return;case a.initialAttenuation:return{dest:w.gain,amount:-A};case a.fineTune:return w.pitch;case a.pan:return w.pan;case a.keyNum:return w.keyNum;case a.reverbEffectsSend:return w.reverbSend;case a.chorusEffectsSend:return w.chorusSend;case a.freqModLFO:return w.modLfoFreq;case a.delayModLFO:return w.modLfoDelay;case a.delayVibLFO:return w.vibLfoDelay;case a.freqVibLFO:return w.vibLfoFreq;case a.delayVolEnv:return w.volEnvDelay;case a.attackVolEnv:return w.volEnvAttack;case a.holdVolEnv:return w.volEnvHold;case a.decayVolEnv:return w.volEnvDecay;case a.sustainVolEnv:return{dest:w.volEnvSustain,amount:1e3-A};case a.releaseVolEnv:return w.volEnvRelease;case a.delayModEnv:return w.modEnvDelay;case a.attackModEnv:return w.modEnvAttack;case a.holdModEnv:return w.modEnvHold;case a.decayModEnv:return w.modEnvDecay;case a.sustainModEnv:return{dest:w.modEnvSustain,amount:1e3-A};case a.releaseModEnv:return w.modEnvRelease;case a.initialFilterFc:return w.filterCutoff;case a.initialFilterQ:return w.filterQ}}function Ko(e,A){switch(e){default:return;case a.modEnvToFilterFc:return{source:V.modEnv,dest:w.filterCutoff,amt:A,isBipolar:!1};case a.modEnvToPitch:return{source:V.modEnv,dest:w.pitch,amt:A,isBipolar:!1};case a.modLfoToFilterFc:return{source:V.modLfo,dest:w.filterCutoff,amt:A,isBipolar:!0};case a.modLfoToVolume:return{source:V.modLfo,dest:w.gain,amt:A,isBipolar:!0};case a.modLfoToPitch:return{source:V.modLfo,dest:w.pitch,amt:A,isBipolar:!0};case a.vibLfoToPitch:return{source:V.vibratoLfo,dest:w.pitch,amt:A,isBipolar:!0};case a.keyNumToVolEnvHold:return{source:V.keyNum,dest:w.volEnvHold,amt:A,isBipolar:!0};case a.keyNumToVolEnvDecay:return{source:V.keyNum,dest:w.volEnvDecay,amt:A,isBipolar:!0};case a.keyNumToModEnvHold:return{source:V.keyNum,dest:w.modEnvHold,amt:A,isBipolar:!0};case a.keyNumToModEnvDecay:return{source:V.keyNum,dest:w.modEnvDecay,amt:A,isBipolar:!0};case a.scaleTuning:return{source:V.keyNum,dest:w.pitch,amt:A*128,isBipolar:!1}}}function Po(e){let A=Jo(e.generatorType,e.generatorValue),t=A,n=0,s=e.generatorValue;A?.amount!==void 0&&(s=A.amount,t=A.dest);let o=Ko(e.generatorType,e.generatorValue);if(o!==void 0)s=o.amt,t=o.dest,n=o.source;else if(t===void 0){O(`Invalid generator type: ${e.generatorType}`);return}return new qt(n,0,t,s,0)}function qo(e){if(e.transformType!==0){O("Other transform types are not supported.");return}let A=Oo(e.sourceUsesCC,e.sourceIndex),t=e.sourceCurveType,n=e.sourcePolarity,s=e.sourceDirection;if(A===void 0){O(`Invalid source: ${e.sourceIndex}, CC: ${e.sourceUsesCC}`);return}e.modulatorDestination===a.initialAttenuation&&(s=s===1?0:1);let o=Oo(e.secSrcUsesCC,e.secSrcIndex),r=e.secSrcCurveType,g=e.secSrcPolarity,i=e.secSrcDirection;if(o===void 0){O(`Invalid secondary source: ${e.secSrcIndex}, CC: ${e.secSrcUsesCC}`);return}let C=Jo(e.modulatorDestination,e.transformAmount),B=C,h=e.transformAmount;C?.dest!==void 0&&(B=C.dest,h=C.amount);let c=Ko(e.modulatorDestination,e.transformAmount);if(c!==void 0)h=c.amt,o=A,r=t,g=n,i=s,t=DA.linear,n=c.isBipolar?1:0,s=0,A=c.source,B=c.dest;else if(B===void 0){O(`Invalid destination: ${e.modulatorDestination}`);return}let l=0;return l|=r<<4,l|=g<<8,l|=i<<9,l|=t,l|=n<<14,l|=s<<15,new qt(A,o,B,h,l)}var Ti=new Set([a.sampleModes,a.initialAttenuation,a.keyRange,a.velRange,a.sampleID,a.fineTune,a.coarseTune,a.startAddrsOffset,a.startAddrsCoarseOffset,a.endAddrOffset,a.endAddrsCoarseOffset,a.startloopAddrsOffset,a.startloopAddrsCoarseOffset,a.endloopAddrsOffset,a.endloopAddrsCoarseOffset,a.overridingRootKey,a.exclusiveClass]);function pn(e){for(let o=0;o<e.generators.length;o++){let r=e.generators[o];(r.generatorType===a.delayVolEnv||r.generatorType===a.attackVolEnv||r.generatorType===a.holdVolEnv||r.generatorType===a.decayVolEnv||r.generatorType===a.releaseVolEnv||r.generatorType===a.delayModEnv||r.generatorType===a.attackModEnv||r.generatorType===a.holdModEnv||r.generatorType===a.decayModEnv)&&(e.generators[o]=new v(r.generatorType,Math.min(r.generatorValue,6386),!1))}for(let o=0;o<e.generators.length;o++){let r=e.generators[o],g;switch(r.generatorType){default:continue;case a.keyNumToVolEnvDecay:g=a.decayVolEnv;break;case a.keyNumToVolEnvHold:g=a.holdVolEnv;break;case a.keyNumToModEnvDecay:g=a.decayModEnv;break;case a.keyNumToModEnvHold:g=a.holdModEnv}let i=e.generators.find(u=>u.generatorType===g);if(i===void 0)continue;let C=r.generatorValue*-128,B=60/128*C,h=i.generatorValue-B,c=e.generators.indexOf(r),l=e.generators.indexOf(i);e.generators[l]=new v(g,h,!1),e.generators[c]=new v(r.generatorType,C,!1)}let A=e.generators.reduce((o,r)=>{if(Ti.has(r.generatorType))return o;let g=Po(r);return g!==void 0?(o.push(g),y("%cSucceeded converting to DLS Articulator!",I.recognized)):O("Failed converting to DLS Articulator!"),o},[]),t=e.modulators.reduce((o,r)=>{if(EA.isIdentical(r,fn,!0)||EA.isIdentical(r,dn,!0)||EA.isIdentical(r,un,!0)||EA.isIdentical(r,mn,!0))return o;let g=qo(r);return g!==void 0?(o.push(g),y("%cSucceeded converting to DLS Articulator!",I.recognized)):O("Failed converting to DLS Articulator!"),o},[]);A.push(...t);let n=new b(8);eA(n,8),eA(n,A.length);let s=A.map(o=>o.writeArticulator());return j("art2",kA([n,...s]))}function Vo(e,A){let t=new b(12);J(t,Math.max(e.keyRange.min,0)),J(t,e.keyRange.max),J(t,Math.max(e.velRange.min,0)),J(t,e.velRange.max),J(t,0);let n=e.getGeneratorValue(a.exclusiveClass,0);J(t,n),J(t,0);let s=j("rgnh",t),o=e.getGeneratorValue(a.overridingRootKey,e.sample.samplePitch);e.getGeneratorValue(a.scaleTuning,A.getGeneratorValue(a.scaleTuning,100))===0&&e.keyRange.max-e.keyRange.min===0&&(o=e.keyRange.min);let g=Qn(e.sample,o,e.getGeneratorValue(a.fineTune,0)+e.getGeneratorValue(a.coarseTune,0)*100+e.sample.samplePitchCorrection,e.getGeneratorValue(a.initialAttenuation,0),e.sample.sampleLoopStartIndex+e.getGeneratorValue(a.startloopAddrsOffset,0)+e.getGeneratorValue(a.startloopAddrsCoarseOffset,0)*32768,e.sample.sampleLoopEndIndex+e.getGeneratorValue(a.endloopAddrsOffset,0)+e.getGeneratorValue(a.endloopAddrsCoarseOffset,0)*32768,e.getGeneratorValue(a.sampleModes,0)),i=new b(12);J(i,0),J(i,0),eA(i,1),eA(i,this.samples.indexOf(e.sample));let C=j("wlnk",i),B=new b(0);if(e.modulators.length+e.generators.length>0){let h=pn(e);B=j("lar2",h,!1,!0)}return j("rgn2",kA([s,g,C,B]),!1,!0)}function Zo(e){QA(`%cWriting %c${e.presetName}%c...`,I.info,I.recognized,I.info);let{global:A,zones:t}=Ho(e),n=new b(12);eA(n,t.length);let s=(e.bank&127)<<8;e.bank===128&&(s|=1<<31),eA(n,s),eA(n,e.program&127);let o=j("insh",n),r=pn(A),g=j("lar2",r,!1,!0),i=kA(t.reduce((c,l)=>(c.push(Vo.apply(this,[l,A])),c),[])),C=j("lrgn",i,!1,!0),B=j("INAM",VA(e.presetName,!0)),h=j("INFO",B,!1,!0);return P(),j("ins ",kA([o,C,g,h]),!1,!0)}function Xo(){let e=kA(this.presets.map(A=>Zo.apply(this,[A])));return j("lins",e,!1,!0)}function Wo(e){let A=new b(18);J(A,1),J(A,1),eA(A,e.sampleRate),eA(A,e.sampleRate*2),J(A,2),J(A,16);let t=j("fmt ",A),n=1;e.sampleLoopStartIndex+Math.abs(e.getAudioData().length-e.sampleLoopEndIndex)<2&&(n=0);let s=Qn(e,e.samplePitch,e.samplePitchCorrection,0,e.sampleLoopStartIndex,e.sampleLoopEndIndex,n),o=e.getAudioData(),r;if(e.isCompressed){let C=new Int16Array(o.length);for(let B=0;B<o.length;B++)C[B]=o[B]*32767;r=j("data",new b(C.buffer))}else r=j("data",e.getRawData());let g=j("INAM",VA(e.sampleName,!0)),i=j("INFO",g,!1,!0);return y(`%cSaved %c${e.sampleName}%c succesfully!`,I.recognized,I.value,I.recognized),j("wave",kA([t,s,r,i]),!1,!0)}function _o(){let e=0,A=[],t=this.samples.map(n=>{let s=Wo(n);return A.push(e),e+=s.length,s});return{data:j("wvpl",kA(t),!1,!0),indexes:A}}function zo(){QA("%cSaving DLS...",I.info);let e=new b(4);eA(e,this.presets.length);let A=j("colh",e);QA("%cWriting instruments...",I.info);let t=Xo.apply(this);y("%cSuccess!",I.recognized),P(),QA("%cWriting WAVE samples...",I.info);let n=_o.apply(this),s=n.data,o=n.indexes;y("%cSucceeded!",I.recognized),P();let r=new b(8+4*o.length);eA(r,8),eA(r,o.length);for(let h of o)eA(r,h);let g=j("ptbl",r);this.soundFontInfo.ICMT=(this.soundFontInfo.ICMT||"Soundfont")+`
11
- Converted from SF2 to DLS using SpessaSynth`,this.soundFontInfo.ISFT="SpessaSynth";let i=[];for(let[h,c]of Object.entries(this.soundFontInfo))h!=="ICMT"&&h!=="INAM"&&h!=="ICRD"&&h!=="IENG"&&h!=="ICOP"&&h!=="ISFT"&&h!=="ISBJ"||i.push(j(h,VA(c,!0),!0));let C=j("INFO",kA(i),!1,!0),B=new b(A.length+t.length+g.length+s.length+C.length+4);return bA(B,"DLS "),B.set(kA([A,t,g,s,C]),4),y("%cSaved succesfully!",I.recognized),P(),j("RIFF",B)}var Ui=48e3,Me=class{sampleName;sampleRate;samplePitch;samplePitchCorrection;sampleLink;sampleType;sampleLoopStartIndex;sampleLoopEndIndex;isCompressed;compressedData=void 0;useCount=0;sampleData=void 0;constructor(A,t,n,s,o,r,g,i){this.sampleName=A,this.sampleRate=t,this.samplePitch=n,this.samplePitchCorrection=s,this.sampleLink=o,this.sampleType=r,this.sampleLoopStartIndex=g,this.sampleLoopEndIndex=i,this.isCompressed=(r&16)>0}getRawData(){let A=new Uint8Array(this.sampleData.length*2);for(let t=0;t<this.sampleData.length;t++){let n=Math.floor(this.sampleData[t]*32768);A[t*2]=n&255,A[t*2+1]=n>>8&255}return A}resampleData(A){let t=this.getAudioData(),n=A/this.sampleRate,s=new Float32Array(Math.floor(t.length*n));for(let o=0;o<s.length;o++)s[o]=t[Math.floor(o*(1/n))];t=s,this.sampleRate=A,this.sampleLoopStartIndex=Math.floor(this.sampleLoopStartIndex*n),this.sampleLoopEndIndex=Math.floor(this.sampleLoopEndIndex*n),this.sampleData=t}compressSample(A,t){if(!this.isCompressed)try{let n=this.getAudioData();(this.sampleRate<8e3||this.sampleRate>96e3)&&(this.resampleData(Ui),n=this.getAudioData()),this.compressedData=t([n],1,this.sampleRate,A),this.sampleType|=16,this.isCompressed=!0}catch{O(`Failed to compress ${this.sampleName}. Leaving as uncompressed!`),this.isCompressed=!1,this.compressedData=void 0,this.sampleType&=239}}getAudioData(){return this.sampleData}};var xe=class extends Ve{instrument;deleteZone(){this.instrument.removeUseCount()}setInstrument(A){this.instrument=A,this.instrument.addUseCount()}hasInstrument(){return!!this.instrument}};var Ne=class{instrumentName="";instrumentZones=[];globalZone=new Se;_useCount=0;get useCount(){return this._useCount}addZone(A){A.useCount++,this.instrumentZones.push(A)}addUseCount(){this._useCount++,this.instrumentZones.forEach(A=>A.useCount++)}removeUseCount(){this._useCount--,this.instrumentZones.forEach(A=>A.useCount--)}deleteZones(){this.instrumentZones.forEach(A=>A.deleteZone()),this.instrumentZones.length=0}deleteZone(A){let t=this.instrumentZones[A];return t.useCount<1?(t.deleteZone(),this.instrumentZones.splice(A,1),!0):!1}};var be=class{parentSoundBank;presetName="";program=0;bank=0;presetZones=[];globalZone=new Se;library=0;genre=0;morphology=0;constructor(A){this.parentSoundBank=A}isDrumPreset(A,t=!1){let n=A&&this.parentSoundBank.isXGBank;return this.bank===128||n&&ee(this.bank)&&(this.bank!==126||t)}deletePreset(){this.presetZones.forEach(A=>A.deleteZone()),this.presetZones.length=0}deleteZone(A){this.presetZones[A].deleteZone(),this.presetZones.splice(A,1)}preload(A,t){for(let n=A;n<t+1;n++)for(let s=0;s<128;s++)this.getSamplesAndGenerators(n,s).forEach(o=>{o.sample.isSampleLoaded||o.sample.getAudioData()})}getSamplesAndGenerators(A,t){if(this.presetZones.length<1)return[];function n(c,l){return l>=c.min&&l<=c.max}function s(c,l){c.push(...l.filter(u=>!c.find(f=>f.generatorType===u.generatorType)))}function o(c,l){c.push(...l.filter(u=>!c.find(f=>EA.isIdentical(u,f))))}let r=[],g=[...this.globalZone.generators],i=[...this.globalZone.modulators],C=this.globalZone.keyRange,B=this.globalZone.velRange;return this.presetZones.filter(c=>n(c.hasKeyRange?c.keyRange:C,A)&&n(c.hasVelRange?c.velRange:B,t)).forEach(c=>{let l=c.instrument;if(l.instrumentZones.length<1)return;let u=c.generators,f=c.modulators,S=[...l.globalZone.generators],G=[...l.globalZone.modulators],D=l.globalZone.keyRange,M=l.globalZone.velRange;l.instrumentZones.filter(R=>n(R.hasKeyRange?R.keyRange:D,A)&&n(R.hasVelRange?R.velRange:M,t)).forEach(R=>{let E=[...R.generators],x=[...R.modulators];s(u,g),s(E,S),o(f,i),o(x,G),o(x,this.parentSoundBank.defaultModulators);let L=[...x];for(let sA=0;sA<f.length;sA++){let z=f[sA],H=L.findIndex(aA=>EA.isIdentical(z,aA));H!==-1?L[H]=L[H].sumTransform(z):L.push(z)}r.push({instrumentGenerators:E,presetGenerators:u,modulators:L,sample:R.sample})})}),r}};var Le=class e{soundFontInfo={};presets=[];samples=[];instruments=[];defaultModulators=to.map(A=>EA.copy(A));customDefaultModulators=!1;isXGBank=!1;constructor(A=void 0){A?.presets&&(this.presets.push(...A.presets),this.soundFontInfo=A.info)}static mergeSoundBanks(...A){let t=A.shift(),n=t.presets;for(;A.length;)A.shift().presets.forEach(o=>{n.find(r=>r.bank===o.bank&&r.program===o.program)===void 0&&n.push(o)});return new e({presets:n,info:t.soundFontInfo})}static getDummySoundfontFile(){let A=new e,t=new Me("Saw",44100,65,20,0,0,0,127);t.sampleData=new Float32Array(128);for(let C=0;C<128;C++)t.sampleData[C]=C/128*2-1;A.samples.push(t);let n=new Se;n.generators.push(new v(a.initialAttenuation,375)),n.generators.push(new v(a.releaseVolEnv,-1e3)),n.generators.push(new v(a.sampleModes,1));let s=new Ce;s.setSample(t);let o=new Ce;o.setSample(t),o.generators.push(new v(a.fineTune,-9));let r=new Ne;r.instrumentName="Saw Wave",r.globalZone=n,r.addZone(s),r.addZone(o),A.instruments.push(r);let g=new xe;g.setInstrument(r);let i=new be(A);return i.presetName="Saw Wave",i.presetZones.push(g),A.presets.push(i),A.soundFontInfo.ifil="2.1",A.soundFontInfo.isng="EMU8000",A.soundFontInfo.INAM="Dummy",A._parseInternal(),A.write().buffer}_parseInternal(){this.isXGBank=!1;let A=new Set([0,1,2,3,4,5,6,7,8,9,16,17,24,25,27,28,29,30,31,32,33,40,41,48,56,57,58,64,65,66,126,127]);for(let t of this.presets)if(ee(t.bank)&&(this.isXGBank=!0,!A.has(t.program))){this.isXGBank=!1,y(`%cThis bank is not valid XG. Preset %c${t.bank}:${t.program}%c is not a valid XG drum. XG mode will use presets on bank 128.`,I.info,I.value,I.info);break}}trimSoundBank(A){let t=this;function n(o,r){let g=0;for(let i=0;i<o.instrumentZones.length;i++){let C=o.instrumentZones[i],B=C.keyRange,h=C.velRange,c=!1;for(let l of r)if(l.key>=B.min&&l.key<=B.max&&l.velocity>=h.min&&l.velocity<=h.max){c=!0;break}c||(y(`%c${C.sample.sampleName} %cremoved from %c${o.instrumentName}%c.`,I.recognized,I.info,I.recognized,I.info),o.deleteZone(i)&&(g++,i--,y(`%c${C.sample.sampleName} %cdeleted`,I.recognized,I.info)),C.sample.useCount<1&&t.deleteSample(C.sample))}return g}ge("%cTrimming soundfont...",I.info);let s=A.getUsedProgramsAndKeys(t);QA("%cModifying soundfont...",I.info),y("Detected keys for midi:",s);for(let o=0;o<t.presets.length;o++){let r=t.presets[o],g=r.bank+":"+r.program,i=s[g];if(i===void 0)y(`%cDeleting preset %c${r.presetName}%c and its zones`,I.info,I.recognized,I.info),t.deletePreset(r),t.removeUnusedElements(),o--;else{let C=[...i].map(h=>{let c=h.split("-");return{key:parseInt(c[0]),velocity:parseInt(c[1])}});QA(`%cTrimming %c${r.presetName}`,I.info,I.recognized),y(`Keys for ${r.presetName}:`,C);let B=0;for(let h=0;h<r.presetZones.length;h++){let c=r.presetZones[h],l=c.keyRange,u=c.velRange,f=!1;for(let S of C)if(S.key>=l.min&&S.key<=l.max&&S.velocity>=u.min&&S.velocity<=u.max){f=!0;let G=n(c.instrument,C);y(`%cTrimmed off %c${G}%c zones from %c${c.instrument.instrumentName}`,I.info,I.recognized,I.info,I.recognized);break}f||(B++,r.deleteZone(h),c.instrument.useCount<1&&t.deleteInstrument(c.instrument),h--)}y(`%cTrimmed off %c${B}%c zones from %c${r.presetName}`,I.info,I.recognized,I.info,I.recognized),P()}}t.removeUnusedElements(),t.soundFontInfo.ICMT=`NOTE: This soundfont was trimmed by SpessaSynth to only contain presets used in "${A.midiName}"
10
+ `}getSourceEnum(){return XA(this.sourceCurveType,this.sourcePolarity,this.sourceDirection,this.sourceUsesCC,this.sourceIndex)}getSecSrcEnum(){return XA(this.secSrcCurveType,this.secSrcPolarity,this.secSrcDirection,this.secSrcUsesCC,this.secSrcIndex)}sumTransform(A){return new e(this.sourceIndex,this.sourceCurveType,this.sourceUsesCC,this.sourcePolarity,this.sourceDirection,this.secSrcIndex,this.secSrcCurveType,this.secSrcUsesCC,this.secSrcPolarity,this.secSrcDirection,this.modulatorDestination,this.transformAmount+A.transformAmount,this.transformType)}},mA=class extends EA{constructor(A,t,n,s,o){let r=A>>9&1,g=A>>8&1,i=A>>7&1,C=A&127,B=A>>10&3,h=t>>9&1,c=t>>8&1,l=t>>7&1,u=t&127,f=t>>10&3;super(C,B,i,r,g,u,f,l,h,c,n,s,o),this.isEffectModulator=(A===219||A===221)&&t===0&&(this.modulatorDestination===a.reverbEffectsSend||this.modulatorDestination===a.chorusEffectsSend)}},rs=960,is=DA.concave;function XA(e,A,t,n,s){return e<<10|A<<9|t<<8|n<<7|s}var Ri=[new mA(XA(is,0,1,0,X.noteOnVelocity),0,a.initialAttenuation,rs,0),new mA(129,0,a.vibLfoToPitch,50,0),new mA(XA(is,0,1,1,p.mainVolume),0,a.initialAttenuation,rs,0),new mA(13,0,a.vibLfoToPitch,50,0),new mA(526,16,a.fineTune,12700,0),new mA(650,0,a.pan,500,0),new mA(XA(is,0,1,1,p.expressionController),0,a.initialAttenuation,rs,0),new mA(219,0,a.reverbEffectsSend,200,0),new mA(221,0,a.chorusEffectsSend,200,0)],Gi=[new mA(XA(DA.linear,0,0,0,X.polyPressure),0,a.vibLfoToPitch,50,0),new mA(XA(DA.linear,0,0,1,p.tremoloDepth),0,a.modLfoToVolume,24,0),new mA(XA(DA.convex,1,0,1,p.attackTime),0,a.attackVolEnv,6e3,0),new mA(XA(DA.linear,1,0,1,p.releaseTime),0,a.releaseVolEnv,3600,0),new mA(XA(DA.linear,1,0,1,p.brightness),0,a.initialFilterFc,6e3,0),new mA(XA(DA.linear,1,0,1,p.filterResonance),0,a.initialFilterQ,250,0)],no=Ri.concat(Gi);var cA=128,En=147,Pe=new Int16Array(En).fill(0),MA=(e,A)=>Pe[e]=A<<7;MA(p.mainVolume,100);MA(p.balance,64);MA(p.expressionController,127);MA(p.pan,64);MA(p.portamentoOnOff,127);MA(p.filterResonance,64);MA(p.releaseTime,64);MA(p.attackTime,64);MA(p.brightness,64);MA(p.decayTime,64);MA(p.vibratoRate,64);MA(p.vibratoDepth,64);MA(p.vibratoDelay,64);MA(p.generalPurposeController6,64);MA(p.generalPurposeController8,64);MA(p.RPNLsb,127);MA(p.RPNMsb,127);MA(p.NRPNLsb,127);MA(p.NRPNMsb,127);var cn=1;Pe[p.portamentoControl]=cn;MA(cA+X.pitchWheel,64);MA(cA+X.pitchWheelRange,2);var nA={channelTuning:0,channelTransposeFine:1,modulationMultiplier:2,masterTuning:3,channelTuningSemitones:4,channelKeyShift:5,sf2NPRNGeneratorLSB:6},as=Object.keys(nA).length,gs=new Float32Array(as);gs[nA.modulationMultiplier]=1;var vA={Idle:0,RPCoarse:1,RPFine:2,NRPCoarse:3,NRPFine:4,DataCoarse:5,DataFine:6},Is={velocityOverride:128};function so(e,A,t){let n=e,s=A<<7|t;return e===127&&A===127&&t===127?{midiNote:-1,centTuning:null}:{midiNote:n,centTuning:s*.0061}}function oo(e,A=0){let t=e[0];if(this.deviceID!==-1&&e[1]!==127&&this.deviceID!==e[1])return;function n(o,r,g,i){y(`%cChannel %c${o}%c ${g}. %c${r} ${i}%c, with %c${YA(e)}`,I.info,I.recognized,I.info,I.value,I.info,I.value)}function s(){O(`%cUnrecognized Roland %cGS %cSysEx: %c${YA(e)}`,I.warn,I.recognized,I.warn,I.unrecognized)}switch(t){default:O(`%cUnrecognized SysEx: %c${YA(e)}`,I.warn,I.unrecognized);break;case 126:case 127:switch(e[2]){case 4:let o;switch(e[3]){case 1:let g=e[5]<<7|e[4];this.setMIDIVolume(g/16384),y(`%cMaster Volume. Volume: %c${g}`,I.info,I.value);break;case 2:let C=((e[5]<<7|e[4])-8192)/8192;this.setMasterParameter(JA.masterPan,C),y(`%cMaster Pan. Pan: %c${C}`,I.info,I.value);break;case 3:let B=(e[5]<<7|e[6])-8192;o=Math.floor(B/81.92),this.setMasterTuning(o),y(`%cMaster Fine Tuning. Cents: %c${o}`,I.info,I.value);break;case 4:o=(e[5]-64)*100,this.setMasterTuning(o),y(`%cMaster Coarse Tuning. Cents: %c${o}`,I.info,I.value);break;default:O(`%cUnrecognized MIDI Device Control Real-time message: %c${YA(e)}`,I.warn,I.unrecognized)}break;case 9:e[3]===1?(y("%cGM1 system on",I.info),this.setSystem("gm")):e[3]===3?(y("%cGM2 system on",I.info),this.setSystem("gm2")):(y("%cGM system off, defaulting to GS",I.info),this.setSystem("gs"));break;case 8:let r=4;switch(e[3]){case 1:let g=e[r++];e.currentIndex=r;let i=AA(e,16);if(r+=16,e.length<384){O(`The Bulk Tuning Dump is too short! (${e.length} bytes, at least 384 are expected)`);return}for(let c=0;c<128;c++)this.tunings[g][c]=so(e[r++],e[r++],e[r++]);y(`%cBulk Tuning Dump %c${i}%c Program: %c${g}`,I.info,I.value,I.info,I.recognized);break;case 2:case 7:e[3]===7&&r++;let C=e[r++],B=e[r++];for(let c=0;c<B;c++)this.tunings[C][e[r++]]=so(e[r++],e[r++],e[r++]);y(`%cSingle Note Tuning. Program: %c${C}%c Keys affected: %c${B}`,I.info,I.recognized,I.info,I.recognized);break;case 9:case 8:let h=new Int8Array(12);if(e[3]===8)for(let c=0;c<12;c++)h[c]=e[7+c]-64;else for(let c=0;c<24;c+=2){let l=(e[7+c]<<7|e[8+c])-8192;h[c/2]=Math.floor(l/81.92)}(e[4]&1)===1&&this.midiAudioChannels[14+A].setOctaveTuning(h),(e[4]>>1&1)===1&&this.midiAudioChannels[15+A].setOctaveTuning(h);for(let c=0;c<7;c++)(e[5]>>c&1)===1&&this.midiAudioChannels[7+c+A].setOctaveTuning(h);for(let c=0;c<7;c++)(e[6]>>c&1)===1&&this.midiAudioChannels[c+A].setOctaveTuning(h);y(`%cMIDI Octave Scale ${e[3]===8?"(1 byte)":"(2 bytes)"} tuning via Tuning: %c${h.join(" ")}`,I.info,I.value);break;default:O(`%cUnrecognized MIDI Tuning standard message: %c${YA(e)}`,I.warn,I.unrecognized);break}break;default:O(`%cUnrecognized MIDI Realtime/non realtime message: %c${YA(e)}`,I.warn,I.unrecognized)}break;case 65:if(e[2]===66&&e[3]===18){let o=e[7];if(e[4]===64||e[4]===0&&e[6]===127){if((e[5]&16)>0){let r=[9,0,1,2,3,4,5,6,7,8,10,11,12,13,14,15][e[5]&15]+A,g=this.midiAudioChannels[r];switch(e[6]){default:s();break;case 21:let i=o>0&&e[5]>>4;g.setDrums(i),y(`%cChannel %c${r}%c ${i?"is now a drum channel":"now isn't a drum channel"}%c via: %c${YA(e)}`,I.info,I.value,I.recognized,I.info,I.value);return;case 22:let C=o-64;g.setCustomController(nA.channelKeyShift,C),n(r,C,"key shift","keys");return;case 28:let B=o;B===0?(g.randomPan=!0,y(`%cRandom pan is set to %cON%c for %c${r}`,I.info,I.recognized,I.info,I.value)):(g.randomPan=!1,g.controllerChange(p.pan,B));break;case 33:g.controllerChange(p.chorusDepth,o);break;case 34:g.controllerChange(p.reverbDepth,o);break;case 64:case 65:case 66:case 67:case 68:case 69:case 70:case 71:case 72:case 73:case 74:case 75:let h=e.length-9,c=new Int8Array(12);for(let u=0;u<h;u++)c[u]=e[u+7]-64;g.setOctaveTuning(c);let l=o-64;n(r,c.join(" "),"octave scale tuning","cents"),g.setTuning(l);break}return}else if((e[5]&32)>0){let r=[9,0,1,2,3,4,5,6,7,8,10,11,12,13,14,15][e[5]&15]+A,g=this.midiAudioChannels[r],i=o-64,C=i/64,B=o/128,h=(c,l,u=!1)=>{switch(e[6]&15){case 0:c===cA+X.pitchWheel?(g.controllerChange(p.RPNMsb,0),g.controllerChange(p.RPNLsb,0),g.controllerChange(p.dataEntryMsb,Math.floor(i))):(g.sysExModulators.setModulator(c,a.fineTune,i*100,u),n(r,i,`${l} pitch control`,"semitones"));break;case 1:g.sysExModulators.setModulator(c,a.initialFilterFc,C*9600,u),n(r,C*9600,`${l} pitch control`,"cents");break;case 2:g.sysExModulators.setModulator(c,a.initialAttenuation,C*960,u),n(r,C*960,`${l} amplitude`,"cB");break;case 4:g.sysExModulators.setModulator(c,a.vibLfoToPitch,B*600,u),n(r,B*600,`${l} LFO1 pitch depth`,"cents");break;case 5:g.sysExModulators.setModulator(c,a.vibLfoToFilterFc,B*2400,u),n(r,B*2400,`${l} LFO1 filter depth`,"cents");break;case 6:g.sysExModulators.setModulator(c,a.vibLfoToVolume,C*960,u),n(r,C*960,`${l} LFO1 amplitude depth`,"cB");break;case 8:g.sysExModulators.setModulator(c,a.modLfoToPitch,B*600,u),n(r,B*600,`${l} LFO2 pitch depth`,"cents");break;case 9:g.sysExModulators.setModulator(c,a.modLfoToFilterFc,B*2400,u),n(r,B*2400,`${l} LFO2 filter depth`,"cents");break;case 10:g.sysExModulators.setModulator(c,a.modLfoToVolume,C*960,u),n(r,C*960,`${l} LFO2 amplitude depth`,"cB");break}};switch(e[6]&240){default:s();break;case 0:h(p.modulationWheel,"mod wheel");break;case 16:h(cA+X.pitchWheel,"pitch bend",!0);break;case 32:h(cA+X.channelPressure,"channel pressure");break;case 48:h(cA+X.polyPressure,"poly pressure");break}return}else if(e[5]===0){switch(e[6]){default:s();break;case 127:o===0?(y("%cGS Reset received!",I.info),this.resetAllControllers(!1),this.setSystem("gs")):o===127&&(y("%cGS system off, switching to GM2",I.info),this.resetAllControllers(!1),this.setSystem("gm2"));break;case 6:y(`%cRoland GS Master Pan set to: %c${o}%c with: %c${YA(e)}`,I.info,I.value,I.info,I.value),this.setMasterParameter(JA.masterPan,(o-64)/64);break;case 4:y(`%cRoland GS Master Volume set to: %c${o}%c with: %c${YA(e)}`,I.info,I.value,I.info,I.value),this.setMIDIVolume(o/127);break;case 5:let r=o-64;y(`%cRoland GS Master Key-Shift set to: %c${r}%c with: %c${YA(e)}`,I.info,I.value,I.info,I.value),this.setMasterTuning(r*100);break}return}else if(e[5]===1)switch(e[6]){default:s();break;case 0:e.currentIndex=7;let r=AA(e,16);y(`%cGS Patch name: %c${r}`,I.info,I.value);break;case 51:y(`%cGS Reverb level: %c${o}`,I.info,I.value),this.reverbSend=o/64;break;case 48:case 49:case 50:case 52:case 53:case 55:y(`%cUnsupported GS Reverb Parameter: %c${e[6].toString(16)}`,I.warn,I.unrecognized);break;case 58:y(`%cGS Chorus level: %c${o}`,I.info,I.value),this.chorusSend=o/64;break;case 56:case 57:case 59:case 60:case 61:case 62:case 63:case 64:y(`%cUnsupported GS Chorus Parameter: %c${e[6].toString(16)}`,I.warn,I.unrecognized);break}}else s();return}else if(e[2]===69&&e[3]===18){if(e[4]===16&&e[6]===0)if(e[5]===0){let o=new Uint8Array(e.slice(7,e.length-2));this.callEvent("synthdisplay",{displayData:o,displayType:Pt.SoundCanvasText})}else if(e[5]===1){let o=new Uint8Array(e.slice(7,e.length-3));this.callEvent("synthdisplay",{displayData:o,displayType:Pt.SoundCanvasDotDisplay}),y(`%cRoland SC Display Dot Matrix via: %c${YA(e)}`,I.info,I.value)}else s()}else if(e[2]===22&&e[3]===18&&e[4]===16){this.setMIDIVolume(e[7]/100),y(`%cRoland Master Volume control set to: %c${e[7]}%c via: %c${YA(e)}`,I.info,I.value,I.info,I.value);return}else{O(`%cUnrecognized Roland SysEx: %c${YA(e)}`,I.warn,I.unrecognized);return}break;case 67:if(e[2]===76)if(e[3]===0&&e[4]===0)switch(e[5]){case 4:let o=e[6];this.setMIDIVolume(o/127),y(`%cXG master volume. Volume: %c${o}`,I.info,I.recognized);break;case 6:let r=e[6]-64;this.transposeAllChannels(r),y(`%cXG master transpose. Volume: %c${r}`,I.info,I.recognized);break;case 126:y("%cXG system on",I.info),this.resetAllControllers(!1),this.setSystem("xg");break}else if(e[3]===8){if(!GA(this.system))return;let o=e[4]+A;if(o>=this.midiAudioChannels.length)return;let r=this.midiAudioChannels[o],g=e[6];switch(e[5]){case 1:r.controllerChange(p.bankSelect,g);break;case 2:r.controllerChange(p.lsbForControl0BankSelect,g);break;case 3:r.programChange(g);break;case 8:if(r.drumChannel)return;let i=g-64;r.channelTransposeKeyShift=i;break;case 11:r.controllerChange(p.mainVolume,g);break;case 14:let C=g;C===0?(r.randomPan=!0,y(`%cRandom pan is set to %cON%c for %c${o}`,I.info,I.recognized,I.info,I.value)):r.controllerChange(p.pan,C);break;case 19:r.controllerChange(p.reverbDepth,g);break;case 18:r.controllerChange(p.chorusDepth,g);break;default:O(`%cUnrecognized Yamaha XG Part Setup: %c${e[5].toString(16).toUpperCase()}`,I.warn,I.unrecognized)}}else if(e[3]===6&&e[4]===0){let o=new Uint8Array(e.slice(5,e.length-1));this.callEvent("synthdisplay",{displayData:o,displayType:Pt.XGText})}else GA(this.system)&&O(`%cUnrecognized Yamaha XG SysEx: %c${YA(e)}`,I.warn,I.unrecognized);else GA(this.system)&&O(`%cUnrecognized Yamaha SysEx: %c${YA(e)}`,I.warn,I.unrecognized);break}}function ro(e=!0){e&&y("%cResetting all controllers!",I.info),this.callEvent("allcontrollerreset",void 0),this.setSystem(Yt);for(let A=0;A<this.midiAudioChannels.length;A++){this.midiAudioChannels[A].resetControllers();let t=this.midiAudioChannels[A];t.lockPreset?this.callEvent("drumchange",{channel:A,isDrumChannel:t.drumChannel}):(t.setBankSelect(eo(this.system)),A%16===9?(t.setPreset(this.drumPreset),t.drumChannel=!0,this.callEvent("drumchange",{channel:A,isDrumChannel:!0})):(t.drumChannel=!1,t.setPreset(this.defaultPreset),this.callEvent("drumchange",{channel:A,isDrumChannel:!1})));let n=t.preset.bank;this.callEvent("programchange",{channel:A,program:t.preset.program,bank:n});for(let s=0;s<128;s++)this.midiAudioChannels[A].lockedControllers[s]&&this.callEvent("controllerchange",{channel:A,controllerNumber:s,controllerValue:this.midiAudioChannels[A].midiControllers[s]>>7});if(this.midiAudioChannels[A].lockedControllers[cA+X.pitchWheel]===!1){let s=this.midiAudioChannels[A].midiControllers[cA+X.pitchWheel],o=s>>7,r=s&127;this.callEvent("pitchwheel",{channel:A,MSB:o,LSB:r})}}this.tunings=[],this.tunings=[];for(let A=0;A<128;A++)this.tunings.push([]);this.setMIDIVolume(1)}function io(){this.channelOctaveTuning.fill(0);for(let A=0;A<Pe.length;A++){if(this.lockedControllers[A])continue;let t=Pe[A];this.midiControllers[A]!==t&&A<127?A===p.portamentoControl?this.midiControllers[A]=cn:this.controllerChange(A,t>>7):this.midiControllers[A]=t}this.channelVibrato={rate:0,depth:0,delay:0},this.holdPedal=!1,this.randomPan=!1,this.sysExModulators.resetModulators();let e=this.customControllers[nA.channelTransposeFine];this.customControllers.set(gs),this.setCustomController(nA.channelTransposeFine,e),this.resetParameters()}var Cs=new Set([p.bankSelect,p.lsbForControl0BankSelect,p.mainVolume,p.lsbForControl7MainVolume,p.pan,p.lsbForControl10Pan,p.reverbDepth,p.tremoloDepth,p.chorusDepth,p.detuneDepth,p.phaserDepth,p.soundVariation,p.filterResonance,p.releaseTime,p.attackTime,p.brightness,p.decayTime,p.vibratoRate,p.vibratoDepth,p.vibratoDelay,p.soundController10]);function ao(){this.channelOctaveTuning.fill(0),this.pitchWheel(64,0),this.channelVibrato={rate:0,depth:0,delay:0};for(let e=0;e<128;e++){let A=Pe[e];!Cs.has(e)&&A!==this.midiControllers[e]&&(e===p.portamentoControl?this.midiControllers[e]=cn:this.controllerChange(e,A>>7))}this.resetGeneratorOverrides(),this.resetGeneratorOffsets()}function go(){this.dataEntryState=vA.Idle,this.midiControllers[p.NRPNLsb]=16256,this.midiControllers[p.NRPNMsb]=16256,this.midiControllers[p.RPNLsb]=16256,this.midiControllers[p.RPNMsb]=16256,this.resetGeneratorOverrides(),this.resetGeneratorOffsets()}var mt=class{soundfontList=[];presetList=[];constructor(A){this.presetListChangeCallback=A}generatePresetList(){let A={};for(let t=this.soundfontList.length-1;t>=0;t--){let n=this.soundfontList[t],s=new Set;for(let o of n.soundfont.presets){let g=`${Math.min(128,o.bank+n.bankOffset)}-${o.program}`;s.has(g)||(s.add(g),A[g]=o.presetName)}}this.presetList=[];for(let[t,n]of Object.entries(A)){let s=t.split("-");this.presetList.push({presetName:n,program:parseInt(s[1]),bank:parseInt(s[0])})}this.presetListChangeCallback()}getPresetList(){return this.presetList.slice()}reloadManager(A){this.soundfontList=this.soundfontList.filter(t=>t.id===At),this.soundfontList.push({id:"main",bankOffset:0,soundfont:A}),this.generatePresetList()}deleteSoundFont(A){if(this.soundfontList.length===0){O("1 soundfont left. Aborting!");return}let t=this.soundfontList.findIndex(n=>n.id===A);if(t===-1){y(`No soundfont with id of "${A}" found. Aborting!`);return}delete this.soundfontList[t].soundfont.presets,delete this.soundfontList[t].soundfont.instruments,delete this.soundfontList[t].soundfont.samples,this.soundfontList.splice(t,1),this.generatePresetList()}addNewSoundFont(A,t,n){if(this.soundfontList.find(s=>s.id===t)!==void 0){let s=this.soundfontList.find(o=>o.id===t);s.soundfont=A,s.bankOffset=n}else this.soundfontList.push({id:t,soundfont:A,bankOffset:n});this.generatePresetList()}getCurrentSoundFontOrder(){return this.soundfontList.map(A=>A.id)}rearrangeSoundFonts(A){this.soundfontList.sort((t,n)=>A.indexOf(t.id)-A.indexOf(n.id)),this.generatePresetList()}getPreset(A,t,n=!1){if(this.soundfontList.length<1)throw new Error("No soundfonts! Did you forget to add one?");let s=A===128||n&&te(A);for(let o of this.soundfontList){let r=o.soundfont.getPresetNoFallback(A===128?128:A-o.bankOffset,t,n);if(r!==void 0)return{preset:r,bankOffset:o.bankOffset}}if(s){for(let r of this.soundfontList){let g=r.soundfont.presets.find(C=>C.isDrumPreset(n)&&C.program===t);if(g)return{preset:g,bankOffset:r.bankOffset};let i=r.soundfont.presets.find(C=>C.isDrumPreset(n));if(i)return{preset:i,bankOffset:r.bankOffset}}let o=this.soundfontList[0];return{preset:o.soundfont.presets[0],bankOffset:o.bankOffset}}else{for(let r of this.soundfontList){let g=r.soundfont.presets.find(i=>i.program===t&&!i.isDrumPreset(n));if(g)return{preset:g,bankOffset:r.bankOffset}}let o=this.soundfontList[0];return{preset:o.soundfont.presets[0],bankOffset:o.bankOffset}}}destroyManager(){this.soundfontList.forEach(A=>{A.soundfont.destroySoundBank()}),delete this.soundfontList}};var hn=class{_keyMappings=[];addMapping(A,t,n){this._keyMappings[A]===void 0&&(this._keyMappings[A]=[]),this._keyMappings[A][t]=n}deleteMapping(A,t){this._keyMappings[A]?.[t]!==void 0&&(this._keyMappings[A][t]=void 0)}clearMappings(){this._keyMappings=[]}setMappings(A){this._keyMappings=A}getMappings(){return this._keyMappings}getVelocity(A,t){return this._keyMappings[A]?.[t]?.velocity??-1}getGain(A,t){return this._keyMappings[A]?.[t]?.gain??1}hasOverridePatch(A,t){let n=this._keyMappings[A]?.[t]?.patch?.bank;return n!==void 0&&n>=0}getPatch(A,t){let n=this._keyMappings[A]?.[t];if(n)return n.patch;throw new Error("No modifier.")}};var Io=.1,Ke=class e{static cachedCoefficients=[];a0=0;a1=0;a2=0;a3=0;a4=0;x1=0;x2=0;y1=0;y2=0;resonanceCb=0;currentInitialFc=13500;lastTargetCutoff=1/0;initialized=!1;sampleRate;constructor(A){this.sampleRate=A,this.maxCutoff=A*.45}static apply(A,t,n,s){let o=A.modulatedGenerators[a.initialFilterFc],r=A.filter;r.initialized?r.currentInitialFc+=(o-r.currentInitialFc)*s:(r.initialized=!0,r.currentInitialFc=o);let g=r.currentInitialFc+n,i=A.modulatedGenerators[a.initialFilterQ];if(r.currentInitialFc>13499&&g>13499&&i===0){r.currentInitialFc=13500;return}(Math.abs(r.lastTargetCutoff-g)>1||r.resonanceCb!==i)&&(r.lastTargetCutoff=g,r.resonanceCb=i,e.calculateCoefficients(r,g));for(let C=0;C<t.length;C++){let B=t[C],h=r.a0*B+r.a1*r.x1+r.a2*r.x2-r.a3*r.y1-r.a4*r.y2;r.x2=r.x1,r.x1=B,r.y2=r.y1,r.y1=h,t[C]=h}}static calculateCoefficients(A,t){t=~~t;let n=A.resonanceCb,s=e.cachedCoefficients?.[n]?.[t];if(s!==void 0){A.a0=s.a0,A.a1=s.a1,A.a2=s.a2,A.a3=s.a3,A.a4=s.a4;return}let o=Ot(t);o=Math.min(o,A.maxCutoff);let r=n/10,g=Ce(-(r-3.01)),i=1/Math.sqrt(Ce(-r)),C=2*Math.PI*o/A.sampleRate,B=Math.cos(C),h=Math.sin(C)/(2*g),c=(1-B)*i,l=c/2,u=l,f=1+h,S=-2*B,G=1-h,D={};D.a0=l/f,D.a1=c/f,D.a2=u/f,D.a3=S/f,D.a4=G/f,A.a0=D.a0,A.a1=D.a1,A.a2=D.a2,A.a3=D.a3,A.a4=D.a4,e.cachedCoefficients[n]===void 0&&(e.cachedCoefficients[n]=[]),e.cachedCoefficients[n][t]=D}},Es=new Ke(44100);Es.resonanceCb=0;for(let e=1500;e<13500;e++)Es.currentInitialFc=e,Ke.calculateCoefficients(Es,e);var LA=16384,Me=new Float32Array(LA+1),tt=new Float32Array(LA+1);Me[0]=0;Me[Me.length-1]=1;tt[0]=0;tt[tt.length-1]=1;for(let e=1;e<LA-1;e++){let A=-.4166666666666667*Math.log(e/(Me.length-1))/Math.LN10;tt[e]=1-A,Me[Me.length-1-e]=A}function nt(e,A,t,n){switch(e&&(t=1-t),A){case DA.linear:return n?t*2-1:t;case DA.switch:return t=t>.5?1:0,n?t*2-1:t;case DA.concave:return n?(t=t*2-1,t<0?-Me[~~(t*-LA)]:Me[~~(t*LA)]):Me[~~(t*LA)];case DA.convex:return n?(t=t*2-1,t<0?-tt[~~(t*-LA)]:tt[~~(t*LA)]):tt[~~(t*LA)]}}var cs=1,hs=new Float32Array(1e3);for(let e=0;e<hs.length;e++)hs[e]=nt(0,DA.convex,e/1e3,0);var Be=class e{attackDuration=0;decayDuration=0;holdDuration=0;releaseDuration=0;sustainLevel=0;delayEnd=0;attackEnd=0;holdEnd=0;decayEnd=0;releaseStartLevel=0;currentValue=0;static startRelease(A){e.recalculate(A)}static recalculate(A){let t=A.modulationEnvelope;A.isInRelease&&(t.releaseStartLevel=e.getValue(A,A.releaseStartTime,!0)),t.sustainLevel=1-A.modulatedGenerators[a.sustainModEnv]/1e3,t.attackDuration=he(A.modulatedGenerators[a.attackModEnv]);let n=(60-A.midiNote)*A.modulatedGenerators[a.keyNumToModEnvDecay],s=he(A.modulatedGenerators[a.decayModEnv]+n);t.decayDuration=s*(1-t.sustainLevel);let o=(60-A.midiNote)*A.modulatedGenerators[a.keyNumToModEnvHold];t.holdDuration=he(o+A.modulatedGenerators[a.holdModEnv]);let r=he(A.modulatedGenerators[a.releaseModEnv]);t.releaseDuration=r*t.releaseStartLevel,t.delayEnd=A.startTime+he(A.modulatedGenerators[a.delayModEnv]),t.attackEnd=t.delayEnd+t.attackDuration,t.holdEnd=t.attackEnd+t.holdDuration,t.decayEnd=t.holdEnd+t.decayDuration}static getValue(A,t,n=!1){let s=A.modulationEnvelope;return A.isInRelease&&!n?s.releaseStartLevel===0?0:Math.max(0,(1-(t-A.releaseStartTime)/s.releaseDuration)*s.releaseStartLevel):(t<s.delayEnd?s.currentValue=0:t<s.attackEnd?s.currentValue=hs[~~((1-(s.attackEnd-t)/s.attackDuration)*1e3)]:t<s.holdEnd?s.currentValue=cs:t<s.decayEnd?s.currentValue=(1-(s.decayEnd-t)/s.decayDuration)*(s.sustainLevel-cs)+cs:s.currentValue=s.sustainLevel,s.currentValue)}};var qe=4,U=class{generatorType=a.INVALID;generatorValue=0;constructor(A=a.INVALID,t=0,n=!0){if(this.generatorType=A,t===void 0)throw new Error("No value provided.");if(this.generatorValue=Math.round(t),n){let s=q[A];s!==void 0&&(this.generatorValue=Math.max(s.min,Math.min(s.max,this.generatorValue)))}}};function Co(e,A,t){let n=q[e]||{min:0,max:32768,def:0},s=A.find(i=>i.generatorType===e),o=0;s&&(o=s.generatorValue);let r=t.find(i=>i.generatorType===e),g=n.def;return r&&(g=r.generatorValue),g+o}var Mi=-2320,xi=-1130,ln=class{sampleData;playbackStep=0;cursor=0;rootKey=0;loopStart=0;loopEnd=0;end=0;loopingMode=0;isLooping=!1;constructor(A,t,n,s,o,r,g,i){this.sampleData=A,this.playbackStep=t,this.cursor=n,this.rootKey=s,this.loopStart=o,this.loopEnd=r,this.end=g,this.loopingMode=i,this.isLooping=this.loopingMode===1||this.loopingMode===3}},Kt=class e{sample;filter;gain=1;generators;modulators=[];modulatedGenerators;finished=!1;isInRelease=!1;velocity=0;midiNote=0;pressure=0;targetKey=0;modulationEnvelope=new Be;volumeEnvelope;startTime=0;releaseStartTime=1/0;currentTuningCents=0;currentTuningCalculated=1;currentPan=0;realKey;portamentoFromKey=-1;portamentoDuration=0;overridePan=0;exclusiveClass=0;constructor(A,t,n,s,o,r,g,i,C){this.sample=t,this.generators=i,this.exclusiveClass=this.generators[a.exclusiveClass],this.modulatedGenerators=new Int16Array(i),this.modulators=C,this.filter=new Ke(A),this.velocity=s,this.midiNote=n,this.startTime=o,this.targetKey=r,this.realKey=g,this.volumeEnvelope=new le(A,i[a.sustainVolEnv])}static copy(A,t,n){let s=A.sample,o=new ln(s.sampleData,s.playbackStep,s.cursor,s.rootKey,s.loopStart,s.loopEnd,s.end,s.loopingMode);return new e(A.volumeEnvelope.sampleRate,o,A.midiNote,A.velocity,t,A.targetKey,n,new Int16Array(A.generators),A.modulators.map(r=>EA.copy(r)))}exclusiveRelease(A){this.release(A,lo),this.modulatedGenerators[a.releaseVolEnv]=Mi,this.modulatedGenerators[a.releaseModEnv]=xi,le.recalculate(this),Be.recalculate(this)}release(A,t=ho){this.releaseStartTime=A,this.releaseStartTime-this.startTime<t&&(this.releaseStartTime=this.startTime+t)}};function Eo(e,A,t,n,s,o){let r=e.getSamplesAndGenerators(n,s).reduce((g,i)=>{if(i.sample.getAudioData()===void 0)return O(`Discarding invalid sample: ${i.sample.sampleName}`),g;let C=new Int16Array(Jt);for(let S=0;S<60;S++)C[S]=Co(S,i.presetGenerators,i.instrumentGenerators);C[a.initialAttenuation]=Math.floor(C[a.initialAttenuation]*.4);let B=i.sample.samplePitch;C[a.overridingRootKey]>-1&&(B=C[a.overridingRootKey]);let h=n;C[a.keyNum]>-1&&(h=C[a.keyNum]);let c=i.sample.sampleLoopStartIndex,l=i.sample.sampleLoopEndIndex,u=C[a.sampleModes],f=new ln(i.sample.sampleData,i.sample.sampleRate/this.sampleRate*Math.pow(2,i.sample.samplePitchCorrection/1200),0,B,c,l,Math.floor(i.sample.sampleData.length)-1,u);return C[a.velocity]>-1&&(s=C[a.velocity]),g.push(new Kt(this.sampleRate,f,n,s,this.currentSynthTime,h,o,C,i.modulators.map(S=>EA.copy(S)))),g},[]);return this.setCachedVoice(A,t,n,s,r),r.map(g=>Kt.copy(g,this.currentSynthTime,o))}function co(e,A,t,n){let s=this.midiAudioChannels[e],o=this.keyModifierManager.hasOverridePatch(e,A),r=s.getBankSelect(),g=s.preset.program;if(o){let B=this.keyModifierManager.getPatch(e,A);r=B.bank,g=B.program}let i=this.getCachedVoice(r,g,A,t);if(i!==void 0)return i.map(B=>Kt.copy(B,this.currentSynthTime,n));let C=s.preset;return o&&(C=this.getPreset(r,g)),this.getVoicesForPreset(C,r,g,A,t,n)}var Qo=.05,Ni=4600,bi=2e3,Bo=Math.PI/2,Bn=-500,fo=500,ls=fo-Bn,uo=new Float32Array(ls+1),mo=new Float32Array(ls+1);for(let e=Bn;e<=fo;e++){let A=(e-Bn)/ls,t=e-Bn;uo[t]=Math.cos(Bo*A),mo[t]=Math.sin(Bo*A)}function po(e,A,t,n,s,o,r,g){if(isNaN(A[0]))return;let i;e.overridePan?i=e.overridePan:(e.currentPan+=(e.modulatedGenerators[a.pan]-e.currentPan)*this.synth.panSmoothingFactor,i=e.currentPan);let C=this.synth.currentGain*e.gain,B=~~(i+500),h=uo[B]*C*this.synth.panLeft,c=mo[B]*C*this.synth.panRight;if(this.synth.effectsEnabled){let l=e.modulatedGenerators[a.reverbEffectsSend];if(l>0){let f=this.synth.reverbGain*this.synth.reverbSend*C*(l/Ni);for(let S=0;S<A.length;S++)s[S]+=f*A[S];o.set(s)}let u=e.modulatedGenerators[a.chorusEffectsSend];if(u>0){let f=this.synth.chorusGain*this.synth.chorusSend*(u/bi),S=h*f,G=c*f;for(let D=0;D<A.length;D++)r[D]+=S*A[D],g[D]+=G*A[D]}}if(h>0)for(let l=0;l<A.length;l++)t[l]+=h*A[l];if(c>0)for(let l=0;l<A.length;l++)n[l]+=c*A[l]}function yo(e=!1){y("%cStop all received!",I.info);for(let A=0;A<this.midiAudioChannels.length;A++)this.midiAudioChannels[A].stopAllNotes(e);this.callEvent("stopall",void 0)}function N(e,A){let t=0;for(let n=0;n<A;n++)t|=e[e.currentIndex++]<<n*8;return t>>>0}function Se(e,A,t){for(let n=0;n<t;n++)e[e.currentIndex++]=A>>n*8&255}function J(e,A){e[e.currentIndex++]=A&255,e[e.currentIndex++]=A>>8}function eA(e,A){Se(e,A,4)}function Ve(e,A){let t=A<<8|e;return t>32767?t-65536:t}function So(e){return e>127?e-256:e}var hA=class{constructor(A,t,n){this.header=A,this.size=t,this.chunkData=n}};function IA(e,A=!0,t=!1){let n=AA(e,4),s=N(e,4),o;return A&&(o=new b(e.buffer.slice(e.currentIndex,e.currentIndex+s))),(A||t)&&(e.currentIndex+=s),s%2!==0&&e[e.currentIndex]===0&&e.currentIndex++,new hA(n,s,o)}function dA(e,A=void 0){let t=8+e.size;e.size%2!==0&&t++,A&&(t+=A.length);let n=new b(t);return A&&(n.set(A,n.currentIndex),n.currentIndex+=A.length),bA(n,e.header),eA(n,t-8-(A?.length||0)),n.set(e.chunkData,n.currentIndex),n}function z(e,A,t=!1,n=!1){if(t){let C=new Uint8Array(A.length+1);C.set(A),A=C}let s=8,o=s+A.length,r=A.length;o%2!==0&&o++;let g=e;n&&(o+=4,r+=4,s+=4,g="LIST");let i=new b(o);return bA(i,g),eA(i,r),n&&bA(i,e),i.set(A,s),i}function _A(e,A){return e.find(t=>t.header!=="LIST"?!1:(t.chunkData.currentIndex=0,AA(t.chunkData,4)===A))}function Do(){let e=qe;for(let n of this.instruments)e+=n.globalZone.generators.length*qe,e+=n.instrumentZones.reduce((s,o)=>(o.generators=o.generators.filter(r=>r.generatorType!==a.sampleID&&r.generatorType!==a.keyRange&&r.generatorType!==a.velRange),o.hasVelRange&&o.prependGenerator(new U(a.velRange,o.velRange.max<<8|Math.max(o.velRange.min,0),!1)),o.hasKeyRange&&o.prependGenerator(new U(a.keyRange,o.keyRange.max<<8|Math.max(o.keyRange.min,0),!1)),o.addGenerators(new U(a.sampleID,this.samples.indexOf(o.sample),!1)),o.generators.length*qe+s),0);let A=new b(e),t=n=>{for(let s of n.generators)J(A,s.generatorType),J(A,s.generatorValue)};for(let n of this.instruments){t(n.globalZone);for(let s of n.instrumentZones)t(s)}return eA(A,0),dA(new hA("igen",A.length,A))}function ko(e,A,t,n,s){let o=this.samples.map((C,B)=>{t&&C.compressSample(n,s);let h=C.getRawData();return y(`%cEncoded sample %c${B}. ${C.sampleName}%c of %c${this.samples.length}%c. Compressed: %c${C.isCompressed}%c.`,I.info,I.recognized,I.info,I.recognized,I.info,C.isCompressed?I.recognized:I.unrecognized,I.info),h}),r=this.samples.reduce((C,B,h)=>C+o[h].length+46,0),g=new b(r);this.samples.forEach((C,B)=>{let h=o[B],c,l,u=h.length;C.isCompressed?(c=g.currentIndex,l=c+h.length):(c=g.currentIndex/2,l=c+h.length/2,u+=46),e.push(c),g.set(h,g.currentIndex),g.currentIndex+=u,A.push(l)});let i=dA(new hA("smpl",g.length,g),new b([115,100,116,97]));return dA(new hA("LIST",i.length,i))}function Fo(e,A){let n=new b(46*(this.samples.length+1));return this.samples.forEach((s,o)=>{bA(n,s.sampleName,20);let r=e[o];eA(n,r);let g=A[o];eA(n,g);let i=s.sampleLoopStartIndex+r,C=s.sampleLoopEndIndex+r;s.isCompressed&&(i-=r,C-=r),eA(n,i),eA(n,C),eA(n,s.sampleRate),n[n.currentIndex++]=s.samplePitch,n[n.currentIndex++]=s.samplePitchCorrection,J(n,s.sampleLink),J(n,s.sampleType)}),bA(n,"EOS",46),dA(new hA("shdr",n.length,n))}function wo(){let e=WA;for(let n of this.instruments)e+=n.globalZone.modulators.length*WA,e+=n.instrumentZones.reduce((s,o)=>o.modulators.length*WA+s,0);let A=new b(e),t=n=>{for(let s of n.modulators)J(A,s.getSourceEnum()),J(A,s.modulatorDestination),J(A,s.transformAmount),J(A,s.getSecSrcEnum()),J(A,s.transformType)};for(let n of this.instruments){t(n.globalZone);for(let s of n.instrumentZones)t(s)}return Se(A,0,WA),dA(new hA("imod",A.length,A))}var Ro=4;function Go(){let e=this.instruments.reduce((o,r)=>(r.instrumentZones.length+1)*Ro+o,Ro),A=new b(e),t=0,n=0,s=o=>{J(A,t),J(A,n),t+=o.generators.length,n+=o.modulators.length};for(let o of this.instruments){s(o.globalZone);for(let r of o.instrumentZones)s(r)}return J(A,t),J(A,n),dA(new hA("ibag",A.length,A))}var Mo=22;function xo(){let e=this.instruments.length*Mo+Mo,A=new b(e),t=0;for(let n of this.instruments)bA(A,n.instrumentName,20),J(A,t),t+=n.instrumentZones.length+1;return bA(A,"EOI",20),J(A,t),dA(new hA("inst",A.length,A))}function No(){let e=qe;for(let n of this.presets)e+=n.globalZone.generators.length*qe,e+=n.presetZones.reduce((s,o)=>(o.generators=o.generators.filter(r=>r.generatorType!==a.instrument&&r.generatorType!==a.keyRange&&r.generatorType!==a.velRange),o.hasVelRange&&o.prependGenerator(new U(a.velRange,o.velRange.max<<8|Math.max(o.velRange.min,0),!1)),o.hasKeyRange&&o.prependGenerator(new U(a.keyRange,o.keyRange.max<<8|Math.max(o.keyRange.min,0),!1)),o.addGenerators(new U(a.instrument,this.instruments.indexOf(o.instrument),!1)),o.generators.length*qe+s),0);let A=new b(e),t=n=>{for(let s of n.generators)J(A,s.generatorType),J(A,s.generatorValue)};for(let n of this.presets){t(n.globalZone);for(let s of n.presetZones)t(s)}return eA(A,0),dA(new hA("pgen",A.length,A))}function bo(){let e=WA;for(let n of this.presets)e+=n.globalZone.modulators.length*WA,e+=n.presetZones.reduce((s,o)=>o.modulators.length*WA+s,0);let A=new b(e),t=n=>{for(let s of n.modulators)J(A,s.getSourceEnum()),J(A,s.modulatorDestination),J(A,s.transformAmount),J(A,s.getSecSrcEnum()),J(A,s.transformType)};for(let n of this.presets){t(n.globalZone);for(let s of n.presetZones)t(s)}return Se(A,0,WA),dA(new hA("pmod",A.length,A))}var Lo=4;function To(){let e=this.presets.reduce((o,r)=>(r.presetZones.length+1)*Lo+o,Lo),A=new b(e),t=0,n=0,s=o=>{J(A,t),J(A,n),t+=o.generators.length,n+=o.modulators.length};for(let o of this.presets){s(o.globalZone);for(let r of o.presetZones)s(r)}return J(A,t),J(A,n),dA(new hA("pbag",A.length,A))}var Uo=38;function vo(){let e=this.presets.length*Uo+Uo,A=new b(e),t=0;for(let n of this.presets)bA(A,n.presetName,20),J(A,n.program),J(A,n.bank),J(A,t),eA(A,n.library),eA(A,n.genre),eA(A,n.morphology),t+=n.presetZones.length+1;return bA(A,"EOP",20),J(A,0),J(A,0),J(A,t),eA(A,0),eA(A,0),eA(A,0),dA(new hA("phdr",A.length,A))}function Qn(e,A){e===void 0&&(e={});for(let t in A)A.hasOwnProperty(t)&&!(t in e)&&(e[t]=A[t]);return e}var Ho={compress:!1,compressionQuality:.5,compressionFunction:void 0,writeDefaultModulators:!0};function Yo(e=Ho){if(e=Qn(e,Ho),e.compress&&typeof e.compressionFunction!="function")throw new TypeError("No compression function supplied but compression enabled.");QA("%cSaving soundfont...",I.info),y(`%cCompression: %c${e?.compress||"false"}%c quality: %c${e?.compressionQuality||"none"}`,I.info,I.recognized,I.info,I.recognized),y("%cWriting INFO...",I.info);let A=[];this.soundFontInfo.ISFT="SpessaSynth",e?.compress&&(this.soundFontInfo.ifil="3.0"),e?.writeDefaultModulators?(this.soundFontInfo.DMOD=`${this.defaultModulators.length} Modulators`,this.customDefaultModulators=!0):delete this.soundFontInfo.DMOD;for(let[M,v]of Object.entries(this.soundFontInfo))if(M==="ifil"||M==="iver"){let R=parseInt(v.split(".")[0]),E=parseInt(v.split(".")[1]),x=new b(4);J(x,R),J(x,E),A.push(dA(new hA(M,4,x)))}else if(M==="DMOD"){let R=this.defaultModulators;y(`%cWriting %c${R.length}%c default modulators...`,I.info,I.recognized,I.info);let E=WA+R.length*WA,x=new b(E);for(let L of R)J(x,L.getSourceEnum()),J(x,L.modulatorDestination),J(x,L.transformAmount),J(x,L.getSecSrcEnum()),J(x,L.transformType);Se(x,0,WA),A.push(dA(new hA(M,x.length,x)))}else{let R=new b(v.length+1);bA(R,v),A.push(dA(new hA(M,R.length,R)))}let t=z("INFO",kA(A),!1,!0);y("%cWriting SDTA...",I.info);let n=[],s=[],o=ko.call(this,n,s,e?.compress,e?.compressionQuality??.5,e.compressionFunction);y("%cWriting PDTA...",I.info),y("%cWriting SHDR...",I.info);let r=Fo.call(this,n,s);y("%cWriting IGEN...",I.info);let g=Do.call(this);y("%cWriting IMOD...",I.info);let i=wo.call(this);y("%cWriting IBAG...",I.info);let C=Go.call(this);y("%cWriting INST...",I.info);let B=xo.call(this),h=No.call(this);y("%cWriting PMOD...",I.info);let c=bo.call(this);y("%cWriting PBAG...",I.info);let l=To.call(this);y("%cWriting PHDR...",I.info);let u=vo.call(this),f=kA([new b([112,100,116,97]),u,l,c,h,B,C,i,g,r]),S=dA(new hA("LIST",f.length,f));y("%cWriting the output file...",I.info);let G=kA([new b([115,102,98,107]),t,o,S]),D=dA(new hA("RIFF",G.length,G));return y(`%cSaved succesfully! Final file size: %c${D.length}`,I.info,I.recognized),K(),D}var Ze=class{velRange={min:-1,max:127};keyRange={min:-1,max:127};generators=[];modulators=[];get hasKeyRange(){return this.keyRange.min!==-1}get hasVelRange(){return this.velRange.min!==-1}prependGenerator(A){this.generators.unshift(A)}setGenerator(A,t){switch(A){case a.sampleID:throw new Error("Use setSample()");case a.instrument:throw new Error("Use setInstrument()");case a.velRange:case a.keyRange:throw new Error("Set the range manually")}let n=this.generators.find(s=>s.generatorType===A);n?n.generatorValue=t:this.addGenerators(new U(A,t))}addGenerators(...A){A.forEach(t=>{switch(t.generatorType){default:this.generators.push(t);break;case a.velRange:this.velRange.min=t.generatorValue&127,this.velRange.max=t.generatorValue>>8&127;break;case a.keyRange:this.keyRange.min=t.generatorValue&127,this.keyRange.max=t.generatorValue>>8&127}})}addModulators(...A){this.modulators.push(...A)}getGeneratorValue(A,t){return this.generators.find(n=>n.generatorType===A)?.generatorValue??t}};var Ee=class extends Ze{sample;useCount=0;setSample(A){this.sample=A,this.sample.useCount++}deleteZone(){this.sample.useCount--}hasSample(){return!!this.sample}};var De=class extends Ze{copyFrom(A){this.keyRange={...A.keyRange},this.velRange={...A.velRange},this.generators=[...A.generators],this.modulators=[...A.modulators]}};var Li=new Set([a.velRange,a.keyRange,a.instrument,a.exclusiveClass,a.endOper,a.sampleModes,a.startloopAddrsOffset,a.startloopAddrsCoarseOffset,a.endloopAddrsOffset,a.endloopAddrsCoarseOffset,a.startAddrsOffset,a.startAddrsCoarseOffset,a.endAddrOffset,a.endAddrsCoarseOffset,a.initialAttenuation,a.fineTune,a.coarseTune,a.keyNumToVolEnvHold,a.keyNumToVolEnvDecay,a.keyNumToModEnvHold,a.keyNumToModEnvDecay]);function Oo(e,A=!0){function t(c,l){c.push(...l.filter(u=>!c.find(f=>f.generatorType===u.generatorType)))}function n(c,l){return{min:Math.max(c.min,l.min),max:Math.min(c.max,l.max)}}function s(c,l){c.push(...l.filter(u=>!c.find(f=>EA.isIdentical(u,f))))}let o=[],r=[],g=[],i=e.globalZone;r.push(...i.generators),g.push(...i.modulators);let C=i.keyRange,B=i.velRange;for(let c of e.presetZones){let l=c.keyRange;c.hasKeyRange||(l=C);let u=c.velRange;c.hasVelRange||(u=B);let f=c.generators.map(L=>new U(L.generatorType,L.generatorValue));t(f,r);let S=[...c.modulators];s(S,g);let G=c.instrument,D=G.instrumentZones,M=[],v=[],R=G.globalZone;M.push(...R.generators),v.push(...R.modulators);let E=R.keyRange,x=R.velRange;for(let L of D){let sA=L.keyRange;L.hasKeyRange||(sA=E);let $=L.velRange;if(L.hasVelRange||($=x),sA=n(sA,l),$=n($,u),sA.max<sA.min||$.max<$.min)continue;let Y=L.generators.map(_=>new U(_.generatorType,_.generatorValue));t(Y,M);let aA=[...L.modulators];s(aA,v);let RA=[...aA];for(let _ of S){let T=RA.findIndex(H=>EA.isIdentical(_,H));T!==-1?RA[T]=RA[T].sumTransform(_):RA.push(_)}let NA=Y.map(_=>new U(_.generatorType,_.generatorValue));for(let _ of f){if(_.generatorType===a.velRange||_.generatorType===a.keyRange||_.generatorType===a.instrument||_.generatorType===a.endOper||_.generatorType===a.sampleModes)continue;let T=Y.findIndex(H=>H.generatorType===_.generatorType);if(T!==-1){let H=NA[T].generatorValue+_.generatorValue;NA[T]=new U(_.generatorType,H)}else{let H=q[_.generatorType].def+_.generatorValue;NA.push(new U(_.generatorType,H))}}NA=NA.filter(_=>_.generatorType!==a.sampleID&&_.generatorType!==a.keyRange&&_.generatorType!==a.velRange&&_.generatorType!==a.endOper&&_.generatorType!==a.instrument&&_.generatorValue!==q[_.generatorType].def);let tA=new Ee;tA.keyRange=sA,tA.velRange=$,tA.keyRange.min===0&&tA.keyRange.max===127&&(tA.keyRange.min=-1),tA.velRange.min===0&&tA.velRange.max===127&&(tA.velRange.min=-1),tA.setSample(L.sample),tA.generators=NA,tA.modulators=RA,o.push(tA)}}let h=new De;if(A){for(let u=0;u<58;u++){if(Li.has(u))continue;let f={},S=q[u]?.def||0;f[S]=0;for(let G of o){let D=G.generators.find(R=>R.generatorType===u);if(D){let R=D.generatorValue;f[R]===void 0?f[R]=1:f[R]++}else f[S]++;let M;switch(u){default:continue;case a.decayVolEnv:M=a.keyNumToVolEnvDecay;break;case a.holdVolEnv:M=a.keyNumToVolEnvHold;break;case a.decayModEnv:M=a.keyNumToModEnvDecay;break;case a.holdModEnv:M=a.keyNumToModEnvHold}if(G.generators.find(R=>R.generatorType===M)!==void 0){f={};break}}if(Object.keys(f).length>0){let G=Object.entries(f).reduce((M,v)=>M[1]<v[1]?v:M,[0,0]),D=parseInt(G[0]);D!==S&&h.addGenerators(new U(u,D)),o.forEach(M=>{let v=M.generators.findIndex(R=>R.generatorType===u);v!==-1?M.generators[v].generatorValue===D&&M.generators.splice(v,1):D!==S&&M.addGenerators(new U(u,S))})}}let l=o[0].modulators.map(u=>EA.copy(u));for(let u of l){let f=!0;for(let S of o){if(!f)continue;S.modulators.find(D=>EA.isIdentical(D,u))||(f=!1)}if(f===!0){h.addModulators(EA.copy(u));for(let S of o){let G=S.modulators.find(D=>EA.isIdentical(D,u));G.transformAmount===u.transformAmount&&S.modulators.splice(S.modulators.indexOf(G),1)}}}}return{zones:o,global:h}}var Jo=20;function dn(e,A,t,n,s,o,r){let g=r===0?0:1,i=new b(Jo+g*16);eA(i,Jo),J(i,A),J(i,t);let C=n*.4,B=Math.floor(C*-65536);eA(i,B),eA(i,2);let h=o-s,c=0;switch(r){default:case 0:g=0;break;case 1:c=0,g=1;break;case 3:c=1,g=1}return eA(i,g),g===1&&(eA(i,16),eA(i,c),eA(i,s),eA(i,h)),z("wsmp",i)}var V={none:0,modLfo:1,velocity:2,keyNum:3,volEnv:4,modEnv:5,pitchWheel:6,polyPressure:7,channelPressure:8,vibratoLfo:9,modulationWheel:129,volume:135,pan:138,expression:139,chorus:221,reverb:219,pitchWheelRange:256,fineTune:257,coarseTune:258},fn=new mA(219,0,a.reverbEffectsSend,1e3,0),un=new mA(221,0,a.chorusEffectsSend,1e3,0),mn=new mA(129,0,a.vibLfoToPitch,0,0),pn=new mA(13,0,a.vibLfoToPitch,0,0);var w={none:0,gain:1,reserved:2,pitch:3,pan:4,keyNum:5,chorusSend:128,reverbSend:129,modLfoFreq:260,modLfoDelay:261,vibLfoFreq:276,vibLfoDelay:277,volEnvAttack:518,volEnvDecay:519,volEnvRelease:521,volEnvSustain:522,volEnvDelay:523,volEnvHold:524,modEnvAttack:778,modEnvDecay:779,modEnvRelease:781,modEnvSustain:782,modEnvDelay:783,modEnvHold:784,filterCutoff:1280,filterQ:1281};var qt=class{source;control;destination;scale;transform;constructor(A,t,n,s,o){this.source=A,this.control=t,this.destination=n,this.scale=s,this.transform=o}writeArticulator(){let A=new b(12);return J(A,this.source),J(A,this.control),J(A,this.destination),J(A,this.transform),eA(A,this.scale<<16),A}};function Po(e,A){if(e)switch(A){default:return;case p.modulationWheel:return V.modulationWheel;case p.mainVolume:return V.volume;case p.pan:return V.pan;case p.expressionController:return V.expression;case p.chorusDepth:return V.chorus;case p.reverbDepth:return V.reverb}else switch(A){default:return;case X.noteOnKeyNum:return V.keyNum;case X.noteOnVelocity:return V.velocity;case X.noController:return V.none;case X.polyPressure:return V.polyPressure;case X.channelPressure:return V.channelPressure;case X.pitchWheel:return V.pitchWheel;case X.pitchWheelRange:return V.pitchWheelRange}}function Ko(e,A){switch(e){default:return;case a.initialAttenuation:return{dest:w.gain,amount:-A};case a.fineTune:return w.pitch;case a.pan:return w.pan;case a.keyNum:return w.keyNum;case a.reverbEffectsSend:return w.reverbSend;case a.chorusEffectsSend:return w.chorusSend;case a.freqModLFO:return w.modLfoFreq;case a.delayModLFO:return w.modLfoDelay;case a.delayVibLFO:return w.vibLfoDelay;case a.freqVibLFO:return w.vibLfoFreq;case a.delayVolEnv:return w.volEnvDelay;case a.attackVolEnv:return w.volEnvAttack;case a.holdVolEnv:return w.volEnvHold;case a.decayVolEnv:return w.volEnvDecay;case a.sustainVolEnv:return{dest:w.volEnvSustain,amount:1e3-A};case a.releaseVolEnv:return w.volEnvRelease;case a.delayModEnv:return w.modEnvDelay;case a.attackModEnv:return w.modEnvAttack;case a.holdModEnv:return w.modEnvHold;case a.decayModEnv:return w.modEnvDecay;case a.sustainModEnv:return{dest:w.modEnvSustain,amount:1e3-A};case a.releaseModEnv:return w.modEnvRelease;case a.initialFilterFc:return w.filterCutoff;case a.initialFilterQ:return w.filterQ}}function qo(e,A){switch(e){default:return;case a.modEnvToFilterFc:return{source:V.modEnv,dest:w.filterCutoff,amt:A,isBipolar:!1};case a.modEnvToPitch:return{source:V.modEnv,dest:w.pitch,amt:A,isBipolar:!1};case a.modLfoToFilterFc:return{source:V.modLfo,dest:w.filterCutoff,amt:A,isBipolar:!0};case a.modLfoToVolume:return{source:V.modLfo,dest:w.gain,amt:A,isBipolar:!0};case a.modLfoToPitch:return{source:V.modLfo,dest:w.pitch,amt:A,isBipolar:!0};case a.vibLfoToPitch:return{source:V.vibratoLfo,dest:w.pitch,amt:A,isBipolar:!0};case a.keyNumToVolEnvHold:return{source:V.keyNum,dest:w.volEnvHold,amt:A,isBipolar:!0};case a.keyNumToVolEnvDecay:return{source:V.keyNum,dest:w.volEnvDecay,amt:A,isBipolar:!0};case a.keyNumToModEnvHold:return{source:V.keyNum,dest:w.modEnvHold,amt:A,isBipolar:!0};case a.keyNumToModEnvDecay:return{source:V.keyNum,dest:w.modEnvDecay,amt:A,isBipolar:!0};case a.scaleTuning:return{source:V.keyNum,dest:w.pitch,amt:A*128,isBipolar:!1}}}function Vo(e){let A=Ko(e.generatorType,e.generatorValue),t=A,n=0,s=e.generatorValue;A?.amount!==void 0&&(s=A.amount,t=A.dest);let o=qo(e.generatorType,e.generatorValue);if(o!==void 0)s=o.amt,t=o.dest,n=o.source;else if(t===void 0){O(`Invalid generator type: ${e.generatorType}`);return}return new qt(n,0,t,s,0)}function Zo(e){if(e.transformType!==0){O("Other transform types are not supported.");return}let A=Po(e.sourceUsesCC,e.sourceIndex),t=e.sourceCurveType,n=e.sourcePolarity,s=e.sourceDirection;if(A===void 0){O(`Invalid source: ${e.sourceIndex}, CC: ${e.sourceUsesCC}`);return}e.modulatorDestination===a.initialAttenuation&&(s=s===1?0:1);let o=Po(e.secSrcUsesCC,e.secSrcIndex),r=e.secSrcCurveType,g=e.secSrcPolarity,i=e.secSrcDirection;if(o===void 0){O(`Invalid secondary source: ${e.secSrcIndex}, CC: ${e.secSrcUsesCC}`);return}let C=Ko(e.modulatorDestination,e.transformAmount),B=C,h=e.transformAmount;C?.dest!==void 0&&(B=C.dest,h=C.amount);let c=qo(e.modulatorDestination,e.transformAmount);if(c!==void 0)h=c.amt,o=A,r=t,g=n,i=s,t=DA.linear,n=c.isBipolar?1:0,s=0,A=c.source,B=c.dest;else if(B===void 0){O(`Invalid destination: ${e.modulatorDestination}`);return}let l=0;return l|=r<<4,l|=g<<8,l|=i<<9,l|=t,l|=n<<14,l|=s<<15,new qt(A,o,B,h,l)}var Ti=new Set([a.sampleModes,a.initialAttenuation,a.keyRange,a.velRange,a.sampleID,a.fineTune,a.coarseTune,a.startAddrsOffset,a.startAddrsCoarseOffset,a.endAddrOffset,a.endAddrsCoarseOffset,a.startloopAddrsOffset,a.startloopAddrsCoarseOffset,a.endloopAddrsOffset,a.endloopAddrsCoarseOffset,a.overridingRootKey,a.exclusiveClass]);function yn(e){for(let o=0;o<e.generators.length;o++){let r=e.generators[o];(r.generatorType===a.delayVolEnv||r.generatorType===a.attackVolEnv||r.generatorType===a.holdVolEnv||r.generatorType===a.decayVolEnv||r.generatorType===a.releaseVolEnv||r.generatorType===a.delayModEnv||r.generatorType===a.attackModEnv||r.generatorType===a.holdModEnv||r.generatorType===a.decayModEnv)&&(e.generators[o]=new U(r.generatorType,Math.min(r.generatorValue,6386),!1))}for(let o=0;o<e.generators.length;o++){let r=e.generators[o],g;switch(r.generatorType){default:continue;case a.keyNumToVolEnvDecay:g=a.decayVolEnv;break;case a.keyNumToVolEnvHold:g=a.holdVolEnv;break;case a.keyNumToModEnvDecay:g=a.decayModEnv;break;case a.keyNumToModEnvHold:g=a.holdModEnv}let i=e.generators.find(u=>u.generatorType===g);if(i===void 0)continue;let C=r.generatorValue*-128,B=60/128*C,h=i.generatorValue-B,c=e.generators.indexOf(r),l=e.generators.indexOf(i);e.generators[l]=new U(g,h,!1),e.generators[c]=new U(r.generatorType,C,!1)}let A=e.generators.reduce((o,r)=>{if(Ti.has(r.generatorType))return o;let g=Vo(r);return g!==void 0?(o.push(g),y("%cSucceeded converting to DLS Articulator!",I.recognized)):O("Failed converting to DLS Articulator!"),o},[]),t=e.modulators.reduce((o,r)=>{if(EA.isIdentical(r,un,!0)||EA.isIdentical(r,fn,!0)||EA.isIdentical(r,mn,!0)||EA.isIdentical(r,pn,!0))return o;let g=Zo(r);return g!==void 0?(o.push(g),y("%cSucceeded converting to DLS Articulator!",I.recognized)):O("Failed converting to DLS Articulator!"),o},[]);A.push(...t);let n=new b(8);eA(n,8),eA(n,A.length);let s=A.map(o=>o.writeArticulator());return z("art2",kA([n,...s]))}function Xo(e,A){let t=new b(12);J(t,Math.max(e.keyRange.min,0)),J(t,e.keyRange.max),J(t,Math.max(e.velRange.min,0)),J(t,e.velRange.max),J(t,0);let n=e.getGeneratorValue(a.exclusiveClass,0);J(t,n),J(t,0);let s=z("rgnh",t),o=e.getGeneratorValue(a.overridingRootKey,e.sample.samplePitch);e.getGeneratorValue(a.scaleTuning,A.getGeneratorValue(a.scaleTuning,100))===0&&e.keyRange.max-e.keyRange.min===0&&(o=e.keyRange.min);let g=dn(e.sample,o,e.getGeneratorValue(a.fineTune,0)+e.getGeneratorValue(a.coarseTune,0)*100+e.sample.samplePitchCorrection,e.getGeneratorValue(a.initialAttenuation,0),e.sample.sampleLoopStartIndex+e.getGeneratorValue(a.startloopAddrsOffset,0)+e.getGeneratorValue(a.startloopAddrsCoarseOffset,0)*32768,e.sample.sampleLoopEndIndex+e.getGeneratorValue(a.endloopAddrsOffset,0)+e.getGeneratorValue(a.endloopAddrsCoarseOffset,0)*32768,e.getGeneratorValue(a.sampleModes,0)),i=new b(12);J(i,0),J(i,0),eA(i,1),eA(i,this.samples.indexOf(e.sample));let C=z("wlnk",i),B=new b(0);if(e.modulators.length+e.generators.length>0){let h=yn(e);B=z("lar2",h,!1,!0)}return z("rgn2",kA([s,g,C,B]),!1,!0)}function Wo(e){QA(`%cWriting %c${e.presetName}%c...`,I.info,I.recognized,I.info);let{global:A,zones:t}=Oo(e),n=new b(12);eA(n,t.length);let s=(e.bank&127)<<8;e.bank===128&&(s|=1<<31),eA(n,s),eA(n,e.program&127);let o=z("insh",n),r=yn(A),g=z("lar2",r,!1,!0),i=kA(t.reduce((c,l)=>(c.push(Xo.apply(this,[l,A])),c),[])),C=z("lrgn",i,!1,!0),B=z("INAM",VA(e.presetName,!0)),h=z("INFO",B,!1,!0);return K(),z("ins ",kA([o,C,g,h]),!1,!0)}function _o(){let e=kA(this.presets.map(A=>Wo.apply(this,[A])));return z("lins",e,!1,!0)}function zo(e){let A=new b(18);J(A,1),J(A,1),eA(A,e.sampleRate),eA(A,e.sampleRate*2),J(A,2),J(A,16);let t=z("fmt ",A),n=1;e.sampleLoopStartIndex+Math.abs(e.getAudioData().length-e.sampleLoopEndIndex)<2&&(n=0);let s=dn(e,e.samplePitch,e.samplePitchCorrection,0,e.sampleLoopStartIndex,e.sampleLoopEndIndex,n),o=e.getAudioData(),r;if(e.isCompressed){let C=new Int16Array(o.length);for(let B=0;B<o.length;B++)C[B]=o[B]*32767;r=z("data",new b(C.buffer))}else r=z("data",e.getRawData());let g=z("INAM",VA(e.sampleName,!0)),i=z("INFO",g,!1,!0);return y(`%cSaved %c${e.sampleName}%c succesfully!`,I.recognized,I.value,I.recognized),z("wave",kA([t,s,r,i]),!1,!0)}function jo(){let e=0,A=[],t=this.samples.map(n=>{let s=zo(n);return A.push(e),e+=s.length,s});return{data:z("wvpl",kA(t),!1,!0),indexes:A}}function $o(){QA("%cSaving DLS...",I.info);let e=new b(4);eA(e,this.presets.length);let A=z("colh",e);QA("%cWriting instruments...",I.info);let t=_o.apply(this);y("%cSuccess!",I.recognized),K(),QA("%cWriting WAVE samples...",I.info);let n=jo.apply(this),s=n.data,o=n.indexes;y("%cSucceeded!",I.recognized),K();let r=new b(8+4*o.length);eA(r,8),eA(r,o.length);for(let h of o)eA(r,h);let g=z("ptbl",r);this.soundFontInfo.ICMT=(this.soundFontInfo.ICMT||"Soundfont")+`
11
+ Converted from SF2 to DLS using SpessaSynth`,this.soundFontInfo.ISFT="SpessaSynth";let i=[];for(let[h,c]of Object.entries(this.soundFontInfo))h!=="ICMT"&&h!=="INAM"&&h!=="ICRD"&&h!=="IENG"&&h!=="ICOP"&&h!=="ISFT"&&h!=="ISBJ"||i.push(z(h,VA(c,!0),!0));let C=z("INFO",kA(i),!1,!0),B=new b(A.length+t.length+g.length+s.length+C.length+4);return bA(B,"DLS "),B.set(kA([A,t,g,s,C]),4),y("%cSaved succesfully!",I.recognized),K(),z("RIFF",B)}var Ui=48e3,xe=class{sampleName;sampleRate;samplePitch;samplePitchCorrection;sampleLink;sampleType;sampleLoopStartIndex;sampleLoopEndIndex;isCompressed;compressedData=void 0;useCount=0;sampleData=void 0;constructor(A,t,n,s,o,r,g,i){this.sampleName=A,this.sampleRate=t,this.samplePitch=n,this.samplePitchCorrection=s,this.sampleLink=o,this.sampleType=r,this.sampleLoopStartIndex=g,this.sampleLoopEndIndex=i,this.isCompressed=(r&16)>0}getRawData(){let A=new Uint8Array(this.sampleData.length*2);for(let t=0;t<this.sampleData.length;t++){let n=Math.floor(this.sampleData[t]*32768);A[t*2]=n&255,A[t*2+1]=n>>8&255}return A}resampleData(A){let t=this.getAudioData(),n=A/this.sampleRate,s=new Float32Array(Math.floor(t.length*n));for(let o=0;o<s.length;o++)s[o]=t[Math.floor(o*(1/n))];t=s,this.sampleRate=A,this.sampleLoopStartIndex=Math.floor(this.sampleLoopStartIndex*n),this.sampleLoopEndIndex=Math.floor(this.sampleLoopEndIndex*n),this.sampleData=t}compressSample(A,t){if(!this.isCompressed)try{let n=this.getAudioData();(this.sampleRate<8e3||this.sampleRate>96e3)&&(this.resampleData(Ui),n=this.getAudioData()),this.compressedData=t([n],1,this.sampleRate,A),this.sampleType|=16,this.isCompressed=!0}catch{O(`Failed to compress ${this.sampleName}. Leaving as uncompressed!`),this.isCompressed=!1,this.compressedData=void 0,this.sampleType&=239}}getAudioData(){return this.sampleData}};var Ne=class extends Ze{instrument;deleteZone(){this.instrument.removeUseCount()}setInstrument(A){this.instrument=A,this.instrument.addUseCount()}hasInstrument(){return!!this.instrument}};var be=class{instrumentName="";instrumentZones=[];globalZone=new De;_useCount=0;get useCount(){return this._useCount}addZones(...A){A.forEach(t=>t.useCount++),this.instrumentZones.push(...A)}addUseCount(){this._useCount++,this.instrumentZones.forEach(A=>A.useCount++)}removeUseCount(){this._useCount--,this.instrumentZones.forEach(A=>A.useCount--)}deleteZones(){this.instrumentZones.forEach(A=>A.deleteZone()),this.instrumentZones.length=0}deleteZone(A){let t=this.instrumentZones[A];return t.useCount<1?(t.deleteZone(),this.instrumentZones.splice(A,1),!0):!1}};var Le=class{parentSoundBank;presetName="";program=0;bank=0;presetZones=[];globalZone=new De;library=0;genre=0;morphology=0;constructor(A){this.parentSoundBank=A}addZones(...A){this.presetZones.push(...A)}isDrumPreset(A,t=!1){let n=A&&this.parentSoundBank.isXGBank;return this.bank===128||n&&te(this.bank)&&(this.bank!==126||t)}deletePreset(){this.presetZones.forEach(A=>A.deleteZone()),this.presetZones.length=0}deleteZone(A){this.presetZones[A].deleteZone(),this.presetZones.splice(A,1)}preload(A,t){for(let n=A;n<t+1;n++)for(let s=0;s<128;s++)this.getSamplesAndGenerators(n,s).forEach(o=>{o.sample.isSampleLoaded||o.sample.getAudioData()})}getSamplesAndGenerators(A,t){if(this.presetZones.length<1)return[];function n(c,l){return l>=c.min&&l<=c.max}function s(c,l){c.push(...l.filter(u=>!c.find(f=>f.generatorType===u.generatorType)))}function o(c,l){c.push(...l.filter(u=>!c.find(f=>EA.isIdentical(u,f))))}let r=[],g=[...this.globalZone.generators],i=[...this.globalZone.modulators],C=this.globalZone.keyRange,B=this.globalZone.velRange;return this.presetZones.filter(c=>n(c.hasKeyRange?c.keyRange:C,A)&&n(c.hasVelRange?c.velRange:B,t)).forEach(c=>{let l=c.instrument;if(l.instrumentZones.length<1)return;let u=c.generators,f=c.modulators,S=[...l.globalZone.generators],G=[...l.globalZone.modulators],D=l.globalZone.keyRange,M=l.globalZone.velRange;l.instrumentZones.filter(R=>n(R.hasKeyRange?R.keyRange:D,A)&&n(R.hasVelRange?R.velRange:M,t)).forEach(R=>{let E=[...R.generators],x=[...R.modulators];s(u,g),s(E,S),o(f,i),o(x,G),o(x,this.parentSoundBank.defaultModulators);let L=[...x];for(let sA=0;sA<f.length;sA++){let $=f[sA],Y=L.findIndex(aA=>EA.isIdentical($,aA));Y!==-1?L[Y]=L[Y].sumTransform($):L.push($)}r.push({instrumentGenerators:E,presetGenerators:u,modulators:L,sample:R.sample})})}),r}};var Te=class e{soundFontInfo={};presets=[];samples=[];instruments=[];defaultModulators=no.map(A=>EA.copy(A));customDefaultModulators=!1;isXGBank=!1;constructor(A=void 0){if(A?.presets){this.soundFontInfo=A.info,this.addPresets(...A.presets);let t=[];for(let s of A.presets)for(let o of s.presetZones)t.includes(o.instrument)||t.push(o.instrument);this.addInstruments(...t);let n=[];for(let s of t)for(let o of s.instrumentZones)n.includes(o.sample)||n.push(o.sample);this.addSamples(...n)}}static mergeSoundBanks(...A){let t=A.shift(),n=t.presets;for(;A.length;)A.shift().presets.forEach(o=>{n.find(r=>r.bank===o.bank&&r.program===o.program)===void 0&&n.push(o)});return new e({presets:n,info:t.soundFontInfo})}static getDummySoundfontFile(){let A=new e,t=new xe("Saw",44100,65,20,0,0,0,127);t.sampleData=new Float32Array(128);for(let C=0;C<128;C++)t.sampleData[C]=C/128*2-1;A.addSamples(t);let n=new De;n.addGenerators(new U(a.initialAttenuation,375),new U(a.releaseVolEnv,-1e3),new U(a.sampleModes,1));let s=new Ee;s.setSample(t);let o=new Ee;o.setSample(t),o.addGenerators(new U(a.fineTune,-9));let r=new be;r.instrumentName="Saw Wave",r.globalZone=n,r.addZones(s,o),A.addInstruments(r);let g=new Ne;g.setInstrument(r);let i=new Le(A);return i.presetName="Saw Wave",i.addZones(g),A.addPresets(i),A.soundFontInfo.ifil="2.1",A.soundFontInfo.isng="EMU8000",A.soundFontInfo.INAM="Dummy",A.flush(),A.write().buffer}addPresets(...A){this.presets.push(...A)}flush(){this.presets.sort((A,t)=>A.program-t.program+(A.bank-t.bank)),this._parseInternal()}addInstruments(...A){this.instruments.push(...A)}addSamples(...A){this.samples.push(...A)}_parseInternal(){this.isXGBank=!1;let A=new Set([0,1,2,3,4,5,6,7,8,9,16,17,24,25,27,28,29,30,31,32,33,40,41,48,56,57,58,64,65,66,126,127]);for(let t of this.presets)if(te(t.bank)&&(this.isXGBank=!0,!A.has(t.program))){this.isXGBank=!1,y(`%cThis bank is not valid XG. Preset %c${t.bank}:${t.program}%c is not a valid XG drum. XG mode will use presets on bank 128.`,I.info,I.value,I.info);break}}trimSoundBank(A){let t=this;function n(o,r){let g=0;for(let i=0;i<o.instrumentZones.length;i++){let C=o.instrumentZones[i],B=C.keyRange,h=C.velRange,c=!1;for(let l of r)if(l.key>=B.min&&l.key<=B.max&&l.velocity>=h.min&&l.velocity<=h.max){c=!0;break}c||(y(`%c${C.sample.sampleName} %cremoved from %c${o.instrumentName}%c.`,I.recognized,I.info,I.recognized,I.info),o.deleteZone(i)&&(g++,i--,y(`%c${C.sample.sampleName} %cdeleted`,I.recognized,I.info)),C.sample.useCount<1&&t.deleteSample(C.sample))}return g}Ie("%cTrimming soundfont...",I.info);let s=A.getUsedProgramsAndKeys(t);QA("%cModifying soundfont...",I.info),y("Detected keys for midi:",s);for(let o=0;o<t.presets.length;o++){let r=t.presets[o],g=r.bank+":"+r.program,i=s[g];if(i===void 0)y(`%cDeleting preset %c${r.presetName}%c and its zones`,I.info,I.recognized,I.info),t.deletePreset(r),t.removeUnusedElements(),o--;else{let C=[...i].map(h=>{let c=h.split("-");return{key:parseInt(c[0]),velocity:parseInt(c[1])}});QA(`%cTrimming %c${r.presetName}`,I.info,I.recognized),y(`Keys for ${r.presetName}:`,C);let B=0;for(let h=0;h<r.presetZones.length;h++){let c=r.presetZones[h],l=c.keyRange,u=c.velRange,f=!1;for(let S of C)if(S.key>=l.min&&S.key<=l.max&&S.velocity>=u.min&&S.velocity<=u.max){f=!0;let G=n(c.instrument,C);y(`%cTrimmed off %c${G}%c zones from %c${c.instrument.instrumentName}`,I.info,I.recognized,I.info,I.recognized);break}f||(B++,r.deleteZone(h),c.instrument.useCount<1&&t.deleteInstrument(c.instrument),h--)}y(`%cTrimmed off %c${B}%c zones from %c${r.presetName}`,I.info,I.recognized,I.info,I.recognized),K()}}t.removeUnusedElements(),t.soundFontInfo.ICMT=`NOTE: This soundfont was trimmed by SpessaSynth to only contain presets used in "${A.midiName}"
12
12
 
13
- `+t.soundFontInfo.ICMT,y("%cSoundfont modified!",I.recognized),P(),P()}removeUnusedElements(){this.instruments.forEach(A=>{A.useCount<1&&A.deleteZones()}),this.instruments=this.instruments.filter(A=>A.useCount>0),this.samples=this.samples.filter(A=>A.useCount>0)}deleteInstrument(A){if(A.useCount>0)throw new Error(`Cannot delete an instrument that has ${A.useCount} usages.`);this.instruments.splice(this.instruments.indexOf(A),1),A.deleteZones()}deletePreset(A){A.deletePreset(),this.presets.splice(this.presets.indexOf(A),1)}deleteSample(A){if(A.useCount>0)throw new Error(`Cannot delete sample that has ${A.useCount} usages.`);this.samples.splice(this.samples.indexOf(A),1)}getPresetNoFallback(A,t,n=!1){let s=A===128||n&&ee(A),o;if(s?o=this.presets.find(r=>r.bank===A&&r.isDrumPreset(n)&&r.program===t):o=this.presets.find(r=>r.bank===A&&r.program===t),o)return o;if(s&&n){let r=this.presets.find(g=>g.isDrumPreset(n)&&g.program===t);if(r)return r}}getPreset(A,t,n=!1){let s=A===128||n&&ee(A),o;return s?o=this.presets.find(r=>r.bank===A&&r.isDrumPreset(n)&&r.program===t):o=this.presets.find(r=>r.bank===A&&r.program===t),o||(s?(o=this.presets.find(r=>r.isDrumPreset(n)&&r.program===t),o||(o=this.presets.find(r=>r.isDrumPreset(n)))):o=this.presets.find(r=>r.program===t&&!r.isDrumPreset(n)),o&&O(`%cPreset ${A}.${t} not found. Replaced with %c${o.presetName} (${o.bank}.${o.program})`,I.warn,I.recognized),o||(O(`Preset ${t} not found. Defaulting to`,this.presets[0].presetName),o=this.presets[0]),o)}getPresetByName(A){let t=this.presets.find(n=>n.presetName===A);return t||(O("Preset not found. Defaulting to:",this.presets[0].presetName),t=this.presets[0]),t}parsingError(A){throw new Error(`SF parsing error: ${A} The file may be corrupted.`)}destroySoundBank(){delete this.presets,delete this.instruments,delete this.samples}};Le.prototype.write=vo;Le.prototype.writeDLS=zo;function jo(e){QA("%cLoading instruments...",I.info);for(let A=0;A<this.instrumentAmount;A++)this.readDLSInstrument(IA(e.chunkData));P()}var yn=class extends be{constructor(A,t,n){super(A),this.program=n&127;let s=t>>8&127,o=t&127;s>0?this.bank=s:this.bank=o,t>>31&&(this.bank=128),this.DLSInstrument=new Ne;let g=new xe;g.setInstrument(this.DLSInstrument),this.presetZones=[g]}};function $o(e){this.verifyHeader(e,"LIST"),this.verifyText(AA(e.chunkData,4),"ins ");let A=[];for(;e.chunkData.length>e.chunkData.currentIndex;)A.push(IA(e.chunkData));let t=A.find(l=>l.header==="insh");if(!t)throw P(),new Error("No instrument header!");let n=N(t.chunkData,4),s=N(t.chunkData,4),o=N(t.chunkData,4),r=new yn(this,s,o),g="unnamedPreset",i=WA(A,"INFO");if(i){let l=IA(i.chunkData);for(;l.header!=="INAM";)l=IA(i.chunkData);g=AA(l.chunkData,l.chunkData.length).trim()}r.presetName=g,r.DLSInstrument.instrumentName=g,QA(`%cParsing %c"${g}"%c...`,I.info,I.recognized,I.info);let C=WA(A,"lrgn");if(!C)throw P(),new Error("No region list!");let B=r.DLSInstrument.globalZone,h=WA(A,"lart"),c=WA(A,"lar2");(c!==void 0||h!==void 0)&&this.readLart(h,c,B),B.generators=B.generators.filter(l=>l.generatorValue!==q[l.generatorType].def),B.modulators.find(l=>l.modulatorDestination===a.reverbEffectsSend)===void 0&&B.modulators.push(EA.copy(dn)),B.modulators.find(l=>l.modulatorDestination===a.chorusEffectsSend)===void 0&&B.modulators.push(EA.copy(fn));for(let l=0;l<n;l++){let u=IA(C.chunkData);this.verifyHeader(u,"LIST");let f=AA(u.chunkData,4);f!=="rgn "&&f!=="rgn2"&&(P(),this.parsingError(`Invalid DLS region! Expected "rgn " or "rgn2" got "${f}"`));let S=this.readRegion(u);S&&r.DLSInstrument.addZone(S)}this.presets.push(r),this.instruments.push(r.DLSInstrument),P()}function Ar(e){let A,t=!1;switch(e){default:case V.modLfo:case V.vibratoLfo:case V.coarseTune:case V.fineTune:case V.modEnv:return;case V.keyNum:A=X.noteOnKeyNum;break;case V.none:A=X.noController;break;case V.modulationWheel:A=p.modulationWheel,t=!0;break;case V.pan:A=p.pan,t=!0;break;case V.reverb:A=p.reverbDepth,t=!0;break;case V.chorus:A=p.chorusDepth,t=!0;break;case V.expression:A=p.expressionController,t=!0;break;case V.volume:A=p.mainVolume,t=!0;break;case V.velocity:A=X.noteOnVelocity;break;case V.polyPressure:A=X.polyPressure;break;case V.channelPressure:A=X.channelPressure;break;case V.pitchWheel:A=X.pitchWheel;break;case V.pitchWheelRange:A=X.pitchWheelRange;break}if(A===void 0)throw new Error(`Unknown DLS Source: ${e}`);return{enum:A,isCC:t}}function vi(e,A){switch(e){default:case w.none:return;case w.pan:return a.pan;case w.gain:return{gen:a.initialAttenuation,newAmount:A*-1};case w.pitch:return a.fineTune;case w.keyNum:return a.overridingRootKey;case w.volEnvDelay:return a.delayVolEnv;case w.volEnvAttack:return a.attackVolEnv;case w.volEnvHold:return a.holdVolEnv;case w.volEnvDecay:return a.decayVolEnv;case w.volEnvSustain:return{gen:a.sustainVolEnv,newAmount:1e3-A};case w.volEnvRelease:return a.releaseVolEnv;case w.modEnvDelay:return a.delayModEnv;case w.modEnvAttack:return a.attackModEnv;case w.modEnvHold:return a.holdModEnv;case w.modEnvDecay:return a.decayModEnv;case w.modEnvSustain:return{gen:a.sustainModEnv,newAmount:(1e3-A)/10};case w.modEnvRelease:return a.releaseModEnv;case w.filterCutoff:return a.initialFilterFc;case w.filterQ:return a.initialFilterQ;case w.chorusSend:return a.chorusEffectsSend;case w.reverbSend:return a.reverbEffectsSend;case w.modLfoFreq:return a.freqModLFO;case w.modLfoDelay:return a.delayModLFO;case w.vibLfoFreq:return a.freqVibLFO;case w.vibLfoDelay:return a.delayVibLFO}}function Hi(e,A){return e===V.vibratoLfo&&A===w.pitch?a.vibLfoToPitch:e===V.modLfo&&A===w.pitch?a.modLfoToPitch:e===V.modLfo&&A===w.filterCutoff?a.modLfoToFilterFc:e===V.modLfo&&A===w.gain?a.modLfoToVolume:e===V.modEnv&&A===w.filterCutoff?a.modEnvToFilterFc:e===V.modEnv&&A===w.pitch?a.modEnvToPitch:void 0}function er(e,A,t,n,s){let o=Hi(e,t),r,g,i=!1,C=!1,B=s;if(o===void 0){let G=vi(t,s);if(G===void 0){O(`Invalid destination: ${t}`);return}if(r=G,G.newAmount!==void 0&&(B=G.newAmount,r=G.gen),g=Ar(e),g===void 0){O(`Invalid source: ${e}`);return}}else r=o,i=!0,g={enum:X.noController,isCC:!1},C=!0;let h=Ar(A);if(h===void 0){O(`Invalid control: ${A}`);return}let c;if(C)c=0;else{let G=n&15,D=n>>10&15;D===DA.linear&&G!==DA.linear&&(D=G);let M=n>>14&1,U=n>>15&1;r===a.initialAttenuation&&s<0&&(U=1),c=XA(D,M,U,g.isCC,g.enum)}r===a.initialAttenuation&&(B=Math.max(960,Math.min(0,B)));let l=n>>4&15,u=n>>8&1,f=n>>9&1,S=XA(l,u,f,h.isCC,h.enum);if(i){let G=S;S=c,c=G}return new mA(c,S,r,B,0)}function ls(e,A){let t=e.chunkData,n=[],s=[];N(t,4);let o=N(t,4);for(let r=0;r<o;r++){let g=N(t,2),i=N(t,2),C=N(t,2),B=N(t,2),c=(N(t,4)|0)>>16;if(g===0&&i===0&&B===0){let l;switch(C){case w.pan:l=new v(a.pan,c);break;case w.gain:l=new v(a.initialAttenuation,-c*10/.4);break;case w.filterCutoff:l=new v(a.initialFilterFc,c);break;case w.filterQ:l=new v(a.initialFilterQ,c);break;case w.modLfoFreq:l=new v(a.freqModLFO,c);break;case w.modLfoDelay:l=new v(a.delayModLFO,c);break;case w.vibLfoFreq:l=new v(a.freqVibLFO,c);break;case w.vibLfoDelay:l=new v(a.delayVibLFO,c);break;case w.volEnvDelay:l=new v(a.delayVolEnv,c);break;case w.volEnvAttack:l=new v(a.attackVolEnv,c);break;case w.volEnvHold:l=new v(a.holdVolEnv,c,!1);break;case w.volEnvDecay:l=new v(a.decayVolEnv,c,!1);break;case w.volEnvRelease:l=new v(a.releaseVolEnv,c);break;case w.volEnvSustain:let u=1e3-c;l=new v(a.sustainVolEnv,u);break;case w.modEnvDelay:l=new v(a.delayModEnv,c);break;case w.modEnvAttack:l=new v(a.attackModEnv,c);break;case w.modEnvHold:l=new v(a.holdModEnv,c,!1);break;case w.modEnvDecay:l=new v(a.decayModEnv,c,!1);break;case w.modEnvRelease:l=new v(a.releaseModEnv,c);break;case w.modEnvSustain:let f=1e3-c;l=new v(a.sustainModEnv,f);break;case w.reverbSend:l=new v(a.reverbEffectsSend,c);break;case w.chorusSend:l=new v(a.chorusEffectsSend,c);break;case w.pitch:let S=Math.floor(c/100),G=Math.floor(c-S*100);l=new v(a.fineTune,G),n.push(new v(a.coarseTune,S));break}l&&n.push(l)}else{let l=!0,u=(f,S,G)=>{let D=f/-128;if(n.push(new v(S,D)),D<=120){let M=Math.round(.46875*f);n.forEach(U=>{U.generatorType===G&&(U.generatorValue+=M)})}};if(i===V.none?g===V.modLfo&&C===w.pitch?n.push(new v(a.modLfoToPitch,c)):g===V.modLfo&&C===w.gain?n.push(new v(a.modLfoToVolume,c)):g===V.modLfo&&C===w.filterCutoff?n.push(new v(a.modLfoToFilterFc,c)):g===V.vibratoLfo&&C===w.pitch?n.push(new v(a.vibLfoToPitch,c)):g===V.modEnv&&C===w.pitch?n.push(new v(a.modEnvToPitch,c)):g===V.modEnv&&C===w.filterCutoff?n.push(new v(a.modEnvToFilterFc,c)):g===V.keyNum&&C===w.pitch?n.push(new v(a.scaleTuning,c/128)):g===V.keyNum&&C===w.volEnvHold?u(c,a.keyNumToVolEnvHold,a.holdVolEnv):g===V.keyNum&&C===w.volEnvDecay?u(c,a.keyNumToVolEnvDecay,a.decayVolEnv):g===V.keyNum&&C===w.modEnvHold?u(c,a.keyNumToModEnvHold,a.holdModEnv):g===V.keyNum&&C===w.modEnvDecay?u(c,a.keyNumToModEnvDecay,a.decayModEnv):l=!1:l=!1,l===!1){let f=er(g,i,C,B,c);f?(s.push(f),y("%cSucceeded converting to SF2 Modulator!",I.recognized)):O("Failed converting to SF2 Modulator!")}}}return A&&s.push(EA.copy(un),EA.copy(mn)),{modulators:s,generators:n}}function tr(e,A,t){if(e)for(;e.chunkData.currentIndex<e.chunkData.length;){let n=IA(e.chunkData);this.verifyHeader(n,"art1","art2");let s=ls(n,!0);t.generators.push(...s.generators),t.modulators.push(...s.modulators)}if(A)for(;A.chunkData.currentIndex<A.chunkData.length;){let n=IA(A.chunkData);this.verifyHeader(n,"art2","art1");let s=ls(n,!1);t.generators.push(...s.generators),t.modulators.push(...s.modulators)}}var Sn=class extends Ce{constructor(A,t){super(),this.keyRange=A,this.velRange=t}setWavesample(A,t,n,s,o,r,g){t!==0&&this.generators.push(new v(a.sampleModes,t)),this.generators.push(new v(a.initialAttenuation,A)),this.isGlobal=!1,g-=o.samplePitchCorrection;let i=Math.trunc(g/100);i!==0&&this.generators.push(new v(a.coarseTune,i));let C=g-i*100;if(C!==0&&this.generators.push(new v(a.fineTune,C)),t!==0){let B=n.start-o.sampleLoopStartIndex,h=n.end-o.sampleLoopEndIndex;if(B!==0){let c=B%32768;this.generators.push(new v(a.startloopAddrsOffset,c));let l=Math.trunc(B/32768);l!==0&&this.generators.push(new v(a.startloopAddrsCoarseOffset,l))}if(h!==0){let c=h%32768;this.generators.push(new v(a.endloopAddrsOffset,c));let l=Math.trunc(h/32768);l!==0&&this.generators.push(new v(a.endloopAddrsCoarseOffset,l))}}s!==o.samplePitch&&this.generators.push(new v(a.overridingRootKey,s)),this.generators.push(new v(a.sampleID,r)),this.setSample(o)}};function nr(e){let A=[];for(;e.chunkData.length>e.chunkData.currentIndex;)A.push(IA(e.chunkData));let t=A.find(L=>L.header==="rgnh"),n=N(t.chunkData,2),s=N(t.chunkData,2),o=N(t.chunkData,2),r=N(t.chunkData,2);o===0&&r===0&&(r=127,o=0);let g=new Sn({min:n,max:s},{min:o,max:r});N(t.chunkData,2);let i=N(t.chunkData,2);i!==0&&g.generators.push(new v(a.exclusiveClass,i));let C=WA(A,"lart"),B=WA(A,"lar2");this.readLart(C,B,g),g.isGlobal=!1;let h=A.find(L=>L.header==="wsmp");N(h.chunkData,4);let c=N(h.chunkData,2),l=qe(h.chunkData[h.chunkData.currentIndex++],h.chunkData[h.chunkData.currentIndex++]),f=(N(h.chunkData,4)|0)/-655360;N(h.chunkData,4);let S=N(h.chunkData,4),G,D={start:0,end:0};if(S===0)G=0;else{N(h.chunkData,4),N(h.chunkData,4)===0?G=1:G=3,D.start=N(h.chunkData,4);let sA=N(h.chunkData,4);D.end=D.start+sA}let M=A.find(L=>L.header==="wlnk");if(M===void 0)return;N(M.chunkData,2),N(M.chunkData,2),N(M.chunkData,4);let U=N(M.chunkData,4),R=this.samples[U];if(R===void 0)throw new Error("Invalid sample ID!");let x=(f||R.sampleDbAttenuation)*10/.4;return g.setWavesample(x,G,D,c,R,U,l),g}var Dn=class extends Me{sampleDbAttenuation;sampleData;constructor(A,t,n,s,o,r,g,i){super(A,t,n,s,0,1,o,r),this.sampleData=g,this.sampleDbAttenuation=i}getAudioData(){return this.sampleData}getRawData(){if(this.isCompressed){if(!this.compressedData)throw new Error("Compressed but no data?? This shouldn't happen!!");return this.compressedData}return super.getRawData()}};var sr={PCM:1,ALAW:6};function Yi(e,A){let t=Math.pow(2,A*8-1),n=Math.pow(2,A*8),s,o=!1;A===1?(s=255,o=!0):s=t;let r=e.size/A,g=new Float32Array(r);for(let i=0;i<g.length;i++){let C=N(e.chunkData,A);o?g[i]=C/s-.5:(C>=t&&(C-=n),g[i]=C/s)}return g}function Oi(e,A){let t=e.size/A,n=new Float32Array(t);for(let s=0;s<n.length;s++){let o=N(e.chunkData,A),r=o^85;r&=127;let g=r>>4,i=r&15;g>0&&(i+=16),i=(i<<4)+8,g>1&&(i=i<<g-1);let C=o>127?i:-i;n[s]=C/32678}return n}function or(e){QA("%cLoading Wave samples...",I.recognized);let A=0;for(;e.chunkData.currentIndex<e.chunkData.length;){let t=IA(e.chunkData);this.verifyHeader(t,"LIST"),this.verifyText(AA(t.chunkData,4),"wave");let n=[];for(;t.chunkData.currentIndex<t.chunkData.length;)n.push(IA(t.chunkData));let s=n.find(R=>R.header==="fmt ");if(!s)throw new Error("No fmt chunk in the wave file!");let o=N(s.chunkData,2),r=N(s.chunkData,2);if(r!==1)throw new Error(`Only mono samples are supported. Fmt reports ${r} channels`);let g=N(s.chunkData,4);N(s.chunkData,4),N(s.chunkData,2);let C=N(s.chunkData,2)/8,B=!1,h=n.find(R=>R.header==="data");h||this.parsingError("No data chunk in the WAVE chunk!");let c;switch(o){default:B=!0,c=new Float32Array(h.size/C);break;case sr.PCM:c=Yi(h,C);break;case sr.ALAW:c=Oi(h,C);break}let l=WA(n,"INFO"),u=`Unnamed ${A}`;if(l){let R=IA(l.chunkData);for(;R.header!=="INAM"&&l.chunkData.currentIndex<l.chunkData.length;)R=IA(l.chunkData);R.header==="INAM"&&(u=AA(R.chunkData,R.size).trim())}let f=60,S=0,G=0,D=c.length-1,M=0,U=n.find(R=>R.header==="wsmp");if(U){N(U.chunkData,4),f=N(U.chunkData,2),S=qe(U.chunkData[U.chunkData.currentIndex++],U.chunkData[U.chunkData.currentIndex++]);let R=Math.trunc(S/100);if(f+=R,S-=R*100,M=(N(U.chunkData,4)|0)/-655360,N(U.chunkData,4),N(U.chunkData,4)===1){N(U.chunkData,8),G=N(U.chunkData,4);let L=N(U.chunkData,4);D=G+L}}else O("No wsmp chunk in wave... using sane defaults.");B&&console.error(`Failed to load '${u}': Unsupported format: (${o})`),this.samples.push(new Dn(u,g,f,S,G,D,c,M)),A++,y(`%cLoaded sample %c${u}`,I.info,I.recognized)}P()}var Te=class extends Le{constructor(A){super(),this.dataArray=new b(A),ge("%cParsing DLS...",I.info),this.dataArray||(P(),this.parsingError("No data provided!"));let t=IA(this.dataArray,!1);this.verifyHeader(t,"riff"),this.verifyText(AA(this.dataArray,4).toLowerCase(),"dls ");let n=[];for(;this.dataArray.currentIndex<this.dataArray.length;)n.push(IA(this.dataArray));this.soundFontInfo.ifil="2.1",this.soundFontInfo.isng="EMU8000",this.soundFontInfo.INAM="Unnamed DLS",this.soundFontInfo.IENG="Unknown",this.soundFontInfo.IPRD="SpessaSynth DLS",this.soundFontInfo.ICRD=new Date().toDateString();let s=WA(n,"INFO");if(s)for(;s.chunkData.currentIndex<s.chunkData.length;){let i=IA(s.chunkData);this.soundFontInfo[i.header]=AA(i.chunkData,i.size)}this.soundFontInfo.ICMT=this.soundFontInfo.ICMT||"(No description)",this.soundFontInfo.ISBJ&&(this.soundFontInfo.ICMT+=`
13
+ `+t.soundFontInfo.ICMT,y("%cSoundfont modified!",I.recognized),K(),K()}removeUnusedElements(){this.instruments.forEach(A=>{A.useCount<1&&A.deleteZones()}),this.instruments=this.instruments.filter(A=>A.useCount>0),this.samples=this.samples.filter(A=>A.useCount>0)}deleteInstrument(A){if(A.useCount>0)throw new Error(`Cannot delete an instrument that has ${A.useCount} usages.`);this.instruments.splice(this.instruments.indexOf(A),1),A.deleteZones()}deletePreset(A){A.deletePreset(),this.presets.splice(this.presets.indexOf(A),1)}deleteSample(A){if(A.useCount>0)throw new Error(`Cannot delete sample that has ${A.useCount} usages.`);this.samples.splice(this.samples.indexOf(A),1)}getPresetNoFallback(A,t,n=!1){let s=A===128||n&&te(A),o;if(s?o=this.presets.find(r=>r.bank===A&&r.isDrumPreset(n)&&r.program===t):o=this.presets.find(r=>r.bank===A&&r.program===t),o)return o;if(s&&n){let r=this.presets.find(g=>g.isDrumPreset(n)&&g.program===t);if(r)return r}}getPreset(A,t,n=!1){let s=A===128||n&&te(A),o;return s?o=this.presets.find(r=>r.bank===A&&r.isDrumPreset(n)&&r.program===t):o=this.presets.find(r=>r.bank===A&&r.program===t),o||(s?(o=this.presets.find(r=>r.isDrumPreset(n)&&r.program===t),o||(o=this.presets.find(r=>r.isDrumPreset(n)))):o=this.presets.find(r=>r.program===t&&!r.isDrumPreset(n)),o&&O(`%cPreset ${A}.${t} not found. Replaced with %c${o.presetName} (${o.bank}.${o.program})`,I.warn,I.recognized),o||(O(`Preset ${t} not found. Defaulting to`,this.presets[0].presetName),o=this.presets[0]),o)}getPresetByName(A){let t=this.presets.find(n=>n.presetName===A);return t||(O("Preset not found. Defaulting to:",this.presets[0].presetName),t=this.presets[0]),t}parsingError(A){throw new Error(`SF parsing error: ${A} The file may be corrupted.`)}destroySoundBank(){delete this.presets,delete this.instruments,delete this.samples}};Te.prototype.write=Yo;Te.prototype.writeDLS=$o;function Ar(e){QA("%cLoading instruments...",I.info);for(let A=0;A<this.instrumentAmount;A++)this.readDLSInstrument(IA(e.chunkData));K()}var Sn=class extends Le{constructor(A,t,n){super(A),this.program=n&127;let s=t>>8&127,o=t&127;s>0?this.bank=s:this.bank=o,t>>31&&(this.bank=128),this.DLSInstrument=new be;let g=new Ne;g.setInstrument(this.DLSInstrument),this.presetZones=[g]}};function er(e){this.verifyHeader(e,"LIST"),this.verifyText(AA(e.chunkData,4),"ins ");let A=[];for(;e.chunkData.length>e.chunkData.currentIndex;)A.push(IA(e.chunkData));let t=A.find(l=>l.header==="insh");if(!t)throw K(),new Error("No instrument header!");let n=N(t.chunkData,4),s=N(t.chunkData,4),o=N(t.chunkData,4),r=new Sn(this,s,o),g="unnamedPreset",i=_A(A,"INFO");if(i){let l=IA(i.chunkData);for(;l.header!=="INAM";)l=IA(i.chunkData);g=AA(l.chunkData,l.chunkData.length).trim()}r.presetName=g,r.DLSInstrument.instrumentName=g,QA(`%cParsing %c"${g}"%c...`,I.info,I.recognized,I.info);let C=_A(A,"lrgn");if(!C)throw K(),new Error("No region list!");let B=r.DLSInstrument.globalZone,h=_A(A,"lart"),c=_A(A,"lar2");(c!==void 0||h!==void 0)&&this.readLart(h,c,B),B.generators=B.generators.filter(l=>l.generatorValue!==q[l.generatorType].def),B.modulators.find(l=>l.modulatorDestination===a.reverbEffectsSend)===void 0&&B.addModulators(EA.copy(fn)),B.modulators.find(l=>l.modulatorDestination===a.chorusEffectsSend)===void 0&&B.addModulators(EA.copy(un));for(let l=0;l<n;l++){let u=IA(C.chunkData);this.verifyHeader(u,"LIST");let f=AA(u.chunkData,4);f!=="rgn "&&f!=="rgn2"&&(K(),this.parsingError(`Invalid DLS region! Expected "rgn " or "rgn2" got "${f}"`));let S=this.readRegion(u);S&&r.DLSInstrument.addZones(S)}this.addPresets(r),this.addInstruments(r.DLSInstrument),K()}function tr(e){let A,t=!1;switch(e){default:case V.modLfo:case V.vibratoLfo:case V.coarseTune:case V.fineTune:case V.modEnv:return;case V.keyNum:A=X.noteOnKeyNum;break;case V.none:A=X.noController;break;case V.modulationWheel:A=p.modulationWheel,t=!0;break;case V.pan:A=p.pan,t=!0;break;case V.reverb:A=p.reverbDepth,t=!0;break;case V.chorus:A=p.chorusDepth,t=!0;break;case V.expression:A=p.expressionController,t=!0;break;case V.volume:A=p.mainVolume,t=!0;break;case V.velocity:A=X.noteOnVelocity;break;case V.polyPressure:A=X.polyPressure;break;case V.channelPressure:A=X.channelPressure;break;case V.pitchWheel:A=X.pitchWheel;break;case V.pitchWheelRange:A=X.pitchWheelRange;break}if(A===void 0)throw new Error(`Unknown DLS Source: ${e}`);return{enum:A,isCC:t}}function vi(e,A){switch(e){default:case w.none:return;case w.pan:return a.pan;case w.gain:return{gen:a.initialAttenuation,newAmount:A*-1};case w.pitch:return a.fineTune;case w.keyNum:return a.overridingRootKey;case w.volEnvDelay:return a.delayVolEnv;case w.volEnvAttack:return a.attackVolEnv;case w.volEnvHold:return a.holdVolEnv;case w.volEnvDecay:return a.decayVolEnv;case w.volEnvSustain:return{gen:a.sustainVolEnv,newAmount:1e3-A};case w.volEnvRelease:return a.releaseVolEnv;case w.modEnvDelay:return a.delayModEnv;case w.modEnvAttack:return a.attackModEnv;case w.modEnvHold:return a.holdModEnv;case w.modEnvDecay:return a.decayModEnv;case w.modEnvSustain:return{gen:a.sustainModEnv,newAmount:(1e3-A)/10};case w.modEnvRelease:return a.releaseModEnv;case w.filterCutoff:return a.initialFilterFc;case w.filterQ:return a.initialFilterQ;case w.chorusSend:return a.chorusEffectsSend;case w.reverbSend:return a.reverbEffectsSend;case w.modLfoFreq:return a.freqModLFO;case w.modLfoDelay:return a.delayModLFO;case w.vibLfoFreq:return a.freqVibLFO;case w.vibLfoDelay:return a.delayVibLFO}}function Hi(e,A){return e===V.vibratoLfo&&A===w.pitch?a.vibLfoToPitch:e===V.modLfo&&A===w.pitch?a.modLfoToPitch:e===V.modLfo&&A===w.filterCutoff?a.modLfoToFilterFc:e===V.modLfo&&A===w.gain?a.modLfoToVolume:e===V.modEnv&&A===w.filterCutoff?a.modEnvToFilterFc:e===V.modEnv&&A===w.pitch?a.modEnvToPitch:void 0}function nr(e,A,t,n,s){let o=Hi(e,t),r,g,i=!1,C=!1,B=s;if(o===void 0){let G=vi(t,s);if(G===void 0){O(`Invalid destination: ${t}`);return}if(r=G,G.newAmount!==void 0&&(B=G.newAmount,r=G.gen),g=tr(e),g===void 0){O(`Invalid source: ${e}`);return}}else r=o,i=!0,g={enum:X.noController,isCC:!1},C=!0;let h=tr(A);if(h===void 0){O(`Invalid control: ${A}`);return}let c;if(C)c=0;else{let G=n&15,D=n>>10&15;D===DA.linear&&G!==DA.linear&&(D=G);let M=n>>14&1,v=n>>15&1;r===a.initialAttenuation&&s<0&&(v=1),c=XA(D,M,v,g.isCC,g.enum)}r===a.initialAttenuation&&(B=Math.max(960,Math.min(0,B)));let l=n>>4&15,u=n>>8&1,f=n>>9&1,S=XA(l,u,f,h.isCC,h.enum);if(i){let G=S;S=c,c=G}return new mA(c,S,r,B,0)}function Bs(e,A){let t=e.chunkData,n=[],s=[];N(t,4);let o=N(t,4);for(let r=0;r<o;r++){let g=N(t,2),i=N(t,2),C=N(t,2),B=N(t,2),c=(N(t,4)|0)>>16;if(g===0&&i===0&&B===0){let l;switch(C){case w.pan:l=new U(a.pan,c);break;case w.gain:l=new U(a.initialAttenuation,-c*10/.4);break;case w.filterCutoff:l=new U(a.initialFilterFc,c);break;case w.filterQ:l=new U(a.initialFilterQ,c);break;case w.modLfoFreq:l=new U(a.freqModLFO,c);break;case w.modLfoDelay:l=new U(a.delayModLFO,c);break;case w.vibLfoFreq:l=new U(a.freqVibLFO,c);break;case w.vibLfoDelay:l=new U(a.delayVibLFO,c);break;case w.volEnvDelay:l=new U(a.delayVolEnv,c);break;case w.volEnvAttack:l=new U(a.attackVolEnv,c);break;case w.volEnvHold:l=new U(a.holdVolEnv,c,!1);break;case w.volEnvDecay:l=new U(a.decayVolEnv,c,!1);break;case w.volEnvRelease:l=new U(a.releaseVolEnv,c);break;case w.volEnvSustain:let u=1e3-c;l=new U(a.sustainVolEnv,u);break;case w.modEnvDelay:l=new U(a.delayModEnv,c);break;case w.modEnvAttack:l=new U(a.attackModEnv,c);break;case w.modEnvHold:l=new U(a.holdModEnv,c,!1);break;case w.modEnvDecay:l=new U(a.decayModEnv,c,!1);break;case w.modEnvRelease:l=new U(a.releaseModEnv,c);break;case w.modEnvSustain:let f=1e3-c;l=new U(a.sustainModEnv,f);break;case w.reverbSend:l=new U(a.reverbEffectsSend,c);break;case w.chorusSend:l=new U(a.chorusEffectsSend,c);break;case w.pitch:let S=Math.floor(c/100),G=Math.floor(c-S*100);l=new U(a.fineTune,G),n.push(new U(a.coarseTune,S));break}l&&n.push(l)}else{let l=!0,u=(f,S,G)=>{let D=f/-128;if(n.push(new U(S,D)),D<=120){let M=Math.round(.46875*f);n.forEach(v=>{v.generatorType===G&&(v.generatorValue+=M)})}};if(i===V.none?g===V.modLfo&&C===w.pitch?n.push(new U(a.modLfoToPitch,c)):g===V.modLfo&&C===w.gain?n.push(new U(a.modLfoToVolume,c)):g===V.modLfo&&C===w.filterCutoff?n.push(new U(a.modLfoToFilterFc,c)):g===V.vibratoLfo&&C===w.pitch?n.push(new U(a.vibLfoToPitch,c)):g===V.modEnv&&C===w.pitch?n.push(new U(a.modEnvToPitch,c)):g===V.modEnv&&C===w.filterCutoff?n.push(new U(a.modEnvToFilterFc,c)):g===V.keyNum&&C===w.pitch?n.push(new U(a.scaleTuning,c/128)):g===V.keyNum&&C===w.volEnvHold?u(c,a.keyNumToVolEnvHold,a.holdVolEnv):g===V.keyNum&&C===w.volEnvDecay?u(c,a.keyNumToVolEnvDecay,a.decayVolEnv):g===V.keyNum&&C===w.modEnvHold?u(c,a.keyNumToModEnvHold,a.holdModEnv):g===V.keyNum&&C===w.modEnvDecay?u(c,a.keyNumToModEnvDecay,a.decayModEnv):l=!1:l=!1,l===!1){let f=nr(g,i,C,B,c);f?(s.push(f),y("%cSucceeded converting to SF2 Modulator!",I.recognized)):O("Failed converting to SF2 Modulator!")}}}return A&&s.push(EA.copy(mn),EA.copy(pn)),{modulators:s,generators:n}}function sr(e,A,t){if(e)for(;e.chunkData.currentIndex<e.chunkData.length;){let n=IA(e.chunkData);this.verifyHeader(n,"art1","art2");let s=Bs(n,!0);t.addGenerators(...s.generators),t.addModulators(...s.modulators)}if(A)for(;A.chunkData.currentIndex<A.chunkData.length;){let n=IA(A.chunkData);this.verifyHeader(n,"art2","art1");let s=Bs(n,!1);t.addGenerators(...s.generators),t.addModulators(...s.modulators)}}var Dn=class extends Ee{constructor(A,t){super(),this.keyRange=A,this.velRange=t}setWavesample(A,t,n,s,o,r,g){t!==0&&this.addGenerators(new U(a.sampleModes,t)),this.addGenerators(new U(a.initialAttenuation,A)),g-=o.samplePitchCorrection;let i=Math.trunc(g/100);i!==0&&this.addGenerators(new U(a.coarseTune,i));let C=g-i*100;if(C!==0&&this.addGenerators(new U(a.fineTune,C)),t!==0){let B=n.start-o.sampleLoopStartIndex,h=n.end-o.sampleLoopEndIndex;if(B!==0){let c=B%32768;this.addGenerators(new U(a.startloopAddrsOffset,c));let l=Math.trunc(B/32768);l!==0&&this.addGenerators(new U(a.startloopAddrsCoarseOffset,l))}if(h!==0){let c=h%32768;this.addGenerators(new U(a.endloopAddrsOffset,c));let l=Math.trunc(h/32768);l!==0&&this.addGenerators(new U(a.endloopAddrsCoarseOffset,l))}}s!==o.samplePitch&&this.addGenerators(new U(a.overridingRootKey,s)),this.setSample(o)}};function or(e){let A=[];for(;e.chunkData.length>e.chunkData.currentIndex;)A.push(IA(e.chunkData));let t=A.find(L=>L.header==="rgnh"),n=N(t.chunkData,2),s=N(t.chunkData,2),o=N(t.chunkData,2),r=N(t.chunkData,2);o===0&&r===0&&(r=127,o=0);let g=new Dn({min:n,max:s},{min:o,max:r});N(t.chunkData,2);let i=N(t.chunkData,2);i!==0&&g.addGenerators(new U(a.exclusiveClass,i));let C=_A(A,"lart"),B=_A(A,"lar2");this.readLart(C,B,g);let h=A.find(L=>L.header==="wsmp");N(h.chunkData,4);let c=N(h.chunkData,2),l=Ve(h.chunkData[h.chunkData.currentIndex++],h.chunkData[h.chunkData.currentIndex++]),f=(N(h.chunkData,4)|0)/-655360;N(h.chunkData,4);let S=N(h.chunkData,4),G,D={start:0,end:0};if(S===0)G=0;else{N(h.chunkData,4),N(h.chunkData,4)===0?G=1:G=3,D.start=N(h.chunkData,4);let sA=N(h.chunkData,4);D.end=D.start+sA}let M=A.find(L=>L.header==="wlnk");if(M===void 0)return;N(M.chunkData,2),N(M.chunkData,2),N(M.chunkData,4);let v=N(M.chunkData,4),R=this.samples[v];if(R===void 0)throw new Error("Invalid sample ID!");let x=(f||R.sampleDbAttenuation)*10/.4;return g.setWavesample(x,G,D,c,R,v,l),g}var kn=class extends xe{sampleDbAttenuation;sampleData;constructor(A,t,n,s,o,r,g,i){super(A,t,n,s,0,1,o,r),this.sampleData=g,this.sampleDbAttenuation=i}getAudioData(){return this.sampleData}getRawData(){if(this.isCompressed){if(!this.compressedData)throw new Error("Compressed but no data?? This shouldn't happen!!");return this.compressedData}return super.getRawData()}};var rr={PCM:1,ALAW:6};function Yi(e,A){let t=Math.pow(2,A*8-1),n=Math.pow(2,A*8),s,o=!1;A===1?(s=255,o=!0):s=t;let r=e.size/A,g=new Float32Array(r);for(let i=0;i<g.length;i++){let C=N(e.chunkData,A);o?g[i]=C/s-.5:(C>=t&&(C-=n),g[i]=C/s)}return g}function Oi(e,A){let t=e.size/A,n=new Float32Array(t);for(let s=0;s<n.length;s++){let o=N(e.chunkData,A),r=o^85;r&=127;let g=r>>4,i=r&15;g>0&&(i+=16),i=(i<<4)+8,g>1&&(i=i<<g-1);let C=o>127?i:-i;n[s]=C/32678}return n}function ir(e){QA("%cLoading Wave samples...",I.recognized);let A=0;for(;e.chunkData.currentIndex<e.chunkData.length;){let t=IA(e.chunkData);this.verifyHeader(t,"LIST"),this.verifyText(AA(t.chunkData,4),"wave");let n=[];for(;t.chunkData.currentIndex<t.chunkData.length;)n.push(IA(t.chunkData));let s=n.find(R=>R.header==="fmt ");if(!s)throw new Error("No fmt chunk in the wave file!");let o=N(s.chunkData,2),r=N(s.chunkData,2);if(r!==1)throw new Error(`Only mono samples are supported. Fmt reports ${r} channels`);let g=N(s.chunkData,4);N(s.chunkData,4),N(s.chunkData,2);let C=N(s.chunkData,2)/8,B=!1,h=n.find(R=>R.header==="data");h||this.parsingError("No data chunk in the WAVE chunk!");let c;switch(o){default:B=!0,c=new Float32Array(h.size/C);break;case rr.PCM:c=Yi(h,C);break;case rr.ALAW:c=Oi(h,C);break}let l=_A(n,"INFO"),u=`Unnamed ${A}`;if(l){let R=IA(l.chunkData);for(;R.header!=="INAM"&&l.chunkData.currentIndex<l.chunkData.length;)R=IA(l.chunkData);R.header==="INAM"&&(u=AA(R.chunkData,R.size).trim())}let f=60,S=0,G=0,D=c.length-1,M=0,v=n.find(R=>R.header==="wsmp");if(v){N(v.chunkData,4),f=N(v.chunkData,2),S=Ve(v.chunkData[v.chunkData.currentIndex++],v.chunkData[v.chunkData.currentIndex++]);let R=Math.trunc(S/100);if(f+=R,S-=R*100,M=(N(v.chunkData,4)|0)/-655360,N(v.chunkData,4),N(v.chunkData,4)===1){N(v.chunkData,8),G=N(v.chunkData,4);let L=N(v.chunkData,4);D=G+L}}else O("No wsmp chunk in wave... using sane defaults.");B&&console.error(`Failed to load '${u}': Unsupported format: (${o})`),this.samples.push(new kn(u,g,f,S,G,D,c,M)),A++,y(`%cLoaded sample %c${u}`,I.info,I.recognized)}K()}var Ue=class extends Te{constructor(A){super(),this.dataArray=new b(A),Ie("%cParsing DLS...",I.info),this.dataArray||(K(),this.parsingError("No data provided!"));let t=IA(this.dataArray,!1);this.verifyHeader(t,"riff"),this.verifyText(AA(this.dataArray,4).toLowerCase(),"dls ");let n=[];for(;this.dataArray.currentIndex<this.dataArray.length;)n.push(IA(this.dataArray));this.soundFontInfo.ifil="2.1",this.soundFontInfo.isng="EMU8000",this.soundFontInfo.INAM="Unnamed DLS",this.soundFontInfo.IENG="Unknown",this.soundFontInfo.IPRD="SpessaSynth DLS",this.soundFontInfo.ICRD=new Date().toDateString();let s=_A(n,"INFO");if(s)for(;s.chunkData.currentIndex<s.chunkData.length;){let i=IA(s.chunkData);this.soundFontInfo[i.header]=AA(i.chunkData,i.size)}this.soundFontInfo.ICMT=this.soundFontInfo.ICMT||"(No description)",this.soundFontInfo.ISBJ&&(this.soundFontInfo.ICMT+=`
14
14
  `+this.soundFontInfo.ISBJ,delete this.soundFontInfo.ISBJ),this.soundFontInfo.ICMT+=`
15
- Converted from DLS to SF2 with SpessaSynth`;for(let[i,C]of Object.entries(this.soundFontInfo))y(`%c"${i}": %c"${C}"`,I.info,I.recognized);let o=n.find(i=>i.header==="colh");o||(P(),this.parsingError("No colh chunk!")),this.instrumentAmount=N(o.chunkData,4),y(`%cInstruments amount: %c${this.instrumentAmount}`,I.info,I.recognized);let r=WA(n,"wvpl");r||(P(),this.parsingError("No wvpl chunk!")),this.readDLSSamples(r);let g=WA(n,"lins");g||(P(),this.parsingError("No lins chunk!")),this.readDLSInstrumentList(g),this.presets.sort((i,C)=>i.program-C.program+(i.bank-C.bank)),this._parseInternal(),y(`%cParsing finished! %c"${this.soundFontInfo.INAM||"UNNAMED"}"%c has %c${this.presets.length} %cpresets,
16
- %c${this.instruments.length}%c instruments and %c${this.samples.length}%c samples.`,I.info,I.recognized,I.info,I.recognized,I.info,I.recognized,I.info,I.recognized,I.info),P()}verifyHeader(A,...t){for(let n of t)if(A.header.toLowerCase()===n.toLowerCase())return;P(),this.parsingError(`Invalid DLS chunk header! Expected "${t.toString()}" got "${A.header.toLowerCase()}"`)}verifyText(A,t){A.toLowerCase()!==t.toLowerCase()&&(P(),this.parsingError(`FourCC error: Expected "${t.toLowerCase()}" got "${A.toLowerCase()}"`))}parsingError(A){throw new Error(`DLS parse error: ${A} The file may be corrupted.`)}destroySoundBank(){super.destroySoundBank(),delete this.dataArray}};Te.prototype.readDLSInstrumentList=jo;Te.prototype.readDLSInstrument=$o;Te.prototype.readRegion=nr;Te.prototype.readLart=tr;Te.prototype.readDLSSamples=or;var Bs=class extends Me{constructor(A,t,n,s,o,r,g,i,C,B,h,c,l){super(A,r,g,i,C,B,s-t/2,o-t/2),this.sampleName=A,this.sampleStartIndex=t,this.sampleEndIndex=n,this.isSampleLoaded=!1,this.sampleID=c,this.sampleLength=this.sampleEndIndex-this.sampleStartIndex,this.sampleDataArray=h,this.sampleData=new Float32Array(0),this.isCompressed&&(this.sampleLoopStartIndex+=this.sampleStartIndex/2,this.sampleLoopEndIndex+=this.sampleStartIndex/2,this.sampleLength=99999999),this.isDataRaw=l}getRawData(){let A=this.sampleDataArray;if(this.isCompressed){if(this.compressedData)return this.compressedData;let t=A.currentIndex;return A.slice(this.sampleStartIndex/2+t,this.sampleEndIndex/2+t)}else{this.isDataRaw||super.getRawData();let t=A.currentIndex;return A.slice(t+this.sampleStartIndex,t+this.sampleEndIndex)}}decodeVorbis(){if(this.sampleLength<1)return;let A=this.sampleDataArray,t=A.currentIndex,n=A.slice(this.sampleStartIndex/2+t,this.sampleEndIndex/2+t);this.sampleData=new Float32Array(0);try{let s=pe.decode(n.buffer);this.sampleData=s.data[0],this.sampleData===void 0&&O(`Error decoding sample ${this.sampleName}: Vorbis decode returned undefined.`)}catch(s){O(`Error decoding sample ${this.sampleName}: ${s}`),this.sampleData=new Float32Array(this.sampleLoopEndIndex+1)}}getAudioData(){return this.isSampleLoaded?this.sampleData:this.sampleLength<1?(O(`Invalid sample ${this.sampleName}! Invalid length: ${this.sampleLength}`),new Float32Array(1)):this.isCompressed?(this.decodeVorbis(),this.isSampleLoaded=!0,this.sampleData):this.isDataRaw?this.loadUncompressedData():this.getUncompressedReadyData()}loadUncompressedData(){if(this.isCompressed)return O("Trying to load a compressed sample via loadUncompressedData()... aborting!"),new Float32Array(0);let A=new Float32Array(this.sampleLength/2),t=this.sampleDataArray.currentIndex,n=new Int16Array(this.sampleDataArray.slice(t+this.sampleStartIndex,t+this.sampleEndIndex).buffer);for(let s=0;s<n.length;s++)A[s]=n[s]/32768;return this.sampleData=A,this.isSampleLoaded=!0,A}getUncompressedReadyData(){let A=this.sampleDataArray.slice(this.sampleStartIndex/2,this.sampleEndIndex/2);return this.sampleData=A,this.isSampleLoaded=!0,A}};function rr(e,A,t=!0){let n=[],s=0;for(;e.chunkData.length>e.chunkData.currentIndex;){let o=Ji(s,e.chunkData,A,t);n.push(o),s++}return n.length>1&&n.pop(),n}function Ji(e,A,t,n){let s=AA(A,20),o=N(A,4)*2,r=N(A,4)*2,g=N(A,4),i=N(A,4),C=N(A,4),B=A[A.currentIndex++];B===255&&(B=60);let h=yo(A[A.currentIndex++]),c=N(A,2),l=N(A,2);return new Bs(s,o,r,g,i,C,B,h,c,l,t,e,n)}var Qs=class extends v{constructor(A){super();let t=A.currentIndex;this.generatorType=A[t+1]<<8|A[t],this.generatorValue=qe(A[t+2],A[t+3]),A.currentIndex+=4}};function ds(e){let A=[];for(;e.chunkData.length>e.chunkData.currentIndex;)A.push(new Qs(e.chunkData));return A.length>1&&A.pop(),A}var fs=class extends Ce{constructor(A){super(),this.generatorZoneStartIndex=N(A,2),this.modulatorZoneStartIndex=N(A,2),this.modulatorZoneSize=0,this.generatorZoneSize=0}setZoneSize(A,t){this.modulatorZoneSize=A,this.generatorZoneSize=t}getGenerators(A){for(let t=this.generatorZoneStartIndex;t<this.generatorZoneStartIndex+this.generatorZoneSize;t++){let n=A[t];if(!n)throw new Error("Missing generator in instrument zone! The file may corrupted.");this.generators.push(n)}}getModulators(A){for(let t=this.modulatorZoneStartIndex;t<this.modulatorZoneStartIndex+this.modulatorZoneSize;t++){let n=A[t];if(!n)throw new Error("Missing modulator in instrument zone! The file may corrupted.");this.modulators.push(n)}}getSample(A){let t=this.generators.find(n=>n.generatorType===a.sampleID);t&&this.setSample(A[t.generatorValue])}getKeyRange(){let A=this.generators.find(t=>t.generatorType===a.keyRange);A&&(this.keyRange.min=A.generatorValue&127,this.keyRange.max=A.generatorValue>>8&127)}getVelRange(){let A=this.generators.find(t=>t.generatorType===a.velRange);A&&(this.velRange.min=A.generatorValue&127,this.velRange.max=A.generatorValue>>8&127)}};function ir(e,A,t,n){let s=[];for(;e.chunkData.length>e.chunkData.currentIndex;){let o=new fs(e.chunkData);if(s.length>0){let r=o.modulatorZoneStartIndex-s[s.length-1].modulatorZoneStartIndex,g=o.generatorZoneStartIndex-s[s.length-1].generatorZoneStartIndex;s[s.length-1].setZoneSize(r,g),s[s.length-1].getGenerators(A),s[s.length-1].getModulators(t),s[s.length-1].getSample(n),s[s.length-1].getKeyRange(),s[s.length-1].getVelRange()}s.push(o)}return s.length>1&&s.pop(),s}var us=class extends xe{constructor(A){super(),this.generatorZoneStartIndex=N(A,2),this.modulatorZoneStartIndex=N(A,2),this.modulatorZoneSize=0,this.generatorZoneSize=0}setZoneSize(A,t){this.modulatorZoneSize=A,this.generatorZoneSize=t}getGenerators(A){for(let t=this.generatorZoneStartIndex;t<this.generatorZoneStartIndex+this.generatorZoneSize;t++){let n=A[t];if(!n)throw new Error("Missing generator in preset zone! The file may corrupted.");this.generators.push(n)}}getModulators(A){for(let t=this.modulatorZoneStartIndex;t<this.modulatorZoneStartIndex+this.modulatorZoneSize;t++){let n=A[t];if(!n)throw new Error("Missing modulator in preset zone! The file may corrupted.");this.modulators.push(n)}}getInstrument(A){let t=this.generators.find(n=>n.generatorType===a.instrument);t&&this.setInstrument(A[t.generatorValue])}getKeyRange(){let A=this.generators.find(t=>t.generatorType===a.keyRange);A&&(this.keyRange.min=A.generatorValue&127,this.keyRange.max=A.generatorValue>>8&127)}getVelRange(){let A=this.generators.find(t=>t.generatorType===a.velRange);A&&(this.velRange.min=A.generatorValue&127,this.velRange.max=A.generatorValue>>8&127)}};function ar(e,A,t,n){let s=[];for(;e.chunkData.length>e.chunkData.currentIndex;){let o=new us(e.chunkData);if(s.length>0){let r=o.modulatorZoneStartIndex-s[s.length-1].modulatorZoneStartIndex,g=o.generatorZoneStartIndex-s[s.length-1].generatorZoneStartIndex;s[s.length-1].setZoneSize(r,g),s[s.length-1].getGenerators(A),s[s.length-1].getModulators(t),s[s.length-1].getInstrument(n),s[s.length-1].getKeyRange(),s[s.length-1].getVelRange()}s.push(o)}return s.length>1&&s.pop(),s}var ms=class extends be{constructor(A,t){super(t),this.presetName=AA(A.chunkData,20).trim().replace(/\d{3}:\d{3}/,""),this.program=N(A.chunkData,2),this.bank=N(A.chunkData,2),this.presetZoneStartIndex=N(A.chunkData,2),this.library=N(A.chunkData,4),this.genre=N(A.chunkData,4),this.morphology=N(A.chunkData,4),this.presetZonesAmount=0}getPresetZones(A,t){this.presetZonesAmount=A;for(let n=this.presetZoneStartIndex;n<this.presetZonesAmount+this.presetZoneStartIndex;n++){let s=t[n];s.hasInstrument()?this.presetZones.push(s):this.globalZone.copyFrom(s)}}};function gr(e,A,t){let n=[];for(;e.chunkData.length>e.chunkData.currentIndex;){let s=new ms(e,t);if(n.length>0){let o=s.presetZoneStartIndex-n[n.length-1].presetZoneStartIndex;n[n.length-1].getPresetZones(o,A)}n.push(s)}return n.length>1&&n.pop(),n}var ps=class extends Ne{constructor(A){super(),this.instrumentName=AA(A.chunkData,20).trim(),this.instrumentZoneIndex=N(A.chunkData,2),this.instrumentZonesAmount=0}getInstrumentZones(A,t){this.instrumentZonesAmount=A;for(let n=this.instrumentZoneIndex;n<this.instrumentZonesAmount+this.instrumentZoneIndex;n++){let s=t[n];s.hasSample()?this.addZone(s):this.globalZone.copyFrom(s)}}};function Ir(e,A){let t=[];for(;e.chunkData.length>e.chunkData.currentIndex;){let n=new ps(e);if(t.length>0){let s=n.instrumentZoneIndex-t[t.length-1].instrumentZoneIndex;t[t.length-1].getInstrumentZones(s,A)}t.push(n)}return t.length>1&&t.pop(),t}function kn(e){let A=[];for(;e.chunkData.length>e.chunkData.currentIndex;){let t=e.chunkData,n=N(t,2),s=N(t,2),o=qe(t[t.currentIndex++],t[t.currentIndex++]),r=N(t,2),g=N(t,2);A.push(new mA(n,r,s,o,g))}return A}var Fn=class extends Le{constructor(A,t=!0){super(),t&&console.warn("Using the constructor directly is deprecated. Use loadSoundFont instead."),this.dataArray=new b(A),ge("%cParsing SoundFont...",I.info),this.dataArray||(P(),this.parsingError("No data provided!"));let n=IA(this.dataArray,!1);this.verifyHeader(n,"riff");let s=AA(this.dataArray,4).toLowerCase();if(s!=="sfbk"&&s!=="sfpk")throw P(),new SyntaxError(`Invalid soundFont! Expected "sfbk" or "sfpk" got "${s}"`);let o=s==="sfpk",r=IA(this.dataArray);for(this.verifyHeader(r,"list"),AA(r.chunkData,4);r.chunkData.length>r.chunkData.currentIndex;){let z=IA(r.chunkData),H;switch(z.header.toLowerCase()){case"ifil":case"iver":H=`${N(z.chunkData,2)}.${N(z.chunkData,2)}`,this.soundFontInfo[z.header]=H;break;case"icmt":H=AA(z.chunkData,z.chunkData.length,void 0,!1),this.soundFontInfo[z.header]=H;break;case"dmod":let aA=kn(z);aA.pop(),H=`Modulators: ${aA.length}`,this.defaultModulators=aA,this.customDefaultModulators=!0,this.soundFontInfo[z.header]=H;break;default:H=AA(z.chunkData,z.chunkData.length),this.soundFontInfo[z.header]=H}y(`%c"${z.header}": %c"${H}"`,I.info,I.recognized)}let g=IA(this.dataArray,!1);this.verifyHeader(g,"list"),this.verifyText(AA(this.dataArray,4),"sdta"),y("%cVerifying smpl chunk...",I.warn);let i=IA(this.dataArray,!1);this.verifyHeader(i,"smpl");let C;if(o){y("%cSF2Pack detected, attempting to decode the smpl chunk...",I.info);try{C=pe.decode(this.dataArray.buffer.slice(this.dataArray.currentIndex,this.dataArray.currentIndex+g.size-12)).data[0]}catch(z){throw P(),new Error(`SF2Pack Ogg Vorbis decode error: ${z}`)}y(`%cDecoded the smpl chunk! Length: %c${C.length}`,I.info,I.value)}else C=this.dataArray,this.sampleDataStartIndex=this.dataArray.currentIndex;y(`%cSkipping sample chunk, length: %c${g.size-12}`,I.info,I.value),this.dataArray.currentIndex+=g.size-12,y("%cLoading preset data chunk...",I.warn);let B=IA(this.dataArray);this.verifyHeader(B,"list"),AA(B.chunkData,4);let h=IA(B.chunkData);this.verifyHeader(h,"phdr");let c=IA(B.chunkData);this.verifyHeader(c,"pbag");let l=IA(B.chunkData);this.verifyHeader(l,"pmod");let u=IA(B.chunkData);this.verifyHeader(u,"pgen");let f=IA(B.chunkData);this.verifyHeader(f,"inst");let S=IA(B.chunkData);this.verifyHeader(S,"ibag");let G=IA(B.chunkData);this.verifyHeader(G,"imod");let D=IA(B.chunkData);this.verifyHeader(D,"igen");let M=IA(B.chunkData);this.verifyHeader(M,"shdr"),this.dataArray.currentIndex=this.sampleDataStartIndex,this.samples.push(...rr(M,C,!o));let U=ds(D),R=kn(G),E=ir(S,U,R,this.samples);this.instruments=Ir(f,E);let x=ds(u),L=kn(l),sA=ar(c,x,L,this.instruments);this.presets.push(...gr(h,sA,this)),this.presets.sort((z,H)=>z.program-H.program+(z.bank-H.bank)),this._parseInternal(),y(`%cParsing finished! %c"${this.soundFontInfo.INAM}"%c has %c${this.presets.length} %cpresets,
17
- %c${this.instruments.length}%c instruments and %c${this.samples.length}%c samples.`,I.info,I.recognized,I.info,I.recognized,I.info,I.recognized,I.info,I.recognized,I.info),P(),o&&delete this.dataArray}verifyHeader(A,t){A.header.toLowerCase()!==t.toLowerCase()&&(P(),this.parsingError(`Invalid chunk header! Expected "${t.toLowerCase()}" got "${A.header.toLowerCase()}"`))}verifyText(A,t){A.toLowerCase()!==t.toLowerCase()&&(P(),this.parsingError(`Invalid FourCC: Expected "${t.toLowerCase()}" got "${A.toLowerCase()}"\``))}destroySoundBank(){super.destroySoundBank(),delete this.dataArray}};function st(e){let A=e.slice(8,12),t=new b(A);return AA(t,4,void 0,!1).toLowerCase()==="dls "?new Te(e):new Fn(e,!1)}function Cr(){this.soundfontManager.soundfontList.some(e=>e.id===$e)&&this.soundfontManager.deleteSoundFont($e)}function Er(e,A){this.soundfontBankOffset=A;let t=st(e);this.soundfontManager.addNewSoundFont(t,$e,A);let n=this.soundfontManager.getCurrentSoundFontOrder();n.pop(),n.unshift($e),this.soundfontManager.rearrangeSoundFonts(n),this._snapshot!==void 0&&this.applySynthesizerSnapshot(this._snapshot),y(`%cEmbedded sound bank set at offset %c${A}`,I.recognized,I.value)}function cr(){let e=this.soundfontManager.getPresetList();this.clearCache(),this.callEvent("presetlistchange",e),this.getDefaultPresets(),this.midiAudioChannels.forEach(A=>{A.setPresetLock(!1)}),this.resetAllControllers(!1)}function hr(e,A=!1){this.transposition=0;for(let t=0;t<this.midiAudioChannels.length;t++)this.midiAudioChannels[t].transposeChannel(e,A);this.transposition=e}function lr(e){e=Math.round(e);for(let A=0;A<this.midiAudioChannels.length;A++)this.midiAudioChannels[A].setCustomController(nA.masterTuning,e)}var pt=class e{program;bank;isBankLSB;patchName;lockPreset;lockedSystem;midiControllers;lockedControllers;customControllers;lockVibrato;channelVibrato;channelTransposeKeyShift;channelOctaveTuning;isMuted;velocityOverride;drumChannel;static getChannelSnapshot(A,t){let n=A.midiAudioChannels[t],s=new e;return s.program=n.preset.program,s.bank=n.getBankSelect(),s.isBankLSB=s.bank!==n.bank,s.lockPreset=n.lockPreset,s.lockedSystem=n.lockedSystem,s.patchName=n.preset.presetName,s.midiControllers=n.midiControllers,s.lockedControllers=n.lockedControllers,s.customControllers=n.customControllers,s.channelVibrato=n.channelVibrato,s.lockVibrato=n.lockGSNRPNParams,s.channelTransposeKeyShift=n.channelTransposeKeyShift,s.channelOctaveTuning=n.channelOctaveTuning,s.isMuted=n.isMuted,s.velocityOverride=n.velocityOverride,s.drumChannel=n.drumChannel,s}static applyChannelSnapshot(A,t,n){let s=A.midiAudioChannels[t];s.muteChannel(n.isMuted),s.setDrums(n.drumChannel),s.midiControllers=n.midiControllers,s.lockedControllers=n.lockedControllers,s.customControllers=n.customControllers,s.updateChannelTuning(),s.channelVibrato=n.channelVibrato,s.lockGSNRPNParams=n.lockVibrato,s.channelTransposeKeyShift=n.channelTransposeKeyShift,s.channelOctaveTuning=n.channelOctaveTuning,s.velocityOverride=n.velocityOverride,s.setPresetLock(!1),s.setBankSelect(n.bank,n.isBankLSB),s.programChange(n.program),s.setPresetLock(n.lockPreset),s.lockedSystem=n.lockedSystem}};var ot=class e{channelSnapshots;keyMappings;mainVolume;pan;interpolation;system;transposition;static createSynthesizerSnapshot(A){let t=new e;return t.channelSnapshots=A.midiAudioChannels.map((n,s)=>pt.getChannelSnapshot(A,s)),t.keyMappings=A.keyModifierManager.getMappings(),t.mainVolume=A.midiVolume,t.pan=A.pan,t.system=A.system,t.interpolation=A.interpolationType,t.transposition=A.transposition,t.effectsConfig={},t}static applySnapshot(A,t){for(A.setSystem(t.system),A.setMasterParameter(JA.mainVolume,t.mainVolume),A.setMasterParameter(JA.masterPan,t.pan),A.transposeAllChannels(t.transposition),A.interpolationType=t.interpolation,A.keyModifierManager.setMappings(t.keyMappings);A.midiAudioChannels.length<t.channelSnapshots.length;)A.createMidiChannel();t.channelSnapshots.forEach((n,s)=>{pt.applyChannelSnapshot(A,s,n)}),y("%cFinished restoring controllers!",I.info)}};function Br(e){this._snapshot=e,ot.applySnapshot(this,e),y("%cFinished applying snapshot!",I.info),this.resetAllControllers()}function wn(e,A,t){if(t<e)return 0;let n=(t-e)/(1/A)+.25;return Math.abs(n-~~(n+.5))*4-1}var yt=class{static getSampleLinear(A,t){let n=A.sample,s=n.cursor,o=n.sampleData;if(n.isLooping){let r=n.loopEnd-n.loopStart;for(let g=0;g<t.length;g++){for(;s>=n.loopEnd;)s-=r;let i=~~s,C=i+1;for(;C>=n.loopEnd;)C-=r;let B=s-i,h=o[C],c=o[i];t[g]=c+(h-c)*B,s+=n.playbackStep*A.currentTuningCalculated}}else{if(n.loopingMode===2&&!A.isInRelease)return;for(let r=0;r<t.length;r++){let g=~~s,i=g+1;if(i>=n.end){A.finished=!0;return}let C=s-g,B=o[i],h=o[g];t[r]=h+(B-h)*C,s+=n.playbackStep*A.currentTuningCalculated}}A.sample.cursor=s}static getSampleNearest(A,t){let n=A.sample,s=n.cursor,o=n.loopEnd-n.loopStart,r=n.sampleData;if(A.sample.isLooping)for(let g=0;g<t.length;g++){for(;s>=n.loopEnd;)s-=o;let i=~~s+1;for(;i>=n.loopEnd;)i-=o;t[g]=r[i],s+=n.playbackStep*A.currentTuningCalculated}else{if(n.loopingMode===2&&!A.isInRelease)return;for(let g=0;g<t.length;g++){let i=~~s+1;if(i>=n.end){A.finished=!0;return}t[g]=r[i],s+=n.playbackStep*A.currentTuningCalculated}}n.cursor=s}static getSampleCubic(A,t){let n=A.sample,s=n.cursor,o=n.sampleData;if(n.isLooping){let r=n.loopEnd-n.loopStart;for(let g=0;g<t.length;g++){for(;s>=n.loopEnd;)s-=r;let i=~~s,C=i+1,B=C+1,h=B+1,c=s-i;C>=n.loopEnd&&(C-=r),B>=n.loopEnd&&(B-=r),h>=n.loopEnd&&(h-=r);let l=o[i],u=o[C],f=o[B],S=o[h],G=.5*(f-l),D=l-2.5*u+2*f-.5*S,M=.5*(S-l)+1.5*(u-f);t[g]=((M*c+D)*c+G)*c+u,s+=n.playbackStep*A.currentTuningCalculated}}else{if(n.loopingMode===2&&!A.isInRelease)return;for(let r=0;r<t.length;r++){let g=~~s,i=g+1,C=i+1,B=C+1,h=s-g;if(i>=n.end||C>=n.end||B>=n.end){A.finished=!0;return}let c=o[g],l=o[i],u=o[C],f=o[B],S=.5*(u-c),G=c-2.5*l+2*u-.5*f,D=.5*(f-c)+1.5*(l-u);t[r]=((D*h+G)*h+S)*h+l,s+=n.playbackStep*A.currentTuningCalculated}}A.sample.cursor=s}};function Qr(e,A,t,n,s,o,r,g){if(e.isInRelease||A>=e.releaseStartTime&&(e.isInRelease=!0,he.startRelease(e),le.startRelease(e),e.sample.loopingMode===3&&(e.sample.isLooping=!1)),e.modulatedGenerators[a.initialAttenuation]>2500)return e.isInRelease&&(e.finished=!0),e.finished;let i=e.targetKey,C=e.modulatedGenerators[a.fineTune]+this.channelOctaveTuning[e.midiNote]+this.channelTuningCents,B=e.modulatedGenerators[a.coarseTune],h=this.synth.tunings[this.preset.program]?.[e.realKey];if(h!==void 0&&h?.midiNote>=0&&(i=h.midiNote,C+=h.centTuning),e.portamentoFromKey>-1){let L=Math.min((A-e.startTime)/e.portamentoDuration,1),sA=i-e.portamentoFromKey;B-=sA*(1-L)}C+=(i-e.sample.rootKey)*e.modulatedGenerators[a.scaleTuning];let c=0,l=0,u=e.modulatedGenerators[a.vibLfoToPitch],f=e.modulatedGenerators[a.vibLfoToVolume],S=e.modulatedGenerators[a.vibLfoToFilterFc];if(u!==0||f!==0||S!==0){let L=e.startTime+ce(e.modulatedGenerators[a.delayVibLFO]),sA=Ot(e.modulatedGenerators[a.freqVibLFO]),z=wn(L,sA,A);C+=z*(u*this.customControllers[nA.modulationMultiplier]),l+=-z*f,c+=z*S}let G=e.modulatedGenerators[a.modLfoToPitch],D=e.modulatedGenerators[a.modLfoToVolume],M=e.modulatedGenerators[a.modLfoToFilterFc];if(G!==0||M!==0||D!==0){let L=e.startTime+ce(e.modulatedGenerators[a.delayModLFO]),sA=Ot(e.modulatedGenerators[a.freqModLFO]),z=wn(L,sA,A);C+=z*(G*this.customControllers[nA.modulationMultiplier]),l+=-z*D,c+=z*M}if(this.channelVibrato.depth>0){let L=wn(e.startTime+this.channelVibrato.delay,this.channelVibrato.rate,A);L&&(C+=L*this.channelVibrato.depth)}let U=e.modulatedGenerators[a.modEnvToPitch],R=e.modulatedGenerators[a.modEnvToFilterFc];if(R!==0||U!==0){let L=le.getValue(e,A);c+=L*R,C+=L*U}let E=~~(C+B*100);E!==e.currentTuningCents&&(e.currentTuningCents=E,e.currentTuningCalculated=Math.pow(2,E/1200));let x=new Float32Array(t.length);switch(this.synth.interpolationType){case At.fourthOrder:yt.getSampleCubic(e,x);break;case At.linear:default:yt.getSampleLinear(e,x);break;case At.nearestNeighbor:yt.getSampleNearest(e,x);break}return Ke.apply(e,x,c,this.synth.filterSmoothingFactor),he.apply(e,x,l,this.synth.volumeEnvelopeSmoothingFactor),this.panVoice(e,x,t,n,s,o,r,g),e.finished}function dr(e,A=-12e3){e+=this.customControllers[nA.channelKeyShift],this.voices.forEach(t=>{t.realKey===e&&(t.modulatedGenerators[a.releaseVolEnv]=A,t.release(this.synth.currentSynthTime))})}function fr(e,A=!0){e=Math.round(e),this.setCustomController(nA.channelTuning,e),A&&y(`%cFine tuning for %c${this.channelNumber}%c is now set to %c${e}%c cents.`,I.info,I.recognized,I.info,I.value,I.info)}function ur(e){e=Math.round(e),y(`%cChannel ${this.channelNumber} modulation depth. Cents: %c${e}`,I.info,I.value),this.setCustomController(nA.modulationMultiplier,e/50)}var Ue={pitchBendRange:0,fineTuning:1,coarseTuning:2,modulationDepth:5,resetParameters:16383},Ze={partParameter:1,awe32:127,SF2:120},St={vibratoRate:8,vibratoDepth:9,vibratoDelay:10,TVFFilterCutoff:32,TVFFilterResonance:33,EGAttackTime:99,EGReleaseTime:102};function mr(e){this.midiControllers[p.dataEntryMsb]=e<<7;let A=()=>{this.channelVibrato.delay===0&&this.channelVibrato.rate===0&&this.channelVibrato.depth===0&&(this.channelVibrato.depth=50,this.channelVibrato.rate=8,this.channelVibrato.delay=.6)},t=(n,s,o)=>{o.length>0&&(o=" "+o),y(`%c${n} for %c${this.channelNumber}%c is now set to %c${s}%c${o}.`,I.info,I.recognized,I.info,I.value,I.info)};switch(this.dataEntryState){default:case vA.Idle:break;case vA.NRPFine:if(this.lockGSNRPNParams)return;let n=this.midiControllers[p.NRPNMsb]>>7,s=this.midiControllers[p.NRPNLsb]>>7,o=this.midiControllers[p.lsbForControl6DataEntry]>>7;switch(n){default:if(e===64)return;O(`%cUnrecognized NRPN for %c${this.channelNumber}%c: %c(0x${s.toString(16).toUpperCase()} 0x${s.toString(16).toUpperCase()})%c data value: %c${e}`,I.warn,I.recognized,I.warn,I.unrecognized,I.warn,I.value);break;case Ze.partParameter:switch(s){default:if(e===64)return;O(`%cUnrecognized NRPN for %c${this.channelNumber}%c: %c(0x${n.toString(16)} 0x${s.toString(16)})%c data value: %c${e}`,I.warn,I.recognized,I.warn,I.unrecognized,I.warn,I.value);break;case St.vibratoRate:if(e===64)return;A(),this.channelVibrato.rate=e/64*8,t("Vibrato rate",`${e} = ${this.channelVibrato.rate}`,"Hz");break;case St.vibratoDepth:if(e===64)return;A(),this.channelVibrato.depth=e/2,t("Vibrato depth",`${e} = ${this.channelVibrato.depth}`,"cents of detune");break;case St.vibratoDelay:if(e===64)return;A(),this.channelVibrato.delay=e/64/3,t("Vibrato delay",`${e} = ${this.channelVibrato.delay}`,"seconds");break;case St.TVFFilterCutoff:this.controllerChange(p.brightness,e),t("Filter cutoff",e.toString(),"");break;case St.EGAttackTime:this.controllerChange(p.attackTime,e),t("EG attack time",e.toString(),"");break;case St.EGReleaseTime:this.controllerChange(p.releaseTime,e),t("EG release time",e.toString(),"");break}break;case Ze.awe32:break;case Ze.SF2:if(s>100)break;let g=this.customControllers[nA.sf2NPRNGeneratorLSB],i=(e<<7|o)-8192;this.setGeneratorOffset(g,i);break}break;case vA.RPCoarse:case vA.RPFine:let r=this.midiControllers[p.RPNMsb]|this.midiControllers[p.RPNLsb]>>7;switch(r){default:O(`%cUnrecognized RPN for %c${this.channelNumber}%c: %c(0x${r.toString(16)})%c data value: %c${e}`,I.warn,I.recognized,I.warn,I.unrecognized,I.warn,I.value);break;case Ue.pitchBendRange:this.midiControllers[cA+X.pitchWheelRange]=e<<7,t("Pitch bend range",e.toString(),"semitones");break;case Ue.coarseTuning:let g=e-64;this.setCustomController(nA.channelTuningSemitones,g),t("Coarse tuning",g.toString(),"semitones");break;case Ue.fineTuning:this.setTuning(e-64,!1);break;case Ue.modulationDepth:this.setModulationDepth(e*100);break;case Ue.resetParameters:this.resetParameters();break}}}var Ki=[a.delayModLFO,a.freqModLFO,a.delayVibLFO,a.freqVibLFO,a.delayModEnv,a.attackModEnv,a.holdModEnv,a.decayModEnv,a.sustainModEnv,a.releaseModEnv,a.delayVolEnv,a.attackVolEnv,a.holdVolEnv,a.decayVolEnv,a.sustainVolEnv,a.releaseVolEnv,a.fineTune,a.modLfoToPitch,a.vibLfoToPitch,a.modEnvToPitch,a.modLfoToVolume,a.initialFilterFc,a.initialFilterQ,a.modLfoToFilterFc,a.modEnvToFilterFc,a.chorusEffectsSend,a.reverbEffectsSend];function pr(e,A,t){let n=(c,l,u)=>Math.max(l,Math.min(u,c)),s=c=>Math.max(-32768,1200*Math.log2(c/1e3)),o=c=>6900+1200*Math.log2(c/440),r=t<<7|A;r-=8192;let g=Ki[e];g||O(`Invalid AWE32 LSB: %c${e}`,I.unrecognized);let i,C,B,h;switch(g){default:break;case a.delayModLFO:case a.delayVibLFO:case a.delayVolEnv:case a.delayModEnv:i=4*n(r,0,5900),this.setGeneratorOverride(g,s(i));break;case a.attackVolEnv:case a.attackModEnv:i=n(r,0,5940),this.setGeneratorOverride(g,s(i));break;case a.holdVolEnv:case a.holdModEnv:i=n(r,0,8191),this.setGeneratorOverride(g,s(i));break;case a.decayModEnv:case a.decayVolEnv:case a.releaseVolEnv:case a.releaseModEnv:i=4*n(r,0,5940),this.setGeneratorOverride(g,s(i));break;case a.freqVibLFO:case a.freqModLFO:C=.084*A,this.setGeneratorOverride(g,o(C),!0);break;case a.sustainVolEnv:case a.sustainModEnv:B=A*7.5,this.setGeneratorOverride(g,B);break;case a.fineTune:this.setGeneratorOverride(g,r,!0);break;case a.modLfoToPitch:case a.vibLfoToPitch:h=n(r,-127,127)*9.375,this.setGeneratorOverride(g,h,!0);break;case a.modEnvToPitch:h=n(r,-127,127)*9.375,this.setGeneratorOverride(g,h);break;case a.modLfoToVolume:B=1.875*A,this.setGeneratorOverride(g,B,!0);break;case a.initialFilterFc:let c=4335+59*A;this.setGeneratorOverride(g,c,!0);break;case a.initialFilterQ:B=215*(A/127),this.setGeneratorOverride(g,B,!0);break;case a.modLfoToFilterFc:h=n(r,-64,63)*56.25,this.setGeneratorOverride(g,h,!0);break;case a.modEnvToFilterFc:h=n(r,-64,63)*56.25,this.setGeneratorOverride(g,h);break;case a.chorusEffectsSend:case a.reverbEffectsSend:this.setGeneratorOverride(g,n(r,0,255)*(1e3/255));break}}function yr(e){switch(this.midiControllers[p.lsbForControl6DataEntry]=e<<7,this.dataEntryState){default:break;case vA.RPCoarse:case vA.RPFine:switch(this.midiControllers[p.RPNMsb]|this.midiControllers[p.RPNLsb]>>7){default:break;case Ue.pitchBendRange:if(e===0)break;this.midiControllers[cA+X.pitchWheelRange]|=e;let s=(this.midiControllers[cA+X.pitchWheelRange]>>7)+e/128;y(`%cChannel ${this.channelNumber} bend range. Semitones: %c${s}`,I.info,I.value);break;case Ue.fineTuning:let r=this.customControllers[nA.channelTuning]<<7|e;this.setTuning(r*.01220703125);break;case Ue.modulationDepth:let i=this.customControllers[nA.modulationMultiplier]*50+e/128*100;this.setModulationDepth(i);break;case 16383:this.resetParameters();break}break;case vA.NRPFine:let t=this.midiControllers[p.NRPNMsb]>>7,n=this.midiControllers[p.NRPNLsb]>>7;if(t===Ze.SF2)return;switch(t){default:O(`%cUnrecognized NRPN LSB for %c${this.channelNumber}%c: %c(0x${n.toString(16).toUpperCase()} 0x${n.toString(16).toUpperCase()})%c data value: %c${e}`,I.warn,I.recognized,I.warn,I.unrecognized,I.warn,I.value);break;case Ze.awe32:pr.call(this,n,e,this.midiControllers[p.dataEntryMsb]>>7);break}}}function Sr(e,A,t=!1){if(e>127){if(!t)return;switch(e){default:return;case gs.velocityOverride:this.velocityOverride=A}}if(e>=p.lsbForControl1ModulationWheel&&e<=p.lsbForControl13EffectControl2&&e!==p.lsbForControl6DataEntry){let n=e-32;if(this.lockedControllers[n])return;this.midiControllers[n]=this.midiControllers[n]&16256|A&127,this.voices.forEach(s=>this.computeModulators(s,1,n))}if(!this.lockedControllers[e]){switch(this.midiControllers[e]=A<<7,e){case p.allNotesOff:this.stopAllNotes();break;case p.allSoundOff:this.stopAllNotes(!0);break;case p.bankSelect:this.setBankSelect(A);break;case p.lsbForControl0BankSelect:this.setBankSelect(A,!0);break;case p.RPNLsb:this.dataEntryState=vA.RPFine;break;case p.RPNMsb:this.dataEntryState=vA.RPCoarse;break;case p.NRPNMsb:this.customControllers[nA.sf2NPRNGeneratorLSB]=0,this.dataEntryState=vA.NRPCoarse;break;case p.NRPNLsb:this.midiControllers[p.NRPNMsb]>>7===Ze.SF2&&(this.customControllers[nA.sf2NPRNGeneratorLSB]%100!==0&&(this.customControllers[nA.sf2NPRNGeneratorLSB]=0),A===100?this.customControllers[nA.sf2NPRNGeneratorLSB]+=100:A===101?this.customControllers[nA.sf2NPRNGeneratorLSB]+=1e3:A===102?this.customControllers[nA.sf2NPRNGeneratorLSB]+=1e4:A<100&&(this.customControllers[nA.sf2NPRNGeneratorLSB]+=A)),this.dataEntryState=vA.NRPFine;break;case p.dataEntryMsb:this.dataEntryCoarse(A);break;case p.lsbForControl6DataEntry:this.dataEntryFine(A);break;case p.resetAllControllers:this.resetControllersRP15Compliant();break;case p.sustainPedal:A>=64?this.holdPedal=!0:(this.holdPedal=!1,this.sustainedVoices.forEach(n=>{n.release(this.synth.currentSynthTime)}),this.sustainedVoices=[]);break;default:this.voices.forEach(n=>this.computeModulators(n,1,e));break}this.synth.callEvent("controllerchange",{channel:this.channelNumber,controllerNumber:e,controllerValue:A})}}function Dr(e=!1){e?(this.voices.length=0,this.sustainedVoices.length=0,this.sendChannelProperty()):(this.voices.forEach(A=>{A.isInRelease||A.release(this.synth.currentSynthTime)}),this.sustainedVoices.forEach(A=>{A.release(this.synth.currentSynthTime)}))}function kr(e){e&&this.stopAllNotes(!0),this.isMuted=e,this.sendChannelProperty(),this.synth.callEvent("mutechannel",{channel:this.channelNumber,isMuted:e})}function Fr(e,A=!1){this.drumChannel||(e+=this.synth.transposition);let t=Math.trunc(e),n=this.channelTransposeKeyShift+this.customControllers[nA.channelTransposeFine]/100;this.drumChannel&&!A||e===n||(t!==this.channelTransposeKeyShift&&this.controllerChange(p.allNotesOff,127),this.channelTransposeKeyShift=t,this.setCustomController(nA.channelTransposeFine,(e-t)*100),this.sendChannelProperty())}var Vt={0:0,1:.006,2:.023,4:.05,8:.11,16:.25,32:.5,64:2.06,80:4.2,96:8.4,112:19.5,116:26.7,120:40,124:80,127:480};function Pi(e){if(Vt[e]!==void 0)return Vt[e];let A=null,t=null;for(let n of Object.keys(Vt))n=parseInt(n),n<e&&(A===null||n>A)&&(A=n),n>e&&(t===null||n<t)&&(t=n);if(A!==null&&t!==null){let n=Vt[A],s=Vt[t];return n+(e-A)*(s-n)/(t-A)}return 0}function wr(e,A){return Pi(e)*(A/30)}function Rr(e,A){if(A<1){this.noteOff(e);return}if(A=Math.min(127,A),this.synth.highPerformanceMode&&this.synth.totalVoicesAmount>200&&A<40||this.synth.highPerformanceMode&&A<10||this.isMuted)return;let t=e+this.channelTransposeKeyShift+this.customControllers[nA.channelKeyShift],n=t;if(t>127||t<0)return;let s=this.preset.program,o=this.synth.tunings[s]?.[t]?.midiNote;o>=0&&(n=o),this.velocityOverride>0&&(A=this.velocityOverride);let r=this.synth.keyModifierManager.getVelocity(this.channelNumber,t);r>-1&&(A=r);let g=this.synth.keyModifierManager.getGain(this.channelNumber,t),i=-1,C=0,B=this.midiControllers[p.portamentoTime]>>7,h=this.midiControllers[p.portamentoControl],c=h>>7;if(!this.drumChannel&&c!==n&&this.midiControllers[p.portamentoOnOff]>=8192&&B>0){if(h!==1){let S=Math.abs(n-c);C=wr(B,S),i=c}this.controllerChange(p.portamentoControl,n)}let l=this.synth.getVoices(this.channelNumber,n,A,t),u=0;this.randomPan&&(u=Math.round(Math.random()*1e3-500));let f=this.voices;l.forEach(S=>{S.portamentoFromKey=i,S.portamentoDuration=C,S.overridePan=u,S.gain=g,this.sysExModulators.modulatorList.forEach(L=>{let sA=L.mod,z=S.modulators.findIndex(H=>EA.isIdentical(H,sA));z!==-1?S.modulators[z]=EA.copy(sA):S.modulators.push(EA.copy(sA))}),this.generatorOverridesEnabled&&this.generatorOverrides.forEach((L,sA)=>{L!==an&&(S.generators[sA]=L)});let G=S.exclusiveClass;G!==0&&f.forEach(L=>{L.exclusiveClass===G&&L.exclusiveRelease(this.synth.currentSynthTime)}),this.computeModulators(S);let D=S.modulatedGenerators[a.startAddrsOffset]+S.modulatedGenerators[a.startAddrsCoarseOffset]*32768,M=S.modulatedGenerators[a.endAddrOffset]+S.modulatedGenerators[a.endAddrsCoarseOffset]*32768,U=S.modulatedGenerators[a.startloopAddrsOffset]+S.modulatedGenerators[a.startloopAddrsCoarseOffset]*32768,R=S.modulatedGenerators[a.endloopAddrsOffset]+S.modulatedGenerators[a.endloopAddrsCoarseOffset]*32768,E=S.sample,x=L=>Math.max(0,Math.min(E.sampleData.length-1,L));if(E.cursor=x(E.cursor+D),E.end=x(E.end+M),E.loopStart=x(E.loopStart+U),E.loopEnd=x(E.loopEnd+R),E.loopEnd<E.loopStart){let L=E.loopStart;E.loopStart=E.loopEnd,E.loopEnd=L}E.loopEnd-E.loopStart<1&&(E.loopingMode=0,E.isLooping=!1),S.volumeEnvelope.attenuation=S.volumeEnvelope.attenuationTargetGain,S.currentPan=Math.max(-500,Math.min(500,S.modulatedGenerators[a.pan]))}),this.synth.totalVoicesAmount+=l.length,this.synth.totalVoicesAmount>this.synth.voiceCap&&this.synth.voiceKilling(l.length),f.push(...l),this.sendChannelProperty(),this.synth.callEvent("noteon",{midiNote:e,channel:this.channelNumber,velocity:A})}function Gr(e){if(e>127||e<0){O("Received a noteOn for note",e,"Ignoring.");return}let A=e+this.channelTransposeKeyShift+this.customControllers[nA.channelKeyShift];if(this.synth.highPerformanceMode&&!this.drumChannel){this.killNote(A,-6950),this.synth.callEvent("noteoff",{midiNote:e,channel:this.channelNumber});return}this.voices.forEach(n=>{n.realKey!==A||n.isInRelease===!0||(this.holdPedal?this.sustainedVoices.push(n):n.release(this.synth.currentSynthTime))}),this.synth.callEvent("noteoff",{midiNote:e,channel:this.channelNumber})}function Mr(e,A){this.voices.forEach(t=>{t.midiNote===e&&(t.pressure=A,this.computeModulators(t,0,X.polyPressure))}),this.synth.callEvent("polypressure",{channel:this.channelNumber,midiNote:e,pressure:A})}function xr(e){this.midiControllers[cA+X.channelPressure]=e<<7,this.updateChannelTuning(),this.voices.forEach(A=>this.computeModulators(A,0,X.channelPressure)),this.synth.callEvent("channelpressure",{channel:this.channelNumber,pressure:e})}function Nr(e,A){if(this.lockedControllers[cA+X.pitchWheel])return;let t=A|e<<7;this.synth.callEvent("pitchwheel",{channel:this.channelNumber,MSB:e,LSB:A}),this.midiControllers[cA+X.pitchWheel]=t,this.voices.forEach(n=>this.computeModulators(n,0,X.pitchWheel)),this.sendChannelProperty()}function br(e){if(e.length!==12)throw new Error("Tuning is not the length of 12.");this.channelOctaveTuning=new Int8Array(128);for(let A=0;A<128;A++)this.channelOctaveTuning[A]=e[A%12]}function Lr(e){if(this.lockPreset)return;let A=this.getBankSelect(),t=this.isXGChannel,n=this.synth.soundfontManager.getPreset(A,e,t),s=n.preset;this.setPreset(s),this.sentBank=Math.min(128,s.bank+n.bankOffset),this.synth.callEvent("programchange",{channel:this.channelNumber,program:s.program,bank:this.sentBank}),this.sendChannelProperty()}var Rn=class{modulatorList=[];resetModulators(){this.modulatorList=[]}_getModulatorId(A,t,n,s){return`${A}-${t}-${n}-${s}`}_deleteModulator(A){this.modulatorList=this.modulatorList.filter(t=>t.id!==A)}setModulator(A,t,n,s=!1,o=!1){let r=this._getModulatorId(A,t,s,o);n===0&&this._deleteModulator(r);let g=this.modulatorList.find(i=>i.id===r);if(g)g.mod.transformAmount=n;else{let i,C;A>=cA?(i=A-cA,C=!1):(i=A,C=!0);let B=new EA(i,DA.linear,C?1:0,s?1:0,0,X.noController,DA.linear,0,0,0,t,n,0);this.modulatorList.push({mod:B,id:r})}}};var qi=1e3/200;function Tr(e,A,t){if(A.transformAmount===0)return A.currentValue=0,0;let n;if(A.sourceUsesCC)n=e[A.sourceIndex];else{let C=A.sourceIndex+cA;switch(A.sourceIndex){case X.noController:n=16383;break;case X.noteOnKeyNum:n=t.midiNote<<7;break;case X.noteOnVelocity:n=t.velocity<<7;break;case X.polyPressure:n=t.pressure<<7;break;default:n=e[C];break}}let s=rt[A.sourceCurveType][A.sourcePolarity][A.sourceDirection][n],o;if(A.secSrcUsesCC)o=e[A.secSrcIndex];else{let C=A.secSrcIndex+cA;switch(A.secSrcIndex){case X.noController:o=16383;break;case X.noteOnKeyNum:o=t.midiNote<<7;break;case X.noteOnVelocity:o=t.velocity<<7;break;case X.polyPressure:o=t.pressure<<7;break;default:o=e[C]}}let r=rt[A.secSrcCurveType][A.secSrcPolarity][A.secSrcDirection][o],g=A.transformAmount;A.isEffectModulator&&g<=1e3&&(g*=qi,g=Math.min(g,1e3));let i=s*r*g;return A.transformType===2&&(i=Math.abs(i)),A.currentValue=i,i}function Ur(e,A=-1,t=0){let n=e.modulators,s=e.generators;if(this.generatorOffsetsEnabled){s=new Int16Array(s);for(let i=0;i<s.length;i++)s[i]+=this.generatorOffsets[i]}let o=e.modulatedGenerators;if(A===-1){o.set(s),n.forEach(i=>{let C=q[i.modulatorDestination];if(!C){O(`Invalid modulator: ${i.modulatorDestination}`);return}let B=o[i.modulatorDestination]+Tr(this.midiControllers,i,e);o[i.modulatorDestination]=Math.max(C.min,Math.min(B,C.max))}),he.recalculate(e),le.recalculate(e);return}let r=new Set([a.initialAttenuation,a.delayVolEnv,a.attackVolEnv,a.holdVolEnv,a.decayVolEnv,a.sustainVolEnv,a.releaseVolEnv,a.keyNumToVolEnvHold,a.keyNumToVolEnvDecay]),g=new Set;n.forEach(i=>{if(i.sourceUsesCC===A&&i.sourceIndex===t||i.secSrcUsesCC===A&&i.secSrcIndex===t){let C=i.modulatorDestination;g.has(C)||(o[C]=s[C],Tr(this.midiControllers,i,e),n.forEach(B=>{if(B.modulatorDestination===C){let h=q[i.modulatorDestination],c=o[i.modulatorDestination]+B.currentValue;o[i.modulatorDestination]=Math.max(h.min,Math.min(c,h.max))}}),g.add(C))}}),[...g].some(i=>r.has(i))&&he.recalculate(e),le.recalculate(e)}var rt=[];for(let e=0;e<4;e++){rt[e]=[[new Float32Array(LA),new Float32Array(LA)],[new Float32Array(LA),new Float32Array(LA)]];for(let A=0;A<LA;A++)rt[e][0][0][A]=nt(0,e,A/LA,0),rt[e][1][0][A]=nt(0,e,A/LA,1),rt[e][0][1][A]=nt(1,e,A/LA,0),rt[e][1][1][A]=nt(1,e,A/LA,1)}var pA=class{midiControllers=new Int16Array(En);lockedControllers=Array(En).fill(!1);customControllers=new Float32Array(is);channelTransposeKeyShift=0;channelOctaveTuning=new Int8Array(128);channelTuningCents=0;sysExModulators=new Rn;generatorOffsets=new Int16Array(Jt);generatorOffsetsEnabled=!1;generatorOverrides=new Int16Array(Jt);generatorOverridesEnabled=!1;holdPedal=!1;drumChannel=!1;velocityOverride=0;randomPan=!1;dataEntryState=vA.Idle;bank=0;sentBank=0;bankLSB=0;preset=void 0;lockPreset=!1;lockedSystem="gs";lockGSNRPNParams=!1;channelVibrato={delay:0,depth:0,rate:0};isMuted=!1;voices=[];sustainedVoices=[];channelNumber;synth;constructor(A,t,n){this.synth=A,this.preset=t,this.channelNumber=n,this.resetGeneratorOverrides(),this.resetGeneratorOffsets()}get isXGChannel(){return GA(this.synth.system)||this.lockPreset&&GA(this.lockedSystem)}setCustomController(A,t){this.customControllers[A]=t,this.updateChannelTuning()}updateChannelTuning(){this.channelTuningCents=this.customControllers[nA.channelTuning]+this.customControllers[nA.channelTransposeFine]+this.customControllers[nA.masterTuning]+this.customControllers[nA.channelTuningSemitones]*100}renderAudio(A,t,n,s,o,r){this.voices=this.voices.filter(g=>!this.renderVoice(g,this.synth.currentSynthTime,A,t,n,s,o,r))}setPresetLock(A){this.lockPreset=A,A&&(this.lockedSystem=this.synth.system)}setBankSelect(A,t=!1){if(!this.lockPreset)if(t)this.bankLSB=A;else switch(this.bank=A,ft(this.getBankSelect(),A,this.synth.system,!1,this.drumChannel,this.channelNumber).drumsStatus){default:case 0:break;case 1:this.channelNumber%16===9&&(this.bank=127);break;case 2:this.setDrums(!0);break}}getBankSelect(){return ut(this.bank,this.bankLSB,this.drumChannel,this.isXGChannel)}setPreset(A){this.lockPreset||(delete this.preset,this.preset=A)}setDrums(A){this.lockPreset||this.drumChannel!==A&&(A?(this.channelTransposeKeyShift=0,this.drumChannel=!0):this.drumChannel=!1,this.synth.callEvent("drumchange",{channel:this.channelNumber,isDrumChannel:this.drumChannel}),this.programChange(this.preset.program),this.sendChannelProperty())}setVibrato(A,t,n){this.lockGSNRPNParams||(this.channelVibrato.rate=t,this.channelVibrato.delay=n,this.channelVibrato.depth=A)}disableAndLockGSNRPN(){this.lockGSNRPNParams=!0,this.channelVibrato.rate=0,this.channelVibrato.delay=0,this.channelVibrato.depth=0}sendChannelProperty(){if(!this.synth.enableEventSystem)return;let A={voicesAmount:this.voices.length,pitchBend:this.midiControllers[cA+X.pitchWheel],pitchBendRangeSemitones:this.midiControllers[cA+X.pitchWheelRange]/128,isMuted:this.isMuted,isDrum:this.drumChannel,transposition:this.channelTransposeKeyShift+this.customControllers[nA.channelTransposeFine]/100,bank:this.sentBank,program:this.preset.program};this.synth?.onChannelPropertyChange?.(A,this.channelNumber)}resetGeneratorOverrides(){this.generatorOverrides.fill(an),this.generatorOverridesEnabled=!1}setGeneratorOverride(A,t,n=!1){this.generatorOverrides[A]=t,this.generatorOverridesEnabled=!0,n&&this.voices.forEach(s=>{s.generators[A]=t,this.computeModulators(s)})}resetGeneratorOffsets(){this.generatorOffsets.fill(0),this.generatorOffsetsEnabled=!1}setGeneratorOffset(A,t){this.generatorOffsets[A]=t*q[A].nrpn,this.generatorOffsetsEnabled=!0,this.voices.forEach(n=>{this.computeModulators(n)})}};pA.prototype.renderVoice=Qr;pA.prototype.panVoice=mo;pA.prototype.killNote=dr;pA.prototype.stopAllNotes=Dr;pA.prototype.muteChannel=kr;pA.prototype.computeModulators=Ur;pA.prototype.noteOn=Rr;pA.prototype.noteOff=Gr;pA.prototype.polyPressure=Mr;pA.prototype.channelPressure=xr;pA.prototype.pitchWheel=Nr;pA.prototype.programChange=Lr;pA.prototype.setTuning=fr;pA.prototype.setOctaveTuning=br;pA.prototype.setModulationDepth=ur;pA.prototype.transposeChannel=Fr;pA.prototype.controllerChange=Sr;pA.prototype.resetControllers=ro;pA.prototype.resetControllersRP15Compliant=io;pA.prototype.resetParameters=ao;pA.prototype.dataEntryFine=yr;pA.prototype.dataEntryCoarse=mr;function vr(e=!1){let A=new pA(this,this.defaultPreset,this.midiAudioChannels.length);this.midiAudioChannels.push(A),e&&(this.callEvent("newchannel",void 0),A.sendChannelProperty(),this.midiAudioChannels[this.midiAudioChannels.length-1].setDrums(!0))}var ys={enableEventSystem:!0,initialTime:0,effectsEnabled:!0,midiChannels:16};function Hr(e,A){e===void 0&&(e={});for(let t in A)A.hasOwnProperty(t)&&!(t in e)&&(e[t]=A[t]);return e}var Vi={time:0},co=.03,ho=.07,ss=1,TA=class{cachedVoices=[];deviceID=-1;eventQueue=[];interpolationType=At.fourthOrder;transposition=0;tunings=[];soundfontBankOffset=0;masterGain=ss;midiVolume=1;reverbGain=1;chorusGain=1;reverbSend=1;chorusSend=1;voiceCap=350;pan=0;panLeft=.5;panRight=.5;highPerformanceMode=!1;keyModifierManager=new hn;midiAudioChannels=[];system=Yt;totalVoicesAmount=0;defaultPreset;drumPreset;processorInitialized=pe.isInitialized;currentSynthTime=0;sampleRate;sampleTime;effectsEnabled;_snapshot;onEventCall;onChannelPropertyChange;onMasterParameterChange;constructor(A,t=ys){t=Hr(t,ys),this.midiOutputsCount=t.midiChannels,this.effectsEnabled=t.effectsEnabled,this.enableEventSystem=t.enableEventSystem,this.currentSynthTime=t.initialTime,this.sampleTime=1/A,this.sampleRate=A,this.volumeEnvelopeSmoothingFactor=_s*(44100/A),this.panSmoothingFactor=Bo*(44100/A),this.filterSmoothingFactor=go*(44100/A);for(let n=0;n<128;n++)this.tunings.push([]);this.soundfontManager=new mt(this.updatePresetList.bind(this));for(let n=0;n<this.midiOutputsCount;n++)this.createMidiChannel(!1);this.processorInitialized.then(()=>{y("%cSpessaSynth is ready!",I.recognized)})}get currentGain(){return this.masterGain*this.midiVolume}getDefaultPresets(){let A=this.system;this.system="xg",this.defaultPreset=this.getPreset(0,0),this.system=A,this.drumPreset=this.getPreset(128,0)}setSystem(A){this.system=A,this?.onMasterParameterChange?.(JA.midiSystem,this.system)}getCachedVoice(A,t,n,s){return this.cachedVoices?.[A]?.[t]?.[n]?.[s]}setCachedVoice(A,t,n,s,o){this.cachedVoices[A]||(this.cachedVoices[A]=[]),this.cachedVoices[A][t]||(this.cachedVoices[A][t]=[]),this.cachedVoices[A][t][n]||(this.cachedVoices[A][t][n]=[]),this.cachedVoices[A][t][n][s]=o}renderAudio(A,t,n){this.renderAudioSplit(t,n,Array(16).fill(A))}renderAudioSplit(A,t,n){let s=this.currentSynthTime;for(;this.eventQueue[0]?.time<=s;)this.eventQueue.shift().callback();let o=A[0],r=A[1],g=t[0],i=t[1];this.totalVoicesAmount=0,this.midiAudioChannels.forEach((C,B)=>{if(C.voices.length<1||C.isMuted)return;let h=C.voices.length,c=B%16;C.renderAudio(n[c][0],n[c][1],o,r,g,i),this.totalVoicesAmount+=C.voices.length,C.voices.length!==h&&C.sendChannelProperty()}),this.currentSynthTime+=n[0][0].length*this.sampleTime}destroySynthProcessor(){this.midiAudioChannels.forEach(A=>{delete A.midiControllers,delete A.voices,delete A.sustainedVoices,delete A.lockedControllers,delete A.preset,delete A.customControllers}),delete this.cachedVoices,delete this.midiAudioChannels,this.soundfontManager.destroyManager(),delete this.soundfontManager}controllerChange(A,t,n,s=!1){this.midiAudioChannels[A].controllerChange(t,n,s)}noteOn(A,t,n){this.midiAudioChannels[A].noteOn(t,n)}noteOff(A,t){this.midiAudioChannels[A].noteOff(t)}polyPressure(A,t,n){this.midiAudioChannels[A].polyPressure(t,n)}channelPressure(A,t){this.midiAudioChannels[A].channelPressure(t)}pitchWheel(A,t,n){this.midiAudioChannels[A].pitchWheel(t,n)}programChange(A,t){this.midiAudioChannels[A].programChange(t)}processMessage(A,t=0,n=!1,s=Vi){let o=()=>{let g=dt(A[0]),i=g.channel+t;switch(g.status){case F.noteOn:let C=A[2];C>0?this.noteOn(i,A[1],C):this.noteOff(i,A[1]);break;case F.noteOff:n?this.midiAudioChannels[i].killNote(A[1]):this.noteOff(i,A[1]);break;case F.pitchBend:this.pitchWheel(i,A[2],A[1]);break;case F.controllerChange:this.controllerChange(i,A[1],A[2],n);break;case F.programChange:this.programChange(i,A[1]);break;case F.polyPressure:this.polyPressure(i,A[0],A[1]);break;case F.channelPressure:this.channelPressure(i,A[1]);break;case F.systemExclusive:this.systemExclusive(new b(A.slice(1)),t);break;case F.reset:this.stopAllChannels(!0),this.resetAllControllers();break;default:break}},r=s.time;r>this.currentSynthTime?(this.eventQueue.push({callback:o.bind(this),time:r}),this.eventQueue.sort((g,i)=>g.time-i.time)):o()}setMIDIVolume(A){this.midiVolume=Math.pow(A,Math.E),this.setMasterParameter(JA.masterPan,this.pan)}callEvent(A,t){this?.onEventCall?.(A,t)}clearCache(){this.cachedVoices=[]}getPreset(A,t){return this.soundfontManager.getPreset(A,t,GA(this.system)).preset}};TA.prototype.voiceKilling=qs;TA.prototype.getVoicesForPreset=Co;TA.prototype.getVoices=Eo;TA.prototype.systemExclusive=so;TA.prototype.stopAllChannels=po;TA.prototype.createMidiChannel=vr;TA.prototype.resetAllControllers=oo;TA.prototype.setMasterParameter=eo;TA.prototype.transposeAllChannels=hr;TA.prototype.setMasterTuning=lr;TA.prototype.clearEmbeddedBank=Cr;TA.prototype.setEmbeddedSoundFont=Er;TA.prototype.updatePresetList=cr;TA.prototype.applySynthesizerSnapshot=Br;function KA(e,A){let t=0;for(let n=8*(A-1);n>=0;n-=8)t|=e[e.currentIndex++]<<n;return t>>>0}function Zt(e,A){let t=new Array(A).fill(0);for(let n=A-1;n>=0;n--)t[n]=e&255,e>>=8;return t}function Or(e,A){if(this.sendMIDIMessages&&e.messageStatusByte>=128){this.sendMIDIMessage([e.messageStatusByte,...e.messageData]);return}let t=dt(e.messageStatusByte),n=this.midiPortChannelOffsets[this.midiPorts[A]]||0;switch(t.channel+=n,t.status){case F.noteOn:let s=e.messageData[1];if(s>0)this.synth.noteOn(t.channel,e.messageData[0],s),this.playingNotes.push({midiNote:e.messageData[0],channel:t.channel,velocity:s});else{this.synth.noteOff(t.channel,e.messageData[0]);let g=this.playingNotes.findIndex(i=>i.midiNote===e.messageData[0]&&i.channel===t.channel);g!==-1&&this.playingNotes.splice(g,1)}break;case F.noteOff:this.synth.noteOff(t.channel,e.messageData[0]);let o=this.playingNotes.findIndex(g=>g.midiNote===e.messageData[0]&&g.channel===t.channel);o!==-1&&this.playingNotes.splice(o,1);break;case F.pitchBend:this.synth.pitchWheel(t.channel,e.messageData[1],e.messageData[0]);break;case F.controllerChange:if(this.midiData.isMultiPort&&this.midiData.usedChannelsOnTrack[A].size===0)return;this.synth.controllerChange(t.channel,e.messageData[0],e.messageData[1]);break;case F.programChange:if(this.midiData.isMultiPort&&this.midiData.usedChannelsOnTrack[A].size===0)return;this.synth.programChange(t.channel,e.messageData[0]);break;case F.polyPressure:this.synth.polyPressure(t.channel,e.messageData[0],e.messageData[1]);break;case F.channelPressure:this.synth.channelPressure(t.channel,e.messageData[0]);break;case F.systemExclusive:this.synth.systemExclusive(e.messageData,n);break;case F.setTempo:e.messageData.currentIndex=0;let r=6e7/KA(e.messageData,3);this.oneTickToSeconds=60/(r*this.midiData.timeDivision),this.oneTickToSeconds===0&&(this.oneTickToSeconds=60/(120*this.midiData.timeDivision),O("invalid tempo! falling back to 120 BPM"),r=120);break;case F.timeSignature:case F.endOfTrack:case F.midiChannelPrefix:case F.songPosition:case F.activeSensing:case F.keySignature:case F.sequenceNumber:case F.sequenceSpecific:case F.text:case F.lyric:case F.copyright:case F.trackName:case F.marker:case F.cuePoint:case F.instrumentName:case F.programName:break;case F.midiPort:this.assignMIDIPort(A,e.messageData[0]);break;case F.reset:this.synth.stopAllChannels(),this.synth.resetAllControllers();break;default:O(`%cUnrecognized Event: %c${e.messageStatusByte}%c status byte: %c${Object.keys(F).find(g=>F[g]===t.status)}`,I.warn,I.unrecognized,I.warn,I.value);break}t.status>=0&&t.status<128&&this?.onMetaEvent?.(e,A)}function Jr(){for(let e=0;e<16;e++)this.synth.createMidiChannel(!0)}function Kr(){if(!this.isActive)return;let e=this.currentTime;for(;this.playedTime<e;){let A=this._findFirstEventIndex(),t=this.tracks[A][this.eventIndex[A]];if(this._processEvent(t,A),this.eventIndex[A]++,A=this._findFirstEventIndex(),this.tracks[A].length<=this.eventIndex[A]){if(this.loop){this.setTimeTicks(this.midiData.loop.start);return}this.eventIndex[A]--,this.pause(!0),this.songs.length>1&&this.nextSong();return}let n=this.tracks[A][this.eventIndex[A]];this.playedTime+=this.oneTickToSeconds*(n.ticks-t.ticks);let s=this.loop&&(this.loopCount>0||this.loopCount===-1);if(this.midiData.loop.end<=t.ticks&&s){this.loopCount!==1/0&&(this.loopCount--,this?.onLoopCountChange?.(this.loopCount)),this.setTimeTicks(this.midiData.loop.start);return}else if(e>=this.duration){if(s){this.loopCount!==1/0&&(this.loopCount--,this?.onLoopCountChange?.(this.loopCount)),this.setTimeTicks(this.midiData.loop.start);return}this.eventIndex[A]--,this.pause(!0),this.songs.length>1&&this.nextSong();return}}}function Pr(){let e=0,A=1/0;return this.tracks.forEach((t,n)=>{this.eventIndex[n]>=t.length||t[this.eventIndex[n]].ticks<A&&(e=n,A=t[this.eventIndex[n]].ticks)}),e}var it=class{timeDivision=0;duration=0;tempoChanges=[{ticks:0,tempo:120}];copyright="";tracksAmount=0;trackNames=[];lyrics=[];lyricsTicks=[];firstNoteOn=0;keyRange={min:0,max:127};lastVoiceEventTick=0;midiPorts=[0];midiPortChannelOffsets=[0];usedChannelsOnTrack=[];loop={start:0,end:0};midiName="";midiNameUsesFileName=!1;fileName="";rawMidiName;format=0;RMIDInfo={};bankOffset=0;isKaraokeFile=!1;isMultiPort=!1;MIDIticksToSeconds(A){let t=0;for(;A>0;){let n=this.tempoChanges.find(o=>o.ticks<A),s=A-n.ticks;t+=s*60/(n.tempo*this.timeDivision),A-=s}return t}_copyFromSequence(A){this.midiName=A.midiName,this.midiNameUsesFileName=A.midiNameUsesFileName,this.fileName=A.fileName,this.timeDivision=A.timeDivision,this.duration=A.duration,this.copyright=A.copyright,this.tracksAmount=A.tracksAmount,this.firstNoteOn=A.firstNoteOn,this.lastVoiceEventTick=A.lastVoiceEventTick,this.format=A.format,this.bankOffset=A.bankOffset,this.isKaraokeFile=A.isKaraokeFile,this.isMultiPort=A.isMultiPort,this.tempoChanges=[...A.tempoChanges],this.lyrics=A.lyrics.map(t=>new Uint8Array(t)),this.lyricsTicks=[...A.lyricsTicks],this.midiPorts=[...A.midiPorts],this.trackNames=[...A.trackNames],this.midiPortChannelOffsets=[...A.midiPortChannelOffsets],this.usedChannelsOnTrack=A.usedChannelsOnTrack.map(t=>new Set(t)),this.rawMidiName=A.rawMidiName?new Uint8Array(A.rawMidiName):void 0,this.loop={...A.loop},this.keyRange={...A.keyRange},this.RMIDInfo={...A.RMIDInfo}}};function fA(e){let A=0;for(;e;){let t=e[e.currentIndex++];if(A=A<<7|t&127,t>>7!==1)break}return A}function Gn(e){let A=[e&127];for(e>>=7;e>0;)A.unshift(e&127|128),e>>=7;return A}function qr(){let e=this;if(!e.tracks)throw new Error("MIDI has no tracks!");let A=[];for(let s of e.tracks){let o=[],r=0,g;for(let i of s){let C=i.ticks-r,B;i.messageStatusByte<=F.sequenceSpecific?(B=[255,i.messageStatusByte,...Gn(i.messageData.length),...i.messageData],g=void 0):i.messageStatusByte===F.systemExclusive?(B=[240,...Gn(i.messageData.length),...i.messageData],g=void 0):(B=[],g!==i.messageStatusByte&&(g=i.messageStatusByte,B.push(i.messageStatusByte)),B.push(...i.messageData)),o.push(...Gn(C)),o.push(...B),r+=C}A.push(new Uint8Array(o))}function t(s,o){for(let r=0;r<s.length;r++)o.push(s.charCodeAt(r))}let n=[];t("MThd",n),n.push(...Zt(6,4)),n.push(0,e.format),n.push(...Zt(e.tracksAmount,2)),n.push(...Zt(e.timeDivision,2));for(let s of A)t("MTrk",n),n.push(...Zt(s.length,4)),n.push(...s);return new Uint8Array(n)}function Dt(e){return e.messageData[0]===67&&e.messageData[2]===76&&e.messageData[5]===126&&e.messageData[6]===0}function Mn(e){return e.messageData[0]===65&&e.messageData[2]===66&&e.messageData[3]===18&&e.messageData[4]===64&&(e.messageData[5]&16)!==0&&e.messageData[6]===21}function xn(e){return e.messageData[0]===65&&e.messageData[2]===66&&e.messageData[6]===127}function Nn(e){return e.messageData[0]===126&&e.messageData[2]===9&&e.messageData[3]===1}function bn(e){return e.messageData[0]===126&&e.messageData[2]===9&&e.messageData[3]===3}function Ss(e){return new OA(e,F.systemExclusive,new b([65,16,66,18,64,0,127,0,65,247]))}function kt(e,A,t,n){return new OA(n,F.controllerChange|e%16,new b([A,t]))}function Zi(e,A){let t=16|[1,2,3,4,5,6,7,8,0,9,10,11,12,13,14,15][e%16],n=[65,16,66,18,64,t,21,1],o=128-(64+t+21+1)%128;return new OA(A,F.systemExclusive,new b([...n,o,247]))}function Vr(e=[],A=[],t=[],n=[]){let s=this;QA("%cApplying changes to the MIDI file...",I.info),y("Desired program changes:",e),y("Desired CC changes:",A),y("Desired channels to clear:",t),y("Desired channels to transpose:",n);let o=new Set;e.forEach(M=>{o.add(M.channel)});let r="gs",g=!1,i=Array(s.tracks.length).fill(0),C=s.tracks.length;function B(){let M=0,U=1/0;return s.tracks.forEach((R,E)=>{i[E]>=R.length||R[i[E]].ticks<U&&(M=E,U=R[i[E]].ticks)}),M}let h=s.midiPorts.slice(),c={},l=0;function u(M,U){s.usedChannelsOnTrack[M].size!==0&&(l===0&&(l+=16,c[U]=0),c[U]===void 0&&(c[U]=l,l+=16),h[M]=U)}s.midiPorts.forEach((M,U)=>{u(U,M)});let f=l,S=Array(f).fill(!0),G=Array(f).fill(0),D=Array(f).fill(0);for(n.forEach(M=>{let U=Math.trunc(M.keyShift),R=M.keyShift-U;G[M.channel]=U,D[M.channel]=R});C>0;){let M=B(),U=s.tracks[M];if(i[M]>=U.length){C--;continue}let R=i[M]++,E=U[R],x=()=>{U.splice(R,1),i[M]--},L=(RA,NA=0)=>{U.splice(R+NA,0,RA),i[M]++},sA=c[h[M]]||0;if(E.messageStatusByte===F.midiPort){u(M,E.messageData[0]);continue}if(E.messageStatusByte<=F.sequenceSpecific&&E.messageStatusByte>=F.sequenceNumber)continue;let z=E.messageStatusByte&240,H=E.messageStatusByte&15,aA=H+sA;if(t.indexOf(aA)!==-1){x();continue}switch(z){case F.noteOn:if(S[aA]){S[aA]=!1,A.filter(_=>_.channel===aA).forEach(_=>{let T=kt(H,_.controllerNumber,_.controllerValue,E.ticks);L(T)});let tA=D[aA];if(tA!==0){let _=tA*64+64,T=kt(H,p.RPNMsb,0,E.ticks),Y=kt(H,p.RPNLsb,1,E.ticks),$=kt(aA,p.dataEntryMsb,_,E.ticks),Z=kt(H,p.lsbForControl6DataEntry,0,E.ticks);L(Z),L($),L(Y),L(T)}if(o.has(aA)){let _=e.find(rA=>rA.channel===aA),T=Math.max(0,Math.min(_.bank,127)),Y=_.program;y(`%cSetting %c${_.channel}%c to %c${T}:${Y}%c. Track num: %c${M}`,I.info,I.recognized,I.info,I.recognized,I.info,I.recognized);let $=new OA(E.ticks,F.programChange|H,new b([Y]));L($);let Z=(rA,PA)=>{let Ee=kt(H,rA?p.lsbForControl0BankSelect:p.bankSelect,PA,E.ticks);L(Ee)};GA(r)?_.isDrum?(y(`%cAdding XG Drum change on track %c${M}`,I.recognized,I.value),Z(!1,ee(T)?T:127),Z(!0,0)):T===Cn?(Z(!1,Cn),Z(!0,0)):(Z(!1,0),Z(!0,T)):(Z(!1,T),_.isDrum&&H!==9&&(y(`%cAdding GS Drum change on track %c${M}`,I.recognized,I.value),L(Zi(H,E.ticks))))}}E.messageData[0]+=G[aA];break;case F.noteOff:E.messageData[0]+=G[aA];break;case F.programChange:if(o.has(aA)){x();continue}break;case F.controllerChange:let RA=E.messageData[0];if(A.find(tA=>tA.channel===aA&&RA===tA.controllerNumber)!==void 0){x();continue}if((RA===p.bankSelect||RA===p.lsbForControl0BankSelect)&&o.has(aA)){x();continue}break;case F.systemExclusive:if(Dt(E))y("%cXG system on detected",I.info),r="xg",g=!0;else if(E.messageData[0]===67&&E.messageData[2]===76&&E.messageData[3]===8&&E.messageData[5]===3)o.has(E.messageData[4]+sA)&&x();else if(xn(E)){g=!0,y("%cGS on detected!",I.recognized);break}else(Nn(E)||bn(E))&&(y("%cGM/2 on detected, removing!",I.info),x(),g=!1)}}if(!g&&e.length>0){let M=0;s.tracks[0][0].messageStatusByte===F.trackName&&M++,s.tracks[0].splice(M,0,Ss(0)),y("%cGS on not detected. Adding it.",I.info)}this.flush(),P()}function Zr(e){let A=[],t=[],n=[],s=[];e.channelSnapshots.forEach((o,r)=>{if(o.isMuted){t.push(r);return}let g=o.channelTransposeKeyShift+o.customControllers[nA.channelTransposeFine]/100;g!==0&&A.push({channel:r,keyShift:g}),o.lockPreset&&n.push({channel:r,program:o.program,bank:o.bank,isDrum:o.drumChannel}),o.lockedControllers.forEach((i,C)=>{if(!i||C>127||C===p.bankSelect)return;let B=o.midiControllers[C]>>7;s.push({channel:r,controllerNumber:C,controllerValue:B})})}),this.modifyMIDI(n,s,t,A)}var uA={name:"INAM",album:"IPRD",album2:"IALB",artist:"IART",genre:"IGNR",picture:"IPIC",copyright:"ICOP",creationDate:"ICRD",comment:"ICMT",engineer:"IENG",software:"ISFT",encoding:"IENC",midiEncoding:"MENC",bankOffset:"DBNK"},Xe="utf-8",Xi="Created using SpessaSynth";function Xr(e,A,t=0,n="Shift_JIS",s={},o=!0){let r=this;if(ge("%cWriting the RMIDI File...",I.info),y(`%cConfiguration: Bank offset: %c${t}%c, encoding: %c${n}`,I.info,I.value,I.info,I.value),y("metadata",s),y("Initial bank offset",r.bankOffset),o){let G=function(){let R=0,E=1/0;return r.tracks.forEach((x,L)=>{f[L]>=x.length||x[f[L]].ticks<E&&(R=L,E=x[f[L]].ticks)}),R},l="gm",u=[],f=Array(r.tracks.length).fill(0),S=r.tracks.length,D=Array(r.tracks.length).fill(0),M=16+r.midiPortChannelOffsets.reduce((R,E)=>E>R?E:R),U=[];for(let R=0;R<M;R++)U.push({program:0,drums:R%16===9,lastBank:void 0,lastBankLSB:void 0,hasBankSelect:!1});for(;S>0;){let R=G(),E=r.tracks[R];if(f[R]>=E.length){S--;continue}let x=E[f[R]];f[R]++;let L=r.midiPortChannelOffsets[D[R]];if(x.messageStatusByte===F.midiPort){D[R]=x.messageData[0];continue}let sA=x.messageStatusByte&240;if(sA!==F.controllerChange&&sA!==F.programChange&&sA!==F.systemExclusive)continue;if(sA===F.systemExclusive){if(!Mn(x)){Dt(x)?l="xg":xn(x)?l="gs":Nn(x)?(l="gm",u.push({tNum:R,e:x})):bn(x)&&(l="gm2");continue}let tA=[9,0,1,2,3,4,5,6,7,8,10,11,12,13,14,15][x.messageData[5]&15]+L;U[tA].drums=!!(x.messageData[7]>0&&x.messageData[5]>>4);continue}let z=(x.messageStatusByte&15)+L,H=U[z];if(sA===F.programChange){let tA=GA(l),_=x.messageData[0];H.drums?A.presets.findIndex(Z=>Z.program===_&&Z.isDrumPreset(tA,!0))===-1&&(x.messageData[0]=A.presets.find(Z=>Z.isDrumPreset(tA))?.program||0,y(`%cNo drum preset %c${_}%c. Channel %c${z}%c. Changing program to ${x.messageData[0]}.`,I.info,I.unrecognized,I.info,I.recognized,I.info)):A.presets.findIndex(Z=>Z.program===_&&!Z.isDrumPreset(tA))===-1&&(x.messageData[0]=A.presets.find(Z=>!Z.isDrumPreset(tA))?.program||0,y(`%cNo preset %c${_}%c. Channel %c${z}%c. Changing program to ${x.messageData[0]}.`,I.info,I.unrecognized,I.info,I.recognized,I.info)),H.program=x.messageData[0];let T=Math.max(0,H.lastBank?.messageData[1]-r.bankOffset),Y=H?.lastBankLSB?.messageData[1]-r.bankOffset||0;if(H.lastBank===void 0)continue;let $=ut(T,Y,H.drums,tA);if(A.presets.findIndex(Z=>Z.bank===$&&Z.program===x.messageData[0])===-1){let Z=A.presets.find(rA=>rA.program===x.messageData[0])?.bank+t||t;H.lastBank.messageData[1]=Z,H?.lastBankLSB?.messageData&&(H.lastBankLSB.messageData[1]=Z),y(`%cNo preset %c${$}:${x.messageData[0]}%c. Channel %c${z}%c. Changing bank to ${Z}.`,I.info,I.unrecognized,I.info,I.recognized,I.info)}else{let Z=$;GA(l)&&$===128&&($=127);let rA=($===128?128:Z)+t;H.lastBank.messageData[1]=rA,H?.lastBankLSB?.messageData&&!H.drums&&(H.lastBankLSB.messageData[1]=H.lastBankLSB.messageData[1]-r.bankOffset+t),y(`%cPreset %c${$}:${x.messageData[0]}%c exists. Channel %c${z}%c. Changing bank to ${rA}.`,I.info,I.recognized,I.info,I.recognized,I.info)}continue}let aA=x.messageData[0]===p.lsbForControl0BankSelect;if(x.messageData[0]!==p.bankSelect&&!aA)continue;H.hasBankSelect=!0;let RA=x.messageData[1],NA=ft(H?.lastBank?.messageData[1]||0,RA,l,aA,H.drums,z);NA.drumsStatus===2?H.drums=!0:NA.drumsStatus===1&&(H.drums=!1),aA?H.lastBankLSB=x:H.lastBank=x}if(U.forEach((R,E)=>{if(R.hasBankSelect===!0)return;let x=E%16,L=F.programChange|x,sA=Math.floor(E/16)*16,z=r.midiPortChannelOffsets.indexOf(sA),H=r.tracks.find((tA,_)=>r.midiPorts[_]===z&&r.usedChannelsOnTrack[_].has(x));if(H===void 0)return;let aA=H.findIndex(tA=>tA.messageStatusByte===L);if(aA===-1){let tA=H.findIndex(Y=>Y.messageStatusByte>128&&Y.messageStatusByte<240&&(Y.messageStatusByte&15)===x);if(tA===-1)return;let _=H[tA].ticks,T=A.getPreset(0,0).program;H.splice(tA,0,new OA(_,F.programChange|x,new b([T]))),aA=tA}y(`%cAdding bank select for %c${E}`,I.info,I.recognized);let RA=H[aA].ticks,NA=A.getPreset(0,R.program,GA(l))?.bank+t||t;H.splice(aA,0,new OA(RA,F.controllerChange|x,new b([p.bankSelect,NA])))}),l!=="gs"&&!GA(l)){for(let E of u)r.tracks[E.tNum].splice(r.tracks[E.tNum].indexOf(E.e),1);let R=0;r.tracks[0][0].messageStatusByte===F.trackName&&R++,r.tracks[0].splice(R,0,Ss(0))}}let g=new b(r.writeMIDI().buffer),i=[VA("INFO")],C=new TextEncoder;if(i.push(j(uA.software,C.encode("SpessaSynth"),!0)),s.name!==void 0?(i.push(j(uA.name,C.encode(s.name),!0)),n=Xe):i.push(j(uA.name,r.rawMidiName,!0)),s.creationDate!==void 0)n=Xe,i.push(j(uA.creationDate,C.encode(s.creationDate),!0));else{let l=new Date().toLocaleString(void 0,{weekday:"long",year:"numeric",month:"long",day:"numeric",hour:"numeric",minute:"numeric"});i.push(j(uA.creationDate,VA(l,!0),!0))}if(s.comment!==void 0&&(n=Xe,i.push(j(uA.comment,C.encode(s.comment)))),s.engineer!==void 0&&i.push(j(uA.engineer,C.encode(s.engineer),!0)),s.album!==void 0&&(n=Xe,i.push(j(uA.album,C.encode(s.album),!0)),i.push(j(uA.album2,C.encode(s.album),!0))),s.artist!==void 0&&(n=Xe,i.push(j(uA.artist,C.encode(s.artist),!0))),s.genre!==void 0&&(n=Xe,i.push(j(uA.genre,C.encode(s.genre),!0))),s.picture!==void 0&&i.push(j(uA.picture,new Uint8Array(s.picture))),s.copyright!==void 0)n=Xe,i.push(j(uA.copyright,C.encode(s.copyright),!0));else{let l=r.copyright.length>0?r.copyright:Xi;i.push(j(uA.copyright,VA(l,!0)))}let B=new b(2);ye(B,t,2),i.push(j(uA.bankOffset,B)),s.midiEncoding!==void 0&&(i.push(j(uA.midiEncoding,C.encode(s.midiEncoding))),n=Xe),i.push(j(uA.encoding,VA(n,!0)));let h=kA(i),c=kA([VA("RMID"),j("data",g),j("LIST",h),e]);return y("%cFinished!",I.info),P(),j("RIFF",c)}function Wr(e){let A=this;QA("%cSearching for all used programs and keys...",I.info);let t=16+A.midiPortChannelOffsets.reduce((h,c)=>c>h?c:h),n=[];for(let h=0;h<t;h++){let c=h%16===9?128:0;n.push({program:0,bank:c,bankLSB:0,actualBank:c,drums:h%16===9,string:`${c}:0`})}let s="gs";function o(h){let c=ut(h.bank,h.bankLSB,h.drums,GA(s)),l,u;if(e instanceof mt){let f=e.getPreset(c,h.program,GA(s));l=f.preset.bank+f.bankOffset,u=f.preset.program}else{let f=e.getPreset(c,h.program,GA(s));l=f.bank,u=f.program}h.actualBank=l,h.program=u,h.string=h.actualBank+":"+h.program,r[h.string]||(y(`%cDetected a new preset: %c${h.string}`,I.info,I.recognized),r[h.string]=new Set)}let r={},g=Array(A.tracks.length).fill(0),i=A.tracks.length;function C(){let h=0,c=1/0;return A.tracks.forEach((l,u)=>{g[u]>=l.length||l[g[u]].ticks<c&&(h=u,c=l[g[u]].ticks)}),h}let B=A.midiPorts.slice();for(n.forEach(h=>{o(h)});i>0;){let h=C(),c=A.tracks[h];if(g[h]>=c.length){i--;continue}let l=c[g[h]];if(g[h]++,l.messageStatusByte===F.midiPort){B[h]=l.messageData[0];continue}let u=l.messageStatusByte&240;if(u!==F.noteOn&&u!==F.controllerChange&&u!==F.programChange&&u!==F.systemExclusive)continue;let f=(l.messageStatusByte&15)+A.midiPortChannelOffsets[B[h]]||0,S=n[f];switch(u){case F.programChange:S.program=l.messageData[0],o(S);break;case F.controllerChange:let G=l.messageData[0]===p.lsbForControl0BankSelect;if(l.messageData[0]!==p.bankSelect&&!G||s==="gs"&&S.drums)continue;let D=l.messageData[1];switch(G?S.bankLSB=D:S.bank=D,ft(S.bank,D,s,G,S.drums,f).drumsStatus){case 0:break;case 1:S.drums=!1,o(S);break;case 2:S.drums=!0,o(S);break}break;case F.noteOn:if(l.messageData[1]===0)continue;r[S.string].add(`${l.messageData[0]}-${l.messageData[1]}`);break;case F.systemExclusive:if(!Mn(l)){Dt(l)&&(s="xg",y("%cXG on detected!",I.recognized));continue}let U=[9,0,1,2,3,4,5,6,7,8,10,11,12,13,14,15][l.messageData[5]&15]+A.midiPortChannelOffsets[B[h]],R=!!(l.messageData[7]>0&&l.messageData[5]>>4);S=n[U],S.drums=R,o(S);break}}for(let h of Object.keys(r))r[h].size===0&&(y(`%cDetected change but no keys for %c${h}`,I.info,I.value),delete r[h]);return P(),r}function _r(e=0){function A(h){return h.messageData=new b(h.messageData.buffer),h.messageData.currentIndex=0,6e7/KA(h.messageData,3)}let t=[],s=this.tracks.flat();s.sort((h,c)=>h.ticks-c.ticks);for(let h=0;h<16;h++)t.push([]);let o=0,r=60/(120*this.timeDivision),g=0,i=0,C=[];for(let h=0;h<16;h++)C.push([]);let B=(h,c)=>{let l=C[c].findIndex(f=>f.midiNote===h),u=C[c][l];if(u){let f=o-u.start;u.length=f,c===9&&(u.length=f<e?e:f),C[c].splice(l,1)}i--};for(;g<s.length;){let h=s[g],c=h.messageStatusByte>>4,l=h.messageStatusByte&15;if(c===8)B(h.messageData[0],l);else if(c===9)if(h.messageData[1]===0)B(h.messageData[0],l);else{B(h.messageData[0],l);let u={midiNote:h.messageData[0],start:o,length:-1,velocity:h.messageData[1]/127};t[l].push(u),C[l].push(u),i++}else h.messageStatusByte===81&&(r=60/(A(h)*this.timeDivision));if(++g>=s.length)break;o+=r*(s[g].ticks-h.ticks)}return i>0&&C.forEach((h,c)=>{h.forEach(l=>{let u=o-l.start;l.length=u,c===9&&(l.length=u<e?e:u)})}),t}var _A=class e extends it{embeddedSoundFont=void 0;tracks=[];isDLSRMIDI=!1;static copyFrom(A){let t=new e;return t._copyFromSequence(A),t.isDLSRMIDI=A.isDLSRMIDI,t.embeddedSoundFont=A.embeddedSoundFont?A.embeddedSoundFont.slice(0):void 0,t.tracks=A.tracks.map(n=>[...n]),t}_parseInternal(){ge("%cInterpreting MIDI events...",I.info);let A=!1;this.keyRange={max:0,min:127};let t=[],n=!1;typeof this.RMIDInfo.ICOP<"u"&&(n=!0);let s=!1;typeof this.RMIDInfo.INAM<"u"&&(s=!0);let o=null,r=null;for(let B=0;B<this.tracks.length;B++){let h=this.tracks[B],c=new Set,l=!1;for(let f of h){if(f.messageStatusByte>=128&&f.messageStatusByte<240){l=!0;for(let G=0;G<f.messageData.length;G++)f.messageData[G]=Math.min(127,f.messageData[G]);switch(f.ticks>this.lastVoiceEventTick&&(this.lastVoiceEventTick=f.ticks),f.messageStatusByte&240){case F.controllerChange:switch(f.messageData[0]){case 2:case 116:o=f.ticks;break;case 4:case 117:r===null?r=f.ticks:r=0;break;case 0:this.isDLSRMIDI&&f.messageData[1]!==0&&f.messageData[1]!==127&&(y("%cDLS RMIDI with offset 1 detected!",I.recognized),this.bankOffset=1)}break;case F.noteOn:c.add(f.messageStatusByte&15);let G=f.messageData[0];this.keyRange.min=Math.min(this.keyRange.min,G),this.keyRange.max=Math.max(this.keyRange.max,G);break}}f.messageData.currentIndex=0;let S=AA(f.messageData,f.messageData.length);switch(f.messageData.currentIndex=0,f.messageStatusByte){case F.setTempo:f.messageData.currentIndex=0,this.tempoChanges.push({ticks:f.ticks,tempo:6e7/KA(f.messageData,3)}),f.messageData.currentIndex=0;break;case F.marker:switch(S.trim().toLowerCase()){default:break;case"start":case"loopstart":o=f.ticks;break;case"loopend":r=f.ticks}f.messageData.currentIndex=0;break;case F.copyright:n||(f.messageData.currentIndex=0,t.push(AA(f.messageData,f.messageData.length,void 0,!1)),f.messageData.currentIndex=0);break;case F.lyric:if(S.trim().startsWith("@KMIDI KARAOKE FILE")&&(this.isKaraokeFile=!0,y("%cKaraoke MIDI detected!",I.recognized)),this.isKaraokeFile)f.messageStatusByte=F.text;else{this.lyrics.push(f.messageData),this.lyricsTicks.push(f.ticks);break}case F.text:let D=S.trim();D.startsWith("@KMIDI KARAOKE FILE")?(this.isKaraokeFile=!0,y("%cKaraoke MIDI detected!",I.recognized)):this.isKaraokeFile&&(D.startsWith("@T")||D.startsWith("@A")?A?t.push(D.substring(2).trim()):(this.midiName=D.substring(2).trim(),A=!0,s=!0,this.rawMidiName=VA(this.midiName)):D[0]!=="@"&&(this.lyrics.push(Ps(f.messageData)),this.lyricsTicks.push(f.ticks)));break;case F.trackName:break}}this.usedChannelsOnTrack.push(c),this.trackNames[B]="";let u=h.find(f=>f.messageStatusByte===F.trackName);if(u){u.messageData.currentIndex=0;let f=AA(u.messageData,u.messageData.length);this.trackNames[B]=f,l||t.push(f)}}this.tempoChanges.reverse(),y("%cCorrecting loops, ports and detecting notes...",I.info);let g=[];for(let B of this.tracks){let h=B.find(c=>(c.messageStatusByte&240)===F.noteOn);h&&g.push(h.ticks)}this.firstNoteOn=Math.min(...g),y(`%cFirst note-on detected at: %c${this.firstNoteOn}%c ticks!`,I.info,I.recognized,I.info),o!==null&&r===null?(o=this.firstNoteOn,r=this.lastVoiceEventTick):(o===null&&(o=this.firstNoteOn),(r===null||r===0)&&(r=this.lastVoiceEventTick)),this.loop={start:o,end:r},y(`%cLoop points: start: %c${this.loop.start}%c end: %c${this.loop.end}`,I.info,I.recognized,I.info,I.recognized);let i=0;this.midiPorts=[],this.midiPortChannelOffsets=[];for(let B=0;B<this.tracks.length;B++)if(this.midiPorts.push(-1),this.usedChannelsOnTrack[B].size!==0)for(let h of this.tracks[B]){if(h.messageStatusByte!==F.midiPort)continue;let c=h.messageData[0];this.midiPorts[B]=c,this.midiPortChannelOffsets[c]===void 0&&(this.midiPortChannelOffsets[c]=i,i+=16)}this.midiPortChannelOffsets=[...this.midiPortChannelOffsets].map(B=>B??0);let C=1/0;for(let B of this.midiPorts)B!==-1&&C>B&&(C=B);if(C===1/0&&(C=0),this.midiPorts=this.midiPorts.map(B=>B===-1||B===void 0?C:B),this.midiPortChannelOffsets.length===0&&(this.midiPortChannelOffsets=[0]),this.midiPortChannelOffsets.length<2?y("%cNo additional MIDI Ports detected.",I.info):(this.isMultiPort=!0,y("%cMIDI Ports detected!",I.recognized)),!s)if(this.tracks.length>1){if(this.tracks[0].find(B=>B.messageStatusByte>=F.noteOn&&B.messageStatusByte<F.polyPressure)===void 0){let B=this.tracks[0].find(h=>h.messageStatusByte===F.trackName);B&&(this.rawMidiName=B.messageData,B.messageData.currentIndex=0,this.midiName=AA(B.messageData,B.messageData.length,void 0,!1))}}else{let B=this.tracks[0].find(h=>h.messageStatusByte===F.trackName);B&&(this.rawMidiName=B.messageData,B.messageData.currentIndex=0,this.midiName=AA(B.messageData,B.messageData.length,void 0,!1))}if(n||(this.copyright=t.map(B=>B.trim().replace(/(\r?\n)+/g,`
15
+ Converted from DLS to SF2 with SpessaSynth`;for(let[i,C]of Object.entries(this.soundFontInfo))y(`%c"${i}": %c"${C}"`,I.info,I.recognized);let o=n.find(i=>i.header==="colh");o||(K(),this.parsingError("No colh chunk!")),this.instrumentAmount=N(o.chunkData,4),y(`%cInstruments amount: %c${this.instrumentAmount}`,I.info,I.recognized);let r=_A(n,"wvpl");r||(K(),this.parsingError("No wvpl chunk!")),this.readDLSSamples(r);let g=_A(n,"lins");g||(K(),this.parsingError("No lins chunk!")),this.readDLSInstrumentList(g),this.flush(),y(`%cParsing finished! %c"${this.soundFontInfo.INAM||"UNNAMED"}"%c has %c${this.presets.length} %cpresets,
16
+ %c${this.instruments.length}%c instruments and %c${this.samples.length}%c samples.`,I.info,I.recognized,I.info,I.recognized,I.info,I.recognized,I.info,I.recognized,I.info),K()}verifyHeader(A,...t){for(let n of t)if(A.header.toLowerCase()===n.toLowerCase())return;K(),this.parsingError(`Invalid DLS chunk header! Expected "${t.toString()}" got "${A.header.toLowerCase()}"`)}verifyText(A,t){A.toLowerCase()!==t.toLowerCase()&&(K(),this.parsingError(`FourCC error: Expected "${t.toLowerCase()}" got "${A.toLowerCase()}"`))}parsingError(A){throw new Error(`DLS parse error: ${A} The file may be corrupted.`)}destroySoundBank(){super.destroySoundBank(),delete this.dataArray}};Ue.prototype.readDLSInstrumentList=Ar;Ue.prototype.readDLSInstrument=er;Ue.prototype.readRegion=or;Ue.prototype.readLart=sr;Ue.prototype.readDLSSamples=ir;var Qs=class extends xe{constructor(A,t,n,s,o,r,g,i,C,B,h,c,l){super(A,r,g,i,C,B,s-t/2,o-t/2),this.sampleName=A,this.sampleStartIndex=t,this.sampleEndIndex=n,this.isSampleLoaded=!1,this.sampleID=c,this.sampleLength=this.sampleEndIndex-this.sampleStartIndex,this.sampleDataArray=h,this.sampleData=new Float32Array(0),this.isCompressed&&(this.sampleLoopStartIndex+=this.sampleStartIndex/2,this.sampleLoopEndIndex+=this.sampleStartIndex/2,this.sampleLength=99999999),this.isDataRaw=l}getRawData(){let A=this.sampleDataArray;if(this.isCompressed){if(this.compressedData)return this.compressedData;let t=A.currentIndex;return A.slice(this.sampleStartIndex/2+t,this.sampleEndIndex/2+t)}else{this.isDataRaw||super.getRawData();let t=A.currentIndex;return A.slice(t+this.sampleStartIndex,t+this.sampleEndIndex)}}decodeVorbis(){if(this.sampleLength<1)return;let A=this.sampleDataArray,t=A.currentIndex,n=A.slice(this.sampleStartIndex/2+t,this.sampleEndIndex/2+t);this.sampleData=new Float32Array(0);try{let s=ye.decode(n.buffer);this.sampleData=s.data[0],this.sampleData===void 0&&O(`Error decoding sample ${this.sampleName}: Vorbis decode returned undefined.`)}catch(s){O(`Error decoding sample ${this.sampleName}: ${s}`),this.sampleData=new Float32Array(this.sampleLoopEndIndex+1)}}getAudioData(){return this.isSampleLoaded?this.sampleData:this.sampleLength<1?(O(`Invalid sample ${this.sampleName}! Invalid length: ${this.sampleLength}`),new Float32Array(1)):this.isCompressed?(this.decodeVorbis(),this.isSampleLoaded=!0,this.sampleData):this.isDataRaw?this.loadUncompressedData():this.getUncompressedReadyData()}loadUncompressedData(){if(this.isCompressed)return O("Trying to load a compressed sample via loadUncompressedData()... aborting!"),new Float32Array(0);let A=new Float32Array(this.sampleLength/2),t=this.sampleDataArray.currentIndex,n=new Int16Array(this.sampleDataArray.slice(t+this.sampleStartIndex,t+this.sampleEndIndex).buffer);for(let s=0;s<n.length;s++)A[s]=n[s]/32768;return this.sampleData=A,this.isSampleLoaded=!0,A}getUncompressedReadyData(){let A=this.sampleDataArray.slice(this.sampleStartIndex/2,this.sampleEndIndex/2);return this.sampleData=A,this.isSampleLoaded=!0,A}};function ar(e,A,t=!0){let n=[],s=0;for(;e.chunkData.length>e.chunkData.currentIndex;){let o=Ji(s,e.chunkData,A,t);n.push(o),s++}return n.length>1&&n.pop(),n}function Ji(e,A,t,n){let s=AA(A,20),o=N(A,4)*2,r=N(A,4)*2,g=N(A,4),i=N(A,4),C=N(A,4),B=A[A.currentIndex++];B===255&&(B=60);let h=So(A[A.currentIndex++]),c=N(A,2),l=N(A,2);return new Qs(s,o,r,g,i,C,B,h,c,l,t,e,n)}var ds=class extends U{constructor(A){super();let t=A.currentIndex;this.generatorType=A[t+1]<<8|A[t],this.generatorValue=Ve(A[t+2],A[t+3]),A.currentIndex+=4}};function fs(e){let A=[];for(;e.chunkData.length>e.chunkData.currentIndex;)A.push(new ds(e.chunkData));return A.length>1&&A.pop(),A}var us=class extends Ee{constructor(A){super(),this.generatorZoneStartIndex=N(A,2),this.modulatorZoneStartIndex=N(A,2),this.modulatorZoneSize=0,this.generatorZoneSize=0}setZoneSize(A,t){this.modulatorZoneSize=A,this.generatorZoneSize=t}getGenerators(A){for(let t=this.generatorZoneStartIndex;t<this.generatorZoneStartIndex+this.generatorZoneSize;t++){let n=A[t];if(!n)throw new Error("Missing generator in instrument zone! The file may corrupted.");this.addGenerators(n)}}getModulators(A){for(let t=this.modulatorZoneStartIndex;t<this.modulatorZoneStartIndex+this.modulatorZoneSize;t++){let n=A[t];if(!n)throw new Error("Missing modulator in instrument zone! The file may corrupted.");this.addModulators(n)}}getSample(A){let t=this.generators.find(n=>n.generatorType===a.sampleID);t&&this.setSample(A[t.generatorValue])}};function gr(e,A,t,n){let s=[];for(;e.chunkData.length>e.chunkData.currentIndex;){let o=new us(e.chunkData);if(s.length>0){let r=o.modulatorZoneStartIndex-s[s.length-1].modulatorZoneStartIndex,g=o.generatorZoneStartIndex-s[s.length-1].generatorZoneStartIndex;s[s.length-1].setZoneSize(r,g),s[s.length-1].getGenerators(A),s[s.length-1].getModulators(t),s[s.length-1].getSample(n)}s.push(o)}return s.length>1&&s.pop(),s}var ms=class extends Ne{constructor(A){super(),this.generatorZoneStartIndex=N(A,2),this.modulatorZoneStartIndex=N(A,2),this.modulatorZoneSize=0,this.generatorZoneSize=0}setZoneSize(A,t){this.modulatorZoneSize=A,this.generatorZoneSize=t}getGenerators(A){for(let t=this.generatorZoneStartIndex;t<this.generatorZoneStartIndex+this.generatorZoneSize;t++){let n=A[t];if(!n)throw new Error("Missing generator in preset zone! The file may corrupted.");this.addGenerators(n)}}getModulators(A){for(let t=this.modulatorZoneStartIndex;t<this.modulatorZoneStartIndex+this.modulatorZoneSize;t++){let n=A[t];if(!n)throw new Error("Missing modulator in preset zone! The file may corrupted.");this.addModulators(n)}}getInstrument(A){let t=this.generators.find(n=>n.generatorType===a.instrument);t&&this.setInstrument(A[t.generatorValue])}};function Ir(e,A,t,n){let s=[];for(;e.chunkData.length>e.chunkData.currentIndex;){let o=new ms(e.chunkData);if(s.length>0){let r=o.modulatorZoneStartIndex-s[s.length-1].modulatorZoneStartIndex,g=o.generatorZoneStartIndex-s[s.length-1].generatorZoneStartIndex;s[s.length-1].setZoneSize(r,g),s[s.length-1].getGenerators(A),s[s.length-1].getModulators(t),s[s.length-1].getInstrument(n)}s.push(o)}return s.length>1&&s.pop(),s}var ps=class extends Le{constructor(A,t){super(t),this.presetName=AA(A.chunkData,20).trim().replace(/\d{3}:\d{3}/,""),this.program=N(A.chunkData,2),this.bank=N(A.chunkData,2),this.presetZoneStartIndex=N(A.chunkData,2),this.library=N(A.chunkData,4),this.genre=N(A.chunkData,4),this.morphology=N(A.chunkData,4),this.presetZonesAmount=0}getPresetZones(A,t){this.presetZonesAmount=A;for(let n=this.presetZoneStartIndex;n<this.presetZonesAmount+this.presetZoneStartIndex;n++){let s=t[n];s.hasInstrument()?this.presetZones.push(s):this.globalZone.copyFrom(s)}}};function Cr(e,A,t){let n=[];for(;e.chunkData.length>e.chunkData.currentIndex;){let s=new ps(e,t);if(n.length>0){let o=s.presetZoneStartIndex-n[n.length-1].presetZoneStartIndex;n[n.length-1].getPresetZones(o,A)}n.push(s)}return n.length>1&&n.pop(),n}var ys=class extends be{constructor(A){super(),this.instrumentName=AA(A.chunkData,20).trim(),this.instrumentZoneIndex=N(A.chunkData,2),this.instrumentZonesAmount=0}getInstrumentZones(A,t){this.instrumentZonesAmount=A;for(let n=this.instrumentZoneIndex;n<this.instrumentZonesAmount+this.instrumentZoneIndex;n++){let s=t[n];s.hasSample()?this.addZones(s):this.globalZone.copyFrom(s)}}};function Er(e,A){let t=[];for(;e.chunkData.length>e.chunkData.currentIndex;){let n=new ys(e);if(t.length>0){let s=n.instrumentZoneIndex-t[t.length-1].instrumentZoneIndex;t[t.length-1].getInstrumentZones(s,A)}t.push(n)}return t.length>1&&t.pop(),t}function Fn(e){let A=[];for(;e.chunkData.length>e.chunkData.currentIndex;){let t=e.chunkData,n=N(t,2),s=N(t,2),o=Ve(t[t.currentIndex++],t[t.currentIndex++]),r=N(t,2),g=N(t,2);A.push(new mA(n,r,s,o,g))}return A}var wn=class extends Te{constructor(A,t=!0){super(),t&&console.warn("Using the constructor directly is deprecated. Use loadSoundFont instead."),this.dataArray=new b(A),Ie("%cParsing SoundFont...",I.info),this.dataArray||(K(),this.parsingError("No data provided!"));let n=IA(this.dataArray,!1);this.verifyHeader(n,"riff");let s=AA(this.dataArray,4).toLowerCase();if(s!=="sfbk"&&s!=="sfpk")throw K(),new SyntaxError(`Invalid soundFont! Expected "sfbk" or "sfpk" got "${s}"`);let o=s==="sfpk",r=IA(this.dataArray);for(this.verifyHeader(r,"list"),AA(r.chunkData,4);r.chunkData.length>r.chunkData.currentIndex;){let $=IA(r.chunkData),Y;switch($.header.toLowerCase()){case"ifil":case"iver":Y=`${N($.chunkData,2)}.${N($.chunkData,2)}`,this.soundFontInfo[$.header]=Y;break;case"icmt":Y=AA($.chunkData,$.chunkData.length,void 0,!1),this.soundFontInfo[$.header]=Y;break;case"dmod":let aA=Fn($);aA.pop(),Y=`Modulators: ${aA.length}`,this.defaultModulators=aA,this.customDefaultModulators=!0,this.soundFontInfo[$.header]=Y;break;default:Y=AA($.chunkData,$.chunkData.length),this.soundFontInfo[$.header]=Y}y(`%c"${$.header}": %c"${Y}"`,I.info,I.recognized)}let g=IA(this.dataArray,!1);this.verifyHeader(g,"list"),this.verifyText(AA(this.dataArray,4),"sdta"),y("%cVerifying smpl chunk...",I.warn);let i=IA(this.dataArray,!1);this.verifyHeader(i,"smpl");let C;if(o){y("%cSF2Pack detected, attempting to decode the smpl chunk...",I.info);try{C=ye.decode(this.dataArray.buffer.slice(this.dataArray.currentIndex,this.dataArray.currentIndex+g.size-12)).data[0]}catch($){throw K(),new Error(`SF2Pack Ogg Vorbis decode error: ${$}`)}y(`%cDecoded the smpl chunk! Length: %c${C.length}`,I.info,I.value)}else C=this.dataArray,this.sampleDataStartIndex=this.dataArray.currentIndex;y(`%cSkipping sample chunk, length: %c${g.size-12}`,I.info,I.value),this.dataArray.currentIndex+=g.size-12,y("%cLoading preset data chunk...",I.warn);let B=IA(this.dataArray);this.verifyHeader(B,"list"),AA(B.chunkData,4);let h=IA(B.chunkData);this.verifyHeader(h,"phdr");let c=IA(B.chunkData);this.verifyHeader(c,"pbag");let l=IA(B.chunkData);this.verifyHeader(l,"pmod");let u=IA(B.chunkData);this.verifyHeader(u,"pgen");let f=IA(B.chunkData);this.verifyHeader(f,"inst");let S=IA(B.chunkData);this.verifyHeader(S,"ibag");let G=IA(B.chunkData);this.verifyHeader(G,"imod");let D=IA(B.chunkData);this.verifyHeader(D,"igen");let M=IA(B.chunkData);this.verifyHeader(M,"shdr"),this.dataArray.currentIndex=this.sampleDataStartIndex,this.samples.push(...ar(M,C,!o));let v=fs(D),R=Fn(G),E=gr(S,v,R,this.samples);this.instruments=Er(f,E);let x=fs(u),L=Fn(l),sA=Ir(c,x,L,this.instruments);this.addPresets(...Cr(h,sA,this)),this.flush(),y(`%cParsing finished! %c"${this.soundFontInfo.INAM}"%c has %c${this.presets.length} %cpresets,
17
+ %c${this.instruments.length}%c instruments and %c${this.samples.length}%c samples.`,I.info,I.recognized,I.info,I.recognized,I.info,I.recognized,I.info,I.recognized,I.info),K(),o&&delete this.dataArray}verifyHeader(A,t){A.header.toLowerCase()!==t.toLowerCase()&&(K(),this.parsingError(`Invalid chunk header! Expected "${t.toLowerCase()}" got "${A.header.toLowerCase()}"`))}verifyText(A,t){A.toLowerCase()!==t.toLowerCase()&&(K(),this.parsingError(`Invalid FourCC: Expected "${t.toLowerCase()}" got "${A.toLowerCase()}"\``))}destroySoundBank(){super.destroySoundBank(),delete this.dataArray}};function st(e){let A=e.slice(8,12),t=new b(A);return AA(t,4,void 0,!1).toLowerCase()==="dls "?new Ue(e):new wn(e,!1)}function cr(){this.soundfontManager.soundfontList.some(e=>e.id===At)&&this.soundfontManager.deleteSoundFont(At)}function hr(e,A){this.soundfontBankOffset=A;let t=st(e);this.soundfontManager.addNewSoundFont(t,At,A);let n=this.soundfontManager.getCurrentSoundFontOrder();n.pop(),n.unshift(At),this.soundfontManager.rearrangeSoundFonts(n),this._snapshot!==void 0&&this.applySynthesizerSnapshot(this._snapshot),y(`%cEmbedded sound bank set at offset %c${A}`,I.recognized,I.value)}function lr(){let e=this.soundfontManager.getPresetList();this.clearCache(),this.callEvent("presetlistchange",e),this.getDefaultPresets(),this.midiAudioChannels.forEach(A=>{A.setPresetLock(!1)}),this.resetAllControllers(!1)}function Br(e,A=!1){this.transposition=0;for(let t=0;t<this.midiAudioChannels.length;t++)this.midiAudioChannels[t].transposeChannel(e,A);this.transposition=e}function Qr(e){e=Math.round(e);for(let A=0;A<this.midiAudioChannels.length;A++)this.midiAudioChannels[A].setCustomController(nA.masterTuning,e)}var pt=class e{program;bank;isBankLSB;patchName;lockPreset;lockedSystem;midiControllers;lockedControllers;customControllers;lockVibrato;channelVibrato;channelTransposeKeyShift;channelOctaveTuning;isMuted;velocityOverride;drumChannel;static getChannelSnapshot(A,t){let n=A.midiAudioChannels[t],s=new e;return s.program=n.preset.program,s.bank=n.getBankSelect(),s.isBankLSB=s.bank!==n.bank,s.lockPreset=n.lockPreset,s.lockedSystem=n.lockedSystem,s.patchName=n.preset.presetName,s.midiControllers=n.midiControllers,s.lockedControllers=n.lockedControllers,s.customControllers=n.customControllers,s.channelVibrato=n.channelVibrato,s.lockVibrato=n.lockGSNRPNParams,s.channelTransposeKeyShift=n.channelTransposeKeyShift,s.channelOctaveTuning=n.channelOctaveTuning,s.isMuted=n.isMuted,s.velocityOverride=n.velocityOverride,s.drumChannel=n.drumChannel,s}static applyChannelSnapshot(A,t,n){let s=A.midiAudioChannels[t];s.muteChannel(n.isMuted),s.setDrums(n.drumChannel),s.midiControllers=n.midiControllers,s.lockedControllers=n.lockedControllers,s.customControllers=n.customControllers,s.updateChannelTuning(),s.channelVibrato=n.channelVibrato,s.lockGSNRPNParams=n.lockVibrato,s.channelTransposeKeyShift=n.channelTransposeKeyShift,s.channelOctaveTuning=n.channelOctaveTuning,s.velocityOverride=n.velocityOverride,s.setPresetLock(!1),s.setBankSelect(n.bank,n.isBankLSB),s.programChange(n.program),s.setPresetLock(n.lockPreset),s.lockedSystem=n.lockedSystem}};var ot=class e{channelSnapshots;keyMappings;mainVolume;pan;interpolation;system;transposition;static createSynthesizerSnapshot(A){let t=new e;return t.channelSnapshots=A.midiAudioChannels.map((n,s)=>pt.getChannelSnapshot(A,s)),t.keyMappings=A.keyModifierManager.getMappings(),t.mainVolume=A.midiVolume,t.pan=A.pan,t.system=A.system,t.interpolation=A.interpolationType,t.transposition=A.transposition,t.effectsConfig={},t}static applySnapshot(A,t){for(A.setSystem(t.system),A.setMasterParameter(JA.mainVolume,t.mainVolume),A.setMasterParameter(JA.masterPan,t.pan),A.transposeAllChannels(t.transposition),A.interpolationType=t.interpolation,A.keyModifierManager.setMappings(t.keyMappings);A.midiAudioChannels.length<t.channelSnapshots.length;)A.createMidiChannel();t.channelSnapshots.forEach((n,s)=>{pt.applyChannelSnapshot(A,s,n)}),y("%cFinished restoring controllers!",I.info)}};function dr(e){this._snapshot=e,ot.applySnapshot(this,e),y("%cFinished applying snapshot!",I.info),this.resetAllControllers()}function Rn(e,A,t){if(t<e)return 0;let n=(t-e)/(1/A)+.25;return Math.abs(n-~~(n+.5))*4-1}var yt=class{static getSampleLinear(A,t){let n=A.sample,s=n.cursor,o=n.sampleData;if(n.isLooping){let r=n.loopEnd-n.loopStart;for(let g=0;g<t.length;g++){for(;s>=n.loopEnd;)s-=r;let i=~~s,C=i+1;for(;C>=n.loopEnd;)C-=r;let B=s-i,h=o[C],c=o[i];t[g]=c+(h-c)*B,s+=n.playbackStep*A.currentTuningCalculated}}else{if(n.loopingMode===2&&!A.isInRelease)return;for(let r=0;r<t.length;r++){let g=~~s,i=g+1;if(i>=n.end){A.finished=!0;return}let C=s-g,B=o[i],h=o[g];t[r]=h+(B-h)*C,s+=n.playbackStep*A.currentTuningCalculated}}A.sample.cursor=s}static getSampleNearest(A,t){let n=A.sample,s=n.cursor,o=n.loopEnd-n.loopStart,r=n.sampleData;if(A.sample.isLooping)for(let g=0;g<t.length;g++){for(;s>=n.loopEnd;)s-=o;let i=~~s+1;for(;i>=n.loopEnd;)i-=o;t[g]=r[i],s+=n.playbackStep*A.currentTuningCalculated}else{if(n.loopingMode===2&&!A.isInRelease)return;for(let g=0;g<t.length;g++){let i=~~s+1;if(i>=n.end){A.finished=!0;return}t[g]=r[i],s+=n.playbackStep*A.currentTuningCalculated}}n.cursor=s}static getSampleCubic(A,t){let n=A.sample,s=n.cursor,o=n.sampleData;if(n.isLooping){let r=n.loopEnd-n.loopStart;for(let g=0;g<t.length;g++){for(;s>=n.loopEnd;)s-=r;let i=~~s,C=i+1,B=C+1,h=B+1,c=s-i;C>=n.loopEnd&&(C-=r),B>=n.loopEnd&&(B-=r),h>=n.loopEnd&&(h-=r);let l=o[i],u=o[C],f=o[B],S=o[h],G=.5*(f-l),D=l-2.5*u+2*f-.5*S,M=.5*(S-l)+1.5*(u-f);t[g]=((M*c+D)*c+G)*c+u,s+=n.playbackStep*A.currentTuningCalculated}}else{if(n.loopingMode===2&&!A.isInRelease)return;for(let r=0;r<t.length;r++){let g=~~s,i=g+1,C=i+1,B=C+1,h=s-g;if(i>=n.end||C>=n.end||B>=n.end){A.finished=!0;return}let c=o[g],l=o[i],u=o[C],f=o[B],S=.5*(u-c),G=c-2.5*l+2*u-.5*f,D=.5*(f-c)+1.5*(l-u);t[r]=((D*h+G)*h+S)*h+l,s+=n.playbackStep*A.currentTuningCalculated}}A.sample.cursor=s}};function fr(e,A,t,n,s,o,r,g){if(e.isInRelease||A>=e.releaseStartTime&&(e.isInRelease=!0,le.startRelease(e),Be.startRelease(e),e.sample.loopingMode===3&&(e.sample.isLooping=!1)),e.modulatedGenerators[a.initialAttenuation]>2500)return e.isInRelease&&(e.finished=!0),e.finished;let i=e.targetKey,C=e.modulatedGenerators[a.fineTune]+this.channelOctaveTuning[e.midiNote]+this.channelTuningCents,B=e.modulatedGenerators[a.coarseTune],h=this.synth.tunings[this.preset.program]?.[e.realKey];if(h!==void 0&&h?.midiNote>=0&&(i=h.midiNote,C+=h.centTuning),e.portamentoFromKey>-1){let L=Math.min((A-e.startTime)/e.portamentoDuration,1),sA=i-e.portamentoFromKey;B-=sA*(1-L)}C+=(i-e.sample.rootKey)*e.modulatedGenerators[a.scaleTuning];let c=0,l=0,u=e.modulatedGenerators[a.vibLfoToPitch],f=e.modulatedGenerators[a.vibLfoToVolume],S=e.modulatedGenerators[a.vibLfoToFilterFc];if(u!==0||f!==0||S!==0){let L=e.startTime+he(e.modulatedGenerators[a.delayVibLFO]),sA=Ot(e.modulatedGenerators[a.freqVibLFO]),$=Rn(L,sA,A);C+=$*(u*this.customControllers[nA.modulationMultiplier]),l+=-$*f,c+=$*S}let G=e.modulatedGenerators[a.modLfoToPitch],D=e.modulatedGenerators[a.modLfoToVolume],M=e.modulatedGenerators[a.modLfoToFilterFc];if(G!==0||M!==0||D!==0){let L=e.startTime+he(e.modulatedGenerators[a.delayModLFO]),sA=Ot(e.modulatedGenerators[a.freqModLFO]),$=Rn(L,sA,A);C+=$*(G*this.customControllers[nA.modulationMultiplier]),l+=-$*D,c+=$*M}if(this.channelVibrato.depth>0){let L=Rn(e.startTime+this.channelVibrato.delay,this.channelVibrato.rate,A);L&&(C+=L*this.channelVibrato.depth)}let v=e.modulatedGenerators[a.modEnvToPitch],R=e.modulatedGenerators[a.modEnvToFilterFc];if(R!==0||v!==0){let L=Be.getValue(e,A);c+=L*R,C+=L*v}let E=~~(C+B*100);E!==e.currentTuningCents&&(e.currentTuningCents=E,e.currentTuningCalculated=Math.pow(2,E/1200));let x=new Float32Array(t.length);switch(this.synth.interpolationType){case et.fourthOrder:yt.getSampleCubic(e,x);break;case et.linear:default:yt.getSampleLinear(e,x);break;case et.nearestNeighbor:yt.getSampleNearest(e,x);break}return Ke.apply(e,x,c,this.synth.filterSmoothingFactor),le.apply(e,x,l,this.synth.volumeEnvelopeSmoothingFactor),this.panVoice(e,x,t,n,s,o,r,g),e.finished}function ur(e,A=-12e3){e+=this.customControllers[nA.channelKeyShift],this.voices.forEach(t=>{t.realKey===e&&(t.modulatedGenerators[a.releaseVolEnv]=A,t.release(this.synth.currentSynthTime))})}function mr(e,A=!0){e=Math.round(e),this.setCustomController(nA.channelTuning,e),A&&y(`%cFine tuning for %c${this.channelNumber}%c is now set to %c${e}%c cents.`,I.info,I.recognized,I.info,I.value,I.info)}function pr(e){e=Math.round(e),y(`%cChannel ${this.channelNumber} modulation depth. Cents: %c${e}`,I.info,I.value),this.setCustomController(nA.modulationMultiplier,e/50)}var ve={pitchBendRange:0,fineTuning:1,coarseTuning:2,modulationDepth:5,resetParameters:16383},Xe={partParameter:1,awe32:127,SF2:120},St={vibratoRate:8,vibratoDepth:9,vibratoDelay:10,TVFFilterCutoff:32,TVFFilterResonance:33,EGAttackTime:99,EGReleaseTime:102};function yr(e){this.midiControllers[p.dataEntryMsb]=e<<7;let A=()=>{this.channelVibrato.delay===0&&this.channelVibrato.rate===0&&this.channelVibrato.depth===0&&(this.channelVibrato.depth=50,this.channelVibrato.rate=8,this.channelVibrato.delay=.6)},t=(n,s,o)=>{o.length>0&&(o=" "+o),y(`%c${n} for %c${this.channelNumber}%c is now set to %c${s}%c${o}.`,I.info,I.recognized,I.info,I.value,I.info)};switch(this.dataEntryState){default:case vA.Idle:break;case vA.NRPFine:if(this.lockGSNRPNParams)return;let n=this.midiControllers[p.NRPNMsb]>>7,s=this.midiControllers[p.NRPNLsb]>>7,o=this.midiControllers[p.lsbForControl6DataEntry]>>7;switch(n){default:if(e===64)return;O(`%cUnrecognized NRPN for %c${this.channelNumber}%c: %c(0x${s.toString(16).toUpperCase()} 0x${s.toString(16).toUpperCase()})%c data value: %c${e}`,I.warn,I.recognized,I.warn,I.unrecognized,I.warn,I.value);break;case Xe.partParameter:switch(s){default:if(e===64)return;O(`%cUnrecognized NRPN for %c${this.channelNumber}%c: %c(0x${n.toString(16)} 0x${s.toString(16)})%c data value: %c${e}`,I.warn,I.recognized,I.warn,I.unrecognized,I.warn,I.value);break;case St.vibratoRate:if(e===64)return;A(),this.channelVibrato.rate=e/64*8,t("Vibrato rate",`${e} = ${this.channelVibrato.rate}`,"Hz");break;case St.vibratoDepth:if(e===64)return;A(),this.channelVibrato.depth=e/2,t("Vibrato depth",`${e} = ${this.channelVibrato.depth}`,"cents of detune");break;case St.vibratoDelay:if(e===64)return;A(),this.channelVibrato.delay=e/64/3,t("Vibrato delay",`${e} = ${this.channelVibrato.delay}`,"seconds");break;case St.TVFFilterCutoff:this.controllerChange(p.brightness,e),t("Filter cutoff",e.toString(),"");break;case St.EGAttackTime:this.controllerChange(p.attackTime,e),t("EG attack time",e.toString(),"");break;case St.EGReleaseTime:this.controllerChange(p.releaseTime,e),t("EG release time",e.toString(),"");break}break;case Xe.awe32:break;case Xe.SF2:if(s>100)break;let g=this.customControllers[nA.sf2NPRNGeneratorLSB],i=(e<<7|o)-8192;this.setGeneratorOffset(g,i);break}break;case vA.RPCoarse:case vA.RPFine:let r=this.midiControllers[p.RPNMsb]|this.midiControllers[p.RPNLsb]>>7;switch(r){default:O(`%cUnrecognized RPN for %c${this.channelNumber}%c: %c(0x${r.toString(16)})%c data value: %c${e}`,I.warn,I.recognized,I.warn,I.unrecognized,I.warn,I.value);break;case ve.pitchBendRange:this.midiControllers[cA+X.pitchWheelRange]=e<<7,t("Pitch bend range",e.toString(),"semitones");break;case ve.coarseTuning:let g=e-64;this.setCustomController(nA.channelTuningSemitones,g),t("Coarse tuning",g.toString(),"semitones");break;case ve.fineTuning:this.setTuning(e-64,!1);break;case ve.modulationDepth:this.setModulationDepth(e*100);break;case ve.resetParameters:this.resetParameters();break}}}var Pi=[a.delayModLFO,a.freqModLFO,a.delayVibLFO,a.freqVibLFO,a.delayModEnv,a.attackModEnv,a.holdModEnv,a.decayModEnv,a.sustainModEnv,a.releaseModEnv,a.delayVolEnv,a.attackVolEnv,a.holdVolEnv,a.decayVolEnv,a.sustainVolEnv,a.releaseVolEnv,a.fineTune,a.modLfoToPitch,a.vibLfoToPitch,a.modEnvToPitch,a.modLfoToVolume,a.initialFilterFc,a.initialFilterQ,a.modLfoToFilterFc,a.modEnvToFilterFc,a.chorusEffectsSend,a.reverbEffectsSend];function Sr(e,A,t){let n=(c,l,u)=>Math.max(l,Math.min(u,c)),s=c=>Math.max(-32768,1200*Math.log2(c/1e3)),o=c=>6900+1200*Math.log2(c/440),r=t<<7|A;r-=8192;let g=Pi[e];g||O(`Invalid AWE32 LSB: %c${e}`,I.unrecognized);let i,C,B,h;switch(g){default:break;case a.delayModLFO:case a.delayVibLFO:case a.delayVolEnv:case a.delayModEnv:i=4*n(r,0,5900),this.setGeneratorOverride(g,s(i));break;case a.attackVolEnv:case a.attackModEnv:i=n(r,0,5940),this.setGeneratorOverride(g,s(i));break;case a.holdVolEnv:case a.holdModEnv:i=n(r,0,8191),this.setGeneratorOverride(g,s(i));break;case a.decayModEnv:case a.decayVolEnv:case a.releaseVolEnv:case a.releaseModEnv:i=4*n(r,0,5940),this.setGeneratorOverride(g,s(i));break;case a.freqVibLFO:case a.freqModLFO:C=.084*A,this.setGeneratorOverride(g,o(C),!0);break;case a.sustainVolEnv:case a.sustainModEnv:B=A*7.5,this.setGeneratorOverride(g,B);break;case a.fineTune:this.setGeneratorOverride(g,r,!0);break;case a.modLfoToPitch:case a.vibLfoToPitch:h=n(r,-127,127)*9.375,this.setGeneratorOverride(g,h,!0);break;case a.modEnvToPitch:h=n(r,-127,127)*9.375,this.setGeneratorOverride(g,h);break;case a.modLfoToVolume:B=1.875*A,this.setGeneratorOverride(g,B,!0);break;case a.initialFilterFc:let c=4335+59*A;this.setGeneratorOverride(g,c,!0);break;case a.initialFilterQ:B=215*(A/127),this.setGeneratorOverride(g,B,!0);break;case a.modLfoToFilterFc:h=n(r,-64,63)*56.25,this.setGeneratorOverride(g,h,!0);break;case a.modEnvToFilterFc:h=n(r,-64,63)*56.25,this.setGeneratorOverride(g,h);break;case a.chorusEffectsSend:case a.reverbEffectsSend:this.setGeneratorOverride(g,n(r,0,255)*(1e3/255));break}}function Dr(e){switch(this.midiControllers[p.lsbForControl6DataEntry]=e<<7,this.dataEntryState){default:break;case vA.RPCoarse:case vA.RPFine:switch(this.midiControllers[p.RPNMsb]|this.midiControllers[p.RPNLsb]>>7){default:break;case ve.pitchBendRange:if(e===0)break;this.midiControllers[cA+X.pitchWheelRange]|=e;let s=(this.midiControllers[cA+X.pitchWheelRange]>>7)+e/128;y(`%cChannel ${this.channelNumber} bend range. Semitones: %c${s}`,I.info,I.value);break;case ve.fineTuning:let r=this.customControllers[nA.channelTuning]<<7|e;this.setTuning(r*.01220703125);break;case ve.modulationDepth:let i=this.customControllers[nA.modulationMultiplier]*50+e/128*100;this.setModulationDepth(i);break;case 16383:this.resetParameters();break}break;case vA.NRPFine:let t=this.midiControllers[p.NRPNMsb]>>7,n=this.midiControllers[p.NRPNLsb]>>7;if(t===Xe.SF2)return;switch(t){default:O(`%cUnrecognized NRPN LSB for %c${this.channelNumber}%c: %c(0x${n.toString(16).toUpperCase()} 0x${n.toString(16).toUpperCase()})%c data value: %c${e}`,I.warn,I.recognized,I.warn,I.unrecognized,I.warn,I.value);break;case Xe.awe32:Sr.call(this,n,e,this.midiControllers[p.dataEntryMsb]>>7);break}}}function kr(e,A,t=!1){if(e>127){if(!t)return;switch(e){default:return;case Is.velocityOverride:this.velocityOverride=A}}if(e>=p.lsbForControl1ModulationWheel&&e<=p.lsbForControl13EffectControl2&&e!==p.lsbForControl6DataEntry){let n=e-32;if(this.lockedControllers[n])return;this.midiControllers[n]=this.midiControllers[n]&16256|A&127,this.voices.forEach(s=>this.computeModulators(s,1,n))}if(!this.lockedControllers[e]){switch(this.midiControllers[e]=A<<7,e){case p.allNotesOff:this.stopAllNotes();break;case p.allSoundOff:this.stopAllNotes(!0);break;case p.bankSelect:this.setBankSelect(A);break;case p.lsbForControl0BankSelect:this.setBankSelect(A,!0);break;case p.RPNLsb:this.dataEntryState=vA.RPFine;break;case p.RPNMsb:this.dataEntryState=vA.RPCoarse;break;case p.NRPNMsb:this.customControllers[nA.sf2NPRNGeneratorLSB]=0,this.dataEntryState=vA.NRPCoarse;break;case p.NRPNLsb:this.midiControllers[p.NRPNMsb]>>7===Xe.SF2&&(this.customControllers[nA.sf2NPRNGeneratorLSB]%100!==0&&(this.customControllers[nA.sf2NPRNGeneratorLSB]=0),A===100?this.customControllers[nA.sf2NPRNGeneratorLSB]+=100:A===101?this.customControllers[nA.sf2NPRNGeneratorLSB]+=1e3:A===102?this.customControllers[nA.sf2NPRNGeneratorLSB]+=1e4:A<100&&(this.customControllers[nA.sf2NPRNGeneratorLSB]+=A)),this.dataEntryState=vA.NRPFine;break;case p.dataEntryMsb:this.dataEntryCoarse(A);break;case p.lsbForControl6DataEntry:this.dataEntryFine(A);break;case p.resetAllControllers:this.resetControllersRP15Compliant();break;case p.sustainPedal:A>=64?this.holdPedal=!0:(this.holdPedal=!1,this.sustainedVoices.forEach(n=>{n.release(this.synth.currentSynthTime)}),this.sustainedVoices=[]);break;default:this.voices.forEach(n=>this.computeModulators(n,1,e));break}this.synth.callEvent("controllerchange",{channel:this.channelNumber,controllerNumber:e,controllerValue:A})}}function Fr(e=!1){e?(this.voices.length=0,this.sustainedVoices.length=0,this.sendChannelProperty()):(this.voices.forEach(A=>{A.isInRelease||A.release(this.synth.currentSynthTime)}),this.sustainedVoices.forEach(A=>{A.release(this.synth.currentSynthTime)}))}function wr(e){e&&this.stopAllNotes(!0),this.isMuted=e,this.sendChannelProperty(),this.synth.callEvent("mutechannel",{channel:this.channelNumber,isMuted:e})}function Rr(e,A=!1){this.drumChannel||(e+=this.synth.transposition);let t=Math.trunc(e),n=this.channelTransposeKeyShift+this.customControllers[nA.channelTransposeFine]/100;this.drumChannel&&!A||e===n||(t!==this.channelTransposeKeyShift&&this.controllerChange(p.allNotesOff,127),this.channelTransposeKeyShift=t,this.setCustomController(nA.channelTransposeFine,(e-t)*100),this.sendChannelProperty())}var Vt={0:0,1:.006,2:.023,4:.05,8:.11,16:.25,32:.5,64:2.06,80:4.2,96:8.4,112:19.5,116:26.7,120:40,124:80,127:480};function Ki(e){if(Vt[e]!==void 0)return Vt[e];let A=null,t=null;for(let n of Object.keys(Vt))n=parseInt(n),n<e&&(A===null||n>A)&&(A=n),n>e&&(t===null||n<t)&&(t=n);if(A!==null&&t!==null){let n=Vt[A],s=Vt[t];return n+(e-A)*(s-n)/(t-A)}return 0}function Gr(e,A){return Ki(e)*(A/30)}function Mr(e,A){if(A<1){this.noteOff(e);return}if(A=Math.min(127,A),this.synth.highPerformanceMode&&this.synth.totalVoicesAmount>200&&A<40||this.synth.highPerformanceMode&&A<10||this.isMuted)return;let t=e+this.channelTransposeKeyShift+this.customControllers[nA.channelKeyShift],n=t;if(t>127||t<0)return;let s=this.preset.program,o=this.synth.tunings[s]?.[t]?.midiNote;o>=0&&(n=o),this.velocityOverride>0&&(A=this.velocityOverride);let r=this.synth.keyModifierManager.getVelocity(this.channelNumber,t);r>-1&&(A=r);let g=this.synth.keyModifierManager.getGain(this.channelNumber,t),i=-1,C=0,B=this.midiControllers[p.portamentoTime]>>7,h=this.midiControllers[p.portamentoControl],c=h>>7;if(!this.drumChannel&&c!==n&&this.midiControllers[p.portamentoOnOff]>=8192&&B>0){if(h!==1){let S=Math.abs(n-c);C=Gr(B,S),i=c}this.controllerChange(p.portamentoControl,n)}let l=this.synth.getVoices(this.channelNumber,n,A,t),u=0;this.randomPan&&(u=Math.round(Math.random()*1e3-500));let f=this.voices;l.forEach(S=>{S.portamentoFromKey=i,S.portamentoDuration=C,S.overridePan=u,S.gain=g,this.sysExModulators.modulatorList.forEach(L=>{let sA=L.mod,$=S.modulators.findIndex(Y=>EA.isIdentical(Y,sA));$!==-1?S.modulators[$]=EA.copy(sA):S.modulators.push(EA.copy(sA))}),this.generatorOverridesEnabled&&this.generatorOverrides.forEach((L,sA)=>{L!==an&&(S.generators[sA]=L)});let G=S.exclusiveClass;G!==0&&f.forEach(L=>{L.exclusiveClass===G&&L.exclusiveRelease(this.synth.currentSynthTime)}),this.computeModulators(S);let D=S.modulatedGenerators[a.startAddrsOffset]+S.modulatedGenerators[a.startAddrsCoarseOffset]*32768,M=S.modulatedGenerators[a.endAddrOffset]+S.modulatedGenerators[a.endAddrsCoarseOffset]*32768,v=S.modulatedGenerators[a.startloopAddrsOffset]+S.modulatedGenerators[a.startloopAddrsCoarseOffset]*32768,R=S.modulatedGenerators[a.endloopAddrsOffset]+S.modulatedGenerators[a.endloopAddrsCoarseOffset]*32768,E=S.sample,x=L=>Math.max(0,Math.min(E.sampleData.length-1,L));if(E.cursor=x(E.cursor+D),E.end=x(E.end+M),E.loopStart=x(E.loopStart+v),E.loopEnd=x(E.loopEnd+R),E.loopEnd<E.loopStart){let L=E.loopStart;E.loopStart=E.loopEnd,E.loopEnd=L}E.loopEnd-E.loopStart<1&&(E.loopingMode=0,E.isLooping=!1),S.volumeEnvelope.attenuation=S.volumeEnvelope.attenuationTargetGain,S.currentPan=Math.max(-500,Math.min(500,S.modulatedGenerators[a.pan]))}),this.synth.totalVoicesAmount+=l.length,this.synth.totalVoicesAmount>this.synth.voiceCap&&this.synth.voiceKilling(l.length),f.push(...l),this.sendChannelProperty(),this.synth.callEvent("noteon",{midiNote:e,channel:this.channelNumber,velocity:A})}function xr(e){if(e>127||e<0){O("Received a noteOn for note",e,"Ignoring.");return}let A=e+this.channelTransposeKeyShift+this.customControllers[nA.channelKeyShift];if(this.synth.highPerformanceMode&&!this.drumChannel){this.killNote(A,-6950),this.synth.callEvent("noteoff",{midiNote:e,channel:this.channelNumber});return}this.voices.forEach(n=>{n.realKey!==A||n.isInRelease===!0||(this.holdPedal?this.sustainedVoices.push(n):n.release(this.synth.currentSynthTime))}),this.synth.callEvent("noteoff",{midiNote:e,channel:this.channelNumber})}function Nr(e,A){this.voices.forEach(t=>{t.midiNote===e&&(t.pressure=A,this.computeModulators(t,0,X.polyPressure))}),this.synth.callEvent("polypressure",{channel:this.channelNumber,midiNote:e,pressure:A})}function br(e){this.midiControllers[cA+X.channelPressure]=e<<7,this.updateChannelTuning(),this.voices.forEach(A=>this.computeModulators(A,0,X.channelPressure)),this.synth.callEvent("channelpressure",{channel:this.channelNumber,pressure:e})}function Lr(e,A){if(this.lockedControllers[cA+X.pitchWheel])return;let t=A|e<<7;this.synth.callEvent("pitchwheel",{channel:this.channelNumber,MSB:e,LSB:A}),this.midiControllers[cA+X.pitchWheel]=t,this.voices.forEach(n=>this.computeModulators(n,0,X.pitchWheel)),this.sendChannelProperty()}function Tr(e){if(e.length!==12)throw new Error("Tuning is not the length of 12.");this.channelOctaveTuning=new Int8Array(128);for(let A=0;A<128;A++)this.channelOctaveTuning[A]=e[A%12]}function Ur(e){if(this.lockPreset)return;let A=this.getBankSelect(),t=this.isXGChannel,n=this.synth.soundfontManager.getPreset(A,e,t),s=n.preset;this.setPreset(s),this.sentBank=Math.min(128,s.bank+n.bankOffset),this.synth.callEvent("programchange",{channel:this.channelNumber,program:s.program,bank:this.sentBank}),this.sendChannelProperty()}var Gn=class{modulatorList=[];resetModulators(){this.modulatorList=[]}_getModulatorId(A,t,n,s){return`${A}-${t}-${n}-${s}`}_deleteModulator(A){this.modulatorList=this.modulatorList.filter(t=>t.id!==A)}setModulator(A,t,n,s=!1,o=!1){let r=this._getModulatorId(A,t,s,o);n===0&&this._deleteModulator(r);let g=this.modulatorList.find(i=>i.id===r);if(g)g.mod.transformAmount=n;else{let i,C;A>=cA?(i=A-cA,C=!1):(i=A,C=!0);let B=new EA(i,DA.linear,C?1:0,s?1:0,0,X.noController,DA.linear,0,0,0,t,n,0);this.modulatorList.push({mod:B,id:r})}}};var qi=1e3/200;function vr(e,A,t){if(A.transformAmount===0)return A.currentValue=0,0;let n;if(A.sourceUsesCC)n=e[A.sourceIndex];else{let C=A.sourceIndex+cA;switch(A.sourceIndex){case X.noController:n=16383;break;case X.noteOnKeyNum:n=t.midiNote<<7;break;case X.noteOnVelocity:n=t.velocity<<7;break;case X.polyPressure:n=t.pressure<<7;break;default:n=e[C];break}}let s=rt[A.sourceCurveType][A.sourcePolarity][A.sourceDirection][n],o;if(A.secSrcUsesCC)o=e[A.secSrcIndex];else{let C=A.secSrcIndex+cA;switch(A.secSrcIndex){case X.noController:o=16383;break;case X.noteOnKeyNum:o=t.midiNote<<7;break;case X.noteOnVelocity:o=t.velocity<<7;break;case X.polyPressure:o=t.pressure<<7;break;default:o=e[C]}}let r=rt[A.secSrcCurveType][A.secSrcPolarity][A.secSrcDirection][o],g=A.transformAmount;A.isEffectModulator&&g<=1e3&&(g*=qi,g=Math.min(g,1e3));let i=s*r*g;return A.transformType===2&&(i=Math.abs(i)),A.currentValue=i,i}function Hr(e,A=-1,t=0){let n=e.modulators,s=e.generators;if(this.generatorOffsetsEnabled){s=new Int16Array(s);for(let i=0;i<s.length;i++)s[i]+=this.generatorOffsets[i]}let o=e.modulatedGenerators;if(A===-1){o.set(s),n.forEach(i=>{o[i.modulatorDestination]+=vr(this.midiControllers,i,e)});for(let i=0;i<o.length;i++){let C=q[i];C&&(o[i]=Math.min(C.max,Math.max(C.min,o[i])))}le.recalculate(e),Be.recalculate(e);return}let r=new Set([a.initialAttenuation,a.delayVolEnv,a.attackVolEnv,a.holdVolEnv,a.decayVolEnv,a.sustainVolEnv,a.releaseVolEnv,a.keyNumToVolEnvHold,a.keyNumToVolEnvDecay]),g=new Set;n.forEach(i=>{if(i.sourceUsesCC===A&&i.sourceIndex===t||i.secSrcUsesCC===A&&i.secSrcIndex===t){let C=i.modulatorDestination;if(!g.has(C)){o[C]=s[C],vr(this.midiControllers,i,e),n.forEach(h=>{h.modulatorDestination===C&&(o[C]+=h.currentValue)});let B=q[C];o[C]=Math.max(B.min,Math.min(o[C],B.max)),g.add(C)}}}),[...g].some(i=>r.has(i))&&le.recalculate(e),Be.recalculate(e)}var rt=[];for(let e=0;e<4;e++){rt[e]=[[new Float32Array(LA),new Float32Array(LA)],[new Float32Array(LA),new Float32Array(LA)]];for(let A=0;A<LA;A++)rt[e][0][0][A]=nt(0,e,A/LA,0),rt[e][1][0][A]=nt(0,e,A/LA,1),rt[e][0][1][A]=nt(1,e,A/LA,0),rt[e][1][1][A]=nt(1,e,A/LA,1)}var pA=class{midiControllers=new Int16Array(En);lockedControllers=Array(En).fill(!1);customControllers=new Float32Array(as);channelTransposeKeyShift=0;channelOctaveTuning=new Int8Array(128);channelTuningCents=0;sysExModulators=new Gn;generatorOffsets=new Int16Array(Jt);generatorOffsetsEnabled=!1;generatorOverrides=new Int16Array(Jt);generatorOverridesEnabled=!1;holdPedal=!1;drumChannel=!1;velocityOverride=0;randomPan=!1;dataEntryState=vA.Idle;bank=0;sentBank=0;bankLSB=0;preset=void 0;lockPreset=!1;lockedSystem="gs";lockGSNRPNParams=!1;channelVibrato={delay:0,depth:0,rate:0};isMuted=!1;voices=[];sustainedVoices=[];channelNumber;synth;constructor(A,t,n){this.synth=A,this.preset=t,this.channelNumber=n,this.resetGeneratorOverrides(),this.resetGeneratorOffsets()}get isXGChannel(){return GA(this.synth.system)||this.lockPreset&&GA(this.lockedSystem)}setCustomController(A,t){this.customControllers[A]=t,this.updateChannelTuning()}updateChannelTuning(){this.channelTuningCents=this.customControllers[nA.channelTuning]+this.customControllers[nA.channelTransposeFine]+this.customControllers[nA.masterTuning]+this.customControllers[nA.channelTuningSemitones]*100}renderAudio(A,t,n,s,o,r){this.voices=this.voices.filter(g=>!this.renderVoice(g,this.synth.currentSynthTime,A,t,n,s,o,r))}setPresetLock(A){this.lockPreset=A,A&&(this.lockedSystem=this.synth.system)}setBankSelect(A,t=!1){if(!this.lockPreset)if(t)this.bankLSB=A;else switch(this.bank=A,ft(this.getBankSelect(),A,this.synth.system,!1,this.drumChannel,this.channelNumber).drumsStatus){default:case 0:break;case 1:this.channelNumber%16===9&&(this.bank=127);break;case 2:this.setDrums(!0);break}}getBankSelect(){return ut(this.bank,this.bankLSB,this.drumChannel,this.isXGChannel)}setPreset(A){this.lockPreset||(delete this.preset,this.preset=A)}setDrums(A){this.lockPreset||this.drumChannel!==A&&(A?(this.channelTransposeKeyShift=0,this.drumChannel=!0):this.drumChannel=!1,this.synth.callEvent("drumchange",{channel:this.channelNumber,isDrumChannel:this.drumChannel}),this.programChange(this.preset.program),this.sendChannelProperty())}setVibrato(A,t,n){this.lockGSNRPNParams||(this.channelVibrato.rate=t,this.channelVibrato.delay=n,this.channelVibrato.depth=A)}disableAndLockGSNRPN(){this.lockGSNRPNParams=!0,this.channelVibrato.rate=0,this.channelVibrato.delay=0,this.channelVibrato.depth=0}sendChannelProperty(){if(!this.synth.enableEventSystem)return;let A={voicesAmount:this.voices.length,pitchBend:this.midiControllers[cA+X.pitchWheel],pitchBendRangeSemitones:this.midiControllers[cA+X.pitchWheelRange]/128,isMuted:this.isMuted,isDrum:this.drumChannel,transposition:this.channelTransposeKeyShift+this.customControllers[nA.channelTransposeFine]/100,bank:this.sentBank,program:this.preset.program};this.synth?.onChannelPropertyChange?.(A,this.channelNumber)}resetGeneratorOverrides(){this.generatorOverrides.fill(an),this.generatorOverridesEnabled=!1}setGeneratorOverride(A,t,n=!1){this.generatorOverrides[A]=t,this.generatorOverridesEnabled=!0,n&&this.voices.forEach(s=>{s.generators[A]=t,this.computeModulators(s)})}resetGeneratorOffsets(){this.generatorOffsets.fill(0),this.generatorOffsetsEnabled=!1}setGeneratorOffset(A,t){this.generatorOffsets[A]=t*q[A].nrpn,this.generatorOffsetsEnabled=!0,this.voices.forEach(n=>{this.computeModulators(n)})}};pA.prototype.renderVoice=fr;pA.prototype.panVoice=po;pA.prototype.killNote=ur;pA.prototype.stopAllNotes=Fr;pA.prototype.muteChannel=wr;pA.prototype.computeModulators=Hr;pA.prototype.noteOn=Mr;pA.prototype.noteOff=xr;pA.prototype.polyPressure=Nr;pA.prototype.channelPressure=br;pA.prototype.pitchWheel=Lr;pA.prototype.programChange=Ur;pA.prototype.setTuning=mr;pA.prototype.setOctaveTuning=Tr;pA.prototype.setModulationDepth=pr;pA.prototype.transposeChannel=Rr;pA.prototype.controllerChange=kr;pA.prototype.resetControllers=io;pA.prototype.resetControllersRP15Compliant=ao;pA.prototype.resetParameters=go;pA.prototype.dataEntryFine=Dr;pA.prototype.dataEntryCoarse=yr;function Yr(e=!1){let A=new pA(this,this.defaultPreset,this.midiAudioChannels.length);this.midiAudioChannels.push(A),e&&(this.callEvent("newchannel",void 0),A.sendChannelProperty(),this.midiAudioChannels[this.midiAudioChannels.length-1].setDrums(!0))}var Ss={enableEventSystem:!0,initialTime:0,effectsEnabled:!0,midiChannels:16};var Vi={time:0},ho=.03,lo=.07,os=1,TA=class{cachedVoices=[];deviceID=-1;eventQueue=[];interpolationType=et.fourthOrder;transposition=0;tunings=[];soundfontBankOffset=0;masterGain=os;midiVolume=1;reverbGain=1;chorusGain=1;reverbSend=1;chorusSend=1;voiceCap=350;pan=0;panLeft=.5;panRight=.5;highPerformanceMode=!1;keyModifierManager=new hn;midiAudioChannels=[];system=Yt;totalVoicesAmount=0;defaultPreset;drumPreset;processorInitialized=ye.isInitialized;currentSynthTime=0;sampleRate;sampleTime;effectsEnabled;_snapshot;onEventCall;onChannelPropertyChange;onMasterParameterChange;constructor(A,t=Ss){t=Qn(t,Ss),this.midiOutputsCount=t.midiChannels,this.effectsEnabled=t.effectsEnabled,this.enableEventSystem=t.enableEventSystem,this.currentSynthTime=t.initialTime,this.sampleTime=1/A,this.sampleRate=A,this.volumeEnvelopeSmoothingFactor=zs*(44100/A),this.panSmoothingFactor=Qo*(44100/A),this.filterSmoothingFactor=Io*(44100/A);for(let n=0;n<128;n++)this.tunings.push([]);this.soundfontManager=new mt(this.updatePresetList.bind(this));for(let n=0;n<this.midiOutputsCount;n++)this.createMidiChannel(!1);this.processorInitialized.then(()=>{y("%cSpessaSynth is ready!",I.recognized)})}get currentGain(){return this.masterGain*this.midiVolume}getDefaultPresets(){let A=this.system;this.system="xg",this.defaultPreset=this.getPreset(0,0),this.system=A,this.drumPreset=this.getPreset(128,0)}setSystem(A){this.system=A,this?.onMasterParameterChange?.(JA.midiSystem,this.system)}getCachedVoice(A,t,n,s){return this.cachedVoices?.[A]?.[t]?.[n]?.[s]}setCachedVoice(A,t,n,s,o){this.cachedVoices[A]||(this.cachedVoices[A]=[]),this.cachedVoices[A][t]||(this.cachedVoices[A][t]=[]),this.cachedVoices[A][t][n]||(this.cachedVoices[A][t][n]=[]),this.cachedVoices[A][t][n][s]=o}renderAudio(A,t,n){this.renderAudioSplit(t,n,Array(16).fill(A))}renderAudioSplit(A,t,n){let s=this.currentSynthTime;for(;this.eventQueue[0]?.time<=s;)this.eventQueue.shift().callback();let o=A[0],r=A[1],g=t[0],i=t[1];this.totalVoicesAmount=0,this.midiAudioChannels.forEach((C,B)=>{if(C.voices.length<1||C.isMuted)return;let h=C.voices.length,c=B%16;C.renderAudio(n[c][0],n[c][1],o,r,g,i),this.totalVoicesAmount+=C.voices.length,C.voices.length!==h&&C.sendChannelProperty()}),this.currentSynthTime+=n[0][0].length*this.sampleTime}destroySynthProcessor(){this.midiAudioChannels.forEach(A=>{delete A.midiControllers,delete A.voices,delete A.sustainedVoices,delete A.lockedControllers,delete A.preset,delete A.customControllers}),delete this.cachedVoices,delete this.midiAudioChannels,this.soundfontManager.destroyManager(),delete this.soundfontManager}controllerChange(A,t,n,s=!1){this.midiAudioChannels[A].controllerChange(t,n,s)}noteOn(A,t,n){this.midiAudioChannels[A].noteOn(t,n)}noteOff(A,t){this.midiAudioChannels[A].noteOff(t)}polyPressure(A,t,n){this.midiAudioChannels[A].polyPressure(t,n)}channelPressure(A,t){this.midiAudioChannels[A].channelPressure(t)}pitchWheel(A,t,n){this.midiAudioChannels[A].pitchWheel(t,n)}programChange(A,t){this.midiAudioChannels[A].programChange(t)}processMessage(A,t=0,n=!1,s=Vi){let o=()=>{let g=dt(A[0]),i=g.channel+t;switch(g.status){case F.noteOn:let C=A[2];C>0?this.noteOn(i,A[1],C):this.noteOff(i,A[1]);break;case F.noteOff:n?this.midiAudioChannels[i].killNote(A[1]):this.noteOff(i,A[1]);break;case F.pitchBend:this.pitchWheel(i,A[2],A[1]);break;case F.controllerChange:this.controllerChange(i,A[1],A[2],n);break;case F.programChange:this.programChange(i,A[1]);break;case F.polyPressure:this.polyPressure(i,A[0],A[1]);break;case F.channelPressure:this.channelPressure(i,A[1]);break;case F.systemExclusive:this.systemExclusive(new b(A.slice(1)),t);break;case F.reset:this.stopAllChannels(!0),this.resetAllControllers();break;default:break}},r=s.time;r>this.currentSynthTime?(this.eventQueue.push({callback:o.bind(this),time:r}),this.eventQueue.sort((g,i)=>g.time-i.time)):o()}setMIDIVolume(A){this.midiVolume=Math.pow(A,Math.E),this.setMasterParameter(JA.masterPan,this.pan)}callEvent(A,t){this?.onEventCall?.(A,t)}clearCache(){this.cachedVoices=[]}getPreset(A,t){return this.soundfontManager.getPreset(A,t,GA(this.system)).preset}};TA.prototype.voiceKilling=Vs;TA.prototype.getVoicesForPreset=Eo;TA.prototype.getVoices=co;TA.prototype.systemExclusive=oo;TA.prototype.stopAllChannels=yo;TA.prototype.createMidiChannel=Yr;TA.prototype.resetAllControllers=ro;TA.prototype.setMasterParameter=to;TA.prototype.transposeAllChannels=Br;TA.prototype.setMasterTuning=Qr;TA.prototype.clearEmbeddedBank=cr;TA.prototype.setEmbeddedSoundFont=hr;TA.prototype.updatePresetList=lr;TA.prototype.applySynthesizerSnapshot=dr;function PA(e,A){let t=0;for(let n=8*(A-1);n>=0;n-=8)t|=e[e.currentIndex++]<<n;return t>>>0}function Zt(e,A){let t=new Array(A).fill(0);for(let n=A-1;n>=0;n--)t[n]=e&255,e>>=8;return t}function Jr(e,A){if(this.sendMIDIMessages&&e.messageStatusByte>=128){this.sendMIDIMessage([e.messageStatusByte,...e.messageData]);return}let t=dt(e.messageStatusByte),n=this.midiPortChannelOffsets[this.midiPorts[A]]||0;switch(t.channel+=n,t.status){case F.noteOn:let s=e.messageData[1];if(s>0)this.synth.noteOn(t.channel,e.messageData[0],s),this.playingNotes.push({midiNote:e.messageData[0],channel:t.channel,velocity:s});else{this.synth.noteOff(t.channel,e.messageData[0]);let g=this.playingNotes.findIndex(i=>i.midiNote===e.messageData[0]&&i.channel===t.channel);g!==-1&&this.playingNotes.splice(g,1)}break;case F.noteOff:this.synth.noteOff(t.channel,e.messageData[0]);let o=this.playingNotes.findIndex(g=>g.midiNote===e.messageData[0]&&g.channel===t.channel);o!==-1&&this.playingNotes.splice(o,1);break;case F.pitchBend:this.synth.pitchWheel(t.channel,e.messageData[1],e.messageData[0]);break;case F.controllerChange:if(this.midiData.isMultiPort&&this.midiData.usedChannelsOnTrack[A].size===0)return;this.synth.controllerChange(t.channel,e.messageData[0],e.messageData[1]);break;case F.programChange:if(this.midiData.isMultiPort&&this.midiData.usedChannelsOnTrack[A].size===0)return;this.synth.programChange(t.channel,e.messageData[0]);break;case F.polyPressure:this.synth.polyPressure(t.channel,e.messageData[0],e.messageData[1]);break;case F.channelPressure:this.synth.channelPressure(t.channel,e.messageData[0]);break;case F.systemExclusive:this.synth.systemExclusive(e.messageData,n);break;case F.setTempo:e.messageData.currentIndex=0;let r=6e7/PA(e.messageData,3);this.oneTickToSeconds=60/(r*this.midiData.timeDivision),this.oneTickToSeconds===0&&(this.oneTickToSeconds=60/(120*this.midiData.timeDivision),O("invalid tempo! falling back to 120 BPM"),r=120);break;case F.timeSignature:case F.endOfTrack:case F.midiChannelPrefix:case F.songPosition:case F.activeSensing:case F.keySignature:case F.sequenceNumber:case F.sequenceSpecific:case F.text:case F.lyric:case F.copyright:case F.trackName:case F.marker:case F.cuePoint:case F.instrumentName:case F.programName:break;case F.midiPort:this.assignMIDIPort(A,e.messageData[0]);break;case F.reset:this.synth.stopAllChannels(),this.synth.resetAllControllers();break;default:O(`%cUnrecognized Event: %c${e.messageStatusByte}%c status byte: %c${Object.keys(F).find(g=>F[g]===t.status)}`,I.warn,I.unrecognized,I.warn,I.value);break}t.status>=0&&t.status<128&&this?.onMetaEvent?.(e,A)}function Pr(){for(let e=0;e<16;e++)this.synth.createMidiChannel(!0)}function Kr(){if(!this.isActive)return;let e=this.currentTime;for(;this.playedTime<e;){let A=this._findFirstEventIndex(),t=this.tracks[A][this.eventIndex[A]];if(this._processEvent(t,A),this.eventIndex[A]++,A=this._findFirstEventIndex(),this.tracks[A].length<=this.eventIndex[A]){if(this.loop){this.setTimeTicks(this.midiData.loop.start);return}this.eventIndex[A]--,this.pause(!0),this.songs.length>1&&this.nextSong();return}let n=this.tracks[A][this.eventIndex[A]];this.playedTime+=this.oneTickToSeconds*(n.ticks-t.ticks);let s=this.loop&&(this.loopCount>0||this.loopCount===-1);if(this.midiData.loop.end<=t.ticks&&s){this.loopCount!==1/0&&(this.loopCount--,this?.onLoopCountChange?.(this.loopCount)),this.setTimeTicks(this.midiData.loop.start);return}else if(e>=this.duration){if(s){this.loopCount!==1/0&&(this.loopCount--,this?.onLoopCountChange?.(this.loopCount)),this.setTimeTicks(this.midiData.loop.start);return}this.eventIndex[A]--,this.pause(!0),this.songs.length>1&&this.nextSong();return}}}function qr(){let e=0,A=1/0;return this.tracks.forEach((t,n)=>{this.eventIndex[n]>=t.length||t[this.eventIndex[n]].ticks<A&&(e=n,A=t[this.eventIndex[n]].ticks)}),e}var it=class{timeDivision=0;duration=0;tempoChanges=[{ticks:0,tempo:120}];copyright="";tracksAmount=0;trackNames=[];lyrics=[];lyricsTicks=[];firstNoteOn=0;keyRange={min:0,max:127};lastVoiceEventTick=0;midiPorts=[0];midiPortChannelOffsets=[0];usedChannelsOnTrack=[];loop={start:0,end:0};midiName="";midiNameUsesFileName=!1;fileName="";rawMidiName;format=0;RMIDInfo={};bankOffset=0;isKaraokeFile=!1;isMultiPort=!1;MIDIticksToSeconds(A){let t=0;for(;A>0;){let n=this.tempoChanges.find(o=>o.ticks<A),s=A-n.ticks;t+=s*60/(n.tempo*this.timeDivision),A-=s}return t}_copyFromSequence(A){this.midiName=A.midiName,this.midiNameUsesFileName=A.midiNameUsesFileName,this.fileName=A.fileName,this.timeDivision=A.timeDivision,this.duration=A.duration,this.copyright=A.copyright,this.tracksAmount=A.tracksAmount,this.firstNoteOn=A.firstNoteOn,this.lastVoiceEventTick=A.lastVoiceEventTick,this.format=A.format,this.bankOffset=A.bankOffset,this.isKaraokeFile=A.isKaraokeFile,this.isMultiPort=A.isMultiPort,this.tempoChanges=[...A.tempoChanges],this.lyrics=A.lyrics.map(t=>new Uint8Array(t)),this.lyricsTicks=[...A.lyricsTicks],this.midiPorts=[...A.midiPorts],this.trackNames=[...A.trackNames],this.midiPortChannelOffsets=[...A.midiPortChannelOffsets],this.usedChannelsOnTrack=A.usedChannelsOnTrack.map(t=>new Set(t)),this.rawMidiName=A.rawMidiName?new Uint8Array(A.rawMidiName):void 0,this.loop={...A.loop},this.keyRange={...A.keyRange},this.RMIDInfo={...A.RMIDInfo}}};function fA(e){let A=0;for(;e;){let t=e[e.currentIndex++];if(A=A<<7|t&127,t>>7!==1)break}return A}function Mn(e){let A=[e&127];for(e>>=7;e>0;)A.unshift(e&127|128),e>>=7;return A}function Vr(){let e=this;if(!e.tracks)throw new Error("MIDI has no tracks!");let A=[];for(let s of e.tracks){let o=[],r=0,g;for(let i of s){let C=i.ticks-r,B;i.messageStatusByte<=F.sequenceSpecific?(B=[255,i.messageStatusByte,...Mn(i.messageData.length),...i.messageData],g=void 0):i.messageStatusByte===F.systemExclusive?(B=[240,...Mn(i.messageData.length),...i.messageData],g=void 0):(B=[],g!==i.messageStatusByte&&(g=i.messageStatusByte,B.push(i.messageStatusByte)),B.push(...i.messageData)),o.push(...Mn(C)),o.push(...B),r+=C}A.push(new Uint8Array(o))}function t(s,o){for(let r=0;r<s.length;r++)o.push(s.charCodeAt(r))}let n=[];t("MThd",n),n.push(...Zt(6,4)),n.push(0,e.format),n.push(...Zt(e.tracksAmount,2)),n.push(...Zt(e.timeDivision,2));for(let s of A)t("MTrk",n),n.push(...Zt(s.length,4)),n.push(...s);return new Uint8Array(n)}function Dt(e){return e.messageData[0]===67&&e.messageData[2]===76&&e.messageData[5]===126&&e.messageData[6]===0}function xn(e){return e.messageData[0]===65&&e.messageData[2]===66&&e.messageData[3]===18&&e.messageData[4]===64&&(e.messageData[5]&16)!==0&&e.messageData[6]===21}function Nn(e){return e.messageData[0]===65&&e.messageData[2]===66&&e.messageData[6]===127}function bn(e){return e.messageData[0]===126&&e.messageData[2]===9&&e.messageData[3]===1}function Ln(e){return e.messageData[0]===126&&e.messageData[2]===9&&e.messageData[3]===3}function Ds(e){return new OA(e,F.systemExclusive,new b([65,16,66,18,64,0,127,0,65,247]))}function kt(e,A,t,n){return new OA(n,F.controllerChange|e%16,new b([A,t]))}function Zi(e,A){let t=16|[1,2,3,4,5,6,7,8,0,9,10,11,12,13,14,15][e%16],n=[65,16,66,18,64,t,21,1],o=128-(64+t+21+1)%128;return new OA(A,F.systemExclusive,new b([...n,o,247]))}function Zr(e=[],A=[],t=[],n=[]){let s=this;QA("%cApplying changes to the MIDI file...",I.info),y("Desired program changes:",e),y("Desired CC changes:",A),y("Desired channels to clear:",t),y("Desired channels to transpose:",n);let o=new Set;e.forEach(M=>{o.add(M.channel)});let r="gs",g=!1,i=Array(s.tracks.length).fill(0),C=s.tracks.length;function B(){let M=0,v=1/0;return s.tracks.forEach((R,E)=>{i[E]>=R.length||R[i[E]].ticks<v&&(M=E,v=R[i[E]].ticks)}),M}let h=s.midiPorts.slice(),c={},l=0;function u(M,v){s.usedChannelsOnTrack[M].size!==0&&(l===0&&(l+=16,c[v]=0),c[v]===void 0&&(c[v]=l,l+=16),h[M]=v)}s.midiPorts.forEach((M,v)=>{u(v,M)});let f=l,S=Array(f).fill(!0),G=Array(f).fill(0),D=Array(f).fill(0);for(n.forEach(M=>{let v=Math.trunc(M.keyShift),R=M.keyShift-v;G[M.channel]=v,D[M.channel]=R});C>0;){let M=B(),v=s.tracks[M];if(i[M]>=v.length){C--;continue}let R=i[M]++,E=v[R],x=()=>{v.splice(R,1),i[M]--},L=(RA,NA=0)=>{v.splice(R+NA,0,RA),i[M]++},sA=c[h[M]]||0;if(E.messageStatusByte===F.midiPort){u(M,E.messageData[0]);continue}if(E.messageStatusByte<=F.sequenceSpecific&&E.messageStatusByte>=F.sequenceNumber)continue;let $=E.messageStatusByte&240,Y=E.messageStatusByte&15,aA=Y+sA;if(t.indexOf(aA)!==-1){x();continue}switch($){case F.noteOn:if(S[aA]){S[aA]=!1,A.filter(_=>_.channel===aA).forEach(_=>{let T=kt(Y,_.controllerNumber,_.controllerValue,E.ticks);L(T)});let tA=D[aA];if(tA!==0){let _=tA*64+64,T=kt(Y,p.RPNMsb,0,E.ticks),H=kt(Y,p.RPNLsb,1,E.ticks),j=kt(aA,p.dataEntryMsb,_,E.ticks),Z=kt(Y,p.lsbForControl6DataEntry,0,E.ticks);L(Z),L(j),L(H),L(T)}if(o.has(aA)){let _=e.find(rA=>rA.channel===aA),T=Math.max(0,Math.min(_.bank,127)),H=_.program;y(`%cSetting %c${_.channel}%c to %c${T}:${H}%c. Track num: %c${M}`,I.info,I.recognized,I.info,I.recognized,I.info,I.recognized);let j=new OA(E.ticks,F.programChange|Y,new b([H]));L(j);let Z=(rA,KA)=>{let ce=kt(Y,rA?p.lsbForControl0BankSelect:p.bankSelect,KA,E.ticks);L(ce)};GA(r)?_.isDrum?(y(`%cAdding XG Drum change on track %c${M}`,I.recognized,I.value),Z(!1,te(T)?T:127),Z(!0,0)):T===Cn?(Z(!1,Cn),Z(!0,0)):(Z(!1,0),Z(!0,T)):(Z(!1,T),_.isDrum&&Y!==9&&(y(`%cAdding GS Drum change on track %c${M}`,I.recognized,I.value),L(Zi(Y,E.ticks))))}}E.messageData[0]+=G[aA];break;case F.noteOff:E.messageData[0]+=G[aA];break;case F.programChange:if(o.has(aA)){x();continue}break;case F.controllerChange:let RA=E.messageData[0];if(A.find(tA=>tA.channel===aA&&RA===tA.controllerNumber)!==void 0){x();continue}if((RA===p.bankSelect||RA===p.lsbForControl0BankSelect)&&o.has(aA)){x();continue}break;case F.systemExclusive:if(Dt(E))y("%cXG system on detected",I.info),r="xg",g=!0;else if(E.messageData[0]===67&&E.messageData[2]===76&&E.messageData[3]===8&&E.messageData[5]===3)o.has(E.messageData[4]+sA)&&x();else if(Nn(E)){g=!0,y("%cGS on detected!",I.recognized);break}else(bn(E)||Ln(E))&&(y("%cGM/2 on detected, removing!",I.info),x(),g=!1)}}if(!g&&e.length>0){let M=0;s.tracks[0][0].messageStatusByte===F.trackName&&M++,s.tracks[0].splice(M,0,Ds(0)),y("%cGS on not detected. Adding it.",I.info)}this.flush(),K()}function Xr(e){let A=[],t=[],n=[],s=[];e.channelSnapshots.forEach((o,r)=>{if(o.isMuted){t.push(r);return}let g=o.channelTransposeKeyShift+o.customControllers[nA.channelTransposeFine]/100;g!==0&&A.push({channel:r,keyShift:g}),o.lockPreset&&n.push({channel:r,program:o.program,bank:o.bank,isDrum:o.drumChannel}),o.lockedControllers.forEach((i,C)=>{if(!i||C>127||C===p.bankSelect)return;let B=o.midiControllers[C]>>7;s.push({channel:r,controllerNumber:C,controllerValue:B})})}),this.modifyMIDI(n,s,t,A)}var uA={name:"INAM",album:"IPRD",album2:"IALB",artist:"IART",genre:"IGNR",picture:"IPIC",copyright:"ICOP",creationDate:"ICRD",comment:"ICMT",engineer:"IENG",software:"ISFT",encoding:"IENC",midiEncoding:"MENC",bankOffset:"DBNK"},We="utf-8",Xi="Created using SpessaSynth";function Wr(e,A,t=0,n="Shift_JIS",s={},o=!0){let r=this;if(Ie("%cWriting the RMIDI File...",I.info),y(`%cConfiguration: Bank offset: %c${t}%c, encoding: %c${n}`,I.info,I.value,I.info,I.value),y("metadata",s),y("Initial bank offset",r.bankOffset),o){let G=function(){let R=0,E=1/0;return r.tracks.forEach((x,L)=>{f[L]>=x.length||x[f[L]].ticks<E&&(R=L,E=x[f[L]].ticks)}),R},l="gm",u=[],f=Array(r.tracks.length).fill(0),S=r.tracks.length,D=Array(r.tracks.length).fill(0),M=16+r.midiPortChannelOffsets.reduce((R,E)=>E>R?E:R),v=[];for(let R=0;R<M;R++)v.push({program:0,drums:R%16===9,lastBank:void 0,lastBankLSB:void 0,hasBankSelect:!1});for(;S>0;){let R=G(),E=r.tracks[R];if(f[R]>=E.length){S--;continue}let x=E[f[R]];f[R]++;let L=r.midiPortChannelOffsets[D[R]];if(x.messageStatusByte===F.midiPort){D[R]=x.messageData[0];continue}let sA=x.messageStatusByte&240;if(sA!==F.controllerChange&&sA!==F.programChange&&sA!==F.systemExclusive)continue;if(sA===F.systemExclusive){if(!xn(x)){Dt(x)?l="xg":Nn(x)?l="gs":bn(x)?(l="gm",u.push({tNum:R,e:x})):Ln(x)&&(l="gm2");continue}let tA=[9,0,1,2,3,4,5,6,7,8,10,11,12,13,14,15][x.messageData[5]&15]+L;v[tA].drums=!!(x.messageData[7]>0&&x.messageData[5]>>4);continue}let $=(x.messageStatusByte&15)+L,Y=v[$];if(sA===F.programChange){let tA=GA(l),_=x.messageData[0];Y.drums?A.presets.findIndex(Z=>Z.program===_&&Z.isDrumPreset(tA,!0))===-1&&(x.messageData[0]=A.presets.find(Z=>Z.isDrumPreset(tA))?.program||0,y(`%cNo drum preset %c${_}%c. Channel %c${$}%c. Changing program to ${x.messageData[0]}.`,I.info,I.unrecognized,I.info,I.recognized,I.info)):A.presets.findIndex(Z=>Z.program===_&&!Z.isDrumPreset(tA))===-1&&(x.messageData[0]=A.presets.find(Z=>!Z.isDrumPreset(tA))?.program||0,y(`%cNo preset %c${_}%c. Channel %c${$}%c. Changing program to ${x.messageData[0]}.`,I.info,I.unrecognized,I.info,I.recognized,I.info)),Y.program=x.messageData[0];let T=Math.max(0,Y.lastBank?.messageData[1]-r.bankOffset),H=Y?.lastBankLSB?.messageData[1]-r.bankOffset||0;if(Y.lastBank===void 0)continue;let j=ut(T,H,Y.drums,tA);if(A.presets.findIndex(Z=>Z.bank===j&&Z.program===x.messageData[0])===-1){let Z=A.presets.find(rA=>rA.program===x.messageData[0])?.bank+t||t;Y.lastBank.messageData[1]=Z,Y?.lastBankLSB?.messageData&&(Y.lastBankLSB.messageData[1]=Z),y(`%cNo preset %c${j}:${x.messageData[0]}%c. Channel %c${$}%c. Changing bank to ${Z}.`,I.info,I.unrecognized,I.info,I.recognized,I.info)}else{let Z=j;GA(l)&&j===128&&(j=127);let rA=(j===128?128:Z)+t;Y.lastBank.messageData[1]=rA,Y?.lastBankLSB?.messageData&&!Y.drums&&(Y.lastBankLSB.messageData[1]=Y.lastBankLSB.messageData[1]-r.bankOffset+t),y(`%cPreset %c${j}:${x.messageData[0]}%c exists. Channel %c${$}%c. Changing bank to ${rA}.`,I.info,I.recognized,I.info,I.recognized,I.info)}continue}let aA=x.messageData[0]===p.lsbForControl0BankSelect;if(x.messageData[0]!==p.bankSelect&&!aA)continue;Y.hasBankSelect=!0;let RA=x.messageData[1],NA=ft(Y?.lastBank?.messageData[1]||0,RA,l,aA,Y.drums,$);NA.drumsStatus===2?Y.drums=!0:NA.drumsStatus===1&&(Y.drums=!1),aA?Y.lastBankLSB=x:Y.lastBank=x}if(v.forEach((R,E)=>{if(R.hasBankSelect===!0)return;let x=E%16,L=F.programChange|x,sA=Math.floor(E/16)*16,$=r.midiPortChannelOffsets.indexOf(sA),Y=r.tracks.find((tA,_)=>r.midiPorts[_]===$&&r.usedChannelsOnTrack[_].has(x));if(Y===void 0)return;let aA=Y.findIndex(tA=>tA.messageStatusByte===L);if(aA===-1){let tA=Y.findIndex(H=>H.messageStatusByte>128&&H.messageStatusByte<240&&(H.messageStatusByte&15)===x);if(tA===-1)return;let _=Y[tA].ticks,T=A.getPreset(0,0).program;Y.splice(tA,0,new OA(_,F.programChange|x,new b([T]))),aA=tA}y(`%cAdding bank select for %c${E}`,I.info,I.recognized);let RA=Y[aA].ticks,NA=A.getPreset(0,R.program,GA(l))?.bank+t||t;Y.splice(aA,0,new OA(RA,F.controllerChange|x,new b([p.bankSelect,NA])))}),l!=="gs"&&!GA(l)){for(let E of u)r.tracks[E.tNum].splice(r.tracks[E.tNum].indexOf(E.e),1);let R=0;r.tracks[0][0].messageStatusByte===F.trackName&&R++,r.tracks[0].splice(R,0,Ds(0))}}let g=new b(r.writeMIDI().buffer),i=[VA("INFO")],C=new TextEncoder;if(i.push(z(uA.software,C.encode("SpessaSynth"),!0)),s.name!==void 0?(i.push(z(uA.name,C.encode(s.name),!0)),n=We):i.push(z(uA.name,r.rawMidiName,!0)),s.creationDate!==void 0)n=We,i.push(z(uA.creationDate,C.encode(s.creationDate),!0));else{let l=new Date().toLocaleString(void 0,{weekday:"long",year:"numeric",month:"long",day:"numeric",hour:"numeric",minute:"numeric"});i.push(z(uA.creationDate,VA(l,!0),!0))}if(s.comment!==void 0&&(n=We,i.push(z(uA.comment,C.encode(s.comment)))),s.engineer!==void 0&&i.push(z(uA.engineer,C.encode(s.engineer),!0)),s.album!==void 0&&(n=We,i.push(z(uA.album,C.encode(s.album),!0)),i.push(z(uA.album2,C.encode(s.album),!0))),s.artist!==void 0&&(n=We,i.push(z(uA.artist,C.encode(s.artist),!0))),s.genre!==void 0&&(n=We,i.push(z(uA.genre,C.encode(s.genre),!0))),s.picture!==void 0&&i.push(z(uA.picture,new Uint8Array(s.picture))),s.copyright!==void 0)n=We,i.push(z(uA.copyright,C.encode(s.copyright),!0));else{let l=r.copyright.length>0?r.copyright:Xi;i.push(z(uA.copyright,VA(l,!0)))}let B=new b(2);Se(B,t,2),i.push(z(uA.bankOffset,B)),s.midiEncoding!==void 0&&(i.push(z(uA.midiEncoding,C.encode(s.midiEncoding))),n=We),i.push(z(uA.encoding,VA(n,!0)));let h=kA(i),c=kA([VA("RMID"),z("data",g),z("LIST",h),e]);return y("%cFinished!",I.info),K(),z("RIFF",c)}function _r(e){let A=this;QA("%cSearching for all used programs and keys...",I.info);let t=16+A.midiPortChannelOffsets.reduce((h,c)=>c>h?c:h),n=[];for(let h=0;h<t;h++){let c=h%16===9?128:0;n.push({program:0,bank:c,bankLSB:0,actualBank:c,drums:h%16===9,string:`${c}:0`})}let s="gs";function o(h){let c=ut(h.bank,h.bankLSB,h.drums,GA(s)),l,u;if(e instanceof mt){let f=e.getPreset(c,h.program,GA(s));l=f.preset.bank+f.bankOffset,u=f.preset.program}else{let f=e.getPreset(c,h.program,GA(s));l=f.bank,u=f.program}h.actualBank=l,h.program=u,h.string=h.actualBank+":"+h.program,r[h.string]||(y(`%cDetected a new preset: %c${h.string}`,I.info,I.recognized),r[h.string]=new Set)}let r={},g=Array(A.tracks.length).fill(0),i=A.tracks.length;function C(){let h=0,c=1/0;return A.tracks.forEach((l,u)=>{g[u]>=l.length||l[g[u]].ticks<c&&(h=u,c=l[g[u]].ticks)}),h}let B=A.midiPorts.slice();for(n.forEach(h=>{o(h)});i>0;){let h=C(),c=A.tracks[h];if(g[h]>=c.length){i--;continue}let l=c[g[h]];if(g[h]++,l.messageStatusByte===F.midiPort){B[h]=l.messageData[0];continue}let u=l.messageStatusByte&240;if(u!==F.noteOn&&u!==F.controllerChange&&u!==F.programChange&&u!==F.systemExclusive)continue;let f=(l.messageStatusByte&15)+A.midiPortChannelOffsets[B[h]]||0,S=n[f];switch(u){case F.programChange:S.program=l.messageData[0],o(S);break;case F.controllerChange:let G=l.messageData[0]===p.lsbForControl0BankSelect;if(l.messageData[0]!==p.bankSelect&&!G||s==="gs"&&S.drums)continue;let D=l.messageData[1];switch(G?S.bankLSB=D:S.bank=D,ft(S.bank,D,s,G,S.drums,f).drumsStatus){case 0:break;case 1:S.drums=!1,o(S);break;case 2:S.drums=!0,o(S);break}break;case F.noteOn:if(l.messageData[1]===0)continue;r[S.string].add(`${l.messageData[0]}-${l.messageData[1]}`);break;case F.systemExclusive:if(!xn(l)){Dt(l)&&(s="xg",y("%cXG on detected!",I.recognized));continue}let v=[9,0,1,2,3,4,5,6,7,8,10,11,12,13,14,15][l.messageData[5]&15]+A.midiPortChannelOffsets[B[h]],R=!!(l.messageData[7]>0&&l.messageData[5]>>4);S=n[v],S.drums=R,o(S);break}}for(let h of Object.keys(r))r[h].size===0&&(y(`%cDetected change but no keys for %c${h}`,I.info,I.value),delete r[h]);return K(),r}function zr(e=0){function A(h){return h.messageData=new b(h.messageData.buffer),h.messageData.currentIndex=0,6e7/PA(h.messageData,3)}let t=[],s=this.tracks.flat();s.sort((h,c)=>h.ticks-c.ticks);for(let h=0;h<16;h++)t.push([]);let o=0,r=60/(120*this.timeDivision),g=0,i=0,C=[];for(let h=0;h<16;h++)C.push([]);let B=(h,c)=>{let l=C[c].findIndex(f=>f.midiNote===h),u=C[c][l];if(u){let f=o-u.start;u.length=f,c===9&&(u.length=f<e?e:f),C[c].splice(l,1)}i--};for(;g<s.length;){let h=s[g],c=h.messageStatusByte>>4,l=h.messageStatusByte&15;if(c===8)B(h.messageData[0],l);else if(c===9)if(h.messageData[1]===0)B(h.messageData[0],l);else{B(h.messageData[0],l);let u={midiNote:h.messageData[0],start:o,length:-1,velocity:h.messageData[1]/127};t[l].push(u),C[l].push(u),i++}else h.messageStatusByte===81&&(r=60/(A(h)*this.timeDivision));if(++g>=s.length)break;o+=r*(s[g].ticks-h.ticks)}return i>0&&C.forEach((h,c)=>{h.forEach(l=>{let u=o-l.start;l.length=u,c===9&&(l.length=u<e?e:u)})}),t}var zA=class e extends it{embeddedSoundFont=void 0;tracks=[];isDLSRMIDI=!1;static copyFrom(A){let t=new e;return t._copyFromSequence(A),t.isDLSRMIDI=A.isDLSRMIDI,t.embeddedSoundFont=A.embeddedSoundFont?A.embeddedSoundFont.slice(0):void 0,t.tracks=A.tracks.map(n=>[...n]),t}_parseInternal(){Ie("%cInterpreting MIDI events...",I.info);let A=!1;this.keyRange={max:0,min:127};let t=[],n=!1;typeof this.RMIDInfo.ICOP<"u"&&(n=!0);let s=!1;typeof this.RMIDInfo.INAM<"u"&&(s=!0);let o=null,r=null;for(let B=0;B<this.tracks.length;B++){let h=this.tracks[B],c=new Set,l=!1;for(let f of h){if(f.messageStatusByte>=128&&f.messageStatusByte<240){l=!0;for(let G=0;G<f.messageData.length;G++)f.messageData[G]=Math.min(127,f.messageData[G]);switch(f.ticks>this.lastVoiceEventTick&&(this.lastVoiceEventTick=f.ticks),f.messageStatusByte&240){case F.controllerChange:switch(f.messageData[0]){case 2:case 116:o=f.ticks;break;case 4:case 117:r===null?r=f.ticks:r=0;break;case 0:this.isDLSRMIDI&&f.messageData[1]!==0&&f.messageData[1]!==127&&(y("%cDLS RMIDI with offset 1 detected!",I.recognized),this.bankOffset=1)}break;case F.noteOn:c.add(f.messageStatusByte&15);let G=f.messageData[0];this.keyRange.min=Math.min(this.keyRange.min,G),this.keyRange.max=Math.max(this.keyRange.max,G);break}}f.messageData.currentIndex=0;let S=AA(f.messageData,f.messageData.length);switch(f.messageData.currentIndex=0,f.messageStatusByte){case F.setTempo:f.messageData.currentIndex=0,this.tempoChanges.push({ticks:f.ticks,tempo:6e7/PA(f.messageData,3)}),f.messageData.currentIndex=0;break;case F.marker:switch(S.trim().toLowerCase()){default:break;case"start":case"loopstart":o=f.ticks;break;case"loopend":r=f.ticks}f.messageData.currentIndex=0;break;case F.copyright:n||(f.messageData.currentIndex=0,t.push(AA(f.messageData,f.messageData.length,void 0,!1)),f.messageData.currentIndex=0);break;case F.lyric:if(S.trim().startsWith("@KMIDI KARAOKE FILE")&&(this.isKaraokeFile=!0,y("%cKaraoke MIDI detected!",I.recognized)),this.isKaraokeFile)f.messageStatusByte=F.text;else{this.lyrics.push(f.messageData),this.lyricsTicks.push(f.ticks);break}case F.text:let D=S.trim();D.startsWith("@KMIDI KARAOKE FILE")?(this.isKaraokeFile=!0,y("%cKaraoke MIDI detected!",I.recognized)):this.isKaraokeFile&&(D.startsWith("@T")||D.startsWith("@A")?A?t.push(D.substring(2).trim()):(this.midiName=D.substring(2).trim(),A=!0,s=!0,this.rawMidiName=VA(this.midiName)):D[0]!=="@"&&(this.lyrics.push(qs(f.messageData)),this.lyricsTicks.push(f.ticks)));break;case F.trackName:break}}this.usedChannelsOnTrack.push(c),this.trackNames[B]="";let u=h.find(f=>f.messageStatusByte===F.trackName);if(u){u.messageData.currentIndex=0;let f=AA(u.messageData,u.messageData.length);this.trackNames[B]=f,l||t.push(f)}}this.tempoChanges.reverse(),y("%cCorrecting loops, ports and detecting notes...",I.info);let g=[];for(let B of this.tracks){let h=B.find(c=>(c.messageStatusByte&240)===F.noteOn);h&&g.push(h.ticks)}this.firstNoteOn=Math.min(...g),y(`%cFirst note-on detected at: %c${this.firstNoteOn}%c ticks!`,I.info,I.recognized,I.info),o!==null&&r===null?(o=this.firstNoteOn,r=this.lastVoiceEventTick):(o===null&&(o=this.firstNoteOn),(r===null||r===0)&&(r=this.lastVoiceEventTick)),this.loop={start:o,end:r},y(`%cLoop points: start: %c${this.loop.start}%c end: %c${this.loop.end}`,I.info,I.recognized,I.info,I.recognized);let i=0;this.midiPorts=[],this.midiPortChannelOffsets=[];for(let B=0;B<this.tracks.length;B++)if(this.midiPorts.push(-1),this.usedChannelsOnTrack[B].size!==0)for(let h of this.tracks[B]){if(h.messageStatusByte!==F.midiPort)continue;let c=h.messageData[0];this.midiPorts[B]=c,this.midiPortChannelOffsets[c]===void 0&&(this.midiPortChannelOffsets[c]=i,i+=16)}this.midiPortChannelOffsets=[...this.midiPortChannelOffsets].map(B=>B??0);let C=1/0;for(let B of this.midiPorts)B!==-1&&C>B&&(C=B);if(C===1/0&&(C=0),this.midiPorts=this.midiPorts.map(B=>B===-1||B===void 0?C:B),this.midiPortChannelOffsets.length===0&&(this.midiPortChannelOffsets=[0]),this.midiPortChannelOffsets.length<2?y("%cNo additional MIDI Ports detected.",I.info):(this.isMultiPort=!0,y("%cMIDI Ports detected!",I.recognized)),!s)if(this.tracks.length>1){if(this.tracks[0].find(B=>B.messageStatusByte>=F.noteOn&&B.messageStatusByte<F.polyPressure)===void 0){let B=this.tracks[0].find(h=>h.messageStatusByte===F.trackName);B&&(this.rawMidiName=B.messageData,B.messageData.currentIndex=0,this.midiName=AA(B.messageData,B.messageData.length,void 0,!1))}}else{let B=this.tracks[0].find(h=>h.messageStatusByte===F.trackName);B&&(this.rawMidiName=B.messageData,B.messageData.currentIndex=0,this.midiName=AA(B.messageData,B.messageData.length,void 0,!1))}if(n||(this.copyright=t.map(B=>B.trim().replace(/(\r?\n)+/g,`
18
18
  `)).filter(B=>B.length>0).join(`
19
- `)||""),this.midiName=this.midiName.trim(),this.midiNameUsesFileName=!1,this.midiName.length===0){y("%cNo name detected. Using the alt name!",I.info),this.midiName=Ks(this.fileName),this.midiNameUsesFileName=!0,this.rawMidiName=new Uint8Array(this.midiName.length);for(let B=0;B<this.midiName.length;B++)this.rawMidiName[B]=this.midiName.charCodeAt(B)}else y(`%cMIDI Name detected! %c"${this.midiName}"`,I.info,I.recognized);this.tracks.some(B=>B[0].ticks===0)||this.tracks[0].unshift(new OA(0,F.trackName,new b(this.rawMidiName.buffer))),this.duration=this.MIDIticksToSeconds(this.lastVoiceEventTick),y("%cSuccess!",I.recognized),P()}flush(){for(let A of this.tracks)A.sort((t,n)=>t.ticks-n.ticks);this._parseInternal()}};_A.prototype.writeMIDI=qr;_A.prototype.modifyMIDI=Vr;_A.prototype.applySnapshotToMIDI=Zr;_A.prototype.writeRMIDI=Xr;_A.prototype.getUsedProgramsAndKeys=Wr;_A.prototype.getNoteTimes=_r;function zr(e,A){this.midiData.usedChannelsOnTrack[e].size!==0&&(this.midiPortChannelOffset===0&&(this.midiPortChannelOffset+=16,this.midiPortChannelOffsets[A]=0),this.midiPortChannelOffsets[A]===void 0&&(this.synth.midiAudioChannels.length<this.midiPortChannelOffset+15&&this._addNewMidiPort(),this.midiPortChannelOffsets[A]=this.midiPortChannelOffset,this.midiPortChannelOffset+=16),this.midiPorts[e]=A)}function jr(e,A=!0){if(this.stop(),!e.tracks)throw new Error("This MIDI has no tracks!");this.oneTickToSeconds=60/(120*e.timeDivision),this.midiData=e,this.synth.clearEmbeddedBank(),this.midiData.embeddedSoundFont!==void 0&&(y("%cEmbedded soundfont detected! Using it.",I.recognized),this.synth.setEmbeddedSoundFont(this.midiData.embeddedSoundFont,this.midiData.bankOffset)),QA("%cPreloading samples...",I.info);let t=this.midiData.getUsedProgramsAndKeys(this.synth.soundfontManager);for(let[n,s]of Object.entries(t)){let[o,r]=n.split(":").map(Number),g=this.synth.getPreset(o,r);y(`%cPreloading used samples on %c${g.presetName}%c...`,I.info,I.recognized,I.info);for(let i of s){let[C,B]=i.split("-").map(Number);this.synth.getVoicesForPreset(g,o,r,C,B,C)}}if(P(),this.tracks=this.midiData.tracks,this.midiPorts=this.midiData.midiPorts.slice(),this.midiPortChannelOffset=0,this.midiPortChannelOffsets={},this.midiData.midiPorts.forEach((n,s)=>{this.assignMIDIPort(s,n)}),this.duration=this.midiData.duration,this.firstNoteTime=this.midiData.MIDIticksToSeconds(this.midiData.firstNoteOn),y(`%cTotal song time: ${jn(Math.ceil(this.duration)).time}`,I.recognized),this?.onSongChange?.(this.songIndex,A),this.duration<=1&&(O(`%cVery short song: (${jn(Math.round(this.duration)).time}). Disabling loop!`,I.warn),this.loop=!1),A)this.play(!0);else{let n=this.skipToFirstNoteOn?this.midiData.firstNoteOn-1:0;this.setTimeTicks(n),this.pause()}}function $r(e,A=!0){this.songs=e.map(t=>_A.copyFrom(t)),!(this.songs.length<1)&&(this.songIndex=0,this.songs.length>1&&(this.loop=!1),this.shuffleSongIndexes(),this?.onSongListChange?.(this.songs),this.loadCurrentSong(A))}function Ai(){if(this.songs.length===1){this.currentTime=0;return}this.songIndex++,this.songIndex%=this.songs.length,this.loadCurrentSong()}function ei(){if(this.songs.length===1){this.currentTime=0;return}this.songIndex--,this.songIndex<0&&(this.songIndex=this.songs.length-1),this.loadCurrentSong()}var at=Je.slice(0,128);function ti(e,A=void 0){this.oneTickToSeconds=60/(120*this.midiData.timeDivision),this.synth.resetAllControllers(),this.sendMIDIReset(),this._resetTimers();let t=this.synth.midiAudioChannels.length,n=Array(t).fill(8192),s=[];for(let i=0;i<t;i++)s.push({program:-1,bank:0,actualBank:0});let o=i=>i===p.dataDecrement||i===p.dataIncrement||i===p.dataEntryMsb||i===p.dataDecrement||i===p.lsbForControl6DataEntry||i===p.RPNLsb||i===p.RPNMsb||i===p.NRPNLsb||i===p.NRPNMsb||i===p.bankSelect||i===p.lsbForControl0BankSelect||i===p.resetAllControllers,r=[];for(let i=0;i<t;i++)r.push(Array.from(at));function g(i){if(n[i]=8192,r?.[i]!==void 0)for(let C=0;C<at.length;C++)Is.has(C)||(r[i][C]=at[C])}for(;;){let i=this._findFirstEventIndex(),C=this.tracks[i][this.eventIndex[i]];if(A!==void 0){if(C.ticks>=A)break}else if(this.playedTime>=e)break;let B=dt(C.messageStatusByte),h=B.channel+(this.midiPortChannelOffsets[this.midiPorts[i]]||0);switch(B.status){case F.noteOn:r[h]===void 0&&(r[h]=Array.from(at)),r[h][p.portamentoControl]=C.messageData[0];break;case F.noteOff:break;case F.pitchBend:n[h]=C.messageData[1]<<7|C.messageData[0];break;case F.programChange:if(this.midiData.isMultiPort&&this.midiData.usedChannelsOnTrack[i].size===0)break;let l=s[h];l.program=C.messageData[0],l.actualBank=l.bank;break;case F.controllerChange:if(this.midiData.isMultiPort&&this.midiData.usedChannelsOnTrack[i].size===0)break;let u=C.messageData[0];if(o(u)){let f=C.messageData[1];if(u===p.bankSelect){s[h].bank=f;break}else u===p.resetAllControllers&&g(h);this.sendMIDIMessages?this.sendMIDICC(h,u,f):this.synth.controllerChange(h,u,f)}else r[h]===void 0&&(r[h]=Array.from(at)),r[h][u]=C.messageData[1];break;default:this._processEvent(C,i);break}this.eventIndex[i]++,i=this._findFirstEventIndex();let c=this.tracks[i][this.eventIndex[i]];if(c===void 0)return this.stop(),!1;this.playedTime+=this.oneTickToSeconds*(c.ticks-C.ticks)}if(this.sendMIDIMessages){for(let i=0;i<t;i++)if(n[i]!==void 0&&this.sendMIDIPitchWheel(i,n[i]>>7,n[i]&127),r[i]!==void 0&&r[i].forEach((C,B)=>{C!==at[B]&&!o(B)&&this.sendMIDICC(i,B,C)}),s[i].program>=0&&s[i].actualBank>=0){let C=s[i].actualBank;this.sendMIDICC(i,p.bankSelect,C),this.sendMIDIProgramChange(i,s[i].program)}}else for(let i=0;i<t;i++)if(n[i]!==void 0&&this.synth.pitchWheel(i,n[i]>>7,n[i]&127),r[i]!==void 0&&r[i].forEach((C,B)=>{C!==at[B]&&!o(B)&&this.synth.controllerChange(i,B,C)}),s[i].actualBank>=0){let C=s[i];C.program!==-1?(this.synth.controllerChange(i,p.bankSelect,C.actualBank),this.synth.programChange(i,C.program)):this.synth.controllerChange(i,p.bankSelect,C.bank)}return!0}function ni(e=!1){if(this.midiData!==void 0){if(e){this.pausedTime=void 0,this.currentTime=0;return}if(this.currentTime>=this.duration){this.pausedTime=void 0,this.currentTime=0;return}this.paused&&(this._recalculateStartTime(this.pausedTime),this.pausedTime=void 0),this.sendMIDIMessages||this.playingNotes.forEach(A=>{this.synth.noteOn(A.channel,A.midiNote,A.velocity)}),this.setProcessHandler()}}function si(e){if(!this.midiData)return;this.stop(),this.playingNotes=[],this.pausedTime=void 0,this?.onTimeChange?.(this.midiData.MIDIticksToSeconds(e));let A=this._playTo(0,e);this._recalculateStartTime(this.playedTime),A&&this.play()}function oi(e){this.absoluteStartTime=this.synth.currentSynthTime-e/this._playbackRate}function ri(e){this.sendMIDIMessages&&this?.onMIDIMessage?.(e)}function ii(e,A,t){e%=16,this.sendMIDIMessages&&this.sendMIDIMessage([F.controllerChange|e,A,t])}function ai(e,A){e%=16,this.sendMIDIMessages&&this.sendMIDIMessage([F.programChange|e,A])}function gi(e,A,t){e%=16,this.sendMIDIMessages&&this.sendMIDIMessage([F.pitchBend|e,t,A])}function Ii(){if(this.sendMIDIMessages){this.sendMIDIMessage([F.reset]);for(let e=0;e<16;e++)this.sendMIDIMessage([F.controllerChange|e,p.allSoundOff,0]),this.sendMIDIMessage([F.controllerChange|e,p.resetAllControllers,0])}}var FA=class{songs=[];songIndex=0;shuffledSongIndexes=[];synth;isActive=!1;sendMIDIMessages=!1;loopCount=1/0;eventIndex=[];playedTime=0;pausedTime=void 0;absoluteStartTime=0;playingNotes=[];loop=!0;shuffleMode=!1;midiData=void 0;midiPorts=[];midiPortChannelOffset=0;midiPortChannelOffsets={};skipToFirstNoteOn=!0;preservePlaybackState=!1;onMIDIMessage;onTimeChange;onPlaybackStop;onSongListChange;onSongChange;onMetaEvent;onLoopCountChange;constructor(A){this.synth=A,this.absoluteStartTime=this.synth.currentSynthTime}_playbackRate=1;set playbackRate(A){let t=this.currentTime;this._playbackRate=A,this.currentTime=t}get currentTime(){return this.pausedTime!==void 0?this.pausedTime:(this.synth.currentSynthTime-this.absoluteStartTime)*this._playbackRate}set currentTime(A){if(!this.midiData)return;if(A>this.duration||A<0){this.skipToFirstNoteOn?this.setTimeTicks(this.midiData.firstNoteOn-1):this.setTimeTicks(0);return}if(this.skipToFirstNoteOn&&A<this.firstNoteTime){this.setTimeTicks(this.midiData.firstNoteOn-1);return}this.stop(),this.playingNotes=[];let t=this.paused&&this.preservePlaybackState;if(this.pausedTime=void 0,this?.onTimeChange?.(A),this.midiData.duration===0){O("No duration!"),this?.onPlaybackStop?.(!0);return}this._playTo(A),this._recalculateStartTime(A),t?this.pause():this.play()}get paused(){return this.pausedTime!==void 0}pause(A=!1){if(this.paused){O("Already paused");return}this.pausedTime=this.currentTime,this.stop(),this?.onPlaybackStop?.(A)}stop(){this.clearProcessHandler();for(let A=0;A<16;A++)this.synth.controllerChange(A,p.sustainPedal,0);if(this.synth.stopAllChannels(),this.sendMIDIMessages){for(let A of this.playingNotes)this.sendMIDIMessage([F.noteOff|A.channel%16,A.midiNote]);for(let A=0;A<16;A++)this.sendMIDICC(A,p.allNotesOff,0)}}loadCurrentSong(A=!0){let t=this.songIndex;this.shuffleMode&&(t=this.shuffledSongIndexes[this.songIndex]),this.loadNewSequence(this.songs[t],A)}_resetTimers(){this.playedTime=0,this.eventIndex=Array(this.tracks.length).fill(0)}setProcessHandler(){this.isActive=!0}clearProcessHandler(){this.isActive=!1}shuffleSongIndexes(){let A=this.songs.map((t,n)=>n);for(this.shuffledSongIndexes=[];A.length>0;){let t=A[Math.floor(Math.random()*A.length)];this.shuffledSongIndexes.push(t),A.splice(A.indexOf(t),1)}}};FA.prototype.sendMIDIMessage=ri;FA.prototype.sendMIDIReset=Ii;FA.prototype.sendMIDICC=ii;FA.prototype.sendMIDIProgramChange=ai;FA.prototype.sendMIDIPitchWheel=gi;FA.prototype.assignMIDIPort=zr;FA.prototype._processEvent=Or;FA.prototype._addNewMidiPort=Jr;FA.prototype.processTick=Kr;FA.prototype._findFirstEventIndex=Pr;FA.prototype.loadNewSequence=jr;FA.prototype.loadNewSongList=$r;FA.prototype.nextSong=Ai;FA.prototype.previousSong=ei;FA.prototype.play=ni;FA.prototype._playTo=ti;FA.prototype.setTimeTicks=si;FA.prototype._recalculateStartTime=oi;var Xt;(()=>{var e=Uint8Array,A=Uint16Array,t=Int32Array,n=new e([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),s=new e([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),o=new e([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),r=function(T,Y){for(var $=new A(31),Z=0;Z<31;++Z)$[Z]=Y+=1<<T[Z-1];for(var rA=new t($[30]),Z=1;Z<30;++Z)for(var PA=$[Z];PA<$[Z+1];++PA)rA[PA]=PA-$[Z]<<5|Z;return{b:$,r:rA}},g=r(n,2),i=g.b,C=g.r;i[28]=258,C[258]=28;var B=r(s,0),h=B.b,c=B.r,l=new A(32768);for(D=0;D<32768;++D)u=(D&43690)>>1|(D&21845)<<1,u=(u&52428)>>2|(u&13107)<<2,u=(u&61680)>>4|(u&3855)<<4,l[D]=((u&65280)>>8|(u&255)<<8)>>1;var u,D,f=function(T,Y,$){for(var Z=T.length,rA=0,PA=new A(Y);rA<Z;++rA)T[rA]&&++PA[T[rA]-1];var Ee=new A(Y);for(rA=1;rA<Y;++rA)Ee[rA]=Ee[rA-1]+PA[rA-1]<<1;var Qe;if($){Qe=new A(1<<Y);var de=15-Y;for(rA=0;rA<Z;++rA)if(T[rA])for(var It=rA<<4|T[rA],De=Y-T[rA],gA=Ee[T[rA]-1]++<<De,lA=gA|(1<<De)-1;gA<=lA;++gA)Qe[l[gA]>>de]=It}else for(Qe=new A(Z),rA=0;rA<Z;++rA)T[rA]&&(Qe[rA]=l[Ee[T[rA]-1]++]>>15-T[rA]);return Qe},S=new e(288);for(D=0;D<144;++D)S[D]=8;var D;for(D=144;D<256;++D)S[D]=9;var D;for(D=256;D<280;++D)S[D]=7;var D;for(D=280;D<288;++D)S[D]=8;var D,G=new e(32);for(D=0;D<32;++D)G[D]=5;var D,M=f(S,9,1),U=f(G,5,1),R=function(T){for(var Y=T[0],$=1;$<T.length;++$)T[$]>Y&&(Y=T[$]);return Y},E=function(T,Y,$){var Z=Y/8|0;return(T[Z]|T[Z+1]<<8)>>(Y&7)&$},x=function(T,Y){var $=Y/8|0;return(T[$]|T[$+1]<<8|T[$+2]<<16)>>(Y&7)},L=function(T){return(T+7)/8|0},sA=function(T,Y,$){return(Y==null||Y<0)&&(Y=0),($==null||$>T.length)&&($=T.length),new e(T.subarray(Y,$))},z=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],H=function(T,Y,$){var Z=new Error(Y||z[T]);if(Z.code=T,Error.captureStackTrace&&Error.captureStackTrace(Z,H),!$)throw Z;return Z},aA=function(T,Y,$,Z){var rA=T.length,PA=Z?Z.length:0;if(!rA||Y.f&&!Y.l)return $||new e(0);var Ee=!$,Qe=Ee||Y.i!=2,de=Y.i;Ee&&($=new e(rA*3));var It=function(en){var Oe=$.length;if(en>Oe){var Lt=new e(Math.max(Oe*2,en));Lt.set($),$=Lt}},De=Y.f||0,gA=Y.p||0,lA=Y.b||0,fe=Y.l,zA=Y.d,ve=Y.m,He=Y.n,Gt=rA*8;do{if(!fe){De=E(T,gA,1);var Ct=E(T,gA+1,3);if(gA+=3,Ct)if(Ct==1)fe=M,zA=U,ve=9,He=5;else if(Ct==2){var Mt=E(T,gA,31)+257,vn=E(T,gA+10,15)+4,Hn=Mt+E(T,gA+5,31)+1;gA+=14;for(var Et=new e(Hn),Ye=new e(19),jA=0;jA<vn;++jA)Ye[o[jA]]=E(T,gA+jA*3,7);gA+=vn*3;for(var Yn=R(Ye),zt=(1<<Yn)-1,ct=f(Ye,Yn,1),jA=0;jA<Hn;){var xt=ct[E(T,gA,zt)];gA+=xt&15;var qA=xt>>4;if(qA<16)Et[jA++]=qA;else{var ke=0,Nt=0;for(qA==16?(Nt=3+E(T,gA,3),gA+=2,ke=Et[jA-1]):qA==17?(Nt=3+E(T,gA,7),gA+=3):qA==18&&(Nt=11+E(T,gA,127),gA+=7);Nt--;)Et[jA++]=ke}}var On=Et.subarray(0,Mt),Fe=Et.subarray(Mt);ve=R(On),He=R(Fe),fe=f(On,ve,1),zA=f(Fe,He,1)}else H(1);else{var qA=L(gA)+4,jt=T[qA-4]|T[qA-3]<<8,$t=qA+jt;if($t>rA){de&&H(0);break}Qe&&It(lA+jt),$.set(T.subarray(qA,$t),lA),Y.b=lA+=jt,Y.p=gA=$t*8,Y.f=De;continue}if(gA>Gt){de&&H(0);break}}Qe&&It(lA+131072);for(var Gs=(1<<ve)-1,Ms=(1<<He)-1,An=gA;;An=gA){var ke=fe[x(T,gA)&Gs],We=ke>>4;if(gA+=ke&15,gA>Gt){de&&H(0);break}if(ke||H(2),We<256)$[lA++]=We;else if(We==256){An=gA,fe=null;break}else{var Jn=We-254;if(We>264){var jA=We-257,we=n[jA];Jn=E(T,gA,(1<<we)-1)+i[jA],gA+=we}var ht=zA[x(T,gA)&Ms],_e=ht>>4;ht||H(3),gA+=ht&15;var Fe=h[_e];if(_e>3){var we=s[_e];Fe+=x(T,gA)&(1<<we)-1,gA+=we}if(gA>Gt){de&&H(0);break}Qe&&It(lA+131072);var bt=lA+Jn;if(lA<Fe){var lt=PA-Fe,xA=Math.min(Fe,bt);for(lt+lA<0&&H(3);lA<xA;++lA)$[lA]=Z[lt+lA]}for(;lA<bt;++lA)$[lA]=$[lA-Fe]}}Y.l=fe,Y.p=An,Y.b=lA,Y.f=De,fe&&(De=1,Y.m=ve,Y.d=zA,Y.n=He)}while(!De);return lA!=$.length&&Ee?sA($,0,lA):$.subarray(0,lA)},RA=new e(0);function NA(T,Y){return aA(T,{i:2},Y&&Y.out,Y&&Y.dictionary)}var tA=typeof TextDecoder<"u"&&new TextDecoder,_=0;try{tA.decode(RA,{stream:!0}),_=1}catch{}Xt=NA})();var Ds={XMFFileType:0,nodeName:1,nodeIDNumber:2,resourceFormat:3,filenameOnDisk:4,filenameExtensionOnDisk:5,macOSFileTypeAndCreator:6,mimeType:7,title:8,copyrightNotice:9,comment:10,autoStart:11,preload:12,contentDescription:13,ID3Metadata:14},wt={inLineResource:1,inFileResource:2,inFileNode:3,externalFile:4,externalXMF:5,XMFFileURIandNodeID:6},ks={StandardMIDIFile:0,StandardMIDIFileType1:1,DLS1:2,DLS2:3,DLS22:4,mobileDLS:5},Wi={standard:0,MMA:1,registered:2,nonRegistered:3},Ln={none:0,MMAUnpacker:1,registered:2,nonRegistered:3},Fs=class e{length;itemCount;metadataLength;metadata={};nodeData;innerNodes=[];packedContent=!1;nodeUnpackers=[];resourceFormat="unknown";constructor(A){let t=A.currentIndex;this.length=fA(A),this.itemCount=fA(A);let n=fA(A),s=A.currentIndex-t,o=n-s,r=A.slice(A.currentIndex,A.currentIndex+o);A.currentIndex+=o,this.metadataLength=fA(r);let g=r.slice(r.currentIndex,r.currentIndex+this.metadataLength);r.currentIndex+=this.metadataLength;let i,C;for(;g.currentIndex<g.length;){if(g[g.currentIndex]===0)g.currentIndex++,i=fA(g),Object.values(Ds).indexOf(i)===-1?(O(`Unknown field specifier: ${i}`),C=`unknown_${i}`):C=Object.keys(Ds).find(f=>Ds[f]===i);else{let f=fA(g);i=AA(g,f),C=i}let u=fA(g);if(u===0){let f=fA(g),S=g.slice(g.currentIndex,g.currentIndex+f);g.currentIndex+=f,fA(S)<4?this.metadata[C]=AA(S,f-1):this.metadata[C]=S.slice(S.currentIndex)}else O(`International content: ${u}`),g.currentIndex+=fA(g)}let B=r.currentIndex,h=fA(r),c=r.slice(r.currentIndex,B+h);if(r.currentIndex=B+h,h>0)for(this.packedContent=!0;c.currentIndex<h;){let l={};switch(l.id=fA(c),l.id){case Ln.nonRegistered:case Ln.registered:throw P(),new Error(`Unsupported unpacker ID: ${l.id}`);default:throw P(),new Error(`Unknown unpacker ID: ${l.id}`);case Ln.none:l.standardID=fA(c);break;case Ln.MMAUnpacker:let u=c[c.currentIndex++];u===0&&(u<<=8,u|=c[c.currentIndex++],u<<=8,u|=c[c.currentIndex++]);let f=fA(c);l.manufacturerID=u,l.manufacturerInternalID=f;break}l.decodedSize=fA(c),this.nodeUnpackers.push(l)}switch(A.currentIndex=t+n,this.referenceTypeID=fA(A),this.nodeData=A.slice(A.currentIndex,t+this.length),A.currentIndex=t+this.length,this.referenceTypeID){case wt.inLineResource:break;case wt.externalXMF:case wt.inFileNode:case wt.XMFFileURIandNodeID:case wt.externalFile:case wt.inFileResource:throw P(),new Error(`Unsupported reference type: ${this.referenceTypeID}`);default:throw P(),new Error(`Unknown reference type: ${this.referenceTypeID}`)}if(this.isFile){if(this.packedContent){let u=this.nodeData.slice(2,this.nodeData.length);y(`%cPacked content. Attemting to deflate. Target size: %c${this.nodeUnpackers[0].decodedSize}`,I.warn,I.value);try{this.nodeData=new b(Xt(u).buffer)}catch(f){throw P(),new Error(`Error unpacking XMF file contents: ${f.message}.`)}}let l=this.metadata.resourceFormat;if(l===void 0)O("No resource format for this file node!");else{l[0]!==Wi.standard&&(O(`Non-standard formatTypeID: ${l}`),this.resourceFormat=l.toString());let f=l[1];Object.values(ks).indexOf(f)===-1?O(`Unrecognized resource format: ${f}`):this.resourceFormat=Object.keys(ks).find(S=>ks[S]===f)}}else for(this.resourceFormat="folder";this.nodeData.currentIndex<this.nodeData.length;){let l=this.nodeData.currentIndex,u=fA(this.nodeData),f=this.nodeData.slice(l,l+u);this.nodeData.currentIndex=l+u,this.innerNodes.push(new e(f))}}get isFile(){return this.itemCount===0}};function Ci(e,A){e.bankOffset=0;let t=AA(A,4);if(t!=="XMF_")throw P(),new SyntaxError(`Invalid XMF Header! Expected "_XMF", got "${t}"`);ge("%cParsing XMF file...",I.info);let n=AA(A,4);if(y(`%cXMF version: %c${n}`,I.info,I.recognized),n==="2.00"){let i=KA(A,4),C=KA(A,4);y(`%cFile Type ID: %c${i}%c, File Type Revision ID: %c${C}`,I.info,I.recognized,I.info,I.recognized)}fA(A);let s=fA(A);A.currentIndex+=s,A.currentIndex=fA(A);let o=new Fs(A),r,g=i=>{let C=(B,h)=>{i.metadata[B]!==void 0&&typeof i.metadata[B]=="string"&&(e.RMIDInfo[h]=i.metadata[B])};if(C("nodeName",uA.name),C("title",uA.name),C("copyrightNotice",uA.copyright),C("comment",uA.comment),i.isFile)switch(i.resourceFormat){default:return;case"DLS1":case"DLS2":case"DLS22":case"mobileDLS":y("%cFound embedded DLS!",I.recognized),e.embeddedSoundFont=i.nodeData.buffer;break;case"StandardMIDIFile":case"StandardMIDIFileType1":y("%cFound embedded MIDI!",I.recognized),r=i.nodeData;break}else for(let B of i.innerNodes)g(B)};return g(o),P(),r}var Wt=class extends _A{constructor(A,t=""){super(),QA("%cParsing MIDI File...",I.info),this.fileName=t;let n=new b(A),s,o=AA(n,4);if(n.currentIndex-=4,o==="RIFF"){n.currentIndex+=8;let g=AA(n,4,void 0,!1);if(g!=="RMID")throw P(),new SyntaxError(`Invalid RMIDI Header! Expected "RMID", got "${g}"`);let i=IA(n);if(i.header!=="data")throw P(),new SyntaxError(`Invalid RMIDI Chunk header! Expected "data", got "${g}"`);for(s=i.chunkData;n.currentIndex<=n.length;){let C=n.currentIndex,B=IA(n,!0);if(B.header==="RIFF"){let h=AA(B.chunkData,4).toLowerCase();h==="sfbk"||h==="sfpk"||h==="dls "?(y("%cFound embedded soundfont!",I.recognized),this.embeddedSoundFont=n.slice(C,C+B.size).buffer):O(`Unknown RIFF chunk: "${h}"`),h==="dls "&&(this.isDLSRMIDI=!0)}else if(B.header==="LIST"&&AA(B.chunkData,4)==="INFO"){for(y("%cFound RMIDI INFO chunk!",I.recognized),this.RMIDInfo={};B.chunkData.currentIndex<=B.size;){let c=IA(B.chunkData,!0);this.RMIDInfo[c.header]=c.chunkData}this.RMIDInfo.ICOP&&(this.copyright=AA(this.RMIDInfo.ICOP,this.RMIDInfo.ICOP.length,void 0,!1).replaceAll(`
19
+ `)||""),this.midiName=this.midiName.trim(),this.midiNameUsesFileName=!1,this.midiName.length===0){y("%cNo name detected. Using the alt name!",I.info),this.midiName=Ks(this.fileName),this.midiNameUsesFileName=!0,this.rawMidiName=new Uint8Array(this.midiName.length);for(let B=0;B<this.midiName.length;B++)this.rawMidiName[B]=this.midiName.charCodeAt(B)}else y(`%cMIDI Name detected! %c"${this.midiName}"`,I.info,I.recognized);this.tracks.some(B=>B[0].ticks===0)||this.tracks[0].unshift(new OA(0,F.trackName,new b(this.rawMidiName.buffer))),this.duration=this.MIDIticksToSeconds(this.lastVoiceEventTick),y("%cSuccess!",I.recognized),K()}flush(){for(let A of this.tracks)A.sort((t,n)=>t.ticks-n.ticks);this._parseInternal()}};zA.prototype.writeMIDI=Vr;zA.prototype.modifyMIDI=Zr;zA.prototype.applySnapshotToMIDI=Xr;zA.prototype.writeRMIDI=Wr;zA.prototype.getUsedProgramsAndKeys=_r;zA.prototype.getNoteTimes=zr;function jr(e,A){this.midiData.usedChannelsOnTrack[e].size!==0&&(this.midiPortChannelOffset===0&&(this.midiPortChannelOffset+=16,this.midiPortChannelOffsets[A]=0),this.midiPortChannelOffsets[A]===void 0&&(this.synth.midiAudioChannels.length<this.midiPortChannelOffset+15&&this._addNewMidiPort(),this.midiPortChannelOffsets[A]=this.midiPortChannelOffset,this.midiPortChannelOffset+=16),this.midiPorts[e]=A)}function $r(e,A=!0){if(this.stop(),!e.tracks)throw new Error("This MIDI has no tracks!");this.oneTickToSeconds=60/(120*e.timeDivision),this.midiData=e,this.synth.clearEmbeddedBank(),this.midiData.embeddedSoundFont!==void 0&&(y("%cEmbedded soundfont detected! Using it.",I.recognized),this.synth.setEmbeddedSoundFont(this.midiData.embeddedSoundFont,this.midiData.bankOffset)),QA("%cPreloading samples...",I.info);let t=this.midiData.getUsedProgramsAndKeys(this.synth.soundfontManager);for(let[n,s]of Object.entries(t)){let[o,r]=n.split(":").map(Number),g=this.synth.getPreset(o,r);y(`%cPreloading used samples on %c${g.presetName}%c...`,I.info,I.recognized,I.info);for(let i of s){let[C,B]=i.split("-").map(Number);this.synth.getVoicesForPreset(g,o,r,C,B,C)}}if(K(),this.tracks=this.midiData.tracks,this.midiPorts=this.midiData.midiPorts.slice(),this.midiPortChannelOffset=0,this.midiPortChannelOffsets={},this.midiData.midiPorts.forEach((n,s)=>{this.assignMIDIPort(s,n)}),this.duration=this.midiData.duration,this.firstNoteTime=this.midiData.MIDIticksToSeconds(this.midiData.firstNoteOn),y(`%cTotal song time: ${$n(Math.ceil(this.duration)).time}`,I.recognized),this?.onSongChange?.(this.songIndex,A),this.duration<=1&&(O(`%cVery short song: (${$n(Math.round(this.duration)).time}). Disabling loop!`,I.warn),this.loop=!1),A)this.play(!0);else{let n=this.skipToFirstNoteOn?this.midiData.firstNoteOn-1:0;this.setTimeTicks(n),this.pause()}}function Ai(e,A=!0){this.songs=e.map(t=>zA.copyFrom(t)),!(this.songs.length<1)&&(this.songIndex=0,this.songs.length>1&&(this.loop=!1),this.shuffleSongIndexes(),this?.onSongListChange?.(this.songs),this.loadCurrentSong(A))}function ei(){if(this.songs.length===1){this.currentTime=0;return}this.songIndex++,this.songIndex%=this.songs.length,this.loadCurrentSong()}function ti(){if(this.songs.length===1){this.currentTime=0;return}this.songIndex--,this.songIndex<0&&(this.songIndex=this.songs.length-1),this.loadCurrentSong()}var at=Pe.slice(0,128);function ni(e,A=void 0){this.oneTickToSeconds=60/(120*this.midiData.timeDivision),this.synth.resetAllControllers(),this.sendMIDIReset(),this._resetTimers();let t=this.synth.midiAudioChannels.length,n=Array(t).fill(8192),s=[];for(let i=0;i<t;i++)s.push({program:-1,bank:0,actualBank:0});let o=i=>i===p.dataDecrement||i===p.dataIncrement||i===p.dataEntryMsb||i===p.dataDecrement||i===p.lsbForControl6DataEntry||i===p.RPNLsb||i===p.RPNMsb||i===p.NRPNLsb||i===p.NRPNMsb||i===p.bankSelect||i===p.lsbForControl0BankSelect||i===p.resetAllControllers,r=[];for(let i=0;i<t;i++)r.push(Array.from(at));function g(i){if(n[i]=8192,r?.[i]!==void 0)for(let C=0;C<at.length;C++)Cs.has(C)||(r[i][C]=at[C])}for(;;){let i=this._findFirstEventIndex(),C=this.tracks[i][this.eventIndex[i]];if(A!==void 0){if(C.ticks>=A)break}else if(this.playedTime>=e)break;let B=dt(C.messageStatusByte),h=B.channel+(this.midiPortChannelOffsets[this.midiPorts[i]]||0);switch(B.status){case F.noteOn:r[h]===void 0&&(r[h]=Array.from(at)),r[h][p.portamentoControl]=C.messageData[0];break;case F.noteOff:break;case F.pitchBend:n[h]=C.messageData[1]<<7|C.messageData[0];break;case F.programChange:if(this.midiData.isMultiPort&&this.midiData.usedChannelsOnTrack[i].size===0)break;let l=s[h];l.program=C.messageData[0],l.actualBank=l.bank;break;case F.controllerChange:if(this.midiData.isMultiPort&&this.midiData.usedChannelsOnTrack[i].size===0)break;let u=C.messageData[0];if(o(u)){let f=C.messageData[1];if(u===p.bankSelect){s[h].bank=f;break}else u===p.resetAllControllers&&g(h);this.sendMIDIMessages?this.sendMIDICC(h,u,f):this.synth.controllerChange(h,u,f)}else r[h]===void 0&&(r[h]=Array.from(at)),r[h][u]=C.messageData[1];break;default:this._processEvent(C,i);break}this.eventIndex[i]++,i=this._findFirstEventIndex();let c=this.tracks[i][this.eventIndex[i]];if(c===void 0)return this.stop(),!1;this.playedTime+=this.oneTickToSeconds*(c.ticks-C.ticks)}if(this.sendMIDIMessages){for(let i=0;i<t;i++)if(n[i]!==void 0&&this.sendMIDIPitchWheel(i,n[i]>>7,n[i]&127),r[i]!==void 0&&r[i].forEach((C,B)=>{C!==at[B]&&!o(B)&&this.sendMIDICC(i,B,C)}),s[i].program>=0&&s[i].actualBank>=0){let C=s[i].actualBank;this.sendMIDICC(i,p.bankSelect,C),this.sendMIDIProgramChange(i,s[i].program)}}else for(let i=0;i<t;i++)if(n[i]!==void 0&&this.synth.pitchWheel(i,n[i]>>7,n[i]&127),r[i]!==void 0&&r[i].forEach((C,B)=>{C!==at[B]&&!o(B)&&this.synth.controllerChange(i,B,C)}),s[i].actualBank>=0){let C=s[i];C.program!==-1?(this.synth.controllerChange(i,p.bankSelect,C.actualBank),this.synth.programChange(i,C.program)):this.synth.controllerChange(i,p.bankSelect,C.bank)}return!0}function si(e=!1){if(this.midiData!==void 0){if(e){this.pausedTime=void 0,this.currentTime=0;return}if(this.currentTime>=this.duration){this.pausedTime=void 0,this.currentTime=0;return}this.paused&&(this._recalculateStartTime(this.pausedTime),this.pausedTime=void 0),this.sendMIDIMessages||this.playingNotes.forEach(A=>{this.synth.noteOn(A.channel,A.midiNote,A.velocity)}),this.setProcessHandler()}}function oi(e){if(!this.midiData)return;this.stop(),this.playingNotes=[],this.pausedTime=void 0,this?.onTimeChange?.(this.midiData.MIDIticksToSeconds(e));let A=this._playTo(0,e);this._recalculateStartTime(this.playedTime),A&&this.play()}function ri(e){this.absoluteStartTime=this.synth.currentSynthTime-e/this._playbackRate}function ii(e){this.sendMIDIMessages&&this?.onMIDIMessage?.(e)}function ai(e,A,t){e%=16,this.sendMIDIMessages&&this.sendMIDIMessage([F.controllerChange|e,A,t])}function gi(e,A){e%=16,this.sendMIDIMessages&&this.sendMIDIMessage([F.programChange|e,A])}function Ii(e,A,t){e%=16,this.sendMIDIMessages&&this.sendMIDIMessage([F.pitchBend|e,t,A])}function Ci(){if(this.sendMIDIMessages){this.sendMIDIMessage([F.reset]);for(let e=0;e<16;e++)this.sendMIDIMessage([F.controllerChange|e,p.allSoundOff,0]),this.sendMIDIMessage([F.controllerChange|e,p.resetAllControllers,0])}}var FA=class{songs=[];songIndex=0;shuffledSongIndexes=[];synth;isActive=!1;sendMIDIMessages=!1;loopCount=1/0;eventIndex=[];playedTime=0;pausedTime=void 0;absoluteStartTime=0;playingNotes=[];loop=!0;shuffleMode=!1;midiData=void 0;midiPorts=[];midiPortChannelOffset=0;midiPortChannelOffsets={};skipToFirstNoteOn=!0;preservePlaybackState=!1;onMIDIMessage;onTimeChange;onPlaybackStop;onSongListChange;onSongChange;onMetaEvent;onLoopCountChange;constructor(A){this.synth=A,this.absoluteStartTime=this.synth.currentSynthTime}_playbackRate=1;set playbackRate(A){let t=this.currentTime;this._playbackRate=A,this.currentTime=t}get currentTime(){return this.pausedTime!==void 0?this.pausedTime:(this.synth.currentSynthTime-this.absoluteStartTime)*this._playbackRate}set currentTime(A){if(!this.midiData)return;if(A>this.duration||A<0){this.skipToFirstNoteOn?this.setTimeTicks(this.midiData.firstNoteOn-1):this.setTimeTicks(0);return}if(this.skipToFirstNoteOn&&A<this.firstNoteTime){this.setTimeTicks(this.midiData.firstNoteOn-1);return}this.stop(),this.playingNotes=[];let t=this.paused&&this.preservePlaybackState;if(this.pausedTime=void 0,this?.onTimeChange?.(A),this.midiData.duration===0){O("No duration!"),this?.onPlaybackStop?.(!0);return}this._playTo(A),this._recalculateStartTime(A),t?this.pause():this.play()}get paused(){return this.pausedTime!==void 0}pause(A=!1){if(this.paused){O("Already paused");return}this.pausedTime=this.currentTime,this.stop(),this?.onPlaybackStop?.(A)}stop(){this.clearProcessHandler();for(let A=0;A<16;A++)this.synth.controllerChange(A,p.sustainPedal,0);if(this.synth.stopAllChannels(),this.sendMIDIMessages){for(let A of this.playingNotes)this.sendMIDIMessage([F.noteOff|A.channel%16,A.midiNote]);for(let A=0;A<16;A++)this.sendMIDICC(A,p.allNotesOff,0)}}loadCurrentSong(A=!0){let t=this.songIndex;this.shuffleMode&&(t=this.shuffledSongIndexes[this.songIndex]),this.loadNewSequence(this.songs[t],A)}_resetTimers(){this.playedTime=0,this.eventIndex=Array(this.tracks.length).fill(0)}setProcessHandler(){this.isActive=!0}clearProcessHandler(){this.isActive=!1}shuffleSongIndexes(){let A=this.songs.map((t,n)=>n);for(this.shuffledSongIndexes=[];A.length>0;){let t=A[Math.floor(Math.random()*A.length)];this.shuffledSongIndexes.push(t),A.splice(A.indexOf(t),1)}}};FA.prototype.sendMIDIMessage=ii;FA.prototype.sendMIDIReset=Ci;FA.prototype.sendMIDICC=ai;FA.prototype.sendMIDIProgramChange=gi;FA.prototype.sendMIDIPitchWheel=Ii;FA.prototype.assignMIDIPort=jr;FA.prototype._processEvent=Jr;FA.prototype._addNewMidiPort=Pr;FA.prototype.processTick=Kr;FA.prototype._findFirstEventIndex=qr;FA.prototype.loadNewSequence=$r;FA.prototype.loadNewSongList=Ai;FA.prototype.nextSong=ei;FA.prototype.previousSong=ti;FA.prototype.play=si;FA.prototype._playTo=ni;FA.prototype.setTimeTicks=oi;FA.prototype._recalculateStartTime=ri;var Xt;(()=>{var e=Uint8Array,A=Uint16Array,t=Int32Array,n=new e([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),s=new e([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),o=new e([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),r=function(T,H){for(var j=new A(31),Z=0;Z<31;++Z)j[Z]=H+=1<<T[Z-1];for(var rA=new t(j[30]),Z=1;Z<30;++Z)for(var KA=j[Z];KA<j[Z+1];++KA)rA[KA]=KA-j[Z]<<5|Z;return{b:j,r:rA}},g=r(n,2),i=g.b,C=g.r;i[28]=258,C[258]=28;var B=r(s,0),h=B.b,c=B.r,l=new A(32768);for(D=0;D<32768;++D)u=(D&43690)>>1|(D&21845)<<1,u=(u&52428)>>2|(u&13107)<<2,u=(u&61680)>>4|(u&3855)<<4,l[D]=((u&65280)>>8|(u&255)<<8)>>1;var u,D,f=function(T,H,j){for(var Z=T.length,rA=0,KA=new A(H);rA<Z;++rA)T[rA]&&++KA[T[rA]-1];var ce=new A(H);for(rA=1;rA<H;++rA)ce[rA]=ce[rA-1]+KA[rA-1]<<1;var de;if(j){de=new A(1<<H);var fe=15-H;for(rA=0;rA<Z;++rA)if(T[rA])for(var It=rA<<4|T[rA],ke=H-T[rA],gA=ce[T[rA]-1]++<<ke,lA=gA|(1<<ke)-1;gA<=lA;++gA)de[l[gA]>>fe]=It}else for(de=new A(Z),rA=0;rA<Z;++rA)T[rA]&&(de[rA]=l[ce[T[rA]-1]++]>>15-T[rA]);return de},S=new e(288);for(D=0;D<144;++D)S[D]=8;var D;for(D=144;D<256;++D)S[D]=9;var D;for(D=256;D<280;++D)S[D]=7;var D;for(D=280;D<288;++D)S[D]=8;var D,G=new e(32);for(D=0;D<32;++D)G[D]=5;var D,M=f(S,9,1),v=f(G,5,1),R=function(T){for(var H=T[0],j=1;j<T.length;++j)T[j]>H&&(H=T[j]);return H},E=function(T,H,j){var Z=H/8|0;return(T[Z]|T[Z+1]<<8)>>(H&7)&j},x=function(T,H){var j=H/8|0;return(T[j]|T[j+1]<<8|T[j+2]<<16)>>(H&7)},L=function(T){return(T+7)/8|0},sA=function(T,H,j){return(H==null||H<0)&&(H=0),(j==null||j>T.length)&&(j=T.length),new e(T.subarray(H,j))},$=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],Y=function(T,H,j){var Z=new Error(H||$[T]);if(Z.code=T,Error.captureStackTrace&&Error.captureStackTrace(Z,Y),!j)throw Z;return Z},aA=function(T,H,j,Z){var rA=T.length,KA=Z?Z.length:0;if(!rA||H.f&&!H.l)return j||new e(0);var ce=!j,de=ce||H.i!=2,fe=H.i;ce&&(j=new e(rA*3));var It=function(en){var Je=j.length;if(en>Je){var Lt=new e(Math.max(Je*2,en));Lt.set(j),j=Lt}},ke=H.f||0,gA=H.p||0,lA=H.b||0,ue=H.l,jA=H.d,He=H.m,Ye=H.n,Gt=rA*8;do{if(!ue){ke=E(T,gA,1);var Ct=E(T,gA+1,3);if(gA+=3,Ct)if(Ct==1)ue=M,jA=v,He=9,Ye=5;else if(Ct==2){var Mt=E(T,gA,31)+257,Hn=E(T,gA+10,15)+4,Yn=Mt+E(T,gA+5,31)+1;gA+=14;for(var Et=new e(Yn),Oe=new e(19),$A=0;$A<Hn;++$A)Oe[o[$A]]=E(T,gA+$A*3,7);gA+=Hn*3;for(var On=R(Oe),zt=(1<<On)-1,ct=f(Oe,On,1),$A=0;$A<Yn;){var xt=ct[E(T,gA,zt)];gA+=xt&15;var qA=xt>>4;if(qA<16)Et[$A++]=qA;else{var Fe=0,Nt=0;for(qA==16?(Nt=3+E(T,gA,3),gA+=2,Fe=Et[$A-1]):qA==17?(Nt=3+E(T,gA,7),gA+=3):qA==18&&(Nt=11+E(T,gA,127),gA+=7);Nt--;)Et[$A++]=Fe}}var Jn=Et.subarray(0,Mt),we=Et.subarray(Mt);He=R(Jn),Ye=R(we),ue=f(Jn,He,1),jA=f(we,Ye,1)}else Y(1);else{var qA=L(gA)+4,jt=T[qA-4]|T[qA-3]<<8,$t=qA+jt;if($t>rA){fe&&Y(0);break}de&&It(lA+jt),j.set(T.subarray(qA,$t),lA),H.b=lA+=jt,H.p=gA=$t*8,H.f=ke;continue}if(gA>Gt){fe&&Y(0);break}}de&&It(lA+131072);for(var Ms=(1<<He)-1,xs=(1<<Ye)-1,An=gA;;An=gA){var Fe=ue[x(T,gA)&Ms],_e=Fe>>4;if(gA+=Fe&15,gA>Gt){fe&&Y(0);break}if(Fe||Y(2),_e<256)j[lA++]=_e;else if(_e==256){An=gA,ue=null;break}else{var Pn=_e-254;if(_e>264){var $A=_e-257,Re=n[$A];Pn=E(T,gA,(1<<Re)-1)+i[$A],gA+=Re}var ht=jA[x(T,gA)&xs],ze=ht>>4;ht||Y(3),gA+=ht&15;var we=h[ze];if(ze>3){var Re=s[ze];we+=x(T,gA)&(1<<Re)-1,gA+=Re}if(gA>Gt){fe&&Y(0);break}de&&It(lA+131072);var bt=lA+Pn;if(lA<we){var lt=KA-we,xA=Math.min(we,bt);for(lt+lA<0&&Y(3);lA<xA;++lA)j[lA]=Z[lt+lA]}for(;lA<bt;++lA)j[lA]=j[lA-we]}}H.l=ue,H.p=An,H.b=lA,H.f=ke,ue&&(ke=1,H.m=He,H.d=jA,H.n=Ye)}while(!ke);return lA!=j.length&&ce?sA(j,0,lA):j.subarray(0,lA)},RA=new e(0);function NA(T,H){return aA(T,{i:2},H&&H.out,H&&H.dictionary)}var tA=typeof TextDecoder<"u"&&new TextDecoder,_=0;try{tA.decode(RA,{stream:!0}),_=1}catch{}Xt=NA})();var ks={XMFFileType:0,nodeName:1,nodeIDNumber:2,resourceFormat:3,filenameOnDisk:4,filenameExtensionOnDisk:5,macOSFileTypeAndCreator:6,mimeType:7,title:8,copyrightNotice:9,comment:10,autoStart:11,preload:12,contentDescription:13,ID3Metadata:14},wt={inLineResource:1,inFileResource:2,inFileNode:3,externalFile:4,externalXMF:5,XMFFileURIandNodeID:6},Fs={StandardMIDIFile:0,StandardMIDIFileType1:1,DLS1:2,DLS2:3,DLS22:4,mobileDLS:5},Wi={standard:0,MMA:1,registered:2,nonRegistered:3},Tn={none:0,MMAUnpacker:1,registered:2,nonRegistered:3},ws=class e{length;itemCount;metadataLength;metadata={};nodeData;innerNodes=[];packedContent=!1;nodeUnpackers=[];resourceFormat="unknown";constructor(A){let t=A.currentIndex;this.length=fA(A),this.itemCount=fA(A);let n=fA(A),s=A.currentIndex-t,o=n-s,r=A.slice(A.currentIndex,A.currentIndex+o);A.currentIndex+=o,this.metadataLength=fA(r);let g=r.slice(r.currentIndex,r.currentIndex+this.metadataLength);r.currentIndex+=this.metadataLength;let i,C;for(;g.currentIndex<g.length;){if(g[g.currentIndex]===0)g.currentIndex++,i=fA(g),Object.values(ks).indexOf(i)===-1?(O(`Unknown field specifier: ${i}`),C=`unknown_${i}`):C=Object.keys(ks).find(f=>ks[f]===i);else{let f=fA(g);i=AA(g,f),C=i}let u=fA(g);if(u===0){let f=fA(g),S=g.slice(g.currentIndex,g.currentIndex+f);g.currentIndex+=f,fA(S)<4?this.metadata[C]=AA(S,f-1):this.metadata[C]=S.slice(S.currentIndex)}else O(`International content: ${u}`),g.currentIndex+=fA(g)}let B=r.currentIndex,h=fA(r),c=r.slice(r.currentIndex,B+h);if(r.currentIndex=B+h,h>0)for(this.packedContent=!0;c.currentIndex<h;){let l={};switch(l.id=fA(c),l.id){case Tn.nonRegistered:case Tn.registered:throw K(),new Error(`Unsupported unpacker ID: ${l.id}`);default:throw K(),new Error(`Unknown unpacker ID: ${l.id}`);case Tn.none:l.standardID=fA(c);break;case Tn.MMAUnpacker:let u=c[c.currentIndex++];u===0&&(u<<=8,u|=c[c.currentIndex++],u<<=8,u|=c[c.currentIndex++]);let f=fA(c);l.manufacturerID=u,l.manufacturerInternalID=f;break}l.decodedSize=fA(c),this.nodeUnpackers.push(l)}switch(A.currentIndex=t+n,this.referenceTypeID=fA(A),this.nodeData=A.slice(A.currentIndex,t+this.length),A.currentIndex=t+this.length,this.referenceTypeID){case wt.inLineResource:break;case wt.externalXMF:case wt.inFileNode:case wt.XMFFileURIandNodeID:case wt.externalFile:case wt.inFileResource:throw K(),new Error(`Unsupported reference type: ${this.referenceTypeID}`);default:throw K(),new Error(`Unknown reference type: ${this.referenceTypeID}`)}if(this.isFile){if(this.packedContent){let u=this.nodeData.slice(2,this.nodeData.length);y(`%cPacked content. Attemting to deflate. Target size: %c${this.nodeUnpackers[0].decodedSize}`,I.warn,I.value);try{this.nodeData=new b(Xt(u).buffer)}catch(f){throw K(),new Error(`Error unpacking XMF file contents: ${f.message}.`)}}let l=this.metadata.resourceFormat;if(l===void 0)O("No resource format for this file node!");else{l[0]!==Wi.standard&&(O(`Non-standard formatTypeID: ${l}`),this.resourceFormat=l.toString());let f=l[1];Object.values(Fs).indexOf(f)===-1?O(`Unrecognized resource format: ${f}`):this.resourceFormat=Object.keys(Fs).find(S=>Fs[S]===f)}}else for(this.resourceFormat="folder";this.nodeData.currentIndex<this.nodeData.length;){let l=this.nodeData.currentIndex,u=fA(this.nodeData),f=this.nodeData.slice(l,l+u);this.nodeData.currentIndex=l+u,this.innerNodes.push(new e(f))}}get isFile(){return this.itemCount===0}};function Ei(e,A){e.bankOffset=0;let t=AA(A,4);if(t!=="XMF_")throw K(),new SyntaxError(`Invalid XMF Header! Expected "_XMF", got "${t}"`);Ie("%cParsing XMF file...",I.info);let n=AA(A,4);if(y(`%cXMF version: %c${n}`,I.info,I.recognized),n==="2.00"){let i=PA(A,4),C=PA(A,4);y(`%cFile Type ID: %c${i}%c, File Type Revision ID: %c${C}`,I.info,I.recognized,I.info,I.recognized)}fA(A);let s=fA(A);A.currentIndex+=s,A.currentIndex=fA(A);let o=new ws(A),r,g=i=>{let C=(B,h)=>{i.metadata[B]!==void 0&&typeof i.metadata[B]=="string"&&(e.RMIDInfo[h]=i.metadata[B])};if(C("nodeName",uA.name),C("title",uA.name),C("copyrightNotice",uA.copyright),C("comment",uA.comment),i.isFile)switch(i.resourceFormat){default:return;case"DLS1":case"DLS2":case"DLS22":case"mobileDLS":y("%cFound embedded DLS!",I.recognized),e.embeddedSoundFont=i.nodeData.buffer;break;case"StandardMIDIFile":case"StandardMIDIFileType1":y("%cFound embedded MIDI!",I.recognized),r=i.nodeData;break}else for(let B of i.innerNodes)g(B)};return g(o),K(),r}var Wt=class extends zA{constructor(A,t=""){super(),QA("%cParsing MIDI File...",I.info),this.fileName=t;let n=new b(A),s,o=AA(n,4);if(n.currentIndex-=4,o==="RIFF"){n.currentIndex+=8;let g=AA(n,4,void 0,!1);if(g!=="RMID")throw K(),new SyntaxError(`Invalid RMIDI Header! Expected "RMID", got "${g}"`);let i=IA(n);if(i.header!=="data")throw K(),new SyntaxError(`Invalid RMIDI Chunk header! Expected "data", got "${g}"`);for(s=i.chunkData;n.currentIndex<=n.length;){let C=n.currentIndex,B=IA(n,!0);if(B.header==="RIFF"){let h=AA(B.chunkData,4).toLowerCase();h==="sfbk"||h==="sfpk"||h==="dls "?(y("%cFound embedded soundfont!",I.recognized),this.embeddedSoundFont=n.slice(C,C+B.size).buffer):O(`Unknown RIFF chunk: "${h}"`),h==="dls "&&(this.isDLSRMIDI=!0)}else if(B.header==="LIST"&&AA(B.chunkData,4)==="INFO"){for(y("%cFound RMIDI INFO chunk!",I.recognized),this.RMIDInfo={};B.chunkData.currentIndex<=B.size;){let c=IA(B.chunkData,!0);this.RMIDInfo[c.header]=c.chunkData}this.RMIDInfo.ICOP&&(this.copyright=AA(this.RMIDInfo.ICOP,this.RMIDInfo.ICOP.length,void 0,!1).replaceAll(`
20
20
  `," ")),this.RMIDInfo.INAM&&(this.rawMidiName=this.RMIDInfo[uA.name],this.midiName=AA(this.rawMidiName,this.rawMidiName.length,void 0,!1).replaceAll(`
21
- `," ")),this.RMIDInfo.IALB&&!this.RMIDInfo.IPRD&&(this.RMIDInfo.IPRD=this.RMIDInfo.IALB),this.RMIDInfo.IPRD&&!this.RMIDInfo.IALB&&(this.RMIDInfo.IALB=this.RMIDInfo.IPRD),this.bankOffset=1,this.RMIDInfo[uA.bankOffset]&&(this.bankOffset=N(this.RMIDInfo[uA.bankOffset],2))}}this.isDLSRMIDI&&(this.bankOffset=0),this.embeddedSoundFont===void 0&&(this.bankOffset=0)}else o==="XMF_"?s=Ci(this,n):s=n;let r=this._readMIDIChunk(s);if(r.type!=="MThd")throw P(),new SyntaxError(`Invalid MIDI Header! Expected "MThd", got "${r.type}"`);if(r.size!==6)throw P(),new RangeError(`Invalid MIDI header chunk size! Expected 6, got ${r.size}`);this.format=KA(r.data,2),this.tracksAmount=KA(r.data,2),this.timeDivision=KA(r.data,2);for(let g=0;g<this.tracksAmount;g++){let i=[],C=this._readMIDIChunk(s);if(C.type!=="MTrk")throw P(),new SyntaxError(`Invalid track header! Expected "MTrk" got "${C.type}"`);let B,h=0;for(this.format===2&&g>0&&(h+=this.tracks[g-1][this.tracks[g-1].length-1].ticks);C.data.currentIndex<C.size;){h+=fA(C.data);let c=C.data[C.data.currentIndex],l;if(B!==void 0&&c<128)l=B;else{if(B===void 0&&c<128)throw P(),new SyntaxError(`Unexpected byte with no running byte. (${c})`);l=C.data[C.data.currentIndex++]}let u=zs(l),f;switch(u){case-1:f=0;break;case-2:l=C.data[C.data.currentIndex++],f=fA(C.data);break;case-3:f=fA(C.data);break;default:f=js[l>>4],B=l;break}let S=new b(f);S.set(C.data.slice(C.data.currentIndex,C.data.currentIndex+f),0);let G=new OA(h,l,S);i.push(G),C.data.currentIndex+=f}this.tracks.push(i),y(`%cParsed %c${this.tracks.length}%c / %c${this.tracksAmount}`,I.info,I.value,I.info,I.value)}y("%cAll tracks parsed correctly!",I.recognized),this._parseInternal(),P(),y(`%cMIDI file parsed. Total tick time: %c${this.lastVoiceEventTick}%c, total seconds time: %c${this.duration}`,I.info,I.recognized,I.info,I.recognized)}_readMIDIChunk(A){let t={};t.type=AA(A,4),t.size=KA(A,4),t.data=new b(t.size);let n=A.slice(A.currentIndex,A.currentIndex+t.size);return t.data.set(n,0),A.currentIndex+=t.size,t}};var gt={consoleColors:I,SpessaSynthInfo:y,SpessaSynthWarn:O,SpessaSynthGroupCollapsed:QA,SpessaSynthGroupEnd:P,readBytesAsUintBigEndian:KA,readLittleEndian:N,readBytesAsString:AA,readVariableLengthQuantity:fA,inflateSync:Xt};var ws=gt.consoleColors;var wA={midiMessage:0,ccReset:7,setChannelVibrato:8,soundFontManager:9,stopAll:10,killNotes:11,muteChannel:12,addNewChannel:13,customCcChange:14,debugMessage:15,setMasterParameter:17,setDrums:18,transpose:19,highPerformanceMode:20,lockController:21,sequencerSpecific:22,requestSynthesizerSnapshot:23,setLogLevel:24,keyModifierManager:25,setEffectsGain:26,destroyWorklet:27},ne={channelPropertyChange:0,eventCall:1,masterParameterChange:2,sequencerSpecific:3,synthesizerSnapshot:4,isFullyInitialized:5,soundfontError:6};var Ei="spessasynth-worklet-processor";var Tn={addMapping:0,deleteMapping:1,clearMappings:2};var _t={reloadSoundFont:0,addNewSoundFont:2,deleteSoundFont:3,rearrangeSoundFonts:4};var Rt={backwards:0,forwards:1,shuffleOn:2,shuffleOff:3,index:4},se={loadNewSongList:0,pause:1,stop:2,play:3,setTime:4,changeMIDIMessageSending:5,setPlaybackRate:6,setLoop:7,changeSong:8,getMIDI:9,setSkipToFirstNote:10,setPreservePlaybackState:11},Be={midiEvent:0,songChange:1,timeChange:2,pause:3,getMIDI:4,midiError:5,metaEvent:6,loopCountChange:7,songListChange:8};function ci(e,A){e===void 0&&(e={});for(let t in A)A.hasOwnProperty(t)&&!(t in e)&&(e[t]=A[t]);return e}var hi={skipToFirstNoteOn:!0,autoPlay:!0,preservePlaybackState:!1,initialPlaybackRate:1};var Un=class extends it{isEmbedded=!1;constructor(A){super(),this._copyFromSequence(A),this.isEmbedded=A.embeddedSoundFont!==void 0}},zm={duration:99999,firstNoteOn:0,loop:{start:0,end:123456},lastVoiceEventTick:123456,lyrics:[],copyright:"",midiPorts:[],midiPortChannelOffsets:[],tracksAmount:0,tempoChanges:[{ticks:0,tempo:120}],fileName:"NOT_LOADED.mid",midiName:"Loading...",rawMidiName:new Uint8Array([76,111,97,100,105,110,103,46,46,46]),usedChannelsOnTrack:[],timeDivision:0,keyRange:{min:0,max:127},isEmbedded:!1,RMIDInfo:{},bankOffset:0,midiNameUsesFileName:!1,format:0};var Rs=class extends AudioWorkletProcessor{alive=!0;oneOutputMode=!1;constructor(A){super();let t=A.processorOptions;this.oneOutputMode=t.midiChannels===1;let n=(g,i)=>{this.postMessageToMainThread({messageType:g,messageData:i})},s=t?.startRenderingData,o=s?.snapshot;this.synthesizer=new TA(sampleRate,{effectsEnabled:!this.oneOutputMode,enableEventSystem:t?.enableEventSystem,midiChannels:16,initialTime:currentTime}),this.synthesizer.onEventCall=(g,i)=>{n(ne.eventCall,{eventName:g,eventData:i})},this.synthesizer.onChannelPropertyChange=(g,i)=>n(ne.channelPropertyChange,[i,g]),this.synthesizer.onMasterParameterChange=(g,i)=>n(ne.masterParameterChange,[g,i]);let r=st(t.soundfont);this.synthesizer.soundfontManager.reloadManager(r),this.synthesizer.processorInitialized.then(()=>{this.sequencer=new FA(this.synthesizer);let g=(i,C)=>{this.postMessageToMainThread({messageType:ne.sequencerSpecific,messageData:{messageType:i,messageData:C}})};if(this.port.onmessage=i=>this.handleMessage(i.data),this.sequencer.onMIDIMessage=i=>{g(Be.midiEvent,i)},this.sequencer.onTimeChange=i=>{g(Be.timeChange,i)},this.sequencer.onPlaybackStop=i=>{g(Be.pause,i)},this.sequencer.onSongChange=(i,C)=>{g(Be.songChange,[i,C])},this.sequencer.onMetaEvent=(i,C)=>{g(Be.metaEvent,[i,C])},this.sequencer.onLoopCountChange=i=>{g(Be.loopCountChange,i)},this.sequencer.onSongListChange=i=>{let C=i.map(B=>new Un(B));this.postMessageToMainThread({messageType:ne.sequencerSpecific,messageData:{messageType:Be.songListChange,messageData:C}})},o!==void 0&&this.synthesizer.applySynthesizerSnapshot(o),s&&(gt.SpessaSynthInfo("%cRendering enabled! Starting render.",ws.info),s.parsedMIDI)){s?.loopCount!==void 0?(this.sequencer.loopCount=s?.loopCount,this.sequencer.loop=!0):this.sequencer.loop=!1,this.synthesizer.voiceCap=1/0;let i=ci(s.sequencerOptions,hi);this.sequencer.skipToFirstNoteOn=i.skipToFirstNoteOn,this.sequencer.preservePlaybackState=i.preservePlaybackState,this.sequencer.playbackRate=i.initialPlaybackRate;try{this.sequencer.loadNewSongList([s.parsedMIDI])}catch(C){console.error(C),g(Be.midiError,C)}}this.postReady()})}postReady(){this.postMessageToMainThread({messageType:ne.isFullyInitialized,messageData:void 0})}postMessageToMainThread(A){this.port.postMessage(A)}handleMessage(A){let t=A.messageData,n=A.channelNumber,s;if(n>=0&&(s=this.synthesizer.midiAudioChannels[n],s===void 0)){gt.SpessaSynthWarn(`Trying to access channel ${n} which does not exist... ignoring!`);return}switch(A.messageType){case wA.midiMessage:this.synthesizer.processMessage(...t);break;case wA.customCcChange:s.setCustomController(t[0],t[1]);break;case wA.ccReset:n===-1?this.synthesizer.resetAllControllers():s.resetControllers();break;case wA.setChannelVibrato:if(n===-1)for(let u=0;u<this.synthesizer.midiAudioChannels.length;u++){let f=this.synthesizer.midiAudioChannels[u];t.rate===-1?f.disableAndLockGSNRPN():f.setVibrato(t.depth,t.rate,t.delay)}else t.rate===-1?s.disableAndLockGSNRPN():s.setVibrato(t.depth,t.rate,t.delay);break;case wA.stopAll:n===-1?this.synthesizer.stopAllChannels(t===1):s.stopAllNotes(t===1);break;case wA.killNotes:this.synthesizer.voiceKilling(t);break;case wA.muteChannel:s.muteChannel(t);break;case wA.addNewChannel:this.synthesizer.createMidiChannel(!0);break;case wA.debugMessage:console.debug(this.synthesizer);break;case wA.setMasterParameter:let o=t[0],r=t[1];this.synthesizer.setMasterParameter(o,r);break;case wA.setDrums:s.setDrums(t);break;case wA.transpose:n===-1?this.synthesizer.transposeAllChannels(t[0],t[1]):s.transposeChannel(t[0],t[1]);break;case wA.highPerformanceMode:this.synthesizer.highPerformanceMode=t;break;case wA.lockController:t[0]===-1?s.setPresetLock(t[1]):s.lockedControllers[t[0]]=t[1];break;case wA.sequencerSpecific:let g=this.sequencer,i=t.messageData;switch(t.messageType){default:break;case se.loadNewSongList:try{let G=i[0].map(D=>D.duration?D:new Wt(D.binary,D.altName));g.loadNewSongList(G,i[1])}catch(S){console.error(S),this.postMessageToMainThread({messageType:ne.sequencerSpecific,messageData:{messageType:Be.midiError,messageData:S}})}break;case se.pause:g.pause();break;case se.play:g.play(i);break;case se.stop:g.stop();break;case se.setTime:g.currentTime=i;break;case se.changeMIDIMessageSending:g.sendMIDIMessages=i;break;case se.setPlaybackRate:g.playbackRate=i;break;case se.setLoop:let[u,f]=i;g.loop=u,f===-1?g.loopCount=1/0:g.loopCount=f;break;case se.changeSong:switch(i[0]){case Rt.forwards:g.nextSong();break;case Rt.backwards:g.previousSong();break;case Rt.shuffleOff:g.shuffleMode=!1,g.songIndex=g.shuffledSongIndexes[g.songIndex];break;case Rt.shuffleOn:g.shuffleMode=!0,g.shuffleSongIndexes(),g.songIndex=0,g.loadCurrentSong();break;case Rt.index:g.songIndex=i[1],g.loadCurrentSong();break}break;case se.getMIDI:this.postMessageToMainThread({messageType:ne.sequencerSpecific,messageData:{messageType:Be.getMIDI,messageData:g.midiData}});break;case se.setSkipToFirstNote:g.skipToFirstNoteOn=i;break;case se.setPreservePlaybackState:g.preservePlaybackState=i}break;case wA.soundFontManager:try{let u=this.synthesizer.soundfontManager,f=t[0],S=t[1],G;switch(f){case _t.addNewSoundFont:G=st(S[0]),u.addNewSoundFont(G,S[1],S[2]),this.postMessageToMainThread({messageType:ne.isFullyInitialized,messageData:void 0});break;case _t.reloadSoundFont:G=st(S),u.reloadManager(G),this.postMessageToMainThread({messageType:ne.isFullyInitialized,messageData:void 0});break;case _t.deleteSoundFont:u.deleteSoundFont(S);break;case _t.rearrangeSoundFonts:u.rearrangeSoundFonts(S)}}catch(u){this.postMessageToMainThread({messageType:ne.soundfontError,messageData:u})}break;case wA.keyModifierManager:let B=t[0],h=this.synthesizer.keyModifierManager,c=t[1];switch(B){default:return;case Tn.addMapping:h.addMapping(...c);break;case Tn.clearMappings:h.clearMappings();break;case Tn.deleteMapping:h.deleteMapping(...c)}break;case wA.requestSynthesizerSnapshot:let l=ot.createSynthesizerSnapshot(this.synthesizer);this.postMessageToMainThread({messageType:ne.synthesizerSnapshot,messageData:l});break;case wA.setLogLevel:zn(t[0],t[1],t[2],t[3]);break;case wA.setEffectsGain:this.synthesizer.reverbGain=t[0],this.synthesizer.chorusGain=t[1];break;case wA.destroyWorklet:this.alive=!1,this.synthesizer.destroySynthProcessor(),delete this.synthesizer,delete this.sequencer.midiData,delete this.sequencer;break;default:gt.SpessaSynthWarn("Unrecognized event:",t);break}}process(A,t){if(!this.alive)return!1;if(this.sequencer.processTick(),this.oneOutputMode){let n=t[0],s=[];for(let o=0;o<32;o+=2)s.push([n[o],n[o+1]]);this.synthesizer.renderAudioSplit([],[],s)}else this.synthesizer.renderAudioSplit(t[0],t[1],t.slice(2));return!0}};registerProcessor(Ei,Rs);gt.SpessaSynthInfo("%cProcessor successfully registered!",ws.recognized);
21
+ `," ")),this.RMIDInfo.IALB&&!this.RMIDInfo.IPRD&&(this.RMIDInfo.IPRD=this.RMIDInfo.IALB),this.RMIDInfo.IPRD&&!this.RMIDInfo.IALB&&(this.RMIDInfo.IALB=this.RMIDInfo.IPRD),this.bankOffset=1,this.RMIDInfo[uA.bankOffset]&&(this.bankOffset=N(this.RMIDInfo[uA.bankOffset],2))}}this.isDLSRMIDI&&(this.bankOffset=0),this.embeddedSoundFont===void 0&&(this.bankOffset=0)}else o==="XMF_"?s=Ei(this,n):s=n;let r=this._readMIDIChunk(s);if(r.type!=="MThd")throw K(),new SyntaxError(`Invalid MIDI Header! Expected "MThd", got "${r.type}"`);if(r.size!==6)throw K(),new RangeError(`Invalid MIDI header chunk size! Expected 6, got ${r.size}`);this.format=PA(r.data,2),this.tracksAmount=PA(r.data,2),this.timeDivision=PA(r.data,2);for(let g=0;g<this.tracksAmount;g++){let i=[],C=this._readMIDIChunk(s);if(C.type!=="MTrk")throw K(),new SyntaxError(`Invalid track header! Expected "MTrk" got "${C.type}"`);let B,h=0;for(this.format===2&&g>0&&(h+=this.tracks[g-1][this.tracks[g-1].length-1].ticks);C.data.currentIndex<C.size;){h+=fA(C.data);let c=C.data[C.data.currentIndex],l;if(B!==void 0&&c<128)l=B;else{if(B===void 0&&c<128)throw K(),new SyntaxError(`Unexpected byte with no running byte. (${c})`);l=C.data[C.data.currentIndex++]}let u=js(l),f;switch(u){case-1:f=0;break;case-2:l=C.data[C.data.currentIndex++],f=fA(C.data);break;case-3:f=fA(C.data);break;default:f=$s[l>>4],B=l;break}let S=new b(f);S.set(C.data.slice(C.data.currentIndex,C.data.currentIndex+f),0);let G=new OA(h,l,S);i.push(G),C.data.currentIndex+=f}this.tracks.push(i),y(`%cParsed %c${this.tracks.length}%c / %c${this.tracksAmount}`,I.info,I.value,I.info,I.value)}y("%cAll tracks parsed correctly!",I.recognized),this._parseInternal(),K(),y(`%cMIDI file parsed. Total tick time: %c${this.lastVoiceEventTick}%c, total seconds time: %c${this.duration}`,I.info,I.recognized,I.info,I.recognized)}_readMIDIChunk(A){let t={};t.type=AA(A,4),t.size=PA(A,4),t.data=new b(t.size);let n=A.slice(A.currentIndex,A.currentIndex+t.size);return t.data.set(n,0),A.currentIndex+=t.size,t}};var gt={consoleColors:I,SpessaSynthInfo:y,SpessaSynthWarn:O,SpessaSynthGroupCollapsed:QA,SpessaSynthGroupEnd:K,readBytesAsUintBigEndian:PA,readLittleEndian:N,readBytesAsString:AA,readVariableLengthQuantity:fA,inflateSync:Xt};var Rs=gt.consoleColors;var wA={midiMessage:0,ccReset:7,setChannelVibrato:8,soundFontManager:9,stopAll:10,killNotes:11,muteChannel:12,addNewChannel:13,customCcChange:14,debugMessage:15,setMasterParameter:17,setDrums:18,transpose:19,highPerformanceMode:20,lockController:21,sequencerSpecific:22,requestSynthesizerSnapshot:23,setLogLevel:24,keyModifierManager:25,setEffectsGain:26,destroyWorklet:27},se={channelPropertyChange:0,eventCall:1,masterParameterChange:2,sequencerSpecific:3,synthesizerSnapshot:4,isFullyInitialized:5,soundfontError:6};var ci="spessasynth-worklet-processor";var Un={addMapping:0,deleteMapping:1,clearMappings:2};var _t={reloadSoundFont:0,addNewSoundFont:2,deleteSoundFont:3,rearrangeSoundFonts:4};var Rt={backwards:0,forwards:1,shuffleOn:2,shuffleOff:3,index:4},oe={loadNewSongList:0,pause:1,stop:2,play:3,setTime:4,changeMIDIMessageSending:5,setPlaybackRate:6,setLoop:7,changeSong:8,getMIDI:9,setSkipToFirstNote:10,setPreservePlaybackState:11},Qe={midiEvent:0,songChange:1,timeChange:2,pause:3,getMIDI:4,midiError:5,metaEvent:6,loopCountChange:7,songListChange:8};function hi(e,A){e===void 0&&(e={});for(let t in A)A.hasOwnProperty(t)&&!(t in e)&&(e[t]=A[t]);return e}var li={skipToFirstNoteOn:!0,autoPlay:!0,preservePlaybackState:!1,initialPlaybackRate:1};var vn=class extends it{isEmbedded=!1;constructor(A){super(),this._copyFromSequence(A),this.isEmbedded=A.embeddedSoundFont!==void 0}},Ap={duration:99999,firstNoteOn:0,loop:{start:0,end:123456},lastVoiceEventTick:123456,lyrics:[],copyright:"",midiPorts:[],midiPortChannelOffsets:[],tracksAmount:0,tempoChanges:[{ticks:0,tempo:120}],fileName:"NOT_LOADED.mid",midiName:"Loading...",rawMidiName:new Uint8Array([76,111,97,100,105,110,103,46,46,46]),usedChannelsOnTrack:[],timeDivision:0,keyRange:{min:0,max:127},isEmbedded:!1,RMIDInfo:{},bankOffset:0,midiNameUsesFileName:!1,format:0};var Gs=class extends AudioWorkletProcessor{alive=!0;oneOutputMode=!1;constructor(A){super();let t=A.processorOptions;this.oneOutputMode=t.midiChannels===1;let n=(g,i)=>{this.postMessageToMainThread({messageType:g,messageData:i})},s=t?.startRenderingData,o=s?.snapshot;this.synthesizer=new TA(sampleRate,{effectsEnabled:!this.oneOutputMode,enableEventSystem:t?.enableEventSystem,midiChannels:16,initialTime:currentTime}),this.synthesizer.onEventCall=(g,i)=>{n(se.eventCall,{eventName:g,eventData:i})},this.synthesizer.onChannelPropertyChange=(g,i)=>n(se.channelPropertyChange,[i,g]),this.synthesizer.onMasterParameterChange=(g,i)=>n(se.masterParameterChange,[g,i]);let r=st(t.soundfont);this.synthesizer.soundfontManager.reloadManager(r),this.synthesizer.processorInitialized.then(()=>{this.sequencer=new FA(this.synthesizer);let g=(i,C)=>{this.postMessageToMainThread({messageType:se.sequencerSpecific,messageData:{messageType:i,messageData:C}})};if(this.port.onmessage=i=>this.handleMessage(i.data),this.sequencer.onMIDIMessage=i=>{g(Qe.midiEvent,i)},this.sequencer.onTimeChange=i=>{g(Qe.timeChange,i)},this.sequencer.onPlaybackStop=i=>{g(Qe.pause,i)},this.sequencer.onSongChange=(i,C)=>{g(Qe.songChange,[i,C])},this.sequencer.onMetaEvent=(i,C)=>{g(Qe.metaEvent,[i,C])},this.sequencer.onLoopCountChange=i=>{g(Qe.loopCountChange,i)},this.sequencer.onSongListChange=i=>{let C=i.map(B=>new vn(B));this.postMessageToMainThread({messageType:se.sequencerSpecific,messageData:{messageType:Qe.songListChange,messageData:C}})},o!==void 0&&this.synthesizer.applySynthesizerSnapshot(o),s&&(gt.SpessaSynthInfo("%cRendering enabled! Starting render.",Rs.info),s.parsedMIDI)){s?.loopCount!==void 0?(this.sequencer.loopCount=s?.loopCount,this.sequencer.loop=!0):this.sequencer.loop=!1,this.synthesizer.voiceCap=1/0;let i=hi(s.sequencerOptions,li);this.sequencer.skipToFirstNoteOn=i.skipToFirstNoteOn,this.sequencer.preservePlaybackState=i.preservePlaybackState,this.sequencer.playbackRate=i.initialPlaybackRate;try{this.sequencer.loadNewSongList([s.parsedMIDI])}catch(C){console.error(C),g(Qe.midiError,C)}}this.postReady()})}postReady(){this.postMessageToMainThread({messageType:se.isFullyInitialized,messageData:void 0})}postMessageToMainThread(A){this.port.postMessage(A)}handleMessage(A){let t=A.messageData,n=A.channelNumber,s;if(n>=0&&(s=this.synthesizer.midiAudioChannels[n],s===void 0)){gt.SpessaSynthWarn(`Trying to access channel ${n} which does not exist... ignoring!`);return}switch(A.messageType){case wA.midiMessage:this.synthesizer.processMessage(...t);break;case wA.customCcChange:s.setCustomController(t[0],t[1]);break;case wA.ccReset:n===-1?this.synthesizer.resetAllControllers():s.resetControllers();break;case wA.setChannelVibrato:if(n===-1)for(let u=0;u<this.synthesizer.midiAudioChannels.length;u++){let f=this.synthesizer.midiAudioChannels[u];t.rate===-1?f.disableAndLockGSNRPN():f.setVibrato(t.depth,t.rate,t.delay)}else t.rate===-1?s.disableAndLockGSNRPN():s.setVibrato(t.depth,t.rate,t.delay);break;case wA.stopAll:n===-1?this.synthesizer.stopAllChannels(t===1):s.stopAllNotes(t===1);break;case wA.killNotes:this.synthesizer.voiceKilling(t);break;case wA.muteChannel:s.muteChannel(t);break;case wA.addNewChannel:this.synthesizer.createMidiChannel(!0);break;case wA.debugMessage:console.debug(this.synthesizer);break;case wA.setMasterParameter:let o=t[0],r=t[1];this.synthesizer.setMasterParameter(o,r);break;case wA.setDrums:s.setDrums(t);break;case wA.transpose:n===-1?this.synthesizer.transposeAllChannels(t[0],t[1]):s.transposeChannel(t[0],t[1]);break;case wA.highPerformanceMode:this.synthesizer.highPerformanceMode=t;break;case wA.lockController:t[0]===-1?s.setPresetLock(t[1]):s.lockedControllers[t[0]]=t[1];break;case wA.sequencerSpecific:let g=this.sequencer,i=t.messageData;switch(t.messageType){default:break;case oe.loadNewSongList:try{let G=i[0].map(D=>D.duration?D:new Wt(D.binary,D.altName));g.loadNewSongList(G,i[1])}catch(S){console.error(S),this.postMessageToMainThread({messageType:se.sequencerSpecific,messageData:{messageType:Qe.midiError,messageData:S}})}break;case oe.pause:g.pause();break;case oe.play:g.play(i);break;case oe.stop:g.stop();break;case oe.setTime:g.currentTime=i;break;case oe.changeMIDIMessageSending:g.sendMIDIMessages=i;break;case oe.setPlaybackRate:g.playbackRate=i;break;case oe.setLoop:let[u,f]=i;g.loop=u,f===-1?g.loopCount=1/0:g.loopCount=f;break;case oe.changeSong:switch(i[0]){case Rt.forwards:g.nextSong();break;case Rt.backwards:g.previousSong();break;case Rt.shuffleOff:g.shuffleMode=!1,g.songIndex=g.shuffledSongIndexes[g.songIndex];break;case Rt.shuffleOn:g.shuffleMode=!0,g.shuffleSongIndexes(),g.songIndex=0,g.loadCurrentSong();break;case Rt.index:g.songIndex=i[1],g.loadCurrentSong();break}break;case oe.getMIDI:this.postMessageToMainThread({messageType:se.sequencerSpecific,messageData:{messageType:Qe.getMIDI,messageData:g.midiData}});break;case oe.setSkipToFirstNote:g.skipToFirstNoteOn=i;break;case oe.setPreservePlaybackState:g.preservePlaybackState=i}break;case wA.soundFontManager:try{let u=this.synthesizer.soundfontManager,f=t[0],S=t[1],G;switch(f){case _t.addNewSoundFont:G=st(S[0]),u.addNewSoundFont(G,S[1],S[2]),this.postMessageToMainThread({messageType:se.isFullyInitialized,messageData:void 0});break;case _t.reloadSoundFont:G=st(S),u.reloadManager(G),this.postMessageToMainThread({messageType:se.isFullyInitialized,messageData:void 0});break;case _t.deleteSoundFont:u.deleteSoundFont(S);break;case _t.rearrangeSoundFonts:u.rearrangeSoundFonts(S)}}catch(u){this.postMessageToMainThread({messageType:se.soundfontError,messageData:u})}break;case wA.keyModifierManager:let B=t[0],h=this.synthesizer.keyModifierManager,c=t[1];switch(B){default:return;case Un.addMapping:h.addMapping(...c);break;case Un.clearMappings:h.clearMappings();break;case Un.deleteMapping:h.deleteMapping(...c)}break;case wA.requestSynthesizerSnapshot:let l=ot.createSynthesizerSnapshot(this.synthesizer);this.postMessageToMainThread({messageType:se.synthesizerSnapshot,messageData:l});break;case wA.setLogLevel:jn(t[0],t[1],t[2],t[3]);break;case wA.setEffectsGain:this.synthesizer.reverbGain=t[0],this.synthesizer.chorusGain=t[1];break;case wA.destroyWorklet:this.alive=!1,this.synthesizer.destroySynthProcessor(),delete this.synthesizer,delete this.sequencer.midiData,delete this.sequencer;break;default:gt.SpessaSynthWarn("Unrecognized event:",t);break}}process(A,t){if(!this.alive)return!1;if(this.sequencer.processTick(),this.oneOutputMode){let n=t[0],s=[];for(let o=0;o<32;o+=2)s.push([n[o],n[o+1]]);this.synthesizer.renderAudioSplit([],[],s)}else this.synthesizer.renderAudioSplit(t[0],t[1],t.slice(2));return!0}};registerProcessor(ci,Gs);gt.SpessaSynthInfo("%cProcessor successfully registered!",Rs.recognized);
22
22
  //# sourceMappingURL=worklet_processor.min.js.map